Sunteți pe pagina 1din 44

CURS 8 CAN

INFORMATICA INDUSTRIALA As. drd. ing. Valentin STEFANESCU

Introducere
2

CAN (Controller Area Network) a fost dezvoltat in anul 1985 de catre Bosch pentru a fi folosit in special in industria auto Inainte de aparitia CAN, toate componentele unui autoturism erau conectate prin topologii point-to-point Odata cu cresterea numarului de dispozitive electronice utilizate intr-un autoturism, aceste interconexiuni au devenit dificil de realizat si costurile au crescut CAN reprezinta un bus serial cu posibilitatea de a interconecta o multitudine de dispozitive El a fost rapid adoptat si in anul 1993 a fost standardizat (ISO 11898)

Introducere
3

Incepand cu 1994, au fost dezvoltate protocoale superioare bazate pe CAN (cum ar fi CANopen sau DeviceNet) care au facilitat utilizarea CAN si in alte domenii industriale Avantajele CAN, in special in industria auto, sunt semnificative Cel mai evident avantaj este costul redus. CAN este un bus serial rapid format din 2 fire Numarul mare de dispozitive si productia lor in numar mare datorita industriei auto a contribuit la costurile reduse pentru implementarea unei retele CAN

Introducere
4

De asemenea, in industria auto s-a pus mare accent pe fiabilitate si raspuns rapid CAN ofera metode sofisticate de detectie a erorilor Un exemplu statistic: la o viteza de 500kbps si o incarcare a bus-ului de 25%, functionand 2000 de ore/ an, o eroare va fi nedetectata o data la 1000 de ani Mesajele eronate sunt retransmise si fiecare nod este informat de existenta unei erori Nodurile defecte sunt automat eliminate din comunicatia pe bus CAN prezinta imunitate ridicata la interferentele EM

Introducere
5

CAN ofera performante real time prin asigurarea unei rate de transmisie de 1 Mbit/s (pentru o lungime a busului de 40m) Mesajele sunt scurte, intre 0 8 bytes de date, datele mai mari pot fi impartite in mai multe mesaje Latenta scazuta intre cererea de transmisie si transmisia efectiva Accesul la bus se realizeaza prin metoda CSMA/CD cu AMP (Arbitration on Message Priority) mesajul cu cea mai mare prioritate castiga accesul la magistrala fara a pierde timp

Introducere
6

CAN este un protocol flexibil, nodurile pot fi conectate si deconectate oricand (plug & play) CAN permite existenta mai multor noduri master, fiecare nod putand accesa magistrala individual Numarul de noduri nu este limitat de protocol CAN este orientat pe mesaj, nu pe noduri Identificatorul mesajului specifica continutul si prioritatea mesajului Mesajele pot fi transmise mai multor/tuturor nodurilor simultan (Multicast/Broadcast) Toate nodurile proceseaza simultan datele comune

Introducere
7

Fara CAN

Introducere
8

Cu CAN

Protocolul CAN
9

Protocolul CAN se bazeaza pe modelul OSI Deoarece este un protocol de nivel inferior, numai cateva niveluri OSI sunt pastrate Acest lucru scade costul de implementare si reduce timpul de la cererea de transmisie pana la transmisia efectiva Astfel, pentru CAN sunt definite specificatii doar pentru nivelurile 1 si 2 (fizic si de date) din modelul OSI Nivelul de date este impartit in doua subniveluri: MAC (Medium Access Control) si LLC (Logical Link Control)

Protocolul CAN
10

Protocolul CAN
11

Functia principala a MAC este de a arbitra accesul la magistrala de transmisie comuna astfel incat sa nu se produca coliziuni De asemenea, la nivelul MAC se produce codarea si decodarea frame-urilor de transmisie, verificarea si semnalarea erorilor, precum si detectia de echipamente nefunctionale Nivelul LLC ofera utilizatorului (aplicatiilor ce ruleaza in nivelurile superioare) o interfata definita printr-un set de servicii de comunicatii bine definit, precum si abilitatea de a depista daca un mesaj receptionat este util pentru nodul curent

Protocolul CAN
12

Implementarea CAN permite modificarea serviciilor definite in LLC, precum si a mediului fizic de transmisie, insa nu permite modificari la nivelul MAC Spre deosebire de majoritate fieldbus-urilor, CAN nu are definite niveluri de aplicatie native Totusi, un numar de astfel de protocoale bazate pe CAN exista si usureaza implementarea sistemelor complexe

Nivelul fizic
13

Retelele CAN utilizeaza o magistrala comuna Magistralele CAN contin la fiecare capat care o rezistenta (specificatiile standardului recomanda o valoare de 120) pentru a anula reflexiile semnalului Din acelasi motiv, se recomanda ca topologia sa fie cat mai apropiata de o singura linie Sunt permise device-uri conectate prin intermediul stub-urilor (portiuni de retea in care datele se transmit pe o singura cale), insa lungimea lor trebuie sa fie mica (la 1Mbps, nu mai mult de 30cm)

