Jste zde

Aplikování sběrnice CAN

CAN je rychle se rozšiřující datová sběrnice získávající širokou podporu i mezi výrobci

jednočipových mikroprocesorů. Článek ukazuje, jak snadné je CAN používat například s Atmelem.

Datová komunikační síť CAN

Koncem 80.let navrhla pro své potřeby německá firma Robert Bosch GmbH datovou komunikační síť pod názvem CAN (Controller Area Network). Původním záměrem byla především úspora kabeláže a zabezpečení přenosu informací mezi snímacími, řídícími a výkonovým prvky v automobilech. Vlastnosti, které nově definovaný systém zabezpečuje, mj. relativně vysoká rychlost přenosu, vysoká spolehlivost a odolnost při extrémních podmínkách (teplota, rušení apod.), nízká cena komunikačních obvodů, jsou pochopitelně výhodné, takže tento typ komunikační sítě nachází uplatnění i v dalších oblastech řídící techniky.

Datová komunikační síť CAN původně používala modifikované rozhraní RS 485, později bylo definováno normou ISO. Tato norma uvádí specifikaci elektrického rozhraní (fyzická vrstva) a specifikaci datového protokolu (linková vrstva).

Přenosovým prostředkem je sběrnice tvořená 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 obr.1. Počet těchto uzlů může být až 110 (dle typu budičů CAN).


obr.1. Principiální schéma sběrnice CAN

Sběrnicí se přenáší dva logické stavy: aktivní (dominant - dominantní) a pasivní (recessive - recesivní), přičemž dominantní stav představuje log.0., recesivní stav log.1. Sběrnice je v dominantním (aktivním) stavu, je-li alespoň jeden její uzel v dominantním stavu. V recesním (pasivním) stavu je sběrnice tehdy, když všechny její uzly jsou v recesním stavu. V recesním stavu je rozdíl napětí mezi vodiči CAN_H a CAN_L nulový, Dominantní stav je reprezentován nenulovým rozdílem napětí. Spínače signálových vodičů jsou konstruovány tak, aby v dominantním stavu na vodiči CAN_H bylo napětí v rozsahu 3,5 až 5V, na vodiči CAN_L napětí v rozsahu 0 až 1,5V. V recesivním stavu je napětí vodičů CAN_H a CAN_L stejné a je zajištěno odporovou sítí na vstupu přijímače. Na obr.2. je na časové ose průběhu signálu znázorněno toleranční pásmo napěťových úrovní logických stavů na sběrnici CAN. Je též patrné, že signálové vodiče CAN_H a CAN_L jsou vzájemně logicky invertované.


obr.2. Toleranční pásmo napěťových úrovní logických stavů na sběrnici CAN

Maximální rychlost přenosu je 1Mbit/s při délce sběrnice do 40m. Při délce 130m klesá na 500kbit/s, pro délku 560m na 125kbit/s a při délce 3,3km je její hodnota jen 20kbit/s.

Komunikace na sběrnici CAN probíhá tak, že každý uzel může za určitých okolností využívat sběrnici pro vysílání svých zpráv. Zpráva vysílaná po sběrnici obsahuje identifikační číslo vysílajícího uzlu. Identifikátor definuje nejen obsah zprávy, ale i prioritu přístupu na sběrnici. Tímto způsobem je možno zaslat zprávu z jednoho uzlu do jiného uzlu nebo několik jiných uzlů současně. Komunikační síť CAN může pracovat jak v režimu multi-master (více nadřízených uzlů), nebo v režimu master-slave (jeden uzel nadřízený a více podřízených uzlů).

Pro udržení synchronizace mezi uzly CAN během přenosu zpráv se používají změny úrovně signálu na sběrnici. Doba trvání jednoho informačního bitu se dělí na čtyři časové segmenty obr.3. Každý segment se dělí na časová kvanta. Během SYNC_SEG se očekává hrana signálu. PROP_SEG slouží ke kompenzaci doby šíření signálu po sběrnici. PHASE_SEG1 a PHASE_SEG2, mezi kterými se nachází vzorkovací bod stavu sběrnice, se využívají ke kompenzaci fázových chyb na sběrnici. Je-li očekávána hrana signálu mimo SYNC_SEG, mění se jejich délka o programovatelný počet časových kvant. Aby se tento způsob kompenzace mohl realizovat bez vlivu na obsah přenášených zpráv, je použita metoda doplnění bitů opačné polarity. Obsahuje-li zpráva 5bitů se stejnou polaritou, zařadí se automaticky do řetězce bitů bit s opačnou polaritou, který se na přijímací straně opět vyřadí.


obr.3. Přenos jednoho informačního bitu v síti CAN

