logo

CAN (Controller Area Network) protokols

CAN apzīmē Kontrollera apgabala tīkls protokols. Tas ir protokols, kuru izstrādāja Roberts Bošs aptuveni 1986. gadā. CAN protokols ir standarts, kas izstrādāts, lai ļautu mikrokontrollerim un citām ierīcēm sazināties savā starpā bez resursdatora. Funkcija, kas padara CAN protokolu unikālu starp citiem sakaru protokoliem, ir kopnes apraides veids. Šeit apraide nozīmē, ka informācija tiek pārsūtīta uz visiem mezgliem. Mezgls var būt sensors, mikrokontrolleris vai vārteja, kas ļauj datoram sazināties tīklā, izmantojot USB kabeli vai Ethernet portu. CAN ir uz ziņojumu balstīts protokols, kas nozīmē, ka ziņojumam ir ziņojuma identifikators, un, pamatojoties uz identifikatoru, tiek noteikta prioritāte. CAN tīklā nav nepieciešama mezgla identifikācija, tāpēc to ievietošana vai dzēšana no tīkla kļūst ļoti vienkārša. Tas ir seriāls pusduplekss un asinhrons sakaru protokola veids. CAN ir divu vadu sakaru protokols, jo CAN tīkls ir savienots, izmantojot divu vadu kopni. Vadi ir vītā pāra ar 120Ω raksturlielumu pretestību, kas savienota katrā galā. Sākotnēji tas galvenokārt bija paredzēts saziņai transportlīdzekļos, bet tagad to izmanto daudzos citos kontekstos. Tāpat kā UDS un KWP 2000, arī VAR izmantot iebūvētajai diagnostikai.

Kāpēc VAR?

Nepieciešamība pēc centralizēta standarta sakaru protokola radās elektronisko ierīču skaita pieauguma dēļ. Piemēram, modernā transportlīdzeklī var būt vairāk nekā 7 TCU dažādām apakšsistēmām, piemēram, informācijas panelim, transmisijas vadībai, dzinēja vadības blokam un daudzām citām. Ja visi mezgli ir savienoti viens pret vienu, tad sakaru ātrums būtu ļoti liels, bet vadu sarežģītība un izmaksas būtu ļoti augstas. Iepriekš minētajā piemērā vienam informācijas panelim ir nepieciešami 8 savienotāji, tāpēc, lai novērstu šo problēmu, CAN tika ieviests kā centralizēts risinājums, kam nepieciešami divi vadi, t.i., CAN augsts un CAN zems. CAN protokola izmantošanas risinājums ir diezgan efektīvs, pateicoties tā ziņojumu prioritāšu noteikšanai, un elastīgs, jo mezglu var ievietot vai noņemt, neietekmējot tīklu.

CAN protokola pielietojumi

Sākotnēji CAN protokols tika izstrādāts, lai novērstu sakaru problēmu, kas rodas transportlīdzekļos. Bet vēlāk, pateicoties piedāvātajām funkcijām, tas tiek izmantots dažādās citās jomās. Tālāk ir norādītas CAN protokola lietojumprogrammas:

  • Automobiļi (pasažieru transportlīdzekļi, kravas automašīnas, autobusi)
  • Elektroniskās iekārtas aviācijai un navigācijai
  • Rūpnieciskā automatizācija un mehāniskā vadība
  • Lifts un eskalatori
  • Ēku automatizācija
  • Medicīnas instrumenti un aprīkojums
  • Jūras, medicīnas, rūpniecības, medicīnas

CAN slāņu arhitektūra

Kā mēs zinām, ka OSI modelis sadala sakaru sistēmu 7 dažādos slāņos. Bet CAN slāņu arhitektūra sastāv no diviem slāņiem, t.i.,

Sapratīsim abus slāņus.

