LP SARI – UE4 : Réseaux Industriels
LE PROTOCOLE
N. Néanne - Année 2016-2017
PLAN :
1 - Présentation
1.1 – Objectifs
1.2 – Exemple d’application
1.3 – Types de données
1.4 – Principales fonctions
2 – Supports de Communication
2.1 – RS232
2.2 – RS485
2.3 – Ethernet
2.4 - Synthèse
3 – Transactions Modbus
3.1 principe des échanges
3.2 Trames Modbus RTU
3.3 Trames Modbus TCP
Annexes
Principales fonctions Modbus
Extraits de documentations
LP MEEDD - UE2D-ARB
2
1 - PRÉSENTATION
1-1 – Objectifs
Groupe Schneider / Merlin Gerin / Télémécanique (Modicon à
l’époque) à l’origine du projet
Système de communication basé sur une liaison série
Faire communiquer entre eux différents équipements
d’automatisme (automates, variateurs, IHM…)
Echanger des données sous formes de Bits et de Mots
Exemple :
Liaison Modbus
Affichage état de Ordres de pilotage
l’état
fonctionnement
IHM
@1 API (maître)
Variateur de vitesse
LP MEEDD - UE2D-ARB @2
3
1-2 – Exemple d’application
L’architecture suivante permet la supervision d’une installation électrique
destinée à la ventilation d’un local :
4 variateurs de vitesse Schneider ATV61 sont utilisés pour piloter les moteurs
d’entraînement des ventilateurs
Un coupleur* Modbus Wago 750-312 muni d’une carte 8 entrées TOR (750-430)
est utilisé pour relevé l’état des disjoncteurs de l’installation. Les contacts
auxiliaires des disjoncteurs sont reliés comme suit :
Q1 (extraction 1) : DI1
Q2 (extraction 2) : DI2
Q3 (insufflation 1) : DI3
Q4 (insufflation 2) : DI4
Q0 (général) : DI5 (DI6, DI7, DI8 : N.C)
Un compteur d’énergie communicant Schneider IEM3150 effectue différents
relevés (puissance instantanée, énergie consommée, courants, tensions…)
LP MEEDD - UE2D-ARB
4
Poste de supervision
PC + carte réseau
Logiciel de supervision
utilisant Modbus (TCP)
@IP : [Link]
Réseau Ethernet
Extraction 1 Passerelle MB Extraction 2 Compteur
Variateur Ethernet/RS485 Variateur Energie
ATV61 @IP : ATV61 iem3150
@ Modbus : 1 [Link] @ Modbus : 4 @ Modbus : 5
Liaison RS485
Insufflation 1 Insufflation 2 Surveillance disjoncteurs
Variateur Variateur Coupleur 750-312
ATV61 ATV61 Carte 8E TOR
@ Modbus : 2 @ Modbus : 3 @ Modbus : 6
LP MEEDD - UE2D-ARB
5
1-3 – Types de données
4 types de données sont définis par le protocole:
Type Accès Exemples
d’objet
Discret Inputs Bit R - entrées TOR
- Fin de course
- Contact auxiliaire de disjoncteur
Coils Bit R/W - Sorties TOR
- Bit interne
- RAZ d’un compteur d’énergie
Input Registers Mot R - Entrées analogiques
- Lecture d’un capteur
Holding Registers Mot R/W - Sorties analogiques
- Variable d’un programme (ex:
temporisation, opérande d’un calcul…)
- Valeur de paramétrage d’un
équipement (ex : consigne de vitesse
d’un variateur…)
Les données d’un équipement sont identifiées par des adresses codées sur
16 bits.
Exemple (compteur d’énergie Schneider iem3150) :
LP MEEDD - UE2D-ARB
6
LP MEEDD - UE2D-ARB
7
1-4 – Principales Fonctions
Les fonctions Modbus permettent à des équipements d’échanger
ces différents types de données :
Code Fonction Description
1 Lecture de bits (coils)
2 Lecture de bits d’entrée (discret inputs)
3 Lecture de mots (holding registers)
4 Lecture de mots d’entrée (input registers)
5 Ecriture de 1 bit
6 Ecriture de 1 mot
15 Ecriture de n bits
16 Ecriture de n mots
Exemples (installation ventilation du §1.2) :
• Fixer la vitesse de rotation d’un ventilateur : fonction 6
• Relever les mesures du compteur d’énergie : fonction 3 ou 4
• Afficher l’état des disjoncteurs : Fonction 1
LP MEEDD - UE2D-ARB
8
2 – SUPPORTS DE COMMUNICATION
2.1 - RS 232
Maître
Liaison Point à Point
3 Fils minimums : Emission (Tx) – Réception (Rx) – Masse/référence
commune (Gnd)
Niveaux de tension +12V (‘0’) / -12V (‘1’) Esclave
D < 30m
Vrs232
‘0’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘0’ ‘0’ ‘1’
+12V
-12V
LP MEEDD - UE2D-ARB
9
Connectique :
LP MEEDD - UE2D-ARB
10
Maître
2.2 - RS 485
Liaison Multipoints (jusqu’à 63 esclaves en Modbus)
2 Fils minimums : D0 – D1
Esclave Esclave
Transmission différentielle (Niveaux de tension 0V/5V) n°1 ... n° i
D < 120m (1000m avec répéteurs)
VD0
‘0’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘0’ ‘0’ ‘1’
+5V
0V
LP MEEDD - UE2D-ARB
11
Comparaison RS232 / RS 485 :
LP MEEDD - UE2D-ARB
12
Dans tous les cas (RS232 et RS485), on doit définir les paramètres de la communication
considérée, et vérifier que le paramétrage soit identique sur toutes les stations :
Débit binaire (« Baudrate ») : Egalement appelé « vitesse de transmission », Il
s’exprime en Bauds (Bds) et correspond au nombre de bits par seconde.
Par défaut, le débit est de 19200 Bds en Modbus. Autres débits usuels : 1200 Bds, 2400
Bds, 4800 Bds, 9600 Bds.
Parité (« Parity ») : Bit de contrôle insérer à la fin de chaque octet transmis vérifiant,
selon le paramétrage choisi, que le nombre de bits à ‘1’ dans l’octet est paire
(« even ») / impaire (« odd »).
Le contrôle de parité peut aussi être désactivé (« none »)
Bit(s) de stop : Un bit de Start à ‘0’est inséré au début de chaque octet à
transmettre. L’utilisateur peut également paramétrer 1 ou 2 bits de STOP (à ‘1’) à
la fin de celui-ci.
Contrôle de flux : Matériel (utilisation des signaux RTS/CTS), logiciel ou aucun.
LP MEEDD - UE2D-ARB
13
Connectique :
LP MEEDD - UE2D-ARB
14
2.3 - Ethernet
Liaison Multipoints
4 Fils minimums (2 paires Rx/Tx)
Transmission différentielle (niveaux +/-2V) + codage manchester
D < 100m
Vrx+
‘0’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘0’ ‘0’ ‘1’
+2V
-2V
LP MEEDD - UE2D-ARB
15
Connectique (câble rj45 100 base T):
2.4 - Synthèse
RS232 : Limité à 2 équipements et aux courtes distances.
RS485 : Solution industrielle, bonne immunité aux parasites em, choix pour
les connexions dans le TGBT.
Ethernet : Lien vers la supervision
LP MEEDD - UE2D-ARB
16
3 – TRANSACTIONS MODBUS
3-1 – Principe des échanges
Un échange Modbus est également appelé transaction
Une transaction est composée d’un couple Requête/Réponse
Un réseau Modbus est composé d’un maître et d’un ou plusieurs
esclave(s)
Le maître est le seul à pouvoir émettre des requêtes
Les esclaves répondent au maître
Le protocole Modbus définit la composition des trames de
requêtes et de réponse
LP MEEDD - UE2D-ARB
17
3-2 – Trames Modbus RTU
La variante RTU de Modbus est la forme la plus utilisée sur lignes
séries (RS485 et RS232)
Une trame Modbus RTU comporte les champs suivants :
Rq les trames sont généralement présentées en format hexadécimal
Adresse Code Données CRC
Fonction
1 octet 1 octet N octets 2 octets
Adresse : n° d’esclave Modbus
Code fonction : définit le type d’échange (cf § 1.4)
Données : contient les données relatives à la fonction. Pour une
lecture : adresse et nombre de données à lire. Pour une écriture :
adresse, nombre de valeurs et valeurs à écrire.
CRC : champ de contrôle
LP MEEDD - UE2D-ARB
18
Transaction sans erreur :
Maître
Adresse Code Fonction Données CRC
1 octet 1 octet N octets 2 octets
Esclave
Adresse Code Fonction Données CRC
Idem requête Idem requête N octets 2 octets
Maître
Transaction avec erreur :
Maître
Adresse Code Fonction Données CRC
1 octet 1 octet N octets 2 octets
Esclave
Adresse Code Fonction Code d’exception CRC
D’exception
Idem requête Code + 0x80 1 octets 2 octets
1: ε sur code fct
2 : ε sur adresse
Maître 3 : ε sur données
4 : autre ε
LP MEEDD - UE2D-ARB
19
o Lecture de l’état des disjoncteurs pour affichage sur le superviseur :
@ Modbus Code Fct Adr 1er bit Nb de bits CRC
06 02 00 00 00 05 XX XX
o Réponse (seul Q3 est ouvert) :
@ Modbus Code Fct Nb octets État des bits CRC
06 02 01 0 XX XX
xxx1 10112 → 1B16
Q0 Q4 Q3 Q2 Q1
o Affichage des vitesses de rotation des 4 ventilateurs sur le superviseur :
@ Modbus Code Fct Adr 1er mot Nb de mots CRC
01 03 01 91 00 01 XX XX
Idem pr les 3 autres ventilateurs
40110 → 19116
avec @Modbus=2,3 et 4
LP MEEDD - UE2D-ARB
20
o Réponses (Ext1=5,5 Hz, Ext2=15 Hz, Ins1=7Hz, Ins2=22,5Hz)
o Commande du ventilateur d’extraction 2 (Consigne de fréquence = 20 Hz)
o Réponse :
LP MEEDD - UE2D-ARB
21
3-3 – Trames Modbus TCP
Le protocole Modbus TCP permet l’encapsulation de trames
Modbus dans les trames Ethernet :
En-tête En-tête IP En-tête TCP Données CRD
Ethernet
22 octets 12 octets 24 octets 255 octets max 4 octets
En-tête Modbus Adresse Code Fonction Données
6 octets 1 octet 1 octet N octets
Le Port n°502 est utilisé pour les échanges Modbus sur TCP.
LP MEEDD - UE2D-ARB
22
Modbus rajoute une en-tête compsée des champs suivants :
En-tête Modbus
6 octets
Transaction ID Protocol ID Length
2 octets 2 octets 2 octets
Transaction ID :
Protocol ID :
Length :
LP MEEDD - UE2D-ARB
23
o Lecture des courants pour affichage sur le superviseur:
o Lecture des tensions pour affichage sur le superviseur:
LP MEEDD - UE2D-ARB
24
o Lecture des puissances affichage sur le superviseur:
LP MEEDD - UE2D-ARB
25
ANNEXES
- PRINCIPALES FONCTIONS MODBUS-
- Fonction 01
- Fonction 02
- Fonction 03
- Fonction 04
- Fonction 05
- Fonction 15
- Fonction 16
- DOCUMENTATIONS TECHNIQUES -
- Variateur ATV61
- Coupleur Modbus Wago 750-31x
- Borne 8 E TOR Wago 750-430
LP MEEDD - UE2D-ARB
26
Fonction 0x01 : Lecture de n bits de sorties.
Cette fonction permet de lire 1 à 2000 bits consécutifs dans le segments
mémoire du serveur correspondants aux sorties discrètes (« coils »).
La trame de requête contient les champs suivants :
Code Fonction 1 Octet 0x01
Adresse de départ 2 Ocets De 0x0000 à 0xFFFF
Nombre de bits à lire : 2 Octets De 1 à 2000 (0x7D0)
La trame de réponse, si aucune erreur ne survient :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x01
Nombre d'octets de la trame de réponse : 1 octets N*
Etat des bits lus : N octets Etat des bits lus
* Rq : N = (nb_de_bits) / 8 si nb_de_bits est un multiple de 8
N = (nb_de_bits) / 8 + 1 dans le cas contraire
LP MEEDD - UE2D-ARB
27
Fonction 0x02 : Lecture de n bits d'entrées.
Cette fonction permet de lire 1 à 2000 bits consécutifs dans le segments
mémoire du serveur correspondants aux entrées discrètes (« discrete
inputs »).
La trame de requête contient les champs suivants :
Code Fonction 1 octet 0x02
Adresse du 1° bit à lire 2 octets 0x00 à 0xFFFF
Nombre de bits à lire 2 octets 0x00 à 0x2000
La trame de réponse, si aucune erreur ne survient :
Code Fonction 1 octet 0x02
Nombre d'octets de du champ 1 octets N
suivant
État des bits lus N octets Valeurs lues
LP MEEDD - UE2D-ARB
28
Fonction 0x03 : Lecture de n registres.
Cette fonction permet de lire 1 à 125 mots (16 bits) consécutifs dans le
segments mémoire du serveur correspondants aux registres accessibles
en lecture/écriture (« Holding register »).
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x03
Adresse du 1° registre à lire : 2 octets 0 à 0xFFFF
Nombre de registres à lire (n) : 2 octets 1 à 125 (0x7D)
La trame de réponse, si aucune erreur ne survient :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x03
Nombre d'octets du champ suivant : 1 octet 2xn
Mots lus : n x 2 octets Valeurs lues
LP MEEDD - UE2D-ARB
29
Fonction 0x04 : Lecture de n mots d'entrée.
Cette fonction permet de lire 1 à 125 mots (16 bits) consécutifs dans le
segments mémoire du serveur correspondants aux registres accessibles
en lecture seule (« Input register »).
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x04
Adresse de départ : 2 octets 0x0000 à 0xFFFF
Nombre de registres à lire (n) : 2 octets 1 à 125 (0x7D)
La trame de réponse, si aucune erreur ne survient :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x04
Nombre d'octets de la trame de réponse : 1 octet 2xn
Valeurs de registres lus : nx2 octets valeurs
LP MEEDD - UE2D-ARB
30
Fonction 0x05 : Ecriture d'un bit de sortie.
Cette fonction permet de forcer une sortie à '1' ou à '0' sur l'équipement distant. Le
sous-champ « valeur » du champ « données » contient 2 octets : la valeur 0xFF00
permet le forçage à '1', la valeur 0x0000 le forçage à '0'; toutes les autres valeurs
sont interdites. La réponse à cette requête est un écho de la requête.
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x05
Adresse du bit à écrire : 2 octets 0x0000 à 0xFFFF
Valeur à écrire ('0' ou '1') : 2 octets 0x0000 ou 0xFF00
Si aucune erreur ne survient, la trame de réponse est identique à la trame de
requête (écho)
La trame de réponse, si une erreur survient :
Champ : Taille : Valeur :
Code d'erreur : 1 octet 0x85
Code d'exception : 1 octet 01, 02, 03, ou 04
LP MEEDD - UE2D-ARB
31
Fonction 0x06 : Ecriture d'un registre de sortie.
Cette fonction permet l'écriture d'une variable sur un mot accessible en
lecture/écriture de l'équipement distant. La réponse à cette requête est un écho de
la requête.
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x06
Adresse du registre à écrire : 2 octets 0x0000 à 0xFFFF
Valeur à écrire (big endian) : 2 octets 0x0000 à 0xFFFF
Si aucune erreur ne survient, la trame de réponse est identique à la trame de
requête (écho)
La trame de réponse, si une erreur survient :
Champ : Taille : Valeur :
Code d'erreur : 1 octet 0x86
Code d'exception : 1 octet 01, 02, 03, ou 04
LP MEEDD - UE2D-ARB
32
Fonction 0x0F : Ecriture de n bits de sortie.
Cette fonction permet d'écrire 1 à 1968 bits consécutifs d'un équipement distant. La
réponse à cette requête renvoie le nombre de bits écrits ainsi que l'adresse de
départ en écho.
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x0F
Adresse de départ : 2 octets 0x0000 à 0xFFFF
Nombre de bits à écrire : 2 octets 0x0001 à 0x07B0
Nombre d'octets du champ suivant 1 octet 0 à 255
Le rangement
Valeurs à écriredes bits à l'intérieur des mot se fait de la façon suivante
N octets :
.................
Adresse de départ b15 b14 b13 ....... b3 b2 b1 b0
Adresse de départ + 1 b31 b30 b29 ....... b18 b17 b16
Adresse de départ + 2 etc...
LP MEEDD - UE2D-ARB
33
Fonction 0x10 : Ecriture de n registres.
Cette fonction permet d'écrire 1 à 123 registres consécutifs d'un équipement
distant. La réponse à cette requête renvoie le nombre de registres écrits ainsi que
l'adresse de départ.
La trame de requête contient les champs suivants :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x10
Adresse du 1° mot à écrire : 2 octets 0x0000 à 0xFFFF
Nombre de mots à écrire (n) : 2 octets 0 à 0x7B
Nombre d'octets du champ suivant 1 octets 0 à 255
Valeurs à écrire (big endian) : n octets 0x0000 à 0xFFFF
La trame de réponse (sans erreur) :
Champ : Taille : Valeur :
Code Fonction : 1 octet 0x10
Adresse du 1° mot écrit : 2 octet 0 à 0xFFFF
Nombre de mots écrits 2 octets n
LP MEEDD - UE2D-ARB
34
LP MEEDD - UE2D-ARB
35
LP MEEDD - UE2D-ARB
36
Borne 8 E TOR Wago 750-430 :
LP SARI – UE4,RLI
37
Variateur
de Vitesse
ATV61 :
LP MEEDD - UE2D-ARB
38