Sunteți pe pagina 1din 8

Protocolul de comunicație MODBUS

MODBUS este cel mai popular protocol industrialfiind folosite astăzi, din motive întemeiate. Este
simplu, ieftin, universal și ușor de utilizat. Chiar dacă MODBUS a fost implementat acum aproape
30 de ani, aproape toți furnizorii de instrumente industriale majore și echipamente de automatizare
continuă să o susțină în produse noi.
Acest protocol este bazat pe o arhitectura master/slave sau client/server. El este conceput
de Modicon pentru a fi folosit la PLC-urile proprii. A devenit un standard de comunicatie in
industrie si este in prezent cel mai folosit la conectarea tuturor dispozitivelor industriale. Motivele
cele mai importante pentru utilizarea acestuia atat de raspandita sunt:

1. este un protocol deschis, cu documentatie disponibila


2. poate fi implementat intr-un timp scurt (zile nu luni)
3. lucreaza cu biti sau octeti si in acest fel nu impune cerinte deosebite producatorilor.

Modbus permite administrarea unei retele de dispozitive, spre exemplu un sisteme care masoara
temperatura si umiditatea pe care le comunica unui computer. Modbus este deseori folosit pentru
a conecta un computer de supervizare cu un RTU dintr-un sistem de monitorizare si achititie de
date SCADA. Exista versiuni ale protocolului MODBUS atit pentru portul serial cat si pentru
Ethernet.

MODBUS este un sistem "master-slave", în care "master" comunică cu unul sau mai mulți
"sclavi". Master-ul este, de regulă, PLC (Controller Logic Programabil), PC, DCS (Distributed
Control System) ).
MODBUS RTU sclavi sunt adesea dispozitive de câmp, toate care se conectează la rețea într-o
configurație multidrop, fig. 1.
Atunci când un master MODBUS RTU dorește informații de la dispozitivul comandant, trimite un
mesaj care conține adresa dispozitivului, datele pe care le dorește și o sumă de control pentru
detectarea erorilor. Fiecare alt dispozitiv din rețea vede mesajul, dar numai dispozitivul adresat
răspunde.
Fig.1 O rețea MODBUS RTU constă dintr-un "master", cum ar fi un PLC sau DCS, și până la
247 de dispozitive "slave" conectate într-o configurație multi-drop

- orice dispozitiv care comunica folosind Modbus are o adresa unica.

- orice dispozitiv poate trimite comenzi dar de obicei doar dispozitivul-master o face.

- o comanda Modbus contine adresa dispozitivului caruia ii este adresata. Doar


dispozitivul apelat va raspunde la aceasta comanda, chiar daca comanda este primita si de
alte dispozitive.

- comenzile Modbus contin informatii de verificare pentru a se asigura de veridicitatea


raspunsului.

- exemple de comenzi sint comanda care schimba o valoare intr-un registru al RTU sau
comanda care cere RTU (Unitate de Timp Real) sa-i furnizeze o valoarea continuta de un
registru.

- diversele implementari ale Modbus folosesc fie fire pentru transmisie, comunicatii fara
fire, SMS sau GPRS.

- majoritatea implementarilor au variatii de la standardul oficial.


Formatul datelor:

 Floating Point
 32 bit integer
 8 bit data
 mixed data types
 bit fields in integers
 multipliers to change data to/from integer. 10, 100, 1000, 256 ...

Extensiile protocolului:

 16 bit slave addresses


 32 bit data size (1 address = 32 bits of data returned.)
 word swapped data

Slave-urile pe rețelele MODBUS nu pot fi inițiatoare de comunicatie; pot doar raspunde. Cu alte
cuvinte, raspund doar atunci cand sunt apelate. Unii producători dezvoltă dispozitive "hibride"
care acționează ca sclavi MODBUS, dar au și capabilități de scriere, comportandu-se uneori ca
pseudo-master.
Cele trei versiuni MODBUS cele mai comune utilizate astăzi sunt:

1. MODBUS ASCII
2. MODBUS RTU
3. MODBUS / TCP

