Jste zde

CAN - popis struktury

Controller Area Network (CAN), volně přeložme jako datová sběrnice místní sítě, je protokol

multiplexní sériové komunikace vzniklý v laboratořích společnosti BOSCH, vytvořený pro potřeby použití v

automobilové technice.

CAN se začal rodit v roce 1983 jak již bylo řečeno ve vývojových laboratořích společnosti Bosch a oficiálně byl představen jako protokol v roce 1986. V následném roce se pro aplikace na trhu objevují první kontrolery od společnosti Philips Semiconductors. Nic nebrání aplikaci na níž čekáme až do roku 1992 u prvních modelů automobilů Mercedes-Benz. Na přelomu tisíciletí se systém rozšiřuje do aplikací v evropských automobilech. Pro tyto se stává standardem. V poslední době zaznamenáváme modifikace základní zpracovaných protokolů s průmyslovým zaměřením.

Základní verze CAN 2.0 získala podobu v roce 1991. Vývojem se modifikovala do dvou navzájem kompatibilních systémů 2.0A a 2.0B. V roce 1993 je CAN přenesen do mezinárodního standardu ISO 11898. V naší aglomeraci jsou známy derivace ČSN EN 50325.

Historie nebývá zajímavou částí technického dokumentu, ale těmito krátkými odstavci jsem chtěl zdůraznit původní účel vzniku CAN. Vznik síťového sytému si kladlo za cíl navrhnout protokol pro sériovou multiplexní komunikaci o vysoké rychlosti přenosu dat se současným zajištěním věrnosti dat. Protokol musí zajistit variabilnost síťového systému, tedy schopnost zaujmout jakoukoliv konfiguraci s možností modifikace při funkci sítě. Síť má sloužit především v komunikaci mezi přístroji a zdroji informací v automobilní technice v reálném čase.

Než se probereme jednotlivými detaily protokolu pojďme se podívat na základní prvky, které musí být splněny pro správnou funkci systému.

Jednotlivé komunikační uzly musí mít mezi sebou fyzické spojení. CAN nepředepisuje ani úrovně ani fyzikální média. Je možno postavit síť s rozlišením napětím, proudem, světlem apod. Pokud komunikujeme rychlostmi jak uvádíme v předchozím odstavci, je nutno myslet na základní principy přenosu informací. Je důležité věnovat pozornost impedančnímu přizpůsobení a ochraně na vzářené i vyzářené signály. V podstatě je množství uzlů pro komunikaci neomezené, prakticky je limitován jen možnostmi jednotlivých uzlů a výkonovým zatížením sítě. Z principu protokolu není nutno upravovat nadřazenost a prioritu jednotlivých uzlů. Jak poznáme později jsou tyto informace kódovány v přenášené zprávě. Výhodou je možnost modifikace vystavěné sítě přidáváním nebo ubíráním počtu členů sítě. Využití principu je například v odstavení zdroje chybných zpráv, nebo naopak přidání uzlu pro diagnostiku systému. V principu je možno představit konfiguraci jednoduché sítě v následujícím schématu.


Příklad schématického uspořádání sítě

Představme si formát jednotlivých úrovní CAN protokolu. Nejsrozumitelnější bude časová návaznost signálů na logických úrovních Tx a Rx v následujícím náčrtu.


Příklad úrovní CAN signálů

Přenosová rychlost je jedním z dominantních parametrů sériového přenosu. Již v konfiguraci protokolu si stanovovala cíl dosáhnout komunikační rychlosti 1Mbit/sec. Prakticky užívané jsou rychlosti do 125 Kbit/sec a nad 250Kbit/sec. Rozlišujeme tak nízko a vysokorychlostní CANbus. Do reálného času je možno přeložit v požadavku na zpracování jednoho bitu v trvání řádově mikrosekundy. Konfigurační rychlost v konkrétní síti je v daných mezích volitelná a není ji možno měnit ve stanovené aplikaci. Informaci o této rychlosti přenáší speciální blok. Tady je přenášena informace o přenosové rychlosti a synchronizaci přenosu.

Prvky protokolu CAN

Jedním ze stěžejních prvků CAN je chybové zabezpečení. V protokolu se uvažuje s následnými prvky:

  • Monitorování sběrnice
  • Kontrola cyklickým kódem
  • Kontrola vyrovnávacích bitů
  • Kontrolní zpráva

