Documente Academic
Documente Profesional
Documente Cultură
1. Introducere
Un protocol de comunicatie este prin definitie un set de reguli necesare pentru a
transmite o informatie binara printr-un canal de comunicatie. Aceste reguli se aplica pentru
reprezentarea datelor, pentru transmisie, autentificare si detectare de erori ce pot aparea in
timpul transmisiei.
Un protocol de comunicatie trebuie sa urmareasca urmatoarele principii:
I. usor de implementat. Acest principiu poate fi realizat prin gruparea protocoalelor de
comunicatie pe mai multe niveluri interconectate, fiecare nivel avand un scop bine definit.
Fiecare nivel este separat de celelalte niveluri si interconectat numai cu nivelul de deasupra
sau, in anumite cazuri, cu cel de dedesubt, exceptand nivelul fizic. Prin aceasta separare pe
niveluri, protocoalele sunt mult mai usor de testat, existând posibilitatatea testarii
protocoalelor pe fiecare nivel, utilizand scenarii simple si usor de implementat.
Cel mai utilizat model pentru intelegerea protocoalelor de comunicatie este modelul
OSI (Open Systems Interconnection Basic Reference Model). Acest model are 7 niveluri bine
definite:
• nivelul aplicatie
• nivelul prezentare
• nivelul sesiune
• nivelul transport
• nivelul retea
• nivelul legatura de date
• nivelul fizic
Modelul OSI are rolul de a asigura ca informatiile de la sistemele făcute de diferiţi
producători, deci avand o structura diferita, pot fi transmise si interpretate în concordanţă cu
procedurile standardizate. Nivelul cel mai de jos (Nivelul fizic) are o conexiune fizică pentru a
schimba semnale/informatii cu alte dispozitive. Fiecare nivel, cu excepţia nivelului fizic, obţine
informatiile necesare de pe nivelul inferior. Modelul OSI defineşte doar funcţionarea
nivelurilor, nu şi implementarea tehnică (protocoalele) a acestora. Pentru a intelege mai bine
modelul OSI, mai jos sunt prezentate succinct cateva caracteristici specifice fiecarui nivel.
Nivelul fizic. Pe acest nivel are loc conexiunea fizica, de baza, intre doua sisteme care
comunica intre ele. Cuplajele electrice şi mecanice la mediul de transmitere sunt determinate
pe acest nivel, specificând (printre altele) cablul, distanţa de transmisie, conectarea contactelor
şi felul în care sunt reprezentaţi biţii.
Nivelul legatura de date. Acest nivel are responsabilitatea de a asigura o conexiune
sigura intre doua dispozitive. Din acest motiv, protocoalele de pe acest nivel determina
metodele de protectie la transmisie, a structurii telegramei, a metodelor de accesare, a
mediului de transmitere, de sincronizare si adresare a dispozitivelor.
Nivelul de retea. Pe acest nivel sunt dezvoltate protocoalele care identifica cele mai
bune rute de transmitere a datelor dintr-o retea, intre dispozitivele care comunica la distanta.
Acest serviciu (Routing) este oferit nivelului superior. Acest nivel are o importanţă semnificativa
atunci când diferite reţele sunt conectate prin intermediul unor gateway-uri.
1
Nivelul transport. Asigura transmiterea cu succes a datelor catre dispozitivul destinatar.
Acest nivel permite identificarea pachetelor transmise cu erori si corectarea acestor erori,
oferind astfel calitate si fiabilitate modelului OSI. Corectarea erorilor este realizata prin cereri
de retransmitere a pachetelor lipsa sau cu erori.
Nivelul sesiune. Are un rol esential in asigurarea conexiunii (inchidere/deschidere
porturi, servicii de sincronizare) intre doua dispozitive. Nivelul sesiune asigura o comunicatie
full duplex (bidirectionala) sau half duplex (unidirectionala).
Nivelul prezentare. Nivelul prezentare realizeaza codificarea datelor intr-un format
standard.
Nivelul aplicatie. Este un nivel abstract care gestioneaza serviciile retelei, de ex: posta
electronica, transfer de fisiere, accesul de la distanta la alte aplicatii. De asemenea, acest nivel
defineste si modul in care informatia este afisata utilizatorilor prin intermediul interfetelor
grafice.
II. siguranta. Se refera la detectarea erorilor si corectarea lor. Masura calitatii protocolului
este data prin numarul de biti eronati / numar de biti transmisi. Transmiterea unui numar mai
mare de biti eronati ar afecta sistemele de comunicatie. Detectarea erorilor pe modelul OSI
este realizată pe nivelurile legatura de date si transport.
III. flexibilitate. Se refera la capacitatea protocolului de a descoperi problemele de
topologie ale retelei precum si la formatul datelor transmise (audio, video sau fisiere).
2. Modbus
Protocolul MODBUS a fost definit in 1979 de producatorul de automate programabile
Modicon. El are o serie de avantaje, care l-au impus pe piata echipamentelor de automatizare.
In prezent circa 40% din totalul comunicatiilor industriale se bazeaza pe MODBUS.
2
trei niveluri ale modelului OSI (fizic, legatura de date și aplicatie) si ofera o comunicatie de tip
master-slave intre dispozitivele conectate prin diferite tipuri de retele sau magistrale.
Nivelul Fizic
Pe nivelul fizic, protocolul modbus se bazeaza pe comunicatia seriala ce utilizeaza
interfetele RS485, RS232. Comunicatia intre doua dispozitive poate fi asigurata fie pe 2 sau 4
fire. Conexiunea pe 2 fire fiind cea mai des intalnita.
• Reguli de acces
- Intr-o retea modbus exista un singur master.
- Toate secventele de comunicatie sunt initiate de master. In consecinta doua unitati
slave nu pot comunica direct una cu alta.
- Un singur slave poate raspunde la o cerere transmisa de dispozitivul master
- Toate pachetele transmise de master, fara erori, trebuie sa primeasca raspuns. Exista
totusi o exceptie de la aceasta regula, si anume pachetele de tip “broadcast”. Acestea sunt
adresate tuturor unitatilor slave.
• Reprezentarea datelor
Datorita faptului ca modbus a fost initial dezvoltat pentru comunicatia cu PLC-urile
Modicon, reprezentarea datelor este asociata cu resursele tipice ale PLC-urilor, si anume: iesiri
digitale (denumite “coils” – relee), intrari digitale, intrari analogice (input registers) si iesiri
analogice (holding registers).
La nivelul MODBUS, valorile binare asociate cu intrarile si iesirile digitale sunt
transferate in octeti, iar valorile asociate cu marimile analogice sunt codificate binar in cuvinte
de 16 biti si sunt transmise in reprezentarea “big endian” – cu octetul mai semnificativ transmis
primul. De exemplu, daca se transmite valoarea zecimala 4660 (hex 0x1234) aceasta
se va transmite sub forma a doi octeti 0x12 si 0x34 in aceasta ordine. Daca sunt
necesare numere mai mari decat 65535 (0xFFFF) atunci se vor folosi doua sau mai multe
holding registers pentru a stoca aceste variabile.
In ceea ce priveste transmiterea de mesaje prin seriala, pe nivelul fizic, protocolul
modbas rtu specifica urmatoarele formate:
3
Fiecare mesaj trebuie transmis într-un flux continuu. Un mesaj, transmis intre dispozitivele
master-slave, are urmatoarea structura:
1 bit de start
8 biți de date
1 bit de paritate
1 bit de stop sau 2 biți daca nu este utilizat bitul de paritate
Nivelul Legatura de Date
Protocolul MODBUS defineste o unitate de date PDU (Protocol Data Unit) care este
independenta de mediul de comunicare intre dispozitive.
4
Fig 1.5. Transmiterea unui cadru RTU
Dacă un interval silențios de peste 1,5 caractere are loc între două caractere, cadrul
mesajului este declarat incomplet și ar trebui eliminat de către receptor.
Dacă un anumit dispozitiv include toate aceste tipuri de registre, ramane la latitudinea
producătorului. Este foarte posibil ca toate I / O sa fie mapate numai in Holding Registers.
Registrele Coils sunt registre pe 1 bit, sunt utilizate pentru a controla ieșirile discrete și pot fi
citite sau scrise.
Discretes Input sunt registre pe 1 bit si sunt utilizate ca intrări și pot fi doar citite. Input
registers sunt registre pe 16 biți si sunt utilizate pentru diverse dispozitive de intrare. Holding
Registers sunt cele mai utilizate registre pe 16 biți. Acestea pot fi citite sau scrise și pot fi
5
utilizate pentru a stoca valoarea I/O, date de configurare sau pentru a stoca orice alta unitate
de informatie.
In imaginea urmatoare sunt prezentate cele mai importante/utilizate coduri. Se poate
observa ca in functie de codul functiei, poate fi accesat un anumit registru. De ex, daca un slave
primeste codul 0x03, automat, va fi transmisa informatia existenta in tabela Holding Registers.
6
implementat diferit de producatori diferiti
- daca un utilizator vrea sa mute o functie din codurile utilizator in codurile publice,
trebuie sa initieze un RFC prin care sa faca cunoscuta publicului noua functie, iar
daca functia este considerata suficient de importanta ii va fi atribuit un cod din lista
de coduri publice nefolosite
Coduri de functii rezervate
- sunt coduri de functii rezervate de anumite companii
- codurile nu sunt accesibile publicului larg
7
• Atunci când se transmite un mesaj de broadcast, nu se asteapta răspuns de la
dispozitivele slave. Cu toate acestea, master-ul intra in starea „Waiting turnaround
delay” pentru a permite dispozitivelor slave să proceseze cererea curentă, înainte de a
trimite o nouă cerere.
• În modul unicast, timpul de răspuns trebuie să fie setat a.i. orice dispozitiv slave să
proceseze cererea și să returneze răspunsul.
• În mod obișnuit, intervalul de timp de răspuns este de la 1s la câteva secunde la 9600
bps; iar prioada „turnaround delay” este de la 100 ms la 200ms.
Diagrama de stari pentru dispozitivul Slave
8
• durata starilor REQUEST, REPLY, BROACAST depind de caracteristicile de comunicare
(lungimea cablului și rata de transfer).
• durata starilor WAIT și TREATMENT depind de timpul de procesare a cererii pe dispozitivele
slave.