11. Oktober 2024

Öltemperatur statt KVA bei BMW E60/E90 Kombi codieren

*Werbung / Advertisements
BimmerCode Banner

Es gibt auch ein tool mit dem das einfacher geht, allerdings ohne Garantie und auf eigenes Risiko wie immer
PerfektToolbox: Die App für dein Tacho E6X / E7X / E8X / E9X

Mit dieser Anleitung will ich kurz erläutern, wie ihr mit Hilfe eines handelsüblichen OBD2 Kabel und den BMW Standard Tools 2.12,

Codierer Ausstattung beachten & Immer ein Ladegerät anschließen

die in meine Augen unnötige Kraftstoffmomentanverbrauchsanzeige, kurz KVA, bei den BMW E-Modellen (bei mir 525D E61),
so umprogrammieren könnt, das die Motoröltemperatur dargestellt wird.

Leider kann man bei vielen BMW Modellen keine defekten Kühlmittelthermostate feststellen, da die Temperaturanzeige fehlt.

Die Tachoscheibe bzw. Drehzahlmesserscheibe habe ich bisher noch nicht gewechselt. Es ist auch ohne Wechsel möglich die Öltemperatur über die Skala der Momentanverbrauchsanzeige abzulesen.

dabei entsprechen:

0 Liter =  50°C
5 Liter =  75°C

10 Liter = 100°C

15 Liter = 125°C

20 Liter = 150°C

 

1. Vorbedingung

ODB 2 Kabel ist einsatzbereit und mit dem Auto verbunden. Ich verwende das DO-IT DCAN – Diagnose Interface für BMW-Fahrzeuge
(Bj. 2006 – 2016 bzw. auch älter als 2006 mit den PIN Adapter der dabei ist).

Die BMW Standardtools sind installiert (NCSExpert 3.0.x und Tool32 aus dem Ediabas Paket 7.3.0)

2. Vorkenntnisse

Ihr solltet schon ein wenig Erfahrung mit Codierungen von Steuergeräten haben. Desweiteren ist es sinnvoll zu wissen was hexadezimale Zahlen sind.

3. Codierdaten lesen mit Tool32

Zuerst müsst ihr das Tool32 starten. Die Datei befindet sich standardmäßig unter
c:\Ediabas\Bin\Tool32.exe

Dann öffnet ihr über Datei – SGBD, Gruppendatei laden und wählt die Datei

c:\Ediabas\ECU\Komb60.prg

aus. Bei den E9x Modellen muss Komb87.prg ausgewählt werden.

 

 

 

Links unter Jobs findet ihr einen Eintrag
c_c_lesen
dort einfach als Argument den vorgefüllten Buffer

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 03

in der rechten oberen Zeile eingeben und Data anhaken.
Job einmal ausführen (F5 drücken)

In Results sollten dann die Codierdaten erscheinen.

 

 

apiJobData(„KOMBI60″,“c_c_lesen“,{DATA}, 46,““)

{DATA}: 46 Bytes

0000 : 01 01 01 01 00 00 00 00   00 00 00 00 00 18 00 00  ……..  ……..

0010 : 00 00 05 31 00 FF FF FF   FF FF FF FF FF FF FF FF  …1.ÿÿÿ  ÿÿÿÿÿÿÿÿ

0020 : FF FF FF FF FF FF FF FF   FF FF FF FF FF 03        ÿÿÿÿÿÿÿÿ  ÿÿÿÿÿ.

Satz : 0

OBJECT                          = kombi60

SAETZE                          = 1

JOBNAME                         = c_c_lesen

VARIANTE                        = KOMBI60

JOBSTATUS                       =

UBATTCURRENT                    = -1

UBATTHISTORY                    = -1

IGNITIONCURRENT                 = -1

IGNITIONHISTORY                 = -1

Satz : 1

CODIER_DATEN                    = 46 Bytes

0000 : 01 01 01 01 00 00 00 00   00 00 00 00 00 18 00 00  ……..  ……..

0010 : 00 00 05 31 00 73 12 0D   00 00 36 00 67 00 98 00  …1.s..  ..6.g.?.

0020 : CA 00 00 00 BC 01 78 03   35 05 F1 06 6E 03        Ê…Œ.x.  5.ñ.n.

