Protocole Modbus 20/03/2002  Patrick ABATI 
Liste des cours

    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.

RS-485

    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.

Modbus

    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.

    Il existe 2 modes de transmission : ASCII ou RTU

 

 Transmission RTU (Remote Terminal Unit) 

    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 247 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:

algorithme

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)

 

 Transmission ASCII (American Standard Code for Information Interchange) 

    Le maître envoie un message constitué de la façon suivante:
- un en-tête : caractère $3A correspondant aux deux points (:)
- les octets d'information sont codés sur 2 caractères ASCII, par exemple $6A est codé par $36 (6) et $41 (A)
- un contrôle appelé LRC8 (Longitudinal Redundancy Check 8 bits)
- un délimiteur de fin de trame constitué par les caractères $0D (CR) et $0A (LF)  

    Le calcul du LRC8 se fait sur les octets hors en-tête et délimiteur par le complément à 2 de la somme des octets
exemple de requête : 01 04 04 90 00 05

01
0
0
0
0
0
0
0
1
04
0
0
0
0
0
1
0
0
04
0
0
0
0
0
1
0
0
90
1
0
0
1
0
0
0
0
00
0
0
0
0
0
0
0
0
05
0
0
0
0
0
1
0
1
SOMME
1
0
0
1
1
1
1
0
COMPLEMENT
0
1
1
0
0
0
0
1
+1
0
1
1
0
0
0
1
0

    Le LRC8 est 0110 0010 (en binaire) => 62 (en hexadécimal) => $62

Calcul du LRC8 (animation)

 


    Le protocole Modbus est très utilisé pour les communications des automates programmables industriels et des variateurs de vitesse des moteurs électriques.

Pour en savoir plus...


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

 

  W3C W3C W3C