Documente Academic
Documente Profesional
Documente Cultură
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.
- 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.25.
Fig. 2.25 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. 2.26.
1
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.
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 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. 2.27.
Fig. 2.27 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.
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. 2.28 – si, implicit
usor de implementat.
setare LRC = 0
pentru fiecare octet b din buffer executa
LRC = (LRC + b) AND 0xFF
terminare ciclu
LRC = (((LRC XOR 0xFF) + 1) AND 0xFF)
s.
scarea cu valoarea 0xFF are rolul de ignorare a transportului in cazul aparitiei acestuia.
nctia SAU exclusiv (XOR) din ultima linie si incrementarea rezultatului cu 1 determina calcularea complementului fata de 2 a
- adresarea;
- posibilitatea de BROADCAST;
- modul de transmisie;
- viteza de transmisie;
- formatul caracterelor;
- parametrii interfetelor electrice.
- de baza (BASIC);
- normala (REGULAR).