You are on page 1of 8

Rseau Modbus

PRESENTATION DES MODULES MODBUS

Le protocole de communication Modbus de Gould Modicon (actuellement division de Schneider Electric/Tlmcanique, 1er constructeur mondial d automates! est un rseau de t"pe ma#tre$esclave tr%s rpandu au point qu&il n&e'iste quasiment aucun constructeur de s"st%mes de pilota(e d&automatismes qui ne propose de coupla(e Modbus) *ans la pratique, Modbus permet d&interconnecter des matriels aussi htro(%nes que des +utomates ,ro(rammables -ndustriels (+,-!, des variateurs de vitesse pour moteurs, des capteurs, des terminau' d&atelier intelli(ents, des calculateurs) .e protocole est caractris par une /orme et un contenu de messa(es simples et universels ainsi que la possibilit de s&utiliser sur une liaison srie aussi rpandue que la RS010.) Modbus est donc un outil pda(o(ique de tout premier plan pour qui s&intresse au niveau trame)

I Le principe de Modbus
a) Architecture du rseau Modbus Le rseau Modbus est un rseau compos d un seul Ma#tre et d Esclaves, qui communiquent par une liaison srie as"nchrone2
COMMUNICATION SERIE

ESCLAVES MAITRE

Le support lectrique de la liaison srie suit une des deu' normes courantes) La liaison t"pe RS010 (3104,$104!, la seule disponible sur ,., n est utilisable que dans le cas d un rseau avec un seul esclave) .ette liaison sera utilise pour l initiation au /onctionnement du rseau)

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

*ans le cas d un rseau rel, la liaison est bidirectionnelle sous la norme RS678 (9$84 di//rentiel, disponible sur Mac! ) ,our envo"er un messa(e sur la li(ne, le Ma#tre :prend la parole:(en activant le si(nal :RTS: du port srie!, c est ; dire impose le niveau lo(ique sur la liaison avec un driver 1 tats, uniquement pendant l envoi de son messa(e) Les esclaves re<oivent le messa(e, et mettent une rponse en prenant la li(ne ; leur tour) Etant donn qu il ne peut " avoir qu un esclave qui rponde ; un messa(e, il n " pas de collision sur le rseau Modbus, sau/ en cas d erreur de paramtra(e)

La liaison di//rentielle comprend 1 /ils 2 le si(nal 3 , le si(nal $ et la masse) Elle permet des transmissions peu sensibles au' ra"onnements lectroma(ntiques, sur une distance pouvant atteindre plusieurs centaines de m%tres) b) Dialogue Matre-Escla e et tra!es Le dialo(ue sur un rseau M=*>5S est tou?ours ; l&initiative du ma#tre) .e dernier proc%de en posant une question (ou en donnant un ordre! ; un esclave particulier qui en retour lui /ournit la rponse ; la question (ou la con/irmation de la bonne e'cution de l&ordre!) Les trames question et rponse sont envo"es sous la /orme de cha#nes de caract%res, lesquelles reprennent l&adresse de l&esclave, un numro de code /onction et le paramtra(e de cette derni%re) *ans une trame Modbus +S.--, chaque octet est reprsent sous la /orme des codes +S.-des caract%res qui le reprsentent) ,ar e'emple, l&octet 99999119 soit 9'60 sera transmis sous la /orme de la cha#ne @60& correspondant au' codes des chi//res 6 et 0) *&une mani%re (nrale, une trame (/i(ure 0! est la concatnation des lments suivants 2 EntAte 2 : +dresse de l&esclave (9'91))9'B7! 2 01..F8, Cumro de la /onction (9'91))9'9D! 201..06, *onnes) Contenu et taille variable suivant la fonction) =ctet de vri/ication de la trame ou LR.7 (9'99))9'BB! calcul depuis les valeurs adresse de l&esclave, numro de /onction et champs de donnes 2 00..FF) 5n dlimiteur de /in constitu des caract%res .arrier Return (9'9*! et Line Beed (9'9+!) *ans l&e'emple ci$dessous, le ma#tre demande ; l&esclave 96 de mettre sa sortie d&adresse 9 ; l&tat lo(ique E 1 F
Entte " carac ) Adresse Esclave # caract$ *+ Code Fonction # caract$ *, Donnes N%# caract$ ****((** LRC # caract$ (Dlimiteur Retour Chariot CR &i'e (eed &(

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

II - Les modules entres-sorties Modbus


a) .rse'tatio' /h0si1ue Les modules sont architecturs autour d un microcontrGleur moderne +tmel R-S., dot d une mmoire pro(ramme de 1H mots et d une mmoire Blash de 107 octets) .es modules (%rent 6 entres lo(iques (9$84! et 6 sorties lo(iques) Gnd
'(3

S6

S1

S0

S1

! 3 4
'()

'(4 '(!
! 3

'(
!

v6
!

v1

v0

v1

r v

&C ATMEL

4 3

"#$
Gnd
Co''ecteurs ) '(! * t+,e de liaison srie -RS 3 C * !. / RS40) * .31 '( * modi2ication adresse esclave -!. 1 '(3 * alimentation 3V 4 '(4 * ,rise rseau RS40) -5Vcc * !/ 6 5a 7 * / 6 .a 7 * 3/ '() * ,rise communication RS 3 C

E'tres ) E!/ E / E3/ E49 -actives : l;tat <as19 Utilisation possible par les poussoirs 1 4 -attention/ l=adressa8e des entres est de # : 31 Sorties ) S!/ S / S3/ S4 -actives : l;tat <as1 -attention/ l=adressa8e des sorties est de # : 31 2isualisatio' des sorties ) v!/ v / v3/ v4 -allumes : l;tat <as1 2isualisatio' de l3acti it ) R$ * rou8e/ T$ * vert -s=allume lors de l=envoi de la r,onse1 MA4#5# ) conversion des si8nau$ RS 3 -R$ * !3/ T$ * !41 > TTL -R$ * ! / T$ * !!1 6C ATME& ) c?ur de l;esclave Reset ) initialisation du module Adresse escla e ) "@$ -autocollant sur la ,latine1

-ls poss%dent une :intelli(ence: locale qui o//re de nombreuses /onctionnalits supplmentaires2
suppression

des rebonds d entre dtection de /ronts compta(e de /ronts))) .es modules peuvent chan(er des donnes du t"pe >it ou du t"pe Mot 1Dbits (protocole de base Modbus!)
5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

MA% 3

RESET

E6

E1

E0

E1

8nd * 41

Rseau Modbus

b) S/ci7icatio's tech'i1ues des !odules MOD8US


Co!!u'icatio' ) 1I,0 Jb/s , 7 bits de donnes, 1 bit de stop, aucun bit de parit pas de contrGle de /lu' T0/es de liaiso's ) RS010. RS678 (or!at des tra!es ) +S.-(o'ctio's reco''ues ) 9'91 lecture de n bit(s! de sortie conscuti/(s! 9'90 lecture de n bit(s! d&entre conscuti/(s! 9'91 lecture de n re(istre(s! internes 9'96 lecture de n re(istre (s! d&entre 9'98 criture d&un bit de sortie 9'9D criture d&un re(istre interne Codes d3erreur des tra!es d3e9ce/tio' ) 9'91 code /onction non autoris sur l&esclave 9'90 adresse (entre, sortie, re(istre! ill(ale sur l&esclave 9'91 valeur(s! du champ de donnes non valide(s! E'tres ) Sorties ) 6 (9'99))9'91! Kattention au dcala(e entre les nLentre et les poussoirsM 6 (9'99))9'91!

Registres i'ter'es ) 7 re(istres (9'9999))9'999N! 9'9999 2 dtection d&un /ront montant sur les entres 9'9991 2 dtection d&un /ront descendant sur les entres 9'9990 2 compta(e entre 1 sur /ront montant 9'9991 2 compta(e entre 0 sur /ront montant 9'9996 2 compta(e entre 1 sur /ront montant 9'9998 2 compta(e entre 6 sur /ront montant 9'999D 2 temporisation anti$chevauchement questions/rponses (ms! 9'999N 2 adressa(e de l&esclave (/onction inoprante sur la version actuelle du microcontrGleur!

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

Annexes 1 - Principales fonctions MODBus


Ce sont donns ci$apr%s que les /onctions qui peuvent Atre utiles pour /aire /onctionner les modules ),our chacune d entre$elles, seuls sont spci/is les param%tres du champ de donnes) -l est ; noter que les adresses de base des entres, des sorties et des re(istres commencent ; 9999 )
*9*# ) lecture de ' bit:s) d3e'tre co'scuti7:s)
Re1u;te du !atre )
Cha!/s de Do''es Adresse "ere e'tre @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ No!bre d3e'tres < lire @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

R/o'se de l3escla e )
Cha!/s de Do''es Aom<re d;octets Buit ,remiCres entres '># caract$ = # caract$ '>" Buit entres suivantes '>"? = # caract$ '>@ # caract$ =

*9*, ) criture d3u' bit de sortie :bobi'e)


Re1u;te du !atre )
Cha!/s de Do''es Adresse de la sortie @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ Etat A " B ) ((** Etat A * B )**** @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

R/o'se de l3escla e )
Cha!/s de Do''es Adresse de la sortie @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ Etat A " B ) ((** Etat A * B )**** @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

*9*5 ) lecture de ' registre:s) i'ter'es


Re1u;te du !atre )
Cha!/s de Do''es Adresse "er registre @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ No!bre de registres < lire @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

R/o'se de l3escla e )
Cha!/s de Do''es Aom<re N de re8istresD # caract$ !er re8istre 2ort>2ai<le + caract$ eme re8istre 2ort>2ai<le + caract$ = + caract$

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

*9*? ) criture d3u' registre i'ter'e


Re1u;te du !atre )
Cha!/s de Do''es Adresse du registre @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ Do''e "? bits @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

R/o'se de l3escla e )
Cha!/s de Do''es Adresse du registre @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$ Do''e "? bits @ctet de ,oids 2ort # caract$ @ctet de ,oids 2ai<le # caract$

,our toute in/ormation complmentaire, consulter le site mod<us9or8

Annexe 2 - alcul du L!
Le LR. est l autocontrGle de la consistance du messa(e) 5ne erreur de transmission conduit ; une incohrence du messa(e (lobal) Le LR. est calcul sur la valeur des octets du messa(e , hors le dlimiteur de dbut 2 et ceu' de /in (.RLB! ) . est le complment ; 0 de la somme 7 bits (ou modulo 08D! des valeurs (nLesclave, /onction, data! ) Le calcul pratique du LR. se /ait par 2
S 4 -nEesclave 5 2onction 5 data1 F )G S4HS S4S5!

Le contrGle de validit se /ait par 2


-nEesclave 5 2onction 5 data 5 LRC reIu1 4 #$##

E'emple2
esclave 2onction MSJ adresse LSJ adresse MSJ data LSJ data LRC Total #$#! #$#) #$## #$#! #$FF #$## #$FA #$ ## soit #$## modulo )G citure <it nE! valeur d=criture

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

Annexe " - Dialo#ue Modbus par pro#rammation en lan#a#e


Le lan(a(e .$+nsi pas plus les versions initiales de OindoPs ne prvoient la commande des priphriques d un ,.) -l /aut /aire appel ; une biblioth%que e'ternede /onctions) ,armi les solutions possibles, nous pouvons citer 2 la (estion du port srie par e'tension des structures de /ichiers (create/ile(!,)))! accessible depuis OindoPs CT6 (et version suprieures!Q cette solution ne demande aucune licence supplmentaire) ,our /aciliter son usa(e, il e'iste de nombreuses implantations disponibles sur le Cet (PPP)cpp/rance)com par e'emple!) la biblioth%que +ctiveR Microso/t :Mscomm: soumise ; licence et peu documente pour un usa(e en . (voir site MS*C! Q elle prsente l avanta(e de (rer le port par messa(es (Sinterruption en assembleur! et donc de librer le temps processeur pour d autres activits) la biblioth%que Marshall So/t prsente sur le march depuis les premiers ,. et qui poss%de une tr%s bonne documentation (en an(laisT!) Son usa(e est libre en ensei(nement) E'emple d utilisation de la biblioth%que OS. pour envo"er un messa(e Modbus 22
Kinclude LMindoMs9NO Kinclude Lstdio9NO Kinclude PMsc9NP void main-void1 Q int SioRErrS cNar messa8eT 3U 4 P*macNaineNe$adecimaleVrVnPS >> remarWuer la s+nta$e C ,our le Cr et le LF >> o,en C@M! SioRErr 4 SioReset-C@M!/!# 4/!# 41S SioRErr 4 SioRErr 5 SioJaud-C@M!/ XSCRJaud!3 ##1S SioRErr 4SioRErr 5 Sio(arms-C@M!/XSCRAo(arit+/XSCR@neSto,Jit/XSCRXordLen8tN01S i2 -SioRErr L #1 Q >> dis,la+ error messa8e ,rint2-PErreur communication serie Yd * P/SioRErr1S Z else Q >> set RTS ,rint2-PSettin8 RTSVnP1S SioRTS-C@M!/=S=1S Sio(uts-C@M!/ -L(STR1 messa8e / 31S SioRTS-C@M!/=C=1S ,rint2-PLe ,ro8ramme est termine9VnP1S Z >> close ,ort SioDone-C@M!1S Z >D end main D>

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

Rseau Modbus

Annexe $ - Principales fonctions de la Bibliot%&'ue ()


int SioJaud- int C@M$/unsi8ned JA[DS 1 int SioFloM- int C@M$/cNar 1 int SioIn2o- XSCRVERSI@A1 int Sio\etc- int C@M$ 1 Sets tNe <aud rate o2 tNe selected ,ort -use de2ined values1 Ena<les > disa<les NardMare 2loM control9 Returns tNe 3 di8it version num<er Reads tNe ne$t cNaracter 2rom tNe serial line9 XSCRA@RDATA -.!##1 is returned i2 no <+te is availa<le) int Sio\ets - int C@M$/ -L(STR1 Strin8R(ointer / unsi8ned Ma$RCnt1 int Sio(arms - int C@M$ / int (arit+ / int Sto,RJits / int Len8tN1 int Sio(utc - int C@M$ / cNar Messa8e1 int Sio(uts - int C@M$/-L(STR1 StrR(ointer / unsi8ned Aum<erRo2RCNaracters1 int Err SioReset - int C@M$ / int Ju22erRR% / int Ju22erRT% 1 Reads a strin8 o2 cNaracters9 TNe Sio\ets 2unction reads tNe smaller o2 tNe num<er o2 <+tes Manted -Ma$RCnt1 and tNe num<er o2 <+tes in tNe receive <u22er9 A ]ero is returned i2 no <+tes are read9 Sets ,arit+/ sto, <its/ and Mord len8tN9 Transmit a cNaracter over a serial line9 Transmits a strin8 o2 cNaracters9 TNe SioReset 2unction initiali]es -o,ens1 tNe selected serial ,ort9 SioReset sNould <e called <e2ore ma^in8 an+ otNer calls to XSC e$ce,t 2or settin8 de2ault <eNavior -,ort4.!19 SioReset uses tNe ,arit+/ sto, <its/ and Mord len8tN value ,reviousl+ set i2 Sio(arms Mas called/ otNerMise tNe de2ault values -!3 ##/ no ,arit+/ 0 data/ ! sto,1 are used9 Sets/ clears/ or reads tNe ReWuest to Send -RTS1 Clears tNe receive <u22er9 Returns tNe num<er o2 cNaracters in tNe R% Wueue9 Returns tNe serial ,ort line status9 Clears tNe transmit <u22er9

int SioRTS - int C@M$/ =C= or =R= or =R=1 int SioR$Clear - int C@M$ 1 int SioR$_ue - int C@M$1 int SioStatus - int C@M$ /unsi8ned StatusRMas^1 int SioT$Clear - int C@M$1

Le premier param%tre des /onctions est tou?ours le numro de port utilis (.=M1 ou .=M0! */initions utiles
Kde2ine C@M! # Kde2ine C@M ! Kde2ine XSCRAo(arit+ # Kde2ine XSCRTMoSto,Jits Kde2ine XSCRXordLen8tN0 0 Kde2ine XSCRJaud3G## ) Kde2ine XSCRJaud!3 ## G

.onsulter le site http2//PPP)marshallso/t)com pour plus de dtails)

Annexe * - Pro#ramme de con+ersion Ascii-,exadcimal


E'emple de /onctions utiles pour dvelopper un pro(ramme de dialo(ue en lan(a(e . )
unsi8ned cNar asciiRNe$- cNar tem,1 Q tem, 4 tem, . =#=S i2 -tem, L # 1 Qr$Rerr `4 #$#4 S tem, 4 3#SZ i2 -tem, O #$#31 >> A/ J9999 Q tem, F4 #$DFS >> 2orca8e maauscule tem, 4 tem, . #$#bS i2 -tem, O =F=1 Q r$Rerr `4 #$#4 S tem, 4 3#SZ Z return tem,S Z unsi8ned cNar Ne$Rascii-unsi8ned cNar tem,1 Q i2 -tem,L# 1 ` -tem,O!)1 err 4 !S tem, 4 -tem, F #$#F1 5 =#=S i2 -tem, O =3= 1 tem, 54 #$#b S return tem,S Z

5STL $ Master +SE M0 $ S"st%mes d -n/ormation pour l -ndustrie

You might also like