jasmīns deiviss bērnībā
  • Datu saites slānis: šis slānis ir atbildīgs par datu pārsūtīšanu no mezgla uz mezglu. Tas ļauj izveidot un pārtraukt savienojumu. Tā ir arī atbildīga par kļūdu noteikšanu un labošanu, kas var rasties fiziskajā slānī. Datu saites slānis ir sadalīts divos apakšslāņos:
      MAC:MAC nozīmē Media Access Control. Tas nosaka, kā tīklā esošās ierīces iegūst piekļuvi datu nesējam. Tas nodrošina datu iekapsulēšanu un dekapsulēšanu, kļūdu noteikšanu un signalizāciju.
  • SIA:LLC apzīmē loģiskās saites kontroli. Tas ir atbildīgs par kadru pieņemšanas filtrēšanu, pārslodzes paziņojumu un atkopšanas pārvaldību.
  • Fiziskais slānis: fiziskais slānis ir atbildīgs par neapstrādātu datu pārraidi. Tas nosaka tādu parametru specifikācijas kā sprieguma līmenis, laiks, datu pārraides ātrums un savienotājs.

CAN specifikācijas nosaka CAN protokolu un CAN fizisko slāni, kas ir definēti CAN standartā ISO 11898. ISO 11898 ir trīs daļas:

  • ISO 11898-1: šī daļa satur datu saites slāņa un fiziskā signāla saites specifikācijas.
  • ISO 11898-2: šī daļa ietilpst CAN fiziskajā slānī liela ātruma CAN. Ātrgaitas CAN nodrošina datu pārraides ātrumu līdz 1 Mb/s, ko izmanto spēka piedziņā un transportlīdzekļa uzlādes zonā.
  • ISO 11898-3: šī daļa ietilpst arī zema ātruma CAN fiziskajā slānī. Tas nodrošina datu pārraides ātrumu līdz 125 kbps, un zemā ātruma CAN tiek izmantots, ja sakaru ātrums nav kritisks faktors.

CiA DS-102: Pilna CiA forma ir CAN in Automation, kas nosaka CAN savienotāja specifikācijas.

Kas attiecas uz ieviešanu, CAN kontrolleris un CAN raiduztvērējs tiek ieviesti programmatūrā ar lietojumprogrammas, operētājsistēmas un tīkla pārvaldības funkciju palīdzību.

CAN ierāmēšana

Izpratīsim CAN rāmja struktūru.

java masīvs
CAN protokols
    SOF:SOF apzīmē kadra sākumu, kas norāda, ka jaunais kadrs ir ievadīts tīklā. Tas ir 1 bits.Identifikators:Standarta datu formāts, kas definēts saskaņā ar CAN 2.0 A specifikāciju, arbitrāžai izmanto 11 bitu ziņojuma identifikatoru. Būtībā šis ziņojuma identifikators nosaka datu rāmja prioritāti.RTR:RTR apzīmē Remote Transmission Request, kas nosaka kadra veidu neatkarīgi no tā, vai tas ir datu rāmis vai attālais kadrs. Tas ir 1 bits.Vadības lauks:Tam ir lietotāja definētas funkcijas.
      IET:IDE bits vadības laukā apzīmē identifikatora paplašinājumu. Dominējošais IDE bits nosaka 11 bitu standarta identifikatoru, savukārt recesīvais IDE bits nosaka 29 bitu paplašināto identifikatoru.DLC:DLC apzīmē Data Length Code, kas nosaka datu garumu datu laukā. Tas ir no 4 bitiem.Datu lauks:Datu laukā var būt līdz 8 baitiem.
    CRC lauks:Datu rāmī ir arī 15 bitu cikliskās dublēšanas pārbaudes lauks, ko izmanto, lai atklātu bojājumu, ja tas notiek pārraides laikā. Sūtītājs aprēķinās CRC pirms datu rāmja nosūtīšanas, un saņēmējs arī aprēķina CRC un pēc tam salīdzina aprēķināto CRC ar CRC, kas saņemts no sūtītāja. Ja CRC nesakrīt, uztvērējs ģenerēs kļūdu.ACK lauks:Tas ir saņēmēja apstiprinājums. Citos protokolos atsevišķa pakete apstiprinājumam tiek nosūtīta pēc visu pakešu saņemšanas, bet CAN protokola gadījumā atsevišķa pakete apstiprināšanai netiek nosūtīta.EOF:EOF apzīmē rāmja beigas. Tas satur 7 secīgus recesīvos bitus, kas zināmi kadra beigas.

