A modern idők buszrendszere
A 2000-es évekkel eljött az az időszak az autóiparban, amikor a CAN önmagában már messze nem volt elegendő az összes rendszer felügyeletéhez egy személygépkocsiban.
Egy konzorciumi fejlesztés hatására 2009-ben, mikor a harmadik, végleges verziója kijött, a FlexRay egy új ajtót nyitott meg a járműipari kommunikációs protokollok világában.
Az alábbi cikkben ezt a viszonylag friss, ám ma már nélkülözhetetlen alrendszert mutatjuk be.
Definíció
A FlexRay egy ISO-szabványos, determinisztikus, hibatűrő, nagy sebességű kommunikációs busz, amely vezetékes kormányzás, drive-by-wire, brake-by-wire, adaptív sebességtartó automatika, aktív felfüggesztés és egyéb biztonsági alkalmazásokban is használható.
Olyan vállalatok közös fejlesztésének eredménye, mint a BMW, VW, Daimler AG, GM, Bosch, NXP Semiconductors, vagy a Freescale. 2009-ben jött el az év, amikor bemutatták a 3.0-ás verzót, ez lett a FlexRay végleges protokollja.
Olyan autókban debütált a rendszer, mint:
- Audi A8 (2011)
- BMW X5
- BMW X6
- BMW 7
- BMW 5
- BMW 5 GT
- Rolls Roys Ghost
Az alapvető követelmény az volt a FlexRay protokollal szemben, hogy nagy adatátviteli sebességre legyen képes – nagyobbra, mint a CAN.
A FlexRay két különálló, teljesen független csatornával rendelkezik, az adatátviteli sebessége pedig csatornánként 10 Mbit másodpercenként.
Ami pedig szintén az alapvető jellemzőihez tartozik: teljesíti a biztonságkritikus vezérlés követelményeit. Ezáltal rábízhatunk olyan rendszereket, mint a brake-by-wire vagy a steer-by-wire, ahol viszonylag sok adatnak, gyorsan és megbízhatóan kell áramolnia a protokollon keresztül.
Ezek a rendszerek a mai napig általános témának számítanak a jog világában, így ma még nincs egyértelmű konszenzus az alkalmazásukról, ám tény, hogy a FlexRay lehetővé tette a használatukat.
Hálózati tulajdonságok
Ha három szóban kellene jellemezni a protokollt, akkor azt mondhatnánk róla, hogy: gyors, determinisztikus és hibatűrő. Ez utóbbi azért fontos, mert nincs arbitráció, mint a CAN esetén (a CAN-ről már korábban cikkeztünk).
Noha az autóipar generálta a hálózat létrejöttét, valójában a FlexRay olyan jól sikerült, hogy nem maradt meg pusztán a járművek környezetében.
A 10Mbit/s-os csatornánkénti adatátviteli sebesség jelentős, ezért általában a két csatornát ugyanarra a célra használják, így valósítják meg a hardveres redundanciát.
A kommunikációs ciklus felosztható statikus és dinamikus időszeletekre. A statikus rész vezérlőegységekhez vannak rendelve, míg a dinamikus rész a fent maradó sávszélességen akár multimédiás célokat is ki tud elégíteni. Idővezérelt elven működik, amely biztosítja a küldött és fogadott információk sérthetetlenségét, de szervezésbeli nehézséget is okoz.
Működés
Óra
A FlexRay rendszer egy buszból és ECU-kból (elektronikus vezérlőegység) áll. Minden ECU független órával rendelkezik – itt nyilvánul meg az idővezéreltség lényege. Az óraeltolódás nem lehet több 0,15%-nál a referencia órajelhez képest, tehát a rendszer leglassabb és leggyorsabb órajele közötti különbség nem lehet nagyobb 0,3%-nál.
Ez azt jelenti, hogy ha az ECU-s egy küldő, az ECU-r pedig egy vevő, akkor a küldő minden 300 ciklusához 299 és 301 vevőciklus tartozik. Az órákat elég gyakran újraszinkronizálják annak biztosítására, hogy ez ne okozzon problémát. Az órát a statikus szegmensben küldjük.
Bits on the bus
Minden alkalommal csak egy ECU ír a buszra. Minden elküldendő bit a buszon 8 minta órajelciklusig tart. A vevő tárolja az utolsó 5 minta pufferét, és az utolsó 5 minta többségét használja bemeneti jelként.
Az egyciklusú átviteli hibák befolyásolhatják a bithatár közelében lévő eredményeket, de nem befolyásolják a 8 ciklusos tartomány közepén lévő ciklusokat.
Mintavételezett bitek
A bit értékének mintavételezése a 8 bites régió közepén történik. A hibákat a szélsőséges ciklusokba helyezik át, és az órát elég gyakran szinkronizálják ahhoz, hogy az eltolódás kicsi legyen. A drift kisebb, mint 1 ciklus 300 ciklusonként, és az átvitel során az óra 300 ciklusonként többször szinkronizálódik.
Keret
Minden kommunikáció keretek formájában kerül elküldésre. Az üzenet bájtokból áll, a következőképp:
- Átviteli indítójel (TSS) – 0. bit
- Keret indítójel (FSS) – 1. bit
- m-szer:
- Byte indítójel 0 (BSS0) – 1. bit
- Byte indítójel 1 (BSS1) – 0. bit
- Az i-edik bájt 0. bitje
- Az i-edik bájt 1. bitje
- Az i-edik bájt 2. bitje
- …
- Az i-edik bájt 7. bitje
- Keretvégi jel (FES) – 0. bit
- Átviteli végjel (TES) – 1. bit
Ha semmi sem kommunikál, a busz 1-es állapotban van (nagyfeszültség), így minden vevő tudja, hogy a kommunikáció akkor indult el, amikor a feszültség 0-ra esik.
A vevő úgy tudja, hogy az üzenet befejeződött, ha ellenőrzi, hogy BSS0 (1) vagy FES (0) érkezett-e.
Vegyük figyelembe, hogy a bitenkénti 8 ciklusnak semmi köze a bájtokhoz. Minden bájt átvitele 80 ciklust vesz igénybe. 16 a BSS0 és BSS1, és 64 a bitjei számára.
Óraszinkronizálás
Az órák újraszinkronizálása megtörténik, amikor a megválasztott jel 1-ről 0-ra változik, ha a vevő tétlen volt, vagy BSS1-et várt.
Mivel a szinkronizálás a megválasztott jelen történik, a szinkronizálás során fellépő kis átviteli hibák, amelyek a határbiteket érintik, legfeljebb 1 ciklussal torzíthatják a szinkronizálást. Mivel a szinkronizálás között legfeljebb 88 ciklus telik el (BSS1, 8 bit az utolsó bájtból, FES és TES – 11 bit 8 ciklusból), és az óraeltolódás nem nagyobb 1-nél 300 ciklusonként, az eltolódás torzíthatja az órát. A vétel során előforduló kis átviteli hibák csak a határbiteket érinthetik. Tehát a legrosszabb esetben a két középső bit helyes, így a mintavételezett érték is helyes.