DIY PROM Do It Yourself PROM chip burning help. No PROM begging. No PROMs for sale. No commercial exchange. Not a referral service.

Surging in closed loop idle (only!)

Thread Tools
 
Search this Thread
 
Old Sep 7, 2006 | 05:34 PM
  #1  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Surging in closed loop idle (only!)

Okay, I have a problem with surging only in closed loop. If I burn a chip that runs in open loop, it will run all day with a rock solid idle. My P/N switch isn't hooked up (workign on it ), but when I put it from P to D, the rpm dips a very tiny amount, but it catches it just fine.

Now, enter the closed loop chip. BLM's are pretty darn good at 126, INT about the same. You let it sit for a while in park, and it will start surging. Desired idle is 700, and it starts bouncing up and down, usually getting more severe each time, till eventually it hits 300rpm and either stalls or revs to 1200+.

Additionally, when in closed loop, if I put it from P to D, it instantly stalls. So it's like it has no torque or momentum when in closed loop idle. Or it can't deal with any sudden changes in rpm fast enough??

Oh - no surging in drive. It handles itself just fine there...

I don't understand what is causing this. How can taking out 1.6% fuel can make that much difference? There has to be some other idle constant that is being "enabled" during CL that causes these things to happen..... Any ideas?

I do have a log if I can figure out how to post it...
Reply
Old Sep 7, 2006 | 05:42 PM
  #2  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Is there an IAC PID term/multiplier that gets enabled for CL?

When the RPM starts dropping fast (100rpm/sample), it only opens the IAC a couple steps per sampling. Doesn't seem fast enough to catch a stall..
Reply
Old Sep 8, 2006 | 05:38 AM
  #3  
junkcltr's Avatar
Supreme Member
iTrader: (1)
 
Joined: Jan 2002
Posts: 4,432
Likes: 1
From: garage
Engine: 3xx ci tubo
Transmission: 4L60E & 4L80E
It kind of sounds like the O2 sensor cooled off because you said it has the problem after sitting in park for a while. Take a look at the O2 sensor mV and see if it is swinging the voltage properly.
Reply
Old Sep 8, 2006 | 07:30 AM
  #4  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Heated o2 sensor, plenty of crosscounts... well, maybe 3 a second
Reply
Old Sep 8, 2006 | 09:10 AM
  #5  
Fast355's Avatar
Supreme Member
20 Year Member
Liked
Loved
Community Favorite
iTrader: (2)
 
Joined: Jan 2005
Posts: 10,404
Likes: 492
From: Hurst, Texas
Car: 1983 G20 Chevy
Engine: 305 TPI
Transmission: 4L60
Axle/Gears: 14 bolt with 3.07 gears
Look at this paper by RBob. It is TBI specific to the 7747, but the general idea can be used with any of the GM ecms.

http://www.diy-efi.org/gmecm/papers/747fuel.txt
Reply
Old Sep 8, 2006 | 09:32 AM
  #6  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
None of those seem to affect only closed loop idle though...
Reply
Old Sep 8, 2006 | 09:57 AM
  #7  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
It is difficult to answer specific questions without knowing the maskID ($A1, or maybe the one after $A1?).

One item to remember is that during closed loop fueling there are proportional gains. These are not present during open loop operation. The $88 & $A1 code bases idle fueling on airflow. Part of this is the IAC steps. There is a learn that needs to take place for a stable idle.

With the cam change (?) you may have thrown the calibration out. Can try an idle learn and see if it helps. IIRC there is an option byte to disable fueling based on airflow, don't know if it will work or not.

The $88 calibrations as used in f-body's are tightly held to stoich. This is required as they run a 3-way cat. In this case the AFR is really leaner then it should be for a decent idle. And makes it tougher to hold an idle.

There is an interesting idle fueling PID control state table. Probably for the lean idle. May need to re-calibration this.

Don't forget about the idle stabilizer SA. A cam'd engine needs that tamed down.

RBob.
Reply
Old Sep 8, 2006 | 10:23 AM
  #8  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
You're a good mind reader! It is $A1.

Everybody always told me to disable the "Calculate BPW at idle as a function of airflow", so that is currently unchecked.

I believe the idle learn is where you let it sit in drive for 5 minutes or something? I always assumed that a good amount of driving fixed any learn procedures necessary... I've been driving the CL binary for a few days now.

I have fixed the idle spark advance/retard tables from those outrageous values originally to a nice linear table, with the spark advance going up to 8 degrees, retard going to 5. (for a 200rpm error) Originally it was something like 9 and 12 respectively.

One question I still have, is what is the purpose of the "Idle Spark Multiplier"? In the 8D, they are all pretty much set to 0.99 or something. In the A1 and DF, the Spark vs MAP tables look like this:

20kpa - 0.625
26kpa - 0.625
32kpa - 0.617
38kpa - 0.602
44kpa - 0.5
49kpa - 0.5
55kpa - 0.5
61kpa - 0.375

It seems like that would work against me for a stable idle. WHY would they do this? And should I set it all to 0.9's?

Originally Posted by RBob
It is difficult to answer specific questions without knowing the maskID ($A1, or maybe the one after $A1?).

One item to remember is that during closed loop fueling there are proportional gains. These are not present during open loop operation. The $88 & $A1 code bases idle fueling on airflow. Part of this is the IAC steps. There is a learn that needs to take place for a stable idle.

With the cam change (?) you may have thrown the calibration out. Can try an idle learn and see if it helps. IIRC there is an option byte to disable fueling based on airflow, don't know if it will work or not.

