Cambio del puerto de Modbus TCP

Comando changeModbusPort

El comando changeModbusPort se puede utilizar para cambiar el puerto que se usa en el intercambio de datos con un Modbus TCP maestro.

El Puerto esclavo del Modbus actual se muestra en la ventana Configuración de Modbus TCP.

El número del puerto Modbus predeterminado es 502.

Comando

Descripción

changeModbusPort “portnum”

portnum, que es el nuevo número de puerto Modbus que se va a utilizar, se pasa como cadena de caracteres.

Antes de ejecutar el comando, consulte la lista de puertos utilizados para asegurarse de que ningún otro protocolo TCP/UDP o proceso esté utilizando portnum.

Si el número de puerto especificado ya estuviera en uso, se registraría un error en el archivo /usr/Syslog/FWLog.txt.

Para limitar el número de sockets abiertos, el comando changeModbusPort sólo se puede ejecutar dos veces.

Si apaga y enciende el controlador lógico, se recupera el valor predeterminado (502) del número de puerto Modbus. Por tanto, debe ejecutar el comando changeModbusPort después de cada operación de apagado y encendido.

NOTA: Después de cambiar el número de puerto, deja de tenerse en cuenta la casilla Servidor Modbus activo de la ventana Configuración Ethernet, ya que el servidor Modbus siempre utiliza el puerto 502.

Ejecución del comando mediante un script de tarjeta SD

Paso

Acción

1

Cree un archivo de script, por ejemplo:

; Change Modbus slave port

changeModbusPort "1502";

2

Asigne el nombre Script.cmd al archivo de script.

3

Copie el archivo de script en la tarjeta SD.

4

Inserte la tarjeta SD en el controlador.

Ejecución del comando con ExecuteScript

El comando changeModbusPort se puede ejecutar desde una aplicación mediante el bloque de funciones ExecuteScript.

El siguiente código de ejemplo cambia el valor predeterminado (502) del puerto del Modbus TCP esclavo a 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);