-> Hier kostenlos registrieren
Hi,
wie ich schon in einem anderen Thread geschrieben habe verwende ich libnodave.so und libnodave.dll unter Python. Da ich vorhabe mein Programm später als Dienst im Hintergrund laufen zu lassen mache ich mich momentan auf die Suche nach möglichen Fehlerquellen damit es stabil läuft.
Mein System:
SIMATIC S5 101U
PC mit Ubuntu 9.10 (Physikalischer Rechner)
virtuelle Maschine mit WinXP
Verbindung mit USB to TTY Adapter
Verbindungsaufbau und Datenaustausch funktioniert unter XP zufriedenstellend.
Ich würde gerne eine Verbindung die funktioniert physikalisch trennen können (Kabel für tty-Schnittstelle abziehen) und die Verbindung automatisiert wieder neu initialisieren können. Nur irgendwie scheine ich mich ein wenig dumm anzustellen.
Eine Verbindung stelle ich folgendermaßen her:
hierbei ist ``self.dave`` jeweils die library libnodave.
Ich habe mir das Beispielprogramm ``testAS511.c`` angesehen. Wenn ich jetzt feststelle das die Verbindung nicht mehr funktioniert trenne die Verbindung indem ich die gleichen Funktionen wie im Testprogramm aufrufe:
Beim neu verbinden bekomme ich den Fehler
und ``daveConnectPLC()`` gibt mir als Rückgabewert nicht mehr 0 sondern -21.
Momentan tappe ich noch ein Wenig im Dunkeln warum ich nicht einfach die Verbindung schließen und wieder neu herstellen kann. Evtl. hat ja mal jemand einen Hinweis für mich?
Sebastian
wie ich schon in einem anderen Thread geschrieben habe verwende ich libnodave.so und libnodave.dll unter Python. Da ich vorhabe mein Programm später als Dienst im Hintergrund laufen zu lassen mache ich mich momentan auf die Suche nach möglichen Fehlerquellen damit es stabil läuft.
Mein System:
SIMATIC S5 101U
PC mit Ubuntu 9.10 (Physikalischer Rechner)
virtuelle Maschine mit WinXP
Verbindung mit USB to TTY Adapter
Verbindungsaufbau und Datenaustausch funktioniert unter XP zufriedenstellend.
Ich würde gerne eine Verbindung die funktioniert physikalisch trennen können (Kabel für tty-Schnittstelle abziehen) und die Verbindung automatisiert wieder neu initialisieren können. Nur irgendwie scheine ich mich ein wenig dumm anzustellen.
Eine Verbindung stelle ich folgendermaßen her:
Code:
self.fds.rfd = self.dave.setPort(port, baud, parity)
self.fds.wfd = self.fds.rfd
self.di = self.dave.daveNewInterface(self.fds, name, localMPI, protocol, speed)
self.dave.daveSetTimeout(self.di, time)
self.dave.daveInitAdapter(self.di)
self.dc = self.dave.daveNewConnection(self.di, mpi, rack, slot)
self.dave.daveConnectPLC(self.dc)
Ich habe mir das Beispielprogramm ``testAS511.c`` angesehen. Wenn ich jetzt feststelle das die Verbindung nicht mehr funktioniert trenne die Verbindung indem ich die gleichen Funktionen wie im Testprogramm aufrufe:
Code:
daveDisconnectPLC(dc);
daveFree(dc);
daveDisconnectAdapter(di);
daveFree(di);
Code:
COM8 - Verbindung *** Error in Exchange.ReqTrans request.
COM8 - Verbindung *** Error in ReadS5Bytes.Exchange sequence.
Momentan tappe ich noch ein Wenig im Dunkeln warum ich nicht einfach die Verbindung schließen und wieder neu herstellen kann. Evtl. hat ja mal jemand einen Hinweis für mich?
Sebastian