The $88 calibrations as used in f-body's are tightly held to stoich. This is required as they run a 3-way cat. In this case the AFR is really leaner then it should be for a decent idle. And makes it tougher to hold an idle.

There is an interesting idle fueling PID control state table. Probably for the lean idle. May need to re-calibration this.

Don't forget about the idle stabilizer SA. A cam'd engine needs that tamed down.

RBob.
Reply
Old Sep 9, 2006 | 01:16 PM
  #9  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Originally Posted by ryan.h
You're a good mind reader! It is $A1.

Everybody always told me to disable the "Calculate BPW at idle as a function of airflow", so that is currently unchecked.

I believe the idle learn is where you let it sit in drive for 5 minutes or something? I always assumed that a good amount of driving fixed any learn procedures necessary... I've been driving the CL binary for a few days now.

I have fixed the idle spark advance/retard tables from those outrageous values originally to a nice linear table, with the spark advance going up to 8 degrees, retard going to 5. (for a 200rpm error) Originally it was something like 9 and 12 respectively.

One question I still have, is what is the purpose of the "Idle Spark Multiplier"? In the 8D, they are all pretty much set to 0.99 or something. In the A1 and DF, the Spark vs MAP tables look like this:

20kpa - 0.625
26kpa - 0.625
32kpa - 0.617
38kpa - 0.602
44kpa - 0.5
49kpa - 0.5
55kpa - 0.5
61kpa - 0.375

It seems like that would work against me for a stable idle. WHY would they do this? And should I set it all to 0.9's?
For the idle learn procedure search the V6 board. Put in 'idle' and 'learn' then 'RBob' as the author. I don't believe it is required unless the ECM is using the idle PW via airflow option. You may want to try that option and see if it is better.

The SA MAP multiplier table posted looks like it is for idle too high. As the idle speed increases the MAP value typically decreases. Those table values will increase the SA retard.

In the $88 code there is a table for each: idle too high, and idle too low.

Doesn't look like the $A1 code has that. It uses the same table for both too high & too low. Along with a coolant comp table. With just the one MAP multiplier table I would be tempted to make the values lower at the MAP value the engine usually idles at. Then increase it in both directions. This way it goes toward a larger SA difference as the MAP either decreases or increases.

RBob.
Reply
Old Sep 25, 2006 | 06:51 PM
  #10  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Originally Posted by RBob
The $88 calibrations as used in f-body's are tightly held to stoich. This is required as they run a 3-way cat. In this case the AFR is really leaner then it should be for a decent idle. And makes it tougher to hold an idle.

There is an interesting idle fueling PID control state table. Probably for the lean idle. May need to re-calibration this.
Would you suggest for situations not involving a cat to change the:
"F56
COLD ENGINE TEMP. DEPENDENT AIR/FUEL RATIO VS COOLANT TEMP AND (NVACLD OR NMAPLDAL)
TABLE VALUE = AIR FUEL * 10"

table to represent some numbers richer than what's there? Wow, actually at idle it says 15.3:1 at 104 deg C...

"cold engine" sounds like open loop though.

Could you elaborate on where I would find the PID parameters?

Still trying to get the surging sorted out...
Reply
Old Sep 25, 2006 | 07:17 PM
  #11  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
No CAT? I'd run open loop.

Idle PID state table:

##########################
# F128 IDLE GAIN TABLES #
##########################

RBob.
Reply
Old Sep 25, 2006 | 07:57 PM
  #12  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Originally Posted by RBob
No CAT? I'd run open loop.

Idle PID state table:

##########################
# F128 IDLE GAIN TABLES #
##########################

RBob.
The reason I want to run closed loop is to keep fueling "up to date" when things change (wear, etc).

The PID table doesn't appear to be commented. It has all these strange numbers in almost no pattern. I'll take a look at $8D to see if it's commented there.

So given that I'm stubborn and want closed loop, how would you go about richening idle?
Reply
Old Sep 26, 2006 | 07:16 AM
  #13  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
The Idle Gain table is a state table. It is combined with one or two other tables (code is a little differenet from the $88 stuff). There is a pattern to it, but not by looking at the values. To save you some time $8D doesn't use an idle gain state table.

These three are used to define the idle O2 window:

Code:
 0BD4        64    100 KIDOXTH      0.442 VOLTS  RICH/LEAN O2 THRESHOLD WHEN IN IDLE
 0BD5        70    112 KIDLZU       0.496 VOLTS  ZEREFU VALUE WHEN IDLING
 0BD6        58     88 KIDLZL        0.39 VOLTS  ZEREFL VALUE WHEN IDLING
Note how they are tight to stoich and a little leaner. Hence the need for better idle proportional gain control.

RBob.
Reply
Old Sep 26, 2006 | 08:13 AM
  #14  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Okay thanks.

So if I understand this correctly, there are two PID controls at play at idle. One for the IAC movement, and one for fueling?

I know it will still surge if I unplug the IAC, which leads me to believe it is a fuel issue. If indeed there is a PID control of the idle fuel, I would imagine small changes would easily get it to surge, especially if it uses the O2 travel delay, which may or may not be set up correctly for this engine.

If I were to lock the integrator then, mimicking open loop... and it still surges, then I would think the PID fuel control would need to be adjusted then.

I suppose I could also adjust the "D" of the IAC to have it adapt to changes faster as well. Maybe tone down the overspeed "P".
Reply
Old Sep 26, 2006 | 10:11 AM
  #15  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Other then stating that you removed 1.6% fuel, you never mentioned what change was made to the engine. That will affect which areas need work.

The IAC is too slow to control the idle other then the general RPM. The SA idle stabilizer is the fastest reacting to RPM changes. With the fueling proportional gains in between.

