ECU does add timing...discuss
I mentioned that too on post 41, cant remember who I said that to
https://www.evolutionm.net/forums/sh...9&postcount=41
Nonrtheless, I like it set to 0* on the #2 map, I think it's purpose is to adjust for the slower burn with excess CO2 from exhaust dilution. Knocks less that way
https://www.evolutionm.net/forums/sh...9&postcount=41
Nonrtheless, I like it set to 0* on the #2 map, I think it's purpose is to adjust for the slower burn with excess CO2 from exhaust dilution. Knocks less that way
I started looking after you posted that. IMHO it is the low load cruise(closed loop) advance, same function as the vacuum advance in distributor ignitions. But what you say is valid too, all of the components interact with each other.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
I've worked many more of the details that control these advance tables. C6C6CH3vo was exactly right about these tables. These timing tables are used *only* when the EGR valve is open. There are a few other conditions that control the usage of the tables. The tables are skipped if the IAT and coolant temp are below minimum values. And the tables are skipped if the TPS is below a minimum value (17% TPS). Details follow... I'll start off by relisting the old tables and then listing the new tables that I found (88590015 ROM, ECUFlash 1.34):
<table name="High Oct EGR Enabled Advance" category="Timing" address="38f9" type="3D" level="1" swapxy="true" scaling="Timing">
<table name="Engine Load" address="6f2c" type="X Axis" elements="21" scaling="Load"/>
<table name="RPM" address="6efa" type="Y Axis" elements="20" scaling="RPM"/>
</table>
<table name="Low Oct EGR Enabled Advance" category="Timing" address="3749" type="3D" level="1" swapxy="true" scaling="Timing">
<table name="Engine Load" address="6f2c" type="X Axis" elements="21" scaling="Load"/>
<table name="RPM" address="6efa" type="Y Axis" elements="20" scaling="RPM"/>
</table>
<table name="Base EGR Duty vs Load and RPM" category="Timing" address="4139" type="3D" level="1" swapxy="true" scaling="EGRDuty">
<table name="Load Fuel/Timing" address="72f6" type="X Axis" elements="11" scaling="Load"/>
<table name="RPM" address="72d8" type="Y Axis" elements="10" scaling="RPM"/>
</table>
<table name="EGR Duty Normalization Factor vs Coolant Temp" category="Timing" address="41ba" type="2D" scaling="EGRDutyCTFactor">
<table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
</table>
<table name="EGR Duty vs RPM (Alternate Condition?)" category="Timing" address="41c8" type="2D" scaling="EGRDuty">
<table name="RPM" address="6b7a" type="Y Axis" elements="10" scaling="RPM"/>
</table>
Also there are two scaling definitions that need to be added to the evo<7,9>base.xml file:
<scaling name="EGRDuty" units="%" toexpr="x/1.28" frexpr="x*1.28" format="%.1f" min="0" max="100" inc="0.1" storagetype="uint8" endian="big"/>
<scaling name="EGRDutyCTFactor" units="Fraction" toexpr="x/128" frexpr="x*128" format="%.01f" min="0" max="1" inc="0.01" storagetype="uint8" endian="big"/>
Notice that I've changed the name of the old tables from "Dynamic Advance" to "EGR Enabled Advance". This name more correctly describes their function. The third table in the list is the base EGR duty cycle vs rpm & load. Its a pretty self-explanatory table. The fourth table is used to adjust the Base EGR Duty as a function of coolant temp. Whatever value is looked up in table 4 will get multiplied times the value looked up in table 3, i.e., table3 * table4 = applied EGR duty cycle. The 5th table appears to be some sort of alternate means for determining what EGR Duty to use. Under certain conditions, it gets used instead of the table3*table4 value. I don't know what the conditions have to be for table 5 to be used. There are three flags that that I have not tried to figure out yet that determine when the alternate method is used.
If you'd like to log EGR duty, its at MUT85. Here is the entry to add to EvoScan:
<DataListItem DataLog="N" Color="" Display="EGRDuty" LogReference="EGRDuty" RequestID="85" Eval="x/1.28" Unit="%" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="100" ChartMin="0" ChartMax="100" ScalingFactor="1" Notes="" Priority="1" Visible="false" />
That pretty much covers what I figured out. There are several misc 1D tables for coolant temp, IAT, and TPS, but they're really not worth presenting. They just keep the EGR system from operating during non-optimal (i.e., engine warmup) conditions.
Base EGR duty vs load and RPM

Normalization for coolant temp

Alternate table for determination of EGR duty
<table name="High Oct EGR Enabled Advance" category="Timing" address="38f9" type="3D" level="1" swapxy="true" scaling="Timing">
<table name="Engine Load" address="6f2c" type="X Axis" elements="21" scaling="Load"/>
<table name="RPM" address="6efa" type="Y Axis" elements="20" scaling="RPM"/>
</table>
<table name="Low Oct EGR Enabled Advance" category="Timing" address="3749" type="3D" level="1" swapxy="true" scaling="Timing">
<table name="Engine Load" address="6f2c" type="X Axis" elements="21" scaling="Load"/>
<table name="RPM" address="6efa" type="Y Axis" elements="20" scaling="RPM"/>
</table>
<table name="Base EGR Duty vs Load and RPM" category="Timing" address="4139" type="3D" level="1" swapxy="true" scaling="EGRDuty">
<table name="Load Fuel/Timing" address="72f6" type="X Axis" elements="11" scaling="Load"/>
<table name="RPM" address="72d8" type="Y Axis" elements="10" scaling="RPM"/>
</table>
<table name="EGR Duty Normalization Factor vs Coolant Temp" category="Timing" address="41ba" type="2D" scaling="EGRDutyCTFactor">
<table name="Coolant Temp" address="6fde" type="Y Axis" elements="8" scaling="Temp"/>
</table>
<table name="EGR Duty vs RPM (Alternate Condition?)" category="Timing" address="41c8" type="2D" scaling="EGRDuty">
<table name="RPM" address="6b7a" type="Y Axis" elements="10" scaling="RPM"/>
</table>
Also there are two scaling definitions that need to be added to the evo<7,9>base.xml file:
<scaling name="EGRDuty" units="%" toexpr="x/1.28" frexpr="x*1.28" format="%.1f" min="0" max="100" inc="0.1" storagetype="uint8" endian="big"/>
<scaling name="EGRDutyCTFactor" units="Fraction" toexpr="x/128" frexpr="x*128" format="%.01f" min="0" max="1" inc="0.01" storagetype="uint8" endian="big"/>
Notice that I've changed the name of the old tables from "Dynamic Advance" to "EGR Enabled Advance". This name more correctly describes their function. The third table in the list is the base EGR duty cycle vs rpm & load. Its a pretty self-explanatory table. The fourth table is used to adjust the Base EGR Duty as a function of coolant temp. Whatever value is looked up in table 4 will get multiplied times the value looked up in table 3, i.e., table3 * table4 = applied EGR duty cycle. The 5th table appears to be some sort of alternate means for determining what EGR Duty to use. Under certain conditions, it gets used instead of the table3*table4 value. I don't know what the conditions have to be for table 5 to be used. There are three flags that that I have not tried to figure out yet that determine when the alternate method is used.
If you'd like to log EGR duty, its at MUT85. Here is the entry to add to EvoScan:
<DataListItem DataLog="N" Color="" Display="EGRDuty" LogReference="EGRDuty" RequestID="85" Eval="x/1.28" Unit="%" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="0" GaugeMax="100" ChartMin="0" ChartMax="100" ScalingFactor="1" Notes="" Priority="1" Visible="false" />
That pretty much covers what I figured out. There are several misc 1D tables for coolant temp, IAT, and TPS, but they're really not worth presenting. They just keep the EGR system from operating during non-optimal (i.e., engine warmup) conditions.
Base EGR duty vs load and RPM

Normalization for coolant temp

Alternate table for determination of EGR duty
Last edited by mrfred; Mar 30, 2008 at 11:27 AM.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Thread Starter
Joined: Jan 2004
Posts: 11,406
Likes: 78
From: Northwest
I know that these still function with the EGR test off (0x8D89), so I am wondering if we could use them if the EGR had been deleted (no flow at any rate) but was left hooked up and then we set the values to where it would stay open 100% of the time.
This obviously explains why Bryan and I found it to be inconsistent in its application.
This obviously explains why Bryan and I found it to be inconsistent in its application.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
I know that these still function with the EGR test off (0x8D89), so I am wondering if we could use them if the EGR had been deleted (no flow at any rate) but was left hooked up and then we set the values to where it would stay open 100% of the time.
This obviously explains why Bryan and I found it to be inconsistent in its application.
This obviously explains why Bryan and I found it to be inconsistent in its application.
With some rescaling of the axes on that third table, this could definitely be used over a wider range of loads and rpms. But what would be the value over the stock ign advance setup?
Thread Starter
Joined: Jan 2004
Posts: 11,406
Likes: 78
From: Northwest
I am lazy and like the idea that to some extent the car looks for best timing. 
No there isnt really a benefit, I just like this type of system like what is found on the Subarus. I thought if we had something similar it should be put to use. It works great for what its for though. I guess I need to zero out the tables other than the cruise zone.
edit- On the otherhand looking at the EGR thread, this will work great for mileage when I switch to E85 so maybe I will leave it as is and not delete it.

