RomRaider Logo

RomRaider

Open Source ECU Tools
 FAQ •  Register •  Login 

RomRaider

Documentation

Community

Developers

It is currently Sat Feb 21, 2026 3:52 pm

All times are UTC




Post new topic Reply to topic  [ 19 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Logic behing Knock Correction Advance Max Additive AZ1G701I
PostPosted: Sun Mar 23, 2014 12:43 am 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Hi,

While learning to tune, I have looked at a few of the tunes that are readily available for GD and GR STI. On thing that I have noticed is that many zero out the max additive timing tables. I have not found a lot of documentation as to how they are applied so I decided to dig in an try to understand some of the logic involved. While I am not done, I wanted to share my initial findings and see if there is any interest in me sharing more data.

All the research was done on a 2010 STI : AZ1G701I

In my initial research and datalogging on my car, I found that additive advance values were NEVER added to my timing advance. My tune has the table zero'ed out but I was looking at the logic around the table and found that there was always one of the scale factor that reduced everything to 0. I think I might have found why, here is what I have found :

1. I started by tracing references to the Knock Correction Advance Max A and this led me to the two following functions 0x41ec8 and 0x41f4e which are used to calculate the overall timing advance. Equation looks like this :
Code:
((1-E_cruise_non_cruise_ratio)*(Table_Knock_Correction_Advance_Max_Primary_Cruise(load,speed)+

Table_Knock_Correction_Advance_Max_Primary_Non_Cruise(load,speed)*E_cruise_non_cruise_ratio

+

*(0xFFFF7F54) * *(0xFFFF7F44) * *(0xFFFF7F5C) * *(0xFFFF7F58) Knock_Correction_Advance_Max_Additive_A_Knock_Condition_IAM)* IAM

+

*(0xFFFF7F40) * E_Knock_Correction_Advance_Max_additive_B_Knock_condition(load,speed)

= Timing Advance Value


2. So I logged some of those ram variable in my car and noticed the following : 0xFFFF7F58 and 0xFFFF7F40 were always 0. I spent most of my time on 0xFFFF7F40 because my IAM is 1 and I don't get much learned knock.

3. I traced the equation that writes to 0xFFFF7F40, I found the equation that write to this variable looks like this :

*(FFFF7f5c) * (*(FFFF7f44)* (0xFFFF7f48) ) = 0xFFFF7f40

4. In that case only 0xFFFF7f48 was always 0 so I traced that one down in function 0x418ac. In there I found out that it was related to a variable 0xFFFF7F6D which need to be a certain value to get that variable to values other than 0.

5. This lead me to function 0x4135c. This functions look at the following variable :

- IAT
- Coolant temp
- IAM
- FLKC tables

This logic will enable additive to be a part of the advance timing if :

Coolant temp > 83 degree C
ATM pressure > 680 mmhg
IAM > 0.84
There is only 5 or less cell in FKLC that are -2.4 or lower.
IAT is between 0 and 35 degree C

It checks for a few other things but that's some of the major ones. So right now, my belief is that my logging have shown that no additive timing gets added in my case because the temperature has been bellow 0 degree C (Its winter here in Canada). I find this pretty interesting that Subaru drops 5-7 degree of timing when it's cold or really hot. That being on top of other compensations tables. I wonder if it also explains why I have found that I have to run less timing that what people are suggesting (like 7.5 degree a peek torque vs 10-12 on 94 octate), I have only started tuning my car under low temperature.

I'll keep digging but before I document this some more, I wanted to know if this was already common knowledge ? I could create definitions with some of those parameters and provide my IDA files if people are interested to take a look at this.

Who uses additive timing in their tunes ? From what I am seeing here, it looks like I should start using them ... I have zero'ed them out in my tune.

Thanks to dshultz for showing me how to follow indexed references, and for all the documentation on this forum that allowed me to get started on this. (Merp/NFSW)


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Sun Mar 30, 2014 5:12 pm 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Hi guys,

I haven't received much feedback but I figured I would document it some more just for the heck of it. Over the last few days, I have put together a small test bench in HEW that exercises the logic of the functions involved in calculating the timing advance using the advance max and advance additive tables. I also threw in there the IAT compensation A. I didn't add comp B because I was mostly interested in timing at WOT and after looking at the logic, I concluded that it wouldn't add any timing when there is any other form of advance so. So what I want to cover is :

1) How additive timing is applied on the 2010 STI. This is not 100 % complete but I have about 93 % code coverage on the state machine code so I think its complete enough
2) Effect of temperature on ignition timing of the stock ECU
3) What is left to figure out

How additive timing is applied on the 2010 STI

There are a few functions involved :

Timing_Advance_Primary_And_Adv_A (0x41EC8)
CalcMaxAddRatioA (0x41606)
CalcMaxAddRatioB (0x418ac)
Enable_max_additive (0x4135c)
Timing_Advance_Primary_Adv_A_Adv_B (0x4135c)
timingCompAIAT (0x3D100)

In summary :

On startup, the car starts with no additive advance applied. It will stay that way until all the following conditions are met :

IAT > 32 F or < 90 F
Coolant Temp > 161 degree F
IAM > 0.84
Other criterias (check bellow).

Once these criterias are met, the car will start ramping up the Additive_A table slowly. I can't really log how long it will take because my tables are zero'ed out and the state machine won't get out of state A unless these tables are not zero. Initial estimates would be around 2-3 sec spent in advance regions. So your first dyno pull assuming everything else is okay. Once Additive A is fully ramped, the car will wait for another 3-6 seconds in full Additive_B ranges to start ramping down Additive A and ramp up Additive B. So you would need a few dyno pull to get full timing on a stock STI. Which is interesting considering some of the ugly stock dyno that we have seen. I wonder what the conditions were. Were they running full timing ?

Effect of temperature on ignition timing of the stock ECU

This is where things get interesting for me, I live in a colder climate so I am definitely interested in how Subaru uses the environmental stuff to tweak the calibration. So one thing that I found interesting while digging into this is that under 32 F, all additive advance is zero'ed. I thought, maybe timingCompAIAT make up for some of that but not all. Here are some datapoints that I gathered when running my test setup in HEW, so these are actual runtime numbers calculated using the ECU software.

Scenario 1) WOT, temperature higher than freezing

RPM : 4400
IAT : 40 F
Engine Load : 2.5 g/rev
Additive FSM: Additive B fully applied

Advance equal : Primary Advance Max Non Cruise + Advance Max Additive B + timingCompAIAT
= 9.96 degree

Scenario 2) WOT, temperature lower than freezing

RPM : 4400
IAT : 26 F
Engine Load : 2.5 g/rev
Additive FSM: No additive applied
Advance equal : Primary Advance Max Non Cruise + Advance Max Additive B + timingCompAIAT
= 6.5 degree

Scenario 3) WOT, temperature really hot, about the max temp 96 threshold

RPM : 4400
IAT : 97 F
Engine Load : 2.5 g/rev
Additive FSM: No additive applied
Advance equal : Primary Advance Max Non Cruise + Advance Max Additive B + timingCompAIAT
= 3.2 degree

So despite the temperature compensation tables adding timing when the temperature gets lower, by removing the additive timing tables, you will take away more timing than you add

What's left to figure out ?

Bunch of things, I have about 90 % overage on some of the functions but 65-70 in others. So there are still a bit of other logic that can affect the behavior. I think I have enough though to say that what I have describe the above is a good general idea of how things work. I need to spend more time understanding the knock control logic on that loop as well. The FSM uses the FKLC learned values to determine what additive table to use, it also listen to feedback knock, knock on cyl 4 etc. I'll take a deeper look at this as well as highlight the list of unknown variable. Finally, there are some ratio that influence how the advances are blended in Timing_Advance_Primary_XX that I haven't followed yet. All I can see is that they are 1.0 during WOT in my logs

I have created some editor definition to control some of the parameter of the FSM. I am a bit afraid to share them because if not set properly, they can cause Additive A and B to be added at the same time resulting in twice the amount of advance. Let me know if you are interested in it and I can PM it to you


Last edited by whitewater on Tue Apr 01, 2014 12:21 am, edited 6 times in total.

Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Sun Mar 30, 2014 5:24 pm 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Some gory details, I can provide my IDA files which have more comments if anybody is interested

Enable_Max_Additive

Code:
OM:0004135C ; This funtion controles the state machine that will enable additive timing :
ROM:0004135C ;
ROM:0004135C ; stateA (0xFFFF7F6D)
ROM:0004135C ;
ROM:0004135C ; ******'h0 : Environmental condition validation ******
ROM:0004135C ;
ROM:0004135C ; To move to the next state the following conditions need to be met :
ROM:0004135C ;
ROM:0004135C ; IAM > 0.84
ROM:0004135C ; coolant_temp > 83 degree celcius
ROM:0004135C ; IAT > 0 degree celcius
ROM:0004135C ; IAT < 35 degree celcius
ROM:0004135C ; Baro pressure > threshold
ROM:0004135C ; RPM > 2800 RPM
ROM:0004135C ; RPM < 6600 RPM
ROM:0004135C ;
ROM:0004135C ; Less than a certain amount of cell in the knock learning table are bellow -2.4 and other criteria on the table that I have to figure out
ROM:0004135C ;
ROM:0004135C ; TODO : Figure out the knock related criterias
ROM:0004135C ;
ROM:0004135C ; ****** h'A Max_additive_advance_A ******
ROM:0004135C ;
ROM:0004135C ; In that state, the ratio that blends knock correction additive A is ramped up to 1 (MaxAddRatioA = 0xFFFF7F54)
ROM:0004135C ;
ROM:0004135C ; The state machine will stay in that state until counterD (0xFFFF7F84) becomes 0x50. That counter is calculated in function CalcMaxAddRatioA
ROM:0004135C ; and basically depends on how long MaxRatioA was close to 1 and time was spent in the advance region. Basically after some WOT cycles, the car will get there assuming
ROM:0004135C ; all other conditions are met
ROM:0004135C ;
ROM:0004135C ; ** Also to get out of this state, your attivie table need to not be zeroed out. There is a need for values above 3.8
ROM:0004135C ;
ROM:0004135C ; ****** h'62 Max_additive_advance_B ******
ROM:0004135C ;
ROM:0004135C ; We are now in Max_additive_advance_b, in that state MaxAddRatioE will be ramped up (0xFFFF7F48) and additive A will start being applied
ROM:0004135C ;
ROM:0004135C ; ****** h'5F Not sure ******
ROM:0004135C
ROM:0004135C Enable_max_additive:                    ; CODE XREF: sub_469B8+106p
ROM:0004135C                                         ; DATA XREF: sub_469B8:off_46CBCo



CalcMaxAddRatioA

Code:
00041606 ; This function will ramp up or down the ratio (maxAddRatioA) that blends the Additive Advance A to the overall timing advance.
ROM:00041606 ;
ROM:00041606 ; To increment, the advance state machine needs to be in 0xA state
ROM:00041606 ;
ROM:00041606 ; To decrement, the advance state machine needs to be in state 'h62
ROM:00041606 ;
ROM:00041606 ;
ROM:00041606
ROM:00041606 CalcMaxAddRatioA:                       ; CODE XREF: sub_469B8+100p
ROM:00041606                                         ; DATA XREF: sub_469B8:off_46CB8



CalcMaxAddRatioB

Code:
000418AC ; This function will ramp up or down the ratio (maxAddRatioB) that blends the Additive Advance B to the overall timing advance.
ROM:000418AC ;
ROM:000418AC ; To increment, the advance state machine needs to be in 0x62 state
ROM:000418AC ;
ROM:000418AC ;
ROM:000418AC
ROM:000418AC CalcMaxAddRatioB:         


Timing_Advance_Primary_and_Adv_A

Code:
00041EC8 Timing_Advance_Primary_and_Adv_A:       ; CODE XREF: sub_469B8+DCp
ROM:00041EC8                                         ; DATA XREF: sub_469B8:off_46CA0o
ROM:00041EC8                 mov.l   r14, @-r15      ; This function calcaltes the following equation :
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; Knock_Correcction_Advance_Max_Primary_Cruise_IAM*(1-E_cruise_non_cruise_ratio)
ROM:00041EC8                                         ; +
ROM:00041EC8                                         ; Knock_Correcction_Advance_Max_Primary_Non_Cruise_IAM*(E_cruise_non_cruise_ratio)
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; + ratios*Knock_Correcction_Advance_Max_Additive_A
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; Where ratios are made up of :
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; 0xFFFF7F54 (maxAddRatioA)
ROM:00041EC8                                         ; *
ROM:00041EC8                                         ; 0xFFFF7F44 (maxAddRatioB)
ROM:00041EC8                                         ; *
ROM:00041EC8                                         ; 0xFFFF7F5c (maxAddRatioC)
ROM:00041EC8                                         ; *
ROM:00041EC8                                         ; 0xFFFF7F58 (maxAddRatioD)
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; Results goes in
ROM:00041EC8                                         ;
ROM:00041EC8                                         ; 0xFFFF7F98
ROM:00041ECA                 sts.l   pr, @-r15
ROM:00041ECC                 fmov.s  fr12, @-r15


Timing Advance Primary Adv A Adv B

Code:
00041F4E Timing_Advance_Primary_Adv_A_Adv_B:     ; CODE XREF: sub_469B8+14Ep
ROM:00041F4E                                         ; DATA XREF: sub_469B8:off_46CECo
ROM:00041F4E                 sts.l   pr, @-r15       ; This functions adds the Advance B to the timing advance primary and Advance A


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Mon Mar 31, 2014 1:47 am 
Offline
Senior Member

Joined: Thu Aug 03, 2006 2:40 pm
Posts: 1934
interesting thread.

there's so much we/(more specifically) i don't know about these wonderfully complicated roms. it's nice to see some of the logic at least described in english.

i can tell you that over the years i have arrived at an approach that strives for the least complex solution that will do the job. as a result i generally will zero out a table and see if the car runs. i'll only start adding slopes here and there if it's really necessary. sometimes in the case of IATs you won't know until the seasons change.

i'm on carberry so obviously things are already kind of "simpler" out of the box. question is am i a good enough tuner to make the thing run like a top in all conditions? there is a lot of overlap amongst parameters cause/effect on operation so it becomes an academic point. so we cheat and close a loop around it! ;)

technically (code wise) i will be of pretty much zero help.


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Mon Mar 31, 2014 9:48 pm 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Hey,

I am glad it could be useful to someone. From experiences then, have you observed that the knock ceiling becomes lower for a given load at a lower IATs ?


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Tue Apr 01, 2014 12:23 am 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Added a third scenario, above max temp threshold. Also, here is definition for some of the parameters. I'll post more later.

Its funny before going through this process, I had not realized that the ECU was working with metric units ...

Code:
<table type="2D" name="Knock Correction Advance Max Additive Min Temp" category="Ignition Timing - Advance" storagetype="float" endian="little" sizey="1" userlevel="2">
   <scaling units="Intake Air Temp (Degrees F)" expression="(x*1.8)+32" to_byte="(x-32)/1.8" format="0.0" fineincrement="1" coarseincrement="5" />
   <table type="Static Y Axis" name="(Condition) - Result" sizey="1">
    <data>(Below) - Minimum activation threshold</data>
   </table>
   <description>Below this ambiant temperature value, the ECU will not apply Knock Correction advance Additive A or B</description>
  </table>
<table type="2D" name="Knock Correction Advance Max Additive Max Temp" category="Ignition Timing - Advance" storagetype="float" endian="little" sizey="1" userlevel="2">
   <scaling units="Intake Air Temp (Degrees F)" expression="(x*1.8)+32" to_byte="(x-32)/1.8" format="0.0" fineincrement="1" coarseincrement="5" />
   <table type="Static Y Axis" name="(Condition) - Result" sizey="1">
    <data>(Below) - Minimum activation threshold</data>
   </table>
   <description>Above this ambiant temperature value, the ECU will not apply Knock Correction advance Additive A or B</description>
  </table>
<table type="2D" name="Knock Correction Advance Max Additive Min RPM" category="Ignition Timing - Advance" storagetype="float" endian="little" sizey="1" userlevel="2">
   <scaling units="RPM" expression="x" to_byte="x" format="0.0" fineincrement="1" coarseincrement="5" />
   <table type="Static Y Axis" name="(Condition) - Result" sizey="1">
    <data>(Below) - Minimum activation threshold</data>
   </table>
   <description>Below this RPM value, the ECU will not apply Knock Correction advance Additive A or B</description>
  </table>
<table type="2D" name="Knock Correction Advance Max Additive Max RPM" category="Ignition Timing - Advance" storagetype="float" endian="little" sizey="1" userlevel="2">
   <scaling units="RPM" expression="x" to_byte="x" format="0.0" fineincrement="1" coarseincrement="5" />
   <table type="Static Y Axis" name="(Condition) - Result" sizey="1">
    <data>(Below) - Minimum activation threshold</data>
   </table>
   <description>Above this RPM value, the ECU will not apply Knock Correction advance Additive A or B</description>
  </table>


Code:
 <table name="Knock Correction Advance Max Additive Min Temp"  storageaddress="0xCFE14" />
  <table name="Knock Correction Advance Max Additive Max Temp"  storageaddress="0xCFE18" />
  <table name="Knock Correction Advance Max Additive Min RPM"  storageaddress="0xCFE2c" />
  <table name="Knock Correction Advance Max Additive Max RPM"  storageaddress="0xCFE30" />


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Thu Apr 10, 2014 5:04 pm 
Offline
Newbie