JOB_STATUS                      = OKAY

_TEL_ANTWORT                    = 31 Bytes

0000 : 9B F1 60 62 31 05 73 12   0D 00 00 36 00 67 00 98  ?ñ`b1.s.  …6.g.?

0010 : 00 CA 00 00 00 BC 01 78   03 35 05 F1 06 6E EC     .Ê…Œ.x  .5.ñ.nì

Die roten Bytes sind die Codierdaten. Den ganzen Buffer inklusive Codierdaten in die Zwischenablage kopieren und in einem Editor (notepad++) zur weiteren Bearbeitung einfügen.

 

0000 : 01 01 01 01 00 00 00 00   00 00 00 00 00 18 00 00  ……..  ……..

0010 : 00 00 05 31 00 73 12 0D   00 00 36 00 67 00 98 00  …1.s..  ..6.g.?.

0020 : CA 00 00 00 BC 01 78 03   35 05 F1 06 6E 03        Ê…Œ.x.  5.ñ.n.

 

Dann die Adresszeilen 0000 – 0020 am Beginn jeder Zeile und die Zeichen am Ende entfernen, so dass nur die Hexzahlen übrig bleiben.

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D 00 00 36 00 67 00 98 00 CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03

 

Diesen Buffer wegsichern. Den brauchst ihr, wenn ihr wieder zurück auf KVA codieren möchtet.

 

3. Codierdaten im Buffer anpassen

Um nun Öltemperatur anstatt KVA zu codieren musst du die blauen Bytes ändern:

 

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D00 00 36 00 67 00 98 00 CA 00 00 00 BC 01 78 03 35 05 F1 06 6E 03

Dabei stehen die Werte 00 36 67 98 CA für die Skaleneinteilung. Der Wert6E steht für die KVA.

 

Werte der KVA erklärt:

hexadezimal      dezimal         Skalawert der KVA

00                0               0,0 Liter

36               54               5,4 Liter

67              103              10,3 Liter

98              152              15,2 Liter

CA              202              20,2 Liter

Für die Öltemperaturanzeige müssen wir die Skaleneinteilung abändern.

Um nun den Temperaturbereich auf 50°C – 150°C zu programmieren, teilen wir die Skala wie folgt ein.

50°C =  0 Liter

75°C =  5 Liter

100°C = 10 Liter

125°C = 15 Liter

150°C = 20 Liter

 

Dafür müssen wir auf die gewünschte Temperaturanzeige einen Korrekturwert (46-48) addieren. Ich habe bei mir 48 als Korrekturwert verwendet, da der Zeiger dann besser zur Skaleneinteilung passte. Die nachfolgenden Codierwerte beziehen sich auf den Korrekturwert 46. Bitte entsprechend der 3 Tabellen selbständig anpassen.

Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal

50                 46              96         60
75                 46             121         79
100                 46             146         92
125                 46             171         AB
150                 46             196         C4

 

mit Korrekturwert 47

Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal

50                 47              97         61
75                 47             122         7A
100                 47             147         93
125                 47             172         AC
150                 47             197         C5

mit Korrekturwert 48

Öltemp. in °C | Korrekturwert (dez.) | dezimal | Hexadezimal

50                 48              98         62
75                 48             123         7B
100                 48             148         94
125                 48             173         AD
150                 48             198         C6

Temperatur + Korrekturwert = dezimaler Wert = in Hexwert umrechnen

Der Wert 6F schaltet Öltemperaturanzeige ein. 6E steht für KVA

Die geänderten Codierdaten sollten nun so aussehen. Bitte die anderen Bytes unverändert lassen und aus dem eigenen Codierdaten übernehmen.

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03

 

4. Checksumme berechnen

Die geänderten Codierdaten erfordern eine neue Checksumme. Die Checksumme ist das grüne Byte, in meinen Fall bei KVA die 73.

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 73 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03

Den Buffer in die Zwischenablagen kopieren und mit Tool32 den Job

 

c_checksumme

 

auswählen. Dort als Argument den Buffer aus der Zwischenablage einfügen und Data anhaken. Dann den Job einmal mit F5 ausführen.

 

Als Ergebnis erhälst du du neue Checksumme. In meinen Fall 95.

apiJobData(„KOMB60″,“c_checksumme“,{DATA}, 46,““)

{DATA}: 46 Bytes

0000 : 01 01 01 01 00 00 00 00   00 00 00 00 00 18 00 00  ……..  ……..

0010 : 00 00 05 31 00 73 12 0D   60 00 79 00 92 00 AB 00  …1.s..  `.y.?.«.

