LibNodave 0.8.4 - daveConnectPLC liefert Rückgabewert 4

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich glaube das S7ONLINE das IP adres aus den step7 project holt. Da steht es ja in die "properties" von die CP karte.

Bei meinem test habe ich die S7ONLINE mit den "ISO on TCP" eingestelt. Das vorteil davon ist das es nur eine MAC adresse benotigt.

Selber habe ich ein CP5512, die teste ich morgen mal, ob der vielleicht funktioniert.

gruss Ruud

Yep, genau so war es heute bei mir, mit CP5511, geht es, mit TCP/IP geht es nicht. Bin auf dein Ergebnis gespannt.
 
Ich glaube das S7ONLINE das IP adres aus den step7 project holt. Da steht es ja in die "properties" von die CP karte.
Damit S7Online das wissen kann, muß dann aber zumindest das Projekt auf die PC-Station geladen werden, oder nicht ?

Wird dafür dann nicht auch noch SimaticNet auf dem PC gebraucht ?

Falls ja, wofür dann noch libnodave, bzw. warum nicht mit libnodave direkt über ISO-over-TCP, ohne S7Online ?


Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke, du hast da recht.

Darum funktioniert auch nur die MPI mit S7ONLINE, bei diese anruf gibt man ja alle benotigte parameter mit. Wenn man z.b. ISO on TCP auswahlt dan musste mann auch die MAC adresse mitgeben.

Oder es musse ja so sein wie du sagst, das er sich die info aus das geffonente (muss mir einen deutschen worterbuch downloaden) Step7 projekt holt.
 
Ich denke, du hast da recht.

Darum funktioniert auch nur die MPI mit S7ONLINE, bei diese anruf gibt man ja alle benotigte parameter mit. Wenn man z.b. ISO on TCP auswahlt dan musste mann auch die MAC adresse mitgeben.

Oder es musse ja so sein wie du sagst, das er sich die info aus das geffonente (muss mir einen deutschen worterbuch downloaden) Step7 projekt holt.
Nein, nicht die MAC-Adresse.
S7online ist auch der Name des "access points", dessen Zugriffsweg du unter "PC/PG-Schnittstelle einstellen" festlegst.
Wenn du "PC/PG-Schnittstelle einstellen" aus der Systemsteuerung öffnest, kannst du eigene "access points" definieren. Deren Namen kannst du dann an openS7online übergeben. Sinn: Eine Libnodave-Anwendung kann mit einer SPS kommunizieren, während du mit Step7 mit einer anderen SPS arbeitest.
Bei daveProtoISOTCP mußt du nicht openS7online sondern openSocket aufrufen. openSocket erwartet die IP-Adresse, nicht die MAC-Adresse.
Du solltest das s7online-Protokoll mit Libnodave nur dann benutzen, wenn es keinen anderen Weg gibt, die Hardware zu verwenden (z.B. CP5611, Siemens USB-MPI-Adapter unter Windows). Wenn du ISO over TCP nutzt, solltest du auf jeden Fall daveProtoISOTCP verwenden. Es ist viel besser getestet, braucht keine Siemens-Software und kann parallel zu anderen gleichartigen Verbindungen arbeiten.
 
Wenn man z.b. ISO on TCP auswahlt dan musste mann auch die MAC adresse mitgeben.
Bei ISO-over-TCP braucht man grundsätzlich nicht die MAC-Adresse, sondern die IP-Adresse der CPU. Darum kann ISO-over-TCP ja auch über das LAN hinaus geroutet werden.

Wenn du "PC/PG-Schnittstelle einstellen" aus der Systemsteuerung öffnest, kannst du eigene "access points" definieren. Deren Namen kannst du dann an openS7online übergeben. Sinn: Eine Libnodave-Anwendung kann mit einer SPS kommunizieren, während du mit Step7 mit einer anderen SPS arbeitest.
Solange das gleiche Interface und das gleiche Protokoll verwendet wird, ist dafür auch nur ein Access-Point notwendig, oder nicht ?
Jedenfalls wird in der Systemsteuerung nur das Interface, das Protokoll und ggf. die eigene Adresse festgelegt. Wenn zwei Steuerungen ab gleichen Bus hängen, dann müßte IMHO Step 7 mit der einen und libnodave mit der anderen SPS über den gleichen Access-Point kommunizieren können. Ich denke, verschiedene Access-Points braucht man nur dann, wenn verschiedene Kommunikationswege verwendet werden sollen oder müssen.

