Tóth Csaba, Scherer Balázs: Autóipari beágyazott rendszerek CAN Controller Area Network Előadásvázlat Kézirat Csak belső használatra! 2012.02.05. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 1
Ipari buszok (field bus-ok) A LAN-ok egy speciális fajtája. Csak a legszükségesebb OSI rétegek: 1. PHY, fizikai réteg 2. MAC, adatkapcsolati réteg közeg-hozzáférési alrétege 3-6. Higher layers (hiányzik vagy összevonják) 7. Application layer Általában már nem tartozik az adott ipari busz szabványhoz. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 2
A CAN field bus Kitalálója: Robert Bosch GmbH 1983-ban kezdte el a fejlesztést 1986-ban publikálta CAN = Controller Area Network Nemzetközi szabvány: ISO 11898 (1993) Alkalmazása: Kb. egyharmada autókban Kb. kétharmada készülékekben (röntgen, CT, automaták, ipari berendezések stb.) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 3
A CAN története évszámokban 1983 1985 1986 1987 1988 1991 1993 2001 A Bosch elkezdi a fejlesztést. Az Intel beszáll a projektbe. Publikálják a CAN specifikációt. Megjelenik az első működő CAN chip. Kaphatók a CAN chipek. Extended CAN; Mercedes S-modell ISO 11898, nemzetközi szabvány TTCAN (Time-Triggered CAN) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 4
A CAN főbb jellemzői Busz topológia Szórásos típusú hálózat: a hálózatra adott keretet mindenki veszi. Tetszőleges topográfia Általában busz, pont-pont vagy csillag Többszörös hozzáférés Nem destruktív ütközéskezeléssel (CSMA/CA) Egycímes keretformátum; Cím helyett keretazonosító (A címnek inkább adatazonosító és prioritást meghatározó szerepe van.) Fejlett hibadetektálás, hiba-elszigetelés TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 5
A CAN főbb jellemzői (folyt.) Nagy sebességű: 0,125-1 Mbit/s-ig, jellemzően 500 kbit/s) Kis sebességű: 10 kbit/s-tól 125 kbit/s-ig Távolság: kb. 40 500 m (függ a sebességtől, topográfiától, átviteli közegtől) Többféle adatátviteli közeg, legtöbbször csavart érpár NRZ (Non-Return to Zero) bitkódolás bitbeszúrással és bitkiejtéssel (bit-stuffing) Rövid, változó hosszúságú keretek (0 64 bit hosszú adatmező, 0 8 adatbyte). TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 6
CAN szabványok ISO 11898-1 Data link layer and physical signalling ISO 11898-2 High speed medium access unit ISO 11898-3 Low- speed fault-tolerant mediumdependent interface ISO 11898-4 Time-triggered CAN ISO 11898-5 High speed CAN and low power applications ISO 11519-1, -2: (superseded by ISO 11898-3) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 7
A CAN fizikai rétege A huzalozott ÉS kapcsolat jelállapotai: recessive (elengedett, 1), domináns (meghúzott, 0). NRZ kódolás Bitbeszúrás/bitkiejtés: gondoskodik a gyakori jelátmenetekről (megkönnyíti a bitszinkronizációt) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 8
Távolság, sebesség A maximális sebesség limitált, de gyakran alsó sebességhatárt is megadnak. Néhány tájékoztató érték: 100 m 500 kbit/s 200 m 250 kbit/s 500 m 125 kbit/s 6 km 10 kbit/s Alapvetően az arbitráció szab határt. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 9
Lezárás A kábelt hullámimpedanciával le kell zárni. Meggátolja a reflexiók kialakulását. Biztosítja a helyes DC feszültségszinteket. Csavart érpárnál 100-120 ohm. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 10
Csatlakozók A CAN szabvány nem specifikálja a csatlakozókat. A magasabb szintű protokollokban szokták rögzíteni a használandó csatlakozókat. (Ez ellentmond az OSI hivatkozási modell koncepciójának). Legtöbbször 9-pólusú, DB-típusú csatlakozót használnak. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 11
CAN csatlakozók DB9 DN C-type connector DN mini-style connector CANHUG connector TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 12
CAN transceiver (példa) Philips PCA82C251 TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 13
High Speed CAN (ISO 11898-2) Differenciális bemeneti feszültségtartomány a domináns állapothoz Differenciális bemeneti feszültségtartomány a recessive állapothoz idő CAN_H 1 0 1 CAN_L Recessive Dominant Recessive CAN_H GND CAN_L GND 3,5 V 2,5 V 1,5 V N_H CAN_L 5,0 V TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 14 0,9 V 0,5 V -1,0 V
Egy CAN hálózat (példa) Szenzor Beavatkozó Akkumulátortól (+12 V) GND Fesz.stabilizátor Mikrovezérlő + CAN vezérlő CAN transceiver 16 node CAN_L CAN_H... ECU ECU ECU ECU 1 m 40 m R T 120 Ω 500 kbit/s TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 15 R T
Példa: komplett CAN interfész TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 16
Példa: Philips PCA82C251 quick reference TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 17
Fault-tolerant CAN (ISO 11898-3) Source: Rudan Bettelheim Senior Systems Engineer Freescale Technology Forum 2005 Bangalore TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 18
Single-wire CAN (SAE J2411) Source: Rudan Bettelheim Senior Systems Engineer Freescale Technology Forum 2005 Bangalore TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 19
Bitidőzítés Egy bit Sync Prop.segm. Phase1 Phase2 Mintavételi pont Minden bit négy szegmensre van osztva. Minden egyes szegmens az ún. időkvantum (time quanta, TQ) egész számú többszöröse. A bitek szegmensei: Synchronization Segment ( 1 TQ) Propagation Segment (1-8 TQ) Phase Segment 1 (1-8 TQ) Phase Segment 2 (1-8 TQ) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 20
Bitidőzítés (folyt.) Szinkronizációs szegmens 1 kvantumnyi hosszú. A szinkronizálását szolgálja. A buszon a jelváltásoknak ebben a szegmensben kell megtörténniük. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 21
Bitidőzítés (folyt.) Propagation szegmens A busz terjedési idejét kompenzálja (beleértve a kábel jelterjedési idejét és az elektronika, pl. optocsatolók késleltetéseit is). TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 22
Bitidőzítés (folyt.) Phase Segment 1 és 2 A mintavétel a két fázisszegmens határán történik. PS1 növelhető, PS2 csökkenthető egy adott értékkel (SJW) SJW, Synchronization Jump Width = 1...4 TQ Szabályok: Prop Seg + Phase Seg 1 >= Phase Seg 2 Prop Seg + Phase Seg 1 >= TDELAY Phase Seg 2 > Sync Jump Width + IPT IPT, Information Processing Time TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 23
Bitidőzítés (folyt.) Az időkvantumot a rendszerórából állítják elő leosztással. Szinkronizálás Hard: a start bit recessive-domináns átmeneténél Soft: bitenként a Sync figyelésével és SJW korrekcióval Mintavétel Egyszeres Többszörös (többségi szavazással) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 24
CAN keretformátumok Adatkeret Hibakeret Távoli keret Túlterhelés-keret (Data frame) (Error frame) (Remote frame) (Overload frame) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 25
Adatkeret 2.0A vagy standard data frame CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration CRC ACK Delimiter Control Field Field Delimiter ACK RTR Slot Jelentése: Halló, itt van az X azonosítójú adat, aki akarja, használja fel. CAN 2.0A vagy standard CAN adatkeret (11-bites ID) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 26
Start of Frame CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration Field RTR Control Field CRC Delimiter ACK Delimiter ACK Slot Start of Frame: a keret kezdetét jelzi. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 27
Arbitration Field: ID + RTR CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration Field RTR Control Field CRC Delimiter ACK Delimiter ACK Slot ID (Identifier) Field: 11 bit (CAN 2.0A) Adási sorrend: MSB LSB Többnyire az adatmező tartalmát azonosítja. Az RTR bittel együtt meghatározza a keret prioritását is. RTR (Remote Transmit Request): távoli adáskérés TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 28
Control Field CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Control Field Arbitration Field RTR CRC Delimiter ACK Delimiter ACK Slot Control Field: az adatmező hossza byte-okban 2 bit: reserved (r1=0, r0=0) 4 bit: Data Length Code, (9-féle adathossz: 0, 1, 2,..., 8 byte) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 29
Data Field CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration Field RTR Control Field CRC Delimiter ACK Delimiter ACK Slot Data Field: max. 8 byte hosszúságú adatmező tetszőleges tartalommal. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 30
CRC Field CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration Field RTR Control Field CRC Delimiter ACK Delimiter ACK Slot CRC Field: 15 bit + 1 bit CRC Delimiter (=1) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 31
ACK CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Control Field ACK Delimiter Arbitration Field RTR CRC Delimiter ACK Slot ACK Slot: Tx:=1 / Rx:=0, azonnali nyugtázás; ACK Delimiter (=1) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 32
End of Frame CAN Data Frame = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 ID r0,r1 Data Field CRC Field End of Frame Start of Frame Arbitration Field RTR Control Field CRC Delimiter ACK Slot ACK Delimiter Intermission End of Frame: 1111111 (7x1) Intermission: 111 (3x1) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 33
Adatkeret CAN 2.0B vagy extended CAN Extended CAN Data Frame = 1 = 0 = 0/1 1 11 2 18 2 4 0-64 Identifier (11+18) r0,r1 Data Field Start of Frame RTR Control Field 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame Identifier r0,r1 Data Field CRC Field End of Frame Intermission Arbitration CRC ACK Delimiter Control Field Field Delimiter ACK RTR Slot Standard CAN Data Frame TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 34
Arbitráció és prioritás Huzalozott ÉS kapcsolat Ha az összes adó 1 értéket ad (recessive érték), akkor a buszon is egyes érték van. Ha bármelyik állomás lehúzza a buszt (domináns vagy 0 érték), akkor a buszon nulla (domináns) érték jelenik meg. Buszfigyelés: szabad / foglalt Egyszerre többen adnak: összeszinkronizálódnak, bitről bitre egyszerre hajtják meg a buszt. Adás közben az adó folyamatosan figyeli a buszt. Arbitráció Újraadás TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 35
Arbitráció és prioritás (folyt.) A domináns nyer (arbitrációs mező=id+rtr bit). Az ID az adás prioritását is meghatározza. Nem destruktív arbitráció (szemben pl. az Ethernettel) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 36
CAN ID A CAN ID nem azonos a szokásos LAN-ok címével. LAN példa: a cím egy adott állomást azonosít (az A állomás üzenetet küld a B állomásnak). A CAN ID mező bármit azonosíthat. A CAN protokoll nem mondja meg, hogy mi a jelentése az ID-nek, ezt a magasabb szintű protokollok határozzák meg. Az ID hossza, a bitek adási sorrendje rögzített, de a tartalmára vonatkozóan nincs előírás. Az ID legtöbbször az adatmezőben elküldött adat azonosítója (neve). Az autók esetében a különböző paraméterekhez (változókhoz) rendelnek azonosítókat, pl. egyedi ID-je van a motor fordulatszámának, a jármű sebességének stb. A vevők az ID vizsgálatával döntik el, hogy fogadják-e (továbbítsák-e a felsőbb réteg felé) az adott paramétert tartalmazó keretet vagy dobják el. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 37
Távoli keret (Remote Frame) CAN Remote Frame = 1 = 0 = 0/1 1 11 1 2 4 15 1 1 1 7 3 Start of Frame ID r0,r1 CRC Field End of Frame Intermission Arbitration Control Field CRC ACK Delimiter Field Delimiter ACK RTR = 1 Slot 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration Control Field CRC ACK Delimiter Field Delimiter ACK RTR = 0 Slot CAN Data Frame TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 38
Hibakeret (Error Frame) CAN Error Frame = 1 = 0 CAN Error Frame 6 8 6 8 Error Flag Error Delimiter Error Flag Error Delimiter Error active mode Error passive mode Jelentése: Vigyázat, ez egy hibás keret! Generálása: ha az adó adás közben vagy bármelyik vevő vétel közben hibát észlel. Error active mode: Error Flag = 6 db 0 Error passive mode: Error Flag = 6 db 1 Error Delimiter: 8 db 1 (recessive) TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 39
Error active mode (error counter < 128) = 1 = 0 6 8 Node 1 (Error detected) Error Flag Error Delimiter 6 8 Node 2 (Bit-stuffing error / form error) Error Flag Error Delimiter 6 12 8 3 CAN bus Error Flag Error Delimiter Intermission Min. 6+8+3 = 17, max. 12+8+3 = 23 TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 40
Error passive mode (error counter > 127) = 1 = 0 6 8 Node 1 (Error detected) Error Flag 6 8 Error Delimiter Suspend transmission Node 2 (Bit-stuffing error) Error Flag Error Delimiter 6 12 8 3 CAN bus Error Flag Error Delimiter Min. 6+8+3 = 17, max. 12+8+3 = 23 Intermission Bus idle TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 41
Hibakezelés Bit Monitoring / Bit Error Bit Monitoring Adáskor az adó összehasonlítja a kiadott bitet a vett bittel. Ha az arbitrációs fázison kívül a két érték nem egyezik, Bit Error hiba keletkezik, amit az adó regisztrál. Bit Error hatóköre = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration CRC ACK Delimiter Control Field Field Delimiter ACK RTR Slot TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 42
Hibakezelés Bit Stuffing / Stuff Error Bit Stuffing A vevő figyeli a beérkező biteket. A bitbeszúrás/-bitkiejtés szabály megsértése esetén Stuff Error hibát jelez. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 43
Hibakezelés Frame Check / Form Error Frame Check A CAN keret bizonyos bitjei rögzítettek, így az ettől való eltérést a vevők képesek észlelni. Ilyen típusú hiba esetén Form Error hiba keletkezik. = 1 = 0 = 0/1 1 11 1 2 4 0-64 15 1 1 1 7 3 Start of Frame ID r0,r1 Data Field CRC Field End of Frame Intermission Arbitration CRC ACK Delimiter Control Field Field Delimiter ACK RTR Slot TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 44
Hibakezelés Acknowledgement Check /Error Acknowledgement Check Egy adó sikeresen vett keretét valamennyi vevő nyugtázza az ACK bit nullába állításával. Ha egyetlen vevő sincs a buszon, akkor az ACK bit egyes értékű marad, ami az adóban Acknowledgement Error hibát generál. Az adó ily módon értesül arról, hogy vették-e a keretét. Azt nem tudhatja, hogy mindenki vette-e a keretét, csupán azt, hogy senki nem vette vagy legalább egy állomás vette. ACK Delimiter ACK Slot TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 45
Hibakezelés CRC / CRC Error Cyclic Redundancy Check Az üzenetek integritását 15-bites CRC-vel védik. CRC hiba esetén a vevő CRC Error hibát jelez. 15 1 CRC Field CRC Delimiter TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 46
Hiba-behatárolás, -elszigetelés Fejlett hibakezelés Hibaszámlálók: Transmit Error Counter Receive Error Counter Inkrementálnak, ha hibát észlelnek, és dekrementálnak, ha hibátlanul tudnak adni. Az adáskor bekövetkező hibákat nyolcszoros súllyal számolják. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 47
Hiba-behatárolás, -elszigetelés Error Active, Error Passive üzemmód Ha a hibák száma meghalad egy bizonyos értéket, az állomás a normális (Error Active) állapotból átmegy egy fokozott elővigyázatosságot biztosító (Error Passive) állapotba. Ha a hibák száma meghalad egy újabb küszöböt, az állomás nem adhat a buszra. A hibák megszűnése esetén, bizonyos szabályok betartásával, az állomás visszakerülhet normál üzemmódba. TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 48
Error counters, error modes Init REC > 127 OR TEC > 127 Error active (11 consecutive rec bits = = ACK delimiter (1) + EOF (7) + Interm. (3) = Error delimiter (8) + Intermission (3) ) 128 x 11 rec bits Error passive REC < 128 AND TEC < 128 TEC > 255 Bus off TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 49
Magasabb rétegek Alkalmazási réteg Ipari alkalmazásokhoz CAL CAN in Automation (CiA) CANopen CAN in Automation (CiA) DeviceNet Allen Bradley Rockwell CAN Kingdom Kvaser SDS Honeywell Autós alkalmazásokhoz OSEK/VDX OSEK J 1939 SAE TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 50
Vége TCs, SchB BME MIT 2012. Csak belső használatra! Autóipari beágyazott rendszerek CAN - 51