Historie:
1983 |
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.
Příklad struktury distribuovaného řídícího systemu založeného na sběrnici CAN
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. Garantovaný čas pro přenos zprávy s vysokou prioritou na CANu je < 134 us při 1 Mbit/s.
Zde je seznam obvodů se sběrnicí CAN.
Budiče CAN sběrnice -dokumentace
Řadiče CAN sběrnice - dokumentace
Řízení přístupu na sběrnici u CAN bus
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”.
Struktura rámců zpráv protokolu CAN
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í.
Pravděpodobnost neidentifikované zprávy je 10 na 13, příklad: CAN běžící 2000 hodin/rok rychlostí 500 kbit/s s 25% vytížením sběrnice může mít neidentifikovanou chybu jednou za 1000 let.
Protokol CAN definuje 4 typy zpráv:
- zprávy týkající se přenosu dat:
- Data Frame (Datová zpráva)
- Remote Frame (Žádost o data)
- zprávy řídící komunikaci po sběrnici
- Error Frame (Chybová zpráva)
- Overload Frame (Zpráva o přetížení)
Data Frame
U datových zpráv se rozlišují dva typy zpráv podle délky identifikátorů zpráv:
-
Standardní formát zprávy (Standard Frame) podle specifikace CAN 2.0A - 11 bit. identifikátor
-
Rozšířený formát zprávy (Extended Frame) podle specifikace CAN 2.0B - 29 bit. identifikátor
Oba typy zpráv mohou být vysílány na stejné sběrnici, pokud jsou použity v uzlech řadiče podle specifikace 2.0B
Remote Frame
-
Formát žádosti o data je podobný jako formát datové zprávy. Pouze je zde RTR bit nastaven do recesivní úrovně a chybí zde datová oblast.
-
Žádost o data používá jak standardní tak rozšířený formát zprávy (11 nebo 29 bitový identifikátor).
-
Pokud nějaký uzel žádá o zaslání dat, pak nastaví takový identifikátor zprávy, jako má datová zpráva, jejíž zaslání požaduje. Tím je zajištěno, že pokud ve stejném okamžiku jeden uzel žádá o zaslání dat a jiný data se stejným identifikátorem vysílá, přednost v přístupu na sběrnici získá uzel vysílající datovou zprávu, neboť úroveň RTR bitu datové zprávy je dominantní a tudíž má tato zpráva vyšší prioritu.
Error Frame
-
Chybová zpráva slouží k signalizaci chyb na sběrnici CAN.
-
Jakmile libovolný uzel na sběrnici detekuje v přenášené zprávě chybu (chyba bitu, chyba CRC, chyba vkládání bitů, chyba rámce), vygeneruje ihned na sběrnici chybový rámec.
-
Podle toho, v jakém stavu pro hlášení chyb se uzel, který zjistil chybu, právě nachází, generuje na sběrnici buď aktivní (šest dominantních bitů) nebo pasivní (šest recesivních bitů) příznak chyby. Při generování aktivního příznaku chyby je přenášená zpráva poškozena (vzhledem k porušení pravidla na vkládání bitů), a tedy i ostatní uzly začnou vysílat chybové zprávy. Hlášení chyb je pak indikováno superpozicí všech chybových příznaků, které vysílají jednotlivé uzly. Délka tohoto úseku může být minimálně 6 a maximálně 12 bitů.
-
Po vyslání chybového příznaku vysílá každý uzel na sběrnici recesivní bity. Zároveň detekuje stav sběrnice a jakmile najde na sběrnici první recesivní bit, vysílá se dalších sedm recesivních bitů, které plní funkci oddělovače chyb (ukončení chybové zprávy).
Overload Frame
-
Zpráva o přetížení slouží k oddálení vyslání další datové zprávy nebo žádosti o data.
-
Tento způsob zpravidla využívají zařízení, která nejsou schopna kvůli svému vytížení přijímat a zpracovávat další zprávy. Struktura zprávy je podobná zprávě o chybě, ale její vysílání může být zahájeno po konci zprávy (End of Frame), oddělovače chyb nebo předcházejícího oddělovače zpráv přetížení.
-
Zpráva o přetížení je složena z příznaku přetížení (šest dominatních bitů) a případné superpozice všech příznaků přetížení, pokud jsou generovány více uzly současně. Za příznaky přetížení následuje dalších sedm recesivních bitů, které tvoří oddělovač zprávy o přetížení.
Jak již bylo řečeno CAN používá dva různé formáty datových 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.
Zjednodušené schéma zařízení s CAN bus rozhranim