TCP_ServerOpen-Baustein

Kurz-Information

NameTCP_ServerOpen
→POE-Typ→Funktion
KategorieWeitere Systembausteine, Netzwerkbausteine, Baustein mit interner Fehlerdiagnose
→Namespacelogicals.system.network.tcp
Grafische Schnittstelle

Verfügbar ab

Version 3.2.2 (für Bibliothek Standard)
(warning) 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→DatentypBeschreibung
Eingänge:interfaceAddressDWORDIP-Adresse, die reserviert werden soll
interfacePortUINTIP-Port, die reserviert werden soll
Ausgänge:serverHandleTCP_ServerHandleHandel der reservierten Adresse und des reservierten Ports
Ergebniswert: (= rc)TCP_ErrorCodeliefert den Status der TCP-Operation:
  • succeeded: Die Operation ist erfolgreich.
  • cannotListenOnSocket: Zu viele Systemressources sind reserviert.
    Reduzieren Sie die Verwendungen von TCP_ServerOpen.
  • cannotCreateSocketSocket kann nicht erstellt werden.
  • cannotBindSocket: Socket für die 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 die 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.