Le protocole Modbus (marque déposée par MODICON) est un protocole de dialogue basé sur une structure hiérarchisée entre un maître et plusieurs esclaves.
Une liaison multipoints (RS-485) relie maître et esclaves.
Le format des échanges est le suivant:
- 9600 ou 19200 bits / seconde
- 8 bits, sans parité, 1 stop
Deux types de dialogue sont alors possibles:
- le maître parle à un esclave et attend sa réponse,
- le maître parle à l'ensemble des esclaves, sans attente de réponse (diffusion générale).
Les échanges sont donc du type half-duplex.
La liaison Modbus peut être sur 4 fils ou sur 2 fils.
Il ne peut y avoir sur la ligne qu'un seul équipement en train d'émettre. Aucun esclave ne peut envoyer un message sans une demande préalable du maître. Le dialogue entre les esclaves est impossible.
Le maître envoie un message constitué de la façon suivante:
- adresse de l'esclave concerné, pour établir la liaison avec lui,
- instruction,
- donnée,
- contrôle, calculé sur l'ensemble du message et destiné à assurer l'intégrité de l'échange.
La détection de fin de message est réalisée sur un silence de plus de 2 caractères.
L'esclave répond par un message du même type.
L'adresse de l'esclave est un numéro compris entre 1 et 31 codé sur 1 octet. Le numéro 0 indique que tous les esclaves sont concernés (diffusion générale).
L'instruction est codée sur 1 octet. Par exemple, le code 03 envoyé vers un ATV-28, correspond à une demande de lecture de N mots.
La donnée peut être composée de plusieurs mots, par exemple, adresse du premier mot (2 octets), puis nombre de mots (2 octets).
Le contrôle appelé CRC (Cyclical Redundancy Check), codé sur 2 octets, est calculé de la façon suivante:
XOR: OU exclusif
Le CRC est calculé par l'émetteur avant d'être transmis. Le récepteur calcule aussi le CRC et le compare avec le CRC reçu: des valeurs différentes indiquent une erreur dans la transmission du message.
Exemple:
Lecture par le maître des mots W450 à W456 sur un ATV-28 (esclave n°2). Cette requête comporte 8 octets:
| 02 | 03 | 01 C2 | 00 07 | XX XX |
| n° de l'esclave | instruction de lecture de N mots |
450 est converti en code hexadécimal | 7 mots | Valeur du CRC |
Calcul du CRC16 (animation)
Le protocole Modbus est très utilisé pour les communications des automates programmables industriels et des variateurs de vitesse des moteurs électriques.
RS-485 : c'est une liaison série, de type asynchrone, différentielle qui permet un débit élevé (jusqu'à 10 Méga-bits/seconde) sur une distance importante (jusqu'à 1200m). Elle dispose de 2 bornes d'émission polarisées notées T(+), T(-) et de 2 bornes de réception polarisées notées R(+), R(-).
Voir aussi : Liaison RS-232