7730 w/$88 mask - rich open loop idle
7730 w/$88 mask - rich open loop idle
Hey guys, I have an 86 2.8 with a 2.8 FI. I have the 7730 ecm running the $88 BAWX .bin file. I can not adjust the open loop idle air/fuel ratio. I have tried using Tuner Cat and TunerPro with no success. I can adjust any table and lean out the air/fuel ratio - change the injector size - manipulate the base pulse width adjusters and the ecm will recalculate the airfuel mixture to always run rich. I have a new 4 wire O2 hooked up. When it fires up, the O2 (hot or cold) starts out @ .5mv and raises to .95+mv. You can smell the rich condition. The vehicle idles correctly. I have ruled out faulty sensors and vacuum leaks via testing. There has to be a table or constant missing from my definition files that controls this. Hopefuly someone will have some insight on this issue.
The car runs great in closed loop. I have tried different size injectors and have tested them to ensure no injectors are leaking. I am 99% certain it is a .bin parameter that needs adjusted.
Thanks....Red
The car runs great in closed loop. I have tried different size injectors and have tested them to ensure no injectors are leaking. I am 99% certain it is a .bin parameter that needs adjusted.
Thanks....Red
Moderator
iTrader: (1)
Joined: Mar 2002
Posts: 18,432
Likes: 234
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Re: 7730 w/$88 mask - rich open loop idle
The idle PW is calculated from the airflow. The calculation for the airflow value takes into account the MAP, Barometric pressure, engine RPM, IAC position, IAT, and CTS.
From that airflow value the code uses a BPC value that is specifically for idle. This is found at $6BA
Note that there are three BPC values in the code. The one above used for idle, another that is used for n-alpha fueling during cranking. Then a table of BPC values vs EGR for when the engine is running (and not in idle).
To turn off the idle based on airflow there is an option bit. Note that I'm not saying to do this, just that it is there. Location $6B5 bit 2 is the option flag. A 1 for idle PW based on airflow, a 0 for "same as running engine PW calculation."
RBob.
From that airflow value the code uses a BPC value that is specifically for idle. This is found at $6BA
Note that there are three BPC values in the code. The one above used for idle, another that is used for n-alpha fueling during cranking. Then a table of BPC values vs EGR for when the engine is running (and not in idle).
To turn off the idle based on airflow there is an option bit. Note that I'm not saying to do this, just that it is there. Location $6B5 bit 2 is the option flag. A 1 for idle PW based on airflow, a 0 for "same as running engine PW calculation."
RBob.
Re: 7730 w/$88 mask - rich open loop idle
Alright! I'll mess with that and see what it does. Do you know how the $88 code mask calculates the airflow. I know it must be on a table or calculation due to the lack of MAF.
Thanks again!!
Thanks again!!
Moderator
iTrader: (1)
Joined: Mar 2002
Posts: 18,432
Likes: 234
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Re: 7730 w/$88 mask - rich open loop idle
Actually, the location at $6BA is really an injector flow rating. Not a BPC. It consists of 2 bytes that is a value to define the seconds of injector open time to flow one gram of fuel. So the larger the injector the smaller this value.
Figure I'd correct myself on that point. As it will make a difference when trying to tune.
Note that the idle injector PW calculation still uses the commanded AFR variable. So changing that will also change the idle PW and the resultant AFR.
This is the ECMs calc for the airflow at idle. I'm not sure which table should be changed due to the change in engine displacement. My first guess would be the IAC airflow, second guess would be the TPS% offset vs RPM table.
Figure I'd correct myself on that point. As it will make a difference when trying to tune.
Note that the idle injector PW calculation still uses the commanded AFR variable. So changing that will also change the idle PW and the resultant AFR.
This is the ECMs calc for the airflow at idle. I'm not sure which table should be changed due to the change in engine displacement. My first guess would be the IAC airflow, second guess would be the TPS% offset vs RPM table.
Code:
; ----------------------------------------------- ; ; SubRoutine ; ; Used in idle fueling routine ; ----------------------------------------------- LCC5C: LDAB L001B ; a/d baro counts, kpa = (N + 28.06) / 2.71 ; BRCLR L0038;$C0,LCC66 ; map hi, lo malf bits ; CMPB L005A ; filt map ADC cnts BRA LCC68 ; ; LCC66: CMPB L0053 ; map ADC cnts ; LCC68: BHI LCC6F ; bra if baro > map LDX #$FFFF ; BRA LCC82 ; ; ; create map & baro terms ; LCC6F: CLRA ; LSRB ; baro /= 2 ADDB #14 ; ; PSHB ; move baro into X PSHA ; PULX ; ; LDAB L0053 ; map ADC cnts BRCLR L0038;$C0,LCC7E ; map hi, lo malf bits LDAB L005A ; filt map ADC cnts ; LCC7E: LSRB ; map /= 2 ADDB #14 ; ; ; X = (MAP / BARO ) * 65535 ; ; The higher the map, the higher the result ; FDIV ; X = (AB / X) * 65535 ; LCC82: PSHX ; move result into A with a / 256 PULA ; (MAP / BARO ) * 256 INS ; cleanup stk ; ---------------------------------------------- ; ; Table vs MAP / BARO ratio ; ; 0x8A43: 231 231 234 236 239 239 241 245 248 250 253 255 255 255 255 255 255 ; ; ---------------------------------------------- CMPA #207 ; range lookup index BLS LCC8B ; LDAA #207 ; ; LCC8B: SUBA #80 ; lower limit BCC LCC90 ; CLRA ; ; LCC90: ASLA ; A *= 2 LDX #L8A43 ; table address JSR LF4A1 ; 2d lookup, no LCnt PSHA ; save result(1) ; ---------------------------------------------- ; ; Table vs IAT/CTS term ; ; 0x8A54: 172 165 156 149 142 137 132 127 122 118 114 110 106 104 100 97 95 ; ; ---------------------------------------------- LDAA L019F ; slow filtered IAT/CTS term, øC = (N * 0.75) - 40 LDX #L86B5 ; == 4Ch, 0100 1100 BRCLR 0,X;$20,LCCA4 ; b5 clr, do bra LDAA L00C6 ; IAT ; LCCA4: LDX #L8A54 ; table address JSR LF4A1 ; 2d lookup, no LCnt PSHA ; save result(2) ; ---------------------------------------------- ; ; Table vs BARO ; ; 0x8A65: 162 186 211 240 255 ; ; ---------------------------------------------- JSR LF13C ; get scaled baro LDAB #80 ; lower limit LDX #L8A65 ; JSR LF49D ; do 2d lookup, w/SBA scaling PSHA ; save result(3) ; ---------------------------------------------- ; ; Airflow (GMS/SEC*16) vs. IAC position ; ; 0x8A6A: 0 5 11 18 24 30 37 43 50 54 62 69 75 102 156 196 255 ; ; ---------------------------------------------- LDAA L0014 ; current IAC position CMPA #48 ; BCC LCCC1 ; bra if IAC >= 48 steps ; ASLA ; ASLA ; BRA LCCC7 ; ; LCCC1: ADDA #144 ; BCC LCCC7 ; LDAA #255 ; ; LCCC7: LDX #L8A6A ; JSR LF4A1 ; 2d lookup, no LCnt PSHA ; save result(4) ; ---------------------------------------------- ; ; IAC steps vs. baro compensation ; ; 0x8E16 12 9 6 3 0 ; ; ---------------------------------------------- JSR LF13C ; get scaled baro LDX #L8E16 ; JSR LF49D ; do 2d lookup, w/SBA scaling ; ADDA L0016 ; minimum IAC position BCC LCCDD ; LDAA #255 ; ; ; ---------------------------------------------- ; ---------------------------------------------- LCCDD: CMPA #63 ; BLS LCCE3 ; LDAA #63 ; ; LCCE3: ASLA ; ASLA ; LDX #L8A7B ; JSR LF4A1 ; 2d lookup, no LCnt PULB ; get result(4) ABA ; BCC LCCF1 ; LDAA #255 ; ; LCCF1: CLRB ; LSRD ; AB /= 16 LSRD ; LSRD ; LSRD ; ; PSHB ; save on stack(5), IAC grams/sec PSHA ; Save Iac grams/sec ; ---------------------------------------------- ; ; table TPS% vs. scaled/limited rpm ; ; 0x8A3A: 35 52 68 85 101 118 142 185 215 ; ---------------------------------------------- LDAA L00C4 ; rpm (dual range to 4800) LSRA ; rpm /= 2 ADCA #0 ; LDX #L8A3A ; JSR LF4A1 ; 2d lookup, no LCnt ; LDAB L006D ; tps% MUL ; ; TSX ; X addy ADDD 0,X ; result(5) BCC LCD0E ; LDD #65535 ; ; LCD0E: STD 0,X ; working location TSY ; Y addy ; LDAA 2,Y ; result(3) JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256 STD 0,X ; working location ; LDAA 3,Y ; result(2) JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256 STD 0,X ; working location ; LDAA 4,Y ; result(1) JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256 ; INS ; clean up stack INS ; INS ; INS ; INS ; LSLD ; AB *= 2 BCC LCD33 ; LDD #65535 ; ; LCD33: STD L1E1A ; optional ram, idle airflow RTS ; and back with result in AB also
Re: 7730 w/$88 mask - rich open loop idle
First off, THANKS for taking the time to post this info. It has been VERY helpful. (AND FAST TOO!!) Okay, I have added the tables to my tunerpro XDF files and using the addresses you gave, the data lines up exaxtly(using an AZTY1407 .bin) I guessed IAC position from 0-120 scaling 7.5(8)steps down until the airflow was zero and the IAC was closed(Also 0).
I was unable to calculate the baro compensation factors(IAC STEPS vs Baro Comp) nor could I figure out the TPS% Vs. scaled limited rpm Table, the IAT/CTS table parameters(I found the row units in deg. cel in a Moates hack/-40 to 152 @12 step inc.) or the MAP/Baro ratio .
I truly believe you have pointed me to the areas in my bin that need tweeking that have been locked...UNTIL NOW!!!!
I was unable to calculate the baro compensation factors(IAC STEPS vs Baro Comp) nor could I figure out the TPS% Vs. scaled limited rpm Table, the IAT/CTS table parameters(I found the row units in deg. cel in a Moates hack/-40 to 152 @12 step inc.) or the MAP/Baro ratio .
I truly believe you have pointed me to the areas in my bin that need tweeking that have been locked...UNTIL NOW!!!!
Re: 7730 w/$88 mask - rich open loop idle
I tried the "idle based on airflow" switch added to Tunerpro but the vehicle would not idle and would die if I took my foot off the accelerator. I am going to look at modifying the airflow per IAC count table. Maybe a reduction in the airflow estimate will reduce the fuel added @ idle.
Thread
Thread Starter
Forum
Replies
Last Post





