(57)【要約】      （修正有）【課題】気筒別空燃比間の差が大きいほど大きくなるか又は小さくなるインバランス判定用パラメータを空燃比センサの出力値に基づいて求め、そのパラメータと閾値との比較結果に基づいて空燃比気筒間インバランス判定を行うにあたり、前もって、空燃比センサの特性が空燃比気筒間インバランス判定に適切であるか否かを判定する。【解決手段】特定の気筒の空燃比が他の気筒の空燃比から乖離した強制インバランス状態が強制的に発生するように各気筒に噴射される燃料噴射量を変更し、その状態において空燃比センサ評価用パラメータ（例えば、検出空燃比変化率ΔＡＦ）を取得する。そして、その評価用パラメータと基準パラメータ（同じ強制インバランス状態において基準となる空燃比センサの出力値により求められる評価用パラメータ）とを比較する。【選択図】図１６
2011047332.tif 000002
【特許請求の範囲】
【請求項１】
３以上の複数の気筒を有する多気筒内燃機関に適用され、
前記機関の排気通路であって前記複数の気筒のうちの少なくとも３以上の気筒の燃焼室から排出された排ガスが集合する排気集合部又は同排気通路の同排ガス集合部よりも下流部位に配設された空燃比センサと、
前記少なくとも３以上の気筒のそれぞれに対応して配設されるとともに同３以上の気筒のそれぞれの燃焼室に供給される混合気に含まれる燃料をそれぞれ噴射する複数の燃料噴射弁と、
前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比と同少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比との差が大きいほど大きくなるか又は小さくなるインバランス判定用パラメータを少なくとも前記空燃比センサの出力値に基づいて求めるとともに、前記取得したインバランス判定用パラメータと所定のインバランス判定用閾値との比較結果に基づいて空燃比気筒間インバランス状態が発生しているか否かのインバランス判定を実行するインバランス判定手段と、
を備えた内燃機関の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記インバランス判定を実行する前に前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比が同少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比から乖離した強制インバランス状態が強制的に発生するように前記複数の燃料噴射弁から噴射される燃料の量を変更する強制インバランス状態生成手段と、
前記強制インバランス状態が発生させられている状態における前記空燃比センサの出力値に基づいて前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータを取得する評価用パラメータ取得手段と、
前記取得された空燃比センサ評価用パラメータと予め定められた基準パラメータとを比較することにより前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切であるか否かのセンサ適正判定を実行する空燃比センサ評価手段と、
前記空燃比センサ評価手段によって前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切でないと判定された場合、前記インバランス判定の実行を禁止するか又は前記インバランス判定の結果を無効とするインバランス判定実行可否決定手段と、
を備える空燃比気筒間インバランス判定装置。
【請求項２】
請求項１に記載の内燃機関の空燃比気筒間インバランス判定装置において、
前記強制インバランス状態生成手段は、
前記強制インバランス状態として、
前記一つの気筒に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリッチ側の空燃比である第１空燃比に設定する強制リッチインバランス状態と、
前記一つの気筒に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリーン側の空燃比である第２空燃比に設定する強制リーンインバランス状態と、
が発生するように、前記複数の燃料噴射弁から噴射される燃料の量を変更するように構成された空燃比気筒間インバランス判定装置。
【請求項３】
請求項２に記載の内燃機関の空燃比気筒間インバランス判定装置であって、
前記排気通路の前記空燃比センサよりも下流部位に配設され且つ酸素吸蔵機能を有する三元触媒を備え、
前記強制インバランス状態生成手段は、
前記強制リッチインバランス状態において、前記第１空燃比を理論空燃比よりもリッチ側の空燃比に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を理論空燃比又は理論空燃比よりもリーン側の空燃比である第３空燃比に設定し、且つ、同強制リッチインバランス状態の継続期間において前記排ガス中の過剰な未燃物が前記三元触媒の最大酸素吸蔵量よりも少ない量の酸素により酸化され得る量である第１の量を超えないように、同強制リッチインバランス状態の継続期間の長さを制限し、
前記強制リーンンバランス状態において、前記第２空燃比を理論空燃比よりもリーン側の空燃比に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を理論空燃比又は理論空燃比よりもリッチ側の空燃比である第４空燃比に設定し、且つ、同強制リーンンバランス状態の継続期間において前記排ガス中の過剰な酸素が前記三元触媒の最大酸素吸蔵量よりも少ない第２の量を超えないように、同強制リーンインバランス状態の継続期間の長さを制限する、
空燃比気筒間インバランス判定装置。
【請求項４】
請求項１に記載の内燃機関の空燃比気筒間インバランス判定装置であって、
前記少なくとも３以上の気筒は第１の気筒と同第１の気筒とは異なる第２の気筒とを含み、
前記強制インバランス状態生成手段は、
前記少なくとも３以上の気筒のうちの一つの気筒であって同気筒に供給される混合気の空燃比が前記他の複数の気筒に供給される混合気の空燃比から所定空燃比だけ乖離した強制インバランス空燃比となるように前記噴射される燃料の量が変更される強制インバランス気筒を、前記第１の気筒に所定期間設定した後に前記第２の気筒に所定期間設定するように構成され、
前記評価用パラメータ取得手段は、
前記強制インバランス気筒が前記第１の気筒に設定されている第１強制インバランス期間における前記空燃比センサ評価用パラメータを第１暫定評価用パラメータとして取得し、前記強制インバランス気筒が前記第２の気筒に設定されている第２強制インバランス期間における前記空燃比センサ評価用パラメータを第２暫定評価用パラメータとして取得し、
前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値が所定閾値以下である場合、同第１暫定評価用パラメータ及び同第２暫定評価用パラメータのうちの少なくとも一方に応じたパラメータを、前記センサ適正判定を実行する際に使用される最終的な空燃比センサ評価用パラメータとして取得し、
前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値が前記所定閾値よりも大きい場合、前記空燃比センサ評価手段による前記センサ適正判定の実行を禁止するか又は前記センサ適正判定の結果を無効とするように構成された、
空燃比気筒間インバランス判定装置。
【請求項５】
複数の気筒を有する多気筒内燃機関に適用され、
前記機関の排気通路であって前記複数の気筒のうちの少なくとも３以上の気筒の燃焼室から排出された排ガスが集合する排気集合部又は同排気通路の同排ガス集合部よりも下流部位に配設された空燃比センサと、
前記少なくとも３以上の気筒のそれぞれに対応して配設されるとともに同３以上の気筒のそれぞれの燃焼室に供給される混合気に含まれる燃料をそれぞれ噴射する複数の燃料噴射弁と、
前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比と同３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比との差が大きいほど大きくなるか又は小さくなるインバランス判定用パラメータを少なくとも前記空燃比センサの出力値に基づいて求めるとともに、前記取得したインバランス判定用パラメータと所定のインバランス判定用閾値との比較結果に基づいて空燃比気筒間インバランス状態が発生しているか否かのインバランス判定を実行するインバランス判定手段と、
を備えた内燃機関の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記インバランス判定を実行する前に前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比が同少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比から乖離した強制インバランス状態が強制的に発生するように前記複数の燃料噴射弁から噴射される燃料の量を変更する強制インバランス状態生成手段と、
前記強制インバランス状態が発生させられている状態における前記空燃比センサの出力値に基づいて前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータを取得する評価用パラメータ取得手段と、
前記取得された評価用パラメータを予め定められた基準パラメータに接近させるための補正量を同取得された評価用パラメータと同基準パラメータとに基づいて算出する補正量算出手段と、
前記空燃比センサの出力値、前記空燃比センサの出力値に基づいて取得される前記インバランス判定用パラメータを求めるために同空燃比センサの出力値に基づいて取得される元データ、及び、前記インバランス判定用パラメータ、のうちの少なくとも一つを前記算出した補正量により補正し、同補正したデータに基づいて前記インバランス判定用パラメータを求めるインバランス判定用パラメータ取得手段と、
を備える空燃比気筒間インバランス判定装置。
【請求項６】
請求項５に記載の空燃比気筒間インバランス判定装置において、
前記補正量算出手段は、
前記評価用パラメータに対する前記基準パラメータの比に応じた値を前記補正量として算出するように構成された空燃比気筒間インバランス判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多気筒内燃機関に適用され、各気筒に供給される混合気の空燃比（気筒別空燃比）の間に著しい不均衡が生じているか否か（空燃比気筒間インバランス状態が発生しているか否か）を判定（監視・検出）することができる「内燃機関の空燃比気筒間インバランス判定装置」に関する。
【背景技術】
【０００２】
従来から、内燃機関の排気通路に配設された三元触媒と、同排気通路であって同三元触媒の上流及び下流にそれぞれ配置された上流側空燃比センサ及び下流側空燃比センサと、を備えた空燃比制御装置が広く知られている。この空燃比制御装置は、機関に供給される混合気の空燃比（機関の空燃比）が理論空燃比と一致するように、上流側空燃比センサの出力と下流側空燃比センサの出力とに基いて空燃比フィードバック量を算出し、その空燃比フィードバック量により機関の空燃比をフィードバック制御するようになっている。更に、上流側空燃比センサの出力及び下流側空燃比センサの出力の何れか一方のみに基づいて空燃比フィードバック量を算出し、その空燃比フィードバック量により機関の空燃比をフィードバック制御する空燃比制御装置も提案されている。このような空燃比制御装置において使用される空燃比フィードバック量は、全気筒に対して共通する制御量である。
【０００３】
ところで、一般に、電子燃料噴射式内燃機関は、各気筒又は各気筒に連通した吸気ポートに少なくとも一つの燃料噴射弁を備えている。従って、ある特定の気筒の燃料噴射弁の特性が「指示された燃料噴射量よりも過大な量の燃料を噴射する特性」となると、その特定の気筒に供給される混合気の空燃比（その特定気筒の空燃比）のみが大きくリッチ側に変化する。即ち、気筒間における空燃比の不均一性（空燃比気筒間ばらつき、空燃比の気筒間インバランス）が大きくなる。換言すると、気筒別空燃比の間に不均衡が生じる。
【０００４】
この場合、機関全体に供給される混合気の空燃比の平均は、理論空燃比よりもリッチ側の空燃比となる。従って、全気筒に対して共通する空燃比フィードバック量により、上記特定の気筒の空燃比は理論空燃比に近づけられるようにリーン側へと変更され、同時に、他の気筒の空燃比は理論空燃比から遠ざけられるようにリーン側へと変更させられる。この結果、機関に供給される混合気の全体の空燃比の平均は略理論空燃比に一致させられる。
【０００５】
しかしながら、上記特定の気筒の空燃比は依然として理論空燃比よりもリッチ側の空燃比となり、残りの気筒の空燃比は理論空燃比よりもリーン側の空燃比となるから、各気筒における混合気の燃焼状態は完全燃焼とは相違した燃焼状態となる。この結果、各気筒から排出されるエミッションの量（未燃物の量及び窒素酸化物の量）が増大する。このため、機関に供給される混合気の空燃比の平均が理論空燃比であったとしても、増大したエミッションを三元触媒が浄化しきれず、結果として、エミッションが悪化する虞がある。
【０００６】
従って、気筒間における空燃比の不均一性が過大になっていること（空燃比気筒間インバランス状態が発生していること）を検出し、何らかの対策を講じさせるようにすることはエミッションを悪化させないために重要である。なお、空燃比気筒間インバランスは、特定の気筒の燃料噴射弁の特性が「指示された燃料噴射量よりも過小な量の燃料を噴射する特性」となった場合、或いは、ＥＧＲガス及び蒸発燃料ガスの各気筒への分配が不均一になった場合等の種々の要因により発生する。
【０００７】
このような空燃比気筒間インバランス状態が発生したか否かを判定する従来の装置の一つは、複数の気筒からの排ガスが集合する排気集合部に配設された空燃比センサ（上記上流側空燃比センサ）の出力（出力信号）の軌跡長を取得し、その軌跡長と「機関回転速度及び吸入空気量に応じて変化する参照値」とを比較し、その比較結果に基づいて空燃比気筒間インバランス状態が発生したか否かを判定するようになっている（例えば、特許文献１を参照。）。なお、「過度の空燃比気筒間インバランス状態」が発生したか否かの判定は、単に「空燃比気筒間インバランス判定、又は、インバランス判定」とも称呼される。「過度の空燃比気筒間インバランス状態」とは、未燃物及び／又は窒素酸化物が規定値を超えるような空燃比気筒間インバランス状態のことである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第７，１５２，５９４号
【発明の概要】
【０００９】
このような空燃比センサの出力を利用したインバランス判定を精度良く行うためには、空燃比センサの出力特性が「標準的な空燃比センサの出力特性」と良く一致していることが求められる。標準的な空燃比センサの出力特性とは、「インバランス判定のための閾値（例えば、上記従来装置における参照値）を予め決定する際に用いられる空燃比センサ」の出力特性のことである。また、空燃比センサの出力特性とは、例えば、空燃比センサの出力ゲイン及び応答性等のことである。出力ゲインとは、例えば、空燃比が理論空燃比であるときの空燃比センサの出力値と空燃比が所定空燃比であるときの空燃比センサの出力値との差の大きさに比例する量である。標準的な空燃比センサは、「基準空燃比センサ」とも称呼される。
【００１０】
しかしながら、空燃比センサは、例えば、製造ばらつきに起因する個体差を有する。更に、空燃比センサが使用に伴って劣化し、そのために出力特性が経時変化してしまう場合もある。このように空燃比センサの出力特性が「基準空燃比センサの出力特性」と著しく相違すると、空燃比センサの出力値に基づいて得られる空燃比気筒間インバランス判定用のパラメータが精度良く得られないので、空燃比気筒間インバランス判定が精度良く行われ得ない。
【００１１】
本発明は上記課題に対処するためになされたものである。即ち、本発明の目的の一つは、空燃比センサの出力特性が「基準空燃比センサの出力特性」から乖離した場合であっても、「誤った空燃比気筒間インバランス判定」を行う可能性を低減することができる空燃比気筒間インバランス判定装置を提供することにある。
【００１２】
本発明の内燃機関の空燃比気筒間インバランス判定装置（以下、「本発明の判定装置」とも称呼する。）は、複数の気筒（一般には３気筒以上の気筒）を有する多気筒内燃機関に適用され、空燃比センサと、複数の燃料噴射弁と、インバランス判定手段と、を備える。
【００１３】
前記空燃比センサは、前記機関の排気通路であって「前記複数の気筒のうちの少なくとも３以上の気筒（例えば、４気筒エンジンの場合には総ての気筒、Ｖ型６気筒のエンジンの場合には左右の各バンクの３気筒、Ｖ型８気筒エンジンの場合には左右の各バンク４気筒、等）」の燃焼室から排出された排ガスが集合する排気集合部に配設される。或いは、前記空燃比センサは、前記排気通路の前記排ガス集合部よりも下流部位に配設される。前記空燃比センサは、配設部位に到達した排ガスの空燃比に応じた出力値を出力する。
【００１４】
前記複数の燃料噴射弁は、前記少なくとも３以上の気筒のそれぞれに対応して配設され、「その３以上の気筒のそれぞれの燃焼室に供給される混合気」に含まれる燃料をそれぞれ噴射する。即ち、燃料噴射弁は、一つの気筒に対して一つ以上設けられている。
【００１５】
前記インバランス判定手段は、「前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比と同少なくとも３以上の気筒のうちの他の（残りの）複数の気筒に供給される混合気の空燃比との差（気筒間空燃比差）」が大きいほど「大きくなるか又は小さくなるインバランス判定用パラメータ」を「少なくとも前記空燃比センサの出力値」に基づいて求めるとともに、「前記取得したインバランス判定用パラメータと所定のインバランス判定用閾値との比較結果」に基づいて「空燃比気筒間インバランス状態が発生しているか否か」のインバランス判定を実行する。
【００１６】
なお、インバランス判定手段は、インバランス判定用パラメータが気筒間空燃比差が大きくなるほど大きくなる値である場合、インバランス判定用パラメータがインバランス判定用閾値以上である場合に、空燃比気筒間インバランス状態が発生していると判定するように構成できる。また、インバランス判定手段は、インバランス判定用パラメータが気筒間空燃比差が大きくなるほど小さくなる値である場合、インバランス判定用パラメータがインバランス判定用閾値以下である場合に、空燃比気筒間インバランス状態が発生していると判定するように構成できる。
【００１７】
前記インバランス判定パラメータは、「前記少なくとも３以上の気筒のそれぞれに供給される混合気の空燃比の間の不均衡の程度が大きいほど、大きくなるか又は小さくなる」パラメータである。例えば、前記インバランス判定用パラメータは、「前記空燃比センサの出力値又は同出力値により表される空燃比（検出空燃比）」の軌跡長、「前記空燃比センサの出力値又は前記検出空燃比」の時間についての変化率（微分値、検出空燃比変化率）に応じた値、「前記空燃比センサの出力値又は前記検出空燃比」の時間についての変化率の変化率（二階微分値、検出空燃比変化率の変化率）に応じた値、等であってもよい。これらの値は、上記気筒間空燃比差が大きくなるほど大きくなる値である。更に、インバランス判定用パラメータは、これらの値の逆数であってもよい。この場合、インバランス判定用パラメータは、上記気筒間空燃比差が大きくなるほど小さくなる値となる。
【００１８】
加えて、前記インバランス判定手段は、強制インバランス状態生成手段と、評価用パラメータ取得手段と、空燃比センサ評価手段と、インバランス判定実行可否決定手段と、を備えることを特徴とする。
【００１９】
前記強制インバランス状態生成手段は、
前記インバランス判定を実行する前に、「前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比」が「同少なくとも３以上の気筒のうちの他の複数の気筒（のそれぞれ）に供給される混合気の空燃比」から乖離した状態（即ち、強制インバランス状態）が強制的に発生するように、前記複数の燃料噴射弁から噴射される燃料を変更する。
【００２０】
例えば、機関が４気筒エンジンであり、一つの空燃比センサが総ての気筒から排出される排ガスの集合部に配設されている場合、前記強制インバランス状態発生手段は特定気筒（例えば、第１気筒）に対する燃料噴射量を他の複数の気筒（第２〜第４気筒）に対する燃料噴射量よりも増量又は減量することにより、強制インバランス状態を発生させる。
【００２１】
このように、供給される混合気の空燃比が、他の複数の気筒に供給される混合気の空燃比と強制的に相違させられる気筒は「強制インバランス気筒」とも称呼される。また、他の複数の気筒は「非強制インバランス気筒」とも称呼される。更に、強制インバランス気筒に供給される混合気の空燃比は「強制インバランス気筒の空燃比」とも称呼され、非強制インバランス気筒に供給される混合気の空燃比は「非強制インバランス気筒の混合気」とも称呼される。加えて、強制インバランス気筒の空燃比が非強制インバランス気筒の空燃比よりもリッチ側の空燃比に設定されるとき、その強制インバランス気筒は「強制リッチインバランス気筒」とも称呼され、強制インバランス気筒の空燃比が非強制インバランス気筒の空燃比よりもリーン側の空燃比に設定されるとき、その強制インバランス気筒は「強制リーンインバランス気筒」とも称呼される。
【００２２】
前記評価用パラメータ取得手段は、
前記強制インバランス状態が発生させられている状態における前記空燃比センサの出力値に基づいて「前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータ」を取得する。
【００２３】
空燃比センサ評価用パラメータは、例えば、「前記空燃比センサの出力値又は同出力値により表される空燃比（検出空燃比）」の軌跡長、「前記空燃比センサの出力値又は前記検出空燃比」の時間についての変化率に応じた値、「前記空燃比センサの出力値又は前記検出空燃比」の時間についての変化率の変化率、単位燃焼サイクル期間における「空燃比センサの出力値又は検出空燃比」の「最大値又は最小値」等であってもよい。前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータは、インバランス判定用パラメータと同じ種類のパラメータであることが好ましい。なお、「単位燃焼サイクル期間」とは、「一つの空燃比センサに到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角が経過する期間」であり、４サイクル４気筒エンジンにおいては７２０度クランク角に相当する期間である。
【００２４】
前記空燃比センサ評価手段は、
「前記取得された空燃比センサ評価用パラメータ」と「予め定められた基準パラメータ」とを比較することにより「前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切であるか否か」の判定である「センサ適正判定」を実行する。基準パラメータは、空燃比センサが基準空燃比センサである場合に得られる空燃比センサ評価用パラメータである。「取得された空燃比センサ評価用パラメータと予め定められた基準パラメータとを比較すること」には、それらのパラメータの差の絶対値が所定の閾値（「０」を含む。）よりも大きいか否かを判定すること、それらの比の値が所定の閾値よりも大きいか否かを判定すること、等が含まれる。
【００２５】
インバランス判定実行可否決定手段は、
前記空燃比センサ評価手段によって「前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切でない」と判定された場合、前記インバランス判定の実行を禁止するか又は前記インバランス判定の結果を無効とする。なお、「前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切でない」ことを、単に「空燃比センサが不適切である。」或いは「空燃比センサが適切（適正）ではない。」とも表現する。
【００２６】
これによれば、本来の空燃比気筒間インバランスが発生した状態と類似する強制インバランス状態が強制的に発生させられ、その強制インバランス状態において空燃比センサの出力特性を表す空燃比センサ評価用パラメータが取得されるとともに、その空燃比センサ評価用パラメータと基準パラメータとが近しいか否かに基づいて空燃比センサ適正判定がなされる。従って、空燃比センサの出力特性が「空燃比気筒間インバランス判定」にとって不適切であるか否かが精度良く判定される。更に、空燃比センサの出力特性が空燃比気筒間インバランス判定に不適切であると判定された場合、空燃比気筒間インバランス判定が事実上実行されない。その結果、空燃比センサの出力特性の変化等に起因して、空燃比気筒間インバランス判定を誤る可能性を低減することができる。
【００２７】
前記強制インバランス状態生成手段は、
前記強制インバランス状態として、
前記一つの気筒に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリッチ側の空燃比である第１空燃比に設定する強制リッチインバランス状態と、
前記一つの気筒に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリーン側の空燃比である第２空燃比に設定する強制リーンインバランス状態と、
の両方の状態が（時間的に重複することなく）発生するように、前記複数の燃料噴射弁から噴射される燃料の量を変更するように構成され得る。
【００２８】
空燃比センサの出力特性は、検出する空燃比がリッチ側の空燃比からリーン側の空燃比へと変化する場合と、リーン側の空燃比からリッチ側の空燃比へと変化する場合と、において互いに相違する場合がある。従って、上記態様のように、「一つの気筒に供給される混合気の空燃比（強制インバランス気筒の空燃比）を、第１空燃比と第２空燃比とに設定すれば、空燃比センサに到達する排ガスの空燃比の変化の様子を種々に設定できるので、空燃比センサの出力特性が「空燃比気筒間インバランス判定」にとって適切であるか否か（空燃比センサ適正判定）を、より精度良く判定することができる。なお、前記第１空燃比に設定される気筒と、前記第２空燃比に設定される気筒と、は互いに同じ気筒であってもよく異なる気筒であってもよい。
【００２９】
この場合、強制インバランス気筒の空燃比を第１の空燃比に設定している期間における空燃比センサ評価用パラメータを第１評価用パラメータとして取得し、強制インバランス気筒の空燃比を第２空燃比に設定している期間における空燃比センサ評価用パラメータを「第１評価用パラメータとは区別される第２評価用パラメータ」として取得し、第１評価用パラメータ及び第２評価用パラメータを、前記基準パラメータとしての「第１の基準パラメータ及び第２の基準パラメータ」とそれぞれ比較し、その比較結果に基づいて空燃比センサ適正判定を行うことが好ましい。
【００３０】
更に、この場合、例えば、第１評価用パラメータと第１の基準パラメータとの差の絶対値が第１閾値よりも大きく、且つ、第２評価用パラメータと第２の基準パラメータとの差の絶対値が第２閾値よりも大きいとき、空燃比センサが不適切であると判定することもできる。また、第１評価用パラメータと第１の基準パラメータとの差の絶対値が第１閾値よりも大きいこと、及び、第２評価用パラメータと第２の基準パラメータとの差の絶対値が第２閾値よりも大きいこと、の少なくとも一方が成立したとき、空燃比センサが不適切であると判定することもできる。
【００３１】
加えて、空燃比センサの出力特性は、検出する空燃比が理論空燃比よりもリッチ側である場合と、理論空燃比よりもリーン側である場合と、においても互いに相違する場合がある。従って、上記態様において、第１空燃比を理論空燃比よりもリッチ側の空燃比に設定し、第２空燃比を理論空燃比よりもリーン側の空燃比に設定すれば、空燃比センサに到達する排ガスの空燃比の変化の様子を一層種々の態様に設定できるので、空燃比センサの適正判定を一層精度良く実行することができる。
【００３２】
更に、上記内燃機関は、前記排気通路の前記空燃比センサよりも下流部位に配設され且つ酸素吸蔵機能を有する三元触媒を備えることが多い。
【００３３】
この場合、前記強制リッチインバランス状態及び前記強制リーンインバランス状態の両状態を時間的に重複することなく（一つの単位燃焼サイクル期間内に混在することなく）生成させる前記強制インバランス状態生成手段は、
前記強制リッチインバランス状態において、前記第１空燃比を「理論空燃比よりもリッチ側の空燃比」に設定するとともに、前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比、又は、理論空燃比よりもリーン側の空燃比、である第３空燃比」に設定し、且つ、同強制リッチインバランス状態の継続期間において「前記排ガス中の過剰な未燃物」が「前記三元触媒の最大酸素吸蔵量よりも少ない量の酸素」により酸化され得る量（第１の量）を超えないように、同強制リッチインバランス状態の継続期間の長さを制限することが望ましい。なお、排ガス中の過剰な未燃物とは、排ガス中の酸素と未燃物とが完全に結合したと仮定した場合に、残存する未燃物のことである。
【００３４】
更に、前記強制インバランス状態生成手段は、
前記強制リーンンバランス状態において、前記第２空燃比を「理論空燃比よりもリーン側の空燃比」に設定するとともに、前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比、又は、理論空燃比よりもリッチ側の空燃比、である第４空燃比」に設定し、且つ、同強制リーンンバランス状態の継続期間において「前記排ガス中の過剰な酸素」が「前記三元触媒の最大酸素吸蔵量よりも少ない第２の量」を超えないように、同強制リーンインバランス状態の継続期間の長さを制限することが望ましい。なお、排ガス中の過剰な酸素とは、排ガス中の酸素と未燃物とが完全に結合したと仮定した場合に、残存する酸素のことである。
【００３５】
この態様によれば、第１空燃比が理論空燃比よりもリッチ側の空燃比に設定され、第２空燃比が理論空燃比よりもリーン側の空燃比に設定されるので、検出する空燃比が理論空燃比よりもリッチ側である場合と理論空燃比よりもリーン側である場合とにおいて空燃比センサの出力特性が互いに相違する場合であっても、空燃比センサの適正判定を一層精度良く実行することができる。
【００３６】
更に、この態様によれば、強制リッチインバランス状態において三元触媒に流入する過剰な未燃物の積算量が、その三元触媒により浄化することが可能な未燃物の量を超えることがないように設定することができる。加えて、この態様によれば、強制リーンインバランス状態において三元触媒に流入する過剰な酸素の積算量が、その三元触媒に吸蔵することが可能な酸素の量（最大酸素吸蔵量Ｃmax）を超えることがないように設定することができる。従って、強制インバランス状態を発生させているときにエミッションが悪化することを回避することが可能になる。
【００３７】
なお、この態様において、三元触媒の最大酸素吸蔵量Ｃmaxと瞬時瞬時の酸素吸蔵量ＯＳＡとを推定しておき、その酸素吸蔵量ＯＳＡが「０よりも大きい第１所定値」と「第１所定値よりも大きく且つ最大酸素吸蔵量Ｃmaxよりも小さい第２所定値」との間の範囲内になるように、強制リッチインバランス状態の継続期間の長さ及び強制リーンインバランス状態の継続期間の長さを制限することが更に望ましい。
【００３８】
本発明の他の態様において、
前記少なくとも３以上の気筒は第１の気筒と同第１の気筒とは異なる第２の気筒とを含み、
前記強制インバランス状態生成手段は、
強制インバランス気筒（即ち、「前記少なくとも３以上の気筒のうちの一つの気筒」であって「その気筒に供給される混合気の空燃比」が「他の複数の気筒に供給される混合気の空燃比」から所定空燃比だけ乖離した強制インバランス空燃比となるように「前記噴射される燃料の量が変更される気筒」）を、前記第１の気筒に所定期間設定した後に前記第２の気筒に所定期間設定するように構成される。
【００３９】
前記評価用パラメータ取得手段は、
「前記強制インバランス気筒が前記第１の気筒に設定されている第１強制インバランス期間」における前記空燃比センサ評価用パラメータを「第１暫定評価用パラメータ」として取得し、「前記強制インバランス気筒が前記第２の気筒に設定されている第２強制インバランス期間」における前記空燃比センサ評価用パラメータを「第２暫定評価用パラメータ」として取得するように構成される。
【００４０】
更に、前記評価用パラメータ取得手段は、
「前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値」が所定閾値以下である場合、同第１暫定評価用パラメータ及び同第２暫定評価用パラメータのうちの少なくとも一方に応じたパラメータを「前記センサ適正判定を実行する際に使用される最終的な空燃比センサ評価用パラメータ」として取得し、
「前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値」が前記所定閾値よりも大きい場合、前記空燃比センサ評価手段による前記センサ適正判定の実行を禁止するか又は前記センサ適正判定の結果を無効とするように構成される。
【００４１】
この態様によれば、強制インバランス気筒が第１の気筒に設定された状態において第１暫定評価用パラメータが取得され、その後、強制インバランス気筒が第２の気筒に設定された状態において第２暫定評価用パラメータが取得される。
【００４２】
ところで、強制リッチインバランス状態を発生させていない状態において、仮に、第１の気筒に供給される混合気の空燃比が他の気筒に供給される混合気の空燃比から乖離していると（即ち、第１の気筒が元々のインバランス気筒であると）、強制インバランス気筒を第１の気筒に設定した場合と強制インバランス気筒を第２の気筒に設定した場合とで空燃比の変動量が相違する。その結果、空燃比センサの出力特性に関わらず、第１暫定評価用パラメータと第２暫定評価用パラメータとは相違する。このことは、第２の気筒が元々のインバランス気筒である場合も同様である。
【００４３】
換言すると、第１暫定評価用パラメータと第２暫定評価用パラメータとの差が小さければ、強制インバランス状態を発生させていない状態において、第１の気筒に供給される混合気の空燃比と第２の気筒に供給される混合気の空燃比は略一致しており（第１の気筒及び第２の気筒はインバランス気筒ではない）、従って、第１暫定評価用パラメータ及び第２暫定評価用パラメータは何れも「空燃比センサの出力特性」を精度良く表していると考えられる。
【００４４】
そこで、上記態様においては、そのような場合（即ち、前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値が所定閾値以下である場合）に、第１暫定評価用パラメータ及び第２暫定評価用パラメータのうちの少なくとも一方に応じたパラメータを、「センサ適正判定を実行する際に使用される空燃比センサ評価用パラメータ（最終評価用パラメータ）」として取得する。この場合、最終評価用パラメータは、第１暫定評価用パラメータ及び第２暫定評価用パラメータの何れか一方であってもよく、それらの平均値であってもよい。この結果、空燃比センサの適正判定を精度良く実行することができる。
【００４５】
これに対し、前記第１暫定評価用パラメータと前記第２暫定評価用パラメータとの差の絶対値が前記所定閾値よりも大きい場合、第１の気筒及び第２の気筒の何れか一方が元々のインバランス気筒であると考えられる。この場合、他の手段を講じないと、空燃比センサ評価用パラメータを精度良く求めることが難しい。そこで、上記態様においては、このような場合、前記空燃比センサ評価手段による前記センサ適正判定の実行を禁止するか又は前記センサ適正判定の結果を無効とする。この結果、正常な空燃比センサを「不適切な空燃比センサである」と判定してしまうことを回避することができる。
【００４６】
本発明による他の空燃比気筒間インバランス判定装置は、上述した多気筒内燃機関に適用されるとともに、上述した「空燃比センサ及び複数の燃料噴射弁」を備える。
【００４７】
更に、この装置は、上記インバランス判定用パラメータを少なくとも前記空燃比センサの出力値に基づいて取得するとともに、前記取得したインバランス判定用パラメータと所定のインバランス判定用閾値との比較結果に基づいて空燃比気筒間インバランス状態が発生しているか否かの判定（インバランス判定）を実行するインバランス判定手段を備える。
【００４８】
このインバランス判定手段は、
上述した「強制インバランス状態生成手段及び空燃比センサ評価用パラメータ取得手段」を備えるとともに、
前記取得された評価用パラメータを予め定められた基準パラメータに接近させるための補正量を「同取得された評価用パラメータと同基準パラメータ」とに基づいて算出する補正量算出手段と、
「前記空燃比センサの出力値、前記空燃比センサの出力値に基づいて取得される前記インバランス判定用パラメータを求めるために同空燃比センサの出力値に基づいて取得される元データ、及び、前記インバランス判定用パラメータ」のうちの少なくとも一つを前記算出した補正量により補正し、同補正したデータに基づいて前記インバランス判定用パラメータを求めるインバランス判定用パラメータ取得手段と、
を備える。
【００４９】
これによれば、強制インバランス状態において取得された評価用パラメータを基準パラメータに接近させるための補正量が算出され、その補正量により「インバランス判定を行う際にインバランス判定用閾値と比較されるインバランス判定用パラメータ」を求めるための「空燃比センサの出力値又はその出力値の加工値（元データ）」又はインバランス判定用パラメータそのものが補正される。その結果、求められるインバランス判定用パラメータは、空燃比センサが基準空燃比センサであるときに得られる値に近づく。従って、インバランス判定をより精度良く実行することができる。
【００５０】
この場合、
前記補正量算出手段は、
前記評価用パラメータ（Ｘ）に対する前記基準パラメータ（Ｙ）の比（＝Ｙ／Ｘ）に応じた値（Ｙ／Ｘ又はＸ／Ｙ等）を、前記補正量として算出するように構成されることが望ましい。
【００５１】
これによれば、簡単な演算により前記補正量を求めることができるとともに、簡単な演算（補正量を乗算するのみ等）により元データ等を補正することができる。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明の第１実施形態に係る空燃比気筒間インバランス判定装置（第１判定装置）が適用される内燃機関の概略構成を示した図である。
【図２】図２は、図１に示した空燃比センサ（上流側空燃比センサ）の部分概略斜視図（透視図）である。
【図３】図３は、図１に示した空燃比センサ（上流側空燃比センサ）の部分断面図である。
【図４】図４の（Ａ）〜（Ｃ）は、図１に示した空燃比センサ（上流側空燃比センサ）が備える空燃比検出素子の概略断面図である。
【図５】図５は、排ガスの空燃比と空燃比センサの限界電流値との関係を示したグラフである。
【図６】図６は、排ガスの空燃比と空燃比センサの出力値との関係を示したグラフである。
【図７】図７は、排ガスの空燃比と下流側空燃比センサの出力との関係を示したグラフである。
【図８】図８の（Ａ）〜（Ｃ）は、空燃比センサの出力値に基づいて得られる検出空燃比の変化の様子を示した図である。
【図９】図９は、空燃比センサの外側の保護カバーの流入孔に到達した排ガスの空燃比、及び、空燃比検出素子に到達しているガスの空燃比の変化の様子を示した図である。
【図１０】図１０は、燃比センサの外側の保護カバーの流入孔に到達した排ガスの空燃比、空燃比検出素子に到達しているガスの空燃比、及び、空燃比センサの出力値、の変化の様子を示した図である。
【図１１】図１１は、検出空燃比変化率が機関回転速度の影響を受けないことを説明するための図であって、空燃比センサの外側の保護カバーの流入孔に到達した排ガスの空燃比、空燃比検出素子に到達しているガスの空燃比、及び、空燃比センサの出力値、の変化の様子を示した図である。
【図１２】図１２は、基準空燃比センサの出力値（実線）及び出力特性ずれ空燃比センサの出力値（破線）の変化の様子を示した図である。
【図１３】図１３は、強制インバランス状態（強制リッチインバランス状態）における各気筒に対する燃料噴射量の増量率を示した図である。
【図１４】図１４は、図１に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１５】図１５は、図１に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１６】図１６は、図１に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１７】図１７は、検出空燃比の変化の様子を示した図であり、（Ａ）はインバランス状態が発生していない場合の検出空燃比、（Ｂ）はインバランス状態が発生している場合の検出空燃比を示した図である。
【図１８】図１８は、図１に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１９】図１９は、第２実施形態に係る空燃比気筒間インバランス判定装置（第２判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２０】図２０は、第２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２１】図２１は、第３実施形態に係る空燃比気筒間インバランス判定装置（第３判定装置）の作動を説明するためのタイムチャートである。
【図２２】図２２は、第３判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２３】図２３は、第３判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２４】図２４は、第３判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２５】図２５は、第４実施形態に係る空燃比気筒間インバランス判定装置（第４判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２６】図２６は、第５実施形態に係る空燃比気筒間インバランス判定装置（第５判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２７】図２７は、第５判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２８】図２８は、第５判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２９】図２９は、第６実施形態に係る空燃比気筒間インバランス判定装置（第６判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図３０】図３０は、第６判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図３１】図３１は、第６判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図３２】図３２は、第７実施形態に係る空燃比気筒間インバランス判定装置（第７判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図３３】図３３は、第７判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００５３】
以下、本発明の各実施形態に係る内燃機関の空燃比気筒間インバランス判定装置について図面を参照しながら説明する。各実施形態に係る装置は、空燃比センサの出力値により表される空燃比（検出空燃比）の時間微分値（検出空燃比変化率）に相当する値（空燃比変化率指示量）をインバランス判定用パラメータとして取得し、そのインバランス判定用パラメータを用いて空燃比気筒間インバランス判定を実行する。
【００５４】
更に、各実施形態に係る装置は、空燃比センサが空燃比気筒間インバランス判定に適切な出力特性を有しているか否かを空燃比センサ評価用パラメータ（評価用パラメータ）を用いて判定する。各実施形態に係る装置は、強制的に空燃比気筒間インバランス状態を発生させ、その状態における検出空燃比変化率に相当する値を「評価用パラメータ」として取得する。
【００５５】
但し、インバランス判定用パラメータは、空燃比センサに排ガスが到達する少なくとも３以上の気筒のそれぞれに供給される混合気の空燃比の間の不均衡の程度が大きいほど大きくなるパラメータであればよく、検出空燃比変化率に相当する値に限定されることはない。具体的には、インバランス判定用パラメータは、空燃比センサの出力値（又は空燃比センサの出力値が空燃比に変換された値である検出空燃比）の軌跡長、空燃比センサの出力値又は検出空燃比の変化率の変化率に応じた値（上流側空燃比センサの出力値の時間に関する二階微分値、又は、上流側空燃比センサの出力値により表される空燃比の時間に関する二階微分値）等であってもよい。また、インバランス判定用パラメータは、空燃比センサに排ガスが到達する少なくとも３以上の気筒のそれぞれに供給される混合気の空燃比の間の不均衡の程度が大きいほど小さくなるパラメータであってもよい。
【００５６】
更に、空燃比センサ評価用パラメータは、前記空燃比センサの出力特性を表すパラメータであればよく、検出空燃比変化率に相当する値に限定されることはない。空燃比センサ評価用パラメータは、インバランス判定用パラメータと同じか同種のパラメータとすることが望ましい。
【００５７】
＜第１実施形態＞
本発明の第１実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第１判定装置」と称呼する。）は、内燃機関の空燃比を制御する空燃比制御装置の一部であり、燃料噴射量を制御する燃料噴射量制御装置でもある。
【００５８】
（構成）
図１は、第１判定装置が適用される内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・多気筒（本例において４気筒）・ガソリン燃料機関である。機関１０は、本体部２０、吸気系統３０及び排気系統４０を備えている。
【００５９】
本体部２０は、シリンダブロック部とシリンダヘッド部とを備えている。本体部２０は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面等により形成される複数（４個）の燃焼室（第１気筒＃１乃至第４気筒＃４）２１を備えている。
【００６０】
シリンダヘッド部には、各燃焼室（各気筒）２１に「空気及び燃料からなる混合気」を供給するための吸気ポート２２と、各燃焼室２１から排ガス（既燃ガス）を排出するための排気ポート２３と、が形成されている。吸気ポート２２は図示しない吸気弁により開閉され、排気ポート２３は図示しない排気弁により開閉されるようになっている。
【００６１】
シリンダヘッド部には複数（４個）の点火プラグ２４が固定されている。各点火プラグ２４は、その火花発生部が各燃焼室２１の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ２４は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
【００６２】
シリンダヘッド部には更に複数（４個）の燃料噴射弁（インジェクタ）２５が固定されている。燃料噴射弁２５は、各吸気ポート２２に一つずつ設けられている。燃料噴射弁２５は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示噴射量の燃料」を対応する吸気ポート２２内に噴射するようになっている。このように、複数の気筒２１のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁２５を備えている。
【００６３】
更に、シリンダヘッド部には、吸気弁制御装置２６が設けられている。この吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置２６は、指示信号（駆動信号）に基いて作動し、吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
【００６４】
吸気系統３０は、インテークマニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４及びスロットル弁アクチュエータ３４ａを備えている。
【００６５】
インテークマニホールド３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管３２はサージタンク部に接続されている。インテークマニホールド３１、吸気管３２及び複数の吸気ポート２２は、吸気通路を構成している。エアフィルタ３３は吸気管３２の端部に設けられている。スロットル弁３４はエアフィルタ３３とインテークマニホールド３１との間の位置において吸気管３２に回動可能に取り付けられている。スロットル弁３４は、回動することにより吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３４ａは、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
【００６６】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ（排気管）４２、上流側触媒４３及び下流側触媒４４を備えている。
【００６７】
エキゾーストマニホールド４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、からなっている。エキゾーストパイプ４２は、エキゾーストマニホールド４１の集合部４１ｂに接続されている。エキゾーストマニホールド４１、エキゾーストパイプ４２及び複数の排気ポート２３は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド４１の集合部４１ｂ及びエキゾーストパイプ４２を、便宜上、「排気通路」と称呼する。
【００６８】
上流側触媒４３は、セラミックからなる担持体に「触媒物質である貴金属」及び「セリア（CeO2)」を担持していて、酸素吸蔵・放出機能（酸素吸蔵機能）を有する三元触媒である。上流側触媒４３はエキゾーストパイプ４２に配設（介装）されている。上流側触媒４３は所定の活性温度に到達すると、「未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。
【００６９】
下流側触媒４４は、上流側触媒４３と同様の三元触媒である。下流側触媒４４は、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設（介装）されている。なお、上流側触媒４３及び下流側触媒４４は、三元触媒以外の種類の触媒であっても良い。
【００７０】
この第１判定装置は、熱線式エアフローメータ５１、スロットルポジションセンサ５２、クランク角センサ５３、インテークカムポジションセンサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６及びアクセル開度センサ５７を備えている。
【００７１】
熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量を検出し、その質量流量（機関１０の単位時間あたりの吸入空気量）Ｇａを表す信号を出力するようになっている。吸入空気流量Ｇａは排ガスの流量に略等しいので、排ガスの流速にも略比例する。
【００７２】
スロットルポジションセンサ５２は、スロットル弁３４の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００７３】
クランク角センサ（クランクポジションセンサ）５３は、機関１０のクランク軸が１０度回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置６０によって機関回転速度ＮＥに変換される。
【００７４】
インテークカムポジションセンサ５４は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。電気制御装置６０は、クランク角センサ５３及びインテークカムポジションセンサ５４からの信号に基いて、基準気筒（例えば第１気筒＃１）の圧縮上死点を基準とした絶対クランク角ＣＡを取得するようになっている。この絶対クランク角ＣＡは、基準気筒の圧縮上死点において「０°クランク角」に設定され、クランク角の回転角度に応じて７２０°クランク角まで増大し、その時点にて再び０°クランク角に設定される。
【００７５】
上流側空燃比センサ５５（本発明における空燃比センサ５５）は、エキゾーストマニホールド４１の集合部４１ｂと上流側触媒４３との間の位置においてエキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか（即ち、排気通路）に配設されている。即ち、空燃比センサ５５は、機関１０の排気通路であって「複数の気筒のうちの少なくとも３以上の気筒の燃焼室２１）から排出された排ガスが集合する排気集合部」又は「その排気通路のその排ガス集合部よりも下流部位」に配設されている。空燃比センサ５５は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００７６】
上流側空燃比センサ５５は、図２及び図３に示したように、空燃比検出素子５５ａと、外側保護カバー５５ｂと、内側保護カバー５５ｃと、を有している。
【００７７】
外側保護カバー５５ｂは金属からなる中空円筒体である。外側保護カバー５５ｂは内側保護カバー５５ｃを覆うように、内側保護カバー５５ｃを内部に収容している。外側保護カバー５５ｂは、流入孔５５ｂ１をその側面に複数備えている。流入孔５５ｂ１は、排気通路を流れる排ガス（外側保護カバー５５ｂの外部の排ガス）ＥＸを外側保護カバー５５ｂの内部に流入させるための貫通孔である。更に、外側保護カバー５５ｂは、外側保護カバー５５ｂの内部の排ガスを外部（排気通路）に流出させるための流出孔５５ｂ２をその底面に有している。
【００７８】
内側保護カバー５５ｃは、金属からなり、外側保護カバー５５ｂの直径よりも小さい直径を有する中空円筒体である。内側保護カバー５５ｃは、空燃比検出素子５５ａを覆うように空燃比検出素子５５ａを内部に収容している。内側保護カバー５５ｃは流入孔５５ｃ１をその側面に複数備えている。この流入孔５５ｃ１は、外側保護カバー５５ｂの流入孔５５ｂ１を通して「外側保護カバー５５ｂと内側保護カバー５５ｃとの間の空間」に流入した排ガスを、内側保護カバー５５ｃの内部に流入させるため貫通孔である。更に、内側保護カバー５５ｃは、内側保護カバー５５ｃの内部の排ガスを外部に流出させるための流出孔５５ｃ２をその底面に有している。
【００７９】
図４の（Ａ）乃至（Ｃ）に示したように、空燃比検出素子５５ａは、固体電解質層５５１と、排ガス側電極層５５２と、大気側電極層５５３と、拡散抵抗層５５４と、隔壁部５５５と、を含んでいる。
【００８０】
固体電解質層５５１は酸素イオン導電性酸化物焼結体である。本例において、固体電解質層５５１は、ＺｒＯ２（ジルコニア）にＣａＯを安定剤として固溶させた「安定化ジルコニア素子」である。固体電解質層５５１は、その温度が活性温度以上であるとき、周知の「酸素電池特性」及び「酸素ポンプ特性」を発揮する。
【００８１】
排ガス側電極層５５２は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。排ガス側電極層５５２は、固体電解質層５５１の一つの面上に形成されている。排ガス側電極層５５２は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。
【００８２】
大気側電極層５５３は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。大気側電極層５５３は、固体電解質層５５１の他の面上であって、固体電解質層５５１を挟んで排ガス側電極層５５２に対向するように形成されている。大気側電極層５５３は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。
【００８３】
拡散抵抗層（拡散律速層）５５４は、多孔質セラミック（耐熱性無機物質）からなる。拡散抵抗層５５４は、排ガス側電極層５５２の外側表面を覆うように、例えば、プラズマ溶射法等により形成されている。
【００８４】
隔壁部５５５は、緻密であってガスを透過させないアルミナセラミックスからなる。隔壁部５５５は大気側電極層５５３を収容する空間である「大気室５５６」を形成するように構成されている。大気室５５６には大気が導入されている。
【００８５】
上流側空燃比センサ５５には電源５５７が接続されている。電源５５７は、大気側電極層５５３側が高電位となり、排ガス側電極層５５２が低電位となるように、電圧Ｖを印加する。
【００８６】
このような構造を有する上流側空燃比センサ５５は、図４の（Ｂ）に示したように、排ガスの空燃比が理論空燃比よりもリーン側の空燃比であるとき、拡散抵抗層５５４を通って排ガス側電極層５５２に到達した酸素をイオン化して大気側電極層５５３へと通過させる。この結果、電源５５７の正極から負極へと電流Ｉが流れる。この電流Ｉの大きさは、図５に示したように、電圧Ｖを所定値Ｖｐ以上に設定すると、排ガス側電極層５５２に到達した酸素の濃度（酸素分圧、排ガスの空燃比）に比例した一定値となる。上流側空燃比センサ５５は、この電流（即ち、限界電流Ｉｐ）を電圧に変換した値を出力値Vabyfsとして出力する。
【００８７】
これに対し、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比であるとき、上流側空燃比センサ５５は、図４の（Ｃ）に示したように、大気室５５６に存在する酸素をイオン化して排ガス側電極層５５２へと導き、拡散抵抗層５５４を通って排ガス側電極層５５２に到達する未燃物（ＨＣ，ＣＯ及びＨ２等）を酸化する。この結果、電源５５７の負極から正極へと電流Ｉが流れる。この電流Ｉの大きさも、図５に示したように、電圧Ｖを所定値Ｖｐ以上に設定すると、排ガス側電極層５５２に到達した未燃物の濃度（即ち、排ガスの空燃比）に比例した一定値となる。上流側空燃比センサ５５は、この電流（即ち、限界電流Ｉｐ）を電圧に変換した値を出力値Vabyfsとして出力する。
【００８８】
即ち、空燃比検出素子５５ａは、図６に示したように、上流側空燃比センサ５５の配設位置を流れ、且つ、外側保護カバー５５ｂの流入孔５５ｂ１及び内側保護カバー５５ｃの流入孔５５ｃ１を通って空燃比検出素子５５ａに到達しているガスの空燃比（上流側空燃比abyfs、検出空燃比abyfs）に応じた出力Vabyfsを「空燃比センサ出力（空燃比センサの出力値）Vabyfs」として出力する。空燃比センサ出力Vabyfsは、空燃比検出素子５５ａに到達しているガスの空燃比が大きくなるほど（リーンとなるほど）増大する。このように、空燃比センサ出力Vabyfsは、空燃比検出素子５５ａに到達している排ガスの空燃比に実質的に比例する。
【００８９】
後述する電気制御装置６０は、図６に示した空燃比変換テーブル（マップ）Mapabyfsを記憶していて、空燃比センサの出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の検出空燃比abyfsを取得する（上流側空燃比abyfsを検出する）。このように、検出空燃比abyfsは、空燃比センサ５５の出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することによって空燃比に変換した値であるから、空燃比センサ５５の出力値Vabyfsにより表される空燃比であると表現することもできる。なお、後述するように、空燃比センサ５５は、その出力特性が変化する。空燃比変換テーブルMapabyfsは、そのような出力特性の変化が生じていない標準的な空燃比センサ５５（即ち、基準空燃比センサ）の出力値Vabyfsに基づいて予め実験により求めたテーブルである。
【００９０】
再び、図１を参照すると、下流側空燃比センサ５６は、上流側触媒４３と下流側触媒４４との間の位置においてエキゾーストパイプ４２（即ち、排気通路）に配設されている。下流側空燃比センサ５６は、周知の濃淡電池型の酸素濃度センサ（Ｏ２センサ）である。下流側空燃比センサ５６は、下流側空燃比センサ５６の配設位置を流れる排ガスの空燃比（下流側空燃比afdown）に応じた出力値Voxsを出力するようになっている。
【００９１】
下流側空燃比センサ５６の出力Voxsは、図７に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ）となり、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ）となり、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Vst（中間電圧Vst、例えば、約０．５Ｖ）となる。更に、この出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変し、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００９２】
図１に示したアクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Accpを表す信号を出力するようになっている。
【００９３】
電気制御装置６０は、「ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ（又は、ＥＥＰＲＯＭ等の不揮発性メモリ）、並びに、ＡＤコンバータを含むインターフェース等」からなる「周知のマイクロコンピュータ」である。
【００９４】
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。
【００９５】
電気制御装置６０のインターフェースは、前記センサ５１〜５７と接続され、ＣＰＵにセンサ５１〜５７からの信号を供給するようになっている。更に、そのインターフェースは、ＣＰＵの指示に応じて、各気筒の点火プラグ２４、各気筒の燃料噴射弁２５、吸気弁制御装置２６及びスロットル弁アクチュエータ３４ａ等に指示信号（駆動信号）等を送出するようになっている。なお、電気制御装置６０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３４ａに指示信号を送出するようになっている。
【００９６】
（空燃比気筒間インバランス判定の原理）
次に、第１判定装置（及び後述する他の判定装置）が採用した「空燃比気筒間インバランス判定」の原理について説明する。
【００９７】
「空燃比センサ５５の出力値Vabyfsにより表される空燃比（即ち、検出空燃比abyfs）」の「単位時間当たりの変化量」の大きさは、図８を参照しながら後に詳述するように、「ある気筒に供給される混合気の空燃比」が「残りの気筒に供給される混合気の空燃比」から乖離するほど、大きくなる。以下、残りの気筒に供給される混合気の空燃比から乖離した空燃比の混合気が供給される気筒は「インバランス気筒」とも称呼され、インバランス気筒に供給される混合気の空燃比は「インバランス気筒の空燃比」とも称呼される。更に、残りの気筒（インバランス気筒以外の気筒）は「非インバランス気筒」又は「正常気筒」とも称呼され、非インバランス気筒に供給される混合気の空燃比は「非インバランス気筒の空燃比又は正常気筒の空燃比」とも称呼される。
【００９８】
「検出空燃比abyfsの単位時間当たりの変化量」は、その単位時間が例えば４ｍ秒程度の極めて短い時間であるとき、検出空燃比abyfsの時間微分値であると言うこともできるので、「検出空燃比変化率ΔＡＦ」とも称呼される。従って、検出空燃比変化率ΔＡＦの絶対値はインバランス気筒の空燃比が正常気筒の空燃比から乖離するほど大きくなる。
【００９９】
加えて、空燃比センサ５５は保護カバー（外側の保護カバー５５ｂ及び内側の保護カバー５５ｃ）を備えている。このため、後述するように、検出空燃比変化率ΔＡＦは機関回転速度ＮＥの影響を受け難い。
【０１００】
従って、「検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量（例えば、複数の検出空燃比変化率ΔＡＦの絶対値の平均値及び複数の検出空燃比変化率ΔＡＦの絶対値のうちの最大値等）」に基づくことにより、機関回転速度ＮＥの影響を強く受けることなく、空燃比気筒間インバランス判定を精度良く実行することができる。以下、この理由について詳細に説明する。
【０１０１】
空燃比センサ５５には、各気筒からの排ガスが点火順に到達する。空燃比気筒間インバランス状態が発生していない場合、各気筒から排出され且つ空燃比センサ５５に到達する排ガスの空燃比は互いに略同一である。従って、空燃比気筒間インバランス状態が発生していない場合の空燃比センサ５５の出力値Vabyfsにより表される検出空燃比abyfsは、例えば、図８の（Ａ）に示したように変化する。即ち、空燃比気筒間インバランス状態が発生していない場合、空燃比センサ５５の出力値Vabyfsの波形は略平坦である。このため、検出空燃比変化率ΔＡＦの絶対値は小さい。
【０１０２】
一方、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態（リッチずれインバランス状態）」が発生している場合、その特定気筒の排ガスの空燃比（インバランス気筒の空燃比）と、その特定気筒以外の気筒の排ガスの空燃比（正常気筒の空燃比、非インバランス気筒の空燃比）と、は大きく相違する。
【０１０３】
従って、リッチずれインバランス状態が発生している場合の空燃比センサ５５の出力値Vabyfsにより表される検出空燃比abyfsは、例えば図８の（Ｂ）に示したように、４気筒・４サイクル・エンジンの場合に７２０°クランク角（一つの空燃比センサ５５に到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角）毎に大きく変動する。なお、「一つの空燃比センサ５５に到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角が経過する期間」は、本明細書において「単位燃焼サイクル期間」とも称呼される。
【０１０４】
より具体的に述べると、図８の（Ｂ）に示した例において、第１気筒がインバランス気筒であるとき、検出空燃比abyfsは、第１気筒からの排ガスが空燃比センサ５５の空燃比検出素子５５ａに到達したときに理論空燃比よりもリッチ側の値となり、残りの気筒からの排ガスが空燃比検出素子５５ａに到達したときに理論空燃比又は理論空燃比よりも若干だけリーン側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子５５ａに到達したときに検出空燃比abyfsが理論空燃比よりも若干だけリーン側の値に収束するのは、上述した従来の空燃比フィードバック制御に依る。
【０１０５】
他方、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態（リーンずれインバランス状態）」が発生している場合においても、空燃比センサ５５の出力値Vabyfsにより表される検出空燃比abyfsは、例えば図８の（Ｃ）に示したように、７２０°クランク角毎に大きく変動する。
【０１０６】
より具体的に述べると、図８の（Ｃ）に示した例において、検出空燃比abyfsは、第１気筒からの排ガスが空燃比検出素子５５ａに到達したときに理論空燃比よりもリーン側の値となり、残りの気筒からの排ガスが空燃比検出素子５５ａに到達したときに理論空燃比又は理論空燃比よりも若干だけリッチ側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子５５ａに到達したときに検出空燃比abyfsが理論空燃比よりも若干だけリッチ側の値に収束するのは、上述した従来の空燃比フィードバック制御に依る。
【０１０７】
図８の（Ａ）〜（Ｃ）から明らかなように、空燃比気筒間インバランス状態が発生した場合の検出空燃比abyfsの時間微分値である「検出空燃比変化率ΔＡＦ」の絶対値（角度α２〜α５の各大きさ）は、空燃比気筒間インバランス状態が発生していない場合の検出空燃比変化率ΔＡＦの絶対値（角度α１の大きさ）に比べて顕著に大きくなる。
【０１０８】
従って、検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量（例えば、微小の所定時間毎に取得される検出空燃比変化率ΔＡＦそのもの、ある期間において取得された複数の検出空燃比変化率ΔＡＦの絶対値の平均値、及び、ある期間において取得された複数の検出空燃比変化率ΔＡＦの絶対値のうちの最大値等）を「インバランス判定用パラメータとして」空燃比センサ５５の出力値Vabyfsに基づいて取得し、例えば、その空燃比変化率指示量と所定のインバランス判定用閾値とを比較すること等により空燃比気筒間インバランス判定を実行することができる。なお、実験によれば、図８の（Ｂ）に示したように、リッチずれインバランス状態が発生している場合、検出空燃比abyfsは比較的急激に減少した後に比較的緩慢に増大する。また、図８の（Ｃ）に示したように、リーンずれインバランス状態が発生している場合、検出空燃比abyfsは比較的急激に増大した後に比較的緩慢に減少する。従って、α２の大きさはα５の大きさよりも大きく、α４の大きさα３の大きさよりも大きい。
【０１０９】
次に、検出空燃比変化率ΔＡＦが機関回転速度の影響を殆ど受けない点について説明する。
【０１１０】
前述したように、空燃比センサ５５は、空燃比検出素子５５ａと、その空燃比検出素子５５ａの保護カバー（５５ｂ、５５ｃ）と、を有している。保護カバー（５５ｂ、５５ｃ）は、空燃比検出素子５５ａを覆うように、空燃比検出素子５５ａをその内部に収容する。更に、保護カバー（５５ｂ、５５ｃ）は、排気通路を流れる排ガスＥＸを保護カバー（５５ｂ、５５ｃ）の内部に流入させて空燃比検出素子５５ａに到達させるための流入孔（５５ｂ１、５５ｃ１）と、保護カバーの内部に流入した排ガスを排気通路に流出させるための流出孔（５５ｂ２、５５ｃ２）と、を有する。
【０１１１】
空燃比センサ５５は、排気集合部４１ｂ又は排気集合部４１ｂよりも下流の排気通路（且つ、上流側触媒４３の上流）に、保護カバー（５５ｂ、５５ｃ）が露呈するように配設される。より具体的には、空燃比センサ５５は、保護カバー（５５ｂ、５５ｃ）の底面が排ガスＥＸの流れと平行であり、保護カバー（５５ｂ、５５ｃ）の中心軸線は排ガスＥＸの流れと直交するように排気通路内に配設される。従って、排気通路を流れる排ガスＥＸは、図２及び図３において矢印Ａｒ１により示したように外側の保護カバー５５ｂの流入孔５５ｂ１を通って外側の保護カバー５５ｂと内側の保護カバー５５ｃとの間に流入し、矢印Ａｒ２に示したように内側の保護カバー５５ｃの流入孔５５ｃ１を通って内側の保護カバー５５ｃの内部に流入した後に、空燃比検出素子５５ａに到達する。その後、その排ガスは、矢印Ａｒ３に示したように内側の保護カバー５５ｃの流出孔５５ｃ２及び外側の保護カバー５５ｂの流出孔５５ｂ２を通って排気通路に流出する。
【０１１２】
即ち、外側の保護カバー５５ｂの流入孔５５ｂ１に到達した排気通路内の排ガスＥＸは、外側の保護カバー５５ｂの流出孔５５ｂ２近傍を流れる排気通路内の排ガスＥＸの流れにより、保護カバー（５５ｂ、５５ｃ）内へと吸い込まれる。
【０１１３】
このため、保護カバー（５５ｂ、５５ｃ）内における排ガスの流速は、外側の保護カバー５５ｂの流出孔５５ｂ２近傍を流れる排気通路内の排ガスＥＸの流速（従って、単位時間あたりの吸入空気量である吸入空気流量Ｇａ）に応じて変化する。換言すると、「ある空燃比の排ガス（第１排ガス）が流入孔５５ｂ１に到達した時点」から「その第１排ガスが空燃比検出素子５５ａに到達する時点」までの時間は、吸入空気流量Ｇａに依存するが機関回転速度ＮＥには依存しない。このことは、内側の保護カバーのみを有する空燃比センサ５５にも成立する。
【０１１４】
図９は、特定気筒リッチずれインバランス状態が発生した場合における排ガスの空燃比の時間的変化を模式的に示した図である。図９において、線Ｌ１は外側の保護カバー５５ｂの流入孔５５ｂ１に到達した排ガスの空燃比を示す。線Ｌ２、線Ｌ３及び線Ｌ４は、空燃比検出素子５５ａに到達している排ガスの空燃比を示す。但し、線Ｌ２は吸入空気流量Ｇａが比較的大きい場合、線Ｌ３は吸入空気流量Ｇａが中程度の大きさの場合、線Ｌ４は吸入空気流量Ｇａが比較的小さい場合に対応している。
【０１１５】
線Ｌ１に示したように、リッチずれを起こしている特定気筒の排ガスが時刻ｔ１にて流入孔５５ｂ１に到達すると、そのガスは流入孔（５５ｂ１、５５ｃ１）を通過し、時刻ｔ１よりも僅かに遅れた時点（時刻ｔ２）にて空燃比検出素子５５ａに到達し始める。このとき、前述したように、保護カバー（５５ｂ、５５ｃ）の内部を流れる排ガスの流速は、排気通路を流れる排ガスの流速により決定される。
【０１１６】
従って、空燃比検出素子５５ａに接触するガスの空燃比は、吸入空気流量Ｇａが大きい場合ほど時刻ｔ１により近い時点から変化し始める。更に、空燃比検出素子５５ａに接触する排ガスの空燃比は、「空燃比検出素子５５ａに新たに到達した排ガス」と「空燃比検出素子５５ａの近傍に既に存在していた排ガス」とが混合された排ガスの空燃比となる。従って、空燃比検出素子５５ａに接触（到達）する排ガスの空燃比の変化率（空燃比の時間微分値である変化速度、即ち、図９における線Ｌ２〜Ｌ４の傾きの大きさ）は吸入空気流量Ｇａが大きいほど大きくなる。
【０１１７】
その後、リッチずれを起こしていない正常気筒の排ガスが時刻ｔ３にて流入孔５５ｂ１に到達すると、そのガスは時刻ｔ３よりも僅かに遅れた時点（時刻ｔ４近傍）にて空燃比検出素子５５ａに到達し始める。「このリッチずれを起こしていない正常気筒からの排ガス」の「保護カバー（５５ｂ、５５ｃ）内における流速」も、排気通路を流れる排ガスＥＸの流速（従って、吸入空気流量Ｇａ）により決定される。従って、空燃比検出素子５５ａに接触（到達）する排ガスの空燃比は、吸入空気流量Ｇａが大きいほど迅速に増大する。
【０１１８】
なお、線Ｌ３及び線Ｌ４により示したように、吸入空気流量Ｇａが相対的に小さい場合、空燃比検出素子５５ａに接触する排ガスの空燃比が「リッチずれを起こしている特定気筒の排ガスの空燃比Ａｒｉ」に一致する時点よりも前の時点にて、「排気順がその特定気筒の次の気筒であって、リッチずれを起こしていない気筒」の排ガスが空燃比検出素子５５ａに到達する。従って、空燃比検出素子５５ａに接触する排ガスの空燃比は、特定気筒の排ガスの空燃比Ａｒｉに一致する前にリーン側へと変化し始める。
【０１１９】
一方、空燃比センサ５５の出力値Vabyfs（実際には空燃比検出素子５５ａの出力値Vabyfs）は、空燃比検出素子５５ａに到達したガスの変化に僅かに遅れながら追従するように変化する。従って、図１０に示したように、空燃比検出素子５５ａに到達している排ガスの空燃比が一点鎖線Ｌ３に示したように変化すると、空燃比センサ５５の出力値Vabyfsは実線Ｓ１に示したように変化する。
【０１２０】
図１１は、特定気筒リッチずれインバランス状態が発生した場合であって、吸入空気流量Ｇａは一定であり且つ機関回転速度ＮＥが変化したときの空燃比センサ５５の出力値Vabyfsについて説明するための図である。
【０１２１】
図１１の（Ａ）は、機関回転速度ＮＥが所定値ＮＥ１であり吸入空気流量Ｇａが所定値Ｇａ１である場合における、「外側の保護カバーの流入孔５５ｂ１に到達した排ガスの空燃比（線Ｌ１）」、「空燃比検出素子５５ａに到達しているガスの空燃比（線Ｌ３）」及び「空燃比センサ５５の出力値Vabyfs（線Ｓ１）」を示す。
【０１２２】
図１１の（Ｂ）は、機関回転速度ＮＥが所定値ＮＥ１の２倍（２・ＮＥ１）であり吸入空気流量Ｇａが所定値Ｇａ１である場合における、「外側の保護カバーの流入孔５５ｂ１に到達した排ガスの空燃比（線Ｌ５）」、「空燃比検出素子５５ａに到達しているガスの空燃比（線Ｌ６）」及び「空燃比センサ５５の出力値Vabyfs（線Ｓ２）」を示す。
【０１２３】
前述したように、保護カバー（５５ｂ、５５ｃ）内を流れる排ガスの流速は吸入空気流量Ｇａにより決定される。従って、機関回転速度ＮＥが変化しても、吸入空気流量Ｇａが変化しなければ、空燃比センサ５５の出力値Vabyfsの変化率は変化せず、そのため、検出空燃比変化率ΔＡＦ（傾き）は変化しない。更に、「リッチずれを起こしている特定気筒の排ガスが流入孔５５ｂ１に到達した時点（時刻ｔ１）から、そのガスが空燃比検出素子５５ａに到達し始める時点（時刻ｔ２）、までの時間」は、吸入空気流量Ｇａが変化しなければ、機関回転速度ＮＥが変化しても一定時間Ｔｄである。加えて、「リッチずれを起こしていない気筒の排ガスが流入孔５５ｂ１に到達した時点（時刻ｔ３）から、そのガスが空燃比検出素子５５ａに到達し始める時点（時刻ｔ４）、までの時間」は、吸入空気流量Ｇａが変化しなければ、同様に一定時間Ｔｄである。この結果、空燃比センサ５５の出力値Vabyfsは、図１１の（Ａ）及び（Ｂ）に示したように変化する。
【０１２４】
図１１の（Ａ）及び（Ｂ）から理解されるように、空燃比センサ５５の出力値Vabyfsの変化幅（Ｗ）は、機関回転速度ＮＥが大きくなるほど小さくなる。即ち、空燃比センサ５５の出力値Vabyfsの軌跡長は機関回転速度ＮＥに応じて大きく変化する。従って、上述したように、空燃比センサ５５の出力値Vabyfsの軌跡長に基づいて空燃比気筒間インバランス判定を行う場合、軌跡長と比較する参照値を機関回転速度ＮＥに応じて精度良く決定しなければならない。
【０１２５】
これに対し、検出空燃比変化率ΔＡＦは機関回転速度ＮＥの影響を殆ど受けないので、検出空燃比変化率ΔＡＦに応じて変化する値（空燃比変化率指示量）も機関回転速度ＮＥの影響を殆ど受けない。従って、空燃比変化率指示量を利用してインバランス判定を実行すれば（例えば、空燃比変化率指示量の絶対値と所定のインバランス判定用閾値との大小比較によりインバランス判定を実行すれば）、機関回転速度ＮＥに関わらず「より精度の良い空燃比気筒間インバランス判定」を実行することができる。
【０１２６】
（空燃比センサの出力特性）
更に、第１判定装置（及び後述する他の判定装置）は、空燃比センサ５５の出力特性を評価する。そこで、以下、空燃比センサ５５の出力特性について図１２の（Ａ）及び（Ｂ）を参照しながら説明する。なお、図１２の（Ａ）及び（Ｂ）は、何れも「空燃比気筒間インバランス状態が発生した場合（インバランス気筒の空燃比が正常気筒の空燃比からある程度乖離した場合）」における「空燃比センサ５５の出力値Vabyfsに基づいて得られる検出空燃比abyfsのクランク角に対する変化の様子」を示した図である。
【０１２７】
（１）空燃比センサ５５の出力ゲイン（出力値Vabyfs）が減少する出力特性変化
図１２の（Ａ）の実線Ｃ１は「基準空燃比センサ」の出力値Vabyfsにより表される検出空燃比abyfsを示している。図１２の（Ａ）の破線Ｃ２は「出力値Vabyfsが低下した（ゲインが減少した）空燃比センサ５５」の出力値Vabyfsにより表される検出空燃比abyfsを示している。
【０１２８】
図１２の（Ａ）に示したように、空燃比センサ５５の出力値Vabyfsのゲインが低下すると、その出力値Vabyfsは「出力値Vabyfsと理論空燃比に相当する値V0（Vstoich）との差の大きさが小さくなる」ように変化する。
【０１２９】
この結果、空燃比センサ５５の出力値Vabyfsのゲインが低下すると、検出空燃比変化率ΔＡＦが負となる場合における検出空燃比変化率ΔＡＦの絶対値（検出空燃比abyfsの傾きの大きさ）は、図１２の（Ａ）に矢印Ａ１により示したように低下する。同様に、空燃比センサ５５の出力値Vabyfsのゲインが低下すると、検出空燃比変化率ΔＡＦが正となる場合における検出空燃比変化率ΔＡＦの絶対値（検出空燃比abyfsの傾きの大きさ）は、図１２の（Ａ）に矢印Ａ２により示したように低下する。更に、検出空燃比abyfsの最大値（極大値）は図１２の（Ａ）に矢印Ａ３により示したように減少し、検出空燃比abyfsの最小値（極小値）は図１２の（Ａ）に矢印Ａ４により示したように増大する。
【０１３０】
従って、
・検出空燃比変化率ΔＡＦの絶対値に応じた値（インバランス判定用パラメータの一つ）と所定のインバランス判定用閾値との大小比較により、或いは、
・検出空燃比abyfsの二階微分値の絶対値に応じた値（インバランス判定用パラメータの一つ）と所定値のインバランス判定用閾値との大小比較により、或いは、
・検出空燃比abyfsの最大値又は最小値（インバランス判定用パラメータの一つ）と所定のインバランス判定用閾値との大小比較等により、或いは、
・検出空燃比abyfsの軌跡長（インバランス判定用パラメータの一つ）と所定のインバランス判定用閾値との大小比較等により、
空燃比気筒間インバランス状態が発生したか否かを判定する装置において、空燃比センサ５５の出力特性が「出力ゲインが減少する」ように変化すると、精度の良いインバランス判定を行うことができない虞がある。
【０１３１】
（２）空燃比センサ５５の応答性が低下する出力特性変化
図１２の（Ｂ）の実線Ｃ３は「基準空燃比センサ」の出力値Vabyfsにより表される検出空燃比abyfsを示している。図１２の（Ｂ）の破線Ｃ４は「出力応答性が低下した空燃比センサ５５」の出力値Vabyfsにより表される検出空燃比abyfsを示している。
【０１３２】
このように、空燃比センサ５５の応答性が低下すると、検出空燃比変化率ΔＡＦが負となる場合における検出空燃比変化率ΔＡＦの絶対値（検出空燃比abyfsの傾きの大きさ）は、図１２の（Ｂ）に矢印Ａ５により示したように低下する。同様に、検出空燃比変化率ΔＡＦが正となる場合における検出空燃比変化率ΔＡＦの絶対値（検出空燃比abyfsの傾きの大きさ）は、図１２の（Ｂ）に矢印Ａ６により示したように低下する。更に、検出空燃比abyfsの最大値（極大値）は図１２の（Ｂ）に矢印Ａ７により示したように減少し、検出空燃比abyfsの最小値（極小値）は図１２の（Ｂ）に矢印Ａ８により示したように増大する。
【０１３３】
従って、上述したようなインバランス判定用パラメータとインバランス判定用閾値との大小比較により、空燃比気筒間インバランス状態が発生したか否かを判定する装置において、空燃比センサ５５の出力特性が「応答性が低下する」ように変化すると、精度の良いインバランス判定を行うことができない虞がある。
【０１３４】
更に、空燃比センサ５５の応答性が低下すると、検出空燃比abyfsの最大値が発生するクランク角が図１２の（Ｂ）に矢印Ａ９により示したように遅れる。同様に、空燃比センサ５５の応答性が低下すると、検出空燃比abyfsの最小値が発生するクランク角が図１２の（Ｂ）に矢印Ａ１０により示したように遅れる。従って、判定装置が、検出空燃比abyfsの最大値及び／又は最小値の発生クランク角（発生時点）に基づいてインバランス気筒を特定するように構成されている場合、インバランス気筒を精度良く特定できない虞もある。
【０１３５】
（空燃比センサ適正判定の概要）
そこで、第１判定装置は、以下に述べる方法によって、空燃比センサ５５の出力特性がインバランス判定を行うことに対して適切であるか否かの判定（空燃比センサ適正判定、センサ適正判定）を実行するようになっている。
【０１３６】
具体的に述べると、第１判定装置は、先ず、空燃比気筒間インバランス状態を強制的に発生させる。即ち、第１判定装置は、図１３の（Ａ）に示したように、特定気筒（例えば、第１気筒）に噴射される燃料量を増量することにより、「特定気筒に供給される混合気の空燃比（特定気筒の空燃比、強制インバランス気筒の空燃比）」を「他の気筒（第２〜第４気筒）に供給される混合気の空燃比（非強制インバランス気筒の空燃比）」よりもリッチ側の空燃比に強制的に設定する。他の気筒の空燃比は理論空燃比に設定される。このような状態を、以下、「強制インバランス状態」という。
【０１３７】
なお、図１３の（Ｂ）に示したように、第１判定装置は、強制インバランス気筒に対する燃料噴射量をＹ％（例えば、４５％）だけ増量することにより強制インバランス気筒の空燃比を理論空燃比よりも所定空燃比だけリッチ側に偏移させ、非強制インバランス気筒のそれぞれに対する燃料噴射量を（Ｙ／３）％だけ減量することにより非強制インバランス気筒の空燃比を理論空燃比よりもリーン側に設定してもよい。これにより、機関の全体に供給される混合気の空燃比の平均を理論空燃比に維持できるので、エミッションの悪化を回避することができる。
【０１３８】
次に、第１判定装置は、強制インバランス状態において、検出空燃比変化率ΔＡＦを取得する。より具体的には、一定サンプリング時間ｔｓの経過毎に空燃比センサ５５の出力値Vabyfsを取得し、その出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより検出空燃比abyfsを取得する。そして、「現時点において取得した検出空燃比abyfs（今回の検出空燃比abyfs（ｎ））」から「一定サンプリング時間ｔｓの経過前に取得しておいた検出空燃比abyfs（前回の検出空燃比abyfs（ｎ−１））」を減じることにより「現時点における検出空燃比変化率ΔＡＦ（今回の検出空燃比変化率ΔＡＦ（ｎ））」を取得する。
【０１３９】
次に、第１判定装置は、空燃比センサ５５の出力特性を表す「空燃比センサ評価用パラメータ（評価用パラメータ）」を取得する。より具体的には、第１判定装置は、「一定サンプリング時間ｔｓよりも長い評価データ収集期間において得られた複数の検出空燃比変化率ΔＡＦのそれぞれの絶対値｜ΔＡＦ｜の平均値」を評価用パラメータとして算出する。評価データ収集期間は、単位燃焼サイクル期間の自然数倍の期間であることが望ましい。
【０１４０】
その後、第１判定装置は、予めＲＯＭに格納されている基準パラメータをＲＯＭから読み出す。基準パラメータは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに上記強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータに対応するパラメータである。即ち、基準パラメータは、上記強制インバランス状態において、空燃比センサ５５の出力特性が基準空燃比センサの出力特性と一致している場合における「一定サンプリング時間ｔｓよりも長い評価データ収集期間において得られた複数の検出空燃比変化率ΔＡＦのそれぞれの絶対値｜ΔＡＦ｜の平均値」である。
【０１４１】
そして、第１判定装置は、取得した評価用パラメータと読み出した基準パラメータとを比較し、それらの差の絶対値が所定の閾値未満である場合に空燃比センサ５５は「インバランス判定を行うことに対して適切である」と判定し、それらの差の絶対値が所定の閾値以上である場合に空燃比センサ５５は「インバランス判定を行うことに対して適切でない（空燃比センサ５５は不適切である）」と判定する。
【０１４２】
第１判定装置は、空燃比センサ５５が「インバランス判定を行うことに対して適切である」と判定した場合、上述した空燃比変化率指示量に基づく空燃比気筒間インバランス判定を実行する。これに対し、第１判定装置は、空燃比センサ５５が「インバランス判定を行うことに対して適切でない」と判定した場合、上述した空燃比変化率指示量に基づく空燃比気筒間インバランス判定の実行を禁止する。空燃比気筒間インバランス判定の実行を禁止することには、空燃比気筒間インバランス判定を実行しても、その判定結果を無効とすることを含む。以上が、第１判定装置の作動の概要である。
【０１４３】
（作動）
次に、第１判定装置の実際の作動について説明する。
【０１４４】
＜燃料噴射量制御＞
電気制御装置６０のＣＰＵは、図１４に示した「燃料噴射量Ｆｉの計算及び燃料噴射の指示を行うルーチン」を、所定の気筒のクランク角が吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、その気筒（以下、「燃料噴射気筒」とも称呼する。）に対して繰り返し実行するようになっている。
【０１４５】
従って、所定のタイミングになると、ＣＰＵはステップ１４００から処理を開始し、ステップ１４１０に進んで強制インバランス状態フラグＸＥＮの値が「１」であるか否かを判定する。強制インバランス状態フラグＸＥＮは、その値が「１」であるとき「強制インバランス状態である。」ことを示し、その値が「０」であるとき「強制インバランス状態でない。」ことを示す。
【０１４６】
強制インバランス状態フラグＸＥＮの値は、機関１０が搭載された車両のイグニッション・キー・スイッチがオフからオンへと変更されたときに実行されるイニシャルルーチンにおいて「０」に設定される。更に、強制インバランス状態フラグＸＥＮの値は、後述するルーチンにより強制インバランス状態が発生させられたときに「１」に設定され、強制インバランス状態が終了させられたときに「０」に設定される。
【０１４７】
いま、強制インバランス状態フラグＸＥＮの値が「１」であると仮定する。この場合、ＣＰＵはステップ１４１０にて「Ｙｅｓ」と判定してステップ１４２０に進み、現時点における燃料噴射気筒が第Ｎ気筒であるか否かを判定する。値「Ｎ」は、１〜４の自然数であり、第１判定装置においては、後述するルーチンにより「１」に設定される。従って、ＣＰＵはステップ１４２０にて、燃料噴射気筒が第１気筒であるか否かを判定する。
【０１４８】
そして、燃料噴射気筒が第Ｎ気筒（第１気筒）であると、ＣＰＵはステップ１４２０にて「Ｙｅｓ」と判定してステップ１４３０に進み、燃料補正係数Ｋenの値を「１＋α」に設定する。燃料補正係数Ｋenは、強制インバランス状態を発生させるための係数（燃料噴射量の補正量）である。第１判定装置において、値「α」は、後述するルーチンにより正の所定値（例えば、０．４５）に設定される。その後、ＣＰＵは、以下に述べるステップ１４５０乃至ステップ１４９０の処理を順に行い、ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１４９】
一方、ＣＰＵがステップ１４２０の処理を実行する時点において、燃料噴射気筒が第Ｎ気筒（第１気筒）でなければ、ＣＰＵはステップ１４２０にて「Ｎｏ」と判定してステップ１４４０に進み、燃料補正係数Ｋenの値を「１」に設定する。その後、ＣＰＵは、以下に述べるステップ１４５０乃至ステップ１４９０の処理を順に行い、ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１５０】
他方、ＣＰＵがステップ１４１０の処理を実行する時点において、強制インバランス状態フラグＸＥＮの値が「１」でなければ、ＣＰＵはステップ１４１０にて「Ｎｏ」と判定してステップ１４４０に進み、燃料補正係数Ｋenの値を「１」に設定する。その後、ＣＰＵは、以下に述べるステップ１４５０乃至ステップ１４９０の処理を順に行い、ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１５１】
ステップ１４５０：ＣＰＵは、「エアフローメータ５１により計測された吸入空気流量Ｇａ、機関回転速度ＮＥ及びルックアップテーブルMapMc」に基いて「燃料噴射気筒に吸入される空気量」である「筒内吸入空気量Ｍｃ（ｋ）」を取得する。筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。筒内吸入空気量Ｍｃ（ｋ）は、周知の空気モデル（吸気通路における空気の挙動を模した「物理法則に従って構築されるモデル」）により算出されてもよい。
【０１５２】
ステップ１４６０：ＣＰＵは、筒内吸入空気量Ｍｃ（ｋ）を上流側目標空燃比abyfrで除することにより基本燃料噴射量Ｆｂａｓｅを求める。上流側目標空燃比abyfrは、ここでは理論空燃比stoichに設定されている。
【０１５３】
ステップ１４７０：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅを空燃比フィードバック量ＤＦｉにより補正する（空燃比フィードバック量ＤＦｉを加算する）ことにより、ＦＢ後噴射量（フィードバック補正後燃料噴射量）Ｆｆｂｉを算出する。なお、空燃比フィードバック量ＤＦｉは、強制インバランス状態フラグＸＥＮの値が「１」であるとき「０」に設定される。但し、空燃比フィードバック量ＤＦｉは、強制インバランス状態フラグＸＥＮの値が「１」であるか否かに拘わらず、以下のようにして算出されてもよい。
【０１５４】
空燃比フィードバック量ＤＦｉの算出方法は周知である。空燃比フィードバック量ＤＦｉは、機関に供給される混合気の空燃比を理論空燃比に一致させるための補正量であり、例えば、所定の空燃比フィードバック条件が成立しているとき、以下のようにして求めることができる。なお、空燃比フィードバック量ＤＦｉは、空燃比フィードバック条件が成立していないとき、「０」に設定される。
【０１５５】
ＣＰＵは、下記（１）式に従ってフィードバック制御用出力値Vabyfcを取得する。（１）式において、Vabyfsは上流側空燃比センサ５５の出力、Vafsfbは下流側空燃比センサ５６の出力Voxsに基いて算出されるサブフィードバック量である。サブフィードバック量Vafsfb算出方法については、後述する。
Vabyfc＝Vabyfs＋Vafsfb    …（１）
【０１５６】
ＣＰＵは、下記（２）式に示したように、上記フィードバック制御用出力値Vabyfcを図７に示した空燃比変換テーブルMapabyfsに適用することにより、フィードバック制御用空燃比abyfscを得る。
abyfsc＝Mapabyfs（Vabyfc）    …（２）
【０１５７】
ＣＰＵは、下記（３）式乃至（５）式に従って、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す「筒内燃料供給量偏差ＤＦｃ」を算出する。
筒内吸入空気量Ｍｃ（ｋ−Ｎ）は、「現時点よりもＮサイクル前の時点における筒内吸入空気量」である。
筒内燃料供給量Ｆｃ（ｋ−Ｎ）は、「現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量」である。
目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）は、「現時点よりもＮサイクル前の時点において燃焼室２１に供給されるべきであった燃料の量」である。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／abyfsc    …（３）
Ｆｃｒ＝Ｍｃ（ｋ−Ｎ）／abyfr             …（４）
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）  …（５）
【０１５８】
ＣＰＵは、下記（６）式により、空燃比フィードバック量ＤＦｉを算出する。
Ｇｐは予め設定された比例ゲインである。
Ｇｉは予め設定された積分ゲインである。
ＳＤＦｃは「筒内燃料供給量偏差ＤＦｃの積分値」である。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（６）
【０１５９】
ＣＰＵは、例えば、以下のようにしてサブフィードバック量Vafsfbを算出する。
ＣＰＵは、下記（７）式に従って、「理論空燃比に対応した下流側目標値Voxsref」と「下流側空燃比センサ５６の出力Voxs」との差である「出力偏差量DVoxs」を取得する。
DVoxs＝Voxsref−Voxs    …（７）
【０１６０】
ＣＰＵは、下記（８）式に従って、サブフィードバック量Vafsfbを求める。
Kpは予め設定された比例ゲイン（比例定数）である。
Kiは予め設定された積分ゲイン（積分定数）である。
Kdは予め設定された微分ゲイン（微分定数）である。
SDVoxsは出力偏差量DVoxsの時間積分値である。
DDVoxsは出力偏差量DVoxsの時間微分値である。
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs＋Kd・DDVoxs    …（８）
【０１６１】
即ち、ＣＰＵは、下流側空燃比センサ５６の出力Voxsを下流側目標値Voxsrefに一致させるための比例・積分・微分（ＰＩＤ）制御により「サブフィードバック量Vafsfb」を算出する。このサブフィードバック量Vafsfbは、上述した（１）式に示したように、フィードバック制御用出力値Vabyfcを算出するために使用される。
【０１６２】
ステップ１４８０：ＣＰＵは、ＦＢ後噴射量Ｆｆｂｉに燃料補正係数Ｋenを乗じることにより、最終燃料噴射量Ｆｉを算出する。
【０１６３】
ステップ１４９０：ＣＰＵは、最終燃料噴射量（指示噴射量）Ｆｉの燃料が「燃料噴射気筒に対応して設けられている燃料噴射弁２５」から噴射されるように、その燃料噴射弁２５に指示信号を送出する。
【０１６４】
従って、現時点において強制インバランス状態フラグＸＥＮの値が「１」であって、燃料噴射気筒が第Ｎ気筒（＝第１気筒）であれば、燃料噴射量はαに応じた量だけ増量される。この結果、第Ｎ気筒は強制インバランス気筒となる。
【０１６５】
これに対し、強制インバランス状態フラグＸＥＮの値が「１」であっても燃料噴射が第Ｎ気筒以外の気筒（第２〜第４気筒）であれば、燃料噴射量は増量も減量もされず、理論空燃比を得るために必要な燃料噴射量に設定される。従って、第Ｎ気筒以外の気筒は、非強制インバランス気筒となる。
【０１６６】
更に、強制インバランス状態フラグＸＥＮの値が「１」でなければ、総ての気筒のそれぞれの燃料噴射量は増量も減量もされず、理論空燃比を得るために必要な燃料噴射量に設定される。
【０１６７】
＜判定許可フラグＸkyokaの設定＞
ＣＰＵは、判定許可フラグＸkyokaの値に基づいて、後述する空燃比センサの適正判定及びインバランス判定を実行するか否かを決定するようになっている。この判定許可フラグＸkyokaは、ＣＰＵが図１５にフローチャートにより示した「判定許可フラグ設定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行することにより設定される。なお、判定許可フラグＸkyokaの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０１６８】
所定のタイミングになると、ＣＰＵは図１５のステップ１５００から処理を開始してステップ１５１０に進み、絶対クランク角ＣＡが０°クランク角（＝７２０°クランク角）であるか否かを判定する。
【０１６９】
ＣＰＵがステップ１５１０の処理を行う時点において、絶対クランク角ＣＡが０°クランク角でなければ、ＣＰＵはそのステップ１５１０にて「Ｎｏ」と判定してステップ１５４０に直接進む。
【０１７０】
これに対し、ＣＰＵがステップ１５１０の処理を行う時点において、絶対クランク角ＣＡが０°クランク角であると、ＣＰＵはそのステップ１５１０にて「Ｙｅｓ」と判定してステップ１５２０に進み、判定実行条件が成立しているか否かを判定する。
【０１７１】
この判定実行条件は、以下の総ての条件（条件Ｃ１乃至条件Ｃ５）が成立したときに成立する。なお、判定実行条件は、条件Ｃ１及び条件Ｃ３の双方が成立したとき、成立する条件であってもよい。また、判定実行条件は、条件Ｃ３が成立しているときに成立する条件であってもよく、条件Ｃ３及び「条件Ｃ３を除く何れかの条件の一つ以上の条件」が成立する条件であってもよい。もちろん、判定実行条件は、他の条件が更に成立しているときに成立する条件であってもよい。
【０１７２】
（条件Ｃ１）吸入空気流量Ｇａが、低側吸入空気流量閾値（第１閾値空気流量）Ｇａ１ｔｈよりも大きく、且つ、高側吸入空気流量閾値（第２閾値空気流量）Ｇａ２ｔｈよりも小さい。なお、高側吸入空気流量閾値Ｇａ２ｔｈは低側吸入空気流量閾値Ｇａ１ｔｈよりも大きい値である。
【０１７３】
（条件Ｃ２）機関回転速度ＮＥが、低側機関回転速度閾値ＮＥ１ｔｈよりも大きく、且つ、高側機関回転速度閾値ＮＥ２ｔｈよりも小さい。なお、高側機関回転速度閾値ＮＥ２ｔｈは低側機関回転速度閾値ＮＥ１ｔｈよりも大きい値である。
【０１７４】
（条件Ｃ３）フューエルカット中でない。
（条件Ｃ４）メインフィードバック制御条件が成立していて、メインフィードバック制御中である。
（条件Ｃ５）サブフィードバック制御条件が成立していて、サブフィードバック制御中である。
【０１７５】
ＣＰＵがステップ１５２０の処理を行う時点において、判定実行条件が成立していなければ、ＣＰＵはそのステップ１５２０にて「Ｎｏ」と判定し、ステップ１５４０に直接進む。
【０１７６】
これに対し、ＣＰＵがステップ１５２０の処理を行う時点において、判定実行条件が成立していると、ＣＰＵはそのステップ１５２０にて「Ｙｅｓ」と判定してステップ１５３０に進み、判定許可フラグＸkyokaの値を「１」に設定する。その後、ＣＰＵはステップ１５４０に進む。
【０１７７】
ＣＰＵはステップ１５４０にて、上記判定実行条件が不成立であるか否かを判定する。そして、判定実行条件が不成立であると、ＣＰＵはそのステップ１５４０からステップ１５５０に進み、判定許可フラグＸkyokaの値を「０」に設定し、ステップ１５９５に進んで本ルーチンを一旦終了する。これに対し、ＣＰＵがステップ１５４０の処理を行う時点において、判定実行条件が成立していれば、ＣＰＵはそのステップ１５４０からステップ１５９５へと直接進んで本ルーチンを一旦終了する。
【０１７８】
このように、判定許可フラグＸkyokaは、絶対クランク角が０°クランク角になった時点において判定実行条件が成立しているときに「１」に設定され、判定実行条件が不成立になった時点において「０」に設定される。
【０１７９】
＜空燃比センサの適正判定＞
次に、「空燃比センサ適正判定」を実行するための処理について説明する。ＣＰＵは、所定時間（４ｍｓ＝４ミリ秒＝所定の一定サンプリング時間ｔｓ）が経過する毎に、図１６にフローチャートにより示した「空燃比センサ適正判定ルーチン」を実行するようになっている。
【０１８０】
従って、所定のタイミングになると、ＣＰＵはステップ１６００から処理を開始し、ステップ１６０５に進んで「空燃比センサ５５の適正判定（空燃比センサ適正判定、空燃比センサ特性評価）が未完了であるか否か」を判定する。具体的には、センサ適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定する。このセンサ適正判定終了フラグＸＳＯＫの値は、上述したイニシャルルーチンにおいて「０」に設定され、且つ、後述するステップ１６７０乃至ステップ１６８０にて空燃比センサ５５の適正判定がなされたとき、「１」又は「２」に設定される。
【０１８１】
ＣＰＵがステップ１６０５の処理を実行する時点において、空燃比センサ適正判定が完了していれば（即ち、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値であると）、ＣＰＵはステップ１６０５にて「Ｎｏ」と判定し、ステップ１６９５に直接進んで本ルーチンを一旦終了する。
【０１８２】
これに対し、ＣＰＵがステップ１６０５の処理を実行する時点において、空燃比センサ適正判定が完了していなければ（即ち、センサ適正判定終了フラグＸＳＯＫの値が「０」であると）、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、ステップ１６１０に進んで判定実行条件が成立しているか否かを判定する。具体的には、ＣＰＵはステップ１６１０にて判定許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０１８３】
このとき、判定許可フラグＸkyokaの値が「１」であれば、ＣＰＵは以下に述べるステップ１６１５乃至ステップ１６４５の処理を順に行い、ステップ１６５０に進む。
【０１８４】
ステップ１６１５：ＣＰＵは、強制インバランス状態（この場合、強制リッチインバランス状態）を発生させるために「特定気筒（本例においては、第１気筒）の燃料噴射量を他の気筒よりも増大させるための処理」を行う。具体的に述べると、ＣＰＵは、値「Ｎ」を「１」に設定し、強制インバランス状態フラグＸＥＮの値を「１」に設定し、値「α」を正の所定値αｐ（例えば、０．４５）に設定する。これにより、第Ｎ気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ増量される（図１４のステップ１４１０乃至ステップ１４４０、ステップ１４８０を参照。）。
【０１８５】
ステップ１６２０：ＣＰＵは、その時点の空燃比センサ５５の出力値VabyfsをＡＤ変換することにより取得する。
ステップ１６２５：ＣＰＵは、現時点においてＲＡＭに格納されている検出空燃比abyfsを前回の検出空燃比abyfsold（前回の検出空燃比abyfs（ｎ−１））としてＲＡＭに記憶する。即ち、前回の検出空燃比abyfsoldは、現時点から４ｍｓ（サンプリング時間ｔｓ）前の時点における検出空燃比abyfsである。
【０１８６】
ステップ１６３０：ＣＰＵは、ステップ１６２０にて取得した空燃比センサ出力Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、今回の検出空燃比abyfs（abyfs（ｎ））を取得する。
ステップ１６３５：ＣＰＵは、「ステップ１６３０にて取得した今回の検出空燃比abyfs」から「ステップ１６２５にて格納した前回の検出空燃比abyfsold」を減じることにより、検出空燃比変化率ΔＡＦ（今回の検出空燃比変化率ΔＡＦ（ｎ）＝abyfs（ｎ）−abyfs（ｎ−１））を取得する。
【０１８７】
この検出空燃比変化率ΔＡＦは、図１７の（Ａ）及び（Ｂ）に示したように、サンプリング時間ｔｓ（＝４ｍｓ）における検出空燃比abyfsの変化量ΔＡＦである。更に、サンプリング時間ｔｓが４ｍｓと短いので、検出空燃比変化率ΔＡＦは、実質的に検出空燃比abyfsの時間微分値ｄ（abyfs）/ｄｔに比例し、従って、検出空燃比abyfsが形成する波形の傾きαを表す。
【０１８８】
ステップ１６４０：ＣＰＵはカウンタＣｓの値を「１」だけ増大する。なお、カウンタＣｓは上述したイニシャルルーチンにおいて「０」に設定され、且つ、判定実行条件が成立していないときにも「０」に設定される（図１６のステップ１６９０を参照。）。
【０１８９】
ステップ１６４５：ＣＰＵは、ステップ１６４５にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓ番目のデータΔＡＦ（Ｃｓ）として格納する。例えば、現時点が「判定許可フラグＸkyokaの値が「０」から「１」へと変更になった直後の時点」であるとすると、カウンタＣｓの値は「１」である（ステップ１６９０及びステップ１６４０を参照。）。従って、ステップ１６３５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦ（１）として格納される。
【０１９０】
次に、ＣＰＵはステップ１６５０にて空燃比センサ５５の評価条件が成立しているか否かを判定する。より具体的に述べると、ＣＰＵはステップ１６５０にてカウンタＣｓの値が閾値Ｃｓｔｈ以上であるか否かを判定する。閾値Ｃｓｔｈは、検出空燃比変化率ΔＡＦのデータ数が、空燃比センサ５５の出力特性を判定するのに充分な数となるように定められる。なお、閾値Ｃｓｔｈは、想定される一つの単位燃焼サイクル期間において取得される検出空燃比変化率ΔＡＦのデータ数以上となるように定められていることが望ましい。
【０１９１】
このとき、空燃比センサ５５の評価条件が成立していなければ（即ち、カウンタＣｓの値が閾値Ｃｓｔｈ未満であれば）、ＣＰＵはステップ１６５０にて「Ｎｏ」と判定し、ステップ１６９５に直接進んで本ルーチンを一旦終了する。
【０１９２】
以上の処理は、センサ適正判定終了フラグＸＳＯＫの値が「０」であり、且つ、判定許可フラグＸkyokaの値が「１」である状態が継続している期間、繰り返し実行される。従って、ステップ１６４０にてカウンタＣｓの値が増大され、ステップ１６４５にて検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦ（Ｃｓ）として格納されて行く。
【０１９３】
所定の時間が経過すると、カウンタＣｓの値は閾値Ｃｓｔｈに到達する。このとき、ＣＰＵがステップ１６５０の処理を実行すると、ＣＰＵはそのステップ１６５０にて「Ｙｅｓ」と判定し、以下に述べるステップ１６５５乃至ステップ１６６５の処理を実行した後、ステップ１６６５に進む。
【０１９４】
ステップ１６５５：ＣＰＵは、強制インバランス状態フラグＸＥＮの値を「０」に設定する。これにより、強制インバランス状態が終了する（図１４のステップ１４１０及びステップ１４４０を参照。）。なお、このとき、ＣＰＵは値αを「０」に設定してもよい。
【０１９５】
ステップ１６６０：ＣＰＵは、空燃比センサ５５の出力特性が「空燃比気筒間インバランス判定を実行するのに」適正であるか否かを判定するための「空燃比センサ評価用パラメータ（データ）」を、データΔＡＦ（ｍ）（ｍは１〜Ｃｓｔｈの自然数）に基づいて算出する。
【０１９６】
より具体的に述べると、ＣＰＵは複数のデータΔＡＦ（ｍ）の総和をカウンタＣｓ（現時点においては、閾値Ｃｓｔｈと等しい。）により除することによって、検出空燃比変化率ΔＡＦの絶対値の平均値ＡｖｅΔＡＦを評価用パラメータとして算出する。
【０１９７】
ステップ１６６５：ＣＰＵは、上述した基準パラメータΔＡＦst（基準値）をＲＯＭから読み出す。なお、ＣＰＵは、以下のように基準パラメータΔＡＦstを読み出してもよい。
・ＣＰＵは、評価用パラメータＡｖｅΔＡＦの基礎となるデータである検出空燃比変化率ΔＡＦを取得した期間の「機関回転速度ＮＥ及び／又は吸入空気流量Ｇａ」の平均値を評価用データ取得中機関状態パラメータとして求める。
・基準パラメータΔＡＦstを評価用データ取得中機関状態パラメータ別に予め求め、テーブル形成にてＲＯＭに格納しておく。
・ＣＰＵは、実際の評価用データ取得中機関状態パラメータに応じた基準パラメータΔＡＦstを前記テーブルから読み出す。
【０１９８】
次に、ＣＰＵはステップ１６７０に進み、「評価用パラメータＡｖｅΔＡＦと基準パラメータΔＡＦstとの差の絶対値Ｄ」が「所定の評価用閾値Ｄｔｈ」よりも大きいか否かを判定する。即ち、ＣＰＵは、評価用パラメータＡｖｅΔＡＦと基準パラメータΔＡＦstとの比較を行う。
【０１９９】
そして、ＣＰＵは、絶対値Ｄが閾値Ｄｔｈよりも大きいとき、空燃比センサ５５の出力特性が基準空燃比センサの出力特性から大きく乖離していて、空燃比センサ５５（空燃比センサ５５の出力特性）は「空燃比気筒間インバランス判定にとって適正ではない」と判定する。
【０２００】
この場合、ＣＰＵはステップ１６７０にて「Ｙｅｓ」と判定してステップ１６７５に進み、センサ適正判定終了フラグＸＳＯＫの値を「２」に設定する。換言すると、センサ適正判定終了フラグＸＳＯＫの値が「２」であることは、空燃比センサ５５がインバランス判定に不適切なセンサであると判定されたことを示す。その後、ＣＰＵはステップ１６９５に進んで本ルーチンを一旦終了する。
【０２０１】
一方、ＣＰＵがステップ１６７０の処理を実行する時点において、絶対値Ｄが閾値Ｄｔｈ以下であるならば、ＣＰＵは、空燃比センサ５５の出力特性は基準空燃比センサの出力特性に実質的に等しく、よって、「空燃比センサ５５は空燃比気筒間インバランス判定にとって適正である」と判定する。この場合、ＣＰＵはステップ１６７０にて「Ｎｏ」と判定してステップ１６８０に進み、センサ適正判定終了フラグＸＳＯＫの値を「１」に設定する。換言すると、センサ適正判定終了フラグＸＳＯＫの値が「１」であることは、「空燃比センサ５５がインバランス判定に適切なセンサである。」と判定されたことを示す。その後、ＣＰＵはステップ１６９５に進んで本ルーチンを一旦終了する。
【０２０２】
ところで、ＣＰＵがステップ１６１０の処理を実行する時点において、判定許可フラグＸkyokaの値が「０」であると、ＣＰＵはそのステップ１６１０にて「Ｎｏ」と判定し、以下に述べるステップ１６８５、ステップ１６９０及びステップ１６９２の処理を順に行い、ステップ１６９５に直接進んで本ルーチンを一旦終了する。
【０２０３】
ステップ１６８５：ＣＰＵは、強制インバランス状態フラグＸＥＮの値を「０」に設定する。なお、このとき、ＣＰＵは値αを「０」に設定してもよい。
ステップ１６９０：ＣＰＵは、カウンタＣｓの値を「０」に設定する（クリアする）。
ステップ１６９２：ＣＰＵは、それまでに得られているデータΔＡＦ（ｍ）（ｍは１〜Ｃｓまでの自然数）を総て「０」に設定する（クリアする）。
【０２０４】
＜空燃比気筒間インバランス判定＞
次に、「空燃比気筒間インバランス判定」を実行するための処理について説明する。ＣＰＵは、４ｍｓ（４ミリ秒＝所定の一定サンプリング時間ｔｓ）が経過する毎に、図１８にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を実行するようになっている。以下、場合分けしながら説明を続ける。
【０２０５】
（場合１：センサ適正判定終了フラグＸＳＯＫ及び判定許可フラグＸkyokaの双方が「１」である場合）
所定のタイミングになると、ＣＰＵはステップ１８００から処理を開始してステップ１８０２に進み、センサ適正判定終了フラグＸＳＯＫの値が「１」であるか否かを判定する。上記仮定によれば、ＣＰＵはステップ１８０２にて「Ｙｅｓ」と判定してステップ１８０４に進み、判定許可フラグＸkyokaの値が「１」であるか否かを判定する。上記仮定によれば、ＣＰＵはステップ１８０４にて「Ｙｅｓ」と判定し、以下に述べるステップ１８０６乃至ステップ１８１６の処理を順に行ってステップ１８２２に進む。
【０２０６】
ステップ１８０６：ＣＰＵは、その時点の空燃比センサの出力値VabyfsをＡＤ変換することにより取得する。
ステップ１８０８：ＣＰＵは、その時点の検出空燃比abyfs（上流側空燃比abyfs）を前回の検出空燃比abyfsoldとして記憶する。即ち、前回の検出空燃比abyfsoldは、現時点から４ｍｓ（サンプリング時間ｔｓ）前の時点における検出空燃比abyfsである。
ステップ１８１０：ＣＰＵは、空燃比センサ５５の出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、今回の検出空燃比abyfsを取得する。
【０２０７】
ステップ１８１２：ＣＰＵはカウンタＣｐの値を「１」だけ増大する。カウンタＣｐの値は、後述するステップ１８１６にて「積算値ＳΔＡＦに加算された検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜」のデータ数（個数）を表す。なお、カウンタＣｐは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２０８】
ステップ１８１４：ＣＰＵは、今回の検出空燃比abyfsから前回の検出空燃比abyfsoldを減じることによって検出空燃比変化率ΔＡＦを求める。
【０２０９】
ステップ１８１６：ＣＰＵは、この時点における検出空燃比変化率ΔＡＦの積算値ＳΔＡＦに、ステップ１８１４にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、積算値ＳΔＡＦを更新する。積算値ＳΔＡＦに「検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜」を積算する理由は、図８の（Ｂ）及び（Ｃ）からも理解されるように、空燃比気筒間インバランス状態が発生しているとき、検出空燃比変化率ΔＡＦが正の値にも負の値にもなるからである。なお、積算値ＳΔＡＦも、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２１０】
次に、ＣＰＵはステップ１８２２に進み、基準気筒（本例では第１気筒）の圧縮上死点を基準としたクランク角ＣＡ（絶対クランク角ＣＡ）が７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ１８２２にて「Ｎｏ」と判定してステップ１８９５に直接進み、本ルーチンを一旦終了する。
【０２１１】
なお、ステップ１８２２は、検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜の平均値を求めるための最小単位の期間（単位燃焼サイクル期間）を定めるステップであり、ここでは７２０°クランク角がその最小期間に相当する。７２０°クランク角は、一つの空燃比センサ５５に到達する排ガスを排出している総ての気筒（本例における第１〜第４気筒）において各一回の燃焼行程が終了するのに要するクランク角である。もちろん、この最小期間は７２０°クランク角よりも短くてもよいが、サンプリング時間ｔｓの複数倍の長さ以上の期間であることが望ましい。即ち、最小単位の期間内に複数個の検出空燃比変化率ΔＡＦが取得されるように、その最小単位の期間が定められていることが望ましい。
【０２１２】
一方、ＣＰＵがステップ１８２２の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ１８２２にて「Ｙｅｓ」と判定し、以下に述べるステップ１８２４乃至ステップ１８３０の処理を順に行い、ステップ１８３２に進む。
【０２１３】
ステップ１８２４：ＣＰＵは、積算値ＳΔＡＦをカウンタＣｐの値により除することにより、検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜の平均値（第１平均値）Ａｖｅ１を算出する。
【０２１４】
ステップ１８２６：ＣＰＵは、積算値ＳΔＡＦを「０」に設定（クリア）し、カウンタＣｐの値を「０」に設定（クリア）する。
【０２１５】
ステップ１８２８：ＣＰＵは、第１平均値Ａｖｅ１の積算値ＳＡｖｅ１を更新する。より具体的には、ＣＰＵはその時点の「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」に、ステップ１８２４にて新たに取得された今回の第１平均値Ａｖｅ１を加えることにより、今回の「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」を算出する。
【０２１６】
ステップ１８３０：ＣＰＵは、カウンタＣｎの値を「１」だけ増大する。カウンタＣｎの値は「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」に加算された第１平均値Ａｖｅ１のデータ数（個数）を表す。なお、カウンタＣｎは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２１７】
次に、ＣＰＵはステップ１８３２に進み、カウンタＣｎの値が閾値Ｃｎｔｈ以上であるか否かを判定する。このとき、カウンタＣｎの値が閾値Ｃｎｔｈ未満であると、ＣＰＵはそのステップ１８３２にて「Ｎｏ」と判定し、ステップ１８９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｎｔｈは自然数であり、２以上であることが望ましい。
【０２１８】
一方、ＣＰＵがステップ１８３２の処理を行う時点において、カウンタＣｎの値が閾値Ｃｎｔｈ以上であると、ＣＰＵはそのステップ１８３２にて「Ｙｅｓ」と判定してステップ１８３４に進み、「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」をカウンタＣｎの値（＝Ｃｎｔｈ）によって除することにより、第１平均値Ａｖｅ１の平均値（最終平均値）Ａｖｅｆを算出する。この最終平均値Ａｖｅｆは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）であって、「インバランス判定用パラメータ」としての空燃比変化率指示量である。
【０２１９】
次いで、ＣＰＵはステップ１８３６に進み、最終平均値Ａｖｅｆ（空燃比変化率指示量）の絶対値｜Ａｖｅｆ｜がインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいか否かを判定する。このインバランス判定用閾値ΔＡＦ１ｔｈは、吸入空気流量Ｇａが大きいほど大きくなるように設定されることが望ましい。また、最終平均値Ａｖｅｆは正の値であるから、ＣＰＵはステップ１８３６にて最終平均値Ａｖｅｆがインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいか否かを判定するように構成されていてもよい。
【０２２０】
このとき、最終平均値Ａｖｅｆの絶対値がインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいと、ＣＰＵはステップ１８３６にて「Ｙｅｓ」と判定してステップ１８３８に進み、インバランス発生フラグＸＩＮＢの値を「１」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。なお、インバランス発生フラグＸＩＮＢの値はバックアップＲＡＭに格納される。その後、ＣＰＵはステップ１８４２に進む。
【０２２１】
これに対し、ＣＰＵがステップ１８３６の処理を行う時点において、最終平均値Ａｖｅｆの絶対値がインバランス判定用閾値ΔＡＦ１ｔｈ以下であると、ＣＰＵはステップ１８３６にて「Ｎｏ」と判定してステップ１８４０に進み、インバランス発生フラグＸＩＮＢの値を「２」に設定する。即ち、「空燃比気筒間インバランス判定の結果、空燃比気筒間インバランス状態が発生していないと判定された旨」を記憶する。その後、ＣＰＵはステップ１８４２に進む。なお、ステップ１８４０は省略されてもよい。
【０２２２】
ＣＰＵは、ステップ１８４２にて「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」を「０」に設定（クリア）するとともに、カウンタＣｎの値を「０」に設定（クリア）する。その後、ＣＰＵはステップ１８９５に進んで本ルーチンを一旦終了する。以上により、センサ適正判定終了フラグＸＳＯＫの値が「１」であるときに限り、空燃比気筒間インバランス判定が実行される。
【０２２３】
（場合２：センサ適正判定終了フラグＸＳＯＫ及び判定許可フラグＸkyokaのうちの少なくとも一方が「１」以外の値である場合）
この場合、ＣＰＵはステップ１８０２又はステップ１８０４にて「Ｎｏ」と判定してステップ１８１８に進み、検出空燃比変化率ΔＡＦの積算値ＳΔＡＦの値を「０」に設定（クリア）する。次いで、ＣＰＵはステップ１８２０に進んでカウンタＣｐの値を「０」に設定し、その後、ステップ１８９５に直接進んで本ルーチンを一旦終了する。即ち、センサ適正判定終了フラグＸＳＯＫの値が「０」であって空燃比センサ適正判定が完了していない場合、及び、センサ適正判定終了フラグＸＳＯＫの値が「２」であって空燃比センサ適正判定の結果「空燃比センサが不適切」であると判定された場合、空燃比気筒間インバランス判定は実行されない（禁止される）。
【０２２４】
以上、説明したように、第１判定装置は、３以上の複数の気筒を有する多気筒内燃機関１０に適用される。
第１判定装置は、前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比と同少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比との差が大きいほど大きくなるインバランス判定用パラメータ（最終平均値Ａｖｅｆ）を、少なくとも空燃比センサ５５の出力値Vabyfsに基づいて求める（図１８のステップ１８０２乃至１８３４を参照。）。
【０２２５】
更に、第１判定装置は、取得したインバランス判定用パラメータ（最終平均値Ａｖｅｆ）が所定のインバランス判定用閾値（ΔＡＦ１ｔｈ）以上であるか否かの比較結果に基づいて「空燃比気筒間インバランス状態が発生しているか否かのインバランス判定」を実行するインバランス判定手段を備える（図１８のステップ１８３６乃至１８４０を参照。）。
【０２２６】
加えて、第１判定装置は、
前記インバランス判定を実行する前に（図１６のステップ１６０５、図１８のステップ１８０２を参照。）、「前記少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比」が「その少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比」から乖離した「強制インバランス状態（本例においては、強制リッチインバランス状態）」が強制的に発生するように、複数の燃料噴射弁２５から噴射される燃料の量を変更する強制インバランス状態生成手段（図１６のステップ１６１５、図１４のステップ１４１０乃至１４４０、図１４のステップ１４８０を参照。）と、
前記強制インバランス状態が発生させられている状態における空燃比センサ５５の出力値Vabyfsに基づいて「前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータ（ＡｖｅΔＡＦ）」を取得する評価用パラメータ取得手段（図１６のステップ１６２０乃至１６６０を参照。）と、
前記取得された空燃比センサ評価用パラメータ（ＡｖｅΔＡＦ）と予め定められた基準パラメータ（ΔＡＦst）とを比較することにより「前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切であるか否か」の判定（センサ適正判定）を実行する空燃比センサ評価手段（図１６のステップ１６６５乃至ステップ１６８０を参照。）と、
前記空燃比センサ評価手段によって前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切でないと判定された場合（図１６のステップ１６７０における「Ｙｅｓ」との判定を参照。）、前記インバランス判定の実行を禁止するインバランス判定実行可否決定手段（図１６のステップ１６７５にてセンサ適正判定終了フラグＸＳＯＫの値が「２」に設定されたとき、図１８のステップ１８０２にて「Ｎｏ」と判定されるようになる点を参照。）を備える。
【０２２７】
なお、第１判定装置は、図１６のステップ１６７５にてセンサ適正判定終了フラグＸＳＯＫの値が「２」に設定されたとき、図１８のステップ１８０６乃至ステップ１８１６と、ステップ１８２２乃至ステップ１８３６と、の処理を実行するが、ステップ１８３６の判定結果に拘わらずインバランス発生フラグＸＩＮＢの値を「０」に維持することにより、前記インバランス判定の結果を無効とするように構成されていてもよい。
【０２２８】
これによれば、本来の空燃比気筒間インバランスが発生した状態と類似する強制インバランス状態が強制的に発生させられ、その強制インバランス状態において空燃比センサ５５の出力特性を表す空燃比センサ評価用パラメータ（ＡｖｅΔＡＦ）が取得されるとともに、その空燃比センサ評価用パラメータ（ＡｖｅΔＡＦ）と基準パラメータ（ΔＡＦst）とが近しいか否かに基づいて空燃比センサ適正判定がなされる。
【０２２９】
従って、空燃比センサ５５の出力特性が「空燃比気筒間インバランス判定」にとって不適切であるか否かが精度良く判定される。更に、空燃比センサ５５の出力特性が空燃比気筒間インバランス判定に不適切であると判定された場合、空燃比気筒間インバランス判定が事実上実行されない。その結果、空燃比センサ５５の出力特性の変化等に起因して、空燃比気筒間インバランス判定を誤る可能性を低減することができる。
【０２３０】
なお、第１判定装置において、図１６のステップ１６１５にて設定されるαの値は、負の値αｍであってもよい。これにより、強制リーンインバランス状態が発生させられる。
【０２３１】
＜第２実施形態＞
次に、本発明の第２実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第２判定装置」と称呼する。）について説明する。
【０２３２】
第２判定装置は、空燃比センサ５５の評価用パラメータを取得する際、「強制リッチインバランス状態及び強制リーンインバランス状態」の二つの空燃比気筒間インバランス状態を時間的に重複しない期間において強制的に発生させる。強制リッチインバランス状態は、強制インバランス気筒の空燃比が理論空燃比よりもリッチ側の空燃比である状態である。強制リーンインバランス状態は、強制インバランス気筒の空燃比が理論空燃比よりもリーン側の空燃比である状態である。
【０２３３】
更に、第２判定装置は、強制リッチインバランス状態において取得される複数の検出空燃比変化率ΔＡＦの絶対値の平均値をリッチ側評価用パラメータとして取得する。同様に、第２判定装置は、強制リーンインバランス状態において取得される複数の検出空燃比変化率ΔＡＦの絶対値の平均値をリーン側評価用パラメータとして取得する。
【０２３４】
そして、第２判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値ＤＲｔｈより大きく、且つ、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値ＤＬｔｈより大きいとき、空燃比センサ５５（空燃比センサ５５の出力特性）がインバランス判定にとって適正ではないと判定する。
【０２３５】
なお、第２判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値ＤＲｔｈより大きいか、又は、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値ＤＬｔｈより大きいとき、空燃比センサ５５（空燃比センサ５５の出力特性）がインバランス判定にとって適正ではないと判定するように構成されていてもよい。その他の点において、第２判定装置は第１判定装置と同様である。従って、以下、この相違点を中心として説明する。なお、以下の説明において、既に説明したステップと同じ処理を行うステップのうちの幾つかにはそのステップと同じ符合を付している。これらのステップについての詳細説明は適宜省略される。
【０２３６】
（作動）
第２判定装置のＣＰＵは、第１判定装置のＣＰＵが実行するルーチンのうち図１６を除くルーチンを実行するとともに、図１６に代わる図１９及び図２０に示した「空燃比センサ適正判定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。
【０２３７】
従って、所定のタイミングになると、ＣＰＵは図１９のステップ１９００から処理を開始し、ステップ１６０５にてセンサ適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値であると、ＣＰＵはステップ１６０５にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを直ちに終了する。
【０２３８】
これに対し、ＣＰＵがステップ１６０５の処理を実行する時点において、センサ適正判定終了フラグＸＳＯＫの値が「０」であると、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、ステップ１６１０に進んで判定許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０２３９】
このとき、判定許可フラグＸkyokaの値が「１」であれば、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ１９１０に進み、強制リッチインバランスデータの取得が完了する前であるか否かを判定する。具体的には、ＣＰＵはステップ１９１０にて強制リッチインバランスデータ取得完了フラグＸＲ（以下、「リッチデータ取得完了フラグＸＲ」とも称呼する。）の値が「０」であるか否かを判定する。リッチデータ取得完了フラグＸＲの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２４０】
このとき、強制リッチインバランスデータの取得完了前であり、リッチデータ取得完了フラグＸＲの値が「０」である（「１」でない）と、ＣＰＵはステップ１９１０にて「Ｙｅｓ」と判定し、ステップ１９１５乃至ステップ１９３５の処理を順に行う。
【０２４１】
ステップ１９１５乃至ステップ１９３５は、図１６のステップ１６１５乃至ステップ１６３５とそれぞれ同じ処理を行うステップである。従って、値「Ｎ」に「１」が設定され、強制インバランス状態フラグＸＥＮの値が「１」に設定され、値「α」に正の値「αｐ」が設定される。更に、検出空燃比変化率ΔＡＦが取得される。なお、値「Ｎ」は「２〜４」のうちの何れかに設定されてもよい。
【０２４２】
次に、ＣＰＵはステップ１９４０に進み、カウンタＣＲの値を「１」だけ増大する。なお、カウンタＣＲは上述したイニシャルルーチンにおいて「０」に設定される。
【０２４３】
次いで、ＣＰＵはステップ１９４５に進み、ステップ１９３５にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第ＣＲ番目の強制リッチインバランス時データΔＡＦＲ（ＣＲ）として格納する。例えば、現時点が「判定許可フラグＸkyokaの値が「０」から「１」へと変更になった直後の時点」であるとすると、カウンタＣＲの値は「１」である（後述するステップ１９６０及びステップ１９４０を参照。）。従って、ステップ１９３５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦＲ（１）として格納される。
【０２４４】
次に、ＣＰＵはステップ１９５０に進み、強制リッチインバランスデータの取得が完了したか否かを判定する。具体的には、ＣＰＵは、カウンタＣＲの値が所定の閾値ＣＲｔｈ以上であるか否かを判定する。閾値ＣＲｔｈは、強制リッチインバランス状態において取得された検出空燃比変化率ΔＡＦのデータ数が、空燃比センサ５５の出力特性を判定するのに充分な数となるように定められる。
【０２４５】
このとき、カウンタＣＲの値が所定の閾値ＣＲｔｈ未満であると、ＣＰＵはステップ１９５０にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。
【０２４６】
以上の処理は、センサ適正判定終了フラグＸＳＯＫの値が「０」であり、且つ、判定許可フラグＸkyokaの値が「１」であり、且つ、リッチデータ取得完了フラグＸＲの値が「０」である状態が継続している期間、繰り返し実行される。従って、ステップ１９４０にてカウンタＣＲの値が増大され、ステップ１９４５にて検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦＲ（ＣＲ）として格納されて行く。データΔＡＦＲ（ＣＲ）は空燃比センサ評価用パラメータの元データである。
【０２４７】
このような状態において所定の時間が経過すると、カウンタＣＲの値は閾値ＣＲｔｈに到達する。このとき、ＣＰＵがステップ１９５０の処理を実行すると、ＣＰＵはそのステップ１９５０にて「Ｙｅｓ」と判定してステップ１９５５に進み、リッチデータ取得完了フラグＸＲの値を「１」に設定する。次いで、ＣＰＵは、図２０のステップ２００５に進む（図１９及び図２０の「Ａ」を参照。）。なお、この時点以降、ＣＰＵがステップ１９１０に進んだとき、ＣＰＵはそのステップ１９１０にて「Ｎｏ」と判定し、図２０のステップ２００５に直接進む。
【０２４８】
ＣＰＵは図２０のステップ２００５にて、強制リーンインバランス状態を発生させるために、特定気筒（本例においては、第１気筒）の燃料噴射量を他の気筒よりも減少させる処理を行う。具体的に述べると、ＣＰＵは、値「Ｎ」を「１」に設定し、強制インバランス状態フラグＸＥＮの値を「１」に設定し、値「α」を負の所定値αｍ（例えば、−０．３）に設定する。これにより、第Ｎ気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ減量される（図１４のステップ１４１０乃至ステップ１４４０を参照。）。なお、値「Ｎ」は「２〜４」のうちの何れかに設定されてもよい。
【０２４９】
次いで、ＣＰＵはステップ２０１０乃至ステップ２０２５の処理を実行する。ステップ２０１０乃至ステップ２０２５は、図１６のステップ１６２０乃至ステップ１６３５とそれぞれ同じ処理を行うステップである。従って、検出空燃比変化率ΔＡＦが取得される。
【０２５０】
次に、ＣＰＵはステップ２０３０に進み、カウンタＣＬの値を「１」だけ増大する。なお、カウンタＣＬは上述したイニシャルルーチンにおいて「０」に設定される。
【０２５１】
次いで、ＣＰＵはステップ２０３５に進み、ステップ２０２５にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第ＣＬ番目の強制リーンインバランス時データΔＡＦＬ（ＣＬ）として格納する。例えば、現時点が「リッチデータ取得完了フラグＸＲの値が「０」から「１」へと変更になった直後の時点」であるとすると、カウンタＣＬの値は「１」である（後述する図１９のステップ１９７０及び図２０のステップ２０３０を参照。）。従って、ステップ２０２５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦＬ（１）として格納される。
【０２５２】
次に、ＣＰＵはステップ２０４０に進み、強制リーンインバランスデータの取得が完了したか否かを判定する。具体的には、ＣＰＵは、カウンタＣＬの値が所定の閾値ＣＬｔｈ以上であるか否かを判定する。閾値ＣＬｔｈは、強制リーンインバランス状態において取得された検出空燃比変化率ΔＡＦのデータ数が、空燃比センサ５５の出力特性を判定するのに充分な数となるように定められる。
【０２５３】
このとき、カウンタＣＬの値が所定の閾値ＣＬｔｈ未満であると、ＣＰＵはステップ２０４０にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。
【０２５４】
このように、ステップ２００５乃至ステップ２０３５の処理は、センサ適正判定終了フラグＸＳＯＫの値が「０」であり、且つ、判定許可フラグＸkyokaの値が「１」であり、且つ、リッチデータ取得完了フラグＸＲの値が「１」である状態が継続している期間、繰り返し実行される。従って、ステップ２０３０にてカウンタＣＬの値が増大され、ステップ２０３５にて検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦＬ（ＣＬ）として格納されて行く。データΔＡＦＬ（ＣＬ）は空燃比センサ評価用パラメータの元データである。
【０２５５】
このような状態において所定の時間が経過すると、カウンタＣＬの値は閾値ＣＬｔｈに到達する。このとき、ＣＰＵがステップ２０４０の処理を実行すると、ＣＰＵはそのステップ２０４０にて「Ｙｅｓ」と判定してステップ２０４５に進み、強制インバランス状態フラグＸＥＮの値を「０」に設定する。これにより、強制インバランス状態が終了する（図１４のステップ１４１０及びステップ１４４０を参照。）。なお、このとき、ＣＰＵは値αを「０」に設定してもよい。
【０２５６】
次いで、ＣＰＵはステップ２０５０に進み、空燃比センサ５５の出力特性が「空燃比気筒間インバランス判定を実行するのに適正であるか否か」を判定するための「空燃比センサ評価用パラメータ」を、データΔＡＦＲ（ｍ）（ｍは１〜ＣＲｔｈの自然数）とデータΔＡＦＬ（ｋ）（ｋは１〜ＣＬｔｈの自然数）とに基づいて算出する。
【０２５７】
より具体的に述べると、ＣＰＵは複数のデータΔＡＦＲ（ｍ）の総和をカウンタＣＲ（現時点においては、閾値ＣＲｔｈと等しい。）により除することによって、「強制リッチインバランス状態において取得された複数の検出空燃比変化率ΔＡＦ」の絶対値の平均値ＡｖｅΔＡＦＲをリッチ側評価用パラメータとして算出する。更に、ＣＰＵは、複数のデータΔＡＦＬ（ｋ）の総和をカウンタＣＬ（現時点においては、閾値ＣＬｔｈと等しい。）により除することによって、「強制リーンインバランス状態において取得された複数の検出空燃比変化率ΔＡＦ」の絶対値の平均値ＡｖｅΔＡＦＬをリーン側評価用パラメータとして算出する。
【０２５８】
次いで、ＣＰＵはステップ２０５５に進み、リッチ側基準パラメータΔＡＦＲst及びリーン側基準パラメータΔＡＦＬstをＲＯＭから読み出す。リッチ側基準パラメータΔＡＦＲstは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに上記強制リッチインバランス状態（αをαｐに設定して第１気筒に対する燃料噴射を行う）を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータＡｖｅΔＡＦＲに対応するパラメータである。リーン側基準パラメータΔＡＦＬstは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに上記強制リーンンバランス状態（αをαｍに設定して第１気筒に対する燃料噴射を行う）を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータＡｖｅΔＡＦＬに対応するパラメータである。
【０２５９】
なお、リッチ側基準パラメータΔＡＦＲstは、第１判定装置が使用する基準パラメータΔＡＦstと同様、実際の評価用パラメータ取得中（この場合、強制リッチインバランス状態期間中）の機関状態パラメータ別に設定されてもよい。同様に、リーン側基準パラメータΔＡＦＬstは、実際の評価用パラメータ取得中（この場合、強制リーンインバランス状態期間中）の機関状態パラメータ別に設定されてもよい。
【０２６０】
次に、ＣＰＵはステップ２０６０に進み、リッチ側評価用パラメータＡｖｅΔＡＦＲとリッチ側基準パラメータΔＡＦＲstとの差の絶対値ＤＲが所定のリッチ側評価用閾値ＤＲｔｈよりも大きく、且つ、リーン側評価用パラメータＡｖｅΔＡＦＬとリーン側基準パラメータΔＡＦＬstとの差の絶対値ＤＬが所定のリーン側評価用閾値ＤＬｔｈよりも大きいか否かを判定する。
【０２６１】
そして、ＣＰＵは、絶対値ＤＲが閾値ＤＲｔｈよりも大きく且つ絶対値ＤＬが閾値ＤＬｔｈよりも大きいとき、空燃比センサ５５の出力特性が基準空燃比センサの出力特性から大きく乖離していて、よって、空燃比センサ５５は「空燃比気筒間インバランス判定にとって適正ではない」と判定する。
【０２６２】
この場合、ＣＰＵはステップ２０６０にて「Ｙｅｓ」と判定してステップ２０６５に進み、空燃比センサ５５がインバランス判定に不適切なセンサであることを示すように、センサ適正判定終了フラグＸＳＯＫの値を「２」に設定する。その後、ＣＰＵはステップ１９９５に進んで本ルーチンを一旦終了する。
【０２６３】
一方、ＣＰＵがステップ２０６０の処理を実行する時点において、絶対値ＤＲが閾値ＤＲｔｈ以下であるか、及び／又は、絶対値ＤＬが閾値ＤＬｔｈ以下であると、ＣＰＵは、空燃比センサ５５の出力特性は基準空燃比センサの出力特性に実質的に等しく、よって、「空燃比センサ５５は空燃比気筒間インバランス判定にとって適正である」と判定する。この場合、ＣＰＵはステップ２０６０にて「Ｎｏ」と判定してステップ２０７０に進み、空燃比センサ５５がインバランス判定に適切なセンサであることを示すように、センサ適正判定終了フラグＸＳＯＫの値を「１」に設定する。その後、ＣＰＵはステップ１９９５に進んで本ルーチンを一旦終了する。
【０２６４】
以上、説明したように、第２判定装置は、第１判定装置と同様、強制インバランス状態を発生させる強制インバランス状態生成手段を備える。
【０２６５】
更に、その強制インバランス状態生成手段は、
前記強制インバランス状態として、
前記一つの気筒（この場合、第１気筒）に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリッチ側の空燃比である第１空燃比（理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ｋen（＝１＋αｐ）倍することにより得られる空燃比）に設定する強制リッチインバランス状態（図１９のステップ１９１５、図１４のステップ１４１０乃至ステップ１４４０、ステップ１４８０を参照。）と、
前記一つの気筒（この場合、第１気筒）に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリーン側の空燃比である第２空燃比（理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ｋen（＝１＋αｍ）倍することにより得られる空燃比）に設定する強制リーンインバランス状態（図２０のステップ２００５、図１４のステップ１４１０乃至ステップ１４４０、ステップ１４８０を参照。）と、
が時間的に重複することなく発生するように、前記複数の燃料噴射弁から噴射される燃料の量を変更するように構成されている。
【０２６６】
空燃比センサ５５の出力特性は、検出する空燃比がリッチ側の空燃比からリーン側の空燃比へと変化する場合と、リーン側の空燃比からリッチ側の空燃比へと変化する場合と、において互いに相違する場合がある。従って、第２判定装置のように、「一つの気筒に供給される混合気の空燃比（強制インバランス気筒である第１気筒の空燃比）を、第１空燃比と第２空燃比とに設定すれば、空燃比センサ５５に到達する排ガスの空燃比の変化の様子を種々に設定できるので、空燃比センサ適正判定をより精度良く判定することができる。
【０２６７】
更に、第２判定装置は、強制インバランス気筒の空燃比を第１の空燃比に設定している期間における空燃比センサ評価用パラメータを第１評価用パラメータ（ＡｖｅΔＡＦＲ）として取得し、強制インバランス気筒の空燃比を第２空燃比に設定している期間における空燃比センサ評価用パラメータを「第１評価用パラメータ（ＡｖｅΔＡＦＲ）とは区別される第２評価用パラメータ（ＡｖｅΔＡＦＬ）」として取得し、第１評価用パラメータ（ＡｖｅΔＡＦＲ）及び第２評価用パラメータ（ＡｖｅΔＡＦＬ）を、前記基準パラメータとしての「第１の基準パラメータΔＡＦＲst及び第２の基準パラメータΔＡＦＬst」とそれぞれ比較し、その比較結果に基づいて空燃比センサ適正判定を行う（図２０のステップ２０５０乃至ステップ２０７０等を参照。）。従って、空燃比センサ適正判定をより精度良く判定することができる。
【０２６８】
加えて、空燃比センサ５５の出力特性は、検出する空燃比が理論空燃比よりもリッチ側である場合と、理論空燃比よりもリーン側である場合と、においても互いに相違する場合がある。従って、第２判定装置は、第１空燃比を理論空燃比よりもリッチ側の空燃比に設定し、第２空燃比を理論空燃比よりもリーン側の空燃比に設定している。その結果、空燃比センサ５５の適正判定を一層精度良く実行することができる。
【０２６９】
＜第３実施形態＞
次に、本発明の第３実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第３判定装置」と称呼する。）について説明する。
【０２７０】
第３判定装置は、空燃比センサ５５の評価用パラメータを取得する際、第２判定装置と同様、「強制リッチインバランス状態及び強制リーンインバランス状態」の強制インバランス状態を強制的に発生させ、それぞれの状態において取得された複数の検出空燃比変化率ΔＡＦの絶対値の平均値を「リッチ側評価用パラメータ及びリーン側評価用パラメータ」として取得する。そして、第３判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値ＤＲｔｈより大きく、且つ、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値ＤＬｔｈより大きいとき、空燃比センサ５５（空燃比センサ５５の出力特性）がインバランス判定にとって適正ではないと判定する。
【０２７１】
更に、第３判定装置は、図２１に示したように、「強制リッチインバランス状態及び強制リーンインバランス状態」を時間的に交互に発生させるとともに、強制リッチインバランス状態及び強制リーンインバランス状態のそれぞれの状態の継続時間（例えば、強制インバランス気筒に対する噴射回数）を「上流側触媒４３の酸素吸蔵量ＯＳＡが「０」に到達せず、且つ、最大酸素吸蔵量Ｃmaxに到達しないように」制限する。
【０２７２】
換言すると、第３判定装置は、非強制インバランス気筒の空燃比（以下、「中間空燃比」とも称呼する。）を「理論空燃比又は理論空燃比よりもリーン側の空燃比」に設定するとともに、強制インバランス気筒の空燃比を「理論空燃比よりもリッチ側の空燃比」に設定し続ける第１期間（強制リッチインバランス状態の継続期間、但し、機関１０の全体に供給される混合気の空燃比の平均は理論空燃比よりもリッチな期間）において、「燃焼室２１から排出される排ガス中の過剰な未燃物」が「上流側触媒４３の最大酸素吸蔵量Ｃmaxよりも少ない量の酸素により酸化され得る第１の量」を超えないように、第１期間を制限する。更に、第３判定装置は、非強制インバランス気筒の空燃比（中間空燃比）を「理論空燃比又は理論空燃比よりもリッチ側の空燃比」に設定するとともに、強制インバランス気筒の空燃比を「理論空燃比よりもリーン側の空燃比」に設定し続ける第２期間（強制リーンインバランス状態の継続期間、但し、機関１０の全体に供給される混合気の空燃比の平均は理論空燃比よりもリーンな期間）において、「燃焼室２１から排出される排ガス中の過剰な酸素」が「上流側触媒４３の最大酸素吸蔵量Ｃmaxよりも少ない第２の量」を超えないように、第２期間の長さを制限する。そして、第３判定装置は、第１期間と第２期間とを交互に設定する。
【０２７３】
なお、第３判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値ＤＲｔｈより大きいか、又は、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値ＤＬｔｈより大きいとき、空燃比センサ５５（空燃比センサ５５の出力特性）がインバランス判定にとって適正ではないと判定するように構成されていてもよい。その他の点において、第３判定装置は第１判定装置及び第２判定装置と同様である。従って、以下、この相違点を中心として説明する。
【０２７４】
（作動）
第３判定装置のＣＰＵは、第１判定装置のＣＰＵが実行するルーチンのうち図１６を除くルーチンを実行するとともに、図１６に代わる図２２乃至図２４に示したルーチンのそれぞれを所定時間（４ｍｓ）が経過する毎に実行するようになっている。
【０２７５】
以下、空燃比センサ５５の適正判定が未完了であってセンサ適正判定終了フラグＸＳＯＫの値が「０」であり、判定実行条件が成立していて判定許可フラグＸkyokaの値が「１」であると仮定して説明を行う。
【０２７６】
所定のタイミングになると、ＣＰＵは図２２のステップ２２００から処理を開始し、ステップ１６０５にて適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値であると、ＣＰＵはステップ１６０５にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了する。
【０２７７】
これに対し、上記仮定によれば、センサ適正判定終了フラグＸＳＯＫの値は「０」である。よって、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、ステップ１６１０に進んで判定許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０２７８】
上記仮定によれば、判定許可フラグＸkyokaの値が「１」である。よって、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ２２１０に進み、現時点が「強制リッチインバランス状態を発生させるべき時点（強制リッチインバランス状態の順番）」であるか否かを判定する。具体的には、ＣＰＵは、強制リーンインバランス状態発生フラグＸＬＴの値が「０」であるか否かを判定する。なお、強制リーンインバランス状態発生フラグＸＬＴの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２７９】
従って、現時点が機関１０の始動後において初めてステップ２２１０に進んだ時点であると仮定すると、ＣＰＵはそのステップ２２１０にて「Ｙｅｓ」と判定してステップ１９１０に進み、強制リッチインバランスデータの取得が完了する前であるか否か（即ち、リッチデータ取得完了フラグＸＲの値が「１」であるか否か）を判定する。この場合、リッチデータ取得完了フラグＸＲの値は「０」である。よって、ＣＰＵはステップ１９１０にて「Ｙｅｓ」と判定してステップ２２２０に進み、強制リッチインバランス状態発生回数カウンタＣＥＲの値を「１」だけ増大させる。このカウンタＣＥＲの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２８０】
次に、ＣＰＵは、ステップ１９１５乃至ステップ１９４５の処理を順に行う。これにより、値「Ｎ」に「１」が設定され、強制インバランス状態フラグＸＥＮの値が「１」に設定され、値「α」に正の値「αｐ」が設定される。更に、検出空燃比変化率ΔＡＦが取得され、カウンタＣＲの値が「１」だけ増大させられる。そして、ステップ１９３５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）が、ステップ１９４５にて「第ＣＲ番目の強制リッチインバランス時データΔＡＦＲ（ＣＲ）」として格納される。
【０２８１】
次に、ＣＰＵはステップ２２３０に進み、強制リッチインバランス状態発生回数カウンタＣＥＲの値が所定の閾値ＣＥＲｔｈ以上であるか否かを判定する。閾値ＣＥＲｔｈは、強制リッチインバランス状態が継続することによって上流側触媒４３に流入する過剰な未燃物の量（過剰な未燃物の積算量）が、上流側触媒４３の最大酸素吸蔵量Ｃmaxよりも小さい量に匹敵する量の酸素によって総て酸化されることができるように、予め定められる。閾値ＣＥＲｔｈは、「１」を含む自然数である。
【０２８２】
この時点において、強制リッチインバランス状態発生回数カウンタＣＥＲの値が所定の閾値ＣＥＲｔｈ以上ではないとすると、ＣＰＵはステップ２２３０にて「Ｎｏ」と判定してステップ１９５０に直接進み、強制リッチインバランスデータの取得が完了したか否か（カウンタＣＲの値が所定の閾値ＣＲｔｈ以上であるか否か）を判定する。閾値ＣＲｔｈは、閾値ＣＥＲｔｈ以上の値に設定されている。
【０２８３】
従って、閾値ＣＲｔｈと閾値ＣＥＲｔｈとが同じ値に設定されている場合を除き、この時点でのカウンタＣＲの値は閾値ＣＲｔｈ未満である。よって、ＣＰＵはステップ１９５０にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了する。この結果、強制リーンインバランス状態発生フラグＸＬＴの値は「０」に維持される。更に、「リッチデータ取得完了フラグＸＲの値」及び「上述したイニシャルルーチンにおいて「０」に設定されるリーンデータ取得完了フラグＸＬの値」の双方が「０」に維持される。
【０２８４】
一方、所定のタイミングになると、ＣＰＵは図２３のステップ２３００から処理を開始し、ステップ１６０５にて適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定する。上記仮定によれば、センサ適正判定終了フラグＸＳＯＫの値は「０」である。よって、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、ステップ１６１０に進んで判定許可フラグＸkyokaの値が「１」であるか否かを判定する。
【０２８５】
上記仮定によれば、判定許可フラグＸkyokaの値が「１」である。よって、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ２３１０に進み、現時点が「強制リーンインバランス状態を発生させるべき時点（強制リーンインバランス状態の順番）」であるか否かを判定する。具体的には、ＣＰＵは、強制リーンインバランス状態発生フラグＸＬＴの値が「１」であるか否かを判定する。
【０２８６】
上述したように、現時点において強制リーンインバランス状態発生フラグＸＬＴの値は「０」に維持されている。従って、ＣＰＵはステップ２３１０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
【０２８７】
更に、ＣＰＵは、所定のタイミングにて図２４のステップ２４００から処理を開始してステップ２４１０に進み、空燃比センサ５５の評価を行うためのデータの取得が完了したか否かを判定する。より具体的に述べると、ＣＰＵはステップ２４１０にて、リッチデータ取得完了フラグＸＲの値が「１」であり、且つ、リーンデータ取得完了フラグＸＬの値が「１」である、か否かを判定する。
【０２８８】
この時点においては、リッチデータ取得完了フラグＸＲの値及びリーンデータ取得完了フラグＸＬの値は、何れも「０」である。従って、ＣＰＵはステップ２４１０にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
【０２８９】
以上の状態が継続すると、ＣＰＵは図２２のステップ２２２０、ステップ１９１５乃至ステップ１９４５の処理を繰り返し実行する。従って、所定の時間が経過すると、カウンタＣＥＲの値は閾値ＣＥＲｔｈに到達する。この場合、ＣＰＵが図２２のステップ２２３０に進むと、ＣＰＵはそのステップ２２３０にて「Ｙｅｓ」と判定し、ステップ２２４０に進んで強制リーンインバランス状態発生フラグＸＬＴの値を「１」に設定するとともに、ステップ２２５０にてカウンタＣＥＲの値を「０」に設定する。
【０２９０】
次いで、ＣＰＵはステップ１９５０に進む。このとき、閾値ＣＲｔｈと閾値ＣＥＲｔｈとが同じ値に設定されている場合を除き、カウンタＣＲの値は閾値ＣＲｔｈ未満である。よって、ＣＰＵはステップ１９５０にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了する。
【０２９１】
この結果、所定時間の経過後にＣＰＵが図２２のステップ２２１０の処理を行うと、ＣＰＵはそのステップ２２１０にて「Ｎｏ」と判定し、ステップ２２９５に直接進む。従って、図２２のステップ１９１５の処理は実行されない。
【０２９２】
一方、ＣＰＵが図２３のステップ２３１０の処理を行うと、ＣＰＵはそのステップ２３１０にて「Ｙｅｓ」と判定してステップ２３２０に進み、強制リーンインバランスデータの取得が完了する前であるか否かを判定する。具体的には、ＣＰＵはステップ２３２０にて強制リーンインバランスデータ取得完了フラグＸＬ（リーンデータ取得完了フラグＸＬ）の値が「０」であるか否かを判定する。リーンデータ取得完了フラグＸＬの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２９３】
この時点は強制リーンインバランスデータの取得完了前であり、従って、リーンデータ取得完了フラグＸＬの値は「０」である。従って、ＣＰＵはステップ２３２０にて「Ｙｅｓ」と判定してステップ２３３０に進み、強制リーンインバランス状態発生回数カウンタＣＥＬの値を「１」だけ増大させる。このカウンタＣＥＬの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０２９４】
次に、ＣＰＵは、ステップ２００５乃至ステップ２０３５の処理を順に行う。これにより、値「Ｎ」に「１」が設定され、強制インバランス状態フラグＸＥＮの値が「１」に設定され、値「α」に負の値「αｍ」が設定される。更に、ステップ２０２５にて検出空燃比変化率ΔＡＦが取得され、ステップ２０３０にてカウンタＣＬの値が「１」だけ増大させられる。そして、ステップ２０２５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）が、ステップ２０３５にて「第ＣＬ番目の強制リッチインバランス時データΔＡＦＬ（ＣＬ）」として格納される。
【０２９５】
次に、ＣＰＵはステップ２３４０に進み、強制リーンインバランス状態発生回数カウンタＣＥＬの値が所定の閾値ＣＥＬｔｈ以上であるか否かを判定する。閾値ＣＥＬｔｈは、強制リーンインバランス状態が継続することによって上流側触媒４３に流入する過剰な酸素の量（過剰な酸素の積算量）が、上流側触媒４３の最大酸素吸蔵量Ｃmaxよりも小さい量に匹敵する量となるように、予め定められる。閾値ＣＥＬｔｈは、「１」を含む自然数である。
【０２９６】
この時点において、強制リーンインバランス状態発生回数カウンタＣＥＬの値が所定の閾値ＣＥＬｔｈ以上ではないとすると、ＣＰＵはステップ２３４０にて「Ｎｏ」と判定してステップ２３７０に直接進み、強制リーンインバランスデータの取得が完了したか否か（カウンタＣＬの値が所定の閾値ＣＬｔｈ以上であるか否か）を判定する。閾値ＣＬｔｈは、閾値ＣＥＬｔｈ以上の値に設定されている。
【０２９７】
従って、閾値ＣＬｔｈと閾値ＣＥＬｔｈとが同じ値に設定されている場合を除き、この時点でのカウンタＣＬの値は閾値ＣＬｔｈ未満である。よって、ＣＰＵはステップ２３７０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。この結果、強制リーンインバランス状態発生フラグＸＬＴの値は「１」に維持される。更に、リーンデータ取得完了フラグＸＬの値は「０」に維持される。
【０２９８】
このため、ＣＰＵが図２４のステップ２４１０に進むと、ＣＰＵはそのステップ２４１０にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
【０２９９】
以上の状態が継続すると、ＣＰＵは図２３のステップ２３３０、ステップ２００５乃至ステップ２０３５の処理を繰り返し実行する。従って、所定の時間が経過すると、カウンタＣＥＬの値は閾値ＣＥＬｔｈに到達する。この場合、ＣＰＵが図２３のステップ２３４０に進むと、ＣＰＵはそのステップ２３４０にて「Ｙｅｓ」と判定し、ステップ２３５０に進んで強制リーンインバランス状態発生フラグＸＬＴの値を「０」に設定するとともに、ステップ２３６０にてカウンタＣＥＬの値を「０」に設定する。
【０３００】
次いで、ＣＰＵはステップ２３７０に進む。このとき、閾値ＣＬｔｈと閾値ＣＥＬｔｈとが同じ値に設定されている場合を除き、カウンタＣＬの値は閾値ＣＬｔｈ未満である。よって、ＣＰＵはステップ２３７０にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
【０３０１】
この結果、所定時間の経過後にＣＰＵが図２３のステップ２３１０の処理を行うと、ＣＰＵはそのステップ２３１０にて「Ｎｏ」と判定し、ステップ２３９５に直接進む。従って、図２３のステップ２００５の処理は実行されない。
【０３０２】
一方、ＣＰＵが図２２のステップ２２１０の処理を行うと、ＣＰＵはそのステップ２２１０にて「Ｙｅｓ」と判定してステップ１９１０、ステップ２２２０、ステップ１９１５乃至ステップ１９４５の処理を実行するようになる。
【０３０３】
以上のように、ＣＰＵは、強制リッチインバランス状態を「データΔＡＦＲ（ＣＲ）が閾値ＣＥＲｔｈ個取得されたとき」に終了し、強制リーンインバランス状態を発生させる。更に、ＣＰＵは、強制リーンインバランス状態を「データΔＡＦＬ（ＣＬ）が閾値ＣＥＬｔｈ個取得されたとき」に終了し、強制リッチインバランス状態を発生させる。
【０３０４】
このような状態が継続すると、カウンタＣＲの値は閾値ＣＲｔｈに到達する。この場合、ＣＰＵは図２２のステップ１９５０に進んだとき、そのステップ１９５０にて「Ｙｅｓ」と判定してステップ１９５５に進み、リッチデータ取得完了フラグＸＲの値を「１」に設定するとともに、強制リーンインバランス状態発生フラグＸＬＴの値を「１」に設定する。この結果、ＣＰＵは図２２のステップ１９１０に進んだとき、そのステップ１９１０にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了するようになる。従って、強制リッチインバランス状態は発生させられなくなる。
【０３０５】
同様に、このような状態が継続すると、カウンタＣＬの値は閾値ＣＬｔｈに到達する。この場合、ＣＰＵは図２３のステップ２３７０に進んだとき、そのステップ２３７０にて「Ｙｅｓ」と判定してステップ２３８０に進み、リーンデータ取得完了フラグＸＬの値を「１」に設定するとともに、強制リーンインバランス状態発生フラグＸＬＴの値を「０」に設定する。この結果、ＣＰＵは図２３のステップ２３２０に進んだとき、そのステップ２３２０にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了するようになる。従って、強制リーンインバランス状態は発生させられなくなる。
【０３０６】
加えて、リッチデータ取得完了フラグＸＲの値が「１」に設定され、且つ、リーンデータ取得完了フラグＸＬの値が「１」に設定されたとき、ＣＰＵが図２４のステップ２４１０に進むと、ＣＰＵはそのステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進んで強制インバランス状態フラグＸＥＮの値を「０」に設定する。
【０３０７】
次に、ＣＰＵは、ステップ２０５０乃至ステップ２０６０と、ステップ２０６５及びステップ２０７０のうちの何れか一方と、の処理を行い、空燃比センサ５５が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。その後、ＣＰＵはステップ２４３０にてリッチデータ取得完了フラグＸＲの値を「０」に設定するとともに、ステップ２４４０にてリーンデータ取得完了フラグＸＬの値を「０」に設定し、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０３０８】
なお、判定許可フラグＸkyokaの値が「０」であるとき、ＣＰＵは図２２のステップ１６１０にて「Ｎｏ」と判定し、ステップ２２６０に進んでカウンタＣＥＲの値を「０」に設定するとともに、ステップ２２７０に進んでカウンタＣＥＬの値を「０」に設定する。その後、ＣＰＵはステップ１９６０乃至ステップ１９７５の処理を行ってステップ２２８０に進み、リッチデータ取得完了フラグＸＲの値及びリーンデータ取得完了フラグＸＬの値の双方を「０」に設定する。そして、ＣＰＵはステップ１９８５の処理を実行して本ルーチンを一旦終了する。
【０３０９】
同様に、判定許可フラグＸkyokaの値が「０」であるとき、ＣＰＵは図２３のステップ１６１０にて「Ｎｏ」と判定し、ステップ２２６０、ステップ２２７０、ステップ１９６０乃至ステップ１９７５、ステップ２２８０、並びに、ステップ１９８５の処理を実行して本ルーチンを一旦終了する。
【０３１０】
また、ＣＰＵは、適正判定終了フラグＸＳＯＫの値が「０」以外の値であるときに図２３のステップ１６０５に進むと、そのステップ１６０５にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
【０３１１】
以上、説明したように、第３判定装置は、第２判定装置と同様、一つの気筒（この場合、第１気筒）に供給される混合気の空燃比を他の複数の気筒（第２〜第４気筒）に供給される混合気の空燃比よりもリッチ側の空燃比である第１空燃比に設定する強制リッチインバランス状態と、一つの気筒（この場合、第１気筒）に供給される混合気の空燃比を他の複数の気筒（第２〜第４気筒）に供給される混合気の空燃比よりもリーン側の空燃比である第２空燃比に設定する強制リーンインバランス状態と、が時間的に重複することがないようにそれぞれ発生するように、複数の燃料噴射弁から噴射される燃料の量を変更するように構成された強制インバランス状態生成手段を備える（図２２のステップ１９１５、図２３のステップ２００５等を参照。）。
【０３１２】
更に、前記強制インバランス状態生成手段は、
前記強制リッチインバランス状態において、前記第１空燃比を理論空燃比よりもリッチ側の空燃比（理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ｋen（＝１＋αｐ）倍することにより得られる空燃比）に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比又は理論空燃比よりもリーン側の空燃比である第３空燃比（理論空燃比を得るために必要な燃料噴射量又はその噴射量を空燃比フィードバック量ＤＦｉにより補正（減量）することにより得られる空燃比であって、機関１０の全体に供給される混合気の空燃比の平均が理論空燃比よりもリッチ側となるような空燃比）」に設定し、且つ、同強制リッチインバランス状態の継続期間において前記排ガス中の過剰な未燃物が三元触媒４３の最大酸素吸蔵量よりも少ない量の酸素により酸化され得る量である第１の量を超えないように、同強制リッチインバランス状態の継続期間の長さを制限し（図２２のステップ２２１０、ステップ２２２０、及び、ステップ２２３０乃至ステップ２２５０等を参照。）、
前記強制リーンンバランス状態において、前記第２空燃比を理論空燃比よりもリーン側の空燃比（理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ｋen（＝１＋αｍ）倍することにより得られる空燃比）に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比又は理論空燃比よりもリッチ側の空燃比である第４空燃比（理論空燃比を得るために必要な燃料噴射量又はその噴射量を空燃比フィードバック量ＤＦｉにより補正（増量）することにより得られる空燃比であって、機関１０の全体に供給される混合気の空燃比の平均が理論空燃比よりもリーン側となるような空燃比）」に設定し、且つ、同強制リーンンバランス状態の継続期間において前記排ガス中の過剰な酸素が前記三元触媒の最大酸素吸蔵量よりも少ない第２の量を超えないように、同強制リーンインバランス状態の継続期間の長さを制限する（図２３のステップ２３１０、ステップ２３３０、及び、ステップ２３４０乃至ステップ２３６０等を参照。）。
【０３１３】
従って、検出する空燃比が理論空燃比よりもリッチ側である場合と理論空燃比よりもリーン側である場合とにおいて空燃比センサ５５の出力特性が互いに相違する場合であっても、空燃比センサの適正判定を一層精度良く実行することができる。
【０３１４】
更に、この態様によれば、強制リッチインバランス状態において三元触媒４３に流入する過剰な未燃物の積算量が、その三元触媒４３により浄化することが可能な未燃物の量を超えることがないように設定することができる。加えて、この態様によれば、強制リーンインバランス状態において三元触媒４３に流入する過剰な酸素の積算量が、その三元触媒４３に吸蔵することが可能な酸素の量（最大酸素吸蔵量Ｃmax）を超えることがないように設定することができる。従って、強制インバランス状態を発生させているときにエミッションが悪化することを回避することが可能になる。
【０３１５】
なお、第３判定装置のＣＰＵは、三元触媒４３の最大酸素吸蔵量Ｃmaxと瞬時瞬時の酸素吸蔵量ＯＳＡとを推定しておき、その酸素吸蔵量ＯＳＡが、「０」よりも大きい第１所定値と、その第１所定値よりも大きく且つ最大酸素吸蔵量Ｃmaxよりも小さい第２所定値と、の範囲内になるように、強制リッチインバランス状態の継続期間の長さ及び強制リーンインバランス状態の継続期間の長さを制限してもよい。
【０３１６】
更に、第３判定装置のＣＰＵは、空燃比フィードバック量ＤＦｉによることなく、燃料補正係数Ｋenの値を「１−αｐ／３」に設定するとともに、その燃料補正係数Ｋenを基本燃料噴射量Ｆｂａｓｅに乗じた量の燃料を非強制インバランス気筒に噴射するようにすることによって、上記第３空燃比を理論空燃比よりもリーン側の空燃比に設定してもよい。
【０３１７】
同様に、第３判定装置のＣＰＵは、空燃比フィードバック量ＤＦｉによることなく、燃料補正係数Ｋenの値を「１−αｍ／３」に設定するとともに、その燃料補正係数Ｋenを基本燃料噴射量Ｆｂａｓｅに乗じた量の燃料を非強制インバランス気筒に噴射するようにすることによって、上記第４空燃比を理論空燃比よりもリッチ側の空燃比に設定してもよい。
【０３１８】
更に、第３判定装置のＣＰＵは、カウンタＣＥＲを強制リッチインバランス状態発生中においてクランク角が７２０°経過する毎に（即ち、一つの単位燃焼サイクルが経過する毎）に「１」だけ増大してもよい。同様に、第３判定装置のＣＰＵは、カウンタＣＥＬを強制リーンインバランス状態発生中においてクランク角が７２０°経過する毎に（即ち、一つの単位燃焼サイクルが経過する毎）に「１」だけ増大してもよい。
【０３１９】
＜第４実施形態＞
次に、本発明の第４実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第４判定装置」と称呼する。）について説明する。
【０３２０】
ところで、強制インバランス状態を発生させるために特定の気筒（強制インバランス気筒）の空燃比を偏移させたとしても、強制インバランス状態を発生させていない状態においてその特定の気筒の空燃比が他の気筒の空燃比から乖離していると、その影響が空燃比センサ評価用パラメータに現れる。従って、このような場合、空燃比センサ５５の評価を正しく行うための評価用パラメータを取得できない虞がある。
【０３２１】
そこで、第４判定装置は、空燃比センサ５５の評価用パラメータを取得する際、強制インバランス気筒を互いに異なる少なくとも２つの気筒（第Ｎ１気筒及び第Ｎ２気筒）に順次変更する。加えて、第４判定装置は、強制インバランス気筒が「第Ｎ１気筒（例えば、第１気筒）」であるときに暫定評価用パラメータを求めるための複数の元データＡ１を取得するとともに、強制インバランス気筒が「第Ｎ２気筒（例えば、第４気筒）」であるときに暫定評価用パラメータを求めるための複数の元データＡ２を取得する。このように、第４判定装置は、強制インバランス気筒に設定された気筒に対応させながら暫定評価用パラメータの元データを取得する。
【０３２２】
そして、第４判定装置は、各強制インバランス気筒に対する暫定評価用パラメータの元データの取得が完了すると、強制インバランス気筒のそれぞれに対する暫定評価用パラメータを「それぞれの暫定評価用パラメータを求めるための複数の元データ」から算出する。即ち、第４判定装置は、第Ｎ１気筒が強制インバランス気筒であるときの複数の元データＡ１の平均値等を空燃比センサ５５の暫定評価用パラメータΔＡＦev（Ｎ１）として取得するとともに、第Ｎ２気筒が強制インバランス気筒であるときの複数の元データＡ２の平均値等を空燃比センサ５５の暫定評価用パラメータΔＡＦev（Ｎ２）として取得する。
【０３２３】
そして、第４判定装置は、第Ｎ１気筒に対する暫定評価用パラメータΔＡＦev（Ｎ１）と第Ｎ２気筒に対する暫定評価用パラメータΔＡＦev（Ｎ２）とが実質的に一致しているか否か（具体的には、それらの差の絶対値｜ΔＡＦev（Ｎ１）−ΔＡＦev（Ｎ２）｜が微小な所定の閾値αｔｈ以下であるか否か）を判定し、それらが実質的に一致している場合、強制インバランス状態を発生させていないときに各気筒の空燃比は互いに略一致していると見做し（即ち、第Ｎ１気筒及び第Ｎ２気筒の何れもが非インバランス気筒であると判断し）、第Ｎ１気筒に対する暫定評価用パラメータΔＡＦev（Ｎ１）及び第Ｎ２気筒に対する暫定評価用パラメータΔＡＦev（Ｎ２）の何れか、或いは、それらの平均値を最終的な空燃比センサの評価用パラメータ（最終評価用パラメータ）ΔＡＦevとして取得する。
【０３２４】
その後、第４判定装置は、第１〜第３判定装置と同様、最終評価用パラメータΔＡＦevと基準パラメータΔＡＦstとの差の絶対値が閾値Ｄthを超えていれば、「空燃比センサ５５の出力特性はインバランス判定を実行することに対して適切でない」と判定し、インバランス判定の実行を禁止する。これに対し、第４判定装置は、最終的な評価用パラメータΔＡＦevと基準パラメータΔＡＦstの差の絶対値が閾値Ｄth以下であれば、「空燃比センサ５５の出力特性はインバランス判定を実行することに対して適切である」と判定し、インバランス判定の実行を許可する。
【０３２５】
更に、第４判定装置は、第Ｎ１気筒に対する暫定評価用パラメータΔＡＦev（Ｎ１）と第Ｎ２気筒に対する暫定評価用パラメータΔＡＦev（Ｎ２）とが実質的に一致していないとき、強制インバランス状態を発生させていない状態において気筒別空燃比（第Ｎ１気筒に供給される混合気の空燃比と第Ｎ２気筒に供給される混合気の空燃比）の間に不均衡が生じていると判定し、「空燃比センサ５５の出力特性はインバランス判定を実行することに対して適切か否か」の判定（空燃比センサ適正判定）を行わず、且つ、インバランス判定の実行を禁止する。
【０３２６】
（作動）
第４判定装置のＣＰＵは、図１８に示したルーチンを実行することにより、インバランス判定を行う。更に、第４判定装置のＣＰＵは、図２５にフローチャートにより示したルーチンを実行することにより、空燃比センサ５５の出力特性を評価する。より具体的に述べると、ＣＰＵは所定のタイミングにてステップ２５００からステップ１６０５に進み、センサ適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定することにより、「空燃比センサ５５の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値であれば（即ち、センサ適正判定が完了していれば）、ＣＰＵはステップ２５９５に直接進んで本ルーチンを一旦終了する。
【０３２７】
センサ適正判定終了フラグＸＳＯＫの値が「０」であると、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定してステップ１６１０に進み、判定許可フラグＸkyokaの値が「１」であるか否かを判定する。このとき、判定許可フラグＸkyokaの値が「１」でなければ、ＣＰＵはステップ１６１０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。
【０３２８】
一方、判定許可フラグＸkyokaの値が「１」であると、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ２５１０に進み、強制インバランス気筒を先ず第Ｎ１気筒（本例において、第１気筒）に設定するとともに、所定時間が経過する毎に検出空燃比変化率ΔＡＦの絶対値（暫定評価用パラメータの元データ）を取得し、その絶対値を第Ｎ１気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第Ｎ１気筒を強制インバランス気筒に設定した時点から第Ｃｎ番目に得られたデータであるとすると、その絶対値は元データΔＡＦ（Ｎ１，Ｃｎ）（＝ΔＡＦ（１，Ｃｎ））として格納される。
【０３２９】
更に、ＣＰＵは、元データΔＡＦ（Ｎ１，Ｃｎ）が閾値Ｃｎｔｈ個得られると、強制インバランス気筒を第Ｎ２気筒（本例において、第４気筒）に設定するするとともに、所定時間が経過する毎に検出空燃比変化率ΔＡＦの絶対値（暫定評価用パラメータの元データ）を取得し、その絶対値を第Ｎ２気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第Ｎ２気筒を強制インバランス気筒に設定した時点から第Ｃｎ番目に得られたデータであるとすると、その絶対値は元データΔＡＦ（Ｎ２，Ｃｎ）（＝ΔＡＦ（４，Ｃｎ））として格納される。元データΔＡＦ（Ｎ２，Ｃｎ）が閾値Ｃｎｔｈ個得られるとＣＰＵはステップ２５２０に進む。なお、ＣＰＵは、強制インバランス気筒がどの気筒であっても、その強制インバランス気筒に対する燃料噴射量の補正量（上記値α）を一定の値（上記値αｐ又はαｍ）に設定する。
【０３３０】
次に、ＣＰＵはステップ２５２０において、第Ｎ１気筒についての複数の元データΔＡＦ（Ｎ１，ｉ）が閾値Ｃｎｔｈ個得られ、且つ、第Ｎ２気筒についての複数の元データΔＡＦ（Ｎ２，ｉ）が閾値Ｃｎｔｈ個得られていることを確認し、ステップ２５３０に進む。
【０３３１】
ＣＰＵは、ステップ２５３０において、第Ｎ１気筒についての複数の元データΔＡＦ（Ｎ１，ｉ）の平均値を「第Ｎ１気筒の暫定評価用パラメータΔＡＦev（Ｎ１）」として取得するとともに、第Ｎ２気筒についての複数の元データΔＡＦ（Ｎ２，ｉ）の平均値を「第Ｎ２気筒の暫定評価用パラメータΔＡＦev（Ｎ２）」として取得する。
【０３３２】
次に、ＣＰＵはステップ２５４０に進み、第Ｎ１気筒の暫定評価用パラメータΔＡＦev（Ｎ１）と、第Ｎ２気筒の暫定評価用パラメータΔＡＦev（Ｎ２）と、の差の絶対値｜ΔＡＦev（Ｎ１）−ΔＡＦev（Ｎ２）｜が閾値αｔｈよりも小さいか否かを判定することにより、暫定評価用パラメータΔＡＦev（Ｎ１）と暫定評価用パラメータΔＡＦev（Ｎ２）とが実質的に一致しているか否かを判定する。
【０３３３】
このとき、絶対値｜ΔＡＦev（Ｎ１）−ΔＡＦev（Ｎ２）｜が閾値αｔｈよりも小さいと、強制インバランス状態を発生させていない状態において「第Ｎ１気筒に供給される混合気の空燃比と第Ｎ２気筒に供給される混合気の空燃比とは略一致している」と判断できるので、ＣＰＵはステップ２５４０にて「Ｙｅｓ」と判定してステップ２５５０に進み、暫定評価用パラメータΔＡＦev（Ｎ１）を「空燃比センサ５５の最終的な評価用パラメータ（最終評価用パラメータ）ΔＡＦev」として採用する。
【０３３４】
なお、ＣＰＵはステップ２５５０において、暫定評価用パラメータΔＡＦev（Ｎ２）を最終評価用パラメータΔＡＦevとして採用してもよく、「暫定評価用パラメータΔＡＦev（Ｎ１）と暫定評価用パラメータΔＡＦev（Ｎ２）との平均値」を最終評価用パラメータΔＡＦevとして採用してもよい。
【０３３５】
次いで、ＣＰＵはステップ１６６５にて前述の通り基準パラメータΔＡＦｓｔをＲＯＭから読み出し、ステップ１６７０以降に進んで「最終評価用パラメータΔＡＦevと基準パラメータΔＡＦｓｔとの差の絶対値Ｄ」が閾値Ｄthより大きいか否かに基づいて、空燃比センサ５５の出力特性がインバランス判定を実行することに対して適切であるか否かの判定（センサ適正判定）を実行する。
【０３３６】
そして、空燃比センサ５５の出力特性がインバランス判定を実行することに対して適切であると判定される場合、ＣＰＵはステップ１６８０にてセンサ適正判定終了フラグＸＳＯＫの値を「１」に設定する。これにより、ＣＰＵは図１８のステップ１８０２にて「Ｙｅｓ」と判定するので、インバランス判定が実行される。
【０３３７】
これに対し、空燃比センサ５５の出力特性がインバランス判定を実行することに対して適切でないと判定される場合、ＣＰＵはステップ１６７５にてセンサ適正判定終了フラグＸＳＯＫの値を「２」に設定する。これにより、ＣＰＵは図１８のステップ１８０２にて「Ｎｏ」と判定するので、インバランス判定が実行されない。
【０３３８】
更に、ＣＰＵがステップ２５４０の処理を実行する時点において、差の絶対値｜ΔＡＦev（Ｎ１）−ΔＡＦev（Ｎ２）｜が閾値αｔｈよりも大きいと、強制インバランス状態を発生させていない状態において「第Ｎ１気筒に供給される混合気の空燃比と第Ｎ２気筒に供給される混合気の空燃比とが相違している」と判断できる。即ち、第Ｎ１気筒及び第Ｎ２気筒の何れかがインバランス気筒であると判断できる。
【０３３９】
そこで、ＣＰＵは、差の絶対値｜ΔＡＦev（Ｎ１）−ΔＡＦev（Ｎ２）｜が閾値αｔｈよりも大きいとき、ステップ２５４０にて「Ｎｏ」と判定してステップ２５６０に進み、センサ適正判定終了フラグＸＳＯＫの値を「３」に設定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。換言すると、センサ適正判定終了フラグＸＳＯＫの値が「３」であることは、空燃比センサ５５の判定を試みたが判定を中止したことを示す。
【０３４０】
この場合（センサ適正判定終了フラグＸＳＯＫの値が「３」に設定された場合）、ＣＰＵは図１８のステップ１８０２にて「Ｎｏ」と判定するので、インバランス判定が実行されない。即ち、ＣＰＵは、「第Ｎ１気筒に供給される混合気の空燃比と第Ｎ２気筒に供給される混合気の空燃比とが相違している」と判断した場合、インバランス判定の実行を禁止する。
【０３４１】
以上、説明したように、第４判定装置は、
機関１０が備える少なくとも３以上の気筒のうちの一つの気筒であって同気筒に供給される混合気の空燃比が他の気筒に供給される混合気の空燃比から所定空燃比だけ乖離した強制インバランス空燃比となるように「噴射される燃料の量が変更される強制インバランス気筒」を、第１の気筒（第Ｎ１気筒）に所定期間設定した後に第２の気筒（第Ｎ２気筒）に所定期間設定する強制インバランス状態生成手段（図２５のステップ２５１０を参照。）を備える。
【０３４２】
更に、第４判定装置は、
前記強制インバランス気筒が前記第１の気筒に設定されている第１強制インバランス期間における前記空燃比センサ評価用パラメータを第１暫定評価用パラメータ（ΔＡＦev（Ｎ１））として取得し、前記強制インバランス気筒が前記第２の気筒に設定されている第２強制インバランス期間における前記空燃比センサ評価用パラメータを第２暫定評価用パラメータ（ΔＡＦev（Ｎ２））として取得し（図２５のステップ２５１０及びステップ２５３０を参照。）、
前記第１暫定評価用パラメータΔＡＦev（Ｎ１）と前記第２暫定評価用パラメータΔＡＦev（Ｎ２）との差の絶対値が所定閾値αｔｈ以下である場合、同第１暫定評価用パラメータΔＡＦev（Ｎ１）及び同第２暫定評価用パラメータΔＡＦev（Ｎ２）のうちの少なくとも一方に応じたパラメータを、前記センサ適正判定を実行する際に使用される最終的な空燃比センサ評価用パラメータΔＡＦevとして取得し（図２５のステップ２５４０及びステップ２５５０を参照。）、
前記第１暫定評価用パラメータΔＡＦev（Ｎ１）と前記第２暫定評価用パラメータΔＡＦev（Ｎ２）との差の絶対値が前記所定閾値αｔｈよりも大きい場合、前記空燃比センサ評価手段による前記センサ適正判定の実行を禁止するように構成された（図２５のステップ２５４０及びステップ２５６０を参照。）、評価用パラメータ取得手段を備える。
【０３４３】
なお、第４判定装置は、図２５のステップ２５６０にてセンサ適正判定終了フラグＸＳＯＫの値が「３」に設定されたとき、図２５のステップ２５５０、及び、ステップ１６６５乃至ステップ１６８０の処理を実行するが、ステップ１６７０の判定結果に拘わらずセンサ適正判定終了フラグＸＳＯＫの値を「３」に維持することにより、前記センサ適正判定の結果を無効とするように構成されていてもよい。
【０３４４】
これによれば、第１暫定評価用パラメータ及び第２暫定評価用パラメータの何れもが、何れも元々のインバランス状態の影響を受けることなく「空燃比センサの出力特性」を精度良く表している場合にのみ、第１暫定評価用パラメータ及び第２暫定評価用パラメータの少なくとも一方に基づいて得られる最終評価用パラメータに基づくセンサ適正判定が実行される。この結果、正常な空燃比センサ５５を「不適切な空燃比センサである」と判定してしまうことを回避することができる。
【０３４５】
＜第５実施形態＞
次に、本発明の第５実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第５判定装置」と称呼する。）について説明する。
【０３４６】
第５判定装置は、空燃比センサ５５の評価用パラメータを取得する際、強制インバランス気筒を順次変更する。即ち、第５判定装置は、空燃比センサ５５に排ガスが到達している総ての気筒のそれぞれを順番に強制インバランス気筒に設定する。更に、第５判定装置は、強制インバランス気筒のそれぞれに対して第４判定装置と同様に暫定評価用パラメータを取得する。
【０３４７】
そして、第５判定装置は、各気筒に対する暫定評価用パラメータ同士を比較することにより、互いに最も近い２つの暫定評価用パラメータを選択する。これは、インバランス気筒を強制インバランス気筒に設定した場合に得られる暫定評価用パラメータと、非インバランス気筒を強制インバランス気筒に設定した場合に得られる評価用パラメータと、は相違することに基づく。換言すると、２以上の気筒が同時にインバランス気筒となることは実質的にないので（或いは、何れかの気筒がインバランス気筒として先に検出されるので）、互いに最も近い２つの暫定評価用パラメータが得られた２つの気筒は、何れもインバランス気筒ではないと判定でき、従って、その２つの気筒の暫定評価用パラメータは空燃比センサ５５の出力特性を精度良く表すからである。
【０３４８】
更に、第５判定装置は、その選択した「互いに最も近い２つの暫定評価用パラメータΔＡＦev」を用いて最終評価用パラメータを求める。例えば、そのような最終評価用パラメータは、「互いに最も近い２つの暫定評価用パラメータ」の何れか一方であってもよく、あるいは「互いに最も近い２つの暫定評価用パラメータ」の平均値であってもよい。そして、第５判定装置は、そのように求めた最終評価用パラメータと基準パラメータとを比較して、空燃比センサ５５の出力特性がインバランス判定にとって適正であるか否かを判定する。
【０３４９】
（作動）
第５判定装置のＣＰＵは、図２６にフローチャートにより示したルーチンを実行することにより、空燃比センサ５５の出力特性を評価する点においてのみ、第４判定装置のＣＰＵと相違している。より具体的に述べると、ＣＰＵは所定のタイミングにてステップ２６００からステップ１６０５に進み、センサ適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定することにより、「空燃比センサ５５の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値であれば（即ち、センサ適正判定が完了していれば）、ＣＰＵはステップ２６９５に直接進んで本ルーチンを一旦終了する。
【０３５０】
センサ適正判定終了フラグＸＳＯＫの値が「０」であると、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定してステップ１６１０に進み、判定許可フラグＸkyokaの値が「１」であるか否かを判定する。このとき、判定許可フラグＸkyokaの値が「１」でなければ、ＣＰＵはステップ１６１０にて「Ｎｏ」と判定し、ステップ２６９５に直接進んで本ルーチンを一旦終了する。
【０３５１】
一方、判定許可フラグＸkyokaの値が「１」であると、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ２９０５に進み、強制インバランス気筒を先ず一定の期間だけ第１気筒に設定するとともに、所定時間が経過する毎に検出空燃比変化率ΔＡＦの絶対値（暫定評価用パラメータの元データ）を取得し、その絶対値を第１気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第１気筒を強制インバランス気筒に設定した時点から第Ｃ（Ｎ）番目に得られたデータであるとすると、その絶対値は元データΔＡＦ（１，Ｃ（Ｎ））として格納される。
【０３５２】
更に、ＣＰＵは、元データΔＡＦ（１，Ｃ（Ｎ））が閾値Ｃ（Ｎ）ｔｈ個得られると、強制インバランス気筒を前記一定の期間だけ第２気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔＡＦの絶対値を元データＡＦ（２，Ｃ（Ｎ））として格納する。次いで、ＣＰＵは、元データΔＡＦ（２，Ｃ（Ｎ））が閾値Ｃ（Ｎ）ｔｈ個得られると、強制インバランス気筒を前記一定の期間だけ第３気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔＡＦの絶対値を元データＡＦ（３，Ｃ（Ｎ））として格納する。
【０３５３】
その後、ＣＰＵは、元データΔＡＦ（３，Ｃ（Ｎ））が閾値Ｃ（Ｎ）ｔｈ個得られると、強制インバランス気筒を前記一定の期間だけ第４気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔＡＦの絶対値を元データＡＦ（４，Ｃ（Ｎ））として格納する。なお、強制インバランス気筒を設定する順序は、任意の順序（例えば、第１、３、４、２気筒の点火順等）であってもよい。また、第Ｎ気筒（Ｎ＝１，２，３，４）が強制インバランス気筒に設定されている期間を第Ｎ強制インバランス期間とも称呼する。
【０３５４】
即ち、ＣＰＵは、一定の期間の経過毎に値「Ｎ」を「１」から「１」ずつ増大し、「一定の第Ｎ強制インバランス期間」に渡り、第Ｎ気筒を強制インバランス気筒に設定し且つ第Ｎ気筒以外の気筒を非強制インバランス気筒に設定する。そして、ＣＰＵは第Ｎ強制インバランス期間において複数の検出空燃比変化率ΔＡＦの絶対値を取得する。なお、ＣＰＵは、強制インバランス気筒がどの気筒であっても、その強制インバランス気筒に対する燃料噴射量の補正量（上記値α）を一定の値（上記値αｐ又はαｍ）に設定する。
【０３５５】
次に、ＣＰＵはステップ２６２０に進み、総ての第Ｎ気筒（Ｎ＝１，２，３，４）についての複数の元データΔＡＦ（Ｎ，ｉ）が閾値Ｃ（Ｎ）ｔｈ個得られていることを確認し、ステップ２６３０に進む。
【０３５６】
次に、ＣＰＵはステップ２６３０において、第Ｎ気筒（Ｎ＝１，２，３，４）についての複数の元データΔＡＦ（Ｎ，ｉ）の平均値を「第Ｎ気筒の暫定評価用パラメータΔＡＦev（Ｎ）」として取得する。即ち、ＣＰＵは、第Ｎ強制インバランス期間において得られた複数の検出空燃比変化率ΔＡＦの絶対値の平均値を、第Ｎ気筒の暫定評価用パラメータΔＡＦev（Ｎ）として算出する。この結果、第１気筒の暫定評価用パラメータΔＡＦev（１）、第２気筒の暫定評価用パラメータΔＡＦev（２）、第３気筒の暫定評価用パラメータΔＡＦev（３）、及び、第４気筒の暫定評価用パラメータΔＡＦev（４）が取得される。
【０３５７】
次に、ＣＰＵはステップ２６４０に進み、これらの暫定評価用パラメータΔＡＦev（Ｎ）の中から、互いに最も近い値を有する２つのパラメータ（ΔＡＦ（Ｍ１），ΔＡＦ（Ｍ２）；Ｍ１，Ｍ２は互いに相違する１〜４の自然数）を選択する。そして、ＣＰＵは、この２つの暫定評価用パラメータの平均値（＝（ΔＡＦ（Ｍ１）＋ΔＡＦ（Ｍ２））／２）を最終評価用パラメータΔＡＦevとして採用する。なお、ＣＰＵは、選択された２つの暫定評価用パラメータのうちの何れか一方（例えば、小さい方又は大きい方）を最終評価用パラメータΔＡＦevとして採用してもよい。
【０３５８】
次に、ＣＰＵはステップ１６６５に進み、基準パラメータΔＡＦstをＲＯＭから読み出す。そして、「最終評価用パラメータΔＡＦevと基準パラメータΔＡＦstとの差の絶対値Ｄ」が「所定の評価用閾値Ｄｔｈ」よりも大きい場合、ＣＰＵはステップ１６７０からステップ１６７５に進み、センサ適正判定終了フラグＸＳＯＫの値に「２」を設定する。これに対し、絶対値Ｄが閾値Ｄｔｈ以下であるならば、ＣＰＵはステップ１６７０からステップ１６８０に進み、センサ適正判定終了フラグＸＳＯＫの値に「１」を設定する。以上が、第５判定装置の作動の概要である。
【０３５９】
（作動の詳細）
図２７は、第５判定装置のＣＰＵが実行する「空燃比センサ適正判定」の詳細なルーチンを示している。以下、簡単に説明すると、ＣＰＵは、ステップ１６０５及びステップ１６１０にて、センサ適正判定終了フラグＸＳＯＫの値が「０」であり且つ判定許可フラグＸkyokaの値が「１」であることを確認した後、ステップ２７０５にて「元データの取得が完了する前であるか否か（元データ完了取得フラグＸＦＩＮの値が「０」であるか否か）」を判定する。このとき、元データ完了取得フラグＸＦＩＮの値が「１」であれば、ＣＰＵはステップ２７９５に直接進んで本ルーチンを一旦終了する。元データ完了取得フラグＸＦＩＮの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０３６０】
元データ完了取得フラグＸＦＩＮの値が「０」であると、ＣＰＵはステップ２７１０乃至ステップ２７２０の処理により、判定許可フラグＸkyokaの値が「０」から「１」に変更になった直後にのみカウンタＣ（Ｎ）（但し、Ｎ＝１，２，３，４）の値を総て「０」に設定し、値「Ｎ」を「１」に設定する。
【０３６１】
その後、ＣＰＵはステップ２７２５に進み、特定気筒である第Ｎ気筒の燃料噴射量を他の気筒よりも増大させるための処理を行う。具体的に述べると、ＣＰＵは、強制インバランス状態フラグＸＥＮの値を「１」に設定し、値「α」を正の所定値αｐ（例えば、０．４５）に設定する。これにより、第Ｎ気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ増量される（図１４のステップ１４１０乃至ステップ１４４０を参照。）。
【０３６２】
次に、ＣＰＵはステップ１６２０乃至ステップ１６３５の処理を実行することにより、検出空燃比変化率ΔＡＦを取得する。次いで、ＣＰＵはステップ２７２５に進み、第Ｎ気筒カウンタＣ（Ｎ）の値を「１」だけ増大する。第Ｎ気筒カウンタＣ（Ｎ）は、ステップ２７１５及びステップ２７２０が実行された直後であれば第１気筒カウンタＣ（１）であり、その値は「１」となる。
【０３６３】
次に、ＣＰＵはステップ２７３０に進み、ステップ１６３５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を「第Ｎ気筒の第Ｃ（Ｎ）番目の元データΔＡＦ（Ｎ，Ｃ（Ｎ））」として格納する。例えば、現在の「Ｎ」の値が「１」であり、第Ｎ気筒カウンタＣ（Ｎ）の値が「１」であると、ステップ１６３５にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）が「第１気筒の第１番目の元データΔＡＦ（１，１）」として格納される。
【０３６４】
次に、ＣＰＵはステップ２７３５に進み、第Ｎ気筒カウンタＣ（Ｎ）が閾値Ｃ（Ｎ）ｔｈ以上であるか否かを判定し、第Ｎ気筒カウンタＣ（Ｎ）が閾値Ｃ（Ｎ）ｔｈ未満であればステップ２７５０に直接進む。これに対し、ＣＰＵは、第Ｎ気筒カウンタＣ（Ｎ）が閾値Ｃ（Ｎ）ｔｈ以上であれば、ステップ２７３５からステップ２７４０に進んで第Ｎ気筒カウンタＣ（Ｎ）の値を「０」に設定し、ステップ２７４５にて値「Ｎ」を「１」だけ増大した後、ステップ２７５０に進む。ステップ２７３５の処理は、第Ｎ気筒を強制インバランス気筒に設定した場合における検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜のデータ数が充分な数に到達したか否かを判定するステップである。
【０３６５】
次に、ＣＰＵはステップ２７５０に進み、値「Ｎ」が５以上であるか否かを判定することにより、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率ΔＡＦの絶対値（元データ）が取得されたか否かを判定する。このとき、元データの取得が完了していなければ（Ｎ＜５）、ＣＰＵはステップ２７５０からステップ２７９５に直接進んで本ルーチンを一旦終了する。
【０３６６】
これにより、以降、図２７のルーチンが実行されると、それまでとは異なる気筒が強制インバランス気筒に設定され（例えば、それまでの強制インバランス気筒が第１気筒であれば、第２気筒が強制インバランス気筒に設定され）、その新たに設定された強制インバランス気筒に対する元データが格納されて行く。
【０３６７】
一方、ＣＰＵがステップ２７５０の処理を実行する時点において、値「Ｎ」が「５」に到達していると、ＣＰＵはステップ２７５０からステップ２７５５に進んで元データ完了取得フラグＸＦＩＮの値を「１」に設定するとともに、強制インバランス状態フラグＸＥＮの値を「０」に設定する。次に、ＣＰＵはステップ２７６０に進み、上述した図２６のステップ２６４０と同様にして最終的な評価用パラメータΔＡＦevを決定する。
【０３６８】
即ち、ＣＰＵは、値「Ｎ」のそれぞれに対してΔＡＦ（Ｎ，Ｃ（Ｎ））（但し、Ｃ（Ｎ）は１〜Ｃ（Ｎ）ｔｈの自然数）の平均値を第Ｎ気筒の暫定評価用パラメータとして求め、求めた暫定評価用パラメータの中から互いに最も近い（差が小さい）２つの値を選択し、その選択した２つの値の平均値を最終評価用パラメータΔＡＦevとして採用する。その後、ＣＰＵはステップ２７９５に進んで本ルーチンを一旦終了する。
【０３６９】
なお、ＣＰＵがステップ１６１０の処理を実行する時点において、判定許可フラグＸkyokaの値が「０」であると、ＣＰＵはステップ２７６５乃至ステップ２７７５の処理を実行する。これにより、総ての元データΔＡＦ（Ｎ，自然数ｈ）、総ての第Ｎ気筒カウンタＣ（Ｎ）、及び、強制インバランス状態フラグＸＥＮの値、が「０」に設定される。
【０３７０】
更に、ＣＰＵは図２８に示したルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２８のステップ２８００から処理を開始し、ステップ１６０５、ステップ１６１０及びステップ２８１０にて、「センサ適正判定終了フラグＸＳＯＫの値が「０」であり、且つ、判定許可フラグＸkyokaの値が「１」であり、且つ、元データ完了取得フラグＸＦＩＮの値が「１」」であることが確認された場合、ステップ１６６５以降の処理を行う。即ち、図２７のステップ２７６０にて取得した最終評価用パラメータΔＡＦevと基準パラメータΔＡＦｓｔとの差の絶対値に基づいて、空燃比センサ５５が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。
【０３７１】
以上、説明したように、第５判定装置は、空燃比センサ５５に排ガスが到達している気筒の総てについて、それぞれを順番に強制インバランス気筒に設定し、各強制インバランス気筒に対応して暫定評価用パラメータを求め、その中で互いに最も近い値を有する二つの暫定評価用パラメータに基づいて最終評価用パラメータΔＡＦevを求める。従って、最終評価用パラメータΔＡＦevが、元々のインバランス気筒の影響を受け難い値であって、且つ、空燃比センサ５５の出力特性を精度良く表す値となるので、空燃比センサ適正判定を精度良く行うことができる。その結果、インバランス判定も精度よく実施することができる。
【０３７２】
＜第６実施形態＞
次に、本発明の第６実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第６判定装置」と称呼する。）について説明する。
【０３７３】
第６判定装置は、第５判定装置と同様、強制インバランス気筒を順次変更する。更に、第６判定装置は、所定時間の経過毎に、強制インバランス気筒に設定された第Ｎ気筒に対応させながら検出空燃比変化率ΔＡＦを元データΔＡＦ（Ｎ，Ｃ（Ｎ））として取得する。
【０３７４】
そして、第６判定装置は、総ての気筒に対する元データが取得されたとき、強制インバランス状態を終了し、その状態において所定時間の経過毎に検出空燃比変化率ΔＡＦを取得する。更に、第６判定装置は、その検出空燃比変化率ΔＡＦを用いてインバランス傾向を識別する。
【０３７５】
インバランス傾向の識別とは、何れか一つの気筒に供給される混合気の空燃比が、他の（残りの）気筒に供給される混合気の空燃比、からある程度以上乖離しているか否かを判定することを含む。但し、インバランス傾向があると判定される場合には、インバランス気筒の空燃比と非インバランス気筒の空燃比との空燃比の差が「空燃比気筒間インバランス状態である」と判定すべき程度にまで増大していない場合も含む。更に、インバランス傾向の識別は、インバランス傾向が有りと判定された場合に、そのインバランスが「リッチずれインバランス傾向」であるのか、「リーンずれインバランス傾向」であるのか、の判定を含む。
【０３７６】
その後、第６判定装置は、取得した元データΔＡＦ（Ｎ，Ｃ（Ｎ））と、インバランス傾向の識別結果と、から最終評価用パラメータを決定する。より具体的に述べると、第６判定装置は、インバランス傾向がないと判定した場合、元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中の負の値を有するデータを選択し、それらの平均値を最終評価用パラメータΔＡＦevとして採用する。
【０３７７】
一方、第６判定装置は、リッチずれインバランス傾向があると判定した場合、第Ｎ気筒毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中の負の値を有するデータ」を選択し、それらの平均値の絶対値（絶対値の平均値でもよい。）Ｘを第Ｎ気筒毎に求め、その算出した値Ｘの中の最小値を最終評価用パラメータΔＡＦevとして採用する。
【０３７８】
強制インバランス状態が発生していない状態においてリッチずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合における空燃比センサ５５に到達する空燃比は、他の気筒（非インバランス気筒、正常気筒）を強制インバランス気筒に設定した場合における空燃比センサ５５に到達する空燃比に比較して、急激に減少する挙動を示す。従って、検出空燃比変化率ΔＡＦのうちの負の値は、リッチずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合に、その絶対値が大きくなる。よって、上記の値Ｘは、元々のリッチずれインバランス状態の影響を最も受けていない値であると考えられるので、空燃比センサ５５の出力特性を精度良く表すパラメータであり、空燃比センサ５５の出力特性を評価するのに適切なパラメータである。
【０３７９】
他方、第６判定装置は、リーンずれインバランス傾向があると判定した場合、第Ｎ気筒毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中の負の値を有するデータ」を選択し、それらの平均値の絶対値（絶対値の平均値でもよい。）Ｘを第Ｎ気筒毎に求め、その算出した値Ｘの中の最大値を最終評価用パラメータΔＡＦevとして採用する。
【０３８０】
強制インバランス状態が発生していない状態においてリーンずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合における空燃比センサ５５に到達する空燃比は、他の気筒（非インバランス気筒、正常気筒）を強制インバランス気筒に設定した場合における空燃比センサ５５に到達する空燃比に比較して、緩慢に減少する挙動を示す。従って、検出空燃比変化率ΔＡＦのうちの負の値は、リーンずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合に、その絶対値が小さくなる。よって、上記の値Ｘは、元々のリーンずれインバランス状態の影響を最も受けていない値であると考えられるので、空燃比センサ５５の出力特性を精度良く表すパラメータであり、空燃比センサ５５の出力特性を評価するのに適切なパラメータである。
【０３８１】
そして、第６判定装置は、他の装置と同様、最終評価用パラメータΔＡＦevと基準パラメータΔＡＦｓｔとの差の絶対値に基づいて、空燃比センサ５５が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。
【０３８２】
（作動）
第６判定装置のＣＰＵは、図２９にフローチャートにより示したルーチンを実行することにより、空燃比センサ５５の出力特性を評価する。より具体的に述べると、ＣＰＵは所定のタイミングにてステップ２９００からステップ１６０５に進み、センサ適正判定終了フラグＸＳＯＫの値が「０」であるか否かを判定することにより、「空燃比センサ５５の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」以外の値（１又は２）であれば、ＣＰＵはステップ２９９５に直接進んで本ルーチンを一旦終了する。
【０３８３】
センサ適正判定終了フラグＸＳＯＫの値が「０」であると、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定してステップ１６１０に進み、判定許可フラグＸkyokaの値が「１」であるか否かを判定する。このとき、判定許可フラグＸkyokaの値が「１」でなければ、ＣＰＵはステップ１６１０にて「Ｎｏ」と判定し、ステップ２９９５に直接進んで本ルーチンを一旦終了する。
【０３８４】
一方、判定許可フラグＸkyokaの値が「１」であると、ＣＰＵはステップ１６１０にて「Ｙｅｓ」と判定してステップ２９０５に進み、強制インバランス気筒を順番に変更するとともに、各強制インバランス気筒毎に検出空燃比変化率ΔＡＦを求め、それを各強制インバランス気筒に対応させながら元データとして格納する。
【０３８５】
次に、ＣＰＵはステップ２６２０において、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率ΔＡＦが取得されたか否かを判定する。このとき、元データの取得が完了していなければ、ＣＰＵはステップ２９９５に直接進んで本ルーチンを一旦終了する。
【０３８６】
これに対し、元データの取得が完了していると、ＣＰＵはステップ２６２０にて「Ｙｅｓ」と判定してステップ２９１０に進み、強制インバランス状態を終了するとともに、複数の検出空燃比変化率ΔＡＦを取得し、それらの検出空燃比変化率ΔＡＦに基づいて、インバランス傾向の有無を識別する。
【０３８７】
より具体的には、検出空燃比変化率ΔＡＦの変化の様子が図８の（Ａ）のように略一定であれば、ＣＰＵはインバランス傾向なしと判定する。この場合、ＣＰＵは、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率（元データ）ΔＡＦのうち負の値を有するデータの絶対値｜ΔＡＦ｜の平均値を算出し、それを最終的な評価用パラメータ評価用パラメータΔＡＦevとして採用する。
【０３８８】
これに対し、検出空燃比変化率ΔＡＦの変化の様子が図８の（Ｂ）のように、比較的急激に減少した後に比較的穏やかに増大する傾向を示している場合、ＣＰＵはリッチインバランス傾向ありと判定する。この場合、ＣＰＵは、各気筒に対応する元データ（検出空燃比変化率ΔＡＦ）の中の負の値を有するデータの絶対値の平均値を各気筒別に算出し、その算出した平均値の中の最小値を評価用パラメータ評価用パラメータΔＡＦevとして採用する。
【０３８９】
他方、検出空燃比変化率ΔＡＦの変化の様子が図８の（Ｃ）のように、比較的急激に増大した後に比較的穏やかに減少する傾向を示している場合、ＣＰＵはリーンインバランス傾向ありと判定する。この場合、ＣＰＵは、各気筒に対応する元データ（検出空燃比変化率ΔＡＦ）の中の負の値を有するデータの絶対値の平均値を各気筒別に算出し、その算出した平均値の中の最大値を評価用パラメータΔＡＦevとして採用する。
【０３９０】
その後、ＣＰＵはステップ２９３０以降に進み、他の実施形態と同様に空燃比センサ５５の適否を判定する。但し、ステップ２９３０にて読み出される基準パラメータΔＡＦstは、インバランス傾向がない状態において上記強制インバランス状態を発生させた場合において、空燃比センサ５５の出力特性が基準空燃比センサの出力特性と一致しているときに得られた複数の検出空燃比変化率ΔＡＦのうち、負の値を有する検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜の平均値である。
【０３９１】
（作動の詳細）
第６判定装置のＣＰＵは、実際には第５判定装置のＣＰＵと同様、図２７に示したルーチンを実行する。但し、図２７のステップ２７３０において、検出空燃比変化率ΔＡＦそのものが元データ（Ｎ，Ｃ（Ｎ））として取得される。これにより、第Ｎ気筒を強制インバランス気筒に設定した場合における複数の検出空燃比変化率ΔＡＦ（Ｎ，Ｃ（Ｎ））が元データとして取得される。
【０３９２】
更に、ＣＰＵは、図３０に示したルーチンを所定時間の経過毎に実行する。以下、簡単に説明すると、ＣＰＵは、ステップ１６０５及びステップ１６１０にて、センサ適正判定終了フラグＸＳＯＫの値が「０」であり且つ判定許可フラグＸkyokaの値が「１」であることを確認した後、ステップ３０１０にて「元データの取得が完了した後であるか否か（元データ完了取得フラグＸＦＩＮの値が「１」であるか否か）」を判定する。
【０３９３】
ＣＰＵがステップ３０１０の処理を実行する時点において、元データ完了取得フラグＸＦＩＮの値が「１」であると、ＣＰＵはそのステップ３０１０にて「Ｙｅｓ」と判定してステップ３０２０に進み、強制インバランス状態フラグＸＥＮの値が「０」であることを確認する。そして、強制インバランス状態フラグＸＥＮの値が「０」であると、ＣＰＵはステップ１６２０乃至ステップ１６３５の処理を実行することにより、検出空燃比変化率ΔＡＦを取得する。次いで、ＣＰＵはステップ３０３０に進み、カウンタＣｍの値を「１」だけ増大する。
【０３９４】
次に、ＣＰＵはステップ３０４０に進み、ステップ１６３５にて取得された検出空燃比変化率ΔＡＦを「第Ｃｍ番目の元データΔＡＦ（Ｃｍ）」として格納する。その後、ＣＰＵはステップ３０５０のカウンタＣｍの値が閾値Ｃｍｔｈ以上であるか否かを判定する。閾値Ｃｍｔｈは、少なくとも複数の単位燃焼サイクルが経過したときに得られる検出空燃比変化率ΔＡＦの個数以上の値に設定されている。
【０３９５】
このとき、カウンタＣｍの値が閾値Ｃｍｔｈ未満であれば、ＣＰＵはステップ３０５０にて「Ｎｏ」と判定し、ステップ３０９５に直接進んで本ルーチンを一旦終了する。これに対し、カウンタＣｍの値が閾値Ｃｍｔｈ以上であると、ＣＰＵはステップ３０５０にて「Ｙｅｓ」と判定してステップ３０６０に進み、ステップ３０４０にて取得した複数の検出空燃比変化率ΔＡＦ（Ｃｍ）に基づいて、インバランス傾向を判定（識別）する。
【０３９６】
即ち、検出空燃比変化率ΔＡＦ（Ｃｍ）が図８の（Ａ）のように略一定であれば、ＣＰＵはインバランス傾向なしと判定し、インバランス傾向フラグＸkeikoの値を「１」に設定する。具体的には、検出空燃比変化率ΔＡＦ（Ｃｍ）の絶対値の平均値が所定値（インバランス傾向識別値）以下であれば、ＣＰＵはインバランス傾向なしと判断する。なお、インバランス傾向フラグＸkeikoの値も上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０３９７】
一方、検出空燃比変化率ΔＡＦ（Ｃｍ）が図８の（Ｂ）のように、相対的に急激な減少後に相対的に緩慢な増大を示すように変化していれば、ＣＰＵはリッチインバランス傾向ありと判定し、インバランス傾向フラグＸkeikoの値を「２」に設定する。具体的には、検出空燃比変化率ΔＡＦ（Ｃｍ）のうち、負の値を有するデータの絶対値の平均値Ｆｍが正の値を有するデータの絶対値の平均値Ｆｐよりも大きく、且つ、その平均値Ｆｐがインバランス傾向識別値以上であれば、ＣＰＵはリッチインバランス傾向ありと判定する。
【０３９８】
他方、検出空燃比変化率ΔＡＦ（Ｃｍ）が図８の（Ｃ）のように、相対的に急激な増大の後に相対的に緩慢な減少を示すように変化していれば、ＣＰＵはリーンインバランス傾向ありと判定し、インバランス傾向フラグＸkeikoの値を「３」に設定する。具体的には、検出空燃比変化率ΔＡＦ（Ｃｍ）のうち、負の値を有するデータの絶対値の平均値Ｆｍが正の値を有するデータの絶対値の平均値Ｆｐよりも小さく、且つ、その平均値Ｆｐがインバランス傾向識別値以上であれば、ＣＰＵはリーンインバランス傾向ありと判定する。
【０３９９】
その後、ＣＰＵはステップ３０７０に進み、評価準備完了フラグＸevokの値を「１」に設定する。評価準備完了フラグＸevokの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０４００】
なお、ＣＰＵはステップ１６０５、ステップ１６１０、ステップ３０１０、ステップ３０２０の何れかのステップにて「Ｎｏ」と判定した場合、以下に述べるステップ３０７５乃至ステップ３０８５の処理を実行し、ステップ３０９５に進む。
【０４０１】
ステップ３０７５：ＣＰＵは検出空燃比変化率ΔＡＦ（ｉ）を総て「０」に設定する。
ステップ３０８０：ＣＰＵはカウンタＣｍの値を「０」に設定する。
ステップ３０８５：ＣＰＵは評価準備完了フラグＸevokの値を「０」に設定する。
【０４０２】
加えて、ＣＰＵは、所定時間が経過する毎に図３１にフローチャートにより示したルーチンを実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図３１のステップ３１００から処理を開始してステップ３１１０に進み、評価準備完了フラグＸevokの値が「１」であるか否かを判定する。このとき、評価準備完了フラグＸevokの値が「０」であると、ＣＰＵはステップ３１９５に直接進んで本ルーチンを一旦終了する。
【０４０３】
一方、評価準備完了フラグＸevokの値が「１」であると、ＣＰＵはステップ３１１０からステップ３１２０に進み、インバランス傾向フラグＸkeikoの値が「１」であるか否かを判定する。そして、インバランス傾向フラグＸkeikoの値が「１」であれば、ＣＰＵはステップ３１２０からステップ３１３０に進み、図２７のステップ２７３０の処理により取得された複数の元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から負の値を有するデータを選択し、それらの絶対値の平均値（それらの平均値の絶対値でもよい。）を、最終的な評価用パラメータΔＡＦevとして採用する。
【０４０４】
その後、ＣＰＵはステップ３１３５に進み、ＲＯＭから基準パラメータΔＡＦｓｔを読み出す。この場合、読み出される基準パラメータは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに上記強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔＡＦのうちの負の値を有するデータの絶対値の平均値（それらの平均値の絶対値でもよい。）である。その後、ＣＰＵは、ステップ１６７０以降に進み、他の実施形態と同様に空燃比センサ５５の適正判定を実行する。
【０４０５】
他方、ＣＰＵがステップ３１２０の処理を実行する時点において、インバランス傾向フラグＸkeikoの値が「１」でなければ、ＣＰＵはステップ３１２０からステップ３１４０に進み、インバランス傾向フラグＸkeikoの値が「２」であるか否かを判定する。
【０４０６】
このとき、評価準備完了フラグＸevokの値が「２」であると、ＣＰＵはステップ３１４０からステップ３１５０に進み、値「Ｎ」毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から負の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。
【０４０７】
即ち、ＣＰＵは、元データΔＡＦ（１，ｍ）（ｍは１〜Ｃ（１）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（１）として求め、元データΔＡＦ（２，ｍ）（ｍは１〜Ｃ（２）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（２）として求め、元データΔＡＦ（３，ｍ）（ｍは１〜Ｃ（３）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（３）として求め、元データΔＡＦ（４，ｍ）（ｍは１〜Ｃ（４）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（４）として求める。
【０４０８】
そして、ＣＰＵは、それらの平均値の中の最小値を選択し、その最小値を最終評価用パラメータΔＡＦevとして採用する。その後、ＣＰＵはステップ３１３５以降に進み、空燃比センサ５５の適正判定を実行する。
【０４０９】
他方、ＣＰＵがステップ３１４０の処理を実行する時点において、インバランス傾向フラグＸkeikoの値が「２」でなければ、ＣＰＵはステップ３１４０からステップ３１６０に進み、値「Ｎ」毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から負の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。
【０４１０】
そして、ＣＰＵは、それらの平均値の中の最大値を選択し、その最大値を最終評価用パラメータΔＡＦevとして採用する。その後、ＣＰＵはステップ３１３５以降に進み、空燃比センサ５５の適正判定を実行する。
【０４１１】
以上、説明したように、第６判定装置は、強制インバランス状態を発生させていない場合において、インバランス傾向を識別する。そして、そのインバランス傾向の識別結果と、各気筒を強制インバランス気筒に設定した場合に得られた暫定評価用パラメータと、に基づいて、「元々のインバランス気筒の影響を受け難く、空燃比センサ５５の出力特性を最も良く表すパラメータ」を最終評価用パラメータΔＡＦevとして選択する。従って、空燃比センサ適正判定を精度良く行うことができる。その結果、インバランス判定も精度よく実施することができる。
【０４１２】
なお、第６判定装置は、第Ｎ気筒毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中の正の値を有するデータ」を選択し、それらの平均値の絶対値Ｙを暫定評価用パラメータとして第Ｎ気筒毎に求め、その暫定評価用パラメータとインバランス傾向とから最終評価用パラメータを求めても良い。
【０４１３】
即ち、、ＣＰＵは、インバランス傾向がないと判定したとき、複数の元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から正の値を有するデータを選択し、それらの絶対値の平均値（それらの平均値の絶対値でもよい。）を、最終的な評価用パラメータΔＡＦevとして採用する。
【０４１４】
更に、ＣＰＵは、リッチインバランス傾向があると判定したとき、値「Ｎ」毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から正の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。そして、ＣＰＵは、それらの平均値の中の最小値を選択し、その最大値を最終評価用パラメータΔＡＦevとして採用する。
【０４１５】
更に、ＣＰＵは、リーンインバランス傾向があると判定したとき、値「Ｎ」毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から正の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。そして、ＣＰＵは、それらの平均値の中の最大値を選択し、その最小値を最終評価用パラメータΔＡＦevとして採用する。
【０４１６】
なお、第６判定装置のＣＰＵは、リッチインバランス傾向があると判定したとき、又は、リーンインバランス傾向があると判定したとき、には、値「Ｎ」毎に「元データΔＡＦ（Ｎ，Ｃ（Ｎ））の中から正及び負の値の何れか一方を有するデータ」を選択するとともに、それらの絶対値の平均値を求め、その中で、最大値と最小値とを除いた値を最終評価用パラメータΔＡＦevとして採用してもよい。
【０４１７】
＜第７実施形態＞
次に、本発明の第７実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第７判定装置」と称呼する。）について説明する。
【０４１８】
第７判定装置は、空燃比センサ５５の出力特性が基準空燃比センサの出力特性に一致するように、空燃比センサ５５の出力特性（例えば、出力値Vabyfs、検出空燃比変化率ΔＡＦ、暫定評価用パラメータ及び最終評価用パラメータ等）を補正し、それらに基づいて得られた最終評価用パラメータを使用して空燃比気筒間インバランス判定を実行する。
【０４１９】
より具体的に述べると、第７判定装置は、図２７のステップ２７６０を除いたルーチンと、図３０のルーチンと、図３２（及び図３３）のルーチンと、を所定時間の経過毎にそれぞれ実行することにより、空燃比センサ５５の適正判定を行うとともに空燃比気筒間インバランス判定を実行する。但し、図２７のステップ２７３０において、ＣＰＵは、検出空燃比変化率ΔＡＦそのものを元データΔＡＦ（Ｎ，Ｃ（Ｎ））として取得する。
【０４２０】
図２７及び図３０のルーチンは説明済みである。よって、以下、図３２のルーチンについて説明する。
【０４２１】
所定のタイミングになると、ＣＰＵは図３２のステップ３２００から処理を開始してステップ３２１０に進み、センサ適正判定終了フラグＸＳＯＫの値が「１」及び「２」の何れかであるか否かを判定する。即ち、ＣＰＵは、空燃比センサ５５の出力特性の適否が判定済みであるか否かを判定する。このとき、センサ適正判定終了フラグＸＳＯＫの値が「０」であれば、ＣＰＵはステップ３２１０からステップ１８１８及びステップ１８２０を経由してステップ３２９５に直接進んで本ルーチンを一旦終了する。これに対し、センサ適正判定終了フラグＸＳＯＫの値が「１」又は「２」であれば、ＣＰＵはステップ３２１０からステップ１８０４に進む。なお、ＣＰＵは、ステップ３２１０にて、センサ適正判定終了フラグＸＳＯＫの値が「１」であるか否かを判定してもよい。この場合、センサ適正判定終了フラグＸＳＯＫの値が「２」であると、以下に述べるインバランス判定は実行されない。
【０４２２】
ＣＰＵはステップ１８０４にて判定許可フラグＸkyokaの値が「１」であるか否かを判定する。このとき、判定許可フラグＸkyokaの値が「０」であると、ＣＰＵはステップ１８０４からステップ１８１８及びステップ１８２０を経由してステップ３２９５に直接進んで本ルーチンを一旦終了する。これに対し、判定許可フラグＸkyokaの値が「１」であれば、ＣＰＵはステップ１８０４からステップ３２２０に進む。
【０４２３】
ＣＰＵはステップ３２２０にて評価準備完了フラグＸevokの値が「１」であるか否かを判定する。このとき、評価準備完了フラグＸevokの値が「０」であると、ＣＰＵはステップ１８０４からステップ１８１８及びステップ１８２０を経由してステップ３２９５に直接進んで本ルーチンを一旦終了する。これに対し、評価準備完了フラグＸevokの値が「１」であれば、ＣＰＵはステップ３２２０にて「Ｙｅｓ」と判定し、ステップ１８０６乃至ステップ１８１２の処理を行う。これにより、今回の検出空燃比abyfsと、前回の検出空燃比abyfsoldが取得され、カウンタＣｓの値が「１」だけ増大させられる。なお、カウンタＣｓの値は、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０４２４】
次に、ＣＰＵはステップ３２３０に進み、今回の検出空燃比abyfsから前回の検出空燃比abyfsoldを減じることにより、暫定検出空燃比変化率ΔＡＦ０を取得する。その後、ＣＰＵはステップ３２４０に進み、この暫定検出空燃比変化率ΔＡＦ０を補正し、その補正した暫定検出空燃比変化率ΔＡＦ０を検出空燃比変化率ΔＡＦとして採用する。
【０４２５】
より具体的に述べると、ＣＰＵはステップ３２４０に進んだとき、図３３に示した検出空燃比変化率ΔＡＦ補正ルーチンを、ステップ３３００から実行する。
【０４２６】
ＣＰＵはステップ３３００からステップ３３０５に進み、インバランス傾向フラグＸkeikoの値が「１」であるか否かを判定する。いま、インバランス傾向フラグＸkeikoの値が「１」であると仮定すると、ＣＰＵは以下に述べるステップ３３１０乃至ステップ３３２５の処理を順に行ってステップ３３３０に進む。
【０４２７】
ステップ３３１０：ＣＰＵは、図２７のステップ２７３０の処理により取得された複数の元データΔＡＦ（Ｎ，ｉ）の中から負の値を有するデータを選択し、それらの絶対値の平均値（それらの平均値の絶対値でもよい。）を負側パラメータΔＡＦｍとして採用する。
【０４２８】
ステップ３３１５：ＣＰＵは、図２７のステップ２７３０の処理により取得された複数の元データΔＡＦ（Ｎ，ｉ）の中から正の値を有するデータを選択し、それらの絶対値の平均値（それらの平均値の絶対値でもよい。）を正側パラメータΔＡＦｐとして採用する。
【０４２９】
ステップ３３２０：ＣＰＵは、負側基準パラメータΔＡＦｍｓｔと正側基準パラメータΔＡＦｐｓｔとをＲＯＭから読み出す。
【０４３０】
負側基準パラメータΔＡＦｍｓｔは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに、図２７のステップ２７２５による状態と同じ強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔＡＦのうちの負の値を有するデータの絶対値の平均値（それらの平均値の絶対値でもよい。）である。
【０４３１】
正側基準パラメータΔＡＦｐｓｔは、上記基準空燃比センサを空燃比センサ５５に代えて取り付けるとともに、図２７のステップ２７２５による状態と同じ強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔＡＦのうちの正の値を有するデータの平均値（絶対値の平均値、又は平均値の絶対値でもよい。）である。
【０４３２】
ステップ３３２５：ＣＰＵは、負側基準パラメータΔＡＦｍｓｔを負側パラメータΔＡＦｍで除することにより負側補正係数ｋｍ（＝ΔＡＦｍｓｔ／ΔＡＦｍ）を求める。更に、ＣＰＵは、正側基準パラメータΔＡＦｐｓｔを正側パラメータΔＡＦｐで除することにより正側補正係数ｋｐ（＝ΔＡＦｐｓｔ／ΔＡＦｐ）を求める。即ち、ＣＰＵは、暫定評価用パラメータ（ΔＡＦｍ、ΔＡＦｐ）に対する基準パラメータ（ΔＡＦｍst、ΔＡＦｐst）の比に応じた値を補正量（ｋｍ、ｋｐ）として算出する。
【０４３３】
次に、ＣＰＵはステップ３３３０に進み、図３２のステップ３２３０にて得られている暫定検出空燃比変化率ΔＡＦ０が正であるか否か（「０」以上であるか否か）を判定する。そして、暫定検出空燃比変化率ΔＡＦ０が正であれば、ＣＰＵはステップ３３３０からステップ３３３５に進み、暫定検出空燃比変化率ΔＡＦ０に正側補正係数ｋｐを乗じた値を検出空燃比変化率ΔＡＦ（＝ｋｐ・ΔＡＦ０）として採用する。
【０４３４】
一方、暫定検出空燃比変化率ΔＡＦ０が負であれば、ＣＰＵはステップ３３３０からステップ３３４０に進み、暫定検出空燃比変化率ΔＡＦ０に負側補正係数ｋｍを乗じた値を検出空燃比変化率ΔＡＦ（＝ｋｍ・ΔＡＦ０）として採用する。そして、ＣＰＵはステップ３３９５を経由して、図３２のステップ１８１６以降に進む。これにより、空燃比センサ５５の出力特性の一つである暫定検出空燃比変化率ΔＡＦ０が、基準空燃比センサが示すであろう検出空燃比変化率に接近（又は一致）させられ、その値が検出空燃比変化率ΔＡＦとして算出される。
【０４３５】
図３２のステップ１８１６以降の処理は、図１８を参照して説明したステップ１８１６以降の処理と同じである。従って、ＣＰＵは、ステップ３２４０にて補正された検出空燃比変化率ΔＡＦ（実際には、複数の検出空燃比変化率ΔＡＦの絶対値の平均値）を用いてインバランス判定を行う。
【０４３６】
ところで、ＣＰＵが図３３のステップ３３０５の処理を実行する時点において、インバランス傾向フラグＸkeikoの値が「２」であるとすると、ＣＰＵはステップ３３０５にて「Ｎｏ」と判定し、インバランス傾向フラグＸkeikoの値が「２」であるか否かを判定するステップ３３４５にて「Ｙｅｓ」と判定する。その後、ＣＰＵは以下に述べるステップ３３５０乃至ステップ３３６０の処理を順に行ってステップ３３２０以降へと進む。
【０４３７】
ステップ３３５０：ＣＰＵは、値「Ｎ」毎に「図２７のステップ２７３０の処理により取得された複数の元データΔＡＦ（Ｎ，ｉ）の中から負の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。
【０４３８】
即ち、ＣＰＵは、元データΔＡＦ（１，ｉ）（ｉは１〜Ｃ（１）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（１）として求め、元データΔＡＦ（２，ｉ）（ｉは１〜Ｃ（２）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（２）として求め、元データΔＡＦ（３，ｉ）（ｉは１〜Ｃ（３）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（３）として求め、元データΔＡＦ（４，ｉ）（ｉは１〜Ｃ（４）ｔｈの自然数）のうち負の値を有するデータの絶対値の平均値を平均値ＡｖｅΔＡＦ（４）として求める。
【０４３９】
そして、ＣＰＵは、求めた平均値ＡｖｅΔＡＦ（Ｎ）のうちの最小値に対応する値Ｎを値Ｌとして特定する。即ち、平均値ＡｖｅΔＡＦ（１）、平均値ＡｖｅΔＡＦ（２）、平均値ＡｖｅΔＡＦ（３）及び平均値ＡｖｅΔＡＦ（４）の中から最小値を選択し、その選択した平均値が平均値ＡｖｅΔＡＦ（１）であるとすれば値Ｌを「１」に設定し、その選択した平均値が平均値ＡｖｅΔＡＦ（２）であるとすれば値Ｌを「２」に設定し、その選択した平均値が平均値ＡｖｅΔＡＦ（３）であるとすれば値Ｌを「３」に設定し、その選択した平均値が平均値ＡｖｅΔＡＦ（４）であるとすれば値Ｌを「４」に設定する。
【０４４０】
ステップ３３５５：ＣＰＵは、元データΔＡＦ（Ｌ，ｉ）の中から負の値を有するデータを選択し、それらの平均値の絶対値（絶対値の平均値でもよい。）を負側パラメータΔＡＦｍとして取得する。
【０４４１】
ステップ３３６０：ＣＰＵは、元データΔＡＦ（Ｌ，ｉ）の中から正の値を有するデータを選択し、それらの平均値（絶対値の平均値でもよい。）を正側パラメータΔＡＦｐとして取得する。
【０４４２】
更に、ＣＰＵがステップ３３０５の処理を実行する時点において、インバランス傾向フラグＸkeikoの値が「３」であるとすると、ＣＰＵはステップ３３０５及びステップ３３４５の両ステップにて「Ｎｏ」と判定して以下に述べるステップ３３６５の処理を行い、その後、ステップ３３５５及びステップ３３６０を経由して３３２０以降へと進む。
【０４４３】
ステップ３３６５：ＣＰＵは、値「Ｎ」毎に「図２７のステップ２７３０の処理により取得された複数の元データΔＡＦ（Ｎ，ｉ）の中から負の値を有するデータ」を選択し、それらの絶対値の平均値ＡｖｅΔＡＦ（Ｎ）を第Ｎ気筒の暫定評価用パラメータとして求める。そして、ＣＰＵは、求めた平均値ＡｖｅΔＡＦ（Ｎ）のうちの最大値に対応する値Ｎを値Ｌとして特定する
【０４４４】
以上、説明したように、第７判定装置は、インバランス判定用パラメータＡｖｅｆを空燃比センサ５５の出力値Vabyfsに基づいて取得するとともに、その取得したインバランス判定用パラメータＡｖｅｆが所定のインバランス判定用閾値ΔＡＦ１ｔｈ以上であるか否かの比較結果に基づいて空燃比気筒間インバランス状態が発生しているか否かの判定（インバランス判定）を実行するインバランス判定手段を備える（図３２のルーチン、特に、ステップ１８３６を参照。）。
【０４４５】
このインバランス判定手段は、
前記インバランス判定を実行する前に、機関１０が備える少なくとも３以上の気筒のうちの一つの気筒に供給される混合気の空燃比が同少なくとも３以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比から乖離した強制インバランス状態が強制的に発生するように複数の燃料噴射弁２５から噴射される燃料の量を変更する強制インバランス状態生成手段（図２７のステップ２７７５を参照。）と、
前記強制インバランス状態が発生させられている状態における前記空燃比センサの出力値に基づいて前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータを取得する評価用パラメータ取得手段（図２７のステップ２７３０、図３３のステップ３３１０、ステップ３３１５、ステップ３３５０及びステップ３３６５等を参照。）と、
前記取得された評価用パラメータ（ΔＡＦｍ，ΔＡＦｐ）を予め定められた基準パラメータ（ΔＡＦｍst、ΔＡＦｐst）に接近させるための補正量（ｋｍ、ｋｐ）を算出する補正量算出手段（図３２のステップ３３２５を参照。）と、
前記空燃比センサの出力値、前記空燃比センサの出力値に基づいて取得される前記インバランス判定用パラメータを求めるために同空燃比センサの出力値に基づいて取得される元データ、及び、前記インバランス判定用パラメータ、のうちの少なくとも一つ（本例においては元データΔＡＦ０）を前記算出した補正量（ｋｍ、ｋｐ）により補正し、同補正したデータに基づいて前記インバランス判定用パラメータＡｖｅｆを求めるインバランス判定用パラメータ取得手段（図３２のステップ３２４０、図３３のステップ３３３０乃至ステップ３３４０、図３２のステップ１８１６乃至ステップ１８３４を参照。）と、
を備える。
【０４４６】
これによれば、求められるインバランス判定用パラメータＡｖｅｆは、空燃比センサ５５が基準空燃比センサであるときに得られる値に近づく。従って、インバランス判定をより精度良く実行することができる。
【０４４７】
なお、第７判定装置は、図３２のステップ１８１０にて求められる検出空燃比abyfsに、負側補正係数ｋｍ及び正側補正係数ｋｐの平均値ｋを乗じることにより、補正後の検出空燃比abyfsを得て、その補正後の検出空燃比abyfsに基づいてステップ１８１６にて使用される検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜を求めてもよい。
【０４４８】
更に、第７判定装置は、図３２のステップ３２４０にてΔＡＦ０を補正することなく（但し、負側補正係数ｋｍ及び正側補正係数ｋｐは求めておく）、ステップ１８１３にて得られた評価用パラメータＡｖｅｆに、負側補正係数ｋｍ及び正側補正係数ｋｐの平均値ｋを乗じることにより、インバランス判定用パラメータＡｖｅｆを取得してもよい。
【０４４９】
更に、第７判定装置は、強制インバランス状態を発生させた場合における単位燃焼サイクル期間内の検出空燃比abyfsの最大値Ｍａｘを求め、強制インバランス状態を発生させていない場合であって空燃比センサ５５を基準空燃比センサに置換したときの単位燃焼サイクル期間内の検出空燃比abyfsの最大値Ｍａｘｓｔ（基準パラメータ）を予め求めておき、最大値Ｍａｘｓｔを最大値Ｍａｘで除した値を補正量ｋとして求めてもよい。そして、第７判定装置は、強制インバランス状態を発生させていない場合の単位燃焼サイクル期間内の検出空燃比abyfsの最大値Ｍａｘactを求め、その最大値Ｍａｘactに補正量ｋを乗じた値をインバランス判定用パラメータＭａｘfinalとして求め、そのインバランス判定用パラメータＭａｘfinalがインバランス判定用閾値Ｍａｘｔｈ以上であるときに空燃比気筒間インバランス状態が発生したと判定するように構成されてもよい。
【０４５０】
同様に、第７判定装置は、強制インバランス状態を発生させた場合における単位燃焼サイクル期間内の検出空燃比abyfsの最小値Ｍｉｎを求め、強制インバランス状態を発生させていない場合であって空燃比センサ５５を基準空燃比センサに置換したときの単位燃焼サイクル期間内の検出空燃比abyfsの最小値Ｍｉｎｓｔ（基準パラメータ）を予め求めておき、最小値Ｍｉｎｓｔを最小値Ｍｉｎで除した値を補正量ｋとして求めてもよい。そして、第７判定装置は、強制インバランス状態を発生させていない場合の単位燃焼サイクル期間内の検出空燃比abyfsの最小値Ｍｉｎactを求め、その最小値Ｍｉｎactに補正量ｋを乗じた値をインバランス判定用パラメータＭｉｎfinalとして求め、そのインバランス判定用パラメータＭｉｎfinalがインバランス判定用閾値Ｍｉｎｔｈ以下であるときに空燃比気筒間インバランス状態が発生したと判定するように構成されてもよい。
【０４５１】
なお、このような場合においても、各気筒を順番に強制インバランス気筒に設定して気筒別の最大値Ｍａｘ（Ｎ）及び最小値Ｍｉｎ（Ｎ）を求めるとともに、非強制インバランス状態におけるインバランス傾向を識別し、そのインバランス傾向に基づいて、インバランス気筒の影響を最も受けていない最大値Ｍａｘ（Ｎ）及び最小値Ｍｉｎ（Ｎ）を選択し、それらを基準パラメータである最大値Ｍａｘｓｔ及び基準パラメータである最小値Ｍｉｎｓｔでそれぞれ除することにより、上記補正量ｋを算出してもよい。
【０４５２】
更に、第７判定装置は、負側補正係数ｋｍ及び正側補正係数ｋｐ等の補正量に応じてインバランス判定用閾値を補正する（これらの補正量の逆数をインバランス判定用閾値に乗じる）ことにより、最終的なインバランス判定用閾値を決定してもよい。
【０４５３】
以上、説明したように、本発明の各実施形態に係る空燃比気筒間インバランス判定装置は、空燃比センサ５５の出力特性が基準空燃比センサの出力特性と乖離した場合であっても、誤った空燃比気筒間インバランス判定を実行する可能性を低減することができる。
【０４５４】
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、インバランス判定用パラメータは、次のようなパラメータとしてもよい。
【０４５５】
（Ｐ１）インバランス判定用パラメータは、空燃比センサ５５の出力値Vabyfs又は検出空燃比abyfsの軌跡長であってもよい。
【０４５６】
（Ｐ２）インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔＡＦのうちの絶対値の最大値であってもよい。
（Ｐ３）インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔＡＦのうちの負の値を有するデータの絶対値の最大値であってもよい。
（Ｐ４）インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔＡＦのうちの正の値を有するデータの絶対値の最大値であってもよい。
【０４５７】
（Ｐ５）インバランス判定用パラメータは、検出空燃比変化率ΔＡＦの変化率に応じた値（空燃比センサの出力値Vabyfs又は検出空燃比abyfsの時間に関する二階微分値）の絶対値であってもよい。
（Ｐ６）インバランス判定用パラメータは、単位燃焼サイクル期間における「空燃比センサの出力値Vabyfs又は検出空燃比abyfsの最大値又は最小値」であってもよい。
【０４５８】
更に、空燃比センサ評価用パラメータは、上記インバランス判定用パラメータと同じであってもよい。
【符号の説明】
【０４５９】
１０…内燃機関、２１…燃焼室、２５…燃料噴射弁、４１…エキゾーストマニホールド、４１ｂ…排気集合部、４２…エキゾーストパイプ、４３…三元触媒、４４…下流側触媒、５５…空燃比センサ。
【図１】
2011047332.tif 000003
【図２】
2011047332.tif 000004
【図３】
2011047332.tif 000005
【図４】
2011047332.tif 000006
【図５】
2011047332.tif 000007
【図６】
2011047332.tif 000008
【図７】
2011047332.tif 000009
【図８】
2011047332.tif 000010
【図９】
2011047332.tif 000011
【図１０】
2011047332.tif 000012
【図１１】
2011047332.tif 000013
【図１２】
2011047332.tif 000014
【図１３】
2011047332.tif 000015
【図１４】
2011047332.tif 000016
【図１５】
2011047332.tif 000017
【図１６】
2011047332.tif 000018
【図１７】
2011047332.tif 000019
【図１８】
2011047332.tif 000020
【図１９】
2011047332.tif 000021
【図２０】
2011047332.tif 000022
【図２１】
2011047332.tif 000023
【図２２】
2011047332.tif 000024
【図２３】
2011047332.tif 000025
【図２４】
2011047332.tif 000026
【図２５】
2011047332.tif 000027
【図２６】
2011047332.tif 000028
【図２７】
2011047332.tif 000029
【図２８】
2011047332.tif 000030
【図２９】
2011047332.tif 000031
【図３０】
2011047332.tif 000032
【図３１】
2011047332.tif 000033
【図３２】
2011047332.tif 000034
【図３３】
2011047332.tif 000035