logo

Protocolul CAN (Controller Area Network).

CAN înseamnă retea de control protocol. Este un protocol care a fost dezvoltat de Robert Bosch în jurul anului 1986. Protocolul CAN este un standard conceput pentru a permite microcontrolerului și altor dispozitive să comunice între ele fără niciun computer gazdă. Caracteristica care face ca protocolul CAN să fie unic printre alte protocoale de comunicație este tipul de magistrală de difuzare. Aici, difuzare înseamnă că informația este transmisă către toate nodurile. Nodul poate fi un senzor, un microcontroler sau un gateway care permite computerului să comunice prin rețea prin cablul USB sau portul ethernet. CAN este un protocol bazat pe mesaje, ceea ce înseamnă că mesajul poartă identificatorul mesajului și, pe baza identificatorului, se decide prioritatea. Nu este nevoie de identificarea nodului în rețeaua CAN, așa că devine foarte ușor să îl inserați sau să îl ștergeți din rețea. Este un tip de protocol de comunicație serial semi-duplex și asincron. CAN este un protocol de comunicație cu două fire, deoarece rețeaua CAN este conectată prin magistrala cu două fire. Firele sunt perechi răsucite având o impedanță caracteristică de 120Ω conectată la fiecare capăt. Inițial, a fost conceput în principal pentru comunicarea în interiorul vehiculelor, dar acum este folosit în multe alte contexte. La fel ca UDS și KWP 2000, POATE fi folosit și pentru diagnosticarea la bord.

De ce pot?

Necesitatea unui protocol de comunicare standard centralizat a venit din cauza creșterii numărului de dispozitive electronice. De exemplu, pot exista mai mult de 7 TCU pentru diferite subsisteme, cum ar fi tabloul de bord, controlul transmisiei, unitatea de control al motorului și multe altele într-un vehicul modern. Dacă toate nodurile sunt conectate unu-la-unu, atunci viteza de comunicare ar fi foarte mare, dar complexitatea și costul firelor ar fi foarte mari. În exemplul de mai sus, un singur tablou de bord necesită 8 conectori, așa că pentru a depăși această problemă, CAN a fost introdus ca o soluție centralizată care necesită două fire, adică CAN high și CAN low. Soluția de utilizare a protocolului CAN este destul de eficientă datorită prioritizării mesajelor și flexibilă deoarece un nod poate fi introdus sau îndepărtat fără a afecta rețeaua.

Aplicații ale protocolului CAN

Inițial, protocolul CAN a fost conceput pentru a viza problema de comunicare care apare în interiorul vehiculelor. Dar mai târziu, datorită caracteristicilor pe care le oferă, este folosit în diverse alte domenii. Următoarele sunt aplicațiile protocolului CAN:

  • Auto (vehicule de pasageri, camioane, autobuze)
  • Echipamente electronice pentru aviație și navigație
  • Automatizare industrială și control mecanic
  • Lift și scări rulante
  • Automatizarea clădirilor
  • Instrumente și echipamente medicale
  • Marină, medicală, industrială, medicală

Arhitectură stratificată CAN

După cum știm că OSI model împarte sistemul de comunicații în 7 straturi diferite. Dar arhitectura stratificată CAN constă din două straturi, adică

Să înțelegem ambele straturi.

  • Strat de legătură de date: acest strat este responsabil pentru transferul de date de la nod la nod. Vă permite să stabiliți și să opriți conexiunea. De asemenea, este responsabil pentru detectarea și corectarea erorilor care pot apărea la nivelul fizic. Stratul de legătură de date este subdivizat în două substraturi:
      MAC:MAC înseamnă Media Access Control. Acesta definește modul în care dispozitivele dintr-o rețea obțin acces la mediu. Oferă încapsularea și decapsularea datelor, detectarea erorilor și semnalizarea.
  • SRL:LLC înseamnă Controlul legăturii logice. Este responsabil pentru filtrarea acceptării cadrelor, notificarea de supraîncărcare și gestionarea recuperării.
  • Stratul fizic: Stratul fizic este responsabil pentru transmiterea datelor brute. Acesta definește specificațiile pentru parametri precum nivelul de tensiune, sincronizarea, ratele de date și conectorul.

Specificațiile CAN definesc protocolul CAN și stratul fizic CAN, care sunt definite în standardul CAN ISO 11898. ISO 11898 are trei părți:

jsp javatpoint
  • ISO 11898-1: Această parte conține specificația stratului de legătură de date și a legăturii de semnal fizic.
  • ISO 11898-2: Această parte se află sub stratul fizic CAN pentru CAN de mare viteză. CAN-ul de mare viteză permite o rată de date de până la 1 Mbps utilizată în trenul de propulsie și în zona de încărcare a vehiculului.
  • ISO 11898-3: Această parte intră și sub stratul fizic CAN pentru CAN de viteză mică. Permite o rată a datelor de până la 125 kbps, iar CAN-ul de viteză mică este utilizat acolo unde viteza de comunicare nu este un factor critic.

