Académique Documents
Professionnel Documents
Culture Documents
Communication Modbus
Présentation MODBUS
• Le protocole MODBUS a été crée en 1979 par Modicon (Télémécanique, Schneider Automation)
• Chaque esclave possède une adresse qui sert d'identifiant dans le bus. De très nombreux appareils
sont disponibles avec le protocole Modbus.
• Modbus est un bus de terrain industriel
• Le protocole MODBUS est couramment utilisé dans l'industrie, notamment pour dialoguer avec des
automates programmables.
• Certains appareils (compteur, variateur de vitesse...) sont uniquement esclaves, d'autre (automate,
PC...) peuvent être maître ou esclave.
• Le maître peut venir interroger les différents esclaves grâce à leur adresse et différentes fonctions
(lecture, écriture...).
• Le maître a la possibilité de connaître les informations de chaque esclave et/ou de les piloter.
• Les informations disponibles à la lecture ou à l'écriture sont disponibles dans la documentation des
appareils.
1
18/01/2022
• Le protocole MODBUS ne définit que la structure des messages et leur mode d’échange.
• MODBUS est indépendant de la couche physique: Il peut être implémenté sur des liaisons
RS232, RS422, ou RS485, ainsi que sur une grande variété d’autres médias (ex: fibre optique,
radio, etc...),
• La liaison RS 485 est la plus répandue car elle autorise le «multipoints».
Présentation MODBUS
2
18/01/2022
Modbus sur
Ethernet TCP-IP
3
18/01/2022
4
18/01/2022
10
5
18/01/2022
MODBUS série
• RS232 : norme électrique caractérisant la transmission d’un signal sur
un seul fil référencé par rapport à la masse (liaison point à point).
• RS422 et RS485 : norme électrique caractérisant la transmission d’un
signal sur un support différentiel (liaison multipoints ou bus). Deux fils
correspondant à des niveaux complémentaires sont utilisés pour
coder l’information.
11
12
6
18/01/2022
13
Trame MODBUS
• Le protocole MODBUS utilise des trames dont le début et la fin sont standards.
L'adresse est placée en début de trame.
• Mode de communication : half-duplex. (2 fils ou 4 fils)
• 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).
• 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.
14
7
18/01/2022
Trame MODBUS
• Echange maître vers 1 esclave : le maître envoie une demande et attend une
réponse.
• Echange Maître vers toutes les stations esclaves : le maître diffuse un message à
tous les esclaves présents sur le réseau, ceux-ci exécutent l’ordre du message
sans émettre une réponse.
15
octet
Code Contrôle
Adresse Data
Fonction d’erreur
8
18/01/2022
Trame MODBUS
Tout échange contient deux trames :
1. une demande du maître
2. une réponse de l'esclave
Chaque trame contient 4 types d'informations
Code CRC
Adresse data
fonction Ou LRC
Requête ModBus
• Numéro d’Esclave
• Identifie l’Esclave concerné par la trame Variable de 1 à 247
• Code fonction
• Identifie le rôle et la finalité de la trame Variable de 01 à 19
• Premier paramètre
• Adresse du bit ou mot adressé
• Composé de son octet de poids fort (PF) et son octet de poids faible (Pf)
18
9
18/01/2022
20
10
18/01/2022
Mot de contrôle
Le mot de contrôle d’une trame Modbus est un code de vérification
d’erreur appelé contrôle de redondance cyclique sur 16 bits ou CRC16.
21
Contrôle d ’erreur
MAITRE Esclave
Code Code
N°esclave Données CRC16 N°esclave Données CRC16
fonction fonction
• Lorsque le maître émet une demande, il calcule le CRC. Lorsque l’esclave reçoit le
message, il le range en mémoire, calcule le CRC et le compare au CRC reçu.
• Si le message est incorrect (CRC différents), l’esclave ne répond pas.
• Si le message est correct mais que l’esclave ne peut le traiter, il renvoie une réponse d’exception.22
11
18/01/2022
2 Transmet la requête
Code 3
Data requête Réalise l’action demandée
Fonction
4 Initialise la réponse
1 à 127 Complément
d’information 5 Transmet la réponse
2 Transmet la requête
Code
Fonction
Data requête 3 Détecte une erreur dans l’action demandée
12
18/01/2022
25
Validation adresse
données
Invalide
Code d’exception = 2
Valide
Validation valeurs
données
Invalide
Code d’exception = 3
Valide
Execution de la fonction
26
13
18/01/2022
• Les “Discrete Inputs” : sont des variables au format bit accessibles en lecture uniquement, ce type
de variable est supporté par des produits supportant des entrées TOR par exemple.
• Les “Coils” (b
• obine en anglais) : sont des variables format bit accessibles en lecture et écriture, supportés par des
produits supportant des données binaires modifiables par application.
• Les “Input Registers” : sont des variables au format mot (16 bits) accessible en lecture uniquement,
ce type de variable est supporté par des produits supportant des entrées analogiques, par exemple.
• Les “Holding Registers” : sont des variables au format mot (16 bits) accessible en lecture et écriture,
27
ce type de variable est supporté par des produits supportant des données modifiables par
application.
Fonction Code
Discrete Read Lecture de n bits d'entrée 02H
inputs Discrete Inputs param1=adresse param2=quantité
Accès Read Coils Lecture de n bits de sortie 01H
bits Coils param1=adresse param2=quantité
Write Écriture d'un bit interne ou de sortie 05H
Single Coil param1=adresse param2=0000 ('0') ou FF00('1')
Write Écriture de n bits internes ou de sortie consécutifs 0FH
Multiple Coils param1=adresse param2=Nbre bits, param3=Nbre d'octets params[i]=valeurs
Input Read Lecture de n mots registre d'entrée 04H
registers Input Registers param1=adresse param2=quantité
Read Lecture de n mots internes 03H
Accès Holding Registers param1=adresse param2=quantité
Holding
mots registers
Write Écriture d'un mot registre ou registre 06H
Single Register param1=adresse param2=valeur
Write Écriture de n mots internes ou de registres consécutifs 16H
Multiple param1=adresse param2=Nbre mots, param3=Nbre d'octets, params[i]=valeurs
Registers
28
14
18/01/2022
Requête :
1 octet 2 octets 2 octets
Code
Fonction Adresse du Valeur du
registre registre
06
0 à 65 535 0 à 65 535
Réponse :
0 à 65 535 0 à 65 535 29
Requête :
1 octet 2 octets 2 octets 1 octet 2 octets 2 octets
Code Adresse du Nombre de Nombre Valeur du Valeur du
Fonction premier registres à d’octets à premier dernier
16 registre écrire écrire registre registre
Réponse :
1 octet 2 octets 2 octets
Code Adresse du
Fonction Nombre de
premier
registres écrits
16 registre
0 à 65 535 n = 1 à 123
30
15
18/01/2022
Requête :
1 octet 2 octets 2 octets
Code Adresse du
Fonction Nombre de
premier
registres à lire
03 registre
0 à 65 535 n = 1 à 125
Réponse :
1 octet 1octets 2 octets 2 octets
Code Valeur du Valeur du
Fonction Nombre
premier dernier
d’octets lus
03 registre registre
0 à 65 535 0 à 65 535
31
Requête :
1 octet 2 octets 2 octets
Code Adresse du
N°esclave Fonction Nombre de CRC16
premier
registres à lire
03 registre
Réponse :
1 octet 1octets 2 octets 2 octets
Code Valeur du Valeur du
Fonction Nombre
N°esclave premier dernier CRC16
d’octets lus
03 registre registre
32
16
18/01/2022
La requête « Read Coils » permet d’accéder en lecture à plusieurs sorties digitales consécutives.
Requête :
1 octet 2 octets 2 octets
Code Adresse de la Nombre de
Fonction première sortie sorties
01 digitale digitales à lire
0 à 65 535 n =1 à 2000
Réponse :
1 octet 1 octet 1 octet 1 octet
Code
Fonction Nombre Valeur du Valeur du
d’octets lus premier octet dernier octet
01
Requête :
1 octet 2 octets 2 octets
Code Adresse de la Nombre
Fonction première d’entrées
02 entrée digitale digitales à lire
0 à 65 535 n =1 à 2000
Réponse :
1 octet 1 octet 1 octet 1 octet
Code
Fonction Nombre Valeur du Valeur du
d’octets lus premier octet dernier octet
02
17
18/01/2022
Requête :
1 octet 2 octets 2 octets 1 octet 1 octet 1 octet
Code Adresse de la Nombre de Nombre
Fonction Valeur du Valeur du
première sortie sortie digitales d’octets à
premier octet dernier octet
0F digitale à écrire écrire
Réponse :
1 octet 2 octets 2 octets
Code Adresse de la Nombre de
Fonction première sortie sortie digitales
0F digitale écrites
0 à 65 535 n =1 à 1968
35
MODBUS série
MODBUS RTU ET MODBUS ASCII
36
18
18/01/2022
MODBUS série
• 2 modes de transmission
• RTU (Remote Terminal Unit) Unité terminale distante.
• les octets sont transmis directement sans conversion ASCII.
• Le numéro d'esclave par exemple "01" sera envoyé tel que (00000001)
• Le numéro d'esclave par exemple "01" sera envoyé : "0" et "1" soit 0x30 et 0x31 (00110000 et 00110001).
• le mode de transmission doit être configuré de façon identique pour tous les équipements
branchés sur le bus.
• Ces deux formats de trames peuvent êtres utilisés dans le protocole MODBUS, mais sont
incompatibles entre eux.
• Environ 95% des modules communicants sur MODBUS utilisent des trames "RTU". 37
38
19
18/01/2022
Transmission RTU
• La trame ne comporte ni octet d’en-tête de message, ni octets de fin
de message.
CRC16 : Mot utilisé pour détecter les erreurs de transmission (cyclical redundancy check) ou test de
redondance cyclique.
La détection de fin de trame est réalisée sur un silence supérieur ou égal à 3,5 caractères.
39
- N° esclave : de 1 à 247.
- N° fonction : Il existe 19 fonctions possibles sur Modbus. Ces fonctions sont codées sur 1
octet en hexadécimal.
- 1er paramètre : Adresse du bit ou du mot adressé.
- 2ème paramètre :Quantité de mots adressés ou valeur du bit ou du mot écrit selon la
fonction utilisée.
- Autres paramètres : Données écrites dans plusieurs mots consécutifs.
- CRC16 : Contrôle par redondance cyclique pour détecter les erreurs de transmission
- La détection de fin de trame est réalisée sur un silence supérieur ou égal à 3,5 caractères.
40
20
18/01/2022
Mode RTU
• Trame MODBUS
42
21
18/01/2022
Transmission RTU
Mode RTU (Unité terminale distante):
• Ce mode RTU est à temps contrôlé : les temps entre les caractères et entre les trames doivent être
respectés, sinon le protocole sera refusé.
• L’ensemble du message doit être transmis de manière continue. Si un silence de plus de 3 fois le
temps de transmission d’un mot intervient au cours de la transmission, le destinataire du message
considérera que la prochaine information sera l’adresse du début d’un nouveau message.
43
22
18/01/2022
Transmission RTU
le temps de
le temps de transmission 3,5 fois le temps d’un
débit de transmission transmission d’un
d’un bit caractère
caractère
45
46
23
18/01/2022
47
Mode ASCII
Chaque champ composant une trame est codé avec 2 caractères ASCII (2 fois 8 bits).
Les fonctions et les adresses disponibles sont identiques à celles de la version RTU sauf que caractères transmis sont en
ASCII et que la fin du message n’est pas établie sur la base d’une durée mais en fonction des caractères de retour à la
ligne.
Sa définition est la suivante :
24
18/01/2022
• LRC 0xFA
49
• Exemple:
le message à envoyer est le suivant:
25
18/01/2022
Exemple
• Écriture de la valeur 1968H à l'adresse 00A8H sur l'esclave N° 11
51
• Exemple
52
26
18/01/2022
Exemple
Ecriture du mot 30h de l'esclave n°1, sous-adresse 0 à la valeur 0001h
• Demande : 01 06 00 30 00 01 48 05
• Réponse : 01 06 00 30 00 01 48 05
53
54
27
18/01/2022
• Trame émise par le maître pour lire des mots du registre 450 au registre 456 : 04 03 01 C2 00 07 5A C8
• Adresse esclave : 04
• Code fonction 03 = lecture registre
• N° du registre de début de lecture : MSB : 01 et LSB : C2 (450)10=(01C2)16
• Nombre de registre de lecture : MSB : 00 et LSB : 07
• CRC : 5A C8 55
28