Cambio della porta Modbus TCP

Comando changeModbusPort

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

La Porta slave Modbus corrente 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 passato come stringa di caratteri.

Prima di eseguire il comando, consultare Porte utilizzate per verificare che portnum non sia in uso da altri processi o protocolli TCP/UDP.

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

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 cambiato il numero di porta, la casella di controllo Server Modbus attivo nella finestra di configurazione Ethernet non viene più preso in considerazione, in quanto il server Modbus utilizza sempre la porta 502.

Esecuzione del comando da uno script su SD Card

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 SD card.

4

Inserire la SD card nel controller.

Esecuzione del comando con ExecuteScript

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

Il seguente esempio 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);