CAN

can bus on board

en: control area network

A CAN buszt eredetileg a Robert Bosch GmbH feljesztette ki Zuffenhausenben, 1983-ban. A protokoll hivatalos bemutatója 1986-ban történt meg, a Society of Automotive Engineers (SAE) kongresszuson, Detroit-ban (Michigan). Az első CAN vezérlő chipet 1987-ben dobta piacra az Intel - Philips duó. A Bosch által továbbfejlesztett változat 1991-ben debütált CAN 2.0 néven. A CAN teljesíti az amerikai OBD-II jármű diagnoszikai standard  előírásait, mely 1996-tól érvényes az USA-ban, és az EOBD standard-ot, mely az európai benzinüzemű járművekre 2001-től, dízelekre pedig 2004-től alkalmazható.

A CAN célja elsősorban az volt, hogy az akkoriban robbanásszerűen fejlődő autoipar rendszer-decentralizációs törekvéseihez megbízható eszközként szolgáljon, ezért az alábbi célkitűzéseknek kellett megfelelnie:

  • nagy üzembiztonság, akár szélsőségek körülmények között is
  • igen rövid ciklusidő, viszonylag magas átviteli sebesség mellett
  • minimális adatmennyiség továbbítása
  • broadcasting támogatás
  • gyors és egyszerű átkonfigurálás lehetősége
  • alacsony ár

can logoAz ambíciózus tervek ellenére a CAN busz rendesen megállta a helyét, jelenleg is folyamatosan fejlesztik, és a járműiparban egyeduralkodóvá nőtte ki magát. Nagyon gyakran kerül olyan gyártósorokon, technológiai rendszerekben is alkalmazásra, ahol a kis mennyiségű adat rövid ciklusidővel való továbbítása az elsődleges szempont, bár napjainkban ezt a pozícióját rendesen szorongatja a Profinet.

 

A CAN busz egy multi-master broadcast serial busz, melynek elsődleges feladata az ECU-k (electronic control units) összekapcsolása.  Egy autóban jelenleg akár 70 ECU is lehet. A legnagyobb ezek közül szinte mindig a motor ECU-ja, de jellemzően az ajtóknak, fékeknek, világításnak, műszereknek, , az airbag-nek, az audio-rendszernek és a riasztónak is saját ECU-ja van.

A CAN-busznak rögtön két protokollja is létezik, a gyors ISO 11898 és a lassú 11519-2. A két protokoll csak a fizikai szinteken tér el egymástól - ergo vezetéken összekötve nem kompatibilisak. A CAN-ekre alkalmazott OSI táblázat ezáltal így néz ki:

CAN OSI

Az OSI-ról bővebben itt olvashat.

réteg

name

név

al-réteg egységek

normák

7

Application
layer

Alkalmazási
réteg

   

 

6

Presentation
Layer

Megjelenítési
réteg

5

Session Layer

Viszonylati réteg

4

Transport
Layer

Forgalmazási
réteg

  Retransmission control nincs standardizálva az ISO 11898 és ISO11519-2 által
     

3

Network Layer

Hálózati
Réteg

2

Data Link
Layer

Adatkapcsolati
réteg

LLC Received message selection
Overload notification
Error recovery
Ezek a szintek azonos módon kerültek definiálásra a ISO11898-ban és az ISO11519-2-ben.
MAC Message framing
Connection control method
Arbitration for data collision
Spread of failure suppression function
Error notification
Error detection
Response method
Communication method
1

 

Physical Layer

 

Fizikai
réteg

 

PLS Bit encoding (NRZ)
Bit timing
Synchronization method
PMA   A két alsó szint eltérő módon került definiálásra a ISO11898-ban és az ISO11519-2-ben.
MDI  
    A fizikai átviteli közeg nincs standardizálva

alréteg megnevezések:

LLC: Logical Link Control
MAC: Medium Access Control
PLS: Physical Signaling Sub-layer
PMA: Physical Medium Attachment
MDI: Medium Dependent Interface

A gyakorlati különbségeket a következő fejezet fejti ki részleteiben.

A CAN Busz a jelátvitelhez két vezetéket alkalmaz, a CAN H és CAN L vezetéket (ellensodrott, esetleg árnyékolt). A zavarvédelem miatt az ezeken futó jelek ellenfázisúak, lásd egy kicsit lejjebb.

