FB_ModbusTcpOpen

FB_ModbusTcpOpen 1:

Der Funktionsbaustein öffnet eine TCP/IP-Verbindung zu einem Remote-Partner auf dem MODBUS/TCP-Port. 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, kann eine zur Zeit nicht benötigte Verbindung mit dem Funktionsbaustein FB_ModbusTcpClose zuerst geschlossen werden. Der FB_ModbusTcpOpen-Funktionsbaustein liefert beim Erfolg in der iMyPortNo-Ausgangsvariable eine Portnummer. Diese Portnummer wird dazu benötigt, um mit dem FB_ModbusTcpRequest- oder FB_ModbusTcpClose-Funktionsbaustein einen MODBUS-Request zu senden, bzw. die Verbindung zu schließen. Mit dem Eingangsparameter tTimeout wird beim Öffnen der Verbindung auch die Timeout-Zeit für den MODBUS-Request und den Verbindungsabbau festgelegt. Nach ca. 10 Sekunden wird eine geöffnete und in dieser Zeit nicht benutzte Verbindung automatisch geschlossen und muss neu geöffnet werden. 

VAR_INPUT

VAR_INPUT
    bStart       : BOOL;
    sRemoteIPAddr: STRING(15);
    tTimeOut     : TIME;
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.

tTimeOut: Gibt die Zeit an, die bei der Ausführung des Befehls nicht überschritten werden darf. 

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    iErrorId    : WORD;
    iMyPortNo   : 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.

iMyPortNo : Beim Erfolg wird an diesem Ausgang die eigene zur Verbindung zugehörige Portnummer zurückgeliefert. Bei der Portnummer handelt es sich um eine dynamische Portnummer, die bei einem Verbindungsaufbau jedesmal neu erzeugt wird.

Fehlercodes

Beschreibung

0x8500

Resource error

0x8501

No socket available

0x8502

Open connection error

 

Beispiel für den Aufruf des Bausteins in FUP:

PROGRAM MAIN
VAR
    fbModbusOpen   : FB_ModbusTcpOpen;
    bOpen          : BOOL;
    bBusy          : BOOL;
    bError         : BOOL;
    nErrId         : WORD;
    nConnectionPort: WORD;
END_VAR

FB_ModbusTcpOpen 2:

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

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.7.0 und abwärts

BC9xxx (165) firmware version >= 0xB6

TcModbusTCPBC.Lb6