Post on 06-Feb-2016
description
transcript
Protocolul MODBUS a fost publicat în 1979 de firma MODICON pentru
comunicaţia 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 implementările 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 reţele.
Cele mai multe dispozitive MODBUS comunică pe o reţea 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 diferenţe mici, în ceea ce
priveşte reprezentarea datelor şi modul de realizare a verificării erorilor de transmisie. În
modul RTU fiecare grupă de 8 biţi conţine două caractere hexazecimale, iar controlul
erorilor se face utilizând polinoame ciclice (CRC). În modul ASCII fiecare grupă de 8
biţi ai mesajului este transmisă sub formă de două caractere ASCII, iar controlul erorilor
se face utilizând coduri longitudinale (LRC). Avantajul modului RTU este densitatea mai
mare de informaţie, iar avantajul modului ASCII este că este uşor 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
o 32 per canal(2x canale disponibile)
o până la 115,2 Kbps
MODBUS TCP/IP
o 64 secundar (utilizând comunicaţie cu funcţie automată)
o 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 aplicaţie care defineşte
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 serveşte ca baza
pentru World Wide Web. Funcţia 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. Reţineţi 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
reţea fizică (Ethernet), cu o reţea 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 funcţiile 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.
3
Datele sunt transmise sub forma unei sir de unu şi zero, numit biţi. Fiecare bit este
expediat ca o tensiune. Zerourile sunt trimise ca tensiuni pozitive, iar 1 ca tensiuni
negative. Acesti Biţi sunt transmisi foarte repede. O viteză de transmisie tipica este de
9600 baud (biţi pe secundă)
Există o versiune extinsă, MODBUS Plus (MB+), care rămâne de proprietate,
pentru firma MODICON. Pentru această variantă este nevoie de un coprocesor dedicat să
se ocupe comunicaţia de biţi de tip HDLC. Viteza de comunicaţie poate atinge 1 Mbit/s şi
include transformatoare de izolare şi interfeţe de conectare realizate la fiecare nod.
Fig. 1. Stiva de comunicaţie MODBUS
Fiecare dispozitiv ce poate comunica pe MODBUS are o adresă unică. În cazul
reţelelor bazate pe portul serial şi a reţelelor MB+ numai un singur nod are calitatea de
Master poate iniţia 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, poziţionat pe nivelul 7 in modelul OSI, furnizează
comunicarea Client/Server între dispozitive conectate la magistrale sau reţele. Pentru
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.
4
Nivelul fizic. MODBUS pentru sisteme bazate pe
portul serial foloseşte diferite interfeţe fizice (RS 485,
RS 232). Interfaţa EIA-485 (RS 485) Two-Wire este cea
mai comună. Ca o alta opţiune, interfaţa RS 485 Four-
Wire poate fi de asemenea implementată. O interfaţă
seriala EIA-232-E (RS 232) poate fi de asemenea folosita
ca interfaţă, când este necesara numai comunicarea scurta
punct la punct.
Există două tipuri de codificări ale biţilor în reţelele seriale: NRZ şi Manchester.
Nivelul legăturii de date. În general nivelul legăturii de date are două roluri
importante: împărţirea biţilor în cadre şi controlul erorilor. La reţelele MODBUS
împărţirea biţilor în cadre se realizează la nivelul aplicaţiei, iar controlul erorilor se
realizează prin detectarea acestora, utilizând polinoame ciclice şi apoi corecţia prin
retransmisie, acest lucru fiind realizat tot la nivelul aplicaţie.
Metoda de detecţie a erorilor utilizând polinoame ciclice (CRC-Cyclic
Redundancy Check) se bazează pe tratarea mesajului ca un singur cuvânt binar. Astfel un
mesaj care are n biţi poate scris ca un polinom:
(1)
unde =2, iar , dacă bitul este 1 şi , dacă bitul respective este 0.
Dacă se consideră un polinom de gradul n:(2)
prin împărţirea mesajului , deplasat cu n cu poziţii cu , se obţine conform teoremei împărţirii cu rest:
(3)unde este câtul împărţirii, iar este restul.Dacă informaţia transmisă pe linie va fi:
(4)
Şi receptorul aplică algoritmul de împărţire cu acelaşi polinom asupra informaţiei se va obţine:
5
(5)Sau, ţinând cont de (3):
(6)
Dacă informaţia transmisă pe linie este corectă, cele două resturi şi
sunt egale şi suma lor va fi 0 (operaţia de adunare binară este de fapt un
SAU EXCLUSIV).
Calculul prin program al CRC se desfăşoară după următorul algoritm:
Pasul 1. Se încarcă registrul în care se calculează CRC, numit registru CRC cu
valoarea iniţială. În cazul MODBUS şi CRC 16 registrul se încarcă cu 0xFFFF;
Pasul 2. Se realizează XOR al primilor 8 biţi 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ă operaţie;
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;
Pasul 5. Se repetă paşii 3 şi 4 până se realizează 8 deplasări;
Pasul 6. Se repetă paşii 2…5 pentru următorii octeţi ai mesajului.
MODUL DE TRANSMISIE SERIALA
Modul de transmisie seriala este de tip ASCII cu urmatorii parametri:
Rata de transmisie 9600baud
6
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 , A……F.
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
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
7
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 cititi.Registri sunt adresati incepand cu valoarea 0,
respectiv registri 1 ....16 au adresele 0....15.
8
Formatul mesajului de interogare in cazul in care se citesc
primele 4 intrari analogice (registri) din RTU avind adresa #17.
NUME CAMP EXEMPLU in Hex.
Adresa RTU 11
Cod Functie 04
Adresa de start HI 00
Adresa de start LO 00
Numar de intrari analogice HINumar de intrari analogice LO
0004
Suma de control LRC 1A
In mesajul de raspuns continutul unui registru este codificat intr-
un 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
Cod Functie 04
Numar de octeti transmisi 08
Date HI (intrarea analogica 1) 00
Date LO (intrarea analogica1) 00
Date HI (intrarea analogica12) 03
Date LO (intrarea analogica12) FF
Date HI (intrarea analogica1 3) 00
Date LO (intrarea analogica13) F1
Date HI (intrarea analogica1 4) 01
Date LO (intrarea analogica14) 12
9
Suma de control LRC 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)
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
10
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
data de configuratia unui switch care poate selecta doua trepte de
viteza: 9600, repectiv 19200 baud.
11
In cazul in care s-a selectat tipul de comunicatie seriala RS-
422/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 back-
up 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.
Tot pe panoul frontal se gasesc si opt diode luminiscente (LED-
uri) care dau informatii asupra starii modulului, a BUS-ului de
comunicatie selectat si a traficului de date de pe BUS-ul respectiv.
12
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 RS-
232/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 0×06 – >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 0×00D6.
19
7. Se defineste acest registru de memorie Anybus-Com pentru a-i corespunde zonei de la
adresa 0×0202 (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 0×0200 – 0×03FF este luat in conformitate cu datele de
iesire (Out Area). Adresa 0×0200 si 0×0201 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 0×0400. Zona de memorie cu adresa de mai sus 0×0400 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 (0×03). In acest scop se
foloseste zona de memorie gateway 0×0000 – 0×01FF care este luata in conformitate cu
introducerea de date (in zona). In mod implicit, in adresa 0×000 si 0×0001 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 0×0004
(registrul adresei UT350). S-a citit doar un registru – “Namber of point” este stability
0×0001, cantitatea specificata acceptata de bit “Response.Byte count” – 0×02, si este
specificata adresa corespunzatoare si memoria de date Anybus-Com: “Data location” –
0×0004, “Data lenght” – 0×0002. Pentru a primi o valoare toate PV se fac la fel, doar in
“Query/Starting address” este specificat 0×0002 si in “Data location” – 0×0002.
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 COM-
port).
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 0×000.
Dupa aceasta Anybus-Com va incepe sa transforme datele conform configurarii de
incarcare.
Urmatorul exemplu de retea industriala utilizeaza protocolul ModBus (http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf).Acest 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:
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
Adresa dispozit
iv
Codul functiei
Bloc de date CRC
25
07 Citirea starii de exceptie
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):
Setarea unui registru (Cod 06):
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 “TRS-prezentare.pdf. Figura de mai jos prezinta principalele componente ale acestui sistem:
Adresa dispozit
slave
Codul functiei
(03)
CRCAdr. reg High
Adr. reg Low
Nr. reg. Low
Nr. reg. High
Adresa dispozit
slave
Codul functiei
03
CRCNr. octeti returnati
Adr. start Low
Reg. 1. Low
Reg. 1 High
Raspunsul la functia 03
Adresa dispozit
slave
Codul functiei
06
CRCAdr. reg High
Adr. reg Low
Nr. reg. Low
Nr. reg. High
Adresa dispozit
slave
Codul functiei
03
CRCReg. Low
Reg. High
Raspunsul la functia 06
Adr. reg Low
Adr. reg High
26
RS232
ModBus/RS485
- 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/4-z16-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:
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.
Scriere permisa
Interval Descriere registru
01h NU -40 - 850 Temperatura curenta (exprimata in 0,1°C)02h NU 0, 20h,
40h, 80hStarea masurarii curente (coduri de eroare)
03h NU 1 pozitia punctului zecimal 1=0,004h DA 0-5 Rata de filtrare a semnalului (0 – fara filtrare, 1 – slab
filtrare slaba, 5- filtrare puternica)
+V A+ B- GND
1 2 3 4
SRS +V A+ B- GND
1 2 3 4
TRS - xx +V A+ B- GND
1 2 3 4
TRS-xx
....
A+
B- B-
A+
100 -150 Ω
27
05h - Registru de calibrare;A NU SE SCHIMBA20h DA 0-ffh Adresa dispozitiv (din fabricatie vine setat cu 0feh)21h NU 006ch
0fff0h0fff1h
NU Numar Serie unic
0fff2h NU 006ch Cod de identificare dispozitiv (Device ID)0fff3h NU Versiune firmware0fff4h NU 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 Data H,L CRC
01 03 02 00 ff F8 04
Valoarea temperaturii citite este 25,5°C (0ffh=255*0,1°C).
In caz de eroare raspunsul va fi de forma:Adresa Functia Eroare CRC L,H
01 83 40 40 C0Eroarea 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: http://www.lammertbies.nl/comm/info/crc-calculation.html.
28