Autóipari beágyazott rendszerek FlexRay 1
Történet A FlexRay konzorcium fejlesztette Freescale, Bosch, NXP, BMW, VW, Daimler, GM Ma már ISO szabvány Főbb igények A CAN és LIN protokolloknál nagyobb sávszélesség Determinisztikus időzítés Hibatűrő felépítés Idővezérelt és eseményvezérelt kommunikáció 2
Hálózati topológia Egy busz egy vagy két csatornából áll (A és B). A két csatornán egy időben ugyanaz (hibatűrés) vagy más (sávszélesség) üzenet továbbítódik. Mindkét csatorna egy érpárat használ 3
Hálózati topológia A legegyszerűbb topológia a passzív busz, melyben a csomópontok csak kábellel vannak összekötve. 4
Hálózati topológia A csomópontok vagy mindkét, vagy csak egyik csatornára csatlakoznak 5
Hálózati topológia Az aktív csillag topológia csatornánként egy aktív ismétlőt tartalmaz (star coupler) 6
Hálózati topológia Előnye, hogy a csomópontok külön szegmensen vannak, így robosztusabb hálózat hozható létre 7
Hálózati topológia A kaszkád csillag topológiában csatornánként két ismétlő található. Ezek össze vannak kötve egymással. A protokoll ennél több ismétlőt nem enged meg a késleltetés miatt. 8
Csomópont felépítése 9
Csomópont felépítése A host a vezérlőegység processzora 10
Csomópont felépítése A kommunikációs vezérlő valósítja meg a FlexRay protokollt. Fenntartja a hálózati kapcsolatot, adatokat küld és fogad. 11
Csomópont felépítése A host egy interfészen keresztül vezérli a kommunikációs vezérlőt, illetve lekérdezi a fogadott kereteket és beállítja a küldendőeket. 12
Csomópont felépítése A fizikai buszhoz való illesztést buszmeghajtók (csatornánként egy) végzik. Ezek egyszerű szintillesztő áramkörök. 13
Csomópont felépítése A kommunikáció (bitfolyam) két irányban a vezérlőből a meghajtó felé folyik. A host képes vezérelni a meghajtókat (kikapcsolás, alvó állapot, stb.) 14
Csomópont felépítése Néhány buszmeghajtó rendelkezik alvó üzemmóddal. Ennek során képes lekapcsolni az ECU áramellátását, és egy speciális ébresztő keret fogadásakor visszakapcsolni azt. 15
FlexRay Kommunikáció Periodikus kommunikációs minta TDMA (Time Division Multiple Access) kör Statikus szegmens Determinisztikus, időalapú közeghozzáférés Dinamikus szegmens Dinamikus, prioritás alapú közeghozzáférés Szimbólum ablak Egyetlen speciális teszt szimbólum átvitelére szolgál Nem használják széles körben Üresjárati idő (Network Idle Time) Nincs kommunikáció Belső feldolgozás, órakorrekció 64 körönként ismétlődik a minta 16
Statikus szegmens 17
Statikus szegmens A statikus szegmens a TDMA kör elején kezdődik. Minkét csatorna slot számlálója 1-ről indul 18
Statikus szegmens A statikus szegmens meghatározott számú slot-ot tartalmaz (tervezési idejű paraméter) 19
Statikus szegmens Minden statikus slot azonos hosszúságú (időben) Minden slotban egy keret küldhető, és minden keret azonos hosszúságú 20
Statikus szegmens A két csatorna slot számlálója szinkronban van a teljes szegmens alatt 21
Statikus szegmens Egy szlotban egyetlen vezérlő adhat. Egy keretet küld egy vagy két csatornán. Ha a hibatűrés fontos, két csatornás küldésre van szükség. 22
Statikus szegmens Ha csak egyik csatornán küldünk, a másikon nincs forgalom, ezt másik küldő sem használhatja 23
Statikus szegmens Ha az előre definiált küldő nem küld egy slotban, akkor az üresen marad. Ha csak az alkalmazása nem frissíti az adatokat, a vezérlő üres (null) keretet küld. 24
Dinamikus szegmens 25
Dinamikus szegmens A dinamikus szegmens a statikus után kezdődik. Meghatározott számú miniszlotból áll. Küldeni csak az első platesttx minislotban lehet 26
Dinamikus szegmens A slot számlálók a statikus slotok száma + 1 értékről indulnak A két csatorna számlálója itt már külön jár 27
Dinamikus szegmens Ha egy minislotban nem kezdődik küldés, az rövid lesz (előre meghatározott hossz). Minden csomópont detektálja, hogy nincs adás, és lépteti a saját számlálóját. 28
Dinamikus szegmens Ha egy minislotban keretet küldenek, az meghosszabbodik. A keret elküldése után lép csak a slot számláló. Ebben a szegmensben a keretek tetszőleges hosszúak lehetnek. 29
Dinamikus szegmens Az, hogy a slot számláló mekkora értéket ér el a szegmens végéig, függ az átküldött keretek számától és hosszától. 30
Dinamikus szegmens Ha nagy a forgalom a nagyobb számú slotok kimaradnak, így az ide allokált üzeneteket nem lehet elküldeni. Az üzenet slot száma így prioritás is egyben. 31
Üzenet ütemezés Keret adatai Slot szám melyik slotban kell elküldeni Alapciklus szám melyik TDMA körben kívánjuk elküldeni Ismétlés hány körönként kell ismételni Hossz csak dinamikus szegmens esetén Csatorna mely csatornákon kívánjuk elküldeni Statikus szegmensbeli keretek Garantáltan elküldésre kerülnek A protokoll indítására (startup) és idő szinkronizációra (sync) is használhatóak Az adathossz előre meghatározott Dinamikus szegmensbeli keretek Adathossz egyedileg állítható Csak egy csatornán küldhetőek 32
Keretformátum 33
Keretformátum Fenntartott bit Későbbi protokoll bővítésekhez. Értéke mindig 0. 34
Keretformátum Payload preamble Indicator Azt jelzi (1), hogy az adattartalom első két byte-ja speciális. Statikus szegmens esetén a network management vectort, dinamikus esetén egy kiegészítő üzenet azonosítót tartalmaz. 35
Keretformátum Null frame indicator Azt jelzi, hogy a keret adatrésze üres. Ennek oka általában az, hogy a küldő alkalmazás nem frissítette az adatokat. Csak statikus keretek esetén lehetséges. 36
Keretformátum Sync frame indicator Azt jelzi, hogy ezt a keretet fel lehet használni az órakorrekciós értékek számításához. 37
Keretformátum Startup frame indicator Azt jelzi, hogy ezt a keretet fel lehet használni a hálózati kommunikáció elindításához. 38
Keretformátum Keret azonosító Azonosítja azt a slot-ot, amiben a keretet el kell küldeni (1...2047) 39
Keretformátum Az adatrész hossza félszóban (2 byte). Értéke (0 127), azaz maximum 254 byte-os kereteket küldhetünk 40
Keretformátum Fejléc CRC. A pirossal jelölt mezőket védő hibadetektáló kód. 41
Keretformátum A küldő ciklus számlálójának értéke 42
Keretformátum Hasznos adatok 43
Keretformátum Üzenet CRC. Az adattartalmat védi 44
Kommunikációs koordináció A kommunikációhoz óra szinkronizáció szükséges Ciklusok szimultán kezdése Slotok egyeztetése Az óra szinkronizációhoz a csomópontoknak fel kell ébredni Koordinált ébresztésre van szükség Minden művelet hibatűrő kell,hogy legyen Egy hibás csomópont nem okozhat hibás állapotot rendszerszinten Kommunikáció blokkolása Óraszinkron elrontása A protokoll részletesen definiálja az ébresztés és szinkronizáció menetét Több gyártó kommunikációs vezérlői is együttműködhetnek 45
Ébresztés Az egyik csomóponton helyi ébresztő esemény történik 46
Ébresztés Az alkalmazás felkonfigurálja a vezérlőt 47
Ébresztés A kontroller elindítja az A csatorna ébresztését 48
Ébresztés Először belehallgat a csatorna forgalmába. Ha nincs forgalom, az aktív ébresztési szakasz kezdődik 49
Ébresztés A csomópont az egyik csatornán kiküldi az ébresztő mintát 50
Ébresztés A másik csomópont érzékeli az ébresztést az A csatornán, és indítja a B-n Erre azért van szükség, hogy egy hibás csomópont ne tudja ébresztő mintákkal elárasztani mindkét csatornát. 51
Ébresztés A harmadik csomópont is érzékeli az ébresztést a B csatornán, és elkezdi az inicializálást 52
Kommunikáció indítása 53
Kommunikáció indítása Az indítás azzal kezdődik, hogy a hidegindító csomópont belehallgat a kommunikációba. Ha a buszon nincs aktivitás, átlép ütközés feloldó állapotba, és egy speciális CAS (Collision Avoidance Symbol) szimbólumot küld 54
Kommunikáció indítása Az indítás azzal kezdődik, hogy a hidegindító csomópont belehallgat a kommunikációba. Ha a buszon nincs aktivitás, átlép ütközés feloldó állapotba, és egy speciális CAS (Collision Avoidance Symbol) szimbólumot küld 55
Kommunikáció indítása Ha nem észlelt ütközést, a 0. ciklustól elindítja a kommunikációt. Először csak a saját indító (startup) keretét küldi 56
Kommunikáció indítása Ha egymás után 4 ciklusban érzékel startup kereteket, a másik hidegindító csomópont is csatlakozik az indítási kísérlethez 57
Kommunikáció indítása Négy olyan ciklus után, ahol megvan a hidegindító keretek minimális száma, a többi csomópont is elindítja a kommunikációt 58
Kommunikáció indítása Végül minden csomópont normál aktív módba kerül, azaz a normál kommunikációs állapotba. 59
Kommunikáció indítása Az indítás mindig véges időben befejeződik Ha a csomópont CAS-t érzékel indulás közben, átvált néma módba Ha a csomópont más keretet érzékel indítás közben, átvált néma módba Végül mindig csak egy vezető hidegindító marad, így a hálózat elindul Ha egy passzív hidegindító csomópont kommunikációt érzékel Megpróbál bekapcsolódni Megvár egy pár (két egymás utáni kör) indító keretet Ezek segítségével ofszet és ráta korrekciót végez az óráján Ha a korrekció sikeres, és a keretek továbbra is érkeznek, elindítja a saját indító kereteinek küldését A nem hidegindító csomópontok két, egymással szinkronban levő hidegindítóra várnak Az ajánlott hidegindító szám 3, így egy hibás csomópont esetén is el tud indulni a hálózat Ez az eljárás nem csak induláskor, de integráció (új csomópont hozzáadása a működő hálózathoz) esetén is érvényes 60
FlexRay órakezelés Időzítési hierarchia 61
FlexRay órakezelés Időzítési hierarchia Microtick szint a helyi óra ütését számolja. Kontroller specifikus hosszúságú. 62
FlexRay órakezelés Időzítési hierarchia Macrotick szint a globális időt szimbolizálja, tehát minden csomóponton (közel) szinkronban jár. Minden ciklus elején 0-ról indul. 63
FlexRay órakezelés Időzítési hierarchia Ciklus szint A ciklusok előre meghatározott számú macrotick-ből állnak, és nagyobb időtartamok egyedi jelölését teszik lehetővé 64
Óraszinkronizálás 65
Óraszinkronizálás Szinkron keretek időbélyegének mintavételezése, óra eltérés rögzítése 66
Óraszinkronizálás Ofszet korrekció számítása 67
Óraszinkronizálás Ofszet korrekció alkalmazása (csak páratlan ciklus végén a NIT alatt) 68
Óraszinkronizálás Ráta korrekció számítása (páratlan ciklusban) 69
Óraszinkronizálás Ráta korrekció alkalmazása (a két következő ciklusra a microtick/ macrotick arány módosítása 70
Óraszinkronizálás Ofszet korrekció számítása A szinkron keret időbélyegének eltérése a referenciától Külső korrekciós érték is figyelembe vehető Külső óraszinkronizálás! Ráta korrekció számítása Két azonos körben mért eltérésből számítja Minden korrekciót minden szinkron keretre kiszámít Hibatűrő átlagot számol A legkisebb és legnagyobb értéket eldobja A többi értéket átlagolja Ezt a kommunikációs vezérlő hardvere végzi Nincs szükség szoftver támogatásra A lehető legpontosabb szinkronizálás érhető el 71
FlexRay szoftver szemszögből A kommunikációs vezérlő üzenet puffereket használ (message buffer) A küldendő üzenetek, és A fogadott üzenetek tárolására Legtöbbször ez memóriába ágyazottan található A mikrokontroller fő RAM memóriájában Akár több 10kB is lehet A pufferek osztott erőforrások A vezérlő írja/olvassa Az alkalmazás is írja/olvassa az adatokhoz való hozzáféréskor Szinkron módon kell hozzáférni Ha egyszerre férnénk hozzá, inkonzisztens adatokat kapnánk Megoldás A hálózati idő figyelése Ha egy keret küldése/fogadása nemsokára következik, azt nem frissítjük 72
FlexRay szoftver szemszögből Joblist Feladat lista Leírja, hogy adott FlexRay idő (ciklus + macrotick) esetén milyen műveleteket kell végezni Pl. üzenet fogadása, küldendő üzenet frissítése, puffer átkonfigurálása másik üzenet kezelésére, stb. A joblist végrehajtását a FlexRay kontroller időzítő megszakítása indítja Előre meghatározott időpontban A hálózathoz szinkronizálva Így elkerülhető a konkurens hozzáférés A FlexRay órához szinkronizálhatjuk a feldolgozó taszkokat is A lehető legrövidebb késleltetés érhető el 73
Autóipari hálózatok felhasználása 74
Átviteli protokollok Az autóipari protokollok kis méretű üzenetek átvitelét támogatják 8-254 byte Néhány felhasználási mód nagy mennyiségű adat mozgatását igényli Szoftver frissítés Diagnosztika Átviteli (transport) protokollok Felsőbb szintű protokoll Virtuális kapcsolatot hoz létre Nagy mennyiségű adat átvitelét vezérli Darabolás-összeállítás Folyam vezérlés Minden protokollhoz van LIN (a szabvány része) CAN (ISO szabvány) FlexRay (ISO szabvány, AutoSAR szabvány) 75
Fejlesztő eszközök Hálózati interfészek Fejlesztő PC illesztése terepbuszhoz USB, Ethernet, Hálózat analizátor PC szoftver A kommunikáció megfigyelésére Esetleg befolyásolására Speciális eszközök Hibainjektálás Hálózati hibák előidézése A robosztusság vizsgálatára HW/SW eszköz Remaining bus simulation (RBS) Egy ECU tesztelésére A hálózat többi részét szimulálja 76