OBD on CAN

From emotive
Jump to navigation Jump to search

Die Abgas­ge­setz­ge­bung und mit ihr ein­her­ge­hend die On-Board-Dia­gno­se für abgas­re­le­van­te Sys­te­me hat eine lan­ge His­to­rie. Bereits 1970 beschloss der ame­ri­ka­ni­sche Kon­gress nach Vor­ar­bei­ten ins­be­son­de­re in Kali­for­ni­en den Clean-Air-Act, die ers­te Gesetz­ge­bung, die die Abgas­e­mis­sion von Autos mas­siv regelt. Gleich­zei­tig wur­de die Envi­ron­men­tal Pro­tec­tion Agen­cy (EPA) mit der Ziel­set­zung gegrün­det, die Abgas­ge­set­ze zu über­wa­chen und wei­ter­zu­ent­wi­ckeln. In der Fol­ge kam es zur Ein­füh­rung des Kata­ly­sa­tors, der elek­tro­ni­schen Zün­dung und der elek­tro­ni­schen Ben­zin­ein­sprit­zung in Ver­bin­dung mit der Lamb­da-Son­de.


Protocolls-OBD-History.png
Geschich­te On Board Dia­gno­se


Sehr früh wur­de klar, dass die elek­tro­ni­schen Maß­nah­men zur Ver­bes­se­rung des Abgas­es auch einer Dia­gno­se und einer Dia­gno­se­schnitt­stel­le bedür­fen. 1982 imple­men­tier­te GM zum ers­ten Mal eine damals noch pro­prie­tä­re Schnitt­stel­le für die On-Board-Dia­gno­se. Und 1987 wur­de die­se Schnitt­stel­le zusam­men mit einer Rei­he von wei­te­ren Vor­schrif­ten zur Über­wa­chung des Emis­si­ons­ver­hal­tens für Neu­fahr­zeu­ge in den USA ein­ge­führt. Anfangs durch die kali­for­ni­sche Umwelt­be­hör­de, das Cali­for­nian-Air-Resources-Board (CARB) und spä­ter durch die EPA für die gesam­ten Ver­ei­nig­ten Staa­ten. 1996 /97 wur­den die Vor­schrif­ten wei­ter prä­zi­siert und ver­schärft. Man spricht bei die­ser zwei­ten Gene­ra­tion von OBD II.

In Euro­pa hink­te die Ent­wick­lung etwas hin­ter­her. Im Jahr 2000 für das Modell­jahr 2001 wur­de die euro­päi­sche Vari­an­te der On-Board-Dia­gno­se ein­ge­führt. Sie läuft dort unter dem Namen JOBD. Im Jahr 2000 wur­de für Benz­in­fahr­zeu­ge in Euro­pa die ent­spre­chen­de Rege­lung aus USA weit­ge­hend über­nom­men. Für Die­sel­fahr­zeu­ge wur­de das erst in den Jah­ren 2003/ 04 ver­bind­lich.


Aufgaben der OBD

  • Stän­di­ge Über­wa­chung aller abgas­re­le­van­ten Kom­po­nen­ten
  • Erfas­sen Emis­si­ons­er­hö­hun­gen wäh­rend der Lauf­zeit
  • Gewähr­leis­tung nied­ri­ger Abgas­e­mis­sio­nen
  • Schutz von Kom­po­nen­ten, z.B. Kata­ly­sa­tor bei Fehl­zün­dun­gen
  • Mel­dung von abgas­re­le­van­ten Feh­lern an den Fah­rer
  • Spei­chern von Feh­lern
  • Bereit­stel­lung einer Dia­gno­se­schnitt­stel­le

