logo

CAN (Controller Area Network) protokolas

CAN reiškia Valdiklio srities tinklas protokolas. Tai protokolas, kurį sukūrė Robertas Bošas maždaug 1986 m. CAN protokolas yra standartas, skirtas leisti mikrovaldikliui ir kitiems įrenginiams bendrauti tarpusavyje be pagrindinio kompiuterio. Ypatybė, dėl kurios CAN protokolas yra unikalus tarp kitų ryšio protokolų, yra magistralės transliacijos tipas. Čia transliacija reiškia, kad informacija perduodama visiems mazgams. Mazgas gali būti jutiklis, mikrovaldiklis arba šliuzas, leidžiantis kompiuteriui susisiekti tinkle per USB kabelį arba eterneto prievadą. CAN yra pranešimu pagrįstas protokolas, o tai reiškia, kad žinutėje yra pranešimo identifikatorius, o pagal identifikatorių sprendžiamas prioritetas. CAN tinkle nereikia identifikuoti mazgo, todėl jį įterpti arba ištrinti iš tinklo tampa labai paprasta. Tai nuoseklusis pusiau dvipusis ir asinchroninis ryšio protokolo tipas. CAN yra dviejų laidų ryšio protokolas, nes CAN tinklas yra prijungtas per dviejų laidų magistralę. Laidai yra vytos poros, turinčios 120 Ω charakteristikų varžą, sujungtą kiekviename gale. Iš pradžių jis daugiausia buvo skirtas bendravimui transporto priemonėse, tačiau dabar jis naudojamas daugelyje kitų kontekstų. Kaip ir UDS ir KWP 2000, taip pat GALI būti naudojamas integruotai diagnostikai.

Kodėl GALI?

Centralizuoto standartinio ryšio protokolo poreikis atsirado dėl padidėjusio elektroninių prietaisų skaičiaus. Pavyzdžiui, šiuolaikinėje transporto priemonėje gali būti daugiau nei 7 TCU įvairiems posistemiams, tokiems kaip prietaisų skydelis, transmisijos valdymas, variklio valdymo blokas ir daugelis kitų. Jei visi mazgai būtų sujungti vienas su vienu, ryšio greitis būtų labai didelis, tačiau laidų sudėtingumas ir kaina būtų labai dideli. Aukščiau pateiktame pavyzdyje vienam prietaisų skydeliui reikia 8 jungčių, todėl norint išspręsti šią problemą, CAN buvo pristatytas kaip centralizuotas sprendimas, kuriam reikalingi du laidai, t. y. CAN aukštas ir CAN žemas. CAN protokolo naudojimo sprendimas yra gana efektyvus dėl pranešimų prioritetų nustatymo ir lankstus, nes mazgą galima įterpti arba pašalinti nepažeidžiant tinklo.

CAN protokolo taikymai

Iš pradžių CAN protokolas buvo skirtas transporto priemonėse kylančiai ryšio problemai spręsti. Tačiau vėliau dėl siūlomų funkcijų jis naudojamas įvairiose kitose srityse. Toliau pateikiamos CAN protokolo programos:

  • Automobiliai (keleivinės transporto priemonės, sunkvežimiai, autobusai)
  • Elektroninė aviacijos ir navigacijos įranga
  • Pramoninė automatika ir mechaninis valdymas
  • Liftas ir eskalatoriai
  • Pastatų automatika
  • Medicinos prietaisai ir įranga
  • Jūrų, medicinos, pramonės, medicinos

CAN daugiasluoksnė architektūra

Kaip žinome, kad OSI modelis padalina ryšių sistemą į 7 skirtingus sluoksnius. Tačiau CAN sluoksninė architektūra susideda iš dviejų sluoksnių, t.y.

Supraskime abu sluoksnius.

