Protocolul Modbus

38
PROTOCOLUL MODBUS

description

Protocolul Modbus

Transcript of Protocolul Modbus

PROTOCOLUL MODBUS

5/25/2010

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