FB_ServerClientConnection
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:
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) |