(57)【要約】      （修正有）【課題】学習値の更新機会の増大による学習を短期間に終了し、エミッションをより改善すること。【解決手段】触媒５３下流に配設された下流側空燃比センサ６７の出力値に基づいてサブフィードバック量を算出し、燃料供給制御（通常制御）を行う。更に、サブフィードバック量の学習値をサブフィードバック制御中に更新する学習を行う。但し、フューエルカット制御中、フューエルカット復帰後増量制御中、及び、フューエルカット制御の終了時点以降において通常制御が実行される期間が学習禁止期間よりも長くなるまでの期間において学習を禁止する。加えて、フューエルカット制御が実行されている時間が長くなるほど学習禁止期間が長くなるように、学習禁止期間を変更する。【選択図】図１
2014074335.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記排気通路であって前記触媒よりも下流側の部位に配設されるとともに同配設された部位を流れるガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
前記下流側空燃比センサの出力値を下流側目標値に一致させるための下流側フィードバック量を同下流側空燃比センサの出力値に基づいて更新するフィードバック部と、
前記下流側フィードバック量が更新されている期間において前記下流側フィードバック量に応じた値に基づいて下流側フィードバック量の学習値を更新する学習を行う学習部と、
前記下流側フィードバック量及び前記学習値に基づき前記機関に供給される燃料の量を制御する通常制御を実行するとともに、前記機関の運転状態がフューエルカット実行条件を満たしている期間において前記機関への燃料の供給を停止するフューエルカット制御を前記通常制御に代えて実行する燃料供給制御部と、
前記フューエルカット制御が実行されている期間、及び、前記フューエルカット制御の終了時点以降に前記通常制御が実行される期間が学習禁止期間よりも長くなるまでの期間、において前記学習を禁止するとともに、前記通常制御が実行される期間が前記学習禁止期間以上となった時点以降において前記学習を許可する学習許可部と、
を備えた内燃機関の燃料供給制御装置において、
前記学習許可部は、
前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように、前記学習禁止期間を変更するように構成された燃料供給制御装置。
【請求項２】
請求項１に記載の内燃機関の燃料供給制御装置において、
前記学習許可部は、
前記通常制御が実行されている期間において吸入空気量に対応する値を積算することにより積算吸入空気量を算出するとともに、前記フューエルカット制御が実行されている期間において前記積算吸入空気量を所定の比率にて減少させ、前記積算吸入空気量が所定の閾値空気量以上であるとき前記学習を許可することにより、前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように前記学習禁止期間を変更する燃料供給制御装置。
【請求項３】
請求項２に記載の内燃機関の燃料供給制御装置において、
前記燃料供給制御部は、
前記フューエルカット制御が実行されている期間において増量条件が満たされた場合、前記フューエルカット制御の終了時点からの所定期間に渡り前記通常制御に代えて前記機関に供給される混合気の空燃比が理論空燃比よりも小さいリッチ空燃比となるように前記機関に供給される燃料の量を制御する増量制御を実行するように構成され、
前記学習許可部は、
前記フューエルカット制御の終了時点から前記増量制御が実行される場合には前記積算吸入空気量を前記閾値空気量よりも小さい一定値に設定するように構成された、
燃料供給制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気通路に設けられた触媒（排気浄化触媒、三元触媒）の下流側に配設された空燃比センサ（下流側空燃比センサ）の出力値に基づき前記機関に供給される燃料の量を制御する燃料供給制御装置に関する。
【背景技術】
【０００２】
従来から、内燃機関の排気通路の上流から下流に向け上流側空燃比センサ、触媒及び下流側空燃比センサを備えるとともに、上流側空燃比センサの出力値と下流側空燃比センサの出力値とに基づいて前記機関に供給される混合気の空燃比（以下、単に「機関の空燃比」と称呼することもある。）を制御する制御装置が広く採用されている。
【０００３】
より具体的に述べると、従来の制御装置（以下、「従来装置」とも称呼する。）の一つは、下流側空燃比センサの出力値を下流側目標値に一致させるためのサブフィードバック量を算出する。更に、従来装置は、サブフィードバック量に基づいてサブフィードバック量の学習値（以下、単に「学習値」とも称呼する。）を更新する「学習」を行う。学習値はサブフィードバック量の定常成分に応じた値である。そして、従来装置は、上流側空燃比センサの出力値と、サブフィードバック量と、学習値と、に基づいて機関の空燃比（例えば、燃料噴射量）を制御するようになっている。
【０００４】
上述の学習値は、一般に、バックアップＲＡＭ（スタンバイＲＡＭ）又はＥＥＰＲＯＭ等の不揮発性メモリに格納される。従って、例えば、下流側空燃比センサが活性化するまでの期間、及び、下流側空燃比センサの活性化に伴ってサブフィードバック制御が開始された時点からサブフィードバック量が定常値近傍に至る時点までの期間、サブフィードバック量の定常値からのズレを学習値によって補償することができる。その結果、サブフィードバック制御の開始前及び同制御の開始後においても、機関の空燃比を適正値近傍の空燃比に制御することができる。
【０００５】
ところが、例えば、バッテリが車両から取り外された場合及びバッテリが放電してしまった場合等においてバックアップＲＡＭに格納されている学習値は消滅する（破壊される）。また、何らかの電気ノイズ等によりバックアップＲＡＭ内又は不揮発性メモリ内の学習値が消滅する場合もある。このような場合、学習値は初期値（デフォルト値）に戻されるから、学習値を早期に適正値に近づける（即ち、学習を早期に完了させる）ことが好ましい。
【０００６】
ところで、前記機関の減速時等において前記機関への燃料供給が停止されるフューエルカット制御が実行された場合、触媒に多量の酸素が流入する。この結果、フューエルカット制御が実行されている期間及びフューエルカット制御の終了時点から所定期間が経過するまでの期間、触媒下流の空燃比は機関の空燃比の平均値から乖離する。このため、従来装置は、フューエルカット制御が実行されている期間及びフューエルカット制御の終了後から一定期間が経過するまで、学習値の更新を停止（禁止）している（特許文献１を参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１０４９７８号公報
【発明の概要】
【０００８】
しかしながら、フューエルカット制御が頻繁に実行されると、学習値の更新機会が減少するので、学習値が適正値に到達する時点が遅れ、その結果、エミッションが悪化する場合がある。
【０００９】
本発明は、上記課題に対処するためになされたものである。即ち、本発明の目的は、フューエルカット制御が頻繁に実行される場合であっても、学習値の更新機会をできるだけ増大させることによって学習を短期間で完了させることが可能であり、それにより、エミッションをより改善することが可能な燃料供給制御装置を提供することにある。
【００１０】
具体的に述べると、本発明による内燃機関の燃料供給制御装置は、触媒と、下流側空燃比センサと、フィードバック部と、学習部と、燃料供給制御部と、学習許可部と、を備える。
【００１１】
前記触媒は、前記内燃機関の排気通路に配設される。
前記下流側空燃比センサは、前記排気通路であって前記触媒よりも下流側の部位に配設され、配設された部位を流れるガスの空燃比に応じた出力値を出力する。
【００１２】
前記フィードバック部は、前記下流側空燃比センサの出力値を下流側目標値に一致させるための下流側フィードバック量を、その下流側空燃比センサの出力値に基づいて更新する。
【００１３】
前記学習部は、前記下流側フィードバック量が更新されている期間において前記下流側フィードバック量に応じた値に基づいて「下流側フィードバック量の学習値」を更新する学習を行う。
【００１４】
前記燃料供給制御部は、少なくとも「通常制御及びフューエルカット制御」を行なう。
前記通常制御は、前記下流側フィードバック量及び前記学習値に基づき前記機関に供給される燃料の量を制御する燃料供給制御である。
前記フューエルカット制御は、前記機関の運転状態がフューエルカット実行条件を満たしている期間において前記機関への燃料の供給を停止する燃料供給制御である。
【００１５】
前記学習許可部は、「前記フューエルカット制御が実行されている期間」及び「前記フューエルカット制御の終了時点以降において前記通常制御が実行される期間が学習禁止期間よりも長くなるまでの期間」、において前記学習を禁止する。更に、前記学習許可部は、前記通常制御が実行される期間が前記学習禁止期間以上となった時点以降において前記学習を許可する。加えて、前記学習許可部は、前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように、前記学習禁止期間を変更する。
【００１６】
フューエルカット制御が実行されたとしても、そのフューエルカット制御の時間が短時間であれば、そのフューエルカット制御中に触媒に流入する酸素の量はそれ程多くはない。従って、短時間のフューエルカット制御の終了後においては、比較的短時間にて触媒の状態（触媒の酸素吸蔵量）は定常状態へと復帰する。換言すると、短時間のフューエルカット制御の終了後においては、比較的短時間内に触媒下流の排ガスの空燃比が定常状態における空燃比となる。
【００１７】
よって、上記構成のように、フューエルカット制御が実行されている時間が長くなるほど学習禁止期間が長くなるように学習禁止期間を変更することによって、フューエルカット制御の時間が短い場合にはフューエルカット制御の終了後において学習を比較的早期に開始することができる。この結果、学習値が適正値に早期に近づくので、エミッションをより改善することができる。
【００１８】
この場合、前記学習許可部は、前記通常制御が実行されている期間において吸入空気量（前記機関の吸入空気量）に対応する値を積算することにより積算吸入空気量を算出する。更に、前記学習許可部は、前記フューエルカット制御が実行されている期間において前記積算吸入空気量を所定の比率（単位時間あたりに所定量ずつの意であり、例えば、吸入空気量に応じた比率）にて減少させる。そして、前記学習許可部は、前記積算吸入空気量が所定の閾値空気量以上であるとき前記学習値の更新を許可する。これにより、前記学習許可部は、前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように前記学習禁止期間を変更する。換言すると、前記学習制御部は、前記フューエルカット制御が実行されている時間が短いほど前記学習禁止期間が短くなるように前記学習禁止期間を変更する。
【００１９】
このように算出される積算吸入空気量は、フューエルカット制御の時間が長いほど小さい値となる。一方、フューエルカット制御の終了後において積算吸入空気量が閾値空気量に到達していれば、積算吸入空気量が閾値空気量に到達するまでの間に通常制御によって触媒の状態が定常状態に近い状態に戻されていて、フューエルカット制御の影響は殆ど消滅していると判断することができる。よって、上記構成によれば、フューエルカット制御が学習に及ぼす悪影響を排除しながら、フューエルカット制御の終了後において学習を比較的早期に開始することができる。この結果、学習値が適正値に早期に近づくので、エミッションをより改善することができる。
【００２０】
加えて、前記燃料供給制御部は、前記フューエルカット制御が実行されている期間において増量条件が満たされた場合、前記フューエルカット制御の終了時点からの所定期間に渡り前記通常制御に代えて「前記機関に供給される混合気の空燃比が理論空燃比よりも小さいリッチ空燃比となるように燃料供給量を制御する増量制御」を実行するように構成され得る。
【００２１】
これにより、フューエルカット制御の終了後において多量の未燃物が触媒に流入するので、触媒の状態を速やかに定常状態へと戻すことができる。
【００２２】
この場合、前記学習許可部は、前記フューエルカット制御の終了時点から前記増量制御が実行される場合には、前記積算吸入空気量を前記閾値空気量よりも小さい一定値（例えば、「０」）に設定するように構成されることが望ましい。
【００２３】
増量制御が実行される場合は、「フューエルカット制御によって触媒の酸素吸蔵量が非常に大きくなり、その後、増量制御によって触媒の酸素吸蔵量が急速に低下させられる場合」である。よって、そのような場合、フューエルカット制御の終了後から前記通常制御がある程度の時間以上に渡って実行されなければ、触媒の状態は定常状態へと戻らない。従って、上記構成のように、増量制御が実行される場合、積算吸入空気量を一定値へと戻すことにより、フューエルカット制御の長短に依らず、フューエルカット制御終了後における学習の開始時点を適切な時点に設定することができる。その結果、誤学習を招く可能性を低減することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態に係る燃料供給制御装置を適用した内燃機関の概略図である。
【図２】空燃比と図１に示した上流側空燃比センサの出力値との関係を示したグラフである。
【図３】空燃比と図１に示した下流側空燃比センサの出力値との関係を示したグラフである。
【図４】図１に示した燃料供給制御装置の作動を示すタイムチャートである。
【図５】図１に示したＣＰＵが実行する「燃料噴射ルーチン」を示したフローチャートである。
【図６】図１に示したＣＰＵが実行する「フューエルカット開始判定ルーチン」を示したフローチャートである。
【図７】図１に示したＣＰＵが実行する「酸素吸蔵量算出ルーチン」を示したフローチャートである。
【図８】図１に示したＣＰＵが実行する「フューエルカット復帰後増量要求判定ルーチン」を示したフローチャートである。
【図９】図１に示したＣＰＵが実行する「フューエルカット終了判定ルーチン」を示したフローチャートである。
【図１０】図１に示したＣＰＵが実行する「フューエルカット復帰後増量終了判定ルーチン」を示したフローチャートである。
【図１１】図１に示したＣＰＵが実行する「メインフィードバック量算出ルーチン」を示したフローチャートである。
【図１２】図１に示したＣＰＵが実行する「サブフィードバック量及び学習値の算出ルーチン」を示したフローチャートである。
【図１３】図１に示したＣＰＵが実行する「積算吸入空気量算出ルーチン」を示したフローチャートである。
【図１４】図１に示したＣＰＵが実行する「学習許可フラグ設定ルーチン」を示したフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明による内燃機関の燃料供給制御装置（以下、単に「制御装置」と称呼する。）の実施形態について図面を参照しながら説明する。この制御装置は、内燃機関の空燃比を制御する空燃比制御装置でもあり、更に、燃料噴射量を制御する燃料噴射量制御装置でもある。
【００２６】
（構成）
図１は、この制御装置を４サイクル火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。なお、図１は、特定気筒の断面のみを示しているが、他の気筒も同様な構成を備えている。
【００２７】
この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排ガスを外部に放出するための排気系統５０と、を含んでいる。
【００２８】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより同クランク軸２４が回転するようになっている。シリンダ２１の壁面及びピストン２２の上面は、シリンダヘッド部３０の下面とともに燃焼室２５を形成している。
【００２９】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともに同インテークカムシャフトの位相角及びリフト量を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００３０】
吸気系統４０は、吸気ポート３１に連通し同吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２及び吸気管４１内にあって吸気通路の開口断面積を可変とするスロットルバルブ４３を備えている。スロットルバルブ４３は、ＤＣモータからなるスロットルバルブアクチュエータ４３ａにより吸気管４１内で回転駆動されるようになっている。
【００３１】
排気系統５０は、各気筒の排気ポート３４に一端が接続された複数の枝部を含むエキゾーストマニホールド５１、各エキゾーストマニホールド５１の枝部の他端であって総ての枝部が集合している集合部に接続されたエキゾーストパイプ５２、エキゾーストパイプ５２に配設された上流側触媒５３、及び、上流側触媒５３よりも下流のエキゾーストパイプ５２に配設された下流側触媒５４を備えている。排気ポート３４、エキゾーストマニホールド５１及びエキゾーストパイプ５２は、排気通路を構成している。
【００３２】
上流側触媒５３及び下流側触媒５４のそれぞれは、所謂、白金等の貴金属からなる活性成分を担持する三元触媒装置（排気浄化触媒）である。各触媒は、各触媒に流入するガスの空燃比が理論空燃比であるとき、ＨＣ，ＣＯなどの未燃成分を酸化するとともに窒素酸化物（ＮＯｘ）を還元する機能を有する。この機能は触媒機能とも称呼される。更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有し、この酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。この酸素吸蔵機能は、触媒に担持されているセリア（ＣｅＯ２）によってもたらされる。
【００３３】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、上流側空燃比センサ６６、下流側空燃比センサ６７及びアクセル開度センサ６８を備えている。
【００３４】
エアフローメータ６１は、吸気管４１内を流れる吸入空気の質量流量Ｇａに応じた信号を出力するようになっている。
スロットルポジションセンサ６２は、スロットルバルブ４３の開度（スロットル弁開度）を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００３５】
カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。
クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置７０によって機関回転速度ＮＥ（内燃機関１０の回転速度）に変換される。
水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
【００３６】
上流側空燃比センサ６６は排気通路に配設されている。上流側空燃比センサ６６の配設位置は、エキゾーストマニホールド５１の枝部の集合部又はその集合部よりも下流側である。上流側空燃比センサ６６は限界電流式の酸素濃度センサである。上流側空燃比センサ６６は、図２に示したように、「被検出ガス」の空燃比Ａ／Ｆに応じた電圧である出力値Vabyfsを出力するようになっている。従って、本例において、上流側空燃比センサ６６は、排気通路であって上流側空燃比センサ６６が配設されている部位を流れるガスの空燃比（従って、上流側触媒５３に流入するガスの空燃比、及び、内燃機関１０に供給される混合気の空燃比）に応じた出力値Vabyfsを発生するようになっている。
【００３７】
この出力値Vabyfsは、被検出ガスの空燃比が理論空燃比であるときに値Vstoichに一致する。出力値Vabyfsは、被検出ガスの空燃比が大きくなる（リーンとなる）ほど増大する。即ち、上流側空燃比センサ６６は、被検出ガスの空燃比の変化に対して出力が連続的に変化する広域空燃比センサである。
【００３８】
後述する電気制御装置７０は、図２に示したテーブル（マップ）Mapabyfsを記憶していて、そのテーブルMapabyfsに実際の出力値Vabyfsを適用することによって空燃比を検出する（検出空燃比abyfsを取得する）ようになっている。以下、上流側空燃比センサの出力値VabyfsとテーブルMapabyfsとによって取得される空燃比を、上流側空燃比abyfsとも称呼する。
【００３９】
下流側空燃比センサ６７は、排気通路であって上流側触媒５３よりも下流側であり且つ下流側触媒５４よりも上流側（即ち、上流側触媒５３と下流側触媒５４との間の排気通路）に配設されている。下流側空燃比センサ６７は、周知の起電力式の酸素濃度センサ（安定化ジルコニアを用いた周知の濃淡電池型の酸素濃度センサ）である。下流側空燃比センサ６７は、排気通路であって下流側空燃比センサ６７が配設されている部位を流れるガスである被検出ガスの空燃比（従って、下流側触媒５４に流入するガスの空燃比、及び、内燃機関１０に供給される混合気の空燃比の時間的平均値）に応じた出力値Voxsを発生するようになっている。
【００４０】
この出力値Voxsは、図３に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ）となり、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ）となり、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Vst（理論空燃比相当値Vst、例えば、約０．５Ｖ）となる。更に、この出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変し、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００４１】
再び、図１を参照すると、アクセル開度センサ６８は、運転者によって操作されるアクセルペダルＡＰの操作量Accpを表す信号を出力するようになっている。
【００４２】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するプログラム、テーブル（マップ、関数）及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、及び、バックアップＲＡＭ７４並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。
【００４３】
バックアップＲＡＭ７４は、内燃機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭ７４は、バッテリから電力の供給を受けている場合、ＣＰＵ７１の指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。バックアップＲＡＭ７４は、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、ＣＰＵ７１は、バックアップＲＡＭ７４への電力供給が再開されたとき、バックアップＲＡＭ７４に保持されるべきデータを初期化（デフォルト値に設定）するようになっている。
【００４４】
インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するようになっている。更に、インターフェース７５は、ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９及びスロットルバルブアクチュエータ４３ａ等に駆動信号（指示信号）を送出するようになっている。
【００４５】
（制御概要）
次に、上記のように構成された制御装置の作動の概要について図４を参照しながら説明する。
【００４６】
この制御装置は、上流側空燃比センサ６６の出力値Vabyfsに基づいて得られる上流側空燃比abyfsを上流側目標空燃比abyfrに一致させるメインフィードバック制御と、下流側空燃比センサ６７の出力値Voxsを下流側目標値Voxsrefに一致させるサブフィードバック制御と、を含む空燃比フィードバック制御を実行する。この空燃比フィードバック制御は通常制御とも称呼される。上流側目標空燃比abyfrは、通常制御を行なう場合において理論空燃比に設定され、後述するフューエルカット復帰後増量を行う場合において「理論空燃比よりも小さい（リッチな）リッチ空燃比」に設定される。サブフィードバック制御は、上流側空燃比abyfsが理論空燃比に設定されているときに実行される。下流側目標値Voxsrefは理論空燃比に相当する値Vstに設定される。
【００４７】
実際には、制御装置は「上流側空燃比abyfs（又は出力値Vabyfs）」を「下流側空燃比センサ６７の出力値Voxsと下流側目標値Voxsrefとの出力偏差量Dvoxsを小さくするように算出されたサブフィードバック量Vafsfb及びその学習値Vafsfbg」により補正し、それによって「フィードバック制御用空燃比（補正検出空燃比）abyfsc」を算出し、そのフィードバック制御用空燃比abyfscを上流側目標空燃比abyfrに一致させる空燃比フィードバック制御を行う。
【００４８】
更に、制御装置は、フューエルカット実行条件が成立している期間において燃料供給を停止するフューエルカット制御（ＦＣ制御）を行う。
【００４９】
制御装置は、以下のように算出される積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈ以上となったとき、学習値（サブＦＢ学習値）Vafsfbgをサブフィードバック量Vafsfbに基づいて更新する「学習」を行う。サブＦＢ学習値VafsfbgはバックアップＲＡＭ７４に格納される。
【００５０】
積算吸入空気量ＳＧａは、通常制御の実行中において、吸入空気量Ｇａを積算することによって増大させられる。
積算吸入空気量ＳＧａは、フューエルカット制御中、所定の比率（例えば、一定比率又は吸入空気量Ｇａに応じた比率）で減少させられる。
積算吸入空気量ＳＧａは、フューエルカット復帰後増量が実行されるとき、閾値積算吸入空気量ＳＧａｔｈよりも小さい一定値（本例において「０」）に設定される。
【００５１】
図４は、積算吸入空気量ＳＧａの変化の様子を示す例である。図４に示した例においては、時刻ｔ０以前において通常制御が行なわれ、時刻ｔ０にてフューエルカット実行条件が成立する。よって、時刻ｔ０にてフューエルカットフラグＸＦＣの値が「０」から「１」へと変更され、時刻ｔ０以降においてフューエルカット制御が実行される。
【００５２】
更に、時刻ｔ１においてフューエルカット復帰後増量要求が発生し（後述する増量条件が成立し）、それによって、フューエルカット復帰後増量要求フラグＸＲＩＣＨの値が「０」から「１」へと変更される。このとき、積算吸入空気量ＳＧａは、閾値積算吸入空気量Ｇａｔｈよりも小さい一定値（本例において、「０」）に設定される。
【００５３】
更に、時刻ｔ０以降におけるフューエルカット制御によって触媒５３に多量の酸素が流入する。よって、下流側空燃比センサの出力値Voxsは時刻ｔ１と時刻ｔ２との間で「理論空燃比相当値Ｖstよりも大きい値（リッチ出力値）」から「理論空燃比相当値Ｖstよりも小さい値（リーン出力値）」へと変化する。
【００５４】
時刻ｔ２にてフューエルカット実行条件が不成立となり、フューエルカットフラグＸＦＣの値が「０」へと変更される。この後、燃料供給（燃料噴射）が再開される。但し、増量要求フラグＸＲＩＣＨの値が「１」に設定されているから、時刻ｔ２以降においてフューエルカット復帰後増量制御が実行される。フューエルカット復帰後増量中、積算吸入空気量ＳＧａは変更されない。
【００５５】
時刻ｔ３においてフューエルカット復帰後増量要求が消失すると、通常制御が実行される。よって、時刻ｔ３以降において積算吸入空気量ＳＧａは「０」から次第に増大させられる。この積算吸入空気量ＳＧａの変更比率は吸入空気量Ｇａが大きいほど大きくなる。
【００５６】
時刻ｔ４においてフューエルカット実行条件が再び成立する。これにより、フューエルカットフラグＸＦＣの値が「１」に変更され、時刻ｔ４以降においてフューエルカット制御が再び実行される。積算吸入空気量ＳＧａは、フューエルカット制御の実行中において所定の比率（例えば、吸入空気量Ｇａに応じて大きさが大きくなる比率、或いは、一定比率）にて減少させられる。
【００５７】
そして、時刻ｔ５にてフューエルカット実行条件が不成立となり、フューエルカットフラグＸＦＣの値が「０」へと変更される。よって、燃料供給（燃料噴射）が再開される。この場合、増量要求フラグＸＲＩＣＨの値は「０」である。従って、時刻ｔ５以降においてはフューエルカット復帰後増量制御は実行されず、通常制御が実行される。その結果、積算吸入空気量ＳＧａは再び増大して行く。
【００５８】
そして、時刻ｔ６にて積算吸入空気量ＳＧａは閾値積算吸入空気量ＳＧａｔｈに到達する。よって、時刻ｔ６にてサブフィードバック量の学習許可フラグＸkyokaの値が「０」から「１」に変更され、これにより、サブフィードバック量の学習値の更新（学習）が実行される。
【００５９】
時刻ｔ７においてフューエルカット実行条件が再び成立すると、時刻ｔ７以降においてフューエルカット制御が再び実行される。よって、積算吸入空気量ＳＧａは時刻ｔ７以降において減少させられ、時刻ｔ８にて閾値積算吸入空気量ＳＧａｔｈを下回る。その結果、時刻ｔ８にて学習許可フラグＸkyokaの値が「１」から「０」に変更され、これにより、サブフィードバック量の学習値の更新（学習）が禁止される。
【００６０】
更に、時刻ｔ９にてフューエルカット実行条件が不成立となり、フューエルカットフラグＸＦＣの値が「０」へと変更され、通常制御が再開される。よって、時刻ｔ９以降において積算吸入空気量ＳＧａは再び増大し、時刻ｔ１０にて積算吸入空気量ＳＧａは再び閾値積算吸入空気量ＳＧａｔｈを上回る。従って、時刻ｔ１０にてサブフィードバック量の学習許可フラグＸkyokaの値が「０」から「１」に再び変更され、これにより、サブフィードバック量の学習値の更新（学習）が実行される。
【００６１】
以降においても、同様な作動が繰り返される。そして、積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈよりも大きい期間において、サブフィードバック量の学習が実行される。なお、積算吸入空気量ＳＧａは、閾値積算吸入空気量ＳＧａｔｈよりも所定量だけ大きい上限値以上となることがないように、上限値にて制限される。
【００６２】
ところで、図４における破線は従来装置における作動を示している。従来装置は、通常制御の実行中に積算吸入空気量ＳＧａを増加させる点において本発明の実施形態に係る制御装置と同様に作動するが、従来装置はフューエルカット制御が開始される毎に積算吸入空気量ＳＧａを一定値（「０」）にリセットしている。換言すると、従来装置は、フューエルカット制御の時間が長いか否かに関らず、フューエルカット制御の終了時（燃料供給再開時）に積算吸入空気量ＳＧａを一定値（「０」）から増大（積算）させる。そのため、例えば、時刻ｔ６の時点において積算吸入空気量ＳＧａは閾値積算吸入空気量ＳＧａｔｈに到達しないので、学習許可フラグＸkyokaの値は「０」に維持され、サブフィードバック量の学習が行われない。
【００６３】
更に、従来装置は、時刻ｔ７、時刻ｔ１１及び時刻ｔ１３等においてフューエルカット制御が開始される毎に積算吸入空気量ＳＧａを一定値（「０」）に設定する。そのため、時刻ｔ１５になるまで積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈに到達しない。その結果、従来装置によれば、学習が実行されない期間が長くなるので、サブＦＢ学習値が適正値に到達する時点が遅れ、エミッションが悪化する恐れがある。上述したように、本発明の制御装置はこのような事態の発生（学習遅れ）を回避することができる。
【００６４】
（実際の作動）
次に、上記のように構成された空燃比制御装置の実際の作動について説明する。
【００６５】
＜燃料噴射量制御＞
制御装置のＣＰＵ７１は、図５にフローチャートにより示した燃料噴射制御ルーチンを各気筒のクランク角が吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°）に一致する毎に繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、ＣＰＵ７１は、ステップ５００から処理を開始してステップ５０５に進み、フューエルカットフラグＸＦＣが「０」であるか否かを判定する。
【００６６】
このフューエルカットフラグＸＦＣは、その値が「０」のとき、内燃機関１０の運転状態が通常運転状態にあってフューエルカット実行条件を満たす状態でないことを示す。更に、フューエルカットフラグＸＦＣは、その値が「１」のとき、内燃機関１０の運転状態がフューエルカット実行条件を満たす状態であることを示す。フューエルカット制御は、内燃機関１０への燃料の供給（インジェクタ３９からの燃料噴射）を停止する制御である。フューエルカットフラグＸＦＣの値は後述するルーチンにより変更される。フューエルカットフラグＸＦＣの値は図示しないイグニッション・キー・スイッチがオフからオンに変更されたときに実行されるイニシャルルーチンにおいて「０」に設定される。
【００６７】
いま、フューエルカットフラグＸＦＣの値が「０」に設定されていると仮定する。この場合、ＣＰＵ７１はステップ５０５にて「Ｙｅｓ」と判定してステップ５１０に進み、エアフローメータ６１により計測された吸入空気量Ｇａと、クランクポジションセンサ６４からの出力信号により得られる機関回転速度ＮＥと、テーブルMapMc(ＮＥ,Ｇａ)と、に基づいて、今回吸気行程を迎える気筒（以下、「燃料噴射気筒」とも称呼する。）に吸入される吸入空気量（筒内吸入空気量）Ｍｃ（ｋ）を算出する。なお、筒内吸入空気量Ｍｃ（ｋ）は内燃機関１０の吸気通路における空気の挙動をモデル化した周知の空気量推定モデル（空気モデル）を用いて求められてもよい。筒内吸入空気量Ｍｃ（ｋ）は算出される毎に内燃機関１０の絶対クランク角度に対応されながらＲＡＭ７３に格納されて行く。
【００６８】
次に、ＣＰＵ７１はステップ５１５に進み、フューエルカット復帰後増量要求フラグＸＲＩＣＨの値が「０」であるか否かを判定する。この増量要求フラグＸＲＩＣＨは、その値が「１」のとき、機関の空燃比を理論空燃比よりもリッチ側の空燃比に制御する「フューエルカット復帰後増量制御（フューエルカット復帰後の空燃比リッチ制御）」を実行すべき要求があることを示す。更に、増量要求フラグＸＲＩＣＨは、その値が「０」のとき、フューエルカット復帰後増量制御を実行する要求がないことを示す。増量要求フラグＸＲＩＣＨの値は後述するルーチンにより操作される。増量要求フラグＸＲＩＣＨの値は通常運転時においては「０」に設定されている。更に、増量要求フラグＸＲＩＣＨの値はイニシャルルーチンにおいて「０」に設定される。
【００６９】
増量要求フラグＸＲＩＣＨの値が「０」に設定されていると、ＣＰＵ７１はステップ５１５にて「Ｙｅｓ」と判定してステップ５２０に進み、目標空燃比abyfrに理論空燃比stoich（例えば、１４．７）を設定する。その後、ＣＰＵ７１は、以下に述べるステップ５２５乃至ステップ５３５の処理を順に行い、ステップ５９５に進んで本ルーチンを一旦終了する。
【００７０】
ステップ５２５：ＣＰＵ７１は、筒内吸入空気量Ｍｃ（ｋ）を目標空燃比abyfr（この場合、理論空燃比stoich）で除すことによって、基本燃料噴射量Fbaseを求める。この基本燃料噴射量Fbaseは、機関の空燃比を目標空燃比abyfrに一致させるためのフィードフォワード量である。
【００７１】
ステップ５３０：ＣＰＵ７１は、基本燃料噴射量Fbaseに後述するルーチンによって別途求められているフィードバック補正量（メインフィードバック量）ＤＦｉを加えることにより最終燃料噴射量（最終燃料供給量）Ｆｉを求める。
ステップ５３５：ＣＰＵ７１は、最終燃料噴射量Ｆｉの燃料を噴射するための噴射指示信号を燃料噴射気筒に対して設けられているインジェクタ３９に対して送出する。
以上により、最終燃料噴射量Ｆｉの燃料が燃料噴射気筒に供給され、その結果、機関の空燃比は目標空燃比abyfrである理論空燃比stoichに一致するように制御される。
【００７２】
これに対し、ＣＰＵ７１がステップ５１５に進んだとき、増量要求フラグＸＲＩＣＨの値が「１」であると、ＣＰＵ７１はそのステップ５１５にて「Ｎｏ」と判定してステップ５４０に進み、目標空燃比abyfrに目標リッチ空燃比abyfrichを設定する。この目標リッチ空燃比abyfrichは理論空燃比stoichよりもリッチ側の空燃比（理論空燃比よりも小さい空燃比）である（例えば、１３）。その後、ＣＰＵ７１は、前述したステップ５２５乃至ステップ５３５の処理を順に行う。従って、ステップ５２５にて求められる基本燃料噴射量Fbaseが目標リッチ空燃比abyfrichを達成する値（目標空燃比abyfrが理論空燃比stoichである場合よりも大きい値）になるので、空燃比リッチ制御が実行される。
【００７３】
更に、ＣＰＵ７１がステップ５０５に進んだとき、フューエルカットフラグＸＦＣの値が「１」に設定されていると、ＣＰＵ７１はそのステップ５０５にて「Ｎｏ」と判定し、ステップ５９５に直接進んで本ルーチンを一旦終了する。この結果、ステップ５３５の処理が実行されないので、燃料の噴射（供給）が停止し、フューエルカット制御が実行される。
【００７４】
＜フューエルカット開始判定＞
一方、ＣＰＵ７１は、図６に示したフューエルカット開始判定ルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１はステップ６００から処理を開始し、ステップ６１０にてフューエルカット条件（フューエルカット開始条件）が成立したか否かを判定する。
【００７５】
フューエルカット条件は、以下に述べる条件１及び条件２が成立したときにのみ成立する。
（条件１）スロットル弁開度ＴＡが「０（又は所定開度以下）」である。即ち、スロットル弁４４が全閉である。なお、ＣＰＵ７１は、スロットル弁４４の開度を、アクセルペダルの操作量Accpが大きくなるほど大きくなるように制御している。
（条件２）機関回転速度ＮＥがフューエルカット回転速度ＮＥＦＣ以上である。
【００７６】
フューエルカット条件が成立している場合、ＣＰＵ７１はステップ６１０にて「Ｙｅｓ」と判定し、ステップ６２０に進んでフューエルカットフラグＸＦＣの値を「１」に設定する。この結果、前述したように図５のステップ５３５の処理が実行されないので、フューエルカット制御が実行される。これに対し、フューエルカット条件が成立していない場合、ＣＰＵ７１はステップ６１０にて「Ｎｏ」と判定し、ステップ６９５に直接進んで本ルーチンを一旦終了する。
【００７７】
＜酸素吸蔵量推定＞
フューエルカット制御が実行され、その後にフューエルカット制御が終了した時点（フューエルカット復帰時点）では、フューエルカット制御中に触媒５３に流入した酸素により、触媒５３の酸素吸蔵量ＯＳＡが触媒５３の最大酸素吸蔵量Ｃmaxに到達している可能性がある。この場合、ＮＯｘが流入すると、触媒５３はそのＮＯｘを殆ど浄化できない。そこで、フューエルカット制御復帰後においてフューエルカット復帰後増量（以下、「ＦＣ復帰後増量」と表記する。）を必要に応じて実行して触媒５３に未燃物を流入し、触媒５３の酸素吸蔵量ＯＳＡを適正値へと早急に到達（減少）させる。このＦＣ復帰後増量を実行するか否かを判定するパラメータの一つは「触媒５３の酸素吸蔵量ＯＳＡ」である。そこで、ＣＰＵ７１は、図７にフローチャートにより示した「酸素吸蔵量ＯＳＡを推定するルーチン」を所定時間（サンプリング時間tsample）の経過毎に繰り返し実行するようになっている。
【００７８】
より具体的に述べると、ＣＰＵ７１は所定のタイミングにてステップ７００から処理を開始してステップ７０５に進み、フューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。
【００７９】
いま、フューエルカット制御が実行中である（即ち、フューエルカットフラグＸＦＣの値が「１」となっている）と仮定すると、ＣＰＵ７１はステップ７０５にて「Ｎｏ」と判定してステップ７１０に進み、所定時間（サンプリング時間tsample）内における酸素吸蔵量の変化量ΔＯＳＡを下記（１）式に従って計算する。この（１）式は触媒５３に流入するガスの１００％が大気であるという前提に基づいている。
ΔＯＳＡ＝０．２３・Ｇａ    …（１）
【００８０】
この（１）式において、値「０．２３」は大気中に含まれる酸素の重量割合である。Ｇａはサンプリング時間内においてエアフローメータ６１により検出された吸入空気量Ｇａである。なお、（１）式中の値Ｇａは、サンプリング期間中の吸入空気量Ｇａの平均値Ｇａaveに置換されてもよい。
【００８１】
次に、ＣＰＵ７１は以下に述べるステップ７１５乃至ステップ７３５の処理を順に行い、ステップ７９５に進んで本ルーチンを一旦終了する。
【００８２】
ステップ７１５：ＣＰＵ７１は下記（２）式に従って酸素吸蔵量ＯＳＡを更新する。即ち、ＣＰＵ７１は、現時点までに求められている酸素吸蔵量ＯＳＡに前記変化量ΔＯＳＡを加えることにより新たな酸素吸蔵量ＯＳＡを推定する。
ＯＳＡ＝ＯＳＡ＋ΔＯＳＡ    …（２）
【００８３】
ステップ７２０：ＣＰＵ７１は、酸素吸蔵量ＯＳＡが図示しないルーチンにより別途算出されている触媒５３の最大酸素吸蔵量Ｃmax以上であるか否かを判定する。そして、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃmax以上であるとき、ＣＰＵ７１はステップ７２５に進む。これに対し、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃmaxより小さいとき、ＣＰＵ７１はステップ７２０からステップ７３０に直接進む。なお、最大酸素吸蔵量Ｃmaxの推定方法は、例えば、特開２００５−１９４９８１号公報、特開２００６−０５７４６１号公報及び特開２００５−２０７２８６号公報等により周知である。
【００８４】
ステップ７２５：ＣＰＵ７１は、酸素吸蔵量ＯＳＡに最大酸素吸蔵量Ｃmaxを格納し、ステップ７３０に進む。
ステップ７３０：ＣＰＵ７１は、酸素吸蔵量ＯＳＡが「０」以下であるか否かを判定する。そして、酸素吸蔵量ＯＳＡが「０」以下であるとき、ＣＰＵ７１はステップ７３５に進む。これに対し、酸素吸蔵量ＯＳＡが「０」より大きいとき、ＣＰＵ７１はステップ７３０からステップ７９５に直接進んで本ルーチンを一旦終了する。
ステップ７３５：ＣＰＵ７１は、酸素吸蔵量ＯＳＡに「０」を格納し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【００８５】
一方、ＣＰＵ７１がステップ７０５の処理を実行する時点において、フューエルカット制御が実行中でなければフューエルカットフラグＸＦＣの値は「０」となっているから、ＣＰＵ７１はそのステップ７０５にて「Ｙｅｓ」と判定してステップ７４０に進む。
【００８６】
次に、ＣＰＵ７１はステップ７４０に進み、下記（３）式に基づいて酸素吸蔵量の変化量ΔＯＳＡを計算する。（３）式の値「０．２３」は、前述したように、大気中に含まれる酸素の重量割合である。ｍｆｒは所定時間（サンプリング時間tsample）内の燃料噴射量Ｆｉの合計量（サンプリング時間tsample内において内燃機関１０に供給された燃料の総量）である。abyfsは上流側空燃比であり、stoichは理論空燃比である。
ΔＯＳＡ＝０．２３・ｍｆｒ・（abyfs − stoich）    …（３）
【００８７】
その後、ＣＰＵ７１は、前述したステップ７１５乃至ステップ７３５の処理を行い、ステップ７９５に進んで本ルーチンを一旦終了する。以上の処理により、酸素吸蔵量ＯＳＡが推定される。
【００８８】
＜フューエルカット復帰後増量要求判定＞
ＣＰＵ７１は、推定されている酸素吸蔵量ＯＳＡに基づいて、フューエルカット制御の終了後においてフューエルカット復帰後増量を実行すべきか否か（即ち、フューエルカット復帰後増量要求が発生したか否か）を判定する。
【００８９】
より具体的に述べると、ＣＰＵ７１は、図８に示したルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１はステップ８００から処理を開始しフューエルカットフラグＸＦＣの値が「１」であるか否かを判定する。このとき、フューエルカットフラグＸＦＣの値が「１」でなければ、ＣＰＵ７１はステップ８０５にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。
【００９０】
これに対し、フューエルカットフラグＸＦＣの値が「１」であるとき（即ち、フューエルカット制御の実行中）、ＣＰＵ７１はステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、推定されている酸素吸蔵量ＯＳＡが第１閾値ｋ１・Ｃmax以上であるか否かを判定する。但し、ｋ１は「１／２」よりも大きく「１」以下の値に設定されている。
【００９１】
このとき、酸素吸蔵量ＯＳＡが第１閾値ｋ１・Ｃmaxより小さいと、ＣＰＵ７１はステップ８１０にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。
【００９２】
これに対し、フューエルカット制御が継続すると多量の酸素が触媒５３に流入するので、酸素吸蔵量ＯＳＡは増大して第１閾値ｋ１・Ｃmaxに到達する。この場合、ＣＰＵ７１はステップ８１０にて「Ｙｅｓ」と判定してステップ８１５に進み、フューエルカット復帰後増量要求フラグＸＲＩＣＨの値を「１」に設定し、ステップ８９５に進んで本ルーチンを一旦終了する。
【００９３】
このように、フューエルカット復帰後増量要求フラグＸＲＩＣＨは、フューエルカット制御中（フューエルカットフラグＸＦＣの値が「１」であるとき）において、酸素吸蔵量ＯＳＡが第１閾値ｋ１・Ｃmax以上となったときに「１」に設定される。フューエルカット制御が停止した時点（即ち、フューエルカット復帰時点）においてフューエルカット復帰後増量要求フラグＸＲＩＣＨの値が「１」に設定されていると、その時点以降においてフューエルカット復帰後増量が実行され、機関の空燃比が理論空燃比よりも小さい空燃比（理論空燃比よりもリッチな空燃比＝リッチ空燃比）abyfrichに設定される（図５のステップ５４０を参照。）。
【００９４】
フューエルカット制御中に酸素吸蔵量ＯＳＡが第１閾値ｋ１・Ｃmax以上となったということは、触媒５３の酸素吸蔵量が過大となっているため、触媒５３はＮＯｘを浄化し難い状態となっていることを意味する。従って、制御装置は、このような場合、フューエルカット制御が停止した後にフューエルカット復帰後増量制御を実行して触媒５３に多量の未燃物を流入させ、それにより、触媒５３の酸素吸蔵量ＯＳＡを速やかに低下させる。
【００９５】
＜フューエルカット復帰（フューエルカット制御の終了）判定＞
更に、ＣＰＵ７１は、図９に示したフューエルカット終了判定ルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１はステップ９００から処理を開始し、ステップ９０５に進んでフューエルカットフラグＸＦＣの値が「１」であるか否かを判定する。即ち、ＣＰＵ７１は現在がフューエルカット制御中であるか否かを判定する。現在がフューエルカット制御中でなければ、ＣＰＵ７１はステップ９０５にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。
【００９６】
一方、ＣＰＵ７１がステップ９０５に進んだ時点においてフューエルカット制御が実行されていてフューエルカットフラグＸＦＣの値は「１」となっていると、ＣＰＵ７１はそのステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、フューエルカット終了条件が成立したか否かを判定する。
【００９７】
フューエルカット終了条件は以下に述べる条件１及び条件２の何れかが成立したときに成立し、条件１及び条件２の双方が不成立のとき不成立となる。フューエルカット条件（フューエルカット開始条件）が成立してからフューエルカット終了条件が成立するまでの期間は、フューエルカット実行条件が成立している期間と言うこともできる。
（条件１）スロットル弁開度ＴＡが「０（前記所定開度）」より大きい。
（条件２）機関回転速度ＮＥが、フューエルカット回転速度ＮＥＦＣよりも所定回転数ΔＮだけ小さいフューエルカット復帰回転速度ＮＥＦＫ（ＮＥＦＫ＝ＮＥＦＣ−ΔＮ）より小さい。
【００９８】
このとき、フューエルカット終了条件が成立していなければ、ＣＰＵ７１はステップ９１０にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。この結果、フューエルカットフラグＸＦＣの値は「１」に維持され、フューエルカット制御は継続される。
【００９９】
これに対し、フューエルカット終了条件が成立していると、ＣＰＵ７１はステップ９１０にて「Ｙｅｓ」と判定し、ステップ９１５に進んでフューエルカットフラグＸＦＣの値を「０」に設定する。この結果、ＣＰＵ７１は図５に示したルーチンのステップ５０５に進んだとき、そのステップ５０５にて「Ｙｅｓ」と判定してステップ５１０以降に進むようになる。従って、ステップ５３５が実行されるので、フューエルカット制御が停止され、燃料の噴射（供給）が再開される。
【０１００】
＜フューエルカット復帰後増量終了判定＞
前述したように、フューエルカット制御が終了したときにフューエルカット復帰後増量要求フラグＸＲＩＣＨが「１」に設定されていると、フューエルカット復帰後増量が実行される。ＣＰＵ７１は、この増量制御を終了すべきか否かを、図１０に示したルーチンを所定時間が経過する毎に実行することにより判定する。
【０１０１】
より具体的に述べると、ＣＰＵ７１は、所定のタイミングにて図１０のステップ１０００から処理を開始してステップ１００５に進み、増量要求フラグＸＲＩＣＨの値が「１」であるか否かを判定する。
【０１０２】
このとき、増量要求フラグＸＲＩＣＨの値が「１」に設定されていると、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定し、ステップ１０１０に進んで「推定されている酸素吸蔵量ＯＳＡが第２閾値ｋ２・Ｃmax以下であるか否か」を判定する。ここで、ｋ２は、０よりも大きく「１／３」よりも小さい値に設定されている。
【０１０３】
フューエルカット復帰時点の直後においては、酸素吸蔵量ＯＳＡは相当に大きいので、ＣＰＵ７１はステップ１０１０にて「Ｎｏ」と判定し、ステップ１０９５に直接進む。この結果、増量要求フラグＸＲＩＣＨの値が「１」に維持されるので、フューエルカット復帰後増量が継続される。
【０１０４】
その後、所定の時間が経過すると、触媒５３にはフューエルカット復帰後増量により多量の未燃物が流入するので、酸素吸蔵量ＯＳＡは第２閾値ｋ２・Ｃmax以下となる。このとき、ＣＰＵ７１はステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進んで増量要求フラグＸＲＩＣＨの値を「０」に設定し、ステップ１０９５に進んで本ルーチンを一旦終了する。この結果、フューエルカット復帰後増量は終了する。
【０１０５】
なお、ステップ１０１０は、ＣＰＵ７１が、下流側空燃比センサ６７の出力値Voxsが理論空燃比相当値Ｖstに設定されている下流側目標値Voxsrefよりも大きいか否かを判定するステップであってもよい。この場合、ＣＰＵ７１は、出力値Voxsが下流側目標値Voxsrefよりも大きいとき、即ち、触媒５３から流出した排ガスの空燃比が理論空燃比よりもリッチであるときステップ１０１５に進み、出力値Voxsが下流側目標値Voxsref以下であるとき、即ち、触媒５３から流出した排ガスの空燃比が理論空燃比よりもリーンであるとき、ステップ１０９５に直接進む。
【０１０６】
＜メインフィードバック制御＞
ＣＰＵ７１は図１１にフローチャートにより示したメインフィードバック量算出ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１１００から処理を開始し、ステップ１１０５に進んでメインフィードバック制御条件（上流側空燃比フィードバック制御条件）が成立しているか否かを判定する。メインフィードバック制御条件は、例えば、フューエルカット制御の実行中でなく、内燃機関１０の冷却水温ＴＨＷが第１所定温度以上であり、内燃機関１０の一回転当りの吸入空気量（負荷）が所定値以下であり、且つ、上流側空燃比センサ６６が活性化しているときに成立する。
【０１０７】
いま、メインフィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定して以下に述べるステップ１１１０乃至ステップ１１４０の処理を順に行い、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１０８】
ステップ１１１０：ＣＰＵ７１は、下記（４）式に従ってフィードバック制御用出力値Vabyfcを取得する。（４）式において、Vabyfsは上流側空燃比センサ６６の出力値、Vafsfbは下流側空燃比センサ６７の出力値Voxsに基づいて算出されるサブフィードバック量、Vafsfbgはサブフィードバック量の学習値である。サブフィードバック量Vafsfb及び学習値Vafsfbgの算出方法は後述される。
Vabyfc＝Vabyfs＋Vafsfb＋Vafsfbg    …（４）
【０１０９】
ステップ１１１５：ＣＰＵ７１は、フィードバック制御用出力値Vabyfcを図２に示したテーブルMapabyfsに適用することによりフィードバック制御用空燃比abyfscを得る。
ステップ１１２０：ＣＰＵ７１は、下記（５）式に従って筒内供給燃料量Ｆｃ（ｋ−Ｎ）を取得する。筒内吸入空気量Ｍｃ（ｋ−Ｎ）は、現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃである。筒内供給燃料量Ｆｃ（ｋ−Ｎ）は、現時点よりもＮサイクル前の時点における筒内供給燃料量Ｆｃである。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／abyfsc    …（５）
【０１１０】
ステップ１１２５：ＣＰＵ７１は、下記（６）式に従って目標筒内供給燃料量Ｆｃｒ（ｋ−Ｎ）を取得する。上流側目標空燃比abyfr（ｋ−Ｎ）は、現時点からＮストローク前の上流側目標空燃比abyfrである。よって、目標筒内供給燃料量Ｆｃｒ（ｋ−Ｎ）は、現時点からＮストローク前の目標筒内供給燃料量Ｆｃｒである。
Ｆｃｒ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／abyfr（ｋ−Ｎ）    …（６）
【０１１１】
ステップ１１３０：ＣＰＵ７１は、下記（７）式に従って筒内供給燃料量偏差ＤＦｃを取得する。筒内供給燃料量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量である。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）    …（７）
【０１１２】
ステップ１１３５：ＣＰＵ７１は、下記（８）式に従ってメインフィードバック量ＤＦｉを取得する。（８）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。係数ＫＦＢは機関回転速度ＮＥ及び筒内吸入空気量Ｍｃ等により可変とすることが好適であるが、ここでは「１」に設定されている。筒内供給燃料量偏差ＤＦｃの積分値ＳＤＦｃは次のステップ１１４０にて求められる。つまり、ＣＰＵ７１は、フィードバック制御用空燃比abyfscと上流側目標空燃比abyfrとに基づく比例積分制御によりメインフィードバック量ＤＦｉを算出する。
ＤＦｉ＝（Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ）・ＫＦＢ    …（８）
【０１１３】
ステップ１１４０：ＣＰＵ７１は、その時点における筒内供給燃料量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ１１３０にて求められた筒内供給燃料量偏差ＤＦｃを加えることにより、新たな筒内供給燃料量偏差の積分値ＳＤＦｃを取得する。
【０１１４】
以上により、メインフィードバック量ＤＦｉが比例積分制御により求められ、このメインフィードバック量ＤＦｉが前述した図５のステップ５３０により最終燃料噴射量Ｆｉに反映される。この結果、現時点からＮストローク前の燃料供給量の過不足が補償されるので、機関の空燃比（従って、上流側触媒５３に流入するガスの空燃比）の平均値が上流側目標空燃比abyfr（特殊な場合を除き、理論空燃比）と略一致せしめられる。
【０１１５】
一方、ステップ１１０５の判定時において、メインフィードバック制御条件が不成立であると、ＣＰＵ７１はそのステップ１１０５にて「Ｎｏ」と判定してステップ１１４５に進み、メインフィードバック量ＤＦｉの値を「０」に設定する。次いで、ＣＰＵ７１は、ステップ１１５０にて筒内供給燃料量偏差の積分値ＳＤＦｃに「０」を格納する。その後、ＣＰＵ７１は、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１１６】
＜サブフィードバック量及び学習値の算出＞
ＣＰＵ７１は、サブフィードバック量Vafsfb及びサブフィードバック量Vafsfbの学習値Vafsfbgを算出するために、図１２に示したルーチンを所定時間の経過毎に実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１２００から処理を開始し、ステップ１２０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、前述したステップ１１０５でのメインフィードバック制御条件が成立し、上流側目標空燃比abyfrが理論空燃比に設定され、内燃機関１０の冷却水温ＴＨＷが前記第１所定温度よりも高い第２所定温度以上であり、且つ、下流側空燃比センサ６７が活性化しているときに成立する。従って、フューエルカット中及びフューエルカット復帰後増量中において、サブフィードバック制御条件は成立しない。
【０１１７】
いま、サブフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵ７１はステップ１２０５にて「Ｙｅｓ」と判定し、以下に述べるステップ１２１０乃至ステップ１２２０の処理を順に行い、ステップ１２２２に進む。
【０１１８】
ステップ１２１０：ＣＰＵ７１は、下記（９）式に従って下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの差である出力偏差量DVoxsを取得する。なお、この時点における下流側目標値Voxsrefは理論空燃比に相当する値Vstに設定されている。
DVoxs＝Voxsref−Voxs    …（９）
【０１１９】
ステップ１２１５：ＣＰＵ７１は、下記（１０）式に従ってサブフィードバック量Vafsfbを取得する。（１０）式において、Kpは予め設定された比例ゲイン（比例定数）、Kiは予め設定された積分ゲイン（積分定数）である。また、SDVoxsは、出力偏差量DVoxsの積分値である。
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs    …（１０）
【０１２０】
ステップ１２２０：ＣＰＵ７１は、その時点における出力偏差量の積分値SDVoxsに上記ステップ１２１０にて求めた出力偏差量DVoxsを加えて、新たな出力偏差量の積分値SDVoxsを取得する。
【０１２１】
次に、ＣＰＵ７１はステップ１２２２に進み、サブフィードバック学習実行許可フラグ（以下、「サブＦＢ学習許可フラグ」、又は、「学習許可フラグ」とも称呼する。）Ｘkyokaの値が「１」であるか否かを判定する。学習許可フラグＸkyokaの値は、後述するルーチンにより操作される。更に、学習許可フラグＸkyokaの値はイニシャルルーチンにおいて「０」に設定されるようになっている。
【０１２２】
学習許可フラグＸkyokaの値が「０」であると、ＣＰＵ７１はステップ１２２２にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。これに対し、学習許可フラグＸkyokaの値が「１」であると、ＣＰＵ７１はステップ１２２２にて「Ｙｅｓ」と判定してステップ１２２５以降の「サブフィードバック量の学習」を実行する。
【０１２３】
即ち、ＣＰＵ７１は、ステップ１２２５において、現時点がリーン反転の直後又はリッチ反転の直後であるか否かを判定する。リーン反転とは、下流側空燃比センサ６７の出力値Voxsが理論空燃比相当値Vstよりも大きい値から小さい値へと変化する状態のことである。リッチ反転とは、出力値Voxsが理論空燃比相当値Vstよりも小さい値から大きい値へと変化する状態のことである。そして、現時点がリーン反転の直後又はリッチ反転の直後でなければ、ＣＰＵ７１はステップ１２２５にて「Ｎｏ」と判定し、ステップ１２９５に直接進んで本ルーチンを一旦終了する。
【０１２４】
これに対し、現時点がリーン反転の直後又はリッチ反転の直後であると、ＣＰＵ７１はステップ１２２５にて「Ｙｅｓ」と判定して以下に述べるステップ１２３０乃至ステップ１２４５の処理を順に行い、その後、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１２５】
ステップ１２３０：ＣＰＵ７１は、その時点の学習値Vafsfbgを更新前学習値Vafsfbg0として格納する。
ステップ１２３５：ＣＰＵ７１は、下記（１１）式に従って学習値Vafsfbgを更新する。（１１）式の左辺Vafsfbgnewは更新後の学習値Vafsbfbgを表す。（１１）式から明らかなように、学習値Vafsfbgはサブフィードバック量Vafsfbの積分項Ki・SDVoxsにノイズ除去のためのフィルタ処理を施した値である。
Vafsfbgnew＝α・Vafsfbg＋（１−α）・Ki・SDVoxs    …（１１）
【０１２６】
ステップ１２４０：ＣＰＵ７１は、下記（１２）式に従って学習値Vafsfbgの変更量（更新量）ΔＧを算出する。
ΔＧ＝Vafsfbg−Vafsfbg0    …（１２）
【０１２７】
ステップ１２４５：ＣＰＵ７１は、下記（１３）式に従ってサブフィードバック量Vafsfbを変更量ΔＧにより補正する。即ち、ＣＰＵ７１は、学習値Vafsfbgを変更量ΔＧだけ増加するように更新したとき、サブフィードバック量Vafsfbを変更量ΔＧだけ減少させる。なお、このとき、ＣＰＵ７１は積分値SDVoxsをΔＧ／Kiだけ減少させることが望ましい。
Vafsfb＝Vafsfb−ΔＧ          …（１３）
【０１２８】
以上の処理により、所定時間の経過毎にサブフィードバック量Vafsfbが更新される。更に、学習許可フラグＸkyokaの値が「１」であるとき、リーン反転毎及びリッチ反転毎にサブフィードバック量の学習値Vafsfbgが更新される（サブフィードバック量の学習が実行される。）。
【０１２９】
なお、サブフィードバック制御条件が成立していない場合、ＣＰＵ７１は図１２のステップ１２０５にて「Ｎｏ」と判定し、以下に述べるステップ１２５０及びステップ１２５５の処理を順に行い、ステップ１２９５に進んで本ルーチンを一旦終了する。
ステップ１２５０：ＣＰＵ７１はサブフィードバック量Vafsfbの値を「０」に設定する。
ステップ１２５５：ＣＰＵ７１は出力偏差量の積分値SDVoxsの値を「０」に設定する。
【０１３０】
＜積算吸入空気量の算出＞
上述した学習許可フラグＸkyokaの値（即ち、サブフィードバック量の学習が禁止されるか許可されるかを示す値）は、積算吸入空気量ＳＧａに基づいて決定される。そこで、先ず、積算吸入空気量ＳＧａの算出手法について説明する。
【０１３１】
ＣＰＵ７１は、所定時間Δｔが経過する毎に図１３にフローチャートにより示した「算出吸入空気量算出ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１は図１３のステップ１３００から処理を開始してステップ１３１０に進み、フューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１３２】
いま、フューエルカット制御が実行されておらず、更に、フューエルカット復帰後増量も実施されていないと仮定する。この場合、フューエルカットフラグＸＦＣの値は「０」であり、且つ、フューエルカット復帰後増量要求フラグＸＲＩＣＨの値も「０」である。従って、ＣＰＵ７１はステップ１３１０にて「Ｙｅｓ」と判定してステップ１３２０に進み、フューエルカット復帰後増量要求フラグＸＲＩＣＨの値が「０」であるか否かを判定する。更に、ＣＰＵ７１はステップ１３２０にても「Ｙｅｓ」と判定してステップ１３３０に進み、現時点の積算吸入空気量ＳＧａに現時点の吸入空気量Ｇａを加える（積算する）ことによって、新たな積算吸入空気量ＳＧａを取得する。その後、ＣＰＵ７１はステップ１３９５に進み、本ルーチンを一旦終了する。
【０１３３】
これに対し、現時点においてフューエルカット制御が実行されている場合（即ち、フューエルカットフラグＸＦＣの値が「１」である場合）、ＣＰＵ７１はステップ１３１０にて「Ｎｏ」と判定してステップ１３４０に進み、現時点の積算吸入空気量ＳＧａから現時点の吸入空気量Ｇａを減じることによって、新たな積算吸入空気量ＳＧａを取得する。
【０１３４】
次いで、ＣＰＵ７１はステップ１３５０に進み、現時点が「増量要求フラグＸＲＩＣＨの値が「０」から「１」へと変更された直後であるか否か」を判定する。このとき、現時点が「増量要求フラグＸＲＩＣＨの値が「０」から「１」へと変更された直後」であると、ＣＰＵ７１はステップ１３５０にて「Ｙｅｓ」と判定してステップ１３６０に進み、積算吸入空気量ＳＧａの値を「０（閾値積算吸入空気量ＳＧａｔｈよりも小さい一定値）」に設定（リセット）する。その後、ＣＰＵ７１はステップ１３９５に直接進んで本ルーチンを一旦終了する。
【０１３５】
一方、現時点が「増量要求フラグＸＲＩＣＨの値が「０」から「１」へと変更された直後でなければ、ＣＰＵ７１はステップ１３５０にて「Ｎｏ」と判定し、ステップ１３９５に直接進んで本ルーチンを一旦終了する。
【０１３６】
更に、現時点においてフューエルカット制御は実行されていないが（フューエルカットフラグＸＦＣ＝０）、増量要求フラグＸＲＩＣＨの値が「１」である場合、ＣＰＵ７１はステップ１３１０にて「Ｙｅｓ」と判定し且つステップ１３２０にて「Ｎｏ」と判定して上述したステップ１３５０へと進む。
【０１３７】
このように、積算吸入空気量ＳＧａは、フューエルカット制御が非実行であるときには所定時間Δｔの経過毎にその時々の吸入空気量Ｇａだけ増加させられ、フューエルカット制御中においては所定時間Δｔの経過毎にその時々の吸入空気量Ｇａ（又は、一定の正の値でもよい）だけ減じられる（即ち、積算吸入空気量ＳＧａは所定比率にて減少させられる）。更に、積算吸入空気量ＳＧａは、増量要求フラグＸＲＩＣＨの値が「０」から「１」へと変更された場合（換言すると、フューエルカット制御の終了後にフューエルカット復帰後増量が実施される場合）に「０（閾値積算吸入空気量ＳＧａｔｈよりも小さい一定値）」に設定される。
【０１３８】
＜学習許可フラグの設定＞
ＣＰＵ７１は、所定時間が経過する毎に図１４にフローチャートにより示した「学習許可フラグ設定ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１は図１４のステップ１４００から処理を開始してステップ１４１０に進み、フューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１３９】
フューエルカットフラグＸＦＣの値が「１」である場合、ＣＰＵ７１はステップ１４１０にて「Ｎｏ」と判定してステップ１４５０に進み、学習許可フラグＸkyokaの値を「０」に設定する。これにより、サブフィードバック量の学習（サブＦＢ学習値の更新）が禁止される。その後、ＣＰＵ７１はステップ１４９５に直接進んで本ルーチンを一旦終了する。
【０１４０】
これに対し、フューエルカットフラグＸＦＣの値が「０」である場合、ＣＰＵ７１はステップ１４１０にて「Ｙｅｓ」と判定してステップ１４２０に進み、増量要求フラグＸＲＩＣＨの値が「０」であるか否かを判定する。
【０１４１】
増量要求フラグＸＲＩＣＨの値が「１」である場合、ＣＰＵ７１はステップ１４２０にて「Ｎｏ」と判定してステップ１４５０に進む。これにより、サブフィードバック量の学習（サブＦＢ学習値の更新）が禁止される。これに対し、増量要求フラグＸＲＩＣＨの値が「０」である場合、ＣＰＵ７１はステップ１４２０にて「Ｙｅｓ」と判定してステップ１４３０に進み、積算吸入空気量ＳＧａが閾値（学習許可閾値）ＳＧａｔｈ以上であるか否かを判定する。
【０１４２】
積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈ未満であると、ＣＰＵ７１はステップ１４３０にて「Ｎｏ」と判定してステップ１４５０に進む。これにより、サブフィードバック量の学習（サブＦＢ学習値の更新）が禁止される。
【０１４３】
これに対し、積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈ以上であると、ＣＰＵ７１はステップ１４３０にて「Ｙｅｓ」と判定してステップ１４４０に進み、学習許可フラグＸkyokaの値を「１」に設定する。これにより、サブフィードバック量の学習（サブＦＢ学習値の更新）が許可される。その後、ＣＰＵ７１はステップ１４９５に進み、本ルーチンを一旦終了する。
【０１４４】
このように、ＣＰＵ７１は、フューエルカット制御中でなく且つフューエルカット復帰後増量制御中でもない場合（即ち、通常制御の実行中）に積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈ以上となったとき、学習許可フラグＸkyokaの値を「１」に設定する。これにより、サブフィードバック量の学習が実行される（図１２のステップ１２２２における「Ｙｅｓ」との判定を参照。）。
【０１４５】
以上、説明したように、本発明の実施形態に係る燃料供給制御装置は、
下流側空燃比センサの出力値Voxsを下流側目標値Voxsref（理論空燃比相当値Vst）に一致させるための下流側フィードバック量（サブフィードバック量Vafsfb）を、下流側空燃比センサの出力値Voxsに基づいて更新するフィードバック部（図１２のステップ１２０５乃至１２２０を参照。）と、
前記下流側フィードバック量が更新されている期間において（図１２のステップ１２０５での「Ｙｅｓ」との判定を参照。）、下流側フィードバック量（サブフィードバック量Vafsfb）に応じた値に基づいて下流側フィードバック量の学習値（サブＦＢ学習値Vafsfbg）を更新する学習を行う学習部（図１２のステップ１２２５乃至ステップ１２４５を参照。）と、
前記下流側フィードバック量（Vafsfb）及び前記学習値（Vafsfbg）に基づき内燃機関１０に供給される燃料の量を制御する通常制御を実行するとともに（図１１及び図５のステップ５２０乃至ステップ５３５を参照。）、内燃機関１０の運転状態がフューエルカット実行条件を満たしている期間において（図５のステップ５０５の「Ｎｏ」との判定、図６及び図９を参照。）、内燃機関１０への燃料の供給を停止するフューエルカット制御を前記通常制御に代えて実行する燃料供給制御部（図５を参照。）と、
「前記フューエルカット制御が実行されている期間」及び「前記フューエルカット制御の終了時点以降において前記通常制御が実行される期間が学習禁止期間よりも長くなるまでの期間」において前記学習を禁止するとともに（図１２のステップ１２２２での「Ｎｏ」との判定、及び、図１４のステップ１４５０を参照。）、前記フューエルカット制御の終了時点以降において前記通常制御が実行される期間が前記学習禁止期間以上となった時点以降において前記学習を許可する（図１２のステップ１２２２での「Ｙｅｓ」との判定、及び、図１４のステップ１４３０並びにステップ１４４０を参照。）、学習許可部と、
を備えた内燃機関１０の燃料供給制御装置において、
前記学習許可部は、
前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように、前記学習禁止期間を変更するように構成された（図１３及び図１４のステップ１４３０を参照。）燃料供給制御装置である。
【０１４６】
更に、前記学習許可部は、
前記通常制御が実行されている期間において吸入空気量に対応する値を積算することにより積算吸入空気量ＳＧａを算出するとともに（図１３のステップ１３３０を参照。）、前記フューエルカット制御が実行されている期間において前記積算吸入空気量ＳＧａを所定の比率にて減少させ（図１３のステップ１３４０を参照。）、前記積算吸入空気量ＳＧａが所定の閾値空気量（閾値積算吸入空気量）ＳＧａｔｈ以上であるとき前記学習値の更新を許可することにより、前記フューエルカット制御が実行されている時間が長くなるほど前記学習禁止期間が長くなるように前記学習禁止期間を変更する（図１４のステップ１４３０及びステップ１４４０を参照。）。
【０１４７】
加えて、前記燃料供給制御部は、
前記フューエルカット制御が実行されている期間において増量条件が満たされた場合（図８を参照。）、前記フューエルカット制御の終了時点からの所定期間に渡り前記通常制御に代えて内燃機関１０に供給される混合気の空燃比が理論空燃比よりも小さいリッチ空燃比となるように燃料供給量（燃料噴射量）を制御する増量制御を実行するように構成されている（図５のステップ５１５、ステップ５４０、図８のステップ８１５及び図１０を参照。）。
【０１４８】
また、前記学習許可部は、
前記フューエルカット制御の終了時点から前記増量制御が実行される場合には（図１３のステップ１３５０を参照。）、前記積算吸入空気量ＳＧａを前記閾値空気量ＳＧａｔｈよりも小さい一定値（「０」）に設定する（図１３のステップ１３６０を参照。）。
【０１４９】
これにより、フューエルカット制御が頻繁に実行される場合であっても、フューエルカット制御が実行されている時間が短いほど前記学習禁止期間が短くなるので、サブＦＢ学習値Vafsfbgを早期に適正値に近づけることができる。
【０１５０】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記制御装置の変形例は、サブフィードバック量Vafsfb及びサブＦＢ学習値Vafsfbgに基づいて上流側目標空燃比abyfrを変更し、上流側空燃比abyfsを上流側目標空燃比abyfrに一致させるメインフィードバック量を算出し、その算出したメインフィードバック量に基づき内燃機関１０の空燃比（燃料噴射量）をフィードバック制御するようになっていてもよい。
【０１５１】
更に、上記制御装置の他の変形例は、サブフィードバック量Vafsfb及びサブＦＢ学習値Vafsfbgに基づいて（メインフィードバック量ＤＦｉを算出することなく）基本燃料噴射量Fbaseを直接補正してもよい。
【０１５２】
更に、上記制御装置の他の変形例は、積算吸入空気量ＳＧａが閾値積算吸入空気量ＳＧａｔｈ以上となったとき、サブＦＢ学習値Vafsfbgの更新（学習）を許可していたが、積算吸入空気量ＳＧａに代えて「下流側空燃比センサの出力値Voxsの反転回数」が閾値判定回数Ｃｔｈ以上となったときサブＦＢ学習値Vafsfbgの更新を許可してもよい。下流側空燃比センサの出力値Voxsの反転回数は、出力値Voxsが下流側目標値Voxsref（理論空燃比相当値Vst）を横切った回数である。
【０１５３】
この場合において、下流側空燃比センサの出力値Voxsの反転回数Ｃは、通常制御の実行中において出力値Voxsが下流側目標値Voxsref（理論空燃比相当値Vst）を横切るたびに所定値ずつ増大させられる。更に、反転回数Ｃは、フューエルカット制御中、所定の比率（例えば、一定比率又は吸入空気量Ｇａに応じた比率）で減少させられるとともに、フューエルカット復帰後増量が実行されるとき閾値判定回数Ｃｔｈよりも小さい一定値（本例において「０」）に設定される。
【０１５４】
更に、上記制御装置の他の変形例は、フューエルカット制御の継続時間を直接計測しておき、その計測された時間（フューエルカット継続時間）が長いほど、フューエルカット制御の終了時点からの学習禁止期間を長い時間に設定してもよい。
【符号の説明】
【０１５５】
１０…内燃機関、３４…排気ポート、３９…インジェクタ、４４…スロットル弁、５０…排気系統、５１…エキゾーストマニホールド、５２…エキゾーストパイプ、５３…上流側触媒（触媒）、５４…下流側触媒、６１…熱線式エアフローメータ、６２…スロットルポジションセンサ、６３…カムポジションセンサ、６４…クランクポジションセンサ、６６…上流側空燃比センサ、６７…下流側空燃比センサ、６８…アクセル開度センサ、７０…電気制御装置。
【図１】
2014074335.tif 000003
【図２】
2014074335.tif 000004
【図３】
2014074335.tif 000005
【図４】
2014074335.tif 000006
【図５】
2014074335.tif 000007
【図６】
2014074335.tif 000008
【図７】
2014074335.tif 000009
【図８】
2014074335.tif 000010
【図９】
2014074335.tif 000011
【図１０】
2014074335.tif 000012
【図１１】
2014074335.tif 000013
【図１２】
2014074335.tif 000014
【図１３】
2014074335.tif 000015
【図１４】
2014074335.tif 000016