Sunteți pe pagina 1din 14

Magistrala CAN (Controller Area Network)

CAN este un protocol de comunicatie seriala care suporta eficient controlul distribuit, in timp real, asigurand in acelasi timp un nivel foarte ridicat de fiabilitate a transmisiei. Specificatiile magistralei, descrise in standardul ISO 11898, se refera la implementarea primelor doua nivele ale modelului de referinta OSI si anume nivelul fizic si cel al legaturii de date. Reteaua CAN a fost dezvoltata pentru aplicatii de tip automotive unde conecteaza, in interiorul unui autovehicul, unitati centrale pentru comanda motorului, a deschiderii/inchiderii usilor si geamurilor, a stergatoarelor de parbriz, a sistemelor de securitate etc. Datorita performantelor deosebite, CAN este utilizata tot mai mult si in alte domenii cum sunt: conducerea automata a proceselor, robotica, automatizarea cladirilor, aparatura medicala complexa etc. Principalele caracteristici ale unei retele CAN sunt urmatoarele:

sistem multimaster, fara un master central arbitrare pentru acces la bus pe baza prioritii mesajului receptia mesajului de ctre toate staiile cu posibilitatea filtrarii acestuia detecia i semnalizarea erorilor retransmisia automat a mesajelor corupte imediat ce magistrala devine libera difereniere ntre erori temporare i permanente cu decuplarea nodurilor defecte configuraie flexibil

1. Nivelul fizic
Nivelul fizic defineste: Caracteristici pentru cablurile si conectoarele utilizate Caracteristicile transceiver-ului utilizat pentru adaptarea semnalelor la magistrala Codificarea / decodificarea informatiei transmise Generarea timpului de bit Sincronizarea la nivel de bit

Reteaua CAN standard utilizeaza o topologie liniara si un cablu cu doua fire, notate CAN_H si CAN_L la care se conecteaza, in paralel, toate nodurile retelei prin

conexiuni cat mai scurte. Pentru minimizarea fenomenului de reflexie pe linie, la ambele capete se folosesc terminatori de linie de 120 ohm (figura 1_1.) Pentru a reduce interferentele electromagnetice, transmisia pe magistrala este de tip diferential. Astfel, cele doua linii sunt influentate in acelasi mod de radiatiile electromagnetice, semnalul diferential nefiind afectat (Vdiff = constant).

Figura 1_1. Topologia unui bus CAN si influentele electromagnetice Un nod sesiseaza un nivel dominant daca CAN_H > CAN_L + 0.9V si un nivel recesiv daca CAN_H < CAN_L + 0.5V. Tensiunnea nominala in starea dominanta este de 3.5V pentru CAN_H si de 1.5V pentru linia CAN_L ( figura 1_2. ).

Figura 1_2. Nivelele de tensiune pe bus Structura unui nod CAN inteligent presupune un microcontroler cu interfata CAN inclusa si un tranceiver pentru adaptarea semnalelor la magistrala diferentiala (figura 1_3).

Figura 1_3. Structura unui nod CAN La nivel fizic, la microcontroller, codarea utilizata este NRZ (Non Return to Zero) si presupune doua nivele de tensiune: zero volti, nivel denumit dominant si 5V pentru nivel recesiv. Utilizind NRZ, atunci cind se transmit mai multi biti consecutivi de acelasi tip, apare problema lipsei fronturilor semnalului generat (a comutarii intre nivele) care sunt utilizate pentru resincronizare (figura 1_4). De aceea se utilizeaza metoda inserarii de biti (bit stuffing) care presupune inserarea dupa cinci biti de aceeasi polaritate a unuia complementar, care, evident este eliminat la receptie (figura 1_5).

Figura 1_4. Codificarea NRZ

Figura 1_5. Metoda inserarii de biti Intre viteza de transmisie si lungimea magistralei CAN exista o relatie invers proportionala asa cum se observa in figura 1_5.1.

Figura 1_5.1. Corespondenta viteza de transfer si lungime magistrala 4

Timpul de bit Timpul in care este receptionat un bit se construieste pornind de la unitatea elementara de timp numita Cuanta de Timp (Time Quantum) notata tq. Timpul de Bit Nominal (TBN) este impartit in 4 segmente de timp, fiecare segment fiind un multiplu de tq (figura 1_6) SYNC_SEG (1tq). Este utilizat pentru sincronizarea diferitelor noduri de pe magistrala. In acest segment este asteptat un front in semnalul de intrare. PROP_SEG (1 - 8tq). Este utilizat pentru a compensa intarzierea semnalelor pe magistrala PHASE_SEG1, SEG2. Sunt utilizati pentru a compensa intirzierea unui front pe semnalul de intrare (PHASE_SEG1 este 1-8 tq; PHASE_SEG2 este maximul dintre PHASE_SEG1 si TP timpul de procesare).

