Académique Documents
Professionnel Documents
Culture Documents
MODBUS
BTS SNIR 1
Introduction
Apparue en 1979
BTS SNIR 2
Exemple d’architecture
MODBUS
3
Exemple d’architecture
MODBUS Supervision / SCADA
BTS SNIR 4
MODBUS et modèle O.S.I.
Le protocole MODBUS est un protocole de type applicatif (couche 7)
En-dessous, il existe plusieurs possibilités pour implémenter le protocole
MODBUS
Requête
Client Serveur
Maître Réponse Esclave
RS232/RS485 ADU = 253 bytes + Server address (1 byte) + CRC (2 bytes) = 256 bytes
TCP/IP ADU = 253 bytes + MBAP (7 bytes) = 260 bytes
7
Les données MODBUS
Les quatre types de données échangées :
BTS SNIR 8
Type de données et organisation
mémoire de l’équipement
The example below shows data organization in In this example, the device has only 1 data
a device having digital and analog, inputs and block. The same data can be reached via
outputs. Each block is separate because data several MODBUS functions, either via a 16 bit
from different blocks have no correlation. Each access or via an access bit.
block is thus accessible with different 9
MODBUS functions.
Codes fonction du MODBUS
Fonctions prédéfinies associées à un code sur 1 octet
10
Codes fonction du MODBUS
Le code 0 est invalide
Les code entre 128 et 255 sont réservés et sont utilisés pour les réponses
aux exceptions.
Data access : ces fonctions permettent d'accéder en lecture et/ou écriture à des
bits, mots ou fichiers d'un équipement MODBUS
BTS SNIR 12
Communication MODBUS avec erreur
Code Nom
01 Illegal function
02 Illegal data address
The register data in the response message are packed as two bytes per register. For each
register, the first byte contains the high order bits and the second contains the low order bits.
Exemple : lecture des registres 108 à 110 contenant respectivement 22B, 0 et 64
15
Exemple : 06 (0x06) Write Single Register
16
MODBUS ligne série
Maitre / Esclave
RS232/RS485
BTS SNIR 17
MODBUS ligne série
ADU
19
Types de réseaux de
communications
Adresse esclave = 0
BTS SNIR 21
Diagramme d'occupation du support de transmission
BTS SNIR 22
BTS SNIR 23
Contrôle des messages reçus
par l'esclave
Lorsque l'esclave reçoit le message de demande,
il le range en mémoire, calcule le CRC et le
compare au CRC 16 reçu :
BTS SNIR 24
CRC
Important : dans le CRC 16, l’octet de poids faible (pf) est
transmis en premier.
Transmission en "Little endian"
BTS SNIR 25
Attention nombre d’octets et pas de bits !
BTS SNIR 26
BTS SNIR 27
Modes de transmission série
MODBUS utilise deux modes de transmission série au choix :
Mode ASCII
Mode RTU
BTS SNIR 28
Mode ASCII
(American Standard Code for Information Interchange)
LRC :
Longitudinal
Redundancy
Checking
Mode RTU
(Remote Terminal Unit)
Chaque octet de donnée est transmis sans codage : 4 bits pour
chaque chiffre hexadécimal
Le format RTU permet pour une même vitesse de transmission un plus fort
débit de données
Environ 95% des modules communicants sur MODBUS utilisent des
trames "RTU« . C’est le mode par défaut
Codage sur 11 bits :
Mode RTU
(Remote Terminal Unit)
BTS SNIR 31
Etats de la transmission RTU
BTS SNIR 32
JBUS
BTS SNIR 33
BTS SNIR 34
BTS SNIR 35
MODBUS TCP/IP
BTS SNIR 36
MODBUS TCP/IP
Encapsule un message MODBUS dans une trame TCP/IP
classique.
BTS SNIR 37
Trame MODBUS TCP/IP
le champ "Error check" disparait car les couches
TCP/IP effectuent déjà un contrôle d'erreur (CRC)
BTS SNIR 38
En-tête MBAP
(ModBus Application Protocol header)
L'en-tête MBAP d'une longueur de 7 octets, se décompose
comme suit :
BTS SNIR 39
Champs MBAP
Description des différents champs :
BTS SNIR 40
Exemple
ADU en hexa :
00 00 Transaction identifier
00 00 Protocole identifier (à 0 si Modbus)
00 06 Longueur (ce qui suit)
01 esclave 01 si plusieurs esclave via une
passerelle Ethernet/RS485
BTS SNIR 41
Etats du maître
Source : http://www.modbus.org/
BTS SNIR 42
Etats de l’esclave
Source : http://www.modbus.org/
BTS SNIR 43
Démonstration
Simulateur esclave : ModSim32
BTS SNIR 44
Analyse WireShark
45