Dependent upon the changes that brought on the surging: it may be a lean spot in the VE table, too much proportional gain, or too low an idle speed. From playing with various ECMs and calibrations it doesn't take much to throw the proportional gains askew.

There are a couple of things you can do: run open loop for a while during which you can study the PID variables of the $A1 code. And decipher the PI state table (in the $88 code it controls the idle proportional gain along with the integrator update delay, fueling).

Try a better documented ECM such as an EBL setup. One is running a 3.1l f-body better then the stock ECM/code.

RBob.
Reply
Old Sep 26, 2006 | 12:23 PM
  #16  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
PM sent.

I'll get to work on that state table.
Reply
Old Sep 26, 2006 | 03:48 PM
  #17  
Ronny's Avatar
TGO Supporter
20 Year Member
iTrader: (1)
 
Joined: Mar 2003
Posts: 6,880
Likes: 4
From: wisconsin
commanded idle 800 idles 1200?

ERROR

Last edited by Ronny; Sep 27, 2006 at 04:43 PM.
Reply
Old Sep 26, 2006 | 07:14 PM
  #18  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Anywho,

What does this all do:
Code:
 0BD7        08      8 KPCNT1           8 COUNTS PROPORTIONAL COUNTS WHEN IN PROPORTIONAL
                                                 DURATION #1
 0BD8        0C     12 KPCNT2          12 COUNTS PROPORTIONAL COUNTS WHEN IN PROPORTIONAL
                                                 DURATION #2
 0BD9        08      8 KIDLPD1        0.1 SEC    PROPORTIONAL DURATION #1 WHEN IDLING
 0BDA        0C     12 KIDLPD2       0.15 SEC    PROPORTIONAL DURATION #2 WHEN IDLING
 0BDB        80    128 KIDLGF         0.5 FACTOR PROPORTIONAL COUNTS GAIN FACTOR WHEN
                                                 IDLING
and:

Code:
                                                 #####################################
                                                 #  F9CLTBL       PCCNT              #
                                                 #  PROPORTIONAL COUNTS (ERROR)      #
                                                 #  N = E                            #
 * -------------------------------------------------------------------
 0C52        12     18                18 COUNTS 0 ERROR
 0C53        18     24                 24 COUNTS 8
 0C54        1A     26                 26 COUNTS 16
 0C55        1E     30                 30 COUNTS 24
 0C56        20     32                 32 COUNTS 32
 0C57        22     34                 34 COUNTS 40
 0C58        24     36                 36 COUNTS 48
 0C59        28     40                 40 COUNTS 56
 0C5A        30     48                 48 COUNTS 64
 0C5B        38     56                 56 COUNTS 72
It seems like those are O2 and/or fueling proportional terms
Reply
Old Sep 29, 2006 | 02:53 PM
  #19  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Progress was made today... I tempered the IAC PID terms, and combined with the large underspeed SA, it seems to have become much better mannered. Instead of immediately surging and stalling when I place it in park, it now takes 2 minutes and it doesn't stall.