Figura 1_6. Structura timpului de bit nominal Punct de esantionare (PE) (Sample Point) este momentul de timp la care este citit nivelul de tensiune pe magistrala si considerat ca valoare logica a bitului respectiv. Timp de procesare (TP, 1 2 tq) este perioada de timp ce urmeaza PE, necesar pentru a calcula nivelul logic al bitului. Parametrii de timp precizati anterior (tq, cele 4 segmente de timp, TP) sunt programabili; implicit TBN este programabil intre 8 si 25 tq. Sincronizarea transferului de date Fiecare nod CAN este pilotat de un oscilator propriu. Pot apare astfel diferente de faza in diferite noduri. Din acest motiv, fiecare controler CAN implementeaza un mecanism de sincronizare atunci cind receptioneaza un mesaj. Distingem 2 moduri de sincronizare: Sincronizare hard. Este realizata pe frontul descrescator, cand magistrala este in stare neocupata (Idle State). Frontul este interpretat ca start al unui nou mesaj (Start of Frame SOF) si este reinitializata baza de timp. Sincronizare soft (numita si Resincronizare)

Un front pe semnalul de intrare este, in mod obisnuit, asteptat in segmentul SYNC_SEG, caz in care transmitatorul si receptorul sunt sincronizate. In cazul unui transmitator mai lent, frontul este detectat in segmentul PROP_SEG. Pentru a asigura un PE corect, receptorul mareste segmentul PHASE_SEG1 (figura 1_7) cu cantitatea programabila RJW (Resynchronization Jump Width = 1 4 tq ).

Figura 1_7. Resincronizare pentru un transmitator mai lent In cazul unui transmitator mai rapid, frontul este detectat in zona PHASE_SEG2 al bitului anterior, iar receptorul scurteaza segmentul PHASE_SEG2 curent cu aceeasi cantitate programabila RJW (figura 1_8).

Figura 1_8. Resincronizare pentru un transmitator mai rapid

Frontul pe care se face sincronizarea soft este programabil, dar se recomanda ca in cazul unei rate de transfer mari ( > 100 Kbiti/s ) aceasta sa se faca doar pe frontul descrescator. Este permisa doar o sincronizare pe durata unui bit. Tabelul prezinta o recomandare pentru relatia dintre viteza de transfer, lungimea magistralei si parametrii de timp precizati anterior.

2. Nivelul legatura de date


Nivelul legatura de date este cel care recunoaste si intelege formatul mesajelor transmise pe magistrala. Principalele sale functiuni sunt : Generarea / receptionarea si interpretarea mesajelor Managementul accesului la mediul de comunicatie Filtrarea mesajelor Managementul erorilor de comunicatie Magistrala CAN implementeaza un model de comunicatie de tipul ProducatorConsumator (figura 2_0). Astfel fiecare statie poate asculta mesajele transmise de producator si poate decide daca acestea sunt acceptate sau nu.

Figura 2_0. Comunicatie producator-consumator Standardul CAN precizeaza urmatoarele tipuri de mesaje :

mesaj de date (data frame) mesaj cerere pentru transmisie de date (remote data frame) mesaj de eroare (error frame) mesaj de intirziere a transmisiei (overload frame) mesaj intermediar (interframe spacing)

2.1. Mesajul de date (data frame)

Un nod CAN construieste un mesaj de date (figura 2_1) atunci cind doreste sa transmita date sau cind acest lucru este solicitat de un alt nod (printr-o cerere de transmisie).