Was sind nun die Auf­ga­ben der On-Board-Dia­gno­se? Zum einen die Über­wa­chung abgas­re­le­van­ter Kom­po­nen­ten. Die OBD-Regeln schrei­ben hier vor, dass Emis­si­ons­er­hö­hun­gen ab einem gewis­sen Grenz­wert wäh­rend der Lauf­zeit des Fahr­zeugs erkannt wer­den müs­sen. Das soll gewähr­leis­ten, dass die Abgas­e­mis­sio­nen nicht nur bei der Typ­zu­las­sung, son­dern über die gesam­te Lebens­dau­er rea­ler Fahr­zeu­ge nied­rig blei­ben. Wei­ter­hin Maß­nah­men zum Schutz von Kom­po­nen­ten. Bei Ben­zin­mo­to­ren wer­den bei­spiels­wei­se Kata­ly­sa­to­ren durch Fehl­zün­dun­gen rela­tiv rasch zer­stört. Hier schreibt die On-Board-Dia­gno­se Maß­nah­men zur Über­wa­chung vor, die die­se Zer­stö­rung und damit das Unwirk­sam­wer­den des Kata­ly­sa­tors ver­hin­dern soll. Die erkann­ten Feh­ler müs­sen dem Fah­rer mit­ge­teilt wer­den. Dazu gibt es im Arma­tu­ren­brett eine Anzei­ge­lam­pe, die so genann­te Mal­func­tion-Indi­ca­tor-Lamp, kurz MIL. Die Feh­ler müs­sen in den Steu­er­ge­rä­ten gespei­chert wer­den. Und die­ser Spei­cher muss über eine ent­spre­chen­de Dia­gno­se­schnitt­stel­le für den Werk­statt­tes­ter zugäng­lich gemacht wer­den. Die sicht­bars­te Kon­se­quenz der Ein­füh­rung der OBD-Rege­lun­gen ergab sich beim Dia­gno­se­stecker, obwohl es lan­ge vor­her bereits Dia­gno­se­schnitt­stel­len in allen Fahr­zeu­gen gab, hat­te lan­ge Zeit jeder Her­stel­ler sei­ne pro­prie­tä­re Anschluss­tech­nik. Bei OBD regelt dies die ISO 15031-3 bezie­hungs­wei­se die inhalts­glei­che ame­ri­ka­ni­sche Norm SAE J1962.


Protocolls-OBD-Plug.png
OBD-Dia­gno­se­stecker nach
ISO 15031-3 bzw. SAE J1962


Wie der Dia­gno­se­stecker aus­zu­se­hen hat, sehen Sie im Bild oben. Worauf man sich in der Pra­xis ver­las­sen kann ist der Ein­bauort in der Umge­bung des Fah­rers, also nicht im Motor­raum, son­dern im Fahr­gas­traum und die mini­ma­le Stecker­be­le­gung mit Bat­te­rie­span­nungs­an­schlüs­sen und Mas­se. Sie sehen auch die von der Norm vor­ge­schla­ge­ne Bele­gung für die drei ver­schie­de­nen Schnitt­stel­len: Die K-Line für Euro­pa, SAE J1850 für die ame­ri­ka­ni­schen Fahr­zeu­ge und seit 2007 /08 ist sowohl in USA als auch in Euro­pa CAN ver­bind­lich.

Allgemeines zur Diagnoseschnittstelle

Die Dia­gno­se­diens­te der On-Board-Dia­gno­se wer­den durch ISO 15031 im Teil 5 bezie­hungs­wei­se die weit­ge­hend inhalts­glei­che Norm SAE J1979 defi­niert. Die­se bei­den Nor­men sind zunächst unab­hän­gig vom Bus­sys­tem. Die bus­sys­tems­pe­zi­fi­schen Regu­la­ri­en für CAN wer­den in ISO 15765, dort im Teil 4 beschrie­ben.