Nivelul fizic
14

Pot fi folosite diverse medii de transmisie:


Magistrala

formata din 2 fire care permite transmise diferentiala si asigura fiabilitate crescuta. In acest caz, pentru a imbunatati imunitatea la interferentele EM se pot folosi cabluri torsadate ecranate Magistrala formata dintr-un singur fir, mai simpla si mai ieftina, folosita mai ales in industria auto Fibra optica, folosita in medii dificile. Ofera imunitate completa la interferentele EM. Este de obicei folosita pentru interconectarea diferitelor subretele CAN

Ratele de transfer folosite in retelele CAN variaza intre 50Kbps si 1 Mbps (maxim suportat)

Nivelul fizic
15

Ratele de trasfer depind de lungimea magistralei cat si de intarzierile introduse de echipamente In general, trebuie ca produsul dintre lungimea magistralei si rata de transfer sa fie aproximativ constant Repetoare de semnal pot fi folosite in cazul in care reteaua trebuie extinsa si sunt suficiente rate de transfer mici sau medii De asemenea, se pot obtine topologii diferite prin introducerea repetoarelor (arbore, pieptene, etc.) insa acestea introduc intarzieri si distanta dintre noduri trebuie redusa

Nivelul fizic
16

In cazul CAN, spre deosebire de PROFIBUS-PA, nu exista o modalitate de a transmite si datele si de a alimenta dispozitivul pe acelasi fir De asemenea, in cazul CAN nu sunt definiti conectori, insa aplicatiile de nivel superior bazate pe CAN definesc conectorii necesari si atribuie pinii corspunzator In CAN, interfata electrica se bazeaza pe o configuratie de tip open collector Aceasta configuratie presupune ca semnalul de iesire sa fie aplicat in baza unui tranzistor, iar colectorul sau sa fie legat la pinul corespunzator de iesire, in timp ce emitorul este legat la pinul de masa

Nivelul fizic
17

Astfel, pe bus se pot transmite doua niveluri complementare, denumite nivel dominant si nivel recesiv In mod uzual, nivelul dominant corespunde nivelului de 0 logic iar nivelul recesiv corespunde nivelului de 1 logic

Nivelul fizic
18

Deoarece magistrala este comuna, ea poate fi in starea recesiva doar cand toate nodurile sunt recesive (SI logic)

Nivelul fizic
19

Codarea bitilor se face folosind tehnica NRZ (Non Return to Zero) care ofera eficienta mare deoarece informatia de sincronizare nu este codata separat fata de date Sincronizarea intre noduri se faci prin tehnica numita Direct Phase-Locked Loop (DPLL) care extrage informatia referitoare la timp din stream-ul de biti De asemenea, fronturile semnalului sunt folosite pentru sincronizarea ceasurilor locale pentru a compensa tolerantele si devierile oscilatoarelor Pentru un nivel bun de sincronizare trebuie sa se asigure un numar suficient de fronturi

Nivelul fizic
20

Pentru aceasta, CAN foloseste tehnica numita bitstuffing Aceasta presupune ca oricand apar 5 sau mai multi biti consecutivi de acelasi fel, nodul emitator insereaza un bit complementar Acesti biti sunt eliminati la receptie pentru a obtine semnalul original

Frame-uri CAN
21

Standardul CAN defineste doua tipuri de frame-uri: frame-ul standard si frame-ul extins Acestea difera in special prin lungimea identificatorului si prin cativa biti din campul de arbitrare Astfel, frame-ul standard (cunoscut drept CAN 2.0A) defineste un identificator cu lungimea de 11 biti Acest lucru inseamna ca pot exista pana la 2048 de identificatori disponibili pentru aplicatii ce ruleaza in aceeasi retea

Frame-uri CAN
22

Frame-ul extins (CAN 2.0B) defineste 29 de biti pentru identificator In acest caz numarul de identificatori atinge jumatate de miliard, suficient pentru orice aplicatie

Folosind identificatori extinsi intr-o retea in care sunt conectate si noduri CAN 2.0A poate duce la instabilitate, astfel, au fost definiti controlleri CAN 2.0B pasivi care ignora frame-urile extinse si nodurile proceseaza doar frame-urile standard

Frame-uri CAN
23

Frame-urile standard sunt suficiente pentru aproape orice aplicatie si standardele superioare (CANopen sau DeviceNet) se bazeaza pe ele Ele asigura o comunicatie mai eficienta datorita cantitatii mai mici de overhead care se adauga datelor transmise In CAN se regasesc 4 tipuri de frame-uri: data, remote, error si overload

