FB_SocketUdpReceiveFrom

Mit dem Funktionsbaustein FB_SocketUdpReceiveFrom können über den TwinCAT TCP/IP Connection Server Daten eines geöffneten UDP-Sockets empfangen werden. Der UDP-Socket muss vorher mit dem Funktionsbaustein FB_SocketUdpCreate geöffnet werden. Die Instanz des FB_SocketUdpReceive-Funktionsbausteins muss zyklisch (pollend) in der SPS-Task aufgerufen werden. Dabei wird eine steigende Flanke z. B. alle 100ms an dem bExecute-Eingang erzeugt. Beim Erfolg werden die zuletzt empfangenen Daten in den Empfangspuffer hineinkopiert. Der nRecBytes-Ausgang liefert die Anzahl der zuletzt erfolgreich empfangenen Datenbytes zurück. Wenn beim letzten Aufruf keine neuen Daten gelesen werden konnten, liefert der Funktionsbaustein keinen Fehler und nRecBytes == Null.
Eingänge
VAR_INPUT
sSrvNetId : T_AmsNetId := '';
hSocket : T_HSOCKET;
cbLen : UDINT;
pDest : POINTER TO BYTE;
bExecute : BOOL;
tTimeout : TIME := T#5s;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
sSrvNetId | T_AmsNetId | String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden. |
hSocket | T_HSOCKET | Handle eines geöffneten UDP-Sockets, dessen Daten empfangen werden sollen. |
cbLen | UDINT | Maximal verfügbare Puffergröße für die zu lesenden Daten in Bytes. Die maximale Anzahl der zu empfangenden Datenbytes ist auf 8192 begrenzt (Konstante TCPADS_MAXUDP_BUFFSIZE in der Bibliothek, um den Speicherplatz zu schonen). |
pDest | POINTER TO BYTE | Adresse (Pointer) des Empfangspuffers. |
bExecute | BOOL | Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert. |
tTimeout | TIME | Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf. |
![]() | Größe der empfangenen Daten-Bytes einstellen Verfügbar in Produktversion: TwinCAT TCP/IP Connection Server v1.0.50 oder höher: Die maximale Anzahl der zu empfangenden Datenbytes kann erhöht werden (nur wenn absolut unumgänglich). |
TwinCAT 2
- Globale Konstante im SPS-Projekt neu definieren (im Beispiel soll die maximale Anzahl der zu empfangenden Datenbytes auf 32000 erhöht werden):
VAR_GLOBAL CONSTANT
TCPADS_MAXUDP_BUFFSIZE : UDINT := 32000;
END_VAR - Option Replace constants im Dialog der TwinCAT-SPS-Steuerung aktivieren (Project > Options ... > Build).
- Projekt neu erstellen.
TwinCAT 3
In TwinCAT 3 kann dieser Wert über eine Parameterliste der SPS-Bibliothek (ab Version 3.3.4.0) editiert werden.

Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
sRemoteHost : T_IPv4Addr := '';
nRemotePort : UDINT;
nRecBytes : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Bei aktiviertem Funktionsbaustein ist diese Ausgabe aktiv. Sie bleibt bis zur Quittierung aktiv. |
bError | BOOL | Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde. |
nErrId | UDINT | Dieser Parameter liefert bei einem gesetzten bError-Ausgang die TwinCAT TCP/IP Connection Server Fehlernummer. |
sRemoteHost | T_IPv4Addr | Beim Erfolg die IP-Adresse (Ipv4) des Remote-Teilnehmers, dessen Daten empfangen wur-den. |
nRemotePort | UDINT | Beim Erfolg die IP-Portnummer des Remote-Teilnehmers, dessen Daten empfangen wurden (z. B. 200). |
nRecBytes | UDINT | Anzahl der zuletzt erfolgreich empfangen Datenbytes. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, Arm®) | Tc2_TcpIp (Communication) |