CAN-FD – evolucija klasičnog CAN-a
Klasični CAN protokol nastao je u vreme kada su elektronski sistemi u vozilu razmenjivali relativno male količine podataka. Za informacije kao što su broj obrtaja motora, temperatura, položaj prekidača ili brzina točka, osam bajtova podataka po frejmu bilo je sasvim dovoljno.
Međutim, broj elektronskih uređaja u vozilima je rastao, količina podataka je postajala sve veća, a pojavili su se i novi zahtevi poput brzog programiranja ECU jedinica, kompleksnijih senzora i razmene većih blokova podataka.
Klasični CAN tada je počeo da pokazuje svoja dva glavna ograničenja:
- najviše 8 bajtova podataka u jednom frejmu
- ograničenu brzinu prenosa podataka
Rešenje nije bilo potpuno odbacivanje CAN-a. Naprotiv – ideja je bila da se zadrže njegove najbolje osobine: arbitraža, pouzdanost, detekcija grešaka i postojeći princip rada magistrale, ali da se poveća količina podataka i ubrza njihov prenos.
Tako je nastao CAN-FD.
Kako je nastao CAN-FD?
CAN-FD nije nastao kao potpuno novi protokol, već kao odgovor na ograničenja klasičnog CAN-a koja su sa razvojem automobilske elektronike postajala sve izraženija.
Kompanija Robert Bosch GmbH, koja je razvila i originalni CAN, započela je razvoj koncepta CAN-FD u saradnji sa proizvođačima automobila i drugim CAN stručnjacima početkom druge decenije 21. veka.
CAN-FD je zvanično predstavljen 2012. godine na 13. međunarodnoj CAN konferenciji – iCC (International CAN Conference) u Hambach Castle-u u Nemačkoj.
Osnovna ideja bila je da se otklone dva velika ograničenja klasičnog CAN-a: maksimalno data polje od 8 bajtova i ograničenje brzine prenosa, a da se pritom sačuvaju arbitraža, pouzdanost i ostale osobine zbog kojih je CAN već bio široko prihvaćen u automobilskoj industriji.
Nakon daljeg razvoja i izmena tokom procesa standardizacije, CAN-FD je uključen u standard ISO 11898-1:2015.
Izvori: Robert Bosch GmbH – CAN FD Protocol; CAN in Automation (CiA) – History of CAN Technology i CAN FD – The Basic Idea.
Zašto se zove Flexible Data-rate?
Naziv možda u početku zvuči komplikovanije nego što zaista jeste.
Kod klasičnog CAN-a praktično ceo frejm koristi istu brzinu komunikacije. Ako je mreža podešena na:
500 kbit/s
arbitraža, podaci, CRC i ostali delovi frejma prenose se tom brzinom.
Kod CAN-FD-a možemo imati, na primer:
Arbitražna faza: 500 kbit/s
Data faza: 2 Mbit/s
Dakle, frejm počinje sporijom, nominalnom brzinom, a određeni deo frejma može biti prenet znatno brže.
Zbog toga se koristi izraz:
Flexible Data-rate – promenljiva odnosno fleksibilna brzina prenosa podataka.
Zašto arbitraža i dalje mora da bude sporija?
Ovde se vraćamo na ono što smo već naučili o klasičnom CAN-u.
Dok traje arbitraža, više ECU jedinica može istovremeno pokušavati da započne slanje. Svaki čvor mora da prati stanje magistrale i proverava da li je njegov dominantni ili recesivni bit zaista ono što se pojavilo na vodovima.
Zbog vremena potrebnog da signal:
- izađe iz CAN kontrolera
- prođe kroz transceiver
- putuje kroz instalaciju
- stigne do udaljenog ECU-a
- vrati se kroz prijemni put
brzina tokom arbitraže zavisi od fizičke veličine mreže, propagacionih kašnjenja, topologije i karakteristika transceivera.
Ali kada je arbitraža završena, samo jedan čvor je osvojio pravo da šalje frejm.
Tada više nema potrebe da drugi čvorovi učestvuju u bit-po-bit arbitraži sa predajnikom. Upravo taj deo frejma CAN-FD koristi za povećavanje brzine.
Šta je ostalo isto kao kod klasičnog CAN-a?
CAN-FD nije potpuno novi sistem koji nema veze sa CAN-om koji smo do sada učili. Veliki deo osnovnog principa ostao je isti.
I dalje postoje:
- CAN identifikator
- dominantno i recesivno stanje
- nedestruktivna arbitraža
- CRC provera
- ACK mehanizam
- detekcija grešaka
- error counters
- error active i error passive stanja
- bus-off mehanizam
I dalje se u tipičnoj high-speed CAN mreži koriste:
- CAN-H
- CAN-L
- diferencijalni prenos
- CAN transceiver
- terminacioni otpornici
Zato je CAN-FD najbolje posmatrati kao evoluciju klasičnog CAN-a, a ne kao potpuno drugačiji protokol.
Najveća promena – do 64 bajta podataka
Klasični CAN frejm može preneti najviše:
8 bajtova
CAN-FD frejm može preneti najviše:
64 bajta
To je osam puta više aplikativnih podataka u jednom frejmu.
Ako želimo da prenesemo 64 bajta podataka klasičnim CAN-om, potrebno nam je najmanje osam frejmova:
Classic CAN
Frame 1 → 8 B
Frame 2 → 8 B
Frame 3 → 8 B
Frame 4 → 8 B
Frame 5 → 8 B
Frame 6 → 8 B
Frame 7 → 8 B
Frame 8 → 8 B
Ukupno: 64 B
CAN-FD istu količinu aplikativnih podataka može preneti jednim frejmom:
CAN-FD
Frame 1 → 64 B
Naravno, svaki frejm ima i dodatna kontrolna polja. Zato smanjenje broja frejmova znači i manje ponavljanja identifikatora, arbitraže, CRC polja, ACK dela i ostalog protokolskog overhead-a.
CAN-FD frejm
Struktura CAN-FD frejma na prvi pogled dosta podseća na klasični CAN frejm.
I dalje možemo prepoznati:
SOF
Identifier
Control
Data
CRC
ACK
EOF
Međutim, u kontrolnom delu pojavljuju se neka nova polja koja su veoma važna za razumevanje CAN-FD-a.
Među njima su:
- FDF – FD Format
- BRS – Bit Rate Switch
- ESI – Error State Indicator
FDF – kako znamo da je frejm CAN-FD?
FDF znači:
FD Format
Ovaj bit omogućava da se razlikuje klasični CAN frejm od CAN-FD frejma.
Kada čvor primi frejm, na osnovu odgovarajućih kontrolnih bitova zna da li treba da ga obrađuje prema pravilima klasičnog CAN-a ili prema pravilima CAN-FD-a.
Ovo će kasnije biti veoma važno kada budemo govorili o kompatibilnosti klasičnih i CAN-FD uređaja.
BRS – Bit Rate Switch
Jedan od najvažnijih bitova CAN-FD frejma je:
BRS – Bit Rate Switch
Njime predajnik označava da li želi da tokom data faze pređe na drugu, najčešće veću brzinu komunikacije.
Ako je BRS aktiviran, komunikacija može izgledati ovako:
Promena brzine vrši se u oblasti BRS bita. Data faza zatim koristi drugi bit timing, a kod CRC delimitera komunikacija se vraća na nominalni bit timing.
Važno je da povećanje brzine nije obavezno. CAN-FD može koristiti veće data polje čak i kada su nominalna i data brzina iste.
ESI – Error State Indicator
CAN-FD uvodi još jedan zanimljiv bit:
ESI – Error State Indicator
ESI omogućava predajniku da u samom frejmu signalizira svoje trenutno stanje u CAN mehanizmu upravljanja greškama.
Pojednostavljeno:
- dominantna vrednost ukazuje da je predajnik u Error Active stanju
- recesivna vrednost ukazuje da je predajnik u Error Passive stanju
Tako prijemnici mogu dobiti dodatnu informaciju o stanju čvora koji šalje poruku.
DLC više nije isto što i broj bajtova
Kod klasičnog CAN-a smo navikli da DLC praktično direktno označava broj bajtova podataka.
Ako imamo:
DLC = 4
to znači četiri bajta.
Kod vrednosti od 0 do 8 isto pravilo važi i kod CAN-FD-a.
Međutim, pošto je DLC polje i dalje široko samo četiri bita, njime možemo predstaviti samo 16 različitih vrednosti:
0 ... 15
A potrebno je predstaviti dužine sve do 64 bajta.
Zato CAN-FD koristi posebno mapiranje.
| DLC | Broj data bajtova |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 12 |
| 10 | 16 |
| 11 | 20 |
| 12 | 24 |
| 13 | 32 |
| 14 | 48 |
| 15 | 64 |
Ovo je jedna od prvih stvari na koju treba obratiti pažnju kada se analiziraju CAN-FD frejmovi.
Zašto nema svake dužine između 8 i 64 bajta?
Možda će se prirodno pojaviti pitanje:
Ako CAN-FD podržava 64 bajta, zašto ne postoji, na primer:
DLC = 37 bajtova?
Razlog je što je postojeće četvorobitno DLC polje zadržano, pa je broj mogućih kodova ograničen.
Zato su za duže poruke definisane određene standardne veličine:
12
16
20
24
32
48
64
Ako aplikacija ima, na primer, 30 bajtova korisnih podataka, može se koristiti CAN-FD frejm sa data poljem od 32 bajta, dok preostala dva bajta mogu biti popunjena prema pravilima aplikativnog protokola.
CRC je takođe morao da bude promenjen
Kod povećanja data polja sa 8 na čak 64 bajta, stari CRC mehanizam više nije bio optimalan za isti nivo pouzdanosti detekcije grešaka.
Zato CAN-FD koristi duže CRC polinome.
- za frejmove sa data poljem do 16 bajtova koristi se 17-bitni CRC
- za duže frejmove koristi se 21-bitni CRC
CAN-FD uvodi i dodatne mehanizme povezane sa kontrolom stuffing-a kako bi se očuvala veoma visoka pouzdanost detekcije grešaka.
CAN-FD nema Remote Frame
Kod klasičnog CAN-a postoji mogućnost slanja takozvanog Remote Frame-a, kojim jedan čvor može zahtevati da drugi pošalje odgovarajući Data Frame.
Kod CAN-FD-a remote frame nije podržan.
CAN-FD je koncipiran tako da se razmena podataka obavlja data frejmovima, dok se mehanizmi zahtev-odgovor, kada su potrebni, realizuju na višim slojevima protokola.
Da li CAN-FD i Classic CAN mogu raditi zajedno?
Ovo je jedna od najčešćih zabuna vezanih za CAN-FD.
CAN-FD kontroler može da šalje i prima obične klasične CAN frejmove.
Dakle:
CAN-FD kontroler
↓
razume Classic CAN
↓
razume CAN-FD
Međutim, obrnuto ne važi.
Stari klasični CAN kontroler ne zna kako da protumači CAN-FD frejm. Kada naiđe na deo frejma koji nije dozvoljen prema pravilima klasičnog CAN-a, može ga protumačiti kao grešku i poslati Error Frame.
Classic CAN kontroler
↓
razume Classic CAN
↓
NE razume CAN-FD frejm
Postoje posebna rešenja kao što su FD-tolerant uređaji i različite mrežne strategije, ali običan aktivan legacy CAN kontroler nije kompatibilan sa prijemom CAN-FD frejma.
CAN-FD kontroler i CAN transceiver nisu isto
Kao i kod klasičnog CAN-a, veoma je važno razlikovati:
- CAN kontroler
- CAN transceiver
CAN kontroler obrađuje protokol:
- frejm
- identifikator
- arbitražu
- DLC
- CRC
- BRS
- ESI
Transceiver pretvara digitalne TX/RX signale kontrolera u električne nivoe na:
CAN-H
CAN-L
Da bismo koristili CAN-FD, mikrokontroler mora imati CAN kontroler koji podržava FD format.
Ako želimo da koristimo veću brzinu u data fazi, moramo voditi računa i o karakteristikama transceivera. CAN-FD transceiveri imaju strože zahteve vezane za kašnjenje i simetriju signala i namenjeni su radu na brzinama većim od tipičnog 1 Mbit/s klasičnog high-speed CAN-a.
Da li ista instalacija može da se koristi za CAN-FD?
U osnovi se i dalje koriste CAN-H i CAN-L vodovi i diferencijalna signalizacija, ali povećanje brzine čini fizičku instalaciju mnogo kritičnijom.
Na nižim brzinama određene nesavršenosti instalacije možda ne predstavljaju veliki problem. Na višoj data brzini mnogo više dolaze do izražaja:
- dužina magistrale
- dužina stubova prema ECU jedinicama
- refleksije signala
- kvalitet terminacije
- propagaciono kašnjenje transceivera
- simetrija dominantnog i recesivnog signala
Zato sama činjenica da dve žice uspešno rade kao klasični CAN ne garantuje automatski da će ista mreža pouzdano raditi na znatno većoj CAN-FD data brzini.
Primer dve brzine na istoj mreži
Pretpostavimo da imamo mrežu sa sledećim podešavanjem:
Nominal bit rate = 500 kbit/s
Data bit rate = 2 Mbit/s
ECU želi da pošalje CAN-FD poruku.
Početak frejma i arbitraža odvijaju se na:
500 kbit/s
Nakon što ECU osvoji magistralu i BRS označi promenu brzine, data faza prelazi na:
2 Mbit/s
Po završetku bržeg dela frejma, protokol se kod kraja data faze vraća na nominalnu brzinu:
500 kbit/s
Zato na osciloskopu CAN-FD frejm može izgledati veoma zanimljivo: u jednom delu frejma bitovi su relativno široki, a zatim odjednom postaju znatno uži.
CAN-FD ne mora uvek biti brži
Još jedna važna nijansa:
CAN-FD možemo koristiti samo zbog većeg data polja, bez povećanja bit rate-a.
Na primer:
Nominal bit rate = 500 kbit/s
Data bit rate = 500 kbit/s
ili jednostavno bez aktiviranja BRS-a.
U tom slučaju i dalje možemo imati CAN-FD frejm sa više od osam bajtova, ali nemamo ubrzavanje data faze.
To lepo pokazuje zašto naziv nije:
Fast CAN
već:
Flexible Data-rate
Koliko je CAN-FD zaista brži?
Na ovo pitanje ne postoji jedan univerzalan odgovor.
Dobitak zavisi od:
- nominalne brzine
- data brzine
- dužine poruke
- količine protokolskog overhead-a
- opterećenja magistrale
- topologije mreže
Najveća prednost CAN-FD-a ne dolazi samo iz bržeg bit rate-a.
Veliku uštedu donosi i činjenica da više aplikativnih podataka može biti spakovano u jedan frejm.
Na primer:
48 bajtova aplikativnih podataka
Classic CAN:
6 × 8 B frejmova
CAN-FD:
1 × 48 B frejm
Umesto šest odvojenih arbitraža i šest kompleta kontrolnih polja, imamo samo jedan frejm.
Uzmimo konkretan primer prenosa 64 bajta korisnih podataka. Pretpostavimo da klasični CAN radi na 500 kbit/s, dok CAN-FD koristi nominalnu brzinu od 500 kbit/s i data brzinu od 2 Mbit/s.
Radi lakšeg poređenja zanemarićemo bit stuffing, jer njegov broj zavisi od stvarnog sadržaja poruke. Račun je zato približan, ali veoma dobro pokazuje razliku između dva protokola.
Classic CAN
1 frejm sa 8 bajtova ≈ 111 bitova
500 kbit/s → 1 bit traje 2 µs
111 × 2 µs ≈ 222 µs po frejmu
Za 64 bajta potrebno je 8 frejmova:
8 × 222 µs ≈ 1776 µs
Ukupno ≈ 1,78 ms
CAN-FD
Kod jednog CAN-FD frejma deo koji obuhvata arbitražu i završetak frejma i dalje se prenosi nominalnom brzinom, dok se najveći deo – DATA i pripadajuća polja – može preneti brzinom od 2 Mbit/s.
Nominalni deo ≈ 30 bitova
30 × 2 µs ≈ 60 µs
Brži deo frejma ≈ 538 bitova
2 Mbit/s → 1 bit traje 0,5 µs
538 × 0,5 µs ≈ 269 µs
Ukupno ≈ 60 + 269 µs
Ukupno ≈ 329 µs
Ukupno ≈ 0,33 ms
U ovom pojednostavljenom primeru prenos istih 64 bajta traje približno:
Classic CAN ≈ 1,78 ms
CAN-FD ≈ 0,33 ms
1,78 / 0,33 ≈ 5,4
Dakle, pri nominalnoj brzini od 500 kbit/s i CAN-FD data brzini od 2 Mbit/s, istih 64 bajta u ovom primeru mogu biti preneta približno pet puta brže.
Dobitak ne nastaje samo zato što je data faza brža. CAN-FD dodatno štedi vreme zato što 64 bajta šalje u jednom frejmu, pa se arbitraža, identifikator, ACK i ostala kontrolna polja ne moraju ponavljati osam puta.
CAN-FD i dijagnostika
Veće data polje i brža data faza posebno su interesantni kod dijagnostike.
Kod običnog očitavanja jednog parametra razlika možda neće biti dramatična. Ali kod prenosa velike količine podataka, kao što su:
- flash programiranje ECU-a
- download novog firmware-a
- veće konfiguracione strukture
- veliki dijagnostički odgovori
CAN-FD može značajno povećati efikasnost komunikacije.
Viši dijagnostički protokoli i dalje mogu koristiti transportne mehanizme za prenos poruka koje su duže od jednog CAN-FD frejma, ali je sada svaki pojedinačni frejm sposoban da prenese mnogo više podataka.
Classic CAN i CAN-FD – poređenje
| Osobina | Classic CAN | CAN-FD |
|---|---|---|
| Maksimalno data polje | 8 B | 64 B |
| 11-bitni ID | Da | Da |
| 29-bitni ID | Da | Da |
| Arbitraža | Da | Da |
| Dominantno / recesivno | Da | Da |
| Brža data faza | Ne | Opcionalno |
| BRS | Ne | Da |
| ESI | Ne | Da |
| Remote Frame | Da | Ne |
| CRC | Klasični CAN CRC | CRC-17 / CRC-21 |
Šta CAN-FD nije promenio?
Možda je jednako važno razumeti i šta CAN-FD nije pokušao da promeni.
CAN-FD i dalje nije protokol koji zna šta znači:
- temperatura motora
- broj obrtaja
- položaj volana
- dijagnostička greška
Kao što smo videli u prethodnom članku o aplikativnom sloju, CAN i CAN-FD definišu način prenosa frejmova.
Značenje podataka i dalje određuju viši slojevi apstrakcije, odnosno protokoli i proizvođačke definicije.
Zato preko CAN-FD-a mogu biti realizovani različiti sistemi i viši protokoli, baš kao što se različiti protokoli mogu koristiti preko klasičnog CAN-a.
CAN-FD nije Automotive Ethernet
CAN-FD je značajno povećao mogućnosti CAN mreže, ali nije pokušaj da se CAN pretvori u Ethernet.
CAN i dalje ima veliku prednost u sistemima gde su važni:
- deterministička arbitraža
- robustnost
- jednostavan fizički sloj
- pouzdan rad velikog broja ECU jedinica
- relativno male kontrolne poruke
Automotive Ethernet je pogodniji tamo gde su potrebne mnogo veće količine podataka, na primer kod kamera, kompleksnih ADAS sistema i drugih broadband aplikacija.
Zato savremeno vozilo ne mora izabrati samo jednu tehnologiju.
U istom vozilu mogu paralelno postojati:
LIN
Classic CAN
CAN-FD
Automotive Ethernet
i svaka od tih mreža može imati svoj konkretan zadatak.
A šta dolazi posle CAN-FD-a?
Razvoj CAN-a nije završen sa CAN-FD-om.
Postoji i novija generacija:
CAN XL
koja dodatno povećava data polje i mogućnosti protokola.
Međutim, CAN XL predstavlja dovoljno veliku temu da zaslužuje zaseban tekst. Za razumevanje današnjih automobilskih mreža mnogo je važnije prvo dobro razumeti odnos klasičnog CAN-a i CAN-FD-a.
Praktično – šta proveriti kada priključujemo CAN alat?
Kod klasične CAN mreže obično smo navikli da u alatu podesimo:
CAN
500 kbit/s
Kod CAN-FD-a to više ne mora biti dovoljno.
Alat može zahtevati najmanje:
Nominal bit rate
Data bit rate
CAN-FD mode
BRS podešavanje
Na primer:
Nominal: 500 kbit/s
Data: 2 Mbit/s
Mode: CAN-FD
BRS: Enabled
Ako unesemo samo nominalnu brzinu i pokušamo da FD frejm tumačimo običnim klasičnim CAN interfejsom, rezultat neće biti ispravna komunikacija.
Zato pri izboru CAN adaptera, analizatora ili mikrokontrolera treba proveriti da li uređaj zaista podržava:
- CAN-FD kontroler
- odvojeni nominalni i data bit timing
- BRS
- CAN-FD frejmove do 64 bajta
Od prvog bita do CAN-FD-a
Ovim člankom stižemo do kraja našeg CAN serijala.
Počeli smo od dve žice:
CAN-H
CAN-L
zatim smo videli kako nastaju:
- dominantno i recesivno stanje
- bitovi
- CAN frejmovi
- identifikatori
- arbitraža
- ACK
- CRC
- error frame-ovi
Zatim smo otišli još jedan nivo iznad i videli da sam CAN ne zna šta podaci u tim frejmovima predstavljaju.
Upoznali smo:
- signale
- factor i offset
- DBC
- ISO-TP
- OBD-II
- UDS
- J1939
- proizvođačke protokole
I sada smo videli kako je osnovni CAN koncept proširen da bi mogao da odgovori zahtevima modernijih elektronskih sistema.
CAN-FD nije odbacio originalnu ideju CAN-a.
Naprotiv.
Zadržao je ono zbog čega je CAN decenijama uspešan, a povećao količinu podataka i omogućio brži prenos onda kada je to potrebno.
Zaključak
Ako bismo CAN-FD morali opisati jednom rečenicom, mogli bismo reći:
Najvažnije razlike koje treba zapamtiti su:
- Classic CAN prenosi najviše 8 bajtova, CAN-FD do 64 bajta
- CAN-FD može koristiti različitu nominalnu i data brzinu
- BRS kontroliše promenu bit rate-a
- ESI prenosi informaciju o error stanju predajnika
- DLC vrednosti 9–15 više ne predstavljaju isti broj bajtova
- CAN-FD koristi snažniju CRC zaštitu
- CAN-FD ne podržava Remote Frame
- CAN-FD čvor razume Classic CAN, ali običan Classic CAN čvor ne razume FD frejm
Time smo zaokružili put od električnog signala na dve žice, preko rada CAN kontrolera, sve do savremenije verzije protokola.
Ali za nekoga ko se bavi dijagnostikom automobila tu se otvara novo pitanje:
Kako računar, dijagnostički program i hardverski interfejs dogovaraju koji će automobilski protokol koristiti i kako će stvarne poruke biti poslate vozilu?
Tu napuštamo samu unutrašnjost CAN protokola i prelazimo na sledeću temu:
SAE J2534 PassThru.