Änderung des Modbus TCP-Ports

Befehl changeModbusPort

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 neue 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 ist die aktive Protokollauswahl für den Modbus-Server in der Gruppe Sicherheitsparameter im Ethernet-Konfigurationsfenster nicht mehr gültig.

Ausführen des Befehls mithilfe eines SD-Kartenskripts

Schritt

Aktion

1

Erstellen Sie eine Skriptdatei, z. B.:

; 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 mithilfe des Funktionsbausteins ExecuteScript

Der Befehl changeModbusPort kann innerhalb einer Anwendung mithilfe des Funktionsbausteins ExecuteScript ausgeführt werden.

Der nachstehende Beispielcode ändert den Modbus TCP-Slave-Port von der Standardeinstellung (502) zu 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);