FB_ServerClientConnection

FB_ServerClientConnection 1:

Mit dem Funktionsbaustein FB_ServerClientConnection kann eine Server-Verbindung verwaltet werden (auf- und abgebaut werden). FB_ServerClientConnection vereinfacht die Implementierung einer Server‑Applikation in dem er die Funktionalität von den drei Funktionsbausteinen FB_SocketListen, FB_SocketAccept und FB_SocketClose bereits intern kapselt. Die integrierte Debug-Ausgabe des Verbindungsstatus erleichtert die Fehlersuche bei Konfigurations- oder Kommunikationsfehlern. Eine minimale Server-Applikation benötigt zusätzlich nur noch jeweils eine Instanz vom FB_SocketSend und/oder eine Instanz vom FB_SocketReceive Funktionsbaustein.

Eine typische Server-Applikation stellt im ersten Schritt mit dem FB_ServerClientConnection-Funktionsbaustein die Verbindung zum Client her (genauer gesagt wird der eingehende Verbindungswunsch von der Server-Applikation akzeptiert). Im nächsten Schritt können dann Instanzen von FB_SocketSend und/oder FB_SocketReceive benutzt werden, um Daten mit dem Server auszutauschen. Wann eine Verbindung geschlossen wird, hängt von den Anforderungen der Applikation ab.

FB_ServerClientConnection 2: Eingänge

VAR_INPUT
    eMode       : E_SocketAcceptMode := eACCEPT_ALL;
    sRemoteHost : T_IPv4Addr := '';
    nRemotePort : UDINT := 0;
    bEnable     : BOOL;
    tReconnect  : TIME := T#1s;
END_VAR

Name

Typ

Beschreibung

eMode

E_SocketAcceptMode

Legt fest, ob alle oder nur bestimmte Verbindungen akzeptiert werden sollen.

sRemoteHost

T_IPv4Addr

IP-Adresse (Ipv4) des Remote-Clients, dessen Verbindung akzeptiert werden soll als String (z. B. '172.33.5.1'). Für einen Client auf dem lokalen Rechner kann auch ein Leerstring angegeben werden.

nRemotePort

UDINT

IP-Portnummer des Remote-Clients, dessen Verbindung akzeptiert werden soll (z. B. 200).

bEnable

BOOL

Solange dieser Eingang TRUE ist, wird zyklisch versucht, eine neue Verbindung herzustellen, bis eine Verbindung hergestellt wurde. Mit FALSE kann eine hergestellte Verbindung wieder geschlossen werden.

tReconnect

TIME

Zykluszeit, mit der der Funktionsbaustein versucht eine Verbindung aufzubauen.

FB_ServerClientConnection 3: FB_ServerClientConnection 4: Ein-/Ausgänge

VAR_IN_OUT
    hServer     : T_HSERVER;
END_VAR

Name

Typ

Beschreibung

hServer

hServer

Server-Handle. Diese Eingangsvariable muss vorher mit der Funktion F_CreateServerHnd initialisiert werden.

FB_ServerClientConnection 5: Ausgänge

VAR_OUTPUT
    bBusy     : BOOL;
    bError    : BOOL;
    nErrID    : UDINT;
    hSocket   : T_HSOCKET;
    eState    : E_SocketConnectionState := eSOCKET_DISCONNECTED; 
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

TRUE, solange der Funktionsbaustein aktiv ist.

bError

BOOL

Wird bei Auftreten eines Fehlercodes TRUE.

nErrId

UDINT

Dieser Parameter liefert bei einem gesetzten bError-Ausgang die TwinCAT TCP/IP Connection Server Fehlernummer.

hSocket

T_HSOCKET

Verbindungshandle zu dem neu geöffneten Remote-Client Socket. Diese Variable wird bei Erfolg an die Instanzen der Funktionsbausteine FB_SocketSend und/oder FB_SocketReceive übergeben.

eState

E_SocketConnectionState

Liefert den aktuellen Verbindungsstatus.

Beispiel in FUP

Das folgende Beispiel zeigt die Initialisierung einer Server-Handle-Variablen. Das Server-Handle wird dann an drei Instanzen des FB_ServerClientConnection-Funktionsbausteins übergeben.

PROGRAM MAIN
VAR
    hServer             : T_HSERVER;
    bListen             : BOOL;

    fbServerConnection1 : FB_ServerClientConnection;
    bConnect1           : BOOL;
    bBusy1              : BOOL;
    bError1             : BOOL;
    nErrID1             : UDINT;
    hSocket1            : T_HSOCKET;
    eState1             : E_SocketConnectionState;

    fbServerConnection2 : FB_ServerClientConnection;
    bConnect2           : BOOL;
    bBusy2              : BOOL;
    bError2             : BOOL;
    nErrID2             : UDINT;
    hSocket2            : T_HSOCKET;
    eState2             : E_SocketConnectionState;

    fbServerConnection3 : FB_ServerClientConnection;
    bConnect3           : BOOL;
    bBusy3              : BOOL;
    bError3             : BOOL;
    nErrID3             : UDINT;
    hSocket3            : T_HSOCKET;
    eState3             : E_SocketConnectionState;
END_VAR

Online-Ansicht:

FB_ServerClientConnection 6:

Die erste Verbindung ist aktiviert (bConnect1 = TRUE), die Verbindung wurde aber noch nicht hergestellt (Passive open).

Die zweite Verbindung wurde noch nicht aktiviert (bConnect2 = FALSE) (Closed).

Die dritte Verbindung wurde aktiviert (bConnect3 = TRUE) und es wurde eine Verbindung zum Remote-Client hergestellt (Established).

Hier finden Sie weitere Anwendungsbeispiele (und Quellcode): Beispiele

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_TcpIp (Communication)