A LIN Protokol járműelektronikai hálózatokban
Dan Butler, Thomas Schmidt és Thorsten Waclawczyk,
Microchip Technology Inc
|
|
A LIN Protokollt az európai autógyárak érdekcsoportja tervezte, olcsó, kis sebességű, kis távolságú adatátviteli hálózatokhoz. Kapcsolók állapotainak közlésére, és hasonló, néhány száz ms változási sebességű jelek esetén alkalmazható sikeresen. Nagy sebességű beavatkozásra, például gyújtásszabályozásnál, nem célszerű a LIN Protokollt használni.
A protokoll kétirányú adatforgalmat biztosít egy vezetéken, kedvező árú mikrovezérlőkkel. A kvarc kristály és keramikus rezonátor költsége megtakarítható, mivel egy RC oszcillátor pontossága elegendő a kommunikáció szempontjából, ugyanis minden üzenet elején egy autobaud lépés történik. Legnagyobb támogatott adatátviteli sebesség 20kbaud, továbbá a gépkocsi telepének lemerülését elkerülendő, a protkollba iktattak energiatakarékos, szundi üzemmódot is. A busz bármely rákapcsolt állomásról ébreszthető.
A busz hasonlít az I2C-re és az RS232-re. Az egyvezetékes busz felhúzó ellenállással csatlakozik a tápfeszültségre, és az egyes állomások (node) nyílt kollektoros kimenetükkel alacsony szintre húzhatják a busz feszültséget az I2C –hez hasonlóan. Külön órajel helyett minden bájt start és stop bittel van jelölve, és az egyes bitek időzítése aszinkron, az RS232-höz hasonlóan.
|
|
Az 1. ábra jellegzetes LIN Protokoll elrendezést szemléltet. A testpotenciálú busz feszültség Domináns állapotot jelez, ez akkor következik be, ha bármely állomás a buszt a testre húzza. Amikor a busz tápfeszültségen van, Recesszív állapotnak nevezzük; ekkor minden állomás lebegni hagyta a kimenetét. Üresjáratban a busz tápfeszültségen van, a felhúzó ellenállás következtében.
A busz 9V és 18V között működik, de minden eszköznek el kell viselnie akár a 40V feszültséget is. Általában egy meghajtó áramkörrel választják le a mikrovezérlőt a buszról. A busz VTÁP –ra van felhúzva minden egyes állomásnál. A mesternél 1kΩ ellenállást érdemes beépíteni, míg a szolgáknál a felhúzó ellenállás értékét 20 és 47kΩ közt célszerű választani. A busz legnagyobb hossza 40m van tervezve.
Minden byte start és stop bitekkel keretezett. Start bitet a nyugvó busz ellentéte, vagyis 0 jelzi, míg a stop bit az üresjárási állapotnak felel meg (1). Minden adat byte legkisebb helyértékű bitjét továbbítjuk elsőnek.
Üzenet protokoll
A mester vezérli a buszt, az egyes szolga eszközök lekérdezésével. A szolga eszközök csak a mester felszólítására adhatnak, mely kétirányú összeköttetést tesz lehetővé, összetett arbitráció nélkül. Üzenetek átvitele a mester által kezdeményezett szinkron szünettel kezdődik, majd egy szinkronizációs és egy üzenet mező követi. A szinkronizációs (sync) bájt a busz időzítésének beállítását teszi lehetővé, minden üzenet kezdetén.
A szinkronizációs szünet 13 bitidejű busz domináns állapot, majd egy stop bit melyből a szolga állomások tudják, hogy üzenet következik majd. A mester és szolga állomások órajele 15% eltérhet, így a szolgák minimálisan 11, legfeljebb 15 bit ideig érzékelik a szinkronizációs állapotot.
Minden üzenet második bájtja egy azonosító (ident) bájt, mely a fogadó állomást, az adatok típusát és a válasz hosszát azonosítja. Minden üzenetre kizárólag egy szolga válaszolhat.
A szolga csak a mester utasítására közölhet adatot a buszra. A buszra kerülő adatot minden eszköz értelmezi, ezért a szolgák közti kommunikáció nem feltétlenül a mesteren keresztül történik, de minden esetben a mester engedélyével.
A protokoll RC oszcillátor pontosságára hagyatkozik, így minden átvitelnél a szolga állomásoknak a mesterhez kell igazítani az átviteli sebességet. Ebből kifolyólag, minden átvitel szinkronizációs mezővel kezdődik, mely egy byte hosszúságú alternáló 1 és 0 bitekből áll.
A szinkron byte-ot egy azonosító byte követi, mely az üzenet többi részére vonatkozó információt hordoz, mely további három almezőre tagolódik. Négy bit (0-3) a buszon lévő eszközt címzi meg; két bit (4-5) az üzenet hosszát adja meg; az utolsó bitek (6-7) paritásbitek.
A LIN Protokoll a szundi (sleep) parancs kivételével, nem határozza meg az üzenetek további tartalmát.
Hibaérzékelés
Észlelt hiba esetén a parancsot figyelmen kívül kell hagyni, és a hibát naplózni szükséges. A következő hibákat kell érzékelni és számolni minden eszköznek:
- Bit hibák: a küldő egységnek össze kell hasonlítani a küldött adatot és a buszon ténylegesen jelen lévő adatot. A vezérlőknek megfelelő ideig kell várakozni a buszra mielőtt a tesztelést elvégzi. Adott, hogy az él meredekség 1V/µs és a maximális busz feszültség 18V, ebből következik, hogy az adónak 18µs várnia kell, míg a bittesztelést elvégzi.
- Checksum hibák: Az adatmező checksum bájttal van védve, mely az adatbájtok invertált modulusú összege-256.
- Paritás hibák: A parancs byte két paritásbitet használ a többi hat bit védelmére.
Beépített hibaközlési mechanizmus nincs, mégis minden szolga eszköznek számon kell tartani az észlelt hibákat, mert a mester hibajelentést kérhet egy általános üzenet részeként.
LIN illesztés CAN buszra
A LIN Protocol közvetlenül nem kompatibilis a CAN busszal, de várhatóan a két
rendszer egymást kiegészítve működik majd. CAN-LIN Protokoll illesztő eszköz
szükséges a két busz összekapcsolásához, mely a LIN busz információi alapján
CAN üzeneteket formál.
Kis fogyasztású – szundi (sleep) - üzemmód
A mester minden szolga eszközt szundi módba küldhet, egy 0x80 azonosítóval ellátott üzenettel. A szundi üzenet adatbájtjai nem definiáltak. A szundi parancsot vevő szolgák, fogyasztásukat minimálisra csökkentik, valamint a busz változására ébredni kell. A busz feszültség ekkor magas szinten lebeg, és nem fogyaszt áramot.
Bármely buszra csatlakozó eszköz felébresztheti a buszt, egy ébresztő paranccsal. Amint az eszközök megkapták az ébresztő parancsot, várakozniuk kell, hogy a mester a szokványos módon kérdezze le az eszközöket.
Szemléltető hardware
|
|
A 2. ábrán látható szemléltető hardveren két nyomógomb és három LED található. LED 1 állapotát, az egyes nyomógomb minden tizedik lenyomására megváltoztatja. Hasonlóképp, LED 2 a kettes nyomógomb minden tizedik lenyomására változtatja meg állapotát. ID1 üzenetre a gombnyomások száma lesz a buszra küldve. Az ID4 –re válaszként a nyomógomb megnyomásainak száma lesz frissítve a buszon.
Szoftver működés
A LIN Protocol RB0 lábról történt megszakítással dolgozik, a szundi/ébredés üzemmódok megvalósításához. Amint megszakítás lép fel, az alacsony bit-időt mérjük. A szinkron byte vétele után a helyi bit-idő meghatározható. Az első alacsony bitidővel összehasonlítva megállapítható, hogy 10 bitidőnél hosszabb vagy rövidebb volt. A hosszú alacsony szint szinkronizációs szünetet jelez, ennél rövidebb szundi üzemmódból ébresztést eredményez.
Amennyiben ébresztés történt, a kód tovább várakozik szinkronizációs jelre. Szinkronizációs szünet észlelése esetén, a parancs bájt beolvasása következik, a paritás bitek ellenőrzése, valamit az akciótáblázat táblázat alapján a megfelelő teendő kiválasztása Az akciótáblázat határozza meg az adat forrását és célját.
A LIN szolga protokollt megvalósító szoftver működéséről bővebb információt az info@chipcad.hu lehet kérni.
A LIN szolga protokollt megvalósító szoftver 420 programszavat, 23 bájt memóriát használ és 20Kbaud adatátviteli sebességet támogat.
A LIN Protokoll széleskörűen használható járműelektronikai megoldás, mely alacsony költséggel egyszerűen megvalósítható. A költségek minimalizálása érdekében célszerű olyan belső RC oszcillátorral rendelkező Microchip-es PIC vezérlőt választani, melyben hardveres LIN támogatás van.
Megjegyzés: A teljes LIN Protokoll Specifikáció várhatóan a www.lin-subbus.com honlapról lesz letölthető. Addig is a konzorcium tagjainak honlapjáról érhetőek el a specifikációk (Audi AG, BMW AG, DaimlerChrysler AG, Motorola Inc, Volcano Communication Technologies AB, Volkswagen AG és Volvo Car Corporation).