Všechna kontrolní místa tak sledují komunikace a podle povahy zajišťují přerušení komunikace, opakování zprávy nebo generaci chybového protokolu. V případě opakování chyb z uzlu je možné jeho odstavení od komunikace. Těmito opatřeními je zajištěna pravděpodobnost výskytu chyby v matematickém vyjádření v úrovni 4,7x10 -11 .

Informační bloky protokolu CAN

Je na čase podívat se na konkrétní fungování systému. Komunikace mezi jednotlivými uzly se odehrává formou předávaných zpráv. Datová zpráva nese informace o adresátu zprávy, datovou informaci a chybovou funkci. Pokud je sběrnice volná, může jakýkoliv uzel vyslat zprávu k jinému adresátu. Je možný i přenos do více uzlů. V případě vyslání zpráv z více uzlů současně, je komunikace zajišťována podle priority uložené v adresní části zpráv. Při tom žádná ze zpráv není ztracena, pouze se počká na volnost sběrnice. Zvláštním druhem je dotazová zpráva spočívající v předání požadavku na příslušný uzel, který v odpovědi předá požadované data. Opět v případě současného odeslání zprávy a požadavku na data má při shodné prioritě přednost zpráva datová.

V protokolu CAN 2.0 rozeznáváme čtyři základní bloky dat, se kterými se postupně seznámíme.

  • Datový blok – přenáší datové informace
  • Požadavkový blok – předává požadavek na přenos dat
  • Chybový blok – přenáší se při identifikaci chyby na lince
  • Zpožďovací blok – generuje zvláštní zpoždění vkládané do předchozích bloků

Datový blok

Na struktuře datového bloku si představíme základy CAN protokolu verze 2.0A. Sekvence bitů je naznačena na následujícím obrázku.
 


Datový blok - Kliknutím získáte náhled ve vyšší kvalitě

Blok začíná jedním start bitem v úrovni dominant, pro jednoduchost budeme v dalším používat údaj logické nuly.

Bit č.1
1Bit
Úroveň 0

Adresní pole je 12bitové a rozděleno do dvou části.
Bit č.2-12
11Bitů
Binární vyjádření adresy uzlu. První je přenášen nejméně významový bit – ID0. Je stanoveno, že 7 nejvýznamnějších bitů nesmí být všechny na úrovni 1.
Bit č.13
1Bit
Úroveň 0 rozlišuje, že se jedná o datový přenos, úroveň 1 přísluší požadavku na zprávu


Kontrolní pole má 6 Bitů a je rovněž rozděleno do dvou částí.

Bit č.14-15
2Bity
Rezerva
Bit č.16-19
4Bity
Binární číslo udává počet Bytů datového pole = N. První je opět přenášen nejméně významový bit – DLC0. Příklad: 0010 představuje 2 byty dat.

Datové pole je tvořeno 1 až 8 byty podle údajů kontrolního pole. V rozložení pole uvažujeme s přenosem jednoho bytu.
Bit č.20-27
8Bitů
Data přenášená MSB.

Kontrolní pole je 15bitové a celý blok je zakončen jedním bitem. Přenášená informace v bloku se srovnává s kalkulovanou hodnotou a v případě neshody vyvolává chybovou funkci.
Bit č.28-42
15 Bitů
Údaj kalkulovaný z bitových údajů zahrnující Startovací bit, Adresní, Kontrolní až po konec Datového pole.
Bit č.43
1 Bit
Úroveň 1

Potvrzovací pole dává informaci o správnosti převzatého bloku. Má opět dvě části.
Bit č.44
1 Bit
Úroveň 1 rozlišuje, že se jedná o předávanou zprávu, úroveň 0 potvrzení správnosti přijaté zprávy
Bit č.45
1 Bit
Úroveň 1

Konec bloku je dán sekvencí 7bitů
Bit č.46-52
7 Bitů
Úroveň 1

Požadavkový blok

Struktura požadavkového bloku je velmi podobná datovému bloku. Odlišnost je pouze v absenci dat. Principem bloku je předat požadavek příslušnému uzlu na předání potřebných dat.
 


Požadavkový blok - Kliknutím získáte náhled ve vyšší kvalitě

Blok opět začíná jedním start bitem.

Bit č.1
1Bit
Úroveň 0

