Documente Academic
Documente Profesional
Documente Cultură
#1 CAN-2 0-Rom
#1 CAN-2 0-Rom
Istoric
Acceptarea şi introducerea comunicaţiilor seriale la din ce în ce mai multe aplicaţii a
condus la cerinţe în ceea ce priveşte atribuirea mesajelor de identificare pentru
standardizarea funcţiilor de comunicaţii pentru anumite aplicaţii. Aceste aplicaţii pot fi
realizate mult mai simplu cu CAN dacă domeniul de adresă definit iniţial cu 11 biţi de
identificare este lărgit.
Ca urmare, a fost introdus al doilea format de mesaj (“format extins”) pentru a
asigura un domeniu extins definit de 29 de biţi. Aceasta va elibera pe proiectantul de
sistem de la compromisuri în ceea ce priveşte definirea schemelor stabilite bine
structurate. Utilizarea CAN care nu are nevoie de domeniul de identificare oferit de
formatul extins, poate să se pe mai departe bizuie pe domeniul convenţional al
identificatorului de 11 biţi (“format standard”). În acest caz se poate face uz de
implementările CAN deja disponibile pe piaţă sau de noile controlere ce
implementează ambele formate.
Pentru a deosebi formatul standard şi cel extins, se foloseşte primul bit rezervat din
mesajul format CAN, aşa cum se defineşte în specificaţia CAN 1.2. Aceasta se face
în aşa fel încât formatul mesajului în specificaţia CAN 1.2 este echivalent cu formatul
standard şi ca urmare încă este valabil. În plus, formatul extins a fost definit astfel
încât mesajele în format standard şi în format extins pot exista în interiorul aceleiaşi
reţele.
• Partea A ce descrie formatul mesajului CAN, aşa cum este definit în Specificaţia
CAN 1.2;
NOTA
Implementările CAN care sunt proiectate conform cu specificaţiile din Partea A sau
conform cu specificaţiile anterioare şi implementările CAN proiectate în concordanţă
cu specificaţiile din Partea B pot comunica una cu cealaltă, atât timp cât nu se face
uz de formatul extins.
PARTEA A
1 INTRODUCERE .................................................................................... 4
2 CONCEPTE DE BAZĂ......................................................................... 10
5 CODIFICAREA ................................................................................... 22
1 INTRODUCERE
Un controler de zonă a reţelei (Controller Area Network) CAN este un protocol de
comunicaţii seriale care sprijină controlul distribuit în timp real cu un nivel de
securitate foarte înalt.
Domeniul său de aplicare se întinde de la reţelele de mare viteză până la cablarea
mutiplexată de preţ scăzut. În electronica auto se conectează unităţi de control ale
motorului, senzori, unitaţi anti-derapare etc., folosind CAN cu rate de bit de până la 1
Mbit/s. În acelaşi timp este eficient pentru a fi utilizat la partea electronică de pe
caroserie, cum ar fi ansamblul de lămpi, acţionarea electrică a geamurilor etc. pentru
a înlocui arborele de cabluri altfel necesar.
Intenţia acestei specificaţii este de a realiza compatibilitatea între oricare două puneri
în aplicare CAN. Totuşi, compatibilitatea are aspecte diferite în ceea ce priveşte
caracteristicile electrice şi interpretarea datelor care trebuie transferate. Pentru a
realiza transparenţa proiectării şi flexibilităţii punerii în aplicare, CAN a fost
subîmpărţit în diferite straturi:
Stratul obiect şi stratul transfer conţin toate serviciile şi funcţiile stratului de legătură a
datelor (data link) definite de modelul ISO/OSI. Domeniul stratului obiect include:
2 CONCEPTE DE BAZĂ
CAN are următoarele proprietăţi:
• prioritizarea mesajelor
• garantarea timpilor de latenţă
• flexibilitatea configuraţiei
• recepţie multicast cu sincronizare de timp
• consistenţă mărită a datelor în sistem
• multimaster
• detectarea şi semnalarea erorilor
• retransmisia automată a mesajelor perturbate de îndată ce magistrala este din
nou la modul mers în gol
• distincţie între erorile temporare şi defectele permanete ale nodurilor şi
deconectarea autonomă a nodurilor defecte
Stratul aplicaţie
Stratul obiect
- Filtrarea mesajului
- Manipulare mesaj şi stare
Stratul transfer
- Limitarea defectelor
- Detecţia şi semnalarea erorilor
- Validarea mesajelor
- Confirmarea
- Formarea cadrelor mesaj
- Rata de transfer şi sincronizarea
Stratul fizic
- Nivelele de semnal şi reprezentarea biţilor
- Mediul de transmisie
Mesajele
Informaţia pe magistrală este transmisă în mesaje de format fix de diferite lungimi dar
limitate (vezi secţiunea 3: Transferul Mesajului). Când magistrala este liberă, orice
unitate conectată poate începe să transmită un mesaj nou.
Rutarea Informaţiilor
În sistemele CAN, un nod CAN nu foloseşte nicio informaţie despre configuraţia
sistemului (de exemplu adresele staţiilor). Acest fapt are câteva consecinţe
importante.
Rata de bit
Viteza CAN poate fi diferită în sisteme diferite. Totuşi, într-un sistem dat, rata de bit
este uniformă şi fixă.
Priorităţi
IDENTIFICATORUL defineşte o prioritate statică a mesajului pe durata accesului la
magistrală.
Multimaster
Când magistrala este liberă, orice unitate poate începe să transmită un mesaj.
Unitatea cu mesajul cu cea mai înaltă prioritate care trebuie transmis câştigă accesul
la magistrală.
Arbitrarea
Când magistrala este liberă, orice unitate poate începe să transmită un mesaj. Dacă
două sau mai multe unităţi încep să transmită mesaje în acelaşi timp, conflictul
accesului pe magistrală se rezolvă printr-o arbitrare la nivel de bit, folosind
IDENTIFICATORUL. Mecanismul arbitrării garantează că nu se pierde nici
informaţie, nici timp. Dacă un CADRU DATE şi un CADRU DE LA DISTANŢĂ cu
acelaşi IDENTIFICATOR sunt iniţiate în acelaşi timp, CADRUL DATE are întâietate
faţă de CADRUL DE LA DISTANŢĂ. Pe durata arbitrării, fiecare transmiţător
compară nivelul bitului transmis cu nivelul bitului urmărit pe magistrală. Dacă aceste
nivele sunt egale, unitatea centrală continuă să transmită. Când se transmite un nivel
‘recesiv’ şi pe magistrală este monitorizat un nivel ‘dominant’ (a se vedea Valori pe
Magistrală), unitatea a pierdut arbitrarea şi trebuie să se retragă fără a mai transmite
vreun bit.
Siguranţa
În vederea asigurării siguranţei extreme a transferului de date, sunt aplicate în
fiecare nod CAN măsuri puternice pentru detectare, semnalare şi autoverificare.
Detecţia Erorilor
Pentru detecţia erorilor au fost luate următoarele măsuri:
- Monitorizarea (transmiţătoarele compară nivelele de bit care trebuie transmise
cu nivelele de bit detectate pe magistrală)
- Verificare Redundanţă Ciclică (CRC)
- Bit Stuffing (Biţi de Umplutură)
- Verificare Cadru Mesaj.
Probabilitatea erorii reziduale pentru mesaje perturbate nedectate este mai mică de:
Blocarea Defectelor
Nodurile CAN au capacitatea de a face distincţie între perturbaţiile de scurtă durată şi
defectele permanente. Nodurile defecte sunt deconectate.
Conexiunile
Legătura de comunicaţie serială CAN este o magistrală la care se pot conecta un
anumit număr de unităţi. Acest număr este teoretic nelimitat. În mod practic, numărul
total de unităţi va fi limitat de timpii de întârziere şi/sau de sarcinile electrice de pe
linia magistralei.
Canal Unic
Magistrala constă dintr-un canal unic care transportă biţii. De la aceasta se poate
obţine informaţia resincronizată de date. Modul în care este aplicat în practică acest
canal nu este fixat prin această specificaţie. De exemplu: un singur fir (plus masa),
două fire diferenţiale, fibre optice etc.
Valorile de pe magistrală
Magistrala poate avea două valori logice complementare: ’dominant’ sau ’recesiv’. Pe
timpul transmisiei simultane a biţilor ’dominant’ şi ’recesiv’, valoarea rezultată pe
magistrală este ’dominant’. Se exemplu, în cazul implemetării ŞI cablat a magistralei
nivelul ’dominant’ va fi reprezentat de un nivel logic ’0’ şi nivelul ’recesiv’ de un logic
’1’. Stările fizice (de exemplu tensiune, lumină), care reprezintă nivelele logice, nu
sunt date în această specificaţie.
Confirmarea
Toate receptoarele verifică consistenţa mesajului recepţionat şi vor confirma un
mesaj consistent şi vor semnala un mesaj inconsistent.
3 TRANSFERUL MESAJULUI
3.1 Tipuri de cadre
Spaţiu Spaţiu
intercadre CADRU DATE intercadre
sau
Cadru
supra-
sarcină
Start cadru
Câmp arbitrare
Câmp control
Câmp date
Câmp CRC
Sfârşit cadru
START CADRU
marchează începutul CADRULUI DATE şi CADRELOR DE LA DISTANŢĂ. El constă
dintr-un singur bit ’dominant’.
O staţie are permisiunea să înceapă transmisia când magistrala este la mers în gol
(a se vedea MAGISTRALA LA MERS ÎN GOL). Toate staţiile trebuie să se
sincronizeze cu frontul conducător determinat de START CADRU (a se vedea
SINCRONIZARE HARD) de la staţia care începe prima transmisia.
CÂMPUL ARBITRARE
CÂMPUL ARBITRARE constă din biţii IDENTIFICATOR şi BITUL RTR.
Bit RTR
Identificator
IDENTIFICATORUL
Lungimea IDENTIFICATORULUI este de 11 biţi. Aceşti biţi sunt transmişi în ordinea
ID-10 la ID-0. Cel mai puţin semnificativ bit este ID-0. Primii 7 cei mai semnificativi
biţi (ID-10 ÷ ID-4) nu trebuie să fie toţi ’recesivi’.
BITUL RTR
Bitul Cerere Transmisie de la Distanţă
În CÂMPURIULE DATE, BITUL RTR trebuie să fie ’dominant’. În interiorul unui
CADRU DE LA DISTANŢĂ, BITUL RTR trebuie să fie ’recesiv’.
CÂMPUL CONTROL
CÂMPUL CONTROL constă din şase biţi. El include CODUL LUNGIME DATE şi doi
biţi rezervaţi pentru extinderi ulterioare. Biţii rezervaţi trebuie transmişi ’dominanţi’.
Receptoarele acceptă biţii ’dominanţi’ şi ’recesivi’ în toate combinaţiile.
prescurtări d – ’dominant’
r – ’recesiv’
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
CÂMPUL DATE
CÂMPUL DATE constă din datele care trebuie transferate în interiorul unui CADRU
DATE. El poate conţine de la 0 la 8 octeţi, fiecare conţinând 8 biţi care sunt
transferaţi începând cu bitul de semnificaţie maximă MSB.
CÂMPUL CRC
conţine SECVENŢA CRC, urmată de un DELIMITATOR CRC.
sau
Control
Delimitator CRC
Secvenţă CRC
SECVENŢA CRC
Secvenţa de verificare a cadrului derivă dintr-un cod cu redundanţă ciclică cel mai
convenabil pentru cadre ce numără mai puţin de 127 biţi (cod BCH).
Pentru realizarea calculului CRC, este definit polinomul care trebuie împărţit,
coeficienţii săi fiind daţi de curentul de biţi destuffed („dezumpluţi”) constând din
START CADRU, CÂMP ARBITRARE, CÂMP CONTROL, CÂMP DATE (dacă acesta
este prevăzut) şi de valori 0 pentru cei 15 cei mai inferiori coeficienţi. Polinomul este
împărţit (coeficienţii sunt calculaţi modulo 2) la polinomul generator:
IF CRCNXT THEN
CRC_RG(14:0) = CRC_RG(14:0) EXOR (4599hex);
ENDIF
UNTIL (începe SECVENŢA CRC sau există o condiţie de EROARE)
După transmisia / recepţia ultimului bit din CÂMPUL DATE, CRC_RG conţine
secvenţa CRC.
DELIMITATOR CRC
SECVENŢA CRC este urmată de DELIMITATOR CRC care constă dintr-un singur bit
’recesiv’.
Delimitator ACK
Fantă ACK
FANTA ACK
Toate staţiile care au recepţionat SECVENŢA CRC potrivită, raportează aceasta în
interiorul FANTEI ACK prin suprascrierea peste bitul ’recesiv’ de la TRANSMIŢĂTOR
a unui bit ’dominant’.
DELIMITATORUL ACK
DELIMITATORUL ACK este cel de-al doilea bit din CÂMPUL ACK şi trebuie să fie un
bit ’recesiv’. Drept consecinţă, FANTA ACK este înconjurată de doi biţi ’recesivi’
(DELIMITATOR CRC, DELIMITATOR ACK).
SFÂRŞIT CADRU
Fiecare CADRU DATE şi CADRU DE LA DISTANŢĂ este delimitat de o secvenţă
flag (de semnalizare) care constă din şapte biţi ’recesivi’.
sau
Cadru
supra-
sarcină
Start cadru
Câmp arbitrare
Câmp control
Câmp CRC
Sfârşit cadru
Polaritatea bitului RTR indică dacă un cadru transmis este CADRU DATE (bitul RTR
’dominant’) sau CADRU DE LA DISTANŢĂ (bitul RTR ’recesiv’).
CADRUL EROARE constă din două câmpuri diferite. Primul câmp este dat din
suprapunerea FLAGURILOR EROARE cu care contribuie diferite staţii. Cel de-al
doilea câmp care urmează este DELIMITATORUL EROARE.
Spaţiu
Cadru CADRU EROARE intercadre
date sau
Suprapunere
flaguri eroare Delimitator Eroare
Pentru a termina în mod corect CADRUL EROARE, un nod ’eroare pasivă’ are
nevoie ca magistrala să fie ’magistrala la mers în gol’ pentru cel puţin 3 perioade de
bit (dacă există o eroare locală la un receptor ’eroare pasivă’). Ca urmare, magistrala
nu trebuie încărcată 100%.
FLAGUL EROARE
Există două forme ale FLAGULUI EROARE: un FLAG EROARE ACTIVĂ şi un FLAG
EROARE PASIVĂ.
2. FLAGUL EROARE PASIVĂ constă din şase biţi ’recesivi’ consecutivi, afară de
cazul când este suprascris cu biţi ’dominanţi’ de la alte noduri.
O staţie ’eroare activă’ care detectează o condiţie de eroare semnalizează acest fapt
prin transmiterea unui FLAG EROARE ACTIVĂ. FLAGURILE EROARE încalcă legea
biţilor de umplutură (a se vedea CODIFICAREA) aplicată tuturor câmpurilor de la
START CADRU până la DELIMITATORUL CRC sau distruge forma fixată a
câmpurilor ACK sau SFÂRŞIT CADRU. Ca urmare, toate celelalte staţii detectează o
condiţie de eroare şi la rândul lor încep transmisia unui FLAG EROARE. Astfel,
secvenţa de biţi ’dominanţi’ care de fapt pot fi urmăriţi pe magistrală rezultată prin
suprapunerea diferitelor FLAGURI EROARE transmise de staţiile individuale.
Lungimea totală a acestei secvenţe variază între minim şase şi maxim doisprezece
biţi.
DELIMITATORUL EROARE
DELIMITATORUL EROARE constă din opt biţi ’recesivi’.
După transmiterea unui FLAG EROARE, fiecare staţie trimite biţi ’recesivi’ şi
supraveghează magistrala până când detectează un bit ’recesiv’. După aceea începe
transmisia a încă şapte biţi ’recesivi’.
Flag Cadru
Suprasarcină supra-
sarcină
Suprapunere
flaguri suprasarcină Delimitator
Suprasarcină
Pot fi generate cel mult două CADRE SUPRASARCINĂ pentru a întârzia următorul
CADRU DATE sau CADRU DE LA DISTANŢĂ.
FLAGUL SUPRASARCINĂ
constă din şase biţi ’dominanţi’. Forma generală corespunde celei a FLAGULUI
EROARE ACTIVĂ.
DELIMITATORUL SUPRASARCINĂ
constă din opt biţi ’recesivi’.
SPAŢIUL INTERCADRE
conţine câmpurile de bit PAUZĂ şi MERS ÎN GOL MAGISTRALĂ şi, pentru staţiile
’eroare pasivă’ care au fost TRANSMIŢĂTORUL mesajului anterior, SUSPENDARE
TRANSMISIE.
Mers în gol
Pauză magistrală
PAUZA
constă din trei biţi ’recesivi’.
SUSPENDARE TRANSMISIE
După ce o staţie ’eroare pasivă’ a transmis un mesaj, ea trimite opt biţi ’recesivi’
urmând după PAUZĂ, înainte de a începe să transmită un nou mesaj sau să
recunoască magistrala ca fiind la mers în gol. Dacă între timp începe o altă
transmisie (provocată de o altă staţie), staţia va deveni receptor al acestui mesaj.
TRANSMIŢĂTOR
O unitate care iniţiază un mesaj este numită „TRANSMIŢĂTOR” a acestui mesaj.
Unitatea rămâne TRANSMIŢĂTOR până când magistrala merge în gol sau unitatea
pierde arbitrarea.
RECEPTOR
O unitate este numită „RECEPTOR” a unui mesaj, dacă nu este TRANSMIŢĂTOR a
acestui mesaj şi magistrala nu merge în gol.
4 VALIDAREA MESAJULUI
Momentul în care un mesaj este preluat ca fiind valabil diferă pentru transmiţătorul şi
receptoarele mesajului.
Transmiţător:
Mesajul este valabil pentru transmiţător dacă nu există erori până la SFÂRŞIT
CADRU. Dacă un mesaj a fost afectat, retransmisia va urma în mod automat şi în
concordanţă cu priorităţile. Pentru a fi capabil de a concura la accesul pe magistrală
cu alte mesaje, retransmisia trebuie declanşată de îndată ce magistrala merge în gol.
Receptoare:
Mesajul este valabil pentru receptoare dacă nu există eroare până la penultimul bit
din SFÂRŞIT CADRU.
5 CODIFICAREA
CODIFICAREA CURENTULUI DE BIŢI
6 MANIPULAREA ERORILOR
6.1 Detectarea erorilor
• EROARE DE BIT
O unitate care trimite un bit pe magistrală, supraveghează de asemenea
magistrala. O EROARE DE BIT trebuie să fie detectată la acel timp de bit la care
valoarea de bit observată diferă de cea transmisă. O excepţie este trimiterea unui
bit ’recesiv’ pe durata curentului cu biţi de umplutură ai CÂMPULUI ARBITRARE
sau pe durata FANTEI ACK. Atunci nu are loc nicio EROARE DE BIT când se
observă un bit ’dominant’. Un TRANSMIŢĂTOR transmiţând un FLAG EROARE
PASIVĂ şi detectând un bit ’dominant’ nu va interpreta aceasta ca o EROARE DE
BIT.
• EROARE DE UMPLERE
O EROARE DE UMPLERE trebuie să fie detectată la timpul de bit al celui de-al
6-lea nivel de bit identic consecutiv într-un câmp mesaj care trebuie codificat prin
metoda biţior de umplutură.
• EROARE CRC
Secvenţa CRC constă din rezultatul calculului CRC de către transmiţător.
Receptoarele calculează CRC în acelaşi mod ca şi transmiţătorul. O EROARE
CRC trebuie să fie detectată dacă rezultatul calculat nu este acelaşi cu cel
recepţionat în secvenţa CRC.
• EROARE DE FORMĂ
O EROARE DE FORMĂ trebuie să fie detectată atunci când un câmp de biţi de o
formă fixată conţine unul sau mai mulţi biţi ilegali.
• EROARE DE CONFIRMARE
O EROARE DE CONFIRMARE trebuie să fie detectată de un transmiţător atunci
când nu observă un bit ’dominant’ pe durata FANTEI ACK.
7 LIMITAREA DEFECTELOR
În ceea ce priveşte limitarea defectelor, o unitate trebuie să fie în una din cele trei
stări:
• ’eroare activă’
• ’eroare pasivă’
• ’magistrală deconectată’
O unitate ’eroare activă’ poate lua parte în mod normal la comunicaţia pe magistrală
şi trimite un FLAG EROARE ACTIVĂ când a fost detectată o eroare.
O unitate ’eroare pasivă’ nu trebuie sa transmită un FLAG EROARE ACTIVĂ. Ea
participă la comunicaţia pe magistrală, dar când s-a detectat o eroare, se transmite
un FLAG EROARE PASIVĂ. Astfel, după o transmisie, o unitate ’eroare pasivă’ va
aştepta înainte de a iniţia o nouă transmisie (a se vedea SUSPENDAREA
TRANSMISIEI).
O unitate ’magistrală deconectată’ nu are permisiunea de a avea vreo influenţă
asupra magistralei (De exemplu: driverele de ieşire deconectate).
Pentru limitarea defectelor în fiecare unitate de magistrală sunt implementate două
totaluri:
Excepţia 1:
Dacă TRANSMIŢĂTORUL este ’eroare pasivă’ şi detectează o EROARE DE
CONFIRMARE din cauza nedetectării unui ACK ’dominant’ şi nu detectează
un bit ’dominant’ în timp ce transmite propriul FLAG EROARE PASIVĂ.
Excepţia 2:
Dacă TRANSMIŢĂTORUL trimite un FLAG EROARE datorat unei ERORI DE
UMPLERE produsă pe durata ARBITRĂRII prin care BITUL DE UMPLUTURĂ
este plasat înaintea bitului RTR şi ar trebui să fie ’recesiv’, a fost trimis ca
’recesiv’, dar observat ca ’dominant’.
7. După transmisia cu succes a unui mesaj (dând ACK şi nicio eroare până se
termină SFÂRŞIT CADRU), TOTALUL ERORILOR DE TRANSMISIE este
scăzut cu 1, mai puţin în situaţia în care era deja 0.
8. După recepţia cu succes a unui mesaj (recepţie fără eroare până la FANTA
ACK şi trimiterea cu succes a bitului ACK), TOTALUL ERORILOR DE
RECEPŢIE este scăzut cu 1, dacă acesta era între 1 şi 127. Dacă TOTALUL
ERORILOR DE RECEPŢIE a fost 0, acesta rămâne 0, iar dacă a fost mai
mare de 127, atunci el va fi setat la o valoare între 119 şi 127.
11. Un nod ’eroare pasivă’ devine ’eroare activă’ din nou când atât TOTALUL
ERORILOR DE TRANSMISIE cât şi TOTALUL ERORILOR DE RECEPŢIE
sunt mai mici sau egale cu 127.
12. Unui nod care este ’magistrală deconectată’ i se permite să devină ’eroare
activă’ (nu mai este ’magistrală deconectată’) cu ambele totaluri de erori
setate la 0 după ce 128 de evenimente de 11 biţi ’recesivi’ consecutivi au fost
observate pe magistrală.
Nota:
Un total de eroare cu o valoare mai mare de 96 indică o magistrală puternic
perturbată. Poate fi avantajos să se prevadă mijloace de testare a acestei condiţii.
Nota:
Pornire / Deşteptare
Dacă pe durata pornirii este online un singur nod şi dacă acest nod transmite câteva
mesaje, el nu va primi confirmare, va detecta o eroare şi repetă mesajul. El poate
deveni ’eroare pasivă’ dar nu ’magistrală deconectată’ datorită acestui motiv.
Timpul de bit nominal poate fi imaginat ca fiind divizat în segmente de timp separate,
nesuprapuse. Aceste segmente
Punct de
eşantionare
SYNC_SEG
Această parte a timpului de bit este folosită pentru a sincroniza diferitele noduri ale
reţelei. Un front este aşteptat pentru a se afla în interiorul acestui segment.
PROP_SEG
Această parte a timpului de bit este utilizată pentru a compensa timpii fizici de
întârziere din interiorul reţelei.
PHASE_SEG1, PHASE_SEG2
Aceaste segmente buffer fază sunt folosite pentru a compensa erorile de fază ale
fronturilor. Aceste segmente pot fi lungite sau scurtate prin resincronizare.
PUNCT DE EŞANTIONARE
PUNCTUL DE EŞANTIONARE este momentul de timp la care este citit nivelul
magistralei şi este interpretat ca valoare a respectivului bit. Poziţia sa este la sfârşitul
PHASE_SEG1.
CUANTĂ DE TIMP
CUANTA DE TIMP este o unitate de timp fixă derivată din perioada oscilatorului.
Există un circuit programabil de prescalare, cu valori întregi, într-un domeniu de cel
puţin de 1 la 32. Începând cu CUANTA DE TIMP MINIMĂ, CUANTA DE TIMP poate
avea o lungime de:
cu m – valoarea de prescalare
• TIMPUL DE PROCESARE INFORMAŢIE este mai mic sau egal decât un interval
de 2 CUANTE DE TIMP.
Numărul total de CUANTE DE TIMP într-un timp de bit poate fi programat cel puţin
de la 8 la 25.
SINCRONIZAREA
SINCRONIZAREA HARD
După o SINCRONIZARE HARD, timpul de bit intern este restartat cu SYNC_SEG.
Astfel, SINCRONIZAREA HARD forţează frontul care a provocat SINCRONIZAREA
HARD să fie plasat în intervalul SEGMENTULUI SINCRONIZARE a timpului bitului
restartat.
RESINCRONIZAREA
Efectul unei RESINCRONIZĂRI este acelaşi cu cel al SINCRONIZĂRII HARD când
mărimea ERORII DE FAZĂ a frontului care provoacă RESINCRONIZAREA este mai
mică sau egală cu valoarea programată a LUNGIMII SALTULUI DE
RESINCRONIZARE. Când mărimea ERORII DE FAZĂ este mai mare decât
LUNGIMEA SALTULUI RESINCRONIZARE
REGULI DE SINCRONIZARE
SINCRONIZAREA HARD şi RESINCRONIZAREA sunt cele două forme ale
SINCRONIZĂRII. Ele se supun următoarelor reguli:
[1] Dacă un nod CAN eşantionează un bit dominant la cel de-al treilea bit al PAUZEI,
atunci acesta va fi interpretat ca un bit START CADRU.
[2] Dacă un nod CAN are un mesaj în aşteptare pentru transmisie şi eşantionează
un bit ’dominant’ de la al treilea bit al PAUZEI, el va interpreta aceasta ca un bit
START CADRU şi, cu bitul următor, declanşează transmisia mesajului său cu
primul bit al IDENTIFICATORULUI fără a transmite mai întâi un bit START
CADRU şi fără a deveni un receptor.
[3] Dacă un nod CAN eşantionează un bit dominant la cel de-al optulea bit (ultimul
bit) al DELIMITATORULUI EROARE sau DELIMITATORULUI SUPRASARCINĂ,
el va începe, la următorul bit, transmisia unui CADRU SUPRASARCINĂ (nu un
CADRU EROARE). Totalurile eroare nu vor fi incrementate.
[6] Nici un controler CAN nu va trimite un bit START CADRU până când nu a
numărat trei biţi recesivi ai PAUZEI.
Chipul cu necesităţile cele mai ridicate pentru precizia propriului oscilator, determină
precizia cerută pentru oscilatoarele de la toate celelalte noduri. Se pot folosi
rezonatoare ceramice numai când toate nodurile reţelei folosesc protocolul extins.
PARTEA B
1 INTRODUCERE .................................................................................. 34
2 CONCEPTE DE BAZĂ......................................................................... 36
6 CODIFICAREA ................................................................................... 58
1 INTRODUCERE
Un controler de zonă a reţelei (Controller Area Network) CAN este un protocol de
comunicaţii seriale care sprijină cu eficienţă controlul distribuit în timp real cu un nivel
de securitate foarte înalt.
Domeniul său de aplicaţii se întinde de la reţelele de înaltă viteză până la sistemele
de cablare multiplexată de preţ scăzut. În electronica auto, unităţile de control pentru
motor, senzori, sisteme antiderapare etc. sunt conectate folosind CAN cu rate de bit
de până la 1 Mbit/s. În acelaşi timp este avantajos ca preţ să se utilizeze la
electronica de pe caroserie, de exemplu grupurile de becuri, geamurile electrice etc.
pentru a înlocui arborii de cabluri necesare în caz contrar.
Intenţia acestei specificaţii este să realizeze compatibilitatea între oricare două
implementări CAN. Totuşi compatibilitatea are aspecte diferite privind de exemplu
caracteristicile electrice şi interpretarea datelor care trebuie transferate. Pentru a
obţine transparenţa proiectării şi flexibiltatea implementării, CAN a fost subîmpărţit în
două straturi diferite, în concordanţă cu modelele de referinţă ISO / OSI:
• stratul fizic
În interiorul unei reţele, stratul fizic trebuie desigur să fie acelaşi pentru toate
nodurile. Poate exista totuşi o mare libertate în selectarea stratului fizic.
Sfera de acţiune a acestei specificaţii este de a defini substratul MAC şi o mică parte
a substratului LLC a stratului legături date şi să descrie consecinţele protocolului
CAN asupra straturilor înconjurătoare.
2 CONCEPTE DE BAZĂ
CAN are următoarele proprietăţi
• prioritizarea mesajelor
• garantarea timpilor de latenţă
• flexibilitatea configuraţiei
• recepţie multicast cu sincronizare de timp
• consistenţă largă a datelor din sistem
• multimaster
• detectarea şi semnalarea erorilor
• retransmisia automată a mesajelor deteriorate de îndată ce magistrala este din
nou la mers în gol
• distincţie între erorile temporare şi defectele permanente ale nodurilor şi
deconectarea autonomă a nodurilor defecte
• Stratul fizic defineşte modul în care semnalele sunt transmise în realitate şi prin
urmare se ocupă cu sincronizarea biţilor, codificarea biţilor şi sincronizarea. În
această specificaţie caracteristicile driver / receptor din stratul fizic nu sunt
definite, permiţând astfel ca implementările mediului de transmisie şi a nivelelor
de semnal să fie optimizate pentru aplicaţiile lor.
LLC
Supervizor
Filtrarea de acceptare
Notificare suprasarcină
Administrarea recuperării
MAC
Încapsulare / decapsulare
date
Codificare cadru
(umplere / dezumplere) Limitare
(stuffing / destuffing)
Administrarea accesului la
defecte
mediu
Detectarea erorilor
Semnalarea erorilor
Confirmarea
Serializare / deserializare
Stratul fizic
Codificare / decodificare bit Administrare
Timing de bit eşecuri
Sincronizare magistrală
Caracteristici driver./ receptor
Mesajele
Informaţiile de pe magistrală sunt trimise în mesaje de formă fixă de lungime diferită,
dar limitată (a se vedea secţiunea 3: Transferul mesajului). Când magistrala este
liberă, orice unitate conectată poate începe să transmită un mesaj nou.
Rutarea informaţiei
Într-un sistem CAN, un nod CAN nu face uz de nicio informaţie asupra configuraţiei
sistemului (de exemplu adresele staţiilor). Acest fapt are câteva consecinţe
importante.
Rata de bit
Viteza CAN-ului poate fi diferită în sisteme diferite. Totuşi, într-un sistem dat, rata de
bit este uniformă şi fixă.
Priorităţi
IDENTIFICATORUL defineşte o prioritate statică a mesajului pe durata accesului pe
magistrală.
Multimaster
Când magistrala este liberă, orice unitate poate începe să transmită un mesaj.
Unitatea cu mesajul de prioritate mai înaltă ce trebuie transmis câştigă accesul pe
magistrală.
Arbitrare
Ori de câte ori magistrala este liberă, orice unitate poate începe să transmită un
mesaj. Dacă două sau mai multe staţii încep să transmită mesaje în acelaşi moment,
conflictul de acces pe magistrală este rezolvat prin arbitrarea la nivel de bit folosind
IDENTIFICATORUL. Mecanismul arbitrării garantează că nu se pierd nici informaţii,
nici timp. Dacă un CADRU DATE şi un CADRU DE LA DISTANŢĂ au acelaşi
IDENTIFICATOR sunt iniţiate în acelaşi timp, CADRUL DATE este predominant
asupra CADRULUI DE LA DISTANŢĂ. Pe durata arbitrării fiecare transmiţător
compară nivelul bitului transmis cu nivelul observat pe magistrală. Când un bit
’recesiv’ este transmis şi un nivel ’dominant’ este observat (a se vedea Valori pe
Magistrală), unitatea a pierdut arbitrarea şi trebuie să se retragă fără a mai transmită
niciun bit.
Siguranţa
În vederea asigurării siguranţei extreme a transferului de date, se implementează în
fiecare CAN măsuri puternice pentru detectarea erorilor, semnalarea lor şi auto-
verificare.
Detectarea erorilor
Pentru detectarea erorilor au fost luate următoarele măsuri:
- Monitorizare (transmiţătoarele compară nivelele de bit ce trebuie transmise
cu nivelele de bit detectate pe magistrală)
- Verificare redundanţă ciclică
- Biţi de umplutură (Bit stuffing)
- Verificare cadru mesaj
Probabilitatea erorii totale reziduale pentru mesaje afectate nedectate: mai mică de
Limitarea defectelor
Nodurile CAN sunt capabile să distingă perturbaţiile de scurtă durată de defectele
permanente.
Conexiuni
Legătura serială de comunicaţie CAN este o magistrală la care se pot conecta un
număr de unităţi. Acest număr nu are o limită teoretică. Practic, numărul total al
unităţilor va fi limitat de timpii de întârziere şi/sau sarcinile electrice de pe linia
magistralei.
Canal unic
Magistrala constă dintr-un singur canal care transportă biţii. De aici pot fi derivate
informaţiile de date resincronizate. Modul în care acest canal este realizat practic nu
este fixat în această specificaţie. De exemplu, un singur fir (plus masa), două fire
diferenţiale, fibră optică etc.
Valorile de pe magistrală
Magistrala poate avea una din două valori logice complementare: ’dominant’ sau
’recesiv’. Pe timpul transmisiei simultane a biţilor ’dominant’ şi ’recesiv’, valoarea
rezultată pe magistrală este ’dominant’. De exemplu, în cazul implemetării ŞI cablat a
magistralei nivelul ’dominant’ va fi reprezentat de un nivel logic ’0’ şi nivelul ’recesiv’
de un logic ’1’. Stările fizice (de exemplu tensiune, lumină) care reprerzintă nivelele
logice nu sunt date în această specificaţie.
Confirmarea
Toate receptoarele verifică consistenţa mesajului recepţionat şi vor confirma un
mesaj consistent şi vor semnala un mesaj inconsistent.
Toleranţa oscilatorului
Cerinţele pentru timing-ul de bit permit rezonatoarelor ceramice să fie utilizate în
aplicaţii cu rate de transmisie de până la 125 kbit/s ca o regulă; pentru o evaluare
mai precisă, consultaţi:
Dias, S; Chapman, M;
„Impact of Bit Representation on Transport Capacity
and Clock Accuracy in Serial Data Stream”,
SAE Technical Paper Series 890532, Multiplexing in Automobiles
SP-773 March 1989
Pentru întreg domeniul de viteze ale magistralei a protocolului CAN, este necesar un
oscilator cu cuarţ.
3 TRANSFERUL MESAJULUI
Există două formate diferite care diferă prin lungimea câmpului IDENTIFICATOR:
cadre cu un număr de 11 biţi IDENTIFICATOR, desemnează Cadre standard. În
contrast, cadrele conţinând 29 de biţi IDENTIFICATOR, desemnează Cadrele
extinse.
Spaţiu Spaţiu
intercadre CADRU DATE intercadre
sau
Cadru
supra-
sarcină
Start cadru
Câmp arbitrare
Câmp control
Câmp date
Câmp CRC
Sfârşit cadru
CÂMPUL ARBITRARE
CÂMPUL ARBITRARE este diferit pentru cadre în Format Standard şi Format
Extins.
Pentru a face distincţia între formatul standard şi formatul extins, bitul rezervat r1 din
specificaţiile CAN anterioare 1.0 – 1.2 este denumit acum Bit IDE.
Format Standard
Câmp
Câmp Arbitrare Control Câmp Date
IDENTIFICATOR 11 biţi
Format Extins
Câmp Câmp
Câmp Arbitrare Control Date
IDENTIFICATORUL
IDENTIFICTORUL - Format standard
Lungimea identificatorului este de 11 biţi şi corespunde la ID Bază în format
extins. Aceşti biţi sunt transmişi în ordinea ID-28 la ID-18. Cel mai puţin
semnificativ bit este ID-18. Primii 7 cei mai semnificativi biţi (ID-28 ÷ ID-22) nu
trebuie să fie toţi ’recesivi’.
ID Bază cu 11 biţi
ID Extins cu 18 biţi
ID Bază
ID Bază constă din 11 biţi. El este transmis în ordine de la ID-28 la ID-18. Este
echivalent cu formatul identificatorului standard. ID Bază defineşte prioritatea de
bază a cadrelor extinse.
ID Extins
ID Extins constă din 18 biţi. Ei sunt transmişi în ordinea ID-17 la ID-0.
În CADRELE DATE, BITUL RTR trebuie să fie ’dominant’. În interiorul unui CADRU
DE LA DISTANŢĂ, BITUL RTR trebuie să fie ’recesiv’.
Într-un cadru extins, ID bază este transmis primul, urmat de bitul IDE şi bitul SRR. ID
Extins se transmite după bitul SRR.
Prin urmare, ciocnirile unui cadru standard şi a unui cadru extins, ID bază (a se
vedea ’IDENTIFICATOR extins’ de mai sus) care este acelaşi ca şi Identificatorul
Cadrelor Standard, sunt rezolvate în aşa fel încât Cadrul Standard este predominant
faţă de Cadrul Extins.
Cadrele în Format Extins conţin CODUL LUNGIME DATE şi doi biţi rezervaţi r1 şi r0.
Biţii rezervaţi trebuie transmişi ’domininaţi’, dar receptoarele acceptă biţii ’dominanaţi’
şi ’recesivi’ în toate combinaţiile.
prescurtări d – ’dominant’
r – ’recesiv’
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
sau
Control
Delimitator CRC
Secvenţă CRC
REPEAT
CRCNXT = NXTBIT EXOR CRC_RG(14);
CRC_RG(14:1) = CRC_RG(13:0); //deplasare stânga
CRC_RG(0) = 0; //o poziţie
IF CRCNXT THEN
CRC_RG(14:0) = CRC_RG(14:0) EXOR (4599hex);
ENDIF
UNTIL (începe SECVENŢA CRC sau există o condiţie de EROARE)
După transmisia / recepţia ultimului bit din CÂMPUL DATE, CRC_RG conţine
secvenţa CRC.
Delimitator ACK
Fantă ACK
FANTA ACK
Toate staţiile care au recepţionat SECVENŢA CRC potrivită, raportează aceasta în
interiorul FANTEI ACK prin suprascrierea peste bitul ’recesiv’ de la TRANSMIŢĂTOR
a unui bit ’dominant’.
DELIMITATORUL ACK
DELIMITATORUL ACK este cel de-al doilea bit din CÂMPUL ACK şi trebuie să fie un
bit ’recesiv’. Drept consecinţă, FANTA ACK este înconjurată de doi biţi ’recesivi’
(DELIMITATOR CRC, DELIMITATOR ACK).
sau
Cadru
supra-
sarcină
Start cadru
Câmp arbitrare
Câmp control
Câmp CRC
Sfârşit cadru
Polaritatea bitului RTR indică dacă un cadru transmis este CADRU DATE (bitul RTR
’dominant’) sau CADRU DE LA DISTANŢĂ (bitul RTR ’recesiv’).
Spaţiu
Cadru CADRU EROARE intercadre
date sau
Suprapunere
flaguri eroare Delimitator Eroare
Pentru a termina în mod corect CADRUL EROARE, un nod ’eroare pasivă’ are
nevoie ca magistrala să fie ’magistrala la mers în gol’ pentru cel puţin 3 perioade de
bit (dacă există o eroare locală la un receptor ’eroare pasivă’). Ca urmare, magistrala
nu trebuie încărcată 100%.
FLAGUL EROARE
Există două forme ale FLAGULUI EROARE: un FLAG EROARE ACTIVĂ şi un FLAG
EROARE PASIVĂ.
2. FLAGUL EROARE PASIVĂ constă din şase biţi ’recesivi’ consecutivi, afară de
cazul când este suprascris cu biţi ’dominanţi’ de la alte noduri.
O staţie ’eroare activă’ care detectează o condiţie de eroare semnalizează acest fapt
prin transmiterea unui FLAG EROARE ACTIVĂ. FLAGURILE EROARE încalcă legea
biţilor de umplutură (a se vedea CODIFICAREA) aplicată tuturor câmpurilor de la
START CADRU până la DELIMITATORUL CRC sau distruge forma fixată a
câmpurilor ACK sau SFÂRŞIT CADRU. Ca urmare, toate celelalte staţii detectează o
condiţie de eroare şi la rândul lor încep transmisia unui FLAG EROARE.
Astfel, secvenţa de biţi ’dominanţi’ care de fapt pot fi urmăriţi pe magistrală rezultată
prin suprapunerea diferitelor FLAGURI EROARE transmise de staţiile individuale.
Lungimea totală a acestei secvenţe variază între minim şase şi maxim doisprezece
biţi.
O staţie ’eroare pasivă’ care detectează o condiţie de eroare, încearcă să semnaleze
aceasta prin transmisia unui FLAG EROARE PASIVĂ. Staţia ’eroare pasivă’ aşteaptă
şase biţi de polaritate identică începând la startul FLAGULUI EROARE PASIVĂ.
FLAGUL EROARE PASIVĂ este completat când s-au detectat aceşti 6 biţi identici.
DELIMITATORUL EROARE
DELIMITATORUL EROARE constă din opt biţi ’recesivi’.
După transmiterea unui FLAG EROARE, fiecare staţie trimite biţi ’recesivi’ şi
supraveghează magistrala până când detectează un bit ’recesiv’. După aceea începe
transmisia a încă şapte biţi ’recesivi’.
3. Dacă un nod CAN eşantionează un bit dominant la cel de-al optulea bit
(ultimul bit) al unui DELIMITATOR EROARE sau DELIMITATOR
SUPRASARCINĂ, el va începe transmiterea unui CADRU SUPRASARCINĂ
(nu un CADRU EROARE). Totalurile de Erori nu vor fi incrementate.
Pot fi generate cel mult două CADRE SUPRASARCINĂ pentru a întârzia următorul
CADRU DATE sau CADRU DE LA DISTANŢĂ.
Flag Cadru
Suprasarcină supra-
sarcină
Suprapunere
flaguri suprasarcină Delimitator
Suprasarcină
FLAGUL SUPRASARCINĂ
constă din şase biţi ’dominanţi’. Forma generală corespunde celei a FLAGULUI
EROARE ACTIVĂ.
Nota:
Controlerele bazate pe Specificaţia CAN versiunile 1.0 şi 1.1 au o altă
interpretare a celui de-al treilea bit al PAUZEI: dacă un bit ’dominant’ a fost
detectat local în unele noduri, celelalte nu vor interpreta FLAGUL
SUPRASARCINĂ în mod corect, ci vor interpreta primul din aceşti şase biţi
’dominanţi’ ca un START CADRU. Cel de-al şaselea bit ’dominant’ încalcă
regula bit stuffing – biţi de umplutură – determinând o condiţie de eroare.
DELIMITATORUL SUPRASARCINĂ
constă din opt biţi ’recesivi’.
SPAŢIUL INTERCADRE
conţine câmpurile de bit PAUZĂ şi MERS ÎN GOL MAGISTRALĂ şi, pentru staţiile
’eroare pasivă’ care au fost TRANSMIŢĂTORUL mesajului anterior, SUSPENDARE
TRANSMISIE.
Pentru staţii care nu sunt ’eroare pasivă’ sau care au fost RECEPTOR al mesajului
anterior:
Mers în gol
Pauză magistrală
PAUZA
constă din trei biţi ’recesivi’.
Nota:
SUSPENDARE TRANSMISIE
După ce o staţie ’eroare pasivă’ a transmis un mesaj, ea trimite opt biţi ’recesivi’
urmând după PAUZĂ, înainte de a începe să transmită un nou mesaj sau să
recunoască magistrala ca fiind la mers în gol. Dacă între timp începe o altă
transmisie (provocată de o altă staţie), staţia va deveni receptor al acestui mesaj.
Formatul standard este echivalent cu Formatul Cadru Date / de la Distanţă, aşa cum
este descris acesta în Specificaţia CAN 1.2. În contrast, Formatul Extins este o nouă
caracteristică a protocolului CAN. Cu scopul de a permite proiectarea unor controlere
relativ simple, implementarea Formatului Extins nu este necesară în întreaga sa
extindere (de exemplu să trimită mesaje sau să accepte date din mesaje în Format
Extins), în timp ce Formatul Standard trebuie să fie tolerat fără restricţie.
Noile controlere sunt considerate a fi în conformitate cu această Specificaţie CAN,
dacă ele au cel puţin următoarele proprietăţi cu privire la Formate Cadre definite în
3.1 şi 3.2:
TRANSMIŢĂTOR
O unitate care iniţiază un mesaj este numită „TRANSMIŢĂTOR” a acestui mesaj.
Unitatea rămâne TRANSMIŢĂTOR până când magistrala merge în gol sau unitatea
pierde arbitrarea.
RECEPTOR
O unitate este numită „RECEPTOR” a unui mesaj, dacă nu este TRANSMIŢĂTOR a
acestui mesaj şi magistrala nu merge în gol.
4 FILTRAREA MESAJULUI
Filtrarea mesajelor se bazează pe întregul Identificator. Registre mască opţionale,
care permit oricărui bit Identificator să fie setat ’indiferent’ pentru filtrarea mesajului,
pot fi folosite pentru a selecta grupuri de Identificatoare pentru a fi mapate în
bufferele de recepţie ataşate.
Dacă sunt implementate registre mască, fiecare bit al registrelor mască trebuie să fie
programabil, de exemplu ei pot fi activaţi sau dezactivaţi pentru filtrarea mesajului.
Lungimea registrului mască poate cuprinde întregul IDENTIFICATOR sau numai o
parte din el.
5 VALIDAREA MESAJULUI
Momentul în care un mesaj este preluat ca fiind valabil diferă pentru transmiţătorul şi
receptoarele mesajului.
Transmiţător:
Mesajul este valabil pentru transmiţător dacă nu există erori până la SFÂRŞIT
CADRU. Dacă un mesaj a fost afectat, retransmisia va urma în mod automat şi în
concordanţă cu priorităţile. Pentru a fi capabil de a concura la accesul pe magistrală
cu alte mesaje, retransmisia trebuie declanşată de îndată ce magistrala merge în gol.
Receptoare:
Mesajul este valabil pentru receptoare dacă nu există eroare până la penultimul bit
din SFÂRŞIT CADRU. Valoarea ultimului bit din SFÂRŞIT CADRU este tratat ca
’indiferent’, o valoare dominantă nu va conduce la o EROARE DE FORMĂ (conform
secţiunii 7.1).
6 CODIFICAREA
CODIFICAREA CURENTULUI DE BIŢI
7 MANIPULAREA ERORILOR
7.1 Detectarea erorilor
• EROARE DE BIT
O unitate care trimite un bit pe magistrală, supraveghează de asemenea
magistrala. O EROARE DE BIT trebuie să fie detectată la acel timp de bit la care
valoarea de bit observată diferă de cea transmisă. O excepţie este trimiterea unui
bit ’recesiv’ pe durata curentului cu biţi de umplutură ai CÂMPULUI ARBITRARE
sau pe durata FANTEI ACK. Atunci nu are loc nicio EROARE DE BIT când se
observă un bit ’dominant’. Un TRANSMIŢĂTOR transmiţând un FLAG EROARE
PASIVĂ şi detectând un bit ’dominant’ nu va interpreta aceasta ca o EROARE DE
BIT.
• EROARE DE UMPLERE
O EROARE DE UMPLERE trebuie să fie detectată la timpul de bit al celui de-al
6-lea nivel de bit identic consecutiv într-un câmp mesaj care trebuie codificat prin
metoda biţior de umplutură.
• EROARE CRC
Secvenţa CRC constă din rezultatul calculului CRC de către transmiţător.
Receptoarele calculează CRC în acelaşi mod ca şi transmiţătorul. O EROARE
CRC trebuie să fie detectată dacă rezultatul calculat nu este acelaşi cu cel
recepţionat în secvenţa CRC.
• EROARE DE FORMĂ
O EROARE DE FORMĂ trebuie să fie detectată atunci când un câmp de biţi de o
formă fixată conţine unul sau mai mulţi biţi ilegali. (De notat că pentru un receptor
un bit dominant pe durata ultimului bit din SFÂRŞIT CADRU nu este tratat ca o
EROARE DE FORMĂ).
• EROARE DE CONFIRMARE
O EROARE DE CONFIRMARE trebuie să fie detectată de un transmiţător atunci
când nu observă un bit ’dominant’ pe durata FANTEI ACK.
8 LIMITAREA DEFECTELOR
În ceea ce priveşte limitarea defectelor, o unitate trebuie să fie în una din cele trei
stări:
• ’eroare activă’
• ’eroare pasivă’
• ’magistrală deconectată’
O unitate ’eroare activă’ poate lua parte în mod normal la comunicaţia pe magistrală
şi trimite un FLAG EROARE ACTIVĂ când a fost detectată o eroare.
O unitate ’eroare pasivă’ nu trebuie sa transmită un FLAG EROARE ACTIVĂ. Ea
participă la comunicaţia pe magistrală, dar când s-a detectat o eroare, se transmite
un FLAG EROARE PASIVĂ. Astfel, după o transmisie, o unitate ’eroare pasivă’ va
aştepta înainte de a inţia o nouă transmisie (a se vedea SUSPENDAREA
TRANSMISIEI).
O unitate ’magistrală deconectată’ nu are permisiunea de a avea vreo influenţă
asupra magistralei (De exemplu: driverele de ieşire deconectate).
Pentru limitarea defectelor sunt implementate două totaluri în fiecare unitate de
magistrală:
Excepţia 1:
Dacă TRANSMIŢĂTORUL este ’eroare pasivă’ şi detectează o EROARE DE
CONFIRMARE din cauza nedetectării unui ACK ’dominant’ şi nu detectează
un bit ’dominant’ în timp ce transmite propriul FLAG EROARE PASIVĂ.
Excepţia 2:
Dacă TRANSMIŢĂTORUL trimite un FLAG EROARE datorat unei ERORI DE
UMPLERE produsă pe durata ARBITRĂRII şi ar trebui să fie ’recesiv’, a fost
trimis ca ’recesiv’, dar observat ca ’dominant’.
7. După transmisia cu succes a unui mesaj (dând ACK şi nicio eroare până se
termină SFÂRŞIT CADRU), TOTALUL ERORILOR DE TRANSMISIE este
scăzut cu 1, mai puţin în situaţia în care era deja 0.
8. După recepţia cu succes a unui mesaj (recepţie fără eroare până la FANTA
ACK şi trimiterea cu succes a bitului ACK), TOTALUL ERORILOR DE
RECEPŢIE este scăzut cu 1, dacă acesta era între 1 şi 127. Dacă TOTALUL
ERORILOR DE RECEPŢIE a fost 0, acesta rămâne 0, iar dacă a fost mai
mare de 127, atunci el va fi setat la o valoare între 119 şi 127.
11. Un nod ’eroare pasivă’ devine ’eroare activă’ din nou când atât TOTALUL
ERORILOR DE TRANSMISIE cât şi TOTALUL ERORILOR DE RECEPŢIE
sunt mai mici sau egale cu 127.
12. Unui nod care este ’magistrală deconectată’ i se permite să devină ’eroare
activă’ (nu mai este ’magistrală deconectată’) cu ambele totaluri de erori
setate la 0 după ce 128 de evenimente de 11 biţi ’recesivi’ consecutivi au fost
observate pe magistrală.
Nota:
Un total de eroare cu o valoare mai mare de 96 indică o magistrală puternic
perturbată. Poate fi avantajos să se prevadă mijloace de testare a acestei condiţii.
Nota:
Pornire / Deşteptare
Dacă pe durata pornirii este online un singur nod şi dacă acest nod transmite câteva
mesaje, el nu va primi nicio confirmare, detectează o eroare şi repetă mesajul. El
poate deveni ’eroare pasivă’ dar nu ’magistrală deconectată’ datorită acestui motiv.
9 TOLERANŢA OSCILATORULUI
Este dată o toleranţă maximă de 1,58% a oscilatorului şi ca urmare folosirea unui
rezonator ceramic la o viteză a magistralei de până la 125 kbit/s ca regulă; pentru o
evaluare mai precisă, consultaţi:
Dias, S; Chapman, M;
„Impact of Bit Representation on Transport Capacity
and Clock Accuracy in Serial Data Stream”,
SAE Technical Paper Series 890532, Multiplexing in Automobiles
SP-773 March 1989
Pentru întreg domeniul de viteze ale magistralei a protocolului CAN, este necesar un
oscilator cu cuarţ.
Chipul din reţeaua CAN cu cele mai înalte necesităţi pentru precizia oscilatorului
propriu determină precizia oscilatorului necesară pentru toate celelalte noduri.
Nota:
Toate controlerele CAN care respectă această Specificaţie CAN şi controlerele care
respectă versiunile precedente 1.0 şi 1.1 utilizate în aceeaşi reţea trebuie să fie
echipate cu oscilatoare cu cuarţ. Aceasta înseamnă că rezonatoarele ceramice pot fi
folosite numai într-o reţea cu toate nodurile respectând Specificaţia Protocolului CAN
versiunile 1.2 sau ulterioare.
Timpul de bit nominal poate fi imaginat ca fiind divizat în segmente de timp separate,
nesuprapuse. Aceste segmente
Punct de
eşantionare
SYNC_SEG
Această parte a timpului de bit este folosită pentru a sincroniza diferitele noduri ale
reţelei. Un front este aşteptat pentru a se afla în interiorul acestui segment.
PROP_SEG
Această parte a timpului de bit este utilizată pentru a compensa timpii fizici de
întârziere din interiorul reţelei. El este dublul sumei timpilor de propagare a
semnalelor pe linia magistralei, întârzierea comparatorului de intrare şi întârzierea
driverului de ieşire.
PHASE_SEG1, PHASE_SEG2
Aceaste segmente buffer fază sunt folosite pentru a compensa erorile de fază ale
fronturilor. Aceste segmente pot fi lungite sau scurtate prin resincronizare.
PUNCT DE EŞANTIONARE
PUNCTUL DE EŞANTIONARE este momentul de timp la care este citit nivelul
magistralei şi este interpretat ca valoare a respectivului bit. Poziţia sa este la sfârşitul
PHASE_SEG1.
CUANTĂ DE TIMP
CUANTA DE TIMP este o unitate de timp fixă derivată din perioada oscilatorului.
Există un circuit programabil de prescalare, cu valori întregi, într-un domeniu de cel
puţin de 1 la 32. Începând cu CUANTA DE TIMP MINIMĂ, CUANTA DE TIMP poate
avea o lungime de:
cu m – valoarea de prescalare
• TIMPUL DE PROCESARE INFORMAŢIE este mai mic sau egal decât un interval
de 2 CUANTE DE TIMP.
Numărul total de CUANTE DE TIMP într-un timp de bit poate fi programat cel puţin
de la 8 la 25.
Nota:
Adesea se intenţionează ca unităţile de control să nu facă uz de oscilatoare diferite
pentru CPU local şi dispozitivul său de comunicaţii. Ca urmare, frecvenţa oscilatorului
unui dispozitiv CAN tinde să fie cea a CPU local şi este determinată de cerinţele
unitatăţii de control. Pentru a primi rata de bit dorită, este necesară posibilitatea de
programare a sincronizării bitului.
În cazul implementărilor CAN care sunt proiectate pentru a fi utilizate fără un CPU
local, sincronizarea bitului nu poate fi programabilă. Pe de altă parte aceste
dispozitive permit să se aleagă un oscilator extern, în aşa fel ca dispozitivul să fie
adaptat la rata de bit potrivită, astfel încât posibilitatea de programare nu este
indispensabilă pentru aceste componente.
Totuşi, poziţia punctului de eşantionare trebuie să fie selectată în comun pentru toate
nodurile. Ca urmare, timingul de bit să fie compatibil cu următoarea definiţie a
timpului de bit:
SINCRONIZAREA HARD
După o SINCRONIZARE HARD, timpul de bit intern este restartat cu SYNC_SEG.
Astfel, SINCRONIZAREA HARD forţează frontul care a provocat SINCRONIZAREA
HARD să fie plasat în intervalul SEGMENTULUI SINCRONIZARE a timpului bitului
restartat.
RESINCRONIZAREA
Efectul unei RESINCRONIZĂRI este acelaşi cu cel al SINCRONIZĂRII HARD când
mărimea ERORII DE FAZĂ a frontului care provoacă RESINCRONIZAREA este mai
mică sau egală cu valoarea programată a LUNGIMII SALTULUI DE
RESINCRONIZARE. Când mărimea ERORII DE FAZĂ este mai mare decât
LUNGIMEA SALTULUI RESINCRONIZARE
REGULI DE SINCRONIZARE
SINCRONIZAREA HARD şi RESINCRONIZAREA sunt cele două forme ale
SINCRONIZĂRII. Ele se supun următoarelor reguli:
Diferenţe
pagina B-41*
Este inclusă nota la toleranţa oscilatorului.
pagina B-43
A fost schimbată numerotarea biţilor idetificatorului.
pagina B-51*
În conformitate cu toleranţa oscilatorului s-a introdus o a treia condiţie pentru
generarea unui cadru suprasarcină.
pagina B-52*
S-a adăugat o nota întrucât Interpretarea ultimului bit de Pauză a fost modificată.
pagina B-54*
S-a introdus o nota datorită unei alte interpretări pentru Start Cadru.
pagina B-55
Secţiunea 3.3 „Conformitatea în ceea ce priveşte Formatul Cadrelor”.
pagina B-56
Capitolul 4 „Filtrarea Mesajului” a fost introdusă recent.
pagina B-64*
Nota privind compatibilitatea protocolului modificat conform cu toleranţele
oscilatorului.
pagina B-67
Nota privind timingul de bit pentru implementarea ECU fără CPU local.