Tagad mēs redzēsim, kā dati tiek pārsūtīti caur CAN tīklu.

CAN protokols

CAN tīkls sastāv no vairākiem CAN mezgliem. Iepriekš minētajā gadījumā mēs esam apsvēruši trīs CAN mezglus un nosaukuši tos kā mezglu A, mezglu B un mezglu C. CAN mezgls sastāv no trim tālāk norādītajiem elementiem.

  • Uzņēmēja
    Saimniekdators ir mikrokontrolleris vai mikroprocesors, kurā darbojas kāda lietojumprogramma noteikta darba veikšanai. Saimnieks izlemj, ko nozīmē saņemtais ziņojums un kāds ziņojums tam jānosūta tālāk.
  • CAN kontrolieris
    CAN kontrolieris nodarbojas ar sakaru funkcijām, kas aprakstītas CAN protokolā. Tas arī aktivizē CAN ziņojumu pārraidi vai saņemšanu.
  • CAN raiduztvērējs
    CAN raiduztvērējs ir atbildīgs par datu pārraidi vai saņemšanu CAN kopnē. Tas pārveido datu signālu no CAN kopnes savākto datu plūsmā, ko CAN kontrolleris var saprast.

Iepriekš redzamajā diagrammā datu pārsūtīšanai vai saņemšanai tiek izmantots neekranēts vītā pāra kabelis. To sauc arī par CAN kopni, un CAN kopne sastāv no divām līnijām, t.i., CAN zemās līnijas un CAN augstās līnijas, kuras attiecīgi sauc arī par CANH un CANL. Pārraide notiek šīm līnijām pielietotā diferenciālā sprieguma dēļ. Apkārtējās vides dēļ CAN izmanto vītā pāra kabeli un diferenciālo spriegumu. Piemēram, automašīnā, motors, aizdedzes sistēma un daudzas citas ierīces var izraisīt datu zudumu un datu bojājumus trokšņa dēļ. Abu līniju savīšana arī samazina magnētisko lauku. Kopne ir pabeigta ar 120Ω pretestību katrā galā.

CAN raksturojums

CAN protokols

Ar diferenciālā sprieguma palīdzību mēs noteiksim, kā 0 un 1 tiek pārraidīti caur CAN kopni. Iepriekš redzamais attēls ir sprieguma grafiks, kas parāda CAN zema un CAN augsta sprieguma līmeni. CAN terminoloģijā tiek uzskatīts, ka loģika 1 ir recesīva, bet loģika 0 ir dominējoša. Ja CAN augstā līnija un CAN zemā līnija tiek pielietota ar 2,5 voltiem, faktiskais diferenciālais spriegums būtu nulle voltu. Nulles voltu CAN kopnē CAN raiduztvērējs nolasa kā recesīvo vai loģisko 1. Nulles voltu CAN kopnē ir ideāls kopnes stāvoklis. Ja CAN augsto līniju pavelk līdz 3,5 voltiem un CAN zemo līniju novelk līdz 1,5 voltiem, kopnes faktiskais diferenciālais spriegums būtu 2 volti. CAN raiduztvērējs to apstrādā kā dominējošo bitu vai loģisko 0. Ja kopnes stāvoklis tiek sasniegts līdz dominējošajam vai loģikai 0, tad pāriet uz recesīvo stāvokli ar jebkuru citu mezglu kļūtu neiespējami.

