Libnodave Version 0.8

Zottel

Level-3
Beiträge
2.299
Reaktionspunkte
278
Zuviel Werbung?
-> Hier kostenlos registrieren
Soeben habe ich Libnodave 0.8 veröffentlicht.

- Libnodave kann jetzt auf Win32-Systemen, auf denen Siemens-Software und Treiber installiert sind, diese für den Transport verwenden. Dadurch werden CPs (5511, 5512 sind getestet) sowie USB-MPI-Adapter nutzbar.
- Für Linux ist ein Kernel-Modul für den USB-MPI-Adapter enthalten (Kernel 2.6.13). Für andere Kenel mag eine zweite Lösung funktionieren, die den Adaptern aus dem User-Space mittels libUSB anspricht.
- Zur Datenübertragung zwischen COM-Port und MPI-Adapter wird nun ausser R3964R auch das Protokoll unterstützt, das Step7 mit neueren Adaptern verwendet.
Diese Dinge sind noch im Alpha-Stadium, daher vielleicht weniger stabil als der Rest der Bibliothek :-(

- Es sollten mehr MPI-Adapter verwendbar sein, darunter einer (der?) von Helmholz.
- "lange" Datenblöcke können nun in einem Stück an die Funktionen daveReadManyBytes und daveWriteManyBytes übergeben werden, die sie automatisch auf mehrere PDUs aufteilt.
- Die Anbindung an Pascal/Delphi sollte wieder auf dem neuesten Stand sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Maxl schrieb:
Ist Libnodave eigentlich kompatibel zu Prodave?
Nein, aber das ist kein Nachteil: Ich halte das API von Libnodave für einfacher und logischer aufgebaut. Wer will, kann sich eine W95_s7.dll (oder so ähnlich) selbst erstellen und die Funktionen von Prodave mit solchen von Libnodave nachbilden. Dabei würdest du feststellen, daß viele Funktionen von Prodave auf dieselbe Funktion in Libnodave abgebildet werde; lediglich Aufrufparameter ändern sich.
 
Danke!

Habe 0.7.2 schon in SCADA.NET eingebunden... Funktioniert die 0.8 noch genauso oder muss irgendetwas beachtet werden?

Gruß Sebastian
 
seeba schrieb:
Danke!

Habe 0.7.2 schon in SCADA.NET eingebunden... Funktioniert die 0.8 noch genauso oder muss irgendetwas beachtet werden?

Gruß Sebastian
Warum 0.7.2 und nicht 0.7.4?
Du arbeitest mit VB Dot.Net, ja?
Ich denke, es sollte keine Inkopatibilitäten, nur mehr Möglichkeiten geben.
Probieren geht über Studieren!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zottel schrieb:
seeba schrieb:
Danke!

Habe 0.7.2 schon in SCADA.NET eingebunden... Funktioniert die 0.8 noch genauso oder muss irgendetwas beachtet werden?

Gruß Sebastian
Warum 0.7.2 und nicht 0.7.4?
Du arbeitest mit VB Dot.Net, ja?
Ich denke, es sollte keine Inkopatibilitäten, nur mehr Möglichkeiten geben.
Probieren geht über Studieren!

Ich meinte doch 0.7.4! Ist zu spät für mich! Okay, ich werde es morgen mal probieren. C# und VB.NET, ja!
 
Hi Zottel,

die testS7online.exe unter WinXP funktioniert super.
Gehe ich recht in der Annahme, daß die Delphi-Demo noch nicht damit läuft, oder muß man im Verbindungseditor irgenwelche Angaben machen?
 
Windows DLL

Hallo,

Ich benütze VB.Net für einfache Visualisierungsaufgaben mit einer S7.
Kann ich dazu Libnodave benutzen? Und wie muss ich vorgehen das ich die Dll erstellen kann.
Bis jetzt habe ich Prodave oder die dll von IBH (IBH-Netlink) genutzt.

mfg

OP
 
Ralle schrieb:
Gehe ich recht in der Annahme, daß die Delphi-Demo noch nicht damit läuft, oder muß man im Verbindungseditor irgenwelche Angaben machen?
Weiß ich leider nicht, da die Delphi-Komponente nicht von mir ist. Ich muß nachfragen Du kannst ja mal im Verbindungseditor rumprobieren.
 
Re: Windows DLL

Mazur_OP schrieb:
Und wie muss ich vorgehen das ich die Dll erstellen kann.
Für Dot.net sind zwei dlls nötig und liegen auch fertig bei:
libnodave.dll beinhaltet die Funktionalität
libnodave.net.dll greift auf libnodave.dll zu und packt die Funktionen in Dot.net-konformer Weise in Objekte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zottel schrieb:
Maxl schrieb:
Ist Libnodave eigentlich kompatibel zu Prodave?
Nein, aber das ist kein Nachteil: Ich halte das API von Libnodave für einfacher und logischer aufgebaut. Wer will, kann sich eine W95_s7.dll (oder so ähnlich) selbst erstellen und die Funktionen von Prodave mit solchen von Libnodave nachbilden. Dabei würdest du feststellen, daß viele Funktionen von Prodave auf dieselbe Funktion in Libnodave abgebildet werde; lediglich Aufrufparameter ändern sich.

Klingt interessant! Werde mich mal damit auseinandersetzen....
 
Ralle schrieb:
Hi Zottel,

die testS7online.exe unter WinXP funktioniert super.
Gehe ich recht in der Annahme, daß die Delphi-Demo noch nicht damit läuft, oder muß man im Verbindungseditor irgenwelche Angaben machen?
Habe gerade selber gespielt:
1. im Verbindungseditor gibst du den Namen des Zugriffspunktes anstelle des COM-Ports an, z.B. S7online.
2. Ich habe hier eine CPU am Profibus mit CP5511. Sie hat Adresse 5. Der Verbindungseditor erlaubt mir aber nicht mehr, eine remote-MPI-Adresse einzustellen, nachdem ic S7online.dll als Protokoll gewählt habe. So gings aber:
- Protokoll auf "MPI" gestellt.
- MPI Remote auf 5 gestellt
- Protokoll auf S7online gestellt.
 
@Zottel
Funktioniert bei mir leider nicht, es kommen diverse Fehlermeldungen und offensichtlich bei "Start" einmalig zufällige Werte an. Aber das werde ich mal mit Delphi selbst debuggen. Außerdem läßt sich die Demo nun auf keine Weise mehr beenden. Windows meldet das das Programm "SchmidWatch" beendet werden soll. Werde mir die Demo wohl doch mal genauer vin innen ansehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei eine s7Online-Verbindung mit CP5511 über die Delphi-Demo:
Das erste Connect schlägt fehl (OpenS7Online kommt mit 0 zurück), das zweite Connect funktioniert (OpenS7Online kommt mit 1 zurück) und liefert Daten. Das Disconnect bringt eine externe Exception bei ClosePort (C0000008). Danach gelingt kein neuerliches Connect, Fehlernummer -128.

20 Min später:
Nun geht auch ein 2. und 3. Connect (nix geändert), aber die Exception bei ClosePort bleibt. ???
 
Ralle schrieb:
Bei eine s7Online-Verbindung mit CP5511 über die Delphi-Demo:
Das erste Connect schlägt fehl (OpenS7Online kommt mit 0 zurück), das zweite Connect funktioniert (OpenS7Online kommt mit 1 zurück) und liefert Daten. Das Disconnect bringt eine externe Exception bei ClosePort (C0000008). Danach gelingt kein neuerliches Connect, Fehlernummer -128.

20 Min später:
Nun geht auch ein 2. und 3. Connect (nix geändert), aber die Exception bei ClosePort bleibt. ???
Zunächst ist bei s7onlune 0 ein gültiger Wert für das handle. Wenn die Komponente das noch nicht weiß, ist es ihr Fehler. Beim zweiten mal ist 0 dann noch belegt und die s7onlinnx.dll gibt 1 zurück.
Zweitens sind das keine file handles oder sockets, daher kann man sie auch nich mit colePort schließen, sondern nur mit daveSCP_close.
 
Zottel schrieb:
Zweitens sind das keine file handles oder sockets, daher kann man sie auch nich mit colePort schließen, sondern nur mit daveSCP_close

Die DLL exportiert kein daveSCP_close, hab ich was übersehen?

Das eigenartige ist, mal geht es komplett (Connect, Disconnect, mehrmals hintereinander), mal geht es teilweise, mal gar nicht. Dazwischen nehme ich keine Änderungen vor, evtl läuft mal ein anderes Programm dazwischen unter Windows.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ralle schrieb:
Zottel schrieb:
Zweitens sind das keine file handles oder sockets, daher kann man sie auch nich mit closePort schließen, sondern nur mit daveSCP_close

Die DLL exportiert kein daveSCP_close, hab ich was übersehen?
Nein, ich habe es eben falsch geschrieben:
Das SCP_close erfolgt intern, wenn disconnectAdapter aufgerufen wird. Danach ist das handle ungültig. closePort darf man auch nicht damit aufrufen.
Das eigenartige ist, mal geht es komplett (Connect, Disconnect, mehrmals hintereinander), mal geht es teilweise, mal gar nicht. Dazwischen nehme ich keine Änderungen vor, evtl läuft mal ein anderes Programm dazwischen unter Windows.
Sorry, ich kann nicht viel zu der Delphi-Komponente sagen. Wer Delphi hat und kennt, kann wohl selbst Hand anlegen, z.B. das 0 eben ein gültiger Wert für das Handle ist.
Weitehin solltest du Sachen, die die Komponente betreffen, vielleicht besser in der mailing list auf der Sourceforge-Projektseite posten, da liest auch der Author der Komponente mit.

Ansonsten interessiert mich erstmal ob es ein Fehler von libnodave ist.
Das findest du raus, wenn du es mit den fertigen Testprogrammen, in diesem Fall testS7Online, versuchst.
 
Danke Zottel, ich werd mal nach der mailing list auf der Projekt-Seite umsehen.

daveDisconnectAdapter ist drin in der Disconnect-Routine:

Code:
daveDisconnectAdapter(DaveIntf);
      daveFree(DaveIntf);
      closePort(DaveFDS.rfd);

Das werd ich mal in der mailing list anfragen.
Was mich noch stört, bei großen Datenmengen reagiert die Anwendung nicht mehr flüssig, obwohl das Read in einem extra Thread erfolgt, aber das ist wohl auch eher was für die mailing list.
 
@Zottel

Meinst du die libnodave-Projektseite, oder gibt es eine extra Seite?

Edit:
Alles Klar, hab mich erstmal zur libnodave-Seite dazugesellt :wink: .
 
Zurück
Oben