Code:
TPS %	BatV	FPV	Engine	MAP	AFR	O2	Crosses	INT	BLM	Cell	BPW	Idle	IAC	Spark
%	Volts	Volts	RPM	KPA	        mV	Crosses					mSec	RPM	Steps	Degrees
0	13.5	13.2	1200	16.47	14.7	861.9	97	132	124	0	0.96	750	13	15.82
0	13.5	13.3	1100	17.25	14.7	853.06	97	132	124	0	0.98	750	13	15.82
0	13.5	13.3	950	18.04	14.7	844.22	97	132	124	0	0.99	750	13	15.82
0	13.4	13.3	850	19.61	14.7	835.38	97	128	124	0	0.99	750	13	19.34
0	13.5	13.3	775	21.96	14.7	822.12	97	128	124	0	1.02	750	13	24.26
0	13.5	13.3	675	24.31	14.7	822.12	97	128	124	0	1.08	750	13	30.59
0	13.3	13.2	625	26.27	14.7	822.12	97	128	124	0	1.14	750	13	31.29
0	13.4	13.2	600	28.24	14.7	826.54	97	128	124	0	1.21	750	14	30.23
0	13.3	13.2	600	30.59	14.7	813.28	97	128	124	0	1.28	750	15	29.53
0	13.4	13.2	600	32.16	14.7	698.36	97	128	124	0	1.37	750	15	28.83
0	13.5	13.3	650	32.55	14.7	800.02	97	128	124	0	1.36	750	15	28.48
0	13.1	13.2	700	32.16	14.7	760.24	97	128	124	0	1.39	750	15	25.31
0	13.6	13.3	750	31.37	14.7	265.2	98	127	124	0	1.4	750	15	18.98
0	13.2	13.2	800	30.2	14.7	57.46	98	127	124	0	1.39	750	15	17.93
0	13.5	13.3	850	28.63	14.7	13.26	98	127	124	0	1.36	750	15	16.88
0	13.5	13.3	875	27.45	14.7	17.68	98	127	124	0	1.33	750	15	16.88
0	13.4	13.2	900	26.27	14.7	30.94	98	127	124	0	1.28	750	15	16.88
0	13.5	13.2	925	25.1	14.7	48.62	98	128	124	0	1.27	750	15	15.12
0	13.4	13.2	900	24.31	14.7	667.42	99	128	124	0	1.17	750	15	17.58
0	13.5	13.3	900	23.92	14.7	822.12	99	128	124	0	1.13	750	15	17.58
0	13.4	13.2	875	23.53	14.7	853.06	99	128	124	0	1.11	750	15	17.58
0	13.1	13.2	850	23.92	14.7	853.06	99	128	124	0	1.11	750	15	18.63
0	13	12.9	800	24.31	14.7	844.22	99	128	124	0	1.11	750	15	19.69
0	12.8	12.6	750	25.49	14.7	844.22	99	128	124	0	1.14	750	15	23.2
0	12.7	12.5	725	26.67	14.7	835.38	99	128	124	0	1.16	750	15	28.13
0	12.4	12.2	650	28.63	14.7	800.02	99	128	124	0	1.22	750	16	30.23
0	12.4	12.2	575	31.37	14.7	150.28	100	128	124	0	1.34	750	19	29.18
0	12.4	12.2	575	33.33	14.7	22.1	100	128	124	0	1.45	750	21	28.83
0	11.9	12	600	35.29	14.7	4.42	100	128	124	0	1.53	750	23	27.77
0	12.3	12.2	650	35.69	14.7	8.84	100	128	124	0	1.57	750	23	27.42
0	12.6	12.4	725	34.9	14.7	13.26	100	128	124	0	1.59	750	23	24.26
0	13.3	12.9	775	33.33	14.7	8.84	100	129	124	0	1.59	750	23	17.58
0	13.3	13.1	850	31.76	14.7	13.26	100	129	124	0	1.54	750	23	16.17
0	13.3	13.2	925	29.41	14.7	17.68	100	129	124	0	1.48	750	23	14.41
0	13.4	13.2	975	27.45	14.7	35.36	100	130	124	0	1.42	750	22	14.41
0	13.3	13	1000	25.49	14.7	114.92	100	130	124	0	1.34	750	22	15.12
0	13.1	12.9	1025	24.31	14.7	830.96	101	130	124	0	1.19	750	21	15.47
0	12.9	12.7	1000	23.14	14.7	848.64	101	130	124	0	1.16	750	21	15.82
0	12.5	12.4	950	23.14	14.7	857.48	101	130	124	0	1.16	750	21	15.82
0	12.4	12.2	900	23.53	14.7	848.64	101	130	124	0	1.13	750	21	17.58
0	12.4	12.2	825	24.31	14.7	839.8	101	130	124	0	1.14	750	21	19.69
0	12.2	12.1	750	25.88	14.7	707.2	101	130	124	0	1.19	750	21	20.39
0	11.9	12	700	27.45	14.7	61.88	102	130	124	0	1.28	750	21	27.07
0	12.2	12	650	29.41	14.7	4.42	102	130	124	0	1.36	750	21	29.53
0	12.2	12	700	30.59	14.7	13.26	102	130	124	0	1.43	750	21	26.72
0	12.2	12	725	30.98	14.7	13.26	102	130	124	0	1.45	750	21	26.02
0	12.2	12.1	750	30.59	14.7	17.68	102	130	124	0	1.46	750	21	18.63
0	12.4	12.2	800	30.2	14.7	13.26	102	131	124	0	1.48	750	21	18.28
0	12.7	12.5	850	28.63	14.7	17.68	102	131	124	0	1.45	750	21	16.88
0	12.7	12.6	875	27.84	14.7	26.52	102	131	124	0	1.43	750	21	16.52
0	12.9	12.8	900	26.67	14.7	44.2	102	132	124	0	1.4	750	21	16.88
0	13.3	13.1	925	25.88	14.7	150.28	102	132	124	0	1.37	750	21	15.12
0	13.4	13.2	925	25.1	14.7	826.54	103	132	124	0	1.25	750	20	15.12
0	13.5	13.3	925	24.71	14.7	866.32	103	132	124	0	1.24	750	20	15.47
0	13.2	13.2	925	23.92	14.7	870.74	103	132	124	0	1.22	750	20	15.47
0	13.3	13.2	925	23.92	14.7	870.74	103	132	124	0	1.21	750	20	17.58
I guess what I don't understand is if the low RPM fuel increase is helping or hurting.

Screenshot of my idle VE:
http://img521.imageshack.us/img521/6184/idvejj4.jpg

Last edited by ryan.h; Sep 29, 2006 at 03:00 PM.
Reply
Old Oct 2, 2006 | 09:43 AM
  #20  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Well, I discovered something. Something is happening at the 600rpm threshold to increase the BPW. For instance, going from 625 rpm, 27.5map, to 575rpm 29map, the BPW increases from 1.17mS to 1.28mS. This happens repeatably. The longer that it stays below 600rpm, the higher the BPW gets, upwards of 1.6mS. (The typical idle PW is 1.1mS.)

You guys can see my idle VE table, it's pretty flat.
Reply
Old Oct 2, 2006 | 09:54 AM
  #21  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Double check your idle VE table axis. The picture above shows MAP as rows and RPM as columns. Code layout shows the opposite. MAP should be the columns, and RPM as rows.

As for the high PW's, from the snap shot above the O2 goes very low. Into the single digits. As it does the PW increases. Most likely from the proportional gains.

RBob.
Reply
Old Oct 2, 2006 | 09:59 AM
  #22  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Originally Posted by RBob
Double check your idle VE table axis. The picture above shows MAP as rows and RPM as columns. Code layout shows the opposite. MAP should be the columns, and RPM as rows.

As for the high PW's, from the snap shot above the O2 goes very low. Into the single digits. As it does the PW increases. Most likely from the proportional gains.

RBob.
Is there a simple flag I can set to turn off the prop gains? I'll look into the axes, I think that's just how it is set up in tunerpro. But I didn't write the definition, so it's definately a lead to look into.

edit - checked it against the stock bin, and it is correct. Tunerpro just mixes things up to keep you on your toes.

Also, notice the samples 8-10, the o2 is solidly rich, and the BPW starts increasing because the RPM is below 600.

Last edited by ryan.h; Oct 2, 2006 at 10:04 AM.
Reply
Old Oct 2, 2006 | 01:05 PM
  #23  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
ahh, wait a sec...

600 is the bottom of the table. So how does it calculate BPW when the RPM is off the tables?

This maybe?
Code:
############################
#   F163 TABLE             #
# MULTIPLIER VS RPM        #
# TABLE VALUE = MULTIPLIER #
############################
89DA        08      8                  8        USE 9 VALUE TABLE	
89DB        01      1              0.004 MULT       0    RPM-SPEED
89DC        0A     10               0.04 MULT     200
89DD        2D     45              0.176 MULT     400
89DE        4F     79               0.31 MULT     600
89DF        8F    143               0.56 MULT     800
89E0        C0    192               0.75 MULT    1000
89E1        D5    213              0.832 MULT    1200
89E2        EA    234              0.914 MULT    1400
89E3        FF    255              0.996 MULT    1600
It sounds like the 600/400 values need to be reduced if that is the correct table. I'll have to check the code to see where it is referenced.
Reply
Old Oct 3, 2006 | 03:06 PM
  #24  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
I'm not sure what I was thinking, I believe that's the crank PW multiplier table. However, the Base VE table has all the RPM values to 0, in a 2d table. The total VE is the 2d +3d tables added together. In cases where the rpm is off the chart (<600 or >4000), it uses the last cell of the table.

I tried adjusting the 400 and 0 rpm values of the 2d table down, but they appear to have no effect on the BPW.

So now I'm really confused. The PID routine does NOT override the BPW. (right?? or maybe the prop. gains are so off the wall that it takes huge jumps anyways) This implies that something else is taking over fueling when the RPM drops below 600. There has to be some stall saver algorithm I have overlooked.

Also, I checked the code for referenes to the idle gain table - and there was only ONE. Located at C6F9, that references 8C93. I'll have to look it again.

Last edited by ryan.h; Oct 3, 2006 at 03:14 PM.
Reply
Old Oct 3, 2006 | 07:35 PM
  #25  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Ryan, to be honest there is a lot on stuff going on in the $88 and $A1 code. Below 600 RPM it may be dropping into the n-alpha fueling routine. I really can't say one way or another. It may even be an arson mode issue.

As for disabling the prop gains, can zero them out. Then the integrator will rise and fall to take their place. This is because the PID loop is designed to oscillate.

As for C6F9 & 8C93, look at how the value in L0046 is created. Then how the prop gain table value is used after being stored in L0197.

RBob.
Reply
Old Oct 3, 2006 | 10:05 PM
  #26  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Well, if I understand my assembly... and I don't...

it looks like it is using 8C89-
Code:
8C89        20     32 KIDLPGLO $20 UNIT   LO PROP GAIN (USED IN PID/EECC CROSSTALK)
and 8C8D-
Code:
8C8D        18     24 KIDINTLO $18 UNIT   LO INT GAIN (USED IN PID/EECC CROSSTALK)
in some calculations with L0197. I'm guessing the 8C89 is the correct "P" fueling term. Guess I'll find out tomorrow. The creation of L0046 makes my brain hurt. So many sets/resets.

just out of curiosity, what is "EECC"? And arson mode? Is that a typo? Is that like valet mode, but when someone sets fire to your car?

Also, I tried something today I never tried before - I set the idle to 600, in open loop. It actually idled pretty good. It had a slow 50 rpm roll though. IAC was not moving, and SA wasn't moving that much either. Probably have to up the lower RPM error advance/retard.

For the heck of it, tomorrow I'll try enabling "calculate BPW as Fn of airflow"...

Last edited by ryan.h; Oct 3, 2006 at 10:10 PM.
Reply
Old Oct 4, 2006 | 11:40 AM
  #27  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Nope, that's not it. Idle still surges and BPW oscillates by 0.3mS at idle. Back to the code...



Okay, now wait a second....

You called this the Proportional Fueling/PID. I thought this was seperate from the O2 PID algorithm. To me, it looks like this is just used to update the integrator? The INT is stable compared to the BPW when it starts to surge.

Last edited by ryan.h; Oct 4, 2006 at 12:19 PM.
Reply
Old Oct 5, 2006 | 08:43 AM
  #28  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Here is how the idle prop and INT delay state table works in $88. From my brief look at $A1 it is either the same or very close to the same. The RAM locations and EPROM locations are different. So will need to translate those from/to the masks.

The logic starts with creating a state value in L0044. This is done bit wise dependent upon different conditions. These are:

O2 Lean or Rich
Idle Speed High, Low, or OK
Engine Speed is Increasing, Decreasing, or Steady
Idle Speed delta from Desired > cal threshold
Idle Speed rate of Change > cal threshold

Once the proper bits are set or reset in L0044, it is used to index into the state table. Here is the state table layout that reflects the value in L0044:

Code:
; ----------------------------------------------
; Idle Proportional gain and INTegrator delay
; 
; 112 entries starting at 0x8C86
; 
; Lookup into this table is from L0044. Which is
; built up as a bit mapped word. 
; 
; 
; The table values are used as an index into
; the idle proprtional gain and INT delay tables:
; 
;  xxxx xxnn for the PROP gain table
;  xxxx nnxx for the INT delay table
; ----------------------------------------------
; 
; L8C86
; --------------------------------------------------------------------; 
; |    no change  |  increasing    |   decreasing   |     N/U      |
; | ok  rt  dl  bh| ok  rt  dl  bh | ok  rt  dl  bh |     N/U      |
; 
; Rich: x0xx xxxx
; 
;   Idle OK:   x000 xxxx
; 
;   0   0   0   0   0   0   0   0     1   1   0   0   0   0   0   0   ; 16
; 
;   Idle High: x001 xxxx
; 
;   0   0   0   0   0   0   0   0     0   1   1   1   0   0   0   0   ; 32
; 
;   Idle Low:  x010 xxxx
; 
;   1   2   2   2   1   0   2   2     2   4   4   4   0   0   0   0   ; 48
; 
; 
; 
;   N/U: 0x011 xxxx
; 
;   0   0   0   0   0   0   0   0     0   0   0   0   0   0   0   0   ; 64
; 
; 
; Lean: x1xx xxxx
; 
;   Idle OK:   x100 xxxx
; 
;   1   1   0   0   1   1   0   0     2   4   0   0   0   0   0   0   ; 80
; 
;   Idle High: x101 xxxx
; 
;   1   1   1   1   1   1   1   2     1   1   3   3   0   0   0   0   ; 96
; 
;   Idle Low:  x110 xxxx
; 
;   3   4   5   5   3   2   2   3     5   7   8   9   0   0   0   0   ; 112
; 
; |      00xx     |      01xx      |       10xx     |     N/U      |
; | 00  01  10  11| 00  01  10  11 | 00  01  10  11 |     N/U      |
; --------------------------------------------------------------------; 
; |    no change  |  increasing    |   decreasing   |     N/U      |
; | ok  rt  dl  bh| ok  rt  dl  bh | ok  rt  dl  bh |     N/U      |
; --------------------------------------------------------------------; 
; L0044
; 
;    $40	; set when lean, clr when rich
;
;    $30	; clr when desired idle is correct
;    $20	; set idle too low
;    $10	; set idle too high
; 
;    $0C	; clear when engine speed not changing
;    $08	; engine speed is decreasing
;    $04	; engine speed is increasing
; 
;    $02	; set when desired idle delta > 200 rpm    (dl) |
;    $01	; set when engine speed delta rate > thres (rt) |- (bh)
; 
; ----------------------------------------------
It may take some study to understand the table layout, so lets give an example. Say the conditions that make up the value in L0044 are as such:

O2 Lean ($40)
Idle Speed Low ($20)
Engine Speed is Decreasing ($08)
Idle Speed delta from Desired > cal threshold ($02)
Idle Speed rate of Change > cal threshold ($01)

The $xx values show which bit is set for that condition. In this case each bit will be set. They could be cleared if the condition was different.

The value in L0044 will be: $6B or 107. So the 108th byte from the state table will be loaded and saved in RAM location L019A. This is for later use. That value is 9. (The 108th byte is retrieved with an index of 107 as the table starts with an index of 0. Which would be the 1st byte).

From the state table can either count out to the 108th byte, or drop down through the conditions as shown for the table. I made that indexed value bold in the table above. Note that the value from this table is an indexed retrieve, not an interpolated lookup.

Now we have the value from the state table in L019A, and it is a 9. This value is then broken into two values and used as indexes into two other tables. One being the proportional gain and the other an additional integrator update delay.

Here are those two tables:

Code:
; --------------------------------------
; 
; Proportional Gain for Idle vs L019A
; 
; --------------------------------------

;----------------------------------
;	;	gain	; L019A
;----------------------------------
L8C7C	FCB	 16	; xxxx xx00
	FCB	 16	; xxxx xx01
	FCB	 26	; xxxx xx10
	FCB	 32	; xxxx xx11


; --------------------------------------
;
; INTegrator update delay for idle vs L019A
;
; added to results of tbl's: L8C05 & L8C5E
; --------------------------------------

;----------------------------------
;	;	ofst	; L019A
;----------------------------------
L8C80	FCB	 24	; xxxx 00xx
	FCB	 16	; xxxx 01xx
	FCB	 12	; xxxx 10xx
	FCB	  4	; xxxx 11xx
The two low bits of 9 (in L019A) are used for the proportional gain table lookup. They being 01 (9 in binary is 1001), this will retrieve the second entry for a value of 16.

The next two higher bits of 9 are used for the additional integrator delay table lookup. They being 10 will retrieve the added int update delay from the third entry for a value of 12.

And there you have it. Interesting stuff.

RBob.

Last edited by RBob; Oct 5, 2006 at 08:58 AM.
Reply
Old Oct 5, 2006 | 09:00 AM
  #29  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
You're my hero. I have a lot to go on now, so I'll be busy for the next few days.

File -> Print
Reply
Old Oct 6, 2006 | 01:46 PM
  #30  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Ahhh... for future reference, the idle proportional fuel gain table in $a1 is:
