Vous êtes sur la page 1sur 32

L'université Sidi Mohamed Ben Abdellah

FACULTE DES SCIENCES-FES


Master – SMART INDUSTRY

Rapport TP-communication industrielle


MODBUS Protocole

Année universitaire 2018 /2019


Introduction :

Ce TP à pour but de nous familiariser et de nous approcher à


la communication industrielle à l’aide du protocole MODBUS.
Afin de réalisé ce TP nous avons effectué 2 applications à l’aide
d’un Arduino Mega avec l’application ModbusMAT 1.1, et d’un
Arduino Uno, capteur Ultrasons hc-sr04 et le logiciel IGSS
version FREE50 de Schneider Electric.
Le travail qu'on va entamer dans ce rapport est le suivant :
 Faire communiquer un Arduino Mega (comme esclave)
et un PC (comme Maitre) par le protocole Modbus RTU à
l’aide de l’interface ModbusMAT 1.1
 Faire communiquer un Arduino Uno (comme esclave)
relié avec un capteur Ultrasons hc-sr04 avec un PC
(comme Maitre) à fin de réaliser une station virtuel de
contrôle de niveau d’eau sous le logiciel IGSS version
FREE50 par le protocole Modbus.

2
Sommaire

Introduction :........................................................................................................................................... 2
I. PROTOCOLE MODBUS: .................................................................................................................... 6
1) CARACTERISATION DES ECHANGES : ........................................................................................... 6
2) DIFFERENCE DE TRAMES MODBUS : ........................................................................................... 7
3) STRUCTURE DES TRAMES MODBUS : .......................................................................................... 8
4) STRUCTURE GENERALE DES TRAMES MODBUS SELON LES FORMATS : ..................................... 9
II. COMMUNICATION ARDUINO MEGA – MODBUSMAT 1.1 :........................................................... 11
1) OBJECTIF : .................................................................................................................................. 12
2) CONFIGURATION MODBUSMAT 1.1 :........................................................................................ 13
3) REALISATION :............................................................................................................................ 14
III. CONTROLE DE NIVEAU – IGSS SCADA : ..................................................................................... 17
1) MATERIEL: ................................................................................................................................. 17
2) SCHEMA SOUS FRITZING : ......................................................................................................... 18
3) MODELISATION DE STATION D’EAU SOUS IGSS SCADA : .......................................................... 19
4) SIMULATION ET REALISATION : ................................................................................................. 28
CONCLUSION : ....................................................................................................................................... 29
Bibliographie/Weboghraphie : .............................................................................................................. 30
Annexe : ................................................................................................................................................. 31

3
Liste des figures
Figure 1 : Type d’échange -1 ................................................................................................................... 6
Figure 2 : Type d’échange -2 ................................................................................................................... 7
Figure 3 : Trame maitre ........................................................................................................................... 8
Figure 4 : Trame Esclave .......................................................................................................................... 8
Figure 5 : Trame Esclave -Erreur.............................................................................................................. 9
Figure 6 : Message - MODE RTU ............................................................................................................ 10
Figure 7 : Interface ModbusMAT 1.1..................................................................................................... 11
Figure 8 : Configuration de ModbusMAT 1.1 ........................................................................................ 13
Figure 9 : Trame à envoyer .................................................................................................................... 14
Figure 10 : Open Port ............................................................................................................................ 15
Figure 11 : Communication Arduino/Pc ''trames" ................................................................................ 15
Figure 12: Arduino Mega - Schema ....................................................................................................... 16
Figure 13 : Résultat - basculement de 0 vers 1 ..................................................................................... 16
Figure 14 : Interface IGSS SCADA FREE50.............................................................................................. 17
Figure 15: Schema à realiser ................................................................................................................. 19
Figure 16 : Projet-Nouveau projet......................................................................................................... 19
Figure 17 : Project wizard ...................................................................................................................... 20
Figure 18 : Chemin d'enregistrement – Nom ........................................................................................ 20
Figure 19 : Single User ........................................................................................................................... 20
Figure 20 : Driver – Modbus .................................................................................................................. 21
Figure 21 : IGSS Station name assigned to this PC ................................................................................ 21
Figure 22 : Configuration du port du serie ............................................................................................ 21
Figure 23: Configuration – nœud .......................................................................................................... 22
Figure 24 : Igss – information ................................................................................................................ 22
Figure 25 : Mode conception ................................................................................................................ 22
Figure 26 : Création du diagramme ....................................................................................................... 22
Figure 27 : Propriétés de diagramme .................................................................................................... 23
Figure 28 : Moteur - par défaut ............................................................................................................. 24
Figure 29 : Propriétés du descripteur.................................................................................................... 24
Figure 30 : Barre de mesure .................................................................................................................. 24
Figure 31 : Gonfiguration de la barre – analogue ................................................................................. 25
Figure 32 : Configuration de la barre - cartographie d'atome .............................................................. 25
Figure 33 : Configuration – Calcul ......................................................................................................... 26
Figure 34 : Configuration - Propriétés de la barre ................................................................................ 26
Figure 35 : résultat de modélisation ..................................................................................................... 27

