Autóipari beágyazott rendszerek UDS és OBD
1
Diagnosztika és nyomkövetés UDS
2
Diagnosztika • Futás közbeni hibák – Kiolvasás – Törlése
• Belső jelek megfigyelése – Szenzor adatok – üzemmód
• Karbantartási munkák – Újrakalibrálás – Teszt üzemmód – Szenzorok / aktuátorok ellenőrzése 3
UDS • Unified Diagnsotic Service – ISO 14229 – Szabványos járműfedélzeti diagnosztikai rendszer
• Garázs diagnosztika – Diagnosztikai eszköz (kliens) – Diagnosztizálandó ECU (szerver)
• Hordozó protokoll – CAN – FlexRay – Ethernet (Diagnostics over IP – DoIP) 4
UDS – hálózati kapcsolat
5
UDS – hálózati kapcsolat
A diagnosztikai eszköz közvetlenül kapcsolódik a buszra. Bármelyik vezérlőegységet eléri
6
UDS – hálózati kapcsolat
A diagnosztikai eszköz egy átjárón keresztül kapcsolódik a járműhöz (az átjáró maga is egy vezérlőegység). Az átjárón keresztül éri el az ECU-kat 7
UDS – hálózati kapcsolat Akár több átjárón is keresztül mehet a kommunikáció. Itt például egy pótkocsis jármű lehetséges architektúráját látjuk. Az átjárók megfelelő programozásával elérhető, hogy minden egység megcímezhető legyen kívülről
8
UDS kérés/válasz •
Hálózati keret – kérés és válasz felépítése azonos
•
Elemei – SA – forrás cím (1 byte) – TA – cél cím (1 byte) – TA_type – cél cím típusa (1 byte) • Funkcionális – adott funkciót / ECU csoportot címez • Fizikai –egy adott ECU-t címez
– RA – távoli cím (1 byte) • Csak átjárón keresztüli kommunikáció esetén, a TA-ba helyettesíti az árjáró
– SI – Service Identifier – szolgáltatás azonosító (1 byte) – SubFunction / Param1 – vagy alfunkció azonosító, vagy az első paraméter (1 byte) – Param 2..n – további paraméter byte-ok
9
Munkafolyam vezérlés • Session control – Többféle munkafolyamatot aktiválhat a kliens – Egyszerre egy aktív lehet – Változhat az elérhető szolgáltatások köre – A váltáshoz azonosítás szükséges • A diagnosztikai kliens címe alapján • Digitális aláírás / autentikáció alapján
– A munkafolyamat időzítési paramétereit is állíthatjuk 10
Munkafolyam vezérlés • Szabványos munkafolyamok – Alapértelmezett (defaultSession): a kezdeti állapot, normál járműüzem – Programozás (programingSession): a szerver programozására (új SW, új paraméterek) használható. Ha az úgynevezett bootloader (SW frissítő modul) fut, ebből csak reset kéréssel lehet kilépni – Kiterjesztett diagnosztika (extendedDiagnosticsSession): Ebben a módban minden diagnosztikai szolgáltatás elérhető – Biztonsági diagnosztika (safetySystemDiagnsticSession): minden, biztonsággal kapcsolatos diagnosztika elérhető
11
ECU Szoftver indulása
Boot Manager
Application
Bootloader
12
ECU Szoftver indulása
Boot Manager
A mikrokontroller reset vagy táp elvétel miatt újraindul Application
Bootloader
13
ECU Szoftver indulása
Boot Manager
A boot manager egy egyszerű logikát tartalmaz Application
Bootloader
• ellenőrzi a többi SW jelenlétét (CRC) • ellenőrzi, van-e boot target (cél alkalmazás) beállítva • ezek alapján dönti el, melyik alkalmazást indítsa 14
ECU Szoftver indulása Az alkalmazás valósítja meg a vezérlőegység normál funkcionalitását. Ha UDS-en reset-et kérnek, végrehajtja. Be tudja állítani, hogy a cél alkalmazás Boot Manager reset után a bootloader legyen.
Application
Bootloader
15
ECU Szoftver indulása A bootloader képes egy új SW csomagot fogadni a hálózaton keresztül, és beírni a flash-be. UDS reset kérés után vissza tud térni alkalmazás módba (a megfelelő boot target kiválasztásával). Boot Manager
Application
Bootloader
16
ECU Reset szolgáltatás • Azonosító 0x11 • A vezérlőegység újraindítására szolgál • Több alfunkció – hardReset – hardveres reset kérés – keyOnOffReset – a gyújtás elvételével és visszaadásával egenértékű rest – softReset – az alkalmazás újraindítása (ha lehetséges)
• Ezután a kérés után a vezérlőegységnek időre van szüksége a kommunikáció újraindításához 17
SecurityAccess • Azonosító 0x27 • Rejtjelezési és azonosítási funkciók – Bizonyos műveletek elvégzése jogosultsághoz köthető • Funkciók engedélyezése • Szoftverfrissítés • Jármű azonosító változtatása
– Különböző digitális aláírási és/vagy rejtjelezési algoritmusok segítségével azonosítjuk a diagnosztikai eszközt 18
SecurityAccess • requestSeed – egy véletlen számokból álló tömböt kér – Challange – ezt kell átalakítani az algoritmusnak megfelelően (pl. aláírás) – Az ECU küldi
• sendKey – a seed-ből számított hozzáférési kulcs – A diagnosztikai kliens küldi – Az ECU ellenőrzi, ha rendben van, akkor azonosította a klienst
• Több szintű hozzáférés lehet (más-más algoritmus, kulcs, stb…) – A requestSeed és sendKey alfunkció azonosítói jelölik
19
CommunicationControl • Azonosító 0x28 • A vezérlőegység kommunikációját lehet befolyásolni – Bizonyos keretek küldését engedélyezi/tiltja le
• Alfunkciók – – – –
enablerxAndTx – minden kommunikáció megy enableRxAndDisableTx – csak fogadás disableRxAndEnableTx – csak küldés disableRxAndTx – minden kommunikáció leáll
• Paraméter – Üzenettípus – (normál, hálózat menedzsment, mindkettő) • Szűkíti a parancs hatókörét 20
TesterPresent • Azonosító 0x3e • Jelzi a vezérlőegységnek, hogy a teszter még jelen van – Megelőzi a munkafolyam időtúllépését – Fenntartja az aktív diagnosztikákat – Megelőzi, hogy a vezérlőegységek alapállapotba álljanak
• Egyetlen al-funkció – Egyetlen opció: elnyomható a válasz (hogy ne terhelje a kommunikációs csatornát) 21
AccessTimingParameter • Azonosító 0x83 • A kommunikáció időzítési paramétereinek módosítására szolgál – readExtendedTimingParameterSet – a támogatott időzítési paraméterek lekérdezése – setTimingParametersToDefaultValues – visszaállítja az összes időzítést alapértelmezett értékekre – readCurrentlyActiveTimingParameters – az aktuális időzítési paramétereket kérdezi le – setTimingParametersToGivenValues – a teszter által megadott paramétereket állítja be
• A konkrét paraméterek a transzport rétegtől függenek 22
SecureDataTransmission • Azonosító 0x84 • Rejtjelezett csatornát alakít ki a további kommunikációhoz – A teljes kommunikáció rejtjelezhető – A normál kéréseket rejtjelezve ennek a szolgáltatásnak kell címezni – Belül kicsomagolja a kérést, elvégzi a kért műveletet, majd a választ rejtjelezi és visszaküldi – Kritikus kommunikáció során használják • Példa: kilométer számláló állítása 23
ControlDTCSetting • Azonosító 0x85 • Engedélyezi vagy letiltja a hibaesemények (DTC – Diagnostic Trouble Code) mentését • A következő újraindulásig érvényes – El lehet nyomni a javítás közben keletkező hibákat
• Alfunkciók – On – DTC mentés bekapcsolva – Off – DTC mentés kikapcsolva
• Paraméterek – Opcionálisan megadható, ha csak bizonyos DTC-ket kívánunk elnyomni 24
ResponseOnEvent • • •
Azonosító 0x86 Utasítja a cél ECU-t, hogy bizonyos események bekövetkeztekor küldjön válasz üzeneteket Alfunkciók – stopResponseOnEvent – a funkció kikapcsolása – onDTCStatusChange – a megadott maszkot kielégítő DTC-k állapotának változása esetén üzenjen – onTimerInterrupt – periodikus időzítési eseményre üzenjen – onChangeOfDataIdentifier – egy megadott belső adat változása esetén küld értesítést – reportActivatedEvents – visszaadja az összes aktivált eseményt – startResponseOnEvent – ettől az üzenettől fogva aktiválódik a funkció – clearResponseOnEvent – kitörli az aktivált eseményeket – onComparionsOfValues – ha a megadott adatelem értéke egyezik a kérésben elküldöttel, értesítést küld
•
A szolgáltatáshoz indításkor egy időablakot is definiálni kell, melynek lejárta után deaktiválódik a reponseOnEvent szolgáltatás
25
LinkControl • Azonosító 0x87 • A kommunikációs hálózat sebességét lehet vele szabályozni. – Első lépésben ellenőrizni kell az új sebesség elérhetőségét – Második lépésben lehet kérni a váltást
• Alfunkciók – verifyBaudrateTransitionWithFixedBaudrate – a megadott sebesség elérhetőségét ellenőrzi – verifyBaudrateTransitionWithSpecificBaudrate – előre meghatározott (low, medium, high) sebesség elérhetőségét ellenőrzi – transitionBaudrate – átáll az előzőleg ellenőrzött sebességre 26
ReadDataByIdentifier • Azonosító 0x22 • Egy adatelem értékének olvasása azonosító alapján – Az azonosító 16 bites – Az azonosítók egy része szabványos • Pl. járműazonosító, szoftver verzió
– Lehet saját azonosítókat is definiálni
• Egy kérésben egymás után több azonosító is megadható – A válasz sorban mindegyik adatértéket tartalmazni fogja
27
ReadMemoryByAddress • Azonosító 0x23 • A memória egy részének kiolvasása – Kezdőcím, és – Hossz alapján
• Kérés – Megadja a cím és hossz formátumát – Megadja a címet – Megadja a hosszt
• Válasz – A kért memóriatartalom 28
ReadScalingDataByIdentifier • Azonosító 0x24 • Adott azonosítóval rendelkező adatelem skálázását kérdezi le – Tárolási formátum (egész, BCD, ASCII, …) – Mértékegység – Átszámítási formula
• A diagnosztikai teszter ezt felhasználhatja a megjelenítéshez 29
ReadDataByPeriodicIdentifier • Azonosító 0x2A • Adott azonosítóval rendelkező adatelem periodikus lekérdezése – Itt periodikus adat azonosítókat kell használni (1 byte) – Több adat is felsorolható – A periódus néhány fokozatban állítható • • • •
Lassú Közepes Gyors ütem Illetve küldés leállítása 30
DynamicallyDefineDataIdentifier • Azonosító 0x2C • Új adat azonosítót hoz létre – Meglévő azonosítókból – Cím + hossz formában megadott memória tartományokból
• Felhasználható – ReadDataByIdentifier – ReadDataByPeriodicIdentifier szolgáltatásokban
• Alfunkciók – defineByIdentifier – több adat azonosítóból egy újat – defineByMemoryAddress – több memória tartományból egy újat – clearDynamicallyDefinedDataIdentifier – előzőleg létrehozott azonosító törlése
31
WriteDataByIdentifier • Azonosító 0x2E • Egy azonosítóval rendelkező adatelem értékének megváltoztatása – Újrakalibrálás – Jármű azonosító beállítás – Opciók beállítása
• Kérés – Adat azonosító – Adat érték (az azonosító által meghatározott hosszban) 32
WriteMemoryByAddress • Azonosító 0x3D • A memória egy részének átírása – Kezdőcím, és – Hossz alapján – Hibakeresés, vagy hibainjektálás esetén hasznos
• Kérés – – – –
Megadja a cím és hossz formátumát Megadja a címet Megadja a hosszt Megadja a memória új tartalmát 33
Diagnostic Trouble Code - DTC •
Egy hibajelentés a hibanaplóban – Azonosító adatok • Hiba ID (3 byte) • Aktuális státusz (bitmező) – – – – – – – –
Hiba Hiba az aktuális gyújtási ciklusban Függő hiba Igazolt hiba (elég alkalommal detektáljuk) Utolsó törlés óta nem tesztelt Utolsó törlés óta újból hiba történt Ebben a ciklusban nem teszteltük Hibajelzés kérés (warning lamp)
• Hibaszámláló (hányszor történt)
– Kiegészítő adatok • SnaphshotRecord • DTCExtendedDataRecord – Alkalmazás és hiba specifikus kiegészítő információk
34
ClearDiagnosticInformation • Azonosító 0x14 • DTC-k törlése – Lehetnek permanens DTC-k, melyeket sosem Azonosító 0x14 lehet törölni
• Kérés – Megad egy groupOfDTC paramétert, ami egy DTC csoportot azonosít • Ezekre érvényes a törlés 35
ReadDTCInformation • • •
Azonosító 0x19 DTC-kkel kapcsolatos információk lekérdezése Alfunkciók (nem teljes) – reportNumberOfDTCByStatusMask – adott státuszú DTC-k számának lekérdezése – reportByStatusMask– adott státuszú DTC-k azonosítóinak lekérdezése – reportNumberOfMirrorMemoryDTCByStatusMask – a RAM-ban tárolt DTC-k száma státusz alapján – reportMirrorMemoryDTCByStatusMask – a RAM-ban tárolt DTC-k azonosítói státusz alapján – reportNumberOfEmissionsRelatedOBDDTCByStatusMask – emisszióval kapcsolatos, adott státuszú DTC-k számának lekérése – reportEmissionsRelatedOBDDTCByStatusMask – emisszióval kapcsolatos, adott státuszú DTC-k azonosítóinak lekérése – reportDTCSnapshotRecordByDTCNumber – adott DTC részletes adatainak lekérése – reportDTCExtendedDataRecordByDTCNumber – alkalmazás specifikus DTC adatok lekérése – reportFirstTestFailedDTC – az első hibás DTC-t adja vissza
36
InputOutputControlByIdentifier • Azonosító 0x2F • A vezérlőegység bemeneteinek és kimeneteinek vagy belső állapotváltozóinak vezérlését szolgálja – A vonalat adat azonosítóval hivatkozzuk – A vezérlés átvételére több opció van • • • •
returnControlToECU – vezérlés normál módba resetToDefault – alapállapotba hozás freezeCurrentState – aktuális állapot befagyasztása shortTermAdjustment – a megadott értékre kell állítani a lábat 37
RoutineControl • •
Azonosító 0x31 A vezérlőegységen megvalósított rutinok – Elindítását – Leállítását – Eredményének lekérdezését teszi lehetővé
•
Rutinok – – – – –
•
Azonosítóval rendelkeznek (2 byte) Az ECU-n elvégzendő tevékenység Általában egy függvényként implementálva Lehet hosszan futó is Aszinkron működés
Alfunkciók – startRoutine – rutin elindítása – stopRoutine – rutin leállítása – requestRoutineResults – az utolsó futás eredményeinek lekérdezése
38
RequestDownload • Azonosító 0x34 • Jelzi a vezérlőegységnek, hogy a kliens letöltést kíván kezdeményezni – Adatátvitel a kliensről a vezérlőegységre
• A kérés tartalmazza – A letöltés kezdő címét – És hosszát 39
RequestUpload • Azonosító 0x35 • Jelzi a vezérlőegységnek, hogy a kliens feltöltést kíván kezdeményezni – Adatátvitel a vezérlőegységről a kliensre
• A kérés tartalmazza – A letöltés kezdő címét – És hosszát 40
TransferData • Azonosító 0x36 • Adatátvitelt valósít meg – Az irány az előzőleg kiadott requestUpload vagy requestDownload parancstól függ
• Letöltés – A kérés tartalmazza az adatokat
• Feltöltés – A válasz tartalmazza az adatokat
• A csomagokat számláló is védi, mivel több kérés lehet szükséges a teljes letöltéshez/feltöltéshez 41
RequestTransferExit • Azonosító 0x37 • Leállítja az adatátvitelt a kliens és a szerver között • A kérés tartalmazza – A letöltés kezdő címét – És hosszát
42
Diagnosztika és nyomkövetés OBD
43
OBD-II • On-Board Diagnostics • A szabványcsaládot az 1990-es évektől fejlesztik – Az USA-ból indult – 1991-ben Kaliforniában lett kötelező a fedélzeti diagnosztikai rendszer az emisszió ellenőrzésére
• Főleg a károsanyag kibocsátással kapcsolatos funkciókra fókuszál
44
Hordozó protokollok • SAE J1850 PWM (41.6kB/s) • SAE J1850 VPW (variable pulse width) (10.4/41.6kB/s) • ISO 9141-2 (aszinkron soros) (10.4kB/s) • ISO 14230 (Keyword Protocol 2000) (1.2 – 10.4 kB/s) • ISO 15765 CAN (250/500 kB/s) – Ma ez a standard
• Közös csatlakozó – Más lábakat használnak 45
OBD protokoll • Hozzáférési módok – – – – – – – –
Aktuális érték Mentett érték Tárolt DTC TDC és mentett értékek törlése Teszt eredmények lekérése Fedélzeti berendezés vezérlése Járműinformáció Permanens DTC-k lekérése
• Ezek a módok az UDS szolgáltatásoknak felelnek meg 46
OBD protokoll • Paraméter értékek – ID alapján – Sok paraméter szabványosított ID-t kapott • Pl. motor hűtővíz hőmérséklet, fordulatszám, …
– Lehet saját ID-ket is felvenni – Nem kötelező az összes szabványosat megvalósítani 47
OBD előnyei • Minden fontos paraméter és DTC kód szabványos – Márka-független diagnosztika lehetséges – Sok elérhető eszköz
• Elterjedt – Régóta használják a járművekben
48
OBD hátrányai • Emisszióval kapcsolatos adatokra fókuszál – Ez az eredeti motiváció – Az UDS többféle szolgáltatást ismer
• Túl sokféle fizikai réteg – Újabban főleg CAN
• Nincs letöltési lehetőség – SW frissítés OBD-n keresztül nem lehetséges 49