FB_ServerClientConnection

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

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