Exemple 1 : fonction SEND_REQ avec requête Echo
(Traduction du document original anglais)
Présentation
L’exemple traite de la fonction de diagnostic Echo. Cette fonction demande à l’esclave interrogé de retourner intégralement le message envoyé par le maître.
Question
La fonction de communication est la suivante :
SEND_REQ(ADDR('0.0.1.x'),16#9F,%MW10:10,%MW100:4,%MW50:30)
Avant d’émettre la fonction, il est nécessaire d’initialiser les mots suivant :
Mots
Valeur des mots
Description
%MW10
:= 16#0008
correspond à la fonction Echo (octet 0 = 16#08, octet 1 =16#00.
%MW11
:= 16#0296
correspond à l’identification de la fonction Modbus.
%MW12
:= 0
réservé.
%MW13
:= 16#1234
correspond au paramètre de la fonction Echo. Pour cet exemple, l’esclave doit renvoyer la valeur 16#1234.
%MW103
:= 8 (octets)
longueur des données à transmettre en octets.
Réponse
La réponse de l’esclave, contenue dans la mémoire tampon de réception %MW50:30, est de type :
Valeur de %MW50
Valeur de %MW51
Description
:= 0 si action réalisée
:= 16#0008
correspond à la fonction Echo (octet 0 = 16#08, octet 1 =16#00)
%MW52 à %MW79 contiennent les données de la réponse Modbus. Pour cet exemple %MW52:= 1234
:= 1 si action non réalisée
:= 16#0007
paramètres de la requête incorrects
:= 16#0004
paramètres de la question incorrects
:= 16#0688
octet 0 =16#80 + code fonction (16#08 pour Echo)
octet 1 = 16#06 code d’erreur Modbus (l’esclave est occupé)
:= 16#0188
octet 0 =16#80 + code fonction (16#08 pour Echo)
octet 1 = 16#01 code d’erreur Modbus (la fonction est inconnue)
:= 16#0388
octet 0 =16#80 + code fonction (16#08 pour Echo)
octet 1 = 16#03 code d’erreur Modbus (les données sont invalides)