CAN bus

Z Wikipedie, otevřené encyklopedie
(Přesměrováno z CAN-BUS)
Skočit na: Navigace, Hledání

CAN (Controller Area Network) je sběrnice, využívaná nejčastěji pro vnitřní komunikační síť senzorů a funkčních jednotek v automobilu, z čehož plyne také použití pro automobilovou diagnostiku. Z této aplikační oblasti se CAN rychle rozšířil také do sféry průmyslové automatizace. Jedná se o sériovou datovou sběrnici, vyvinutou firmou Robert Bosch GmbH. Elektrické parametry fyzického přenosu jsou specifikované normou ISO 11898. Maximální teoretická rychlost přenosu na sběrnici je 1 Mb/s. CAN patří k průmyslovým komunikačním sítím označovaným jako provozní sběrnice, fieldbus.

Síťový protokol[editovat | editovat zdroj]

Síťový protokol detekuje a opravuje přenosové chyby vzniklé od okolních elektromagnetických polí. Data se odesílají v rámcích, každý rámec může obsahovat až 8 datových bajtů. Každý rámec obsahuje identifikátor, u sběrnice CAN neexistuje žádná adresa. Obsah zprávy je dán pouze identifikátorem. 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. Jedna zpráva může být přijata několika zařízeními.

Metody[editovat | editovat zdroj]

Aby zpracování všech přenosových požadavků sítě CAN souhlasilo s dobou reakce omezenou nejnižší přípustnou přenosovou rychlostí, musí protokol CAN 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 schopné 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 (rozšířený formát) bitových period. Na rozdíl od standardně používané arbitráže (rozhodovací metody) pomocí metod CSMA/CD tyto nedestruktivní metody při konfliktech zajišťují, že sběrnicová kapacita nebude použita mimo přenos úplné informace.

Přenos dat[editovat | editovat zdroj]

Datové přenosy v rámci CAN používají bezztrátovou bitovou arbitrační metodu pro stavové rozhodování. Tato arbitrační metoda požaduje, aby všechny uzly v této CAN síti byly synchronizovány a připraveny ke vzorkování ve stejnou dobu. To je důvod, proč někteří CAN nazývá synchronní sběrnicí. Bohužel, termín synchronní je zde nepřesný, jelikož data jdou odesílána bez hodinového signálu, jak je tomu u obvyklého asynchronního přenosu.

Specifikace sběrnice CAN užívají termíny jako dominantní a ustupující bity, ve kterém dominantní bit je logická 0 (aktivně řízen napětím vysílače) a ustupující je logická 1 (pasivně vybitá do zdroje přes rezistor). Stav nečinnosti je reprezentován ústupovou úrovní, tím pádem logickou 1. Pokud jeden uzel vysílá dominantní bit a další uzel vysílá ustupující bit, naskytla se zde kolize a větší prioritu má dominantní bit. To ve výsledku znamená, že zde není žádné zpoždění pro zprávy vysoké priority a uzel, který vysílal ustupující bit, se automaticky pokusí o opětovné přeposlání po šesti bitech hodinového signálu, po ukončení přenosu dominantní zprávy. Tímto se CAN stává velmi vhodným komunikačním systémem pro komunikaci v reálném čase.

Přesná napěťová úroveň pro logickou 1 a logickou 0 závisí na použité fyzické vrstvě, ale základní principy CAN požadují, aby každý uzel naslouchal data v CAN síti, včetně dat, která jsou vysílána vysílacím uzlem. Pokud je logická 1 vysílána všemi vysílacími uzly ve stejnou dobu, tak logická 1 je viděna všemi uzly, včetně vysílacích i přijímacích uzlů. Stejně tak, když je všemi vysílacími uzly ve stejnou dobu vysílána logická 0, tak všechny uzly vidí logickou 0. Vysílá-li se jedním, nebo více uzly logickou 0 a zároveň je vysílána jinými uzly logickou 1, tak je logická 0 viděna všemi uzly, včetně vysílacích uzlů, které vysílali logickou 1. Pokud uzel vysílá logickou 1, ale vidí logickou 0, uvědomí si kolizi a přestane vysílat. Užíváním tohoto principu přestane jakýkoliv uzel vysílající logickou 1 vysílat, nebo přijde o arbitraci. Uzel, který o arbitraci přišel, zařadí svoji zprávu do fronty pro opětovné odeslání v pozdější době a CAN rámec proudu dat pokračuje bez problému, dokud nevysílá pouze jeden uzel. To znamená že uzel, který jako první vysílá logickou 1 přijde o arbitraci. Poněvadž 11 bitový identifikátor (nebo 29 bitový pro CAN 2.0B) je vysílán všemi uzly na začátku rámce CAN, uzel s nejnižším identifikátorem vysílá více nul na začátku rámce a tak tento uzel získá nejvyšší prioritu nebo arbitraci.

Například, uvažujme o síti CAN s 11 bitovým identifikátorem (ID) se dvěma uzly s ID 15 a 16 (binárně 00000001111 a 00000010000). Pokud tyto dva uzly vysílají ve stejnou dobu, oba nejdříve vyšlou startovací bit a poté prvních 6 čísel z jejich ID, bez jakéhokoliv arbitračního rozhodnutí.

Startovní
Bit
ID Bitů Zbytek datového rámce
10 9 8 7 6 5 4 3 2 1 0
Uzel 15 0 0 0 0 0 0 0 0 1 1 1 1
Uzel 16 0 0 0 0 0 0 0 1 Zastavené vysílání
CAN Data 0 0 0 0 0 0 0 0 1 1 1 1

Poté co je odeslán osmý bit, uzel s ID 16 vyšle logickou 1 (ústup) a uzel s ID 15 vyšle logickou 0 (dominance). Pokud toto nastane, uzel s ID 16 ví, že přestože vysílal logickou 1 vidí logickou 0 a že se vyskytla kolize a přijde proto o arbitraci. Přestane proto vysílat a uzel s ID 15 může pokračovat ve vysílání bez ztráty dat. Uzel s nejnižším ID vyhraje arbitraci vždy a proto má největší prioritu.

Přenosové rychlosti až do 1 Mbit/sekundu jsou možné pro vzdálenosti do 40 m. Snižováním přenosových rychlostí můžeme docílit vyšších vzdáleností (například 500 m máme rychlost 125 kbit/sekundu). Vylepšený standard CAN FD umožňuje zvýšení přenosových rychlostí po arbitraci a může zvýšit rychlost v dané datové sekci až na osminásobek arbitrační přenosová rychlost.

Přidělování ID[editovat | editovat zdroj]

ID zpráv musí být na každé sběrnici CAN unikátní, jinak by 2 uzly mohly pokračovat v odesílání až za konec arbitračního pole (ID) a způsobit chybu.

Na začátku roku 1990 byla volba ID pro zprávy vytvořena jednoduše na bázi identifikace typu dat a odesílacího uzlu; avšak, když se ID začalo používat i pro výběr priority zprávy, vedlo to ke špatným výsledkům v oblasti aplikací operujících v reálném čase. V těchto případech při nízkém, přibližně 30% zužitkováním, bylo nutno zařídit, aby všechny zprávy dosáhli svého cíle ve stanovený čas (deadline). Avšak, pokud jsou namísto toho ID přiřazovány podle krajního stanoveného času pro doručení zprávy, tím je menší ID zprávy a tím má větší zprávu větší prioritu. Při tomto řešení má sběrnice CAN využití kolem 70–80 %, než se začnou nestíhat dodržovat deadline.

Externí odkazy[editovat | editovat zdroj]