# CAN - Controller Area Network

Historie:

1 983 | Firma Bosch zahájila projekt vývoje komunikační sítě pro motorová vozidla.
1986 | Vydáno oficiální informace k CAN protokolu.
1987 | Firmy Philips Semiconductors a Intel uvedly první obvody pro CAN.
1991 | Firma Bosch vydala CAN specifikaci 2.0.
1991 | High-level protokol CAN Kingdom od firmy Kvaser.
1992 | Ustanoveno sdružení výrobců a uživatelů CANu CiA (CAN in Automation).
1992 | CiA zveřejňuje specifikaci protokolu CAL (CAN Application Layer).
1992 | Firma Mercedes-Benz uvádí první automobil se sběrnicí CAN.
1994 | První mezinárodní CAN konference (iCC) organizovaná sdružením CiA.
1994 | Firma Allen-Bradley uvádí high-level protokol DeviceNet.
1995 | Vydán dodatek ISO 11898: Extended Frame Format.
1995 | Sdružení CiA publikuje specifikaci protokolu CANopen.
2000 | Vývoj time-triggered (časově-spouštěného) komunikačního protokolu pro CAN (TTCAN).

CAN je sériová datová sběrnice vyvinutá firmou Bosch. Sběrnice sama o sobe je symetrický nebo asymetrický dvouvodičový obvod, který může být odstíněný či neodstíněný. Elektrické parametry fyzického přenosu jsou specifikované normou ISO 11898.

CAN protokol odpovídá datovému přenosu vrstvy v ISO/OSI referenčním modelu. Síťový protokol detekuje a opravuje přenosové chyby vzniklé od okolních elektromagnetických polí. Dovoluje snadné nastavení (konfiguraci) systému a umožňuje centrální diagnostiku.

Vysílané data nemají žádnou adresu, obsah zprávy je dán identifikátorem (ID), který je v celé síti jedinečný. Tento identifikátor definuje obsah přenášené zprávy a zároveň i prioritu zprávy při pokusu o její odeslání na sběrnici. Vyšší prioritu mají zprávy s nižší hodnotou identifikátoru. Příjem zpráv může být mnohonásobný (jedna zpráva může být přijata několika zařízeními). Maximální rychlost přenosu je na sběrnici 1Mbit/sec.

Aby zpracování všech přenosových požadavků CAN sítě souhlasilo s reakční dobou omezenou nejnižší přípustnou přenosovou rychlostí, musí CAN protokol vždy umožnit připojení metodami garantujícími jednoznačný přístup na sběrnici z odlišných stanic.Metody bitové arbitráže použité k identifikaci zpráv jsou schopny jedinečně analyzovat jakékoli problémy mezi stanicemi čekajícími na přenos a přenášejícími v průběhu 13 (standardní formát) nebo 33 (přídavný formát) bitových period. Na rozdíl od standardně používané arbitráže (rozhodovací metody) pomocí CSMA/CD metod tyto nedestruktivní metody při konfliktech zajišťují, že sběrnicová kapacita nebude použita mimo přenos úplné informace.

Dokonce v případech, kdy sběrnice je přetížena, prokazují vazby přístupových priorit na sběrnici jistou prospěšnost systémového nastavení oproti existujícím CSMA/CD nebo "token protokols". Všechny neuskutečněné žádosti o přenos jsou zpracovány podle jejich významu (priority) v systému a to i přes nedostatečný přenos sběrnice.

Přípustná přenosová kapacita je účelně využita k přenosu plné informace, protože “přerušení” v připojení na sběrnici je velmi malé. Zborcení celého přenosového procesu kvůli přetížení, jaké se může přihodit s protokolem CSMA/CD, není v CAN tak pravděpodobné. Rychlost povolení přenosu závisí na sběrnicovém přístupu, který je u nedestruktivního bitového přístupu základem priority zprávy.

Zde je seznam obvodů se sběrnicí CAN.

Budiče CAN sběrnice -dokumentace

Řadiče CAN sběrnice - dokumentace

CAN protokol podporuje dva rámcové formáty zpráv. Podstatný rozdíl je v délce označení (ID identifier). Ve standardním formátu je délka ID 11 bitů a v prodlouženém formátu (extended formát) je délka označení zprávy 29 bitů. Rámec zprávy pro přenos na sběrnici se skládá ze sedmi hlavních polí.

Zpráva v standardním formátu začíná s počátečním bitem “start of frame”, pak následuje rozhodovací pole “arbitration field”, které obsahuje označení ID, a “RTR” bit ("remote transmission request" - žádost o vzdálený přenos), který ukazuje, zda jde o rámec dat nebo požadavek rámce bez bitů ("remote frame" - vzdálený rámec).