Code:
8C89        20     32 KIDLPGLO $20 UNIT   LO PROP GAIN (USED IN PID/EECC CROSSTALK)
8C8A        30     48 KIDLPGNM $30 UNIT   NOMINAL PROP GAIN (USED IN PID/EECC CROSSTALK)
8C8B        30     48 KIDLPGHI $30 UNIT   HI PROP GAIN (USED IN PID/EECC CROSSTALK)
8C8C        30     48 KIDLPGXH $30 UNIT   XTRA HI PROP GAIN (USED IN PID/EECC
I don't know why the commenter chose to lay it out that way, vs a table (which it is)
Reply
Old Oct 6, 2006 | 02:22 PM
  #31  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Well... I tried changing the values to 6-13, and I'm seeing no difference. It still surges, although it is perhaps lightly less willing to begin surging (I have to start it by turning on the blower fan). The fuel also still ramps up when it is below 600rpm. I still can't determine whether this ramp up is helping or hurting.

I'll have to do an open loop test to see what it does there. As I mentioned previously, it's still not capable of dealing with sudden idle load changes. When I kick on the blower fan it will take a huge voltage and rpm hit. Sometimes it stalls so fast you'd think someone flipped the ignition switch. It's so odd that it doesn't do that in open loop.

oh, btw, I tried checking the "calculate bpw as fn of airflow" and it wouldn't even stay running.
Reply
Old Oct 6, 2006 | 02:26 PM
  #32  
vernw's Avatar
Supreme Member
iTrader: (2)
 
Joined: Jul 2003
Posts: 3,205
Likes: 0
From: Dallas, TX area
Car: 91 Formula WS6 (Black, T-Tops)
Engine: 383 MiniRam (529 HP, 519 TQ - DD2K)
Transmission: Built '97 T56, Pro 5.0, CF-DF
Axle/Gears: 4.11 posi Ford 9"
That's starting to sound like the voltage vs. injector pulse width table needs massaging (at least that's what it's called in $8D)
Reply
Old Oct 6, 2006 | 02:38 PM
  #33  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
I've got one of these:

Code:
######################################################
#     F33 TABLE             FUEL BIAS                #
#     FUEL INJECTOR OFFSET VS. BATTERY VOLTAGE       #
#     TABLE VALUE = MSEC * 32.768                    #
######################################################
89A8        10     16                16        USE 17 VALUE TABLE	
89A9        16     22               0.67 MSEC     0.0  VOLTS-BATTERY
89AA        16     22               0.67 MSEC     1.6
89AB        16     22               0.67 MSEC     3.2
89AC        16     22               0.67 MSEC     4.8
89AD        B2    178               5.43 MSEC     6.4
89AE        4E     78               2.38 MSEC     8.0
89AF        32     50               1.53 MSEC     9.6
89B0        20     32               0.98 MSEC    11.2
89B1        1A     26                0.8 MSEC    12.8
89B2        13     19               0.58 MSEC    14.4
89B3        0D     13                0.4 MSEC    16.0
89B4        09      9               0.27 MSEC    17.6
89B5        07      7                0.2 MSEC    19.2
89B6        05      5               0.15 MSEC    20.8
89B7        03      3                0.1 MSEC    22.4
89B8        01      1               0.03 MSEC    24.0
89B9        00      0                  0 MSEC    25.5
Is that similar? It sounds like that's added to the BPW as the battery voltage changes. My idle PW is about 1mS... should I try flattening out the table?
Reply
Old Oct 6, 2006 | 03:06 PM
  #34  
vernw's Avatar
Supreme Member
iTrader: (2)
 
Joined: Jul 2003
Posts: 3,205
Likes: 0
From: Dallas, TX area
Car: 91 Formula WS6 (Black, T-Tops)
Engine: 383 MiniRam (529 HP, 519 TQ - DD2K)
Transmission: Built '97 T56, Pro 5.0, CF-DF
Axle/Gears: 4.11 posi Ford 9"
From what I've always heard (again, I'm no expert), base pulse widths below 1ms are quite troublesome. Injectors are not reliably opening and closing plus injecting fuel at that short of pulse width. 2ms is about the minimum I've seen recommended. So if anything, you might need to increase the values in that table, especially at the voltages it drops to when the blower kicks on, etc. Any chance you've data logged and can see the voltage drops?
Reply
Old Oct 6, 2006 | 07:04 PM
  #35  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
I always thought for low PW's, it doubles up the open time, and fires half as often? My average PW at idle is about 1.2mS.

Here's when I turned the fan on to high:

Code:
TPS %	CTS	Battery	FuelPump Speed	MAP	RunTime	AFR	O2	Crosscts INT	BLM	Cell	BPW DesiredRPM	IAC   Spark
%	Deg F	Volts	Volts	RPM	KPA	Seconds	 	mV	Crosses				mSec	RPM	Steps	Degrees

0	194.9	12.3	12.3	725	24.31	228	14.7	861.9	37	131	114	0	1.11	700	8	16.17
0	194.9	12.1	11.9	675	25.49	228	14.7	724.88	37	131	114	0	1.16	700	8	22.15
0	194.9	11.8	11.6	600	27.84	228	14.7	853.06	37	131	114	0	1.17	700	9	23.55
0	194.9	11.4	11.4	550	30.2	228	14.7	839.8	37	131	114	0	1.24	700	11	18.98
0	194.9	11.2	11.3	500	32.94	228	14.7	795.6	37	131	114	0	1.36	700	14	17.23
0	194.9	10.4	11.4	400	36.86	228	14.7	521.56	38	130	114	0	1.48	700	18	16.88
0	194.9	11.4	11	400	41.18	228	14.7	44.2	38	130	114	0	1.69	700	23	17.93
0	194.9	11.5	11.2	475	43.14	229	14.7	8.84	38	130	114	0	1.77	700	23	17.93
0	194.9	11.5	11.3	525	43.53	229	14.7	13.26	38	130	114	0	1.79	700	24	20.74
0	194.9	11.9	11.6	650	42.75	229	14.7	4.42	38	130	114	0	1.8	700	24	21.45
0	194.9	11.9	11.7	750	40	229	14.7	4.42	38	131	114	0	1.79	700	23	14.41
0	194.9	12.3	12	875	36.08	229	14.7	4.42	38	131	114	0	1.65	700	21	13.71
0	194.9	12.9	12.7	975	31.76	229	14.7	13.26	38	131	114	0	1.39	700	18	12.66
0	194.9	12.8	12.6	1050	27.84	229	14.7	640.9	38	132	114	0	1.24	700	15	13.71
0	194.9	12.9	12.7	1075	24.31	230	14.7	844.22	41	132	114	0	1.13	700	13	15.12
Voltage dips to 10 and the RPM's take a dive. Again, it doesn't do this in open loop (except for the voltage dip of course). It has more torque it seems, and can react to changes in idle load with ease (even at 600rpm).

