Exemple de message explicite Modbus TCP : Lecture des registres de sortie
(Traduction du document original anglais)
Présentation
L'exemple ci-après indique comment utiliser le bloc fonction SEND_REQ pour configurer un message explicite de lecture des registres de sortie Modbus qui va lire cinq registres à partir d'un équipement distant, à l'adresse 192.168.1.6, en commençant à l'adresse de registre 10 sur l'équipement distant.
NOTE : La configuration de cette requête est plus simple, par exemple, que celle de la requête générique de lecture des registres Modbus. Le paramètre ReqCode spécifie la fonction, donc aucune autre fonction Modbus n'est nécessaire.
Mise en œuvre du bloc SEND_REQ
Pour mettre en œuvre le bloc fonction SEND_REQ, vous devez créer des variables et les attribuer aux blocs suivants :
Configuration de la variable Address
La variable Address identifie l'équipement d'origine du message explicite (dans cet exemple, le module de communication TSX ETC 101) et l'équipement cible. Notez que cette variable n'inclut pas les éléments d'adresse Xway {Réseau.Station}, car nous n'établissons pas de pont à travers une autre station automate. Utilisez la fonction ADDR pour convertir la chaîne de caractères ci-dessous en adresse :
ADDR('0.3.0'), où :
Configuration de la variable ReqCode
La variable ReqCode identifie le type de fonction du bloc fonction SEND_REQ, dans ce cas, une requête de lecture des registres de sortie :
Variable
Description
Valeur (hex.)
ReqCode
Requête de lecture des registres de sortie Modbus
16#0051
Configuration de la variable ManagParam
Le paramètre ManagParam[3] définit la longueur de la variable DataToSend pour le bloc fonction SEND_REQ. Dans cet exemple, 8 octets de données seront envoyés :
Variable
Description
Valeur (hex.)
ManagParam[3]
Longueur de la variable DataToSend
16#0008
Configuration de la variable DataToSend
La variable DataToSend identifie la requête générique Modbus :
Variable
Description
Valeur (hex.)
DataToSend[0]
Deux premiers octets de l'adresse IP (192.168.1.6) de l'équipement cible :
  • Octet de poids fort = octet 4 : 16#C0 (192, décimal)
  • Octet de poids faible = octet 3 : 16#A8 (168, décimal)
16#C0A8
DataToSend[1]
Deux derniers octets de l'adresse IP (192.168.1.6) de l'équipement cible :
  • Octet de poids fort = octet 2 : 16#01 (1, décimal)
  • Octet de poids faible = octet 1 : 16#06 (6, décimal)
16#0106
DataToSend[2]
  • Octet de poids fort = octet de poids faible de l'adresse de début de lecture : 16#20 (0, décimal)
  • Octet de poids faible = octet de poids fort de l'adresse de début de lecture : 16#20 (10, décimal)
16#000A
DataToSend[3]
  • Octet de poids fort = octet de poids fort (MSB) du nombre de registres à lire : 16#00 pour ce type de requête
  • Octet de poids faible = octet de poids faible (LSB) du nombre de registres à lire : 16#20 (5, décimal)
16#0005