Modification du port Modbus TCP

Commande changeModbusPort

La commande changeModbusPort permet de modifier le port utilisé pour les échanges de données avec un maître Modbus TCP.

Le Port esclave Modbus s'affiche dans la fenêtre de configuration Modbus TCP.

Le port Modbus par défaut est 502.

Commande

Description

changeModbusPort “portnum”

portnum est le nouveau numéro de port Modbus à utiliser, transmis sous la forme d'une chaîne de caractères.

Avant d'exécuter la commande, consultez la section Ports utilisés pour vérifier que d'autres protocoles ou processus TCP/UDP n'utilisent pas portnum.

Une erreur est consignée dans le fichier /usr/Syslog/FWLog.txt si le port spécifié est déjà utilisé.

Pour limiter le nombre de sockets ouverts, la commande changeModbusPort ne peut être exécutée que deux fois.

Le redémarrage du contrôleur logique ramène le port Modbus à la valeur par défaut (502). La commande changeModbusPort doit donc être exécutée après chaque redémarrage.

NOTE : La modification du numéro de port invalide la sélection du protocole actif pour le serveur Modbus dans le groupe Paramètres de sécurité de la fenêtre de configuration Ethernet.

Exécution de la commande à partir d'un script de carte SD

Étape

Action

1

Créez un fichier de script, par exemple :

; Change Modbus slave port

changeModbusPort "1502";

2

Nommez le fichier Script.cmd.

3

Copiez le fichier de script sur la carte SD.

4

Insérez la carte SD dans le contrôleur.

Exécution de la commande à l'aide du bloc fonction ExecuteScript

La commande changeModbusPort peut être exécutée à partir d'une application à l'aide du bloc fonction ExecuteScript.

L'exemple de code suivant remplace le port esclave Modbus TCP par défaut (502) par 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);