Egy adat fontosság szerinti protokoll CAN-sín és használata Egy adat fontosság szerinti protokoll 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
CAN (Controller-Area-Network) Vezérlőegységek területi hálózata Autóipar igényei: Vezetékezést drasztikusan csökkenteni kell. Súly és fogyasztás csökkentés Adatok fontossága legyen a vezérlő szempont Megbízhatóság létkérdés Bosch cég dolgozta ki 1986-ban Első szabvány 1987 1991-től a 2.0 A, és B verzió a használatos Szilíciumon megvalósított teljes protokoll 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Főbb jellemzők Objektum orientált címzés ÚJ! (fontosság szerint állandóra kiosztva) Non-destruktív sínfoglalás Fontos! Az elküldött adatot mindenki veszi és a vevő dönti el, hogy kell-e neki. Minden egység lehet adó. Adatmennyiség kicsi 1-8 bájt Védelmek. Hibaarány 4,7 *10-11 jó Óragenerátor igénye 1,5% nem gond 1 Mbit/sec-nél meghajtástól függően 9-40 m 10 kbit/sec-nél 6000 m is áthidalható Fizikai jelszínt sokféle megoldású lehet 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Ipari méréstechnika is használja Bővítés címzésben Átvitt adatok mennyiségében Kisebb sebesség, nagyobb távolság Gyorsan terjed 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Átviteli blokk felépítése Start of Frame = Start bit Arbitration Field: = Azonosító mező Identifier: 11 (29) bit ID10 (28) – ID0; Zárja az RTR bit Remote Transmission Reguest bit Control Field = átvitel mennyiségi megadása Data Field = Átviendő karakterek CRC Field = ellenőrző mező ACK Field = elfogadás jelzés várása End of Frame = átvitel vége 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Átvitel és indítása A szintek megnevezése: - Receszív logikai 1, nyitott kollektornál H színt - Domináns logikai 0, nyitott kollektornál L színt Üres vonalon receszív színt van Általános szabály: 5 bitnél több azonos értékű egymás után nem lehet, ekkor az adó ellentétest szúr be Kezdeményezés 1 ütemnyi domináns szinttel: Start bit Azonosító mezőben 11 (28) bites kód domináns bit felülírja a receszívet. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Az adó és a vevőállomás fogalma Egy állomás akkor vevője egy üzenetnek, ha nem az adója, tehát minden állomás vevő, amelyik nem ad. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Arbitráció Az adó is figyeli a vonalat. Ha azonosító mező alatt megegyezik a saját adásával, adja a következő bitet. Amikor eltérést tapasztal leválik. Íj módon az azonosítás végére a legfontosabb tartalmú marad csak adásban, és rögtön adhatja is az adat bájt számát. A többi mezőben eltérés esetén hiba generálódik. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Keret típusok 1. adat keret (Data Frame) 2. lekérő keret (Remote Frame) 3. hiba keret (Error Frame) 4. késleltető keret (Overload Frame) 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A CAN 2.0B adat keret SRR = Substitute Remote Request RTR = Remote Transmission Request bit az üzenetek kérésére szolgál. Az adatkeretben mindig alacsony szintű. Magas szintje az üzenetkérést jelzi IDE = alacsony szint esetén Standard a keret r1, r0 fenntartva DLC = Data Lenght Code adathossz 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Az adat keret értelmezése Adatmező: 0…8 bájt hosszú lehet az elküldeni kívánt adat CRC mező: 15 +1 bit (+1 bit, a CRC elválasztó) Hibadetektálásra használatos kód. ACK mező: 2 bit (az ACK elválasztóval együtt) Nyugtázó mező, ahol minden állomás az üzenet helyes vétele után felülírja az itteni recesszív bitet egy dominánssal. Ha alacsony szintű, akkor nem biztos, hogy minden állomás megkapta az üzenetet, de biztos, hogy valaki megkapta. Magas szintje hibát jelent. EOF mező: 7 bit (magas szintű = recesszív) A CAN üzenet végét jelzi a kódolás megsértésével az adó. IFS: 3bit (recesszív) Interframe Space – Keretek közötti szünet, hogy a vevő a vett adatot eltárolhassa a vételi pufferébe. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
DLC = Data Lenght Code adathossz megadása d = domináns állapotú bit r = recesszív állapotú bit Más adathossz nem megengedett 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A lekérő keret Az adótól való üzenetkérésre a Remote Transmission Request lekérő keret használható. Ezt a keretet minden állomás veszi és az azonosító segítségével eldönti, hogy a kérés neki szól-e. A döntést végezheti egy feldolgozó program (alap CAN támogatás), vagy maga a CAN vezérlő is (teljes CAN támogatás). Az adatkérés és az adatküldés nem egymást követő keretek, mert több nagyobb prioritású üzenet is közbeékelődhet. Az előnye, hogy nem csak az adatkérő állomás juthat adathoz, hanem minden adatra jogosult állomás is. A lekérő keret annyiban különbözik az adatkerettől, hogy nincsen adatmezője, és az RTR bit magas szintű. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Hiba keret Két fajta lehet Aktív ez 6 domináns bitből áll. Az aktív hibajelzés a kódolás megsértésével jár (több mint 5 egyforma bit) ezért a 6-tól minden adó hibajelzést ad Passzív, 6 recesszív bitből áll. Ezt bárki felülírhatja. A hibajelzésnek akkor van vége, amikor 6 recesszív bitet érzékel az adó (PHJ) Így a hibajel 6-12 bitből állhat A Hibakeret két mezőből áll. Az első mező a hálózaton létrejött hibajelek szuperpozícióját tartalmazza, a második pedig, a hibaelválasztó mező. 8 recesszív bitből áll 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Késleltető keret Két mezőből áll: 1. késleltető jel mező 2. késleltető keret elválasztó 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
A késleltető keret küldésének okai: 1. a vevőállomás belső állapotai miatt nem képes rögtön fogadni egy adat, vagy egy lekérő keretet: ebben az esetben a késleltető keret adását rögtön a keretek közötti tér szünet mezőjének első bitidejében kell elkezdeni. 2. a keretek közötti tér mezőjében egy domináns bit fordul elő. Ebben az esetben a késleltető keret adását a domináns bit megjelenése utáni bit időben kell elkezdeni. A késleltető jel 6 domináns bitet tartalmaz, így gyakorlatilag megegyezik az aktív hibajellel. A késleltető jel tönkreteszi a keretek közötti tér szünet mezőjét (Intermission), ezáltal a többi állomás is késleltető keretet küld. A késleltető keret elválasztó 8 recesszív bitből áll, a keletkezésük, pedig megegyezik a hibaelválasztó mezőével. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
A keretek közötti tér aktív hibajelző állomásnál Az adat és a lekérő keretek közötti tér (Interframe Space) két részre osztódik: a szünetre (Intermission) és a busz szabad állapotára (Bus Idle). Annak a passzív hibajelző állomásnak, amely előzőleg adatot küldött a kettő között, még létezik egy „adást felfüggeszt” (Transmission Suspend) mezője is. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
A keretek közötti tér adó üzemmódban és passzív hibajelző állomásnál 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A szünet 3 recesszív bitet tartalmaz, és ez idő alatt nem kezdeményezhető adat, vagy lekérő keret indítása. A busz szabad állapot tetszőleges hosszúságú lehet, és ez alatt bármelyik állomás elkezdhet adni. Ha a busz szabad állapota alatt domináns bit kerül a buszra, akkor azt az állomások a keret elejének (Start of Frame) tekintik. Az előzőleg adat keretet küldő PHJ állomás a szünet után 8 recesszív bitet küld, ez alatt bármelyik másik állomás kezdeményezhet adást. Ha 8 recesszív szint alatt senki sem indított adat keretet, akkor a PHJ állomás továbbra is adó állapotban marad, és ha van mit elküldenie, akkor megkezdheti az adást. Ha várakozás közben, egy másik állomás, adást kezdeményezett, akkor a PHJ állomás vételi üzemmódba kapcsol át. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Az üzenet érvényessége Az adó és a vevő állomás szempontjából az érvényesség mást jelent. Az adó számára akkor érvényes az üzenet, ha az EOF mező utolsó bitjéig nem következett be hibajelenség. Ez viszont hibalehetőség arra, hogy egy üzenetet a vevő kétszer kapjon meg. A vevő az utolsó előtti bitig hibátlannak veszi az üzenetet és behelyezi a vételi pufferbe. Ha ez után (EOF utolsó bitje) történik a hiba, akkor az adó törli az üzenetet és elküldi újra. A vevő ezt is venni fogja annak ellenére, hogy az előbb már sikeresen vette. Ezt elkerülendő az üzenetet el kell látni egy sorszámmal, ami adott esetben lehet egy bit is. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A kódolás A bitfolyam NRZ (Not Return to Zero) metódussal kódolt, tehát az előállított bit szintje állandó a teljes bitidő alatt. A Start of Frame, Arbitration field, Control field, Data field és a CRC bitbeszúrással kerül kódolásra. Ez annyit jelent, hogy ha az adó 5 egymás utáni azonos szintű bitet detektál, akkor a bitfolyamba beszúr egy ellenkező szintű bitet. Az adatkeret maradék mezői (CRC elválasztó, ACK mező, EOF mező), a hiba keret és a késleltető keret adásánál ezt a módszert nem alkalmazza az adó, mert ezek rögzített formátumúak 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A CAN hibakezelése 1. a hiba érzékelése 2. a hiba jelzése hibakeret küldésével 3. az üzenetek törlése minden állomáson 4. minden működő állomás hibaszámlálójának inkrementálása 5. üzenet újraküldése 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Hibaérzékelés (hibadetektálás) A protokoll öt különböző módot kínál a hibák felderítésére, melyek közül kettő bitszinten, a többi pedig, üzenet szinten működik: 1. Bitfigyelés (Bit Monitoring) 2. Kódsértés (Bit Stuffing) 3. Keret hiba (Frame Check) 4. Visszajelzési hiba (ACKnowledgement Check) 5. CRC hiba (Cyclic Redundancy Check Error) 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) CRC képzés 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Vevő oldali CRC ellenőrzés 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A hibajelzés A buszon lévő összes állomás figyeli az üzenetet. Hiba esetén a hibát érzékelő állomás egy hibajelet küld, ami egyben törli a busz forgalmát. A többi állomás veszi a hibajelet, és ennek megfelelően folytatják a dolgukat. Az adó által kiadott passzív hibajel hibát okoz a vevőkben, ha olyan mezőben keletkezik, ahol a kódolás megsértése történik, mert ilyenkor a vevők kódolási hibát érzékelnek. Ehhez az szükséges, hogy egy ilyen hibajel ne az arbitráció közben jöjjön létre, mert akkor egy esetleges másik adó kezdi el az adást. Ha az adó a CRC keret vége előtt kezd el passzív hibajelet adni és a CRC összeg vége szintén csupa recesszív bit, akkor a vevők szintén nem érzékelik a hibát. A vevők által kiadott passzív hibajelek nem zavarják a busz forgalmát. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A hibakorlátozás (1) Ha állandó helyi zavar van a hálózaton, akkor ez folyamatosan ismétlődő hibakereteket eredményezne. Ennek elkerülése végett az állomások sorra leválnak a buszról. Így elérhető, hogy a még működőképes állomások üzemben maradhassanak és a hibásak ne zavarják azokat. A hálózatról való leválás első lépésében az állomás csak passzív hiba-kereteket küldhet, majd az esetleges további hibák előfordulása esetén a buszról való teljes leválás is végbemehet. Minden állomás két hibaszámlálót kezel: egy vételi és egy adási hibaszámlálót (Transmit Error Counter /TEC/, Receive Error Counter /REC/). A hibaszámlálók működése több szabálytól is függ, de a lényeg az, hogy ha az adó hibát érzékel, akkor gyorsabban növeli az adási hibaszámlálóját, mint a vevő állomások a vételi hibaszámlálójukat. Ez azért van így, mert nagyobb az esély, hogy az adó az, aki a hibázott, vagy a hálózat hibás részén helyezkedik el. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) A hibakorlátozás (2) 1. Aktív hibajelző (Error Active) 2. Passzív hibajelző (Error Passive) 3. Leválasztott (Bus Off) Minden állomás aktív hibajelző állapotban indul. Ha egy adott állomás hibaszámlálója eléri a 127-et, akkor passzív hibajelző állapotba vált át, a 255-ös érték elérésekor pedig leválasztott állapotba kerül. A leválasztott állapotból való kilépés csak felhasználói hardveres, vagy szoftveres újrain-dítással lehetséges. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Grosz Imre f. doc.: CAN-sín (30 kép) Vezetékhibák Az ISO 11898 az alábbi hibaeseményeket különbözteti meg a CAN vezetékkel kapcsolatban: 1. CAN_H megszakadt 2. CAN_L megszakadt 3. CAN_H rövidzár a tápfeszültségre 4. CAN_L rövidzár a földre 5. CAN_H rövidzár a földre 6. CAN_L rövidzár a tápfeszültségre 7. CAN_L rövidzár a CAN_H-val 8. CAN_L és CAN_H azonos helyen szakadt meg 9. a lezáró hálózattal való kapcsolatvesztés Az 1-6 pontig terjedő és 9-es pontbeli hibákat a busznak csökkent jel/zaj viszony mellett is el kell viselnie. A 8-as pontban leírt hiba esetén a megmaradt hálózatnak életképesnek kell maradnia. A 7-es hibánál opcionális a túlélés a csökkentett jel/zaj viszony mellett. 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)
Tipikus elosztott hálózat 2005. 10. 04 Grosz Imre f. doc.: CAN-sín (30 kép)