Frame-uri data
24

Data frame-urile sunt folosite pentru a transmite date in retea Deoarece transmisia se face intr-un mediu serial, frameurile incep cu in bit SOF (Start of Frame) cu nivel dominant El are de asemenea rolul de a sincroniza nodurile receptoare Imediat dupa bitul SOF urmeazacampul de arbitrare ce include atat identificatorul cat si bitul de RTR (Remote Transmission Request) Identificatorul are roulul de a specifica continutul frameului care este transmis in intreaga retea

Frame-uri data
25

De asemenea, identificatorul e folosit de nivelul MAC pentru a determina prioritatea frame-ului (valoare mai mica = prioritate mai mare) In cazul frame-urilor extinse, identificatorul e separat in identificatorul de baza (11 biti) si cel extins (18 biti) pentru a asigura compatibilitatea

Frame-uri data
26

Urmatorul camp este cel de control. El contine, in cazul frame-urilor standard, bitul IDE (Identifier Extension) care deosebeste frame-urile standard de cele extinse In cazul frame-urilor extinse, bitul IDE e inclus in campul de arbitrare ca si bitul SRR (Substitute Remote Request) Acesta va avea merau o valoare recesiva pentru a pastra integritatea frame-ului

Frame-uri data
27

Urmeaza apoi bitii rezervati r0 (frame-uri simple) sau r0 si r1 (frame-uri extinse) si campul DLC (Data Length Code) Acesta specifica, pe o lungime de 4 biti lungimea (in bytes) a campului de date Bitii r0 si r1 sunt transmisi la valoarea dominanta si sunt ignorati la receptie

Frame-uri data
28

Campul de date stocheaza datele utile ce se transmit, cu lungimea maxima de 8 bytes Dupa aceea, urmeaza campul de CRC care verifica integritatea datelor la receptie (15 biti) Campul de CRC contine un ultim bit delimitator cu valoare recesiva

Frame-uri data
29

Ultimul camp este campul EOF (End Of Frame) care contine 7 biti de nivel recesiv Transmitatorul considera ca frame-ul s-a transmis corect daca nu s-a produs nici o eroare pana la cel de-al 7-lea bit EOF Receptorul considera ca transmisia s-a facut cu succes daca nu exista nici o eroare pana la al 6-lea bit EOF Campul IMS (Intermision) separa frame-urile consecutive prin 3 biti recesivi

Frame-uri remote
30

Frame-urile remote se asemana cu cele de date, insa nu contin campul de date Ele sunt folosite pentru a cere un anumit mesaj transmis in retea de un alt nod Nodul care cere retransmisia nu stie cui ii cere acest lucru Este rolul receptorilor sa determine acest lucru Campul DLC nu este folosit, insa el ar trebui setat la valoarea celui din frame-ul solicitat pentru a evita situatiile in care mai multe noduri transmit frame-uri cu acelasi identificator simultan

Frame-uri de eroare
31

Frame-urile de eroare au rolul de a anunta nodurile din retea de prezenta unei erori Ele sunt formate din doua campuri: error flag si error delimiter Error flag poate fi activ (format din 6 biti dominanti) sau pasiv (format din 6 biti recesivi) Un flag activ incalca regula de bit stuffing si produce detectia unei erori in toate nodurile din retea Fiecare nod transmite un flag propriu Delimiter-ul e format din 8 biti recesivi. Dupa transmiterea unui flag, fiecare nod transmite biti recesivi si verifica starea bus-ului

Frame-uri de overload
32

In momentul in care bus-ul e in stare recesiva, se mai transmit inca 7 biti recesivi pentru a completa campul In cazul frame-urilor de overload, acestea sunt folosite de nodurile mai lente pentru a incetini traficul in retea Acest lucru se face prin adaugarea de intarzieri suplimentare intre frame-urile de date si remote Ca si frame-urile de eroare, ele contin un flag si un delimiter Receptoarele CAN din prezent sunt foarte rapide, astfel, frame-urile de overload sunt aproape inutile

Tehnici de acces la magistrala


33

CAN se bazeaza pe tehnologia CSMA (Carrier Sense Multiple Access) Cand nu se transmite nimic, bus-ul e in stare recesiva si orice nod poate transmite Bitul de SOF este intodeauna dominant pentru a semnaliza ca bus-ul este ocupat celorlalte noduri Daca bus-ul e in stare dminanta (se transmite informatie in retea), nodurile trebuie sa astepte pana cand transmisia se termina si bus-ul ajunge in stare recesiva

Tehnici de acces la magistrala


34

Exista situatii cand 2 noduri pot transmite simultan (desi destul de improbabil) In acest caz se produce o coliziune Intr-o retea CAN, un nod va transmite imediat dupa terminarea bitilor IMS Intre timp, alte noduri pot incerca sa transmita si in acest caz, nodurile se sincronizeaza folosint identificatorul, castigand accesul mesajul cu prioritatea mai mare CAN adauga algoritmului CSMA prioritatea mesajului

