*********************** * "RECORD COPY" * * Schedule No. 7-6-2 * * Retain Until 12-99 * *********************** PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL POWERTRAIN ELECTRONIC CONTROL STRATEGY BOOK | STRATEGY LEVEL "LHBH1" FOR USE WITH 2ND GENERATION EEC-IV MODULE: EFI-SD20 THE PROCEDURE FOR OBTAINING COPIES OF THIS BOOK OR ANY OTHER AVAILABLE "LH" DOCUMENTATION IS EXPLAINED ON THE NEXT PAGE. LARRY SIERSMA PHONE: (313)390-2159 STRATEGY PLANNING & PROCESS DESIGN SECTION CONTROL SYSTEMS DEPT POWERTRAIN ELECTRONICS DEVELOPMENT - PTE | SOFTWARE RELEASE DATE: MARCH 24, 1993 | STRATEGY BOOK RELEASE DATE: MARCH 25, 1993 OBTAINING DOCUMENTATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL "LH" STRATEGY DOCUMENTATION All current strategy documentation is stored on the VAX computer cluster. Documentation can be obtained by logging into a VAX computer (I.E. SYS2, SYS3, SYS4, ETC.) and issuing one or more of the following VAX/DCL commands. Generally, two types of documentation are available: 1. UPDATE PACKAGES - Change bars at the left margin are used to indicate where changes in text have occurred since the previous level. Some of these changes may simply be enhancements or corrections to the text of the previous level and may be unrelated to the strategy level change. This file can be used as a quick reference to show the changes which have been made for this release. The file name format is LH***UP.MEM, where *** is the desired new strategy level. 2. COMPLETE BOOKS - The file name format is LH***.MEM, where *** is the desired strategy level. Changes in text which have occurred since the previous level book will be indicated with change bars. The INDEX contains an entry, "CHANGED PAGES," which lists all pages containing changes. The following VAX/DCL commands may be helpful in working with Strategy Book documentation: TO DETERMINE IF A SPECIFIC STRATEGY BOOK IS AVAILABLE, TYPE: DIR STRATEGY:LH***.MEM DIR STRATEGY:LH***UP.MEM TO OBTAIN A LINE PRINTER COPY OF A GIVEN DOCUMENT, TYPE: PRINT/NOFEED STRATEGY:LH***.MEM where *** = the desired strategy level TO OBTAIN A XEROX COPY OF A GIVEN DOCUMENT, TYPE: XEROX STRATEGY:LH***.MEM/DEST=EEE/USERNAME=name/COPIES=no/PMODE=P where: *** = the desired strategy level name = your user name no = desired number of copies (i.e. 1) TO DETERMINE TARGETING OF EMR'S FOR FUTURE RELEASES, TYPE: EDTS AT THE EDTS MAIN MENU, SELECT "Standard Reports Menu" (number 6) THEN, SELECT "EMR's Within EMR Group" (number 3) TO DETERMINE THE STATUS OF STRATEGY BOOK DOCUMENTATION, TYPE: @STRATEGY:BOOKSTATUS OBTAINING DOCUMENTATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LAST PAGES SUBJECT REVISION | 1-1 to 1-28 STRATEGY EVOLUTION LHBH1 2-1 to 2-18 SYMBOLOGY LHBD0 3-1 to 3-6 EEC OVERVIEW LHAS0 4-1 to 4-6 CRANK/UNDERSPEED/RUN MODE SELECTION LHJ0 5-1 to 5-4 THROTTLE MODE SELECTION LHE0 6-1 to 6-104 FUEL STRATEGY 6-2 to 6-4 OVERVIEW LHAQ0 6-5 to 6-8 ACCELERATION ENRICHMENT LHBD0 6-9 to 6-11 WARM EGO LOGIC LHAQ0 6-12 to 6-13 LAMMUL RESET LOGIC LHAH0 6-14 to 6-16 OPEN LOOP FLAG DETERMINATION LHBC0 6-17 to 6-18 CALCULATION OF LAMAVE LHAT0 6-19 to 6-30 OPEN LOOP LAMBSE CALCULATION LHBH0 6-31 to 6-39 CLOSED LOOP LAMBSE CALCULATION LHBD0 6-40 DAC REGISTER CALCULATION LHAQ0 6-41 to 6-57 ADAPTIVE FUEL LOGIC LHBE0 6-58 to 6-59 KAM ADAPTIVE FUEL LOGIC LHAQ0 6-60 to 6-66 TRANSIENT FUEL COMPENSATION LHAQ0 6-67 to 6-68 HOT INJECTOR COMPENSATION LHAQ0 6-69 to 6-70 INJECTOR DELAY LOGIC LHAQ0 6-71 to 6-74 IDLE FUEL MODULATION LHAV0 6-75 to 6-80 DECEL FUEL SHUT-OFF LOGIC LHBE0 6-81 to 6-89 BACKGROUND PULSEWIDTH DETERMINATION LHBH0 6-90 FUEL PUMP CONTROL LOGIC LHAS0 6-91 PPCTR CONTROL LHAQ0 6-92 to 6-101 FUEL SERVICE ROUTINE LHBD0 6-102 to 6-106 INJECTOR TIMING ROUTINE LHAQ0 7-1 to 7-68 IGNITION TIMING STRATEGY 7-2 to 7-24 BASE SPARK LHBH0 7-25 to 7-31 DWLBSE/DWLCOR CALCULATION LHJ0 7-32 to 7-35 DWELL_CALCULATION LHJ0 7-36 to 7-39 MKAY/SIGKAY CALCULATION LHL0 7-40 to 7-42 TRANSIENT SPARK COMPENSATION LHKO 7-43 to 7-44 PIP_DATA LHK0 7-45 to 7-50 SPOUT_KNOCK ROUTINE LHJ0 7-51 to 7-52 VIP, EOS_IDM LHJ0 7-53 to 7-68 INDIVIDUAL CYLINDER KNOCK LHL0 8-1 to 8-20 EGR STRATEGY 8-2 to 8-6 EGR SELECT LOGIC LHBE0 8-7 to 8-16 SONIC EGR LHBE0 8-17 to 8-20 EVR CONTROL ALGORITHM LHF0 TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 9-1 to 9-52 IDLE SPEED CONTROL 9-2 to 9-10 GENERIC IDLE SPEED CONTROL LHAX0 9-11 to 9-23 DESIRED RPM CALCULATION LHBH0 9-24 to 9-26 RPM ERROR CALCULATION LHBH0 9-27 to 9-32 DASPOT CALCULATIONS LHAX0 9-33 to 9-39 MODE SELECT LHAP0 9-40 to 9-43 KAM UPDATE LHAX0 9-44 to 9-46 DUTY CYCLE CALCULATION LHAU0 9-47 to 9-52 IPSIBR CALCULATION LHBG0 10-1 to 10-4 GOVERNOR MAP SIGNAL STRATEGY LHAX0 11-1 to 11-8 CANISTER PURGE STRATEGY LHBA0 12-1 to 12-10 THERMACTOR AIR STRATEGY LHBG0 13-1 to 13-38 DATA COMMUNICATIONS LINK 13-2 to 13-6 OVERVIEW LHI0 13-7 to 13-29 DIAGNOSIS MODE LHAZ0 13-30 to 13-34 PID TABLES AND BIMAP DEFINITIONS LHAZ0 13-35 to 13-38 UART MESSAGE CHECK LHBH0 14-1 to 14-8 DATA OUTPUT LINK 14-2 to 14-4 DATA OUTPUT LINK LHAX0 14-5 to 14-8 PULSE CALCULATION LHBD0 15-1 to 15-6 ALTERNATIVE CALIBRATION 15-2 to 15-3 CALIBRATION INITIALIZE LOGIC LHBH0 15-4 to 15-6 CALIBRATION CLEAR LOGIC LHBH0 16-1 to 16-44 SHIFT CONTROL 16-2 to 16-4 E4OD TRANSMISSION STRATEGY OVERVIEW LHAP0 16-5 to 16-8 PRNDL BASED DESIRED GEAR DETERMINATION LHL0 16-9 to 16-14 GR_DS, PRNDL = 3 OR 4 LOGIC LHAV0 16-15 to 16-18 DELAY/VERIFY SHIFT LOGIC LHD0 16-19 to 16-23 PRNDL BASED COMMANDED GEAR DETERMINATION LHBB0 16-24 to 16-25 GR_CM, PRNDL = 1 LOGIC LHAP0 16-26 to 16-27 GR_CM, PRNDL = 2 LOGIC LHAP0 16-28 GR_CM, PRNDL = 3 or 4, DOWNSHIFT LOGIC LHAP0 16-29 to 16-32 LOAD SHIFT IN PROGRESS TIMER LHL0 16-33 to 16-36 DETERMINE SHIFT SOLENOID STATES LHL0 16-37 to 16-44 SHIFT VALIDATION LOGIC LHBA0 17-1 to 17-48 ELECTRONIC PRESSURE CONTROL 17-2 to 17-15 ELECTRONIC PRESSURE CONTROL GUIDE LHBG0 17-16 START-UP TV LOGIC LHAS0 17-17 to 17-18 COAST BOOST LOGIC LHM0 17-19 to 17-25 ENGAGEMENT/STALL TV LOGIC LHBG0 17-26 to 17-32 NORMAL TV CALCULATION LHBB0 17-33 to 17-34 TQ_IALPHA CALCULATION LHG0 17-35 to 17-39 DYNAMIC TV CALCULATION LHAX0 17-40 to 17-43 OFMFLG LOGIC LHBB0 17-44 to 17-45 TV VFS OUTPUT ROUTINE LHA0 17-46 to 17-48 TRANSMISSION OVERTEMPERATURE TEST LHBB0 TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 18-1 to 18-48 CONVERTER CLUTCH SOLENOID CONTROL STRATEGY 18-2 to 18-5 CONVERTER CLUTCH CONTROL LHBB0 18-6 to 18-14 UNCONDITIONAL UNLOCK LOGIC LHL0 18-15 to 18-16 SHIFT UNLOCK LOGIC LHH0 18-17 INITIALIZE DOWNSHIFT LHH0 18-18 to 18-19 DOWNSHIFT CONVERTER CLUTCH LHAP0 18-20 to 18-24 INITIALIZE UPSHIFT LHAZ0 18-25 to 18-28 UPSHIFT CONVERTER CLUTCH LHAZ0 18-29 to 18-33 SCHEDULED LOCK/UNLOCK LOGIC LHAS0 18-34 to 18-36 WOT LOCK-UP LOGIC LHAS0 18-37 to 18-38 HIGH SPEED UPSHIFT LHI0 18-39 to 18-41 CONVERTER CLUTCH VALIDATION LHBE0 18-42 to 18-45 COAST CLUTCH CONTROL LHBE0 18-46 to 18-48 FAILURE MODE MANAGEMENT LOCK-UP LHBB0 19-1 to 19-26 TRANSMISSION INPUT CONVERSIONS 19-2 to 19-6 TRANSMISSION CONTROL INDICATOR LIGHT LHBB0 19-7 TCIL OUTPUT LHBB0 19-8 to 19-11 TORQUE CALCULATIONS LHAS0 19-12 to 19-15 E40D TRANSMISSION CALCULATIONS LHAS0 19-16 VSBART_FM CALCULATION LHAY0 19-17 ETV OVERCURRENT MONITOR VOLTAGE LHAS0 19-18 to 19-19 TRANSMISSION CONTROL SWITCH LHBB0 19-20 to 19-21 4 X 4 LOW SWITCH LHAS0 19-22 to 19-26 RT_NOVS_KAM CALCULATION LHBG0 20-1 to 20-72 SYSTEM EQUATIONS 20-2 to 20-26 SYSTEM EQUATIONS LHAS0 20-27 to 20-28 VS_RATEPH CALCULATIONS LHAU0 20-29 to 20-44 MANIFOLD ABSOLUTE PRESSURE LHAZ0 20-45 to 20-48 ENGINE SPEED CALCULATION LHH0 20-49 to 20-51 SPEED DENSITY AIR MASS CALCULATION LHAZ0 20-52 to 20-55 ROLLING AVERAGE ROUTINE LHAS0 20-56 to 20-57 TCSTRT, ACSTRT, INIT_TOT ROUTINE LHF0 20-58 PIP NOISE FILTERING LHA0 20-59 to 20-60 POWER MODE LHA0 20-61 to 20-62 COLD TEMPERATURE TV SOLENOID OPERATION LHAS0 20-63 to 20-64 DYNAMIC TV DUE TO COLD TRANSMISSION LHC0 20-65 to 20-66 COLD SHIFT MULTIPLIER LHAS0 20-67 to 20-72 MLPS CONVERSION LHBB0 21-1 to 21-22 TIMERS LHBB0 22-1 to 22-24 FAILURE MODE MANAGEMENT 22-2 OVERVIEW LHAQ0 22-3 to 22-4 FAILURE RECOGNITION LHAQ0 22-5 to 22-7 ACT SENSOR UPDATE LHAQ0 22-8 to 22-11 ADAPTIVE FUEL TABLE FMEM LHAS0 22-12 to 22-15 ECT SENSOR UPDATE LHAQ0 22-16 to 22-17 EVP SENSOR FMEM LHAQ0 22-18 to 22-19 TOT SENSOR FMEM LHAQ0 22-20 to 22-24 TP SENSOR FMEM LHAQ0 TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 23-1 to 23-10 INFERRED BAROMETRIC PRESSURE STRATEGY LHA0 24-1 to 24-6 KEEP ALIVE MEMORY LHAS0 25-1 to 25-4 EEC-IV SELF TEST OVERVIEW 25-2 EEC-IV SELF TEST OVERVIEW LHBB0 25-3 to 25-4 EEC-IV SELF TEST BLOCK DIAGRAMS LHBB0 26-1 to 26-8 SELF TEST ENTRY/EXIT LOGIC LHBB0 27-1 to 27-34 ENGINE OFF SELF TEST 27-2 to 27-4 ENGINE OFF SELF TEST SEQUENCE LHBB0 27-5 to 27-6 KAM/RAM TEST LHBB0 27-7 READ-ONLY MEMORY TEST (ROM) LHBB0 27-8 to 27-9 ENGINE COOLANT TEMPERATURE SENSOR LHBB0 27-10 to 27-12 MANIFOLD ABSOLUTE PRESSURE SENSOR TEST LHBB0 27-13 THROTTLE POSITION SENSOR LHBB0 27-14 AIR CHARGE TEMPERATURE SENSOR TEST LHBB0 27-15 to 27-16 TRANSMISSION OIL TEMPERATURE SENSOR TEST LHBB0 27-17 EXHAUST GAS RE-CIRCULATION SENSOR TEST LHBB0 27-18 A/C SWITCH TEST LHBB0 27-19 to 27-20 MANUAL LEVER POSITION SENSOR INPUT TEST LHBB0 27-21 4X4L SWITCH INPUT TEST LHBB0 27-22 POWER STEERING PRESSURE SWITCH TEST LHBB0 27-23 IVPWR INPUT TEST LHBB0 27-24 OUTPUT CIRCUIT CHECK LHBB0 27-25 to 27-26 OUTPUT CIRCUIT CHECK TEST STRUCTURE LHBB0 27-27 to 27-30 FUEL PUMP MONITOR TEST LHBB0 27-31 to 27-32 ELECTRONIC PRESSURE CONTROL SOLENOID TEST LHBB0 27-33 to 27-34 OUTPUT TEST MODE LHBB0 28-1 to 28-46 ENGINE RUNNING SEQUENCE 28-2 to 28-3 ENGINE RUNNING TEST STRUCTURE LHBB0 28-4 EGOBAR FILTER AND STATE FLAGS LHBB0 28-5 DELAY LOGIC CLARIFICATION LHBB0 28-6 to 28-10 ENGINE RUNNING INITIALIZATION LHBB0 28-11 to 28-13 GENERIC IDLE SPEED CONTROL LHBB0 28-14 HIGH RPM ISC TEST LHBB0 28-15 ECT SENSOR TEST LHBB0 28-16 MAP SENSOR TEST LHBB0 28-17 THROTTLE POSITION SENSOR LHBB0 28-18 AIR CHARGE TEMPERATURE SENSOR TEST LHBB0 28-19 TRANSMISSION OIL TEMPERATURE SENSOR LHBB0 28-20 to 28-21 BRAKE ON/OFF TEST LHBB0 28-22 to 28-23 POWER STEERING PRESSURE SWITCH TEST LHBB0 28-24 to 28-25 TRANSMISSION CONTROL SWITCH TEST LHBB0 28-26 to 28-28 EGO SWITCHING TEST LHBG0 28-29 to 28-30 THERMACTOR AIR TEST LHBB0 28-31 to 28-32 SPARK CONTROL TEST LHBB0 28-33 to 28-34 EXHAUST GAS RE-CIRCULATION SYSTEM TEST LHBB0 28-35 LOW RPM ISC TEST LHBB0 28-36 to 28-40 GOOSE TEST LHBB0 28-41 to 28-46 THROTTLE PLATE ADJUSTMENT MODE LHBB0 TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 29-1 to 29-76 CONTINUOUS TEST STRUCTURE 29-2 FILTERING LOGIC LHBB0 29-3 to 29-4 FAULT THRESHOLD/UPCOUNT VALUE SELECTION LHBB0 29-5 KAM CODE WARM_UP COUNTER/ERASE LOGIC LHBB0 29-6 to 29-11 COOLING SYSTEM TEST LHBB0 29-12 ECT OPEN/SHORT TESTS LHBB0 29-13 ACT SENSOR TESTS LHBB0 29-14 TRANSMISSION OIL TEMPERATURE SENSOR LHBB0 29-15 MANIFOLD ABSOLUTE PRESSURE SENSOR LHBB0 29-16 to 29-20 MAP SENSOR VACUUM CIRCUIT TEST LHBB0 29-21 to 29-29 SONIC EGR LHBE0 29-30 to 29-31 EGR SYSTEM SELECT LHBE0 29-32 to 29-34 IGNITION DIAGNOSTIC MONITOR LHBB0 29-35 CONVERTER CLUTCH VALIDITY TEST LHBB0 29-36 ELECTRONIC PRESSURE CONTROL SOLENOID LHBB0 29-37 THROTTLE POSITION SENSOR TEST LHBB0 29-38 to 29-40 VEHICLE SPEED SENSOR TEST LHBF0 29-41 to 29-45 BRAKE ON/OFF CIRCUIT TEST LHBB0 29-46 to 29-50 ADAPTIVE TABLE CLIP TEST LHBB0 29-51 to 29-66 EGO SWITCHING TEST LHBH0 29-67 to 29-70 FUEL PUMP CIRCUIT TEST LHBB0 29-71 to 29-76 MALFUNCTION INDICATOR LIGHT LHBB0 30-1 to 30-4 ERROR CODE DESCRIPTION LHBB0 31-1 to 31-2 ROM IDENTIFICATION CODE LHA0 | INDEX LHBH1 TABLE OF CONTENTS LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL CHAPTER 1 STRATEGY EVOLUTION 1-1 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL STRATEGY EVOLUTION ======================================================================== RELEASE BASE ERD/ EMR FILE FILE URD NO. NO. DESCRIPTION OF CHANGE ======================================================================== | LHBH1 LHBH0 | (03/24/93 | 10169 94-1237 COMMUNICATION - DCL - Running change | needed to correct lose of ISCDTY. | 10394 94-1247 COMMUNICATION - DCL - Update code to | properly set bits in DCL BITMAP_1 | register. ======================================================================== LHBH0 LHBG0 (09/28/92) 8143 93-769 IDLE SPEED - IPSIBR CALC - IPSIBR not updating during RUNNING SELF-TEST. 8384 93-77 EGR - OTHER - Bypass EGR enabled check during wiggle for 327/337. 8629 93-775A EGR - EGR FMEM - EMR # 93-775, was improperly implemented in LHBGA and LHBH0. 7682 94-745 SPARK - OTHER - Add anti plug fouling strategy. 8458 94-820C OBD-I CONT TEST EGO SWITCHING TEST - update LH ego test. 8458 94-820D OBD-I CONT TEST EGO SWITCHING TEST - lazy/buzz logic not in code. 8458 94-820E OBD-I CONT TEST EGO SWITCHING TEST - associate parameter with LH. 8458 94-820F OBD-I CONT TEST EGO SWITCHING TEST - change V_EGO_BYPS := 0 to ... := 1 8392 94-858 GENERAL - OTHER - ALT_CAL_FLG is set during PWR UP aftr battery discon- nect. 8447 94-873 SPARK - OTHER - Documentation clean up. 8559 94-92 SPARK - OTHER - Corrections to anti plug fouling strategy. 7564 95-122 FUEL - CRANK - Allow greater flexi- bility with de-choke and APT. 7564 95-122A FUEL - CRANK - Strat. err: TP_REL>TP_DECHOKE should be TP_REL<=TP_DECHOKE. ======================================================================== LHAG0 LHAF0 (07/15/92) 2185 91-303 SELF-TEST - KOER - Greater flexibility for RUNNING EGO SENSOR TEST. 7781 93-761 FUEL - ADAPTIVE - Function enhancement. 7005 94-588B TRANSMISSION - SELF TEST/FMEM - 4X4 low input error detection. 7005 94-588C TRANSMISSION - SELF TEST/FMEM - 4X4 low input error detection. 7082 94-603 TRANSMISSION - SHIFT CONTROL - Improve engagm't strategy by using TOT and NEBART. 7231 94-641 IDLE SPEED - OTHER - Induction of the A/C pressure switch in 94-E&F CALIB. 1-2 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 7231 94-641A IDLE SPEED - OTHER - Induction of the A/C pressure switch in 94-E&F CALIB. 7741 94-718 TRANSMISSION - EPC - EPC spikes during engagements. 7184 95-102 GENERAL - OTHER - RPM calc. does not take advantage of full 0.25 accuracy. 7783 95-141 THERMACTOR - UP/DOWN STREAM - Allow capability to dump thermactor during closed loop fuel. ======================================================================== LHBF0 LHBE0 (06/04/92) 7202 93-740 TRANSMISSION - SELF TEST/FMEM - Replace N with nebart in vehicle speed sensor test. 7519 93-746 EGR - EGR CONTROL - Correct software error in EGR RATE calculation. 7745 93-757 EGR - EGR CONTROL - Software: omitted FN240(WOTTMR) from EGRATE calculation. ======================================================================== LHBE0 LHBD0 (05/29/92) 7078 93-710A EGR - EGR CONTROL - Change EGR logic to enable EGR for periods at WOT. 7078 93-710B EGR - EGR CONTROL - Change EGR at WOT logic to provide MAP hysteresis. 7405 93-734 THERMACTOR - UP/DOWN STREAM - Modify Thermactor Dump as a f'n of RPM, avoid backfires. 7405 93-734A THERMACTOR - UP/DOWN STREAM - Correct error in flop flop. Required change. 7705 93-734B THERMACTOR - UP/DOWN STREAM - Revise thermactor dump at low TP_REL to allow air at idle. 7408 93-737 FUEL - ADAPTIVE - Function enhancement that will allow more adaptive learning. 6049 94-280 SELF-TEST - KOER - Correct spark control test in koer - software only. 1-3 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 7523 94-477B FUEL - ADAPTIVE - Do not use reference cell values for update rates. 7025 94-551C OBD-I CONT TEST EGR - Lock out 327, 337 til EGR enabled. Convert to ladder diagram. 7025 94-551H EGR - EGR ENABLE - Correct strategy error in EGR enable logic. 7025 94-551I OBD-I CONT TEST EGR - Match strategy to existing software. Sonic EGR test. 7005 94-588 TRANSMISSION - SELF TEST/FMEM - 4X4 low input error detection. 7385 94-647 OBD-I ENG OFF - OUTPUT TEST MODE - Software error in output test mode self-test. 7637 94-690 FMEM - FAILURE RECOGNITION - Many failures of code 628 have been reported. 7667 94-702 FUEL - DECEL FUEL SHUT-OFF - Software error found in fuel pulsewidth calculation. ======================================================================== LHBD0 LHBC0 (05/01/92) 6727 92-562A TRANSMISSION - SELF TEST/FMEM - Modify FMEM action for Transmission Overtemperature - LH,AC. 5089 93-150G SELF-TEST - CONTINUOUS - Create variant strategy for 5.8l/o to alter ego test. 7035 93-708 GENERAL - OTHER - Avoid future software/strategy errors. 6623 94-431 COMMUNICATION - DOL - Addition of distance-to-empty feature (DOL). 6834 94-471 GENERAL - OTHER - Update SYMBOLOGY chapter to current symbology usage. 6862 94-477 FUEL - ADAPTIVE - Four adaptive improvements. 7302 94-477A FUEL - ADAPTIVE - Random number algorithm will not function properly. 7241 94-589 FUEL - OTHER - FUEL_SUM should be in ticks for LL and LH. ====================================================================== LHBC0 LHBB1 (01/23/92) 6100 93-657 FUEL - ADAPTIVE - Include logic to limit the time to adapt in WOT. 6100 93-657A FUEL - ADAPTIVE - Correct parameter XMAPPA base value in Parameter Dictionary. ====================================================================== LHBB1 LHBB0 (11/11/91) 6076 93-616 TRANSMISSION - MLPS - IPDL getting intermittant values outside correct range. 6098 93-621 TRANSMISSION - EPC - Fix TV from going to 127.5 every background loop. ====================================================================== 1-4 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LHBBO LHBAO (10/02/91) 4724 93-333 TRANSMISSION - Revise coverter clutch validation error code setting logic. 5409 93-365B FUEL - DFSO - Thermactor and DFSO need different d_tp_dt terms. 5056 93-396 TRANSMISSION - FMEM - Rename OCIL, ASML, and ASMIL to TCIL. 5056 93-396H TRANSMISSION - FMEM - Correct Parameter Transactions for LH. 5264 93-432 TRANSMISSION - NORM TV CALC - SCSLPXXX, and SCSLPX cal constants overflow a byte. 5340 93-454 TRANSMISSION - DET SHFT SOL - Main Control Rev'ns require calibratible sol. states in Neu. 5359 93-461 TRANSMISSION - FMEM - Request to Improve FMEM Action for E4OD. 5359 93-461A TRANSMISSION - FMEM - Add C657_KAM_BIT to AC, LH, and AG. 5359 93-461D TRANSMISSION - FMEM - Define TOT_OTEMP for LH,AC and AG strategies. 5437 93-500 SELF-TEST - KOEO - MLPS test improvement. 5437 93-500D SELF-TEST - KOEO - New MLPS test improvement. 5563 93-534 FUEL - CLOSED LOOP - allow switching into/out-of closed loop for f450 superduty. 5713 93-546 TRANSMISSION - NORM TV CALC - Calculate converter clutch torque capacity. 5713 93-546A TRANSMISSION - NORM TV CALC - Calculate converter clutch torque capacity. 5707 93-564 FMEM - UNKNOWN - Driveability in FMEM. 5714 95-037 TRANSMISSION - OTHER - Coast Clutch Control Software Error. 1-5 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 5714 95-037A TRANSMISSION - OTHER - Coast Clutch Control Software Error. ====================================================================== LHBA0 LHAZ1 (06/10/91) 4516 91-589 OTHER - N/A - Software documentation needs 1991 copyright date. 4650 93-327 TRANSMISSION - Revise shift validation logic error codes, improve FMEM. 5271 93-327A TRANSMISSION - Delete OCIL_HP from LH strategy. 4834 93-334 OTHER - Revise purge strategy for 7.5L. 4579 93-365 FUEL - DFSO - Add d/dt(TP) to DFSO and THERMACTOR to control backfire. 4579 93-365A FUEL - DFSO - Match timer resolution to strategy. 5355 93-453 MISCELLANEOUS - INFERRED BP - Incorrect read done for BPPTWTLO for rolav. ====================================================================== LHAZ1 LHAZ0 (03/20/91) 4922 92-507 EGR - EVR CONTROL - EGRACT and EGRERR were incorrectly calculated. ======================================================================== LHAZ0 LHAY0 (03/04/91) 4204 92-324L MISCELLANEOUS - Provide a separate LAMMAX for PURGE logic; documentation error. 3541 92-325 SELF TEST - CONTINUOUS - TRLOAD is byte value, but loaded as word. 3123 92-368 SYSTEM COMM - DCL - Verify BITMAP_x definition and add new PID codes. 3123 92-368A SYSTEM COMM - DCL - Replace PID code 2E (adder of LTMTB1) with IOCC. 3123 92-368D SYSTEM COMM - DCL - Revisions to PID tables and BITMAPS. 4494 92-469 SELF TEST - CONTINUOUS - False SELF TEST code 173 (EGO1 sensor fault-rich). 4513 92-477 TRANSMISSION - Lack of power complaint after light throttle 1-2 upshifts. 4307 93-055A FUEL - Provide a reset calibration switch for CRKPIP_CTR. 3494 93-074 MISCELLANEOUS - Ensure validity of queue subroutine pointers. 3774 93-150 SELF TEST - Byte thrift. 4527 93-150C SELF TEST - CONTINUOUS - PURGING and PRGFLG not representative of state of purge. 3719 93-191 SELF TEST - Allow KOEO self test in neutral instead of PARK, E4OD. 3876 93-196 FUEL - OPEN LOOP - 7.0L thermactor switch open loop error. 2830 93-221 TRANSMISSION - Some of the governor parameters are incorrectly defined. 4533 93-273 SELF TEST - KOEO - Software in KOEO canister purge OCC test. 1-6 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 4554 93-283 TRANSMISSION - Filter MAP_WORD for transmission TQ_NET calculation. 4554 93-283A TRANSMISSION - Clarify MAP_WORD filtering technique for transmission use. 4612 93-304 MISCELLANEOUS - PURGE - Improve base calibration for PURG_ADP_SF. 4581 93-320 FUEL - PURGE - Remove the 2nd canister purge output. ======================================================================== LHAY0 LHAXA (10/29/90) 1758 91-158B TRANSMISSION - ENGAG/STALL TV; START_UP TV; TV PRES GUIDE - Correct errors in EMR 91-158. 4133 92-139C SELF TEST - KOEO - Implementation of EMR's 92-139 and 92-139B was not correct. 4107 92-324K SELF TEST - CONTINUOUS - Revise Canister Purge Filter. 3364 92-356 MISCELLANEOUS - INPUT CNVRT - Calculate VSBART_FM -based on NIBART, NOBART or NEBART. 3938 92-391 TRANSMISSION - EPC - Improve VFS temperature compensation. 3936 92-431 ISC - IPSIBR CALC - Remove IPSIBR reset to 0 on closed to part throttle change. 4212 92-442 AIR MEASUREMENT - MAP SAMPLE - Fuel drops out during high speed wot to pt tip outs. 3321 93-055 FUEL - Fix CRKPIPCTR logic so that a partial reset is possible. 3343 93-116B TRANSMISSION - FMEM - Limit VS with VSS failure. 4080 94-010H TRANSMISSION - GRCMKIV appears in EDTS for LH, but not code/strategy book. ======================================================================= LHAXA LHAX0 (09/13/90) 3995 91-409Y SELF TEST - CONTINUOUS - Protect EGO test from vacuum controlled purge overload. ======================================================================= LHAX0 LHAW0 (09/07/90) 3752 91-409W SELF TEST - CONTINUOUS - Prevent rich EGO failure due to purging. 0140 92-139 MISCELLANEOUS - Protect background from infinite loop with watchdog. 3346 92-139B MISCELLANEOUS - Change parameter dictionary for RAM/ROM byte thrift. 3146 92-200 FUEL - INJECTOR OUTPUT - Collision with 3177 asynchronous AE may cause improper fuel pulse. 3146 92-200A FUEL - INJECTOR OUTPUT - Collision with 3177 asynchronous AE may cause improper fuel pulse. 3597 92-313 TRANSMISSION - Allow application of coast clutch for PDL = 4, GR_CM < 4/ 1-7 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 3820 92-324B SELF TEST - MIL - Lack of HEGO switching codes 173 and 177 are being set. 3863 92-324D OTHER - Purge strategy resolution improvement. 3863 92-324F OTHER - Add EDTS parameter transaction for PRG_INIT_FLG. 4004 92-324G MISCELLANEOUS - Purge decrement clipping normal purge. 4004 92-324H MISCELLANEOUS - PURGE - Limit PRG_DEC 0.99 to make code shorter. 4028 92-324I FUEL - MIL light turns on/off/on during rich purge condition. 3728 92-366 TRANSMISSION - CSDYN cold TV modifier problem. 3887 92-408 ISC - ISCKAM UPDATE - Documentation commonality needed for ISCKAM UPDATE logic. 2858 93-060 MISCELLANEOUS - Match engine parameters to MY 91-1/2 7.0L LL strategy. 2858 93-060A MISCELLANEOUS - Match engine parameters to MY 91-1/2 7.0L LL strategy. 3334 93-060B MISCELLANEOUS - Want to transfer engine calibration from LL calibration. 3769 93-115 ISC - DASHPOT - Minimum DASPOT clip logic was not governed with respect to N/D. ======================================================================= LHAW0 LHAV0 (05/24/90) 2096 91-229 SELF TEST - Unused IGNCNT should be removed from dictionary and code. 3446 91-568 MISCELLANEOUS - Incorrect description of parameter V_EGO_ENA in DOC file. 3318 92-241 TRANSMISSION - OFMFMG - Force TV_COUNTS to zero when ETV_TEST = 1 (FN622 > 15). 3300 92-242 SELF TEST - KOER - Logic gates for Engine Running Self Test initialization incorrect. 3429 92-253 ISC - Unable to calibrate FN825A and FN825B using cal-console. 3503 92-287 TRANSMISSION - DYN TV CALC - Harsh shifts. NONE 93-064A OTHER - Documentation change from DDVS to VSLIM. ======================================================================= LHAV0 LHAU2 (04/20/90) 1651 91-178 SELF TEST - KOER - Provide new logic and add throttle adjust modes to strategies. 1775 91-230 SELF TEST - KOER - Surge during VIP. 2732 91-230A SELF TEST - KOER - Documentation for EMR 91-230. 2964 91-483 SELF TEST - MIL - Change strategy book to use DISABLE_NOSTART. NONE 91-531A TRANSMISSION - DYN TV CALC - Inappropriate upshift TV ramp during verification. 2764 91-540 TRANSMISSION - SHIFT VAL - TP Failure and Shift Validation. 3236 91-554 TRANSMISSION - FMEM - Software error in 1-8 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LHAT2. NONE 92-155K TRANSMISSION - DSRD GEAR DET - PPH - Correct parameter specifications. NONE 92-155L TRANSMISSION - DSRD GEAR DET - PPH - Correct parameter specifications. ======================================================================= LHAU2 LHAU1 (03/26/90) 3299 91-565 TRANSMISSION - EPC - FN622(TOT) does not return signed results, but should. 3280 92-223 OTHER - RCON macros corrupt SMP. ======================================================================= LHAU1 LHAU0 (03/06/90) 3217 91-555 TRANSMISSION - NORM TV CALC - Software errors in LHAU0. 2131 91-556 TRANSMISSION - SHIFT CONTROL - Make FN12_DC, FN23_DC, and FN34_DC signed functions. ======================================================================= LHAU0 LHAT1 (02/16/90) 1542 91-199 SELF TEST - KOER - Engine running initialization revisions and new documentation. NONE 91-199A SELF TEST - KOER - Engine running initialization revisions and new documentation. NONE 91-199C SELF TEST - KOER - Documentation to support EMR 91-199/B and 3-digit codes. 2582 91-412 SPARK - Thrift; reduce resolution of SPK_LAMBSE. 3171 91-412A TRANSMISSION - NORM TV CALC - EMR 91-412 cannot be implemented as written. NONE 91-428A ISC - Improvement to LOWVOL strategy. 2623 91-435 SELF TEST - KOER - Delete the old E.R. spout test. 2629 91-437 TRANSMISSION - EPC - Shift quality varies with temperature. 2310 91-440 ISC - DUTY CYCLE - Improve ISC's DEBYMA output. 2863 91-454 TRANSMISSION - EPC - Inconsistent shift qualify with altitude. 2832 91-464 SELF TEST - CONTINUOUS - Remove VIP EGO switching repetitive one-shot test. NONE 91-464A FMEM - EGO SENSOR - EMR 91-464 did not cover the FMEM chapter. 3005 91-527 TRANSMISSION - EPC - TVCHARGE and cold engagement strategies may not work. 2856 91-528 MISCELLANEOUS - THERMACTOR - OBD-1 implementation with thermactor. 2976 91-537 OTHER - Delay in AM2 turn-off. NONE 91-537A OTHER - Timer resolution, AM2 turn-off. 3167 91-542 AIR MEASUREMENT - MAP SAMPLE - Incorrect long MAP averaging at wide open throttle. 3186 91-543 SELF TEST - KOER - Extend clips on band limits for running idle adjust test. 1-9 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 3200 91-546 TRANSMISSION - FMEM - Remove VSFMFLG being set by C452_KAM_BIT on power-up. 1891 92-086 MISCELLANEOUS - Cannot load two regions into calibration console. NONE 92-155D MISCELLANEOUS - INPUT CNVRT - Specify VS_RATEPH calculation. NONE 92-155G TRANSMISSION - DSRD GEAR DET - To prevent powertrain hunting with E-transmissions. NONE 92-155H TRANSMISSION - DSRD GEAR DET - To prevent powertrain hunting with E-transmissions. 2540 92-161 SELF TEST - CONTINUOUS - Upgrade fuel pump test and documentation. 2937 92-161A SELF TEST - CONTINUOUS - Error in EMR 92-161, calibration parameter name used for RAM flag. 3134 92-161B SELF TEST - Correct typo's in fuel pump test. 2913 92-170 MISCELLANEOUS - Correct potential problem. 3041 92-178 TRANSMISSION - FMEM - OFMFLG is always set using base calibration. 3100 92-201 MISCELLANEOUS - Install shadow instruction for IPPC(R-CON) function. ====================================================================== LHAT1 LHAT0 (01/22/90) 3018 91-126F SELF TEST - CONTINUOUS - MIL light remains on after correction of EGR flow fault. 2947 91-170G SELF TEST - CONTINUOUS - Bulletproofing of continuous BOO test. 3037 91-394C FMEM - Problem with FMEM fuel when MAP vacuum failure recognized. NONE 91-394D SELF TEST - CONTINUOUS - Correction in self test strategy. 2987 91-409N SELF TEST - CONTINUOUS - EGO test/ mechanical purge. 3016 91-409O SELF TEST - CONTINUOUS - V_LEGOTMR1 is held to zero after a jumpback with failure present. 2773 91-411 SELF TEST - KOER - Revise running self test code 998 abort with corresponding code 128. 2945 91-466 SELF TEST - Software coding error. 2988 91-485 SELF TEST - CONTINUOUS - Change 3-digit slow code pulsewidth to 0.4 seconds. 2968 91-487 SELF TEST - CONTINUOUS - Adaptive test prevents ECT open test from failing. 2762 91-500 TRANSMISSION - CLUTCH VAL - Erroneous VIP code 62's. 2849 91-503 FMEM - VSS failure detection. NONE 91-503A SELF TEST - KOEO - MLPS service code in KOEO. NONE 91-503B SELF TEST - CONTINUOUS - Amend EMR 91-503 for accuracy. NONE 91-503C FMEM - Modify setting and clearing of flag VSFMFLG. 1-10 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 3000 91-509 SELF TEST - CONTINUOUS - Software error in continuous ego software test. ====================================================================== LSAT0 LHAS0 (12/12/89) 2829 91-170F SELF TEST - CONTINUOUS - Documentation. 2790 91-191C SELF TEST - KOEO - DCL documentation and VIP executive. NONE 91-409M SELF TEST - CONTINUOUS - Add constraint on adaptive clip test. 2209 91-414 OTHER - Prevent thermactor in WOT. 1656 91-439 ISC - BYPASS - RPM flairs when restarting a warm engine. 2860 91-442 SELF TEST - V_LESTMR will not count up due to software error. 2877 91-445 FUEL - Improve the LAMBDA average calculation for VIP test. 2930 91-462 SELF TEST - CONTINUOUS - STO turns on when starting engine with STI grounded. ====================================================================== LHAS0 LHAR0 (11/16/89) NONE 89-554E TRANSMISSION - Rename FNXXDC's to FNXX_DC's for AC, LD and LH. NONE 89-554I TRANSMISSION - Document TP_REL high byte is the X-input to fox function. 904 90-190A SELF TEST - CONTINUOUS - Cleanup of EGO switching test. 904 90-190C SELF TEST - CONTINUOUS - Provide a level of fuel system testing. 1995 90-190E SELF TEST - CONTINUOUS - More specific failure criteria for continuous EGO/fuel. NONE 90-190G SELF TEST - CONTINUOUS - More specific failure criteria for continuous EGO/fuel. NONE 90-190H SELF TEST - CONTINUOUS - EGO test modifications. NONE 90-190J SELF TEST - CONTINUOUS - Development. NONE 90-190K SELF TEST - CONTINUOUS - Development. NONE 90-241M SELF TEST - CONTINUOUS - Development. 2376 90-362A MISCELLANEOUS - THERMACTOR - Thermactor air does not bypass with failed ego. NONE 90-362B MISCELLANEOUS - THERMACTOR - Incorrect VIP codes; change from 41 to 144. 2693 90-369B TRANSMISSION - TV PRES GUIDE - TP failure at altitude. NONE 91-126A SELF TEST - Changes made in base EMR 91-126 are also required in LL. NONE 91-126B SELF TEST - MIL - Additional MIL changes are required for 1991 production. 2425 91-126C SELF TEST - MIL - Allow codes 194 and 195 to control EGO FMEM flags. 1795 91-161 SELF TEST - CONTINUOUS - Thermostat warranty returns with no trouble found. NONE 91-161A SELF TEST - CONTINUOUS - Thermostat warranty returns with no trouble found. 1-11 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL NONE 91-161B SELF TEST - CONTINUOUS - Revisions required to implement EMR 91-161A. NONE 91-170C SELF TEST - CONTINUOUS - To add continuous BOO test. NONE 91-170D SELF TEST - CONTINUOUS - To add continuous BOO test. NONE 91-190A MISCELLANEOUS - INPUT CONVERTER - VS is calculated regardless of VSTYPE - Electronic Transmission. 2034 91-191 SELF TEST - Prevent entry into Self Test if vehicle is in Drive or moving. 2130 91-191A SELF TEST - Conflicting pages (16 and 17) for LH strategy. 2751 91-191B SELF TEST - KOEO - Documentation for EMR 91-191. NONE 91-247B SELF TEST - Erroneous code 29; VSSTMR runs with key on-engine off. 2523 91-272B MISCELLANEOUS - Revise open loop fuel flag logic; add TP_REL criteria. 2329 91-289 EGR - ENABLE LOGIC - Incorrect DOC file definitions. NONE 91-289A EGR - ENABLE LOGIC - Incorrect DOC file definitions. 2538 91-289B EGR - EMRS 91-289,A not applicable to LL, LH, LU strategies. 2327 91-299 SELF TEST - KOEO - ACC/NDS test revisions. NONE 91-299A SELF TEST - KOEO - Documentation correction for A/C switch test EMR 91-299. 2341 91-301 MISCELLANEOUS - SMP vector will be incorrect in production strategies. 2419 91-313 SELF TEST - MIL - MIL light will not turn on if fault 32 is present. 2507 91-336 SELF TEST - CONTINUOUS - Revisions to the Cooling System Test. NONE 91-336A SELF TEST - CONTINUOUS - Revisions to the Cooling System Test. 2152 91-339 SELF TEST - Lansdale request for CPU/ RAM/ROM test output pulse spec. NONE 91-339A SELF TEST - Lansdale request for CPU/ RAM/ROM test output pulse spec. 2508 91-350 FUEL - Eliminate fuel pump drop-out at power-up. 2534 91-358 SELF TEST - LH strategy must have same EGR updates as all other strategies. 2543 91-367 SELF TEST - KOER - Hot Injector Compensation not correct during Self Test. 2571 91-369 SELF TEST - Software error; incorrect continuous VIP codes can be transmitted. 2286 91-380 SELF TEST - EOL - Unexpected 35 msec pulse on STO during Lansdale Test. 2678 91-382 SPARK - Base value for DWL_XS_MIN inadequate for generic modules. 2679 91-383 SELF TEST - CONTINUOUS - Change required to Adaptive Test. NONE 91-383A SELF TEST - CONTINUOUS - Change required to EGO Test. NONE 91-383C SELF TEST - Corrections. NONE 91-383G SELF TEST - Corrections. 1-12 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 2171 91-394 SELF TEST - Enhancement to continuous MAP sensor test. NONE 91-394A SELF TEST - Change logic of continuous MAP VAC test for robustness. 2708 91-396 SPARK - Error found on DV tester in ICCD mode output. 2753 91-409 SELF TEST - CONTINUOUS - Software reviewers' convenience. NONE 91-409D SELF TEST - Consolidation of EMRS. NONE 91-409H SELF TEST - Eliminate EGO test failure void. 2819 91-423 SELF TEST - Commonality of VIP software used by AA, AC, GT, LL and LH. 2729 91-427 SELF TEST - Change from stereo to mono ego. 2553 92-137 FMEM - Remove TOTFMFLG logic in all strategies. 2395 93-017 MISCELLANEOUS - Background loop times for generic strategies are high. 2467 93-027 MISCELLANEOUS - 7.0L governor strategy required in LH strategy. NONE 93-027A MISCELLANEOUS - 7.0L governor strategy required in LH strategy. ====================================================================== LHAR0 LHAQ0 (09/14/89) 2486 90-345C TRANSMISSION - Comp torque calculation in EMR 90-345 needs additional variable. 2398 91-310 ISC - Add ISC-BPA KAM adaptive clips and zero KAM if outside clip. 2541 91-353 TRANSMISSION - Torque calculation/ engine calibration issues. NONE 91-353A TRANSMISSION - Define AMT and AMPEMT which were used in the base EMR. NONE 91-353D TRANSMISSION - Torque calculation/ engine calibration issues. ====================================================================== LHAQ0 LHAP0 (08/29/89) NONE 89-130B SELF TEST - Spout circuit test documention clarification. NONE 89-554D TRANSMISSION - Revise base calibration for FNXXT and X-input for FNXXDC. 945 90-089 SELF TEST - Strategy documentation improvements. NONE 90-089A SELF TEST - Documentation clarification for EMR 90-089. 1977 90-348 SELF TEST - Convert from two digit to three digit self test codes. NONE 90-348E SELF TEST - Create three digit self test parameters for LH strategy. NONE 90-348P SELF TEST - Miscellaneous corrections for three digit codes. NONE 90-348T SELF TEST - Miscellaneous corrections for three digit codes. NONE 90-348V SELF TEST - Miscellaneous corrections for three digit codes. 1-13 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 2468 90-373 FUEL - Correct error in bias table lookup. 2021 91-190 MISCELLANEOUS - VS is calculated regardless of VSTYPE. 895 91-235 SYSTEM COMMUNICATION - Revise DCL diagnostic mode protocol for self test codes. 1596 91-254 SELF TEST - Eliminate the possibility of setting a false code 33. 2170 91-256 MISCELLANEOUS - Document the use of NEW_PIP. 2121 91-257 FMEM - Documentation error in EGR FMEM logic. 2308 91-285 SYSTEM COMMUNICATION - Correct interface issue with 9.1 cal con update. NONE 91-287A ISC - Assist in calibrating ISC. 2205 91-288 ISC - DASPOT airmass is clipped under utilizing feature. ====================================================================== EVOLUTION SOURCE FILE FILE EMR NO. DESCRIPTION/REMARKS LHAP0 LHAN0 90-326 FUEL - CRANK - Software error in FCA file (06/01/89) for FN023. ERD 1768. 90-345 TRANSMISSION - OTHER - Compensate torque calculation for SAF. ERD 1856. 90-345A TRANSMISSION - OTHER - Compensate torque calculation for SAF. No ERD. 90-347 TRANSMISSION - SHIFT CONTROL - Improve downshift quality. ERD 1911. 90-351 ISC - DESIRED RPM - Unable to get hicam kick down. ERD 2068. 91-149 OTHER - Correct documentation to Keep Alive Memory chapter. ERD 1806. 91-154A TRANSMISSION - EPC - Possible damage to electronic transmission. No ERD. 91-165 MISCELLANEOUS - Lack of MPG mode. ERD 1807. 91-172 ISC - BYPASS - Multiple versions of ISC MODE_SELECT documentation. ERD 1873. 91-172A ISC - BYPASS - Correct documentation error shown in 91-172. ERD 1873. 91-174 FUEL - Correct timer reset(s) logic upon a LAMBSE reset. ERD 1934. 91-174A FUEL - Correct timer reset(s) logic upon a LAMBSE reset. No ERD. 91-177 ISC - BYPASS - Multiple versions of ISC dashpot documentation. ERD 1886. 91-179 FUEL - CLOSED LOOP - Errors in closed loop LAMBSE documentation. ERD 1932. 91-197 FUEL - Change vector clips on function FN023. ERD 2037. 91-205 ISC - DASHPOT - Improve ability to handle tip-in/tip-out clunk. ERD 1390. 91-222 FUEL - CLSD LOOP ENABL - Allow closed loop fuel control when in MPG mode. ERD 1951. 92-065 MISCELLANEOUS - OTHER - The codes transmitted to the SBDS on the DCL could be incomplete. ERD 1661. 1-14 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LHAN0 LHMA 89-552 FMEM - TRAN OIL TEMP - Correct FMEM INIT_TOT (02/24/89) Calculation. ERD 1778. 90-271B VIP - Correct implementation of 90-271: the vector range maximum value of V_VSS_NMIN should be 16,383.75 RPM, not 10,000 RPM. URD 1708. 90-308A S/W - The software documentation for all current & future S/W version prereleases needs to be upgraded to a 1989 copyright date beginning 01/01/89. URD 1639. 90-317 FMEM - Revise ISC FMEM to exclude ACT and ECT effects. URD 1709. 90-325 TRANS - Some engagements may be preformed with inappropriate EPC pressure. URD 1734. 90-325A TRANS - ENGAG/STALL TV - Correct error in original EMR. ERD 1734. 90-332 TRANSMISSION - TQ_IALFA CALC - Correct clip check for TQ_IALFA CALC. ERD 1814. 91-063D MISC - DCL - Revise BITMAP_0 and BITMAP_1 documentation. URD 861,985,1205. 91-130A SELF TEST - Continuous code 49 changed to 79 to make common. ERD 1821. 91-130B SELF TEST - Change of service code not desired from year to year. ERD 1851. 91-130C SELF TEST - Add change pages that should have been on 91-130B. No ERD. 91-135A VIP - S.M.A.C. recommendation to improve diagnostics. URD 1606,1694. LHMA LHM1 89-550 TRANS - Insufficient EPC pressure if vehicle (02/09/89) speed sensor is questionable. URD 1754. 89-551 TRANS - Shift error flags can be set erroneously if PDL_ERROR is set. URD 1753. 90-323 TRANS - Incorrect clipping of EPC pressure. URD 1745. 90-324 VIP - DASPOT function revisions required before signoff. URD 1715. 90-324A VIP - Documentation changes required to implement EMR 90-324. URD 1715. LHM1 LHM0 0V-271A VIP - Correct implementation of 0V-271 (01/12/89) to refresh VSFMFLG in continuous VIP as well as in the VIP executive. URD 1352. 0V-314 FMEM- EPT sensor (open/short) will not turn on MIL light, doees not set failure flag (codes 31/35 are set). URD 1674. LHM0 LHL0 9-541 FUEL - Reset TSLEGO and ACCUM (12/21/88) upon a lambse reset to 1.0. URD 1561. 9-542 TRANS - Neutral to manual 1 lever movement results in 1st gear at all speeds. URD 1583. 0V-301 MISC - DCL to VIP interface. URD 1500. 0V-302 FUEL - VIP requires idle fuel modulation to stabilize engine during the throttle adjust mode. URD 931. 0V-302A FUEL - Documentation pages included 1-15 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL in EMR 0V-302 were incorrect. URD 931. 0V-302B MISC - Documentation pages included in EMR 0V-302 were incorrect. URD 931. 0-311 MISC - Set communication flags every background loop. URD 1655. 1-106A MISC - DCL - Processor resets occasionally when DCL is enabled. URD 1600. LHL0 LHK1 9-454 TRANS - Incorrect shift logic (22/11/88) documentation. URD 799. 9-511E MISC - CANP - Modify canister purge strategy to handle high vapor production. commonize canister purge logic with the final version developed for the 1989 running changes. URD 1272. 9-519A FUEL - LAMBSE will be clipped to the minimum value (0.01) instead of the maximum value (1.99) if LMBJMP calculation on tip-in results in a LAMBSE greater than 1.99. URD 1282. 9-520 SPARK - Allow more flexible octane adjustment which accounts for all combinations of ECT and ACT. URD 1296. 9-520A SPARK - The table specification was shown as a 7 x 7 instead of a 6 x 6. URD 1296. 9-520B SPARK - EMR 9-520 was written primarily for running change LU and LH. In order to incorporate the ECT, ACT spark table in the mainline LL and LH, it is necessary to make changes for BRDRLN_SPK which is used in Generic ISC. URD 1296. 0V-117F VIP - Evaluation of TP adjust mode requires modifications of test conditions. URD 931. 0V-117G VIP - EMR 0V-117F requires modification. URD 931. 0V-117I VIP - EMR 0V-117F requires modification. Cancel EMR 0V-117G. URD 931. 0V-117J VIP - Base strategy KAM qualification test must be revised in order that fuel cells are not reset on exit from the VIP throttle adjust mode. URD 931. 0V-117K VIP - Clean up EMR is required to implement all previous associated EMRs. URD 931. 0V-117L VIP - Byte thrift and clarification of EMR 0V-117K. Cancel KAM changes from EMRs 0V-117E and 0V-117F. Cancel EMR 0V-117J. URD 931. 0V-118 VIP - Improvements to Engine Running Goose Test for robustness. URD 328,996. 0V-118B VIP - Strategy documentation updates required to implement 0V-118. URD 996. 0V-118D VIP - Final updates required to 1-16 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL implement EMRs 0V-118 and 0V-118B into Speed Density strategies. URD 996. 0V-118F VIP - Revise Goose Test documentation for added clarity. URD 1581. 0-144B TRANS - Attachment 9 of EMR 0-144A contains an error. URD 1092. 0V-190D VIP - Allow EGO Full Time to switch before indicating a failure. URD 904. 0V-195 VIP - Review of EMR 9V-399 for release of 'TT' strategy required changes to the documentation of the KAM Code Erase logic. URD 945. 0-197A MISC - Cleanup EMR. URD 1444. 0-210 TRANS - RPM flare when converter unlocks in first gear due to slight reduction in throttle position. URD 1175. 0-219 TRANS - Compensation of EPC is required for transmission oil temperature and 4x4 Low operation. Engagement TV pressure needs to be a fraction of engine RPM and time since engagement began. URD 1176,1194,1204,1249,1281. 0-219A TRANS - Change dynamic EPC from engine RPM to throttle position. Correct specifications of EPC parameters introduced by EMR 0-219. URD 1326,1381. 0-219B TRANS - Correct errors in original EMR 0-219. URD not required. 0-219C TRANS - Correct errors in original EMR 0-219. URD not required. 0-221 TRANS - The optimum speed ratio delta to unlock/relock the torque converter during upshifts varies with throttle position, but current logic uses scalar value independent of TP. URD 1178. 0-226 SPARK - KNOCK - The 4.9L engine is knock limited above a certain RPM. To allow maximum use of the knock sensor, spark is advanced beyond SAF which causes detonation when the engine enters then knock limited speed range. URD 1294. 0-226A SPARK - KNOCK - FN146B is listed in strategy book and FN146A is in the code. FN146A is a word function and is correct for the code. URD 1294. 0-232 FUEL - INJECTOR TIMING - If the INJCNT register becomes corrupted, the recovery code will not set IBETA and INJCNT to zero as desired since the foreground temporary register that is stored as IBETA and INJCNT will not contain a zero value. This could prevent correct injecor timing. URD 1148. 0-235 TRANS - It is difficult to detect shift errors on 1 -> 2 shift because of a single minimum vehicle speed criteria to validate a shift. Dividing the vehicle speed paraemter by RT_NOVS prior to comparing to VSBART is extensively used 1-17 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL in transmission control. Time/byte thrift is possible. URD 1123,1250. 0V-252 VIP - Code used only for GS strategy is done for all strategies. URD 1344. 0-255 TRANS - VEHICLE SPEED - Electronic transmissions require a rapidly responding rationality test of vehicle speed to avoid unwanted shifts if the vehicle sensor input is providing incorrect data. Vehicle speed calculation needs bullet-proofing modifications. URD 1177. 0-255B TRANS - Correction/cleanup of EMR 0-255. Original EMR incorrectly specified "VSCNT" instead of "VSCTR" in "GR_DR_AUTO" module for selecting shift logic. URD N/A. 0-256 SYSEQUAT - VSBART - Calibrating the time constant for VSBART to a large value results in a significant deadband. The Rolling Average remainder is not currently saved, and VSBART will not continue to update when within the deadband. URD 1347. 0V-271 VIP - Changes in E-TRANS FMEM require that VSFMFLG be able to set when in 4x4 mode. URD 1352. 0-272 FMEM - All DIS logic should have been removed including FMEM logic. DIS_FMEM is still included in the MILTMR logic and should have been removed with the DIS logic. URD 1405. 1-070 MISC - Add clock in engineering unit, CLOCK_SEC. Add capability to gather real time in engineering units when data logging. URD 1318. 1-084 MISC - MPGTMR - To enable fuel economy mode during dynamometer certification of "over 8500" truck applications, where the vehicle speed sensor input is non-functional. URD 1125. 1-085 FUEL - INJECTOR OUTPUT IN CRANK - No fuel output on 1st pip down edge. When down edge fueling for crank is selected, and the first edge processing is a PIP down edge, no fuel is output because the foreground fuel routine is called from the PIP up edge and FUELPW is still zero. URD 1362. 1-085A FUEL - INJECTOR OUTPUT IN CRANK - No fuel output on 1st pip down edge. When down edge fueling for crank is selected, and the first edge processing is a PIP down edge, no fuel is output because the foreground fuel routine is called from the PIP up edge and FUELPW is still zero. Cancel EMR 1-085. URD 1362. 1-091 MISC - DCL - The 184 byte block of RAM, which was previously reserved for SBDS use, is now needed for engine control strategy. This reduces the RAM available 1-18 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL to the SBDS for downloaded programs from 600 to 416 bytes. URD 376. LHK1 LHK0 1-043D MISC - Permit use of V8.2 cal console. (10/13/88) Floating SMP data prohibits the use of V8.2 cal consoles. LHK0 does not exceed 8K of SMP data, so V8.2 cal consoles would be able to access all parameters. URD 1340. LHK0 LHJ0 9-511 MISC - PURGE/THERMACTOR - Thermactor (09/28/88) and/or purge inducted Open Loop Fuel on high rpm extended idles is undesirable. URD 454,568,1151. 9-511A MISC - Clean up existing EMR (9-511). Byte savings can be realized and revisions to start book documentation to reflect actual paragraph names. URD 454,568,1151. 9-511B FUEL - Fuel goes lean when PRGTMR is reset to zero because LAMBSE is close to the upper clip. URD 1272. 9-511C FUEL - EMR 9-511B did not include proper "new" attachment 2 for LUVF strategy. Some applications don't want to clip LAMBSE when PRGTMR is reset. URD 1272. 9-519 CLOSED LOOP - If the LAMBSE jumpback calculates a requested value which is greater than 2.0, LAMBSE will be set to 0.01 instead of 1.99 prior to the LAMMIN/LAMMMAX clips. Therefore, the clipped LAMBSE value will be LAMMIN when it should have been LAMMAX. URD 1282. 0V-035 VIP - Engine running: evaluate new approach to testing the spout circuit. URD 310. 0V-035A VIP - Strategy change and documentation update required for clarification. URD 310. 0V-117 VIP - Evaluate proposed throttle setting mode in Engine Running test. This EMR cancels EMR 0V-097, which was created for EAO strategy (CE). URD 777,778,931. 0V-117A VIP - Changes of original EMR required for implementation of EMR 0V-117. URD 931. 0V-117C VIP - Changes of original EMR required for implementation of EMR 0V-117,0V-117A. URD 931. 0-141 TRANS - To correct errors in the strategy book documentation for E4OD. URD 802,836,837. 0-146 SPARK - TRANSIENT SPARK - TLOFLG can change state each pass once started. this can cause spark errors in delivery with resultant driveability complaints. URD 1067. 0-161 FUEL - Incorrect FUEL_A calculation. URD 1132. 0-163 ISC - Commonize RPMERR documentation 1-19 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL for Generic ISC. Multiple documentation versions exist for the Generic ISC RPMERR strategy modules, even though all describe identical logic. URD 1137. 0-163D ISC - Correct parameter definitions in 0-163. Certain parameter definitions were left out of list in EMR 0-163. URD 1137. 0-172 ISC - FHEM strategy for Generic Idle Speed. URD 223. 0-172A ISC - FHEM for Generic ISC. Revisions to 0-172. HCAMFG was accidentally shown as HCAMFLG in 0-172. Page 4 of 0-172 shows a logical AND which should be an OR. URD 223. 0-174 MISC - Landsdale tester is not compatible with 56K EPROM EEC-IV. URD 1005. 0-180 MISC - Add RAM initialization pages to strategy books. URD 324. 0V-190 VIP - More robust continuous EGO switching test. URD 904. 0V-190A VIP - Cleanup of EGO switching test. URD 904. 0V-190B VIP - Provide more explicit continuous EGO test initialization logic. Modify logic to reflect actual implememtation. URD 904. 0-197 MISC - Supply flags for continuous EGO VIP test. URD 1227. 0V-204 VIP - Prevent high TV pressure when in Engine Running Self Test. Commonize all electronic trans. control during Engine Running. URD 1122. 0V-205 VIP - Software error when coding TOT testing. Multiple failure (ECT and TOT concurrently) cannot be detected in KOEO VIP. URD 1197. 0-212A ISC - Commonize overview documentation for Generic ISC. Multiple documentation versions exist for the Generic ISC OVERVIEW strategy. URD 1137. 0-212B ISC - Generic ISC OVERVIEW software is incorrect. While doing commonization of the Generic ISC OVERVIEW documentation, it was discovered that certain software implementations were incorrect. URD 1137. 0-246 SPARK - OUTPUT SCHEDULING - Missing SPOUT signal with ICCD and ECHO PIP. Transitions from ECHO PIP mode to normal spark mode, and from falling edge dwell to ECHO PIP mode, fail to put out SPOUT signals URD 1333. 0-246A SPARK - OUTPUT SCHEDULING - Wrong parameter set to DATA_TIME. URD 1333. 0V-264 VIP - More efficient code and increased robustness. Provide a single exit point for common housekeeping whenever continuous VIP is exited early due to 1-20 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL being in crank mode or being in the first four seconds since power up. URD 1376. 1-043 MISC - Change S/W calling sequence to support new 48K cal console. URD 1102. 1-043A MISC - Correct 48K cal console calling routine. An EEC-IV system reset is required before the cal console will enter the CS mode. URD 1325. 1-043C OTHER - SMP data is still being truncated with version 9 cal console. URD 1340. LHJ0 LHI0 0-144 TRANS - improve execution time and (06/02/88) create common strategy modules. URD 1092. 0-144A TRANS - Clarify documentation. 0-145 SPARK - avoid premature TFI failure. URD 715. 0-145A SPARK - revise 0-145. URD 715. 0-162 FUEL - Increase calibration resolution. URD 970. 0-164 TRANS - avoid engine RPM flare on subsequent tip-in before transmission upshifts correctly when VSS fails. URD 1113. LHI0 LHH0 9-092 OTHER/SW - New macro. URD 127. (05/13/88) 9-294 MISC - Common CRKTMR. URD 556. 9-497 ISC/SW - Add generic idle. 9-500 TRANS - Revise converter unlock. URD 1022. 9-501 FUEL - Premature VS limiting in 4x4 low mode. URD 1032. 0-071 FUEL - Revise CRANK fuel to be a function of PIPS (not time) in CRANK. URD 854. 0V-072 VIP - Define KAM bits associated with continuous error codes. URD 135. 0-099 DCL - Add DCL. 0-099A DCL - Revise PID table/Bit Map. URD 376. 0-102 DCL - modifications. URD 701. 0-102A DCL - modifications. URD 701. 0-106 ISC - Revert to former IPSIBR calculation. URD 923. 0-131 AE - Revise AEFUEL enable/disable logic. URD 978. 0-137 MISC - Revise A0 Base value; too large. URD 1045. 0-166 DCL - Reset RAM/CART when changing modes. URD 1121. 0-168 E40D/SW - Correct Gear Selection logic. URD 1140. LHH0 LHG1 9V-489 VIP-OCIL operates normally during (03/14/88) ENGINE-RUNNING S/T. URD 967. 9-491 OTHER - Add proprietary messages. URD 974 0V-046C VIP - Rename FMEM_MONITR1 to 2. 0-092 ISC - Add Generic Idle. URD 017 1-21 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 0-092A ISC - Revisions to 0-092. URD 017 0V-098 VIP - Delete unused calibration constants, VTOT3, VTOT5. URD 966. 0V-101 VIP/ISC - Update to coincide with Generic Idle Speed. URD 017. LHG1 LHG0 9-486 SW/FMEM - Correct erroneous OFMFLG (02/25/88) definition. URD 955. 9-487 FUEL - Do Open loop fuel control during speed limiting. URD 956. LHG0 LHF0 9-456A TRANS - Move ETVOCM conversion (02/19/88) logic from System Equations to ATOD CNVRT. URD 914. 9-470 TRANS - Create Calibration switch to inc/exclude "shift errors" from transmission fault(s) causing OCIL flash. Refer to URD 887. 9V-476 VIP/SW - Revise EPC Solenoid Test in KOEO Self Test. URD 903. 9V-476A Revisions to 9V-476. URD 903. 9-477 TRANS - Avoid harsh WOT upshifts. Refer to URD 929. 9-480 MISC - Reduce memory. (No URD #) 9-481 TRANS - Insure correct entry to Torque Truncation at high throttle angles when EPC circuit open. URD 939. 9-482 TRANS - Insure EPC on high engine RPM engagements and on first auto shift. Refer to URD 938. 0-047 MISC - Redefine registers containing flag bits. Refer to URD 748. LHF0 LHE0 9V-032E VIP/KOEO - Fix sw error in ETV solenoid (1/27/88) test performance. URD 816 9-154B MISC - Correct documentation of original EMR. URD 729. 9-155B TRANS - Correct documentation of original EMR. URD 729. 9-267B TRANS/SW - Correct Shift validation software error. URD 877 9-268A TRANS - Byte thrift. 9-268B TRANS - Cancel 9-268A. 9-387 MISC - Add copyrights. 9-389C FMEM/TRANS - Correct software error in ETV current monitor test. URD 828. 9-393A TRANS/SW - Update FLG_PWR determination flip-flops every BG Loop. Refer to URD 692. 9-394 TRANS - Revise Coast Boost logic to use FN3CB if GEAR_CUR >OR= 3. Refer to URD 757. 9-406 TRANS - Modify Shift logic to enable downshift while upshift in progress. Refer to URD 758. 9-411 TRANS - Avoid long delays for manual downshifts. URD 759. 9-415 MISC/THERMACTOR - Replace AWOTMR with WOTTMR in the Thermactor Air Control 1-22 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Bypass logic. URD 771. 9-416 MISC - Thrift, remove DPLGHP. URD 446. 9-417 SPARK - Respecify FN1128 to signed table, resolution: 0.0156, range -2.00 to 1.98. URD 792. 9-417A SPARK - Correct calculation of FN1127*FN1128. Refer to URD 849. 9-434 FUEL - TORQUE Trunction, improve function of torque limiting strategy. Refer to URDs 630, 631, 825. 9-435 TRANS - delay transmission shifts during torque limiting to improve drive. Refer to URD 831. 9-437 SYSEQUA/FMEM - ECT & TOT start rolling averages routines revised. URD 606. 9V-440 VIP - Avoid shift val. & converter clutch monitoring errors during running Wiggle mode. URD 848. 9-442 MISC - Revise POWSFG definition. Refer to URD 668. 9-443 SW/TRANS - Revise Base Calibration. URDs 679,718. 9-445 MISC - Incorrect FLG_NO_TV_UP. Refer to URD 725. 9-446 MISC - Correct VBAT computation documentation. URD 739. 9-450 MISC - Incorrect BIHP documentation. 9-452 TRANS - Revise shift logic documentation. Refer to URD 782. 9V-455 VIP - Fix fault filter subroutine so error-detect flag is always = 0 before subroutine returns. URD 851. 9-456 TRANS - compensate ETVOCM for VREF variability. Refer to URD 731. 9-457 TRANS - Avoid harsh transmission engagements after a very cold start. Refer to URD 844. 9-461 TRANS - Modify NOV_ACT calculation pacing. Refer to URD 866. 0-048 SYMB - Add hexidecimal explanation. LHE0 LHD0 9-001H TRANS - Documentation corrections. (11/28/87) URDs 520, 582, 588, 591. 9V-032A VIP - Addition of ETV solenoid test to KOEO. URD 285. 9V-032B VIP - Revise KOEO ETV solenoid eror code. 9V-032C VIP - Scaling revisions for ETV parameters. 9V-032D VIP - Revise ETV test. 9-038C TRANS - Documentation corrections. URD 638. 9V-102D VIP - Corrections to 9V-102C. 9V-170 VIP - Insure correct RPM if engine in FMEM mode, upon entry to Self Test. URD 266. 9V-170A VIP - Modify 9V-170 implementation. 9V-244B VIP/SW - Avoid false indications of EGR failure. URD 698. 9V-246 VIP -Prevent execution Engine Running Test if vehicle moving. URD 396. 9V-261 VIP - Correct erratic TP sensor operation. URD 471. 1-23 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 9V-261A VIP - Cancel 9V-261. 9V-265 VIP - Software thrift. URD 477 9V-292 VIP - KOEO MAF test revision; ECT, ACT Test documentation correction. URD 462. 9-341 TRANS - Add TP requirement to unlock the converter clutch when brake applied. Refer to URD 602. 9-341A TRANS - Update 9-341, replace TP_REL and FIPL_REL with DD_UN_UNL. URD 602. 9-344 VIP compatibility. Cancel 9-145, 9-145A 9-300. Refer to URDs 612, 614, 623, 628. 9-345 TRANS - Cleanup: delete TM_LK_RATE. Refer to URD 527. 9V-359 VIP - Reduce potential storage of erroneous VSS error code. URD 664. 9-361 TRANS - Avoid unwanted downshifts. URD 558. 9-364 FMEM - S/W - force full h/w reset if BG_POINT range check fails. URD 661. 9-375 FUEL - Modify DFSO/FMEM interaction. URD 425. 9V-375B VIP - Clarify VSS Test documentation. 9V-375C VIP - Correct logic error in Attachment #2 of 9V-375B. URD 425 9-381 ISC - Clear FFMTMR each time BGCNT is clearedn in FAM. Refer to URD 708. 9V-382A VIP - General cleanup: documentation. 9-385 FMEM - modify with RPM/RP sensor failures. 9-387 S/W - Copyright paragraphs. NO URD. 9-389 TRANS - Modify TV Guide. Add test for open/short if failure indicated. URD 731. 9-389A TRANS - Deletes 9-389; Modify TV Guide and OFMFLG logic. URD 731. 9-389B TRANS - Modify register use. 9-391 TRANS - Improve shift error detection. URDs 716, 738. 9-399 S/W - Modify VIP KAM code. URD 742. 9V-400 VIP - Correct warmup counter logic. URD 479. 9-401 TRANS - thrift/delete unused scheduled 1st gear converter clutch lock-up. 0-019 FMEM - Delete immobile TP test in FMEM. Refer to URD 625 0V-019A VIP - Modify 0-019. LHD0 LHC0 8V-165E VIP - Clutch switch failure. (10/2/87) 9-003B ISC - Correct Bypass Air Idle speed documentation. 9-029D S/W - Correct Closed loop fuel ramp rates. 9-105 FUEL - Update of fuel computation. 9-105A Cancel 9-105. 9-145 BACKGROUND - BG_MANAGER, load register Watchdog_BG. Refer URD 140 9-145A BACKGROUND - Refine 9-145. Refer to URD 140. 9-146 FUEL - provide more consistent CRANK fuel. 9V-158 VIP - Correct code in VIP_KAMOUT_O.AST. 9V-166 VIP - Minimize Vectorfile compare effort. 9V-200 VIP - enhance continuous EGO. 9V-200A VIP - revisions to strategy. 9V-200B VIP - Correct documentation error. 9-226 TRANS - Commonize Converter Clutch Routines. 1-24 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 9-235 FUEL - INJ timing. CIBETA - TOTAL DELAY_<0 set TOTAL DELAY = 0. 9-239 TRANS - Flash OCIL light if failure occurs. Refer to URD 419 9-239A TRANS - FLASH OCIL if ETV and shift failure occurs. URD 419. 9-243 FUEL - FN071(MAP) current load input FN1343, 1354, 1355. 9-251A S/W - TRANS - byte thrift. 9V-259A VIP - S/W thrift. Apply 9-259 to LH. Refer to URD 285. 9-267 TRANS - Correct shift validation logic. URD 496. 9V-267A VIP - Continuous test for Conv. Clutch. Refer to URD 442,478, 496. 9-268 TRANS - Correct convertor clutch validation. Refer to URD 442. 9-269 TRANS - Delete VBAT Check in PRNDL convert. Refer to URD 478. 9-274 TRANS - S/W bullet-proofing. Refer to URD 529. 9-281 MISC/THRIFT - remove unused code. Refer to URD 540. 9-282 S/W - MISC-Byte and Time thrift. 9-283 S/W - MISC-Notification of Memory Overrun. 9-290 EGR EGRDC calculated & stored before corresponding values of EGRCNT & EGRPRF. 9V-290A VIP&S/W - eliminates EGRDC = 0 check. 9-297 DOCUMENTATION - $SW_RELK --> $SW_RLK. 9-314 S/W - SYSEQUAT - Temp at start routine uses byte instructions. 9V-318 VIP & S/W - Replace allign stmts with conditional assembly. 9V-319 VIP-S/W set VSFMFLG according to C29 KAM BIT in procedure. 9V-320 VIP & S/W - thrift bytes. 9-321 TRANS - ETV overcurrent failure flag not setting properly. Refer to URD 531. 9-324 TRANS - Move setting of GR_DS_TV from Delay Shift Logic to PRNDL Based Desired Gear Determination. Refer to URD 559. 9V-327 VIP & S/W - fuel pump circuit monitor check function. URD 597. LHC0 LHB1 8V-165 VIP - Provide Continuous clutch switch test. (8/12/87) 8V-165A VIP - Modify clutch switch test. 8V-165B VIP - Remove MTXSW logic. 8V-165C VIP - Correct 8V-165B. 8V-165D VIP - Add new Continuous clutch test. 9V-010D VIP - Correct the SW implementation of 9V-010 - 9-010C. 9-029C S/W - Improve implementation of fox functions. Refer to URD #113. 9V-032 VIP - Add VIP test logic to the E4OD transmission strategy. 9-049C Modify Air Charge calculation. 9V-052A VIP - Split LU self test strategy into LL, LH, and LD. Refer to URD #96. 1-25 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 9V-052B VIP - Change from Dual EGR to Sonic. 9V-058 VIP - Free up service code 75 for other use. Refer to URD #76. 9V-058A VIP - Delete service code 75 from IVSC test. 9V-058B VIP - Revise flag names and sense of flags used in KOER brake test. 9V-129 VIP - SW. 9V-130 VIP - Restructure Engine-running Self Test Refer to URD #219. 9V-130A VIP - Clarify variable names. 9-131C S/W - Correct PPCTR initialization. 9V-132 VIP - Byte and time thrift in Continuous VIP. Refer to URD #139. 9V-133 VIP - Revise fault filter call. 9V-147 VIP - Byte thrift. 9V-165 VIP - Clarify source code for VIP KOER. Refer to URD #299. 9V-183 VIP - Provide for two types of IDM. Refer to URD #518. 9-184 Revise CRKTMR logic to supply correct cranking fuel. Refer to URD #323. 9-184A Clearly define the CRKTMR strategy. 9-187 S/W - Protect future assemblies. Refer to URD #317. 9-197 SYSEQUA - Improve MAP average during large pulsations in manifold. Refer to URD #209. 9-197A Cleanup EMR for original. 9V-199A VIP - Make VIP compatible with strategy EMR 9-199. Refer to URD #11. 9-205 SPARK - Revise OSCMOD to apply to decel as well as off idle. 9-220 Add Transmission Oil Strategy. Refer to URD #309. 9-220B Use ECT for TOT if ITOT is out of limits. 9V-223 VIP - Add TOT sensor tests. Refer to URD #309. 9V-223A VIP - Revise parameter and register names. 9V-224 VIP - Byte thrift. Refer to URD #411. 9-227 Correct TSLAMU update. Refer to URD #421. 9V-240 VIP - Boo Test. Refer to URD #436. 9-251 Add a calibration parameter (TVPMIN) and clip TV_PRES to TVPMIN as a minimum. URD #456. 9-258 Set FLG_ENG_TV to 0 on F/R and R/F manual shifts. Refer to URD #461. 9-271 Correct documentation of DSTPBR. 9-273 Clip daspot to 1.99 or FN882 * FN891, whichever is less. Refer to URD #499. 9-276 Documentation - Delete reference to VSMFLG and VSFAIL. Refer to URD #506. 9-278 S/W - Correct temperature _@ start routine. Refer to URD #532. LHB1 LHB0 9-038B TRANS - Correct misspelling of (6/30/87) FLG_SF_AUTO. 9-144A FUEL S/W - Correct KAMREF lookups. Refer to URD #174. 1-26 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LHB0 LHA0 9-049 FUEL - Add torque limiting strategy (6/12/87) for ETV overcurrent failure. Refer to URD #98. 9-049B FUEL - Clarify 9-049. 9-087B TRANS - Cleanup ETVOCM logic. 9-152A TRANS - Update SPD_RATIO once per BG pass. Refer to URD #358. 9-155A TRANS - Do not delay shift logic for manual shifts. Refer to URD #278. 9-189 TRANS - Revise TV Pressure logic for Reverse engagements. Refer to URD #326. 9-198 TRANS S/W - Correctly scale parameters. Refer to URD #355. LHA0 LUX0 9-014 TRANS - Delete SIL. (5/28/87) 9V-032 VIP - Add VIP for E4OD. 9-052 MISC - Split LH from LU. Refer to URD #96. 9V-052A VIP - Split LU into LL, LH, and LD. 9V-052B VIP - Drop PFEEGR. 9-052C EGR - Remove PFE EGR from LH. 9-087 TRANS - Add ETV failure flags. Split from LD. Refer to URD #98. 9-087A TRANS - Add OFMFLG logic. 9-112B TRANS - Add failsafe to Dynamic TV logic. Refer to URD #186. 9-112C TRANS - Revise failsafe to Dynamic TV logic. 9-131 FUEL - Add Generic Open Loop fuel. Refer to URD #165. 9-131A FUEL - Clean-up for 9-131. 9-131B FUEL - Correct CL LAMBSE reset. 9-144 FUEL - Expend VOLEFF & Adaptive fuel tables. Refer to URDs #174 & #253. 9-149 TRANS - Combine the tip-out and TV shift delays. Refer to URD #279. 9-149A MISC - Correct documentation in 9-149. 9-150 TRANS - Reverse the sign of the speed ratio check during manual downshifts. Refer to URD #272 9-151 TRANS - Only delay the manual 1-2 upshifts during power-off mode. Refer to URD #273. 9-152 TRANS - Modify Converter Clutch routines. Refer to URD #274. 9-153 TRANS - Revise the back-out upshift logic. Refer to URD #276. 9-154 TRANS - Revise TV strategy to provide coast boost TV when coast clutch is on. Refer to URD #271. 9-154A TRANS - Clear FLG_DEL_MDN when shift is complete. 9-155 TRANS - Recognize a 4-2/2-4 shift. Refer to URD #278. 9-156 TRANS - Revise the "Infer Coast Clutch Engaged Logic." Refer to URD #291. 9-164 TRANS - S/W clean-up. Implement 9-119. Refer to URD #307. 1-27 STRATEGY EVOLUTION - LHBH1 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 9-164A TRANS S/W - Clarify 9-164. 9-164B TRANS S/W - Correct flag code. 9-172 MISC - Clean-up TP-RATCH vs TP_REL substitution. Refer to URD #314. 9-172A MISC - Clean-up TP-RATCH vs TP_REL substitution. Refer to URD #314. 1-28 CHAPTER 2 SYMBOLOGY 2-1 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SYMBOLOGY DEFINED PARAMETERS A defined parameter is a variable or a constant that is defined in EEC-IV source code according to its definition in the strategy parameter dictionary. Defined parameters are represented in the strategy description by identifiers whose alphabetic characters are in the upper case. STRATEGY SPECIFICATION PARAMETERS A strategy specification parameter is a variable or a constant that is not defined in the strategy parameter dictionary. Strategy specification parameters are represented in the strategy description by identifiers whose alphabetic characters are in the lower case. These parameters are used only to facilitate the description of strategy function. A strategy specification parameter need not be defined in the EEC-IV source code if the implementation structure does not require it. The scope of the identifier representing a strategy specification parameter may include more than one strategy module, but it is strictly local to one strategy chapter. A strategy specification variable cannot be used to pass information between strategy modules that execute asynchronously. The value of a strategy specification variable does not persist between repeated executions of any particular strategy module in which it is referenced. INPUTS The inputs to most logical operations will be conditional statements of the form: X > Y where, X is a variable (RAM), and Y is a calibration constant, fox function or table look-up, or a mathematical expression. In some cases, Y may also represent a variable. Typically, six types of conditional statements will appear in the strategy logic diagrams. They are; X > Y, X < Y, X >= Y, X <= Y, X = Y, and X <> Y. SYMBOL MEANING ------ ------------------------ = EQUAL TO <> NOT EQUAL TO > GREATER THAN >= GREATER THAN OR EQUAL TO < LESS THAN <= LESS THAN OR EQUAL TO It should be noted that when the expression X > Y or X < Y is encountered, the conditional statement can be calibrated such that it will never be true, and the appropriate strategy action will never take place. For example, if the variable X has a range of 0 to 255, and the calibration constant in the logical statement, X > Y, is selected to be 255, the statement will always be false. This provides a means for calibrating out certain strategy functions. When any conditional statement is true, the INPUT STATE to the logical operation is said to be 'TRUE', and is assigned a value of '1'. When the statement is false, the INPUT STATE is 'FALSE', and is assigned a value of '0'. 2-2 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LOGICAL OPERATIONS Two logical operations are used, the 'AND' gate and the 'OR' gate. An 'AND' gate is represented by the following symbol: A ---------------------| |AND -| C B ---------------------| where A and B are INPUT STATES and C is defined as the OUTPUT STATE of the logical 'AND' operation. The value of the OUTPUT STATE is a function of the INPUT STATES as shown in the following truth table: AND GATE ============================================ INPUT STATE INPUT STATE OUTPUT STATE A B C ============================================ 0 0 0 -------------------------------------------- 0 1 0 -------------------------------------------- 1 0 0 -------------------------------------------- 1 1 1 ============================================ Likewise, the 'OR' gate is represented by: A ---------------------| |OR --| C B ---------------------| And the OUTPUT STATE for various INPUT STATES is given by the 'OR' truth table: OR GATE ============================================ INPUT STATE INPUT STATE OUTPUT STATE A B C ============================================ 0 0 0 -------------------------------------------- 0 1 1 -------------------------------------------- 1 0 1 -------------------------------------------- 1 1 1 ============================================ 2-3 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS The output of all logical operations results in one of two possible paths: 1) The output is an input to another logical operation. A ----------| |AND -- C --| B ----------| |OR -| E | D ----------------------| In this case, OUTPUT STATE C is an input to an 'OR' gate. It should be treated like any other conditional statement when determining the value of the final OUTPUT STATE E. 2) ACTION is taken based upon the OUTPUT STATE. A ---------------| |AND -- C --| Energize OUTPUT B ---------------| | | --- ELSE --- | | De-energize OUTPUT The ACTION described in the action box is taken when OUTPUT STATE C is 'true'. If an ALTERNATE ACTION is required when OUTPUT STATE C is 'false', the alternate action is described below an ELSE statement in the action box. If no alternate action is required, no ELSE statement will appear. 2-4 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Multiple "ELSE/ACTION" blocks can appear in a logic diagram in which three or more alternate actions are possible. Consider the following example: A ---------------| |AND -- C --| ACTION #1 B ---------------| | | --- ELSE --- D ---------------| | |AND -- F --| ACTION #2 E ---------------| | | --- ELSE --- | | ACTION #3 The procedure is: 1. Test for ACTION #1. If "C" is true, perform ACTION #1. 2. Otherwise, test for ACTION #2. If "F" is true, perform ACTION #2. 3. Otherwise, perform ACTION #3. Notes about multiple "ELSE/ACTION" logic: 1. When logic has multiple "ELSE/ACTION" blocks, only one action block can be performed during a program pass. Priority is always top down. In the example, if "C" and "F" are simultaneously true, "C" takes precedence and ACTION #1 is performed. 2. If the final "ELSE/ACTION" block does not have logic as input pointing to it (as in the example), the final action block is performed when no preceeding action block is true. Action is always performed during each program pass with this type of logic. 3. If the final "ELSE/ACTION" block has logic as input pointing to it, the final action block is performed only when no preceeding action block is true and when its input logic is true. Action is not always performed during each program pass with this type of logic. 2-5 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL HYSTERESIS Hysteresis in a strategy is a situation in which the logic used to make an output true is different from the logic used to make the output false. An example use would be to prevent on/off cycling of an output because of jitter in an input parameter. Hysteresis is represented in strategy logic diagrams using the following "flip-flop" notation: A ---------------------|S Q-| C | B ---------------------|C The actual conditional statements and direction of hysteresis will depend upon the specific application in each strategy module The action of this hysteresis notation is given by the following truth table: HYSTERESIS FLIP-FLOP ========================== S(SET) C(CLEAR) Q-OUTPUT A B C ========================== 0 0 no change -------------------------- 0 1 0 -------------------------- 1 0 1 -------------------------- 1 1 1 ========================== The action of the flip-flop can be described as follows: When the "A" (set) input is true, regardless of the "B" (clear) input level, the flip-flop sets and the "C" output is true. When the "B" input is true and the "A" input is false, the flip-flop clears and the "C" output is false. When "A" and "B" are both false, the "C" output remains unchanged. ADVICE: 1. Since the intent of a flip-flop is to provide hysteresis, the state of a flip-flop must be remembered from pass to pass. The output is usually defined as a flag. 2. All flip-flops must be serviced every pass through the program, even though some flip-flops are shown in portions of logic that may not execute each pass. The normal practice is to lump and service the flip-flops together at the beginning of a routine. This guarantees that all flip-flop outputs will reflect the correct state based on current input conditions. Then, when logic refers to a flip-flop, the logic only needs to look at the flag which represents the state of the flip-flop. 2-6 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 3. Clear (0) is the default initial value of the output flag for a flip-flop. The strategy specification must explicitly state if the initial value should be set (1). 4. The set input always takes precedence over the clear input. When both are true, the flip-flop output should set. In some instances, the software practice has been to perform the clear logic first, followed by the set logic. The procedure may initially clear the flag and then reverse the decision later. This practice could cause problems if the flip-flop output flag is tested during an EOS interrupt because the EOS can catch the flag in the wrong state. The flip-flop procedure should always be: IF set condition met THEN set flip-flop output flag ELSE IF clear condition met THEN clear flip-flop output flag ELSE No change to flip-flop output flag ENDIF Some flip-flops are specified without a hysteresis term to save bytes; this is the preferred method of presenting flip-flops. In this case there are two calibration parameters, one for the set condition, and one for the clear condition. When flip-flops are specified this way, the calibration parameter used to set the flip-flop will end in _SH or _SL. The parameter used to clear will end in _CH or _CL. The H or L determines the larger (H) or smaller (L) parameter. Example: DEL_LOAD < DLOD_SL ----|S Q-| C | DEL_LOAD >= DLOD_CH ---|C 1.0 | | DEL_LOAD | /|\ | o = state change | | clear region | DLOD_CH | -------o-----------------|-------------- | | | | | | | | no change (hysteresis) DLOD_SL | -------|-----------------o-------------- | | | | | set region \|/ | 0.0 --------------------------------------------------------- 2-7 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL HOW TO INTERPRET THE HEXADECIMAL REPRESENTATION OF A REGISTER CONTAINING BIT FLAGS 1) Display the register on the calibration console. 2) Press the 'HEX' button on the calibration console to display the register in hexadecimal format. 3) Two hexadecimal digits will be displayed. In order to determine which bit flags are set, use the following hexadecimal-to-binary conversion chart: HEXADECIMAL DIGIT DISPLAYED BINARY EQUIVALENT STRING -------------------------------------------------------------- | 0 | 0000 1 | 0001 2 | 0010 3 | 0011 4 | 0100 5 | 0101 6 | 0110 7 | 0111 8 | 1000 9 | 1001 A | 1010 B | 1011 C | 1100 D | 1101 E | 1110 F | 1111 The LEFTMOST hexadecimal digit represents the state of bit flags in bit positions 7 through 4. The RIGHTMOST hexadecimal digit represents the state of bit flags in bit positions 3 through 0. Consider the following: The 8-bit binary string representing the leftmost and rightmost hexadecimal digits together, read from left to right, represents the state of bit flags in bit position 7 through bit position 0. 2-8 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL EXAMPLE: You want to examine the state of NDSFLG, a bit flag in bit position 5 of a register which is at address B0. 1) Display the contents of B0 on the calibration console. 2) Display the contents in hexadecimal format. 3) The hexadecimal value '2F' is displayed. ---------------------------------------------------- | HEXADECIMAL | 2 | F | |------------------|---------------|---------------| | BINARY | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |------------------|---------------|---------------| | BIT POSITION | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ---------------------------------------------------- This means that bit flags in position 5 (NDSFLG), 3, 2, 1 and 0 are set to 1. 2-9 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL THE "DO:" STATEMENT The DO: statement is used to call a logic subroutine in strategy. It is not used, as it often is by software, to avoid repeating a frequently used piece of code. It is primarily used to allow a process to be broken up into smaller pieces so that the strategy can be easily represented without resorting to large, cumbersome, confusing pieces of logic. The DO: statement can also provide an "executive routine" or calling structure for a series of sequential pieces of logic. The DO: statement can call either an entire strategy module or strategy process. A strategy module is a segment of strategy that has an overview, definitions and a process and usually corresponds to a software module. A strategy process is a subset of a strategy module, usually used to conveniently break up a logic diagram in a strategy book. Do not use the version type extension for strategy modules, i.e. COM1, COM5. This makes the calling module independent of various module varieties. The syntax is: DO: DSDRD_GR MODULE or DO: RPM LIMITER PROCESS The DO: statement is used on the "ACTION" or right hand side of logic diagram. The format for the called subroutine (Module or Process) is that it must have an explicitly stated start and end point. This shows that the piece of strategy contained within the start and end points is executed as a subroutine, not necessarily every background loop through the strategy. The syntax is: BEGIN: DSDRD_GR MODULE BEGIN: RPM LIMITER PROCESS . . . . . . CONTINUE: DSDRD_GR MODULE CONTINUE: RPM LIMITER PROCESS (if required) (if required) . . . . . . END: DSDRD_GR MODULE END: RPM LIMITER PROCESS The CONTINUE: syntax is used to identify the continuation of a logic diagram on to a page that does not have either a START: or an END: statement. The intent is to have any page of a strategy book be able to be identified as being part of a subroutine or not. For example, a logic diagram that takes up 3 pages will begin with a START: statement on the first page, begin with a CONTINUE: statement on the second page and end with an END: statement on the third page. 2-10 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL At the end of the module or process, there is an implicit "RETURN" statement, that is, the next execution step of the strategy must return to the place where the DO: statement was called. For example, if a DO: statement is executed in the middle of an ELSE/ACTION block, the strategy continues execution after returning to the originating point. A ---------------------| |AND -| ACTION 1 B ---------------------| | | --- ELSE --- C ---------------------| | |AND -| DO: XYZ PROCESS ------> BEGIN: XYZ PROCESS D ---------------------| | <--| . | --- ELSE --- | . | | . | ACTION 2 | END: XYZ PROCESS | | | |--------------| E > F -----------------------| ACTION 1 | | --- ELSE --- | | ACTION 2 If the first AND gate containing "A" and "B" is false and the second AND gate containing "C" and "D" is true, then the XYZ PROCESS is called and executed. After returning to the DO: statement, strategy execution continues with the evaluation of the "E > F" condition in the second ELSE/ACTION block. DO: statements can be nested, that is, one DO: statement can call a subroutine which contains another DO: statement within itself. There are no restrictions on this other than the basic rule continues to apply: Each process or module that is executed must return to the originating point upon its execution. Flip flops should not be included within a DO: statement since they must be evaluated every background loop. The strategy designer must have the flip flops shown as being executed every background loop and use the appropriate flop flop output flags within the DO: statement. 2-11 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "ROLAV" Statement The ROLAV statement is used to invoke the rolling average routine in the strategy. The EEC-IV filters inputs using this rolling average routine. This is a difference equation implementation of a first order low pass filter. The filter behaviour is defined by the discrete time solution to the first order differential equation and takes the form: - (FK_TMR/TC) f = 1 - e Where "f" is called the filter constant in the difference equation: new_average = f * new_value + (1 - f) * old_average Using the first two terms of the series expansion: x x² e = 1 + x + -- + · · · 2! Simplifying, the exponential "f" becomes: - (FK_TMR/TC) 1 f = 1 - e = 1 - ------------- = . . . (FK_TMR/TC) e 1 1 f = 1 - ----------------- = ------------------- . 1 + (FK_TMR / TC) 1 + (TC / FK_TMR) The time constant (TC) is a function of the input being filtered. It is calibratable. Generally, a longer time constant filters more heavily, but also introduces more time lag into the signal. For most filters, the sampling period (FK_TMR) will equal the background loop time (BG_TMR). In those case where the sample period is not equal to the background loop time, the true sample period is to be passed to the rolling average routine. See the calling convention below. The ROLAV statement is used on the "ACTION" or right hand side of a logic diagram. The strategy will specify calls to the rolling average routine using the following convention: condition -------------| new_average = ROLAV(new_value,TC[,FK_TMR]) Where: - old_average = Current value of new_average prior to filtering. This parameter is implicit in the call to the rolling average routine. - new_average = Output value of rolling average filter. This parameter becomes the old_average on the next filtering event. - new_value = Input value to be filtered. - TC = Time constant. - FK_TMR = Elapsed time between successive calculations. This is an optional argument only to be specified if it is different from background loop time. 2-12 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "ABS" Statement The ABS function returns a value which is the absolute value of parameter x. ABS has the following form: ABS(x) The parameter x cannot be of flag type. The "CLIP" Statement The CLIP function returns the value x clipped between the range low and high. low is the lower limit and high is the upper limit. low and high MUST be specified in the given order. CLIP has the following form: CLIP( x, low, high) EXAMPLE: y = CLIP( x, low, high) This is equivalent to the following logic chart. x > high ---------------------| y = high | | --- ELSE --- | x < low ----------------------| y = low | | --- ELSE --- | | y = x NOTE: If the limits high and low are calibrated such that low >= high, then the output will be high. The high limit ALWAYS take priority. 2-13 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "MAX" Statement The MAX function returns the maximum value of a list of parameters x1,...xn. MAX has the following form: MAX(x1,...,xn) The parameters x1 through xn cannot be of flag type. Example: y = MAX(x, 10) This is equivalent to the following logic chart. x < 10 -----------------------| y = 10 | | --- ELSE --- | | y = x The "MIN" Statement The MIN function returns the minimum value of a list of parameters x1,...xn. MIN has the following form: MIN(x1,...,xn) The parameters x1 through xn cannot be of flag type. Example: y = MIN(x, 15) This is equivalent to the following logic chart. x > 15 -----------------------| y = 15 | | --- ELSE --- | | y = x 2-14 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "SQR" Statement The SQR function returns a value which represents the square of the parameter x. SQR has the following form: SQR(x) The parameter x cannot be a flag type. The "SQRT" Statement The SQRT function returns a value which represents the square root of the parameter x. SQRT has the following form: SQRT(x) The parameter x cannot be a flag type, and MUST NOT be NEGATIVE. 2-15 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "pid_def()" Construct A PID is a way to access parameter values by name via a communication protocol between the Powertrain Control Module and an outside requestor. Parameter values from within the PCM can be accessed from the outside environment via the communication network. This is done by the generic scan tool as required by CARB-OBDII regulations to obtain information in reference to OBDII system monitors and their status. This can also be done by SBDS or other systems capable of establish and sustaining communications using the SCP. CARB regulations require the availability of a number of PIDs regarding the state of the on board diagnostic system. These, as well as the Ford specific PIDs, will be defined via the strategy documents in a similar manner. A construct will be used in the strategy documents to define the data conveyed in a PID request. That construct is the: pid_def(pid_number, description) Where: "pid_number" is the symbol used to refer to the PID. For example, all PIDs defined by SAE standard J1979 will by of the form j1979_xx[_xxx]. The portion inside the brackets [] is optional. Other conventions will be used for j2190 or SBDS specific PIDs. "description" is the actual data to be used in the transmission of the PID. This could reference a register (RAM, KAM or ROM) that is maintained in the strategy. For example ECT or TEST_SW. This could also be an equation used to compute the PID. This equation may or may not reference other internal registers in the strategy. An example of this would be (((ECT - 32) * 5/9) + 40). The PID may also be a bit map of a number of flag bits. In this case the following convention is used for the "description" parameter: pid_def(xxxx_xx_xxx,(b0: FLG_1, b1: FLG_2, b2: 1, b3: 0, b4: FLG_3, b5: FLG_4, b6: 0, b7: 0) Whenever a parameter is referenced in the "description" and is in lower case in the pid_definitions context, logic will be present in the context that describes how that parameter is to be determined. The pid_definitions context is delineated by a "BEGIN: pid_defintions" statement and a "END: pid_defintions" statement. The pid_defintions context is located in the module in the strategy that is most relavent to the PIDs being defined. The pid_definitions contexts will therefore be distrubuted throughout the strategy. See the following for an example of a module with PID definitions: The "pid_def()" constructs do not imply anything with respect to implementation. It is left up to the best judgement of the software designer as to how to implement the PID scheme. 2-16 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL MODULE NAME OVERVIEW Put overview text here. . . DEFINITIONS Put definitions text here. . . PROCESS STRATEGY MODULE: STRATEGY_MODULE_COM1n BEGIN: pid_definitions ;comment describing that this section is defining PIDs. REGISTER1 = Y --------------| |AND -| flag1 := 1 REGISTER2 = X --------------| | | --- ELSE --- | | flag1 := 0 unconditionally ------------------| parameter1 := (REGISTER3 * M) + B pid_def(j1979_xx_xxx, REGISTER4) pid_def(j2190_xx, parameter1) pid_def(sbds_xx_xxx, FNnnn(REGISTER5)) pid_def(xxxx_xx_xxx, (REGISTER6 * M) + B)) pid_def(xxxx_xx, bo: flag1, b1: FLG_1, b2: 0, b3: 1, b4: FLG_2, b5: CAL_SW_1, b6: 0, b7: 0) END: pid_definitions Continue with the control strategy logic here. . . 2-17 SYMBOLOGY - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The "send()" Construct The SCP interface strategy allows for numerous messages to be supported by the Powertrain Control Module and the vehicle network databus. These messages can be sent from various locations in the strategy, depending on their functional intent, to be received by one or more recieving nodes on the bus. In order to provide a uniform method of sending an SCP message, a construct will be used in the strategy documents to define the data to be transmitted in an SCP message. That construct is the send(msg_name: scp_data_[]) Where: "msg_name" is the name of the particular message to be sent. For example, a response to an SAE standard J1979 request might be named REPORT_OBDII_PID. "scp_data_[]" is the actual data to be sent in the message transmission. Since there are up to seven (7) data bytes available to be sent in each message, the values of scp_data_[] could all be defined. These values could be either register names, or constant hex values, or even a PID which was defined in the "pid_def()" construct. While not all seven of the scp_data_[] values are required to be defined in a "send()" command, the construct does not allow for data to be missing in between defined values. An example of the use of the "send()" construct follows: send(REPORT_OBDII_PID: 41h, 01h, j1979_01_011, j1979_01_012, j1979_01_013, j1979_01_014) ..which tells the software designer to send a message called REPORT_OBDII_PID over the network with the following defined values: scp_data_1 = 41h scp_data_2 = 01h scp_data_3 = the value defined in pid_def(j1979_01_011,...) scp_data_4 = the value defined in pid_def(j1979_01_012,...) scp_data_5 = the value defined in pid_def(j1979_01_013,...) scp_data_6 = the value defined in pid_def(j1979_01_014,...) NOTES: SCP messages which contain no variable data bytes are to be sent from the strategy without the "scp_data_[]" portion defined. The priority/type and target specifier bytes are unique values for each message, and thus are NOT defined in the "send()" construct. As a result, all messages referenced by "send()" must also be defined in the SCP interface strategy for the software designers' reference. The "send()" constructs do not attempt to imply software implementation, but rather a means of communicating information to the software designer to transmit over the SCP network. 2-18 CHAPTER 3 EEC OVERVIEW 3-1 EEC OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ELECTRONIC ENGINE CONTROL SYSTEM OVERVIEW The Electronic Engine Control system is intended to provide a more optimum engine control strategy than is possible through a strictly mechanical system. This is accomplished by using a microprocessor which interprets input data from a number of engine parameter sensors, and based on a control strategy in the microprocessor's program chips, generates output control signals to a number of actuators. The control strategy is divided into two segments, an engine control strategy, and self test diagnostics. The diagnostics will be discussed in another section. The engine control strategy is segmented into three principal modes: -CRANK -UNDERSPEED -RUN The strategy description and the entrance and exit conditions for CRANK/UNDERSPEED/RUN are shown on the following pages. RUN is of particular interest because it contains the control logic for most engine operating regions. The RUN strategy is further broken down into three modes to facilitate optimum control. Based primarily on throttle position, they are: -CLOSED THROTTLE -PART THROTTLE -WIDE OPEN THROTTLE The specific entrance and exit conditions for these modes are described in the throttle mode selection section. The remainder of this document describes the normal engine control strategy (RUN) for the various outputs, including fuel, spark, EGR, thermactor air, and idle speed control (ISC). It also contains the utility functions, filters, ratchets, and timers, and a parameter dictionary of calibration constants, fox functions and tables. HARDWARE CALIBRATION SWITCHES The LH strategy is an EFI, speed density strategy designed to handle any vehicle speed or non-vehicle speed engine application. Hardware complexity is taken into account via a set of user accessible software calibration switches. These switches are detailed below: - BIHP - If a brake on/off switch is present, set BIHP = 1, otherwise set BIHP = 0. - CANPHP - If EEC controlled canister purge hardware is present, set CANPHP = 1, otherwise set CANPHP = 0 to bypass the canister purge logic. - DOLHP - If Data Output Link is being utilized, set DOLHP = 1, otherwise set DOLHP = 0 to bypass the DOL fuel calculation. 3-2 EEC OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - GOVHP - If output to stand-alone governor is present, set GOVHP = 1; otherwise set = 0. - PFEHP - If a Sonic EGR system is being used, set PFEHP = 0. Sonic EGR systems utilize an EVR (Electronic Vacuum Regulator) output. In order to conserve memory, registers and fox functions have been scaled such that both the PFE and Sonic EGR logic can share calibration locations. For example; both EGR strategies use FN219, FN221, and FN239. Also, the EVR output routine, EGR enable/disable logic, and the desired EGR rate are common software code segments. If PFEHP is set to 1 or 2, then the EGR Strategy is always disabled. - PSPSHP - If a power steering pressure switch is present, set PSPSHP = 1, otherwise set PSPSHP = 0. PSPSHP is used in the Idle Speed Control logic. - THRMHP - If Thermactor air pump hardware is present, set THRMHP = 1, otherwise set THRMHP = 0. Also, the following logic sets CHKAIR = 1 for proper function of the Closed Loop/Open Loop fuel logic when Thermactor Air is not used. THRMHP = 0 ----------------------------| CHKAIR = 1 | | --- ELSE --- | | Do NOT modify CHKAIR (Set within Thermactor logic) - TSTRAT = Transmission Strategy switch - 0 -> No Transmission Control; 1 -> Shift Indicator Light Control; 2 -> A4LD with Vehicle Speed Sensor; 4 -> C6E4 Electronic Transmission Control. - TRLOAD = 0 Manual trans, no clutch or gear switch, forced neutral (NDSFLG = 0); TRLOAD = 1 Manual trans, no clutch or gear switch; TRLOAD = 2 Manual trans, one clutch or gear switch; TRLOAD = 3 Manual trans; TRLOAD = 4 Auto trans, non-electronic, Neutral Drive Switch; TRLOAD = 5 Auto trans, non-electronic, Neutral Pressure Switch (AXOD); TRLOAD = 6 Auto trans, electronic, PRNDL sensor Park, Reverse, Neutral, Overdrive, Manual2, Manual1 configuration. - IMS - If no IMS (Inferred Mileage Sensor) hardware is present, IMS defaults to a value of 1 (1 -> no IMS hardware or high mileage). IMS is referenced in the EGR and Thermactor Air logic. - VSTYPE - If a Vehicle Speed Sensor is present, set VSTYPE = 1, otherwise set VSTYPE = 0. 3-3 EEC OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DCL HARDWARE PRESENT SWITCHES Hardware present switches define the types of devices connected to the EEC module through the wiring harness. (See also DCL Chapter) LINK_SW 00 -> UART MODE disabled / no DOL, no DCL 01 -> UART MODE disabled / DOL present, no DCL 02 -> UART MODE disabled / no DOL , DCL present 03 -> UART MODE disabled / DOL present, DCL present 04 -> UART MODE enabled / no DOL, no DCL 05 -> UART MODE enabled / DOL present, no DCL 06 -> UART MODE enabled / no DOL, DCL present 07 -> UART MODE enabled / DOL present, DCL present NOTE: All applications, except FN-9, should have UART mode enabled. 3-4 EEC OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL INITIALIZATION ROUTINE After power is first applied, the software initializes all of the Read/Write (RAM) registers before executing the strategy. All RAM registers are set equal to zero unless initialized to another value (either set value or a calculated value) as shown below. NOTE: The parameters are not necessarily initialized in the order shown. RAM/FLAG INITIAL VALUE A3CTMR FFFF (63.99 SEC) ACT 60.00 DEG F AEMAP MAP APT -1.0 (CLOSED THROTTLE) BP_INTR 1.0 CFIEPT 650.0 COUNTS CONPR 370.0 COUNTS CRKFLG 1.0 (CRANK MODE) ECT 60.0 DEG F EGRBAR 307.0 COUNTS EOFF 307.0 COUNTS EPTBAR 650.0 COUNTS FIEPT 650.0 COUNTS GEAR_CUR 1.0 GEAR_OLD 1.0 GR_CM 1.0 GR_CM_LST 1.0 GR_DS 1.0 GR_DS_LST 1.0 GR_OLD 1.0 IEGR 307.0 COUNTS INJ_PIP_CNT 1.0 IPDL 7.0 ISCMOD 1.0 LAM_OLD 1.0 LAMAVE 1.0 LAMBSE 1.0 LAMMUL 0.996 LOACT 245.0 DEG F MAP 27.0 IN. HG MAPBAR 27.0 IN. HG MAP_FREQ 150.0 HZ MAP_WORD 27.0 IN. HG MKAY 1.0 MULTMR 255.0 SEC NOV_ACT NVBASE NOV_ACT_LST NVBASE OLFLG 1.0 (OPEN LOOP) PDL 7.0 PDL_LST 4.0 PPCTR PIPNUM PUMP 1.0 RANNUM 8193 RATCH RACHIV (250 COUNTS) RLKCTR 1.0 RT_GR_CUR GRRAT1 RT_GR_OLD GRRAT1 RT_NOVS 1.0 3-5 EEC OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL INITIALIZATION ROUTINE (CONTINUED) RAM/FLAG INITIAL VALUE SAF 10.0 DEG. BTDC SYNCTR 1.0 TBART RACHIV (250 COUNTS) TLSCTR FFFF (ALL BITS EQUAL ONE) TPBAR RACHIV (250 COUNTS) TPBART RATIV TPBARTC RATIV TPBARTV RATIV TSLMPH 0.249 SEC UNDSP 1.0 (UNDERSPEED) VBAT 12.5 VOLTS WINDOW_BETA 0.95 3-6 CHAPTER 4 CRANK/UNDERSPEED/RUN MODE SELECTION 4-1 CRANK/UNDERSPEED/RUN MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL CRANK/UNDERSPEED/RUN MODE SELECTION The EEC-IV strategy operation is divided into three distinct strategy segments. These are: 1) CRANK 2) UNDERSPEED 3) RUN The CRANK mode is entered after a power-up initialization or after an engine stall. CRANK employs a special strategy to aid engine starting. When the CRANK logic first becomes false, the UNDERSPEED mode is entered. The UNDERSPEED mode employs a special spark and fuel strategy in place of the normal engine control strategy (RUN). After start, the RUN mode is entered and the normal engine control strategy is executed. If the engine stumbles during RUN mode, the UNDERSPEED mode can again be entered to help recover from the stumble and prevent a stall. The specific strategies are: CRANK STRATEGY Fuel Energize all injector ports simultaneously every CRKPIP PIPS on PIP Falling Edges. Injector Synchronization Logic is disabled. See the BACKGROUND FUEL PULSEWIDTH CALCULATION section of the FUEL Chapter for a description of the FUELPW calculation. Spark Advance 10 degrees BTDC (on PIP signal) Thermactor Air bypass EGR disabled Purge disabled ISC disabled (0% duty cycle if N = 0, 100% duty cycle if N <> 0) 4-2 CRANK/UNDERSPEED/RUN MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL UNDERSPEED STRATEGY Fuel Energize all injector ports in the same manner as in the RUN mode, referenced to PIP Rising Edges. See the FUEL Chapter for the FUELPW calculation. Spark Advance 10 degrees BTDC (on PIP signal) Other outputs are the same as the RUN mode. RUN STRATEGY Injector Synchronization Logic is enabled if SIGNATURE PIP distributor is present. (See the FUEL Section) The normal engine control strategy is described in the remainder of this book. 4-3 CRANK/UNDERSPEED/RUN MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL CRANK/UNDERSPEED/RUN MODE SELECT DEFINITIONS INPUTS: Registers: - ECTCNT = Number of times ECT sensor input was read. - N = Engine RPM. - PIPCNT = Number of PIPs which have occurred. - TSLPIP = Time since last PIP occurred, msec. Bit Flags: - CRKFLG = Flag indicating engine mode. 1 -> cranking; 0 -> run or underspeed mode. - FIRST_PIP = Bit Flag set to 1 if First PIP has been received. Calibration Constants: - CRKPIP = Number of PIPs between injector firing. - IGN_TYPE = Inidcator of ignition type (0 = TFI, 1 = TFI_ICCD, 2 = LDR-DIS). - NCNT = Minimum number of PIPs necessary to exit CRANK Mode. - NRUN = Minimum Engine Speed to exit CRANK Mode. - NSTALL = Engine Stall speed to re-enter CRANK Mode. - STALLN = Stall RPM: If the first RPM calculated is greater than this value assume that there was a reinit. - UNRPM = Underspeed Engine Speed. - UNRPMH = Hysteresis term for UNDERSPEED Mode. OUTPUTS Registers: - ECTCNT = See above. - INIT_TOT = Temperature of transmission oil at start-up, deg. F. - N = See above. - PIPCNT = See above. - RUNUPTMR = Time since RUNUP_FLG was set, sec. 4-4 CRANK/UNDERSPEED/RUN MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - TCSTRT = Temperature of Engine Coolant at Startup, deg F. Bit Flags: - CRKFLG = See above. - FLG_STALL = Flag indicating a stall has occurred; transition from underspeed/run to crank. - REFLG = Reinit flag: 1 -> reinit occurred; 0 -> no reinit. - RUNUP_FLG = Flag indicating that Runup is complete; 1 -> Runup complete. - UNDSP = Flag indicating engine mode: 1 -> cranking or underspeed, 0 -> run mode. CRANK/UNDERSPEED/RUN MODE SELECTION LOGIC CRKFLG = 1 ---------------| (Crank mode) | | CRANK MODE |AND -| CRKFLG = 1 N <= NRUN ----------| | | UNDSP = 1 | | | FLG_STALL = 0 ECTCNT < 8 ---------|OR --| | | | --- ELSE --- PIPCNT < NCNT ------| | | A Stall has occurred CRKFLG = 0 ---------------| | (Run or Underspeed mode) |AND -| CRKFLG = 1 | | UNDSP = 1 N < NSTALL ---------------| | ECTCNT = 0 | TCSTRT = 0 | INIT_TOT = 0 | FLG_STALL = 1 | RUNUP_FLG = 0 | RUNUPTMR = 0 | | --- ELSE --- | CRKFLG = 1 ---------| | UNDERSPEED Mode |OR --|S Q--| CRKFLG = 0 N < UNRPM ----------| | | UNDSP = 1 | | FLG_STALL = 0 N > UNRPM + UNRPMH -------|C | | --- ELSE --- | | RUN Mode | CRKFLG = 0 | UNDSP = 0 | FLG_STALL = 0 4-5 CRANK/UNDERSPEED/RUN MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PIP COUNTER AND ECT COUNTER CONTROL LOGIC CRKFLG = 1 -------------| (CRANK mode) |AND -| Count PIP signals as they occur | | (PIPCNT is the counter) N > NRUN ---------------| | | --- ELSE --- | | Stop counting PIP signals | PIPCNT = 0 NOTE: If the PIP period (time elapsed since the last PIP signal) becomes >= 800 msec, the engine speed RPM is set to zero. This insures that if the PIP signal goes away because of a stall, RPM will become zero to trigger CRANK mode. ENGINE RUNNING REINIT STRATEGY The reinit strategy attempts to differentiate an engine running reinit from a normal start engine run-up. After a reinit, a "first RPM" is calculated from the first two PIP rising edges. If the calculated RPM is greater than idle RPM, then a reinit is assumed. "first RPM calculation" >= STALLN -------| REFLG = 1 (Set reinit flag) TSLPIP >= 800 msec ----------------------| N = 0 | FIRST_PIP = 0 | REFLG = 0 When the engine is not moving and a LDR-DIS ignition system is used, the SPOUT output from the EEC computer to the ignition module should be held in the HIGH state to prevent the coil from charging. IGN_TYPE = 2 ---------------------| (LDR-DIS system) | |AND -| SPOUT to high TSLPIP > 800 msec ----------| | (no PIPs in long time) |OR --| | FIRST_PIP = 0 --------------| (no PIPs yet) 4-6 CHAPTER 5 THROTTLE MODE SELECTION 5-1 THROTTLE MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL THROTTLE MODE SELECTION OVERVIEW The throttle mode scheduler is used to determine what engine operating region is currently extant. The variable APT (At Part Throttle flag) is used to indicate throttle mode and is assigned the following values: THROTTLE MODE APT ------------------- --- Closed Throttle -1 Part Throttle 0 Wide Open Throttle 1 The value of APT is determined by the logic shown on the following page. Briefly, throttle angle breakpoints, in terms of counts, are used to define the CLOSED/PART THROTTLE and PART/WIDE OPEN THROTTLE transitions. Hysteresis is incorporated in both breakpoints to prevent jitter between modes. TP_REL is a parameter which indicates the amount of throttle movement beyond the closed throttle/idle setting. TP_REL is computed by subtracting RATCH from TP. Larger values of TP_REL indicate wide open throttle, smaller values of TP indicate part throttle, and near zero TP_REL indicates closed throttle. The variable RATCH is the output of a ratchet algorithm which continuously seeks the minimum throttle angle corresponding to a CLOSED THROTTLE position. This alleviates the necessity to set the throttle position sensor at an absolute position and compensates for system changes and differences between vehicles. The ratchet algorithm uses filtered throttle position for the determination of RATCH. RATCH is initialized to the non-calibratable value RATIV, currently set to 250 counts. A more detailed explanation of the throttle position ratchets and throttle position filter is contained in the SYSTEM EQUATIONS section. DEFINITIONS INPUTS Registers: - APT = Throttle Mode Flag; -1 -> closed throttle, 0 -> part throttle, 1 -> wide open throttle. - TP_REL = Relative Throttle Position. Bit Flags: - CRKFLG = Flag indicating engine mode; 1 -> cranking, 0 -> run or underspeed mode. Calibration Constants: - DELTA = CT/PT Breakpoint Value above RATCH. 5-2 THROTTLE MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - HYST2 = Hysteresis term to enter WOT Mode. - HYSTS = Hysteresis term to exit Closed Throttle Mode. - THBP2 = PT/WOT Breakpoint Value above RATCH. OUTPUTS Registers: - APT = Throttle Mode Flag; -1 -> closed throttle, 0 -> part throttle, 1 -> wide open throttle. - CTPTFG = Closed throttle to PT/WOT transition flag. - PTSCR = Part throttle mode since exiting CRANK flag. PROCESS The logic described below considers the current position of the throttle and compares that value to the RATCH, Closed Throttle, plus the change in throttle position from the last setting. If both flip-flops in the logic clear, then Part Throttle is set. TP_REL <= DELTA ----------------|S Q--| CLOSED THROTTLE MODE | | APT = -1 TP_REL >= DELTA + HYSTS --------|C | | --- ELSE --- | TP_REL > THBP2 + HYST2 ---------|S Q--| WIDE OPEN THROTTLE MODE | | APT = 1 TP_REL <= THBP2 ----------------|C | | --- ELSE --- | | PART THROTTLE MODE | APT = 0 5-3 THROTTLE MODE SELECTION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Previous APT = -1 -------------| | Current APT <> -1 -------------|AND -| CTPTFG = 1 | | (Closed Throttle to Part/WOT CRKFLG = 0 --------------------| | transition) | PTSCR = 1 | (Part Throttle since Crank) | | --- ELSE --- | | CTPTFG = 0 NOTE: PTSCR and CTPTFLG are initialized to zero. 5-4 CHAPTER 6 FUEL STRATEGY 6-1 FUEL STRATEGY, OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OVERVIEW The purpose of the Fuel Control Strategy is to provide fuel to the engine in appropriate quantities to achieve the desired Air/Fuel ratio in the combustion chambers. The desired A/F ratio is determined by the fuel control strategy and calibration for all operating conditions. It can either be a predetermined value that is calibration dependent and can vary with engine operating conditions (Open Loop Control); or the EEC may ramp the value up and down in a limit cycle to maintain an average stoichiometric mixture, as determined by the EGO sensor (Closed Loop Control). The fuel control actuators, or fuel injectors, consist of a solenoid and metering needle or pintle which is moved off a seat by energizing the solenoid, thus releasing fuel through a nozzle. Each cylinder has an injector installed in the intake manifold to direct fuel toward the intake valve. The length of time the solenoid is energized (pulsewidth) determines the amount of fuel delivered. Fuel is supplied to the injectors by a high pressure electric fuel pump, controlled by the EEC. Fuel supply pressure is modulated by a regulator sensing MAP to maintain the pressure differential across the injectors constant. A group of 2,3 or 4 injectors are energized simultaneously by a single output port of the processor. If only one output port is used, all injectors are energized every PIPOUT pips. If two output ports are used, they can be energized individually in an alternating manner, with each port being energized PIPOUT/NUMOUT pips after the other port, or simultaneously every PIPOUT pips. The calibration parameter OUTINJ selects the injection scheme. Except while in CRANK mode, until the #1 cylinder is identified from a Signature Pip System, or if a Signature Pip System is not used, the injectors are energized on the rising edge of PIP. If it is desired to optimize the fuel delivery timing relative to intake valve opening, the injectors must be grouped into banks with each bank containing cylinders in consecutive spark firing order. Bank "A" must contain cylinder #1. This provides a time (or window) during the engine cycle when all intake valves for a given injector bank are closed. After synchronization, the injections can be delayed to occur after the rising edge of the reference (signature) pip signal. CIBETA (in pip periods) is the delay. CIBETA should be calibrated to cause the injection during the closed valve window. Except while in CRANK mode, the amount of air entering the engine is divided by the desired A/F ratio to obtain the desired fuel flow. The desired A/F ratio is expressed in terms of lambda, where lambda is the desired A/F ratio divided by 14.64, the chemically correct ratio for complete combustion (stoichiometry). This desired fuel flow is then converted to a pulsewidth for the injectors, based on the engine RPM, number of cylinders, injector flow characteristics, number of injectors and the desired injection frequency. In CRANK mode, since the airflow measurement is unreliable, the injector pulsewidth is based on ECT, ACT, MAP and elapsed time in CRANK. Also, to maximize the voltage available to activate the injectors, they are energized on PIP Falling Edges. 6-2 FUEL STRATEGY, OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The strategy has the ability to modify the fuel pulsewidth to account for intake manifold wall wetting (TRANSIENT FUEL), injector flow reduction due to high temperatures (HICOMP/A0COR), or while operating in UNDERSPEED mode. The pulsewidth is also modulated during idle to stabilize idle RPM on Speed Density systems (ISCMOD). The fuel can also be turned off during decelerations (DFSO). Asynchronous with the main pulses, additional pulses can be issued to account for the manifold filling effect during throttle openings (AEFUEL). The strategy also has the ability to adjust the fuel pulsewidth just prior to energizing the injectors. The base pulsewidth is calculated in the background sequence, using the then available MAP value. It may be a significant time period before that pulsewidth is actually used, and MAP (and airflow) may have changed. MAP is updated in the foreground on PIP up edges prior to performing the fuel logic. For small changes in MAP, airflow can be approximated as a linear function of MAP. Therefore, a more accurate fuel pulsewidth can be obtained by adjusting the pulsewidth by the ratio of the most current MAP value to the value used to calculate airflow. This technique is called "Foreground Fuel". 6-3 FUEL STRATEGY, OVERVIEW - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL MODE DESCRIPTION The purpose of the FUEL_MODE module is to determine the fuel control mode (Open Loop/Closed Loop) and the value of LAMBSE. The fuel control strategy consists of 3 mutually exclusive modes: OPEN LOOP (OLFLG = 1) CLOSED LOOP (OLFLG = 0) SELF TEST OPEN LOOP (OLFLG = 1) OPEN LOOP MODE During open loop operation, the computer calculates the injector fuel pulsewidths required to provide a pre-determined A/F ratio or lambda value. The desired lambda value (LAMBSE) can vary with engine operating conditions and is calibration dependent. CLOSED LOOP MODE During closed loop operation, the computer ramps the desired lambda value (LAMBSE) in a limit cycle manner about stoichiometry. Using the EGO (Exhaust Gas Oxygen) sensor, the computer increases or decreases LAMBSE at a calculated rate of change. The rate at which LAMBSE changes is calibration dependent. SELF TEST OPEN LOOP MODE During Self Test, the computer calculates lambda values (LAMBSEL, LAMBSER) that will exercise the fuel, EGO, and thermactor systems. These calculations are done in Self Test, outside of "Base Fuel Strategy" (See the SELF TEST SECTION). 6-4 FUEL STRATEGY, ACCELERATION ENRICHMENT - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ACCELERATION ENRICHMENT (Called from SOFTWARE TAR routine which is done in the CONVRT module) OVERVIEW Whenever the rate of change of throttle angle exceeds a certain value additional injection pulses are delivered during throttle opening transients until the manifold filling effect is completed (MAP stops increasing). These pulses are added to the normal pulse train to provide Acceleration Enrichment (AE). AEFUEL = The acceleration enrichment desired fuel flow rate, lb/hr The AE pulse period (AEPP) is controlled by FN332 which adds pulses at a rate determined by the desired AE fuel flow (AEFUEL). The duration of each AE pulse is given by AEPW. AEPW is then used to update the DOL summer register FUEL_SUM_TKS. NOTE: The "MINPW" minimum pulsewidth clip is only applied to FUELPW, the main fuel pulsewidth. The clip does not apply to AEPW. Since AEPW is determined by the AEFUEL and AE pulse period calibration, it is expected that the developer will not request AE pulses in the non-linear injector range. ADDITIONAL REQUIREMENTS All injectors are energized together when delivering AE pulses. AE pulses are asynchronous to normal fuel pulsewidths. If a fuel pulse is not in progress when an AE pulse is required, the AE pulse is sent immediately. In this case, the injector offset (FN367) is added to the AE pulsewidth calculation (AEPW). If a normal fuel pulsewidth is in progress when an AE pulse is required, the AE pulse is added to the base pulse for that injector. In this case, the injector offset (FN367) is not added to the AE pulsewidth calculation (AEPW) (it is done once in the normal pulsewidth calculation). For throttle angle rates of change below that of the first column of the TAE table (AETAR), TAE is set to zero. AE pulses are enabled during run and underspeed modes only. The AE fuel is turned off by setting TAR equal to zero in the S/W TAR logic. See SOFTWARE TAR CALCULATION in the System Equations Chapter. 6-5 FUEL STRATEGY, ACCELERATION ENRICHMENT - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ACT = Air charge temperature, degrees F. - A0COR = Corrected fuel flow rate of injectors, lb/sec (see Fuel chapter). - BP = Barometric pressure, inches Hg. - ECT = Engine coolant temperature, degrees F. - FUEL_SUM_TKS = Register for DOL summer, ticks. - MAP = Manifold absolute pressure, inches Hg. - NBAR = Rolling average RPM. - RATCH = Kicker off lowest filtered TP, counts. - TAR = Throttle Angle Rate, deg/sec. - TLSPAT = Torque limiting strategy injection pattern. - TP = Throttle position, counts. - VBAT = Battery voltage, volts. Bit Flags: - CRKFLG = Flag indicating status of engine mode. Calibration Constants: - AEM = ECT/ACT weighting factor, unitless. - AETAR = TAR above which AE may be enabled. - FN019A(TAR) = x-axis input to FN1303. - FN020(FRCTAE * ACT + (1-FRCTAE) * ECT) = y-axis input to FN1303. - FN1303(TAR,TEMP) = Desired AE fuel flow, lbm/hr. - FN324(MAP) = Accel enrichment fuel flow multiplier, unitless. - FN331A(TP-RATCH) = Accel enrichment fuel flow multiplier, unitless. - FN332(AEFUEL) = Accel enrichment pulse period, seconds. - FN378(BP) = Accel enrichment fuel flow multiplier, unitless. - FN379(NBAR) = Accel enrichment fuel flow multiplier, unitless. - FN367(VBAT) = Injector offset, millisec. 6-6 FUEL STRATEGY, ACCELERATION ENRICHMENT - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - FRCTAE = ACT to ECT proportioning factor, unitless. - INJOUT = Number oof injectors fired by each output port. - NUMOUT = Number of injector output ports, unitless. - stcf = Seconds to clock ticks conversion factor, ticks/second. OUTPUTS Registers: - AEFUEL = The acceleration enrichment desired fuel flow rate, lb/hr. - AEPP = The AE pulse period as defined by FN332, sec. - AEPW = Acceleration Enrichment Pulsewidth, ticks. - FUEL_SUM_TKS = Register for DOL summer, ticks. 6-7 FUEL STRATEGY, ACCELERATION ENRICHMENT - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_AE_COM5 AE ENABLE LOGIC CRKFLG = 0 -------------| (RUN/UNDERSPEED) | |AND -| Enable AE TAR > AETAR ------------| | AEFUEL = AEM * FN1303 * FN331A * FN378 | | * FN379 * FN324 TLSPAT = 65535 ---------| | AEPP = FN332(AEFUEL) | AEPW = [ AEFUEL * FN332 / ( NUMOUT | * INJOUT * 3600 * A0COR ) | + FN367 / 1000 ] * stcf | FUEL_SUM_TKS = FUEL_SUM_TKS + AEPW | | --- ELSE --- | | Disable AE | AEFUEL = 0 | AEPW = 0 | AEPP = 0 | FUEL_SUM_TKS = 0 6-8 FUEL STRATEGY, WARM EGO LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL WARM EGO LOGIC OVERVIEW The Warm EGO Logic determines if the EGO sensor is warm enough to enter Closed Loop control. Time since start-up and coolant temperature at start-up are used to determine if the sensor is warm. The output from the logic is the flag, 'WRMEGO'. DEFINITIONS INPUTS Registers: - ATMR1 = Time since start (time since exiting crank mode), sec. - ATMR2 = Time since ECT became greater than TEMPFB, sec. - ECT = Engine Coolant Temperature, degrees F. - EGOSSS = Number of EGO switches since start-up. - MFAMUL = MFA table ramp-in Multiplier, unitless. Bit Flags: - CRKFLG = Flag indicating engine mode; 1 -> cranking, 0 -> run or underspeed mode. - FLG_ECTSTABLQ = ECT stabilized flag; 1 -> ECT stabilized, use FN1360. - MPGFLG = Flag that indicates whether in Fuel Economy mode; 1 -> In Fuel Economy mode, 0 -> Not in Fuel Economy mode. - SWTFL = EGO switch flag; 0 -> no EGO switch, 1 -> EGO switch this background loop. Calibration Constants: - CTHIGH = Hot start engine coolant temperature, deg F. - CTLOW = Cold start engine coolant temperature, deg F. - ECTSTABL = Minimum ECT to use stabilized engine open loop fuel table FN1360. - ECTSTHYS = Hysteresis for ECTSTABL. This value should be larger than the drop in ECT when the thermostat opens on a 0 degree cold warm-up. - MFARMP = MFAMUL ramp increment when ramping into MPG table. MFARMP is added every background loop. - OPCLT1 = Cold start closed loop delay, seconds. 6-9 FUEL STRATEGY, WARM EGO LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - OPCLT2 = Mid-ambient start closed loop delay, seconds. - OPCLT3 = Hot start closed loop delay time, seconds. - TCSTRT = ECT at start-up. OUTPUTS Registers: - MFAMUL = MFA table ramp-in Multiplier, unitless. Bit Flags: - FFULFG = Foreground fuel flag; 1 -> Compute fuel pulsewidth in foreground using latest computed manifold absolute pressure, 0 -> otherwise use background fuel pulsewidth. - WRMEGO = Flag that is set equal to 1 if the EGO sensor is warm and reset to zero if the sensor has cooled off. PROCESS STRATEGY MODULE: FUEL_WRMEGO_COM3 CRKFLG = 1 -----------------------------| WRMEGO = 0 | FFULFG = 0 | Exit FUEL_MODE | | --- ELSE --- | | Continue with FUEL_MODE | and LAMBSE DETERMINATION EGOSSS LOGIC SWTFL = 1 ------------------------------| Increment EGOSSS (EGO switch) | Clip at 255 | | --- ELSE --- | | Freeze EGOSSS 6-10 FUEL STRATEGY, WARM EGO LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL WRMEGO LOGIC TCSTRT >= CTHIGH -----------| |AND -| ATMR1 >= OPCLT3 ------------| | | CTLOW < TCSTRT < CTHIGH ----| | |AND -|OR --| WRMEGO = 1 ATMR1 >= OPCLT2 ------------| | | | | --- ELSE --- TCSTRT <= CTLOW ------------| | | |AND -| | WRMEGO = 0 ATMR2 >= OPCLT1 ------------| STABILIZED ECT FLIP/FLOP LOGIC (FLG_ECTSTABLQ) ECT >= ECTSTABL ------------------|S Q--| FLG_ECTSTABLQ = 1 | | (ECT stabilized) ECT < ECTSTABL - ECTSTHYS --------|C | | --- ELSE --- | | FLG_ECTSTABLQ = 0 | (cold engine) MFAMUL LOGIC (MFAMUL ramps LAMBSE to the MPG mode table FN1328) MPGFLG = 0 -----------------------------| MFAMUL = 0 | | --- ELSE --- | | MFAMUL = MFAMUL + MFARMP | Clip MFAMUL to 1.0 as a maximum 6-11 FUEL STRATEGY, LAMMUL RESET LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LAMMUL RESET LOGIC OVERVIEW LAMMUL provides a means to adjust LAMBSE (rich or lean) momentarily on transmission engagements while in Open Loop. LAMMUL and FN371 have a range of 0 through 1.99. The LAMMUL RESET and RAMP BACK logic are done both in Open Loop and Closed Loop fuel. LAMMUL, however is only applies in Open Loop fuel. DEFINITIONS INPUTS Registers: - LAMMUL = Fuel multiplier for Neutral-to-Drive transitions used to prevent cold engine stalls following transmission engagement. - MULTMR = Time since incrementing LAMMUL, sec. Bit Flags: - ALT_CAL_FLG = Flag to indicate use of alternate calibration. - DNDSUP = Delayed Neutral/Drive flag; 0 -> neutral, 1 -> drive. - NEUFLG = Neutral/Drive transition occurred. Calibration Constants: - FN371 = Initial LAMMUL as a function of ECT. - FN371_ALT = Alternative FN371. - MULTM = Minimum time interval incrementing LAMMUL. - TRLOAD = Transmission load switch. OUTPUTS Registers: - LAMMUL = Fuel multiplier for Neutral-to-Drive transitions used to prevent cold engine stalls following transmission engagement. 6-12 FUEL STRATEGY, LAMMUL RESET LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_LAMMUL_COM3 ALT_CAL_FLG = 1 ------------------------| fn371 = FN371_ALT(ECT) | | --- ELSE --- | | fn371 = FN371(ECT) TRLOAD <= 3 ----------------------------| No LAMMUL RESET (manual transmission) | No change to LAMMUL | No change to NEUFLG | | --- ELSE --- DNDSUP = 1 -----------------------| | (transmission in gear) | | |AND -| LAMMUL = fn371(ECT) NEUFLG = 1 -----------------------| | (LAMMUL reset) (transition from neutral) | NEUFLG = 0 | (N/D fuel enrichment) | | --- ELSE --- | DNDSUP = 0 -----------------------------| NEUFLG = 1 (transmission in neutral) LAMMUL RAMP BACK LOGIC MULTMR >= MULTM ------------------------| LAMMUL = LAMMUL + .0039 (free running timer) | Clip at .996 maximum | MULTMR = 0 6-13 FUEL STRATEGY, OPEN LOOP FLAG DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OPEN LOOP FLAG DETERMINATION OVERVIEW This module determines the state of the Open Loop Flag, FLG_OPEN_LOOP. DEFINITIONS INPUTS Registers: - APT = At Part Throttle; -1 -> Closed throttle, 0 -> Part throttle, 1 -> Wide Open throttle. - APTMR = Timer to limit time in close loop fuel control when at Wide Open Throttle. - BIAS = A/F biasing term: FN1355(N,MAP). Units are lambdas. - EGO_CNT_IDLE = Number of EGO switches which have occurred since entering Idle Fuel Modulation. - IDLTMR = Time since entering Idle mode, seconds. IDLTMR is defined in the TIMER Chapter. - LAMAVE = Average LAMBSE between EGO switches. - MAP = Manifold Absolute Pressure, inches Hg. - N = RPM. - TP_REL = Relative TP (TP - RATCH). - XAPT = Time elapse afterwhich you leave Closed Loop at Wide Open Throttle, to return to Open Loop. Bit Flags: - CHKAIR = Thermactor forced open loop flag; 0 -> thermactor logic forcing open loop, 1 -> closed loop permitted. - DFSFLG = Indicates decel fuel shut off. - MPGFLG = Flag that indicates whether in Fuel Economy mode; 1 -> In Fuel Economy mode, 0 -> Not in Fuel Economy mode. - OFMFLG = ETV over-current monitor failure flag: 0 -> ETV O.K.; 1 -> ETV failure mode. - TLS_NV_FLG = Engine speed/Vehicle speed limiting flag; 0 -> not limiting speed, 1 -> limiting speed. 6-14 FUEL STRATEGY, OPEN LOOP FLAG DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Calibration Constants: - EGO_IDLE = Number of EGO switches required to enter Open Loop Fuel at extended idles. - FN311 = Minimum TP_REL required to force open loop. - FN1360 = Stabilized open loop fuel table, an 8 x 10 table of lambda values as a function of engine speed N, and load, MAPPA. FN070B is the normalizing function for N. FN072C is the normalizing function for MAPPA. - HLDTIM = Time delay before high load forced open loop, sec. - LAMDLT = LAMAVE delta to allow open loop fuel. - LAMRHYS = Hysteresis for LAMRICH. - LAMRICH = FN1360 Lambda value below which enrichment is requested. - LMAP = Minimum MAP for open loop decels, inches Hg. - LOMAPH = Hysteresis for LMAP, inches Hg. - MPG_CL_SW = MPG mode closed loop switch; 1 -> operate in closed loop, 0 -> operate in open loop. - OLITD1 = Time delay to go open loop at idle, seconds. - T70LSW = 7.0L thermactor application switch. - TP_HYS_OL = TP_REL hysteresis for operation in open loop. OUTPUTS Bit Flags: - FLG_OPEN_LOOP = Open Loop Fuel flag; 1 -> Open Loop fuel, 0 -> Closed Loop fuel may be permitted. - MPGTFG = MPG transition mode flag; 1 -> MPG mode exit into Closed Loop fuel. 6-15 FUEL STRATEGY, OPEN LOOP FLAG DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_OLFLG_COM7 FN1360 <= LAMRICH -------------|S Q -| (enrichment required) | | | | FN1360 > LAMRICH + LAMRHYS ----|C |AND -| (return to closed loop) | | | | HLTMR >= HLDTIM ---------------------| | (high load delay time) | | | | OPEN_TMR <= TIME_OL -----------------| | (O.K. to remain in open loop; not time | to adaptive or force purge control) | | MAP < LMAP - LOMAPH -----------------|S Q -| (decel load) | | | | MAP >= LMAP -------------------------|C | | APT = 1 -----------------------------| | |AND -|OR --| FLG_OPEN_LOOP = 1 APTMR >= XAPT -----------------------| | | (open loop conditions | | met) MPG_CL_SW = 0 -----------------------| | | MPGTFG = 0 |AND -| | Stop MPG mode fuel ramp MPGFLG = 1 --------------------------| | | (MPG mode) | | --- ELSE --- | | DFSFLG = 1 --------------------------------| | Check to see if EGO sensor (decel fuel shutoff) | | ready or fuel ramp in | | progress IDLTMR > OLITD1 ---------------------| | | FLG_OPEN_LOOP = 0 (idle) | | | (closed loop operation | | | possible) EGO_CNT_IDLE >= EGO_IDLE ------------|AND -| | | |1.0 + BIAS - LAMAVE| <= LAMDLT -----| | | CHKAIR = 0 --------------------------| | (thermactor forced open loop) | | |AND -| T70LSW = 0 --------------------------| | (1 = 7.0L application; no thermactor | forced open loop) | | OFMFLG = 1 --------------------------------| (ETV sol. shorted to ground) | | TLS_NV_FLG = 1 ----------------------------| (vehicle/engine speed limiting) | | TP_REL > FN311(N) -------------------|S Q -| | TP_REL <= FN311(N) - TP_HYS_OL ------|C Where: BIAS = FN1355(N,MAP). 6-16 FUEL STRATEGY, CALCULATION OF LAMAVE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL CALCULATION OF LAMAVE OVERVIEW This module calculates the LAMBSE average to be used in Self Test to determine if the adaptive tables have reached their clip. The LAMBSE average, LAMAVE, is only calculated in Closed Loop. Also, it requires at least two EGO switches after entering Closed Loop to calculate an average. DEFINITIONS Registers: - LAMBSE = Desired Air/Fuel ratio. LAMBSE(N) = New LAMBSE. LAMBSE(O) = previously calculated LAMBSE. - LAM_OLD = Value of LAMBSE at previous EGO switch. Bit Flags: - OLFLG = Open Loop Fuel flag; 1 -> open loop, 0 -> closed loop possible. OUTPUTS Registers: - LAMAVE = Average LAMBSE between EGO switches. - LAM_OLD = See above. 6-17 FUEL STRATEGY, CALCULATION OF LAMAVE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_LAMAVE_COM2 OLFLG = 1 -----------------------------| LAM_OLD = 0 | LAMAVE = 1.0 | | Exit FUEL_LAMAVE_COM1 module EGO switch ----------------------| | OLFLG = 0 -----------------------|AND -| LAM_OLD = LAMBSE | | (not enough EGO switches LAM_OLD = 0 ---------------------| | since going Closed Loop | to calculate LAMAVE) | | --- ELSE --- | EGO switch ----------------------| | |AND -| LAMAVE = (LAM_OLD + LAMBSE) / 2 OLFLG = 0 -----------------------| | LAM_OLD = LAMBSE | (update LAM_OLD for next time) NOTE: LAMAVE and LAM_OLD are initialized to 1.0. 6-18 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OPEN LOOP LAMBSE CALCULATION OVERVIEW Due to the current design of the EGO sensor, Closed Loop operation about stoichiometry only can be utilized. In the future, Universal EGOs will be able to provide feedback at points either rich or lean of stoich. Closed loop operation is also required for adaptive fuel to "learn" the variabilities associated with production tolerances of airflow measuring and fuel metering devices. Given, however, that closed loop fuel is not always the appropriate mode of operation, the FUEL_MODE logic performs two functions: - determine whether open loop fuel is appropriate, and - schedule the optimum equivalence ratio (LAMBSE). Optimum Air/Fuel (A/F) ratio at any given engine speed-load is that which will develop the required torque with the lowest fuel consumption consistent with smooth reliable operation. This optimum A/F ratio is not constant but depends on many factors. The proper A/F ratio for each particular set of operating conditions is most conveniently viewed under the two headings, Stabilized and Cold Engine/Startup. Stabilized is taken to mean continuous operation with normal engine temperatures. Cold engine/startup includes starting and warming up or when the EGO sensor is not ready to switch. COLD/START-UP OPEN LOOP FUEL ENTRY CONDITIONS - WRMEGO = 0, EGO sensor may not be ready to switch or, - ECT < ECTSTABL, engine coolant temperature too cold and FLG_OPEN_LOOP = 1, standard open loop conditions met. (see Stabilized Open Loop entry condition below.) FUEL SCHEDULING - Fuel may be scheduled as a function of load, temperature and time since start. 6-19 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL STABILIZED ENGINE OPEN LOOP FUEL Mixture requirements for lowest fuel consumption can generally be adequately described as a function of engine load. Idle, extremely light loads or deceleration: - No useful work is being done at idle other than driving accessory loads, i.e. brake torque is zero. The lowest fuel consumption is that A/F which provides steady, reliable cylinder firing. Extremely light loads or decels at high RPMs may require A/F scheduling. This is because the mass of residual gas tends to be constant, therefore, at closed throttle/slight part throttle decels, the percentage of residual diluting the fresh charge increases, hence the need to enrichen the incoming charge. - During Closed Throttle, High RPM Decels, the fuel can be completely turned off to improve fuel economy and/or limit catalyst temperatures. See Decel Fuel Shut-off logic in this chapter. Medium loads, typical part throttle operation at road load: - Best economy is around 18:1 A/F ratio, however, this may lead to excessive highway NOx levels. Also, current catalyst technology makes use of the closed loop fuel limit cycle to maximize conversion efficiency. This, closed loop fuel operation is desirable from both an adaptive fuel and catalyst efficiency standpoint. Provisions are in place to schedule lean open loop operation during steady state cruise modes (MPG mode). Full load, typical W.O.T operation: - A rich A/F ratio is required to maximize the torque output of the engine during periods of high driver demand. Maximum torque output is about 13:1 A/F ratio (LBT). Best fuel economy is sacrificed in return for higher torque output. - Best economy at a given load is independent of RPM at least down to idle type loads, under conditions at which fuel distribution is good. Departures from best fuel economy may be required due to the following: - Poor distribution (usually a function of TP and RPM). - To reduce temperature of hot spots such as exhaust valves, spark plug points or piston crowns - that is, to assist cooling. 6-20 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL STABILIZED OPEN LOOP FUEL ENTRY CONDITIONS - WRMEGO = 1 - engine coolant hot and engine is stabilized, EGO sensor is ready to switch. - High Load enrichment required - scheduled as a function of speed/load. An open loop delay time is provided to prevent unnecessary enrichment during high load spikes such as during shifts. A second enrichment timer provides the ability to schedule fuel as a function of time in the enrichment mode to enhance durability in heavy truck applications. - Decel loads - either enrichment or enleanment can be scheduled as a function of speed/load. - Extended idle - the ability to go open loop for idle stability is provided as a function of time at idle. - Lean cruise mode uses a unique speed/load table to schedule open loop lambdas. - W.O.T. mode - open loop is automatically scheduled as a function of wide open throttle mode. - CHKAIR = 0 - thermactor air control can put upstream air into the exhaust manifold ahead of the EGO sensor causing the EGO to always read lean. Open loop is therefore required. - Lack of EGO switching requires the scheduling of open loop operation. - Decel Fuel Shutoff is an open loop state. FUEL SCHEDULING - Fuel may be scheduled as a function of load, RPM, temperature and time at high load. SPECIAL EXIT CONDITIONS - If MPG mode or Decel Fuel Shut-Off logic had previously dictated Open Loop control, and that mode is no longer desired, special logic maintains Open Loop control and decrements LAMBSE to 1.0 before allowing closed loop control. 6-21 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - APT = At Part Throttle; -1 -> Closed throttle, 0 -> Part throttle, 1 -> Wide Open throttle. - APTMR = Timer to limit time in close loop fuel control when at Wide Open Throttle. - ATMR1 = Time since start (time since exiting crank mode), sec. - BIAS = A/F biasing term: FN1355(N,MAP). Units are LAMBDAS. - ECT = Engine coolant temperature. - EGOSSS = Number of EGO switches since start-up. - EGOSW_OL_CTR = Number of EGO switches in closed loop; used to determine when o.k. to return to open loop. - LAMAVE = Average of last two LAMBSE values. - LAMBSE = Desired ratiometric air/fuel ratio. - LAMMUL = Fuel multiplier for Neutral-to-Drive transitions used to prevent cold engine stalls following transmission engagement. - MAPPA = MAP/BP, inches of Hg. - MFAMUL = MFA table ramp-in Multiplier, unitless. - N = Engine speed, rpm. - PPCTR = PIP counter; updated at PIP rising edge before injector pulsewidth is calculated and output. Bit Flags: - ALT_CAL_FLG = Flag to indicate use of alternate calibration. - DNDSUP = Delayed Neutral/Drive flag; 0 -> neutral, 1 -> drive. - CLFLG = Closed Loop Flag; 0 -> open loop, 1 -> closed loop. - FLG_ECTSTABLQ = ECT stabilized flag; 1 -> ECT stabilized, use FN1360. - FLG_NOT_ADP = Adaptive enabled within an act and ect range. - FLG_OPEN_LOOP = Open Loop Fuel flag; 1 -> Open Loop fuel, 0 -> Closed Loop fuel may be permitted. - ISCFLG = ISC mode flag; 1 -> RPM control mode. - LESFLG = Lack of EGO switching flag; 0 -> EGO switching, 1 -> EGO did not switch for LESTIM seconds. 6-22 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - MPGFLG = Flag that indicates whether in Fuel Economy mode; 1 -> In Fuel Economy mode, 0 -> Not in Fuel Economy mode. - MPGTFG = MPG transition mode flag; 1 -> MPG mode exit into Closed Loop fuel. - OLFLG = Open Loop fuel flag; 1 -> open loop fuel, 0 -> closed loop fuel. - SWTFL = EGO switched flag. - WOTTMR = Time of WOT. - WRMEGO = Flag that is set equal to 1 if the EGO sensor is warm and reset to zero if the sensor has cooled off. 6-23 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Calibration Constants: - EGOCL1 = Number of EGO switches required to enter Closed Loop. - DFSLAM = Relative LAMBSE value to exit decel fuel shut-off. - EGO_CNT_OL = Number of EGO switches required in closed loop to return to open loop control. - FN301(N) = Multiplier for closed throttle as a function of engine speed N. - FN303(N) = Multiplier for WOT as a function of engine speed N. - FN310(WOTTMR) = WOT fuel multiplier as a function of time in WOT mode. WOTTMR is a count up/count down timer to prevent resets during normal shifts. FN310 is used only within a WOTRPL and WOTRPH RPM range. - FN325(ECT) = Multiplier as a function of ECT for FN1360. - FN1325L = LTMTBL learning/use control table. - FN1328 = MPG fuel table, lambdas. It is a 10 x 8 table of fuel economy open loop lambda values as a function of N and MAPPA. - FN1360 = Stabilized open loop fuel table, an 8 x 10 table of lambda values as a function of engine speed N, and load, MAPPA. FN070B is the normalizing function for N. FN072C is the normalizing function for MAPPA. - FN1361 = Start-up fuel table = an 8 x 10 table of lambda values as a function of [FRCSFT * ACT + (1 - FRCSFT) * ECT] and MAPPA. FN022A is the temperature normalizing function. FN018A is the time normalizing function. - FN1362 = Base fuel table = an 8 x 10 table of lambda values as a function of [FRCBFT 8 ACT + (1 - FRCBFT) * ECT] and MAPPA. FN022A is the temperature normalizing function. - FN1362 = Alternatice FN1362. - LAMDLT_OL = LAMAVE DELTA to allow return to open loop fuel control. - LAMRICH = FN1360 Lambda value below which enrichment is requested. - MPG_CL_SW = MPG mode closed loop switch; 1 -> operate in closed loop, 0 -> operate in open loop. - MPGDEC = Lambse decrement when exiting MPG mode. - OLIDRV = Drive Open Loop Idle Fuel Multiplier. - OLINEUT = Neutral Open Loop Idle Fuel Multiplier. - OLMCL = Open loop fuel multiplier for development only. - PIPNUM = Number of PIPs for DFSO exit fuel ramp. 6-24 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - TRLOAD = Transmission load switch. - WOTRPH = Maximum RPM to use FN310 for WOT enleanment. - WOTRPL = Minimum RPM to use FN310 for WOT enleanment. Set to WOTRPL to 10,000 RPM to disable use of FN310. - XAPT = Time elapse afterwhich you leave Closed Loop at Wide Open Throttle, to return to Open Loop. - XMAPPA = Calibratable MAPPA value above which APTMR is enabled. OUTPUTS Registers: - APTMR = See above. - EGOSW_OL_CTR = See above. - LAMBSE = Desired air/fuel ratio. - OPEN_TMR = TIME IN OPEN LOOP, SECONDS. Bit Flags: - ACCUM = Accumulator for closed loop LAMBSE ramp increments. Used for jumpback when TSLEGO <= transport lag. - CLFLG = See above. - OLFLG = See above. - MPGTFG = MPG transition mode flag; 1 -> MPG mode exit into Closed Loop fuel. 6-25 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_OL_LAMBSE_COM3 FINAL FUEL MODE DETERMINATION (OLFLG/CLFLG) AND OPEN LOOP LAMBSE CALCULATION ALT_CAL_FLG = 1 ---------------------| fn1362 = FN1362_ALT(TEMP,MAPPA) | | --- ELSE --- | | fn1362 = FN1362(TEMP,MAPPA) MPGFLG = 1 --------------------| |AND -| LAMBSE = 1 + [FN1328(N,MAPPA) * MPG_CL_SW = 0 -----------------| | (MFAMUL)] | OLFLG = 1 | CLFLG = 0 | ACCUM = 0 | (lean cruise mode) | | --- ELSE --- MPGTFG = 1 --------------------| | (exiting MPG mode) | | |AND -| LAMBSE = LAMBSE - MPGDEC MPG_CL_SW = 0 -----------------| | Do: MPGTFG RESET LOGIC | OLFLG = 1 | CLFLG = 0 | ACCUM = 0 | (lean cruise mode exit into | closed loop fuel (ramp fuel)) | | --- ELSE --- PPCTR < PIPNUM ----------------| | (decel fuel shut-off) | | |AND -| LAMBSE = 1 + DFSLAM - FLG_OPEN_LOOP = 0 -------------| | [(PPCTR / PIPNUM) (closed loop conditions met) | * DFSLAM] | OLFLG = 1 | CLFLG = 0 | ACCUM = 0 | (decel fuel shut-off exit into | closed loop fuel (ramp fuel)) | | --- ELSE --- (continued on next page) 6-26 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL (continued from previous page) WRMEGO = 0 --------------------| | (cold EGO) | | | | FLG_OPEN_LOOP = 1 -| | | (open loop req'd) | |OR --| Do: 'C' MULTIPLIER LOGIC | | | LAMBSE = [fn1362(TEMP,MAPPA) - EGOSSS < EGOCL1 ---|OR --| | | FN1361(TEMP,ATMR1)] * C * (not enough EGO | | | | LAMMUL * OLMCL switches) | | | | OLFLG = 1 | |AND -| | CLFLG = 0 LESFLG = 1 --------| | | ACCUM = 0 (lack of EGO | | (cold engine/start-up fuel tables) switching) | | | | FLG_ECTSTABLO = 0 -------| | (ECT cold) | | --- ELSE --- WRMEGO = 1 --------------------| | (warm EGO) | | |AND -| Do: 'C' MULTIPLIER LOGIC FLG_OPEN_LOOP = 1 -------| | | LAMBSE = FN1360(N,MAPPA) * (open Loop required) | | | FN325(ECT) * C * | | | LAMMUL * OLMCL EGOSSS < EGOCL1 ---------|OR --| | OLFLG = 1 (not enough EGO | | CLFLG = 0 switches) | | ACCUM = 0 | | (stabilized engine fuel table) LESFLG = 1 --------------| | (lack of EGO switching) | | --- ELSE --- | | Do: CLOSED LOOP LAMBSE CALCULATION | OLFLG = 0 | CLFLG = 1 | (closed loop fuel) 6-27 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Compute OPEN_TMR to determine if conditions exist to return to open loop: FN1360 <= LAMRICH -------------------| | CLFLG = 1 ---------------------------| | EGOSW_OL_CTR >= EGO_CNT_OL ----------|AND -| | | |1.0 + BIAS - LAMAVE| <= LAMDLT_OL --| | | FN1325L < 0 -------------------------------| (not in an adaptable area; forced |OR --| OPEN_TMR = 0 adaptive not required) | | | | ISCFLG = 1 --------------------------------| | (at idle; forced adaptive not required) | | | | APTMR >= XAPT -----------------------------| | | | FLG_NOT_ADP = 0 ---------------------------| | | --- ELSE --- | CLFLG = 0 ---------------------------------------| Increment OPEN_TMR. | | --- ELSE --- | | Freeze OPEN_TMR. ACT > AFACT1 ------------------------------| | ACT < AFACT2 ------------------------------| |AND -| FLG_NOT_ADP = 1 ECT <= AFECT2 -----------------------------| | | | ECT >= AFECT1 -----------------------------| | | --- ELSE --- | | FLG_NOT_ADP = 0 6-28 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Increment EGOSW_OL_CTR when EGO switches during closed loop: CLFLG = 1 ---------------------------------| |AND -| Increment EGOSW_OL_CTR. SWTFL = 1 ---------------------------------| | (EGO switched) | | --- ELSE --- | CLFLG = 0 ---------------------------------------| EGOSW_OL_CTR = 0 Increment APTMR to limit time in close loop when at Wide Open Throttle. MAPPA >= XMAPPA ---------------------------| |AND -| increment APTMR OLFLG = 0 ---------------------------------| | (closed loop) | --- ELSE --- | | APTMR = 0 GLOBAL LAMBSE CLIP always ------------------------------------------| Clip LAMBSE to 1.999969 as | a maximum and 0.0000305 | as a minimum 6-29 FUEL STRATEGY, OPEN LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL "C" MULTIPLIER LOGIC DNDSUP = 1 --------------| (in drive) | |OR --| TRLOAD <= 3 -------------| | (manual trans) | | APT = -1 ----------------------|AND -| "C" = FN301(N) | | (closed throttle decel/idle, FN1360 WRMEGO = 0 --------------| | | not available) (cold EGO) | | | |OR --| | FLG_ECTSTABLQ = 0 -------| | (ECT cold) | | --- ELSE --- DNDSUP = 0 --------------------| | (in neutral) | | |AND -| "C" = OLINEUT APT = -1 ----------------------| | (neutral idle) (closed throttle) | | --- ELSE --- DNDSUP = 1 --------------------| | (in drive) | | |AND -| "C" = OLIDRV APT = -1 ----------------------| | (drive idle) | | --- ELSE --- APT = 1 -----------------------| | |AND -| "C" = FN303(N) * FN310(WOTTMR) WOTRPL <= N <= WOTRPH ---------| | (wide open throttle) | | --- ELSE --- | APT = 1 -----------------------------| "C" = FN303(N) | (wide open throttle) | | --- ELSE --- | | "C" = 1 MPGTFG RESET LOGIC MPGTFG = 1 --------------------| |AND -| MPGTFG = 0 LAMBSE <= 1.0 -----------------| | (fuel ramp to stoic. is done) 6-30 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL CLOSED LOOP LAMBSE CALCULATION (Background software module CLFUEL, called from FUEL_MODE) OVERVIEW The goals of the closed loop strategy are: - add the capability of introducing A/F ratio biasing, - maximize the feedback limit cycle frequency for all bias values, and - maintain a simple calibration procedure to describe the closed loop limit cycle. The fuel flow is driven in a limit cycle manner about stoichiometry. Using the EGO (Exhaust Gas Oxygen) sensor, the computer increases or decreases the injector pulsewidths in a controlled manner. If the EGO reads rich, the pulsewidths will be decreased (made leaner) at a calculated rate. If the EGO reads lean, the pulsewidths will be increased (made richer) at a calculated rate. When an EGO switch occurs, an instantaneous change (or "jumpback") is made in the A/F ratio back towards stoichiometry. The jump is made relative to the A/F ratio (LAMBSE) value at the EGO switch. The limit cycle can be biased to operate on the average richer or leaner of stoichiometry. An example of the closed loop limit cycle is shown on the next page. 6-31 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL LIMIT CYCLE DESCRIPTION ---|-------------------* *-|- | ** ** | | * * * * | | * * * * | | * * * * | | * * * * | FN1354(N,MAP) * * RF * * (RF*T) OR (ACCUM) (PTPAMP) * * * * | - - - | - | - - - * - - - * - - - - - * - - - * | - - - - - - mean A/F | BIAS * * * * | ------|---|-----*---------*---------*---------*-|-------*-|-- stoc | | | * * * * | | | | * * * * | | | | * * RS * * (RS*T) OR (ACCUM) | | | * * * * | ---|---------|---------|---------* *-|- ||<-TSLEGO>| ***** NOTE ***** The direction of the bias is controlled by the sign of the bias value. If the bias term is negative, a rich bias is indicated. If the sign of the bias term is positive, a lean bias is indicated. **************** *********************** ***** WARNING ***** *************** It is imperative that an accurate value for the system transport delay be entered. An incorrect value will result in greatly reduced catalyst efficiencies due to excessively fast or slow ramp rates, incorrect jumpback amounts, etc. ************** ***** WARNING ***** *********************** 6-32 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Prior to calculating a new Closed Loop LAMBSE value, LAMBSE may be clipped to 1.0 maximum and/or multiplied by JMPMUL under the conditions listed below. LAMBSE is not reset in Open Loop fuel control because the value of LAMBSE is calculated using the Open Loop fuel logic. LAMBSE is reset in Closed Loop as follows: - when entering or exiting the filtered idle air mass region (FAM), - when changing load states within the filtered idle air mass region (FAM), and - any time a transition is made from Open Loop to Closed Loop fuel control. LAMBSE is always clipped to 1.0 as a maximum. The intent is to allow rich errors and to prevent lean errors, given that running rich does not cause any driveability concerns. CALIBRATION PHILOSOPHY Although appearing somewhat complicated, this closed loop algorithm has been designed to be easy to use. There are 3 tables which must be calibrated. They are: 1) limit cycle peak to peak amplitude; FN1354(N,MAP); a typical value is 0.034 lambdas (0.034 * 14.64 = 0.49776 A/F ratio) = PTPAMP 2) fuel system transport delay; FN1343(N,MAP); typical values have been 5 - 10 engine revolutions, but note earlier WARNING. 3) BIAS; FN1355(N,MAP) for closed throttle mode: a) a positive bias value is lean; a negative bias value is rich b) any calculated absolute value of BIAS/PTPAMP exceeding .2 is clipped to .2. This is done to avoid extremely long limit cycle periods. 6-33 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ACCUM = Accumulator for closed loop LAMBSE ramp increments. Used for jumpback when TSLEGO <= transport lag. - APT = Throttle mode flag; -1 -> Closed throttle, 0 -> Part throttle, 1 -> Wide-Open throttle. - BIAS = A/F biasing term: FN1355(N,MAP). Units are lambdas. - ISFLAG = Indication of engine load state at idle (See IDLE SPEED CONTROL Chapter); 0 -> Drive, 1 -> Drive and A/C clutch engaged, 2 -> Neutral, 3 -> Neutral and A/C clutch engaged. - ISLAST = Register which tracks the state of engine load from the previous background pass. Used in determining when it is necessary to increment the filtered air mass (FAM) and clip the C/L idle speed integrator to a minimum value. - JUMP = Amount of jumpback after an EGO switch, either ACCUM or based on table FN1343. - LAMBSE = Desired Air/Fuel ratio. LAMBSE(N) = New LAMBSE. LAMBSE(O) = previously calculated LAMBSE. - PTPAMP = Limit cycle peak to peak amplitude. - R = Ramp rate; can be set to either RF or RS. - RF = Fast ramp rate used on the side of stoichiometry that bias is desired: RF = FN1354(N,MAP) * FN372(|BIAS/PTPAMP|) * N/FN1343(N,MAP). Units are lambdas/second. - RS = Slow ramp rate used on the side of stoichiometry that bias is not desired: RS = FN1354(N,MAP) * (0.01660 - FN372(|BIAS/PTPAMP|)) * N/FN1343(N,MAP). Units are lambdas/second. - TDSEC = 60 * FN1343/N (temporary register). - TSLAMU = Time since the last LAMBSE update (1 background loop). - TSLEGO = Time since last EGO switch occurred, seconds. Bit Flags: - JMPFLG = LAMBSE reset flag. - OLFLG = Open Loop fuel flag; 1 -> Open Loop fuel, 0 -> Closed Loop fuel. - REFFLG = Indication of Idle Air Flow; 1 -> Idle Air Flow. 6-34 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Calibration Constants: - FN025 = MAP normalizing function for Bias, Peak-to-Peak and Transport Delay Tables. Input = MAP, Output = Table Entry Point. - FN372(|BIAS/PTPAMP|) = Ramp rate multiplier (not a calibration item) - provides correct multiplier to produce desired waveform; function of |BIAS/PTPAMP|. Units are minutes/sec. - FN1343(N,MAP) = System transport lag time; time delay from when a fuel change is made until the EGO sensor indicates this change. Units are REVS. X-input = FN039 normalized engine speed, RPM; Y-input = FN025 normalized manifold absolute pressure, MAP; output = transport delay, REVS. - FN1354(N,MAP) = Closed loop Peak-to-Peak amplitude: units are lambdas. X-input = FN039 normalized engine speed, RPM; Y-input = FN025 normalized manifold absolute pressure, MAP; output = Peak-to-Peak amplitude, PTPAMP. - FN1355(N,MAP) = Amount of BIAS from stoichiometry: X-input = FN039 normalized engine speed, RPM; Y-input = FN025 normalized manifold absolute pressure, MAP; output = BIAS from stoichiometry. - JMPMUL = FAM exit LAMBSE reset multipler. - LAMMAX = Maximum closed loop LAMBSE clip. - LAMMIN = Minimum closed loop LAMBSE clip. OUTPUTS Registers: - ACCUM = See above. - BIAS = See above. - JUMP = See above. - LAMBSE = See above. - R = See above. - TDSEC = See above. - TSLEGO = See above. Bit Flags: - JMPFLG = See above. - V_LAMJMP = Flag when 1 indcates base strategy caused a LAMBSE jump since last EGO switch. 6-35 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_CL_LAMBSE_COM3 LAMBSE RESET - LOAD STATE CHANGE APT = -1 --------------------------| (closed throttle) | | ISFLAG <> ISLAST ------------------|AND -| Clip LAMBSE to 1.0 as a (load state change) | | maximum | | TSLEGO = 0 LAMBSE > 1.0 ----------------------| | ACCUM = 0 | V_LAMJMP = 1 OPEN LOOP/CLOSED LOOP LAMBSE RESET Previous OLFLG = 1 ----------------| (last pass was open loop) | | Current OLFLG = 0 -----------------|AND -| Clip LAMBSE to 1.0 as a (current pass is closed loop) | | maximum | | TSLEGO = 0 LAMBSE > 1.0 ----------------------| | ACCUM = 0 | V_LAMJMP = 1 FAM ENTRY/EXIT LAMBSE RESET REFFLG = 1 ------------------------| | JMPFLG = 0 ------------------------|AND -| JMPFLG = 1 | | Clip LAMBSE to 1.0 as a LAMBSE > 1.0 ----------------------| | maximum | TSLEGO = 0 | ACCUM = 0 | (entering idle region) | V_LAMJMP = 1 | | --- ELSE --- REFFLG = 1 ------------------------| | |AND -| JMPFLG = 1 JMPFLG = 0 ------------------------| | | --- ELSE --- REFFLG = 0 ------------------------| | |AND -| JMPFLG = 0 JMPFLG = 1 ------------------------| | LAMBSE = LAMBSE * JMPMUL | (exiting idle region) | V_LAMJMP = 1 | | --- ELSE --- | | No change 6-36 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL CALCULATE PTPAMP, RF AND RS always ------------------------------| PTPAMP = FN1354(N,MAP) | RF = PTPAMP * FN372(|BIAS/PTPAMP|) * | N / FN1343(N,MAP) | RS = PTPAMP * (0.01660 - | FN372(|BIAS/PTPAMP|)) * | N / FN1343(N,MAP) RAMP RATE CALCULATIONS BASED ON BIAS AND EGO STATE BIAS = 0 ----------------------| (no bias) |AND -| LAMBSE(N) = LAMBSE(O) - | | RF * TSLAMU EGO IS LEAN -------------------| | ACCUM = ACCUM + RF * TSLAMU | (ramp in rich direction) | | --- ELSE --- BIAS = 0 ----------------------| | (no bias) |AND -| LAMBSE(N) = LAMBSE(O) + | | RF * TSLAMU EGO IS RICH -------------------| | ACCUM = ACCUM + RF * TSLAMU | (ramp in lean direction) | | --- ELSE --- BIAS > 0 ----------------------| | (lean bias) |AND -| LAMBSE(N) = LAMBSE(O) - | | RS * TSLAMU EGO IS LEAN -------------------| | ACCUM = ACCUM + RS * TSLAMU | (ramp in rich direction) | | --- ELSE --- BIAS > 0 ----------------------| | (lean bias) |AND -| LAMBSE(N) = LAMBSE(O) + | | RF * TSLAMU EGO IS RICH -------------------| | ACCUM = ACCUM + RF * TSLAMU | (ramp in lean direction) | | --- ELSE --- BIAS < 0 ----------------------| | (rich bias) |AND -| LAMBSE(N) = LAMBSE(O) - | | RF * TSLAMU EGO IS LEAN -------------------| | ACCUM = ACCUM + RF * TSLAMU | (ramp in rich direction) | | --- ELSE --- BIAS < 0 ----------------------| | (rich bias) |AND -| LAMBSE(N) = LAMBSE(O) + | | RS * TSLAMU EGO IS RICH -------------------| | ACCUM = ACCUM + RS * TSLAMU | (ramp in lean direction) NOTE: TSLAMU is time since the last LAMBSE update (1 background loop). 6-37 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL JUMPBACK CALCULATIONS BASED ON BIAS AND EGO STATE BIAS = 0 ------------------------| (no bias) |AND -| LAMBSE(N) = LAMBSE(O) + JUMP | | R = RF EGO SWITCHED FROM LEAN TO RICH --| | ACCUM = 0 | (jumpback in lean direction) | TSLEGO = 0 | | --- ELSE --- BIAS = 0 ------------------------| | (no bias) |AND -| LAMBSE(N) = LAMBSE(O) - JUMP | | R = RF EGO SWITCHED FROM RICH TO LEAN --| | ACCUM = 0 | (jumpback in rich direction) | TSLEGO = 0 | | --- ELSE --- BIAS > 0 ------------------------| | (lean bias) |AND -| LAMBSE(N) = LAMBSE(O) + JUMP | | R = RS EGO SWITCHED FROM LEAN TO RICH --| | ACCUM = 0 | (jumpback in lean direction) | TSLEGO = 0 | | --- ELSE --- BIAS > 0 ------------------------| | (lean bias) |AND -| LAMBSE(N) = LAMBSE(O) - JUMP | | R = RF EGO SWITCHED FROM RICH TO LEAN --| | ACCUM = 0 | (jumpback in rich direction) | TSLEGO = 0 | | --- ELSE --- BIAS < 0 ------------------------| | (rich bias) |AND -| LAMBSE(N) = LAMBSE(O) + JUMP | | R = RF EGO SWITCHED FROM LEAN TO RICH --| | ACCUM = 0 | (jumpback in lean direction) | TSLEGO = 0 | | --- ELSE --- BIAS < 0 ------------------------| | (rich bias) |AND -| LAMBSE(N) = LAMBSE(O) - JUMP | | R = RS EGO SWITCHED FROM RICH TO LEAN --| | ACCUM = 0 | (jumpback in rich direction) | TSLEGO = 0 TSLEGO <= TDSEC -----------------------| JUMP = ACCUM (time since last EGO <= | transport lag) | --- ELSE --- | | JUMP = R * TDSEC 6-38 FUEL STRATEGY, CLOSED LOOP LAMBSE CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL APT = -1 ------------------------| |AND -| Clip LAMBSE to 1.0 as a maximum ISFLAG <> ISLAST ----------------| | | --- ELSE --- | | Clip LAMBSE to LAMMAX as a maximum always --------------------------------| Clip LAMBSE to LAMMIN as a | minimum 6-39 FUEL STRATEGY, DAC REGISTER CALCULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL DAC REGISTER CALCULATION (software module DACEQN, called from FUEL_MODE) OVERVIEW A special register, DSLMBS, has been added to assist in calibration development by increasing the resolution of LAMBSE for display purposes. DSLMBS is updated every time LAMBSE is updated, both Open & Closed Loop. DEFINITIONS INPUTS Registers: - LAMBSE = Desired ratiometric air/fuel ratio. OUTPUTS Registers: - DSLMBS = Special display version of LAMBSE. PROCESS STRATEGY MODULE: FUEL_DAC_REG_COM2 The value of DSLMBS is calculated as shown: DSLMBS = LAMBSE - 1.0 Because DSLMBS is a signed word quantity, a value of zero will be output as 5 volts. 6-40 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL ADAPTIVE FUEL LOGIC (Background software module ADAPT) OVERVIEW Fuel injected systems may exhibit vehicle to vehicle steady state A/F ratio errors due to normal variability in fuel system components. The adaptive fuel strategy attacks this problem by memorizing the characteristics of the individual fuel system being used. This memorized information is used to predict what the system will do based on past experience. The ability to predict fuel system behavior improves both open loop and closed loop fuel control. As an example, the memorized information can be used on cold starts to achieve better open loop fuel control before the EGO sensor reaches operating temperature. The chief benefit of the adaptive fuel strategy will be to reduce the effects of product variability in the field. The memorized or adaptive information is stored in table form in the Keep Alive Memory (KAM). KAM is continuously powered by the vehicle battery even when the vehicle is shut off. As a result, the table is not lost on vehicle shutdown. 6-41 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL ADAPTIVE FUEL TABLE The adaptive fuel table, LTMTBL, is a 2-dimensional array of learned fuel system corrections. Ideally, if LAMBSE = 1.0 and data from a mature adaptive fuel table is used, a stoichiometric A/F ratio would result at whatever speed-load point adaptive learning had taken place. Present table size is 10 (rows) x 10 (columns) plus 6 special idle adaptive cells, for a total of 106 cells. The total learned fuel system correction is called KAMREF where KAMREF = 0.5 + LTMTBLrc. During adaptive learning, only the LTMTBL cells are modified. Therefore, the range of the KAMREF multiplier is (0.5 + 0.0) to (0.5 + 1.0) or 0.5 to 1.5. The range of the LTMTBL cells can be further restricted by use of the calibration parameter clips, MINADP and MAXADP. The precise location where KAMREF is used is shown in the FUELPW equation. If KAM fails the KAM validation test (described later), all LTMTBL cells are initialized to 0.5 or 80 (HEX) resulting in a value of KAMREF = 0.5 + 0.5 = 1.0. When allowed, updates to LTMTBL are statistically distributed in the vicinity of the speed-load operating point except in the case of the idle cells. Only the current idle cell is updated, no statistical distribution is done. Data extracted from the table undergoes a 4 point linear interpolation. This is explained further under the FN1325L description. Note that idle cells do not undergo four point interpolation. Only the current idle cell is used. LTMTBL and FN1325L share the same normalizing functions. FN031 is the MAPOPE normalizing function. FN070L is the engine speed N normalizing function. The adaptive fuel table, LTMTBL, is shown on the next page. 6-42 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL ADAPTIVE FUEL TABLE (LTMTBL) LTMTBLrc CELLS special idle adaptive cells -----> |100 101 102 103 104 105 | 9 |90 91 92 93 94 95 96 97 98 99 | 8 |80 81 82 83 84 85 86 87 88 89 | 7 |70 71 72 73 74 75 76 77 78 79 | 6 |60 61 62 63 64 65 66 67 68 69 | 5 |50 51 52 53 54 55 56 57 58 59 | FN031 4 |40 41 42 43 44 45 46 47 48 49 NORMALIZED | ENGINE 3 |30 31 32 33 34 35 36 37 38 39 LOAD | (MAPOPE) 2 |20 21 22 23 24 25 26 27 28 29 | 1 |10 11 12 13 14 15 16 17 18 19 | 0 |00 01 02 03 04 05 06 07 08 09 --------------------------------------- 0 1 2 3 4 5 6 7 8 9 FN070L NORMALIZED ENGINE SPEED (N) 6-43 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL FN1325L DESCRIPTION FN1325L is an 11 (row) x 10 (column) table containing 1 cell corresponding to each cell in the adaptive fuel table LTMTBL. (The 11th row is used to reference the idle cells and is not accessible from FN031 which only goes from 0 to 9) The normalizing functions for FN1325L and LTMTBL are shared. FN031 is the MAPOPE normalizing function. FN070L is the engine speed N normalizing function. FN1325L is designed to do the following: - Identify LTMTBL cells where learning is allowed to occur. - Learning is allowed in any LTMTBLrc cell whose corresponding FN1325Lrc cell contains a value >= 0. Negative FN1325L cell values disallow learning in the corresponding LTMTBL cell. - Define a high confidence speed-load region that can be referenced from any other speed-load point. - This occurs whenever a negative value is entered into a FN1325L cell. The negative number serves as an offset to LTMTB00. If 1 of the 4 cells used by the 4 point linear interpolation LTMTBL table lookup routine contained -42, the cell value used by the interpolation routine for the cell that contained the -42 would be the value found in the LTMTBL cell located at the intersection of row 4 and column 2. In the extreme, if -42 was entered into every cell of FN1325Lrc except for the cell corresponding to LTMTB42, learning would be allowed only in cell LTMTB42 and the learned correction in LTMTB42 would be applied to all speed-load points (every cell referenced by the 4 point linear interpolation routine during the LTMTBL table lookup would point to cell LTMTB42). This calibration for FN1325L is shown on the next page. - Specify the values of LOPCT1 and LOPCT2 required to update an individual LTMTBL cell. - This is done by entering a value into FN1325L that is >= 0. The value entered represents 1/2 the required update value. A value of 20 entered would require LOPCT1 and/or LOPCT2 to be greater than 40 for an update to occur. 6-44 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL LTMTBL LEARNING/USE CONTROL TABLE (FN1325L) FN1325L CELLS special idle adaptive cells --> |-42 -42 -42 -42 -42 -42 | 9 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 8 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 7 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 6 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 5 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | FN031 4 |-42 -42 20 -42 -42 -42 -42 -42 -42 -42 NORMALIZED | ENGINE 3 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 LOAD | (MAPOPE) 2 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 1 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 | 0 |-42 -42 -42 -42 -42 -42 -42 -42 -42 -42 --------------------------------------- 0 1 2 3 4 5 6 7 8 9 FN070L NORMALIZED ENGINE SPEED (N) 6-45 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ACT = Air Charge Temperature, deg F. - ADPTMR = Adaptive Learning Enable Timer (see TIMER section). - AEFUEL = Acceleration enrichment fuel flow, lb/hr. - BIAS = A/F biasing term: FN1355(N,MAP). Units are lambdas. - CHKSUM = KAM word containing the sum of the LTMTBL contents. - ECT = Engine Coolant Temperature. - EFTR = EQUIL fuel transfer rate BIN 16 LBM/SEC. - EGOCNT = Number of EGO switches required before allowing updates to the Adaptive Fuel cell. - FUELPW = Fuel Pulsewidth. - KWUCTR = KAM Warm Up counter. Stores number of warm ups in KAM. Reset to zero if KAM is corrupted (battery disconnect, etc.). - LAMBSE = Desired air/fuel ratio. - LAMWIN = LAMBSE window outside which adaptive is enabled. - LSTROW = Last pass normalized row. - LTMTBL = Adaptive Fuel Table. - MAPOPE = MAP/ABS exhaust pressure. - N = Engine speed RPM. - PTPAMP = Limit cycle peak_to_peak amplitude - PURGDC = Canister Purge Duty Cycle. - RANNUM = Random numbers used to statistically distribute the corrections to the Adaptive Fuel Table among four adjacent cells. - TCSTRT = ECT at start-up. - UPRATE = KAM update rate. 6-46 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Bit Flags: - AFMFLG = ACT Failure flag set to 1 if the ACT fails range check. - CFMFLG = ECT Failure flag set to 1 if the ECT fails range check. - DFSFLG = Indicates decel fuel shut off. - DISABLE_ADAPT = Adaptive fuel disable flag; 1 -> disable adaptive fuel. - HCAMFG = Flag indicating the completion of Hi-Cam; 0 -> no desired engine speed adder exists, 1 -> an rpm adder above base idle is present. Flag is used in the ISC adaptive update routine to disable updates when HCAMFG = 1. - ISCFLG = ISC MODE Flag; 1 -> rpm control mode. - ISFLAG = Indication of engine load state at Idle (See ISC Chapter). - LIMIT_PURGE = Flag which indicates Purge Duty Cycle is being limited due to LAMBSE being clipped; 1 -> limited Purge. - MFMFLG = MAP Failure flag set to 1 if MAP sensor fails. - REFFLG = Indication of Idle Air Flow; 1 -> Idle Air Flow. - SWTFL = EGO switch flag; 0 -> no EGO switch, 1 -> EGO switch this background loop. - TFMFLG = TP Failure flag set to 1 if TP sensor fails range check. - WARM_UP = Engine Warm-up flag; 1 -> engine warmed-up. Calibration Constants: - ADAPTM = Adaptive learning enable time delay (seconds). - ADEFTR = Transient fuel threshold to update adaptive fuel. - ADEGCT = Number of EGO switches required to permit Adaptive Learning within the cell boundaries. - AELIM = Maximum acceleration enrichment fuel flow to allow adaptive learning, lb/hr. - AFACT1 = Minimum ACT to Update Adaptive Fuel Table, deg F. - AFACT2 = Maximum ACT to Update Adaptive Fuel Table, deg F. - AMPMUL = Multiplier to determine LAMWIN from PTPAMP. - DELAMB = Deadband (around LAMBSE = 1.0) within which loop counter values are not altered. - DELCOL = Calibration constant (normalized engine speed N) which provides the ability to lock out table updates under transient conditions; establishes an operating range (engine speed) within which the appropriate loop counter may be incremented. 6-47 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL - DELROW = Same function as DELCOL but for normalized load MAPOPE. - FAEGCT = Fast Adaptive EGO count. Number of EGO switches required to permit adaptive learning when KWUCTR < KWUCNT. Should be set to 0 to permit fast adaptive learning for the first few warm-up cycles. - FN031 = MAPOPE normalizing function used with both FN1325L and LTMTBL. - FN025 = MAP normalizing function for Bias, Peak-to-Peak and Transport Delay Tables. Input = MAP, Output = Table Entry Point. - FN039 = Engine Speed (N) normalizing function for FN1355. - FN070L = Normalizing function for N, used with FN1325L as well as LTMTBL. - FN1325Lrc = LTMTBL learning/use control table. - FN1355 (N,MAP) = Amount of BIAS from stoichiometry, units are lambdas. X-input = FN039 (Normalized engine speed, rpm). Y-input = FN025 (Normalized Manifold Absolute pressure, Inches Hg), Output = BIAS from stoichiometry, lambdas. - HCAMSW = Calibration switch which allows the developer to select how the adaptive fuel idle cells are to be used. If HCAMSW is set to 0, the adaptive fuel idle cells are used as soon as the filtered air mass region is entered (REFFLG = 1). If HCAMSW is set to 1, the adaptive fuel idle cells are used only when in the filtered air mass region and no rpm adder above base idle is present (HCAMFG = 0). This includes FN825A, FN825B, FN826, and BZZRPM. - KWUCNT = Maximum number of warm-up cycles to use fast adaptive EGO count. Should be set to approximately 3 to 5 warm-ups. - MAXADP = Maximum adaptive correction. - MINADP = Minimum adaptive correction. - MINPW = Minimum pulsewidth clip value. - RANMUL = Multiplier for random number generation. - VECT3 = Minimum coolant temperature, engine on. - VECT5 = Starting coolant temperature for warm-up counter. OUTPUTS Registers: - COLTBU = Column address of Adaptive cell to be updated, integer = FN070L + 0.5 + upper byte of RANNUM (where the upper byte of RANNUM is a random number ranging from -0.5 to 0.496). 6-48 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL - EGOCNT = See above. - FUELPW = See above. - KWUCTR = See above. - LAMWIN = See above. - LOPCT1 = See above. - LOPCT2 = See above. NOTE: A background loop occurs when the computer reaches the same point in the program after executing all other necessary instructions. - LSTCOL = Last pass normalized column. - LSTROW = See above. - LTMTBL = Adaptive Fuel Table. - RANNUM = See above. - ROWTBU = Row address of adaptive cell to be updated, integer = FN031 + 0.5 + lower byte of RANNUM (where the lower byte of RANNUM is a random number ranging from -0.5 to 0.496). - UPRATE = See above. Bit Flags: - DISABLE_ADAPT = Adaptive fuel disable flag; 1 -> disable adaptive fuel. - WARM_UP = Engine Warm-up flag; 1 -> engine warmed-up. 6-49 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_ADAPT_COM4 Calculate the random number to be used this background pass: always ------------------------------------| RANNUM = RANNUM * RANMUL + | RANMUL/4 | rancol = rannum_hi | = the high byte of the | low word of RANNUM | ranrow = rannum_lo | = the low byte of the low | word of RANNUM | RANNUM = the low word of RANNUM | (save for next pass) Calculate the cell to be updated this background pass: REFFLG = 1 --------------------------| | ISCFLG = 1 --------------------------|AND -| kamcol = ISFLAG | | COLTBU = ISFLAG HCAMFG = 0 --------------------| | | kamrow = 10 |OR --| | ROWTBU = 10 HCAMSW = 0 --------------------| | (special idle cells) | | --- ELSE --- | | kamcol = FN070L(N) | COLTBU = kamcol + 0.5 + rancol | kamrow = FN031(MAPOPE) | ROWTBU = kamrow + 0.5 + ranrow Calculate the DISABLE_ADAPT value: DFSFLG = 1 --------------------------------| DISABLE_ADAPT = 1 | | --- ELSE --- | FUELPW < MINPW ----------------------------| DISABLE_ADAPT = 1 | FUELPW = MINPW | | --- ELSE --- | | DISABLE_ADAPT = 0 Calculate EGO switch logic: SWTFL = 1 ---------------------------------| Increment EGOCNT (EGO switch) 6-50 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Determine if adaptive is enabled/disabled of if adaptive area has changed: AFMFLG = 1 --------------------------| | CFMFLG = 1 --------------------------| | TFMFLG = 1 --------------------------| | MFMFLG = 1 --------------------------| | ACT <= AFACT1 -----------------------| | ACT >= AFACT2 -----------------------| |OR --| LOPCT1 = 0 DISABLE_ADAPT = 1 -------------------| | LOPCT2 = 0 | | EGOCNT = 0 OPEN LOOP FUEL CONTROL --------------| | LSTCOL = kamcol | | LSTROW = kamrow ADPTMR < ADAPTM ---------------------| | | | Do: NEW_UPRATE_CALC |kamrow - LSTROW| > DELROW ----------| | | | Exit FUEL_ADAPT_COM4 |kamcol - LSTCOL| > DELCOL ----------| | | | AEFUEL > AELIM ----------------------| | | | |EFTR| >= ADEFTR --------------------| | | | REFFLG = 1 --------------------| | | |AND -| | ISCFLG <> 1 -------------------| | | --- ELSE --- | | Continue with FUEL_ADAPT_COM4 6-51 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Calculate the LAMBSE window, LAMWIN: always ------------------------------------| LAMWIN = DELAMB + (PTPAMP * | AMPMUL) Calculate the EGO based learning rate: (This logic gives the system the capability to learn faster during 'green engine conditions'). WARM_UP = 0 -------------------------| | TCSTRT < VECT5 ----------------------| |AND -| WARM_UP = 1 ECT > VECT3 -------------------------| | KWUCTR = KWUCTR + 1 | | Clip KWUCTR to 255 RUN mode ----------------------------| KWUCTR < KWUCNT ---------------------------| egolearn_rat = FAEGCT (first few warm-up cycles) | (use fast learning rate) | | --- ELSE --- | KWUCTR >= KWUCNT --------------------------| egolearn_rat = ADEGCT | (use normal learning rate) Calculate loop counters: (LOPCT1 and LOPCT2) EGO IS RICH -------------------------| | LAMBSE >= (1 + BIAS + LAMWIN) -------| |AND -| Increment LOPCT1 (max 255) EGOCNT >= egolearn_rat --------------| | | | LIMIT_PURGE = 0 ---------------| | | |OR --| | PURGDC = 0 --------------------| | | --- ELSE --- EGO IS LEAN -------------------------| | | | LAMBSE <= (1 + BIAS - LAMWIN) -------|AND -| Increment LOPCT2 (max 255) | | EGOCNT >= egolearn_rat --------------| | | --- ELSE --- | | No change to LOPCT1 or LOPCT2 6-52 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL Determine if adaptive cells should be incremented/decremented: LTMTBL cells are updated when the following conditions are satisfied: Note that r = ROWTBU and c = COLTBU in the following charts. FN1325Lrc >= 0 ---------------------| | LOPCT1 > 2 * UPRATE ----------------|AND -| LTMTBLrc = LTMBLrc - 0.0039 | | Decrement CHKSUM LTMTBLrc > MINADP ------------------| | LOPCT1 = 0 | EGOCNT = 0 | | --- ELSE --- | LOPCT1 > 2 * UPRATE ----------------------| LOPCT1 = 0 | EGOCNT = 0 | | --- ELSE --- LOPCT2 > 2 * UPRATE ----------------| | | | LTMTBLrc < MAXADP ------------------|AND -| LTMTBLrc = LTMTBLrc + 0.0039 | | Increment CHKSUM FN1325Lrc >= 0 ---------------------| | LOPCT2 = 0 | EGOCNT = 0 | | --- ELSE --- | LOPCT2 > 2 * UPRATE ----------------------| LOPCT2 = 0 | EGOCNT = 0 6-53 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL BEGIN: NEW_UPRATE_CALC This algorithm calculates the average loop counter value to be used during the adaptive algorithm. The standard four point interpolation routine is used. If, however, one or more of the cells in the four points is a reference cell, then the average of the values in the positive cells is used in place of the negative values. If the system is in the special idle cells, the UPRATE value is equal to the value in FN1325L specified by kamcol. Note: kamrow_max = maximum number of table rows (excluding the Special Idle Cells row). kamrow_spec = row number for the Special Idle Adaptive Cells. kamcol_max = maximum number of table columns. kamrow = kamrow_spec ------------| Read the value in FN1325L specified | by kamcol. | Load this value in UPRATE. | | Exit the subroutine NEW_UPRATE_CALC | | --- ELSE --- | | Continue with subroutine NEW_UPRATE_CALC Separate kamcol and kamrow into an integer and remainder. always --------------------------| kamcol_rem = kamcol - int(kamcol) | kamcol = int(kamcol) | kamrow_rem = kamrow - int(kamrow) | kamrow = int(kamrow) Check for row and column boundary conditions: kamcol < kamcol_max -------| | adapt1_uprat = FN1325L(kamcol,kamrow) |AND -| adapt2_uprat = FN1325L(kamcol + 1,kamrow) kamrow < kamrow_max -------| | adapt3_uprat = FN1325L(kamcol,kamrow + 1) | adapt4_uprat = | FN1325L(kamcol + 1,kamrow + 1) | | --- ELSE --- kamcol = kamcol_max -------| | |AND -| adapt1_uprat = FN1325L(kamcol,kamrow) kamrow = kamrow_max -------| | adapt2_uprat = adapt1_uprat | adapt3_uprat = adapt1_uprat | adapt4_uprat = adapt1_uprat | (use FN1325L 4 times so not to wrap | around table or use special idle cells) | | --- ELSE --- (continued on next page) 6-54 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL (continued from previous page) | kamcol = kamcol_max -------------| adapt1_uprat = FN1325L(kamcol,kamrow) | adapt2_uprat = adapt1_uprat | adapt3_uprat = FN1325L(kamcol,kamrow + 1) | adapt4_uprat = adapt3_uprat | (use kamcol_max values twice so not to | wrap around table) | | --- ELSE --- | kamrow = kamrow_max -------------| adapt1_uprat = FN1325L(kamcol,kamrow) | adapt2_uprat = FN1325L(kamcol + 1,kamrow) | adapt3_uprat = adapt1_uprat | adapt4_uprat = adapt2_uprat | (use kamrow_max values twice so not to | wrap around table or use special | idle cells) always --------------------------| uprat_cnt = 0 Check for reference cells: adapt1_uprat >= 0 ---------------| uprat_cnt = uprat_cnt + 1 | adapt1_uprat_ref = 0 | | --- ELSE --- | | adapt1_uprat = 0 | adapt1_uprat_ref = 1 adapt2_uprat >= 0 ---------------| uprat_cnt = uprat_cnt + 1 | adapt1_uprat_ref = 0 | | --- ELSE --- | | adapt2_uprat = 0 | adapt2_uprat_ref = 1 adapt3_uprat >= 0 ---------------| uprat_cnt = uprat_cnt + 1 | adapt3_uprat_ref = 0 | | --- ELSE --- | | adapt3_uprat = 0 | adapt3_uprat_ref = 1 6-55 FUEL STRATEGY, ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL adapt4_uprat >= 0 ---------------| uprat_cnt = uprat_cnt + 1 | adapt4_uprat_ref = 0 | | --- ELSE --- | | adapt4_uprat = 0 | adapt4_uprat_ref = 1 If all cells are referenced cells, set UPRATE to a maximum value. Else, find UPRATE average. uprat_cnt = 0 -------------------| UPRATE = 127 (maximum value) | | --- ELSE --- | | uprat_avg = (adapt1_uprat + | adapt2_uprat + adapt3_uprat + | adapt4_uprat) / uprat_cnt | | Truncate UPRATE to an integer adapt1_uprat_ref = 1 ------------| adapt1_uprat = uprate_avg adapt2_uprat_ref = 1 ------------| adapt2_uprat = uprate_avg adapt3_uprat_ref = 1 ------------| adapt3_uprat = uprate_avg adapt4_uprat_ref = 1 ------------| adapt4_uprat = uprate_avg always --------------------------| Make kamcol and kamrow real numbers | kamcol = kamcol + kamcol_rem | kamrow = kamrow + kamrow_rem | | Do four point interpolation using | kamrow and kamcol, and the four | adaptn_uprat values calculated | above. Store this value in UPRATE. END: NEW_UPRATE_CALC 6-56 FUEL STRATEGY, KAM ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL KAM ADAPTIVE FUEL LOGIC (Background software module KAMREF, called from BG_FUELPW) OVERVIEW The adaptive fuel table stored in KAM is used as a reference for both open and closed loop fuel control. The use of KAMREF is shown in the pulsewidth equation section of this chapter. NOTE: The following Adaptive Fuel Logic is not executed during ENGINE RUNNING Self Test MODE. DEFINITIONS INPUTS Registers: - ISFLAG = Indication of engine load state at idle (See IDLE SPEED CONTROL Chapter); 0 -> Drive, 1 -> Drive and A/C clutch engaged, 2 -> Neutral, 3 -> Neutral and A/C clutch engaged. - LTMTBL = Adaptive fuel table. Bit Flags: - CRKFLG = Flag indicating engine mode; 1 -> Cranking, 0 -> Run or Underspeed mode. - HCAMFG = Flag indicating the completion of Hi-Cam; 0 -> no desired engine speed adder exists, 1 -> an rpm adder above base idle is present. Flag is used in the ISC adaptive update routine to disable updates when HCAMFG = 1. - REFFLG = Indication of Idle Air Flow; 1 -> Idle Air Flow. Calibration Constants: - HCAMSW = Calibration switch which allows the developer to select how the adaptive fuel idle cells are to be used. If HCAMSW is set to 0, the adaptive fuel idle cells are used as soon as the filtered air mass region is entered (REFFLG = 1). If HCAMSW is set to 1, the adaptive fuel idle cells are used only when in the filtered air mass region and no rpm adder above base idle is present (HCAMFG = 0). This includes FN825A, FN825B, FN826, and BZZRPM. OUTPUTS Registers: 6-57 FUEL STRATEGY, KAM ADAPTIVE FUEL LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL - KAMREF = Adaptive fuel strategy correction factor. PROCESS STRATEGY MODULE: FUEL_KAM_ADAPT_COM3 CRKFLG = 1 ----------------------------------| KAMREF = 1.0 (crank mode) | (use no interpolation) | | --- ELSE --- REFFLG = 1 ----------------------------| | |AND -| KAMREF = 0.5 + LTMTBLrc HCAMFG = 0 ----------------------| | | (where r = 10 and (no rpm adder) |OR --| | c = ISFLAG) | | (use no interpolation) HCAMSW = 0 ----------------------| | (ignore HCAMFG) | --- ELSE --- | | KAMREF = 0.5 + LTMTBLrc | (use 4-point | interpolation) NOTE: For purposes of interpolation, the LTMTBL100 to LMTBL105 cells are not included. These cells should correspond to the special idle cells. 6-58 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL TRANSIENT FUEL COMPENSATION (Background software module TFCOMP, called from BG_FUELPW) OVERVIEW Transient Fuel is variously referred to as manifold wall wetting, puddling, filling, and fuel film condensation/evaporation. A liquid fuel film resides on the walls of the intake manifold. The film mass varies primarily with manifold absolute pressure and manifold wall temperature. During steady state conditions, the film mass is constant. The rates of condensation and evaporation on the manifold walls are equal. During transients, the film mass changes creating air/fuel ratio errors. - During accelerations, the film mass increases. Fuel will condense faster on the manifold walls until equilibrium is reached. In an uncompensated system at stoichiometry, fuel is diverted from the cylinders, resulting in a momentary lean condition. - During decelerations, the film mass decreases. Fuel will evaporate faster from the manifold walls until equilibrium is reached. In an uncompensated system at stoichiometry, fuel is added to the cylinders, resulting in a momentary rich condition. The problem is magnified in closed loop fuel systems because the fuel control will incorrectly chase the transient air/fuel excursions. INTENT The Transient Fuel Compensation Strategy (TFC) augments the closed/open loop fuel control to keep cylinder events at the desired air/fuel ratio during all engine transients. The goals are: - eliminate lean air/fuel excursions during accelerations, and - eliminate rich air/fuel excursions during decelerations. NOTE: Transient Fuel Compensation is not run in Self Test. 6-59 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL APPROACH The computer adjusts fuel flow to match the transient fuel flow to or from the manifold fuel film. COMPENSATED CLOSED/OPEN LOOP FILM MASS RATE OF CHANGE FUEL FLOW = FUEL FLOW + OR FUEL FLOW (ACTUAL) (BASE STRATEGY) (TFC STRATEGY) The film mass rate of change is proportional to the amount of fuel that must be added to or subtracted from the manifold film. / \ FILM MASS 1 | STEADY ACTUAL | RATE OF = --------------- * | STATE - | CHANGE TIME CONSTANT | FILM MASS FILM MASS | \ / The time constant and steady state film mass are calculated from MAP and temperature variables and must be calibrated for different applications. The actual film mass is a time integration of the film mass rate of change. / \ ACTUAL ACTUAL | FILM MASS TIME SINCE | FILM = FILM + | RATE OF * LAST | MASS MASS | CHANGE UPDATE | \ / 6-60 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - AISF = Actual Intake Surface Fuel Calculation, lb. - ATMR1 = Time since Start-up, sec. - DELTIM = Time since last AISF update, sec. - EFTR = Equilibrium fuel transfer rate, fuel flow to and from the manifold puddle. Bit Flags: - DFSFLG = Indicates decel fuel shut off. - EFFLG1 = Equilibrium Fuel Transfer flag. - ISCFLG = ISC Mode Flag. 1 -> RPM control; 2 -> RPM lockout - MPGFLG = Manage fuel air state flag. - REFFLG = Indicates idle fuel modulation enabled. Calibration Constants: - AISFM = Multiplier on AISF when in DFSO (0 - 2). Determines Fuel Puddle size upon re-entering Normal Fuel. - ALPHA = Multiplier proportioning the dependency of ACT to ECT. - EFTC = TEFTC(FN1322) = an 8 X 10 table of equilibrium fuel transfer time constants as a function of ALPHA * ACT + (1 - ALPHA) * ECT and MAP. - EISF = TEISF(FN1321) = an 8 X 10 table of fuel mass values as a function of ALPHA * ACT + (1 - ALPHA) * ECT and MAP. - FN307(N_BYTE) = MTEFTC Multiplier as a function of N_BYTE. - FN1321(TEISF) = Equlibrium intake surface fuel function. - KFT = Multiplier (if set = 0, disables TFC) when not in MPG mode. - KFTMPG = Transient Fuel multiplier in MPG mode. - MEFTRA = Transient fuel PW multiplier during accels. - MEFTRD = Transient fuel PW multiplier during decels. - MTEISF = Multiplier for FN1321. - TFCBITS = Minimum difference in Equilibrium Intake Surface Fuel to trigger transient fuel. 1 bit = 0.000015259, therefore to have a deadband of 5 bits, set TFCBITS = 0.000076295. NOTE: To see how many bits are contained in the desired fuel puddle, 6-61 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL calculate FN1321 * MTEISF/0.000015259. For example, if FN1321 = 0.0014648, MTEISF = 0.0625, then the number of bits in the puddle is 6. Thus even a 1 bit change would require an 18% TFCDED to eliminate it. TFCBITS resolves this issue when puddle values are extremely small. - TFCDED = Percentage deadband around Equilibrium Intake Surface Fuel to turn off Transient Fuel. - TFCISW = Switch for Transient Fuel Control. - TFCTM = Time since entering Transient Fuel, sec. - TFRFSW = Trans fuel REFFLG enable switch; 0 = disable REFFLG logic. OUTPUTS Registers: - AISF = Actual Intake Surface Fuel Calculation, lb. - EFTR = Equilibrium fuel transfer rate, fuel flow to and from the manifold puddle. - EFTRFF = Equilibrium fuel flow. Bit Flags: - EFFLG1 = Equilibrium Fuel Transfer flag. 6-62 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_TRANS_COM5 CRANK mode --------------------| (CRKFLG = 1) | | UNDERSPEED mode ---------------|OR --| EFFLG1 = 0 (UNDSP = 1) | | EFTR = 0 | | EFTRFF = 0 ATMR1 < TFCTM -----------------| | (do not run transient | fuel compensation) | | --- ELSE --- EFFLG1 = 0 --------------------| | | | RUN mode ----------------------|AND -| AISF = MTEISF * FN1321(TEISF) (CRKFLG = 0, UNDSP = 0) | | EFFLG1 = 1 | | (do not run transient TFCISW = 1 --------------------| | fuel compensation) (assume wet manifold at start-up) | | --- ELSE --- EFFLG1 = 0 --------------------| | | | RUN mode ----------------------|AND -| AISF = 0 | | EFFLG1 = 1 TFCISW = 0 --------------------| | (do not run transient) (assume dry manifold at start-up) | | --- ELSE --- RUN mode ----------------------| | | | DFSFLG = 1 --------------------| | (in DFSO) |AND -| AISF = MTEISF * FN1321(TEISF) * AISFM | | EFFLG1 = 1 EFFLG1 = 1 --------------------| | EFTR = 0 | (do not run transient) | | --- ELSE --- EFFLG1 = 1 --------------------| | |AND -| Do ACTUAL INTAKE SURFACE RUN mode ----------------------| | FUEL CALCULATIONS (CRKFLG = 0, UNDSP = 0) | Do EQUILIBRIUM FUEL | TRANSFER CALCULATIONS | (run transient fuel | compensation) NOTE: During ENGINE RUNNING Self Test MODE, the above logic is not executed; the Self Test software prevents Transient Fuel Compensation. 6-63 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL EQUILIBRIUM FUEL TRANSFER CALCULATIONS These calculations are performed during each program pass (background loop) while Transient Fuel Compensation is enabled. The general form of the rate calculation is: EFTR = A * [(EISF * MTEISF - AISF) / (EFTC * FN307(N_BYTE))] MPGFLG = 0 ------------------------------------| A = KFT (not in MPG mode) | | --- ELSE --- | MPGFLG = 1 ------------------------------------| A = KFTMPG (in MPG mode) ACTUAL INTAKE SURFACE FUEL CALCULATION (AISF) This calculation is performed during each program pass (background loop) while TFC is enabled. AISF is a time integration of the fuel flow to and from the manifold puddle. Clip AISF to 0 as a minimum. AISF = AISF + (EFTR * DELTIM) 6-64 FUEL STRATEGY, TRANSIENT FUEL COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL TRANSIENT FUEL FLOW MULTIPLIER REFFLG = 1 ------------------------| |AND -| TFRFSW = 1 ------------------------| | (enable REFFLG logic) | | ISCFLG > 0 ------------------------| | (in RPM control) | | |AND -|OR --| EFTRFF = 0 TFISCW = 1 ------------------------| | | (stop adding (enable ISCFLG logic) | | transient fuel to | | pulsewidth continue |MTEISF * FN1321 - AISF| <= TFCBITS -----| | AISF update) (difference is less than a few bits) | | | | |(MTEISF * FN1321 - AISF) / | | (MTEISF * FN1321)| <= TFCDED --------| | (percentage difference is small) | | --- ELSE --- | MTEISF * FN1321 < AISF ------------------------| EFTRFF = MEFTRD * 60 | EFTR | (use decel multiplier) | | --- ELSE --- | | EFTRFF = MEFTRA * 60 | * EFTR | (use accel multiplier) 6-65 FUEL STRATEGY, HOT INJECTOR COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL HOT INJECTOR COMPENSATION (Done in background software module CNVRT) OVERVIEW Under conditions of high injector tip temperatures, injector fuel delivery decreases as a function of increasing injector tip temperature. The amount of vaporized fuel delivered by the injector increases as hot soak time increases, or as conducted heat (from cylinder head) and/or radiated heat (from intake/exhaust manifold) increases. Higher fuel pressure or lower fuel volatility helps the situation, but fuel volatility is beyond the developers control. Hot Injector compensation has therefore been applied to the fuel delivery slope A0. Tip temperature has been characterized to be a function of ECT/ACT, ACSTRT, ATMR3 and AM as follows: - ECT/ACT for conducted or radiated heat. - ACSTRT for soak time. - ATMR3 for fuel mass to cool the injector. - AM for fuel mass to cool the injector. Hot injector compensation, as a percent above base A0 is, HICOMP = FN1349(TEMP,ACSTRT) * FN1348(ATMR3,AM). A0 corrected = A0/(1 + HICOMP) = A0COR Thus when HICOMP goes to 0, no enrichment is desired. FN1350 has been added for crank fuel enrichment as a function of ACT and CRKPIP_CTR. ACT is the input - in case of a stall and no key off, you will get a better enrichment factor as opposed to ACSTRT. 6-66 FUEL STRATEGY, HOT INJECTOR COMPENSATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ACSTRT = ACT at start-up; arithmetic average of the first 8 ACT readings. - ACT = Air Charge Temperature, degrees F. - AM = Air mass flow, lb/min. - ATMR3 = Time since entering RUN mode, secs. - CRKPIP_CTR = Foreground PIP counter for crank fuel. - ECT = Coolant temp, degree F. Calibration Constants: - FN1349 = Fuel enrichment factor. X = FN005(TEMP) Y = FN005(ACSTRT) - FN1348 = Time multiplier. X = FN008(ATMR3) Y = FN007(AM) - FN1350 = CRANK fuel enrichment multiplier as a function of "number of PIPs" in CRANK and ACT. X = FN023(CRKPIP_CTR) Y = FN024(ACT) - FRCHIC = Fraction of ECT or ACT to use in FN1349. If FRCHIC = 1.0, all ACT is used, if FRCHIC = 0, all ECT is used. OUTPUTS Registers: - HICOMP = Hot injector compensation enrichment factor. PROCESS STRATEGY MODULE: FUEL_HOT_INJ_COMP_COM2 HICOMP = FN1349(TEMP,ACSTRT) * FN1348(ATMR3,AM) 6-67 FUEL STRATEGY, INJECTOR DELAY LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL INJECTOR DELAY LOGIC OVERVIEW UNSYNCHRONIZED (SYNFLG = 0 or FUEL_SYNC = 0) The injector timing routine is disabled (IBETA = 0). All injector output ports are fired on the rising edge of their respective reference PIPs. SYNCHRONIZED (SYNFLG = 1 and FUEL_SYNC = 1) All injector output port firings are delayed CIBETA PIP periods from their respective reference PIPs. NOTE: A Signature PIP distributor is required in order to delay injector firing by CIBETA PIP periods. If a Signature PIP distributor is not used, SYNFLG will always be 0. CALIBRATION PHILOSOPHY CIBETA should be calibrated so that the injector firings occur within the optimum window determined by camshaft geometry. DESIRED INJECTOR DELAY IN CRANK DEGREES - 10 DEG CIBETA = ------------------------------------------------ CRANK DEGREES BETWEEN PIPS The range of CIBETA is 0 to 6.5 PIP periods. DEFINITIONS INPUTS Registers: - TOTAL_DELAY = Register which is equivalent to CIBETA. TOTAL_DELAY changes during synchronization until the requested CIBETA is obtained. Bit Flags: - FUEL_SYNC = Flag which indicates that PIP and fuel are in synch. - NEW_DELAY = Flag to indicate that new TOTAL_DELAY is being requested by the FUEL SERVICE module. - SYNFLG = Signature PIP correctly identified flag: 1 -> Signature PIP in correct place; 0 -> not Signature PIP or in wrong place. Calibration Constants: - CIBETA = Number of PIPs to delay Bank A from rising edge of Signature PIP. 6-68 FUEL STRATEGY, INJECTOR DELAY LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL - PIPOUT = Number of PIP periods between injector outputs on each injector port. OUTPUTS Registers: - NEW_DELAY = See above. - TOTAL_DELAY = See above. 6-69 FUEL STRATEGY, INJECTOR DELAY LOGIC - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_INJDLY_COM4 SYNFLG = 0 ----------------------| | FUEL_SYNC = 0 -------------------| (fuel not sync'd) | | SYNFLG = 1 ----------------| | | | FUEL_SYNC = 1 -------------| | | | NEW_DELAY = 1 -------------| | (requesting new delay) |AND -|OR --| TOTAL_DELAY = 0 | | | NEW_DELAY = 0 CIBETA > PIPOUT -----------| | | Exit FUELPW ROUTINE (requested delay too long) | | | | SYNFLG = 1 ----------------| | | | | | FUEL_SYNC = 1 -------------| | | |AND -| | NEW_DELAY = 1 -------------| | | | CIBETA < TOTAL_DELAY ------| | (requested delay less than | present delay) | | --- ELSE --- SYNFLG = 1 ----------------------| | | | FUEL_SYNC = 1 -------------------|AND -| Exit FUELPW ROUTINE | | NEW_DELAY = 0 -------------------| | | --- ELSE --- | CIBETA - TOTAL_DELAY > 0.5 ------------| TOTAL_DELAY = (requested delay more than 1/2 PIP | TOTAL_DELAY + 0.5 away) | NEW_DELAY = 0 | Exit FUELPW ROUTINE | | --- ELSE --- | | TOTAL_DELAY = CIBETA | NEW_DELAY = 0 | Exit FUELPW ROUTINE NOTE: TOTAL_DELAY is used by the FUEL SERVICE routine to compute IBETA. 6-70 FUEL STRATEGY, IDLE FUEL MODULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL IDLE FUEL MODULATION OVERVIEW Idle fuel modulation is used to enhance the idle stability of speed density systems. The strategy achieves A/F modulation by multiplying the FUELPW equation by the parameter ISCMOD, which has a nominal value of 1.0. ISCMOD is inversely proportional to rate of change of rpm. If rpm is increasing, the value of ISCMOD becomes less than 1.0, which leans the A/F and tends to stop the increase. The opposite happens if rpm is decreasing. To prevent the A/F modulation from being excessive, ISCMOD is clipped between maximum and minimum values. Idle speed modulation is enabled when TP is near RATCH, and rpm is near DSDRPM. The flag REFFLG indicates that idle speed modulation is enabled. DEFINITIONS INPUTS Registers: - DNDT_ISC = Rate of change of rpm. From the rpm calculation. - DSDRPM = Desired rpm. Calculated in Idle Speed Control. - N_BYTE = Byte value of rpm. From the rpm calculation. - RATCH = Lowest filtered throttle position (see System Equations Chapter). - TP_REL = Throttle Position relative to RATCH; TP_REL = TP - RATCH. Bit Flags: - DISABLE_ISC = Flag set in Running VIP to disable ISCMOD; 1-> disable ISCMOD. - REFFLG = Idle fuel modulation flag; 1 -> idle fuel modulation enabled. - RUNUP_FLG = Flag indicating that a stall has occurred; 1 -> Runup rpm exceeded. - VRUN_ISCFLG = Flag which indicates that idle speed is being controlled by Engine Running VIP; 1 -> in Engine Running VIP, 0 -> not in Engine Running VIP. Calibration Constants: - DELRAT = Throttle position adder to RATCH. Used to describe a throttle position below which idle fuel modulation is enabled. - DLHYST = Hysteresis for DELRAT. - ISCMOD_MAX = Maximum clip on ISCMOD. Limits the maximum rich excursion that will result from the idle fuel modulation strategy. 6-71 FUEL STRATEGY, IDLE FUEL MODULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL - ISCMOD_MIN = Minimum clip on ISCMOD. Limits the maximum lean excursion that will result from the idle fuel modulation strategy. - ISCMOD_RPM = Incremental adder to DSDRPM; total defines an engine speed below which idle fuel modulation can occur. Should be kept to a minimum to avoid unnecessary activation of the fuel modulation routine. - KDNDT = Gain term for idle fuel modulation. Larger values result in more fuel being added when engine speed falls and more fuel being taken away when engine speed rises. Too small a value results in unstable idle and too large a value results in unnecessary A/F excursions at idle. - V_ISCMOD_MAX = VIP maximum clip on ISCMOD when in VIP throttle adjust mode. - V_ISCMOD_MIN = VIP minimum clip on ISCMOD when in VIP throttle adjust mode. - V_KDNDT = gain term for idle fuel modulation when in VIP Throttle Adjust mode. OUTPUTS Registers: - EGO_CNT_IDLE = Number of EGO switches which have occurred since entering Idle Fuel Modulation. - ISCMOD = FUELPW equation multiplier for idle fuel modulation. - LAM_OLD = Value of LAMBSE at previous EGO switch. - LAMAVE = Average LAMBSE between EGO switches. Bit Flags: - REFFLG = See above. CALIBRATION INFORMATION Typical Values: - DELRAT = 15 counts. - DLHYST = 10 counts. - ISCMOD_MAX = 1.2 (allows up to 20_% rich A/F to correct for decreasing rpm). - ISCMOD_MIN = 0.9 (allows up to 10_% lean A/F to correct for increasing rpm). - ISCMOD_RPM = 75 to 150 rpm. - KDNDT = 0.0003 sec/rpm. 6-72 FUEL STRATEGY, IDLE FUEL MODULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_IDLE_MOD_COM3 DISABLE_ISC = 1 ---------------------------------| REFFLG = 1 (freeze ISCDTY for VIP) | ISCMOD = 1.0 | (disable idle fuel | modulation for | VIP) | | --- ELSE --- | VRUN_ISCFLG = 1 ---------------------------------| REFFLG = 1 (throttle adjust mode) | ISCMOD = (1 - | V_KDNDT * | DNDT_ISC) | Clip ISCMOD between | V_ISCMOD_MIN and | V_ISCMOD_MAX | (enable VIP Idle Fuel | Modulation) | | --- ELSE --- TP_REL <= DELRAT + DLHYST -----------------| | | | RUNUP_FLG = 1 -----------------------------| | (initial runup complete) |AND -| REFFLG = 1 | | ISCMOD = (1 - TP_REL <= DELRAT --------------| | | KDNDT * |AND -| | | DNDT_ISC) N_BYTE <= DSDRPM + ISCMOD_RPM -| |OR --| | Clip ISCMOD between | | ISCMOD_MIN and previous value of REFFLG = 1 --------| | ISCMOD_MAX | (enable idle fuel | modulation) | | --- ELSE --- | | REFFLG = 0 | ISCMOD = 1.0 | (disable idle fuel | modulation) Previous value of REFFLG = 0 --------------| |AND -| EGO_CNT_IDLE = 0 Current value of REFFLG = 1 ---------------| EGO switch --------------------------------------| Increment EGO_CNT_IDLE 6-73 FUEL STRATEGY, IDLE FUEL MODULATION - LHBH0 PED-PTE, FomoCo, PROPRIETARY & CONFIDENTIAL NOTE: - REFFLG = 1 indicates idle fuel modulation is enabled. - ISCMOD is a multiplier on the FUELPW equation. - DNDT_ISC is a filtered dn/dt (see rpm calculation) - ISCMOD_RPM = Delta rpm above DSDRPM to enable idle fuel modulation. - Most MAF systems should not use Idle Fuel Modulation (set KDNDT = 0). 6-74 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DECEL FUEL SHUT-OFF LOGIC (Software module DECEL_FUEL_SHUTOFF, called by BG_FUELPW) OVERVIEW This logic turns off the fuel on a deceleration condition. DEFINITIONS INPUTS Registers: - BG_TMR = Background loop time, sec. - CTTMR = Time at closed throttle, sec. - DSDRPM = Desired engine speed. See the IDLE SPEED CONTROL Chapter Overview section for definition of the various uses of this register. - D_TP_DT = Time derivitive of TP (ticks/sec). - DFSO_A_TMR = Free running, down counting, TP based thermactor air shut off timer. - DFSO_F_TMR = Free running, down counting, TP based DFSO timer. - ECT = Engine Coolant Temperature. - MAP = Manifold Absolute Pressure, " Hg (byte value). - N = Engine speed, rpm. - NACTMR = Time since leaving Closed Throttle mode. NACTMR is defined in the TIMERS Chapter. - NOVS = The ratio of engine speed (NBAR) over vehicle speed (VSBAR). - OLD_TP_DFSO = Previous value of TP used in DFSO logic. - TP = Throttle position, counts. - VSBAR = Time dependent rolling average of instantaneous vehicle speed, VS. Bit Flags: - DFSVS_HYS_FG = Decel fuel vehicle speed flip-flop. - FLG_DFSO_NOVS = Flip flop state flag using transmission gear to engage DFSO. - FPWQ2 = Fuel pulsewidth flip-flop 2. 6-75 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - FPWQ3 = Fuel pulsewidth flip-flop 3. - MFMFLG = MAP failure flag; 1 -> MAP sensor has failed. - NDSFLG = Flag that indicates Neutral/Drive switch position; 0 -> neutral, 1 -> drive. - RUNNING = Flag which indicates that idle speed is being controlled by Engine Running VIP; 1 -> in Engine Running VIP, 0 -> not in Engine Running VIP. - TFMFLG = Flag indicating that the TP sensor is in/out of range; 1 -> failed range check. - VSFMFLG = Flag indicating the Vehicle Speed Sensor has failed; 1 -> failed sensor. Calibration Constants: - CTDSFO = Time at closed throttle for DFSO, sec. - CTEDSO = Time at extended decel for DFSO, sec. - DFNOVH = Hysteresis for DENOVS, rpm/mph. - DFNOVS = NOVS value below which DFSO is permitted. Used to disable DFSO in lower transmission gears to prevent large torque changes. - DFSECT = Minimum ECT to do DFSO, degrees F. - DFSMAP = Minimum MAP for DFSO. Should be calibrated to not allow DFSO when the engine is making power so as to minimize torque change at fuel shut off point, Hg. - DFSO_ECT = Ect above which TP based DFSO is allowed. - DFSO_OUT = Switch to disable DFSO under a throttle position faliure; 1 -> DFSO disabled. - DFSMPH = Hysteresis for DFSMAP, Hg. - DFSRPH = Hysteresis value for DFSRPM. - DFSRPM = Minimum value of (N - DSDRPM) for DFSO, rpm. - DFSTM = Time delay before DFSO, sec. - DFSVS = Minimum vehicle speed to allow Decel Fuel Shut-Off. Used to limit DFSO when in a high gear, low speed decel. Also prevents use of DFSO in parking lots, etc, mph. - DFSVSH = Hysteresis value for DFSVS, mph. - D_TP_DT_F = TP tip out rate needed to trigger TP based DFSO (should never be greater that zero). TP tip out can be turned off by setting this scalar to its maximum negative value. 6-76 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - FND_TP_DT_A = TP rate at which to activate air bypass. - TRLOAD = Transmission load switch. - FN222A(n) = The amount of time which thermactor air is shut off, sec. - FN222F(n) = The amount of time which DFSO is active, sec. OUTPUTS Registers: - D = Decel fuel shut-off multiplier. - D_TP_DT = See above. - DFSO_A_TMR = See above. - DFSO_F_TMR = See above. - OLD_TP_DFSO = See above. Bit Flags: - DFSFLG = Decel Fuel Shut-Off flag; 1 -> the decel fuel multiplier is not one. - FLG_DFSO_NOVS = See above. - DFSVS_HYS_FG = See above. - FPWQ2 = See above. - FPWQ3 = See above. 6-77 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_DFSO_COM2 always ------------------------------------------| D_TP_DT = (TP - | OLD_TP_DFSO) / BG_TMR | OLD_TP_DFSO = TP ECT > DFSO_ECT ----------------------------| (ECT high enough) | |AND -| [dfso_condition] = 1 | | TFMFLG = 0 --------------------------------| | (TP sensor OK) | | --- ELSE --- | | [dfso_condition] = 0 [dfso_condition] = 1 ----------------------| (condition right) | | DFSO_F_TMR = 0 ----------------------------|AND -| DFSO_F_TMR = FN222F(N) (initialize once) | | | | D_TP_DT < D_TP_DT_F -----------------------| | (tipping out) | | --- ELSE --- | | decrement DFSO_F_TMR | (clip at zero) [dfso_condition] = 1 ----------------------| (condition right) | | DFSO_A_TMR = 0 ----------------------------|AND -| DFSO_A_TMR = FN222A(N) (initialize once) | | | | D_TP_DT < FND_TP_DT_A(N) ------------------| | (tipping out) | | --- ELSE --- | | decrement DFSO_A_TMR | (clip at zero) 6-78 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Evaluate each flip flop each background pass: NACTMR > DFSTM ----------------------------|S Q -| FPWQ3 (long tip-in) | | NACTMR > 0 --------------------------------|C VSBAR >= DFSVS ----------------------------|S Q -| DFSVS_HYS_FG | VSBAR < DFSVS - DFSVSH --------------------|C NOVS <= DFNOVS ----------------------------|S Q -| FLG_DFSO_NOVS (in higher gear) | | NOVS > DFNOVS + DFNOVH --------------------|C N - DSDRPM >= DFSRPM ----------------| (rpm high enough) | |AND -|S Q -| FPWQ2 MFMFLG = 1 --------------------| | | |OR --| | MAP <= DFSMAP -----------------| | (not making power) | | N - DSDRPM < DFSRPM - DFSRPH --------| | |OR --|C MAP > DFSMAP + DFSMPH ---------| | |AND -| MFMFLG = 0 --------------------| 6-79 FUEL STRATEGY, DECEL FUEL SHUT-OFF LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FPWQ2 = 1 ---------------------------------| | RUNNING = 0 -------------------------------| (not in KOER VIP) | | TRLOAD < 2 --------------------------| | (ignore N/D input) |OR --| | | NDSFLG = 1 --------------------------| | (in gear) | | ECT > DFSECT ------------------------------| (engine warm enough) | | TFMFLG = 0 --------------------| | |AND -| | DFSO_OUT = 0 ------------------| | | | | MFMFLG = 0 --------------------| | | |AND -|OR --|AND -| "A" = 1 DFSO_OUT = 0 ------------------| | | | | | | TFMFLG = 0 --------------------| | | | |AND -| | | MFMFLG = 0 --------------------| | | | | TFMFLG = 1 --------------------------| | | |OR --| | CTTMR > CTDSFO ----------------| | | | (closed throttle long enough) | | | | |AND -| | | CTTMR > CTEDSO ----------| | | | (extended closed throt.)| | | | |OR --| | | FPWQ3 = 1 ---------| | | | |AND -| | | FLG_DFSO_NOVS = 1 -| | | | | VSFMFLG = 1 -------------------------| | | (VS sensor bad) |OR --| | | | DFSVS_HYS_FG = 1 --------------------| | | --- ELSE --- | | "A" = 0 DFSO_F_TMR <> 0 ---------------------------| |OR --| FUEL OFF "A" = 1 -----------------------------------| | D = 0 | DFSFLG = 1 | | --- ELSE --- | | FUEL ON | D = 1 | DFSFLG = 0 6-80 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL PULSEWIDTH CALCULATION (BGFUEL) (Background Module BG_FUELPW) OVERVIEW Except for crank mode and Asynchronous Acceleration Enrichment, fuel pulsewidths are calculated from the following equation: [ AM * KAMREF ] BGFUEL = FUEL_A * [ -------------- + EFTRFF ] [ 14.64 * LAMBSE ] 1 PIPOUT * ------------------ * --------------- + FN367 N * ENGCYL * A0COR INJOUT * NUMOUT DEFINITIONS INPUTS Registers: - A0COR = Corrected fuel injector slope. - ACT = Air Charge Temperature. - AM = Air Mass flow as defined in the SYSTEM EQUATIONS Chapter, lb/min. - BASE_EM = Fuel requirement based on EGR flow (non-displayable). - BASEFF = Fuel amount to provide stoichiometric operation based on inducted air mass (AM) = (KAMREF * AM)/(14.64 * LAMBSE). - CRKPIP_CTR = Foreground PIP counter for crank fuel. - CRKPIP_CTR_BG = Background equivalent of CRKPIP_CTR. - D = Decel fuel shutoff multiplier. - ECT = Engine Coolant Temperature. - EFTRFF = Equilibrium fuel transfer rate for transient fuel compensation (lbf/min). - EM = Actual EGR mass flow. - FUEL_A = Fuel pulsewidth multiplier for Idle Fuel Modulation / Decel / Underspeed operation, unitless (non-displayable). - FUELPW = Foreground/background calculated fuel pulsewidth. - ISCMOD = Multiplier for idle speed fuel. 6-81 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - KAMREF = Adaptive fuel strategy correction factor. - LAMBSE = Desired ratiometric air/fuel ratio. Normalized to stoichiometry (14.7 a/f). - MAP = Manifold Absolute Pressure, "Hg (byte value). - MAPWBG = MAP_WORD updated once per background pass at calculation of AMPEM. Used in fuel pulsewidth calculation. - N = Engine speed in revolutions per minute. - OFMFLG = ETV overcurrent monitor failure flag; 0 -> ETV O.K., 1 -> ETV failure mode. - PWCF = Pulsewidth Conversion Factor - converts total computed for engine into amount per injector = [1/(N * ENGCYL)]/[PIPOUT/(NUMOUT * INJOUT)]. - RT_NOVS_KAM = Ratio of actual N-OVER-V to base N-OVER-V. - TLS_NV_FLG = Torque limiting strategy - no fuel flag; 0 -> normal fuel, 1 -> no fuel. - TLS_24_FLG = Torque limiting strategy - 1/2 fuel flag; 0 -> normal fuel, 1 -> 1/2 fuel. - TLS_34_FLG = Torque limiting strategy - 3/4 fuel flag; 0 -> normal fuel, 1 -> 3/4 fuel. - TP_REL = TP - RATCH. - VBAT = Battery voltage. - VSBAR = Time dependent rolling average of instantaneous vehicle speed, VS. - VSBART_FM = VS calculated based on NIBART, NOBART, or NOBART. - VSFMFLG = Vehicle speed sensor FMEM flag. Bit Flags: - ALT_CAL_FLG = Flag to indicate use of alternate calibration. - CRKFLG = Flag indicating engine mode; 1 -> cranking, 0 -> run or underspeed mode. - DSFFLG = Decel Fuel Shutoff flag; 1 -> the decel fuel multiplier is not one. - MFMFLG = MAP sensor failure flag. - REFFLG = Idle air flow region flag; 1 -> in region. - TFMFLG = TP sensor failure flag; 1 -> TP failure. - UNDSP = Run/Underspeed Engine Mode flag; 1 -> Underspeed/Crank, 0 -> Run mode. 6-82 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Calibration Constants: - BFULSW = Calibration switch to force use of background calculation of fuel pulsewidth; 1 -> do all fuel calculations in background, 0 -> use foreground fuel flag logic. - ENGCYL = Number of cylinders per engine revolution. - FN348(ECT) = Crank fuel pulsewidth as a function of ECT. - FN367(VBAT) = Injector offset as a function of VBAT. - FN387(ECT) = Fuel pulsewidth multiplier as a function of ECT. - FN387_ALT = Alternative FN387. - FN1350(CRKPIP_CTR_BG,ACT) = Cranking fuel pulsewidth multiplier as a function of number of PIPs in crank and air charge temperature. - FREQ18 = Seconds to clock ticks conversion factor. 1 clock tick = 3 * 10E-6 seconds. - INJOUT = Number of injectors fired by each output port. - MINPW = Minimum pulsewidth for repeatable fuel delivery. - NLMT = Overspeed RPM. - NLMTH = Hysteresis for overspeed RPM. - NUMOUT = Number of injector output ports. - OUTINJ = Injector scheme selection switch; 1 -> alternate injections, 2 -> simultaneous injections. - PIPOUT = Number of PIP periods between injector outputs on each injector port. - TLSNV = Torque limiting pattern for engine RPM/vehicle speed, unitless. - TLS24D = Torque limiting pattern for 1/2 fuel, double fire, unitless. - TLS34D = Torque limiting pattern for 3/4 fuel, double fire, unitless. - TLS24S = Torque limiting pattern for 1/2 fuel - single fire. - TLS34S = Torque limiting pattern for 3/4 fuel - single fire. - TP_DECHOKE = TP value above which to de-choke. - TQMAX1 = Maximum torque before 3/4 fuel. - TQMAX2 = Maximum torque before 1/2 fuel. - TQMAXH = Hysteresis for TQMAX1. - VSLIM = Maximum vehicle speed, MPH. 6-83 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - VSLIMH = Hysteresis for maximum vehicle speed, MPH. OUTPUTS Registers: - BASE_EM = See above. - BASEFF = See above. - BGFUEL = Background fuel pulsewidth, clock ticks. - FFULC = The constant that is added in the foreground fuel pulsewidth equation, lb/cyl. - FFULM = The value that is multiplied by MAP_WORD in the foreground fuel pulsewidth equation (lb/cyl - "Hg). - FUEL_A = See above. - FUEL_PIPS = Number of PIPs between injections. - LAMBSE = See above. - TLS_NV_FLG = See above. - PWCF = See above. - TLS_24_FLG = See above. - TLS_34_FLG = See above. - TLSPAT = Torque limiting strategy injection pattern. Bit Flags: - DISABLE_ADAPT = Adaptive fuel disable flag; 1 -> disable adaptive fuel. - FFULFG = Foreground fuel flag; 1 -> Compute fuel pulsewidth in foreground using latest computed manifold absolute pressure, 0 -> otherwise use background fuel pulsewidth. 6-84 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_BG_PW_DET_COM5 CRANK MODE FUEL PULSEWIDTH ALT_CAL_FLG = 1 ---------------------| fn387 = FN387_ALT(ECT) | | --- ELSE --- | | fn387 = FN387(ECT) CRKFLG = 1 --------------------| |AND -| BGFUEL = FN348(ECT) * TP_REL <= TP_DECHOKE ----------| | FN1350(CRKPIP_CTR_BG,ACT) * | | (MAP/29.875) TFMFLG = 0 --------------------| | (clip to 0.249 sec as a max) (tp sensor o.k.) | Goto "CONVERT PULSEWIDTH TO CLOCK | TICKS" | Exit FUELPW Routine | | --- ELSE --- | CRKFLG = 1 --------------------------| BGFUEL = 0 | (WOT de-choke mode) | Goto "CONVERT PULSEWIDTH TO CLOCK | TICKS" | Exit FUELPW Routine CALCULATE KAMREF always ------------------------------| Do "KAMREF" Module CALCULATE TRANSIENT FUEL always ------------------------------| Do "TFCOMP" Module DETERMINE BASE FUEL FLOW (BASEFF) BASEFF is used in the foreground fuel calculation and contains base fuel flow, unadjusted for transient fuel, AE fuel, or injector hardware. AM * KAMREF BASEFF = -------------- 14.64 * LAMBSE 6-85 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DETERMINE BASE EM (BASE_EM) BASE_EM is used in the foreground fuel calculation to adjust the base fuel for EGR mass that may be present at the time. EM * KAMREF BASE_EM = -------------- 14.64 * LAMBSE CALCULATE PULSEWIDTH CONVERSION FACTOR (PWCF) PWCF converts total fuel required for the engine into an amount required per injection. PWCF = [1/(N * ENGCYL * A0COR)] * [PIPOUT/(INJOUT * NUMOUT)] CALCULATE IDLE FUEL MODULATION/DECEL/UNDERSPEED MULTIPLIER (FUEL_A) always ------------------------------| Do "DECEL FUEL SHUTOFF" Logic | (determine the value of D) | Do "IDLE FUEL MODULATION" Logic | (determine the value of "ISCMOD") UNDSP = 1 ---------------------------| FUEL_A = D * ISCMOD * fn387(ECT) | | --- ELSE --- | | FUEL_A = D * ISCMOD APPLY MINIMUM FUELPW AND LAMBSE CLIPS DFSFLG = 1 --------------------------| DISABLE_ADAPT = 1 (decel fuel shutoff) | (disable adaptive fuel) | | --- ELSE --- | FUELPW < MINPW ----------------------| DISABLE_ADAPT = 1 | (do not learn adaptive fuel | at minimum clip) | BGFUEL = MINPW | LAMBSE = 1.0 | | --- ELSE --- | | DISABLE_ADAPT = 0 6-86 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ENGINE AND VEHICLE SPEED LIMITER LOGIC VSFMFLG = 1 -------------------------| vsbar = VSBART_FM | | --- ELSE --- | | vsbar = VSBAR N > NLMT ----------------|S Q-| | | N <= NLMT - NLMTH -------|C |OR --| TLS_NV_FLG = 1 | | vsbar > VSLIM / | | RT_NOVS_KAM ------|S Q-| | | | vsbar <= (VSLIM / | | RT_NOVS_KAM) - | | VSLIMH -------|C | | --- ELSE --- | | TLS_NV_FLG = 0 NOTE: This strategy does not limit based on vehicle speed. It limits based on propshaft speed as a result of dividing VSLIM by RT_NOVS_KAM, and assumes that with a change in axle ratio, the equivalent change is made to the VSS drive gear. ENGINE TORQUE LIMITING STRATEGY OFMFLG = 0 --------------------| (TV solenoid OK) | (Full Fuel) |OR --| TLS_24_FLG = 0 TQ_OFM < TQMAX1 - | | TLS_34_FLG = 0 TQMAXH --------|S Q-| | | | TQ_OFM >= TQMAX1 --------|C | | --- ELSE --- | | (1/2 Fuel) TQ_OFM >= TQMAX2 --------------|S Q-| TLS_24_FLG = 1 | | TLS_34_FLG = 0 TQ_OFM < TQMAX2 - TQMAXH ------|C | | --- ELSE --- | | (3/4 Fuel) | TLS_24_FLG = 0 | TLS_34_FLG = 1 6-87 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL TLS_NV_FLG = 1 ----------------------| TLSPAT = TLSNV | | --- ELSE --- PIPOUT/ENGCYL = 2 -------------| | (single fire) | | |AND -| TLSPAT = TLS24S TLS_24_FLG = 1 ----------------| | | --- ELSE --- PIPOUT/ENGCYL = 2 -------------| | |AND -| TLSPAT = TLS34S TLS_34_FLG = 1 ----------------| | | --- ELSE --- PIPOUT/ENGCYL = 1 -------------| | (double fire) | | |AND -| TLSPAT = TLS24D TLS_24_FLG = 1 ----------------| | | --- ELSE --- PIPOUT/ENGCYL = 1 -------------| | |AND -| TLSPAT = TLS34D TLS_34_FLG = 1 ----------------| | | --- ELSE --- | | TLSPAT = 65535 CONVERT PULSEWIDTH TO CLOCK TICKS (can be entered from CRANK MODE FUEL PULSEWIDTH) always ------------------------------| BGFUEL = [FUEL_A * (BASEFF + | EFTRFF) * PWCF] * FREQ18 | (FREQ18 = 1/3 * 10E-6 ticks per sec) CALCULATE NUMBER OF PIPS BETWEEN INJECTIONS (FUEL_PIPS) (used in FUEL SERVICE FOREGROUND routine) PIPOUT * OUTINJ always ------------------------------| FUEL_PIPS = --------------- NUMOUT 6-88 FUEL STRATEGY, BACKGROUND PULSEWIDTH DETERMINATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DETERMINE STATE OF FOREGROUND FUEL FLAG (FFULFG) BFULSW = 1 --------------------| | MFMFLG = 1 --------------------| |OR --| FFULFG = 0 CRKFLG = 1 --------------------| | (do background fuel) | | REFFLG = 1 --------------------| | | --- ELSE --- | | FFULFG = 1 | (do foreground fuel) CALCULATE FOREGROUND PARTS OF THE FUEL EQUATION (FFULM, FFULC) always ------------------------------| FFULM = FUEL_A * [(BASEFF + | BASE_EM) / MAPWBG] * | PWCF | FFULC = FUEL_A * (EFTRFF - | BASE_EM) * PWCF CALCULATE INJECTOR DELAY (CIBETA) always ------------------------------| Do "INJECTOR DELAY" Logic VBAT INJECTOR OFFSET FN367(VBAT) is compensation for low battery voltage. It is added to the fuel pulsewidth in foreground as the pulse is sent out. The displayed pulsewidth does not include FN367. 6-89 FUEL STRATEGY, FUEL PUMP CONTROL LOGIC - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL PUMP CONTROL LOGIC OVERVIEW EFI vehicles are equipped with an electric fuel pump controlled by the computer via a relay. The fuel pump relay is energized according to the logic below. DEFINITIONS INPUTS Registers: - TSLPIP = Timer indicating time since last PIP low-to-high transition, sec. OUTPUTS Registers: - PUMP = Bit flag indicating fuel pump mode; 0 -> fuel pump disabled, 1 -> fuel pump enabled. PROCESS STRATEGY MODULE: FUEL_PUMP_COM1 TSLPIP < 1 SECOND -----------------| PUMP = 1 | | --- ELSE --- | | PUMP = 0 6-90 FUEL STRATEGY, PPCTR CONTROL - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PPCTR CONTROL (Updated during PIP_DATA foreground routine) OVERVIEW This counter counts PIPs when not in Decel Fuel Shut-Off. PPCTR is updated at PIP rising edge before injector pulsewidth is calculated and output. DEFINITIONS INPUTS Bit Flags: - DFSFLG = Decel Fuel Shut-Off flag; 1 -> the decel fuel multiplier is not one. Calibration Constants: - PIPNUM = Number of PIPs to remain in Open Loop fuel after DFSO. Prevents LAMBSE from ramping off rich due to normal transport delay time. Set to 1 to calibrate out. OUTPUTS Registers: - PPCTR = PIP counter; updated at PIP rising edge before injector pulsewidth is calculated and output. PROCESS STRATEGY MODULE: FUEL_PPCTR_COM2 DFSFLG = 0 -----------------------------------| Increment PPCTR every PIP | Clip at PIPNUM | | --- ELSE --- | | PPCTR = 1 6-91 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL SERVICE ROUTINE (foreground module FUEL_SERVICE executed on PIP falling edge in CRANK and PIP rising edge in UNDSP & RUN) OVERVIEW The purpose of the Fuel Service module is to issue the on-off signals to the injectors to attain the desired amount of fuel (FUELPW) at the desired time in the engine cycle (TOTAL_DELAY). This module also updates the background calculated fuel pulsewidth to the most current MAP if so desired (Foreground Fuel). A software switch, OUTINJ, can be calibrated to yield the desired injection scheme: OUTINJ = 1 -----------------------------------| ALTERNATE INJECTIONS | | --- ELSE --- | OUTINJ = 2 -----------------------------------| SIMULTANEOUS INJECTIONS 6-92 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - BGFUEL = Background fuel pulsewidth, clock ticks. - CRKPIP = Number of PIPs between injector firing. - ENGCYL = Number of PIPs (or injections) per revolution. - FFULM = The valve which is multiplied by MAP_WORD in the foreground fuel pulsewidth equation, lb/cyl -- " Hg. - FUEL_PIPS = Number of PIPs which have occurred between injections. - FUEL_SUM_TKS = Register for DOL summer, ticks. - FUELPW = Fuel pulsewidth, displayed in clock ticks. - IBETA = Fractional part of total injector delay, PIPs. - INJ_PIP_CNT = Counter which counts the number of PIPs between injections. - INJCNT = Injector portion of total delay. - MAP_WORD = Manifold absolute pressure, " Hg. - N = Engine rpm. - NUMOUT = Number of injector output ports. - OUTINJ = Injector scheme selection switch; 1 -> alternate injections, 2 -> simultaneous injections. - SYNCTR = Counter which counts PIP signals until its value equal NUMCYL; always initialized to zero. - TLSCTR = Torque limiting strategy injection counter. - TLSPAT = Torque limiting strategy injection pattern. 6-93 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Bit Flags: - CRKFLG = Flag indicating engine mode; 1 -> crank mode, 0 -> run or underspeed. - DSFFLG = Decel fuel shutoff flag; 1 -> the decel fuel multiplier is not one. - FFULFG = Foreground fuel flag; 1 -> compute fuel pulsewidth in foreground using latest computed manifold absolute pressure, 0 -> otherwise use background fuel pulsewidth. - FUEL_FINISHED = Flag indicating status of fuel calculations; 1 -> fuel calculations are complete. - INJ_BANK = Flag indicating which injector bank is being energized; 0 -> Bank A, 1 -> Bank B. - NO_SYNC = 1 -> Fuel injectors are not sychronized with the Signature PIP. - PIPOUT = Number of PIP periods betwen injector outputs on each injector port. - RUNNING = Engine running VIP enable flag. - STALL = Flag which indicates Run to Crank transition. - SYNFLG = Signature PIP correctly identified flag; 1 -> Signature PIP in correct place, 0 -> not Signature PIP or in wrong place. - TLS_24_FLG = Torque limiting strategy - 1/2 fuel flag; 0 -> normal fuel, 1 -> 1/2 fuel. - TLS_34_FLG = Torque limiting strategy - 3/4 fuel flag; 0 -> normal fuel, 1 -> 3/4 fuel. - TLS_NV_FLG = Engine RPM/Vehicle speed limiting flag. - UNDSP = Engine mode flag; 1 -> cranking or underspeed, 0 -> run. Calibration Constants: - DT12S = The value, in clock ticks, of the current PIP period. - FFULC = The constant which is added in the foreground fuel pulsewidth equation, lb/cyl. - FREQ18 = Seconds to clock ticks conversion factor. 1 clock tick = 3 * 10E-6 seconds. - MINPW = Minimum pulsewidth for repeatable fuel delivery. - STALLN = Stall rpm: If the first rpm calculated is greater than this value, then assume a reinit occurred, rpm. 6-94 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS Registers: - FUELPW = See above. - FUEL_SUM_TKS = See above. - IBETA = See above. - INJ_PIP_CNT = See above. - INJCNT = See above. - SYNCTR = See above. - TLS_SHFTR = Foreground scratch register for injection pattern. - TLSCTR = See above. Bit Flags: - FUEL_FINISHED = See above. - FUEL_SYNC = See above. - INJ1_PIP = Injector number one PIP occurred, if set to one. - INJ2_PIP = Injector number two PIP occurred, if set to one. - NO_SYNC = See above. - STALL = See above. - SYNFLG = See above. 6-95 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_INJ_OUT_COM6 FUEL SERVICE START STALL = 1 ---------------------------| STALL = 0 (N < STALLN) | SYNFLG = 0 | SYNCTR = 0 | FUEL_SYNC = 0 | NO_SYNC = 0 | INJ_PIP_CNT = 1 Divide TOTAL_DELAY into an integer portion, INJCNT and a fraction portion, IBETA. TOTAL_DELAY = 0 ---------------------| IBETA = 0 | INJCNT = 0 | SYNCH_VALUE = 0 | Do: "FUEL FIRING PIP" | | --- ELSE --- | | IBETA = TOTAL_DELAY - INJCNT IBETA < 0 ---------------------------| IBETA = 0 | INJCNT = 0 | SYNCH_VALUE = 0 | Do: "Fuel Firing PIP" | | --- ELSE --- | IBETA >= 1.0 ------------------------| IBETA = IBETA - 1 | INJCNT = INJCNT + 1 | INJ_PIP_CNT = INJ_PIP_CNT + 1 | (number of PIPs between injections) always ------------------------------| SYNCH_VALUE = (2 * ENGCYL) - INJCNT SYNCH_VALUE <= 0 --------------------| IBETA = 0 | INJCNT = 0 | SYNCH_VALUE = 0 | Do: "FUEL FIRING PIP" SYNCH_VALUE = 2 * ENGCYL ------------| SYNCH_VALUE = 0 6-96 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL FIRING PIP Check to see if this is the correct PIP for firing fuel. SYNCH_VALUE is the integer portion of TOTAL_DELAY. SYNFLG = 1 --------------------| (PIP in synch) | | SYNCTR = SYNCH_VALUE ----------| (proper PIP for fuel firing) | |AND -| FUEL_SYNC = 1 INJ_BANK = 0 ------------------| | (PIP is synched with fuel) (signature PIP must contain | | bank A) | | | | INJ_PIP_CNT = 1 ---------------| | | --- ELSE --- SYNFLG = 1 --------------------| | |AND -| NO_SYNC = 1 SYNCTR = SYNCH_VALUE ----------| | (PIP is synched but fuel is on | wrong bank) always ------------------------------| Decrement INJ_PIP_CNT INJ_PIP_CNT > 0 ---------------------| EXIT "FUEL SERVICE" routine | (no fuel to be output this PIP) 6-97 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FOREGROUND FUEL DETERMINATION FFULFG = 1 --------------------------| FUELPW = (FFULM * MAP_WORD) + FFULC | (use foreground fuel calculation) | | --- ELSE --- | FFULFG = 0 --------------------------| FUELPW = BGFUEL | (use background fuel calculation) MINIMUM PULSEWIDTH CLIP DSFFLG = 0 --------------------| (not in DFSO) | | RUNNING = 0 -------------------| (not in VIP) |AND -| FUELPW = MINPW * FREQ18 | | (convert to clock ticks) FUELPW < MINPW ----------------| | (less than minimum pulse) | | | | FFULFG = 1 --------------------| | | --- ELSE --- FUELPW >= 0.250 ---------------| | |AND -| FUELPW = .25 * FREQ18 FFULFG = 1 --------------------| | | --- ELSE --- | FFULFG = 1 --------------------------| FUELPW = FUELPW * FREQ18 | (FREQ18 = 1/3 * 10E-6 ticks per sec) always ------------------------------| INJ_PIP_CNT = FUEL_PIPS | (FUEL_PIPS = [PIPOUT * OUTINJ] | /NUMOUT) | FUEL_SUM_TKS = FUEL_SUM_TKS + FUELPW CRKFLG = 1 --------------------------| INJ_PIP_CNT = CRKPIP (crank mode) | (fire every CRKPIP PIPs in | crank mode) UNDSP = 0 ---------------------| (run mode) |AND -| Decrement INJ_PIP_CNT | | (walk injector bank B NO_SYNC = 1 -------------------| | back 1 PIP at a time) (fuel not synched) 6-98 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL INJ_PIP_CNT <= 0 --------------------| INJ_PIP_CNT = 1 | FUEL_FINISHED = 0 | | --- ELSE --- | | FUEL_FINISHED = 0 OUTINJ = 2 --------------------------| INJ_BANK = 0 (simultaneous injections) | (always start with bank A) always ------------------------------| NEW_DELAY = 1 | (request new IBETA) 6-99 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FUEL_REPEAT This section sets up the fuel output edge, if required. TLS_NV_FLG = 0 ----------------| | TLS_24_FLG = 0 ----------------|AND -| TLSCTR = 1 | | Do: "SET UP INJECTOR OUTPUT EDGE" TLS_34_FLG = 0 ----------------| | | --- ELSE --- | | Decrement TLSCTR | (check next bit in pattern) TLSCTR = 0 --------------------------| TLSCTR = 16 (pattern completed) | TLS_SHFTR = TLSPAT Always ------------------------------| Shift TLS_SHFTR 1 bit to the left carry bit = 1 -----------------------| Do: "SET UP INJECTOR OUTPUT EDGE" (OK to output fuel this PIP) | | --- ELSE --- | | SKIP "SET UP INJECTOR OUTPUT EDGE" | but continue through FUEL_REPEAT SET UP INJECTOR OUTPUT EDGE UNDSP = 1 ---------------------------| injector edge = (Time of last PIP | rising edge) | Set immediate output request | | --- ELSE --- | | injector edge = (Time of last PIP | rising edge) + | (DT12S * IBETA) FUELPW <> 0 -------------------| |AND -| INJ1_PIP = 0 INJ_BANK = 0 ------------------| | (injection A occurred) | | --- ELSE --- | | INJ2_PIP = 0 | (injection B occurred) NUMOUT = 2 --------------------------| Toggle INJ_BANK (2 banks) | (do next bank) 6-100 FUEL STRATEGY, FUEL SERVICE ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL NUMOUT = 2 --------------------| (2 outputs) | | FUEL_FINISHED = 0 -------------|AND -| FUEL_FINISHED = 1 | | NO_SYNC = 0 CRKFLG = 1 --------------| | | Do: "FUEL_REPEAT" | | | OUTINJ = 2 --------------|OR --| | | | PIPOUT = 2 --------| | | |AND -| | NO_SYNC = 1 -------| | | --- ELSE --- | | NO_SYNC = 0 | EXIT "FUEL SERVICE" routine 6-101 FUEL STRATEGY, INJECTOR TIMING ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL INJECTOR TIMING ROUTINE (Done during PIP_DATA foreground routine) OVERVIEW CRANK or UNDERSPEED mode (UNDSP = 1) OR MHPFD = 0.99 The injector synchronization routine is disabled and SYNFLG is cleared. RUN mode (UNDSP = 0) AND MHPFD < 0.99 The injector synchronization routine is enabled. The objective of the routine is to identify the cylinder #1 PIP and to alter the injector timing schedule so that Injector Output Port "A", which fires Injector #1, is synchronized with the cylinder #1 PIP. NOTE: THE USER MUST SET UP THE TWO INJECTOR OUTPUT PORTS SUCH THAT THE CYLINDER #1 INJECTOR IS FIRED BY INJECTOR OUTPUT PORT "A". A Signature PIP distributor must be used in order to achieve the identification of the cylinder #1 PIP. Refer to the Spark Section for a description of the Signature PIP Distributor. When a new PIP down-edge-interrupt is received, HFDLTA (the elapsed time since the last up-edge-interrupt was seen) is calculated. Next, the fractional difference between HFDLTA and the previous up-edge to down-edge elapsed time, PHFDLT, is calculated and compared to a critical value, MHPFD, as shown below: (PHFDLT - HFDLTA) / PHFDLT > MHPFD ? MHPFD is a calibration constant which is dependent only upon number of cylinders and the value of the Signature PIP duty cycle. The user must calibrate MHPFD to the appropriate value as shown below: - If 8-cyl & Signature PIP duty cycle <= 35%, then set MHPFD = .20 - If 6-cyl & Signature PIP duty cycle <= 30%, then set MHPFD = .24 - If 4-cyl & Signature PIP duty cycle <= 30%, then set MHPFD = .29 NOTE: IF A SIGNATURE PIP DISTRIBUTOR IS NOT PRESENT, THEN SET MHPFD = .99 When the above comparison is true, then the current PIP is the Signature PIP. If Injector Output Port "A", which fires Injector #1, is timed from the up-edge of the Signature PIP, then the system is synchronized. 6-102 FUEL STRATEGY, INJECTOR TIMING ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL If the system is determined to be unsynchronized, then Injector Output Port "B" is fired one PIP earlier than normal. This causes the injector firing schedule to be shifted one PIP per revolution until synchronization is achieved. A decrementing counter, SYNCTR, that starts at the number of cylinders and counts down to 0, 1 count per PIP, is used to predict when the Signature PIP should be seen again after it is first identified. Each time that SYNCTR = 0 and the above comparison is true, a synchronization flag, SYNFLG, is set to 1 and SYNCTR is reset to the number of cylinders. If the above comparison is ever false when SYNCTR = 0, then SYNFLG is set to 0, and the entire synchronization routine of first finding the Signature PIP and then "Stepping" the injection firing schedule to it is repeated. 6-103 FUEL STRATEGY, INJECTOR TIMING ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ENGCYL = Number of PIPs (or injections) per revolution. - HFDLTA = Most recent PIP first half period. - MHPFD = Signature PIP difference check value. - MKAY = Half period multiplier to correct for average error caused by Hall effect sensor in distributor and armature. - PHFDLT = Previous PIP first half period. - SIGKAL = Signature PIP half period multiplier - initial value = 1.66666 for 30% duty cycle signature PIP = 1.42857 for 35% duty cycle signature PIP. - SYNCTR = Counter which counts PIP signals until its value is equal to NUMCYL (number of cylinders). SYNCTR is initialized to 0. Bit Flags: - SIGPIP = A flag that indicates that signature PIP half period has been identified; 1 -> signature PIP, 0 -> not signature PIP. - UNDSP = Flag indicating engine mode; 1 -> Cranking or Underspeed, 0 -> Run mode. OUTPUTS Registers: - HFDLTA = See above. - SYNCTR = See above. Bit Flags: - SIGPIP = See above. - SYNFLG = Signature PIP correctly identified flag; 1 -> Signature PIP in correct place, 0 -> not Signature PIP or in wrong place. 6-104 FUEL STRATEGY, INJECTOR TIMING ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: FUEL_INJ_TIM_COM2 (PHFDLT - HFDLTA) / PHFDLT > MHPFD -| SIGPIP = 1 | (this is signature PIP) | | --- ELSE --- | | SIGPIP = 0 | (not signature PIP) SYNCTR <> 0 ------------------------| EXIT (not cylinder #1) | | --- ELSE --- | UNDSP = 1 --------------------------| SYNCTR = 2 * ENGCYL (not RUN mode) | EXIT | (do not attempt to | synchronize fuel in | CRANK or UNDERSPEED) | | --- ELSE --- SIGPIP = 1 -------------------| | (signature PIP) |AND -| SYNFLG = 1 | | (in synch OK to SYNCTR = 0 -------------------| | synchronize fuel) (cylinder #1) | HFDLTA = (HFDLTA * | SIGKAL) / MKAY | (correct signature PIP to | 50% duty cycle) | SYNCTR = 2 * ENGCYL | EXIT | | --- ELSE --- | | SYNFLG = 0 | (not in synch) | SYNCTR = (2 * ENGCYL) - 1 | EXIT 6-105 FUEL STRATEGY, INJECTOR TIMING ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 6-106 CHAPTER 7 IGNITION TIMING STRATEGY 7-1 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL BASE SPARK ANGLE CALCULATION (background calculation) OVERVIEW The spark advance provided by the Ignition Timing Strategy depends on the engine operating mode. The three modes are: 1. SELF TEST - See SELF TEST Section 2. CRANK/UNDERSPEED MODE The Spark Advance, SAF, is set at 10 deg BTDC. The spark is fired when the PIP rising edge signal is received. 3. RUN MODE (includes all throttle modes) During RUN MODE, the spark strategy can operate in any one of the following four distinct states: - state 0 = Normal spark state. Spark advance is calculated from the spark tables and modifying functions. Normal spark is used as the starting point for the transition ramp into idle spark, and as the ending point for the transition out of idle spark. - state 1 = Entry spark state. The purpose of this state is to provide a smooth transition into feedback spark state. Spark is ramped from its last value in normal spark state to the mean operating point for feedback spark state. At the same time, the proportional component is increased to its maximum contribution. - state 2 = Feedback spark state. In this state, there is a mean value for idle spark. A proportional gain term increases spark above the mean value if RPM is too low, and decreases spark below the mean value if RPM is too high. The error term, RPMERR_S, is filtered using time constant TCFBS. - state 3 = Exit spark state. The purpose of this state is to provide a smooth transition from feedback spark state to normal spark state. Spark is filtered toward the value of normal spark at a rate which is proportional to TAR using filter constant FKEXIT. At high throttle rates, spark moves immediately to the normal value. 7-2 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Depending on the value of SPK_STATE, the base spark advance in RUN MODE equals: SAF = SPK_NORM (SPK_STATE = 0) or SPK_ENTRY (SPK_STATE = 1) or SPK_FBS (SPK_STATE = 2) or SPK_EXIT (SPK_STATE = 3) 7-3 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPARK STATE TRANSITION DIAGRAM (For transitions between normal and feedback spark) DEFAULT --------- __ POWER UP | | / 2 | V V ------------------- | normal spark | ENTRY CONDITIONS EXIT COMPLETE | | TRUE --------->| SPK_STATE = 0 |---------- | | SAF = SPK_RUNUP | 1 | | | or SPK_NORM | | | ------------------- | | | | 2 ENTRY CONDITIONS V D 3 ----------------- TRUE ----------------- D E ---| exit spark |-------------------->| entry spark |<--- E F | | | 1 | | | F A | | SPK_STATE = 3 | | SPK_STATE = 1 | | A U | | SAF = SPK_EXIT | 1 | SAF = SPK_ENTRY | | U L -->| |<--------------------| |---- L T ----------------- EXIT CONDITIONS ----------------- 3 T TRUE 2 | | | | | | ------------------- | | | feedback spark | | | 1 | | | ----------| SPK_STATE = 2 |<--------- EXIT CONDITIONS | SAF = SPK_FBS | ENTRY COMPLETE TRUE | | ------------------- 2 | | | --------- DEFAULT NOTES: - Boxes represent the 4 states in which the RUN MODE spark can exist. - The contents of the boxes show the actions which take place during that state. - Arrows represent transitions from one state to another (from one box to another). - Numbers on the arrows indicate priority of that transition, compared to the priorities of other transitions out of the same state (out of the same box). - Labels on the arrows represent logic which determines whether of not that particular transition is to take place. 7-4 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS Registers: - ACT = Air Charge Temperature, deg F. - APT = Throttle Mode; -1 -> Closed Throttle, 0 -> Part Throttle, 1 -> Wide Open Throttle. - ATMR1 = Time since leaving CRANK Mode, sec. See TIMER chapter. - BRDRLN_SPK = Maximum SAF clip in spark states 1 and 2. Calculated using MBT and OCTANE subtractor terms in SPK_NORM equation, deg BTDC. - DASPOT = Dashpot contribution to idle air flow, ppm. See Idle Speed Control chapter for calculation. Used here as input to Dashpot Spark multiplier, FN839. - DNDT_SPK = Filtered rate of change of engine RPM for OSCMOD, RPM/sec. Filtered using time constant TCNDT_SPK. - DSDRPM = Desired engine idle speed, RPM. - ECT = Engine Coolant Temperature, deg F. - EGRACT = Actual EGR Percentage, _%. - FKEXIT = TAR/TARMAX, unitless. Filter constant for spark ramping function in SPK_STATE 3. FKEXIT is clipped between FKEXIT_MAX as a maximum, and FKEXIT_MIN as a minimum. - IDLTMR = Time since entering Idle mode, sec. See TIMER Chapter. - ISCFLG = ISC mode indicator; -1 -> Dashpot Mode; 0 -> Dashpot Preposition Mode; 1 -> Closed Loop RPM Control Mode; 2 -> Closed Loop RPM Control (Lock-out entry to RPM control). - KSPARK = Gain term for feedback spark, (deg/RPM). There are 4 values: KSPKDO, KSPKDU, KSPKNO and KSPKNU for drive/speed high, drive/speed low, neutral/speed high, and neutral/speed low, respectively. - MAP = Manifold Absolute Pressure, "Hg. - N = Engine Speed, RPM. - N_BYTE = Engine Speed, rpm; resolution is 16 RPM. - OSCMOD = Oscillation mode spark multiplier, unitless. - OSCTMR = OSCMOD spark delay timer, sec. See TIMERS chapter. - RPMERR = DSDRPM - N. Idle speed error term, RPM. - RPMERR_S = RPM error term for feedback spark. Time dependent rolling average filter of the instantaneous RPM error, RPMERR, using time constant TCFBS. 7-5 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - SAF = Final Spark Advance, deg BTDC. Method of calculation depends on SPK_STATE. - SPKAD(n) = Spark advance adjustment term for knock for cylinder "n". See KNOCK Strategy. - SPK_ENTRY = Spark advance used when in SPK_STATE "1" to ramp from normal spark to feedback spark, deg BTDC. - SPK_EXIT = Spark advance used when in SPK_STATE "3" to ramp from feedback spark to normal spark, deg BTDC. - SPK_FBS = Spark advance used in SPK_STATE "2" to do feedback spark control, deg BTDC. - SPK_IDLE = Mean operating point for spark in feedback spark state, deg BTDC. Equals SPKIDR in drive, or SPKINU - FN180 in neutral. - SPK_NORM = Normal Mode Spark value, deg BTDC. - SPK_RAMP = Time dependent rolling average filter of spark advance, deg BTDC. Uses SPK_IDLE as the "new" value and time constant TCRAMP. Used in calculating SPK_ENTRY in SPK_STATE "1" to ramp spark from the last value in the previous state to the spark for feedback spark mode. - SPK_STATE = Spark State indicator; 0 -> Normal spark, 1 -> entry spark, 2 -> feedback spark, 3 -> exit spark. - SPKTMR = Spark feedback entry transition timer, sec. Used to pace the transition into feedback spark control. Set to 0 on entry into SPK_STATE "1". Otherwise, counts up. - TAPBAR = A time and MAP dependent rolling average of TP, counts. - TAR = Throttle angle rate of change, deg/sec. - TCSTRT = ECT at start-up, deg F. - TIPRET = Tip-in Spark retard term, deg BTDC. See KNOCK section. - TP = Throttle Position, counts. - TP_REL = Relative Throttle Position, counts. TP - RATCH. - TPDLBR = Filtered change of throttle position, counts. Time constant is TCTPDL. - TRANS_T = SPKTMR/STTIM, unitless. Transition pacer used to ramp in the effect of feedback spark during SPK_STATE "1". Set to 0 on transition into state 1, and clipped to 1.0 maximum. Feedback spark cannot be entered until TRANS_T reaches ENTRY_T. - VSBAR = Filtered vehicle speed, MPH. Bit Flags: - ALT_CAL_FLG = Flag to indicate use of alternate calibration. 7-6 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - CSSFLG = Cold start spark flag: 0 -> no cold start spark required; 1 -> cold start spark required. - DNDSUP = Delayed Neutral/Drive state flag. Set equal to NDSFLG when delay is complete; 1 -> drive, 0 -> neutral. See SYSTEM EQUATIONS chapter. - MPGFLG = Flag that indicates state of Fuel Economy mode: 1 -> in Fuel Economy mode; 0 -> Not in Fuel Economy mode. - NEWSA = Flag which indicates that a new spark advance calculation is required; 1 = new PIP received since last spark calculation. - PTSCR = Part throttle since crank mode flag: 0 -> driver has not tipped in since start; 1 -> driver tipped in, kick down desired RPM. - RUNUP_FLG = Flag indicating if initial runup is complete; 0 -> runup not complete, 1 -> runup complete. - SA10FG = Flag indicating if spark advance should echo PIP in RUN mode; 0 -> do RUN mode spark advance logic, 1 -> Set SAF to 10 deg. BTDC and fire spark on rising edge of PIP. - UNDSP = Flag indicating Engine mode; 0 -> RUN mode, 1 -> UNDERSPEED or CRANK mode. - V_MODE_SETUP = VIP throttle adjust mode enabled flag; 1 -> enabled. Calibration Constants: - CSHIGH = Maximum TCSTRT for cold start spark, deg F. - CSLOW = Minimum TCSTRT for cold start spark, deg F. - CSSPRK = Cold start spark multiplier, unitless. - CSSTIM = Maximum time to use cold start spark, sec. - DELTA_SPK = Deadband to determine when spark transitions are complete, deg BTDC. - DFTRPM = Maximum engine rpm to issue spark on the rising edge of PIP when at WOT, RPM. - DFTRPH = Hystersis term for DFTRPM, RPM. - DRBASE = Base desired engine idle speed in drive, RPM. - DRBASE_ALT = Alternative Cal DRBASE. - ENGCYL = Number of PIP up edges per revolution; (number of cylinders/2). - ENTRY_T = Time threshold for entry into feedback spark, sec. - FBS_MIN = Minimum clip on SAF in states 1 and 2, deg BTDC. - FBS_MIN_ALT = Alternative Cal FBS_MIN. 7-7 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - FKEXIT_MAX = Maximum clip for FKEXIT, SPK_EXIT filter constant, unitless. - FKEXIT_MIN = Minimum clip for FKEXIT, SPK_EXIT filter constant, unitless. - FN070(N) = RPM normalizing function for FN1120, FN1121, FN1122, FN1126, FN1127 and FN1129. - FN071(MAP) = MAP normalizing function for FN1120, FN1121, FN1122, FN1126, FN1127 and FN1129. - FN091(TEMP_FRAC) = TEMP_FRAC normalizing function for FN1128, where TEMP_FRAC = FRCCTM * ACT + (1 - FRCCTM) * ECT. - FN092(TP - TAPBAR) = TP - TAPBAR normalizing function for FN1128. - FN151(ECT) = Octane Table (FN1122) multiplier vs. ECT. - FN152(ACT) = Octane Table (FN1122) multiplier vs. ACT. - FN153(N) = WOT Spark Adder for Fuel Enrichment (APT = 1) vs engine speed. - FN180(IDLTMR) = Spark reduction vs. time at idle (IDLTMR). Used as part of the inspection/maintenance strategy. - FN182(DNDT_SPK) = Oscillation mode spark adder vs rate of change of engine speed. - FN183(VSBAR) = Multiplier on oscillation mode spark adder (FN182) vs VSBAR. - FN839(DASPOT) = Decel spark multiplier as a function of dashpot air flow. - FN1120(N,MAP) = Base MBT Spark Table, deg BTDC. - FN1121(N,MAP) = Spark Advance Adder Table for EGR, deg BTDC per 1% EGR. - FN1122(N,MAP) = Spark Advance Reduction Table for Octane, deg BTDC. - FN1126(N,MAP) = Base spark table for MPG mode, deg BTDC. - FN1127(N,MAP) = Spark Advance Adder Table for Cold Temperatures and tip-ins. - FN1128 = Multiplier for FN1127 vs TEMP_FRAC and TP - TAPBAR - FN1129(N,MAP) = Spark Advance Adder Table for EGR in MPG mode, deg BTDC per 1_% EGR. - FN1150 = Spark octane multiplier of FN1122(N,MAP); inputs are FN051(ECT) and FN052(ACT). - FN1150_ALT = Alternate FN1150. - FRCCTM = ACT/ECT proportioning factor for temperature input to FN1128. - KS1 = Spark Adder, deg BTDC. 7-8 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - KSPKDO = Feedback spark gain - Drive/speed high, deg BTDC/RPM. - KSPKDU = Feedback spark gain - Drive/speed low, deg BTDC/RPM. - KSPKNO = Feedback spark gain - Neutral/speed high, deg BTDC/RPM. - KSPKNU = Feedback spark gain - Neutral/speed low, deg BTDC/RPM. - MINMPH = Minimum speed to enter Closed Loop RPM control and do feedback spark control, MPH. ..Typical value - 3 MPH. - NUBASE = Base desired engine idle speed in neutral, RPM. - NUBASE_ALT = Alternative Cal NUBASE. - OSCDLY = OSCMOD disable time after large negative change in TP, secs. - SPKCTL = Maximum difference between DSDRPM and DRBASE/NUBASE to enable spark feedback, RPM. - SPKCTL_ALT = Alternative Cal SPKCTL. - SPKIDR = Nominal feedback spark operating point in drive, deg BTDC. - SPKIDR_ALT = Alternative Cal SPKIDR. - SPKINU = Nominal feedback spark operating point in neutral, deg BTDC. - SPKINU_ALT = Alternative Cal SPKINU. - SPK_RUNUP = Value used for SAF after entering RUN mode and before initial runup is complete, deg BTDC. - SPLCLP = Lower spark clip for total spark advance (SAFTOT, including knock and TIPRET terms), deg BTDC. - SPKLIM = Percent of "crank degrees between PIPs" used to determine the maximum spark advance increase allowed between consecutive spark events. Do NOT calibrate higher than 0.06 without Ignition Department approval. Maximum spark advance increase between events varies with the number of cylinders; Maximum increase = SPKLIM * 360/ENGCYL. For 4 cyl; 0.06 * 360/2 = 10.8 degrees 6 cyl; 0.06 * 360/3 = 7.2 degrees 8 cyl; 0.06 * 360/4 = 5.4 degrees - SPUCLP = Upper spark clip for total spark advance (SAFTOT, including knock and TIPRET terms), deg BTDC. - STTIM = Time after transition into SPK_STATE "1" when TRANS_T will equal 1.0, sec. Controls rate at which feedback spark is included in SPK_ENTRY. - TARMAX = Maximum TAR to ramp into normal spark. deg/sec. Higher TARs will cause SAF to jump to SPK_NORM. 7-9 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - TCFBS = Time constant for RPMERR_S rolling average filter, sec. - TCRAMP = Time constant for SPK_RAMP rolling average filter, sec. - TPDLMX = Maximum filtered TP change for oscillation mode spark, counts. - TPOBP2 = Maximum TP_REL for oscillation mode spark, counts. - TPOH2 = Hysteresis for TPOBP2, counts. - Y = Calibration development spark multiplier, unitless. - VSOMAX = Maximum VSBAR for oscillation mode spark, MPH. - VSOMXH = Hysteresis for VSOMAX, MPH. 7-10 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS Registers: - BRDRLN_SPK = See above. - FKEXIT = See above. - KSPARK = See above. - OSCMOD = See above. - SAF = See above. - SAFTOT = Total spark advance, including knock and tip-in retard, deg BTDC. SAFTOT = SAF + SPKAD(n) + TIPRET - SPK_ENTRY = See above. - SPK_EXIT = See above. - SPK_FBS = See above. - SPK_IDLE = See above. - SPK_NORM = See above. - SPK_RAMP = See above. - SPK_STATE = See above. - SPKTMR = See above. - TRANS_T = See above. Bit Flags: - CSSFLG = See above. - NEWSA = See above. - SA10FG = See above. 7-11 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: SPARK_BASE_COM2 NORMAL SPARK CALCULATION (SPK_NORM) (All spark states) SPK_NORM refers to the value of spark advance determined from the spark tables and appropriate modifying functions as shown below. SPK_NORM is the value used for SAF when SPK_STATE = 0. However, SPK_NORM is always calculated, even if SPK_STATE is not 0, to provide the correct value to the SPK_EXIT calculation when leaving feedback spark. APT = 1 -------------------------| |AND -|S Q--| SA10FG = 1 N_BYTE < DFTRPM -----------------| | | | | --- ELSE --- APT < 1 -------------------------| | | |OR --|C | SA10FG = 0 N_BYTE > DFTRPM + DFTRPH --------| UNDSP = 1 -----------------------------| |OR --| SAF = 10 deg BTDC SA10FG = 1 ----------------------------| | EXIT Base Spark Angle Logic | | --- ELSE --- | NEWSA = 0 -----------------------------------| Do NOT update SAF (previous value not used yet) | EXIT Base Spark Angle Logic | | --- ELSE --- | NEWSA = 1 -----------------------------------| Continue with Base Spark | Angle Logic | Calculate new SAF based on | SPK_STATE 7-12 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ALT_CAL_FLG = 1 -----------------------------| fn1150 = FN1150_ALT(ECT,ACT) | | --- ELSE --- | | fn1150 = FN1150(ECT,ACT) SPK_NORM = {(FN1120 or FN1126 MBT SPARK + FN1127 * FN1128 COLD TEMP and TIP IN ADDER + (FN1121 or FN1129) * EGRACT EGR ADDER - FN1122 * fn1150(ECT,ACT) OCTANE SUBTR. [+ FN153] WOT ADDER [+ OSCMOD]) OSCILLATION SPARK ADDER [* FN839] DASHPOT MULT. [* CSSPRK] COLD START MULT. * Y} DEVELOPMENT MULT. + KS1 DEVELOPMENT ADDER. MPGFLG = 0 ----------------------------| Use FN1120(N,MAP) and FN1121(N,MAP) (not MPG mode) | | --- ELSE --- | | Use FN1126(N,MAP) and FN1129(N,MAP) NOTE: Terms enclosed by "[ ]" are optional. See following logics to determine their usage. WIDE OPEN THROTTLE SPARK ADDER APT = 1 -----------------------------| Include FN153(N) in SPK_NORM (WOT mode) | | --- ELSE --- | | Do NOT include FN153 7-13 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL LIGHT LOAD RPM OSCILLATION ADDER Spark advance can be modulated by to reduce engine RPM oscillations under light load conditions as follows: TP_REL <= TPOBP2 --------------|S Q--| (Near closed throttle) | | | | TP_REL > TPOBP2 + TPOH2 -------|C | | VSBAR <= VSOMAX ---------------|S Q--|AND -| Include OSCMOD = (Not at high speed) | | | FN182(DNDT_SPK) * FN183(VSBAR) | | | in SPK_NORM VSBAR > VSOMAX + VSOMXH -------|C | | | | --- ELSE --- TPDLBR <= TPDLMX --------------------| | (Not a quick tip in) | | Do NOT include OSCMOD in | | SPK_NORM OSCTMR >= OSCDLY --------------------| (Gear change delay) | | ISCFLG <= 0 -------------------------| (Dashpot or preposition) DASHPOT SPARK MULTIPLIER ISCFLG = -1 ---------------------------| Include FN839(DASPOT) in SPK_NORM (Dashpot mode) | | --- ELSE --- | | Do NOT include FN839 COLD START SPARK FLAG AND MULTIPLIER CSLOW < TCSTRT < CSHIGH ---------| (Warm start) | | ATMR1 < CSSTIM ------------------|AND -| CSSFLG = 1 (Cold start spark time) | | (Set cold start spark flag) | | Include CSSPRK in SPK_NORM PTSCR = 0 -----------------------| | | --- ELSE --- | | CSSFLG = 0 | Do NOT include CSSPRK in SPK_NORM 7-14 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL MISCELLANEOUS SPARK CALCULATIONS TRANS_T CALCULATION Always ----------------------------------| TRANS_T = SPKTMR / STTIM | Clip TRANS_T to 1.0 as a maximum SPK_IDLE SELECT LOGIC DNDSUP = 1 ---------------------| |AND -| SPK_IDLE = SPKIDR_ALT ALT_CAL_FLG = 1 ----------------| | | --- ELSE --- | DNDSUP = 1 ---------------------------| SPK_IDLE = SPKIDR | | --- ELSE --- | V_MODE_SETUP = 1 ---------------------| SPK_IDLE = SPKINU (VIP Throttle Adjust mode) | | --- ELSE --- | ALT_CAL_FLG = 1 ----------------------| SPK_IDLE = SPKINU_ALT - | FN180(IDLTMR) | | --- ELSE --- | | SPK_IDLE = SPKINU - | FN180(IDLTMR) 7-15 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL KSPARK SELECT LOGIC V_MODE_SETUP = 1 ------------------------| KSPARK = 0 (VIP Throttle Adjust Mode)0 | | --- ELSE --- DNDSUP = 1 ------------------------| | |AND -| KSPARK = KSPKDO RPMERR_S < 0 ----------------------| | (Drive, speed high) | | --- ELSE --- DNDSUP = 1 ------------------------| | |AND -| KSPARK = KSPKDU RPMERR_S >= 0 ---------------------| | (Drive, speed low) | | --- ELSE --- DNDSUP = 0 ------------------------| | |AND -| KSPARK = KSPKNO RPMERR_S < 0 ----------------------| | (Neutral, speed high) | | --- ELSE --- DNDSUP = 0 ------------------------| | |AND -| KSPARK = KSPKNU RPMERR_S >= 0 ---------------------| | (Neutral, speed low) 7-16 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ENTRY LOGIC -- ENTRY INTO IDLE SPARK ISCFLG >= 1 ------------------------------| (RPM control or lockout) | | ALT_CAL_FLG = 1 --------------| | | | DNDSUP = 1 -------------------|AND -| | | | | DSDRPM - DRBASE_ALT | | | <= SPKCTL_ALT ------------| | | | | DNDSUP = 1 -------------------| | | |AND -| | DSDRPM - DRBASE <= SPKCTL ----| | | (Near Idle RPM) |OR --|AND -| ENTRY CONDITIONS TRUE | | | DNDSUP = 0 -------------------| | | | --- ELSE --- |AND -| | | DSDRPM - NUBASE <= SPKCTL ----| | | | ENTRY CONDITIONS NOT TRUE | | | | ALT_CAL_FLG =1 ---------------| | | | | | DNDSUP = 0 -------------------|AND -| | | | DSDRPM - NUBASE_ALT | | <= SPKCTL_ALT ------------| | | CSSFLG = 0 -------------------------------| (Cold Start spark not in use) EXIT LOGIC -- EXIT FROM IDLE SPARK APT >= 0 -----------------------------| (Tip in) |OR --| EXIT CONDITIONS TRUE | | VSBAR > MINMPH -----------------------| | --- ELSE --- (Vehicle moving) | | EXIT CONDITIONS NOT TRUE ENTRY COMPLETE LOGIC -- CONTINUE WITH FEEDBACK SPARK |SPK_RAMP - SPK_IDLE| <= DELTA_SPK ---| (Spark ramp to idle done) |AND -| ENTRY COMPLETE | | TRANS_T >= ENTRY_T -------------------| | --- ELSE --- (Transition time complete) | | ENTRY NOT COMPLETE 7-17 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL EXIT COMPLETE LOGIC -- CONTINUE WITH NORMAL SPARK |SPK_NORM - SAF| <= DELTA_SPK --------------| EXIT COMPLETE (Spark has filtered to normal value) | | --- ELSE --- | | EXIT NOT COMPLETE 7-18 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPARK STATE DETERMINATION LOGIC SPK_STATE = 0 ------------------------| | (Do fixed runup spark) (Current state is 0) |AND -| SPK_STATE = 0 | | SAF = SPK_RUNUP RUNUP_FLG = 0 ------------------------| | NEWSA = 0 (Initial runup not complete) | | --- ELSE --- SPK_STATE = 0 ------------------| | (Current state is 0) |OR --| | | | | (Transition to entry spark) SPK_STATE = 3 ------------------| |AND -| SPK_STATE = 1 (Current state is 3) | | SPKTMR = 0 | | TRANS_T = 0 ENTRY CONDITIONS TRUE ----------------| | SPK_RAMP = SAF (See entry logic) | Do SPK_ENTRY calculations | SAF = SPK_ENTRY | NEWSA = 0 | | --- ELSE --- SPK_STATE = 0 ------------------------| | (Current state = 0) | | (Do normal spark) |OR --| SPK_STATE = 0 SPK_STATE = 3 ------------------| | | SAF = SPK_NORM (Current state = 3) |AND -| | NEWSA = 0 | | EXIT COMPLETE ------------------| | (See exit complete logic) | | --- ELSE --- SPK_STATE = 1 ------------| | (Current state is 1) |OR --| | | | | SPK_STATE = 2 ------------| |AND -| | (Current state is 2) | | | | | | (Do exit spark) EXIT CONDITIONS TRUE -----------| |OR --| SPK_STATE = 3 (See exit logic) | | Do SPK_EXIT calculations | | SAF = SPK_EXIT SPK_STATE = 3 ------------------------| | NEWSA = 0 (Current state is 3) | | --- ELSE --- (continued on next page) 7-19 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL (continued from previous page) SPK_STATE = 1 ------------------| | (Current state is 1) |AND -| | | | | (Do feedback spark) ENTRY COMPLETE -----------------| |OR --| SPK_STATE = 2 (See entry complete logic) | | Do PK_FBS calculations | | SAF = SPK_FBS SPK_STATE = 2 ------------------------| | NEWSA = 0 (Current state is 2) | | --- ELSE --- | | (Continue entry spark) SPK_STATE = 1 ------------------------------| SPK_STATE = 1 (Current state is 1) | Do SPK_ENTRY calculations | SAF = SPK_ENTRY | NEWSA = 0 7-20 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL ENTRY SPARK CALCULATION (SPK_ENTRY) (state 1) The entry spark calculation is performed in entry spark state (SPK_STATE = 1). The purpose of entry spark state is to perform a smooth transition into feedback spark. This is accomplished by ramping spark from the last value in the previous state to the mean value in feedback spark state. This 'ramp' is referred to as SPK_RAMP. Superimposed on SPK_RAMP is the feedback spark term, KSPARK * RPMERR_S. This term is phased in by a multiplier, TRANS_T, which starts at 0 when the entry state is first entered, and increases to 1.0 at a calibratable rate (the parameter, STTIM defines when TRANS_T reaches 1.0). Therefore, at the same time SPK_RAMP is approaching SPK_IDLE, the feedback component increases from 0 to its maximum contribution (TRANS_T = 1.0). SPK_ENTRY is clipped between FBS_MIN as a minimum and BRDRLN_SPK as a maximum. The minimum clip is done last, so that if BRDRLN_SPK is less than FBS_MIN, SPK_ENTRY will equal FBS_MIN. SPK_ENTRY = SPK_RAMP + TRANS_T * KSPARK * RPMERR_S clips: maximum clip (done first): SPK_ENTRY <= BRDRLN_SPK minimum clip (done last): SPK_ENTRY >= FBS_MIN (or FBS_MIN_ALT if ALT_CAL_FLG = 1) where, - BRDRLN_SPK = FN1120(N,MAP) - FN1122(N,MAP) * FN1150(ECT,ACT) - KSPARK = KSPKDO, KSPKDU, KSPKNO or KSPKNU - RPMERR_S = ROLAV(RPMERR, TCFBS) - SPK_IDLE = SPKIDR or (SPKINU - FN180) - SPK_RAMP = ROLAV(SPK_IDLE, TCRAMP) - SPK_RAMP is initialized to the previous value of SAF on the transition into state 1. - The ramp is considered complete when SPK_RAMP is within DELTA_SPK of SPK_IDLE, and SPK_RAMP is set equal to SPK_IDLE. - |SPK_RAMP - SPK_IDLE| <= DELTA_SPK ---------| SPK_RAMP = SPK_IDLE - TRANS_T = SPKTMR/STTIM SPKTMR and TRANS_T are set to zero on the transition into state 1. Otherwise, SPKTMR always counts up, and TRANS_T is clipped to 1.0 maximum. 7-21 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FEEDBACK SPARK CALCULATION (SPK_FBS) (state 2) The feedback spark calculation is performed in feedback spark state (SPK_STATE = 2). Spark is increased or decreased about a mean value based on a filtered RPM error term (RPMERR_S). Note the equation for SPK_FBS is identical to SPK_ENTRY with TRANS_T = 1.0, and SPK_RAMP = SPK_IDLE. The feedback spark gain has four values: KSPKDO, KSPKDU, KSPKNO and KSPKNU for drive/neutral and overspeed/underspeed, based on DNDSUP and RPMERR_S. SPK_FBS is clipped between FBS_MIN as a minimum and BRDRLN_SPK as a maximum. The minimum clip is done last, so that if BRDRLN_SPK is less than FBS_MIN, SPK_FBS will equal FBS_MIN. SPK_IDLE has values for both neutral and drive. SPK_FBS = SPK_IDLE + KSPARK * RPMERR_S clips: maximum clip (done first): SPK_ENTRY <= BRDRLN_SPK minimum clip (done last): SPK_ENTRY >= FBS_MIN (or FBS_MIN_ALT if ALT_CAL_FLG = 1) where, - BRDRLN_SPK = FN1120(N,MAP) - FN1122(N,MAP) * FN1150(ECT,ACT) - KSPARK = KSPKDO, KSPKDU, KSPKNO or KSPKNU - RPMERR_S = ROLAV(RPMERR, TCFBS) - SPK_IDLE = SPKIDR or (SPKINU - FN180) NOTE: KSPARK is set to zero when in VIP throttle adjust mode; V_MODE_SETUP = 1 7-22 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL EXIT SPARK CALCULATION (SPK_EXIT) (state 3) The exit spark calculation is performed in exit spark state (SPK_STATE = 3). The purpose of exit spark is to perform a smooth transition to normal spark state. This is accomplished by filtering spark from the last value of SAF in the previous state to the present value of normal spark. Normal spark is calculated in all spark states so it will be available as an input to the exit spark equation. The exit rate is controlled by the filter constant, FKEXIT, which is a function of TAR. Higher TARs result in faster filter constants. This allows the exit rate to vary with the type of tip-in which occurs - fast tip-ins have a filter constant of 1.0, so SPK_EXIT goes immediately to SPK_NORM. The relationship between the filter constant and TAR is calibratable. SPK_EXIT = (1 - FKEXIT) * SAF + FKEXIT * SPK_NORM where, - FKEXIT = TAR/TARMAX clips: FKEXIT <= FKEXIT_MAX FKEXIT >= FKEXIT_MIN - SAF = Spark advance from the previous calculation. On the transition into state 3, it will be the last value from the previous state. Otherwise, it will be the previous value of SPK_EXIT. 7-23 IGNITION TIMING STRATEGY, BASE SPARK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL NOTES: - The register SAF does not include the output of the individual cylinder knock strategy. The knock registers, SPKAD(n) and TIPRET, may be displayed separately and are added to SAF by the EOS when the waiting time is calculated. SAFTOT does include SPKAD(n) and TIPRET. However, since SAFTOT is updated on PIP interupts, it may NOT display every update if the background loop time is longer than a PIP period. Refer to the knock strategy documentation within this chapter for additional information on SPKAD and TIPRET. - The final value of spark advance, SAFTOT, is limited to the range: SPLCLP <= SAFTOT <= SPUCLP where, SAFTOT = SAF + SPKAD(n) + TIPRET SPLCLP is the lower spark clip. SPUCLP is the upper spark clip. SPLCLP and SPUCLP are calibrated to match the rotor registry of the distributor. Intermediate spark calculations and results are maintained in an unlimited fashion. - The software allows the lower spark clip, SPLCLP, to be calibrated to values down to -10 deg (10 deg ATC). This feature has been initially provided for the sole use of the Ignition Department in performing rotor registry tests. Unless prior approval has been received from the Ignition Department, Engine Systems engineers are hereby requested to refrain from calibrating SPLCLP to a value which is less than the minimum value of the "Spark Range" which is shown on the Rotor Registry page of this Chapter. Otherwise, such a calibration may result in mis/crossfire. - Due to physical time constraints for arming the coil and firing the next spark, the largest spark advance increase allowed between consecutive spark events is limited to SPKLIM*360/ENGCYL degrees. There is no limit on the amount of spark advance decrease allowed on consecutive spark events. NOTE: SPKLIM is set to 0.06 and should not be increased without the prior approval of the Ignition Department. This clip is performed just prior to issuing the the spark, and is not reflected in SAF or SAFTOT. Therefore, the actual delivered spark may not be as advanced as indicated by SAF or SAFTOT. new actual spark <= previous actual spark + SPKLIM * 360/ENGCYL 7-24 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DWLBSE/DWLCOR CALCULATION OVERVIEW This strategy is designed to work with both Thick Film Ignition - Improved Computer Control Dwell (TFI-ICCD)(IGN_TYPE = 1) and Low Data Rate - Distributorless Ignition System (LDR-DIS)(LGN_TYPE = 2) ignition systems. When in operation, this strategy will provide control of the ignition coil charge time as well as the correct positioning of the ignition spark with both events being commanded by the EEC-IV module. Because the requirement remains that spark timing is paramount, the positioning of the SPOUT up-edge could not be changed. The difference between the two ignition systems, as it effects the strategy, is the type of signal available from the ignition module on the Ignition Diagnostic Monitor (IDM) input to the EEC computer. For the TFI-ICCD module, the signal provides information indicating when the coil starts to charge and when it reaches current limit. The LDR-DIS module IDM signal is a digital signal that indicates coil start to charge and discharge. The strategy can use the current limit information in the IDM signal from the TFI-ICCD module to reduce the dwell so the ignition system operates at near zero excess dwell at low engine speeds. Because the current limit information is not available from the LDR-DIS module, the strategy will not be able to reduce the dwell from the base dwell value and will have to operate with some excess dwell at all times. The Computer Controlled Dwell strategy is designed to provide a function that determines when both the dwell edge of SPOUT and the spark edge of SPOUT can be positioned within the time limits after the PIP down edge and the spark rotor registry. In those instances when the dwell edge can not be positioned after the PIP down edge, the dwell strategy provides PIP acceleration and spark change factors to the dwell calculation. Under steady state conditions, this will produce some excess dwell, but will protect for cases of acceleration rates of up to 8000 RPM/second and/or spark changes of up to 6 percent of a PIP period. During CRANK or UNDERSPEED engine modes, the strategy schedules the dwell signal at the down edge of PIP due to the highly variable acceleration rates of the engine and the low data rate of the incoming PIP signal. For LDR-DIS systems, to protect the ignition module, the SPOUT signal is held high to prevent the coil from charging, when the engine stalls or during power-up before the first PIP edge is detected. 7-25 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Falling edge dwell mode: (DWLELD = 1) Calculations: |<-- desired spark position -->| |<-- DWLIDM -->||<-- excess dwell -->| |<-- DWELL max. spark advance permitted -->| |<-- (2 * SPKLIM *HFDLTA) -->| |<-- NEXT_SPOUT_ADVANCED -->| |<-- SPOUT_ICCD_DELTA Schedule SPOUT edge from vertical bar using information computed on down edge of PIP: |---------->|-->| |---------->|-->| _________________ _________________ __ PIP | | | | | ______| |_________________| |_________________| _______________________________ _______________________________ ____ | | | | | |___| SPOUT |___| |___| _ _ _ / | COIL CURRENT / | / | _/ |_______________________________/ |_______________________________/ |___ _ __ _ | | IDM as seen at CPU | | | | _| |_______________________________| |________________________________| |____ _ _______________________________ ________________________________ ____ | | | | | | |_| IDM at Corporate Connector |__| |_| 7-26 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Rising edge dwell mode: (DWLELD = 0) Dwell is calculated on the up edge of PIP but is not used until after the up-edge of SPOUT has been scheduled. Up-edge of SPOUT is calculated and queued from the down of edge of PIP if there is sufficient time. Calculations: |<-- desired spark position | |<-- excess dwell -->| |<-- DWELL max. spark advance permitted -->| |<-- (2 * SPKLIM *HFDLTA) -->| |<-- NEXT_SPOUT_ADVANCED -->||<-- SPOUT_ICCD_DELTA ->| |<-- SPOUT_LOW_DELTA -->| |<-- dwell_extra Schedule SPOUT edge from vertical bar using spark information computed on down edge of PIP and dwell information computed on previous up edge of PIP: |------------>|------------------>| _________________ _________________ __ PIP | | | | | ______| |_________________| |_________________| ____________________ ____________________ ______ | | | | | __| SPOUT |______________| |______________| __ ____________ ____________ | COIL CURRENT / | / | |____________________/ |____________________/ |_____ _ _ IDM as seen at CPU | | | | _______________________| |________________________________| |_________________ _______________________ ________________________________ _________________ IDM at Corporate | | | | Connector |_| |_| 7-27 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DWLBSE/DWLCOR_CALCULATION (background calculation) DEFINITIONS INPUTS Registers: - DWELL = Value for system required dwell. - DWLBSE = Dwell required for particular battery voltage. - DWLCOR = Interactive correction to DWLBSE. - DWLIDM = Measured Coil Rise Time. - VBAT = Battery voltage. Bit Flags: - DWLELD = Dwell edge leads spark edge 1 <- falling edge dwell. - NEW_DWLIDM = Flag indicating when new excess dwell can be computed. - UNDSP = Flag indicating Engine mode; 0 -> RUN mode, 1 -> UNDERSPEED or CRANK mode. Non-Calibratable: - FREQ18 = Seconds to clock ticks conversion factor. 1 clock tick = 3 * 10E-6 seconds. Calibration Constants: - DWELLA = Base Dwell additive element. - DWELLM = Base Dwell multiplicative element. - DWLMIN = Minimum dwell allowed. - DWL_XS_MIN = Minimum excess dwell in falling edge dwell. - ENGCYL = Number of PIP up edges per revolution; (number of cylinders/2). - IGN_TYPE = Indicator of ignition type (0 = TFI, 1 = TFI_ICCD, 2 = LDR-DIS). - PACOFF = Offset in RPM-PIP accel bata function. - PACPER = PIP period time switchpoint for change between PIPACL equations. - VBAT_DWELL = Minimum battery voltage to use IDM for dwell correction. - VBAT_DWL_HYS = Battery voltage to enable the use of IDM for dwell correction. 7-28 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS Registers: - DWELL = Value for system required dwell. - DWLBSE = Dwell required for particular battery voltage. - DWLCOR = Interactive correction to DWLBSE. - POFFENG = Foreground value of PACOFF divided by ENGCYL. - PPERENG = Foreground value of PACPER divided by ENGCYL. Bit Flags: - CCD_HP = Flag indicating presence of computer controlled dwell hardware. - NEW_DWLIDM = Flag indicating when new excess dwell can be computed. PROCESS 1. Determine if there is hardware present that will support computer controlled dwell. IGN_TYPE = 1 ----------------------| (TFI-ICCD) | |OR -----| CCD_HP = 1 ING_TYPE = 2 ----------------------| | (LDR-DIS) | --- ELSE --- | | CCD_HP = 0 2. When CCD hardware is present, the amount of dwell required to charge a coil is related to the battery voltage and the values used for DWELLM and DWELLA are calibrated by the Ignition Department to include the worst case coil. The calculation of base dwell is: CCD_HP = 1 ----| DWLBSE(ticks) = [1 / (DWELLM * (VBAT - DWELLA))] * FREQ18 (ticks/sec) 3. Calculate values for use in the maximum PIP acceleration calculation that is performed in the foreground: PPERENG = PACPER / ENGCYL POFFENG = PACOFF / ENGCYL 7-29 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DWLBSE/DWLCOR_CALCULATION (continued) 4. The base dwell will be larger than the coil requires in most cases and in the TFI-ICCD system, can be reduced by a correction that uses the information supplied by the Ignition Diagnostic Monitor (IDM) signal. If the IDM signal is not present to allow the calculation of a new DWLIDM, the base dwell correction is not altered. The calculation of dwell and base dwell correction are determined by the logic below: UNDSP = 1 -------------------------| (Not in run mode) | | IGN_TYPE = 2 ----------------------|OR ------| DWLCOR = 0 (LDR-DIS hardware) | | DWELL = DWLBSE | | (Initial dwell) VBAT < VBAT_DWELL -------|S Q ----| | NEW_DWLIDM = 0 (Low battery voltage) | | | | VBAT > VBAT_DWL_HYS -----|C | (Slightly higher voltage) | | --- ELSE --- IGN_TYPE = 1 ----------------------| | (TFI-ICCD hardware) | | | | DWLELD = 1 ------------------------| | (Falling edge dwell mode) | | | | UNDSP = 0 -------------------------|AND -----| DWLCOR = DWLCOR + (In run mode) | | [(DWELL - DWLIDM) / 2] | | DWELL = DWLBSE - DWLCOR DWLIDM < (DWELL - DWL_XS_MIN) -----| | NEW_DWLIDM = 0 (Too much excess dwell) | | | | NEW_DWLIDM = 1 --------------------| | (New dwell error available) | | --- ELSE --- | IGN_TYPE = 1 ----------------------| | | | DWLELD = 1 ------------------------| | | | UNDSP = 0 -------------------------|AND -----| DWLCOR = DWLCOR - | | DWL_XS_MIN DWLIDM >= DWELL -------------------| | (Clip DWLCOR to zero as (Insufficient charge time) | | a minimum) | | DWELL = DWLBSE - DWLCOR NEW_DWLIDM = 1 --------------------| | NEW_DWLIDM = 0 | | --- ELSE --- | IGN_TYPE = 1 --------------------------------| DWELL = DWLBSE - DWLCOR | NEW_DWLIDM = 0 7-30 IGNITION TIMING STRATEGY, DWLBSE/DWLCOR CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL 5. Prevent the dwell value from being computed below a calibratable value by: DWELL < DWLMIN ------------------------------| DWELL = DWLMIN 7-31 IGNITION TIMING STRATEGY, DWELL_CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DWELL_CALCULATION (called from various foreground routines) OVERVIEW Calculate the percent change in PIP period under maximum acceleration for use in the calculation of the possible dwell requirement. The acceleration factor is comprised of two linear functions which can be related to the current PIP period. The decision on which function to use is based on the number of cylinders in the engine and the possible acceleration rate for that engine. There is a clip on the maximum amount of acceleration factor since as the engine speed goes down the amount of time required to protect for any acceleration increases expontentially, and the amount of time desired for the coil to be in current limit has a finite limit. DEFINITIONS INPUTS Registers: - DT12S = The value, in clock ticks, of the current pip period. - DWELL = Value for system required dwell. - HFDLTA = Most recent PIP first half period. - PIPACL = Percentage change in PIP under acceleration of 8K RPM/sec. - POFFENG = Foreground value of PACOFF divided by ENGCYL. - PPERENG = Foreground value of PACPER divided by ENGCYL. Bit Flags: - CCD_HP = Flag indicating presence of computer controlled dwell hardware. - DWLELD = Dwell edge leads spark edge 1 <- falling edge dwell. Calibration Constants: - DWLMAX = Maximum dwell allowed. - DWLTSW = Time switchpoint for maximum percentage dwell. - MINDLA = Maximum percent of PIP period not charging coil for PIP periods greater than DWLTSW. - MINDLB = Maximum percent of PIP period not charging coil for PIP periods less than DWLTSW. - PACLIM = PIP period acceleration factor for dwell. - PACSLO = Slope in RPM-PIP accel beta function. 7-32 IGNITION TIMING STRATEGY, DWELL_CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - SPKLIM = Percent of "crank degrees between PIPs" used to determine the maximum spark advance increase allowed between consecutive spark events. Do NOT calibrate higher than 0.06 without Ignition Department approval. Maximum spark advance increase between events varies with the number of cylinders; Maximum increase = SPKLIM * 360/ENGCYL. For 4 cyl; 0.06 * 360/2 = 10.8 degrees 6 cyl; 0.06 * 360/3 = 7.2 degrees 8 cyl; 0.06 * 360/4 = 5.4 degrees OUTPUTS Registers: - PIPACL = Percentage change in PIP under acceleration of 8K RPM/sec. - SPOUT_LOW_DELTA = Delta time from spark edge to dwell edge. 7-33 IGNITION TIMING STRATEGY, DWELL_CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS CCD_HP = 1 --------------| | PIPACL = PACSLO * DT12S - POFFENG (ICCD hardware present) | | clip PIPACL so that: | | 0 < PIPACL <= PACLIM DWLELD = 0 --------------|AND -----| dwell_extra = [(SPKLIM + PIPACL) (not in ICCD mode) | | * DT12S] + DWELL | | DT12S >= PPERENG --------| | (RPM below accel bkpt) | | | | --- ELSE --- | CCD_HP = 1 --------------| | PIPACL = 2 * DT12S |AND -----| dwell_extra = [(SPKLIM + PIPACL) DWLELD = 0 --------------| | * DT12S] + DWELL Under the most adverse conditions, the ignition department has determined that there is a maximum amount of dwell. This amount is the clip, DWLMAX. CCD_HP = 1 --------------| |AND -----| dwell_extra = DWLMAX dwell_extra > DWLMAX ----| | (too much dwell) 7-34 IGNITION TIMING STRATEGY, DWELL_CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DWELL_CALCULATION (continued) In Rising edge computer controlled dwell, it is necessary to schedule the SPOUT down or dwell edge from the SPOUT up or spark edge. The logic below decides if the PIP period minus the dwell period (i.e. time coil is off) is greater than some value, typically 50% at low speeds and 20% at all other speeds, and extends the amount of time the coil is off until the percentage is within these limits. CCD_HP = 1 --------------| | DWLELD = 0 --------------| (rising edge mode) | |AND -----| SPOUT_LOW_DELTA = MINDLA * DT12S DT12S > DWLTSW ----------| | (extend coil off time for low speeds) (RPM below switchpoint) | | | | [(DT12S - dwell_extra)/ | | DT12S] <= MINDLA -----| | (coil off percentage too short) | | --- ELSE --- | CCD_HP = 1 --------------| | | | DWLELD = 0 --------------|AND -----| SPOUT_LOW_DELTA = MINDLB * DT12S | | (extend coil off time) [(DT12S - dwell_extra)/ | | DT12S] <= MINDLB -----| | | | --- ELSE --- | CCD_HP = 1 --------------| | |AND -----| SPOUT_LOW_DELTA = DT12S - dwell_extra DWLELD = 0 --------------| | | --- ELSE --- | IGN_TYPE = 0 ----------------------| SPOUT_LOW_DELTA = HFDLTA (TFI hardware present) | | --- ELSE --- | | Do not calculate value for | SPOUT_LOW_DELTA 7-35 IGNITION TIMING STRATEGY, MKAY/SIGKAY CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL MKAY/SIGKAY CALCULATIONS DEFINITIONS INPUTS Registers: - DT12S = Last PIP period. - DT23S = Previous PIP period before DT12S. - DTPCYC = PIP period ENGCYL * 2 + 1 cylinders previous. - DTSIG = PIP period of last signature PIP. - HFDLTA = Last period from PIP up-edge to down-edge. - HFPCYC = Period from PIP up to down-edge ENGCYL * 2 cylinders previous. - KAYCTR = A counter to indicate how often to update MKAY. - MKAY = Half period multiplier to correct for average error caused by Hall effect sensor in distributor and armature. - PSGDLT = Previous uncorrected signature PIP half period. - SIGDLT = Uncorrected signature PIP half period. - SIGKAL = Signature PIP half period multiplier - initial value = 1.66666 for 30% duty cycle signature PIP = 1.42857 for 35% duty cycle signature PIP. Calibration Constants: - ENGCYL = The number of cylinders in one engine revolution. - FKMKAY = Filter constant of update rate to MKAY. - FKSKAY = Filter constant of update rate to SIGKAL. - IGN_TYPE = Indicator of ignition type (0 = TFI, 1 = TFI-ICCD, 2 = LDR-DIS-DP, 3 = LDR-DIS, and 4 = HDR-DIS). - KLLIM = Lowest value for MKAY multiplier - initial value = 0.9. - KULMT = Highest value for MKAY multiplier - initial value = 1.1. - SIGKLL = Lowest value for signature PIP multiplier - initial value = 1.42857 for 30% duty cycle signature PIP = 1.25000 for 35% duty cycle signature PIP. - SIGKLU = Highest value for signature PIP multiplier - initial value = 1.99996 for 30% duty cycle signature PIP = 1.66666 for 35% duty cycle signature PIP. - SSFCTR = Steady state factor for MKAY and signature KAY calculations. 7-36 IGNITION TIMING STRATEGY, MKAY/SIGKAY CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - SKSSLC = Steady state factor for Signature Kay calculation. Bit Flags: - SIGPIP = A flag that indicates that signature PIP half period has been identified. - SYNFLG = Flag when set indicates Signature PIP has been identified; else Signature PIP not yet seen. It is initialized to 0. OUTPUTS Registers: - DTPCYC = PIP period ENGCYL * 2 + 1 cylinders previous. - DTSIG = PIP period of last signature PIP. - HFDLTA = Last period from PIP up-edge to down-edge. - HFPCYC = Period from PIP up to down-edge ENGCYL * 2 cylinders previous. - KAYCTR = A counter to indicate how often to update MKAY. - MKAY = Half period multiplier to correct for average error caused by Hall effect sensor in distributor and armature. - PSGDLT = Previous uncorrected signature PIP half period. - SIGDLT = Uncorrected signature PIP half period. - SIGKAL = Signature PIP half period multiplier - initial value = 1.66666 for 30% duty cycle signature PIP = 1.42857 for 35% duty cycle signature PIP. 7-37 IGNITION TIMING STRATEGY, MKAY/SIGKAY CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS PIP_DATA MODULE IGN_TYPE < 4 ------------------------| Call EOS_KAY_CALCULATIONS module | (perform MKAY/SIGKAY calculation) | | --- ELSE --- | | Skip this module and continue | with PIP_DATA processing MKAY/SIGKAY CALCULATIONS Foreground module KAY (EOS_KAY_CALCULATIONS) (called from PIP_DATA during PIP rising edge) SIGPIP = 1 --------------------------| |AND ---| Do Signature Kay SYNFLG = 1 --------------------------| | Caculation | | --- ELSE --- | | Skip Signature Kay | calculation. Go on | to MKAY calc. entry point SIGNATURE KAY CALCULATION |DT12S - DTSIG| < SKSSLC * DT12S -----| | DTSIG = DT12S | | sigkal' = DT12S/(SIGDLT*2) |DT12S - DT23S| < SKSSLC * DT12S -----|AND ---| SIGKAL = FKSKAY*sigkal' + | | (1 - FKSKAY)*SIGKAL |SIGDLT - PSGDLT| < SKSSLC * SIGDLT --| | SIGKLL < SIGKAL < SIGKLU | | --- ELSE --- | | DTSIG = DT12S MKAY CALC. ENTRY POINT KAYCTR > ENGCYL * 2 --------------------------| Set KAYCTR = 1 | Set DTPCYC = DT12S | Set HFPCYC = HFDLTA | | Return | | --- ELSE --- | | Increment KAYCTR 7-38 IGNITION TIMING STRATEGY, MKAY/SIGKAY CALCULATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SIGPIP = 0 --------------------------| |AND ---| Do MKAY Kay KAYCTR <= ENGCYL * 2 ----------------| | Calculation | | --- ELSE --- | | Return MKAY CALCULATION |DT12S - DTPCYC| <= SSFCTR * DT12S ------| | |HFDLTA - HFPCYC| <= SSFCTR * HFDLTA ----|AND -| mkay' = | | 0.5*(DT12S+DTPCYC)/ mkay' < 1.2 -----------------------------| | (HFDLTA + HFPCYC) | MKAY = | FKMKAY * MKAY' + | (1 - FKMKAY) * MKAY | | KLLIM < MKAY < KULMT | | --- ELSE --- | | Return NOTE: On every PIP down edge transition, in the PIP_DATA routine SIGPIP = 1------------------| |AND ---| PSGDLT = SIGDLT SYNFLG = 1 -----------------| | SIGDLT = HFDLTA | HFDLTA = (HFDLTA*SIGKAL)/MKAY 7-39 IGNITION TIMING STRATEGY, TRANSIENT SPARK COMPENSATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL TRANSIENT SPARK COMPENSATION DEFINITIONS INPUTS Registers: - DIFCTR = Counter for TL0FLG state changes. - DIFF0 = Steady State Spark TL0 error. - DIFF1 = Transient Spark TL0 error. - DT12S = Last PIP period. - DT23S = Previous PIP period before DT12S. - HFDLTA = Last period from PIP up-edge to down-edge. - MKAY = Half period multiplier to correct for average error caused by Hall effect sensor in distributor and armature. - PHFDLT = Previous time elapsed between up-edge to down-edge of PIP. - SPOUT = Time to fire spark. - TPPLW = Actual time at PIP down edge (SPOUT reference). - TSPKUP = Time to output SPOUT. Bit Flags: - TL0FLG = Transient Spark calculation flag. Calibration Constants: - DFMIN0 = Minimum number of TS0FLG 1 to 0 state changes. - DFMIN1 = Minimum number of TS0FLG 0 to 1 state changes. - TRSRPM = Minimum RPM to enable transient spark routine. - TRSRPH = Hysteresis for TRSRPM. 7-40 IGNITION TIMING STRATEGY, TRANSIENT SPARK COMPENSATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS Registers: - DIFCTR = see above. Bit Flags: - TL0FLG = See above. TRANSIENT SPARK COMPENSATION LOGIC :<-----------DT23S----------->:<-----------DT12S----------->: :<---PHFDLT--->: :<---HFDLTA--->: .--------------. .--------------. .--- | | | | | | | | |<-----tlo---->| | | | | | ----. .--------------. .--------------. :<--TSPKUP-->: : : TPPLW SPOUT 7-41 IGNITION TIMING STRATEGY, TRANSIENT SPARK COMPENSATION - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS After a PIP up-edge occurs, the following logic is executed: DIFF0 <= DIFF1 ---------| |AND -| TLOFLG = 1 -------------| | |OR --| DIFCTR = DIFCTR + 1 DIFF0 > DIFF1 ----------| | | |AND -| | --- ELSE --- TLOFLG = 0 -------------| | | DIFCTR = 0 DIFF0 <= DIFF1 ---------------| |AND -| TLOFLG = 0 DIFCTR >= DFMIN0 -------------| | DIFCTR = 0 | DIFF0 > DIFF1 ----------------| | --- ELSE --- |AND -| DIFCTR >= DFMIN1 -------------| | TLOFLG = 1 | DIFCTR = 0 | | --- ELSE --- | | No change to TLOFLG Where: DIFF0 = | DT12S - 2 * HFDLTA * MKAY | DIFF1 = | DT12S - HFDLTA - (HFDLTA * (DT23S - PHFDLT))/PHFDLT | After a PIP down-edge occurs, TLOFLG is checked and the appropriate tlo calculation is included for SPOUT. TLOFLG = 1 -----------------------| | N > TRSRPM ---------------|S Q --|AND ---| tlo = (DT12S - PHFDLT | | * MKAY) / PHFDLT N < TRSRPM - TRSRPH ------|C | | --- ELSE --- | | tlo = HFDLTA * MKAY 7-42 IGNITION TIMING STRATEGY, PIP_DATA - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PIP_DATA OVERVIEW The spark output routine (SPARK_KNOCK_CALCULATION) is called from the PIP edge processing routine. Depending on the conditions and the hardware, the SPARK_KNOCK_CALCULATION routine may be called from either the PIP high transition or the PIP low transition. Additionally, when the engine is in crank mode, underspeed mode, or SA10FG mode, the SPOUT signal will reflect the PIP signal input. DEFINITIONS INPUTS Registers: Bit Flags: - CCD_HP = Flag indicating presence of computer controlled dwell hardware. - DWLELD = Dwell edge leads spark edge 1 <- falling edge dwell. - ECHO_PIP A flag that indicates when the spark output signal is output coincident with the PIP edges as they are received. - ECHO_TRANS = A flag that indicates when the spark output signal is in the process of transitioning to or from normal spark output to the ECHO_PIP mode. - PIP_DOUBLE = A flag indicating which edge is referenced for spark: 1 -> use PIP down edge; 0 -> use PIP up-edge. OUTPUTS Registers: - OLD_BETA = The percentage of PIP period from the reference PIP edge used on the last spark output. Bit Flags: - DOUBLE_EDGE = A foreground (DOS) flag used to indicate the current spark output calculation method. - ECHO_TRANS = A flag that indicates when the spark output signal is in the process of transitioning to or from normal spark output to the ECHOPIP mode. 7-43 IGNITION TIMING STRATEGY, PIP_DATA - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS RISING EDGE CALCULATIONS Determine if and when to perform the rising edge dwell calculation by the following logic: CCD_HP = 0 --------------------------| |OR ---| Call DWELL_CALCULATION DWLELD = 0 --------------------------| (Rising edge mode) | (reflect PIP in SPOUT) | ECHO_PIP = 1 ------------| | "echo the PIP edge (Not in echo mode) |AND ---------------| transition as a | | SPOUT transition" ECHO_TRANS = 0 ----------| | DOUBLE_EDGE = 0 (Transition completed) | OLD_BETA = 1 | "continue PIP processing" | | --- ELSE --- | (transition from normal | spark to PIP echo mode) | ECHO_PIP = 1 --------------------------------| DOUBLE_EDGE = 0 | OLD_BETA = 1 | "continue PIP processing" | | --- ELSE --- PIP_DOUBLE = 0 ----------| | (Double edge spark not | | (transition from PIP echo requested) | | to normal spark mode) | | | | SPOUT_HIGH_EDGE = DATA_TIME | | |AND ---------------| "echo the PIP edge ECHO_TRANS = 1 ----------| | transition as a | SPOUT transition" | | ECHO_TRANS = 0 | Call SPOUT_CALCULATION | "continue PIP processing" | | --- ELSE --- | | (normal spark mode) | PIP_DOUBLE = 0 ------------------------------| Call SPOUT_CALCULATION | "continue PIP processing" | | --- ELSE --- | | "continue PIP processing" 7-44 IGNITION TIMING STRATEGY, PIP_DATA - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL FALLING EDGE CALCULATIONS ECHO_PIP = 1 ------------| | (transition from falling edge (In PIP echo mode) | | dwell to PIP echo mode) | | ECHO_TRANS = 1 ----------|AND -----| DWLELD = 0 (In transition) | | | | ECHO_TRANS = 0 DWLELD = 1 --------------| | (In falling edge dwell) | "Echo the PIP transition as a | SPOUT transition" | | "continue with PIP processing" | | --- ELSE --- | | (transition from normal spark to ECHO_PIP = 1 ------------| | PIP echo mode) (In echo pip mode) |AND -----| | | ECHO_TRANS = 0 ECHO_TRANS = 1 ----------| | "continue with PIP processing" (In transition) | | --- ELSE --- ECHO_PIP = 1 ------------| | |OR ------| (reflect PIP as SPOUT) PIP_DOUBLE = 0 --| | | (Double edge |AND ---| | "echo the PIP transition as a spark nor | | SPOUT transition" spark not | | requested) | | "continue with PIP processing" | | ECHO_TRANS = 1 --| | | --- ELSE --- | | (normal falling edge spark mode) | PIP_DOUBLE = 1 --------------------| Call SPOUT_CALCULATION | ECHO_TRANS = 0 | "continue with PIP processing" | | --- ELSE --- | | "continue with PIP processing" 7-45 IGNITION TIMING STRATEGY, SPOUT_KNOCK ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPOUT_KNOCK ROUTINE OVERVIEW Falling edge computer controlled dwell can only be used in falling edge spark (PIP_DOUBLE = 1) and when there is sufficient time to permit the dwell edge to be scheduled after the high-to-low transition of PIP. The period of time between the high-to-low transition of PIP and the desired position of spark in time is calculated as a temporary value and also saved as NEXT_SPOUT_BETA. DEFINITIONS INPUTS Registers: - DWELL = Value for system required dwell. - HFDLTA = Most recent PIP first half period. - LAST_HI_PIP = Time of last PIP up-edge. - NEW_BETA = Percent of PIP period from reference PIP edge to the spark firing signal. - MKAY = Half period multiplier to correct for average error caused by Hall effect sensor in distributor and armature. - NEXT_SPOUT_ADVANCED = Delta time from PIP down edge to position of spark with maximum spark advance on next cylinder. - NEXT_SPOUT_BETA = The percentage of PIP period (betas) from the reference PIP edge to the signal on the spark output (SPOUT) that causes the ignition module to discharge the coil across the spark plug. - SPOUT_HIGH_EDGE = Time of next scheduled SPOUT transition from low to high. - SPOUT_ICCD_DELTA = Delta time from PIP down edge to the dwell edge when in falling edge mode. - SPOUT_LOW_DELTA = Delta time from spark edge to dwell edge. - SPOUT_LOW_EDGE = Time of next scheduled SPOUT transition from high to low. Bit Flags: - CCD_HP = Flag indicating presence of computer controlled dwell hardware. - DWLELD = Dwell edge leads spark edge; 1 -> falling edge dwell. - PIP_DOUBLE = A flag indicating which edge is referenced for spark; 1 -> use PIP down-edge, 0 -> use PIP up-edge. 7-46 IGNITION TIMING STRATEGY, SPOUT_KNOCK ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL Non-Calibratable: - TICKS_DOUBLE = The value in clock-ticks when there is sufficient time in Rising-edge mode to put out spark from the falling edge (currently set equivalent to 0.0010 seconds). - TICKS_SINGLE = The value in clock-ticks when here is insufficient time to put out spark from the falling edge of PIP (currently set equivalent of 0.0010 seconds). Calibration Constants: - SPKLIM = The maximum percentage of a PIP period by which the spark may be advanced between two outputs. OUTPUTS Registers: - NEXT_SPOUT_ADVANCED = Delta time from PIP down edge to position of spark with maximum spark advance on next cylinder. - NEXT_SPOUT_BETA = The percentage of PIP period (betas) from the reference PIP edge to the signal on the aprk output (SPOUT) that causes the ignition module to discharge the coil across the spark plug. - SPOUT_HIGH_EDGE = Time of next scheduled SPOUT transition from low to high. - SPOUT_ICCD_DELTA = Delta time from PIP down edge to the dwell edge when in falling edge mode. - SPOUT_LOW_EDGE = Time of next scheduled SPOUT transition from high to low. Bit Flags: - DWLELD = Dwell edge leads spark edge 1 <- falling edge dwell. 7-47 IGNITION TIMING STRATEGY, SPOUT_KNOCK ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS 1. The temporary value for NEXT_SPOUT_BETA is calculated by the following logic: PIP_DOUBLE = 1 --------------------| beta = (NEW_BETA - 0.5) * 2 (Falling edge spark) | temp_value = (tlo * beta) + | (MKAY - 1) * HFDLTA | NEXT_SPOUT_BETA = temp_value | | --- ELSE --- | | NEXT_SPOUT_BETA = NEW_BETA * DT12S 2. Based on the current requested position of spark and the maximum amount of change allowed in the advance direction, calculate the amount of time from the next PIP down edge to the earliest possible spark position on the next cylinder. This term will be used to decide whether there is a need to switch modes for dwell. CCD_HP = 1 ----| NEXT_SPOUT_ADVANCED = temp_value - (2 * SPKLIM * HFDLTA) 3. Compute the time for turning on the coil (dwell edge) for the current cylinder based on the spark time and the amount of dwell required to reach current limit. CCD_HP = 1 ----| SPOUT_ICCD_DELTA = temp_value - DWELL 7-48 IGNITION TIMING STRATEGY, SPOUT_KNOCK ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPOUT_KNOCK ROUTINE 4. Determine the output values and sequence for both edges of SPOUT: CCD_HP = 1 ---------------| (CCD hardware present) | | PIP_DOUBLE = 1 -----------| (spark from PIP down) | | DWLELD = 1 ---------------|AND ----| FALLING EDGE DWELL MODE (falling edge mode) | | (compute time for coil start | | to charge and schedule as the (NEXT_SPOUT_ADVANCED | | SPOUT_LOW_EDGE:) - DWELL) >= | | SPOUT_LOW_EDGE = LAST_HI_PIP + HFDLTA TICKS_SINGLE --------| | + SPOUT_ICCD_DELTA (sufficient time to output | (when SPOUT_LOW_EDGE is output dwell edge from PIP down) | compute time of spark and schedule | the SPOUT_HIGH_EDGE:) | SPOUT_HIGH_EDGE = SPOUT_LOW_EDGE | + DWELL | | --- ELSE --- | | TRANSITION FROM FALLING EDGE DWELL | MODE TO RISING EDGE CCD | DWLELD = 0 (change to CCD mode) | (compute time for coil start to | charge and schedule as the CCD_HP = 1 ---------------| | SPOUT_LOW_EDGE:) | | PIP_DOUBLE = 1 -----------|AND ----| SPOUT_LOW_EDGE = LAST_HI_PIP + HFDLTA | | + SPOUT_ICCD_DELTA DWLELD = 1 ---------------| | (when SPOUT_LOW_EDGE is output, | compute time of spark and | schedule the SPOUT_HIGH_EDGE:) | SPOUT_HIGH_EDGE = SPOUT_LOW_EDGE | + DWELL | (when SPOUT_HIGH_EDGE is output, | call DWELL_CALCULATION to | calculate the next coil turn on | time, SPOUT_LOW_DELTA and then | schedule the SPOUT_LOW_EDGE: | SPOUT_LOW_EDGE = SPOUT_HIGH_EDGE | + SPOUT_LOW_DELTA | | --- ELSE --- (continued on next page) 7-49 IGNITION TIMING STRATEGY, SPOUT_KNOCK ROUTINE - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPOUT_KNOCK ROUTINE (continued from previous page) CCD_HP = 1 --------------| | |AND -----| TRANSITION FROM RISING EDGE DWELL PIP_DOUBLE = 1 ----------| | MODE TO FALLING EDGE DWELL MODE | | DWLELD = 1 (change to ICCD mode) (NEXT_SPOUT_ADVANCED | | (when the SPOUT_LOW_EDGE is no - DWELL) >= | | longer pending in the queue, TICKS_DOUBLE ------| | compute time of spark and schedule) (sufficient time to output | SPOUT_HIGH_EDGE: dwell edge from PIP down) | SPOUT_HIGH_EDGE = LAST_HI_PIP | + NEXT_SPOUT_BETA | + HFDLTA | | --- ELSE --- | | RISING EDGE DWELL MODE OR TFI WITH | FALLING EDGE SPARK MODE | (compute time of spark and | schedule as the SPOUT_HIGH_EDGE:) | PIP_DOUBLE = 1 --------------------| SPOUT_HIGH_EDGE = LAST_HI_PIP | + NEXT_SPOUT_BETA | + HFDLTA | (when SPOUT_HIGH_EDGE is output, | compute time for coil start to | charge and schedule as | SPOUT_LOW_EDGE:) | SPOUT_LOW_EDGE = SPOUT_HIGH_EDGE | + SPOUT_LOW_DELTA | | --- ELSE --- | | RISING EDGE DWELL MODE OR TFI WITH | RISING EDGE SPARK MODE | SPOUT_HIGH_EDGE = LAST_HI_PIP | + NEXT_SPOUT_BETA | (when SPOUT_HIGH_EDGE is output, | compute time for coil start to | charge and schedule as | SPOUT_LOW_EDGE:) | SPOUT_LOW_EDGE = SPOUT_HIGH_EDGE | + SPOUT_LOW_DELTA 7-50 IGNITION TIMING STRATEGY, VIP, EOS_IDM - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL VIP, EOS_IDM OVERVIEW Upon the change in state of the high speed input for Ignition Diagnostic Monitor, the flag IDM_INT is set to one. When new input data is processed, a check is made of the flag IDM_INT, and if set, will cause this module to be called to process the IDM state change. If the transition has been high to low at the CPU (IDM_HIGH = 0), the self test logic is notified by setting the flag NEW_IDM. If the ignition system provides an IDM signal that can be used to determine the amount of excess dwell and the EEC is controlling the dwell (IGN_TYPE = 1), the time of coil charging is determined and a flag, NEW_DWLIDM, is set. NOTE: IDM_HIGH reflects the state of the High Speed Input (HSI) pin and not the IDM voltage. Because of an inversion, when IDM voltage = 0, IDM_HIGH = 1, and when IDM voltage is greater than 3.5 volts, IDM_HIGH = 0. DEFINITIONS INPUTS Registers: - DATA_TIME = Time of latest digital input edge. - SPOUT_LOW_EDGE = Time of next scheduled SPOUT transition from high to low. Bit Flags: - DWLELD = Dwell edge leads spark edge 1 <- falling edge dwell. - IDM_HIGH = Flag that reflects the state of the High speed Input (HSI) pin. Because of an inversion, when IDM voltage = 0, IDMHIGH = 1, and when IDM voltage is greater than 3.5 volts, IDMHIGH = 0. - IDM_INT = Flag that indicates that a change of state has occurred on the IDM input pin. Calibration Constants: - IGN_TYPE = Indicator of ignition type (0 = TFI, 1 = TFI_ICCD, 2 = LDR-DIS). 7-51 IGNITION TIMING STRATEGY, VIP, EOS_IDM - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL OUTPUTS Registers: - DWLIDM = Measured Coil Rise Time. Bit Flags: - IDM_INT = Flag that indicates that a change of state has occurred on the IDM pin. - NEW_DWLIDM = Flag indicating when new excess dwell can be computed. - NEW_IDM = A flag that indicates that the EOS has processed new IDM information for use by the self test (VIP) strategy. PROCESS Always ----------------------------------------| Clear IDM_INT IDM_HIGH = 0 -----------------| | Calculate Dwell Time (High-to-low transition) | | | | DWLIDM = (DATA_TIME - DWLELD = 1 -------------------|AND ------------| SPOUT_LOW_EDGE) (In ICCD mode) | | | | Set NEW_DWLIDM IGN_TYPE = 1 -----------------| | Set NEW_IDM | | --- ELSE --- | IDM_HIGH = 0 ----------------------------------| Set NEW_IDM | | --- ELSE --- | | Return 7-52 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL INDIVIDUAL CYLINDER KNOCK OVERVIEW KNOCK HARDWARE DESCRIPTION The knock sensor is a piezo-electric accelerometer which resonates at engine knock frequencies of approximately 5.45, 5.7, 6.0 or 8.05 kHz. The bandwidth of the resonant frequency is quite narrow (<+/- 150 Hz) to avoid resonance due to noise from other sources. The resonation causes the sensor to transmit a positive voltage, KNOCK, to the EEC hardware circuit. This hardware circuit compares the KNOCK voltage to a threshold voltage, NOISE. When KNOCK > NOISE, the hardware circuit sends a KNOCK INPUT signal to the EEC software. This event is represented on the next page as KI = 1. The EEC software stores this information until the next rising edge of PIP is received. At that time, the information is used by the KNOCK LOGIC as described in the remainder of this document. NOISE, the threshold voltage, is a positive voltage in an RC circuit which is proportional to the Knock Input level at the time that a charging pulse, KTS, is output. This threshold voltage is established to avoid treating rod knock, piston slap, valve train noise and other noise as spark knock. During normal engine operation, the software opens and closes a window once per PIP period. While the window is open, KTS charges up the capacitor in the RC circuit. While the window is closed, the NOISE level decays (decreases) at a steady rate determined by the time constant of the RC circuit. NOISE ~ (D.C. Bias + KNOCK(A))*(1-exp(-KTS/RC)) + LAST NOISE Where, NOISE is the noise threshold level KNOCK(A) is the Knock input level at the time KTS is being output. KTS is the pulsewidth (secs) of the charging pulse RC is the RC time constant. LAST NOISE is the noise level at the time KTS is output. WARNING: To avoid raising the NOISE threshold level too high, the KTS pulse should charge the RC circuit only during that portion of the PIP period wherein no Knock is indicated, normally late in the current PIP period, or early in the following PIP period. The calibration of the pulsewidth and timing of the window is described in the Knock Threshold Sense Logic section of this strategy. Since the noise level is a function of rpm, the NOISE threshold tends to increase with increasing rpm. At high rpm and heavy detonation conditions, knock usually continues well into the following PIP period. To avoid opening the window during this period of knock, the software withholds KTS for WINCLD PIP periods to avoid raising the noise threshold too high. 7-53 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL DEFINITIONS INPUTS/OUTPUTS: - APT = Throttle Mode Flag. - CTFLG = Flag set to 1 to indicate Closed Throttle Tip-in. - CWCTR = Cancel Window Counter incorporated each PIP period. - ECT = Engine Coolant Temperature, deg F. - KI = Knock indicated, knock level is higher than noise level; called KNK_HIGH in code. - KIHP = Knock hardware present switch; 1 -> Knock sensor present. - KNOCK_DETECTED = Flag set to 1, if knock occurred in current PIP half-period. - KNOCK_OCCURRED = Flag set to 1, if knock occurred in current or last PIP period. - KTS = Pulsewidth (clock ticks) of the charging pulse. (This signal is internal to the EEC.) Start time = LAST HI-PIP + (WINDOW_BETA * MKAY * 2 * HFDLTA). - "LAST PIP PERIOD" = MKAY*2*HFDLTA. (MKAY and HFDLTA are defined in Base Spark Chapter) - N_BYTE = Low Resolution rpm. - RETINC = Calculated as a function of rpm and is subtracted from each SPKAD corresponding to a knocking cylinder. (positive degree) - SPKADn = Spark adder terms for the nth cylinder. It is added to SAF, may be positive or negative degress. - TBART = Filtered Throttle position (initialized to RATCH). = UROLAV(TP,TCTPT) - TCF = Value indicating difference between TP and TBART. TCF = (TP - TBART) - TIPFLG = Flag set to 1 to indicate a Tip-in. - TIPRET = Degrees of tip-in retard added to SAF. - TSLADV = Free-running millisecond timer which counts the time since the spark was last advanced by the KNOCK STRATEGY. FOX FUNCTIONS: - FN143 = Retard Increment as function of N (positive degrees). - FN144 = Width of KTS as a function of N, fraction of pip period. 7-54 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL - FN145 = Position of KTS as a function of N, fraction of PIP period. - FN146A = Spark Advance rate (secs) as function of N. - FN190 = Maximum spark advance allowed from SPKAD(n) registers as a function of engine speed (N_BYTE), degrees. CALIBRATION CONSTANTS: - ECTIP = Minimum ECT to enable TIP-in Knock logic, deg F. - ECTNOK = Minimum ECT to enable Knock Strategy, deg F. - ENGCYL = Number of PIPS per revolution. = (Number of Engine Cylinders/2.) - KACRAT = Minimum change in TP that indicates a Tip-in, counts. - KIHP = KNOCK hardware present switch; 1 -> KNOCK sensor present. - KNKCYL = Calibration constant which can be calibrated equal to number of cylinders, or 1. This number determines whether it is an Individual Cylinder Knock or Multi- cylinder knock strategy. - LODNOK = Minimum MAPPA at which Knock Strategy is enabled, unitless. - NTIP = Maximum rpm to enable Tip-in logic, rpm. - RETLIM = Means of preventing excessive retard; SPKAD is clipped to RETLIM, degrees. - RPMCNL = Threshold rpm below which the window is always opened, rpm. - RPMMIN = Minimum rpm to enable Knock Strategy. (Helps prevent Spark Retard at Idle.) rpm. - TIPINC = Advance per PIP following a Tip-in retard. (Must be a positive number; units are degrees.) - TIPMAX = Initial amount of retard following a Tip-in. (Must be a negative number; units are degrees.) - TPFK = Calibratible filter constant. - WINCLD = Maximum number of PIP periods to withhold KTS KTS (to refresh NOISE threshold level) during periods of sustained knock, PIP periods. - WINLEN = Minimum KTS pulsewidth, (fraction of PIP period). - WOPEN = Minimum delay after the rising edge of PIP before the KTS pulse will be output (fraction of PIP period). 7-55 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL PROCESS STRATEGY MODULE: SPKKNOCK_LL KNOCK SIGNAL DETECTION : : :............. PIP PERIOD ..............: : : --------------------- ---------- | | | PIP | | | | | | ------ --------------------- : : :<-- (WOPEN + FN145(N)) * PIP PERIOD -> : : : ------ ------ | | | | KTS --->| |<--- WINLEN+FN144(N)*PIP PERIOD | | | | | | ---------- ------------------------------------ ---- : : : : : : : : : : : : : : ** : : : : * * : : : : * * : : : : * * : : : :------- * * : :--- NOISE : /: ----*-- * : /: : / : * ------- * : / : ------- : / : * : ---*--- : / : -------/ : * : * -------/ : : : * : : * : : : : * : : * : : : : * : : * : : KNOCK : : * : : * : : SENSOR : : * : : * : : ************* : : ************ : : : : : : : : -------------- | | KI | | | | ----------------------- ------------------- (IF KNOCK > NOISE, KI=1; OTHERWISE, KI=0) 7-56 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL STRATEGY DESCRIPTION The Individual Cylinder Knock Strategy consists of four major sub-strategies: 1. KNOCK STRATEGY ENABLE LOGIC 2. KNOCK THRESHOLD SENSE LOGIC 3. SPARK RETARD LOGIC 4. SPARK ADVANCE LOGIC 7-57 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL KNOCK STRATEGY ENABLE LOGIC The following logic is checked every background loop: KIHP = 1 -------------------------| | MAPPA > LODNOK -------------------| |AND -| ENABLE KNOCK STRATEGY ECT > ECTNOK ---------------------| | | | --- ELSE --- N > RPMMIN -----------------------| | | DISABLE KNOCK STRATEGY | SPKAD(ALL) = 0 | TSLADV = 0 LODNOK, ECTNOK, and RPMMIN define the minimum engine operating conditions to enable the Knock Control Strategy. These are calibration parameters accessible through VECTOR and through the calibration console. SPKAD(ALL) are spark adder terms; SPKAD1, SPKAD2, SPKAD3, .... SPKADn; where n = KNKCYL. If KNKCYL is calibrated to be equal to the number of cylinders, then there is a unique SPKAD term for each cylinder -- INDIVIDUAL CYLINDER KNOCK. If KNKCYL is calibrated to 1, the Knock Strategy functions as a Multi-Cylinder Knock Strategy; i.e., there is only one SPKAD term. It is applied to all cylinders. If one cylinder knocks, then all cylinders get retarded an equal amount. Negative values for SPKAD mean that spark is being retarded. 7-58 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL KNOCK THRESHOLD SENSE (KTS) LOGIC The software periodically opens a window which allows a Noise threshold charging pulse called KTS to raise the Knock Threshold level of the Hardware circuit. The window always opens once per PIP period unless the rpm exceeds RPMCNL. The engine developer defines the window during which the charging pulse is on by means of two fox functions (FN144, FN145) and two calibration constants (WOPEN, WINLEN). The pulsewidth of KTS defines the period of time that the capacitor in the RC circuit will be charged. Wide KTS pulses cause the threshold to increase. The timing of the KTS pulse must coincide with the optimum non-knocking portion of the PIP period over all engine rpm. Since Knock tends to extend longer through the PIP period with increasing rpm, the KTS pulse should be timed late in the current PIP period, or early in the following PIP period (95 - 110 % PIP period). Noise threshold elevation will result when the capacitor charging rate greatly exceeds the discharge rate or when the KTS pulse is output during conditions of Knock. When knock occurs at high rpm, the charging pulse window is kept closed for WINCLD PIP periods to prevent elevating the NOISE threshold to the level of KNOCK, thereby preventing the EEC hardware circuit from sensing additional spark knock. The WINDOW LOGIC and calculations shown below are checked every rising edge of PIP except in Engine Running VIP (RUNNING = 1): The pulsewidth of KTS is equal to WINLEN + FN144(N) * ("LAST PIP PERIOD") Where, WINLEN is minimum KTS pulsewidth, clock ticks FN144(N) is fraction of pip period, BETA Units "LAST PIP PERIOD" is equal to 60/(ENGCYL*N) ENGCYL is number of PIPS per revolution At the start of the Goose Test, the pulsewidth of KTS is set to V_KTS. The timing of KTS is equal to (WOPEN + FN145(N)) * ("LAST PIP PERIOD") Where, WOPEN is the minimum delay after the rising edge of the PIP before the KTS pulse will be output. FN145(N) is fraction of pip period, BETA Units. 7-59 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The WINDOW LOGIC show below is checked every falling edge of PIP: KIHP = 0 -------------------------------| DO NOT OUTPUT KTS (KNOCK input hardware not present) | | --- ELSE --- N <= RPMCNL ----------------------| | | | CWCTR = 0 CWCTR >= WINCLD ------------------|OR --| OPEN WINDOW AT CALCULATED TIME | | NOT SIGNATURE PIP ----------| | | --- ELSE --- |AND -| | KNOCK_DETECTED = 0 ---------| | Increment CWCTR (No KNOCK in current PIP | DO NOT OPEN WINDOW half period) NOTE: If KIHP = 1, the KTS pulse is output even if the knock strategy is disabled to refresh the threshold level in the event that the Knock Strategy becomes enabled. The absence of the KTS pulse for more than a few PIP periods would result in full retard upon entering Knock Strategy. |<--"LAST PIP PERIOD"-->| _____________ _____________ ____ | | | | | | | | | | | | | | | PIP ___| |___________| |___________| |<-------A--------->| _____ _______ | | | | | | |<-B->| | | | | KTS _________________________| |_________________| |_ Where A = (WOPEN + FN145)*("LAST PIP PERIOD") B = WINLEN + FN144*("LAST PIP PERIOD") = KTS Note: Range of A is typically 90 - 110 % of PIP period. _________ _____ | | | | | | | | | | | | KI _______| |_____________| |__________________________ ________________ __________________________ | | | | | | | | | | | | KNOCK_DETECTED _| |____| |___ __________________________________ | KNOCK_OCCURRED _______________| 7-60 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL EXAMPLES EXAMPLE 1: N < RPMCNL _______________ _______________ | | | | | | | | | | | | PIP ___| |_______________| |___ | | | | | ______________ _____ | | | | | | | | | | | | KI ______| | |________________| |___________ | | | | ___ | ___ | | | | | | | | | | KTS ___| |___________________________| |_____________________ | | ^ ^ | | Calculate & schedule Cancel window logic checked here, but window next KTS not cancelled because rpm is low EXAMPLE 2: N > RMPCNL _______________ _______________ | | | | | | | | PIP ___| |_______________| |_______ | | | ______________ _____ | | | | | | | | | | | | KI ______| | |________________| |_______________ | | | | ___ | | | | | | | KTS ___| |___________________________________________________ | | ^ ^ | | Calculate & schedule Cancel Window Logic Checked here, next KTS next KTS. cancelled bacause KNOCK sensed and rpm is high. 7-61 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The following logic is checked every pip UP edge before calculating SPOUT. KIHP = 0 -------------------------------| KNOCK_DETECTED = 0 | KNOCK_OCCURRED = 0 | | --- ELSE --- KNOCK_DETECTED = 1 ---------------| | |AND -| KNOCK_OCCURRED = 1 KNK_HIGH = 1 ---------------------| | (KI currently indicating KNOCK) | --- ELSE --- | KNOCK_DETECTED = 1 ---------------| | KNOCK_OCCURRED = 1 |AND -| KNOCK_DETECTED = 0 MKNK_HIGH = 0 --------------------| | (KI currently indicating no KNOCK) | --- ELSE --- | | KNOCK_OCCURRED = 0 The following code is executed in real time (almost). KNOCK_INTERRUPT ------------------| (HI or LOW transition) | |AND -| KNOCK_DETECTED = 1 KIHP = 1 -------------------------| | VIP_KNOCK = 1 (KNOCK sensor present) KNOCK INTERRUPT ENABLE LOGIC The following logic is executed upon Power-up, upon Re-Init, and every Background Loop. KIHP = 1 ----------------------| ALLOW KNOCK INTERRUPTS TO OCCUR. | | --- ELSE --- | | PREVENT KNOCK INTERRUPTS FROM OCCURRING. 7-62 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPARK RETARD LOGIC Whenever the Knock strategy is enabled, the software calculates RETINC as a funcion of rpm. RETINC is subtracted from each SPKAD that corresponds to a "knocking" cylinder. The software keeps track of the cylinders by means of a "PIP counter". The "PIP counter" is incremented once per PIP period and is set to 1 every time it exceeds KNKCYL. To prevent excessive retard (perhaps due to erroneous knock sense) each SPKAD is clipped to RETLIM. RETINC = FN143(N) During a particular PIP period ("PIP counter" = n), the software makes adjustments to SPKAD(n-1) based on whether Knock was sensed during the previous PIP period and uses SPKAD(n), calculated during the previous engine cycle (KNKCYL PIP periods ago) to determine the final value of spark advance for the next spark output. KNOCK STRATEGY ENABLED -----------| | KNOCK_OCCURRED = 1 -| (knock sensed | during last PIP |AND --| SPKAD(n-1) = SPKAD(n-1) - RETINC Period) | | (Clip min. SPKAD(n-1) to RETLIM) TIPRET = 0 ---------| A separate part of the retard logic responds to Tip-in detonation, and even to potential Tip-in detonation, by retarding the spark TIPRET degrees. Tip-in detonation is a result of the relatively slow response of both MAP and N, which are average values during a PIP period, to the sudden increase in manifold pressure and decrease in engine speed, respectively, which occur within a PIP period during a Tip-in. The result is that the delivered spark is over-advanced for the instantaneous conditions until the MAP calculation has updated to reflect the higher manifold pressure and the engine speed has recovered. The recovery from a Tip-in is normally complete within a few PIP periods. The KNOCK STRATEGY is designed to anticipate detonation following a Tip-in from idle (the worst case Tip-in condition) and respond by retarding the spark before detonation occurs. Tip-in from part- throttle results in retarded spark only if knock is sensed. In both cases, Tip-in retard is applied to whichever cylinders follow the Tip-in, not to individual cylinders as is usually done in the individual cylinder knock strategy. Thus, there is no need to wait an entire engine cycle before responding to Tip-in detonation. The Tip-in condition is recognized by comparing TP to a filtered TP, called TBART. If TCF, the difference between TP and TBART, exceeds KACRAT, and if either the Tip-in occurred from idle or if the knock is sensed following a Tip-in from part-throttle, then the spark for the next PIP is retarded by TIPMAX degrees. On the ensuing PIPS, the amount of retard is decremented by TIPINC degrees until all Tip-in retard is removed. The Tip-in logic can be disabled by setting KACRAT = 1023. 7-63 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The following Tip-in logic is checked every background loop: CTFLG LOGIC APT = -1 ------------------------| |AND -|S Q--| CTFLG = 1 MAP < TIPMAP --------------------| | | | | --- ELSE --- MAP > TIPMAP + TIPHYS -----------------|C | | CTFLG = 0 TIPFLG LOGIC ECT > ECTIP ---------------------------| | TCF >= KACRAT -------------------------|AND -| TIPFLG = 1 | | N_BYTE < NTIP -------------------------| | --- ELSE --- | | TIPFLG = 0 Where, TCF = TP - TBART TBART = UROLAV(TP,TCTPT) (TBART is initialized to RATCH) TCTPT = calibratable time constant KACRAT = calibration constant ECTIP = calibration constant NTIP = calibration constant NOTE: TIPMAP + TIPHYS is clipped to 31.875 in. Hg. 7-64 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL The following Tip-in logic is checked every rising edge of PIP: TIPRET = 0 -----------------------| | TIPFLG = 1 -----------------------| |AND -| TBART = TP KNOCK_OCCURRED = 1 ---| | | TIPRET = TIPMAX | | | KNOCK_ENABLED = 1 ----| | | --- ELSE --- |AND -| | | KNKCYL <> 1 ----------| |OR --| | TIPRET = TIPRET + TIPINC | | (Clip MAX TIPRET to 0) CTFLG = 1 ------------------| Where, TIPRET = Tip-in retard TIPMAX = initial amount of retard following a Tip-in (Must be a negative number; units are degrees) TIPINC = advance per PIP following a TIP-in retard (Must be a positive number; units are degrees) NOTE: The final value of Spark advance is calculated by the EOS immediately prior to calculating the waiting time: CALCULATED SPARK OUT = SAF + TIPRET 7-65 IGNITION TIMING STRATEGY, INDIVIDUAL CYLINDER KNOCK - LHBH0 PED-PTE, FoMoCo, PROPRIETARY & CONFIDENTIAL SPARK ADVANCE LOGIC