1. Structure de message du protocole Modbus
Chaque message Modbus a la même structure. Quatre éléments de base sont présents dans chaque message. La séquence et l'ordre de ces éléments sont les mêmes pour tous les messages. Cela permet une analyse facile du contenu du message Modbus.
Une conversation est toujours lancée par un maître du réseau Modbus. Un maître Modbus envoie un message et, en fonction du contenu du message, l'esclave interprète le message et y répond.
L'adressage esclave physique dans l'en-tête du message est utilisé pour définir le périphérique esclave qui doit répondre à un message. Tous les autres nœuds du réseau Modbus ignorent le message si le champ d'adresse ne correspond pas à leur propre adresse.
image
Les fonctions Modbus exécutent des instructions de lecture et d’écriture dans les registres de la mémoire interne de l’esclave pour configurer, surveiller et contrôler les entrées et les sorties de l’esclave.
1.1. Dispositifs de protocole Modbus
image
1.2. Unité de données de protocole Modbus (PDU)
La zone de demande de service du message ou de l’unité de données du protocole Modbus ou de l’unité PDU comprend:
- Code de fonction.
- un nombre d'octets «données» demandé par le maître.
image
Les registres de mémoire Modbus d'un appareil s'organisent autour des quatre types de référence de données de base. Ce type de données est également identifié par le numéro principal utilisé dans l'adresse de la mémoire de l'appareil, par exemple:
- Registre basé sur zéro (0) référençant un message à lire ou écrire «bobines ou sorties discrètes».
- Un (1) registre basé référençant la lecture «entrées discrètes».
- Trois (3) registres basés sur la référence «registres d’entrée».
- Quatre (4) registres basés référençant Lecture ou Écriture à des «registres de sortie ou de maintien».
1.2.1. Message Modbus «Champ de code de fonction»
Le «champ de code de fonction» spécifie le groupe de données de registre qu'il lit ou écrit vers et depuis l'esclave.
Par exemple, un code de fonction 03, lu dans les registres de stockage 40001-40002, est appelé registre de données 0000 dans le champ d'adresse de données du message envoyé à l'esclave.
Le code de fonction 03 fonctionne sur le type de registre de maintien (4xxxx) dans la mappe de données de l’esclave, car la demande spécifie l’utilisation d’une opération de type de données du registre de maintien et l’adressage 4xxxx dans la demande est implicite.Les champs de la PDU sont décomposés en octets et regroupés par nom de champ. Le message de demande contient: - L'adresse esclave de 01. - Le “Code de fonction” de 03 (Lecture des registres de stockage 4xxxx). - Les «adresse de départ» HI et LO octets (0000) qui spécifient le «registre de départ». - Le «nombre d'adresses» à lire dans l'esclave, les octets HI et LO de la valeur de comptage (0002) spécifiant le «nombre de registres» à lire dans l'esclave.
image
Exemple de demande de "lecture" des "deux premiers registres" dans la zone "Registre de maintien" 0 à 1 (registres 40001 à 40002) à partir de l'esclave 1 est présenté ci-dessous.
image
Beaucoup de types de données sont nommés à partir de son utilisation; Par exemple, une sortie physique à un bit s'appelle une bobine et une entrée physique à un bit s'appelle une entrée discrète ou un contact.
image
Le champ de code de fonction du message contiendra un octet indiquant à l'esclave le type d'action à exécuter.
Les codes de fonction valides sont compris entre 1 et 255, mais tous les codes ne s'appliqueront pas à un esclave particulier.
Le tableau présenté dans l'image ci-dessous met en évidence un sous-ensemble de fonctions de protocole Modbus standard.
image
1.2.2. Message «Modbus» du champ Modbus
De plus, le champ «données» de la demande du maître fournit à l’esclave toutes les informations supplémentaires requises par l’esclave pour mener à bien l’action spécifiée par le «code de fonction» dans la demande du maître.
La demande du capitaine comprend généralement:
- L'adresse du registre de carte esclave.
- Le nombre de registres à fournir dans la requête.
- Toute écriture de données du maître.
2. Traitement des erreurs de message Modbus
La réponse normale de l’esclave reprend simplement le code de fonction original de la demande, mais la réponse d’erreur de l’esclave renvoie un code équivalent au code de fonction d’origine avec le bit de poids fort défini sur logique 1.
Par exemple, la commande «Lire les registres de maintien» (code de fonction 03) a le code de fonction avec 1 octet contenant 8 bits est binaire 0000 0011 (03 Hex). Si le périphérique esclave accepte la demande sans erreur, il retournera le même code dans sa réponse.
Toutefois, si une erreur se produit, l’esclave renvoie 1 octet contenant 8 bits binaires 1000 0011 (le bit le plus significatif défini sur logique 1) dans le champ «code de fonction» et ajoute un code unique (code d’exception) dans «données». champ du message de réponse indiquant au périphérique maître le type d'erreur survenu ou la raison de l'erreur.
image
3. Codes de fonction les plus courants de Modbus RTU
Ce code de fonction 01, «Lire les bobines», permet de lire de 1 à 2000 registres contigus indiquant l’état des bobines dans un appareil esclave. La PDU de demande spécifie l’adresse de la première bobine des registres de mémoire de l’esclave et le nombre de bobines à lire à partir du périphérique esclave.
Le code de fonction 02, code «Lire entrée discrète», permet de lire de 1 à 2000 l'état contigu des sorties TOR dans un esclave distant. L’unité PDU de demande spécifie la première adresse d’entrée des registres de mémoire de l’esclave et le nombre d’entrées à lire à partir du périphérique esclave.
Le code de fonction 03, code «Read Holding Registers», permet de lire le contenu d’un bloc contigu de registres de maintien dans un esclave distant. L'unité PDU de demande spécifie l'adresse du registre de départ et le nombre de registres à lire à partir du périphérique esclave.
Le code de fonction 04, code «Lire les registres d’entrée», permet de lire entre 1 et 125 registres d’entrée contigus dans un appareil distant. L'unité PDU de demande spécifie l'adresse du registre de départ et le nombre de registres.
image
Le code de fonction 05, code «Write Single Coil», permet d’écrire une seule sortie sur ON ou OFF dans un appareil esclave distant.
Le code de fonction 06, code «Write Single Register», permet d’écrire un seul registre de maintien dans un appareil esclave distant. L'unité PDU de demande spécifie l'adresse de l'adresse du registre de mémoire esclave dans laquelle écrire.
Le code de fonction 15, code «Écrire plusieurs bobines», permet de forcer chaque bobine d'une séquence de bobines à être activée ou désactivée dans un appareil esclave distant. La PDU de demande spécifie l'adresse mémoire des bobines à forcer sur ON ou OFF.
image
Et le code de fonction 16, «Ecrire plusieurs registres», permet d’écrire un bloc de registres contigus de 1 à 123 registres dans un appareil esclave distant.
Bien que ces codes de fonction Modbus représentent les fonctions de lecture et d'écriture les plus courantes, il serait utile de consulter les spécifications du protocole Modbus pour obtenir des informations supplémentaires.
Et pour plus d'informations sur les différents protocoles utilisés avec l'automatisation, consultez cette page Web.
4. Logiciel de simulateur de protocole Modbus
La communication avec des périphériques esclaves, des automates maîtres ou des ordinateurs peut être réalisée avec le logiciel de simulateur Modbus pour s'exécuter sur votre ordinateur personnel.
La connexion peut être série ou Ethernet et sous la forme d'un maître ou d'un esclave. Le logiciel vous permettra d’exécuter tout le code de la fonction de communication de protocole Modbus pour lire ou écrire sur un esclave existant.
Vous pouvez configurer un ordinateur pour exécuter le logiciel de simulation esclave et un autre pour exécuter le logiciel de simulation maître.
image
La connexion à un esclave est d'abord effectuée en définissant les paramètres de communication pour votre port COM série.
image
Ensuite, en entrant l’adresse de l’esclave dans le champ ID d’appareil, par exemple 1, en sélectionnant le code de fonction 01 pour lire les bobines de l’esclave, indiquant l’adresse 0001 et en lisant une longueur de 100 bobines.
image
En outre, plusieurs sociétés proposent des produits et une assistance pour vous aider avec la communication de protocole. ProSoft Technologies, HMS Industrial Communication et MOXA en sont quelques-uns.
Ceci conclut l’article, Comment fonctionne le protocole de communication Modbus. J'espère que vous avez appris ce qu'il faut faire pour créer votre propre projet de contrôle du mouvement.
Merci encore pour la lecture. Laissez vos questions et commentaires et nous discuterons avec vous bientôt!
Bon apprentissage,