Unified Diagnostic Services

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Unified Diagnostic Services (UDS) ist ein Kommunikationsprotokoll der Automobilelektronik, welches in der ISO 14229 spezifiziert ist. Entstanden ist es aus der ISO 14230-3 (KWP2000), der ISO 15765 (Diagnostic communication over Controller Area Network (DoCAN)).

Die Idee des Protokolls ist es, alle in einem Fahrzeug verbauten Steuergeräte mit Hilfe von UDS kontaktieren und warten zu können. Dazu haben moderne Fahrzeuge eine Diagnoseschnittstelle, die es ermöglicht, einen Computer (Client), welcher in diesem Zusammenhang als Tester bezeichnet wird, an das Bus-System des Fahrzeugs anzuschließen. Somit können die in UDS definierten Botschaften an die Steuergeräte gesendet werden, welche die vorgegebenen UDS-Dienste bereitstellen müssen. Damit ist es zum Beispiel möglich, den Fehlerspeicher der einzelnen Steuergeräte abzufragen oder diese mit einer neuen Firmware zu aktualisieren.

Transportprotokoll[Bearbeiten]

Da die in Fahrzeugen verwendeten Netzwerke keine Botschaften dieser Größe erlauben, müssen Transportprotokolle eingesetzt werden, die die Nachrichten auf mehrere Botschaften verteilen und beim Empfänger wieder zusammenzusetzen. Beim sehr häufig verwendeten CAN-Bus, mit einer maximalen Botschaftsgröße von nur 8 Byte, wird zum Beispiel das ISO-Transportprotokoll (ISO 15765-2) verwendet.

Ein anderes Transportprotokoll für UDS ist DoIP nach der ISO-Norm 13400-2.

Dienste[Bearbeiten]

Jeder Dienst muss durch einen Aufruf vom Client gestartet werden und ist erst beendet, wenn das Steuergerät durch eine positive oder negative Antwort die Anfrage beantwortet hat, abhängig von der Adressierungsart (funktional oder physikalisch). Damit auch bei länger dauernden Diensten der Client eine Bestätigung bekommt, kann das Steuergerät in regelmäßigen Abständen eine vorläufige Antwort (requestCorrectlyReceived-ResponsePending) senden. Diese bestätigt den Erhalt der Anfrage, teilt aber mit, dass die Ausführung noch andauert. Aber auch in diesem Fall muss der Dienst durch eine abschließende Antwort noch bestätigt werden.

UDS bietet zusätzlich die Möglichkeit, auf eine Antwort vom Steuergerät zu verzichten. Dazu ist in jeder UDS Botschaft ein extra Bit vorgesehen. Ist dieses Bit gesetzt, wird keine Antwort auf einen erfolgreich durchgeführten Dienst zurückgesendet. Nur im Fehlerfall gibt es weiterhin eine Rückmeldung.

Bei funktionaler Adressierung müssen bestimmte negative Antworten von den Servern unterdrückt werden.

Funktionsgruppe Request SID Response SID Service Beschreibung
Diagnostic and Communications Management $10 $50 Diagnostic Session Control UDS kennt verschiedene Betriebs-Sessions, in die man mit dem Dienst „DiagnosticSessionControl“ wechseln kann. Je nachdem, welche Session gerade aktiv ist, sind unterschiedliche Dienste freigeschaltet. Beim Start befindet sich das Steuergerät standardmäßig in der „Default Session“. Daneben sind weitere Sessions definiert, die aber je nach Art des Gerätes nicht implementiert zu werden brauchen:
  • In der „Programming Session“ sind die Funktionen zum Hochladen von Software in das Steuergerät freigeschaltet.
  • Die „Erweiterte Diagnose-Session“ kann verwendet werden, um zusätzliche Diagnosefunktionen freizuschalten, wie die Justage von Sensoren.
  • Die „Sicherheits-Diagnose-Session“ schaltet alle sicherheitskritischen Diagnosefunktionen ein, wie zum Beispiel Airbag-Tests.

Zusätzlich gibt es einen reservierten Bereich, in dem Fahrzeughersteller und Fahrzeugzulieferer eigene Sessions definieren können.

$11 $51 ECU Reset Der Dienst „ECU Reset“ dient zum Neustarten des Steuergeräts (ECU). Hierbei kann, abhängig von der Steuergeräte-Hardware und Implementierung, zwischen verschiedenen Formen des Neustarts gewählt werden, beispielsweise:
  • Der „Hard Reset“ simuliert eine Abschaltung der Spannungsversorgung.
  • Der „Schlüssel-Aus-An-Reset“ simuliert das Ab- und Anschalten der Zündung mit dem Schlüssel.
  • Der „Soft Reset“ ermöglicht eine Initialisierung bestimmter Programmanteile und deren Speicherstrukturen

Auch hier gibt es einen reservierten Bereich, in dem Fahrzeughersteller und Fahrzeugzulieferer eigene Resets definieren können.

$27 $67 Security Access Damit nicht alle Funktionen von jedem durchgeführt werden können, gibt es einen Dienst, der eine Sichheitsabfrage durchführt. Erst durch Ausführung dieses Dienstes werden weitere sicherheitskritische Dienste freigeschaltet. Dazu wird vom Steuergerät ein sog. „Seed“ generiert und an den Client gesendet. Dieser kann daraus einen Schlüssel berechnen, den er zurücksendet und damit die benötigten Funktionen freischaltet.
$28 $68 Communication Control Mit diesem Dienst kann sowohl das Versenden als auch das Empfangen von Botschaften im Steuergerät abgeschaltet werden.
$3E $7E Tester Present Wenn eine Zeit lang keine Kommunikation mit dem Client mehr stattgefunden hat, verlässt das Steuergerät automatisch die aktuelle Session und kehrt zur „Default Session“ zurück. Deshalb gibt es einen extra Service, der nur dazu dient, dem Gerät zu signalisieren, dass der Client immer noch anwesend ist. Der Client kann dabei bestimmen, ob das Steuergerät auf den Dienst antworten soll oder nicht.
$83 $C3 Access Timing Parameter Bei der Kommunikation zwischen den Steuergeräten und dem Client sind bestimmte Zeiten einzuhalten. Werden diese überschritten, ohne dass eine Botschaft versendet wird, muss davon ausgegangen werden, dass die Verbindung unterbrochen wurde. Diese Zeiten können abgefragt und verändert werden.
$84 $C4 Secured Data Transmission
$85 $C5 Control DTC Settings Es ist möglich, die Erkennung einzelner oder aller Fehler auf einmal ab- und wieder anzuschalten. Dies ist wichtig, wenn Diagnosetätigkeiten im Auto vorgenommen werden, die ein anomales Verhalten einzelner Geräte hervorrufen können. Wenn zum Beispiel während einer Software-Aktualisierung ein Gerät nicht mehr auf Anfragen antworten kann, sollen die restlichen Geräte im Fahrzeug dies nicht als Fehler speichern.
$86 $C6 Response On Event Dieser Service erlaubt es, dem Server mitzuteilen, dass er die Übertragung von Antworten auf ein bestimmten Ereignis starten oder stoppen soll. Darüber hinaus ermöglicht er es, automatisch einen Diagnosedienst auf dem Server auszuführen, wenn ein bestimmtes Ereignis eintritt. Der Client legt dabei das Ereignis und den auszuführenden Dienst fest.
$87 $C7 Link Control Der Service Link Control wird zum Einstellen der Baudrate des Diagnosezuganges verwendet. Er ist meist nur bei zentralen Gateways implementiert. Normale Steuergeräte besitzen diesen Dienst in der Regel nicht.
Data Transmission $22 $62 Read Data By Identifier Mit diesem Service ist es möglich, einen oder mehrere Werte von einem Steuergerät abzurufen. Dabei kann es sich um Informationen aller Art und unterschiedlicher Länge wie z. B. die Bauteilenummer oder Software-Version handeln. Auch dynamische Werte, wie der augenblickliche Zustand des Sensors können so abgefragt werden. Dazu erhalten die Werte einen Identifier zwischen 0 und 65535. Dies hat den Vorteil, dass die Werte auch dann noch abgerufen werden können, wenn sich ihre Position im Speicher geändert hat, da ihr Identifier gleich bleibt.
$23 $63 Read Memory By Address Im Unterschied zum Service „Read Data By Identifier“, bei dem über den Identifier der Inhalt eines Messwertes, einer Kalibriervariable, einer Zeitmarke ("time stamp") und Ähnlichem vom Tester gelesen wird, erfolgt hier der Zugriff auf den Speicher durch Angabe der physikalischen Speicheradresse.

Dazu muss dem verwendeten Programm natürlich die Adresse des Objekts bekannt sein. Dies geschieht normalerweise automatisiert durch das Importieren speziell für diesen Zweck generierter Dateien (zum Beispiel ".a2l"-Dateien) im verwendeten Dienstprogramm. Natürlich kann für Testzwecke die Speicheradresse auch durch einfaches Nachsehen im "Map File" des Linkers nach dem Erstellen der Software herausgefunden werden.

$24 $64 Read Scaling Data By Identifier
$2A $6A Read Data By Periodic Identifier Mit diesem Dienst werden Werte von einem Steuergerät periodisch gesendet. Die Werte, die gesendet werden sollen, müssen zu erst mit dem Dienst "Dynamically Define Data Identifier" definiert werden.
$2C $6C Dynamically Define Data Identifier Dieser Service bietet die Möglichkeit, aus einem für ein Gerät fix festgelegten Data Identifier(DID) Pool, einen weiteren Data Identifier zu konfigurieren. Dieser ist meist eine Kombination aus Teilen von verschiedenen DIDs oder einfach eine Verkettung kompletter DIDs. Damit lassen sich nun zum Beispiel für Testzwecke ursprünglich getrennte Datenobjekte mit einer einzigen Anforderung ("request") auslesen.

Die angefragten Daten können auf folgende Weise konfiguriert bzw. gruppiert werden:

  • Quell-DID, Position, Länge (in Bytes) ? Sub-Function Byte: defineByIdentifier
  • Speicheradresse, Länge (in Bytes)  ? Sub-Function Byte: defineByMemoryAddress
  • Kombinationen der beiden oberen Methoden durch mehrere Requests.

Dieser Service wird sessionabhängig teilweise durch den Einsatz des sogenannten „Security Access“-Features vor unberechtigter Benutzung geschützt.

$2E $6E Write Data By Identifier Mit dem gleichen Identifier können die Werte auch geändert werden. Neben dem Identifier wird dazu der neue Wert mitgesendet. Dieser wird vom Steuergerät auf Länge und Format geprüft und dann abgespeichert.
$3D $7D Write Memory By Address Für das Schreiben kleinerer Datenmengen direkt in den EEPROM der ECU oder zum Löschen des gesamten Speichers kann der Dienst Write Memory By Address verwendet werden.
Stored Data Transmission $14 $54 Clear Diagnostic Information Neben dem Löschen des gesamten Fehlerspeichers ist es auch möglich, nur eine bestimmte Gruppe von Fehlern zu löschen. So kann man sich darauf beschränken, nur Fehler, die zum Beispiel den Bereich Antriebsstrang betreffen, aus dem Fehlerspeicher zu entfernen.
$19 $59 Read DTC Information DTC steht für „Diagnostic trouble codes“. Dabei handelt es sich um Einträge im Fehlerspeicher. Jeder vom Steuergerät erkannte Fehler wird mit einem eigenen Code im Fehlerspeicher abgelegt und kann über UDS jederzeit gelesen werden. Dabei werden neben dem Fehler zusätzliche Informationen abgespeichert, die ebenfalls gelesen werden können. Zum Beispiel werden typischerweise Häufigkeit und Zeitpunkt des Fehlers mit abgespeichert.
Input/Output Control $2F $6F Input Output Control By Identifier Dieser Service ermöglicht ein externes Eingreifen auf systeminterne/externe Signale über die Diagnoseschnittstelle. Zum Beispiel können damit Ausgänge geschaltet werden und Eingangssignale (zum Beispiel Schalter) simuliert werden.

Durch Angabe eines Data Identifiers können Ausgänge bzw. Eingänge in Gruppen (zum Beispiel digitale Eingänge vs. analoge Eingänge) zusammengefasst werden.

Durch Angabe eines sogenannten OptionBytes können zusätzliche Bedingungen für einen Request angegeben werden, folgende Werte sind spezifiziert:

ReturnControlToECU

Dieser OptionByte-Wert teilt dem Gerät mit, dass es nach dem Eingreifen des Testers wieder die Kontrolle über die angeführten Signale übernehmen soll.

ResetToDefault

Über diesen Wert fordert der Tester das Zurücksetzen von Signalen auf den systeminternen Default-Wert.

FreezeCurrentState

Dieser Wert fordert das Gerät auf, den aktuellen Signalwert einzufrieren.

ShortTermAdjustment

Bei einem „ShortTermAdjustment“ Request kann durch Angabe einer sogenannten „Activation Time“ die Lebensdauer eines geforderten Signalverhaltens bestimmt werden. Nach Ablauf der Activation Time geht die Kontrolle wieder an das Steuergerät zurück.

Remote Activation of Routine $31 $71 Routine Control Mit dem Routine Control Service können Dienste aller Art ausgeführt werden. Dazu gibt es drei verschiedene Botschaftstypen:
  • Mit der Start-Botschaft kann ein Dienst angestoßen werden. Dabei kann frei definiert werden, ob der Dienst mit der positiven Antwort abgeschlossen ist oder ob damit nur der Beginn der Ausführung bestätigt wird.
  • Mit der Stop-Botschaft kann ein laufender Dienst jederzeit unterbrochen werden.
  • Als dritte Möglichkeit gibt es eine Botschaft zum Abfragen der Resultate des Dienstes.

Der Start- und der Stop-Botschaft können Parameter mitgegeben werden. Dadurch ist es möglich, jeden erdenklichen projektspezifischen Dienst zu implementieren.

Upload/Download $34 $74 Request Download Das Überspielen neuer Software oder anderer Daten ins Steuergerät wird mit dem Dienst „Request Download“ eingeleitet. Dabei wird der Speicherort und die Größe der Daten angegeben. Im Gegenzug gibt das Steuergerät an, wie groß die Datenpakete sein dürfen, mit der die Software übertragen wird.
$35 $75 Request Upload Der Dienst „Request Upload“ ist fast identisch zum Dienst „Request Download“. Mit diesem Dienst wird das Herunterladen der Software vom Steuergerät zurück zum Tester eingeleitet. Dazu werden der Speicherort und die Größe angegeben. Auch hier wird vom Tester die Größe der Datenblöcke angegeben.
$36 $76 Transfer Data Für die eigentliche Übertragung von Daten gibt es extra den Dienst „Transfer Data“. Dieser Dienst wird sowohl für das Hochladen als auch für das Herunterladen von Daten verwendet. Die Übertragungsrichtung wird dabei vorher festgelegt durch die Dienste „Request Download“ oder „Request Upload“. Dabei dürfen immer nur maximal so viele Daten auf einmal übertragen werden, wie in diesen Diensten vorher festgelegt wurde. Wenn der Datensatz größer ist, muss der „Transfer Data“-Dienst mehrmals hintereinander verwendet werden, bis alle Daten angekommen sind.
$37 $77 Request Transfer Exit Abgeschlossen wird eine Datenübertragung immer mit dem Dienst „Transfer Exit“. Der Dienst dient noch mal zum Abgleich zwischen Steuergerät und dem Tester. Wird dieser Dienst ausgeführt, obwohl die Datenmenge, die im Dienst „Request Download“ oder „Request Upload“ festgelegt wurde, noch nicht übertragen wurde, dann kann das Steuergerät dies mit einer negativen Antwort anzeigen.

Literatur[Bearbeiten]

  • Werner Zimmermann und Ralf Schmidgall: Bussysteme in der Fahrzeugtechnik – Protokolle, Standards und Softwarearchitektur. 5. Auflage, Springer Vieweg, 2014, ISBN 978-3-658-02418-5.
  • Christoph Marscholik, Peter Subke: Datenkommunikation im Automobil. Hüthig, ISBN 978-3-7785-2969-0