FB_ModbusTcpOpen
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
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 |