FB_SocketCloseAll

FB_SocketCloseAll 1:

Beim TwinCAT-Restart oder TwinCAT-Stop wird auch der TwinCAT TCP/IP Connection Server gestoppt. Alle bereits geöffneten Sockets (TCP/IP- und UDP-Verbindungshandles) werden automatisch geschlossen. Nach einem „PLC reset“ oder „Rebuild all...“ oder einem neuen „Download“ wird das SPS‑Programm zurückgesetzt und die Informationen über die bereits geöffneten Sockets (Verbindungshandles) sind in der SPS nicht mehr vorhanden. Die geöffneten Verbindungen können dann nicht mehr ordnungsgemäß geschlossen werden.

Mit dem Funktionsbaustein FB_SocketCloseAll können alle Verbindungshandles (TCP/IP- und UDP‑Sockets) geschlossen werden, die von einem SPS-Laufzeitsystem geöffnet wurden. D. h. wenn Sie FB_SocketCloseAll in einer der Tasks des ersten Runtime-Systems (Port 801) aufrufen, werden alle Sockets geschlossen, die in dem ersten Runtime-System geöffnet wurden. In jedem SPS‑Runtime‑System, in dem die Socket-Funktionsbausteine benutzt werden, sollte eine Instanz von FB_SocketCloseAll beim SPS-Start aufgerufen werden.

FB_SocketCloseAll 2: Eingänge

VAR_INPUT
    sSrvNetId     : T_AmsNetId := '';
    bExecute      : BOOL;
    tTimeout      : TIME := T#5s;
END_VAR

Name

Typ

Beschreibung

sSrvNetId

T_AmsNetId

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

bExecute

BOOL

Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout

TIME

Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf.

FB_SocketCloseAll 3: Ausgänge

VAR_OUTPUT
    bBusy     : BOOL;
    bError    : BOOL;
    nErrId    : UDINT;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Bei aktiviertem Funktionsbaustein ist diese Ausgabe aktiv. Sie bleibt bis zur Quittierung aktiv.

bError

BOOL

Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

nErrId

UDINT

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

Beispiel für eine Implementierung in ST

Durch den folgenden Programmcode werden die vor einem „SPS Reset“ oder „Download“ geöffneten Verbindungshandles (Sockets) beim erneuten SPS-Start ordnungsgemäß geschlossen.

PROGRAM MAIN
VAR
    fbSocketCloseAll : FB_SocketCloseAll;
    bCloseAll        : BOOL := TRUE;
END_VAR
IF bCloseAll THEN(*On PLC reset or program download close all old connections *)
    bCloseAll := FALSE;
    fbSocketCloseAll( sSrvNetId:= '', bExecute:= TRUE, tTimeout:= T#10s );
ELSE
    fbSocketCloseAll( bExecute:= FALSE );
END_IF
IF NOT fbSocketCloseAll.bBusy THEN
(*...
... continue program execution...
...*)
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_TcpIp (Communication)