Wenn du ISO over TCP nutzt, solltest du auf jeden Fall daveProtoISOTCP verwenden. Es ist viel besser getestet, braucht keine Siemens-Software und kann parallel zu anderen gleichartigen Verbindungen arbeiten.
Ist das nicht sowieso die einzige Möglichkeit, mit libnodave per ISO-over-TCP zu kommunizieren ?
Beim Protokoll S7Online ist mir jedenfalls keine Funktion in libnodave bekannt, mit der ich die IP-Adresse der CPU angeben kann.


Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Solange das gleiche Interface und das gleiche Protokoll verwendet wird, ist dafür auch nur ein Access-Point notwendig, oder nicht ?
Notwendig, ja. Aber darf einen anderen und mehrere benutzen.
Jedenfalls wird in der Systemsteuerung nur das Interface, das Protokoll und ggf. die eigene Adresse festgelegt. Wenn zwei Steuerungen ab gleichen Bus hängen, dann müßte IMHO Step 7 mit der einen und libnodave mit der anderen SPS über den gleichen Access-Point kommunizieren können.
Ja, klar.
Ist das nicht sowieso die einzige Möglichkeit, mit libnodave per ISO-over-TCP zu kommunizieren ?
Wahrscheinlich ja. Wenn ich im PC/PG-Schnittstelle TCP/IP einstelle ist zwar der "access point" s7online mit TCP/IP verknüpft, aber wo käme dann die IP-Adresse her???
Beim Protokoll S7Online ist mir jedenfalls keine Funktion in libnodave bekannt, mit der ich die IP-Adresse der CPU angeben kann.
Nein. Ich wüßte auch nicht, wie eine solche Funktion die Adresse dann weiterreicht...
Wenn ich eine CPU mit intergrierter Ethernet-Schnittstelle habe und komme mit einem PG mit Step7 ohne jede Prijektierungm was muß ich dann tun, um die CPU über ihre IP ansprechen zu können?


Gruß Axel[/QUOTE]
 
Wenn du ISO over TCP nutzt, solltest du auf jeden Fall daveProtoISOTCP verwenden. Es ist viel besser getestet, braucht keine Siemens-Software und kann parallel zu anderen gleichartigen Verbindungen arbeiten.

Hallo Zottel,
Da hast du naturlich recht.
Aber das protokol was ich meinte ist "ISO Ind. Ethernet" (atachment). Das ist ein fehler meiner seite.

Ich habe die S7ONLINE mit die CP5512 getestet und es funktioniert.
weiter habe ich auch noch die RS232 von Siemens mit S7ONLINE getestet und der funktioniert auch.

gruss Ruud
 

Anhänge

  • SetPGPCinterface.jpg
    SetPGPCinterface.jpg
    46,8 KB · Aufrufe: 31
Hallo,
hatte leider früher keine Zeit (andere Projekte). Wie gesagt versuche ich den Siemens-MPI-Adapter zum laufen zu bringen. Die 0.8.4.4-Version von TestMPI im Standardprotokoll läuft jetzt einwandfrei.
Ich versuche jetzt unter Delphi 5 das ganze zum Laufen zu bekommen. Die NoDavekomponente läuft allerdings nicht korrekt - wie auch das Demoprogramm.
Benutze ich die nodave.pas aus dem pascal-Verzeichnis kann ich den Adapter mit daveNewInterface initialisieren, bekomme also einen Pointer zurück, kann ihn auch wieder abmelden, aber bei daveInitadapter bekomme ich nur ne 9 zurück und nicht 0. ReachablePartners sind dann 126 und daveNewConnection liefert 3.
Kann es sein, daß die Pascal-Version von nodave und die C-Version deutlich unterschiedlich sind?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versuche jetzt unter Delphi 5 das ganze zum Laufen zu bekommen. Die NoDavekomponente läuft allerdings nicht korrekt - wie auch das Demoprogramm.
Hab mir jetzt gerade mal die Version 0.8.4.4 geholt und getestet, die Delphi-Demo läuft bei mir mit S7Online über einen CP5512 an MPI problemlos.

Allerdings habe ich die Delphi-Komponente und die Demo in Delphi 6 entwickelt, und arbeite seit einiger Zeit nur noch mit Delphi 2006. Ob es mit Delphi 5 da Probleme geben kann, weiß ich nicht, und mangels serieller Schnittstelle und entsprechendem MPI-Adapter kann ich es auch nur mit meinem CP5512 testen.

Mußt es eigentlich unbedingt ein seriell/MPI-Adapter sein ?
Heutzutage gibt es da doch wesentlich leistungsfähigere, preiswerte Alternativen, z.B. den Netlink-PRO.


Gruß Axel
 
