Abstract:
A method for controlling fueling of an engine, the method comprising during an engine cold start and before the engine is warmed to a predetermined level, transitioning from open-loop fueling to closed-loop fueling, where during closed-loop fueling feedback from an exhaust gas oxygen sensor is utilized and where said closed-loop fueling generates a cycling of delivered fuel in maintaining exhaust air-fuel ratio at a desired level; and providing a fueling adjustment to a subsequent engine start in response to fueling information, said fueling information obtained over at least a complete cycle of closed-loop fueling following said transition from open-loop fueling.

Description:
BACKGROUND AND SUMMARY 
       [0001]    Engine starting during cold operating conditions, referred to as a “cold start”, can present numerous challenges in maintaining repeatability/reliability and meeting emission requirements. Specifically, providing appropriate engine air-fuel ratio during engine starting conditions can be difficult due to numerous factors, especially given that exhaust gas oxygen sensors used for feedback air-fuel control are typically unavailable during the initial operation of a cold start. As such, the initial fueling may be referred to as open-loop air-fuel control. 
         [0002]    One phenomenon that can degrade cold start air-fuel ratio control is when a portion of injected fuel may not be available for combustion due to fuel vaporization. This phenomenon may be referred to as “lost fuel” and can be significantly influenced by intake port surface temperature at start-up and fuel volatility (vapor pressure and distillation properties). Further, lost fuel can significantly impact open-loop fueling precision and accuracy, and cause the observed open-loop air-fuel ratio to deviate from the desired target value. 
         [0003]    One approach to provide improved air-fuel ratio control is provided in U.S. Pat. No. 6,266,957. In this example, upon identifying activation of an air-fuel ratio sensor and when an absolute value of the deviation between a target air-fuel ratio and an actual air-fuel ratio is equal to or greater than a predetermined value, a correction value is calculated at that moment and used to update an existing value within the backup RAM. 
         [0004]    However, the inventors herein have recognized a disadvantage with such an approach. In particular, the amount of correction at the exact moment of sensor activation may not accurately reflect the open-loop fueling error caused by lost fuel effects. Further, depending on the type of exhaust gas oxygen sensor provided, it may not be possible to identify how much error is present at the exact moment of sensor activation. 
         [0005]    As such, one example approach to address the above issues uses a method for controlling fueling of an engine. The method comprises, during an engine cold start and before the engine is warmed to a predetermined level, transitioning from open-loop fueling to closed-loop fueling, where during closed-loop fueling feedback from an exhaust gas oxygen sensor is utilized and where said closed-loop fueling generates a cycling of delivered fuel in maintaining exhaust air-fuel ratio at a desired level; and providing a fueling adjustment to a subsequent engine start in response to fueling information, said fueling information obtained over at least a complete cycle of closed-loop fueling following said transition from open-loop fueling. 
         [0006]    In this way, it is possible to utilize feedback information to obtain a more accurate determination of appropriate fueling during cold start open-loop conditions, thereby better accounting for variations in lost fuel. For example, as the engine ages, lost fuel can vary, thereby leading to increased emissions if not otherwise corrected. 
         [0007]    In one particular aspect, by using cycle average information of first complete fueling cycle, it is possible to obtain ever more accurate fueling corrections. In another aspect, the fueling adjustment is provided only under select conditions to avoid inaccurate readings that may be caused by various conditions. 
     
     
       DESCRIPTION OF THE FIGURES 
         [0008]      FIG. 1  shows a schematic engine diagram. 
           [0009]      FIG. 2  shows example cold starting operation with accurate open-loop fueling adjustments; 
           [0010]      FIG. 3  shows example cold starting operation with lean errors in open-loop fueling adjustments; 
           [0011]      FIG. 4  shows example cold starting operation with rich errors in open-loop fueling adjustments; and 
           [0012]      FIGS. 5-6  show example control routines. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    Internal combustion engine  10  comprising a plurality of cylinders, one cylinder of which is shown in  FIG. 1 , is controlled by electronic engine controller  12 . Engine  10  includes combustion chamber  30  and cylinder walls  32  with piston  36  positioned therein and connected to crankshaft  13 . Combustion chamber  30  communicates with intake manifold  44  and exhaust manifold  48  via respective intake valve  52  and exhaust valve  54 . Exhaust gas oxygen sensor  16  is coupled to exhaust manifold  48  of engine  10  upstream of catalytic converter  20 . 
         [0014]    Intake manifold  44  communicates with throttle body  64  via throttle plate  66 . Throttle plate  66  is controlled by electric motor  67 , which receives a signal from ETC driver  69 . ETC driver  69  receives control signal (DC) from controller  12 . Intake manifold  44  is also shown having fuel injector  68  coupled thereto for delivering fuel in proportion to the pulse width of signal (fpw) from controller  12 . Fuel is delivered to fuel injector  68  by a conventional fuel system (not shown) including a fuel tank, fuel pump, and fuel rail (not shown). 
         [0015]    Engine  10  further includes conventional distributorless ignition system  88  to provide ignition spark to combustion chamber  30  via spark plug  92  in response to controller  12 . In the embodiment described herein, controller  12  is a conventional microcomputer including: microprocessor unit  102 , input/output ports  104 , electronic memory chip  106 , which is an electronically programmable memory in this particular example, random access memory  108 , and a conventional data bus. The controller may further include a keep alive memory (not shown) for storing adaptive parameters. 
         [0016]    Controller  12  receives various signals from sensors coupled to engine  10 , in addition to those signals previously discussed, including: measurements of inducted mass air flow (MAF) from mass air flow sensor  110  coupled to throttle body  64 ; engine coolant temperature (ECT) from temperature sensor  112  coupled to cooling jacket  114 ; a measurement of throttle position (TP) from throttle position sensor  117  coupled to throttle plate  66 ; a measurement of turbine speed (Wt) from turbine speed sensor  119 , where turbine speed measures the speed of a torque converter output shaft, and a profile ignition pickup signal (PIP) from Hall effect sensor  118  coupled to crankshaft  13  indicating an engine speed (N). Alternatively, turbine speed may be determined from vehicle speed and gear ratio. 
         [0017]    Continuing with  FIG. 1 , accelerator pedal  130  is shown communicating with the driver&#39;s foot  132 . Accelerator pedal position (PP) is measured by pedal position sensor  134  and sent to controller  12 . 
         [0018]    In an alternative embodiment, where an electronically controlled throttle is not used, an air bypass valve (not shown) can be installed to allow a controlled amount of air to bypass throttle plate  62 . In this alternative embodiment, the air bypass valve (not shown) receives a control signal (not shown) from controller  12 . In another alternative embodiment, where a mass air flow sensor is not used, inducted mass air flow may be determined using a variety of computational methods. One example method, “speed-density”, computes inducted air mass based on engine speed and throttle position. 
         [0019]    As noted herein, during engine starting operation a portion of injected fuel may not be available for combustion due to fuel vaporization. This phenomenon may be referred to as “lost fuel” and can be significantly influenced by intake port surface temperature at start-up and fuel volatility (vapor pressure and distillation properties). Other factors may influence “lost fuel”. These can include, but are not limited to, intake manifold pressure, barometric pressure (altitude effects), and deposits on the intake valves and intake port passages. Further, lost fuel can significantly impact open-loop fueling precision and accuracy, and cause the observed open-loop air-fuel ratio to deviate from the desired target value.  FIG. 1  further illustrates via arrow  180  an example path where lost fuel may pass through the engine. 
         [0020]      FIG. 2  shows an example trajectory of both a desired (or commanded) relative air-fuel ratio (LAMBSE) at  210  and measured relative exhaust gas air-fuel ratio (lambda) at  212  during the first 15 seconds after an engine start. The difference between the open-loop commanded LAMBSE and the measured exhaust gas air-fuel during the first 10 seconds of engine operation after start is primarily a result of lost fuel, and labeled as such in  FIG. 2 . As such, the profile of the commanded value  210  is purposefully modified to maintain the desired exhaust air-fuel ratio. 
         [0021]    In this example, a closed-loop exhaust gas oxygen feedback signal is provided by a fast light-off HEGO (FLO HEGO) sensor  16 . Stoichiometry (lambda=1.0) is the desired or target open-loop air-fuel ratio during the first 10 seconds of operation. The transition to closed-loop fueling starts after 10 seconds, and is shown as point A in  FIG. 2 . This event occurs upon completion of the HEGO sensor warm-up period. Upon entering closed-loop control, LAMBSE exhibits the classic closed-loop limit-cycle scheduling. Initially, LAMBSE integrates in one direction until the HEGO sensor switches, jumps back a specified amount and integrates in the opposite direction, then repeats. The completion of the first complete air-fuel ratio cycle  220 , or switching cycle, is denoted at point B of  FIG. 2 . Further, additional cycles are also shown. 
         [0022]    In this example, the open-loop fueling correctly accounts for lost fuel, and provides approximately stoichiometry immediately prior to closed-loop operation. However, variations in lost fuel due to system aging, temperature, altitude, and other parameters can cause differences between the open-loop air-fuel ratios, as illustrated in  FIG. 3 . Specifically,  FIG. 3  illustrates a lean open-loop fueling error. In this example, the commanded air-fuel ratio (LAMBSE) trajectory is the same as  FIG. 2 . However, the measured exhaust open-loop air-fuel ratio is leaner than the desired stoichiometric target value (1.1 vs. 1.0). At the transition from open-loop to closed-loop fueling (point C), the feedback adjustment needs to compensate for approximately a 0.1 relative air-fuel ratio error. Similarly,  FIG. 4  illustrates a rich open-loop fueling error. In this example, the commanded air-fuel ratio (LAMBSE) trajectory is the same as  FIG. 2 . However, the measured exhaust open-loop air-fuel ratio is richer than the desired stoichiometric target value (0.9 vs. 1.0). At the transition from open-loop to closed-loop fueling (point E), the feedback adjustment needs to compensate for approximately a 0.1 relative air-fuel ratio error (although in a direction opposite to that of  FIG. 3 ). 
         [0023]    In one example approach, it is possible to learn the above open-loop fueling errors (e.g., learn variations in lost fuel) by monitoring the first one or more cycles of closed-loop air-fuel control after an engine start to adjust later open-loop cold start fueling. For example, in the example of  FIG. 3 , a correction of approximately 0.1 relative air-fuel ratio may be stored for those starting conditions (e.g., temperature, barometric pressure, shut-down time, engine speed, fuel type, alcohol content, etc.) so that during a subsequent start under similar conditions, the open-loop fueling injection amount or timing may be adjusted to better compensate for lost fuel effects. In some cases, this open-loop correction term may be highly temperature dependent and thus may be computed, stored and applied as a function of ambient temperature, air charge temperature (ACT), engine coolant temperature (ECT), and/or cylinder head temperature (CHT). In this way, conditions of the engine where the error is learned can be used to identify the appropriate correction for subsequent starts with similar conditions. 
         [0024]    Similarly, an opposite fueling adjustment of 0.1 could be used for the conditions of  FIG. 4 . In this way, improved engine air-fuel ratio control may be achieved during engine starting when transitioning from open to closed loop operation. 
         [0025]    Referring now to  FIGS. 5-6 , example routines to provide fuel injection adjustment and adaptive lost fuel learning are described. Specifically,  FIG. 5  provides an example cold-start idle adaptive (CIA) algorithm that begins at  510 . Next, at  512 , entry conditions are checked. Example entry conditions requirements include whether the engine is in non-degraded run mode and that the calibratable CIA software selection switch is not set in the by-pass position. If so, an immediate exit from the routine is made. Otherwise, the routine continues to  514  to determine whether open-loop air-fuel control engine idling is present and whether any exception conditions are present. Various open-loop exception conditions may be included, such as, for example, the following non-limiting examples: 
         [0026]    open-loop due to a failure mode (FMEM) condition; 
         [0027]    open-loop due to the open-loop exception flag being set; 
         [0028]    open-loop due to drive performance; 
         [0029]    forced open-loop; 
         [0030]    open-loop due to exhaust over-temperature; 
         [0031]    open-loop purge flag set (purge contributes to un-metered fuel); 
         [0032]    purge idle test running; 
         [0033]    purge monitor rate based idle test running; 
         [0034]    purge flow monitor test running; 
         [0035]    purge valve flowing; 
         [0036]    purge system is not providing expected control response; 
         [0037]    engine coolant temperature sensor (ECT), cylinder head temperature sensor (CHT), throttle position sensor (TPS), mass air-flow sensor (MAFS), electronic throttle control (ETC), gear selector switch (PRNDL), clutch switch, fuel rail pressure transducer (FRPT) faults or degradation; 
         [0038]    EGR valve stuck open; 
         [0039]    EGR intrusive test running; 
         [0040]    fuel injector and fuel pump faults or failures; 
         [0041]    deceleration fuel shut-off active; 
         [0042]    engine on-demand test running; 
         [0043]    secondary air monitor test running; 
         [0044]    fuel override enabled; and/or 
         [0045]    catalyst test running. 
         [0046]    If the engine is not idling or if an exception condition is present, the routine exit. Otherwise, open-loop fueling is scheduled at  516 . The open-loop relative desired air-fuel ratio, LAMBSE[ ], is computed by adding an adjusted open-loop adaptive correction term, CIA_OFS[ ], to the open-loop exhaust lambda, LAMBSE_EXH[ ]. Note that in V-type engine applications, the above parameters and associated error terms may be correlated on a per bank basis, and thus have unique values for each bank, indicated by brackets [ ], for example. 
         [0047]    Continuing with  FIG. 5 , in  516 , the open-loop adaptive correction term, CIA_OFS[ ], is multiplied by the ratio of KAMRF[ ] to KAMRF_CIA_LAST[ ], where KAMRF[ ] is the closed-loop adaptive air-fuel correction factor stored in keep-alive memory (KAM) at the start, and KAMRF_CIA_LAST[ ] is the KAMRF[ ] value stored in memory at the time when CIA_OFS[ ] is computed (see  542 ). In this way, it is possible to utilize closed-loop adaptive learning in order to compensate for air-fuel ratio offset errors that are caused by certain events or actions, which may occur subsequent to the completion of the CIA algorithm. For example, consider a refueling event that occurs while the engine is fully warmed-up. If a significant quantity of fuel (e.g., more than ½ the tank capacity) is replaced with a fuel that has an air-fuel stoichiometry vastly different from the fuel originally in the tank, a HEGO sensor will observe a change in the stoichiometric switching point. Assuming that sufficient time at closed-loop operation follows this refueling event, the closed-loop air-fuel adaptation routine will detect and correct the offset error, and this will be reflected by a change to KAMRF[ ]. Multiplying CIA_OFS [ ] by KAMRF[ ] over KAMRF_CIA_LAST[ ] will further improve compensation for this air-fuel ratio change on the next cold-start. 
         [0048]    The routine then proceeds to  518  where the parameter, CIA_OL_LAMBSE[ ] is assigned the value of the most recently scheduled open-loop command LAMBSE[ ]. At  520 , the entry conditions for closed-loop fueling are checked and, if not satisfied, the routine exits. Otherwise, the routine proceeds to  522  where closed-loop fueling based upon exhaust gas oxygen sensor feedback is invoked using the typical limit-cycle method (e.g., PI control). However, while such closed-loop control is used, the approach described herein may be used with various closed-loop control other than those that use limit-cycle exhaust gas oxygen feedback. For example, closed-loop fueling can be based on the exhaust air-fuel ratio feedback signal from a proportional-readout sensor, such as, a Universal Exhaust Gas Oxygen (UEGO) sensor. 
         [0049]    Then, the routine proceeds to  524  to check for closed-loop idle operation and the presence of exception conditions. Excluding those items that are specifically associated with open-loop operation, the exception conditions may be the same as those described in  514 , with the addition of certain exhaust gas oxygen (EGO/HEGO) sensor related exception conditions, for example. These may include HEGO sensor degradation or faults and/or upstream EGO monitor high frequency modulation. If the engine is not in closed-loop idle or an exception condition is present, the routine exits. However, in the example of EGO/HEGO degradation or faults for V-engine applications in which there is a feedback sensor in each bank, the routine may still continue to provide adjustment and/or learning for a bank of cylinders with properly functioning sensors only. In still another example, should one bank have a degraded sensor, the routine may continue execution using feedback from the bank that has the functioning sensor to provide control and learning for both banks. Such sensor substitution may be limited to conditions where the difference in air-fuel ratio between engine banks does not exceed a calibratable limit value prior to the EGO/HEGO degradation in the one bank. 
         [0050]    Continuing with  FIG. 5 , if the answer to  524  is Yes, the routine continues to  526  where the limit cycle center (average), LAMAVE[ ], for the closed-loop lambse is calculated. For example, the routine may determine the average value over a first cycle of closed-loop operation following open-loop fueling during an engine start. The first cycle used may be the first complete cycle of fueling oscillation during closed-loop control, and may begin after an initial correction, as shown in the above Figures. Also, while an average value may be used, various other parameters indicative of an average value or similar value may be used. Further still, the averaging technique may vary depending on the type of sensor used for feedback control. For example, the averaging techniques for a switching EGO/HEGO type sensor may be different than when a UEGO type sensor is used. 
         [0051]    Next, at  528 , the routine determines whether a sufficient computational interval for lambda averaging has elapsed. As noted above, the averaging interval may be a first air-fuel limit cycle, or a first number of limit cycles, or may be based on a number of engine combustion cycles of a first one or more air-fuel limit cycles following commencement of closed-loop control, for example. The size of this interval may further be based on sensor characteristics, statistical significance, and other noise factors, and thus may be calibratable. If this calibratable interval has not been exceeded, the process returns to  524 ; otherwise, the routine proceeds to  530 . 
         [0052]    At  530 , the lambda (fueling) difference, CIA_LAM_DIFF[ ] at the transition point from open-loop to closed-loop fueling is calculated by subtracting the value of the last open-loop lambda command prior to going closed-loop, CIA_OL_LAMBSE[ ], from the averaged closed-loop lambda command, LAMAVE[ ]. The routine then proceeds to  532  where the value of the open-loop lambda (fueling) error term at the transition from open-loop to closed-loop fueling, CIA_LAM_ERROR[ ], is computed by subtracting the quantity, (1−LAM_OL_DES[ ]), from the value of CIA_LAM_DIFF[ ] computed in  530 . LAM_OL_DES[ ] represents the desired or intended open-loop lambda command value just prior to the open-loop to closed-loop transition. LAM_OL_DES [ ] may be both calibration and engine temperature dependent. 
         [0053]    The routine next proceeds to  534  where the absolute value of the CIA_LAM_ERROR[ ] calculation is compared to the absolute value of a calibratable error hysteresis dead-band term, CIA_LAM_ERROR_HYS. In this way, it is possible to mitigate potential oscillatory behavior of the control caused by very small error perturbations. If the value of CIA_LAM_ERROR[ ] is less than (within) the hysteresis dead-band value, the process proceeds to  536 , where the CIA_LAM_ERROR[ ] is assigned the stored lambda error value from the last execution of the routine, CIA_LAM_ERROR_LAST[ ]. The process then proceeds to  542 . If the value of CIA_LAM_ERROR[ ] is greater than (outside) the hysteresis dead-band value, the process proceeds to  538 . 
         [0054]    In  538 , a proportional, CIA_P[ ], derivative, CIA_D[ ], and integral, CIA_I[ ], controller terms are computed. While this example uses PID control, various other control approaches may be used. Continuing with the PID example, the proportional controller term, CIA_P[ ], is the product of a proportional gain term, CIA_GP[ ], and CIA_LAM_ERROR[ ]. The derivative controller term, CIA_D[ ], is the product of a differential gain term, CIA_GD[ ], and the difference between the current lambda error value, CIA_LAM_ERROR[ ] and the stored lambda error value from the last execution of the routine, CIA_LAM_ERROR_LAST[ ]. The integral controller term, CIA_I[ ], is the product of an integral gain term, CIA_GI[ ], and the sum of the current lambda error value, CIA_LAM_ERROR[ ] and the stored integral controller term value, CIA_I_LAST[ ], from the last execution of the routine. 
         [0055]    Note that, as mentioned above, the cold-start “lost fuel” effect, where a large portion of the injected fuel is not available in cylinder for combustion, may be influenced by intake port surface temperature at start-up and fuel volatility (vapor pressure and distillation properties). Therefore, the values for the proportional, differential and integral gain terms may be at least partially dependent upon either engine coolant or cylinder head temperature (ECT or CHT), as well, as upon other conditions These conditions may include a partial dependence on barometric pressure (altitude effects). Also, the dependencies may be either linear or non-linear. 
         [0056]    The routine then proceeds to  250 , where an open-loop adaptive offset, CIA_OFS[ ], is computed by combining the proportional, derivative, and integral controller terms—CIA_P[ ], CIA_D[ ] and CIA_I[ ]. 
         [0000]    At  542 , CIA_LAM_ERROR_LAST[ ] is assigned the CIA_LAM_ERROR[ ] value from either  532  or  536 , and stored in memory. CIA_I_LAST[ ] is assigned the CIA_I[ ] value from  538 , and stored in memory. CIA_OFS_LAST[ ] is assigned the CIA_OFS[ ] value from either  540  or  516 , and stored in memory. KAMRF_CIA_LAST[ ] is assigned the current value for KAMRF[ ], and stored in memory. The CIA_OFS[ ] value is further stored in memory. Memory storage may be in the form of a single value, a two-dimensional transfer function (ƒ of x) value; or a multi-dimensional look-up table value. The memory storage locations for the transfer function or look-up table are parameter dependent. These parameters may include, but are not limited to, engine operating temperatures (ECT or CHT) and/or barometric pressures. Parameter dependency may be linear or non-linear. These stored values can then be used upon the next execution of the routine. Finally, the routine exits. 
         [0057]    While  FIG. 5  shows one example routine, various alternative embodiments may be used. Referring to  FIG. 6 , one example alternative is shown for calculating the cold idle adaptive proportional, integral and derivative controller terms. 
         [0058]    Specifically, the routine uses similar acts up through  532 , but then continues to  610  where a delta lambda error term, CIA_DELTA_LAM_ERROR, is computed by subtracting a calibratable error hysteresis dead-band term, CIA_LAM_ERROR_HYS from the CIA_LAM_ERROR[ ] term. Next, at  612 , the absolute value of the CIA_LAM_ERROR[ ] is compared to the absolute value of a calibratable error hysteresis dead-band term, CIA_LAM_ERROR_HYS. If the calculated value of CIA_LAM_ERROR[ ] is within the hysteresis dead-band value, the process proceeds to  614 , where the CIA_DELTA_LAM_ERROR[ ] is assigned the stored delta lambda error value from the last execution of the routine, CIA_DELTA_LAM_ERROR_LAST[ ]. The process then proceeds to  620 . Otherwise, if the calculated value of CIA_LAM_ERROR[ ] is outside the hysteresis dead-band value, the process proceeds to  616 . 
         [0059]    At  616 , a proportional, CIA_P[ ], derivative, CIA_D[ ], and integral, CIA_I[ ], controller terms are computed. The proportional controller term, CIA_P[ ], is the product of a proportional gain term, CIA_GP[ ], and CIA_DELTA_LAM_ERROR[ ]. The derivative controller term, CIA_D[ ], is the product of a differential gain term, CIA_GD[ ], and the difference between the current delta lambda error value, CIA_DELTA_LAM_ERROR[ ] and the stored delta lambda error value from the last execution of the routine, CIA_DELTA_LAM_ERROR_LAST[ ]. The integral controller term, CIA_I[ ], is the product of an integral gain term, CIA_GI[ ], and the sum of the current delta lambda error value, CIA_DELTA_LAM_ERROR[ ] and the stored integral controller term value, CIA_I_LAST[ ], from the last execution of the routine. 
         [0060]    Again, the values for the proportional, differential and/or integral gain terms used in  616  may be at least dependent upon either engine coolant or cylinder head temperature (ECT or CHT), as well as, upon other conditions including a partial dependence on barometric pressure (altitude effects). Also, the dependencies may be either linear or non-linear. 
         [0000]    The routine then proceeds to  618 , where the open-loop adaptive offset, CIA_OFS[ ], is computed by combining the proportional, derivative, and integral controller terms—CIA_P[ ], CIA_D[ ] and CIA_I[ ]. At  620 , CIA_DELTA_LAM_ERROR_LAST[ ] is assigned the CIA_DELTA_LAM_ERROR[ ] value from either  610  or  614 , and stored in memory. CIA_I_LAST[ ] is assigned the CIA_I[ ] value from  616 , and stored in memory. CIA_OFS_LAST[ ] is assigned the CIA_OFS[ ] value from either  618  or  516 , and stored in memory. KAMRF_CIA_LAST[ ] is assigned the current value for KAMRF[ ], and stored in memory. The CIA_OFS[ ] value is stored in memory, as previously described for  542  in  FIG. 5 . These stored values will then be used upon the next execution of the routine. Finally, the routine exits. 
         [0061]    Various advantageous elements are illustrated via the above routines, including the use of adaptive terms having integral and derivative terms, in addition to a proportional term, thereby providing improved learning. Further, updating the adaptive term before adding it to the open-loop lambda term computed from the feedback execution of the open-loop A/F subroutine can provide improved response. This is accomplished by multiplying the adaptive term by the ratio of the KAMRF[ ] (the closed-loop adaptive air-fuel correction factor stored in keep-alive memory [KAM]) at the start, and KAMRF_CIA_LAST[ ] (the KAMRF[ ] value stored in memory at the time when CIA_OFS[ ] is computed) before it is added to the normally computed open-loop lambda. Also, the routine may suspend computation of the adaptive term while certain open-loop or closed-loop conditions are present, which can result in the introduction of unmetered air or fuel. These can include, but are not limited to, deceleration fuel shutoff (DFSO), open-loop/closed-loop fuel vapor purge, and diagnostic self-tests, for example. Computation of the adaptive term may also be suspended when certain sensor faults, failures and/or errors are present. 
         [0062]    As illustrated by the above example routines, various operations may be achieved to provide improved results. For example, returning to  FIG. 2 , at the time of transition from open-loop to closed-loop fueling control, i.e. Point A, the most recent or last value for the open-loop fueling command is recorded by the routine and stored as the term, CIA_OL_LAMBSE. In this case, CIA_OL_LAMBSE would have a value of 1.0. Upon entering closed-loop control, LAMBSE exhibits the classic closed-loop limit-cycle scheduling. Initially, LAMBSE integrates in one direction until the HEGO sensor switches, jumps back a specified amount and integrates in the opposite direction, then repeats. The LAMBSE value may then be filtered over the first full period of limit-cycle operation in order to obtain an averaged value for LAMBSE. This filtered value, LAMAVE, may be determined at Point B, where 1.0 is the value in this example. While this example uses only the first full cycle, additional cycles may be used under some conditions depending on sensor response characteristics. Further, a second and/or other subsequent cycle or cycles may be utilized in lieu of the first cycle. Once LAMAVE and CIA_OL_LAMBSE have been determined, a difference term of the two values, CIA_LAM_DIFF, may be computed. The computed CIA_LAM_DIFF value is zero for this example, indicating that the initial open-loop fueling accurately approximated lost fuel, and thus no adjustment or adaptation for the present conditions is used. 
         [0063]    Thus, in this example, where stoichiometry is the expected value for the open-loop air-fuel ratio immediately prior to closed-loop operation, the desired CIA_LAM_DIFF value should be zero. Any deviation from this desired value of zero is considered a system error, CIA_LAM_ERROR. The gain factors can then be applied to the system error, and proportional, derivative and/or integral controller terms are generated. As shown in  FIGS. 5-6 , these are then combined to produce an open-loop adaptive fueling correction term, CIA_OFS. CIA_OFS is stored and subsequently used to offset the open-loop air-fuel commands during the open-loop fueling period on the next engine start. As noted above, in one example, the various terms used to compute CIA_OFS, for example, the proportional, integral and differential gain multipliers, also have temperature and/or barometric pressure dependencies to more accurately account for temperature and/or altitude effects on lost fuel. 
         [0064]    Further examples of operation provided by the above routines can be illustrated by returning to  FIG. 3 . Again,  FIG. 3  illustrates a lean open-loop fueling error scenario. In this example, at the transition from open-loop to closed-loop fueling (Point C), the CIA_OL_LAMBSE term has a value of 1.0. At Point D, the LAMAVE is determined as described previously, but with a value of 0.9 in this example. After determining CIA_OL_LAMBSE and LAMAVE, the difference of these two values, CIA_LAM_DIFF, is then computed. In the example shown, CIA_LAM_DIFF is assigned a value of −0.1, which is non-zero. Since stoichiometry is the expected value for the open-loop air-fuel ratio immediately prior to closed-loop operation in this example, the desired CIA_LAM_DIFF value should be zero. Therefore, after comparing the computed and desired CIA_LAM_DIFF, the system error, CIA_LAM_ERROR, is equal to the computed CIA_LAM_DIFF, and has a value of −0.1. Following the approach outlined herein, the CIA_LAM_ERROR is used to generate the integral, proportional and derivative controller terms. These are combined to produce the open-loop adaptive correction term, CIA_OFS, which is stored and used to offset the open-loop LAMBSE commands during the open-loop fueling period on the next and subsequent cold-starts. The effect will be to reduce the exhaust gas air-fuel ratio error on these subsequent starts. Further, corrective adaptation over subsequent starts will result in an open-loop exhaust air-fuel ratio trajectory that more closely follows the desired or ideal trajectory shown in  FIG. 2 . 
         [0065]    Still another example of operation provided by the above routines can be illustrated by returning to  FIG. 4 . Again,  FIG. 4  illustrates an air-fuel ratio error similar to  FIG. 3 , but in the opposite direction. CIA_OL_LAMBSE and LAMAVE are computed at Points E and F, respectively. Note that the sign of the lambda difference parameter, CIA_LAM_DIFF, has changed, and, when used to generate an adaptive correction term, will shift the exhaust gas air-fuel ratio in the opposite or lean direction on subsequent engine starts. This example also assumes that stoichiometry is the expected value for the open-loop air-fuel ratio immediately prior to closed-loop operation. 
         [0066]    Although the examples illustrated herein utilize stoichiometry (lambda=1.0) as the desired target air-fuel ratio at the end of the open-loop fueling period, this control methodology can also adaptively correct open-loop fueling errors for those applications where the desired target air-fuel ratio is either rich or lean of stoichiometry (i.e. lambda&lt;1.0 or lambda&gt;1.0). 
         [0067]    Further, for the examples in  FIGS. 2 through 4 , a fast light-off HEGO (FLO HEGO) sensor may be used to provide the closed-loop exhaust gas oxygen feedback signal. It should be noted that this control methodology can utilize the signals from various styles of feedback sensors, including those that can provide a direct reading of the exhaust gas air-fuel ratio, such as, the UEGO (universal exhaust gas oxygen) sensor. 
         [0068]    Note that the control routines included herein can be used with various engine configurations, such as those described above. The specific routine described herein may represent one or more of any number of processing strategies such as event-driven, interrupt-driven, multi-tasking, multi-threading, and the like. As such, various steps or functions illustrated may be performed in the sequence illustrated, in parallel, or in some cases omitted. Likewise, the order of processing is not necessarily required to achieve the features and advantages of the example embodiments described herein, but is provided for ease of illustration and description. One or more of the illustrated acts, steps, or functions may be repeatedly performed depending on the particular strategy being used. Further, the described steps may graphically represent code to be programmed into the computer readable storage medium in controller  12 . 
         [0069]    It will be appreciated that the configurations and routines disclosed herein are exemplary in nature, and that these specific embodiments are not to be considered in a limiting sense, because numerous variations are possible. For example, the above technology can be applied to V-6, 1-4, 1-6, V-8, V-10, V-12, opposed 4, and other engine types. The subject matter of the present disclosure includes all novel and nonobvious combinations and subcombinations of the various systems and configurations, and other features, functions, and/or properties disclosed herein. 
         [0070]    The following claims particularly point out certain combinations and subcombinations regarded as novel and nonobvious. These claims may refer to “an” element or “a first” element or the equivalent thereof. Such claims should be understood to include incorporation of one or more such elements, neither requiring nor excluding two or more such elements. Other combinations and subcombinations of the disclosed features, functions, elements, and/or properties may be claimed through amendment of the present claims or through presentation of new claims in this or a related application. Such claims, whether broader, narrower, equal, or different in scope to the original claims, also are regarded as included within the subject matter of the present disclosure.