Tehnici de acces la magistrala


35

Astfel, in cazul unei coliziuni intr-o retea CAN, nodul care va castiga magistrala este cel cu mesajul cel mai urgent Spre deosebire de Ethernet, arbitrarea nu se face aleator si astfel, CAN trateaza coliziunile intr-un mod mult mai eficient In cazul unei coliziuni, toate nodurile opresc transmisa, mai putin cel cu prioritate maxima, astfel nu se pierde mult timp pana cand traficul este reluat

Tehnici de acces la magistrala


36

Cand transmite, fiecare nod verifica nivelul de pe bus Bitul SOF este transmis dominant pentru a seta bus-ul in starea dominanta Apoi urmeaza identificatorul, care determina prioritatea mesajului Daca un nod transmite o valoare recesiva in timp ce bus-ul este in stare dominanta, el intelege ca a pierdut arbitrarea si se retrage din transmisie De asemenea, trece in starea de receptie pentru a primi frame-ul castigator

Tehnici de acces la magistrala


37

Astfel, in cazul unei coliziuni, acest algoritm asigura ca toate nodurile se vor retrage din transmisie pana la sfarsitul campului de arbitrare, mai putin nodul cu prioritate maxima In acest mod, transmisia nu este oprita in cazul unei coliziuni si traficul se mentine constant Nodul castigator nu realizeaza ca s-a produs o coliziune Practic, nodurile pot transmite simultan atata timp cat bitii sunt comuni De aceea, pana la sfarsitul campului de arbitrare se determina castigatorul cu prioritatea maxima

Tehnici de acces la magistrala


38

Managementul erorilor
39

Deoarece CAN este folosit in aplicatii ce necesita o fiabilitate ridicata, un aspect important a fost detectia si managementul erorilor CAN are un mecanism foarte bine pus la punct pentru acest lucru CAN implementeaza 5 tehnici pentru detectia erorilor

CRC

15 biti de control al integritatii adaugati la sfarsitul frame-ului Frame check exista cativa biti cu niveluri predefinite in interiorul unui frame (delimiter-ul ACK si CRC, bitii EOF). Daca unul din ei are alta valoare decat cea standard, se genereaza un frame de eroare

Managementul erorilor
40

Acknowledgement

check Nodul destinatar verifica daca bitul ACK a fost setat la valoarea dominanta. In caz contrar se constata o eroare Bit monitoring Fiecare nod ce transmite compara valoarea de pe bus cu valoarea ce este scrisa. Daca apar diferente, se semnaleaza eroare Bit stuffing Fiecare nod verifica daca regula de bit stuffing a fost incalcata. Daca se gasesc 6 biti de acelasi nivel (in afara de CRC), se semnaleaza o eroare

Cu toate aceste tehnici de detectie a erorilor, probabilitatea ca o eroare sa treaca nedetectata este de 4.710-11

Managementul erorilor
41

CRC success

CRC error

ACK check

Frame check

Managementul erorilor
42

De asemenea, CAN monitorizeaza si functionarea nodurilor in retea In cazul in care un nod se defecteaza, acesta este deconectat de la retea pentru a nu perturba comunicatia Acest mecanism este capabil sa determine daca o eroare este permanenta sau este un eveniment ocazional (burst) Un nod poate avea una din urmatoarele 3 stari:

Error

active Error passive Buss off

Managementul erorilor
43

Nodurile error active si error passive participa la comunicatie in acelasi mod, insa primul genereaza frame-uri de eroare active, cel de-al doilea pasive Deosebirea este ca nodurile error passive au mai generat mesaje de eroare si au fost mutate in categoria de error passive Mesajele error passive sunt formate din biti recesivi si nu afecteaza comunicatia Pentru a indica daca un nod se afla intr-una din cele 3 stari, se folosesc doua counter-e: TEC (Transmission Error Count) si REC (Receive Error Count)

Managementul erorilor
44

Principiul de baza este urmatorul


Cand se detecteaza o eroare, counter-ele sunt incrementate cu o anumita valoare Cand se realizeaza o transmisie reusita, ele sunt decrementate Valoarea cu care se incremeneteaza counter-ul pentru nodul care detecteaza primul eroarea este mai mare decat cea cu care se incrementeaza pentru cele care doar raspund la error flag In acest mod, counter-ul pentru nodul defect va avea o valoare mai mare decat celelalte Cand counter-ul depaseste primul prag (127), este trecut in starea error passive pentru a nu afecta comunicatia La al doilea prag (255) este deconectat de la retea (bus off) In acest caz poate fi setat din now la starea error active numai dupa ce este resetat si reconfigurat