Notices
ECU Flash

ISCV control system disassembly

Thread Tools
 
Search this Thread
 
Old Sep 21, 2010 | 02:41 PM
  #91  
merlin.oz's Avatar
Evolved Member
15 Year Member
 
Joined: Jun 2008
Posts: 824
Likes: 23
From: Sydney
just to clarify a point here about the desired minimum idle rpm v temp table -
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
Reply
Old Sep 21, 2010 | 03:11 PM
  #92  
Boosted Tuning's Avatar
Former Sponsor
iTrader: (12)
 
Joined: Jun 2005
Posts: 2,383
Likes: 8
From: Chico, CA (Nor-Cal)
I think we need to redo the Idle defs for ECUflash....
Reply
Old Sep 21, 2010 | 04:46 PM
  #93  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Originally Posted by merlin.oz
just to clarify a point here about the desired minimum idle rpm v temp table -
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
The ECU aims to hit the target idle under most conditions. The min idle vs coolant temp is the target idle if there are no conditions that point to overriding tables. All the overriding tables have target idles that are higher than the min idle vs coolant temp. An example of an overriding idle table is the target idle for AC system enabled.

ISCV Demand tables are somewhat like baseline WGDC tables. They are estimated demand values that push the ISCV to a position that should get idle close to the target idle. There is also a bunch of 1D tables that are adders or subtractors to these 2D tables. There are also learned ISCV trims (just like fuel trims) that are loggable over MUT. The ISCV system is one of the more complex control algorithms in the ECU. Its harder for me to follow than the fuelling algorithm, partly because tables feed into other tables, but also because there are a huge number of difficult to determine parameters that affect the ISCV step position. My initial post on the disassem has quite a few table names that provide no information on when the tables are used. I think it would take another week of solid study to figure out exactly what these tables do. Not sure its worth it for me.
Reply
Old Sep 21, 2010 | 05:31 PM
  #94  
l2r99gst's Avatar
Evolved Member
iTrader: (2)
 
Joined: Mar 2004
Posts: 3,499
Likes: 4
From: CA
mrfred, have you ever thought about maybe releasing bigger efforts/patches as a pay option? Your work definitely deserves it. I know this forum is all about sharing and donations, but just thinking out loud about how you can make it worth your time for your efforts.
Reply
Old Sep 21, 2010 | 05:57 PM
  #95  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Originally Posted by l2r99gst
mrfred, have you ever thought about maybe releasing bigger efforts/patches as a pay option? Your work definitely deserves it. I know this forum is all about sharing and donations, but just thinking out loud about how you can make it worth your time for your efforts.
Its tempting and I've definitely given it some consideration, but along with the revenue, there are support and deadline responsibilities when doing a wide scale paid patch or disassem effort. And I'd have to be a vendor.
Reply
Old Oct 12, 2010 | 09:36 PM
  #96  
Kakihara's Avatar
Evolving Member
 
Joined: Sep 2008
Posts: 111
Likes: 2
From: Europe
Hi everyone

my ISC steps never go lower than 40 at idle (hot engine)
those 40 steps do not fluctuate, they go to 40 and stay there it seems to be the "bottom line" under where they can't go I'm pretty sure it's ECU related or it would vary ever so slightly but it does not (except when the fan activate of course)

My ISC steps where 40 before tuning and they still are after, tuner said my car was the problem and didn't care more than that but I do.
I tried the BISS screw, all it does is make my idle rpm rise..I still have my 40 steps whatever it's setting.
I had the car mechanically/electrically checked by a professionnal and nothing seems wrong

it may be related to my cams because the last logs where my ISC steps where lower than 40 date from when the ECU was stock and before I had the cams installed (GSC S1) after that the steps mysteriously jumped up to 40 at idle and never went lower..it's been a year now.


Anyway I finally decided and managed to read my "tuned" ecu which seems to be tephra v7 : 88580714

what should I be looking at is there an ISCV table of some sort that could do this ?
Reply
Old Oct 19, 2010 | 08:49 AM
  #97  
Kakihara's Avatar
Evolving Member
 
Joined: Sep 2008
Posts: 111
Likes: 2
From: Europe
I tried to adapt mrfred "new definitions" to my current rom and here are the results,

this is for the roms : 88580013 - 88580014 - 88580714

these tables give me the exact same values that you can see with the tables mrfred posted on page 1 for 88590015 rom
THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
Code:
<scaling name="ISCV_AX2_8" units="% Demand" toexpr="x*100/255" frexpr="x*255/100" format="%.1f" min="0" max="200" inc="0.5" storagetype="uint8" endian="big"/>
<scaling name="ISCV_AX2_16" units="% Demand" toexpr="x*100/255" frexpr="x*255/100" format="%.1f" min="0" max="200" inc="0.5" storagetype="uint16" endian="big"/>

<table name="ISCV Demand Target Idle Trim (sub_1ECF6)" category="ISCV Control" type="2D" address="3e10" level="2" scaling="ISCV_AX2_8">
<table name="Target Idle Deviation" type="Y Axis" address="6da6" elements="9" scaling="RPMTarget"/>
</table>

<table name="ISCV Demand General CTS Subtractor (sub_1EBE6)" category="ISCV Control" type="2D" address="3e2e" level="2" scaling="ISCV_AX2_8">
<table name="Coolant Temp" type="Y Axis" address="70e6" elements="8" scaling="Temp"/>
</table>

<table name="ISCV Demand Baro Adder (FFFF6E98) (sub_1E1EE)" category="ISCV Control" type="2D" address="3dfe" level="2" scaling="ISCV_AX2_8">
<table name="Baro" type="Y Axis" address="6f30" elements="5" scaling="Baro16"/>
</table>

<table name="ISCV Demand RPM Adder* (sub_1EFC0)" category="ISCV Control" type="2D" address="41fc" level="2" scaling="ISCV_AX2_8">
<table name="RPM" type="Y Axis" address="6fa8" elements="10" scaling="RPM"/>
</table>
Here are some more that are even less safe the the ones above because
these tables DO NOT give me the same values that you can see with the tables mrfred posted on page 1 for 88590015 rom, the values are sligthly different, it may be because I'm trying to compare 2 roms that originally have different values or because the address I put are completly wrong !

THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
Code:
<table name="ISCV Demand Startup CTS Adder (sub_1EBB8)" category="ISCV Control" type="2D" address="3d84" level="2" scaling="ISCV_AX2_8">
<table name="Coolant Temp" type="Y Axis" address="70e6" elements="8" scaling="Temp"/>
</table>

<table name="ISCV Demand CTS Adder #1** (sub_1F1F8, sub_1EA0C, sub_1F596) [sub_1EFC0]" category="ISCV Control" type="2D" address="3d5c" level="2" scaling="ISCV_AX2_8">
<table name="Coolant Temp" type="Y Axis" address="71ca" elements="8" scaling="Temp"/>
</table>

<table name="ISCV Demand CTS Adder #1b*** (sub_1F2C6) [sub_1EFC0]" category="ISCV Control" type="2D" address="3d70" level="2" scaling="ISCV_AX2_8">
<table name="Coolant Temp" type="Y Axis" address="71ca" elements="8" scaling="Temp"/>
</table>

<table name="ISCV Demand Baro Adder**** (FFFF7C0E) (sub_1F6E6) [sub_1EFC0]" category="ISCV Control" type="2D" address="6b00" level="2" scaling="ISCV_AX2_8">
<table name="Baro" type="Y Axis" address="6f30" elements="5" scaling="Baro16"/>
</table>
Reply
Old Oct 21, 2010 | 10:28 PM
  #98  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
First post updated to include tables that have a strong effect on throttle hang.
Reply
Old Oct 21, 2010 | 11:03 PM
  #99  
Boosted Tuning's Avatar
Former Sponsor
iTrader: (12)
 
Joined: Jun 2005
Posts: 2,383
Likes: 8
From: Chico, CA (Nor-Cal)
Originally Posted by mrfred
First post updated to include tables that have a strong effect on throttle hang.
Nice.

Can you find all those same tables in 9417 and 9653? If you did so, we'd have all the "major" EVO 8/9 ROMs idle tables correctly defined.

Maybe we can even get it changed in the default ECUFlash defs.
Reply
Old Oct 22, 2010 | 01:23 AM
  #100  
merlin.oz's Avatar
Evolved Member
15 Year Member
 
Joined: Jun 2008
Posts: 824
Likes: 23
From: Sydney
terrific,

shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?

mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.

Last edited by merlin.oz; Oct 22, 2010 at 02:52 AM.
Reply
Old Oct 22, 2010 | 07:34 AM
  #101  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Originally Posted by merlin.oz
terrific,

shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?

mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.
Thanks for catching the axis name error. Fixed the first post. The CTS table is indeed an adder and not a scalar to the TPS table. The forumula for these sets of tables is:

(TPS adder + CTS adder)*baro factor -> RAM

Not sure which table you mean for the 53C. Can you post the table address and ROM ID or post a link?

Last edited by mrfred; Oct 22, 2010 at 08:21 AM.
Reply
Old Oct 22, 2010 | 02:13 PM
  #102  
merlin.oz's Avatar
Evolved Member
15 Year Member
 
Joined: Jun 2008
Posts: 824
Likes: 23
From: Sydney
mrfred, this is the item. It used to have three elements, the third designated as unknown.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.

This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.


<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>


Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.

Last edited by merlin.oz; Oct 22, 2010 at 02:19 PM.
Reply
Old Oct 22, 2010 | 03:08 PM
  #103  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Originally Posted by merlin.oz
mrfred, this is the item. It used to have three elements, the third designated as unknown.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.

This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.


<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>


Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.
The data indicated by that table address is never used in 88580013. I found the equivalent data in my ROM, and its not used there either. Are you sure these items do anything? Maybe recheck the table address?

Wish I could say more about when all the ISCV tables are used, but its back to my original statement that the ISCV routines are likely among the most complex in the entire ROM. There must be fifty different flags/conditions that affect when certain tables are used. I thought about having another go at it last night, but as soon as I started reviewing some of the subroutines, I quickly realized that I don't want to go there again anytime soon.
Reply
Old Oct 23, 2010 | 12:06 AM
  #104  
merlin.oz's Avatar
Evolved Member
15 Year Member
 
Joined: Jun 2008
Posts: 824
Likes: 23
From: Sydney
Well I have logged my E9 with 88580013 and, with the "TimingLimit" set to 0, as the engine warms up the spark jumps around (idle) and when the temp=53*C, the spark settles to whatever is in the spark map idle cells, with no fritzing arround.

If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.
Reply
Old Oct 23, 2010 | 12:55 AM
  #105  
mrfred's Avatar
Thread Starter
EvoM Guru
iTrader: (50)
 
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Originally Posted by merlin.oz
Well I have logged my E9 with 88580013 and, with the "TimingLimit" set to 0, as the engine warms up the spark jumps around (idle) and when the temp=53*C, the spark settles to whatever is in the spark map idle cells, with no fritzing arround.

If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.
you're sure of the address? what made you decide to try these values?
Reply



All times are GMT -7. The time now is 04:45 AM.