4
Liste des tableaux
Tableau 1 : TRAME - Format Ascii ........................................................................................................... 9
Tableau 2 : TRAME - Format RTU .......................................................................................................... 10
Tableau 3 : Hardware - materiel utilisier ............................................................................................... 18
Tableau 4 : SOFTWARE - LOGICIEL UTILISIER ........................................................................................ 18
Tableau 5 : Resultat- Realisation ........................................................................................................... 28

5
I. PROTOCOLE MODBUS:

Le protocole MODBUS a été créé en 1979 par Modicon


(Télémécanique, Schneider Automation). Il est aujourd'hui très utilisé
dans l'industrie. Il ne définit que la structure des messages et leur
mode d’échange, car on peut utiliser n’importe quel support de
transmission (RS232, RS422 ou RS485) ; la liaison RS485 est la plus
répandue car elle autorise le « multipoints ». Modbus est un bus de
terrain industriel.

1) CARACTERISATION DES ECHANGES :


Il y a un module maître et 1 ou plusieurs modules esclave (247 max).
Les échanges sont réalisés à l’initiative du maître et comportent une
demande du maître et une réponse de l’esclave. Ces demandes sont
adressées :
 soit à un esclave (identifié par son numéro) ; (2 esclaves ne
peuvent dialoguer ensemble).

FIGURE 1 : TYPE D’ECHANGE -1

6
 soit à tous les esclaves (diffusion) ; dans ce cas, les commandes
du maître sont obligatoirement des commandes d’écriture et il
n’attend pas de réponse.

FIGURE 2 : TYPE D’ECHANGE -2

2) DIFFERENCE DE TRAMES MODBUS :


Il existe 2 formats de trames des messages :
ASCII (American Standard Code for Information Interchange) et RTU
(Remote Terminal Unit).
Ces 2 formats peuvent être utilisés dans le protocole Modbus, mais
sont incompatibles entre eux. Environ 95% des modules
communicants sur Modbus utilisent des trames RTU.
Le format ASCII offre une « souplesse » plus importante sur les timing
inter-octet (jusqu’à 1 seconde) et constitue une véritable transmission
asynchrone.
Le format RTU permet pour une même vitesse de transmission, un plus
fort débit de données. La liaison Modbus est une liaison half-duplex (à
l’alternat).

7
3) STRUCTURE DES TRAMES MODBUS :
 Trame d’échange maître -> esclave (question) :

FIGURE 3 : TRAME MAITRE

Lorsque le message est reçu par l’esclave, ce dernier lit le mot de


contrôle (CRC) et accepte ou refuse le message.

 Trame d’échange esclave -> maître (réponse) :

La trame de réponse a un format similaire à la trame question.

FIGURE 4 : TRAME ESCLAVE

 Trame d’échange esclave -> maître (réponse en cas d’erreur) :


Si une erreur apparaît, l’esclave répond avec un code fonction modifié
et les données contiennent un code d’exception permettant de
connaître le type d’erreur.

8
FIGURE 5 : TRAME ESCLAVE -ERREUR

Lorsque le maître émet une demande, il calcule le CRC.


Lorsque l’esclave reçoit le message, il le range en mémoire, calcule le
CRC et le compare au CRC reçu.
Si le message est incorrect (CRC différents), l’esclave ne répond pas.
Si le message est correct mais que l’esclave ne peut le traiter, il renvoie
une réponse d’exception.

4) STRUCTURE GENERALE DES TRAMES MODBUS SELON LES