Komunikační protokol CAN definuje formát přenášených zpráv na aplikační úrovni. Zprávy jsou přenášené v tzv. rámcích. V definici CAN jsou určeny čtyři typy rámců:

  • datový rámec (DATA FRAME)
  • žádost o data (REMOTE FRAME)
  • chybový rámec (ERROR FRAME)
  • rámec přeplnění (OVERLOAD FRAME)

Norma pro protokol CAN uvádí dvě specifikace rámců: CAN 2.0A a CAN 2.0B, které se liší v délce identifikátoru. Identifikátor základního formátu CAN 2.0A má délku 11bitů, identifikátor rozšířeného formátu CAN 2.0B má délku 29bitů.

Datový rámec (DATA FRAME)

Datový rámec zabezpečuje přenos informací z vysílajícího uzlu všem ostatním uzlům na sběrnici. Tento rámec se skládá z následujících částí:

  • START OF FRAME – úvodní jednobitové pole s dominantní hodnotou
  • ARBITRATION FIELD – arbitrážní pole sestávající se z identifikátoru a bitu RTR (Remote Transmission Request), který identifikuje, zda-li se jedná o datový rámec (DATA FRAME) nebo žádost o vysílání (REMOTE FRAME). Toto pole určuje prioritu vysílané zprávy. Uzel při vysílání neustále monitoruje stav na sběrnici. Zjistí-li uzel, že vyslal recesní bit a na sběrnici je bit dominantní, okamžitě přestává vysílat. Tímto způsobem je zabezpečeno, aby přistup ke sběrnici dostal ten, jehož zpráva má nejvyšší prioritu. Současně je zabezpečeno, aby při nárůstu zatížení sběrnice nedošlo ke snížení přenosového výkonu sítě.
  • CONTROL FIELD – řídící pole, které obsahuje bit IDE (Identifikátor Expresion) pro rozlišení základního a rozšířeného formátu, rezervní bit a 4 bity DLC (Data Length) určující počet byte datového pole (0 až 20 byte). Poměrně malá délka tohoto pole vychází z původního záměru CAN, tj. především zabezpečení rychlého přenosu zpráv s vysokou prioritou. Delší bloky dat je nutno segmentovat v aplikační úrovni. Všechna data na sběrnici jsou dostupná všem uzlům současně.
  • DATA FIELD – datové pole o velikosti 0 až 8 bajtů
  • CRC FIELD (Cyclic Redundancy Code) – nese 15 kontrolních bitů cyklického redundantního kódu při zahrnutí všech předcházejících polí. Pole je ohraničeno recesivním bitem ERC (END OF CRC)
  • ACKNOWLEDGE FIELD – potvrzující pole, které sestává z bitů ACK SLOT a ACK DELIMITER. Vysílač vysílá bit ACK SLOT jako recesivní. Pokud alespoň jeden uzel přijal zprávu bez chyby, přepíše tento bit na dominantní, čímž oznámí vysílači potvrzení příjmu. ACK DELIMITER je recesivní bit, takže ACK SLOT je ohraničen dvěma recesivními bity
  • END OF FRAME – konec rámce se skládá z nejméně sedmi recesivních bitů, za nimiž následují nejméně 3 bity pro uklidnění všech vysílačů. V této době mohou přijímací uzly informovat vysílací uzel o chybách přenosu.
  • INTERMISSION FIELD + BUS IDLE – mezilehlé pole + uklidnění sběrnice – 3 bity oddělující jednotlivé zprávy

Žádost o rámec (REMOTE FRAME)

Žádost o rámec má obdobný formát jako datový rámec. Neobsahuje však datové pole a bit RTR je recesivní (v datovém rámci je dominantní). Uzel takto žádá některý jiný uzel na síti o vysílání datového rámce se shodným identifikátorem, jaký je v žádosti.

Chybový rámec (ERROR FRAME)

Chybový rámec sestává z polí ERROR FLAG a ERROR DELIMITER. Uzel, který zjistí chybu v řetězci přijímaných bitů, začne vysílat 6 dominantních bitů, čímž poruší strukturu rámce. Ostatní uzly začnou též vysílat 6 dominantních bitů. Celková délka ERROR FLAG tak může být 6 až 12 bitů. Za nimi následuje pole ERROR DELIMITER s 8 recesivními bity.

Rámec přeplnění (OVERLOAD FRAME)

Rámec přeplnění má obdobnou strukturu, jako chybový rámec. Uzel vyšle tento rámec především tehdy, když potřebuje určitý čas na zpracování předchozí zprávy.

Proč použít CAN

Pro rychlý obraz o výhodách sběrnice CAN lze uvést tyto výhody a nevýhody:

Výhody

  • Vysoká rychlost přenosu dat 1Mbit/s při délce sběrnice do 40m
  • Rozlišení zpráv identifikátorem CAN 2.0A 11bitů a CAN 2.0B 29bitů
  • Selekce přijímaných identifikátorů zpráv
  • Prioritní přístup zabezpečující urychlené doručení významných zpráv
  • Diagnostika sběrnice např.: chyba doručení zprávy, chyba CRC, přetečení bufferu
  • Značná úroveň zabezpečení přenosu
  • Vysoká provozní spolehlivost
  • Stále se rozšiřující součástková základna
  • Nízká cena

Nevýhody

  • Omezený počet dat přenášených v rámci jedné zprávy (0 až 8 Byte)
  • Prvotní náročnost nastavení registrů CAN sběrnice

Sběrnice CAN s mikroprocesorem T89C51CC01

Integrování řadiče sběrnice CAN do pouzdra mikroprocesoru snižuje prostorové nároky, cenu aplikace a zvyšuje celkovou spolehlivost výrobku.Velmi vhodnou alternativou pro použití sběrnice CAN se jeví mikroprocesor ATMEL T89C51CC01, který je výhodné použít pro jednoduché až středně složité aplikace.

Hlavní rysy:

  • Jádro 80C51
  • Paměť RAM 256B, XRAM 1kB, EEPROM 2kB, Flash 32kB prog. přes UART nebo CAN
  • 1xUART, 1xCAN, 8xA/D převodník ( 8 a 10bitů), 2xDPTR, Watchdog, PCA časovač (PWM 8bitů)
  • Napájení 3 až 5,5V
  • Provozní teplota –40 až 85°C
  • Pouzdro VQFP44, PLCC44, CA-BGA64
  • Dostupná cena

Příklad zapojení:

Uvedené zapojení využívá mikroprocesor T89C51CC01UA-RLTIM (pouzdro VQFP44) a obvod PCA82C250 (budič sběrnice CAN). Zvolený krystal 16MHz umožňuje širokou volbu přenosových rychlostí pro CAN (až 1Mbit/s) i UART (až 57600kb/s). Zatěžovací impedanci R1 lze volit propojkou J1. Ochranu CAN obvodů proti přepětí zajišťuje Transil D1. Hodnota RC článku C3 a R3 určuje dobu resetu. Propojka J2 a vývody RxD,TxD a GND umožňují programování mikroprocesoru přímo v zapojení za použití Bootloaderu integrováného v mikroprocesoru a aplikace FLIP, kterou je možné zdarma stáhnout ze stránek www.atmel.com. Jednou z možností uvedení procesoru do stavu programování je uzemnění signálu PSEN propojkou J2 nebo automaticky stavem bitu BLJB vždy při resetu.
 

Aplikace Flip

Programování mikroprocesorů přímo v zapojení je velmi výhodné z několika důvodů: není nutné vyjímat mikroprocesor ze zapojení a zejména není zapotřebí drahých programátorů.
 

Aplikace Flip umožňuje mnoho nastavení, které je vhodné předem zapsat do tzv. konfiguračního souboru *.cfg. V případě použití konfiguračního souboru je po jeho otevření otestováno spojení s mikroprocesorem a zobrazeny identifikační údaje. Následovně pouhým stiskem tlačítka RUN dojde k naprogramování mikroprocesoru. Po naprogramování je spuštěn program červeným tlačítkem Start Application nebo Resetem. Nesmí být uzemněn signál PSEN a nesmí být aktivován bit BLJB jinak bude mikroprocesor uveden znovu do stavu programování.

Příklad konfiguračního souboru

selectDevice T89C51CC01        // Typ obvodu
set port COM1                  // Zvolený port
set baud 38400                 // Přenosová rychlost programování (v proc. Autobaude)
initProtocol RS232Standard
connectRS232 Standard
parseHexFile "C:/Dokumenty/UsbCan/Main.hex"    // Cesta k souboru
setupBlankCheckDevice
set gui(blankCheckMin) 0000
set gui(blankCheckMax) 7FFF
setupFullEraseDevice           // Mazání obvodu
setupProgramDevice             // Programování obvodu
setupVerifyDevice              // Verifikace obvodu
setupBljbFuse 1                // Automatický skok do programovacího modu po resetu
setupX2Fuse 1                  // Přepínání dělícího poměru krystalu
setupSecurityLevel 0           // Úroveň zabezpečení 0,1,2

Závěr

Ačkoli byla CAN původně vyvinuta především pro požití v automobilech, získává si své místo i v průmyslové automatizaci. Stále více jednočipových mikroprocesorů je touto sběrnicí vybaveno a začínají se již objevovat i první zařízení vybavená CAN pro široké použití. Příkladem pak může být například i převodník USB-CAN.

Ing.Radek Taraba
radek.taraba@ post.cz

DOWNLOAD & Odkazy

Hodnocení článku: