Libnodave - Probleme beim Zugriff auf mehrere Geräte am MPI-Bus

Shorkaa

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe hier folgendes Problem: Ich habe 6 vernetzte SPSen (C313) und möchte diese per Libnodave ansteuern, was soweit auch ganz gut funktioniert. Als Protokoll verwende ich S7Online (hauptsächlich weil unser USB-Adapter sich nicht auf einen COM-Port mappen lässt) und möchte nun während meines Programms mehrere verschiedene SPSen ansteuern. Das Problem hierbei ist nur: es passiert immer alles auf der selben ersten SPS, also wenn ich eine zweite Verbindung per dc2 =daveNewConnection(di, 6, 0, 0); aufbaue und anschließend ein Byte lesen oder schreiben möchte, etwa mit daveReadBytes(dc2,daveInputs,0,0,2,buffer2); wird wieder auf die erste SPS zugegriffen, in unserem Falle also z.b. das entsprechende Byte in der falschen SPS gelesen. Meine Frage nun: Woran liegt das? Mit den Testprogrammen konnte ich nicht genau verifizieren, ob diese richtig funktionieren, da auch die die gleichen Werte zurückgeben (alles 0), was aber natürlich auch in beiden SPSen richtig sein könnte. Bei dem ganzen Verbindungsaufbau hab ich mich nah an den Beispielcode der testS7online.c gehalten, hier http://pastebin.com/jwtv6AZp noch der komplette code meines Testprogramms.
 
Der Libnodave-Code für S7Online ist recht experimentell, soweit ich mitbekommen habe. Bei Verwendung von S7Online habe ich das selbe Problem und auch nach Rückfrage bei Zottel, dem Ersteller von Libnodave, habe ich das damit nicht hinbekommen. Läßt sich wohl im Moment nicht ändern, denke ich.
 
Ja, auch mit 2 eigenen Interfaces funktioniert es nicht, das einzige was geht - ist das gesamte libnodave-zeugs zu beenden und die fds.rfd=openS7online("S7Online",0); fds.wfd=fds.rfd; dll neu einzubinden und alles neu zu initialisieren, was aber bei dem Programm das wir hier entwickeln möchten, natürlich viel zu lange dauert wenn wir das beim Zugriff auf eine SPS jedes mal machen müssten :(
 
Ja, auch mit 2 eigenen Interfaces funktioniert es nicht, das einzige was geht - ist das gesamte libnodave-zeugs zu beenden und die fds.rfd=openS7online("S7Online",0); fds.wfd=fds.rfd; dll neu einzubinden und alles neu zu initialisieren, was aber bei dem Programm das wir hier entwickeln möchten, natürlich viel zu lange dauert wenn wir das beim Zugriff auf eine SPS jedes mal machen müssten :(

So kenn ich das auch. Mir hat das immer niemand so richtig glauben wollen (so mein Eindruck), wer hat schon mehrere SPS und Zeit das dann auch noch zu prüfen. Die SPS, zu der zuerst die Verbindung aufgebaut wird, liefert alle Daten, egal, welche SPS ansonsten noch angewählt wird. Ich hab schon an mir gezweifelt, du bestätigst gerade, dass ich richtig lag.
Wenn es nicht anders geht, wäre da noch die Lib von Deltalogic, die hat Treiber dabei, ist aber nicht kostenlos. Prodave von Siemens gibts auch noch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"Bei Verwendung von S7Online habe ich das selbe Problem" Ok heißt das dann dass es mit "normaler" MPI-Verbindung funktionieren würde? Sprich wenn wir nen andren Adapter finden könnten?
 
"Bei Verwendung von S7Online habe ich das selbe Problem" Ok heißt das dann dass es mit "normaler" MPI-Verbindung funktionieren würde? Sprich wenn wir nen andren Adapter finden könnten?

Ich nutze einen NetlinkPro, der geht von Ethernet auf MPI/Profibus und läuft mit libnodave ohne Probleme mit mehreren SPS. (kein S7Online!)
 
Ok gut, dann danke für die Infos, ich schätze wir werden uns einfach einen anderen Adapter von Kollegen ausleihen und es damit probieren / ggf halt einen anderen zulegen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok gut, dann danke für die Infos, ich schätze wir werden uns einfach einen anderen Adapter von Kollegen ausleihen und es damit probieren / ggf halt einen anderen zulegen!

Es geht halt nur mit Adaptern, die Libnodave auch direkt unterstützt. CP5511/12 funktionieren mit libnodave nur über S7Online, mit den von dir festgestellten Einschränkungen.
 
Zurück
Oben