FORMATS :

 Format ASCII :
Chaque octet composant une trame est codé avec 2 caractères ASCII
(2x 8 bits).
Start Adresse Fonction Données CRC Stop
1 octet 2 octets 2 octets n octets 2 octets 2 octets
TABLEAU 1 : TRAME - FORMAT ASCII

9
 Format RTU (Unité Terminal Distante) :
Ce mode RTU est à temps contrôlé : les temps entre les caractères et
entre les trames doivent être respectés, sinon le protocole sera refusé.
Start Adresse Fonction Données CRC Stop
Silence 1 octet 1 octet n octets 2 octets Silence
(256 max)
TABLEAU 2 : TRAME - FORMAT RTU

En mode RTU, chaque octet composant le message est transmis avec


ou sans parité, comme suit :

FIGURE 6 : MESSAGE - MODE RTU

L’ensemble du message doit être transmis de manière continue. Si un


silence de plus de 3 fois le temps de transmission d’un mot intervient
au cours de la transmission, le destinataire du message considérera
que la prochaine information sera l’adresse du début d’un nouveau
message.

10
II. COMMUNICATION ARDUINO MEGA –

MODBUSMAT 1.1 :

Le bus de terrain Modbus fait partie des réseaux industriels les plus
utilisés en automatisme et informatique industrielle que ce soit pour
être utilisé avec des microcontrôleurs ou avec des automates
programmables.
Dans cette partie, nous allons vous présenter le logiciel ModbusMAT
1.1 qui est un logiciel qui permet de simuler des esclaves et maître
Modbus.
Le logiciel supporte aussi bien le Modbus RTU, ASCII et le TCP/IP.
Ce logiciel peut être intéressant pour tester des périphériques
dialoguant via Modbus (dans notre cas Arduino Mega) et de se
familiariser avec le protocole Modbus.

FIGURE 7 : INTERFACE MODBUSMAT 1.1

11
1) OBJECTIF :

On veut donner l’ordre à l’Arduino (poser une question) pour lire 5


entrées numériques.
Il devrait commencer à partir de la première entrée numérique (1
puis 2, 3, 4,5).
On fixe sur ModbusMAT par exemple l'adresse de l'esclave est 17.
On sélectionne Le code de fonction est 1 (Read coil)
La trame qu’on va envoyer est (Question/Ordre) depuis le PC:
11 01 00 00 00 05 FE 99
11 : adresse d’esclave
01 : Code la fonction
00 00 00 05 : Données
FE 99 : CRC
La trame qu’on va recevoir de l’Arduino (réponse) :
11 01 01 00 55 48
11 : adresse d’esclave
01 : Code la fonction
01 00 : Données
55 48 : CRC

12
2) CONFIGURATION MODBUSMAT 1.1 :

Afin de réalisé cette application, il faut configurer l’interface


de ModbusMAT 1.1 selon les données précédentes (code de la
fonction – adresse de l’esclave…) et de transfert le code* vers un
Arduino Mega.
Ainsi de sélectionner le PORT (COM7) dont l’Arduino est branché et
de sélectionner aussi la structure de la trame RTU.

FIGURE 8 : CONFIGURATION DE MODBUSMAT 1.1

13
FIGURE 9 : TRAME A ENVOYER

3) REALISATION :

Apres d’avoir configuré l’interface ModbusMAT 1.1 et de téleverser


Le programme* dans l’Arduino; il faut aller vers la barre d’outil et de
cliquer sur l’icône Open Port :

14
FIGURE 10 : OPEN PORT

Apres il suffit de cliquer sur «START POLLING» et d’aller vers l’onglet


«Comm Monitor» et de voir la communication entre l’ordinateur et
l’Arduino(Maitre/esclave).

FIGURE 11 : COMMUNICATION ARDUINO/PC ''TRAMES"

L’ordinateur et l’Arduino communique maintenant entre eux avec le


protocole Modbus.

15
Pour visualiser la réponse de la première entrée numérique 1, il faut
connecter sur l’Arduino à l’aide d’une file le PIN 22 et le 5 V de
l’Arduino comme suivant :

FIGURE 12: ARDUINO MEGA - SCHEMA

Lorsqu’on branche le 5V avec le PIN 22 la valeur de l’entrée numérique


