PROTOCOLUL
MODBUS
5/25/2010
Protocolul MODBUS a fost publicat n 1979 de firma MODICON pentru
comunicaia cu automatele programabile produse de firm. La ora actual utilizarea
acestui protocol i construirea de sisteme nglobate care s comunice cu acest protocol nu
necesit drepturi de autor. Aproape toate implementrile realizate de diferite firme
reprezint variante ale standardului oficial. Protocolul MODBUS utilizeaz reprezentarea
Big-Endian pentru adrese i date.
Exist mai multe versiuni ale protocolului pentru portul serial i pentru Ethernet
sau pentru alte tipuri de reele.
Cele mai multe dispozitive MODBUS comunic pe o reea serial EIA-485 sau
EIA-232 ca mediu fizic. n acest caz exist dou variante: RTU(terminal la distanta) i
ASCII(codul American pentru schimb de informatii), cu diferene mici, n ceea ce
privete reprezentarea datelor i modul de realizare a verificrii erorilor de transmisie. n
modul RTU fiecare grup de 8 bii conine dou caractere hexazecimale, iar controlul
erorilor se face utiliznd polinoame ciclice (CRC). n modul ASCII fiecare grup de 8 bii
ai mesajului este transmis sub form de dou caractere ASCII, iar controlul erorilor se
face utiliznd coduri longitudinale (LRC). Avantajul modului RTU este densitatea mai
mare de informaie, iar avantajul modului ASCII este c este uor de citit.
Exist o variant mai recent pentru conexiuni TCP/IP (de exemplu, Ethernet).
Aceast variant nu necesit o verificare CRC sau LRC.
Caracteristici principale:
MODBUS RTU/ASCII
32 per canal(2x canale disponibile)
pn la 115,2 Kbps
MODBUS TCP/IP
64 secundar (utiliznd comunicaie cu funcie automat)
10/100 Mbaud
Modbus TCP / IP (de asemenea, Modbus-TCP) este pur i simplu protocolul
Modbus RTU cu o interfa TCP care ruleaza pe Ethernet.
2
Structura de mesagerie Modbus este protocolul aplicaie care definete
regulamentului de organizare i interpretare de date, independent mediu de transmisie al
datelor.
TCP / IP se refera la Transmission Control Protocol i Internet Protocol,
care
furnizeaza mediu de transmisie pentru Modbus TCP / IP de mesaje.
Pur i simplu , TCP / IP permite schimbare de blocuri de date binare ntre
calculatoare. Acesta este, de asemenea, o lume la nivel standard, care servete ca baza
pentru World Wide Web. Funcia primara a TCP-ului este de a a se asigura c toate
pachetele de date sunt primite in mod corect, n timp ce IP-ul se asigura c mesajele sunt
adresate si rutate in mod corect. Reinei c,acesta combinatie TCP / IP este doar un
protocol de transport, i nu defineste ceea ce nseamn datele sau modul n care datele
urmeaz s fie interpretate (aceasta este treaba protocolul de aplicare, Modbus, n acest
caz).
Modbus TCP / IP foloseste TCP / IP i Ethernet pentru a transporta date din
structura mesajelor Modbus ntre dispozitive compatibile. Modbus TCP / IP combin o
reea fizic (Ethernet), cu o reea standard (TCP / IP), precum i o metod standard de a
reprezenta date (Modbus ca protocolul de la cerere). n esen,mesajul Modbus TCP / IP
este pur i simplu o comunicare Modbus ncapsulata ntr-un invelis Ethernet TCP / IP. n
practic, Modbus TCP inglobeaza cadru standard de date Modbus ntr-un cadru TCP.
Modul de reprezentare al datelor i funciile realizate sunt identice pentru toate
cele trei protocoale de comunicare, numai modul de ncapsulare este diferit.
Modbus este transmis printr-o serie de linii ntre dispozitive. Cea mai simpl
configurare ar fi cu un singur cablu de conectare seriala intre cele doua porturi ale
dispozitivelor,un master si un slave.
Datele sunt transmise sub forma unei sir de unu i zero, numit bii. Fiecare bit este
expediat ca o tensiune. Zerourile sunt trimise ca tensiuni pozitive, iar 1 ca tensiuni
negative. Acesti Bii sunt transmisi foarte repede. O vitez de transmisie tipica este de
9600 baud (bii pe secund)
Exist o versiune extins, MODBUS Plus (MB+), care rmne de proprietate,
pentru firma MODICON. Pentru aceast variant este nevoie de un coprocesor dedicat s
se ocupe comunicaia de bii de tip HDLC. Viteza de comunicaie poate atinge 1 Mbit/s i
include transformatoare de izolare i interfee de conectare realizate la fiecare nod.
Fig. 1. Stiva de comunicaie MODBUS
Fiecare dispozitiv ce poate comunica pe MODBUS are o adres unic. n cazul
reelelor bazate pe portul serial i a reelelor MB+ numai un singur nod are calitatea de
Master poate iniia o comand, dar pe Ethernet, orice dispozitiv poate trimite o comand,
cu toate c, de obicei i aici, doar un Master face acest lucru.
Protocolul MODBUS, poziionat pe nivelul 7 in modelul OSI, furnizeaz
comunicarea Client/Server ntre dispozitive conectate la magistrale sau reele. Pentru
4
MODBUS pe seriala rolul clientului este furnizat de Master de pe magistrala seriala i
nodurile Slave care se comporta ca Server.
Protocolul MODBUS defineste structura mesajelor care sint vehiculate in retea,
respectiv descrie modul de recunoastere a unui tip de cerere lansata de catre master si
modul de executie si raspuns al deviceului slave pentru care ea a fost adresata.
Nivelul fizic. MODBUS pentru sisteme bazate pe
portul serial folosete diferite interfee fizice (RS 485,
RS 232). Interfaa EIA-485 (RS 485) Two-Wire este cea
mai comun. Ca o alta opiune, interfaa RS 485 FourWire poate fi de asemenea implementat. O interfa
seriala EIA-232-E (RS 232) poate fi de asemenea folosita
ca interfa, cnd este necesara numai comunicarea scurta
punct la punct.
Exist dou tipuri de codificri ale biilor n reelele seriale: NRZ i Manchester.
Nivelul legturii de date. n general nivelul legturii de date are dou roluri
importante: mprirea biilor n cadre i controlul erorilor. La reelele MODBUS
mprirea biilor n cadre se realizeaz la nivelul aplicaiei, iar controlul erorilor se
realizeaz prin detectarea acestora, utiliznd polinoame ciclice i apoi corecia prin
retransmisie, acest lucru fiind realizat tot la nivelul aplicaie.
Metoda de detecie a erorilor utiliznd polinoame ciclice (CRC-Cyclic
Redundancy Check) se bazeaz pe tratarea mesajului ca un singur cuvnt binar. Astfel un
mesaj care are n bii poate scris ca un polinom:
M m ( x ) a m 1 x m 1 a n 2 x n 2 a1 x a 0 ,
unde
x =2, iar
(1)
a i 1 , dac bitul este 1 i ai 0 , dac bitul respective este 0.
Dac se consider un polinom de gradul n:
Pn ( x) a n 1 x n 1 a n 2 x n 2 a1 x a 0 ,
(2)
prin mprirea mesajului M m (x ) , deplasat cu n cu poziii cu Pn ( x ) , se obine conform
teoremei mpririi cu rest:
M m ( x) x n
R ( x)
Q( x) n 1
,
Pn ( x)
Pn ( x)
(3)
unde Q( x) este ctul mpririi, iar Rn1 ( x ) este restul.
Dac informaia transmis pe linie va fi:
Tm n ( x) M m ( x) x n Rn 1 ( x)
(4)
i receptorul aplic algoritmul de mprire cu acelai polinom Pn ( x ) asupra informaiei
Tm n ( x ) se va obine:
"
n 1
Tmn ( x) M m ( x) x R ( x)
,
Pn ( x)
Pn ( x)
Pn ( x)
(5)
Sau, innd cont de (3):
Tm n ( x )
R ( x) Rn' 1 ( x )
Q ( x) n 1
Pn ( x )
Pn ( x)
(6)
Dac informaia transmis pe linie este corect, cele dou resturi Rn1 ( x ) i
Rn" 1 ( x)
sunt egale i suma lor va fi 0 (operaia de adunare binar este de fapt un
SAU EXCLUSIV).
Calculul prin program al CRC se desfoar dup urmtorul algoritm:
Pasul 1. Se ncarc registrul n care se calculeaz CRC, numit registru CRC cu
valoarea iniial. n cazul MODBUS i CRC 16 registrul se ncarc cu 0xFFFF;
Pasul 2. Se realizeaz XOR al primilor 8 bii ai mesajului cu octetul LSB al
registrului CRC i se memoreaz rezultatul n registrul CRC;
Pasul 3. Se deplaseaz la dreapta registrul CRC cu un bit. Se extrage i se
examineaz bitul rezultat prin aceast operaie;
Pasul 4. Dac bitul este 0, se repet pasul 3, n caz contrar se realizeaz XOR
dintre registrul CRC i polinomul generator (pentru MOBUS polinomul generator este
0xA001)i se memoreaz rezultatul n registrul CRC;
6
Pasul 5. Se repet paii 3 i 4 pn se realizeaz 8 deplasri;
Pasul 6. Se repet paii 25 pentru urmtorii octei ai mesajului.
MODUL DE TRANSMISIE SERIALA
Modul de transmisie seriala este de tip ASCII cu urmatorii parametri:
Rata de transmisie 9600baud
Biti de start 1,
Biti de date 7,( cel mai putin semnificativ transmis primul)
Biti de paritate 1,
Tip paritate para (Even)
Biti de stop 1
Tipul sumei de control LRC(Longitudinal Redundancy Check)
In modul de comunicatie ASCII un mesaj incepe cu caracterul :(cod
ASCII 3A Hex) si se termina cu grupul de caractere carriage return
line feed(CRLF cod ASCII 0D si 0A Hex).
Restul de caractere transmis pentru restul de cimpuri sint in format
hexagesimal respectiv 0.9 , AF.
Un mesaj este interpretat imediat ce este detectat caracterul : Intre
acest caracter si restul mesajului fara ca receptorul sa indice o eroare
de receptie este de maxim 1s.
Formatul tipic al unui mesaj cu acesta structura este:
START: 1 caracter :
ADRESA: 2 caractere
COD FUNCTIE: 2 caractere
DATE: n caractere
7
SUMA CONTROL LRC: 2 caractere
SFIRSIT: 2 caractere CR,LF
Numarul de RTU maxim in retea este limitat la 40 de unitati,
respectiv 40 de adrese diferite. Numarul maxim de functii diferite din
retea este 256.
Suma de control de tip LRC se calculeaza excluzand carcterul de
inceput: si caracterele de sfirsit mesaj , respectiv CR si LF. Suma
de control LRC are lungimea de un octet si este codificata ASCII pe
doua caractere. Calculul sumei se face prin adunarea succesiva a
fiecarui octet din mesaj neglijindu-se transportul de ordin superior
rezultatul astfel obtinut fiind convertit in coplement fata de 2 (repectiv
se scade suma obtinuta din 255 sau FF Hex si la acesta se aduna
valoarea 1.)
FUNCTII MODBUS IMPLEMENTATE PE SISTEMELE
DCX8500
In acest protocol toate adresele sint referite fata de 0 . Pentru a
activa iesirea numerica 1 adresa acesteia in functie este 0000.
Pentru a activa iesirea numerica 127 adresa acesteia in functie este
007E Hex (126 in zecimal).
In modul de transmisie ASCII fiecare octet este codificat ASCII prin
intermediul a doua caractere fiecare codificind un grup de 4 biti. Atat
bitii cit si caracterele sint aliniate la drepta(respectiv codificarea incepe
cu LSB in dreapta).
04 READ INPUT REGISTERS
Acesta functie citeste valoarea binara continuta intr-un registru
de 16 biti din slave, respective RTU(adresa de referinta 3X).
In cazul sistemelor DCX8500 acesta functie este folosita pentru
citirea celor 16 marimi de scrise mai sus.
In mesajul de interogare se specifica adresa primului registru si
numarul de registri [Link] sunt adresati incepand cu valoarea 0,
respectiv registri 1 ....16 au adresele 0....15.
Formatul mesajului de interogare in cazul in care se citesc
primele 4 intrari analogice (registri) din RTU avind adresa #17.
NUME CAMP
Adresa RTU
Cod Functie
Adresa de start HI
Adresa de start LO
Numar de intrari analogice HI
Numar de intrari analogice LO
Suma de control LRC
EXEMPLU in Hex.
11
04
00
00
00
04
1A
In mesajul de raspuns continutul unui registru este codificat intrun pachet de doi octeti, fiecare octet avind LSB in dreapta. Pentru
fiecare registru primul octet contine valoarea octetului superior iar al
doilea valoarea octetului inferior .
NUME CAMP
EXEMPLU in Hex.
Adresa RTU
11
04
08
00
00
Cod Functie
Numar de octeti transmisi
Date HI (intrarea analogica 1)
Date LO (intrarea analogica1)
Date HI (intrarea analogica12)
Date LO (intrarea analogica12)
Date HI (intrarea analogica1 3)
Date LO (intrarea analogica13)
Date HI (intrarea analogica1 4)
Date LO (intrarea analogica14)
Suma de control LRC
03
FF
00
F1
01
12
24
Valoarea intrarii analogice 1 este 00 00 in Hex sau 0 in zecimal
(valoare minima )
Valoarea intrarii analogice 2 este 03 FF in Hex sau 1023 in zecimal
(valoare maxima)
Valoarea intrarii analogice 3 este 00 F1 in Hex sau 241 in zecimal
Valoarea intrarii analogice 4 este 01 F1 in Hex sau 497 in zecimal
Avind in vedere ca numarul de octeti de date transmisi nu poate
depasi 255 numarul maxim de intrari analogice interogate intr-un ciclu
nu poate depasi 127. In cazul sistemelor DCX8500 numarul intrarilor
analogice este de maxim 16.
Modul MODBUS slave pentru comunicatie pe linie
seriala
Modulul MODBUS-S face posibila legarea controller-ului logic
programabil la un calculator host de pe nivelul ierarhic superior
folosind protocolul de comunicatie master/slave MODBUS.
PLC -Controllere logice programabile (Pogrammable Logic Controller)
10
Un PLC, este un mic computer cu un microprocesor folosit pentru automatizarea
proceselor cum ar fi controlul unui utilaj intr-o linie de asamblare. Programul unui PLC
poate adesea controla secvente complexe si de cele mai multe ori este scris de catre un
inginer. Ceea ce diferentiaza un PLC de alte computere este faptul ca este prevazut cu
intrari/iesiri catre senzori si relee. PLC-urile citesc starea comutatoarelor, a
indicatoarelor de temperatura, de pozitie s.a. PLC-urile comanda motoare electrice,
pneumatice sau hidraulice, relee magnetice. Intrarile/iesirile pot fi externe prin module
I/O sau interne.
PLC-urile au fost inventate ca o alternativa mai putin costisitoare la vechile
sisteme care foloseau zeci sau sute de relee si timere. Adesea un PLC poate fi programat
sa inlocuiasca sute de relee. PLC au fost initial folosite de industria constructoare de
masini.
La primele PLC-uri functiile decizionale erau implementate cu ajutorul unor
simple diagrame ladder (Ladder Diagram) inspirate de diagramele electrice ale
conexiunilor. Astfel electricienilor le era usor sa depaneze problemele de circuit avind
diagramele schematizate cu logica lader.
In prezent, linia ce delimiteaza un computer programabil de un PLC este tot mai
subtire. PLC-urile s-au dovedit a fi mai robuste, in timp ce computerele au inca
deficiente. Folosind standardul IEC 61131-3 acum este posibila programarea PLC
folosind limbaje de programare structurata si operatii logice elementare. La unele PLC
este disponibila programarea grafica denumita (Sequential Function Charts) bazata pe
Grafcet.
Modulul MODBUS se monteaza in sertarul echipat SE-111 al
controller-ului
logic
programabil
intr-una
din
cele
doua
pozitii
disponibile la stanga unitatii centrale.
Modulul MODBUS-S contine un canal de comunicatie seriala care poate
fi de tip RS-232, RS-422 izolat galvanic sau RS-485 izolat galvanic,
selectia intre ele facandu-se prin jumperi. Viteza de comunicatie este
11
data de configuratia unui switch care poate selecta doua trepte de
viteza: 9600, repectiv 19200 baud.
In cazul in care s-a selectat tipul de comunicatie seriala RS422/485 se pot conecta pana la 31 de module pe BUS-ul de
comunicatie, care poate avea o lungime de maxim 1200 m.
Adresa de MODBUS slave a modulului MODBUS-S se configureaza
printr-un switch, adresele permise fiind 0,1,31. Modulul MODBUS-S
contine o memorie FIFO bidirectionala prin care se efectueaza
transferul de date cu unitatea centrala a PLC-ului. In momentul in care
modulul MODBUS-S recunoaste un mesaj MODBUS valid (adresa de
slave a modulului coincide cu cea a mesajului si CRC-ul receptionat
este corect) copiaza mesajul in memoria FIFO si apon anunta unitatea
centrala ca are un mesaj MODBUS in memorie prin setarea unui bit in
cuvantl de stare.
Unitatea
centrala
preia
mesajul
din
memoria
FIFO,
il
interpreteaza si apoi copiaza raspunsul in memoria FIFO, dupa care
anunta modulul ca mesajul este prezent in memorie. Modulul preia
mesajul din memoria FIFO si il transmite pe canalul de comunicatie
catre calculatorul host care a efectuat cererea.
De asemenea, modulul mai contine o memorie RAM pentru backup de date cu salvare pe acumulator, de capacitate 64 kB in care
unitatea centrala poate memora anumite variabile, setari si alte
informatii care trebuie retinute si pe perioada in care modulul nu mai
este alimentat.
Pe panoul frontal al modulului se gasesc trei conectori DB tata
pentru conectarea la canalul de comunicatie, si anume: un conector
DB25 tata pentru conectarea la BUS-ul RS-232 si doi conectori DB9
tata necesari inserarii modulului intr-un BUS RS-422/485.
12
Tot pe panoul frontal se gasesc si opt diode luminiscente (LEDuri) care dau informatii asupra starii modulului, a BUS-ului de
comunicatie selectat si a traficului de date de pe BUS-ul respectiv.
Conexiunea interfetei gateway RS-422 pentru regulatorul PID
Yokogawa UT350 cu utilizarea de protocol Modbus RTU
Dispozitivele si accesoriile folosite:
-PID-regulator Yokogawa UT350-01 (Modbus RTU Slave);
-Convertor Anybus-Communicator Profibus * (AB7000);
-ABC Config Tool;
-Comunicare prin cablu RJ11-DB9 pentru conectarea Anybus-Com la computer
pentru configurare;
-Alimentarea puteri 24V DC/300MA (pentru Anybus-Com);
-PLC (PC), cu modul de Profibus * Master
Conexiunea dispozitivului Anybus-Com la Profibus Master
Se va folosi pentru exeplu regulatorul Yokogawa UT350, dar in loc de acest
model se poate folosi orice alt dispozitiv cu un port serial de comunicatie RS232/422/485.
Trebuie sa se realizeze urmatoarele actiuni prin reteaua Profibus pentru controlul
UT350:
-schimbarea valorii de setpoint (registrul 00D6, comanda MODBUS 0*06)
-se vor citi periodic valorile curente (registrul 0002, comanda 0*03)
-citirea valorii unui semnal (registrul 0004, comanda 0*03)
13
Sistemul schimbului de date intre retele si Modbus Profibus
Configurarea convertorului Anybus-Com pentru functionarea ca MODBUS RTU
Master
1. Un port serial de conversie este conectat la regulatorul UT350, si se configura
portul la calculator. Curentul continuu de alimentare este necesar pentru un
convertor 24B/300MA. Se inncepe programul ABC Config Tool. Daca
conexiunile au fost facute in mod corect dupa alimentarea cu energie, ABC
14
Config Tool automat va converti conectoarele si va defini tipul de domeniul (in
acest caz este Profibus).
2. Dupa acesta, se lucrezeaza direct la configurarea Modbus. In mod implicit deja exista
un singur dispozitiv se va redenumi in UT350.
15
3. In continuare se trece la un nivel superior (sub-Network) si se vor ajusta parametri
seriei de comunicare: interfata RS-422, 9600 biti/secunda, 8 biti, fara paritate verificata, 1
bit de stop. Pentru parametri Message delimiter (Max. Time Between transactions) este
recomandat a fi lasati egali cu 0 (valoarea 0 se specifica, in conformitate cu
specificatiile Modbus si stabileste timpul corespunzator de transfer de 3,5 secunde).
16
4. Adaosul de comenzi. Se face click pe butonul dreapta al mouse-ului pe dispozitivul
UT350 si punctul Add Command este ales din meniul aparut.
Setpoint --> comanda 006 >comanda Preset Single register.
17
5. Este necesar sa se adapteze trimiterea informatiilor (Query) de Modbus Master >
click cu mouse-ul pe Query > necesare pentru ajustarea domeniilor. Informatiile ar
trebui sa fie trimise numai la valoarea setpoint de schimbare a operatorului de la grupul
Profibus, prin urmare, la punctul Update modul se alege valoarea On data change. In
domeniul Retries se stabileste valoarea 4 (cantitatea de incercari de comunicare cu
aparatul inainte de expirare), in Reconnect time.
18
6. Se specifica adresa registrului utilizar in memorie UT350 (00D6). In acest scop
informatiile de la stanga sunt adaugate in Register si in dreapta in domeniul Value se
specifica adresa 000D6.
19
7. Se defineste acest registru de memorie Anybus-Com pentru a-i corespunde zonei de la
adresa 00202 (Data location) si lungimea de 2 octeti (Data length). Pentru introducerea
de aceste valori, este necesara alegerea parametrilor Preset Data la axa informatiilor.
Zona de memorie a unui gateway 00200 003FF este luat in conformitate cu datele de
iesire (Out Area). Adresa 00200 si 00201 in mod implicit este deja utilizata de
registrele (de control) si statutul (Stare).
20
8. Se prelucreaza raspunsul primit de la Modbus (Response). Acest raspuns serveste doar
la confirmarea de primire si nu contine informatii utile. Se fac aceleasi actiuni cu exceptia
faptului ca pentru introducerea de date generale acceptate in memorie de la convertor,
este aleasa adresa initiala 00400. Zona de memorie cu adresa de mai sus 00400 este
locala si aceste date nu vor fi vizibile mai mult de la Profibus.
21
9. In mod similar se descriu doua comenzi cititoare Modbus (003). In acest scop se
foloseste zona de memorie gateway 00000 001FF care este luata in conformitate cu
introducerea de date (in zona). In mod implicit, in adresa 0000 si 00001 sunt deja
folosite registrele de control (Control), precum si statutul (Stare). In cazul citirii valorii
unui semnal tinta (OUT) este stabilit in Query/Starting address valoarea 00004
(registrul adresei UT350). S-a citit doar un registru Namber of point este stability
00001, cantitatea specificata acceptata de bit [Link] count 002, si este
specificata adresa corespunzatoare si memoria de date Anybus-Com: Data location
00004, Data lenght 00002. Pentru a primi o valoare toate PV se fac la fel, doar in
Query/Starting address este specificat 00002 si in Data location 00002.
22
10. Avand apasat butonul Sub-network Monitor din control panel, se poate observa
distributia de memorie intr-un grafic Anybus-Com.
23
11. Este necesar sa se pastreze doar pe computer fisierele create si configurate pentru a fi
incarcate in convertor. In cazul in care toate conexiunile sunt facute in mod corect,
programul ar trebui sa functioneze in modul on-line (in coltul din dreapta jos indicatorul
de culoare verde), incarcare butonul Download to ABC iar daca panoul de control este
activ este necesat doar a fi apasat. In cazul de lipsei de comunicare cu convertorul
(indicator rosu) trebuie verificata corectitudinea conexiunii, sursa de alimentare si
disponibilitatea COM-portului (unele programe de pornire pot bloca accesul la COMport).
Pentru functionarea convertorului Anybus-Com este necesara initierea de catre operator a
retelei Profibus (in caz de utilizare a registrelor de Management si Status). In acest scop,
24
este necesar sa se stabileasca incepand cu bit-ul CR_DV in registrul de operare 0000.
Dupa aceasta Anybus-Com va incepe sa transforme datele conform configurarii de
incarcare.
Urmatorul exemplu de retea industriala utilizeaza protocolul ModBus
([Link] protocol
se bazeaza pe schimbul de mesaje intre dispozitivele conectate in retea. Protocolul
specifica formatul mesajelor de interogare si de raspuns. Din acest punct de vedere poate
fi catalogat ca si un protocol de nivel 2 (Legatura de date). Datorita simplitatii sale,
protocolul a fost adoptat de mai multe firme producatoare de echipamente de
automatizare.
Ca suport fizic (Nivel fizic) se poate folosi un canal serial de comunicatie, cum ar fi
de exemplu RS485. Standardul RS485 permite transmiterea de caractere in regim
asincron pe o pereche de fire torsadate. Informatia binara este codificata prin diferenta de
potential pozitiva sau negativa dintre cele doua fire de transmisie. Pe acelasi tronson pot
fi conectate in paralel pana la 16 unitati de transmisie/receptie. Protocolul impune ca la
un moment dat o singura unitate sa transmita restul unitatilor fiind in regim de ascultare
(cu circuitul de transmisie in inalta impedanta).
Intr-o retea de tip ModBus exista o unitate master care initiaza o comunicatie si mai
multe unitati slave (max. 247) care primesc date si raspund la interogari. Unitatea master
stabileste ordinea de comunicare in retea si frecventa de transmisie a datelor. Formatul
general al unui mesaj ModBus este dat in fugura de mai jos:
Codul
Adresa
Bloc de date
CRC
functiei
dispozit
iv
Sunt definite mai multe tipuri de functii (mesaje), dupa cum urmeaza:
Cod functie
Descriere
01
Citire stare relee (coil status)
02
Citire stare de intrare
03
Citire registre de memorare (holding registers)
04
Citire registre de intrare
05
Fortarea unui releu (single coil)
06
Setarea unui singur registru
07
Citirea starii de exceptie
25
15
Fortarea mai multor relee (multiple coil)
16
Setarea mai multor registre
17
Raporteaza ID slave
In continuare vor fi detaliate functiile de Citire registru de memorare (cod 03) si
Setarea unui singur registru (cod 06), care se vor utiliza in cadrul aplicatiei practice.
Structura acestor mesaje precum si a raspunsurilor este data mai jos:
Citire registru de memorare (Cod 03):
Adresa
Codul
Adr. reg
dispozit functiei
High
slave
(03)
Raspunsul la functia 03
Adresa
dispozit
slave
Codul
functiei
03
Adr. reg
Low
Nr. reg.
High
Nr. reg.
Low
Nr. octeti Adr. start
Low
returnati
Reg. 1
High
Reg. 1.
Low
CRC
CRC
Setarea unui registru (Cod 06):
Adresa
Codul
Adr. reg
dispozit functiei
High
slave
06
Raspunsul la functia 06
Adr. reg
Low
Nr. reg.
High
Nr. reg.
Low
CRC
Adresa
dispozit
slave
Adr. reg
Low
Reg.
High
Reg.
Low
CRC
Codul
functiei
03
Adr. reg
High
In cadrul lucrarii se va utiliza sistemul de achizitie a informatiilor de temperatura si
umiditate TRS produs de firma SIMEX Measurement and Control. O descriere mai
detaliata a acestui sistem se gaseste in anexa [Link]. Figura de mai jos
prezinta principalele componente ale acestui sistem:
RS232
ModBus/RS485
26
calculator personal pe care ruleaza aplicatia de culegere si vizualizare a datelor
Piggy System
modul (master) de conversie RS232<=>RS485 si stocare temporara a datelor;
modulul asigura achizitia de date si in lipsa calculatorului personal; in prezenta
calculatorului modulul joaca doar rol de convertor RS232<=>RS485 SRS-2/4z16-B1a
modul (slave) pentru masurarea temperaturii TRS-01a
modul (slave) combinat pentru masurarea temperaturii si a umiditatii TRS-04a
modul (slave) pentru masurarea si afisarea temperaturii TRS-11a
modul (slave) pentru semnalizarea sonora si vizuala a unei avarii TRS-B1a
modul (slave) pentru afisare
modul pentru alimentare suplimentara
Conectarea dispozitivelor intr-o retea ModBus/RS485 se va realiza conform schemei de
mai jos:
SRS
+V A+ B- GND
TRS-xx
TRS - xx
3
+V A+ B- GND
....
+V A+ B- GND
A+
A+
100
-150
B-
B-
Pentru punerea in functiune a fiecarui modul in parte si a sistemului in ansamblu se
va studia documentatia existenta pe CD-ul de instalare a sistemului
In tabelul de mai jos se prezint un exemplu de organizare a registrelor interne ale
modulului de masurare si afisare a temperaturii TRS-11a; pentru citirea si scrierea
celorlalte module se va consulta manualul de utilizare al acestora.
Nr.
reg.
01h
02h
Scriere
permisa
NU
NU
03h
04h
NU
DA
05h
Interval
-40 - 850
0, 20h,
40h, 80h
1
0-5
Descriere registru
Temperatura curenta (exprimata in 0,1C)
Starea masurarii curente (coduri de eroare)
pozitia punctului zecimal 1=0,0
Rata de filtrare a semnalului (0 fara filtrare, 1 slab
filtrare slaba, 5- filtrare puternica)
Registru de calibrare;A NU SE SCHIMBA
27
20h
21h
0fff0h
0fff1h
0fff2h
0fff3h
0fff4h
DA
NU
NU
0-ffh
006ch
NU
NU
NU
006ch
Adresa dispozitiv (din fabricatie vine setat cu 0feh)
Numar Serie unic
Cod de identificare dispozitiv (Device ID)
Versiune firmware
Numar constructie
De exemplu pentru citirea valorii curente a temperaturii se transmite urmatorul mesaj de
interogare:
Adresa
Functia
Nr. registru H,L
Numar registre
CRC
01
03
00
01
00
01
D5
CA
Raspunsul modulului va fi:
Adresa
Functia Nr. octeti
01
03
02
Data H,L
00
CRC
ff
F8
04
Valoarea temperaturii citite este 25,5C (0ffh=255*0,1C).
In caz de eroare raspunsul va fi de forma:
Adresa
Functia
Eroare
CRC L,H
01
83
40
40
C0
Eroarea 40h limita de jos a domeniului de masura este depasita.
Pentru fiecare mesaj transmis trebuie sa se calculeze CRC-ul (cod ciclic redondant).
La receptie CRC-ul se recalculeaza si se compara cu valoarea transmisa. In acest mod se
verifica corectitudinea datelor transmise. Pentru calcularea manuala a codului CRC se
poate folosi urmatorul site: [Link]
28