FB_SocketUdpReceiveFrom

FB_SocketUdpReceiveFrom 1:

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.

FB_SocketUdpReceiveFrom 2: 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.

FB_SocketUdpReceiveFrom 3:

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

  1. 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
  2. Option Replace constants im Dialog der TwinCAT-SPS-Steuerung aktivieren (Project > Options ... > Build).
  3. 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.

FB_SocketUdpReceiveFrom 4:

FB_SocketUdpReceiveFrom 5: 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)