No there isnt really a benefit, I just like this type of system like what is found on the Subarus. I thought if we had something similar it should be put to use. It works great for what its for though. I guess I need to zero out the tables other than the cruise zone.
edit- On the otherhand looking at the EGR thread, this will work great for mileage when I switch to E85 so maybe I will leave it as is and not delete it.
Last edited by JohnBradley; Mar 30, 2008 at 12:38 PM.
I added a link to this thread to the rescaling load thread because I didn't know that those load cells were linked in the 2 other tables listed here. Definitely explains some of those intermittment 1 counts I sometimes get on tip-in.
Will have to test next Fri and see if it makes a big diff or not.
Will have to test next Fri and see if it makes a big diff or not.
Using the guestimation method (using relative offsets from evo 9 rom)and luck
I found 2 tables
EGR 1?? table address="46c9
X axis address="67f6"
Y Axis address="6876"
EGR 2??address="4743
X axis address="67f6"
Y Axis address="6876"
(Don't know if the x & y axis are correct.)
It looked like there was a 3rd table around there too.
Last edited by Jorge T; Mar 30, 2008 at 05:09 PM. Reason: added pics
Rom id 97140015
Building off of what Jorge T had:
EGR 1?? table address="46c9
X axis address="6a4a"
Y Axis address="6aca"
EGR 2??address="4743"
X axis address="6a4a"
Y Axis address="6aca"
-Paul
Building off of what Jorge T had:
EGR 1?? table address="46c9
X axis address="6a4a"
Y Axis address="6aca"
EGR 2??address="4743"
X axis address="6a4a"
Y Axis address="6aca"
-Paul
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
I guess I'm to have to figure out a setting to disable the EGR system or disable the EGR-enabled ign advance. I should have something in a few days.
Here is the xml code for 88840016:
Code:
<scaling name="EGRDuty" units="%" toexpr="x/1.28" frexpr="x*1.28" format="%.1f" min="0" max="100" inc="0.1" storagetype="uint8" endian="big"/> <scaling name="EGRDutyCTFactor" units="Fraction" toexpr="x/128" frexpr="x*128" format="%.01f" min="0" max="1" inc="0.01" storagetype="uint8" endian="big"/> <table name="High Oct EGR Enabled Advance" category="EGR" address="38f9" type="3D" swapxy="true" scaling="Timing"> <table name="Engine Load" address="7034" type="X Axis" elements="21" scaling="Load"/> <table name="RPM" address="7002" type="Y Axis" elements="20" scaling="RPM"/> </table> <table name="Low Oct EGR Enabled Advance" category="EGR" address="3749" type="3D" swapxy="true" scaling="Timing"> <table name="Engine Load" address="7034" type="X Axis" elements="21" scaling="Load"/> <table name="RPM" address="7002" type="Y Axis" elements="20" scaling="RPM"/> </table> <table name="Base EGR Duty vs Load and RPM" category="EGR" address="415d" type="3D" level="1" swapxy="true" scaling="EGRDuty"> <table name="Load Fuel/Timing" address="73fe" type="X Axis" elements="11" scaling="Load"/> <table name="RPM" address="73e0" type="Y Axis" elements="10" scaling="RPM"/> </table> <table name="EGR Duty Normalization Factor vs Coolant Temp" category="EGR" address="41de" type="2D" scaling="EGRDutyCTFactor"> <table name="Coolant Temp" address="70e6" type="Y Axis" elements="8" scaling="Temp"/> </table> <table name="EGR Duty vs RPM (Alternate Condition?)" category="EGR" address="41ec" type="2D" scaling="EGRDuty"> <table name="RPM" address="6c82" type="Y Axis" elements="10" scaling="RPM"/> </table>
Last edited by al\lupo; Apr 1, 2008 at 09:45 AM.
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
BTW, seems like you are getting a handle on the disassembly. Nice.








