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