(57)【要約】      （修正有）【課題】良好な精度を維持しつつ、より簡単に、気筒間において空燃比がばらついているかどうかを判断する手法を提案すると共に、判断の精度を、排気通路を通過する排ガスの体積流量の変動に依存することなく良好に維持する。【解決手段】複数の気筒を備える内燃機関の制御装置は、吸入空気量に対し大気圧に基づいて体積補正を行うことにより、排気通路に流れる排気の体積流量の大きさを反映した排気流量を算出する。また、検出された空燃比を示す信号から、内燃機関の回転数の０．５次の周波数成分を抽出するようフィルタリングする。該フィルタリングされた信号を所定期間にわたって積算し、積算値を算出する。積算値を算出するたびに排気流量に応じて補正し、補正済み積算値を算出する。所定期間経過後、補正済み積算値が所定のしきい値より大きければ、複数の気筒間において空燃比がばらついている状態が生じていると判断する。【選択図】図７
2011252412.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を備える内燃機関の制御装置であって、
前記内燃機関の空燃比を検出する検出手段と、
前記内燃機関の吸気通路に設けられ、吸入空気量を検出する吸入空気量検出手段と、
大気圧を検出する手段と、
気筒間の空燃比のばらつきを診断する第１の診断手段と、を備え、  該第１の診断手段は、さらに、
前記検出された吸入空気量に対し、少なくとも前記検出された大気圧に基づいて体積補正を行うことにより、該内燃機関の排気通路を流れる排気の体積流量の大きさを反映した排気流量を算出する排気流量算出手段と、
前記検出された空燃比を示す信号から、前記内燃機関の回転数の０．５次の周波数成分を抽出するよう、該信号をバンドパスフィルタでフィルタリングするフィルタリング手段と、
前記フィルタリングされた信号を所定期間にわたって積算し、積算値を算出する積算手段と、
前記積算値を算出するたびに、該積算値を、前記算出された排気流量に応じて補正し、補正済み積算値を算出する補正手段と、
前記所定期間経過後、前記補正済み積算値が所定のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する判断手段と、を備える、
制御装置。
【請求項２】
さらに、
前記内燃機関の吸気管圧力を検出する手段を備え、
前記排気流量算出手段は、前記検出された吸入空気量に対し、前記吸気管圧力と前記大気圧の比からなる体積変化係数で補正することにより、前記排気流量を算出する、
請求項１に記載の制御装置。
【請求項３】
さらに、前記内燃機関の点火時期が進角側から遅角側に向かうにつれて前記補正済み積算値が小さくなるように、前記排気流量、前記積算値、または前記補正済み積算値を該点火時期に応じて補正することと、前記内燃機関の点火時期が進角側から遅角側に向かうにつれて前記しきい値が大きくなるように、該しきい値を該点火時期に応じて補正することと、のいずれか一方を行う、
請求項１または２に記載の制御装置。
【請求項４】
さらに、
気筒間の空燃比のばらつきを診断する第２の診断手段と、
前記吸入空気量検出手段によって検出された吸入空気量の学習が完了していれば、前記第１の診断手段による診断を行い、該学習が完了していなければ、前記第２の診断手段による診断を行う切り換え手段と、を備え、
該第２の診断手段は、さらに、
目標空燃比が所定の周期で変動するよう、該目標空燃比を設定する目標空燃比設定手段と、
前記検出された空燃比を示す信号から、内燃機関の回転数の０．５次の周波数成分を抽出するよう、該信号を第１のバンドパスフィルタでフィルタリングする第１のフィルタリング手段と、
前記第１のバンドパスフィルタでフィルタリングされた信号を所定期間にわたって積算し、第１の積算値を算出する第１の積算手段と、
前記検出された空燃比を示す信号から、前記目標空燃比が変動する前記所定の周期に対応する周波数成分を抽出するよう、該信号を第２のバンドパスフィルタでフィルタリングする第２のフィルタリング手段と、
前記第２のバンドパスフィルタでフィルタリングされた信号を前記所定期間にわたって積算し、第２の積算値を算出する第２の積算手段と、
前記所定期間経過後、前記第１の積算値および前記第２の積算値に基づいて、前記複数の気筒間において空燃比がばらついているか否かを判断する判断手段と、を備える、
請求項１から３のいずれかに記載の制御装置。
【請求項５】
前記吸入空気量検出手段によって検出された吸入空気量の、前記内燃機関の運転状態に基づく基準吸入空気量に対する差が所定値以下であれば、前記学習が完了したとして、該検出された吸入空気量に対し、該差を補償するよう補正した吸入空気量を用いて、前記第１の診断手段による診断を行い、該差が該所定値より大きければ、該学習が完了してないとして、前記第２の診断手段による診断を行う、
請求項４に記載の制御装置。
【請求項６】
さらに、前記内燃機関の回転数が所定範囲内にあり、かつ前記算出された排気流量が所定値より大きいとの条件を満たすかどうかを判断する手段を備え、
前記条件が満たされたならば、前記第１の診断手段における前記フィルタリング手段によるフィルタリング、前記積算手段による積算、前記補正手段による補正、および前記判断手段による判断を許可する、
請求項１から５のいずれかに記載の制御装置。
【請求項７】
前記所定期間中に、或る周期で前記条件が満たされなくなったならば、前記積算の処理を禁止して、前回の周期で算出された積算値を保持し、その後、該所定の条件が満たされたことに応じて、該保持された積算値を用いて前記積算の処理を再開する、
請求項６に記載の制御装置。
【請求項８】
前記補正手段は、前記積算値を、前記算出された排気流量に応じて補正することに代えて、前記所定のしきい値を、該算出された排気流量に応じて補正し、
前記判断手段は、前記所定期間経過後、前記積算値が、該補正したしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する、
請求項１から７のいずれかに記載の制御装置。
【請求項９】
前記第２の診断手段における前記判断手段は、前記所定期間経過後、前記第１の積算値を前記第２の積算値で除算した値が所定のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する、
請求項４から８のいずれかに記載の制御装置。
【請求項１０】
前記第２の診断手段における前記判断手段は、前記所定期間経過後、前記第１の積算値が、前記第２の積算値に基づいて設定されるしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する、
請求項４から８のいずれかに記載の制御装置。
【請求項１１】
さらに、前記第１の診断手段は、
前記検出された空燃比を示す信号から、前記内燃機関の回転数の１次の周波数成分を抽出するよう、該信号を第３のバンドパスフィルタでフィルタリングする手段と、
前記第３のバンドパスフィルタによってフィルタリングされた信号を所定期間にわたって積算し、第３の積算値を算出する積算手段と、を備え、
前記第１の診断手段の前記判断手段は、前記第３の積算値を算出するたびに前記算出された排気流量に応じて補正した補正済み第３の積算値が、前記所定期間経過後、所定の第２のしきい値より大きければ、または、前記第３の積算値が、前記所定期間経過後、前記算出された排気流量に応じて補正した該第２のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する、
請求項１から１０のいずれかに記載の制御装置。
【請求項１２】
さらに、前記第２の診断手段は、
前記検出された空燃比を示す信号から、前記内燃機関の回転数の１次の周波数成分を抽出するよう、該信号を第４のバンドパスフィルタでフィルタリングする手段と、
前記第４のバンドパスフィルタでフィルタリングされた信号を前記所定期間にわたって積算し、第４の積算値を算出する手段と、を備え、
前記第２の診断手段の前記判断手段は、前記所定期間経過後、前記第４の積算値を前記第２の積算値で除算した値が所定のしきい値より大きければ、または、前記第４の積算値が、前記第２の積算値に基づいて設定されるしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する、
請求項４から１１のいずれかに記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の気筒間の空燃比の不均衡（imbalance）を判断するための装置に関する。
【背景技術】
【０００２】
複数の気筒を備える内燃機関において、気筒間で混合気の空燃比がばらつくと、排ガスを浄化する三元触媒の浄化率が低下し、エミッションが悪化するおそれがある。
【０００３】
エミッションを悪化させるものとして失火があるが、下記の特許文献１では、空燃比センサの出力平均値および出力振れ幅に基づいて失火の生じた気筒を特定する手法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−１８９３７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数の気筒間において空燃比がばらついているかどうかを、より効率的かつ良好な精度で判断することができれば、該ばらつきを補償する制御の効率性および精度を向上させることができる。
【０００６】
他方、排気通路を通過する排ガスの体積流量の変動によって、空燃比センサの応答特性がばらつくおそれがあり、よって、該空燃比のばらつきの判断の精度が低下するおそれがある。
【０００７】
したがって、この発明の一つの目的は、良好な精度を維持しつつ、より簡単に、気筒間において空燃比がばらついているかどうかを判断する手法を提案すると共に、該判断の精度を、排気通路を通過する排ガスの体積流量の変動に依存することなく良好に維持することである。
【課題を解決するための手段】
【０００８】
この発明の一つの側面によると、複数の気筒を備える内燃機関の制御装置は、前記内燃機関の空燃比を検出する検出手段（１６、５２、６３）と、前記内燃機関の吸気通路に設けられ、吸入空気量を検出手段（８）と、大気圧を検出する手段（１２）と、気筒間の空燃比のばらつきを診断する第１の診断手段（４２）と、を備える。該第１の診断手段は、さらに、前記検出された吸入空気量に対し、少なくとも前記検出された大気圧に基づいて体積補正を行うことにより、該内燃機関の排気通路を流れる排気の体積流量の大きさを反映した排気流量を算出する排気流量算出手段（５０）と、前記検出された空燃比を示す信号（ＫＡＣＴ）から、前記内燃機関の回転数の０．５次の周波数成分を抽出するよう、該信号をバンドパスフィルタでフィルタリングするフィルタリング手段（５３）と、前記フィルタリングされた信号を所定期間にわたって積算し、第１の積算値を算出する積算手段（５４）と、前記積算値を算出するたびに、前記算出された排気流量に応じて補正し、補正済み積算値を算出する補正手段（５５）と、前記所定期間経過後、前記補正済み積算値が所定のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する判断手段（５６）と、を備える。
【０００９】
複数の気筒のうちのいずれかの気筒の空燃比と他の気筒の空燃比との間に不均衡がある場合、または、燃料の噴射が連続する２つの気筒の空燃比と他の気筒の空燃比との間に不均衡がある場合には、空燃比センサから検出される空燃比を示す信号において、エンジン回転数の０．５次周波数成分における値が高い。この発明は、この知見に鑑みてなされたものであり、検出された該空燃比を示す信号から、エンジン回転数の０．５次周波数成分を抽出し、該抽出した周波数成分の大きさを調べることにより、気筒間において空燃比の不均衡（ばらつき）が生じているかどうかを簡単に調べることができる。
【００１０】
また、排気通路を通過する排気の体積流量の変動によって、空燃比センサの応答性に影響を及ぼすおそれがあるが、この発明によれば、吸入空気量を体積補正することにより、該排気の体積流量の大きさを表す排気流量を算出して、これに応じて積算値を補正するので、このような変動が該空燃比のばらつきの判断に影響するのを防止することができる。したがって、判断の精度を向上させることができる。
【００１１】
この発明の一実施形態では、前記内燃機関の吸気管圧力を検出する手段（９）をさらに備え、前記排気流量算出手段（５０）は、前記検出された吸入空気量に対し、前記吸気管圧力と前記大気圧の比からなる体積変化係数で補正することにより、前記排気流量を算出する。
【００１２】
この発明によれば、大気圧および吸気管圧力に依存した体積変化を示す係数を用いるので、現在の排気流量をより良好な精度で算出することができ、よって、補正の精度を高めることができる。したがって、積算値を、より正確に補正することができる。
【００１３】
この発明の一実施形態では、前記内燃機関の点火時期が進角側から遅角側に向かうにつれて前記補正済み積算値が小さくなるように、前記排気流量、前記積算値、または前記補正済み積算値を該点火時期に応じて補正し、または、前記内燃機関の点火時期が進角側から遅角側に向かうにつれて前記しきい値が大きくなるように、該しきい値を該点火時期に応じて補正する（図１３）。
【００１４】
この発明によれば、点火時期に応じた補正を行うので、点火時期の変化に起因して生じうる排気の体積流量の変動ひいては補正済み積算値の変動を補償することができる。したがって、より正確に、気筒間において空燃比のばらつきが生じているかどうかを判断することができる。
【００１５】
また、この発明の一実施形態では、さらに、気筒間の空燃比のばらつきを診断する第２の診断手段（４３）と、前記吸入空気量検出手段によって検出された吸入空気量の学習が完了していれば、前記第１の診断手段による診断を行い、該学習が完了していなければ、前記第２の診断手段による診断を行う切り換え手段（４１）と、を備える。該第２の診断手段は、さらに、目標空燃比が所定の周期で変動するよう、該目標空燃比を設定する目標空燃比設定手段（６２）と、前記検出された空燃比を示す信号から、内燃機関の回転数の０．５次の周波数成分を抽出するよう、該信号を第１のバンドパスフィルタでフィルタリングする第１のフィルタリング手段（６４）と、前記第１のバンドパスフィルタでフィルタリングされた信号を所定期間にわたって積算し、第１の積算値を算出する第１の積算手段（６５）と、前記検出された空燃比を示す信号から、前記目標空燃比が変動する前記所定の周期に対応する周波数成分を抽出するよう、該信号を第２のバンドパスフィルタでフィルタリングする第２のフィルタリング手段（６６）と、前記第２のバンドパスフィルタでフィルタリングされた信号を前記所定期間にわたって積算し、第２の積算値を算出する第２の積算手段（６７）と、前記所定期間経過後、前記第１の積算値および前記第２の積算値に基づいて、前記複数の気筒間において空燃比がばらついているか否かを判断する判断手段（７２）と、を備える。
【００１６】
この発明によれば、エアフローメータのような吸入空気量検出手段の出力の学習が完了していれば、補正を用いる第１の診断によって、比較的低負荷の演算で該空燃比のばらつきの診断を実現することができる。他方、該学習が完了していなくても、第２の診断を用いることにより、該空燃比のばらつきの診断を実現することができるので、診断の確実性を高めることができる。
【００１７】
この発明の一実施形態では、前記吸入空気量検出手段によって検出された吸入空気量の、前記内燃機関の運転状態に基づく基準吸入空気量に対する差が所定値以下であれば、前記学習が完了したとして、該検出された吸入空気量に対し、該差を補償するよう補正した吸入空気量を用いて、前記第１の診断手段による診断を行い、該差が該所定値より大きければ、該学習が完了してないとして、前記第２の診断手段による診断を行う、こうして、エアフローメータのような吸入空気量検出手段の出力の劣化が小さければ、第１の診断を用いて診断を行うことができ、該出力の劣化が大きければ、第２の診断を用いて診断を行うことができる。
【００１８】
この発明の一実施形態によると、前記内燃機関の回転数が所定範囲内にあり、かつ前記算出された排気流量が所定値より大きいとの条件が満たされるかどうかを判断する手段（５１）を備え、前記条件が満たされたならば、前記第１の診断手段（４２）における前記フィルタリング手段によるフィルタリング、前記積算手段による積算、前記補正手段による補正、および前記判断手段による判断を許可する。
【００１９】
運転状態の領域によっては、排ガスボリュームの不足や空燃比センサの応答性の限界等によって、良好な精度で空燃比のばらつきの衡判断を行うのが難しい場合がある。したがって、このような場合には、該判断を禁止する。こうすることにより、空燃比センサの応答性が確保される運転状態において空燃比のばらつきを判断することができる。
【００２０】
この発明の一実施形態では、前記所定期間中に、或る周期で前記条件が満たされなくなったならば、前記積算の処理を禁止して、前回の周期で算出された積算値を保持し、その後、該条件が満たされたことに応じて、該保持された積算値を用いて該積算の処理を再開する。こうして、積算処理を実行している期間中に、たとえば運転状態の変動等によって所定の条件を満たさなくなった場合でも、積算処理を一時的に停止した後に該積算処理を再開するので、空燃比のばらつきの判断結果を得ることができる。
【００２１】
この発明の他の実施形態では、前記補正手段は、前記第１の積算値を、前記算出された排気流量に応じて補正することに代えて、前記所定のしきい値を、該算出された排気流量に応じて補正し（５７）、前記判断手段は、前記所定期間経過後、前記第１の積算値が、該補正したしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する（図１４）。
【００２２】
この発明の一実施形態では、前記第２の診断手段における前記判断手段（７２）は、前記所定期間経過後、前記第１の積算値を前記第２の積算値で除算した値が所定のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する（図１５）。また、他の実施形態では、前記第２の診断手段における前記判断手段（７２）は、前記所定期間経過後、前記第１の積算値が、前記第２の積算値に基づいて設定されるしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する（図１９）。こうして、第２の積算値に応じた正規化、ないし第２の積算値に応じたしきい値設定により、空燃比検出手段の応答性が劣化している状態でも、良好な精度で気筒間において空燃比のばらつきが生じているかどうかを調べることができる。
【００２３】
この発明の一実施形態では、さらに、前記第１の診断手段（４２）は、前記検出された空燃比を示す信号から、前記内燃機関の回転数の１次の周波数成分を抽出するよう、該信号を第３のバンドパスフィルタでフィルタリングする手段（１５３）と、前記第３のバンドパスフィルタによってフィルタリングされた信号を所定期間にわたって積算し、第３の積算値を算出する積算手段（１５４）と、を備える。前記第１の診断手段の前記判断手段（５６）は、前記第３の積算値を算出するたびに前記算出された排気流量に応じて補正した補正済み第３の積算値が、前記所定期間経過後、所定の第２のしきい値より大きければ、または、前記第３の積算値が、前記所定期間経過後、前記算出された排気流量に応じて補正した該第２のしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する。
【００２４】
また、この発明の一実施形態では、さらに、前記第２の診断手段（４３）は、前記検出された空燃比を示す信号から、前記内燃機関の回転数の１次の周波数成分を抽出するよう、該信号を第４のバンドパスフィルタでフィルタリングする手段（１６４）と、前記第４のバンドパスフィルタでフィルタリングされた信号を前記所定期間にわたって積算し、第４の積算値を算出する手段（１６５）を備える。前記第２の診断手段の前記判断手段（７２）は、前記所定期間経過後、前記第４の積算値を前記第２の積算値で除算した値が所定のしきい値より大きければ、または、前記第４の積算値が、前記第２の積算値に基づいて設定されるしきい値より大きければ、前記複数の気筒間において空燃比がばらついている状態が生じていると判断する。
【００２５】
内燃機関の形態によっては、燃料噴射が不連続の２つの気筒の空燃比と他の気筒の空燃比との間に不均衡がある場合には、検出された空燃比を示す信号において、エンジン回転数の１次の周波数成分が高い値として現れる。したがって、０．５次だけでなく１次の周波数成分を抽出することにより、このような形態の内燃機関についても、第１および第２の診断を用いて、気筒間で空燃比にばらつきが生じているかどうかを簡単な手法で見極めることができる。
【図面の簡単な説明】
【００２６】
【図１】この発明の一実施形態に従う、エンジンおよびその制御装置の全体的な構成を示す図。
【図２】気筒間において空燃比が均衡されている状態および不均衡な状態の検出当量比ＫＡＣＴを示す図。
【図３】この発明の一実施形態に従う、直列４気筒のエンジンおよびＶ型６気筒のエンジンの空燃比センサの配置を示す図。
【図４】直列４気筒エンジンにおける空燃比のバランスおよびインバランス状態における検出当量比の周波数スペクトルを示す図。
【図５】Ｖ型６気筒エンジンにおける空燃比のバランスおよびインバランス状態における検出当量比の周波数スペクトルを示す図。
【図６】この発明の一実施形態に従う、気筒間における空燃比のインバランス状態を判断する制御装置のブロック図。
【図７】この発明の一実施形態に従う、第１の診断処理部のブロック図。
【図８】この発明の一実施形態に従う、空燃比センサの応答特性に基づく補正マップを説明するための図。
【図９】この発明の一実施形態に従う、フィルタ済み当量比、積算値および結果値の一例を示す図。
【図１０】この発明の一実施形態に従う、しきい値を設定する手法を説明するための図。
【図１１】この発明の一実施形態に従う、気筒間の空燃比がバランス状態およびインバランス状態の時のフィルタ済み当量比および積算値を示す図。
【図１２】この発明の一実施形態に従う、平地と高地における、吸入空気量に対する結果値の一例を示す図。
【図１３】この発明の一実施形態に従う、点火時期に応じた排気温度の変化、および点火時期に応じた補正係数を示す図。
【図１４】この発明の一実施形態に従う、第１の診断処理部の代替のブロック図。
【図１５】この発明の一実施形態に従う、第２の診断処理部のブロック図。
【図１６】この発明の一実施形態に従う、気筒間における空燃比のインバランス状態について第２の診断が可能な領域を説明するための図。
【図１７】この発明の一実施形態に従う、診断モードで設定される、所定の周期で変動する目標空燃比の一例を示す図。
【図１８】この発明の一実施形態に従う、第２の診断における、空燃比センサの応答性が良好な場合（ａ）と劣化した場合（ｂ）との、第１の積算値、第２の積算値および結果値の大きさを概略的に示す図。
【図１９】この発明の一実施形態に従う、第２の診断処理部の代替のブロック図。
【図２０】この発明の一実施形態に従う、第２の診断の代替形態におけるしきい値を設定するためのマップ。
【図２１】この発明の他の実施形態に従う、第１の診断処理部のブロック図。
【図２２】この発明の他の実施形態に従う、第２の診断処理部のブロック図。
【図２３】この発明の一実施形態に従う、ＡＦＭの学習プロセスのフローチャート。
【図２４】この発明の一実施形態に従う、診断切り換えプロセスのフローチャート。
【図２５】この発明の一実施形態に従う、第１の診断における、診断条件を判定するプロセスのフローチャート。
【図２６】この発明の一実施形態に従う、第１の診断における、空燃比のバランスおよびインバランス状態を診断するプロセスのフローチャート。
【図２７】この発明の一実施形態に従う、第２の診断における、目標空燃比を設定するプロセスのフローチャート。
【図２８】この発明の一実施形態に従う、第２の診断における、空燃比のバランスおよびインバランス状態を診断するプロセスのフローチャート。
【図２９】この発明の一実施形態に従う、第１の診断に従う、空燃比がバランス状態にある場合のシミュレーション結果の一例を示す図。
【図３０】この発明の一実施形態に従う、第１の診断に従う、空燃比がインバランス状態にある場合のシミュレーション結果の一例を示す図。
【図３１】この発明の一実施形態に従う、第１の診断に従う、空燃比がインバランス状態にある場合のシミュレーション結果の一例を示す図。
【発明を実施するための形態】
【００２７】
次に図面を参照してこの発明の実施の形態を説明する。図１は、この発明の一実施形態に従う、内燃機関（以下、エンジンと呼ぶ）およびその制御装置の全体的な構成図である。
【００２８】
電子制御ユニット（以下、「ＥＣＵ」）という）１は、中央演算処理装置（ＣＰＵ）およびメモリを備えるコンピュータである。メモリには、車両の様々な制御を実現するためのコンピュータ・プログラムおよび該プログラムの実施に必要なデータ（マップを含む）を格納することができる。ＥＣＵ１は、車両の各部から信号を受取ると共に、該メモリに記憶されたデータおよびプログラムに従って演算を行い、車両の各部を制御するための制御信号を生成する。
【００２９】
エンジン２は、複数の気筒を有するエンジンである。エンジン２には、吸気通路３および排気通路４が連結されている。吸気通路３には、スロットル弁５が設けられている。スロットル弁５の開度は、ＥＣＵ１からの制御信号に従って制御される。スロットル弁５の開度を制御することにより、エンジン２に吸入される空気の量を制御することができる。スロットル弁５には、スロットル弁の開度を検出するスロットル弁開度（θＴＨ）センサ６が連結されており、この検出値は、ＥＣＵ１に送られる。
【００３０】
燃料噴射弁７が、エンジン２とスロットル弁５との間であって、エンジン２の吸気弁（図示せず）の少し上流側に、気筒ごとに設けられている。燃料噴射弁７は、燃料タンク２９に接続されており、燃料タンク２９からの燃料を噴射する。燃料噴射弁７の燃料噴射時期および燃料噴射量は、ＥＣＵ１からの制御信号に従って変更される。
【００３１】
スロットル弁５の上流には、吸気通路３を流れる空気の量を検出するエアフローメータ（ＡＦＭ）８が設けられている。
【００３２】
スロットル弁５の下流には、吸気管圧力（ＰＢ）センサ９が設けられており、吸気通路３内の圧力（絶対圧）ＰＢを検出する。吸気管圧力センサ９の下流には吸気温（ＴＡ）センサ１０が設けられており、吸気通路３内の温度を検出する。これらの検出値は、ＥＣＵ１に送られる。また、エンジン２には、エンジンの水温ＴＷを検出するためのエンジン水温センサ１１が設けられており、該センサの検出値は、ＥＣＵ１に送られる。さらに、大気圧ＰＡを検出するための大気圧センサ１２がエンジン外部の任意の位置に設置されており、該センサの検出値はＥＣＵ１に送られる。
【００３３】
ＥＣＵ１には、エンジン１のクランク軸の回転角度を検出するクランク角センサ１３が接続されており、該センサの検出値はＥＣＵ１に供給される。クランク角センサ１３は、所定のクランク角度（たとえば３０度）毎に１パルス（ＣＲＫパルス）を発生し、該パルスにより、クランク軸の回転角度位置を特定することができる。ＥＣＵ１は、該ＣＲＫパルスに基づいてエンジン回転数ＮＥを算出する。また、クランク角センサ１３は、ピストンの上死点（ＴＤＣ）位置に関連したクランク角度で、ＴＤＣ信号をＥＣＵ１に出力する。
【００３４】
排気通路４には、たとえば種々の触媒によって実現されることのできる排ガス浄化装置（ＣＡＴ）１５が設けられており、各気筒から排気通路４に流出される排ガスを浄化して、大気に放出する。
【００３５】
排ガス浄化装置１５の上流には、空燃比を検出する手段として空燃比（ＬＡＦ）センサ１６が設けられている。空燃比センサ１６は、混合気のリーンからリッチにわたる領域の空燃比をリニアに検出してＥＣＵ１に送る。この実施例では、空燃比センサ１６の出力から、検出当量比ＫＡＣＴが検出される。検出当量比ＫＡＣＴは、空燃比を示す信号であり、「理論空燃比／空燃比」によって算出される。検出当量比ＫＡＣＴの値が１より小さければ、空燃比がリーンであることを示し、１より大きければリッチであることを示す。
【００３６】
ＥＧＲ通路１８が、吸気通路３と排気通路４の間に接続されており、ＥＧＲ通路１８を介して、排気通路４の排ガスを吸気通路３に還流し、各気筒に供給することができる。還流率（還流する排ガスの量／新気の吸入空気量）は、ＥＧＲ弁１９により調整することができる。ＥＧＲ弁１９の開度は、ＥＣＵ１からの制御信号に従って変更される。
【００３７】
燃料タンク２９は、チャージ通路２０を介してキャニスタ２１に接続されている。キャニスタ２１は、燃料タンク２９内で発生する蒸発燃料を吸着する吸着剤２２を内蔵すると共に、外気取り込み口２３を有する。
【００３８】
キャニスタ２１は、パージ通路２７を介して吸気通路３のスロットル弁５の下流側に接続されている。パージ通路２７にはパージ制御弁２８が設けられている。パージ制御弁２８は、ＥＣＵ１からの制御信号に従って、デューティ制御される。制御信号すなわちデューティ信号で表される開弁（オン）時間と閉弁（オフ）時間の比率（デューティ比）を変更することにより、パージ制御弁２８の開弁量を連続的に制御することができる。こうして、パージ制御弁２８は、パージ通路２７を吸気通路３に向けて流れる蒸発燃料の量を制御する。
【００３９】
以上のように、燃料噴射弁７からの燃料、ＥＧＲ通路１８からのＥＧＲガス、パージ通路２７からの蒸発燃料、および吸気通路３からの空気の混合気が、エンジン２の燃焼室内で燃焼する。
【００４０】
なお、図示していないが、各気筒の吸気バルブのリフト量および位相を変更可能な可変動弁機構を備えることができる。リフト量および位相は、連続的に変更可能なようにしてもよいし、段階的（ステップ状）に変更可能なようにしてもよい。リフト量および位相は、ＥＣＵ１からの制御信号に従って制御される。
【００４１】
ＥＣＵ１は、上記各種センサからの入力信号に応じて、メモリに記憶されたプログラムおよびデータ（マップを含む）に従い、エンジン２の運転状態を検出すると共に、スロットル弁５、燃料噴射弁７、ＥＧＲ弁１９およびパージ制御弁２８等を制御するための制御信号を生成する。
【００４２】
ここで、本願発明の、複数の気筒間における空燃比のばらつきを判断する手法の前提となる考え方を説明する。
【００４３】
図２を参照すると、直列４気筒エンジンにおいて、空燃比センサ１６によって検出された空燃比を当量比ＫＡＣＴで表したグラフが示されている。前述したように、検出当量比ＫＡＣＴは、値１より大きければ混合気がリッチであることを示し、値１より小さければ混合気がリーンであることを示す。図に示す１サイクルは、第１気筒〜第４気筒について燃焼が順番に実行されるサイクル（より具体的には、第１気筒―＞第３気筒―＞第４気筒―＞第２気筒の順番）を示し、この実施例では、７２０度のクランク角度期間に対応する。したがって、クランク角度１８０度毎に、いずれか１つの気筒の燃焼が行われる。
【００４４】
（ａ）は、４気筒間において空燃比が均衡されている状態（バランス状態とも呼ばれる）を示しており、検出当量比ＫＡＣＴが、すべての気筒において、矢印１０１で示すような所定のレンジ（この例では、０．０１のレンジ）内に収まっている。
【００４５】
（ｂ）は、４気筒間において空燃比がばらついている、すなわち不均衡になっている状態（インバランス状態とも呼ばれる）を示しており、１サイクルにおいて、検出当量比ＫＡＣＴが、（ａ）に示すような所定のレンジ内に収まっていない部分がある。この例では、第１気筒のみが、他の気筒よりも２０％だけ空燃比がリッチになるよう燃料が噴射された場合を示している。このように、インバランス状態は、少なくとも１つの気筒についての空燃比と、他の気筒の空燃比との間に不均衡（ずれ）がある状態を示し、たとえば、燃料噴射弁７、パージ制御弁２８等を含む蒸発燃料を処理する装置、ＥＧＲ制御弁１９等を含むＥＧＲガスを処理する装置に関する構成要素の不具合等に起因して起こり得る。
【００４６】
図から明らかなように、バランス状態においては、検出当量比ＫＡＣＴに周期的な変動がほとんど生じないが、インバランス状態においては、周期的な変動が生じている。したがって、検出当量比ＫＡＣＴから、変動する周波数成分（変動成分）を抽出することにより、インバランス状態かどうかを判断することができる。
【００４７】
以下、直列４気筒エンジンとＶ型６気筒エンジンを例にあげて、インバランス状態を判断する手法の原理について説明する。
【００４８】
図３の（ａ）は、図１のエンジン２が、直列４気筒エンジンである場合の、空燃比（ＬＡＦ）センサ１６の配置を説明するための概略図である。このエンジンでは、４つの気筒２ａから２ｄが設けられ、吸気通路３の集合部３２で分岐された吸気管３ａから３ｄは各気筒に連結され、各気筒の排気管４ａ〜４ｂは、集合部３１において排気通路４に連結されている。空燃比センサ１６は、該排気通路４に設けられている。
【００４９】
図３の（ｂ）は、図１のエンジン２がＶ型６気筒エンジンである場合の、空燃比（ＬＡＦ）センサの配置を説明するための概略図である。このエンジンでは、第１のバンクおよび第２のバンクのそれぞれに３個の気筒２ａ〜２ｃおよび２ｄ〜２ｆが設けられている。第１のバンクについて、吸気通路３の集合部３２で分岐された吸気管３ａから３ｃが各気筒に連結され、各気筒からの排気管４ａから４ｃは、集合部３１ａにおいて排気通路３５ａに連結されており、該排気通路３５ａに１個の空燃比センサ１６ａが設けられている。第２のバンクについても、同様の構成を有する。
【００５０】
図４は、図３（ａ）に示されるような直列４気筒エンジンの場合を示し、当該エンジンでは、１サイクルの間（クランク角度７２０度期間）に、＃１―＞＃３―＞＃４―＞＃２の気筒の順番で燃料が噴射される。（ａ）は、気筒間において空燃比が均衡されている状態（バランス状態）の検出当量比ＫＡＣＴの周波数スペクトルを示す。横軸の「０．５次」は、エンジン回転数の０．５次周波数成分を示し、「１次」は、エンジン回転数の１次周波数成分を示す。
【００５１】
（ｂ）〜（ｄ）は、気筒間において空燃比が不均衡となっている状態（インバランス状態）を示し、（ｂ）は、第１の気筒のみをリッチにし、他の気筒をリーンにした場合、（ｃ）は、燃料噴射が連続する２つの気筒（この例では、第１および第３気筒）においてリッチにし、他の気筒をリーンにした場合、（ｄ）は、燃料噴射が不連続の２つの気筒（この例では、第１および第４の気筒であり、以下、対向２気筒と呼ぶ）においてリッチにし、他の気筒をリーンにした場合を示し、それぞれの場合について、リッチおよびリーンを示す信号、検出当量比ＫＡＣＴ、および検出当量比ＫＡＣＴの周波数スペクトルが示されている。
【００５２】
図に示されるように、（ｂ）のように１つの気筒のみについて空燃比がずれている場合には、エンジン回転数の０．５次周波数成分において出力が高くなっている。（ｃ）のように連続２気筒について空燃比がずれている場合にも、０．５次周波数成分において出力が高くなっている。（ｄ）のように対向２気筒について空燃比がずれている場合には、エンジン回転数の１次の周波数成分において出力が高くなっている。
【００５３】
仮に、エンジン回転数が１０００ｒｐｍとすると、１次周波数は、（１０００／６０）Ｈｚであり、よって、６０ミリ秒（クランク角度３６０度の期間＝１／２サイクル）の周期に対応し、０．５次周波数は、（１０００／１２０）Ｈｚであり、よって、１２０ミリ秒（クランク角度７２０度の期間＝１サイクル）の周期に対応する。エンジン回転数が３０００ｒｐｍの場合には、１次周波数は２０ミリ秒（クランク角度３６０度の期間）の周期に対応し、０．５次周波数は４０ミリ秒（クランク角度７２０度の期間）の周期に対応する。したがって、（ｂ）および（ｃ）の場合には、検出当量比ＫＡＣＴが１サイクルの周期で変動し、（ｄ）の場合には、検出当量比ＫＡＣＴが、２分の１サイクルの周期で変動する。
【００５４】
このように、直列４気筒のエンジンの場合には、エンジン回転数の０．５次周波数および１．０次周波数成分を空燃比センサの出力から抽出することにより、空燃比の不均衡に起因して変動する周波数成分を良好に抽出することができ、よってインバランス状態を判断することができる。
【００５５】
図５は、図３（ｂ）に示すようなＶ型６気筒型のエンジンの場合を示す。当該エンジンでは、１サイクルの間（クランク角度７２０度期間）に、＃１―＞＃４―＞＃２―＞＃５―＞＃３―＞＃６の気筒の順番で燃料が噴射される。前述したように、Ｖ型エンジンの場合には、バンクごとに空燃比センサが設けられるので、図には、第１〜第３気筒を備える第１のバンクについての検出当量比ＫＡＣＴの波形が示されている。当然ながら、第２のバンクについても同様のことがあてはまる。
【００５６】
（ａ）は、気筒間において空燃比が均衡されている状態（バランス状態）の検出当量比ＫＡＣＴの周波数スペクトルを示す。（ｂ）および（ｃ）は、気筒間において空燃比が不均衡となっている状態（インバランス状態）を示し、（ｂ）は、第１の気筒のみをリッチにし、他の気筒をリーンにした場合、（ｃ）は、燃料噴射が連続する２つの気筒（この例では、第１および第２気筒）においてリッチにし、他の気筒をリーンにした場合の、リッチおよびリーンを示す信号、検出当量比ＫＡＣＴ、および検出当量比ＫＡＣＴの周波数スペクトルを示す。１つのバンクの気筒数が３個であるので、図４（ｄ）のような対向２気筒のケースは存在しない。したがって、エンジン回転数の０．５次の周波数成分のみを抽出すれば、気筒間における空燃比のインバランス状態を判断することができる。
【００５７】
図６は、本願発明の一実施形態に従う、気筒間において空燃比がインバランス状態にあるかどうかを診断するための制御装置のブロック図を示す。各機能ブロックは、ＥＣＵ１に実現されることができる。
【００５８】
この実施形態では、２つの診断ルートを備えており、これらは、ＡＦＭ学習部４０によって実施される、吸入空気量を検出するために設けられたＡＦＭ（エアフローメータ）８の出力（検出値）の学習が完了しているか否かで切り換えられるようになっている。
【００５９】
ＡＦＭ８は、経年劣化や付着物等に起因して、その出力に“ずれ”が生じるおそれがある。そのため、ＡＦＭ学習部４０は、ＡＦＭ８の検出値についての学習を行う。該学習は、所定の学習条件を満たしたときに行われる。該学習は、安定した運転状態で行うのが好ましいため、該学習条件として、たとえば、以下のものを含めることができる。
【００６０】
１）アイドル運転状態であること
２）ＡＦＭ８が正常であること
３）ポンピングブレーキ操作等による２次エアの流入が無いこと
４）パージが停止していること（パージ制御弁２８が閉弁していること）
５）可変動弁機構を備えている場合には、吸気バルブの位相が所定位置（たとえば、最遅角された位置）であり、リフト量がゼロであること。
【００６１】
上記１）のように、アイドル運転状態であるのが好ましいが、代替的に、たとえばエンジン回転数が安定している定常の運転状態であってもよい。
【００６２】
学習条件が満たされたならば、ＡＦＭ学習部４０は、ＡＦＭ８の検出値Ｇａｉｒｃｙｌを取得する。他方、ＥＣＵ１のメモリ等には、吸気管圧力とエンジン回転数に対する基準吸入空気量が規定されたマップが予め格納されている。ＡＦＭ学習部４０は、吸気管圧力センサ９およびクランク角センサ１３を介して検出された現在の吸気管圧力ＰＢおよびエンジン回転数ＮＥに基づいて該マップを参照し、対応する基準吸入空気量を求め、以下の式に従い、学習比率（％）を算出する。
【数１】
2011252412.tif 000003
【００６３】
基準吸入空気量は、実際にエンジン２に吸入されているはずの空気量を示す。したがって、上記の学習比率は、ＡＦＭ８の検出値Ｇａｉｒｃｙｌの基準吸入空気量に対するずれの程度を表している。
【００６４】
好ましくは、式（１）における基準吸入空気量は、吸気温度および大気圧に基づいて密度補正したものが用いられる。これは、吸気温度および大気圧に基づいて、空気密度が変化するおそれがあるからである。マップにおける基準吸入空気量は、基準大気圧および基準吸気温度の状態下で規定されている。空気密度は、圧力に比例し、温度に反比例するため、学習時の大気圧が基準大気圧に対して高くなるほど、また学習時の吸気温度が基準吸気温度に対して低くなるほど、基準吸入空気量が大きくなるように密度補正する。
【００６５】
こうして算出された学習比率は、学習後のＡＦＭ８の検出値を補正するのに適用される。すなわち、ＡＦＭ８の検出値を学習比率で除算することにより算出した値を、ＡＦＭ８を介して検出された吸入空気量Ｇａｉｒｃｙｌとして用いる。
【００６６】
なお、ＡＦＭ８は、吸入空気量が低流量であるときに、その大きさが除々に減少するという特性を有しているため、吸入空気量が低流量であるときに限定して、上記学習比率による補正を実施するようにしてもよい。たとえば、エンジン回転数が所定値以下である場合に、該補正を実施することができる。
【００６７】
診断切り換え部４１は、学習した結果、１００％に対する学習比率の差の大きさ（すなわち、｜１００−学習比率（％）｜）が所定値（たとえば１０％）以下であれば、学習が完了したと判断して、ＡＦＭ８を介して検出された吸入空気量（前述したように、学習比率で補正した結果としてのＡＦＭ検出値）を用いて診断を行う第１の診断処理部４２を起動する。
【００６８】
他方、診断切り換え部４１は、学習条件が満たされなかったり等に起因して学習が完了しなかった場合、ＡＦＭ８の検出値は誤差を示す可能性があるので、ＡＦＭ８の検出値を用いることなく診断を行う第２の診断処理部４３を起動する。また、学習の結果、｜１００−学習比率（％）｜が上記所定値より大きければ、ＡＦＭ８の検出値の基準吸入空気量に対するずれが大きいことを示し、よって、ＡＦＭ８に劣化が生じている可能性がある。したがって、このような場合には、診断切り換え部４１は、学習が完了できなかったと判断し、第２の診断処理部４３を起動する。
【００６９】
第１の診断処理部４２は、空燃比センサ１６の応答特性に応じた補正を用いて、該診断（第１の診断と呼ぶ）を行う。該補正には、ＡＦＭ８によって検出されて上記のように学習比率で補正された吸入空気量を体積補正することで、空燃比センサ１６の配置されている排気通路４を通る空気（排気）の体積流量の大きさを反映した排気流量を算出することを含んでいる。排気流量を用いる診断であるので、車両が走行している場所の大気圧等に依存して排気通路を通る排気の体積流量に変動が生じても、より正確な診断を行うことができる。
【００７０】
第２の診断処理部４３は、第１の診断処理部４２によって実行される補正に代えて、目標空燃比を操作し、空燃比センサ１６から、当量比ＫＡＣＴの周波数成分を抽出した信号と、該目標空燃比の周波数成分を抽出した信号との比較を行うことで、該診断（第２の診断と呼ぶ）を行う。第２の診断では、ＡＦＭ８の検出値は不要であるが、目標空燃比を操作することを必要とするため、演算負荷は第１の診断に比べて高くなるおそれがある。したがって、ＡＦＭ８の検出値の学習が完了していれば、第１の診断処理部４２による診断を行い、該学習が完了していなければ、第２の診断処理部４３による診断を行う。
【００７１】
このように、第１および第２の診断の間で切り換えることにより、演算負荷を低減しつつ、ＡＦＭ８の出力に劣化が生じた場合でも診断を続行して該診断の確実性を向上させることができる。
【００７２】
以下、第１および第２の診断について、順次説明する。
【００７３】
図７は、図６の第１の診断処理部４２のより詳細な機能ブロックである。排気流量算出部５０は、ＡＦＭ８を介して検出されて上記のように学習比率で補正された吸入空気量（ｇ／秒）を、吸気管圧力センサ９および大気圧センサ１２によってそれぞれ検出された吸気管圧力ＰＢおよび大気圧ＰＡの比からなる体積補正係数で補正することにより、排気通路を通る排気の体積流量の大きさを反映した排気流量ＧＡＩＲＥＸ（ｇ／秒）を算出する。該排気流量ＧＡＩＲＥＸは、エンジンの負荷を表す指標として用いられるが、該排気流量ＧＡＩＲＥＸを用いる根拠、および具体的な算出手法については、後述される。
【００７４】
第１の診断条件判定部５１は、インバランス状態を見極めるための診断プロセスの実行を許可するための所定の条件が満たされるかどうかを、エンジンの運転状態に基づいて判断する。該所定の条件には、空燃比センサ１６の応答特性に依存した条件が含まれる。該応答特性は、主に、排ガスボリュームおよび空燃比センサ１６の応答性の限界に応じて決まり、排ガスボリュームおよび空燃比センサ１６の応答性の限界は、エンジン回転数ＮＥおよびエンジン負荷に基づいて決まる。この実施形態では、エンジン負荷として、前述した、排気流量算出部５０によって算出された排気流量ＧＡＩＲＥＸを用いる。
【００７５】
ここで、図８の（ａ）を参照すると、エンジン回転数ＮＥおよび排気流量ＧＡＩＲＥＸに基づく、空燃比センサの応答特性の概略が示されている。この例では、所定範囲のエンジン回転数を４つのレンジに分けており、ＮＥ１〜ＮＥ４に向かって回転数の値は高くなっている。また、所定範囲の排気流量ＧＡＩＲＥＸを４つのレンジに分けており、ＧＥＸ１からＧＥＸ４に向かって排気流量の値は高く、すなわち負荷が高くなっている。なお、ここで示すレンジの数は一例であり、他の数のレンジを設定してもよい。
【００７６】
低回転数および低負荷（低排気流量）の領域では、排ガスのボリューム（体積）が不足するため、空燃比センサの出力が小さい。また、高回転数の領域では、１サイクルの時間長が短いので、空燃比センサの出力が実際の空燃比変化に追従することが難しく（空燃比センサの応答性の限界領域である）、よって後続の診断が困難となるおそれがある。したがって、エンジンの現在の運転状態がこれらの領域にあるときには、診断プロセスの実行を禁止するのが好ましい。反対に、エンジンの現在の運転状態が、これらの領域以外の診断可能領域にあるときには、診断プロセスの実行を許可する。
【００７７】
診断プロセスの実行を許可するかどうかの上記所定の条件には、他の条件を含めることができ、この具体例については後述される。
【００７８】
上記の所定の条件が満たされたことに応じて、診断モードが開始する。診断モードは、所定期間にわたって継続する。図７に戻り、検出空燃比取得部５２は、空燃比センサ１６の出力を、後続のバンドパスフィルタ５３によるフィルタリング処理の周期に同期してサンプリングすることで、検出された空燃比すなわち当量比ＫＡＣＴを取得する。
【００７９】
バンドパスフィルタ５３は、該取得された当量比ＫＡＣＴから、エンジン回転数の０．５次の周波数成分を抽出するよう構成されている。当該バンドバスフィルタのフィルタ式の一例を、以下に示す。該フィルタは、この実施例では、再帰型デジタルフィルタとして実現される。ここで、ａ０からａＮおよびｂ１〜ｂＭは、シミュレーション等によって決定されることができるフィルタ係数を示す。ｘは、空燃比センサからの検出当量比ＫＡＣＴを示す。ｙは、フィルタの出力値を示す。ｎは、制御周期を示し、各制御周期の長さは、この実施例では、後続の積算および補正の周期と等しいか、またはそれ以下の長さを持つよう設定される。
【数２】
2011252412.tif 000004
【００８０】
検出当量比ＫＡＣＴがバンドパスフィルタ５３によってフィルタリングされることにより、フィルタ済み当量比が算出される。ここで、図９を参照すると、フィルタ済み当量比の一例が（ａ）に示されている。この例では、フィルタリングの周期は、その後に続く積算の周期に等しい。
【００８１】
図７に戻り、積算部５４は、前述したエンジン回転数の０．５次周波数に対応する周期毎に、該フィルタ済み当量比を積算して、積算値を算出する。具体的には、該周期毎にフィルタ済み当量比を受け取り、該フィルタ済み当量比を、積算値の前回値に加算することにより、積算値の今回値を算出する。こうして、図９の（ｂ）に示されるように、積算値は、該周期毎にステップ状に増加していく。積算値の初期値はゼロに設定されることができる。
【００８２】
補正部５５は、空燃比センサの現在の応答性に応じた補正係数Ｋで、該積算値を補正する。ここで、図８の（ｂ）を参照すると、診断可能領域では、空燃比センサの応答性（空燃比センサの出力の大きさ（振幅）で表される）が最大、大、中および小とランク付けされることができる。エンジン回転数が高くなるほど、１サイクルの時間長が短くなるので、空燃比センサの応答性は劣化する。また、排気流量が小さくなるほど、すなわち低負荷になるほど、排ガスボリュームが小さくなるので、応答性が劣化する。
【００８３】
このような応答性の違い（劣化程度）に応じて、所定期間後の積算値の大きさに違いが生じる。空燃比センサの応答性の劣化程度が大きいほど、所定期間後の積算値は小さくなる。該応答性の劣化の違いを補償するため、図８の（ｃ）に示すように、図８の（ｂ）の応答性のランク付けに従って、補正係数Ｋが割り振られる。応答性が最大の領域では、１．０の補正係数Ｋが割り振られ、よって、実質的な補正は行われない。応答性が小さくなるほど、値１よりも高い値の補正係数Ｋが割り振られ、よって、積算値は、大きくなるよう補正される。
【００８４】
図８の（ｃ）に示すような補正係数Ｋを、たとえばマップとしてＥＣＵ１のメモリに記憶することができる。補正部５５は、現在のエンジン回転数ＮＥおよび算出された排気流量ＧＡＩＲＥＸに基づいて該マップを参照し、対応する補正係数Ｋを取得し、上記の周期毎に、該補正係数Ｋを、今回の周期で算出された積算値に乗算することにより補正を実行する。
【００８５】
なお、該補正係数Ｋの取得も、該周期毎に行ってもよい。この場合、好ましくは、該周期中のエンジン回転数の平均値および排気流量の平均値に基づいて該マップを参照し、対応する補正係数を取得してもよい。平均値を用いることにより、周期中にエンジンの運転状態に変動が生じた場合でも、より適切な補正係数Ｋを選択することができる。
【００８６】
図に示す補正係数Ｋの値は一例であり、これらの値に限定されるものではない。また、図では、排気流量ＧＡＩＲＥＸおよびエンジン回転数ＮＥについて所定のレンジに分けて補正係数を設定しているが、このようなレンジ分けは、必ずしも必要とされない。たとえば、排気流量ＧＡＩＲＥＸと、エンジン回転数ＮＥと、補正係数Ｋとを、３次元マップ上に規定するようにしてもよい。
【００８７】
また、当該補正で補償される「劣化」は、その程度が比較的小さく、「故障」と判定されない程度のものを指す。「劣化」の程度が所定以上進むと（たとえば、空燃比センサ１６の出力が、本来出力すべき値（たとえば、目標空燃比値）に対して所定値以上の差を有する場合）、故障と判定されることとなり、この場合には補償は行われない（たとえば、後述する図２５のＳ２３）。
【００８８】
該補正により得られた値を、結果値と呼ぶ。空燃比センサの応答性に応じた補正係数で補正することにより、結果値を、該空燃比センサの応答性に依存しない値とすることができる。
【００８９】
再び図９を参照すると、結果値の一例が（ｃ）に示されている。時間ｔ０からｔ３にわたる期間では、補正係数Ｋとして値１．２が取得され、周期毎に、該補正係数Ｋを積算値に乗算することにより得られた結果値が示されている。時間ｔ３以降の期間では、補正係数Ｋとして値１．５が取得され、周期毎に、該補正係数Ｋを積算値に乗算することにより得られた結果値が示されている。（ａ）に示すように、時間ｔ１から開始する周期における時間ｔ２の時点で、エンジンの運転状態の変動に応じてフィルタ済み当量比の値に変動が生じている。時間ｔ２以降の期間の空燃比センサの応答性が、時間ｔ０〜ｔ２の期間の空燃比センサの応答性に比べて低下している。したがって、時間ｔ３から開始する次の周期では、より大きい値の補正係数Ｋが用いられ、これにより、（ｃ）に示すように、時間ｔ０〜ｔ３の領域における結果値の周期毎の増し分と、時間ｔ３以降の領域における結果値の周期毎の増し分とを同じにすることができる。こうして、空燃比センサの応答性に依存することなく、結果値を一定の増し分で増大させることができる。
【００９０】
積算部５４および補正部５５による周期毎の処理は、前述したように、診断モードである所定期間にわたって行われる。該所定期間は、予め設定されることができる（たとえば、２０周期に相当する期間であり、エンジン回転数が３０００ｒｐｍの場合には、０．８秒）。
【００９１】
図７に戻り、診断部５６は、該所定期間が経過した後の結果値を、所定のしきい値と比較する。前述したように、結果値は、空燃比センサの応答性に依存しない値であるので、しきい値は、該応答性とは関係なく一定の値に設定されることができる。該結果値がしきい値より大きければ、検出当量比ＫＡＣＴの変動が大きいことを示すので、気筒間において空燃比がインバランス状態にあると判断する。該結果値がしきい値以下であれば、検出当量比ＫＡＣＴの変動が小さいことを示すので、気筒間において空燃比がバランス状態にあると判断する。
【００９２】
ここで、しきい値の設定について、簡単に説明する。図１０を参照すると、図８の（ａ）で示した診断可能領域における上記結果値の分布（度数）について、シミュレーション結果の一例が示されている。この例は、排気流量が、図８に示すＧＥＸ２の値であって、エンジン回転数が、図８に示すＮＥ２の値である場合のものである。符号１１１および１１２は、それぞれ、第１および第２気筒を他の気筒に比べて１０％リッチにした場合を示し、符号１２１および１２２は、それぞれ、第１および第２気筒を他の気筒に比べて２０％リッチにした場合を示す。
【００９３】
図から明らかなように、或る気筒と他の気筒との間の空燃比のずれが１０％以下であればバランス状態と判断し、或る気筒と他の気筒との間の空燃比のずれが２０％以上であればインバランス状態と判断する場合には、符号１１１および１１２で表される結果値と、符号１２１および１２２で表される結果値との間に、符号１３１に示されるようなしきい値を設定すればよい。このように、何パーセントのずれを境にバランス状態およびインバランス状態を区別するかに応じて、しきい値を設定することができる。
【００９４】
なお、診断部５６によってインバランス状態と判断した場合には、たとえば所定の警告灯を点灯させることにより、気筒間の空燃比に不均衡が生じていることをユーザに報知することができる。
【００９５】
図１１は、図７に示す実施形態に従うバンドパスフィルタ５３によるフィルタリングと積算部５４による積算の効果を示すため、これらのシミュレーション結果の一例を示す。（ａ）には、バランス状態におけるバンドパスフィルタ５３の出力と積算値の推移が示されており、（ｂ）には、インバランス状態におけるバンドパスフィルタ５３の出力と積算値の推移が示されている（この例では、補正部５５による補正は行われていないとする）。図に示されるように、バンドパスフィルタ５３によって、検出当量比の変動成分が良好に抽出されることがわかる。そして、該フィルタ済み当量比を積算することにより、インバランス状態を、バランス状態とより良好に区別して判断することができることがわかる。
【００９６】
ここで、前述した排気流量ＧＡＩＲＥＸを用いることの根拠およびその算出手法を具体的に説明する。
【００９７】
同じ質量の吸入空気量（ｇ）でも、その体積が異なると、排気通路に排出される排気（空気）の体積流量（ｍ３／秒）すなわち流速が変化する。これは、大気圧および（または）吸気管圧力の変動によって生じうる。たとえば、車両の走行する場所の標高が高くなるほど、大気圧が低くなるため、同じ重量の吸入空気量に対する排気側の体積流量が大きくなり、よって、空燃比センサ１６に当たる排気の流速が大きくなる。排気の流速が大きくなると、空燃比センサ１６の応答性は大きくなり、よって、上記の積算値も大きくなる。
【００９８】
図１２を参照すると、吸入空気量（ｇ）に対する、該積算値のシミュレーション結果の一例が示されており、符号１４１は、平地（大気圧が、ほぼ７６０ｍｍＨｇ）において、或る気筒の空燃比が他の気筒の空燃比に対して１０％リッチにずれている状態での積算値を示し、符号１４２は、平地において、或る気筒の空燃比が他の気筒に対して２０％リッチにずれている状態での積算値を示す。符号１４３は、高地（大気圧が、７６０ｍｍＨｇより低い）において、或る気筒の空燃比が他の気筒の空燃比に対して１０％リッチにずれている状態での積算値を示す。
【００９９】
ここで、平地において、符号１４１の状態はバランス状態と診断され、符号１４２の状態はインバランス状態と診断されるものとする。符号１４３の高地での積算値は、符号１４１の平地での積算値と、同じ量だけ空燃比がずれた状態下で算出されたものであり、よって、本来はバランス状態と診断されるべきである。しかしながら、高地であるために、積算値が、符号１４１よりも高く算出されており、よって、符号１４３の状態も、符号１４２の状態と同様に、インバランス状態と誤って診断されるおそれがある。
【０１００】
このような誤診断を回避するため、排気流量という概念を導入し、これは、前述したように、排気通路を通る排気の体積流量の大きさを反映したものであり、吸入空気量を体積補正することにより算出される。
【０１０１】
ここで、吸気管に導入される空気の圧力および体積を、それぞれＰＩおよびＶＩとし、排気管に排出される空気の圧力および体積を、それぞれＰＥおよびＶＥとすると、温度が一定ならば一定の質量の気体の体積は圧力に反比例するとのボイルの法則から、以下が成立する。
ＰＩ・ＶＩ＝ＰＥ・ＶＥ    （３）
【０１０２】
上記の式のＰＩは、吸気管圧力（絶対圧）ＰＢと考えられ、ＰＥは大気圧ＰＡと考えることができるから、上記の式は、以下のようになる。
ＶＥ＝（ＰＢ／ＰＡ）×ＶＩ    （４）
【０１０３】
式（４）に示されるように、ＰＢおよびＰＡが一定の条件下では、吸入空気量（質量）が大きくなるほど、該吸入空気量に対応する体積ＶＩが増えるため、排気側の体積ＶＥも大きくなり、排気の流速が増す。しかしながら、吸入空気量が一定の条件下であっても、ＰＢおよびＰＡのいずれかが変動すると、排気側の体積ＶＥが変動し、排気の流速も変動する。（ＰＢ／ＰＡ）が大きくなるほど、排気側の体積ＶＥが大きくなり、よって流速が速くなり、空燃比センサ１６の応答性は大きくなる。したがって、（ＰＢ／ＰＡ）を体積補正係数として用い、以下に示すように、該係数で、吸入空気量を補正する。ここで、ＡＦＭ８を介して検出されて上記のように学習比率で補正した吸入空気量Ｇａｉｒｃｙｌ（ｇ／ＴＤＣ）を時間平均したものを、ＧＡＩＲＩＮ（ｇ／秒）とする。
排気流量ＧＡＩＲＥＸ（ｇ／秒）
＝（ＰＢ／ＰＡ）×ＧＡＩＲＩＮ（ｇ／秒）    （５）
【０１０４】
式（５）は、吸入空気量ＧＡＩＲＩＮを体積補正することを示している。結果として算出される排気流量ＧＡＩＲＥＸは、（ＰＢ／ＰＡ）が大きくなるほど、大きくなり、排気の体積流量（流速）の大きさを反映したものとなっている。たとえば、大気圧ＰＡが低くなるほど、すなわち高地であるほど、体積補正係数ＰＢ／ＰＡは大きくなり、排気流量ＧＡＩＲＥＸは大きくなる。また、スロットル開度を大きくして吸気管圧力ＰＢが高くなるほど（たとえば、所望の吸入空気量を実現しようとする場合、高地では、平地よりもスロットル開度を大きくすることがある）、排気流量ＧＡＩＲＥＸは大きくなる。
【０１０５】
なお、排気流量ＧＡＩＲＥＸは、実際に排気通路を通る排気の質量流量を示すものではない（質量保存の法則により、吸気と排気とで質量は同じである）。排気流量ＧＡＩＲＥＸは、吸入空気量ＧＡＩＲＩＮに対し、ＰＢ／ＰＡで表される体積変化が生じた場合の、排気の体積流量の大きさすなわち空燃比センサの応答性の大きさを表す指標として算出されるものである。当然ながら、排気流量ＧＡＩＲＥＸは、吸入空気量の大きさをも反映しているのであるから、エンジン負荷を表す指標とも言うことができる。
【０１０６】
排気流量ＧＡＩＲＥＸのレンジを、予めシミュレーションや実験等を介して算出することができる。これを、前述した図８の各種マップの排気流量のＧＥＸ１〜ＧＥＸ４に設定して、メモリ等に該マップを記憶すればよい。排気流量算出部５０は、ＡＦＭ８によって検出されて学習比率で補正された吸入空気量Ｇａｉｒｃｙｌ（ｇ／ＴＤＣ）を、時間平均してＧＡＩＲＩＮ（ｇ／秒）を算出し（１ＴＤＣ区間の時間長は、回転数ＮＥから算出されることができる）、また、吸気管圧力センサ９および大気圧センサ１２の検出値から、吸気管圧力ＰＢおよび大気圧ＰＡを検出し、上記の式（５）に従って、現在の排気流量ＧＡＩＲＥＸを算出する。こうして算出された排気流量ＧＡＩＲＥＸが、前述したように、第１の診断条件判定部５１および補正部５４によって用いられる。
【０１０７】
従来は、エンジン負荷を表すものとして、たとえば吸入空気量や吸気管圧力ＰＢを用いていたが、第１の診断では、代わりに上記の排気流量を用いる。これにより、大気圧や吸気管圧力の変化に起因する排気ボリュームの増減が考慮されるため、空燃比センサ１６の応答特性を、より正確に見極めることができる。したがって、補正係数Ｋをより正しく求めることができ、よって、より正確な結果値を算出して、診断精度を向上させることができる。図１２を参照して述べたような、高地において生じうる誤った診断についても、防止することができる。
【０１０８】
図８の（ｃ）に示されるような排気流量に基づいて設定された補正係数Ｋは、点火時期が所定の基準点火時期に維持されていることを前提としている。しかしながら、点火時期が、該基準点火時期に対して変動すると、排気の温度が変化するため、排気の体積流量が変化するおそれがある。具体的には、図１３の（ａ）に示すように、点火時期が基準点火時期に対して遅角側に向かうほど排気温度は高くなり、進角側に向かうほど排気温度は低くなる。排気温度が高くなるほど、実際の排気の体積流量が大きくなり、よって、空燃比センサ１６の応答性が高くなって積算値が大きくなるおそれがある。その結果、点火時期に応じて、積算値の周期毎の増分量が変動してしまい、図９を参照して前述したような周期毎に同じ増分量で結果値を変化させることができないおそれがある。
【０１０９】
したがって、好ましくは、排気流量算出部５０は、上記の式（５）によって算出された排気流量ＧＡＩＲＥＸを、点火時期に応じて補正する。図１３の（ｂ）には、点火時期に応じた補正係数ＫＩＧのマップ（ＥＣＵ１のメモリに記憶されることができる）の一例が示されており、こここで、補正係数ＫＩＧは、点火時期が基準点火時期のときに値１を取り、該基準点火時期に対して遅角されるほど１より小さい値を取ると共に、進角されるほど１より大きい値を取る。排気流量算出部５０は、現在の点火時期に基づいて該マップを参照し、対応する補正係数ＫＩＧを求める。排気流量算出部５０は、該補正係数ＫＩＧで、式（５）によって算出された排気流量ＧＡＩＲＥＸを除算することにより、排気流量を補正する（すなわち、ＧＡＩＲＥＸ×（１／ＫＩＧ））。
【０１１０】
こうして、点火時期が進角側から遅角側に向かうにつれて排気流量ＧＡＩＲＥＸが大きくなるよう補正される。この補正により、排気流量の算出精度を向上させることができる。点火時期に応じて補正（点火時期補正と呼ぶ）された排気流量ＧＡＩＲＥＸが、前述した補正部５５によって用いられ、これにより、点火時期に応じた適切な補正係数Ｋ（図８の（ｃ））が求められる。点火時期が遅角されるほど、より小さな補正係数Ｋで積算値が補正され、より小さな結果値が得られる。したがって、図９に示すように周期毎に結果値を同じ増分量で変化させていくことができる。
【０１１１】
また、第１の診断条件判定部５１は、上記のように点火時期補正された排気流量ＧＡＩＲＥＸを用いて、前述したような診断プロセス実行の許可を判断することができる。点火時期に応じた排気流量ＧＡＩＲＥＸを用いることにより、該判断の精度を向上させることができる。
【０１１２】
なお、点火時期補正は、排気流量ＧＡＩＲＥＸに対して行うことに限定されるものではなく、代わりに、積算部５４によって算出された積算値または補正部５５によって算出された結果値に対して行ってもよい。この場合も、該補正は、点火時期が進角側から遅角側に向かうほど該結果値が小さくなるように行われる。具体的には、積算値を点火時期補正する場合には、点火時期に基づいて図１３の（ｂ）のようなマップを参照して求めた補正係数ＫＩＧを該積算値に乗算することにより、該点火時期補正を行うことができる。こうして点火時期補正された積算値に対して、補正部５５は、前述した式（５）で算出された排気流量ＧＡＩＲＥＸに基づいて図８（ｃ）から求めた補正係数Ｋでさらに補正し、結果値を求めることとなる。結果値を点火時期補正する場合には、該補正係数ＫＩＧを該結果値に乗算することにより、該点火時期補正を行うことができる。なお、積算値または結果値に対して点火時期補正を行った場合でも、好ましくは、第１の診断条件判定部５１は、点火時期補正された排気流量ＧＡＩＲＥＸを用いて診断条件を判定するのがよい。
【０１１３】
図７に示す実施形態では、積算値に補正係数Ｋを乗算することにより補正を行ったが、代替的に、しきい値側を補正するようにしてもよい。この場合、図１４に示すように、しきい値を補正するしきい値補正部５７が設けられ、該しきい値補正部５７は、図８の（ｃ）に示すような、回転数ＮＥおよび排気流量ＧＡＩＲＥＸに応じた補正係数Ｋを取得し、該補正係数Ｋで、前述した所定のしきい値を除算することにより、該しきい値を補正する。積算部５４は、診断モードの所定期間にわたって、該周期毎に、フィルタ５３からのフィルタ済み当量比を積算する。該所定期間経過後、診断部５６は、該積算値と該補正されたしきい値とを比較する。
【０１１４】
なお、しきい値補正部５７によるしきい値の補正を、上記の周期毎に行ってもよいが、この実施形態では、積算値としきい値との比較が所定期間経過後に行われるので、該所定期間において積算値が最終的に算出される周期でのみ該補正を行うようにしてもよい。
【０１１５】
該積算値が該補正されたしきい値より大きければ、検出当量比ＫＡＣＴの変動が大きいことを示すので、気筒間において空燃比がインバランス状態にあると判断する。該積算値が該補正されたしきい値以下ならば、検出当量比ＫＡＣＴの変動が小さいことを示すので、気筒間において空燃比がバランス状態にあると判断する。
【０１１６】
なお、上記の点火時期補正についても、排気流量、積算値、結果値のいずれかに対して行うことに代えて、しきい値側に行うようにしてもよい。この場合、現在の点火時期に基づいて図１３の（ｂ）のようなマップを参照して求めた補正係数ＫＩＧで、該しきい値を除算することにより、該しきい値を補正することができる。この場合、上記の補正係数Ｋと該補正係数ＫＩＧの両方で、しきい値を除算することとなる。これにより、点火時期が進角側から遅角側に向かうほど、該しきい値は大きくなるよう補正される。
【０１１７】
次に、図１５は、図６の第２の診断処理部４３のより詳細な機能ブロック図を示す。
【０１１８】
第２の診断条件判定部６１は、第１の診断条件判定部５１と同様に、インバランス状態を見極める診断プロセスの実行を許可するための所定の条件が満たされたかどうかを、エンジンの運転状態に基づいて判断する。該所定の条件は、第１の診断条件判定部５１で用いる所定の条件と、エンジン負荷を示す運転パラメータが異なる。第１の診断条件判定部５１では、エンジン負荷を示す運転パラメータとして排気流量ＧＡＩＲＥＸを用いたが、第２の診断は、ＡＦＭ８の検出値の学習が完了していない場合に実行されるので、該排気流量に代えて、吸気管圧力センサ９から検出される吸気管圧力ＰＢを用いる。
【０１１９】
したがって、所定範囲の吸気管圧力ＰＢを、たとえば４つのレンジに分け、図８の（ａ）のマップの横軸に示されるＧＥＸ１〜ＧＥＸ４を、ＰＢ１〜ＰＢ４に変更すればよい。該変更したマップを、図１６に示す。ＰＢ１〜ＰＢ４に向かって、吸気管圧力値は高く、すなわち負荷が高くなることを示す。第２の診断条件判定部６１は、吸気管圧力センサ９およびクランク角センサ１３から検出された吸気管圧力ＰＢおよびエンジン回転数ＮＥに基づいて、エンジンの運転状態が、該マップの診断可能領域にあるかどうかを判断する。なお、第２の診断条件判定部６１が用いる上記所定の条件には、第１の診断条件判定部５１の場合と同様に、他の条件を含めることができる。
【０１２０】
上記所定の条件が満たされたことに応じて、診断モードが開始する。診断モードは、所定期間にわたって継続し、これは、第１の診断の場合と同様に、予め設定されることができる。
【０１２１】
診断モードが開始したことに応じて、目標空燃比設定部６２は、所定値（典型的には、理論空燃比）である目標空燃比に、空燃比センサ１６によって検出される空燃比をフィードバック制御する通常の空燃比フィードバック制御を停止し、目標空燃比を、図１７に示すような、所定の周波数ｆａすなわち所定の周期Ｔａで、所定の空燃比値を中心に変動する周期波として設定する。ここで、該所定の周波数ｆａは、前述した、０．５次および１次の周波数値とは異なる値を持つ。より好ましくは、該所定の周波数ｆａは、０．５次の周波数値より小さく、かつ、アクセルペダルの踏み込み量の負荷変動では発生し得ない周波数値（たとえば、４〜８Ｈｚ）を持つよう設定される。
【０１２２】
この実施形態では、周波数ｆａが４Ｈｚ（よって、周期Ｔａは、２５０ミリ秒）であり、理論空燃比（１４．７）よりも若干リッチな空燃比値を中心として変動する正弦波として、目標空燃比を設定する。こうすることにより、診断モードにおいて上記のように目標空燃比を変動させた場合でも、ＮＯｘの排出を防ぐことができる。
【０１２３】
なお、目標空燃比の当該周期波の周波数および波形は、これに限定されるものではなく、他の周波数の、たとえば矩形波およびのこぎり波のような周期波で、目標空燃比を設定してもよい。目標空燃比を周期波として設定する理由は、空燃比センサの応答性を補償するためであり、より詳細な理由については、後述される。
【０１２４】
こうして設定された目標空燃比は、該診断モードが継続する所定期間にわたり、所定の制御周期で実行される空燃比フィードバック制御によってサンプリングされ（図には、今回の制御周期ｋおよび次の制御周期（ｋ＋１）でサンプリングされる様子が示されている）、該サンプリングされた値の目標空燃比に、空燃比センサ１６によって検出される空燃比が収束するように、燃料の量が算出され、該算出された量の燃料が燃料噴射弁７を介して噴射される。その結果としての空燃比が、空燃比センサ１６により検出される。検出される空燃比は、目標空燃比の変動に合わせて、所定の周期Ｔａで変動することとなる。
【０１２５】
図１５に戻り、検出空燃比取得部６３は、該空燃比センサ１６の出力を、後続の第１および第２のバンドパスフィルタ６４および６６によるフィルタリング処理の周期に同期してサンプリングすることで、検出された空燃比すなわち当量比ＫＡＣＴを取得する。
【０１２６】
第１のバンドパスフィルタ６４は、前述した第１の診断のバンドパスフィルタ５３と同様に構成されており、該取得された当量比ＫＡＣＴから、エンジン回転数の０．５次の周波数成分を抽出するよう構成されている。当該バンドバスフィルタのフィルタ式は、前述した通りである。検出当量比ＫＡＣＴが第１のバンドパスフィルタ６４によってフィルタリングされることにより、第１のフィルタ済み当量比が算出される。
【０１２７】
第１の積算部６５は、前述した第１の診断の積算部５４と同様に構成されており、前述したエンジン回転数の０．５次周波数に対応する周期毎に、第１のフィルタ済み当量比を積算して、第１の積算値を算出する。第１の積算部６４による周期毎の積算処理は、前述した診断モードが継続する所定期間にわたって行われる。
【０１２８】
この第２の診断では、第１の診断におけるような補正部５５を設けることに代えて、第２のバンドパスフィルタ６６、第２の積算部６７、および正規化部７１を備えている。
【０１２９】
第２のバンドパスフィルタ６６は、検出当量比ＫＡＣＴから、目標空燃比設定部６２で設定された、目標空燃比が変動する周期Ｔａに対応する周波数ｆａの成分（以下、単に、目標空燃比変動の周波数成分と呼ぶことがある）を抽出するよう構成されている。前述したように、診断モードでは、目標空燃比は、所定の周期すなわち所定の周波数で変動する周期波として設定され、この実施形態では、周波数が４Ｈｚの正弦波である。したがって、第２のバンドパスフィルタ６６は、検出当量比ＫＡＣＴから、４Ｈｚの周波数成分を抽出するよう構成されている。検出当量比ＫＡＣＴが第２のバンドパスフィルタ６６によりフィルタリングされることにより、第２のフィルタ済み当量比が算出される。第２の積算部６７は、第２のフィルタ済み当量比を積算して、第２の積算値を算出する。
【０１３０】
第２のバンドパスフィルタ６６および第２の積算部６７の処理は、それぞれ、第１のバンドパスフィルタ６４および第１の積算部６５の処理と同期して行われる。すなわち、第１および第２のバンドパスフィルタの入力は、同じ時点で検出されて検出空燃比取得部６３により取得された当量比ＫＡＣＴであり、第１および第２の積算は、同じタイミングで、すなわち０．５次の周波数に対応する周期毎に行われる。そして、第２の積算も、第１の積算と同様に、前述した所定期間にわたって行われる。
【０１３１】
正規化部７１は、診断モードの当該所定期間が経過した後、第１の積算部６５によって最終的に算出された第１の積算値を、第２の積算部６７によって最終的に算出された第２の積算値で正規化することにより、結果値を算出する。具体的には、以下の式に従って、結果値を算出する。
結果値＝
所定期間経過後の第１の積算値／所定期間経過後の第２の積算値      （６）
【０１３２】
診断部７２は、該結果値を、所定のしきい値と比較する。結果値がしきい値より大きければ、検出当量比ＫＡＣＴの変動が大きいことを示すので、気筒間において空燃比がインバランス状態にあると判断する。結果値がしきい値以下であれば、検出当量比ＫＡＣＴの変動が小さいことを示すので、気筒間において空燃比がバランス状態にあると判断する。なお、第１の診断の場合と同様に、インバランス状態と判断した場合には、たとえば所定の警告灯を点灯させるようにしてもよい。
【０１３３】
図１８は、第２の診断に従う診断結果の一例を示す。（ａ１）は、空燃比センサの応答性が良好な場合（基準となる場合であり、実空燃比にほぼ等しい値が検出される場合）における、気筒間の空燃比がバランス状態にある場合とインバランス状態にある場合の、所定期間経過後の第１の積算値の一例を棒グラフで示し、（ｂ１）は、空燃比センサの応答性が（ａ１）に比べて劣化した場合における、気筒間の空燃比がバランス状態にある場合とインバランス状態にある場合の、所定期間経過後の第１の積算値の一例を棒グラフで示す。ここで、インバランス状態を生じさせている原因は、（ａ１）と（ｂ１）の場合で同じであると仮定する。
【０１３４】
応答性が劣化するほど、空燃比センサ１６の出力は小さくなるので、（ｂ１）に示される第１の積算値は、（ａ１）に示される第１の積算値よりも低い。仮に、符号１０５で示されるような所定のしきい値を設定し、第１の積算値がしきい値より大きい場合にはインバランス状態と判断し、第１の積算値がしきい値以下である場合にはバランス状態と判断する診断を行うと、（ａ１）の場合には、正しい診断結果が得られることとなるが、（ｂ１）の場合には、両方の第１の積算値についてインバランス状態と診断されることとなり、誤った診断結果となる。
【０１３５】
（ａ２）は、空燃比センサ１６の応答性が良好な場合の第２の積算値の一例を、（ａ３）は、（ａ１）の第１の積算値と（ａ２）の第２の積算値に基づいて算出された結果値を、棒グラフで示す。（ｂ２）は、空燃比センサ１６の応答性が劣化した場合の第２の積算値の一例を、（ｂ３）は、（ｂ１）の第１の積算値と（ｂ２）の第２の積算値に基づいて算出された結果値を、棒グラフで示す。
【０１３６】
前述したように、空燃比センサが劣化すると、該センサの出力が小さくなるため、第２の積算値は、（ａ２）よりも（ｂ２）の方が小さい。しかしながら、（ａ２）および（ｂ２）のいずれにおいて、バランス状態およびインバランス状態間において、第２の積算値の値はほぼ同じである。すなわち、第２の積算値は、目標空燃比変動の周波数成分に基づく空燃比センサの出力を示しているので、気筒間の空燃比のばらつきには影響されない。したがって、第２の積算値は、気筒間の空燃比のばらつきに関係なく、空燃比センサの劣化の程度を表しているといえる。そのため、第１の積算値を第２の積算値で正規化することにより、結果値は、空燃比センサの劣化に影響されることなく、気筒間のばらつきを表す値として取得されることができる。したがって、（ａ３）および（ｂ３）に示すように、所定のしきい値Ｔｈにより、空燃比センサが劣化した場合でも、気筒間の空燃比のバランスおよびインバランス状態を良好な精度で判断することができる。
【０１３７】
なお、しきい値Ｔｈは、図１０を参照して第１の診断の所で述べたのと同様に、或る気筒と他の気筒との間の空燃比のずれの量について、バランス状態とインバランス状態の境界を予め設定し、該境界のずれ量に対応するよう設定されるのが好ましい。
【０１３８】
上記において、第２の積算値は、空燃比センサ１６の応答性を表している。第２の積算値が大きいほど、空燃比センサの応答性が良好なことがわかる。したがって、応答性に応じてしきい値Ｔｈを求め、該求めたしきい値Ｔｈを、第１の積算値と比較してもよい。
【０１３９】
図１９には、この代替の実施形態が示されている。図１５と異なるのは、正規化部７１に代えて、しきい値設定部７５が設けられている点である。たとえば、図２０に示すようなマップを、予めメモリ等の記憶装置に記憶し、しきい値設定部７５は、診断モードの上記所定期間経過後、第２の積算部６７によって最終的に算出された第２の積算値に基づいて該マップを参照し、対応するしきい値Ｔｈを求める。第２の積算値が大きいほど、大きい値のしきい値Ｔｈが求められる。
【０１４０】
診断部７６は、該所定期間経過後、第１の積算部６５によって最終的に算出された第１の積算値と、こうしてマップから求めたしきい値Ｔｈとを比較する。該第１の積算値が該しきい値Ｔｈより大きければ、検出当量比ＫＡＣＴの変動が大きいことを示すので、気筒間において空燃比がインバランス状態にあると判断する。該第１の積算値がしきい値Ｔｈ以下であれば、検出当量比ＫＡＣＴの変動が小さいことを示すので、気筒間において空燃比がバランス状態にあると判断する。
【０１４１】
次に、図４を参照して前述した直列４気筒エンジンの対向２気筒の空燃比ずれについても検出可能なように構成された、第１の診断処理部４２および第２の診断処理部４３の機能ブロック図を、図２１と図２２にそれぞれ示す。
【０１４２】
図２１を参照すると、図７と異なるのは、エンジン回転数の１次周波数用の処理ルートが付加されている点である。
【０１４３】
検出空燃比取得部５２は、空燃比センサ１６の出力を、後続の０．５次用バンドパスフィルタ５３および１次用バンドパスフィルタ１５３のフィルタリング処理の周期に同期してサンプリングすることで、当量比ＫＡＣＴを取得する。
【０１４４】
０．５次用バンドパスフィルタ５３、０．５次用積算部５３、および０．５次用補正部５５は、図７のものと同じであり、エンジン回転数の０．５次周波数に対応する周期で、０．５次用積算部５４は、０．５次用バンドパスフィルタ５３からの０．５次用フィルタ済み当量比を積算して、０．５次用積算値を算出し、０．５次用補正部５５は、エンジン回転数ＮＥおよび排気流量ＧＡＩＲＥＸに基づく補正係数Ｋで、該０．５次用積算値を補正し、０．５次用結果値を算出する。
【０１４５】
１次用バンドパスフィルタ１５３は、該取得された当量比ＫＡＣＴから、エンジン回転数の１次周波数成分を抽出するよう構成されており、１次用フィルタ済み当量比を出力する。該フィルタリングの周期は、前述したように、その後に続く積算の周期に等しいか、それ以下の長さを持つよう設定される。
【０１４６】
また、エンジン回転数の１次周波数に対応する周期で、１次用積算部１５４は、１次用フィルタ済み当量比を積算して、１次用積算値を算出し、１次用補正部１５５は、エンジン回転数ＮＥおよび排気流量ＧＡＩＲＥＸに基づく補正係数Ｋで、該１次用積算値を補正し、１次用結果値を算出する。
【０１４７】
なお、１次周波数に対応する周期の長さは、０．５次周波数に対応する周期の長さの半分であるので、１次用フィルタ済み当量比が２回算出されるたびに、０．５次用フィルタ済み当量比が１回算出され、同じタイミングで算出された両者の値は同じである。したがって、１次周波数に対応する周期で算出される１次用フィルタ済み当量比を、０．５次周波数に対応する周期で取得して、これを、０．５次用フィルタ済み当量比として用いてもよい。
【０１４８】
診断モードの所定期間経過後、診断部５６は、０．５次用結果値を第１のしきい値と比較し、１次用結果値を第２のしきい値と比較する。図４に示されるように、０．５次周波数成分における値の大きさと、１次周波数成分における値の大きさとは異なることがあるので、好ましくは、第１および第２のしきい値は、別個に設定され、たとえば図１０を参照して説明したように設定されることができる。
【０１４９】
診断部５６は、該２つの比較の結果、０．５次用結果値および１次用結果値のうちの少なくとも一方が、対応するしきい値より大きければ、気筒間の空燃比がインバランス状態にあると判断する。また、診断部５６は、該２つの比較の結果、０．５次用結果値および１次用結果値の両方が、対応するしきい値以下ならば、気筒間の空燃比がバランス状態にあると判断する。
【０１５０】
当然ながら、図２１に示す実施形態を、図１４を参照して説明したようにしきい値を補正するよう変形することができ、第１および第２のしきい値を補正係数Ｋで補正して、０．５次用積算値を補正済み第１のしきい値と比較し、１次用積算値を補正済み第２のしきい値と比較するようにしてもよい。
【０１５１】
次に、図２２を参照すると、図１５と異なるのは、エンジン回転数の１次周波数用の処理ルートが付加されている点である。
【０１５２】
検出空燃比取得部６３は、空燃比センサ１６の出力を、後続の０．５次用バンドパスフィルタ６４および１次用バンドパスフィルタ１６４のフィルタリング処理の周期に同期してサンプリングすることで、当量比ＫＡＣＴを取得する。
【０１５３】
０．５次用バンドパスフィルタ６４および０．５次用積算部６５は、図１５のものと同じであり、それぞれ、第１のフィルタ済み当量比および第１の積算値を出力する。
【０１５４】
１次用バンドパスフィルタ１６４および１次用積算部１６５は、図２１を参照して述べたものと同様に動作し、それぞれの出力を、第３のフィルタ済み当量比、および第３の積算値と呼ぶ。
【０１５５】
第２のバンドパスフィルタ６６および第２の積算部６７は、図１５を参照して説明した、第２のフィルタ済み当量比および第２の積算値を算出する処理とは別個に、１次用積算値のための処理を行う。すなわち、１次用バンドパスフィルタ１６４が検出当量比ＫＡＣＴをフィルタリングするのと同じタイミングで、第２のバンドパスフィルタ６６は該検出当量比ＫＡＣＴをフィルタリングして第４のフィルタ済み当量比を算出し、１次用積算部１６５が積算するのと同じタイミングで、第２の積算部６７は該第４のフィルタ済み当量比を積算して、第４の積算値を算出する。
【０１５６】
正規化部７１は、図１５を参照して説明した、第１の積算値を第２の積算値で正規化して結果値（０．５次用結果値と呼ぶ）を算出する処理とは別個に、診断モードが実施される所定期間経過後に、第３の積算値を第４の積算値で正規化する。すなわち、第３の積算値を、第４の積算値で除算することにより、１次用結果値を算出する。
【０１５７】
診断部７２は、０．５次用結果値を第１のしきい値と比較すると共に、１次用結果値を第２のしきい値と比較する。図２１の場合と同様に、第１および第２のしきい値は、別個に設定されることができる。診断部７２は、該２つの比較の結果、０．５次用結果値および１次用結果値のうちの少なくとも一方が、対応するしきい値より大きければ、気筒間の空燃比がインバランス状態にあると判断する。また、診断部５６は、該２つの比較の結果、０．５次用結果値および１次用結果値の両方が、対応するしきい値以下ならば、気筒間の空燃比がバランス状態にあると判断する。
【０１５８】
当然ながら、図１９に示した、しきい値を設定する実施形態を、図２２の実施形態に適用し、第２のしきい値を設定することができる。この場合、図２０に示されるのと同様のマップを、第２のしきい値および第４の積算値に基づいて予め作成してメモリ等の記憶装置に記憶し、診断モードの所定期間経過後、最終的に算出された第４の積算値に基づいて該マップを参照することによって、対応する第２のしきい値を求める。診断部７２は、該所定期間経過後、最終的に算出された第３の積算値を、該マップから求めた第２のしきい値と比較する。診断部７２は、第１の積算値が、図２０のマップから求めた第１のしきい値より大きいこと、および第３の積算値が、同様にマップから求めた第２のしきい値より大きいこと、の少なくとも一方が満たされたならば、気筒間の空燃比がインバランス状態にあると判断する。また、診断部７２は、第１の積算値が、該第１のしきい値以下であること、および第３の積算値が第２のしきい値以下であること、の両方が満たされたならば、気筒間の空燃比がバランス状態にあると判断する。
【０１５９】
図２３は、本願発明の一実施形態に従う、ＡＦＭ学習プロセスのフローチャートを示す。このプロセスは、ＥＣＵ１のＣＰＵにより、より具体的には、ＡＦＭ学習部４０により、所定の周期で実行される。
【０１６０】
ステップＳ１において、前述したような所定の学習条件満たされたかどうかを判断する。学習条件が満たされていなければ、学習を完了させることはできないので、ステップＳ２において、学習完了フラグにゼロを設定する。学習条件が満たされたならば、ステップＳ３において、ＡＦＭ８の検出値を取得する。
【０１６１】
ステップＳ４において、前述したように、エンジンの運転状態に基づく基準吸入空気量を算出する。具体的には、検出されたエンジン回転数および吸気管圧力に基づいて、所定のマップを参照することにより、対応する基準吸入空気量を求める。前述したように、該求めた基準吸入空気量に対し、検出された大気圧および吸気温度で密度補正を行ってもよい。
【０１６２】
ステップＳ５において、前述した式（１）に従って、ＡＦＭ８の検出値の基準吸入空気量に対するずれを表す学習比率（％）を算出する。ステップＳ６において、該学習比率と１００（％）との差の大きさが所定値（たとえば、１０％）以下かどうかを判断する。該差の大きさが所定値より大きければ、ＡＦＭ８の検出値のずれが大きく、ＡＦＭ８に劣化が生じている可能性を示すので、学習を完了できないと判断し、ステップＳ２に進む。該差の大きさが所定値以下であれば、学習は完了したと判断して、ステップＳ７において学習完了フラグに１を設定する。
【０１６３】
図２４は、本願発明の一実施形態に従う、診断切り換えプロセスのフローチャートを示す。このプロセスは、ＥＣＵ１のＣＰＵにより、より具体的には、診断切り換え部４１により、所定の周期で実行される。一実施例では、後述する診断プロセスの周期と同じタイミングで実行することができる。
【０１６４】
ステップＳ８において、図２３で設定される学習完了フラグの値が１かどうかを判断する。学習完了フラグの値が１であれば、ＡＦＭ８の検出値の学習結果を用いることができるので、ステップＳ９に進み、第１の診断条件判定プロセスを実行する。学習完了フラグの値がゼロであれば、ステップＳ１０に進み、第２の診断条件判定プロセスを実行する。
【０１６５】
図２５は、図２４のステップＳ９で実行される、第１の診断条件判定プロセスのフローチャートを示す。このプロセスは、より具体的には第１の診断条件判定部５１により実行される。
【０１６６】
ステップＳ１１において、検出されたエンジン回転数ＮＥが所定範囲内にあるかどうかを判断する。また、ステップＳ１２において、検出された吸入空気量、吸気管圧力、および大気圧に基づいて、式（５）に示すように排気流量ＧＡＩＲＥＸを算出し、好ましくは、さらに、該算出された排気流量ＧＡＩＲＥＸに対して、図１３の（ｂ）のようなマップを現在の点火時期に基づいて参照することにより求めた補正係数ＫＩＧで補正し、点火時期補正した排気流量ＧＡＩＲＥＸを算出する。該点火時期補正は、前述したように、点火時期が遅角されるほど、排気流量を大きくするよう（よって、結果値が小さくなるよう）行われる。そして、該点火時期補正した排気流量ＧＡＩＲＥＸが、所定値より大きいかどうかを判断する。これらは、図８を参照して述べたように、現在の運転状態が診断可能領域内にあるかどうかを判断するための処理である。診断可能領域にあれば、ステップＳ１３に進む。診断可能領域内になければ、ステップＳ２５に進み、第１の診断条件フラグをゼロに設定して診断を禁止する。
【０１６７】
ステップＳ１３において、空燃比センサ１６が活性化しているかどうかを判断する。活性化していなければ、空燃比センサから正確な出力を得ることはできないので、診断を禁止する（Ｓ２５）。
【０１６８】
ステップＳ１４において、所定値（たとえば、理論空燃比）である目標空燃比に収束させるための通常の空燃比フィードバック（ＦＢ）制御が実行されているかどうかを判断する。該通常の空燃比フィードバック制御は、任意の制御手法で実現されることができる。これは、空燃比が目標空燃比に制御されているにもかかわらず、空燃比が気筒間でばらついているかどうかを判断するようにするためである。したがって、通常の空燃比フィードバック制御中でないときには、診断を禁止する（Ｓ２５）。
【０１６９】
ステップＳ１５において、エンジン水温センサ１１により検出されるエンジン水温ＴＷが所定値より大きいかどうかを判断する。エンジン水温ＴＷが低いと、燃料の付着によって検出当量比にスパイク状の変動が生じるおそれがあるので、診断を禁止する（Ｓ２５）。
【０１７０】
ステップＳ１６およびＳ１７において、エンジン回転数の変動ΔＮＥおよび排気流量ΔＧＡＩＲＥＸの変動が所定値より小さいかどうかを判断する。これらの変動が大きいと、空燃比センサの出力が安定しないおそれがあるので、診断を禁止する（Ｓ２５）。変動ΔＮＥは、たとえば、前回の周期と今回の周期の間の回転数ＮＥの差の大きさにより表されることができ、変動ΔＧＡＩＲＥＸは、前回の周期と今回の周期の間の排気流量ＧＡＩＲＥＸの差の大きさにより表されることができる。
【０１７１】
ステップＳ１８おいて、燃料を増量する制御が行われているかどうかを判断する。燃料を増量する制御が行われていると、該燃料の増量によって空燃比のバランスが崩れやすくなるので、診断を禁止する（Ｓ２５）。
【０１７２】
ステップＳ１９において、パージ制御弁２８のデューティ比が、エンジン回転数ＮＥと同期しているかどうかを判断する。パージ制御弁は、前述したように、所定のデューティ比で開閉される。この開閉の周期が、エンジン回転数と同期していると（たとえば、パージ制御弁の開閉の周期とエンジン回転数の周期とが同じ時間長であるとき）、気筒に導入される蒸発燃料が増加して空燃比のバランスを崩すおそれがある。したがって、このような時には診断を禁止する（Ｓ２５）。
【０１７３】
ステップＳ２０において、ＥＧＲの還流率が所定値より高いかどうかを判断する。ＥＧＲ還流率は、ＥＧＲ弁１９の開度によって制御されることができる。ＥＧＲの還流が動作中でないと、ＥＧＲ弁１９の故障等の、ＥＧＲ還流に関する故障に起因した気筒間の空燃比のインバランス状態を検出することができない。また、ＥＧＲ還流率が所定値より高くないと、該ＥＧＲ還流に関する故障に起因したインバランス状態が空燃比センサに現れないおそれがある。したがって、ＥＧＲ還流率が該所定値以下の場合には、診断を禁止する（Ｓ２５）。
【０１７４】
ステップＳ２１において、空燃比センサの出力が、所定の上限値または下限値に張り付いているかどうかを判断する。上限値または下限値に張り付いていると、空燃比センサから周期的な波形が得られないので、診断を禁止する（Ｓ２５）。
【０１７５】
ステップＳ２２では、エンジンが気筒休止機構を備えている場合において、気筒休止が行われている最中であるかどうかを判断する。気筒の休止中は、該休止している気筒の空燃比にずれが生じていても故障と判断されないおそれがある。したがって、このような時には診断を禁止する（Ｓ２５）。
【０１７６】
ステップＳ２３において、空燃比センサの応答性が故障と判断されるくらい劣化しているか否かを調べ、該応答性が、該故障と判断される程度に悪い場合（たとえば、空燃比センサ１６により検出される空燃比値と、該センサ１６が本来出力すべき値（実空燃比の値であるが、目標空燃比値を用いてよい）との差の大きさが所定値以上である場合）に、空燃比センサが正常でないと判断することができる。正常でないと判断した場合には、診断を禁止する（Ｓ２５）。
【０１７７】
ステップＳ１１〜Ｓ２３のすべての条件が満たされたならば、ステップＳ２４において第１の診断条件フラグに１を設定し、診断を許可する（診断モードの開始）。いずれかの条件が満たされなければ、ステップＳ２５において、第１の診断条件フラグにゼロを設定し、診断を禁止する。
【０１７８】
図２６は、この発明の一実施形態に従う、第１の診断に従う診断プロセスのフローを示す。このプロセスは、ＥＣＵ１のＣＰＵにより、より具体的には図７の検出空燃比取得部５２、フィルタ５３、積算部５４、補正部５５、および診断部５６により、前述した０．５次周波数に対応する周期で実行される。
【０１７９】
ステップＳ３１において、図２５を参照して述べた第１の診断条件フラグが１に設定されているならば、診断プロセスを開始する。そうでなければ、診断を禁止するため、このルーチンを抜ける。
【０１８０】
ステップＳ３２において、空燃比センサ１６を介して検出された当量比ＫＡＣＴを取得する。ステップＳ３３において、検出当量比ＫＡＣＴにバンドパスフィルタを適用することにより、フィルタ済み当量比を算出する。フィルタ済み当量比は、前述したように、当量比ＫＡＣＴから抽出されたエンジン回転数の０．５次周波数成分を表している。
【０１８１】
ステップＳ３４において、該フィルタ済み当量比を、積算値の前回値に加算することにより、積算値の今回値を算出する。
【０１８２】
ステップＳ３５において、検出された回転数ＮＥおよび排気流量ＧＡＩＲＥＸ（これは、図２５のＳ１２で算出されており、好ましくは、前述した点火時期補正した排気流量ＧＡＩＲＥＸが用いられる）に基づいて、たとえば図８の（ｃ）に示すようなマップを参照することにより、補正係数Ｋを求める。
【０１８３】
ステップＳ３６において、該補正係数Ｋで、ステップＳ３４で得られた積算値を補正する。補正は、前述したように、該補正係数Ｋを該積算値に乗算することによって行われることができる。該補正により、結果値が得られる。
【０１８４】
ステップＳ３７において、所定期間が経過したかどうかを判断する。該所定期間は、第１の診断条件フラグに１が設定された時から所定のタイマ（図示せず）で計時されている。該所定期間が経過していなければ、該ルーチンを抜ける。該所定期間が経過したならば、ステップＳ３６で算出された結果値を所定のしきい値と比較し（Ｓ３８）、該結果値が該しきい値より大きければインバランス状態を判断して、ステップＳ３９でＮＧフラグに１を設定する。そうでなければ、バランス状態と判断して、ステップＳ４０でＯＫフラグに１を設定する。
【０１８５】
前述した図２１に示す実施形態のように、エンジン回転数の１次周波数をも抽出する場合には、ステップＳ３２〜３６の処理と並行に、１次周波数に対応する周期で、１次用フィルタ済み当量比、１次用積算値および１次用結果値を算出すればよい。
【０１８６】
また、前述した図１４に示す実施形態にように、しきい値側を補正する場合には、ステップＳ３６において、しきい値が補正係数Ｋで補正される。ステップＳ３８において、ステップＳ３４で求めた積算値と、該補正したしきい値とを比較する。
【０１８７】
なお、このプロセスでは、点火時期補正を排気流量に対して行っているが、前述したように、代替的に、積算値、結果値、しきい値のいずれかに対して行うようにしてもよい。
【０１８８】
図２４のステップＳ１０で実行される、第２の診断における診断条件判定プロセスは、図２５の第１の診断における診断条件判定プロセスと類似しているので、図示を省略する。異なるのは、第２の診断の場合には、ステップＳ１２およびＳ１７において、排気流量ＧＡＩＲＥＸとその変動ΔＧＡＩＲＥＸに代えて、吸気管圧力ＰＢおよびその変動ΔＰＢが用いられる点である。さらに、第２の診断でも、ステップＳ１４は判断されるが、これは、前述したように目標空燃比を所定の周期で変動させる期間において実行される空燃比フィードバック制御中で使用するフィードバック係数が算出されているか否かを判断するためである。なお、第１の診断条件フラグに代えて、第２の診断では、第２の診断条件フラグに値が設定される。第２の診断条件フラグに１が設定されると、診断モードが開始する。
【０１８９】
図２７は、この発明の一実施形態に従う、第２の診断に従う、目標空燃比設定プロセスのフローを示す。このプロセスは、ＥＣＵ１のＣＰＵにより、より具体的には図１５の目標空燃比設定部６２により、所定の周期で実行される。一実施例では、後述する診断プロセスの周期と同じタイミングで実行されることができる。
【０１９０】
ステップＳ４１において、前述した第２の診断条件フラグにゼロが設定されているならば、診断が禁止されるため、ステップＳ４２において、所定値（前述したように、たとえば理論空燃比）である目標空燃比に、空燃比センサ１６によって検出される空燃比を収束させる通常の空燃比フィードバック制御を継続する。第２の診断条件フラグに１が設定されているならば、診断モードが開始されたことを示すので、ステップＳ４３に進む。
【０１９１】
診断モードの開始時には、ステップＳ４３の、目標空燃比の周期波としての変動がまだ開始されていないため、ステップＳ４４に進む。ステップＳ４４において、通常の空燃比フィードバック制御を停止し、前述したように、目標空燃比の周期波としての変動を開始するため、図１７に示すような所定の周期Ｔａで変動する周期波として目標空燃比を設定する。これにより、別個の空燃比フィードバック制御プロセス（図示せず）が開始され、該プロセスにより、所定時間間隔で、該目標空燃比がサンプリングされ、該サンプリングした値の目標空燃比に、空燃比センサ１６によって検出される空燃比が収束するよう燃料噴射量が算出され、該算出された量の燃料が噴射される（ここで、ステップＳ１４を参照して前述したように、通常の空燃比フィードバック制御で使用されていたフィードバック係数を用いることができる）。こうして、診断モードが継続する所定期間にわたって、目標空燃比は、所定の周期で変動するようになり、結果としての実空燃比も、所定の周期で変動するようになる。
【０１９２】
当該プロセスが次に実行されたときには、ステップＳ４３の判断はＹｅｓとなるため、そのまま当該プロセスを抜ける。また、後述するように、診断モード中に診断条件が満たされなくなって第２の診断条件フラグがゼロにリセットされたときには、ステップＳ４１の判断がＮｏとなり、ステップＳ４２において、周期波として目標空燃比を変動させることは停止され、通常の空燃比フィードバック制御を再開する。
【０１９３】
図２８は、この発明の一実施形態に従う、第２の診断に従う診断プロセスのフローを示す。このプロセスは、ＥＣＵ１のＣＰＵにより、より具体的には図１５の検出空燃比取得部６３、第１のバンドパスフィルタ６４、第１の積算部６５、第２のバンドパスフィルタ６６、第２の積算部６７、正規化部７１および診断部７２により、前述した０．５次周波数に対応する周期で実行される。
【０１９４】
ステップＳ５１において、通常の空燃比フィードバック制御が停止されて目標空燃比の周期波としての変動が開始されているかどうかを判断する。この判断がＮｏであれば、当該プロセスを抜ける。この判断がＹｅｓであれば、後続の診断プロセスを実行する。
【０１９５】
ステップＳ５２において、空燃比センサ１６を介して検出された当量比ＫＡＣＴを取得する。ステップＳ５３において、検出当量比ＫＡＣＴに第１のバンドパスフィルタを適用することにより、第１のフィルタ済み当量比を算出する。第１のフィルタ済み当量比は、前述したように、当量比ＫＡＣＴから抽出されたエンジン回転数の０．５次周波数成分を表している。ステップＳ５４において、該第１のフィルタ済み当量比を、第１の積算値の前回値（初期値は、ゼロとすることができる）に加算することにより、第１の積算値の今回値を算出する。
【０１９６】
ステップＳ５５において、上記の取得された検出当量比ＫＡＣＴに第２のバンドパスフィルタを適用することにより、第２のフィルタ済み当量比を算出する。第２のフィルタ済み当量比は、前述したように、目標空燃比変動の周波数成分を表している。ステップＳ５６において、該第２のフィルタ済み当量比を、第２の積算値の前回値（初期値は、ゼロとすることができる）に加算することにより、第２の積算値の今回値を算出する。
【０１９７】
ステップＳ５７において、診断モードの上記所定期間が経過したかどうかを判断する。該所定期間は、第２の診断条件フラグに１が設定された時から所定のタイマ（図示せず）で計時されている。該所定期間が経過していなければ、当該プロセスを抜ける。
【０１９８】
該所定期間が経過したならば、ステップＳ５８で、第１の積算値を第２の積算値で除算することにより、第１の積算値を正規化して、結果値を算出する。
【０１９９】
ステップＳ５９において、算出された結果値を所定のしきい値と比較する。結果値がしきい値より大きければインバランス状態と判断して、ＮＧフラグに１を設定する（Ｓ６０）。そうでなければ、バランス状態と判断してＯＫフラグに１を設定する（Ｓ６１）。
【０２００】
前述した図２２に示す実施形態のように、エンジン回転数の１次周波数をも抽出する場合には、ステップＳ５２〜Ｓ５６の処理と並行に、１次周波数に対応する周期で、第３のフィルタ済み当量比および第３の積算値の算出と、第４のフィルタ済み当量比および第４の積算値の算出とを行えばよい。
【０２０１】
また、前述した図１９に示す実施形態にように、しきい値を設定する場合には、ステップＳ５８において、第２の積算値に基づいて、対応するしきい値を求め、ステップＳ５９において、結果値としきい値とを比較すればよい。
【０２０２】
なお、フローには図示していないが、上記の所定期間中に、或る周期で上記の所定の診断条件が満たされなくなって、ステップＳ３１、Ｓ４１の判断がＮｏとなったときには、前回の周期で算出された積算値（第１、第２の診断のいずれの積算値をも含む）を、たとえばメモリ等の記憶装置に保持するのが好ましい。その後、該所定期間中に、該条件が満たされてステップＳ３１、Ｓ４１がＹｅｓになったことに応じて、該保持された積算値を記憶装置から読み出して、積算を再開する。この場合、該条件が満たされなかった間の時間は、該所定期間に含めないようにするのがよい。そうすることにより、所定期間の長さにわたって積算された結果を確実に用いた診断を行うことができ、診断精度を向上させることができる。
【０２０３】
次に、図２９〜図３１を参照して、本願発明の手法に従うシミュレーション結果の例を説明する。ここでは、第１の診断ルートに従う診断に従っている。
【０２０４】
図２９は、気筒間において空燃比がバランス状態にある場合のシミュレーション結果を示す。回転数ＮＥの上限および下限は、図２５のステップＳ１１における所定範囲に相当し、排気流量ＧＡＩＲＥＸの下限は、図２５のステップＳ１２における所定値に相当している。
【０２０５】
安定待ちタイマ（空燃比センサの出力を安定させるための時間を計時するタイマである）によって所定時間が計時された後、時間ｔ１において、所定の診断条件が満たされたことに応じて第１の診断条件フラグがゼロから１に変化する。図には示されていないが、第１の診断条件フラグが１に変化したことに応じて、所定期間を計時するタイマが作動する。
【０２０６】
時間ｔ１から時間ｔ２までの所定期間（診断モード）にわたり、前述した０．５次周波数に対応する周期で、空燃比センサからの検出当量比ＫＡＣＴをバンドパスフィルタでフィルタリングした当量比を積算し、該積算値を補正する、というプロセスが繰り返される。これにより、結果値は、所定期間ｔ１〜ｔ２にわたって増加していく（図には直線で示されているが、より詳細に見ると、図９に示すように周期毎にステップ状に増加する）。補正を行っているので、エンジン回転数ＮＥおよび排気流量ＧＡＩＲＥＸに依存することなく、結果値は、一定の増し分で増大していくこととなる。
【０２０７】
所定期間が経過した時間ｔ２において、結果値を所定のしきい値と比較する。この例では、結果値が該しきい値以下であるので、ＯＫフラグに１が設定され、バランス状態であると判断される。
【０２０８】
図３０は、気筒間の空燃比がインバランス状態の場合のシミュレーション結果例を示す。空燃比センサからの検出当量比ＫＡＣＴは、図２９に比べて大きな変動を示している。そのため、時間ｔ１からｔ２までの所定期間にわたり、結果値が増大する量は、図２９よりも大きい。
【０２０９】
時間ｔ２において、結果値を所定のしきい値と比較する。この例では、結果値が該しきい値より大きいので、ＮＧフラグに１が設定され、インバランス状態であると判断される。
【０２１０】
図３１は、気筒間の空燃比がインバランス状態の場合のシミュレーション結果の他の例を示す。図３０と異なるのは、時間ｔ２において、排気流量ＧＡＩＲＥＸに変動が生じている点である。該変動ΔＧＡＩＲＥＸは、前述した診断条件を満たさない大きさの変動である（図２５のステップＳ１７）。したがって、該変動が生じたことに応じて、第１の診断条件判定プロセス（図２５）において第１の診断条件フラグがゼロに設定される。したがって、その後に続く診断プロセス（図２６）は実行されない。診断が停止されている間、該停止の直前の周期で算出されていた積算値は、たとえばＥＣＵ１のメモリに保持される。また、時間ｔ２で診断条件フラグがゼロに設定されたことに応じて、上記所定期間を計時するタイマは、値を保持したまま停止する。
【０２１１】
その後の周期の診断条件判定プロセスにおいて第１の診断条件フラグが１に設定されると（時間ｔ３）、再び、上記所定期間を計時するタイマを作動させると共に、図２６の診断プロセスが開始される。すなわち、検出当量比ＫＡＣＴがフィルタリングされた当量比は、メモリに保持されていた積算値に加算され、該積算値が補正されて結果値が算出される。こうして、時間ｔ４において所定期間の計時が満了すると（すなわち、（ｔ１〜ｔ２）＋（ｔ３〜ｔ４）＝所定期間であり、これは、図２９および図３０の所定期間と同じ時間長さである）、結果値をしきい値と比較することによって、インバランス状態かどうかの判断が行われる。この例では、結果値がしきい値を超えたので、インバランス状態と判断され、ＮＧフラグが１に設定される。
【０２１２】
なお、各機能ブロック図に示されるバンドパスフィルタおよび積算部は、コンピュータプログラムによって実現してもよいし、ハードウェア構成要素によって実現してもよい。
【０２１３】
また、第１の診断において点火時期補正について述べたが、燃料のオクタン価（ＲＯＮ）に応じて点火時期を制御している場合には、ＲＯＮを用いて補正を行ってもよい。ＲＯＮが低いほど、点火時期は遅角側に制御されるため、ＲＯＮが低いほど、排気温度が高くなる。したがって、ＲＯＮが低いほど、排気流量が大きくなるように、ひいては積算値（または結果値）が小さくなるように、該補正を行う。あるいは、ＲＯＮが低いほどしきい値が大きくなるように補正してもよい。
【０２１４】
以上にこの発明を具体的な実施例について説明したが、この発明はこのような実施例に限定されるものでなく、また、ガソリンエンジン、ディーゼルエンジンのいずれに対しても使用することができる。
【符号の説明】
【０２１５】
１      電子制御ユニット（ECU）
２      エンジン
１６    空燃比センサ
【図１】
2011252412.tif 000005
【図２】
2011252412.tif 000006
【図３】
2011252412.tif 000007
【図４】
2011252412.tif 000008
【図５】
2011252412.tif 000009
【図６】
2011252412.tif 000010
【図７】
2011252412.tif 000011
【図８】
2011252412.tif 000012
【図９】
2011252412.tif 000013
【図１０】
2011252412.tif 000014
【図１１】
2011252412.tif 000015
【図１２】
2011252412.tif 000016
【図１３】
2011252412.tif 000017
【図１４】
2011252412.tif 000018
【図１５】
2011252412.tif 000019
【図１６】
2011252412.tif 000020
【図１７】
2011252412.tif 000021
【図１８】
2011252412.tif 000022
【図１９】
2011252412.tif 000023
【図２０】
2011252412.tif 000024
【図２１】
2011252412.tif 000025
【図２２】
2011252412.tif 000026
【図２３】
2011252412.tif 000027
【図２４】
2011252412.tif 000028
【図２５】
2011252412.tif 000029
【図２６】
2011252412.tif 000030
【図２７】
2011252412.tif 000031
【図２８】
2011252412.tif 000032
【図２９】
2011252412.tif 000033
【図３０】
2011252412.tif 000034
【図３１】
2011252412.tif 000035