Die Vor­ga­ben dabei sind bei CAN, dass das ISO-Trans­port­pro­to­koll ein­ge­setzt wer­den muss, dass die CAN-Bit-Raten ent­we­der 250 kbit/s oder 500 kbit/s betra­gen müs­sen und dass ent­we­der 11 Bit oder 29 Bit Can-Iden­ti­fier unter­stützt wer­den müs­sen. Das bedeu­tet, dass ein Steu­er­ge­rät eine der bei­den Bit-Raten oder eine der bei­den Iden­ti­fier-Län­gen ver­wen­den muss. Ein Dia­gno­se­tes­ter muss jedoch bei­de Bit-Raten und bei­de Iden­ti­fier-Län­gen unter­stüt­zen und auto­ma­tisch erken­nen, mit wel­cher Bitra­te das Steu­er­ge­rät arbei­tet. Außer­dem wird vor­ge­schrie­ben, dass beim ISO-Trans­port­pro­to­koll die Fluss­steue­rung stets eine Block­grö­ße von Null und eine mini­ma­le Sepa­ra­tion-Time eben­falls von Null ver­wen­det. Für die Dia­gno­se-Requests wird eine funk­tio­na­le Adres­sie­rung für den Dia­gno­se­tes­ter vor­ge­schrie­ben und dabei muss für 11 Bit CAN-IDs die CAN-ID 0x7DF ver­wen­det wer­den.

Steu­er­ge­rä­te, die eine OBD-Anfra­ge an bestimm­te Dia­gno­se­diens­te nicht unter­stüt­zen, sol­len, um die Bus­kom­mu­ni­ka­tion zu ent­las­ten, nicht mit einer nega­ti­ven Bot­schaft ant­wor­ten.


Protocolls-OBD-TestModes.png
Zuläs­si­ge Dia­gno­se-Requests, sgn. „Test Modes“


Die zuläs­si­gen Dia­gno­se­diens­te (Dia­gno­se-Requests), bei SAE „Test-Modes“ genannt, sind in obi­ger Tabel­le auf­ge­lis­tet. Sie sind rela­tiv über­schau­bar. Es gibt eine Grup­pe von zwei Dia­gno­se­diens­ten, die dem Aus­le­sen von Mess- und Fahr­zeug­da­ten die­nen. Mit der Ser­vice-ID 0x01 kann man Mess­da­ten abfra­gen. Wel­che, wird über zusätz­li­che Para­me­ter-Iden­ti­fier spe­zi­fi­ziert, sie­he fol­gen­des Bei­spiel. Mit der Ser­vice-ID 0x09 kann man all­ge­mei­ne Fahr­zeu­g­in­for­ma­tio­nen, zum Bei­spiel die Fahr­ge­stell­num­mer, Soft­wa­re- oder Hard­wa­re­va­ri­an­ten­num­mern der Steu­er­ge­rä­te abfra­gen. Dann gibt es eine Grup­pe von Diens­ten, die den Feh­ler­spei­cher betref­fen. Mit dem Dienst 0x03 kann man Feh­ler­co­des aus­le­sen, mit dem Dienst 0x02 Mess­da­ten, die beim Auf­tre­ten eines Feh­lers im Steu­er­ge­rät gespei­chert wur­den, so genann­te Free­ze-Fra­mes. Und nicht zuletzt kann man mit Dienst 0x04 den Feh­ler­spei­cher löschen.

Dann schreibt die OBD-Norm eine Rei­he von Test­ver­fah­ren vor, zum Bei­spiel um die Tan­kent­lüf­tung zu tes­ten, um den Kata­ly­sa­tor, um die Funk­tion der Lamb­da-Son­de zu tes­ten und Ähn­li­ches. Mit den Diens­ten 0x06, 0x07 und 0x08 wer­den ent­spre­chen­de Dia­gno­se­diens­te spe­zi­fi­ziert, die sol­che Tests und Über­wa­chun­gen aus­füh­ren bezie­hungs­wei­se abfra­gen.

Erstes Beispiel: Messdaten lesen

Als ers­tes Bei­spiel wol­len wir uns den Dia­gno­se­dienst 0x01, den Dienst mit dem man Mess­da­ten aus­le­sen kann etwas genau­er anschau­en.


Protocolls-OBD-15031-5-I.png
Aus­zug aus ISO 15031-5


