L'exemple ci-après indique comment utiliser le bloc fonction
SEND_REQ pour envoyer un message explicite générique 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.
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 générique Modbus :
Variable
|
Description
|
Valeur (hex.)
|
ReqCode
|
Ce code identifie une requête générique Modbus
|
16#0050
|
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, 9 octets de données seront envoyés :
Variable
|
Description
|
Valeur (hex.)
|
ManagParam[3]
|
Longueur de la variable DataToSend
|
16#0009
|
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 = code fonction Modbus : 16#03 (3, décimal)
-
Octet de poids faible = octet de poids faible de l'adresse de début de lecture : 16#20 (0, décimal)
|
16#0300
|
DataToSend[3]
|
-
Octet de poids fort = octet de poids fort de l'adresse de début de lecture : 16#20 (10, décimal)
-
Octet de poids faible = nombre de registres à lire (MSB) : 16#20 (0, décimal)
|
16#0A00
|
DataToSend[4]
|
-
Octet de poids fort = inutilisé (remplissage)1 : 16#20 (0, décimal)
-
Octet de poids faible = nombre de registres à lire (LSB) : 16#20 (5, décimal)
|
16#0005
|
1. Lorsque la requête générique Modbus contient un nombre d'octets impair, le dernier octet de la requête est remplacé.
|