FB_SocketCloseAll

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