TwinCat 3 TCP Verbindung von Client korrekt beenden

Kutsubato

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

in einem Projekt verwenden wir die SPS CX-9020 mit diversen Klemmen und TwinCat 3 auf einem Desktop-PC zur Entwicklung.
Aktuell geht es um die Implementation einer Kommunikation per TCP.

Das übertragen von Byte-Werte aus einem Python-Skript funktioniert mit "s.send(bytes(data, 'utf-8'))" in Python 3 tadellos,
wobei "data" ein String ist, welcher in Bytes konvertiert wird; also ein Array solcher, die dann von TwinCat 3 empfangen werden können.

Dazu läuft auf der anderen Seite in TwinCat eine Konfiguration, welche ich im Anhang angefügt habe.
Die Funktionsblöcke "TimeController" und "ValueController" sind von mir geschrieben, fungieren aber nur zum Starten des Netzwerks.

Das Problem tritt auf, wenn die Daten erfolgreich an "SocketReceive" gesendet werden und die Verbindung dann endet.
Sei es, wenn ich händisch die Eingabe von Daten in Python, falls ich es als Prompt in der Shell mache, abbreche
oder wenn ein automatisches Skript Daten sendet:
Endet die Eingabe "in" Python, so ändert sich der Zustand "eState" des Blocks
"ClientServerConnection" nicht von "CONNECTED" wieder auf "SUSPENDED" sondern bleibt bei "CONNECTED". Gleichzeitig erscheint sofort
der Error "32772" am "Error ID"-Ausgang von "SocketReceive" und eine erneute Ausgabe ist nicht möglich.
Das geschieht bei der Beendigung jeder Eingabe an die SPS aus Python heraus, selbst wenn ich an mein Skript in Python 3 Folgendes anhänge:
"s.shutdown(socket.SHUT_RDWR); s.close()", wobei "s" der "Socket" in Python 3 ist.

Wie kann ich das Problem beheben?
Bitte melden, wenn mehr Infos benötigt werden!

problem5.JPG
 
Hello, Can you please help me in this case I have a task in my studies I am completely new in Twincat.
My task is CompA runs a TCP server using TwinCAT.
CompB runs a TCP Server using Python.
Both exchange 32-bit binary data over TCP connection.

How to send and receive data packets for every 100ms ?
 
Zurück
Oben