FB_ModbusTcpClose

FB_ModbusTcpClose 1:

Mit dem FB_ModbusTcpClose-Funktionsbaustein wird eine mit dem FB_ModbusTcpOpen-Funktionsbaustein geöffnete Verbindung zu einem Remote-Partner geschlossen. Um den Resourcenverbrauch minimal zu halten wurde die maximale Anzahl der geöffneten Verbindungen auf 4 begrenzt. Um eine weitere Verbindung öffnen zu können, muss eine zurzeit nicht benötigte Verbindung zuerst geschlossen werden. Nach ca. 10 Sekunden wird eine Verbindung automatisch geschlossen, wenn sie in dieser Zeit nicht genutzt wurde. Beim Schließen der Verbindung wird nicht auf eine Bestätigung von dem Remote-Partner gewartet. D.h. es kann unter Umständen vorkommen (z.B. bei einer unterbrochenen Netzwerkkommunikation), dass eine Verbindung weiterhin besteht. Solche offenen Verbindungen sollten dann von dem Remote-Partner automatisch geschlossen werden. Ein Bus-Controller als Remote-Partner schließt solche offenen Verbindungen automatisch.

VAR_INPUT

VAR_INPUT
    bStart       : BOOL;
    sRemoteIPAddr: STRING(15);
    iMyPortNo    : WORD;
END_VAR

bStart: Durch eine steigende Flanke an diesem Eingang wird der Funktionsbaustein aktiviert.

sRemoteIPAddr: Die Variable ist ein String mit der Netzwerkadresse (IP-Adresse) des Remote-Partners dessen Verbindung geschlossen werden soll.

iMyPortNo: Hier wird die zur Verbindung zugehörige Portnummer als Parameter übergeben. Die Portnummer wird bei jedem Verbindungsaufbau mit dem FB_ModbusTcpOpen-Funktionsbaustein jedes Mal neu (dynamisch) erzeugt.

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    iErrorId    : WORD;
END_VAR

bBusy: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Sollte ein Fehler bei der Ausführung des Befehls auftreten, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

iErrorId: Liefert bei einem gesetzten bError-Ausgang den Befehlsspezifischen Fehlercode (Tabelle) oder den gerätespezifischen Fehlercode.

Fehlercodes

Beschreibung

0x8400

Connection is already closed.

0x8401

Connection close timeout.

0x8402

Connection close resource error.

 Beispiel für den Aufruf des Bausteins in FUP:

PROGRAM MAIN
VAR
    fbModbusClose  : FB_ModbusTcpClose;
    bOpen          : BOOL;
    bBusy          : BOOL;
    bError         : BOOL;
    nErrId         : WORD;
    nConnectionPort: WORD;
END_VAR

FB_ModbusTcpClose 2:

Im Beispiel wird bei einer steigenden Flanke am bClose-Eingang die TCP/IP-Verbindung zu dem Remote-Teilnehmer mit der Netzwerkadresse: '172.16.2.209' geschlossen.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.7.0 und abwärts

BC9xxx (165) firmware version >= 0xB6

TcModbusTCPBC.Lb6