Galvenie punkti, kas iegūti no CAN raksturlielumiem

  • Loģika 1 ir recesīvs stāvoklis. Lai pārraidītu 1 uz CAN kopnes, gan CAN augsts, gan CAN zems ir jāpieslēdz ar 2,5 V.
  • Loģika 0 ir dominējošais stāvoklis. Lai pārraidītu 0 uz CAN kopnes, CAN high ir jāpieliek pie 3,5 V un CAN zemais ir jāpieliek pie 1,5 V.
  • Autobusa ideālais stāvoklis ir recesīvs.
  • Ja mezgls sasniedz dominējošo stāvokli, tas nevar atgriezties recesīvā stāvoklī ar citu mezglu.

CAN kopnes loģika

CAN protokols
CAN protokols

No iepriekš minētā scenārija mēs uzzinām, ka dominējošais stāvoklis pārraksta recesīvo stāvokli. Kad mezgls vienlaikus nosūta dominējošo un recesīvo bitu, kopne paliek dominējoša. Recesīvais līmenis notiek tikai tad, kad visi mezgli nosūta recesīvo bitu. Šāda loģika ir pazīstama kā UN loģika, un fiziski tā tiek realizēta kā atvērta kolektora ķēde.

CAN komunikācijas princips

Kā zināms, ziņojums tiek nosūtīts, pamatojoties uz šķīrējtiesas laukā iestatīto prioritāti. Standarta kadram ziņojuma identifikators ir 11 biti, savukārt paplašinātajam kadram ziņojuma identifikators ir 29 biti. Tas ļauj sistēmas izstrādātājam izveidot ziņojuma identifikatoru pašā dizainā. Jo mazāks ir ziņojuma identifikators, jo augstāka būs ziņojuma prioritāte.

Sapratīsim, kā darbojas šķīrējtiesa, izmantojot plūsmas diagrammu.

CAN (Controller Area Network) protokols

Sūtītājs vēlas nosūtīt ziņojumu un gaida, kamēr CAN kopne pārstās dīkstāvē. Ja CAN kopne ir dīkstāvē, sūtītājs nosūta SOF vai dominējošo bitu kopnes piekļuvei. Pēc tam tas nosūta ziņojuma identifikatora bitu visnozīmīgākajā bitā. Ja mezgls nosaka dominējošo bitu kopnē, kamēr tas ir pārsūtījis recesīvo bitu, tas nozīmē, ka mezgls ir zaudējis šķīrējtiesu un pārtrauc turpmāko bitu pārraidi. Sūtītājs gaidīs un atkārtoti nosūtīs ziņojumu, tiklīdz autobuss būs brīvs.

CAN arbitrāžas piemērs

CAN protokols

Ja ņemam vērā trīs mezglus, t.i., 1., 2. un 3. mezglu, šo mezglu ziņojumu identifikatori ir attiecīgi 0x7F3, 0x6B3 un 0x6D9.

CAN protokols

Visu trīs mezglu pārraide ar nozīmīgāko bitu ir parādīta iepriekš redzamajā diagrammā.

vienpadsmitthbits: tā kā visi trīs mezglu biti ir recesīvi, kopnes bits arī paliks recesīvs.

10thbits: visiem mezgliem ir 10. bits kā recesīvs, tāpēc kopne arī paliks recesīva.

mysql parādīt visus lietotājus

9thbits: 1. mezglam ir recesīvs bits, savukārt citiem mezgliem ir dominējošais bits, tāpēc kopne arī paliks dominējoša. Šajā gadījumā mezgls 1 ir zaudējis arbitrāžu, tāpēc tas pārtrauc bitu sūtīšanu.

8thbits: gan mezgls 2, gan mezgls 3 sūta recesīvo bitu, lai kopnes stāvoklis paliktu recesīvs.

7thbits: mezgls 2 sūta dominējošo bitu, bet mezgls 3 ir nosūtījis recesīvo bitu, lai kopnes stāvoklis paliktu dominējošs. Šajā gadījumā mezgls 3 ir zaudējis šķīrējtiesu, tāpēc tas pārtrauc ziņojuma sūtīšanu, kamēr mezgls 2 ir uzvarējis arbitrāžā, tas nozīmē, ka tas turpinās aizturēt kopni, līdz tiks saņemts ziņojums.