Kontrolní pole “Control field” obsahuje IDE bit ("identifer extencion" - prodloužené označení), který označuje buď standardní formát, nebo prodloužený formát, dále pak bit rezervovaný (r 0) pro budoucí prodloužení. Další 4 bity se vypočítají z bytů dat v datovém poli.

Datové pole “data field” je v rozmezí od 0 do 8 bytů a je následováno CRC polem “CRC field”, které je používáno jako bezpečnostní kontrola rámce na detekci bitových chyb.

ACK pole “ACK field” zahrnuje ACK dílčí rámec (1 bit) a ACK dělicí znak (1 vratný bit). Bit v ACK dílčím rámci je posílán jako vratný bit a je přepisován jako dominantní bit od příjemců, kteří data přijali správně ("positive acknowledgement" - pozitivní potvrzení). Správná zpráva je od příjemců potvrzena bez ohledu na výsledek přijímacího testu. Konec zprávy je označen jako konec rámce “end of frame”. Přerušení “Intermission” je minimální číslo z bitové periody oddělující následné zprávy. Jestliže zde nejsou následující přístupy na sběrnici od jakékoliv stanice, zůstává nečinná “bus idle”.

Na rozdíl od ostatních sběrnicových systémů CAN protokol nepoužívá potvrzování zpráv, ale namísto toho signalizuje jakoukoliv vyskytlou chybu. Pro detekci chyby CAN protokolem se používají tři mechanismy umístěné v oblasti zprávy:

kontrola cyklické nadbytečnosti (Cyclic Redindancy Check CRC)

CRC chrání informace v rámci a přidává nadbytečné kontrolní bity na konec přenosu. Na konci příjmu jsou tyto bity přepočítány a testovány vůči přeneseným bitům. Jestliže nejsou v pořádku, pak je hlášena CRC chyba.

kontrola rámce

Tento mechanismus prověřuje strukturu přeneseného rámce dle kontroly bitového pole vůči pevnému formátu a velikosti rámce. Chyba detekovaná kontrolou rámce je označena jako “format errors”.

## ACK chyby

Každé správné přijetí rámce od všech příjemců je potvrzeno v ACK poli. Jestliže není potvrzeno, je přijata vysílačem zprávy ACK chyba (ACK error). To může znamenat, že

nastala přenosová chyba, kterou objevil pouze příjemce, nebo že ACK pole je porušené či není žádný příjemce.

CAN protokol také užívá dva mechanismy pro detekci chyb na bitové úrovni:

pozorování (Monitoring)

Schopnost vysílače detekovat chyby je základem pro pozorování sběrnicových signálů: každý uzel, který vysílá, také pozoruje sběrnicovou část, a tak detekuje rozdíly mezi bity poslanými a bity přijatými. Toto dovoluje spolehlivou detekci globálních a lokálních chyb na straně vysílače.

vkládání bitů (Bit stuffing)

Kódování samostatných bitů je testováno na bitové úrovni. Bitová reprezentace CAN je NRZ kód (non-return-to-zero), který garantuje maximální efektivitu v bitovém kódování. Synchronizaci tvoří vkládání pěti po sobě jdoucích stejných bitů. Odesílatel přidá do bitového toku vložený bit s doplňkovou hodnotou, která je odstraněna příjemcem. Kódová kontrola je omezena kontrolou správnosti vloženého pravidla.

Jestliže je objevena jedna nebo více chyb na nejméně jedné nebo více stanicích, používajících zařízení, přenos je zrušen a je odeslána indikace chyby “error flag”. To zabrání jiné stanici přijmout zprávu, a tak zajistí konzistenci dat v celé síti.

Další chybný přenos zprávy je zrušen a odesílatel se automaticky znovu pokusí o přenos (automatické opakování žádosti). Bude muset znovu soutěžit o připojení na sběrnici. Nový přenos bude zpravidla zahájen během 23bitové periody po odhalení chyby; ve speciálních případech je doba regenerace systému 31bitová perioda.

Avšak tato účinná a efektivní metoda může v některých případech chybné stanice vést k zrušení všech zpráv (včetně správných). Jestliže žádná jiná stanice nepřevezme sledování vzniklé chyby, dojde k zablokování systému sběrnice. CAN protokol tedy poskytuje mechanismus pro rozlišení ojedinělé chyby od trvalých chyb a lokalizuje stanici, která selhala. Toto je prováděno statistickým odhadem chybné stanice s cílem poznat stanici s vlastními chybami a možný pracovní režim, v kterém ostatní stanice záporně neovlivňují CAN síť. Pokud stanice sebe odpojí, zabrání tak chybnému rozpoznání zprávy a také chybnému přerušení.

Jak již bylo řečeno CAN používá dva různé formáty zpráv. Standardní formát zprávy obsahuje 11bitový identifikátor, rozšířený formát zprávy obsahuje 29bitový identifikátor. Zpráva se standardním (11bitovým) identifikátorem má při jejím odeslání přednost před rozšířenou