(57)【要約】本発明の空燃比気筒間インバランス判定装置は、保護カバー及びその保護カバー内部に収容された空燃比検出素子を含む空燃比センサと、インバランス判定手段と、を備える。インバランス判定手段は、一定のサンプリング時間ｔｓが経過する毎に空燃比センサ出力Ｖａｂｙｆｓに基づいて検出空燃比ａｂｙｆｓを取得し、新たに検出された今回の検出空燃比ａｂｙｆｓとサンプリング時間ｔｓ前に検出された前回の検出空燃比ａｂｙｆｓｏｌｄとの差（検出空燃比変化率ΔＡＦ）及び検出空燃比変化率ΔＡＦの平均値等を空燃比変化率指示量として取得する。そして、インバランス判定手段は、空燃比変化率指示量の大きさがインバランス判定用閾値よりも大きいとき、空燃比気筒間インバランス状態が発生したと判定する。
2011001539.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を有する多気筒内燃機関に適用される空燃比気筒間インバランス判定装置であって、
前記機関の排気通路であって前記複数の気筒のうちの少なくとも２以上の気筒から排出された排ガスが集合する排気集合部、又は、同排気通路であって同排気集合部よりも下流側の部位、に配設されるとともに、空燃比検出素子と、前記空燃比検出素子を覆うように同空燃比検出素子をその内部に収容し且つ前記排気通路を流れる排ガスを前記内部に流入させる流入孔及び前記内部に流入した排ガスを前記排気通路に流出させる流出孔を備える保護カバーと、を含む空燃比センサであって、前記空燃比検出素子が同空燃比検出素子に到達した排ガスの空燃比に応じた出力を空燃比センサ出力として発生する、空燃比センサと、
前記空燃比センサ出力により表される空燃比の単位時間当たりの変化量である検出空燃比変化率に応じて変化する空燃比変化率指示量を前記空燃比センサ出力に基づいて取得するとともに、前記少なくとも２以上の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の間に不均衡が生じている空燃比気筒間インバランス状態が発生しているか否かの判定を、前記取得された空燃比変化率指示量に基づいて実行するインバランス判定手段と、
を備えた空燃比気筒間インバランス判定装置。
【請求項２】
請求の範囲１に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成された空燃比気筒間インバランス判定装置。
【請求項３】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさが前記インバランス判定用閾値よりも大きいことを前記比較の結果が示した場合に前記空燃比気筒間インバランス状態が発生していると判定するように構成された空燃比気筒間インバランス判定装置。
【請求項４】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を、前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項５】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において前記検出空燃比変化率を複数取得するとともに、前記取得された複数の前記検出空燃比変化率の大きさの平均値を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項６】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において前記検出空燃比変化率を複数取得するとともに、前記取得された複数の検出空燃比変化率のうちその大きさが最大である検出空燃比変化率を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項７】
請求の範囲５又は請求の範囲６に記載の空燃比気筒間インバランス判定装置において、
前記データ取得期間は、前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間の自然数倍の期間に定められている空燃比気筒間インバランス判定装置。
【請求項８】
請求の範囲６に記載の空燃比気筒間インバランス判定装置において、
前記データ取得期間は、前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間の長さ以上の期間に定められている空燃比気筒間インバランス判定装置。
【請求項９】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間よりも短い一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得し、
前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率の中からその大きさが最大である検出空燃比変化率を最大変化率として選択し、
複数の前記単位燃焼サイクル期間のそれぞれに対して選択された前記最大変化率の平均値を求め、同平均値を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１０】
請求の範囲１乃至請求の範囲９の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
単位時間あたりに前記機関に吸入される空気の量である吸入空気流量が所定の第１閾値空気流量よりも大きいとき前記空燃比気筒間インバランス状態が発生しているか否かの判定を実行し、前記吸入空気流量が前記第１閾値空気流量よりも小さいとき前記空燃比気筒間インバランス状態が発生しているか否かの判定を実行しないように構成された空燃比気筒間インバランス判定装置。
【請求項１１】
請求の範囲２乃至請求の範囲９の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
単位時間あたりに前記機関に吸入される空気の量である吸入空気流量が大きいほど前記インバランス判定用閾値を大きい値に変更するように構成された空燃比気筒間インバランス判定装置。
【請求項１２】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きい場合には前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きい場合には前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較するとともに、前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１３】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較し、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値の大きさよりも大きい場合に前記空燃比気筒間インバランス状態が発生していると判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１４】
請求の範囲１３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きい場合、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１５】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の大きさの平均値を前記増大変化率指示量として取得するとともに、前記複数の前記検出空燃比変化率のうちの負の値を有する変化率の大きさの平均値を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１６】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記増大変化率指示量として取得するとともに同複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１７】
請求の範囲１５又は請求の範囲１６に記載の空燃比気筒間インバランス判定装置において、
前記データ取得期間は、前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間の自然数倍の期間に定められている空燃比気筒間インバランス判定装置。
【請求項１８】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間よりも短い一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得し且つ前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、更に、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を増大変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された前記増大変化率最大値の平均値を求め、同平均値を前記増大変化率指示量として取得し、且つ、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を減少変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された前記減少変化率最大値の平均値を求め、同平均値を前記減少変化率指示量として取得する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１９】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記増大変化率指示量と前記減少変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成された空燃比気筒間インバランス判定装置。
【請求項２０】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記減少変化率指示量と前記増大変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成された空燃比気筒間インバランス判定装置。
【請求項２１】
請求の範囲１９又は請求の範囲２０に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記減少変化率指示量が前記増大変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記増大変化率指示量が前記減少変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項２２】
請求の範囲１９乃至請求の範囲２１の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する検出空燃比変化率の大きさの平均値を前記増大変化率指示量として取得するとともに、前記複数の検出空燃比変化率のうちの負の値を有する検出空燃比変化率の大きさの平均値を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項２３】
請求の範囲１９乃至請求の範囲２１の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、前記サンプリング期間よりも長い期間であって前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値を前記増大変化率指示量として取得するとともに同複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項２４】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率の大きさが所定の有効判定閾値以上であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用し、前記取得された検出空燃比変化率の大きさが所定の有効判定閾値未満であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２５】
請求の範囲１に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが所定の有効判定閾値以上である検出空燃比変化率のデータの数を表す有効データ数を前記空燃比変化率指示量の一つとして取得するとともに、同データ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが同有効判定閾値未満である検出空燃比変化率のデータの数を表す無効データ数を前記空燃比変化率指示量の他の一つとして取得し、
前記有効データ数と前記無効データ数とに基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成された空燃比気筒間インバランス判定装置。
【請求項２６】
請求の範囲２５に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記有効データ数が、前記有効データ数と前記無効データ数との和である全データ数に基づいて変化するデータ数閾値よりも多いとき、前記空燃比気筒間インバランス状態が発生していると判定するように構成された空燃比気筒間インバランス判定装置。
【請求項２７】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出し、且つ、その検出したリーンピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２８】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出し、且つ、その検出したリッチピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２９】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出するとともに、連続して検出される二つのリーンピーク時点間の時間であるリーンピーク・リーンピーク時間が閾値時間よりも短い場合、その二つのリーンピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項３０】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出するとともに、連続して検出される二つのリッチピーク時点間の時間であるリッチピーク・リッチピーク時間が閾値時間よりも短い場合、その二つのリッチピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多気筒内燃機関に適用され、各気筒に供給される混合気の空燃比（気筒別空燃比）の間に不均衡が生じているか否か（空燃比気筒間インバランス状態が発生しているか否か）を判定（監視・検出）することができる「内燃機関の空燃比気筒間インバランス判定装置」に関する。
【背景技術】
【０００２】
従来から、内燃機関の排気通路に配設された三元触媒と、同排気通路であって同三元触媒の上流及び下流にそれぞれ配置された上流側空燃比センサ及び下流側空燃比センサと、を備えた空燃比制御装置が広く知られている。この空燃比制御装置は、機関に供給される混合気の空燃比（機関の空燃比）が理論空燃比と一致するように、上流側空燃比センサの出力と下流側空燃比センサの出力とに基いて空燃比フィードバック量を算出し、その空燃比フィードバック量により機関の空燃比をフィードバック制御するようになっている。更に、上流側空燃比センサの出力及び下流側空燃比センサの出力の何れか一方のみに基づいて空燃比フィードバック量を算出し、その空燃比フィードバック量により機関の空燃比をフィードバック制御する空燃比制御装置も提案されている。このような空燃比制御装置において使用される空燃比フィードバック量は、全気筒に対して共通する制御量である。
ところで、一般に、電子燃料噴射式内燃機関は、各気筒又は各気筒に連通した吸気ポートに少なくとも一つの燃料噴射弁を備えている。従って、ある特定の気筒の燃料噴射弁の特性が「指示された燃料噴射量よりも過大な量の燃料を噴射する特性」となると、その特定の気筒に供給される混合気の空燃比（その特定気筒の空燃比）のみが大きくリッチ側に変化する。即ち、気筒間における空燃比の不均一性（空燃比気筒間ばらつき、空燃比の気筒間インバランス）が大きくなる。換言すると、気筒別空燃比の間に不均衡が生じる。
この場合、機関全体に供給される混合気の空燃比の平均は、理論空燃比よりもリッチ側の空燃比となる。従って、全気筒に対して共通する空燃比フィードバック量により、上記特定の気筒の空燃比は理論空燃比に近づけられるようにリーン側へと変更され、同時に、他の気筒の空燃比は理論空燃比から遠ざけられるようにリーン側へと変更させられる。この結果、機関に供給される混合気の全体の空燃比の平均は略理論空燃比に一致させられる。
しかしながら、上記特定の気筒の空燃比は依然として理論空燃比よりもリッチ側の空燃比となり、残りの気筒の空燃比は理論空燃比よりもリーン側の空燃比となるから、各気筒における混合気の燃焼状態は完全燃焼とは相違した燃焼状態となる。この結果、各気筒から排出されるエミッションの量（未燃物の量及び窒素酸化物の量）が増大する。このため、機関に供給される混合気の空燃比の平均が理論空燃比であったとしても、増大したエミッションを三元触媒が浄化しきれず、結果として、エミッションが悪化する虞がある。従って、気筒間における空燃比の不均一性が過大になっていること（空燃比気筒間インバランス状態が発生していること）を検出し、何らかの対策を講じさせるようにすることはエミッションを悪化させないために重要である。なお、空燃比気筒間インバランスは、特定の気筒の燃料噴射弁の特性が「指示された燃料噴射量よりも過小な量の燃料を噴射する特性」となった場合、或いは、ＥＧＲガス及び蒸発燃料ガスの各気筒への分配が不均一になった場合等の種々の要因により発生する。
このような空燃比気筒間インバランス状態が発生したか否かを判定する従来の装置の一つは、複数の気筒からの排ガスが集合する排気集合部に配設された空燃比センサ（上記上流側空燃比センサ）の出力（出力信号）の軌跡長を取得し、その軌跡長と「機関回転速度及び吸入空気量に応じて変化する参照値」とを比較し、その比較結果に基づいて空燃比気筒間インバランス状態が発生したか否かを判定するようになっている（例えば、米国特許第７，１５２，５９４号を参照。）。なお、空燃比気筒間インバランス状態が発生したか否かの判定は、本明細書において、単に「空燃比気筒間インバランス判定、又は、インバランス判定」とも称呼される。
【発明の開示】
【０００３】
空燃比気筒間インバランス状態が発生している場合、気筒別空燃比が理論空燃比から偏移していない気筒からの排ガスが空燃比センサに到達したときと、気筒別空燃比が理論空燃比に対してリッチ側又はリーン側に偏移している気筒からの排ガスが空燃比センサに到達したときと、において、空燃比センサの出力は大きく相違する。従って、空燃比センサの出力の軌跡長は、空燃比気筒間インバランス状態が発生したときに増大する。しかしながら、空燃比センサには、何れかの気筒からの排ガスが「多気筒内燃機関における混合気の燃焼間隔と同じ間隔」をもって到達する。従って、気筒別空燃比が気筒間において完全に一致していていて空燃比センサに到達するガスの空燃比が常に均一である場合を除き、空燃比センサ出力の軌跡長は機関回転速度の影響を強く受ける。このため、上記従来の装置は、空燃比気筒間インバランス判定を必ずしも精度良く行うことができないか、或いは、機関回転速度毎に上記参照値を精度良く設定しなくてはならないので、その参照値を得るための開発工数が膨大となる。
従って、本発明の目的の一つは、機関回転速度毎に参照値を精度良く設定することなく、気筒間における空燃比の不均一性が過大になったか否か（空燃比気筒間インバランス状態が発生したか否か）を精度良く判定することができる「実用性の高い内燃機関の空燃比気筒間インバランス判定装置」を提供することにある。
（本発明による空燃比気筒間インバランス判定の原理）
本発明者は、「保護カバーを有する空燃比センサの出力により表される空燃比（即ち、検出空燃比）」の「単位時間当たりの変化量（即ち、検出空燃比の時間微分値であり、「検出空燃比変化率」とも称呼される。）」は、空燃比気筒間インバランス状態が発生しているか否かに応じて大きく相違するという知見を得た。更に、本発明者は、検出空燃比変化率は機関回転速度の影響を受け難いという知見を得た。従って、本発明者は、「検出空燃比変化率に応じて変化する空燃比変化率指示量（例えば、検出空燃比変化率の平均値及び検出空燃比変化率の最大値等）」に基づくことにより空燃比気筒間インバランス判定を精度良く行えるとの結論に到達した。以下、空燃比変化率指示量に基づくことにより、空燃比気筒間インバランス判定を精度良く行うことができる理由について説明する。
空燃比センサには、各気筒からの排ガスが点火順に到達する。空燃比気筒間インバランス状態が発生していない場合、各気筒から空燃比センサに到達する排ガスの空燃比は互いに略同一である。従って、空燃比気筒間インバランス状態が発生していない場合の空燃比センサ出力は、例えば、図１の（Ａ）に示したように変化する。即ち、空燃比気筒間インバランス状態が発生していない場合、空燃比センサ出力の波形は略平坦である。
一方、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態（特定気筒リッチずれインバランス状態）」が発生している場合、その特定気筒の排ガスの空燃比と、その特定気筒以外の気筒（残りの気筒）の排ガスの空燃比と、は大きく相違する。従って、リッチずれインバランス状態が発生している場合の空燃比センサ出力は、例えば図１の（Ｂ）に示したように、４気筒・４サイクル・エンジンの場合に７２０°クランク角（一つの空燃比センサに到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角）毎に大きく変動する。なお、「一つの空燃比センサに到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角が経過する期間」は、本明細書において「単位燃焼サイクル期間」とも称呼される。
より具体的に述べると、図１の（Ｂ）に示した例において、空燃比センサ出力は、第１気筒からの排ガスが空燃比センサの空燃比検出素子に到達したときに理論空燃比よりもリッチ側の値を示し、残りの気筒からの排ガスが空燃比検出素子に到達したときに理論空燃比又は理論空燃比よりも若干だけリーン側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子に到達したときに空燃比センサ出力が理論空燃比よりも若干だけリーン側の値に収束するのは、上述した空燃比フィードバック制御に依る。
他方、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態（リーンずれインバランス状態）」が発生している場合においても、空燃比センサ出力は、例えば図１の（Ｃ）に示したように、７２０°クランク角毎に大きく変動する。
より具体的に述べると、図１の（Ｃ）に示した例において、空燃比センサ出力は、第１気筒からの排ガスが空燃比センサの空燃比検出素子に到達したときに理論空燃比よりもリーン側の値を示し、残りの気筒からの排ガスが空燃比検出素子に到達したときに理論空燃比又は理論空燃比よりも若干だけリッチ側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子に到達したときに空燃比センサ出力が理論空燃比よりも若干だけリッチ側の値に収束するのは、上述した空燃比フィードバック制御に依る。
図１から明らかなように、空燃比気筒間インバランス状態が発生した場合の空燃比センサ出力の時間微分値である「検出空燃比変化率」の大きさ（角度α２〜α５の各大きさ）は、空燃比気筒間インバランス状態が発生していない場合の検出空燃比変化率（角度α１の大きさ）に比べて顕著に大きくなる。従って、検出空燃比変化率に応じて変化する空燃比変化率指示量（例えば、後述するように、微小の所定時間毎に取得される検出空燃比変化率そのもの、ある期間において取得された複数の検出空燃比変化率の平均値、及び、ある期間において取得された複数の検出空燃比変化率のうちの最大値等）を空燃比センサ出力に基づいて取得し、例えば、その空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較すること等により空燃比気筒間インバランス判定を実行することができる。
次に、この検出空燃比変化率が機関回転速度の影響を殆ど受けない点について説明する。
図２及び図３に示したように、空燃比センサ（５５）は、一般に、空燃比検出素子（５５ａ）と、その空燃比検出素子の保護カバー（５５ｂ、５５ｃ）と、を有している。保護カバー（５５ｂ、５５ｃ）は、空燃比検出素子（５５ａ）を覆うように、空燃比検出素子（５５ａ）をその内部に収容する。更に、保護カバー（５５ｂ、５５ｃ）は、排気通路を流れる排ガスＥＸを保護カバー（５５ｂ、５５ｃ）の内部に流入させて空燃比検出素子（５５ａ）に到達させるための流入孔（５５ｂ１、５５ｃ１）と、保護カバーの内部に流入した排ガスを排気通路に流出させるための流出孔（５５ｂ２、５５ｃ２）と、を有する。
空燃比センサ（５５）は、排気集合部又は排気集合部よりも下流の排気通路（且つ、上流側触媒の上流）に、保護カバー（５５ｂ、５５ｃ）が露呈するように配設される。従って、排気通路を流れる排ガスＥＸは、矢印Ａｒ１に示したように外側の保護カバー（５５ｂ）の流入孔（５５ｂ１）を通って外側の保護カバー（５５ｂ）と内側の保護カバー（５５ｃ）との間に流入する。次いで、その排ガスは、矢印Ａｒ２に示したように内側の保護カバー（５５ｃ）の流入孔（５５ｃ１）を通って内側の保護カバー（５５ｃ）の内部に流入し、空燃比検出素子５５ａに到達する。その後、その排ガスは、矢印Ａｒ３に示したように内側の保護カバー（５５ｃ）の流出孔（５５ｃ２）及び外側の保護カバー（５５ｂ）の流出孔（５５ｂ２）を通って排気通路に流出する。即ち、外側の保護カバー（５５ｂ）の流入孔（５５ｂ１）に到達した排気通路内の排ガスＥＸは、外側の保護カバー（５５ｂ）の流出孔（５５ｂ２）近傍を流れる排気通路内の排ガスＥＸの流れにより、保護カバー（５５ｂ、５５ｃ）内へと吸い込まれる。
このため、保護カバー（５５ｂ、５５ｃ）内における排ガスの流速は、外側の保護カバー（５５ｂ）の流出孔（５５ｂ２）近傍を流れる排気通路内の排ガスＥＸの流速（従って、単位時間あたりの吸入空気量である吸入空気流量Ｇａ）に応じて変化する。換言すると、「ある空燃比の排ガス（第１排ガス）が流入孔（５５ｂ１）に到達した時点」から「その第１排ガスが空燃比検出素子（５５ａ）に到達する時点」までの時間は、吸入空気流量Ｇａに依存するが機関回転速度ＮＥには依存しない。このことは、内側の保護カバーのみを有する空燃比センサにも成立する。
図４は、特定気筒リッチずれインバランス状態が発生した場合における排ガスの空燃比の時間的変化を模式的に示した図である。図４において、線Ｌ１は外側の保護カバー（５５ｂ）の流入孔（５５ｂ１）に到達した排ガスの空燃比を示す。線Ｌ２、線Ｌ３及び線Ｌ４は、空燃比検出素子（５５ａ）に到達している排ガスの空燃比を示す。但し、線Ｌ２は吸入空気流量Ｇａが比較的大きい場合、線Ｌ３は吸入空気流量Ｇａが中程度の大きさの場合、線Ｌ４は吸入空気流量Ｇａが比較的小さい場合に対応している。
線Ｌ１に示したように、リッチずれを起こしている特定気筒の排ガスが時刻ｔ１にて流入孔（５５ｂ１）に到達すると、そのガスは流入孔（５５ｂ１、５５ｃ１）を通過し、時刻ｔ１よりも僅かに遅れた時点（時刻ｔ２）にて空燃比検出素子５５ａに到達し始める。このとき、前述したように、保護カバー（５５ｂ、５５ｃ）の内部を流れる排ガスの流速は、排気通路を流れる排ガスの流速により決定される。
従って、空燃比検出素子に接触するガスの空燃比は、吸入空気流量Ｇａが大きい場合ほど時刻ｔ１により近い時点から変化し始める。更に、空燃比検出素子に接触する排ガスの空燃比は、「空燃比検出素子に新たに到達した排ガス」と「空燃比検出素子の近傍に既に存在していた排ガス」とが混合された排ガスの空燃比となる。従って、空燃比検出素子に接触（到達）する排ガスの空燃比の変化率（空燃比の時間微分値である変化速度、即ち、図４における線Ｌ２〜Ｌ４の傾きの大きさ）は吸入空気流量Ｇａが大きいほど大きくなる。
その後、リッチずれを起こしていない気筒の排ガスが時刻ｔ３にて流入孔（５５ｂ１）に到達すると、そのガスは時刻ｔ３よりも僅かに遅れた時点（時刻ｔ４近傍）にて空燃比検出素子５５ａに到達し始める。「このリッチずれを起こしていない気筒からの排ガス」の「保護カバー（５５ｂ、５５ｃ）内における流速」も、排気通路を流れる排ガスＥＸの流速（従って、吸入空気流量Ｇａ）により決定される。従って、空燃比検出素子に接触（到達）する排ガスの空燃比は、吸入空気流量Ｇａが大きいほど迅速に増大する。
なお、線Ｌ３及び線Ｌ４により示したように、吸入空気流量Ｇａが相対的に小さい場合、空燃比検出素子に接触する排ガスの空燃比が「リッチずれを起こしている特定気筒の排ガスの空燃比Ａｒｉ」に一致する時点よりも前の時点にて、「排気順がその特定気筒の次の気筒であって、リッチずれを起こしていない気筒」の排ガスが空燃比検出素子に到達する。従って、空燃比検出素子に接触する排ガスの空燃比は、特定気筒の排ガスの空燃比Ａｒｉに一致するまえにリーン側へと変化し始める。
一方、空燃比センサの出力（実際には空燃比検出素子の出力）は、空燃比検出素子に到達したガスの変化に僅かに遅れながら追従するように変化する。従って、図５に示したように、空燃比検出素子に到達している排ガスの空燃比が線Ｌ３に示したように変化すると、空燃比センサ出力は線Ｓ１に示したように変化する。
図６は、特定気筒リッチずれインバランス状態が発生した場合であって、吸入空気流量Ｇａは一定であり且つ機関回転速度ＮＥが変化したときの空燃比センサ出力について説明するための図である。図６の（Ａ）は、機関回転速度ＮＥが所定値ＮＥ１であり吸入空気流量Ｇａが所定値Ｇａ１である場合における、「外側の保護カバーの流入孔（５５ｂ１）に到達した排ガスの空燃比（線Ｌ１）」、「空燃比検出素子に到達しているガスの空燃比（線Ｌ３）」及び「空燃比センサ出力（線Ｓ１）」を示す。図６の（Ｂ）は、機関回転速度ＮＥが所定値ＮＥ１の２倍（２・ＮＥ１）であり吸入空気流量Ｇａが所定値Ｇａ１である場合における、「外側の保護カバーの流入孔（５５ｂ１）に到達した排ガスの空燃比（線Ｌ５）」、「空燃比検出素子に到達しているガスの空燃比（線Ｌ６）」及び「空燃比センサ出力（線Ｓ２）」を示す。
前述したように、保護カバー（５５ｂ、５５ｃ）内を流れる排ガスの流速は吸入空気流量Ｇａにより決定される。従って、機関回転速度ＮＥが変化しても、吸入空気流量Ｇａが変化しなければ、検出空燃比変化率（傾き）は変化しない。更に、リッチずれを起こしている特定気筒の排ガスが流入孔（５５ｂ１）に到達した時点（時刻ｔ１）から、そのガスが空燃比検出素子５５ａに到達し始める時点（時刻ｔ２）、までの時間は機関回転速度ＮＥが変化しても一定時間Ｔｄである。加えて、リッチずれを起こしていない気筒の排ガスが流入孔（５５ｂ１）に到達した時点（時刻ｔ３）から、そのガスが空燃比検出素子５５ａに到達し始める時点（時刻ｔ４）、までの時間は、同様に一定時間Ｔｄである。この結果、空燃比センサ出力は、図６の（Ａ）及び（Ｂ）に示したように変化する。
図６の（Ａ）及び（Ｂ）から理解されるように、空燃比センサ出力の変化幅（Ｗ）は、機関回転速度ＮＥが大きくなるほど小さくなる。即ち、空燃比センサ出力の軌跡長は機関回転速度に応じて大きく変化する。従って、上述したように、空燃比センサ出力の軌跡長に基づいて空燃比気筒間インバランス判定を行う場合、軌跡長と比較する参照値を機関回転速度に応じて精度良く決定しなければならない。これに対し、検出空燃比変化率は機関回転速度ＮＥの影響を殆ど受けないので、検出空燃比変化率に応じて変化する値（空燃比変化率指示量）も機関回転速度ＮＥの影響を殆ど受けない。従って、空燃比変化率指示量を利用すれば、より精度の良い空燃比気筒間インバランス判定を実行することができる。
本発明による内燃機関の空燃比気筒間インバランス判定装置（以下、単に「本発明装置」とも称呼する。）は、上述した知見に基づいてなされた装置であり、複数の気筒を有する多気筒内燃機関に適用され、空燃比センサと、インバランス判定手段とを備える。
前記空燃比センサは、図２及び図３を参照しながら説明したように、
・前記機関の排気通路であって「前記複数の気筒のうちの少なくとも２以上の気筒」から排出された排ガスが集合する排気集合部、又は、内燃機関の排気通路であって前記排気集合部よりも下流側の部位、に配設され、
・空燃比検出素子と、保護カバーと、を含む。
前記空燃比検出素子は、「その空燃比検出素子に到達した（即ち、空燃比検出素子に接触している）排ガス」の空燃比に応じた出力を「空燃比センサ出力」として発生するようになっている。周知の限界電流型の広域空燃比センサにおいては、空燃比センサ出力は空燃比検出素子に到達したガスの空燃比が大きくなるほど大きくなる。
前記保護カバーは、前記空燃比検出素子を覆うように、前記空燃比検出素子をその内部に収容している。更に、前記保護カバーは、「前記排気通路を流れる排ガスを前記内部に流入させる流入孔」及び「前記内部に流入した排ガスを前記排気通路に流出させるための流出孔」を備える。即ち、保護カバーは、保護カバー内部における排ガスの流速を「保護カバー外部における排ガスの流速（従って、吸入空気流量Ｇａ）のみに実質的に依存させるような構造を有する。保護カバーは、前述したような「外側及び内側の保護カバーからなる二重構造」でなくてもよく、一重構造及び三重構造等を有していてもよい。
前記インバランス判定手段は、
（１）空燃比変化率指示量を前記空燃比センサ出力に基づいて取得し、
（２）「前記少なくとも２以上の気筒のそれぞれに供給される混合気」の空燃比である「気筒別空燃比」の間に不均衡が生じている状態（即ち、空燃比気筒間インバランス状態）が発生しているか否かの判定（空燃比気筒間インバランス判定）を、前記取得された空燃比変化率指示量に基づいて実行する、
ようになっている。
前記「空燃比変化率指示量」は、「前記空燃比センサ出力により表される空燃比」の単位時間当たりの変化量である「検出空燃比変化率（前記空燃比センサ出力により表される空燃比の時間微分値相当の値）」に応じて変化する値である。後述するように、空燃比変化率指示量は、空燃比センサ出力そのものの変化率（時間微分値相当の値）、空燃比センサ出力を空燃比に変換した値の変化率、ある期間におけるそれらの平均値、及び、ある期間におけるそれらの最大値等、であり得る。空燃比変化率指示量は、一般には、検出空燃比変化率ΔＡＦの大きさが大きいほど大きくなる値であるように求められる。
「空燃比気筒間インバランス判定を空燃比変化率指示量に基づいて実行する」とは、後述するように、例えば、
・空燃比変化率指示量の大きさが「所定のインバランス判定用閾値」よりも大きいか否かを判定し、その判定結果をインバランス判定結果として採用すること、
・ある期間において複数個取得される空燃比変化率指示量のうち、その大きさが「所定の有効変化率閾値」よりも大きいデータの個数と、その大きさが「所定の有効変化率閾値」以下であるデータの個数と、を取得し、それらのデータ個数の比較結果をインバランス判定結果として採用すること、及び、
・空燃比変化率指示量の符合変化に基づいてリッチピーク（空燃比変化率指示量の極小値）及び／又はリーンピーク（空燃比変化率指示量の極大値）を検出し、連続する二つのリッチピーク間の時間が所定時間よりも長いか否か、又は、連続する二つのリーンピーク間の時間が所定時間よりも長いか否かに基づいて、空燃比気筒間インバランス判定を行うこと、
等を含む。
上述したように、検出空燃比変化率は機関回転速度の影響を殆ど受けないので、空燃比変化率指示量も機関回転速度の影響を殆ど受けない。従って、空燃比変化率指示量を用いることにより、精度の良い空燃比気筒間インバランス判定を実行することができる。更に、インバランス判定に用いる種々の閾値（例えば、インバランス判定用閾値）を機関回転速度ＮＥ毎に精度良く適合する必要性がないので、本発明装置は「より少ない開発工数」にて開発され得る。
前述したように、前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成され得る。
より具体的には、前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさが前記インバランス判定用閾値よりも大きいことを前記比較の結果が示した場合に前記空燃比気筒間インバランス状態が発生していると判定するように構成され得る。
更に、前記インバランス判定手段の一態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、検出空燃比変化率）を、前記空燃比変化率指示量として取得するように構成され得る。
この態様によれば、煩雑なデータ処理を行うことなく、空燃比気筒間インバランス判定を実行することができる。
更に、前記インバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において前記検出空燃比変化率を複数取得するとともに、「その取得された複数の検出空燃比変化率」の大きさの平均値を「前記空燃比変化率指示量」として取得する、ように構成され得る。
この態様によれば、所定のデータ取得期間における複数の検出空燃比変化率の大きさの平均値が空燃比変化率指示量として採用され、その空燃比変化率指示量がインバランス判定用閾値と比較される。従って、空燃比センサ出力にノイズが重畳していたとしても、空燃比変化率指示量はそのノイズの影響を受け難い。この結果、空燃比気筒間インバランス判定をより精度良く実行することができる。なお、前記所定のデータ取得期間において検出空燃比変化率が正の値のみであるようにデータ取得期間が定められている場合、「複数の検出空燃比変化率の大きさの平均値」とは「複数の検出空燃比変化率の平均値」を意味する。また、前記所定のデータ取得期間において検出空燃比変化率が負の値のみであるようにデータ取得期間が定められている場合、「複数の検出空燃比変化率の大きさの平均値」とは「複数の検出空燃比変化率の平均値の絶対値、又は、複数の検出空燃比変化率の絶対値の平均値」を意味する。
更に、前記インバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において前記検出空燃比変化率を複数取得するとともに、「その取得された複数の検出空燃比変化率」のうちその大きさが最大である検出空燃比変化率を「前記空燃比変化率指示量」として取得する、ように構成され得る。
空燃比センサ出力にノイズが重畳していたとしても、空燃比気筒間インバランス状態が発生している場合に取得された複数の検出空燃比変化率（大きさ）のうちの最大値と、空燃比気筒間インバランス状態が発生していない場合に取得された複数の検出空燃比変化率（大きさ）のうちの最大値と、は大きく異なる。従って、上記態様によれば、より精度良く空燃比気筒間インバランス判定を実行することができる。
このような、複数の検出空燃比変化率の平均値、又は、複数の検出空燃比変化率の大きさのうちの最大値、を前記空燃比変化率指示量として採用する態様において、
前記データ取得期間は、「前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である「単位燃焼サイクル期間」の自然数倍の期間に定められていることが望ましい。
このように、複数の検出空燃比変化率の平均値又は最大値を取得する期間を「単位燃焼サイクル期間の自然数倍の期間」に設定すれば、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量は、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量よりも確実に大きい値となる。従って、この態様は、より精度良く空燃比気筒間インバランス判定を実行することができる。
更に、複数の検出空燃比変化率の大きさのうちの最大値を前記空燃比変化率指示量として採用する態様において、前記データ取得期間は、「前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である「単位燃焼サイクル期間」の長さ以上の期間に定められていることが好適である。
「前記少なくとも二以上の気筒」のそれぞれからの排ガスは、単位燃焼サイクル期間が経過する時間内に空燃比検出素子に必ず接触することになる。従って、空燃比気筒間インバランスが発生しているときの検出空燃比変化率の大きさの最大値は、単位燃焼サイクル期間内に必ず発生する。従って、上記態様のようにデータ取得期間を設定すれば、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量が、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量よりも確実に大きい値となる。その結果、精度良く空燃比気筒間インバランス判定を実行することができる。
更に、前記インバランス判定手段の他の態様は、
「前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である「単位燃焼サイクル期間」よりも短い「一定のサンプリング期間」が経過する毎に前記空燃比センサ出力を取得し、
前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率の中からその大きさが最大である検出空燃比変化率を最大変化率として選択し、
複数の前記単位燃焼サイクル期間のそれぞれに対して選択された前記最大変化率の平均値を求め、
その平均値を前記空燃比変化率指示量として取得するように構成され得る。
上述したように、空燃比気筒間インバランスが発生しているときの検出空燃比変化率の大きさの最大値は、単位燃焼サイクル期間内に必ず発生する。従って、上記態様によれば、空燃比気筒間インバランスが発生している場合の最大変化率は、空燃比気筒間インバランスが発生していない場合の最大変化率よりも確実に大きい値となる。更に、上記態様によれば、複数の単位燃焼サイクル期間に対して取得（選択）された複数の最大変化率の平均値が空燃比変化率指示量として採用される。従って、空燃比気筒間インバランス状態が発生していない場合においてノイズ等に起因して突発的に検出空燃比変化率の大きさが大きくなったとしても、上記のように取得される空燃比変化率指示量はそれほど大きくならない。つまり、そのように取得される空燃比変化率指示量は、空燃比センサ出力に重畳するノイズの影響を受け難い。その結果、空燃比気筒間インバランス判定をより精度良く実行することができる。
本発明装置において、前記インバランス判定手段は、
「単位時間あたりに前記機関に吸入される空気の量」である「吸入空気流量」が「所定の第１閾値空気流量」よりも大きいとき「前記空燃比気筒間インバランス状態が発生しているか否かの判定」を実行し、前記吸入空気流量が前記第１閾値空気流量よりも小さいとき「前記空燃比気筒間インバランス状態が発生しているか否かの判定」を実行しないように構成されることが好適である。
図４及び図５を参照しながら行った説明からも理解できるように、空燃比気筒間インバランスが発生していたとしても、吸入空気流量が小さくなるほど検出空燃比変化率の大きさは小さくなる。従って、吸入空気流量が所定の第１閾値空気流量よりも小さいときに、検出空燃比変化率に応じて変化する空燃比変化率指示量に基づいて空燃比気筒間インバランス判定を実行することは、誤判定を招く虞がある。従って、上記態様のようにインバランス判定手段を構成すれば、空燃比気筒間インバランス判定をより精度良く実行することができる。
更に、空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較することにより空燃比気筒間インバランス判定を行うインバランス判定手段は、
単位時間あたりに前記機関に吸入される空気の量である吸入空気流量が大きいほど前記インバランス判定用閾値を大きい値に変更するように構成されることが好適である。
図４及び図５を参照しながら行った説明からも理解できるように、空燃比気筒間インバランス状態が発生しているとき、吸入空気流量が大きくなるほど検出空燃比変化率（従って、空燃比変化率指示量）の大きさは大きくなる。従って、上記態様のように、吸入空気流量が大きいほどインバランス判定用閾値を大きい値に変更すれば、より精度良く空燃比気筒間インバランス判定を実行することができる。
更に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きい場合には前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きい場合には前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較するとともに、前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成され得る。
実験によれば、図１の（Ｂ）に示したように、特定気筒リッチずれインバランス状態が生じると、減少変化率指示量の大きさ（傾きα２の大きさ）は、増大変化率指示量の大きさ（傾きα３の大きさ）よりも大きくなる。逆に、図１の（Ｃ）に示したように、特定気筒リーンずれインバランス状態が生じると、増大変化率指示量の大きさ（傾きα４の大きさ）は、減少変化率指示量の大きさ（傾きα５の大きさ）よりも大きくなる。従って、上記態様によれば、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、それらの双方の何れもが発生していないのか、を区別して判定することができる。
代替として、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較し、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きい場合に前記空燃比気筒間インバランス状態が発生していると判定する、
ように構成され得る。
この態様によれば、増大変化率閾値と減少変化率閾値とを異なる値に設定することができるので、より一層精度良く空燃比気筒間インバランス判定を実行することができる。例えば、リッチずれ空燃比気筒間インバランス状態が発生したか否かをより精度良く検出したい場合には減少変化率閾値を増大変化率閾値よりも大きく設定すればよく、リーンずれ空燃比気筒間インバランス状態が発生したか否かをより精度良く検出したい場合には増大変化率閾値を減少変化率閾値よりも大きく設定すればよい。勿論、増大変化率閾値と減少変化率閾値とは同じ値に設定されてもよい。
更に、このインバランス判定手段は、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値の大きさよりも大きい場合（即ち、空燃比気筒間インバランス状態が発生していると判定される場合）、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成され得る。
この態様によっても、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、それらの双方の何れもが発生していないのか、を区別して判定することができる。
更に、減少変化率指示量及び増大変化率指示量を取得する前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の大きさの平均値を前記増大変化率指示量として取得するとともに、前記複数の前記検出空燃比変化率のうちの負の値を有する変化率の大きさの平均値を前記減少変化率指示量として取得するように構成され得る。
これによれば、空燃比センサ出力に重畳するノイズの空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）への影響を低減することができるので、より精度のよい空燃比気筒間インバランス判定を実施することができる。
代替として、減少変化率指示量及び増大変化率指示量を取得する前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記増大変化率指示量として取得するとともに同複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記減少変化率指示量として取得するように構成され得る。
これによれば、空燃比気筒間インバランスが発生しているときに取得される「増大変化率指示量及び減少変化率指示量」の大きさが、空燃比気筒間インバランスが発生していないときに取得される「増大変化率指示量及び減少変化率指示量」の大きさのそれぞれより大きくなるように、増大変化率指示量及び減少変化率指示量を取得できる可能性が高まる。従って、精度のよい空燃比気筒間インバランス判定を実施することができる。
これらの場合においても、
前記データ取得期間は、「前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である「単位燃焼サイクル期間」の自然数倍の期間、に定められていることが望ましい。
このように、「正の値を有する複数の検出空燃比変化率の平均値又は最大値を取得する期間」及び「負の値を有する複数の検出空燃比変化率の平均値又は最大値を取得する期間」を「単位燃焼サイクル期間の自然数倍の期間」に設定すれば、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）は、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量よりも確実に大きい値となる。従って、この態様は、より精度良く空燃比気筒間インバランス判定を実行することができる。
更に、減少変化率指示量及び増大変化率指示量を取得する前記インバランス判定手段は、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を増大変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された（複数の）前記増大変化率最大値の平均値を求め、同平均値を前記増大変化率指示量として取得し、且つ、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を減少変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された（複数の）前記減少変化率最大値の平均値を求め、同平均値を前記減少変化率指示量として取得する、
ように構成され得る。
これによれば、複数の単位燃焼サイクル期間のそれぞれに対する増大変化率最大値の平均値が増大変化率指示量として取得され、且つ、複数の単位燃焼サイクル期間のそれぞれに対する減少変化率最大値の平均値が減少変化率指示量として取得される。従って、空燃比センサ出力に重畳するノイズの空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）への影響を低減することができるので、より精度のよい空燃比気筒間インバランス判定を実施することができる。
代替として、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記増大変化率指示量と前記減少変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成され得る。
前述したように、リッチずれインバランス状態が発生した場合、及び、リーンずれインバランス状態が発生した場合、の何れの場合であっても、上記のように取得される増大変化率指示量と減少変化率指示量との差の大きさ（即ち、空燃比変化率指示量の大きさとインバランス判定用閾値との差の大きさ）は、空燃比気筒間インバランス状態が発生していない場合よりも顕著に大きくなる。
一方、蒸発燃料ガスの燃焼室への導入、ＥＧＲガスの燃焼室への導入、及び、ブローバイガスの燃焼室への導入等に起因して空燃比センサ出力にノイズ（外乱）が重畳する場合がある。このような場合、そのノイズは検出空燃比変化率が正の場合と負の場合とで互いに均等に重畳する。従って、前記増大変化率指示量と前記減少変化率指示量との差の大きさ（差の絶対値）は、そのノイズの影響が排除された値になる。
従って、上記態様のように、検出空燃比変化率が正である場合の検出空燃比変化率の大きさに対応した値である増大変化率指示量を前記空燃比変化率指示量として取得し、前記検出空燃比変化率が負である場合の検出空燃比変化率の大きさに対応した値である減少変化率指示量を前記インバランス判定用閾値として取得し、それら差の大きさの評価（それらの比較結果）に基づいて空燃比気筒間インバランス判定を実行すれば、空燃比センサ出力に重畳するノイズが空燃比気筒間インバランス判定に及ぼす影響を小さくすることができる。
同様に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記減少変化率指示量と前記増大変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成され得る。
この態様によっても、前記増大変化率指示量と前記減少変化率指示量との差の大きさ（差の絶対値）に基づいて空燃比気筒間インバランス判定が実行される。従って、空燃比センサ出力に重畳するノイズが空燃比気筒間インバランス判定に及ぼす影響を小さくすることができる。
これらの態様（増大変化率指示量と減少変化率指示量との差の大きさに基づいて空燃比気筒間インバランス判定を実行する態様）において、
前記インバランス判定手段は、
前記減少変化率指示量が前記増大変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記増大変化率指示量が前記減少変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成され得る。
前述したように、特定気筒リッチずれインバランス状態が生じた場合と、特定気筒リーンずれインバランス状態が生じた場合と、において、増大変化率指示量の大きさと減少変化率指示量の大きさとの大小関係が相違する。従って、上記態様によれば、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、を区別して判定することができる。
前記増大変化率指示量及び前記減少変化率指示量を取得するインバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する検出空燃比変化率の大きさの平均値を前記増大変化率指示量として取得するとともに、前記複数の検出空燃比変化率のうちの負の値を有する検出空燃比変化率の大きさの平均値を前記減少変化率指示量として取得するように構成され得る。
代替として、前記増大変化率指示量及び前記減少変化率指示量を取得するインバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値（例えば、その検出空燃比変化率の大きさ及びその検出空燃比変化率の大きさの複数の単位燃焼サイクルにおける平均値等）を前記増大変化率指示量として取得するとともに、その複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値（例えば、その検出空燃比変化率の大きさ及びその検出空燃比変化率の大きさの複数の単位燃焼サイクルにおける平均値等）を前記減少変化率指示量として取得するように構成され得る。
更に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率の大きさが所定の有効判定閾値以上であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用し、前記取得された検出空燃比変化率の大きさが所定の有効判定閾値未満であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用しないように構成され得る。
これによれば、有効判定閾値以上の大きさを有する検出空燃比変化率のみが前記空燃比変化率指示量を取得するためのデータとして使用される。換言すると、空燃比センサ出力に重畳するノイズのみに起因して（即ち、気筒別空燃比の相違に起因することなく）変動する検出空燃比変化率を、空燃比気筒間インバランス判定に用いる空燃比変化率指示量の算出用データから除外することができる。従って、気筒別空燃比の不均一性の程度に精度良く応じて変化する空燃比変化率指示量を取得することができる。その結果、特別なフィルタ処理を検出空燃比変化率に対して施すことなく、空燃比気筒間インバランス判定を精度良く行うことができる。
本判定装置のインバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが所定の有効判定閾値以上である検出空燃比変化率のデータの数を表す有効データ数を前記空燃比変化率指示量の一つとして取得するとともに、同データ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが同有効判定閾値未満である検出空燃比変化率のデータの数を表す無効データ数を前記空燃比変化率指示量の他の一つとして取得し、
前記有効データ数と前記無効データ数とに基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成され得る。
前述したように、空燃比気筒間インバランス状態が発生すると（即ち、気筒間における空燃比の不均一性が検出すべき程度以上に過大になると）、検出空燃比変化率の大きさが大きくなる。従って、空燃比気筒間インバランス状態が発生すると、前記有効データ数は相対的に増加し、前記無効データ数は相対的に減少する。従って、上記態様によれば、有効データ数と無効データ数とを比較する等の簡単な判定により、空燃比気筒間インバランス判定を行うことができる。
この場合、前記インバランス判定手段は、
前記有効データ数が、「前記有効データ数と前記無効データ数との和である全データ数」に基づいて変化するデータ数閾値よりも多いとき、前記空燃比気筒間インバランス状態が発生していると判定するように構成され得る。このデータ数閾値は、例えば、全データ数の所定割合に設定することができる。これにより、空燃比気筒間インバランス判定を簡易な構成によって行うことができる。
更に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出し、且つ、その検出したリーンピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成され得る。
同様に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出し、且つ、その検出したリッチピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成され得る。
後述する図３２及び図３３にも示したように、検出空燃比変化率が極大値となるリーンピーク時点の近傍の検出空燃比変化率の大きさ、及び、検出空燃比変化率が極小値となるリッチピーク時点の近傍の検出空燃比変化率の大きさは、検出空燃比変化率の大きさの平均値と比較して極めて小さくなるので、空燃比変化率指示量を得るためのデータとしては適切ではない。
そこで、上記二つの態様のように、リーンピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率、或いは、リッチピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないようにする。これにより、気筒別空燃比の不均一性の程度に精度良く表す空燃比変化率指示量を取得することができる。その結果、空燃比気筒間インバランス判定を精度良く行うことができる。
更に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段の他の態様は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出するとともに、連続して検出される二つのリーンピーク時点間の時間であるリーンピーク・リーンピーク時間が閾値時間よりも短い場合、その二つのリーンピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成され得る。
同様に、空燃比変化率指示量の大きさとインバランス判定用閾値との比較結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するインバランス判定手段の他の態様は、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出するとともに、連続して検出される二つのリッチピーク時点間の時間であるリッチピーク・リッチピーク時間が閾値時間よりも短い場合、その二つのリッチピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成され得る。
後述する図３５に示したように、空燃比気筒間インバランスが発生している場合、リーンピーク・リーンピーク時間ＴＬＬは閾値時間ＴＬＬｔｈよりも長く、リッチピーク・リッチピーク時間ＴＲＲは閾値時間ＴＲＲｔｈよりも長い。これに対し、図３６に示したように、空燃比気筒間インバランスが全く発生していない場合、リーンピーク・リーンピーク時間ＴＬＬは閾値時間ＴＬＬｔｈよりも短く、リッチピーク・リッチピーク時間ＴＲＲは閾値時間ＴＲＲｔｈよりも短い。
そこで、上記上記二つの態様のように、リーンピーク・リーンピーク時間が閾値時間よりも短い場合、その二つのリーンピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないか、及び／又は、リッチピーク・リッチピーク時間が閾値時間よりも短い場合、その二つのリッチピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成すれば、気筒別空燃比の不均一性の程度に精度良く表す空燃比変化率指示量を取得することができる。その結果、空燃比気筒間インバランス判定を精度良く行うことができる。
【図面の簡単な説明】
【０００４】
図１は、空燃比センサ出力に基づいて得られる検出空燃比の変化の様子を示した図である。
図２は、空燃比センサの部分概略斜視図（透視図）である。
図３は、空燃比センサの部分断面図である。
図４は、特定気筒リッチずれインバランス状態が発生した場合における排ガスの空燃比の時間的変化を模式的に示した図である。
図５は、特定気筒リッチずれインバランス状態が発生した場合における排ガスの空燃比の時間的変化と空燃比センサ出力とを模式的に示した図である。
図６は、検出空燃比変化率が機関回転速度の影響を受けないことを説明するための図であって、空燃比センサの外側の保護カバーの流入孔に到達した排ガスの空燃比、空燃比検出素子に到達しているガスの空燃比、及び、空燃比センサ出力、の変化の様子を示す。
図７は、第１実施形態に係る空燃比気筒間インバランス判定装置（第１判定装置）が適用される内燃機関の概略構成を示した図である。
図８は、図７に示した空燃比センサ（上流側空燃比センサ）が備える空燃比検出素子の断面図である。
図９は、排ガスの空燃比が理論空燃比よりもリーン側の空燃比である場合の空燃比センサの作動を説明するための図である。
図１０は、排ガスの空燃比と空燃比センサの限界電流値との関係を示したグラフである。
図１１は、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比である場合の空燃比センサの作動を説明するための図である。
図１２は、排ガスの空燃比と空燃比センサ出力との関係を示したグラフである。
図１３は、排ガスの空燃比と下流側空燃比センサの出力との関係を示したグラフである。
図１４は、図７に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１５は、図７に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１６は、図７に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１７は、図７に示した電気制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１８は、検出空燃比の変化の様子を示した図であり、（Ａ）は空燃比気筒間インバランス状態が発生していない場合の検出空燃比、（Ｂ）は空燃比気筒間インバランス状態が発生している場合の検出空燃比を示す。
図１９は、第２実施形態に係る空燃比気筒間インバランス判定装置（第２判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２０は、第２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２１は、第３実施形態に係る空燃比気筒間インバランス判定装置（第３判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２２は、第４実施形態に係る空燃比気筒間インバランス判定装置（第４判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２３は、第４判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２４は、第５実施形態に係る空燃比気筒間インバランス判定装置（第５判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２５は、第６実施形態に係る空燃比気筒間インバランス判定装置（第６判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２６は、第７実施形態に係る空燃比気筒間インバランス判定装置（第７判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２７は、第８実施形態に係る空燃比気筒間インバランス判定装置（第８判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図２８は、第８判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２９は、第９実施形態に係る空燃比気筒間インバランス判定装置（第９判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図３０は、第９判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図３１は、第１０実施形態に係る空燃比気筒間インバランス判定装置（第１０判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図３２は、リッチピーク近傍の検出空燃比の変化の様子を示した図である。
図３３は、リーンピーク近傍の検出空燃比の変化の様子を示した図である。
図３４は、第１１実施形態に係る空燃比気筒間インバランス判定装置（第１１判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図３５は、空燃比気筒間インバランスが発生している場合における検出空燃比の変化の様子を示した図である。
図３６は、空燃比気筒間インバランスが発生していない場合における検出空燃比の変化の様子を示した図である。
図３７は、第１２実施形態に係る空燃比気筒間インバランス判定装置（第１２判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図３８は、第１２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図３９は、第１２判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図４０は、第１２判定装置の変形例のＣＰＵが実行するルーチンを示したフローチャートである。
図４１は、第１２判定装置の変形例のＣＰＵが実行するルーチンを示したフローチャートである。
図４２は、第１３実施形態に係る空燃比気筒間インバランス判定装置（第１３判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図４３は、第１４実施形態に係る空燃比気筒間インバランス判定装置（第１４判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図４４は、第１５実施形態に係る空燃比気筒間インバランス判定装置（第１５判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図４５は、第１５判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
図４６は、第１６実施形態に係る空燃比気筒間インバランス判定装置（第１６判定装置）のＣＰＵが実行するルーチンを示したフローチャートである。
図４７は、第１６判定装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための最良の形態】
【０００５】
＜第１実施形態＞
以下、本発明の第１実施形態に係る空燃比気筒間インバランス判定装置（以下、単に「第１判定装置」と称呼する。）について図面を参照しながら説明する。この第１判定装置は、内燃機関の空燃比を制御する空燃比制御装置の一部である。更に、この空燃比制御装置は、燃料噴射量を制御する燃料噴射量制御装置でもある。
（構成）
図７は、第１判定装置が適用される内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・多気筒（本例において４気筒）・ガソリン燃料機関である。機関１０は、本体部２０、吸気系統３０及び排気系統４０を備えている。
本体部２０は、シリンダブロック部とシリンダヘッド部とを備えている。本体部２０は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面からなる複数（４個）の燃焼室（第１気筒＃１乃至第４気筒＃４）２１を備えている。
シリンダヘッド部には、各燃焼室（各気筒）２１に「空気及び燃料からなる混合気」を供給するための吸気ポート２２と、各燃焼室２１から排ガス（既燃ガス）を排出するための排気ポート２３と、が形成されている。吸気ポート２２は図示しない吸気弁により開閉され、排気ポート２３は図示しない排気弁により開閉されるようになっている。
シリンダヘッド部には複数（４個）の点火プラグ２４が固定されている。各点火プラグ２４は、その火花発生部が各燃焼室２１の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ２４は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
シリンダヘッド部には更に複数（４個）の燃料噴射弁（インジェクタ）２５が固定されている。燃料噴射弁２５は、各吸気ポート２２に一つずつ設けられている。燃料噴射弁２５は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示噴射量の燃料」を対応する吸気ポート２２内に噴射するようになっている。このように、複数の気筒２１のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁２５を備えている。
更に、シリンダヘッド部には、吸気弁制御装置２６が設けられている。この吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置２６は、指示信号（駆動信号）に基いて作動し、吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
吸気系統３０は、インテークマニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４及びスロットル弁アクチュエータ３４ａを備えている。
インテークマニホールド３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管３２はサージタンク部に接続されている。インテークマニホールド３１、吸気管３２及び複数の吸気ポート２２は、吸気通路を構成している。エアフィルタ３３は吸気管３２の端部に設けられている。スロットル弁３４はエアフィルタ３３とインテークマニホールド３１との間の位置において吸気管３２に回動可能に取り付けられている。スロットル弁３４は、回動することにより吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３４ａは、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ（排気管）４２、上流側触媒４３及び下流側触媒４４を備えている。
エキゾーストマニホールド４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、からなっている。エキゾーストパイプ４２は、エキゾーストマニホールド４１の集合部４１ｂに接続されている。エキゾーストマニホールド４１、エキゾーストパイプ４２及び複数の排気ポート２３は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド４１の集合部４１ｂ及びエキゾーストパイプ４２を、便宜上、「排気通路」と称呼する。
上流側触媒４３は、セラミックからなる担持体に「触媒物質である貴金属」及び「セリア（ＣｅＯ２）」を担持していて、酸素吸蔵・放出機能（酸素吸蔵機能）を有する三元触媒である。上流側触媒４３はエキゾーストパイプ４２に配設（介装）されている。上流側触媒４３は所定の活性温度に到達すると、「未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。
下流側触媒４４は、上流側触媒４３と同様の三元触媒である。下流側触媒４４は、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設（介装）されている。なお、上流側触媒４３及び下流側触媒４４は、三元触媒以外の種類の触媒であっても良い。
この第１判定装置は、熱線式エアフローメータ５１、スロットルポジションセンサ５２、クランク角センサ５３、インテークカムポジションセンサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６、アクセル開度センサ５７及び水温センサ５８を備えている。
熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量を検出し、その質量流量（機関１０の単位時間あたりの吸入空気量）Ｇａを表す信号を出力するようになっている。吸入空気流量Ｇａは排ガスの流量に略等しいので、排ガスの流速にも略比例する。
スロットルポジションセンサ５２は、スロットル弁３４の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
クランク角センサ（クランクポジションセンサ）５３は、機関１０のクランク軸が１０度回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置６０によって機関回転速度ＮＥに変換される。
インテークカムポジションセンサ５４は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。電気制御装置６０は、クランク角センサ５３及びインテークカムポジションセンサ５４からの信号に基いて、基準気筒（例えば第１気筒＃１）の圧縮上死点を基準とした絶対クランク角ＣＡを取得するようになっている。この絶対クランク角ＣＡは、基準気筒の圧縮上死点において「０°クランク角」に設定され、クランク角の回転角度に応じて７２０°クランク角まで増大し、その時点にて再び０°クランク角に設定される。
上流側空燃比センサ５５（本発明における空燃比センサ５５）は、エキゾーストマニホールド４１の集合部４１ｂと上流側触媒４３との間の位置においてエキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか（即ち、排気通路）に配設されている。上流側空燃比センサ５５は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
上流側空燃比センサ５５は、図２及び図３に示したように、空燃比検出素子５５ａと、外側保護カバー５５ｂと、内側保護カバー５５ｃと、を有している。
外側保護カバー５５ｂは金属からなる中空円筒体である。外側保護カバー５５ｂは内側保護カバー５５ｃを覆うように、内側保護カバー５５ｃを内部に収容している。外側保護カバー５５ｂは、流入孔５５ｂ１をその側面に複数備えている。流入孔５５ｂ１は、排気通路を流れる排ガス（外側保護カバー５５ｂの外部の排ガス）ＥＸを外側保護カバー５５ｂの内部に流入させるための貫通孔である。更に、外側保護カバー５５ｂは、外側保護カバー５５ｂの内部の排ガスを外部（排気通路）に流出させるための流出孔５５ｂ２をその底面に有している。
内側保護カバー５５ｃは、金属からなり、外側保護カバー５５ｂの直径よりも小さい直径を有する中空円筒体である。内側保護カバー５５ｃは、空燃比検出素子５５ａを覆うように空燃比検出素子５５ａを内部に収容している。内側保護カバー５５ｃは流入孔５５ｃ１をその側面に複数備えている。この流入孔５５ｃ１は、外側保護カバー５５ｂの流入孔５５ｂ１を通して「外側保護カバー５５ｂと内側保護カバー５５ｃとの間の空間」に流入した排ガスを、内側保護カバー５５ｃの内部に流入させるため貫通孔である。更に、内側保護カバー５５ｃは、内側保護カバー５５ｃの内部の排ガスを外部に流出させるための流出孔５５ｃ２をその底面に有している。
図８に示したように、空燃比検出素子５５ａは、固体電解質層５５１と、排ガス側電極層５５２と、大気側電極層５５３と、拡散抵抗層５５４と、隔壁部５５５と、ヒータ５５６と、を含んでいる。
固体電解質層５５１は酸素イオン導電性酸化物焼結体である。本例において、固体電解質層５５１は、ＺｒＯ２（ジルコニア）にＣａＯを安定剤として固溶させた「安定化ジルコニア素子」である。固体電解質層５５１は、その温度が活性温度以上であるとき、周知の「酸素電池特性」及び「酸素ポンプ特性」を発揮する。これらの特性は、後述するように、空燃比検出素子５５ａが排ガスの空燃比に応じた出力値を出力する際に発揮されるべき特性である。酸素電池特性とは、酸素濃度の高い側から低い側へ酸素イオンを通過させ起電力を発生する特性のことである。酸素ポンプ特性とは、固体電解質層５５１の両端に電位差が与えられたとき、陰極（低電位側電極）から陽極（高電位側電極）へとそれらの電極間の電位差に応じた量の酸素イオンを移動させる特性のことである。
排ガス側電極層５５２は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。排ガス側電極層５５２は、固体電解質層５５１の一つの面上に形成されている。排ガス側電極層５５２は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。
大気側電極層５５３は、白金（Ｐｔ）等の触媒活性の高い貴金属からなる。大気側電極層５５３は、固体電解質層５５１の他の面上であって、固体電解質層５５１を挟んで排ガス側電極層５５２に対向するように形成されている。大気側電極層５５３は、化学メッキ等により浸透性を十分に有するように（即ち、多孔質状に）形成されている。
拡散抵抗層（拡散律速層）５５４は、多孔質セラミック（耐熱性無機物質）からなる。拡散抵抗層５５４は、排ガス側電極層５５２の外側表面を覆うように、例えば、プラズマ溶射法等により形成されている。
隔壁部５５５は、緻密であってガスを透過させないアルミナセラミックスからなる。隔壁部５５５は大気側電極層５５３を収容する空間である「大気室５５７」を形成するように構成されている。大気室５５７には大気が導入されている。
ヒータ５５６は隔壁部５５５に埋設されている。ヒータ５５６は通電されたときに発熱し、固体電解質層５５１を加熱するようになっている。
上流側空燃比センサ５５は、図９に示したように、電源５５８を使用する。電源５５８は、大気側電極層５５３側が高電位となり、排ガス側電極層５５２が低電位となるように、電圧Ｖを印加する。
図９に示したように、排ガスの空燃比が理論空燃比よりもリーン側の空燃比であるとき、上述した酸素ポンプ特性が利用されることにより空燃比が検出される。即ち、排ガスの空燃比が理論空燃比よりもリーン側の空燃比であるとき、排ガス中に多量に含まれる酸素分子が拡散抵抗層５５４を通って排ガス側電極層５５２に到達する。その酸素分子は電子を受け取って酸素イオンになる。酸素イオンは、固体電解質層５５１を通過し、大気側電極層５５３にて電子を放出して酸素分子になる。この結果、電源５５８の正極から、大気側電極層５５３、固体電解質層５５１及び排ガス側電極層５５２を介して電源５５８の負極へと電流Ｉが流れる。
この電流Ｉの大きさは、電圧Ｖの大きさを所定値Ｖｐ以上に設定したとき、拡散抵抗層５５４の外側表面に到達した排ガスに含まれる酸素分子のうち「拡散抵抗層５５４を通って排ガス側電極層５５２へと拡散によって到達する酸素分子」の量に応じて変化する。即ち、電流Ｉの大きさは、排ガス側電極層５５２における酸素濃度（酸素分圧）に応じて変化する。排ガス側電極層５５２における酸素濃度は、拡散抵抗層５５４の外側表面に到達した排ガスの酸素濃度に応じて変化する。この電流Ｉは、図１０に示したように、電圧Ｖを所定値Ｖｐ以上に設定しても変化しないから、限界電流Ｉｐと呼ばれる。空燃比検出素子５５ａは、この限界電流Ｉｐ値に基いて空燃比に応じた値を出力する。
これに対し、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比であるとき、図１１に示したように、上述した酸素電池特性が利用されることにより空燃比が検出される。より具体的に述べると、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比であるとき、排ガス中に多量に含まれる未燃物（ＨＣ，ＣＯ及びＨ２等）が拡散抵抗層５５４を通って排ガス側電極層５５２に到達する。この場合、大気側電極層５５３における酸素濃度と排ガス側電極層５５２における酸素濃度との差（酸素分圧差）が大きくなるので、固体電解質層５５１は酸素電池として機能する。印加電圧Ｖは、この酸素電池の起電力よりも小さくなるように設定される。
従って、大気室５５７に存在する酸素分子は大気側電極層５５３にて電子を受け取って酸素イオンとなる。その酸素イオンは、固体電解質層５５１を通過し、排ガス側電極層５５２へと移動する。そして、排ガス側電極層５５２にて未燃物を酸化し、電子を放出する。この結果、電源５５８の負極から、排ガス側電極層５５２、固体電解質層５５１及び大気側電極層５５３を介して電源５５８の正極へと電流Ｉが流れる。
この電流Ｉの大きさは、大気側電極層５５３から固体電解質層５５１を通って排ガス側電極層５５２に到達する酸素イオンの量により定まる。前述したように、この酸素イオンは排ガス側電極層５５２にて未燃物を酸化するために使用される。従って、拡散により拡散抵抗層５５４を通過して排ガス側電極層５５２に到達する未燃物の量が多いほど、固体電解質層５５１を通過する酸素イオンの量は多くなる。換言すると、空燃比が小さいほど（理論空燃比よりもリッチ側の空燃比であって未燃物の量が多いほど）、電流Ｉの大きさは大きくなる。但し、拡散抵抗層５５４の存在により、排ガス側電極層５５２に到達する未燃物の量は制限されるので、電流Ｉは空燃比に応じた一定値Ｉｐとなる。空燃比検出素子５５ａは、この限界電流Ｉｐ値に基いて空燃比に応じた値を出力する。
このような検出原理に基づく空燃比検出素子５５ａは、図１２に示したように、上流側空燃比センサ５５の配設位置を流れ、且つ、外側保護カバー５５ｂの流入孔５５ｂ１及び内側保護カバー５５ｃの流入孔５５ｃ１を通って空燃比検出素子５５ａに到達しているガスの空燃比（上流側空燃比ａｂｙｆｓ、検出空燃比ａｂｙｆｓ）に応じた出力Ｖａｂｙｆｓを「空燃比センサ出力Ｖａｂｙｆｓ」として出力する。この空燃比センサ出力Ｖａｂｙｆｓは限界電流Ｉｐを電圧に変換することにより得られる。空燃比センサ出力Ｖａｂｙｆｓは、空燃比検出素子５５ａに到達しているガスの空燃比が大きくなるほど（リーンとなるほど）増大する。即ち、空燃比センサ出力は、空燃比検出素子５５ａに到達している排ガス（拡散抵抗層５５４に接触している排ガス）の空燃比に実質的に比例する。
後述する電気制御装置６０は、図１２に示した空燃比変換テーブル（マップ）Ｍａｐａｂｙｆｓを記憶していて、空燃比センサ出力Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、実際の上流側空燃比ａｂｙｆｓを検出する（即ち、検出空燃比ａｂｙｆｓを取得する）。
再び、図７を参照すると、下流側空燃比センサ５６は、上流側触媒４３と下流側触媒４４との間の位置においてエキゾーストパイプ４２（即ち、排気通路）に配設されている。下流側空燃比センサ５６は、周知の濃淡電池型の酸素濃度センサ（Ｏ２センサ）である。下流側空燃比センサ５６は、下流側空燃比センサ５６の配設位置を流れる排ガスの空燃比（下流側空燃比ａｆｄｏｗｎ）に応じた出力値Ｖｏｘｓを出力するようになっている。
下流側空燃比センサ５６の出力Ｖｏｘｓは、図１３に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値ｍａｘ（例えば、約０．９Ｖ）となり、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値ｍｉｎ（例えば、約０．１Ｖ）となり、被検出ガスの空燃比が理論空燃比であるとき最大出力値ｍａｘと最小出力値ｍｉｎの略中間の電圧Ｖｓｔ（中間電圧Ｖｓｔ、例えば、約０．５Ｖ）となる。更に、この出力値Ｖｏｘｓは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値ｍａｘから最小出力値ｍｉｎへと急変し、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値ｍｉｎから最大出力値ｍａｘへと急変する。
図７に示したアクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Ａｃｃｐを表す信号を出力するようになっている。
水温センサ５８は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
電気制御装置６０は、「ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ（又は、ＥＥＰＲＯＭ等の不揮発性メモリ）、並びに、ＡＤコンバータを含むインターフェース等」からなる「周知のマイクロコンピュータ」である。
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。  電気制御装置６０のインターフェースは、前記センサ５１〜５８と接続され、ＣＰＵにセンサ５１〜５８からの信号を供給するようになっている。更に、そのインターフェースは、ＣＰＵの指示に応じて、各気筒の点火プラグ２４、各気筒の燃料噴射弁２５、吸気弁制御装置２６及びスロットル弁アクチュエータ３４ａ等に指示信号（駆動信号）等を送出するようになっている。なお、電気制御装置６０は、取得されたアクセルペダルの操作量Ａｃｃｐが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３４ａに指示信号を送出するようになっている。
（作動）
第１判定装置は、上述した「本発明による空燃比気筒間インバランス判定の原理」に従って、空燃比気筒間インバランス判定を行う。以下、第１判定装置の作動について説明する。
＜燃料噴射量制御＞
ＣＰＵは、図１４に示した燃料噴射量Ｆｉの計算及び燃料噴射の指示を行うルーチンを、所定の気筒のクランク角が吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、その気筒（以下、「燃料噴射気筒」とも称呼する。）に対して繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵはステップ１４００から処理を開始し、以下に述べるステップ１４１０乃至ステップ１４４０の処理を順に行い、ステップ１４９５に進んで本ルーチンを一旦終了する。
ステップ１４１０：ＣＰＵは、「エアフローメータ５１により計測された吸入空気流量Ｇａ、機関回転速度ＮＥ及びルックアップテーブルＭａｐＭｃ」に基いて「燃料噴射気筒に吸入される空気量」である「筒内吸入空気量Ｍｃ（ｋ）」を取得する。筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。筒内吸入空気量Ｍｃ（ｋ）は、周知の空気モデル（吸気通路における空気の挙動を模した「物理法則に従って構築されるモデル」）により算出されてもよい。
ステップ１４２０：ＣＰＵは、筒内吸入空気量Ｍｃ（ｋ）を上流側目標空燃比ａｂｙｆｒで除することにより基本燃料噴射量Ｆｂａｓｅを求める。上流側目標空燃比ａｂｙｆｒは、特殊な場合を除き理論空燃比ｓｔｏｉｃｈに設定されている。
ステップ１４３０：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅをメインフィードバック量ＤＦｉにより補正する（より具体的には、基本燃料噴射量Ｆｂａｓｅにメインフィードバック量ＤＦｉを加える）ことにより、最終燃料噴射量Ｆｉを算出する。メインフィードバック量ＤＦｉについては後述する。
ステップ１４４０：ＣＰＵは、最終燃料噴射量（指示噴射量）Ｆｉの燃料が「燃料噴射気筒に対応して設けられている燃料噴射弁２５」から噴射されるように、その燃料噴射弁２５に指示信号を送出する。
このように、各燃料噴射弁２５から噴射される燃料の量は、全ての気筒に対して共通したメインフィードバック量ＤＦｉによって一律に増減される。
＜メインフィードバック量の算出＞
ＣＰＵは図１５にフローチャートにより示したメインフィードバック量算出ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１５００から処理を開始し、ステップ１５０５に進んでメインフィードバック制御条件（上流側空燃比フィードバック制御条件）が成立しているか否かを判定する。
メインフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（条件Ａ１）上流側空燃比センサ５５が活性化している。
（条件Ａ２）機関の負荷（負荷率）ＫＬが閾値ＫＬｔｈ以下である。
（条件Ａ３）フューエルカット中でない。
なお、負荷率ＫＬは、ここでは下記の（１）式により求められる。この負荷率ＫＬに代え、機関の負荷としてアクセルペダル操作量Ａｃｃｐ及びスロットル弁開度ＴＡ等が用いられても良い。（１）式において、Ｍｃは筒内吸入空気量であり、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、「４」は機関１０の気筒数である。
ＫＬ＝（Ｍｃ／（ρ・Ｌ／４））・１００％    …（１）
いま、メインフィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵはステップ１５０５にて「Ｙｅｓ」と判定して以下に述べるステップ１５１０乃至ステップ１５４０の処理を順に行い、ステップ１５９５に進んで本ルーチンを一旦終了する。
ステップ１５１０：ＣＰＵは、下記（２）式に従ってフィードバック制御用出力値Ｖａｂｙｆｃを取得する。（２）式において、Ｖａｂｙｆｓは上流側空燃比センサ５５の出力、Ｖａｆｓｆｂは下流側空燃比センサ５６の出力Ｖｏｘｓに基いて算出されるサブフィードバック量である。これらの値は、何れも現時点において得られている値である。サブフィードバック量Ｖａｆｓｆｂ算出方法については、後述する。なお、ＣＰＵは、上流側空燃比センサ５５の出力Ｖａｂｙｆｓに、サブフィードバック量Ｖａｆｓｆｂとサブフィードバック量の学習値（サブＦＢ学習値）Ｖａｆｓｆｂｇとを加えることにより、フィードバック制御用出力値Ｖａｂｙｆｃを取得してもよい。
Ｖａｂｙｆｃ＝Ｖａｂｙｆｓ＋Ｖａｆｓｆｂ    …（２）
ステップ１５１５：ＣＰＵは、下記（３）式に示したように、上記フィードバック制御用出力値Ｖａｂｙｆｃを図１２に示した空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、フィードバック制御用空燃比ａｂｙｆｓｃを得る。
ａｂｙｆｓｃ＝Ｍａｐａｂｙｆｓ（Ｖａｂｙｆｃ）    …（３）
ステップ１５２０：ＣＰＵは、下記（４）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量」である「筒内燃料供給量Ｆｃ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、「現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）」を「上記フィードバック制御用空燃比ａｂｙｆｓｃ」により除すことにより、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求める。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｓｃ    …（４）
このように、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）をフィードバック制御用空燃比ａｂｙｆｓｃで除すのは、「燃焼室２１内での混合気の燃焼により生成された排ガス」が上流側空燃比センサ５５に到達するまでに「Ｎストロークに相当する時間」を要しているからである。
ステップ１５２５：ＣＰＵは、下記（５）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に供給されるべきであった燃料の量」である「目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を上流側目標空燃比ａｂｙｆｒで除すことにより、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）を求める。
Ｆｃｒ＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｒ    …（５）
ステップ１５３０：ＣＰＵは、下記（６）式に従って、筒内燃料供給量偏差ＤＦｃを取得する。即ち、ＣＰＵは、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じることにより、筒内燃料供給量偏差ＤＦｃを求める。この筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）    …（６）
ステップ１５３５：ＣＰＵは、下記（７）式に従って、メインフィードバック量ＤＦｉを求める。この（７）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。更に、（７）式の「値ＳＤＦｃ」は「筒内燃料供給量偏差ＤＦｃの積分値」である。つまり、ＣＰＵは、フィードバック制御用空燃比ａｂｙｆｓｃを上流側目標空燃比ａｂｙｆｒに一致させるための比例積分制御により「メインフィードバック量ＤＦｉ」を算出する。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（７）
ステップ１５４０：ＣＰＵは、その時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ１５３０にて求められた筒内燃料供給量偏差ＤＦｃを加えることにより、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを取得する。
以上により、メインフィードバック量ＤＦｉが比例積分制御により求められ、このメインフィードバック量ＤＦｉが前述した図１４のステップ１４３０の処理により最終燃料噴射量Ｆｉに反映される。
ところで、上記（２）式の右辺の「サブフィードバック量Ｖａｆｓｆｂ」は、上流側空燃比センサ５５の出力Ｖａｂｙｆｓに比較して小さい値となり、且つ、小さい値となるように制限されている。従って、サブフィードバック量Ｖａｆｓｆｂは、「下流側空燃比センサ５６の出力Ｖｏｘｓ」を「理論空燃比に相当する値である下流側目標値Ｖｏｘｓｒｅｆ」に一致させるための「補助的な補正量」と考えることができる。この結果、フィードバック制御用空燃比ａｂｙｆｓｃは上流側空燃比センサ５５の出力Ｖａｂｙｆｓに実質的に基づく値であると言うことができる。即ち、メインフィードバック量ＤＦｉは「上流側空燃比センサ５５の出力Ｖａｂｙｆｓにより表される機関の空燃比」を「上流側目標空燃比ａｂｙｆｒ（理論空燃比）」に一致させるための補正量であると言うことができる。
一方、ステップ１５０５の判定時において、メインフィードバック制御条件が不成立であると、ＣＰＵはそのステップ１５０５にて「Ｎｏ」と判定してステップ１５４５に進み、メインフィードバック量ＤＦｉの値を「０」に設定する。次いで、ＣＰＵは、ステップ１５５０にて筒内燃料供給量偏差の積分値ＳＤＦｃに「０」を格納する。その後、ＣＰＵは、ステップ１５９５に進んで本ルーチンを一旦終了する。このように、メインフィードバック制御条件が不成立であるとき、メインフィードバック量ＤＦｉは「０」に設定される。従って、基本燃料噴射量Ｆｂａｓｅのメインフィードバック量ＤＦｉによる補正は行われない。
＜サブフィードバック量の算出＞
ＣＰＵは、サブフィードバック量Ｖａｆｓｆｂを算出するために、図１６示したルーチンを所定時間の経過毎に実行している。従って、所定のタイミングになると、ＣＰＵはステップ１６００から処理を開始し、ステップ１６０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。
サブフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（条件Ｂ１）メインフィードバック制御条件が成立している。
（条件Ｂ２）下流側空燃比センサ５６が活性化している。
（条件Ｂ３）上流側目標空燃比ａｂｙｆｒが理論空燃比ｓｔｏｉｃｈに設定されている。
いま、サブフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、以下に述べるステップ１６１０乃至ステップ１６３０の処理を順に行い、サブフィードバック量Ｖａｆｓｆｂを算出する。
ステップ１６１０：ＣＰＵは、下記（８）式に従って、「下流側目標値Ｖｏｘｓｒｅｆ」と「下流側空燃比センサ５６の出力Ｖｏｘｓ」との差である「出力偏差量ＤＶｏｘｓ」を取得する。即ち、ＣＰＵは、「下流側目標値Ｖｏｘｓｒｅｆ」から「現時点の下流側空燃比センサ５６の出力Ｖｏｘｓ」を減じることにより「出力偏差量ＤＶｏｘｓ」を求める。下流側目標値Ｖｏｘｓｒｅｆは理論空燃比に相当する値Ｖｓｔ（０．５Ｖ）に設定されている。
ＤＶｏｘｓ＝Ｖｏｘｓｒｅｆ−Ｖｏｘｓ    …（８）
ステップ１６１５：ＣＰＵは、下記（９）式に従って、サブフィードバック量Ｖａｆｓｆｂを求める。この（９）式において、Ｋｐは予め設定された比例ゲイン（比例定数）、Ｋｉは予め設定された積分ゲイン（積分定数）、Ｋｄは予め設定された微分ゲイン（微分定数）である。また、ＳＤＶｏｘｓは出力偏差量ＤＶｏｘｓの積分値（時間積分値ＳＤＶｏｘｓ）、ＤＤＶｏｘｓは出力偏差量ＤＶｏｘｓの微分値である。
Ｖａｆｓｆｂ＝Ｋｐ・ＤＶｏｘｓ＋Ｋｉ・ＳＤＶｏｘｓ＋Ｋｄ・ＤＤＶｏｘｓ    …（９）
ステップ１６２０：ＣＰＵは、「その時点における出力偏差量の積分値ＳＤＶｏｘｓ」に「上記ステップ１６１０にて求めた出力偏差量ＤＶｏｘｓ」を加えることにより、新たな出力偏差量の積分値ＳＤＶｏｘｓを求める。
ステップ１６２５：ＣＰＵは、「上記ステップ１６１０にて算出した出力偏差量ＤＶｏｘｓ」から「本ルーチンを前回実行した際に算出された出力偏差量である前回出力偏差量ＤＶｏｘｓｏｌｄ」を減じることにより、新たな出力偏差量の微分値ＤＤＶｏｘｓを求める。
ステップ１６３０：ＣＰＵは、「上記ステップ１６１０にて算出した出力偏差量ＤＶｏｘｓ」を「前回出力偏差量ＤＶｏｘｓｏｌｄ」として格納する。
このように、ＣＰＵは、下流側空燃比センサ５６の出力Ｖｏｘｓを下流側目標値Ｖｏｘｓｒｅｆに一致させるための比例・積分・微分（ＰＩＤ）制御により「サブフィードバック量Ｖａｆｓｆｂ」を算出する。このサブフィードバック量Ｖａｆｓｆｂは、上述した（２）式に示したように、フィードバック制御用出力値Ｖａｂｙｆｃを算出するために使用される。
一方、サブフィードバック制御条件が成立していない場合、ＣＰＵは図１６のステップ１６０５にて「Ｎｏ」と判定し、以下に述べるステップ１６３５及びステップ１６４０の処理を順に行い、ステップ１６９５に進んで本ルーチンを一旦終了する。
ステップ１６３５：ＣＰＵはサブフィードバック量Ｖａｆｓｆｂの値を「０」に設定する。
ステップ１６４０：ＣＰＵは出力偏差量の積分値ＳＤＶｏｘｓの値を「０」に設定する。
＜空燃比気筒間インバランス判定＞
次に、「空燃比気筒間インバランス判定」を実行するための処理について図１７を参照しながら説明する。ＣＰＵは、４ｍｓ（４ミリ秒＝所定の一定サンプリング時間ｔｓ）が経過する毎に、図１７にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を実行するようになっている。
従って、所定のタイミングになると、ＣＰＵはステップ１７００から処理を開始し、以下に述べるステップ１７１０乃至ステップ１７３０の処理を順に行い、ステップ１７４０に進む。
ステップ１７１０：ＣＰＵは、その時点の空燃比センサ出力ＶａｂｙｆｓをＡＤ変換することにより取得する。
ステップ１７２０：ＣＰＵは、その時点の検出空燃比ａｂｙｆｓ（上流側空燃比ａｂｙｆｓ）を前回の検出空燃比ａｂｙｆｓｏｌｄとして記憶する。即ち、前回の検出空燃比ａｂｙｆｓｏｌｄは、現時点から４ｍｓ（サンプリング時間ｔｓ）前の時点における検出空燃比ａｂｙｆｓである。
ステップ１７３０：ＣＰＵは、空燃比センサ出力Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、今回の検出空燃比ａｂｙｆｓを取得する。
次に、ＣＰＵはステップ１７４０に進み、空燃比気筒間インバランス判定実行条件（以下、「判定実行条件」とも称呼する。）が成立しているか否かを判定する。この判定実行条件は、以下の総ての条件が成立したときに成立する。なお、判定実行条件は、条件Ｃ１及び条件Ｃ３の双方が成立したときに成立する条件であってもよい。また、判定実行条件は、条件Ｃ３が成立しているときに成立する条件であってもよく、条件Ｃ３及び「条件Ｃ３を除く何れかの条件の一つ以上の条件」が成立する条件であってもよい。もちろん、判定実行条件は、他の条件が更に成立しているときに成立する条件であってもよい。
（条件Ｃ１）吸入空気流量Ｇａが、低側吸入空気流量閾値（第１閾値空気流量）Ｇａ１ｔｈよりも大きく、且つ、高側吸入空気流量閾値（第２閾値空気流量）Ｇａ２ｔｈよりも小さい。なお、高側吸入空気流量閾値Ｇａ２ｔｈは低側吸入空気流量閾値Ｇａ１ｔｈよりも大きい値である。
（条件Ｃ２）機関回転速度ＮＥが、低側機関回転速度閾値ＮＥ１ｔｈよりも大きく、且つ、高側機関回転速度閾値ＮＥ２ｔｈよりも小さい。なお、高側機関回転速度閾値ＮＥ２ｔｈは低側機関回転速度閾値ＮＥ１ｔｈよりも大きい値である。
（条件Ｃ３）フューエルカット中でない。
（条件Ｃ４）メインフィードバック制御条件が成立していて、メインフィードバック制御中である。
（条件Ｃ５）サブフィードバック制御条件が成立していて、サブフィードバック制御中である。
このとき、判定実行条件が不成立であると、ＣＰＵはステップ１７４０にて「Ｎｏ」と判定し、ステップ１７９５に直接進んで本ルーチンを一旦終了する。
これに対し、判定実行条件が成立していると、ＣＰＵはステップ１７４０にて「Ｙｅｓ」と判定してステップ１７５０に進み、「ステップ１７３０にて取得した今回の検出空燃比ａｂｙｆｓ」から「ステップ１７２０にて格納した前回の検出空燃比ａｂｙｆｓｏｌｄ」を減じることにより、検出空燃比変化率ΔＡＦを取得する。検出空燃比変化率ΔＡＦは、検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量として採用される。
この検出空燃比変化率ΔＡＦは、図１８の（Ａ）及び（Ｂ）に示したように、サンプリング時間ｔｓにおける検出空燃比ａｂｙｆｓの変化量ΔＡＦである。更に、サンプリング時間ｔｓが４ｍｓと短いので、検出空燃比変化率ΔＡＦは、実質的に検出空燃比ａｂｙｆｓの時間微分値ｄ（ａｂｙｆｓ）／ｄｔに比例し、従って、検出空燃比ａｂｙｆｓが形成する波形の傾きαを表す。
次に、ＣＰＵは図１７のステップ１７６０に進み、「空燃比変化率指示量として採用された検出空燃比変化率ΔＡＦ」の大きさ（検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜）が、所定のインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいか否かを判定する。このインバランス判定用閾値ΔＡＦ１ｔｈは、図１７のブロックＢ１内に示されているように、吸入空気流量Ｇａが大きいほど大きくなるように設定される。これは、図４を参照しながら説明したように、空燃比気筒間インバランス状態が発生している場合、空燃比検出素子５５ａに到達する空燃比は吸入空気流量Ｇａが大きいほど大きな変化率をもって変化するので、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）も吸入空気流量Ｇａが大きいほど大きくなるからである。
但し、インバランス判定用閾値ΔＡＦ１ｔｈは一定値であってもよい。その場合、判定実行条件において使用される「低側吸入空気流量閾値Ｇａ１ｔｈと高側吸入空気流量閾値Ｇａ２ｔｈとの差の大きさ（絶対値）」を小さい値に設定することが好ましい。
このとき、検出空燃比変化率ΔＡＦの大きさがインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいと、ＣＰＵはステップ１７６０にて「Ｙｅｓ」と判定してステップ１７７０に進み、空燃比気筒間インバランス発生フラグＸＩＮＢ（以下、「インバランス発生フラグＸＩＮＢ」とも称呼する。）の値を「１」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。
このインバランス発生フラグＸＩＮＢの値は、バックアップラムに格納される。更に、インバランス発生フラグＸＩＮＢの値は、機関１０を搭載した車両の工場出荷時又はサービス点検時等において空燃比気筒間インバランスが発生していない状態が確認できた際、電気制御装置に対して特別の操作をすることにより「０」に設定される。その後、ＣＰＵはステップ１７９５に進んで、本ルーチンを一旦終了する。
これに対し、ステップ１７６０の処理を行う時点において、検出空燃比変化率ΔＡＦの大きさがインバランス判定用閾値ΔＡＦ１ｔｈ以下であると、ＣＰＵはステップ１７６０にて「Ｎｏ」と判定し、ステップ１７９５に進んで本ルーチンを一旦終了する。
図１及び図１８からも明らかなように、空燃比気筒間インバランスが発生していなければ、７２０°クランク角が経過する期間において、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）がインバランス判定用閾値ΔＡＦ１ｔｈを超えることはない。これに対し、空燃比気筒間インバランスが発生していれば、７２０°クランク角が経過する期間において、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）がインバランス判定用閾値ΔＡＦ１ｔｈを超える場合が発生する。従って、空燃比気筒間インバランス状態が発生していると判定され、インバランス発生フラグＸＩＮＢの値は「１」に設定される。
以上、説明したように、第１判定装置は、
保護カバーを備える空燃比センサ５５と、
「空燃比センサ５５の出力（空燃比センサ出力Ｖａｂｙｆｓ）により表される空燃比（検出空燃比ａｂｙｆｓ）の単位時間当たりの変化量である検出空燃比変化率ΔＡＦ」に応じて変化する「空燃比変化率指示量（本例においては、検出空燃比変化率ΔＡＦそのもの）」を、空燃比センサ出力Ｖａｂｙｆｓに基づいて取得するとともに、その空燃比センサに排ガスが到達する少なくとも２以上の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の間に許容レベル以上の不均衡が生じているか否かの判定（空燃比気筒間インバランス判定）を、その取得された空燃比変化率指示量に基づいて実行するインバランス判定手段（図１７のルーチン）と、
を備えている。
更に、そのインバランス判定手段は、
前記取得された空燃比変化率指示量の大きさ（本例における検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜）と所定のインバランス判定用閾値ΔＡＦ１ｔｈとを比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成されている（図１７のステップ１７６０及びステップ１７７０を参照。）。
更に、そのインバランス判定手段は、
前記取得された空燃比変化率指示量の大きさ（本例における検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜）が前記インバランス判定用閾値ΔＡＦ１ｔｈよりも大きいことを前記比較の結果が示した場合（ステップ１７６０での「Ｙｅｓ」との判定を参照。）、前記空燃比気筒間インバランス状態が発生していると判定するように構成されている。
更に、そのインバランス判定手段は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、そのサンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を、前記空燃比変化率指示量として取得するように構成されている（ステップ１７１０〜ステップ１７３０、及び、ステップ１７５０を参照。）。
上述したように、検出空燃比変化率ΔＡＦは機関回転速度ＮＥの影響を殆ど受けないので、空燃比変化率指示量も機関回転速度ＮＥの影響を殆ど受けない。従って、空燃比変化率指示量を用いることにより、精度の良い空燃比気筒間インバランス判定を実行することができる。更に、第１判定装置によれば、インバランス判定用閾値ΔＡＦ１ｔｈを機関回転速度ＮＥ毎に詳細に設定する必要がないので、その第１判定装置を「より少ない開発工数」にて開発することができる。
更に、第１判定装置は、上記条件Ｃ１に示したように、「単位時間あたりに前記機関に吸入される空気の量である吸入空気流量Ｇａ」が「所定の第１閾値空気流量Ｇａ１ｔｈ」よりも大きいとき前記空燃比気筒間インバランス状態が発生しているか否かの判定を実行し、吸入空気流量Ｇａが第１閾値空気流量Ｇａ１ｔｈよりも小さいとき空燃比気筒間インバランス状態が発生しているか否かの判定を実行しないように構成されている（図１７のステップ１７４０を参照。）。
図４及び図５を参照しながら行った説明からも理解できるように、空燃比気筒間インバランスが発生していたとしても、吸入空気流量Ｇａが小さくなるほど検出空燃比変化率ΔＡＦの大きさは小さくなる。従って、吸入空気流量Ｇａが第１閾値空気流量Ｇａ１ｔｈよりも小さいときに、検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量（本例では、検出空燃比変化率ΔＡＦ＝空燃比変化率指示量）に基づいて空燃比気筒間インバランス判定を実行することは、誤判定を招く虞がある。従って、上記判定実行条件に上記条件Ｃ１を設ければ、空燃比気筒間インバランス判定をより精度良く実行することができる。
更に、第１判定装置は、吸入空気流量Ｇａが大きいほどインバランス判定用閾値ΔＡＦ１ｔｈ（閾値変化率）を大きい値に変更するように構成されている（ステップ１７６０を参照。）。
図４及び図５を参照しながら行った説明からも理解できるように、空燃比気筒間インバランス状態が発生しているとき、吸入空気流量Ｇａが大きくなるほど検出空燃比変化率ΔＡＦ（従って、空燃比変化率指示量）の大きさは大きくなる。従って、第１判定装置のように、吸入空気流量Ｇａが大きいほどインバランス判定用閾値ΔＡＦ１ｔｈを大きい値に変更すれば、より精度良く空燃比気筒間インバランス判定を実行することができる。
＜第２実施形態＞
次に、本発明の第２実施形態に係る内燃機関の制御装置（以下、単に「第２判定装置」と称呼する。）について説明する。
第２判定装置は、検出空燃比変化率ΔＡＦを「空燃比センサ出力Ｖａｂｙｆｓのサンプリング期間（時間ｔｓ）」よりも長いデータ取得期間において複数個取得し、それらの平均値を空燃比変化率指示量として取得し、且つ、その空燃比変化率指示量とインバランス判定用閾値ΔＡＦ１ｔｈとを比較することによって空燃比気筒間インバランス判定を行う点のみにおいて、第１判定装置と相違している。従って、以下、この相違点を中心として説明する。
第２判定装置のＣＰＵは、図１７にフローチャートにより示したルーチンに代え、図１９にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を４ｍｓ（所定の一定サンプリング時間ｔｓ）が経過する毎に実行するようになっている。更に、第２判定装置のＣＰＵは、図２０にフローチャートにより示した「判定許可フラグ設定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図１９のステップ１９００から処理を開始し、ステップ１９０２乃至ステップ１９０６の処理を行う。ステップ１９０２、ステップ１９０４及びステップ１９０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ１９０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａは、その値が「１」であるとき、インバランス判定実行条件が成立していて空燃比気筒間インバランス判定（インバランス判定用のデータの取得）を実行しても良いことを示す。更に、判定許可フラグＸｋｙｏｋａは、その値が「０」であるとき、インバランス判定実行条件が不成立であって空燃比気筒間インバランス判定を実行してはいけないことを示す。なお、判定許可フラグＸｋｙｏｋａの値は、機関１０が搭載された車両のイグニッション・キー・スイッチ（図示省略）がオフ位置からオン位置に切り換えられた際に実行される図示しないイニシャルルーチンにより「０」に設定されるようになっている。判定許可フラグＸｋｙｏｋａの値は、後述する「図２０に示したルーチン」により設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ１９０８にて「Ｎｏ」と判定してステップ１９１０に進み、検出空燃比変化率ΔＡＦの積算値ＳΔＡＦの値を「０」に設定（クリア）する。次いで、ＣＰＵはステップ１９１２に進んでカウンタＣｓの値を「０」に設定し、その後、ステップ１９９５に直接進んで本ルーチンを一旦終了する。
次に、判定許可フラグＸｋｙｏｋａの値が「１」であると仮定する。この場合、ＣＰＵはステップ１９０８にて「Ｙｅｓ」と判定し、以下に述べるステップ１９１４乃至ステップ１９１８の処理を順に行い、ステップ１９２０に進む。
ステップ１９１４：ＣＰＵはカウンタＣｓの値を「１」だけ増大する。カウンタＣｓの値は、後述するステップ１９１８にて「検出空燃比変化率ΔＡＦの積算値ＳΔＡＦに加算された検出空燃比変化率ΔＡＦ（の絶対値）」のデータ数（個数）を表す。なお、カウンタＣｓは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ１９１６：ＣＰＵは、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦを求める。
ステップ１９１８：ＣＰＵは、この時点における検出空燃比変化率ΔＡＦの積算値ＳΔＡＦに、ステップ１９１６にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、積算値ＳΔＡＦを更新する。積算値ＳΔＡＦに「検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜」を積算する理由は、図１の（Ｂ）及び（Ｃ）からも理解されるように、空燃比気筒間インバランス状態が発生しているとき、検出空燃比変化率ΔＡＦが正の値にも負の値にもなるからである。
次に、ＣＰＵはステップ１９２０に進み、基準気筒（本例では第１気筒）の圧縮上死点を基準としたクランク角ＣＡ（絶対クランク角ＣＡ）が７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ１９２０にて「Ｎｏ」と判定してステップ１９９５に直接進み、本ルーチンを一旦終了する。
このステップ１９２０は、検出空燃比変化率ΔＡＦの平均値を求めるための最小単位の期間を定めるステップであり、ここでは７２０°クランク角がその最小期間に相当する。７２０°クランク角は、一つの空燃比センサ５５に到達する排ガスを排出している総ての気筒（本例における第１〜第４気筒）において各一回の燃焼行程が終了するのに要するクランク角である。もちろん、この最小期間は７２０°クランク角よりも短くてもよいが、サンプリング時間ｔｓの複数倍の長さ以上の期間であることが望ましい。即ち、最小単位の期間内に複数個の検出空燃比変化率ΔＡＦが取得されるように、その最小単位の期間が定められていることが望ましい。
一方、ＣＰＵがステップ１９２０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ１９２０にて「Ｙｅｓ」と判定し、以下に述べるステップ１９２２乃至ステップ１９３０の処理を順に行い、ステップ１９３２に進む。
ステップ１９２２：ＣＰＵは、検出空燃比変化率ΔＡＦの積算値ＳΔＡＦをカウンタＣｓにより除することにより、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値（第１平均値）Ａｖｅ１を算出する。
ステップ１９２４：ＣＰＵは、検出空燃比変化率ΔＡＦの積算値ＳΔＡＦを「０」に設定（クリア）する。
ステップ１９２６：ＣＰＵは、カウンタＣｓの値を「０」に設定（クリア）する。
ステップ１９２８：ＣＰＵは、第１平均値Ａｖｅ１の積算値ＳＡｖｅ１を更新する。より具体的には、ＣＰＵはその時点の「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」に、ステップ１９２２にて新たに取得された今回の第１平均値Ａｖｅ１を加えることにより、今回の「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」を算出する。
ステップ１９３０：ＣＰＵは、カウンタＣｎの値を「１」だけ増大する。カウンタＣｎの値は「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」に加算された第１平均値Ａｖｅ１のデータ数（個数）を表す。なお、カウンタＣｎは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、ＣＰＵはステップ１９３２に進み、カウンタＣｎの値が閾値Ｃｎｔｈ以上であるか否かを判定する。このとき、カウンタＣｎの値が閾値Ｃｎｔｈ未満であると、ＣＰＵはそのステップ１９３２にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｎｔｈは自然数であり、２以上であることが望ましい。
一方、ＣＰＵがステップ１９３２の処理を行う時点において、カウンタＣｎの値が閾値Ｃｎｔｈ以上であると、ＣＰＵはそのステップ１９３２にて「Ｙｅｓ」と判定してステップ１９３４に進み、「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」をカウンタＣｎの値（＝Ｃｎｔｈ）によって除することにより、第１平均値Ａｖｅ１の平均値（最終平均値）Ａｖｅｆを算出する。この最終平均値Ａｖｅｆは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）であり、第２判定装置における空燃比変化率指示量である。
次いで、ＣＰＵはステップ１９３６に進み、最終平均値Ａｖｅｆ（空燃比変化率指示量）の大きさ（Ａｖｅｆ＝｜Ａｖｅｆ｜）がインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいか否かを判定する。このインバランス判定用閾値ΔＡＦ１ｔｈは、図１７のブロックＢ１内に示されているように、吸入空気流量Ｇａが大きいほど大きくなるように設定されることが望ましい。
このとき、最終平均値Ａｖｅｆの大きさがインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいと、ＣＰＵはステップ１９３６にて「Ｙｅｓ」と判定してステップ１９３８に進み、インバランス発生フラグＸＩＮＢの値を「１」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。その後、ＣＰＵはステップ１９４２に進む。
これに対し、ステップ１９３６の処理を行う時点において、最終平均値Ａｖｅｆの大きさがインバランス判定用閾値ΔＡＦ１ｔｈ以下であると、ＣＰＵはステップ１９３６にて「Ｎｏ」と判定してステップ１９４０に進み、インバランス発生フラグＸＩＮＢの値を「２」に設定する。即ち、「空燃比気筒間インバランス判定の結果、空燃比気筒間インバランス状態が発生していないと判定された旨」を記憶する。その後、ＣＰＵはステップ１９４２に進む。なお、ステップ１９４０は省略されてもよい。
ＣＰＵは、ステップ１９４２にて「第１平均値Ａｖｅ１の積算値ＳＡｖｅ１」を「０」に設定（クリア）する。次に、ＣＰＵは、ステップ１９４４にてカウンタＣｎの値を「０」に設定（クリア）し、ステップ１９９５に進んで本ルーチンを一旦終了する。
ところで、前述したように、ＣＰＵは図２０にフローチャートにより示した「判定許可フラグ設定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２０のステップ２０００から処理を開始してステップ２０１０に進み、絶対クランク角ＣＡが０°クランク角（＝７２０°クランク角）であるか否かを判定する。
ＣＰＵがステップ２０１０の処理を行う時点において、絶対クランク角ＣＡが０°クランク角でなければ、ＣＰＵはそのステップ２０１０にて「Ｎｏ」と判定してステップ２０４０に直接進む。
これに対し、ＣＰＵがステップ２０１０の処理を行う時点において、絶対クランク角ＣＡが０°クランク角であると、ＣＰＵはそのステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進み、判定実行条件が成立しているか否かを判定する。この判定実行条件は、図１７のステップ１７４０にて判定される条件と同一である（条件Ｃ１〜Ｃ５を参照。）。
ＣＰＵがステップ２０２０の処理を行う時点において、判定実行条件が成立していなければ、ＣＰＵはそのステップ２０２０にて「Ｎｏ」と判定し、ステップ２０４０に直接進む。
これに対し、ＣＰＵがステップ２０２０の処理を行う時点において、判定実行条件が成立していると、ＣＰＵはそのステップ２０２０にて「Ｙｅｓ」と判定してステップ２０３０に進み、判定許可フラグＸｋｙｏｋａの値を「１」に設定する。その後、ＣＰＵはステップ２０４０に進む。
ＣＰＵはステップ２０４０にて、上記判定実行条件が不成立であるか否かを判定する。そして、判定実行条件が不成立であると、ＣＰＵはそのステップ２０４０からステップ２０５０に進み、判定許可フラグＸｋｙｏｋａの値を「０」に設定し、ステップ２０９５に進んで本ルーチンを一旦終了する。これに対し、ＣＰＵがステップ２０４０の処理を行う時点において、判定実行条件が成立していれば、ＣＰＵはそのステップ２０４０からステップ２０９５へと直接進んで本ルーチンを一旦終了する。
このように、判定許可フラグＸｋｙｏｋａは、絶対クランク角が０°クランク角になった時点において判定実行条件が成立しているときに「１」に設定され、判定実行条件が不成立になった時点において「０」に設定される。
従って、絶対クランク角が０°クランク角になった時点において判定実行条件が成立していることにより判定許可フラグＸｋｙｏｋａが「１」に設定され、その後、絶対クランク角が７２０°クランク角に到達する前の時点において判定実行条件が不成立になると、その時点にて判定許可フラグＸｋｙｏｋａの値は「０」に設定される。このため、かかる状況が発生した場合、ＣＰＵは図１９のステップ１９０８からステップ１９１０及びステップ１９１２へと進むので、それまでに蓄積されていたデータ（検出空燃比変化率ΔＡＦの積算値ＳΔＡＦ、及び、カウンタＣｓの値）は破棄される。即ち、判定実行条件が「少なくともクランク角が７２０°回転する期間」連続して成立している場合に限り、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値（第１平均値Ａｖｅ１）が取得される。
以上、説明したように、第２判定装置は、
検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量（本例においては、検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の平均値である最終平均値Ａｖｅｆ）を、空燃比センサ出力Ｖａｂｙｆｓに基づいて取得するとともに、空燃比気筒間インバランス判定を、その取得された空燃比変化率指示量に基づいて実行する（取得された空燃比変化率指示量Ａｖｅｆの大きさ（Ａｖｅｆは正であるので｜Ａｖｅｆ｜と等しい。）と所定のインバランス判定用閾値ΔＡＦ１ｔｈとを比較し、その比較の結果に基づいてインバランス判定を実行する）インバランス判定手段を、
を備えている（図１９のルーチン）。
従って、第２判定装置は、第１判定装置と同様、「精度の良い空燃比気筒間インバランス判定を実行することができ、且つ、より少ない開発工数にて開発可能である。」との効果を有する。
更に、前記インバランス判定手段は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、そのサンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力Ｖａｂｙｆｓのそれぞれにより表される空燃比（即ち、今回の検出空燃比ａｂｙｆｓ及び前回の検出空燃比ａｂｙｆｓｏｌｄ）の差ΔＡＦを検出空燃比変化率ΔＡＦとして取得し、且つ、前記サンプリング期間よりも長いデータ取得期間（７２０°クランク角のＣｎｔｈ倍の時間が経過する期間）において取得された複数の検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の平均値（最終平均値Ａｖｅｆ）を前記空燃比変化率指示量として取得するように構成されている。
更に、第２判定装置は、複数の検出空燃比変化率の平均値（最終平均値Ａｖｅｆ）を空燃比変化率指示量として取得し、その空燃比変化率指示量（空燃比変化率指示量の大きさ）とインバランス判定用閾値とを比較する。従って、空燃比センサ出力Ｖａｂｙｆｓ自体にノイズが重畳していたとしても、空燃比変化率指示量がそのノイズの影響を受け難いので、より精度のよいインバランス判定を実行することができる。
加えて、第２判定装置は、前記データ取得期間を、前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間（本例における７２０°クランク角に相当する期間）の自然数Ｃｎｔｈ倍の期間に設定している。
この結果、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量（最終平均値Ａｖｅｆ）は、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量（最終平均値Ａｖｅｆ）よりも確実に大きい値となる。従って、第２判定装置は、より精度良く空燃比気筒間インバランス判定を実行することができる。
なお、第２判定装置は、７２０°クランク角毎に検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の平均値を第１平均値Ａｖｅ１として求め、更に、その第１平均値Ａｖｅ１のＣｎｔｈ個の平均を最終平均値Ａｖｅｆ（空燃比変化率指示量）として取得しているが、７２０°クランク角（単位燃焼サイクル期間）の複数倍（２以上の整数倍）の期間全体において取得される検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の平均値を最終平均値Ａｖｅｆ（空燃比変化率指示量）として採用してもよい。
＜第３実施形態＞
次に、本発明の第３実施形態に係る内燃機関の制御装置（以下、単に「第３判定装置」と称呼する。）について説明する。
第３装置は、検出空燃比変化率ΔＡＦのサンプリング期間ｔｓよりも長いデータ取得期間において取得された複数の検出空燃比変化率ΔＡＦのうちその大きさ（｜ΔＡＦ｜）が最大である最大検出空燃比変化率ΔＡＦｍａｘ又はその最大検出空燃比変化率ΔＡＦｍａｘの複数個の平均値ＡｖｅΔＡＦｍａｘを、前記空燃比変化率指示量として取得し、且つ、その空燃比変化率指示量とインバランス判定用閾値ΔＡＦ１ｔｈとを比較することによって空燃比気筒間インバランス判定を行う点のみにおいて、第１判定装置と相違している。従って、以下、この相違点を中心として説明する。
第３判定装置のＣＰＵは、図１７にフローチャートにより示したルーチンに代え、図２１にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を４ｍｓ（所定の一定サンプリング時間ｔｓ）が経過する毎に実行するようになっている。更に、第３判定装置のＣＰＵは、図２０にフローチャートにより示した「判定許可フラグ設定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図２１のステップ２１００から処理を開始し、ステップ２１０２乃至ステップ２１０６の処理を行う。ステップ２１０２、ステップ２１０４及びステップ２１０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ２１０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ２１０８にて「Ｎｏ」と判定してステップ２１１０に進み、カウンタＣｓの値を「０」に設定（クリア）する。次いで、ＣＰＵはステップ２１１２に進み、検出空燃比変化率ΔＡＦ（Ｃｓ）の総てを「０」に設定（クリア）する。この検出空燃比変化率ΔＡＦ（Ｃｓ）は、後述するステップ２１１８にて、カウンタＣｓの値に対応して格納される検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜である。その後、ＣＰＵはステップ２１９５に直接進んで本ルーチンを一旦終了する。
次に、判定許可フラグＸｋｙｏｋａの値が「１」であると仮定する。この場合、ＣＰＵはステップ２１０８にて「Ｙｅｓ」と判定し、以下に述べるステップ２１１４乃至ステップ２１１８の処理を順に行い、ステップ２１２０に進む。
ステップ２１１４：ＣＰＵはカウンタＣｓの値を「１」だけ増大する。なお、カウンタＣｓは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ２１１６：ＣＰＵは、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦを求める。
ステップ２１１８：ＣＰＵは、検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓ番目のデータΔＡＦ（Ｃｓ）として格納する。例えば、現時点が「判定許可フラグＸｋｙｏｋａの値が「０」から「１」へと変更になった直後の時点」であるとすると、カウンタＣｓの値は「１」である（ステップ２１１０及びステップ２１１４を参照。）。従って、ステップ２１１６にて取得された検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）がデータΔＡＦ（１）として格納される。
次に、ＣＰＵはステップ２１２０に進み、前述した絶対クランク角ＣＡが７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ２１２０にて「Ｎｏ」と判定してステップ２１９５に直接進み、本ルーチンを一旦終了する。以上の処理は、判定許可フラグＸｋｙｏｋａの値が「１」であり、絶対クランク角ＣＡが７２０°クランク角に一致するまで４ｍｓ毎に繰り返し実行される。従って、ΔＡＦ（Ｃｓ）が蓄積されていく。
このステップ２１２０は、検出空燃比変化率ΔＡＦの最大値を求めるための最小単位の期間を定めるステップであり、ここでは７２０°クランク角がその最小期間に相当する。７２０°クランク角は、一つの空燃比センサ５５に到達する排ガスを排出している総ての気筒（本例における第１〜第４気筒）において各一回の燃焼行程が終了するのに要するクランク角である。換言すると、７２０°クランク角が経過する期間は、「空燃比センサ５５に排ガスが到達する総ての気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」であり、前述した「単位燃焼サイクル期間」である。
一方、ＣＰＵがステップ２１２０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ２１２０にて「Ｙｅｓ」と判定し、以下に述べるステップ２１２２乃至ステップ２１３０の処理を順に行う。
ステップ２１２２：ＣＰＵは、複数のデータΔＡＦ（Ｃｓ）の中から最大値を選択し、その最大値を最大値ΔＡＦｍａｘとして格納する。即ち、ＣＰＵは複数のデータΔＡＦ（Ｃｓ）の中の最大値を最大値ΔＡＦｍａｘとして選択する。
ステップ２１２４：ＣＰＵは、複数のデータΔＡＦ（Ｃｓ）を総て「０」に設定（クリア）する。
ステップ２１２６：ＣＰＵは、カウンタＣｓの値を「０」に設定（クリア）する。
ステップ２１２８：ＣＰＵは、この時点における最大値ΔＡＦｍａｘの積算値Ｓｍａｘに、ステップ２１２２にて選択した今回の最大値ΔＡＦｍａｘを加えることにより、積算値Ｓｍａｘを更新する。
ステップ２１３０：ＣＰＵは、カウンタＣｎの値を「１」だけ増大する。カウンタＣｎの値は「最大値ΔＡＦｍａｘの積算値Ｓｍａｘ」に加算（積算）された最大値ΔＡＦｍａｘのデータ数（個数）を表す。なお、カウンタＣｎは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、ＣＰＵはステップ２１３２に進み、カウンタＣｎの値が閾値Ｃｎｔｈ以上であるか否かを判定する。このとき、カウンタＣｎの値が閾値Ｃｎｔｈ未満であると、ＣＰＵはステップ２１３２にて「Ｎｏ」と判定し、ステップ２１９５に直接進んで本ルーチンを一旦終了する。閾値Ｃｎｔｈは自然数であり、２以上であることが望ましい。
一方、ＣＰＵがステップ２１３２の処理を行う時点において、カウンタＣｎの値が閾値Ｃｎｔｈ以上であると、ＣＰＵはそのステップ２１３２にて「Ｙｅｓ」と判定してステップ２１３４に進み、「最大値ΔＡＦｍａｘの積算値Ｓｍａｘ」をカウンタＣｎの値（＝Ｃｎｔｈ）によって除することにより、最大値ΔＡＦｍａｘの平均値（最終最大平均値）ＡｖｅΔＡＦｍａｘを算出する。この最終最大平均値ＡｖｅΔＡＦｍａｘは、検出空燃比変化率ΔＡＦに応じて変化する値（検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜のうちの最大値が大きくなるほど大きくなる値）であり、第３判定装置における空燃比変化率指示量である。なお、閾値Ｃｎｔｈが「１」であるとき、最終最大平均値ＡｖｅΔＡＦｍａｘは最大値ΔＡＦｍａｘと等しい。
次いで、ＣＰＵはステップ２１３６に進み、最終最大平均値ＡｖｅΔＡＦｍａｘ（空燃比変化率指示量）の大きさがインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいか否かを判定する。このインバランス判定用閾値ΔＡＦ１ｔｈは、図１７のブロックＢ１内に示されているように、吸入空気流量Ｇａが大きいほど大きくなるように設定されることが望ましい。なお、最終最大平均値ＡｖｅΔＡＦｍａｘは正の値であるので、最終最大平均値ＡｖｅΔＡＦｍａｘとその大きさ｜ＡｖｅΔＡＦｍａｘ｜とは等しい。
このとき、最終最大平均値ＡｖｅΔＡＦｍａｘの大きさがインバランス判定用閾値ΔＡＦ１ｔｈよりも大きいと、ＣＰＵはステップ２１３６にて「Ｙｅｓ」と判定してステップ２１３８に進み、インバランス発生フラグＸＩＮＢの値を「１」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。その後、ＣＰＵはステップ２１４２に進む。
これに対し、ステップ２１３６の処理を行う時点において、最終最大平均値ＡｖｅΔＡＦｍａｘの大きさがインバランス判定用閾値ΔＡＦ１ｔｈ以下であると、ＣＰＵはステップ２１３６にて「Ｎｏ」と判定してステップ２１４０に進み、インバランス発生フラグＸＩＮＢの値を「２」に設定する。その後、ＣＰＵはステップ２１４２に進む。なお、ステップ２１４０は省略されてもよい。
ＣＰＵは、ステップ２１４２にて「最大値ΔＡＦｍａｘの積算値Ｓｍａｘ」を「０」に設定（クリア）する。次に、ＣＰＵは、ステップ２１４４にてカウンタＣｎの値を「０」に設定（クリア）し、ステップ２１９５に進んで本ルーチンを一旦終了する。
なお、この第３判定装置においても、判定許可フラグＸｋｙｏｋａは、絶対クランク角が０°クランク角になった時点において判定実行条件が成立しているときに「１」に設定され、判定実行条件が不成立になった時点において「０」に設定される。
従って、絶対クランク角が０°クランク角になった時点において判定実行条件が成立していることにより判定許可フラグＸｋｙｏｋａが「１」に設定され、その後、絶対クランク角が７２０°クランク角に到達する前の時点において判定実行条件が不成立になると、その時点にて判定許可フラグＸｋｙｏｋａの値は「０」に設定される。この場合、ＣＰＵは図２１のステップ２１０８からステップ２１１０及びステップ２１１２へと進むので、それまでに蓄積されていたデータ（データΔＡＦ（Ｃｓ）、及び、カウンタＣｓの値）は破棄される。即ち、判定実行条件が「少なくともクランク角が７２０°回転する期間」連続して成立している場合に限り、その期間に取得された検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の最大値ΔＡＦｍａｘが「最終最大平均値ＡｖｅΔＡＦｍａｘ」を求めるためのデータとして採用される。
以上、説明したように、第３判定装置は、
検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量（本例においては、検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜の最大値ΔＡＦｍａｘの平均値である最終最大平均値ＡｖｅΔＡＦｍａｘ）を、空燃比センサ出力Ｖａｂｙｆｓに基づいて取得するとともに、空燃比気筒間インバランス判定を、その取得された空燃比変化率指示量に基づいて実行する（取得された空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較し、その比較の結果に基づいてインバランス判定を実行する）インバランス判定手段（図２１のルーチン）を、
備える。
従って、第３判定装置は、第１判定装置と同様、「精度の良い空燃比気筒間インバランス判定を実行することができ、且つ、より少ない開発工数にて開発可能である。」との効果を有する。
更に、前記インバランス判定手段は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、そのサンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力Ｖａｂｙｆｓのそれぞれにより表される空燃比（今回の検出空燃比ａｂｙｆｓ及び前回の検出空燃比ａｂｙｆｓｏｌｄ）の差ΔＡＦを検出空燃比変化率ΔＡＦとして取得し、且つ、前記サンプリング期間よりも長いデータ取得期間（７２０°クランク角が経過する期間）において取得された複数の検出空燃比変化率ΔＡＦのうちその大きさ｜ΔＡＦ｜が最大である検出空燃比変化率に応じた値（閾値Ｃｎｔｈが１であれば最大値ΔＡＦｍａｘ、閾値Ｃｎｔｈが２以上であれば最終最大平均値ＡｖｅΔＡＦｍａｘ）を前記空燃比変化率指示量として取得するように構成されている。
仮に空燃比センサ出力Ｖａｂｙｆｓにノイズが重畳していたとしても、空燃比気筒間インバランス状態が発生している場合に取得された複数の検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜のうちの最大値と、空燃比気筒間インバランス状態が発生していない場合に取得された複数の検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜のうちの最大値と、は大きく相違する。従って、第３判定装置は、より精度良く空燃比気筒間インバランス判定を実行することができる。
また、前記データ取得期間は、前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、「吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である「単位燃焼サイクル期間」、の自然数（閾値Ｃｎｔｈ）倍の期間に定められている。
このように、「複数の検出空燃比変化率の大きさの最大値を空燃比変化率指示量」を求めるデータとして採用する場合、その最大値を取得する期間を「単位燃焼サイクル期間の自然数倍の期間（従って、単位燃焼サイクル期間よりも長い期間）」に設定すれば、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量は、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量よりも確実に大きい値となる。従って、この態様は、より精度良く空燃比気筒間インバランス判定を実行することができる。
更に、第３判定装置のインバランス判定手段は、
前記単位燃焼サイクル期間よりも短い一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得し、且つ、
そのサンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力Ｖａｂｙｆｓのそれぞれにより表される空燃比（今回の検出空燃比ａｂｙｆｓ及び前回の検出空燃比ａｂｙｆｓｏｌｄ）の差ΔＡＦを、検出空燃比変化率ΔＡＦとして取得し、更に、
前記単位燃焼サイクル期間において取得された複数の検出空燃比変化率の中からその大きさが最大である検出空燃比変化率を最大変化率（最大値）ΔＡＦｍａｘとして選択するとともに、
複数の単位燃焼サイクル期間に対して取得された前記最大変化率ΔＡＦｍａｘの平均値（最終最大平均値ＡｖｅΔＡＦｍａｘ）を求め、
その平均値（最終最大平均値ＡｖｅΔＡＦｍａｘ）を前記空燃比変化率指示量として取得するように構成されている（ステップ２１３４を参照。）。
従って、空燃比気筒間インバランス状態が発生していない場合において、ノイズ等に起因して突発的に検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜が大きくなったとしても、最終最大平均値ＡｖｅΔＡＦｍａｘはそれほど大きくはなならい。従って、第３判定装置は、空燃比センサ出力Ｖａｂｙｆｓにノイズが重畳するような場合であっても、より精度良く空燃比気筒間インバランス判定を実行することができる。
＜第４実施形態＞
次に、本発明の第４実施形態に係る内燃機関の制御装置（以下、単に「第４判定装置」と称呼する。）について説明する。
第４装置の特徴は、次のとおりである。
・第４装置は、前記空燃比変化率指示量（例えば、検出空燃比変化率ΔＡＦの大きさの平均値）を、「検出空燃比変化率ΔＡＦが正である場合の増大変化率指示量」と「検出空燃比変化率ΔＡＦが負である場合の減少変化率指示量」とに区別して取得する。
・第４装置は、増大変化率指示量の大きさが減少変化率指示量の大きさよりも大きい場合には前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きいとき、「空燃比センサ５５に排ガスが到達する少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態」が発生したと判定する。
・第４装置は、減少変化率指示量の大きさが増大変化率指示量の大きさよりも大きい場合には前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較するとともに、前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きいとき、「前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態」が発生したと判定する。
以下、この特徴について詳しく説明する。
第４判定装置のＣＰＵは、第２装置のＣＰＵが実行するルーチンを所定のタイミングにて実行するとともに、図１９に示したルーチンに代わる図２２にフローチャートにより示した「データ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。更に、第４判定装置のＣＰＵは、図２３にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図２２のステップ２２００から処理を開始し、ステップ２２０２乃至ステップ２２０６の処理を行う。ステップ２２０２、ステップ２２０４及びステップ２２０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ２２０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ２２０８にて「Ｎｏ」と判定し、以下に述べるステップ２２１０乃至ステップ２２１６の処理を順に行い、ステップ２２９５に進んで本ルーチンを一旦終了する。
ステップ２２１０：ＣＰＵは、「正の検出空燃比変化率ΔＡＦである増大変化率ΔＡＦｐ」の積算値ＳΔＡＦｐの値を「０」に設定（クリア）する。この積算値ＳΔＡＦｐは、以下、「増大変化率積算値ＳΔＡＦｐ」とも称呼される。
ステップ２２１２：ＣＰＵは、カウンタＣｓｐの値を「０」に設定（クリア）する。なお、カウンタＣｓｐの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ２２１４：ＣＰＵは、「負の検出空燃比変化率ΔＡＦである減少変化率ΔＡＦｍ」の積算値ＳΔＡＦｍの値を「０」に設定（クリア）する。この積算値ＳΔＡＦｍは、以下、「減少変化率積算値ＳΔＡＦｍ」とも称呼される。
ステップ２２１６：ＣＰＵは、カウンタＣｓｍの値を「０」に設定（クリア）する。なお、カウンタＣｓｍの値も上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ２２０８にて「Ｙｅｓ」と判定してステップ２２１８に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ２２２０に進み、検出空燃比変化率ΔＡＦが「０」以上であるか否か（０を含む正であるか、負であるか）を判定する。
このとき、検出空燃比変化率ΔＡＦが「０」以上であると（即ち、検出空燃比ａｂｙｆｓが増大していると）、ＣＰＵはステップ２２２０にて「Ｙｅｓ」と判定してステップ２２２２に進み、この時点における増大変化率積算値ＳΔＡＦｐに、ステップ２２１８にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、増大変化率積算値ＳΔＡＦｐを更新する。なお、この場合、検出空燃比変化率ΔＡＦは正の値であるので、この時点における増大変化率積算値ＳΔＡＦｐに検出空燃比変化率ΔＡＦを加えることにより増大変化率積算値ＳΔＡＦｐを更新してもよい。
次に、ＣＰＵはステップ２２２４に進み、カウンタＣｓｐの値を「１」だけ増大する。カウンタＣｓｐの値は増大変化率積算値ＳΔＡＦｐに加算された検出空燃比変化率ΔＡＦのデータ数（個数）を表す。その後、ＣＰＵはステップ２２３０に進む。
一方、ＣＰＵがステップ２２２０の処理を行う時点において、検出空燃比変化率ΔＡＦが「０」よりも小さいと（即ち、検出空燃比ａｂｙｆｓが減少していると）、ＣＰＵはステップ２２２０にて「Ｎｏ」と判定してステップ２２２６に進み、この時点における減少変化率積算値ＳΔＡＦｍに、ステップ２２１８にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、減少変化率積算値ＳΔＡＦｍを更新する。
次に、ＣＰＵはステップ２２２８に進み、カウンタＣｓｍの値を「１」だけ増大する。カウンタＣｓｍの値は減少変化率積算値ＳΔＡＦｍに加算された検出空燃比変化率ΔＡＦのデータ数（個数）を表す。その後、ＣＰＵはステップ２２３０に進む。
次に、ＣＰＵはステップ２２３０にて、絶対クランク角ＣＡが７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ２２３０にて「Ｎｏ」と判定してステップ２２９５に直接進み、本ルーチンを一旦終了する。
このステップ２２３０は、増大変化率ΔＡＦｐの平均値（平均増大変化率Ａｖｅｐ）及び減少変化率ΔＡＦｍの平均値（平均減少変化率Ａｖｅｍ）を求めるための最小単位の期間を定めるステップであり、ここでは７２０°クランク角（単位燃焼サイクル期間）がその最小期間に相当する。
一方、ＣＰＵがステップ２２３０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ２２３０にて「Ｙｅｓ」と判定し、以下に述べるステップ２２３２乃至ステップ２２４４の処理を順に行い、ステップ２２４６に進む。
ステップ２２３２：ＣＰＵは、増大変化率積算値ＳΔＡＦｐをカウンタＣｓｐにより除することにより、増大変化率ΔＡＦｐの平均値（平均増大変化率Ａｖｅｐ）を算出する。
ステップ２２３４：ＣＰＵは、増大変化率積算値ＳΔＡＦｐ及びカウンタＣｓｐを共に「０」に設定（クリア）する。
ステップ２２３６：ＣＰＵは、平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐを更新する。より具体的には、ＣＰＵはその時点の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」に、ステップ２２３２にて新たに取得された今回の平均増大変化率Ａｖｅｐを加えることにより、今回の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」を算出する。
ステップ２２３８：ＣＰＵは、減少変化率積算値ＳΔＡＦｍをカウンタＣｓｍにより除することにより、減少変化率ΔＡＦｍの平均値（平均減少変化率Ａｖｅｍ）を算出する。
ステップ２２４０：ＣＰＵは、減少変化率積算値ＳΔＡＦｍ及びカウンタＣｓｍを共に「０」に設定（クリア）する。
ステップ２２４２：ＣＰＵは、平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍを更新する。より具体的には、ＣＰＵはその時点の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」に、ステップ２２３８にて新たに取得された今回の平均減少変化率Ａｖｅｍを加えることにより、今回の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」を算出する。
ステップ２２４４：ＣＰＵは、カウンタＣｎの値を「１」だけ増大する。カウンタＣｎの値は「積算値ＳＡｖｅｐに加算された平均増大変化率Ａｖｅｐのデータの数」及び「積算値ＳＡｖｅｍに加算された平均減少変化率Ａｖｅｍのデータの数」を表す。なお、カウンタＣｎは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、ＣＰＵはステップ２２４６に進み、カウンタＣｎの値が閾値Ｃｎｔｈ以上であるか否かを判定する。このとき、カウンタＣｎの値が閾値Ｃｎｔｈ未満であると、ＣＰＵはそのステップ２２４６にて「Ｎｏ」と判定し、ステップ２２９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｎｔｈは自然数であり、「２」以上であることが望ましい。
一方、ＣＰＵがステップ２２４６の処理を行う時点において、カウンタＣｎの値が閾値Ｃｎｔｈ以上であると、ＣＰＵはそのステップ２２４６にて「Ｙｅｓ」と判定し、以下に述べるステップ２２４８及びステップ２２５６の処理を順に行う。
ステップ２２４８：ＣＰＵは、「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」をカウンタＣｎによって除することにより、平均増大変化率Ａｖｅｐの平均値（最終増大変化率平均値）ＡｖｅΔＡＦｐを算出する。この最終増大変化率平均値ＡｖｅΔＡＦｐは、検出空燃比変化率ΔＡＦが正であるときの検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）である。この最終増大変化率平均値ＡｖｅΔＡＦｐは、空燃比変化率指示量の一つであり、「増大変化率指示量」とも称呼される。
ステップ２２５０：ＣＰＵは、「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」をカウンタＣｎによって除することにより、平均減少変化率Ａｖｅｍの平均値（最終減少変化率平均値）ＡｖｅΔＡＦｍを算出する。この最終減少変化率平均値ＡｖｅΔＡＦｍは、検出空燃比変化率ΔＡＦが負であるときの検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）である。この最終減少変化率平均値ＡｖｅΔＡＦｍは、空燃比変化率指示量の一つであり、「減少変化率指示量」とも称呼される。
ステップ２２５２：ＣＰＵは、積算値ＳＡｖｅｐを「０」に設定（クリア）するとともに、積算値ＳＡｖｅｍを「０」に設定（クリア）する。
ステップ２２５４：ＣＰＵは、カウンタＣｎの値を「０」に設定（クリア）する。
ステップ２２５６：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する。この判定実行フラグＸｈａｎｔｅｉは、その値が「１」であるとき、空燃比気筒間インバランス判定を行うためのデータ（この場合、最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍ）の取得が完了し、それらを用いた空燃比気筒間インバランス判定を実行することが可能な状態になったことを示す。更に、判定実行フラグＸｈａｎｔｅｉの値は、後述する「図２３に示したルーチン」により空燃比気筒間インバランス判定が実行された後に「０」に設定される。なお、判定実行フラグＸｈａｎｔｅｉの値は、上述したイニシャルルーチンにより「０」に設定されるようになっている。
一方、前述したように、ＣＰＵは図２３にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２３のステップ２３００から処理を開始してステップ２３０５に進み、判定実行フラグＸｈａｎｔｅｉの値が「１」であるか否かを判定する。このとき、判定実行フラグＸｈａｎｔｅｉの値が「０」であれば、ＣＰＵはステップ２３０５にて「Ｎｏ」と判定し、ステップ２３９５に直接進んで本ルーチンを一旦終了する。
これに対し、図２２のステップ２２５６にて判定実行フラグＸｈａｎｔｅｉの値が「１」に設定された直後の時点にてＣＰＵがステップ２３０５の処理を実行すると、ＣＰＵはそのステップ２３０５にて「Ｙｅｓ」と判定してステップ２３１０に進み、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐ以上であるか否かを判定する。
ところで、リッチずれ又はリーンずれしている気筒の排ガスが空燃比センサ５５に到達したとき、空燃比センサ出力Ｖａｂｙｆｓは急激に変化する。従って、図１の（Ｂ）に示したように、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態（特定気筒リッチずれインバランス状態）」が発生している場合、検出空燃比変化率ΔＡＦの大きさ（絶対値｜ΔＡＦ｜、即ち、検出空燃比ａｂｙｆｓの傾きの大きさ）は、検出空燃比ａｂｙｆｓが減少している期間において検出空燃比ａｂｙｆｓが増大している期間よりも大きくなる（角度α２の大きさ＞角度α３の大きさ）。
逆に、図１の（Ｃ）に示したように、「特定気筒（例えば、第１気筒）の空燃比のみが理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態（特定気筒リーンずれインバランス状態）」が発生している場合、検出空燃比変化率ΔＡＦの大きさは、検出空燃比ａｂｙｆｓが増大している期間において検出空燃比ａｂｙｆｓが減少している期間よりも大きくなる（角度α４の大きさ＞角度α５の大きさ）。
そこで、本判定装置は、このような現象を利用して以下のように空燃比気筒間インバランス判定を行う。
いま、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐよりも大きいと仮定する。この場合、ＣＰＵはステップ２３１０にて「Ｙｅｓ」と判定してステップ２３１５に進み、最終減少変化率平均値ＡｖｅΔＡＦｍがリッチずれ判定閾値Ａｍｔｈ以上であるか否かを判定する。リッチずれ判定閾値Ａｍｔｈは「減少変化率閾値」とも称呼される。
このとき、最終減少変化率平均値ＡｖｅΔＡＦｍがリッチずれ判定閾値Ａｍｔｈ以上であれば、ＣＰＵはステップ２３１５にて「Ｙｅｓ」と判定してステップ２３２０に進み、リッチずれインバランス発生フラグＸＩＮＢＲの値を「１」に設定する。即ち、ＣＰＵは「リッチずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。この場合、点灯される警告ランプは、後述するリーンずれインバランス状態が発生していると判定された際に点灯されるランプと異なるランプであってもよく、同じランプであってもよい。
次いで、ＣＰＵはステップ２３２５に進んで判定実行フラグＸｈａｎｔｅｉの値を「０」に設定し、ステップ２３９５に進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ２３１５の処理を行う時点において、最終減少変化率平均値ＡｖｅΔＡＦｍがリッチずれ判定閾値Ａｍｔｈ未満であると、ＣＰＵはそのステップ２３１５にて「Ｎｏ」と判定し、ステップ２３３０にてリッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定する。次に、ＣＰＵはステップ２３３５にてリーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定し、ステップ２３２５を経由してステップ２３９５に進む。なお、リッチずれインバランス発生フラグＸＩＮＢＲの値が「２」であることは、インバランス判定の結果、リッチずれ空燃比気筒間インバランス状態は発生していないことを示す。同様に、リーンずれインバランス発生フラグＸＩＮＢＬの値が「２」であることは、インバランス判定の結果、リーンずれ空燃比気筒間インバランス状態は発生していないことを示す。また、ステップ２３３０及びステップ２３３５は省略されてもよい。
更に、ＣＰＵがステップ２３１０の処理を行う時点において、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐよりも小さいと、ＣＰＵはそのステップ２３１０にて「Ｎｏ」と判定してステップ２３４０に進む。そして、ＣＰＵはステップ２３４０にて最終増大変化率平均値ＡｖｅΔＡＦｐがリーンずれ判定閾値Ａｐｔｈ以上であるか否かを判定する。リーンずれ判定閾値Ａｐｔｈは「増大変化率閾値」とも称呼される。
このとき、最終増大変化率平均値ＡｖｅΔＡＦｐがリーンずれ判定閾値Ａｐｔｈ以上であれば、ＣＰＵはステップ２３４０にて「Ｙｅｓ」と判定してステップ２３４５に進み、リーンずれインバランス発生フラグＸＩＮＢＬの値を「１」に設定する。即ち、ＣＰＵは「リーンずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。この場合、点灯される警告ランプは、リッチずれインバランス状態が発生していると判定された際に点灯されるランプと異なるランプであってもよく、同じランプであってもよい。
次いで、ＣＰＵはステップ２３２５に進んで判定実行フラグＸｈａｎｔｅｉの値を「０」に設定し、ステップ２３９５に進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ２３４０の処理を行う時点において、最終増大変化率平均値ＡｖｅΔＡＦｐがリーンずれ判定閾値Ａｐｔｈ未満であると、ＣＰＵはそのステップ２３４０にて「Ｎｏ」と判定し、ステップ２３３０にてリッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定する。次に、ＣＰＵはステップ２３３５にてリーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定し、ステップ２３２５を経由してステップ２３９５に進む。第４判定装置は以上のようにして空燃比気筒間インバランス判定を実施する。
更に、図２３に示したステップ２３２０において、ＣＰＵは更にリーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定してもよい。同様に、ステップ２３４５において、ＣＰＵは更にリッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定してもよい。
以上、説明したように、第４判定装置は、最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍを空燃比変化率指示量として取得する。そして、第４判定装置は、「最終増大変化率平均値ＡｖｅΔＡＦｐ（の大きさ）」と「インバランス判定用閾値としてのリーンずれ判定閾値Ａｐｔｈ（増大変化率閾値）」を比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態（リーンずれ空燃比気筒間インバランス状態）が発生しているか否かを判定するように構成されたインバランス判定手段を備える。更に、そのインバランス判定手段は、「最終減少変化率平均値ＡｖｅΔＡＦｍ（の大きさ）」と「インバランス判定用閾値としてのリッチずれ判定閾値Ａｍｔｈ（減少変化率閾値）」を比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態（リッチずれ空燃比気筒間インバランス状態）が発生しているが否かを判定するように構成されている。
従って、第４判定装置は、第１判定装置と同様、「精度の良い空燃比気筒間インバランス判定を実行することができ、且つ、より少ない開発工数にて開発可能である。」との効果を有する。
更に、第４判定装置のインバランス判定手段は、
（１）前記空燃比変化率指示量（インバランス判定に使用されるパラメータ）を、「検出空燃比変化率ΔＡＦが正である場合の増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）」と「検出空燃比変化率ΔＡＦが負である場合の減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）」とに区別して取得し（図２２のステップ２２１８乃至ステップ２２２８、及び、ステップ２２３０乃至ステップ２２５４を参照。）、
（２）増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）の大きさが減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）の大きさよりも大きい場合、「前記増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）の大きさ」と「前記インバランス判定用閾値としての増大変化率閾値（リーンずれ判定閾値Ａｐｔｈ）」とを比較するとともに、前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きいとき、一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態（リーンずれ空燃比気筒間インバランス状態）が発生したと判定し（図２３のステップ２３１０及びステップ２３４０を参照。）、
（３）減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）の大きさが増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）の大きさよりも大きい場合、「前記減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）の大きさ」と「前記インバランス判定用閾値としての減少変化率閾値（リッチずれ判定閾値Ａｍｔｈ）」とを比較するとともに、前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きいとき、一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態（リッチずれ空燃比気筒間インバランス状態）が発生したと判定する（図２３のステップ２３１０及びステップ２３１５を参照。）、
ように構成されている。
これによれば、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、それらの双方の何れもが発生していない
のか、を区別して判定することができる。
更に、第４判定装置のインバランス判定手段は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の検出空燃比変化率のうちの正の値を有する変化率の平均値を増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）として取得するとともに、同複数の検出空燃比変化率のうちの負の値を有する変化率の平均値を前記減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）として取得するように構成されている（図２２のルーチンを参照。）。
これにより、第４判定装置は、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズの空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）への影響を低減することができるので、より精度のよい空燃比気筒間インバランス判定を実施することができる。
＜第５実施形態＞
次に、本発明の第５実施形態に係る内燃機関の制御装置（以下、単に「第５判定装置」と称呼する。）について説明する。
第５判定装置は、第４判定装置と同様に、最終減少変化率平均値ＡｖｅΔＡＦｍ及び最終減少変化率平均値ＡｖｅΔＡＦｍを取得する。但し、第５判定装置は、最終減少変化率平均値ＡｖｅΔＡＦｍが減少変化率閾値Ａｍｔｈ以上であり、且つ、最終増大変化率平均値ＡｖｅΔＡＦｐが増大変化率閾値Ａｐｔｈ以上である場合に空燃比気筒間インバランス状態が発生したと判定する。
更に、第５判定装置は、空燃比気筒間インバランス状態が発生したと判定したとき、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐよりも大きければリッチずれ空燃比気筒間インバランス状態が発生していると判定し、最終増大変化率平均値ＡｖｅΔＡＦｐが最終減少変化率平均値ＡｖｅΔＡＦｍよりも大きければリーンずれ空燃比気筒間インバランス状態が発生していると判定する。
以下、この特徴について詳しく説明する。
第５判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２３に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２３に示したルーチンに代わる図２４にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。
従って、ＣＰＵは第４判定装置のＣＰＵと同様、最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍを取得し、それらの取得が完了すると判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する（図２２に示したルーチンを参照。）。
一方、ＣＰＵは、所定のタイミングにて図２４に示したルーチンのステップ２４００から処理を開始してステップ２４０５に進み、判定実行フラグＸｈａｎｔｅｉの値が「１」であるか否かを判定する。従って、判定実行フラグＸｈａｎｔｅｉの値が「１」に変更されると、ＣＰＵはステップ２４０５にて「Ｙｅｓ」と判定してステップ２４１０に進み、最終減少変化率平均値ＡｖｅΔＡＦｍが減少変化率閾値Ａｍｔｈ以上であるか否かを判定する。
このとき、最終減少変化率平均値ＡｖｅΔＡＦｍが減少変化率閾値Ａｍｔｈ未満であると、ＣＰＵはステップ２４１０にて「Ｎｏ」と判定し、以下に述べるステップ２４１５及びステップ２４２５の処理を順に行い、ステップ２４９５に進んで本ルーチンを一旦終了する。
ステップ２４１５：ＣＰＵは、リッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定する。即ち、ＣＰＵはリッチずれ空燃比気筒間インバランス状態が発生していないと判定する。
ステップ２４２０：ＣＰＵは、リーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定する。即ち、ＣＰＵはリーンずれ空燃比気筒間インバランス状態が発生していないと判定する。
ステップ２４２５：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「０」に設定する。
また、ＣＰＵがステップ２４１０の処理を行う時点において、最終減少変化率平均値ＡｖｅΔＡＦｍが減少変化率閾値Ａｍｔｈ以上であると、ＣＰＵはそのステップ２４１０にて「Ｙｅｓ」と判定してステップ２４３０に進み、最終増大変化率平均値ＡｖｅΔＡＦｐが増大変化率閾値Ａｐｔｈ以上であるか否かを判定する。
このとき、最終増大変化率平均値ＡｖｅΔＡＦｐが増大変化率閾値Ａｐｔｈ未満であると、ＣＰＵはステップ２４３０にて「Ｎｏ」と判定し、上述したステップ２４１５乃至ステップ２４２５の処理を順に行い、ステップ２４９５に進んで本ルーチンを一旦終了する。
これに対し、ＣＰＵがステップ２４３０の処理を行う時点において、最終増大変化率平均値ＡｖｅΔＡＦｐが増大変化率閾値Ａｐｔｈ以上であると、ＣＰＵはそのステップ２４３０にて「Ｙｅｓ」と判定してステップ２４３５に進み、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐ以上であるか否かを判定する。
そして、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐ以上であるとき、ＣＰＵはステップ２４３５にて「Ｙｅｓ」と判定してステップ２４４０に進み、リッチずれインバランス発生フラグＸＩＮＢＲの値を「１」に設定する。即ち、ＣＰＵは「リッチずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。この場合、点灯される警告ランプは、後述するリーンずれインバランス状態が発生していると判定された際に点灯されるランプと異なるランプであってもよく、同じランプであってもよい。その後、ＣＰＵはステップ２４２５を経由してステップ２４９５に進み、本ルーチンを一旦終了する。
また、ＣＰＵがステップ２４３５の処理を行う時点において、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐ未満であると、ＣＰＵはステップ２４３５にて「Ｎｏ」と判定してステップ２４４５に進み、リーンずれインバランス発生フラグＸＩＮＢＬの値を「１」に設定する。即ち、ＣＰＵは「リーンずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。この場合、点灯される警告ランプは、前述したリッチずれインバランス状態が発生していると判定された際に点灯されるランプと異なるランプであってもよく、同じランプであってもよい。その後、ＣＰＵはステップ２４２５を経由してステップ２４９５に進み、本ルーチンを一旦終了する。
なお、ＣＰＵがステップ２４０５の処理を行う時点において、判定実行フラグＸｈａｎｔｅｉの値が「０」であれば、ＣＰＵはそのステップ２４０５にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
また、ＣＰＵは、ステップ２４４０において、更にリーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定してもよい。同様に、ＣＰＵは、ステップ２４４５において、更にリッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定してもよい。更に、第５判定装置は、ステップ２４３５乃至ステップ２４４５を省略し、ステップ２４３０にて「Ｙｅｓ」と判定した際に「インバランス発生フラグＸＩＮＢの値を「１」に設定するステップ」を有するルーチンを実行してもよい。加えて、この場合、ステップ２４１５及びステップ２４２０に代え、「インバランス発生フラグＸＩＮＢの値を「２」に設定するステップ」を、ステップ２４１５の位置に設定してもよい。
以上、説明したように、第５判定装置は、第４判定装置と同様、最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍを空燃比変化率指示量として取得する。そして、第５判定装置は、それらを用いて空燃比気筒間インバランス判定を行うインバランス判定手段を備える。
従って、第５判定装置は、第１判定装置と同様、「精度の良い空燃比気筒間インバランス判定を実行することができ、且つ、より少ない開発工数にて開発可能である。」との効果を有する。
更に、第５判定装置のインバランス判定手段は、
（１）前記空燃比変化率指示量（インバランス判定に使用されるパラメータ）を、検出空燃比変化率ΔＡＦが正である場合の増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）」と「検出空燃比変化率ΔＡＦが負である場合の減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）」とに区別して取得し（図２２のステップ２２１８乃至２２２８、及び、ステップ２２３０乃至２２５４を参照。）、
（２）「増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）の大きさ」と「インバランス判定用閾値としての増大変化率閾値Ａｐｔｈ」とを比較するとともに、「前記減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）の大きさ」と「インバランス判定用閾値としての減少変化率閾値Ａｍｔｈ」とを比較し、
（３）増大変化率指示量の大きさが増大変化率閾値よりも大きく（ＡｖｅΔＡＦｐ≧Ａｐｔｈ）、且つ、減少変化率指示量の大きさが減少変化率閾値の大きさよりも大きい（ＡｖｅΔＡＦｍ≧Ａｍｔｈ）場合、空燃比気筒間インバランス状態が発生していると判定する、ように構成されている（図２４のステップ２４１０及びステップ２４３０を参照。）。
これよれば、増大変化率閾値Ａｐｔｈと減少変化率閾値Ａｍｔｈとを異なる値に設定することができるので、より一層精度良く空燃比気筒間インバランス判定を実行することができる。例えば、リッチずれ空燃比気筒間インバランス状態が発生したか否かをより精度良く検出したい場合には減少変化率閾値Ａｍｔｈを増大変化率閾値Ａｐｔｈよりも大きく設定すればよく、リーンずれ空燃比気筒間インバランス状態が発生したか否かをより精度良く検出したい場合には増大変化率閾値Ａｐｔｈを減少変化率閾値Ａｍｔｈよりも大きく設定すればよい。勿論、増大変化率閾値Ａｐｔｈと減少変化率閾値Ａｍｔｈとは同じ値に設定されてもよく、検出したい空燃比気筒間インバランス（リーンずれ空燃比気筒間インバランス又はリッチずれ空燃比気筒間インバランス）に応じて、増大変化率閾値Ａｐｔｈと減少変化率閾値Ａｍｔｈの値を変更してもよい。
加えて、第５判定装置のインバランス判定手段は、
前記減少変化率指示量の大きさが減少変化率閾値の大きさよりも大きく（ステップ２４１０での「Ｙｅｓ」との判定を参照。）、且つ、増大変化率指示量の大きさが増大変化率閾値よりも大きい場合（ステップ２４３０での「Ｙｅｓ」との判定を参照。）、
前記増大変化率指示量の大きさ（最終増大変化率平均値ＡｖｅΔＡＦｐ）が前記減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）の大きさよりも大きいときには「一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態（リーンずれ空燃比気筒間インバランス状態）が発生したと判定し（ステップ２４３５及びステップ２４４５を参照。）、
前記減少変化率指示量の大きさ（最終減少変化率平均値ＡｖｅΔＡＦｍ）が前記増大変化率指示量の大きさ（最終増大変化率平均値ＡｖｅΔＡＦｐ）よりも大きいときには「一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態（リッチずれ空燃比気筒間インバランス状態）が発生したと判定する（ステップ２４３５及びステップ２４４０を参照。）。
従って、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、それらの双方の何れもが発生していないのか、を区別して判定することができる。
更に、第５判定装置のインバランス判定手段は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の検出空燃比変化率のうちの正の値を有する変化率の平均値を増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）として取得するとともに、同複数の検出空燃比変化率のうちの負の値を有する変化率の平均値を前記減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）として取得するように構成されている（図２２のルーチンを参照。）。
これにより、第５判定装置は、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズの空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）への影響を低減することができるので、より精度のよい空燃比気筒間インバランス判定を実施することができる。
＜第６実施形態＞
次に、本発明の第６実施形態に係る内燃機関の制御装置（以下、単に「第６判定装置」と称呼する。）について説明する。
第６判定装置は、第４判定装置及び第５判定装置と同様、空燃比変化率指示量を検出空燃比変化率ΔＡＦが正の場合と負の場合とに分けて取得する。但し、第６判定装置は、検出空燃比変化率ΔＡＦが正のときの検出空燃比変化率ΔＡＦの大きさの最大値（又は、複数の最大値の平均値）と、検出空燃比変化率ΔＡＦが負のときの検出空燃比変化率ΔＡＦの大きさの最大値（又は、複数の最大値の平均値）と、を取得し、それらを用いてインバランス判定を行う。
以下、この特徴について詳しく説明する。
第６判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２２に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２２に示したルーチンに代わる図２５にフローチャートにより示した「データ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。なお、第６装置のＣＰＵは、図２３に示した「空燃比気筒間インバランス判定ルーチン」を実行するが、これに代え、図２４に示した「空燃比気筒間インバランス判定ルーチン」を実行するようになっていてもよい。
所定のタイミングになると、ＣＰＵは図２５のステップ２５００から処理を開始し、ステップ２５０２乃至ステップ２５０６の処理を行う。ステップ２５０２、ステップ２５０４及びステップ２５０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ２５０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ２５０８にて「Ｎｏ」と判定し、以下に述べるステップ２５１０乃至ステップ２５１６の処理を順に行い、ステップ２５９５に進んで本ルーチンを一旦終了する。
ステップ２５１０：ＣＰＵは、検出空燃比変化率ΔＡＦ（Ｃｓｐ）の総てを「０」に設定（クリア）する。この検出空燃比変化率ΔＡＦｐ（Ｃｓｐ）は、検出空燃比変化率ΔＡＦが正である場合、後述するステップ２５２４にて、カウンタＣｓｐの値に対応して格納される検出空燃比変化率ΔＡＦの大きさ（絶対値｜ΔＡＦ｜）である。
ステップ２５１２：ＣＰＵは、検出空燃比変化率ΔＡＦｍ（Ｃｓｍ）の総てを「０」に設定（クリア）する。この検出空燃比変化率ΔＡＦ（Ｃｓｍ）は、検出空燃比変化率ΔＡＦが負である場合、後述するステップ２５２８にて、カウンタＣｓｍの値に対応して格納される検出空燃比変化率ΔＡＦの大きさ（絶対値｜ΔＡＦ｜）である。
ステップ２５１４：ＣＰＵは、カウンタＣｓｐの値を「０」に設定する。カウンタＣｓｐの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ２５１６：ＣＰＵは、カウンタＣｓｍの値を「０」に設定する。カウンタＣｓｍの値も上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ２５０８にて「Ｙｅｓ」と判定してステップ２５１８に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ２５２０に進み、検出空燃比変化率ΔＡＦが「０」以上であるか否か（０を含む正であるか、負であるか）を判定する。
このとき、検出空燃比変化率ΔＡＦが「０」以上であると（即ち、検出空燃比ａｂｙｆｓが増大していると）、ＣＰＵはステップ２５２０にて「Ｙｅｓ」と判定してステップ２５２２に進み、カウンタＣｓｐの値を「１」だけ増大する。
次に、ＣＰＵは、ステップ２５２４に進み、検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓｐ番目のデータΔＡＦｐ（Ｃｓｐ）として格納する。例えば、現時点が「判定許可フラグＸｋｙｏｋａの値が「０」から「１」へと変更になった直後であるとすると、カウンタＣｓｐの値は「１」である（ステップ２５１４及びステップ２５２２を参照。）。従って、ステップ２５１８にて今回取得された検出空燃比変化率ΔＡＦの絶対値がデータΔＡＦｐ（１）として格納される。
一方、ＣＰＵがステップ２５２０の処理を行う時点において、検出空燃比変化率ΔＡＦが「０」よりも小さいと（即ち、検出空燃比ａｂｙｆｓが減少していると）、ＣＰＵはステップ２５２０にて「Ｎｏ」と判定してステップ２５２６に進み、カウンタＣｓｍの値を「１」だけ増大する。
次に、ＣＰＵは、ステップ２５２８に進み、検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓｍ番目のデータΔＡＦｍ（Ｃｓｍ）として格納する。例えば、現時点が「判定許可フラグＸｋｙｏｋａの値が「０」から「１」へと変更になった直後であるとすると、カウンタＣｓｍの値は「１」である（ステップ２５１６及びステップ２５２６を参照。）。従って、ステップ２５１８にて今回取得された検出空燃比変化率ΔＡＦの絶対値がデータΔＡＦｍ（１）として格納される。
次に、ＣＰＵはステップ２５３０にて、絶対クランク角ＣＡが７２０°クランク角になっているか否かを判定する。このとき、絶対クランク角ＣＡが７２０°クランク角未満であると、ＣＰＵはステップ２５３０にて「Ｎｏ」と判定してステップ２５９５に直接進み、本ルーチンを一旦終了する。
このステップ２５３０は、増大変化率ΔＡＦｐの大きさの最大値ΔＡＦｐｍａｘ及び減少変化率ΔＡＦｍの大きさの最大値ΔＡＦｍｍａｘを求めるための最小単位の期間を定めるステップであり、ここでは７２０°クランク角（単位燃焼サイクル期間）がその最小期間に相当する。
一方、ＣＰＵがステップ２５３０の処理を行う時点において、絶対クランク角ＣＡが７２０°クランク角になっていると、ＣＰＵはそのステップ２５３０にて「Ｙｅｓ」と判定し、以下に述べるステップ２５３２乃至ステップ２５４８の処理を順に行い、ステップ２５５０に進む。
ステップ２５３２：ＣＰＵは、複数のデータΔＡＦｐ（Ｃｓｐ）の中から最大値を選択し、その最大値を増大側最大値ΔＡＦｐｍａｘとして格納する。即ち、ＣＰＵは複数のデータΔＡＦｐ（Ｃｓｐ）の中の最大値を増大側最大値ΔＡＦｐｍａｘとして選択する。
ステップ２５３４：ＣＰＵは、複数のデータΔＡＦｐ（Ｃｓｐ）を総て「０」に設定（クリア）する。
ステップ２５３６：ＣＰＵは、カウンタＣｓｐの値を「０」に設定（クリア）する。
ステップ２５３８：ＣＰＵは、この時点における増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘに、ステップ２５３２にて選択した今回の増大側最大値ΔＡＦｐｍａｘを加えることにより、積算値Ｓｐｍａｘを更新する。
ステップ２５４０：ＣＰＵは、複数のデータΔＡＦｍ（Ｃｓｍ）の中から最大値を選択し、その最大値を減少側最大値ΔＡＦｍｍａｘとして格納する。即ち、ＣＰＵは複数のデータΔＡＦｍ（Ｃｓｍ）の中の最大値を減少側最大値ΔＡＦｍｍａｘとして選択する。
ステップ２５４２：ＣＰＵは、複数のデータΔＡＦｍ（Ｃｓｍ）を総て「０」に設定（クリア）する。
ステップ２５４４：ＣＰＵは、カウンタＣｓｍの値を「０」に設定（クリア）する。
ステップ２５４６：ＣＰＵは、この時点における減少側最大値ΔＡＦｍｍａｘの積算値Ｓｍｍａｘに、ステップ２５４０にて選択した今回の減少側最大値ΔＡＦｍｍａｘを加えることにより、積算値Ｓｍｍａｘを更新する。
ステップ２５４８：ＣＰＵは、カウンタＣｎの値を「１」だけ増大する。カウンタＣｎの値は「積算値Ｓｐｍａｘ及び積算値Ｓｍｍａｘ」にそれぞれ積算された増大側最大値ΔＡＦｐｍａｘ及び減少側最大値ΔＡＦｍｍａｘのデータ数（個数）を表す。なお、カウンタＣｎは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、ＣＰＵはステップ２５５０に進み、カウンタＣｎの値が閾値Ｃｎｔｈ以上であるか否かを判定する。このとき、カウンタＣｎの値が閾値Ｃｎｔｈ未満であると、ＣＰＵはステップ２５５０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。なお、閾値Ｃｎｔｈは自然数であり、「２」以上であることが望ましい。
一方、ＣＰＵがステップ２５５０の処理を行う時点において、カウンタＣｎの値が閾値Ｃｎｔｈ以上であると、ＣＰＵはそのステップ２５５０にて「Ｙｅｓ」と判定して以下に述べるステップ２５５２乃至ステップ２５６０の処理を順に行い、ステップ２５９５に進んで本ルーチンを一旦終了する。
ステップ２５５２：ＣＰＵは、「増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘ」をカウンタＣｎによって除することにより、増大側最大値ΔＡＦｐｍａｘの平均値（最終増大側最大値平均値）ＡｖｅΔＡＦｐｍａｘを算出する。この最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは、最終増大変化率平均値ＡｖｅΔＡＦｐとして格納される。最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、検出空燃比変化率ΔＡＦが正であるときに得られた複数の検出空燃比変化率ΔＡＦの大きさのうちの最大値が大きくなるほど大きくなる値）であり、第６判定装置における空燃比変化率指示量である。なお、閾値Ｃｎｔｈが「１」であるとき、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは増大側最大値ΔＡＦｐｍａｘと等しい。
ステップ２５５４：ＣＰＵは、「減少側最大値ΔＡＦｍｍａｘの積算値Ｓｍｍａｘ」をカウンタＣｎによって除することにより、減少側最大値ΔＡＦｍｍａｘの平均値（最終減少側最大値平均値）ＡｖｅΔＡＦｍｍａｘを算出する。この最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは、最終減少変化率平均値ＡｖｅΔＡＦｍとして格納される。最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、検出空燃比変化率ΔＡＦが負であるときに得られた複数の検出空燃比変化率ΔＡＦの大きさのうちの最大値が大きくなるほど大きくなる値）であり、第６判定装置における空燃比変化率指示量である。なお、閾値Ｃｎｔｈが「１」であるとき、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは減少側最大値ΔＡＦｍｍａｘと等しい。
ステップ２５５６：ＣＰＵは、「増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘ」を「０」に設定（クリア）し、且つ、「減少側最大値ΔＡＦｍｍａｘの積算値Ｓｍｍａｘ」を「０」に設定（クリア）する。
ステップ２５５８：ＣＰＵは、カウンタＣｎの値を「０」に設定（クリア）する。
ステップ２５６０：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する。なお、判定実行フラグＸｈａｎｔｅｉの値は、前述した「図２３又は図２４に示したルーチン」により空燃比気筒間インバランス判定が実行された後に「０」に設定される。更に、判定実行フラグＸｈａｎｔｅｉの値は、上述したイニシャルルーチンにより「０」に設定されるようになっている。
以上の処理により、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘが最終増大変化率平均値ＡｖｅΔＡＦｐとして取得され、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘが最終減少変化率平均値ＡｖｅΔＡＦｍとして取得され、且つ、判定実行フラグＸｈａｎｔｅｉの値が「１」に設定される。従って、ＣＰＵは図２３のステップ２３０５に進んだとき、そのステップ２３０５にて「Ｙｅｓ」と判定し、ステップ２３１０以降の処理を「このように取得された最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍ」に基づいて行う。この結果、空燃比気筒間インバランス判定が実行される。
なお、上述したように、図２５のステップ２５５０における閾値Ｃｎｔｈは、「１」であってもよい。この場合、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘ（最終増大変化率平均値ＡｖｅΔＡＦｐ）は「ステップ２５３２にて取得された増大側最大値ΔＡＦｐｍａｘ」となり、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘ（最終減少変化率平均値ＡｖｅΔＡＦｍ）は「ステップ２５２８にて取得された減少側最大値ΔＡＦｍｍａｘ」となる。
また、上述したように、第６判定装置のＣＰＵは、図２３に代え、図２４に示した空燃比気筒間インバランス判定ルーチンを実行してもよい。
このように、第６判定装置は、
（１）一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力Ｖａｂｙｆｓのそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、且つ、
（２）前記サンプリング期間よりも長いデータ取得期間において取得された複数の検出空燃比変化率のうちの正の値を有する変化率（ΔＡＦｐ（Ｃｓｐ））の中からその大きさが最大である検出空燃比変化率に応じた値を前記増大変化率指示量（即ち、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘ＝最終増大変化率平均値ＡｖｅΔＡＦｐ）として取得するとともに（図２５のステップ２５２０乃至ステップ２５６０を参照。）、同複数の検出空燃比変化率のうちの負の値を有する変化率（ΔＡＦｍ（Ｃｓｍ））の中からその大きさが最大である検出空燃比変化率に応じた値を前記減少変化率指示量（即ち、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘ＝最終減少変化率平均値ＡｖｅΔＡＦｍ）として取得する、
ように構成されたインバランス判定手段を備える。
これによれば、空燃比気筒間インバランスが発生しているときに取得される「増大変化率指示量（最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘ）及び減少変化率指示量（最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘ）」の大きさが、空燃比気筒間インバランスが発生していないときに取得される「増大変化率指示量及び減少変化率指示量」の大きさのそれぞれより大きくなるように、増大変化率指示量及び減少変化率指示量を取得できる可能性が高まる。従って、精度のよい空燃比気筒間インバランス判定を実施することができる。
更に、前記データ取得期間は、「前記排気集合部に排ガスを排出する前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間」である単位燃焼サイクル期間、の自然数Ｃｎｔｈ倍の期間に定められている（図２５のステップ２５５０を参照。）。
このように、「正の値を有する複数の検出空燃比変化率の最大値を取得する期間」及び「負の値を有する複数の検出空燃比変化率の最大値を取得する期間」を「単位燃焼サイクル期間の自然数倍の期間」に設定すれば、空燃比気筒間インバランスが発生している場合の空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）は、空燃比気筒間インバランスが発生していない場合の空燃比変化率指示量よりも確実に大きい値となる。従って、本判定装置は、より精度良く空燃比気筒間インバランス判定を実行することができる。
更に、本判定装置のインバランス判定手段は、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率（ΔＡＦｐ（Ｃｓｐ））の中からその大きさが最大である検出空燃比変化率を増大変化率最大値（ΔＡＦｐｍａｘ）として選択するとともに複数の前記単位燃焼サイクル期間のそれぞれに対して選択された（複数の）前記増大変化率最大値の平均値（ＡｖｅΔＡＦｐｍａｘ）を求め、その平均値を前記増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）として取得し、且つ、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの負の値を有する変化率（ΔＡＦｍ（Ｃｓｍ））の中からその大きさが最大である検出空燃比変化率を減少変化率最大値（ΔＡＦｍｍａｘ）として選択するとともに複数の前記単位燃焼サイクル期間に対してそれぞれ選択された（複数の）前記減少変化率最大値の平均値（ＡｖｅΔＡＦｍｍａｘ）を求め、同平均値を前記減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）として取得する、
ように構成されている（図２５のルーチンを参照。）。
従って、本判定装置は、空燃比センサ出力に重畳するノイズの空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）への影響を低減することができるので、より精度のよい空燃比気筒間インバランス判定を実施することができる。
＜第７実施形態＞
次に、本発明の第７実施形態に係る内燃機関の制御装置（以下、単に「第７判定装置」と称呼する。）について説明する。
第７判定装置は、第４判定装置乃至第６判定装置と同様、空燃比変化率指示量を検出空燃比変化率ΔＡＦが正の場合と負の場合とに分けて取得する。
更に、第７判定装置は、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を「前記空燃比変化率指示量」として採用し、
前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を「前記インバランス判定用閾値」として採用する。
そして、第７判定装置は、他の判定装置と同様、空燃比変化率指示量の大きさとインバランス判定用閾値との比較に基づいて空燃比気筒間インバランス判定を実行する。
なお、第７判定装置は、
前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を「前記空燃比変化率指示量」として採用し、
前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を「前記インバランス判定用閾値」として採用してもよい。
以下、この特徴について詳しく説明する。
第７判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２３に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２３に示したルーチンに代わる図２６にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図２６に示したルーチンのステップ２６００から処理を開始してステップ２６０５に進み、判定実行フラグＸｈａｎｔｅｉの値が「１」であるか否かを判定し、判定実行フラグＸｈａｎｔｅｉの値が「１」でなければステップ２６９５に直接進んで本ルーチンを一旦終了する処理を繰り返し実行している。
従って、判定実行フラグＸｈａｎｔｅｉの値が「１」に変更されると、ＣＰＵはステップ２６０５にて「Ｙｅｓ」と判定してステップ２６１０に進み、「前記空燃比変化率指示量としての最終増大変化率平均値ＡｖｅΔＡＦｐの大きさ」と「前記インバランス判定用閾値としての最終減少変化率平均値ＡｖｅΔＡＦｍ」との差の大きさ（絶対値）が、閾値Ｓａｔｈ以上であるか否かを判定する。
ところで、図１の（Ａ）に示したように、空燃比気筒間インバランス状態が発生していなければ、検出空燃比変化率ΔＡＦは正及び負の両方の値をとるが、それらの絶対値の差は極めて小さい。そこで、最終増大変化率平均値ＡｖｅΔＡＦｐと最終減少変化率平均値ＡｖｅΔＡＦｍとの差の大きさ（絶対値）が、閾値Ｓａｔｈ未満であると、ＣＰＵはステップ２６１０にて「Ｎｏ」と判定し、以下に述べるステップ２６１５乃至ステップ２６３０の処理を順に行い、ステップ２６９５に進んで本ルーチンを一旦終了する。
ステップ２６１５：ＣＰＵは、インバランス発生フラグＸＩＮＢの値を「２」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していないと判定する。
ステップ２６２０：ＣＰＵは、リッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定する。即ち、ＣＰＵはリッチずれ空燃比気筒間インバランス状態が発生していないと判定する。
ステップ２６２５：ＣＰＵは、リーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定する。即ち、ＣＰＵはリーンずれ空燃比気筒間インバランス状態が発生していないと判定する。
ステップ２６３０：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「０」に設定する。
一方、リッチずれインバランス状態が発生していると仮定する。この場合、図１の（Ｂ）に示したように、最終増大変化率平均値ＡｖｅΔＡＦｐと最終減少変化率平均値ＡｖｅΔＡＦｍとの差の大きさ（絶対値）は比較的大きくなる。更に、最終減少変化率平均値ＡｖｅΔＡＦｍの大きさ（角度α２の大きさ）は、最終増大変化率平均値ＡｖｅΔＡＦｐの大きさ（角度α３の大きさ）よりも大きくなる。
そこで、ＣＰＵがステップ２６１０の処理を行う時点において、最終増大変化率平均値ＡｖｅΔＡＦｐと最終減少変化率平均値ＡｖｅΔＡＦｍとの差の大きさ（絶対値）が、閾値Ｓａｔｈ以上であると、ＣＰＵはそのステップ２６１０にて「Ｙｅｓ」と判定してステップ２６３５に進み、インバランス発生フラグＸＩＮＢの値を「１」に設定する。即ち、ＣＰＵは、空燃比気筒間インバランス状態が発生したと判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。
次に、ＣＰＵは、ステップ２６４０に進み、最終減少変化率平均値ＡｖｅΔＡＦｍが最終増大変化率平均値ＡｖｅΔＡＦｐ以上であるか否かを判定する。前述の仮定（リッチずれ空燃比気筒間インバランス状態が発生している）に従えば、最終減少変化率平均値ＡｖｅΔＡＦｍは最終増大変化率平均値ＡｖｅΔＡＦｐよりも大きくなる。従って、ＣＰＵはステップ２６４０にて「Ｙｅｓ」と判定してステップ２６４５に進み、リッチずれインバランス発生フラグＸＩＮＢＲの値を「１」に設定する。即ち、ＣＰＵは「リッチずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しないリッチずれ用の警告ランプを点灯してもよい。加えて、ＣＰＵは、リーンずれインバランス発生フラグＸＩＮＢＬの値を「２」に設定してもよい。
その後、ＣＰＵはステップ２６３０にて判定実行フラグＸｈａｎｔｅｉの値を「０」に設定し、ステップ２６９５に進んで本ルーチンを一旦終了する。
他方、リーンずれインバランス状態が発生していると仮定する。この場合、図１の（Ｃ）に示したように、最終増大変化率平均値ＡｖｅΔＡＦｐと最終減少変化率平均値ＡｖｅΔＡＦｍとの差の大きさ（絶対値）は比較的大きくなる。更に、最終増大変化率平均値ＡｖｅΔＡＦｐの大きさ（角度α４の大きさ）は、最終減少変化率平均値ＡｖｅΔＡＦｍの大きさ（角度α５の大きさ）よりも大きくなる。
この場合、最終増大変化率平均値ＡｖｅΔＡＦｐと最終減少変化率平均値ＡｖｅΔＡＦｍとの差の大きさ（絶対値）は閾値Ｓａｔｈ以上となるので、ＣＰＵがステップ２６１０に進んだとき、ＣＰＵはそのステップ２６１０にて「Ｙｅｓ」と判定してステップ２６３５に進み、インバランス発生フラグＸＩＮＢの値を「１」に設定する。
更に、この場合、最終減少変化率平均値ＡｖｅΔＡＦｍは最終増大変化率平均値ＡｖｅΔＡＦｐよりも小さくなる。従って、ＣＰＵはステップ２６４０にて「Ｎｏ」と判定してステップ２６５０に進み、リーンずれインバランス発生フラグＸＩＮＢＬの値を「１」に設定する。即ち、ＣＰＵは「リーンずれ空燃比気筒間インバランス状態」が発生していると判定する。更に、このとき、ＣＰＵは図示しないリーンずれ用の警告ランプを点灯してもよい。加えて、ＣＰＵは、リッチずれインバランス発生フラグＸＩＮＢＲの値を「２」に設定してもよい。
その後、ＣＰＵはステップ２６３０にて判定実行フラグＸｈａｎｔｅｉの値を「０」に設定し、ステップ２６９５に進んで本ルーチンを一旦終了する。
以上、説明したように、第７判定装置は、空燃比変化率指示量を検出空燃比変化率ΔＡＦが正の場合と負の場合とに分けて取得する。即ち、第７判定装置は、最終減少変化率平均値ＡｖｅΔＡＦｍ及び最終増大変化率平均値ＡｖｅΔＡＦｐを取得する。
更に、第７判定装置は、検出空燃比変化率ΔＡＦが正である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）に対応した値である増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）を「空燃比変化率指示量」として採用し、
検出空燃比変化率ΔＡＦが負である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）に対応した値である減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）を「インバランス判定用閾値」として採用する、インバランス判定手段を備える。
そして、第７判定装置のインバランス判定手段は、他の判定装置と同様、空燃比変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）の大きさとインバランス判定用閾値（最終減少変化率平均値ＡｖｅΔＡＦｍ）との比較に基づいて空燃比気筒間インバランス判定を実行する（図２６のステップ２６１０を参照。）。
なお、第７判定装置のインバランス判定手段は、
検出空燃比変化率ΔＡＦが負である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）に対応した値である減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）を前記空燃比変化率指示量として採用し、
検出空燃比変化率ΔＡＦが正である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）に対応した値である増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）を前記インバランス判定用閾値として採用してもよい。
前述したように、リッチずれインバランス状態が発生した場合、及び、リーンずれインバランス状態が発生した場合、の何れの場合であっても、上記のように取得される増大変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ）と減少変化率指示量（最終減少変化率平均値ＡｖｅΔＡＦｍ）との差の大きさ（即ち、空燃比変化率指示量の大きさとインバランス判定用閾値との差の大きさ）は、空燃比気筒間インバランス状態が発生していない場合よりも顕著に大きくなる。
一方、蒸発燃料ガスの燃焼室への導入、ＥＧＲガスの燃焼室への導入、及び、ブローバイガスの燃焼室への導入等に起因して空燃比センサ出力Ｖａｂｙｆｓにノイズ（外乱）が重畳する場合がある。このような場合、そのノイズは検出空燃比変化率が正の場合と負の場合とで互いに均等に重畳する。従って、前記増大変化率指示量と前記減少変化率指示量との差の大きさ（差の絶対値）は、そのノイズの影響が排除された値になる。
従って、第７判定装置は、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズの影響を小さくした上で空燃比気筒間インバランス判定を実行することができる。
更に、第７判定装置のＣＰＵは、図２２に示したルーチンに代え、図２５に示したルーチンを実行してもよい。これによれば、増大側最大値ΔＡＦｐｍａｘの平均値（最終増大側最大値平均値）ＡｖｅΔＡＦｐｍａｘが「空燃比変化率指示量（又はインバランス判定用閾値）」として採用される。更に、これによれば、減少側最大値ΔＡＦｍｍａｘの平均値（最終減少側最大値平均値）ＡｖｅΔＡＦｍｍａｘが「インバランス判定用閾値（又は空燃比変化率指示量）」として採用される。
更に、第７判定装置のインバランス判定手段は、
前記増大変化率指示量と前記減少変化率指示量との差の大きさ（｜最終増大変化率平均値ＡｖｅΔＡＦｐ−最終減少変化率平均値ＡｖｅΔＡＦｍ｜）が閾値Ｓａｔｈ以上であるか否かを判定するとともに、その差の大きさが閾値Ｓａｔｈ以上であるときに空燃比気筒間インバランス状態が発生していると判定し（ステップ２６１０及びステップ２６３５）、
前記減少変化率指示量が前記増大変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定し（ステップ２６４０及びステップ２６４５）、
前記増大変化率指示量が前記減少変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定する（ステップ２６４０及びステップ２６５０）、
ように構成されている。
前述したように、特定気筒リッチずれインバランス状態が生じた場合と、特定気筒リーンずれインバランス状態が生じた場合と、において、増大変化率指示量の大きさと減少変化率指示量の大きさとの大小関係が相違する。従って、第７判定装置は、リッチずれ空燃比気筒間インバランス状態が発生したのか、リーンずれ空燃比気筒間インバランス状態が発生したのか、を区別して判定することができる。
＜第８実施形態＞
次に、本発明の第８実施形態に係る内燃機関の制御装置（以下、単に「第８判定装置」と称呼する。）について説明する。
第８判定装置は、第４判定装置乃至第７判定装置と同様、空燃比変化率指示量を、検出空燃比変化率ΔＡＦが正の場合の増大変化率指示量と、検出空燃比変化率ΔＡＦが負の場合の減少変化率指示量と、に分けて取得する。
但し、第８判定装置は、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である検出空燃比変化率ΔＡＦを用いて空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）を取得する。
そして、第８判定装置は、図２３に示したルーチンを用いて空燃比気筒間インバランス判定を実施する。但し、第８判定装置は、図２４及び図２６の何れかに示されたルーチンを用いて空燃比気筒間インバランス判定を実施してもよい。
以下、この特徴について説明する。
第８判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２２に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２２に示したルーチンに代わる図２７にフローチャートにより示した「データ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。更に、第８判定装置のＣＰＵは図２８に示した「データ処理ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図２７に示したルーチンのステップ２７００から処理を開始し、ステップ２７０２乃至ステップ２７０６の処理を行う。ステップ２７０２、ステップ２７０４及びステップ２７０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ２７０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ２７０８にて「Ｎｏ」と判定し、以下に述べるステップ２７１０乃至ステップ２７１６の処理を順に行い、ステップ２７９５に進んで本ルーチンを一旦終了する。
ステップ２７１０：ＣＰＵは、「正の検出空燃比変化率ΔＡＦである増大変化率ΔＡＦｐ」の積算値ＳΔＡＦｐ（増大変化率積算値ＳΔＡＦｐ）の値を「０」に設定（クリア）する。
ステップ２７１２：ＣＰＵは、カウンタＣｓｐの値の値を「０」に設定（クリア）する。なお、カウンタＣｓｐの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ２７１４：ＣＰＵは、「負の検出空燃比変化率ΔＡＦである減少変化率ΔＡＦｍ」の積算値ＳΔＡＦｍ（減少変化率積算値ＳΔＡＦｍ）の値を「０」に設定（クリア）する。
ステップ２７１６：ＣＰＵは、カウンタＣｓｍの値を「０」に設定（クリア）する。なお、カウンタＣｓｍの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ２７０８にて「Ｙｅｓ」と判定してステップ２７１８に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ２７２０に進み、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上であるか否かを判定する。この有効判定閾値Ｙｕｋｏｔｈは、気筒別空燃比が実質的に互いに一致している場合における検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値又は最大値に、余裕代（マージン）としての所定値δを加えた値である。従って、有効判定閾値Ｙｕｋｏｔｈは、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズと同程度となるように決定される。
このとき、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ未満であると、ＣＰＵはステップ２７２０にて「Ｎｏ」と判定し、ステップ２７９５に直接進んで本ルーチンを一旦終了する。
これに対し、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上であると、ＣＰＵはステップ２７２０にて「Ｙｅｓ」と判定してステップ２７２２に進み、検出空燃比変化率ΔＡＦが「０」以上であるか否か（０を含む正であるか、負であるか）を判定する。
このとき、検出空燃比変化率ΔＡＦが「０」以上であると（即ち、検出空燃比ａｂｙｆｓが増大していると）、ＣＰＵはステップ２７２２にて「Ｙｅｓ」と判定してステップ２７２４に進み、この時点における増大変化率積算値ＳΔＡＦｐに、ステップ２７１８にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、増大変化率積算値ＳΔＡＦｐを更新する。なお、この場合、検出空燃比変化率ΔＡＦは正の値であるので、この時点における増大変化率積算値ＳΔＡＦｐに検出空燃比変化率ΔＡＦを加えることにより増大変化率積算値ＳΔＡＦｐを更新してもよい。
次に、ＣＰＵはステップ２７２６に進み、カウンタＣｓｐの値を「１」だけ増大する。カウンタＣｓｐの値は増大変化率積算値ＳΔＡＦｐに積算された検出空燃比変化率ΔＡＦのデータ数（個数）を表す。その後、ＣＰＵはステップ２７３２に進む。
一方、ＣＰＵがステップ２７２２の処理を行う時点において、検出空燃比変化率ΔＡＦが「０」よりも小さいと（即ち、検出空燃比ａｂｙｆｓが減少していると）、ＣＰＵはステップ２７２２にて「Ｎｏ」と判定してステップ２７２８に進み、この時点における減少変化率積算値ＳΔＡＦｍに、ステップ２７１８にて取得した検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を加えることにより、減少変化率積算値ＳΔＡＦｍを更新する。
次に、ＣＰＵはステップ２７３０に進み、カウンタＣｓｍの値を「１」だけ増大する。カウンタＣｓｍの値は減少変化率積算値ＳΔＡＦｍに積算された検出空燃比変化率ΔＡＦのデータ数（個数）を表す。その後、ＣＰＵはステップ２７３２に進む。
ＣＰＵはステップ２７３２にて、前回の検出空燃比変化率ΔＡＦｏｌｄ（本ルーチンが４ｍｓ前に実行されたときにステップ２７１８にて取得されるとともに後述するステップ２７４４にて格納された検出空燃比変化率ΔＡＦ）が「０」以下であり、且つ、ステップ２７１８にて取得された今回の検出空燃比変化率ΔＡＦが「０」より大きいか否かを判定する。即ち、ＣＰＵはステップ２７３２において、検出空燃比ａｂｙｆｓの傾きが負から正へと変化したか否か（検出空燃比ａｂｙｆｓが下に凸のピークである「リッチピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以下であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より大きいと、ＣＰＵはステップ２７３２にて「Ｙｅｓ」と判定し、以下に述べるステップ２７３４乃至ステップ２７４４の処理を順に行い、ステップ２７９５に進んで本ルーチンを一旦終了する。
ステップ２７３４：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リッチピーク時刻ｔＲＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が負から正へと変化したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリング時間ｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定する。なお、ＣＰＵは、現在の時刻ｔにて検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定してもよい。
ステップ２７３６：ＣＰＵは、減少変化率積算値ＳΔＡＦｍをカウンタＣｓｍにより除することにより、減少変化率ΔＡＦｍの平均値（平均減少変化率Ａｖｅｍ）を算出する。
ステップ２７３８：ＣＰＵは、減少変化率積算値ＳΔＡＦｍ及びカウンタＣｓｍを共に「０」に設定（クリア）する。
ステップ２７４０：ＣＰＵは、平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍを更新する。より具体的には、ＣＰＵはその時点の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」に、ステップ２７３６にて新たに取得された今回の平均減少変化率Ａｖｅｍを加えることにより、今回の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」を算出する。
ステップ２７４２：ＣＰＵは、カウンタＮｍの値を「１」だけ増大する。
ステップ２７４４：ＣＰＵは、ステップ２７１８にて取得した検出空燃比変化率ΔＡＦを、前回の検出空燃比変化率ΔＡＦｏｌｄとして格納する。その後、ＣＰＵはステップ２７９５に進んで、本ルーチンを一旦終了する。
一方、ＣＰＵがステップ２７３２の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より大きいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以下であると、ＣＰＵはそのステップ２７３２にて「Ｎｏ」と判定してステップ２７４６に進む。そして、ＣＰＵはステップ２７４６にて、「前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さい」か否かを判定する。即ち、ＣＰＵはステップ２７４６において、検出空燃比ａｂｙｆｓの傾きが正から負へと変化したか否か（検出空燃比ａｂｙｆｓが上に凸のピークである「リーンピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さいと、ＣＰＵはステップ２７４６にて「Ｙｅｓ」と判定し、以下に述べるステップ２７４８乃至ステップ２７５６の処理を順に行い、ステップ２７４４を経由してステップ２７９５に進む。
ステップ２７４８：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リーンピーク時刻ｔＬＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が正から負へと変化したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリング時間ｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定する。なお、ＣＰＵは、現在の時刻ｔにて検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定してもよい。
ステップ２７５０：ＣＰＵは、増大変化率積算値ＳΔＡＦｐをカウンタＣｓｐにより除することにより、増大変化率ΔＡＦｐの平均値（平均増大変化率Ａｖｅｐ）を算出する。
ステップ２７５２：ＣＰＵは、増大変化率積算値ＳΔＡＦｐ及びカウンタＣｓｐを共に「０」に設定（クリア）する。
ステップ２７５４：ＣＰＵは、平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐを更新する。より具体的には、ＣＰＵはその時点の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」に、ステップ２７５０にて新たに取得された今回の平均増大変化率Ａｖｅｐを加えることにより、今回の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」を算出する。
ステップ２７５６：ＣＰＵは、カウンタＮｐの値を「１」だけ増大する。
他方、ＣＰＵがステップ２７４６の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より小さいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以上であると、ＣＰＵはそのステップ２７４６にて「Ｎｏ」と判定し、ステップ２７４４を経由してステップ２７９５に進む。
このように、第８判定装置のＣＰＵは、ステップ２７３２にてリッチピークを検出する。更に、ＣＰＵは、リッチピークが検出されたとき、減少変化率積算値ＳΔＡＦｍをカウンタＣｓｍにより除することにより平均減少変化率Ａｖｅｍを算出する（ステップ２７３６）とともに、減少変化率積算値ＳΔＡＦｍの値及びカウンタＣｓｍの値を共にクリア（ステップ２７３８）する。減少変化率積算値ＳΔＡＦｍは、検出空燃比変化率ΔＡＦが負である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）を積算した値である（ステップ２７３０）。カウンタＣｓｍは、その減少変化率積算値ＳΔＡＦｍに積算された検出空燃比変化率ΔＡＦのデータ数である（ステップ２７３０）。よって、平均減少変化率Ａｖｅｍは、前回のリッチピークから今回のリッチピークまでの間において負の値を有する検出空燃比変化率ΔＡＦの大きさの平均値となる。
同様に、ＣＰＵは、リーンピークが検出されたとき、増大変化率積算値ＳΔＡＦｐをカウンタＣｓｐにより除することにより平均増大変化率Ａｖｅｐを算出する（ステップ２７５０）とともに、増大変化率積算値ＳΔＡＦｐの値及びカウンタＣｓｐの値を共にクリア（ステップ２７５２）する。増大変化率積算値ＳΔＡＦｐは、検出空燃比変化率ΔＡＦが正である場合の検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）を積算した値である（ステップ２７２４）。カウンタＣｓｐは、その増大変化率積算値ＳΔＡＦｐに積算された検出空燃比変化率ΔＡＦのデータ数である（ステップ２７２６）。よって、平均増大変化率Ａｖｅｐは、前回のリーンピークから今回のリーンピークまでの間において正の値を有する検出空燃比変化率ΔＡＦの大きさの平均値となる。
更に、ＣＰＵは、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈより小さい検出空燃比変化率ΔＡＦ（無効データ）を、平均増大変化率Ａｖｅｐ及び平均減少変化率Ａｖｅｍの算出に使用しない（ステップ２７２０からステップ２７９５へと直接進む場合を参照。）。
一方、ＣＰＵは図２８にフローチャートにより示した「データ処理ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図２８のステップ２８００から処理を開始してステップ２８１０に進み、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達したか否かを判定する。なお、このステップにおいて、ＣＰＵは「判定許可フラグＸｋｙｏｋａが「１」である状態の積算クランク角が所定クランク角に到達したか否か」を判定してもよい。
このとき、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していなければ、ＣＰＵはステップ２８１０にて「Ｎｏ」と判定し、ステップ２８９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ２８１０の処理を行う時点において、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していると、ＣＰＵはそのステップ２８１０にて「Ｙｅｓ」と判定し、以下に述べるステップ２８２０乃至ステップ２８６０の処理を順に行い、ステップ２８９５に進んで本ルーチンを一旦終了する。
ステップ２８２０：ＣＰＵは、「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」をカウンタＮｐによって除することにより、平均増大変化率Ａｖｅｐの平均値（最終増大変化率平均値）ＡｖｅΔＡＦｐを算出する。この最終増大変化率平均値ＡｖｅΔＡＦｐは、検出空燃比変化率ΔＡＦが正であるときの検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）である。この最終増大変化率平均値ＡｖｅΔＡＦｐは、前述したように、空燃比変化率指示量の一つであり、「増大変化率指示量」とも称呼される。
ステップ２８３０：ＣＰＵは、「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」をカウンタＮｍによって除することにより、平均減少変化率Ａｖｅｍの平均値（最終減少変化率平均値）ＡｖｅΔＡＦｍを算出する。この最終減少変化率平均値ＡｖｅΔＡＦｍは、検出空燃比変化率ΔＡＦが負であるときの検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、ΔＡＦの大きさが大きくなるほど大きくなる値）である。この最終減少変化率平均値ＡｖｅΔＡＦｍは、前述したように、空燃比変化率指示量の一つであり、「減少変化率指示量」とも称呼される。
ステップ２８４０：ＣＰＵは、積算値ＳＡｖｅｍの値を「０」に設定（クリア）するとともに、積算値ＳＡｖｅｐの値を「０」に設定（クリア）する。
ステップ２８５０：ＣＰＵは、カウンタＮｐの値を「０」に設定（クリア）するとともに、カウンタＮｍの値を「０」に設定（クリア）する。
ステップ２８６０：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する。
この結果、判定実行フラグＸｈａｎｔｅｉの値が「１」に変更されるので、ＣＰＵは図２３に示したルーチンのステップ２３１０以降に進み、「図２８のステップ２８２０にて求めた増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）」及び「図２８のステップ２８３０にて求めた減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）」を用いた空燃比気筒間インバランス判定を実施する。
前述したように、ＣＰＵは、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈより小さい検出空燃比変化率ΔＡＦ（無効データ）を、平均増大変化率Ａｖｅｐ及び平均減少変化率Ａｖｅｍの算出に使用しない（ステップ２７２０からステップ２７９５へと直接進む場合を参照。）。従って、無効データが「増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）及び減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）の算出」に使用されない。
この結果、特別なフィルタを用いることなく、検出空燃比変化率ΔＡＦに重畳しているノイズの「増大変化率指示量及び減少変化率指示量への影響」を低減することができる。従って、空燃比気筒間インバランス判定をより精度良くことができる。
即ち、第８判定装置は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、且つ、
前記取得された検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が所定の有効判定閾値（Ｙｕｋｏｔｈ）以上であるとき、その検出空燃比変化率ΔＡＦを、前記空燃比変化率指示量を取得するためのデータとして使用するように構成され、
前記取得された検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が所定の有効判定閾値（Ｙｕｋｏｔｈ）未満であるとき、その検出空燃比変化率ΔＡＦを、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成されている。
これによれば、有効判定閾値Ｙｕｋｏｔｈ以上の大きさを有する検出空燃比変化率ΔＡＦが空燃比変化率指示量を取得するためのデータとして使用される。換言すると、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズのみに起因して（即ち、気筒別空燃比の相違に起因することなく）変動する検出空燃比変化率ΔＡＦが、空燃比気筒間インバランス判定に用いる空燃比変化率指示量の算出用データから除外される。従って、「気筒別空燃比の不均一性の程度に精度良く応じて変化する空燃比変化率指示量」を取得することができる。その結果、特別なフィルタ処理を検出空燃比変化率に対して施すことなく、空燃比気筒間インバランス判定を精度良く行うことができる。
＜第９実施形態＞
次に、本発明の第９実施形態に係る内燃機関の制御装置（以下、単に「第９判定装置」と称呼する。）について説明する。
第９判定装置は、第８判定装置と同様、空燃比変化率指示量を、検出空燃比変化率ΔＡＦが正の場合の増大変化率指示量と、検出空燃比変化率ΔＡＦが負の場合の減少変化率指示量と、に分けて取得する。
更に、第９判定装置は、第８判定装置と同様、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である検出空燃比変化率ΔＡＦを用いて空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）を取得する。
但し、第９判定装置は、前回のリッチピークから今回のリッチピークまでの間に得られた検出空燃比変化率ΔＡＦのうちの負の値を有するデータの中から、その大きさ（｜ΔＡＦ｜）が最大のデータを最大値ΔＡＦｍｍａｘとして選択し、その最大値ΔＡＦｍｍａｘを複数取得した上で更に平均化することにより最終減少変化率平均値ＡｖｅΔＡＦｍを取得する。
同様に、第９判定装置は、前回のリーンピークから今回のリーンピークまでの間に得られた検出空燃比変化率ΔＡＦのうちの正の値を有するデータの中から、その大きさ（｜ΔＡＦ｜）が最大のデータを最大値ΔＡＦｐｍａｘとして選択し、その最大値ΔＡＦｐｍａｘを複数取得した上で更に平均化することにより最終増大変化率平均値ＡｖｅΔＡＦｐを取得する。
なお、第９判定装置の空燃比気筒間インバランス判定方法は、第８判定装置の空燃比気筒間インバランス判定と同じである。即ち、第９判定装置は、図２３に示したルーチンを用いて空燃比気筒間インバランス判定を実施する。但し、第９判定装置は、図２４及び図２６の何れかに示されたルーチンを用いて空燃比気筒間インバランス判定を実施してもよい。
以下、第９判定装置の特徴について詳しく説明する。
第９判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２２に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２２に示したルーチンに代わる図２９にフローチャートにより示した「データ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。更に、第９判定装置のＣＰＵは図３０に示した「データ処理ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図２９に示したルーチンのステップ２９００から処理を開始し、ステップ２９０２乃至ステップ２９０６の処理を行う。ステップ２９０２、ステップ２９０４及びステップ２９０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ２９０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ２９０８にて「Ｎｏ」と判定し、以下に述べるステップ２９１０乃至ステップ２９１６の処理を順に行い、ステップ２９９５に進んで本ルーチンを一旦終了する。
ステップ２９１０：ＣＰＵは、検出空燃比変化率ΔＡＦ（Ｃｓｐ）の総てを「０」に設定（クリア）する。この検出空燃比変化率ΔＡＦｐ（Ｃｓｐ）は、検出空燃比変化率ΔＡＦが正である場合、後述するステップ２９２６にて、カウンタＣｓｐの値に対応して格納される検出空燃比変化率ΔＡＦの大きさ（絶対値｜ΔＡＦ｜）である。
ステップ２９１２：ＣＰＵは、検出空燃比変化率ΔＡＦｍ（Ｃｓｍ）の総てを「０」に設定（クリア）する。この検出空燃比変化率ΔＡＦ（Ｃｓｍ）は、検出空燃比変化率ΔＡＦが負である場合、後述するステップ２９３０にて、カウンタＣｓｍの値に対応して格納される検出空燃比変化率ΔＡＦの大きさ（絶対値｜ΔＡＦ｜）である。
ステップ２９１４：ＣＰＵは、カウンタＣｓｐの値の値を「０」に設定（クリア）する。なお、カウンタＣｓｐの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ステップ２９１６：ＣＰＵは、カウンタＣｓｍの値を「０」に設定（クリア）する。なお、カウンタＣｓｍの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ２９０８にて「Ｙｅｓ」と判定してステップ２９１８に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ２９２０に進み、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上であるか否かを判定する。この有効判定閾値Ｙｕｋｏｔｈは、気筒別空燃比が実質的に互いに完全一致している場合における検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値又は最大値に、余裕代（マージン）としての所定値δを加えた値である。従って、有効判定閾値Ｙｕｋｏｔｈは、空燃比センサ出力Ｖａｂｙｆｓに重畳するノイズと同程度となるように決定される。
このとき、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ未満であると、ＣＰＵはステップ２９２０にて「Ｎｏ」と判定し、ステップ２９９５に直接進んで本ルーチンを一旦終了する。
これに対し、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上であると、ＣＰＵはステップ２９２０にて「Ｙｅｓ」と判定してステップ２９２２に進み、検出空燃比変化率ΔＡＦが「０」以上であるか否か（０を含む正であるか、負であるか）を判定する。
このとき、検出空燃比変化率ΔＡＦが「０」以上であると（即ち、検出空燃比ａｂｙｆｓが増大していると）、ＣＰＵはステップ２９２２にて「Ｙｅｓ」と判定してステップ２９２４に進み、カウンタＣｓｐの値を「１」だけ増大する。
次に、ＣＰＵは、ステップ２９２６に進み、検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓｐ番目のデータΔＡＦｐ（Ｃｓｐ）として格納する。例えば、現時点が「判定許可フラグＸｋｙｏｋａの値が「０」から「１」へと変更になった直後であるとすると、カウンタＣｓｐの値は「１」である（ステップ２９１４及びステップ２９２４を参照。）。従って、ステップ２９１８にて取得された検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜がデータΔＡＦｐ（１）として格納される。その後、ＣＰＵはステップ２９３２に進む。
一方、ＣＰＵがステップ２９２２の処理を行う時点において、検出空燃比変化率ΔＡＦが「０」よりも小さいと（即ち、検出空燃比ａｂｙｆｓが減少していると）、ＣＰＵはステップ２９２２にて「Ｎｏ」と判定してステップ２９２８に進み、カウンタＣｓｍの値を「１」だけ増大する。
次に、ＣＰＵは、ステップ２９３０に進み、検出空燃比変化率ΔＡＦの絶対値（｜ΔＡＦ｜）を第Ｃｓｍ番目のデータΔＡＦｍ（Ｃｓｍ）として格納する。例えば、現時点が「判定許可フラグＸｋｙｏｋａの値が「０」から「１」へと変更になった直後であるとすると、カウンタＣｓｍの値は「１」である（ステップ２９１６及びステップ２９２８を参照。）。従って、ステップ２９１８にて取得された検出空燃比変化率ΔＡＦの絶対値｜ΔＡＦ｜がデータΔＡＦｍ（１）として格納される。その後、ＣＰＵはステップ２９３２に進む。
ＣＰＵはステップ２９３２にて、前回の検出空燃比変化率ΔＡＦｏｌｄ（本ルーチンが４ｍｓ前に実行されたときにステップ２９１８にて取得されるとともに後述するステップ２９４６にて格納された検出空燃比変化率ΔＡＦ）が「０」以下であり、且つ、ステップ２９１８にて取得された今回の検出空燃比変化率ΔＡＦが「０」より大きいか否かを判定する。即ち、ＣＰＵはステップ２９３２において、検出空燃比ａｂｙｆｓの傾きが負から正へと変化したか否か（検出空燃比ａｂｙｆｓが下に凸のピークである「リッチピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以下であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より大きいと、ＣＰＵはステップ２９３２にて「Ｙｅｓ」と判定し、以下に述べるステップ２９３４乃至ステップ２９４６の処理を順に行い、ステップ２９９５に進んで本ルーチンを一旦終了する。
ステップ２９３４：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リッチピーク時刻ｔＲＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が負から正へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定する。なお、ＣＰＵは、現在の時刻ｔを「リッチピーク時刻ｔＲＰ」として取得してもよい。
ステップ２９３６：ＣＰＵは、複数のデータΔＡＦｍ（Ｃｓｍ）の中から最大値を選択し、その最大値を減少側最大値ΔＡＦｍｍａｘとして格納する。即ち、ＣＰＵは複数のデータΔＡＦｍ（Ｃｓｍ）の中の最大値を減少側最大値ΔＡＦｍｍａｘとして選択する。
ステップ２９３８：ＣＰＵは、複数のデータΔＡＦｍ（Ｃｓｍ）を総て「０」に設定（クリア）する。
ステップ２９４０：ＣＰＵは、カウンタＣｓｍの値を「０」に設定（クリア）する。
ステップ２９４２：ＣＰＵは、この時点における減少側最大値ΔＡＦｍｍａｘの積算値Ｓｍｍａｘに、ステップ２９３６にて選択した今回の減少側最大値ΔＡＦｍｍａｘを加えることにより、積算値Ｓｍｍａｘを更新する。
ステップ２９４４：ＣＰＵは、カウンタＮｍの値を「１」だけ増大する。
ステップ２９４６：ＣＰＵは、ステップ２９１８にて取得した検出空燃比変化率ΔＡＦを、前回の検出空燃比変化率ΔＡＦｏｌｄとして格納する。
一方、ＣＰＵがステップ２９３２の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より大きいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以下であると、ＣＰＵはそのステップ２９３２にて「Ｎｏ」と判定してステップ２９４８に進む。そして、ＣＰＵはステップ２９４８にて、「前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さい」か否かを判定する。即ち、ＣＰＵはステップ２９４８において、検出空燃比ａｂｙｆｓの傾きが正から負へと変化したか否か（検出空燃比ａｂｙｆｓが上に凸のピークである「リーンピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さいと、ＣＰＵはステップ２９４８にて「Ｙｅｓ」と判定し、以下に述べるステップ２９５０乃至ステップ２９６０の処理を順に行い、ステップ２９４６を経由してステップ２９９５に進む。
ステップ２９５０：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リーンピーク時刻ｔＬＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が正から負へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定する。なお、ＣＰＵは、現在の時刻ｔを「リーンピーク時刻ｔＬＰ」として取得してもよい。
ステップ２９５２：ＣＰＵは、複数のデータΔＡＦｐ（Ｃｓｐ）の中から最大値を選択し、その最大値を増大側最大値ΔＡＦｐｍａｘとして格納する。即ち、ＣＰＵは複数のデータΔＡＦｐ（Ｃｓｐ）の中の最大値を増大側最大値ΔＡＦｐｍａｘとして選択する。
ステップ２９５４：ＣＰＵは、複数のデータΔＡＦｐ（Ｃｓｐ）を総て「０」に設定（クリア）する。
ステップ２９５６：ＣＰＵは、カウンタＣｓｐの値を「０」に設定（クリア）する。
ステップ２９５８：ＣＰＵは、この時点における増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘに、ステップ２９５２にて選択した今回の増大側最大値ΔＡＦｐｍａｘを加えることにより、積算値Ｓｐｍａｘを更新する。
ステップ２９６０：ＣＰＵは、カウンタＮｐの値を「１」だけ増大する。
このように、第９判定装置のＣＰＵは、ステップ２９３２にてリッチピークを検出する。更に、ＣＰＵは、リッチピークが検出されたとき、前回のリッチピークから今回のリッチピークまでの間において負の値を有する検出空燃比変化率ΔＡＦの中から、その大きさ（｜ΔＡＦ｜）が最大の値を選択し、その最大値を減少側最大値ΔＡＦｍｍａｘとして格納する。即ち、ＣＰＵは、前回のリッチピークから今回のリッチピークまでの間に取得された複数のデータΔＡＦｍ（Ｃｓｍ）の中の最大値を減少側最大値ΔＡＦｍｍａｘとして選択する（ステップ２９３６）。
同様に、ＣＰＵは、ステップ２９４８にてリーンピークを検出する。更に、ＣＰＵは、リーンピークが検出されたとき、前回のリーンピークから今回のリーンピークまでの間において正の値を有する検出空燃比変化率ΔＡＦの中から、その大きさ（｜ΔＡＦ｜）が最大の値を選択し、その最大値を増大側最大値ΔＡＦｐｍａｘとして格納する。即ち、ＣＰＵは、前回のリーンピークから今回のリーンピークまでの間に取得された複数のデータΔＡＦｐ（Ｃｓｐ）の中の最大値を増大側最大値ΔＡＦｐｍａｘとして選択する（ステップ２９５２）。
更に、ＣＰＵは、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈより小さい検出空燃比変化率ΔＡＦ（無効データ）を、増大側最大値ΔＡＦｐｍａｘ及び減少側最大値ΔＡＦｍｍａｘのデータとしては使用しない（ステップ２９２０からステップ２９９５へと直接進む場合を参照。）。
一方、ＣＰＵは図３０にフローチャートにより示した「データ処理ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図３０のステップ３０００から処理を開始してステップ３０１０に進み、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達したか否かを判定する。なお、このステップにおいて、ＣＰＵは「判定許可フラグＸｋｙｏｋａが「１」である状態の積算クランク角が所定クランク角に到達したか否か」を判定してもよい。
このとき、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していなければ、ＣＰＵはステップ３０１０にて「Ｎｏ」と判定し、ステップ３０９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ３０１０の処理を行う時点において、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していると、ＣＰＵはステップ３０１０にて「Ｙｅｓ」と判定し、以下に述べるステップ３０２０乃至ステップ３０６０の処理を順に行い、ステップ３０９５に進んで本ルーチンを一旦終了する。
ステップ３０２０：ＣＰＵは、「増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘ」をカウンタＮｐによって除することにより、増大側最大値ΔＡＦｐｍａｘの平均値（最終増大側最大値平均値）ＡｖｅΔＡＦｐｍａｘを算出する。この最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは、最終増大変化率平均値ＡｖｅΔＡＦｐとして格納される。最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、検出空燃比変化率ΔＡＦが正であるときに得られた複数の検出空燃比変化率ΔＡＦの大きさのうちの最大値が大きくなるほど大きくなる値）である。即ち、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘは、空燃比変化率指示量の一つであり、「増大変化率指示量」とも称呼される。
ステップ３０３０：ＣＰＵは、「減少側最大値ΔＡＦｍｍａｘの積算値Ｓｐｍａｘ」をカウンタＮｍによって除することにより、減少側最大値ΔＡＦｍｍａｘの平均値（最終減少側最大値平均値）ＡｖｅΔＡＦｍｍａｘを算出する。この最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは、最終減少変化率平均値ＡｖｅΔＡＦｍとして格納される。最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは、検出空燃比変化率ΔＡＦに応じた値（ΔＡＦに応じて変化する値、検出空燃比変化率ΔＡＦが負であるときに得られた複数の検出空燃比変化率ΔＡＦの大きさのうちの最大値が大きくなるほど大きくなる値）である。即ち、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘは、空燃比変化率指示量の一つであり、「減少変化率指示量」とも称呼される。
ステップ３０４０：ＣＰＵは、「増大側最大値ΔＡＦｐｍａｘの積算値Ｓｐｍａｘ」を「０」に設定（クリア）し、且つ、「減少側最大値ΔＡＦｍｍａｘの積算値Ｓｍｍａｘ」を「０」に設定（クリア）する。
ステップ３０５０：ＣＰＵは、カウンタＮｐの値及びカウンタＮｍの値を共に「０」に設定（クリア）する。
ステップ３０６０：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する。
この結果、判定実行フラグＸｈａｎｔｅｉの値が「１」に変更されるので、ＣＰＵは図２３に示したルーチンのステップ２３１０以降に進み、「図３０のステップ３０２０にて求めた増大変化率指示量ＡｖｅΔＡＦｐ（即ち、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘ）」及び「図３０のステップ３０３０にて求めた減少変化率指示量ＡｖｅΔＡＦｍ（即ち、最終減少側最大値平均値）ＡｖｅΔＡＦｍｍａｘ）」を用いた空燃比気筒間インバランス判定を実施する。
前述したように、ＣＰＵは、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈより小さい検出空燃比変化率ΔＡＦ（無効データ）を、最大値ΔＡＦｍｍａｘ及び最大値ΔＡＦｐｍａｘの算出に使用しない（ステップ２９２０からステップ２９９５へと直接進む場合を参照。）。従って、無効データが「増大変化率指示量ＡｖｅΔＡＦｐ（即ち、最終増大側最大値平均値ＡｖｅΔＡＦｐｍａｘ）及び減少変化率指示量ＡｖｅΔＡＦｍ（即ち、最終減少側最大値平均値ＡｖｅΔＡＦｍｍａｘ）」の算出に使用されない。
この結果、第９判定装置は、第８判定装置と同様、特別なフィルタを用いることなく、検出空燃比変化率ΔＡＦに重畳しているノイズの「増大変化率指示量及び減少変化率指示量への影響」を低減することができる。従って、空燃比気筒間インバランス判定をより精度良くことができる。
＜第１０実施形態＞
次に、本発明の第１０実施形態に係る内燃機関の制御装置（以下、単に「第１０判定装置」と称呼する。）について説明する。
第１０判定装置は、ある期間において、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ２（第２有効判定閾値）以上である有効データの数（Ｃｙｕｋｏ）と、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ２未満である無効データの数（Ｃｍｕｋｏ）と、を取得し、その有効データ数（Ｃｙｕｋｏ）と無効データ数（Ｃｍｕｋｏ）とを比較することにより空燃比気筒間インバランス判定を行う。以下、この特徴について詳しく説明する。
第１０判定装置のＣＰＵは、第１判定装置のＣＰＵが実行するルーチン（図１７に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図１７に示したルーチンに代わる図３１にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。更に、第１０判定装置のＣＰＵは図２０に示したルーチンを所定時間の経過毎に実行し、判定許可フラグＸｋｙｏｋａの値を設定している。
従って、ＣＰＵは、所定のタイミングにて図３１に示したルーチンのステップ３１００から処理を開始し、ステップ３１０２乃至ステップ３１０６の処理を行う。ステップ３１０２、ステップ３１０４及びステップ３１０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ３１０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ３１０８にて「Ｎｏ」と判定し、ステップ３１９５に進んで本ルーチンを一旦終了する。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ３１０８にて「Ｙｅｓ」と判定してステップ３１１０に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ３１１２に進み、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ２以上であるか否かを判定する。この有効判定閾値Ｙｕｋｏｔｈ２は、検出すべき空燃比気筒間インバランス状態が発生していない場合（気筒別空燃比が多少異なっていてもエミッション上問題にならない場合）における「検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値又は最大値」に「余裕代（マージン）としての所定値δ」を加えた値である。換言すると、有効判定閾値Ｙｕｋｏｔｈ２は、「検出すべき空燃比気筒間インバランス状態」が発生していない場合においては、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が超えることのない値に設定されている。
このとき、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ２以上であると、ＣＰＵはステップ３１１２にて「Ｙｅｓ」と判定してステップ３１１４に進み、有効データ数カウンタＣｙｕｋｏの値を「１」だけ増大する。有効データ数カウンタＣｙｕｋｏの値は後述するステップ３１２６にて「０」に設定（クリア）されるとともに、上述したイニシャルルーチンにおいても「０」に設定（クリア）されるようになっている。この結果、有効データ数カウンタＣｙｕｋｏは、絶対値｜ΔＡＦ｜が有効判定閾値Ｙｕｋｏｔｈ２以上である検出空燃比変化率ΔＡＦのデータ数を示す値になる。
一方、ＣＰＵがステップ３１１２の処理を行う時点において、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ２未満であると、ＣＰＵはステップ３１１２にて「Ｎｏ」と判定してステップ３１１６に進み、無効データ数カウンタＣｍｕｋｏの値を「１」だけ増大する。無効データ数カウンタＣｍｕｋｏの値は後述するステップ３１２８にて「０」に設定（クリア）されるとともに、上述したイニシャルルーチンにおいても「０」に設定（クリア）されるようになっている。この結果、無効データ数カウンタＣｍｕｋｏは、絶対値｜ΔＡＦ｜が有効判定閾値Ｙｕｋｏｔｈ２未満である検出空燃比変化率ΔＡＦのデータ数を示す値になる。
次に、ＣＰＵはステップ３１１８に進んでデータ総数カウンタＣｔｏｔａｌの値を「１」だけ増大し、ステップ３１２０に進んでデータ総数カウンタＣｔｏｔａｌの値がデータ総数閾値Ｃｔｏｔａｌｔｈ以上であるか否かを判定する。データ総数カウンタＣｔｏｔａｌの値は後述するステップ３１３０にて「０」に設定（クリア）されるとともに、上述したイニシャルルーチンにおいても「０」に設定（クリア）されるようになっている。即ち、データ総数カウンタＣｔｏｔａｌの値は、有効データ数カウンタＣｙｕｋｏの値と無効データ数カウンタＣｍｕｋｏの値との和となる。
このとき、データ総数カウンタＣｔｏｔａｌの値がデータ総数閾値Ｃｔｏｔａｌｔｈ未満であると、ＣＰＵはステップ３１２０にて「Ｎｏ」と判定し、ステップ３１９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ３１２０の処理を行う時点において、データ総数カウンタＣｔｏｔａｌの値がデータ総数閾値Ｃｔｏｔａｌｔｈ以上であると、ＣＰＵはステップ３１２０にて「Ｙｅｓ」と判定してステップ３１２２に進み、有効データ数カウンタＣｙｕｋｏの値が無効データ数カウンタＣｍｕｋｏの値よりも大きいか否かを判定する。
そして、ＣＰＵは、有効データ数カウンタＣｙｕｋｏの値が無効データ数カウンタＣｍｕｋｏの値よりも大きいとき、ステップ３１２４に進んで、インバランス発生フラグＸＩＮＢの値を「１」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、ＣＰＵは図示しない警告ランプを点灯してもよい。その後、ＣＰＵはステップ３１２６以降に進む。
また、有効データ数カウンタＣｙｕｋｏの値が無効データ数カウンタＣｍｕｋｏの値よりも小さいと、ＣＰＵはステップ３１２２にて「Ｎｏ」と判定してステップ３１２４に進み、インバランス発生フラグＸＩＮＢの値を「２」に設定する。即ち、ＣＰＵは空燃比気筒間インバランス状態が発生していないと判定する。その後、ＣＰＵはステップ３１２６以降に進む。なお、ＣＰＵは、ステップ３１２２にて「Ｎｏ」と判定した場合、ステップ３１３２の処理を行うことなく、ステップ３１２６に直接進んでもよい。
次に、ＣＰＵは、以下に述べるステップ３１２６乃至ステップ３１３０の処理を順に行い、ステップ３１９５に進んで本ルーチンを一旦終了する。
ステップ３１２６：ＣＰＵは、有効データ数カウンタＣｙｕｋｏの値を「０」に設定（クリア）する。
ステップ３１２８：ＣＰＵは、無効データ数カウンタＣｍｕｋｏの値を「０」に設定（クリア）する
ステップ３１３０：ＣＰＵは、データ総数カウンタＣｔｏｔａｌの値を「０」に設定（クリア）する。
以上、説明したように、第１０判定装置は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、
且つ、
前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが所定の有効判定閾値Ｙｕｋｏｔｈ２以上である検出空燃比変化率のデータの数を表す有効データ数Ｃｙｕｋｏを前記空燃比変化率指示量の一つとして取得するとともに、同データ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが同有効判定閾値未満である検出空燃比変化率のデータの数を表す無効データ数Ｃｍｕｋｏを前記空燃比変化率指示量の他の一つとして取得し（ステップ３１１２乃至ステップ３１１６）、
前記有効データ数Ｃｙｕｋｏと前記無効データ数Ｃｍｕｋｏとに基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成されている（ステップ３１２２乃至ステップ３１３２）。
空燃比気筒間インバランス状態が発生すると（即ち、気筒間における空燃比の不均一性が検出すべき程度以上に過大になると）、検出空燃比変化率ΔＡＦの大きさ｜ΔＡＦ｜が大きくなる。従って、空燃比気筒間インバランス状態が発生すると、有効データ数Ｃｙｕｋｏは相対的に増加し、無効データ数Ｃｍｕｋｏは相対的に減少する。従って、本判定装置によれば、有効データ数Ｃｙｕｋｏと無効データ数Ｃｍｕｋｏとを比較するという簡単な判定により、空燃比気筒間インバランス判定を行うことができる。
なお、第１０判定装置のＣＰＵは、ステップ３１２０において、判定許可フラグＸｋｙｏｋａの値が「１」に設定されている期間のクランク角の積算値が７２０°クランク角の自然数倍に一致したか否かを判定し、７２０°クランク角の自然数倍に一致した場合にステップ３１２２以降に進むように構成されてもよい。即ち、ＣＰＵは、単位燃焼サイクル期間又は単位燃焼サイクル期間の自然数倍の期間における、有効データ数と無効データ数とを比較してインバランス判定を実行してもよい。
更に、第１０判定装置のＣＰＵは、ステップ３１２２において、「有効データ数Ｃｙｕｋｏと無効データ数Ｃｍｕｋｏとの和である全データ数（即ち、データ総数カウンタＣｔｏｔａｌの値）」に基づいて変化するデータ数閾値Ｃｄａｔａｔｈを決定し、有効データ数Ｃｙｕｋｏがデータ数閾値Ｃｄａｔａｔｈ以上であるときとき、前記空燃比気筒間インバランス状態が発生していると判定するように構成されてもよい。このデータ数閾値Ｃｄａｔａｔｈは、例えば、全データ数の所定割合（＝ｋｄ・Ｃｔｏｔａｌ、ｋｄは０〜１の値）に設定することができる。これによっても、空燃比気筒間インバランス判定を簡易な構成によって行うことができる。
＜第１１実施形態＞
次に、本発明の第１１実施形態に係る内燃機関の制御装置（以下、単に「第１１判定装置」と称呼する。）について説明する。
第１１判定装置は、第８判定装置と同様にリッチピーク及びリーンピークを検出する。但し、第１１判定装置は、リッチピーク及びリーンピークが得られた時点の近傍の検出空燃比変化率ΔＡＦを空燃比変化率指示量のデータとしては用いない（破棄する）点においてのみ第８判定装置と相違している。
より具体的に述べると、第１１判定装置は、リッチピーク又はリーンピークの検出に用いられた「前回の検出空燃比変化率ΔＡＦｏｌｄ及び今回の検出空燃比変化率ΔＡＦ」を空燃比変化率指示量のデータとして採用しない。即ち、検出空燃比ａｂｙｆｓの極大値又は極小値の前後の検出空燃比変化率ΔＡＦは「空燃比気筒間インバランスの判定を行うための空燃比変化率指示量」の計算に用いられない。
図３２は、リッチピーク近傍の検出空燃比ａｂｙｆｓの変化の様子を示すタイムチャートである。図３２から明らかなように、リッチピーク近傍における検出空燃比ａｂｙｆｓは変化が緩慢であるので、空燃比変化率指示量を算出するためのデータとしては適切ではない。同様に、図３３は、リーンピーク近傍の検出空燃比ａｂｙｆｓの変化の様子を示すタイムチャートである。図３３から明らかなように、リーンピーク近傍における検出空燃比ａｂｙｆｓは変化が緩慢であるので、空燃比変化率指示量を算出するためのデータとしては適切ではない。
そこで、第１１判定装置は、空燃比変化率指示量である最終減少変化率平均値ＡｖｅΔＡＦｍを算出する基礎となる平均減少変化率Ａｖｅｍの算出に、「最新のリッチピークを検出したときの検出空燃比変化率ΔＡＦ、及び、その最新のリッチピークの直前のリーンピークを検出したときの検出空燃比変化率ΔＡＦ」を用いない。
同様に、第１１判定装置は、空燃比変化率指示量である最終増大変化率平均値ＡｖｅΔＡＦｐを算出する基礎となる平均増大変化率Ａｖｅｐの算出に、「最新のリーンピークを検出したときの検出空燃比変化率ΔＡＦ、及び、その最新のリーンピークの直前のリッチピークを検出したときの検出空燃比変化率ΔＡＦ」を用いない。
以下、第１１判定装置の実際の作動について説明する。
第１１判定装置のＣＰＵは、第４判定装置のＣＰＵが実行するルーチン（図２２に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２２に示したルーチンに代わる図３４にフローチャートにより示した「データ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。更に、第１１判定装置のＣＰＵは図２８に示した「データ処理ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図３４に示したルーチンのステップ３４００から処理を開始し、ステップ３４０２乃至ステップ３４０６の処理を行う。ステップ３４０２、ステップ３４０４及びステップ３４０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ３４０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ３４０８にて「Ｎｏ」と判定し、ステップ３４１０乃至ステップ３４１６の処理を順に行う。ステップ３４１０乃至ステップ３４１６は、図２７のステップ２７１０乃至ステップ２７１６とそれぞれ同一である。従って、増大変化率積算値ＳΔＡＦｐの値、カウンタＣｓｐの値、減少変化率積算値ＳΔＡＦｍの値及びカウンタＣｓｍの値の各値が「０」に設定（クリア）される。その後、ＣＰＵはステップ３４９５に進み、本ルーチンを一旦終了する。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ３４０８にて「Ｙｅｓ」と判定してステップ３４１８に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ３４２０乃至ステップ３４３０のうちの適当なステップに進む。ステップ３４２０乃至ステップ３４３０は、図２７のステップ２７２０乃至ステップ２７３０とそれぞれ同じステップである。
この結果、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である場合に検出空燃比変化率ΔＡＦが「０」以上であると、増大変化率積算値ＳΔＡＦｐが更新され、且つ、カウンタＣｓｐの値が「１」だけ増大させられる。更に、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である場合に検出空燃比変化率ΔＡＦが「０」未満であると、減少変化率積算値ＳΔＡＦｍが更新され、且つ、カウンタＣｓｍの値が「１」だけ増大させられる。
その後、ＣＰＵは「図２７のステップ２７３２と同じステップであるステップ３４３２」に進み、リッチピークが到来したか否かを判定する。このとき、リッチピークが到来していると、ＣＰＵは以下に述べるステップ３４３４乃至ステップ３４４６の処理を順に行い、ステップ３４９５に進んで本ルーチンを一旦終了する。
ステップ３４３４：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リッチピーク時刻ｔＲＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が負から正へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定する。
ステップ３４３６：ＣＰＵは、減少変化率積算値ＳΔＡＦｍから、今回のリッチピーク検出直前の検出空燃比変化率ΔＡＦ（即ち、現時点における前回検出空燃比変化率ΔＡＦｏｌｄ）の絶対値と、今回のリッチピークの直前に検出されたリーンピーク時の検出空燃比変化率ΔＡＦの絶対値と、を減じた値を、新たな減少変化率積算値ＳΔＡＦｍとして取得する。
即ち、ＣＰＵは、今回検出されたリッチピークとそのリッチピークの直前に検出されていたリーンピークとの間の期間に検出された検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の積算値ＳΔＡＦｍから、その期間の両端の検出空燃比変化率ΔＡＦの大きさを減じる。これにより、減少変化率積算値ＳΔＡＦｍから、今回のリッチピーク検出に用いられた検出空燃比変化率ΔＡＦと、直前のリーンピーク検出に用いられた検出空燃比変化率ΔＡＦと、の二つのデータが減じられる。
ステップ３４３８：ＣＰＵは、減少変化率積算値ＳΔＡＦｍを「カウンタＣｓｍから２を減じた値（Ｃｓｍ−２）」により除することにより、減少変化率ΔＡＦｍの平均値（平均減少変化率Ａｖｅｍ）を算出する。カウンタＣｓｍから２を減じるのは、減少変化率積算値ＳΔＡＦｍは、「Ｃｓｍ−２」個分の負の値を有する検出空燃比変化率ΔＡＦの絶対値の積算値だからである。
ステップ３４４０：ＣＰＵは、減少変化率積算値ＳΔＡＦｍ及びカウンタＣｓｍを共に「０」に設定（クリア）する。
ステップ３４４２：ＣＰＵは、平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍを更新する。より具体的には、ＣＰＵはその時点の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」に、ステップ３４３８にて新たに取得された今回の平均減少変化率Ａｖｅｍを加えることにより、今回の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」を算出する。
ステップ３４４４：ＣＰＵは、カウンタＮｍの値を「１」だけ増大する。
ステップ３４４６：ＣＰＵは、ステップ３４１８にて取得した検出空燃比変化率ΔＡＦを、前回の検出空燃比変化率ΔＡＦｏｌｄとして格納する。その後、ＣＰＵはステップ３４９５に進んで、本ルーチンを一旦終了する。
一方、ＣＰＵがステップ３４３２の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より大きいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以下であると、ＣＰＵはそのステップ３４３２にて「Ｎｏ」と判定してステップ３４４８に進む。そして、ＣＰＵはステップ３４４８にて、「前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さい」か否かを判定する。即ち、ＣＰＵはステップ３４４８において、検出空燃比ａｂｙｆｓの傾きが正から負へと変化したか否か（検出空燃比ａｂｙｆｓが上に凸のピークである「リーンピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さいと、ＣＰＵはステップ３４４８にて「Ｙｅｓ」と判定し、以下に述べるステップ３４５０乃至ステップ３４６０の処理を順に行い、ステップ３４４６を経由してステップ３４９５に進む。
ステップ３４５０：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リーンピーク時刻ｔＬＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が正から負へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定する。
ステップ３４５２：ＣＰＵは、増大変化率積算値ＳΔＡＦｐから、今回のリーンピーク検出直前の検出空燃比変化率ΔＡＦ（即ち、現時点における前回検出空燃比変化率ΔＡＦｏｌｄ）の絶対値と、今回のリーンピークの直前に検出されたリッチピーク時の検出空燃比変化率ΔＡＦの絶対値と、を減じた値を、新たな増大変化率積算値ＳΔＡＦｐとして取得する。
即ち、ＣＰＵは、今回検出されたリーンピークとそのリーンピークの直前に検出されていたリッチピークとの間の期間に検出された検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の積算値ＳΔＡＦｐから、その期間の両端の検出空燃比変化率ΔＡＦの大きさを減じる。これにより、増大変化率積算値ＳΔＡＦｐから、今回のリーンピーク検出に用いられた検出空燃比変化率ΔＡＦと、直前のリッチピーク検出に用いられた検出空燃比変化率ΔＡＦと、の二つのデータが減じられる。
ステップ３４５４：ＣＰＵは、増大変化率積算値ＳΔＡＦｐを「カウンタＣｓｐから２を減じた値（Ｃｓｐ−２）」により除することにより、増大変化率ΔＡＦｐの平均値（平均増大変化率Ａｖｅｐ）を算出する。カウンタＣｓｐから２を減じるのは、増大変化率積算値ＳΔＡＦｐは、「Ｃｓｐ−２」個分の正の値を有する検出空燃比変化率ΔＡＦの絶対値の積算値だからである。
ステップ３４５６：ＣＰＵは、増大変化率積算値ＳΔＡＦｐ及びカウンタＣｓｐを共に「０」に設定（クリア）する。
ステップ３４５８：ＣＰＵは、平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐを更新する。より具体的には、ＣＰＵはその時点の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」に、ステップ３４５４にて新たに取得された今回の平均増大変化率Ａｖｅｐを加えることにより、今回の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」を算出する。
ステップ３４６０：ＣＰＵは、カウンタＮｐの値を「１」だけ増大する。
他方、ＣＰＵがステップ３４４８の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より小さいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以上であると、ＣＰＵはそのステップ３４４８にて「Ｎｏ」と判定し、ステップ３４４６を経由してステップ３４９５に進む。
このように、ＣＰＵは、リーンピーク検出に用いられた検出空燃比変化率ΔＡＦのうち負の値を有する検出空燃比変化率ΔＡＦと、リッチピーク検出に用いられた検出空燃比変化率ΔＡＦのうち負の値を有する検出空燃比変化率ΔＡＦと、を、平均減少変化率Ａｖｅｍの計算に用いない。同様に、ＣＰＵは、リーンピーク検出に用いられた検出空燃比変化率ΔＡＦのうち正の値を有する検出空燃比変化率ΔＡＦと、リッチピーク検出に用いられた検出空燃比変化率ΔＡＦのうち正の値を有する検出空燃比変化率ΔＡＦと、を、平均増大変化率Ａｖｅｐの計算に用いない。
一方、ＣＰＵは図２８にフローチャートにより示した「データ処理ルーチン」を所定時間（４ｍｓ）が経過する毎に実行するようになっている。これにより、平均増大変化率Ａｖｅｐの平均値（空燃比変化率指示量である最終増大変化率平均値）ＡｖｅΔＡＦｐ、及び、平均減少変化率Ａｖｅｍの平均値（空燃比変化率指示量である最終減少変化率平均値）ＡｖｅΔＡＦｍが算出される。更に、判定実行フラグＸｈａｎｔｅｉの値がステップ２８６０にて「１」に設定されるので、図２３（又は、図２４、図２６）に示したルーチンにより空燃比気筒間インバランス判定が実行される。
なお、第１１判定装置は、リッチピークの検出時に用いられた二つのデータのうちの古いほう（例えば、図３４のステップ３４３２における前回の検出空燃比変化率ΔＡＦｏｌｄ）を空燃比変化率指示量の計算に用いないように構成されてもよい。同様に、第１１判定装置は、リーンピークの検出時に用いられた二つのデータのうちの古いほう（例えば、図３４のステップ３４４８における前回の検出空燃比変化率ΔＡＦｏｌｄ）を空燃比変化率指示量の計算に用いないように構成されてもよい。
更に、第１１判定装置は、「リッチピーク時刻ｔＲＰよりも所定時間（第１所定時間）前の時刻」から「そのリッチピーク時刻ｔＲＰよりも所定時間（第２所定時間）後の時刻」までの期間に取得されたΔＡＦを、空燃比変化率指示量の計算に用いないように構成されてもよい。同様に、第１１判定装置は、リーンピーク時刻ｔＬＰよりも所定時間（第３所定時間）前の時刻」から「そのリーンピーク時刻ｔＬＰよりも所定時間（第４所定時間）後の時刻」までの期間に取得されたΔＡＦを、空燃比変化率指示量の計算に用いないように構成されてもよい。
以上、説明したように、第１１判定装置は、
一定のサンプリング期間（サンプリング時間ｔｓ）が経過する毎に空燃比センサ出力Ｖａｂｙｆｓを取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差（即ち、今回の検出空燃比ａｂｙｆｓと前回の検出空燃比ａｂｙｆｓｏｌｄとの差ΔＡＦ）を検出空燃比変化率ΔＡＦとして取得し、且つ、
前記取得された検出空燃比変化率ΔＡＦが正の値から負の値へと変化した時点をリーンピーク時点ｔＬＰとして検出し（ステップ３４４８）、且つ、その検出したリーンピーク時点ｔＬＰの前又は後の所定時間内に取得された検出空燃比変化率ΔＡＦを、空燃比変化率指示量を取得するためのデータとして使用しないように構成されている（ステップ３４５２）。
更に、第１１判定装置は、
前記取得された検出空燃比変化率ΔＡＦが負の値から正の値へと変化した時点をリッチピーク時点ｔＲＰとして検出し（ステップ３４３２）、且つ、その検出したリッチピーク時点ｔＲＰの前又は後の所定時間内に取得された検出空燃比変化率ΔＡＦを、空燃比変化率指示量を取得するためのデータとして使用しないように構成されている（ステップ３４３６）。
図３２及び図３３にも示したように、検出空燃比変化率が極大値となるリーンピーク時点の近傍の検出空燃比変化率の大きさ、及び、検出空燃比変化率が極小値となるリッチピーク時点の近傍の検出空燃比変化率の大きさは、検出空燃比変化率の大きさの平均値と比較して小さくなるので、空燃比変化率指示量を得るためのデータとしては適切ではない。
そこで、本判定装置のように、リーンピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率、或いは、リッチピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないようにすることにより、気筒別空燃比の不均一性の程度に精度良く表す空燃比変化率指示量（最終増大変化率平均値ＡｖｅΔＡＦｐ、及び、最終減少変化率平均値ＡｖｅΔＡＦｍ）を取得することができる。その結果、第１１判定装置は、空燃比気筒間インバランス判定を精度良く行うことができる。
＜第１２実施形態＞
次に、本発明の第１２実施形態に係る内燃機関の制御装置（以下、単に「第１２判定装置」と称呼する。）について説明する。
第１２判定装置は、第８判定装置と同様、空燃比変化率指示量を、検出空燃比変化率ΔＡＦが正の場合の増大変化率指示量と、検出空燃比変化率ΔＡＦが負の場合の減少変化率指示量と、に分けて取得する。更に、第１２判定装置は、第８判定装置と同様、検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である検出空燃比変化率ΔＡＦを用いて空燃比変化率指示量（増大変化率指示量及び減少変化率指示量）を取得する。
加えて、第１２判定装置は、図３５及び図３６に示した「リーンピーク及びリッチピーク」を検出する。図３５は、検出すべき空燃比気筒間インバランスが発生している状態における検出空燃比ａｂｙｆｓを示す。図３６は、検出すべき空燃比気筒間インバランスが発生していない状態における検出空燃比ａｂｙｆｓを示す。これらの図において、時刻ｔＬＰは今回のリーンピークの時刻、時刻ｔＬＰｏｌｄは前回のリーンピークの時刻、時刻ｔＲＰは今回のリッチピークの時刻、時刻ｔＲＰｏｌｄは前回のリッチピークの時刻を表す。従って、時間ＴＬＬは前回のリーンピークから今回のリーンピークまでの時間（リーンピーク・リーンピーク時間ＴＬＬ）を示し、時間ＴＲＲは前回のリッチピークから今回のリッチピークまでの時間（リッチピーク・リッチピーク時間ＴＲＲ）を示す。
図３５から理解されるように、空燃比気筒間インバランスが発生している場合、リーンピーク・リーンピーク時間ＴＬＬとリッチピーク・リッチピーク時間ＴＲＲとは略等しい。更に、リーンピーク・リーンピーク時間ＴＬＬは閾値時間ＴＬＬｔｈよりも長く、リッチピーク・リッチピーク時間ＴＲＲは閾値時間ＴＲＲｔｈよりも長い。この場合、閾値時間ＴＬＬｔｈは閾値時間ＴＲＲｔｈと同じ時間であり、例えば、リッチピーク・リッチピーク時間ＴＲＲ（又は、リーンピーク・リーンピーク時間ＴＬＬ）の平均的な長さの７０〜８０％程度に設定される。
これに対し、図３６から理解されるように、空燃比気筒間インバランスが全く発生していない場合、検出空燃比ａｂｙｆｓに重畳するノイズの影響によってピークが頻繁に発生する。このため、リーンピーク・リーンピーク時間ＴＬＬは閾値時間ＴＬＬｔｈよりも短く、リッチピーク・リッチピーク時間ＴＲＲは閾値時間ＴＲＲｔｈよりも短い。
そこで、第１２判定装置は、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短い場合、その間に取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量のデータとしては用いない（破棄する）。同様に、第１２判定装置は、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短い場合、その間に取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量のデータとしては用いない（破棄する）。
そして、第１２判定装置は、図２３に示したルーチンを用いて空燃比気筒間インバランス判定を実施する。但し、第１２判定装置は、図２４及び図２６の何れかに示されたルーチンを用いて空燃比気筒間インバランス判定を実施してもよい。
次に、第１２判定装置の実際の作動について説明する。第１２判定装置のＣＰＵは、第８判定装置のＣＰＵが実行するルーチン（図２７に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２７に示したルーチンに代わる「図３７及び図３８にフローチャートにより示したデータ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図３７に示したルーチンのステップ３７００から処理を開始し、ステップ３７０２乃至ステップ３７０６の処理を行う。ステップ３７０２、ステップ３７０４及びステップ３７０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ３７０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。更に、ＣＰＵは図３９に示したフラグ設定ルーチンによっても判定許可フラグＸｋｙｏｋａの値を操作する。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ３７０８にて「Ｎｏ」と判定し、ステップ３７１０乃至ステップ３７１６の処理を順に行い、ステップ３７９５に進んで本ルーチンを一旦終了する。
ステップ３７１０乃至ステップ３７１６は、図２７のステップ２７１０乃至ステップ２７１６とそれぞれ同一である。従って、増大変化率積算値ＳΔＡＦｐの値、カウンタＣｓｐの値、減少変化率積算値ＳΔＡＦｍの値及びカウンタＣｓｍの値の各値が「０」に設定（クリア）される。その後、ＣＰＵはステップ３７９５に進み、本ルーチンを一旦終了する。
次に、判定許可フラグＸｋｙｏｋａの値が「１」に変更されたと仮定する。この場合、ＣＰＵはステップ３７０８にて「Ｙｅｓ」と判定し、図３８に示したステップ３８０２に進む（「Ｃ」を参照。）。ＣＰＵは、そのステップ３８０２にて、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって検出空燃比変化率ΔＡＦ（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）を求める。
次に、ＣＰＵはステップ３８０４乃至ステップ３８１４のうちの適当なステップに進む。ステップ３８０４乃至ステップ３８１４は、図２７のステップ２７２０乃至ステップ２７３０とそれぞれ同じステップである。
この結果、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である場合に検出空燃比変化率ΔＡＦが「０」以上であると、増大変化率積算値ＳΔＡＦｐが更新され、且つ、カウンタＣｓｐの値が「１」だけ増大させられる。更に、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈ以上である場合に検出空燃比変化率ΔＡＦが「０」未満であると、減少変化率積算値ＳΔＡＦｍが更新され、且つ、カウンタＣｓｍの値が「１」だけ増大させられる。
その後、ＣＰＵは「図２７のステップ２７３２と同じステップであるステップ３８１６」に進み、リッチピークが到来したか否かを判定する。このとき、リッチピークが到来していると、ＣＰＵは以下に述べるステップ３８１８乃至ステップ３８２２の処理を順に行う。
ステップ３８１８：ＣＰＵは、前回取得した「リッチピーク時刻ｔＲＰ」を前回のリッチピーク時刻ｔＲＰｏｌｄとして格納する。
ステップ３８２０：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「今回のリッチピーク時刻ｔＲＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が負から正へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定する。
ステップ３８２２：ＣＰＵは、前回のリッチピーク時刻ｔＲＰｏｌｄと今回のリッチピーク時刻ｔＲＰとの差をリッチピーク・リッチピーク時間ＴＲＲとして取得するとともに、そのリッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短いか否かを判定する。
このとき、ＣＰＵは、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短ければ、ステップ３８２２にて「Ｙｅｓ」と判定してステップ３８３０に進み、ノイズ発生フラグＸｎｏｉｓｅの値を「１」に設定する。このノイズ発生フラグＸｎｏｉｓｅは、上述したイニシャルルーチンにおいて「０」に設定されるようになっている。更に、ノイズ発生フラグＸｎｏｉｓｅは、後述する図３９のステップ３９３０において、ノイズ発生フラグＸｎｏｉｓｅの値が「０」から「１」へと変化した時点から所定時間Ｔｎｏｉｓｅが経過したときに「０」に設定される。
次に、ＣＰＵは以下に述べるステップ３８３２乃至ステップ３８３６の処理を実行し、ステップ３７９５に進んで本ルーチンを一旦終了する。
ステップ３８３２：ＣＰＵは、減少変化率積算値ＳΔＡＦｍ及びカウンタＣｓｍを共に「０」に設定（クリア）する。
ステップ３８３４：ＣＰＵは、増大変化率積算値ＳΔＡＦｐ及びカウンタＣｓｐを共に「０」に設定（クリア）する。
ステップ３８３６：ＣＰＵは、ステップ３８０２にて取得した検出空燃比変化率ΔＡＦを、前回の検出空燃比変化率ΔＡＦｏｌｄとして格納する。
これに対し、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈ以上であると、ＣＰＵはステップ３８２２にて「Ｎｏ」と判定しステップ３８２４に進み、減少変化率積算値ＳΔＡＦｍをカウンタＣｓｍにより除することにより、減少変化率ΔＡＦｍの平均値（平均減少変化率Ａｖｅｍ）を算出する。
次いで、ＣＰＵはステップ３８２６に進み、平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍを更新する。より具体的には、ＣＰＵはその時点の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」に、ステップ３８２４にて新たに取得された今回の平均減少変化率Ａｖｅｍを加えることにより、今回の「平均減少変化率Ａｖｅｍの積算値ＳＡｖｅｍ」を算出する。その後、ＣＰＵはステップ３８２８に進んでカウンタＮｍの値を「１」だけ増大し、ステップ３８３２乃至ステップ３８３６を経由してステップ３７９５に進む。
一方、ＣＰＵがステップ３８１６の処理を行う時点において、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」より大きいか、又は、今回の検出空燃比変化率ΔＡＦが「０」以下であると、ＣＰＵはそのステップ３８１６にて「Ｎｏ」と判定してステップ３８３８に進む。そして、ＣＰＵはステップ３８３８にて、「前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さい」か否かを判定する。即ち、ＣＰＵはステップ３８３８において、検出空燃比ａｂｙｆｓの傾きが正から負へと変化したか否か（検出空燃比ａｂｙｆｓが上に凸のピークである「リーンピーク」を通過したか否か）を判定する。
このとき、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さいと、ＣＰＵはステップ３８３８にて「Ｙｅｓ」と判定し、以下に述べるステップ３８４０乃至ステップ３８４４の処理を順に行う。
ステップ３８４０：ＣＰＵは、前回取得した「リーンピーク時刻ｔＬＰ」を前回のリーンピーク時刻ｔＬＰｏｌｄとして格納する。
ステップ３８４２：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「今回のリーンピーク時刻ｔＬＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が正から負へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定する。
ステップ３８４４：ＣＰＵは、前回のリーンピーク時刻ｔＬＰｏｌｄと今回のリーンピーク時刻ｔＬＰとの差をリーンピーク・リーンピーク時間ＴＬＬとして取得するとともに、そのリーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短いか否かを判定する。
このとき、ＣＰＵは、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短ければ、ステップ３８４４にて「Ｙｅｓ」と判定してステップ３８５２に進み、ノイズ発生フラグＸｎｏｉｓｅの値を「１」に設定する。その後、ＣＰＵはステップ３８３２以降へと進む。
これに対し、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈ以上であると、ＣＰＵはステップ３８４４にて「Ｎｏ」と判定してステップ３８４６に進み、増大変化率積算値ＳΔＡＦｐをカウンタＣｓｐにより除することにより、増大変化率ΔＡＦｐの平均値（平均増大変化率Ａｖｅｐ）を算出する。
次いで、ＣＰＵはステップ３８４８に進み、平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐを更新する。より具体的には、ＣＰＵはその時点の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」に、ステップ３８４６にて新たに取得された今回の平均増大変化率Ａｖｅｐを加えることにより、今回の「平均増大変化率Ａｖｅｐの積算値ＳＡｖｅｐ」を算出する。
その後、ＣＰＵは、ステップ３８５０に進んでカウンタＮｐの値を「１」だけ増大し、ステップ３８３２乃至ステップ３８３６を経由してステップ３７９５へと進む。
このように、ステップ３８２２にて「Ｙｅｓ」と判定される場合、即ち、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短い場合、そのリッチピーク・リッチピーク時間ＴＲＲ内において得られた減少変化率積算値ＳΔＡＦｍはステップ３８３２にて破棄され、そのリッチピーク・リッチピーク時間ＴＲＲ内において得られた増大変化率積算値ＳΔＡＦｐはステップ３８３４にて破棄される。
同様に、ステップ３８４４にて「Ｙｅｓ」と判定される場合、即ち、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短い場合、そのリーンピーク・リーンピーク時間ＴＬＬ内において得られた減少変化率積算値ＳΔＡＦｍはステップ３８３２にて破棄され、そのリーンピーク・リーンピーク時間ＴＬＬ内において得られた増大変化率積算値ＳΔＡＦｐはステップ３８３４にて破棄される。
そして、ＣＰＵは、図２８にフローチャートにより示した「データ処理ルーチン」を所定時間（４ｍｓ）が経過する毎に実行することにより、平均増大変化率Ａｖｅｐの平均値（空燃比変化率指示量である最終増大変化率平均値）ＡｖｅΔＡＦｐ、及び、平均減少変化率Ａｖｅｍの平均値（空燃比変化率指示量である最終減少変化率平均値）ＡｖｅΔＡＦｍを算出する。更に、判定実行フラグＸｈａｎｔｅｉの値がステップ２８６０にて「１」に設定されるので、ＣＰＵは図２３（又は、図２４、図２６）に示したルーチンにより空燃比気筒間インバランス判定を実行する。
加えて、ＣＰＵは、所定のタイミングにて図３９のステップ３９００から処理を開始し、ステップ３９１０に進んで「現時点が、ノイズ発生フラグＸｎｏｉｓｅの値が「０」から「１」へと変化した時点から所定時間Ｔｎｏｉｓｅ以内であるか否かを判定する。
このとき、現時点が、ノイズ発生フラグＸｎｏｉｓｅの値が「０」から「１」へと変化した時点から所定時間Ｔｎｏｉｓｅ以内であると、ＣＰＵはステップ３９２０に進んで判定許可フラグＸｋｙｏｋａの値を「０」に設定する。
この結果、判定許可フラグＸｋｙｏｋａの値が「０」に維持されるので、ＣＰＵは図３７のステップ３７０８に進んだとき、そのステップ３７０８にて「Ｎｏ」と判定し、ステップ３７１０以降に進む。従って、「現時点が、ノイズ発生フラグＸｎｏｉｓｅの値が「０」から「１」へと変化した時点から所定時間Ｔｎｏｉｓｅ以内である期間、検出空燃比変化率ΔＡＦを用いた「空燃比変化率指示量（本例における、最終増大変化率平均値ＡｖｅΔＡＦｐ、及び、最終減少変化率平均値ＡｖｅΔＡＦｍ）」の算出が事実上禁止される。
一方、ＣＰＵがステップ３９１０の処理を行う時点において、現時点が、ノイズ発生フラグＸｎｏｉｓｅの値が「０」から「１」へと変化した時点から所定時間Ｔｎｏｉｓｅ以内でなければ、ＣＰＵはそのステップ３９１０にて「Ｎｏ」と判定し、ステップ３９３０に進んでノイズ発生フラグＸｎｏｉｓｅの値を「０」に設定する。更に、このとき、ＣＰＵは判定許可フラグＸｋｙｏｋａの値を「０」に設定しなくなる。その結果、図２０のステップ２０３０にて判定許可フラグＸｋｙｏｋａの値が「１」に設定されると、ＣＰＵは図３７のステップ３７０８にて「Ｙｅｓ」と判定し、図３８に示したルーチンを実行するようになる。
このように、第１２判定装置は、取得された検出空燃比変化率ΔＡＦが正の値から負の値へと変化した時点をリーンピーク時点ｔＬＰとして検出するとともに、連続して検出される二つのリーンピーク時点間の時間であるリーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短い場合、その二つのリーンピーク時点間において取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量のデータとして使用しないように構成されている（ステップ３８４４での「Ｙｅｓ」との判定、ステップ３８３２及びステップ３８３４を参照。）。
同様に、第１２判定装置は、取得された検出空燃比変化率ΔＡＦが負の値から正の値へと変化した時点をリッチピーク時点ｔＲＰとして検出するとともに、連続して検出される二つのリッチピーク時点間の時間であるリッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短い場合、その二つのリッチピーク時点間において取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量のデータとして使用しないように構成されている（ステップ３８２２での「Ｙｅｓ」との判定、ステップ３８３２及びステップ３８３４を参照。）。
前述したように、空燃比気筒間インバランスが全く発生していない場合、リーンピーク・リーンピーク時間ＴＬＬは閾値時間ＴＬＬｔｈよりも短く、リッチピーク・リッチピーク時間ＴＲＲは閾値時間ＴＲＲｔｈよりも短い。
従って、第１２判定装置によれば、空燃比気筒間インバランスが全く発生していない状態における検出空燃比変化率ΔＡＦが空燃比変化率指示量の計算に用いられないので、気筒別空燃比の不均一性の程度に精度良く表す空燃比変化率指示量を取得することができる。その結果、空燃比気筒間インバランス判定を精度良く行うことができる。
更に、第１２判定装置は、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短いか、又は、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短いことが検出された場合、その検出時点から所定時間Ｔｎｏｉｓｅが経過するまでノイズ発生フラグＸｎｏｉｓｅの値を「１」に設定することにより判定許可フラグＸｋｙｏｋａの値を「０」に維持している（図３８のステップ３８３０、ステップ２８５２、図３９のルーチン）。従って、空燃比気筒間インバランスが発生していないと判定された場合（リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短いか、又は、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短いことが検出された場合）から所定時間Ｔｎｏｉｓｅが経過するまで、ノイズが多く重畳している空燃比センサ出力Ｖａｂｙｆｓに基づく空燃比気筒間インバランス判定が実行されない。従って、第１２判定装置は、精度良く空燃比気筒間インバランス判定を実行することができる。
なお、第１２判定装置は、図３８のステップ３８２８の処理を実行した後、ステップ３８３２及びステップ３８３６のみを経由する（即ち、ステップ３８３４を経由しない）ルーチンを実行してもよい。同様に、第１２判定装置は、図３８のステップ３８５０の処理を実行した後、ステップ３８３４及びステップ３８３６のみを経由する（即ち、ステップ３８３２を経由しない）ルーチンを実行してもよい。
＜第１２判定装置の変形例＞
第１２判定装置の変形例に係るＣＰＵは、図３９に示したルーチンに代え、図４０及び図４１に示したフラグ設定ルーチンを所定時間の経過毎に実行するように構成されている。但し、このＣＰＵは、ノイズ発生フラグＸｎｏｉｓｅの値をバックアップラムに格納する。
このＣＰＵは、所定のタイミングになると図４０のステップ４０００から処理を開始してステップ４０１０に進み、ノイズ発生フラグＸｎｏｉｓｅの値が「１」であるか否かを判定する。このとき、ノイズ発生フラグＸｎｏｉｓｅの値が「１」でなけれは、ＣＰＵはステップ４０１０にて「Ｎｏ」と判定し、ステップ４０９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ４０１０の処理を行う時点において、ノイズ発生フラグＸｎｏｉｓｅの値が「１」であると、ＣＰＵはそのステップ４０１０にて「Ｙｅｓ」と判定してステップ４０２０に進み、判定許可フラグＸｋｙｏｋａの値を「０」に設定し、ステップ４０９５に進んで本ルーチンを一旦終了する。従って、判定許可フラグＸｋｙｏｋａは、ノイズ発生フラグＸｎｏｉｓｅが「１」である限り、「０」に維持され続ける。
更に、所定のタイミングになると、ＣＰＵは図４１のステップ４１００から処理を開始してステップ４１１０に進み、イグニッション・キー・スイッチがオフからオンへと変更されたか否かを監視している。そして、イグニッション・キー・スイッチがオフからオンへと変更されたとき、ＣＰＵはステップ４１１０にて「Ｙｅｓ」と判定してステップ４１２０に進み、判定許可フラグＸｋｙｏｋａの値を「０」に設定（クリア）する。更に、ＣＰＵはステップ４１３０に進み、ノイズ発生フラグＸｎｏｉｓｅの値を「０」に設定（クリア）する。イグニッション・キー・スイッチがオフからオンへと変更された直後でないとき、ＣＰＵはステップ４１１０にて「Ｎｏ」と判定し、ステップ４１９５に直接進んで本ルーチンを一旦終了する。
この結果、第１２判定装置の変形例は、ノイズ発生フラグＸｎｏｉｓｅの値が一旦「１」に設定されると、イグニッション・キー・スイッチがオフからオンへと変更されるまで、ノイズ発生フラグＸｎｏｉｓｅの値は「１」に維持され且つ判定許可フラグＸｋｙｏｋａは「０」に維持される。従って、リーンピーク・リーンピーク時間ＴＬＬが閾値時間ＴＬＬｔｈよりも短いか、又は、リッチピーク・リッチピーク時間ＴＲＲが閾値時間ＴＲＲｔｈよりも短いことが検出された場合、一旦、機関１０の運転を中止し、その後、機関１０が再始動されるまで、検出空燃比変化率ΔＡＦを用いた「空燃比変化率指示量（本例における、最終増大変化率平均値ＡｖｅΔＡＦｐ、及び、最終減少変化率平均値ＡｖｅΔＡＦｍ）」の算出が事実上禁止される。加えて、判定許可フラグＸｋｙｏｋａが「０」に維持されるので、ＣＰＵは図２８のステップ２８１０にて「Ｎｏ」と判定し続ける。従って、ノイズ発生フラグＸｎｏｉｓｅの値が「１」に設定されると、次に、機関１０が始動されるまで、空燃比気筒間インバランス判定はされない。
以上、説明したように、第１２判定装置の変形例によれば、ノイズが多く重畳している空燃比センサ出力Ｖａｂｙｆｓに基づく空燃比気筒間インバランス判定が実行されない。従って、第１２判定装置の変形例は、精度良く空燃比気筒間インバランス判定を実行することができる。
なお、第１２判定装置及びその変形例は、閾値時間ＴＲＲｔｈ及び閾値時間ＴＬＬｔｈを「一つの単位燃焼サイクル期間に要する時間Ｔｃｙ」に基づいて定めてもよい。例えば、閾値時間ＴＲＲｔｈ及び閾値時間ＴＬＬｔｈは、時間Ｔｃｙのｋ倍（ｋは０．７〜０．８程度）であってもよい。
なお、第１２判定装置及びその変形例は、空燃比変化率指示量の符合変化に基づいてリッチピーク（空燃比変化率指示量の極小値）を検出し、連続する二つのリッチピーク間の時間（リッチピーク・リッチピーク時間ＴＴＲ）が所定時間よりも長いか否かを判定するとともに、リッチピーク・リッチピーク時間ＴＴＲが所定時間よりも長いときに空燃比気筒間インバランス状態が発生していると判定するように構成されることもできる。
同様に、第１２判定装置及びその変形例は、空燃比変化率指示量の符合変化に基づいてリーンピーク（空燃比変化率指示量の極大値）を検出し、連続する二つのリーンピーク間の時間（リーンピーク・リーンピーク時間ＴＴＬ）が所定時間よりも長いか否かを判定するとともに、リーンピーク・リーンピーク時間ＴＴＬが所定時間よりも長いときに空燃比気筒間インバランス状態が発生していると判定するように構成されることもできる。
＜第１３実施形態＞
次に、本発明の第１３実施形態に係る内燃機関の制御装置（以下、単に「第１３判定装置」と称呼する。）について説明する。
この第１３判定装置は、第１２判定装置のＣＰＵが「図３８のステップ３８２２にて使用する閾値時間ＴＲＲｔｈ、及び、ステップ３８４４にて使用する閾値時間ＴＬＬｔｈ」を「過去の複数個のリッチピーク・リッチピーク時間ＴＲＲ及び過去の複数個のリーンピーク・リーンピーク時間ＴＬＬ」にそれぞれ基づいて決定する点のみにおいて、第１２判定装置と相違している。従って、以下、この相違点を中心として説明する。
第１３判定装置のＣＰＵは、第１２判定装置のＣＰＵが実行するルーチンに加えて、図４２にフローチャートにより示した「閾値時間決定ルーチン」を所定時間（例えば、４ｍｓ）の経過毎に繰り返し実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図４２のステップ４２００から処理を開始してステップ４２０５に進み、現時点が今回のリッチピーク時刻ｔＲＰの更新直後であるか否か（図３８のステップ３８２０の処理が実行された直後であるか否か）を判定する。このとき、現時点が今回のリッチピーク時刻ｔＲＰの更新直後でなければ、ＣＰＵはステップ４２３０に直接進む。
これに対し、現時点が今回のリッチピーク時刻ｔＲＰの更新直後であると、ＣＰＵは以下に述べるステップ４２１０乃至ステップ４２２５の処理を順に行い、ステップ４２３０に進む。
ステップ４２１０：ＣＰＵは、今回のリッチピーク時刻ｔＲＰから前回のリッチピーク時刻ｔＲＰｏｌｄを減じることにより、最新のリッチピーク・リッチピーク時間ＴＲＲを求める。
ステップ４２１５：ＣＰＵは、ｋを２からｎ（ｎは例えば１０）までの自然数とするとき、時間ＴＲＲ（ｋ−１）を時間ＴＲＲ（ｋ）に移行する。
ステップ４２２０：ＣＰＵは、ステップ４２１０にて求めた最新のリッチピーク・リッチピーク時間ＴＲＲを時間ＴＲＲ（１）として格納する。
ステップ４２２５：ＣＰＵは、ｍを１からｎまでの自然数とするとき、時間ＴＲＲ（ｍ）の平均値を求め、その平均値から正の所定値βを減じた値を図３８のステップ３８２２にて使用する閾値時間ＴＲＲｔｈとして設定する。
この処理により、閾値時間ＴＲＲｔｈは、過去ｎ個分のリッチピーク・リッチピーク時間ＴＲＲの平均時間に基づく値であって、その平均時間よりも所定時間βだけ短い時間になる。
更に、ＣＰＵは、ステップ４２３０に進んだとき、現時点が今回のリーンピーク時刻ｔＬＰの更新直後であるか否か（図３８のステップ３８４２の処理が実行された直後であるか否か）を判定する。このとき、現時点が今回のリーンピーク時刻ｔＬＰの更新直後でなければ、ＣＰＵはステップ４２９５に直接進んで本ルーチンを一旦終了する。
これに対し、現時点が今回のリーンピーク時刻ｔＬＰの更新直後であると、ＣＰＵは以下に述べるステップ４２３５乃至ステップ４２５０の処理を順に行い、ステップ４２９５に進む。
ステップ４２３５：ＣＰＵは、今回のリーンピーク時刻ｔＬＰから前回のリーンピーク時刻ｔＬＰｏｌｄを減じることにより、最新のリーンピーク・リーンピーク時間ＴＬＬを求める。
ステップ４２４０：ＣＰＵは、ｋを２からｎ（ｎは例えば１０）までの自然数とするとき、時間ＴＬＬ（ｋ−１）を時間ＴＬＬ（ｋ）に移行する。
ステップ４２４５：ＣＰＵは、ステップ４２３５にて求めた最新のリーンピーク・リーンピーク時間ＴＬＬを時間ＴＬＬ（１）として格納する。
ステップ４２５０：ＣＰＵは、ｍを１からｎまでの自然数とするとき、時間ＴＬＬ（ｍ）の平均値を求め、その平均値から正の所定値βを減じた値を図３８のステップ３８４４にて使用する閾値時間ＴＬＬｔｈとして設定する。
この処理により、閾値時間ＴＬＬｔｈは、過去ｎ個分のリーンピーク・リーンピーク時間ＴＬＬの平均時間に基づく値であって、その平均時間よりも所定時間βだけ短い時間になる。
このように、第１３装置は、閾値時間ＴＲＲｔｈを過去ｎ個分のリッチピーク・リッチピーク時間ＴＲＲの平均時間に基づいて決定するとともに、閾値時間ＴＬＬｔｈを過去ｎ個分のリーンピーク・リーンピーク時間ＴＬＬに基づいて決定している。従って、空燃比センサ出力Ｖａｂｙｆｓにノイズが頻繁に重畳し始めたか否かを精度良く判定することができる。
＜第１４実施形態＞
次に、本発明の第１４実施形態に係る内燃機関の制御装置（以下、単に「第１４判定装置」と称呼する。）について説明する。
この第１４判定装置は、第１２判定装置のＣＰＵが「図３８のステップ３８２２にて使用する閾値時間ＴＲＲｔｈ、及び、ステップ３８４４にて使用する閾値時間ＴＬＬｔｈ」を「機関回転速度ＮＥに応じて変化する値（より具体的には、機関回転速度ＮＥが大きいほど小さくなる値）」に設定する点のみにおいて、第１２判定装置と相違している。従って、以下、この相違点を中心として説明する。
第１４判定装置のＣＰＵは、第１２判定装置のＣＰＵが実行するルーチンに加えて、図４３にフローチャートにより示した「閾値時間決定ルーチン」を所定時間（例えば、４ｍｓ）の経過毎に繰り返し実行するようになっている。
従って、所定のタイミングになると、ＣＰＵは図４３のステップ４３００から処理を開始してステップ４３１０に進み、機関回転速度ＮＥを「図４３のステップ４３１０のブロック内に示したリッチ閾値時間決定テーブルＭａｐＴＲＲｔｈ」に適用することにより、リッチ閾値時間ＴＲＲｔｈを決定する。このリッチ閾値時間決定テーブルＭａｐＴＲＲｔｈによれば、機関回転速度ＮＥが大きくなるほどリッチ閾値時間ＴＲＲｔｈが小さくなるように（リッチ閾値時間ＴＲＲｔｈが機関回転速度ＮＥに実質的に反比例するように）求められる。
次に、ＣＰＵはステップ４３２０に進み、機関回転速度ＮＥを「ステップ４３２０のブロック内に示したリーン閾値時間決定テーブルＭａｐＴＬＬｔｈ」に適用することにより、リーン閾値時間ＴＬＬｔｈを決定する。このリーン閾値時間決定テーブルＭａｐＴＬＬｔｈによれば、機関回転速度ＮＥが大きくなるほどリーン閾値時間ＴＬＬｔｈが小さくなるように（リーン閾値時間ＴＬＬｔｈが機関回転速度ＮＥに実質的に反比例するように）求められる。その後、ＣＰＵはステップ４３９５に進んで本ルーチンを一旦終了する。
上述したように、空燃比気筒間インバランスが発生している場合、リッチピークは一つの単位燃焼サイクル間に１度だけ現れ、リーンピークは一つの単位燃焼サイクル間に１度だけ現れる。従って、空燃比気筒間インバランスが発生している場合のリッチピーク・リッチピーク時間ＴＲＲは機関回転速度ＮＥが大きくなるにつれて短くなる。同様に、空燃比気筒間インバランスが発生している場合のリーンピーク・リーンピーク時間ＴＲＲは機関回転速度ＮＥが大きくなるにつれて短くなる。
従って、第１４判定装置のように、リッチ閾値時間ＴＲＲｔｈを「機関回転速度ＮＥに反比例し且つ空燃比気筒間インバランスが発生している場合のリッチピーク・リッチピークＴＲＲ時間よりも僅かに短い時間」に設定することにより、ノイズが重畳した空燃比センサ出力Ｖａｂｙｆｓに基づいて空燃比変化率指示量が取得されることを回避することができる。同様に、第１４判定装置のように、リーン閾値時間ＴＬＬｔｈを「機関回転速度ＮＥに反比例し且つ空燃比気筒間インバランスが発生している場合のリーンピーク・リーンピーク時間ＴＬＬよりも僅かに短い時間」に設定することにより、ノイズが重畳した空燃比センサ出力Ｖａｂｙｆｓに基づいて空燃比変化率指示量が取得されることを回避することができる。
＜第１５実施形態＞
次に、本発明の第１５実施形態に係る内燃機関の制御装置（以下、単に「第１５判定装置」と称呼する。）について説明する。
第１５判定装置は、第８判定装置と同様にリッチピーク及びリーンピークを検出する。但し、第１５判定装置は、前回のリッチピーク（時刻ｔＲＰｏｌｄ）から今回のリッチピーク（時刻ｔＲＰ）までの期間において取得された検出空燃比変化率ΔＡＦのデータ数ＤｎＲＲと、前回のリーンピーク（時刻ｔＬＰｏｌｄ）から今回のリーンピーク（時刻ｔＬＰ）までの期間において取得された検出空燃比変化率ΔＡＦのデータ数ＤｎＬＬと、の差の大きさが閾値αｔｈ以下であると判定されたとき、その時点から前の一燃焼サイクル期間内に取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量の計算に使用しない（破棄する）。
更に、第１５判定装置は、破棄されていない検出空燃比変化率ΔＡＦのデータ（有効データ数）の数が一定値Ｃｏｋｔｈに達すると、有効データのうち正の値を有する有効データの平均値を最終増大変化率平均値ＡｖｅΔＡＦｐとして求め、有効データのうち負の値を有する有効データの平均値を最終減少変化率平均値ＡｖｅΔＡＦｍとして求める。
そして、第１５判定装置は、図２３に示したルーチンを用いて空燃比気筒間インバランス判定を実施する。但し、第１５判定装置は、図２４及び図２６の何れかに示されたルーチンを用いて空燃比気筒間インバランス判定を実施してもよい。
次に、第１５判定装置の実際の作動について説明する。第１５判定装置のＣＰＵは、第８判定装置のＣＰＵが実行するルーチン（図２７に示したルーチンを除く。）を所定のタイミングにて実行するとともに、図２７に示したルーチンに代わる「図４４及び図４５にフローチャートにより示したデータ取得ルーチン」を「４ｍｓ（所定の一定サンプリング時間ｔｓ）」が経過する毎に実行するようになっている。
従って、ＣＰＵは、所定のタイミングにて図４４のステップ４４００から処理を開始し、ステップ４４０２乃至ステップ４４０６の処理を行う。ステップ４４０２、ステップ４４０４及びステップ４４０６は、図１７のステップ１７１０、ステップ１７２０及びステップ１７３０とそれぞれ同じである。従って、サンプリング時間ｔｓの経過毎に、空燃比センサ出力Ｖａｂｙｆｓ、前回の検出空燃比ａｂｙｆｓｏｌｄ及び今回の検出空燃比ａｂｙｆｓが取得される。
次に、ＣＰＵはステップ４４０８に進み、判定許可フラグＸｋｙｏｋａの値が「１」であるか否かを判定する。この判定許可フラグＸｋｙｏｋａの値は、第２判定装置と同様、図２０に示したルーチンにより設定される。
いま、判定許可フラグＸｋｙｏｋａの値が「０」であると仮定する。この場合、ＣＰＵはステップ４４０８にて「Ｎｏ」と判定し、ステップ４４９５に直接進んで本ルーチンを一旦終了する。
これに対し、判定許可フラグＸｋｙｏｋａの値が「１」であると、ＣＰＵはステップ４４０８にて「Ｙｅｓ」と判定してステップ４４１０に進み、今回の検出空燃比ａｂｙｆｓから前回の検出空燃比ａｂｙｆｓｏｌｄを減じることによって「現在の時刻ｔにおける検出空燃比変化率ΔＡＦ（ｔ）（＝今回の検出空燃比ａｂｙｆｓ−前回の検出空燃比ａｂｙｆｓｏｌｄ）」を求める。検出空燃比変化率ΔＡＦ（ｔ）は、時刻ｔに関連付けられながらＲＡＭに格納されて行く。
次に、ＣＰＵはステップ４４１２に進み、検出空燃比変化率ΔＡＦ（ｔ）の大きさ（ΔＡＦ（ｔ）の絶対値｜ΔＡＦ（ｔ）｜）が有効判定閾値Ｙｕｋｏｔｈ以上であるか否かを判定する。この有効判定閾値Ｙｕｋｏｔｈは、気筒別空燃比が実質的に互いに一致している場合における検出空燃比変化率ΔＡＦの大きさ（｜ΔＡＦ｜）の平均値又は最大値に、余裕代（マージン）としての所定値δを加えた値である。
このとき、検出空燃比変化率ΔＡＦ（ｔ）の大きさ（ΔＡＦの絶対値｜ΔＡＦ（ｔ）｜）が有効判定閾値Ｙｕｋｏｔｈ未満であると、ＣＰＵはステップ４４１２にて「Ｎｏ」と判定し、ステップ４４９５に直接進んで本ルーチンを一旦終了する。
これに対し、検出空燃比変化率ΔＡＦ（ｔ）の大きさ（ΔＡＦの絶対値｜ΔＡＦ（ｔ）｜）が有効判定閾値Ｙｕｋｏｔｈ以上であると、ＣＰＵはステップ４４１２にて「Ｙｅｓ」と判定し、以下に述べるステップ４４１４乃至ステップ４４２８のうちの適当なステップの処理を順に行い、ステップ４４３０に進む。
ステップ４４１４：ＣＰＵは、その時点において今回の検出空燃比変化率ΔＡＦとして保持しているデータを「前回の検出空燃比変化率ΔＡＦｏｌｄ」として格納する。これにより、前回の検出空燃比変化率ΔＡＦｏｌｄは、サンプリング時間ｔｓ（４ｍｓ）前に取得された検出空燃比変化率ΔＡＦとなる。
ステップ４４１６：ＣＰＵは、上記ステップ４４１０にて取得した現時点における検出空燃比変化率ΔＡＦ（ｔ）を「今回の検出空燃比変化率ΔＡＦ」として格納する。
ステップ４４１８：ＣＰＵは、図２７のステップ２７３２と同様、前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以下であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より大きいか否かを判定する。即ち、ＣＰＵはステップ４４１８において、検出空燃比ａｂｙｆｓの傾きが負から正へと変化したか否か（検出空燃比ａｂｙｆｓが下に凸のピークである「リッチピーク」を通過したか否か）を判定する。ＣＰＵは、このステップ４４１８の判定条件が成立しているとステップ４４２０に進み、ステップ４４１８の判定条件が成立していなければステップ４４２４に進む。
ステップ４４２０：ＣＰＵは、現時点においてリッチピーク時刻ｔＲＰとして記憶されているデータを「前回のリッチピーク時刻ｔＲＰｏｌｄ」として格納する。
ステップ４４２２：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「今回のリッチピーク時刻ｔＲＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が負から正へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリッチピークを迎えたと推定する。その後、ＣＰＵはステップ４４３０に進む。
ステップ４４２４：ＣＰＵは、「前回の検出空燃比変化率ΔＡＦｏｌｄが「０」以上であり、且つ、今回の検出空燃比変化率ΔＡＦが「０」より小さい」か否かを判定する。即ち、ＣＰＵは図２７のステップ２７４６と同様のステップ４４２４において、検出空燃比ａｂｙｆｓの傾きが正から負へと変化したか否か（検出空燃比ａｂｙｆｓが上に凸のピークである「リーンピーク」を通過したか否か）を判定する。ＣＰＵは、このステップ４４２４の判定条件が成立しているとステップ４４２６に進み、ステップ４４２４の判定条件が成立していなければステップ４４９５に直接進んで本ルーチンを一旦終了する。
ステップ４４２６：ＣＰＵは、現時点においてリーンピーク時刻ｔＬＰとして記憶されているデータを「前回のリーンピーク時刻ｔＬＰｏｌｄ」として格納する。
ステップ４４２８：ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻を「リーンピーク時刻ｔＬＰ」として取得する。即ち、現時点において検出空燃比変化率ΔＡＦの値が正から負へと変更したことが確認されたので、ＣＰＵは、現在の時刻ｔからサンプリングｔｓだけ前の時刻にて、検出空燃比ａｂｙｆｓがリーンピークを迎えたと推定する。その後、ＣＰＵはステップ４４３０に進む。
ＣＰＵは、ステップ４４３０にて、前回のリッチピーク（時刻ｔＲＰｏｌｄ）から最新のリッチピーク（時刻ｔＲＰ）までの期間（リッチピーク・リッチピーク期間）において取得され且つＲＡＭに記憶されている検出空燃比変化率ΔＡＦ（ｔ）のデータ数ＤｎＲＲと、前回のリーンピーク（時刻ｔＬＰｏｌｄ）から最新のリーンピーク（時刻ｔＬＰ）までの期間（リーンピーク・リーンピーク期間）において取得され且つＲＡＭに記憶されている検出空燃比変化率ΔＡＦ（ｔ）のデータ数ＤｎＬＬと、を取得する。
次に、ＣＰＵはステップ４４３２に進み、データ数ＤｎＲＲとデータ数ＤｎＬＬとの差の大きさ｜ＤｎＲＲ−ＤｎＬＬ｜が閾値αｔｈ以下であるか否かを判定する。このとき、差の大きさ｜ＤｎＲＲ−ＤｎＬＬ｜が閾値αｔｈよりも大きいと、ＣＰＵはステップ４４３２にて「Ｎｏ」と判定し、ステップ４４９５に直接進んで本ルーチンを一旦終了する。従って、この場合、有効判定閾値Ｙｕｋｏｔｈ以上の絶対値｜ΔＡＦ（ｔ）｜を有する検出空燃比変化率ΔＡＦ（ｔ）は破棄されない。
一方、ＣＰＵがステップ４４３２の処理を行う時点において、データ数ＤｎＲＲとデータ数ＤｎＬＬとの差の大きさ｜ＤｎＲＲ−ＤｎＬＬ｜が閾値αｔｈ以下であると判定されたとき、ＣＰＵはステップ４４３４に進んで「現時点がリッチピーク検出直後であるか否か（ステップ４４１８にて「Ｙｅｓ」と判定された直後であるか否か）」を判定する。
そして、ＣＰＵは、現時点がリッチピーク検出直後であるときステップ４４３６に進み、「前回のリッチピーク時刻ｔＲＰｏｌｄから今回のリッチピーク時刻ｔＲＰまでの期間（リッチピーク・リッチピーク期間）」内に取得された検出空燃比変化率ΔＡＦ（ｔ）（即ち、ΔＡＦ（ｔＲＰｏｌｄ）〜ΔＡＦ（ｔＲＰ））を空燃比変化率指示量の計算に使用しないように破棄する。なお、ＣＰＵは、現時点からクランク角にして７２０°クランク角前の時点より現時点までの間の検出空燃比変化率ΔＡＦ（ｔ）を破棄してもよい。即ち、ＣＰＵは、現時点から単位燃焼サイクル期間前の時点から現時点までに得られた検出空燃比変化率ΔＡＦ（ｔ）を破棄してもよい。
これに対し、ＣＰＵがステップ４４３４の処理を行う時点において、現時点がリッチピーク検出直後でないとき（即ち、現時点がリーンピーク検出直後であるとき）、ＣＰＵはステップ４４３８に進み、「前回のリーンピーク時刻ｔＬＰｏｌｄから今回のリーンピーク時刻ｔＬＰまでの期間（リーンピーク・リーンピーク期間）」内に取得された検出空燃比変化率ΔＡＦを空燃比変化率指示量の計算に使用しないように破棄する。なお、ＣＰＵは、現時点からクランク角にして７２０°クランク角前の時点より現時点までの間の検出空燃比変化率ΔＡＦ（ｔ）を破棄してもよい。即ち、ＣＰＵは、現時点から単位燃焼サイクル期間前の時点から現時点までに得られた検出空燃比変化率ΔＡＦ（ｔ）を破棄してもよい。
更に、前述したように、ＣＰＵは図４５に示したデータ取得ルーチンを４ｍｓが経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図４５のステップ４５００から処理を開始してステップ４５１０に進み、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達したか否かを判定する。なお、このステップにおいて、ＣＰＵは「判定許可フラグＸｋｙｏｋａが「１」である状態の積算クランク角が所定クランク角に到達したか否か」を判定してもよい。
このとき、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していなければ、ＣＰＵはステップ４５１０にて「Ｎｏ」と判定し、ステップ４５９５に直接進んで本ルーチンを一旦終了する。
一方、ＣＰＵがステップ４５１０の処理を行う時点において、判定許可フラグＸｋｙｏｋａの値が「１」である状態の積算時間が所定時間に到達していると、ＣＰＵはそのステップ４５１０にて「Ｙｅｓ」と判定し、有効データ数が一定値Ｃｏｋｔｈ以上であるか否かを判定する。この有効データ数は、「検出空燃比変化率ΔＡＦ（ｔ）の大きさ（ΔＡＦ（ｔ）の絶対値｜ΔＡＦ（ｔ）｜）が有効判定閾値Ｙｕｋｏｔｈ以上であり、且つ、図４４のステップ４４３６又はステップ４４３８において破棄されていない検出空燃比変化率ΔＡＦ（ｔ）」のデータの数である。
このとき、有効データ数が所定値Ｃｏｋｔｈ未満であると、ＣＰＵはステップ４５２０にて「Ｎｏ」と判定してステップ４５９５に直接進んで本ルーチンを一旦終了する。
これに対し、有効データ数が所定値Ｃｏｋｔｈ以上であると、ＣＰＵはステップ４５２０にて「Ｙｅｓ」と判定し、以下に述べるステップ４５３０乃至ステップ４５５０の処理を順に行い、ステップ４５９５に進んで本ルーチンを一旦終了する。
ステップ４５３０：ＣＰＵは、有効データのうち正の値を有する有効データΔＡＦ（ｔ）の平均値を最終増大変化率平均値（空燃比変化率指示量の一つである増大変化率指示量）ＡｖｅΔＡＦｐとして求める。
ステップ４５４０：ＣＰＵは、有効データのうち負の値を有する有効データΔＡＦ（ｔ）の平均値を最終減少変化率平均値（空燃比変化率指示量の一つである減少変化率指示量）ＡｖｅΔＡＦｍとして求める。
ステップ４５５０：ＣＰＵは、判定実行フラグＸｈａｎｔｅｉの値を「１」に設定する。
この結果、判定実行フラグＸｈａｎｔｅｉの値が「１」に変更されるので、ＣＰＵは図２３に示したルーチンのステップ２３１０以降に進み、「図４５のステップ４５３０にて求めた増大変化率指示量（即ち、最終増大変化率平均値ＡｖｅΔＡＦｐ）」及び「図４５のステップ４５４０にて求めた減少変化率指示量（即ち、最終減少変化率平均値ＡｖｅΔＡＦｍ）」を用いた空燃比気筒間インバランス判定を実施する。
前述したように、ＣＰＵは、検出空燃比変化率ΔＡＦの大きさ（ΔＡＦの絶対値｜ΔＡＦ｜）が有効判定閾値Ｙｕｋｏｔｈより小さい検出空燃比変化率ΔＡＦ（無効データ）を、最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍの算出に使用しない（ステップ４４１２からステップ４４９５へと直接進む場合を参照。）。更に、ＣＰＵは、データ数ＤｎＲＲとデータ数ＤｎＬＬとの差の大きさ｜ＤｎＲＲ−ＤｎＬＬ｜が閾値αｔｈ以下であるとき、換言すると、データ数ＤｎＲＲとデータ数ＤｎＬＬとの差が小さく空燃比気筒間インバランスが発生している可能性がないと判定されるとき、少なくとも「その判定時点から所定期間前の時点」から「その判定時点」までに得られた検出空燃比変化率ΔＡＦ（ｔ）を最終増大変化率平均値ＡｖｅΔＡＦｐ及び最終減少変化率平均値ＡｖｅΔＡＦｍの算出に使用しない（ステップ４４３２乃至ステップ４４３８を参照。）。
この結果、特別なフィルタを用いることなく、検出空燃比変化率ΔＡＦに重畳しているノイズの「増大変化率指示量及び減少変化率指示量への影響」を低減することができる。従って、第１５判定装置は、空燃比気筒間インバランス判定をより精度良くことができる。
＜第１６実施形態＞
次に、本発明の第１６実施形態に係る内燃機関の制御装置（以下、単に「第１６判定装置」と称呼する。）について説明する。
第１６判定装置は、第８判定装置と同様にリッチピーク及びリーンピークを検出する。但し、第１６判定装置は、空燃比気筒間インバランスが発生していると判定されたとき、その空燃比気筒間インバランスが特定気筒リッチずれインバランス状態であれば、その特定気筒をリッチピーク時刻ｔＲＰｏｌｄと機関回転速度ＮＥとから特定する。同様に、第１６判定装置は、空燃比気筒間インバランスが発生していると判定されたとき、その空燃比気筒間インバランスが特定気筒リーンずれインバランス状態であれば、その特定気筒をリーンピーク時刻ｔＬＰｏｌｄと機関回転速度ＮＥとから特定する。以下、第１６判定装置の作動について説明する。
第１６判定装置のＣＰＵは、第８判定装置のＣＰＵが実行するルーチンに加え、図４６及び図４７に示した「ピーク発生気筒特定ルーチン」を所定時間が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図４６のステップ４６００から処理を開始してステップ４６０５に進み、現時点が「基準気筒（本例においては第１気筒＃１）の圧縮上死点」であるか否かを判定する。
そして、現時点が「基準気筒の圧縮上死点」であれば、ＣＰＵはステップ４６０５にて「Ｙｅｓ」と判定してステップ４６１０に進み、現在の時刻を基準気筒の圧縮上死点の時刻ｔＳＴとして格納する。その後、ＣＰＵはステップ４６１５に進む。これに対し、現時点が「基準気筒の圧縮上死点」であなければ、ＣＰＵはステップ４６０５にて「Ｎｏ」と判定し、ステップ４６１５に直接進む。
次に、ＣＰＵはステップ４６１５にて、現時点が「リッチピーク時刻ｔＲＰを取得した直後の時点（図２７のステップ２７３４の処理を実行した直後）」であるか否かを判定する。現時点が「リッチピーク時刻ｔＲＰを取得した直後の時点」でなければ、ＣＰＵはステップ４６３５に直接進む。
これに対し、現時点が「リッチピーク時刻ｔＲＰを取得した直後の時点」であると、ＣＰＵはステップ４６１５にて「Ｙｅｓ」と判定し、以下に述べるステップ４６２０乃至ステップ４６３０の処理を順に行い、ステップ４６３５に進む。
ステップ４６２０：ＣＰＵは、図２７のステップ２７３４にて取得されたリッチピーク時刻ｔＲＰから基準気筒の圧縮上死点の時刻ｔＳＴを減じることにより、基準気筒の圧縮上死点からリッチピーク時刻ｔＲＰまでの時間ｔｓｒを算出する。
ステップ４６２５：ＣＰＵは、機関回転速度ＮＥと時間ｔｓｒとから、そのリッチピークをもたらした排ガスはどの気筒Ｎから排出された排ガスであるのか（リッチピークをもたらした気筒Ｎ）を特定する。
ある特定気筒の気筒別空燃比が理論空燃比よりもリッチ側に偏移しているとき、その気筒から排出された排ガスの空燃比が空燃比センサ出力Ｖａｂｙｆｓとして現れるまでの時間は、機関回転速度ＮＥに応じて変化する。従って、機関回転速度及び時間ｔｓｒによれば、リッチピークをもたらした排ガスはどの気筒Ｎから排出されたのかを特定することができる。なお、ＣＰＵは、ステップ４６２５において、吸入空気流量Ｇａ、機関回転速度ＮＥ及び時間ｔｓｒに基づいて、そのリッチピークをもたらした気筒Ｎを特定してもよい。
ステップ４６３０：ＣＰＵは、ステップ４６２５にて特定した気筒Ｎに対応するカウンタＣＲ（Ｎ）の値を「１」だけ増大する。例えば、ステップ４６２５にて特定された気筒が第１気筒であれば、カウンタＣＲ（１）が「１」だけ増大される。なお、カウンタＣＲ（Ｎ）は上述したイニシャルルーチンにおいて総て「０」に設定されるようになっている。
次に、ＣＰＵはステップ４６３５にて、現時点が「リーンピーク時刻ｔＲＬを取得した直後の時点（図２７のステップ２７４８の処理を実行した直後）」であるか否かを判定する。現時点が「リーンピーク時刻ｔＲＬを取得した直後の時点」でなければ、ＣＰＵはステップ４６９５に直接進んで本ルーチンを一旦終了する。
これに対し、現時点が「リーンピーク時刻ｔＲＬを取得した直後の時点」であると、ＣＰＵはステップ４６３５にて「Ｙｅｓ」と判定し、以下に述べるステップ４６４０乃至ステップ４６５０の処理を順に行い、ステップ４６３５に進んで本ルーチンを一旦終了する。
ステップ４６４０：ＣＰＵは、図２７のステップ２７４８にて取得されたリーンピーク時刻ｔＲＬから基準気筒の圧縮上死点の時刻ｔＳＴを減じることにより、基準気筒の圧縮上死点からリーンピーク時刻ｔＲＬまでの時間ｔｓｌを算出する。
ステップ４６４５：ＣＰＵは、機関回転速度ＮＥと時間ｔｓｌとから、そのリーンピークをもたらした排ガスはどの気筒から排出された排ガスであるのか（リーンピークをもたらした気筒Ｎ）を特定する。
ある特定気筒の気筒別空燃比が理論空燃比よりもリーン側に偏移しているとき、その気筒から排出された排ガスの空燃比が空燃比センサ出力Ｖａｂｙｆｓとして現れるまでの時間は、機関回転速度ＮＥに応じて変化する。従って、機関回転速度及び時間ｔｓｌによれば、リーンピークをもたらした排ガスはどの気筒Ｎから排出されたのかを特定することができる。なお、ＣＰＵは、ステップ４６４５において、吸入空気流量Ｇａ、機関回転速度ＮＥ及び時間ｔｓｌに基づいて、そのリーンピークをもたらした気筒Ｎを特定してもよい。
ステップ４６５０：ＣＰＵは、ステップ４６４５にて特定した気筒Ｎに対応するカウンタＣＬ（Ｎ）の値を「１」だけ増大する。例えば、ステップ４６４５にて特定された気筒が第１気筒であれば、カウンタＣＬ（１）が「１」だけ増大される。なお、カウンタＣＬ（Ｎ）は上述したイニシャルルーチンにおいて総て「０」に設定されるようになっている。
更に、所定のタイミングになると、ＣＰＵは図４７のステップ４７００から処理を開始してステップ４７１０に進み、現時点は「リッチずれインバランス発生フラグＸＩＮＢＲの値が「０」から「１」へと変化した時点」の直後であるか否かを判定する。このとき、ステップ４７１０の条件が満たされなければ、ＣＰＵはステップ４７１０にて「Ｎｏ」と判定し、ステップ４７３０に直接進む。
これに対し、ステップ４７１０の条件が成立していると、ＣＰＵはステップ４７１０にて「Ｙｅｓ」と判定してステップ４７２０に進み、カウンタＣＲ（ｍ）（ｍは１〜Ｎの自然数）のうち最大値を有するカウンタＣＲ（ｎ）を選択し、第ｎ気筒がリッチずれした気筒であると特定する。その後、ＣＰＵはステップ４７３０に進む。
ＣＰＵはステップ４７３０に進み、現時点は「リーンずれインバランス発生フラグＸＩＮＢＬの値が「０」から「１」へと変化した時点」の直後であるか否かを判定する。このとき、ステップ４７３０の条件が満たされなければ、ＣＰＵはステップ４７３０にて「Ｎｏ」と判定し、ステップ４７９５に直接進んで本ルーチンを一旦終了する。
これに対し、ステップ４７３０の条件が成立していると、ＣＰＵはステップ４７３０にて「Ｙｅｓ」と判定してステップ４７４０に進み、カウンタＣＬ（ｍ）（ｍは１〜Ｎの自然数）のうち最大値を有するカウンタＣＬ（ｎ）を選択し、第ｎ気筒がリーンずれした気筒であると特定する。その後、ＣＰＵはステップ４７９５に進んで本ルーチンを一旦終了する。
このように、第１６判定装置は、リッチピークが発生した時刻ｔＲＰ又はリーンピークが発生した時刻ｔＬＰに基づいて、何れの気筒がリッチずれ又はリーンずれを起こしているのかを特定することができる。
以上、説明したように、本発明に係る空燃比気筒間インバランス判定装置の各実施形態は、検出空燃比変化率ΔＡＦに応じて変化する空燃比変化率指示量を利用することにより、空燃比気筒間インバランスが発生しているか否かを精度良く判定することができる。
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、空燃比気筒間インバランス判定を実行する際（空燃比変化率指示量を取得する際）、メインフィードバック制御条件及びサブフィードバック制御条件の何れか一方を不成立とし、機関に供給される混合気の空燃比を一定の値（理論空燃比相当）に維持してもよい。
【図１】
2011001539.tif 000003
【図２】
2011001539.tif 000004
【図３】
2011001539.tif 000005
【図４】
2011001539.tif 000006
【図５】
2011001539.tif 000007
【図６】
2011001539.tif 000008
【図７】
2011001539.tif 000009
【図８】
2011001539.tif 000010
【図９】
2011001539.tif 000011
【図１０】
2011001539.tif 000012
【図１１】
2011001539.tif 000013
【図１２】
2011001539.tif 000014
【図１３】
2011001539.tif 000015
【図１４】
2011001539.tif 000016
【図１５】
2011001539.tif 000017
【図１６】
2011001539.tif 000018
【図１７】
2011001539.tif 000019
【図１８】
2011001539.tif 000020
【図１９】
2011001539.tif 000021
【図２０】
2011001539.tif 000022
【図２１】
2011001539.tif 000023
【図２２】
2011001539.tif 000024
【図２３】
2011001539.tif 000025
【図２４】
2011001539.tif 000026
【図２５】
2011001539.tif 000027
【図２６】
2011001539.tif 000028
【図２７】
2011001539.tif 000029
【図２８】
2011001539.tif 000030
【図２９】
2011001539.tif 000031
【図３０】
2011001539.tif 000032
【図３１】
2011001539.tif 000033
【図３２】
2011001539.tif 000034
【図３３】
2011001539.tif 000035
【図３４】
2011001539.tif 000036
【図３５】
2011001539.tif 000037
【図３６】
2011001539.tif 000038
【図３７】
2011001539.tif 000039
【図３８】
2011001539.tif 000040
【図３９】
2011001539.tif 000041
【図４０】
2011001539.tif 000042
【図４１】
2011001539.tif 000043
【図４２】
2011001539.tif 000044
【図４３】
2011001539.tif 000045
【図４４】
2011001539.tif 000046
【図４５】
2011001539.tif 000047
【図４６】
2011001539.tif 000048
【図４７】
2011001539.tif 000049
【手続補正書】
【提出日】平成23年5月17日(2011.5.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の気筒を有する多気筒内燃機関に適用される空燃比気筒間インバランス判定装置であって、
前記機関の排気通路であって前記複数の気筒のうちの少なくとも２以上の気筒から排出された排ガスが集合する排気集合部、又は、同排気通路であって同排気集合部よりも下流側の部位、に配設されるとともに、空燃比検出素子と、前記空燃比検出素子を覆うように同空燃比検出素子をその内部に収容し且つ前記排気通路を流れる排ガスを前記内部に流入させる流入孔及び前記内部に流入した排ガスを前記排気通路に流出させる流出孔を備える保護カバーと、を含む空燃比センサであって、前記空燃比検出素子が同空燃比検出素子に到達した排ガスの空燃比に応じた出力を空燃比センサ出力として発生する、空燃比センサと、
前記少なくとも２以上の気筒のそれぞれに供給される混合気の空燃比の目標値が一定の目標空燃比に設定されている状態において、前記空燃比センサ出力により表される空燃比の単位時間当たりの変化量に相当する検出空燃比変化率に応じた値を、前記少なくとも２以上の気筒のうちの任意の一つの気筒が、吸気行程、圧縮行程、膨張行程及び排気行程からなる一つの燃焼サイクルを終了するのに要する期間である単位燃焼サイクル期間における前記空燃比センサ出力、に基づいて同単位燃焼サイクル期間に対して取得するとともに、前記少なくとも２以上の気筒のそれぞれに供給される混合気の空燃比である気筒別空燃比の間に不均衡が生じている空燃比気筒間インバランス状態が発生しているか否かの判定を、前記取得された検出空燃比変化率に応じた値に基づいて定められる空燃比変化率指示量に基づいて実行するインバランス判定手段と、
を備えた空燃比気筒間インバランス判定装置。
【請求項２】
請求の範囲１に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさと所定のインバランス判定用閾値とを比較し、その比較の結果に基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成された空燃比気筒間インバランス判定装置。
【請求項３】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記取得された空燃比変化率指示量の大きさが前記インバランス判定用閾値よりも大きいことを前記比較の結果が示した場合に前記空燃比気筒間インバランス状態が発生していると判定するように構成された空燃比気筒間インバランス判定装置。
【請求項４】
（削除）
【請求項５】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記単位燃焼サイクル期間において前記検出空燃比変化率を複数取得するとともに、前記取得された複数の前記検出空燃比変化率の大きさの平均値に応じた値を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項６】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記単位燃焼サイクル期間において前記検出空燃比変化率を複数取得するとともに、前記取得された複数の検出空燃比変化率のうちその大きさが最大である検出空燃比変化率に応じた値を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項７】
（削除）
【請求項８】
（削除）
【請求項９】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記単位燃焼サイクル期間よりも短い一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得し、
前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率の中からその大きさが最大である検出空燃比変化率を最大変化率として選択し、
複数の前記単位燃焼サイクル期間のそれぞれに対して選択された前記最大変化率の平均値を求め、同平均値を前記空燃比変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１０】
請求の範囲１、請求の範囲２、請求の範囲３、請求の範囲５、請求の範囲６及び請求の範囲９の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
単位時間あたりに前記機関に吸入される空気の量である吸入空気流量が所定の第１閾値空気流量よりも大きいとき前記空燃比気筒間インバランス状態が発生しているか否かの判定を実行し、前記吸入空気流量が前記第１閾値空気流量よりも小さいとき前記空燃比気筒間インバランス状態が発生しているか否かの判定を実行しないように構成された空燃比気筒間インバランス判定装置。
【請求項１１】
請求の範囲２、請求の範囲３、請求の範囲５、請求の範囲６及び請求の範囲９の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
単位時間あたりに前記機関に吸入される空気の量である吸入空気流量が大きいほど前記インバランス判定用閾値を大きい値に変更するように構成された空燃比気筒間インバランス判定装置。
【請求項１２】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きい場合には前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きい場合には前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較するとともに、前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１３】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量を、前記検出空燃比変化率が正である場合の増大変化率指示量と前記検出空燃比変化率が負である場合の減少変化率指示量とに区別して取得し、
前記増大変化率指示量の大きさと前記インバランス判定用閾値としての増大変化率閾値とを比較するとともに、前記減少変化率指示量の大きさと前記インバランス判定用閾値としての減少変化率閾値とを比較し、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値の大きさよりも大きい場合に前記空燃比気筒間インバランス状態が発生していると判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１４】
請求の範囲１３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記増大変化率指示量の大きさが前記増大変化率閾値よりも大きく且つ前記減少変化率指示量の大きさが前記減少変化率閾値よりも大きい場合、
前記増大変化率指示量の大きさが前記減少変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記減少変化率指示量の大きさが前記増大変化率指示量の大きさよりも大きいときには前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１５】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の大きさの平均値を前記増大変化率指示量として取得するとともに、前記複数の前記検出空燃比変化率のうちの負の値を有する変化率の大きさの平均値を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１６】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記増大変化率指示量として取得するとともに同複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項１７】
請求の範囲１５又は請求の範囲１６に記載の空燃比気筒間インバランス判定装置において、
前記データ取得期間は、前記単位燃焼サイクル期間の自然数倍の期間に定められている空燃比気筒間インバランス判定装置。
【請求項１８】
請求の範囲１２乃至請求の範囲１４の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記単位燃焼サイクル期間よりも短い一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得し且つ前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、更に、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率を増大変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された前記増大変化率最大値の平均値を求め、同平均値を前記増大変化率指示量として取得し、且つ、
前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率を減少変化率最大値として選択するとともに複数の前記単位燃焼サイクル期間に対して選択された前記減少変化率最大値の平均値を求め、同平均値を前記減少変化率指示量として取得する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項１９】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記増大変化率指示量と前記減少変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成された空燃比気筒間インバランス判定装置。
【請求項２０】
請求の範囲２に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記空燃比変化率指示量として、前記検出空燃比変化率が負である場合の前記検出空燃比変化率の大きさに対応した値である減少変化率指示量を取得し、
前記インバランス判定用閾値として、前記検出空燃比変化率が正である場合の前記検出空燃比変化率の大きさに対応した値である増大変化率指示量を取得し、
前記減少変化率指示量と前記増大変化率指示量との差の絶対値が所定の閾値以上であるか否かを判定することにより、前記空燃比変化率指示量の大きさと前記インバランス判定用閾値との比較を行うように構成された空燃比気筒間インバランス判定装置。
【請求項２１】
請求の範囲１９又は請求の範囲２０に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記減少変化率指示量が前記増大変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態が発生したと判定し、
前記増大変化率指示量が前記減少変化率指示量よりも大きいとき前記少なくとも２気筒のうちの一つの気筒の空燃比が理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態が発生したと判定する、
ように構成された空燃比気筒間インバランス判定装置。
【請求項２２】
（削除）
【請求項２３】
請求の範囲１９乃至請求の範囲２１の何れか一項に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、前記単位燃焼サイクル期間において取得された複数の前記検出空燃比変化率のうちの正の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値を前記増大変化率指示量として取得するとともに同複数の検出空燃比変化率のうちの負の値を有する変化率の中からその大きさが最大である検出空燃比変化率に応じた値を前記減少変化率指示量として取得するように構成された空燃比気筒間インバランス判定装置。
【請求項２４】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率の大きさが所定の有効判定閾値以上であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用し、前記取得された検出空燃比変化率の大きさが所定の有効判定閾値未満であるときその検出空燃比変化率を前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２５】
請求の範囲１に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、前記サンプリング期間よりも長いデータ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが所定の有効判定閾値以上である検出空燃比変化率のデータの数を表す有効データ数を前記空燃比変化率指示量の一つとして取得するとともに、同データ取得期間において取得された複数の前記検出空燃比変化率のうちその大きさが同有効判定閾値未満である検出空燃比変化率のデータの数を表す無効データ数を前記空燃比変化率指示量の他の一つとして取得し、
前記有効データ数と前記無効データ数とに基づいて前記空燃比気筒間インバランス状態が発生しているか否かを判定するように構成された空燃比気筒間インバランス判定装置。
【請求項２６】
請求の範囲２５に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
前記有効データ数が、前記有効データ数と前記無効データ数との和である全データ数に基づいて変化するデータ数閾値よりも多いとき、前記空燃比気筒間インバランス状態が発生していると判定するように構成された空燃比気筒間インバランス判定装置。
【請求項２７】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出し、且つ、その検出したリーンピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２８】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出し、且つ、その検出したリッチピーク時点の前又は後の所定時間内に取得された前記検出空燃比変化率を、前記空燃比変化率指示量を取得するためのデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項２９】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が正の値から負の値へと変化した時点をリーンピーク時点として検出するとともに、連続して検出される二つのリーンピーク時点間の時間であるリーンピーク・リーンピーク時間が閾値時間よりも短い場合、その二つのリーンピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【請求項３０】
請求の範囲２又は請求の範囲３に記載の空燃比気筒間インバランス判定装置において、
前記インバランス判定手段は、
一定のサンプリング期間が経過する毎に前記空燃比センサ出力を取得するとともに、前記サンプリング期間を挟んで連続して取得された二つの前記空燃比センサ出力のそれぞれにより表される空燃比の差を前記検出空燃比変化率として取得し、且つ、
前記取得された検出空燃比変化率が負の値から正の値へと変化した時点をリッチピーク時点として検出するとともに、連続して検出される二つのリッチピーク時点間の時間であるリッチピーク・リッチピーク時間が閾値時間よりも短い場合、その二つのリッチピーク時点間において取得された前記検出空燃比変化率を空燃比変化率指示量のデータとして使用しないように構成された空燃比気筒間インバランス判定装置。
【国際調査報告】
2011001539.tif 000050
2011001539.tif 000051
2011001539.tif 000052
2011001539.tif 000053