Sunteți pe pagina 1din 10

Teletransmisii de date Cap.

5 Protocoale seriale

5
PROTOCOALE SERIALE

5.1. Protocolul CAN (Controller Area Network)


CAN este un protocol serial de comunicaţie care suportă controlul în
timp real cu un nivel de securitate ridicat. Domeniul de utilizare se întinde
de la reţele de viteză foarte mare (până la 1 Mbit) la cele de cost redus şi
este utilizată în electronica auto, în controlul motoarelor, senzori, sisteme
antiderapaj, etc.
Pentru a obţine un design transparent şi flexibil CAN a fost împărţit
în nivele:
- nivelul obiect
- nivelul transfer
- nivelul fizic
Nivelul obiect şi cel de transfer cuprind toate serviciile şi funcţiile
nivelului legăturilor de date definit de modelul ISO/OSI. Scopul nivelului
obiect include:
- găsirea mesajelor de transmis
- decizia asupra mesajului de actualitate primit de la nivelul de transfer
- o interfaţă către nivelul aplicaţie aflat în legătură cu hardware-ul.
Scopul nivelului de transport este protocolul de transfer (controlul
cadrelor, arbitrajul, detecţia şi semnalizarea erorilor şi limitarea defectelor.
În cadrul nivelului de transfer se decide dacă magistrala este liberă pentru
pornirea unei noi transmisii sau dacă începe o recepţie, sau funcţii legate de
rata de transfer. Acest nivel nu suportă modificări.
Scopul nivelului fizic reprezintă schimbul de biţi între noduri cu
respectarea tuturor proprietăţilor electrice. Nivelul fizic trebuie să fie acelaşi
pentru toate nodurile.
5.1.1. Concepte de bază
Standardul CAN are următoarele proprietăţi:
- mesaje cu nivele de prioritate
- garantarea timpilor de latenţă
- flexibilitatea configuraţiei
- recepţie de la noduri multiple cu sincronizare
- consistenţa datelor

42
Teletransmisii de date Cap. 5 Protocoale seriale

- multimaster
- detecţia şi semnalizarea erorilor
- transmisia automată a mesajelor corupte imediat ce magistrala e liberă
- distincţie între erorile temporare şi cele permanente
CAN are o structură pe 3 nivele:
- Nivelul fizic defineşte modul cum sunt transmise semnalele. El cuprinde
mediul de transmisie, nivelele semnalelor şi reprezentarea biţilor, dar nu
permite optimizarea acestora pentru o anumită aplicaţie.
- Nivelul de transfer reprezintă nucleul (kernel) protocolului CAN. Acesta
prezintă mesajele recepţionate şi acceptă mesajele de transmis de la nivelul
obiect. Tot acest nivel este responsabil pentru rata de transmisie şi
sincronizare, pentru încadrarea mesajelor, arbitraj, confirmare, detecţie de
erori, semnalizare şi reţinerea defectelor.
- Nivelul obiect se ocupă de filtrarea mesajelor, precum şi de starea şi
manipularea acestora.
Dacă nivelul fizic este fixat prin circuitele de interfaţă utilizate iar
nivelul obiect este puntea de legătură cu programul aplicaţie, nivelul de
transfer este cel care asigură compatibilitatea tuturor dispozitivelor
conectate la magistrală. Este definit şi standardizat prin specificaţie tehnică.
Aceasta defineşte o serie de termeni utili pentru înţelegerea modului cum
sunt transferate, validate, codate şi testate pentru detecţia erorilor mesajele
vehiculate prin interfaţă.
Informaţia pe magistrală este transmisă prin mesaje cu format fix sau
diferitdar limitate ca lungime. Mesajele pot fi iniţiate de orice dispozitiv
conectat la magistrală atâta vreme cât aceasta din urmă este liberă.
În sistemele CAN nodurile nu utilizează informaţii despre
configurarea sistemului (adresele nodurilor), lucru care are câteva
consecinţe importante:
- flexibilitatea sistemului: noduri suplimentare pot fi adăugate fără a necesita
schimbări în software-ul sau în hardware-ul nodurilor existente, sau în
vreunul din nivele aplicaţie.
- rutarea mesajelor: conţinutul unui mesaj include un identificator, acesta
neindicând destinaţia mesajului, dar descrie semnificaţia datelor, astfel încât
toate nodurile din reţea sunt în stare să filtreze mesajele pentru a determina
dacă acestea sunt utile pentru ele sau nu.
- multi-distribuţie: oricare dintre noduri pot recepţiona şi acţiona simultan la
acelaşi mesaj
- consistenţa datelor: conceptul CAN garantează că un mesaj oarecare este
acceptat simultan de toate nodurile sau de nici unul. Astfel dacă un nod a
detectat o eroare atunci transmisia este oprită prin transmiterea unui fanion
de eroare prin care se previne acceptarea de către celelalte noduri a
43
Teletransmisii de date Cap. 5 Protocoale seriale

mesajului.
Rata de bit (viteza de transmisie) poate fi diferită funcţie de sistem,
dar în cadrul unui sistem ea este dată şi constantă.
Mesajele au priorităţi diferite, aceasta fiind definită prin
identificator. Dacă un nod cere altui nod un pachet de date , acesta trimite
pachetul cu acelaşi identificator ca şi cererea.
Magistrala CAN este de tip multi-master, oricare din noduri putând
porni transmisia. Nodul ce transmite mesajul cu prioritatea cea mai mare va
câştiga accesul la magistrală. Pentru aceasta este nevoie de arbitraj. Dacă 2
sau mai multe noduri încep să transmită în acelaşi timp atunci conflictul este
rezolvat prin arbitrajul pe baza identificatorului. Mecanismul de arbitrare
garantează ca nici o informaţie să nu fie pierdută. Dacă transmisia unui
mesaj de date şi a unui mesaj de cerere de date, având acelaşi identificator,
sunt iniţiate în acelaşi timp, atunci mesajul de date are prioritate. În timpul
arbirajului fiecare transmiţător compară nivelul bitului transmis cu nivelul
de pe magistrală. Dacă cele două nivele sunt aceleaşi atunci acesta continuă
să transmită. Când se transmite un nivel regresiv (recessive – eng.), adică 1
logic) şi se detectează un nivel dominant (dominant – eng.), adică 0 logic,
atunci nodul a pierdut arbitrajul şi trebuie să se retragaă fără a mai transmite
vreun bit.
Singuranţa transferului datelor este asigurată prin metodele de
detecţie a erorilor, semnalizare şi auto-verificare implementate:
- detecţia erorilor presupune următoarele măsuri: monitorizarea
(emiţătoarele compară nivelele biţilor de transmis cu cele detectate pe
magistrală), verificarea redundanţei ciclice, umplerea biţilor (bit stuffing) şi
verificarea structurii mesajului.
- performanţa detecţiei erorilor: mecanismele de detecţie a erorilor
realizează detecţia tuturor erorilor globale, a erorilor locale la nivelul
emiţătorului, a până la 5 erori aleatorii într-un mesaj, a erorilor de şarjă
(burst), precum şi a erorilor oricărui număr impar din mesaj.
Semnalizarea erorilor şi a mesajelor corupte poate fi făcută de către
orice nod. Astfel de mesaje sunt abandonate şi retransmise automat. Timpul
de revenire de la detectarea erorii până la începerea mesajului următor este
de cel puţin 29 de perioade de bit cu condiţia să nu mai apară alte erori.
Nodurile trebuie să fie capabile să distingă între perturbaţii scurte şi căderi
permanente, iar nodurile defecte sunt închise.
Magistrala CAN pemite conectarea teoretică a unui număr nelimitat
de noduri. Practic numărul total este limitat de timpii de întârziere şi de
încărcarea acesteia. Fizic, magistrala este reprezentată de un singur canal
prin care circulă semnalul electric ce poartă informaţia (datele). Din aceste
date se extrage informaţia de sincronizare, dar şi datele în sine. Tensiunea
44
Teletransmisii de date Cap. 5 Protocoale seriale

