Zugreifen auf Diagnosefehlercodes (DTCs) im Auto

2

Ich möchte wissen, wie ich auf DTCs zugreifen kann, indem ich einen Code schreibe und ihn analysiere. Ich habe RaspberryPi und verwandte Hardware für die Kommunikation mit dem OBD-II des Autos. Ich werde manuelle Fehler generieren und nach dem Einschalten der MIL möchte ich die generierten DTCs in lesbarem Format anzeigen.

user3098378
quelle
1
Ich vermute, Sie wissen, dass Sie ein Instrument kaufen können, das genau dies im Autoteile-Laden tut.
Ja, die Instrumente sind verfügbar, aber ich entwerfe eines. Also brauche ich Hilfe dabei
Ein Blick auf die OBD-II-Spezifikation ist möglicherweise ein guter Ausgangspunkt, wenn Sie sie von Grund auf neu entwerfen möchten.
Ich habe es für den Zugriff auf grundlegende OBD-II-Funktionen wie RPM, SPEED & lt; drosseln. Aber jetzt möchte ich es für den Zweck DIAGNOSTIC TROUBLE CODES entwerfen.
user3098378
1
Haben Sie es bereits angeschlossen, müssen aber die Diagnosecodes kennen? Diese stehen online als Tabelle zur Verfügung.
Rory Alsop

Antworten:

4

Der Abschnitt 'Interpretieren von Fehlercodes' (Seite 26) des ELM327 Datenblatt zeigt ein Beispiel für das Abrufen von DTCs. Sie stellen zunächst eine PID 01-Anforderung für Modus 01, um die Anzahl der DTCs zu bestimmen (die Sie zum Decodieren der Antwort in der nächsten Anforderung benötigen). Dann stellen Sie eine Anforderung für Modus 03 (keine PID), um die tatsächlichen Codes abzurufen. Ich werde versuchen, das Beispiel für die Nachwelt zu umschreiben:

Dies sollte die Schnittstelle zurücksetzen und die Protokollsuche auf automatisch einstellen:

ATZ
ATSP0

Dies sollte eine Anforderung für den Modus 01 PID 01 ausgeben:

01 01

Eine typische Antwort könnte (hexadezimal) sein:

41 01 81 07 65 04

Die zwei Bytes '41 01 'zeigen eine Antwort auf eine Mode 1 PID 01-Anfrage an. Das Byte '81' (10000001 binär) gibt den MIL-Status und die Anzahl der Fehlercodes an. Das erste Bit ist das MIL-Ein / Aus-Bit (1 oder in diesem Fall EIN), die nächsten 7 Bits (0000001) sind die Anzahl der Fehlercodes. Die Bedeutung der verbleibenden drei Bytes ist in der SAE J1979-Spezifikation enthalten.

Dies sollte eine Anforderung für Modus 03 (keine PID) ausgeben:

03

Eine typische Antwort könnte sein

43 01 33 00 00 00 00

Das Byte 43 zeigt eine Antwort auf eine Anforderung des Modus 3 an. Die nächsten drei Bytepaare sind Fehlercodes. In diesem Beispiel denke ich, dass es nur ein Geschenk gibt (Rest sind Nullen). Wenn mehr als 3 zu melden sind, weiß ich nicht, ob die Antwort nur länger wird oder in mehrere Zeilen aufgeteilt ist. Hmmm, Wikipedia schlägt vor mehrere "Frames", nicht sicher, wie genau der Ulmenchip das übersetzen würde. In jedem Fall wird '01 33 'als DFC P0133 dekodiert. Weitere Informationen finden Sie im Datenblatt und in der SAE J1979-Spezifikation (Die Spezifikation kostet Geld. Sie können andere Open-Source-Projekte, die ELM327-Chips unterstützen, rückentwickeln, wenn Sie die Spezifikation nicht in den Händen halten möchten oder können). Es sieht so aus, als hätte jemand Tonnen nützlicher Informationen in den relevanten Wikipedia-Artikeln hinzugefügt.

Es sieht so aus, als ob der ELM327 die höheren Datenraten unterstützt, die die älteren ELM-Chips nicht unterstützt haben. Dies ist praktisch für die Fehlerbehebung und die Optimierung. Sie können Daten für mehrere Sensoren gleichzeitig abrufen oder die Daten von einem Sensor maximal nutzen, um Merkmale zu erkennen, die bei niedrigeren Datenraten möglicherweise nicht sichtbar sind. Ich denke, Sie benötigen möglicherweise ein spezielles OBDII-zu-RS232-Kabel, um diese höheren Datenraten zu nutzen.

Mark Johnson
quelle
Hier haben Sie nach dem Senden der Anforderung 0101 und dem Empfangen der Daten geschrieben, dass 81 (10001000 binär) der MIL-Status ist. Ich möchte wissen, wie du es geschrieben hast? es sollte aus Versehen 01010001 in binär sein. auch die restlichen 7 Bits, die den Zählerstand anzeigen, werden binär oder dezimal empfangen?
user3098378