Figura 2_1. Mesajul de date si structura cimpului de arbitrare Rolul cimpurilor de biti care alcatuiesc un mesaj de date este urmatorul : Bit de START = 1bit (dominant). Un mesaj de date incepe cu un bit de START (SOF Start Of Frame), utilizat pentru sincronizarea hard a tuturor nodurilor Campul de arbitrare = 12biti (sau 32biti) Contine un identificator pe 11 biti, care indica prioritatea mesajului si este utilizat pentru arbitrare in cazul tentativelor de acces simultan si un al doisprezecelea bit (dominant), cu functie de cerere de transmisie, notat RTR (Remote Transmision Request) Campul de control = 6 biti Daca primul bit al cimpului, IDE (Identifier Extension) are valoare dominanta el identifica asa numitul mesaj CAN standard cu identificator pe 11 biti. Specificatia CAN defineste si un mesaj CAN extins care foloseste un identificator pe 29 biti, pentru care bitul IDE are valoare recesiva. Bitul r0 este rezervat iar urmatorii patru biti indica lungimea cimpului de date care urmeaza in mesaj Campul de date = 0 la 64 biti (0 8 octeti) Contine informatia utila (datele) mesajului Campul CRC = 16 biti (inclusiv delimitatorul CRC care este un bit dominant) contine suma de control CRC calculata pentru sirul de biti anteriori ai mesajului (cele patru cimpuri anterioare), utilizata pentru detectia erorilor. Polinomul generator este : G(x) = x15 + x14+ x10+ x8+ x7+ x4+ x3 + 1 Se demonstreaza ca aceasta suma asigura detectia a pina la 5 erori de bit si a erorilor in rafala de pina la 15 biti. 9

Campul de confirmare = 2 biti (inclusiv delimitatorul ACK care este un bit dominant) Nodul CAN care transmite mesajul pozitioneaza bitul ACK la nivel recesiv. Toate nodurile din retea care receptioneaza mesajul corect forteaza pentru acest bit nivelul dominant. De asemenea, transmitatorul citeste bitul de pe magistrala si interpreteaza ca eroare lipsa nivelului dominant (nici un nod nu a receptionat corect mesajul transmis) Campul de sfirsit al mesajului = 7 biti (dominanti) Cimpul EOF (End Of Frame) marcheaza sfirsitul unui mesaj de date CAN.

2.2. Mesajul cerere pentru transmisie de date (remote data frame)


Un nod CAN poate solicita un transfer de date trimitind un mesaj cerere pentru transmisie de date (remote data frame) cu o structura asemanatoare cu a mesajului anterior. Exista doua diferente: bitul RTR este transmis cu un nivel recesiv si nu exista cimpul de date. Toate nodurile pot receptiona cererea si pe baza identificatorului mesajului pot stabili daca li se solicita date. Raspunsul la o cerere, poate fi intirziat de alte mesaje care se transmit pe magistrala datorita unei prioritati mai mari. De asemenea, acest raspuns poate fi receptionat si de alte noduri (in afara celui care a transmis cererea) interesate de datele transmise.

2.3. Mesajul de intirziere a transmisiei (Overload Frame)


Acest mesaj este generat cand un controler CAN nu are posibilitatea de a incepe receptia unui nou mesaj de date datorita unor operatii interne. Mesajul de intirziere a transmisiei contine doua cimpuri: un flag de intirziere (6 biti dominanti) si un delimitator de cimp. Standardul contine si alte precizari privind structura si utilizarea acestui mesaj.

2.4. Mesajul intermediar (Interframe Spacing)


Un mesaj de date sau cerere pentru transmisie de date este separat de mesajele precedente printr-un camp de biti denumit mesaj intermediar.

3. Mecanismul de acces la magistrala


Mecanismul de acces la magistrala prevazut de stadardul CAN este arbitrarea pe baza prioritatii mesajului de transmis. Nivelul de prioritate este dat de identificatorul pe 11 biti (in formatul standard) din cimpul de arbitrare. Arbitrarea este nedistructiva deoarece nodul CAN cu mesajul de prioritate maxima si care castiga dreptul de acces in retea nu trebuie sa reia mesajul de la inceput. Implementarea mecanismului de acces presupune si proiectarea adecvata a tranceiverului CAN 10

care trebuie sa asigure, fizic, posibilitatea ca un nivel recesiv pe bus sa fie fortat la un nivel dominant transmis de controlerul CAN. Mecanismul de acces la magistrala este CSMA/CD + AMP (Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority) Ascultarea mediului, acces multiplu cu sesizarea unei coliziuni si arbitrare pe baza prioritatii mesajului si este ilustrat in figura 3_1.

Figura 3_1. Metoda de acces la magistrala Conform acestui algoritm cele trei noduri CAN care doresc sa transmita, monitorizeaza busul si asteapta pina cind acesta devine liber (Carrier Sense). In acel moment, toate nodurile pornesc transmisia prin bitul de Start (dominant) (Multiple Access). Fiecare nod monitorizeaza continuu bus-ul citind valoarea curenta si comparand-o cu cea transmisa. In momentul in care apar diferente in figura pentru nodul 2 la bitul 5 si pentru nodul 1 la bitul 2 nodul sesizeaza coliziunea (Collision Detection). Astfel, nodul 2, de exemplu, pierde arbitrarea la bitul 5 deoarece are un mesaj cu prioritate mai mica (Arbitration on Message Priority), inceteaza transmisia si trece pe receptie deoarece ar putea fi interesat tocmai de mesajul care va cistiga arbitrarea curenta.

