(57)【要約】本発明の内燃機関システム制御装置は、サブフィードバック学習手段と、状態判定手段と、学習更新速度設定手段と、を備えている。状態判定手段は、サブフィードバック学習値の変動状態が、（ａ）安定している安定状態、（ｂ）大きく変動している不安定状態、（ｃ）両者の中間状態（準安定状態とも称し得る）、の少なくとも３つのうちの、いずれであるかを判定する。学習更新速度設定手段は、サブフィードバック学習値の更新速度を、状態判定手段による判定結果に応じて設定する。本発明においては、この学習更新速度設定手段は、サブフィードバック学習値のハンチングの発生を抑制するように構成されている。
2011052096.tif 000002
【特許請求の範囲】
【請求項１】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記学習更新速度設定手段は、前記更新速度を徐変することで、前記サブフィードバック学習値のハンチングの発生を抑制するように構成されたことを特徴とする、内燃機関システム制御装置。
【請求項２】
請求の範囲第１項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、前記安定状態と前記中間状態との間、又は、前記中間状態と前記不安定状態との間で推移するように、前記サブフィードバック学習値の前記変動状態を判定し、
前記学習更新速度設定手段は、前記状態判定手段により判定された前記変動状態の推移パターンが所定パターンに合致する場合に、前記更新速度の変更を許可することを特徴とする、内燃機関システム制御装置。
【請求項３】
請求の範囲第１項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、
前記サブフィードバック学習値をローパスフィルタによって処理することで得られた判定基準値から所定の第一判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記不安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第一判定幅よりも小さい所定の第二判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記中間状態から前記不安定状態へ前記変動状態の前記判定結果を一段階推移させ、
前記判定基準値から所定の第三判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記中間状態から前記安定状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第三判定幅よりも小さい所定の第四判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させることを特徴とする、内燃機関システム制御装置。
【請求項４】
請求の範囲第３項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、前記変動状態の前記判定結果に応じて、前記ローパスフィルタのパラメータを変更することを特徴とする、内燃機関システム制御装置。
【請求項５】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記学習更新速度設定手段は、前記状態判定手段により判定された前記変動状態の推移パターンが所定パターンに合致する場合に、前記更新速度の変更を許可することを特徴とする、内燃機関システム制御装置。
【請求項６】
請求の範囲第１項〜第５項のうちのいずれか１項に記載の、内燃機関システム制御装置において、
前記サブフィードバック学習値に基づいて、複数の前記気筒の間の空燃比の偏差が過大になったか否かの判定であるインバランス異常判定を行う、異常判定手段をさらに備えたことを特徴とする、内燃機関システム制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数気筒を有する内燃機関（以下「多気筒内燃機関」と称する）を含む内燃機関システムを制御する、内燃機関システム制御装置に関する。
【背景技術】
【０００２】
従来、排気浄化触媒の上流側及び下流側にて排気通路にそれぞれ設けられた、上流側空燃比センサ（以下「Ａ／Ｆセンサ」と称する）及び下流側空燃比センサ（以下「Ｏ２センサ」と称する）の出力信号に基づいて、空燃比を制御する装置が知られている（例えば、特開２００４−１８３５８５号公報、特開２００６−１０４９７８号公報、等参照。）。ここで、Ａ／Ｆセンサは、空燃比に対してリニアな出力特性を示す酸素センサである。一方、Ｏ２センサは、空燃比に対していわゆるＺ特性（理論空燃比よりもリッチ側とリーン側との間で出力が急変する態様でステップ的に出力が変化する特性）を示す酸素センサである。
この種の装置においては、Ａ／Ｆセンサからの出力信号に基づいて、排気浄化触媒（以下、単に「触媒」と称する。）に流入する排ガスの空燃比が目標空燃比になるように、燃料噴射量がフィードバック制御される（以下、この制御を「メインフィードバック制御」と称する。）。また、このメインフィードバック制御と併せて、Ｏ２センサからの出力信号を燃料噴射量にフィードバックする制御も行われる（以下、この制御を「サブフィードバック制御」と称する。）。
具体的には、メインフィードバック制御においては、Ａ／Ｆセンサからの出力に対応する排気の空燃比と目標空燃比との偏差に応じて、フィードバック補正量が算出される。一方、サブフィードバック制御においては、Ｏ２センサからの出力信号に基づいてサブフィードバック量（サブフィードバック補正量）が算出される。そして、このサブフィードバック量をメインフィードバック制御にフィードバックすることで、Ａ／Ｆセンサからの出力に対応する排気の空燃比と目標空燃比との偏差が補正される。
また、サブフィードバック制御では、サブフィードバック量に含まれる定常的な成分が、サブフィードバック学習値として取得される。このサブフィードバック学習値は、Ａ／Ｆセンサからの出力信号に含まれる恒常的な誤差に対応したものである。よって、サブフィードバック学習値がメインフィードバック制御にフィードバックされることで、上述の恒常的な誤差が補償される。これにより、サブフィードバック制御による空燃比補正の開始後、すみやかに、実空燃比を目標空燃比に近づけることが可能になる。
なお、上述のサブフィードバック学習値は、複数気筒間の実空燃比の偏差が過大になったか否かの判定や、失火判定にも用いられる（例えば、特開２００９−３０４５５号公報等参照。これらの異常判定の詳細については本発明の実施形態の説明の際に併せて説明する。）。
このように、サブフィードバック学習値は、この種の装置における様々な用途において、非常に有用かつ重要である。そこで、サブフィードバック学習値が迅速かつ精度よく収束するように、従来、種々の構成が提案されている（例えば、特開２００９−１６２１３９号公報、特開２００９−１８０１４５号公報、等参照。）。
【発明の概要】
【０００３】
この種の装置において、学習速度すなわちサブフィードバック学習値の更新速度（更新量や更新頻度）が適切に設定されないと、サブフィードバック学習値がハンチングしてしまうなどの問題が生じるおそれがある。本発明は、このような課題に対処するためになされたものである。すなわち、本発明の目的は、サブフィードバック学習値のハンチングの発生を抑制することで、サブフィードバック学習値をより迅速に収束させることにある。
（構成）
本発明の適用対象である内燃機関システムは、多気筒内燃機関と、複数の燃料噴射弁と、触媒と、下流側空燃比センサと、上流側空燃比センサと、を備えている。
複数の前記燃料噴射弁は、複数の気筒の各々に対応して設けられている。
前記触媒は、複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装（配設）されている。
前記下流側空燃比センサは、前記触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生するようになっている。
前記上流側空燃比センサは、前記触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生するようになっている。
本発明の内燃機関システム制御装置（以下「制御装置」と称する）は、前記内燃機関システムを制御するように構成されている。具体的には、この制御装置は、サブフィードバック学習手段と、状態判定手段と、学習更新速度設定手段と、を備えている。
前記サブフィードバック学習手段は、サブフィードバック量の定常成分に対応した量である、サブフィードバック学習値を、取得するようになっている。前記サブフィードバック量は、前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量である。
前記状態判定手段は、前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態（準安定状態とも称し得る）、
の少なくとも３つのうちの、いずれであるかを判定するようになっている。
前記学習更新速度設定手段は、前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度を、前記状態判定手段による判定結果に応じて設定するようになっている。この学習更新速度設定手段は、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記更新速度を設定するものである。
本発明の一つの特徴は、前記学習更新速度設定手段が、（典型的には前記状態判定手段による判定結果が切り替わった際に）前記更新速度を徐変することで、前記サブフィードバック学習値のハンチングの発生を抑制するように構成されたことにある。
本発明の他の特徴は、前記学習更新速度設定手段が、前記状態判定手段により判定された前記サブフィードバック学習値の変動状態の推移パターンが所定パターンに合致する場合に、前記更新速度の変更を許可するように構成されたことにある。この場合、前記状態判定手段は、前記安定状態と前記中間状態との間、又は、前記中間状態と前記不安定状態との間で推移するように、前記サブフィードバック学習値の変動状態を判定するものであってもよい。
本発明のさらに他の特徴は、前記状態判定手段が、ローパスフィルタを備えていて、下記の如く動作するように構成されたことにある。なお、かかる構成において、前記状態判定手段は、前記変動状態の判定結果に応じて、前記ローパスフィルタのパラメータを変更するようになっていてもよい。
前記サブフィードバック学習値をローパスフィルタによって処理することで得られた判定基準値から所定の第一判定幅までの範囲内に前記サブフィードバック学習値が入る場合に、前記不安定状態から前記中間状態へ前記変動状態の判定結果を一段階推移させる。一方、前記判定基準値から前記第一判定幅よりも小さい所定の第二判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に、前記中間状態から前記不安定状態へ前記変動状態の判定結果を一段階推移させる。
さらに、前記判定基準値から所定の第三判定幅までの範囲内に前記サブフィードバック学習値が入る場合に、前記中間状態から前記安定状態へ前記変動状態の判定結果を一段階推移させる。なお、前記第三判定幅は、前記第二判定幅以下に設定され得る。一方、前記判定基準値から前記第三判定幅よりも小さい所定の第四判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に、前記安定状態から前記中間状態へ前記変動状態の判定結果を一段階推移させる。
本発明の制御装置は、異常判定手段をさらに備え得る。この異常判定手段は、前記サブフィードバック学習値に基づいて、前記内燃機関システムにおける異常の発生の有無を判定するようになっている。例えば、この異常判定手段は、インバランス異常判定を行うようになっている。このインバランス異常判定は、インバランス異常が発生したか否か、すなわち、複数の前記気筒の間の空燃比の偏差が過大になったか否か、の判定である。
（作用・効果）
かかる構成を備えた本発明の制御装置においては、前記サブフィードバック量の定常成分に対応して、前記サブフィードバック学習値が、前記サブフィードバック学習手段によって取得（更新）される。このとき、前記サブフィードバック学習値の更新速度は、前記状態判定手段による判定結果に応じて、前記学習更新速度設定手段によって設定されたものである。
すなわち、前記状態判定手段は、前記サブフィードバック学習値の変動状態が、前記安定状態、前記不安定状態、前記中間状態、の少なくとも３つのうちの、いずれであるかを判定する。具体的には、例えば、前記状態判定手段は、前記サブフィードバック学習手段による前記サブフィードバック学習値の取得（更新）状態に応じて、前記安定状態、前記不安定状態、前記中間状態、の間で、前記変動状態の判定結果（設定状態）を推移させる。
そして、前記学習更新速度設定手段は、前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度を、前記状態判定手段による判定結果（設定状態）に応じて設定する。具体的には、例えば、前記学習更新速度設定手段は、前記状態判定手段による判定結果が切り替わった際に、前記更新速度を徐変する。あるいは、例えば、前記学習更新速度設定手段は、前記変動状態の推移パターンが前記所定パターンに合致する場合に、前記更新速度の変更を許可する。
このように、本発明の制御装置においては、前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記サブフィードバック学習値の変動状態に応じて、適切に設定される。したがって、本発明によれば、前記サブフィードバック学習値のハンチングが可及的に抑制され、前記サブフィードバック学習値がより迅速に収束する。
【図面の簡単な説明】
【０００４】
図１は、本発明の一実施形態が適用された内燃機関システムの全体構成を示す概略図である。
図２は、図１に示されている上流側空燃比センサの概略構成を示す断面図である。
図３は、図２に示されている上流側空燃比センサの、排ガスの空燃比が理論空燃比よりもリーン側である場合の動作を説明するための図である。
図４は、図２に示されている上流側空燃比センサにおける、限界電流値と排ガスの空燃比との関係を示したグラフである。
図５は、図２に示されている上流側空燃比センサの、排ガスの空燃比が理論空燃比よりもリッチ側である場合の動作を説明するための図である。
図６は、図２に示されている上流側空燃比センサにおける、出力値と排ガスの空燃比との関係を示したグラフである。
図７は、図１に示されている下流側空燃比センサにおける、出力値と排ガスの空燃比との関係を示したグラフである。
図８は、気筒に供給された混合気の空燃比と、その気筒から排出される未燃成分と、の関係を示したグラフである。
図９は、インバランス割合とサブフィードバック量の学習値との関係を示したグラフである。
図１０は、図１に示されている電気制御装置のＣＰＵが実行する燃料噴射制御ルーチンの一具体例を示したフローチャートである。
図１１は、図１に示されている電気制御装置のＣＰＵがメインフィードバック量を算出するために実行するルーチンの、一具体例を示したフローチャートである。
図１２は、図１に示されている電気制御装置のＣＰＵがサブフィードバック量及びサブフィードバック学習値を算出するために実行するルーチンの、一具体例を示したフローチャートである。
図１３は、図１に示されている電気制御装置のＣＰＵが図１２のルーチンを実行する際に参照するルックアップテーブルの一例を示した図である。
図１４は、図１に示されている電気制御装置のＣＰＵが調整値及び更新禁止回数（これらはサブフィードバック学習値の更新速度すなわち学習速度を規定する値である）を設定するために実行するルーチンの、一具体例を示したフローチャートである。
図１５は、図１に示されている電気制御装置のＣＰＵが図１４のルーチンを実行する際に参照するルックアップテーブルの、一例を示した図である。
図１６は、図１に示されている電気制御装置のＣＰＵが図１４のルーチンを実行する際に参照するルックアップテーブルの、一例を示した図である。
図１７は、図１に示されている電気制御装置のＣＰＵがサブフィードバック学習の進行程度すなわちサブフィードバック学習値の変動状態を表すｓｔａｔｕｓ（ステータス）を判定及び変更するために実行するルーチンの、一具体例を示したフローチャートである。
図１８は、図１に示されている電気制御装置のＣＰＵが学習更新回数を示すカウンタ（インバランス異常判定を実行するか否かを決定する際に参照される）の更新のために実行するルーチンの、一具体例を示したフローチャートである。
図１９は、図１に示されている電気制御装置のＣＰＵがインバランス異常判定を行うために実行するルーチンの、一具体例を示したフローチャートである。
図２０は、図１に示されている電気制御装置のＣＰＵがｓｔａｔｕｓを判定及び変更するために実行するルーチンの、他の具体例を示したフローチャートである。
図２１は、図１に示されている電気制御装置のＣＰＵが調整値及び更新禁止回数を設定するために実行するルーチンの、他の具体例を示したフローチャートである。
【発明を実施するための形態】
【０００５】
以下、本発明の一実施形態について、図面を参照しながら説明する。
（１．内燃機関システムの概略構成）
図１は、本発明の一実施形態が適用された内燃機関システム１の全体構成を示す概略図である。内燃機関システム１は、４サイクル・火花点火式の多気筒内燃機関２（以下、単に「機関２」と称する。）と、吸気系統３と、排気系統４と、を備えている。以下、内燃機関システム１の各部の構成について説明する。
（１−１．多気筒内燃機関）
機関２の本体２０には、複数の気筒２１が設けられている。具体的には、本例においては、４つの気筒２１（第１気筒＃１〜第４気筒＃４）が、直列に配置されている。また、本体２０には、気筒２１の数に対応して、複数の吸気ポート２２及び複数の排気ポート２３が形成されている。
吸気ポート２２は、気筒（燃焼室）２１に燃料混合気（空気と燃料との混合気体：以下、単に「混合気」と称する。）を供給するための通路である。排気ポート２３は、気筒（燃焼室）２１から既燃ガスを排出するための通路である（排ガスは排気ポート２３を介して気筒２１から排出されたガスである）。機関２の本体２０は、吸気ポート２２を図示しない吸気弁により開閉するとともに、排気ポート２３を図示しない排気弁により開閉するように構成されている（かかる構成は周知であるので、その詳細な説明は省略する。）。
本体２０には、気筒２１の数に対応して、複数（本例においては４個）の点火プラグ２４が装着されている。点火プラグ２４は、点火信号に応答して、火花発生部から点火用火花を発生するようになっている。各点火プラグ２４は、上述の火花発生部が各気筒（燃焼室）２１の頂部であって半径方向における中央部に露呈されるように配設されている。
また、本体２０には、気筒２１の数に対応して、複数（本例においては４個）のインジェクタ（燃料噴射弁）２５が固定されている。インジェクタ２５は、各吸気ポート２２に一つずつ（すなわち、一つの気筒２１に対して一つ）設けられている。インジェクタ２５は、噴射指示信号に応答し、正常である場合に、その噴射指示信号に含まれる指示噴射量の燃料を、対応する吸気ポート２２内に噴射するようになっている。このように、機関２は、複数の気筒２１のそれぞれに対して、他の気筒２１とは独立して燃料供給が行われるように構成されている。
さらに、機関２の本体２０には、吸気弁制御装置２６が設けられている。吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整及び制御する周知の構成を備えている。この吸気弁制御装置２６は、指示信号（駆動信号）に基づいて作動することで、図示しない吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
（１−２．吸排気系統）
吸気系統３は、吸気マニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４、及びスロットル弁アクチュエータ３５を備えている。
吸気マニホールド（ｉｎｔａｋｅ  ｍａｎｉｆｏｌｄ）３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管（ｉｎｔａｋｅ  ｐｉｐｅ）３２は、サージタンク部に接続されている。吸気マニホールド３１、吸気管３２、及び複数の吸気ポート２２によって、吸気通路が構成されている。エアフィルタ３３は、吸気管３２の、吸気流動方向における上流側の端部に設けられている。
スロットル弁３４は、エアフィルタ３３と吸気マニホールド３１との間の位置で、吸気管３２内にて回動可能に取り付けられている。スロットル弁３４は、回動することにより、吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３５は、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
排気系統４は、排気マニホールド４１、排気管４２、上流側触媒４３、及び下流側触媒４４を備えている。
排気マニホールド（ｅｘｈａｕｓｔ  ｍａｎｉｆｏｌｄ）４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、からなっている。排気管（ｅｘｈａｕｓｔ  ｐｉｐｅ）４２は、排気マニホールド４１の集合部４１ｂに接続されている。排気マニホールド４１、排気管４２、及び複数の排気ポート２３によって、排気通路（排ガスが通過する通路）が構成されている。
上流側触媒４３は、酸素を吸蔵及び放出する機能（以下、「酸素吸蔵機能」と称する。）を有する、いわゆる三元触媒であって、排気管４２に介装（配設）されている。すなわち、上流側触媒４３は、集合部４１ｂよりも排気流動方向における下流側にて、排気通路に介装されている。この上流側触媒４３は、所定の活性温度に到達すると、酸素吸蔵機能により、未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒作用を発揮するようになっている。なお、かかる触媒作用は、インバランス異常（複数の気筒２１の間の空燃比の偏差が過大になる異常）を検出するための、水素Ｈ２を酸化することにより浄化する作用、と表現することもできる。
下流側触媒４４は、上流側触媒４３と同様のいわゆる三元触媒であって、上流側触媒４３よりも排気通流方向における下流側にて、排気管４２に配設（介装）されている。
（１−３．各種センサ）
本実施形態における内燃機関システム１には、熱線式エアフローメータ５１、スロットルポジションセンサ５２、機関回転速度センサ５３、水温センサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６、及びアクセル開度センサ５７が設けられている。
熱線式エアフローメータ５１は、エアフィルタ３３とスロットル弁３４との間の位置にて、吸気管３２に介装されている。熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量に応じた信号、すなわち、機関２の単位時間あたりの吸入空気量Ｇａを表す信号を出力するようになっている。
スロットルポジションセンサ５２は、吸気管３２における、スロットル弁３４に対応する位置に装着されている。スロットルポジションセンサ５２は、スロットル弁３４の開度に応じた信号、すなわち、スロットル弁開度ＴＡを表す信号を出力するようになっている。
機関回転速度センサ５３は、機関２の本体２０における、図示しないインテークカムシャフトに対応する位置に装着されている。機関回転速度センサ５３は、インテークカムシャフトが５°回転する毎に幅狭のパルスを有するとともにインテークカムシャフトが３６０°回転する毎に幅広のパルスを有する信号（機関回転速度ＮＥ及び絶対クランク角の取得の基礎となる信号）を出力するようになっている。
水温センサ５４は、機関２の本体２０に装着されている。水温センサ５４は、内燃機関２の冷却水の温度に応じた信号、すなわち、冷却水温ＴＨＷを表す信号を出力するようになっている。
上流側空燃比センサ５５は、周知のいわゆる限界電流式広域空燃比センサであって、排気マニホールド４１の集合部４１ｂと上流側触媒４３との間の位置において、排気通路（排気マニホールド４１又は排気管４２）に配設されている。上流側空燃比センサ５５は、その配設位置を流れる排ガスの空燃比（上流側空燃比ａｂｙｆｓ）に応じた出力値Ｖａｂｙｆｓを発生するようになっている。上流側空燃比センサ５５の内部構造の詳細については後述する。
下流側空燃比センサ５６は、周知のいわゆる濃淡電池型酸素濃度センサ（Ｏ２センサ）であって、上流側触媒４３と下流側触媒４４との間の位置において、排気通路（排気管４２）に配設されている。下流側空燃比センサ５６は、その配設位置を流れる排ガスの空燃比（下流側空燃比ａｆｄｏｗｎ）に応じた出力値Ｖｏｘｓを発生するようになっている。
アクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Ａｃｃｐを表す信号を出力するようになっている。
（２．制御装置の概略構成）
本発明の一実施形態である電気制御装置６０は、内燃機関システム１の動作を制御する装置であり、さらに詳しくは、機関２の空燃比を制御する空燃比制御装置である。この空燃比制御装置は、また、インバランス異常判定装置でもある。さらに、この空燃比制御装置は、燃料噴射量を制御する燃料噴射量制御装置でもある。
電気制御装置６０は、本発明の各手段（サブフィードバック学習手段、状態判定手段、学習更新速度設定手段、及び異常判定手段）を構成するものであって、具体的には、ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ、インターフェース（ＡＤコンバータを含む）、等からなる、周知のマイクロコンピュータである。この電気制御装置６０は、インターフェースを介して、内燃機関システム１における、点火プラグ２４やインジェクタ２５等の動作部及び上述の各種センサと、電気的に接続されている。
すなわち、電気制御装置６０は、インターフェースを介して上述の各種センサからの出力信号を受け取るとともに、当該信号に応じたＣＰＵの演算結果に基づいて、上述の各動作部の動作を制御するための指示信号（駆動信号）を各動作部にインターフェースを介して送出するようになっている。
具体的には、例えば、電気制御装置６０は、機関回転速度センサ５３及び図示しないクランク角センサからの信号に基づいて、機関２のクランク角度（絶対クランク角）を取得するようになっている。また、電気制御装置６０は、機関回転速度センサ５３から出力される信号を、機関回転速度ＮＥを表す信号に変換するようになっている。さらに、電気制御装置６０は、取得されたアクセルペダルＡＰの操作量Ａｃｃｐが大きくなる程スロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３５に指示信号を送出するようになっている。
（３．空燃比センサの構成の詳細）
図２は、図１に示されている上流側空燃比センサ５５の概略構成を示す断面図である。上流側空燃比センサ５５は、図２に示されているように、固体電解質層５５ａと、排ガス側電極層５５ｂと、大気側電極層５５ｃと、拡散抵抗層５５ｄと、隔壁部５５ｅと、ヒータ５５ｆと、を備えている。
固体電解質層５５ａは、酸素イオン導電性を有する酸化物焼結体であって、本例においては、ＺｒＯ２（ジルコニア）にＣａＯを安定剤として固溶させた、いわゆる安定化ジルコニア素子である。この固体電解質層５５ａは、その温度が活性温度以上であるとき、周知の酸素電池特性及び酸素ポンプ特性を発揮するようになっている。酸素電池特性とは、酸素濃度の高い側から低い側へ酸素イオンを通過させることで起電力を発生する特性をいう。酸素ポンプ特性とは、固体電解質層５５ａの両端に電位差が与えられたとき、陰極（低電位側電極）から陽極（高電位側電極）へと、それらの電極間の電位差に応じた量の酸素イオンを移動させる特性をいう。これらの特性は、後述するように、上流側空燃比センサ５５が排ガスの空燃比に応じた出力値を出力する際に発揮されるべき特性である。
排ガス側電極層５５ｂは、固体電解質層５５ａの「一つの面」上に設けられている。大気側電極層５５ｃは、固体電解質層５５ａの他の面上であって、固体電解質層５５ａを挟んで排ガス側電極層５５ｂと対向するように設けられている。排ガス側電極層５５ｂ及び大気側電極層５５ｃは、白金（Ｐｔ）等の触媒活性の高い貴金属からなり、ガス浸透性を十分に有するように、化学メッキ等により多孔質状に形成されている。
拡散抵抗層（拡散律速層）５５ｄは、固体電解質層５５ａにおける前記「一つの面」及びその上に設けられた排ガス側電極層５５ｂを覆うように設けられている。拡散抵抗層５５ｄは、多孔質セラミック（耐熱性無機物質）からなり、プラズマ溶射法等により形成されている。
拡散抵抗層５５ｄにおける、水素Ｈ２の拡散速度は、相対的に分子径の大きい炭化水素ＨＣ及び一酸化炭素ＣＯ等よりも大きい。このため、水素Ｈ２は、拡散抵抗層５５ｄの存在により、炭化水素ＨＣ及び一酸化炭素ＣＯ等よりも、排ガス側電極層５５ｂに速やかに到達する。よって、上流側空燃比センサ５５は、拡散抵抗層５５ｄの外表面（排ガス側電極層５５ｂと対向する表面とは反対側の表面）が排ガスに晒される（機関２から排出された排ガスに接する）ように配置されている。
隔壁部５５ｅは、緻密でガスを透過させないアルミナセラミックスからなり、側断面視にて略Ｕ字状に形成されている。隔壁部５５ｅは、その開口端が固体電解質層５５ａによって塞がれることで、隔壁部５５ｅと固体電解質層５５ａとの間に大気室５５ｇ（大気側電極層５５ｃを収容する空間）を形成するように、固体電解質層５５ａと接合されている。この大気室５５ｇには、大気が導入されている。
ヒータ５５ｆは、隔壁部５５ｅに埋設されている。ヒータ５５ｆは、通電時に発熱することで固体電解質層５５ａを加熱するようになっている。
（４．空燃比センサの動作説明）
以下、図１及び図２に示されている、上流側空燃比センサ５５及び下流側空燃比センサ５６の動作について説明する。
図３に示されているように、上流側空燃比センサ５５には、大気側電極層５５ｃ側が高電位となり排ガス側電極層５５ｂが低電位となるような電圧Ｖが、電源５５ｈにより印加される。
排ガスの空燃比が理論空燃比よりもリーン側である場合、上述した酸素ポンプ特性によって空燃比が検出される。すなわち、この場合、排ガス中に多量に含まれる酸素分子が拡散抵抗層５５ｄを通って排ガス側電極層５５ｂに到達する。この酸素分子は、排ガス側電極層５５ｂにて電子を受け取ることで酸素イオンになる。この酸素イオンは、固体電解質層５５ａを通過し、大気側電極層５５ｃにて電子を放出することで酸素分子になる。この結果、電源５５ｈの正極から、大気側電極層５５ｃ、固体電解質層５５ａ、及び排ガス側電極層５５ｂを介して、電源５５ｈの負極へと、電流Ｉが流れる。
電圧Ｖの大きさを所定値Ｖｐ以上に設定したとき、電流Ｉの大きさは、拡散抵抗層５５ｄの外側表面に到達した排ガスに含まれる酸素分子のうちの、拡散抵抗層５５ｄを通って排ガス側電極層５５ｂへと拡散によって到達する量に応じて変化する。すなわち、電流Ｉの大きさは、排ガス側電極層５５ｂにおける酸素濃度（酸素分圧）に応じて変化する。ここで、排ガス側電極層５５ｂにおける酸素濃度は、拡散抵抗層５５ｄの外側表面に到達した排ガスの酸素濃度に応じて変化する。この電流Ｉは、図４に示されているように、電圧Ｖを所定値Ｖｐ以上に設定しても変化しないから、「限界電流Ｉｐ」と称される。空燃比センサ５５は、この限界電流Ｉｐ値に基づいて、空燃比に応じた値を出力する。
一方、排ガスの空燃比が理論空燃比よりもリッチ側である場合、図５に示されているように、上述した酸素電池特性によって空燃比が検出される。すなわち、この場合、排ガス中に多量に含まれる未燃物（ＨＣ，ＣＯ及びＨ２等）が拡散抵抗層５５ｄを通って排ガス側電極層５５ｂに到達する。すると、大気側電極層５５ｃにおける酸素濃度と排ガス側電極層５５ｂにおける酸素濃度との差（酸素分圧差）が大きくなるので、固体電解質層５５ａは酸素電池として機能する（印加電圧Ｖは、この酸素電池の起電力よりも小さくなるように設定される。）。
したがって、大気室５５ｇに存在する酸素分子は、大気側電極層５５ｃにて電子を受け取ることで酸素イオンとなる。この酸素イオンは、固体電解質層５５ａを通過して排ガス側電極層５５ｂへと移動し、排ガス側電極層５５ｂにて未燃物を酸化する際に電子を放出する。この結果、電源５５ｈの負極から、排ガス側電極層５５ｂ、固体電解質層５５ａ、及び大気側電極層５５ｃを介して、電源５５ｈの正極へと、電流Ｉが流れる。
この電流Ｉの大きさは、大気側電極層５５ｃから固体電解質層５５ａを通って排ガス側電極層５５ｂに到達する酸素イオンの量により定まる。上述した通り、この酸素イオンは、排ガス側電極層５５ｂにて未燃物を酸化するために使用される。したがって、拡散により拡散抵抗層５５ｄを通過して排ガス側電極層５５ｂに到達する未燃物の量が多い程、固体電解質層５５ａを通過する酸素イオンの量は多くなる。換言すれば、空燃比が小さい程（理論空燃比よりもリッチ側であって未燃物の量が多い程）、電流Ｉの大きさは大きくなる。但し、拡散抵抗層５５ｄの存在により、排ガス側電極層５５ｂに到達する未燃物の量は制限される。よって、電流Ｉは空燃比に応じた一定値Ｉｐとなる。上流側空燃比センサ５５は、この限界電流Ｉｐ値に基づいて、空燃比に応じた値を出力する。
このような検出原理に基づく上流側空燃比センサ５５は、図６に示されているように、上流側空燃比センサ５５の配設位置を流れる排ガスの空燃比（上流側空燃比ａｂｙｆｓ）に応じた出力値Ｖａｂｙｆｓを出力する。出力値Ｖａｂｙｆｓは、限界電流Ｉｐを電圧に変換することにより得られる。この出力値Ｖａｂｙｆｓは、被検出ガスの空燃比が大きくなる程（リーン側となる程）増大する。
電気制御装置６０は、図６に示されている空燃比変換テーブル（マップ）Ｍａｐａｂｙｆｓを記憶（格納）していて、出力値Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、実際の上流側空燃比ａｂｙｆｓを検出する。この空燃比変換テーブルＭａｐａｂｙｆｓは、水素の選択的拡散も考慮して作成されている。換言すれば、各気筒２１の空燃比を互いに等しい空燃比ｘに設定することにより、上流側空燃比センサ５５に到達する排ガスの空燃比を値ｘに設定した場合の、上流側空燃比センサ５５の実際の出力値Ｖａｂｙｆｓに基づいて、空燃比変換テーブルＭａｐａｂｙｆｓが作成されている。
下流側空燃比センサ５６の出力値Ｖｏｘｓは、図７に示されているように、上流側触媒４３を通過した排ガスである被検出ガスの空燃比が理論空燃比よりもリッチのときに最大出力値ｍａｘ（例えば、約０．９Ｖ）となり、この被検出ガスの空燃比が理論空燃比よりもリーンのときに最小出力値ｍｉｎ（例えば、約０．１Ｖ）となり、被検出ガスの空燃比が理論空燃比であるときに最大出力値ｍａｘと最小出力値ｍｉｎの略中間の電圧Ｖｓｔ（中間電圧Ｖｓｔ、例えば、約０．５Ｖ）となる。また、この出力値Ｖｏｘｓは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値ｍａｘから最小出力値ｍｉｎへと急変するとともに、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値ｍｉｎから最大出力値ｍａｘへと急変する。
（５．インバランス異常判定の原理）
次に、本実施形態の電気制御装置６０による、インバランス異常判定の原理について説明する。この「インバランス異常」とは、複数の気筒２１間における空燃比の不均一性（以下、単に「空燃比インバランス」という。）が、警告必要値以上となったこと（すなわちエミッション上許容できない程度となったこと）をいうものとする。
機関２の燃料は、炭素と水素との化合物である。したがって、燃料が燃焼して水Ｈ２Ｏと二酸化炭素ＣＯ２へと変化する過程において、炭化水素ＨＣや一酸化炭素ＣＯや水素Ｈ２等の中間生成物（未燃物）が生成される。
燃焼に供される混合気の空燃比が理論空燃比よりも小さくなる程（すなわちリッチ側になる程）、燃料が完全燃焼するために必要な酸素の量と、実際の酸素の量との差が増大する。換言すれば、空燃比がリッチ側になる程、燃焼途中における酸素の不足量が増大し、酸素濃度が低下する。よって、空燃比がリッチ側になる程、上述の中間生成物（未燃物）が酸素と出合って結合する（酸化される）確率が、急激に小さくなる。この結果、図８に示されているように、気筒２１から排出される未燃物（ＨＣ、ＣＯ及びＨ２）の量は、気筒２１に供給される混合気の空燃比がリッチ側になる程、急激に（二次関数的に）増大する。なお、図８の点Ｐ１、点Ｐ２、及び点Ｐ３は、ある気筒２１に供給される燃料の量が、その気筒２１の空燃比が理論空燃比に一致する場合の燃料の量に対して、それぞれ１０％（＝ＡＦ１）、３０％（＝ＡＦ２）及び４０％（＝ＡＦ３）だけ過剰となった点を示すものである。
気筒２１から排出される未燃物のうち、水素Ｈ２は、炭化水素ＨＣ及び一酸化炭素ＣＯ等に比べて小さい分子である。このため、水素Ｈ２は、他の未燃物（ＨＣ，ＣＯ）に比較して、上流側空燃比センサ５５の拡散抵抗層５５ｄを迅速に拡散する。よって、ＨＣ，ＣＯ及びＨ２からなる未燃物が多量に発生すると、拡散抵抗層５５ｄにおいて、水素Ｈ２の選択的拡散（優先的な拡散）が顕著に発生する。すなわち、水素Ｈ２は、空燃比検出素子の表面（固体電解質層５５ａの表面に形成された排ガス側電極層５５ｂ）に、他の未燃物（ＨＣ，ＣＯ）よりも多量に到達するようになる。この結果、水素Ｈ２の濃度と他の未燃物（ＨＣ，ＣＯ）の濃度とのバランスが崩れる。換言すれば、上流側空燃比センサ５５の空燃比検出素子（排ガス側電極層５５ｂ）に到達した排ガスに含まれる全未燃成分に対する水素Ｈ２の割合が、機関２から排出された排ガスに含まれる全未燃成分に対する水素Ｈ２の割合よりも、大きくなる。
ところで、上述したように、本発明の一実施形態である電気制御装置６０は、空燃比制御装置である。この空燃比制御装置は、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓにより表される上流側空燃比ａｂｙｆｓ（出力値Ｖａｂｙｆｓに相当する空燃比）を、上流側目標空燃比ａｂｙｆｒ」に一致させるように、空燃比のフィードバック制御（メインフィードバック制御）を行う。一般に、上流側目標空燃比ａｂｙｆｒは、理論空燃比ｓｔｏｉｃｈに設定される。
さらに、空燃比制御装置は、下流側空燃比センサ５６の出力値Ｖｏｘｓ（あるいは下流側空燃比センサの出力値Ｖｏｘｓにより表される下流側空燃比ａｆｄｏｗｎ）を、下流側目標値Ｖｏｘｓｒｅｆ（あるいは下流側目標値Ｖｏｘｓｒｅｆにより表される下流側目標空燃比）に一致させるように、空燃比のサブフィードバック制御を行う。一般に、下流側目標値Ｖｏｘｓｒｅｆは、理論空燃比に相当する値（０．５Ｖ）に設定される。
ここで、まず、空燃比インバランスは発生していないものの、各気筒２１の空燃比が一律にリッチ側に偏移した場合を想定する。具体的には、例えば、各気筒２１の空燃比が、図８におけるＡＦ２であったと仮定する。なお、このような状態は、例えば、燃料噴射量を算出する際の基本量となる、機関２の吸入空気量の測定値又は推定値が、真の吸入空気量よりも大きくなったときに発生する。
ある気筒２１の空燃比がＡＦ２である場合、当該気筒２１の空燃比がＡＦ２よりも理論空燃比に近い空燃比ＡＦ１であるときに比べ、より多くの未燃物（水素Ｈ２）が排ガスに含まれる（点Ｐ１及び点Ｐ２参照）。したがって、上流側空燃比センサ５５の拡散抵抗層５５ｄにおいて、上述のような、水素Ｈ２の選択的拡散が発生する。
しかしながら、この場合、各気筒２１が一回の燃焼行程を終了する間（クランク角７２０度に相当する期間）に機関２に供給される混合気の、空燃比の真の平均値もまた、ＡＦ２である。さらに、上述したように、図６に示されている空燃比変換テーブルＭａｐａｂｙｆｓは、水素Ｈ２の選択的拡散を考慮して作成されている。したがって、上流側空燃比センサ５５の実際の出力値Ｖａｂｙｆｓにより表される上流側空燃比ａｂｙｆｓ（実際の出力値Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより得られる上流側空燃比ａｂｙｆｓ）は、上述の、空燃比の真の平均値ＡＦ２に一致する。
それゆえ、メインフィードバック制御により、機関２全体に供給される混合気の空燃比は、上流側目標空燃比ａｂｙｆｒである理論空燃比に一致するように修正される。このとき、上述のように、空燃比インバランスは発生していないから、各気筒２１の空燃比も理論空燃比に略一致する。したがって、サブフィードバック量（及び後述するサブフィードバック量の学習値）は、空燃比の補正を大きく行うような値とはならない。すなわち、空燃比インバランスが発生していない場合、サブフィードバック量（及び後述するサブフィードバック量の学習値）は、空燃比の補正を大きく行うような値とはならない。
次に、空燃比インバランスが発生した場合の各値の挙動について、上述したような、空燃比インバランスが発生していない場合の各値の挙動と比較しながら説明する。
ここで、機関２の各気筒２１に吸入される空気量（重量）がＡ０であり、各気筒２１に供給される燃料量（重量）がＦ０であるとき、空燃比Ａ０／Ｆ０が理論空燃比（例えば、１４．５）であると仮定する。
まず、空燃比インバランスは発生していないものの、吸入空気量の推定誤差等に起因して、各気筒２１に対して供給（噴射）される燃料量が均等に１０％だけ過剰となったと仮定する。すなわち、各気筒２１に、１．１・Ｆ０の燃料が供給されたと仮定する。
このとき、４気筒の機関２に供給される空気量の総量（各気筒２１がそれぞれ一回の燃焼行程を終了する間に機関２全体に供給される空気量）は、４・Ａ０である。また、機関２に供給される燃料量の総量（各気筒２１がそれぞれ一回の燃焼行程を終了する間に機関２全体に供給される燃料の量）は、４．４・Ｆ０（＝１．１・Ｆ０＋１．１・Ｆ０＋１．１・Ｆ０＋１．１・Ｆ０）である。よって、機関２全体に供給される混合気の空燃比の真の平均値は、４・Ａ０／（４．４・Ｆ０）＝Ａ０／（１．１・Ｆ０）となる。このとき、上流側空燃比センサ５５の出力値は、空燃比Ａ０／（１．１・Ｆ０）に応じた出力値となる。
すると、各気筒２１に供給される燃料の量がメインフィードバック制御により１０％ずつ減量される（各気筒２１にＦ０の燃料が供給されるようになる）。よって、機関２全体に供給される混合気の空燃比は、理論空燃比Ａ０／Ｆ０に一致させられる。
これに対し、特定の気筒２１の空燃比のみが大きくリッチ側にずれることで空燃比インバランスが発生した場合を想定する。このような状態は、例えば、特定の気筒２１に対応して備えられているインジェクタ２５の噴射特性が、指示された燃料噴射量よりも相当に多い量の燃料を噴射する特性になった場合に生じる。このようなインジェクタ２５の異常は、燃料噴射弁のリッチずれ異常、とも称される。
具体的には、ある一つの気筒２１（以下、「特定気筒」と称する。）に対して供給される燃料の量が４０％だけ過剰な量（すなわち１．４・Ｆ０）であり、残りの３つの気筒２１に対して供給される燃料の量は、それらの気筒２１の空燃比が理論空燃比と一致するような燃料の量（すなわちＦ０）である、と仮定する。この場合、特定気筒の空燃比は、図８に示されているＡＦ３であり、残りの気筒２１の空燃比は、理論空燃比である。
このとき、４気筒の機関２に供給される空気量の総量は、４・Ａ０である。一方、機関２に供給される燃料の総量は、４．４・Ｆ０（＝１．４・Ｆ０＋Ｆ０＋Ｆ０＋Ｆ０）である。よって、機関２全体に供給される混合気の空燃比の真の平均値は、４・Ａ０／（４．４・Ｆ０）＝Ａ０／（１．１・Ｆ０）となる。すなわち、この場合の機関２全体に供給される混合気の空燃比の真の平均値は、上述した、各気筒２１に対して供給される燃料の量が均等に１０％だけ過剰である場合と同じ値となる。
しかしながら、上述したように、排ガス中の未燃物（ＨＣ、ＣＯ及びＨ２）の量は、気筒２１に供給される混合気の空燃比がリッチ側になる程急激に増大する。
このため、特定気筒に対して供給される燃料の量のみが４０％だけ過剰な量となった場合に、排ガスに含まれる水素Ｈ２の総量ＳＨ１は、図８によれば、ＳＨ１＝Ｈ３＋Ｈ０＋Ｈ０＋Ｈ０＝Ｈ３＋３・Ｈ０となる。これに対し、各気筒２１に対して供給される燃料の量が均等に１０％だけ過剰となった場合に、排ガスに含まれる水素Ｈ２の総量ＳＨ２は、図８によれば、ＳＨ２＝Ｈ１＋Ｈ１＋Ｈ１＋Ｈ１＝４・Ｈ１となる。ここで、量Ｈ１は量Ｈ０よりも僅かに大きいが、量Ｈ１及び量Ｈ０は共に極めて微量である。すなわち、量Ｈ１及び量Ｈ０とは、量Ｈ３と比べた場合、互いに略等しいと言える。したがって、水素総量ＳＨ１は、水素総量ＳＨ２よりも極めて大きくなる（ＳＨ１＞＞ＳＨ２）。
このように、機関２全体に供給される混合気の空燃比の真の平均値が同一であっても、空燃比インバランスが発生した場合に排ガスに含まれる水素の総量ＳＨ１は、空燃比インバランスが発生していない場合に排ガスに含まれる水素の総量ＳＨ２よりも、顕著に大きくなる。
したがって、特定気筒に対して供給される燃料の量のみが４０％だけ過剰な量となった場合、上述した拡散抵抗層５５ｄにおける水素Ｈ２の選択的拡散に起因して、上流側空燃比センサの出力値Ｖａｂｙｆｓにより表される空燃比は、機関２全体に供給される混合気の空燃比の真の平均値（Ａ０／（１．１・Ｆ０））よりも、小（リッチ側）となる。つまり、排ガスの空燃比の平均値が同じであっても、空燃比インバランスが発生している場合には、空燃比インバランスが発生していない場合よりも、上流側空燃比センサ５５の排ガス側電極層５５ｂにおける水素Ｈ２の濃度が高くなるために、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓは空燃比の真の平均値よりもリッチ側を示す値となるのである。この結果、メインフィードバック制御により、機関２全体に供給される混合気の空燃比の真の平均値は、理論空燃比よりもリーン側に制御されてしまう。
一方、下流側空燃比センサ５６には、上流側触媒４３を通過した排ガスが到達する。排ガスに含まれる水素Ｈ２は、他の未燃物（ＨＣ，ＣＯ）とともに、上流側触媒４３において酸化（浄化）される。したがって、下流側空燃比センサ５６の出力値Ｖｏｘｓは、機関２全体に供給される混合気の真の空燃比に応じた値となる。したがって、サブフィードバック制御にて算出される空燃比の制御量（サブフィードバック量等）は、上述のメインフィードバック制御による空燃比のリーン側への過補正を補う値となる。このようなサブフィードバック量等により、機関２の空燃比の真の平均値は、理論空燃比に一致させられる。
このように、サブフィードバック制御にて算出される空燃比の制御量（サブフィードバック量）は、インジェクタ２５のリッチずれ異常による空燃比インバランスに起因する、空燃比のリーン側への過補正を、補償するような値となる。また、このリーン側への過補正の程度は、リッチずれ異常を起こしたインジェクタ２５が、指示された噴射量に比較してより多くの量の燃料を噴射するようになる程（すなわち特定気筒の空燃比がリッチ側になる程）増大する。
したがって、サブフィードバック量が正の値であってその大きさが大きい程機関の空燃比がよりリッチ側へと補正されるシステムにおいては、サブフィードバック量に応じて変化する値（実際には、例えば、サブフィードバック量の定常成分に対応した量であるサブフィードバック学習値）は、空燃比インバランスの程度を示す値となる。
かかる知見に基づき、本実施形態の装置は、サブフィードバック量に応じて変化する値（本例においてはサブフィードバック量の学習値である「サブＦＢ学習値」）を、インバランス判定用パラメータとして取得する。このインバランス判定用パラメータは、上流側触媒４３を通過する前の排ガスに含まれる水素の量と上流側触媒４３を通過した後の排ガスに含まれる水素の量との差が大きい程、大きくなるような値となる。そして、本実施形態の装置は、このインバランス判定用パラメータが異常判定閾値以上となった場合に、インバランス異常が発生したと判定する。
図９の実線は、空燃比インバランスが発生して、ある一つの気筒２１の空燃比が理論空燃比からリッチ側及びリーン側に乖離した場合における、サブＦＢ学習値を示している。図９に示されているグラフの横軸は、「インバランス割合」である。インバランス割合とは、理論空燃比Ｘに対する、理論空燃比Ｘとリッチずれした気筒２１の空燃比ａｆとの差Ｙ（＝Ｘ−ａｆ）の比（Ｙ／Ｘ）のことである。上述したように、インバランス割合が大きくなる程、水素Ｈ２の選択的拡散の影響が急激に大きくなる。したがって、図９の実線により示されるように、サブＦＢ学習値（したがってインバランス判定用パラメータ）は、インバランス割合が大きくなるのに従って、二次関数的に増大する。
なお、図９の実線により示されるように、インバランス割合が負の値である場合においても、そのインバランス割合の絶対値が増大する程、サブＦＢ学習値は増大する。すなわち、例えば、一つの特定気筒の空燃比のみが大きくリーン側にずれるような空燃比インバランスが発生した場合にも、インバランス判定用パラメータとしてのサブＦＢ学習値（あるいはサブＦＢ学習値に応じた値）は増大する。このような状況は、例えば、特定気筒に対して備えられているインジェクタ２５の噴射特性が、指示された燃料噴射量よりも相当に少ない量の燃料を噴射する特性になった場合に生じる。このようなインジェクタ２５の異常は、燃料噴射弁のリーンずれ異常とも称される。
したがって、本実施形態の装置は、特定気筒の空燃比がリッチ側にずれた場合のみならず、リーン側にずれた場合においても、インバランス判定用パラメータが異常判定閾値Ａｔｈ以上となったときに、インバランス異常が発生したと判定する。
なお、図９の破線は、各気筒２１の空燃比を理論空燃比からリッチ側に一律に乖離させ且つメインフィードバック制御を中止した場合における、サブＦＢ学習値を示している。この図９の破線における横軸方向のスケールは、空燃比インバランスが生じた場合の機関２の空燃比のズレと対応するように調整されている。すなわち、例えば、第１気筒のみが２０％だけリッチ側にずれるような空燃比インバランスが生じた場合、インバランス割合は２０％である。一方、各気筒２１の空燃比が一律に５％（２０％／４気筒）だけずれた場合、実際にはインバランス割合は０％であるが、図９においては、インバランス割合は２０％に相当するものとして扱われる。図９の実線と破線との比較から、サブＦＢ学習値が異常判定閾値Ａｔｈ以上となったとき、インバランス異常が発生したと判定することができることが理解される。なお、実際には、メインフィードバック制御が実行されるので、空燃比インバランスが発生していない場合、サブＦＢ学習値は図９の破線に示した程には増大しない。
（６．具体的な動作例の説明）
次に、本実施形態の装置の実際の動作例について説明する。以下、説明の便宜上、「ＭａｐＸ（ａ１，ａ２，…）」は、ａ１，ａ２，…を引数とする値Ｘを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。さらに、「ｓｔａｔｕｓＮ」は、ｓｔａｔｕｓが「Ｎ」（Ｎ＝０，１，２）に設定された状態を表すものとする。ｓｔａｔｕｓは、後述するサブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）の学習進行程度、すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇの変動状態の程度を表す。
（６−１．燃料噴射量制御）
電気制御装置６０に備えられたＣＰＵ（以下、単に「ＣＰＵ」という。）は、図１０に示されている、燃料噴射量Ｆｉの計算及び燃料噴射指示を行うルーチン１０００を、所定のタイミングになる毎に繰り返し実行する。この「所定のタイミング」とは、本例においては、所定の気筒２１（以下、「燃料噴射気筒」とも称する。）のクランク角が、吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎のことをいうものとする。したがって、所定のタイミングになると、ＣＰＵは、ステップ１０１０ないしステップ１０４０の処理を順次実行した後、本ルーチンを一旦終了する。
ステップ１０１０：機関回転速度ＮＥと、エアフローメータ５１によって計測された吸入空気量Ｇａとを、テーブルＭａｐＭｃ（Ｇａ，ＮＥ）に適用することで、筒内吸入空気量Ｍｃ（ｋ）が取得される。この筒内吸入空気量Ｍｃ（ｋ）は、燃料噴射気筒に吸入される空気量に対応する量である。取得された筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ７３内に記憶される。
ステップ１０２０：筒内吸入空気量Ｍｃ（ｋ）を上流側目標空燃比ａｂｙｆｒで除することで、基本燃料噴射量Ｆｂａｓｅが求められる。上流側目標空燃比ａｂｙｆｒは、後述するような特殊な場合を除き、理論空燃比ｓｔｏｉｃｈに設定されている。
ステップ１０３０：基本燃料噴射量Ｆｂａｓｅをメインフィードバック量ＤＦｉにより補正する（より具体的には基本燃料噴射量Ｆｂａｓｅにメインフィードバック量ＤＦｉを加える）ことで、最終燃料噴射量Ｆｉが算出される。メインフィードバック量ＤＦｉについては後述する。
ステップ１０４０：上述のステップ１０３０にて算出された最終燃料噴射量Ｆｉに対応する指示信号が、燃料噴射気筒に対応して設けられているインジェクタ２５に対して送出される。この指示信号は、最終燃料噴射量（指示噴射量）Ｆｉの燃料が、燃料噴射気筒に対応して設けられているインジェクタ２５から噴射されるように生成されている。
このように、各インジェクタ２５から噴射される燃料の量は、全ての気筒２１に対して共通するメインフィードバック量ＤＦｉによって、一律に増減される。
なお、ＣＰＵは、フューエルカット運転（以下、「ＦＣ制御」とも称する。）も実行する。ＦＣ制御は、燃料噴射を停止する制御である。ＦＣ制御は、以下のフューエルカット開始条件が成立したときに開始され、以下のフューエルカット復帰（終了）条件が成立したときに終了する。そして、フューエルカット開始条件が成立した時点からフューエルカット復帰条件が成立する時点までの間、燃料噴射が停止される。すなわち、図１０のステップ１０３０の最終燃料噴射量Ｆｉの値が「０」に設定される。
・フューエルカット開始条件
スロットル弁開度ＴＡが「０」（又はアクセルペダル操作量Ａｃｃｐが「０」）であり、且つ、機関回転速度ＮＥがフューエルカット開始回転速度ＮＥＦＣｔｈ以上であるとき。
・フューエルカット復帰条件
フューエルカット運転中であって且つスロットル弁開度ＴＡ（又はアクセルペダル操作量Ａｃｃｐ）が「０」よりも大きくなったとき、又は、
フューエルカット運転中であって且つ機関回転速度ＮＥがフューエルカット復帰回転速度ＮＥＲＴｔｈ以下となったとき（ＮＥＲＴｔｈはフューエルカット開始回転速度ＮＥＦＣｔｈよりも小さい）。
（６−２．メインフィードバック量の算出）
ＣＰＵは、図１１に示されているメインフィードバック量算出ルーチン１１００を、所定時間の経過毎に繰り返し実行する。したがって、所定のタイミングになると、ＣＰＵは、ステップ１１０５から処理を開始し、各ステップの処理を順次実行する。
ステップ１１０５においては、メインフィードバック制御条件（上流側空燃比フィードバック制御条件）が成立しているか否かが判定される。
メインフィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）上流側空燃比センサ５５が活性化している。
（Ａ２）機関の負荷（負荷率）ＫＬが閾値ＫＬｔｈ以下である。
（Ａ３）フューエルカット中でない。
負荷率ＫＬは、ここでは、下記の（１）式により求められる。（１）式において、Ｍｃ（ｋ）は筒内吸入空気量、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関２の排気量（単位は（ｌ））、「４」は機関２における気筒２１の数である。
ＫＬ＝（Ｍｃ（ｋ）／（ρ・Ｌ／４））・１００％  …（１）
いま、メインフィードバック制御条件が成立しているものとして説明を続けると（ステップ１１０５＝Ｙｅｓ）、処理がステップ１１０５から以下のステップ１１１０ないしステップ１１４０に進行し、ステップ１１４０が終了すると本ルーチンが一旦終了する。
ステップ１１１０：フィードバック制御用出力値Ｖａｂｙｆｃが、下記（２）式に従って取得される。（２）式において、Ｖａｂｙｆｓは上流側空燃比センサ５５の出力値であり、Ｖａｆｓｆｂは下流側空燃比センサ５６の出力値Ｖｏｘｓに基づいて算出されるサブフィードバック量である。これらの値は、いずれも、現時点において得られている値である。サブフィードバック量Ｖａｆｓｆｂの算出方法については、後述する。
Ｖａｂｙｆｃ＝Ｖａｂｙｆｓ＋Ｖａｆｓｆｂ    …（２）
ステップ１１１５：下記（３）式の通り、上述のフィードバック制御用出力値Ｖａｂｙｆｃを図６に示されている空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、フィードバック制御用空燃比ａｂｙｆｓｃが得られる。
ａｂｙｆｓｃ＝Ｍａｐａｂｙｆｓ（Ｖａｂｙｆｃ）    …（３）
ステップ１１２０：下記（４）式に従って、筒内燃料供給量Ｆｃ（ｋ−Ｎ）が求められる。この筒内燃料供給量Ｆｃ（ｋ−Ｎ）は、現時点よりもＮサイクル前の時点において、燃焼室（気筒）２１に実際に供給された燃料の量である。すなわち、現時点よりもＮサイクル（すなわち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）を、フィードバック制御用空燃比ａｂｙｆｓｃで除すことにより、筒内燃料供給量Ｆｃ（ｋ−Ｎ）が求められる。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｓｃ    …（４）
筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）をフィードバック制御用空燃比ａｂｙｆｓｃで除す理由は、以下の通りである。燃焼室２１内での混合気の燃焼により生成された排ガスが、上流側空燃比センサ５５に到達するまでに、Ｎストロークに相当する時間を要している（但し、実際には、上流側空燃比センサ５５には、各気筒２１から排出された排ガスがある程度混合された後に到達する。）。
ステップ１１２５：目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）が、下記（５）式に従って求められる。この目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）は、現時点よりもＮサイクル前の時点において、燃焼室（気筒）２１に供給されるべきであった燃料の量である。
すなわち、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を上流側目標空燃比ａｂｙｆｒで除すことにより、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）が求められる。
Ｆｃｒ＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｒ    …（５）
上述したように、上流側目標空燃比ａｂｙｆｒは、通常運転時において、理論空燃比ｓｔｏｉｃｈに設定される。一方、硫黄等に起因する排気臭の発生を防止することを目的として、所定のリーン設定条件が成立したとき、上流側目標空燃比ａｂｙｆｒは、理論空燃比よりもリーン側の空燃比に設定される。また、以下の条件うちのいずれか１つが成立したとき、上流側目標空燃比ａｂｙｆｒは、理論空燃比よりもリッチ側の空燃比に設定されることもある。
・現時点がＦＣ制御の終了後の所定期間内である場合。
・上流側触媒４３の過熱を防止すべき運転状態（高負荷運転状態）である場合。
ステップ１１３０：下記（６）式に従って、筒内燃料供給量偏差ＤＦｃが取得される。すなわち、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じることにより、筒内燃料供給量偏差ＤＦｃが求められる。この筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）    …（６）
ステップ１１３５：下記（７）式に従って、メインフィードバック量ＤＦｉが求められる。この（７）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。さらに、（７）式の値ＳＤＦｃは、筒内燃料供給量偏差ＤＦｃの積分値（時間積分値）である。すなわち、フィードバック制御用空燃比ａｂｙｆｓｃを上流側目標空燃比ａｂｙｆｒに一致させるための比例積分制御により、メインフィードバック量ＤＦｉが算出される。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（７）
ステップ１１４０：その時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに、ステップ１１３０にて求められた筒内燃料供給量偏差ＤＦｃを加えることにより、新たな筒内燃料供給量偏差の積分値ＳＤＦｃが取得される。
以上により、メインフィードバック量ＤＦｉが比例積分制御により求められ、このメインフィードバック量ＤＦｉが上述した図１０のステップ１０３０の処理により最終燃料噴射量Ｆｉに反映される。
ところで、上記（２）式の右辺のサブフィードバック量Ｖａｆｓｆｂは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓに比較して小さい値となり、且つ、小さい値となるように制限されている。したがって、サブフィードバック量Ｖａｆｓｆｂは、Ｖｏｘｓ（下流側空燃比センサ５６の出力値）を下流側目標値Ｖｏｘｓｒｅｆ（理論空燃比に相当する値）に一致させるための、補助的な補正量と考えることができる。この結果、フィードバック制御用空燃比ａｂｙｆｓｃは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓに実質的に基づく値であると言うことができる。すなわち、メインフィードバック量ＤＦｉは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓにより表される機関の空燃比を、上流側目標空燃比ａｂｙｆｒ（理論空燃比）に一致させるための、補正量であると言うことができる。
一方、ステップ１１０５の判定時においてメインフィードバック制御条件が不成立であると（ステップ１１０５＝Ｎｏ）、処理がステップ１１０５からステップ１１４５に進み、メインフィードバック量ＤＦｉの値が「０」に設定される。次いで、ステップ１１５０にて筒内燃料供給量偏差の積分値ＳＤＦｃに「０」が格納され、本ルーチンが一旦終了する。このように、メインフィードバック制御条件が不成立であるとき、メインフィードバック量ＤＦｉが「０」に設定されるため、基本燃料噴射量Ｆｂａｓｅのメインフィードバック量ＤＦｉによる補正は行われない。
（６−３．サブフィードバック量及びサブＦＢ学習値の算出）
ＣＰＵは、サブフィードバック量Ｖａｆｓｆｂ、及び、サブフィードバック量Ｖａｆｓｆｂの学習値（サブＦＢ学習値Ｖａｆｓｆｂｇ）を算出するために、図１２に示されているルーチン１２００を、所定時間の経過毎に繰り返し実行する。したがって、所定のタイミングになると、ＣＰＵは、ステップ１２０５から処理を開始し、各ステップの処理を順次実行する。
ステップ１２０５においては、サブフィードバック制御条件が成立しているか否かが判定される。サブフィードバック制御条件は、以下の総ての条件が成立したときに成立する。なお、本例において、サブフィードバック制御条件とサブフィードバック量の学習条件とは同じである。
（Ｂ１）メインフィードバック制御条件が成立している。
（Ｂ２）下流側空燃比センサ５６が活性化している。
（Ｂ３）上流側目標空燃比ａｂｙｆｒが理論空燃比ｓｔｏｉｃｈに設定されている。
（Ｂ４）フューエルカット（ＦＣ）制御終了直後から所定の更新禁止回数Ｌに対応した時間が経過している。更新禁止回数Ｌについては後述する。
いま、サブフィードバック制御条件が成立していると仮定して説明を続けると（ステップ１２０５＝Ｙｅｓ）、処理が以下のステップ１２１０ないしステップ１２３５に進行し、ステップ１２３５の終了後に本ルーチンが一旦終了する。
ステップ１２１０：下記（８）式に従って、下流側空燃比センサ５６の出力値Ｖｏｘｓと下流側目標値Ｖｏｘｓｒｅｆとの差である出力偏差量ＤＶｏｘｓが取得される。すなわち、下流側目標値Ｖｏｘｓｒｅｆから現時点の下流側空燃比センサ５６の出力値Ｖｏｘｓを減じることにより、出力偏差量ＤＶｏｘｓが求められる。下流側目標値Ｖｏｘｓｒｅｆは、理論空燃比に相当する値Ｖｓｔ（０．５Ｖ）に設定されている。
ＤＶｏｘｓ＝Ｖｏｘｓｒｅｆ−Ｖｏｘｓ    …（８）
ステップ１２１５：後述の（１０）式において使用される時間積分値ＳＤＶｏｘｓ（出力偏差量の積分値ＳＤＶｏｘｓ）が、下記（９）式に基づいて更新される。すなわち、ＣＰＵは、後述するようにバックアップＲＡＭにサブＦＢ学習値Ｖａｆｓｆｂｇとして格納されている、その時点における時間積分値ＳＤＶｏｘｓに、ステップ１２１０にて求められた出力偏差量ＤＶｏｘｓと値Ｋとの積値Ｋ・ＤＶｏｘｓを加えることにより、新たな時間積分値ＳＤＶｏｘｓを求める。
ＳＤＶｏｘｓ＝ＳＤＶｏｘｓ＋Ｋ・ＤＶｏｘｓ  …（９）
上記（９）式において、ＫはサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度を規定する調整値であり、後述する通り、サブＦＢ学習値Ｖａｆｓｆｂｇの変動状態（後述するｓｔａｔｕｓ）に応じて設定及び変更される値である。すなわち、時間積分値ＳＤＶｏｘｓの１回あたりの更新量は、出力偏差量ＤＶｏｘｓに調整値Ｋを乗じた値Ｋ・ＤＶｏｘｓである。この調整値Ｋが設定及び変更されることにより、時間積分値ＳＤＶｏｘｓの１回あたりの更新量Ｋ・ＤＶｏｘｓが設定及び変更される。
ステップ１２２０：ステップ１２１５にて求められた時間積分値ＳＤＶｏｘｓが、サブＦＢ学習値Ｖａｆｓｆｂｇとして、バックアップＲＡＭに格納される。すなわち、ステップ１２１５及びステップ１２２０において、サブフィードバック量Ｖａｆｓｆｂの学習が行われる。
ステップ１２２３：ステップ１２２０にて求められたサブＦＢ学習値Ｖａｆｓｆｂｇを時定数τのローパスフィルタによって処理した値Ｖａｆｓｆｂｇ０が取得される。本例においては、ローパスフィルタの時定数τは、図１３に示されているルックアップテーブル（マップ）と調整値Ｋとに基づいて決定される。図１３に示されているように、ローパスフィルタの時定数τは、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度を規定する調整値Ｋに応じた値となっている。すなわち、本例においては、ローパスフィルタの時定数τが、学習速度（サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度）に応じて切り換えられる。具体的には、図１３に示されているように、学習速度が大きい程、時定数τが大きくされる。
ステップ１２２５：ステップ１２１０にて算出された出力偏差量ＤＶｏｘｓから、前回出力偏差量ＤＶｏｘｓｏｌｄ（本ルーチンの前回実行時に算出された出力偏差量）を減じることにより、新たな出力偏差量の微分値（時間微分値）ＤＤＶｏｘｓが求められる。
ステップ１２３０：下記（１０）式に従って、サブフィードバック量Ｖａｆｓｆｂが求められる。この（１０）式において、Ｋｐは予め設定された比例ゲイン（比例定数）、Ｋｉは予め設定された積分ゲイン（積分定数）、Ｋｄは予め設定された微分ゲイン（微分定数）である。また、Ｋｐ・ＤＶｏｘｓは比例項、Ｋｉ・ＳＤＶｏｘｓは積分項、Ｋｄ・ＤＤＶｏｘｓは微分項に対応する。このとき、バックアップＲＡＭに記憶されている時間積分値ＳＤＶｏｘｓの最新値（すなわちサブＦＢ学習値Ｖａｆｓｆｂｇ）が、積分項Ｋｉ・ＳＤＶｏｘｓを得るために利用される。
Ｖａｆｓｆｂ＝Ｋｐ・ＤＶｏｘｓ＋Ｋｉ・ＳＤＶｏｘｓ＋Ｋｄ・ＤＤＶｏｘｓ    …（１０）
ステップ１２３５：ステップ１２１０にて算出された出力偏差量ＤＶｏｘｓが、前回出力偏差量ＤＶｏｘｓｏｌｄとして格納される。
時間積分値ＳＤＶｏｘｓは、サブフィードバック制御（すなわちサブフィードバック量Ｖａｆｓｆｂの更新）が十分に長い期間にわたって安定して実行されたとき、収束する。このときの収束値をＳＤＶｏｘｓ１とすると、この収束値ＳＤＶｏｘｓ１は、サブフィードバック量の定常成分に応じた値であり、例えば、エアフローメータ５１の空気量測定誤差、及び、上流側空燃比センサ５５の空燃比検出誤差等を反映した値となる。
このように、下流側空燃比センサ５６の出力値Ｖｏｘｓを下流側目標値Ｖｏｘｓｒｅｆに一致させるための比例・積分・微分（ＰＩＤ）制御により、サブフィードバック量Ｖａｆｓｆｂが算出される。このサブフィードバック量Ｖａｆｓｆｂは、上記（２）式の通り、フィードバック制御用出力値Ｖａｂｙｆｃを算出するために使用される。
以上の処理により、所定時間の経過毎に、サブフィードバック量ＶａｆｓｆｂとサブＦＢ学習値Ｖａｆｓｆｂｇとが更新される。
一方、サブフィードバック制御条件が成立していない場合（ステップ１２０５＝Ｎｏ）、処理がステップ１２４０に進行し、サブフィードバック量Ｖａｆｓｆｂの値が、バックアップＲＡＭに格納してあるサブＦＢ学習値Ｖａｆｓｆｂｇと積分ゲインＫｉとの積（Ｋｉ・Ｖａｆｓｆｂｇ＝ｋｉ・ＳＤＶｏｘｓ）に設定され、本ルーチンが一旦終了する。
以上のようにして、メインフィードバック制御及びサブフィードバック制御が実行される。
（６−４．ｓｔａｔｕｓの説明）
次に、サブフィードバック学習の進行程度、すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇの変動状態を表す、ｓｔａｔｕｓ（ステータス）について説明する。
ｓｔａｔｕｓＮ（Ｎ＝０、１、２）は、以下のように定義される。なお、上述の収束値ＳＤＶｏｘｓ１に対するサブＦＢ学習値Ｖａｆｓｆｂｇの収束状態を、以下、単に「サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態」と称する。
・ｓｔａｔｕｓ０（ｓｔａｔｕｓが「０」）：サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が良好でない。このｓｔａｔｕｓ０は、サブＦＢ学習値Ｖａｆｓｆｂｇが大きく変動する「不安定状態」、すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇが収束値ＳＤＶｏｘｓ１から乖離し、且つ、サブＦＢ学習値Ｖａｆｓｆｂｇの変化速度が大きい状態を意味する。
・ｓｔａｔｕｓ２（ｓｔａｔｕｓが「２」）：サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が良好である。このｓｔａｔｕｓ２は、「安定状態」、すなわち、収束値ＳＤＶｏｘｓ１の近傍にてサブＦＢ学習値Ｖａｆｓｆｂｇが安定している状態を意味する。
・ｓｔａｔｕｓ１（ｓｔａｔｕｓが「１」）：サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が、「中間状態」、すなわち、上述の「安定状態」と「不安定状態」との間にある。
（６−５．調整値Ｋ及び更新禁止回数Ｌの設定）
続いて、調整値Ｋ及び更新禁止回数Ｌ（これらはサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度すなわち学習速度を規定する値である）を設定する際の動作について説明する。更新禁止回数Ｌは、ＦＣ制御が終了した時点から、図１２のステップ１２１５における時間積分値ＳＤＶｏｘｓの更新が禁止される回数である。この更新禁止回数Ｌは、ＦＣ後リッチ制御の実行期間に対応する燃料噴射回数よりも大きい値に設定される。ここで、「ＦＣ後リッチ制御」とは、ＦＣ制御を終了した時点から所定時間にわたり上流側目標空燃比ａｂｙｆｒを理論空燃比ｓｔｏｉｃｈよりも小さい値（リッチ側）に設定する制御である。
ＣＰＵは、調整値Ｋ及び更新禁止回数Ｌを設定するために、図１４に示されているルーチン１４００を、機関２の始動時点以降、所定時間が経過する毎にあるいは吸気行程を迎える気筒２１について燃料噴射開始時点が到来する毎に、繰り返し実行する。
したがって、ＣＰＵは、機関２の始動時点以降の所定のタイミングになると、図１４のステップ１４１０から処理を開始する。まず、ステップ１４１０においては、ｓｔａｔｕｓが更新されたか否かが判定される。
ｓｔａｔｕｓが更新された場合（ステップ１４１０＝Ｙｅｓ）、処理がステップ１４２０に進行し、調整値ＫがテーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）に基づいて決定される。なお、ｓｔａｔｕｓが更新されていない場合（ステップ１４１０＝Ｎｏ）、ステップ１４２０の処理がスキップされる。
図１５は、上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及びｓｔａｔｕｓと、調整値Ｋとの関係を規定したテーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）を示している。図１５に示されているテーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）によれば、各ｓｔａｔｕｓにおける調整値Ｋは、最大酸素吸蔵量Ｃｍａｘが大きい程、より小さい値となる。
また、このテーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）によれば、最大酸素吸蔵量Ｃｍａｘが一定の場合、ｓｔａｔｕｓ０での調整値Ｋがｓｔａｔｕｓ１のものよりも大きく、且つ、ｓｔａｔｕｓ１での調整値Ｋがｓｔａｔｕｓ２のものよりも大きくなるように、調整値Ｋが決定される。このように、最大酸素吸蔵量Ｃｍａｘが一定の場合、調整値Ｋとｓｔａｔｕｓの値との「１対１」の関係が成立する。
この調整値Ｋは、上述したように、図１２のステップ１２１５にて時間積分値ＳＤＶｏｘｓを更新する際に使用される。したがって、ｓｔａｔｕｓが「０」である場合は、ｓｔａｔｕｓが「１」又は「２」である場合よりも、時間積分値ＳＤＶｏｘｓの更新速度が大きくなる。すなわち、ｓｔａｔｕｓが「０」である場合は、ｓｔａｔｕｓが「１」又は「２」である場合よりも、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度すなわち学習速度が大きくなる（図１２のステップ１２１５及びステップ１２２０参照）。同様に、ｓｔａｔｕｓが「１」である場合は、ｓｔａｔｕｓが「２」である場合よりも、時間積分値ＳＤＶｏｘｓの更新速度すなわちサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度が大きくなる。
上流側触媒４３の最大酸素吸蔵量Ｃｍａｘは、いわゆるアクティブ空燃比制御によって、別途取得されている。アクティブ空燃比制御は、例えば、特開平５−１３３２６４号公報等に記載された周知の制御である。したがって、本明細書においては、その詳細な説明は省略されている。なお、本例においては、最大酸素吸蔵量Ｃｍａｘは、取得される毎にバックアップＲＡＭに記憶及び更新され、各種パラメータ（調整値Ｋ及び更新禁止回数Ｌ等）の算出に用いられる際にバックアップＲＡＭから読み出される。
次に、ステップ１４５０にて、ＦＣ制御が終了した直後であるか否かが判定される。ＦＣ制御が終了した直後である場合（ステップ１４５０＝Ｙｅｓ）、処理がステップ１４６０に進行し、更新禁止回数ＬがテーブルＭａｐＬ（Ｃｍａｘ，ｓｔａｔｕｓ）に基づいて決定された後、本ルーチンが一旦終了する。ＦＣ制御が終了した直後ではない場合（ステップ１４５０＝Ｎｏ）、ステップ１４６０の処理がスキップされ、本ルーチンが一旦終了する。
図１６は、上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及びｓｔａｔｕｓと、更新禁止回数Ｌとの関係を規定したテーブルＭａｐＬ（Ｃｍａｘ，ｓｔａｔｕｓ）を示している。図１６に示されているテーブルＭａｐＬ（Ｃｍａｘ，ｓｔａｔｕｓ）によれば、各ｓｔａｔｕｓにおける更新禁止回数Ｌは、最大酸素吸蔵量Ｃｍａｘが大きい程大きい値となるように決定される。さらに、このテーブルＭａｐＬ（Ｃｍａｘ，ｓｔａｔｕｓ）によれば、最大酸素吸蔵量Ｃｍａｘが一定の場合、ｓｔａｔｕｓ０での更新禁止回数Ｌがｓｔａｔｕｓ１のものよりも小さく、且つ、ｓｔａｔｕｓ１での更新禁止回数Ｌがｓｔａｔｕｓ２のものよりも小さくなるように、更新禁止回数Ｌが設定される。
（６−６．ステータス判定）
ＣＰＵは、ｓｔａｔｕｓを判定及び変更するために、図１７に示されているステータス判定ルーチン１７００を、所定時間の経過毎に繰り返し実行する。
したがって、所定のタイミングになると、ＣＰＵは、ステップ１７１０から処理を開始し、各ステップの処理を順次実行する。
ステップ１７１０においては、サブＦＢ学習条件が成立しているか否かが判定される。サブＦＢ学習条件が成立していない場合（ステップ１７１０＝Ｎｏ）、処理がステップ１７１５に進行して、カウンタＣＬが「０」に設定され、本ルーチンが一旦終了する。なお、カウンタＣＬは、機関２が搭載された車両の図示しないイグニッション・キー・スイッチがオフ位置からオン位置に切り換えられた際に実行される図示しないイニシャルルーチンにより「０」に設定されるようになっている。
以下、サブＦＢ学習条件が成立しているものとして説明を続けると（ステップ１７１０＝Ｙｅｓ）、次に、処理がステップ１７２０に進行し、現時点が、サブＦＢ学習値Ｖａｆｓｆｂｇが更新された直後の時点であるか否か（図１２のステップ１２１５及びステップ１２２０の処理を行った直後であるか否か）が判定される。現時点が、サブＦＢ学習値Ｖａｆｓｆｂｇが更新された直後の時点でない場合（ステップ１７２０＝Ｎｏ）、ステップ１７２５以下の処理がスキップされ、本ルーチンが一旦終了する。
これに対し、現時点が、サブＦＢ学習値Ｖａｆｓｆｂｇが更新された直後の時点である場合（ステップ１７２０＝Ｙｅｓ）、処理がステップ１７２５に進行し、判定幅ΔＶａｆｓｆｂｇが、ｓｔａｔｕｓと、これをパラメータとするマップ（ＭａｐΔＶ）と、に基づいて設定される。ここで、判定幅ΔＶａｆｓｆｂｇは、ｓｔａｔｕｓが安定方向にある程小さく設定される。換言すれば、ΔＶａｆｓｆｂｇは、ｓｔａｔｕｓ０よりもｓｔａｔｕｓ１の方が狭く、且つｓｔａｔｕｓ１よりもｓｔａｔｕｓ２の方が狭くなるように設定される。そして、ステップ１７３０にて、サブＦＢ学習値Ｖａｆｓｆｂｇが、判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内（判定基準値Ｖａｆｓｆｂｇｒを中心とした２・ΔＶａｆｓｆｂｇの範囲内）にあるか否かが判定される。この判定基準値Ｖａｆｓｆｂｇｒは、後述するように、前回のステータス判定ルーチン１７００の実行によりｓｔａｔｕｓの変更が行われた際に、サブＦＢ学習値Ｖａｆｓｆｂｇをローパスフィルタ処理することで得られた値Ｖａｆｓｆｂｇ０に基づいて設定されたものである。
サブＦＢ学習値Ｖａｆｓｆｂｇが判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内にある場合（ステップ１７３０＝Ｙｅｓ）、処理がステップ１７４０に進行して、カウンタＣＬが「１」だけ増大する。続いて、ステップ１７４５にて、更新回数閾値ＣＬｔｈが、ｓｔａｔｕｓと、これをパラメータとするマップと、に基づいて設定される。そして、続くステップ１７５０にて、カウンタＣＬが上述の更新回数閾値ＣＬｔｈ以上であるか否かが判定される。
サブＦＢ学習値Ｖａｆｓｆｂｇが、所定時間（具体的にはカウンタＣＬがクリアされずに更新回数閾値ＣＬｔｈ以上に達するまで）連続して、判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内にある場合、サブＦＢ学習値Ｖａｆｓｆｂｇが収束傾向にあるということができる。よって、この場合、ステップ１７５０の判定が「Ｙｅｓ」となり、処理がステップ１７５５に進行してカウンタＣＬがリセットされ、続くステップ１７６０にて、現在のｓｔａｔｕｓが「２」であるか否かが判定される。現在のｓｔａｔｕｓが「２」でない場合（すなわち現在のｓｔａｔｕｓが「０」又は「１」である場合：ステップ１７６０＝Ｎｏ）、処理がステップ１７７０に進行して、１段階だけ安定方向にｓｔａｔｕｓが変更される。このとき、変更前のｓｔａｔｕｓの値が、前回判定値ｓｔａｔｕｓ＿ｏｌｄとしてバックアップＲＡＭに格納される。次に、ステップ１７７５にて、新たな判定基準値Ｖａｆｓｆｂｇｒが、サブＦＢ学習値Ｖａｆｓｆｂｇをローパスフィルタ処理することで得られた値Ｖａｆｓｆｂｇ０に基づいて設定された後、本ルーチンが一旦終了する。
カウンタＣＬが更新回数閾値ＣＬｔｈ未満である場合（ステップ１７５０＝Ｎｏ）、ステップ１７５５ないし１７７５の処理がスキップされ、本ルーチンが一旦終了する。また、カウンタＣＬが更新回数閾値ＣＬｔｈ以上であっても（ステップ１７５０＝Ｙｅｓ）、現在のｓｔａｔｕｓが「２」である場合（ステップ１７６０＝Ｙｅｓ）、これ以上ｓｔａｔｕｓを安定方向に変更することができないため、ステップ１７７０及び１７７５の処理がスキップされ、本ルーチンが一旦終了する。
サブＦＢ学習値Ｖａｆｓｆｂｇが判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内に入らない場合（ステップ１７３０＝Ｎｏ）、サブＦＢ学習値Ｖａｆｓｆｂｇが不安定化したことになる。よって、この場合、処理がステップ１７３０からステップ１７８０に進行してカウンタＣＬがリセットされ、続くステップ１７８５にて、現在のｓｔａｔｕｓが「０」であるか否かが判定される。現在のｓｔａｔｕｓが「０」でない場合（ステップ１７８５＝Ｎｏ）、すなわち、現在のｓｔａｔｕｓが「２」又は「１」である場合、処理がステップ１７９０に進行して、ｓｔａｔｕｓが１段階だけ不安定方向に変更される。このとき、変更前のｓｔａｔｕｓの値が、前回判定値ｓｔａｔｕｓ＿ｏｌｄとしてバックアップＲＡＭに格納される。その後、処理がステップ１７７５に進行し、新たな判定基準値Ｖａｆｓｆｂｇｒが、サブＦＢ学習値Ｖａｆｓｆｂｇをローパスフィルタ処理することで得られた値Ｖａｆｓｆｂｇ０に基づいて設定された後、本ルーチンが一旦終了する。なお、現在のｓｔａｔｕｓが「０」である場合（ステップ１７８５＝Ｙｅｓ）、これ以上ｓｔａｔｕｓを不安定方向に変更することができないため、ステップ１７９０及び１７７５の処理がスキップされ、本ルーチンが一旦終了する。
以上説明したｓｔａｔｕｓの判定及び変更動作を概説すると、以下の通りとなる。
サブＦＢ学習値Ｖａｆｓｆｂｇをローパスフィルタによって処理することで得られた判定基準値Ｖａｆｓｆｂｇｒから、ｓｔａｔｕｓ０における所定の判定幅ΔＶａｆｓｆｂｇ（第一判定幅ΔＶａｆｓｆｂｇ１）までの範囲内に、サブＦＢ学習値Ｖａｆｓｆｂｇが入る場合に、「０」から「１」にｓｔａｔｕｓが変更される（一段階推移する）。一方、判定基準値Ｖａｆｓｆｂｇｒからｓｔａｔｕｓ１における所定の判定幅ΔＶａｆｓｆｂｇ（第二判定幅ΔＶａｆｓｆｂｇ２：ΔＶａｆｓｆｂｇ１よりも小さい値）までの範囲内にサブＦＢ学習値Ｖａｆｓｆｂｇが入らない場合に、逆にｓｔａｔｕｓが「１」から「０」に変更される。
また、判定基準値Ｖａｆｓｆｂｇｒからｓｔａｔｕｓ１における所定の判定幅ΔＶａｆｓｆｂｇ（第三判定幅ΔＶａｆｓｆｂｇ３：本例においてはΔＶａｆｓｆｂｇ２と同じ値）までの範囲内にサブＦＢ学習値Ｖａｆｓｆｂｇが入る場合に、ｓｔａｔｕｓが「１」から「２」に変更される。一方、判定基準値Ｖａｆｓｆｂｇｒからｓｔａｔｕｓ２における所定の判定幅ΔＶａｆｓｆｂｇ（第四判定幅ΔＶａｆｓｆｂｇ４：ΔＶａｆｓｆｂｇ３よりも小さい値）までの範囲内にサブＦＢ学習値Ｖａｆｓｆｂｇが入らない場合に、逆にｓｔａｔｕｓが「２」から「１」に変更される。
ｓｔａｔｕｓが「０」であるとき、調整値Ｋが大きい値に設定される。これにより、時間積分値ＳＤＶｏｘｓの１回あたりの更新量Ｋ・ＤＶｏｘｓ（の絶対値）が大きい値に設定される。すなわち、大きな調整値Ｋを用いることで、サブフィードバック量Ｖａｆｓｆｂ及び時間積分値ＳＤＶｏｘｓ（すなわちサブＦＢ学習値Ｖａｆｓｆｂｇ）の更新が迅速に行われる。さらに、ＦＣ制御の終了直後毎に、更新禁止回数Ｌが小さい値に設定される。これにより、ＦＣ制御が実行される場合、そのＦＣ制御から復帰した後、時間積分値ＳＤＶｏｘｓが更新禁止回数Ｌに応じた相対的に短い期間にわたって一定値に維持される。すなわち、小さな更新禁止回数Ｌを用いることで、サブＦＢ学習値Ｖａｆｓｆｂｇの更新頻度（学習頻度）が高くなる。
ｓｔａｔｕｓが「０」から「１」に変更されると、調整値Ｋが大きい値から中程度の値に設定（変更）される。このため、時間積分値ＳＤＶｏｘｓの１回あたりの更新量Ｋ・ＤＶｏｘｓ（の絶対値）も中程度の値に設定される。また、ＦＣ制御の終了直後毎に、更新禁止回数Ｌが中程度の値に設定される。したがって、ｓｔａｔｕｓが「０」から「１」に変更されると、サブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）は、収束値ＳＤＶｏｘｓ１に比較的近い値から中程度の変化速度をもって収束値ＳＤＶｏｘｓ１にさらに接近及び収束していく。
ｓｔａｔｕｓが「１」から「２」に変更されると、調整値Ｋが中程度の値から小さい値に設定（変更）される。このため、時間積分値ＳＤＶｏｘｓの１回あたりの更新量Ｋ・ＤＶｏｘｓ（の絶対値）も小さい値に設定される。また、ＦＣ制御の終了直後毎に、更新禁止回数Ｌが大きい値に設定される。したがって、ｓｔａｔｕｓが「１」から「２」に変更されると、サブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）の変化速度はｓｔａｔｕｓが「１」の場合よりも小さくなる。また、この段階においては、サブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）は収束値ＳＤＶｏｘｓ１に十分に近づいている。したがって、サブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）は、空燃比を乱す状況（外乱）が発生しても、収束値ＳＤＶｏｘｓ１近傍の値に安定して維持される。
以上説明したように、ｓｔａｔｕｓは、所定期間（カウンタＣＬが０から更新回数閾値ＣＬｔｈに到達するまでの期間、換言すれば、サブＦＢ学習値Ｖａｆｓｆｂｇが所定回数だけ更新される期間）におけるサブＦＢ学習値Ｖａｆｓｆｂｇの変動幅に基づいて、判定、変更、あるいは設定される。そして、ｓｔａｔｕｓの判定（設定）結果に応じて、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度（学習速度）が変更あるいは設定される。このとき、ｓｔａｔｕｓ０の方がｓｔａｔｕｓ１よりも大きく、且つｓｔａｔｕｓ１の方がｓｔａｔｕｓ２よりも大きくなるように、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度が設定される。
ここで、本実施形態においては、上述したように、サブＦＢ学習値Ｖａｆｓｆｂｇをローパスフィルタ処理した値Ｖａｆｓｆｂｇ０に基づいて取得された判定基準値Ｖａｆｓｆｂｇｒ、及び、ｓｔａｔｕｓ０の方がｓｔａｔｕｓ１よりも大きく且つｓｔａｔｕｓ１の方がｓｔａｔｕｓ２よりも大きくなるような判定幅ΔＶａｆｓｆｂｇに基づいて、ｓｔａｔｕｓの判定が行われる。このとき、ローパスフィルタの時定数τは、ｓｔａｔｕｓに基づいて設定される調整値Ｋ（サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度）に対応して変更される。すなわち、学習速度が大きい程、時定数τは大きくされる。そして、かかるｓｔａｔｕｓの判定結果に基づいて、３段階のｓｔａｔｕｓの設定状態の推移（変更）が、「０」から「１」、「１」から「２」、「２」から「１」、あるいは「１」から「０」というように、一段階ずつ行われる。さらに、かかるｓｔａｔｕｓの段階的な推移に対応して、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度（学習速度）が、段階的に切り替えられる。
このように、本実施形態においては、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度が、サブＦＢ学習値Ｖａｆｓｆｂｇの変動状態に応じて、適切に設定される。具体的には、ｓｔａｔｕｓの判定結果が切り替わった際にサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度が徐変されることで、サブＦＢ学習値Ｖａｆｓｆｂｇのハンチングの発生が抑制される。これにより、ｓｔａｔｕｓの設定状態（すなわちサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度の設定状態）の変更の不用意な繰り返しが可及的に抑制される。したがって、本実施形態によれば、サブＦＢ学習値Ｖａｆｓｆｂｇがより迅速に収束する。
なお、このｓｔａｔｕｓは、以下に詳述するように、異常判定（インバランス異常判定）を実行するか否かを決定する際にも参照される。
（６−７．学習更新回数のカウント）
次に、後述するインバランス異常判定を実行するか否かを決定する際に参照される学習更新回数を示すカウンタＣＫの更新方法について説明する。なお、カウンタＣＫは、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ＣＰＵは、このカウンタＣＫを更新するために、図１８に示されている学習更新回数カウントルーチン１８００を、所定時間の経過毎に繰り返し実行する。したがって、所定のタイミングになると、ＣＰＵはステップ１８１０から処理を開始し、各ステップの処理を順次実行する。
ステップ１８１０においては、機関２が始動直後であるか否かが判定される。始動直後であれば（ステップ１８１０＝Ｙｅｓ）、処理がステップ１８２０に進行してカウンタＣＫが「０」に設定され、本ルーチンが一旦終了する。一方、機関２の始動直後でなければ（ステップ１８１０＝Ｎｏ）、処理がステップ１８３０に進行し、現時点がサブＦＢ学習値Ｖａｆｓｆｂｇの更新直後の時点であるか否かが判定される。
現時点がサブＦＢ学習値Ｖａｆｓｆｂｇの更新直後の時点でなければ（ステップ１８３０＝Ｎｏ）、ステップ１８４０の処理がスキップされ、本ルーチンが一旦終了する。一方、現時点がサブＦＢ学習値Ｖａｆｓｆｂｇの更新直後の時点であると（ステップ１８３０＝Ｙｅｓ）、処理がステップ１８４０に進行し、カウンタＣＬが「１」だけ増大され、本ルーチンが一旦終了する。このように、カウンタＣＫは、機関２の今回の始動後からの、サブＦＢ学習値Ｖａｆｓｆｂｇの更新回数を示す値になる。
（６−８．インバランス異常判定）
次に、機関２の異常状態としての、過度の空燃比インバランスが発生したか否かを判定するための処理について説明する。
ＣＰＵは、図１９に示されているインバランス異常判定ルーチン１９００を、所定時間の経過毎に繰り返し実行する。
このルーチンによれば、後述する「異常判定中止条件」が不成立であり、且つ後述する「異常判定許可条件」が成立したときに得られている、サブＦＢ学習値Ｖａｆｓｆｂｇの複数の値の平均が、「サブＦＢ学習値平均値Ａｖｅｓｆｂｇ」として求められる（後述するステップ１９４０参照）。このサブＦＢ学習値平均値Ａｖｅｓｆｂｇは、異常判定用パラメータ（インバランス判定用パラメータ）として採用され、サブＦＢ学習値平均値Ａｖｅｓｆｂｇが異常判定閾値Ａｔｈ以上であるとき、異常状態が発生した（すなわちインバランス異常が発生した）と判定される。
所定のタイミングになると、ＣＰＵは、ステップ１９０５から処理を開始し、各ステップの処理を順次実行する。
まず、ステップ１９０５においては、異常判定中止条件が成立しているか否かが判定される。この「異常判定中止条件」は、異常判定の禁止条件であって、これが成立しない場合に「異常判定実施前提条件」が成立する。この異常判定中止条件は、以下の（Ｃ１）〜（Ｃ６）に記載した条件のうちの少なくとも一つが成立したときに成立する。
（Ｃ１）メインフィードバック制御条件が成立していない。
（Ｃ２）サブフィードバック制御条件が成立していない。
（Ｃ３）サブフィードバック量の学習条件が成立していない。
（Ｃ４）上流側触媒４３の酸素吸蔵量が第１閾値酸素吸蔵量以下である。
（Ｃ５）上流側触媒４３が活性化していないと推定されている。
（Ｃ６）機関２から排出される排ガスの流量が閾値排ガス流量以上である。すなわち、エアフローメータ５１により計測された吸入空気量Ｇａ又は機関の負荷ＫＬが閾値以上である。
上記条件（Ｃ４）を設ける理由は次の通りである。
上流側触媒４３の酸素吸蔵量が第１閾値酸素吸蔵量以下であると、水素が上流側触媒４３において十分に浄化されなくなるために、水素が上流側触媒４３の下流に流出する可能性がある。この結果、下流側空燃比センサ５６の出力値Ｖｏｘｓが水素の選択的拡散の影響を受ける可能性がある。あるいは、上流側触媒４３の下流のガスの空燃比が、機関２全体に供給される混合気の空燃比の真の平均値に一致しなくなる。したがって、下流側空燃比センサ５６の出力値Ｖｏｘｓは、「上流側空燃比センサ５５の出力値Ｖａｂｙｆｓを用いた空燃比フィードバック制御により過剰に補正された空燃比の真の平均値」に応じた値を示さない可能性が高い。このため、このような状態において空燃比インバランス異常判定を実行すると、判定を誤る可能性が高い。
なお、上流側触媒４３の酸素吸蔵量は周知の手法により別途取得される。例えば、上流側触媒４３の酸素吸蔵量ＯＳＡは、上流側触媒４３に流入する過剰な酸素の量に対応する量を順次加算するとともに、上流側触媒４３に流入する過剰な未燃成分の量に対応する量を順次減算することにより求められる。すなわち、上流側空燃比ａｂｙｆｓと理論空燃比ｓｔｏｉｃｈとの差に基づいて酸素の過不足量ΔＯ２（ΔＯ２＝ｋ・ｍｆｒ・（ａｂｙｆｓ−ｓｔｏｉｃｈ））を所定時間の経過毎に求め（ｋは大気中の酸素の比率であり０．２３、ｍｆｒはその所定時間に供給された燃料量）、その過不足量ΔＯ２を積算することにより酸素吸蔵量ＯＳＡが求められる（特開２００７−２３９７００号公報、特開２００３−３３６５３５号公報、及び、特開２００４−０３６４７５号公報、等を参照。）。
上記の条件（Ｃ６）を設ける理由は次の通りである。
機関２から排出される排ガスの流量が閾値排ガス流量以上であると、上流側触媒４３に流入する水素の量が上流側触媒４３の水素酸化能力を超えることで、水素が上流側触媒４３の下流に流出する場合がある。したがって、下流側空燃比センサ５６の出力値Ｖｏｘｓが水素の選択的拡散の影響を受ける可能性が高い。あるいは、触媒の下流のガスの空燃比が、機関２全体に供給される混合気の空燃比の真の平均値に一致しなくなる。その結果、空燃比インバランスが発生している場合であっても、下流側空燃比センサ５６の出力値Ｖｏｘｓが、「上流側空燃比センサ５５の出力値Ｖａｂｙｆｓを用いた空燃比フィードバック制御によって過剰に補正された真の空燃比」に応じた値を示さない可能性が高い。したがって、このような状態において空燃比インバランス異常判定を実行すると、その判定を誤る可能性が高い。
さらに、この異常判定中止条件は、以下の（Ｄ１）〜（Ｄ３）に記載した条件のうちの少なくとも一つが成立したときに成立する。これらの条件が加えられる理由については後述する。
（Ｄ１）機関２の今回の始動後からの「サブＦＢ学習値Ｖａｆｓｆｂｇの更新回数」が「学習更新回数閾値」よりも小さい。すなわち、カウンタＣＫが学習更新回数閾値ＣＫｔｈよりも小さい。
（Ｄ２）今回のｓｔａｔｕｓ判定時におけるｓｔａｔｕｓの値であるｓｔａｔｕｓ＿ｎｏｗ（ｓｔａｔｕｓの最新値）が「０」である。すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が良好でない（不安定状態にある）。
（Ｄ３）前回のｓｔａｔｕｓ判定時におけるｓｔａｔｕｓの値であるｓｔａｔｕｓ＿ｏｌｄが「２」で、且つ、今回のｓｔａｔｕｓ判定時におけるｓｔａｔｕｓ（最新のｓｔａｔｕｓ）の値であるｓｔａｔｕｓ＿ｎｏｗが「１」である。すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が、安定状態から中間状態へと変化した。
ここで、上述した異常判定中止条件が不成立である（上記条件（Ｃ１）〜（Ｃ６）及び条件（Ｄ１）〜（Ｄ３）の総てが不成立である）と仮定する。換言すれば、異常判定の前提条件が成立していると仮定する。
この場合、ステップ１９０５の判定結果が「Ｎｏ」となり、処理がステップ１９１０に進行して、異常判定許可条件が成立しているか否かが判定される。この異常判定許可条件は、下記（Ｅ１）及び（Ｅ２）の条件が成立したときに成立する。これらの条件が加えられる理由については後述する。
（Ｅ１）機関２の今回の始動後からの「サブＦＢ学習値Ｖａｆｓｆｂｇの更新回数」が、「学習更新回数閾値」以上である。すなわち、カウンタＣＫが学習更新回数閾値ＣＫｔｈ以上である。
（Ｅ２）今回のｓｔａｔｕｓ判定時におけるｓｔａｔｕｓ（最新のｓｔａｔｕｓ）であるｓｔａｔｕｓ＿ｎｏｗが「２」である。すなわち、サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が良好である（安定状態にある）。
異常判定許可条件が成立しているとき（ステップ１９１０＝Ｙｅｓ）、処理がステップ１９１５以降に進行する。かかるステップ１９１５以降の処理は、異常判定（空燃比インバランス異常判定）のための処理である。
ステップ１９１５：現時点が、サブＦＢ学習値Ｖａｆｓｆｂｇが更新された直後の時点（サブＦＢ学習値更新直後時点）であるか否かが判定される。現時点がサブＦＢ学習値更新直後の時点であれば（ステップ１９１５＝Ｙｅｓ）、処理がステップ１９２０に進行する。現時点がサブＦＢ学習値更新直後の時点でなければ（ステップ１９１５＝Ｎｏ）、ステップ１９２０以下がスキップされ、本ルーチンが一旦終了する。
ステップ１９２０：学習値積算カウンタＣｅｘｅの値が「１」だけ増大される。
ステップ１９２５：図１２のステップ１２２０にてバックアップＲＡＭに格納されたサブＦＢ学習値Ｖａｆｓｆｂｇが読み込まれる。
ステップ１９３０：サブＦＢ学習値Ｖａｆｓｆｂｇの積算値ＳＶａｆｓｆｂｇが更新される。すなわち、その時点の積算値ＳＶａｆｓｆｂｇに、ステップ１９２５にて読み込まれたサブＦＢ学習値Ｖａｆｓｆｂｇを加えることにより、新たな積算値ＳＶａｆｓｆｂｇが得られる。
なお、この積算値ＳＶａｆｓｆｂｇは、上述したイニシャルルーチンにより「０」に設定されるようになっている。また、積算値ＳＶａｆｓｆｂｇは、後述するステップ１９６０の処理によっても、「０」に設定される。このステップ１９６０は、異常判定（インバランス異常判定：ステップ１９４５〜ステップ１９５５）が実行されたときに実行される。よって、積算値ＳＶａｆｓｆｂｇは、機関２の始動後又は直前の異常判定実行後に、異常判定中止条件が成立しておらず（ステップ１９０５参照）、且つ、異常判定許可条件が成立している（ステップ１９１０参照）状態において更新される、サブＦＢ学習値Ｖａｆｓｆｂｇの積算値となる。
ステップ１９３５：学習値積算カウンタＣｅｘｅの値がカウンタ閾値Ｃｔｈ以上であるか否かが判定される。学習値積算カウンタＣｅｘｅの値がカウンタ閾値Ｃｔｈよりも小さいと（ステップ１９３５＝Ｎｏ）、ステップ１９４０以下がスキップされ、本ルーチンが一旦終了する。これに対し、学習値積算カウンタＣｅｘｅの値がカウンタ閾値Ｃｔｈ以上であると（ステップ１９３５＝Ｙｅｓ）、処理がステップ１９４０以降に進行する。
ステップ１９４０：サブＦＢ学習値Ｖａｆｓｆｂｇの積算値ＳＶａｆｓｆｂｇを、学習値積算カウンタＣｅｘｅで除することにより、サブＦＢ学習値平均値Ａｖｅｓｆｂｇ（すなわち学習値Ｖａｆｓｆｂｇの時間的平均値）が求められる。上述したように、このサブＦＢ学習値平均値Ａｖｅｓｆｂｇは、上流側触媒４３を通過する前の排ガスに含まれる水素の量と上流側触媒４３を通過した後の排ガスに含まれる水素の量との差が大きい程大きくなるインバランス判定用パラメータ（異常判定用パラメータ）である。換言すれば、異常判定用パラメータは、学習値Ｖａｆｓｆｂｇに応じて変化する値（学習値Ｖａｆｓｆｂｇが大きい程大きくなる値）であって、学習値Ｖａｆｓｆｂｇに基づいて算出される。
ステップ１９４５：サブＦＢ学習値平均値Ａｖｅｓｆｂｇが異常判定閾値Ａｔｈ以上であるか否かが判定される。上述の通り、気筒２１間における空燃比の不均一性が過大となってインバランス異常が生じている場合、サブフィードバック量Ｖａｆｓｆｂは機関２に供給される混合気の空燃比を大きくリッチ側に補正する値になろうとする。これに伴って、サブＦＢ学習値Ｖａｆｓｆｂｇの平均値であるサブＦＢ学習値平均値Ａｖｅｓｆｂｇも、機関２に供給される混合気の空燃比を大きくリッチ側に補正する値（閾値Ａｔｈ以上の値）となる。
したがって、サブＦＢ学習値平均値Ａｖｅｓｆｂｇが異常判定閾値Ａｔｈ以上である場合（ステップ１９４５＝Ｙｅｓ）、処理がステップ１９５０に進行し、異常発生フラグＸｅｒｒがセットされる。すなわち、異常発生フラグＸｅｒｒの値が「１」に設定される。ここで、異常発生フラグＸｅｒｒの値が「１」であることは、インバランス異常が生じていることを示す。この異常発生フラグＸｅｒｒの値は、バックアップＲＡＭに格納される。さらに、異常発生フラグＸｅｒｒの値が「１」に設定されたとき、ＣＰＵにより、図示しない警告ランプが点灯させられる。
これに対し、サブＦＢ学習値平均値Ａｖｅｓｆｂｇが異常判定閾値Ａｔｈよりも小さい場合（ステップ１９４５＝Ｎｏ）、処理がステップ１９５５に進行し、インバランス異常が生じていないことを示すように、異常発生フラグＸｅｒｒがリセットされる。すなわち、異常発生フラグＸｅｒｒの値が「０」に設定される。
ステップ１９６０：ステップ１９５０又はステップ１９５５の処理の後、学習値積算カウンタＣｅｘｅの値が「０」に設定される（リセットされる）。また、サブＦＢ学習値の積算値ＳＶａｆｓｆｂｇが「０」に設定される（リセットされる）。
なお、異常判定中止条件が成立しているとき（ステップ１９０５＝Ｙｅｓ）、処理がステップ１９０５からステップ１９６０に直接進行する。これにより、異常判定中止条件が成立したとき、その時点までに積算されてきたサブＦＢ学習値の積算値ＳＶａｆｓｆｂｇは破棄される。
また、ステップ１９１０にて、異常判定許可条件が成立していなければ（ステップ１９１０＝Ｎｏ）、ステップ１９１５以降の処理がスキップされ、本ルーチンが一旦終了する。この場合、それまでに算出されてきたサブＦＢ学習値の積算値ＳＶａｆｓｆｂｇは破棄されない。換言すれば、異常判定許可条件が成立しているときのサブＦＢ学習値Ｖａｆｓｆｂｇのみが、インバランス判定用パラメータ（異常判定用パラメータ）に反映される。
ここで、上記の（Ｄ１）〜（Ｄ３）並びに（Ｅ１）及び（Ｅ２）の条件が加えられた理由について述べる。
（６−８−１．条件（Ｄ１）及び条件（Ｅ１）が設けられた理由）
バッテリが車両から取り外される等によりバックアップＲＡＭのデータが消失された場合、機関２の始動時から、学習値Ｖａｆｓｆｂｇの収束状態が異常判定が許可される状態（例えばｓｔａｔｕｓ２）に変化するまでには、相当の時間を要する。一方、機関２の始動後からの学習値Ｖａｆｓｆｂｇの更新回数（カウンタＣＫ）が所定の学習更新回数閾値（ＣＫｔｈ）に到達した時点以降であれば、学習値Ｖａｆｓｆｂｇの収束状態は安定状態へと近づいている。
これに対し、バックアップＲＡＭのデータが消失されていない場合、機関２の前回の運転終了時おける、学習値Ｖａｆｓｆｂｇの収束状態が、例えば安定状態（すなわちｓｔａｔｕｓ２）であると、今回の運転開始時から比較的短時間内に異常判定が実行される。しかしながら、今回の運転においては、機関２の状態が変化している可能性がある。よって、少なくとも、機関２の始動後からの学習値Ｖａｆｓｆｂｇの更新回数（カウンタＣＫ）が所定の学習更新回数閾値（ＣＫｔｈ）に到達した時点以降に、異常判定（インバランス異常判定）を行うことが望ましい。
かかる観点から、条件（Ｄ１）及び条件（Ｅ１）が設けられている。すなわち、ＣＰＵは、機関２の始動後からの学習値Ｖａｆｓｆｂｇの更新回数を取得するとともに（カウンタＣＫ参照）、その取得された学習値Ｖａｆｓｆｂｇの更新回数（カウンタＣＫ）が所定の学習更新回数閾値（ＣＫｔｈ）よりも小さい期間において異常判定の実行を中止する（条件Ｄ１及びステップ１９０５参照）。
さらに、ＣＰＵは、機関２の始動後からの学習値Ｖａｆｓｆｂｇの更新回数を取得するとともに（カウンタＣＫ参照）、その取得された学習値Ｖａｆｓｆｂｇの更新回数（カウンタＣＫ）が所定の学習更新回数閾値（ＣＫｔｈ）以上であることを条件に、異常判定の実行を許可する（条件Ｅ１及びステップ１９１５参照）。
これによれば、バックアップＲＡＭのデータが消失したか否かに関わらず、収束状態が良好となった学習値Ｖａｆｓｆｂｇに基づいて、異常判定用パラメータ（インバランス判定用パラメータ）が取得され得る。さらに、バックアップＲＡＭのデータが消失していない場合と、バックアップＲＡＭのデータが消失した場合とで、機関２の始動から異常判定（インバランス異常判定）実行までの期間（時間）を、略等しくすることができる。
（６−８−２．条件（Ｄ２）が設けられた理由）
ｓｔａｔｕｓ＿ｎｏｗが「０」である（条件（Ｄ２）及びステップ１９０５参照）ということは、現時点における学習値Ｖａｆｓｆｂｇの収束状態が良好でないことを意味する。すなわち、条件Ｄ２が成立する場合、学習値Ｖａｆｓｆｂｇがその収束値から乖離していて且つ学習値Ｖａｆｓｆｂｇの変化速度が大きいという可能性が高い。したがって、条件（Ｄ２）が成立したときに、異常判定が中止される。これにより、収束値近傍の値になっていない可能性が高い学習値Ｖａｆｓｆｂｇに基づいて異常判定用パラメータ（インバランス判定用パラメータ）が算出されることを、回避することができる。したがって、誤った異常判定が発生することを回避することができる。
（６−８−３．条件（Ｄ３）が設けられた理由）
ｓｔａｔｕｓ＿ｏｌｄが「２」であり且つｓｔａｔｕｓ＿ｎｏｗが「１」である（条件（Ｄ３）及びステップ１９０５参照）ということは、学習値Ｖａｆｓｆｂｇの収束状態が安定状態にあると判定されている状態から、学習値Ｖａｆｓｆｂｇの収束状態が中間状態にあると判定されている状態へと変化したことを意味する。
このような状況においては、何らかの理由（例えば、収束値が急激に変化した、あるいは、大きな空燃比の変動を一時的にもたらす外乱が発生した、等の理由）により、学習値Ｖａｆｓｆｂｇの収束状態が、安定状態から不安定状態に向けて変化していると考えられる。換言すれば、このような状態の学習値Ｖａｆｓｆｂｇは、収束値近傍の値になっていない可能性が高い。したがって、条件（Ｄ３）が成立したときに、異常判定が中止される。これにより、収束値近傍の値になっていない可能性が高い学習値Ｖａｆｓｆｂｇに基づいて異常判定用パラメータ（インバランス判定用パラメータ）が算出されることを、回避することができる。したがって、誤った異常判定が発生することを回避することができる。
（６−８−４．条件（Ｅ２）が設けられた理由）
ｓｔａｔｕｓ＿ｎｏｗが「２」である（条件Ｅ２及びステップ１９１０参照）ということは、現時点における学習値Ｖａｆｓｆｂｇの収束状態が良好であり、学習値Ｖａｆｓｆｂｇが収束値近傍にて安定している、ということを意味する。したがって、条件（Ｅ２）が（上記条件（Ｅ１）と共に）成立したときに、異常判定が許可される。これにより、収束値近傍の値になっている可能性が高い学習値Ｖａｆｓｆｂｇに基づいて、異常判定用パラメータすなわちインバランス判定用パラメータを算出することができる。その結果、精度良く異常判定を行うことができる。
（７．他の具体例）
次に、図１７に示されているルーチンの一部を変容した例を、図２０を用いて説明する。図２０のフローチャートの前半部分（ステップ２０３０以前）は、図１７のフローチャートにおけるステップ１７１０ないし１７３０と共通であるので、図示が省略されているものとする。以下、ステップ２０３０以降の処理について、図２０を参照しつつ説明する。
サブＦＢ学習値Ｖａｆｓｆｂｇが判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内にある場合（ステップ２０３０＝Ｙｅｓ）、処理がステップ２０４０に進行して、カウンタＣＬが「１」だけ増大する。続いて、ステップ２０４５にて、更新回数閾値ＣＬｔｈが、ｓｔａｔｕｓと、これをパラメータとするマップと、に基づいて設定される。そして、続くステップ２０５０にて、カウンタＣＬが上述の更新回数閾値ＣＬｔｈ以上であるか否かが判定される。
サブＦＢ学習値Ｖａｆｓｆｂｇが、所定時間連続して判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内にある場合、サブＦＢ学習値Ｖａｆｓｆｂｇが収束傾向にあるということができる。よって、この場合、ステップ２０５０の判定が「Ｙｅｓ」となり、処理がステップ２０５５に進行してカウンタＣＬがリセットされ、続くステップ２０６０にて、現在のｓｔａｔｕｓが「２」であるか否かが判定される。
現在のｓｔａｔｕｓが「２」でない場合（現在のｓｔａｔｕｓが「０」又は「１」である場合：ステップ２０６０＝Ｎｏ）、処理がステップ２０６７に進行して、ｓｔａｔｕｓの推移パターンが所定パターンに合致するか否かが判定される。かかる判定が行われる理由は、以下の通りである。
３段階のｓｔａｔｕｓ（０，１，２）間の推移パターンとしては形式上は多数存在し得るが、実際には、以下に示すもの以外は、誤判定の可能性が高い。
・０−１−２：上述のように、バッテリ交換等により学習結果が一旦クリアされた後、学習が最初から行われる場合。
・２−１−０：インバランス異常等の発生により、サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が、安定状態から中間状態を経て不安定状態に推移していく場合。
・２−１−２：サブＦＢ学習値Ｖａｆｓｆｂｇの収束状態が安定状態である場合において、何らかの要因により、サブＦＢ学習値Ｖａｆｓｆｂｇに小さな学習ズレが発生したとき。
そこで、ステップ２０６７においては、バックアップＲＡＭに格納された前回判定値ｓｔａｔｕｓ＿ｏｌｄと、現在のｓｔａｔｕｓの値と、今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔとが、上述の３つのパターンに合致するか否かが判定される。
ｓｔａｔｕｓの推移パターンが所定パターンに合致しない場合（ステップ２０６７＝Ｎｏ）、処理がステップ２０６８に進行し、今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じであるか、すなわち、ｓｔａｔｕｓの判定結果が２回連続して同じであるか否かが判定される。
今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じではない場合（ステップ２０６８＝Ｎｏ）、バックアップＲＡＭに格納されたｓｔａｔｕｓ＿ｎｅｘｔの前回値が今回値によって書き換えられた後、本ルーチンが一旦終了する。すなわち、ｓｔａｔｕｓの設定状態（サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度）の切り替えが一旦待機される。
一方、今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じである場合（ステップ２０６８＝Ｙｅｓ）、処理がステップ２０７０及び２０７５に進行して、上述のステップ１７７０及び１７７５（図１７参照）と同様に処理され、本ルーチンが一旦終了する。すなわち、この場合、ｓｔａｔｕｓが１段階だけ安定方向に変更される。
同様に、サブＦＢ学習値Ｖａｆｓｆｂｇが判定基準値Ｖａｆｓｆｂｇｒから判定幅ΔＶａｆｓｆｂｇまでの範囲内に入らない場合であって（ステップ２０３０＝Ｎｏ）、現在のｓｔａｔｕｓが「２」又は「１」であるとき（ステップ２０８５＝Ｎｏ）、処理がステップ２０８７に進行し、上述のステップ２０６７と同様に、ｓｔａｔｕｓの推移パターンが所定パターンに合致するか否かが判定される。
ｓｔａｔｕｓの推移パターンが所定パターンに合致しない場合（ステップ２０８７＝Ｎｏ）、処理がステップ２０８８に進行し、今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じであるか、すなわち、ｓｔａｔｕｓの判定結果が２回連続して同じであるか否かが判定される。
今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じではない場合（ステップ２０８８＝Ｎｏ）、バックアップＲＡＭに格納されたｓｔａｔｕｓ＿ｎｅｘｔの前回値が今回値によって書き換えられた後、本ルーチンが一旦終了する。すなわち、ｓｔａｔｕｓの設定状態（サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度）の切り替えが一旦待機される。
一方、今回判定された値ｓｔａｔｕｓ＿ｎｅｘｔが前回値と同じである場合（ステップ２０８８＝Ｙｅｓ）、処理がステップ２０９０及び２０７５に進行して、上述のステップ１７９０及び１７７５（図１７参照）と同様に処理され、本ルーチンが一旦終了する。すなわち、この場合、ｓｔａｔｕｓが１段階だけ不安定方向に変更される。
以上詳述したように、本具体例においては、ｓｔａｔｕｓの推移パターンが上述の所定パターンに合致する場合に、サブＦＢ学習値Ｖａｆｓｆｂｇの変更が許可される。一方、ｓｔａｔｕｓの推移パターンが上述の所定パターンに合致しない場合、ｓｔａｔｕｓの設定状態（サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度）の切り替えが一旦待機され、同一結果が２度続いた場合に切り替えが許可される。
これにより、ｓｔａｔｕｓの設定状態（すなわちサブＦＢ学習値Ｖａｆｓｆｂｇの更新速度の設定状態）の変更の不用意な繰り返しが可及的に抑制される。したがって、本具体例によれば、サブＦＢ学習値Ｖａｆｓｆｂｇのハンチングが可及的に抑制され、サブＦＢ学習値Ｖａｆｓｆｂｇがより迅速に収束する。
（８．さらに他の具体例）
次に、図１４に示されているルーチンの一部を変容した例を、図２１を用いて説明する。ＣＰＵは、調整値Ｋ及び更新禁止回数Ｌを設定するために、図２１に示されているルーチン２１００を、機関２の始動時点以降、所定時間が経過する毎にあるいは吸気行程を迎える気筒２１について燃料噴射開始時点が到来する毎に、繰り返し実行する。
したがって、機関２の始動時点以降の所定のタイミングになると、ＣＰＵは図２１のステップ２１１０から処理を開始する。なお、図２１に示されているルーチン２１００におけるステップ２１１０、２１２０、２１５０、及び２１６０の処理は、図１４におけるステップ１４１０、１４２０、１４５０、及び１４６０と、それぞれ同一である。よって、以下、図１４に示されているルーチン１４００との相違点を中心に説明する。
ｓｔａｔｕｓが更新された場合（ステップ２１１０＝Ｙｅｓ）、処理が２１１５に進行し、現在の時点がｓｔａｔｕｓの最新更新時点の直後（当該最新更新時点から所定期間経過前）であるか否かが判定される。
現在の時点がｓｔａｔｕｓの更新直後でない場合（ステップ２１１５＝Ｎｏ）、処理がステップ２１２０及び２１５０に進行する。ステップ２１２０においては、上述のステップ１４２０と同様に、調整値Ｋが、テーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）と上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及び現在のｓｔａｔｕｓの値とに基づいて決定される。
これに対し、現在の時点がｓｔａｔｕｓの更新直後である場合（ステップ２１１５＝Ｙｅｓ）、処理がステップ２１３０ないし２１４０に進行する。ステップ２１３０においては、値Ｋ１が、テーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）と上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及び現在のｓｔａｔｕｓの値とに基づいて取得される。次に、ステップ２１３５において、値Ｋ２が、テーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）と上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及びｓｔａｔｕｓの前回値ｓｔａｔｕｓ＿ｏｌｄとに基づいて取得される。そして、ステップ２１４０にて、調整値Ｋが、値Ｋ１と値Ｋ２との間の値に決定される。具体的には、調整値Ｋが、値Ｋ１と値Ｋ２との平均値に決定される。その後、処理がステップ２１５０に進行する。
すなわち、本具体例においては、ｓｔａｔｕｓの判定（設定）結果が切り替わった直後の時点にて、調整値Ｋが、切り替えられるべき値Ｋ１と判定前の値Ｋ２との間の値に決定される（ステップ２１１０，２１１５，２１３０，２１３５，２１４０）。これにより、調整値Ｋの急変が抑制される。その後、調整値Ｋが、通常通り、テーブルＭａｐＫ（Ｃｍａｘ，ｓｔａｔｕｓ）と上流側触媒４３の最大酸素吸蔵量Ｃｍａｘ及び現在のｓｔａｔｕｓの値とに基づいて決定される。
以上のように、本具体例においては、ｓｔａｔｕｓの判定（設定）結果が切り替わった直後の時点にて、調整値Ｋが、切り替え判定前後の値の中間値に設定される。これにより、ｓｔａｔｕｓの判定（設定）結果が切り替わった際の、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度の徐変が、容易且つ確実に行われる。
（９．変形例の例示列挙）
なお、上述の実施形態は、出願人が本願の出願時点において最良と考えた本発明の代表的な実施形態を単に例示したものにすぎない。よって、本発明は、もとより上述の実施形態に何ら限定されるものではない。したがって、本発明の本質的部分を変更しない範囲内において、上述の実施形態に対して種々の変形が施され得ることは、当然である。
以下、代表的な変形例について幾つか例示する。もっとも、言うまでもなく、変形例とて、以下に列挙されたものに限定されるものではない。また、複数の変形例の全部又は一部が、技術的に矛盾しない範囲内において、適宜、互いに複合的に適用され得る。本発明（特に、本発明の課題を解決するための手段を構成する各構成要素における、作用的ないし機能的に表現されているもの）は、上述の実施形態や下記変形例の記載に基づいて、不当に限定解釈されてはならない。
上流側触媒４３は、水素Ｈ２を酸化することで浄化する機能を備えていれば、他の種類の触媒（例えば、酸化触媒）であってもよい。
下流側空燃比センサ５６は、例えば、図２に示されている上流側空燃比センサ５５と同様な構成（但し電源５５ｈを除く）を備えていてもよい。あるいは、下流側空燃比センサ５６は、試験管状の固体電解質層と、固体電解質層の外側に形成された排ガス側電極層と、大気室（固体電解質層の内側）に露呈し且つ固体電解室層を挟んで排ガス側電極層と対向するように固体電解質層に形成された大気側電極層と、排ガス側電極層を覆い且つ排ガスが接触する（排ガス中に晒されるように配置される）拡散抵抗層と、を備えるものであってもよい。
バックアップＲＡＭに代えて、ＥＥＰＲＯＭ等の不揮発性メモリが用いられ得る。
ステップ１０１０における筒内吸入空気量Ｍｃ（ｋ）の取得は、周知の空気モデル（吸気通路における空気の挙動を模した物理法則に従って構築された計算モデル）による算出によって行われてもよい。
ステップ１１０５等における負荷率ＫＬに代えて、機関の負荷としてアクセルペダル操作量Ａｃｃｐ及びスロットル弁開度ＴＡ等が用いられても良い。
ステップ１２０５において、上述のサブフィードバック制御条件に、他の条件（負荷ＫＬが所定範囲内である等の条件）が付加されてもよい。
ステップ１７２５において、判定幅ΔＶａｆｓｆｂｇは、ある特定のｓｔａｔｕｓから安定方向にｓｔａｔｕｓを変更する場合と、同一ｓｔａｔｕｓから不安定方向にｓｔａｔｕｓを変更する場合とで、異なっていてもよい。すなわち、上述の例において、ｓｔａｔｕｓ１からｓｔａｔｕｓ０に変更するか否かを判定するための判定幅ΔＶａｆｓｆｂｇと、ｓｔａｔｕｓ１からｓｔａｔｕｓ２に変更するか否かを判定するための判定幅ΔＶａｆｓｆｂｇとが、異なっていても（前者の方が後者よりも大きくなっていても）よい。具体的には、この場合、ｓｔａｔｕｓ１からｓｔａｔｕｓ２へ変更するための第三判定幅ΔＶａｆｓｆｂｇ３は、ｓｔａｔｕｓ１からｓｔａｔｕｓ０へ変更するための第二判定幅ΔＶａｆｓｆｂｇ２よりも小さい値に設定される。
例えば、ステップ１７８５やステップ２０８５において、判定が「Ｙｅｓ」である場合、調整値Ｋをより大きくしたり、更新禁止回数Ｌをより小さくしたりする処理が行われてもよい。これにより、サブＦＢ学習値Ｖａｆｓｆｂｇのハンチングの発生が抑制されるような、サブＦＢ学習値Ｖａｆｓｆｂｇの更新速度の徐変が、より細やかに行われ得る。
ｓｔａｔｕｓは、４段階以上あってもよい。
本発明は、インバランス異常判定に好適に適用されるが、これに代えて、失火発生判定にも適用され得る。具体的には、例えば、サブＦＢ学習値Ｖａｆｓｆｂｇ（時間積分値ＳＤＶｏｘｓ）が所定値以下（サブＦＢ学習値Ｖａｆｓｆｂｇの絶対値が所定値以上である負の値になったか否か）に基づいて、失火率が許容率以上になる異常状態が発生することが判定され得る。このような判定が可能であることは、以下の理由による。
失火が発生する場合、燃料と空気の混合気が、気筒２１内から上流側空燃比センサ５５を経て上流側触媒４３へ流入する。そして、上流側触媒４３に流入した混合気は、大部分が上流側触媒４３にて燃焼（酸化）処理されて、燃焼ガスとして上流側触媒４３から流出する。したがって、失火が発生する場合には、混合気そのものが上流側空燃比センサ５５に到達する一方で、その混合気の燃焼ガスが下流側空燃比センサ５６に到達するという事態が発生し得る。
一般に、理論空燃比（又は理論空燃比近傍の空燃比）の混合気が空燃比センサの検出部に接触すると、空燃比センサはリーンを示す値を出力する場合が多い。これは、混合気中の酸素に対する空燃比センサの感度が、混合気中の他の成分に対する感度よりも大きいことに基づくと考えられる。
したがって、失火が発生する毎に、（混合気の空燃比が理論空燃比近傍の空燃比であっても）上流側空燃比センサ５５がリーンを示す値を出力することに応じて、機関２に供給される混合気の空燃比がリッチ方向にフィードバック制御される。この空燃比のリッチ方向への平均的な偏移を補償するために、下流側空燃比センサ５６がリッチを示す値を出力し、それによりサブフィードバック量Ｖａｆｓｆｂの積分項がリーン方向へ偏移した収束値に向かって収束していく。したがって、サブフィードバック量Ｖａｆｓｆｂに基づけば、失火率が許容率以上となったことを判定することができる。
上述の実施形態においては、サブＦＢ学習値の平均値Ａｖｅｓｆｂｇがインバランス判定用パラメータとして用いられていた。もっとも、これに代えて、異常判定許可条件が成立したときの、サブＦＢ学習値Ｖａｆｓｆｂｇそのものが、インバランス判定用パラメータとして用いられ得る。
また、例えば、特開２００７−７７８６９号公報、特開２００７−１４６６６１号公報、及び特開２００７−１６２５６５号公報等に開示されているように、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓに基づいて得られる上流側空燃比ａｂｙｆｓと上流側目標空燃比ａｂｙｆｒとの差をハイパスフィルタ処理してメインフィードバック量ＫＦｍａｉｎを算出するとともに、下流側空燃比センサ５６の出力値Ｖｏｘｓと下流側目標値Ｖｏｘｓｒｅｆとの偏差に対してローパスフィルタ処理を施した値を比例積分処理することにより、サブフィードバック量Ｆｉｓｕｂが求められ得る。この場合、下記（１１）式に示したように、これらのフィードバック量を互いに独立させた形態で基本燃料噴射量Ｆｂａｓｅの補正に用いることで、最終燃料噴射量Ｆｉが求められ得る。
Ｆｉ＝ＫＦｍａｉｎ・Ｆｂａｓｅ＋Ｆｉｓｕｂ    …（１１）
さらに、下記（１２）式又は下記（１３）式に従ってサブＦＢ学習値Ｖａｆｓｆｂｇが更新され得る。（１２）式及び（１３）式の左辺Ｖａｆｓｆｂｇ（ｋ＋１）は、更新後のサブＦＢ学習値Ｖａｆｓｆｂｇを表す。値ｐは０以上１未満の任意の値である。
Ｖａｆｓｆｂｇ（ｋ＋１）＝ｐ・Ｖａｆｓｆｂｇ＋（１−ｐ）・Ｋｉ・ＳＤＶｏｘｓ    …（１１）
Ｖａｆｓｆｂｇ（ｋ＋１）＝ｐ・Ｖａｆｓｆｂｇ＋（１−ｐ）・Ｖａｆｓｆｂ      …（１２）
この場合、学習値Ｖａｆｓｆｂｇの更新速度は、値ｐが小さくなる程大きくなる。よって、ｓｔａｔｕｓ０のときに値ｐを値ｐ１に設定し、ｓｔａｔｕｓ１のときに値ｐを値ｐ１よりも大きな値ｐ２に設定し、ｓｔａｔｕｓ２のときに値ｐを値ｐ２よりも大きな値ｐ３に設定することにより、学習値Ｖａｆｓｆｂｇの更新速度を第１ないし第３の更新速度に設定することができる。
その他、特段に言及されていない変形例についても、本発明の本質的部分を変更しない範囲内において、本発明の範囲内に含まれることは当然である。また、本発明の課題を解決するための手段を構成する各要素における、作用的ないし機能的に表現されている要素は、上述の実施形態や変形例にて開示されている具体的構造の他、当該作用及び機能を実現可能ないかなる構造をも含む。さらに、本明細書にて引用した先行出願や公報の開示内容（明細書及び図面を含む）は、本明細書の一部を構成するものとして援用され得る。
【図１】
2011052096.tif 000003
【図２】
2011052096.tif 000004
【図３】
2011052096.tif 000005
【図４】
2011052096.tif 000006
【図５】
2011052096.tif 000007
【図６】
2011052096.tif 000008
【図７】
2011052096.tif 000009
【図８】
2011052096.tif 000010
【図９】
2011052096.tif 000011
【図１０】
2011052096.tif 000012
【図１１】
2011052096.tif 000013
【図１２】
2011052096.tif 000014
【図１３】
2011052096.tif 000015
【図１４】
2011052096.tif 000016
【図１５】
2011052096.tif 000017
【図１６】
2011052096.tif 000018
【図１７】
2011052096.tif 000019
【図１８】
2011052096.tif 000020
【図１９】
2011052096.tif 000021
【図２０】
2011052096.tif 000022
【図２１】
2011052096.tif 000023
【手続補正書】
【提出日】平成23年5月31日(2011.5.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記学習更新速度設定手段は、前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度を、前記状態判定手段による前記判定結果に応じて設定する際に、前記更新速度を徐変することで、前記サブフィードバック学習値のハンチングの発生を抑制するように構成されたことを特徴とする、内燃機関システム制御装置。
【請求項２】
請求の範囲第１項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、前記安定状態と前記中間状態との間、又は、前記中間状態と前記不安定状態との間で推移するように、前記サブフィードバック学習値の前記変動状態を判定し、
前記学習更新速度設定手段は、前記状態判定手段により判定された前記変動状態の推移パターンが、
（１）前記不安定状態−前記中間状態−前記安定状態、
（２）前記安定状態−前記中間状態−前記不安定状態、
（３）前記安定状態−前記中間状態−前記安定状態、
のいずれかのパターンに合致する場合に、前記更新速度の変更を許可することを特徴とする、内燃機関システム制御装置。
【請求項３】
請求の範囲第１項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、
前記サブフィードバック学習値をローパスフィルタによって処理することで得られた判定基準値から所定の第一判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記不安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第一判定幅よりも小さい所定の第二判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記中間状態から前記不安定状態へ前記変動状態の前記判定結果を一段階推移させ、
前記判定基準値から所定の第三判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記中間状態から前記安定状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第三判定幅よりも小さい所定の第四判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させることを特徴とする、内燃機関システム制御装置。
【請求項４】
請求の範囲第３項に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、前記変動状態の前記判定結果に応じて、前記ローパスフィルタのパラメータを変更することを特徴とする、内燃機関システム制御装置。
【請求項５】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記学習更新速度設定手段は、前記状態判定手段により判定された前記変動状態の推移パターンが、
（１）前記不安定状態−前記中間状態−前記安定状態、
（２）前記安定状態−前記中間状態−前記不安定状態、
（３）前記安定状態−前記中間状態−前記安定状態、
のいずれかのパターンに合致する場合に、前記更新速度の変更を許可することを特徴とする、内燃機関システム制御装置。
【請求項６】
請求の範囲第１項〜第５項のうちのいずれか１項に記載の、内燃機関システム制御装置において、
前記サブフィードバック学習値に基づいて、複数の前記気筒の間の空燃比の偏差が過大になったか否かの判定であるインバランス異常判定を行う、異常判定手段をさらに備えたことを特徴とする、内燃機関システム制御装置。
【手続補正書】
【提出日】平成24年12月28日(2012.12.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを繰り返し判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記状態判定手段は、
前記安定状態と前記中間状態との間、又は、前記中間状態と前記不安定状態との間で推移するように前記変動状態を判定し、且つ、
前回の変動状態判定時における前回の変動状態（status_old）と、今回の変動状態判定時における現在の変動状態（status_now）と、今回の変動状態判定により判定された変動状態（status_next）と、により表される推移パターンが所定のパターンに合致する場合に前記変動状態の変更を行うように構成された内燃機関システム制御装置。
【請求項２】
請求項１に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、
前記推移パターンが、前記所定のパターンに合致しない場合には前記変動状態の変更を行なわず、前記所定のパターンに合致しない場合であっても前記今回の変動状態判定により判定された変動状態（status_next）が、前回の前記変動状態判定により判定された変動状態と同じである場合には前記変動状態の変更を許可するように構成された内燃機関システム制御装置。
【請求項３】
請求項１又は請求項２に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、
前記サブフィードバック学習値をローパスフィルタによって処理することで得られた判定基準値から所定の第一判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記不安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第一判定幅よりも小さい所定の第二判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記中間状態から前記不安定状態へ前記変動状態の前記判定結果を一段階推移させ、
前記判定基準値から所定の第三判定幅までの範囲内に前記サブフィードバック学習値が入る場合に前記中間状態から前記安定状態へ前記変動状態の前記判定結果を一段階推移させる一方、前記判定基準値から前記第三判定幅よりも小さい所定の第四判定幅までの範囲内に前記サブフィードバック学習値が入らない場合に前記安定状態から前記中間状態へ前記変動状態の前記判定結果を一段階推移させることを特徴とする、内燃機関システム制御装置。
【請求項４】
請求項３に記載の、内燃機関システム制御装置であって、
前記状態判定手段は、前記変動状態の前記判定結果に応じて、前記ローパスフィルタのパラメータを変更することを特徴とする、内燃機関システム制御装置。
【請求項５】
複数気筒を有する内燃機関と、
複数の前記気筒の各々に対応して設けられた、複数の燃料噴射弁と、
複数の前記気筒からの排気が集合する排気集合部よりも排気流動方向における下流側にて、排気通路に介装された、排気浄化触媒と、
前記排気浄化触媒よりも前記排気流動方向における下流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、下流側空燃比センサと、
前記排気浄化触媒及び前記下流側空燃比センサよりも前記排気流動方向における上流側の部位にて、前記排気通路に介装されていて、当該部位における排気の空燃比に対応する出力を発生する、上流側空燃比センサと、
を備えた内燃機関システムを制御する、内燃機関システム制御装置であって、
前記下流側空燃比センサの出力に対応する排気の空燃比を理論空燃比に一致させるように前記燃料噴射弁による燃料噴射量をフィードバック制御するための制御量であるサブフィードバック量の、定常成分に対応した量である、サブフィードバック学習値を取得する、サブフィードバック学習手段と、
前記サブフィードバック学習値の変動状態が、
（ａ）安定している安定状態、
（ｂ）大きく変動している不安定状態、
（ｃ）両者の中間状態、
の少なくとも３つのうちのいずれであるかを繰り返し判定する、状態判定手段と、
前記サブフィードバック学習手段による前記サブフィードバック学習値の更新速度が、前記不安定状態の方が前記中間状態よりも大きく、且つ前記中間状態の方が前記安定状態よりも大きくなるように、前記状態判定手段による判定結果に応じて前記更新速度を設定する、学習更新速度設定手段と、
を備え、
前記学習更新速度設定手段は、前回の変動状態判定時における前回の変動状態（status_old）と、今回の変動状態判定時における現在の変動状態（status_now）と、今回の変動状態判定により判定された変動状態（status_next）と、により表される推移パターンが所定のパターンに合致する場合に前記更新速度の変更を行なうように構成された、内燃機関システム制御装置。
【請求項６】
請求項１乃至請求項５の何れか一項に記載の、内燃機関システム制御装置において、
前記サブフィードバック学習値に基づいて、複数の前記気筒の間の空燃比の偏差が過大になったか否かの判定であるインバランス異常判定を行う、異常判定手段をさらに備え、
前記異常判定手段は、現時点における前記変動状態が前記安定状態である場合に前記インバランス異常判定を行うように構成された、内燃機関システム制御装置。
【国際調査報告】
2011052096.tif 000024
2011052096.tif 000025