Vsedli ste se v avto, pritisnili na gumb za zagon in motor je v trenutku oživel, toda kako se je vaš avto odločil, ali naj zažene ali ne?
No, da bi avto zagnal, je več anten in elektronskih krmilnih enot komuniciralo z obeskom za ključe. Protokol Controller Area Network (CAN) zagotavlja pravilno komunikacijo med obeskom za ključe, antenami in ECU v vašem avtomobilu.
Kaj je torej protokol CAN in kako pomaga napravam v sistemih vašega vozila delovati skupaj? No, poglejmo.
Kaj je protokol CAN in zakaj je potreben?
Nekoč avtomobili niso imeli veliko elektronike. Pravzaprav, če ste želeli zagnati svoje vozilo v zgodnjih 20. stoletjih, ste morali izstopiti iz vozila in ročno zagnati motor.
Današnji avtomobili imajo, nasprotno, več elektronskih senzorjev, elektronske naprave pa spremljajo vse od temperature v kabini do vrtljajev ročične gredi.
Kljub temu podatki, prejeti iz teh senzorjev, nimajo vrednosti, dokler niso obdelani. To obdelavo podatkov izvajajo računalniške naprave, znane kot elektronske krmilne enote (ECU).
Za razliko od računalnika z enim CPE ima avto več ECU-jev, od katerih je vsak odgovoren za opravljanje določene naloge. Čeprav lahko ti ECU-ji učinkovito opravijo eno samo nalogo, morajo sodelovati, da zagotovijo funkcije, kot so ABS in ESC delati pravilno.
Zaradi tega morajo biti vsi ECU-ji v avtomobilu povezani. Za vzpostavitev teh povezav bi lahko uporabili topologijo od točke do točke, kjer je vsaka ECU povezana neposredno z vsako drugo ECU. Vendar bi ta arhitektura naredila sistem zapleten. Pravzaprav ima sodobno vozilo več kot 70 ECU-jev in če bi jih povezali na način ena proti ena, bi eksponentno povečali težo napeljave.
Za rešitev tega problema je Bosch skupaj z Mercedes-Benzom in Intelom leta 1986 ustvaril protokol Controller Area Network. Ta protokol je omogočal ECU-jem, da komunicirajo med seboj prek skupnega podatkovnega vodila, znanega kot vodilo CAN.
Kako CAN deluje?
Protokol CAN je komunikacijska metodologija, ki temelji na sporočilih in se za prenos podatkov opira na nabor dvožilnih kablov. Te žice so znane kot CAN high in CAN low.
Da bi omogočili prenos podatkov po teh žicah, se njihove napetostne ravni spremenijo. Te spremembe v nivojih napetosti se nato prevedejo v logične nivoje, ki omogočajo, da ECU v avtomobilu komunicirajo med seboj.
Za prenos logične ena na vodilu CAN je napetost obeh linij nastavljena na 2,5 volta. To stanje je znano tudi kot recesivno stanje, kar pomeni, da je vodilo CAN na voljo za uporabo s katero koli ECU.
Nasprotno, logična 0 se prenaša na vodilo CAN, ko je visoka linija CAN pri napetosti 3,5 voltov in nizka linija CAN pri 1,5 voltih. To stanje vodila je znano tudi kot prevladujoče stanje, ki vsaki ECU v sistemu pove, da je druga ECU oddaja, zato naj počakajo, da se prenos konča, preden začnejo prenašati svoje sporočilo.
Za omogočanje teh sprememb napetosti so avtomobilski ECU-ji povezani z vodilom CAN prek oddajnika-sprejemnika CAN in krmilnika CAN. Transiver je odgovoren za pretvorbo nivojev napetosti na vodilu CAN v nivoje, ki jih ECU lahko razume. Krmilnik pa se uporablja za upravljanje prejetih podatkov in zagotavljanje izpolnjevanja zahtev protokola.
Vsi ti ECU-ji, ki so priključeni na CAN vodilo, lahko prenašajo podatke po prepletenem kablu, vendar je zanka, po CAN vodilu se lahko prenaša samo sporočilo z najvišjo prioriteto. Da bi razumeli, kako ECU prenaša podatke po vodilu CAN, moramo razumeti strukturo sporočil protokola CAN.
Razumevanje strukture sporočila protokola CAN
Kadarkoli želita dve ECU-ji komunicirati, se sporočila s spodnjo strukturo prenesejo na vodilo CAN.
Ta sporočila se prenašajo s spreminjanjem nivojev napetosti na vodilu CAN, zasnova žic CAN s prepletenim parom pa preprečuje poškodbe podatkov med prenosom.
- SOF: Okrajšava za Start Of Frame je bit SOF enojni dominantni bitni podatkovni okvir. Ta bit prenaša vozlišče, ko želi poslati podatke po vodilu CAN.
- Identifikator: Identifikator na protokolu CAN je lahko velik 11 ali 29 bitov. Velikost identifikatorja temelji na različici uporabljenega protokola CAN. Če se uporablja razširjena različica CAN, je velikost identifikatorja 29 bitov, v drugih primerih pa je velikost identifikatorja 11 bitov. Glavni cilj identifikatorja je ugotoviti prioriteto sporočila.
- RTR: Zahtevo za oddaljeni prenos ali RTR uporablja vozlišče, ko je treba podatke zahtevati od drugega vozlišča. V ta namen vozlišče, ki želi podatke, pošlje sporočilo z recesivnim bitom v okvirju RTR želenemu vozlišču.
- DLC: Koda dolžine podatkov določa velikost podatkov, ki se prenašajo v podatkovnem polju.
- Podatkovno polje: To polje vsebuje podatke. Velikost tega tovora je 8 bajtov, vendar novejši protokoli, kot je CAN FD, povečajo velikost tega tovora na 64 bajtov.
- CRC: Okrajšava za Cyclic Redundancy Check, polje CRC je okvir za preverjanje napak. Enako je velikosti 15 bitov in ga izračunata tako sprejemnik kot oddajnik. Oddajno vozlišče ob prenosu ustvari CRC za podatke. Ob prejemu podatkov sprejemnik izračuna CRC za prejete podatke. Če se oba CRC ujemata, je celovitost podatkov potrjena. Če ni, imajo podatki napake.
- Polje za priznanje: Ko so podatki prejeti in so brez napak, sprejemno vozlišče vnese dominantni bit v potrditveni okvir in ga pošlje nazaj oddajniku. To pove oddajniku, da so bili podatki prejeti in da so brez napak.
- Konec okvirja: Ko je prenos podatkov zaključen, se prenese sedem zaporednih recesivnih bitov. To zagotavlja, da vsa vozlišča vedo, da je vozlišče zaključilo prenos podatkov, in lahko prenašajo podatke po vodilu.
Poleg zgornjih bitov ima protokol CAN nekaj bitov, rezerviranih za prihodnjo uporabo.
Poenostavitev CAN s primerom
Zdaj, ko imamo osnovno razumevanje, kako izgleda sporočilo na vodilu CAN, lahko razumemo, kako se podatki prenašajo med različnimi ECU.
Za poenostavitev recimo, da ima naš avto 3 ECU: Node 1, Node 2 in Node 3. Od 3 ECU-jev želita vozlišče 1 in vozlišče 2 komunicirati z vozliščem 3.
Poglejmo, kako protokol CAN pomaga zagotoviti komunikacijo v takem scenariju.
- Zaznavanje stanja vodila: Vsi ECU-ji v avtomobilu so priključeni na vodilo CAN. V našem primeru želita vozlišče 1 in vozlišče 2 poslati podatke drugi ECU; pred tem morata obe ECU preveriti stanje vodila CAN. Če je vodilo v prevladujočem stanju, potem ECU-ji ne morejo prenašati podatkov, saj je vodilo v uporabi. Po drugi strani pa lahko ECU-ji prenašajo podatke, če je vodilo v recesivnem stanju.
- Pošiljanje začetka okvira: Če je diferencialna napetost na vodilu CAN enaka nič, vozlišče 1 in vozlišče 2 spremenita stanje vodila v prevladujoče. Da bi to naredili, se napetost CAN high dvigne na 3,5 volta, napetost CAN low pa se zmanjša na 1,5 volta.
- Odločanje, katero vozlišče lahko dostopa do vodila: Ko je SOF poslan, obe vozlišči tekmujeta za dostop do vodila CAN. Vodilo CAN uporablja protokol Carrier Sense Multiple Access/Collision Detection (CSMA/CD), da se odloči, katero vozlišče ima dostop. Ta protokol primerja identifikatorje, ki jih prenašata obe vozlišči, in omogoča dostop do tistega z višjo prioriteto.
- Pošiljanje podatkov: Ko ima vozlišče dostop do vodila, se podatkovno polje skupaj s CRC pošlje prejemniku.
- Preverjanje in zaključek komunikacije: Ob prejemu podatkov vozlišče 3 preveri CRC prejetih podatkov. Če ni napak, vozlišče 3 pošlje sporočilo CAN oddajnemu vozlišču s prevladujočim bitom na potrditvenem okvirju skupaj z EOF, da prekine komunikacijo.
Različne vrste CAN
Čeprav struktura sporočila, ki jo uporablja protokol CAN, ostaja enaka, sta hitrost prenosa podatkov in velikost podatkovnih bitov spremenjeni za prenos večjih pasovnih širin podatkov.
Zaradi teh razlik ima protokol CAN različne različice, pregled le-teh pa je podan spodaj:
- Hitri CAN: Podatki na žicah CAN se prenašajo serijsko in ta prenos se lahko izvaja z različnimi hitrostmi. Za CAN visoke hitrosti je ta hitrost 1 Mbps. Zaradi te visoke hitrosti prenosa podatkov se lahko visoke hitrosti uporabljajo za ECU, ki nadzorujejo pogonski sklop in varnostne sisteme.
- Nizka hitrost CAN: V primeru nizke hitrosti CAN se hitrost prenosa podatkov zmanjša na 125 kbps. Ker lahko nizka hitrost ponudi nižje hitrosti prenosa podatkov, se uporablja za povezavo ECU-jev, ki upravljajo potnikovo udobje, kot je klimatska naprava ali infotainment sistem.
- Lahko FD: Okrajšava za CAN flexible data rate, CAN FD je najnovejša različica protokola CAN. Poveča velikost podatkovnega okvira na 64 bajtov in omogoča ECU-jem prenos podatkov s hitrostjo od 1 Mbps do 8 Mbps. To hitrost prenosa podatkov lahko upravljajo ECU-ji v realnem času glede na sistemske zahteve, kar omogoča prenos podatkov pri višjih hitrostih.
Kakšna je prihodnost avtomobilske komunikacije?
Protokol CAN omogoča več ECU komunikacijo med seboj. Ta komunikacija omogoča varnostne funkcije, kot so elektronski nadzor stabilnosti in napredni sistemi za pomoč vozniku, kot sta zaznavanje mrtvega kota in prilagodljivi tempomat.
Kljub temu se s pojavom naprednih funkcij, kot je avtonomna vožnja, količina podatkov, ki jih prenaša vodilo CAN, eksponentno povečuje. Da bi omogočili te funkcije, na trg prihajajo novejše različice protokola CAN, kot je CAN FD.