Beispiel 9.2

Datenaustausch zweier SPSen über TCP/IP

Die beiden Anlagenteile aus Beispiel 9.1 können wie abgebildet über die Funktionsbausteine TCP_Server in der SPS1 und TCP_Client in der SPS2 miteinander Daten austauschen. Um den Überlauf des Behälters in einem Anlagenteil zu verhindern, muss der obere Grenzwert des Füllstands L1 durch die VAriable HighLevel an die SPS 2 übertragen werden und dort die Verriegelung der Pumpe NS2 bewirken. Wenn die Pumpe NS2 läuft, wird die Laufmeldung PumpRuns an die SPS 1 übertragen, um dort das Ventil YS1 zu verriegeln.

Im Projekt B9_2_Ethernet_TCPIP_Server.project wird ein Zeiger auf die zu versendenden Daten an die Variable Send übergeben. Durch die Verwendung eines Zeigers ist der Datentyp an dieser Stelle nicht von Bedeutung und der Baustein kann universell eingesetzt werden. Mit der Varialen SizeSend wird die Länge der zu sendenden Daten angegeben. In gleicher Weise wird ein Zeiger auf die zu empfangenen Daten an die Variable Recv übergeben.

Während der Server den Socket öffnet und auf den Verbindungsaufbau wartet, addressiert der Client im Projekt B9_2_Ethernet_TCPIP_Client.project den Server, sendet zyklisch die Laufmeldung der Pumpe, und empfängt den vom Server gesendeten Grenzwert ebenfalls zyklisch, bis der Socket geschlossen wird.
Die Projekte laufen auf verschiedenen PCs, wenn jeweils die Soft-SPS "CoDeSyS Control WIN V3" gestartet wurde. Dann kann man in den Visualisierungen Server bzw. Client aktivieren. Weitere Hinweise finde Sie hier. 

Speicherprogrammierbare Steuerungen für die Fabrik- und Prozessautomation

4. Auflage erschienen im Hanser Verlag, 2015