A fő különbségek az ISO11898 és ISO11519-2 között

A CAN-Busz fizikai szintje két normával, az ISO11898 és ISO11519-2-vel definiálható. Ezeknek az összehasonlítása látható a lenti táblázatban.

Fizikai szintek ISO 11898 (High speed) ISO 11519-2 (Low speed)
Max.
sebesség
1 Mbps 125 kbps
Jellemző
sebesség
125 kbps - 1 Mbps 10 kbps - 125 kbps
Maximális
távolság
40 m / 1 Mbps 1 km / 40 kbps
Állomások
max. száma
30 20
busz topológia
  recesszív (1) domináns (0) recesszív (1) domináns (0)
min nom max min nom max min nom max min nom max
CAN_High ( V ) 2,00 2,50 3,00 2,75 3,50 4,50 1,60 1,75 1,90 3,85 4,00 5,00
CAN_Low ( V ) 2,00 2,50 3,00 0,50 1,50 2,25 3,10 3,25 3,40 0,00 1,00 1,15
Pot.diff H-L (V) -0,50 0 0,05 1,50 2,00 3,00 -0,30 -1,50 - 0,30 3,00 -
Technikai
jellemzők

UTP vagy FTP

Zárt (LOOP) busz

Z  = 120 Ω

busz fajlagos ellenállás: 70 MΩ/m

busz késleltetési idő: 5 ns/m

véglezárás:  120 Ω (Min. 85 Ω, Max. 130 Ω)

UTP vagy FTP

Nyitott (OPEN) busz

Z  = 120 Ω

busz fajlagos ellenállás: 90 MΩ/m

busz késleltetési idő: 5 ns/m

véglezárás:  2.20 Ω (Min. 2.09 Ω, Max. 2.31 Ω)

CAN_L és GND kapacitás: 30 pF/m

CAN_H és GND kapacitás: 30 pF/m

CAN busz jellemző sebességgörbéje

 

can bus speed ISO 11519-2 / ISO 11898

CAN buszok kötése és jelszintjei

ISO 11898 (High speed) ISO 11519-2 (Low speed)
jelszintek
can bus signal levels / high speed can bus signal levels / low speed
kötésrajz
can bus end terminals / high speed can bus end terminals / low speed

A zavarvédelem miatt a CAN_L, CAN-H vezetékeken futó jelek ellenfázisúak, azonos szingálokra ellenkező feszültségszint irányokba térnek ki.

CAN szabványos üzenetkeretek

Az eddig ismertetett két CAN szabvány ( ISO 11898 és ISO11519-2) szerencsére csak a fizikai szint egy részén térnek el, a táviratok felépítését tartalmazó adatkapcsolati réteg szerencsére mindkét esetben azonos.

  • Normál üzenetkeret
  • Kibővített üzenetkeret
  • Kérés üzenetkeret
  • Hiba üzenetkeret
  • Túlterheltség üzenetkeret

Normál üzenetkeret

en: Base frame format

 

Mező neve Hossza
(bit)
Értéke Leírás
Start-of-frame (SOF) 1 0 Az adatátvitel megkezdését jelző bit. Ennek értéke fix 0.  A buszon alapból 1-es érték van kinn, így ennek a lehúzása jelzi az átvitel kezdetét.
Identifier
(Arbitrációs mező)
11 - Arbitrációs mező. Bővebb leírása itt található.
Remote transmission request (RTR) 1 0 Kérés üzenetkeret jelzése. Ez esetben inaktív.
Identifier extension bit (IDE) 1 0 Nem bővitett telegram.
Reserved bit (r0) 1 0 Tartalék bit.
Data length code (DLC)* 4 0..8 Adatbájtok száma
Data field
(Adatmező)
0-8 byte   Adatmező (hosszát a DLC mező definiálja)
CRC 15   Cyclic Redundancy Check : ellenőrző kód
CRC delimiter 1 1  
ACK slot 1   Nyugtázó bit
ACK delimiter 1 1  
End-of-frame (EOF) 7 1 (7×)  

Normál és kibővített üzenetkeret különbsége

can bus telegram / standard and extended format

Kibővített üzenetkeret

en: Extended frame format

 

