CAN ( Controller Area Network ) Data bus je sériový systém sběrnice, který je široce používán v mnoha průmyslových odvětvích, zejména v automobilovém průmyslu .
Bylo standardizováno podle ISO 11898 .
Aplikuje přístup známý pod názvem multiplexování , který spočívá v připojení ke stejnému kabelu ( sběrnici ) velkého počtu počítačů, které proto budou postupně komunikovat. Tato technika eliminuje potřebu propojovat vyhrazené linky pro každou přenášenou informaci (spojení point-to-point). Jakmile systém (auto, letadlo, loď, telefonní síť atd. ) Dosáhne určité úrovně složitosti, přístup z bodu do bodu bude nemožný kvůli obrovskému množství kabeláže, která má být instalována, a jeho nákladům (v hmotnosti , materiály, práce, údržba).
Zavedení multiplexovaných autobusů (hlavně CAN) v automobilu mělo za cíl snížit množství kabelů ve vozidlech (na jeden automobil tehdy připadaly až 2 km kabelů), ale především umožnilo explozi v počtu distribuovaných počítačů a senzorů v celém vozidle a odpovídající služby (snížení spotřeby, regulace znečištění , aktivní / pasivní bezpečnost , komfort, detekce poruch atd. ), při současném zkrácení délky kabelu.
Datová sběrnice CAN je výsledkem spolupráce mezi univerzitou v Karlsruhe a firmou Bosch .
Poprvé byl použit v automobilovém průmyslu , ale v současné době se používá ve většině průmyslových odvětví, jako je letectví, prostřednictvím standardizovaných protokolů založených na CAN.
To bylo představeno s Intelem v roce 1985 , ale nebylo standardizováno ISO až na počátku 1991.
V roce 1992 se několik společností spojilo, aby vytvořilo CAN in Automation, sdružení, jehož cílem je propagovat CAN.
Byl vydán první vývoj nazvaný FD pro „Flexibel Data rate“.
Druhá evoluce, kterou nese společnost Bosch , nazvaná „XL“, je ve vývoji.
Existují dva standardy pro fyzickou vrstvu:
CAN je poloduplexní obousměrná sériová datová sběrnice v automobilovém průmyslu, ale pro dosažení deterministického chování se používá jednosměrně - simplexně - v letectví .
Každé připojené zařízení, nazývané „uzel“, může komunikovat se všemi ostatními.
U „nízkorychlostní“ datové sběrnice CAN je počet uzlů omezen na 20. U „vysokorychlostní“ datové sběrnice CAN je omezen na 30.
Každý uzel je připojen ke sběrnici pomocí kroucené dvoulinky (stíněné nebo ne) .
Oba konce sběrnice musí být smyčkované zpět odpory 120 Ω ± 10% (tolerance mezi 108 Ω a 132 Ω).
Přístup na datovou sběrnici CAN se řídí technikou CSMA / CR (poslech každé stanice před mluvením, ale nemluvení, řešení kolizí podle priority).
Maximální délka sběrnice je určena použitou rychlostí:
Rychlost ( kbit / s ) |
Délka ( m ) |
---|---|
1000 | 30 |
800 | 50 |
500 | 100 |
250 | 250 |
125 | 500 |
62.5 | 1000 |
20 | 2 500 |
10 | 5 000 |
Použité kódování je typu NRZ (bez návratu na 0) :
Uzly jsou na sběrnici zapojeny principem „kabelové OR“ z elektrického hlediska („drátové AND“ z logického hlediska), což znamená, že v případě současného přenosu ze dvou uzlů bude hodnota 0 přepíše hodnotu 1.
Říkáme tedy:
Logické stavy a elektrické úrovně použité mezi dvěma linkami diferenciálního páru pro nízkorychlostní CAN jsou následující:
Logický stav | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesivní nebo „1“ | 1,75 V | 3,25 V | -1,5 V |
Dominantní nebo „0“ | 4 V | 1 V | 3 V |
Logické stavy a elektrické úrovně použité mezi dvěma linkami diferenciálního páru pro vysokorychlostní ADC jsou následující:
Logický stav | V CANH-GND | V CANL-GND | V CANH-CANL |
---|---|---|---|
Recesivní nebo „1“ | 2,5 V | 2,5 V | 0 až 0,5 V |
Dominantní nebo „0“ | 3,5 V | 1,5 V | od 0,9 do 2 V |
Trvání bitu se nazývá „Nominální doba bitu“.
Každý bit je tvořen několika segmenty taktovanými vnitřními hodinami každého uzlu:
„Časové kvantum“ je jednotka času konstruovaná z periody vnitřního oscilátoru každého uzlu.
Vzhledem k tomu, že frekvence sběrnice je nejvýše 1 MHz a oscilátory několik MHz, má „Time Quantum“ obecně hodnotu několika hodinových period (1 až 32krát).
Trvání každého segmentu je následující:
Segment | Doba trvání v „Time Quantum“ |
---|---|
Synchronizace | 1 |
Šíření | od 1 do 8 |
Vyrovnávací fáze n o 1 | od 1 do 8 |
Vyrovnávací fáze n o 2 | od 2 do 8 |
Trvání bitu se tedy může pohybovat od 5 do 25 „Time Quantum“.
Čím vyšší je frekvence interních hodin uzlu, tím kratší může být doba „Time Quantum“, tím více budou poslední tři segmenty počítat „Time Quantum“ a tím lepší bude přesnost synchronizace.
Synchronizační segmentSynchronizační segment se používá k synchronizaci různých uzlů.
Přechod z 0 na 1 nebo z 1 na 0 provedený pro odesílající uzel musí proběhnout v tomto segmentu. Pokud pro přijímající uzel tento přechod neprobíhá ve stejném segmentu, je to proto, že je desynchronizován. Toto je fázová chyba.
Díky bitu průhlednosti lze tuto kontrolu provést alespoň každých 5 bitů (pro první pole rámce, ve kterém se používá).
Propagační segmentSegment šíření se používá ke kompenzaci fenoménů šíření na sběrnici.
Fázové segmentyFázové segmenty se používají ke kompenzaci fázových chyb zjištěných během přechodů.
Doba trvání těchto segmentů se může lišit v případě resynchronizace.
Místo odběru vzorkůBod vzorkování neboli „Bod vzorkování“ je okamžik, kdy je na sběrnici načtena hodnota bitu. K tomu dochází mezi dvěma fázovými segmenty.
SynchronizaceExistují dva typy synchronizace:
Pinout na datové sběrnici CAN je standardizovaný a používá konektor DE-9 :
Brož | Popis |
---|---|
1 | (Rezervovat) |
2 | MŮŽU |
3 | Hmotnost |
4 | (Rezervovat) |
5 | Stínění (volitelně) |
6 | Hmotnost |
7 | CANH |
8 | (Rezervovat) |
9 | Externí napájecí zdroj (volitelně) |
Pro vrstvu datového spojení existují také dva standardy:
Existuje několik typů rámů:
Mezi dvěma rámci musí vysílače dodržovat pauzu (období mezi snímky) ekvivalentní době trvání tří bitů, během nichž je sběrnice udržována v recesivním stavu.
Datový rámec se používá k odesílání informací do dalších uzlů.
Datový rámec se skládá ze sedmi různých polí:
Pole jsou přenášena v pořadí od SOF do EOF.
V každém poli rámce se bity přenášejí od nejsilnějšího k nejslabšímu.
Arbitrážní poleRozhodčí pole se skládá z 11 identifikačních bitů pro CAN 2.0A a 29 bitů pro CAN 2.0B, následovaných bitem RTR (Remote Transmission Request), který je dominantní. Toto pole slouží jako identifikátor dat přenášených v datovém poli.
11 bitů CAN 2.0A umožňuje 2 kombinace 11 = 2048.
29 bitů CAN 2.0B umožňuje 2 29 = 536 870 912 kombinací.
Příkazové poleŘídicí pole je tvořeno šesti bity.
Nejvýznamnější bit se používá k rozlišení typu rámce:
Další bit se nepoužívá.
Čtyři nejméně významné bity zvané DLC (Data Length Code) představují počet bajtů palubního datového pole (PAYLOAD).
Tento počet bajtů se může lišit od 0 do 8 nebo devíti hodnot uložených se čtyřmi bity pole DLC. Hodnoty DLC větší než 9 by proto nebyly použity (od 9 do 15).
Datové poleDatové pole se může pohybovat od 0 do 8 bajtů.
V případě rámce požadavku je datové pole prázdné.
Pole CRCPole se skládá z patnácti bitů CRC (Cyclic Redundancy Check) a z takzvaného oddělovacího bitu („CRC delimiter“), který je vždy recesivní.
CRC se počítá ze všech dosud přenášených polí (tj. SOF, rozhodčí pole, kontrolní pole a datové pole; bity průhlednosti se neberou v úvahu). Sada tvoří polynom f ( x ).
Algoritmus spočívá především v vynásobení f ( x ) 2 15 .
Potom je polynom f ( x ) rozdělen (modulo 2) polynomem g ( x ) = x 15 + x 14 + x 10 + x 8 + x 7 + x 4 + x 3 + x 0 .
Jakmile jsou provedeny následující divize, zbytek tvoří sekvenci CRC.
Hammingova vzdálenost použitého algoritmu je 6, což znamená, že může být detekována maximálně pět chyb.
Díky tomuto detekčnímu systému je zaznamenaná chybovost velmi nízká (méně než 4,6 × 10 −11 ). Kromě toho je síť schopna odlišit bodové chyby od nadbytečných chyb. Jakékoli vadné zařízení lze tedy odpojit od sítě, aby se omezilo rušení. Síť poté přejde do „degradovaného“ režimu.
Potvrzovací pole ACKPole se skládá z potvrzovacího bitu ACK (ACKnowledge) a takzvaného oddělovacího bitu („ACKnowledge delimiter“), který je vždy recesivní.
Všichni příjemci, kteří úspěšně přijali zprávu, ji musí potvrdit vysláním dominantního bitu po dobu trvání bitu ACK, což umožňuje vysílajícímu uzlu vědět, že alespoň jeden z přijímajících uzlů zprávu přijal.
Pokud přijímací uzel zprávu nepřijal nebo nesprávně přijal, nemůže tento mechanismus použít k signalizaci chyby, protože přijímací stanice potřebuje poslat pouze dominantní bit k maskování všech recesivních bitů. K signalizaci poruchy musí odeslat chybový rámec.
Rámec požadavku se používá k vyžádání dat z jiného uzlu. Je to podobné datovému rámci kromě:
Všimněte si, že skutečnost, že bit RTR je v případě rámce požadavku recesivní, znamená, že pokud je datový rámec odesílán současně se stejným rozhodčím polem, má přednost datový rámec.
Pro zajištění přenosu zpráv se používá metoda „ bit-stuffing “.
Skládá se v případě, že bylo odesláno pět bitů se stejnou polaritou v řadě, přidání sekvence s opačnou polaritou, aby se rozbily příliš velké řetězce stejných bitů. Tato metoda se aplikuje pouze na pole SOF, arbitráž, příkaz, data a CRC (bez oddělovače).
Například „1111 1110“ se změní na „1111 1011 0“.
Co se stane, když se několik uzlů pokusí vyslat současně?
Existuje postup přístupu na sběrnici, kterému se musí každý uzel podrobit:
Díky rozhodčímu poli je tak dosaženo priority.
Čím menší je, tím více obsahuje bity vyššího řádu 0 (dominantní), tím více bude mít prioritu.
Tato prioritizační nebo rozhodčí fáze končí u RTR bitu.
Jakmile je detekována chyba, uzel nečeká na konec inkriminovaného rámce, okamžitě odešle chybový rámec, aby signalizoval problém v přenosu.
Chybový rámec se skládá ze dvou různých polí:
Chybový rámec může být:
Uzly zjistí řadu chyb.
Bitová chybaPokaždé, když uzel na sběrnici trochu vydá, znovu načte sběrnici a musí najít bit, který napsal. Pokud při odeslání recesivního bitu znovu načte dominantní bit, bylo změněno.
Tento mechanismus je totožný s mechanismem umožňujícím stanovení priorit, a proto by neměl být brán v úvahu v rozhodčím poli.
Totéž pro potvrzovací pole, pokud se recesivní bit odeslaný odesílajícím uzlem stane dominantním, je to prostě to, že jeden nebo více přijímacích uzlů potvrdilo správný příjem rámce, nejde tedy o chybu.
Chyba věciPokud se na sběrnici načte šest po sobě jdoucích bitů se stejnou polaritou, nebyl respektován bitový mechanismus průhlednosti nebo byl bit změněn.
Chyba CRCPokud se hodnota CRC vypočítaná přijímajícím uzlem liší od hodnoty CRC kódované v rámci odesílajícím uzlem, došlo k poškození rámce.
Oddělovač CRCPokud bit „oddělovač CRC“ načtený přijímacími uzly není recesivní, bit byl změněn.
Chyba ACKnowledgePokud recesivní bit ACK odeslaný odesílajícím uzlem nebyl přepsán dominantním bitem, pak ho žádný přijímací uzel nepřijal.
Oddělování znalostí ACPokud bit „ACKnowledge delimiter“ přečtený přijímajícími uzly není recesivní, bit byl změněn.
Obnova po chyběKonstrukcí chybový rámec porušuje pravidlo bitového plnění, protože ať se stane cokoli, šest bitů chybového příznaku je identických.
Když uzel odešle chybový rámec, všechny ostatní uzly detekují chybu typu „Chyba chyby“ a také začnou posílat chybový rámec.
V případě aktivních chybových rámců nesmí počet dominantních bitů v řadě překročit dvanáct bitů. Kromě toho uzly, které neposlaly svůj chybový rámec, to nesmí dělat.
Poslední odeslaný uzel poskytuje oddělovač (osm recesivních bitů) a končí kakofonii.
Uzel, který poslal inkriminovaný rámec, poté zruší svoji šanci.
A tak dále, dokud rámec neprojde nebo jeden z jeho čítačů chyb způsobí, že uzel změní chybový režim.
Čítače chybKaždý uzel má dva čítače chyb:
Počítadlo chyb přenosu uzlu v režimu vysílače je:
Počitadlo chyb příjmu uzlu v režimu přijímače je:
V závislosti na čítačích chyb uzel mění chybový režim. Tam jsou tři:
Přetížitelný rám lze použít ve dvou případech:
Rámec přetížení se skládá ze dvou různých polí:
Rámec přetížení je podobný aktivnímu chybovému rámci.
Když uzel vysílá rám přetížení požádat o zpoždění (podmínka n o 1), přepíše tři recesivní bity v období mezi rámem, zbývající uzly detect přebíjení a samy vyzařují rámy přetížení (podmínka n o 2).
Stejně jako u aktivních chybových rámců by počet dominantních bitů v řadě neměl překročit dvanáct bitů. Kromě toho uzly, které nezaslaly svůj rámec přetížení, to nesmí udělat.
Poslední odeslaný uzel poskytuje oddělovač (osm recesivních bitů) a končí kakofonii.
Na standardu CAN bylo definováno několik aplikačních vrstev: