(57)【要約】【課題】リッチインバランスが発生したときであっても、実際の空燃比と目標空燃比とのずれを迅速に小さくする。【解決手段】排気浄化装置は、排気浄化触媒２０と、上流側センサ４０と、下流側センサ４１と、制御装置３１とを具備する。制御装置は、上流側センサの出力空燃比が目標空燃比となるように制御するメインＦＢ制御と、下流側センサの出力空燃比に基づいて目標空燃比を設定するサブＦＢ制御と、メイン学習値に基づいて燃料供給量を制御するメイン学習制御と、サブ学習値に基づいて燃料供給量を制御するサブ学習制御とを実行する。制御装置は、サブ学習促進条件が成立したときには、サブ学習値が適切な値に変化し易くなるように制御するサブ学習促進制御を実行する。サブ学習促進条件は、メイン学習値及びサブ学習値の絶対値が各基準絶対値以上であって且つこれら学習値の正負が反対であるときに成立する。【選択図】図１３
2017067040.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配置された排気浄化触媒と、該排気浄化触媒の排気流れ方向上流側に配置されると共に前記排気浄化触媒に流入する排気ガスの空燃比を検出する上流側空燃比センサと、前記排気浄化触媒の排気流れ方向下流側に配置されると共に前記排気浄化触媒から流出した排気ガスの空燃比を検出する下流側空燃比センサと、前記上流側空燃比センサ及び前記下流側空燃比センサの出力空燃比に基づいて前記内燃機関の燃焼室への燃料供給量を制御する制御装置とを具備する、内燃機関の排気浄化装置であって、
前記制御装置は、前記上流側空燃比センサの出力空燃比が目標空燃比となるように前記燃料供給量をフィードバック制御するメインフィードバック制御と、
前記下流側空燃比センサの出力空燃比に基づいて前記目標空燃比を理論空燃比よりもリッチなリッチ空燃比と理論空燃比よりもリーンなリーン空燃比とに交互に切り替えるサブフィードバック制御と、
前記上流側空燃比センサの出力空燃比と前記目標空燃比との差に基づいてこれら空燃比間に存在する定常的な偏差に応じて変化するメイン学習値を算出し、該算出したメイン学習値に基づいて前記上流側空燃比センサの出力空燃比と前記目標空燃比との差が小さくなるように前記内燃機関の燃焼室への燃料供給量を制御するメイン学習制御と、
前記上流側空燃比センサの出力空燃比及び前記下流側空燃比センサの出力空燃比に基づいて前記排気浄化触媒に流入する排気ガスの空燃比と目標空燃比との差に応じて変化するサブ学習値を算出し、該算出したサブ学習値に基づいて前記排気浄化触媒に流入する排気ガスの空燃比と前記目標空燃比との差が小さくなるように前記内燃機関の燃焼室への燃料供給量を制御するサブ学習制御と、を実行し、
前記制御装置は、サブ学習促進条件が成立したときには、該サブ学習促進条件が成立していないときに比べて、前記サブ学習制御におけるサブ学習値が前記排気浄化触媒に流入する排気ガスの空燃比と前記目標空燃比との差に応じた適切な値に変化し易くなるように前記サブ学習値に関連するパラメータを制御するサブ学習促進制御を実行し、
前記サブ学習促進条件が成立するときは、少なくとも、前記メイン学習値及び前記サブ学習値の絶対値が予め定められたそれぞれの基準絶対値以上であって且つ前記メイン学習値と前記サブ学習値とで正負が反対であるときである、内燃機関の排気浄化装置。
【請求項２】
前記サブ学習促進条件が成立するときは、少なくとも、前記メイン学習値及び前記サブ学習値の絶対値が予め定められたそれぞれの基準絶対値以上であって且つ前記メイン学習値と前記サブ学習値とで正負が反対であり、更に前記メイン学習値と前記サブ学習値との差が予め定められた基準差以上であるときである、請求項１に記載の内燃機関の排気浄化装置。
【請求項３】
前記サブ学習値は、その絶対値が所定のガード値以下に維持され、
前記サブ学習促進制御では、前記ガード値の絶対値が増大せしめられる、請求項１又は２に記載の内燃機関の排気浄化装置。
【請求項４】
前記サブ学習制御では、前記目標空燃比と前記排気浄化触媒に流入する排気ガスの空燃比との差に所定の係数を乗算した値を積算することでサブ学習値を算出し、
前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、該サブ学習促進条件が成立していないときに比べて、前記サブ学習値を算出する際の前記係数が大きくされる、請求項１〜３のいずれか１項に記載の内燃機関の排気浄化装置。
【請求項５】
前記制御装置は、前記サブフィードバック制御において、前記目標空燃比を理論空燃比よりもリッチなリッチ設定空燃比と理論空燃比よりもリーンなリーン設定空燃比とに交互に切り替え、
前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記リッチ設定空燃比のリッチ度合いが大きくされる、請求項１〜４のいずれか１項に記載の内燃機関の排気浄化装置。
【請求項６】
前記制御装置は、前記上流側空燃比センサの出力空燃比に基づいて前記排気浄化触媒の酸素吸蔵量を推定すると共に、前記サブフィードバック制御において、前記排気浄化触媒の酸素吸蔵量の推定値が切替基準吸蔵量以上になると、前記目標空燃比をリーン空燃比からリッチ空燃比に切り替え、
前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記切替基準吸蔵量が少なくされる、請求項１〜５のいずれか１項に記載の内燃機関の排気浄化装置。
【請求項７】
前記制御装置は、前記サブフィードバック制御において、前記目標空燃比を理論空燃比よりもリッチなリッチ設定空燃比と理論空燃比よりもリーンなリーン設定空燃比とに交互に切り替え、
前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記リーン設定空燃比のリーン度合いが小さくされる、請求項１〜４のいずれか１項に記載の内燃機関の排気浄化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気浄化装置に関する。
【背景技術】
【０００２】
従来から、内燃機関の排気通路に配置された排気浄化触媒と、排気浄化触媒の排気流れ方向上流側に配置されると共に排気浄化触媒に流入する排気ガスの空燃比を検出する上流側空燃比センサと、排気浄化触媒の排気流れ方向下流側に配置されると共に排気浄化触媒から流出した排気ガスの空燃比を検出する下流側空燃比センサと、上流側空燃比センサ及び下流側空燃比センサの出力空燃比に基づいて内燃機関の燃焼室への燃料供給量を制御する制御装置とを具備する、内燃機関の排気浄化装置が知られている。
【０００３】
斯かる内燃機関の排気浄化装置では、制御装置において、上流側空燃比センサによって検出された空燃比（以下、「出力空燃比」という）が目標空燃比となるように燃料供給量をフィードバック制御するメインフィードバック制御が行われる。加えて、下流側空燃比センサの出力空燃比等に基づいて、目標空燃比を理論空燃比よりもリッチな空燃比（以下、「リッチ空燃比」という）と理論空燃比よりもリーンな空燃比（以下、「リーン空燃比」という）とに交互に切り替えるサブフィードバック制御が行われる（例えば、特許文献１）。特に、特許文献１に記載された排気浄化装置では、下流側空燃比センサの出力空燃比が理論空燃比よりもリッチなリッチ判定空燃比以下になったときに目標空燃比がリッチ空燃比からリーン空燃比へ切り替えられる。加えて、排気浄化触媒の酸素吸蔵量の推定値が、排気浄化触媒の最大吸蔵可能酸素量よりも少ない切替基準吸蔵量に到達すると、目標空燃比がリーン空燃比からリッチ空燃比に切り替えられる。
【０００４】
また、上流側空燃比センサの出力空燃比は、機関本体から排出された排気ガス中の水素量が多くなるほど、リッチ側にずれる。そこで、特許文献１に記載された排気浄化装置では、上流側空燃比センサの出力空燃比に基づいて、目標空燃比がリッチ空燃比に設定されている期間中における排気浄化触媒からの酸素放出量と、目標空燃比がリーン空燃比に設定されている期間中における排気浄化触媒への酸素吸蔵量とが算出される。そして、このように算出された酸素放出量と酸素吸蔵量との差に応じてサブ学習値が算出されると共に、このサブ学習値に基づいて目標空燃比が補正される（サブフィードバック学習制御）。特許文献１によれば、これにより、上流側空燃比センサの出力空燃比にずれが発生した場合であっても、そのずれを補償することができるとされている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−０７１９６３号公報
【特許文献２】特開２０１０−１８０７４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、複数の気筒を有する内燃機関の一部の気筒において、燃料噴射弁の故障等により、その燃料噴射弁からの実際の燃料供給量が目標値よりも多くなる場合がある。これは、例えば、燃料噴射弁のニードル弁と弁座との間に異物が付着してニードル弁が完全に閉弁されなくなったような場合に発生する。このように、一部の燃料噴射弁からの燃料供給量が多くなると、この一部の燃料噴射弁に対応する気筒における燃焼空燃比（燃焼が生じる際の燃焼室内の混合気の空燃比）は他の気筒における燃焼空燃比よりもリッチになる。以下では、このように一部の気筒における燃焼空燃比が他の気筒における燃焼空燃比よりもリッチになることにより気筒間で燃焼空燃比にずれが生じることをリッチインバランスと称する。
【０００７】
このようにリッチインバランスが発生すると、燃焼空燃比がリッチになった気筒からは多量の水素が流出することになる。この結果、上流側空燃比センサの出力空燃比はリッチ側にずれる。このとき、メインフィードバック制御により上流側空燃比センサの出力空燃比が目標空燃比となるように制御が行われていると、排気浄化触媒に流入する排気ガスの実際の空燃比は目標空燃比よりもリーン側にずれることになる。
【０００８】
このように上流側空燃比センサの出力空燃比にずれが生じて実際の空燃比が目標空燃比からずれても、上述したサブフィードバック学習制御により斯かるずれは徐々に補償されていく。しかしながら、サブフィードバック学習制御によるずれの補償には時間がかかるため、リッチインバランスが発生してから実際の空燃比と目標空燃比とのずれを無くすまでには或る程度の時間がかかる。しかしながら、実際の空燃比と目標空燃比とが長期間に亘ってずれていると、結果的に排気エミッションの悪化を招くことになる。
【０００９】
そこで、上記課題に鑑みて、本発明の目的は、リッチインバランスが発生したときであっても、実際の空燃比と目標空燃比とのずれを迅速に小さくすることができる、内燃機関の排気浄化装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、上記課題を解決するためになされたものであり、その要旨は以下のとおりである。
【００１１】
（１）  内燃機関の排気通路に配置された排気浄化触媒と、該排気浄化触媒の排気流れ方向上流側に配置されると共に前記排気浄化触媒に流入する排気ガスの空燃比を検出する上流側空燃比センサと、前記排気浄化触媒の排気流れ方向下流側に配置されると共に前記排気浄化触媒から流出した排気ガスの空燃比を検出する下流側空燃比センサと、前記上流側空燃比センサ及び前記下流側空燃比センサの出力空燃比に基づいて前記内燃機関の燃焼室への燃料供給量を制御する制御装置とを具備する、内燃機関の排気浄化装置であって、前記制御装置は、前記上流側空燃比センサの出力空燃比が目標空燃比となるように前記燃料供給量をフィードバック制御するメインフィードバック制御と、前記下流側空燃比センサの出力空燃比に基づいて前記目標空燃比を理論空燃比よりもリッチなリッチ空燃比と理論空燃比よりもリーンなリーン空燃比とに交互に切り替えるサブフィードバック制御と、前記上流側空燃比センサの出力空燃比と前記目標空燃比との差に基づいてこれら空燃比間に存在する定常的な偏差に応じて変化するメイン学習値を算出し、該算出したメイン学習値に基づいて前記上流側空燃比センサの出力空燃比と前記目標空燃比との差が小さくなるように前記内燃機関の燃焼室への燃料供給量を制御するメイン学習制御と、前記上流側空燃比センサの出力空燃比及び前記下流側空燃比センサの出力空燃比に基づいて前記排気浄化触媒に流入する排気ガスの空燃比と目標空燃比との差に応じて変化するサブ学習値を算出し、該算出したサブ学習値に基づいて前記排気浄化触媒に流入する排気ガスの空燃比と前記目標空燃比との差が小さくなるように前記内燃機関の燃焼室への燃料供給量を制御するサブ学習制御と、を実行し、前記制御装置は、サブ学習促進条件が成立したときには、該サブ学習促進条件が成立していないときに比べて、前記サブ学習制御におけるサブ学習値が前記排気浄化触媒に流入する排気ガスの空燃比と前記目標空燃比との差に応じた適切な値に変化し易くなるように前記サブ学習値に関連するパラメータを制御するサブ学習促進制御を実行し、前記サブ学習促進条件が成立するときは、少なくとも、前記メイン学習値及び前記サブ学習値の絶対値が予め定められたそれぞれの基準絶対値以上であって且つ前記メイン学習値と前記サブ学習値とで正負が反対であるときである、内燃機関の排気浄化装置。
【００１２】
（２）前記サブ学習促進条件が成立するときは、少なくとも、前記メイン学習値及び前記サブ学習値の絶対値が予め定められたそれぞれの基準絶対値以上であって且つ前記メイン学習値と前記サブ学習値とで正負が反対であり、更に前記メイン学習値と前記サブ学習値との差が予め定められた基準差以上であるときである、上記（１）に記載の内燃機関の排気浄化装置。
【００１３】
（３）前記サブ学習値は、その絶対値が所定のガード値以下に維持され、前記サブ学習促進制御では、前記ガード値の絶対値が増大せしめられる、上記（１）又は（２）に記載の内燃機関の排気浄化装置。
【００１４】
（４）前記サブ学習制御では、前記目標空燃比と前記排気浄化触媒に流入する排気ガスの空燃比との差に所定の係数を乗算した値を積算することでサブ学習値を算出し、前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、該サブ学習促進条件が成立していないときに比べて、前記サブ学習値を算出する際の前記係数が大きくされる、上記（１）〜（３）のいずれか１つに記載の内燃機関の排気浄化装置。
【００１５】
（５）前記制御装置は、前記サブフィードバック制御において、前記目標空燃比を理論空燃比よりもリッチなリッチ設定空燃比と理論空燃比よりもリーンなリーン設定空燃比とに交互に切り替え、前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記リッチ設定空燃比のリッチ度合いが大きくされる、上記（１）〜（４）のいずれか１つに記載の内燃機関の排気浄化装置。
【００１６】
（６）前記制御装置は、前記上流側空燃比センサの出力空燃比に基づいて前記排気浄化触媒の酸素吸蔵量を推定すると共に、前記サブフィードバック制御において、前記排気浄化触媒の酸素吸蔵量の推定値が切替基準吸蔵量以上になると、前記目標空燃比をリーン空燃比からリッチ空燃比に切り替え、前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記切替基準吸蔵量が少なくされる、上記（１）〜（５）のいずれか１つに記載の内燃機関の排気浄化装置。
【００１７】
（７）前記制御装置は、前記サブフィードバック制御において、前記目標空燃比を理論空燃比よりもリッチなリッチ設定空燃比と理論空燃比よりもリーンなリーン設定空燃比とに交互に切り替え、前記サブ学習促進制御では、前記サブ学習促進条件が成立したときには、前記サブ学習促進条件が成立していないときに比べて、前記リーン設定空燃比のリーン度合いが小さくされる、上記（１）〜（４）のいずれか１つに記載の内燃機関の排気浄化装置。
【発明の効果】
【００１８】
本発明によれば、リッチインバランスが発生したときであっても、実際の空燃比と目標空燃比とのずれを迅速に小さくすることができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の排気浄化装置を備えた内燃機関を概略的に示す図である。
【図２】図２は、空燃比センサの概略的な断面図である。
【図３】図３は、各排気空燃比におけるセンサ印加電圧と出力電流との関係を示す図である。
【図４】図４は、センサ印加電圧を一定にしたときの排気空燃比と出力電流との関係を示す図である。
【図５】図５は、メインフィードバック制御における空燃比偏差の時間積分値とメイン学習値とのタイムチャートである。
【図６】図６は、本実施形態のサブフィードバック制御を行った場合における、空燃比補正量等のタイムチャートである。
【図７】図７は、上流側空燃比センサの出力空燃比にずれが生じている場合の、図６と同様な空燃比補正量等のタイムチャートである。
【図８】図８は、上流側空燃比センサの出力空燃比にずれが生じている場合の、制御中心空燃比等のタイムチャートである。
【図９】図９は、上流側空燃比センサの出力値に大きなずれが生じている際の空燃比補正量等のタイムチャートである。
【図１０】図１０は、上流側空燃比センサの出力値に大きなずれが生じている際の空燃比補正量等のタイムチャートである。
【図１１】図１１は、理論空燃比張付き学習を行う際の空燃比補正量等のタイムチャートである。
【図１２】図１２は、リーン張付き学習等を行う際の空燃比補正量等のタイムチャートである。
【図１３】図１３は、サブ学習促進制御を行った場合の、インバランス発生の有無等のタイムチャートである。
【図１４】図１４は、制御装置の機能ブロック図である。
【図１５】図１５は、空燃比補正量の算出制御の制御ルーチンを示すフローチャートである。
【図１６】図１６は、サブ学習制御の制御ルーチンを示すフローチャートである。
【図１７】図１７は、サブ学習促進制御の制御ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２１】
＜内燃機関全体の説明＞
図１は、本発明の第一実施形態に係る排気浄化装置が用いられる内燃機関を概略的に示す図である。図１に示した内燃機関は、シリンダブロック２と、シリンダブロック２上に固定されたシリンダヘッド４を備える機関本体１を具備する。シリンダブロック２内には、シリンダブロック２内に形成されたシリンダ内を往復動するピストン３が配置される。ピストン３とシリンダヘッド４との間には、混合気の燃焼が行われる燃焼室５が形成される。
【００２２】
シリンダヘッド４内には吸気ポート７及び排気ポート９が形成され、これら吸気ポート７及び排気ポート９は燃焼室５に連通する。また、図１に示した内燃機関は、シリンダヘッド４内に配置された吸気弁６及び排気弁８を具備し、吸気弁６は吸気ポート７を開閉し、排気弁８は排気ポート９を開閉する。
【００２３】
図１に示したように、内燃機関は、シリンダヘッド４の内壁面の中央部に配置された点火プラグ１０と、シリンダヘッド４の内壁面周辺部に配置された燃料噴射弁１１とを備える。点火プラグ１０は、点火信号に応じて火花を発生させるように構成される。また、燃料噴射弁１１は、噴射信号に応じて、所定量の燃料を燃焼室５内に噴射する。なお、燃料噴射弁１１は、吸気ポート７内に燃料を噴射するように配置されてもよい。また、本実施形態では、燃料として理論空燃比が１４．６であるガソリンが用いられる。しかしながら、本発明の排気浄化装置が用いられる内燃機関では、ガソリン以外の燃料、或いはガソリンとの混合燃料を用いてもよい。
【００２４】
また、図１に示したように、内燃機関は、各気筒の吸気ポート７にそれぞれ連結された吸気枝管１３と、これら吸気枝管１３に連結されたサージタンク１４と、サージタンク１４に連結された吸気管１５とを具備する。吸気管１５は、エアクリーナ１６に連結される。吸気ポート７、吸気枝管１３、サージタンク１４、吸気管１５は内燃機関の吸気通路を形成する。また、吸気管１５内にはスロットル弁駆動アクチュエータ１７によって駆動されるスロットル弁１８が配置される。スロットル弁１８は、スロットル弁駆動アクチュエータ１７によって回動せしめられることで、吸気通路の開口面積を変更することができる。
【００２５】
一方、内燃機関は、各気筒の排気ポート９に連結された排気マニホルド１９を具備する。排気マニホルド１９は、各排気ポート９に連結される複数の枝部とこれら枝部が集合した集合部とを有する。加えて、内燃機関は、排気マニホルド１９の集合部に連結された上流側ケーシング２１と、下流側ケーシング２３と、上流側ケーシング２１と下流側ケーシング２３との間に配置された排気管２２とを具備する。上流側ケーシング２１は上流側排気浄化触媒２０を内蔵し、下流側ケーシング２３は下流側排気浄化触媒２４を内蔵する。排気ポート９、排気マニホルド１９、上流側ケーシング２１、排気管２２及び下流側ケーシング２３は、排気通路を形成する。
【００２６】
加えて、内燃機関は、デジタルコンピュータからなる電子制御ユニット（ＥＣＵ）３１を具備する。ＥＣＵ３１は、双方向性バス３２を介して相互に接続されたＲＡＭ（ランダムアクセスメモリ）３３、ＲＯＭ（リードオンリメモリ）３４、ＣＰＵ（マイクロプロセッサ）３５、入力ポート３６及び出力ポート３７を具備する。吸気管１５には、吸気管１５内を流れる空気流量を検出するための空気流量検出装置（例えば、エアフロメータ）３９が配置され、この空気流量検出装置３９の出力は対応するＡＤ変換器３８を介して入力ポート３６に入力される。また、排気マニホルド１９の集合部には排気マニホルド１９内を流れる排気ガス（すなわち、上流側排気浄化触媒２０に流入する排気ガス）の空燃比を検出する上流側空燃比センサ４０が配置される。加えて、排気管２２内には排気管２２内を流れる排気ガス（すなわち、上流側排気浄化触媒２０から流出して下流側排気浄化触媒２４に流入する排気ガス）の空燃比を検出する下流側空燃比センサ４１が配置される。これら空燃比センサ４０、４１の出力も対応するＡＤ変換器３８を介して入力ポート３６に入力される。
【００２７】
また、アクセルペダル４２にはアクセルペダル４２の踏込み量に比例した出力電圧を発生する負荷センサ４３が接続され、負荷センサ４３の出力電圧は対応するＡＤ変換器３８を介して入力ポート３６に入力される。クランク角センサ４４は例えばクランクシャフトが１５度回転する毎に出力パルスを発生し、この出力パルスが入力ポート３６に入力される。ＣＰＵ３５ではこのクランク角センサ４４の出力パルスから機関回転数が計算される。一方、出力ポート３７は対応する駆動回路４５を介して点火プラグ１０、燃料噴射弁１１及びスロットル弁駆動アクチュエータ１７に接続される。なお、ＥＣＵ３１は、各種制御を行う制御装置として機能する。
【００２８】
＜排気浄化触媒の説明＞
上流側排気浄化触媒２０及び下流側排気浄化触媒２４は、酸素吸蔵能力を有する三元触媒である。具体的には、排気浄化触媒２０、２４は、セラミックから成る担体に、触媒作用を有する貴金属（例えば、白金（Ｐｔ））及び酸素吸蔵能力を有する物質（例えば、セリア（ＣｅＯ2））を担持させた三元触媒である。三元触媒は、三元触媒に流入する排気ガスの空燃比が理論空燃比に維持されていると、未燃ガス及びＮＯｘを同時に浄化する機能を有する。加えて、排気浄化触媒２０、２４に或る程度の酸素が吸蔵されている場合には、排気浄化触媒２０、２４に流入する排気ガスの空燃比が理論空燃比に対してリッチ側或いはリーン側に若干ずれたとしても未燃ガス及びＮＯｘとが同時に浄化される。
【００２９】
すなわち、排気浄化触媒２０、２４が酸素吸蔵能力を有していると、すなわち排気浄化触媒２０、２４の酸素吸蔵量が最大吸蔵可能酸素量よりも少ないと、排気浄化触媒２０、２４に流入する排気ガスの空燃比が理論空燃比よりも若干リーンになったときには、排気ガス中に含まれる過剰な酸素が排気浄化触媒２０、２４内に吸蔵される。このため、排気浄化触媒２０、２４の表面上が理論空燃比に維持される。その結果、排気浄化触媒２０、２４の表面上において未燃ガス及びＮＯｘが同時に浄化され、このとき排気浄化触媒２０、２４から流出する排気ガスの空燃比は理論空燃比となる。
【００３０】
一方、排気浄化触媒２０、２４が酸素を放出することができる状態にあると、すなわち排気浄化触媒２０、２４の酸素吸蔵量が０よりも多いと、排気浄化触媒２０、２４に流入する排気ガスの空燃比が理論空燃比よりも若干リッチになったときには、排気ガス中に含まれている未燃ガスを還元させるのに不足している酸素が排気浄化触媒２０、２４から放出される。このため、この場合にも排気浄化触媒２０、２４の表面上が理論空燃比に維持される。その結果、排気浄化触媒２０、２４の表面上において未燃ガス及びＮＯｘが同時に浄化され、このとき排気浄化触媒２０、２４から流出する排気ガスの空燃比は理論空燃比となる。
【００３１】
このように、排気浄化触媒２０、２４に或る程度の酸素が吸蔵されている場合には、排気浄化触媒２０、２４に流入する排気ガスの空燃比が理論空燃比に対してリッチ側或いはリーン側に若干ずれたとしても未燃ガス及びＮＯｘとが動じに浄化され、排気浄化触媒２０、２４から流出する排気ガスの空燃比は理論空燃比となる。
【００３２】
＜空燃比センサの説明＞
本実施形態では、空燃比センサ４０、４１として、コップ型の限界電流式空燃比センサが用いられる。図２を用いて、空燃比センサ４０、４１の構造について簡単に説明する。空燃比センサ４０、４１は、固体電解質層５１と、その一方の側面上に配置された排気側電極５２と、その他方の側面上に配置された大気側電極５３と、通過する排気ガスの拡散律速を行う拡散律速層５４と、基準ガス室５５と、空燃比センサ４０、４１の加熱、特に固体電解質層５１の加熱を行うヒータ部５６とを具備する。
【００３３】
特に、本実施形態のコップ型の空燃比センサ４０、４１では、固体電解質層５１は一端が閉じられた円筒状に形成される。固体電解質層５１の内部に画成された基準ガス室５５には、大気ガス（空気）が導入されると共に、ヒータ部５６が配置される。固体電解質層５１の内面上に大気側電極５３が配置され、固体電解質層５１の外面上に排気側電極５２が配置される。固体電解質層５１及び排気側電極５２の外面上にはこれらを覆うように拡散律速層５４が配置される。なお、拡散律速層５４の外側には、拡散律速層５４の表面上に液体等が付着するのを防止するための保護層（図示せず）が設けられてもよい。
【００３４】
固体電解質層５１は、ＺｒＯ2（ジルコニア）、ＨｆＯ2、ＴｈＯ2、Ｂｉ2Ｏ3等にＣａＯ、ＭｇＯ、Ｙ2Ｏ3、Ｙｂ2Ｏ3等を安定剤として配当した酸素イオン伝導性酸化物の焼結体により形成されている。また、拡散律速層５４は、アルミナ、マグネシア、けい石質、スピネル、ムライト等の耐熱性無機物質の多孔質焼結体により形成されている。さらに、排気側電極５２及び大気側電極５３は、白金等の触媒活性の高い貴金属により形成されている。
【００３５】
また、排気側電極５２と大気側電極５３との間には、ＥＣＵ３１に搭載された印加電圧制御装置６０によりセンサ印加電圧Ｖが印加される。加えて、ＥＣＵ３１には、センサ印加電圧Ｖを印加したときに固体電解質層５１を介してこれら電極５２、５３間に流れる電流Ｉを検出する電流検出部６１が設けられる。この電流検出部６１によって検出される電流が空燃比センサ４０、４１の出力電流Ｉである。
【００３６】
このように構成された空燃比センサ４０、４１は、図３に示したような電圧−電流（Ｖ−Ｉ）特性を有する。図３からわかるように、空燃比センサ４０、４１の出力電流Ｉは、排気ガスの空燃比、すなわち排気空燃比Ａ／Ｆが高くなるほど（リーンになるほど）、大きくなる。また、各排気空燃比Ａ／ＦにおけるＶ−Ｉ線には、センサ印加電圧Ｖ軸に平行な領域、すなわちセンサ印加電圧Ｖが変化しても出力電流Ｉがほとんど変化しない領域が存在する。この電圧領域は限界電流領域と称され、このときの電流は限界電流と称される。図３では、排気空燃比が１８であるときの限界電流領域及び限界電流をそれぞれＷ18、Ｉ18で示している。
【００３７】
図４は、印加電圧Ｖを０．４５Ｖ程度（図３）で一定にしたときの、排気空燃比と出力電流Ｉとの関係を示している。図４からわかるように、空燃比センサ４０、４１では、排気空燃比が高くなるほど（すなわちリーンになるほど）、空燃比センサ４０、４１からの出力電流Ｉが大きくなるように、排気空燃比に対して出力電流がリニアに（比例するように）変化する。加えて、空燃比センサ４０、４１は、排気空燃比が理論空燃比であるときに出力電流Ｉが零になるように構成される。
【００３８】
なお、空燃比センサ４０、４１としては、図２に示した構造の限界電流式空燃比センサに代えて、例えば積層型の限界電流式空燃比センサ等の他の構造の限界電流式の空燃比センサを用いてもよい。また、空燃比センサ４０、４１として、電極間に電圧を印加せずに酸素濃度を検出する酸素センサを用いてもよい。
【００３９】
＜空燃比制御＞
次に、本実施形態の制御装置によって行われる空燃比制御について説明する。本実施形態の空燃比制御では、メインフィードバック制御、サブフィードバック制御、メインフィードバック学習制御（以下、「メイン学習制御」という）、サブフィードバック学習制御（以下、「サブ学習制御」という）が行われる。
【００４０】
メインフィードバック制御では、上流側空燃比センサ４０の出力空燃比に基づいて、上流側空燃比センサ４０の出力空燃比が目標空燃比となるように燃料噴射弁１１からの燃料供給量（すなわち、燃焼室５への燃料供給量）が制御される。サブフィードバック制御では、下流側空燃比センサ４１の出力空燃比等に基づいて目標空燃比がリッチ空燃比とリーン空燃比とに交互に切り替えられる。メイン学習制御では、上流側空燃比センサ４０の出力空燃比と目標空燃比との差に基づいてこれら空燃比間に存在する定常的な偏差に応じて変化するメイン学習値が算出され、算出されたメイン学習値に基づいて上流側空燃比センサ４０の出力空燃比と目標空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御される。加えて、サブ学習制御では、上流側空燃比センサ４０の出力空燃比及び下流側空燃比センサ４１の出力空燃比に基づいて上流側空燃比センサ４０の出力空燃比と上流側排気浄化触媒２０に流入する排気ガスの空燃比との差に応じて変化するサブ学習値が算出され、算出されたサブ学習値に基づいて目標空燃比と上流側排気浄化触媒２０に流入する排気ガスの空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御される。以下では、これら制御について説明する。
【００４１】
＜メインフィードバック制御＞
まず、メインフィードバック制御について説明する。メインフィードバック制御では、上述したように、上流側空燃比センサ４０の出力空燃比に基づいて、上流側空燃比センサ４０の出力空燃比が目標空燃比となるように燃料噴射弁１１からの燃料供給量（すなわち、燃焼室５への燃料供給量）が制御される。特に、本実施形態では、上流側空燃比センサ４０の出力空燃比と目標空燃比との差である空燃比偏差ＤＡＦが小さくなるように比例・積分・微分制御（ＰＩＤ制御）が行われる。
【００４２】
具体的には、本実施形態では、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと目標空燃比との差に基づいて、フィードバック補正量（以下、「Ｆ／Ｂ補正量」という）ＤＦｉが算出される。Ｆ／Ｂ補正量ＤＦｉは、空燃比偏差ＤＡＦを、比例・積分・微分処理（ＰＩＤ処理）することで、下記式（１）に基づいて算出される。
ＤＦｉ＝Ｋｐ・ＤＡＦ＋Ｋｉ・ＳＤＡＦ＋Ｋｄ・ＤＤＡＦ      …（１）
【００４３】
なお、上記式（１）において、Ｋｐは予め設定された比例ゲイン（比例定数）、Ｋｉは予め設定された積分ゲイン（積分定数）、Ｋｄは予め設定された微分ゲイン（微分定数）である。また、ＤＤＡＦは、空燃比偏差ＤＡＦの時間微分値であり、今回更新された空燃比偏差ＤＡＦと前回更新されていた空燃比偏差ＤＡＦとの偏差を更新間隔に対応する時間で除算することで算出される。また、ＳＤＡＦは、空燃比偏差ＤＡＦの時間積分値であり、この時間積分値ＳＤＡＦは前回更新された時間積分値ＳＤＡＦに今回更新された空燃比偏差ＤＡＦを加算することで算出される（ＳＤＡＦ＝ＤＤＡＦ＋ＤＡＦ）。
【００４４】
一方、後述するように、本実施形態では、目標空燃比は常に一定ではなく、理論空燃比よりもリッチなリッチ設定空燃比と理論空燃比よりもリーンなリーン設定空燃比との間で交互に変化する。そこで、本実施形態では、各気筒へ供給された空気量（筒内吸入空気量）Ｍｃを算出すると共に、算出された筒内吸入空気量Ｍｃを目標空燃比で除算することにより、基本燃料供給量Ｑｂａｓｅが算出される。
【００４５】
燃料噴射弁１１から各燃焼室５に供給される燃料供給量Ｑｉは、基本燃料供給量ＱｂａｓｅにＦ／Ｂ補正量ＤＦｉを加算することによって算出される（Ｑｉ＝Ｑｂａｓｅ＋ＤＦｉ）。したがって、目標空燃比が変化すると、基本燃料供給量Ｑｂａｓｅが変化し、この結果、各気筒への燃料供給量Ｑｉが変化する。一方、各燃料噴射弁１１からの燃料供給量等に誤差があって上流側空燃比センサ４０の出力空燃比と目標空燃比とが一致しないときには、出力空燃比が目標空燃比に近づくようにＦ／Ｂ補正量ＤＦｉが変化し、この結果、各気筒への燃料供給量Ｑｉが変化する。
【００４６】
＜メイン学習制御＞
次に、メインフィードバック学習制御（メイン学習制御）について説明する。ここで、燃料噴射弁１１からの燃料供給量は必ずしもＥＣＵ３１からの要求燃料供給量に一致するわけではない。燃料噴射弁１１間で燃料供給量にバラツキがあったり、全ての燃料噴射弁１１から全体的に要求燃料供給量よりも多い側へ又は少ない側へずれたりする。このようなバラツキやずれが生じると、上流側空燃比センサ４０の出力空燃比が実際の空燃比を示していたとしても、上流側空燃比センサ４０の出力空燃比と目標空燃比とには定常的な偏差が存在することになる。
【００４７】
そこで、メイン学習制御では、上述したように、上流側空燃比センサ４０の出力空燃比と目標空燃比との差に基づいてこれら空燃比間に存在する定常的な偏差に応じて変化するメイン学習値が算出される。メイン学習値は、上流側空燃比センサ４０の出力空燃比が目標空燃比よりも定常的に大きく（リーンに）なると０よりも大きくなるように変化する。逆に、上流側空燃比センサ４０の出力空燃比が目標空燃比よりも定常的に小さく（リッチに）なると０よりも小さくなるように変化する。また、定常的な偏差の絶対値が大きくなるほど、メイン学習値の絶対値も大きくなる。
【００４８】
具体的には、メイン学習値ｍｆｂｇは、メインフィードバック制御における空燃比偏差ＤＡＦの時間積分値ＳＤＡＦに基づいて、下記式（２）により更新される。また、このようにしてメイン学習値ｍｆｂｇの更新が完了すると、下記式（３）により時間積分値ＳＤＡＦが変更される。したがって、時間積分値ＳＤＡＦは、メイン学習値ｍｆｂｇが増大した分だけ、減少せしめられる。
ｍｆｂｇ（ｎ）＝ｍｆｂｇ（ｎ−１）＋ｋａ・ＳＤＡＦ      …（２）
ＳＤＡＦ＝（１−ｋａ）・ＳＤＡＦ      …（３）
【００４９】
なお、上記式（２）において、ｎは計算回数又は時間を表している。したがって、ｍｆｂｇ（ｎ）は今回の計算又は現在の学習値である。加えて、上記式（２）及び式（３）におけるｋａは、時間積分値ＳＤＡＦをメイン学習値ｍｆｂｇに反映させる程度、すなわち燃料供給量に反映させる程度を表すゲインである（０＜ｋａ≦１）。ゲインｋａの値が大きいほど燃料供給量の補正量が大きくなる。
【００５０】
加えて、本実施形態のメイン学習制御では、上述したように算出されたメイン学習値ｍｆｂｇに基づいて上流側空燃比センサ４０の出力空燃比と目標空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御される。具体的には、燃料噴射弁１１から各燃焼室５に供給される燃料供給量Ｑｉを算出するにあたり、上述した基本燃料供給量Ｑｂａｓｅ及びＦ／Ｂ補正量ＤＦｉに加えて、メイン学習値ｍｆｂｇが加算される（Ｑｉ＝Ｑｂａｓｅ＋ＤＦｉ＋ｍｆｂｇ（ｎ））。
【００５１】
図５は、メインフィードバック制御における空燃比偏差ＤＡＦの時間積分値ＳＤＡＦとメイン学習値ｍｆｂｇとのタイムチャートである。図５に示した例では、時刻ｔ1以前において、メイン学習値ｍｆｂｇはゼロとなっている。一方、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと目標空燃比との間に定常的な偏差があることから、時間積分値ＳＤＡＦはゼロから離れた値となっている。
【００５２】
その後、時刻ｔ1において、時間積分値ＳＤＡＦのメイン学習値ｍｆｂｇへの取り込みが行われる。この結果、メイン学習値ｍｆｂｇは、上記式（２）により、時刻ｔ1における時間積分値ＳＤＡＦにゲインｋａを乗算した値（ｋａ・ＳＤＡＦ）だけ増大せしめられる。一方、時間積分値ＳＤＡＦは、上記式（３）により、時刻ｔ1における時間積分値ＳＤＡＦにゲインｋａを乗算した値（ｋａ・ＳＤＡＦ）だけ減少せしめられる。
【００５３】
本実施形態では、このような操作が一定時間間隔で行われる。したがって、時刻ｔ1から一定時間経過した時刻ｔ2においても同様な制御が繰り返される。このため、時間積分値ＳＤＡＦの一部がメイン学習値ｍｆｂｇに取り込まれる。この結果、メイン学習値ｍｆｂｇは、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと目標空燃比との間の定常的な偏差を表した値となる。
【００５４】
ここで、メインフィードバック制御における各パラメータの値（時間積分値ＳＤＡＦを含む）は、ＥＣＵ３１のＲＡＭ３３のうち、内燃機関のイグニッションキーがオフにされるとゼロにリセットされるメモリに記憶されている。一方、メイン学習値ｍｆｂｇは、ＥＣＵ３１のＲＡＭ３３のうち、内燃機関のイグニッションキーがオフにされても消去されないメモリに記憶されている。したがって、上述したように、時間積分値ＳＤＡＦの一部をメイン学習値ｍｆｂｇに順次取り込んでいくことにより、内燃機関の始動時から上流側空燃比センサ４０の出力空燃比と目標空燃比との差を補償することができる。
【００５５】
＜サブフィードバック制御＞
次に、サブフィードバック制御について説明する。サブフィードバック制御では、下流側空燃比センサ４１の出力空燃比等に基づいて目標空燃比がリッチ空燃比とリーン空燃比とに交互に設定される。
【００５６】
具体的には、下流側空燃比センサ４１の出力空燃比がリッチ空燃比となったときに、目標空燃比がリーン設定空燃比に設定される。この結果、上流側排気浄化触媒２０に流入する排気ガスの空燃比もリーン設定空燃比になる。ここで、リーン設定空燃比は、理論空燃比（制御中心となる空燃比）よりも或る程度リーンである予め定められた一定値の空燃比であり、例えば、１４．７５程度とされる。また、リーン設定空燃比は、制御中心となる空燃比（本実施形態では、理論空燃比）に正の空燃比補正量を加算した空燃比として表すこともできる。加えて、本実施形態では、下流側空燃比センサ４１の出力空燃比が理論空燃比よりも僅かにリッチであるリッチ判定空燃比（例えば、１４．５５）以下になったときに、下流側空燃比センサ４１の出力空燃比がリッチ空燃比になったと判断される。
【００５７】
加えて、本実施形態のサブフィードバック制御では、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが最大吸蔵可能酸素量Ｃｍａｘよりも少ない予め定められた切替基準吸蔵量Ｃｒｅｆ以上になると、それまでリーン設定空燃比だった目標空燃比がリッチ設定空燃比に設定される。この結果、上流側排気浄化触媒２０に流入する排気ガスの空燃比もリッチ設定空燃比になる。ここで、リッチ設定空燃比は、理論空燃比（制御中心となる空燃比）よりも或る程度リッチである予め定められた空燃比であり、例えば、１４．５０とされる。なお、本実施形態では、リッチ設定空燃比の理論空燃比からの差（リッチ度合い）は、リーン設定空燃比の理論空燃比からの差（リーン度合い）以下とされる。
【００５８】
なお、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは、上流側排気浄化触媒２０に流入する排気ガスの酸素過不足量の積算値に基づいて推定される。ここで、酸素過不足量は、上流側排気浄化触媒２０に流入する排気ガスの空燃比を理論空燃比にしようとしたときに過剰となる酸素の量又は不足する酸素の量（過剰な未燃ガスの量）を意味する。特に、目標空燃比がリーン設定空燃比に設定されている期間中には、上流側排気浄化触媒２０に流入する排気ガス中の酸素は過剰となり、この過剰な酸素は上流側排気浄化触媒２０に吸蔵される。したがって、この期間中における酸素過不足量の積算値（以下、「積算酸素過不足量」という）は、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの推定値であるといえる。
【００５９】
酸素過不足量の算出は、上流側空燃比センサ４０の出力空燃比、及び空気流量検出装置３９の出力等に基づいて算出される燃焼室５内への吸入空気量の推定値又は燃料噴射弁１１からの燃料供給量等に基づいて行われる。具体的には、酸素過不足量ＯＥＤは、例えば、下記式（４）により算出される。
ＯＥＤ＝０．２３×Ｑｉ×（ＡＦｕｐ−ＡＦＲ）      …（４）
ここで、０．２３は空気中の酸素濃度、Ｑｉは燃料供給量、ＡＦｕｐは上流側空燃比センサ４０の出力空燃比、ＡＦＲは制御中心となる空燃比（本実施形態では、基本的には理論空燃比）をそれぞれ表している。
【００６０】
その後、下流側空燃比センサ４１の出力空燃比が再びリッチ判定空燃比以下になると、目標空燃比が再びリーン設定空燃比とされ、その後、同様な操作が繰り返される。このように本実施形態のサブフィードバック制御では、上流側排気浄化触媒２０に流入する排気ガスの目標空燃比がリーン設定空燃比とリッチ設定空燃比とに交互に繰り返し設定される。換言すると、本実施形態のサブフィードバック制御では、上流側空燃比センサ４０の出力空燃比（すなわち、上流側排気浄化触媒２０に流入する排気ガスの空燃比）がリッチ空燃比とリーン空燃比とに交互に切り替えられる。
【００６１】
＜タイムチャートを用いたサブフィードバック制御の説明＞
図６を参照して、上述したような操作について具体的に説明する。図６は、本実施形態のサブフィードバック制御を行った場合における、空燃比補正量ＡＦＣ、上流側空燃比センサ４０の出力空燃比ＡＦｕｐ、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡ、積算酸素過不足量ΣＯＥＤ、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎ及び上流側排気浄化触媒２０から流出する排気ガス中のＮＯｘ濃度のタイムチャートである。
【００６２】
なお、空燃比補正量ＡＦＣは、上流側排気浄化触媒２０に流入する排気ガスの目標空燃比に関する補正量である。空燃比補正量ＡＦＣが０のときには目標空燃比は制御中心となる空燃比（以下、「制御中心空燃比」という）に等しい空燃比（本実施形態では、基本的に理論空燃比）とされる。一方、空燃比補正量ＡＦＣが正の値であるときには目標空燃比は制御中心空燃比よりもリーンな空燃比（本実施形態では、リーン空燃比）となり、空燃比補正量ＡＦＣが負の値であるときには目標空燃比は制御中心空燃比よりもリッチな空燃比（本実施形態では、リッチ空燃比）となる。また、「制御中心空燃比」は、機関運転状態に応じて空燃比補正量ＡＦＣを加算する対象となる空燃比、すなわち空燃比補正量ＡＦＣに応じて目標空燃比を変動させる際に基準となる空燃比を意味する。
【００６３】
図示した例では、時刻ｔ1以前の状態では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈ（リッチ設定空燃比に相当）とされている。すなわち、目標空燃比はリッチ空燃比とされており、これに伴って上流側空燃比センサ４０の出力空燃比ＡＦｕｐがリッチ空燃比となる。上流側排気浄化触媒２０に流入する排気ガス中に含まれている未燃ガスは、上流側排気浄化触媒２０で浄化され、これに伴って、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは徐々に減少していく。上流側排気浄化触媒２０における浄化により上流側排気浄化触媒２０から流出する排気ガス中には未燃ガス等は含まれていないため、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎはほぼ理論空燃比となる。このとき、上流側排気浄化触媒２０からのＮＯｘ排出量はほぼゼロとなっている。
【００６４】
上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが徐々に減少すると、酸素吸蔵量ＯＳＡはゼロに近づき、これに伴って、上流側排気浄化触媒２０に流入した未燃ガス等の一部は上流側排気浄化触媒２０で浄化されずに流出し始める。これにより、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが徐々に低下し、時刻ｔ1において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する。
【００６５】
本実施形態では、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になると、酸素吸蔵量ＯＳＡを増大させるべく、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎ（リーン設定空燃比に相当）に切り替えられる。また、このとき、積算酸素過不足量ΣＯＥＤは０にリセットされる。
【００６６】
時刻ｔ1において、目標空燃比をリーン空燃比に切り替えると、上流側排気浄化触媒２０に流入する排気ガスの空燃比はリッチ空燃比からリーン空燃比に変化する。時刻ｔ1において上流側排気浄化触媒２０に流入する排気ガスの空燃比がリーン空燃比に変化すると、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは増大する。また、これに伴って、積算酸素過不足量ΣＯＥＤも徐々に増大していく。
【００６７】
これにより、上流側排気浄化触媒２０から流出する排気ガスの空燃比が理論空燃比へと変化し、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎも理論空燃比に収束する。このとき、上流側排気浄化触媒２０に流入する排気ガスの空燃比はリーン空燃比となっているが、上流側排気浄化触媒２０の酸素吸蔵能力には十分な余裕があるため、流入する排気ガス中の酸素は上流側排気浄化触媒２０に吸蔵され、ＮＯｘは還元浄化される。このため、上流側排気浄化触媒２０からのＮＯｘの排出はほぼゼロとなる。
【００６８】
その後、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが増大すると、時刻ｔ2において、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが切替基準吸蔵量Ｃｒｅｆに到達する。このため、酸素吸蔵量ＯＳＡの推定値である積算酸素過不足量ΣＯＥＤが、切替基準吸蔵量Ｃｒｅｆに相当する切替基準値ＯＥＤｒｅｆに到達する。本実施形態では、積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆ以上になると、上流側排気浄化触媒２０への酸素の吸蔵を中止すべく、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。したがって、目標空燃比はリッチ空燃比とされる。また、このとき、積算酸素過不足量ΣＯＥＤが０にリセットされる。
【００６９】
なお、切替基準吸蔵量Ｃｒｅｆは、上流側排気浄化触媒２０が未使用であるときの最大吸蔵可能酸素量Ｃｍａｘの３／４以下、好ましくは１／２以下、より好ましくは１／５以下とされる。この結果、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが理論空燃比よりも僅かにリーンなリーン判定空燃比（例えば、１４．６５。理論空燃比からの偏差がリッチ判定空燃比と理論空燃比との差と同程度のリーン空燃比）に到達する前に空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられることになる。
【００７０】
時刻ｔ2において目標空燃比をリッチ空燃比に切り替えると、上流側排気浄化触媒２０に流入する排気ガスの空燃比はリーン空燃比からリッチ空燃比に変化する。上流側排気浄化触媒２０に流入する排気ガス中には未燃ガス等が含まれることになるため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは徐々に減少していく。このときの上流側排気浄化触媒２０からのＮＯｘの排出はほぼゼロとなる。
【００７１】
上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは徐々に減少していくと、時刻ｔ4において、時刻ｔ1と同様に、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する。これにより、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。その後、上述した時刻ｔ1〜ｔ4のサイクルが繰り返される。
【００７２】
以上の説明から分かるように本実施形態のサブフィードバック制御によれば、上流側排気浄化触媒２０からのＮＯｘ排出量を常に抑制することができる。すなわち、上述した制御を行っている限り、基本的には上流側排気浄化触媒２０からのＮＯｘ排出量をほぼゼロとすることができる。また、積算酸素過不足量を算出する際の積算期間が短いため、長期間に亘って積算する場合に比べて算出誤差が生じにくい。このため、積算酸素過不足量の算出誤差によりＮＯｘが排出されてしまうことが抑制される。
【００７３】
なお、上記実施形態では、時刻ｔ1〜ｔ2において、空燃比補正量ＡＦＣはリーン設定補正量ＡＦＣｌｅａｎに維持される。しかしながら、斯かる期間において、空燃比補正量ＡＦＣは必ずしも一定に維持されている必要はなく、徐々に減少させる等、変動するように設定されてもよい。或いは、時刻ｔ1〜ｔ2の期間中において、一時的に空燃比補正量ＡＦＣを０よりも小さな値（例えば、リッチ設定補正量等）としてもよい。
【００７４】
同様に、上記実施形態では、時刻ｔ2〜ｔ3において、空燃比補正量ＡＦＣはリッチ設定補正量ＡＦＣｒｉｃｈに維持される。しかしながら、斯かる期間において、空燃比補正量ＡＦＣは必ずしも一定に維持されている必要はなく、徐々に増大させる等、変動するように設定されてもよい。或いは、時刻ｔ2〜ｔ3の期間中において、一時的に空燃比補正量ＡＦＣを０よりも大きな値（例えば、リーン設定補正量等）としてもよい。
【００７５】
なお、このような本実施形態における空燃比補正量ＡＦＣの制御、すなわち目標空燃比の制御は、制御装置として機能するＥＣＵ３１によって行われる。したがって、ＥＣＵ３１は、下流側空燃比センサ４１によって検出された排気ガスの空燃比がリッチ判定空燃比以下となったときに、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが切替基準吸蔵量Ｃｒｅｆ以上になったと推定されるまで、上流側排気浄化触媒２０に流入する排気ガスの目標空燃比を継続的又は断続的にリーン空燃比に設定すると共に、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが切替基準吸蔵量Ｃｒｅｆ以上になったと推定されたときに、酸素吸蔵量ＯＳＡが最大吸蔵可能酸素量Ｃｍａｘに達することなく下流側空燃比センサ４１によって検出された排気ガスの空燃比がリッチ判定空燃比以下となるまで、目標空燃比を継続的又は断続的にリッチ空燃比に設定するサブフィードバック制御を行っているといえる。
【００７６】
より簡単に言えば、本実施形態のサブフィードバック制御では、下流側空燃比センサ４１によって検出された空燃比がリッチ判定空燃比以下になったときに目標空燃比がリーン空燃比に切り替えられると共に、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが切替基準吸蔵量Ｃｒｅｆ以上になったときに目標空燃比がリッチ空燃比に切り替えられる。
【００７７】
なお、上記実施形態では、サブフィードバック制御において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になったときに目標空燃比がリーン空燃比に切り替えられる。また、積算酸素過不足量ΣＯＥＤが所定の切替基準値ＯＥＤｒｅｆ以上になったときに目標空燃比がリッチ空燃比に切り替えられる。しかしながら、サブフィードバック制御として、別の制御を行ってもよい。斯かる別の制御としては、例えば、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリーン判定空燃比以上になったときに目標空燃比をリッチ空燃比に切り替え、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比以下になったときに目標空燃比をリーン空燃比に切り替える制御が考えられる。
【００７８】
＜上流側空燃比センサにおけるずれ＞
ところで、機関本体１が複数の気筒を有する場合、各燃料噴射弁１１の形状誤差等により各気筒から排出される排気ガスの空燃比には気筒間で僅かながらずれが生じる場合がある。一方、上流側空燃比センサ４０は排気マニホルド１９の集合部に配置されるが、その配置位置に応じて各気筒から排出された排気ガスが上流側空燃比センサ４０に曝される程度が気筒間で異なる。この結果、上流側空燃比センサ４０の出力空燃比は、或る特定の気筒から排出された排気ガスの空燃比の影響を強く受けることになる。このため、この或る特定の気筒から排出された排気ガスの空燃比が全気筒から排出される排気ガスの平均空燃比とは異なる空燃比となっている場合、平均空燃比と上流側空燃比センサ４０の出力空燃比との間にはずれが生じる。すなわち、上流側空燃比センサ４０の出力空燃比は実際の排気ガスの平均空燃比よりもリッチ側又はリーン側にずれることになる。
【００７９】
また、未燃ガス等のうち水素は空燃比センサ４０、４１の拡散律速層５４の通過速度が速い。このため、排気ガス中の水素濃度が高いと、上流側空燃比センサ４０の出力空燃比が排気ガスの実際の空燃比よりも低い側（すなわち、リッチ側）にずれてしまう。
【００８０】
このように上流側空燃比センサ４０の出力空燃比にずれが生じていると、上述したようなサブフィードバック制御を行っていても、上流側排気浄化触媒２０からＮＯｘ及び酸素が流出したり、未燃ガス等の流出頻度が高くなったりしてしまう可能性が高くなる。以下では、図７を参照して斯かる現象について説明する。
【００８１】
図７は、図６と同様な、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡ等のタイムチャートである。図７は、上流側空燃比センサ４０の出力空燃比がリッチ側にずれている場合を示している。図中、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおける実線は、上流側空燃比センサ４０の出力空燃比を示している。一方、破線は、上流側空燃比センサ４０周りを流通する排気ガスの実際の空燃比を示している。
【００８２】
図７に示した例においても、時刻ｔ1以前の状態では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈとされており、よって目標空燃比がリッチ設定空燃比とされている。ここで、上述したメインフィードバック制御及びメイン学習制御により、上流側空燃比センサ４０の出力空燃比ＡＦｕｐがリッチ設定空燃比になるように燃料噴射弁１１からの燃料供給量が制御される。このため、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリッチ設定空燃比と等しい空燃比となる。しかしながら、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリッチ側にずれているため、排気ガスの実際の空燃比はリッチ設定空燃比よりもリーン側の空燃比となっている。すなわち、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは、実際の空燃比（図中の破線）よりも低い（リッチ側）ものとなっている。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの減少速度は遅いものとなる。
【００８３】
また、図７に示した例では、時刻ｔ1において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する。このため、上述したように、時刻ｔ1において、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。すなわち、目標空燃比がリーン設定空燃比に切り替えられる。
【００８４】
これに伴って、上述したメインフィードバック制御及びメイン学習制御により、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリーン設定空燃比に等しい空燃比となる。しかしながら、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリッチ側にずれているため、排気ガスの実際の空燃比はリーン設定空燃比よりもリーンの空燃比となっている。すなわち、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは、実際の空燃比（図中の破線）よりも低い（リッチ側）ものとなっている。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの増加速度は速くなると共に、目標空燃比をリーン設定空燃比としている間に上流側排気浄化触媒２０に供給される実際の酸素量は切替基準吸蔵量Ｃｒｅｆよりも多くなる。
【００８５】
このように、上流側空燃比センサ４０の出力空燃比ＡＦｄｗｎにずれが生じていると、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに設定されているときに上流側排気浄化触媒２０に流入する排気ガスの空燃比のリーン度合いが大きくなる。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが最大吸蔵可能酸素量Ｃｍａｘに達していなくても、上流側排気浄化触媒２０に流入した酸素を全て吸蔵することができずに、上流側排気浄化触媒２０からＮＯｘや酸素が流出してしまう場合がある。また、時刻ｔ2において、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは切替基準吸蔵量Ｃｒｅｆ以上になっており、時刻ｔ2近傍において意図しない空燃比のずれ等が生じると上流側排気浄化触媒２０からＮＯｘや酸素が流出する可能性がある。
【００８６】
以上より、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれを検出することが必要になると共に、検出されたずれに基づいて出力空燃比等の補正を行うことが必要である。
【００８７】
＜サブ学習制御＞
そこで、本実施形態では、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれを補償すべく、サブフィードバック学習制御（サブ学習制御）が行われる。サブ学習制御には、サブ学習基本制御及び張付き学習制御が含まれる。以下ではまず、サブ学習基本制御について説明する。サブ学習基本制御では、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐ及び下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎに基づいて上流側空燃比センサ４０の出力空燃比ＡＦｄｗｎと上流側排気浄化触媒２０に流入する排気ガスの空燃比との差に応じて変化するサブ学習値が算出される。加えて、算出されたサブ学習値に基づいて上流側空燃比センサ４０の出力空燃比ＡＦｕｐと上流側排気浄化触媒２０に流入する排気ガスの空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御される。以下では、このサブフィードバック学習制御について説明する。
【００８８】
ここで、目標空燃比をリーン空燃比に切り替えてから、積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆ以上になるまで、すなわち目標空燃比を再びリッチ空燃比に切り替えるまでの期間を酸素増大期間とする。同様に、目標空燃比をリッチ空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比ＡＦｕｐがリッチ判定空燃比以下になるまで、すなわち目標空燃比を再びリーン空燃比に切り替えるまでの期間を酸素減少期間とする。本実施形態のサブ学習基本制御では、酸素増大期間における積算酸素過不足量ΣＯＥＤの絶対値として積算酸素過剰量を算出する。なお、積算酸素過剰量は、酸素増大期間において、上流側排気浄化触媒２０に流入する排気ガスの空燃比を理論空燃比にしようとしたときに過剰となる酸素の量の積算値を表す。加えて、本実施形態のサブ学習基本制御では、酸素減少期間における積算酸素過不足量ΣＯＥＤの絶対値として積算酸素不足量を算出する。なお、積算酸素不足量は、酸素減少期間において、上流側排気浄化触媒２０に流入する排気ガスの空燃比を理論空燃比にしようとしたときに不足する酸素の量の積算値を表す。そして、これら積算酸素過剰量と積算酸素不足量との差が小さくなるように制御中心空燃比ＡＦＲが補正される。図８にこの様子を示す。
【００８９】
図８は、制御中心空燃比ＡＦＲ、空燃比補正量ＡＦＣ、上流側空燃比センサ４０の出力空燃比ＡＦｕｐ、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡ、積算酸素過不足量ΣＯＥＤ、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎ及びサブ学習値ｓｆｂｇのタイムチャートである。図８は、図７と同様に、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが低い側（リッチ側）にずれている場合を示している。なお、サブ学習値ｓｆｂｇは、上流側空燃比センサ４０の出力空燃比（出力電流）ＡＦｕｐのずれに応じて変化する値であり、本実施形態では制御中心空燃比ＡＦＲを補正するのに用いられる。また、図中、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおける実線は、上流側空燃比センサ４０の出力空燃比を、破線は、上流側空燃比センサ４０周りを流通する排気ガスの実際の空燃比をそれぞれ示している。加えて、一点鎖線は、目標空燃比、すなわち理論空燃比（後述する基本制御中心空燃比）に空燃比補正量ＡＦＣを加算した空燃比を示している。
【００９０】
図８に示した例では、図６及び図７と同様に、時刻ｔ1以前の状態では、制御中心空燃比が理論空燃比とされ、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈとされている。このとき、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは実線で示したようにリッチ設定空燃比に相当する空燃比となる。しかしながら、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにはずれが生じているため、排気ガスの実際の空燃比はリッチ設定空燃比よりもリーンの空燃比となっている（図８の破線）。ただし、図８に示した例では、図８の破線から分かるように、時刻ｔ1以前の実際の排気ガスの空燃比はリッチ設定空燃比よりもリーンながらも、リッチ空燃比となっている。したがって、上流側排気浄化触媒２０の酸素吸蔵量は徐々に減少していく。
【００９１】
時刻ｔ1において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する。これにより、上述したように、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。時刻ｔ1以降は、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリーン設定空燃比に相当する空燃比となる。しかしながら、上流側空燃比センサ４０の出力空燃比ＡＦｕｐのずれにより、排気ガスの実際の空燃比は、リーン設定空燃比よりもリーンな空燃比、すなわちリーン度合いの大きい空燃比となる（図８の破線を参照）。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは急速に増大する。
【００９２】
一方、酸素過不足量ＯＥＤは、上流側空燃比センサ４０の出力空燃比ＡＦｕｐに基づいて算出される。しかしながら、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにはずれが生じている。したがって、算出された酸素過不足量ＯＥＤは、実際の酸素過不足量ＯＥＤよりも少ない（すなわち、酸素量が少ない）値となる。その結果、算出された積算酸素過不足量ΣＯＥＤは、実際の酸素吸蔵量ＯＳＡよりも少なくなる。
【００９３】
時刻ｔ2では、積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達する。このため、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。したがって、目標空燃比はリッチ空燃比とされる。このとき、実際の酸素吸蔵量ＯＳＡは図８に示したように切替基準吸蔵量Ｃｒｅｆよりも多くなっている。
【００９４】
時刻ｔ2以降は、時刻ｔ1以前の状態と同様に、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈとされ、よって目標空燃比はリッチ空燃比とされる。このときも、排気ガスの実際の空燃比はリッチ設定空燃比よりもリーンの空燃比となっている。この結果、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの減少速度は遅くなる。加えて、上述したように、時刻ｔ2において、上流側排気浄化触媒２０の実際の酸素吸蔵量ＯＳＡは切替基準吸蔵量Ｃｒｅｆよりも多くなっている。このため、上流側排気浄化触媒２０の実際の酸素吸蔵量ＯＳＡがゼロに到達するまでには時間がかかる。
【００９５】
時刻ｔ3では、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する。これにより、上述したように、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。したがって、目標空燃比がリッチ設定空燃比からリーン設定空燃比へと切り替えられる。
【００９６】
ところで、本実施形態では、上述したように、時刻ｔ1から時刻ｔ2までにおいて、積算酸素過不足量ΣＯＥＤが算出される。ここで、目標空燃比をリーン空燃比に切り替えた時（時刻ｔ1）から上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの推定値が切替基準吸蔵量Ｃｒｅｆ以上になった時（時刻ｔ2）までの期間を酸素増大期間Ｔｉｎｃと称すると、本実施形態では酸素増大期間Ｔｉｎｃに積算酸素過不足量ΣＯＥＤが算出される。図８では、時刻ｔ1〜時刻ｔ2の酸素増大期間Ｔｉｎｃにおける積算酸素過不足量ΣＯＥＤの絶対値（積算酸素過剰量）をＲ1で示している。
【００９７】
この積算酸素過剰量Ｒ1は、時刻ｔ2における酸素吸蔵量ＯＳＡに相当する。しかしながら、上述したように、酸素過不足量ＯＥＤの推定には上流側空燃比センサ４０の出力空燃比ＡＦｕｐが用いられ、この出力空燃比ＡＦｕｐにはずれが生じている。このため、図８に示した例では、時刻ｔ1〜時刻ｔ2の積算酸素過剰量Ｒ1は、時刻ｔ2における実際の酸素吸蔵量ＯＳＡに相当する値よりも少ないものとなっている。
【００９８】
また、本実施形態では、時刻ｔ2から時刻ｔ3までにおいても、積算酸素過不足量ΣＯＥＤが算出される。ここで、目標空燃比をリッチ空燃比に切り替えた時（時刻ｔ2）から下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達する時（時刻ｔ3）までの期間を酸素減少期間Ｔｄｅｃと称すると、本実施形態では酸素減少期間Ｔｄｅｃに積算酸素過不足量ΣＯＥＤが算出される。図８では、時刻ｔ2〜時刻ｔ3の酸素減少期間Ｔｄｅｃにおける積算酸素過不足量ΣＯＥＤの絶対値（積算酸素不足量）をＦ1で示している。
【００９９】
この積算酸素不足量Ｆ1は、時刻ｔ2から時刻ｔ3までに上流側排気浄化触媒２０から放出された総酸素量に相当する。しかしながら、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにはずれが生じている。このため、図８に示した例では、時刻ｔ2〜時刻ｔ3の積算酸素不足量Ｆ1は、時刻ｔ2から時刻ｔ3までに上流側排気浄化触媒２０から実際に放出された総酸素量に相当する値よりも多いものとなっている。
【０１００】
ここで、酸素増大期間Ｔｉｎｃでは上流側排気浄化触媒２０に酸素が吸蔵されると共に、酸素減少期間Ｔｄｅｃでは吸蔵されていた酸素が全て放出される。したがって、積算酸素過剰量Ｒ1と、積算酸素不足量Ｆ1とは基本的に同一の値になるのが理想的である。ところが、上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにずれが生じている場合、このずれに応じてこれら積算値の値も変化する。上述したように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが実際の空燃比に対して低い側（リッチ側）にずれている場合、積算酸素過剰量Ｒ1に対して積算酸素不足量Ｆ1の方が多くなる。逆に、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが実際の空燃比に対して高い側（リーン側）にずれている場合、積算酸素過剰量Ｒ1に対して積算酸素不足量Ｆ1の方が少なくなる。加えて、積算酸素過剰量Ｒ1と積算酸素不足量Ｆ1との差ΔΣＯＥＤ（＝Ｒ1−Ｆ1。以下、「過不足量誤差」という）は上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれの程度を表している。この過不足量誤差ΔΣＯＥＤが大きくなるほど、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれが大きいといえる。換言すると、過不足量誤差ΔΣＯＥＤは、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比との差を表しているといえる。
【０１０１】
そこで、本実施形態では、過不足量誤差ΔΣＯＥＤに基づいて、制御中心空燃比ＡＦＲを補正するようにしている。特に、本実施形態では、積算酸素過剰量Ｒ1と積算酸素不足量Ｆ1との差ΔΣＯＥＤが小さくなるように制御中心空燃比ＡＦＲを補正するようにしている。
【０１０２】
具体的には、本実施形態では、下記式（５）によりサブ学習値ｓｆｂｇを算出すると共に、下記式（６）により制御中心空燃比ＡＦＲが補正される。
ｓｆｂｇ（ｎ）＝ｓｆｂｇ（ｎ−１）＋ｋｂ・ΔΣＯＥＤ      …（５）
ＡＦＲ＝ＡＦＲｂａｓｅ＋ｓｆｂｇ（ｎ）      …（６）
なお、上記式（５）において、ｎは計算回数又は時間を表している。したがって、ｓｆｂｇ（ｎ）は今回の計算又は現在のサブ学習値である。加えて、上記式（５）におけるｋｂは、過不足量誤差ΔΣＯＥＤを制御中心空燃比ＡＦＲに反映させる程度を表すゲインである（０＜ｋｂ≦１）。ゲインｋｂの値が大きいほど制御中心空燃比ＡＦＲの補正量が大きくなる。さらに、上記式（６）において、基本制御中心空燃比ＡＦＲｂａｓｅは、基本となる制御中心空燃比であり、本実施形態では理論空燃比である。
【０１０３】
式（６）からわかるように、サブ学習値ｓｆｂｇが負の値であるときには制御中心空燃比ＡＦＲがリッチ側に変更され、よって上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に変更される。また、その絶対値が大きくなるほど、制御中心空燃比ＡＦＲがリッチ側に変更される程度が大きくなる。したがって、サブ学習値ｓｆｂｇがゼロであるときに上流側排気浄化触媒２０に流入する排気ガスの空燃比に対して、サブ学習値ｓｆｂｇが負の値であるときの絶対値（リッチ側絶対値）が大きくなるほど、上流側排気浄化触媒２０に流入する排気ガスの空燃比が大きくリッチ側に変化することになる。
【０１０４】
同様に、サブ学習値ｓｆｂｇが正の値であるときには制御中心空燃比ＡＦＲがリーン側に変更され、よって上流側排気浄化触媒２０に流入する排気ガスの空燃比がリーン側に変更される。また、その絶対値が大きくなるほど、制御中心空燃比ＡＦＲがリーン側に変更される程度が大きくなる。したがって、サブ学習値ｓｆｂｇがゼロであるときに上流側排気浄化触媒２０に流入する排気ガスの空燃比に対して、サブ学習値ｓｆｂｇが正の値であるときの絶対値（リーン側絶対値）が大きくなるほど、上流側排気浄化触媒２０に流入する排気ガスの空燃比が大きくリーン側に変化することになる。
【０１０５】
上述したように、過不足量誤差ΔΣＯＥＤは、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比との差を表している。加えて、上述したように、メインフィードバック制御により上流側空燃比センサ４０の出力空燃比ＡＦｕｐは基本的に目標空燃比に等しくなるように制御される。したがって、過不足量誤差ΔΣＯＥＤは、目標空空燃比と上流側排気浄化触媒２０に流入する排気ガスの空燃比との差に応じて変化し、よってサブ学習値ｓｆｂｇも上流側排気浄化触媒２０に流入する排気ガスの空燃比との差に応じて変化するといえる。特に、サブ学習基本制御では、目標空燃比と上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比との差に所定の係数（ゲインｋｂ）を乗算した値を積算することでサブ学習値が算出されているといえる。
【０１０６】
そして、サブ学習値ｓｆｂｇに基づいて上述したように制御中心空燃比ＡＦＲを補正することにより、目標空燃比と上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御されることになる。したがって、サブ学習基本制御では、サブ学習値ｓｆｂｇに基づいて目標空燃比と実際の空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量が制御される。
【０１０７】
図８の時刻ｔ3においては、上述したように、積算酸素過剰量Ｒ1及び積算酸素不足量Ｆ1に基づいてサブ学習値ｓｆｂｇが算出される。特に、図８に示した例では、積算酸素過剰量Ｒ1よりも積算酸素不足量Ｆ1の方が多いことから、時刻ｔ3においてサブ学習値ｓｆｂｇは減少せしめられる。
【０１０８】
ここで、制御中心空燃比ＡＦＲは、上記式（６）を用いてサブ学習値ｓｆｂｇに基づいて補正される。図８に示した例では、サブ学習値ｓｆｂｇは負の値となっているため、制御中心空燃比ＡＦＲは、基本制御中心空燃比ＡＦＲｂａｓｅよりも小さな値、すなわちリッチ側の値となっている。これにより、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に補正されることになる。
【０１０９】
この結果、時刻ｔ3以降、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比の目標空燃比に対するずれは時刻ｔ3以前と比べて小さなものとなる。したがって、時刻ｔ3以降、実際の空燃比を表す破線と目標空燃比を表す一点鎖線との間の差は、時刻ｔ3以前における差よりも小さくなっている。
【０１１０】
また、時刻ｔ3以降も、時刻ｔ1〜時刻ｔ2における操作と同様な操作が行われる。したがって、時刻ｔ4において積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達すると、目標空燃比がリーン設定空燃比からリッチ設定空燃比へと切り替えられる。その後、時刻ｔ5において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達すると、再度、目標空燃比がリーン設定空燃比に切り替えられる。
【０１１１】
時刻ｔ3〜時刻ｔ4は、上述したように酸素増大期間Ｔｉｎｃに該当し、よってこの間の積算酸素過不足量ΣＯＥＤの絶対値は図８の積算酸素過剰量Ｒ2で表せる。また、時刻ｔ4〜時刻ｔ5は、上述したように酸素減少期間Ｔｄｅｃに該当し、よってこの間の積算酸素過不足量ΣＯＥＤの絶対値は図８の積算酸素不足量Ｆ2で表せる。そして、これら積算酸素過剰量Ｒ2と積算酸素不足量Ｆ2との差ΔΣＯＥＤ（＝Ｒ2−Ｆ2）に基づいて、上記式（５）を用いてサブ学習値ｓｆｂｇが更新される。本実施形態では、時刻ｔ5以降も同様な制御が繰り返され、これによりサブ学習値ｓｆｂｇの更新が繰り返される。
【０１１２】
サブ学習基本制御によりこのようにサブ学習値ｓｆｂｇの更新を行うことにより、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは徐々に目標空燃比から離れていくが、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比は徐々に目標空燃比に近づいていく。これにより、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれを補償することができる。
【０１１３】
なお、図８に示したように、サブ学習値ｓｆｂｇには上限ガード値Ｇｕｐ及び下限ガード値Ｇｌｏｗが設定されている。このため、サブ学習値ｓｆｂｇは、上限ガード値Ｇｕｐ以下であって下限ガード値Ｇｌｏｗ以上の範囲内で設定される。したがって、上述した式（５）によって算出されたサブ学習値が上限ガード値Ｇｕｐよりも大きくなるような場合には、サブ学習値ｓｆｂｇは上限ガード値Ｇｕｐに設定されることになる。同様に、式（５）によって算出されたサブ学習値が下限ガード値Ｇｌｏｗよりも小さくなるような場合には、サブ学習値ｓｆｂｇは下限ガード値Ｇｌｏｗに設定されることになる。このように上限ガード値Ｇｕｐ及び下限ガード値Ｇｌｏｗを設定することにより、何らかの故障等によりサブ学習値ｓｆｂｇが極端に大きくなったり極端に小さくなったりしてしまうことが防止される。
【０１１４】
また、上述したように、サブ学習値ｓｆｂｇの更新は、酸素増大期間Ｔｉｎｃにおける積算酸素過不足量ΣＯＥＤと、この酸素増大期間Ｔｉｎｃの直後に続く酸素減少期間Ｔｄｅｃにおける積算酸素過不足量ΣＯＥＤとに基づいて行われるのが好ましい。これは、上述したように、酸素増大期間Ｔｉｎｃに上流側排気浄化触媒２０に吸蔵される総酸素量とこの直後に続く酸素減少期間Ｔｄｅｃに上流側排気浄化触媒２０から放出される総酸素量が等しくなるためである。
【０１１５】
加えて、上記実施形態では、１回の酸素増大期間Ｔｉｎｃにおける積算酸素過不足量ΣＯＥＤと、１回の酸素減少期間Ｔｄｅｃにおける積算酸素過不足量ΣＯＥＤとに基づいてサブ学習値ｓｆｂｇの更新が行われている。しかしながら、複数回の酸素増大期間Ｔｉｎｃにおける積算酸素過不足量ΣＯＥＤの合計値又は平均値と、複数回の酸素減少期間Ｔｄｅｃにおける積算酸素過不足量ΣＯＥＤの合計値又は平均値とに基づいてサブ学習値ｓｆｂｇの更新を行ってもよい。
【０１１６】
また、上記実施形態では、サブ学習値ｓｆｂｇに基づいて、制御中心空燃比を補正することとしている。しかしながら、サブ学習値ｓｆｂｇに基づいて補正するのは、サブ学習値に基づいて上流側排気浄化触媒２０に流入する排気ガスの空燃比と目標空燃比との差が小さくなるように燃料噴射弁１１からの燃料供給量を制御することができれば、他のパラメータであってもよい。他のパラメータとしては、例えば、燃焼室５内への燃料供給量や、上流側空燃比センサ４０の出力空燃比、空燃比補正量等が挙げられる。
【０１１７】
なお、サブフィードバック制御として上述した別の制御を行うことができる。具体的には、別の制御としては、例えば、上述したように下流側空燃比センサ４１の出力空燃比がリーン判定空燃比以上になったときに目標空燃比をリッチ空燃比に切り替え、下流側空燃比センサ４１の出力空燃比がリッチ判定空燃比以下になったときに目標空燃比をリーン空燃比に切り替える制御が考えられる。
【０１１８】
この場合、目標空燃比をリッチ空燃比に切り替えてから下流側空燃比センサ４１の出力空燃比ＡＦｕｐがリッチ判定空燃比以下になるまでの酸素減少期間における積算酸素過不足量の絶対値として積算酸素不足量が算出される。加えて、目標空燃比をリーン空燃比に切り替えてから下流側空燃比センサ４１の出力空燃比がリーン判定空燃比以上になるまでの酸素増大期間における積算酸素過不足量の絶対値として積算酸素過剰量が算出される。そして、これら積算酸素過剰量と積算酸素不足量との差が小さくなるように制御中心空燃比等が補正されることになる。
【０１１９】
したがって、以上をまとめると、本実施形態では、サブ学習基本制御において、目標空燃比をリーン空燃比に切り替えてから再びリッチ空燃比に切り替えるまでの酸素増大期間における積算酸素過剰量と、目標空燃比をリッチ空燃比に切り替えてから再びリーン空燃比に切り替えるまでの酸素減少期間における積算酸素不足量とに基づいて、これら積算酸素過剰量と積算酸素不足量との差が小さくなるように空燃比に関するパラメータが補正されるといえる。積算酸素過剰量と積算酸素不足量との差は、目標空燃比と上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比との差に応じて変化することから、本実施形態では、サブ学習基本制御において、上流側排気浄化触媒２０に流入する排気ガスの空燃比と目標空燃比との差が小さくなるように内燃機関の燃焼室への燃料供給量を制御しているといえる。
【０１２０】
＜上流側空燃比センサにおける大きなずれ＞
ところで、図７に示した例では、上流側空燃比センサ４０の出力空燃比にずれが生じているが、その程度はそれほど大きくない場合を示している。したがって、図７の破線からもわかるように、目標空燃比がリッチ設定空燃比に設定されている場合において、実際の排気ガスの空燃比は、リッチ設定空燃比よりもリーンながらも、リッチ空燃比となっている。
【０１２１】
これに対して、上流側空燃比センサ４０に生じているずれが大きくなると、目標空燃比がリッチ設定空燃比に設定されていても、実際の排気ガスの空燃比が理論空燃比になってしまう場合がある。この様子を、図９に示す。
【０１２２】
図９では、時刻ｔ1以前において、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎとされている。これに伴い、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリーン設定空燃比となる。ただし、上流側空燃比センサ４０の出力空燃比は大きくリッチ側にずれているため、排気ガスの実際の空燃比はリーン設定空燃比よりもリーンな空燃比となっている（図中の破線）。
【０１２３】
その後、時刻ｔ1において上流側空燃比センサ４０の出力空燃比ＡＦｕｐに基づいて算出された積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達すると、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。これに伴い、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリッチ設定空燃比に相当する空燃比となる。しかしながら、上流側空燃比センサ４０の出力空燃比は大きくリッチ側にずれているため、排気ガスの実際の空燃比は理論空燃比となっている（図中の破線）。
【０１２４】
この結果、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは変化せずに一定の値に維持される。このため、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから長時間が経過しても、上流側排気浄化触媒２０から未燃ガスが排出されることはなく、したがって、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎはほぼ理論空燃比のまま維持される。上述したように、空燃比補正量ＡＦＣのリッチ設定補正量ＡＦＣｒｉｃｈからリーン設定補正量ＡＦＣｌｅａｎへの切替は、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達した時に行われる。しかしながら、図９に示した例では、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが理論空燃比のまま維持されることから、空燃比補正量ＡＦＣは長時間に亘ってリッチ設定補正量ＡＦＣｒｉｃｈに維持されることになる。ここで、上述したサブ学習基本制御は、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈとリーン設定補正量ＡＦＣｌｅａｎとの間で交互に切り替えられることを前提としている。したがって、上流側空燃比センサ４０の出力空燃比が大きくずれている場合には、空燃比補正量ＡＦＣの切替が行われず、よって上述したサブ学習基本制御を行うことはできない。
【０１２５】
図１０は、上流側空燃比センサ４０の出力空燃比が極めて大きくリッチ側にずれている場合を示す図９と同様な図である。図１０に示した例では、図９に示した例と同様に、時刻ｔ1において、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。すなわち、時刻ｔ1において目標空燃比がリッチ設定空燃比に設定される。しかしながら、上流側空燃比センサ４０の出力空燃比のずれにより、実際の排気ガスの空燃比がリーン空燃比になっている（図中の破線）。
【０１２６】
この結果、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに設定されているにもかかわらず、上流側排気浄化触媒２０にはリーン空燃比の排気ガスが流入する。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは徐々に増大していき、ついには時刻ｔ2において最大吸蔵可能酸素量Ｃｍａｘに到達する。このように、酸素吸蔵量ＯＳＡが最大吸蔵可能酸素量Ｃｍａｘに到達すると、上流側排気浄化触媒２０はもはやこれ以上排気ガス中の酸素を吸蔵することができない。このため、上流側排気浄化触媒２０からは流入する排気ガス中に含まれていた酸素及びＮＯｘがそのまま流出し、結果的に、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが上昇する。しかしながら、空燃比補正量ＡＦＣのリッチ設定補正量ＡＦＣｒｉｃｈからリーン設定補正量ＡＦＣｌｅａｎへの切替は、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈに到達した時に行われる。このため、上流側空燃比センサ４０の出力空燃比が極めて大きくずれている場合にも、空燃比補正量ＡＦＣの切替が行われず、よって上述したサブ学習基本制御を行うことはできない。
【０１２７】
＜張付き学習制御＞
そこで、本実施形態のサブ学習制御では、上流側空燃比センサ４０の出力空燃比におけるずれが大きな場合であってもそのずれを補償すべく、上述したサブ学習基本制御に加えて、理論空燃比張付き学習制御、リーン張付き学習制御及びリッチ張付き学習制御が行われる。
【０１２８】
＜理論空燃比張付き学習＞
まず、理論空燃比張付き学習制御について説明する。理論空燃比張付き学習制御は、図１１に示した例のように、下流側空燃比センサ４１の出力空燃比が理論空燃比に張り付いてしまっている場合に行われる学習制御である。
【０１２９】
ここで、リッチ判定空燃比ＡＦｒｉｃｈとリーン判定空燃比ＡＦｌｅａｎとの間の領域を中間領域Ｍと称する。この中間領域Ｍは、リッチ判定空燃比とリーン判定空燃比との間の空燃比領域である理論空燃比近傍領域に相当する。理論空燃比張付き学習制御では、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから、すなわち目標空燃比をリッチ設定空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが予め定められた理論空燃比維持判定時間以上に亘って中間領域Ｍ内に維持されているか否かを判断する。そして、理論空燃比維持判定時間以上に亘って中間領域Ｍ内に維持されている場合には、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に変化するようにサブ学習値ｓｆｂｇが減少せしめられる。図１１にこの様子を示す。
【０１３０】
図１１は、空燃比補正量ＡＦＣ等のタイムチャートを示す図１０と同様な図である。図１１は、図９と同様に、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが低い側（リッチ側）に大きくずれている場合を示している。
【０１３１】
図示した例では、図９と同様に、時刻ｔ1以前において、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎとされている。その後、時刻ｔ1において、積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達し、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。しかしながら、上流側空燃比センサ４０の出力空燃比は大きくリッチ側にずれているため、図１１に示した例と同様に、排気ガスの実際の空燃比はほぼ理論空燃比となっている。このため、時刻ｔ1以降、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡは一定値に維持される。この結果、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎは長期間に亘って理論空燃比近傍に維持され、よって中間領域Ｍ内に維持される。
【０１３２】
そこで、本実施形態では、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから予め定められた理論空燃比維持判定時間Ｔｓｔｏ以上に亘って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが中間領域Ｍ内に維持されている場合には、制御中心空燃比ＡＦＲを補正するようにしている。特に、本実施形態では、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に変化するようにサブ学習値ｓｆｂｇが更新される。
【０１３３】
具体的には、本実施形態では、下記式（７）によりサブ学習値ｓｆｂｇを算出すると共に、上記式（６）により制御中心空燃比ＡＦＲが補正される。
ｓｆｂｇ（ｎ）＝ｓｆｂｇ（ｎ−１）＋ｋｃ・ＡＦＣｒｉｃｈ      …（７）
なお、上記式（７）において、ｋｃは、制御中心空燃比ＡＦＲを補正する程度を表すゲインである（０＜ｋｃ≦１）。ゲインｋｃの値が大きいほど、制御中心空燃比ＡＦＲの補正量が大きくなる。
【０１３４】
ここで、上述したように、空燃比補正量ＡＦＣの切替後に長期間に亘って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが中間領域Ｍ内に維持されている場合には、排気ガスの実際の空燃比はほぼ理論空燃比近傍の値となっている。このため、上流側空燃比センサ４０におけるずれは、制御中心空燃比（理論空燃比）と目標空燃比（この場合は、リッチ設定空燃比）との差と同程度になっている。本実施形態では、上記式（７）に示したように制御中心空燃比と目標空燃比との差に相当する空燃比補正量ＡＦＣに基づいてサブ学習値ｓｆｂｇを更新しており、これにより、より適切に上流側空燃比センサ４０の出力空燃比におけるずれを補償することができる。
【０１３５】
図１１に示した例では、時刻ｔ1から理論空燃比維持判定時間Ｔｓｔｏが経過した時刻ｔ2まで、空燃比補正量ＡＦＣはリッチ設定補正量ＡＦＣｒｉｃｈとされる。このため、式（７）を用いると、時刻ｔ2においてサブ学習値ｓｆｂｇは減少せしめられる。この結果、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比はリッチ側に変化することになる。これにより、時刻ｔ2以降、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比の目標空燃比に対するずれは時刻ｔ2以前と比べて小さなものとなる。したがって、時刻ｔ2以降、実際の空燃比を表す破線と目標空燃比を表す一点鎖線との間の差は、時刻ｔ2以前における差よりも小さくなっている。
【０１３６】
図１１に示した例では、ゲインｋｃを比較的小さい値にした例を示している。このため、時刻ｔ2においてサブ学習値ｓｆｂｇの更新が行われてもなお、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比の目標空燃比に対するずれが残っている。このため、排気ガスの実際の空燃比は、リッチ設定空燃比よりもリーンな空燃比、すなわちリッチ度合いの小さい空燃比となる（図１１の破線参照）。このため、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡの減少速度は遅い。
【０１３７】
この結果、時刻ｔ2から理論空燃比維持判定時間Ｔｓｔｏが経過した時刻ｔ3まで、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが理論空燃比近傍に維持され、よって中間領域Ｍ内に維持される。このため、図１１に示した例では、時刻ｔ3においても、式（７）を用いて、サブ学習値ｓｆｂｇの更新が行われる。
【０１３８】
図１１に示した例では、その後、時刻ｔ4において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下となる。このように、出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になった後には、上述したように空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎとリッチ設定補正量ＡＦＣｒｉｃｈとに交互に設定される。これに伴って、上述したサブ学習基本制御が行われるようになる。
【０１３９】
理論空燃比張付き学習制御によりこのようにサブ学習値ｓｆｂｇの更新を行うことにより、上流側空燃比センサ４０の出力空燃比ＡＦｕｐのずれが大きい場合であっても、サブ学習値の更新を行うことができる。これにより、上流側空燃比センサ４０の出力空燃比におけるずれを補償することができる。
【０１４０】
なお、上記実施形態では、理論空燃比維持判定時間Ｔｓｔｏは予め定められた時間とされている。この場合、理論空燃比維持判定時間は、目標空燃比をリッチ空燃比に切り替えてからの積算酸素過不足量ΣＯＥＤの絶対値が新品時の上流側排気浄化触媒２０の最大吸蔵可能酸素量に到達するまでに通常かかる時間以上とされる。具体的には、その２倍〜４倍程度の時間とするのが好ましい。
【０１４１】
なお、理論空燃比張付き学習制御に関しても、上述したサブ学習基本制御の場合と同様に、サブフィードバック制御として、上述した別の制御を用いた場合にも適用することができる。この場合、理論空燃比張付き学習制御では、目標空燃比をリーン空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比が理論空燃比維持判定時間Ｔｓｔｏ以上に亘って理論空燃比近傍空燃比領域内に維持されている場合には、そのときの目標空燃比に応じて上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側又はリーン側に変化するようにサブ学習値ｓｆｂｇが増大又は減少せしめられることになる。
【０１４２】
したがって、これらをまとめて表現すると、本実施形態では、理論空燃比張付き学習では、目標空燃比を理論空燃比よりも一方側（図１０に示した例におけるリッチ側に相当）にずれた空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比が理論空燃比維持判定時間Ｔｓｔｏ以上に亘って理論空燃比近傍空燃比領域内に維持されている場合には、フィードバック制御において上流側排気浄化触媒２０に流入する排気ガスの空燃比が前記一方側に変化するように空燃比に関するパラメータを補正しているといえる。
【０１４３】
＜リッチ・リーン張付き学習＞
次に、リーン張付き学習制御について説明する。リーン張付き学習制御は、図１０に示した例のように、目標空燃比をリッチ空燃比にしているにもかかわらず、下流側空燃比センサ４１の出力空燃比がリーン空燃比に張り付いてしまっている場合に行われる学習制御である。リーン張付き学習制御では、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから、すなわち目標空燃比をリッチ設定空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが予め定められたリーン空燃比維持判定時間以上に亘ってリーン空燃比に維持されているかを判断する。そして、リーン空燃比維持判定時間以上に亘ってリーン空燃比に維持されている場合には、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に変化するようにサブ学習値ｓｆｂｇが減少せしめられる。図１２にこの様子を示す。
【０１４４】
図１２は、空燃比補正量ＡＦＣ等のタイムチャートを示す図１０と同様な図である。図１２は、図１０と同様に、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが低い側（リッチ側）に極めて大きくずれている場合を示している。
【０１４５】
図示した例では、時刻ｔ0において、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎからリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。しかしながら、上流側空燃比センサ４０の出力空燃比は極めて大きくリッチ側にずれているため、図１０に示した例と同様に、排気ガスの実際の空燃比はリーン空燃比となっている。このため、時刻ｔ0以降、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎはリーン空燃比に維持される。
【０１４６】
そこで、本実施形態では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに設定されてから、予め定められたリーン空燃比維持判定時間Ｔｌｅａｎ以上に亘って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリーン空燃比に維持されている場合には、制御中心空燃比ＡＦＲを補正するようにしている。特に、本実施形態では、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリッチ側に変化するようにサブ学習値ｓｆｂｇが補正される。
【０１４７】
具体的には、本実施形態では、下記式（８）によりサブ学習値ｓｆｂｇを算出すると共に、上記式（６）によりサブ学習値ｓｆｂｇに基づいて制御中心空燃比ＡＦＲが補正される。
ｓｆｂｇ（ｎ）＝ｓｆｂｇ（ｎ−１）＋ｋｄ・（ＡＦＣｒｉｃｈ−（ＡＦｄｗｎ−１４．６））      …（７）
なお、上記式（７）において、ｋｄは、制御中心空燃比ＡＦＲを補正する程度を表すゲインである（０＜ｋｄ≦１）。ゲインｋｄの値が大きいほど、制御中心空燃比ＡＦＲの補正量が大きくなる。
【０１４８】
ここで、図１２に示した例では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに設定されているときに、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリーン空燃比に維持されている。この場合、上流側空燃比センサ４０におけるずれは、目標空燃比と下流側空燃比センサ４１の出力空燃比との差に相当する。これを分解すると、上流側空燃比センサ４０におけるずれは、目標空燃比と理論空燃比との差（リッチ設定補正量ＡＦＣｒｉｃｈに相当）と、理論空燃比と下流側空燃比センサ４１の出力空燃比との差とを加算した量と同程度となっているといえる。そこで、本実施形態では、上記式（８）に示したように、リッチ設定補正量ＡＦＣｒｉｃｈに下流側空燃比センサ４１の出力空燃比と理論空燃比との差を加算した値に基づいてサブ学習値ｓｆｂｇを更新している。特に、上述した理論空燃比張付き学習では、リッチ設定補正量ＡＦＣｒｉｃｈ相当分だけサブ学習値を補正しているのに対して、リーン張付き学習ではこれに加えて下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎ相当分だけサブ学習値を補正している。また、ゲインｋｄはゲインｋｃと同程度とされる。このため、リーン張付き学習における補正量は、理論空燃比張付き学習における補正量よりも大きい。
【０１４９】
図１２に示した例では、式（８）を用いると、時刻ｔ1において、サブ学習値ｓｆｂｇは減少せしめられる。この結果、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比はリッチ側に変化することになる。これにより、時刻ｔ1以降、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比の目標空燃比に対するずれは時刻ｔ1以前と比べて小さなものとなる。したがって、時刻ｔ1以降、実際の空燃比を表す破線と目標空燃比を表す一点鎖線との間の差は、時刻ｔ1以前における差よりも小さくなっている。
【０１５０】
図１２では、ゲインｋｄを比較的小さい値にした例を示している。このため、時刻ｔ1においてサブ学習値ｓｆｂｇの更新が行われてもなお、上流側空燃比センサ４０の出力空燃比におけるずれが残っている。特に、図示した例では、時刻ｔ1以降も、排気ガスの実際の空燃比はリーン空燃比のままとなっている。この結果、時刻ｔ1からリーン空燃比維持判定時間Ｔｌｅａｎに亘って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリーン空燃比に維持される。このため、図示した例では、時刻ｔ2においても、リーン張付き学習により、上記式（８）を用いてサブ学習値ｓｆｂｇの補正が行われる。
【０１５１】
時刻ｔ2においてサブ学習値ｓｆｂｇの補正が行われると、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比の目標空燃比に対するずれが小さくなる。これにより、図示した例では、時刻ｔ2以降には、排気ガスの実際の空燃比は理論空燃比よりも僅かにリッチとなり、これに伴って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎはリーン空燃比からほぼ理論空燃比に変化する。特に、図１２に示した例では、時刻ｔ2から時刻ｔ3まで理論空燃比維持判定時間Ｔｓｔｏに亘って下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがほぼ理論空燃比、すなわち中間領域Ｍ内に維持される。このため、時刻ｔ3において、理論空燃比張付き学習により、上記式（７）を用いてサブ学習値ｓｆｂｇの補正が行われる。
【０１５２】
リーン張付き学習制御によってこのようにサブ学習値ｓｆｂｇの更新を行うことにより、上流側空燃比センサ４０の出力空燃比ＡＦｕｐのずれが極めて大きい場合であっても、サブ学習値の更新を行うことができる。これにより、上流側空燃比センサ４０の出力空燃比におけるずれを小さくすることができる。
【０１５３】
なお、上記実施形態では、リーン空燃比維持判定時間Ｔｌｅａｎは予め定められた時間とされている。この場合、リーン空燃比維持判定時間Ｔｌｅａｎは、目標空燃比をリッチ空燃比に切り替えてからそれに応じて下流側空燃比センサ４１の出力空燃比が変化するまでに通常かかる下流側空燃比センサの応答遅れ時間以上とされる。具体的には、その２倍〜４倍程度の時間とするのが好ましい。また、リーン空燃比維持判定時間Ｔｌｅａｎは、目標空燃比をリッチ空燃比に切り替えてからの積算酸素過不足量ΣＯＥＤの絶対値が新品時の上流側排気浄化触媒２０の最大吸蔵可能酸素量に到達するまでに通常かかる時間よりも短い。したがって、リーン空燃比維持判定時間Ｔｌｅａｎは、上述した理論空燃比維持判定時間Ｔｓｔｏよりも短いものとされる。
【０１５４】
次に、リッチ張付き学習制御について説明する。リッチ張付き学習制御は、リーン張付き学習制御と同様な制御であり、目標空燃比をリーン空燃比にしているにもかかわらず、下流側空燃比センサ４１の出力空燃比がリッチ空燃比に張り付いてしまっている場合に行われる学習制御である。リッチ張付き学習制御では、空燃比補正量ＡＦＣをリーン設定補正量ＡＦＣｌｅａｎに切り替えてから、すなわち目標空燃比をリーン設定空燃比に切り替えてから、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎが予め定められたリッチ空燃比維持判定時間（リーン空燃比維持判定時間と同様）以上に亘ってリッチ空燃比に維持されているかを判断する。そして、リッチ空燃比維持判定時間以上に亘ってリッチ空燃比に維持されている場合には、上流側排気浄化触媒２０に流入する排気ガスの空燃比がリーン側に変化するようにサブ学習値ｓｆｂｇが増大せしめられる。すなわち、リッチ張付き学習制御では、上述したリーン張付き学習制御とはリッチ及びリーンが逆にした制御が行われる。
【０１５５】
なお、本実施形態では、サブ学習基本制御に加えて、理論空燃比張付き学習制御、リーン張付き学習制御及びリッチ張付き学習制御が行われている。これらをまとめると、下流側空燃比センサ４１の出力に基づいてサブ学習値を更新すると共に、サブ学習値に応じて上流側排気浄化触媒２０に流入する排気ガスの空燃比を変化させるように空燃比に関するパラメータを制御するサブ学習制御と称することができる。
【０１５６】
＜インバランスの説明＞
ところで、複数の気筒を有する内燃機関では、一部の気筒のみにおいて、燃料噴射弁１１の故障等により、燃料噴射弁１１からの実際の燃料供給量が目標値よりも多くなる場合がある。これは、例えば、燃料噴射弁１１のニードル弁と弁座との間に異物が付着して、ニードル弁が完全に閉弁されなくなったような場合に発生する。このように、一部の燃料噴射弁１１からの燃料供給量が多くなると、この一部の燃料噴射弁１１に対応する気筒における燃焼空燃比は他の気筒における燃焼空燃比よりもリッチになる。以下では、このように一部の気筒における燃焼空燃比が他の気筒における燃焼空燃比よりもリッチになることにより気筒間で燃焼空燃比にずれが生じることをリッチインバランスと称する。
【０１５７】
このようにリッチインバランスが発生すると、燃焼空燃比がリッチになった気筒からは多量の水素を含む多量の未燃ガスが流出することになる。上述したように、未燃ガスや酸素のうち、水素は空燃比センサ４０、４１の拡散律速層５４の通過速度が速い。このため、リッチインバランスが発生すると、上流側空燃比センサ４０の出力空燃比は、上流側空燃比センサ４０周りを流れる排気ガスの実際の空燃比よりもリッチ側に大きくずれる。
【０１５８】
ここで、上述したように本実施形態ではメインフィードバック制御により上流側空燃比センサ４０の出力空燃比が目標空燃比となるように制御が行われている。このため、上流側空燃比センサ４０の出力空燃比は目標空燃比にほぼ一致するように燃料供給量が制御され、この結果、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比は目標空燃比よりもリーン側にずれた空燃比となる。
【０１５９】
このように、上流側空燃比センサ４０の出力空燃比にずれが生じた場合には、上述したように、上述したサブ学習制御により制御中心空燃比が補正され、この結果、出力空燃比におけるずれが徐々に補償されていく。しかしながら、サブフィードバック学習制御によるずれの補償には図８の時刻ｔ1〜ｔ3のサイクルを相当な回数繰り返す必要があるため、時間がかかる。一方で、上流側空燃比センサ４０の出力空燃比におけるずれがサブフィードバック学習制御によって十分に補償されていない間は、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比は目標空燃比よりもリーン側にずれている。したがって、リッチインバランスが発生すると、或る程度の時間に亘って実際の空燃比が目標空燃比よりもリーン側にずれた状態が続くことになる。
【０１６０】
上述したように、実際の空燃比が目標空燃比よりもリーン側にずれると、目標空燃比がリーン設定空燃比に設定されているときには、実際の空燃比はリーン設定空燃比よりもリーンな空燃比になる。このようなリーン度合いの大きいリーン空燃比の排気ガスが上流側排気浄化触媒２０に流入すると、上流側排気浄化触媒２０に酸素吸蔵能力がある場合であっても、上流側排気浄化触媒２０では流入した酸素を全て吸蔵することができなくなる場合がある。この場合には、上流側排気浄化触媒２０からＮＯｘや酸素が流出してしまうことになり、結果的に排気エミッションの悪化を招くことになる。
【０１６１】
＜サブ学習促進制御＞
そこで、本実施形態の制御装置では、リッチインバランスが発生した場合には、サブ学習値ｓｆｂｇが、上流側排気浄化触媒２０に流入する排気ガスの空燃比と目標空燃比との差に応じた適切な値に変化し易くなるようにサブ学習値ｓｆｂｇの変化に関連するパラメータを制御するサブ学習促進制御が行われる。サブ学習値ｓｆｂｇを上記適切な値に変化し易くなるようにするサブ学習促進制御としては、以下のものが挙げられる。
【０１６２】
サブ学習促進制御の具体例の一つ目としては、サブ学習基本制御において、過不足量誤差ΔΣＯＥＤ等を制御中心空燃比ＡＦＲに反映させる程度を表すゲインｋｂ、ｋｃ、ｋｄを増大させることが挙げられる。これらゲインｋｂ、ｋｃ、ｋｄを増大させることにより、同一の過不足量誤差ΔΣＯＥＤに対するサブ学習値ｓｆｂｇの変化量や、張付き学習制御におけるサブ学習値ｓｆｂｇの変化量が大きくなる。この結果、サブ学習値ｓｆｂｇが大きく変化することになり、これにより適切な値に変化し易くなる。すなわち、サブ学習値ｓｆｂｇが適切な値に向けて変化することを促進させる。なお、これらゲインｋｂ、ｋｃ、ｋｄは必ずしも全てを増大させる必要はなく、これらのうち一部のみを増大させるようにしてもよい。以下では、ゲインｋｂのみを増大させる場合を例にとって説明する。
【０１６３】
サブ学習促進制御の具体例の二つ目としては、サブフィードバック制御において設定されるリッチ設定空燃比のリッチ度合いを増大させること、すなわちリッチ設定補正量ＡＦＣｒｉｃｈを減少させることが挙げられる。このように、リッチ設定空燃比のリッチ度合いを増大させると、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になるまでの時間、すなわち酸素減少期間Ｔｄｅｃが短くなる。この結果、サブ学習値ｓｆｂｇの更新サイクルが短くなり、よってサブ学習値ｓｆｂｇが適切な値に向けて変化することが促進される。
【０１６４】
サブ学習促進制御の具体例の三つ目としては、サブフィードバック制御において設定される切替基準吸蔵量を低減させること、すなわち切替基準値ＯＥＤｒｅｆを低減させることが挙げられる。切替基準値ＯＥＤｒｅｆが小さくなると、酸素吸蔵量ＯＳＡが少ない状態で空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎからリッチ設定補正量ＡＦＣｒｉｃｈへ切り替えられる。この結果、空燃比補正量ＡＦＣをリーン設定補正量ＡＦＣｌｅａｎに切り替えてから再びリッチ設定補正量ＡＦＣｒｉｃｈへ切り替えられるまでの時間、すなわち酸素増大期間Ｔｉｎｃが短くなる。加えて、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから再びリーン設定補正量ＡＦＣｌｅａｎへ切り替えられるまでの時間、すなわち酸素減少期間Ｔｄｅｃも短くなる。この結果、サブ学習値ｓｆｂｇの更新サイクルが短くなり、よってサブ学習値ｓｆｂｇが適切な値に向けて変化することが促進される。
【０１６５】
また、上述したように、インバランスが発生すると、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比は上流側空燃比センサ４０の出力空燃比ＡＦｕｐよりもリーンになる。この結果、酸素吸蔵量ＯＳＡは積算酸素過不足量ΣＯＥＤに相当する値よりも多くなる。このため、積算酸素過不足量ΣＯＥＤが切替基準吸蔵量ＯＥＤｒｅｆであるときに実際の酸素吸蔵量ＯＳＡは切替基準吸蔵量Ｃｒｅｆよりも多くなる。そして、このときの実際の酸素吸蔵量ＯＳＡが多くなって最大吸蔵可能酸素量Ｃｍａｘに近づくと、上流側排気浄化触媒２０からＮＯｘが流出し易くなる。これに対して、切替基準値ＯＥＤｒｅｆを小さくすることにより、実際の酸素吸蔵量ＯＳＡが切替基準吸蔵量Ｃｒｅｆを超えて極端に多くなることが抑制され、その結果、上流側排気浄化触媒２０からＮＯｘが流出するのが抑制される。
【０１６６】
サブ学習促進制御の具体例の四つ目としては、サブフィードバック制御において設定されるリーン設定空燃比のリーン度合いを低下させること、すなわちリーン設定補正量ＡＦＣｌｅａｎを減少させることが挙げられる。このように、リーン設定空燃比のリーン度合いを低下させると、目標空燃比がリーン設定空燃比に設定されている間の、上流側排気浄化触媒２０への酸素吸蔵量ＯＳＡが低下せしめられる。この結果、空燃比補正量ＡＦＣをリッチ設定補正量ＡＦＣｒｉｃｈに切り替えてから下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になるまでの時間、すなわち酸素減少期間Ｔｄｅｃが短くなる。これにより、サブ学習値ｓｆｂｇの更新サイクルが短くなり、よってサブ学習値ｓｆｂｇが適切な値に向けて変化することが促進される。
【０１６７】
また、上述したように、インバランスが発生すると、上流側排気浄化触媒２０に流入する排気ガスの実際の空燃比は上流側空燃比センサ４０の出力空燃比ＡＦｕｐよりもリーンになる。このため、目標空燃比がリーン設定空燃比に設定されているときには、排気ガスの実際の空燃比はリーン設定空燃比よりもリーンになる。したがって、目標空燃比がリーン設定空燃比に設定されているときには、排気ガスの実際の空燃比におけるリーン度合いが大きくなり、結果的に上流側排気浄化触媒２０においてＮＯｘを十分に吸蔵することができなくなる可能性がある。これに対して、インバランスが発生したときにリーン設定補正量ＡＦＣｌｅａｎのリーン度合を低下させることにより、排気ガスの実際の空燃比におけるリーン度合いが過度に大きくなることがなくなり、上流側排気浄化触媒２０によるＮＯｘの浄化性能の低下を抑制することができる。
【０１６８】
サブ学習促進制御の具体例の五つ目としては、サブ学習値ｓｆｂｇの上限ガード値Ｇｕｐを増大させ、下限ガード値Ｇｌｏｗを低下させることが考えられる。換言すると、サブ学習促進制御では、ガード値Ｇｕｐ、Ｇｌｏｗの絶対値が増大せしめられる。
【０１６９】
ここで、上述したように、インバランスが発生すると、上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれを適切に補償するためには、サブ学習値ｓｆｂｇの絶対値を大きくする必要がある。ところが、上述したように、サブ学習値ｓｆｂｇには、上限ガード値Ｇｕｐ及び下限ガード値Ｇｌｏｗが設定されており、サブ学習値ｓｆｂｇはこれらガード値の範囲外の値とすることができない。この結果、サブ学習値ｓｆｂｇが適切な値をとることができなくなる場合がある。
【０１７０】
これに対して、ガード値の絶対値を増大させることにより、サブ学習値ｓｆｂｇの値をその絶対値が大きな値に設定することができる。これにより、サブ学習値ｓｆｂｇが適切な値に向けて変化することが促進されることになる。
【０１７１】
＜インバランス発生の推定＞
また、本実施形態では、リッチインバランスが発生した場合に、サブ学習促進制御が行われる。具体的には、本実施形態では、メイン学習におけるメイン学習値ｍｆｂｇとサブ学習におけるサブ学習値ｓｆｂｇとの差が或る程度以上になった場合には、リッチインバランスが発生したと推定するようにしている。以下では、このことについて説明する。
【０１７２】
上述したように、リッチインバランスが発生した場合、上流側空燃比センサ４０の出力空燃比ＡＦｕｐはリッチ側にずれる。したがって、この場合、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは目標空燃比との間に定常的な偏差が存在することになる。上述したように、メイン学習値ｍｆｂｇは、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが目標空燃比よりも定常的にリッチになると、大きくなるように算出される。したがって、メイン学習値ｍｆｂｇは出力空燃比ＡＦｕｐにおけるずれ量に比例した正の値となる。
【０１７３】
一方、上述したようにリッチインバランスが生じて上流側空燃比センサ４０の出力空燃比ＡＦｕｐがリッチ側にずれている場合には、図８に示したように、サブ学習値ｓｆｂｇは、負の値となる。また、このときのサブ学習値ｓｆｂｇの絶対値は、インバランスの発生に伴う上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれ量に比例する。
【０１７４】
したがって、上述したように、リッチインバランスが発生しているときには、メイン学習値ｍｆｂｇは正の値をとるのに対して負の値をとることになる。加えて、リッチインバランスが発生しているときには、メイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇ共に比較的大きな値となる。したがって、メイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇの絶対値は、予め定められたそれぞれの基準絶対値以上となる。そこで、本実施形態では、メイン学習値ｍｆｂｇとサブ学習値ｓｆｂｇとで正負が反対となり且つメイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇの絶対値がそれぞれの基準絶対値以上となったときに、リッチインバランスが発生していると推定するようにしている。ここで、基準絶対値は、例えば、リッチインバランスが発生していないときには両学習値ｍｆｂｇ、ｓｆｂｇの絶対値がほとんど到達せず、或る程度の大きさのリッチインバランスが発生したときに両学習値ｍｆｂｇ、ｓｆｂｇの絶対値が到達するような値とされる。
【０１７５】
ここで、例えば、上流側排気浄化触媒２０と下流側空燃比センサ４１との間の排気管２２に亀裂等ができ、亀裂から少量の空気が流入するような場合や、下流側空燃比センサ４１に素子割れが生じたような場合を考える。このような場合、上流側排気浄化触媒２０に流入する排気ガスの空燃比が理論空燃比であっても、下流側空燃比センサ４１の出力空燃比は理論空燃比よりもリーンな空燃比、例えばリーン判定空燃比以上の空燃比となる。この結果、下流側空燃比センサ４１の出力空燃比がリーン判定空燃比以上の空燃比に維持される。このため、上述したリーン張付き学習制御によりサブ学習値ｓｆｂｇの更新が行われ、この結果、制御中心空燃比ＡＦＲの補正が行われる。
【０１７６】
しかしながら、このような場合には、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと排気ガスの実際の空燃比との間にずれは生じていない。したがって、上流側排気浄化触媒２０に流入する排気ガスの空燃比と目標空燃比との間にずれは生じていない。したがって、このような場合にリーン張付き学習制御によりサブ学習値ｓｆｂｇを更新すると、制御中心空燃比ＡＦＲが適切な値からずれてしまう。このため、このような場合には、サブ学習値ｓｆｂｇの更新を積極的に促進すべきではない。
【０１７７】
ここで、上述したように、リッチインバランスが発生しているときには、メイン学習値ｍｆｂｇは或る程度絶対値の大きい正の値をとる。これに対して、上述したように、排気管２２に亀裂等が生じた場合や下流側空燃比センサ４１に素子割れが生じた場合には、メイン学習値ｍｆｂｇは基本的にはそれほど絶対値の大きな値にはならず、ゼロ近傍の値となる。したがって、上述したように、メイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇの正負及び絶対値に基づいて判定を行うことにより、リッチインバランスが発生した場合と、排気管２２に亀裂が発生した場合等とを区別することができるようになる。
【０１７８】
なお、リッチインバランスが発生した場合、メイン学習値からサブ学習値を減算した学習値差Δｆｂｇ（＝ｍｆｂｇ−ｓｆｂｇ）が極端に大きくなる。また、リッチインバランスにおけるインバランス度合いが大きくなるほど、すなわち上流側空燃比センサ４０の出力空燃比ＡＦｕｐにおけるずれ量が大きくなるほど、学習値差Δｆｂｇも大きくなることがわかる。したがって、メイン学習値ｍｆｂｇとサブ学習値ｓｆｂｇとで正負が反対となり且つメイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇの絶対値がそれぞれの基準絶対値以上になることに加えて、学習値差Δｆｂｇが予め定められた基準差以上になったときにリッチインバランスが発生していると推定するようにしてもよい。この場合、基準差は、例えば、リッチインバランスが発生していないときには学習値差Δｆｂｇはほとんど到達せず、或る程度の大きさのリッチインバランスが発生したときに学習値差Δｆｂｇが到達するような値とされる。
【０１７９】
＜タイムチャートを用いたサブ学習促進制御＞
図１３は、インバランス発生の有無、空燃比補正量ＡＦＣ、上流側空燃比センサ４０の出力空燃比ＡＦｕｐ、メイン学習値ｍｆｂｇ、酸素吸蔵量ＯＳＡ、積算酸素過不足量ΣＯＥＤ、下流側空燃比センサの出力空燃比ＡＦｄｗｎ、サブ学習値ｓｆｂｇ及び学習値差Δｆｂｇのタイムチャートである。特に、図１３は、上述したサブ学習促進制御を行った場合を示している。なお、図１３においても、出力空燃比ＡＦｕｐにおける実線は、上流側空燃比センサ４０の出力空燃比を、破線は、上流側空燃比センサ４０周りを流通する排気ガスの実際の空燃比をそれぞれ示している。加えて、一点鎖線は、目標空燃比、すなわち理論空燃比（基本制御中心空燃比）に空燃比補正量ＡＦＣを加算した空燃比を示している。
【０１８０】
図１３は、説明を分かりやすくするために、時刻ｔ3において、リッチインバランスが急に発生した場合を示している。時刻ｔ3までは、図６を用いて説明した制御が行われている。したがって、時刻ｔ1において下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になると、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。加えて、時刻ｔ2において積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達すると、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。
【０１８１】
時刻ｔ3において、リッチインバランスが発生すると、上流側空燃比センサ４０の出力空燃比ＡＦｕｐがリッチ側にずれる。ただしこのとき、排気ガスの実際の空燃比（図中の破線）は、時刻ｔ3においてリッチインバランスが発生しても変化しない。このように、上流側空燃比センサ４０の出力空燃比ＡＦｕｐが目標空燃比からリッチ側にずれると、メインフィードバック制御により排気ガスの実際の空燃比がリーン側に変化せしめられる。これに伴って、時刻ｔ4には、上流側空燃比センサ４０の出力空燃比ＡＦｕｐは目標空燃比に一致する。ただし、このとき排気ガスの実際の空燃比は、目標空燃比よりもリーンな空燃比となっている。
【０１８２】
また、このようにメインフィードバック制御により排気ガスの実際の空燃比がリーン側に変化せしめられると、このときメインフィードバック制御における積分項の値が増大せしめられる。このようにして増大した積分項の値は定期的にメイン学習値ｍｆｂｇに取り込まれる。このため、図１３に示したように、メイン学習値ｍｆｂｇの値は徐々に上昇する。なお、図１３に示した例では、説明を分かりやすくするため、積分項のメイン学習値ｍｆｂｇへの取り込みを短い時間間隔で行った場合を示しており、このためメイン学習値ｍｆｂｇはステップ的に変化せずに徐々に増大している。また、これに伴って、学習値差Δｆｂｇは徐々に増大する。
【０１８３】
その後、図１３に示した例では、時刻ｔ5において、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下に低下する。このとき、図１３からわかるように、時刻ｔ1〜時刻ｔ2における積算酸素過剰量Ｒ1よりも時刻ｔ2〜時刻ｔ5における積算酸素不足量Ｆ1の方が多い。このため、時刻ｔ5では、上記式（５）により、サブ学習値ｓｆｂｇが減少せしめられ、よって制御中心空燃比ＡＦＲがリッチ側へ補正される。したがって、図１３からわかるように、時刻ｔ3においてメイン学習値ｍｆｂｇは正の値となり、サブ学習値ｓｆｂｇは負の値となる。しかし、時刻ｔ3においては、メイン学習値ｍｆｂｇの絶対値はその基準絶対値Ｒｍｆよりも小さい。同様に、時刻ｔ3においては、サブ学習値ｓｆｂｇの絶対値はその基準絶対値Ｒｓｆよりも小さい。したがって、時刻ｔ3においては、サブ学習促進制御は開始されない。また、これに伴って、学習値差Δｆｂｇが増大せしめられる。
【０１８４】
時刻ｔ5以降も同様な制御が繰り返され、図１３に示した例では、やがて時刻ｔ7においてメイン学習値ｍｆｂｇの絶対値はその基準絶対値Ｒｍｆ以上になり、サブ学習値ｓｆｂｇの絶対値はその基準絶対値Ｒｓｆ以上になる。このため、時刻ｔ7において、リッチインバランスが発生していると判定されて、サブ学習促進制御が開始される。加えて、図１３に示した例では、学習値差Δｆｂｇも予め定められた基準差ｆｂｇｒｅｆに以上になる。このため、リッチインバランスの発生を学習値差Δｆｂｇにも基づいて判定している場合でも、時刻ｔ7においてリッチインバランスが発生していると判定され、サブ学習促進制御が開始される。具体的には、時刻ｔ7において、リーン設定補正量ＡＦＣｌｅａｎが、第一リーン設定補正量ＡＦＣｌｅａｎ1から第二リーン設定補正量ＡＦＣｌｅａｎ2へと減少せしめられる。これにより、リーン設定空燃比がリッチ側に変化せしめられる。また、時刻ｔ7において、リッチ設定補正量ＡＦＣｒｉｃｈが、第一リッチ設定補正量ＡＦＣｒｉｃｈ1から第二リッチ設定補正量ＡＦＣｒｉｃｈ2へと減少せしめられる。これにより、リッチ設定空燃比もリッチ側に変化せしめられる。
【０１８５】
加えて、時刻ｔ7においては、切替基準値ＯＥＤｒｅｆが第一切替基準値ＯＥＤｒｅｆ1から第二切替基準値ＯＥＤｒｅｆ2へ減少せしめられる。さらに、時刻ｔ7においては、サブ学習値ｓｆｂｇの上限ガード値Ｇｕｐが増大せしめられ、下限ガード値Ｇｌｏｗが低下せしめられる（図１３では、下限ガード値Ｇｌｏｗのみが示されている）。具体的には、図１３に示した例では、下限ガード値Ｇｌｏｗは、第一下限ガード値Ｇｌｏｗ1から第二ガード値Ｇｌｏｗ2へ低下せしめられる。下限ガード値Ｇｌｏｗは負の値であるため、第二ガード値Ｇｌｏｗ2の絶対値は第一下限ガード値Ｇｌｏｗ1の絶対値よりも大きい。加えて、時刻ｔ7以降は、過不足量誤差ΔΣＯＥＤを制御中心空燃比ＡＦＲに反映させる程度を表すゲインｋｂがｋｂ1からｋｂ2へと増大せしめられる。
【０１８６】
このように、時刻ｔ7において切替基準値ＯＥＤｒｅｆが減少せしめられることにより、時刻ｔ7において空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられてから時刻ｔ8において積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆに到達するまでの時間（酸素増大期間）Ｔｉｎｃが短くなる。加えて、時刻ｔ7において、リッチ設定補正量ＡＦＣｒｉｃｈが減少せしめられ且つリーン設定補正量ＡＦＣｌｅａｎが減少せしめられることにより、時刻ｔ8において空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられてから時刻ｔ9において下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下になるまでの時間（酸素減少期間）Ｔｄｅｃが短くなる。この結果、サブ学習値ｓｆｂｇの更新サイクルが短くなり、よってサブ学習が促進せしめられる。
【０１８７】
また、ゲインｋｂが増大せしめられることから、時刻ｔ9においてサブ学習値ｓｆｂｇを更新する際に、過不足量誤差ΔΣＯＥＤに対するサブ学習値ｓｆｂｇの更新量が大きくなる。このことによってもサブ学習が促進せしめられる。
【０１８８】
加えて、時刻ｔ7以降は、下限ガード値Ｇｌｏｗの絶対値が大きくされる。ここで、図１３に示した例では、時刻ｔ9において、サブ学習値ｓｆｂｇは第一下限ガード値Ｇｌｏｗ1よりもその絶対値が大きな値となっている。このため、時刻ｔ7において下限ガード値Ｇｌｏｗが第一下限ガード値Ｇｌｏｗ1から第二下限ガード値Ｇｌｏｗ2に変更されていなければ、サブ学習値ｓｆｂｇは第一下限ガード値Ｇｌｏｗ1に設定されていたことになる。これに対して、本実施形態では、時刻ｔ7において下限ガード値Ｇｌｏｗの絶対値が大きくされるため、時刻ｔ9においてサブ学習値ｓｆｂｇを第一下限ガード値Ｇｌｏｗ1よりも絶対値の大きな値に設定することができる。したがって、本実施形態では、このことによってもサブ学習が促進せしめられる。
【０１８９】
なお、上述したようなサブ学習促進制御により、サブ学習値ｓｆｂｇは早期に一定の値に収束する。このようにサブ学習値ｓｆｂｇが収束すると、それ以降はサブ学習値の更新サイクルを短くする必要はない。このため、サブ学習値ｓｆｂｇが収束すると、リッチ設定補正量ＡＦＣｒｉｃｈは第一リッチ設定補正量ＡＦＣｒｉｃｈ1に戻され、リーン設定補正量ＡＦＣｌｅａｎは第一リーン設定補正量ＡＦＣｌｅａｎ1に戻される。加えて、切替基準値ＯＥＤｒｅｆも第一切替基準値ＯＥＤｒｅｆ1に戻される。加えて、ゲインｋｂもｋｂ2から時刻ｔ7以前の値ｋｂ1へ低下せしめられる。一方、上限ガード値Ｇｕｐ及び下限ガード値Ｇｌｏｗは、サブ学習値ｓｆｂｇが収束しても、その絶対値が大きいまま維持される。
【０１９０】
＜具体的な制御の説明＞
次に、図１４〜図１７を参照して、上記実施形態における制御装置について具体的に説明する。本実施形態における制御装置は、機能ブロック図である図１４に示したように、Ａ１〜Ａ１０の各機能ブロックを含んで構成されている。以下、図１４を参照しながら各機能ブロックについて説明する。これら各機能ブロックＡ１〜Ａ１０における操作は、基本的にＥＣＵ３１において実行される。
【０１９１】
＜燃料供給量の算出＞
まず、燃料供給量の算出について説明する。燃料供給量の算出に当たっては、筒内吸入空気量算出手段Ａ１、基本燃料供給量算出手段Ａ２、及び燃料供給量算出手段Ａ３が用いられる。
【０１９２】
筒内吸入空気量算出手段Ａ１は、吸入空気流量Ｇａと、機関回転数ＮＥと、ＥＣＵ３１のＲＯＭ３４に記憶されたマップ又は計算式とに基づいて、各気筒への筒内吸入空気量Ｍｃを算出する。吸入空気流量Ｇａは空気流量検出装置３９によって計測され、機関回転数ＮＥはクランク角センサ４４の出力に基づいて算出される。
【０１９３】
基本燃料供給量算出手段Ａ２は、筒内吸入空気量算出手段Ａ１によって算出された筒内吸入空気量Ｍｃを、補正目標空燃比ＡＦＴで除算することにより、基本燃料供給量Ｑｂａｓｅを算出する（Ｑｂａｓｅ＝Ｍｃ／ＡＦＴ）。補正目標空燃比ＡＦＴは、後述する目標空燃比設定手段Ａ８によって算出される。
【０１９４】
燃料供給量算出手段Ａ３は、基本燃料供給量算出手段Ａ２によって算出された基本燃料供給量Ｑｂａｓｅに、後述するＦ／Ｂ補正量・メイン学習値算出手段によって算出されたＦ／Ｂ補正量ＤＦｉ及びメイン学習値ｍｆｂｇを加えることで燃料供給量Ｑｉを算出する（Ｑｉ＝Ｑｂａｓｅ＋ＤＦｉ＋ｍｆｂｇ）。このようにして算出された燃料供給量Ｑｉの燃料が燃料噴射弁１１から噴射されるように、燃料噴射弁１１に対して噴射指示が行われる。
【０１９５】
＜目標空燃比の算出＞
次に、補正目標空燃比の算出について説明する。補正目標空燃比は、サブ学習値ｓｆｂｇによって補正された目標空燃比である。補正目標空燃比の算出に当たっては、酸素過不足量算出手段Ａ４、空燃比補正量算出手段Ａ５、サブ学習値算出手段Ａ６、制御中心空燃比算出手段Ａ７、目標空燃比設定手段Ａ８が用いられる。
【０１９６】
酸素過不足量算出手段Ａ４は、燃料供給量算出手段Ａ３によって算出された燃料供給量Ｑｉ、上流側空燃比センサ４０の出力空燃比ＡＦｕｐ及び後述する制御中心空燃比算出手段Ａ７によって算出された制御中心空燃比ＡＦＲに基づいて積算酸素過不足量ΣＯＥＤを算出する。酸素過不足量算出手段Ａ４は、例えば、上流側空燃比センサ４０の出力空燃比ＡＦｕｐと制御中心空燃比ＡＦＲとの差分に燃料供給量Ｑｉを乗算すると共に、求めた値を積算することによって積算酸素過不足量ΣＯＥＤを算出する。
【０１９７】
空燃比補正量算出手段Ａ５では、酸素過不足量算出手段Ａ４によって算出された積算酸素過不足量ΣＯＥＤと、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎとに基づいて、空燃比補正量ＡＦＣが算出される。具体的には、図１５に示したフローチャートに基づいて空燃比補正量ＡＦＣが算出される。
【０１９８】
サブ学習値算出手段Ａ６では、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎ、酸素過不足量算出手段Ａ４によって算出された積算酸素過不足量ΣＯＥＤ等に基づいてサブ学習値ｓｆｂｇが算出される。具体的には、図１６に示したサブ学習制御のフローチャートに基づいてサブ学習値ｓｆｂｇが算出される。このようにして算出されたサブ学習値ｓｆｂｇは、ＥＣＵ３１のＲＡＭ３３のうち、内燃機関を搭載した車両のイグニッションキーがオフにされても消去されない記憶媒体に保存される。
【０１９９】
制御中心空燃比算出手段Ａ７では、基本制御中心空燃比ＡＦＲｂａｓｅ（例えば、理論空燃比）と、サブ学習値算出手段Ａ６によって算出されたサブ学習値ｓｆｂｇとに基づいて制御中心空燃比ＡＦＲが算出される。具体的には、上述した式（６）に示したように、基本制御中心空燃比ＡＦＲｂａｓｅにサブ学習値ｓｆｂｇを加算することによって制御中心空燃比ＡＦＲが算出される。
【０２００】
目標空燃比設定手段Ａ８は、制御中心空燃比算出手段Ａ７によって算出された制御中心空燃比ＡＦＲに、空燃比補正量算出手段Ａ５で算出された空燃比補正量ＡＦＣを加算することで、補正目標空燃比ＡＦＴを算出する。このようにして算出された補正目標空燃比ＡＦＴは、基本燃料供給量算出手段Ａ２及び後述する空燃比偏差算出手段Ａ９に入力される。
【０２０１】
＜Ｆ／Ｂ補正量及びメイン学習値の算出＞
次に、上流側空燃比センサ４０の出力空燃比ＡＦｕｐに基づいたＦ／Ｂ補正量及びメイン学習値の算出について説明する。Ｆ／Ｂ補正量ＤＦｉ及びメイン学習値ｍｆｂｇの算出に当たっては、空燃比偏差算出手段Ａ９、Ｆ／Ｂ補正量・メイン学習値算出手段Ａ１０が用いられる。
【０２０２】
空燃比偏差算出手段Ａ９は、上流側空燃比センサ４０の出力空燃比ＡＦｕｐから目標空燃比設定手段Ａ８によって算出された補正目標空燃比ＡＦＴを減算することによって空燃比偏差ＤＡＦを算出する（ＤＡＦ＝ＡＦｕｐ−ＡＦＴ）。この空燃比偏差ＤＡＦは、補正目標空燃比ＡＦＴに対する燃料供給量の過不足を表す値である。
【０２０３】
Ｆ／Ｂ補正量・メイン学習値算出手段Ａ１０は、空燃比偏差算出手段Ａ９によって算出された空燃比偏差ＤＡＦを、比例・積分・微分処理（ＰＩＤ処理）することで、上記式（１）に基づいて燃料供給量の過不足を補償するためのＦ／Ｂ補正量ＤＦｉを算出する。加えて、積分処理において算出された時間積分値ＳＤＡＦの一部を上述した式（２）により取り込んで、メイン学習値ｍｆｂｇが更新される。また、メイン学習値ｍｆｂｇの更新に伴って時間積分値ＳＤＡＦが上記式（３）により補正され、よってＦ／Ｂ補正量ＤＦｉが補正される。このようにして算出されたＦ／Ｂ補正量ＤＦｉ及びメイン学習値ｍｆｂｇは、燃料供給量算出手段Ａ３に入力される。
【０２０４】
＜空燃比補正量設定制御のフローチャート＞
図１５は、空燃比補正量ＡＦＣの算出制御の制御ルーチンを示すフローチャートである。図示した制御ルーチンは一定時間間隔で行われる。
【０２０５】
図１５に示したように、まず、ステップＳ１１において空燃比補正量ＡＦＣの算出条件が成立しているか否かが判定される。空燃比補正量ＡＦＣの算出条件が成立している場合とは、フィードバック制御が行われる通常制御中であること、例えば燃料カット制御等の特殊な制御中ではないこと等が挙げられる。ステップＳ１１において目標空燃比の算出条件が成立していると判定された場合には、ステップＳ１２へと進む。
【０２０６】
ステップＳ１２では、リーン設定フラグＦｌｓが０に設定されているか否かが判定される。リーン設定フラグＦｌｓは、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに設定されると１とされ、それ以外の場合には０とされる。ステップＳ１２においてリーン設定フラグＦｌｓが０に設定されている場合には、ステップＳ１３へと進む。ステップＳ１３では、下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下であるか否かが判定される。下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈよりも大きいと判定された場合にはステップＳ１４へと進む。ステップＳ１４では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに設定されたまま維持され、制御ルーチンが終了せしめられる。
【０２０７】
一方、上流側排気浄化触媒２０の酸素吸蔵量ＯＳＡが減少して、上流側排気浄化触媒２０から流出する排気ガスの空燃比が低下すると、ステップＳ１３にて下流側空燃比センサ４１の出力空燃比ＡＦｄｗｎがリッチ判定空燃比ＡＦｒｉｃｈ以下であると判定される。この場合には、ステップＳ１５へと進み、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられる。次いで、ステップＳ１６では、リーン設定フラグＦｌｓが１に設定され、制御ルーチンが終了せしめられる。
【０２０８】
リーン設定フラグＦｌｓが１に設定されると、次の制御ルーチンにおいては、ステップＳ１２において、リーン設定フラグＦｌｓが０に設定されていないと判定されて、ステップＳ１７へと進む。ステップＳ１７では、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに切り替えられてからの積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆ以上であるか否かが判定される。積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆよりも少ないと判定された場合にはステップＳ１８へと進み、空燃比補正量ＡＦＣが引き続きリーン設定補正量ＡＦＣｌｅａｎに設定されたまま維持され、制御ルーチンが終了せしめられる。一方、上流側排気浄化触媒２０の酸素吸蔵量が増大すると、やがてステップＳ１７において積算酸素過不足量ΣＯＥＤが切替基準値ＯＥＤｒｅｆ以上であると判定され、ステップＳ１９へと進む。ステップＳ１９では、空燃比補正量ＡＦＣがリッチ設定補正量ＡＦＣｒｉｃｈに切り替えられる。次いで、ステップＳ２０では、リーン設定フラグＦｌｓが０にリセットされ、制御ルーチンが終了せしめられる。
【０２０９】
＜サブ学習制御のフローチャート＞
図１６は、サブ学習基本制御の制御ルーチンを示すフローチャートである。図示した制御ルーチンは一定時間間隔で行われる。
【０２１０】
図１６に示したように、まず、ステップＳ２１において、サブ学習値ｓｆｂｇの更新条件が成立しているか否かが判定される。更新条件が成立している場合とは、例えば、通常制御中であること等が挙げられる。ステップＳ２１において、サブ学習値ｓｆｂｇの更新条件が成立していると判定された場合には、ステップＳ２２へと進む。ステップＳ２２では、リーンフラグＦｌが０に設定されているか否かが判定される。リーンフラグＦｌも、リーン設定フラグＦｌｓと同様に、空燃比補正量ＡＦＣがリーン設定補正量ＡＦＣｌｅａｎに設定されると１とされ、それ以外の場合には０とされる。ステップＳ２２において、リーンフラグＦｌが０に設定されていると判定された場合には、ステップＳ２３へと進む。
【０２１１】
ステップＳ２３では、空燃比補正量ＡＦＣが０よりも大きいか否か、すなわち目標空燃比がリーン空燃比であるか否かが判定される。ステップＳ２３において、空燃比補正量ＡＦＣが０よりも大きいと判定された場合には、ステップＳ２４へと進む。ステップＳ２４では、積算酸素過不足量ΣＯＥＤに現在の酸素過不足量ＯＥＤが加算されたものが新たな積算酸素過不足量ΣＯＥＤとされ、制御ルーチンが終了せしめられる。
【０２１２】
その後、目標空燃比がリッチ空燃比へと切り替えられると、次の制御ルーチンではステップＳ２３において空燃比補正量ＡＦＣが０以下であると判定され、ステップＳ２５へと進む。ステップＳ２５では、リーンフラグＦｌが０にリセットされ、次いで、ステップＳ２６ではＲｎが現在の積算酸素過不足量ΣＯＥＤの絶対値とされる。次いで、ステップＳ２７では、積算酸素過不足量ΣＯＥＤが０にリセットされ、制御ルーチンが終了せしめられる。
【０２１３】
一方、リーンフラグＦｌが０にリセットされると、次の制御ルーチンでは、ステップＳ２２からステップＳ２８へと進む。ステップＳ２８では、空燃比補正量ＡＦＣが０よりも小さいか否か、すなわち目標空燃比がリッチ空燃比であるか否かが判定される。ステップＳ２８において、空燃比補正量ＡＦＣが０よりも小さいと判定された場合にはステップＳ２９へと進む。ステップＳ２９では、積算酸素過不足量ΣＯＥＤに現在の酸素過不足量ＯＥＤが加算されたものが新たな積算酸素過不足量ΣＯＥＤとされる。
【０２１４】
その後、目標空燃比がリーン空燃比へと切り替えられると、次の制御ルーチンではステップＳ２８において空燃比補正量ＡＦＣが０以上であると判定され、ステップＳ３０へと進む。ステップＳ３０では、リーンフラグＦｌが１にセットされ、次いで、ステップＳ３１では、Ｆｎが現在の積算酸素過不足量ΣＯＥＤの絶対値とされる。次いで、ステップＳ３２では、積算酸素過不足量ΣＯＥＤが０にリセットされる。次いで、ステップＳ３３では、ステップＳ２６で算出されたＲｎとステップＳ３１で算出されたＦｎに基づいて上述した式（５）を用いてサブ学習値ｓｆｂｇが更新される。
【０２１５】
次いで、ステップＳ３４では、ステップＳ３３で算出されたサブ学習値ｓｆｂｇが下限ガード値Ｇｌｏｗよりも小さいか否かが判定される。ステップＳ３４において、サブ学習値ｓｆｂｇが下限ガード値Ｇｌｏｗよりも小さいと判定された場合には、ステップＳ３５へと進む。ステップＳ３５では、サブ学習値ｓｆｂｇが下限ガード値Ｇｌｏｗに設定される。一方、ステップＳ３４において、サブ学習値ｓｆｂｇが下限ガード値Ｇｌｏｗ以上であると判定された場合には、ステップＳ３５がスキップされる。
【０２１６】
次いで、ステップＳ３６では、ステップＳ３３で算出されたサブ学習値ｓｆｂｇが上限ガード値Ｇｕｐよりも大きいか否かが判定される。ステップＳ３６において、サブ学習値ｓｆｂｇが上限ガード値Ｇｕｐよりも大きいと判定された場合には、ステップＳ３７へと進む。ステップＳ３７では、サブ学習値ｓｆｂｇが上限ガード値Ｇｕｐに設定される。一方、ステップＳ３６において、サブ学習値ｓｆｂｇが上限ガード値Ｇｕｐ以上であると判定された場合には、ステップＳ３７がスキップされる。その後、制御ルーチンが終了せしめられる。
【０２１７】
＜サブ学習促進制御のフローチャート＞
図１７は、サブ学習促進制御の制御ルーチンを示すフローチャートである。図示した制御ルーチンは一定時間間隔で行われる。
【０２１８】
まず、ステップＳ４１において、サブ学習促進制御の実行フラグＦｅが０であるか否かが判定される。サブ学習促進制御の実行フラグＦｅは学習の促進が行われているときには１にセットされ、行われていないときには０にセットされるフラグである。ステップＳ４１において、サブ学習促進制御の実行フラグＦｅが０であると判定された場合には、ステップＳ４２へと進む。ステップＳ４２では、リッチインバランスの発生判定条件が成立していないか否かが判定される。リッチインバランスの発生判定条件は、メイン学習値ｍｆｂｇとサブ学習値ｓｆｂｇとの正負が反対であってメイン学習値ｍｆｂｇ及びサブ学習値ｓｆｂｇの絶対値がそれぞれ基準絶対値以上であるときに成立する。或いは、これら条件が成立しているときに加えて、メイン学習値ｍｆｂｇからサブ学習値ｓｆｂｇを減算した学習値差Δｆｂｇが基準差以上であるときに成立する。ステップＳ４２において、リッチインバランスの発生判定条件が成立していないと判定された場合には、ステップＳ４３へと進む。ステップＳ４３では、リッチ設定補正量ＡＦＣｒｉｃｈが第一リッチ設定補正量ＡＦＣｒｉｃｈ1に設定されると共に、リーン設定補正量ＡＦＣｌｅａｎが第一リーン設定補正量ＡＦＣｌｅａｎ1に設定される。次いで、ステップＳ４４では、切替基準値ＯＥＤｒｅｆが第一切替基準値ＯＥＤｒｅｆ1に設定されると共に、過不足量誤差ΔΣＯＥＤを制御中心空燃比ＡＦＲに反映させる程度を表すゲインｋｂがｋｂ1に設定される。次いで、ステップＳ４５では、上限ガード値Ｇｕｐが第一上限ガード値Ｇｕｐ1に設定され、下限ガード値Ｇｌｏｗが第一下限ガード値Ｇｌｏｗ1に設定され、制御ルーチンが終了せしめられる。
【０２１９】
一方、ステップＳ４２において、リッチインバランスの発生判定条件が成立していると判定された場合には、ステップＳ４２からステップＳ４６へと進む。ステップＳ４６では、リッチ設定補正量ＡＦＣｒｉｃｈが第二リッチ設定補正量ＡＦＣｒｉｃｈ2に設定されると共に、リーン設定補正量ＡＦＣｌｅａｎが第二リーン設定補正量ＡＦＣｌｅａｎ2に設定される。第二リッチ設定補正量ＡＦＣｒｉｃｈ2は第一リッチ設定補正量ＡＦＣｒｉｃｈ1よりも小さい値（リッチ側の値に相当）である。また、第二リーン設定補正量ＡＦＣｌｅａｎ2は第一リーン設定補正量ＡＦＣｌｅａｎ1よりも小さい値（リッチ側の値に相当）である。
【０２２０】
次いで、ステップＳ４７では、切替基準値ＯＥＤｒｅｆが第二切替基準値ＯＥＤｒｅｆ2に設定されると共に、ゲインｋｂがｋｂ2に設定される。第二切替基準値ＯＥＤｒｅｆは第一切替基準値ＯＥＤｒｅｆ1よりも小さい値であり、また、ｋｂ2はｋｂ1よりも大きい値である。次いで、ステップＳ４８では、上限ガード値Ｇｕｐが第二上限ガード値Ｇｕｐ2に設定され、下限ガード値Ｇｌｏｗが第二下限ガード値Ｇｌｏｗ2に設定される。第二上限ガード値Ｇｕｐ2はその絶対値が第一上限ガード値Ｇｕｐ1の絶対値よりも大きくなるような値である。また、第二下限ガード値Ｇｌｏｗ2はその絶対値が第一下限ガード値Ｇｌｏｗ1の絶対値よりも大きくなるような値である。次いで、ステップＳ４９において、実行フラグＦｅが１にセットされ、制御ルーチンが終了せしめられる。
【０２２１】
実行フラグＦｅが１にセットされると、次の制御ルーチンでは、ステップＳ４１からステップＳ５０へと進む。ステップＳ５０では、リッチインバランスの発生判定条件が成立しているか否かが判定される。ステップＳ５０において、リッチインバランスの発生判定条件が成立していると判定された場合には、ステップＳ５１へと進む。ステップＳ５１では、サブ学習値ｓｆｂｇが一定の値に収束したか否かが判定される。サブ学習値ｓｆｂｇは、例えば、一定時間内におけるサブ学習値ｓｆｂｇの変動量が一定値以内であるときに収束していると判定される。ステップＳ５１において、サブ学習値ｓｆｂｇが収束していないと判定された場合には、ステップＳ４６へと進む。一方、ステップＳ５１において、サブ学習値ｓｆｂｇが収束していないと判定された場合にはステップＳ５２へと進む。ステップＳ５２及びＳ５３では、ステップＳ４３及びＳ４４と同様な操作が行われる。次いで、ステップＳ５４では、ステップＳ４８と同様な操作が行われ、制御ルーチンが終了せしめられる。
【０２２２】
一方、ステップＳ５０において、学習値差Δｆｂｇが基準値ｆｂｇｒｅｆ未満であると判定された場合には、ステップＳ５５へと進む。ステップＳ５５からＳ５７では、ステップＳ４３からＳ４５と同様な操作が行われる。次いで、ステップＳ５８では、実行フラグＦｅが０にリセットされ、制御ルーチンが終了せしめられる。
【符号の説明】
【０２２３】
１    機関本体
５    燃焼室
７    吸気ポート
９    排気ポート
１９    排気マニホルド
２０    上流側排気浄化触媒
２４    下流側排気浄化触媒
３１    ＥＣＵ
４０    上流側空燃比センサ
４１    下流側空燃比センサ
【図１】
2017067040.tif 000003
【図２】
2017067040.tif 000004
【図３】
2017067040.tif 000005
【図４】
2017067040.tif 000006
【図５】
2017067040.tif 000007
【図６】
2017067040.tif 000008
【図７】
2017067040.tif 000009
【図８】
2017067040.tif 000010
【図９】
2017067040.tif 000011
【図１０】
2017067040.tif 000012
【図１１】
2017067040.tif 000013
【図１２】
2017067040.tif 000014
【図１３】
2017067040.tif 000015
【図１４】
2017067040.tif 000016
【図１５】
2017067040.tif 000017
【図１６】
2017067040.tif 000018
【図１７】
2017067040.tif 000019