Exemple de message explicite Modbus TCP : requête de lecture de registres
Traduction de la notice originale
Présentation
L'exemple ci-après indique comment utiliser le bloc fonction DATA_EXCH pour envoyer une requête Modbus TCP de messagerie explicite à un équipement distant, en l'occurrence un module d'interface réseau STB NIP 2212 situé à l'adresse IP 192.168.1.7, demandant de lire un mot stocké dans le registre 5391 sur l'équipement distant.
Implémentation du bloc fonction DATA_EXCH
Pour implémenter le bloc fonction DATA_EXCH, vous devez créer des variables et les attribuer aux blocs suivants :
Déclaration de variables
Dans cet exemple, les variables suivantes ont été définies. Bien entendu, vous pouvez utiliser d'autres noms dans votre configuration de messagerie explicite.
Dans cet exemple, les variables suivantes ont été définies. Bien entendu, vous pouvez utiliser d'autres noms dans votre configuration de messagerie explicite.
Configuration de la variable Address
La variable Address identifie l'équipement à l'origine du message explicite (dans cet exemple, le module de communication) et l'équipement cible. Notez que la variable Address n’inclut pas l’élément ID d’unité. Utilisez la fonction ADDM pour convertir la chaîne de caractères suivante en adresse :
ADDM(‘0.1.0{192.168.1.7}TCP.MBS’), où :
NOTE : Comme indiqué ci-dessus, la configuration de la fonction ADDM décrite dans cet exemple n’inclut pas d’élément ID d’unité, qui (s’il était inclus) serait inséré après le signe « } » situé après l’adresse IP de l’appareil distant et serait suivi d’un « . » (par exemple, ADDM(‘0.1.0{192.168.1.7}0.TCP.MBS’), où 0 est l’ID d’unité). La configuration de la fonction ADDM, comme indiqué ci-dessus, fonctionne pour la plupart des équipements Modbus TCP. Cependant, il peut y avoir des exceptions, comme noté ci-dessous :
  • ID d’unité = 255 : l’absence d’une valeur ID d’unité express sera interprétée comme ID d’unité = 255. Pour certains équipements, un ID d’unité de 255 est utilisé pour accéder aux données de diagnostic Ethernet via Modbus TCP (via Modbus FC03 : lecture des registres de maintien). Consultez la rubrique de la plateforme Quantum Codes de diagnostic pris en charge pour les diagnostics disponibles sur les équipements Modbus TCP.
  • ID d’unité 100 : pour d’autres équipements Modbus TCP, ID d’unité = 100 est utilisé pour le même objectif que l’ID d’unité = 255, comme décrit ci-dessus. Pour plus d’informations, consultez la rubrique de la plateforme Modicon M580 intitulée Diagnostics disponibles sur les équipements Modbus TCP.
Configuration de la variable ActionType
La variable ActionType identifie le type de fonction du bloc DATA_EXCH :
Variable
Description
Valeur (hex.)
ActionType
Transmission suivie d'une attente de réponse
16#01
Configuration de la variable DataToSend
La variable DataToSend contient l'adresse du registre cible et le nombre de registres à lire.
Variable
Description
Valeur (hex.)
DataToSend[0]
  • Octet de poids fort = Octet de poids fort (MSB) de l'adresse du registre 16#15 (21, décimale)
  • Octet de poids faible = code fonction : 16#03 (03, décimal)
16#1503
DataToSend[1]
  • Octet de poids fort = Octet de poids fort (MSB) du nombre de registres à lire : 16#00 (0, décimal)
  • Octet de poids faible = octet de poids faible (LSB) de l'adresse du registre : 16#0F (15, décimal)
16#000F
DataToSend[2]
Information d'instance de la requête CIP :
  • Octet de poids fort = non utilisé : 16#00 (0, décimal)
  • Octet de poids faible = Octet de poids faible (LSB) du nombre de registres à lire : 16#01 (1, décimal)
16#0001
Affichage de la réponse
Utilisez une table d'animation de Control Expert pour afficher le tableau de variables ReceivedData. Notez que ce tableau reprend l'intégralité du tampon de données.
Pour afficher la réponse Modbus TCP, procédez comme suit :
Etape
Action
1
Dans Control Expert, sélectionnez Outils → Navigateur de projet pour ouvrir le Navigateur de projet.
2
Dans le Navigateur de projet, sélectionnez le dossier Tables d'animation, puis cliquez avec le bouton droit. Un menu contextuel apparaît.
3
Sélectionnez Nouvelle table d'animation dans le menu contextuel. Une nouvelle table d'animation s'ouvre, ainsi que la boîte de dialogue de propriétés correspondante.
4
Dans la boîte de dialogue de propriétés, modifiez les valeurs suivantes :
Nom
Entrez le nom de la table. Dans cet exemple : ReceivedData.
Module fonctionnel
Acceptez la valeur par défaut <Aucun>.
Commentaire
(Facultatif) Entrez un commentaire ici.
Nombre de caractères animés
Saisissez 100, soit la taille du tampon de données en mots.
5
La boîte de dialogue Propriétés est du type suivant :
Cliquez sur OK pour fermer la boîte de dialogue.
6
Dans la colonne Nom de la table d'animation, entrez le nom de la variable attribuée au tampon de données : ReceivedData et appuyez sur Entrée. La table d'animation affiche la variable ReceivedData.
7
Développez la variable ReceivedData pour afficher son tableau de mots et visualiser la réponse CIP :
Remarque : chaque entrée du tableau contient 2 octets de données au format Little Endian Par exemple, « 03 » dans word[0] est l'octet de poids faible, tandis que « 02 » est l'octet de poids fort.