btw, I have no ideas why the BLM is at 114 here. Something I changed must have affected it, because it was at 126 before.
Reply
Old Oct 6, 2006 | 09:51 PM
  #36  
Sil's Avatar
Sil
Junior Member
 
Joined: Aug 2006
Posts: 25
Likes: 0
From: Winnipeg, Manitoba
Car: 1993 Pontiac Grand prix
Engine: 2.8/3100
Transmission: 4T60-E
Axle/Gears: 3.73
man, i think you got a bad fan....
when my fan turns on i dont even see a dip in voltage
Reply
Old Oct 7, 2006 | 08:37 AM
  #37  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
I agree, either a bad fan or a wiring issue. Shouldn't see the voltage drop like that.

As for the idle proportional gains, it sounds like reducing them has helped stabilize the idle. Which is the intent.

Looking at the log above (post # 35), the first two lines. The desired idle is 700 RPM, with the first line at 725 RPM and the second line at 675 RPM.

Each of those is 25 RPM from the desired. Which is real close to the desired. Then check thee SA value for those two lines. There is a 6 degree difference. I would consider that too great a difference. Reduce the idle correction timing so that there is 2 degrees when within 25 RPM of the desired idle.

As the RPM continues to fall the SA timing also drops off. From 22 deg at 675 RPM, to 19 deg at 550 RPM, and 17 deg at 500 RPM. This too is contributing to the stall. The MAP is still decent at that low an RPM, should be able to maintain or increase the SA without issue.

Is the MEMCAL set up for an 8cylinder? And the BIN cylinder count set for an 8 cylinder? If not that is going to cause additional issues.

RBob.
Reply
Old Oct 7, 2006 | 08:53 AM
  #38  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
Likely a wiring issue. When measured at the battery terminal, the voltage doesn't drop much at all. In fact, it's almost a rock solid 14.4 volts, so the ECM is measuring a full 1V drop.

I'll change the SA... I didn't know how much was enough. I figured with large errors you'd want more IAC correction vs spark advance... guess i was wrong.

The memcal/bin is set up for 8cyl.
Reply
Old Oct 7, 2006 | 01:03 PM
  #39  
vernw's Avatar
Supreme Member
iTrader: (2)
 
Joined: Jul 2003
Posts: 3,205
Likes: 0
From: Dallas, TX area
Car: 91 Formula WS6 (Black, T-Tops)
Engine: 383 MiniRam (529 HP, 519 TQ - DD2K)
Transmission: Built '97 T56, Pro 5.0, CF-DF
Axle/Gears: 4.11 posi Ford 9"
Before I changed anything in the bin, I'd do like RBob and others have said - find out why the voltage is dropping like that. I should not do that. EIther the battery or alternator or fan is bad, or there is a wiring problem. No amount of bin mods will fix that, and you're likely to just introduce mpre prpblems you'll have to un-correct later. Get the battery and alternator checked first - places like AutoZone do that for free. There is no reason to try and work around that voltage drop - fix it first then go to the bin for other stuff. At least that's my opinion on all of it. YMMV of course.
Reply
Old Oct 7, 2006 | 02:17 PM
  #40  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
It's a wiring problem. It's possible the battery is bad/old, I can get that checked out too. The alternator is new. The coolant fan would stall the engine too if it weren't for the added IAC steps. I think it's just my setup, because others have the same problems too. It could be that the alternator I have is (supposed to be) computer controlled and I have the control coil tied to +12V to put out power all the time.

In any event, it's entirely possible that the voltage drop is because of the RPM drop. That implicates the battery, which it likely is, IIRC it's about 4 years old and was stored outside in subzero temps for about a year. I'll put it on the list.

Besides that, the rpm does NOT drop when it is in open loop. Or at least not very much.
Reply
Old Oct 7, 2006 | 02:52 PM
  #41  
ryan.h's Avatar
Thread Starter
Member
iTrader: (2)
 
Joined: Jun 2002
Posts: 248
Likes: 0
RBob! I think your spark advance trick did it! It was probably a combination of things, mainly changing the fuel proportional term, the IAC integral, proportional and derivative terms, and the spark advance... but idle is pretty dang good now. It occasionally dips or surges 75rpm for some unknown reason, but that's SO much better than what it was.

Thanks again guys, for all your help!!!



(I'll get that battery checked out later too!)
Reply
Old Oct 9, 2006 | 12:09 PM
  #42  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 233
From: Chasing Electrons
Car: check
Engine: check
Transmission: check


If you haven't made the idle O2 window change that too will help. See post 13 it lists the 3 locationcs to change. Bump each up about 50 mV and check the affect.

RBob.
Reply
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
Eric2ndGen
Transmissions and Drivetrain
11
Nov 5, 2015 01:51 PM
bamaboy0323
Tech / General Engine
25
Sep 3, 2015 06:07 AM
CORV3TT3
DIY PROM
6
Aug 23, 2015 11:26 AM
beast94
DIY PROM
4
Aug 20, 2015 06:44 AM
IROCThe5.7L
DIY PROM
1
Aug 10, 2015 11:24 AM




All times are GMT -5. The time now is 09:50 AM.