12.4 Diagnostický Protokol UDS (Unified Diagnostic Services)
UDS (ISO14229) je aplikační protokol běžící na téměř všech ECU. Slouží ke kontrole stavu, rekonfiguraci, aktualizaci softwaru a řešení problémů v řídicích jednotkách.
Základní principy UDS
- Je to protokol postavený na architektuře request-response (klient-server).
- Typicky se k vozu připojuje přes OBD-II konektor (často pod volantem), kde se k tzv. Diagnostics CAN sběrnici obvykle připojujeme přes speciální piny. Většinou je tento port chráněn a připojen jen na Gateway.
- Každá ECU v autě poslouchá a odpovídá na jiných, specifických CAN ID.
- Zprávy běží většinou přes ISO-TP.
Běžné UDS služby (SID)
0x10– Diagnostic Session Control: Přepnutí do určité diagnostické relace (např. programovací nebo rozšířené).0x11– ECU Reset: Restart jednotky (na stole fajn, za jízdy raději ne).0x22/0x2E– Read / Write Data By ID: Čtení/zápis VIN kódu, sériových čísel nebo konfigurací.0x27– Security Access: Zabezpečuje přístup (více níže).0x36– Transfer Data: Slouží mj. k flashování nového firmwaru (SW update).0x3E– Tester Present: Udržuje diagnostickou relaci "naživu".
Security Access (0x27) - Zabezpečení na úrovni protokolu
Aby diagnostický nástroj mohl provádět nebezpečné operace (jako je programování), musí získat přístup od ECU. Tento mechanismus (Seed-Key) se obvykle skládá z následujících kroků:
- Klient pošle požadavek na Seed (výzvu).
- ECU vygeneruje a odešle zpět Seed.
- Klient matematicky vypočítá Key (odpověď) a zašle jej ECU.
- ECU provede ten samý výpočet, porovná jej a následně přístup buď udělí, nebo zamítne.
Odpovědi (Responses)
Pozitivní odpověď: Pokud ECU akceptuje požadavek, její Service ID (SID) v odpovědi bude rovno vyžádanému SID +
Např. požadavek na 0x10 bude mít kladnou odpověď začínající na 0x50.
Negativní odpověď (NRC): Pokud požadavek selže, ECU vrátí zprávu začínající bajtem
Např. 0x11 (Service not supported), 0x22 (Conditions not correct), 0x33 (Security access denied).
0x40.Např. požadavek na 0x10 bude mít kladnou odpověď začínající na 0x50.
Negativní odpověď (NRC): Pokud požadavek selže, ECU vrátí zprávu začínající bajtem
0x7F, následovanou původním SID a chybovým kódem (Negative Response Code).Např. 0x11 (Service not supported), 0x22 (Conditions not correct), 0x33 (Security access denied).