Advanced fuel control options
Are all of these enrichments combined in one sub and if so, what is the location of the start of this sub in 96530006?
The way the system appears to work to me is that the main operation sub does all the table look up values and is called up a fixed number of times in a second. Then there is an interrupt driven sub that uses all those looked up values to calculate the final IPW?
The part that is throwing me off is it seems like there are two different interrupt driven subs that are rather long that seem to deal with calculating IPW? Is this the sync IPW vs. asynch IPW?
The way the system appears to work to me is that the main operation sub does all the table look up values and is called up a fixed number of times in a second. Then there is an interrupt driven sub that uses all those looked up values to calculate the final IPW?
The part that is throwing me off is it seems like there are two different interrupt driven subs that are rather long that seem to deal with calculating IPW? Is this the sync IPW vs. asynch IPW?
Last edited by 03whitegsr; Jun 1, 2010 at 02:28 PM.
It's only active below 2000 RPM and on 96530006 kicks in above 63C coolant temps.
It has a couple other control flags such as starter engagement, A/C, TPS (idle condition?) and something else that is flagged elsewhere.
Sub_14C3C in 96530006.
It uses an 8-Byte Array and I believe the higher the Delta RPM, the more enrichment you get.
Last edited by 03whitegsr; Jul 4, 2010 at 01:14 PM. Reason: looking for negative RPM change
A) Base fuel pulse - This is the contribution that jcsbanks has described. It takes over after the starter has been disengaged. The equation for this contribution is given by:
BFPW = constant*[(STFT/256 + X + LTFTCurrent + 128)/512]*(MAFCompW/128)*
[(MasterLoad {+/- K*DeltaMasterLoad})/2048]*(AFRMAP/128)*(CAM/128)*
[(PurgeComp+384)/512]*[(2*Startup_Mult+128)/128]*
(Z/128)*Baro*AirDensityFactor*(BFPW_Mult/128)*IFPHz
* STFT = STFT, 0 during open loop driving
* X = To be worked out, 128 during open loop driving
* LTFTCurrent = Either low, medium, or high LTFT per LTFT vs MAF Hz table defined below. This shows that LTFTs are used during open loop fueling, however, with the stock mid/high crossover, LTFT high, which is always 128 (null value), is used above 1597 Hz.
* AFRMAP = AFRMAP from fuel table lookup routine
* MAFCompW = MAF signal compensation vs coolant temp, 128 at normal operating temperature.
* MasterLoad = master load variable, calculated from MAF signal
* DeltaMasterLoad = absolute value of the change in master load, only used when load < 70 and when weighting parameter for the master load running average is > 205, +/- based on accel/decel.
* K is either 2 or 3 depending on a flag.
* CAM = some factor related to camshaft timing, always 128 when engine is at full temperature.
* PurgeComp = Evap purge flow compensation. Logging shows it to mostly be 128 (including during open loop), but can vary between ~100 and ~150.
* Startup_Mult = an average of two BFPW startup enrichment tables. These add a bit of enrichment for the first few moments after the engine has fired up. Decays to zero over a period of a few seconds after starter is disengaged.
* Z = to be worked out, always 128.
* Baro = barometric pressure
* AirDensityFactor = 2D relative air density vs IAT table
* BFPW_Mult = 128 under normal conditions, details to be worked out
* IFPHz = see equation above
BFPW = constant*[(STFT/256 + X + LTFTCurrent + 128)/512]*(MAFCompW/128)*
[(MasterLoad {+/- K*DeltaMasterLoad})/2048]*(AFRMAP/128)*(CAM/128)*
[(PurgeComp+384)/512]*[(2*Startup_Mult+128)/128]*
(Z/128)*Baro*AirDensityFactor*(BFPW_Mult/128)*IFPHz
* STFT = STFT, 0 during open loop driving
* X = To be worked out, 128 during open loop driving
* LTFTCurrent = Either low, medium, or high LTFT per LTFT vs MAF Hz table defined below. This shows that LTFTs are used during open loop fueling, however, with the stock mid/high crossover, LTFT high, which is always 128 (null value), is used above 1597 Hz.
* AFRMAP = AFRMAP from fuel table lookup routine
* MAFCompW = MAF signal compensation vs coolant temp, 128 at normal operating temperature.
* MasterLoad = master load variable, calculated from MAF signal
* DeltaMasterLoad = absolute value of the change in master load, only used when load < 70 and when weighting parameter for the master load running average is > 205, +/- based on accel/decel.
* K is either 2 or 3 depending on a flag.
* CAM = some factor related to camshaft timing, always 128 when engine is at full temperature.
* PurgeComp = Evap purge flow compensation. Logging shows it to mostly be 128 (including during open loop), but can vary between ~100 and ~150.
* Startup_Mult = an average of two BFPW startup enrichment tables. These add a bit of enrichment for the first few moments after the engine has fired up. Decays to zero over a period of a few seconds after starter is disengaged.
* Z = to be worked out, always 128.
* Baro = barometric pressure
* AirDensityFactor = 2D relative air density vs IAT table
* BFPW_Mult = 128 under normal conditions, details to be worked out
* IFPHz = see equation above
what is the decay time for Startup_Mult? I know you mentioned above that is a few seconds, but did you have this quantfied in your notes? Is it something that we can change?
The reason I am asking is because I finally switched back to SD and have been on it for a couple of days. I noticed that even though my warm starts were dialed in perfectly on MAF, that they are running very lean on SD.
So, my theory is that the MAT sensor in my UICP is being heat soaked, if the car sits for say 20 minutes or so. I verified that today. After only about 15 minutes sitting, the MAT rose from about 90-100 or so to 135. And, upon starting, the STFT would max out to +25. The car would stumble a bit or even sometimes die due to being too lean (not this time, but has a couple times in the last couple days after sitting longer).
After a minute or so, everything is back to normal as the MAT (or whatever else may be contributing...haven't ruled out anything yet) comes back down. The STFTs bounce around 0.
So, if that I knew the decay time for startup_mult and possibly tweak it, I would want to be able to add enrichment for just 30 seconds or so after starting.
As a test, I was thinking about using the MAT scaling and making the highest number something like 100F and see if that remedies the issue. That at least will tell me if it's the MAT temp being heat soaked that is causing the problem. That had me thinking that maybe, in the long run, it would be a good idea to have the MAT scaling cut off at a certain number just above what we see as our highest MAT temps. This way, heat soaked starting would be less of an issue and if you truly did get higher MAT temps, it would simply richen up the fueling, which would be a good thing/safety factor.
Thanks,
Eric
Last edited by l2r99gst; Aug 25, 2010 at 04:21 PM.
I get the same lean hot starts and I have seen it on other SD setups. I just attributed it to MAT heat soak and haven't logged it.
I think that post start enrichment is gone in a matter of seconds though, if I recall correctly from my testing a while back to fix the hot start issues on my ID1000s.
I think that post start enrichment is gone in a matter of seconds though, if I recall correctly from my testing a while back to fix the hot start issues on my ID1000s.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Eric,
I think your best bet is to use the MAT temp ceiling as you suggested. What could be done is to update the patch to use a ceiling value for the first several seconds after the car starts. First step is to confirm the high MAT temperatures when this happens. acamus sent me a beta of SD 2.0 a while back, and I'm hoping to look at it sometime in the next week. If your theory is correct, I can add a user adjustable ceiling value that triggers at startup and has a user adjustable decay time.
I think your best bet is to use the MAT temp ceiling as you suggested. What could be done is to update the patch to use a ceiling value for the first several seconds after the car starts. First step is to confirm the high MAT temperatures when this happens. acamus sent me a beta of SD 2.0 a while back, and I'm hoping to look at it sometime in the next week. If your theory is correct, I can add a user adjustable ceiling value that triggers at startup and has a user adjustable decay time.
What about re-locating the IAT sensor to somewhere that won't be affected by engine temp so much. For example, you could mount it on the cold side lower intercooler pipe. This would be away from the engine heat but still be on the cold side so the potential for heat soaking would be eliminated and your air temps would still be accurate.
This is a little trick we did back with Fords....the IAT sensor was located in a bad spot that would heat soak and cause the car to lose power over time. By relocating the sensor to out near the radiator support but near the filter so it is reading at as close to ambient air as possible we were able to maintain power in all conditions. N/A application of course.
This is a little trick we did back with Fords....the IAT sensor was located in a bad spot that would heat soak and cause the car to lose power over time. By relocating the sensor to out near the radiator support but near the filter so it is reading at as close to ambient air as possible we were able to maintain power in all conditions. N/A application of course.
What about re-locating the IAT sensor to somewhere that won't be affected by engine temp so much. For example, you could mount it on the cold side lower intercooler pipe. This would be away from the engine heat but still be on the cold side so the potential for heat soaking would be eliminated and your air temps would still be accurate.
But I understand that it could be in a better place, like down low by the IC.
My sensor is in my UICP right next to the filter/battery, pointing away from the engine. So, it's already in a 'cool' spot. It's just the underhood heat coming from the block, exhaust manifold, etc being conducted to the sensor and Al UICP.
But I understand that it could be in a better place, like down low by the IC.
But I understand that it could be in a better place, like down low by the IC.
Since mine is already welded in place where it is, I'm not moving it.
I'll wait for mrfred's fix or cap my MAT scaling table.


