PDA

View Full Version : Lean Cold Start Problem



swingtan
March 10th, 2008, 09:27 PM
Hi All,

I'm hoping someone here can help out with this one. I have a problem very similar to this..... http://forum.efilive.com/showthread.php?t=6006&highlight=cold+start except that it only occurs for 8 to 9 seconds for me.

The car is an L76 Holden, with the E38 PCM and is currently running a MAF-less tune. When it first went MAF-less, it didn't have the problem, but had a very rich idle when warm. After some auto VE work, the warm idle has been fixed, but I now have this cold start lean out problem.

I've attached a log segment showing how the measured AFR's start off well, but then lean out to 20:1. After 8 seconds from start, the AFR's come down to the 14 range and all is fine, but for the first 8 seconds the car runs very rough and sometimes stalls.

Here's what I've thought about....


Given is really only cold start, it must be something to do with OL fueling.
I've looked at B0141 to B0148 and tried altering settings to richen up the fuel on cold starts, but there has been minimal effect.
The 8 second time had me thinking it may have something to do with B1832, but again this seems to have little effect on the problem.


I guess I could try altering the VE table to richen it back up, but that's not the way it should be done. Any ideas on what to look for here ?

Simon.

hymey
March 10th, 2008, 10:25 PM
I would not alter the VE table.

Have you tried B1205. for ECT. I would stick 20% more fuel in at start up.

Cheers

Joel

swingtan
March 10th, 2008, 11:05 PM
B1205 ? Injection timing vs ECT. I can't see that this adds more fuel, simply alters when the fuel is injected. Happy to be corrected though.

hymey
March 10th, 2008, 11:39 PM
That's correct. Not sure if it works. But it has higher settings when ect is lower. So maybe this could help.

I would have thought that cranking enrichment could help.

Also try reducing idle airflow slightly.

I am having dramas with mine hunting now I have gone mafless.

Cheers

Joel

swingtan
March 22nd, 2008, 03:47 PM
I've been playing a fair bit with this over the past weeks and am no closer to fixing the problem. Something I have noticed though, is the following....

B1832 does have some effect on the start up, but only for the first 1 second. Setting the commanded air flow around 12g/Sec will have the car fire and try and hold an idle speed of about 1700RPM. So it's doing something. After 1 second, the idle speed drops dramatically and the car runs very rough. The settings in B1832 do not drop below 11g/Sec so the idle speeds "should" be quite high. Logging the start process showed an interesting issue. B1832 maps ECT vs GM.RUN_TIME to command air flow. However, logging GM.RUN_TM in scan tool doesn't seem to work. When logging GM.RUN_TIME and SAE.RUNTM, I get vastly different results. SAE.RUNTM counts up in seconds as expected, but GM.RUN_TM counts up by 160 every second. So after 1 second from starting, GM.RUN_TM is 160.



SAE.RUNTM Vs GM.RUN_TM

0 - 0
1 - 160
2 - 320
3 - 480
4 - 640

Given that GM.RUN_TIME jumps from 0 to 160, I can see that B1832 will only be used for the first 1 second from start, as after that GM.RUN_TIME = 160, well over the 8 second limit.


So, What is then PCM musing for idle controll in the 7 seconds after the first second from start? I'm guessing it's not the normal idle tables as after 8 seconds from start, the rough idle disappears and it idles fine. SO the PCM either must be using something else, or the normal idle tables simple don't work until 8 seconds after the start.

Are there any ideas as to why GM.RUN_TIME jumps in steps of 160 every second when it seems it should be counting in seconds?

Simon.

swingtan
March 24th, 2008, 08:45 PM
Bump..... :D

swingtan
April 7th, 2008, 10:35 AM
Interesting update on this......

It seems that "spark smoothing" has been causing some issues for me on this as well. I removed spark smoothing to help with the TCS problem and now mu cold starts have improved to some degree.

Previously the car would fire and flare a little, then the revs would drop right down and the car ran very rough for 8 seconds before the idle picked up and it ran nice and smooth. Every once in a while it would stall in this first 8 second window after a cold start.

Now that spark smoothing has been turned off, it fires and flares, then the revs drop as before but it idles much smoother and doesn't shake around as much. It did stall this morning after the flare but I think some tweaking of B1832 and B0138 will fix that. Here's hoping......

Simon.

hymey
April 7th, 2008, 10:43 AM
spark smoothing fixed my probelems which were very similiar

ntae
April 7th, 2008, 12:02 PM
My hsv had this off as standed , so i take it thats why i was not having that problem

swingtan
April 7th, 2008, 12:39 PM
Probably, it's a "manual only" thing from what I can see. Auto's don't do spark smoothing so they should be immune, so to speak.

( I should say that Autos have it turned off from the factory... )

hymey
April 7th, 2008, 05:44 PM
Thats correct. Manuals only.

hymey
May 3rd, 2008, 03:38 AM
was b0138, cranking enrichment any help?

swingtan
May 3rd, 2008, 10:08 AM
Hi Hymey, no that didn't really help at all. I've been playing around with it and have yet to get a definitive fix. I have found the following has had some effect. You already know some of these but others may not....


B1832: Cranking Idle Air. This controls the amount of idle air for the first 8 seconds after the engine starts. I found that the stock settings in my OS were set very high, resulting in a start up flare and lean spike. Reducing the values has settled the flare right down and helped with the lean spike.
After flashing in a new tune, bypassing the idle re-lean process seems to help as well. Once the ignition has been off for the 15 second timer, turn it on again and pres the throttle to the floor 5 or 6 times, then switch off again. Now when starting it seems to be a lot better.
B1041 & B1042:Open Loop Normal Commanded Fuel: both these should help, but I haven't quite worked them out completely.
B0146: This goes with the previous 2. Again I haven't completely worked out the relationship between the 2. Although the info is that B0146 is simply a multiplier for the EQ factor in B0141/B0142, there is something else involved as the commanded AFR's don't match the calculated values.


It's getting close though.....

hymey
May 3rd, 2008, 01:07 PM
Thats no good. So commanding richer settings didnt help in B0138? My troubles are different in that mine has problems when hot. Infact a lot of people are having cold start problems with the e38 and have decided to live with it.

B5141, have you disabled this? Cat light off......

B5116,cold start timing reduction...set these to 0.

B5132....set to 5 or 6 degrees. minimum allowed timing.

If the pcm is sparking after TDC (eg -10 deg BTDC) the fuel/wont ignite causing a lean reading on your WB02. If you set your minimum idle spark to 5 deg BTDC it will ensure the pcm doesnt spark ADTC wasting the fuel/air spark.

Sometimes an overich condition can cause a lean reading on 02 sensors because the mix isnt completely combusted and any spark ATDC wont combust completely at all.

Maybe you have already scanned for spark. My min timing was set to -25 and I do know it has effect as previously it was set to 12 deg BTDC and the low idle correction wasnt working properly.
I have just set it to 6 BTDC myself. I will see how it goes today.

Keep us updated

Cheers

Joel

swingtan
May 7th, 2008, 08:05 PM
OK, I think I've found the problem here.

From the way I'm reading it, it appears that the PID's used in both ...

B0138: Cranking Commanded fuel

&

B1832: Cranking Idle Air

have been swapped over.

Here's my thinking, take a breath because this gets a bit confusing....

B0138 is described as "This is the commanded fuel EQ ratio when the engine is cranking. This table is based on the engine coolant temp and engines last run time (in seconds.)"


So I see this as EQ mapped against "seconds since last run". So the seconds would be counting up when the engine is off. The 2 PIDs used are SAE.RUNTM and SAE.ECT. SEA.RUNTM is described as "Time since engine start"


B1832 is described as "Cranking mode idle airflow."


This table maps EQ against SAE.ECT and the time since the engine started and lasts for 8 seconds.... exactly the same amount of time my car runs lean for. Sounds rather interesting. The PIDs used ate SAE.ECT and GM.RUN_TIME, which is described as "Engine run time".


Now if you log both SAE.RUN_TIME and GM.RUNTM you get vastly different results.



SAE.RUN_TIME counts up in increments of 160 every second after the engine has started and resets to "0" when the engine is turned off to accessory.

GM.RUNTM counts up in increments of 1 every second after the engine has started and resets to "0" when the ignition is turned of and back on again. It also resets is the ignition is turned all the way off.


From this you should be able to see why there are problems with B1832 being referenced against SAE.RUN_TIME. Given it increments in steps of 160, the table will only ever be used for 1 second. Then the count for SAE.RUN_TIME will go well over 8 and the table will not be used. have no idea what will get used in the next 7 seconds, but what ever it is, I think it is what is causing the lean mixtures.

Now if we go to B0138, we can also see that there are problems with the table. As it uses SAE.RUNTM, which only counts up at 1/second and has references up to 43200, this table is going to be used for 12 hours. Way too long to be useful. However, if you swap SAE.RUNTM and GM.RUN_TIME in the 2 tables....

B0138 now is valid for 4:30
B1832 now is valid for 8 seconds.

Have I found a solution to my problems?

Simon.

Edit: I've added a small log file showing the differences. Just display the 2 PIDs and you'll see the difference.

hymey
May 7th, 2008, 09:20 PM
Any ideas blacky, this would solve some of my start problems too.

Joel

joecar
May 8th, 2008, 01:01 AM
Simon, did you pm Paul so he would be sure to see this (point him to post #15)...?

swingtan
May 8th, 2008, 08:42 AM
I have now ;)

I was chatting with Hymey last night and we discovered something interesting though. I had logged the injector pulse width during start up and it peaked very high where I had the lean spike. Hymey has suggested that it's as a result of overly rich mixtures, where the fuel is staying in liquid form. this means the WB will not "see" the additional fuel and read as a lean condition, even though it's actually rich.

So I tried leaning out the initial start mixtures in B0138 to compensate. It seemed OK last night when ECT was 50'c but this morning the car wouldn't start. So I had to richen it back up again for the cold start.

Simon.

Blacky
May 8th, 2008, 09:02 AM
OK, I think I've found the problem here.

From the way I'm reading it, it appears that the PID's used in both ...

B0138: Cranking Commanded fuel

&

B1832: Cranking Idle Air

have been swapped over.

It looks like the link PIDs are possibly displayed back to front in the EFILive tuning Tool. However, the PIDs that EFILive uses to link the scan data with the tuning tool maps is just an EFILive display configuration. It has nothing to do with the internal operation of the ECM. The ECM will be using the correct values - unless the PCM itself has a bug, which is extremely* unlikely.

You can change them yourself in the file:
\Program Files\EFILive\V7.5\Configuration\cal_link.txt
Look for the section name [E38] (or [E67]) and adjust the entries for those tables.

One thing that is wrong is the RUN_TIME incrementing by 160 each second. I think it should be exactly 1 to 1. I'll check into that.

* In the early days, I would sometimes complain that something that wasn't working was probably a bug in the PCM/ECM/TCM code. Of the few hundred times I wanted to blame the PCM, it turned out to be only about 2 or 3 times that a real bug was found in the vehicle controller. Over the years, Ross has beaten this mantra into me: "It is not a problem in the controller, it is a problem with my own code".

Regards
Paul

joecar
May 8th, 2008, 09:08 AM
Simon,

You have, ok... :cheers:

Cold start needs to be rich, warm start can get away with lean.
So is injector pulse width high due to start mixture being overly rich...?
Hmmm... why is injector spray pooling on manifold/head when ECT is warm...?

Ah... I'm thinking out loud [TOL] about what you said.

Joe
:)

Blacky
May 8th, 2008, 09:45 AM
Actually there is a bug in the GM.RUN_TIME PID (RUNTIME in BBL). It is incorrectly being multiplied by 160. It should display exactly the same value as SAE.RUNTM. I will fix it in the next update.

It is difficult to accurately link table B1832, since both those PIDs will reset to zero when the engine start cranking. The lookup used by the ECM for that table will most likely be a saved value of the previous engine runtime, not the current engine run time (as returned by those two PIDs). So realistically there should not be any link PID defined for the time axis on that table. (Unless there was a PID that simply defined the previous engine runtime).

Regards
Paul


It looks like the link PIDs are possibly displayed back to front in the EFILive tuning Tool.
Regards
Paul

swingtan
May 8th, 2008, 10:26 AM
Thanks Paul, that should help a bit.

The thing that interests me is that the timer in B0138 runs from 0 to 43200 and the PID is SAE.RUNTM. If this counts in "seconds from engine start" then this table lasts for 12 hours. If on the other hand it should be linked to GM.RUN_TIME, which increments by 160, then this tale lasts for 4.5 minutes.

Here's my thinking on this.

If the table is used to command a specific Lambda value only for cranking, then a table lasting up to 12 hours seems correct. the longer it's been since the car last ran ( over night being 12 hours ) the richer you probably want the cranking mixture. If it's been off for 5 min while you grab a coffee, you probably want a much leaner mixture.

If on the other hand it is actually meant to manage fuel for cranking and for a period of time after that, then the 4.5 minute time seems more logical. After this time fueling would be managed by B0141 / B0143 "OL Normal Commanded Fuel". Having B0138 last for 12 hours in this case just doesn't seem right.

The testing I've done on B1832 shows that any table values after the first second, simply make no difference at all. I've set the values after the first couple of seconds between "0" and "8" and there is no change to how the car behaves on start up. I think there are 3 possibilities here...


If these 2 tables were only "displayed" wrongly in the TuneTool, then they should "behave" correctly in the ECM.
If the TuneTool is programing the values incorrectly back into the ECM, then the ECM behaviour should follow the error.
If the TuneTool is displaying correctly and is programing correctly, but the bug is that the ECM has the tables messed up, then the ECM behaviour will again follow the error.


Given that the ECM is showing signs of this problem, I'm thinking it's the second or third option.


Joecar,

Yes I agree, cold ECT and IVT should need a richer mixture than a warm engine. However, the std cranking mixture for my car was set at 0.25 Lambda at an ECT of 0'c. This is an AFR of 3.7:1 which I think is way too rich.

Simon.

Blacky
May 8th, 2008, 11:49 AM
The index into table B0138 is the engine's off time. i.e. how long since the engine stopped. There is a PID that gives that information, it is defined in the new BBL beta software (OFFTIME), but not in the current EFILive V7.5.x Windows software.
That means you can log it and display it using FlashScan, but you won't be able to see it in the Scan Tool software until we add it to the scan tool definition files.

The link PID for B0138 should not be anything to do with run time. It shouldbe GM.OFFTIME. But that will not work until that PID is defined in the PC software.

Table B1832, can be linked using PIDs: GM.RUN_TIME or SAE.RUNTM. As the engine is cranking the runtime counter increments. As the counter increments it pulls airflow data from successive rows in that table. If the engine cranks for more than 8 seconds it stays in the last row as long as the engine keeps cranking but not starting.

Note: The PID GM.RUN_TIME (aka RUNTIME in BBL) which increments by 160 per second is wrong, it should increment by 1 per second.

Regards
Paul

swingtan
May 8th, 2008, 02:19 PM
The index into table B0138 is the engine's off time. i.e. how long since the engine stopped. There is a PID that gives that information, it is defined in the new BBL beta software (OFFTIME), but not in the current EFILive V7.5.x Windows software.
That means you can log it and display it using FlashScan, but you won't be able to see it in the Scan Tool software until we add it to the scan tool definition files.

yes, I read this table as that originally, but was rather confused to see the time counting up as it is currently indexed to a counter that keeps increasing only when the engine is running. I've had a look at "OFFTIME" and can confirm it operates as expected.


The link PID for B0138 should not be anything to do with run time. It shouldbe GM.OFFTIME. But that will not work until that PID is defined in the PC software.

Agreed, this makes much more sense than the current indexed PID.


Table B1832, can be linked using PIDs: GM.RUN_TIME or SAE.RUNTM. As the engine is cranking the runtime counter increments. As the counter increments it pulls airflow data from successive rows in that table. If the engine cranks for more than 8 seconds it stays in the last row as long as the engine keeps cranking but not starting.

Note: The PID GM.RUN_TIME (aka RUNTIME in BBL) which increments by 160 per second is wrong, it should increment by 1 per second.

Regards
Paul

OK, what I've done here is to make an assumption that may not be true. I noted that my starting issues only last for 8 seconds. As long as I can keep the car running for longer than 8 seconds, it will run fine. The only table I can find that deals with start up and has any sort of reference to 8 seconds, is this table. So I was assuming that it still controls the airflow for the whole duration of the 8 seconds, not just the cranking.

I have logged SAE.RUNTM and GM.RUN_TIME and both do not increment while cranking. They both start incrementing after the car has fired and the key released from the start position. So I get the feeling that B1832 must still have some effect for the first 8 seconds after the car has started. I've added a log where I removed the fuel pump fuse and cranked for 11 seconds. You can see that the 2 PIDs remain at "0".

Regards,

Simon

Blacky
May 8th, 2008, 10:29 PM
OK, what I've done here is to make an assumption that may not be true. I noted that my starting issues only last for 8 seconds. As long as I can keep the car running for longer than 8 seconds, it will run fine. The only table I can find that deals with start up and has any sort of reference to 8 seconds, is this table. So I was assuming that it still controls the airflow for the whole duration of the 8 seconds, not just the cranking.

The cranking airflow table only controls the airflow until the engine transitions from cranking to idle. It does that when the RPM has exceeded 400rpm for about 1 second.
There may be other timers/counters that adjust "something" for 8 seconds. 8 is a "nice" round number for programmers to use.


I have logged SAE.RUNTM and GM.RUN_TIME and both do not increment while cranking. They both start incrementing after the car has fired and the key released from the start position. So I get the feeling that B1832 must still have some effect for the first 8 seconds after the car has started. I've added a log where I removed the fuel pump fuse and cranked for 11 seconds. You can see that the 2 PIDs remain at "0".

Regards,

Simon

I agree, neither of those two PIDs should be used to index that table, but after digging through the ECM, it really seems like engine run time is used to index that table. But given you've proved that value does not increment until the engine transitions from crank to idle I will have to investigate further.

Regards
Paul

swingtan
May 8th, 2008, 10:38 PM
Thanks again Paul. Keep up the good work.

hymey
May 9th, 2008, 02:45 AM
Hi Simon, glad too see you are getting progress, thanks Blacky for helping out. I am back on 12 hour roster so I will chat to you when I am back on days off.

Good luck

Joel

swingtan
May 14th, 2008, 09:55 AM
Hi All,

Well this has been fixed. No more lean spike, no more stuttering and smoother idles and driving when cold.

The fix can be found in this thread....

http://forum.efilive.com/showthread.php?t=8042

Which explains how there is an offset between the measured IVT and the fuel map IVT axis. Once I remapped the axis, I was able to command a richer idle and drive AFR after starting that cleaned everything up. I'd expect that in future releases of the software, that the measured IVT will match these tables correctly and remove the problem.

:thankyou2: to the EFILive guys for helping me "hone" my problem solving skills.... ;)

Blacky
May 14th, 2008, 10:40 AM
I agree, neither of those two PIDs should be used to index that table, but after digging through the ECM, it really seems like engine run time is used to index that table. But given you've proved that value does not increment until the engine transitions from crank to idle I will have to investigate further.

Regards
Paul

It appears that table is indexed by engine run time and not engine off time.
I think that is a mistake in the ECM (but I've been wrong before). I think because it uses the wrong PID to index, it uses the first row only and always.

I guess the only way to find out is to set the entire table to zero except the first row and see if it makes any difference - I think it won't.

You'd need to prevent the engine from starting to allow it to crank for more than 1 second, like you did in a previous test.
You'd also want to log the desired airflow to see if it changes to zero after 1 second.

Regards
Paul

swingtan
May 14th, 2008, 10:52 AM
OK, I can try that out. As it is though, the lean spike is all gone now that I can command a richer mixture via B0143. I had played a lot with B1832 and didn't see to much difference, but I'll set it up as you say and log a start attempt with the fuel pump fuse out.