javafx
  • Duomenų ryšio sluoksnis: šis sluoksnis yra atsakingas už duomenų perdavimą iš mazgo į mazgą. Tai leidžia užmegzti ir nutraukti ryšį. Ji taip pat atsakinga už klaidų, kurios gali atsirasti fiziniame lygmenyje, aptikimą ir taisymą. Duomenų ryšio sluoksnis yra padalintas į du posluoksnius:
      MAC:MAC reiškia medijos prieigos valdymą. Tai apibrėžia, kaip tinklo įrenginiai gauna prieigą prie laikmenos. Tai suteikia duomenų inkapsuliavimą ir dekapsuliavimą, klaidų aptikimą ir signalizavimą.
  • LLC:LLC reiškia loginio ryšio valdymą. Jis atsakingas už kadrų priėmimo filtravimą, perkrovos pranešimą ir atkūrimo valdymą.
  • Fizinis sluoksnis: fizinis sluoksnis yra atsakingas už neapdorotų duomenų perdavimą. Jis apibrėžia parametrų, tokių kaip įtampos lygis, laikas, duomenų perdavimo sparta ir jungtis, specifikacijas.

CAN specifikacijos apibrėžia CAN protokolą ir CAN fizinį sluoksnį, kurie yra apibrėžti CAN standarte ISO 11898. ISO 11898 susideda iš trijų dalių:

elektroninės bankininkystės apribojimai
  • ISO 11898-1: Šioje dalyje yra duomenų perdavimo sluoksnio ir fizinio signalo ryšio specifikacijos.
  • ISO 11898-2: Ši dalis patenka į fizinį CAN sluoksnį, skirtą didelės spartos CAN. Didelės spartos CAN suteikia duomenų perdavimo spartą iki 1 Mbps, naudojamą jėgos pavaroje ir transporto priemonės įkrovimo zonoje.
  • ISO 11898-3: ši dalis taip pat patenka į fizinį CAN sluoksnį, skirtą mažos spartos CAN. Tai leidžia duomenų perdavimo spartą iki 125 kbps, o mažos spartos CAN naudojamas ten, kur ryšio greitis nėra lemiamas veiksnys.

CiA DS-102: visa CiA forma yra CAN automatizacijoje, kuri apibrėžia CAN jungties specifikacijas.

Kalbant apie diegimą, CAN valdiklis ir CAN siųstuvas-imtuvas yra įdiegti programinėje įrangoje, naudojant programos, operacinės sistemos ir tinklo valdymo funkcijas.

CAN rėminimas

Supraskime CAN rėmo struktūrą.

CAN protokolas
    SOF:SOF reiškia kadro pradžią, o tai rodo, kad naujas kadras įvestas į tinklą. Jis yra 1 bito.Identifikatorius:Standartinis duomenų formatas, apibrėžtas CAN 2.0 A specifikacijoje, arbitražo sprendimui naudoja 11 bitų pranešimo identifikatorių. Iš esmės šis pranešimo identifikatorius nustato duomenų rėmelio prioritetą.RTR:RTR reiškia Remote Transmission Request, kuris apibrėžia kadro tipą, nesvarbu, ar tai duomenų, ar nuotolinis kadras. Jis yra 1 bito.Valdymo laukas:Jis turi vartotojo apibrėžtas funkcijas.
      EIK:IDE bitas valdymo lauke reiškia identifikatoriaus plėtinį. Dominuojantis IDE bitas apibrėžia 11 bitų standartinį identifikatorių, o recesyvinis IDE bitas apibrėžia 29 bitų išplėstinį identifikatorių.DLC:DLC reiškia Data Length Code, kuris apibrėžia duomenų ilgį duomenų lauke. Jis yra 4 bitų.Duomenų laukas:Duomenų lauke gali būti iki 8 baitų.
    CRC laukas:Duomenų rėmelyje taip pat yra 15 bitų ciklinio perteklinio patikrinimo laukas, kuris naudojamas aptikti pažeidimą, jei jis įvyksta perdavimo metu. Siuntėjas apskaičiuos CRC prieš siųsdamas duomenų rėmelį, o imtuvas taip pat apskaičiuos CRC ir palygins apskaičiuotą CRC su CRC, gautu iš siuntėjo. Jei CRC nesutampa, imtuvas sugeneruos klaidą.ACK laukas:Tai yra gavėjo patvirtinimas. Kituose protokoluose atskiras paketas patvirtinimui siunčiamas gavus visus paketus, tačiau CAN protokolo atveju atskiras paketas patvirtinimui nesiunčiamas.EOF:EOF reiškia rėmo pabaigą. Jame yra 7 iš eilės recesyviniai bitai, žinomi kadro pabaiga.