Adresní pole je 12bitové a rozděleno do dvou části.
Bit č.2-12
11Bitů
Binární vyjádření adresy uzlu. První je přenášen nejméně významový bit – ID0. Je stanoveno, že 7 nejvýznamnějších bitů nesmí být všechny na úrovni 1.
Bit č.13
1Bit
Úroveň 1 vždy pro tento přenos


Kontrolní pole má 6 Bitů a je rovněž rozděleno do dvou částí.

Bit č.14-15
2Bity
Rezerva
Bit č.16-19
4Bity
Toto číslo je pro tento typ vzhledem k absenci dat bezpředmětné a může nabýt povolených hodnot bez vlivu na přenosové údaje.

Kontrolní pole je 15bitové a celý blok je zakončen jedním bitem. Přenášená informace v bloku se srovnává s kalkulovanou hodnotou a v případě neshody vyvolává chybovou funkci.
Bit č.28-42
15 Bitů
Údaj kalkulovaný z bitových údajů zahrnující Startovací bit, Adresní až po konec Datového pole.
Bit č.43
1 Bit
Úroveň 1

Potvrzovací pole dává informaci o správnosti převzatého bloku. Má opět dvě části.
Bit č.44
1 Bit
Úroveň 1 rozlišuje, že se jedná o předávanou zprávu, úroveň 0 potvrzení správnosti přijaté zprávy
Bit č.45
1 Bit
Úroveň 1

Konec bloku je dán sekvencí 7bitů
Bit č.46-52
7 Bitů
Úroveň 1

Chybový blok

Chybový blok je složen ze tří částí. V první části vyšle uzel analyzující chybu šest po sobě jdoucích logických 0. Tímto se poruší bitová ochrana u aktivních uzlů ( šestý bit není inverzní k pátému), které začnou vysílat chybové bloky. Odezva v druhém bloku má maximálně 6bitů. Ukončovací část má osm bitů s tím, že uzly čekají na přechod z úrovně 0 do 1 a následně se předá 7 bitů.
 


Chybový blok

Chybové návěští má 6 bitů
Bit č.1-6
6 Bitů
Všechny v úrovní 0.

Chybová odezva má maximálně šest bitů
Bit č.6-12
max.6 Bitů
Všechny v úrovni 0.

Konec bloku je dán sekvencí 1+7bitů
Bit č.13-20
8 Bitů
První bit přechod z úrovně 0 do úrovně 1,další úroveň1

Zpožďovací blok

Zpožďovací blok má podobnou strukturu jako blok chybový. Používá se k prodloužení odezvy po ukončení bloku dat, výzvy nebo chyby. Odpovědní blok je jenom jedno bitový, týká se jenom konkrétního bloku. Pro jiné bloky je prvních čest bloků signálem pro chybovou funkci.
 


Zpožďovací blok

Zpožďovací návěští má 6 bitů
Bit č.1-6
6 Bitů
Všechny v úrovní 0.

Chybová odezva má jeden bit
Bit č.7
1 Bit
V úrovni 0.

Konec bloku je dán sekvencí 1+7bitů
Bit č.8-15
8 Bit
První bit přechod z úrovně 0 do úrovně 1,další úroveň1

Závěrem se pokusme naznačit vzájemné vazby mezi přenášenými bloky. Datový a dotazový blok může být spuštěn pouze pokud je sběrnice volná. Tyto bloky vždy končí vložením mezibloku sestávajícího ze tří bitů mezipřenosu s úrovní 1 po níž následuje uvolnění sběrnice bez časového omezení. Pro uzly pasivní chyby se mezi bity mezipřenosu a uvolnění sběrnice vkládá doplňkový přenos 8bitů. Příchozí úroveň 0 je start bitem datového přenosu. Chybový blok začíná ihned po detekování chyby v datovém nebo požadavkovém bloku přerušením přenosu a zahájením přenosu chybového bloku. Blok končí buď vložením mezibloku nebo zpožďovacím blokem. Zpožďovací blok začíná na konci jakéhokoliv bloku (tedy i sebe samého) a končí meziblokem nebo chybovou funkcí.

 

A to je už vše, co se vešlo do popisu struktury CAN. Chtěli jsme poodhalit roušku tajemství nad moderním sériovým komunikačním protokolem. Snad se nám zámysl podařil a základy jsou již jasnější. Nabyté informace by měly být vstupní brankou k poznání chování ucelených systémů využívající tuto technologie.



Ing.Miroslav Závidčák
zavi@atlas.cz

DOWNLOAD & Odkazy

Hodnocení článku: