(57)【要約】【課題】実際の空燃比を目標とする空燃比により迅速に一致させることができる内燃機関の空燃比制御装置を提供すること。【解決手段】この装置は燃料増量期間Ｔｒｃに続く過渡期間Ｔｋ中、現時点の出力偏差（触媒下流の空燃比センサの出力値と目標値との差）に基づいて出力偏差を時間積分した第１の時間積分値SDVoxs1を更新し更新された第１の時間積分値に基づいて下流側ＦＢ補正量を更新するとともに第２の時間積分値SDVoxs2及び下流側ＦＢ学習補正量を一定に維持し且つ下流側ＦＢ補正量と下流側ＦＢ学習補正量とに基づいて燃料噴射量を決定する。装置は過渡期間後、第１の時間積分値及び下流側ＦＢ補正量の更新を継続するとともに、現時点の出力偏差に基づいて第２の時間積分値を更新し更新された第２の時間積分値に基づいて下流側ＦＢ学習補正量を更新する。これにより下流側ＦＢ補正量及び下流側ＦＢ学習補正量を適切に算出することができる。【選択図】図５
2008031929.tif 000002
【特許請求の範囲】
【請求項１】
排気通路に排気浄化用触媒を配設した内燃機関に適用され、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
前記上流側空燃比センサの出力値と前記下流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し、同算出された上流側フィードバック補正量に基づいて前記内燃機関に供給される混合ガスの空燃比を制御する空燃比フィードバック制御手段と、
を備えた内燃機関の空燃比制御装置において、
前記空燃比フィードバック制御手段は、
所定の下流側フィードバック実行条件が成立している下流側フィードバック条件成立期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との差である出力偏差を時間積分した第１の時間積分値を現時点にて求められている同第１の時間積分値と現時点の同出力偏差とに基づいて更新するとともに同更新された第１の時間積分値に基づいて下流側フィードバック補正量を算出する下流側フィードバック補正量算出手段と、
前記下流側フィードバック実行条件に更に条件が付加された所定の学習実行条件が成立している学習条件成立期間において前記出力偏差を時間積分した第２の時間積分値を現時点にて求められている同第２の時間積分値と現時点の同出力偏差とに基づいて更新するとともに同更新された第２の時間積分値に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習実行条件が成立していない学習条件不成立期間において同下流側フィードバック学習補正量を一定に維持する下流側フィードバック学習補正量算出手段と、
前記学習実行条件が第１時点において成立しなくなりその後の第２時点において成立した場合、同第２時点における前記第２の時間積分値を同第１時点から同第２時点までの前記出力偏差とは無関係な所定の値に設定する時間積分値設定手段と、
前記下流側フィードバック条件成立期間において前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間において前記下流側フィードバック補正量に基づくことなく前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出する上流側フィードバック補正量算出手段と、
を備えた内燃機関の空燃比制御装置。
【請求項２】
排気通路に排気浄化用触媒を配設した内燃機関に適用され、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
前記上流側空燃比センサの出力値と前記下流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し、同算出された上流側フィードバック補正量に基づいて前記内燃機関に供給される混合ガスの空燃比を制御する空燃比フィードバック制御手段と、
を備えた内燃機関の空燃比制御装置において、
前記空燃比フィードバック制御手段は、
前記下流側空燃比センサの出力値と所定の下流側目標値との差である出力偏差を時間積分した時間積分値を現時点にて求められている同時間積分値と現時点の同出力偏差とに基づいて更新する時間積分値更新手段と、
所定の下流側フィードバック実行条件が成立している下流側フィードバック条件成立期間において前記時間積分値に基づいて下流側フィードバック補正量を算出する下流側フィードバック補正量算出手段と、
前記下流側フィードバック実行条件に更に条件が付加された所定の学習実行条件が成立している学習条件成立期間において前記時間積分値に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習実行条件が成立していない学習条件不成立期間において同下流側フィードバック学習補正量を一定に維持する下流側フィードバック学習補正量算出手段と、
前記学習実行条件が第１時点において成立しなくなりその後の第２時点において成立した場合に同第２時点における前記時間積分値を同第１時点から同第２時点までの前記出力偏差とは無関係な所定の値に設定する時間積分値設定手段と、
前記下流側フィードバック条件成立期間において前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間において前記下流側フィードバック補正量に基づくことなく前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出する上流側フィードバック補正量算出手段と、
を備えた内燃機関の空燃比制御装置。
【請求項３】
排気通路に排気浄化用触媒を配設した内燃機関に適用され、
前記内燃機関に供給される燃料を噴射する燃料噴射手段と、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
を備え、前記燃料噴射手段により噴射される燃料の量である燃料噴射量を制御する内燃機関の燃料噴射量制御装置であって、
所定の燃料カット実行条件が成立している期間である燃料カット条件成立期間中、前記燃料噴射手段による燃料の噴射を停止させる燃料カット手段と、
前記燃料カット条件成立期間が終了してから所定の燃料増量時間が経過するまでの燃料増量期間中、前記内燃機関に供給される混合ガスの空燃比が理論空燃比よりもリッチ側の所定の燃料増量用空燃比となるように前記燃料噴射量を制御する燃料増量手段と、
前記燃料カット条件成立期間及び前記燃料増量期間を含まない期間のうちの所定の下流側フィードバック実行条件が成立している期間である下流側フィードバック条件成立期間中、前記下流側空燃比センサの出力値と理論空燃比に対応する所定の下流側目標値との差である出力偏差に基づいて下流側フィードバック補正量を算出する下流側フィードバック補正量算出手段と、
前記下流側フィードバック条件成立期間のうちの前記燃料増量期間が終了してから所定の過渡時間が経過するまでの過渡期間を含まない期間である学習条件成立期間中、前記出力偏差に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習条件成立期間以外の学習条件不成立期間中、同下流側フィードバック学習補正量を一定に維持する下流側フィードバック学習補正量算出手段と、
前記下流側フィードバック条件成立期間中、前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し同算出された上流側フィードバック補正量に基づいて前記燃料噴射量を制御し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間内の期間であって少なくとも前記燃料カット条件成立期間を含まない期間中、前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し同算出された上流側フィードバック補正量に基づいて前記燃料噴射量を制御する燃料噴射量フィードバック制御手段と、
を備える内燃機関の燃料噴射量制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に配設された空燃比センサを備える内燃機関に適用され、内燃機関に供給される混合ガスの空燃比を空燃比センサの出力値に基づいてフィードバック制御する内燃機関の空燃比制御装置に関する。また、本発明は、上記内燃機関に適用され、内燃機関に供給するために噴射される燃料の量である燃料噴射量を空燃比センサの出力値に基づいてフィードバック制御する内燃機関の燃料噴射量制御装置に関する。
【背景技術】
【０００２】
従来から、内燃機関に供給される（内燃機関の燃焼室内に形成される）混合ガスの空燃比（内燃機関の空燃比）をフィードバック（ＦＢ）制御する空燃比制御装置が知られている。このような空燃比制御装置の一つは、排ガス中の有害物質を浄化するように排気通路に配設された排気浄化用触媒（触媒）の上流及び下流のそれぞれにて排気通路に配設された空燃比センサ（上流側空燃比センサ及び下流側空燃比センサ）を備えている。
【０００３】
この制御装置は、内燃機関の目標空燃比が理論空燃比に設定されている場合、下流側空燃比センサの実際の出力値と下流側目標値との差（以下、単に、「出力偏差」と称呼する。）に基づいて下流側ＦＢ補正量Ｖｓｂを算出する。この下流側目標値は、空燃比が理論空燃比であるガスが下流側空燃比センサに到達している場合におけるその下流側空燃比センサの出力に相当する値に設定されている。
【０００４】
更に、制御装置は、内燃機関の目標空燃比が理論空燃比に設定されている場合、下流側ＦＢ補正量Ｖｓｂと上流側空燃比センサの実際の出力値と内燃機関の目標空燃比とに基づいて上流側ＦＢ補正量を決定する。一方、制御装置は、内燃機関の目標空燃比が理論空燃比以外の空燃比に設定されている場合、下流側ＦＢ補正量Ｖｓｂを用いることなく、上流側空燃比センサの実際の出力値及びその目標空燃比に基づいて上流側ＦＢ補正量を決定する。そして、制御装置は、そのように決定された上流側ＦＢ補正量に基づいて燃料噴射量を決定する。
【０００５】
この下流側ＦＢ補正量Ｖｓｂは、上述の下流側ＦＢ補正量Ｖｓｂを用いた空燃比のＦＢ制御が十分に長い時間にわたって行われ続けた状態（定常状態）における出力偏差（この場合、「定常偏差」ということができる。）を０にするため、出力偏差の時間積分値に所定のゲインを乗じることにより算出される積分項を含んでいる。従って、上流側空燃比センサが劣化した等の理由により上流側空燃比センサの出力値と触媒の上流の実際の空燃比（上流側空燃比）との間の対応関係が予定されていた対応関係と相違している（上流側空燃比センサの出力ズレが生じている）場合であっても、この制御装置によれば、定常状態において、触媒の下流の空燃比（下流側空燃比）を下流側目標値に対応する空燃比（下流側目標空燃比）に一致させることができる。換言すると、上記上流側空燃比センサの出力ズレを補償することができる。
【０００６】
ところで、上述したように、内燃機関の目標空燃比が理論空燃比以外の空燃比に設定されている場合、燃料噴射量を決定する際に下流側ＦＢ補正量Ｖｓｂが使用されないので、上記上流側空燃比センサの出力ズレが補償されない。従って、上流側空燃比センサの出力値が目標空燃比に対応する上流側目標値に一致するように制御されていても、内燃機関の実際の空燃比を目標空燃比に一致させることができない恐れがある。
【０００７】
そこで、他の制御装置は、上記定常状態において算出される下流側ＦＢ補正量Ｖｓｂに基づいて下流側ＦＢ学習補正量Ｖｓｇを求める。そして、制御装置は、内燃機関の目標空燃比が理論空燃比以外の空燃比に設定されている場合、求められた下流側ＦＢ学習補正量Ｖｓｇと上流側空燃比センサの実際の出力値と内燃機関の目標空燃比とに基づいて上流側ＦＢ補正量を決定する。これにより、内燃機関の目標空燃比が理論空燃比以外の空燃比に設定されている場合においても、上記上流側空燃比センサの出力ズレが補償される。この結果、内燃機関の実際の空燃比を上記目標空燃比に一致させることができる（特許文献１を参照。）。
【特許文献１】特開２００５−６１３５６号公報
【発明の開示】
【０００８】
しかしながら、上記制御装置によると、以下にタイムチャートである図１を参照しながら説明するような問題が生じる。
【０００９】
先ず、図１に示した時刻t0よりも前の期間Ａにおいて、制御装置は内燃機関の目標空燃比を理論空燃比に設定していると仮定する。このとき、制御装置は、図１の（Ｂ）に示した下流側空燃比センサの実際の出力値と下流側目標値Ｖｒｅｆとの差（出力偏差）Δを時間積分することにより図１の（Ｆ）に示す曲線ＣＳのように時間積分値を更新する。そして、制御装置は、下流側ＦＢ補正量Ｖｓｂの積分項を更新された時間積分値に基づいて算出し下流側ＦＢ補正量Ｖｓｂを更新するとともに、その下流側ＦＢ補正量Ｖｓｂ（従って、時間積分値）に基づいて図１の（Ｆ）の曲線ＣＧに示した下流側ＦＢ学習補正量Ｖｓｇを更新する。更に、制御装置は、算出された下流側ＦＢ補正量Ｖｓｂと、算出された下流側ＦＢ学習補正量Ｖｓｇと、上流側空燃比センサの実際の出力値Ｖと、目標空燃比と、に基づいて上流側ＦＢ補正量ＤＦｉを決定する。そして、制御装置は、理論空燃比に対応する基本燃料噴射量Ｆｉｓと上流側ＦＢ補正量ＤＦｉとに基づいて燃料噴射量Ｆｉを決定する。これにより、内燃機関の空燃比が目標空燃比である理論空燃比に制御される。
【００１０】
次いで、時点t0にて燃料カット実行条件が成立すると仮定する。燃料カット実行条件が成立している期間である燃料カット条件成立期間（時点t0〜時点t1）Ｔｆｃにおいては、制御装置は燃料の噴射を停止させる（燃料カット制御を行う）。これにより、触媒が吸蔵する酸素の量（酸素吸蔵量）は増加する。更に、燃料カット条件成立期間Ｔｆｃ中、制御装置は、時間積分値の更新を停止（時間積分値を一定に維持）し、且つ、下流側ＦＢ学習補正量Ｖｓｇの更新を停止して下流側ＦＢ学習補正量Ｖｓｇを一定に維持する。当然、制御装置は、空燃比のＦＢ制御を行わない。
【００１１】
時点t1にて燃料カット実行条件が不成立となった（成立しなくなった）とき、酸素吸蔵量は、適量（例えば、酸素吸蔵量の最大値の半分の量）よりも過度に多くなっている。従って、制御装置は、酸素吸蔵量を迅速に減少させるために、燃料カット条件成立期間Ｔｆｃが終了した時点から所定時間が経過するまでの期間である燃料増量期間（時点t1〜時点t2）Ｔｒｃ中、内燃機関の目標空燃比を理論空燃比よりもリッチ側の空燃比（燃料増量用空燃比）に設定する（燃料増量制御を行う）。
【００１２】
この燃料増量期間Ｔｒｃにおいて、制御装置は、燃料カット条件成立期間Ｔｆｃと同様、時間積分値の更新を停止（時間積分値を一定に維持）し、且つ、下流側ＦＢ学習補正量Ｖｓｇの更新を停止して下流側ＦＢ学習補正量Ｖｓｇを一定に維持する。そして、制御装置は、下流側ＦＢ補正量Ｖｓｂに基づくことなく、一定値に維持された下流側ＦＢ学習補正量Ｖｓｇと、上流側空燃比センサの実際の出力値Ｖと、目標空燃比と、に基づいて上流側ＦＢ補正量を決定する。そして、制御装置は、燃料増量用空燃比に対応する基本燃料噴射量Ｆｉｒと上流側ＦＢ補正量ＤＦｉとに基づいて燃料噴射量Ｆｉを決定する。これにより、内燃機関の空燃比が目標空燃比である燃料増量用空燃比に制御される。
【００１３】
次に、時点t2以降の期間Ｂになると、触媒の酸素吸蔵量が略適量になっていることから、制御装置は、内燃機関の目標空燃比を理論空燃比に設定する。更に、制御装置は、時間積分値の更新を再開するとともに、その時間積分値に基づいて下流側ＦＢ補正量Ｖｓｂ及び下流側ＦＢ学習補正量Ｖｓｇを算出する。加えて、制御装置は、算出された下流側ＦＢ補正量Ｖｓｂと、算出された下流側ＦＢ学習補正量Ｖｓｇと、上流側空燃比センサの実際の出力値と、目標空燃比と、に基づいて上流側ＦＢ補正量を決定する。そして、制御装置は、理論空燃比に対応する基本燃料噴射量Ｆｉｓと上流側ＦＢ補正量ＤＦｉとに基づいて燃料噴射量Ｆｉを決定する。これにより、内燃機関の空燃比は理論空燃比に制御される。
【００１４】
このように、従来の制御装置によれば、燃料増量期間Ｔｒｃ中、時間積分値の更新が停止されるとともに下流側ＦＢ学習補正量Ｖｓｇの更新も停止されるので、内燃機関の状態が上記定常状態とならない燃料増量期間Ｔｒｃにおける出力偏差の影響を受けた下流側ＦＢ補正量Ｖｓｂに基づいて下流側ＦＢ学習補正量Ｖｓｇが算出されることはない。従って、下流側ＦＢ学習補正量Ｖｓｇが上記上流側空燃比センサの出力ズレを補償するための値として不適切な値となることを防止することができる。
【００１５】
ところで、燃料増量期間Ｔｒｃが終了してから所定時間が経過するまでの過渡期間Ｔｋ（時点t2〜時点t3）においては、目標空燃比が変更された直後であるので内燃機関の状態は上記定常状態となっていない。従って、この過渡期間Ｔｋにおける出力偏差の影響を受けた下流側ＦＢ補正量Ｖｓｂに基づいて下流側ＦＢ学習補正量Ｖｓｇを算出すると、算出された下流側ＦＢ学習補正量Ｖｓｇは上記上流側空燃比センサの出力ズレを補償するための値として不適切な値となる恐れがある。即ち、過渡期間Ｔｋにおいては、下流側ＦＢ学習補正量Ｖｓｇの更新を停止することが望ましい。更に、過渡期間Ｔｋ終了後に算出される下流側ＦＢ学習補正量Ｖｓｇの値を適切な値とするためには、過渡期間Ｔｋにおいて下流側ＦＢ補正量Ｖｓｂの更新を停止しておくことが望ましく、そのために下流側ＦＢ補正量Ｖｓｂを算出する基となる時間積分値の更新も過渡期間Ｔｋにおいて停止することが望ましい。
【００１６】
一方、この過渡期間Ｔｋにおいては、内燃機関の目標空燃比が理論空燃比に設定されている。従って、下流側空燃比を下流側目標空燃比に迅速に一致させるために、上述したように、過渡期間Ｔｋにおいて時間積分値を更新して下流側ＦＢ補正量Ｖｓｂを算出し且つ算出した下流側ＦＢ補正量Ｖｓｂによって内燃機関の空燃比を制御することも望ましい。
【００１７】
このように、上記制御装置においては、過渡期間Ｔｋにおいて下流側ＦＢ補正量Ｖｓｂを更新するために時間積分値を更新すると、過渡期間Ｔｋの終了後に下流側ＦＢ学習補正量Ｖｓｇが不適切な値に更新される恐れがある。逆に、過渡期間Ｔｋ経過後の下流側ＦＢ学習補正量Ｖｓｇを適切な値とするために過渡期間Ｔｋにおいて時間積分値の更新を停止すると、過渡期間Ｔｋにおいて下流側ＦＢ補正量Ｖｓｂの積分項を更新できなくなるので、エミッションをより良好にできないという問題がある。
【００１８】
本発明は上述した課題に対処するためになされたものであって、その目的の一つは、実際の空燃比を目標とする空燃比により迅速に一致させることができる内燃機関の空燃比制御装置を提供することにある。
【００１９】
かかる目的を達成するため本発明による内燃機関の空燃比制御装置は、排気通路に排気浄化用触媒を配設した内燃機関に適用される。
更に、本発明による内燃機関の空燃比制御装置は、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
前記上流側空燃比センサの出力値と前記下流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し、同算出された上流側フィードバック補正量に基づいて前記内燃機関に供給される混合ガスの空燃比を制御する空燃比フィードバック制御手段と、を備える。
【００２０】
加えて、前記空燃比フィードバック制御手段は、下流側フィードバック補正量算出手段と、下流側フィードバック学習補正量算出手段と、時間積分値設定手段と、上流側フィードバック補正量算出手段と、を備える。
【００２１】
前記下流側フィードバック補正量算出手段は、所定の下流側フィードバック実行条件が成立している下流側フィードバック条件成立期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との差である出力偏差を時間積分した第１の時間積分値を現時点にて求められている同第１の時間積分値と現時点の同出力偏差とに基づいて更新するとともに同更新された第１の時間積分値に基づいて下流側フィードバック補正量を算出する手段である。
【００２２】
前記下流側フィードバック学習補正量算出手段は、前記下流側フィードバック実行条件に更に条件が付加された所定の学習実行条件が成立している学習条件成立期間において前記出力偏差を時間積分した第２の時間積分値を現時点にて求められている同第２の時間積分値と現時点の同出力偏差とに基づいて更新するとともに同更新された第２の時間積分値に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習実行条件が成立していない学習条件不成立期間において同下流側フィードバック学習補正量を一定に維持する手段である。
【００２３】
前記時間積分値設定手段は、前記学習実行条件が第１時点において成立しなくなりその後の第２時点において成立した場合、同第２時点における前記第２の時間積分値を同第１時点から同第２時点までの前記出力偏差とは無関係な所定の値に設定する手段である。
【００２４】
前記上流側フィードバック補正量算出手段は、前記下流側フィードバック条件成立期間において前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間において前記下流側フィードバック補正量に基づくことなく前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出する手段である。
【００２５】
これによれば、学習実行条件は下流側フィードバック実行条件に更に条件が付加された条件であるから、下流側フィードバック実行条件が成立していても、学習実行条件が成立していない場合が存在する。即ち、下流側フィードバック条件成立期間と学習条件不成立期間とが重複している重複期間が生じる。例えば、この重複期間は、内燃機関の目標空燃比が理論空燃比よりもリッチ側の空燃比に設定される燃料増量期間と、それに続く期間であって内燃機関の目標空燃比が理論空燃比に設定される通常期間と、が存在する場合において、通常期間のうちの燃料増量期間が終了してから所定の過渡時間が経過するまでの過渡期間である。
【００２６】
この重複期間においては、その重複期間における出力偏差に基づいて第１の時間積分値が更新され、更新された第１の時間積分値に基づいて下流側フィードバック補正量が算出される。これにより、重複期間中の下流側フィードバック補正量を、重複期間における出力偏差が反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。この結果、重複期間において、排気浄化用触媒（触媒）の下流の空燃比（下流側空燃比）を下流側目標値に対応する空燃比（下流側目標空燃比）に迅速に近づけることができる。
【００２７】
一方、学習条件不成立期間中、下流側フィードバック学習補正量は、重複期間であるか否かにかかわらず一定に維持される。更に、学習条件不成立期間の終了時点（第２時点）において、第２の時間積分値は、学習条件不成立期間（第１時点から第２時点までの期間）における出力偏差とは無関係な所定の値（即ち、学習条件成立期間のみにおける出力偏差を時間積分することにより算出される出力偏差の時間積分値に基づく値、例えば、第１時点における第２の時間積分値）に設定される。
【００２８】
これにより、学習条件不成立期間（特に、重複期間）における出力偏差が下流側フィードバック学習補正量に反映されることを回避できるので、下流側フィードバック学習補正量が不適切な値となることを防止することができる。この結果、上流側空燃比センサの出力値と触媒の上流の実際の空燃比（上流側空燃比）との間の対応関係の予定されていた対応関係に対するズレ（上流側空燃比センサの出力ズレ）を適切に補償することができ、内燃機関の実際の空燃比を目標とする空燃比に確実に一致させることができる。
【００２９】
また、本発明による他の内燃機関の空燃比制御装置は、上述した内燃機関に適用され、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
前記上流側空燃比センサの出力値と前記下流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し、同算出された上流側フィードバック補正量に基づいて前記内燃機関に供給される混合ガスの空燃比を制御する空燃比フィードバック制御手段と、を備える。
【００３０】
更に、前記空燃比フィードバック制御手段は、時間積分値更新手段と、下流側フィードバック補正量算出手段と、下流側フィードバック学習補正量算出手段と、時間積分値設定手段と、上流側フィードバック補正量算出手段と、を備える。
【００３１】
前記時間積分値更新手段は、前記下流側空燃比センサの出力値と所定の下流側目標値との差である出力偏差を時間積分した時間積分値を現時点にて求められている同時間積分値と現時点の同出力偏差とに基づいて更新する手段である。
【００３２】
前記下流側フィードバック補正量算出手段は、所定の下流側フィードバック実行条件が成立している下流側フィードバック条件成立期間において前記時間積分値に基づいて下流側フィードバック補正量を算出する手段である。
【００３３】
前記下流側フィードバック学習補正量算出手段は、前記下流側フィードバック実行条件に更に条件が付加された所定の学習実行条件が成立している学習条件成立期間において前記時間積分値に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習実行条件が成立していない学習条件不成立期間において同下流側フィードバック学習補正量を一定に維持する手段である。
【００３４】
前記時間積分値設定手段は、前記学習実行条件が第１時点において成立しなくなりその後の第２時点において成立した場合に同第２時点における前記時間積分値を同第１時点から同第２時点までの前記出力偏差とは無関係な所定の値に設定する手段である。
【００３５】
前記上流側フィードバック補正量算出手段は、前記下流側フィードバック条件成立期間において前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間において前記下流側フィードバック補正量に基づくことなく前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて前記上流側フィードバック補正量を算出する手段である。
【００３６】
これによれば、上述した内燃機関の空燃比制御装置と同様に、学習条件不成立期間と下流側フィードバック条件成立期間とが重複している重複期間が生じる。この重複期間においては、その重複期間における出力偏差に基づいて時間積分値が更新され、更新された時間積分値に基づいて下流側フィードバック補正量が算出される。これにより、重複期間中の下流側フィードバック補正量を、重複期間における出力偏差が反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。この結果、重複期間において、下流側空燃比を下流側目標空燃比に迅速に近づけることができる。
【００３７】
一方、学習条件不成立期間中、下流側フィードバック学習補正量は、重複期間であるか否かにかかわらず一定に維持される。更に、学習条件不成立期間の終了時点（第２時点）において、時間積分値は、学習条件不成立期間（第１時点から第２時点までの期間）における出力偏差とは無関係な所定の値（即ち、学習条件成立期間のみにおける出力偏差を時間積分することにより算出される出力偏差の時間積分値に基づく値、例えば、第１時点における時間積分値）に設定される。
【００３８】
これにより、学習条件不成立期間（特に、重複期間）における出力偏差が下流側フィードバック学習補正量に反映されることを回避できるので、下流側フィードバック学習補正量が不適切な値となることを防止することができる。この結果、上流側空燃比センサの出力ズレを適切に補償することができ、内燃機関の実際の空燃比を目標とする空燃比に確実に一致させることができる。
【００３９】
一方、本発明の目的の他の一つは、実際の空燃比を目標とする空燃比により迅速に一致させることができる内燃機関の燃料噴射量制御装置を提供することにある。
かかる目的を達成するため本発明に係る内燃機関の燃料噴射量制御装置は、上述した内燃機関に適用され、
前記内燃機関に供給される燃料を噴射する燃料噴射手段と、
前記排気浄化用触媒の上流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記排気浄化用触媒の下流の前記排気通路に配設され同排気通路を実際に流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
を備え、前記燃料噴射手段により噴射される燃料の量である燃料噴射量を制御する装置である。
【００４０】
更に、この燃料噴射量制御装置は、燃料カット手段と、燃料増量手段と、下流側フィードバック補正量算出手段と、下流側フィードバック学習補正量算出手段と、燃料噴射量フィードバック制御手段と、を備える。
【００４１】
前記燃料カット手段は、所定の燃料カット実行条件が成立している期間である燃料カット条件成立期間中、前記燃料噴射手段による燃料の噴射を停止させる手段である。
前記燃料増量手段は、前記燃料カット条件成立期間が終了してから所定の燃料増量時間が経過するまでの燃料増量期間中、前記内燃機関に供給される混合ガスの空燃比が理論空燃比よりもリッチ側の所定の燃料増量用空燃比となるように前記燃料噴射量を制御する手段である。
【００４２】
前記下流側フィードバック補正量算出手段は、前記燃料カット条件成立期間及び前記燃料増量期間を含まない期間のうちの所定の下流側フィードバック実行条件が成立している期間である下流側フィードバック条件成立期間中、前記下流側空燃比センサの出力値と理論空燃比に対応する所定の下流側目標値との差である出力偏差に基づいて下流側フィードバック補正量を算出する手段である。
【００４３】
前記下流側フィードバック学習補正量算出手段は、前記下流側フィードバック条件成立期間のうちの前記燃料増量期間が終了してから所定の過渡時間が経過するまでの過渡期間を含まない期間である学習条件成立期間中、前記出力偏差に基づいて下流側フィードバック学習補正量を算出し、且つ、同学習条件成立期間以外の学習条件不成立期間中、同下流側フィードバック学習補正量を一定に維持する手段である。
【００４４】
前記燃料噴射量フィードバック制御手段は、前記下流側フィードバック条件成立期間中、前記下流側フィードバック補正量と前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し同算出された上流側フィードバック補正量に基づいて前記燃料噴射量を制御し、且つ、前記下流側フィードバック実行条件が成立していない下流側フィードバック条件不成立期間内の期間であって少なくとも前記燃料カット条件成立期間を含まない期間中、前記下流側フィードバック学習補正量と前記上流側空燃比センサの出力値とに基づいて上流側フィードバック補正量を算出し同算出された上流側フィードバック補正量に基づいて前記燃料噴射量を制御する手段である。
【００４５】
これによれば、過渡期間は、下流側フィードバック条件成立期間内の期間である。更に、過渡期間は、学習条件成立期間に含まれない。即ち、過渡期間は、下流側フィードバック条件成立期間と学習条件不成立期間とが重複している期間（重複期間）である。この重複期間においては、その重複期間における出力偏差に基づいて下流側フィードバック補正量が算出される。これにより、重複期間中の下流側フィードバック補正量を、重複期間における出力偏差が下流側フィードバック補正量に反映されない場合よりも適切に算出することができる。この結果、重複期間において、下流側空燃比を下流側目標空燃比に迅速に近づけることができる。
【００４６】
更に、学習条件不成立期間中、下流側フィードバック学習補正量は、重複期間であるか否かにかかわらず一定に維持される（更新が停止される）。これにより、下流側フィードバック補正量を用いた空燃比のフィードバック制御が十分に長い時間にわたって行われていない過渡期間における出力偏差に基づいて下流側フィードバック学習補正量が更新されることを回避できる。従って、下流側フィードバック学習補正量が不適切な値となることを防止することができる。この結果、上流側空燃比センサの出力ズレを適切に補償することができ、内燃機関の実際の空燃比を目標とする空燃比に確実に一致させることができる。
【発明を実施するための最良の形態】
【００４７】
＜第１実施形態＞
以下、本発明による内燃機関の空燃比制御装置（燃料噴射量制御装置）の各実施形態について図面を参照しながら説明する。図２は、本発明の第１実施形態による内燃機関の空燃比制御装置を４サイクル火花点火方式により運転される多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。なお、図２は、特定気筒の断面のみを示しているが、他の気筒も同様な構成を備えている。
【００４８】
この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０に混合ガス（本例では、ガソリン混合気）を供給するための吸気系統４０と、シリンダブロック部２０からの排ガスを外部に放出するための排気系統５０と、を含んでいる。
【００４９】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これによりクランク軸２４が回転するようになっている。シリンダ２１、ピストン２２のヘッド及びシリンダヘッド部３０は、燃焼室（気筒）２５を形成している。
【００５０】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともにインテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８及び燃料を吸気ポート３１内に噴射することにより燃焼室２５内に燃料を供給するインジェクタ（燃料噴射手段）３９を備えている。
【００５１】
吸気系統４０は、各気筒の吸気ポート３１に連通し吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３及びＤＣモータからなるスロットル弁アクチュエータ４３ａを備えている。吸気系統４０は、外部から空気を取り込むとともに取り込んだ空気を各気筒の燃焼室２５へ供給するようになっている。
【００５２】
排気系統５０は、各気筒の排気ポート３４にそれぞれ連通する独立した複数の通路及びそれらの通路を下流にて集合させる集合部からなるエキゾーストマニホールド５１、エキゾーストマニホールド５１の集合部に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された排気浄化用触媒としての三元触媒５３（上流側触媒コンバータ又はスタート・キャタリティック・コンバータとも云うが、以下「第１触媒５３」と称呼する。）及び第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側の三元触媒５４（車両のフロア下方に配設されるので、アンダ・フロア・キャタリティック・コンバータとも云うが、以下「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１及びエキゾーストパイプ５２は、排気通路を構成している。排気通路は、燃焼室２５にて燃料と空気とを含む混合ガスが燃焼することにより生成された燃焼ガスである排ガスが通過するようになっている。
【００５３】
第１触媒５３及び第２触媒５４のそれぞれは、排ガス中の酸素を吸蔵するようになっている。更に、第１触媒５３及び第２触媒５４のそれぞれは、排ガス中の燃料の未燃成分と、排ガス中の酸素又は上記吸蔵された酸素と、の反応を促進することにより排ガス中の有害物質を浄化する（排ガスを浄化する）ようになっている。
【００５４】
一方、このシステムは、熱線式のエアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路（本例では、上記エキゾーストマニホールド５１の集合部）に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、アクセル開度センサ６８及び電気制御装置７０を備えている。
【００５５】
エアフローメータ６１は、吸気管４１内を通る吸入空気の単位時間あたりの質量流量を検出し、吸入空気流量Gaを表す信号を出力するようになっている。
スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）生じる一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。
【００５６】
クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に生じる幅狭のパルスを有するとともにクランク軸２４が３６０°回転する毎に生じる幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度ＮＥを表す。
水温センサ６５は、内燃機関１０を冷却する冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００５７】
上流側空燃比センサ６６は、限界電流式の空燃比センサである。上流側空燃比センサ６６は、検出対象ガス（本例では、第１触媒５３の上流の排ガス）中の酸素濃度及び燃料の未燃成分（例えば、炭化水素）濃度に基づいて空燃比Ａ／Ｆに応じた電流を出力し、出力された電流に応じた電圧Vabyfsを出力値として出力するようになっている。
【００５８】
上流側空燃比センサ６６の出力値Vabyfsは、図３に示したように、空燃比Ａ／Ｆがよりリーン側の空燃比になるにつれて単調に増加し且つ空燃比Ａ／Ｆに略比例して変化する。更に、上流側空燃比センサ６６の出力値Vabyfsは、空燃比Ａ／Ｆが理論空燃比であるとき、理論空燃比対応出力値Vstに一致する。このような構成により、上流側空燃比センサ６６は、広い範囲にわたる空燃比Ａ／Ｆを精度良く検出する。
【００５９】
下流側空燃比センサ６７は、起電力式（濃淡電池式）の空燃比センサである。下流側空燃比センサ６７は、検出対象ガス（本例では、第１触媒５３の下流の排ガス）中の酸素濃度に基づいて空燃比Ａ／Ｆに応じた電圧Voxsを出力値として出力するようになっている。
【００６０】
下流側空燃比センサ６７の出力値Voxsは、図４に示したように、空燃比Ａ／Ｆがよりリーン側の空燃比になるにつれて単調に減少する。出力値Voxsは、空燃比Ａ／Ｆが理論空燃比近傍の値となる領域Ｄにおいて急変する。即ち、出力値Voxsは、空燃比Ａ／Ｆが理論空燃比よりもリーン側からリッチ側へ変化する際、又は、その逆向きに変化する際、急変する。出力値Voxsは、空燃比Ａ／Ｆが領域Ｄ以外の空燃比であって理論空燃比よりもリーン側の空燃比であるとき略０．１（Ｖ）の値をとりながら空燃比の増大に伴って緩やかに減少し、空燃比Ａ／Ｆが領域Ｄ以外の空燃比であって理論空燃比よりもリッチ側の空燃比であるとき略０．９（Ｖ）の値をとりながら空燃比の減少に伴って緩やかに増大する。また、出力値Voxsは、空燃比Ａ／Ｆが理論空燃比であるとき０．５（Ｖ）となる。
【００６１】
再び図２を参照しながら説明を続けると、アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量（アクセルペダル操作量）Accpを表す信号を出力するようになっている。
【００６２】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９及びスロットル弁アクチュエータ４３ａに駆動信号を送出するようになっている。
【００６３】
（空燃比フィードバック制御の概要）
次に、上記のように構成された内燃機関の空燃比制御装置（制御装置）が行う空燃比のフィードバック（ＦＢ）制御（空燃比ＦＢ制御）について説明する。
【００６４】
空燃比ＦＢ制御は、内燃機関１０に供給される混合ガスの空燃比を目標空燃比に一致させるために燃料噴射量Fiを決定する制御である。空燃比ＦＢ制御は、下記(1)式に従って基本燃料噴射量Fbaseを上流側ＦＢ補正量DFiによって補正することにより燃料噴射量Fiを決定する。
Fi＝Fbase＋DFi  …(1)
【００６５】
基本燃料噴射量Fbaseは、目標空燃比を得るために必要と考えられる噴射量であり、別途求められた筒内吸入空気量を目標空燃比により除することによって決定される。上流側ＦＢ補正量DFiは、基本燃料噴射量Fbaseの「目標空燃比を得るための噴射量に対する過不足分」を補正する量である。上流側ＦＢ補正量DFiは、後に詳述するように、上流側空燃比センサ６６の出力値Vabyfs、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfb（実際には、これらの和）に基づいて求められる。即ち、所定の関数をｆにより表すと、上流側ＦＢ補正量DFiは下記(2)式のように表される。
DFi＝ｆ（Vabyfs＋Vafsfb＋Gsfb）    …(2)
【００６６】
空燃比ＦＢ制御は、上記(1)式における上流側ＦＢ補正量DFiを上流側ＦＢ実行条件の成否に応じた値に設定する。更に、空燃比ＦＢ制御は、上記(2)式における下流側ＦＢ補正量Vafsfbを下流側ＦＢ実行条件の成否に応じた値に設定する。加えて、空燃比ＦＢ制御は、上記(2)式における下流側ＦＢ学習補正量Gsfbの更新を学習実行条件の成否に応じて行う。以下、各条件について説明する。
【００６７】
（１）上流側ＦＢ実行条件（メインフィードバック実行条件）と上流側ＦＢ制御
上流側ＦＢ実行条件は、上流側空燃比センサ６６が正常であり（活性化していることを含む。）、且つ、後述する燃料カット実行条件が成立していないとき、目標空燃比にかかわらず成立する。上流側ＦＢ実行条件が成立しているとき、空燃比ＦＢ制御は、上流側ＦＢ補正量DFiを上記(2)式に基づいて設定する。そして、空燃比ＦＢ制御は、上流側ＦＢ補正量DFiによって基本燃料噴射量Fbaseを補正することにより燃料噴射量Fiを決定する。即ち、上流側ＦＢ（メインＦＢ）制御が実行される。一方、上流側ＦＢ実行条件が成立していないとき、空燃比ＦＢ制御は、上流側ＦＢ補正量DFiを「０」に設定する。その結果、上流側ＦＢ補正量DFiによる基本燃料噴射量Fbaseの補正は行われない。即ち、上流側ＦＢ制御は実行されない。
【００６８】
（２）下流側ＦＢ実行条件（サブフィードバック実行条件）と下流側ＦＢ制御
下流側ＦＢ実行条件は、上流側ＦＢ実行条件が成立し、且つ、下流側空燃比センサ６７が正常であり（活性化していることを含む。）、且つ、目標空燃比が理論空燃比であるときに成立する。後述するように、燃料カットが行われた後の燃料増量期間（燃料カット後燃料増量条件成立時）においては、燃料増量条件が成立することにより、目標空燃比が理論空燃比よりもリッチ側の空燃比に設定されて燃料カット後燃料増量制御が実行される。
【００６９】
従って、下流側ＦＢ実行条件は、
・上流側空燃比センサ６６及び下流側空燃比センサ６７が共に正常であり、且つ、
・燃料カット実行条件が成立しておらず、且つ、
・燃料カット後の燃料増量条件が成立していない（即ち、目標空燃比が理論空燃比である）、
ときに成立する。
【００７０】
下流側ＦＢ実行条件が成立しているとき、空燃比ＦＢ制御は、所定時間が経過する毎に、下流側空燃比センサ６７の出力値Voxs（即ち、第１触媒５３下流の空燃比）と下流側目標値（理論空燃比に相当する下流側空燃比センサ６７の出力値）との差である出力偏差DVoxsを求める。そして、空燃比ＦＢ制御は、その出力偏差DVoxsの時間積分値（下流側ＦＢ用時間積分値、第１の時間積分値）SDVoxs1を(3)式に従って更新する。Δtは一定の微小時間である。
SDVoxs1（今回値）＝SDVoxs1（前回値）＋DVoxs・Δt    …(3)
【００７１】
加えて、空燃比ＦＢ制御は、更新された最新の下流側ＦＢ用時間積分値SDVoxs1に所定のゲインKiを乗じることにより積分項（Ki・SDVoxs1）を算出し、その積分項（Ki・SDVoxs1）を含む下流側ＦＢ補正量Vafsfbを下記(4)式に従って算出する。他の項Otherは、後述する比例項及び微分項である。
Vafsfb＝Ki・SDVoxs1＋Other    …(4)
【００７２】
そして、空燃比ＦＢ制御は、上述したように、上流側ＦＢ補正量DFiを求める際に下流側ＦＢ補正量Vafsfbを使用する。即ち、下流側ＦＢ（サブＦＢ）制御が実行される。
【００７３】
一方、下流側ＦＢ実行条件が成立していないとき、空燃比ＦＢ制御は、下流側ＦＢ補正量Vafsfbを「０」に設定する。即ち、下流側ＦＢ制御は実行されない。更に、空燃比ＦＢ制御は、下流側ＦＢ用時間積分値SDVoxs1の値を下流側ＦＢ実行条件が成立しなくなった時点の下流側ＦＢ用時間積分値SDVoxs1の値に維持する。
【００７４】
（３）学習実行条件と学習制御
学習実行条件は、下流側ＦＢ実行条件が成立し、且つ、上記燃料カットが行われた後の燃料増量期間が終了した時点から下流側空燃比センサ６７の出力値Voxsが所定の閾値出力値を出力する時点までの過渡期間でないとき、成立する。
【００７５】
従って、学習実行条件は、
・上流側空燃比センサ６６及び下流側空燃比センサ６７が共に正常であり、且つ、
・燃料カット実行条件が成立しておらず、且つ、
・燃料カット後の燃料増量条件が成立しておらず（即ち、目標空燃比が理論空燃比であるとき）、且つ、
・燃料カット後燃料増量制御実行後の上記過渡期間が経過している、
ときに成立する。
【００７６】
学習実行条件が成立しているとき、空燃比ＦＢ制御は、所定時間が経過する毎に、上記出力偏差DVoxsの時間積分値（学習用時間積分値、第２の時間積分値）SDVoxs2を(5)式に従って更新する。Δtは一定の微小時間である。
SDVoxs2（今回値）＝SDVoxs2（前回値）＋DVoxs・Δt    …(5)
【００７７】
更に、空燃比ＦＢ制御は、下記(6)式に示したように、更新された最新の学習用時間積分値SDVoxs2に所定の係数Kgを乗じた値（Kg・SDVoxs2）を下流側ＦＢ学習補正量Gsfbに加えることにより、下流側ＦＢ学習補正量Gsfbを算出（更新）する。なお、空燃比ＦＢ制御は、下流側ＦＢ学習補正量Gsfbを更新したとき、下流側ＦＢ用時間積分値SDVoxs1及び学習用時間積分値SDVoxs2のそれぞれから上記値Kg・SDVoxs2を減じておく。
Gsfb（今回値）＝Gsfb（前回値）＋Kg・SDVoxs2    …(6)
【００７８】
学習実行条件が成立していないとき、空燃比ＦＢ制御は、下流側ＦＢ学習補正量Gsfbの値を学習実行条件が成立しなくなった時点の下流側ＦＢ学習補正量Gsfbの値に維持するとともに、学習用時間積分値SDVoxs2の値を学習実行条件が成立しなくなった時点の学習用時間積分値SDVoxs2の値に維持する。
以上のような空燃比ＦＢ制御は、制御装置により実行される。
【００７９】
（燃料カット実行前後の実際の作動の概要）
更に、制御装置は、燃料カット実行条件が成立したとき、燃料カットを実行し、その後、燃料増量制御を実行する。具体的には、制御装置は、燃料カット実行条件が成立する前後において、以下のように作動する。なお、上流側空燃比センサ６６及び下流側空燃比センサ６７が共に正常であるものと仮定する。
【００８０】
（１）燃料カット実行前
燃料カットを実行する前、制御装置は、目標空燃比を理論空燃比に設定する。従って、上流側ＦＢ実行条件、下流側ＦＢ実行条件及び学習実行条件の総ての条件が成立する。従って、下流側ＦＢ用時間積分値SDVoxs1、下流側ＦＢ補正量Vafsfb、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbは、それぞれ更新される。そして、制御装置は、上記(2)式に従って上流側ＦＢ補正量DFiを算出し、算出された上流側ＦＢ補正量DFiと上記(1)式とに基づいて基本燃料噴射量Fbaseを補正する。
【００８１】
（２）燃料カット実行中
燃料カット実行条件が成立すると、制御装置は燃料の噴射を停止する燃料カット（フューエルカット）を実行する。このとき、上流側ＦＢ実行条件、下流側ＦＢ実行条件及び学習実行条件の総ての条件が不成立となる。従って、上流側ＦＢ補正量DFiは「０」に設定される。更に、下流側ＦＢ補正量Vafsfbは「０」に設定され、下流側ＦＢ用時間積分値SDVoxs1は燃料カットが実行され始めた時点の値に維持される。加えて、下流側ＦＢ学習補正量Gsfb及び学習用時間積分値SDVoxs2は、燃料カットが実行され始めた時点のそれぞれの値に維持される。
【００８２】
（３）燃料カット終了直後の燃料増量制御実行中
燃料カット実行条件が不成立となることにより燃料カットの実行が終了することによって燃料カット後の燃料増量条件が成立し、目標空燃比は理論空燃比よりもリッチ側の値に設定される。このとき、上流側ＦＢ実行条件は成立する。これに対し、下流側ＦＢ実行条件及び学習実行条件は何れも不成立となる。従って、下流側ＦＢ補正量Vafsfbは「０」に設定され続け、下流側ＦＢ用時間積分値SDVoxs1は燃料カットが実行され始めた時点の値に維持され続ける。加えて、下流側ＦＢ学習補正量Gsfb及び学習用時間積分値SDVoxs2は、燃料カットが実行され始めた時点のそれぞれの値に維持され続ける。この結果、上記(2)式の下流側ＦＢ補正量Vafsfbには「０」が代入され、上流側ＦＢ補正量DFiは、上流側空燃比センサ６６の出力値Vabyfsと、燃料カットが実行され始めた時点の値に維持されている下流側ＦＢ学習補正量Gsfbと、のみに基づいて求められる。そして、制御装置は、上記(1)式に従って基本燃料噴射量Fbaseを補正する。
【００８３】
（４）燃料増量制御実行終了後の過渡期間
燃料増量条件が不成立となることにより燃料カット後燃料増量制御の実行が終了した後の過渡期間においては、目標空燃比は理論空燃比に設定され、上流側ＦＢ実行条件及び下流側ＦＢ実行条件が成立する。これに対し、学習実行条件は不成立となる。従って、下流側ＦＢ用時間積分値SDVoxs1及び下流側ＦＢ補正量Vafsfbは、それぞれ更新される。下流側ＦＢ学習補正量Gsfb及び学習用時間積分値SDVoxs2は、燃料カットが実行され始めた時点のそれぞれの値に維持され続ける。そして、制御装置は、上記(2)式に従って上流側ＦＢ補正量DFiを算出し、上記(1)式に従って基本燃料噴射量Fbaseを補正する。
【００８４】
（５）燃料増量制御実行終了後の過渡期間の経過後
上記過渡期間が経過すると、燃料カット実行前の場合と同様、上流側ＦＢ実行条件、下流側ＦＢ実行条件及び学習実行条件の総ての条件が成立する。従って、下流側ＦＢ用時間積分値SDVoxs1、下流側ＦＢ補正量Vafsfb、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbは、それぞれ更新される。そして、制御装置は、上記(2)式に従って上流側ＦＢ補正量DFiを算出し、上記(1)式に従って基本燃料噴射量Fbaseを補正する。
【００８５】
このように、本制御装置は、燃料増量制御実行終了後の上記過渡期間の開始時点から下流側ＦＢ用時間積分値SDVoxs1及び下流側ＦＢ補正量Vafsfbの更新を開始する。これにより、上記過渡期間において、第１触媒５３の下流の空燃比を理論空燃比（下流側目標空燃比）に迅速に近づけることができる。
【００８６】
更に、制御装置は、上記過渡期間において、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbを、燃料カットが実行され始めた時点のそれぞれの値に維持し続け、上記過渡期間が経過すると、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbのそれぞれを更新する。これにより、上記過渡期間における上記出力偏差DVoxsが下流側ＦＢ学習補正量Gsfbに反映されることを回避できるので、下流側ＦＢ学習補正量Gsfbが不適切な値となることを防止することができる。
【００８７】
なお、燃料カット実行中、第１触媒５３に吸蔵される酸素の量は過剰となる。従って、燃料カット実行後に燃料増量制御を行うことにより、第１触媒５３に吸蔵されている酸素の量は適正値まで速やかに減少する。
制御装置は、燃料カット実行条件が成立する前後において、以上のように作動する。
【００８８】
（制御に使用されるフラグ）
次に、制御装置が上述した空燃比ＦＢ制御を行う際に使用するフラグについて説明する。制御装置は、燃料カットフラグＸＦＣ、燃料増量フラグＸＲＣ、上流側ＦＢ制御実行フラグＸＭＦＢ、下流側ＦＢ制御実行フラグＸＳＦＢ、過渡期間表示フラグＸＫＴ及び学習実行フラグＸＧからなる６つのフラグを使用する（図５を参照。）。これらのフラグは、図示しないイグニッション・キーをオフからオンに変更したときに実行されるイニシャルルーチンにおいて、「０」に設定されるようになっている。
【００８９】
燃料カットフラグＸＦＣは、燃料の噴射を停止させる（燃料カットを実行する）か否かを表すフラグである。即ち、燃料カットフラグＸＦＣの値が「１」に設定されているときは、燃料の噴射が停止させられる（燃料の噴射が行われない）。一方、燃料カットフラグＸＦＣの値が「０」に設定されているときは、燃料の噴射が実行される（燃料の噴射が行われる）。
【００９０】
燃料カットフラグＸＦＣは、エンジン回転速度ＮＥが閾値回転速度αよりも高く、且つ、スロットル弁開度ＴＡが閾値開度（本例では、スロットル弁４３が全閉状態となる全閉開度）β以下となったときに「１」に設定される。燃料カットフラグＸＦＣは、エンジン回転速度ＮＥが閾値回転速度αから所定の正の値α１を減じた値（α−α１）以下となるか、又は、スロットル弁開度ＴＡが閾値開度βよりも大きくなったとき、「０」に設定される。
【００９１】
燃料増量フラグＸＲＣは、内燃機関１０の目標空燃比を燃料増量用空燃比に設定する（燃料カット後燃料増量制御を行う）か否かを表すフラグである。即ち、燃料増量フラグＸＲＣの値が「１」に設定されているときは、内燃機関１０の目標空燃比が理論空燃比よりも比較的大きくリッチ側の燃料増量用空燃比AFrcに設定される。一方、燃料増量フラグＸＲＣの値が「０」に設定されているときは、内燃機関１０の目標空燃比が理論空燃比AFstに設定される。
【００９２】
燃料増量フラグＸＲＣの値は、燃料カットフラグＸＦＣが「１」から「０」に変化したときに「０」から「１」に変更（設定）される。燃料増量フラグＸＲＣの値は、その値が「０」から「１」に変更された時点から燃料増量時間τrcが経過したときに「０」に設定される。
【００９３】
上流側ＦＢ制御実行フラグＸＭＦＢは、上流側ＦＢ制御を行うか否かを表すフラグである。即ち、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に設定されているときは、上流側ＦＢ制御が行われる。一方、上流側ＦＢ制御実行フラグＸＭＦＢの値が「０」に設定されているときは、上流側ＦＢ制御が行われない。
【００９４】
上流側ＦＢ制御実行フラグＸＭＦＢの値は、上流側空燃比センサ６６が正常であるとき「１」に設定される。但し、燃料カットフラグＸＦＣが「１」に設定されている間、上流側ＦＢ制御実行フラグＸＭＦＢの値は、「０」に設定される。なお、本実施例において、内燃機関１０の運転中、上流側空燃比センサ６６及び下流側空燃比センサ６７は常に正常であるものと仮定する。
【００９５】
下流側ＦＢ制御実行フラグＸＳＦＢは、下流側ＦＢ制御を行うか否かを表すフラグである。即ち、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」に設定されているときは、下流側ＦＢ制御が行われる。一方、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」に設定されているときは、下流側ＦＢ制御が行われない。
【００９６】
下流側ＦＢ制御実行フラグＸＳＦＢの値は、上流側空燃比センサ６６及び下流側空燃比センサ６７が共に正常であるとき「１」に設定される。但し、燃料カットフラグＸＦＣ及び燃料増量フラグＸＲＣの何れかが「１」に設定されている間、下流側ＦＢ制御実行フラグＸＳＦＢの値は「０」に設定される。
【００９７】
過渡期間表示フラグＸＫＴは、現時点が上記過渡期間であることを示すフラグである。過渡期間表示フラグＸＫＴの値は、燃料増量フラグＸＲＣの値が「１」から「０」に変化したときに「１」に設定され、過渡期間表示フラグＸＫＴの値が「１」に設定されている場合において下流側空燃比センサ６７の出力値Voxsが予め設定された閾値出力値（本例では、下流側目標値Voxsref）よりも大きくなったとき、「０」に設定される。
【００９８】
学習実行フラグＸＧは、下流側ＦＢ学習補正量Gsfbの更新を行うか否かを表すフラグである。即ち、学習実行フラグＸＧの値が「１」に設定されているときは、下流側ＦＢ学習補正量Gsfbが更新される。一方、学習実行フラグＸＧの値が「０」に設定されているときは、下流側ＦＢ学習補正量Gsfbが更新されない。
【００９９】
学習実行フラグＸＧの値は、下流側ＦＢ制御実行フラグＸＳＦＢが「１」であり、且つ、過渡期間表示フラグＸＫＴの値が「０」であるとき、「１」に設定される。一方、学習実行フラグＸＧの値は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」であるとき、又は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であり且つ過渡期間表示フラグＸＫＴの値が「１」であるとき、「０」に設定される。
【０１００】
（実際の作動）
次に、制御装置の実際の作動について説明する。制御装置のＣＰＵ７１は、図６にフローチャートにより示した燃料カットを実行するか否かを決定するための燃料カット条件判定ルーチンを所定の演算周期が経過する毎に繰り返し実行するようになっている。なお、図６のルーチンの処理が実行されることは、燃料カット手段の機能の一部が達成されることに対応している。
【０１０１】
従って、所定のタイミングになると、ＣＰＵ７１は、ステップ６００から処理を開始してステップ６０５に進み、燃料カットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１０２】
いま、内燃機関１０の運転者がアクセルペダル８１を操作することにより、アクセルペダル操作量Accpが所定操作量Accp1にて一定に維持され、その後、所定期間だけ「０」に維持され、更にその後、再び所定操作量Accp1に維持される場合を想定して図５を参照しながら説明を続ける。なお、この場合において、エンジン回転速度ＮＥが閾値回転速度αよりも常に高いことを仮定する。また、ＣＰＵ７１は、アクセルペダル操作量Accpが所定操作量Accp1となっているときにスロットル弁開度ＴＡが上記閾値開度（本例では、全閉開度）βよりも大きな所定開度ＴＡ１となるように、且つ、アクセルペダル操作量Accpが「０」となっているときにスロットル弁開度ＴＡが全閉開度となるように、スロットル弁アクチュエータ４３ａを制御している。
【０１０３】
まず、内燃機関１０の運転者がアクセルペダル８１を踏み込んでいる足をアクセルペダル８１から離すことによりアクセルペダル操作量Accpが「０」に変更される前であってアクセルペダル操作量Accpが所定操作量Accp1にて一定に維持されている時点（図５の時点t0よりも前の時点）から説明すると、この時点では、燃料カットフラグＸＦＣ、燃料増量フラグＸＲＣ及び過渡期間表示フラグＸＫＴの値は「０」に設定され、上流側ＦＢ制御実行フラグＸＭＦＢ、下流側ＦＢ制御実行フラグＸＳＦＢ及び学習実行フラグＸＧの値は「１」に設定されている。
【０１０４】
従って、ＣＰＵ７１は、上記ステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、現時点のエンジン回転速度ＮＥが予め設定された上記閾値回転速度αよりも高く、且つ、スロットル弁開度ＴＡが予め設定された上記閾値開度β以下であるか否かを判定する。
【０１０５】
上記仮定に従えば、エンジン回転速度ＮＥは上記閾値回転速度αよりも高く、且つ、スロットル弁開度ＴＡは上記閾値開度βよりも大きい所定開度ＴＡ１となっている。従って、ＣＰＵ７１は、上記ステップ６１０にて「Ｎｏ」と判定し、ステップ６９９に直接進んで本ルーチンを一旦終了する。即ち、燃料カットフラグＸＦＣの値は「０」に維持される。
【０１０６】
一方、ＣＰＵ７１は、図７にフローチャートにより示した燃料増量制御を実行するか否かを決定するための燃料増量条件判定ルーチンを上記燃料カット条件判定ルーチンに続いて実行するようになっている。なお、図７のルーチンの処理が実行されることは、燃料増量手段の機能の一部が達成されることに対応している。
【０１０７】
従って、燃料カット条件判定ルーチンの実行が終了すると、ＣＰＵ７１はステップ７００から処理を開始し、ステップ７０５に進んで、現時点が燃料カットフラグＸＦＣの値が「１」から「０」に変化した直後の時点であるか否かを判定する。
【０１０８】
この時点では、燃料カットフラグＸＦＣの値は「０」に維持されている。従って、ＣＰＵ７１は、同ステップ７０５にて「Ｎｏ」と判定してステップ７１０に進み、現時点が、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから燃料増量時間τrcが経過した時点であるか否かを判定する。この時点では、燃料増量フラグＸＲＣの値が「０」に維持されているので、ＣＰＵ７１は、同ステップ７１０にて「Ｎｏ」と判定してステップ７９９に直接進んで本ルーチンを一旦終了する。
【０１０９】
また、ＣＰＵ７１は、図８にフローチャートにより示した上流側ＦＢ制御を実行するか否かを決定するための上流側ＦＢ条件判定ルーチンを上記燃料増量条件判定ルーチンに続いて実行するようになっている。なお、図８のルーチンの処理が実行されることは、空燃比フィードバック制御手段の機能の一部が達成されることに対応している。
【０１１０】
従って、燃料増量条件判定ルーチンの実行が終了すると、ＣＰＵ７１はステップ８００から処理を開始し、ステップ８０５に進んで上流側空燃比センサ６６が正常であるか否かを判定する。上記仮定に従えば、上流側空燃比センサ６６は正常となっている。従って、ＣＰＵ７１は、ステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、燃料カットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１１１】
この時点では、燃料カットフラグＸＦＣの値は「０」に維持されている。従って、ＣＰＵ７１は、同ステップ８１０にて「Ｙｅｓ」と判定してステップ８１５に進み、上流側ＦＢ制御実行フラグＸＭＦＢの値を「１」に設定する。即ち、上流側ＦＢ制御実行フラグＸＭＦＢの値は「１」に維持される。
そして、ＣＰＵ７１はステップ８９９に進んで本ルーチンを一旦終了する。
【０１１２】
また、ＣＰＵ７１は、図９にフローチャートにより示した下流側ＦＢ制御を実行するか否かを決定するための下流側ＦＢ条件判定ルーチンを上記上流側ＦＢ条件判定ルーチンに続いて実行するようになっている。なお、図９のルーチンの処理が実行されることは、空燃比フィードバック制御手段の機能の一部が達成されることに対応している。
【０１１３】
従って、上流側ＦＢ条件判定ルーチンの実行が終了すると、ＣＰＵ７１はステップ９００から処理を開始し、ステップ９０５に進んで上流側空燃比センサ６６が正常であるか否かを判定する。上記仮定に従えば、上流側空燃比センサ６６は正常となっている。
【０１１４】
従って、ＣＰＵ７１は、ステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、下流側空燃比センサ６７が正常であるか否かを判定する。上記仮定に従えば、下流側空燃比センサ６７は正常となっている。従って、ＣＰＵ７１は、ステップ９１０にて「Ｙｅｓ」と判定してステップ９１５に進み、燃料カットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１１５】
この時点では、燃料カットフラグＸＦＣの値は「０」に維持されている。従って、ＣＰＵ７１は、同ステップ９１５にて「Ｙｅｓ」と判定してステップ９２０に進み、燃料増量フラグＸＲＣの値が「０」であるか否かを判定する。
【０１１６】
この時点では、燃料増量フラグＸＲＣの値は「０」に維持されている。従って、ＣＰＵ７１は、同ステップ９２０にて「Ｙｅｓ」と判定してステップ９２５に進み、下流側ＦＢ制御実行フラグＸＳＦＢの値を「１」に設定する。即ち、下流側ＦＢ制御実行フラグＸＳＦＢの値は「１」に維持される。
そして、ＣＰＵ７１はステップ９９９に進んで本ルーチンを一旦終了する。
【０１１７】
また、ＣＰＵ７１は、図１０にフローチャートにより示した下流側ＦＢ学習補正量の更新を行うか否かを決定するための学習条件判定ルーチンを上記下流側ＦＢ条件判定ルーチンに続いて実行するようになっている。
【０１１８】
従って、下流側ＦＢ条件判定ルーチンの実行が終了すると、ＣＰＵ７１はステップ１０００から処理を開始し、ステップ１００５に進んで下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定する。
【０１１９】
この時点では、下流側ＦＢ制御実行フラグＸＳＦＢの値は「１」に維持されている。従って、ＣＰＵ７１は、同ステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、過渡期間表示フラグＸＫＴの値が「０」であるか否かを判定する。
【０１２０】
この時点では、過渡期間表示フラグＸＫＴの値は「０」に維持されている。従って、ＣＰＵ７１は、同ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進み、学習実行フラグＸＧの値を「１」に設定する。即ち、学習実行フラグＸＧの値は「１」に維持される。
そして、ＣＰＵ７１はステップ１０９９に進んで本ルーチンを一旦終了する。
【０１２１】
（燃料噴射量制御）
一方、ＣＰＵ７１は、図１１にフローチャートにより示した燃料噴射量Fiの算出及び燃料の噴射を指示するための燃料噴射量制御ルーチンを、各気筒のクランク角度が排気上死点（排気が実質的に終了するとともに吸気が実質的に開始する上死点）前の所定クランク角度（本例では、ＢＴＤＣ９０°ＣＡ、即ち、排気上死点から９０°だけ進角させた角度）となる毎に、繰り返し実行するようになっている。なお、図１１のルーチンの処理が実行されることは、空燃比フィードバック制御手段（燃料噴射量フィードバック制御手段）の機能の一部が達成されることに対応している。
【０１２２】
従って、任意の気筒（以下、「燃料噴射気筒」と云うこともある。）のクランク角度が上記所定クランク角度になると、ＣＰＵ７１は、ステップ１１００から処理を開始してステップ１１０５に進み燃料カットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１２３】
この時点では、燃料カットフラグＸＦＣの値は「０」である。従って、ＣＰＵ７１は、同ステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、エアフローメータ６１により検出された吸入空気流量Gaと、クランクポジションセンサ６４により検出されたエンジン回転速度ＮＥと、吸入空気流量Ga及びエンジン回転速度ＮＥと１回の燃焼サイクルに対して気筒に吸入（導入）される筒内吸入空気量Mcとの関係を規定するテーブルMapMcと、に基づいて今回の燃焼サイクルにおいて上記燃料噴射気筒に吸入される予定の筒内吸入空気量Mc(k)（＝MapMc(Ga,NE)）を求める。
【０１２４】
ここで、kは、いずれの気筒の吸気行程であるかにかかわらず内燃機関１０において発生した吸気行程の数（即ち、ストローク数）である。更に、添え字の（k）は、筒内吸入空気量Mc(k)がk回目（今回）の吸気行程（ストローク）に対する値であることを示している（以下、他の物理量についても同様。）。
ＣＰＵ７１は、求められた筒内吸入空気量Mcをストローク数kに関連づけてＲＡＭ７３に記憶させる（格納する）。
【０１２５】
なお、以下の説明において、MapX(a)と表記されるテーブルは、変数aと値Xとの関係を規定するテーブルを意味することとする。また、値XをテーブルMapX(a)に基づいて求めるとは、値Xを現時点の変数aと、テーブルMapX(a)と、に基づいて求める（決定する）ことを意味することとする。なお、変数は２つ以上であってもよい。
【０１２６】
次に、ＣＰＵ７１は、ステップ１１１５に進み燃料増量フラグＸＲＣの値が「０」であるか否かを判定する。この時点では、燃料増量フラグＸＲＣの値は「０」である。従って、ＣＰＵ７１は、同ステップ１１１５にて「Ｙｅｓ」と判定してステップ１１２０に進み今回の上流側目標空燃比abyfr(k)を理論空燃比AFstに設定する。ＣＰＵ７１は、決定された上流側目標空燃比abyfrをストローク数kに関連づけてＲＡＭ７３に記憶させる（格納する）。
【０１２７】
次いで、ＣＰＵ７１は、ステップ１１２５に進み上記ステップ１１１０にて決定された筒内吸入空気量Mc(k)を上記ステップ１１２０にて設定された上流側目標空燃比abyfr(k)により除することによって基本燃料噴射量Fbase（この時点では、理論空燃比AFstに対応する基本燃料噴射量Fis）を決定する。なお、ステップ１１２５にて使用される上流側目標空燃比abyfr(k)は、本明細書において、内燃機関１０の目標空燃比とも呼ばれる値である。
【０１２８】
そして、ＣＰＵ７１は、ステップ１１３０に進み上記ステップ１１２５にて決定された基本燃料噴射量Fbaseに後述する上流側ＦＢ補正量算出ルーチンにて求められている最新の上流側ＦＢ補正量DFiを加えることにより燃料噴射量Fiを決定する。
【０１２９】
そして、ＣＰＵ７１は、ステップ１１３５に進み上記ステップ１１３０にて決定された燃料噴射量Fiの燃料が上記燃料噴射気筒のインジェクタ３９により今回の燃焼サイクルに対して噴射されるようにインジェクタ３９に対して噴射指示信号を送出する。
その後、ＣＰＵ７１は、ステップ１１９９に進んで本ルーチンを一旦終了する。
【０１３０】
（上流側ＦＢ補正量算出）
一方、ＣＰＵ７１は図１２にフローチャートにより示した上流側ＦＢ補正量DFiを算出するための上流側ＦＢ補正量算出ルーチンを、所定の演算周期が経過する毎に、繰り返し実行するようになっている。なお、図１２のルーチンの処理が実行されることは、空燃比フィードバック制御手段の機能の一部及び上流側フィードバック補正量算出手段の機能の一部が達成されることに対応している。
【０１３１】
従って、所定のタイミングになると、ＣＰＵ７１は、ステップ１２００から処理を開始し、ステップ１２０５に進んで上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」であるか否かを判定する。この時点では、上流側ＦＢ制御実行フラグＸＭＦＢの値は「１」に設定されている。従って、ＣＰＵ７１は、同ステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、テーブルMapN(Mc(k),NE)に基づいて遅延ストローク数Nを決定する。ここで、遅延ストローク数Nは、燃料の噴射が指示されてから、この指示により噴射された燃料が燃焼に供されたときの混合ガスの空燃比が前記上流側空燃比センサ６６の出力値Vabyfsとして現れるまでの間の遅延時間に相当するストローク数である。テーブルMapN(Mc(k),NE)は、実験による測定値に基づいて予め設定されている。
【０１３２】
次に、ＣＰＵ７１は、ステップ１２１５に進み上記図３に示した上流側空燃比センサ６６の出力値Vabyfsと空燃比Ａ／Ｆとの関係を規定したテーブルMapabyfsと、現時点の上流側空燃比センサ６６の出力値Vabyfs、後述する下流側ＦＢ補正量算出ルーチンにて求められている下流側ＦＢ補正量Vafsfb及び同下流側ＦＢ補正量算出ルーチンにて求められている下流側ＦＢ学習補正量Gsfbの和である制御用空燃比相当出力値(Vabyfs＋Vafsfb＋Gsfb)と、に基づいて現時点における制御用空燃比abyfs（＝Mapabyfs(Vabyfs＋Vafsfb＋Gsfb)）を求める。
【０１３３】
次いで、ＣＰＵ７１は、ステップ１２２０に進みＲＡＭ７３に記憶されている筒内吸入空気量Mcのうちの現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Mc(k-N)を上記ステップ１２１５にて求められた制御用空燃比abyfsにより除することによって、現時点からＮストローク前の実際の筒内供給燃料量Fc(k-N)を求める。
【０１３４】
続いて、ＣＰＵ７１は、ステップ１２２５に進み上記現時点からＮストローク前の筒内吸入空気量Mc(k-N)を、ＲＡＭ７３に記憶されている上流側目標空燃比abyfrのうちの現時点からＮストローク前の上流側目標空燃比abyfr(k-N)により除することによって、現時点からＮストローク前の目標筒内供給燃料量Fcr(k-N)を求める。
【０１３５】
次に、ＣＰＵ７１は、ステップ１２３０に進み上記ステップ１２２５にて求められた現時点からＮストローク前の目標筒内供給燃料量Fcr(k-N)から上記ステップ１２２０にて求められた現時点からＮストローク前の実際の筒内供給燃料量Fc(k-N)を減じることにより筒内供給燃料量偏差DFc（＝Fcr(k-N)-Fc(k-N)）を求める。即ち、筒内供給燃料量偏差DFcは、現時点からＮストローク前の時点において気筒内に供給された燃料の過不足を表す量である。
【０１３６】
次いで、ＣＰＵ７１は、ステップ１２３５に進み、下記(7)式と、上記ステップ１２３０にて算出された筒内供給燃料量偏差DFcと、後述するステップ１２４０にて算出される筒内供給燃料量偏差DFcの時間積分値SDFcと、に基づいて上流側ＦＢ補正量DFiを求める。即ち、上流側ＦＢ補正量DFiは、筒内供給燃料量偏差DFcを比例・積分処理（ＰＩ処理）することにより求められる。
DFi＝(Gp・DFc+Gi・SDFc)・KFB  …(7)
【０１３７】
ここで、Gpは予め設定された比例ゲイン（比例定数）であり、Giは予め設定された積分ゲイン（積分定数）である。各ゲインGp及びGiは、いずれも正の値である。また、本例では、係数KFBは不変であり、予め「１」に設定されている。なお、係数KFBは、可変であってもよく、その場合、エンジン回転速度ＮＥ及び筒内吸入空気量Mcに基づいて設定されることが好適である。
上流側ＦＢ補正量DFiは、上述した図１１のステップ１１３０にて燃料噴射量Fiが決定される際に用いられる。
【０１３８】
そして、ＣＰＵ７１は、ステップ１２４０に進み上記ステップ１２３０にて求められた筒内供給燃料量偏差DFcと時間ステップΔtとの積を、筒内供給燃料量偏差DFcの時間積分値SDFcであって現時点にて算出されている最新の時間積分値SDFcに加えることにより時間積分値SDFcの最新値を算出する（時間積分値SDFcを更新する）。ここで、時間ステップΔtは、本ルーチンが前回実行された時点から今回実行された時点までの時間である。
その後、ＣＰＵ７１は、ステップ１２９９に進んで本ルーチンを一旦終了する。
【０１３９】
このように、本空燃比制御装置は、現時点からＮストローク前の目標筒内供給燃料量Fcr(k-N)と、現時点からＮストローク前の実際の筒内供給燃料量Fc(k-N)と、が一致するように上流側空燃比センサ６６の出力値Vabyfs、（下流側空燃比センサ６７の出力値Voxsに基づいて求められる）下流側ＦＢ補正量Vafsfb及び（下流側空燃比センサ６７の出力値Voxsに基づいて求められる）下流側ＦＢ学習補正量Gsfbに基づいて空燃比をＦＢ制御する。換言すれば、本空燃比制御装置は、現時点の制御用空燃比abyfsが（現時点からＮストローク前の）上流側目標空燃比abyfrと一致するように空燃比をＦＢ制御する。
【０１４０】
（下流側ＦＢ補正量算出）
また、ＣＰＵ７１は図１３にフローチャートにより示した下流側ＦＢ補正量Vafsfbを算出するための下流側ＦＢ補正量算出ルーチンを、所定の演算周期が経過する毎に、繰り返し実行するようになっている。なお、図１３のルーチンの処理が実行されることは、空燃比フィードバック制御手段の機能の一部、上流側フィードバック補正量算出手段の機能の一部、下流側フィードバック補正量算出手段の機能、下流側フィードバック学習補正量算出手段の機能及び時間積分値設定手段の機能が達成されることに対応している。
【０１４１】
従って、所定のタイミングになると、ＣＰＵ７１は、ステップ１３００から処理を開始し、ステップ１３０５に進んで下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定する。この時点では、下流側ＦＢ制御実行フラグＸＳＦＢの値は「１」に維持されている。従って、ＣＰＵ７１は、同ステップ１３０５にて「Ｙｅｓ」と判定してステップ１３１０に進み、下流側目標値Voxsrefから現時点の下流側空燃比センサ６７の出力値Voxsを減じることにより、出力偏差DVoxsを求める。
【０１４２】
本例では、下流側目標値Voxsrefは、理論空燃比に対応する値（０．５［Ｖ］）に予め設定されている。なお、下流側目標値Voxsrefは、第１触媒５３の状態が所定の劣化状態となった時（触媒劣化時）及び暖機運転時、第１触媒５３に流入するガスの空燃比の時間平均値が理論空燃比よりもわずかにリッチ側の空燃比となるように設定されてもよい。また、下流側目標値Voxsrefは、エンジン回転速度ＮＥ及びスロットル弁開度ＴＡ等に基づいて変更されてもよい。
【０１４３】
次に、ＣＰＵ７１は、ステップ１３１５に進んで、上記(3)式に示したように、上記ステップ１３１０にて求められた出力偏差DVoxsと時間ステップΔtとの積を、出力偏差DVoxsの下流側ＦＢ用時間積分値（第１の時間積分値）SDVoxs1であって現時点にて算出されている最新の下流側ＦＢ用時間積分値SDVoxs1に加えることにより下流側ＦＢ用時間積分値SDVoxs1の最新値を算出する（下流側ＦＢ用時間積分値SDVoxs1を更新する）。
【０１４４】
そして、ＣＰＵ７１は、ステップ１３２０に進み学習実行フラグＸＧの値が「１」であるか否かを判定する。この時点では、学習実行フラグＸＧの値は「１」に設定されている。従って、ＣＰＵ７１は、同ステップ１３２０にて「Ｙｅｓ」と判定してステップ１３２５に進み、上記(5)式に示したように、上記ステップ１３１０にて求められた出力偏差DVoxsと時間ステップΔtとの積を、出力偏差DVoxsの学習用時間積分値（第２の時間積分値）SDVoxs2であって現時点にて算出されている最新の学習用時間積分値SDVoxs2に加えることにより学習用時間積分値SDVoxs2の最新値を算出する（学習用時間積分値SDVoxs2を更新する）。
【０１４５】
次いで、ＣＰＵ７１は、ステップ１３３０に進み、上記(6)式に示したように、上記ステップ１３２５にて求められた学習用時間積分値SDVoxs2と所定の学習用係数Kgとの積を現時点にて算出されている最新の下流側ＦＢ学習補正量Gsfbに加えることにより下流側ＦＢ学習補正量Gsfbの最新値を算出する（下流側ＦＢ学習補正量Gsfbを更新する）。この下流側ＦＢ学習補正量Gsfbは、上記上流側ＦＢ補正量算出ルーチンのステップ１２１５にて制御用空燃比abyfsが求められる際に用いられる。
【０１４６】
そして、ＣＰＵ７１は、ステップ１３３５に進み上記ステップ１３２５にて求められた学習用時間積分値SDVoxs2と上記学習用係数Kgとの積を上記ステップ１３１５にて求められた下流側ＦＢ用時間積分値SDVoxs1から減じることにより下流側ＦＢ用時間積分値SDVoxs1を補正（更新）する。即ち、下流側ＦＢ用時間積分値SDVoxs1は、上記ステップ１３３０にて下流側ＦＢ学習補正量Gsfbに新たに加えられた量だけ減じられる。
【０１４７】
次いで、ＣＰＵ７１は、ステップ１３４０に進み上記ステップ１３２５にて求められた学習用時間積分値SDVoxs2と上記学習用係数Kgとの積を上記ステップ１３２５にて求められた学習用時間積分値SDVoxs2から減じることにより学習用時間積分値SDVoxs2を補正（更新）する。即ち、学習用時間積分値SDVoxs2は、上記ステップ１３３０にて下流側ＦＢ学習補正量Gsfbに新たに加えられた量だけ減じられる。
【０１４８】
次に、ＣＰＵ７１はステップ１３４５に進んで、上記ステップ１３１０にて求められた出力偏差DVoxsから本ルーチンが実行された過去の時点であって下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」に設定された状態にて本ルーチンが実行された最新の時点（下流側ＦＢ制御実行時最終時点）において後述するステップ１３５５にて設定（更新）された過去の出力偏差DVoxs1を減じた値を時間ステップΔtにより除することにより、出力偏差DVoxsの時間微分値（の近似値）DDVoxsを求める。ここで、時間ステップΔtは、本ルーチンが前回実行された時点から今回実行された時点までの時間（即ち、上記演算周期）である。なお、現時点が、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」から「１」に変更された直後の時点である場合、出力偏差の時間微分値DDVoxsを「０」に設定してもよい。
【０１４９】
次いで、ＣＰＵ７１は、ステップ１３５０に進み、下記(8)式と、上記ステップ１３１０にて算出された出力偏差DVoxsと、上記ステップ１３３５にて算出された下流側ＦＢ用時間積分値SDVoxs1と、上記ステップ１３４５にて算出された出力偏差の時間微分値DDVoxsと、に基づいて下流側ＦＢ補正量Vafsfbを求める。即ち、下流側ＦＢ補正量Vafsfbは、出力偏差DVoxsを比例・積分・微分処理（ＰＩＤ処理）することにより算出される。
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs1＋Kd・DDVoxs  …(8)
【０１５０】
ここで、Kpは予め設定された比例ゲイン（比例定数）であり、Kiは予め設定された積分ゲイン（積分定数）であり、Kdは予め設定された微分ゲイン（微分定数）である。各ゲインKp、Ki及びKdは、いずれも正の値である。
【０１５１】
このようにして、本空燃比制御装置は、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの差である出力偏差DVoxsに基づいて、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbを求める。この下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbは、上記上流側ＦＢ補正量算出ルーチンのステップ１２１５にて制御用空燃比abyfsが求められる際に用いられる。
【０１５２】
そして、ＣＰＵ７１は、ステップ１３５５に進み過去の出力偏差DVoxs1を上記ステップ１３１０にて求めた現時点の出力偏差DVoxsに設定する。
その後、ＣＰＵ７１は、ステップ１３９９に進んで本ルーチンを一旦終了する。
【０１５３】
このように、図５に示した時点t0よりも前の時点（期間Ａ内の時点）では、制御装置は、上記ステップ１３１５にて下流側ＦＢ用時間積分値SDVoxs1を更新するとともに、上記ステップ１３２５にて学習用時間積分値SDVoxs2を更新する。更に、制御装置は、上記ステップ１３５０にて下流側ＦＢ用時間積分値SDVoxs1に基づいて下流側ＦＢ補正量Vafsfbを算出するとともに、上記ステップ１３３０にて学習用時間積分値SDVoxs2に基づいて下流側ＦＢ学習補正量Gsfbを算出する。加えて、制御装置は、上流側空燃比センサ６６の出力値Vabyfs（即ち、第１触媒５３上流の空燃比）と上流側目標空燃比abyfr(k-N)と算出された下流側ＦＢ学習補正量Gsfbと算出された下流側ＦＢ補正量Vafsfbとに基づいて上流側ＦＢ補正量DFiを決定し、決定された上流側ＦＢ補正量DFiに基づいて燃料噴射量Fiを決定することによって空燃比をＦＢ制御する。これにより、第１触媒５３の下流の空燃比（下流側空燃比）が下流側目標値Voxsrefに対応する空燃比（下流側目標空燃比）に略一致する。この結果、エミッションを良好にすることができる。
【０１５４】
なお、この期間Ａは、下流側フィードバック実行条件が成立している期間であって、本明細書において、下流側フィードバック条件成立期間とも呼ばれる期間である。また、期間Ａは、内燃機関１０の状態が下流側ＦＢ補正量Vafsfbを用いた空燃比のＦＢ制御が十分に長い時間にわたって行われ続けた状態（定常状態）にあるという条件を上記下流側フィードバック実行条件に更に付加した学習実行条件が成立している期間であって、本明細書において、学習条件成立期間とも呼ばれる期間である。
【０１５５】
そして、時点t0になると、運転者がアクセルペダル８１を踏み込んでいた足をアクセルペダル８１から離すことによりアクセルペダル操作量Accpが「０」となったことによって、スロットル弁開度ＴＡが全閉開度（即ち、閾値開度β）に一致する。従って、この時点t0にてＣＰＵ７１が図６の燃料カット条件判定ルーチンの処理を開始してステップ６１０に進んだとき、ＣＰＵ７１は、同ステップ６１０にて「Ｙｅｓ」と判定してステップ６１５に進み、燃料カットフラグＸＦＣの値を「１」に設定する。即ち、燃料カットフラグＸＦＣの値は「０」から「１」に変更される。なお、ステップ６１０にて「Ｙｅｓ」と判定されることは、燃料カット実行条件が成立することに対応している。
そして、ＣＰＵ７１はステップ６９９に進んで燃料カット条件判定ルーチンを一旦終了する。
【０１５６】
次いで、ＣＰＵ７１が図７の燃料増量条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、ステップ７０５及びステップ７１０の両ステップにて「Ｎｏ」と判定し、ステップ７９９に進んで燃料増量条件判定ルーチンを一旦終了する。
【０１５７】
更に、ＣＰＵ７１が図８の上流側ＦＢ条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ８１０に進んだとき、同ステップ８１０にて「Ｎｏ」と判定してステップ８２０に進み、上流側ＦＢ制御実行フラグＸＭＦＢの値を「０」に設定する。即ち、上流側ＦＢ実行条件が不成立となり、上流側ＦＢ制御実行フラグＸＭＦＢの値は「１」から「０」に変更される。
そして、ＣＰＵ７１はステップ８９９に進んで上流側ＦＢ条件判定ルーチンを一旦終了する。
【０１５８】
また、ＣＰＵ７１が図９の下流側ＦＢ条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ９１５に進んだとき、同ステップ９１５にて「Ｎｏ」と判定してステップ９３０に進み、下流側ＦＢ制御実行フラグＸＳＦＢの値を「０」に設定する。即ち、下流側ＦＢ実行条件が不成立となり、下流側ＦＢ制御実行フラグＸＳＦＢの値は「１」から「０」に変更される。
そして、ＣＰＵ７１はステップ９９９に進んで下流側ＦＢ条件判定ルーチンを一旦終了する。
【０１５９】
更に、ＣＰＵ７１が図１０の学習条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１００５に進んだとき、同ステップ１００５にて「Ｎｏ」と判定してステップ１０２０に進み、学習実行フラグＸＧの値を「０」に設定する。即ち、学習実行条件が不成立となり、学習実行フラグＸＧの値は「１」から「０」に変更される。
そして、ＣＰＵ７１はステップ１０９９に進んで学習条件判定ルーチンを一旦終了する。
【０１６０】
更に、ＣＰＵ７１が図１１の燃料噴射量制御ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ１１０５に進んだとき、同ステップ１１０５にて「Ｎｏ」と判定してステップ１１９９に直接進み、本ルーチンを一旦終了する。従って、この時点t0では、上記燃料噴射気筒のインジェクタ３９により燃料が噴射されることはない。即ち、燃料の噴射が停止させられる（燃料カットが実行される）。なお、ステップ１１０５の処理が実行されることは、燃料カット手段の機能の一部が達成されることに対応している。
【０１６１】
一方、ＣＰＵ７１が図１２の上流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」であるか否かを判定するステップ１２０５に進んだとき、同ステップ１２０５にて「Ｎｏ」と判定してステップ１２５０に進み、上流側ＦＢ補正量DFiを「０」に設定する。これにより、上流側ＦＢ制御は実質的に行われない（即ち、下流側ＦＢ制御も実質的に行われない）。
そして、ＣＰＵ７１はステップ１２９９に進んで上流側ＦＢ補正量算出ルーチンを一旦終了する。
【０１６２】
また、ＣＰＵ７１が図１３の下流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１３０５に進んだとき、同ステップ１３０５にて「Ｎｏ」と判定してステップ１３６０に進み、下流側ＦＢ補正量Vafsfbを「０」に設定する。これにより、下流側ＦＢ制御は実質的に行われない。
そして、ＣＰＵ７１はステップ１３９９に進んで下流側ＦＢ補正量算出ルーチンを一旦終了する。
【０１６３】
そして、上記演算周期が経過すると、ＣＰＵ７１は、再び、図６の燃料カット条件判定ルーチンの処理を開始して燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ６０５に進む。この時点では、燃料カットフラグＸＦＣの値は「１」に設定されている。
【０１６４】
従って、ＣＰＵ７１は、同ステップ６０５にて「Ｎｏ」と判定してステップ６２０に進み、エンジン回転速度ＮＥが閾値回転速度αから所定の正の値α１を減じた値（α−α１）以下であるという条件及びスロットル弁開度ＴＡが閾値開度βよりも大きいという条件のうちの少なくとも一方が成立しているか否かを判定する。
【０１６５】
上記仮定に従えば、エンジン回転速度ＮＥは閾値回転速度αよりも高い。また、この時点では、スロットル弁開度ＴＡは閾値開度βに一致している。従って、ＣＰＵ７１は、同ステップ６２０にて「Ｎｏ」と判定してステップ６９９に直接進み、燃料カット条件判定ルーチンを一旦終了する。即ち、燃料カットフラグＸＦＣの値は「１」に維持される。
【０１６６】
燃料カットフラグＸＦＣの値が「１」に維持されているので、上述した他のルーチンにおいては上述した時点t0における場合と同様の処理が実行される。このような処理は、後述する燃料カット実行条件が不成立となる時点t1まで繰り返し実行される。従って、図５に示した燃料カット期間（時点t0〜時点t1）Ｔｆｃにおいては、燃料の噴射が停止させられ、その結果、第１触媒５３が吸蔵する酸素の量（酸素吸蔵量）が増加する。そして、時点t0aになると、酸素吸蔵量は第１触媒５３が吸蔵し得る酸素の量の最大値（酸素吸蔵量の最大値）に到達する。従って、時点t0a以降の時点においては、下流側空燃比センサ６７は理論空燃比よりもリーン側のリーン空燃比に対応する出力値を出力する。
【０１６７】
更に、制御装置が上記ステップ１３１５、上記ステップ１３２５及び上記ステップ１３３０のいずれも実行しないので、下流側ＦＢ用時間積分値SDVoxs1、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbのいずれの更新も停止させられる。これにより、下流側ＦＢ用時間積分値SDVoxs1（図５の曲線Ｃ２）、学習用時間積分値SDVoxs2（図５の曲線Ｃ１）及び下流側ＦＢ学習補正量Gsfbのそれぞれは、一定に維持される。更に、制御装置が上記ステップ１３５０に代えて上記ステップ１３６０を実行するので、下流側ＦＢ補正量Vafsfbは「０」に維持される。
【０１６８】
なお、この時点t0は、上記下流側フィードバック実行条件が成立しなくなるとともに、上記学習実行条件が成立しなくなる時点であり、本明細書において、第１時点とも呼ばれる時点である。また、燃料カット期間Ｔｆｃは、本明細書において、燃料カット条件成立期間とも呼ばれる期間である。更に、燃料カット期間Ｔｆｃは、上記下流側フィードバック実行条件が成立していない期間であって、下流側フィードバック条件不成立期間の一部の期間である。更に、燃料カット期間Ｔｆｃは、上記学習実行条件が成立していない期間であって、学習条件不成立期間の一部の期間である。
【０１６９】
そして、時点t1になると、運転者がアクセルペダル８１を踏み込むことによりスロットル弁開度ＴＡが閾値開度β以上の所定開度ＴＡ１に一致する。従って、この時点t1にてＣＰＵ７１が図６の燃料カット条件判定ルーチンの処理を開始してステップ６２０に進んだとき、ＣＰＵ７１は、同ステップ６２０にて「Ｙｅｓ」と判定してステップ６２５に進み、燃料カットフラグＸＦＣの値を「０」に設定する。即ち、燃料カットフラグＸＦＣの値は「１」から「０」に変更される。なお、燃料カットフラグＸＦＣの値が「１」から「０」に変更されることは、燃料増量条件が成立することに対応している。
そして、ＣＰＵ７１はステップ６９９に進んで燃料カット条件判定ルーチンを一旦終了する。
【０１７０】
更に、ＣＰＵ７１が図７の燃料増量条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、現時点が燃料カットフラグＸＦＣの値が「１」から「０」に変化した直後の時点であるか否かを判定するステップ７０５に進んだとき、同ステップ７０５にて「Ｙｅｓ」と判定してステップ７１５に進み、燃料増量フラグＸＲＣの値を「１」に設定する。即ち、燃料増量フラグＸＲＣの値は「０」から「１」に変更される。
そして、ＣＰＵ７１はステップ７９９に進んで燃料増量条件判定ルーチンを一旦終了する。
【０１７１】
また、ＣＰＵ７１が図８の上流側ＦＢ条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ８１０に進んだとき、同ステップ８１０にて「Ｙｅｓ」と判定してステップ８１５に進み、上流側ＦＢ制御実行フラグＸＭＦＢの値を「１」に設定する。即ち、上流側ＦＢ制御実行フラグＸＭＦＢの値は「０」から「１」に変更される。
そして、ＣＰＵ７１はステップ８９９に進んで上流側ＦＢ条件判定ルーチンを一旦終了する。
【０１７２】
更に、ＣＰＵ７１が図９の下流側ＦＢ条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ９１５に進んだとき、同ステップ９１５にて「Ｙｅｓ」と判定して燃料増量フラグＸＲＣの値が「０」であるか否かを判定するステップ９２０に進む。
【０１７３】
この時点では、燃料増量フラグＸＲＣの値は「１」に設定されている。従って、ＣＰＵ７１は、同ステップ９２０にて「Ｎｏ」と判定してステップ９３０に進み、下流側ＦＢ制御実行フラグＸＳＦＢの値を「０」に設定する。即ち、下流側ＦＢ制御実行フラグＸＳＦＢの値は「０」に維持される。
そして、ＣＰＵ７１はステップ９９９に進んで下流側ＦＢ条件判定ルーチンを一旦終了する。
【０１７４】
更に、ＣＰＵ７１が図１０の学習条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１００５に進んだとき、同ステップ１００５にて「Ｎｏ」と判定してステップ１０２０に進み、学習実行フラグＸＧの値を「０」に設定する。即ち、学習実行フラグＸＧの値は「０」に維持される。
そして、ＣＰＵ７１はステップ１０９９に進んで学習条件判定ルーチンを一旦終了する。
【０１７５】
一方、ＣＰＵ７１が図１１の燃料噴射量制御ルーチンの実行を開始すると、ＣＰＵ７１は、燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ１１０５に進んだとき、同ステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、上述したように、筒内吸入空気量Mc(k)を決定する。
【０１７６】
次いで、ＣＰＵ７１は、ステップ１１１５に進んで燃料増量フラグＸＲＣの値が「０」であるか否かを判定する。この時点では、燃料増量フラグＸＲＣの値は「１」である。従って、ＣＰＵ７１は、ステップ１１１５にて「Ｎｏ」と判定してステップ１１５０に進み、今回の上流側目標空燃比abyfr(k)を理論空燃比よりも比較的大きくリッチ側の燃料増量用空燃比AFrcに設定する。ＣＰＵ７１は、決定された上流側目標空燃比abyfrをストローク数kに関連づけてＲＡＭ７３に記憶させる。なお、ステップ１１１５及びステップ１１５０の処理が実行されることは、燃料増量手段の機能の一部が達成されることに対応している。
【０１７７】
そして、ＣＰＵ７１は、ステップ１１２５に進み上記ステップ１１１０にて決定された筒内吸入空気量Mc(k)を上記ステップ１１５０にて設定された上流側目標空燃比abyfr(k)により除することによって基本燃料噴射量Fbase（この時点では、燃料増量用空燃比AFrcに対応する基本燃料噴射量Fir）を決定する。
【０１７８】
次いで、ＣＰＵ７１は、ステップ１１３０以降のステップに進んで、上記ステップ１１２５にて決定された基本燃料噴射量Fbaseと上流側ＦＢ補正量DFiとに基づいて燃料噴射量Fiを決定するとともに、決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号を送出した後、図１１のルーチンを一旦終了する。
【０１７９】
また、ＣＰＵ７１が図１２の上流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」であるか否かを判定するステップ１２０５に進んだとき、同ステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０以降のステップに進み、上述したように、上流側ＦＢ補正量DFiを算出する。
そして、ＣＰＵ７１はステップ１２９９に進んで上流側ＦＢ補正量算出ルーチンを一旦終了する。
【０１８０】
更に、ＣＰＵ７１が図１３の下流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１３０５に進んだとき、同ステップ１３０５にて「Ｎｏ」と判定してステップ１３６０に進み、下流側ＦＢ補正量Vafsfbを「０」に設定する。
そして、ＣＰＵ７１はステップ１３９９に進んで下流側ＦＢ補正量算出ルーチンを一旦終了する。
【０１８１】
そして、上記演算周期が経過すると、ＣＰＵ７１は、再び、図６の燃料カット条件判定ルーチンの処理を開始して燃料カットフラグＸＦＣの値が「０」であるか否かを判定するステップ６０５に進む。この時点では、燃料カットフラグＸＦＣの値は「０」に設定されている。
【０１８２】
従って、ＣＰＵ７１は、同ステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、現時点のエンジン回転速度ＮＥが上記閾値回転速度αよりも高く、且つ、スロットル弁開度ＴＡが上記閾値開度β以下であるか否かを判定する。
【０１８３】
上記仮定に従えば、エンジン回転速度ＮＥは閾値回転速度αよりも高い。また、この時点では、スロットル弁開度ＴＡは閾値開度βよりも大きい所定開度ＴＡ１に一致している。従って、ＣＰＵ７１は、同ステップ６１０にて「Ｎｏ」と判定してステップ６９９に直接進み、燃料カット条件判定ルーチンを一旦終了する。即ち、燃料カットフラグＸＦＣの値は「０」に維持される。
【０１８４】
更に、ＣＰＵ７１が図７の燃料増量条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、現時点が燃料カットフラグＸＦＣの値が「１」から「０」に変化した直後の時点であるか否かを判定するステップ７０５に進んだとき、同ステップ７０５にて「Ｎｏ」と判定してステップ７１０に進み、現時点が、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから燃料増量時間τrcが経過した時点であるか否かを判定する。
【０１８５】
この時点は、燃料増量フラグＸＲＣの値が「０」から「１」に変化した直後の時点である。従って、ＣＰＵ７１は、同ステップ７１０にて「Ｎｏ」と判定してステップ７９９に直接進んで本ルーチンを一旦終了する。
【０１８６】
燃料カットフラグＸＦＣの値が「０」に維持されているとともに燃料増量フラグＸＲＣの値は「１」に維持されているので、上述した他のルーチンにおいては上述した時点t1における場合と同様の処理が実行される。このような処理は、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから所定の燃料増量時間τrcが経過した時点である後述の時点t2まで繰り返し実行される。従って、図５に示した燃料増量期間（時点t1〜時点t2）Ｔｒｃにおいては、上記下流側ＦＢ補正量算出ルーチンのステップ１３６０にて下流側ＦＢ補正量Vafsfbが「０」に設定されているので、下流側ＦＢ補正量Vafsfbに基づくことなく、上流側空燃比センサ６６の出力値Vabyfsと、上流側目標空燃比abyfr(k-N)と、下流側ＦＢ学習補正量Gsfbと、に基づいて上流側ＦＢ補正量DFiが決定される（即ち、下流側ＦＢ制御が停止させられる）。
【０１８７】
これにより、内燃機関１０の空燃比が燃料増量用空燃比AFrcに制御され（燃料増量制御が行われ）、その結果、酸素吸蔵量が減少する。ここで、燃料増量時間τrcは、酸素吸蔵量が最大である時点から同燃料増量時間τrcだけ内燃機関１０の空燃比を燃料増量用空燃比AFrcに制御することにより、その酸素吸蔵量が適量（例えば、酸素吸蔵量の最大値の半分の量）に一致するように設定されている。
【０１８８】
更に、上記燃料増量期間Ｔｒｃにおいては、制御装置が上記ステップ１３１５、上記ステップ１３２５及び上記ステップ１３３０のいずれも実行しないので、下流側ＦＢ用時間積分値SDVoxs1、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbのいずれの更新も停止させられる。これにより、下流側ＦＢ用時間積分値SDVoxs1（図５の曲線Ｃ２）、学習用時間積分値SDVoxs2（図５の曲線Ｃ１）及び下流側ＦＢ学習補正量Gsfbのそれぞれは、一定に維持される。
【０１８９】
なお、燃料増量期間Ｔｒｃは、下流側フィードバック条件不成立期間の一部の期間又は学習条件不成立期間の一部の期間である。
【０１９０】
そして、時点t2において、ＣＰＵ７１が図７の燃料増量条件判定ルーチンの実行を開始し、現時点が、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから上記燃料増量時間τrcが経過した時点であるか否かを判定するステップ７１０に進んだとき、ＣＰＵ７１は、同ステップ７１０にて「Ｙｅｓ」と判定してステップ７２０に進み、燃料増量フラグＸＲＣの値を「０」に設定する。次いで、ＣＰＵ７１は、ステップ７２５に進んで過渡期間表示フラグＸＫＴの値を「１」に設定する。即ち、燃料増量フラグＸＲＣの値が「１」から「０」に変更されるとともに、過渡期間表示フラグＸＫＴの値が「０」から「１」に変更される。なお、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから上記燃料増量時間τrcが経過することは、燃料増量条件が不成立となることに対応している。
そして、ＣＰＵ７１はステップ７９９に進んで燃料増量条件判定ルーチンを一旦終了する。
【０１９１】
更に、ＣＰＵ７１が図９の下流側ＦＢ条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、燃料増量フラグＸＲＣの値が「０」であるか否かを判定するステップ９２０に進んだとき、同ステップ９２０にて「Ｙｅｓ」と判定してステップ９２５に進む。そして、ＣＰＵ７１は、同ステップ９２５にて下流側ＦＢ制御実行フラグＸＳＦＢの値を「１」に設定する。即ち、下流側ＦＢ制御実行フラグＸＳＦＢの値は「０」から「１」に変更される。
次いで、ＣＰＵ７１はステップ９９９に進んで下流側ＦＢ条件判定ルーチンを一旦終了する。
【０１９２】
更に、ＣＰＵ７１が図１０の学習条件判定ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１００５に進んだとき、同ステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、過渡期間表示フラグＸＫＴの値が「０」であるか否かを判定する。
【０１９３】
この時点では、過渡期間表示フラグＸＫＴの値は「１」に設定されている。従って、ＣＰＵ７１は、同ステップ１０１０にて「Ｎｏ」と判定してステップ１０２５に進み、下流側空燃比センサ６７の出力値Voxsが上記閾値出力値Voxsrefよりも大きいか否かを判定する。
【０１９４】
ところで、理論空燃比よりもリッチ側の空燃比に対応する燃料が噴射されると、同燃料が噴射された時点から比較的大きな時間遅れを伴って、第１触媒５３の酸素吸蔵量は減少する。従って、第１触媒５３内の酸素吸蔵量が最大である時点から燃料増量時間τrcだけ燃料増量制御が実行されると、第１触媒５３の実際の酸素吸蔵量は、燃料増量制御の実行が終了した後、比較的大きな時間遅れを伴って、適量となる。
【０１９５】
従って、この時点t2では、第１触媒５３の実際の酸素吸蔵量が比較的多いので、下流側空燃比センサ６７の出力値Voxsは理論空燃比よりもリーン側の空燃比に対応した出力値となる。即ち、下流側空燃比センサ６７の出力値Voxsは上記閾値出力値Voxsrefよりも小さい。従って、ＣＰＵ７１は、同ステップ１０２５にて「Ｎｏ」と判定してステップ１０２０に進み、学習実行フラグＸＧの値を「０」に設定する。即ち、学習実行フラグＸＧの値は「０」に維持される。
そして、ＣＰＵ７１はステップ１０９９に進んで学習条件判定ルーチンを一旦終了する。
【０１９６】
また、ＣＰＵ７１が図１１の燃料噴射量制御ルーチンの実行を開始すると、ＣＰＵ７１は、燃料増量フラグＸＲＣの値が「０」であるか否かを判定するステップ１１１５に進んだとき、同ステップ１１１５にて「Ｙｅｓ」と判定してステップ１１２０に進み、今回の上流側目標空燃比abyfr(k)を理論空燃比AFstに設定する。ＣＰＵ７１は、決定された上流側目標空燃比abyfrをストローク数kに関連づけてＲＡＭ７３に記憶させる。
【０１９７】
そして、ＣＰＵ７１は、ステップ１１２５に進み上記ステップ１１１０にて決定された筒内吸入空気量Mc(k)を上記ステップ１１２０にて設定された上流側目標空燃比abyfr(k)により除することによって基本燃料噴射量Fbase（この時点では、理論空燃比AFstに対応する基本燃料噴射量Fis）を決定する。
【０１９８】
次いで、ＣＰＵ７１は、ステップ１１３０以降のステップに進んで、上記ステップ１１２５にて決定された基本燃料噴射量Fbaseと上流側ＦＢ補正量DFiとに基づいて燃料噴射量Fiを決定するとともに、決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号を送出した後、図１１のルーチンを一旦終了する。
【０１９９】
一方、ＣＰＵ７１が図１２の上流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」であるか否かを判定するステップ１２０５に進んだとき、同ステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０以降のステップに進み、上述したように、上流側ＦＢ補正量DFiを算出する。
そして、ＣＰＵ７１はステップ１２９９に進んで上流側ＦＢ補正量算出ルーチンを一旦終了する。
【０２００】
また、ＣＰＵ７１が図１３の下流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定するステップ１３０５に進んだとき、同ステップ１３０５にて「Ｙｅｓ」と判定してステップ１３１０に進み、上述したように、出力偏差DVoxsを算出する。
【０２０１】
次いで、ＣＰＵ７１は、ステップ１３１５に進んで、上述したように、現時点にて算出されている最新の下流側ＦＢ用時間積分値SDVoxs1と、上記ステップ１３１０にて算出された出力偏差DVoxsと、に基づいて下流側ＦＢ用時間積分値SDVoxs1の最新値を算出する（下流側ＦＢ用時間積分値SDVoxs1を更新する）。
【０２０２】
そして、ＣＰＵ７１は、学習実行フラグＸＧの値が「１」であるか否かを判定するステップ１３２０に進み、同ステップ１３２０にて「Ｎｏ」と判定してステップ１３４５以降のステップに進み、上述したように、下流側ＦＢ補正量Vafsfbを算出する。
そして、ＣＰＵ７１はステップ１３９９に進んで下流側ＦＢ補正量算出ルーチンを一旦終了する。
【０２０３】
以上の処理は、下流側空燃比センサ６７の出力値Voxsが上記閾値出力値Voxsrefよりも大きくなる後述の時点t3まで繰り返し実行される。従って、図５に示した過渡期間（時点t2〜時点t3）Ｔｋにおいては、その過渡期間Ｔｋにおける出力偏差DVoxsに基づいて下流側ＦＢ用時間積分値SDVoxs1が更新され（図５の曲線Ｃ２）、更新された下流側ＦＢ用時間積分値SDVoxs1に基づいて下流側ＦＢ補正量Vafsfbが算出される。これにより、過渡期間Ｔｋ中の下流側ＦＢ補正量Vafsfbを、過渡期間Ｔｋにおける出力偏差DVoxsが反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。
【０２０４】
そして、上流側空燃比センサ６６の出力値Vabyfsと、上流側目標空燃比abyfr(k-N)と、下流側ＦＢ補正量Vafsfbと、下流側ＦＢ学習補正量Gsfbと、に基づいて上流側ＦＢ補正量DFiが決定される（即ち、上流側ＦＢ制御及び下流側ＦＢ制御の両方が行われる）。この結果、過渡期間Ｔｋにおいて下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
【０２０５】
一方、過渡期間Ｔｋにおいては、制御装置が上記ステップ１３２５及び上記ステップ１３３０を実行しないので、学習用時間積分値SDVoxs2の更新及び下流側ＦＢ学習補正量Gsfbの更新は再開されない（停止させられたままである）。これにより、学習用時間積分値SDVoxs2（図５の曲線Ｃ１）及び下流側ＦＢ学習補正量Gsfbのそれぞれの値は、一定に維持される。
【０２０６】
なお、この過渡期間Ｔｋは、下流側フィードバック条件成立期間の一部の期間又は学習条件不成立期間の一部の期間である。更に、過渡期間（時点t2〜時点t3）Ｔｋは、下流側フィードバック条件成立期間と学習条件不成立期間とが重複している重複期間とも呼ばれる期間である。また、時点t2から時点t3となるまでに経過した時間は、本明細書において、過渡時間とも呼ばれる時間である。
【０２０７】
そして、時点t3になると、下流側空燃比センサ６７の出力値Voxsが上記閾値出力値Voxsrefを超える。従って、この時点t3にてＣＰＵ７１が図１０の学習条件判定ルーチンの処理を開始してステップ１０２５に進んだとき、ＣＰＵ７１は、同ステップ１０２５にて「Ｙｅｓ」と判定してステップ１０３０に進み、過渡期間表示フラグＸＫＴの値を「０」に設定する。即ち、過渡期間表示フラグＸＫＴの値は「１」から「０」に変更される。
【０２０８】
次いで、ＣＰＵ７１は、ステップ１０１５に進んで学習実行フラグＸＧの値を「１」に設定する。即ち、学習実行条件が成立して、学習実行フラグＸＧの値は「０」から「１」に変更される。
そして、ＣＰＵ７１はステップ１０９９に進んで学習条件判定ルーチンを一旦終了する。
【０２０９】
この状態において、ＣＰＵ７１が図１３の下流側ＦＢ補正量算出ルーチンの実行を開始すると、ＣＰＵ７１は、学習実行フラグＸＧの値が「１」であるか否かを判定するステップ１３２０に進んだとき、同ステップ１３２０にて「Ｙｅｓ」と判定してステップ１３２５以降のステップに進み、上述したように、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbを更新するとともに下流側ＦＢ補正量Vafsfbを算出する。
そして、ＣＰＵ７１はステップ１３９９に進んで下流側ＦＢ補正量算出ルーチンを一旦終了する。
【０２１０】
そして、上記演算周期が経過すると、ＣＰＵ７１は、再び、図１０の学習条件判定ルーチンの処理を開始して過渡期間表示フラグＸＫＴの値が「０」であるか否かを判定するステップ１０１０に進む。この時点では、過渡期間表示フラグＸＫＴの値は「０」に設定されている。従って、ＣＰＵ７１は、同ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進み、学習実行フラグＸＧの値を「１」に設定する。即ち、学習実行フラグＸＧの値は「１」に維持される。
そして、ＣＰＵ７１はステップ１０９９に進んで学習条件判定ルーチンを一旦終了する。
【０２１１】
学習実行フラグＸＧの値は「１」に維持されているので、上述した他のルーチンにおいては上述した時点t3における場合と同様の処理が実行される。このような処理は、以降において繰り返し実行される。従って、図５に示した時点t3以降の期間Ｂにおいては、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるので、過渡期間Ｔｋにおける場合と同様に、期間Ｂにおける出力偏差DVoxsに基づいて下流側ＦＢ用時間積分値SDVoxs1が更新され、更新された下流側ＦＢ用時間積分値SDVoxs1に基づいて下流側ＦＢ補正量Vafsfbが算出される。更に、期間Ｂにおいては、学習実行フラグＸＧの値が「１」であるので、期間Ｂにおける出力偏差DVoxsに基づいて学習用時間積分値SDVoxs2が更新され、更新された学習用時間積分値SDVoxs2に基づいて下流側ＦＢ学習補正量Gsfbが算出される。即ち、学習用時間積分値SDVoxs2の更新及び下流側ＦＢ学習補正量Gsfbの更新が行われる。
【０２１２】
そして、過渡期間Ｔｋと同様に、上流側空燃比センサ６６の出力値Vabyfsと、上流側目標空燃比abyfr(k-N)と、下流側ＦＢ補正量Vafsfbと、下流側ＦＢ学習補正量Gsfbと、に基づいて上流側ＦＢ補正量DFiが決定される（即ち、上流側ＦＢ制御及び下流側ＦＢ制御の両方が行われる）。この結果、下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
更に、学習用時間積分値SDVoxs2及び下流側ＦＢ学習補正量Gsfbには、燃料カット期間Ｔｆｃ、燃料増量期間Ｔｒｃ及び過渡期間Ｔｋにおける出力偏差DVoxsが反映されていないので、空燃比を適切に制御することができる。
【０２１３】
なお、この時点t3は、時点t0にて成立しなくなった学習実行条件が再び成立した時点であり、本明細書において、第２時点とも呼ばれる時点である。また、この期間Ｂは、下流側フィードバック条件成立期間の一部の期間又は学習条件成立期間の一部の期間である。
【０２１４】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第１実施形態によれば、過渡期間Ｔｋにおいて、過渡期間Ｔｋにおける出力偏差DVoxsに基づいて下流側ＦＢ用時間積分値SDVoxs1（第１の時間積分値）が更新され、更新された下流側ＦＢ用時間積分値SDVoxs1に基づいて下流側ＦＢ補正量Vafsfbが算出される。これにより、過渡期間Ｔｋ中の下流側ＦＢ補正量Vafsfbを、過渡期間Ｔｋにおける出力偏差DVoxsが反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。この結果、過渡期間Ｔｋにおいて、下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
【０２１５】
更に、上記第１実施形態によれば、学習条件不成立期間（燃料カット期間Ｔｆｃ、燃料増量期間Ｔｒｃ及び過渡期間Ｔｋ）において、下流側ＦＢ学習補正量Gsfbは一定に維持される。加えて、学習条件不成立期間の終了時点t3において、学習用時間積分値SDVoxs2は、学習条件不成立期間における出力偏差DVoxsとは無関係な所定の値（即ち、学習条件不成立期間の開始時点t0における学習用時間積分値SDVoxs2）となっている。
【０２１６】
これにより、学習条件不成立期間（特に、過渡期間Ｔｋ）における出力偏差が下流側ＦＢ学習補正量Gsfbに反映されることを回避できるので、下流側ＦＢ学習補正量Gsfbが不適切な値となることを防止することができる。この結果、上流側空燃比センサ６６の出力値Vabyfsと第１触媒５３の上流の実際の空燃比（上流側空燃比）との間の対応関係の予定されていた対応関係に対するズレ（上流側空燃比センサ６６の出力ズレ）を適切に補償することができ、内燃機関１０の実際の空燃比を目標とする空燃比に確実に一致させることができる。
【０２１７】
なお、上記第１実施形態は、第２時点（時点t3）の学習用時間積分値SDVoxs2に設定される値であって学習条件不成立期間における出力偏差DVoxsとは無関係な所定の値として、第１時点（時点t0）における学習用時間積分値SDVoxs2を採用していたが、第１時点（時点t0）における学習用時間積分値SDVoxs2に所定の係数を乗じた値を採用してもよい。
【０２１８】
＜第２実施形態＞
次に、本発明の第２実施形態に係る内燃機関の空燃比制御装置について説明する。第２実施形態に係る空燃比制御装置は、過渡期間Ｔｋにおいて更新される下流側ＦＢ用時間積分値SDVoxs1と過渡期間Ｔｋを含む学習条件不成立期間において一定に維持される学習用時間積分値SDVoxs2とからなる２つの時間積分値を互いに独立に算出する上記第１実施形態に係る空燃比制御装置に対して、時間積分値を１つだけ算出するとともに過渡期間において時間積分値を更新し且つ学習条件不成立期間の終了時点（本例では、過渡期間の終了時点）にて時間積分値を学習条件不成立期間の開始時点における時間積分値に設定する点のみにおいて相違している。
【０２１９】
この制御装置は、下流側ＦＢ補正量Vafsfbを算出するための下流側ＦＢ補正量算出ルーチンとして、図１３のルーチンに代えて図１４のルーチンを実行する。なお、図１４のルーチンの処理が実行されることは、空燃比フィードバック制御手段の機能の一部、上流側フィードバック補正量算出手段の機能の一部、下流側フィードバック補正量算出手段の機能、下流側フィードバック学習補正量算出手段の機能、時間積分値更新手段の機能及び時間積分値設定手段の機能が達成されることに対応している。
【０２２０】
従って、所定のタイミングになると、ＣＰＵ７１は、ステップ１４００から処理を開始し、ステップ１４０５に進んで、現時点が、学習実行フラグＸＧの値が「０」から「１」に変化した直後の時点であるか否かを判定する。
【０２２１】
いま、上記第１実施形態と同様に、内燃機関１０の運転者がアクセルペダル８１を操作することにより、アクセルペダル操作量Accpが所定操作量Accp1にて一定に維持され、その後、所定期間だけ「０」に維持され、更にその後、再び所定操作量Accp1に維持される場合を想定して図１５を参照しながら説明を続ける。
【０２２２】
まず、内燃機関１０の運転者がアクセルペダル８１を踏み込んでいる足をアクセルペダル８１から離すことによりアクセルペダル操作量Accpが「０」に変更される前であってアクセルペダル操作量Accpが所定操作量Accp1にて一定に維持されている時点（図１５の時点t0よりも前の時点）から説明する。この時点では、上流側ＦＢ制御実行フラグＸＭＦＢ、下流側ＦＢ制御実行フラグＸＳＦＢ及び学習実行フラグＸＧの値は「１」に設定され続けている。
【０２２３】
従って、ＣＰＵ７１は、同ステップ１４０５にて「Ｎｏ」と判定してステップ１４１０に進み、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」であるか否かを判定する。
【０２２４】
上記仮定に従えば、ＣＰＵ７１は、同ステップ１４１０にて「Ｙｅｓ」と判定してステップ１４１５に進み、ステップ１３１０と同様に、下流側目標値Voxsrefから現時点の下流側空燃比センサ６７の出力値Voxsを減じることにより、出力偏差DVoxsを求める。
【０２２５】
次に、ＣＰＵ７１は、ステップ１４２０に進んで、上記ステップ１４１５にて求められた出力偏差DVoxsと時間ステップΔtとの積を、出力偏差DVoxsの時間積分値SDVoxsであって現時点にて算出されている最新の時間積分値SDVoxsに加えることにより時間積分値SDVoxsの最新値を算出する（時間積分値SDVoxsを更新する）。ここで、時間ステップΔtは、本ルーチンが前回実行された時点から今回実行された時点までの時間（即ち、上記演算周期）である。
【０２２６】
そして、ＣＰＵ７１は、ステップ１４２５に進み学習実行フラグＸＧの値が「１」であるか否かを判定する。この時点では、学習実行フラグＸＧの値は「１」である。従って、ＣＰＵ７１は、同ステップ１４２５にて「Ｙｅｓ」と判定してステップ１４３０に進み、上記ステップ１４２０にて求められた時間積分値SDVoxsと所定の学習用係数Kgとの積を現時点にて算出されている最新の下流側ＦＢ学習補正量Gsfbに加えることにより下流側ＦＢ学習補正量Gsfbの最新値を算出する（下流側ＦＢ学習補正量Gsfbを更新する）。
【０２２７】
そして、ＣＰＵ７１は、ステップ１４３５に進み上記ステップ１４２０にて求められた時間積分値SDVoxsから時間積分値SDVoxsと上記学習用係数Kgとの積を減じることにより時間積分値SDVoxsを補正（更新）する。即ち、時間積分値SDVoxsは、上記ステップ１４３０にて下流側ＦＢ学習補正量Gsfbに新たに加えられた量だけ減じられる。
【０２２８】
次いで、ＣＰＵ７１は、ステップ１４４０に進んで、上記ステップ１４１５にて求められた出力偏差DVoxsから本ルーチンが実行された過去の時点であって下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」に設定された状態にて本ルーチンが実行された最新の時点（下流側ＦＢ制御実行時最終時点）において後述するステップ１４５０にて設定（更新）された過去の出力偏差DVoxs1を減じた値を時間ステップΔtにより除することにより、出力偏差DVoxsの時間微分値（の近似値）DDVoxsを求める。なお、現時点が、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」から「１」に変更された直後の時点である場合、出力偏差の時間微分値DDVoxsを「０」に設定してもよい。
【０２２９】
次いで、ＣＰＵ７１は、ステップ１４４５に進み、下記(9)式と、上記ステップ１４１５にて算出された出力偏差DVoxsと、上記ステップ１４３５にて算出された時間積分値SDVoxsと、上記ステップ１４４０にて算出された出力偏差の時間微分値DDVoxsと、に基づいて下流側ＦＢ補正量Vafsfbを求める。即ち、下流側ＦＢ補正量Vafsfbは、出力偏差DVoxsを比例・積分・微分処理（ＰＩＤ処理）することにより算出される。
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs＋Kd・DDVoxs  …(9)
【０２３０】
ここで、Kpは予め設定された比例ゲイン（比例定数）であり、Kiは予め設定された積分ゲイン（積分定数）であり、Kdは予め設定された微分ゲイン（微分定数）である。各ゲインKp、Ki及びKdは、いずれも正の値である。
【０２３１】
このようにして、本空燃比制御装置は、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの差である出力偏差DVoxsに基づいて、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbを求める。この下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbは、上記図１２のルーチンのステップ１２１５にて制御用空燃比abyfsが求められる際に用いられる。
【０２３２】
そして、ＣＰＵ７１は、ステップ１４５０に進んで過去の出力偏差DVoxs1を上記ステップ１４１０にて求めた現時点の出力偏差DVoxsに設定する。
【０２３３】
次いで、ＣＰＵ７１は、ステップ１４５５に進んで、現時点が、学習実行フラグＸＧの値が「１」から「０」に変化した直後の時点であるか否かを判定する。上述したように、この時点では、学習実行フラグＸＧの値は「１」に設定されている。従って、ＣＰＵ７１は、同ステップ１４５５にて「Ｎｏ」と判定し、ステップ１４９９に進んで本ルーチンを一旦終了する。
【０２３４】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図１１及び図１２の各ルーチンの処理を実行する。
この時点では、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に設定されている。従って、上記図１４のルーチンにて算出された下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbに基づいて上流側ＦＢ補正量DFiが算出される。更に、燃料カットフラグＸＦＣの値及び燃料増量フラグＸＲＣの値が共に「０」に設定されているので、理論空燃比AFstに対応する基本燃料噴射量Fisと算出された上流側ＦＢ補正量DFiとに基づいて決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号が送出される。即ち、上流側ＦＢ制御及び下流側ＦＢ制御が共に行われる。
【０２３５】
以上の処理は、燃料カット実行条件が成立する時点t0まで繰り返し実行される。従って、図１５に示した時点t0よりも前の期間Ａにおいては、ステップ１４２０、ステップ１４３０及びステップ１４４５の処理が実行されるので、時間積分値SDVoxs、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbのそれぞれの値は更新され続ける。
【０２３６】
そして、時点t0になると、運転者がアクセルペダル８１を踏み込んでいた足をアクセルペダル８１から離すことによりアクセルペダル操作量Accpが「０」となったことによって、スロットル弁開度ＴＡが全閉開度（即ち、閾値開度β）に一致する。従って、上記第１実施形態と同様に、ＣＰＵ７１が図６のルーチンの処理を実行することにより、燃料カットフラグＸＦＣの値が「１」に変更される。
【０２３７】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図７〜図１０の各ルーチンの処理を実行する。その結果、上流側ＦＢ制御実行フラグＸＭＦＢの値、下流側ＦＢ制御実行フラグＸＳＦＢの値及び学習実行フラグＸＧの値は、それぞれ「０」に変更される。一方、燃料増量フラグＸＲＣの値は「０」に維持される。
【０２３８】
従って、ＣＰＵ７１が図１４の下流側ＦＢ補正量算出ルーチンの処理を開始し、ステップ１４０５にて「Ｎｏ」と判定してステップ１４１０に進んだとき、ＣＰＵ７１は、同ステップ１４１０にて「Ｎｏ」と判定してステップ１４６０に進み、下流側ＦＢ補正量Vafsfbを「０」に設定する。これにより、下流側ＦＢ制御は実質的に行われない。
【０２３９】
次いで、ＣＰＵ７１は、現時点が、学習実行フラグＸＧの値が「１」から「０」に変化した直後の時点であるか否かを判定するステップ１４５５に進む。この時点t0は、学習実行フラグＸＧの値が「１」から「０」へと変更された直後の時点である。従って、ＣＰＵ７１は、ステップ１４５５にて「Ｙｅｓ」と判定してステップ１４６５に進む。そして、ＣＰＵ７１は、ステップ１４６５にて時間積分値の記憶値SDVoxs0を現時点（時点t0）の時間積分値SDVoxsに設定する（現時点の時間積分値SDVoxsを時間積分値の記憶値SDVoxs0に格納する）。即ち、ＣＰＵ７１は、学習条件不成立期間の開始時点（学習実行フラグＸＧの値が「１」から「０」へと変更された時点）t0の時間積分値SDVoxsを記憶値SDVoxs0として格納しておく。
その後、ＣＰＵ７１は、ステップ１４９９に進んで本ルーチンを一旦終了する。
【０２４０】
加えて、上記第１実施形態と同様に、ＣＰＵ７１は、図１１及び図１２の各ルーチンの処理を実行する。この時点t0では、燃料カットフラグＸＦＣの値が「１」に設定されているので、上記第１実施形態と同様に、ＣＰＵ７１が図１１のルーチンの処理を実行しても上記燃料噴射気筒のインジェクタ３９により燃料が噴射されることはない。即ち、燃料の噴射が停止させられる（燃料カットが実行される）。
【０２４１】
以上の処理は、燃料カット実行条件が不成立となる時点t1まで繰り返し実行される。従って、図１５に示した燃料カット期間（時点t0〜時点t1）Ｔｆｃにおいては、燃料の噴射が停止させられ、その結果、第１触媒５３内の酸素吸蔵量が増加する。
【０２４２】
更に、燃料カット期間Ｔｆｃにおいては、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」になっているから、ステップ１４２０、ステップ１４３０及びステップ１４４５の処理は実行されない。従って、時間積分値SDVoxs、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbのそれぞれの値は一定に維持される。
【０２４３】
なお、この時点t0は、上記下流側フィードバック実行条件が成立しなくなるとともに、上記学習実行条件が成立しなくなる時点であり、本明細書において、第１時点とも呼ばれる時点である。
【０２４４】
そして、時点t1になると、運転者がアクセルペダル８１を踏み込むことによりスロットル弁開度ＴＡが閾値開度β以上の所定開度ＴＡ１に一致する。従って、上記第１実施形態と同様に、この時点t1にてＣＰＵ７１が図６のルーチンの処理を実行することにより、燃料カットフラグＸＦＣの値が「０」に変更される。これにより、燃料増量条件が成立する。
【０２４５】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図７〜図１０の各ルーチンの処理を実行する。その結果、燃料増量フラグＸＲＣの値及び上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に変更される。一方、下流側ＦＢ制御実行フラグＸＳＦＢの値及び学習実行フラグＸＧの値は、それぞれ「０」に維持される。
【０２４６】
加えて、ＣＰＵ７１は、上記図１４のルーチンの処理を実行する。この時点t1では、下流側ＦＢ制御実行フラグＸＳＦＢの値が「０」に維持されているので、上述した燃料カット期間Ｔｆｃの場合と同様に、下流側ＦＢ補正量Vafsfbは「０」に設定される。更に、時間積分値SDVoxs、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbのそれぞれの値は一定に維持される。
【０２４７】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図１１及び図１２の各ルーチンの処理を実行する。この時点t1では、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に設定されているので、上流側空燃比センサ６６の出力値Vabyfsと下流側ＦＢ学習補正量Gsfb（時点t0から一定に維持されている値）とに基づいて上流側ＦＢ補正量DFiは算出される。上述したように、下流側ＦＢ補正量Vafsfbは、「０」に設定されているので、上流側ＦＢ補正量DFiの算出に実質的に使用されない。
【０２４８】
加えて、燃料増量フラグＸＲＣの値が「１」に設定されているので、燃料増量用空燃比AFrcに対応する基本燃料噴射量Firと算出された上流側ＦＢ補正量DFiとに基づいて決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号が送出される。即ち、燃料増量制御が行われるとともに、上流側ＦＢ制御のみが行われる（下流側ＦＢ制御は行われない。）。
【０２４９】
以上の処理は、燃料増量条件が不成立となる時点t2まで繰り返し実行される。従って、図１５に示した燃料増量期間（時点t1〜時点t2）Ｔｒｃにおいては、燃料カット期間Ｔｆｃの場合と同様に、ステップ１４２０、ステップ１４３０及びステップ１４４５の処理が実行されないので、時間積分値SDVoxs、下流側ＦＢ補正量Vafsfb及び下流側ＦＢ学習補正量Gsfbのそれぞれの値は一定に維持される。
【０２５０】
次いで、時点t2になると、燃料増量フラグＸＲＣの値が「０」から「１」に変化してから上記燃料増量時間τrcが経過することにより燃料増量条件が不成立となる。従って、上記第１実施形態と同様に、この時点t2にてＣＰＵ７１が図７のルーチンの処理を実行することにより、燃料増量フラグＸＲＣの値が「０」に変更される。
【０２５１】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図８〜図１０の各ルーチンの処理を実行する。その結果、下流側ＦＢ制御実行フラグＸＳＦＢの値が「１」に変更される。一方、上流側ＦＢ制御実行フラグＸＭＦＢの値は「１」に維持される。更に、この時点t2では、上記第１実施形態と同様に、下流側空燃比センサ６７の出力値Voxsが上記閾値出力値Voxsref以下であるので、学習実行フラグＸＧの値は「０」に維持される。
【０２５２】
加えて、ＣＰＵ７１は、上記図１４のルーチンの処理を実行する。この時点t2では、ＣＰＵ７１が図１４の下流側ＦＢ補正量算出ルーチンの処理を開始してステップ１４１０に進んだとき、ＣＰＵ７１は、同ステップ１４１０にて「Ｙｅｓ」と判定してステップ１４１５及びステップ１４２０の各ステップに進み、出力偏差DVoxsを算出するとともに時間積分値SDVoxsを算出された出力偏差DVoxsに基づいて更新する。
【０２５３】
次いで、ＣＰＵ７１は、学習実行フラグＸＧの値が「１」であるか否かを判定するステップ１４２５に進み、同ステップ１４２５にて「Ｎｏ」と判定してステップ１４４０以降のステップに進み、下流側ＦＢ補正量Vafsfbを算出（更新）した後、図１４のルーチンを一旦終了する。
【０２５４】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図１１及び図１２の各ルーチンの処理を実行する。この時点t2では、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に設定されているので、上流側空燃比センサ６６の出力値Vabyfsと下流側ＦＢ学習補正量Gsfb（時点t0から一定に維持されている値）と上記図１４のルーチンにて算出された下流側ＦＢ補正量Vafsfbとに基づいて上流側ＦＢ補正量DFiが算出される。
【０２５５】
加えて、燃料カットフラグＸＦＣの値及び燃料増量フラグＸＲＣの値が共に「０」に設定されているので、理論空燃比AFstに対応する基本燃料噴射量Fisと算出された上流側ＦＢ補正量DFiとに基づいて決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号が送出される。
【０２５６】
以上の処理は、時点t3まで繰り返し実行される。従って、図１５に示した過渡期間（時点t2〜時点t3）Ｔｋにおいては、ステップ１４２０及びステップ１４４５の処理が実行されるので、その過渡期間Ｔｋにおける出力偏差DVoxsに基づいて時間積分値SDVoxsが更新され（図１５の曲線Ｃ３を参照。）、更新された時間積分値SDVoxsに基づいて下流側ＦＢ補正量Vafsfbが算出される。これにより、過渡期間Ｔｋ中の下流側ＦＢ補正量Vafsfbを、過渡期間Ｔｋにおける出力偏差DVoxsが反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。
【０２５７】
一方、過渡期間Ｔｋにおいては、ステップ１４３０の処理が実行されないので、下流側ＦＢ学習補正量Gsfbの値は一定に維持される。
【０２５８】
そして、上述した期間Ａの場合と同様に、上流側空燃比センサ６６の出力値Vabyfsと、上流側目標空燃比abyfr(k-N)と、下流側ＦＢ補正量Vafsfbと、下流側ＦＢ学習補正量Gsfbと、に基づいて上流側ＦＢ補正量DFiが決定される（即ち、上流側ＦＢ制御及び下流側ＦＢ制御の両方が行われる）。この結果、過渡期間Ｔｋにおいて下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
【０２５９】
そして、時点t3になると、上記第１実施形態と同様に、下流側空燃比センサ６７の出力値Voxsが上記閾値出力値Voxsrefを超える。従って、上記第１実施形態と同様に、この時点t3にてＣＰＵ７１が図１０のルーチンの処理を実行することにより、学習実行フラグＸＧの値が「１」に変更される。
【０２６０】
加えて、ＣＰＵ７１は、上記図１４のルーチンの処理を実行する。この時点t3では、ＣＰＵ７１が図１４の下流側ＦＢ補正量算出ルーチンの処理を開始してステップ１４０５に進んだとき、ＣＰＵ７１は、同ステップ１４０５にて「Ｙｅｓ」と判定してステップ１４７０に進む。
【０２６１】
そして、ＣＰＵ７１は、時間積分値SDVoxsを時点t0において上記ステップ１４６５にて設定された時間積分値の記憶値SDVoxs0に設定する。これにより、時間積分値SDVoxsは、学習条件不成立期間（時点t0〜時点t3）における出力偏差DVoxsとは無関係な値である学習条件不成立期間の開始時点t0における時間積分値SDVoxs（＝SDVoxs0）に設定される。
【０２６２】
次いで、ＣＰＵ７１は、ステップ１４１０に進み、同ステップ１４１０にて「Ｙｅｓ」と判定してステップ１４１５及びステップ１４２０の各ステップに進み、出力偏差DVoxsを算出するとともに時間積分値SDVoxsを算出された出力偏差DVoxsに基づいて更新する。
【０２６３】
次に、ＣＰＵ７１は、学習実行フラグＸＧの値が「１」であるか否かを判定するステップ１４２５に進み、同ステップ１４２５にて「Ｙｅｓ」と判定してステップ１４３０及びステップ１４３５の各ステップに進み、下流側ＦＢ学習補正量Gsfbを更新するとともに時間積分値SDVoxsを補正する。即ち、下流側ＦＢ学習補正量Gsfbの更新が再開させられる。
その後、ＣＰＵ７１は、ステップ１４４０以降のステップに進んで、下流側ＦＢ補正量Vafsfbを算出した後、図１４のルーチンを一旦終了する。
【０２６４】
更に、上記第１実施形態と同様に、ＣＰＵ７１は、図１１及び図１２の各ルーチンの処理を実行する。この時点t3では、上流側ＦＢ制御実行フラグＸＭＦＢの値が「１」に設定されているので、上流側空燃比センサ６６の出力値Vabyfsと上記図１４のルーチンにて更新された下流側ＦＢ学習補正量Gsfb及び下流側ＦＢ補正量Vafsfbとに基づいて上流側ＦＢ補正量DFiが算出される。
【０２６５】
加えて、燃料カットフラグＸＦＣの値及び燃料増量フラグＸＲＣの値が共に「０」に設定されているので、理論空燃比AFstに対応する基本燃料噴射量Fisと算出された上流側ＦＢ補正量DFiとに基づいて決定された燃料噴射量Fiの燃料が噴射されるようにインジェクタ３９に対して噴射指示信号が送出される。即ち、上流側ＦＢ制御及び下流側ＦＢ制御が共に行われる。
【０２６６】
なお、この時点t3は、時点t0にて成立しなくなった学習実行条件が再び成立する時点であり、本明細書において、第２時点とも呼ばれる時点である。
【０２６７】
このように、図１５に示した時点t3以降の期間Ｂにおいては、過渡期間Ｔｋにおける場合と同様に、ステップ１４２０及びステップ１４４５の処理が実行されるので、期間Ｂにおける出力偏差DVoxsに基づいて時間積分値SDVoxsが更新され、更新された時間積分値SDVoxsに基づいて下流側ＦＢ補正量Vafsfbが算出される。更に、期間Ｂにおいては、過渡期間Ｔｋにおける場合と異なり、ステップ１４３０の処理も実行されるので、更新された時間積分値SDVoxsに基づいて下流側ＦＢ学習補正量Gsfbが更新（算出）される。
【０２６８】
そして、過渡期間Ｔｋと同様に、上流側空燃比センサ６６の出力値Vabyfsと、上流側目標空燃比abyfr(k-N)と、下流側ＦＢ補正量Vafsfbと、下流側ＦＢ学習補正量Gsfbと、に基づいて上流側ＦＢ補正量DFiが決定される。この結果、下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
更に、時間積分値SDVoxs及び下流側ＦＢ学習補正量Gsfbには、学習条件不成立期間（燃料カット期間Ｔｆｃ、燃料増量期間Ｔｒｃ及び過渡期間Ｔｋ）における出力偏差DVoxsが反映されていないので、下流側ＦＢ学習補正量Gsfbが適切に更新される。その結果、空燃比を適切に制御することができる。
【０２６９】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第２実施形態によれば、上記第１実施形態と同様に、過渡期間Ｔｋにおいて、過渡期間Ｔｋにおける出力偏差DVoxsに基づいて時間積分値SDVoxsが更新され、更新された時間積分値SDVoxsに基づいて下流側ＦＢ補正量Vafsfbが算出される。これにより、過渡期間Ｔｋ中の下流側ＦＢ補正量Vafsfbを、過渡期間Ｔｋにおける出力偏差DVoxsが反映されない時間積分値に基づいて算出する場合よりも適切に算出することができる。この結果、過渡期間Ｔｋにおいて、下流側空燃比を下流側目標空燃比に迅速に一致させることができる。
【０２７０】
更に、上記第２実施形態によれば、学習条件不成立期間（燃料カット期間Ｔｆｃ、燃料増量期間Ｔｒｃ及び過渡期間Ｔｋ）において、下流側ＦＢ学習補正量Gsfbは一定に維持される。加えて、学習条件不成立期間の終了時点t3にて、時間積分値SDVoxsは、学習条件不成立期間における出力偏差DVoxsとは無関係な所定の値（即ち、学習条件不成立期間の開始時点t0における時間積分値SDVoxs）に設定される。これにより、学習条件不成立期間（特に、過渡期間Ｔｋ）における出力偏差が下流側ＦＢ学習補正量Gsfbに反映されることを回避できるので、下流側ＦＢ学習補正量Gsfbが不適切な値となることを防止することができる。この結果、上流側空燃比センサ６６の出力ズレを適切に補償することができ、内燃機関１０の実際の空燃比を目標とする空燃比に確実に一致させることができる。
【０２７１】
なお、上記第２実施形態は、第２時点（時点t3）の時間積分値SDVoxsに設定される値であって学習条件不成立期間における出力偏差DVoxsとは無関係な所定の値として、第１時点（時点t0）における時間積分値SDVoxsを採用していたが、第１時点（時点t0）における時間積分値SDVoxsに所定の係数を乗じた値を採用してもよい。また、上記第２実施形態は、第２時点（時点t3）にて時間積分値SDVoxsに設定される時間積分値の記憶値SDVoxs0として第１時点（時点t0）の時間積分値SDVoxsを格納するように構成されていたが、時点t0〜時点t2の期間中、時間積分値SDVoxsが更新されないので、時点t0〜時点t2の期間中の所定の時点の時間積分値SDVoxsを格納するように構成されていてもよい。
【０２７２】
また、本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上流側ＦＢ補正量を算出するためのルーチン（図１２）及び下流側ＦＢ補正量を算出するためのルーチン（図１３及び図１４）をそれぞれ実行するタイミングは、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来するタイミングであってもよい。
また、上記各実施形態においては、下流側ＦＢ補正量Vafsfbは、比例項、積分項及び微分項からなっていたが、比例項及び積分項のみからなっていてもよい。
【０２７３】
加えて、上記各実施形態は、燃料増量期間Ｔｒｃの開始時点（即ち、燃料カット期間Ｔｆｃの終了時点）t1にて上流側ＦＢ制御実行フラグＸＭＦＢの値を「１」に変更する（図８のステップ８１５）ことにより上流側ＦＢ制御を再開させるように構成されていたが、燃料増量期間Ｔｒｃにおいて燃料増量用空燃比AFrcを有する混合ガスが内燃機関１０に供給されることにより上流側空燃比センサ６６の出力値Vabyfsが所定の閾値（例えば、理論空燃比に対応する理論空燃比対応出力値Vst）よりも小さくなったとき、上流側ＦＢ制御実行フラグＸＭＦＢの値を「１」に変更することにより上流側ＦＢ制御を再開させるように構成されていてもよい。更に、過渡期間Ｔｋを燃料増量期間Ｔｒｃの終了時点から所定時間が経過したときに終了してもよい。
【０２７４】
また、上記各実施形態が適用される過渡期間は、燃料カット期間Ｔｆｃに続く燃料増量期間Ｔｒｃ後の過渡期間Ｔｋに限定されることはなく、内燃機関１０の目標空燃比が理論空燃比と比較的大きく異なる空燃比に設定された後に理論空燃比に設定された時点から所定の過渡時間が経過するまでの過渡期間であればよい。
【図面の簡単な説明】
【０２７５】
【図１】上流側ＦＢ制御及び下流側ＦＢ制御の実行の有無、下流側ＦＢ学習補正量の更新の有無、燃料噴射量、下流側空燃比センサの出力値、出力偏差の時間積分値及び下流側ＦＢ学習補正量の時間に対する変化を示したタイムチャートである。
【図２】本発明の第１実施形態に係る内燃機関の空燃比制御装置を内燃機関に適用したシステムの概略構成図である。
【図３】図２に示した上流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図４】図２に示した下流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図５】各種のフラグ、燃料噴射量、上流側空燃比センサの出力値、下流側空燃比センサの出力値及び出力偏差の時間積分値の時間に対する変化を示したタイムチャートである。
【図６】図２に示したＣＰＵが実行する燃料カットを実行するか否かを決定するためのルーチンを示したフローチャートである。
【図７】図２に示したＣＰＵが実行する燃料増量制御を実行するか否かを決定するためのルーチンを示したフローチャートである。
【図８】図２に示したＣＰＵが実行する上流側ＦＢ制御を実行するか否かを決定するためのルーチンを示したフローチャートである。
【図９】図２に示したＣＰＵが実行する下流側ＦＢ制御を実行するか否かを決定するためのルーチンを示したフローチャートである。
【図１０】図２に示したＣＰＵが実行する下流側ＦＢ学習補正量の更新を行うか否かを決定するためのルーチンを示したフローチャートである。
【図１１】図２に示したＣＰＵが実行する燃料噴射量の算出及び燃料の噴射指示を行うためのルーチンを示したフローチャートである。
【図１２】図２に示したＣＰＵが実行する上流側ＦＢ補正量を算出するためのルーチンを示したフローチャートである。
【図１３】図２に示したＣＰＵが実行する下流側ＦＢ補正量を算出するためのルーチンを示したフローチャートである。
【図１４】本発明の第２実施形態に係る内燃機関の空燃比制御装置のＣＰＵが下流側ＦＢ補正量を算出するために図１３に示したルーチンに代えて実行するルーチンを示したフローチャートである。
【図１５】各種のフラグ、燃料噴射量、上流側空燃比センサの出力値、下流側空燃比センサの出力値及び出力偏差の時間積分値の時間に対する変化を示したタイムチャートである。
【符号の説明】
【０２７６】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、４３…スロットル弁、５２…エキゾーストパイプ、５３…三元触媒（第１触媒）、６６…上流側空燃比センサ、６７…下流側空燃比センサ、６８…アクセル開度センサ、７０…電気制御装置、７１…ＣＰＵ、７３…ＲＡＭ、８１…アクセルペダル。
【図１】
2008031929.tif 000003
【図２】
2008031929.tif 000004
【図３】
2008031929.tif 000005
【図４】
2008031929.tif 000006
【図５】
2008031929.tif 000007
【図６】
2008031929.tif 000008
【図７】
2008031929.tif 000009
【図８】
2008031929.tif 000010
【図９】
2008031929.tif 000011
【図１０】
2008031929.tif 000012
【図１１】
2008031929.tif 000013
【図１２】
2008031929.tif 000014
【図１３】
2008031929.tif 000015
【図１４】
2008031929.tif 000016
【図１５】
2008031929.tif 000017