以下、図面を参照しながら、本発明の第1実施形態に係る内燃機関の制御装置について説明する。図1は、第1実施形態の制御装置1およびこれを適用した内燃機関3の概略構成を示している。同図に示すように、この制御装置1は、ECU2を備えており、このECU2は、後述するように、内燃機関(以下「エンジン」という)3の運転状態に応じて、これに供給する燃料量を制御することにより、混合気の空燃比を制御する。
このエンジン3は、図示しない車両に搭載された直列4気筒型ガソリンエンジンであり、1〜4番気筒#1〜#4を備えている。このエンジン3の吸気管4は、1本の吸気通路を構成する主管部4aと、これに接続されたインテークマニホールド4bとを備えており、この主管部4aの途中には、スロットル弁5が設けられている。
この主管部4aのスロットル弁5より上流側および下流側にはそれぞれ、エアフローセンサ9および吸気管内絶対圧センサ11が設けられている。このエアフローセンサ9(検出手段)は、吸気管4を介してエンジン3に吸入される吸入空気量GAIR(検出値)を検出し、その検出信号をECU2に出力する。
また、吸気管内絶対圧センサ11(検出手段)は、例えば半導体圧力センサなどで構成され、吸気管4内の吸気管内絶対圧PBA(検出値)を検出し、その検出信号をECU2に出力する。
さらに、主管部4aのスロットル弁5の近傍には、例えばポテンショメータなどで構成されたスロットル弁開度センサ10が設けられている。このスロットル弁開度センサ10は、スロットル弁5の開度(以下「スロットル弁開度」という)THを検出して、その検出信号をECU2に出力する。
また、吸気管4のインテークマニホールド4bは、主管部4aに接続された集合部4cと、これから分岐し、4つの気筒#1〜#4にそれぞれ接続された4つの分岐部4dとで構成されている。各分岐部4dには、各気筒の図示しない吸気ポートの上流側に、インジェクタ6が取り付けられている。各インジェクタ6は、エンジン3の運転時に、ECU2からの駆動信号によって、その開弁時間である燃料噴射量および噴射タイミングが制御される。
一方、エンジン3の本体には、例えばサーミスタなどで構成された水温センサ12が取り付けられている。水温センサ12は、エンジン3のシリンダブロック内を循環する冷却水の温度であるエンジン水温TWを検出し、その検出信号をECU2に出力する。
また、エンジン3のクランクシャフト(図示せず)には、クランク角センサ13が設けられている。このクランク角センサ13は、クランクシャフトの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号をECU2に出力する。
CRK信号は、所定のクランク角(例えば30゜)ごとに1パルスが出力される。ECU2は、このCRK信号に応じ、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。また、TDC信号は、各気筒のピストン(図示せず)が吸気行程のTDC位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、所定クランク角ごとに1パルスが出力される。
一方、排気管7は、4つの気筒#1〜#4に接続されたエキゾーストマニホールド7bと、その集合部7jに接続された主管部7aとを備えており、このエキゾーストマニホールド7bは、4つの気筒#1〜#4からそれぞれ延びる4つの排気管部7c〜7fが4→2→1の順に集合する形状を有している。すなわち、エキゾーストマニホールド7bでは、1番および4番気筒#1,#4から延びる2つ排気管部7c,7fが1つに集合した集合部7gと、2番および3番気筒#2,#3から延びる排気管部7d,7eが1つに集合した集合部7hと、これらの集合部7g,7hが1つに集合した集合部7j(1つの排気通路)とが一体に構成されている。このような形状により、エキゾーストマニホールド7bの排気抵抗は、4つの排気管部が4→1の順に集合する通常のエキゾーストマニホールドよりも小さい値に設定されており、これにより、エンジン3は、通常のエキゾーストマニホールドを有するものと比較して、より高い出力およびトルクを発生するように構成されている。
また、排気管7の主管部7aには、上流側から順に第1および第2の触媒装置8a,8bが間隔を存して設けられている。各触媒装置8は、NOx触媒と3元触媒を組み合わせたものであり、このNOx触媒は、図示しないが、イリジウム触媒(イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体)をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物(LaCoO3粉末とシリカの焼成体)をさらに被覆したものである。触媒装置8は、NOx触媒による酸化還元作用により、リーンバーン運転時の排気ガス中のNOxを浄化するとともに、3元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のCO、HCおよびNOxを浄化する。
これらの第1および第2触媒装置8a,8bの間の主管部7aには、酸素濃度センサ(以下「O2センサ」という)16が取り付けられている。このO2センサ15は、ジルコニアおよび白金電極などで構成され、第1触媒装置8aの下流側の排気ガス中の酸素濃度に基づく出力VoutをECU2に送る。このO2センサ15の出力Voutは、理論空燃比よりもリッチな混合気が燃焼したときには、ハイレベルの電圧値(例えば0.8V)となり、混合気がリーンのときには、ローレベルの電圧値(例えば0.2V)となるとともに、混合気が理論空燃比付近のときには、ハイレベルとローレベルの間の所定の目標値Vop(例えば0.6V)となる。
また、エキゾーストマニホールド7aの集合部7j付近には、LAFセンサ14が取り付けられている。このLAFセンサ14(検出手段)は、O2センサ15と同様のセンサとリニアライザなどの検出回路とを組み合わせることによって構成されており、リッチ領域からリーン領域までの広範囲な空燃比の領域において排気ガス中の酸素濃度をリニアに検出し、その酸素濃度に比例する検出信号をECU2に出力する。ECU2は、このLAFセンサ14の検出信号に基づき、集合部7j付近の排気ガス中の空燃比を表す検出空燃比KACT(検出値)を算出する。なお、この検出空燃比KACTは、具体的には当量比として算出される。
さらに、ECU2には、アクセル開度センサ16、大気圧センサ17、吸気温センサ18および車速センサ19などが接続されている。このアクセル開度センサ16は、車両の図示しないアクセルペダルの踏み込み量(以下「アクセル開度」という)APを検出し、その検出信号をECU2に出力する。また、大気圧センサ17、吸気温センサ18および車速センサ19はそれぞれ、大気圧PA、吸気温TAおよび車速VPを検出し、その検出信号をECU2に出力する。
次に、ECU2について説明する。このECU2は、I/Oインターフェース、CPU、RAMおよびROMなどからなるマイクロコンピュータで構成されており、前述した各種のセンサ9〜19の出力に応じて、エンジン3の運転状態を判別するとともに、ROMに予め記憶された制御プログラムやRAMに記憶されたデータなどに従って、後述する空燃比制御処理を実行することにより、目標空燃比KCMD、フィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSViおよびその学習補正値KOBSV_LSiなどを算出する。さらに、後述するように、これらのKCMD、KSTR、KOBSViおよびKOBSV_LSiの算出値などに基づいて、インジェクタ6の最終燃料噴射量TOUTiを気筒毎に算出し、この算出した最終燃料噴射量TOUTiに基づいた駆動信号で、インジェクタ6を駆動することにより、混合気の空燃比すなわち排気ガスの空燃比を気筒毎に制御する。なお、この最終燃料噴射量TOUTiにおける添字「i」は、気筒の番号を表す気筒番号値であり(i=1〜4)、この点は、上記空燃比ばらつき補正係数KOBSVi、学習補正値KOBSV_LSiおよび後述する各パラメータなどにおいても、同様である。
なお、本実施形態では、ECU2により、模擬値生成手段、推定手段、同定手段、第1制御手段、第2制御手段、学習補正値算出手段、補正手段、入力手段および遅延手段が構成されている。
図2に示すように、制御装置1は、基本燃料噴射量算出部20、第1空燃比コントローラ30、第2空燃比コントローラ40および付着補正部50などを備えており、これらはいずれも、具体的には、ECU2により構成されている。この制御装置1では、燃料量決定手段としての基本燃料噴射量算出部20により、基本燃料噴射量TIBSが、吸入空気量GAIRに応じて、図示しないテーブルを検索することにより算出される。
また、後述するように、第1空燃比コントローラ30により、気筒間の空燃比のばらつきを補正するために、空燃比ばらつき補正係数KOBSViおよびその学習補正値KOBSV_LSiがそれぞれ算出され、第2空燃比コントローラ40により、検出空燃比KACTを目標空燃比KCMDに収束させるために、フィードバック補正係数KSTRが算出される。そして、基本燃料噴射量TIBSに、補正目標空燃比KCMDM、総補正係数KTOTAL、フィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSVi、および学習補正値KOBSV_LSiがそれぞれ乗算されることにより、要求燃料噴射量TCYLiが気筒毎に算出される。次いで、付着補正部50により、最終燃料噴射量TOUTiが、要求燃料噴射量TCYLiに基づいて気筒毎に算出される。
次に、上記第1空燃比コントローラ30について説明する。この第1空燃比コントローラ30は、気筒間の空燃比のばらつきを補正するためのものであり、適応オブザーバ31、空燃比ばらつき補正係数算出部32、学習補正値算出部33および乗算部34で構成されている。
この第1空燃比コントローラ30では、以下に述べるアルゴリズムにより、適応オブザーバ31(模擬値生成手段、推定手段、同定手段、遅延手段)において、空燃比ばらつき係数Φiが気筒毎に算出され、空燃比ばらつき補正係数算出部32(第1制御手段)において、空燃比ばらつき補正係数KOBSViが気筒毎に算出され、学習補正値算出部33(学習補正値算出手段)において、空燃比ばらつき補正係数の学習補正値KOBSV_LSiが気筒毎に算出される。さらに、乗算部34(補正手段)により、空燃比ばらつき補正係数KOBSV1〜KOBSV4に、学習補正値KOBSV_LS1〜KOBSV_LS4がそれぞれ乗算される。すなわち、空燃比ばらつき補正係数KOBSViが学習補正値KOBSV_LSiにより補正される。
次に、上記適応オブザーバ31のアルゴリズムについて説明する。まず、図3に示すように、エンジン3の排気系を、4つの模擬値KACT_OS1〜KACT_OS4および4つの空燃比ばらつき係数Φ1〜Φ4で表される系として見なす。これらの模擬値KACT_OSiは、排気ガスの排出タイミングおよび排気挙動を気筒毎に模擬化した値であり、空燃比ばらつき係数Φiは、気筒間の排気ガスの空燃比のばらつきおよび排気挙動の変動分を表す値である。この系を離散時間系モデルとしてモデル化すると、図4に示す式(1)が得られる。同式(1)において、記号kは離散化した時間を表しており、記号(k)付きの各離散データ(時系列データ)は、TDC信号が発生する毎にサンプリングされたデータであることを示している。この点は、以下の本明細書中の他の離散データにおいても同様である(なお、離散データを、CRK信号が発生する毎にサンプリングしたデータとしてもよい)。また、dは、各気筒から排出された排気ガスがLAFセンサ14に到達するまでのむだ時間(所定の遅延時間)を表しており、本実施形態では、所定の一定値に予め設定される。なお、むだ時間dをエンジン3の運転状態(エンジン回転数NEなど)に応じて設定してもよい。
本実施形態の適応オブザーバ31では、上記式(1)の左辺を検出空燃比の推定値KACT_EST(k)に置き換えた式、すなわち図4の式(2)がモデルとして用いられ、模擬値KACT_OSiが、後述するように信号発生器31aにより生成されるとともに、式(2)のモデルパラメータとしての空燃比ばらつき係数Φiのベクトルφ(k)が、推定値KACT_EST(k)が検出空燃比KACT(k)に一致するように、図4の式(3)〜(9)に示す可変ゲイン型の逐次型最小2乗法アルゴリズムにより、同定される。
同式(3)におけるKP(k)はゲイン係数のベクトルを、ide(k)は同定誤差をそれぞれ表している。また、式(4)におけるφ(k)Tは、φ(k)の転置行列を表している。なお、以下の説明では、「ベクトル」という表記を適宜、省略する。式(3)の同定誤差ide(k)は、図4の式(5)〜(7)により算出され、この式(6)のζ(k)は、式(7)のように定義される模擬値のベクトルである。さらに、上記ゲイン係数のベクトルKP(k)は、図4の式(8)により算出され、この式(8)のP(k)は、図4の式(9)で定義される4次の正方行列である。
この適応オブザーバ31では、以上の式(2)〜(9)に示す逐次型最小2乗法アルゴリズムにより、空燃比ばらつき係数Φiのベクトルφ(k)が同定される。それにより、エンジン3の運転状態が急変することなどに伴う排気挙動のノイズ的な変動成分を、空燃比ばらつき係数Φiから除去(フィルタリング)することができ、空燃比ばらつき係数Φiを、気筒間の空燃比のばらつきを実質的に示す値として算出することができる。
以上の適応オブザーバ31の構成を、ブロック図で表すと図5に示すものとなる。すなわち、同図に示すように、この適応オブザーバ31では、信号発生器31aにより、模擬値KACT_OSiのベクトルζ(k)が生成される。具体的には、この信号発生器31aでは、図6に示すように、模擬値KACT_OSiは、互いの和が常に値1になるように、三角波や台形波などを交互に組み合わせたような波形の信号値として生成される。さらに、乗算器31bにおいて、この模擬値のベクトルζ(k)に、空燃比ばらつき係数のベクトルφ(k−1)を乗算した値として、検出空燃比の推定値KACT_EST(k)が生成される。そして、差分器31dにより、検出空燃比KACT(k)と推定値KACT_EST(k)との偏差として、同定誤差ide(k)が生成される。
また、論理演算器31eにより、模擬値のベクトルζ(k)に基づいて、ゲイン係数のベクトルKP(k)が生成され、乗算器31fにおいて、同定誤差ide(k)とゲイン係数のベクトルKP(k)の積[ide(k)・KP(k)]が生成される。次に、加算器31gにより、積[ide(k)・KP(k)]と、遅延された空燃比ばらつき係数のベクトルφ(k−1)との和として、空燃比ばらつき係数のベクトルφ(k)が生成される。
次に、前記空燃比ばらつき補正係数算出部32における、空燃比ばらつき補正係数KOBSVi(第1入力)を算出するアルゴリズムについて説明する。この空燃比ばらつき補正係数算出部32では、まず、図7の式(10)により、適応オブザーバ31で気筒毎に算出された空燃比ばらつき係数Φi(k)に基づき、空燃比ばらつき係数の移動平均値Φave(k)が算出される。次に、空燃比ばらつき係数Φi(k)を移動平均値Φave(k)に収束させるように、空燃比ばらつき補正係数KOBSViをI−PD制御(比例・微分先行型PID制御)アルゴリズムにより気筒毎に算出する。このI−PD制御アルゴリズムは、図7の式(11),(12)に示すものとなる。この式(12)のe(k)は、追従誤差を表す。
以上のように、空燃比ばらつき補正係数算出部32では、I−PD制御アルゴリズムにより、空燃比ばらつき係数Φi(k)をその移動平均値Φave(k)に収束させるように、空燃比ばらつき補正係数KOBSViが算出される。これは、空燃比ばらつき係数Φi(k)の移動平均値Φave(k)への収束挙動において、オーバーシュートが発生しないように制御することにより、第1空燃比コントローラ30による、気筒間の空燃比のばらつきを補正する空燃比制御が、後述する第2空燃比コントローラ40による空燃比制御と互いに干渉し合うのを回避するためである。
次に、前記学習補正値算出部33による、空燃比ばらつき補正係数KOBSViの学習補正値KOBSV_LSiを算出するアルゴリズムについて説明する。上記空燃比ばらつき補正係数KOBSViは、エンジン3の運転状態の影響を受けやすいものであるため、エンジン3の運転状態が変化すると、それに応じて変化する。図8(a)は、エンジン3の運転状態を表す運転状態パラメータとしての排気ガスボリュームESV(k)と空燃比ばらつき補正係数KOBSVi(k)との関係を示している。この排気ガスボリュームESV(k)(第2内部変数、運転状態パラメータ)は、空間速度の推定値であり、図9の式(13)により算出される。なお、同式(13)において、SVPRAは、エンジン3の排気量によって予め決定される所定の係数である。
図8(a)を参照すると、空燃比ばらつき補正係数KOBSVi(k)においては、これを従属変数とし、排気ガスボリュームESV(k)を独立変数とする1次式により、空燃比ばらつき補正係数KOBSVi(k)の近似値すなわち推定値を算出できることが判る(図8(b)参照)。したがって、学習補正値算出部33では、空燃比ばらつき補正係数の学習補正値KOBSV_LSi(k)を、図9の式(14)に示す回帰式により算出される推定値として定義するとともに、その回帰係数AOBSV_LSiおよび定数項BOBSV_LSiのベクトル(以下「回帰係数ベクトル」という)θOBSV_LSi(k)が、図9の式(15)〜(21)に示す逐次型最小2乗法により算出される。
この式(15)において、KQi(k)はゲイン係数のベクトルを、Eovi(k)は誤差をそれぞれ表している。また、この誤差Eovi(k)は、図9の式(17)〜(19)により算出される。さらに、上記ゲイン係数のベクトルKQi(k)は、図9の式(20)により算出され、この式(20)のQi(k)は、図9の式(21)で定義される2次の正方行列である。
また、学習補正値KOBSV_LSi(k)は、具体的には、図9の式(22)により算出される。なお、後述するように、エンジン3が極端な運転状態または運転環境にあるときには、以上の逐次型最小2乗法による回帰係数AOBSV_LSiおよび定数項BOBSV_LSiの算出は回避され、その回帰係数ベクトルの前回値θOBSV_LSi(k−1)が、学習補正値KOBSV_LSi(k)の算出において、今回値θOBSV_LSi(k)として使用される。
以上の式(13),(15)〜(22)に示すアルゴリズムにより、学習補正値算出部33では、学習補正値KOBSV_LSi(k)が、これと空燃比ばらつき補正係数KOBSVi(k)との積に収束するように、算出される。
次に、前記第2空燃比コントローラ40(第2制御手段)について説明する。この第2空燃比コントローラ40は、具体的には、オンボード同定器41およびSTRコントローラ42を備えたSTR(Self Tuning Regulator)として構成されている。この第2空燃比コントローラ40では、検出空燃比KACTを目標空燃比KCMD(所定の目標値)に収束させるように、フィードバック補正係数KSTRが算出される。より具体的には、以下に述べるアルゴリズムにより、オンボード同定器41で1番気筒#1のモデルパラメータベクトルθが同定され、STRコントローラ42でフィードバック補正係数KSTR(第2入力)が算出される。
まず、1番気筒#1を、フィードバック補正係数KSTRを入力とし、検出空燃比KACTを出力とする制御対象として見なすとともに、この制御対象を離散時間系モデルとしてモデリングすると、図10の式(23)に示すものとなる。同式(23)において、記号nは離散化した時間を表しており、記号(n)付きの各離散データは、1燃焼サイクル毎すなわちのTDC信号が連続して4回発生する毎にサンプリングされたデータであることを示している。この点は、以下の離散データにおいても同様である。
ここで、目標空燃比KCMDに対する検出空燃比KACTのむだ時間は、燃焼サイクル3回分程度と推定されるので、KCMD(n)=KACT(n+3)の関係が成立し、これを式(23)に適用すると、図10の式(24)が導出される。
また、式(23)のモデルパラメータb0(n),r1(n),r2(n),r3(n),s0(n)のベクトルθ(n)は、図に示す式(25)〜(31)の同定アルゴリズムにより同定される。同式(25)におけるKΓ(n)はゲイン係数のベクトルを、ide_st(n)は同定誤差をそれぞれ表している。また、式(26)におけるθ(n)Tは、θ(n)の転置行列を表している。
上記式(25)の同定誤差ide_st(n)は、図10の式(27)〜(29)により算出され、式(28)のKACTHAT(n)は、検出空燃比KACTの同定値を表している。さらに、上記ゲイン係数のベクトルKΓ(n)は、図10の式(30)により算出され、この式(30)のΓ(n)は、図10の式(31)で定義される5次の正方行列である。
本実施形態のような制御系では、以上の式(24)〜(31)のアルゴリズムにより空燃比制御を実行した場合、LAFセンサ14のローパス特性が強いときに、モデルパラメータベクトルθの更新周期の整数倍の周期で、制御系の共振が起きることがある。それを解消するために、本実施形態の第2空燃比コントローラ40では、以下のように、フィードバック補正係数KSTRを算出する。
すなわち、本実施形態の第2空燃比コントローラ40では、オンボード同定器41により同定された1番気筒#1のモデルパラメータベクトルθを、TDC信号の発生タイミングに同期してオーバーサンプリングするとともに、その移動平均値θ_aveを算出する。具体的には、モデルパラメータベクトルθの移動平均値θ_ave(k)を、図11の式(32)により算出するとともに、これを用いて、図11の式(34)により、フィードバック補正係数KSTR(k)を算出する。なお、式(32)におけるθbufは、1番気筒#1のモデルパラメータベクトルθのオーバーサンプリング値を示しており、移動平均値θ_ave(k)は、図11の式(33)のように規定される。また、式(32)のmは、所定の整数であり、本実施形態では、m=11に設定される。
前述したように、これらの式(32)〜(34)における記号(k)付きの各離散データは、TDC信号の発生タイミングに同期してサンプリングされたデータであるので、n−f=k−4・f(f:整数)の関係が成立し、これを図10の式(24)に適用すると、上記式(34)が導出される。さらに、モデルパラメータベクトルθ(k)を同定する同定アルゴリズムは、図11の式(35)〜(41)に示すものとなる。
以上のように、本実施形態の第2空燃比コントローラ40のオンボード同定器41では、図11の式(35)〜(41)に示す同定アルゴリズムによって、モデルパラメータベクトルθが同定され、STRコントローラ42では、図11の式(32)〜(34)により、フィードバック補正係数KSTR(k)が算出される。
以下、ECU2により実行される空燃比制御について、図12〜図17を参照しながら説明する。なお、以下の説明では、今回値であることを示す記号(k),(n)を適宜、省略する。図12は、この制御処理のメインルーチンを示しており、本処理は、TDC信号の入力に同期して割り込み実行される。この処理では、以下に述べるように、最終燃料噴射量TOUTiが気筒毎に算出される。
まず、ステップ1(図では「S1」と略す。以下同じ)において、前述した各種のセンサ9〜19の出力を読み込むとともに、読み込んだデータをRAM内に記憶する。
次に、ステップ2に進み、基本燃料噴射量TIBSを算出する。この処理では、吸入空気量GAIRに応じて、図示しないテーブルを検索することにより、基本燃料噴射量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において、1番気筒#1のモデルパラメータベクトルθおよびフィードバック補正係数KSTRをそれぞれ算出する。これらの算出処理については、後述する。
次いで、ステップ8〜10において、空燃比ばらつき係数のベクトルφ、空燃比ばらつき補正係数KOBSViおよびその学習補正値KOBSV_LSiをそれぞれ算出する。これらの算出処理については、後述する。
次に、ステップ11に進み、以上のように算出した基本燃料噴射量TIBS、総補正係数KTOTAL、補正目標空燃比KCMDM、フィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSViおよび学習補正値KOBSV_LSiを用い、下式(42)により要求燃料噴射量TCYLiを算出する。
TCYLi=TIBS・KTOTAL・KCMDM・KSTR・KOBSVi・KOBSV_LSi ……(42)
次いで、ステップ12に進み、要求燃料噴射量TCYLiを付着補正することにより、最終燃料噴射量TOUTiを算出する。この最終燃料噴射量TOUTiは、具体的には、今回の燃焼サイクルでインジェクタ6から噴射された燃料が燃焼室の内壁面に付着する割合などを、エンジン3の運転状態に応じて算出し、そのように算出した割合に基づいて、要求燃料噴射量TCYLiを補正することにより、算出される。
次に、ステップ13に進み、以上のように算出した最終燃料噴射量TOUTiに基づく駆動信号を、対応する気筒のインジェクタ6に出力した後、本処理を終了する。
次に、前記ステップ6のモデルパラメータベクトルθの算出処理について説明する。この処理では、まず、ステップ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……」の順に、繰り返し設定される。
次いで、ステップ21に進み、上記ステップ20で設定された気筒番号値iが値1であるか否かを判別する。この判別結果がYESで、1番気筒#1のモデルパラメータベクトルθを算出すべきときには、ステップ22に進み、RAMに記憶されている、前回のループでのモデルパラメータベクトルθの算出値を、その前回値PRVθ[=θ(n−1)]として設定する。
次に、ステップ23に進み、前述した図11の式(39)により、ベクトルξを算出した後、ステップ24で、前述した図11の式(38)により、KACTの同定値KACT_HATを算出する。
次いで、ステップ25に進み、前述した図11の式(37)により、同定誤差ide_stを算出した後、ステップ26で、RAMに記憶されている、前回のループでの正方行列の次回値NEXΓ[=Γ(n+1)]の算出値を、その今回値Γとして設定する。
次に、ステップ27に進み、前述した図11の式(40)により、ゲイン係数のベクトルKΓを算出した後、ステップ28に進み、前述した図11の式(35)により、モデルパラメータベクトルθを算出する。
次いで、ステップ29に進み、前述した図11の式(41)により、正方行列の次回値NEXΓを算出した後、ステップ30に進み、RAMに記憶されている、前回以前の所定個数(本実施形態では12個)の検出空燃比KACTの値を更新する。具体的には、RAM内のKACTの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値KACT(k)を前回値KACT(k−1)として、前回値KACT(k−1)を前々回値KACT(k−2)としてそれぞれセットする)。
次いで、ステップ31に進み、RAMに記憶されている、所定個数(本実施形態では12個)の1番気筒#1のモデルパラメータベクトルθのオーバーサンプリング値θbufを更新する。具体的には、上記ステップ30と同様に、RAM内のθbufの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値θbuf(k)を前回値θbuf(k−1)として、前回値θbuf(k−1)を前々回値θbuf(k−2)としてそれぞれセットする)。この後、本処理を終了する。
一方、前記ステップ21の判別結果がNOで、モデルパラメータベクトルθを算出する必要がないときには、ステップ22〜29をスキップし、ステップ30,31を上記のように実行した後、本処理を終了する。
次に、図14を参照しながら、前記ステップ7のフィードバック補正係数KSTRの算出処理について説明する。この処理では、まず、ステップ40において、前述した図11の式(32)により、モデルパラメータベクトルの移動平均値θ_aveを、上記ステップ31で更新されたオーバーサンプリング値θbufに基づいて算出する。
次いで、ステップ41で、前述した図11の式(34)により、上記ステップ41で算出した移動平均値θ_aveに基づき、フィードバック補正係数KSTRを算出する。
次に、ステップ42に進み、RAMに記憶されている、前回以前の所定個数(本実施形態では12個)のフィードバック補正係数KSTRの値を更新する。具体的には、RAM内のKSTRの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値KSTR(k)を前回値KSTR(k−1)として、前回値KSTR(k−1)を前々回値KSTR(k−2)としてそれぞれセットする)。この後、本処理を終了する。
次に、図15を参照しながら、前記ステップ8の空燃比ばらつき係数のベクトルφの算出処理について説明する。この処理では、まず、ステップ50において、RAMに記憶されている、前回のループでの空燃比ばらつき係数のベクトルφの算出値を、その前回値PRVφ[=φ(k−1)]として設定する。
次いで、ステップ51に進み、前記図4の式(7)により、模擬値のベクトルζを算出した後、ステップ52に進み、前記図4の式(6)により、検出空燃比の推定値KACT_ESTを算出する。
次に、ステップ53に進み、前述した図4の式(5)により、同定誤差ideを算出した後、ステップ54に進み、RAMに記憶されている、前回のループでの正方行列の次回値NEXP[=P(k+1)]の算出値を、その今回値Pとして設定する。
次いで、ステップ55に進み、前述した図4の式(8)により、ゲイン係数のベクトルKPを算出した後、ステップ56に進み、前述した図4の式(3)により、空燃比ばらつき係数のベクトルφを算出する。
次に、ステップ57に進み、前述した図4の式(9)により、正方行列の次回値NEXP[=P(k+1)]を算出した後、ステップ58に進み、RAMに記憶されている所定個数(本実施形態では12個)の模擬値KACT_OSiの時系列データを更新する。具体的には、RAM内の模擬値KACT_OSiの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値KACT_OSi(k)を前回値KACT_OSi(k−1)として、前回値KACT_OSi(k−1)を前々回値KACT_OSi(k−2)としてそれぞれセットする)。
次いで、ステップ59に進み、模擬値の今回値KACT_OSiを算出した後、本処理を終了する。
次に、図16を参照しながら、前記ステップ9の空燃比ばらつき補正係数KOBSViの算出処理について説明する。この処理では、まず、ステップ70において、前述した図7の式(10)により、空燃比ばらつき係数の移動平均値Φaveを算出する。
次いで、ステップ71に進み、前述した図7の式(12)により、追従誤差eを算出した後、ステップ72で、追従誤差の積分値Σeを算出する。次に、ステップ73に進み、上記ステップ70,72で算出した空燃比ばらつき係数の移動平均値Φaveおよび追従誤差の積分値Σeを用い、前述した図7の式(11)により、空燃比ばらつき補正係数KOBSViを算出した後、本処理を終了する。
次に、図17を参照しながら、前記ステップ10における空燃比ばらつき補正係数の学習補正値KOBSV_LSiの算出処理について説明する。この処理では、まず、ステップ80において、前述した図9の式(13)により、排気ガスボリュームESVを算出する。
次いで、ステップ81に進み、RAMに記憶されている、前回のループでの回帰係数ベクトルθOBSV_LSiの算出値を、その前回値PRVθOBSV_LSi[=θOBSV_LSi(k−1)]として設定する。
次に、ステップ82に進み、前述した図9の式(22)により、学習補正値KOBSV_LSiを算出する。この後、ステップ83に進み、下記の5つの条件(a1)〜(a5)がいずれも成立しているか否かを判別する。
(a1)エンジン水温TWが所定の下限値TWOBSLより高くかつ所定の上限値TWOBSHよりも低いこと。
(a2)吸気温TAが所定の下限値TAOBSLより高くかつ所定の上限値TAOBSHよりも低いこと。
(a3)エンジン回転数NEが所定の下限値NEOBSLより高くかつ所定の上限値NEOBSHよりも低いこと。
(a4)吸気管内絶対圧PBAが所定の下限値PBOBSLより高くかつ所定の上限値PBOBSHよりも低いこと。
(a5)車速VPが所定の下限値VPOBSLより高くかつ所定の上限値VPOBSHよりも低いこと。
以上の5つの条件(a1)〜(a5)がいずれも成立しているときには、逐次型最小2乗法により、回帰係数ベクトルθOBSV_LSiを算出すべき運転状態にあるとして、ステップ84に進み、前述した図9の式(19)により、排気ガスボリュームのベクトルZを算出する。
次に、ステップ85に進み、前述した図9の式(17)により、誤差Eoviを算出した後、ステップ86に進み、RAMに記憶されている、前回のループでの正方行列の次回値NEXQi[=Qi(k+1)]の算出値を、その今回値Qiとして設定する。
次いで、ステップ87に進み、前述した図9の式(20)により、ゲイン係数のベクトルKQiを算出した後、ステップ88に進み、前述した図9の式(15)により、回帰係数ベクトルθOBSV_LSiを算出する。次に、ステップ89に進み、前述した図9の式(21)により、正方行列の次回値NEXQi[=Qi(k+1)]を算出した後、本処理を終了する。
一方、前記ステップ83の判別結果がNOで、前記5つの条件(a1)〜(a5)の少なくとも1つが成立していないときには、ステップ90に進み、前記ステップ81で設定した回帰係数ベクトルの前回値PRVθOBSV_LSiを、今回値θOBSV_LSiに設定した後、本処理を終了する。これにより、例えば次回のループでのステップ81の処理において、回帰係数ベクトルの前回値PRVθOBSV_LSiとして、今回のループでステップ84〜89の逐次型最小2乗法により算出された値が用いられる。
次に、図18および図19を参照しながら、以上の制御装置1により空燃比を制御した場合の動作について説明する。図18は、本実施形態の制御装置1により空燃比を制御した場合を示しており、より具体的には、第2空燃比コントローラ40により、検出空燃比KACTが値1(理論空燃比に相当する当量比)になるように制御している場合において、第1空燃比コントローラ30を停止状態から作動させたとき、すなわち、第1空燃比コントローラ30により、空燃比ばらつき係数Φi、空燃比ばらつき補正係数KOBSViおよび学習補正値KOBSV_LSiの算出を開始したときの動作例を示している。
また、図19は、比較のために、学習補正値KOBSV_LSiを、前述した式(11),(12)のI−PD制御アルゴリズムに代えて、通常のPID制御アルゴリズム(図20の式(43),(44)に示すアルゴリズム)により算出した場合の動作の比較例を示している。また、両図において、KACT1〜4の値はそれぞれ、1番〜4番気筒#1〜#4から排出された、互いに混じり合っていない状態の排気ガス中の空燃比(当量比換算値)を表しており、具体的には、4つの測定用のLAFセンサ(図示せず)を、エキゾーストマニホールド7aの気筒#1〜#4の排気ポートの直後の部分に追加して設けるとともに、これらのLAFセンサの出力に基づいてKACT1〜4の値が算出される。
図18に示すように、本実施形態の動作例では、第1空燃比コントローラ30が停止されているときには、各気筒から排出された排気ガスの空燃比を表すKACT1〜4が不安定な状態となり、その影響で、検出空燃比KACTも若干、不安定な状態となる。しかし、第1空燃比コントローラ30が作動すると(時刻t1)、若干の時間が経過した後、KACT1〜4がいずれも値1(理論空燃比に相当する当量比)に収束し、それに伴って、検出空燃比KACTも値1に収束していることが判る。すなわち、気筒間の空燃比のばらつきが適切に補正されていることが判る。また、空燃比ばらつき補正係数および学習補正値の積KOBSVi・KOBSV_LSi(i=1〜4)の値も安定していることが判る。
これに対して、図19の比較例では、第1空燃比コントローラ30が作動した時点(時刻t2)から、KACT1〜4がいずれも値1に収束するまでの整定時間が本実施形態の動作例よりも長く、それに伴い、検出空燃比KACTも値1になかなか収束しないことが判る。これに加えて、空燃比ばらつき補正係数および学習補正値の積KOBSVi・KOBSV_LSiの値もなかなか安定しないことが判る。すなわち、本実施形態のように、I−PD制御アルゴリズムを用いることにより、通常のPID制御アルゴリズムを用いた場合と比べて、気筒間の空燃比のばらつきを迅速かつ適切に補正できることが判る。これは、I−PD制御アルゴリズムの方が、PID制御アルゴリズムよりも、空燃比ばらつき係数Φiの移動平均値Φaveへの収束挙動において、オーバーシュートが発生しないように、学習補正値KOBSV_LSiを算出できることによる。
以上のように、本実施形態の制御装置1によれば、第1空燃比コントローラ30により、空燃比ばらつき係数Φiが算出され、これが移動平均値Φaveに収束するように、空燃比ばらつき補正係数KOBSViが算出され、その学習補正値KOBSV_LSiが算出される。また、第2空燃比コントローラ40により、検出空燃比KACTが目標空燃比KCMDに収束するように、フィードバック補正係数KSTRが算出される。そして、算出されたフィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSViおよび学習補正値KOBSV_LSiによって、基本燃料噴射量TIBSが補正されることにより、最終燃料噴射量TOUTiが気筒毎に算出される。
この第1空燃比コントローラ30の適応オブザーバ31では、検出空燃比KACTの推定値KACT_ESTが、これと、模擬値KACT_OSiおよび空燃比ばらつき係数Φiとにより定義されるモデル[式(2)]を用いることによって推定され、さらに、この推定値KACT_ESTが検出空燃比KACTに一致するように、モデルパラメータとしての空燃比ばらつき係数Φiが逐次型最小2乗法により同定される。これにより、エンジン3の運転状態が急変することなどに伴う排気挙動のノイズ的な変動成分を、空燃比ばらつき係数Φiから除去(フィルタリング)することができ、空燃比ばらつき係数Φiを、気筒間の空燃比のばらつきを実質的に示す値として算出することができる。したがって、そのような空燃比ばらつき係数Φiに基づいて算出された空燃比ばらつき補正係数KOBSViにより、基本燃料噴射量TIBSが気筒毎に補正されるので、各気筒での燃料付着による検出空燃比KACTへの各気筒の寄与度の変化、LAFセンサ14の応答ばらつきおよび経年変化などによって、制御対象の動特性が変化したときでも、従来と異なり、制御対象の動特性の変化をモデルに反映させながら、気筒間の空燃比のばらつきを補正するように、最終燃料噴射量TOUTiを気筒毎に算出することができる。その結果、第1実施形態のように、複雑な排気レイアウトを有するエンジン3の空燃比を制御する場合でも、安定余裕が大きく、ロバスト性の高い空燃比制御を実現することができ、良好な触媒浄化率を確保することができる。
また、第1空燃比コントローラ30では、空燃比ばらつき補正係数KOBSViがI−PD制御アルゴリズムにより算出されるので、空燃比ばらつき係数Φiの移動平均値Φaveへの収束挙動において、オーバーシュートが発生しないように、空燃比ばらつき補正係数KOBSViを算出することができる。これより、各気筒の空燃比の挙動が振動的になるのを回避しながら、気筒間の空燃比のばらつきを補正できる。さらに、空燃比ばらつき補正係数KOBSViが、空燃比ばらつき係数Φiを移動平均値Φaveに収束させるように算出されるので、第1空燃比コントローラ30による空燃比制御が、第2空燃比コントローラ40による空燃比制御と互いに干渉し合うのを回避しながら、気筒間の空燃比のばらつきを補正できる。
さらに、第1空燃比コントローラ30では、空燃比ばらつき補正係数KOBSViの学習補正値KOBSV_LSiが、排気ガスボリュームESVを独立変数とする回帰式[式(22)]により算出されるとともに、この回帰式の回帰係数AOBSV_LSiおよび定数項BOBSV_LSiのベクトルである回帰係数ベクトルθOBSV_LSiが、逐次型最小2乗法により算出される。そのため、エンジン3が過渡運転状態などの急激に変化する運転状態にあることで、その影響により気筒間の空燃比のばらつき状態が急激に変化するときでも、学習補正値KOBSV_LSiを気筒間の空燃比のばらつき状態が適切に反映された値として算出することができる。その結果、エンジン3が過渡運転状態にあるときでも、気筒間の空燃比のばらつきを補償しながら、空燃比を適切に制御することができる。
また、空燃比ばらつき係数Φiおよび回帰係数ベクトルθOBSV_LSiが、逐次型最小2乗法により算出されるので、統計アルゴリズムとして一般的な最小2乗法を用いる場合と比べて、空燃比制御の開始時でも、空燃比ばらつき補正係数KOBSViおよび学習補正値KOBSV_LSiを制御サイクル毎に算出することができる。したがって、例えば、KOBSVi,KOBSViの初期値を予め設定しておくことにより、空燃比制御の開始時、制御サイクル毎に算出された学習補正値KOBSV_LSiと、空燃比ばらつき補正係数KOBSViとの積により常に補正された値として、最終燃料噴射量TOUTiを算出することができ、空燃比制御の開始時における制御性を向上させることができる。それにより、空燃比制御の開始時における触媒浄化率をさらに向上させることができる。
なお、第1実施形態は、学習補正値KOBSV_LSiの算出に用いる回帰式として1次式を用いた例であるが、回帰式はこれに限らず、n次式(nは2以上の整数)でもよい。そのようにした場合でも、n次式の回帰係数および定数項を逐次型最小2乗法で算出することにより、第1実施形態と同様の作用効果を得ることができる。また、回帰式の回帰係数および定数項として、複数の運転領域毎に予め設定された所定値を用いることにより、学習補正値KOBSV_LSiを算出してもよい。このようにすれば、学習補正値KOBSV_LSiの演算時間を短縮することができ、ECU2の演算負荷を低減することができる。
また、空燃比ばらつき係数Φiをその移動平均値Φaveに収束させるために、空燃比ばらつき補正係数KOBSViを算出する制御アルゴリズムは、第1実施形態のI−PD制御アルゴリズムに限らず、他の制御アルゴリズムを用いてもよいことは言うまでもない。例えば、I−PD制御アルゴリズムに代えて、図20の式(45),(46)に示すIP−D制御アルゴリズム(微分先行型PID制御アルゴリズム)を用いることにより、空燃比ばらつき補正係数KOBSViを算出してもよく、また、同図の式(47)〜(49)に示す応答指定型制御アルゴリズム(スライディングモード制御アルゴリズムまたはバックステッピング制御アルゴリズム)を用いることにより、空燃比ばらつき補正係数KOBSViを算出してもよい。これらの制御アルゴリズムを用いた場合でも、実施形態のI−PD制御アルゴリズムを用いた場合と同様に、空燃比ばらつき係数Φiの移動平均値Φaveへの収束挙動において、オーバーシュートが発生しないように、空燃比ばらつき補正係数KOBSViを算出することができ、その結果、気筒間の空燃比のばらつきを迅速かつ適切に補正できる。
さらに、以上のように、空燃比ばらつき補正係数KOBSViの算出において、I−PD制御アルゴリズム、IP−D制御アルゴリズムおよび応答指定型制御アルゴリズムを用いた場合には、そのフィードバックゲインを最適レギュレータ理論またはH∞制御理論に基づいて決定してもよい。このようにすれば、空燃比ばらつき係数Φiの移動平均値Φaveへの収束挙動において、オーバーシュートの発生をより効果的に抑制でき、その結果、気筒間の空燃比のばらつき補正の精度をさらに向上させることができる。
また、空燃比ばらつき係数Φiが移動平均値Φaveに収束するまでの整定時間が長くてもよい場合には、前述した図20の式(43),(44)に示すPID制御アルゴリズムにより、空燃比ばらつき補正係数KOBSViを算出してもよいことは言うまでもない。さらに、空燃比ばらつき係数Φiを収束させる目標値としての空燃比ばらつき係数の平均値は、実施形態の移動平均値Φaveに限らず、加重平均値などでもよい。
さらに、第1実施形態の第1空燃比コントローラ30の適応オブザーバ31は、図4の式(3)〜(9)に示す可変ゲイン型の逐次型最小2乗法により、空燃比ばらつき係数のベクトルφ(k)を同定した例であるが、適応オブザーバ31における空燃比ばらつき係数のベクトルφ(k)の同定アルゴリズムは、これに限らないことは言うまでもない。例えば、図21の式(50)〜(57)に示すδ修正法を適用した固定ゲイン法により、空燃比ばらつき係数のベクトルφ(k)を同定してもよい。
同図の式(50)のφbaseは、式(51)のように定義される基準値ベクトル(モデルパラメータ基準値)であり、このベクトルの4つの要素である基準値Φbase1〜Φbase4は、排気ガスボリュームESVに応じて、図22に示すテーブルを検索することにより算出される。同図に示すように、4つの基準値Φbase1〜Φbase4は、いずれも値1付近の値として設定されている。また、式(50)のdφ(k)は、式(52)のように定義される補正項(補正成分)であり、式(53)〜(57)により算出される。
以上のδ修正法を適用した固定ゲイン法により、空燃比ばらつき係数のベクトルφ(k)を同定した場合には、逐次型最小2乗法の場合と比べて、演算時間を短縮でき、ECU2における演算負荷を低減できる。その結果、ECU2の小型化・低コスト化を図ることができる。これに加えて、ベクトルφ(k)の同定値を、値1の付近に拘束できるので、エンジン3が過渡運転状態などの空燃比の変化が激しい運転状態にあるときでも、気筒間の空燃比のばらつきを表す空燃比ばらつき係数のベクトルφ(k)を、空燃比の挙動が適切に反映された値として、迅速かつ適切に算出することができ、空燃比制御の安定性を向上させることができる。
なお、上記の固定ゲイン法において、図22に示すテーブルが予め準備できない場合には、4つの要素Φbase1〜Φbase4をいずれも、値1に設定してもよい。
また、図12のステップ2における基本燃料噴射量TIBSの算出手法は、基本燃料噴射量TIBSを、吸入空気量GAIRに応じてテーブルを検索することにより算出した第1実施形態の例に限らず、例えば、吸気管内絶対圧PBAおよびエンジン回転数NEに応じて、マップ検索することにより、基本燃料噴射量TIBSを算出する手法でもよい。
次に、本発明の第2実施形態に係る制御装置1について説明する。この制御装置1は、前述した第1実施形態の制御装置1と比べると、図23,24に示すように、第3空燃比コントローラ60を備える点のみが異なっており、それ以外は同様に構成されている。したがって、以下、この第3空燃比コントローラ60を中心に説明するとともに、第1実施形態と同じ構成要素については、同一の参照番号を付し、その説明は適宜、省略する。
この制御装置1では、後述するように、第3空燃比コントローラ60により、気筒間の吸入空気量のばらつきを補正するために、吸気量ばらつき補正係数KICYLiおよびその学習補正値KICYL_LSiがそれぞれ算出される。そして、基本燃料噴射量TIBSに、補正目標空燃比KCMDM、総補正係数KTOTAL、フィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSVi、、空燃比ばらつき補正係数の学習補正値KOBSV_LSi、吸気量ばらつき補正係数KICYLiおよび吸気量ばらつき補正係数の学習補正値KICYL_LSiがそれぞれ乗算されることにより、要求燃料噴射量TCYLiが気筒毎に算出される。次いで、付着補正部50により、最終燃料噴射量TOUTiが、要求燃料噴射量TCYLiに基づいて気筒毎に算出される。
次に、第3空燃比コントローラ60について説明する。図25に示すように、エアフローセンサ9によりエンジン3への吸入空気量GAIRを検出した場合、各気筒の吸気挙動に起因して吸気の脈動も検出される。この吸気の脈動は、気筒間に吸入空気量のばらつきが生じた場合には、同図に示すように、不規則なものとなる。すなわち、同図は、4番気筒#4における吸入空気量が他の気筒よりも少ない例を示している。
この第3空燃比コントローラ60は、上記のような気筒間の吸入空気量のばらつきを推定し、それに応じて燃料噴射量を補正するためのものであり、適応オブザーバ61、吸気量ばらつき補正係数算出部62、学習補正値算出部63および乗算部64で構成されている。この第3空燃比コントローラ60では、以下に述べるアルゴリズムにより、適応オブザーバ61(模擬値生成手段、推定手段、同定手段、遅延手段)において、吸気量ばらつき係数Ψiが気筒毎に算出され、吸気量ばらつき補正係数算出部62(第1制御手段)において、吸気量ばらつき補正係数KICYLiが気筒毎に算出され、学習補正値算出部63(学習補正値算出手段)において、吸気量ばらつき補正係数の学習補正値KICYL_LSiが気筒毎に算出される。さらに、乗算部64(補正手段)により、吸気量ばらつき補正係数KICYL1〜KICYL4に、学習補正値KICYL_LS1〜KICYL_LS4がそれぞれ乗算される。すなわち、吸気量ばらつき補正係数KICYLiが学習補正値KICYL_LSiにより補正される。
次に、上記適応オブザーバ61のアルゴリズムについて説明する。まず、図26に示すように、エンジン3の吸気系を、4つの模擬値GAIR_OS1〜GAIR_OS4および4つの吸気量ばらつき係数Ψ1〜Ψ4で表される系として見なす。これらの模擬値GAIR_OSiは、吸入空気の吸気開始タイミングおよび吸気挙動を気筒毎に模擬化した値であり、吸気量ばらつき係数Ψiは、気筒間の吸入空気量のばらつきおよび吸気挙動の変動分を表す値である。この系を離散時間系モデルとしてモデル化すると、図27に示す式(58)が得られる。同式(58)において、d’は、吸気管4内を流れる空気がエアフローセンサ9から各気筒に到達するまでのむだ時間(所定の遅延時間)を表しており、本実施形態では、所定の一定値に予め設定される。なお、むだ時間d’をエンジン3の運転状態(エンジン回転数NEなど)に応じて設定してもよい。
本実施形態の適応オブザーバ61では、上記式(58)の左辺を吸入空気量の推定値GAIR_EST(k)に置き換えた式、すなわち図27の式(59)がモデルとして用いられ、模擬値GAIR_OSiが、後述するように信号発生器61aにより生成されるとともに、式(59)のモデルパラメータとしての吸気量ばらつき係数Ψiのベクトルψ(k)が、推定値GAIR_EST(k)が吸入空気量GAIR(k−d’)に一致するように、図27の式(60)〜(66)に示す可変ゲイン型の逐次型最小2乗法アルゴリズムにより、同定される。
同式(60)におけるKR(k)はゲイン係数のベクトルを、ide’(k)は同定誤差をそれぞれ表している。また、式(61)におけるψ(k)Tは、ψ(k)の転置行列を表している。式(60)の同定誤差ide’(k)は、図27の式(62)〜(64)により算出され、この式(63)のζ’(k)は、式(64)のように定義される模擬値のベクトルである。さらに、上記ゲイン係数のベクトルKR(k)は、図27の式(65)により算出され、この式(65)のR(k)は、図27の式(66)で定義される4次の正方行列である。
以上のように、この適応オブザーバ61では、上記式(60)〜(66)に示す逐次型最小2乗法アルゴリズムにより、吸気量ばらつき係数Ψiのベクトルψ(k)が同定される。それにより、エンジン3の運転状態が急変することなどに伴う吸気挙動のノイズ的な変動成分を、吸気量ばらつき係数Ψiから除去(フィルタリング)することができ、吸気量ばらつき係数Ψiを、気筒間の吸入空気量のばらつきを実質的に示す値として算出することができる。
以上の適応オブザーバ61の構成は、前述した第1空燃比コントローラ30の適応オブザーバ31と同様に、図28のブロック図に示すものとなる。すなわち、同図に示すように、この適応オブザーバ61では、信号発生器61aにより、模擬値GAIR_OSiのベクトルζ’(k)が生成される。より具体的には、この信号発生器61aでは、図29に示すように、模擬値GAIR_OSiは、互いの和が常に値1になるように、三角波や台形波などを交互に組み合わせたような信号値として生成される。さらに、乗算器61bにおいて、この模擬値のベクトルζ’(k)に、吸気量ばらつき係数のベクトルψ(k−1)を乗算した値として、吸入空気量の推定値GAIR_EST(k)が生成される。そして、差分器61dにより、吸入空気量GAIR(k−d’)と推定値GAIR_EST(k)との偏差として、同定誤差ide’(k)が生成される。
また、論理演算器61eにより、模擬値のベクトルζ’(k)に基づいて、ゲイン係数のベクトルKR(k)が生成され、乗算器61fにおいて、同定誤差ide’(k)とゲイン係数のベクトルKR(k)の積[ide’(k)・KR(k)]が生成される。次に、加算器61gにより、積[ide’(k)・KR(k)]と、遅延された吸気量ばらつき係数のベクトルψ(k−1)との和として、吸気量ばらつき係数のベクトルψ(k)が生成される。
次に、前記吸気量ばらつき補正係数算出部62における、吸気量ばらつき補正係数KICYLi(第1入力、第3補正値)を算出するアルゴリズムについて説明する。この吸気量ばらつき補正係数算出部62では、まず、図30の式(67)により、適応オブザーバ61で算出された吸気量ばらつき係数のベクトルψ(k)、すなわち4つの吸気量ばらつき係数Ψ1(k)〜Ψ4(k)に基づき、吸気量ばらつき係数の移動平均値Ψave(k)が算出される。次に、吸気量ばらつき係数Ψi(k)を移動平均値Ψave(k)に収束させるように、吸気量ばらつき補正係数KICYLiをI−PD制御(比例・微分先行型PID制御)アルゴリズムにより気筒毎に算出する。このI−PD制御アルゴリズムは、図30の式(68),(69)に示すものとなる。
ここで、第3空燃比コントローラ60による気筒間の吸入空気量のばらつきを補正するための空燃比制御は、第1空燃比コントローラ30による気筒間の空燃比のばらつきを補正するための空燃比制御と互いに干渉し合う可能性があるので、これを回避するために、2つのコントローラ30,60において、空燃比ばらつき係数Φi(k)の移動平均値Φaveへの収束速度と、吸気量ばらつき係数Ψi(k)の移動平均値Ψave(k)への収束速度とを互いに異ならせる必要がある。
本実施形態では、上記式(68)のフィードバックゲインFI’,GI’,HI’は、その絶対値が、前述した式(11)のフィードバックゲインFI,GI,HIの絶対値よりも大きい値になるように設定される。すなわち、0<|FI|<|FI’|、0<|GI|<|GI’|、0<|HI|<|HI’|の関係が成立するように、各フィードバックゲインが設定される。これにより、吸気量ばらつき係数Ψi(k)の移動平均値Ψave(k)への収束速度が、空燃比ばらつき係数Φi(k)の移動平均値Φaveへの収束速度よりも速くなるように、空燃比が制御される。これは、エアフローセンサ9の方が、LAFセンサ14よりもS/N比が良いので、各フィードバックゲインを上記のような関係に設定することにより、2つのコントローラ30,60による空燃比制御が互いに干渉し合うのを回避しながら、空燃比制御の安定性を全体として確保できることによる。
これに加えて、I−PD制御アルゴリズムにより、吸気量ばらつき補正係数KICYLiが、吸気量ばらつき係数Ψi(k)をその移動平均値Ψave(k)に収束させるように、算出されるので、吸気量ばらつき係数Ψi(k)の移動平均値Ψave(k)への収束挙動において、オーバーシュートが発生しないように制御できる。それにより、第3空燃比コントローラ60により、気筒間の空燃比のばらつきを補正するための空燃比制御が実行された場合、この空燃比制御による集合部空燃比の変化によって、第2空燃比コントローラ40による空燃比制御の制御性が低下するのを回避することができる。
次に、前記学習補正値算出部63による、吸気量ばらつき補正係数KICYLiの学習補正値KICYL_LSiを算出するアルゴリズムについて説明する。上記吸気量ばらつき補正係数KICYLiは、エンジン3の運転状態の影響を受けやすいものであり、エンジン3の運転状態が変化すると、それに応じて変化する。図31は、エンジン3の運転状態を表す運転状態パラメータとしての排気ガスボリュームESV(k)と吸気量ばらつき補正係数KICYLi(k)との関係を示している。
図31を参照すると、この吸気量ばらつき補正係数KICYLi(k)においても、前述した空燃比ばらつき補正係数KOBSVi(k)と同様に、吸気量ばらつき補正係数KICYLi(k)を従属変数とし、排気ガスボリュームESV(k)を独立変数とする1次式により、吸気量ばらつき補正係数KICYLi(k)の近似値すなわち推定値を算出できることが判る。したがって、学習補正値算出部63では、吸気量ばらつき補正係数の学習補正値KICYL_LSi(k)を、図32の式(70)に示す回帰式により算出される推定値として定義するとともに、その回帰係数AICYL_LSiおよび定数項BICYL_LSiのベクトル(以下「回帰係数ベクトル」という)θICYL_LSi(k)が、図32の式(71)〜(77)に示す逐次型最小2乗法により算出される。
この式(71)において、KUi(k)はゲイン係数のベクトルを、Eici(k)は誤差をそれぞれ表している。また、この誤差Eici(k)は、図32の式(73)により算出される。さらに、上記ゲイン係数のベクトルKUi(k)は、図32の式(76)により算出され、この式(76)のUi(k)は、図32の式(77)で定義される2次の正方行列である。
また、学習補正値KICYL_LSi(k)は、具体的には、図32の式(78)により算出される。なお、後述するように、エンジン3が極端な運転状態または運転環境にあるときには、以上の逐次型最小2乗法による回帰係数AICYL_LSiおよび定数項BICYL_LSiの算出は回避され、その回帰係数ベクトルの前回値θICYL_LSi(k−1)が、学習補正値KICYL_LSi(k)の算出において、今回値θICYL_LSi(k)として使用される。
以上の式(71)〜(78)に示すアルゴリズムにより、学習補正値算出部63では、学習補正値KICYL_LSi(k)が、これと吸気量ばらつき補正係数KICYLi(k)との積に収束するように算出される。
なお、図25に示すように、吸気管内絶対圧センサ11で吸気管内絶対圧PBAを検出した場合でも、吸気の脈動を検出することができるので、以上の式(58)〜(78)において、「GAIR」で表されるパラメータを「PBA」で表されるパラメータに置き換えたアルゴリズムと、吸気管内絶対圧センサ11で検出された吸気管内絶対圧PBAとを用いることにより、気筒間の吸入空気量のばらつきを補正するための空燃比コントローラを構成することができる。
以下、第2実施形態における空燃比制御処理について、図33〜図36を参照しながら説明する。図33は、この制御処理のメインルーチンを示しており、本処理は、TDC信号の入力に同期して割り込み実行される。同図に示すように、本処理は、ステップ111〜113以外の各ステップは、第1実施形態の図12のステップ1〜13と同様であるので、ここでは、ステップ111〜113を中心に説明する。
すなわち、ステップ110で、空燃比ばらつき補正係数の学習補正値KOBSV_LSiを算出した後、ステップ111において、後述するように、吸気量ばらつき係数のベクトルψを算出する。
次いで、ステップ112に進み、吸気量ばらつき補正係数KICYLiを算出した後、ステップ113に進み、吸気量ばらつき補正係数の学習補正値KICYL_LSiを算出する。次に、前述したステップ11〜13と同様に、ステップ114〜116を実行した後、本処理を終了する。
次に、図34を参照しながら、上記ステップ111の吸気量ばらつき係数のベクトルψの算出処理について説明する。この処理では、前述した図15の空燃比ばらつき係数のベクトルφの算出処理と同様の手法により、吸気量ばらつき係数のベクトルψが算出される。すなわち、ステップ120において、RAMに記憶されている、前回のループでの吸気量ばらつき係数のベクトルψの算出値を、その前回値RRVψ[=ψ(k−1)]として設定する。
次いで、ステップ121に進み、模擬値の今回値GAIR_OSiを算出した後、ステップ122に進み、前記図27の式(64)により、模擬値のベクトルζ’を算出する。
次に、ステップ123に進み、前記図27の式(63)により、吸入空気量の推定値GAIR_ESTを算出した後、ステップ124に進み、前述した図27の式(62)により、同定誤差ide’を算出する。
次いで、ステップ125に進み、RAMに記憶されている、前回のループでの正方行列の次回値NEXR[=R(k+1)]の算出値を、その今回値Rとして設定した後、ステップ126に進み、前述した図27の式(65)により、ゲイン係数のベクトルKRを算出する。
次に、ステップ127に進み、前述した図27の式(60)により、吸気量ばらつき係数のベクトルψを算出した後、ステップ128に進み、前述した図27の式(66)により、正方行列の次回値NEXR[=R(k+1)]を算出する。
次いで、ステップ129に進み、RAMに記憶されている所定個数(本実施形態では12個)の吸入空気量GAIRの時系列データを更新する。具体的には、RAM内の吸入空気量GAIRの各々の値を、1制御サイクル分、古い値としてセットする(例えば、今回値GAIR(k)を前回値GAIR(k−1)として、前回値GAIR(k−1)を前々回値GAIR(k−2)としてそれぞれセットする)。この後、本処理を終了する。
次に、図35を参照しながら、前記ステップ112の吸気量ばらつき補正係数KICYLiの算出処理について説明する。この処理では、前述した図16の空燃比ばらつき補正係数KOBSViの算出処理と同様の手法により、吸気量ばらつき補正係数KICYLiが算出される。すなわち、まず、ステップ140において、前述した図30の式(67)により、吸気量ばらつき係数の移動平均値Ψaveを算出する。
次いで、ステップ141に進み、前述した図30の式(69)により、追従誤差e’を算出した後、ステップ142で、追従誤差の積分値Σe’を算出する。次に、ステップ143に進み、上記ステップ140,142で算出した吸気量ばらつき係数の移動平均値Ψaveおよび追従誤差の積分値Σe’を用い、前述した図30の式(68)により、空燃比ばらつき補正係数KICYLiを算出した後、本処理を終了する。
次に、図36を参照しながら、前記ステップ113の吸気量ばらつき補正係数の学習補正値KICYL_LSiの算出処理について説明する。この処理では、前述した図17の空燃比ばらつき補正係数の学習補正値KOBSV_LSiの算出処理と同様の手法により、吸気量ばらつき補正係数の学習補正値KICYL_LSiが算出される。すなわち、まず、ステップ150において、前述した図9の式(13)により、排気ガスボリュームESVを算出する。
次いで、ステップ151に進み、RAMに記憶されている、前回のループでの回帰係数ベクトルθICYL_LSiの算出値を、その前回値PRVθICYL_LSi[=θICYL_LSi(k−1)]として設定する。
次に、ステップ152に進み、前述した図32の式(78)により、学習補正値KICYL_LSiを算出する。この後、ステップ153に進み、下記の5つの条件(a6)〜(a10)がいずれも成立しているか否かを判別する。
(a6)エンジン水温TWが所定の下限値TWICYLより高くかつ所定の上限値TWICYHよりも低いこと。
(a7)吸気温TAが所定の下限値TAICYLより高くかつ所定の上限値TAICYHよりも低いこと。
(a8)エンジン回転数NEが所定の下限値NEICYLより高くかつ所定の上限値NEICYHよりも低いこと。
(a9)吸気管内絶対圧PBAが所定の下限値PBICYLより高くかつ所定の上限値PBICYHよりも低いこと。
(a10)車速VPが所定の下限値VPICYLより高くかつ所定の上限値VPICYHよりも低いこと。
以上の5つの条件(a6)〜(a10)がいずれも成立しているときには、逐次型最小2乗法により、回帰係数ベクトルθICYL_LSiを算出すべき運転状態にあるとして、ステップ154に進み、前述した図32の式(75)により、排気ガスボリュームのベクトルZ’を算出する。
次に、ステップ155に進み、前述した図32の式(73)により、誤差Eiciを算出した後、ステップ156に進み、RAMに記憶されている、前回のループでの正方行列の次回値NEXUi[=Ui(k+1)]の算出値を、その今回値Uiとして設定する。
次いで、ステップ157に進み、前述した図32の式(76)により、ゲイン係数のベクトルKUiを算出した後、ステップ158に進み、前述した図32の式(71)により、回帰係数ベクトルθICYL_LSiを算出する。次に、ステップ159に進み、前述した図32の式(77)により、正方行列の次回値NEXUi[=Ui(k+1)]を算出した後、本処理を終了する。
一方、前記ステップ153の判別結果がNOで、前記5つの条件(a6)〜(a10)の少なくとも1つが成立していないときには、ステップ160に進み、前記ステップ151で設定した回帰係数ベクトルの前回値PRVθICYL_LSiを、今回値θICYL_LSiに設定した後、本処理を終了する。これにより、例えば次回のループでのステップ151の処理において、回帰係数ベクトルの前回値PRVθICYL_LSiとして、今回のループでステップ154〜159の逐次型最小2乗法により算出された値が用いられる。
以上のように、第2実施形態の制御装置1によれば、第1空燃比コントローラ30により、空燃比ばらつき補正係数KOBSViおよび学習補正値KOBSV_LSiが算出され、第2空燃比コントローラ40により、フィードバック補正係数KSTRが算出される。さらに、第3空燃比コントローラ60により、吸気量ばらつき係数Ψiが算出され、これが移動平均値Ψaveに収束するように、吸気量ばらつき補正係数KICYLiが算出され、その学習補正値KICYL_LSiが算出される。そして、算出されたフィードバック補正係数KSTR、空燃比ばらつき補正係数KOBSVi、学習補正値KOBSV_LSi、吸気量ばらつき補正係数KICYLiおよび学習補正値KICYL_LSiによって、基本燃料噴射量TIBSが補正されることにより、最終燃料噴射量TOUTiが気筒毎に算出される。
この第3空燃比コントローラ60の適応オブザーバ61では、吸入空気量GAIRの推定値GAIR_ESTが、これと、模擬値GAIR_OSiおよび吸気量ばらつき係数Ψiとにより定義されるモデル[式(59)]を用いることによって推定され、さらに、この推定値GAIR_ESTが吸入空気量GAIRに一致するように、モデルパラメータとしての吸気量ばらつき係数Ψiが逐次型最小2乗法により同定される。これにより、エンジン3の運転状態が急変することなどに伴う吸気挙動のノイズ的な変動成分を、吸気量ばらつき係数Ψiから除去(フィルタリング)することができ、吸気量ばらつき係数Ψiを、気筒間の空燃比のばらつきを実質的に示す値として算出することができる。したがって、そのような吸気量ばらつき係数Ψiに基づいて算出された吸気量ばらつき補正係数KICYLiにより、基本燃料噴射量TIBSが気筒毎に補正されるので、エアフローセンサ9の応答ばらつきおよび経年変化などによって、制御対象の動特性が変化したときでも、制御対象の動特性の変化をモデルに反映させながら、気筒間の吸入空気量のばらつきを補正するように、最終燃料噴射量TOUTiを気筒毎に算出することができる。その結果、本実施形態のように、複雑な排気レイアウトを有するエンジン3の空燃比を制御する場合でも、第1実施形態の制御装置1よりも、さらに安定余裕が大きく、ロバスト性の高い空燃比制御を実現することができ、より良好な触媒浄化率を確保することができる。
また、第3空燃比コントローラ60では、吸気量ばらつき補正係数KICYLiがI−PD制御アルゴリズムにより算出されるので、吸気量ばらつき係数Ψiの移動平均値Ψaveへの収束挙動において、オーバーシュートが発生しないように、吸気量ばらつき補正係数KICYLiを算出することができる。これより、各気筒の吸入空気量の挙動が振動的になるのを回避しながら、気筒間の吸入空気量のばらつきを補正できる。これに加えて、I−PD制御アルゴリズムにおいて、吸気量ばらつき係数Ψiの移動平均値Ψaveへの収束速度が、空燃比ばらつき係数Φiの移動平均値Φaveへの収束速度よりも速くなるように、各フィードバックゲインFI’,GI’,HI’の値が設定されるので、第3空燃比コントローラ60による空燃比制御と、第1空燃比コントローラ30による空燃比制御とが互いに干渉し合うのを回避できる。さらに、吸気量ばらつき補正係数KICYLiが、吸気量ばらつき係数Ψiを移動平均値Ψaveに収束させるように算出されるので、第3空燃比コントローラ60による空燃比制御と、第2空燃比コントローラ40による空燃比制御とが互いに干渉し合うのを回避できる。以上により、第3空燃比コントローラ60による空燃比制御、第1空燃比コントローラによる空燃比制御、および第2空燃比コントローラ40による空燃比制御が互いに干渉し合うのを回避しながら、気筒間の吸入空気量のばらつきを補正できる。
さらに、第3空燃比コントローラ60では、吸気量ばらつき補正係数KICYLiの学習補正値KICYL_LSiが、排気ガスボリュームESVを独立変数とする回帰式[式(78)]により算出されるとともに、この回帰式の回帰係数AICYL_LSiおよび定数項BICYL_LSiのベクトルである回帰係数ベクトルθICYL_LSiが、逐次型最小2乗法により算出されるので、エンジン3が過渡運転状態などの急激に変化する運転状態にあることで、その影響により気筒間の吸入空気量のばらつき状態が急激に変化するときでも、学習補正値KICYL_LSiを気筒間の吸入空気量のばらつき状態が適切に反映された値として算出することができる。その結果、エンジン3が過渡運転状態にあるときでも、気筒間の吸入空気量のばらつきを補償しながら、空燃比を適切に制御することができる。
また、吸気量ばらつき係数Ψiおよび回帰係数ベクトルθICYL_LSiが、逐次型最小2乗法により算出されるので、統計アルゴリズムとして一般的な最小2乗法を用いる場合と異なり、空燃比制御の開始時でも、吸気量ばらつき補正係数KICYLiおよび学習補正値KICYL_LSiを、制御サイクル毎に算出することができる。したがって、例えば、KICYLi,KICYL_LSiの初期値を予め設定しておくことにより、空燃比制御の開始時、制御サイクル毎に算出された吸気量ばらつき補正係数KICYLiと学習補正値KICYL_LSiとの積により常に補正された値として、最終燃料噴射量TOUTiを算出することができ、空燃比制御の開始時における制御性を向上させることができる。それにより、空燃比制御の開始時における触媒浄化率をさらに向上させることができる。
なお、第3空燃比コントローラによる空燃比制御では、吸入空気量GAIRの特性として、その絶対値の変動量が、検出空燃比KACTと比べて非常に大きくなる場合があり、その場合には、前述した適応オブザーバ61において、式(60)〜(66)の同定アルゴリズムにより同定される吸気量ばらつき係数のベクトルψ(k)の同定値の変動量が非常に大きくなることで、制御系が不安定になるおそれがある。これを回避するには、図37に示すように、適応オブザーバ61を構成すればよい。すなわち、適応オブザーバ61において、図38に示すハイパスフィルタ[1],[2]、および図39に示すバンドパスフィルタ[1]〜[3]のいずれか1つからなるフィルタ61j(フィルタ手段)を設け、このフィルタ61jにより吸入空気量GAIR(k)をフィルタリングしたフィルタ値GAIR_F(k)を用いて、空燃比制御を実行すればよい。
このフィルタ61jは、図40の式(79)で表される。同式(79)において、m*,n*は、所定の整数を表す。また、このような適応オブザーバ61における吸気量ばらつき係数のベクトルψ(k)の同定アルゴリズムは、図40の式(80)〜(86)に示すものとなる。以上のように構成することにより、吸入空気量GAIR(k)の変動が大きいような運転状態のときでも、吸気量ばらつき係数のベクトルψ(k)の同定に必要な情報を確保しながら、吸入空気量GAIR(k)の変動幅が抑制された値として、フィルタ値GAIR_F(k)を生成できる。したがって、そのようなフィルタ値GAIR_F(k)に応じて、吸気量ばらつき係数のベクトルψ(k)を同定することにより、同定遅れを抑制でき、その同定精度を高めることができ、空燃比制御の安定性と速応性をより一層、向上させることができる。
また、第2実施形態は、学習補正値KICYL_LSiの算出に用いる回帰式として1次式を用いた例であるが、回帰式はこれに限らず、n次式(nは2以上の整数)でもよい。そのようにした場合でも、n次式の回帰係数および定数項を逐次型最小2乗法で算出することにより、第2実施形態と同様の作用効果を得ることができる。さらに、回帰式の回帰係数および定数項として、複数の運転領域毎に予め設定された所定値を用いることにより、学習補正値KICYL_LSiを算出してもよい。このようにすれば、学習補正値KICYL_LSiの演算時間を短縮することができ、ECU2の演算負荷を低減することができる。
さらに、吸気量ばらつき係数Ψiをその移動平均値Ψaveに収束させるための制御アルゴリズムは、第2実施形態のI−PD制御アルゴリズムに限らず、他の制御アルゴリズムを用いてもよいことは言うまでもない。例えば、I−PD制御アルゴリズムに代えて、図41の式(87),(88)に示すIP−D制御アルゴリズム、または図41の式(89)〜(91)に示す応答指定型制御アルゴリズムを用いることにより、吸気量ばらつき補正係数KICYLiを算出してもよい。これらの制御アルゴリズムを用いた場合でも、実施形態のI−PD制御アルゴリズムを用いた場合と同様に、吸気量ばらつき係数Ψiの移動平均値Ψaveへの収束挙動において、オーバーシュートが発生しないように、吸気量ばらつき補正係数KICYLiを算出することができ、その結果、気筒間の吸入空気量のばらつきを迅速かつ適切に補正できる。
また、以上のように、吸気量ばらつき補正係数KICYLiの算出において、IP−D制御アルゴリズムまたは応答指定型制御アルゴリズムを用いた場合にも、吸気量ばらつき係数Ψi(k)の移動平均値Ψaveへの収束速度が、空燃比ばらつき係数Φi(k)の移動平均値Φaveへの収束速度よりも速くなるように、各フィードバックゲインや切換関数設定パラメータの値を設定することにより、前述したように、第3空燃比コントローラ60による空燃比制御と、第1空燃比コントローラ30による空燃比制御とが互いに干渉し合うのを回避することができる。これに加えて、各フィードバックゲインを、最適レギュレータ理論またはH∞制御理論に基づいて決定してもよい。このようにすれば、吸気量ばらつき係数Ψiの移動平均値Ψaveへの収束挙動において、オーバーシュートの発生をより効果的に抑制でき、その結果、気筒間の吸入空気量のばらつき補正の精度をさらに向上させることができる。
さらに、吸気量ばらつき係数Ψiが移動平均値Ψaveに収束するまでの整定時間が長くてもよい場合には、前述したPID制御アルゴリズムにより、吸気量ばらつき補正係数KICYLiを算出してもよい。また、吸気量ばらつき係数Ψiを収束させる目標値としての吸気量ばらつき係数の平均値は、第2実施形態の移動平均値Ψaveに限らず、加重平均値などでもよい。
また、第2実施形態の第3空燃比コントローラ60の適応オブザーバ61は、図27の式(60)〜(66)に示す可変ゲイン型の逐次型最小2乗法により、吸気量ばらつき係数のベクトルψ(k)を同定した例であるが、適応オブザーバ61における吸気量ばらつき係数のベクトルψ(k)の同定アルゴリズムとして、例えば、図42の式(92)〜(99)に示すδ修正法を適用した固定ゲイン法により、吸気量ばらつき係数のベクトルψ(k)を同定してもよい。
同図の式(92)において、ψbaseは、式(93)のように定義される基準値ベクトル(基準値)であり、このベクトルの4つの要素である基準値Ψbase1〜Ψbase4は、排気ガスボリュームESVに応じて、図43に示すテーブルを検索することにより算出される。また、式(92)のdψ(k)は、式(52)のように定義される補正項(補正成分)であり、式(94)〜(99)により算出される。
以上のδ修正法を適用した固定ゲイン法により、吸気量ばらつき係数のベクトルψ(k)を同定した場合には、逐次型最小2乗法の場合と比べて、演算時間を短縮でき、ECU2における演算負荷を低減できる。その結果、ECU2の小型化・低コスト化を図ることができる。これに加えて、ベクトルψ(k)の同定値を、値1の付近に拘束できるので、エンジン3が過渡運転状態などの空燃比の変化が激しい運転状態にあるときでも、気筒間の吸入空気量のばらつきを表す吸気量ばらつき係数のベクトルψ(k)を、空燃比の挙動が適切に反映された値として、迅速かつ適切に算出することができ、空燃比制御の安定性を向上させることができる。
また、以上の各実施形態は、本発明の制御装置を車両用のエンジン3の空燃比を制御する制御装置に適用した例であるが、本発明の制御装置は、これに限らず、船舶用の内燃機関や、他の産業機器にも適用可能であることは言うまでもない。