(57)【要約】【課題】  複数の気筒間の空燃比のばらつきを速やかにかつ適切に解消することができる内燃機関の空燃比制御装置を提供する。【解決手段】  複数の気筒＃１〜＃４に供給される供給燃料量ＴＯＵＴi を気筒ごとに制御することにより、複数の気筒＃１〜＃４にそれぞれ供給される混合気の空燃比を制御する内燃機関の空燃比制御装置１であって、空燃比制御装置１のＥＣＵ２は、複数の気筒＃１〜＃４から排出され、合流した排気ガス中の空燃比を表す検出信号を出力する空燃比センサ１４から出力された検出信号ＫＡＣＴを、所定周波数ｆｒ１、ｆｒ２域の成分を通過させるようにフィルタリングして出力し、この出力ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒに応じて、この出力の振幅が所定値になるように、供給燃料量ＴＯＵＴi を気筒ごとに決定する（図１８、図２５、図２７、ステップ１０，１１）。【選択図】  図１１
2005133714.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒に供給される供給燃料量を気筒ごとに制御することにより、前記複数の気筒にそれぞれ供給される混合気の空燃比を制御する内燃機関の空燃比制御装置であって、
前記複数の気筒から排出され、合流した排気ガス中の空燃比を表す検出信号を出力する空燃比センサと、
当該空燃比センサから出力された検出信号を、所定周波数域の成分を通過させるようにフィルタリングするバンドパスフィルタと、
当該バンドパスフィルタの出力に応じて、当該バンドパスフィルタの出力の振幅が所定値になるように、前記供給燃料量を気筒ごとに決定する燃料量決定手段と、
を備えることを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記バンドパスフィルタは、互いに並列に設けられ、前記空燃比センサの検出信号を、互いに異なる複数の所定周波数域の成分をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタで構成され、
当該複数のバンドパスフィルタの少なくとも１つの出力に基づいて、当該複数のバンドパスフィルタの１つを選択するフィルタ選択手段をさらに備え、
前記燃料量決定手段は、前記選択された１つのバンドパスフィルタの出力に応じて、当該バンドパスフィルタの出力の振幅が前記所定値になるように、前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項３】
前記複数のバンドパスフィルタの出力の加重平均値を、当該加重平均値の前回値の絶対値および前記バンドパスフィルタの出力の今回値の絶対値を加重平均することによって、前記複数のバンドパスフィルタごとにそれぞれ算出する加重平均値算出手段をさらに備え、
前記フィルタ選択手段は、前記算出された複数の加重平均値の少なくとも１つに基づいて、前記複数のバンドパスフィルタの１つを選択することを特徴とする、請求項２に記載の内燃機関の空燃比制御装置。
【請求項４】
前記バンドパスフィルタは、互いに並列に設けられ、前記空燃比センサの検出信号を、互いに異なる複数の所定周波数域の成分をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタで構成され、
当該複数のバンドパスフィルタの出力の総和を算出する総和算出手段をさらに備え、
前記燃料量決定手段は、前記算出された総和に応じて、当該総和が前記所定値になるように、前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項５】
前記燃料量決定手段は、前記供給燃料量を所定周期ごとに決定し、
前記所定周期以下の周期で、前記空燃比センサの検出信号をサンプリングし、前記バンドパスフィルタに出力するサンプリング手段をさらに備えることを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項６】
前記内燃機関のクランク角度を検出するクランク角度検出手段と、
前記複数の気筒から排出された排気ガスが前記空燃比センサに到達するまでのむだ時間を、前記クランク角度を基準として設定するむだ時間設定手段と、をさらに備え、
前記燃料量決定手段は、前記気筒からの排気ガスの排出後、前記設定されたむだ時間が経過したタイミングで検出された前記空燃比センサの検出信号をフィルタリングした前記バンドパスフィルタの出力に応じて、当該気筒の前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項７】
前記内燃機関の運転状態を検出する運転状態検出手段をさらに備え、
前記むだ時間設定手段は、前記検出された内燃機関の運転状態に応じて、前記むだ時間を設定することを特徴とする、請求項６に記載の内燃機関の空燃比制御装置。
【請求項８】
前記バンドパスフィルタの出力に基づいて、前記気筒間の空燃比のばらつきを補正するための補正用パラメータを気筒ごとに算出する補正用パラメータ算出手段と、
当該気筒ごとに算出された複数の補正用パラメータの平均値を算出する平均値算出手段と、をさらに備え、
前記補正用パラメータを前記算出された補正用パラメータの平均値で除算することにより、補正係数を気筒ごとに算出する補正係数算出手段と、をさらに備え、
前記燃料量決定手段は、前記算出された補正係数に応じて、前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項９】
前記補正係数に基づいて、前記複数の気筒に燃料を供給する燃料供給系の所定の動作特性に対するずれを気筒ごとに判定する動作特性判定手段をさらに備えることを特徴とする、請求項８に記載の内燃機関の空燃比制御装置。
【請求項１０】
前記バンドパスフィルタの出力に基づいて、前記気筒間の空燃比のばらつきを補正するための補正係数を算出する補正係数算出手段と、
前記バンドパスフィルタの出力の絶対値が所定のしきい値よりも小さくなったときに、その直前に前記補正係数算出手段により算出された補正係数の値に前記補正係数を固定する補正係数固定手段と、をさらに備え、
前記燃料量決定手段は、前記補正係数に応じて前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項１１】
前記バンドパスフィルタの出力の絶対値が所定のしきい値よりも小さいときに、前記バンドパスフィルタの出力に基づいて、前記気筒間の空燃比のばらつきを補正するための学習補正係数を算出する学習補正係数算出手段と、
前記内燃機関の運転状態を検出する運転状態検出手段と、
前記算出された学習補正係数を、前記検出された内燃機関の運転状態に対応させて記憶する記憶手段と、
前記燃料量決定手段は、前記記憶された学習補正係数のうちの、前記検出された現在の内燃機関の運転状態に対応する前記学習補正係数に応じて、前記供給燃料量を決定することを特徴とする、請求項１に記載の内燃機関の空燃比制御装置。
【請求項１２】
前記記憶手段は、不揮発性メモリであることを特徴とする、請求項１１に記載の内燃機関の空燃比制御装置。
【請求項１３】
前記学習補正係数算出手段は、
前記バンドパスフィルタの出力に基づいて補正係数を算出する補正係数算出手段を備え、
前記算出された補正係数と、前記記憶手段に記憶された、当該補正係数を算出したときの前記内燃機関の運転状態に対応する前記学習補正係数とに応じて、前記学習補正係数を算出することを特徴とする、請求項１１または１２に記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の気筒に供給される燃料量を気筒ごとに制御することにより、複数の気筒にそれぞれ供給される混合気の空燃比を制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
一般に、内燃機関では、インジェクタ、ＥＧＲ装置および蒸発燃料処理装置などの不具合に起因して、複数の気筒に供給される混合気の空燃比が気筒間でばらつくと、排気ガスを浄化する三元触媒の浄化率が低下し、大気中に放出される排気ガス中の有害物質が増加するおそれがある。このような不具合を解消するために、従来、複数の気筒の空燃比を互いに等しくなるように制御する空燃比制御装置として、例えば特許文献１に開示されたものが知られている。この空燃比制御装置は、排気管に設けられ、排気ガス中の酸素濃度を表す検出信号を出力する空燃比センサと、この空燃比センサの出力が入力される第１および第２バンドパスフィルタと、これら第１および第２バンドパスフィルタに接続された制御ユニットと、この制御ユニットに接続されるとともに、複数の気筒の燃焼室に燃料をそれぞれ供給する複数のインジェクタとを備えている。
【０００３】
第１および第２バンドパスフィルタは、空燃比センサの出力を、互いに異なる所定の周波数域の成分を通過させるようにそれぞれフィルタリングする。制御ユニットは、これらのフィルタリングされた空燃比センサの出力に基づいて、気筒ごとに、排出された排気ガス中の酸素濃度、および排気ガス中の酸素濃度の目標値を求める。そして、求めたこれらの排気ガス中の酸素濃度およびその目標値の偏差を気筒ごとに求め、これらの偏差に基づいて、対応する気筒のインジェクタの燃料噴射量を制御することによって、複数の気筒の排気ガス中の酸素濃度を互いに等しくなるように、すなわち複数の気筒の空燃比を互いに等しくなるように制御する。以上のように、第１および第２バンドパスフィルタでフィルタリングした空燃比センサの出力に基づいて、各インジェクタの燃料噴射量を制御するのは、このフィルタリングによって、排気ガスの圧力や吸気弁の製造公差や損耗などのノイズ成分を空燃比センサの出力から除去することにより、空燃比制御のロバスト性を向上させるためである。
【０００４】
しかし、上述した従来の制御装置では、気筒ごとに求めた排気ガス中の酸素濃度とそのときに設定された一定の目標値との偏差に基づいて、対応するインジェクタの燃料噴射量を制御するので、この偏差が非常に大きいときには、すべての気筒の排気ガス中の酸素濃度がその目標値に収束するのに時間がかかってしまう。その結果、複数の気筒間の空燃比のばらつきが解消するのに要する時間が長くなることで、その間、大気中に放出される有害物質が増加するおそれがある。
【０００５】
本発明は、以上のような課題を解決するためになされたものであり、複数の気筒間の空燃比のばらつきを速やかにかつ適切に解消することができる内燃機関の空燃比制御装置を提供することを目的とする。
【０００６】
【特許文献１】特開２００２−２１３２８４号公報
【発明の開示】
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本願の請求項１に係る発明は、複数の気筒（実施形態における（以下本項において同じ）１〜４番気筒＃１〜＃４）に供給される供給燃料量（最終燃料噴射量ＴＯＵＴi ）を気筒ごとに制御することにより、複数の気筒にそれぞれ供給される混合気の空燃比を制御する内燃機関の空燃比制御装置１であって、複数の気筒から排出され、合流した排気ガス中の空燃比を表す検出信号を出力する空燃比センサ（ＬＡＦセンサ１４）と、空燃比センサから出力された検出信号（ＬＡＦセンサの出力ＫＡＣＴ）を、所定周波数（第１周波数ｆｒ１、第２周波数ｆｒ２）域の成分を通過させるようにフィルタリングするバンドパスフィルタ（ＥＣＵ２、サイクルフィルタ２３ａ、回転フィルタ２３ｂ、ステップ５１，５２）と、バンドパスフィルタの出力（第１フィルタリング値ＫＡＣＴ＿Ｆｃ，第２フィルタリング値ＫＡＣＴ＿Ｆｒ）に応じて、バンドパスフィルタの出力の振幅が所定値になるように、供給燃料量を気筒ごとに決定する燃料量決定手段（ＥＣＵ２、図１８、図２５、図２７、図３７、ステップ１０，１１）と、を備えることを特徴とする。
【０００８】
この内燃機関の空燃比制御装置によれば、バンドパスフィルタにより、排気ガス中の空燃比を表す検出信号を出力する空燃比センサの検出信号が、所定周波数域の成分が通過するようにフィルタリングされ、燃料量決定手段により、バンドパスフィルタの出力に応じて、その出力の振幅が所定値になるように、供給燃料量が気筒ごとに決定される。
【０００９】
本発明は、実験により確認された以下の事実に基づいている。すなわち、空燃比センサの検出信号を周波数解析した場合、複数の気筒に供給される混合気の空燃比が気筒間でばらついているときには、特定の周波数域のパワースペクトル密度が非常に大きくなる。一方、混合気の空燃比が気筒間でばらついていないときには、そのような特定の周波数域のパワースペクトル密度が大きくなる事象は生じない。また、バンドパスフィルタが通過させる周波数域を、気筒間で空燃比がばらついているときにパワースペクトル密度が大きくなる上記の特定の周波数域に設定し、このバンドパスフィルタによって空燃比センサの検出信号をフィルタリングすると、このバンドパスフィルタの出力は、気筒間で空燃比がばらついているときには、値０を中心として正負両側に変化する正弦波状になり、ばらついていないときには値０を示す。さらに、そのような正弦波状のバンドパスフィルタの出力は、複数の気筒のうち、よりリッチな空燃比の混合気が供給される気筒から排気ガスが主として排出されているタイミングに対応するタイミング（以下「気筒に対応するタイミング」という）では、正値になり、よりリーンな空燃比の混合気が供給される気筒に対応するタイミングでは、負値になる。以上のように、上記のバンドパスフィルタの出力の振幅の有無は、気筒間の空燃比のばらつきの有無を表すとともに、振幅がある場合、その正負によって、気筒間の空燃比の大小関係を特定することが可能である。
【００１０】
このため、例えば、上述した特定周波数域を、本発明のバンドパスフィルタの所定周波数域として設定するとともに、そのようなバンドパスフィルタの出力に応じて、この出力の振幅が所定値、例えば値０になるように、各気筒の供給燃料量を決定することによって、複数の気筒間の空燃比のばらつきを適切に解消することができる。例えば、上述したようにバンドパスフィルタの出力の正負によって気筒間の空燃比の大小関係が特定されるので、供給される混合気の空燃比がよりリッチな気筒の供給燃料量を減少させるとともに、空燃比がよりリーンな気筒の供給燃料量を増加させるというように、複数の気筒の空燃比を平均化するように制御できる。それにより、一定の目標値にすべての気筒の排気ガス中の酸素濃度を収束させる従来の場合と比較して、複数の気筒間の空燃比のばらつきを速やかに解消することができる。
【００１１】
請求項２に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、バンドパスフィルタは、互いに並列に設けられ、空燃比センサの検出信号を、互いに異なる複数の所定周波数（第１周波数ｆｒ１、第２周波数ｆｒ２）域の成分をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタ（サイクルフィルタ２３ａ、回転フィルタ２３ｂ）で構成され、複数のバンドパスフィルタの少なくとも１つの出力（第１フィルタリング値ＫＡＣＴ＿Ｆｃ，第２フィルタリング値ＫＡＣＴ＿Ｆｒ）に基づいて、複数のバンドパスフィルタの１つを選択するフィルタ選択手段（ＥＣＵ２、コントロールスイッチ２３ｇ、ステップ５７、図１８、ステップ６０〜６２）をさらに備え、燃料量決定手段は、選択された１つのバンドパスフィルタの出力に応じて、バンドパスフィルタの出力の振幅が所定値になるように、供給燃料量を決定する（ステップ６５〜６７、ステップ１００，１０１、ステップ１０，１１）ことを特徴とする。
【００１２】
この構成によれば、互いに並列に設けられた複数のバンドパスフィルタによって、空燃比センサの検出信号が、互いに異なる複数の所定周波数域の成分がそれぞれ通過するようにフィルタリングされ、フィルタ選択手段により、これらの複数のバンドパスフィルタの少なくとも１つの出力に基づいて、１つのバンドパスフィルタが選択される。また、燃料量決定手段により、この選択されたバンドパスフィルタの出力に応じて、そのバンドパスフィルタの出力の振幅が所定値になるように、各気筒の供給燃料量が決定される。本発明は、実験により確認された以下の事実に基づいている。すなわち、複数の気筒間で空燃比がばらついている場合において、例えば、４つの気筒のうち、１つの気筒のみの空燃比が他の気筒と異なるときと、空燃比が互いに等しい２つの気筒の空燃比が、空燃比が互いに等しい他の２つの気筒と異なるとき（例えば、１番および４番気筒＃１，＃４がリッチ、２番および３番気筒＃２，＃３がリーン）では、空燃比センサの検出信号のうちの気筒間の空燃比のばらつきの有無を表す特定周波数域が互いに異なる。このように、気筒間の空燃比のばらつきパターンによって、空燃比センサの検出信号のうちの気筒間の空燃比のばらつきの有無を表す特定周波数域が異なる。
【００１３】
このため、例えば、気筒間の空燃比のすべてのばらつきパターンに対応する特定周波数域を、複数のバンドパスフィルタの所定周波数域としてそれぞれ設定することにより、いかなるばらつきパターンにおいても、これらの複数のバンドパスフィルタのいずれか１つの出力の振幅によって、気筒間の空燃比のばらつきの有無を表し、気筒間の空燃比の大小関係を特定することができる。そのような複数のバンドパスフィルタの出力に基づいて、気筒間の空燃比のばらつきの有無などを良好に表すバンドパスフィルタを選択し、その出力に基づいて供給燃料量を決定することによって、いかなるばらつきパターンにおいても、複数の気筒間の空燃比のばらつきを速やかにかつ適切に解消することができる。
【００１４】
請求項３に係る発明は、請求項２に記載の内燃機関の空燃比制御装置１において、複数のバンドパスフィルタの出力の加重平均値（第１加重平均値ＫＡＣＴ＿Ｆｃｄ、第２加重平均値ＫＡＣＴ＿Ｆｒｄ）を、加重平均値の前回値の絶対値およびバンドパスフィルタの出力の今回値の絶対値を加重平均することによって、複数のバンドパスフィルタごとにそれぞれ算出する加重平均値算出手段（ＥＣＵ２、第１加重平均値算出部２３ｅ、第２加重平均値算出部２３ｆ、ステップ５７，５８）をさらに備え、フィルタ選択手段は、算出された複数の加重平均値の少なくとも１つに基づいて、複数のバンドパスフィルタの１つを選択する（ステップ６０〜６２）ことを特徴とする。
【００１５】
この構成によれば、加重平均値算出手段により、複数のバンドパスフィルタの出力の加重平均値が、その前回値の絶対値およびバンドパスフィルタの出力の今回値の絶対値を加重平均することによって、複数のバンドパスフィルタごとにそれぞれ算出される。また、フィルタ選択手段によって、これらの算出された複数の加重平均値の少なくとも１つに基づいて、供給燃料量の決定に用いられるバンドパスフィルタが選択される。
【００１６】
請求項２の発明のように、互いに異なる所定周波数域のバンドパスフィルタを用いる場合において、あるばらつきパターンによる気筒間の空燃比のばらつきが生じたときには、各気筒の空燃比の一時的な変動などが生じると、選択されているバンドパスフィルタの出力よりも他のバンドパスフィルタの出力が、気筒間の空燃比のばらつきの有無などを一時的に良好に表す場合がある。そのような場合には、各バンドパスフィルタの出力に直接的に応答して、供給燃料量の決定に用いるバンドパスフィルタを即座に選択すると、このバンドパスフィルタの切換の頻度が高くなり、気筒間の空燃比のばらつきが解消するのに時間がかかるおそれがある。これに対して、本発明によれば、上記のように算出した複数の加重平均値の少なくとも１つに基づいて、燃料量の決定に用いられるバンドパスフィルタを選択するので、各気筒の空燃比が一時的に変動しても、この変動の影響を加重平均によって吸収することができ、その結果、バンドパスフィルタの頻繁な切り換えを防止でき、したがって、各気筒の空燃比が一時的に変動したような場合でも、気筒間の空燃比のばらつきを速やかに解消することができる。
【００１７】
請求項４に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、バンドパスフィルタは、互いに並列に設けられ、空燃比センサの検出信号を、互いに異なる複数の所定周波数域の成分をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタで構成され、複数のバンドパスフィルタの出力の総和を算出する総和算出手段（ＥＣＵ２、加算器３０ａ、ステップ９０）をさらに備え、燃料量決定手段は、算出された総和に応じて、総和が所定値になるように、供給燃料量を決定する（ステップ９３〜９５，ステップ１０，１１）ことを特徴とする。
【００１８】
本発明は、実験により確認された以下の事実に基づいている。すなわち、例えば４気筒のうち、ある１つの気筒（ｎ気筒）のみの空燃比がリーン側にずれているばらつきパターンの場合に、この場合のばらつきを表す空燃比センサの検出信号のうちの特定周波数域を通過させるようにフィルタリングするバンドパスフィルタの出力は、値０を中心とする正弦波状になり、ｎ気筒に対応するタイミングでは、負値のピークになり、その気筒から２番目に燃焼が行われる気筒（ｎ＋２気筒）に対応するタイミングでは、空燃比がずれていないにも関わらず、正値のピークになる。また、上記のバンドパスフィルタに加えて、それと異なる所定の周波数域を通過させる複数のバンドパスフィルタを用いて、空燃比センサの検出信号をそれぞれフィルタリングした場合、それらの出力の総和は、正弦波状になるものの、上記のバンドパスフィルタの出力と比較して、ｎ気筒に対応するタイミングにおける負値のピーク値の絶対値が大きくなり、ｎ＋２気筒に対応するタイミングにおける正値のピーク値が小さくなる。すなわち、この出力の総和は、気筒間の空燃比の実際のばらつきにより近い特性を示す。
【００１９】
上述した構成によれば、互いに並列に設けられた複数のバンドパスフィルタにより、空燃比センサの出力のうちの互いに異なる複数の所定周波数域の成分がそれぞれ通過するようにフィルタリングされ、燃料量決定手段により、これらの複数のバンドパスフィルタの出力の振幅の総和に応じて、この総和が所定値になるように、各気筒の供給燃料量が決定される。このため、例えば、これらの複数のバンドパスフィルタの所定周波数域を、それらの出力の総和が気筒間の空燃比の実際のばらつきにより近い特性を示すようにそれぞれ設定するとともに、この総和が所定値、例えば値０になるように各気筒の供給燃料量を決定することにより、気筒間の空燃比のばらつきを、さらに速やかにかつ適切に解消することができる。
【００２０】
請求項５に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、燃料量決定手段は、供給燃料量を所定周期ごとに決定し、所定周期以下の周期で、空燃比センサの検出信号をサンプリングし、バンドパスフィルタに出力するサンプリング手段（ＥＣＵ２、ステップ５０）をさらに備えることを特徴とする。
【００２１】
この構成によれば、空燃比センサの検出信号は、サンプリング手段により、各気筒の供給燃料量の決定周期以下の周期でサンプリングされ、バンドパスフィルタに出力される。このように、空燃比センサの検出信号を、供給燃料量の決定周期、すなわち各気筒から排気ガスが排出される周期と同じまたはそれよりも短い周期ごとにサンプリングするので、そのようにサンプリングされた空燃比センサの検出信号は、各気筒の排気ガス中の空燃比の変化状態をきめ細かく表す。これにより、バンドパスフィルタの出力は、気筒間の空燃比のばらつきの有無および大小関係をよりきめ細かく適切に表すので、気筒間の空燃比のばらつきを、より速やかにかつ適切に解消することができる。
【００２２】
請求項６に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、内燃機関のクランク角度を検出するクランク角度検出手段（クランク角センサ１３）と、複数の気筒から排出された排気ガスが空燃比センサに到達するまでのむだ時間を、クランク角度を基準として設定するむだ時間設定手段（ＥＣＵ２、第１遅延要素２３ｃ、第２遅延要素２３ｄ、ステップ５３，５５）と、をさらに備え、燃料量決定手段は、気筒からの排気ガスの排出後、設定されたむだ時間が経過したタイミングで検出された空燃比センサの検出信号をフィルタリングしたバンドパスフィルタの出力に応じて、この気筒の供給燃料量を決定する（ステップ５４，５６，図１８、図２５、図２７、図３７、ステップ１０，１１）ことを特徴とする。
【００２３】
この構成によれば、むだ時間設定手段によって、複数の気筒から排出された排気ガスが空燃比センサに到達するまでのむだ時間が、クランク角度を基準として設定され、燃料量決定手段によって、各気筒からの排気ガスの排出後、設定されたむだ時間が経過したタイミングで検出された空燃比センサの検出信号をフィルタリングしたバンドパスフィルタの出力に応じて、各気筒の供給燃料量が決定される。本発明では、各気筒から排出された排気ガスが合流した位置に空燃比センサが設けられているので、排気ガスが各気筒から排出された後、空燃比センサに到達するまでに、むだ時間が生じる。このため、上述したように、各気筒の供給燃料量の決定に用いるバンドパスフィルタの出力として、各気筒からの排気ガスの排出後、このむだ時間が経過したタイミングで検出された空燃比センサの検出信号に基づくものを採用することによって、各気筒の排気ガス中の空燃比が良好に反映された出力を用いて、各気筒の供給燃料量を決定することができる。したがって、むだ時間を補償しながら、供給燃料量を適切に決定することができる。
【００２４】
請求項７に係る発明は、請求項６に記載の内燃機関の空燃比制御装置１において、内燃機関の運転状態（吸気管内絶対圧ＰＢＡ，エンジン回転数ＮＥ）を検出する運転状態検出手段（吸気管内絶対圧センサ１１、クランク角センサ１３、ＥＣＵ２）をさらに備え、むだ時間設定手段は、検出された内燃機関の運転状態にさらに応じて、むだ時間を設定する（ＥＣＵ２、ステップ５３，５５）ことを特徴とする。
【００２５】
上述した各気筒の排気ガスが空燃比センサに到達するまでのむだ時間の長さは、内燃機関の運転状態の変化に伴って変化する。これに対して、本発明によれば、むだ時間を、検出された内燃機関の運転状態に応じて設定することによって、運転状態の変化に応じて、むだ時間を適切に補償しながら、各気筒の排気ガス中の空燃比が良好に反映されたバンドパスフィルタの出力を、最適に得ることができる。
【００２６】
請求項８に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、バンドパスフィルタの出力に基づいて、気筒間の空燃比のばらつきを補正するための補正用パラメータ（ばらつき補正係数暫定値ｋｅａｆi ）を気筒ごとに算出する補正用パラメータ算出手段（ＥＣＵ２、ばらつき補正係数算出部２３ｉ、３０ｃ、４０ｂ、６０ａ、ステップ６５、ステップ９３、ステップ１０１）と、気筒ごとに算出された複数の補正用パラメータの平均値（移動平均値ＫＥＡＦａｖｅ）を算出する平均値算出手段（ＥＣＵ２、ばらつき補正係数算出部２３ｉ、３０ｃ、４０ｂ、６０ａ、ステップ６６、ステップ９４）と、補正用パラメータを算出された補正用パラメータの平均値で除算することにより、補正係数（ばらつき補正係数ＫＥＡＦi ）を気筒ごとに算出する補正係数算出手段（ＥＣＵ２、ばらつき補正係数算出部２３ｉ、３０ｃ、４０ｂ、６０ａ、ステップ６７、ステップ９５）と、をさらに備え、燃料量決定手段は、算出された補正係数に応じて、供給燃料量を決定する（ステップ１０，１１）ことを特徴とする。
【００２７】
この構成によれば、補正用パラメータ算出手段により、バンドパスフィルタの出力に基づいて、気筒間の空燃比のばらつきを補正するための補正用パラメータが気筒ごとに算出されるとともに、これらの複数の補正用パラメータの平均値が、平均値算出手段により算出される。また、補正係数算出手段により、補正用パラメータを補正用パラメータの平均値で除算することによって、補正係数が気筒ごとに算出される。さらに、燃料量決定手段により、補正係数に応じて、各気筒の供給燃料量が決定される。
【００２８】
空燃比センサの検出信号をフィルタリングしたバンドパスフィルタの出力には、ノイズが含まれる場合がある。そのような場合に、このバンドパスフィルタの出力を直接用いて、気筒間の空燃比のばらつきを補正するための補正係数を気筒ごとに算出し、算出した補正係数に応じて各気筒の供給燃料量を決定すると、各気筒の補正係数を上記のノイズの影響によって適切に算出することができず、それにより、各気筒に供給される混合気の空燃比が変動するおそれがある。これに対して、本発明によれば、上述したように、各気筒の補正用パラメータを補正用パラメータの平均値で除算することにより算出した補正係数を用いて供給燃料量を決定するので、バンドパスフィルタの出力にノイズが含まれている場合でも、各気筒の補正係数へのノイズの影響を平準化することができるので、各気筒の補正係数を適切に算出でき、したがって、各気筒の空燃比の変動を回避することができる。
【００２９】
請求項９に係る発明は、請求項８に記載の内燃機関の空燃比制御装置１において、補正係数に基づいて、複数の気筒に燃料を供給する燃料供給系（インジェクタ６）の所定の動作特性に対するずれを気筒ごとに判定する動作特性判定手段（ＥＣＵ２、図１９）をさらに備えることを特徴とする。
【００３０】
この構成によれば、動作特性判定手段により、補正係数に基づいて、各気筒の燃料供給系の所定の動作特性に対するずれが判定される。前述したように、補正係数は、気筒間の空燃比のばらつきを補正するための補正用パラメータに基づき、バンドパスフィルタの出力に含まれたノイズの影響が平準化された値として算出されるため、補正係数による補正が行われなかった場合の気筒間におけるもともとの相対的な空燃比のばらつきの度合を表す。また、このような気筒間のもともとの空燃比のばらつきは、インジェクタや吸気弁を含む燃料供給系の動作特性が気筒間でばらついていることによって生じる。したがって、本発明によれば、補正係数に基づいて、燃料供給系の所定の動作特性に対するずれを、気筒ごとに適切に判定することができる。特に、そのように判定された動作特性のずれが過大な場合には、その気筒のインジェクタなどが正常に動作していないと判定することができる。
【００３１】
請求項１０に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、バンドパスフィルタの出力に基づいて、気筒間の空燃比のばらつきを補正するための補正係数（ばらつき補正係数ＫＥＡＦi ）を算出する補正係数算出手段（ＥＣＵ２、ばらつき補正係数算出部２３ｉ、３０ｃ、４０ｂ、ステップ６１，６２，６５〜６７、ステップ９０，９３〜９５）と、バンドパスフィルタの出力の絶対値が所定のしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さくなったときに、その直前に補正係数算出手段により算出された補正係数の値に補正係数を固定する補正係数固定手段（ＥＣＵ２、算出用フィルタリング値決定部２３ｈ、３０ｂ、４０ａ、ステップ６３，６４、ステップ８０、ステップ９１，９２）と、をさらに備え、燃料量決定手段は、補正係数に応じて供給燃料量を決定する（ステップ１０，１１）ことを特徴とする。
【００３２】
この構成によれば、気筒間の空燃比のばらつきを補正するための補正係数が、補正係数算出手段によりバンドパスフィルタの出力に基づいて算出され、算出された補正係数に応じて、各気筒の供給燃料量が決定される。これにより、バンドパスフィルタの出力の振幅が所定値、例えば値０に収束することによって、複数の気筒間の空燃比のばらつきが解消される。また、この補正係数は、バンドパスフィルタの出力の絶対値がしきい値よりも小さくなったときに、補正係数固定手段によって、その直前に算出された値に固定される。
【００３３】
これは次の理由による。すなわち、空燃比センサの検出信号をフィルタリングしたバンドパスフィルタの出力には通常、ノイズが含まれるため、複数の気筒の空燃比が互いに等しくても、バンドパスフィルタの出力は完全には値０にならない。このため、バンドパスフィルタの出力に基づいて算出した補正係数に応じて供給燃料量を決定し続けると、気筒間の空燃比のばらつきが一旦、解消された後に、バンドパスフィルタの出力中のノイズにより補正係数が変動することによって、気筒間の空燃比のばらつきが再び生じ、さらにその後に解消されるというハンチング現象が生じるおそれがあるためである。
【００３４】
本発明によれば、バンドパスフィルタの出力の絶対値がしきい値よりも小さくなったとき、すなわち気筒間の空燃比のばらつきが解消されたとみなされたときに、その直前に補正係数算出手段により算出された値に補正係数を固定する。これにより、バンドパスフィルタの出力に基づく補正係数の算出・更新を行わないようにすることによって、バンドパスフィルタの出力中のノイズに起因する補正係数の変動を防止でき、その結果、上述したハンチング現象を回避することができる。
【００３５】
以上のように、バンドパスフィルタの出力に基づく補正係数に応じて供給燃料量を決定することによって、気筒間の空燃比のばらつきを解消できるとともに、その後は、補正係数を直前の値に固定することによって、気筒間の空燃比のばらつきのない状態に維持することができる。
【００３６】
請求項１１に係る発明は、請求項１に記載の内燃機関の空燃比制御装置１において、バンドパスフィルタの出力の絶対値が所定のしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいときに、バンドパスフィルタの出力に基づいて、気筒間の空燃比のばらつきを補正するための学習補正係数ＫＭＥＭi を算出する学習補正係数算出手段（学習補正係数算出記憶部６０ｂ、ＥＣＵ２、ステップ１２３）と、内燃機関３の運転状態（吸気管内絶対圧ＰＢＡ、エンジン回転数ＮＥ）を検出する運転状態検出手段（吸気管内絶対圧センサ１１、クランク角センサ１３、ＥＣＵ２）と、算出された学習補正係数ＫＭＥＭi を、検出された内燃機関３の運転状態に対応させて記憶する記憶手段（学習補正係数算出記憶部６０ｂ、ＥＣＵ２、ＥＥＰＲＯＭ２ａ、図３８、ステップ１２４）と、燃料量決定手段は、記憶された学習補正係数ＫＭＥＭi のうちの、検出された現在の内燃機関３の運転状態に対応する学習補正係数（第１検索値ＫＭＥＭＩＰi ）に応じて、供給燃料量を決定する（ステップ１００，１０１，６６，６７，１０，１１）ことを特徴とする。
【００３７】
この構成によれば、バンドパスフィルタの出力の絶対値が所定のしきい値よりも小さいときに、気筒間の空燃比のばらつきを補正するための学習補正係数が、学習補正係数算出手段によりバンドパスフィルタの出力に基づいて算出される。また、算出された学習補正係数が、検出された内燃機関の運転状態に対応させて記憶手段によって記憶される。さらに、記憶された学習補正係数のうちの、検出された現在の内燃機関の運転状態に対応する学習補正係数に応じて、供給燃料量が決定される。
【００３８】
前述したように、気筒間の空燃比のばらつきは、インジェクタなどの不具合に起因して生じるため、内燃機関の運転状態に応じて、そのばらつきの度合が異なる傾向にある。このため、請求項１の作用で述べたように、バンドパスフィルタの出力に応じて供給燃料量を決定することによって空燃比のばらつきが一旦、解消されても、内燃機関の運転状態が変化するのに伴って、空燃比のばらつきが再度、発生する場合がある。
【００３９】
これに対して、本発明によれば、学習補正係数は、バンドパスフィルタの出力の絶対値がしきい値よりも小さいとき、すなわち、気筒間で空燃比がほとんどばらついていないとみなされる状況で算出されるので、空燃比のばらつきを補正するのに最適である。また、そのように算出した学習補正係数を、内燃機関の運転状態に対応させて記憶する。したがって、内燃機関の運転状態に応じて、そのときの実際の内燃機関の運転状態に最適な学習補正係数を用いて、供給燃料量を決定できる。その結果、学習補正係数を用いた供給燃料量のフィードフォワード制御によって、内燃機関の運転状態に応じて空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。
【００４０】
請求項１２に係る発明は、請求項１１に記載の内燃機関の空燃比制御装置１において、前記記憶手段は、不揮発性メモリであることを特徴とする。
【００４１】
この構成によれば、学習補正係数は不揮発性メモリに記憶される。このため、例えば、内燃機関の始動時において、前回までの内燃機関の運転中に記憶された学習補正係数を用いて供給燃料量を決定できる。また、請求項１の作用で述べたように、供給燃料量を、空燃比センサの出力である検出信号をフィルタリングしたバンドパスフィルタの出力に応じて決定するので、内燃機関の始動後、空燃比センサが活性化するまでは、供給燃料量を適切に決定できず、その結果、発生した空燃比のばらつきを解消できないおそれがある。これに対して、本発明によれば、内燃機関の始動後、前回までの内燃機関の運転中に記憶された学習補正係数を用いて供給燃料量を決定できるので、空燃比センサが活性化していない状態でも、空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。
【００４２】
請求項１３に係る発明は、請求項１１または１２に記載の内燃機関の空燃比制御装置１において、学習補正係数算出手段は、バンドパスフィルタの出力に基づいて補正係数（ばらつき補正係数ＫＥＡＦi ）を算出する補正係数算出手段（ばらつき補正係数算出部６０ａ、ＥＣＵ２、ステップ６１，６２，１０１，６６，６７）を備え、算出された補正係数と、記憶手段に記憶された、補正係数を算出したときの内燃機関３の運転状態に対応する学習補正係数（第２検索値ＫＭＥＭＩＰi ’）とに応じて、学習補正係数ＫＭＥＭi を算出する（ステップ１２３）ことを特徴とする。
【００４３】
この構成によれば、補正係数算出手段により、補正係数がバンドパスフィルタの出力に基づいて算出される。また、学習補正係数は、この補正係数と、補正係数を算出したときの内燃機関の運転状態に対応する、すでに記憶された学習補正係数とに応じて算出される。そして、算出された学習補正係数が記憶され、更新されるとともに、供給燃料量の決定に用いられる。
【００４４】
バンドパスフィルタの出力は、空燃比センサの出力である検出信号をフィルタリングしたものであるので、このバンドパスフィルタの出力にノイズが含まれる場合がある。このため、気筒間で空燃比がほとんどばらついていないとみなされる状況で、バンドパスフィルタの出力に基づいて学習補正係数を算出しても、そのノイズなどの影響によって、算出した学習補正係数をそのまま用いることが適切でない場合がある。これに対して、本発明によれば、バンドパスフィルタの出力に基づいて算出した補正係数をそのまま学習補正係数として用いるのではなく、そのように算出した補正係数とすでに記憶された学習補正係数とに応じて学習補正係数を算出するので、学習補正係数へのバンドパスフィルタの出力中のノイズなどの影響を抑制することができる。また、この学習補正係数の算出の際に、補正係数を算出したときの内燃機関の運転状態に対応する学習補正係数を用いるので、学習補正係数を、内燃機関の運転状態に応じて適切に算出することができる。
【発明を実施するための最良の形態】
【００４５】
以下、図面を参照しながら、本発明の第１実施形態に係る内燃機関の空燃比制御装置について説明する。図１に示すように、空燃比制御装置１は、ＥＣＵ２を備えており、内燃機関（以下「エンジン」という）３は、４つの１〜４番気筒＃１〜＃４（複数の気筒）を備えた、車両（図示せず）用の４サイクル直列４気筒型ガソリンエンジンである。
【００４６】
エンジン３の吸気管４に設けられたスロットル弁５には、スロットル弁開度センサ１０が設けられている。スロットル弁開度センサ１０は、例えばポテンショメータなどで構成されており、スロットル弁５の開度（以下「スロットル弁開度」という）ＴＨを検出し、その検出信号をＥＣＵ２に出力する。
【００４７】
また、吸気管４のスロットル弁５よりも下流側には、吸気管内絶対圧センサ１１（運転状態検出手段）が設けられている。吸気管内絶対圧センサ１１は、例えば半導体圧力センサなどで構成されており、吸気管４内の吸気管内絶対圧ＰＢＡ（内燃機関の運転状態）を検出し、その検出信号をＥＣＵ２に出力する。
【００４８】
さらに、吸気管４は、吸気マニホルド４ａの４つの分岐部４ｂを介して４つの気筒＃１〜＃４にそれぞれ接続されている。各分岐部４ｂには、各気筒の吸気ポート（図示せず）の上流側に、インジェクタ６（燃料供給系）が取り付けられている。各インジェクタ６は、エンジン３の運転時に、ＥＣＵ２からの駆動信号によって、その開弁時間である燃料噴射量および噴射タイミングが制御される。なお、この燃料噴射は、４つの気筒＃１〜＃４において、＃１→＃３→＃４→＃２の順で行われる。
【００４９】
また、エンジン３の本体およびクランクシャフト（図示せず）には、水温センサ１２およびクランク角センサ１３（クランク角度検出手段、運転状態検出手段）がそれぞれ取り付けられている。水温センサ１２は、例えばサーミスタなどで構成されており、エンジン３のシリンダブロック内を循環する冷却水の温度であるエンジン水温ＴＷを検出し、その検出信号をＥＣＵ２に出力する。クランク角センサ１３は、クランクシャフトの回転に伴い、いずれもパルス信号であるＣＲＫ信号およびＴＤＣ信号をＥＣＵ２に出力する。このＣＲＫ信号は、所定のクランク角（例えば３０゜）ごとに１パルスが出力される。ＥＣＵ２は、このＣＲＫ信号に応じ、エンジン３の回転数（以下「エンジン回転数」という）ＮＥ（内燃機関の運転状態）を算出する。ＴＤＣ信号は、各気筒のピストン（図示せず）が吸気行程のＴＤＣ位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、４気筒タイプの本例では、クランク角１８０゜ごとに１パルスが出力される。
【００５０】
さらに、エンジン３には、気筒判別センサ（図示せず）が設けられており、この気筒判別センサは、４つの気筒＃１〜＃４を判別するためのパルス信号を気筒判別信号としてＥＣＵ２に出力する。
【００５１】
排気管７の排気マニホルド７ａでは、４つの気筒＃１〜＃４からそれぞれ延びる４つの排気管部が、集合部７ｂにおいて集合している。また、排気管７の排気マニホルド７ａの集合部７ｂよりも下流側には、上流側から順に、第１および第２触媒装置８ａ，８ｂが間隔を存して設けられている。これらの触媒装置８ａ，８ｂは、ＮＯｘ触媒と３元触媒を組み合わせたものであり、このＮＯｘ触媒は、イリジウム触媒（イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体）をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物（ＬａＣｏＯ3 粉末とシリカの焼成体）をさらに被覆したものである。また、第１および第２触媒装置８ａ，８ｂは、ＮＯｘ触媒による酸化還元作用により、リーンバーン運転時の排気ガス中のＮＯｘを浄化するとともに、３元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のＣＯ、ＨＣおよびＮＯｘを浄化する。
【００５２】
さらに、排気管７の第１および第２触媒装置８ａ，８ｂの間には、酸素濃度センサ（以下「Ｏ２センサ」という）１５が取り付けられている。Ｏ２センサ１５は、ジルコニアおよび白金電極などで構成され、第１触媒装置８ａの下流側の排気ガス中の酸素濃度に基づく出力ＶｏｕｔをＥＣＵ２に送る。Ｏ２センサ１５の出力Ｖｏｕｔは、燃焼した混合気が理論空燃比よりも燃料リッチのときには、ハイレベルの電圧値（例えば０．８Ｖ）になり、燃料リーンのときには、ローレベルの電圧値（例えば０．２Ｖ）になるとともに、混合気が理論空燃比付近のときには、ハイレベルとローレベルの間の所定の目標値Ｖｏｐ（例えば０．６Ｖ）になる。
【００５３】
また、排気管７には、第１触媒装置８ａよりも上流側の排気マニホルド７ａの集合部７ｂ付近に、ＬＡＦセンサ１４（空燃比センサ）が取り付けられている。ＬＡＦセンサ１４は、Ｏ２センサ１５と同様のセンサとリニアライザなどの検出回路とを組み合わせることによって構成されており、リッチ領域からリーン領域までの広範囲な空燃比の領域において排気ガス中の酸素濃度をリニアに検出し、その酸素濃度に比例する出力ＫＡＣＴ（空燃比センサの検出信号）をＥＣＵ２に送る。この出力ＫＡＣＴは、集合部７ｂ付近の排気ガス中の空燃比を当量比として表す。ＥＣＵ２は、ＬＡＦセンサ１４の出力ＫＡＣＴを、ＣＲＫ信号に同期して読み込むとともに、読み込んだデータをＲＡＭ内に記憶する。
【００５４】
ＥＣＵ２にはそれぞれ、アクセル開度センサ１６から、車両のアクセルペダル（図示せず）の踏み込み量（以下「アクセル開度」という）ＡＰを表す検出信号が、大気圧センサ１７から、大気圧ＰＡを表す検出信号が、吸気温センサ１８から、吸気温ＴＡを表す検出信号が、出力される。
【００５５】
ＥＣＵ２は、Ｉ／Ｏインターフェース、ＣＰＵ、ＲＡＭ、ＲＯＭおよびＥＥＰＲＯＭ２ａ（記憶手段）などからなるマイクロコンピュータで構成されている。前述した各種のセンサ１０〜１８からの出力はそれぞれ、Ｉ／ＯインターフェースでＡ／Ｄ変換や整形がなされた後、ＣＰＵに入力される。
【００５６】
ＣＰＵは、これらの入力信号に応じて、エンジン３の運転状態を判別し、判別した運転状態に応じ、ＲＯＭに記憶された制御プログラムなどに従って、空燃比制御処理を実行することにより、各気筒に供給される混合気の空燃比を制御するとともに、各気筒のインジェクタ６および吸気弁（図示せず）を含む燃料供給系が正常に動作しているか否かを、後述するように判定する。なお、本実施形態では、ＥＣＵ２により、バンドパスフィルタ、燃料量決定手段、複数のバンドパスフィルタ、フィルタ選択手段、加重平均値算出手段、総和算出手段、サンプリング手段、むだ時間設定手段、運転状態検出手段、補正用パラメータ算出手段、平均値算出手段、補正係数算出手段、動作特性判定手段、補正係数固定手段、学習補正係数算出手段、および記憶手段が構成されている。
【００５７】
図２に示すように、空燃比制御装置１は、基本燃料噴射量算出部２１、ＳＴＲ（Self Tuning Regulator）２２、ばらつき補正部２３、付着補正部２４を備えており、これらはいずれも、ＥＣＵ２により構成されている。
【００５８】
この空燃比制御装置１では、まず、基本燃料噴射量算出部２１により、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じ、マップ（図示せず）を検索することによって、基本燃料噴射量ＴＩＢＳが算出される。次いで、ＳＴＲ２２により、フィードバック補正係数ＫＳＴＲが算出されるとともに、ばらつき補正部２３により、ばらつき補正係数ＫＥＡＦi （補正係数）が気筒ごとに後述するように算出される。
【００５９】
次に、上記の基本燃料噴射量ＴＩＢＳに、補正目標空燃比ＫＣＭＤＭ、総補正係数ＫＴＯＴＡＬ、フィードバック補正係数ＫＳＴＲおよびばらつき補正係数ＫＥＡＦi がそれぞれ乗算されることにより、気筒ごとの要求燃料量ＴＣＹＬi が算出される。次いで、付着補正部２４により、今回の燃焼サイクルでインジェクタ６から噴射される燃料が燃焼室の内壁面に付着する割合などが、エンジン３の運転状態に応じて算出され、この算出された割合に基づいて、気筒ごとの要求燃料量ＴＣＹＬi が補正されることで、気筒ごとの最終燃料噴射量ＴＯＵＴi （供給燃料量）が算出される。そして、この算出した最終燃料噴射量ＴＯＵＴi に基づいた駆動信号で、対応するインジェクタ６を駆動することにより、混合気の空燃比を気筒ごとに制御する。なお、最終燃料噴射量ＴＯＵＴi などにおける添字「ｉ」は、気筒の番号を表す気筒番号値である（ｉ＝１〜４）。
【００６０】
次いで、ＳＴＲ２２について説明する。ＳＴＲ２２は、ＬＡＦセンサ１４の出力ＫＡＣＴを目標空燃比ＫＣＭＤに一致させるために、フィードバック補正係数ＫＳＴＲを算出するものであり、オンボード同定器２２ａおよびＳＴＲコントローラ２２ｂにより構成されている。また、ＳＴＲ２２では、以下に述べるアルゴリズムにより、オンボード同定器２２ａでモデルパラメータベクトルθi が同定されるとともに、ＳＴＲコントローラ２２ｂでフィードバック補正係数ＫＳＴＲが算出される。
【００６１】
まず、１〜４番気筒＃１〜＃４を、対応する気筒へのフィードバック補正係数ＫＳＴＲiを入力とし、ＬＡＦセンサ１４の出力ＫＡＣＴを出力とする制御対象として見なすとともに、これらの制御対象を離散時間系モデルとしてモデリングすると、図３に示す式（１）のようになる。同式（１）において、記号ｋは離散化した時間を表しており、記号（ｋ）付きの各離散データは、１燃焼サイクルごとに、すなわちＴＤＣ信号が連続して４回発生するごとにサンプリングされたデータであることを示している。この点は、以下の離散データ（時系列データ）においても同様である。
【００６２】
ここで、目標空燃比ＫＣＭＤに対するＬＡＦセンサ１４の出力ＫＡＣＴのむだ時間は、燃焼サイクル３回分程度と推定されるので、ＫＣＭＤ（ｋ）＝ＫＡＣＴ（ｋ＋３）の関係が成立し、これを式（１）に適用すると、図３の式（２）が導出される。
【００６３】
また、式（１）のモデルパラメータｂ０i （ｋ），ｒ１i （ｋ），ｒ２i （ｋ），ｒ３i （ｋ），ｓ０i （ｋ）のベクトルθi （ｋ）は、図３の式（３）〜（９）の同定アルゴリズムにより同定される。同式（３）におけるＫＰi （ｋ）はゲイン係数のベクトルを、ｉｄｅi （ｋ）は同定誤差を、それぞれ表している。また、式（４）におけるθi （ｋ）T は、θi （ｋ）の転置行列を表している。なお、以下の説明では、「ベクトル」という表記を適宜、省略する。
【００６４】
上記式（３）の同定誤差ｉｄｅi （ｋ）は、図３の式（５）〜（７）により算出され、式（６）のＫＡＣＴ＿ＨＡＴi （ｋ）は、ＬＡＦセンサ１４の出力ＫＡＣＴの同定値を表している。さらに、上記ゲイン係数のベクトルＫＰi （ｋ）は、図３の式（８）により算出され、この式（８）のＰi （ｋ）は、図３の式（９）で定義される５次の正方行列である。
【００６５】
次いで、ＬＡＦセンサ１４の出力ＫＡＣＴが目標空燃比ＫＣＭＤに一致するようにフィードバック補正係数ＫＳＴＲを算出するために、オンボード同定器２２ａにより同定された１番気筒＃１のモデルパラメータベクトルθ1 を、ＴＤＣ信号の発生タイミングに同期してオーバーサンプリングするとともに、その移動平均値θ＿ａｖｅを算出する。
【００６６】
具体的には、モデルパラメータベクトルθ1 の移動平均値θ＿ａｖｅ（ｎ）を、図４の式（１０）により算出するとともに、これを用いて、図４の式（１２）により、フィードバック補正係数ＫＳＴＲ（ｎ）を算出する。なお、式（１０）におけるθｂｕｆは、１番気筒＃１のモデルパラメータベクトルθ1 のオーバーサンプリング値を示しており、移動平均値θ＿ａｖｅ（ｎ）の転置行列は、図４の式（１１）のように規定される。これらの式（１０）〜（１２）において、記号ｎは、離散化した時間を表しており、記号（ｎ）付きの各離散データは、ＴＤＣ信号が１回発生するごとに、これに同期してサンプリングされたデータであることを示している。この点は、以下の離散データにおいても同様である。したがって、ｋ−ｆ＝ｎ−４・ｆ（ｆ：整数）の関係が成立するので、これを図３の式（２）に適用すると、上記式（１２）が導出される。
【００６７】
また、式（１０）のαは、所定の整数であり、本実施形態では、α＝１１に設定される。これは、以下の理由による。すなわち、前述したように、目標空燃比ＫＣＭＤに対するＬＡＦセンサ１４の出力ＫＡＣＴのむだ時間は、燃焼サイクル３回分であるため、モデルパラメータベクトルθの更新によって起こる制御系の共振周期も、３サイクルとなる。したがって、このような制御系の共振を抑制するフィルタとしては、くし型の阻止帯域を３サイクル周期で備える１２タップの移動平均値フィルタが最適であるので、上記のようにα＝１１と設定される。さらに、モデルパラメータベクトルθi （ｋ）を同定する同定アルゴリズムは、図４の式（１３）〜（１９）のようになる。
【００６８】
以上のように、ＳＴＲ２２のオンボード同定器２２ａでは、図４の式（１３）〜（１９）に示す同定アルゴリズムによって、モデルパラメータベクトルθi （ｋ）が同定され、ＳＴＲコントローラ２２ｂでは、図４の式（１０）〜（１２）により、フィードバック補正係数ＫＳＴＲ（ｎ）が算出される。
【００６９】
次に、ばらつき補正部２３について説明する。ばらつき補正部２３は、４つの気筒＃１〜＃４に供給される混合気の空燃比の気筒間でのばらつきを解消するために、ばらつき補正係数ＫＥＡＦi を気筒ごとに算出するものである。まず、その概念について説明する。
【００７０】
図５は、ＬＡＦセンサ１４の出力ＫＡＣＴを周波数解析することによって得られたパワースペクトルを示している。具体的には、４つの気筒間で空燃比が、（ａ）互いに等しい場合、（ｂ）２気筒ずれパターン以外のばらつきパターン（以下「非２気筒ずれパターン」という）でばらつている場合、（ｃ）２気筒ずれパターンでばらついている場合を示している。ここで、２気筒ずれパターンとは、前述したように燃料噴射が＃１→＃３→＃４→＃２の順で行われる場合において、１番および４番気筒＃１，＃４に供給される混合気の空燃比が互いに等しいとともに、３番および２番気筒＃３，＃２の空燃比が互いに等しく、かつ１番および４番気筒＃１，＃４と異なるばらつきパターンをいう。例えば、１番および４番気筒＃１，＃４の空燃比が互いに等しくリッチ、２番および３番気筒＃２，＃３の空燃比が互いに等しくリーンな場合である。また、非２気筒ずれパターンとは、２気筒ずれパターン以外のばらつきパターンを示し、例えば、１番および３番気筒＃１，＃３の空燃比がリッチ、２番および４番気筒＃２，＃４の空燃比がリーンの場合である。同図（ｂ）、（ｃ）に示すように、気筒＃１〜＃４間で空燃比が非２気筒ずれパターンおよび２気筒ずれパターンでばらついている場合には、特定の第１および第２周波数ｆｒ１，ｆｒ２（所定周波数）域においてそれぞれ、非常に大きなパワースペクトル密度（以下「ＰＳＤ」という）が得られるのに対し、ばらつきがない場合（ａ）には、そのような事象が生じないことが確認された。第１周波数ｆｒ１は、１燃焼サイクル、すなわち４回分のＴＤＣ信号の出力に同期した脈動周波数であり、第２周波数ｆｒ２は、エンジン３のクランクシャフトの１回転、すなわち２回分のＴＤＣ信号の出力に同期した脈動周波数である。
【００７１】
また、以上の点に着目し、気筒間の空燃比のばらつきをシミュレーションし、次のような実験を行った。エンジン３のような４サイクル直列４気筒タイプのエンジンの場合、図６に示すように、気筒＃１→＃３→＃４→＃２の順でＴＤＣ信号（記号ｎで図示）の出力ごとに各気筒から排出された排気ガスが、排気管７の集合部７ｂで合流し、この集合部７ｂの排気ガス中の空燃比が、ＬＡＦセンサ１４の出力ＫＡＣＴとして出力されるとみなせる。このため、図７に示すように、４つの気筒＃１〜＃４の排気ガス中の空燃比ＫＡＣＴ1 〜ＫＡＣＴ4 を、各燃焼サイクルごとに出力される三角波形の第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 としてそれぞれ模擬的に生成し、これらの総和をＬＡＦセンサ１４の模擬出力ＫＡＣＴＭＩとした。そして、この模擬出力ＫＡＣＴＭＩを、上述した第１および第２周波数ｆｒ１，ｆｒ２域の成分をそれぞれ通過させるようにフィルタリングする第１および第２バンドパスフィルタに入力した。なお、同図の縦軸は当量比を示している。
【００７２】
その結果、図８に示すように、第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 が互いに等しい場合、すなわち、気筒間の空燃比のばらつきがないときには、第１および第２バンドパスフィルタの出力である第１および第２フィルタリング値ＦＩＬ１，ＦＩＬ２は、いずれも０を示した。
【００７３】
また、図９に示すように、第１および第４模擬出力ＫＡＣＴＭＩ1 ，ＫＡＣＴＭＩ4 が、第２および第３模擬出力ＫＡＣＴＭＩ2 ，ＫＡＣＴＭＩ3 よりも大きい２気筒ずれパターンの場合には、第２フィルタリング値ＦＩＬ２として、クランクシャフトの１回転と等しい周期で、値０を中心に正負両側に比較的大きな振幅で変化する正弦波状の波形が得られた。さらに、第１フィルタリング値ＦＩＬ１として、１燃焼サイクルと等しい周期で、値０を中心に正負両側に比較的小さな振幅で変化する正弦波状の波形が得られた。また、第２フィルタリング値ＦＩＬ２は、第１および第４模擬出力ＫＡＣＴＭＩ1 ，ＫＡＣＴＭＩ4 が入力されるタイミングでは、正値になるとともに、第２および第３模擬出力ＫＡＣＴＭＩ2 ，ＫＡＣＴＭＩ3 が入力されるタイミングでは、負値になり、また、第１模擬出力ＫＡＣＴＭＩ1 と第３模擬出力ＫＡＣＴＭＩ3 との差が大きいほど、前者のタイミングでは、より大きな正値になり、後者のタイミングでは、絶対値がより大きな負値になった。
【００７４】
さらに、図１０に示すように、非２気筒ずれパターンの場合、例えば、第３模擬出力ＫＡＣＴＭＩ3 のみが他の模擬出力よりも小さいときには、２気筒ずれパターンのときと異なり、第１フィルタリング値ＦＩＬ１として、比較的大きな振幅の正弦波状の波形が得られるとともに、第２フィルタリング値ＦＩＬ２として、比較的小さな振幅の正弦波状の波形が得られた。また、第１フィルタリング値ＦＩＬ１は、第１および第４模擬出力ＫＡＣＴＭＩ1 ，ＫＡＣＴＭＩ4 が入力されるタイミングでは、０になるとともに、第２模擬出力ＫＡＣＴＭＩ2 が入力されるタイミングでは、正値になり、第３模擬出力ＫＡＣＴＭＩ3 が入力されるタイミングでは、負値になった。さらに、第３模擬出力ＫＡＣＴＭＩ3 と他の模擬出力との差が大きいほど、第１フィルタリング値ＦＩＬ１は、第２模擬出力ＫＡＣＴＭＩ2 が入力されるタイミングでは、より大きな正値になるとともに、第３模擬出力ＫＡＣＴＭＩ3 が入力されるタイミングでは、絶対値がより大きな負値になった。
【００７５】
以上の実験結果から明らかなように、第１および第２周波数ＦＩＬ１，ＦＩＬ２域の成分をそれぞれ通過させる第１および第２バンドパスフィルタによって、ＬＡＦセンサ１４の出力ＫＡＣＴをフィルタリングすると、各フィルタの出力の振幅の有無は、気筒間の空燃比のばらつきの有無を表す。また、２気筒ずれパターンの場合、第２バンドパスフィルタの出力の振幅がより大きくなり、その正負によって、気筒間の空燃比の大小関係が特定される。さらに、非２気筒ずれパターンの場合、第１バンドパスフィルタの出力の振幅がより大きくなる。以上のようなフィルタの出力特性に基づき、ばらつき補正部２３は、気筒間で空燃比がばらついている場合に、振幅がより大きなフィルタの出力に基づいて、このばらつきを解消するように、すなわち、このフィルタの出力の振幅が値０になるように、各気筒のばらつき補正係数ＫＥＡＦi を算出する。
【００７６】
具体的には、図１１に示すように、ばらつき補正部２３は、サイクルフィルタ２３ａ（バンドパスフィルタ）、回転フィルタ２３ｂ（バンドパスフィルタ）、第１および第２遅延要素２３ｃ，２３ｄ（むだ時間設定手段）、第１および第２加重平均値算出部２３ｅ，２３ｆ（加重平均値算出手段）、コントロールスイッチ２３ｇ（フィルタ選択手段）、算出用フィルタリング値決定部２３ｈ（補正係数固定手段）、ならびにばらつき補正係数算出部２３ｉ（補正用パラメータ算出手段、平均値算出手段、補正係数算出手段）によって構成されている。
【００７７】
このばらつき補正部２３では、サイクルフィルタ２３ａおよび回転フィルタ２３ｂにおいて、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）（バンドパスフィルタの出力）がそれぞれ生成（算出）され、第１および第２遅延要素２３ｃ，２３ｄにおいて、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）の出力が、所定のむだ時間に相当する時間、それぞれ遅延される。また、第１および第２加重平均値算出部２３ｅ，２３ｆにおいて、第１および第２加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ），ＫＡＣＴ＿Ｆｒｄ（ｍ）（複数のバンドパスフィルタの出力の加重平均値）がそれぞれ算出され、コントロールスイッチ２３ｇにおいて、ばらつき補正係数ＫＥＡＦi を算出するための算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）が選択される。さらに、算出用フィルタリング値決定部２３ｈにおいて、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）が最終的に決定され、ばらつき補正係数算出部２３ｉにおいて、決定された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に基づいて、ばらつき補正係数ＫＥＡＦi が気筒ごとに算出される。
【００７８】
次に、サイクルフィルタ２３ａおよび回転フィルタ２３ｂについて説明する。これらのフィルタ２３ａ，２３ｂは、バンドパスフィルタであり、互いに並列に設けられている。また、サイクルフィルタ２３ａおよび回転フィルタ２３ｂは、図１２に示すようなゲイン特性を有しており、前者のゲインは、入力信号の周波数が前述した第１周波数ｆｒ１のときに、後者のゲインは、入力信号の周波数が前述した第２周波数ｆｒ２のときに、０ｄＢの値になるようにそれぞれ設定されている。また、サイクルフィルタ２３ａは、前述したようにＣＲＫ信号の入力に同期してサンプリングされた最新のＬＡＦセンサ１４の出力ＫＡＣＴを、ＣＲＫ信号の入力に同期して、そのうちの第１周波数ｆｒ１域の成分を通過させるようにフィルタリングし、それにより、第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）を生成する。回転フィルタ２３ｂは、サイクルフィルタ２３ａと同様、ＣＲＫ信号の入力に同期して、サンプリングされたＬＡＦセンサ１４の出力ＫＡＣＴのうちの第２周波数ｆｒ２域の成分を通過させるようにフィルタリングし、それにより、第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）を生成する。
【００７９】
具体的には、サイクルフィルタ２３ａおよび回転フィルタ２３ｂは、図１３の式（２０）および（２１）でそれぞれ示されるＩＩＲ型のフィルタであり、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）は、これらの式（２０）および（２１）により、それぞれ算出（生成）される。算出された第１および第２のフィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）はそれぞれ、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）用の複数のバッファに、ＣＲＫ信号の入力に同期して順次、記憶される。なお、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）の初期値はそれぞれ、ＫＡＣＴ（ｍ−１）〜（ｍ−ｐ）を値１に、ＫＡＣＴ＿Ｆｃ（ｍ−１）〜（ｍ−ｑ）およびＫＡＣＴ＿Ｆｒ（ｍ−１）〜（ｍ−ｑ）を値０に設定して、算出される。また、上記の記号ｍは離散化した時間を表しており、記号（ｍ）付の各離散データは、ＣＲＫ信号が１回発生するごとに、これに同期してサンプリングされたデータであることを示している。この点は、以下の離散データにおいても同様である。
【００８０】
前述した実験結果から明らかなように、以上のように算出された第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）は、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表す。また、２気筒ずれパターンの場合には、第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）がより大きな振幅で変化し、その正負によって気筒間の空燃比の大小関係を表し、非２気筒ずれパターンの場合には、第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）がより大きな振幅で変化する。
【００８１】
第１および第２遅延要素２３ｃ，２３ｄはそれぞれ、各気筒から排出された排気ガスがＬＡＦセンサ１４に到達するまでのむだ時間に相当する時間、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）の出力を遅延する。なお、その詳細については後述する。
【００８２】
次に、第１加重平均値算出部２３ｅにおいて、第１加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ）が、第１遅延要素２３ｃから出力された第１フィルタリング値の今回値の絶対値｜ＫＡＣＴ＿Ｆｃ（ｍ）｜などを用いて、図１３の式（２２）により算出される。なお、なまし係数Ａｃは、例えば０．５である。この算出方法から明らかなように、第１加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ）は、その前回値の絶対値｜ＫＡＣＴ＿Ｆｃｄ（ｍ−１）｜および第１フィルタリング値の今回値の絶対値｜ＫＡＣＴ＿Ｆｃ（ｍ）｜を加重平均することによって算出される。
【００８３】
次いで、第２加重平均値算出部２３ｆにおいて、第２加重平均値ＫＡＣＴ＿Ｆｒｄ（ｍ）が、第２遅延要素２３ｄから出力された第２フィルタリング値の今回値の絶対値｜ＫＡＣＴ＿Ｆｒ（ｍ）｜などを用いて、図１３の式（２３）により算出される。なお、なまし係数Ａｒは、例えば０．５である。この算出方法から明らかなように、第２加重平均値ＫＡＣＴ＿Ｆｒｄ（ｍ）は、その前回値の絶対値｜ＫＡＣＴ＿Ｆｒｄ（ｍ−１）｜および第２フィルタリング値の今回値の絶対値｜ＫＡＣＴ＿Ｆｒ（ｍ）｜を加重平均することによって算出される。
【００８４】
次に、コントロールスイッチ２３ｇについて説明すると、コントロールスイッチ２３ｇは、第１加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ）に基づいて、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）から、ばらつき補正係数ＫＥＡＦi を算出するための算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を選択し、算出用フィルタリング値決定部２３ｈに出力する。これにより、より大きな振幅のフィルタリング値が、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として出力される。その詳細については後述する。
【００８５】
次いで、算出用フィルタリング値決定部２３ｈにおいて、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を決定するとともに、ばらつき補正係数算出部２３ｉに出力する。具体的には、入力された算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、所定のしきい値ＫＡＣＴ＿ＴＨＲＥＳＨ（例えば０．００１）よりも小さいときには、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を０に設定する。一方、｜ＫＡＣＴ＿Ｆi （ｎ）｜≧ＫＡＣＴ＿ＴＨＲＥＳＨのときには、コントロールスイッチ２３ｇから入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を、ばらつき補正係数算出部２３ｉに出力する。
【００８６】
次に、ばらつき補正係数算出部２３ｉにおいて、ばらつき補正係数ＫＥＡＦi が算出される。具体的には、まず、入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を用いて、ＰＩＤ制御アルゴリズムにより、ばらつき補正係数暫定値ｋｅａｆi （補正用パラメータ）を算出する。このＰＩＤ制御アルゴリズムは、図１３の式（２４）で示される。この式（２４）中のＦＩ、ＧＩおよびＨＩは、それぞれ所定のフィードバック用のＰ項ゲイン、Ｉ項ゲインおよびＤ項ゲインである。なお、ばらつき補正係数暫定値ｋｅａｆi の初期値は、ＫＡＣＴ＿Ｆi （ｎ−４）〜（ｎ−４ｍ）を値０に設定して、算出される。
【００８７】
次に、このばらつき補正係数暫定値ｋｅａｆi の移動平均値ＫＥＡＦａｖｅ（複数の補正用パラメータの平均値）を、同図の式（２５）により算出する。なお、この式（２５）において、本実施形態では、気筒数ｍｃ＝４であり、移動平均値ＫＥＡＦａｖｅの初期値は、ｋｅａｆ2 〜ｋｅａｆ4 を値１に設定して算出される。この移動平均値ＫＥＡＦａｖｅは、式（２５）から明らかなように、１番〜４番気筒＃１〜＃４のばらつき補正係数暫定値ｋｅａｆ1〜4 の平均値である。
【００８８】
次いで、同図の式（２６）により、ばらつき補正係数暫定値ｋｅａｆi を移動平均値ＫＥＡＦａｖｅで除算することで、ばらつき補正係数ＫＥＡＦi が算出される。このように、ばらつき補正係数ＫＥＡＦi を、ばらつき補正係数暫定値ｋｅａｆi を移動平均値ＫＥＡＦａｖｅで除算することによって算出するのは、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）にノイズが含まれる場合に、各気筒のばらつき補正係数ＫＥＡＦi へのこのノイズの影響を平準化することにより、ばらつき補正係数ＫＥＡＦi を適切に算出するためである。
【００８９】
また、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、しきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいときには、０に設定された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を用いて、ばらつき補正係数ＫＥＡＦi を算出する。これにより、前記式（２４）中のＫＡＣＴ＿Ｆi （ｎ）とＰ項ゲインＦＩとの積（以下「Ｐ項」という）が、値０に保持されるとともに、ＫＡＣＴ＿Ｆi （ｎ）の積算値とＩ項ゲインＧＩとの積（以下「Ｉ項」という）が、上記の条件（｜ＫＡＣＴ＿Ｆi （ｎ）｜＜ＫＡＣＴ＿ＴＨＲＥＳＨ）が成立する直前に設定されたＩ項の値に保持される。また、上記のようなばらつき補正係数ＫＥＡＦi の算出を継続すると、式（２４）中のＫＡＣＴ＿Ｆi （ｎ）の今回値と前回値との偏差とＤ項ゲインＨＩとの積（以下「Ｄ項」という）も、値０に保持される。
【００９０】
以上のように、｜ＫＡＣＴ＿Ｆi （ｎ）｜＜ＫＡＣＴ＿ＴＨＲＥＳＨのときには、Ｉ項がこの条件が成立する直前の値に保持されるとともに、Ｐ項およびＤ項が値０に保持される。また、この条件が成立する直前では、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）はほぼ０であるため、Ｐ項およびＤ項はほぼ値０に設定されている。したがって、ばらつき補正係数暫定値ｋｅａｆi は、この条件の成立直前に算出された値とほぼ等しい値に算出され、固定される。その結果、ばらつき補正係数暫定値ｋｅａｆi に基づいて前述したように算出されるばらつき補正係数ＫＥＡＦi は、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さくなったときには、この条件の成立直前に算出された値とほぼ等しい値に固定される。これにより、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）に含まれるノイズに起因するばらつき補正係数ＫＥＡＦi の変動を防止でき、したがって、前述したハンチング現象を回避することができる。
【００９１】
以下、ＥＣＵ２により実行される空燃比制御を含む燃料噴射制御処理について、図１４〜１８を参照しながら説明する。なお、以下の説明では、今回値であることを示す記号（ｋ），（ｎ）および（ｍ）を適宜、省略する。図１４は、この制御処理のメインルーチンを示しており、本処理は、ＴＤＣ信号の入力に同期して割り込み実行される。この処理では、以下に述べるように、最終燃料噴射量ＴＯＵＴi が気筒ごとに算出される。
【００９２】
まず、ステップ１（「Ｓ１」と図示。以下同じ）において、前述した各種のセンサ１０〜１８の出力を読み込むとともに、読み込んだデータをＲＡＭ内に記憶する。
【００９３】
次に、ステップ２に進み、基本燃料噴射量ＴＩＢＳを算出する。この処理では、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じて、図示しないマップを検索することにより、基本燃料噴射量ＴＩＢＳを算出する。
【００９４】
次いで、ステップ３に進み、総補正係数ＫＴＯＴＡＬを算出する。この総補正係数ＫＴＯＴＡＬは、各種の運転パラメータ（例えば吸気温ＴＡや、大気圧ＰＡ、エンジン水温ＴＷ、アクセル開度ＡＰ、スロットル弁開度ＴＨなど）に応じて、各種のテーブルやマップを検索することで各種の補正係数を算出するとともに、これらの各種の補正係数を互いに乗算することにより、算出される。
【００９５】
次に、ステップ４に進み、目標空燃比ＫＣＭＤを算出する。この目標空燃比ＫＣＭＤの算出処理の内容は、ここでは図示しないが、特開２０００−１７９３８５号公報に記載の制御手法と同様に実行される。すなわち、目標空燃比ＫＣＭＤは、エンジン３の運転状態に応じて、スライディングモード制御処理またはマップ検索処理により、Ｏ２センサ１５の出力Ｖｏｕｔが前記所定の目標値Ｖｏｐに収束するように算出される。
【００９６】
次いで、ステップ５に進み、補正目標空燃比ＫＣＭＤＭを算出する。この補正目標空燃比ＫＣＭＤＭは、空燃比Ａ／Ｆの変化による充填効率の変化を補償するためのものであり、上記ステップ４で算出された目標空燃比ＫＣＭＤに応じて、図示しないテーブルを検索することにより算出される。
【００９７】
次に、ステップ６および７において、気筒ごとのモデルパラメータベクトルθi およびフィードバック補正係数ＫＳＴＲをそれぞれ算出する。これらの算出処理については、後述する。
【００９８】
次いで、ステップ８において、後述するフィルタリング値算出処理により算出された第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）などを読み込むとともに、読み込んだデータをＲＡＭ内に記憶する。次に、ステップ９において、気筒ごとのばらつき補正係数ＫＥＡＦi を算出する。この算出処理については、後述する。
【００９９】
次いで、ステップ１０に進み、以上のように算出した基本燃料噴射量ＴＩＢＳ、総補正係数ＫＴＯＴＡＬ、補正目標空燃比ＫＣＭＤＭ、フィードバック補正係数ＫＳＴＲ、ばらつき補正係数ＫＥＡＦi を用い、下式（２７）により、気筒ごとの要求燃料噴射量ＴＣＹＬi を算出する。
【０１００】
TCYLi=TIBS・KTOTAL・KCMDM・KSTR・KEAFi          ……  （２７）
【０１０１】
次に、ステップ１１に進み、気筒ごとの要求燃料噴射量ＴＣＹＬi を付着補正することにより、気筒ごとの最終燃料噴射量ＴＯＵＴi を算出する。この気筒ごとの最終燃料噴射量ＴＯＵＴi は、具体的には、今回の燃焼サイクルでインジェクタ６から噴射される燃料が燃焼室の内壁面に付着する割合などを、エンジン３の運転状態に応じて算出し、そのように算出した割合に基づいて、気筒ごとの要求燃料噴射量ＴＣＹＬi を補正することにより、算出される。
【０１０２】
次いで、ステップ１２に進み、以上のように算出した気筒ごとの最終燃料噴射量ＴＯＵＴi に基づく駆動信号を、対応する気筒のインジェクタ６に出力した後、本処理を終了する。
【０１０３】
次に、図１５を参照しながら、前記ステップ６の気筒ごとのモデルパラメータベクトルθi の算出処理について説明する。この処理では、まず、ステップ２０において、各パラメータの添字「ｉ」に相当する気筒番号値ｉの設定処理を実行する。
【０１０４】
この処理では、図示しないが、気筒番号値ｉが、ＲＡＭに記憶されている、前回のループで設定された気筒番号値ｉの前回値ＰＲＶｉに基づいて、以下のように設定される。具体的には、ＰＲＶｉ＝１のときにはｉ＝３に、ＰＲＶｉ＝２のときにはｉ＝１に、ＰＲＶｉ＝３のときにはｉ＝４に、ＰＲＶｉ＝４のときにはｉ＝２に、それぞれ設定される。すなわち、気筒番号値ｉは、「１→３→４→２→１→３→４→２→１……」の順に、繰り返し設定される。なお、気筒番号値ｉの初期値は、前述した気筒判別信号に基づいて設定される。
【０１０５】
次いで、ステップ２１に進み、前述した図４の式（１７）により、ＫＳＴＲおよびＫＡＣＴのベクトルζi を算出した後、ステップ２２で、前述した図４の式（１６）により、ＫＡＣＴの同定値ＫＡＣＴ＿ＨＡＴi を算出する。
【０１０６】
次に、ステップ２３に進み、前述した図４の式（１５）により、同定誤差ｉｄｅi を算出した後、ステップ２４で、前述した図４の式（１８）により、ゲイン係数のベクトルＫＰi を算出する。次いで、ステップ２５に進み、前述した図４の式（１３）により、モデルパラメータベクトルθi を算出する。
【０１０７】
次に、ステップ２６に進み、ＲＡＭに記憶されている、前回以前の所定個数（本実施形態では１２個）のＬＡＦセンサ１４の出力ＫＡＣＴの値を更新する。具体的には、ＲＡＭ内のＫＡＣＴの各々の値を、燃料噴射制御における１制御サイクル分、古い値としてセットする（例えば、今回値ＫＡＣＴ（ｎ）を前回値ＫＡＣＴ（ｎ−１）として、前回値ＫＡＣＴ（ｎ−１）を前々回値ＫＡＣＴ（ｎ−２）としてそれぞれセットする）。
【０１０８】
次いで、ステップ２７に進み、ＲＡＭに記憶されている、所定個数（本実施形態では１２個）の１番気筒＃１のモデルパラメータベクトルθ1 のオーバーサンプリング値θｂｕｆを更新する。具体的には、上記ステップ２６と同様に、ＲＡＭ内のθｂｕｆの各々の値を、１制御サイクル分、古い値としてセットする（例えば、今回値θｂｕｆ（ｎ）を前回値θｂｕｆ（ｎ−１）として、前回値θｂｕｆ（ｎ−１）を前々回値θｂｕｆ（ｎ−２）としてそれぞれセットする）。この後、本処理を終了する。
【０１０９】
次に、図１６を参照しながら、前記ステップ７のフィードバック補正係数ＫＳＴＲの算出処理について説明する。この処理では、まず、ステップ４０において、前述した図４の式（１０）により、移動平均値θ＿ａｖｅを、上記ステップ２７で更新されたオーバーサンプリング値θｂｕｆに基づいて算出する。
【０１１０】
次いで、ステップ４１で、前述した図４の式（１２）により、上記ステップ４０で算出した移動平均値θ＿ａｖｅに基づき、フィードバック補正係数ＫＳＴＲを算出する。なお、算出されたフィードバック補正係数ＫＳＴＲは、ＫＳＴＲリミット処理（図示せず）において、上限値ＫＳＴＲＨ（例えば１．７）および下限値ＫＳＴＲＬ（例えば０．３）と比較され、上限値ＫＳＴＲＨよりも大きいときには、この上限値ＫＳＴＲＨに設定され、下限値ＫＳＴＲＬよりも小さいときには、この下限値ＫＳＴＲＬに設定される。
【０１１１】
次に、ステップ４２に進み、ＲＡＭに記憶されている、前回以前の所定個数（本実施形態では１２個）のフィードバック補正係数ＫＳＴＲの値を更新する。具体的には、ＲＡＭ内のＫＳＴＲの各々の値を、１制御サイクル分、古い値としてセットする（例えば、今回値ＫＳＴＲ（ｎ）を前回値ＫＳＴＲ（ｎ−１）として、前回値ＫＳＴＲ（ｎ−１）を前々回値ＫＳＴＲ（ｎ−２）としてそれぞれセットする）。この後、本処理を終了する。
【０１１２】
次いで、図１７を参照しながら、図１４の前記ステップ８において読み込まれる第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）などを算出するフィルタリング値算出処理について説明する。本処理は、ＣＲＫ信号の入力に同期して割り込み実行される。まず、ステップ５０では、ＬＡＦセンサ１４の出力ＫＡＣＴを読み込むとともに、ＲＡＭ内に記憶する。次いで、ステップ５１において、前述した図１３の式（２０）により、第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）を算出するとともに、算出した第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）を、第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）用の複数のバッファに順次、記憶する。次に、ステップ５２において、前述した式（２１）により、第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）を算出するとともに、算出した第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）を、第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）用の複数のバッファに順次、記憶する。
【０１１３】
続くステップ５３および５４の処理は、前述した第１遅延要素２３ｃによる第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）の出力をむだ時間に相当する時間、遅延させる処理に相当している。このステップ５３では、吸気管内絶対圧ＰＢＡおよびエンジン回転数ＮＥに応じて、マップ（図示せず）を検索することによって、上記の第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）用の複数のバッファのバッファナンバーを求める。次いで、求めたバッファナンバーのバッファに記憶されている第１フィルタリング値ＫＡＣＴ＿Ｆｃを、ばらつき補正係数ＫＥＡＦi を算出するための第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）として読み出す（ステップ５４）。
【０１１４】
上記のマップでは、吸気管内絶対圧ＰＢＡが高いほど、およびエンジン回転数ＮＥが低いほど、ばらつき補正係数ＫＥＡＦi を算出するための第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）として、より早いタイミングで算出したものが選択されるように、バッファナンバーが設定されている。これは次の理由による。すなわち、吸気管内絶対圧ＰＢＡが高いほど、すなわちエンジン３の負荷が大きいほど、排気ガスの流速がより高く、それに伴い、各気筒から排出された排気ガスがＬＡＦセンサ１４に到達するまでのむだ時間がより短くなるためである。また、エンジン回転数ＮＥが低いほど、ＬＡＦセンサ１４の出力ＫＡＣＴを読み込むＣＲＫ信号の周期がより長くなるので、排気ガスの流速を一定とすれば、排気ガスがＬＡＦセンサ１４に到達するまでに発生するＣＲＫ信号の発生回数は少なくなるためであり、ＣＲＫ信号を基準とする相対的なむだ時間が短くなるためである。
【０１１５】
次のステップ５５および５６の処理は、前述した第２遅延要素２３ｄによる第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）の出力をむだ時間に相当する時間、遅延させる処理に相当している。このステップ５５では、前記ステップ５３と同様、吸気管内絶対圧ＰＢＡおよびエンジン回転数ＮＥに応じて、マップ（図示せず）を検索することによって、第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）用の複数のバッファのバッファナンバーを求める。次いで、求めたバッファナンバーのバッファに記憶されている第２フィルタリング値ＫＡＣＴ＿Ｆｒを、ばらつき補正係数ＫＥＡＦi を算出するための第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）として読み出す（ステップ５６）。なお、このマップの特性は、上述した第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）用のバッファのバッファナンバーを検索するためのマップと同様であるので、その説明については省略する。
【０１１６】
次に、前記ステップ５３および５４により選択された第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）を用いて、前述した式（２２）により、第１加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ）を算出する（ステップ５７）。次いで、前記ステップ５５および５６により選択された第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）を用いて、前述した式（２３）により、第２加重平均値ＫＡＣＴ＿Ｆｒｄ（ｍ）を算出し（ステップ５８）、本処理を終了する。以上のように選択された第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）、ならびに第１および第２加重平均値ＫＡＣＴ＿Ｆｃｄ（ｍ），ＫＡＣＴ＿Ｆｒｄ（ｍ）が、図１４の前記ステップ８において読み込まれ、ＲＡＭ内に記憶される。
【０１１７】
以上のように、ＣＲＫ信号に同期して、ＬＡＦセンサ１４の出力ＫＡＣＴがサンプリングされ、それに基づいて、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが算出されるとともに、複数のバッファに順次、記憶される（ステップ５０〜５２）。そして、吸気管内絶対圧ＰＢＡおよびエンジン回転数ＮＥに応じて、各気筒の排気ガスがＬＡＦセンサ１４に到達するまでのむだ時間に対応するバッファナンバーが、マップから選択される（ステップ５３，５５）。次いで、この選択されたバッファナンバーのバッファに記憶された第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒがそれぞれ、ばらつき補正係数ＫＥＡＦi を算出するための第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）として読み出される（ステップ５４，５６）。したがって、各気筒の排気ガスの排出タイミングに相当する各気筒のＴＤＣ信号の出力後、選択されたバッファナンバーに対応するむだ時間が経過したタイミングで検出されたＬＡＦセンサ１４の出力ＫＡＣＴに基づく第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが、選択される。それにより、ばらつき補正係数ＫＥＡＦi を算出するための第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）を、むだ時間を補償しながら、適切に選択することができる。
【０１１８】
次に、図１８を参照しながら、図１４の前記ステップ９のばらつき補正係数ＫＥＡＦi を算出する処理について説明する。まず、ステップ６０では、前記ステップ８で読み込んだ第１加重平均値ＫＡＣＴ＿Ｆｃｄが、所定のしきい値ＫＡＣＴ＿ＲＥＦよりも大きいか否かを判別する。第１加重平均値ＫＡＣＴ＿Ｆｃｄは、前述した図９および図１０から明らかなように、２気筒ずれパターンのときには、非常に小さく、非２気筒ずれパターンのときには、非常に大きくなるという特性を有する。したがって、ステップ６０の答がＹＥＳのときには、非２気筒ずれパターンであるとして、第１フィルタリング値ＫＡＣＴ＿Ｆｃを、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として設定する（ステップ６１）。一方、ステップ６０の答がＮＯで、ＫＡＣＴ＿Ｆｃｄ≦ＫＡＣＴ＿ＲＥＦのときには、２気筒ずれパターンであるとして、第２フィルタリング値ＫＡＣＴ＿Ｆｒを、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として設定する（ステップ６２）。
【０１１９】
以上により、非２気筒ずれパターンの場合には、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として、より大きな振幅の第１フィルタリング値ＫＡＣＴ＿Ｆｃが選択される。また、２気筒ずれパターンの場合には、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として、より大きな振幅を有し、気筒間の空燃比の大小関係を正負によって表す第２フィルタリング値ＫＡＣＴ＿Ｆｒが、選択される。以上のステップ６０〜６２の処理が、前述したコントロールスイッチ２３ｇによるフィルタリング値の選択に相当する。
【０１２０】
前記ステップ６１または６２に続くステップ６３では、設定した算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、算出用フィルタリング値決定部２３ｈで用いた前記しきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいか否かを判別する。このステップ６３の答がＹＥＳのときには、より大きな振幅のフィルタリング値がほぼ０であるため、気筒間の空燃比のばらつきが解消しているとして、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を０に設定し（ステップ６４）、ステップ６５に進む。
【０１２１】
一方、上記ステップ６３の答がＮＯで、｜ＫＡＣＴ＿Ｆi （ｎ）｜≧ＫＡＣＴ＿ＴＨＲＥＳＨのときには、気筒間で空燃比がばらついているとして、上記ステップ６４をスキップし、ステップ６５に進む。
【０１２２】
このステップ６５では、前記ステップ６１、６２または６４で設定された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を用いて、前記式（２４）により、ばらつき補正係数暫定値ｋｅａｆi を算出する。次いで、算出したばらつき補正係数暫定値ｋｅａｆi を用いて、前記式（２５）により、移動平均値ＫＥＡＦａｖｅを算出する（ステップ６６）。
【０１２３】
次に、上記ステップ６５および６６においてそれぞれ算出したばらつき補正係数暫定値ｋｅａｆi および移動平均値ＫＥＡＦａｖｅを用いて、前記式（２６）により、ばらつき補正係数ＫＥＡＦi を算出し（ステップ６７）、本処理を終了する。
【０１２４】
次に、以上のように算出されたばらつき補正係数ＫＥＡＦi による気筒間の空燃比のばらつきの補正について説明する。前述したように、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが、ＴＤＣ信号の出力ごとに読み込まれる（図１４のステップ８）とともに、これらの読み込まれたフィルタリング値のうち、より大きな振幅のものが、気筒ごとの算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として選択される（図１８のステップ６０〜６２）。そして、選択された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に基づいて、式（２４）〜（２６）によってばらつき補正係数ＫＥＡＦi が算出される（ステップ６５〜６７）。
【０１２５】
このように、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒのうち、振幅のより大きなものが、各気筒ごとの算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として設定される。このため、図９に示すような２気筒ずれパターン（＃１番，＃４番気筒の当量比＞＃２番，＃３番気筒の当量比）の場合、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として、第２フィルタリング値ＫＡＣＴ＿ＦｒがＴＤＣ信号の出力ごとに設定される。また、前述したように第２フィルタリング値ＫＡＣＴ＿Ｆｒは、むだ時間が補償されていることにより各気筒の空燃比を良好に反映するので、その正負によって気筒間の空燃比の大小関係を良好に表す。したがって、この２気筒ずれパターンにおける算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）は、図９および前述した実験結果から明らかなように、＃１番および＃４番気筒の算出用フィルタリング値ＫＡＣＴ＿Ｆ1 （ｎ），ＫＡＣＴ＿Ｆ4 （ｎ）が正値に、＃２番および＃３番気筒の算出用フィルタリング値ＫＡＣＴ＿Ｆ2 （ｎ），ＫＡＣＴ＿Ｆ3 （ｎ）が負値に設定される。
【０１２６】
これにより、前述した式（２４）〜（２６）から明らかなように、ばらつき補正係数ＫＥＡＦi のうち、＃１番および＃４番気筒のばらつき補正係数ＫＥＡＦ1 ，ＫＥＡＦ4 が値１よりも小さな正値に、＃２番および＃３番気筒のばらつき補正係数ＫＥＡＦ2 ，ＫＥＡＦ3 が値１よりも大きな値に、それぞれ算出される。それにより、より大きな当量比の＃１番および＃４番気筒の最終燃料噴射量ＴＯＵＴ1 ，ＴＯＵＴ4 を減少させるとともに、より小さな当量比の＃２番および＃３番気筒の最終燃料噴射量ＴＯＵＴ2 ，ＴＯＵＴ3 を増加させるように、すなわち、４つの気筒＃１〜＃４の空燃比が平均化するように制御される。このように、気筒間の空燃比のばらつきを解消するように、すなわち、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの振幅が値０になるように、各気筒の最終燃料噴射量ＴＯＵＴi が算出される。
【０１２７】
一方、非２気筒ずれパターンの場合、例えば、図１０に示すようなばらつきパターン（＃３番気筒の当量比＜＃１番，＃２番，＃４番気筒の当量比）の場合、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として、第１フィルタリング値ＫＡＣＴ＿Ｆｃが設定される。第１フィルタリング値ＫＡＣＴ＿Ｆｃは、第２フィルタリング値ＫＡＣＴ＿Ｆｒと同様、むだ時間が補償されていることにより各気筒の空燃比を良好に反映する。このため、この非２気筒ずれパターンにおける算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）は、図１０および前述した実験結果から明らかなように、＃１番および＃４番気筒の算出用フィルタリング値ＫＡＣＴ＿Ｆ1 （ｎ），ＫＡＣＴ＿Ｆ4 （ｎ）が０に、＃３番気筒の算出用フィルタリング値ＫＡＣＴ＿Ｆ3 （ｎ）が負値に、＃２番気筒の算出用フィルタリング値ＫＡＣＴ＿Ｆ2 （ｎ）が正値に設定される。
【０１２８】
これにより、ばらつき補正係数ＫＥＡＦi のうち、＃１番および＃４番気筒のばらつき補正係数ＫＥＡＦ1 ，ＫＥＡＦ4 が値１に、＃３番気筒のばらつき補正係数ＫＥＡＦ3 が値１よりも大きな値に、＃２番気筒のばらつき補正係数ＫＥＡＦ2 が値１よりも小さな正値に、それぞれ算出される。それにより、より小さな当量比の＃３番気筒の最終燃料噴射量ＴＯＵＴ3 を増加させるとともに、＃２番気筒の最終燃料噴射量ＴＯＵＴ2 を減少させるので、４つの気筒＃１〜＃４の空燃比は、図９に示すような２気筒ずれパターンになる。その後、前述した２気筒ずれパターンにおけるばらつき補正係数ＫＥＡＦi による補正が行われることにより、４つの気筒＃１〜＃４の空燃比が平均化するように制御される。このように、非２気筒ずれパターンの場合にも、最終的に、気筒間の空燃比のばらつきが解消するように、すなわち、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの振幅が値０になるように、各気筒の最終燃料噴射量ＴＯＵＴi が算出される。
【０１２９】
なお、図示しないが、図１０に示したばらつきパターン以外の非２気筒ずれパターンで気筒間の空燃比がばらついている場合にも同様に、第１または第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒに基づいて算出したばらつき補正係数ＫＥＡＦi により、４つの気筒＃１〜＃４の空燃比が平均化するように制御され、気筒間の空燃比のばらつきが解消する。
【０１３０】
また、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、しきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さくなったときには（図１８のステップ６３：ＹＥＳ）、気筒間の空燃比のばらつきが解消したとして、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を０に設定する（ステップ６４）とともに、それを用いて、ばらつき補正係数ＫＥＡＦi を算出する（ステップ６５〜６７）。これにより、ばらつき補正係数ＫＥＡＦi は、前述したように、その直前に算出されたばらつき補正係数ＫＥＡＦi とほぼ等しい値に固定される。
【０１３１】
次に、ＥＣＵ２によるインジェクタ６および吸気弁を含む燃料供給系が正常に動作しているか否かを判定する処理について、図１９のフローチャートを参照しながら説明する。本処理は、例えばＴＤＣ信号の入力ごとに実行される。まず、ステップ７０では、図１８の前記ステップ６７において算出した１番気筒＃１のばらつき補正係数ＫＥＡＦ1 が、第１判定値ＫＥＡＦＲＬよりも大きく、かつ第２判定値ＫＥＡＦＲＨよりも小さいか否かを判別する。
【０１３２】
この答がＮＯで、ＫＥＡＦ1 ≦ＫＥＡＦＲＬまたはＫＥＡＦ1 ≧ＫＥＡＦＲＨのときには、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 が小さすぎるまたは大きすぎるとして、１番気筒＃１のインジェクタ６および吸気弁を含む燃料供給系が正常に動作してないと判定し、そのことを表すために、第１異常フラグＦ＿ＮＧ１を「１」にセットし（ステップ７１）、ステップ７２に進む。一方、上記ステップ７０の答がＹＥＳで、ＫＥＡＦＲＬ＜ＫＥＡＦ1 ＜ＫＥＡＦＲＨのときには、ステップ７１をスキップし、ステップ７２に進む。
【０１３３】
このような場合に、１番気筒＃１の燃料供給系が正常に動作してないと判定するのは、次の理由による。すなわち、ばらつき補正係数ＫＥＡＦi は、前述した算出方法から明らかなように、ばらつき補正係数ＫＥＡＦi による補正が行われなかった場合の気筒間におけるもともとの相対的な空燃比のばらつきの度合を表す。また、このような気筒間におけるもともとの空燃比のばらつきは、燃料供給系の動作特性が気筒間でばらついていることによって生じる。したがって、ばらつき補正係数ＫＥＡＦi が大きすぎるまたは小さすぎるときには、その気筒の燃料供給系の動作特性が他の気筒に対して非常に大きくずれており、その気筒の燃料供給系が正常に動作していないと判定することができるためである。また、上記ステップ７０および７１と同様にして、以下のステップ７２〜７７において、＃２〜＃４番気筒の燃料供給系が正常に動作しているか否かを判定する。
【０１３４】
すなわち、ステップ７２、７４および７６において、２番〜４番気筒＃２〜＃４のばらつき補正係数ＫＥＡＦ2 〜ＫＥＡＦ4 がそれぞれ、第１判定値ＫＥＡＦＲＬよりも大きく、かつ第２判定値ＫＥＡＦＲＨよりも小さいか否かを判別する。それらの答がＮＯのときには、該当する気筒の燃料供給系が正常に動作していないとして、第２〜第４異常フラグＦ＿ＮＧ２〜Ｆ＿ＮＧ４のうち、該当するものを「１」にセットする（ステップ７３、７５および７７）。なお、第１〜第４異常フラグＦ＿ＮＧ１〜Ｆ＿ＮＧ４は、エンジン３の始動時に「０」にリセットされる。
【０１３５】
次に、ステップ７８では、第１〜第４異常フラグＦ＿ＮＧ１〜Ｆ＿ＮＧ４がいずれも「０」であるか否かを判別する。この答がＹＥＳのときには、すべての気筒の燃料供給系が正常に動作しているとして、そのことを表すために、燃料供給系正常フラグＦ＿ＯＫを「１」にセットし（ステップ７９）、本処理を終了する。一方、ステップ７８の答がＮＯで、第１〜第４異常フラグＦ＿ＮＧ１〜Ｆ＿ＮＧ４のいずれかが「１」のときには、上記ステップ７９をスキップし、本処理を終了する。
【０１３６】
次いで、図２０〜図２４を参照しながら、気筒間で空燃比がばらついている場合に、空燃比制御装置１により空燃比を制御したときの動作例を、第１および第２の比較例とともに説明する。図２１に示す第１比較例は、式（２６）によりばらつき補正係数暫定値ｋｅａｆi を移動平均値ＫＥＡＦａｖｅで除算することでばらつき補正係数ＫＥＡＦi を算出する処理（以下「補正係数平均化処理」という）を行わずに、ばらつき補正係数ＫＥＡＦi をばらつき補正係数暫定値ｋｅａｆi に直接、設定した場合を示している。図２２に示す第２比較例は、気筒間の空燃比のばらつきが解消した後に、本実施形態のばらつき補正係数ＫＥＡＦi を固定する処理（以下「補正係数固定処理」という）を行わずに、その算出・更新を継続した場合を示している。
【０１３７】
これらの例はいずれも、ＳＴＲ２２により、ＬＡＦセンサ１４の出力ＫＡＣＴが値１（理論空燃比に相当する当量比）になるように制御している場合において、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれている状態で、ばらつき補正係数ＫＥＡＦi による補正を行ったときの動作を示している。なお、これらの図２０〜図２４において、ＫＡＣＴ1〜4 はそれぞれ、１〜４番気筒＃１〜＃４から排出された、互いに混じり合っていない状態の排気ガス中の空燃比（当量比換算値）を表しており、具体的には、排気マニホルド７ａの気筒＃１〜＃４の排気ポートの直後の部分に追加して設けた４つの測定用のＬＡＦセンサ（図示せず）の出力に相当する。
【０１３８】
図２０に示すように、２気筒ずれパターン（ＫＡＣＴ1 ＝ＫＡＣＴ4 ＞ＫＡＣＴ3 ＝ＫＡＣＴ2 ）の場合、ばらつき補正係数ＫＥＡＦi による補正が開始されるまでは（〜ｔ１）、ＬＡＦセンサ１４の出力ＫＡＣＴは若干、不安定な状態になる。また、第２フィルタリング値ＫＡＣＴ＿Ｆｒは、大きな振幅で変化し、その正負によって気筒間の空燃比の大小関係を表すとともに、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、小さな振幅で変化する。
【０１３９】
この場合において、ばらつき補正係数ＫＥＡＦi による補正が開始されると（時点ｔ１）、前述したように、ばらつき補正係数ＫＥＡＦiを算出するための算出用フィルタリング値ＫＡＣＴ＿Ｆi として、第２フィルタリング値ＫＡＣＴ＿Ｆｒが選択される。また、この第２フィルタリング値ＫＡＣＴ＿Ｆｒに基づいて算出されるばらつき補正係数ＫＥＡＦi のうち、１番および４番気筒＃１，＃４のばらつき補正係数ＫＥＡＦ1 ，ＫＥＡＦ4 は、値１よりも小さな正値に減少し、２番および３番気筒＃２，＃３のばらつき補正係数ＫＥＡＦ2 ，ＫＥＡＦ3 は、値１よりも大きな値に増加する。また、そのような各気筒のばらつき補正係数ＫＥＡＦi の変化によって、ＫＡＣＴ1 およびＫＡＣＴ4 が減少し、ＫＡＣＴ2 およびＫＡＣＴ3 が増加しており、４つの気筒＃１〜＃４の空燃比が平均化するように制御される。
【０１４０】
その結果、時点ｔ２において、ＫＡＣＴ1〜4 がいずれも値１（理論空燃比に相当する当量比）に収束し、それに伴って、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが０に、すなわちそれらの振幅が値０に収束するとともに、ＬＡＦセンサ１４の出力ＫＡＣＴも値１に収束する。また、１番および４番気筒＃１，＃４のばらつき補正係数ＫＥＡＦ1，ＫＥＡＦ4 が値１よりも若干小さな値に安定して収束するとともに、２番および３番気筒＃２，＃３のばらつき補正係数ＫＥＡＦ2，ＫＥＡＦ3 が値１よりも若干大きな値に安定して収束する。以上のように、本実施形態の空燃比制御装置１により、４つの気筒＃１〜＃４の空燃比が平均化するように制御することができるとともに、気筒間の空燃比のばらつきを適切に解消することができる。なお、気筒間の空燃比のばらつきが解消しても、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが完全に０にならないのは、これらのフィルタリング値に含まれたノイズの影響によるものである。
【０１４１】
これに対して、第１比較例では、ばらつき補正係数ＫＥＡＦi をばらつき補正係数暫定値ｋｅａｆi に直接、設定するので、補正開始後（時点ｔ３以降）、１番〜４番気筒＃１〜＃４のばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 がいずれも、第２フィルタリング値ＫＡＣＴ＿Ｆｒに含まれるノイズの影響によって徐々に増加し、安定しない。また、このばらつき補正係数ＫＥＡＦi の増加に伴い、ＬＡＦセンサ１４の出力ＫＡＣＴが値１から増加しないように、フィードバック補正係数ＫＳＴＲが値１よりも小さな値に減少する。そして、ばらつき補正係数ＫＥＡＦi がノイズの影響によりさらに増加するのに応じて、フィードバック補正係数ＫＳＴＲがその下限値ＫＳＴＲＬに達すると（時点ｔ４）、ＫＡＣＴ1〜4 がいずれも値１付近から増加するようになり、それに伴って、ＬＡＦセンサの出力ＫＡＣＴも値１付近から増加し始める。
【０１４２】
以上のように、本実施形態によれば、補正係数平均化処理を行うことにより、ばらつき補正係数ＫＥＡＦi をばらつき補正係数暫定値ｋｅａｆi に直接、設定した第１比較例と異なり、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれる場合でも、ばらつき補正係数ＫＥＡＦi を安定させることができる。したがって、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれる場合でも、フィードバック補正係数ＫＳＴＲによる補正を適正に行うことができるので、ＬＡＦセンサ１４の出力ＫＡＣＴを目標空燃比ＫＣＭＤに収束させることができる。
【０１４３】
また、図２２に示すように、第２比較例では、補正開始後（時点ｔ５以降）、空燃比のばらつきが解消した（時点ｔ６）後にも、ばらつき補正係数ＫＥＡＦi の算出・更新が継続されるので、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズの影響によって、１番〜４番気筒＃１〜＃４のばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 がいずれも短い周期で増減を繰り返し、変動する（時点ｔ７以降）。このようなばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 の変動によって、ＫＡＣＴ1〜4 が再び値１から若干ばらつくのに伴い、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの振幅が若干大きくなる。さらにその後には（時点ｔ８以降）、ばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 が安定するのに応じて、ＫＡＣＴ1〜4 が再び値１に収束し、それに伴って、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが０に収束する。このように、ＫＡＣＴ1〜4 のばらつき・収束を繰り返すハンチング現象が生じる。
【０１４４】
これに対して、本実施形態では、空燃比のばらつきの解消後、補正係数固定処理を行うことによって、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズに起因するばらつき補正係数ＫＥＡＦi の変動を防止できる。その結果、上記のハンチング現象を回避することができ、したがって、気筒間の空燃比のばらつきのない状態に維持することができる。
【０１４５】
また、このようなハンチング現象は、例えば、前記式（２４）のばらつき補正係数ＫＥＡＦi 算出用のフィードバック用のゲインＦＩ、ＧＩおよびＨＩを小さめに設定することによって、回避できる。しかし、その場合には、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが０に速やかには収束せず、気筒間の空燃比のばらつきを速やかには解消することができない。これに対して、本実施形態では、補正係数固定処理を行うことによって、これらのゲインＦＩなどを小さな値に設定することなく、ハンチング現象を回避できる。したがって、気筒間の空燃比のばらつきを速やかに解消できるので、そのことが特に必要となるエンジン３の過渡運転時などにも十分に対応することができる。
【０１４６】
また、図２３は、非２気筒ずれパターン、例えば、１番気筒＃１に供給される混合気の空燃比が他の気筒よりもリッチな状態のばらつきパターンの場合（ＫＡＣＴ1 ＞ＫＡＣＴ2 ＝ＫＡＣＴ3 ＝ＫＡＣＴ4 ）の動作例を示している。まず、ばらつき補正係数ＫＥＡＦi による補正が開始されるまでは（〜ｔ９）、２気筒ずれパターンの場合と同様、ＬＡＦセンサ１４の出力ＫＡＣＴは若干、不安定な状態になる。また、第１フィルタリング値ＫＡＣＴ＿Ｆｃが大きな振幅で変化し、第２フィルタリング値ＫＡＣＴ＿Ｆｒが小さな振幅で変化する。
【０１４７】
この場合において、ばらつき補正係数ＫＥＡＦi による補正が開始されると（時点ｔ９）、算出用フィルタリング値ＫＡＣＴ＿Ｆi として、第１フィルタリング値ＫＡＣＴ＿Ｆｃが選択される。そして、この第１フィルタリング値ＫＡＣＴ＿Ｆｃに基づいて算出されるばらつき補正係数ＫＥＡＦi のうち、２番および３番気筒＃２，＃３のばらつき補正係数ＫＥＡＦ2 ，ＫＥＡＦ3 は値１に保持されるとともに、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 が値１よりも小さな正値に減少し、４番気筒＃４のばらつき補正係数ＫＥＡＦ4 が値１よりも大きな値に増加する。また、そのような各気筒のばらつき補正係数ＫＥＡＦi の変化によって、ＫＡＣＴ2 およびＫＡＣＴ3 が増減せず、ＫＡＣＴ1 が減少するとともに、ＫＡＣＴ4 が増加する。
【０１４８】
その結果、時点ｔ１０において、１番〜４番気筒＃１〜＃４の排気ガス中の空燃比は、ＫＡＣＴ1 ＝ＫＡＣＴ4 ＞ＫＡＣＴ2 ＝ＫＡＣＴ3 の２気筒ずれパターンになる。また、これに伴い、第１フィルタリング値ＫＡＣＴ＿Ｆｃが小さな振幅で変化するとともに、第２フィルタリング値ＫＡＣＴ＿Ｆｒが大きな振幅で変化し、気筒間の空燃比の大小関係を表すので、算出用フィルタリング値ＫＡＣＴ＿Ｆi が、第２フィルタリング値ＫＡＣＴ＿Ｆｒに切り換えられる。それにより、ばらつき補正係数ＫＥＡＦi のうち、１番および４番気筒＃１，＃４のばらつき補正係数ＫＥＡＦ1 ，ＫＥＡＦ4 が減少するとともに、２番および３番気筒＃２，＃３のばらつき補正係数ＫＥＡＦ2 ，ＫＥＡＦ3 が値１よりも大きな値に増加することで、ＫＡＣＴ1 およびＫＡＣＴ4 が減少し、ＫＡＣＴ2 およびＫＡＣＴ3 が増加しており、４つの気筒＃１〜＃４の空燃比が平均化するように制御される。
【０１４９】
その結果、時点ｔ１１において、ＫＡＣＴ1〜4 がいずれも値１よりも若干大きな値に収束し、それに伴って、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが０に、すなわち、それらの振幅が値０に収束し、その直後において、ＫＡＣＴ1〜4 がいずれも値１に収束するのに伴って、ＬＡＦセンサ１４の出力ＫＡＣＴが値１に収束する。また、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 が値１よりも若干小さな値に安定して収束するとともに、２〜４番気筒＃２〜＃４のばらつき補正係数ＫＥＡＦ2〜4 が値１よりも若干大きな値に安定して収束する。以上のように、非２気筒ずれパターンにおいても、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれている場合でも、４つの気筒＃１〜＃４の空燃比を平均化するように制御することができるとともに、気筒間の空燃比のばらつきを適切に解消することができ、各気筒のばらつき補正係数ＫＥＡＦi を安定させることができる。
【０１５０】
さらに、図２４は、１番気筒＃１の燃料供給系が正常に動作していないことによって、ばらつき補正係数ＫＥＡＦi による補正の開始前に、１番気筒＃１の空燃比のみが他の気筒よりも極めてリーンになっている場合の動作例を示している。まず、ばらつき補正係数ＫＥＡＦi による補正が開始されると（時点ｔ１２）、１番気筒のばらつき補正係数ＫＥＡＦ1 が増加し、第２判定値ＫＥＡＦＲＨを上回る（図１９の前記ステップ７０：ＮＯ）ことにより、第１異常フラグＦ＿ＮＧ１が「１」にセットされる（時点ｔ１３、ステップ７１）。したがって、ばらつき補正係数ＫＥＡＦ1 が、第２判定値ＫＥＡＦＲＨ以上のときに、１番気筒＃１の燃料供給系が正常に動作していないと判定することができる。
【０１５１】
なお、図示しないが、１番気筒＃１の燃料供給系が正常に動作していないことによって、図２４の場合とは逆に、１番気筒＃１の空燃比が他の気筒よりも極めてリッチになっているような場合には、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 が、第１判定値ＫＥＡＦＲＬを下回ることによって、１番気筒＃１の燃料供給系が正常に動作していないと判定することができる。
【０１５２】
以上のように、本実施形態によれば、サイクルフィルタ２３ａおよび回転フィルタ２３ｂが互いに並列に設けられ、ＬＡＦセンサ１４の出力ＫＡＣＴが、サイクルフィルタ２３ａによって、非２気筒ずれパターンによるばらつきの有無を表す第１周波数ｆｒ１域が通過するようにフィルタリングされることで、第１フィルタリング値ＫＡＣＴ＿Ｆｃが算出される。また、回転フィルタ２３ｂによって、ＬＡＦセンサ１４の出力ＫＡＣＴが、２気筒ずれパターンによるばらつきの有無を表す第２周波数ｆｒ２域が通過するようにフィルタリングされることで、第２フィルタリング値ＫＡＣＴ＿Ｆｒが算出される。さらに、第１加重平均値ＫＡＣＴ＿Ｆｃｄが、その前回値の絶対値｜ＫＡＣＴ＿Ｆｃｄ（ｍ−１）｜および第１フィルタリング値の今回値の絶対値｜ＫＡＣＴ＿Ｆｃ（ｍ）｜を加重平均することにより算出される。
【０１５３】
そして、この第１加重平均値ＫＡＣＴ＿Ｆｃｄがしきい値ＫＡＣＴ＿ＲＥＦよりも大きく、第１フィルタリング値ＫＡＣＴ＿Ｆｃの振幅がより大きいときには、ばらつき補正係数ＫＥＡＦi が、第１フィルタリング値ＫＡＣＴ＿Ｆｃに基づいて気筒ごとに算出される。一方、第１加重平均値ＫＡＣＴ＿Ｆｃｄがしきい値ＫＡＣＴ＿ＲＥＦよりも小さく、第２フィルタリング値ＫＡＣＴ＿Ｆｒの振幅がより大きいときには、ばらつき補正係数ＫＥＡＦi が、第２フィルタリング値ＫＡＣＴ＿Ｆｒに基づいて算出される。そのように算出されたばらつき補正係数ＫＥＡＦi に応じて、最終燃料噴射量ＴＯＵＴi が、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの振幅が値０になるように気筒ごとに算出される。
【０１５４】
このように、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒのうち、振幅がより大きく、気筒間の空燃比のばらつきの有無などを良好に表すフィルタリング値に基づいて、このフィルタリング値の振幅が値０になるように、ばらつき補正係数ＫＥＡＦi を算出するので、いかなるばらつきパターンにおいても、４つの気筒＃１〜＃４の空燃比を平均化するように制御でき、それにより、気筒間の空燃比のばらつきを速やかにかつ適切に解消することができる。また、ばらつき補正係数ＫＥＡＦi を算出するためのフィルタリング値を、第１加重平均値ＫＡＣＴ＿Ｆｃｄに基づいて選択するので、各気筒の空燃比の一時的な変動などが生じても、この変動を加重平均によって吸収することができる。その結果、バンドパスフィルタの頻繁な切り換えを防止でき、したがって、各気筒の空燃比が一時的に変動したような場合でも、気筒間の空燃比のばらつきを速やかに解消することができる。
【０１５５】
さらに、最終燃料噴射量ＴＯＵＴi が、ＴＤＣ信号に同期して算出されるとともに、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの算出に用いられるＬＡＦセンサ１４の出力ＫＡＣＴが、ＣＲＫ信号に同期してサンプリングされる。このように、ＬＡＦセンサ１４の出力ＫＡＣＴを、最終燃料噴射量ＴＯＵＴi の決定周期、すなわち各気筒から排気ガスが排出される周期よりも短い周期ごとにサンプリングするので、そのようにサンプリングされたＬＡＦセンサ１４の出力ＫＡＣＴは、各気筒の排気ガス中の空燃比の変化状態をきめ細かく表す。これにより、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒは、気筒間の空燃比のばらつきの有無などをよりきめ細かく適切に表すので、気筒間の空燃比のばらつきを、より速やかにかつ適切に解消することができる。
【０１５６】
また、ばらつき補正係数ＫＥＡＦi を算出するための第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒとして、各気筒の排気ガスの排出タイミングに相当する各気筒のＴＤＣ信号の出力後、むだ時間が経過したタイミングで検出されたＬＡＦセンサ１４の出力ＫＡＣＴに基づくものを選択するので、各気筒の排気ガス中の空燃比が良好に反映されたものを用いることができる。したがって、むだ時間を補償しながら、最終燃料噴射量ＴＯＵＴi を適切に算出することができる。さらに、むだ時間を、吸気管内絶対圧ＰＢＡおよびエンジン回転数ＮＥに応じて、すなわちエンジン３の運転状態に応じて求めるので、運転状態の変化に応じて、むだ時間を適切に補償しながら、各気筒の排気ガス中の空燃比が良好に反映された第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒを、最適に得ることができる。
【０１５７】
また、各気筒のばらつき補正係数ＫＥＡＦi が、ばらつき補正係数暫定値ｋｅａｆi を移動平均値ＫＥＡＦａｖｅで除算することにより算出される。これにより、各フィルタリング値にノイズが含まれる場合でも、各気筒のばらつき補正係数ＫＥＡＦi へのノイズの影響を平準化することができるので、ばらつき補正係数ＫＥＡＦi を適切に算出でき、したがって、各気筒の空燃比の変動を回避することができる。さらに、気筒間の空燃比のばらつきを補正するための各気筒のばらつき補正係数ＫＥＡＦi が、大きすぎるまたは小さすぎるときに、対応する気筒の燃料供給系が正常に動作していないと判定するので、この判定を適切に行うことができる。
【０１５８】
また、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さくなったときに、気筒間の空燃比のばらつきが解消したとして、ばらつき補正係数ＫＥＡＦi を、その直前に算出された値とほぼ等しい値に固定する。これにより、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズに起因するばらつき補正係数ＫＥＡＦi の変動を防止できる。したがって、前述したハンチング現象を回避することができるので、気筒間の空燃比のばらつきのない状態に維持することができる。
【０１５９】
なお、本実施形態のように、ばらつき補正係数ＫＥＡＦi を算出するためのフィルタリング値の選択を、第１加重平均値ＫＡＣＴ＿Ｆｃｄとしきい値ＫＡＣＴ＿ＲＥＦとの比較結果に基づいて行うのに代えて、第１加重平均値ＫＡＣＴ＿Ｆｃｄと第２加重平均値ＫＡＣＴ＿Ｆｒｄとの比較結果に基づいて行ってもよい。具体的には、ばらつき補正係数ＫＥＡＦi を算出するためのフィルタリング値として、ＫＡＣＴ＿Ｆｃｄ＞ＫＡＣＴ＿Ｆｒｄのときには、第１フィルタリング値ＫＡＣＴ＿Ｆｃを選択し、ＫＡＣＴ＿Ｆｃｄ≦ＫＡＣＴ＿Ｆｒｄのときには、第２フィルタリング値ＫＡＣＴ＿Ｆｒを選択してもよい。この場合にも、本実施形態と同様に、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒのうち、振幅がより大きく、気筒間の空燃比のばらつきの有無などをより良好に表すものを、ばらつき補正係数ＫＥＡＦi を算出するためのフィルタリング値として採用することができる。
【０１６０】
次に、図２５を参照しながら、ばらつき補正係数ＫＥＡＦi を算出する処理の変形例について説明する。本処理は、前述した図１８の処理と比較して、前記ステップ６３および６４の処理のみが異なるので、以下、この相違点を中心として説明し、同じ実行内容のステップについては、同じステップ番号を付し、その説明を省略するものとする。前記ステップ６３および６４に代わるステップ８０では、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、しきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいか否かを判別する。
【０１６１】
この答がＮＯのときには、気筒間で空燃比がばらついているとして、前記ステップ６５〜６７を実行し、ばらつき補正係数ＫＥＡＦi を算出するとともに、算出したばらつき補正係数ＫＥＡＦi をＲＡＭに記憶・更新し（ステップ８１）、本処理を終了する。
【０１６２】
一方、上記ステップ８０の答がＹＥＳで、｜ＫＡＣＴ＿Ｆi （ｎ）｜＜ＫＡＣＴ＿ＴＨＲＥＳＨのときには、気筒間の空燃比のばらつきが解消しているとして、前記ステップ６５〜６７，８１をスキップし、ばらつき補正係数ＫＥＡＦi の算出・更新を行わずに、本処理を終了する。
【０１６３】
このように、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいときには、気筒間の空燃比のばらつきが解消しているとして、ばらつき補正係数ＫＥＡＦi は、その算出・更新が行われないことにより、この条件が成立する直前に算出されたばらつき補正係数ＫＥＡＦi と同じ値に固定される。したがって、前述した第１実施形態と同様、ハンチング現象を回避することができ、気筒間の空燃比のばらつきのない状態に維持することができる。また、上記の条件（｜ＫＡＣＴ＿Ｆi （ｎ）｜＜ＫＡＣＴ＿ＴＨＲＥＳＨ）が成立しているときに、第１実施形態で行われるようなばらつき補正係数ＫＥＡＦi の算出・更新が省略されるので、その分、ＥＣＵ２の演算負荷を低減することができる。
【０１６４】
次に、図２６を参照しながら、本発明の第２実施形態について説明する。本実施形態は、第１実施形態のばらつき補正部２３に代えて、ばらつき補正部３０が設けられている点のみが異なるため、以下、その構成を中心として説明する。同図において、ばらつき補正部２３と同じばらつき補正部３０中の構成要素については、同じ符号を用いて示している。
【０１６５】
ばらつき補正部３０では、加算器３０ａ（総和算出手段）によって、第１遅延要素２３ｃから出力された第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）と、第２遅延要素２３ｄから出力された第２フィルタリング値ＫＡＣＴ＿Ｆｒ（ｍ）が加算される。また、この加算によって得られた和（総和）が、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として、算出用フィルタリング値決定部３０ｂ（補正係数固定手段）に出力される。算出用フィルタリング値決定部３０ｂでは、入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に基づき、前述した算出用フィルタリング値決定部２３ｈと同様にして、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を決定し、決定した算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）をばらつき補正係数算出部３０ｃ（補正用パラメータ算出手段、平均値算出手段、補正係数算出手段）に出力する。ばらつき補正係数算出部３０ｃでは、入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に基づいて、ばらつき補正係数ＫＥＡＦi が算出される。
【０１６６】
このばらつき補正係数ＫＥＡＦi の算出について、図２７のフローチャートを参照しながら説明する。まず、ステップ９０では、図１４の前記ステップ８で読み込んだ第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和を、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）として設定する。
【０１６７】
次いで、設定した算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、図１８の前記ステップ６３で用いたしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいか否かを判別する（ステップ９１）。この答がＹＥＳのときには、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの和がほぼ値０であるため、気筒間の空燃比のばらつきが解消しているとして、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を０に設定し（ステップ９２）、ステップ９３〜９５を実行する。一方、ステップ９１の答がＮＯで、｜ＫＡＣＴ＿Ｆi （ｎ）｜≧ＫＡＣＴ＿ＴＨＲＥＳＨのときには、気筒間で空燃比がばらついているとして、ステップ９２をスキップし、ステップ９３〜９５を実行する。
【０１６８】
このステップ９３〜９５では、前記ステップ６５〜６７と同様にして、ばらつき補正係数ＫＥＡＦi を算出する。まず、ステップ９３では、ステップ９０または９２で設定された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を用いて、前記式（２４）により、ばらつき補正係数暫定値ｋｅａｆi を算出する。次に、ステップ９４において、算出したばらつき補正係数暫定値ｋｅａｆi を用いて、前記式（２５）により、移動平均値ＫＥＡＦａｖｅを算出する。
【０１６９】
次いで、ステップ９５において、上記ステップ９３および９４においてそれぞれ算出したばらつき補正係数暫定値ｋｅａｆi および移動平均値ＫＥＡＦａｖｅを用いて、前記式（２６）により、ばらつき補正係数ＫＥＡＦi を算出した後、本処理を終了する。
【０１７０】
以上のように、第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和に基づいて、ばらつき補正係数ＫＥＡＦi を算出する（ステップ９０、９３〜９５）のは、次の理由による。すなわち、図２８に示すように、前述した模擬出力ＫＡＣＴＭＩをＬＡＦセンサ１４の出力ＫＡＣＴとして、第３模擬出力ＫＡＣＴＭＩ3 のみを他の模擬出力よりも小さくし、ばらつき補正部３０に入力すると、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、比較的大きな振幅で変化し、第２フィルタリング値ＫＡＣＴ＿Ｆｒは、比較的小さな振幅で変化する。そして、これらのフィルタリング値の和（ＫＡＣＴ＿Ｆｃ＋ＫＡＣＴ＿Ｆｒ）は、同図に破線で示す第１フィルタリング値ＫＡＣＴ＿Ｆｃと比較して、第３模擬出力ＫＡＣＴＭＩ3 が入力されるタイミングでは、絶対値が大きな負値に、第２模擬出力ＫＡＣＴＭＩ2 が入力されるタイミングでは、小さな正値になる。このように、第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和は、第１フィルタリング値ＫＡＣＴ＿Ｆｃよりも、気筒間の空燃比の実際のばらつきに近い特性を示す。なお、このような特性は、３番気筒＃３に限らず、他の１つの気筒のみの空燃比がリーン側またはリッチ側にずれているばらつきパターンの場合にも該当する。以上により、第１実施形態のばらつき補正部２３と比較して、気筒間の空燃比のばらつきを速やかに解消することができるためである。
【０１７１】
また、第１実施形態と同様、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さくなったときには（ステップ９１：ＹＥＳ）、空燃比のばらつきが解消したとして、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を０に設定する（ステップ９２）とともに、それを用いて、ばらつき補正係数ＫＥＡＦi を算出する（ステップ９３〜９５）。これにより、ばらつき補正係数ＫＥＡＦi は、その直前に算出されたばらつき補正係数ＫＥＡＦi とほぼ等しい値に固定される。
【０１７２】
次に、図２９〜図３１を参照しながら、本発明の第２実施形態により空燃比を制御した場合の動作例について、第１および第２の比較例とともに説明する。これらの第１および第２の比較例はそれぞれ、第１実施形態で用いた図２１および図２２の第１および第２比較例と同様、ばらつき補正係数ＫＥＡＦi をばらつき補正係数暫定値ｋｅａｆi に直接、設定した場合の例、および、空燃比のばらつきの解消後にばらつき補正係数ＫＥＡＦi の算出・更新を継続した場合の例である。また、これらの例はいずれも、図２３の場合と同様、１番気筒＃１の混合気の空燃比が他の気筒よりもリッチな状態のばらつきパターンの場合において、ＳＴＲ２２により、ＬＡＦセンサ１４の出力ＫＡＣＴが値１になるように制御しているときに、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれている状態で、ばらつき補正係数ＫＥＡＦi による補正を行ったときの動作を示している。なお、同図において、ＫＡＣＴ1〜4 はそれぞれ、前述した図２０〜２４の場合と同様、排気マニホルド７ａの気筒＃１〜＃４の排気ポートの直後の部分に追加して設けた４つの測定用のＬＡＦセンサ（図示せず）の出力に相当する。
【０１７３】
図２９に示すように、ばらつき補正係数ＫＥＡＦi による補正が開始されるまでは（〜ｔ１４）、第１フィルタリング値ＫＡＣＴ＿Ｆｃが、比較的大きな振幅で変化するとともに、第２フィルタリング値ＫＡＣＴ＿Ｆｒが、比較的小さな振幅で変化する。図２８の説明のときに述べたように、第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和は、気筒間の空燃比の実際のばらつきに近い特性を示す。このため、この状態において、ばらつき補正係数ＫＥＡＦi による補正が開始されると（時点ｔ１４）、図２３に示した第１実施形態の場合と比較して、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 の減少度合は大きく、また、４番気筒＃４のばらつき補正係数ＫＥＡＦ4 の増加度合は小さい。
【０１７４】
これにより、第１実施形態の場合と異なり、ＫＡＣＴ1 とＫＡＣＴ4 との差が若干存在することによって、２気筒ずれパターンに近いパターンになることで、第２フィルタリング値ＫＡＣＴ＿Ｆｒの振幅が若干、大きくなる。それにより、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 がさらに減少するとともに、２番および３番気筒＃２，＃３のばらつき補正係数ＫＥＡＦ2  ，ＫＥＡＦ3 が増加し、４番気筒＃４のばらつき補正係数ＫＥＡＦ4 が若干、増加する。また、そのような各気筒のばらつき補正係数ＫＥＡＦi の変化によって、ＫＡＣＴ1 がさらに減少するとともに、ＫＡＣＴ2 およびＫＡＣＴ3 が増加し、ＫＡＣＴ4 が若干増加しており、４つの気筒＃１〜＃４の空燃比が平均化するように制御される。
【０１７５】
その結果、第１実施形態の図２３に示す時点ｔ１１よりも早い時点ｔ１５において、ＫＡＣＴ1〜4 がいずれも所定の値に収束するのに伴って、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒが０に収束するとともに、これらのフィルタリング値の和（ＫＡＣＴ＿Ｆｃ＋ＫＡＣＴ＿Ｆｒ）も値０に収束する。また、その直後において、ＫＡＣＴ1〜4 がいずれも値１に収束するのに伴って、ＬＡＦセンサ１４の出力ＫＡＣＴが値１に収束する。さらに、１番気筒＃１のばらつき補正係数ＫＥＡＦ1 は値１よりも若干小さな値に安定して収束するとともに、２〜４番気筒＃２〜＃４のばらつき補正係数ＫＥＡＦ2〜4 は値１よりも若干大きな値に安定して収束する。以上のように、本実施形態によれば、第１実施形態と比較して、気筒間の空燃比のばらつきを速やかに解消することができる。
【０１７６】
これに対して、図３０の第１比較例では、前述した図２１の第１比較例と同様、補正開始後（時点ｔ１６以降）、１番〜４番気筒のばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 がいずれも、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒに含まれるノイズの影響により増加し、安定しない。また、このばらつき補正係数ＫＥＡＦi の増加に伴い、フィードバック補正係数ＫＳＴＲが値１よりも小さな値に減少している。そして、ばらつき補正係数ＫＥＡＦi がノイズの影響によりさらに増加するのに応じて、フィードバック補正係数ＫＳＴＲがその下限値ＫＳＴＲＬに達すると（時点ｔ１７）、ＫＡＣＴ1〜4 がいずれも値１付近から増加するようになり、それに伴って、ＬＡＦセンサの出力ＫＡＣＴも値１付近から増加し始める。以上のように、本実施形態においても、補正係数平均化処理により、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒにノイズが含まれる場合でも、ばらつき補正係数ＫＥＡＦi を安定させることができる。
【０１７７】
また、図３１の第２比較例では、補正開始後（時点ｔ１８以降）、空燃比のばらつきが解消した（時点ｔ１９）後にも、ばらつき補正係数ＫＥＡＦi の算出・更新が継続されるので、前述した図２２の第２比較例と同様の動作になる。すなわち、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズの影響により、ばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 が変動する（時点ｔ２０以降）。この変動によって、ＫＡＣＴ1〜4 が再び値１から若干ばらつくのに伴い、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒの振幅が若干大きくなる。さらにその後には（時点ｔ２１以降）、ばらつき補正係数ＫＥＡＦ1 〜ＫＥＡＦ4 が安定するのに応じて、ＫＡＣＴ1〜4 が再び値１に収束する。以上のように、図２２の第２比較例の場合と同様、ハンチング現象が生じる。
【０１７８】
以上のように、本実施形態においても、補正係数固定処理によって、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズに起因するばらつき補正係数ＫＥＡＦi の変動を防止できる。したがって、上記のハンチング現象を回避することができるなど、第１実施形態による前述した効果をまったく同様に得ることができる。
【０１７９】
以上のように、この第２実施形態によれば、気筒間の空燃比の実際のばらつきにより近い特性を示す第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和に基づいて、４つの気筒＃１〜＃４の空燃比が平均化し、気筒間の空燃比のばらつきが解消するように、すなわち、第１フィルタリング値ＫＡＣＴ＿Ｆｃと第２フィルタリング値ＫＡＣＴ＿Ｆｒとの和が値０になるように、ばらつき補正係数ＫＥＡＦi が算出される。したがって、気筒間の空燃比のばらつきをさらに速やかにかつ適切に解消することができる。
【０１８０】
なお、第１実施形態の変形例と同様に、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいときに、ばらつき補正係数ＫＥＡＦi の算出・更新を行わないようにすることによって、ばらつき補正係数ＫＥＡＦi を直前の値に固定してもよい。
【０１８１】
次に、図３５を参照しながら、本発明の第３実施形態について説明する。本実施形態は、前述した第１実施形態のばらつき補正部２３に代えて、ばらつき補正部６０が設けられている点のみが異なるため、以下、その構成を中心として説明する。同図において、第１実施形態のばらつき補正部２３と同じばらつき補正部６０中の構成要素については、同じ符号を用いて示している。
【０１８２】
ばらつき補正部６０では、ばらつき補正係数算出部６０ａ（補正係数算出手段）において、算出用フィルタリング値決定部２３ｈから入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）、および学習補正係数算出記憶部６０ｂ（学習補正係数算出手段、記憶手段）から入力された第１検索値ＫＭＥＭＩＰi （ｎ）に応じて、ばらつき補正係数ＫＥＡＦi （ｎ）を気筒ごとに算出し、学習補正係数算出記憶部６０ｂに出力する。その詳細については後述する。
【０１８３】
学習補正係数算出記憶部６０ｂでは、ばらつき補正係数算出部６０ａから入力されたばらつき補正係数ＫＥＡＦi （ｎ）と、すでに記憶している学習補正係数ＫＭＥＭi とに応じて、今回の学習補正係数ＫＭＥＭi （ｎ）を算出する。この学習補正係数ＫＭＥＭi は、空燃比のばらつきを補正するためのものであり、ばらつき補正係数ＫＥＡＦi の学習値である。そして、算出した学習補正係数ＫＭＥＭi （ｎ）を、エンジン３の運転状態に対応させて記憶する。また、記憶した学習補正係数ＫＭＥＭi のうち、現在のエンジン３の運転状態に対応する学習補正係数ＫＭＥＭi を第１検索値ＫＭＥＭＩＰi （ｎ）として、ばらつき補正係数算出部６０ａに出力する。以上の学習補正係数算出記憶部６０ｂにおける処理の詳細については、後述する。
【０１８４】
次に、本実施形態の空燃比制御を含む燃料噴射制御処理について、図３６を参照しながら説明する。本処理は、前述した図１４の燃料噴射量制御処理と比較して、前記ステップ９の処理に代えて、ステップ９Ａのばらつき補正係数ＫＥＡＦi を算出する処理と、これに続くステップ９Ｂの学習補正係数ＫＭＥＭi を算出・記憶する処理を実行する点のみが異なるので、以下、この相違点を中心として説明し、同じ実行内容のステップについては、同じステップ番号を付し、その説明を省略するものとする。
【０１８５】
次に、図３７を参照しながら、このステップ９Ａのばらつき補正係数ＫＥＡＦi を算出する処理について説明する。本処理は、前述した図１８のばらつき補正係数ＫＥＡＦi を算出する処理と比較して、前記ステップ６５に代えて、ステップ１００および１０１の処理が実行される点のみが異なるので、同じ実行内容のステップについては、同じステップ番号を付し、以下、相違点を中心として説明する。
【０１８６】
前記ステップ６３または６４に続くステップ１００では、第１検索値ＫＭＥＭＩＰi を設定する。この設定は、図３８に示すＫＭＥＭi メモリに記憶された学習補正係数ＫＭＥＭi を読み出すことによって行われる。このＫＭＥＭi メモリは、ＥＥＰＲＯＭ２ａで構成されており、＃１番〜＃４番気筒の学習補正係数ＫＭＥＭ1〜4 をそれぞれ記憶するＫＭＥＭ1〜4 メモリを有している。また、各ＫＭＥＭi メモリは、学習補正係数ＫＭＥＭi を記憶するための、ＮＥナンバーＮＥ’i （ｎ−ｅ）およびＰＢナンバーＰＢ’i （ｎ−ｅ）で規定される多数の記憶場所を有しており、これらの記憶場所に、学習補正係数ＫＭＥＭi が、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡで表されるエンジン３の運転状態に対応させて、記憶されている。
【０１８７】
上記の第１検索値ＫＭＥＭＩＰi は、ＫＭＥＭi メモリに記憶された学習補正係数ＫＭＥＭi のうちの、現在のエンジン回転数ＮＥに対応するＮＥナンバーＮＥ’i （ｎ−ｅ）と、現在の吸気管内絶対圧ＰＢＡに対応するＰＢナンバーＰＢ’i （ｎ−ｅ）とで規定される記憶場所に記憶された学習補正係数ＫＭＥＭi に設定される。なお、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡにそれぞれ対応するＮＥおよびＰＢナンバーＮＥ’i （ｎ−ｅ），ＰＢ’i （ｎ−ｅ）が存在しない場合には、第１検索値ＫＭＥＭＩＰi の設定は、補間演算によって行われる。
【０１８８】
上記ステップ１００に続くステップ１０１では、設定した第１検索値ＫＭＥＭＩＰi （ｎ）、および前記ステップ６１、６２または６４で設定した算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）を用いて、次式（３１）によってばらつき補正係数暫定値ｋｅａｆi （ｎ）を算出する。そして、続くステップ６６および６７において、算出したばらつき補正係数暫定値ｋｅａｆi （ｎ）に基づき、前記式（２５）および（２６）によって、ばらつき補正係数ＫＥＡＦi （ｎ）を算出する。
【数１】
2005133714.tif 000003
【０１８９】
以上のように、ＫＭＥＭi メモリに記憶された学習補正係数ＫＭＥＭi のうち、現在のエンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに対応する学習補正係数ＫＭＥＭi を、第１検索値ＫＭＥＭＩＰi （ｎ）として設定する。そして、設定した第１検索値ＫＭＥＭＩＰi （ｎ）と算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に応じて、ばらつき補正係数ＫＥＡＦi （ｎ）が算出される。
【０１９０】
次に、図３９を参照しながら、前記ステップ９Ｂの学習補正係数ＫＭＥＭi を算出・記憶する処理について説明する。まず、ステップ１１０では、前記ステップ６３と同様、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜が、前記しきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいか否かを判別する。この答がＮＯのときには、気筒間で空燃比がばらついているとして、学習補正係数ＫＭＥＭi の算出・記憶を行わずに、そのまま本処理を終了する。
【０１９１】
一方、ステップ１１０の答がＹＥＳで、｜ＫＡＣＴ＿Ｆi （ｎ）｜＜ＫＡＣＴ＿ＴＨＲＥＳＨのときには、気筒間で空燃比がほとんどばらついていないとして、次のステップ１１１〜１２１において、今回、算出する学習補正係数ＫＭＥＭi を記憶するためのＫＭＥＭi メモリの記憶場所の設定、すなわち、この記憶場所を規定するＮＥナンバーＮＥ’i （ｎ−ｅ）およびＰＢナンバーＰＢ’i （ｎ−ｅ）の設定を行う。
【０１９２】
この設定は、所定のむだ時間分前のエンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに基づいて行われる。これは次の理由による。すなわち、前述したように、ばらつき補正係数ＫＥＡＦi は、算出用フィルタリング値ＫＡＣＴ＿Ｆi に基づいて算出され、この算出用フィルタリング値ＫＡＣＴ＿Ｆi は、ＬＡＦセンサ１４の出力ＫＡＣＴをフィルタリングしたものである。また、最終燃料噴射量ＴＯＵＴi は、前記ステップ２，１０および１１から明らかなように、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じて求められる。さらに、最終燃料噴射量ＴＯＵＴi に基づく燃料が噴射された後、その燃焼によって生成される排気ガス中の酸素濃度がＬＡＦセンサ１４の出力に反映されるまでに、むだ時間が生じる。以上から明らかなように、ＬＡＦセンサの出力ＫＡＣＴ、およびこれに基づいて算出されるばらつき補正係数ＫＥＡＦi は、このむだ時間分前の空燃比に対応するので、この空燃比を定めるのに用いたむだ時間分前の実際のエンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに、ばらつき補正係数ＫＥＡＦi を対応させるためである。これにより、学習補正係数ＫＭＥＭi を、このむだ時間による影響を補償しながら、エンジン３の運転状態に適切に対応させて記憶することができる。
【０１９３】
まず、ステップ１１１では、記号ｘおよび記号ｙを値１にセットする。次いで、ｅサイクル前回転数ＮＥ（ｎ−ｅ）が、第１所定値ＮＥｇ（１）および第２所定値ＮＥｇ（２）の単純平均値（｛ＮＥｇ（１）＋ＮＥｇ（２）｝／２）よりも大きいか否かを判別する（ステップ１１２）。
【０１９４】
このｅサイクル前回転数ＮＥ（ｎ−ｅ）は、ＲＡＭに記憶された、本処理のｅ回サイクル前、すなわちｅ回前のＴＤＣ信号が出力された時点に検出されたエンジン回転数ＮＥである。また、この値ｅは、上述したむだ時間に対応するものであり、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じ、ｅマップ（図示せず）を検索することによって求められる。このｅマップでは、値ｅは、エンジン回転数ＮＥが高いほど、または吸気管内絶対圧ＰＢＡが高いほど、より小さな値に設定されている。これは、エンジン回転数ＮＥまたは吸気管内絶対圧ＰＢＡが高いほど、排気ガスの流速が高いので、その分、むだ時間がより短いためである。また、上記の第１および第２の所定値ＮＥｇ（１），ＮＥｇ（２）は、ＮＥナンバーＮＥ’i （ｎ−ｅ）に対応するように設定され、ＮＥｇ（１）＜ＮＥｇ（２）の大小関係に設定されている。
【０１９５】
上記ステップ１１２の答がＮＯで、ＮＥ（ｎ−ｅ）≦｛ＮＥｇ（１）＋ＮＥｇ（２）｝／２のときには、多数のＮＥナンバーＮＥ’i （ｎ−ｅ）のうちから、第１所定値ＮＥｇ（１）に対応するものを選択し、学習補正係数ＫＭＥＭi の記憶場所を規定するＮＥナンバーＮＥ’i （ｎ−ｅ）として設定する（ステップ１１３）。
【０１９６】
一方、前記ステップ１１２の答がＹＥＳで、ＮＥ（ｎ−ｅ）＞｛ＮＥｇ（１）＋ＮＥｇ（２）｝／２のときには、ｅサイクル前回転数ＮＥ（ｎ−ｅ）が、第ｘ所定値ＮＥｇ（ｘ）および第ｘ＋１所定値ＮＥｇ（ｘ＋１）の平均値（｛ＮＥｇ（ｘ）＋ＮＥｇ（ｘ＋１）｝／２）よりも大きく、かつ第ｘ＋１所定値ＮＥｇ（ｘ＋１）および第ｘ＋２所定値ＮＥｇ（ｘ＋２）の平均値（｛ＮＥｇ（ｘ＋１）＋ＮＥｇ（ｘ＋２）｝／２）よりも小さいか否かを判別する（ステップ１１４）。これらの第ｘ〜第ｘ＋２の所定値ＮＥｇ（ｘ）〜ＮＥｇ（ｘ＋２）は、記号ｘの値が大きいほど、より大きな値に設定され、第１所定値ＮＥｇ（１）と同様、ＮＥナンバーＮＥ’i （ｎ−ｅ）に対応するように設定されている。
【０１９７】
このステップ１１４の答がＮＯのときには、記号ｘをインクリメントし（ステップ１１５）、再度、ステップ１１４を実行する。一方、上記ステップ１１４の答がＹＥＳのときには、第ｘ＋１所定値ＮＥｇ（ｘ＋１）に対応するＮＥナンバーＮＥ’i （ｎ−ｅ）を、学習補正係数ＫＭＥＭi の記憶場所を規定するＮＥナンバーＮＥ’i （ｎ−ｅ）として設定する（ステップ１１６）。このように、上記ステップ１１４の条件が成立するまで、記号ｘがインクリメントされ、それにより、ステップ１１４の判別に用いられる第ｘ〜第ｘ＋２の所定値ＮＥｇ（ｘ）〜（ｘ＋２）が、第１〜第３所定値ＮＥｇ（１）〜（３）からそれぞれ繰り上げられる。以上のようにしてＮＥナンバーＮＥ’i （ｎ−ｅ）を設定するのは、ｅサイクル前回転数ＮＥ（ｎ−ｅ）に合致するＮＥナンバーＮＥ’i （ｎ−ｅ）が通常、存在しないので、より近いＮＥナンバーＮＥ’i （ｎ−ｅ）を補間によって求めるためである。
【０１９８】
前記ステップ１１３または１１６に続くステップ１１７では、ｅサイクル前絶対圧ＰＢ（ｎ−ｅ）が、第１所定値ＰＢｇ（１）および第２所定値ＰＢｇ（２）の平均値（｛ＰＢｇ（１）＋ＰＢｇ（２）｝／２）よりも大きいか否かを判別する（ステップ１１７）。このｅサイクル前絶対圧ＰＢ（ｎ−ｅ）は、ＲＡＭに記憶された、本処理のｅ回サイクル前に検出された吸気管内絶対圧ＰＢＡである。また、第１および第２の所定値ＰＢｇ（１），ＰＢｇ（２）は、ＰＢナンバーＰＢ’i （ｎ−ｅ）に対応するように設定され、ＰＢｇ（１）＜ＰＢｇ（２）の大小関係に設定されている。
【０１９９】
このステップ１１７の答がＮＯで、ＰＢ（ｎ−ｅ）≦｛ＰＢｇ（１）＋ＰＢｇ（２）｝／２のときには、多数のＰＢナンバーＰＢ’i （ｎ−ｅ）のうちから、第１所定値ＰＢｇ（１）に対応するものを選択し、学習補正係数ＫＭＥＭi の記憶場所を規定するＰＢナンバーＰＢ’i （ｎ−ｅ）として設定する（ステップ１１８）。
【０２００】
一方、上記ステップ１１７の答がＹＥＳで、ＰＢ（ｎ−ｅ）＞｛ＰＢｇ（１）＋ＰＢｇ（２）｝／２のときには、ｅサイクル前絶対圧ＰＢ（ｎ−ｅ）が、第ｙ所定値ＰＢｇ（ｙ）および第ｙ＋１所定値ＰＢｇ（ｙ＋１）の平均値（｛ＰＢｇ（ｙ）＋ＰＢｇ（ｙ＋１）｝／２）よりも大きく、かつ第ｙ＋１所定値ＰＢｇ（ｙ＋１）および第ｙ＋２所定値ＰＢｇ（ｙ＋２）の平均値（｛ＰＢｇ（ｙ＋１）＋ＰＢｇ（ｙ＋２）｝／２）よりも小さいか否かを判別する（ステップ１１９）。これらの第ｙ〜第ｙ＋２の所定値ＰＢｇ（ｙ）〜ＰＢｇ（ｙ＋２）は、記号ｙの値が大きいほど、より大きな値に設定され、第１所定値ＰＢｇ（１）と同様、ＰＢナンバーＰＢ’i （ｎ−ｅ）に対応するように設定されている。
【０２０１】
この答がＮＯのときには、記号ｙをインクリメントし（ステップ１２０）、再度、ステップ１１９を実行する。一方、上記ステップ１１９の答がＹＥＳのときには、第ｙ＋１所定値ＰＢｇ（ｙ＋１）に対応するＰＢナンバーＰＢ’i （ｎ−ｅ）を、学習補正係数ＫＭＥＭi の記憶場所を規定するＰＢナンバーＰＢ’i （ｎ−ｅ）として設定する（ステップ１２１）。このように、上記ステップ１１９の条件が成立するまで、記号ｙがインクリメントされ、それにより、ステップ１１９の判別に用いられる第ｙ〜第ｙ＋２所定値ＰＢｇ（ｙ）〜（ｙ＋２）が、ＰＢｇ（１）〜（３）からそれぞれ繰り上げられる。以上のようにしてＰＢナンバーＰＢ’i （ｎ−ｅ）を設定するのは、ｅサイクル前絶対圧ＰＢ（ｎ−ｅ）に合致するＰＢナンバーＰＢ’i （ｎ−ｅ）が通常、存在しないので、より近いＰＢナンバーＰＢ’i （ｎ−ｅ）を補間によって求めるためである。
【０２０２】
前記ステップ１１８または１２１に続くステップ１２２では、前記ステップ１１３または１１６で設定したＮＥナンバーＮＥ’i （ｎ−ｅ）と、前記ステップ１１８または１２１で設定したＰＢナンバーＰＢ’i （ｎ−ｅ）を用いて、第２検索値ＫＭＥＭＩＰi ’を設定する。具体的には、ＮＥおよびＰＢナンバーＮＥ’i （ｎ−ｅ），ＰＢ’i （ｎ−ｅ）で規定されるＫＭＥＭi メモリの記憶場所に記憶されている学習補正係数ＫＭＥＭi を読み出し、第２検索値ＫＭＥＭＩＰi ’（ｎ）として設定する。
【０２０３】
次いで、設定した第２検索値ＫＭＥＭＩＰi ’（ｎ）、および前述した図３７の処理で算出したばらつき補正係数ＫＥＡＦi を用いて、学習補正係数ＫＭＥＭi （ｎ）を次式（３２）によって算出する（ステップ１２３）。
KMEMi (n)=Ks・KEAFi (n)+(1-Ks)・KMEMIPi '(n)      ……  （３２）
ここで、Ｋｓは、所定の学習速度係数であり、０＜Ｋｓ≦１に設定されている。
【０２０４】
次に、算出した学習補正係数ＫＭＥＭi （ｎ）を、ＫＭＥＭi メモリのうちの、ＮＥおよびＰＢナンバーＮＥ’i （ｎ−ｅ），ＰＢ’i （ｎ−ｅ）で規定される記憶場所に記憶し（ステップ１２４）、更新した後、本処理を終了する。
【０２０５】
以上のように、気筒間で空燃比がほとんどばらついていないとみなされるときに、ばらつき補正係数ＫＥＡＦi （ｎ）が対応するむだ時間分前のエンジン３の運転状態を表すｅサイクル前回転数および絶対圧ＮＥ（ｎ−ｅ），ＰＢ（ｎ−ｅ）に基づいて、学習補正係数ＫＭＥＭi （ｎ）の記憶場所が設定される。次に、設定された記憶場所にすでに記憶されている学習補正係数ＫＭＥＭi を読み出し、第２検索値ＫＭＥＭＩＰi ’（ｎ）として設定する。そして、そのときに算出されたばらつき補正係数ＫＥＡＦi （ｎ）と、第２検索値ＫＭＥＭＩＰi ’（ｎ）に基づいて、学習補正係数ＫＭＥＭi （ｎ）を算出し、算出した学習補正係数ＫＭＥＭi （ｎ）を、設定した記憶場所に記憶し、更新する。
【０２０６】
以上のように、本実施形態によれば、気筒間で空燃比がほとんどばらついていないとみなされる状況で算出した学習補正係数ＫＭＥＭi を、エンジン３の運転状態に対応させて記憶するとともに、記憶した学習補正係数ＫＭＥＭi のうちの現在のエンジン３の運転状態に対応する学習補正係数ＫＭＥＭi である第１検索値ＫＭＥＭＩＰi に応じて、最終燃料噴射量ＴＯＵＴi を算出する。したがって、エンジン３の運転状態に応じて、そのときの実際のエンジン３の運転状態に最適な学習補正係数ＫＭＥＭi を用いて、最終燃料噴射量ＴＯＵＴi を決定できる。その結果、エンジン３の運転状態に応じて空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。また、学習補正係数ＫＭＥＭi を記憶する際に、前述したむだ時間を考慮するので、その影響を補償しながら、学習補正係数ＫＭＥＭi を、エンジン３の運転状態に適切に対応させて記憶することができる。
【０２０７】
さらに、学習補正係数ＫＭＥＭi を、不揮発性メモリであるＥＥＰＲＯＭ２ａで構成されたＫＭＥＭi メモリに記憶する。これにより、エンジン３の始動時において、前回までのエンジン３の運転中に記憶された学習補正係数ＫＭＥＭi を用いて最終燃料噴射量ＴＯＵＴi を決定できる。これにより、エンジン３の始動後、ＬＡＦセンサ１４が活性化していない状態でも、空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。
【０２０８】
さらに、算出したばらつき補正係数ＫＥＡＦi と、すでに記憶された学習補正係数ＫＭＥＭi である第２検索値ＫＭＥＭＩＰi ’とに応じて学習補正係数ＫＭＥＭi を算出するので、学習補正係数ＫＭＥＭi への第１または第２フィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ中のノイズなどの影響を抑制することができる。また、学習補正係数ＫＭＥＭi の算出の際に、ばらつき補正係数ＫＥＡＦi を算出したときのエンジン３の運転状態、すなわち、前述したむだ時間に相当するｅサイクル前の運転状態とほぼ同一の運転状態において得られた学習補正係数ＫＭＥＭi である第２検索値ＫＭＥＭＩＰi ’を用いるので、学習補正係数ＫＭＥＭi を、エンジン３の運転状態に応じて適切に算出することができる。
【０２０９】
なお、本実施形態では、記憶手段としてＥＥＰＲＯＭ２ａを用いたが、不揮発性のメモリであれば、これに限らず任意のものを用いてもよく、例えばフラッシュメモリやバックアップ用の電源を備えたＲＡＭを用いてもよい。また、本実施形態では、ばらつき補正係数ＫＥＡＦi を算出したときのエンジン３の運転状態として、ｅサイクル前の運転状態を用いたが、前述したむだ時間が短い場合には、これに代えて、ばらつき補正係数ＫＥＡＦi の算出時の運転状態を用いてもよい。さらに、第１実施形態の変形例と同様に、算出用フィルタリング値の絶対値｜ＫＡＣＴ＿Ｆi （ｎ）｜がしきい値ＫＡＣＴ＿ＴＨＲＥＳＨよりも小さいときに、ばらつき補正係数ＫＥＡＦi の算出・更新を行わないようにすることによって、ばらつき補正係数ＫＥＡＦi を直前の値に固定してもよい。また、第２実施形態と同様に、第１および第２のフィルタリング値ＫＡＣＴ＿Ｆｃ，ＫＡＣＴ＿Ｆｒ（ｍ）の和に基づいて、ばらつき補正係数ＫＥＡＦi を算出してもよい。
【０２１０】
また、説明した実施形態は、本発明を、４サイクル直列４気筒型のエンジン３に適用した例であるが、本発明はこれに限らず、各実施形態について、複数の気筒を有するエンジン、例えば、４サイクル直列３気筒タイプ、または各々が３つの気筒からなる一対のシリンダバンクを備える４サイクルＶ型６気筒タイプのエンジンに適用することが可能である。以下、本発明の第１実施形態において、４サイクル直列３気筒タイプのエンジンを用いた場合について説明する。この空燃比制御装置は、前述した第１実施形態の空燃比制御装置１と比較して、ばらつき補正部４０の構成が異なるため、以下、図３２を参照しながら、この点を中心として説明する。なお、同図において、第１実施形態のばらつき補正部２３と同じばらつき補正部４０中の構成要素については、同じ符号を用いて示している。
【０２１１】
４サイクル直列３気筒型エンジンにおいて、ＬＡＦセンサ１４の出力ＫＡＣＴを周波数解析した結果、気筒間で空燃比がばらついている場合には、１燃焼サイクルに同期した所定周波数域のＰＳＤが非常に大きくなる一方、ばらつきがない場合には、そのような事象が生じないことが確認された。また、この所定周波数は、前述した第１周波数ｆｒ１と等しい。これは、前述した第１実施形態のエンジン３は、この３気筒型エンジンと同様、４サイクルエンジンであり、４サイクルエンジンでは、気筒数に関わらず、１燃焼サイクルが、４行程、すなわちクランク軸の２回転で完結するためである。また、この３気筒型エンジンでは、気筒間で空燃比がばらついている場合に、前述したエンジン３の場合と異なり、ＬＡＦセンサ１４の出力ＫＡＣＴのＰＳＤが、第２周波数ｆｒ２域においては大きくならないことも確認された。このため、ばらつき補正部４０では、第１実施形態のばらつき補正部２３と比較し、ＬＡＦセンサ１４の出力ＫＡＣＴをフィルタリングするフィルタとして、サイクルフィルタ２３ａのみが用いられ、回転フィルタ２３ｂは省略されている。このように、ばらつき補正部４０の構成が、第１実施形態と比較して、単純なものになっている。
【０２１２】
また、前述した実験と同様に、３つの気筒の排気ガス中の空燃比ＫＡＣＴ1 〜ＫＡＣＴ3 を、各燃焼サイクルごとに出力される三角波形の第１〜第３模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ3 としてそれぞれ模擬的に生成し、これらの総和をＬＡＦセンサ１４の模擬出力ＫＡＣＴＭＩとしてサイクルフィルタ２３ａに入力したところ、第１フィルタリング値ＫＡＣＴ＿Ｆｃとして、以下のような波形が得られた。
【０２１３】
すなわち、図示しないが、第１〜第３模擬出力ＫＡＣＴＭＩ1〜3 が互いに等しい場合、第１フィルタリング値ＫＡＣＴ＿Ｆｃは０になった。また、図３３の（ａ）に示すように、第１および第３模擬出力ＫＡＣＴＭＩ1 ,ＫＡＣＴＭＩ3 が互いに等しく、かつ第２模擬出力ＫＡＣＴＭＩ2 が第１模擬出力ＫＡＣＴＭＩ1 よりも小さいばらつきパターンの場合、第１フィルタリング値ＫＡＣＴ＿Ｆｃとして、１燃焼サイクルと等しい周期で、値０を中心に正負両側に比較的大きな振幅で変化する正弦波状の波形が得られた。さらに、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、第１および第３模擬出力ＫＡＣＴＭＩ1 ,ＫＡＣＴＭＩ3 が入力されるタイミングでは、正値になるとともに、第２模擬出力ＫＡＣＴＭＩ2 が入力されるタイミングでは、負値になった。このように、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表すことが確認された。
【０２１４】
また、図３３の（ｂ）に示すように、第１模擬出力ＫＡＣＴＭＩ1 ＜第２模擬出力ＫＡＣＴＭＩ2 ＜第３模擬出力ＫＡＣＴＭＩ3 のばらつきパターンの場合、第１フィルタリング値ＫＡＣＴ＿Ｆｃとして、上述した場合と同様に１燃焼サイクルを１周期とした比較的大きな振幅の正弦波状の波形が得られた。また、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、第１模擬出力ＫＡＣＴＭＩ1 が入力されるタイミングでは、負値になるとともに、第２模擬出力ＫＡＣＴＭＩ2 が入力されるタイミングでは、０になり、第３模擬出力ＫＡＣＴＭＩ3 が入力されるタイミングでは、正値になった。このように、この場合にも、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表すことが確認された。また、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、その他のばらつきパターンにおいても、同様の特性を示した。
【０２１５】
以上のように、第１フィルタリング値ＫＡＣＴ＿Ｆｃは、いかなるばらつきパターンにおいても、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって気筒間の空燃比のばらつきの有無を表す。このため、ばらつき補正部４０では、算出用フィルタリング値決定部４０ａ（補正係数固定手段）において、第１遅延要素２３ｃから出力された第１フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ）に基づき、算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）が、前記算出用フィルタリング値決定部２３ｈと同様に決定され、ばらつき補正係数算出部４０ｂ（補正用パラメータ算出手段、平均値算出手段、補正係数算出手段）に出力される。また、ばらつき補正係数算出部４０ｂでは、入力された算出用フィルタリング値ＫＡＣＴ＿Ｆi （ｎ）に基づいて、ばらつき補正係数ＫＥＡＦi が、前記式（２４）〜（２６）により算出される。
【０２１６】
以上のように、ばらつき補正係数ＫＥＡＦi は、第１フィルタリング値ＫＡＣＴ＿Ｆｃのみに基づいて算出される。したがって、この場合にも、気筒間の空燃比の大小関係を明確に表すとともに、振幅の有無により気筒間の空燃比のばらつきの有無を適切に表す第１フィルタリング値ＫＡＣＴ＿Ｆｃに基づいて、ばらつき補正係数ＫＥＡＦi を算出するので、前述した第１実施形態の効果を同様に得ることができる。
【０２１７】
なお、４サイクルＶ型６気筒タイプのエンジンの場合、一対のシリンダバンクのそれぞれを直列３気筒型エンジンとみなし、各シリンダバンクの排気マニホルドの集合部にＬＡＦセンサを設け、各ＬＡＦセンサの出力をサイクルフィルタ２３ａでフィルタリングすることにより得られたフィルタリング値に基づいて、上述したようにばらつき補正係数ＫＥＡＦi を算出すればよい。
【０２１８】
以上のように、ＬＡＦセンサの出力のうち、気筒間の空燃比のばらつきの有無を表す脈動周波数の個数は、気筒数によって異なり、また、同じ気筒数であっても、１燃焼サイクルが完結するのに必要な行程の数が異なれば、このばらつきの有無を表す脈動周波数の大きさは異なる。このため、ばらつきの有無を表す脈動周波数を実験により予め求め、求めた脈動周波数が複数の場合は、これらの脈動周波数をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタを用意し、それらのフィルタリング値に基づいて前述したように算出したばらつき補正係数ＫＥＡＦi を、各気筒の空燃比制御に用いることにより、前述した実施形態の効果を同様に得ることができる。
【０２１９】
また、実施形態は、サイクルフィルタ２３ａおよび回転フィルタ２３ｂをいずれもＩＩＲ型フィルタで構成した例であるが、これらのフィルタ２３ａ，２３ｂをＦＩＲ型フィルタで構成してもよい。その場合、ＦＩＲ型フィルタは、ＩＩＲ型フィルタと異なり、そのフィルタリング値を算出するのに、以前に算出したフィルタリング値を用いることがないので、その分、空燃比制御装置１の演算負荷を軽減することができる可能性がある。
【０２２０】
さらに、実施形態は、ばらつき補正係数ＫＥＡＦi を算出するためのばらつき補正係数暫定値ｋｅａｆi を、ＰＩＤ制御アルゴリズムを用いることにより算出した例であるが、これに代えて、他の制御アルゴリズムを用いることにより算出してもよい。例えば、図３４の式（２８）〜（３０）に示す応答指定型制御アルゴリズム（スライディングモード制御アルゴリズムまたはバックステッピング制御アルゴリズム）を用いることにより、ばらつき補正係数暫定値ｋｅａｆi を算出してもよい。その場合、算出用フィルタリング値の４回前の値ＫＡＣＴ＿Ｆi （ｎ−４）への今回値ＫＡＣＴ＿Ｆi （ｎ）の収束挙動において、オーバーシュートが発生しないように、ばらつき補正係数ＫＥＡＦi を算出することができる。それにより、ばらつき補正係数ＫＥＡＦi がオーバーシュートや振動的挙動を示すのを回避することができるので、そのようなばらつき補正係数ＫＥＡＦi の挙動に起因するフィードバック補正係数ＫＳＴＲによる補正への影響を回避することができる。
【０２２１】
また、基本燃料噴射量ＴＩＢＳの算出方法は、吸気管内絶対圧ＰＢＡおよびエンジン回転数ＮＥに応じて、マップ検索することにより算出する実施形態の例に限らず、例えば、図１に２点鎖線で示すように、吸入空気量Ｇａｉｒを検出するエアフローセンサ５０を吸気管４に設けるとともに、このエアフローセンサ５０により検出された吸入空気量Ｇａｉｒに応じて、テーブル検索することにより、基本燃料噴射量ＴＩＢＳを算出してもよい。
【０２２２】
さらに、実施形態では、ＳＴＲ２２により、１番気筒＃１のモデルパラメータベクトルθ1 に基づいて、フィードバック補正係数ＫＳＴＲを算出したが、これに代えて、２〜４番気筒＃２〜＃４のモデルパラメータベクトルθ2〜4 のいずれか１つに基づいて、フィードバック補正係数ＫＳＴＲを算出してもよい。また、実施形態は、本発明を、車両用のエンジン３の空燃比制御装置に適用した例であるが、本発明はこれに限らず、クランク軸を鉛直方向に配置した船外機などのような船舶推進機用エンジンの空燃比制御装置に適用しても良い。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。
【図面の簡単な説明】
【０２２３】
【図１】本発明の第１実施形態による空燃比制御装置をエンジンとともに概略的に示す図である。
【図２】本発明の第１実施形態による空燃比制御装置のブロック図である。
【図３】ＳＴＲによるフィードバック補正係数ＫＳＴＲの算出アルゴリズムを説明するための数式を示す図である。
【図４】実施形態のＳＴＲによるフィードバック補正係数ＫＳＴＲの算出アルゴリズムの数式を示す図である。
【図５】ＬＡＦセンサの出力のパワースペクトルを、４つの気筒の空燃比が、（ａ）互いに等しい場合、（ｂ）、（ｃ）互いに異なるばらつきパターンでばらつている場合についてそれぞれ示す図である。
【図６】各気筒から排出された排気ガスが排気管の集合部で合流する様子を概略的に示す図である。
【図７】第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 を示す図である。
【図８】第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 、ならびに第１および第２フィルタリング値ＦＩＬ１，ＦＩＬ２を、第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 が互いに等しい場合について示す図である。
【図９】第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 、ならびに第１および第２フィルタリング値ＦＩＬ１，ＦＩＬ２を、第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 が２気筒ずれパターンで異なる場合について示す図である。
【図１０】第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 、ならびに第１および第２フィルタリング値ＦＩＬ１，ＦＩＬ２を、第３模擬出力ＫＡＣＴＭＩ3 のみが他の模擬出力よりも小さい場合について示す図である。
【図１１】本発明の第１実施形態によるばらつき補正部のブロック図である。
【図１２】サイクルフィルタおよび回転フィルタのゲイン特性を示す図である。
【図１３】第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）、ならびにばらつき補正係ＫＥＡＦi などの算出アルゴリズムの数式を示す図である。
【図１４】空燃比制御処理を示すフローチャートである。
【図１５】図１４のステップ６におけるモデルパラメータベクトルθi の算出処理を示すフローチャートである。
【図１６】図１４のステップ７におけるフィードバック補正係数ＫＳＴＲの算出処理を示すフローチャートである。
【図１７】フィルタリング値算出処理を示すフローチャートである。
【図１８】図１４のステップ９におけるばらつき補正係数ＫＥＡＦi を算出する処理を示すフローチャートである。
【図１９】各気筒の燃料供給系が正常に動作しているか否かの判定を行う処理を示すフローチャートである。
【図２０】２気筒ずれパターンの場合における空燃比制御装置による空燃比制御の動作例を示すタイミングチャートである。
【図２１】図２０の第１比較例を示すタイミングチャートである。
【図２２】図２０の第２比較例を示すタイミングチャートである。
【図２３】非２気筒ずれパターンの場合における空燃比制御装置による空燃比制御の動作例を示すタイミングチャートである。
【図２４】１番気筒の燃料供給系が正常に動作していない場合における空燃比制御装置による空燃比制御の動作例を示すタイミングチャートである。
【図２５】ばらつき補正係数ＫＥＡＦi を算出する処理の変形例を示すフローチャートである。
【図２６】本発明の第２実施形態によるばらつき補正部のブロック図である。
【図２７】本発明の第２実施形態によるばらつき補正係数ＫＥＡＦi を算出する処理を示すフローチャートである。
【図２８】第１〜第４模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ4 、第１および第２フィルタリング値ＫＡＣＴ＿Ｆｃ（ｍ），ＫＡＣＴ＿Ｆｒ（ｍ）、ならびにこれらのフィルタリング値の和ＫＡＣＴ＿Ｆｃ（ｍ）＋ＫＡＣＴ＿Ｆｒ（ｍ）を、第３模擬出力ＫＡＣＴＭＩ3 のみが他の模擬出力よりも小さい場合について示す図である。
【図２９】非２気筒ずれパターンの場合における第２実施形態の空燃比制御装置による空燃比制御の動作例を示すタイミングチャートである。
【図３０】図２９の第１比較例を示すタイミングチャートである。
【図３１】図２９の第２比較例を示すタイミングチャートである。
【図３２】直列３気筒タイプのエンジンの空燃比制御装置に本発明を適用した場合におけるばらつき補正部を示すブロック図である。
【図３３】第１〜第３模擬出力ＫＡＣＴＭＩ1 〜ＫＡＣＴＭＩ3 、および第１フィルタリング値ＫＡＣＴ＿Ｆｃを、（ａ）第１模擬出力ＫＡＣＴＭＩ1 ＝第３模擬出力ＫＡＣＴＭＩ3 ＞第２模擬出力ＫＡＣＴＭＩ2 の場合について示す図と、（ｂ）第１模擬出力ＫＡＣＴＭＩ1 ＜第２模擬出力ＫＡＣＴＭＩ2 ＜第３模擬出力ＫＡＣＴＭＩ3 の場合について示す図である。
【図３４】ばらつき補正部によるばらつき補正係数暫定値ｋｅａｆi の算出アルゴリズムの他の例を示す図である。
【図３５】本発明の第３実施形態によるばらつき補正部のブロック図である。
【図３６】本発明の第３実施形態による空燃比制御処理を示すフローチャートである。
【図３７】図３６のステップ９Ａにおけるばらつき補正係数ＫＥＡＦi を算出する処理を示すフローチャートである。
【図３８】ＫＭＥＭi メモリを示す図である。
【図３９】図３６のステップ９Ｂにおける学習補正係数ＫＭＥＭi を算出・記憶する処理を示すフローチャートである。
【符号の説明】
【０２２４】
１  空燃比制御装置
２  ＥＣＵ（バンドパスフィルタ、燃料量決定手段、複数のバンドパ
スフィルタ、フィルタ選択手段、加重平均値算出手段、
総和算出手段、サンプリング手段、むだ時間設定手段、
運転状態検出手段、補正用パラメータ算出手段、平均値
算出手段、補正係数算出手段、動作特性判定手段、補正
係数固定手段、学習補正係数算出手段、記憶手段）
２ａ  ＥＥＰＲＯＭ（記憶手段）
３  エンジン
＃１〜＃４  １〜４番気筒（複数の気筒）
６  インジェクタ（燃料供給系）
１４  ＬＡＦセンサ（空燃比センサ）
２３ａ  サイクルフィルタ（バンドパスフィルタ、複数のバンドパスフィルタ）
２３ｂ  回転フィルタ（バンドパスフィルタ、複数のバンドパスフィルタ）
２３ｇ  コントロールスイッチ（フィルタ選択手段）
２３ｅ  第１加重平均値算出部（加重平均値算出手段）
２３ｆ  第２加重平均値算出部（加重平均値算出手段）
２３ｃ  第１遅延要素（むだ時間設定手段）
２３ｄ  第２遅延要素（むだ時間設定手段）
１１  吸気管内絶対圧センサ（運転状態検出手段）
１３  クランク角センサ（クランク角度検出手段、運転状態検出手段）
２３ｈ  算出用フィルタリング値決定部（補正係数固定手段）
２３ｉ  ばらつき補正係数算出部（補正用パラメータ算出手段、平均値算出手段、
補正係数算出手段）
３０ａ  加算器（総和算出手段）
３０ｂ  算出用フィルタリング値決定部（補正係数固定手段）
３０ｃ  ばらつき補正係数算出部（補正用パラメータ算出手段、平均値算出手段、
補正係数算出手段）
４０ａ  算出用フィルタリング値決定部（補正係数固定手段）
４０ｂ  ばらつき補正係数算出部（補正用パラメータ算出手段、平均値算出手段、
補正係数算出手段）
６０ａ  ばらつき補正係数算出部（補正係数算出手段）
６０ｂ  学習補正係数算出記憶部（学習補正係数算出手段、記憶手段）
TOUTi  最終燃料噴射量（供給燃料量）
KACT  ＬＡＦセンサの出力（空燃比センサの検出信号）
fr1  第１周波数（所定周波数、互いに異なる複数の所定周波数）
fr2  第２周波数（所定周波数、互いに異なる複数の所定周波数）
KACT_Fc  第１フィルタリング値（バンドパスフィルタの出力、複数のバン
ドパスフィルタの出力）
KACT_Fr  第２フィルタリング値（バンドパスフィルタの出力、複数のバン
ドパスフィルタの出力）
KACT_Fcd  第１加重平均値（複数のバンドパスフィルタの出力の加重平均値）
KACT_Frd  第２加重平均値（複数のバンドパスフィルタの出力の加重平均値）
PBA  吸気管内絶対圧（内燃機関の運転状態）
NE  エンジン回転数（内燃機関の運転状態）
keafi  ばらつき補正係数暫定値（補正用パラメータ）
KEAFave  移動平均値（複数の補正用パラメータの平均値）
KEAFi  ばらつき補正係数（補正係数）
KACT_THRESH  しきい値
KMEMi   学習補正係数
KMEMIPi   第１検索値（記憶された学習補正係数ＫＭＥＭi のうちの、検出された
現在の内燃機関の運転状態に対応する学習補正係数）
KMEMIPi '  第２検索値（記憶手段に記憶された、補正係数を算出したときの
内燃機関の運転状態に対応する学習補正係数）
【図１】
2005133714.tif 000004
【図２】
2005133714.tif 000005
【図３】
2005133714.tif 000006
【図４】
2005133714.tif 000007
【図５】
2005133714.tif 000008
【図６】
2005133714.tif 000009
【図７】
2005133714.tif 000010
【図８】
2005133714.tif 000011
【図９】
2005133714.tif 000012
【図１０】
2005133714.tif 000013
【図１１】
2005133714.tif 000014
【図１２】
2005133714.tif 000015
【図１３】
2005133714.tif 000016
【図１４】
2005133714.tif 000017
【図１５】
2005133714.tif 000018
【図１６】
2005133714.tif 000019
【図１７】
2005133714.tif 000020
【図１８】
2005133714.tif 000021
【図１９】
2005133714.tif 000022
【図２０】
2005133714.tif 000023
【図２１】
2005133714.tif 000024
【図２２】
2005133714.tif 000025
【図２３】
2005133714.tif 000026
【図２４】
2005133714.tif 000027
【図２５】
2005133714.tif 000028
【図２６】
2005133714.tif 000029
【図２７】
2005133714.tif 000030
【図２８】
2005133714.tif 000031
【図２９】
2005133714.tif 000032
【図３０】
2005133714.tif 000033
【図３１】
2005133714.tif 000034
【図３２】
2005133714.tif 000035
【図３３】
2005133714.tif 000036
【図３４】
2005133714.tif 000037
【図３５】
2005133714.tif 000038
【図３６】
2005133714.tif 000039
【図３７】
2005133714.tif 000040
【図３８】
2005133714.tif 000041
【図３９】
2005133714.tif 000042