FB_ServerClientConnection

FB_ServerClientConnection 1:

Mit dem FB_ServerClientConnection-Funktionsbaustein kann eine Server-Verbindung verwaltet werden (auf- und abgebaut werden). FB_ServerClientConnection vereinfacht die Implementierung einer Server-Applikation indem 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.

VAR_IN_OUT

VAR_IN_OUT
    hServer         : T_HSERVER;
END_VAR

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

VAR_INPUT

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

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

sRemoteHost: Die 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: Die IP-Portnummer des Remote-Clients dessen Verbindung akzeptiert werden soll (z.B.: 200).

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

tReconnect: Zykluszeit mit welcher der Funktionsbaustein versucht, eine Verbindung herzustellen. Frühestens nach dieser Zeit wird ein erneuter Versuch durchgeführt, eine neue Verbindung zu akzeptieren.

VAR_OUTPUT

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

bBusy: Dieser Ausgang ist TRUE solange der Funktionsbaustein aktiv ist.

bError: Wird TRUE, sobald ein Fehler aufgetreten ist.

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

hSocket: Das 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: 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 2:

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

Weitere Anwendungsbeispiele (inklusive Sourcecode) finden Sie hier: Beispiele

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.9.0 Build >= 1030

PC or CX (x86)

TcSocketHelper.Lib

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

TwinCAT v2.10.0 Build >= 1301

CX (ARM)