MODBUS
MODBUS
Historique
Le protocole MODBUS est une structure de messagerie créée par MODICON
en 1979 pour connecter des automates à des outils de programmation.
Ce protocole est de nos jours largement utilisé pour établir des communications
de type maître/esclave ou client/serveurs entre équipements intelligents.
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...).
2
Modbus liaison série et le modèle ISO
MODBUS sur liaison série fonctionnant de 1200 à 56 Kbits/s avec une méthode
d ’accès maître/esclave.
3
Modbus Plus et le modèle ISO
MODBUS PLUS est un bus fonctionnant à 1 Mbit/s basé sur une méthode d ’accès
par anneau à jeton qui utilise la structure de messagerie MODBUS.
7
Application Modbus
6 Présentation
5 Session
4 Transport
3 Réseau
2 Liaison 802.4 Anneau à jeton
1 Physique RS485
4
Ethernet TCP/IP Modbus
Ethernet TCP/IP MODBUS utilise TCP/IP et Ethernet 10 Mbit/s ou 100
Mbits/s pour porter la structure de messagerie MODBUS.
7 Application Modbus
6 Présentation
5 Session
4 Transport TCP
3 Réseau IP
2 Liaison CSMA / CD
1 Physique ETHERNET V2 ou 802.3
5
Exemple d ’architecture
Départs moteurs Tesys U
Quantum
Micro
Premium
Répartieur
Modbus
Fin de ligne
ATV2 ATS4
ATV58 8 8
Tesys U
Fin
Boîtier de dérivation Té de ligne
6
La couche physique RS485
Medium : Paire torsadée blindée
Topologie : Type bus
Avec dérivations et terminaisons de fin de ligne
Distance maximum : 1200 m sans répéteur
Débit : 19.2 Kbits/s OU 9600 bits/s (recommandé)
1200 , 2400, 4800, ……………. 56K, 115K …….
Nbre max équipements : 32 ( 1 maître et 31 esclaves ) sans répéteur
Connecteurs : RJ45, DB-9
7
La couche liaison
Méthode d ’accès au médium : Maître / esclave
Sécurité de transmission : LRC ou CRC
Délimiteurs start et stop
Bit de parité
Flux continu
8
La couche liaison
9
La couche liaison
Le maitre envoi des requête aux esclaves selon deux modes:
Mode unicast: le maitre envoi une requête à un seul esclave. Après la réception et
le traitement l’esclave doit répondre.
10
La couche liaison
Le maitre envoi des requête aux esclaves selon deux modes:
mode multicast (broadcast) : le maitre envoi une requête à tous les esclaves. Sans
aucune réponse
11
Modbus ASCII et Modbus RTU
Le protocole MODBUS existe en 2 versions :
Mode ASCII
Chaque octet de la trame est transmis sous la forme de 2 caractères
ASCII. (2 fois 8 bits).
Mode RTU (Unité terminale distante)
Chaque octet de la trame est transmis sous la forme de 2 caractères
hexadécimaux de 4 bits. (2 fois 4 bits).
Le principal avantage du mode RTU est qu’il transmet plus rapidement
les informations.
Le mode ASCII permet d ’avoir un intervalle de temps d ’une seconde entre
2 caractères sans générer d ’erreur de transmission.
12
Structure d ’une trame Modbus
La structure d ’une trame Modbus est la même pour les requêtes (message du
maître vers l ’esclave) et les réponses (message de l ’esclave vers le maître).
Modbus RTU
silence Adresse Fonction Data Checksum silence
Silence >= 3,5 characters
13
Structure d ’une trame Modbus
Modbus RTU
Format (11 bits) pour chaque octet de la trame
Start: 1 bit Donnée : 8 bits Parité : 1bit Stop : 1 bit
Chaque octet composant un message est transmis en mode RTU de la manière suivante:
Avec contrôle de parité
Sans contrôle de parité
14
Structure d ’une trame Modbus
Modbus RTU
Avant et après chaque message, il doit y avoir un silence équivalent à
3,5 fois le temps de transmission d’un caractère
Et ne pas dépasser un silence de 1,5 caractère entre deux caractère
d’une même trame
15
Structure d ’une trame Modbus
Modbus ASCII
CR : Carriage Return (retour chariot) caractère ascii de valeur 0x0D
LF : line Feed (saut de ligne) ) caractère ascii de valeur 0x0A
: Adresse Fonction Data Checksum CR LF
3A Hex 0D Hex 0A Hex
16
Structure d ’une trame Modbus
Modbus ASCII
Format (10 bits) pour chaque octet de la trame
Start: 1 bit Donnée : 7 bits Parité : 1bit Stop : 1 bit
Chaque octet composant un message est transmis en mode RTU de la manière suivante:
Avec contrôle de parité
Sans contrôle de parité
17
Structure d ’une trame Modbus
18
Structure d ’une trame Modbus
19
Exemple de trame en mode RTU
Code Fonction = 3 : Read n words
Requête :
1 octet 1 octet 2 octets 2 octets 2 octets
Adresse Code Adresse Nombre de
CRC16
Esclave Fonct.= 3 1er mot mots à lire
Réponse :
1 octet 1 octet 2 octets 2 octets 2 octets 2 octets
Adresse Code Nombre Valeur du Valeur du
CRC16
Esclave Fonct.= 3 d’octets lus 1er mot dernier mot
20
21
Trame d’erreur
22
Exemples
23
Exemples
24
Exemples
25
Fonctions modbus
26
Fonctions modbus
27
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse
Code fonction Adresse de début Nombre de sorties
esclave
xx 01 00 13 00 13 xxxx
28
Fonctions modbus
Trame de réponse
Champ de données
Adresse Code Nombre d’octet États des sorties CRC
esclave fonction
27 – 20 35 – 28 38 – 36
xx 01 03 CD 6B 05 xxxx
29
Fonctions modbus
Trame d’erreur pour la majorité des fonctions à la forme suivante
Exception code Name
Trame
01 Illegal function
d’erreur Champ de données
Adresse 02 Illegal data address
Code fonction Exception code CRC
esclave
03 Illegal data value
xx 0x80+function code 01 ou 02 ou 03 ou 04 xxxx 04 Server device failure
30
Fonctions modbus
31
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Nombre d’entrées
xx 02 00 C4 00 16 xxxx
32
Fonctions modbus
Trame de réponse
Champ de données
Adresse Code Nombre d’octet États des entrées CRC
esclave fonction
204 – 197 212 – 205 218 – 213
xx 02 03 AC DB 35 xxxx
33
Fonctions modbus
34
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Nombre de registre
xx 03 00 6B 00 03 xxxx
35
Fonctions modbus
Trame de réponse
Champ de données
Adresse Code Nombre Valeur des registres CRC
esclave fonction d’octet
(108) Hi (108) Lo (109) Hi (109) Lo (110) Hi (110) Lo
xx 02 06 02 2B 00 00 00 64 xxxx
36
Fonctions modbus
37
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Nombre de registre
xx 04 00 08 00 01 xxxx
38
Fonctions modbus
Trame de réponse
Champ de données
Adresse Code Nombre d’octet Valeur des registres CRC
esclave fonction
(09) Hi (09) Lo
xx 04 02 00 0A xxxx
39
Fonctions modbus
40
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Valeur de la sortie
xx 05 00 AC FF 00 xxxx
41
Fonctions modbus
Trame de réponse
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Valeur de la sortie
xx 05 00 AC FF 00 xxxx
42
Fonctions modbus
43
Fonctions modbus
Trame de requête
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Valeur à écrire
xx 06 00 01 00 03 xxxx
44
Fonctions modbus
Trame de réponse
Champ de données CRC
Adresse Code
esclave fonction Adresse de début Valeur à écrire
xx 06 00 01 00 03 xxxx
45
Fonctions modbus
46
Fonctions modbus
47
Fonctions modbus
Autres Fonctions
48