Beschreibung | Der Funktionsbaustein wird für den Datenempfang über TCP (Transmission Control Protocol) von einem TCP-fähigen Ethernet-Gerät verwendet. Dies erfolgt mit Hilfe eines IP-Sockets. Der Socket muss zuerst mit Hilfe des Funktionsbausteins TCP_SOCKET geöffnet werden, bevor Daten empfangen werden können.Der Funktionsbaustein empfängt Daten, wenn der Eingang EN_R (EN_R = ENable_Receive) TRUE ist. Wenn Daten erfolgreich empfangen wurden, wird der Ausgang NDR (NDR = NewDataReceived) in jedem Zyklus auf TRUE gesetzt, in dem die spezifizierte Datenmenge in den DATA-Buffer kopiert wurden. Falls bei gesetztem Eingang EN_R im nächsten Zyklus erneut Daten empfangen werden, bleibt NDR = TRUE und die neuen Daten werden in die an Parameter DATA angeschlossene Variable kopiert. Wenn keine neuen Daten empfangen werden, wird NDR auf FALSE gesetzt.Die IP-Adresse und die Portnummer des Geräts (Absenders) werden an den Ausgängen SOURCE_IP (IP-Adresse des Absenders) und SOURCE_PORT (IP-Port des Absenders) angezeigt.
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 |
1 | Wenn 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. |
|
Parameter | Eingänge
EN_R
Datentyp: | BOOL |
Beschreibung: | Mit einer steigenden Flanke am Eingang EN_R (EN_R = ENable_Receive) wird der Datenempfang angestoßen. Solange EN_R = TRUE ist, können Daten empfangen werden. |
HANDLE
Datentyp: | DWORD |
Beschreibung: | Sockethandle, das mit dem Funktionsbaustein TCP_SOCKET geöffnet wurde (siehe auch obenstehende Hinweise).Der Parameter wird nur in dem Zyklus ausgewertet, in dem am Parameter EN_R eine steigende Flanke erkannt wird. |
EXP_DATA_CNT
Datentyp: | UDINT |
Beschreibung: | Länge (in Bytes) der zu empfangenden Daten (EXP_DATA_CNT = EXPected_DATA_CouNT). Die Länge (Anzahl an Bytes) ist kleiner oder gleich der Länge der an DATA angeschlossenen Variable. Dabei gilt Folgendes:
- Wenn der Wert größer 0 ist, werden auch nur so viele Bytes in die an DATA angeschlossene Variable kopiert.
- Wenn weniger als die angegebene Anzahl an Bytes empfangen wurde, werden diese Bytes an die bereits empfangenen Bytes in der an DATA angeschlossenen Variable angehängt. Der Ausgang DATA_CNT wird entsprechend inkrementiert. Wurden die erwarteten Bytes (EXP_DATA_CNT) empfangen, wird der Ausgang NDR auf TRUE gesetzt. Andernfalls muss die FB-Instanz erneut aufgerufen werden, bis alle erwarteten Daten empfangen wurden.
- Wenn mehr als die angegebene Anzahl an Bytes empfangen wurde, wird nur die Anzahl der erwarteten Bytes (EXP_DATA_CNT) in die an DATA angeschlossene Variable kopiert. Ausgang DATA_CNT wird entsprechend inkrementiert und NDR auf TRUE gesetzt. Die restlichen empfangenen, aber noch nicht kopierten Bytes können mit dem nächsten Aufruf der FB-Instanz gelesen werden.
- Wenn der Wert gleich 0 ist, werden alle Daten in die an DATA angeschlossene Variable kopiert, wie zwischenzeitlich empfangen wurden (maximal jedoch so viele, wie die an DATA angeschlossene Variable lang ist). Der Ausgang DATA_CNT wird entsprechend inkrementiert. Wurden ein oder mehrere Bytes empfangen (DATA_CNT > 0), wird der Ausgang NDR auf TRUE gesetzt.
Der Parameter wird nur in dem Zyklus ausgewertet, in dem am Parameter EN_R eine steigende Flanke erkannt wird.
Tipp: Sie können mit der Funktion SIZEOF die Größe der Variable, d.h. die Anzahl der für die Variable im Speicher der Steuerung reservierten Bytes ermitteln. |
Ein-/Ausgang
DATA
Datentyp: | ANY |
Beschreibung: | Datenpuffer, der die empfangenen Daten enthält.Die Daten werden als Byte-Stream übertragen. Es erfolgt keine Little-/Big-Endian-Konvertierung. Ist die angeschlossene Variable ein STRUCT (oder ARRAY OF STRUCT), enthält die Variable im Speicher der Steuerung eventuell Padding Bytes, die im eingehenden Daten-Strom berücksichtigt werden müssen. |
Ausgänge
NDR
Datentyp: | BOOL |
Beschreibung: | Der Ausgang NDR (NewDataReceived) wird für einen Zyklus auf TRUE gesetzt, sobald die Daten erfolgreich empfangen wurden. Die erfolgreiche Übertragung kann nur in dem Zyklus ausgewertet werden, in dem NDR = TRUE ist.Wenn NDR = TRUE ist, wird mit dem nächsten Aufruf (falls Bytes empfangen wurden) DATA überschrieben (NDR kann wieder TRUE sein).Wenn NDR = FALSE ist, werden mit dem nächsten Aufruf (falls Bytes empfangen wurden) die empfangenen Bytes an DATA angehängt. Der Ausgang DATA_CNT wird entsprechend inkrementiert. NDR wird auf TRUE gesetzt, wenn die Anzahl an erwarteten Bytes empfangen wurden. |
ERROR
STATUS
Datentyp: | WORD |
Beschreibung: | Liefert den Fehlercode im Fehlerfall (ERROR = TRUE) oder den aktuellen Status des Funktionsbausteins (ERROR = FALSE). Fehlercodes beginnen mit 16#Cxxx und Statuscodes mit 16#8xxx.Siehe Fehlercodes / Statuscodes für Ethernet-FBs. |
SOURCE_IP
Datentyp: | STRING |
Beschreibung: | IP-Adresse des Geräts, von dem Daten empfangen wurden.
Hinweis
Die Zeichenfolge enthält eine IPv4-Adresse. Die IPv4-Adresse besteht aus 4 Zahlen (Werte von 0 bis 255), die durch Punkte voneinander getrennt sind. |
|
SOURCE_PORT
Datentyp: | UINT |
Beschreibung: | Portnummer des Geräts, von dem Daten empfangen wurden. |
DATA_CNT
Datentyp: | UDINT |
Beschreibung: | Anzahl der erfolgreich empfangenen Bytes. Die Länge (Anzahl an Bytes) ist kleiner oder gleich der Länge der an DATA angeschlossenen Variable. Der Parameter muss in dem Zyklus ausgewertet werden, in dem NDR = TRUE ist.Es können maximal 2147483647 Bytes empfangen werden.
Tipp: Sie können mit der Funktion SIZEOF die Größe der Variable, d.h. die Anzahl der für die Variable im Speicher der Steuerung reservierten Bytes ermitteln. |
|