Dazu wer­fen wir einen Blick in die ISO-Norm. In der Tabel­le 127 der Norm wird der Dia­gno­se­dienst 0x01 genau­er beschrie­ben, sie­he Bild oben. Sie sehen hier in der ers­ten Zei­le die Bezeich­nung des Diens­tes und Sie sehen hier in die­ser Spal­te ein M ste­hen. M steht für Man­da­to­ry, also „ver­bind­lich“, und hier einen hexa­de­zi­ma­len Wert 01. Das heißt, wenn man den Dia­gno­se­dienst benutzt, muss man in jedem Fall den hexa­de­zi­ma­len Wert 01 als ers­tes Byte der Bot­schaft schi­cken. Das ist die SID. Dann folgt die PID. Sie sehen auch in der zwei­ten Zei­le ein M für Man­da­to­ry und in den fol­gen­den Zei­len ein U für User-Defi­ned, also eine belie­bi­ge Anzahl von wei­te­ren PIDs. Man kann also mit die­sem Dia­gno­se­dienst einen oder meh­re­re Mess­wer­te abfra­gen. Wel­che Mess­wer­te dabei zur Ver­fü­gung ste­hen und wie die­se for­ma­tiert sind, steht in einer ande­ren Tabel­le im soge­nann­ten Appen­dix-B. Dort in der Tabel­le B.6 sind die PIDs für den Dienst 01 defi­niert. Hier fin­den wir unter ande­rem die PID 05. Die PID 05 erlaubt es uns, die Engi­ne-Coo­lant-Tem­pe­ra­tu­re, also die Motor­tem­pe­ra­tur aus­zu­le­sen. Das ent­spre­chen­de Daten­for­mat lau­tet wie folgt: Wir haben ein Byte, wel­ches den Wer­te­be­reich von -40°C bis +215°C bein­hal­tet. Wir haben dem­nach eine Auf­lö­sung von 1°C mit einem Off­set von -40°C.

Die Respon­se wird in der Tabel­le 128 beschrie­ben, sie­he Bild oben. Dort sieht man, dass der hexa­de­zi­ma­le Wert 41 als ers­tes Byte zurück­ge­lie­fert wer­den muss. Das ent­spricht der SID, bei der das Bit 6 gesetzt ist, also einer um 0x40 erhöh­ten SID von 0x01. Das gibt genau 41 Hex. Danach muss die PID als Kopie zurück­ge­schickt wer­den. Dann fol­gen die Daten­by­tes und die­se Daten­by­tes ent­spre­chen dem Wert, der hier als Mess­wert zu lie­fern ist.

Der Appen­dix-B umfasst eine gan­ze Rei­he von Mess­wer­ten. Natür­lich unter­stützt nicht jedes Steu­er­ge­rät alle Mess­wer­te. Wel­che Mess­wer­te unter­stützt wer­den, steht in der Doku­men­ta­tion des Steu­er­ge­räts oder der Dia­gno­se­tes­ter fragt dies ab. Dazu gibt es eine spe­zi­el­le PID, die PID 0, die bei allen Dia­gno­se­diens­ten in Ver­wen­dung ist. Als Ant­wort auf die PID 0 lie­fert das Steu­er­ge­rät ein Bit-Feld zurück, wel­ches anzeigt, wel­che PIDs unter­stützt wer­den.


Protocolls-OBD-SID01.png
{{{3}}}


In der Tabel­le oben sind eini­ge der Mess­wer­te auf­ge­lis­tet. Zum Bei­spiel PID 0x01: Anzahl der Feh­ler im Feh­ler­spei­cher, PID 0x04: Motor­last (pro­zen­tual zwi­schen Null und 100 % mit 8 Bit kodiert), PID 0x05: Kühl­was­ser­tem­pe­ra­tur und PID 0x0C: Motor­dreh­zahl (16 Bit-Wert mit einer Auf­lö­sung von einer Umdre­hung pro Minu­te).


Protocolls-OBD-Request-SID01.png
{{{3}}}


Schau­en wir uns jetzt unser Bei­spiel des Aus­le­sens der Kühl­was­ser­tem­pe­ra­tur in allen Details an (ein­schließ­lich CAN-ID und ein­schließ­lich des­sen, was auf der Trans­por­tebe­ne pas­siert). Wir haben hier die Dia­gno­se­an­fra­ge kom­mend vom Dia­gno­se­tes­ter zum Steu­er­ge­rät, sie­he Abbil­dung oben. Dort muss die funk­tio­na­le Adres­sie­rung ver­wen­det wer­den. Wir neh­men an, dass wir einen 11 Bit CAN-Iden­ti­fier ein­set­zen. Die­ser ist nach Stan­dard 0x7DF. Da die­se Bot­schaft mit 2 Byte Nutz­da­ten aus­kommt, bedeu­tet dies, dass auf der Trans­por­tebe­ne ein Single-Fra­me aus­reicht. Ent­spre­chend folgt das PCI-Byte mit den Wert 02 (Null zeigt den Single-Fra­me und die Zwei zeigt, dass zwei Nutz­da­ten geschickt wer­den). Dann die eigent­li­che Anfra­ge. Die Anfra­ge hat die SID 01 und die PID 05.


Protocolls-OBD-Response-SID01.png
Respon­se des Motor-Steu­er­ge­rä­tes zum Tes­ter


Die Respon­se, die Ant­wort des Steu­er­ge­rä­tes ist im Bild oben zu sehen. Hier muss die phy­si­ka­li­sche Adres­se des Tes­ters, die dem ers­ten Steu­er­ge­rät zuge­ord­net ist, ver­wen­det wer­den, laut Norm 0x7E8. Danach folgt wie­der ein PCI-Byte wel­ches einen Single-Fra­me mit 3 Nutz­da­ten­by­tes kenn­zeich­net. Jetzt kommt die eigent­li­che Ant­wort­bot­schaft: Sie beginnt mit der um 0x40 erhöh­ten SID, also hier 0x41. Dann wird die PID 05 zurück­ge­schickt und dann die eigent­li­che Motor­tem­pe­ra­tur. Neh­men wir an, die Tem­pe­ra­tur sei momen­tan 62°C, ergibt dies 0x66.

Inter­pre­ta­tion des Zah­len­wer­tes 0x66: Wir wis­sen, die Motor­tem­pe­ra­tur ist ein 8 Bit-Wert, nor­miert für den Wer­te­be­reich zwi­schen -40°C und +215°C. Die 0x66 muss zuer­st in einen Dezi­mal­wert umge­rech­net wer­den und dann, da wir einen 8 Bit-Wert haben durch 2 hoch 8, also 256 geteilt wer­den. Das Gan­ze muss mit dem Wer­te­be­reich mul­ti­pli­ziert (Maxi­mal­wert minus Mini­mal­wert, also 215 minus -40°C) und dazu der Off­set addiert wer­den (hier -40°C). Das ergibt 62°C.

Zweites Beispiel: Lesen Fahrgestellnummer

Als zwei­tes Bei­spiel wol­len wir die Fahr­ge­stell­num­mer mit SID 09 aus­le­sen. Und wenn Sie wie­der­um im Appen­dix-B der Norm nach­schau­en, stel­len Sie fest, für die Fahr­ge­stell­num­mer benö­ti­gen wir die PID 02. Das heißt, die Request-Bot­schaft des Dia­gno­se­tes­ters ent­hält die Daten­by­tes 0x09 als SID und 0x02 als PID. Die ent­spre­chen­de Steu­er­ge­rä­teant­wort ist in der Tabel­le 186 in der Norm dar­ge­stellt, sie­he nach­fol­gen­de Abbil­dung. Die Respon­se beginnt mit der um 0x40 erhöh­ten SID (0x49), dann folgt die Kopie der PID 02 und danach der Wert 01. Die­ser Wert zeigt an, wie vie­le Fahr­ge­stell­num­mern im Steu­er­ge­rät gespei­chert sind. Es gibt Län­der in denen es mehr als eine Fahr­ge­stell­num­mer gibt. In Deutsch­land ist dies zur­zeit nicht der Fall. Daher steht hier in der Regel der Wert 01. Dann folgt die Fahr­ge­stell­num­mer und zwar ins­ge­samt 17 ASCII-Zei­chen. Sie sehen hier in dem Bei­spiel die ASCII-Zei­chen hexa­de­zi­mal kodiert (0x31, 0x47 etc.).


Protocolls-OBD-15031-5-II.png
Aus­zug aus ISO 15031-5


Betrach­ten wir nun, wie die­ser Dia­gno­se­dienst als voll­stän­di­ge Sequenz von CAN-Bot­schaf­ten umge­setzt wird.


Protocolls-OBD-Request-SID09.png
Request zum Lesen der Vehic­le Iden­ti­fi­ca­tion Num­ber vom Tes­ter zum Steu­er­ge­rät (SID: 0x09, PID: 0x02)


Zunächst die Dia­gno­se­an­fra­ge (Request) vom Dia­gno­se­tes­ter zum Steu­er­ge­rät: Funk­tio­na­le Adres­sie­rung und 11 Bit CAN-Iden­ti­fier erge­ben den Wert 7DF. Dann folgt das PCI-Byte für einen Single-Fra­me mit 2 Bytes Nutz­da­ten. Jetzt kommt die eigent­li­che Anfra­ge mit der SID 09 und der PID 02.

Die Ant­wort des Steu­er­ge­räts, die Fahr­ge­stell­num­mer mit 17 Zei­chen passt nicht mehr in eine ein­zel­ne CAN-Bot­schaft. Daher haben wir nun auf der Ebe­ne des Trans­port­pro­to­kolls eine Sequenz mit einem Fir­st-Fra­me und einer Rei­he von Con­se­cu­ti­ve-Fra­mes. Begin­nen wir mit dem Fir­st-Fra­me, sie­he Abbil­dung unten.


Protocolls-OBD-Response-SID09.png
Respon­se des Motor-Steu­er­ge­rä­tes zum Tes­ter


Für die phy­si­ka­li­sche Adres­sie­rung des ers­ten Steu­er­ge­räts schreibt die OBD die CAN-ID 7E8 vor. Dann fol­gen 2 PCI-Bytes für den Fir­st-Fra­me. Die obers­ten 4 Bits (hier 1) kenn­zeich­nen den Fir­st-Fra­me, die fol­gen­den 12 Bits (hier 0x14 = 20) die Anzahl der Nutz­da­ten­by­tes. Dann kom­men die um 0x40 erhöh­te SID, (0x49), die PID 02 und wei­ter­hin die eigent­lich 17 Zei­chen der Fahr­ge­stell­num­mer. Sie beginnt mit der Zahl 01, die anzeigt, dass genau eine Fahr­ge­stell­num­mer gespei­chert ist. Jetzt fol­gen die ers­ten drei ASCII-Zei­chen (W = 0x57, A = 0x41, U = 0x55). Die hier abge­bil­de­te Fahr­ge­stell­num­mer ist ein Fahr­zeugs der Fir­ma Audi. Damit sind die 8 Bytes der ers­ten CAN-Bot­schaft gefüllt.

Es folgt, hier nicht dar­ge­stellt, auf den Fir­st-Fra­me ein Flow-Con­trol vom Dia­gno­se­tes­ter zum Steu­er­ge­rät. Dann sen­det das Steu­er­ge­rät die zwei­te Ant­wort­bot­schaft, das heißt den ers­ten Con­se­cu­ti­ve-Fra­me. Der hat die Zahl 2 an ers­ter Stel­le des PCI-Bytes und als Sequenz­num­mer die 1. Jetzt fol­gen in den 7 ver­blei­ben­den Nutz­da­ten­by­tes die nächs­ten 7 ASCII-Zei­chen. Der nächs­te Con­se­cu­ti­ve-Fra­me mit der Sequenz­num­mer 2 lie­fert dann die rest­li­chen ASCII-Zei­chen. Mit drei Bot­schaf­ten ist die Respon­se abge­ar­bei­tet.

Drittes Beispiel: Fehlerspeicher

Im drit­ten Bei­spiel wol­len wir nun eine Sequenz von Dia­gno­se­diens­ten betrach­ten, mit denen der Feh­ler­spei­cher gele­sen wer­den kann. Um das Bei­spiel etwas über­sicht­li­cher zu hal­ten, haben wir im Gegen­satz zu den bei­den vori­gen Bei­spie­len die Ebe­ne des Bus­sys­tems und die Ebe­ne des Trans­port­pro­to­kolls weg­ge­las­sen. Sie sehen also hier kei­ne CAN-Iden­ti­fier und auch kei­ne PCI-Bits.


Protocolls-OBD-Get-DTCs.png
Aus­le­sen des Feh­ler­spei­chers nach OBD


Die Abfra­ge ob und wie vie­le Feh­ler gespei­chert sind, wird mit dem Dienst 01 und der PID 01 durch­ge­führt. Sie sehen in der Ant­wort die SID 41, PID 01 und dann grau dar­ge­stellt eine Rei­he von Bytes, die die eigent­li­che Ant­wort ent­hal­ten. Das ers­te Byte mit 83 ist das wich­tigs­te. Bei 0x83 ist das obers­te Bit gesetzt. Nach Norm heißt das, die Mal­func­tion-Indi­ca­tor-Lamp ist ein­ge­schal­tet. Die unte­ren 7 Bits (ent­spre­chen hier dem Wert 3) zei­gen an, dass drei Feh­ler gespei­chert sind. Die fol­gen­den 3 Bytes geben Aus­kunft dar­über, wel­che Über­wa­chungs­ver­fah­ren wäh­rend der letz­ten Fahr­zy­klen akti­viert oder nicht akti­viert wur­den. Das ist von Bedeu­tung, da es sein kann – falls kei­ne Feh­ler ange­zeigt wur­den – dass das Fahr­zeug in Betriebs­zy­klen gefah­ren ist, in denen bestimm­te Über­wa­chun­gen nicht aktiv waren. Bei­spiels­wei­se wird im Kurz­stre­cken­ver­kehr der Kata­ly­sa­tor sei­ne Betrieb­stem­pe­ra­tur nicht errei­chen. Daher kön­nen auch die Kata­ly­sa­tor- und Lamb­da­son­den-Über­wa­chun­gen nicht in vol­lem Umfang akti­viert sein.

Betrach­ten wir nun als Nächs­tes die Abfra­ge wel­che Feh­ler gespei­chert sind. Wir wis­sen zwar, dass es drei Stück sind, aber wir wis­sen nicht genau wel­che. Des­we­gen benut­zen wir als nächs­tes den Dia­gno­se­dienst mit der SID 03 ohne Para­me­ter. In der Ant­wort bekom­men wir zusam­men mit der SID drei Mal 2 Bytes zurück. Die 2 Bytes ste­hen für einen so genann­ten Dia­gno­stic-Trouble-Code (DTC), sie­he fol­gen­de Abbil­dung. Dies ist ein hexa­de­zi­mal kodier­ter Feh­ler­co­de. In unse­rem Bei­spiel hat der ers­te Feh­ler den Wert 0x0119.


Protocolls-OBD-ErrorCodes.png
OBD-Feh­ler­ko­des nach ISO 15031-6