CiA DS-102: Forma completă a CiA este CAN în automatizare, care definește specificațiile pentru conectorul CAN.

În ceea ce privește implementarea, controlerul CAN și transceiver-ul CAN sunt implementate în software cu ajutorul aplicației, sistemului de operare și funcțiilor de gestionare a rețelei.

Încadrare CAN

Să înțelegem structura cadrului CAN.

Protocolul CAN
    SOF:SOF înseamnă începutul cadrului, ceea ce indică faptul că noul cadru este introdus într-o rețea. Este de 1 bit.Identificator:Un format de date standard definit conform specificației CAN 2.0 A utilizează un identificator de mesaj de 11 biți pentru arbitraj. Practic, acest identificator de mesaj stabilește prioritatea cadrului de date.RTR:RTR înseamnă Remote Transmission Request, care definește tipul de cadru, fie că este un cadru de date sau un cadru la distanță. Este de 1 bit.Câmp de control:Are funcții definite de utilizator.
      MERGE:Un bit IDE într-un câmp de control reprezintă extensia de identificare. Un bit IDE dominant definește identificatorul standard de 11 biți, în timp ce bitul IDE recesiv definește identificatorul extins de 29 de biți.DLC:DLC înseamnă Data Length Code, care definește lungimea datelor într-un câmp de date. Este de 4 biti.Câmp de date:Câmpul de date poate conține până la 8 octeți.
    Câmp CRC:Cadrul de date conține, de asemenea, un câmp de verificare a redundanței ciclice de 15 biți, care este utilizat pentru a detecta corupția dacă aceasta are loc în timpul transmisiei. Expeditorul va calcula CRC înainte de a trimite cadrul de date, iar receptorul calculează, de asemenea, CRC și apoi compară CRC calculat cu CRC primit de la expeditor. Dacă CRC nu se potrivește, atunci receptorul va genera eroarea.Câmp ACK:Aceasta este confirmarea receptorului. În alte protocoale, un pachet separat pentru o confirmare este trimis după primirea tuturor pachetelor, dar în cazul protocolului CAN, nu este trimis niciun pachet separat pentru o confirmare.EOF:EOF înseamnă sfârșitul cadrului. Conține 7 biți recesivi consecutivi cunoscuți Sfârșitul cadrului.

Acum vom vedea cum sunt transmise datele prin rețeaua CAN.

Protocolul CAN

O rețea CAN este formată din mai multe noduri CAN. În cazul de mai sus, am luat în considerare trei noduri CAN și le-am numit nodul A, nodul B și nodul C. Nodul CAN este format din trei elemente care sunt prezentate mai jos:

  • Gazdă
    O gazdă este un microcontroler sau un microprocesor care rulează o aplicație pentru a face o anumită lucrare. O gazdă decide ce înseamnă mesajul primit și ce mesaj ar trebui să trimită în continuare.
  • Controler CAN
    Controlerul CAN se ocupă de funcțiile de comunicare descrise de protocolul CAN. De asemenea, declanșează transmisia sau recepția mesajelor CAN.
  • CAN transceiver
    Transceiver-ul CAN este responsabil pentru transmiterea sau recepția datelor pe magistrala CAN. Acesta convertește semnalul de date în fluxul de date colectat de la magistrala CAN pe care controlerul CAN îl poate înțelege.

În diagrama de mai sus, cablul de pereche răsucite neecranat este utilizat pentru a transmite sau a primi datele. Este, de asemenea, cunoscut sub numele de magistrală CAN, iar magistrala CAN constă din două linii, adică linia de jos CAN și linia de înaltă CAN, care sunt cunoscute și ca CANH și, respectiv, CANL. Transmisia are loc datorita tensiunii diferentiale aplicate acestor linii. CAN-ul folosește un cablu torsadat și o tensiune diferențială din cauza mediului în care se află. De exemplu, într-o mașină, motorul, sistemul de aprindere și multe alte dispozitive pot cauza pierderea datelor și coruperea datelor din cauza zgomotului. Răsucirea celor două linii reduce și câmpul magnetic. Busul este terminat cu o rezistență de 120Ω la fiecare capăt.

Caracteristicile CAN

Protocolul CAN

