2017. április 13., csütörtök

ECU #8


A korábban minden ECU-val (szoftver verzióval) megjelenített EGR grafikont ezután már nincs értelme elkészíteni, így az adatelemzés most lekorlátozódott a maradék kettőre. Ugyan jobban is el lehetne mélyedni a részletekben és az eddig nem ismert jellemzők megfejtésében, de erre szokás szerint most sem volt idő. A fuel trim és a kopogásszenzor értékei is jól mutatnak a 12594690-es verzióban.
A LTFT értéke gyakorlatilag végig a negatív 0-(-5) tartományban mozog:
Ez a 12215794 verzió (09391263 BA) EGR kikapcsolt változatához képest is hoz némi javulást:

Kopogási hajlmaban szintén kedvezőbb kicsit (eltérő a skála):

Ennek ellenére érzetre nem hozott sem simább járást, sem dinamika javulást. Egy dolog viszont rosszabb lett.

Alapjárat
Az eredeti alapjárati fordulatszám sem optimális már a könnyű lendkerékhez és az eltávolított balansztengelyekhez, de a körülbelül 100 fordulattal alacsonyabb már kissé zavaró is. Nem fullad, nem nehezebb az indulás sem lényegesen, viszont több rezonancia keletkezik. Az alapjárathoz tartozó térképpel kapcsolatban eléggé bizakodó voltam, hiszen különbözik két programban és elég jól meghatározott értéke van. Annyi nehezítés volt a dologban, hogy jelen esetben csak 1 dimenziós számsorozatról beszélhetünk. Vagy pontosabban fogalmazva több 1 dimenziósról. Legalábbis az a feltételezés, hogy az alapjárati fordulatszámot alapvetően csak a vízhőmérséklet határozza meg. Elképzelhető, hogy vannak korrekciós térképek is, de az most nem lényeges. A korábban hivatkozott fájlban az szerepel, hogy van egy normál alapjárati térkép, egy a légkondihoz (A/C), egy a menet közbeni és egy a menet közben is működő klíma állapotához. A fordulatszám mindenhol a bejegyzett érték 12.5-szerese. Nem igazán értem miért jó ez a szám. A maximális érték 8 biten így már 3000 RPM feletti. A jóval szerencsésebbnek tűnő 10-es szorzóval is elégséges 2550 lenne. De nem számít, bizonyára megvan az oka. Éltem a feltételezéssel, hogy itt is hasonló multiplikátort használt a szerző. Jó szokásomhoz híven most is elkezdtem automatizálni. Azt tudtam, hogy a beállított értékeknek valahol 600 és 1500 RPM között (48/120) kell lennie, viszont nem tudtam, hogy hány lépcsőben van definiálva, vagyis milyen hosszú az 1 dimenziós térkép. A logok alapján nehéz pontosan belőni, hogy adott hőmérsékleten milyen értéket tart, mert egy 50-100 fordulatos tartományban folyamatosan ugrál. Sejtésem ugyan volt, de olyan mérésem nem, ami kifejezetten az alapjárat meghatározására ment rá. Már épp terveztem ilyet, de végül nem lett rá szükség. Az automatával a bináris megfelelő részéből könnyűszerrel kilistáztam azokat a számsorokat, ahol az értékek a megadott tartományba estek és monoton csökkenő képet mutatnak. Legalább 5-6 értékben biztos voltam ezért kezdetben annyival vágtam neki. Később ugyan finomítottam a keresési algoritmuson is, de annyira sok találat volt, hogy nem igazán vezetett sikerre. Egyértelmű bizonyítékot az szolgáltatott volna, ha a másik program megfelelő helyén egy hasonló, de kissé módosított számsorozat áll. Azonban a programokban van némi csúszás egymáshoz képest (látható a térképek kezdeti értékeinél is) ezért ez jóval bonyolultabb lett volna. Az automatával kudarcot vallottam. Már fejben készültem a mérésre, de végül csak ránéztem manuálisan is. WinOLS-ben egymás mellé lehet tenni két ablakot úgy, hogy a különbségeket kiemeli és akár tetszőleges értékkel el is csúsztatja. A már meglévő térképek jól elkülöníthetőek és tudtam, hogy nem ezekben lesz, ami nekem kell. A maradék részen pedig viszonylag sok az egyezés, így nem maradt túl sok lehetőség (azért volt elég, hogy túl egyszerű se legyen). Találtam is egy számsort, ahol a stabilnak tűnő 12,5-szeres érték 700 és 800 RPM-et adott a különböző változatokra:
108    104    100    88    84    80    76    68    64    64    64    64    64    64    64    64    64
108    104    100    84    78    78    78    68    64    60    56    56    56    56    56    56    56
Beírtam a 12594690-be a 12215794 értékeit, hogy ha mégis valami más lenne nagyon ne nyúljak mellé. Ez esetben azonban elsőre ment. (Na jó, korábban már volt egy próbám a 1706a térképpel, de az tényleg csak egy kósza ötlet volt.) Ezután beállítottam egy számomra kényelmes 850-es fordulatot. Ilyet:
108    104    100    84    78    78    78    68    68    68    68    68    68    68    68    64    64
1350   1300   1250   1050   975   975   975   850   850   850   850   850   850   850   850   800   800
A felső értékeket kicsit lejjebb vettem, hogy egy esetleges túlmelegedett állapotban kisebb legyen a hőterhelés, de ilyen úgysem nagyon fordulhat elő. Bár a skálázást nem ismerem, azt megnéztem, hogy 100 °C-ig nem ejti 850ől lejjebb. Ott pedig kapcsol a venti. A skálázás kiderítése nem lenne nehéz feladat csak be kellene állítani egy ilyesmit és mérni:
108    84    108    84    108    84    108    84    108    84    108    84    108    84    108    84    108
Egyelőre ennek kevés lenne a hozadéka, így nem töltöm vele az időt.
A térkép a 1701a azonosítót kapta, és frissítettem vele a táblázatot (v2.1) is. Ez az első 1 dimenziós térkép. A táblázatban más változás nincs.
A példafájlban egymást követték a különböző állapotok alapjárat térképei, azonban itt a közelben sincs hasonló. Kérdéses, hogy mi alapján állítja azokat, mert az biztos, hogy különböznek. Egyelőre nem zavar, hogy nem tudom, mert klímát viszonylag ritkán használok a menet közbeni értékkel sincs különösebb gondom. Elképzelhető, hogy egy jóval rövidebb térképet vagy simán csak egy szorzót alkalmaz az alapértékhez képest.

12591333 (12590370 YS)  
 
Azt említettem, hogy a 12591333 és a 12594690 között csak egészen minimális az eltérés. Elkezdtem reménykedni, hogy hátha csak az utóbbiban kapcsolták ki az EGR-t. Ha így lett volna nagyon könnyű lett volna megtalálni az ezért felelős kódrészletet. Feltöltöttem és most először azért drukkoltam, hogy működjön az EGR. De nem akart. Nincs ekkora szerencsém. Így most azt tudom, hogy ezen kettő kivételével az összes többi programban aktív. Ennek alapján már jó eséllyel megtalálható, de eléggé megnehezíti, hogy nem tudom pontosan mit is keresek. Valószínűleg csak 1 bájtot, amit kontextus nélkül elég nehéz beazonosítani, de nincs kétségem afelől, hogy kiderítem ha tudok eleget tesztelni. Már van is egy jelöltem, hamarosan kipróbálom. 

Járműazonosítók
Némileg a véletlen műve, hogy ráleltem egy furcsaságra. Többször előfordul, hogy a KESS-el felírt programot újra visszaolvasom. Jelenleg ez az egyetlen módja, hogy megtudjam a checksum-ot és hogy egy önmagában akár MPPS-el is visszatölthető bináris birtokába jussak. Szóval az tűnt fel, hogy a hardverazonosító a visszaolvasott programban mindig 12210453EB-re áll vissza, bármi is szerepeljen a feltöltöttben. Értelemszerűen írás közben változik meg. Innen kicsit továbbgondoltam. Esetleg nem csak a hardverazonosító változik, hanem mondjuk az egész blokk. És akkor lehet, hogy nem is kell semmi azonosítónak benne lennie íráskor. Kitöröltem tehát az egész részt 0x4000-tól, és felírtam úgy. A sejtésem beigazolódott. A visszaolvasás után minden szépen a helyén volt ismét, többek közt a biztonsági kód is. Azaz egy kiolvasott program mindig az autóhoz tartozó kódot fogja tartalmazni, akármit is töltünk rá.

STO 1315a EGR off
Kíváncsi voltam, hogy a kinullázott EGR térkép a többi programot hogyan befolyásolja. Különösképpen az STO érdekelt. Gyors próba utána továbbra is azt tudom mondani, mint eddig. Nem érzem az átütő erőt. A felső közép tartományban valamivel jobban megy ez biztos, de alul talán egy picit rosszabbul. A kopogási hajlma sem változott érdemben, így újfent elvetettem a hosszabb távú használatát.

Akárhogyis nézzük, az első posztban szereplő 5 célom közül 2 kipipálva. Néha azonban kezdem azt érezni, hogy az összehasonlítós/mérős/kitalálós módszer kezdni elérni a határt és ha tovább akarok menni, akkor csak a disassemble segíthet (akár csak részlegesen). Elkezdtem barátkozni az assembly-vel, de nem számítok rá, hogy a közeljövőben bármit is sikerülne ezzel elérnem, ahhoz még elég kemény dió.