Toate mesajele MODBUS sunt trimise în același format. Singura diferență dintre cele trei tipuri
de MODBUS este modul în care sunt codate mesajele.
În MODBUS ASCII, toate mesajele sunt codificate în hexazecimal, folosind caractere ASCII pe 4
biți. Pentru fiecare octet de informații, sunt necesari doi octeți de comunicație, de două ori mai
mulți decât cu MODBUS RTU sau MODBUS / TCP.
Prin urmare, MODBUS ASCII este cel mai lent dintrei protocoale, dar este potrivit atunci când se
utilizează legături telefonice sau radio (RF). Acest lucru se datorează faptului că ASCII utilizează
caractere pentru a delimita un mesaj. Din cauza acestei delimitări a mesajului, eventualele
întârzieri în mediul de transmisie nu vor cauza ca mesajul să fie interpretat greșit de dispozitivul
receptor.
Acest lucru poate fi important atunci când se ocupă cu modemuri lente, telefoane mobile,
conexiuni zgomotoase sau alte medii de transmisie dificile.

În MODBUS RTU, datele sunt codificate în binar și necesită doar un octet de comunicație pentru
octetul de date. Acesta este ideal pentru utilizarea pe rețelele RS232 sau multi-drop RS485, la
viteze de la 1200 la 115Kbaud. Cele mai frecvente viteze sunt 9,600 și 19,200 baud.

MODBUS / TCP este pur și simplu MODBUS pe Ethernet. În loc să utilizeze adrese de dispozitiv
pentru a comunica cu dispozitive slave, se utilizează adrese IP. Cu MODBUS / TCP, datele
MODBUS sunt pur și simplu încapsulate într-un pachet TCP / IP. Prin urmare, orice rețea Ethernet
care suportă TCP / IP ar trebui să ruleze imediat MODBUS / TCP.

Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj este trimis ca doua
caractere ASCII (de exemplu, octetul 0x7A este transmis ca doua caractere – 0x37 = “7”, respectiv
0x41 = “A”). Acest mod este utilizat atunci cand linia de comunicatie sau resursele dispozitivului
nu permit un management al timpului conform cu cerintele impuse de modul MODBUS RTU.
Datorita modului de transmisie a datelor, modul ASCII este mai putin eficient decat modul RTU.
Codificarea este hexazecimala – caracterele ASCII 0 – 9, A – F. Un caracter hexazecimal este
transmis ca si cod ASCII intr-un cuvant al pachetului MODBUS ASCII.Structura unui caracter
(10 biti) in modul ASCII contine:

- un bit de START;
- 7 biti de date (cel mai putin semnificativ bit este primul transmis);
- un bit de paritate;
- un bit de STOP.

Paritatea recomandata este cea directa (chiar paritate – EVEN PARITY), insa pot fi utilizate si
celelalte paritati (ODD PARITY, respectiv NO PARITY). Paritatea implicita este EVEN PARITY.
In cazul in care se opteaza pentru lucrul fara bit de paritate (NO PARITY), se vor utiliza 2 biti de
STOP. Fiecare caracter este trimis secvential, incepand cu cel mai putin semnificativ bit (LSB) si
terminand cu cel mai semnificativ (MSB) – fig.2.

Fig. 2 Secventa de biti transmisa pentru fiecare caracter in modul ASCII

In modul ASCII un pachet are delimitate clar, prin caractere specifice inceputul, respectiv sfarsitul.
Un pachet trebuie sa inceapa cu caracterul “:” (codul ASCII 0x3A), si se termina prin caracterele
CR si LF (Carriage Return si Line Feed - codurile ASCII 0x0D, respectiv 0x0A). Caracterul LF
poate fi schimbat utilizand o comanda specifica MODBUS. Intre identificatorii de inceput,
respectiv sfarsit de pachet se afla celelalte date (adresa Slave, cod functie …) – fig.3. Caracterele
permise pentru toate celelalte campuri sunt 0 – 9, A – F (codificate ASCII). Echipamentele ce
comunica in modul MODBUS ASCII monitorizeaza continuu linia pentru identificarea
caracterului “:”. Odata receptionat acest caracter, echipamentul va decodifica urmatoarele
caractere pana cand va intalni codurile ASCII specifice sfarsitului de pachet. Intre doua caractere
se poate scurge un timp de pauza de pana la o secunda. In cazul in care nu se configureaza un alt
timp, un interval de pauza mai mare de o secunda indica faptul ca a intervenit o eroare de
comunicatie. Sunt retele complexe care necesita timpi de pauza chiar de 4 – 5 secunde.
Fig.3 Structura unui pachet Modbus ASCII

