CAN bus
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
Síťový protokol detekuje 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 kromě datového obsahu tzv. identifikátor, sběrnice CAN nepoužívá žádnou jinou "adresu". 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
Aby zpracování všech přenosových požadavků sítě CAN souhlasilo s dobou reakce omezenou nejnižší přípustnou přenosovou rychlostí, protokol CAN vždy používá bitovou arbitráž, garantující deterministický přístup na sběrnici. Bitová arbitráž v průběhu 13 (standardní formát) nebo 33 (rozšířený formát) bitových period určí stanici, která stanice může vysílat na sběrnici. Na rozdíl od arbitráže (rozhodovací metody) pomocí CSMA/CD (používané například u ethernetu) tyto nedestruktivní metody zajišťují, že při "konfliktu" na sběrnici nedochází ke zpoždění vysílání zprávy s nejvyšší prioritou. Sběrnice a protokol CAN na úrovni hardware rozhoduje která zpráva má "přednost v jízdě".
Přenos dat
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ývají 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 dominantní a recesivní (ustupující) bity, ve kterém dominantní bit je logická 0 (aktivně řízen napětím vysílače) a recesivní 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á recesivní 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 recesivní 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ílaly 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ž 11bitový identifikátor (nebo 29bitový 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 11bitový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
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áhly 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
- Obrázky, zvuky či videa k tématu CAN-BUS na Wikimedia Commons
- Integrované obvody pro CAN-BUS
- Časování CAN sběrnice Archivováno 2. 6. 2020 na Wayback Machine
- Stránky sdružení CAN in Automation (technické informace, seznam dodavatelů, školení)
- Článek o protokolu CAN FD (CAN with Flexible Data-Rate) ze září 2015
- Článek Chybující CAN sběrnice