OBDII, OBD2
Das Kürzel OBD2 steht für On-Board-Diagnose Version 2.
Es ist der generelle Oberbegriff für ein Diagnosesystem für Kraftfahrzeuge. Es überwacht alle abgasrelevanten Daten und sonstige
Fehler der Steuergeräte. Historischer Anstoss für dieses System waren die strengen US-Kalifornischen Anforderungen zur
Luftreinhaltung. Seit ca 2004 ist OBD2 auch für europäische Autos verpflichtend.
https://de.wikipedia.org/wiki/On-Board-Diagnose
Die Beschreibung im englischen Wiki ist noch wesentlich ausführlicher:
https://en.wikipedia.org/wiki/On-board_diagnostics
Eine weitere, sehr ausführliche Beschreibung ist hier zu finden:
https://www.csselectronics.com/pages/obd2-explained-simple-intro
Der Begriff CAN-Bus wird in Diskussionen gerne verwürfelt. CAN ist aber nur eine der möglichen physikalischen Schnittstellen.
OBD2 Stecker
Als elektrische Schnittstelle wurde ein 16-poliger, genormter
Stecker definiert.
Dieser Stecker muss sich in der Nähe des Fahrersitzes befinden. Üblicherweise links unten am ehemaligen "Sicherungskasten"
oder in der Mittelkonsole/unter dem Radio.
OBD2 Protokolle
In der OBD2 Spezifikation sind 5 verschiedene Übertragungsprotokolle definiert die alle verwendet werden dürfen:
- SAE J1850 PWM
- SAE J1850 VPW
- ISO 9141-2
- ISO 14230 KWP2000
- ISO 15765 CAN
Die Protokolle verwenden unterschiedliche elektrische Schnittstellen und sind deshalb unterschiedlichen Pins im Stecker
zugeordnet. Die vielen Protokolle sind ein Zugeständnis an die Fahrzeughersteller die ihre alten Sachen weiter verwenden
wollten. Mittlerweile ist die Unterstützung von CAN verpflichtend. Egal welches Protokoll, der Inhalt der Basisdaten ist
üblicherweise identisch.
(Quelle: https://www.csselectronics.com/pages/obd2-explained-simple-intro)
Was kann man damit anfangen?
Mit den klassischen OBD2-Daten nicht sehr viel. Wie erwähnt geht es dabei primär um die korrekte Funktion der Abgasreinigung und alle Daten aus dem Motorsteuergerät die dafür wichtig sein könnten. Diese Datensätze sind genormt und für alle Fahrzeuge ähnlich. Falls der Motor Probleme macht kann man daraus erste Rückschlüsse ziehen woran es liegt. Ansonsten ein nettes Gimmick um per Smartphone-App den aktuellen Motorzustand zu betrachten.
Steuergeräte kodieren?
Das geht NICHT mit den einfachen OBD2-Dongle-App-Lösungen.
Viele Autohersteller benutzen zwar die selbe physikalische OBD2-Schnitstelle um auf ihre diversen Steuergeräte
zuzugreifen, aber immer mit sehr spezieller Software und Protokollen.
Steuergeräte im Fahrzeug
Moderne Fahrzeuge haben diverse Steuergeräte verbaut, für jede Hauptfunktion ein eigenes. Als Beispiel:
- Motorsteuerung
- ABS
- Getriebe
- Klima
- Beleuchtung
- Türöffner
- ...
Die feine Aufteilung mag etwas übertrieben erscheinen. Sie ergibt aber Sinn damit z.B. das sicherheitsrelevante ABS mit Sicherheit von der Klimaanlage isoliert und unbeeinflusst bleibt.
Simple Adapter
Für die "einfachen Spielereien" kann man gut einen Bluetooth-"Ramsch-Clone" aus China benutzt.
Es handelt sich bei diesem Beispiel (vermutlich) um ein Plagiat rund um das ELM327 IC von ELM-Electronics.
Die wichtigsten Bauteile auf der Platine:
- "schwarzer Blop", ELM327 (Clone?)
- YC1034 von YiChip, Bluetooth-UART
- ATA 6560, CAN Transceiver
- 78L05 Spannungsregler
Wenn man der HW-Bestückung folgt dann werden CAN ([6] und [14]), K-Line ([7]) und L-Line ([15]) unterstützt.
Nicht verbunden sind die Pins für SAE J1850 ([2] und [10]).
Zum Testen kann man den Adapter mit 12V[16] und Masse [4 oder 5] in Betrieb nehmen. Nach dem Bluetooth-Pairing (mit dem PC) wird
eine neue Seriell-über-Bluetooth Verbindung angeboten. Mit einem simplen Terminalprogramm kann man Verbindung aufnehmen (9600,N,8,1).
Eine vollständige Übersicht der Befehle findet man bei ELM. Zum Üben sind die "AT"-Befehle gut geeignet. Sie haben
ihren Namen durch die beiden vorangestellten Zeichen "AT". Normale OBD-Befehle haben keinen Prefix. Gesendete Daten müssen
mit einem CR (Carriage Return) abgeschlossen werden:
Beispiel "I" = Send Identification String
>AT I
ELM327 v2.1
Beispiel "Z" = Reset All and start up by sending Identification String
>AT Z
ELM327 v1.5
Der Clone meldet sich als v2.1 bzw v1.5, er scheint sich selbst nicht ganz so sicher zu sein ..
ELM327
Der ELM327 (Wiki-Link) ist ein populäres Spezial-IC der Firma ELM
Electronics für OBD-Interfaces. Es vereinfacht die Kommunikation indem es die komplexen Protokolle in simple Befehle
abstrahiert.
Über die Zeit gab es diverse Varianten (v1.0 .. v2.3) mit jeweils erweitertem und fehlerbereinigtem Funktionsumfang.
Den Berichten zu Folge wurde bei frühen Versionen vergessen die Copy-Protection für die Firmware zu aktivieren. Als Folge
gab es kurz darauf Klone die alle auf dieser Variante basierten. Später wurden die Klone modifiziert um den
(PC-)Programmen eine passende Variantennummer vorzugaukeln, was häufig zu Fehlverhalten führte.
Mittlerweile gibt es auf dem Markt einen ganzen Zoo von Varianten mit unbekanntem Funktionsumfang. Findige Zeitgenossen
haben deshalb diverse "ELM-Identifier" Apps geschrieben. Diese Apps überprüfen welche Befehle der Chip akzeptiert und
schätzen daraus ab um welche Variante es sich handeln könnte.
Die Firma
ELM Electronics
hat den Geschäftsbetrieb im Jahr 2022 eingestellt.
ELM327 v2.3 Datasheet
Liste der AT-Kommandos
Programmierbare Parameter
Schaltplan
Ein sehr ähnlicher Chipsatz ist der STN1110 von "OBD Solutions". Er soll vollständig kompatibel zum ELM327 sein, dazu
schneller und in allen Belangen besser. In meinem Adapter scheint er aber nicht verbaut zu sein weil die spezifischen
ST-Befehle nicht erkannt werden.
Spezielle Adapter
Um auf alle Steuergeräte zugreifen zu können benötigt man aber "richtige" HW und SW. Hier kocht leider jeder
Fahrzeughersteller sein eigenes Süppchen. Systeme die alle Fahrzeugtypen unterstützen sind sehr kostspielig und nur für
Profis sinnvoll. Für den Hobby-Bereich kann man aber markenspezifische Systeme benutzen. Als Beispiel:
- VW: VCDS von Ross-Tech ist sehr beliebt und brauchbar.
- Opel: OP-COM von Carsoft.
Insbesondere in der Software steckt die Differenzierung. Die Zuordnung der Bits und Bytes zu den Funktionen ist bei
jedem Steuergerät und Hersteller anders.