0020 : C4 00 00 00 BC 01 78 03   35 05 F1 06 6F 03        Ä…¼.x.  5.ñ.o.

Satz : 0

OBJECT                          = komb60

SAETZE                          = 1

JOBNAME                         = c_checksumme

VARIANTE                        = KOMB60

JOBSTATUS                       =

UBATTCURRENT                    = -1

UBATTHISTORY                    = -1

IGNITIONCURRENT                 = -1

IGNITIONHISTORY                 = -1

Satz : 1

JOB_STATUS                      = OKAY

OUT_BUFFER                      = 46 Bytes

0000 : 01 01 01 01 00 00 00 00   00 00 00 00 00 18 00 00  ……..  ……..

0010 : 00 00 05 31 00 95 12 0D   60 00 79 00 92 00 AB 00  …1.?..  `.y.?.«.

0020 : C4 00 00 00 BC 01 78 03   35 05 F1 06 6F 03        Ä…¼.x.  5.ñ.o.

 

Nun die neue Checksumme kopieren und in den Buffer eintragen.

 

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 95 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03

5. Steuergerät Kombi codieren

Den Job c_c_schreiben im Tool32 auswählen und den geänderten Buffer mit der neuen Checksumme als Argument eintragen.

01 01 01 01 00 00 00 00 00 00 00 00 00 18 00 00 00 00 05 31 00 95 12 0D 60 00 79 00 92 00 AB 00 C4 00 00 00 BC 01 78 03 35 05 F1 06 6F 03

Data anhaken und Job einmal ausführen (F5)

Als Ergebnis kommt OK.

6. Kombi Steuergerät neustarten

Den Job
steuergeraete_reset
im Tool32 auswählen und die vorhandenen Einträge bei Argument löschen. Data nicht anhaken und Job einmal ausführen F5.

Dadurch wird das Kombi neugestartet und die geänderten Codierwerte übernommen.

7. Datum Uhrzeit stellen

Durch den Steuergeräte Reset sind Datum und Zeiteinstellung gelöscht. Das kann sehr einfach durch den Job

uhrzeit_datum_stellen

im Tool32 erledigt werden. Job auswählen und Argument leer lassen. Data nicht anhaken und Job einmal ausführen, F5.

Dadurch wird die Zeit/Datum vom PC übernommen.

8. Testen des Korrekturwertes

Der verwendete Korrekturwert kann mittels des Job

steuern_oeltemp (ist nur bei Komb60.prg verfügbar)

kontrolliert werden. Dazu einfach den Job auswählen und als Argument z.B. 100 (100°C) eingeben. Data nicht anhaken. Job einmal ausführen, F5.

Der Zeiger sollte nun genau bei 10 Liter stehen bleiben. Falls nicht, muss der Korrekturwert in Punkt 3 – Codierdaten im Buffer anpassen, entsprechend geändert werden. Ich habe 48 anstatt 46 verwendet. Entsprechend verändern sich dann die Skaleneinteilung und auch die Checksumme muss neu berechnet werden.

Wenn alles OK, dann mit

steuer_oeltemp_aus

wird dieser Testmodus wieder beendet.

9. Bestätigte Modelle

  • E61 525dA LCI Bj. 01/2010 M57 Motor
  • E61 535d M57 Motor
  • E90 330i VFL Bj.04/2006 mit Tacho Low
  • E90 320i VFL Bj.07/2005 mit Kombi Low N46 Motor
  • E90 320i VFL Bj. 2006 mit Kombi Low N46 Motor
  • E91 325i VFL mit N52B25 Motor

10. weitere Informationen

Sind im BMW Syndikat Forum zu finden.

Quelle & Danksagung

 

Besonderen Dank möchte ich acolt und mrperfect (drive2) und Hates und myfirst1er alle aus dem www.bmw-syndikat.de Forum richten. Erst durch die Intensive Zusammenarbeit mit diesem beiden Forenmitgliedern, war es möglich das Geheimnis zu lüften.