FB_ClientServerConnection

FB_ClientServerConnection 1:

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

Eine typische Client-Applikation stellt im ersten Schritt mit dem FB_ClientServerConnection-Funktionsbaustein die Verbindung zum Server her. 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_INPUT

VAR_INPUT
    sSrvNetID       : T_AmsNetID := '';
    nMode           : DWORD := 0;
    sRemoteHost     : STRING(15) := '';
    nRemotePort     : UDINT;
    bEnable         : BOOL;
    tReconnect      : TIME := T#45s;
END_VAR

sSrvNetID: String mit der Ams-Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

nMode: Parameter-Flags (Modi). Die zulässigen Parameter sind in der Tabelle aufgeführt und können mit einer ODER-Verknüpfung kombiniert werden:

Flag

Beschreibung

CONNECT_MODE_ENABLEDBG

Aktiviert das Loggen von Debug-Meldungen im Application-Log. Um die Debug-Meldungen zu sehen, öffnen Sie den TwinCAT System Manager und aktivieren Sie die Loggeransicht.

sRemoteHost: Die IP-Adresse (Ipv4) des Remote-Servers als String (z.B.: '172.33.5.1'). Für einen Server auf dem lokalen Rechner kann auch ein Leerstring angegeben werden.

nRemotePort: Die IP-Portnummer des Remote-Servers (z.B.: 200).

bEnable: Solange dieser Eingang TRUE ist wird zyklisch versucht eine Verbindung aufzubauen, solange bis eine Verbindung aufgebaut wurde. Mit FALSE kann eine aufgebaute Verbindung wieder geschlossen werden.

tReconnect: Zykluszeit mit der der Funktionsbaustein versucht die Verbindung aufzubauen. Spätestens nach dieser Zeit wird der Versuch abgebrochen und ein neuer gestartet.

FB_ClientServerConnection 2:

Setzen Sie den Wert tReconnect nicht zu niedrig, da bei einer Netzwerkunterbrechung Timeoutzeiten von > 30s auftreten können. Bei einem zu niedrigen Wert wird die Kommandoausführung vorzeitig unterbrochen und der ADS-Fehlercode: 1861 (timeout elapsed) statt des Winsocket-Fehlers: WSAETIMEDOUT zurückgeliefert.

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 Local-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 für einen Aufruf in FUP:

PROGRAM MAIN
VAR
    fbClientConnection1     : FB_ClientServerConnection;
    bConnect1               : BOOL;
    bBusy1                  : BOOL;
    bError1                 : BOOL;
    nErrID1                 : UDINT;
    hSocket1                : T_HSOCKET;
    eState1                 : E_SocketConnectionState;
END_VAR
FB_ClientServerConnection 3:

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)