Hallo afk,
danke erstmal für die schnelle Antwort. Allerdings hilft mir deine Antwort nicht wirklich weiter. Zum Adapter: Habe zur Zeit keinen anderen. Mit S7Online meinst Du das entsprechende MPI-Protokoll nehme ich an. Damit läuft die Demo, allerdings stimmen die Werte aus der SPS nicht.
Da ich leider gezwungen bin in Delphi 5 zu arbeiten (mehr gönnt mir die Firma nicht ;-) ), werde ich wohl ohne Komponente direkt auf NoDave zugreifen müssen. Daher nochmal meine Frage: Kann ich die Nodave.pas nehmen oder entspricht sie nicht mehr der aktuellen C-Version?
Das Datum der Datei ist jedenfalls schon lange nicht mehr aktuell.

Gruß
Suwe
 
Ich nutze die nodave.pas aus Version 0.8.0 in Delphi7. Es hat sich zwar ein wenig geändert (Funktionen kamen dazu) bzw. es wurde bei der s7Online-Funktion das Handle eingefügt, aber ansonsten gibt es kein Problem damit. Ich kann sie dir auch gerne zumailen. Inzwischen nutze ich diese mit der libnodave.dll V0.8.4.4, auch das problemlos. Allerdings hab ich nie den seriellen Adapter genutzt, da ich keinen habe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Daher nochmal meine Frage: Kann ich die Nodave.pas nehmen oder entspricht sie nicht mehr der aktuellen C-Version?
Das Datum der Datei ist jedenfalls schon lange nicht mehr aktuell.
Meine Antwort auf die Frage wird Dir wahrscheinlich auch nicht viel helfen:
Die nodave.pas wird von Zottel gepflegt, und fristet bei Ihm aus nachvollziehbaren Gründen ein wenig ein Nieschendasein. Andererseits setzt meine Komponente auch auf der nodave.pas auf, und die Komponente würde auch bei mir nicht funktionieren, wenn die Funktionsdeklarationen in der nodave.pas gravierende Fehler hätten. Demzufolge können einzelne Funktionsdeklarationen in der nodave.pas veraltet sein, aber die wichtigen Funktionen sind richtig, sonst hätte ich mit meiner Komponente Probleme.


Gruß Axel

PS: Ralle war schneller ...
 
Hallo afk, Hallo Ralle,

habe mal versucht die NoDaveDemo in Delphi 5 umzusetzen. Gab einige Fehlermeldungen. Könntet Ihr mal probieren, ob diese Version bei Euch läuft?
Habe die Exe in doc umbenannt.

Ergebnis wäre für mich sehr interessant.

Gruß
Suwe
 

Anhänge

  • NoDaveDemo-Delphi5.doc
    478,5 KB · Aufrufe: 17
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir läuft deine Demo nicht, ich teste "ISO over TCP". Allerdings läuft die DEMO, die ich selbst mit D7 übersetzt habe problemlos.

Aber da ist noch mehr dran faul, die kann z.Bsp. ihre eigene INI beim Starten nicht lesen, "vergißt" also alle Werte.
 
Zuletzt bearbeitet:
Hallo Ralle,
Danke erstmal für das probieren. Das mit der Nichtspeicherung der Werte hatte ich auch schon gesehen. Muß wohl an den Konvertierungen nach Delphi 5 liegen. War auch nur ein Versuch.

Was mich so komisch stimmt, ist die Tatsache, daß TestMPI mit meinem Adapter läuft, aber wenn ich das Programm in Delphi nachbilde, es eben nicht funktioniert. Ich benutze die gleichen Funktionen. (kratz, kratz...).

Ich bekomme z.B. nach Setzen des daveNewInterface bei daveInitAdapter immer nur ne 9 zurück, nie eine 0. Ich kann aber den Adapter starten und stoppen.
Vielleicht noch ne Idee?

Gruß
Stefan
 
Wenn du willst, kann ich dir mal "mein" Delphi-Demo-Projekt zumailen. Das funzt ja bei mir (nur ISO over TCP getestet) mit Libnodave V0.8.4.4
 
Excel / VB WindowHandle ermitteln (falls Form1.hwnd nicht verfügbar):

Private Declare Function GetActiveWindow Lib "user32" () As Long

Dim hwnd As Long
hwnd = GetActiveWindow
'MsgBox DialogGetCaption(hwnd)
ph = openS7online(acspnt$, hwnd)



'Falls geprüft werden soll, ob das Fenster das richtige ist:
Function DialogGetCaption(lHwnd As Long) As String
Const clMaxLen As Long = 255
Dim lLen As Long, sValue As String * clMaxLen
lLen = GetWindowText(lHwnd, sValue, clMaxLen)
If lLen Then DialogGetCaption = Left$(sValue, lLen)
End Function
 
Zuletzt bearbeitet:
Zurück
Oben