Dabar pamatysime, kaip duomenys perduodami per CAN tinklą.

CAN protokolas

CAN tinklas susideda iš kelių CAN mazgų. Pirmiau nurodytu atveju mes išnagrinėjome tris CAN mazgus ir pavadinome juos kaip mazgas A, mazgas B ir mazgas C. CAN mazgas susideda iš trijų toliau pateiktų elementų:

  • Šeimininkas
    Pagrindinis kompiuteris yra mikrovaldiklis arba mikroprocesorius, kuriame veikia tam tikra programa tam tikram darbui atlikti. Šeimininkas nusprendžia, ką reiškia gautas pranešimas ir kokį pranešimą jis turi siųsti toliau.
  • CAN valdiklis
    CAN valdiklis užsiima ryšio funkcijomis, aprašytomis CAN protokole. Tai taip pat suaktyvina CAN pranešimų perdavimą arba priėmimą.
  • CAN siųstuvas-imtuvas
    CAN siųstuvas-imtuvas yra atsakingas už duomenų perdavimą arba priėmimą CAN magistrale. Jis konvertuoja duomenų signalą į duomenų, surinktų iš CAN magistralės, srautą, kurį gali suprasti CAN valdiklis.

Aukščiau pateiktoje diagramoje duomenims perduoti arba priimti naudojamas neekranuotas vytos poros kabelis. Jis taip pat žinomas kaip CAN magistralė, o CAN magistralė susideda iš dviejų linijų, ty CAN žemos linijos ir CAN aukštos linijos, kurios taip pat žinomos kaip CANH ir CANL. Perdavimas vyksta dėl toms linijoms taikomos diferencinės įtampos. Dėl savo aplinkos CAN naudoja vytos poros kabelį ir diferencinę įtampą. Pavyzdžiui, automobilyje, variklyje, uždegimo sistemoje ir daugelyje kitų įrenginių duomenys gali prarasti ir sugadinti duomenis dėl triukšmo. Dviejų linijų sukimas taip pat sumažina magnetinį lauką. Magistralė baigiama 120Ω varža kiekviename gale.

CAN charakteristikos

CAN protokolas

Diferencinės įtampos pagalba nustatysime, kaip 0 ir 1 perduodami per CAN magistralę. Aukščiau pateiktas paveikslėlis yra įtampos grafikas, rodantis CAN žemo ir aukšto CAN įtampos lygį. CAN terminologijoje teigiama, kad logika 1 yra recesyvinė, o logika 0 yra dominuojanti. Kai CAN aukšta linija ir CAN žema linija yra įjungta su 2,5 volto, tikroji diferencinė įtampa būtų lygi nuliui. CAN magistralės nulinį voltą CAN siųstuvas-imtuvas nuskaito kaip recesyvinį arba loginį 1. Nulinis CAN magistralės įtampa yra ideali magistralės būsena. Kai CAN aukšta linija patraukiama iki 3,5 volto, o CAN žemoji linija nuleidžiama iki 1,5 volto, tikroji magistralės diferencinė įtampa bus 2 voltai. CAN siųstuvas-imtuvas jį traktuoja kaip dominuojantį bitą arba loginį 0. Jei magistralės būsena pasiekiama iki dominuojančios arba loginės 0, tada bet koks kitas mazgas taptų neįmanoma pereiti į recesyvinę būseną.

tinklai ir tipai

