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.
2
Antworten:
Diese StackOverflow-Frage und -Antwort führt Sie in die Zukunft.
Gibt es eine ELM327 / obdkey OBD2 Adapter Objective-C Programmieranleitung?
quelle
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:
Dies sollte eine Anforderung für den Modus 01 PID 01 ausgeben:
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:
Eine typische Antwort könnte sein
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.
quelle