Cu ajutorul tensiunii diferențiale, vom determina modul în care 0 și 1 sunt transmise prin magistrala CAN. Figura de mai sus este graficul de tensiune care arată nivelul de tensiune al CAN low și CAN high. În terminologia CAN, logica 1 se spune că este recesiv, în timp ce logica 0 este dominantă. Când linia înaltă CAN și linia scăzută CAN sunt aplicate cu 2,5 volți, atunci tensiunea diferențială reală ar fi zero volți. Un zero volți pe magistrala CAN este citit de transceiver-ul CAN ca un 1 recesiv sau logic. Un zero volți pe magistrala CAN este o stare ideală a magistralei. Când linia înaltă CAN este trasă până la 3,5 volți și linia scăzută CAN este trasă în jos la 1,5 volți, atunci tensiunea diferențială reală a magistralei va fi de 2 volți. Este tratat ca un bit dominant sau 0 logic de către transceiver-ul CAN. Dacă starea magistralei este atinsă la 0 dominant sau logic, atunci ar deveni imposibilă trecerea la starea recesivă de către orice alt nod.

Puncte cheie învățate din caracteristicile CAN

  • Logica 1 este o stare recesivă. Pentru a transmite 1 pe magistrala CAN, atât CAN high cât și CAN low trebuie aplicate cu 2,5V.
  • 0 logic este o stare dominantă. Pentru a transmite 0 pe magistrala CAN, CAN high ar trebui aplicat la 3,5 V și CAN low trebuie aplicat la 1,5 V.
  • Starea ideală a autobuzului este recesivă.
  • Dacă nodul ajunge în starea dominantă, nu se poate muta înapoi în starea recesivă de către niciun alt nod.

Logica magistralei CAN

Protocolul CAN
Protocolul CAN

Din scenariul de mai sus, ajungem să știm că starea dominantă suprascrie starea recesivă. Când nodul trimite simultan bitul dominant și cel recesiv, atunci magistrala rămâne dominantă. Nivelul recesiv apare numai atunci când toate nodurile trimit bitul recesiv. O astfel de logică este cunoscută sub denumirea de logică AND și, din punct de vedere fizic, este implementată ca un circuit de colector deschis.

Principiul de comunicare CAN

După cum știm că mesajul este trimis pe baza priorității stabilite în câmpul de arbitraj. Pentru cadrul standard, identificatorul de mesaj este de 11 biți, în timp ce pentru cadrul extins, identificatorul de mesaj este de 29 de biți. Acesta permite proiectantului de sistem să proiecteze identificatorul de mesaj la proiectul în sine. Cu cât identificatorul mesajului este mai mic, cu atât va fi mai mare prioritatea mesajului.

Să înțelegem cum funcționează arbitrajul printr-o diagramă de flux.

Protocolul CAN (Controller Area Network).

Expeditorul dorește să trimită mesajul și așteaptă ca magistrala CAN să devină inactivă. Dacă magistrala CAN este inactivă, atunci emițătorul trimite SOF sau bitul dominant pentru accesul magistralei. Apoi, trimite bitul de identificare a mesajului în bitul cel mai semnificativ. Dacă nodul detectează bitul dominant pe magistrală în timp ce a transmis bitul recesiv, înseamnă că nodul a pierdut arbitrajul și nu mai transmite biți suplimentari. Expeditorul va aștepta și va retrimite mesajul odată ce autobuzul este liber.

Exemplu de arbitraj CAN

Protocolul CAN

Dacă luăm în considerare trei noduri, adică Nodul 1, Nodul 2 și Nodul 3, identificatorii de mesaj ai acestor noduri sunt 0x7F3, 0x6B3 și, respectiv, 0x6D9.

Protocolul CAN

Transmisia tuturor celor trei noduri cu bitul cel mai semnificativ este prezentată în diagrama de mai sus.

unsprezecethbit: Deoarece toți cei trei biți de noduri sunt recesivi, bitul de magistrală va rămâne, de asemenea, recesiv.

10thbit: Toate nodurile au al 10-lea bit ca recesiv, deci magistrala va rămâne, de asemenea, recesiv.

9thbit: Nodul 1 are un bit recesiv, în timp ce alte noduri au un bit dominant, astfel încât magistrala va rămâne, de asemenea, dominantă. În acest caz, nodul 1 a pierdut arbitrajul, așa că nu mai trimite biți.

8thbit: Atât nodul 2, cât și nodul 3 trimit bit recesiv, astfel încât starea magistralei va rămâne recesivă.

7thbit: Nodul 2 trimite un bit dominant în timp ce nodul 3 a trimis un bit recesiv, astfel încât starea magistralei va rămâne dominantă. În acest caz, nodul 3 a pierdut arbitrajul, deci nu mai trimite mesajul în timp ce nodul 2 a câștigat arbitrajul înseamnă că va continua să rețină magistrala până când mesajul este primit.