Fehlerspeicher
Anwendungsbeispiel: Fehlerspeicher (DTC-DOP, ENV-DATA-DESC)
Als Anwendungsbeispiele für komplexe Datenobjekte wollen wir das Auslesen des Fehlerspeichers betrachten. Das Auslesen des Fehlerspeichers ist immer zweistufig. Sie erinnern sich: Der Inhalt des Fehlerspeichers besteht aus der Anzahl der Fehler, aus einem Fehlercode für jeden einzelnen Fehler (DTC = Diagnostic-Trouble-Code) und einem Statuts. Der Status beinhaltet, ob der Fehler aktiv ist, ob es sich um einen sporadischen oder einen permanenten Fehler. Weiterhin besteht der Fehlerspeicher aus den Umgebungsdaten, den sogenannten Freeze-FrameS. Dies sind Messwerte, wie beispielsweise die Motordrehzahl zum Zeitpunkt als der Fehler auftrat.
Um diese Fehlerspeichereinträge zu beschreiben stellt ODX die DTC-DOPs und die Environmental-Data-Description (ENV-DATA-DESC) bereit. In der Abbildung ist ein typischer Ablauf von Diagnosebotschaften abgebildet. Er beginnt mit dem Auslesen des Fehlerstatus. Wir setzten hier im Beispiel KWP 2000 als Protokoll ein. Die erste Diagnosebotschaft ist ReadDTCByStatus, bestehend aus dem Request, hier in orange dargestellt, mit der Service-ID 0x18 und den notwendigen Parametern, welche den Inhalt des Fehlerspeichers kennzeichnen. Im Beispiel wird der gesamte Fehlerspeicher ausgelesen. Auf der rechten Seite wird in Gelb die Response vom Steuergerät dargestellt. Da wird als Echo die um 0x40 erhöhte SID zurückgeliefert, also 0x58. Dann erscheint in der Response die Anzahl der Fehlerspeichereinträge (hier 2) gefolgt von dem eigentlichen Fehlerkode und einem Status. Fehlerkode und Status werden danach so oft wiederholt, wie Fehler vorhanden sind.
Mit der ReadStatusOfDTC-Botschaft soll nun ausgelesen werden, welche Umgebungsdaten zu einem bestimmten Fehler gespeichert werden. Dazu sendet der Diagnosetester eine Anfrage (REQUEST) für jeden Fehlercode, der in der vorigen Botschaft ausgelesen wurde. Das Steuergerät antwortet mit den jeweiligen zu diesem Fehler gespeicherten Umgebungsdaten, also Motordrehzahl, Kühlwassertemperatur etc.
Datenelemente für den Fehlerspeicher DTC-DOP, ENV-DATA-DESC |
Wie wird nun der erste Teil der Diagnosebotschaft in ODX definiert? Schauen wir uns dazu die Struktur an, mit der ODX die Antwortbotschaft für den ersten Request (erste gelb markierte Botschaft Abbildung oben) definiert, siehe Abbildung unten.
Lesen des Fehlerspeicherstatus – Positive Response von ReadDTCByStatus |
Der erste Datenwert in der Antwortbotschaft ist die SID für ReadDTCByStatus. Wir definieren einen Parameter vom Typ CODED-CONST. Der zweite Datenwert ist die Anzahl der Fehler. Hierfür wird ein Parameter vom Typ Value definiert. Es reicht ein SIMPLE-DOP, da die Anzahl der Fehler immer genau ein Byte, hat also eine feste Länge hat. Anders sieht es dagegen mit der Datenstruktur aus, die sich bestehend aus DTC und Status des entsprechenden Fehlers ergibt. Da die Anzahl der Fehler variabel ist, kann sich diese Datenstruktur wiederholen. Sie hängt damit vom ersten Parameter ab. Man wird die Liste der vorhandenen Fehler mit ihrem zugehörigen Status daher als Struktur mit einer dynamischen Länge (DYNAMIC-LENGTH-FIELD) definieren. Innerhalb dieser Struktur wird man wieder auf eine Struktur verweisen, bestehend aus dem eigentlichen Fehlercode mit 2 Bytes, der über einen DOP beschrieben wird und dem entsprechenden Status mit 1 Byte, der ebenfalls über einen DOP beschrieben wird. Für den Fehlercode selbst wird man einen DTC-DOP beschreiben, der dem hexadezimalen Fehlercode eine Klartextbeschreibung zuordnet.
Für das iterative Lesen der einzelnen Fehlerspeichereinträge im zweiten Schritt betrachten wir nun die Response zu ReadStatusOfDTC, wie sie in ODX beschrieben wird.
Nach der SID werden wiederum der Fehlercode und der Status des Fehlers zurückgeliefert. Das wird, wie im vorigen Abschnitt beschrieben, durch eine Struktur dargestellt, die ihrerseits wieder auf eine DTC-DOP verweist. Die Umgebungsdaten, die bei einem Fehler zurückgemeldet werden, sind abhängig vom entsprechenden DTC. Sie werden in der Tabelle Env-Data-Desc als eine Ansammlung von Strukturen abgelegt. Diese Tabelle wird durch den DTC zur Laufzeit indiziert.
Siehe auch
Diagnoselayer und Diagnosedienste