bascule de 0 vers 1 sur l’interface ModbusMAT 1.1.

FIGURE 13 : RESULTAT - BASCULEMENT DE 0 VERS 1

16
III. CONTROLE DE NIVEAU – IGSS SCADA :

Durant cette application on va voir comment utiliser IGSS SCADA pour


faire communiquer un Arduino Uno avec un ordinateur l’aide du
protocole Modbus.
Avec le logiciel IGSS SCADA FREE50, on peut créer un projet avec une
fonctionnalité complète à partir de zéro. Il est idéal pour les
constructeurs, constructeurs de machines et autres qui souhaitent
automatiser leurs processus ou obtenir un remplacement efficace et à
la pointe de la technologie pour les panneaux de commande existants.
A notre cas on va utiliser IGSS SCADA FREE50 pour modéliser et simuler
un réservoir de l’eau, qui sera contrôlé par un capteur Ultrasons hc-
sr04 relié avec un Arduino Uno à l’aide de protocole Modbus.

FIGURE 14 : INTERFACE IGSS SCADA FREE50

1) MATERIEL:
 Hardware :
17
Arduino Uno + Câble USB

Capteur Ultrasons HC SR04

Ordinateur

TABLEAU 3 : HARDWARE - MATERIEL UTILISIER

 Software :
Arduino IDE

IGSS SCADA FREE50

TABLEAU 4 : SOFTWARE - LOGICIEL UTILISIER

2) SCHEMA SOUS FRITZING :


Pour réaliser l’application du contrôle de niveau d’eau on doit relier la
broche TRIG du capteur vers le PIN 13 et la broche ECHO vers le PIN
12.

Le VCC vers 5V de l’Arduino et la broche GND vers GND de l’Arduino


comme montrer ci-dessous :

18
FIGURE 15: SCHEMA A REALISER

3) MODELISATION DE STATION D’EAU SOUS IGSS SCADA :

Le logiciel IGSS SCADA permet de créer, modéliser des stations de


contrôle et de supervision, à notre cas on va modéliser une station
d’eau pour le contrôler à l’aide de protocole Modbus RTU.
Pour commencer on ouvre IGSS SCADA et on cilique sur Projet ->
Nouveau Projet :

FIGURE 16 : PROJET-NOUVEAU PROJET

On obtient la fenêtre suivante :

19
FIGURE 17 : PROJECT WIZARD

On clique sur suivant et on choisie ‘ Create a new IGSS project ’ puis


-> suivant on donne un nom à notre station et on spécifie le chemin
d’enregistrement de notre projet :

FIGURE 18 : CHEMIN D'ENREGISTREMENT – NOM

On clique sur suivant et on doit choisir ‘Single User a.k.a standalone’ :

FIGURE 19 : SINGLE USER

20
Apres on doit choisir le driver Modbus Modicon et le port et le
nœud comme suit :

FIGURE 20 : DRIVER – MODBUS

On clique après sur suivant puis terminer, jusqu'à maintenant on a


créer notre projet maintenant il suffit de le configurer et de modéliser
la station de supervision de l’accumulateur d’eau.
Une fenêtre apparait, on doit cocher dedans ‘IGSS Station name
assigned to this PC ’ comme suivant :

FIGURE 21 : IGSS STATION NAME ASSIGNED TO THIS PC

On configure après le port suivant les valeurs suivant :

FIGURE 22 : CONFIGURATION DU PORT DU SERIE

21
On finit par la configuration du nœud comme suite :

FIGURE 23: CONFIGURATION – NŒUD

Apres la configuration on va vers Ficher -> Enregistrer une fenêtre


apparait :

FIGURE 24 : IGSS – INFORMATION

On clique sur Oui et on retourne vers l’interface IGSS SCADA et on ve


vers conception et configuration -> Définition :

FIGURE 25 : MODE CONCEPTION

Une fenêtre apparait et on derige vers diagramme-> créer dans la


barre d’outils :

FIGURE 26 : CREATION DU DIAGRAMME

22
On va obtenir la fenêtre suivante on la remplir avec les valeurs
suivantes :

FIGURE 27 : PROPRIETES DE DIAGRAMME

23
Pour insérer la station on clique sur le symbole de valve on fait une
clique foncé sur l’interface de dessin, un moteur apparait par défaut :

