CATEGORII DOCUMENTE |
Protocol MODBUS
Introducere
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.
Printre avantaje, enumeram:
a. Este relativ simplu de implementat
b. Nu necesita harware dedicat pe nivelul fizic
c. Dispune de un mecanism sigur de detectie a erorilor
d. Este complet open source - astfel incat este foarte bine documentat
La capitolul dezavantaje, enumeram:
a. Are o structura rigida MASTER-SLAVE a retelei, astfel incat un SLAVE nu poate
niciodata lua initiativa de a transmite un "eveniment" detectat
b. Viteza de comunicatie e limitata la 115200 baud
MODBUS este prezentat in doua variante: MODBUS ASCII si MODBUS RTU.
Ulterior aparitiei MODBUS, au fost dezvoltate alte variante ale protocolului initial si anume:
a. MODBUS PLus
b. Modbus II
c. MODBUS TCP
Acestea nu mai sunt open source si sunt mult mai putin raspandite.
Structura fizica al MODBUS
La nivelul layer-ului fizic, MODBUS se bazeaza pe o structura de retea de tip RS48.
Reguli de acces la bus
Intr-o retea MODBUS exista un singur MASTER.
Toate secventele de comunicatie sunt initioate de MASTER. In consecinta doua unitati SLAVE nu pot comunica direct una cu alta.
Un singur SLAVE poate raspunde la un pachet emis de MASTER
Toate pachetele corecte 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 in MODBUS
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 (discrete), 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 sistemul "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.
Exemplu de functie C pentru Calculul CRC
unsigned int crc16(unsigned char buffer[], int count)
while(--i);
return (crc);
La calculul CRC se iau
in considerare toti octetii din buffer, incepand cu
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2698
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved