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 es el nuevo número de puerto Modbus que se va a utilizar y 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 solo 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, la selección de protocolo activo para el servidor Modbus en el grupo Parámetros de seguridad de la ventana Configuración de Ethernet deja de ser válida.

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 el bloque de función ExecuteScript

El comando changeModbusPort puede ejecutarse desde una aplicación con 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);