Pagrindiniai dalykai, išmokti iš CAN charakteristikų

  • 1 logika yra recesyvinė būsena. Norint perduoti 1 CAN magistrale, CAN aukštas ir žemas CAN turi būti prijungtas prie 2,5 V.
  • Logika 0 yra dominuojanti būsena. Norint perduoti 0 per CAN magistralę, CAN aukštas turėtų būti naudojamas esant 3,5 V, o CAN žemas - 1,5 V.
  • Ideali autobuso būsena yra recesyvinė.
  • Jei mazgas pasiekia dominuojančią būseną, jokiu kitu mazgu jis negali grįžti į recesyvinę būseną.

CAN magistralės logika

CAN protokolas
CAN protokolas

Iš aukščiau pateikto scenarijaus sužinome, kad dominuojanti būsena perrašo recesyvinę būseną. Kai mazgas vienu metu siunčia dominuojantį ir recesyvinį bitą, magistralė išlieka dominuojanti. Recesyvinis lygis atsiranda tik tada, kai visi mazgai siunčia recesyvinį bitą. Tokia logika žinoma kaip AND logika, o fiziškai ji įgyvendinama kaip atvirojo kolektoriaus grandinė.

CAN komunikacijos principas

Kaip žinome, pranešimas siunčiamas pagal arbitražo lauke nustatytą prioritetą. Standartinio kadro pranešimo identifikatorius yra 11 bitų, o išplėstinio kadro pranešimo identifikatorius yra 29 bitų. Tai leidžia sistemos dizaineriui sukurti pranešimo identifikatorių pačiame dizaine. Kuo mažesnis pranešimo identifikatorius, tuo didesnis pranešimo prioritetas.

Supraskime, kaip arbitražas veikia pagal srautų schemą.

CAN (Controller Area Network) protokolas

Siuntėjas nori išsiųsti pranešimą ir laukia, kol CAN magistralė pradės veikti. Jei CAN magistralė neveikia, siuntėjas siunčia SOF arba dominuojantį magistralės prieigos bitą. Tada jis siunčia pranešimo identifikatoriaus bitą svarbiausiu bitu. Jei mazgas aptinka dominuojantį bitą magistralėje, kol jis perdavė recesyvinį bitą, tai reiškia, kad mazgas prarado arbitražą ir nustoja siųsti kitus bitus. Siuntėjas lauks ir iš naujo išsiųs pranešimą, kai autobusas bus laisvas.

CAN arbitražo pavyzdys

CAN protokolas

Jei atsižvelgsime į tris mazgus, ty 1 mazgą, 2 mazgą ir 3 mazgą, šių mazgų pranešimų identifikatoriai yra atitinkamai 0x7F3, 0x6B3 ir 0x6D9.

kaip sužinoti, ar kažkas jus užblokavo „Android“.
CAN protokolas

Visų trijų mazgų su reikšmingiausiu bitu perdavimas parodytas aukščiau esančioje diagramoje.

vienuolikathbitas: kadangi visi trys mazgų bitai yra recesyviniai, magistralės bitai taip pat liks recesyviniai.

10thbitas: visi mazgai turi 10-ąjį bitą kaip recesyvinį, todėl magistralė taip pat išliks recesyvinė.

9thbitas: 1 mazgas turi recesyvinį bitą, o kiti mazgai turi dominuojantį bitą, todėl magistralė taip pat išliks dominuojanti. Šiuo atveju 1 mazgas prarado arbitražą, todėl nustoja siųsti bitus.

8thbitas: ir 2 mazgas, ir 3 mazgas siunčia recesyvinį bitą, todėl magistralės būsena išliks recesyvi.

7thbitas: 2 mazgas siunčia dominuojantį bitą, o 3 mazgas siunčia recesyvinį bitą, todėl magistralės būsena išliks dominuojanti. Šiuo atveju mazgas 3 prarado arbitražą, todėl nustoja siųsti pranešimą, kol mazgas 2 laimėjo arbitražą, reiškia, kad jis ir toliau išlaikys magistralę, kol bus gautas pranešimas.

tuščia 0