Joined: Mon Oct 01, 2012 11:04 pm
Posts: 6
Good to know! Thanks! I currently have the whole Knock correction max add table zero'd out. There were a few instances of knock while tuning so I didn't want it to mess with my timing. Question is: after I'm done tuning should I repopulate the table with factory specs or keep it a more solid number all throughout with an additive of maybe 2?


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Fri Apr 11, 2014 2:05 am 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Hi,

Good question and I don't have a complete answer yet. My current tune has the additive zeroed out but I might re populate it with some values. I know that it runs okay at low temperature but I wonder if I could run more timing as it gets warmer ... I'll experiment. There are a couple things to consider though I think as a result of this discovery

1) If you zero'ed out the additive, what have you done with your timingCompAIAT ? In my mind, you can't leave that table to stock value, otherwise you will be adding timing when its really cold and go against what the factory is doing. In my tune, I only add 1 degree instead of the stock 4 at the worst case temp, I might change this to zero.

2) When its hotter than 98 F the factory drops a lot of time, you might want to adjust your additive to make up for that.

Now if you decide to populate it, what value should go in. That's a good question and I need to run some simulation as there is logic in there that get triggered depending on the magnitude of some of the values, it might not work to just put ones in there for example. I will work on this and provide a bit of feedback

My next steps are :

1) Provide a logger definition for people who want to log the ratio and the state machine
2) Run simulation to see if there is any difference in behavior between filling the whole table with 1's or 3.8's (some logic looks for value above 3.8 degree)
3) Experiment on my tune, I'd like to know how long it takes for full timing to be applied.

I'd really like to understand the rational of why you want to pull timing at lower temp. My basic understanding is that at lower temp, flame speed should be slower so you might want to advance but then also, the air has less humidity and may have less charge cooling potential so maybe chamber temp actually gets higher. I'd be interested to hear any actual first hand experience over this


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Mon Apr 14, 2014 6:22 pm 
Offline
Newbie

Joined: Mon Oct 01, 2012 11:04 pm
Posts: 6
whitewater wrote:
Hi,

Good question and I don't have a complete answer yet. My current tune has the additive zeroed out but I might re populate it with some values. I know that it runs okay at low temperature but I wonder if I could run more timing as it gets warmer ... I'll experiment. There are a couple things to consider though I think as a result of this discovery

1) If you zero'ed out the additive, what have you done with your timingCompAIAT ? In my mind, you can't leave that table to stock value, otherwise you will be adding timing when its really cold and go against what the factory is doing. In my tune, I only add 1 degree instead of the stock 4 at the worst case temp, I might change this to zero.

2) When its hotter than 98 F the factory drops a lot of time, you might want to adjust your additive to make up for that.

Now if you decide to populate it, what value should go in. That's a good question and I need to run some simulation as there is logic in there that get triggered depending on the magnitude of some of the values, it might not work to just put ones in there for example. I will work on this and provide a bit of feedback

My next steps are :

1) Provide a logger definition for people who want to log the ratio and the state machine
2) Run simulation to see if there is any difference in behavior between filling the whole table with 1's or 3.8's (some logic looks for value above 3.8 degree)
3) Experiment on my tune, I'd like to know how long it takes for full timing to be applied.

I'd really like to understand the rational of why you want to pull timing at lower temp. My basic understanding is that at lower temp, flame speed should be slower so you might want to advance but then also, the air has less humidity and may have less charge cooling potential so maybe chamber temp actually gets higher. I'd be interested to hear any actual first hand experience over this


I'm pretty sure they have a lower temp to help warm the engine to a good operating temperature. After further reading it looks like the ECU uses KCAMA (yeah I shortened it) to either add or remove advance timing. It seems that zeroing out the knock advance table would force the ECU to not be able to pull timing when it needs to. So, in any instance of knock the lowest value it can have is zero. If it can't pull timing past 0 then BOOM! This table works in conjunction with the IAM like this (KCAMA *IAM + Base timing). I'm sure you knew that just making sure you concur.

I'm curious. Is there a table in your ROM labeled "Timing Advance" as well? I have an FR-S and mine has timing tables labeled A and B, so I'm assuming it means non-cruise and cruise just like the rest of Subie's ROM's. My timingComp IAT table is factory but it only reduces timing past 122 degrees. It also has a timingComp IAT (Activation) table which seems that it won't be used until the IAT reaches 122 degrees.


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Mon Apr 21, 2014 12:28 am 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Hi sorry for the delay,

I will have to review the full equation but my current understanding is the advance equation includes :

KCA_Max_Primary_Non_Cruise/Cruise*IAM + the equation I wrote in the first post. So not using the additive advance would not cause IAM drop to not have the ability to reduce timing. It will just have a smaller impact.

For example :

In a car that making use of KCA_Additives you would see all those values zero'ed out when IAM drop bellow 0.85 on top of the KCA_Max_Primary_Non_Cruise/Cruise being lower.

I'll try to run more simulations illustrating this a bit later on as well as try to start using them in my car. I am pretty busy with work right now and the kayaking season that has started. I'd be curious to hear if other people use those tables and how. I could see them being good on the stock tune to protect the engine from people who switch between 91/93. The car never starts at full timing and would hopefully stop ramping timing early in the process of including the additive.


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Tue Apr 22, 2014 9:06 pm 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Interestingly while looking at a 2008 STI rom I realized that these tables and logic didn't exist in that year model. The base timing table for both the 2008 and 2010 year model are the same but all the timing advance in the Knock Correction Advance table instead of being spread between that table and the additive table.

So Subaru were looking at fixing a problem when they implemented this ... interesting


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Fri May 02, 2014 11:05 am 
Offline
Experienced
User avatar

Joined: Tue Nov 07, 2006 2:05 pm
Posts: 286
Location: Northborough, MA
Very interesting. Good job on breaking the logic down and chasing each end.

On the comp table A IAT values, that value is also affected by the comp A activation table. The stock ROM in '11 is set up with 4 degrees of additional timing when IATs drop but the activation table is setup up to cut that timing additive in half in just about all load and RPM ranges. So,when you see those values, they are reduced by the activation table. IMO, this is just silly. If you want 2, write 2, not 4 * 0.5. The only time the full IAT comp is applied in the stock ROM is in loads 1.0 - 1.2 and 0 - 3K RPMs, a sweet spot for highway cruising which may be a fuel consumption strategy. In my ROM, I cut the activation table values to 0 in most areas and tuned the IAT comp table directly.

_________________
11 SSM STI Hatch, Stage2, Tactrix BCS
Northborough, MA


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Tue May 06, 2014 11:46 am 
Offline
Senior Member

Joined: Thu Aug 03, 2006 2:40 pm
Posts: 1934
whitewater wrote:
Hey,

I am glad it could be useful to someone. From experiences then, have you observed that the knock ceiling becomes lower for a given load at a lower IATs ?


over particular ranges of iats, yes, without a doubt.

ime it is like a bell curve... at very high iats, knock is easier. then there is a midrange where things are pretty quiet. then at very low iats, knock is easier again.

the difference between the hot knock and cold knock is that engine is making a lot more power with cold iats due to higher maf load.


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Sun May 11, 2014 1:45 pm 
Offline
RomRaider Donator

Joined: Thu Dec 29, 2011 2:04 am
Posts: 181
Thanks guys. Yeah I am not sure why they put some activation tables, the only reason I could see is if any logic depends on the individual table raw values. I haven't traced down that portion of the logic so I can't tell. In the number I posted above, the activation table scaling should have been accounted for.


Anyhow, I will likely add those table back to my tune later this summer and report back. Working on removing some knock in the 2800-3400 rpm area before, things are much better now that I have applied feedback from some of the guys here.

I'll be curious to see if the 2015 doesn't anything different. Have been meaning to download the rom and start looking at it but have been a bit short on time lately. Maybe in the next few weeks


Top
 Profile  
 
 Post subject: Re: Logic behing Knock Correction Advance Max Additive AZ1G7
PostPosted: Thu May 15, 2014 4:44 am 
Offline
Experienced
User avatar

Joined: Wed Feb 20, 2008 3:02 am
Posts: 244
Location: Broomfield, Colorado
2015 has additive advance turned off, timing looks like Australian and Brazilian Roms (also don't use additive advance) except 6000 RPM up has a little less timing at high load.

_________________
-Eric Minehart
2009 WRX Dom 3 on e85
2002 WRX VF30 on E85(SOLD)
eminehart@yahoo.com
www.torquedperformance.com


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 19 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subsilver by phpBBservice.nl