FB_SocketUdpReceiveFrom

Ab der Produktversion: TwinCAT TCP/IP Connection Server v1,0,0,31 und höher

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. Bei 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.

VAR_INPUT

VAR_INPUT
    sSrvNetId   : T_AmsNetId := '';
    hSocket     : T_HSOCKET;
    cbLen       : UDINT; 
    pDest       : DWORD;
    bExecute    : BOOL;
    tTimeout    : TIME := T#5s;
END_VAR

sSrvNetId: String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

hSocket: Das Handle eines geöffneten UDP-Sockets dessen Daten empfangen werden sollen.

cbLen: Die maximal verfügbare Puffergröße für die zu lesenden Daten in Bytes. Die maximale Anzahl der zu empfangenden Datenbytes ist standardmässig auf 8192 Bytes begrenzt (durch die Deklaration der TCPADS_MAXUDP_BUFFSIZE-Konstante in der Bibliothek, um Speicherresourcen zu schonen).

pDest: Die Adresse (Pointer) auf den Empfangspuffer.

bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout: Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf.

FB_SocketUdpReceiveFrom 2:

Ab der Produktversion: TwinCAT TCP/IP Connection Server v1.0.50 und höher kann die maximale Anzahl der zu versendenden Datenbytes (wenn unbedingt notwendig) erhöht werden.

1) Definieren Sie in dem SPS-Projekt die globale Konstante um (in unserem Beispiel wollen wir die maximale Anzahl der Datenbytes auf 32000 Bytes erhöhen):

VAR_GLOBAL CONSTANT
    TCPADS_MAXUDP_BUFFSIZE : UDINT :=32000;
END_VAR

2) Aktivieren dann die Option "Konstanten ersetzen" im TwinCAT PLC Control->"Projekt->Optionen...->Übersetzungsoptionen" dialogfenster.

3) Übersetzen Sie das Projekt.

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
    sRemoteHost : STRING(15);
    nRemotePort : UDINT;
    nRecBytes   : UDINT;
END_VAR

bBusy: Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Dieser Ausgang wird, nachdem der bBusy-Ausgang zurückgesetzt wurde, gesetzt, sollte ein Fehler bei der Übertragung des Kommandos erfolgen.

nErrId: Liefert bei einem gesetzten bError-Ausgang die TwinCAT TCP/IP Connection Server Fehlernummer.

sRemoteHost: Beim Erfolg die IP-Adresse (Ipv4) des Remote-Teilnehmers dessen Daten empfangen wurden.

nRemotePort: Beim Erfolg die IP-Portnummer des Remote-Teilnehmers dessen Daten empfangen wurden (z.B.: 200).

nRecBytes: Die Anzahl der zuletzt erfolgreich empfangen Datenbytes.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

Alle TwinCAT v2.8.0 Versionen und höher

PC oder CX (x86)

TcpIp.Lib (v1.0.4 und höher)

( Standard.Lib; TcBase.Lib; TcSystem.Lib werden automatisch eingebunden )

TwinCAT v2.10.0 Build >= 1301

CX (ARM)