{{ wiki:comm:cankep.png|can bus on board}} ====== CAN ====== {{tag>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 {{ wiki:comm:can_logo.png|can logo}} 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ővebben[[bus_basic#osi_iso|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 |[[plc_basic#llc|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.| |[[plc_basic#mac|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 =====   {{wiki:comm:can_speed.png?515x268|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^| |{{wiki:comm:can_gyors_jel.png?332x248|can bus signal levels / high speed}}|{{wiki:comm:can_lassu_jel.png?332x248|can bus signal levels / low speed}}| ^kötésrajz^| |{{wiki:comm:can_gyors_kot.png?353x131|can bus end terminals / high speed}}|{{wiki:comm:can_lassu_kot.png?345x140|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_reteg|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 ==== {{wiki:comm:can_teleg1.png?625x381|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[[#arbitration|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 {{wiki:comm:can_arbitration.png?436x304|can bus arbitration}}  {{ wiki:comm:biro.png}} Ez az eljárás a [[bus_basic#csma_cr|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