Unified Diagnostic Services (UDS) to protokół komunikacji diagnostycznej wykorzystywany do wymiany danych ze sterownikami elektronicznymi (ECU) w pojazdach, bez konieczności ich demontażu.

Protokół UDS jest zdefiniowany w normie ISO 14229 i obejmuje warstwy 5–7 modelu OSI (warstwę sesji, prezentacji i aplikacji). Określa on funkcje diagnostyczne, sposób interpretacji danych oraz zasady wymiany komunikatów między uczestnikami komunikacji, nie narzucając przy tym konkretnej warstwy transportowej ani fizycznej. Dzięki temu UDS może być stosowany w połączeniu z różnymi sieciami komunikacyjnymi, takimi jak CAN, LIN, Ethernet, K-Line czy FlexRay.

Typowa komunikacja z użyciem UDS obejmuje urządzenie diagnostyczne, które podłączone jest do pojazdu przez port OBD-II, oraz sterowniki znajdujące się w pojeździe.

Model komunikacji UDS wykorzystuje model klient-Serwer, w którym role uczestników komunikacji są następujące:

Klient – urządzenie diagnostyczne, nazywane również testerem diagnostycznym Serwer – sterownik elektroniczny pojazdu, określany jako (Electronic Control Unit) Komunikacja może odbywać się z użyciem dwóch sposobów adresowania:

Adresowanie fizyczne (ang. physical) – komunikacja bezpośrednia pomiędzy klientem a jednym, konkretnym serwerem Adresowanie funkcjonalne (ang. functional) – komunikacja skierowana do wielu serwerów jednocześnie (zazwyczaj wszystkich sterowników w pojeździe)

Serwisy diagnostyczne Serwisy diagnostyczne to usługi oferowane przez serwer. Każda z nich charakteryzuje się unikalną wartością SID (Service Identifier) i RSID (Response Service Identifier). + Serwisy DiagnostyczneWartość SIDWartość RSIDNazwa0x100x50DiagnosticSessionControl0x110x51ECUReset0x140x54ClearDiagnosticInformation0x190x59ReadDTCInformation0x220x62ReadDataByIdentifier0x230x63ReadMemoryByAddress0x240x64ReadScalingDataByIdentifier0x270x67SecurityAccess0x280x68CommunicationControl0x290x69Authentication0x2A0x6AReadDataByPeriodicIdentifier0x2C0x6CDynamicallyDefineDataIdentifier0x2E0x6EWriteDataByIdentifier0x2F0x6FInputOutputControlByIdentifier0x310x71RoutineControl0x340x74RequestDownload0x350x75RequestUpload0x360x76TransferData0x370x77RequestTransferExit0x380x78RequestFileTransfer0x3D0x7DWriteMemoryByAddress0x3E0x7ETesterPresent0x830xC3AccessTimingParameter (Wycofany w ISO 14229-1:2020)0x840xC4SecuredDataTransmission0x850xC5ControlDTCSetting0x860xC6ResponseOnEvent0x870xC7LinkControl

Wiadomości diagnostyczne W komunikacji UDS wiadomości wysyłane przez klienta nazywane są zapytaniami diagnostycznymi (lub żądaniami), natomiast wiadomości odsyłane przez serwer to odpowiedzi diagnostyczne.

Zapytanie diagnostyczne Każde zapytanie diagnostyczne rozpoczyna się od wartości SID (Service Identifier), która określa żądany serwis diagnostyczny.

Odpowiedź diagnostyczna W odpowiedzi na zapytanie klienta serwer może:

odesłać pozytywną odpowiedź odesłać negatywną odpowiedź nie wysłać żadnej odpowiedzi (np. gdy serwer nie obsługuje zapytania wysłanego z użyciem funkcjonalnego adresowania)

Pozytywna odpowiedź rozpoczyna się od wartości RSID (Response SID), gdzie:

RSID = SID + 0x40 + Format Negatywnej OdpowiedziBajtWartośćZnaczenie#10x7FWartość RSID charakterystyczna dla negatywnej odpowiedzi.#2SIDPowtórzona wartość SID zapytania, którego dotyczy odpowiedź.#3NRCKod przyczyny odrzucenia zapytania (Negative Response Code).

Kody NRC Kody negatywnej odpowiedzi (Negative Response Codes, NRC) znajdują się w trzecim bajcie negatywnej odpowiedzi i wskazują powód odrzucenia zapytania diagnostycznego. + Lista kodów NRCWartośćNazwa0x10generalReject0x11serviceNotSupported0x12SubFunctionNotSupported0x13incorrectMessageLengthOrInvalidFormat0x14responseTooLong0x21busyRepeatRequest0x22conditionsNotCorrect0x24requestSequenceError0x25noResponseFromSubnetComponent0x26FailurePreventsExecutionOfRequestedAction0x31requestOutOfRange0x33securityAccessDenied0x34authenticationRequired0x35invalidKey0x36exceedNumberOfAttempts0x37requiredTimeDelayNotExpired0x38secureDataTransmissionRequired0x39secureDataTransmissionNotAllowed0x3AsecureDataVerificationFailed0x50Certificate verification failed, Invalid Time Period0x51Certificate verification failed, Invalid Signature0x52Certificate verification failed, Invalid Chain of Trust0x53Certificate verification failed, Invalid Type0x54Certificate verification failed, Invalid Format0x55Certificate verification failed, Invalid Content0x56Certificate verification failed, Invalid Scope0x57 Certificate verification failed, Invalid Certificate (revoked)0x58Ownership verification failed0x59Challenge calculation failed0x5ASetting Access Rights failed0x5BSession key creation/derivation failed0x5CConfiguration data usage failed0x5DDeAuthentication failed0x70uploadDownloadNotAccepted0x71transferDataSuspended0x72generalProgrammingFailure0x73wrongBlockSequenceCounter0x78requestCorrectlyReceived-ResponsePending0x7ESubFunctionNotSupportedInActiveSession0x7FserviceNotSupportedInActiveSession0x81rpmTooHigh0x82rpmTooLow0x83engineIsRunning0x84engineIsNotRunning0x85engineRunTimeTooLow0x86temperatureTooHigh0x87temperatureTooLow0x88vehicleSpeedTooHigh0x89vehicleSpeedTooLow0x8Athrottle/PedalTooHigh0x8Bthrottle/PedalTooLow0x8CtransmissionRangeNotInNeutral0x8DtransmissionRangeNotInGear0x8FbrakeSwitch(es)NotClosed (Brake Pedal not pressed or not applied)0x90shifterLeverNotInPark0x91torqueConverterClutchLocked0x92voltageTooHigh0x93voltageTooLow0x94ResourceTemporarilyNotAvailable

Przypisy

Linki zewnętrzne Polski kurs video „Diagnostyka Samochodowa UDS” Ściągawka UDS Wytłumaczenie czym jest UDS Dokumentacja do protokołu UDS biblioteki py-uds

Kategoria:Protokoły sieciowe