CAN
busz can 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
Az 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ővebbenitt 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 buszok kötése és jelszintjei
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ő. |
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
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ásaitt 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
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