Modifica della porta TCP Modbus

changeModbusPort, comando

Il comando changeModbusPort consente di cambiare la porta utilizzata per gli scambi dei dati con un master Modbus TCP.

La porta slave Modbus viene visualizzata nella finestra di configurazione Modbus TCP.

Il numero di porta Modbus predefinito è 502.

Comando

Descrizione

changeModbusPort “portnum”

portnum è il nuovo numero di porta Modbus da utilizzare ed è passato come stringa di caratteri.

Prima di eseguire il comando, vedere Porte utilizzate per garantire che portnum non sia utilizzato da un altro protocollo o processo TCP/UDP.

Viene registrato un errore nel file /usr/Syslog/FWLog.txt se il numero di porta specificato è già in uso.

Per limitare il numero di socket aperti, il comando changeModbusPort può essere eseguito solo due volte.

Spegnendo e riaccendendo il logic controller, si riporta il numero di porta Modbus al valore predefinito (502). Il comando changeModbusPort deve quindi essere eseguito dopo ogni spegnimento/riaccensione.

NOTA: Dopo aver modificato il numero di porta, la selezione attiva del protocollo per il server Modbus nel gruppo Parametri di sicurezza della finestra di Configurazione Ethernet non è più valida.

Esecuzione del comando da uno script su scheda SD

Passo

Azione

1

Creare un file di script, ad esempio:

; Change Modbus slave port

changeModbusPort "1502";

2

Assegnare al file di script il nome Script.cmd.

3

Copiare il file di script sulla scheda SD.

4

Inserire la scheda SD nel controller.

Esecuzione del comando mediante il blocco funzione ExecuteScript

Il comando changeModbusPort può essere eseguito da un'applicazione con il blocco funzione ExecuteScript.

L’esempio seguente di codice cambia la porta slave Modbus TCP dal valore predefinito (502) 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);