4. Managementul erorilor
Managementul erorilor este o caracteristica importanta a standardului CAN prevazuta la nivelul legaturii de date. Orice eroare detectata de un nod este imediat adusa la cunostinta tuturor nodurilor din retea (printr-un mesaj de eroare), care renunta la mesajul curent. De asemenea este informat si nodul care a transmis mesajul, care va incerca sa il retransmita, atunci cand bus-ul devine liber. Managementul erorilor presupune trei etape: detectia, tratarea si limitarea erorilor. Detectia erorilor Controlerul CAN are abilitatea de a detecta cinci tipuri de erori : eroare de bit bitul transmis pe bus nu coincide cu cel citit 11

eroare de inserare se detecteaza o secventa de cel putin sase biti consecutivi de aceeasi polaritate eroare CRC - CRC calculat la receptie nu corespunde cu cel transmis pe bus eroare de format se detecteaza o structura de biti incorecta in cimpurile cu structura fixa (delimitator CRC, delimitator ACK, cimpul EOF) eroare de confirmare nici o statie nu confirma receptia corecta a mesajului transmis (in cimpul ACK).

Tratarea erorilor Un nod CAN care detecteaza o eroare, semnaleaza acest lucru prin transmiterea unui flag activ de eroare (sase biti consecutivi dominanti). La rindul sau, flagul incalca regula de inserare de biti (maxim 5 biti de aceeasi polaritate) sau altereaza structura de biti in cimpurile cu forma fixa. Ca rezultat, alte noduri din retea vor detecta eroare (provocata de primul flag) si vor transmite flaguri de eroare. Pe magistrala, va rezulta o secventa de biti din suprapunerea flagurilor de eroare transmise de fiecare nod si care formeaza asa-numitul mesaj de eroare (figura 4_1). Mesajul de eroare consta din doua campuri: primul rezulta din suprapunerea flagurilor de eroare transmise de noduri (intre 6 si 12 biti), iar al doilea este delimitator de cimp (8 biti recesivi).

Figura 4_1. Mesajul de eroare Mecanismul de globalizare a erorilor enuntat mai sus este prezentat si in figura 4_2. Astfel, receptorul 2 detecteaza o eroare si transmite primul flag de eroare (6 biti dominanti). Receptorul 1 sesizeaza o eroare de inserare (de exemplu) si transmite un nou flag de eroare, rezultind astfel primul cimp al mesajului de eroare (6 12 biti). Dupa alti 11 biti (8 + 3), transmitatorul poate incerca sa retransmita mesajul corrupt.

12

Figura 4_2. Globalizarea erorilor Limitarea erorilor Standardul CAN prevede un algoritm special de limitare a erorilor pentru a evita blocarea retelei prin permanente mesaje de eroare ce provin de la noduri puternic perturbate. Astfel, un nod CAN se poate afla in una din cele trei stari de eroare posibile : 1. Stare activa nodul poate lua parte la comunicatia din retea si poate transmite un flag activ de eroare (6 biti dominanti) la detectia unei erori 2. Stare pasiva nodul nu poate lua parte la comunicatia din retea si poate transmite un flag pasiv de eroare (6 biti recesivi) la detectia unei erori 3. Stare decuplata nodul este decuplat de la retea si nu poate lua parte la comunicatie. Starile de eroare depind de valoarea celor doua numaratoare de eroare prezente in fiecare controler CAN: numarator de erori la receptie (REC Receive Error Counter) si numarator de erori la transmisie (TEC Transmit Error Counter). Starile de eroare (figura 4_3) se definesc prin urmatoarele conditii : 1. Stare activa valoarea REC si TEC mai mica sau egala cu 127 2. Stare pasiva cel putin unul din numaratoare mai mare decit 127 si TEC mai mica sau egala cu 255 3. Stare decuplata valoarea TEC mai mare decit 255

Figura 4_3. Starile de eroare pentru nodurile CAN Numaratoarele de eroare sunt modificate (incrementate sau decrementate) pe baza unor reguli prevazute de standard, trecerea intre stare activa si pasiva realizindu-se automat de controlerul CAN. Starea decuplata poate fi parasita doar printr-o initializare hard sau soft.

13

Bibliografie Konrad Etschberger, Controller Area Network

Basics, Protocols, Chips and Applications, ISBN 3-00-007376-0, Editura IXXAT Press, 88250 Weingarten/Germany 2001

14

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