UDP_RECEIVE_2
Der Funktionsbaustein UDP_RECEIVE_2 ist eine neuere Implementierung des UDP_RECEIVE-FB, der in diesem Hilfethema als "ältere Implementierungen" bezeichnet wird. UDP_RECEIVE_2 kann nur mit dem FB UDP_SEND_2 verwendet werden, basierend auf einem Socket, der vom FB UDP_SOCKET_2 erzeugt wurde.
Hinweis
Dieser Funktionsbaustein erfordert die Firmware-Version 2021.3 oder neuer. |
Hinweis
Um in einem bestehenden Projekt Instanzen der früheren FB-Implementierung durch neuere FBs zu aktualisieren, ersetzen Sie diese wie folgt: Editieren Sie die Deklaration der Instanzvariablen und (nur in FBD) aktualisieren Sie den Instanzaufruf im Code. Formalparameter mit gleichem Namen bleiben verbunden, neu hinzugefügte Formalparameter müssen verbunden werden (falls deren Funktion benötigt wird). |
Typ | Funktionsbaustein |
Beschreibung | Der Funktionsbaustein wird für den Datenempfang von UDP-Datagrammen (UDP = Universal Datagram Protocol) von einem UDP-fähigen Ethernet-Gerät über einen IP-Socket verwendet. Bevor Daten empfangen werden können, muss zuerst der IP Socket mit Hilfe des Funktionsbausteins UDP_SOCKET_2 geöffnet werden.Jeder einzelne Empfangsvorgang wird durch eine steigende Flanke am Eingang EN_R (EN_R = ENable_Receive) angestoßen. Wenn Daten erfolgreich empfangen wurden, wird der Ausgang NDR (NDR = NewDataReceived) für einen Zyklus auf TRUE gesetzt, in dem Daten in den Buffer für die Empfangsdaten (DATA-Ein-/Ausgang) kopiert wurden. In diesem Zyklus sind die an DATA verfügbaren Daten gültig und müssen verarbeitet werden. Falls die Verarbeitung nicht in diesem Zyklus abgeschlossen werden kann, müssen entweder die Daten kopiert oder der Eingang EN_R aus FALSE gesetzt werden.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. |
|
Hinweise |
- Der mit dem Funktionsbaustein UDP_SOCKET_2 geöffnete IP Socket kann nur für den Aufruf des Funktionsbausteins UDP_RECEIVE_2 verwendet werden, solange der Ausgang ACTIVE von UDP_SOCKET_2 = TRUE ist. Der Aufruf des Funktionsbausteins UDP_RECEIVE_2 während ACTIVE = FALSE ist, führt zu einem Fehler an UDP_RECEIVE_2 (ERROR = TRUE und STATUS-Code = 0xC210).
- Während EN_R auf FALSE gesetzt ist, können unter Umständen nicht empfangene Datagramme verloren gehen.
- 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.
- 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.
|
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 UDP_SOCKET_2 geöffnet wurde (siehe auch oben stehende Hinweise).
Hinweis
Ein Handle, das mit einer Instanz der älteren Implementierung des Funktionsbausteins UDP_SOCKET erzeugt wurde, darf nicht mit dem Funktionsbaustein UDP_RECEIVE_2 verwendet werden. Verwenden Sie Handles nur innerhalb derselben "FB-Generation". |
|
Ein-/Ausgang
DATA
Datentyp: | ANY |
Beschreibung: | Datenpuffer für die Empfangsdaten vom Gerät mit der vorgegebenen IP-Adresse (SOURCE_IP) und Portnummer (SOURCE_PORT). Ist die angeschlossene Variable ein STRUCT (oder ARRAY OF STRUCT), enthält die Variable im Speicher der Steuerung eventuell Padding Bytes, die in den eingehenden Daten 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. |
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 (DATA_CNT = DATA_CouNT). 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.Wenn das empfangene Datagramm länger ist als die an DATA angeschlossene Variable, wird ein Fehler gemeldet, das Datagramm verworfen und keine Daten in die an DATA angeschlossene Variable kopiert.
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. |
|