-

TCP_SOCKET

Hinweis
Für diesen Funktionsbaustein ist eine neue Implementierung verfügbar, der die Firmware-Version 2021.3 oder neuer erfordert. Der neue FB kombiniert die Handhabung von TCP- und TLS-Kommunikation. Außerdem ermöglicht er die Kommunikation eines TCP/TLS-Servers mit mehreren Clients. Weitere Informationen finden Sie im Thema "TLS_SOCKET_2".

TypFunktionsbaustein
BeschreibungDer Funktionsbaustein öffnet und schließt einen IP-Socket, der für die IP-Kommunikation zwischen einem Server und einem Client über das Transmission Control Protocol (TCP) verwendet wird.

Der IP-Socket wird durch den Ausgangsparameter HANDLE repräsentiert. Dieses Handle muss an die Funktionsbausteine TCP_SEND und TCP_RECEIVE übergeben werden. Die FBs benötigen das Sockethandle, um Daten mit einem Kommunikationspartner auszutauschen.

Mit einer steigenden Flanke am Eingang ACTIVATE wird begonnen, einen Socket zu öffnen. Bei erfolgreichem Öffnen des Sockets und Verbindungsaufbau wird der Ausgang ACTIVE auf TRUE gesetzt. Solange ACTIVE = TRUE ist, kann das Sockethandle am Ausgang HANDLE für den Aufruf der Funktionsbausteine TCP_SEND/TCP_RECEIVE verwendet werden.

Eine fallende Flanke an ACTIVATE schließt den Socket. Die Verbindung wird mittels eines Drei-Wege-Handshake beendet, d.h. es werden drei Telegramme zwischen Client und Server ausgetauscht. Während des Beendungsprozesses führt eine erneute steigende Flanke zu einem Bausteinfehler.

Das Aufrufen der TCP_SEND/TCP_RECEIVE-Funktionsbausteine mit dem Sockethandle während ACTIVE auf FALSE gesetzt ist, führt zu einem Fehler an den Funktionsbausteinen. Solange der ACTIVATE-Eingang gesetzt ist, bleibt der Socket geöffnet. Der Ausgang BUSY wird auf TRUE gesetzt, während ACTIVATE = TRUE und der Socket noch nicht geöffnet ist. Bei einer fallenden Flanke des ACTIVATE-Eingangs wird der Socket geschlossen und der Ausgang ACTIVE auf FALSE gesetzt (siehe hierzu auch die nachfolgenden Hinweise). Sollte eine erfolgreich aufgebaute Verbindung geschlossen werden, versucht der Funktionsbaustein diese Verbindung erneut aufzubauen (sofern ACTIVATE = TRUE bleibt).

Der Eingang IS_SRV legt fest, ob der Funktionsbaustein eine Verbindung als TCP-Server oder TCP-Client aufbaut.

  • Mit IS_SRV = TRUE erzeugt der Funktionsbaustein einen "horchenden" (listening) Socket (Server-Socket). Der Socket kann an einen lokalen Ethernet-Adapter (Angabe der IP-Adresse am Eingang BIND_IP) und einen Port (Eingang BIND_PORT) gebunden werden. Unter dieser IP-Adresse und Portnummer wartet anschließend der Server auf Anfragen der Clients- Falls erforderlich können die akzeptierten Clients über die Eingänge DEST_IP/DEST_PORTS limitiert werden. Bei geöffnetem (Server-) Socket sind nur 1:1 Verbindungen möglich. Das bedeutet, der Listening-Socket akzeptiert nur eine eingehende TCP-Verbindung.
  • Mit IS_SRV = FALSE wird ein Client-Socket erzeugt. In diesem Fall legen DEST_IP/DEST_PORT die IP-Adresse und den Port des Partner-Servers fest, mit dem kommuniziert werden soll.

WARNUNG
Unbeabsichtigter Betriebszustand des Geräts
Stellen Sie sicher, dass das Ändern der Ausgangsdaten nicht zu einem ungewollten oder gefährlichen Verhalten des Gesamtsystems führen kann.1

1Wenn Sie die Anwendungslogik auf der Simulation ausführen, werden durch die Funktionsbausteine echte Verbindungen zu anderen Geräten/Servern aufgebaut. Dadurch können gegebenenfalls Ausgänge und Variablen, die mit echter Hardware verbunden sind, gesetzt werden und somit zu echten Beschädigungen der Maschine führen.

Hinweise
  • Die Funktionsbausteine für die TCP-Kommunikation werden asynchron verarbeitet. Das bedeutet, die Funktionsbausteine erteilen Befehle und warten auf deren Verarbeitung.
  • Bei einem Warm- oder Kaltstart oder einem Reset der Steuerung, schließt die Firmware alle Sockets, die mit der entsprechenden TCP_SOCKET-Instanz geöffnet wurden.
  • Stellen Sie bei Steuerungen mit integrierter Firewall sicher, dass die Firewall nicht die für die Kommunikation benötigten Ports blockiert. Andernfalls kann keine Verbindung hergestellt werden.
  • Alle verwendeten IP-Adressen sind IPv4-Adressen. IPv4-Adressen bestehen aus 4 Zahlen (Werte von 0 bis 255), die durch Punkte voneinander getrennt sind.
  • Die Anzahl der gerade geöffneten IP-Sockets wird in der Systemvariablen IP_ACTIVE_SOCKETS gespeichert (enthalten in der Datenliste des Steuerungsknotens und des 'IEC 61131-3'-Knotens der ANLAGE).
  • Funktionsbausteine müssen instanziiert werden.
    Der FB-Instanzname muss in der 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll. Der Instanzname muss innerhalb der POE eindeutig sein.
ParameterEingänge

ACTIVATE

IS_SRV

BIND_IP

BIND_PORT

DEST_IP

DEST_PORT

Ausgänge

HANDLE

ACTIVE

BUSY

ERROR

STATUS

USED_PORT