Documente Academic
Documente Profesional
Documente Cultură
Magistrala CAN • CAN bus a fost iniţial proiectată pentru electronica auto
• În prezent CAN este utilizat şi în alte aplicaţii decât
sistemele auto, cum ar fi control industrial, automatizări,
(controller area network / reţele de aparate medicale
• Organizaţia Internaţională pentru standarde împreună cu
reţeaua de control zonal) Society of Automotive Engineers (SAE) au definit câteva
noi protocoale bazate pe CAN
• Protocolul CAN implementează cele mai de jos două
niveluri ale modelului de referinţă OSI
1 2
Introducere Introducere
1. Nivelul legăturii de date este împărţit în
două subniveluri:
• Funcţionalitatea CAN poate fi – Nivelul legăturii logice: acceptă
mesajele printr-un proces de filtrare,
descrisă în două niveluri OSI: realizează notificarea de overload şi
sarcinile de administrare pentru
revenirea din eroare..
1. Nivelul legăturii de date
– MAC (controlul accesului la mediu):
2. Nivelul fizic realizează încapsularea datelor,
codarea cadrelor transmise,
administrarea mediului de acces,
semnalarea şi detectarea erorilor şi
sarcini de generare ACK
2. Nivelul fizic: acest nivel realizează
codarea şi decodarea biţilor, durata
biţilor, procesele de sincronizare
3 4
Principii de funcţionare CAN Principii de funcţionare CAN
• La nivelul fizic, mediul de comunicaţie a fost intenţionat • CAN bus a fost proiectat pentru a reduce cantitatea de fire
lăsat deoparte, la CAN (standard realizat prima oară la cerute în reţeaua de senzori auto
firma Bosh - Germania) pentru a permite proiectanţilor să • Fizic, mediul de transmisie fir, constă în două fire torsadate
adapteze şi optimizeze protocolul de comunicaţie pentru pe care se transmite semnal diferenţial. Este proiectată
diferite medii şi pentru flexibilitate maximă pentru medii ce lucrează uneori în condiţii extreme şi poate
– pereche de cabluri torsadate (cu ecran – STP, sau fără ecran opera chiar dacă:
– UTP) – un fir este întrerupt
– cablu singular – unul din fire este scurtcircuitat la masă
– izolare optică – unul din fire este scurtcircuitat la tensiunea de alimentare
– RF – cele două fire sunt întrerupte în acelaşi loc. În acest caz cele
– IR două capete vor funcţiona ca reţele separate.
– etc.
5 6
9 10
CAN-L
Ground
TX RX TX RX
Nod Nod
11 12
Stare magistrală pentru două noduri
Organizarea nod transmiţătoare (ŞI cablat)
• Controler CAN – stochează Microcontroler
biţii recepţionaţi bit cu bit Nod 1 Nod 2 Stare magistrală (AND)
până la terminare mesaj
• Transciever CAN - emiţător- Controler CAN
0 0 0 (dominant)
receptor cu adaptarea
nivelurilor de tensiune între 0 1 0 (dominant)
bus şi controler. Asigură şi Transceiver CAN 1 0 0 (dominant)
circuite de protecţie pentru
controler 1 1 1 (regresiv)
CAN - H
• Microcontroler – decide cu
privire la mesajele primite sau
transmise
CAN - L Deosebire faţă de I2C la ŞI cablat: la CAN se foloseşte
tensiune diferenţială !
13 14
15 16
Stare dominantă / regresivă Niveluri tensiune
CAN de mare viteză (ISO 898-2) CAN de mică viteză (ISO 898-3)
Nivel de valorile de niveluri de tensiune sunt orientative
tensiune (V)
3,5V
CAN -H 3,4V
Start Câmp de Câmp de Câmp de Câmp Câmp de EOF • IDENTIFICATORUL mesajului are lungimea de 11 biţi.
SOF arbitrare control date CRC confirmare (sfârşitul Aceşti biţi sunt transmişi începând cu MSb (ID10). Cei mai
cadrului)
semnificativi 7 biţi (ID-10 - ID-4) trebuie să conţină cel
puţin un bit dominant (să nu fie toţi regresivi).
• Ultimul bit al câmpului de arbitrare este RTR (Remote
Bit cerere ID
Identificator transmi- Cod lungime Ack Ack Transmit Request). RTR bit poate specifica o cerere de
exten- =0
sie la sie date slot delimi- transmisie la distanţă.
distanţă tator
• Într-un cadru de date bitul RTR trebuie să fie dominant (0 =
11 1 1 1 4 1 1 scriere). Într-un cadru la distanţă bitul RTR trebuie să fie
regresiv (1=cerere de date)
23 24
1. DATA FRAME 1. DATA FRAME
Codarea numărului de octeţi de date
• Câmpul de control constă din 6 biţi. Primii doi biţi sunt Număr de Cod lungime date
octeţi de date DLC3 DLC2 DLC1 DLC0
rezervaţi pentru a indica fie formatul standard fie formatul
0 d d d d
extins. Pentru formatul standard cei doi biţi rezervaţi trebuie 1 d d d r
să fie dominanţi. 2 d d r d
3 d d r r
• Următorii patru biţi codifică lungimea în număr de octeţi a
4 d r d d
datelor (data length code). 5 d r d r
• Codarea numărului de octeţi se face conform tabelului 6 d r r d
7 d r r r
următor, în care s-a notat cu d bit dominant şi cu r bit
8 r d d d
recesiv.
29 30
31
3. ERROR FRAME
3. ERROR FRAME
- stări eroare activă / pasivă -
• Un cadru de eroare poate fi generat de oricare nod care • Există două forme pentru un ERROR FLAG (determinarea stării
detectează o eroare pe magistrală
fiecărui nod descrisă mai jos):
• Cadrul de eroare constă dintr-un câmp fanion/indicator de
eroare urmat de un câmp delimitator de eroare cu 8 biţi – ACTIVE ERROR FLAG şi
regresivi. Câmpul delimitator de eroare permite magistralei să – PASSIVE ERROR FLAG.
revină la starea stabilă astfel încât să se poată relua transmisia
cadrului de date • ACTIVE ERROR FLAG constă din şase biţi dominanţi
• Primul câmp este generat prin suprapunerea fanioanelor de eroare consecutivi.
(ERROR FLAGs) provenite de la diferitele staţii conectate la • PASSIVE ERROR FLAG constă din şase biţi regresivi
magistrală
consecutivi cu excepţia cazului când ei sunt suprascrişi de biţi
dominanţi proveniţi de la alte noduri.
33 34
39 40
3. ERROR FRAME - tipuri de cadre 3. ERROR FRAME - tipuri de cadre
• Form Error (eroare de format)- dacă se recepţionează un bit • Eroare de umplere (stuff error)
dominant într-unul din segmentele: End of Frame, Interframe • Se foloseşte metoda NRZ, adică nivelul de tensiune se păstrează
Space, Acknowledge delimiter şi CRC Delimiter, protocolul acelaşi pe toată durata alocată unui bit.
CAN defineşte o violare de format şi se generează un Form • Uneori CAN funcţionează asincron, şi se face umplere cu biţi
Error. După un timp mesajul e retransmis. falşi pentru a permite sincronizarea nodurilor receptoare pe baza
• Bit error - apare în cazul în care se transmite un bit regresiv şi tranziţiilor. Dacă există mai mult de 5 biţi de aceeaşi
se recepţionează un bit dominant cu situaţiile: polaritate în linie (între SOF şi final câmp CRC), CAN va
– În timpul câmpului de arbitrare (ID) sau ACK, dacă transmiţătorul introduce automat un bit de polaritate opusă. Nodul receptor
trimite un bit regresiv şi detectează pe magistrală un bit dominant utilizează acest bit pentru sincronizare, dar îl va ignora atunci
nu se generează Bit error, pentru că se consideră că fie se produce când prelucrează datele.
operaţia de arbitrare normală fie că s-a conformat prin ACK
recepţia corectă. • Dacă între Start of Frame şi Delimitator CRC apar 6 biţi
– În celelalte cazuri rezultă generarea unui Error frame şi apoi
consecutivi de aceeaşi polaritate atunci s-a violat regula
retransmisie. împănării cu biţi de sincronizare, se produce Stuff Error şi se
generează un Error Frame. Mesajul va fi repetat.
41 42
43 44
SPAŢIEREA INTER-CADRE
4. OVERLOAD FRAME descriere câmpuri binare
• INTERMISSION (întrerupere / pauză) constă din 3 biţi regresivi. În
• Se pot genera maximum două cadre de tip OVERLOAD timpul acestui câmp nici o staţie nu are voie să transmită cadre de
DATA sau REMOTE. Singura acţiune permisă este semnalizarea unei
FRAME pentru a întârzia următorul cadru de tip DATA sau condiţii de tip overload.
REMOTE. • BUS IDLE este o perioadă de lungime arbitrară. Magistrala este
• Fanionul overload constă din 6 biţi dominanţi. Formatul general recunoscută ca liberă. Un mesaj care a aşteptat să fie transmis în timpul
corespunde celui pentru fanion de eroare activ. transmiterii altui mesaj este pornit la primul interval de bit după
INTERMISSION. Detecţia unui bit dominant pe magistrală este
• Fanionul overload distruge formatul fix al câmpului interpretată ca START OF FRAME.
INTERMISSION. Ca urmare toate celelalte staţii determină o • SUSPEND TRANSMISSION. După ce o staţie „eroare pasivă” a
condiţie de tip overload şi pornesc transmisia unui flag transmis un mesaj, ea transmite 8 biţi recesivi urmaţi de câmpul
overload. INTERMISSION, înainte de a transmite un alt mesaj sau de
recunoaşterea că magistrala este liberă. Dacă între timp porneşte
• Delimitatorul overload constă din 8 biţi regresivi. transmisia de la o altă staţie, staţia va deveni receptor al acestui mesaj,
deci suspendă transmisia.
45 46
• Cadrele DATA şi REMOTE sunt separate de cadrele • Pentru staţiile care nu sunt „eroare pasivă” sau care au fost
precedente indiferent de tipul acestora (DATA FRAME, receptoare la mesajele anterioare formatul este:
REMOTE FRAME, ERROR FRAME, OVERLOAD
FRAME) printr-un câmp binar numit spaţiu inter-cadre
(INTERFRAME SPACE).
• Spaţiul inter-cadre conţine câmpurile binare numite
– INTERMISSION şi
– BUS IDLE
– SUSPEND TRANSMISSION doar pentru staţiile „eroare pasivă”
care au fost transmiţătoare ale mesajelor anterioare
47 48
Starea de eroare Bit stuffing Doar pentru
DATA şi
OBSERVAŢII REMOTE
• Câmpurile din fluxul de biţi al unui cadru transmis pe magistrală
(START OF FRAME, ARBITRATION FIELD, CONTROL
FIELD, DATA FIELD şi CRC SEQUENCE) sunt codate prin
• O valoare contorizată mai mare de 96 indică o
metoda cu împănare de biţi (bit stuffing)
funcţionarea defectuoasă pe bus.
• De fiecare dată când transmiţătorul detectează o succesiune de
• La pornire, dacă un singur nod este on-line şi el cinci biţi consecutivi cu aceeaşi valoare, în fluxul transmis al
transmite mesaje, nu are de la cine primi ACK biţilor se inserează un bit cu valoare complementară
• Ca urmare detectează eroarea şi va repeta mesajul • Pentru cadrele de date (normal sau remote) biţii din câmpurile
următoare (CRC DELIMITER, ACK FIELD şi END OF
• El poate deveni eroare pasivă, dar nu şi bus off FRAME) au format fix şi nu sunt împănate cu biţi
pentru că este singur. • Cadrele ERROR FRAME şi OVERLOAD FRAME au formă
fixă şi nu sunt codate prin metoda împănării cu biţi
49 50
51 52
Observaţii privind arbitrarea Observaţii privind arbitrarea
• Dacă un nod transmiţător nu primeşte o confirmare pentru un
cadru de date, el va retransmite cadrul de date până când datele
sunt confirmate. Această acţiune corespunde nivelului legătură
de date (data link layer) din modelul OSI. • Se observă că magistrala CAN se bazează pe protocol
• Câmpul de arbitrare, inclus în cadrul de date, este utilizat pentru
de mesaj şi nu de adresă. Mesajele nu se transmit de
rezolvarea priorităţilor mesajelor de pe magistrală. la un nod la altul pe bază de adresă. Se transmite
mesaj care e recepţionat de toate nodurile
• Câmpul de arbitrare poate avea 12 biţi (11 ca identificator şi un
bit RTR) sau 32 biţi (29 biţi de identificare, 1 bit ce defineşte că • Fiecare nod decide dacă va neglija mesajul sau va
este vorba de un câmp de date extins, un bit SRR neutilizat şi un prelucra mesajul. Mesajele pot fi destinate unui singur
bit RTR, în funcţie de versiunea de standard CAN utilizată. nod sau mai multor noduri
• Fiecare nod recepţionează, sau neglijează un mesaj pe
baza ID-ului mesajului.
53 54
57 58
59 60
Variante ale CAN
• SAE J2411. CAN pe un singur fir (Single-wire CAN = SWC).
Single Wire CAN este un nivel fizic de mică putere şi viteză
redusă utilizat mai ales în aplicaţiile auto. El utilizează
tranceivere de tip AU5790.
• MilCAN - e definit pentru a fi utilizat în vehicule militare
terestre unde este necesar un protocol de diagnosticare. El
defineşte un set de reguli de utilizare şi un nivel de software
peste nivelurile reţelei CAN convenţionale. S-a introdus un nod
master de sinconizare (pentru sincronizare pseudo-hardware) şi
care transmite pe magistrală cadre de sincronizare ce includ şi
un număr al slotului de timp de sincronizare. Există două
variante, MilCAN A foloseşte identificatori pe 29 de biţi, iar
MilCAN B foloseşte identificatori de 11 biţi.
61