TCP_ServerOpen-Baustein

Kurz-Information

Name

TCP_ServerOpen

→POE-Typ

→Funktion

Kategorie

Weitere Systembausteine, Netzwerkbausteine, Baustein mit interner Fehlerdiagnose

→Namespace

logicals.system.network.tcp

Grafische Schnittstelle

images/download/thumbnails/429720051/TCP_ServerOpen-version-2-modificationdate-1562753067712-api-v2.png

Verfügbar ab

Version 3.2.2 (für Bibliothek Standard )
images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/warning.svg Dieser Baustein wird nur für diese Zielsysteme oder Plattformen unterstützt:

  • Raspberry Pi, Revolution Pi

  • Plattform WindowsX86 (inkl. integrierte SPS unter Windows)

  • Plattform LinuxX86

Funktionalität

Der Baustein reserviert eine Adresse und einen Port für den →TCP-Server .

Eingänge, Ausgänge, Ergebniswert


Bezeichner

→Datentyp

Beschreibung

Eingänge:

interfaceAddress

DWORD

IP-Adresse, die reserviert werden soll

interfacePort

UINT

IP-Port, die reserviert werden soll

Ausgänge:

serverHandle

TCP_ServerHandle

Handel der reservierten Adresse und des reservierten Ports

Ergebniswert:

(= rc )

TCP_ErrorCode

liefert den Status der TCP-Operation:

  • succeeded: Die Operation ist erfolgreich.

  • cannotListenOnSocket: Zu viele Systemressources sind reserviert.
    Reduzieren Sie die Verwendungen von TCP_ServerOpen.

  • cannotCreateSocket: Socket kann nicht erstellt werden.

  • cannotBindSocket: Socket für d ie Schnittstelle kann nicht gebunden werden.

Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Interne Fehlerdiagnose für Baustein

Der Baustein prüft die folgenden Fehlerfälle:

  • Zu viele Systemressources sind reserviert.

  • Socket kann nicht erstellt werden.

  • Socket für d ie Schnittstelle kann nicht gebunden werden.

In einem solchen Fehlerfall wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) zurückgesetzt. Zusätzlich liefert der Baustein den entsprechenden Status (siehe die vorhergehende Tabelle).

Beispiel für Verwendung im ST-Editor

Programm mit Aufrufen von TCP-Bausteinen
PROGRAM TCP_Server
USING logicals.system.network.tcp;
VAR
accptRC : TCP_ErrorCode := invalidHandle;
serverCommData : tcpServerCommData;
sendTestMsg : String[30] := 'Test Message';
init : bool := true;
END_VAR
 
IF init THEN
serverCommData.address := INET_ATON('127.0.0.1');
serverCommData.port := 9999;
 
TCP_ServerOpen(interfaceAddress:=serverCommData.address, interfacePort:=serverCommData.port, serverHandle=>serverCommData.serverHandle);
 
init := false;
END_IF;
 
IF accptRC <> succeeded THEN
accptRC := TCP_ServerAcceptConnection(serverHandle:=serverCommData.serverHandle, clientHandle=>serverCommData.clientHandle);
ELSE
TCP_Send(clientHandle:=serverCommData.clientHandle, data:=sendTestMsg);
END_IF;
END_PROGRAM
 
TYPE
tcpServerCommData : STRUCT
address : DWORD;
port : UINT;
serverHandle : logicals.system.network.tcp.TCP_ServerHandle;
clientHandle : logicals.system.network.tcp.TCP_ClientHandle;
END_STRUCT;
 
tcpClientCommData : STRUCT
serverAddress : DWORD;
serverPORT : UINT;
clientHandle : logicals.system.network.tcp.TCP_ClientHandle;
END_STRUCT;
END_TYPE

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.