Wenn wir in der Norm nach­schau­en, sehen wir dort eine Erklä­rung der Feh­ler­co­des (2 Bytes DTC). Die obers­ten bei­den Bits, wer­den beim Dia­gno­se­tes­ter typi­scher­wei­se als Buch­sta­be dar­ge­stellt und zwar P, C, B oder U. P steht für Power Train (Antriebss­trang), C für Chas­sis (Fahr­werk), B für (Karos­se­rie­elek­tro­nik) und in der Pra­xis gar nicht so sel­ten U für irgend­ein Pro­blem im Bus­sys­tem.

Bit 5 und Bit 4 des ers­ten Bytes geben die ers­te Zif­fer des Feh­ler­ko­des an. Die­se Zif­fer zeigt an, ob der Feh­ler­ko­de durch die OBD-Norm defi­niert ist (0) oder bei 1 oder 2 wur­de der Feh­ler­ko­de durch den Steu­er­ge­rä­te- bzw. den Fahr­zeugher­stel­ler defi­niert. Er ent­spricht damit nicht der Norm.

Die zwei­te Zif­fer wird über die Bits 3 bis 0 defi­niert. Sie zeigt an – wenn der Feh­ler­ko­de ein OBD-Feh­ler­ko­de ist – in wel­cher Kom­po­nen­te der Feh­ler auf­ge­tre­ten ist. 1 und 2 ste­hen für die Ein­spritz­an­la­ge, 3 für die Zün­dung und 4 für das Abgas- oder Luft­sys­tem.

Die nächs­ten 4 Bits, die drit­te Zif­fer, zei­gen die Kom­po­nen­te genau­er an. Bei der Ein­spritz­an­la­ge bei­spiels­wei­se, die Ein­spritz­dü­se oder eine bestimm­te Lamb­da­son­de. Die vier­te Zif­fer beschreibt die Feh­ler­art. Hier zum Bei­spiel ein Wackel­kon­takt, also ein Signal das außer­halb des nor­ma­len Arbeits­be­rei­ches liegt.

Wenn Sie für unser Bei­spiel 0x0119 in der Norm nach­schau­en, stel­len Sie fest, der Feh­ler betrifft den Antriebss­trang, der Feh­ler­ko­de ist durch ISO fest­ge­legt, wir haben es mit einem Feh­ler in der Ein­spritz­an­la­ge zu tun und zwar ist der Was­ser­tem­pe­ra­tur­sen­sor nicht in Ord­nung. Das Steu­er­ge­rät meint, der Sen­sor habe einen Wackel­kon­takt.

Kom­men wir jetzt zurück zum vor­letz­ten Bild „Aus­le­sen des Feh­ler­spei­chers nach OBD“. Wenn uns der Feh­ler­ko­de als Infor­ma­tion für die Feh­ler­be­sei­ti­gung nicht aus­reicht, könn­ten wir zum Bei­spiel noch abfra­gen, bei wel­cher Motor­dreh­zahl, bei wel­cher Motor­tem­pe­ra­tur usw. der Feh­ler auf­ge­tre­ten ist. Um die­se Infor­ma­tio­nen zu erhal­ten brau­chen wir die soge­nann­ten Free­ze-Fra­mes. Die­se haben die SID 02 und die ent­spre­chen­den PIDs sind in der Norm auf­ge­führt.

Wenn der Feh­ler auf Basis die­ser Infor­ma­tio­nen beho­ben ist, kön­nen wir den Feh­ler­spei­cher löschen. Dazu benut­zen wir den Dienst mit der SID 04, der kei­ne wei­te­ren Para­me­ter benö­tigt.

Im Gegen­satz zur On-Board-Dia­gno­se, die nur rela­tiv weni­ge Funk­tio­nen bereit­stellt und mit denen im Wesent­li­chen nur lesend zuge­grif­fen wer­den kann, stellt UDS Funk­tio­nen bereit, mit denen prak­tisch jedes Detail der Steu­er­ge­rä­te bedient wer­den kann. Dar­auf gehen wir im nächs­ten Abschnitt ein.


Siehe auch

Diagnoseprotokolle

UDS - Allgemeine Fahrzeugdiagnose

KWP 2000 on CAN