Injector flow rate linearization table
#76
Evolving Member
iTrader: (2)
Thanks, Dave!
I was looking for something that can lower the AFR swing at idle with my FIC 1050SP, I am still struggling with cold idle / rpm fluctuation, but I think this helps too.
I think most cold idle / rpm fluctuation problem is related to the linearization table, so I will try Mychailo's FIC1100 setting along with his latency value which was a bit larger than mine, hope this fixes lean AFR stumble near 2.0ms fuel pulse logged (I have to also try the 2 byte sync FPW logging item to be exact as I suspect my 2 byte IPW includes latency vs. voltage value)
Not sure if I understood the items correctly, but the first two items affect fuel resume after fuel cut?
I think next two idle items affects fuel swing at idle.
Seems like stock value for 9417 is:
0.122%
0.122%
0.040 %
0.052 %
so I guess I should try about half the value since injector scale is 1008 cc/min vs 513 cc/min (stock)?
Thanks again!
I was looking for something that can lower the AFR swing at idle with my FIC 1050SP, I am still struggling with cold idle / rpm fluctuation, but I think this helps too.
I think most cold idle / rpm fluctuation problem is related to the linearization table, so I will try Mychailo's FIC1100 setting along with his latency value which was a bit larger than mine, hope this fixes lean AFR stumble near 2.0ms fuel pulse logged (I have to also try the 2 byte sync FPW logging item to be exact as I suspect my 2 byte IPW includes latency vs. voltage value)
Not sure if I understood the items correctly, but the first two items affect fuel resume after fuel cut?
I think next two idle items affects fuel swing at idle.
Seems like stock value for 9417 is:
0.122%
0.122%
0.040 %
0.052 %
so I guess I should try about half the value since injector scale is 1008 cc/min vs 513 cc/min (stock)?
Thanks again!
Jeff, add this to you definition and then try lowering the Closed loop Idle Integral Gain value to help reduce the random swing.
for 9653:
<scaling name="I-Gain" units="%" toexpr="x/327.73" frexpr="x*327.73" format="%.3f" min="0" max="0.78" inc="0.00305" storagetype="uint8" endian="big"/>
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="Closed-Loop Control" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Closed-Loop I-Gain After Fuel-Cut, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain After Fuel-Cut, Increase Fuel IPW (Rich)</data>
<data>Closed-Loop I-Gain Idle, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain Idle, Increase Fuel IPW (Rich)</data>
</table>
</table>
Edit:
9653 has quite high stock gain values here:
0.051 to lean the mix
0.066 to enrich the mix
try something like:
0.021 to go lean
and
0.055 to go rich. Maybe a little lower.
for 9653:
<scaling name="I-Gain" units="%" toexpr="x/327.73" frexpr="x*327.73" format="%.3f" min="0" max="0.78" inc="0.00305" storagetype="uint8" endian="big"/>
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="Closed-Loop Control" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Closed-Loop I-Gain After Fuel-Cut, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain After Fuel-Cut, Increase Fuel IPW (Rich)</data>
<data>Closed-Loop I-Gain Idle, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain Idle, Increase Fuel IPW (Rich)</data>
</table>
</table>
Edit:
9653 has quite high stock gain values here:
0.051 to lean the mix
0.066 to enrich the mix
try something like:
0.021 to go lean
and
0.055 to go rich. Maybe a little lower.
#78
Evolved Member
Chriss, add these to your xml.
The first item is an updated version of what you already have.
The second item sets the gain under cruise and light throttle conditions.
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="CLOSED-LOOP CONTROL" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="6">
<data>Closed-Loop Feedback Integral LEAN Gain - AFTER FUEL-CUT .</data>
<data>Closed-Loop Feedback Integral RICH Gain - AFTER FUEL-CUT .</data>
<data>Closed-Loop Feedback Integral LEAN Gain - HOT IDLE .</data>
<data>Closed-Loop Feedback Integral RICH Gain - HOT IDLE .</data>
<data>Closed-Loop Feedback Integral LEAN Gain - COLD IDLE .</data>
<data>Closed-Loop Feedback Integral RICH Gain - COLD IDLE .</data>
</table>
</table>
No I dont know where the HOT IDLE/COLD IDLE switch temp setting is hiding.
<table name="Closed-Loop Learning Gain Federal Spec per Zone" address="36BE" category="CLOSED-LOOP CONTROL" type="3D" scaling="I-Gain">
<table name="ZONE" type="Static X Axis" elements="6">
<data>Zone 0</data>
<data>Zone 3</data>
<data>Zone 1</data>
<data>Zone 4</data>
<data>Zone 2</data>
<data>Zone 5</data>
</table>
<table name="Condition" type="Static Y Axis" elements="4">
<data>Integral Enleanment Gain O2 FB, M/T TFILGN_F</data>
<data>Integral Enleanment Gain O2 FB, A/T TFILGD_F</data>
<data>Integral Enrichment Gain O2 FB, M/T TFIRGN_F</data>
<data>Integral Enrichment Gain O2 FB, A/T TFIRGD_F</data>
</table>
</table>
Buried in this table are the load and rpm set points for "Closed-Loop Learning Gain Federal Spec per Zone" integral gain settings.
Specifically, the last three entries, one Load (35%) and two rpm points (1312 and 2250).
Draw up a matrix and try and figure out which zone gets applied into the matrix.
My limited testing here has shown some pretty funky results on my nine.
<table name="Closed-Loop o2 Sensor Control Parameters (1.4)" address="159E" category="CLOSED-LOOP CONTROL" type="2D" scaling="Hex16">
<table name="FUNCTION" type="Static Y Axis" elements="18">
<data>159E CLOSED-LOOP Front O2 Sensor non-active judgement voltage XO2CHL 001F = 0.605 Volts V*5/256 .</data>
<data>15A0 CLOSED-LOOP Front O2 Sensor RICH/LEAN judgement voltage XO2RLL 001A = 0.508 Volts V*5/256 .</data>
<data>15A2 CLOSED-LOOP Front O2 Sensor non-active Baro Limit XBPO2LVL 00B7 = 679 mmHg Bp*760/204.8 .</data>
<data>15A4 CLOSED-LOOP Front O2 Sensor non-active judgement volt XO2RLOFST 0000 = 0.000 Volts V*5/256 .</data>
<data>15A6 CLOSED-LOOP Front O2 Sensor non-active judgement time X02TST 00FF = 127.5 Sec T/2 .</data>
<data>15A8 CLOSED-LOOP F/B Post Cranking Inhibit Delay XO2CRK 000A = 5 Sec T/2 .</data>
<data>15AA CLOSED-LOOP F/B Coolant Temp judgement XWTFB 002F = +7 *C T-40 .</data>
<data>15AC CLOSED-LOOP F/B Fuel-Cut check interval XFCUTB 0020 = 800 mSec T*25 .</data>
<data>15AE CLOSED-LOOP F/B Reintroduction Delay after F/C End XFCTFB 003C = 1500 mSec T*25 .</data>
<data>15B0 CLOSED-LOOP legacy XBPRUP 009C = 579 mmHg Bp*760/204.8 .</data>
<data>15B2 CLOSED-LOOP F/B Ev Zone Switching Ev Hysteresis XCLHYS 0008 = 8 Ev% Ev/1.6 .</data>
<data>15B4 CLOSED-LOOP ? 0006 = .</data>
<data>15B6 CLOSED-LOOP F/B City Zone Timer operation XCFBZN 000A = .</data>
<data>15B8 CLOSED-LOOP F/B City Zone Operational Time Limit XCFBCLP 0014 = 10.0 Sec T*0.5 .</data>
<data>15BA CLOSED-LOOP XTHYS 0008 = 0.156 V Vtps*5/256 .</data>
<data>15BC CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch Ev XFBGEV 0038 = 35 Ev% Ev/1.6 .</data>
<data>15BE CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch RPM-LO XFBGNEL 002A = 1312 RPM Ne*8000/256 .</data>
<data>15C0 CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch RPM-HI XFBGNEH 0048 = 2250 RPM Ne*8000/256 .</data>
</table>
</table>
Its a pity the stupid parser strips off the tabs and spaces. The listing looks easy enough to follow with the spacing intact.
The first item is an updated version of what you already have.
The second item sets the gain under cruise and light throttle conditions.
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="CLOSED-LOOP CONTROL" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="6">
<data>Closed-Loop Feedback Integral LEAN Gain - AFTER FUEL-CUT .</data>
<data>Closed-Loop Feedback Integral RICH Gain - AFTER FUEL-CUT .</data>
<data>Closed-Loop Feedback Integral LEAN Gain - HOT IDLE .</data>
<data>Closed-Loop Feedback Integral RICH Gain - HOT IDLE .</data>
<data>Closed-Loop Feedback Integral LEAN Gain - COLD IDLE .</data>
<data>Closed-Loop Feedback Integral RICH Gain - COLD IDLE .</data>
</table>
</table>
No I dont know where the HOT IDLE/COLD IDLE switch temp setting is hiding.
<table name="Closed-Loop Learning Gain Federal Spec per Zone" address="36BE" category="CLOSED-LOOP CONTROL" type="3D" scaling="I-Gain">
<table name="ZONE" type="Static X Axis" elements="6">
<data>Zone 0</data>
<data>Zone 3</data>
<data>Zone 1</data>
<data>Zone 4</data>
<data>Zone 2</data>
<data>Zone 5</data>
</table>
<table name="Condition" type="Static Y Axis" elements="4">
<data>Integral Enleanment Gain O2 FB, M/T TFILGN_F</data>
<data>Integral Enleanment Gain O2 FB, A/T TFILGD_F</data>
<data>Integral Enrichment Gain O2 FB, M/T TFIRGN_F</data>
<data>Integral Enrichment Gain O2 FB, A/T TFIRGD_F</data>
</table>
</table>
Buried in this table are the load and rpm set points for "Closed-Loop Learning Gain Federal Spec per Zone" integral gain settings.
Specifically, the last three entries, one Load (35%) and two rpm points (1312 and 2250).
Draw up a matrix and try and figure out which zone gets applied into the matrix.
My limited testing here has shown some pretty funky results on my nine.
<table name="Closed-Loop o2 Sensor Control Parameters (1.4)" address="159E" category="CLOSED-LOOP CONTROL" type="2D" scaling="Hex16">
<table name="FUNCTION" type="Static Y Axis" elements="18">
<data>159E CLOSED-LOOP Front O2 Sensor non-active judgement voltage XO2CHL 001F = 0.605 Volts V*5/256 .</data>
<data>15A0 CLOSED-LOOP Front O2 Sensor RICH/LEAN judgement voltage XO2RLL 001A = 0.508 Volts V*5/256 .</data>
<data>15A2 CLOSED-LOOP Front O2 Sensor non-active Baro Limit XBPO2LVL 00B7 = 679 mmHg Bp*760/204.8 .</data>
<data>15A4 CLOSED-LOOP Front O2 Sensor non-active judgement volt XO2RLOFST 0000 = 0.000 Volts V*5/256 .</data>
<data>15A6 CLOSED-LOOP Front O2 Sensor non-active judgement time X02TST 00FF = 127.5 Sec T/2 .</data>
<data>15A8 CLOSED-LOOP F/B Post Cranking Inhibit Delay XO2CRK 000A = 5 Sec T/2 .</data>
<data>15AA CLOSED-LOOP F/B Coolant Temp judgement XWTFB 002F = +7 *C T-40 .</data>
<data>15AC CLOSED-LOOP F/B Fuel-Cut check interval XFCUTB 0020 = 800 mSec T*25 .</data>
<data>15AE CLOSED-LOOP F/B Reintroduction Delay after F/C End XFCTFB 003C = 1500 mSec T*25 .</data>
<data>15B0 CLOSED-LOOP legacy XBPRUP 009C = 579 mmHg Bp*760/204.8 .</data>
<data>15B2 CLOSED-LOOP F/B Ev Zone Switching Ev Hysteresis XCLHYS 0008 = 8 Ev% Ev/1.6 .</data>
<data>15B4 CLOSED-LOOP ? 0006 = .</data>
<data>15B6 CLOSED-LOOP F/B City Zone Timer operation XCFBZN 000A = .</data>
<data>15B8 CLOSED-LOOP F/B City Zone Operational Time Limit XCFBCLP 0014 = 10.0 Sec T*0.5 .</data>
<data>15BA CLOSED-LOOP XTHYS 0008 = 0.156 V Vtps*5/256 .</data>
<data>15BC CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch Ev XFBGEV 0038 = 35 Ev% Ev/1.6 .</data>
<data>15BE CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch RPM-LO XFBGNEL 002A = 1312 RPM Ne*8000/256 .</data>
<data>15C0 CLOSED-LOOP F/B NTL/MT Integral Gain Zone switch RPM-HI XFBGNEH 0048 = 2250 RPM Ne*8000/256 .</data>
</table>
</table>
Its a pity the stupid parser strips off the tabs and spaces. The listing looks easy enough to follow with the spacing intact.
Last edited by merlin.oz; Feb 21, 2017 at 07:17 PM.
The following users liked this post:
ace33joe (Mar 14, 2017)
#80
Evolving Member
iTrader: (2)
Dave,
Did a few more logging and fiddling with timing / ISCV / fuel linearization / MAF compensation tables, but still I have rpm fluctuation and rich / lean conditions.
Timing does affect a lot on rpm behavior, and it seems ISCV has minor impact as it only changes one or two steps, so fuel seems to be the major problem.
Did you see any rpm compensating injector pulse adjustment table other than integral gain you already shared?
If there is some "ms" scale adjustment for rpm compensation, it may explain what I am experiencing, but I doubt that is the case.
What still is also mystery is that I see negative O2 feedback trim (like -10~-13%) below 70C coolant temp or so, although I don't think it really changed fuel pulse width I am logging though, then after reaching 70C coolant temp, it works like normal feedback trim (moving positive and negative).
I changed front O2 sensor recently to NTK new one, but it gives me the same behavior as old aftermarket cheap denso O2 sensor.
Is there anything I can try before I change my injectors to different set?
Hope you can give me some advice. Thanks!
Did a few more logging and fiddling with timing / ISCV / fuel linearization / MAF compensation tables, but still I have rpm fluctuation and rich / lean conditions.
Timing does affect a lot on rpm behavior, and it seems ISCV has minor impact as it only changes one or two steps, so fuel seems to be the major problem.
Did you see any rpm compensating injector pulse adjustment table other than integral gain you already shared?
If there is some "ms" scale adjustment for rpm compensation, it may explain what I am experiencing, but I doubt that is the case.
What still is also mystery is that I see negative O2 feedback trim (like -10~-13%) below 70C coolant temp or so, although I don't think it really changed fuel pulse width I am logging though, then after reaching 70C coolant temp, it works like normal feedback trim (moving positive and negative).
I changed front O2 sensor recently to NTK new one, but it gives me the same behavior as old aftermarket cheap denso O2 sensor.
Is there anything I can try before I change my injectors to different set?
Hope you can give me some advice. Thanks!
#81
Evolved Member
Chris,
There is no rpm comp table as you have described.
You will see negative fuel trim as the engine warms once the engine enters closed loop.
This is because you have a warmup fuel enrichment table adding the fuel and then the feedback is stripping it out so the AFR sitts at 14.7.
This fuel trimming is not contributing to a learned value as all this is happening below the learning temperature, which, depending on the rom, will be from 77 to 82 degrees C.
Suggest you raise the closed loop temp to say 45*C for a car with decent cams like yours.
There is no rpm comp table as you have described.
You will see negative fuel trim as the engine warms once the engine enters closed loop.
This is because you have a warmup fuel enrichment table adding the fuel and then the feedback is stripping it out so the AFR sitts at 14.7.
This fuel trimming is not contributing to a learned value as all this is happening below the learning temperature, which, depending on the rom, will be from 77 to 82 degrees C.
Suggest you raise the closed loop temp to say 45*C for a car with decent cams like yours.
The following users liked this post:
ace33joe (Mar 14, 2017)
#82
Evolving Member
iTrader: (2)
Thanks for your reply, Dave.
I also thought about the MAF comp vs. coolant temp table, but that only adds 2~6% of MAF signal, so I thought that is much less than what I see from the O2 feedback trim.
I thought this table exists because of fuel vaporization vs. temp change, but now I think it can also be affected by injector spray pattern and also engine VE / overlap due to cam change.
I think make it open loop until it warms up is a good idea, and my current setting is 30C, so I might try higher temp as you suggested, and I might fiddle with MAF comp vs. coolant temp also.
Is there any other table might affect warm-up enrichment other than these two tables? MAF comp vs Coolant temp #1 and #1?
Thanks again for your help!
I also thought about the MAF comp vs. coolant temp table, but that only adds 2~6% of MAF signal, so I thought that is much less than what I see from the O2 feedback trim.
I thought this table exists because of fuel vaporization vs. temp change, but now I think it can also be affected by injector spray pattern and also engine VE / overlap due to cam change.
I think make it open loop until it warms up is a good idea, and my current setting is 30C, so I might try higher temp as you suggested, and I might fiddle with MAF comp vs. coolant temp also.
Is there any other table might affect warm-up enrichment other than these two tables? MAF comp vs Coolant temp #1 and #1?
Thanks again for your help!
#83
Evolved Member
iTrader: (41)
Is there anyone that would be willing to email me a copy of a known, working XML for 88590015? I've tried pasting the tables into my XML and then reopening ECU Flash several times but the tables aren't showing up for some reason. My email is ianstohr1@gmail.com . Thanks!
#85
Newbie
Would like to point out the first code is not laid our correctly.
It’s missing < > these symbols at the beginning and end of every table and “data” header. Just fyi cause in doing this now. Probably a fourm bug
even after that i am not seeing the tables show up. using tephra V7 SD 2.0 88592715
It’s missing < > these symbols at the beginning and end of every table and “data” header. Just fyi cause in doing this now. Probably a fourm bug
even after that i am not seeing the tables show up. using tephra V7 SD 2.0 88592715
Last edited by UrbanSmoker; Jul 13, 2019 at 07:03 PM.
#86
#87
Would like to point out the first code is not laid our correctly.
It’s missing < > these symbols at the beginning and end of every table and “data” header. Just fyi cause in doing this now. Probably a fourm bug
even after that i am not seeing the tables show up. using tephra V7 SD 2.0 88592715
It’s missing < > these symbols at the beginning and end of every table and “data” header. Just fyi cause in doing this now. Probably a fourm bug
even after that i am not seeing the tables show up. using tephra V7 SD 2.0 88592715
#88
Jeff, add this to you definition and then try lowering the Closed loop Idle Integral Gain value to help reduce the random swing.
for 9653:
<scaling name="I-Gain" units="%" toexpr="x/327.73" frexpr="x*327.73" format="%.3f" min="0" max="0.78" inc="0.00305" storagetype="uint8" endian="big"/>
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="Closed-Loop Control" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Closed-Loop I-Gain After Fuel-Cut, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain After Fuel-Cut, Increase Fuel IPW (Rich)</data>
<data>Closed-Loop I-Gain Idle, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain Idle, Increase Fuel IPW (Rich)</data>
</table>
</table>
Edit:
9653 has quite high stock gain values here:
0.051 to lean the mix
0.066 to enrich the mix
try something like:
0.021 to go lean
and
0.055 to go rich. Maybe a little lower.
for 9653:
<scaling name="I-Gain" units="%" toexpr="x/327.73" frexpr="x*327.73" format="%.3f" min="0" max="0.78" inc="0.00305" storagetype="uint8" endian="big"/>
<table name="Closed-Loop Integral Gain Settings" address="36B8" category="Closed-Loop Control" type="2D" scaling="I-Gain">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Closed-Loop I-Gain After Fuel-Cut, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain After Fuel-Cut, Increase Fuel IPW (Rich)</data>
<data>Closed-Loop I-Gain Idle, Decrease Fuel IPW (Lean)</data>
<data>Closed-Loop I-Gain Idle, Increase Fuel IPW (Rich)</data>
</table>
</table>
Edit:
9653 has quite high stock gain values here:
0.051 to lean the mix
0.066 to enrich the mix
try something like:
0.021 to go lean
and
0.055 to go rich. Maybe a little lower.