Mező neve Hossza
(bit)
Értéke Leírás
Start-of-frame (SOF) 1 0 Az adatátvitel megkezdését jelző bit. Ennek értéke fix 0.  A buszon alapból 1-es érték van kinn, így ennek a lehúzása jelzi az átvitel kezdetét.
Identifier A 11   Arbitrációs mező. Bővebb leírása itt található.
Substitute remote request (SRR) 1 1 Buszvonalon egyszerre lehet normál és kibővített üzenetfajta, SRR bit csak akkor írható át dominánsra, ha az első 11 arbitrációs bit alapján a kérő a legmagasabb prioritású és adni akar: SRR=0, a verseny eldőlt, a többiek csak vevők lehetnek, de ha csak adatkérő, akkor a verseny folytatódik (SRR=1), IDE értéke mutatja, hogy az arbitrációs mező (verseny) folytatódik-e a kibővített formátumú állomások között. A kibővített formátumú állomás akkor nyerhet, ha adatokat akar küldeni (RTR=0), de ha RTR=1, akkor az alaprendszer adatkérése a győztes. Tehát a kettős üzemmód esetén az alapváltozat üzenetei élveznek prioritást a bővített változattal szemben.
Identifier extension bit (IDE) 1 1 Bővített telegramm jelzése.
Identifier B 18   Az arbitációs mező második része.
Remote transmission request (RTR) 1 0  
Reserved bits (r0, r1) 2 0 Tartalék bitek
Data length code (DLC)* 4 0..8 Adatbájtok száma
Data field 0-8 byte   Adatmező (hosszát a DLC mező definiálja)
CRC 15   Cyclic Redundancy Check : ellenőrző kód
CRC delimiter 1 1  
ACK slot 1   Nyugtázó bit
ACK delimiter 1 1  
End-of-frame (EOF) 7 1 (7×)  

 

CAN bus arbitráció

en: arbitration, hu: döntőbíráskodás

 

can bus arbitration

 

Ez az eljárás a CSMA/CR közeghozzáférési eljárás része. Feladata eldönteni, hogy melyik állomás (node) forgalmazhat. Az eljárás akkor élesedik, amikor több állomás nagyjából egyszerre kezd adni. A CSMA/CR egyidejűleg csak egy állomásnak engedi meg a forgalmazást, de ehhez meg kell tudni állapítani, hogy melyiküknek magasabb a prioritása (alacsonyabb az Identifier értéke). Az Identifier mező hossza normál üzenetkeret esetén 11 bit (2048 azonosító kód), kibővített üzenetkeret esén 29 bit (536 870 912 azonosító kód).

A fenti esetben 3 versenyző (node) kezd vetélkedni az adás jogáért. Az SOF (start of frame) után mindhárom egyidejűleg kezdi adni a saját azonosító kódját, és figyelik, hogy mi történik a buszon. Ha bármelyikük 0-t ad, az domináns adásnak számít, azaz elnyomja a többiek recesszív "1"-es értékét. Először a node 2 adja fel a meccset az 5. azonosító bitnél, mert a saját recesszív értékével szemben a buszon egy domináns jelet lát, így innen visszalép, csak hallgatózik a továbbiakban. A node 1 a 2. bitnél dobja be a törölközőt, mert a buszról visszaolvasott információk szerint a node 3 itt is le tudta húzni a buszon a jelszintet, azaz magasabb prioritást bírt produkálni. Tapsoljuk meg a győztes node 3-at, megkapta az adás jogát.

CAN standardok / specifikációk

ISO/DIS 11898-1

Road vehicles -- Controller area network (CAN) -- Part 1: Data link layer and physical signaling

ISO/DIS 11898-2

Road vehicles -- Controller area network (CAN) -- Part 2: High-speed medium access unit

ISO/CD 11898-3

Road vehicles -- Controller area network (CAN) -- Part 3: Low-speed fault tolerant medium dependent interface

ISO/CD 11898-4

Road vehicles -- Controller area network (CAN) -- Part 4: Time triggered communication

 

felhasznált források

Wikipedia

Renesas : Introduction to CAN

A CAN-BUS legfontosabb jellemzői (Dr. Hodossy László)

license

Creative Commons License
Erre a dokumentumra a Creative Commons-Lizenz 3.0 szabályai érvényesek.
A dokumentum továbbfelhasználása engedélyhez kötött. Részleteiben is csak forrásmegjelöléssel
(pl: forrás:wwww.ob121.com) használható.
Engedélykérés, további információ: mail kukac ob121.com