de pe linie poate avea una din două valori complementare: dominantă (0)
sau regresivă (1). Atunci când două emiţătoare plasează pe linie, unul un bit
dominant şi celălalt unul recesiv, valoarea rezultantă va fi cea dominantă.
Aceasta se datorează implementării de tip ŞI-cablat.
Toate receptoarele verifică conţinutul mesajului şi vor confirma un
mesaj corect sau vor semnaliza un mesaj incorect.
Pentru a reduce consmul de putere, un dispozitiv CAN poate fi trecut
în modul „sleep”, fără activitate internă şi cu circuitele de interfaţă
deconectate. Din acest mod ieşirea se face la prima activitate apărută pe
magistrală sau la o condiţie internă. Activitatea internă este repornită, iar
nivelul de transfer aşteaptă pentru ca oscilatorul sistemului să se stabilizeze
şi apoi până se va sincroniza la activitatea magistralei (verificarea a 11 biţi
regresivi consecutivi). Pentru a „trezi” alte noduri ale sistemului care sunt în
modul „sleep” se transmite un mesaj de trezire cu cel mai mic identificator
(rrr rrrd rrrr, r=regresiv, d =dominant).
5.1.2. Transferul mesajelor
Pe magistrala CAN se pot transmite 4 tipuri de mesaje:
- mesaj de date – transferă datele de la un emiţător la receptoare.
- mesaj de cerere – când un nod trimite o cerere de transmitere a unui mesaj
de date cu acelaşi identificator
- mesaj de eroare – transmis de un nod care a detectat o eroare
- un mesaj de supraîncărcare – anunţă o cerere de întârziere între mesajul
precedent şi cel următor.
Mesajele de date şi cele de cerere sunt separate de mesajele
Spaţiu Mesaj Spaţiu
intermesaj de date intermesaj

sau mesaj
supraîncărcare
Câmp de arbitrare

Câmp de validare
Start mesaj

Sfârşit mesaj
Câmp de date

Câmp CRC
Câmp de control

S Câmp de R I Câmp de date Câmp A E


O arbitrare T D r DLC 0...8 octeţi CRC C O
F de 11 biţi R E 0 K F

Fig. 4.23. Structura unui mesaj de date

45
Teletransmisii de date Cap. 5 Protocoale seriale

precedente printr-un spaţiu intermesaj.


Mesajul de date este compus din 7 câmpuri: câmp de start (SOF),
câmp de arbitrare, câmp de control, câmp de date, câmp de CRC şi câmp de
sfârşit. Câmpul de date poate avea şi lungimea zero.
Câmpul de start marchează începutul mesajului de date sau de cerere
şi constă dintr-un singur bit dominant. Un nod poate începe transmisia doar
când magistrala este liberă (idle). Toate nodurile trebuie să se sincronizeze
pe frontul crescător al acestui câmp.
Câmpul de arbitrare conţine un identificator şi un bit RTR.
Identificatorul are 11 biţi, biţi care se transmit începând cu cel mai
semnificativ ID10 şi terminând cu cel mai puţin semnificativ ID0. Cei mai
semnificativi 7 biţi (ID10 la ID4) nu trebuie să fie toţi regresivi. Bit-ul RTR
(Remote Transmission Request) este bit dominant în mesajele de date şi
regresiv în mesajele de cerere.
Câmpul de control constă din 6 biţi şi include lungimea câmpului de
date şi 2 biţi rezervaţi pentru extensii viitoare. Biţii rezervaţi trebuie să fie
întotdeauna dominanţi.
Câmpul de date are lungimea în octeţi indicată de câmpul anterior pe
ultimii 4 biţi (poate conţine de la 0 la 8 octeţi). Fiecare octet se transmite
începând cu MSB. Tabelul următor conţine corespondenţa între biţii codului
de control şi numărul de octeţi din câmpul de date.
Tabelul 4.8. Corespondenţa dintre câmpul de control şi lungimea câmpului de date
Numărul de Ultimii 4 biţi ai câmpului de control (Data Length Code)
octeţi de DLC3 DLC2 DLC1 DLC0
date
0 d d d d
1 d d d r
2 d d r d
3 d d r r
4 d r d d
5 d r d r
6 d r r d
7 d r r r
8 r d d d
În tabel „d” înseamnă dominant iar „r” regresiv. Alte combinaţii decât cele
din tabel nu pot fi utilizate.
Câmpul CRC conţine o secvenţă CRC urmată de un delimitator.
Secvenţa CRC este derivată de la un cod cu redundanţă ciclică ales special
pentru secvenţe mai mici de 127 de biţi (cod BCh). Polinomul de împărţit

46
Teletransmisii de date Cap. 5 Protocoale seriale

este definit cu coeficienţii daţi de câmpul de start, câmpul de arbitrare,


câmpul de control şi câmpul de date după ce au fost extraşi biţii de umplere
(bit destuffing), iar pentru restul până la 15 coeficienţi cei mai puţin
semnificativi au valoarea 0. Acesta va fi împărţit la polinomul generator:
X 15 + X 14 + X 10 + X 8 + X 7 + X 4 + X 3 + 1
Restul acestei împărţiri este secvenţa CRC transmisă. Pentru a implementa
această funcţie se foloseşte fie un registru de deplasare de 15 biţi dacă
implementarea se face hardware fie aceasta se realizează prin software.
Câmpul CRC este terminat cu un delimitator CRC care este un bit regresiv
(1).
Câmpul de validare (ACK field) are doi biţi regresivi. Primul bit se
numeşte ACK Slot, iar al doilea este delimitatorul câmpului. Un receptor
care a recepţionat un mesaj corect răspunde transmiţătorului prin trimiterea
unui bit dominant pe durata primului bit (ACK Slot). Toate staţiile care au
recepţionat mesajul corect răspund pe duarata ACK Slot. Bitul delimitator,
al doilea din câmpul de validare este regresiv. Astfel bitul ACK Slot este
situat între doi biţi regresivi.
Fiecare mesaj de date sau de cerere sunt teminate cu un câmp
terminator de mesaj. Acesta constă dintr-o secvenţă de 7 biţi regresivi.
Mesajul de cerere poate fi trimis de către un nod receptor pentru a
cere date de la un nod sursă. Un astfel de mesaj este format din 6 câmpuri:
Câmp de start, Câmp de arbitrare, Câmp de control, Câmp CRC, Câmp de
acceptare şi Sfârşit de mesaj.
Spaţiu Mesaj Spaţiu
intermesaj de cerere intermesaj
sau mesaj
supraîncărcare
Câmp de arbitrare

Câmp de validare
Start mesaj

Sfârşit mesaj
Câmp CRC
Câmp de control

S Câmp de R I Câmp A E
O arbitrare T D r DLC CRC
C O
F de 11 biţi R E 0 K F

Fig. 4.24. Structura unui mesaj de cerere


Diferit faţă de mesajul de date, aici bitul RTR este regresiv.
47
Teletransmisii de date Cap. 5 Protocoale seriale

Polaritatea sa indică faptul că mesajul e de date (dominant) sau de cerere


(regresiv). Mesajul de cerere nu conţine câmp de date. Valoarea ce se
specifică în prin DLC (Data Length Code) este cea corespunzătoare
mesajului de date ce va urma acestei cereri.
Mesajul de eroare constă în două câpuri diferite. Primul este dat de
suprapunerea fanionului de eroare (Error Flag) provenind de la diferite
noduri. Cel de-al doilea câmp este delimitatorul de eroare (Error Delimiter).
Pentru a termina mesajul de eroare în mod corect, un nod are nevoie ca
magistrala să fie liberă cel puţin 3 perioade de bit.
Fanionul de eroare poate fi de două feluri:
- activ – constă în 6 biţi dominanţi consecutivi
- pasiv – constă în 6 biţi regresivi consecutivi doar dacă este suprapus peste
biţi dominanţi proveninţi de la alte noduri.
Un nod ce transmite un mesaj de eroare activ semnalizează acest
lucru prin transmiterea unui fanion de eroare activ. Acesta violează condiţia
de umplere cu biţi (bit stuffing) sau se suprapune peste câmpurile ACK şi
Sfârşit de mesaj. Ca o consecinţă toate celelalte noduri detectează condiţia
de eroare şi la rândul lor încep transmiterea unui fanion de eroare. Astfel
secvenţa de biţi dominanţi rezultă ca o superpoziţie a unor fanioane de
eroare diferite. Lungimea totală variază între 6 şi 12 biţi. O staţie pasivă care
detectează condiţia de eroare încearcă să transmită un fanion pasiv de
eroare. Nodul pasiv aşteaptă 6 biţi consecutivi de aceeaşi polaritate după
care se incheie starea de eroare pasivă.
Delimitatorul de eroare constă în 8 biţi regresivi şi se monitorizează
magistrala până se detectează un bit recesiv. După ce a fost detectat se
transmit încă 7.
Mesaj de eroare Spaţiu
intermesaj
Fanion de
eroare sau mesaj
supraîncărcare
Fanioane de
Delimitator
eroare
de eroare
suprapuse

Fanioane de eroare Delimitator


suprapuse max. 16 biţi de eroare

Fig. 4.25. Structura unui mesaj de eroare


Mesajul de supraîncărcare conţine două câmpuri de biţi: fanionul
de supraîncărcare şi delimitatorul de mesaj. Sunt două tipuri de condiţii de
supraîncărcare:
- condiţii interne ale receptorului care cer o întârziere a următorului mesaj
48
Teletransmisii de date Cap. 5 Protocoale seriale

Sfârşit de Mesaj de Spaţiu


mesaj sau supraîncărcare intermesaj
delimitatori de
erore sau de Fanion de sau mesaj
supraîncărcare supraîncărcare supraîncărcare

supraîncărcare
Delimitator de
Suprapunerea
fanioanelor
de supraîncărcare

8 biţi
6 biţi dominanţi
regresivi

Fig. 4.26. Structura unui mesaj de supraîncărcare


de date sau de cerere
- detectarea unui bit dominant în timpul pauzei (Intermission).
Începerea transmisiei unui mesaj de eroare datorat primei condiţii
este permis la primul bit al unei pauze, în timp ce un mesaj datorat condiţiei
2 poate începe la primul bit dupa detectarea unui bit dominant.
Fanionul de supraîncărcare constă în 6 biţi dominaţi. Formatul este
similar cu fanionul de eroare activ. Distrugerea câmpului de pauză duce la
detectarea condiţiei de supraîncărcare şi încep la rândul lor să transmită un
fanion de supraîncărcare. Dacă s-a detectat un bit dominant pe durata celui
de-al treilea bit de pauză, nodurile nu vor interpreta corect supraîncărcarea,
ci vor interpreta primii 6 biţi dominanţi ca un început de mesaj. Cei 6 biţi
violează regula umplerii cu biţi cauzând o condiţie de eroare.
Delimitatorul de supraîncărcare constă în 8 biţi regresivi, având
aceeaşi forma cu cel de eroare. Dupa fanion, un nod monitorizează
detectarea unei tranziţii de la un bit dominant la unul regresiv. Toate
nodurile încep să transmită din acest moment 7 biţi regresivi. Nici un nod nu
Spaţiu intermesaj
Mesaj Mesaj

Pauză Liber

Spaţiu intermesaj
Mesaj Mesaj

Pauză Suspendare Liber


mesaj

Fig. 4.27. Spaţiu intermesaj

49
Teletransmisii de date Cap. 5 Protocoale seriale

are voie să transmită un nou mesaj.


Mesajele trebuie separate între ele de un câmp de biţi de spaţiere
intermesaj (Interframe Space). Mesajele de eroare şi cele de supraîncărcare
nu sunt separate de astfel de spaţii. După aceste spaţiu urmează o zonă cu
magistrala liberă (idle). Această durată poate avea o lungime variabilă. Dacă
era un mesaj în aşteptare, atunci acesta va începe să fie trimis pe durata
primului bit după pauză.
Câteva din segmentele ale (Start, Câmp de arbitrare, Câmp de
control, Câmp de date şi Câmp CRC) sunt codate utilizând umplerea cu biţi
(bit stuffing). Atunci când emiţătorul detectează 5 biţi consecutivi identici
de transmis, inserează automat câte un bit complementar. Restul de câmpuri
(Delimitatorul CRC, Câmpul de validare şi Sfârşitul de mesaj) sunt fixe şi
nu beneficiază de umplere. Mesajele de eroare şi de supraîncărcare sunt de
asemenea fixe şi nu se umplu. Şirul de biţi este codat în cod NRZ, adică pe
durata de bit nivelul de tensiune rămâne neschimbat conform cu tipul bitului
(regresiv sau dominant).
5.1.3. Cerinţe de timing
Rata de bit nominală este numărul de biţi pe secundă transmişi în
absenţa resincronizării. Durata de bit este inversul ratei de bit.
Durata de bit poate fi împărţită în 4 segmente de timp care nu se
suprapun:
- segmentul de sincronizare
- segmentul de timp de propagare
- segmentul 1 de fază tampon
- segmentul 2 de fază tampon
Segmentul de sincronizare este folosit de noduri pentru a a se
sincroniza. Pe durata acestui segment se aşteaptă un front. Segmentul de
propagare este folosit pentru a compensa întărzierea fizică pe linie. Este d
două ori suma întârzierilor pe linie, a comparatorului unui receptor şi a
etajului de ieşire a emiţătorului. Segmentele de fază tampon sunt pentru a
compensa erorile de fază ale fronturilor. Punctul de eşantionare este punctul
în care nivelul de pe linie este interpretat ca valoarea bitului respectiv.
Funcţie de frecvenţa oscilatorului se defineşte o cuantă de timp care
este de regulă de 1 până la 32 de perioade de tact. Astfel segmentul de
sincronizare este de lungime egală cu o cuantă de timp, segmentul de
propagare are o lungime de 1, 2, ...8 cuante lungime, segmentul de fază 1 tot
de 1, 2,...8 cuante, iar segmentul de fază 2 durează 2, 3...8 cuante de timp.
Pe durata ultimului se realizează procesarea informaţiei. Lungimea totală a
duratei de bit este de 8 până la 25 de cuante de timp.

50
Teletransmisii de date Cap. 5 Protocoale seriale

Durata de bit

Segm Sincr Segm Propag Segm fază 1 Segm fază 2

Punct de
eşantionare

Fig. 4.28. Durata de bit

5.1.4. Formatul CAN extins


Pe lângă formatul CAN prezentat mai sus, există şi formatul CAN
extins. Diferenţa faţă de formatul standard îl constituie biţii SRR şi r1.
Bitul SRR este un bit regresiv şi se traduce ca bit de substituţie de
cerere la distanţă (Substitute Remote Request Bit) şi înlocuieşte bitul RTR
din formatul standard.
Câmp de Câmp de
Câmp de arbitrare control date

Identificator 8 biţi DLC


S R I r
O T D 0
F R E
Câmp de Câmp de
Câmp de arbitrare control date

Identificator 11 biţi Identificator 18 biţi DLC


S S I R r r
O R D T 1 0
F R E R

Fig. 4.29. Formatele CAN: standard şi extins

51

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