Magistrala CAN (controller area network / reţeaua de control zonal) Introducere 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, reţele de aparate medicale Organizaţia Internaţională pentru standarde împreună cu 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 Funcţionalitatea CAN poate fi descrisă în două niveluri OSI: 1. Nivelul legăturii de date 2. Nivelul fizic 3 1. Nivelul legăturii de date este împărţit în două subniveluri: Nivelul legăturii logice: acceptă mesajele printr-un proces de filtrare, realizează notificarea de overload şi sarcinile de administrare pentru revenirea din eroare. MAC (controlul accesului la mediu): 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 4
Principii de funcţionare CAN Principii de funcţionare CAN La nivelul fizic, mediul de comunicaţie a fost intenţionat lăsat deoparte, la CAN (standard realizat prima oară la firma Bosh - Germania) pentru a permite proiectanţilor să adapteze şi optimizeze protocolul de comunicaţie pentru diferite mediişii pentru flexibilitate maximă pereche de cabluri torsadate (cu ecran STP, sau fără ecran UTP) cablu singular izolare optică RF IR etc. 5 CAN bus a fost proiectat pentru a reduce cantitatea de fire cerute în reţeaua de senzori auto Fizic, mediul de transmisie fir, constă în două fire torsadate pe care se transmite semnal diferenţial. Este proiectată pentru medii ce lucrează uneori în condiţii extremeşi poate opera chiar dacă: un fir este întrerupt unul din fire este scurtcircuitat la masă unul din fire este scurtcircuitat la tensiunea de alimentare cele două fire sunt întrerupte în acelaşi loc. În acest caz cele două capete vor funcţiona ca reţele separate. 6 Principii de funcţionare CAN Viteza relativ redusă pentru că durata unui bit trebuie să fie cel puţin dublul întârzierii de propagare pe bus 1 Mb/s până la 25 metri 800 kb/s până la 100 metri 125 kb/s până la 500 metri 50 kb/s până la 1000 metri Magistrala CAN utilizează transmisia serială pe bit Protocolul de magistrală permite mai mulţi masteri pe magistrală Fiecare nod al magistralei CAN are propriile drivere şi receivere electrice prin care se conectează nodul la magistrală într-o manieră SI - cablat. 7 Principii de funcţionare CAN Dacă un nod transmite: mesajul e acceptat de un singur alt nod (caz frecvent) mesajul e acceptat de mai multe noduri (caz rar) De exemplu: nod detectare a temperaturii care trimite date de temperatură acceptate doar de un nod afişor. dacă nodul detectează o supra-temperatură, datele transmise pot fi acceptate de mai multe noduri ce utilizează informaţia 8
Principii de funcţionare CAN Principii de funcţionare CAN CAN bus: Comunicaţie half-duplex Reţea de viteză - foloseşte "mesaje scurte Mesajul este transmis pe bus bit cu bit, conform unui format specificat de standard Se pot adăuga noduri la bus fără reprogramarea celelalte noduri pentru a recunoaşte schimbarea hardware-ul existent Adăugare posbilă chiar și în timp ce sistemul este în funcțiune Noul nod va începe să primească mesaje de la rețea imediat. Aceasta se numește "hot plugging" Un nod are capacitatea de a solicita informații de la alte noduri cerere de transmisie la distanță, sau RTR. CAN permite interconectarea a maximum 110 noduri pe o singură reţea, (limitări ale hardware - transceivere) Imunitate ridicată la interferențe electromagnetice Capacitate de autodiagnoză şi autocorecţie a erorilor de date Izolarea erorilor este un avantaj major al CAN Nodurile cu defecte sunt eliminate automat din reţea. 9 10 Organizarea fizică şi electrică Organizarea fizică şi electrică CAN-H CAN-L Regresiv Logic 1 Dominant Logic 0 Regresiv Pentru CAN de mare viteză (conform ISO 11898-2) este necesar ca liniile magistralei să aibă conectate la ambele capete câte o rezistenţă de 120 Ω. Prezenţa rezistoarelor previne reflexiile şi de asemenea asigură o conexiune electrică între ieşirile cu colector (drenă) în gol ale tranceiverelor. Ground TX RX TX RX Nod Nod 11 12
Organizarea nod Stare magistrală pentru două noduri transmiţătoare (ŞI cablat) Controler CAN stochează biţii recepţionaţi bit cu bit până la terminare mesaj Transciever CAN - emiţător- receptor cu adaptarea nivelurilor de tensiune între bus şi controler. Asigură şi circuite de protecţie pentru controler Microcontroler decide cu privire la mesajele primite sau transmise Microcontroler Controler CAN Transceiver CAN CAN -H CAN -L Nod 1 Nod 2 Stare magistrală (AND) 0 0 0 (dominant) 0 1 0 (dominant) 1 0 0 (dominant) 1 1 1 (regresiv) Deosebire faţă de I 2 C la ŞI cablat: la CAN se foloseşte tensiune diferenţială! 13 14 Alte caracteristici Alte caracteristici În terminologia CAN: 1 logic pe magistrală este numit bit regresiv (recessive) 0 logic este bit dominant (tensiune diferenţială mare) Circuitele driver către magistrală pot trage semnalul diferenţial la zero logic, dacă oricare nod aduce magistrala la nivel 0 (făcând 0 dominant faţă de 1) Atunci când toate nodurile transmit 1 (diferenţă minimă de tensiune), se spune că magistrala este în stare regresivă Datele sunt transmise în reţea în pachete cunoscute ca şi cadre de date CAN este o magistrală sincronă - toate transmiţătoarele trebuie să transmită la acelaşi moment pentru ca arbitrarea de magistrală să funcţioneze Nodurile se sincronizează la magistrală prin ascultarea tranziţiei biţilor de pe magistrală. Primul bit dintr-un cadru de date furnizează prima posibilitate de sincronizare într-un cadru (Sync+Prop+Ph1+Ph2) Nodurile trebuie de asemenea să continue să se sincronizeze faţă de următoarele tranziţii din fiecare cadru Din punct de vedere electric la transmisia diferenţială pe CAN bus se determină diferenţa între nivelurile de tensiune dintre linii Transmisia se face pe 2 fire, half duplex 15 16
Stare dominantă / regresivă Nivel de tensiune (V) Niveluri tensiune CAN de mare viteză (ISO 898-2) CAN de mică viteză (ISO 898-3) valorile de niveluri de tensiune sunt orientative Dominant Logic 0 CAN-H Nivel logic 1 Regresiv Regresiv Nivel logic 1 Regresiv Regresiv Regresiv Logic 1 CAN-L Regresiv Tensiune diferenţială 0 Tensiune Dominant 0 Tensiune 5V Dominant CAN -H Timp 3,5V 2,5V 1,5V CAN -H CAN -L 3,4V 1,4V 0V CAN -L 17 18 Principii de funcţionare CAN Mesajele de date transmise prin CAN nu conţin adresa emiţătorului sau a receptorului Conţinutul fiecărui mesaj este etichetat printr-un identificator care este unic în cadrul reţelei. Toate nodurile conectate la magistrală recepţionează mesajul Mesajele sunt filtrate în funcţie de relevanţa lor pentru un anumit nod. Dacă un mesaj este relevant, este procesat Identificatorul unic determină şi prioritatea mesajului. Cu cât valoarea numerică a identificatorului este mai mică cu atât prioritatea sa este mai mare Totdeauna va câştiga accesul la magistrală mesajul cu prioritatea maximă Mesajele cu prioritate mai mică sunt retransmise automat în următoarele cicluri de magistrală, în funcţie de prioritatea lor 19 Principii de funcţionare CAN Valoarea numerică a fiecărui identificator de mesaj (deci și prioritatea mesajului) este alocat în timpul fazei inițiale de proiectare a sistemului La CAN datele se transmit şi recepţionează utilizând Cadre Mesaj (Message Frames) care transportă datele de la un nod emiţător către unul sau mai multe noduri receptoare. Protocolul CAN standard, versiunea 2.0A, foloseşte mesaje cu identificatori având lungimea de 11 biţi Protocolul CAN extins, versiunea 2.0B, foloseşte mesaje cu identificatori având lungimea de 29 biţi 20
Comunicare pe bază de mesaj Transferul mesajelor pe magistrală se efectuează şi se controlează prin patru tipuri diferite de cadre: Un DATA FRAME transferă date de la transmiţător la receptoare Un REMOTE FRAME se transmite de o unitate conectată la magistrală pentru a solicita transmisia unui DATA FRAME cu acelaşi IDENTIFICATOR Un ERROR FRAME este transmis de orice unitate ce detectează o eroare pe bus Un OVERLOAD FRAME e utilizat pentru a furniza o întârziere suplimentară între cadrele precedent şi următor de tip DATA sau REMOTE FRAME Cadrele de date şi cadrele la distanţă sunt separate de precedentele cadre de un cadru de tip INTERFRAME SPACE 21 1. DATA FRAME Cadrul de date este compus din 7 câmpuri binare diferite: START OF FRAME ARBITRATION FIELD CONTROL FIELD DATA FIELD (poate avea şi lungime zero) CRC FIELD ACK FIELD Intermission = 3 biţi regresivi END OF FRAME 22 1. DATA FRAME 1. DATA FRAME 1 12 6 0 la 64 16 2 7 Start SOF Câmp de arbitrare Identificator Câmp de control Bit cerere transmisie la distanţă 11 1 Câmp de date ID extensie =0 Câmp CRC 1 1 4 Cod lungime date Câmp de confirmare EOF (sfârşitul cadrului) Ack slot Ack delimitator 1 1 START (SOF) = un singur bit dominant, 0 IDENTIFICATORUL mesajului are lungimea de 11 biţi. Aceşti biţi sunt transmişi începând cu MSb (ID10). Cei mai 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 Transmit Request). RTR bit poate specifica o cerere de transmisie la distanţă. Într-un cadru de date bitul RTR trebuie să fie dominant (0 = 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 rezervaţi pentru a indica fie formatul standard fie formatul extins. Pentru formatul standard cei doi biţi rezervaţi trebuie să fie dominanţi. i. Următorii patru biţi codifică lungimea în număr de octeţi a datelor (data length code). Codarea numărului de octeţi se face conform tabelului următor, în care s-a notat cu d bit dominant şi cu r bit recesiv. Număr de Cod lungime date octeţi de date DLC3 DLC2 DLC1 DLC0 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 Nu se pot utiliza valori mai mari de 8 Bytes. 25 26 1. DATA FRAME Câmpul de date are lungimea între 0şi 64 de octeţi în funcţie de valoarea dată în câmpul de control. Câmpul CRC furnizează un cod de verificare ciclică redundantă (CRC) şi este trimis după câmpul de date pentru corecţia erorilor. Câmpul CRC conţine secvenţa CRC (15 biţi)şi delimitatorul CRC (1 bit regresiv). 1. DATA FRAME Câmpul de confirmare (acknowledge) este utilizat pentru a permite ca identificatorul să semnaleze dacă cadrul a fost recepţionat corect: transmiţătorul pune un bit regresiv (1) în porţiunea ACK slot a câmpului confirmare dacă receptorul detectează o eroare, el lasă liniile la bit regresiv (1) dacă transmiţătorul vede un 0 pe magistrală în porţiunea ACK slot, elştie că cel puţin un nod a recepţionat corect Porţiunea ACK este urmată de un singur bit regresiv delimitator End of Frame (EOF) conţine 7 biţi regresivi. 27 28
1. DATA FRAME format standard 1. DATA FRAME format extins 29 30 2. REMOTE FRAME Remote frame este utilizat când un nod cere date de la alt nod. Solicitantul setează bitul RTR la 1 pentru a specifica cadrul la distanţă. El specifică de asemenea zero biţi de date. Nodul care recunoaşte câmpul identificator va răspunde cu un cadru de date care are acelaşi identificator Remote frame este de fapt un Data frame cu bitul RTR regresiv pentru a indica că este vorba de o cerere de transmisie la distanţă (Remote Transmit Request) 3. ERROR FRAME Fiecare interfaţă CAN conţine un contor de erori pentru recepţie (REC) un contor de erori pentru transmisie (TEC) Dacă un nod de transmisie detectează o eroare, atunci acesta va incrementa contorul său TEC mai rapid (cu 8) decât nodurile de recepţie care incrementează contorul propriu REC (cu 1) Un număr mare de erori face ca nodul să fie exclus din comunicaţie 31
3. ERROR FRAME Un cadru de eroare poate fi generat de oricare nod care detectează o eroare pe magistrală Cadrul de eroare constă dintr-un câmp fanion/indicator de eroare urmat de un câmp delimitator de eroare cu 8 biţi regresivi. Câmpul delimitator de eroare permite magistralei să revină la starea stabilă astfel încât să se poată relua transmisia cadrului de date Primul câmp este generat prin suprapunerea fanioanelor de eroare (ERROR FLAGs) provenite de la diferitele staţii conectate la magistrală 3. ERROR FRAME - stări eroare activă / pasivă - Există două forme pentru un ERROR FLAG (determinarea stării fiecărui nod descrisă mai jos): ACTIVE ERROR FLAGşi PASSIVE ERROR FLAG. ACTIVE ERROR FLAG constă din şase biţi dominanţi consecutivi. PASSIVE ERROR FLAG constă din şase biţi regresivi consecutivi cu excepţia cazului când ei sunt suprascrişi de biţi dominanţi proveniţi de la alte noduri. 33 34 3. ERROR FRAME - stări eroare activă / pasivă - Modul "Eroare activă Nodul este pe deplin funcțional și ambele registre de numărare eroare conțin numere mai mici de 127 Modul Eroare pasivă Dacă oricare dintre cele două contoare de eroare depăşeşte 127 Astfel nodul respectiv nu se va distruge în mod activ traficul de bus atunci când detectează o eroare Nodul în modul pasiv de eroare poate transmite şi primi în continuare mesaje Bus-Off Atunci când contorul TEC ajunge la 255 Nodul nu mai participă de loc la traficul de bus Comunicațiile dintre celelalte noduri pot continua nestingherit. 35 3. ERROR FRAME - stări eroare activă / pasivă - Un nod de tip eroare activă semnalizează detectarea unei condiţii de eroare prin transmiterea unui ACTIVE ERROR FLAG (6 biţi dominanţi + 8 biţi regresivi) Formatul fanionului de eroare violează legea împănării cu biţi i aplicată tuturor câmpurilor începând cu START OF FRAME până la CRC DELIMITER sau distruge forma fixă a câmpului de ACK ori a celui de END OF FRAME. Ca urmare toate celelalte staţii detectează o condiţie de eroare şi fiecare dintre ele porneşte la transmisia unui ERROR FLAG Secvenţa de biţi dominanţi care poate fi monitorizată pe bus rezultă din suprapunerea diferitelor fanioane de eroare transmise de staţiile individuale. Lungimea totală a acestei secvenţe variază între minimum 6 biţişi maximum 12 biţi. 36
3. ERROR FRAME - stări eroare activă / pasivă - Erorile de transmisie contribuie cu 8 puncte la incrementarea TEC a nodului ce transmite Erorile de recepţie contribuie cu 1 punct la incrementarea REC Mesajele transmise sau recepţionate corect produc decrementarea contoarelor din noduri. 37 3. ERROR FRAME - stări eroare activă / pasivă - De exemplu, nodul A generează o eroare (oricare ar fi motivul) după fiecare încercare de transmisie mesaj La fiecare eroare TEC nod A incrementat cu 8 şi REC alte noduri cu 1 Nodul A încerca să retransmită mesajul și din nou eroare Atunci când TEC trece de 127 (adică după 16 încercări, 16x8 = 128), nodul A trece în mod eroare pasivă. Acesta va transmite acum indicatoare de eroare pasivă pe bus (nu se mai aude ) Nodul A continuă să incrementeze contorul său TEC Atunci când acesta trece peste 255, nodul-a în cele din urmă se oprește și se duce la starea "Bus Off". Celelate noduri: pentru fiecare indicator de eroare activă transmis de A, nodurile vor incrementa contorul lor REC cu 1, până ce A trece în eroare pasivă şi nu mai contează pe bus. 38 3. ERROR FRAME - tipuri de cadre Error frame este un cadru de eroare transmis când se detectează una din erorile definite de CAN: eroare CRC eroare de Acknowledge eroare de format (se recepţionează un bit d în unul din segmentele: End_of_Frame, Interframe_Space, Ack_delimiter şi CRC_delimiter) eroare de bit (se transmite rşi se citeşte d pe magistrală) - nu pe durata arbitrării eroare de umplere cu biţi de sincronizare (Dacă între SOF şi delimitator CRC apar 6 biţi consecutivi de aceeaşi polaritate) 3. ERROR FRAME - tipuri de cadre CRC error - Se foloseşte o valoare CRC de 15 biţi. Fiecare nod calculează CRC şi verifică dacă valoarea calculată coincide cu cea recepţionată. Dacă cel puţin un nod determină eroare se generează un Error Frame / Cadru de eroare. Asta înseamnă că urmează re-transmisie. Acknowledge Error - în câmpul ACK al mesajului, nodul transmiţător verifică dacă slotul ACK (transmis ca un bit regresiv) conţine vreun bit dominant. Acest bit dominant indică că cel puţin un nod a recepţionat corect mesajul. Dacă bitul rămâne regresiv, mesajul nu a fost recepţionat şi se va produce un mesaj de tip Acknowledge Error. Se generează un Error frameşi mesajul original se retransmite după un timp. 39 40
3. ERROR FRAME - tipuri de cadre Form Error (eroare de format)- dacă se recepţionează un bit dominant într-unul din segmentele: End of Frame, Interframe Space, Acknowledge delimiter şi CRC Delimiter, protocolul CAN defineşte o violare de format şi se generează un Form Error. După un timp mesajul e retransmis. Bit error - apare în cazul în care se transmite un bit regresivşi se recepţionează un bit dominant cu situaţiile: În timpul câmpului de arbitrare (ID) sau ACK, dacă transmiţătorul trimite un bit regresiv şi detectează pe magistrală un bit dominant nu se generează Bit error, pentru că se consideră că fie se produce operaţia de arbitrare normală fie că s-a conformat prin ACK recepţia corectă. În celelalte cazuri rezultă generarea unui Error frame şi apoi retransmisie. 41 3. ERROR FRAME - tipuri de cadre Eroare de umplere (stuff error) Se foloseşte metoda NRZ, adică nivelul de tensiune se păstrează acelaşi pe toată durata alocată unui bit. Uneori CAN funcţionează asincron, şi se face umplere cu biţi falşi pentru a permite sincronizarea nodurilor receptoare pe baza tranziţiilor. Dacă există mai mult de 5 biţi de aceeaşi polaritate în linie (între SOF şi final câmp CRC), CAN va introduce automat un bit de polaritate opusă. Nodul receptor utilizează acest bit pentru sincronizare, dar îl va ignora atunci când prelucrează datele. Dacă între Start of Frame şi Delimitator CRC apar 6 biţi consecutivi de aceeaşi polaritate atunci s-a violat regula împănării cu biţi de sincronizare, se produce Stuff Error şi se generează un Error Frame. Mesajul va fi repetat. 42 4. OVERLOAD FRAME Overload frame (cadru de supraîncărcare) este un cadru special generat de noduri atunci când este necesar mai mult timp pentru prelucrarea mesajelor deja recepţionate. Cadrul de supraîncărcare este trimis în timpul perioadei stabile inter-cadreşi semnalează că un nod este supraîncărcatşi nu va fi capabil să lucreze corect cu următorul mesaj. Nodul poate întârzia transmisia următorului cadru cu până la două cadre de supraîncărcare în linie, în speranţa că va avea astfel suficient timp pentru a-şi reveni din supraîncărcarea sa. 4. OVERLOAD FRAME OVERLOAD FRAME conţine două câmpuri de biţi: OVERLOAD FLAG şi OVERLOAD DELIMITER. 43 44
4. OVERLOAD FRAME Se pot genera maximum două cadre de tip OVERLOAD FRAME pentru a întârzia următorul cadru de tip DATA sau REMOTE. Fanionul overload constă din 6 biţi dominanţi. Formatul general corespunde celui pentru fanion de eroare activ. Fanionul overload distruge formatul fix al câmpului INTERMISSION. Ca urmare toate celelalte staţii determină o condiţie de tip overload şi pornesc transmisia unui flag overload. Delimitatorul overload constă din 8 biţi regresivi. 45 SPAŢIEREA INTER-CADRE descriere câmpuri binare INTERMISSION (întrerupere / pauză) constă din 3 biţi regresivi. În 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 condiţii de tip overload. BUS IDLE este o perioadă de lungime arbitrară. Magistrala este recunoscută ca liberă. Un mesaj care a aşteptat să fie transmis în timpul transmiterii altui mesaj este pornit la primul interval de bit după INTERMISSION. Detecţia unui bit dominant pe magistrală este interpretată ca START OF FRAME. SUSPEND TRANSMISSION. După ce o staţie eroare pasivă a transmis un mesaj, ea transmite 8 biţi recesivi urmaţi de câmpul INTERMISSION, înainte de a transmite un alt mesaj sau de recunoaşterea că magistrala este liberă. Dacă între timp porneşte transmisia de la o altă staţie, staţia va deveni receptor al acestui mesaj, deci suspendă transmisia. 46 SPAŢIEREA INTER-CADRE SPAŢIEREA INTER-CADRE Cadrele DATA şi REMOTE sunt separate de cadrele precedente indiferent de tipul acestora (DATA FRAME, 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 Pentru staţiile care nu sunt eroare pasivă sau care au fost receptoare la mesajele anterioare formatul este: 47 48
Starea de eroare OBSERVAŢII O valoare contorizată mai mare de 96 indică o funcţionarea defectuoasă pe bus. La pornire, dacă un singur nod este on-line şi el transmite mesaje, nu are de la cine primi ACK Ca urmare detectează eroarea şi va repeta mesajul El poate deveni eroare pasivă, dar nu şi bus off pentru că este singur. Bit stuffing Doar pentru DATA şi 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 metoda cu împănare de biţi (bit stuffing) De fiecare dată când transmiţătorul torul detectează o succesiune de cinci biţi consecutivi cu aceeaşi valoare, în fluxul transmis al biţilor se inserează un bit cu valoare complementară Pentru cadrele de date (normal sau remote) biţii din câmpurile următoare (CRC DELIMITER, ACK FIELD şi END OF FRAME) au format fix şi nu sunt împănate cu biţi Cadrele ERROR FRAME şi OVERLOAD FRAME au formă fixă şi nu sunt codate prin metoda împănării cu biţi 49 50 Observaţii privind arbitrarea Observaţii privind arbitrarea Conform specificaţiilor tehnice, controlul magistralei CAN este făcut printr-o tehnică numită CSMA/AMP = Carrier Sense Multiple Access with Arbitration on Message Priority (Acces multiplu prin sesizarea putătoareişi arbitrare prin prioritate de mesaj) CSMA/AMP este o variantă a CSMA/CD (Carrier Sense Multiple Access with Collision Detection) Această metodă este similară cu metoda de arbitrare a magistralei I 2 C. C S M A / C D Carrier Sense - fiecare Multiple Access - nod monitorizează fiecare nod are şanse magistrala pentru a egale de transmitere sesiza, înainte de a mesajelor pe transmiterea magistrală mesajului, că nu există activitate Collision Detection - coliziunile sunt rezolvate prin arbitrarea la fiecare bit, pe baza priorităţii pre-fixate a identificatorilor 51 52
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. Câmpul de arbitrare, inclus în cadrul de date, este utilizat pentru rezolvarea priorităţilorilor mesajelor de pe magistrală. 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ă este vorba de un câmp de date extins, un bit SRR neutilizat şi un bit RTR, în funcţie de versiunea de standard CAN utilizată. Observaţii privind arbitrarea Se observă că magistrala CAN se bazează pe protocol de mesajşi nu de adresă. Mesajele nu se transmit de la un nod la altul pe bază de adresă. Se transmite mesaj care e recepţionat de toate nodurile Fiecare nod decide dacă va neglija mesajul sau va prelucra mesajul. Mesajele pot fi destinate unui singur nod sau mai multor noduri Fiecare nod recepţionează, sau neglijează un mesaj pe baza ID-ului mesajului. 53 54 Variante ale CAN Pentru că standardul iniţial a definit doar nivelurile fizic şi i al legăturii de date din modelul OSI, specificaţiile CAN au constituit baza unui mare număr de variante de standardizare propuse mai ales de industrie Adesea acest lucru creează confuzie pentru că utilizatorii spun că utilizează CAN 55 Variante ale CAN ISO 11898-2. CAN de mare viteză. Utilizează semnal diferenţial transmis prin 2 fire. Este cel mai răspândit standard în aplicaţii de automobile, transport feroviar de marfă şi aplicaţii de reţele de control industrial. ISO 11898-3. CAN de mică viteză (tolerant la erori) TTCAN (ISO 11898-4). Time Triggered CAN - Protocolul TTCAN alocă ferestre de timp pentru raportare din partea nodurilor, ferestre ce sunt planificate şi administrate pe magistrală astfel încât să se asigure că nu se produce supraîncărcare (overload) pe magistrală chiar şi în cele mai dezavantajoase situaţii. Se bazează pe un protocol CAN la nivelul legăturii de date furnizând în plus un Clock sistem pentru planificarea mesajelor. 56
Variante ale CAN DeviceNet dezvoltat pentru utilizare în controlul proceselor industriale este bazat complet pe standardul CAN - ISO 11898-2 5v DeviceNet defineşte în mod riguros modul de interconectare fizicăşi i are specificaţii ii mai restrictive decât standardul în ceea ce priveşte tranceiverele Foloseşte identificator de 11 biţi şi permite rate de doar 125, 250 şi 500 kbaud De asemenea impune restricţii privind conţinutul mesajelor pentru a permite interoperabilitatea dintre diferite unităţi de fabricaţie. Variante ale CAN CANopen. Este de asemenea proiectat pentru aplicaţii de control. Este un standard software bazat pe CAN - ISO 11898-2 5v. Limitează numărul de noduri la 127 şi le alocă câte un ID. Prin organizaţia CAN in Automation (CiA) se definesc pentru fiecare tip de nod anumite profiluri pentru a simplifica utilizarea sistemelor provenite de la diferiţi producători. Se definesc de asemenea unele comenzi standard ceea ce permite modulelor să fie identificate automat prin alocarea unui ID de nod. Standardul mai defineşte modul de păstrare a sincronizării pentru citire şi scriere de blocuri mari de date. 57 58 Variante ale CAN ISO 11992-1 (B10011S) CAN tolerant la erori pentru comunicaţie cu camioane / autotrenuri / remorci / platforme de transport. ISO 11783-2 250 kbit/s, foloseşte patru cabluri torsadate fără ecran: două pentru CAN şi două ca terminatoare pentru polarizarea circuitelor de ieşire faţă de tensiunea de alimentare şi faţă de masă. Standard pentru echipamente agricole. 59 Variante ale CAN SAE J1939. O întreagă familie de standarde industriale (agricultură, marină, camioane, autobuze, etc.) construite pentru servicii de comunicare a datelor pe baza CAN - ISO 11898-2. Există documente specifice fiecărui tip de aplicaţie ce definesc combinaţia particulară a nivelurilor de comunicaţie pentru mediul industrial specific. SAE J1939 este utilizat în special în echipamente agricole şi de construcţii, folosind două cabluri torsadate. Varianta 11 are ecran, în timp ce varianta 15 nu are ecran. SAE J1939-11: 250 kbit/s, pentru cablu torsadat ecranat (Shielded Twisted Pair = STP) SAE J1939-15: 250 kbit/s, pentru cablu torsadat fără ecran (UnShielded Twisted Pair = UTP) 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