Kombiinstrument - Plateaufunktion deaktivieren

Aus T4Forums Doku
Version vom 8. April 2021, 12:40 Uhr von TCA965 (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Entfernen der sogennanten "Plateau-Funktion" aus dem Kombiinstrument.

(Aktuell nur für die "blauen" KIs!)

Was ist die Plateau-Funktion?

Kurz gesagt, zeigt das KI in einem Bereich zwischen 75°C und 105°C immer 90°C an.

Plateau-Funktion blau, angepasste Darstellung orange


Um dieses Verhalten zu ändern, muss man das Kennfeld der Temperaturanzeige bearbeiten.

Das Kennfeld ordnet verschiedenen Temperaturwerten die passenden Werte für die Ansteuerung des Zeigermotors zu.

Im originalen Kennfeld wird hier allen Temperaturen zwischen 75°C und 115°C der Zeigerwert 90° (Mittelstellung) zugeordnet.


Kennfeld finden

Um das Kennfeld bearbeiten zu können, so muss man es im Dump erst einmal finden.

Für einige KIs habe ich das Kennfeld gefunden, leider hat scheinbar jedes KI (also jede Teilenummer) eine andere Speicherstelle dafür.

Teilenummer Adresse Temperaturwerte Adresse Zeigerwerte
7D0 920 800 B 0x106 - 0x111 0x112 - 0x11D
7D0 920 802 Q 0x2C8 - 0x2D3 0x2E0 - 0x2EB
7D0 920 803 B 0x24C - 0x257 0x258 - 0x263


Was tut man, wenn das eigene KI nicht in der Tabelle auftaucht?

Kennfeld selber finden

Bisher begann das Kennfeld der Temperatur immer bei 30°C. 30°C ist im EEPROM als "F0 00" abgelegt. Also sucht man im Dump nach "F0 00". Bei meinem KI (7D0 920 803 B) gibt es zwei Treffer. Was also nun?

Der Zweite Temperaturwert betrug bisher immer 50°C. Das ist codiert als: "90 01". Die Zahlenfolge "F0 00 90 01" findet sich bei mir nur einmal. Also habe ich das Temperaturfeld gefunden.

Dieser Weg funktioniert bei den Zeigerwerten nicht, da offenbar jedes KI ab Werk so kalibriert wurde, das 90°C auch exakt auf dem "90°C-Strich" steht. Hier gibt es aber einen einfach Trick: meist steht das Zeigerkennfeld direkt hinter dem Temperaturkennfeld. Leider aber auch nicht immer. Einige KIs legen das Temperaturfeld doppelt ab, einmal mit fallendenden, dann mit steigenden Temperaturen. Das Zeigerkennfeld liegt "hinter" dem "zweiten" (wenn es zwei gibt).

Wie werden Werte im EEPROM eigentlich abgelegt

Oder auch: wie hole ich aus dem HEX-Durcheinander Zahlen heraus?

Um von einer Zahl auf den abgelegten Wert zu kommen geht man wie folgt vor: Zahl * 8 -> Das in HEX umwandeln (Windows Taschenrechner "Programmierer") -> Die Werte vertauschen.

Beispiel: 115 * 8 = 920. 920 in HEX: 03 98 (der Windows Taschenrechner zeigt "398" an, also vorn Nullen ergänzen). Das vertauscht: "98 03" - so würde es im Dump liegen.

Anderherum geht es genauso: Werte aus dem Dump nehmen und vertauschen: "90 01" wird zu "01 90". Das als dezimalzahl umwandeln: "01 90" -> 400. Das durch 8 teilen: 400 / 8 = 50 <- das ist der gespeicherte Wert.


Wie passe ich das Kennfeld nun an?

Ich schreibe mir alle Werte (mit bereits getauschten Stellen) in Excel auf und berechne dort den Dezimalwert dazu (Excel Funktion: HEXINDEZ(zahl) / HEX2DEC(number) [englische Version]). Dann teile ich die Werte durch 8.

Für das Temperaturfeld ergibt sich:


Adresse HEX Wert Dezimalwert Temperatur in °C (Dezimalwert / 8)
0x24D & 0x24C 00 F0 240 30
0x24F & 0x24E 01 90 400 50
0x251 & 0x250 02 58 600 75
0x253 & 0x252 03 98 920 115
0x255 & 0x254 03 D0 976 122
0x257 & 0x256 04 10 1040 130


Das gleiche mache ich für die Werte des Schrittmotors:

Tempanzeige.png


Adresse HEX Wert Dezimalwert Schrittmotorwert
0x259 & 0x258 00 24 36 4.5
0x25B & 0x25A 00 24 36 4.5
0x25D & 0x25C 02 E4 740 92.5
0x25F & 0x25E 02 E4 740 92.5
0x261 & 0x260 05 0A 1290 161.25
0x263 & 0x262 05 A4 1444 180.5


Nun stelle ich den Temperaturwert und den Schrittmotorwert graphisch dar.

Plataeau Funktion.png


Man sieht, das es streng genommen zwei Plateaus gibt. Das oben angesprochene Plateau um 90°C und ein weiteres am Anfang. Die Nadel springt mit dem Einschalten der Zündung auf den Wert von 50°C und verlässt diesen auch erst ab 50°C.

Danach geht es an die linearisierung des Plateaus um 90°C (das erste kann man natürlich auch linearisieren, aber dort findet ohnehin so wenig Zeigerausschlag statt, dass man es vermutlich kaum sieht).

Die eigentliche Linearisierung ist nichts besonderes. Man bildet eine lineare Funktion (f(x) = m * x + b) über die äußeren Werte (50°C zu 4.5° Auslenkung und 130°C zu 180.5° Auslenkung) und ermittelt so die passenden Schrittmotorwerte zu 75°C, 115°C und 122°C.

In meinem Falle ergibt sich nun das:


Temperatur in °C Zeigerwert alt Zeigerwert neu
30 4.5 4.5
50 4.5 4.5
75 92.5 59.5
115 92.5 147.5
122 161.25 162.9
130 180.5 180.5

Das stelle ich dann wieder graphisch dar:

Plateau-Funktion blau, angepasste Darstellung orange

Man sieht , das nun der "echte" 90°C Temperaturwert auch mit dem Zeigerwert 92.5 (Mittelstellung) nach wie vor übereinstimmt (Schnittpunkt zwischen blau und orange)


Fast geschafft ;)


Das Kennfeld ist nun angepasst, zu guter letzt muss es aber wieder in den EEPROM.

Kennfeld in EEPROM ablegen

Was haben wir nun eigentlich verändert?

Es sind nur drei Werte, die Winkelwerte für die Temperaturen 75, 115 und 122°C.


Temperatur in °C Zeigerwert alt Zeigerwert neu
75 92.5 59.5
115 92.5 147.5
122 161.25 162.9


Diese drei neuen Werte werden jetzt wieder passend codiert.

59.5 * 8 = 476

147.5 * 8 = 1180

162.9 * 8 = 1303.2

Das wieder nach HEX umwandeln:

01 DC

04 9C

05 17

Die Stellen wieder vertauschen:

DC 01

9C 04

17 05

Diese Werte nun dorthin übernehmen, wo zuvor die alten Werte standen:

Aenderung dump plateau.PNG


Den geänderten Dump unter einem neuen Dateinamen abspeichern und wieder in das KI flashen.

Kurz warten: fertig - Das KI zeigt jetzt die reale Temperatur an, die Plateau-Funktion ist Geschichte.





Zurück zur Übersicht