Fiecare octet de date are nevoie de doua caractere pentru codificare. Ca urmare, pentru a asigura
compatibilitatea la nivel de aplicatie intre modurile MODBUS ASCII si MODBUS RTU, numarul
maxim de carctere ASCII din campul de date este 2 x 252. Astfel, numarul maxim de caractere
continute de un pachet MODBUS ASCII este 513. Tranzactiile specifice modului MODBUS
ASCII pot fi sintetizate grafin intr-o diagrama de evolutie a starilor, valabila atat pentru
echipamentul Master, cat si pentru Slave – fig. 4.

Fig.4 Diagrama de evolutie a starilor pentru transmisia in mod MODBUS ASCII

Starea Idle este starea normala, in care nici emisia, nici receptia nu sunt active. Fiecare receptie a
unui caracter “:” inseamna inceputul unui nou pachet. Daca un astfel de caracter este receptionat
in procesul de receptie a unui pachet, atunci pachetul curent este declarat incomplet si este ignorat.
In acest caz este alocat un nou buffer de receptie. Dupa detectia sfarsitului de pachet, este calculat
LRC-ul si verificat. In continuare este analizata adresa pantru a se determina daca pachetul ii este
adresat dispozitivului. Pentru a reduce volumul de procesare specific receptiei si implicit timpul
alocat, analiza adresei poate fi facuta imediat ce aceasta a fost receptionata, fara a se astepta
sfarsitul pachetului.

In modul ASCII, pachetul include un camp de verificare a erorii bazat pe calculul LRC
(Longitudinal Redundancy Checking – verificare redundanta longitudinala). In calculul LRC intra
continutul mesajului, mai putin caracterul de inceput (“:”), respectiv cele de sfarsit de pachet
(“CR”, “LR”). Calculul LRC nu este influentat de metoda de verificare a paritatii utilizata.

Dispozitivul care receptioneaza pachetul calculeaza LRC-ul pe masura ce primeste datele, urmand
ca la sfarsit sa compare valoarea calculata cu cea receptionata. In cazul in care valorile nu sunt
egale, se raporteaza eroare. LRC se calculeaza insumand toti octetii pachetului si ignorand
transporturile in cazul in care acestea apar, dupa care rezultatul se complementeaza fata de 2.
Ulterior calculului LRC, acesta este codificat ASCII pe 2 octeti si impachetat inaintea perechii
“CR” - “LF”.

Algoritmul de calcul al LRC poate fi usor reprezentat in pseudocod – fig.5 – si, implicit usor de
implementat.

Fig.5 Pseudocod pentru determinarea LRC

Clase de implementare pentru dispozitivele MODBUS si recomandari

Toate dispozitivele / echipamentele dintr-o retea MODBUS trebuie sa respecte toate cerintele
obligatorii ale aceleiasi clase de implementare. Pentru clasificarea dispozitivelor / echipamentelor
MODBUS sunt utilizati urmatorii parametrii:
- adresarea;
- posibilitatea de BROADCAST;
- modul de transmisie;
- viteza de transmisie;
- formatul caracterelor;
- parametrii interfetelor electrice.

Sunt propuse doua clase – fig.6:

- de baza (BASIC);
- normala (REGULAR).

Clasa normala (REGULAR) trebuie sa aiba capabilitati de configurare.

Fig.6 Clasele de implementare pentru dispozitivele MODBUS

In afara de respectarea cerintelor impuse de clasele de implementare, exista o serie de recomandari


a caror respectare conduce la implementarea flexibila si sigura a retelelor MODBUS. Este
recomandata, de exemplu, utilizarea unor elementel de semnalizare vizuala (cu LED) a starii
dispozitivelor MODBUS, ceea ce determina diagnoza rapida atat a aplicatiilor cat si a
dispozitivelor – fig.7.

Fig.7 Recomandari privind semnalizarea vizuala a starii dispozitivelor MODBUS

Pentru interoperabilitate este, de asemenea, recomandata respectarea alocarii pinilor in conectorii


specifici RS232 sau RS485.

S-ar putea să vă placă și