Programmierer Tips
Programmierer-Tips
Diese einfache Einführung in die OBD2-Kommunikation soll Programmierern eigener Anwendungsprogramme zur Kfz-Diagnose lediglich einen ersten Überblick verschaffen. Auch für Nicht-Programmierer können die folgenden Internas interessant sein. Die Informationen erfolgen nach bestem Wissen ohne Gewähr für Richtigkeit oder Verwendbarkeit. Sie sind copyright-geschützt und nur zum Privat-Gebrauch. Zur ernsthaften Programm-Erstellung ist die Anwendung der entsprechenden Normen (siehe hier) und evtl. auch der Hersteller-spezifischen Zusatz-Dokumentationen unumgänglich.
Wie alle modernen Kommunikationsverfahren basiert auch OBD2 auf dem 7-schichtigen OSI-Referenzmodell. Die oberste Schicht 7 (auch Layer genannt) repräsentiert die Anwendungsebene wie sie z.B. in den Normen SAE J1979 und J2190 festgelegt ist, die untersten Layer 1 (Physical) und 2 (Data Link) repräsentieren die Hardware. Die dazwischen liegenden Layer 3 (Network) und 5 (Session) sind in ISO 15765-2 und ISO 15765-4 beschrieben. Von Interesse bei gegebener Hardware ist Layer 7.
Die Kommunikation zwischen dem oder den Steuergerät(en) des Fahrzeugs (Server) und dem angeschlossenen Tester (Client) erfolgt als Frage- und Antwortspiel. Frage und Antwort bestehen aus Datenpacketen mit Header-Bytes, Daten-Bytes und abschließendem Checksummen-Byte. Die eigentlichen Daten können 1 bis 7 und 63 oder 255 Byte umfassen, abhängig vom verwendeten Standard. Der Datenbus wurde vorrangig für die Kommunikation zwischen verschiedenen Steuergeräten (Knoten, Nodes) im Fahrzeug entwickelt, um die Verkabelung zwischen diesen Knoten (Motor-Kontroller, Getriebe-Kontroller, ABS-Kontroller, Komfort-Kontroller usw. usw.) kostengünstig gestalten zu können. Der evtl. angeschlossene Tester ist nur ein weiterer Knoten. Die Header-Bytes (1 bis 4 Bytes je nach Standard, bei CAN 11 oder 29 Bit) können u.a. bitcodierde Informationen über die Adressierung (Ziel und Quelle), Adressierungsart (funktional oder physisch), Länge der folgenden Datenbytes und Priorität des Datenpackets enthalten. Bei ISO9141 erfolgt die Adressierung bereits während der Initialisierung. Speziell für Tester entwickelte Chips wie die ELM-Chips übernehmen die Aufgabe, die Header und Checksumme zu interpretieren oder zu erzeugen, so daß sich der Programmierer eines Diagnose-Programms nur um das Datenfeld zu kümmern braucht. Auch die Initialisierung übernehmen diese Chips ebenso selbsttätig wie die Verwendung der richtigen Baudrate.
Im Allgemeinen verwendet OBD2/EOBD eine funktionale Adressierung, das heißt, die tatsächlichen Adressen des jeweiligen Steuergerätes müssen nicht (und können meist auch nicht) bekannt sein. Die im Folgenden beispielhaft gezeigten Funktionen (Mode, PID) werden von jedem OBD2/EOBD-fähigen Steuergerät verstanden. Es lassen sich somit universale Diagnosegeräte verwenden. Im Unterschied dazu gibt es die absolute Adressierung, wenn das Steuergerät und dazu die absoluten Speicheradressen bekannt sind. Herstellerspezifische Diagnosegeräte können daher oftmals eine absolute Adressierung verwenden.
Die Normen haben den Nodes folgende Bereiche hexadezimaler Adressen zugeordnet:
Damit sind - wie bei fast allen Festlegungen in den Normen - auch zukunftsweisende Anwendungen berücksichtigt worden. Auch Fahrzeuge, die es heute noch gar nicht gibt, können also abgedeckt werden.
Die Standards haben zur Diagnose mit OBD2 eine genormte Adressierung festgelegt, die einheitlich für die verwendeten Protokolle gilt. Die Funktionen sind in Funktionsgruppen ( genannt Mode) klassifiziert und innerhalb dieser Modes bezeichnet eine Parameter-Identifikation (kurz PID) eine bestimmte Funktion. Einige Modes besitzen jedoch keine PIDs, andere sog. TIDs (Test-Identifikationen). Die Normen kennen folgende Modes, die ebenfalls in hexadezimaler Schreibweise bezeichnet sind:
Darüber hinaus definiert SAE J2190 weitere Diagnose-Test-Modes im Bereich von Hex 10 bis Hex 7F. Der Bereich 80 - FF ist reserviert für zukünftige Erweiterungen und Hersteller-spezifische Verwendung. Der in der SAE J2190 spezifizierte erweiterte (enhanced) Diagnose-Umfang umfaßt auch nicht-abgasrelevante Bereiche der Kfz-Elektronik. Das hierzulande oft gehörte Statement, OBD2/EOBD betreffe nur die Emissionsüberwachung ist unzutreffend.
Üblicherweise bieten nur höherwertige Diagnosesysteme wie Vehikel-Erkunder oder AMX diese erweiterten Modes und deren Funktionen.
Nach dem Initialisierungsprozeß, der bei ISO/KWP, CAN, PWM und VPW unterschiedlich abläuft, sendet der angeschlossene Tester üblicherweise eine Frage und wartet auf die Antwort. Die Initialisierung kann im übrigen auch beinhalten, daß die an den Datenbus angeschlossenen Steuergeräte (Nodes) um Ruhe gebeten werden, um den Datenbus für den Datenverkehr mit dem angeschlosenen Tester möglichst freizuhalten. Die abgesandte Frage des Testers besteht aus einem Mode-Teil und einem PID- oder TID-Teil. An dieser Stelle kann nur ein Auszug der möglichen PIDs und TIDs wieder gegeben werden. Da nicht alle PIDs von jedem Steuergerät unterstützt werden, ist PID hexadezimal 00 immer reserviert für die Abfrage der möglichen PIDs je Mode. Ebenso werden nicht alle Modes immer von jedem Steuergerät unterstützt. Für Mode 01 und 02 sind also die möglichen PIDs:
Weitere Tabellen hier aufzulisten oder auch weitere Erklärungen zu o.g. PIDs würde den Rahmen hier sprengen. Nur soviel noch, da die angezeigten Werte oft Mißverständnis hervorrufen:
Der berechnete Lastwerte (PID 04) ist eine fiktive, berechnete Größe, die absolut nichts mit der tatsächlichen aktuellen Leistung eines Motors zu tun hat. Das Motorsteuergerät berechnet sie aus:
aktueller Luftdurchfluß geteilt durch maximaler Luftdurchfluß bei weit geöffneter Drosselklappe bei Standard Temperatur und Druck mal barometrischer Druck geteilt durch 29,92 mal Quadratwurzel aus 298 geteilt durch Umgebungslufttemperatur plus 273.
Nicht alle Modes haben jedoch derart viele PIDs. Mode 03 gibt die gespeicherten Fehlercodes (siehe hier)mit 3 Codes je Antwort zurück. Die Dekodierung zeigt das Beispiel:
Das Programm eines angeschlossenen Testers fragt sinnvollerweise zuerst mit Mode 01 und PID 01 die Anzahl der evtl. vorhandenen Fehlercodes ab und erhält als Antwort im Datenfeld eine Bytefolge zurück beginnend mit 41 (Mode-Antwort zu 01), dann 01 (PID) und darauf die 4 Daten-Bytes, aus denen dann die Anzahl zu dekodieren ist. Dieses Antwortschema ist übrigens immer gleich, d.h. bei einer Abfrage von z.B. Mode 07 wird 47 zurückgegeben mit den dann folgenden Daten. Ist die Anzahl gespeicherter Fehlercodes größer 0, kann das Programm dann die eigentlichen Fehlercodes mit Mode 03 abfragen. Mode 03 kennt keine PIDs. Eine Antwort könnte sein: 43 01 43 01 96 02 34, also somit Fehlercodes P0143, P0196 und P0234.
Mode 04 (ohne weitere PID) löscht folgende Daten oder setzt sie zurück:
Wie anfangs ausgeführt, ist dies nur ein kleiner Einblick. Nicht alle Modes und alle PIDs werden von einem Steuergerät unterstützt. Eine Diagnose-Software kann daher immer nur die Daten liefern, die ein Fahrzeug auch zur Verfügung stellt.
Wie alle modernen Kommunikationsverfahren basiert auch OBD2 auf dem 7-schichtigen OSI-Referenzmodell. Die oberste Schicht 7 (auch Layer genannt) repräsentiert die Anwendungsebene wie sie z.B. in den Normen SAE J1979 und J2190 festgelegt ist, die untersten Layer 1 (Physical) und 2 (Data Link) repräsentieren die Hardware. Die dazwischen liegenden Layer 3 (Network) und 5 (Session) sind in ISO 15765-2 und ISO 15765-4 beschrieben. Von Interesse bei gegebener Hardware ist Layer 7.
Die Kommunikation zwischen dem oder den Steuergerät(en) des Fahrzeugs (Server) und dem angeschlossenen Tester (Client) erfolgt als Frage- und Antwortspiel. Frage und Antwort bestehen aus Datenpacketen mit Header-Bytes, Daten-Bytes und abschließendem Checksummen-Byte. Die eigentlichen Daten können 1 bis 7 und 63 oder 255 Byte umfassen, abhängig vom verwendeten Standard. Der Datenbus wurde vorrangig für die Kommunikation zwischen verschiedenen Steuergeräten (Knoten, Nodes) im Fahrzeug entwickelt, um die Verkabelung zwischen diesen Knoten (Motor-Kontroller, Getriebe-Kontroller, ABS-Kontroller, Komfort-Kontroller usw. usw.) kostengünstig gestalten zu können. Der evtl. angeschlossene Tester ist nur ein weiterer Knoten. Die Header-Bytes (1 bis 4 Bytes je nach Standard, bei CAN 11 oder 29 Bit) können u.a. bitcodierde Informationen über die Adressierung (Ziel und Quelle), Adressierungsart (funktional oder physisch), Länge der folgenden Datenbytes und Priorität des Datenpackets enthalten. Bei ISO9141 erfolgt die Adressierung bereits während der Initialisierung. Speziell für Tester entwickelte Chips wie die ELM-Chips übernehmen die Aufgabe, die Header und Checksumme zu interpretieren oder zu erzeugen, so daß sich der Programmierer eines Diagnose-Programms nur um das Datenfeld zu kümmern braucht. Auch die Initialisierung übernehmen diese Chips ebenso selbsttätig wie die Verwendung der richtigen Baudrate.
Im Allgemeinen verwendet OBD2/EOBD eine funktionale Adressierung, das heißt, die tatsächlichen Adressen des jeweiligen Steuergerätes müssen nicht (und können meist auch nicht) bekannt sein. Die im Folgenden beispielhaft gezeigten Funktionen (Mode, PID) werden von jedem OBD2/EOBD-fähigen Steuergerät verstanden. Es lassen sich somit universale Diagnosegeräte verwenden. Im Unterschied dazu gibt es die absolute Adressierung, wenn das Steuergerät und dazu die absoluten Speicheradressen bekannt sind. Herstellerspezifische Diagnosegeräte können daher oftmals eine absolute Adressierung verwenden.
Die Normen haben den Nodes folgende Bereiche hexadezimaler Adressen zugeordnet:
Hex-Adr. | Bezeichnung |
---|---|
10-17 | Motor-Steuergeräte |
18-1F | Getriebe-Steuergeräte |
20-27 | Hersteller-spezifische Erweiterung für Fahrwerk |
28-2F | Bremsen-Steuergeräte |
30-37 | Lenkungs-Steuergeräte |
38-3F | Federungs-Steueräte |
40-57 | Hersteller-spezifische Erweiterung für Karosserie |
58-5F | Gurtanschnall-Systeme |
60-6F | Fahrer-Informationssysteme |
70-7F | Beleuchtung |
80-8F | Unterhaltung/Audio |
90-97 | Persönliche Kommunikation |
98-9F | Klima-Automatik |
0A-BF | Komfort (Türen, Sitze, Fenster etc.) |
C0-C7 | Sicherheits-Systeme |
C8 | Zubehör-Anschluß-Dienste |
C9 | Wechselspannungswandler |
CA | Wechsel-/Gleichspannungswandler |
CB | Energiespeicher-Management |
CC-CF | reserviert für künftige Erweiterungen |
D0-EF | reserviert für Hersteller-spezifische Aufgaben |
F0-FD | externe Tester / Diagnose-Geräte |
Die Standards haben zur Diagnose mit OBD2 eine genormte Adressierung festgelegt, die einheitlich für die verwendeten Protokolle gilt. Die Funktionen sind in Funktionsgruppen ( genannt Mode) klassifiziert und innerhalb dieser Modes bezeichnet eine Parameter-Identifikation (kurz PID) eine bestimmte Funktion. Einige Modes besitzen jedoch keine PIDs, andere sog. TIDs (Test-Identifikationen). Die Normen kennen folgende Modes, die ebenfalls in hexadezimaler Schreibweise bezeichnet sind:
Mode | Bezeichnung der Abfrage |
---|---|
01 | Aktuelle Daten |
02 | Freeze Frame Daten |
03 | Diagnose Fehlercodes |
04 | Löschung Fehlercodes u. gespeicherter Werte |
05 | Testergebnisse, z.B. Lambdasonde |
06 | Testergebnisse nicht kontinuierlich überwachter Systeme |
07 | Testergebnisse kontinuierlich überwachter Systeme |
08 | besonderer Kontrollmodus |
09 | Fahrzeug-Informationen, z.B. VIN |
Mode | Bezeichnung der Abfrage |
---|---|
10 | Initiierung der Diagnose-Funktion |
11 | Modul Reset |
12 | Freeze Frame Daten |
13 | Diagnose Fehlercodes |
14 | Löschung Fehlercodes |
17 | Abfrage Status der Fehlercodes |
18 | Abfrage Fehlercodes nach Status |
20 | Rückkehr in Normalbetrieb des Moduls |
21 | Diagnosedaten nach Offset-Adresse |
22 | Diagnosedaten nach PID-Adresse |
23 | Diagnosedaten nach Speicher-Adresse |
24 | Abfrage Skalierung und Offset oder PID |
25 | Datenübertragung Stop |
26 | Einstellung Datenübertragung |
27 | Geschützter Zugriff |
28 | Abschaltung normaler Nachrichtenübertragung |
29 | Einschaltung normaler Nachrichtenübertragung |
2A | Abfrage Diagnose-Datenpackete |
2B | Definition Datenpackete nach Offset |
2C | Definition Datenpackete |
2F | Ein-/Ausgangkontrolle nach PID |
30 | Ein-/Ausgangkontrolle nach Datenwert ID |
31 | Start Diagnoseroutine nach Testnummer |
32 | Stop Diagnoseroutine nach Testnummer |
33 | Diagnoseroutine Ergebnisse nach Testnummer |
34 | Anforderung Download |
35 | Anforderung Upload |
36 | Datenübertragung |
37 | Stop Datenübertragung |
38 | Start Diagnoseroutine nach Adresse |
39 | Stop Diagnoseroutine nach Adresse |
3A | Diagnoseroutine Ergebnisse nach Adresse |
3B | Datenblock schreiben |
3C | Datenblock lesen |
3F | Tester angeschlossen |
Nach dem Initialisierungsprozeß, der bei ISO/KWP, CAN, PWM und VPW unterschiedlich abläuft, sendet der angeschlossene Tester üblicherweise eine Frage und wartet auf die Antwort. Die Initialisierung kann im übrigen auch beinhalten, daß die an den Datenbus angeschlossenen Steuergeräte (Nodes) um Ruhe gebeten werden, um den Datenbus für den Datenverkehr mit dem angeschlosenen Tester möglichst freizuhalten. Die abgesandte Frage des Testers besteht aus einem Mode-Teil und einem PID- oder TID-Teil. An dieser Stelle kann nur ein Auszug der möglichen PIDs und TIDs wieder gegeben werden. Da nicht alle PIDs von jedem Steuergerät unterstützt werden, ist PID hexadezimal 00 immer reserviert für die Abfrage der möglichen PIDs je Mode. Ebenso werden nicht alle Modes immer von jedem Steuergerät unterstützt. Für Mode 01 und 02 sind also die möglichen PIDs:
PID | Bezeichnung | Min | Max | Umrechnung |
---|---|---|---|---|
00 | unterstützte PIDs, Bereich 01 - 20 | Bit-codiert | ||
01 | MIL-Status, Anzahl Fehlercodes, Überwachungsstatus | 4 Bytes, Bit-codiert | ||
02 | Fehlercode, der Freeze Frame Daten gesetzt hat | 2 Byte | ||
03 | Status Einspritzsystem | 2 Bytes, Bit-codiert | offener, geschlossener Loop etc. | |
04 | berechneter Lastwert | 0 % | 100 % | 100/255 % |
05 | Motor-Kühlwassertemperatur | -40 °C | +215 °C | 1 °C mit -40 °C Offset |
06 | Kurzzeit Einspritztrimm Bank 1 | -100 % (mager) | +99,22 % (fett) | 100/128 % |
07 | Langzeit Einspritztrimm Bank 1 | -100 % (mager) | +99,22 % (fett) | 100/128 % |
08 | Kurzzeit Einspritztrimm Bank 2 | -100 % (mager) | +99,22 % (fett) | 100/128 % |
09 | Langzeit Einspritztrimm Bank 2 | -100 % (mager) | +99,22 % (fett) | 100/128 % |
0A | Kraftstoffdruck | 0 kPa | 765 kPa | 3 kPa pro Bit |
0B | Absolutdruck Einlaßkanal | 0 kPa (absolut) | 255 kPa (absolut) | 1 kPa pro Bit |
0C | Motor-Umdrehungen | 0 min-1 | 16383,75 min-1 | 0,25 U/min pro Bit |
0D | Geschwindigkeit | 0 km/h | 255 km/h | 1 km/h pro Bit |
0E | Zündvoreilung | -64 ° | 63,5 ° | 0,5 ° mit 0 ° bei 128 |
0F | Einlaß-Lufttemperatur | -40 °C | +215 °C | 1 °C mit -40 °C Offset |
10 | Luftdurchfluß | 0 g/s | 655,35 g/s | 0,01 g/s |
11 | Absolute Drosselklappenstellung | 0 % | 100 % | 100/255 % |
12 | Zusatzluftstatus | Bit-codiert | ||
13 | Einbauort Lambdasonden | Bit-codiert | ||
14 | Ausgangsspannung Lambdasonde Bank 1, Sensor 1 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 1, Sensor 1 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
15 | Ausgangsspannung Lambdasonde Bank 1, Sensor 2 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 1, Sensor 2 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
16 | Ausgangsspannung Lambdasonde Bank 1, Sensor 3 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 1, Sensor 3 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
17 | Ausgangsspannung Lambdasonde Bank 1, Sensor 4 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 1, Sensor 4 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
18 | Ausgangsspannung Lambdasonde Bank 2, Sensor 1 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 2, Sensor 1 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
19 | Ausgangsspannung Lambdasonde Bank 2, Sensor 2 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 2, Sensor 2 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
1A | Ausgangsspannung Lambdasonde Bank 2, Sensor 3 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 2, Sensor 3 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
1B | Ausgangsspannung Lambdasonde Bank 2, Sensor 4 | 0 V | 1,275 V | 0,005 V |
Kurzzeit Einspritztrimm Bank 2, Sensor 4 | -100 % (mager) | +99,22 % (fett) | 100/128 % | |
1C | OBD Kompatibilität | 1 Byte, Hexwert: 04=OBD1, 01=OBD2(CARB), 06=EOBD, 05=kein OBD etc. | ||
1D | Einbauorte Lambdasonden | Bit-codiert, nur wenn PID 13 nicht vorhanden | ||
1E | Status Hilfseingang Power Take Off (PTO) Status |
Bit-codiert | ||
1F | Zeit seit Motorstart | 0 Sek. | 65.535 Sek. | 2 Byte, 1 Sek./Bit |
20 | unterstützte PIDs, Bereich 21 - 40 | Bit-codiert | ||
21 | Fahrtstrecke seit MIL gesetzt | 0 km | 65.535 km | 2 Byte, 1 km/Bit |
22 | Kraftstoffdruck relativ zu Einlaßvakuum | 0 kPa | 5177,27 kPa | 0,079 kPa pro Bit |
23 | Kraftstoffdruck | 0 kPa | 655.350 kPa | 10 kPa pro Bit, nur PID 0A, 22 oder 23 erlaubt |
24 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
25 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
26 | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
27 | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
28 | Äquivalenz-Verhältnis Lambdasonde Bank 3, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
29 | Äquivalenz-Verhältnis Lambdasonde Bank 3, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
2A | Äquivalenz-Verhältnis Lambdasonde Bank 4, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
2B | Äquivalenz-Verhältnis Lambdasonde Bank 4, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsspannung | 0 V | 7,999 V | 0,000122 V | |
2C | Anforderung Abgasrückführsystem | 0 % (kein Durchfluß) | 100 % (max. Durchfluß) | 100/255 % |
2D | Verhältnis angeforderte zu aktuelle Abgasrückführung | -100 % (weniger als angefordert) | +99,22 % (mehr als angefordert) | 100/128 % (0 % bei 128) |
2E | Anforderung Entgasungsmenge | 0 % (kein Fluß) | 100% (max. Fluß) | 100/255 % |
2F | Kraftstofftank-Inhalt | 0 % (leer) | 100 % (voll) | 100/255 % |
30 | Anzahl Warmlaufzyklen seit Fehlercode-Löschung | 0 | 255 | 1 Zyklus je Zähler |
31 | Distanz seit Fehlercode-Löschung | 0 km | 65.535 km | 1 km je Zähler |
32 | Entgasungsdampfdruck | -8192 Pa | +8192 Pa | 0,25 Pa pro Bit |
33 | barometrischer Druck | 0 kPa (absolute) | 255 kPa (absolut) | 1 kPa pro Bit |
34 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 34 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
35 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 35 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
36 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 3 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 36 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
37 | Äquivalenz-Verhältnis Lambdasonde Bank 1, Sensor 4 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 37 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
38 | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 1 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 38 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
39 | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 2 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 39 nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
3A | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 3 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 3A nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
3B | Äquivalenz-Verhältnis Lambdasonde Bank 2, Sensor 4 | 0 | 1,999 | 0,0000305 |
Ausgangsstrom (PID 3B nur, wenn PID 13 unterstützt) | -128 mA | 127,996 mA | 0,00390625 mA | |
3C | Kat-Substrat Temperatur Bank 1, Sensor 1 | -40 °C | +6513,5 °C | 0,1 °C/Bit mit -40 °C Offset |
3D | Kat-Substrat Temperatur Bank 1, Sensor 2 | -40 °C | +6513,5 °C | 0,1 °C/Bit mit -40 °C Offset |
3E | Kat-Substrat Temperatur Bank 2, Sensor 1 | -40 °C | +6513,5 °C | 0,1 °C/Bit mit -40 °C Offset |
3F | Kat-Substrat Temperatur Bank 2, Sensor 2 | -40 °C | +6513,5 °C | 0,1 °C/Bit mit -40 °C Offset |
40 | unterstützte PIDs, Bereich größer 40 | Bit-codiert | ||
41 | Überwachungsstatus Fahrzyklus | Bit-codiert für kontinuierliche u. nicht-kontin. Überwachungen | ||
42 | Eingangsspannung Steuergerät | 0 V | 65,535 V | 0,001 V pro Bit |
43 | absoluter Lastwert | 0 % | 25700 % | 100/255 % |
44 | angefordertes Äquivalenz-Verhältnis | 0 | 1,999 | 0,0000305 |
45 | relative Drosselklappenstellung | 0 % | 100 % | 100/255 % |
46 | Umgebungstemperatur | -40 °C | +215 °C | 1 °C mit -40 °C Offset |
47 | absolute Drosselklappenstellung B | 0 % | 100 % | 100/255 % |
48 | absolute Drosselklappenstellung C | 0 % | 100 % | 100/255 % |
49 | Gaspedalstellung D | 0 % | 100 % | 100/255 % |
4A | Gaspedalstellung E | 0 % | 100 % | 100/255 % |
4B | Gaspedalstellung F | 0 % | 100 % | 100/255 % |
4C | angeforderte Drosselklappen-Stellkontrolle | 0 % (geschlossen) | 100 % (weit offen) | 100/255 % |
4D | Motorbetrieb seit Entritt Fehlercode | 0 Minuten | 65535 Minuten | 1 Minute pro Zähler |
4E | Zeit seit Fehlercode-Löschung | 0 Minuten | 65535 Minuten | 1 Minute pro Zähler |
4F | bis FF reserviert für Erweiterungen |
Der berechnete Lastwerte (PID 04) ist eine fiktive, berechnete Größe, die absolut nichts mit der tatsächlichen aktuellen Leistung eines Motors zu tun hat. Das Motorsteuergerät berechnet sie aus:
aktueller Luftdurchfluß geteilt durch maximaler Luftdurchfluß bei weit geöffneter Drosselklappe bei Standard Temperatur und Druck mal barometrischer Druck geteilt durch 29,92 mal Quadratwurzel aus 298 geteilt durch Umgebungslufttemperatur plus 273.
Nicht alle Modes haben jedoch derart viele PIDs. Mode 03 gibt die gespeicherten Fehlercodes (siehe hier)mit 3 Codes je Antwort zurück. Die Dekodierung zeigt das Beispiel:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
P | 0 | 1 | 4 | 3 |
Das Programm eines angeschlossenen Testers fragt sinnvollerweise zuerst mit Mode 01 und PID 01 die Anzahl der evtl. vorhandenen Fehlercodes ab und erhält als Antwort im Datenfeld eine Bytefolge zurück beginnend mit 41 (Mode-Antwort zu 01), dann 01 (PID) und darauf die 4 Daten-Bytes, aus denen dann die Anzahl zu dekodieren ist. Dieses Antwortschema ist übrigens immer gleich, d.h. bei einer Abfrage von z.B. Mode 07 wird 47 zurückgegeben mit den dann folgenden Daten. Ist die Anzahl gespeicherter Fehlercodes größer 0, kann das Programm dann die eigentlichen Fehlercodes mit Mode 03 abfragen. Mode 03 kennt keine PIDs. Eine Antwort könnte sein: 43 01 43 01 96 02 34, also somit Fehlercodes P0143, P0196 und P0234.
Mode 04 (ohne weitere PID) löscht folgende Daten oder setzt sie zurück:
- Anzahl Fehlercodes (Mode 01 PID 01)
- Fehlercodes (Mode 03)
- Fehlercode für Freeze Frame Daten (Mode 02 PID 02)
- Freeze Frame Daten (Mode 02)
- Lambdasonden Testdaten (Mode 05)
- Status der System-Überwachungstests (Mode 01 PID 01)
- On-board Überwachungs-Testergebnisse (Modes 06 und 07)
- Zurückgelegte Fahrtstrecke mit aktivierter MIL (Mode 01 PID 21)
- Anzahl Warmlaufzyklen seit gelöschten Fehlercodes (Mode 01 PID 30)
- zurückgelegte Fahrtstrecke seit gelöschten Fehlercodes (Mode 01 PID 31)
- Motorbetrieb seit aktivierter MIL (Mode 01 PID 4D)
- Zeit seit gelöschten Fehlercodes (Mode 01 PID 4E)
Wie anfangs ausgeführt, ist dies nur ein kleiner Einblick. Nicht alle Modes und alle PIDs werden von einem Steuergerät unterstützt. Eine Diagnose-Software kann daher immer nur die Daten liefern, die ein Fahrzeug auch zur Verfügung stellt.