FIGURE 28 : MOTEUR - PAR DEFAUT

Pour le modifier on cliquer avec la droit sur le moteur et on va vers


propriétés, la liste des diagrammes apparait on va choisir une station
d’eau comme suivant:

FIGURE 29 : PROPRIETES DU DESCRIPTEUR

Apres on ajoute une barre pour connaitre le niveau d’eau dans la


station comme suivant :

FIGURE 30 : BARRE DE MESURE

24
On règle la barre de la manière suivante pour qu’une alarme déclenche
lorsqu’il y a beaucoup d’eau dans l’accumulateur ou bien le niveau
d’eau est minimiser :

FIGURE 31 : GONFIGURATION DE LA BARRE – ANALOGUE

FIGURE 32 : CONFIGURATION DE LA BARRE - CARTOGRAPHIE D'ATOME

25
FIGURE 33 : CONFIGURATION – CALCUL

FIGURE 34 : CONFIGURATION - PROPRIETES DE LA BARRE

26
Jusqu'à ici on a fini la modélisation de la station d’eau et on obtient la
forme suivant :

FIGURE 35 : RESULTAT DE MODELISATION

Pour simuler et contrôler cette station avec l’arduino et le capteur


ultrasons il suffit de televerser le programme (Annexe 2) vers la carte
et effectuer des testes à l’aide du capteur par la variation de la
distance.

27
4) SIMULATION ET REALISATION :
Pour visualiser le résultat sur IGSS SCADA, on a effectué des testes
par le capteur ultrasons et on a obtenu comme résultat le tableau
suivant :
Pas d’obstacle
devant le
capteur
(Niveau d’eau
minimale)
Un obstacle
peu loin du
capteur (il y’a
de l’eau dans
l’accumulateur
)
Un obstacle
proche du
capteur (
Niveau d’eau
maximale)
TABLEAU 5 : RESULTAT- REALISATION

28
CONCLUSION :

Ce Projet nous a permet d’approcher à la communication industrielle


et de comprendre le protocole Modbus par l’outil ModbusMAT 1.1 qui
nous a permet de savoir la structure des tames dans le protocole
modbus ainsi de réaliser une communication serie avec l’arduino
Mega, pour la deuxième application on a réalisé une station de
supervison d’eau sous un logiciel puissant qui est IGSS SCADA et de
contrôler le niveau d’eau à l’aide d’un capteur ultrasons et un arduino
uno par le prtocole modbus.

29
Bibliographie/Weboghraphie :

 Cours de Industrial communication – Mr KABBAJ Nabil


 https://fr.wikipedia.org/wiki/Modbus
 http://www.modbus.org/
 https://program-plc.blogspot.com/2015/05/communication-
between-scada-and-arduino.html
 http://ulasdikme.com/projects/arduino/Arduino_modbus_exa
mple.php *

30
Annexe :

Code Application IGSS :


#include <modbus.h>

#include <modbusDevice.h>

#include <modbusRegBank.h>

#include <modbusSlave.h>

modbusDevice regBank;

modbusSlave slave;

#define Trig 13

#define Echo 12

const float CmFactor = 29.0;

const float InFactor = 73.746;

void setup()

pinMode(Trig, OUTPUT);

pinMode(Echo, INPUT);

//Assign the Modbus Slave ID.

//Set in SCADA for IGSS node Number=1

regBank.setId(1);

//Add Analog Output registers 40001 & 40002 to the register bank

regBank.add(40001);

regBank.add(40002);

slave._device = &regBank;

// Initialize the baudrate serial port

// Set in SCADA: Baud rate=9600,Data bits=8,Stop bits=1,Parity=None,Flow control=None

slave.setBaud(9600);

void loop()

31
long durationMicroseconds, distanceCentimeters,distanceInches;

digitalWrite(Trig, LOW);

delayMicroseconds(2);

digitalWrite(Trig, HIGH);

delayMicroseconds(10);

digitalWrite(Trig, LOW);

durationMicroseconds = pulseIn(Echo, HIGH);

distanceCentimeters = (durationMicroseconds/2) / CmFactor;

distanceInches = (durationMicroseconds/2) / InFactor;

regBank.set(40001, (word) distanceCentimeters);

regBank.set(40002, (word) distanceInches);

slave.run();

delay(100);

32