以下、図面を参照しながら、本発明の第1実施形態に係る内燃機関の空燃比制御装置について説明する。図1に示すように、空燃比制御装置1は、ECU2を備えており、内燃機関(以下「エンジン」という)3は、4つの1〜4番気筒#1〜#4(複数の気筒)を備えた、車両(図示せず)用の4サイクル直列4気筒型ガソリンエンジンである。
エンジン3の吸気管4に設けられたスロットル弁5には、スロットル弁開度センサ10が設けられている。スロットル弁開度センサ10は、例えばポテンショメータなどで構成されており、スロットル弁5の開度(以下「スロットル弁開度」という)THを検出し、その検出信号をECU2に出力する。
また、吸気管4のスロットル弁5よりも下流側には、吸気管内絶対圧センサ11(運転状態検出手段)が設けられている。吸気管内絶対圧センサ11は、例えば半導体圧力センサなどで構成されており、吸気管4内の吸気管内絶対圧PBA(内燃機関の運転状態)を検出し、その検出信号をECU2に出力する。
さらに、吸気管4は、吸気マニホルド4aの4つの分岐部4bを介して4つの気筒#1〜#4にそれぞれ接続されている。各分岐部4bには、各気筒の吸気ポート(図示せず)の上流側に、インジェクタ6(燃料供給系)が取り付けられている。各インジェクタ6は、エンジン3の運転時に、ECU2からの駆動信号によって、その開弁時間である燃料噴射量および噴射タイミングが制御される。なお、この燃料噴射は、4つの気筒#1〜#4において、#1→#3→#4→#2の順で行われる。
また、エンジン3の本体およびクランクシャフト(図示せず)には、水温センサ12およびクランク角センサ13(クランク角度検出手段、運転状態検出手段)がそれぞれ取り付けられている。水温センサ12は、例えばサーミスタなどで構成されており、エンジン3のシリンダブロック内を循環する冷却水の温度であるエンジン水温TWを検出し、その検出信号をECU2に出力する。クランク角センサ13は、クランクシャフトの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号をECU2に出力する。このCRK信号は、所定のクランク角(例えば30゜)ごとに1パルスが出力される。ECU2は、このCRK信号に応じ、エンジン3の回転数(以下「エンジン回転数」という)NE(内燃機関の運転状態)を算出する。TDC信号は、各気筒のピストン(図示せず)が吸気行程のTDC位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、4気筒タイプの本例では、クランク角180゜ごとに1パルスが出力される。
さらに、エンジン3には、気筒判別センサ(図示せず)が設けられており、この気筒判別センサは、4つの気筒#1〜#4を判別するためのパルス信号を気筒判別信号としてECU2に出力する。
排気管7の排気マニホルド7aでは、4つの気筒#1〜#4からそれぞれ延びる4つの排気管部が、集合部7bにおいて集合している。また、排気管7の排気マニホルド7aの集合部7bよりも下流側には、上流側から順に、第1および第2触媒装置8a,8bが間隔を存して設けられている。これらの触媒装置8a,8bは、NOx触媒と3元触媒を組み合わせたものであり、このNOx触媒は、イリジウム触媒(イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体)をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物(LaCoO3 粉末とシリカの焼成体)をさらに被覆したものである。また、第1および第2触媒装置8a,8bは、NOx触媒による酸化還元作用により、リーンバーン運転時の排気ガス中のNOxを浄化するとともに、3元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のCO、HCおよびNOxを浄化する。
さらに、排気管7の第1および第2触媒装置8a,8bの間には、酸素濃度センサ(以下「O2センサ」という)15が取り付けられている。O2センサ15は、ジルコニアおよび白金電極などで構成され、第1触媒装置8aの下流側の排気ガス中の酸素濃度に基づく出力VoutをECU2に送る。O2センサ15の出力Voutは、燃焼した混合気が理論空燃比よりも燃料リッチのときには、ハイレベルの電圧値(例えば0.8V)になり、燃料リーンのときには、ローレベルの電圧値(例えば0.2V)になるとともに、混合気が理論空燃比付近のときには、ハイレベルとローレベルの間の所定の目標値Vop(例えば0.6V)になる。
また、排気管7には、第1触媒装置8aよりも上流側の排気マニホルド7aの集合部7b付近に、LAFセンサ14(空燃比センサ)が取り付けられている。LAFセンサ14は、O2センサ15と同様のセンサとリニアライザなどの検出回路とを組み合わせることによって構成されており、リッチ領域からリーン領域までの広範囲な空燃比の領域において排気ガス中の酸素濃度をリニアに検出し、その酸素濃度に比例する出力KACT(空燃比センサの検出信号)をECU2に送る。この出力KACTは、集合部7b付近の排気ガス中の空燃比を当量比として表す。ECU2は、LAFセンサ14の出力KACTを、CRK信号に同期して読み込むとともに、読み込んだデータをRAM内に記憶する。
ECU2にはそれぞれ、アクセル開度センサ16から、車両のアクセルペダル(図示せず)の踏み込み量(以下「アクセル開度」という)APを表す検出信号が、大気圧センサ17から、大気圧PAを表す検出信号が、吸気温センサ18から、吸気温TAを表す検出信号が、出力される。
ECU2は、I/Oインターフェース、CPU、RAM、ROMおよびEEPROM2a(記憶手段)などからなるマイクロコンピュータで構成されている。前述した各種のセンサ10〜18からの出力はそれぞれ、I/OインターフェースでA/D変換や整形がなされた後、CPUに入力される。
CPUは、これらの入力信号に応じて、エンジン3の運転状態を判別し、判別した運転状態に応じ、ROMに記憶された制御プログラムなどに従って、空燃比制御処理を実行することにより、各気筒に供給される混合気の空燃比を制御するとともに、各気筒のインジェクタ6および吸気弁(図示せず)を含む燃料供給系が正常に動作しているか否かを、後述するように判定する。なお、本実施形態では、ECU2により、バンドパスフィルタ、燃料量決定手段、複数のバンドパスフィルタ、フィルタ選択手段、加重平均値算出手段、総和算出手段、サンプリング手段、むだ時間設定手段、運転状態検出手段、補正用パラメータ算出手段、平均値算出手段、補正係数算出手段、動作特性判定手段、補正係数固定手段、学習補正係数算出手段、および記憶手段が構成されている。
図2に示すように、空燃比制御装置1は、基本燃料噴射量算出部21、STR(Self Tuning Regulator)22、ばらつき補正部23、付着補正部24を備えており、これらはいずれも、ECU2により構成されている。
この空燃比制御装置1では、まず、基本燃料噴射量算出部21により、エンジン回転数NEおよび吸気管内絶対圧PBAに応じ、マップ(図示せず)を検索することによって、基本燃料噴射量TIBSが算出される。次いで、STR22により、フィードバック補正係数KSTRが算出されるとともに、ばらつき補正部23により、ばらつき補正係数KEAFi (補正係数)が気筒ごとに後述するように算出される。
次に、上記の基本燃料噴射量TIBSに、補正目標空燃比KCMDM、総補正係数KTOTAL、フィードバック補正係数KSTRおよびばらつき補正係数KEAFi がそれぞれ乗算されることにより、気筒ごとの要求燃料量TCYLi が算出される。次いで、付着補正部24により、今回の燃焼サイクルでインジェクタ6から噴射される燃料が燃焼室の内壁面に付着する割合などが、エンジン3の運転状態に応じて算出され、この算出された割合に基づいて、気筒ごとの要求燃料量TCYLi が補正されることで、気筒ごとの最終燃料噴射量TOUTi (供給燃料量)が算出される。そして、この算出した最終燃料噴射量TOUTi に基づいた駆動信号で、対応するインジェクタ6を駆動することにより、混合気の空燃比を気筒ごとに制御する。なお、最終燃料噴射量TOUTi などにおける添字「i」は、気筒の番号を表す気筒番号値である(i=1〜4)。
次いで、STR22について説明する。STR22は、LAFセンサ14の出力KACTを目標空燃比KCMDに一致させるために、フィードバック補正係数KSTRを算出するものであり、オンボード同定器22aおよびSTRコントローラ22bにより構成されている。また、STR22では、以下に述べるアルゴリズムにより、オンボード同定器22aでモデルパラメータベクトルθi が同定されるとともに、STRコントローラ22bでフィードバック補正係数KSTRが算出される。
まず、1〜4番気筒#1〜#4を、対応する気筒へのフィードバック補正係数KSTRiを入力とし、LAFセンサ14の出力KACTを出力とする制御対象として見なすとともに、これらの制御対象を離散時間系モデルとしてモデリングすると、図3に示す式(1)のようになる。同式(1)において、記号kは離散化した時間を表しており、記号(k)付きの各離散データは、1燃焼サイクルごとに、すなわちTDC信号が連続して4回発生するごとにサンプリングされたデータであることを示している。この点は、以下の離散データ(時系列データ)においても同様である。
ここで、目標空燃比KCMDに対するLAFセンサ14の出力KACTのむだ時間は、燃焼サイクル3回分程度と推定されるので、KCMD(k)=KACT(k+3)の関係が成立し、これを式(1)に適用すると、図3の式(2)が導出される。
また、式(1)のモデルパラメータb0i (k),r1i (k),r2i (k),r3i (k),s0i (k)のベクトルθi (k)は、図3の式(3)〜(9)の同定アルゴリズムにより同定される。同式(3)におけるKPi (k)はゲイン係数のベクトルを、idei (k)は同定誤差を、それぞれ表している。また、式(4)におけるθi (k)T は、θi (k)の転置行列を表している。なお、以下の説明では、「ベクトル」という表記を適宜、省略する。
上記式(3)の同定誤差idei (k)は、図3の式(5)〜(7)により算出され、式(6)のKACT_HATi (k)は、LAFセンサ14の出力KACTの同定値を表している。さらに、上記ゲイン係数のベクトルKPi (k)は、図3の式(8)により算出され、この式(8)のPi (k)は、図3の式(9)で定義される5次の正方行列である。
次いで、LAFセンサ14の出力KACTが目標空燃比KCMDに一致するようにフィードバック補正係数KSTRを算出するために、オンボード同定器22aにより同定された1番気筒#1のモデルパラメータベクトルθ1 を、TDC信号の発生タイミングに同期してオーバーサンプリングするとともに、その移動平均値θ_aveを算出する。
具体的には、モデルパラメータベクトルθ1 の移動平均値θ_ave(n)を、図4の式(10)により算出するとともに、これを用いて、図4の式(12)により、フィードバック補正係数KSTR(n)を算出する。なお、式(10)におけるθbufは、1番気筒#1のモデルパラメータベクトルθ1 のオーバーサンプリング値を示しており、移動平均値θ_ave(n)の転置行列は、図4の式(11)のように規定される。これらの式(10)〜(12)において、記号nは、離散化した時間を表しており、記号(n)付きの各離散データは、TDC信号が1回発生するごとに、これに同期してサンプリングされたデータであることを示している。この点は、以下の離散データにおいても同様である。したがって、k−f=n−4・f(f:整数)の関係が成立するので、これを図3の式(2)に適用すると、上記式(12)が導出される。
また、式(10)のαは、所定の整数であり、本実施形態では、α=11に設定される。これは、以下の理由による。すなわち、前述したように、目標空燃比KCMDに対するLAFセンサ14の出力KACTのむだ時間は、燃焼サイクル3回分であるため、モデルパラメータベクトルθの更新によって起こる制御系の共振周期も、3サイクルとなる。したがって、このような制御系の共振を抑制するフィルタとしては、くし型の阻止帯域を3サイクル周期で備える12タップの移動平均値フィルタが最適であるので、上記のようにα=11と設定される。さらに、モデルパラメータベクトルθi (k)を同定する同定アルゴリズムは、図4の式(13)〜(19)のようになる。
以上のように、STR22のオンボード同定器22aでは、図4の式(13)〜(19)に示す同定アルゴリズムによって、モデルパラメータベクトルθi (k)が同定され、STRコントローラ22bでは、図4の式(10)〜(12)により、フィードバック補正係数KSTR(n)が算出される。
次に、ばらつき補正部23について説明する。ばらつき補正部23は、4つの気筒#1〜#4に供給される混合気の空燃比の気筒間でのばらつきを解消するために、ばらつき補正係数KEAFi を気筒ごとに算出するものである。まず、その概念について説明する。
図5は、LAFセンサ14の出力KACTを周波数解析することによって得られたパワースペクトルを示している。具体的には、4つの気筒間で空燃比が、(a)互いに等しい場合、(b)2気筒ずれパターン以外のばらつきパターン(以下「非2気筒ずれパターン」という)でばらつている場合、(c)2気筒ずれパターンでばらついている場合を示している。ここで、2気筒ずれパターンとは、前述したように燃料噴射が#1→#3→#4→#2の順で行われる場合において、1番および4番気筒#1,#4に供給される混合気の空燃比が互いに等しいとともに、3番および2番気筒#3,#2の空燃比が互いに等しく、かつ1番および4番気筒#1,#4と異なるばらつきパターンをいう。例えば、1番および4番気筒#1,#4の空燃比が互いに等しくリッチ、2番および3番気筒#2,#3の空燃比が互いに等しくリーンな場合である。また、非2気筒ずれパターンとは、2気筒ずれパターン以外のばらつきパターンを示し、例えば、1番および3番気筒#1,#3の空燃比がリッチ、2番および4番気筒#2,#4の空燃比がリーンの場合である。同図(b)、(c)に示すように、気筒#1〜#4間で空燃比が非2気筒ずれパターンおよび2気筒ずれパターンでばらついている場合には、特定の第1および第2周波数fr1,fr2(所定周波数)域においてそれぞれ、非常に大きなパワースペクトル密度(以下「PSD」という)が得られるのに対し、ばらつきがない場合(a)には、そのような事象が生じないことが確認された。第1周波数fr1は、1燃焼サイクル、すなわち4回分のTDC信号の出力に同期した脈動周波数であり、第2周波数fr2は、エンジン3のクランクシャフトの1回転、すなわち2回分のTDC信号の出力に同期した脈動周波数である。
また、以上の点に着目し、気筒間の空燃比のばらつきをシミュレーションし、次のような実験を行った。エンジン3のような4サイクル直列4気筒タイプのエンジンの場合、図6に示すように、気筒#1→#3→#4→#2の順でTDC信号(記号nで図示)の出力ごとに各気筒から排出された排気ガスが、排気管7の集合部7bで合流し、この集合部7bの排気ガス中の空燃比が、LAFセンサ14の出力KACTとして出力されるとみなせる。このため、図7に示すように、4つの気筒#1〜#4の排気ガス中の空燃比KACT1 〜KACT4 を、各燃焼サイクルごとに出力される三角波形の第1〜第4模擬出力KACTMI1 〜KACTMI4 としてそれぞれ模擬的に生成し、これらの総和をLAFセンサ14の模擬出力KACTMIとした。そして、この模擬出力KACTMIを、上述した第1および第2周波数fr1,fr2域の成分をそれぞれ通過させるようにフィルタリングする第1および第2バンドパスフィルタに入力した。なお、同図の縦軸は当量比を示している。
その結果、図8に示すように、第1〜第4模擬出力KACTMI1 〜KACTMI4 が互いに等しい場合、すなわち、気筒間の空燃比のばらつきがないときには、第1および第2バンドパスフィルタの出力である第1および第2フィルタリング値FIL1,FIL2は、いずれも0を示した。
また、図9に示すように、第1および第4模擬出力KACTMI1 ,KACTMI4 が、第2および第3模擬出力KACTMI2 ,KACTMI3 よりも大きい2気筒ずれパターンの場合には、第2フィルタリング値FIL2として、クランクシャフトの1回転と等しい周期で、値0を中心に正負両側に比較的大きな振幅で変化する正弦波状の波形が得られた。さらに、第1フィルタリング値FIL1として、1燃焼サイクルと等しい周期で、値0を中心に正負両側に比較的小さな振幅で変化する正弦波状の波形が得られた。また、第2フィルタリング値FIL2は、第1および第4模擬出力KACTMI1 ,KACTMI4 が入力されるタイミングでは、正値になるとともに、第2および第3模擬出力KACTMI2 ,KACTMI3 が入力されるタイミングでは、負値になり、また、第1模擬出力KACTMI1 と第3模擬出力KACTMI3 との差が大きいほど、前者のタイミングでは、より大きな正値になり、後者のタイミングでは、絶対値がより大きな負値になった。
さらに、図10に示すように、非2気筒ずれパターンの場合、例えば、第3模擬出力KACTMI3 のみが他の模擬出力よりも小さいときには、2気筒ずれパターンのときと異なり、第1フィルタリング値FIL1として、比較的大きな振幅の正弦波状の波形が得られるとともに、第2フィルタリング値FIL2として、比較的小さな振幅の正弦波状の波形が得られた。また、第1フィルタリング値FIL1は、第1および第4模擬出力KACTMI1 ,KACTMI4 が入力されるタイミングでは、0になるとともに、第2模擬出力KACTMI2 が入力されるタイミングでは、正値になり、第3模擬出力KACTMI3 が入力されるタイミングでは、負値になった。さらに、第3模擬出力KACTMI3 と他の模擬出力との差が大きいほど、第1フィルタリング値FIL1は、第2模擬出力KACTMI2 が入力されるタイミングでは、より大きな正値になるとともに、第3模擬出力KACTMI3 が入力されるタイミングでは、絶対値がより大きな負値になった。
以上の実験結果から明らかなように、第1および第2周波数FIL1,FIL2域の成分をそれぞれ通過させる第1および第2バンドパスフィルタによって、LAFセンサ14の出力KACTをフィルタリングすると、各フィルタの出力の振幅の有無は、気筒間の空燃比のばらつきの有無を表す。また、2気筒ずれパターンの場合、第2バンドパスフィルタの出力の振幅がより大きくなり、その正負によって、気筒間の空燃比の大小関係が特定される。さらに、非2気筒ずれパターンの場合、第1バンドパスフィルタの出力の振幅がより大きくなる。以上のようなフィルタの出力特性に基づき、ばらつき補正部23は、気筒間で空燃比がばらついている場合に、振幅がより大きなフィルタの出力に基づいて、このばらつきを解消するように、すなわち、このフィルタの出力の振幅が値0になるように、各気筒のばらつき補正係数KEAFi を算出する。
具体的には、図11に示すように、ばらつき補正部23は、サイクルフィルタ23a(バンドパスフィルタ)、回転フィルタ23b(バンドパスフィルタ)、第1および第2遅延要素23c,23d(むだ時間設定手段)、第1および第2加重平均値算出部23e,23f(加重平均値算出手段)、コントロールスイッチ23g(フィルタ選択手段)、算出用フィルタリング値決定部23h(補正係数固定手段)、ならびにばらつき補正係数算出部23i(補正用パラメータ算出手段、平均値算出手段、補正係数算出手段)によって構成されている。
このばらつき補正部23では、サイクルフィルタ23aおよび回転フィルタ23bにおいて、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)(バンドパスフィルタの出力)がそれぞれ生成(算出)され、第1および第2遅延要素23c,23dにおいて、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)の出力が、所定のむだ時間に相当する時間、それぞれ遅延される。また、第1および第2加重平均値算出部23e,23fにおいて、第1および第2加重平均値KACT_Fcd(m),KACT_Frd(m)(複数のバンドパスフィルタの出力の加重平均値)がそれぞれ算出され、コントロールスイッチ23gにおいて、ばらつき補正係数KEAFi を算出するための算出用フィルタリング値KACT_Fi (n)が選択される。さらに、算出用フィルタリング値決定部23hにおいて、算出用フィルタリング値KACT_Fi (n)が最終的に決定され、ばらつき補正係数算出部23iにおいて、決定された算出用フィルタリング値KACT_Fi (n)に基づいて、ばらつき補正係数KEAFi が気筒ごとに算出される。
次に、サイクルフィルタ23aおよび回転フィルタ23bについて説明する。これらのフィルタ23a,23bは、バンドパスフィルタであり、互いに並列に設けられている。また、サイクルフィルタ23aおよび回転フィルタ23bは、図12に示すようなゲイン特性を有しており、前者のゲインは、入力信号の周波数が前述した第1周波数fr1のときに、後者のゲインは、入力信号の周波数が前述した第2周波数fr2のときに、0dBの値になるようにそれぞれ設定されている。また、サイクルフィルタ23aは、前述したようにCRK信号の入力に同期してサンプリングされた最新のLAFセンサ14の出力KACTを、CRK信号の入力に同期して、そのうちの第1周波数fr1域の成分を通過させるようにフィルタリングし、それにより、第1フィルタリング値KACT_Fc(m)を生成する。回転フィルタ23bは、サイクルフィルタ23aと同様、CRK信号の入力に同期して、サンプリングされたLAFセンサ14の出力KACTのうちの第2周波数fr2域の成分を通過させるようにフィルタリングし、それにより、第2フィルタリング値KACT_Fr(m)を生成する。
具体的には、サイクルフィルタ23aおよび回転フィルタ23bは、図13の式(20)および(21)でそれぞれ示されるIIR型のフィルタであり、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)は、これらの式(20)および(21)により、それぞれ算出(生成)される。算出された第1および第2のフィルタリング値KACT_Fc(m),KACT_Fr(m)はそれぞれ、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)用の複数のバッファに、CRK信号の入力に同期して順次、記憶される。なお、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)の初期値はそれぞれ、KACT(m−1)〜(m−p)を値1に、KACT_Fc(m−1)〜(m−q)およびKACT_Fr(m−1)〜(m−q)を値0に設定して、算出される。また、上記の記号mは離散化した時間を表しており、記号(m)付の各離散データは、CRK信号が1回発生するごとに、これに同期してサンプリングされたデータであることを示している。この点は、以下の離散データにおいても同様である。
前述した実験結果から明らかなように、以上のように算出された第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)は、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表す。また、2気筒ずれパターンの場合には、第2フィルタリング値KACT_Fr(m)がより大きな振幅で変化し、その正負によって気筒間の空燃比の大小関係を表し、非2気筒ずれパターンの場合には、第1フィルタリング値KACT_Fc(m)がより大きな振幅で変化する。
第1および第2遅延要素23c,23dはそれぞれ、各気筒から排出された排気ガスがLAFセンサ14に到達するまでのむだ時間に相当する時間、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)の出力を遅延する。なお、その詳細については後述する。
次に、第1加重平均値算出部23eにおいて、第1加重平均値KACT_Fcd(m)が、第1遅延要素23cから出力された第1フィルタリング値の今回値の絶対値|KACT_Fc(m)|などを用いて、図13の式(22)により算出される。なお、なまし係数Acは、例えば0.5である。この算出方法から明らかなように、第1加重平均値KACT_Fcd(m)は、その前回値の絶対値|KACT_Fcd(m−1)|および第1フィルタリング値の今回値の絶対値|KACT_Fc(m)|を加重平均することによって算出される。
次いで、第2加重平均値算出部23fにおいて、第2加重平均値KACT_Frd(m)が、第2遅延要素23dから出力された第2フィルタリング値の今回値の絶対値|KACT_Fr(m)|などを用いて、図13の式(23)により算出される。なお、なまし係数Arは、例えば0.5である。この算出方法から明らかなように、第2加重平均値KACT_Frd(m)は、その前回値の絶対値|KACT_Frd(m−1)|および第2フィルタリング値の今回値の絶対値|KACT_Fr(m)|を加重平均することによって算出される。
次に、コントロールスイッチ23gについて説明すると、コントロールスイッチ23gは、第1加重平均値KACT_Fcd(m)に基づいて、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)から、ばらつき補正係数KEAFi を算出するための算出用フィルタリング値KACT_Fi (n)を選択し、算出用フィルタリング値決定部23hに出力する。これにより、より大きな振幅のフィルタリング値が、算出用フィルタリング値KACT_Fi (n)として出力される。その詳細については後述する。
次いで、算出用フィルタリング値決定部23hにおいて、算出用フィルタリング値KACT_Fi (n)を決定するとともに、ばらつき補正係数算出部23iに出力する。具体的には、入力された算出用フィルタリング値の絶対値|KACT_Fi (n)|が、所定のしきい値KACT_THRESH(例えば0.001)よりも小さいときには、算出用フィルタリング値KACT_Fi (n)を0に設定する。一方、|KACT_Fi (n)|≧KACT_THRESHのときには、コントロールスイッチ23gから入力された算出用フィルタリング値KACT_Fi (n)を、ばらつき補正係数算出部23iに出力する。
次に、ばらつき補正係数算出部23iにおいて、ばらつき補正係数KEAFi が算出される。具体的には、まず、入力された算出用フィルタリング値KACT_Fi (n)を用いて、PID制御アルゴリズムにより、ばらつき補正係数暫定値keafi (補正用パラメータ)を算出する。このPID制御アルゴリズムは、図13の式(24)で示される。この式(24)中のFI、GIおよびHIは、それぞれ所定のフィードバック用のP項ゲイン、I項ゲインおよびD項ゲインである。なお、ばらつき補正係数暫定値keafi の初期値は、KACT_Fi (n−4)〜(n−4m)を値0に設定して、算出される。
次に、このばらつき補正係数暫定値keafi の移動平均値KEAFave(複数の補正用パラメータの平均値)を、同図の式(25)により算出する。なお、この式(25)において、本実施形態では、気筒数mc=4であり、移動平均値KEAFaveの初期値は、keaf2 〜keaf4 を値1に設定して算出される。この移動平均値KEAFaveは、式(25)から明らかなように、1番〜4番気筒#1〜#4のばらつき補正係数暫定値keaf1〜4 の平均値である。
次いで、同図の式(26)により、ばらつき補正係数暫定値keafi を移動平均値KEAFaveで除算することで、ばらつき補正係数KEAFi が算出される。このように、ばらつき補正係数KEAFi を、ばらつき補正係数暫定値keafi を移動平均値KEAFaveで除算することによって算出するのは、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)にノイズが含まれる場合に、各気筒のばらつき補正係数KEAFi へのこのノイズの影響を平準化することにより、ばらつき補正係数KEAFi を適切に算出するためである。
また、算出用フィルタリング値の絶対値|KACT_Fi (n)|が、しきい値KACT_THRESHよりも小さいときには、0に設定された算出用フィルタリング値KACT_Fi (n)を用いて、ばらつき補正係数KEAFi を算出する。これにより、前記式(24)中のKACT_Fi (n)とP項ゲインFIとの積(以下「P項」という)が、値0に保持されるとともに、KACT_Fi (n)の積算値とI項ゲインGIとの積(以下「I項」という)が、上記の条件(|KACT_Fi (n)|<KACT_THRESH)が成立する直前に設定されたI項の値に保持される。また、上記のようなばらつき補正係数KEAFi の算出を継続すると、式(24)中のKACT_Fi (n)の今回値と前回値との偏差とD項ゲインHIとの積(以下「D項」という)も、値0に保持される。
以上のように、|KACT_Fi (n)|<KACT_THRESHのときには、I項がこの条件が成立する直前の値に保持されるとともに、P項およびD項が値0に保持される。また、この条件が成立する直前では、算出用フィルタリング値KACT_Fi (n)はほぼ0であるため、P項およびD項はほぼ値0に設定されている。したがって、ばらつき補正係数暫定値keafi は、この条件の成立直前に算出された値とほぼ等しい値に算出され、固定される。その結果、ばらつき補正係数暫定値keafi に基づいて前述したように算出されるばらつき補正係数KEAFi は、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さくなったときには、この条件の成立直前に算出された値とほぼ等しい値に固定される。これにより、第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)に含まれるノイズに起因するばらつき補正係数KEAFi の変動を防止でき、したがって、前述したハンチング現象を回避することができる。
以下、ECU2により実行される空燃比制御を含む燃料噴射制御処理について、図14〜18を参照しながら説明する。なお、以下の説明では、今回値であることを示す記号(k),(n)および(m)を適宜、省略する。図14は、この制御処理のメインルーチンを示しており、本処理は、TDC信号の入力に同期して割り込み実行される。この処理では、以下に述べるように、最終燃料噴射量TOUTi が気筒ごとに算出される。
まず、ステップ1(「S1」と図示。以下同じ)において、前述した各種のセンサ10〜18の出力を読み込むとともに、読み込んだデータをRAM内に記憶する。
次に、ステップ2に進み、基本燃料噴射量TIBSを算出する。この処理では、エンジン回転数NEおよび吸気管内絶対圧PBAに応じて、図示しないマップを検索することにより、基本燃料噴射量TIBSを算出する。
次いで、ステップ3に進み、総補正係数KTOTALを算出する。この総補正係数KTOTALは、各種の運転パラメータ(例えば吸気温TAや、大気圧PA、エンジン水温TW、アクセル開度AP、スロットル弁開度THなど)に応じて、各種のテーブルやマップを検索することで各種の補正係数を算出するとともに、これらの各種の補正係数を互いに乗算することにより、算出される。
次に、ステップ4に進み、目標空燃比KCMDを算出する。この目標空燃比KCMDの算出処理の内容は、ここでは図示しないが、特開2000−179385号公報に記載の制御手法と同様に実行される。すなわち、目標空燃比KCMDは、エンジン3の運転状態に応じて、スライディングモード制御処理またはマップ検索処理により、O2センサ15の出力Voutが前記所定の目標値Vopに収束するように算出される。
次いで、ステップ5に進み、補正目標空燃比KCMDMを算出する。この補正目標空燃比KCMDMは、空燃比A/Fの変化による充填効率の変化を補償するためのものであり、上記ステップ4で算出された目標空燃比KCMDに応じて、図示しないテーブルを検索することにより算出される。
次に、ステップ6および7において、気筒ごとのモデルパラメータベクトルθi およびフィードバック補正係数KSTRをそれぞれ算出する。これらの算出処理については、後述する。
次いで、ステップ8において、後述するフィルタリング値算出処理により算出された第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)などを読み込むとともに、読み込んだデータをRAM内に記憶する。次に、ステップ9において、気筒ごとのばらつき補正係数KEAFi を算出する。この算出処理については、後述する。
次いで、ステップ10に進み、以上のように算出した基本燃料噴射量TIBS、総補正係数KTOTAL、補正目標空燃比KCMDM、フィードバック補正係数KSTR、ばらつき補正係数KEAFi を用い、下式(27)により、気筒ごとの要求燃料噴射量TCYLi を算出する。
TCYLi=TIBS・KTOTAL・KCMDM・KSTR・KEAFi …… (27)
次に、ステップ11に進み、気筒ごとの要求燃料噴射量TCYLi を付着補正することにより、気筒ごとの最終燃料噴射量TOUTi を算出する。この気筒ごとの最終燃料噴射量TOUTi は、具体的には、今回の燃焼サイクルでインジェクタ6から噴射される燃料が燃焼室の内壁面に付着する割合などを、エンジン3の運転状態に応じて算出し、そのように算出した割合に基づいて、気筒ごとの要求燃料噴射量TCYLi を補正することにより、算出される。
次いで、ステップ12に進み、以上のように算出した気筒ごとの最終燃料噴射量TOUTi に基づく駆動信号を、対応する気筒のインジェクタ6に出力した後、本処理を終了する。
次に、図15を参照しながら、前記ステップ6の気筒ごとのモデルパラメータベクトルθi の算出処理について説明する。この処理では、まず、ステップ20において、各パラメータの添字「i」に相当する気筒番号値iの設定処理を実行する。
この処理では、図示しないが、気筒番号値iが、RAMに記憶されている、前回のループで設定された気筒番号値iの前回値PRViに基づいて、以下のように設定される。具体的には、PRVi=1のときにはi=3に、PRVi=2のときにはi=1に、PRVi=3のときにはi=4に、PRVi=4のときにはi=2に、それぞれ設定される。すなわち、気筒番号値iは、「1→3→4→2→1→3→4→2→1……」の順に、繰り返し設定される。なお、気筒番号値iの初期値は、前述した気筒判別信号に基づいて設定される。
次いで、ステップ21に進み、前述した図4の式(17)により、KSTRおよびKACTのベクトルζi を算出した後、ステップ22で、前述した図4の式(16)により、KACTの同定値KACT_HATi を算出する。
次に、ステップ23に進み、前述した図4の式(15)により、同定誤差idei を算出した後、ステップ24で、前述した図4の式(18)により、ゲイン係数のベクトルKPi を算出する。次いで、ステップ25に進み、前述した図4の式(13)により、モデルパラメータベクトルθi を算出する。
次に、ステップ26に進み、RAMに記憶されている、前回以前の所定個数(本実施形態では12個)のLAFセンサ14の出力KACTの値を更新する。具体的には、RAM内のKACTの各々の値を、燃料噴射制御における1制御サイクル分、古い値としてセットする(例えば、今回値KACT(n)を前回値KACT(n−1)として、前回値KACT(n−1)を前々回値KACT(n−2)としてそれぞれセットする)。
次いで、ステップ27に進み、RAMに記憶されている、所定個数(本実施形態では12個)の1番気筒#1のモデルパラメータベクトルθ1 のオーバーサンプリング値θbufを更新する。具体的には、上記ステップ26と同様に、RAM内のθbufの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値θbuf(n)を前回値θbuf(n−1)として、前回値θbuf(n−1)を前々回値θbuf(n−2)としてそれぞれセットする)。この後、本処理を終了する。
次に、図16を参照しながら、前記ステップ7のフィードバック補正係数KSTRの算出処理について説明する。この処理では、まず、ステップ40において、前述した図4の式(10)により、移動平均値θ_aveを、上記ステップ27で更新されたオーバーサンプリング値θbufに基づいて算出する。
次いで、ステップ41で、前述した図4の式(12)により、上記ステップ40で算出した移動平均値θ_aveに基づき、フィードバック補正係数KSTRを算出する。なお、算出されたフィードバック補正係数KSTRは、KSTRリミット処理(図示せず)において、上限値KSTRH(例えば1.7)および下限値KSTRL(例えば0.3)と比較され、上限値KSTRHよりも大きいときには、この上限値KSTRHに設定され、下限値KSTRLよりも小さいときには、この下限値KSTRLに設定される。
次に、ステップ42に進み、RAMに記憶されている、前回以前の所定個数(本実施形態では12個)のフィードバック補正係数KSTRの値を更新する。具体的には、RAM内のKSTRの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値KSTR(n)を前回値KSTR(n−1)として、前回値KSTR(n−1)を前々回値KSTR(n−2)としてそれぞれセットする)。この後、本処理を終了する。
次いで、図17を参照しながら、図14の前記ステップ8において読み込まれる第1フィルタリング値KACT_Fc(m)などを算出するフィルタリング値算出処理について説明する。本処理は、CRK信号の入力に同期して割り込み実行される。まず、ステップ50では、LAFセンサ14の出力KACTを読み込むとともに、RAM内に記憶する。次いで、ステップ51において、前述した図13の式(20)により、第1フィルタリング値KACT_Fc(m)を算出するとともに、算出した第1フィルタリング値KACT_Fc(m)を、第1フィルタリング値KACT_Fc(m)用の複数のバッファに順次、記憶する。次に、ステップ52において、前述した式(21)により、第2フィルタリング値KACT_Fr(m)を算出するとともに、算出した第2フィルタリング値KACT_Fr(m)を、第2フィルタリング値KACT_Fr(m)用の複数のバッファに順次、記憶する。
続くステップ53および54の処理は、前述した第1遅延要素23cによる第1フィルタリング値KACT_Fc(m)の出力をむだ時間に相当する時間、遅延させる処理に相当している。このステップ53では、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、マップ(図示せず)を検索することによって、上記の第1フィルタリング値KACT_Fc(m)用の複数のバッファのバッファナンバーを求める。次いで、求めたバッファナンバーのバッファに記憶されている第1フィルタリング値KACT_Fcを、ばらつき補正係数KEAFi を算出するための第1フィルタリング値KACT_Fc(m)として読み出す(ステップ54)。
上記のマップでは、吸気管内絶対圧PBAが高いほど、およびエンジン回転数NEが低いほど、ばらつき補正係数KEAFi を算出するための第1フィルタリング値KACT_Fc(m)として、より早いタイミングで算出したものが選択されるように、バッファナンバーが設定されている。これは次の理由による。すなわち、吸気管内絶対圧PBAが高いほど、すなわちエンジン3の負荷が大きいほど、排気ガスの流速がより高く、それに伴い、各気筒から排出された排気ガスがLAFセンサ14に到達するまでのむだ時間がより短くなるためである。また、エンジン回転数NEが低いほど、LAFセンサ14の出力KACTを読み込むCRK信号の周期がより長くなるので、排気ガスの流速を一定とすれば、排気ガスがLAFセンサ14に到達するまでに発生するCRK信号の発生回数は少なくなるためであり、CRK信号を基準とする相対的なむだ時間が短くなるためである。
次のステップ55および56の処理は、前述した第2遅延要素23dによる第2フィルタリング値KACT_Fr(m)の出力をむだ時間に相当する時間、遅延させる処理に相当している。このステップ55では、前記ステップ53と同様、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、マップ(図示せず)を検索することによって、第2フィルタリング値KACT_Fr(m)用の複数のバッファのバッファナンバーを求める。次いで、求めたバッファナンバーのバッファに記憶されている第2フィルタリング値KACT_Frを、ばらつき補正係数KEAFi を算出するための第2フィルタリング値KACT_Fr(m)として読み出す(ステップ56)。なお、このマップの特性は、上述した第1フィルタリング値KACT_Fc(m)用のバッファのバッファナンバーを検索するためのマップと同様であるので、その説明については省略する。
次に、前記ステップ53および54により選択された第1フィルタリング値KACT_Fc(m)を用いて、前述した式(22)により、第1加重平均値KACT_Fcd(m)を算出する(ステップ57)。次いで、前記ステップ55および56により選択された第2フィルタリング値KACT_Fr(m)を用いて、前述した式(23)により、第2加重平均値KACT_Frd(m)を算出し(ステップ58)、本処理を終了する。以上のように選択された第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)、ならびに第1および第2加重平均値KACT_Fcd(m),KACT_Frd(m)が、図14の前記ステップ8において読み込まれ、RAM内に記憶される。
以上のように、CRK信号に同期して、LAFセンサ14の出力KACTがサンプリングされ、それに基づいて、第1および第2フィルタリング値KACT_Fc,KACT_Frが算出されるとともに、複数のバッファに順次、記憶される(ステップ50〜52)。そして、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、各気筒の排気ガスがLAFセンサ14に到達するまでのむだ時間に対応するバッファナンバーが、マップから選択される(ステップ53,55)。次いで、この選択されたバッファナンバーのバッファに記憶された第1および第2フィルタリング値KACT_Fc,KACT_Frがそれぞれ、ばらつき補正係数KEAFi を算出するための第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)として読み出される(ステップ54,56)。したがって、各気筒の排気ガスの排出タイミングに相当する各気筒のTDC信号の出力後、選択されたバッファナンバーに対応するむだ時間が経過したタイミングで検出されたLAFセンサ14の出力KACTに基づく第1および第2フィルタリング値KACT_Fc,KACT_Frが、選択される。それにより、ばらつき補正係数KEAFi を算出するための第1および第2フィルタリング値KACT_Fc(m),KACT_Fr(m)を、むだ時間を補償しながら、適切に選択することができる。
次に、図18を参照しながら、図14の前記ステップ9のばらつき補正係数KEAFi を算出する処理について説明する。まず、ステップ60では、前記ステップ8で読み込んだ第1加重平均値KACT_Fcdが、所定のしきい値KACT_REFよりも大きいか否かを判別する。第1加重平均値KACT_Fcdは、前述した図9および図10から明らかなように、2気筒ずれパターンのときには、非常に小さく、非2気筒ずれパターンのときには、非常に大きくなるという特性を有する。したがって、ステップ60の答がYESのときには、非2気筒ずれパターンであるとして、第1フィルタリング値KACT_Fcを、算出用フィルタリング値KACT_Fi (n)として設定する(ステップ61)。一方、ステップ60の答がNOで、KACT_Fcd≦KACT_REFのときには、2気筒ずれパターンであるとして、第2フィルタリング値KACT_Frを、算出用フィルタリング値KACT_Fi (n)として設定する(ステップ62)。
以上により、非2気筒ずれパターンの場合には、算出用フィルタリング値KACT_Fi (n)として、より大きな振幅の第1フィルタリング値KACT_Fcが選択される。また、2気筒ずれパターンの場合には、算出用フィルタリング値KACT_Fi (n)として、より大きな振幅を有し、気筒間の空燃比の大小関係を正負によって表す第2フィルタリング値KACT_Frが、選択される。以上のステップ60〜62の処理が、前述したコントロールスイッチ23gによるフィルタリング値の選択に相当する。
前記ステップ61または62に続くステップ63では、設定した算出用フィルタリング値の絶対値|KACT_Fi (n)|が、算出用フィルタリング値決定部23hで用いた前記しきい値KACT_THRESHよりも小さいか否かを判別する。このステップ63の答がYESのときには、より大きな振幅のフィルタリング値がほぼ0であるため、気筒間の空燃比のばらつきが解消しているとして、算出用フィルタリング値KACT_Fi (n)を0に設定し(ステップ64)、ステップ65に進む。
一方、上記ステップ63の答がNOで、|KACT_Fi (n)|≧KACT_THRESHのときには、気筒間で空燃比がばらついているとして、上記ステップ64をスキップし、ステップ65に進む。
このステップ65では、前記ステップ61、62または64で設定された算出用フィルタリング値KACT_Fi (n)を用いて、前記式(24)により、ばらつき補正係数暫定値keafi を算出する。次いで、算出したばらつき補正係数暫定値keafi を用いて、前記式(25)により、移動平均値KEAFaveを算出する(ステップ66)。
次に、上記ステップ65および66においてそれぞれ算出したばらつき補正係数暫定値keafi および移動平均値KEAFaveを用いて、前記式(26)により、ばらつき補正係数KEAFi を算出し(ステップ67)、本処理を終了する。
次に、以上のように算出されたばらつき補正係数KEAFi による気筒間の空燃比のばらつきの補正について説明する。前述したように、第1および第2フィルタリング値KACT_Fc,KACT_Frが、TDC信号の出力ごとに読み込まれる(図14のステップ8)とともに、これらの読み込まれたフィルタリング値のうち、より大きな振幅のものが、気筒ごとの算出用フィルタリング値KACT_Fi (n)として選択される(図18のステップ60〜62)。そして、選択された算出用フィルタリング値KACT_Fi (n)に基づいて、式(24)〜(26)によってばらつき補正係数KEAFi が算出される(ステップ65〜67)。
このように、第1および第2フィルタリング値KACT_Fc,KACT_Frのうち、振幅のより大きなものが、各気筒ごとの算出用フィルタリング値KACT_Fi (n)として設定される。このため、図9に示すような2気筒ずれパターン(#1番,#4番気筒の当量比>#2番,#3番気筒の当量比)の場合、算出用フィルタリング値KACT_Fi (n)として、第2フィルタリング値KACT_FrがTDC信号の出力ごとに設定される。また、前述したように第2フィルタリング値KACT_Frは、むだ時間が補償されていることにより各気筒の空燃比を良好に反映するので、その正負によって気筒間の空燃比の大小関係を良好に表す。したがって、この2気筒ずれパターンにおける算出用フィルタリング値KACT_Fi (n)は、図9および前述した実験結果から明らかなように、#1番および#4番気筒の算出用フィルタリング値KACT_F1 (n),KACT_F4 (n)が正値に、#2番および#3番気筒の算出用フィルタリング値KACT_F2 (n),KACT_F3 (n)が負値に設定される。
これにより、前述した式(24)〜(26)から明らかなように、ばらつき補正係数KEAFi のうち、#1番および#4番気筒のばらつき補正係数KEAF1 ,KEAF4 が値1よりも小さな正値に、#2番および#3番気筒のばらつき補正係数KEAF2 ,KEAF3 が値1よりも大きな値に、それぞれ算出される。それにより、より大きな当量比の#1番および#4番気筒の最終燃料噴射量TOUT1 ,TOUT4 を減少させるとともに、より小さな当量比の#2番および#3番気筒の最終燃料噴射量TOUT2 ,TOUT3 を増加させるように、すなわち、4つの気筒#1〜#4の空燃比が平均化するように制御される。このように、気筒間の空燃比のばらつきを解消するように、すなわち、第1および第2フィルタリング値KACT_Fc,KACT_Frの振幅が値0になるように、各気筒の最終燃料噴射量TOUTi が算出される。
一方、非2気筒ずれパターンの場合、例えば、図10に示すようなばらつきパターン(#3番気筒の当量比<#1番,#2番,#4番気筒の当量比)の場合、算出用フィルタリング値KACT_Fi (n)として、第1フィルタリング値KACT_Fcが設定される。第1フィルタリング値KACT_Fcは、第2フィルタリング値KACT_Frと同様、むだ時間が補償されていることにより各気筒の空燃比を良好に反映する。このため、この非2気筒ずれパターンにおける算出用フィルタリング値KACT_Fi (n)は、図10および前述した実験結果から明らかなように、#1番および#4番気筒の算出用フィルタリング値KACT_F1 (n),KACT_F4 (n)が0に、#3番気筒の算出用フィルタリング値KACT_F3 (n)が負値に、#2番気筒の算出用フィルタリング値KACT_F2 (n)が正値に設定される。
これにより、ばらつき補正係数KEAFi のうち、#1番および#4番気筒のばらつき補正係数KEAF1 ,KEAF4 が値1に、#3番気筒のばらつき補正係数KEAF3 が値1よりも大きな値に、#2番気筒のばらつき補正係数KEAF2 が値1よりも小さな正値に、それぞれ算出される。それにより、より小さな当量比の#3番気筒の最終燃料噴射量TOUT3 を増加させるとともに、#2番気筒の最終燃料噴射量TOUT2 を減少させるので、4つの気筒#1〜#4の空燃比は、図9に示すような2気筒ずれパターンになる。その後、前述した2気筒ずれパターンにおけるばらつき補正係数KEAFi による補正が行われることにより、4つの気筒#1〜#4の空燃比が平均化するように制御される。このように、非2気筒ずれパターンの場合にも、最終的に、気筒間の空燃比のばらつきが解消するように、すなわち、第1および第2フィルタリング値KACT_Fc,KACT_Frの振幅が値0になるように、各気筒の最終燃料噴射量TOUTi が算出される。
なお、図示しないが、図10に示したばらつきパターン以外の非2気筒ずれパターンで気筒間の空燃比がばらついている場合にも同様に、第1または第2フィルタリング値KACT_Fc,KACT_Frに基づいて算出したばらつき補正係数KEAFi により、4つの気筒#1〜#4の空燃比が平均化するように制御され、気筒間の空燃比のばらつきが解消する。
また、算出用フィルタリング値の絶対値|KACT_Fi (n)|が、しきい値KACT_THRESHよりも小さくなったときには(図18のステップ63:YES)、気筒間の空燃比のばらつきが解消したとして、算出用フィルタリング値KACT_Fi (n)を0に設定する(ステップ64)とともに、それを用いて、ばらつき補正係数KEAFi を算出する(ステップ65〜67)。これにより、ばらつき補正係数KEAFi は、前述したように、その直前に算出されたばらつき補正係数KEAFi とほぼ等しい値に固定される。
次に、ECU2によるインジェクタ6および吸気弁を含む燃料供給系が正常に動作しているか否かを判定する処理について、図19のフローチャートを参照しながら説明する。本処理は、例えばTDC信号の入力ごとに実行される。まず、ステップ70では、図18の前記ステップ67において算出した1番気筒#1のばらつき補正係数KEAF1 が、第1判定値KEAFRLよりも大きく、かつ第2判定値KEAFRHよりも小さいか否かを判別する。
この答がNOで、KEAF1 ≦KEAFRLまたはKEAF1 ≧KEAFRHのときには、1番気筒#1のばらつき補正係数KEAF1 が小さすぎるまたは大きすぎるとして、1番気筒#1のインジェクタ6および吸気弁を含む燃料供給系が正常に動作してないと判定し、そのことを表すために、第1異常フラグF_NG1を「1」にセットし(ステップ71)、ステップ72に進む。一方、上記ステップ70の答がYESで、KEAFRL<KEAF1 <KEAFRHのときには、ステップ71をスキップし、ステップ72に進む。
このような場合に、1番気筒#1の燃料供給系が正常に動作してないと判定するのは、次の理由による。すなわち、ばらつき補正係数KEAFi は、前述した算出方法から明らかなように、ばらつき補正係数KEAFi による補正が行われなかった場合の気筒間におけるもともとの相対的な空燃比のばらつきの度合を表す。また、このような気筒間におけるもともとの空燃比のばらつきは、燃料供給系の動作特性が気筒間でばらついていることによって生じる。したがって、ばらつき補正係数KEAFi が大きすぎるまたは小さすぎるときには、その気筒の燃料供給系の動作特性が他の気筒に対して非常に大きくずれており、その気筒の燃料供給系が正常に動作していないと判定することができるためである。また、上記ステップ70および71と同様にして、以下のステップ72〜77において、#2〜#4番気筒の燃料供給系が正常に動作しているか否かを判定する。
すなわち、ステップ72、74および76において、2番〜4番気筒#2〜#4のばらつき補正係数KEAF2 〜KEAF4 がそれぞれ、第1判定値KEAFRLよりも大きく、かつ第2判定値KEAFRHよりも小さいか否かを判別する。それらの答がNOのときには、該当する気筒の燃料供給系が正常に動作していないとして、第2〜第4異常フラグF_NG2〜F_NG4のうち、該当するものを「1」にセットする(ステップ73、75および77)。なお、第1〜第4異常フラグF_NG1〜F_NG4は、エンジン3の始動時に「0」にリセットされる。
次に、ステップ78では、第1〜第4異常フラグF_NG1〜F_NG4がいずれも「0」であるか否かを判別する。この答がYESのときには、すべての気筒の燃料供給系が正常に動作しているとして、そのことを表すために、燃料供給系正常フラグF_OKを「1」にセットし(ステップ79)、本処理を終了する。一方、ステップ78の答がNOで、第1〜第4異常フラグF_NG1〜F_NG4のいずれかが「1」のときには、上記ステップ79をスキップし、本処理を終了する。
次いで、図20〜図24を参照しながら、気筒間で空燃比がばらついている場合に、空燃比制御装置1により空燃比を制御したときの動作例を、第1および第2の比較例とともに説明する。図21に示す第1比較例は、式(26)によりばらつき補正係数暫定値keafi を移動平均値KEAFaveで除算することでばらつき補正係数KEAFi を算出する処理(以下「補正係数平均化処理」という)を行わずに、ばらつき補正係数KEAFi をばらつき補正係数暫定値keafi に直接、設定した場合を示している。図22に示す第2比較例は、気筒間の空燃比のばらつきが解消した後に、本実施形態のばらつき補正係数KEAFi を固定する処理(以下「補正係数固定処理」という)を行わずに、その算出・更新を継続した場合を示している。
これらの例はいずれも、STR22により、LAFセンサ14の出力KACTが値1(理論空燃比に相当する当量比)になるように制御している場合において、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれている状態で、ばらつき補正係数KEAFi による補正を行ったときの動作を示している。なお、これらの図20〜図24において、KACT1〜4 はそれぞれ、1〜4番気筒#1〜#4から排出された、互いに混じり合っていない状態の排気ガス中の空燃比(当量比換算値)を表しており、具体的には、排気マニホルド7aの気筒#1〜#4の排気ポートの直後の部分に追加して設けた4つの測定用のLAFセンサ(図示せず)の出力に相当する。
図20に示すように、2気筒ずれパターン(KACT1 =KACT4 >KACT3 =KACT2 )の場合、ばらつき補正係数KEAFi による補正が開始されるまでは(〜t1)、LAFセンサ14の出力KACTは若干、不安定な状態になる。また、第2フィルタリング値KACT_Frは、大きな振幅で変化し、その正負によって気筒間の空燃比の大小関係を表すとともに、第1フィルタリング値KACT_Fcは、小さな振幅で変化する。
この場合において、ばらつき補正係数KEAFi による補正が開始されると(時点t1)、前述したように、ばらつき補正係数KEAFiを算出するための算出用フィルタリング値KACT_Fi として、第2フィルタリング値KACT_Frが選択される。また、この第2フィルタリング値KACT_Frに基づいて算出されるばらつき補正係数KEAFi のうち、1番および4番気筒#1,#4のばらつき補正係数KEAF1 ,KEAF4 は、値1よりも小さな正値に減少し、2番および3番気筒#2,#3のばらつき補正係数KEAF2 ,KEAF3 は、値1よりも大きな値に増加する。また、そのような各気筒のばらつき補正係数KEAFi の変化によって、KACT1 およびKACT4 が減少し、KACT2 およびKACT3 が増加しており、4つの気筒#1〜#4の空燃比が平均化するように制御される。
その結果、時点t2において、KACT1〜4 がいずれも値1(理論空燃比に相当する当量比)に収束し、それに伴って、第1および第2フィルタリング値KACT_Fc,KACT_Frが0に、すなわちそれらの振幅が値0に収束するとともに、LAFセンサ14の出力KACTも値1に収束する。また、1番および4番気筒#1,#4のばらつき補正係数KEAF1,KEAF4 が値1よりも若干小さな値に安定して収束するとともに、2番および3番気筒#2,#3のばらつき補正係数KEAF2,KEAF3 が値1よりも若干大きな値に安定して収束する。以上のように、本実施形態の空燃比制御装置1により、4つの気筒#1〜#4の空燃比が平均化するように制御することができるとともに、気筒間の空燃比のばらつきを適切に解消することができる。なお、気筒間の空燃比のばらつきが解消しても、第1および第2フィルタリング値KACT_Fc,KACT_Frが完全に0にならないのは、これらのフィルタリング値に含まれたノイズの影響によるものである。
これに対して、第1比較例では、ばらつき補正係数KEAFi をばらつき補正係数暫定値keafi に直接、設定するので、補正開始後(時点t3以降)、1番〜4番気筒#1〜#4のばらつき補正係数KEAF1 〜KEAF4 がいずれも、第2フィルタリング値KACT_Frに含まれるノイズの影響によって徐々に増加し、安定しない。また、このばらつき補正係数KEAFi の増加に伴い、LAFセンサ14の出力KACTが値1から増加しないように、フィードバック補正係数KSTRが値1よりも小さな値に減少する。そして、ばらつき補正係数KEAFi がノイズの影響によりさらに増加するのに応じて、フィードバック補正係数KSTRがその下限値KSTRLに達すると(時点t4)、KACT1〜4 がいずれも値1付近から増加するようになり、それに伴って、LAFセンサの出力KACTも値1付近から増加し始める。
以上のように、本実施形態によれば、補正係数平均化処理を行うことにより、ばらつき補正係数KEAFi をばらつき補正係数暫定値keafi に直接、設定した第1比較例と異なり、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれる場合でも、ばらつき補正係数KEAFi を安定させることができる。したがって、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれる場合でも、フィードバック補正係数KSTRによる補正を適正に行うことができるので、LAFセンサ14の出力KACTを目標空燃比KCMDに収束させることができる。
また、図22に示すように、第2比較例では、補正開始後(時点t5以降)、空燃比のばらつきが解消した(時点t6)後にも、ばらつき補正係数KEAFi の算出・更新が継続されるので、第1および第2フィルタリング値KACT_Fc,KACT_Fr中のノイズの影響によって、1番〜4番気筒#1〜#4のばらつき補正係数KEAF1 〜KEAF4 がいずれも短い周期で増減を繰り返し、変動する(時点t7以降)。このようなばらつき補正係数KEAF1 〜KEAF4 の変動によって、KACT1〜4 が再び値1から若干ばらつくのに伴い、第1および第2フィルタリング値KACT_Fc,KACT_Frの振幅が若干大きくなる。さらにその後には(時点t8以降)、ばらつき補正係数KEAF1 〜KEAF4 が安定するのに応じて、KACT1〜4 が再び値1に収束し、それに伴って、第1および第2フィルタリング値KACT_Fc,KACT_Frが0に収束する。このように、KACT1〜4 のばらつき・収束を繰り返すハンチング現象が生じる。
これに対して、本実施形態では、空燃比のばらつきの解消後、補正係数固定処理を行うことによって、第1および第2フィルタリング値KACT_Fc,KACT_Fr中のノイズに起因するばらつき補正係数KEAFi の変動を防止できる。その結果、上記のハンチング現象を回避することができ、したがって、気筒間の空燃比のばらつきのない状態に維持することができる。
また、このようなハンチング現象は、例えば、前記式(24)のばらつき補正係数KEAFi 算出用のフィードバック用のゲインFI、GIおよびHIを小さめに設定することによって、回避できる。しかし、その場合には、第1および第2フィルタリング値KACT_Fc,KACT_Frが0に速やかには収束せず、気筒間の空燃比のばらつきを速やかには解消することができない。これに対して、本実施形態では、補正係数固定処理を行うことによって、これらのゲインFIなどを小さな値に設定することなく、ハンチング現象を回避できる。したがって、気筒間の空燃比のばらつきを速やかに解消できるので、そのことが特に必要となるエンジン3の過渡運転時などにも十分に対応することができる。
また、図23は、非2気筒ずれパターン、例えば、1番気筒#1に供給される混合気の空燃比が他の気筒よりもリッチな状態のばらつきパターンの場合(KACT1 >KACT2 =KACT3 =KACT4 )の動作例を示している。まず、ばらつき補正係数KEAFi による補正が開始されるまでは(〜t9)、2気筒ずれパターンの場合と同様、LAFセンサ14の出力KACTは若干、不安定な状態になる。また、第1フィルタリング値KACT_Fcが大きな振幅で変化し、第2フィルタリング値KACT_Frが小さな振幅で変化する。
この場合において、ばらつき補正係数KEAFi による補正が開始されると(時点t9)、算出用フィルタリング値KACT_Fi として、第1フィルタリング値KACT_Fcが選択される。そして、この第1フィルタリング値KACT_Fcに基づいて算出されるばらつき補正係数KEAFi のうち、2番および3番気筒#2,#3のばらつき補正係数KEAF2 ,KEAF3 は値1に保持されるとともに、1番気筒#1のばらつき補正係数KEAF1 が値1よりも小さな正値に減少し、4番気筒#4のばらつき補正係数KEAF4 が値1よりも大きな値に増加する。また、そのような各気筒のばらつき補正係数KEAFi の変化によって、KACT2 およびKACT3 が増減せず、KACT1 が減少するとともに、KACT4 が増加する。
その結果、時点t10において、1番〜4番気筒#1〜#4の排気ガス中の空燃比は、KACT1 =KACT4 >KACT2 =KACT3 の2気筒ずれパターンになる。また、これに伴い、第1フィルタリング値KACT_Fcが小さな振幅で変化するとともに、第2フィルタリング値KACT_Frが大きな振幅で変化し、気筒間の空燃比の大小関係を表すので、算出用フィルタリング値KACT_Fi が、第2フィルタリング値KACT_Frに切り換えられる。それにより、ばらつき補正係数KEAFi のうち、1番および4番気筒#1,#4のばらつき補正係数KEAF1 ,KEAF4 が減少するとともに、2番および3番気筒#2,#3のばらつき補正係数KEAF2 ,KEAF3 が値1よりも大きな値に増加することで、KACT1 およびKACT4 が減少し、KACT2 およびKACT3 が増加しており、4つの気筒#1〜#4の空燃比が平均化するように制御される。
その結果、時点t11において、KACT1〜4 がいずれも値1よりも若干大きな値に収束し、それに伴って、第1および第2フィルタリング値KACT_Fc,KACT_Frが0に、すなわち、それらの振幅が値0に収束し、その直後において、KACT1〜4 がいずれも値1に収束するのに伴って、LAFセンサ14の出力KACTが値1に収束する。また、1番気筒#1のばらつき補正係数KEAF1 が値1よりも若干小さな値に安定して収束するとともに、2〜4番気筒#2〜#4のばらつき補正係数KEAF2〜4 が値1よりも若干大きな値に安定して収束する。以上のように、非2気筒ずれパターンにおいても、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれている場合でも、4つの気筒#1〜#4の空燃比を平均化するように制御することができるとともに、気筒間の空燃比のばらつきを適切に解消することができ、各気筒のばらつき補正係数KEAFi を安定させることができる。
さらに、図24は、1番気筒#1の燃料供給系が正常に動作していないことによって、ばらつき補正係数KEAFi による補正の開始前に、1番気筒#1の空燃比のみが他の気筒よりも極めてリーンになっている場合の動作例を示している。まず、ばらつき補正係数KEAFi による補正が開始されると(時点t12)、1番気筒のばらつき補正係数KEAF1 が増加し、第2判定値KEAFRHを上回る(図19の前記ステップ70:NO)ことにより、第1異常フラグF_NG1が「1」にセットされる(時点t13、ステップ71)。したがって、ばらつき補正係数KEAF1 が、第2判定値KEAFRH以上のときに、1番気筒#1の燃料供給系が正常に動作していないと判定することができる。
なお、図示しないが、1番気筒#1の燃料供給系が正常に動作していないことによって、図24の場合とは逆に、1番気筒#1の空燃比が他の気筒よりも極めてリッチになっているような場合には、1番気筒#1のばらつき補正係数KEAF1 が、第1判定値KEAFRLを下回ることによって、1番気筒#1の燃料供給系が正常に動作していないと判定することができる。
以上のように、本実施形態によれば、サイクルフィルタ23aおよび回転フィルタ23bが互いに並列に設けられ、LAFセンサ14の出力KACTが、サイクルフィルタ23aによって、非2気筒ずれパターンによるばらつきの有無を表す第1周波数fr1域が通過するようにフィルタリングされることで、第1フィルタリング値KACT_Fcが算出される。また、回転フィルタ23bによって、LAFセンサ14の出力KACTが、2気筒ずれパターンによるばらつきの有無を表す第2周波数fr2域が通過するようにフィルタリングされることで、第2フィルタリング値KACT_Frが算出される。さらに、第1加重平均値KACT_Fcdが、その前回値の絶対値|KACT_Fcd(m−1)|および第1フィルタリング値の今回値の絶対値|KACT_Fc(m)|を加重平均することにより算出される。
そして、この第1加重平均値KACT_Fcdがしきい値KACT_REFよりも大きく、第1フィルタリング値KACT_Fcの振幅がより大きいときには、ばらつき補正係数KEAFi が、第1フィルタリング値KACT_Fcに基づいて気筒ごとに算出される。一方、第1加重平均値KACT_Fcdがしきい値KACT_REFよりも小さく、第2フィルタリング値KACT_Frの振幅がより大きいときには、ばらつき補正係数KEAFi が、第2フィルタリング値KACT_Frに基づいて算出される。そのように算出されたばらつき補正係数KEAFi に応じて、最終燃料噴射量TOUTi が、第1および第2フィルタリング値KACT_Fc,KACT_Frの振幅が値0になるように気筒ごとに算出される。
このように、第1および第2フィルタリング値KACT_Fc,KACT_Frのうち、振幅がより大きく、気筒間の空燃比のばらつきの有無などを良好に表すフィルタリング値に基づいて、このフィルタリング値の振幅が値0になるように、ばらつき補正係数KEAFi を算出するので、いかなるばらつきパターンにおいても、4つの気筒#1〜#4の空燃比を平均化するように制御でき、それにより、気筒間の空燃比のばらつきを速やかにかつ適切に解消することができる。また、ばらつき補正係数KEAFi を算出するためのフィルタリング値を、第1加重平均値KACT_Fcdに基づいて選択するので、各気筒の空燃比の一時的な変動などが生じても、この変動を加重平均によって吸収することができる。その結果、バンドパスフィルタの頻繁な切り換えを防止でき、したがって、各気筒の空燃比が一時的に変動したような場合でも、気筒間の空燃比のばらつきを速やかに解消することができる。
さらに、最終燃料噴射量TOUTi が、TDC信号に同期して算出されるとともに、第1および第2フィルタリング値KACT_Fc,KACT_Frの算出に用いられるLAFセンサ14の出力KACTが、CRK信号に同期してサンプリングされる。このように、LAFセンサ14の出力KACTを、最終燃料噴射量TOUTi の決定周期、すなわち各気筒から排気ガスが排出される周期よりも短い周期ごとにサンプリングするので、そのようにサンプリングされたLAFセンサ14の出力KACTは、各気筒の排気ガス中の空燃比の変化状態をきめ細かく表す。これにより、第1および第2フィルタリング値KACT_Fc,KACT_Frは、気筒間の空燃比のばらつきの有無などをよりきめ細かく適切に表すので、気筒間の空燃比のばらつきを、より速やかにかつ適切に解消することができる。
また、ばらつき補正係数KEAFi を算出するための第1および第2フィルタリング値KACT_Fc,KACT_Frとして、各気筒の排気ガスの排出タイミングに相当する各気筒のTDC信号の出力後、むだ時間が経過したタイミングで検出されたLAFセンサ14の出力KACTに基づくものを選択するので、各気筒の排気ガス中の空燃比が良好に反映されたものを用いることができる。したがって、むだ時間を補償しながら、最終燃料噴射量TOUTi を適切に算出することができる。さらに、むだ時間を、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、すなわちエンジン3の運転状態に応じて求めるので、運転状態の変化に応じて、むだ時間を適切に補償しながら、各気筒の排気ガス中の空燃比が良好に反映された第1および第2フィルタリング値KACT_Fc,KACT_Frを、最適に得ることができる。
また、各気筒のばらつき補正係数KEAFi が、ばらつき補正係数暫定値keafi を移動平均値KEAFaveで除算することにより算出される。これにより、各フィルタリング値にノイズが含まれる場合でも、各気筒のばらつき補正係数KEAFi へのノイズの影響を平準化することができるので、ばらつき補正係数KEAFi を適切に算出でき、したがって、各気筒の空燃比の変動を回避することができる。さらに、気筒間の空燃比のばらつきを補正するための各気筒のばらつき補正係数KEAFi が、大きすぎるまたは小さすぎるときに、対応する気筒の燃料供給系が正常に動作していないと判定するので、この判定を適切に行うことができる。
また、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さくなったときに、気筒間の空燃比のばらつきが解消したとして、ばらつき補正係数KEAFi を、その直前に算出された値とほぼ等しい値に固定する。これにより、第1および第2フィルタリング値KACT_Fc,KACT_Fr中のノイズに起因するばらつき補正係数KEAFi の変動を防止できる。したがって、前述したハンチング現象を回避することができるので、気筒間の空燃比のばらつきのない状態に維持することができる。
なお、本実施形態のように、ばらつき補正係数KEAFi を算出するためのフィルタリング値の選択を、第1加重平均値KACT_Fcdとしきい値KACT_REFとの比較結果に基づいて行うのに代えて、第1加重平均値KACT_Fcdと第2加重平均値KACT_Frdとの比較結果に基づいて行ってもよい。具体的には、ばらつき補正係数KEAFi を算出するためのフィルタリング値として、KACT_Fcd>KACT_Frdのときには、第1フィルタリング値KACT_Fcを選択し、KACT_Fcd≦KACT_Frdのときには、第2フィルタリング値KACT_Frを選択してもよい。この場合にも、本実施形態と同様に、第1および第2フィルタリング値KACT_Fc,KACT_Frのうち、振幅がより大きく、気筒間の空燃比のばらつきの有無などをより良好に表すものを、ばらつき補正係数KEAFi を算出するためのフィルタリング値として採用することができる。
次に、図25を参照しながら、ばらつき補正係数KEAFi を算出する処理の変形例について説明する。本処理は、前述した図18の処理と比較して、前記ステップ63および64の処理のみが異なるので、以下、この相違点を中心として説明し、同じ実行内容のステップについては、同じステップ番号を付し、その説明を省略するものとする。前記ステップ63および64に代わるステップ80では、算出用フィルタリング値の絶対値|KACT_Fi (n)|が、しきい値KACT_THRESHよりも小さいか否かを判別する。
この答がNOのときには、気筒間で空燃比がばらついているとして、前記ステップ65〜67を実行し、ばらつき補正係数KEAFi を算出するとともに、算出したばらつき補正係数KEAFi をRAMに記憶・更新し(ステップ81)、本処理を終了する。
一方、上記ステップ80の答がYESで、|KACT_Fi (n)|<KACT_THRESHのときには、気筒間の空燃比のばらつきが解消しているとして、前記ステップ65〜67,81をスキップし、ばらつき補正係数KEAFi の算出・更新を行わずに、本処理を終了する。
このように、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さいときには、気筒間の空燃比のばらつきが解消しているとして、ばらつき補正係数KEAFi は、その算出・更新が行われないことにより、この条件が成立する直前に算出されたばらつき補正係数KEAFi と同じ値に固定される。したがって、前述した第1実施形態と同様、ハンチング現象を回避することができ、気筒間の空燃比のばらつきのない状態に維持することができる。また、上記の条件(|KACT_Fi (n)|<KACT_THRESH)が成立しているときに、第1実施形態で行われるようなばらつき補正係数KEAFi の算出・更新が省略されるので、その分、ECU2の演算負荷を低減することができる。
次に、図26を参照しながら、本発明の第2実施形態について説明する。本実施形態は、第1実施形態のばらつき補正部23に代えて、ばらつき補正部30が設けられている点のみが異なるため、以下、その構成を中心として説明する。同図において、ばらつき補正部23と同じばらつき補正部30中の構成要素については、同じ符号を用いて示している。
ばらつき補正部30では、加算器30a(総和算出手段)によって、第1遅延要素23cから出力された第1フィルタリング値KACT_Fc(m)と、第2遅延要素23dから出力された第2フィルタリング値KACT_Fr(m)が加算される。また、この加算によって得られた和(総和)が、算出用フィルタリング値KACT_Fi (n)として、算出用フィルタリング値決定部30b(補正係数固定手段)に出力される。算出用フィルタリング値決定部30bでは、入力された算出用フィルタリング値KACT_Fi (n)に基づき、前述した算出用フィルタリング値決定部23hと同様にして、算出用フィルタリング値KACT_Fi (n)を決定し、決定した算出用フィルタリング値KACT_Fi (n)をばらつき補正係数算出部30c(補正用パラメータ算出手段、平均値算出手段、補正係数算出手段)に出力する。ばらつき補正係数算出部30cでは、入力された算出用フィルタリング値KACT_Fi (n)に基づいて、ばらつき補正係数KEAFi が算出される。
このばらつき補正係数KEAFi の算出について、図27のフローチャートを参照しながら説明する。まず、ステップ90では、図14の前記ステップ8で読み込んだ第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和を、算出用フィルタリング値KACT_Fi (n)として設定する。
次いで、設定した算出用フィルタリング値の絶対値|KACT_Fi (n)|が、図18の前記ステップ63で用いたしきい値KACT_THRESHよりも小さいか否かを判別する(ステップ91)。この答がYESのときには、第1および第2フィルタリング値KACT_Fc,KACT_Frの和がほぼ値0であるため、気筒間の空燃比のばらつきが解消しているとして、算出用フィルタリング値KACT_Fi (n)を0に設定し(ステップ92)、ステップ93〜95を実行する。一方、ステップ91の答がNOで、|KACT_Fi (n)|≧KACT_THRESHのときには、気筒間で空燃比がばらついているとして、ステップ92をスキップし、ステップ93〜95を実行する。
このステップ93〜95では、前記ステップ65〜67と同様にして、ばらつき補正係数KEAFi を算出する。まず、ステップ93では、ステップ90または92で設定された算出用フィルタリング値KACT_Fi (n)を用いて、前記式(24)により、ばらつき補正係数暫定値keafi を算出する。次に、ステップ94において、算出したばらつき補正係数暫定値keafi を用いて、前記式(25)により、移動平均値KEAFaveを算出する。
次いで、ステップ95において、上記ステップ93および94においてそれぞれ算出したばらつき補正係数暫定値keafi および移動平均値KEAFaveを用いて、前記式(26)により、ばらつき補正係数KEAFi を算出した後、本処理を終了する。
以上のように、第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和に基づいて、ばらつき補正係数KEAFi を算出する(ステップ90、93〜95)のは、次の理由による。すなわち、図28に示すように、前述した模擬出力KACTMIをLAFセンサ14の出力KACTとして、第3模擬出力KACTMI3 のみを他の模擬出力よりも小さくし、ばらつき補正部30に入力すると、第1フィルタリング値KACT_Fcは、比較的大きな振幅で変化し、第2フィルタリング値KACT_Frは、比較的小さな振幅で変化する。そして、これらのフィルタリング値の和(KACT_Fc+KACT_Fr)は、同図に破線で示す第1フィルタリング値KACT_Fcと比較して、第3模擬出力KACTMI3 が入力されるタイミングでは、絶対値が大きな負値に、第2模擬出力KACTMI2 が入力されるタイミングでは、小さな正値になる。このように、第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和は、第1フィルタリング値KACT_Fcよりも、気筒間の空燃比の実際のばらつきに近い特性を示す。なお、このような特性は、3番気筒#3に限らず、他の1つの気筒のみの空燃比がリーン側またはリッチ側にずれているばらつきパターンの場合にも該当する。以上により、第1実施形態のばらつき補正部23と比較して、気筒間の空燃比のばらつきを速やかに解消することができるためである。
また、第1実施形態と同様、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さくなったときには(ステップ91:YES)、空燃比のばらつきが解消したとして、算出用フィルタリング値KACT_Fi (n)を0に設定する(ステップ92)とともに、それを用いて、ばらつき補正係数KEAFi を算出する(ステップ93〜95)。これにより、ばらつき補正係数KEAFi は、その直前に算出されたばらつき補正係数KEAFi とほぼ等しい値に固定される。
次に、図29〜図31を参照しながら、本発明の第2実施形態により空燃比を制御した場合の動作例について、第1および第2の比較例とともに説明する。これらの第1および第2の比較例はそれぞれ、第1実施形態で用いた図21および図22の第1および第2比較例と同様、ばらつき補正係数KEAFi をばらつき補正係数暫定値keafi に直接、設定した場合の例、および、空燃比のばらつきの解消後にばらつき補正係数KEAFi の算出・更新を継続した場合の例である。また、これらの例はいずれも、図23の場合と同様、1番気筒#1の混合気の空燃比が他の気筒よりもリッチな状態のばらつきパターンの場合において、STR22により、LAFセンサ14の出力KACTが値1になるように制御しているときに、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれている状態で、ばらつき補正係数KEAFi による補正を行ったときの動作を示している。なお、同図において、KACT1〜4 はそれぞれ、前述した図20〜24の場合と同様、排気マニホルド7aの気筒#1〜#4の排気ポートの直後の部分に追加して設けた4つの測定用のLAFセンサ(図示せず)の出力に相当する。
図29に示すように、ばらつき補正係数KEAFi による補正が開始されるまでは(〜t14)、第1フィルタリング値KACT_Fcが、比較的大きな振幅で変化するとともに、第2フィルタリング値KACT_Frが、比較的小さな振幅で変化する。図28の説明のときに述べたように、第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和は、気筒間の空燃比の実際のばらつきに近い特性を示す。このため、この状態において、ばらつき補正係数KEAFi による補正が開始されると(時点t14)、図23に示した第1実施形態の場合と比較して、1番気筒#1のばらつき補正係数KEAF1 の減少度合は大きく、また、4番気筒#4のばらつき補正係数KEAF4 の増加度合は小さい。
これにより、第1実施形態の場合と異なり、KACT1 とKACT4 との差が若干存在することによって、2気筒ずれパターンに近いパターンになることで、第2フィルタリング値KACT_Frの振幅が若干、大きくなる。それにより、1番気筒#1のばらつき補正係数KEAF1 がさらに減少するとともに、2番および3番気筒#2,#3のばらつき補正係数KEAF2 ,KEAF3 が増加し、4番気筒#4のばらつき補正係数KEAF4 が若干、増加する。また、そのような各気筒のばらつき補正係数KEAFi の変化によって、KACT1 がさらに減少するとともに、KACT2 およびKACT3 が増加し、KACT4 が若干増加しており、4つの気筒#1〜#4の空燃比が平均化するように制御される。
その結果、第1実施形態の図23に示す時点t11よりも早い時点t15において、KACT1〜4 がいずれも所定の値に収束するのに伴って、第1および第2フィルタリング値KACT_Fc,KACT_Frが0に収束するとともに、これらのフィルタリング値の和(KACT_Fc+KACT_Fr)も値0に収束する。また、その直後において、KACT1〜4 がいずれも値1に収束するのに伴って、LAFセンサ14の出力KACTが値1に収束する。さらに、1番気筒#1のばらつき補正係数KEAF1 は値1よりも若干小さな値に安定して収束するとともに、2〜4番気筒#2〜#4のばらつき補正係数KEAF2〜4 は値1よりも若干大きな値に安定して収束する。以上のように、本実施形態によれば、第1実施形態と比較して、気筒間の空燃比のばらつきを速やかに解消することができる。
これに対して、図30の第1比較例では、前述した図21の第1比較例と同様、補正開始後(時点t16以降)、1番〜4番気筒のばらつき補正係数KEAF1 〜KEAF4 がいずれも、第1および第2フィルタリング値KACT_Fc,KACT_Frに含まれるノイズの影響により増加し、安定しない。また、このばらつき補正係数KEAFi の増加に伴い、フィードバック補正係数KSTRが値1よりも小さな値に減少している。そして、ばらつき補正係数KEAFi がノイズの影響によりさらに増加するのに応じて、フィードバック補正係数KSTRがその下限値KSTRLに達すると(時点t17)、KACT1〜4 がいずれも値1付近から増加するようになり、それに伴って、LAFセンサの出力KACTも値1付近から増加し始める。以上のように、本実施形態においても、補正係数平均化処理により、第1および第2フィルタリング値KACT_Fc,KACT_Frにノイズが含まれる場合でも、ばらつき補正係数KEAFi を安定させることができる。
また、図31の第2比較例では、補正開始後(時点t18以降)、空燃比のばらつきが解消した(時点t19)後にも、ばらつき補正係数KEAFi の算出・更新が継続されるので、前述した図22の第2比較例と同様の動作になる。すなわち、第1および第2フィルタリング値KACT_Fc,KACT_Fr中のノイズの影響により、ばらつき補正係数KEAF1 〜KEAF4 が変動する(時点t20以降)。この変動によって、KACT1〜4 が再び値1から若干ばらつくのに伴い、第1および第2フィルタリング値KACT_Fc,KACT_Frの振幅が若干大きくなる。さらにその後には(時点t21以降)、ばらつき補正係数KEAF1 〜KEAF4 が安定するのに応じて、KACT1〜4 が再び値1に収束する。以上のように、図22の第2比較例の場合と同様、ハンチング現象が生じる。
以上のように、本実施形態においても、補正係数固定処理によって、第1および第2フィルタリング値KACT_Fc,KACT_Fr中のノイズに起因するばらつき補正係数KEAFi の変動を防止できる。したがって、上記のハンチング現象を回避することができるなど、第1実施形態による前述した効果をまったく同様に得ることができる。
以上のように、この第2実施形態によれば、気筒間の空燃比の実際のばらつきにより近い特性を示す第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和に基づいて、4つの気筒#1〜#4の空燃比が平均化し、気筒間の空燃比のばらつきが解消するように、すなわち、第1フィルタリング値KACT_Fcと第2フィルタリング値KACT_Frとの和が値0になるように、ばらつき補正係数KEAFi が算出される。したがって、気筒間の空燃比のばらつきをさらに速やかにかつ適切に解消することができる。
なお、第1実施形態の変形例と同様に、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さいときに、ばらつき補正係数KEAFi の算出・更新を行わないようにすることによって、ばらつき補正係数KEAFi を直前の値に固定してもよい。
次に、図35を参照しながら、本発明の第3実施形態について説明する。本実施形態は、前述した第1実施形態のばらつき補正部23に代えて、ばらつき補正部60が設けられている点のみが異なるため、以下、その構成を中心として説明する。同図において、第1実施形態のばらつき補正部23と同じばらつき補正部60中の構成要素については、同じ符号を用いて示している。
ばらつき補正部60では、ばらつき補正係数算出部60a(補正係数算出手段)において、算出用フィルタリング値決定部23hから入力された算出用フィルタリング値KACT_Fi (n)、および学習補正係数算出記憶部60b(学習補正係数算出手段、記憶手段)から入力された第1検索値KMEMIPi (n)に応じて、ばらつき補正係数KEAFi (n)を気筒ごとに算出し、学習補正係数算出記憶部60bに出力する。その詳細については後述する。
学習補正係数算出記憶部60bでは、ばらつき補正係数算出部60aから入力されたばらつき補正係数KEAFi (n)と、すでに記憶している学習補正係数KMEMi とに応じて、今回の学習補正係数KMEMi (n)を算出する。この学習補正係数KMEMi は、空燃比のばらつきを補正するためのものであり、ばらつき補正係数KEAFi の学習値である。そして、算出した学習補正係数KMEMi (n)を、エンジン3の運転状態に対応させて記憶する。また、記憶した学習補正係数KMEMi のうち、現在のエンジン3の運転状態に対応する学習補正係数KMEMi を第1検索値KMEMIPi (n)として、ばらつき補正係数算出部60aに出力する。以上の学習補正係数算出記憶部60bにおける処理の詳細については、後述する。
次に、本実施形態の空燃比制御を含む燃料噴射制御処理について、図36を参照しながら説明する。本処理は、前述した図14の燃料噴射量制御処理と比較して、前記ステップ9の処理に代えて、ステップ9Aのばらつき補正係数KEAFi を算出する処理と、これに続くステップ9Bの学習補正係数KMEMi を算出・記憶する処理を実行する点のみが異なるので、以下、この相違点を中心として説明し、同じ実行内容のステップについては、同じステップ番号を付し、その説明を省略するものとする。
次に、図37を参照しながら、このステップ9Aのばらつき補正係数KEAFi を算出する処理について説明する。本処理は、前述した図18のばらつき補正係数KEAFi を算出する処理と比較して、前記ステップ65に代えて、ステップ100および101の処理が実行される点のみが異なるので、同じ実行内容のステップについては、同じステップ番号を付し、以下、相違点を中心として説明する。
前記ステップ63または64に続くステップ100では、第1検索値KMEMIPi を設定する。この設定は、図38に示すKMEMi メモリに記憶された学習補正係数KMEMi を読み出すことによって行われる。このKMEMi メモリは、EEPROM2aで構成されており、#1番〜#4番気筒の学習補正係数KMEM1〜4 をそれぞれ記憶するKMEM1〜4 メモリを有している。また、各KMEMi メモリは、学習補正係数KMEMi を記憶するための、NEナンバーNE’i (n−e)およびPBナンバーPB’i (n−e)で規定される多数の記憶場所を有しており、これらの記憶場所に、学習補正係数KMEMi が、エンジン回転数NEおよび吸気管内絶対圧PBAで表されるエンジン3の運転状態に対応させて、記憶されている。
上記の第1検索値KMEMIPi は、KMEMi メモリに記憶された学習補正係数KMEMi のうちの、現在のエンジン回転数NEに対応するNEナンバーNE’i (n−e)と、現在の吸気管内絶対圧PBAに対応するPBナンバーPB’i (n−e)とで規定される記憶場所に記憶された学習補正係数KMEMi に設定される。なお、エンジン回転数NEおよび吸気管内絶対圧PBAにそれぞれ対応するNEおよびPBナンバーNE’i (n−e),PB’i (n−e)が存在しない場合には、第1検索値KMEMIPi の設定は、補間演算によって行われる。
上記ステップ100に続くステップ101では、設定した第1検索値KMEMIP
i (n)、および前記ステップ61、62または64で設定した算出用フィルタリング値KACT_F
i (n)を用いて、次式(31)によってばらつき補正係数暫定値keaf
i (n)を算出する。そして、続くステップ66および67において、算出したばらつき補正係数暫定値keaf
i (n)に基づき、前記式(25)および(26)によって、ばらつき補正係数KEAF
i (n)を算出する。
以上のように、KMEMi メモリに記憶された学習補正係数KMEMi のうち、現在のエンジン回転数NEおよび吸気管内絶対圧PBAに対応する学習補正係数KMEMi を、第1検索値KMEMIPi (n)として設定する。そして、設定した第1検索値KMEMIPi (n)と算出用フィルタリング値KACT_Fi (n)に応じて、ばらつき補正係数KEAFi (n)が算出される。
次に、図39を参照しながら、前記ステップ9Bの学習補正係数KMEMi を算出・記憶する処理について説明する。まず、ステップ110では、前記ステップ63と同様、算出用フィルタリング値の絶対値|KACT_Fi (n)|が、前記しきい値KACT_THRESHよりも小さいか否かを判別する。この答がNOのときには、気筒間で空燃比がばらついているとして、学習補正係数KMEMi の算出・記憶を行わずに、そのまま本処理を終了する。
一方、ステップ110の答がYESで、|KACT_Fi (n)|<KACT_THRESHのときには、気筒間で空燃比がほとんどばらついていないとして、次のステップ111〜121において、今回、算出する学習補正係数KMEMi を記憶するためのKMEMi メモリの記憶場所の設定、すなわち、この記憶場所を規定するNEナンバーNE’i (n−e)およびPBナンバーPB’i (n−e)の設定を行う。
この設定は、所定のむだ時間分前のエンジン回転数NEおよび吸気管内絶対圧PBAに基づいて行われる。これは次の理由による。すなわち、前述したように、ばらつき補正係数KEAFi は、算出用フィルタリング値KACT_Fi に基づいて算出され、この算出用フィルタリング値KACT_Fi は、LAFセンサ14の出力KACTをフィルタリングしたものである。また、最終燃料噴射量TOUTi は、前記ステップ2,10および11から明らかなように、エンジン回転数NEおよび吸気管内絶対圧PBAに応じて求められる。さらに、最終燃料噴射量TOUTi に基づく燃料が噴射された後、その燃焼によって生成される排気ガス中の酸素濃度がLAFセンサ14の出力に反映されるまでに、むだ時間が生じる。以上から明らかなように、LAFセンサの出力KACT、およびこれに基づいて算出されるばらつき補正係数KEAFi は、このむだ時間分前の空燃比に対応するので、この空燃比を定めるのに用いたむだ時間分前の実際のエンジン回転数NEおよび吸気管内絶対圧PBAに、ばらつき補正係数KEAFi を対応させるためである。これにより、学習補正係数KMEMi を、このむだ時間による影響を補償しながら、エンジン3の運転状態に適切に対応させて記憶することができる。
まず、ステップ111では、記号xおよび記号yを値1にセットする。次いで、eサイクル前回転数NE(n−e)が、第1所定値NEg(1)および第2所定値NEg(2)の単純平均値({NEg(1)+NEg(2)}/2)よりも大きいか否かを判別する(ステップ112)。
このeサイクル前回転数NE(n−e)は、RAMに記憶された、本処理のe回サイクル前、すなわちe回前のTDC信号が出力された時点に検出されたエンジン回転数NEである。また、この値eは、上述したむだ時間に対応するものであり、エンジン回転数NEおよび吸気管内絶対圧PBAに応じ、eマップ(図示せず)を検索することによって求められる。このeマップでは、値eは、エンジン回転数NEが高いほど、または吸気管内絶対圧PBAが高いほど、より小さな値に設定されている。これは、エンジン回転数NEまたは吸気管内絶対圧PBAが高いほど、排気ガスの流速が高いので、その分、むだ時間がより短いためである。また、上記の第1および第2の所定値NEg(1),NEg(2)は、NEナンバーNE’i (n−e)に対応するように設定され、NEg(1)<NEg(2)の大小関係に設定されている。
上記ステップ112の答がNOで、NE(n−e)≦{NEg(1)+NEg(2)}/2のときには、多数のNEナンバーNE’i (n−e)のうちから、第1所定値NEg(1)に対応するものを選択し、学習補正係数KMEMi の記憶場所を規定するNEナンバーNE’i (n−e)として設定する(ステップ113)。
一方、前記ステップ112の答がYESで、NE(n−e)>{NEg(1)+NEg(2)}/2のときには、eサイクル前回転数NE(n−e)が、第x所定値NEg(x)および第x+1所定値NEg(x+1)の平均値({NEg(x)+NEg(x+1)}/2)よりも大きく、かつ第x+1所定値NEg(x+1)および第x+2所定値NEg(x+2)の平均値({NEg(x+1)+NEg(x+2)}/2)よりも小さいか否かを判別する(ステップ114)。これらの第x〜第x+2の所定値NEg(x)〜NEg(x+2)は、記号xの値が大きいほど、より大きな値に設定され、第1所定値NEg(1)と同様、NEナンバーNE’i (n−e)に対応するように設定されている。
このステップ114の答がNOのときには、記号xをインクリメントし(ステップ115)、再度、ステップ114を実行する。一方、上記ステップ114の答がYESのときには、第x+1所定値NEg(x+1)に対応するNEナンバーNE’i (n−e)を、学習補正係数KMEMi の記憶場所を規定するNEナンバーNE’i (n−e)として設定する(ステップ116)。このように、上記ステップ114の条件が成立するまで、記号xがインクリメントされ、それにより、ステップ114の判別に用いられる第x〜第x+2の所定値NEg(x)〜(x+2)が、第1〜第3所定値NEg(1)〜(3)からそれぞれ繰り上げられる。以上のようにしてNEナンバーNE’i (n−e)を設定するのは、eサイクル前回転数NE(n−e)に合致するNEナンバーNE’i (n−e)が通常、存在しないので、より近いNEナンバーNE’i (n−e)を補間によって求めるためである。
前記ステップ113または116に続くステップ117では、eサイクル前絶対圧PB(n−e)が、第1所定値PBg(1)および第2所定値PBg(2)の平均値({PBg(1)+PBg(2)}/2)よりも大きいか否かを判別する(ステップ117)。このeサイクル前絶対圧PB(n−e)は、RAMに記憶された、本処理のe回サイクル前に検出された吸気管内絶対圧PBAである。また、第1および第2の所定値PBg(1),PBg(2)は、PBナンバーPB’i (n−e)に対応するように設定され、PBg(1)<PBg(2)の大小関係に設定されている。
このステップ117の答がNOで、PB(n−e)≦{PBg(1)+PBg(2)}/2のときには、多数のPBナンバーPB’i (n−e)のうちから、第1所定値PBg(1)に対応するものを選択し、学習補正係数KMEMi の記憶場所を規定するPBナンバーPB’i (n−e)として設定する(ステップ118)。
一方、上記ステップ117の答がYESで、PB(n−e)>{PBg(1)+PBg(2)}/2のときには、eサイクル前絶対圧PB(n−e)が、第y所定値PBg(y)および第y+1所定値PBg(y+1)の平均値({PBg(y)+PBg(y+1)}/2)よりも大きく、かつ第y+1所定値PBg(y+1)および第y+2所定値PBg(y+2)の平均値({PBg(y+1)+PBg(y+2)}/2)よりも小さいか否かを判別する(ステップ119)。これらの第y〜第y+2の所定値PBg(y)〜PBg(y+2)は、記号yの値が大きいほど、より大きな値に設定され、第1所定値PBg(1)と同様、PBナンバーPB’i (n−e)に対応するように設定されている。
この答がNOのときには、記号yをインクリメントし(ステップ120)、再度、ステップ119を実行する。一方、上記ステップ119の答がYESのときには、第y+1所定値PBg(y+1)に対応するPBナンバーPB’i (n−e)を、学習補正係数KMEMi の記憶場所を規定するPBナンバーPB’i (n−e)として設定する(ステップ121)。このように、上記ステップ119の条件が成立するまで、記号yがインクリメントされ、それにより、ステップ119の判別に用いられる第y〜第y+2所定値PBg(y)〜(y+2)が、PBg(1)〜(3)からそれぞれ繰り上げられる。以上のようにしてPBナンバーPB’i (n−e)を設定するのは、eサイクル前絶対圧PB(n−e)に合致するPBナンバーPB’i (n−e)が通常、存在しないので、より近いPBナンバーPB’i (n−e)を補間によって求めるためである。
前記ステップ118または121に続くステップ122では、前記ステップ113または116で設定したNEナンバーNE’i (n−e)と、前記ステップ118または121で設定したPBナンバーPB’i (n−e)を用いて、第2検索値KMEMIPi ’を設定する。具体的には、NEおよびPBナンバーNE’i (n−e),PB’i (n−e)で規定されるKMEMi メモリの記憶場所に記憶されている学習補正係数KMEMi を読み出し、第2検索値KMEMIPi ’(n)として設定する。
次いで、設定した第2検索値KMEMIPi ’(n)、および前述した図37の処理で算出したばらつき補正係数KEAFi を用いて、学習補正係数KMEMi (n)を次式(32)によって算出する(ステップ123)。
KMEMi (n)=Ks・KEAFi (n)+(1-Ks)・KMEMIPi '(n) …… (32)
ここで、Ksは、所定の学習速度係数であり、0<Ks≦1に設定されている。
次に、算出した学習補正係数KMEMi (n)を、KMEMi メモリのうちの、NEおよびPBナンバーNE’i (n−e),PB’i (n−e)で規定される記憶場所に記憶し(ステップ124)、更新した後、本処理を終了する。
以上のように、気筒間で空燃比がほとんどばらついていないとみなされるときに、ばらつき補正係数KEAFi (n)が対応するむだ時間分前のエンジン3の運転状態を表すeサイクル前回転数および絶対圧NE(n−e),PB(n−e)に基づいて、学習補正係数KMEMi (n)の記憶場所が設定される。次に、設定された記憶場所にすでに記憶されている学習補正係数KMEMi を読み出し、第2検索値KMEMIPi ’(n)として設定する。そして、そのときに算出されたばらつき補正係数KEAFi (n)と、第2検索値KMEMIPi ’(n)に基づいて、学習補正係数KMEMi (n)を算出し、算出した学習補正係数KMEMi (n)を、設定した記憶場所に記憶し、更新する。
以上のように、本実施形態によれば、気筒間で空燃比がほとんどばらついていないとみなされる状況で算出した学習補正係数KMEMi を、エンジン3の運転状態に対応させて記憶するとともに、記憶した学習補正係数KMEMi のうちの現在のエンジン3の運転状態に対応する学習補正係数KMEMi である第1検索値KMEMIPi に応じて、最終燃料噴射量TOUTi を算出する。したがって、エンジン3の運転状態に応じて、そのときの実際のエンジン3の運転状態に最適な学習補正係数KMEMi を用いて、最終燃料噴射量TOUTi を決定できる。その結果、エンジン3の運転状態に応じて空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。また、学習補正係数KMEMi を記憶する際に、前述したむだ時間を考慮するので、その影響を補償しながら、学習補正係数KMEMi を、エンジン3の運転状態に適切に対応させて記憶することができる。
さらに、学習補正係数KMEMi を、不揮発性メモリであるEEPROM2aで構成されたKMEMi メモリに記憶する。これにより、エンジン3の始動時において、前回までのエンジン3の運転中に記憶された学習補正係数KMEMi を用いて最終燃料噴射量TOUTi を決定できる。これにより、エンジン3の始動後、LAFセンサ14が活性化していない状態でも、空燃比のばらつきを適切に補正でき、したがって、このばらつきを抑制することができる。
さらに、算出したばらつき補正係数KEAFi と、すでに記憶された学習補正係数KMEMi である第2検索値KMEMIPi ’とに応じて学習補正係数KMEMi を算出するので、学習補正係数KMEMi への第1または第2フィルタリング値KACT_Fc,KACT_Fr中のノイズなどの影響を抑制することができる。また、学習補正係数KMEMi の算出の際に、ばらつき補正係数KEAFi を算出したときのエンジン3の運転状態、すなわち、前述したむだ時間に相当するeサイクル前の運転状態とほぼ同一の運転状態において得られた学習補正係数KMEMi である第2検索値KMEMIPi ’を用いるので、学習補正係数KMEMi を、エンジン3の運転状態に応じて適切に算出することができる。
なお、本実施形態では、記憶手段としてEEPROM2aを用いたが、不揮発性のメモリであれば、これに限らず任意のものを用いてもよく、例えばフラッシュメモリやバックアップ用の電源を備えたRAMを用いてもよい。また、本実施形態では、ばらつき補正係数KEAFi を算出したときのエンジン3の運転状態として、eサイクル前の運転状態を用いたが、前述したむだ時間が短い場合には、これに代えて、ばらつき補正係数KEAFi の算出時の運転状態を用いてもよい。さらに、第1実施形態の変形例と同様に、算出用フィルタリング値の絶対値|KACT_Fi (n)|がしきい値KACT_THRESHよりも小さいときに、ばらつき補正係数KEAFi の算出・更新を行わないようにすることによって、ばらつき補正係数KEAFi を直前の値に固定してもよい。また、第2実施形態と同様に、第1および第2のフィルタリング値KACT_Fc,KACT_Fr(m)の和に基づいて、ばらつき補正係数KEAFi を算出してもよい。
また、説明した実施形態は、本発明を、4サイクル直列4気筒型のエンジン3に適用した例であるが、本発明はこれに限らず、各実施形態について、複数の気筒を有するエンジン、例えば、4サイクル直列3気筒タイプ、または各々が3つの気筒からなる一対のシリンダバンクを備える4サイクルV型6気筒タイプのエンジンに適用することが可能である。以下、本発明の第1実施形態において、4サイクル直列3気筒タイプのエンジンを用いた場合について説明する。この空燃比制御装置は、前述した第1実施形態の空燃比制御装置1と比較して、ばらつき補正部40の構成が異なるため、以下、図32を参照しながら、この点を中心として説明する。なお、同図において、第1実施形態のばらつき補正部23と同じばらつき補正部40中の構成要素については、同じ符号を用いて示している。
4サイクル直列3気筒型エンジンにおいて、LAFセンサ14の出力KACTを周波数解析した結果、気筒間で空燃比がばらついている場合には、1燃焼サイクルに同期した所定周波数域のPSDが非常に大きくなる一方、ばらつきがない場合には、そのような事象が生じないことが確認された。また、この所定周波数は、前述した第1周波数fr1と等しい。これは、前述した第1実施形態のエンジン3は、この3気筒型エンジンと同様、4サイクルエンジンであり、4サイクルエンジンでは、気筒数に関わらず、1燃焼サイクルが、4行程、すなわちクランク軸の2回転で完結するためである。また、この3気筒型エンジンでは、気筒間で空燃比がばらついている場合に、前述したエンジン3の場合と異なり、LAFセンサ14の出力KACTのPSDが、第2周波数fr2域においては大きくならないことも確認された。このため、ばらつき補正部40では、第1実施形態のばらつき補正部23と比較し、LAFセンサ14の出力KACTをフィルタリングするフィルタとして、サイクルフィルタ23aのみが用いられ、回転フィルタ23bは省略されている。このように、ばらつき補正部40の構成が、第1実施形態と比較して、単純なものになっている。
また、前述した実験と同様に、3つの気筒の排気ガス中の空燃比KACT1 〜KACT3 を、各燃焼サイクルごとに出力される三角波形の第1〜第3模擬出力KACTMI1 〜KACTMI3 としてそれぞれ模擬的に生成し、これらの総和をLAFセンサ14の模擬出力KACTMIとしてサイクルフィルタ23aに入力したところ、第1フィルタリング値KACT_Fcとして、以下のような波形が得られた。
すなわち、図示しないが、第1〜第3模擬出力KACTMI1〜3 が互いに等しい場合、第1フィルタリング値KACT_Fcは0になった。また、図33の(a)に示すように、第1および第3模擬出力KACTMI1 ,KACTMI3 が互いに等しく、かつ第2模擬出力KACTMI2 が第1模擬出力KACTMI1 よりも小さいばらつきパターンの場合、第1フィルタリング値KACT_Fcとして、1燃焼サイクルと等しい周期で、値0を中心に正負両側に比較的大きな振幅で変化する正弦波状の波形が得られた。さらに、第1フィルタリング値KACT_Fcは、第1および第3模擬出力KACTMI1 ,KACTMI3 が入力されるタイミングでは、正値になるとともに、第2模擬出力KACTMI2 が入力されるタイミングでは、負値になった。このように、第1フィルタリング値KACT_Fcは、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表すことが確認された。
また、図33の(b)に示すように、第1模擬出力KACTMI1 <第2模擬出力KACTMI2 <第3模擬出力KACTMI3 のばらつきパターンの場合、第1フィルタリング値KACT_Fcとして、上述した場合と同様に1燃焼サイクルを1周期とした比較的大きな振幅の正弦波状の波形が得られた。また、第1フィルタリング値KACT_Fcは、第1模擬出力KACTMI1 が入力されるタイミングでは、負値になるとともに、第2模擬出力KACTMI2 が入力されるタイミングでは、0になり、第3模擬出力KACTMI3 が入力されるタイミングでは、正値になった。このように、この場合にも、第1フィルタリング値KACT_Fcは、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって、気筒間の空燃比のばらつきの有無を表すことが確認された。また、第1フィルタリング値KACT_Fcは、その他のばらつきパターンにおいても、同様の特性を示した。
以上のように、第1フィルタリング値KACT_Fcは、いかなるばらつきパターンにおいても、気筒間の空燃比の大小関係を明確に表すとともに、その振幅の有無によって気筒間の空燃比のばらつきの有無を表す。このため、ばらつき補正部40では、算出用フィルタリング値決定部40a(補正係数固定手段)において、第1遅延要素23cから出力された第1フィルタリング値KACT_Fc(m)に基づき、算出用フィルタリング値KACT_Fi (n)が、前記算出用フィルタリング値決定部23hと同様に決定され、ばらつき補正係数算出部40b(補正用パラメータ算出手段、平均値算出手段、補正係数算出手段)に出力される。また、ばらつき補正係数算出部40bでは、入力された算出用フィルタリング値KACT_Fi (n)に基づいて、ばらつき補正係数KEAFi が、前記式(24)〜(26)により算出される。
以上のように、ばらつき補正係数KEAFi は、第1フィルタリング値KACT_Fcのみに基づいて算出される。したがって、この場合にも、気筒間の空燃比の大小関係を明確に表すとともに、振幅の有無により気筒間の空燃比のばらつきの有無を適切に表す第1フィルタリング値KACT_Fcに基づいて、ばらつき補正係数KEAFi を算出するので、前述した第1実施形態の効果を同様に得ることができる。
なお、4サイクルV型6気筒タイプのエンジンの場合、一対のシリンダバンクのそれぞれを直列3気筒型エンジンとみなし、各シリンダバンクの排気マニホルドの集合部にLAFセンサを設け、各LAFセンサの出力をサイクルフィルタ23aでフィルタリングすることにより得られたフィルタリング値に基づいて、上述したようにばらつき補正係数KEAFi を算出すればよい。
以上のように、LAFセンサの出力のうち、気筒間の空燃比のばらつきの有無を表す脈動周波数の個数は、気筒数によって異なり、また、同じ気筒数であっても、1燃焼サイクルが完結するのに必要な行程の数が異なれば、このばらつきの有無を表す脈動周波数の大きさは異なる。このため、ばらつきの有無を表す脈動周波数を実験により予め求め、求めた脈動周波数が複数の場合は、これらの脈動周波数をそれぞれ通過させるようにフィルタリングする複数のバンドパスフィルタを用意し、それらのフィルタリング値に基づいて前述したように算出したばらつき補正係数KEAFi を、各気筒の空燃比制御に用いることにより、前述した実施形態の効果を同様に得ることができる。
また、実施形態は、サイクルフィルタ23aおよび回転フィルタ23bをいずれもIIR型フィルタで構成した例であるが、これらのフィルタ23a,23bをFIR型フィルタで構成してもよい。その場合、FIR型フィルタは、IIR型フィルタと異なり、そのフィルタリング値を算出するのに、以前に算出したフィルタリング値を用いることがないので、その分、空燃比制御装置1の演算負荷を軽減することができる可能性がある。
さらに、実施形態は、ばらつき補正係数KEAFi を算出するためのばらつき補正係数暫定値keafi を、PID制御アルゴリズムを用いることにより算出した例であるが、これに代えて、他の制御アルゴリズムを用いることにより算出してもよい。例えば、図34の式(28)〜(30)に示す応答指定型制御アルゴリズム(スライディングモード制御アルゴリズムまたはバックステッピング制御アルゴリズム)を用いることにより、ばらつき補正係数暫定値keafi を算出してもよい。その場合、算出用フィルタリング値の4回前の値KACT_Fi (n−4)への今回値KACT_Fi (n)の収束挙動において、オーバーシュートが発生しないように、ばらつき補正係数KEAFi を算出することができる。それにより、ばらつき補正係数KEAFi がオーバーシュートや振動的挙動を示すのを回避することができるので、そのようなばらつき補正係数KEAFi の挙動に起因するフィードバック補正係数KSTRによる補正への影響を回避することができる。
また、基本燃料噴射量TIBSの算出方法は、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、マップ検索することにより算出する実施形態の例に限らず、例えば、図1に2点鎖線で示すように、吸入空気量Gairを検出するエアフローセンサ50を吸気管4に設けるとともに、このエアフローセンサ50により検出された吸入空気量Gairに応じて、テーブル検索することにより、基本燃料噴射量TIBSを算出してもよい。
さらに、実施形態では、STR22により、1番気筒#1のモデルパラメータベクトルθ1 に基づいて、フィードバック補正係数KSTRを算出したが、これに代えて、2〜4番気筒#2〜#4のモデルパラメータベクトルθ2〜4 のいずれか1つに基づいて、フィードバック補正係数KSTRを算出してもよい。また、実施形態は、本発明を、車両用のエンジン3の空燃比制御装置に適用した例であるが、本発明はこれに限らず、クランク軸を鉛直方向に配置した船外機などのような船舶推進機用エンジンの空燃比制御装置に適用しても良い。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。