Vous êtes sur la page 1sur 42

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

Vous aimerez peut-être aussi