Änderung des Modbus TCP-Ports

changeModbusPort-Befehl

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-Funktions­baustein 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);