Der Befehl changeModbusPort kann zur Änderung des Ports verwendet werden, der für den Austausch von Daten mit einem Modbus TCP-Master eingesetzt wird.
Der aktuelle Modbus-Slave-Port wird im Modbus TCP-Konfigurationsfenster angezeigt.
Die Modbus-Standardportnummer lautet 502.
Befehl |
Beschreibung |
---|---|
changeModbusPort “portnum” |
portnum ist die neu zu verwendende Modbus-Portnummer. Sie wird als Zeichenfolge übergeben. Sehen Sie sich vor Ausführung des Befehls die Informationen zu den verwendeten Ports an, um sicherzustellen, dass portnum von keinem anderen TCP/UDP-Protokoll oder Prozess verwendet wird. Wenn die angegebene Portnummer bereits in Verwendung ist, wird in der /usr/Syslog/FWLog.txt-Datei ein Fehler aufgezeichnet. |
Um die Anzahl der offenen Sockets zu begrenzen, kann der changeModbusPort-Befehl nur zweimal ausgeführt werden.
Durch das Aus- und anschließende Wiedereinschalten der Steuerung wird die Modbus-Portnummer wieder auf den Standardwert (502) zurückgesetzt. Aus diesem Grund muss der changeModbusPort-Befehl nach jedem Aus- und Wiedereinschalten ausgeführt werden.
HINWEIS: Nach der Änderung der Portnummer wird das Kontrollkästchen Modbus-Server aktiv im Ethernet-Konfigurationsfenster nicht mehr berücksichtigt, da der Modbus-Server stets Port 502 verwendet.
Ausführen des Befehls mithilfe eines SD-Kartenskripts
Schritt |
Aktion |
---|---|
1 |
Erstellen Sie eine Skriptdatei, zum Beispiel: ; Change Modbus slave port changeModbusPort "1502"; |
2 |
Geben Sie der Skriptdatei den Namen Script.cmd. |
3 |
Kopieren Sie die Skriptdatei auf die SD-Karte. |
4 |
Setzen Sie die SD-Karte in die Steuerung ein. |
Ausführen des Befehls über ExecuteScript
Der Befehl changeModbusPort kann in einer Anwendung mithilfe des ExecuteScript-Funktionsbaustein s ausgeführt werden.
Der nachstehende Beispielcode ändert den Modbus TCP-Slave-Port von der Standardeinstellung (502) auf 1502.
IF (myBExe = FALSE AND (PortNum <> 502)) THEN
myExecSc( // falling edge for a second change
xExecute:=FALSE ,
sCmd:=myCmd ,
xDone=>myBDone ,
xBusy=> myBBusy,
xError=> myBErr,
eError=> myIerr);
string1 := 'changeModbusPort "';
string2 := WORD_TO_STRING(PortNum);
myCmd := concat(string1,string2);
myCmd := concat(myCmd,'"');
myBExe := TRUE;
END_IF
myExecSc(
xExecute:=myBExe ,
sCmd:=myCmd ,
xDone=>myBDone ,
xBusy=> myBBusy,
xError=> myBErr,
eError=> myIerr);