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 port Modbus à transmettre 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 : Une fois le numéro de port modifié, la case à cocher Serveur Modbus actif dans la fenêtre Configuration Ethernet n'est plus prise en compte, car le serveur Modbus utilise toujours le port 502.

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

Attribuez au fichier le nom 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 avec ExecuteScript

Vous pouvez exécuter la commande changeModbusPort depuis une application à l'aide de la 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);