CAN bus
Author
Albert FloresZapojení konektoru pro diagnostiku automobilu podle standardu OBD-II; piny 6 a 14 (zeleně) představují sběrnici CAN 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ů. +more 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. 320x320pixelů.
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á může vysílat na sběrnici. +more 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ě".
Hardware
Konektor Dsub-9 samec, při použití pro sběrnici CAN se používají piny 2 (CAN-Low), 3 (kostra), 7 (CAN-High) a případně 9 (napájení). +more Přenosovým kanálem je sběrnice tvořená krouceným dvouvodičovým vedením, jehož signálové vodiče jsou označeny CAN_H a CAN_L, a zakončovacími rezistory 120 Ω. K této sběrnici se připojují jednotlivé komunikační uzly, jejichž počet může být až 110.
Pro připojení se používají různé typy konektorů, například OBD-II nebo devítipinový D-Sub.
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. +more To je důvod, proč někteří CAN nazývají synchronní sběrnicí. Bohužel, termín synchronní je zde nepřesný, jelikož data jsou 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. +more 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ů. +more 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í | Zastavené vysílání | Zastavené vysílání | Zastavené vysílání | Zastavené vysílání |
CAN Data | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
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). +more 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 bylo ID zprávy voleno jednoduše podle typu dat a odesílacího uzlu; kvůli použití ID i pro prioritu zprávy to však vedlo ke špatným výsledkům při použití v reálném čase. Kvůli tomu nebylo možné v případě nutnosti doručení všech zpráv včas využití sběrnice vyšší než přibližně 30%. +more Avšak, pokud jsou ID přiřazovány v závislosti na deadlinu pro doručení zprávy (tedy čím je menší ID zprávy, tím má zpráva větší prioritu), je typicky možné dosáhnout využití CAN sběrnice kolem 70-80 %, než se začnou zprávy opožďovat.
Rámce
Na sběrnici CAN se v závislosti na konfiguraci mohou vyskytovat dva formáty rámců. Základní rámec má 11bitové ID, zatímco rozšířený rámec má 29bitové ID skládající se ze základního 11bitového a 18bitového rozšíření.
Existují čtyři typy rámců: * Datový rámec - Vlastní přenos dat. * Vzdálený rámec - Obsahuje žádost o informace od určitého ID. +more * Chybový rámec - Odesláno uzlem, který detekoval chybu. * Rámec přetížení - Pro vložení prodlevy před datovým nebo vzdáleným rámcem.
Základní datový rámec
Název položky | Délka (bity) | Význam |
---|---|---|
Začátek rámce (Start of frame) | 1 | Začátek vysílaného rámce. |
ID (zelená) | 11 | (Jedinečné) ID udávající též prioritu. +more |
Vložený bit (Stuff bit) | 1 | Bit opačné polarity kvůli synchronizaci. |
Vzdálená žádost (Remote transmission request, RTR) (modrá) | 1 | V datovém rámci musí být dominantní (0), ve vzdáleném rámci recesivní (1). |
Příznak rozšířeného ID (Identifier extension bit, IDE) | 1 | V základním rámci s 11bitovým ID musí být dominantní (0). |
Rezervní bit (r0) | 1 | Rezerva. Musí být dominantní (0), ale přijímají se obě úrovně. |
Délka dat (Data length code, DLC) (žlutá) | 4 | Počet bajtů dat (0-8 bajtů). Principiálně je možné do 4 bitů zapsat i hodnoty od 9 do 15, nicméně data budou omezena na 8 bajtů. |
Data (červená) | 0-8 bajtů (0-64 u CAN FD) | Odesílaná data (počet bajtů je uveden v DLC). |
CRC | 15 | Cyklický redundantní součet (CRC-15-CAN) |
Oddělovač CRC (CRC delimiter) | 1 | Musí být recesivní (1). |
ACK slot | 1 | Vysílač nastavuje jako recesivní (1), zatímco přijímač může překlopit do dominantní (0). |
Oddělovač ACK (ACK delimiter) | 1 | Musí být recesivní (1). |
Konec rámce (End of frame, EOF) | 7 | Musí být recesivní (1). |
Mezirámcová mezera (Inter-frame spacing, IFS) | 3 | Musí být recesivní (1). |
Vzdálený rámec
Od datového rámce se liší tím, že RTR je recesivní (1), DLC udává pouze požadované množství dat, ale data v rámci nejsou.
Pokud se náhodou na sběrnici potká datový a vzdálený rámec se stejným ID, tak vyhraje datový rámec.
Chybový rámec
Chybový rámec obsahuje dvě pole: * Chybové příznaky (Error flags) - 6 bitů. * Oddělovač chyby (Error delimiter) - 8 recesivních bitů.
Rámec přetížení
Rámec přetížení obsahuje dvě položky: * Příznak přetížení (Overload flag) * Oddělovač přetížení (Overload delimiter)
Reference
Externí odkazy
[url=https://web. archive. +moreorg/web/20070311083416/http://www. datasheetsite. com/category/CAN-BUS+Transceivers]Integrované obvody pro CAN-BUS[/url] *[url=https://rs. canlab. cz/. q=cs/can_bus_timing]Časování CAN sběrnice[/url] * [url=http://www. can-cia. org]Stránky sdružení CAN in Automation (technické informace, seznam dodavatelů, školení)[/url] * [url=http://www. machsystems. cz/novinky/2015/can-fd-nova-verze-can-protokolu]Článek o protokolu CAN FD[/url] (CAN with Flexible Data-Rate) ze září 2015 * [url=http://www. canlab. cz/cs/node/143]Článek Chybující CAN sběrnice[/url].