ARS3 :
MODBUS
Département GEII – Année universitaire 2011-2012
1
MODBUS
Développé par MODICON en 1979
Protocole d ’échange « CLIENT/SERVEUR »
Requête
(request)
Client Serveur
Réponse
(reply)
2
MODBUS
Un des plus utilisés dans la communication entre
automates industriels
s ’adapte au nouvelle technologie: intègre TCP/IP
permet une communication sur différents supports
entre différents équipements
3
MODBUS
4
MODBUS
N ’implémente que les couches 1, 2 et 7 du model
OSI, sauf sous TCP/IP
5
MODBUS
Protocol
1 Application
6
Protocol Application
Couche application définie PDU (Protocol Data Unit)
indépendant de la couche liaison et du support de transmission
Adresse Code fonction Données Contrôle
Couche application
Couche liaison
Couche liaison rajoute des champs pour constituer ADU
(Application Data Unit)
7
PDU Client ->Serveur
Code fonction Data
Client
Envoi une requête Serveur
Code fonction 1 octet
– code fonction [1;127]
– code exception [128;255]
Data : n octets , dépend du code fonction et contient
habituellement des variables. Peut être nul.
8
PDU Serveur ->Client
Si pas d ’erreur
Client Serveur
Attend la réponse Exécute l ordre,
renvoie la réponse
Code fonction Data
•Les données demandées
Celui envoyé par le client en mode lecture
•Les données reçues en
mode écriture
9
01|00|13|00|13
0x01 : code de la fonction
lecture des sorties tout ou rien
0x0013 : code hexa sur 2
octets de la première sortie
0x0013 : nombre de sorties à
lire, codé en hexa sur 2 octets
Client Serveur
01|03|CD|6B|05
0x01 : code de la fonction
demandée par le client
Sortie 27 à 20 0x03 : nombre d’octet à suivre
0xCD=>11001101 0xCD : état des sorties 27 – 20
0x6B : état des sorties 35-28
0x05 : état des sorties 38 - 36
MSB LSB
10
Si erreur!
Client Serveur
Attend la réponse Détection d ’erreur,
renvoie la réponse
Code fonction Code Erreur
Celui envoyé par le
client mais en
mettant le MSB à 1
11
01|04|A1|00|01
0x01 : code de la fonction
lecture des sorties tout ou
rien
0x04A1 : code hexa sur 2
octets de la première sortie
0x0001 : nombre de sorties à
lire, codé en hexa sur 2
octets
Client Serveur
81|02
0x81 : code de la fonction
demandée par le
client+0x80
0x02 : code correspondant
à une adresse inexistante
12
MODBUS
MODBUS sur
2 liaison série
13
MODBUS série
Couche 1 et 2 du model OSI
liaison 2 fils sur interface EIA/TIA-485 (RS485)
protocole de type maître/esclave
– maitre -> Client
– esclave(s) -> Serveur(s)
topologie en bus
14
protocole maitre/esclave
1 seul maître parle, le(s) esclave(s) écoute(nt)
communication toujours à l ’initiative du maître
esclaves ne communiquent pas entre eux
2 modes de communication
– diffusion (broadcast)
– individuel (unicast)
15
Mode Broadcast
Requête envoyée à tous les esclaves
Requête d ’écriture uniquement
Requête envoyée à l ’adresse 0x00
Pas de réponse des esclaves
16
Mode Unicast
Maitre adresse 1 seul esclave à la fois
Après traitement de la demande, esclave renvoie sa
réponse
17
Mode Unicast
Règles d ’adressage
– maître n ’a pas d ’adresse
– adresse 0 réservée au mode broadcast
– adresses esclaves [1;247]
– adresses [248;255] sont réservées
– une adresse unique pour chaque esclave
18
TRAME MODBUS
L application fournie le PDU
la couche liaison rajoute les informations
– adresse du récepteur
– détection d ’erreur de transmission
19
trame MODBUS
Tout échange contient deux trames :
1. une demande du maître …
2. … et une réponse de l'esclave !
TRAME Chaque trame contient 4 types d'informations
ADU= Application Data Unit
PDU modbus PDU= Protocol Data Unit
Code CRC
Adresse data
fonction Ou LRC
1 octet 1 octet X octets 2 octets
Entre 1 et 247 Entre 1 et 127 Complément Contrôle de
Identifie d'informations validité
Le destinataire (dépend du code
Fonction)
20
Contrôle d ’erreur
MAITRE Esclave
N°esclave Code Données N°esclave Code Données
CRC16 CRC16
fonction fonction
Calcul du CRC16 Calcul du CRC16
Comparaison des CRC16
Ne renvoie rien CRC16 identique
Exécute l ’action et répond au client
21
MODBUS série
2 modes de transmission
– RTU (Remote Terminal Unit)
– ASCII (American Standard Code for
Information Interchange)
le mode de transmission doit être configuré de
façon identique pour tous les équipements
branchés sur le bus.
22
Mode RTU
Rappel Trame MODBUS
Envoi d ’un octet sur le support physique
–1 bit de start
–8 bits de donnée (LSB en premier)
–1 bit de parité (paire)
–1 bit de stop
23
Transmission RTU
Start Data parité Stop
1 bit 8 bits 1 bit 1 bit
Forme physique des données
La detection d ’erreur est assurée par un calcul de type CRC
Cyclical Redundancy Checking
24
Mode ASCII
Trame MODBUS constituée de 2 caractères ASCII pour
coder un octet
Envoi d ’un caractère sur le support physique
–1 bit de start
–7 bits de donnée (LSB en premier)
–1 bit de parité (paire)
–1 bit de stop
25
Transmission RTU
Contrairement au mode RTU, la détection de debut et fin de trame
n ’est pas assuré par des silences sur la ligne, mais par:
• un caractère de « start » « : » (0x3A)
• une chaîne de fin constitué de 2 commandes « CR LF »
(0x0D et 0x0A)
Start Data parité Stop
1 bit 7 bits 1 bit 1 bit
Forme physique des données
La detection d ’erreur est assurée par un calcul de type LRC
Logitudinal Redundancy Checking
26
Communication maître esclave
Comportement du maître
Traitement erreur fini/
Requête envoyée en
diffusion / Idle
run compteur
Taround Requête envoyée /
run compteur Time out Traitement
réponse
Attendre
Taround Réponse reçue/ Erreur dans la trame/
arrêt compteur Tout
Taround expiré Attente
réponse
Réponse reçue/ Traitement
erreur
Time out expiré/
27
Communication maître esclave
Comportement de l ’esclave
28
Communication maître esclave
Evolution temporelle d ’une communication
29
Interface physique
Nouveau système sur RS485 standard
– 2 fils
– logique négative
– 9600 ou 19200 bps (par défaut)
– connectique RJ45
30
Interface physique
Topologie en bus
31
Interface physique
Câblage 2fils (typique)
32
Interface Physique
LT: Termination Line, limte les problèmes de
réflexion sur la ligne
– 150
– 120 // 1nF
Pull-Up Pull-Down: polarisation de la ligne, assure un
état stable en l’absence de communication sur la
ligne
33
Interface physique
RJ45 2 fils
34
Interface physique
Solution 4 fils
35
Interface Physique
Connectique RJ45 en 4 fils
36
Interface physique
Passage de 4 fils à 2fils
37
MODBUS
MODBUS sur
3 TCP/IP
38
MODBUS TCTIP
Permet la communication entre équipements utilisant
différents mode de communication
39
trame MODBUS
MODBUS sous TCP/IP
Le serveur est sur le PORT : 502
TRAME MODBUS/TCP
Une en tête spécifique est utilisée en TCP/IP pour identifier l'APU MODBUS :
MBAP MODBUS APPLICATION PROTOCOL HEADER
ADU= Application Data Unit
PDU= Protocol Data Unit
En tête MBAP Code fonction data
L'@ esclave MODBUS est remplacée par l'octet Unit Identifier de l'en tête MBAP
40
trame MODBUS
Structure du MBAP
champ longueur description
Identifiant d'une transaction de type MODBUS:
Identifiant
2 octets Demande/réponse
de transaction
Identifiant
2 octets Protocole MODBUS = 0
de protocol
taille 2 octets Nombre d'octets à suivre (UI+DATA)
Identifiant Remplace la notion d'@ esclave
1 octet sur le réseau TCP/IP
D'unité
41
Protocole MODBUS
Services supportés par MODBUS
Voici la liste des codes fonction (tous les équipements ne
supportent pas tous les codes fonction)
Code Fonction
01h Lecture de n bits de sortie ,param1=adresse param2=quantité
02h Lecture de n bits d'entrée ,param1=adresse param2=quantité
03h Lecture de n mots internes ,param1=adresse param2=quantité
04h Lecture de n mots registre d'entrée ,param1=adresse param2=quantité
05h Écriture d'un bit interne ou de sortie,param1=adresse param2=0000 ('0')
ou FF00('1')
06h Écriture d'un mot registre ou registre ,param1=adresse param2=valeur
15h Écriture de n bits internes ou de sortie consécutifs ,param1=adresse
param2=Nbre bits, param3=Nbre d'octets, params[i]=valeurs
16h Écriture de n mots internes ou de registres consécutifs ,param1=adresse
param2=Nbre mots, param3=Nbre d'octets, params[i]=valeurs
42