以下、図面を参照しながら、本発明の第1実施形態に係る制御装置について説明する。この第1実施形態は、制御装置を内燃機関の空燃比を制御するものとして構成した例であり、図1は、この制御装置1およびこれを適用した内燃機関3の概略構成を示している。同図に示すように、この制御装置1は、ECU2を備えており、このECU2は、後述するように、内燃機関(以下「エンジン」という)3の運転状態に応じて、これに供給する混合気の空燃比を制御する。
このエンジン3は、図示しない車両に搭載された直列4気筒型ガソリンエンジンであり、第1〜第4の4つの気筒#1〜#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からの駆動信号によって、その開弁時間である最終燃料噴射量TOUTおよび噴射タイミングが制御される。
一方、エンジン3の本体には、例えばサーミスタなどで構成された水温センサ12が取り付けられている。水温センサ12は、エンジン3のシリンダブロック内を循環する冷却水の温度であるエンジン水温TWを検出し、その検出信号をECU2に出力する。
また、エンジン3のクランクシャフト(図示せず)には、クランク角センサ13が設けられている。このクランク角センサ13は、クランクシャフトの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号をECU2に出力する。
CRK信号は、所定のクランク角(例えば30゜)ごとに1パルスが出力される。ECU2は、このCRK信号に応じ、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。また、TDC信号は、各気筒のピストン(図示せず)が吸気行程のTDC位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、所定クランク角ごとに1パルスが出力される。
一方、排気管7(排気通路)のエキゾーストマニホールド7aよりも下流側には、上流側から順に第1および第2の触媒装置8a,8b(触媒)が間隔を存して設けられている。各触媒装置8は、NOx触媒と3元触媒を組み合わせたものであり、このNOx触媒は、図示しないが、イリジウム触媒(イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体)をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物(LaCoO3粉末とシリカの焼成体)をさらに被覆したものである。触媒装置8は、NOx触媒による酸化還元作用により、リーンバーン運転時の排気ガス中のNOxを浄化するとともに、3元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のCO、HCおよびNOxを浄化する。なお、触媒装置8は、NOx触媒と3元触媒を組み合わせたものに限らず、排気ガス中のCO、HCおよびNOxを浄化できるものであればよい。例えば、触媒装置8を、ペロブスカイト型触媒などの非金属触媒および/または3元触媒などの金属触媒で構成してもよい。
これらの第1および第2触媒装置8a,8bの間には、酸素濃度センサ(以下「O2センサ」という)15が取り付けられている。このO2センサ15(下流側空燃比センサ)は、ジルコニアおよび白金電極などで構成され、第1触媒装置8aの下流側の排気ガス中の酸素濃度に基づく出力VoutをECU2に送る。このO2センサ15の出力Voutは、理論空燃比よりもリッチな混合気が燃焼したときには、ハイレベルの電圧値(例えば0.8V)となり、混合気がリーンのときには、ローレベルの電圧値(例えば0.2V)となるとともに、混合気が理論空燃比付近のときには、ハイレベルとローレベルの間の所定の目標値Vop(例えば0.6V)となる(図2参照)。
また、第1触媒装置8aよりも上流側のエキゾーストマニホールド7aの集合部付近には、LAFセンサ14(上流側空燃比センサ)が取り付けられている。このLAFセンサ14は、O2センサ15と同様のセンサとリニアライザなどの検出回路とを組み合わせることによって構成されており、リッチ領域からリーン領域までの広範囲な空燃比の領域において排気ガス中の酸素濃度をリニアに検出し、その酸素濃度に比例する出力KACTをECU2に送る。この出力KACTは、空燃比の逆数に比例する当量比として表される。
次に、図2を参照しながら、第1触媒装置8aの排気ガスの浄化率とO2センサ15の出力Vout(電圧値)との関係について説明する。同図は、第1触媒装置8aが、長時間の使用により浄化能力が低下した劣化状態と、浄化能力の高い未劣化状態の場合において、LAFセンサ14の出力KACTすなわちエンジン3に供給される混合気の空燃比が理論空燃比の付近で変化したときの、2つの第1触媒装置8aのHCおよびNOxの浄化率と、O2センサ15の出力Voutをそれぞれ測定した結果の一例を示している。同図において、破線で示すデータはいずれも、第1触媒装置8aが未劣化状態の場合の測定結果であり、実線で示すデータはいずれも、第1触媒装置8aが劣化状態の場合の測定結果である。また、LAFセンサ14の出力KACTが大きいほど、混合気の空燃比がよりリッチ側であることを示している。
同図に示すように、第1触媒装置8aが劣化している場合には、未劣化状態の場合と比べて、排気ガスの浄化能力が低下していることにより、LAFセンサ14の出力KACTがよりリーン側の値KACT1のときに、O2センサ15の出力Voutが目標値Vopを横切っている。一方、第1触媒装置8aは、その劣化・未劣化状態にかかわらず、O2センサ15の出力Voutが目標値Vopにあるときに、HCおよびNOxを最も効率よく浄化する特性を有している。したがって、O2センサ15の出力Voutが目標値Vopになるように、混合気の空燃比を制御することにより、第1触媒装置8aによって排気ガスを最も効率よく浄化できることが判る。このため、後述する空燃比制御では、O2センサ15の出力Voutが目標値Vopに収束するように、目標空燃比KCMDが制御される。
さらに、ECU2には、アクセル開度センサ16、大気圧センサ17、吸気温センサ18および車速センサ19などが接続されている。このアクセル開度センサ16は、車両の図示しないアクセルペダルの踏み込み量(以下「アクセル開度」という)APを検出し、その検出信号をECU2に出力する。また、大気圧センサ17、吸気温センサ18および車速センサ19はそれぞれ、大気圧PA、吸気温TAおよび車速VPを検出し、その検出信号をECU2に出力する。
次に、ECU2(偏差算出手段、予測値算出手段、出力サンプリング手段、サンプリング手段、同定手段、空燃比算出手段、空燃比制御手段、空燃比サンプリング手段)について説明する。
このECU2は、I/Oインターフェース、CPU、RAMおよびROMなどからなるマイクロコンピュータから構成されており、前述した各種のセンサ10〜19の出力に応じて、エンジン3の運転状態を判別するとともに、ROMに予め記憶された制御プログラムやRAMに記憶されたデータなどに従って、後述する適応空燃比制御処理またはマップ検索処理を実行することにより、O2センサ15の出力Voutを目標値Vopに収束させるために、目標空燃比KCMDを算出する(なお、この目標空燃比KCMDは、空燃比の逆数に比例する当量比として算出される)。さらに、後述するように、この目標空燃比KCMDに基づいて、インジェクタ6の最終燃料噴射量TOUTを気筒ごとに算出し、この算出した最終燃料噴射量TOUTに基づいた駆動信号で、インジェクタ6を駆動することにより、LAFセンサ14の出力KACTを目標空燃比KCMDに一致させるように、混合気の空燃比をフィードバック制御する。
図3に示すように、制御装置1は、目標空燃比KCMDを算出するADSMコントローラ20およびPRISMコントローラ21を備えており、両コントローラ20,21はいずれも、具体的には、ECU2により構成されている。
以下、ADSMコントローラ20について説明する。このADSMコントローラ20は、以下に述べる適応予測型ΔΣ変調制御(Adaptive prediction Delta Sigma Modulation Control:以下「ADSM」という)処理の制御アルゴリズムにより、O2センサ15の出力Voutを目標値Vopに収束させるための目標空燃比KCMDを算出するものであり、状態予測器22、オンボード同定器23およびDSMコントローラ24により構成されている。なお、このADSM処理の具体的なプログラムについては、後述する。
まず、状態予測器22について説明する。この状態予測器22は、以下に述べる予測アルゴリズムにより、出力偏差VO2の予測値PREVO2を予測(算出)するものである。本実施形態では、制御対象への制御入力を混合気の目標空燃比KCMDとし、制御対象の出力をO2センサ15の出力Voutとし、インジェクタ6を含むエンジン3の吸気系から、第1触媒装置8aを含む排気系の第1触媒装置8aの下流側のO2センサ15までの系を、制御対象と見なすとともに、この制御対象を、下式(1)に示すように、離散時間系モデルであるARXモデル(auto-regressive model with exogeneous input:外部入力を持つ自己回帰モデル)としてモデル化する。
VO2(k)=a1・VO2(k-1)+a2・VO2(k-2)+b1・DKCMD(k-dt) ……(1)
ここで、VO2は、O2センサ15の出力Voutと前述した目標値Vopとの偏差(Vout−Vop)である出力偏差を表し、DKCMDは、目標空燃比KCMD(=φop)と基準値FLAFBASEとの偏差(KCMD−FLAFBASE)である空燃比偏差を表し、記号kは、サンプリングにより離散化された時間を表している。この基準値FLAFBASEは、所定の一定値に設定される。また、a1,a2,b1はモデルパラメータを表しており、オンボード同定器23により、後述するように逐次同定される。
さらに、上記式(1)のdtは、目標空燃比KCMDの混合気がインジェクタ6により吸気系に供給されてから、O2センサ15の出力Voutに反映されるまでの予測時間を表しており、下式(2)のように定義される。
dt=d+d'+dd ……(2)
ここで、dは、LAFセンサ14からO2センサ15までの排気系のむだ時間を、d'は、インジェクタ6からLAFセンサ14までの空燃比操作系のむだ時間を、ddは、排気系と空燃比操作系との間の位相遅れ時間をそれぞれ表している(なお、後述する適応空燃比制御処理の制御プログラムでは、ADSM処理とPRISM処理とに切り換えて目標空燃比KCMDを算出する処理を行うため、位相遅れ時間dd=0に設定されている)。
以上のように、制御対象モデルを、出力偏差VO2の離散データ(時系列データ)および空燃比偏差DKCMDの離散データで構成した理由は以下による。すなわち、一般に、制御対象モデルでは、制御対象の入出力と所定値との偏差を、入出力を表す変数として定義した場合の方が、入出力の絶対値を変数として定義した場合よりも、モデルパラメータをより正確に同定または定義できることで、制御対象モデルの動特性を制御対象の実際の動特性に適合させることができるという事実が知られている。したがって、本実施形態の制御装置1のように、制御対象モデルを、出力偏差VO2の離散データおよび空燃比偏差DKCMDの離散データで構成することにより、O2センサ15の出力Voutおよび目標空燃比KCMDの絶対値を変数とする場合と比べて、制御対象の実際の動特性に対する制御対象モデルの動特性の適合性を向上させることができ、それにより予測値PREVO2の算出精度を向上させることができる。
また、予測値PREVO2は、目標空燃比KCMDの混合気が吸気系に供給されてから予測時間dtが経過した後の出力偏差VO2(k+dt)を予測した値であり、上記式(1)に基づき、予測値PREVO2の算出式を導出すると、下式(3)が得られる。
PREVO2(k)≒VO2(k+dt)
=a1・VO2(k+dt-1)+a2・VO2(k+dt-2)+b1・DKCMD(k) ……(3)
この式(3)では、出力偏差VO2(k)の未来値に相当するVO2(k+dt−1),VO2(k+dt−2)の算出が必要となり、実際にプログラム化するのは困難である。そのため、マトリクスA、Bを、モデルパラメータa1,a2,b1を用いて図4に示す式(4)、(5)のように定義するとともに、上式(3)の漸化式を繰り返し用いることにより、上式(3)を変形すると、図4に示す式(6)が得られる。予測アルゴリズムすなわち予測値PREVO2の算出式として、この式(6)を用いた場合、予測値PREVO2が、出力偏差VO2および空燃比偏差DKCMDにより算出される。
次に、LAF出力偏差DKACTを、LAFセンサ14の出力KACT(=φin)と基準値FLAFBASEとの偏差(KACT−FLAFBASE)として定義すると、DKACT(k)=DKCMD(k−d')の関係が成立するので、この関係を図4の式(6)に適用すると、図4に示す式(7)が得られる。
以上の式(6)または式(7)により算出される予測値PREVO2を用い、後述するように目標空燃比KCMDを算出することによって、制御対象の入出力間の応答遅れやむだ時間を適切に補償しながら、目標空燃比KCMDを算出することができる。特に、予測アルゴリズムとして、上記式(7)を用いた場合、予測値PREVO2が、出力偏差VO2、LAF出力偏差DKACTおよび目標空燃比KCMDにより算出されるので、第1触媒装置8aに実際に供給される排気ガスの空燃比の状態が反映された値として、予測値PREVO2を算出でき、その算出精度すなわち予測精度を上記式(6)を用いた場合よりも向上させることができる。また、式(7)を用いた場合において、d'≦1と見なせるときには、空燃比偏差DKCMDを用いることなく、出力偏差VO2およびLAF出力偏差DKACTのみにより、予測値PREVO2を算出できる。本実施形態では、LAFセンサ14がエンジン3に設けられているので、予測アルゴリズムとして上記式(7)を採用する。
なお、前述した式(1)の制御対象モデルは、DKACT(k)=DKCMD(k−d')の関係を適用することにより、出力偏差VO2およびLAF出力偏差DKACTを変数とするモデルとして定義することも可能である。
次に、オンボード同定器23(同定手段)について説明する。このオンボード同定器23は、以下に述べる逐次型同定アルゴリズムにより、前述した式(1)のモデルパラメータa1,a2,b1を同定(算出)するものである。具体的には、図5に示す(8),(9)により、モデルパラメータのベクトルθ(k)を算出する。同図の式(8)において、KP(k)は、ゲイン係数のベクトルであり、ide_f(k)は同定誤差フィルタ値である。また、式(9)におけるθ(k)Tは、θ(k)の転置行列を表し、a1'(k)、a2'(k)およびb1'(k)は、後述するリミット処理を施す前のモデルパラメータを表している。なお、以下の説明では、「ベクトル」という表記を適宜、省略する。
上記式(8)の同定誤差フィルタ値ide_f(k)は、図5に示す式(11)〜(13)により算出される同定誤差ide(k)に、図5の式(10)に示す移動平均フィルタリング処理を施した値である。図5の式(10)のnは、移動平均フィルタリング処理のフィルタ次数(1以上の整数)を表しており、式(12)のVO2HAT(k)は、出力偏差VO2の同定値を表している。
この同定誤差フィルタ値ide_f(k)を用いる理由は以下による。すなわち、本実施形態の制御対象は、目標空燃比KCMDを制御入力とし、O2センサ15の出力Voutを制御対象の出力とするものであり、その周波数特性としてはローパス特性を有している。このようなローパス特性を有する制御対象では、オンボード同定器23の同定アルゴリズム、具体的には後述する重み付き最小2乗法アルゴリズムの周波数重み特性に起因して、制御対象の高周波特性が強調された状態で、モデルパラメータが同定されるため、制御対象モデルのゲイン特性が制御対象の実際のゲイン特性よりも低くなる傾向を示す。その結果、制御装置1によりADSM処理またはPRISM処理が実行された際、オーバーゲイン状態になることで、制御系が発散状態になり、不安定になる可能性がある。
したがって、本実施形態では、重み付き最小2乗法アルゴリズムの周波数重み特性を適切に補正し、制御対象モデルのゲイン特性を、制御対象の実際のゲイン特性に一致させるために、上記同定誤差ide(k)に移動平均フィルタリング処理を施した同定誤差フィルタ値ide_f(k)を用いるとともに、後述するように、移動平均フィルタリング処理のフィルタ次数nを、排気ガスボリュームAB_SVに応じて設定している。
さらに、前述した図5の式(8)のゲイン係数のベクトルKP(k)は、図5の式(14)により算出される。この式(14)のP(k)は、図5の式(15)で定義される3次の正方行列である。
以上のような同定アルゴリズムでは、式(15)の重みパラメータλ1、λ2の設定により、以下の4つの同定アルゴリズムのうちの1つが選択される。
すなわち、
λ1=1,λ2=0 ;固定ゲインアルゴリズム
λ1=1,λ2=1 ;最小2乗法アルゴリズム
λ1=1,λ2=λ ;漸減ゲインアルゴリズム
λ1=λ,λ2=1 ;重み付き最小2乗法アルゴリズム
ただし、λは、0<λ<1に設定される所定値。
本実施形態では、これらの4つの同定アルゴリズムのうちの重み付き最小2乗法アルゴリズムを採用する。これは、重みパラメータλ1の値をエンジン3の運転状態、具体的には排気ガスボリュームAB_SVに応じて設定することにより、同定精度と、モデルパラメータの最適値への収束速度とを適切に設定できることによる。例えば、低負荷運転状態のときには、それに応じて重みパラメータλ1の値を値1に近い値に設定することで、すなわち最小2乗法アルゴリズムに近いアルゴリズムに設定することで、良好な同定精度を確保できるとともに、高負荷運転状態のときには、それに応じて重みパラメータλ1の値を低負荷運転状態のときよりも小さい値に設定することにより、モデルパラメータを迅速に最適値に収束させることができる。以上のように、重みパラメータλ1の値を排気ガスボリュームAB_SVに応じて設定することにより、同定精度と、モデルパラメータの最適値への収束速度とを適切に設定することができ、それにより、触媒装置8a,8bによる排気ガス浄化率を向上させることができる。
以上の式(8)〜(15)の同定アルゴリズムにおいて、前述したDKACT(k)=DKCMD(k−d')の関係を適用すると、図6に示す式(16)〜(23)の同定アルゴリズムが得られる。本実施形態では、LAFセンサ14がエンジン3に設けられているので、これらの式(16)〜(23)を用いる。これらの式(16)〜(23)を用いた場合、前述した理由により、モデルパラメータを、第1触媒装置8aに実際に供給される排気ガスの空燃比の状態がより反映された値として同定することができ、それにより、上記式(8)〜(15)の同定アルゴリズムを用いた場合よりも、モデルパラメータの同定精度を向上させることができる。
また、このオンボード同定器23では、以上の同定アルゴリズムにより算出されたモデルパラメータa1'(k)、a2'(k)およびb1'(k)に、後述するリミット処理を施すことにより、モデルパラメータa1(k)、a2(k)およびb1(k)が算出される。さらに、前述した状態予測器22では、このようにリミット処理を施した後のモデルパラメータa1(k)、a2(k)およびb1(k)に基づき、予測値PREVO2が算出される。
次に、DSMコントローラ24について説明する。このDSMコントローラ24は、ΔΣ変調アルゴリズムを応用した制御アルゴリズムにより、状態予測器22で算出された予測値PREVO2に基づき、制御入力φop(k)(=目標空燃比KCMD)を生成(算出)するとともに、これを制御対象に入力することにより、制御対象の出力としてのO2センサ15の出力Voutを目標値Vopに収束させるように制御するものである。
まず、一般的なΔΣ変調アルゴリズムについて説明する。図7は、ΔΣ変調アルゴリズムを適用したコントローラ26により、制御対象27を制御する制御系の構成を示している。同図に示すように、このコントローラ26では、差分器26aにより、参照信号r(k)と遅延素子26bで遅延されたDSM信号u(k−1)との偏差として偏差信号δ(k)が生成される。次に、積分器26cにより、偏差積分値σd(k)が、偏差信号δ(k)と遅延素子26dで遅延された偏差積分値σd(k−1)との和の信号として生成される。次いで、量子化器26e(符号関数)により、DSM信号u(k)が、この偏差積分値σd(k)を符号化した信号として生成される。そして、以上のように生成されたDSM信号u(k)が制御対象27に入力されることにより、出力信号 y(k)が制御対象27から出力される。
以上のΔΣ変調アルゴリズムは、以下の数式(24)〜(26)で表される。
δ(k)=r(k)−u(k−1) ……(24)
σd(k)=σd(k−1)+δ(k) ……(25)
u(k)=sgn(σd(k)) ……(26)
ただし、符号関数sgn(σd(k))の値は、σd(k)≧0のときにはsgn(σd(k))=1となり、σd(k)<0のときにはsgn(σd(k))=−1となる(なお、σd(k)=0のときに、sgn(σd(k))=0と設定してもよい)。
図8は、以上の制御系の制御シミュレーション結果を示している。同図に示すように、正弦波状の参照信号r(k)を制御系に入力した場合、DSM信号u(k)が矩形波状の信号として生成され、これを制御対象27に入力することにより、参照信号r(k)と異なる振幅で同じ周波数の、ノイズを有するものの全体として同様の波形の出力信号y(k)が、制御対象27から出力される。このように、ΔΣ変調アルゴリズムの特性は、参照信号r(k)から生成されたDSM信号u(k)を制御対象27に入力したときに、制御対象27の出力y(k)が、参照信号r(k)に対して、異なる振幅で同じ周波数の、全体として同様の波形の信号となるような値として、DSM信号u(k)を生成できるという点にある。言い換えれば、DSM信号u(k)を、参照信号r(k)が制御対象27の実際の出力y(k)に再現されるような値として、生成(算出)できるという点にある。
DSMコントローラ24は、このようなΔΣ変調アルゴリズムの特性を利用し、O2センサ15の出力Voutを目標値Vopに収束させるための制御入力φop(k)を算出するものである。その原理について説明すると、例えば図9に1点鎖線で示すように、出力偏差VO2が値0に対して揺らいでいる場合(すなわち、O2センサ15の出力Voutが目標値Vopに対して揺らいでいる場合)、出力偏差VO2を値0に収束させる(すなわち出力Voutを目標値Vopに収束させる)には、図9に破線で示す、出力偏差VO2を打ち消すような逆位相波形の出力偏差VO2*が生じるように、制御入力φop(k)を生成すればよい。
しかし、前述したように、本実施形態の制御対象では、制御入力φop(k)としての目標空燃比KCMDが制御対象に入力されてからO2センサ15の出力Voutに反映されるまでに、予測時間dt分の時間遅れが発生するため、現在の出力偏差VO2に基づいて、制御入力φop(k)を算出した場合の出力偏差VO2#は、図9に実線で示すように、出力偏差VO2*に対して遅れを生じ、それにより、制御タイミングのずれが生じてしまう。したがって、これを補償するために、本実施形態のADSMコントローラ20におけるDSMコントローラ24では、出力偏差VO2の予測値PREVO2を用いることにより、制御入力φop(k)が、制御タイミングのずれを生じることなく、現在の出力偏差VO2を打ち消すような出力偏差(逆位相波形の出力偏差VO2*と同様の出力偏差)を生じさせる信号として生成される。
具体的には、このDSMコントローラ24では、図10に示すように、反転増幅器24aにより、参照信号r(k)が、値−1、参照信号用のゲインGdおよび予測値PREVO2(k)を互いに乗算した信号として生成される。次に、差分器24bにより、この参照信号r(k)と遅延素子24cで遅延されたDSM信号u''(k−1)との偏差として偏差信号δ(k)が生成される。
次いで、積分器24dにより、偏差積分値σd(k)が、偏差信号δ(k)と遅延素子24eで遅延された偏差積分値σd(k−1)との和の信号として生成され、次に、量子化器24f(符号関数)により、DSM信号u''(k)が、この偏差積分値σd(k)を符号化した値として生成される。そして、増幅器24gにより、増幅DSM信号u(k)がDSM信号u''(k)を所定のゲインFdで増幅した値として生成され、次に、加算器24hにより、この増幅DSM信号u(k)を所定の基準値FLAFBASEに加算した値として、制御入力φop(k)が生成される。
以上のDSMコントローラ24の制御アルゴリズムは、以下の式(27)〜(32)で表される。
r(k)=−1・Gd・PREVO2(k) ……(27)
δ(k)=r(k)−u''(k−1) ……(28)
σd(k)=σd(k−1)+δ(k) ……(29)
u''(k)=sgn(σd(k)) ……(30)
u(k)=Fd・u''(k) ……(31)
φop(k)=FLAFBASE+u(k) ……(32)
ここで、Gd,Fdはゲインを表す。また、符号関数sgn(σd(k))の値は、σd(k)≧0のときにはsgn(σd(k))=1となり、σd(k)<0のときにはsgn(σd(k))=−1となる(なお、σd(k)=0のときに、sgn(σd(k))=0と設定してもよい)。
このDSMコントローラ24では、以上の式(27)〜(32)に示す制御アルゴリズムにより、前述したように、制御入力φop(k)が、制御タイミングのずれを生じることなく、出力偏差VO2を打ち消すような出力偏差VO2*を生じさせる値として算出される。すなわち、制御入力φop(k)が、O2センサ15の出力Voutを目標値Vopに収束させることができる値として算出される。また、制御入力φop(k)が、増幅DSM信号u(k)を所定の基準値FLAFBASEに加算した値として算出されるので、制御入力φop(k)を値0を中心して正負反転する値だけでなく、基準値FLAFBASEを中心として増減を繰り返す値として算出できる。これにより、通常のΔΣ変調アルゴリズムと比べて、制御の自由度を高めることができる。
次に、前記PRISMコントローラ21について説明する。このPRISMコントローラ21は、以下に述べるオンボード同定型スライディングモード制御処理(以下「PRISM処理」という)の制御アルゴリズムにより、O2センサ15の出力Voutを目標値Vopに収束させるための目標空燃比KCMDを算出するものであり、状態予測器22、オンボード同定器23およびスライディングモードコントローラ(以下「SLDコントローラ」という)25により構成されている。なお、このPRISM処理の具体的なプログラムについては後述する。
このPRISMコントローラ21のうちの状態予測器22およびオンボード同定器23については、既に説明したので、ここではSLDコントローラ25についてのみ説明する。このSLDコントローラ25は、スライディングモード制御アルゴリズムに基づいてスライディングモード制御を行うものであり、以下、一般的なスライディングモード制御アルゴリズムについて説明する。このスライディングモード制御アルゴリズムでは、前述した式(1)の離散時間系モデルを制御対象モデルとして用いるため、切換関数σは、下式(33)に示すように、出力偏差VO2の時系列データの線形関数として設定される。
σ(k)=S1・VO2(k)+S2・VO2(k−1) ……(33)
ここで、S1,S2は、−1<(S2/S1)<1の関係が成立するように設定される所定の係数である。
一般にスライディングモード制御アルゴリズムでは、切換関数σが2つの状態変数(本実施形態では出力偏差VO2の時系列データ)で構成されている場合、2つの状態変数で構成される位相空間は、これらをそれぞれ縦軸および横軸とする2次元の位相平面となるため、この位相平面上において、σ=0を満たす2つの状態変数の値の組み合わせは、切換直線と呼ばれる直線上に載ることになる。したがって、制御対象への制御入力を、2つの状態変数の組み合わせが切換直線上に収束する(載る)ように適切に決定することにより、2つの状態変数をいずれも、値0になる平衡点に収束(スライディング)させることができる。さらに、スライディングモード制御アルゴリズムでは、切換関数σの設定により、状態変数の動特性、より具体的には収束挙動や収束速度を指定することができる。例えば、本実施形態のように、切換関数σが2つの状態変数で構成されている場合には、切換直線の傾きを値1に近づけると、状態変数の収束速度が遅くなる一方、値0に近づけると、収束速度が速くなる。
本実施形態では、前記式(33)に示すように、切換関数σが出力偏差VO2の2つの時系列データ、すなわち出力偏差VO2の今回値VO2(k)および前回値VO2(k−1)により構成されているので、これらの今回値VO2(k)および前回値VO2(k−1)の組み合わせを切換直線上に収束させるように、制御対象への制御入力すなわち目標空燃比KCMDを設定すればよい。具体的には、制御量Usl(k)を、基準値FLAFBASEとの和が目標空燃比KCMDとなる値として定義すると、今回値VO2(k)および前回値VO2(k−1)の組み合わせを切換直線上に収束させるための制御量Usl(k)は、適応スライディングモード制御アルゴリズムにより、図11に示す式(34)のように、等価制御入力Ueq(k)、到達則入力Urch(k)および適応則入力Uadp(k)の総和として設定される。
この等価制御入力Ueq(k)は、出力偏差VO2の今回値VO2(k)および前回値VO2(k−1)の組み合わせを切換直線上に拘束しておくためのものであり、具体的には、図11に示す式(35)のように定義される。また、到達則入力Urch(k)は、外乱やモデル化誤差などにより、出力偏差VO2の今回値VO2(k)および前回値VO2(k−1)の組み合わせが切換直線上から外れた際に、これらを切換直線上に収束させるためのものであり、具体的には、図11に示す式(36)のように定義される。この式(36)において、Fはゲインを表す。
さらに、適応則入力Uadp(k)は、制御対象の定常偏差、モデル化誤差および外乱の影響を抑制しながら、出力偏差VO2の今回値VO2(k)および前回値VO2(k−1)の組み合わせを、切換超平面上に確実に収束させるためのものであり、具体的には、図11に示す式(37)のように定義される。この式(37)において、Gはゲインを、ΔTは制御周期をそれぞれ表す。
本実施形態のPRISMコントローラ21のSLDコントローラ25では、前述したように、出力偏差VO2に代えて予測値PREVO2を用いるので、PREVO2(k)≒VO2(k+dt)の関係を適用することにより、以上の式(33)〜(37)のアルゴリズムを、図12に示す式(38)〜(42)に書き換えて用いる。この式(38)におけるσPREは、予測値PREVO2を用いたときの切換関数(以下「予測切換関数」という)の値である。すなわち、このSLDコントローラ25では、以上のアルゴリズムで算出される制御量Usl(k)を基準値FLAFBASEに加算することによって、目標空燃比KCMDが算出される。
以下、ECU2により実行される燃料噴射量の算出処理について、図13を参照しながら説明する。なお、以下の説明では、今回値であることを示す記号(k)を適宜、省略する。図13は、この制御処理のメインルーチンを示しており、本処理は、TDC信号の入力に同期して割り込み実行される。この処理では、後述する適応空燃比制御処理、またはマップ検索処理により算出された目標空燃比KCMDを用いることによって、燃料噴射量TOUTが気筒ごとに算出される。
まず、ステップ1(図では「S1」と略す。以下同じ)において、前述した各種のセンサ10〜19の出力を読み込むとともに、読み込んだデータをRAM内に記憶する。
次に、ステップ2に進み、基本燃料噴射量Timを算出する。この処理では、エンジン回転数NEおよび吸気管内絶対圧PBAに応じて、図示しないマップを検索することにより、基本燃料噴射量Timを算出する。
次いで、ステップ3に進み、総補正係数KTOTALを算出する。この総補正係数KTOTALは、各種の運転パラメータ(例えば吸気温TAや、大気圧PA、エンジン水温TW、アクセル開度APなど)に応じて、各種のテーブルやマップを検索することで各種の補正係数を算出するとともに、これらの各種の補正係数を互いに乗算することにより、算出される。
次に、ステップ4に進み、適応制御フラグF_PRISMONの設定処理を実行する。この処理の内容は図示しないが、具体的には、以下の(A)〜(F)の条件がいずれも成立しているときには、適応空燃比制御処理で算出された目標空燃比KCMDを使用する条件が成立しているとして、それを表すために、適応制御フラグF_PRISMONが「1」にセットされる。一方、(A)〜(F)の条件のうちの少なくとも1つが成立していないときには、適応制御フラグF_PRISMONが「0」にセットされる。
(A)LAFセンサ14およびO2センサ15がいずれも活性化していること。
(B)エンジン3がリーンバーン運転中でないこと。
(C)スロットル弁5が全開状態でないこと。
(D)点火時期の遅角制御中でないこと。
(E)フューエルカット運転中でないこと。
(F)エンジン回転数NEおよび吸気管内絶対圧PBAがいずれも、所定の範囲囲内の値であること。
次に、ステップ5に進み、ステップ4で設定された適応制御フラグF_PRISMONが「1」であるか否かを判別する。この判別結果がYESのときには、ステップ6に進み、目標空燃比KCMDを、後述する適応空燃比制御処理で算出された適応目標空燃比KCMDSLDに設定する。
一方、ステップ5の判別結果がNOのときには、ステップ7に進み、目標空燃比KCMDをマップ値KCMDMAPに設定する。このマップ値KCMDMAPは、エンジン回転数NEおよび吸気管内絶対圧PBAに応じて、図示しないマップを検索することにより、算出される。
以上のステップ6または7に続くステップ8では、オブザーバフィードバック補正係数#nKLAFを気筒ごとに算出する。このオブザーバフィードバック補正係数#nKLAFは、気筒ごとの実際の空燃比のばらつきを補正するためのものであり、具体的には、オブザーバによりLAFセンサ14の出力KACTから気筒ごとの実際の空燃比を推定し、これらの推定した空燃比に応じて、PID制御により算出される。なお、このオブザーバフィードバック補正係数#nKLAFの記号#nは、気筒の番号#1〜#4を表すものであり、これは、後述する要求燃料噴射量#nTCYLおよび最終燃料噴射量#nTOUTにおいても同様である。
次いで、ステップ9に進み、フィードバック補正係数KFBを算出する。このフィードバック補正係数KFBは、LAFセンサ14の出力KACTを目標空燃比KCMDに一致させるためのものであり、具体的には、以下のように算出される。すなわち、LAFセンサ14の出力KACTと目標空燃比KCMDとの偏差に応じて、PID制御によりフィードバック係数KLAFを算出する。また、図示しないSelf Tuning Regulator 型の適応制御器によりフィードバック補正係数KSTRを算出し、これを目標空燃比KCMDで除算することにより、フィードバック補正係数kstrを算出する。そして、エンジン3の運転状態に応じて、これらの2つのフィードバック係数KLAFおよびフィードバック補正係数kstrの一方を、フィードバック補正係数KFBとして設定する。
次いで、ステップ10に進み、補正目標空燃比KCMDMを算出する。この補正目標空燃比KCMDMは、空燃比A/Fの変化による充填効率の変化を補償するためのものであり、前述したステップ6または7で算出された目標空燃比KCMDに応じて、図示しないテーブルを検索することにより算出される。
次に、ステップ11に進み、以上のように算出した基本燃料噴射量Tim、総補正係数KTOTAL、オブザーバフィードバック補正係数#nKLAF、フィードバック補正係数KFB、および補正目標空燃比KCMDMを用い、下式(43)により、気筒ごとの要求燃料噴射量#nTCYLを算出する。
#nTCYL=Tim・KTOTAL・KCMDM・KFB・#nKLAF
……(43)
次に、ステップ12に進み、要求燃料噴射量#nTCYLを付着補正することにより、最終燃料噴射量#nTOUTを算出する。この最終燃料噴射量#nTOUTは、具体的には、今回の燃焼サイクルでインジェクタ6から噴射された燃料が燃焼室の内壁面に付着する割合などを、運転状態に応じて算出し、そのように算出した割合に基づいて、要求燃料噴射量#nTCYLを補正することにより、算出される。
次いで、ステップ13に進み、以上のように算出した最終燃料噴射量#nTOUTに基づく駆動信号を、対応する気筒のインジェクタ6に出力した後、本処理を終了する。以上により、LAFセンサ14の出力KACTを目標空燃比KCMDに一致させるように、混合気の空燃比がフィードバック制御される。
次に、図14および図15を参照しながら、ADSM処理およびPRISM処理を含む適応空燃比制御処理について説明する。この処理は、所定の制御周期ΔT(30msec)で実行される。また、この処理では、エンジン3の運転状態に応じて、ADSM処理、PRISM処理、またはスライディングモード制御量DKCMDSLDを所定値SLDHOLDに設定する処理により、目標空燃比KCMDが算出される。
この処理では、まず、ステップ20において、F/C後判定処理を実行する。この処理の内容は図示しないが、この処理では、フューエルカット運転中は、それを表すためにF/C後判定フラグF_AFCが「1」にセットされ、フューエルカット運転の終了後、所定時間X_TM_AFCが経過したときには、それを表すためにF/C後判定フラグF_AFCが「0」にセットされる。
次に、ステップ21に進み、車速VPに基づいて、エンジン3を搭載した車両が発進したか否かを判定する発進判定処理を実行する。図16に示すように、この処理では、まず、ステップ49において、アイドル運転フラグF_IDLEが「1」であるか否かを判別する。このアイドル運転フラグF_IDLEは、アイドル運転中であるときに「1」に、それ以外のときに「0」にセットされる。
この判別結果がYESで、アイドル運転中であるときには、ステップ50に進み、車速VPが所定車速VSTART(例えば1km/h)より小さいか否かを判別する。この判別結果がYESで、停車中であるときには、ステップ51に進み、ダウンカウント式の第1発進判定タイマのタイマ値TMVOTVSTを第1所定時間TVOTVST(例えば3msec)に設定する。
次いで、ステップ52に進み、ダウンカウント式の第2発進判定タイマのタイマ値TMVSTを、上記第1所定時間TVOTVSTよりも長い第2所定時間TVST(例えば500msec)に設定する。次いで、ステップ53,54において、第1および第2発進フラグF_VOTVST,F_VSTをいずれも「0」にセットした後、本処理を終了する。
一方、ステップ49または50の判別結果がNOのとき、すなわちアイドル運転中でないか、または車両が発進したときには、ステップ55に進み、第1発進判定タイマのタイマ値TMVOTVSTが値0より大きいか否かを判別する。この判別結果がYESで、アイドル運転の終了後または車両の発進後、第1所定時間TVOTVSTが経過していないときには、第1発進モード中であるとして、ステップ56に進み、それを表すために第1発進フラグF_VOTVSTを「1」にセットする。
一方、ステップ55の判別結果がNOで、アイドル運転の終了後または車両の発進後、第1所定時間TVOTVSTが経過したときには、第1発進モードが終了したとして、ステップ57に進み、第1発進フラグF_VOTVSTを「0」にセットする。
ステップ56または57に続くステップ58では、第2発進判定タイマのタイマ値TMVSTが値0より大きいか否かを判別する。この判別結果がYESで、アイドル運転の終了後または車両の発進後、第2所定時間TVSTが経過していないときには、第2発進モード中であるとして、ステップ59に進み、それを表すために第2発進フラグF_VSTを「1」にセットした後、本処理を終了する。
一方、ステップ59の判別結果がNOで、アイドル運転の終了後または車両の発進後、第2所定時間TVSTが経過したときには、第2発進モードが終了したとして、前記ステップ54を実行した後、本処理を終了する。
図14に戻り、ステップ21に続くステップ22では、状態変数の設定処理を実行する。図示しないが、この処理では、RAM内に記憶されている、目標空燃比KCMD、LAFセンサ14の出力KACTおよび出力偏差VO2の時系列データをいずれも、1サンプリングサイクル分ずつ過去側にシフトさせる。その後、KCMD、KACTおよびVO2の時系列データの最新の値と、基準値FLAFBASEと、後述する適応補正項FLAFADPとに基づき、KCMD、KACTおよびVO2の今回値を算出する。
次に、ステップ23に進み、PRISM/ADSM処理の実行判定処理を行う。この処理は、PRISM処理またはADSM処理の実行条件が成立しているか否かを判定するものであり、具体的には、図17に示すフローチャートのように実行される。
すなわち、図17のステップ60〜63において、以下の(G)〜(J)の条件がいずれも成立しているときには、PRISM処理またはADSM処理を実行すべき運転状態にあるとして、それを表すために、ステップ64で、PRISM/ADSM実行フラグF_PRISMCALを「1」にセットした後、本処理を終了する。一方、(G)〜(J)の条件の少なくとも1つが成立していないときには、PRISM処理またはADSM処理を実行すべき運転状態にないとして、それを表すために、ステップ65で、PRISM/ADSM実行フラグF_PRISMCALを「0」にセットした後、本処理を終了する。
(G)O2センサ15が活性化していること。
(H)LAFセンサ14が活性化していること。
(I)エンジン3がリーンバーン運転中でないこと。
(J)点火時期の遅角制御中でないこと。
図14に戻り、ステップ23に続くステップ24では、同定器演算の実行判定処理を行う。この処理は、オンボード同定器23によるパラメータ同定の実行条件が成立しているか否かを判定するものであり、具体的には、図18に示すフローチャートのように実行される。
すなわち、図18のステップ70および71の判別結果がいずれもNOのとき、言い換えれば、スロットル弁開度θTHが全開状態でなく、かつフューエルカット運転中でないときには、パラメータ同定を実行すべき運転状態であるとして、ステップ72に進み、同定実行フラグF_IDCALを「1」にセットした後、本処理を終了する。一方、ステップ70または71の判別結果がYESのときには、パラメータ同定を実行すべき運転状態にないとして、ステップ73に進み、同定実行フラグF_IDCALを「0」にセットした後、本処理を終了する。
図14に戻り、ステップ24に続くステップ25では、各種パラメータ(排気ガスボリュームAB_SVなど)を算出する。この処理の具体的な内容は、後述する。
次に、ステップ26に進み、前記ステップ23で設定されたPRISM/ADSM実行フラグF_PRISMCALが「1」であるか否かを判別する。この判別結果がYESで、PRISM処理またはADSM処理の実行条件が成立しているときには、ステップ27に進み、前記ステップ24で設定された同定実行フラグF_IDCALが「1」であるか否かを判別する。
この判別結果がYESで、オンボード同定器23によるパラメータ同定を実行すべき運転状態のときには、ステップ28に進み、パラメータ初期化フラグF_IDRSETが「1」であるか否かを判別する。この判別結果がNOで、RAMに記憶されているモデルパラメータa1,a2,b1の初期化が不要であるときには、後述するステップ31に進む。
一方、この判別結果がYESで、モデルパラメータa1,a2,b1の初期化が必要であるときには、ステップ29に進み、モデルパラメータa1,a2,b1を、それぞれの初期値に設定した後、それを表すためにステップ30に進み、パラメータ初期化フラグF_IDRSETを「0」にセットする。
このステップ30または28に続くステップ31では、オンボード同定器23の演算を実行し、モデルパラメータa1,a2,b1を同定した後、後述する図15のステップ32に進む。このオンボード同定器23の演算の具体的な内容については、後述する。
一方、ステップ27の判別結果がNOで、パラメータ同定を実行すべき運転状態でないときには、以上のステップ28〜31をスキップして、図15のステップ32に進む。ステップ27または31に続くステップ32では、モデルパラメータa1,a2,b1として、同定値または所定値を選択する。この処理の内容は図示しないが、具体的には、前記ステップ24で設定された同定実行フラグF_IDCALが「1」のときには、モデルパラメータa1,a2,b1をステップ31で同定された同定値に設定する。一方、同定実行フラグF_IDCALが「0」のときには、モデルパラメータa1,a2,b1を所定値に設定する。
次に、ステップ33に進み、後述するように、状態予測器22の演算を実行し、予測値PREVO2を算出する。その後、ステップ34に進み、後述するように、制御量Uslを算出する。
次いで、ステップ35に進み、SLDコントローラ25の安定判別を実行する。この処理の内容は図示しないが、具体的には、予測切換関数σPREの値に基づき、SLDコントローラ25によるスライディングモード制御が安定状態にあるか否かを判別する。
次に、ステップ36および37において、後述するように、SLDコントローラ25およびDSMコントローラ24により、スライディングモード制御量DKCMDSLDおよびΔΣ変調制御量DKCMDDSMをそれぞれ算出する。
次いで、ステップ38に進み、後述するように、SLDコントローラ25により算出されたスライディングモード制御量DKCMDSLD、またはDSMコントローラ24により算出されたΔΣ変調制御量DKCMDDSMを用いて、適応目標空燃比KCMDSLDを算出する。この後、ステップ39に進み、後述するように、適応補正項FLAFADPを算出した後、本処理を終了する。
一方、図14に戻り、前記ステップ26の判別結果がNOで、PRISM処理およびADSM処理の実行条件がいずれも成立していないときには、ステップ40に進み、パラメータ初期化フラグF_IDRSETを「1」にセットする。次に、図15のステップ41に進み、スライディングモード制御量DKCMDSLDを所定値SLDHOLDにセットする。次いで、前述したステップ38,39を実行した後、本処理を終了する。
次に、図19を参照しながら、前述したステップ25の各種パラメータを算出する処理について説明する。この処理では、まず、ステップ80において、下式(44)により、排気ガスボリュームAB_SV(空間速度の推定値)を算出する。
AB_SV=(NE/1500)・PBA・X_SVPRA ……(44)
ここで、X_SVPRAは、エンジン排気量に基づいて決定される所定の係数である。
次に、ステップ81に進み、前述した空燃比操作系のむだ時間KACT_D(=d')、排気系のむだ時間CAT_DELAY(=d)および予測時間dtを算出する。具体的には、ステップ80で算出された排気ガスボリュームAB_SVに応じて、図20に示すテーブルを検索することにより、むだ時間KACT_D,CAT_DELAYをそれぞれ算出するとともに、これらの和(KACT_D+CAT_DELAY)を予測時間dtとして設定する。すなわち、この制御プログラムでは、位相遅れ時間ddが値0に設定される。
このテーブルでは、排気ガスボリュームAB_SVが大きいほど、むだ時間KACT_D,CAT_DELAYがより小さい値に設定されている。これは、排気ガスボリュームAB_SVが大きいほど、排気ガスの流速が大きくなることで、むだ時間KACT_D,CAT_DELAYが短くなることによる。以上のように、むだ時間KACT_D,CAT_DELAYおよび予測時間dtが、排気ガスボリュームに応じて算出されるので、これらを用いて算出した出力偏差VO2の予測値PREVO2に基づき、後述する適応目標空燃比KCMDSLDを算出することにより、制御対象の入出力間の制御タイミングのずれを解消することができる。また、モデルパラメータa1,a2,b1が、上記むだ時間CAT_DELAYを用いて同定されるので、制御対象モデルの動特性を、制御対象の実際の動特性に適合させることができ、それにより、制御対象の入出力間の制御タイミングのずれをさらに解消することができる。
次に、ステップ82に進み、同定アルゴリズムの重みパラメータλ1,λ2の値を算出する。具体的には、重みパラメータλ2を値1に設定すると同時に、重みパラメータλ1を、排気ガスボリュームAB_SVに応じて、図21に示すテーブルを検索することにより算出する。
このテーブルでは、排気ガスボリュームAB_SVが大きいほど、重みパラメータλ1がより小さい値に設定されており、言い換えれば、排気ガスボリュームAB_SVが小さいほど、重みパラメータλ1がより大きくかつ値1により近い値に設定されている。これは、排気ガスボリュームAB_SVが大きいほど、言い換えれば高負荷運転状態であるほど、モデルパラメータの同定をより迅速に行う必要があるので、重みパラメータλ1をより小さく設定することによって、モデルパラメータの最適値への収束速度を高めるためである。これに加えて、排気ガスボリュームAB_SVが小さいほど、すなわち低負荷運転状態であるほど、空燃比が変動しやすくなり、排気ガス浄化率が不安定になりやすいことで、モデルパラメータの良好な同定精度を確保する必要があるので、重みパラメータλ1を値1に近づける(最小2乗法アルゴリズムに近づける)ことによって、モデルパラメータの同定精度をより高めるためである。
次に、ステップ83に進み、モデルパラメータa1,a2の値を制限するための下限値X_IDA2Lと、モデルパラメータb1の値を制限するための下限値X_IDB1Lおよび上限値X_IDB1Hとを、排気ガスボリュームAB_SVに応じて、図22に示すテーブルを検索することにより算出する。
このテーブルでは、下限値X_IDA2Lは、排気ガスボリュームAB_SVが大きいほど、より大きい値に設定されている。これは、排気ガスボリュームAB_SVの変化に応じたむだ時間の増減に伴い、制御系が安定状態となるモデルパラメータa1,a2の組み合わせが変化することによる。また、下限値X_IDB1Lおよび上限値X_IDB1Hも、排気ガスボリュームAB_SVが大きいほど、より大きい値に設定されている。これは、排気ガスボリュームAB_SVが大きいほど、触媒前空燃比(第1触媒装置8aよりも上流側の排気ガスの空燃比)がO2センサ15の出力Voutに及ぼす影響の度合、すなわち制御対象のゲインがより大きくなることによる。
次いで、ステップ84に進み、移動平均フィルタリング処理のフィルタ次数nを算出した後、本処理を終了する。この処理では、フィルタ次数nを、排気ガスボリュームAB_SVに応じて、図23に示すテーブルを検索することにより、算出する。
このテーブルでは、排気ガスボリュームAB_SVが大きいほど、フィルタ次数nがより小さい値に設定されている。これは、以下の理由による。すなわち、前述したように、排気ガスボリュームAB_SVが変化すると、制御対象の周波数特性、特にゲイン特性が変化するので、制御対象モデルのゲイン特性を、制御対象の実際のゲイン特性に一致させるためには、重み付き最小2乗法アルゴリズムの周波数重み特性を、排気ガスボリュームAB_SVに応じて適切に補正する必要がある。したがって、移動平均フィルタリング処理のフィルタ次数nを、上記テーブルのように排気ガスボリュームAB_SVに応じて設定することにより、排気ガスボリュームAB_SVの変化にかかわらず、一定の同定重みを同定アルゴリズムにおいて確保できるとともに、制御対象モデルと制御対象との間で互いのゲイン特性を一致させることができ、これにより、同定精度を向上させることができる。
次に、図24を参照しながら、前記ステップ31のオンボード同定器23の演算処理について説明する。同図に示すように、この処理では、まず、ステップ90において、前述した式(22)より、ゲイン係数KP(k)を算出する。次に、ステップ91に進み、前述した式(20)より、出力偏差VO2の同定値VO2HAT(k)を算出する。
次いで、ステップ92に進み、前述した式(18)(19)より、同定誤差フィルタ値ide_f(k)を算出する。次に、ステップ93に進み、前述した式(16)より、モデルパラメータのベクトルθ(k)を算出した後、ステップ94に進み、モデルパラメータのベクトルθ(k)の安定化処理を実行する。この処理については後述する。
次いで、ステップ95に進み、前述した式(23)より、正方行列P(k)の次回値P(k+1)を算出する。この次回値P(k+1)は、次回のループでの算出において、正方行列P(k)の値として用いられる。
以下、図25を参照しながら、上記ステップ94におけるモデルパラメータのベクトルθ(k)の安定化処理について説明する。同図に示すように、まず、ステップ100で、3つのフラグF_A1STAB,F_A2STAB,F_B1STABをいずれも「0」にセットする。
次に、ステップ101に進み、後述するように、a1'&a2'のリミット処理を実行する。次いで、ステップ102で、後述するように、b1'のリミット処理を実行した後、本処理を終了する。
以下、図26を参照しながら、上記ステップ101のa1'&a2'のリミット処理について説明する。同図に示すように、まず、ステップ110において、前記ステップ93で算出したモデルパラメータの同定値a2'が、前記図19のステップ83で算出された下限値X_IDA2L以上であるか否かを判別する。この判別結果がNOのときには、ステップ111に進み、制御系を安定化させるために、モデルパラメータa2を下限値X_IDA2Lに設定すると同時に、モデルパラメータa2の安定化を実行したことを表すために、フラグF_A2STABを「1」にセットする。一方、この判別結果がYESで、a2'≧X_IDA2Lのときには、ステップ112に進み、モデルパラメータa2を同定値a2'に設定する。
これらのステップ111または112に続くステップ113では、前記ステップ93で算出したモデルパラメータの同定値a1'が、所定の下限値X_IDA1L(例えば値−2以上で値0より小さい一定値)以上であるか否かを判別する。この判別結果がNOのときには、ステップ114に進み、制御系を安定化させるために、モデルパラメータa1を下限値X_IDA1Lに設定すると同時に、モデルパラメータa1の安定化を実行したことを表すために、フラグF_A1STABを「1」にセットする。
一方、ステップ113の判別結果がYESのときには、ステップ115に進み、同定値a1'が、所定の上限値X_IDA1H(例えば値2)以下であるか否かを判別する。この判別結果がYESで、X_IDA1L≦a1'≦X_IDA1Hのときには、ステップ116に進み、モデルパラメータa1を同定値a1'に設定する。一方、この判別結果がNOで、X_IDA1H<a1'のときには、ステップ117に進み、モデルパラメータa1を上限値X_IDA1Hに設定すると同時に、モデルパラメータa1の安定化を実行したことを表すために、フラグF_A1STABを「1」にセットする。
これらのステップ114、116または117に続くステップ118では、以上のように算出したモデルパラメータa1の絶対値と、モデルパラメータa2との和(|a1|+a2)が、所定の判定値X_A2STAB(例えば値0.9)以下であるか否かを判別する。この判別結果がYESのときには、モデルパラメータa1,a2の組み合わせが、制御系の安定性を確保できる範囲(図27にハッチングで示す規制範囲)内にあるとして、そのまま本処理を終了する。
一方、ステップ118の判別結果がNOのときには、ステップ119に進み、モデルパラメータa1が、判定値X_A2STABから下限値X_IDA2Lを減算した値(X_A2STAB−X_IDA2L)以下であるか否かを判別する。この判別結果がYESのときには、ステップ120に進み、モデルパラメータa2を、判定値X_A2STABからモデルパラメータa1の絶対値を減算した値(X_A2STAB−|a1|)に設定すると同時に、モデルパラメータa2の安定化を実行したことを表すために、フラグF_A2STABを「1」にセットした後、本処理を終了する。
一方、ステップ119の判別結果がNOで、a1>(X_A2STAB−X_IDA2L)のときには、ステップ121に進み、制御系を安定化させるために、モデルパラメータa1を、判定値X_A2STABから下限値X_IDA2Lを減算した値(X_A2STAB−X_IDA2L)に設定し、モデルパラメータa2を下限値X_IDA2Lに設定する。これと同時に、モデルパラメータa1,a2の安定化を実行したことを表すために、フラグF_A1STAB,F_A2STABをいずれも「1」にセットする。その後、本処理を終了する。
前述したように、逐次型の同定アルゴリズムでは、制御対象の入出力が定常状態になると、自己励起条件の不足化に起因して、同定されたモデルパラメータの絶対値が増大する、いわゆるドリフト現象が発生しやすくなることで、制御系が不安定になったり、振動状態になったりすることがある。また、その安定限界も、エンジン3の運転状態に応じて変化する。例えば、低負荷運転状態のときには、排気ガスボリュームAB_SVが小さくなることで、供給された混合気に対する排気ガスの応答遅れやむだ時間などが大きくなり、それにより、O2センサ15の出力Voutが振動状態になりやすい。
これに対して、以上のa1'&a2'のリミット処理では、モデルパラメータa1,a2の組み合わせが、図27にハッチングで示す規制範囲内の値に収まるように設定されるとともに、この規制範囲を決定する下限値X_IDA2Lが、排気ガスボリュームAB_SVに応じて設定されるので、この規制範囲をエンジン3の運転状態の変化、すなわち制御対象の動特性の変化に伴う安定限界の変化が反映された適切な安定限界の範囲として設定することができ、そのような規制範囲内に収まるように規制されたモデルパラメータa1,a2を用いることにより、上記ドリフト現象の発生を回避でき、制御系の安定性を確保することができる。これに加えて、モデルパラメータa1,a2の組み合わせを、制御系の安定性を確保できる上記規制範囲内の値として設定することにより、モデルパラメータa1およびモデルパラメータa2を単独で規制した場合における、制御系の不安定な状態の発生を回避できる。以上により、制御系の安定性を向上させることができ、排気ガス浄化率を向上させることができる。
次に、図28を参照しながら、前記ステップ102のb1'のリミット処理について説明する。同図に示すように、この処理では、ステップ130において、前記ステップ93で算出されたモデルパラメータの同定値b1'が、前記図19のステップ83で算出された下限値X_IDB1L以上であるか否かを判別する。
この判別結果がYESで、b1'≧X_IDB1Lのときには、ステップ1311に進み、モデルパラメータの同定値b1'が、前記図19のステップ83で算出された上限値X_IDB1H以下であるか否かを判別する。この判別結果がYESで、X_IDB1L≦b1'≦X_IDB1Hのときには、ステップ132に進み、モデルパラメータb1を同定値b1'に設定した後、本処理を終了する。
一方、ステップ131の判別結果がNOで、b1'>X_IDB1Hのときには、ステップ133に進み、モデルパラメータb1を上限値X_IDB1Hに設定すると同時に、それを表すためにフラグF_B1LMTを「1」にセットした後、本処理を終了する。
一方、ステップ130の判別結果がNOで、b1'<X_IDB1Lのときには、ステップ134に進み、モデルパラメータb1を下限値X_IDB1Lに設定すると同時に、それを表すためにフラグF_B1LMTを「1」にセットした後、本処理を終了する。
以上のb1'のリミット処理を実行することにより、モデルパラメータb1を、X_IDB1L以上かつX_IDB1H以下の規制範囲内の値に制限することができ、それにより、逐次型の同定アルゴリズムによるドリフト現象の発生を回避できる。さらに、前述したように、これらの上下限値X_IDB1H,X_IDB1Lが、排気ガスボリュームAB_SVに応じて設定されるので、規制範囲をエンジン3の運転状態の変化、すなわち制御対象の動特性の変化に伴う安定限界の変化が反映された適切な安定限界の範囲として、設定することができ、そのような規制範囲内に規制されたモデルパラメータb1を用いることにより、制御系の安定性を確保することができる。以上により、制御系の安定性を向上させることができ、排気ガス浄化率を向上させることができる。
次に、図29を参照しながら、前述したステップ33の状態予測器22の演算処理について説明する。この処理では、まず、ステップ140において、前述した式(7)の行列要素α1,α2,βi,βjを算出する。次いで、ステップ141に進み、ステップ140で算出した行列要素α1,α2,βi,βjを式(7)に適用することにより、出力偏差VO2の予測値PREVO2を算出した後、本処理を終了する。
次に、図30を参照しながら、前述したステップ34の制御量Uslを算出する処理について説明する。この処理では、まず、ステップ150において、前述した図12の式(38)により、予測切換関数σPREを算出する。
次に、ステップ151に進み、予測切換関数σPREの積算値SUMSIGMAを算出する。この処理では、図31に示すように、まず、ステップ160において、下記の3つの条件(L)〜(N)のうちの少なくとも1つが成立しているか否かを判別する。
(L)適応制御フラグF_PRISMONが「1」であること。
(M)後述する積算値保持フラグF_SS_HOLDが「0」であること。
(N)後述するADSM実行フラグF_KOPRが「0」であること。
このステップ160の判別結果がYESのとき、すなわち積算値SUMSIGMAの算出条件が成立しているときには、ステップ161に進み、積算値SUMSIGMAの今回値SUMSIGMA(k)を、前回値SUMSIGMA(k−1)に、制御周期ΔTと予測切換関数σPREとの積を加算した値[SUMSIGMA(k−1)+ΔT・σPRE]に設定する。
次いで、ステップ162に進み、ステップ161で算出した今回値SUMSIGMA(k)が所定の下限値SUMSLより大きいか否かを判別する。この判別結果がYESのときには、ステップ162に進み、今回値SUMSIGMA(k)が所定の上限値SUMSHより小さいか否かを判別する。この判別結果がYESで、SUMSL<SUMSIGMA(k)<SUMSHのときには、そのまま本処理を終了する。
一方、ステップ163の判別結果がNOで、SUMSIGMA(k)≧SUMSHのときには、ステップ164に進み、今回値SUMSIGMA(k)を上限値SUMSHに設定した後、本処理を終了する。一方、ステップ162の判別結果がNOで、SUMSIGMA(k)≦SUMSLのときには、ステップ165に進み、今回値SUMSIGMA(k)を下限値SUMSLに設定した後、本処理を終了する。
一方、ステップ160の判別結果がNOのとき、すなわち3つの条件(L)〜(N)がいずれも不成立で、積算値SUMSIGMAの算出条件が不成立であるときには、ステップ166に進み、今回値SUMSIGMA(k)を前回値SUMSIGMA(k−1)に設定する。すなわち、積算値SUMSIGMAをホールドする。この後、本処理を終了する。
図30に戻り、ステップ151に続くステップ152〜154において、前述した図12の式(40)〜(42)により、等価制御入力Ueq、到達則入力Urchおよび適応則入力Uadpをそれぞれ算出する。
次に、ステップ155に進み、これらの等価制御入力Ueq、到達則入力Urchおよび適応則入力Uadpの和を、制御量Uslとして設定した後、本処理を終了する。
次に、図32,33を参照しながら、前述した図15のステップ36のスライディングモード制御量DKCMDSLDの算出処理について説明する。この処理では、まず、ステップ170において、制御量Uslのリミット値算出処理を実行する。この処理では、その詳細は説明は省略するが、前述したステップ35のコントローラの安定判別処理の判別結果と、後述する制御量Uslの適応上下限値Usl_ah,Usl_alとに基づいて、非アイドル運転用の上下限値Usl_ahf,Usl_alfと、アイドル運転用の上下限値Usl_ahfi,Usl_alfiとをそれぞれ算出する。
次いで、ステップ171に進み、アイドル運転フラグF_IDLEが「0」であるか否かを判別する。この判別結果がYESで、アイドル運転中でないときには、ステップ171に進み、前述した図30の処理で算出された制御量Uslが、非アイドル運転用の下限値Usl_alf以下であるか否かを判別する。
この判別結果がNOで、Usl>Usl_alfのときには、ステップ173に進み、制御量Uslが非アイドル運転用の上限値Usl_ahf以上であるか否かを判別する。この判別結果がNOで、Usl_alf<Usl<Usl_ahfのときには、ステップ174に進み、スライディングモード制御量DKCMDSLDを制御量Uslに設定すると同時に、積算値保持フラグF_SS_HOLDを「0」にセットする。
次いで、ステップ175に進み、適応下限値の今回値Usl_al(k)を、前回値Usl_al(k−1)に所定の減少側値X_AL_DECを加算した値[Usl_al(k−1)+X_AL_DEC]に設定すると同時に、適応上限値の今回値Usl_ah(k)を、前回値Usl_ah(k−1)から所定の減少側値X_AL_DECを減算した値[Usl_al(k−1)−X_AL_DEC]に設定した後、本処理を終了する。
一方、ステップ173の判別結果がYESで、Usl≧Usl_ahfのときには、ステップ176に進み、スライディングモード制御量DKCMDSLDを非アイドル運転用の適応上限値Usl_ahfに設定すると同時に、積算値保持フラグF_SS_HOLDを「1」にセットする。
次いで、ステップ177に進み、始動後タイマのタイマ値TMACRが所定時間X_TMAWASTより小さいこと、またはF/C後判定フラグF_AFCが「1」であることが成立しているか否かを判別する。この始動後タイマは、エンジン3の始動後の経過時間を計時するアップカウント式のタイマである。
この判別結果がYESのとき、すなわち、エンジン始動後、所定時間X_TMAWASTが経過していないか、またはフューエルカット運転の終了後、所定時間X_TM_AFCが経過していないときには、そのまま本処理を終了する。
一方、ステップ177の判別結果がNOのとき、すなわち、エンジン始動後、所定時間X_TMAWASTが経過し、かつフューエルカット運転の終了後、所定時間X_TM_AFCが経過したときには、ステップ178に進み、適応下限値の今回値Usl_al(k)を、前回値Usl_al(k−1)に減少側値X_AL_DECを加算した値[Usl_al(k−1)+X_AL_DEC]に設定すると同時に、適応上限値の今回値Usl_ah(k)を、前回値Usl_ah(k−1)に所定の増大側値X_AL_INCを加算した値[Usl_ah(k−1)+X_AL_INC]に設定した後、本処理を終了する。
一方、ステップ172の判別結果がYESで、Usl≦Usl_alfのときには、ステップ179に進み、スライディングモード制御量DKCMDSLDを非アイドル運転用の適応下限値Usl_alfに設定すると同時に、積算値保持フラグF_SS_HOLDを「1」にセットする。
次いで、ステップ180に進み、第2発進フラグF_VSTが「1」であるか否かを判別する。この判別結果がYESで、車両の発進後、第2所定時間TVSTが経過しておらず、第2発進モード中であるときには、そのまま本処理を終了する。
一方、ステップ180の判別結果がNOで、車両の発進後、第2所定時間TVSTが経過し、第2発進モードが終了したときには、ステップ181に進み、適応下限値の今回値Usl_al(k)を、前回値Usl_al(k−1)から増大側値X_AL_INCを減算した値[Usl_al(k−1)−X_AL_INC]に設定すると同時に、適応上限値の今回値Usl_ah(k)を、前回値Usl_ah(k−1)から減少側値X_AL_DECを減算した値[Usl_ah(k−1)−X_AL_DEC]に設定する。その後、本処理を終了する。
一方、ステップ171の判別結果がNOで、アイドル運転中であるときには、図33のステップ182に進み、制御量Uslが、アイドル運転用の下限値Usl_alfi以下であるか否かを判別する。この判別結果がNOで、Usl>Usl_alfiのときには、ステップ183に進み、制御量Uslがアイドル運転用の上限値Usl_ahfi以上であるか否かを判別する。
この判別結果がNOで、Usl_alfi<Usl<Usl_ahfiのときには、ステップ184に進み、スライディングモード制御量DKCMDSLDを制御量Uslに設定すると同時に、積算値保持フラグF_SS_HOLDを「0」にセットした後、本処理を終了する。
一方、ステップ183の判別結果がYESで、Usl≧Usl_ahfiのときには、ステップ185に進み、スライディングモード制御量DKCMDSLDをアイドル運転用の上限値Usl_ahfiに設定すると同時に、積算値保持フラグF_SS_HOLDを「1」にセットした後、本処理を終了する。
一方、ステップ182の判別結果がYESで、Usl≦Usl_alfiのときには、ステップ186に進み、スライディングモード制御量DKCMDSLDをアイドル運転用の下限値Usl_alfiに設定すると同時に、積算値保持フラグF_SS_HOLDを「1」にセットした後、本処理を終了する。
次に、図34を参照しながら、前述した図15のステップ37のΔΣ変調制御量DKCMDDSMを算出する処理について説明する。同図に示すように、この処理では、まず、ステップ190において、RAMに記憶されている、前回のループで算出されたDSM信号値の今回値DSMSGNS(k)[=u''(k)]を、前回値DSMSGNS(k−1)[=u''(k−1)]として設定する。
次に、ステップ191に進み、RAMに記憶されている、前回のループで算出された偏差積分値の今回値DSMSIGMA(k)[=σd(k)]を、前回値DSMSIGMA(k−1)[=σd(k−1)]として設定する。
次いで、ステップ192に進み、出力偏差の予測値PREVO2(k)が値0以上であるか否かを判別する。この判別結果がYESのときには、エンジン3が混合気の空燃比をリーン側に変更すべき運転状態にあるとして、ステップ193に進み、参照信号値用のゲインKRDSM(=Gd)を、リーン化用の値KRDSMLに設定した後、後述するステップ195に進む。
一方、ステップ192の判別結果がNOのときには、エンジン3が混合気の空燃比をリッチ側に変更すべき運転状態にあるとして、ステップ194に進み、参照信号値用のゲインKRDSMを、リーン化用の値KRDSMLよりも大きいリッチ化用の値KRDSMRに設定した後、ステップ195に進む。
このように、リーン化用の値KRDSMLおよびリッチ化用の値KRDSMRが互いに異なる値に設定されている理由は、以下による。すなわち、混合気の空燃比をリーン側に変更する際には、第1触媒装置8aのNOx浄化率を確保すべく、リーンバイアスによるNOx排出量の抑制効果を得るために、リーン化用の値KRDSMLをリッチ化用の値KRDSMRよりも小さい値に設定することで、O2センサ15の出力Voutの目標値Vopへの収束速度がリッチ側への変更時よりも遅くなるように、空燃比を制御する。一方、混合気の空燃比をリッチ側に変更する際には、第1および第2触媒装置8a,8bのNOx浄化率を十分に回復させるため、リッチ化用の値KRDSMRをリーン化用の値KRDSMLよりも大きい値に設定することで、O2センサ15の出力Voutの目標値Vopへの収束速度がリーン側への変更時よりも速くなるように、空燃比を制御する。以上により、混合気の空燃比をリッチ側およびリーン側に変更する際、良好な排気ガス浄化率を確保することができる。
ステップ193または194に続くステップ195では、値−1、参照信号値用のゲインKRDSMおよび予測値の今回値PREVO2(k)を互いに乗算した値から、上記ステップ190で算出したDSM信号値の前回値DSMSGNS(k−1)を減算した値[−1・KRDSM・PREVO2(k)−DSMSGNS(k−1)]を、偏差信号値DSMDELTA[=δ(k)]として設定する。この処理は、前述した式(27),(28)に相当する。
次いで、ステップ196に進み、偏差積分値の今回値DSMSIGMA(k)を、ステップ191で算出した前回値DSMSIGMA(k−1)と、ステップ195で算出した偏差信号値DSMDELTAとの和[DSMSIGMA(k−1)+DSMDELTA]に設定する。この処理は、前述した式(29)に相当する。
次に、ステップ197〜199において、ステップ196で算出した偏差積分値の今回値DSMSIGMA(k)が値0以上のときには、DSM信号値の今回値DSMSGNS(k)を値1に設定し、偏差積分値の今回値DSMSIGMA(k)が値0よりも小さいときには、DSM信号値の今回値DSMSGNS(k)を値−1に設定する。以上のステップ197〜199の処理は、前述した式(30)に相当する。
次いで、ステップ200において、排気ガスボリュームAB_SVに応じて、図35に示すテーブルを検索することにより、DSM信号値用のゲインKDSM(=Fd)を算出する。同図に示すように、このゲインKDSMは、排気ガスボリュームAB_SVが小さいほど、より大きな値に設定されている。これは、排気ガスボリュームAB_SVが小さいほど、すなわちエンジン3の運転負荷が小さい状態であるほど、O2センサ15の出力Voutの応答性が低下するので、それを補償するためである。このようにゲインKSDMを設定することにより、ΔΣ変調制御量DKCMDDSMを、例えばオーバーゲイン状態などを回避しながら、エンジン3の運転状態に応じて適切に算出することができ、それにより、排気ガス浄化率を向上させることができる。
なお、このゲインKDSMの算出に用いるテーブルは、ゲインKDSMが排気ガスボリュームAB_SVに応じて設定されている上記テーブルに限らず、エンジン3の運転負荷状態を表すパラメータ(例えば基本燃料噴射時間Tim)に応じてゲインKDSMが予め設定されているものであればよい。また、触媒装置8a,8bの劣化判別器が設けられている場合には、この劣化判別器で判別された触媒装置8a,8bの劣化度合が大きいほど、ゲインDSMをより小さい値に補正するようにしてもよい。
次に、ステップ201に進み、ΔΣ変調制御量DKCMDDSMを、DSM信号値用のゲインKDSMと、DSM信号値の今回値DSMSGNS(k)とを互いに乗算した値[KDSM・DSMSGNS(k)]に設定した後、本処理を終了する。この処理が、前述した式(31)に相当する。
次に、図36を参照しながら、前述した図15のステップ38の適応目標空燃比KCMDSLDを算出する処理について説明する。同図に示すように、この処理では、まず、ステップ210において、アイドル運転フラグF_IDLEが「1」であること、およびアイドル時ADSM実行フラグF_SWOPRIが「1」であることがいずれも成立しているか否かを判別する。このアイドル時ADSM実行フラグF_SWOPRIは、エンジン3がアイドル運転中で、かつADSM処理を実行すべき運転状態のときに「1」に、それ以外のときに「0」にセットされる。
この判別結果がYESのとき、すなわちエンジン3がアイドル運転中でADSM処理により適応目標空燃比KCMDSLDを算出すべき運転状態のときには、ステップ211に進み、適応目標空燃比KCMDSLDを、基準値FLAFBASEにΔΣ変調制御量DKCMDDSMを加算した値[FLAFBASE+DKCMDDSM]に設定する。この処理が、前述した式(32)に相当する。
次いで、ステップ212に進み、ADSM処理を実行したことを表すために、ADSM実行済みフラグF_KOPRを「1」に設定した後、本処理を終了する。
一方、ステップ210の判別結果がNOのときには、ステップ213に進み、触媒/O2センサフラグF_FCATDSMが「1」であるか否かを判別する。この触媒/O2センサフラグF_FCATDSMは、以下の4つの条件(O)〜(R)のうちの少なくとも1つが成立しているときに「1」に、それ以外は「0」にセットされる。
(O)第1触媒装置8aの触媒容量が所定値以上であること。
(P)第1触媒装置8aの貴金属含有量が所定値以上であること。
(Q)LAFセンサ14がエンジン3の排気管7に設けられていないこと。
(R)O2センサ15が第2触媒装置8bよりも下流に設けられていること。
この判別結果がYESのときには、ステップ214に進み、第1発進フラグF_VOTVST、および発進後ADSM実行フラグF_SWOPRVSTがいずれも「1」であるか否かを判別する。この発進後ADSM実行フラグF_SWOPRVSTは、車両の発進後で、かつエンジン3がADSM処理を実行すべき運転状態のときに「1」に、それ以外のときに「0」にセットされる。
この判別結果がYESのとき、すなわち車両の発進後、第1所定時間TVOTVSTが経過し、かつADSM処理を実行すべき運転状態のときには、前述したように、ステップ211,212を実行した後、本処理を終了する。
一方、ステップ214の判別結果がNOのときには、ステップ215に進み、排気ガスボリュームAB_SVが所定値OPRSVH以下であること、および小排気時ADSM実行フラグF_SWOPRSVが「1」であることがいずれも成立しているか否かを判別する。小排気時ADSM実行フラグF_SWOPRSVは、エンジン3の排気ガスボリュームAB_SVが小さい状態で、かつエンジン3がADSM処理を実行すべき運転状態のときに「1」に、それ以外のときに「0」にセットされる。
この判別結果がYESのとき、すなわち排気ガスボリュームAB_SVが小さく、かつエンジン3がADSM処理を実行すべき運転状態のときには、前述したように、ステップ211,212を実行した後、本処理を終了する。
一方、ステップ215の判別結果がNOのときには、エンジン3がPRISM処理を実行すべき運転状態であるとして、ステップ216に進み、適応目標空燃比KCMDSLDを、基準値FLAFBASEに適応補正項FLAFADPおよびスライディングモード制御量DKCMDSLDを加算した値[FLAFBASE+FLAFADP+DKCMDSLD]に設定する。次いで、ステップ217に進み、PRISM処理を実行したことを表すために、ADSM実行済みフラグF_KOPRを「0」にセットした後、本処理を終了する。
一方、前記ステップ213の判別結果がNOのとき、すなわち前述した4つの条件(O)〜(R)がいずれも成立していないときには、ステップ214,215をスキップし、前述したステップ216,217を実行した後、本処理を終了する。以上のように、この適応目標空燃比KCMDSLDの算出処理では、適応目標空燃比KCMDSLDが、エンジン3の運転状態に応じて、ADSM処理またはPRISM処理に切り換えて算出される。
次に、図37を参照しながら、図15のステップ39の適応補正項FLAFADPの算出処理について説明する。同図に示すように、この処理では、まず、ステップ220において、出力偏差VO2が所定の範囲(ADL<VO2<ADH)内の値であるか否かを判別する。この判別結果がYESのとき、すなわち出力偏差VO2が小さく、O2センサ15の出力Voutが目標値Vopの近傍にあるときには、ステップ221に進み、適応則入力Uadpが所定の下限値NRLより小さいか否かを判別する。
この判別結果がNOで、Uadp≧NRLのときには、ステップ222に進み、適応則入力Uadpが所定の上限値NRHより大きいか否かを判別する。この判別結果がNOで、NRL≦Uadp≦NRHのときには、ステップ223に進み、適応補正項の今回値FLAFADP(k)を前回値FLAFADP(k−1)に設定する。すなわち、適応補正項FLAFADPの値をホールドする。この後、本処理を終了する。
一方、ステップ222の判別結果がYESで、Uadp>NRHのときには、ステップ224に進み、適応補正項の今回値FLAFADP(k)を、前回値FLAFADP(k−1)に所定の更新値X_FLAFDLTを加算した値[FLAFADP(k−1)+X_FLAFDLT]に設定した後、本処理を終了する。
一方、ステップ221の判別結果がYESで、Uadp<NRLのときには、ステップ225に進み、適応補正項の今回値FLAFADP(k)を、前回値FLAFADP(k−1)から所定の更新値X_FLAFDLTを減算した値[FLAFADP(k−1)−X_FLAFDLT]に設定した後、本処理を終了する。
以上のように、第1実施形態の制御装置1によれば、目標空燃比KCMDを制御入力とし、O2センサ15の出力Voutを出力とする、位相遅れやむだ時間などが比較的大きい動特性を有する制御対象において、制御対象の入出力間での制御タイミングのずれを適切に解消することができ、それにより、制御の安定性および制御性を向上させることができ、排気ガス浄化率を向上させることができる。
以下、本発明の第2〜第10実施形態に係る制御装置について説明する。なお、以下の各実施形態の説明では、上述した第1実施形態と同じまたは同等の構成要素については、同一の参照番号を付し、その説明は適宜、省略するものとする。
まず、図38を参照しながら、第2実施形態の制御装置について説明する。同図に示すように、この第2実施形態の制御装置1は、第1実施形態の制御装置1と比べて、オンボード同定器23のみが異なっている。具体的には、第1実施形態のオンボード同定器23では、KACT、Voutおよびφop(KCMD)に基づいて、モデルパラメータa1,a2,b1が算出されるのに対して、本実施形態のオンボード同定器23では、Voutおよびφopに基づいて、モデルパラメータa1,a2,b1が算出される。
すなわち、このオンボード同定器23では、第1実施形態の図6の式(16)〜(23)に示す同定アルゴリズムに代えて、前述した図5の式(8)〜(15)に示す同定アルゴリズムにより、モデルパラメータの同定値a1',a2',b1'が算出されるとともに、これらに前述した図26,28のリミット処理を施すことにより、モデルパラメータa1,a2,b1が算出される。このオンボード同定器23の演算処理の具体的なプログラムは、図示しないが、第1実施形態ものとほぼ同様に構成される。以上のような本実施形態の制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。
次に、図39を参照しながら、第3実施形態の制御装置について説明する。同図に示すように、この第3実施形態の制御装置1は、第1実施形態の制御装置1と比べて、状態予測器22のみが異なっている。具体的には、第1実施形態の状態予測器22では、a1、a2、b1、KACT、Voutおよびφop(KCMD)に基づいて、予測値PREVO2が算出されるのに対して、本実施形態のオンボード同定器23では、a1、a2、b1、Voutおよびφopに基づいて、予測値PREVO2が算出される。
すなわち、この状態予測器22では、第1実施形態の図4の式(7)に示す予測アルゴリズムに代えて、同図の式(6)に示す予測アルゴリズムにより、出力偏差VO2の予測値PREVO2が算出される。この状態予測器22の演算処理の具体的なプログラムは、図示しないが、第1実施形態のものとほぼ同様に構成される。この制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。
次に、図40を参照しながら、第4実施形態の制御装置について説明する。同図に示すように、この第4実施形態の制御装置1は、第1実施形態の制御装置1と比べると、ADSMコントローラ20、PRISMコントローラ21およびオンボード同定器23に代えて、スケジュール型DSMコントローラ20A、スケジュール型状態予測スライディングモードコントローラ21Aおよびパラメータスケジューラ28を用いることで、モデルパラメータa1,a2,b1を算出する点のみが異なっている。
このパラメータスケジューラ28では、まず、前述した式(44)により、エンジン回転数NEおよび吸気管内絶対圧PBAに基づいて、排気ガスボリュームAB_SVが算出される。次いで、図41に示すテーブルにより、排気ガスボリュームAB_SVに応じて、モデルパラメータa1,a2,b1が算出される。
このテーブルでは、モデルパラメータa1は、排気ガスボリュームAB_SVが大きいほど、より小さい値に設定されており、これとは逆に、モデルパラメータa2,b1は、排気ガスボリュームAB_SVが大きいほど、より大きい値に設定されている。これは、排気ガスボリュームAB_SVの増大に伴い、制御対象の出力すなわちO2センサ15の出力Voutが安定化する一方、排気ガスボリュームAB_SVの減少に伴い、O2センサ15の出力Voutが振動的になることによる。
スケジュール型DSMコントローラ20Aは、以上のように算出されたモデルパラメータa1,a2,b1を用い、前述した第1実施形態と同様のDSMコントローラ24により目標空燃比KCMDを算出する。また、スケジュール型状態予測スライディングモードコントローラ21Aも、以上のように算出されたモデルパラメータa1,a2,b1を用い、前述した第1実施形態と同様のSLDコントローラ25により目標空燃比KCMDを算出する。
この制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。これに加えて、パラメータスケジューラ28を用いることにより、オンボード同定器23を用いる場合と比べて、モデルパラメータa1,a2,b1を、より迅速に算出することができる。これにより、制御の応答性を向上させることができ、良好な排気ガス浄化率をより迅速に確保することができる。
次に、図42を参照しながら、第5実施形態の制御装置について説明する。この第5実施形態の制御装置1は、第1実施形態の制御装置1のDSMコントローラ24に代えて、SDMコントローラ29を用いる点のみが異なっている。このSDMコントローラ29は、ΣΔ変調アルゴリズムを適用した制御アルゴリズムにより、予測値PREVO2(k)に基づいて、制御入力φop(k)を算出するものである。
すなわち、同図に示すように、このSDMコントローラ29では、反転増幅器29aにより、参照信号r(k)が、値−1、参照信号用のゲインGdおよび予測値PREVO2(k)を互いに乗算した信号として生成される。次に、積分器29bにより、参照信号積分値σdr(k)が、遅延素子29cで遅延された参照信号積分値σdr(k−1)と参照信号r(k)との和の信号として生成される。一方、積分器29dにより、SDM信号積分値σdu(k)が、遅延素子29eで遅延されたSDM信号積分値σdu(k−1)と、遅延素子29jで遅延されたSDM信号u''(k−1)との和の信号として生成される。そして、差分器29fにより、参照信号積分値σdr(k)とSDM信号積分値σdu(k)との偏差信号δ''(k)が生成される。
次いで、量子化器29g(符号関数)により、SDM信号u''(k)が、この偏差信号δ''(k)を符号化した値として生成される。そして、増幅器29hにより、増幅SDM信号u(k)がSDM信号u''(k)を所定のゲインFdで増幅した値として生成され、次に、加算器29iにより、この増幅SDM信号u(k)を所定の基準値FLAFBASEに加算した値として、制御入力φop(k)が生成される。
以上のSDMコントローラ29の制御アルゴリズムは、以下の式(45)〜(51)で表される。
r(k)=−1・Gd・PREVO2(k) ……(45)
σdr(k)=σdr(k−1)+r(k) ……(46)
σdu(k)=σdu(k−1)+u''(k−1) ……(47)
δ''(k)=σdr(k)−σdu(k) ……(48)
u''(k)=sgn(δ''(k)) ……(49)
u(k)=Fd・u''(k) ……(50)
φop(k)=FLAFBASE+u(k) ……(51)
ここで、Gd,Fdはゲインを表す。また、符号関数sgn(δ''(k))の値は、δ''(k)≧0のときにはsgn(δ''(k))=1となり、δ''(k)<0のときにはsgn(δ''(k))=−1となる(なお、δ''(k)=0のときに、sgn(δ''(k))=0と設定してもよい)。
以上のSDMコントローラ29の制御アルゴリズムにおけるΣΔ変調アルゴリズムの特性は、ΔΣ変調アルゴリズムと同様に、SDM信号u(k)を、これを制御対象に入力した際、参照信号r(k)が制御対象の出力に再現されるような値として、生成(算出)できるという点にある。すなわち、SDMコントローラ29は、前述したDSMコントローラ24と同様の制御入力φop(k)を生成できるという特性を備えている。したがって、このSDMコントローラ29を用いる本実施形態の制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。なお、SDMコントローラ29の具体的なプログラムは図示しないが、DSMコントローラ24とほぼ同様に構成される。
次に、図43を参照しながら、第6実施形態の制御装置について説明する。この第6実施形態の制御装置1は、第1実施形態の制御装置1のDSMコントローラ24に代えて、DMコントローラ30を用いる点のみが異なっている。このDMコントローラ30は、Δ変調アルゴリズムを適用した制御アルゴリズムにより、予測値PREVO2(k)に基づいて、制御入力φop(k)を算出するものである。
すなわち、同図に示すように、このDMコントローラ30では、反転増幅器30aにより、参照信号r(k)が、値−1、参照信号用のゲインGdおよび予測値PREVO2(k)を互いに乗算した信号として生成される。一方、積分器30bにより、DM信号積分値σdu(k)が、遅延素子30cで遅延されたDM信号積分値σdu(k−1)と、遅延素子30hで遅延されたDM信号u''(k−1)との和の信号として生成される。そして、差分器30dにより、参照信号r(k)とDM信号積分値σdu(k)との偏差信号δ''(k)が生成される。
次いで、量子化器30e(符号関数)により、DM信号u''(k)が、この偏差信号δ''(k)を符号化した値として生成される。そして、増幅器30fにより、増幅DM信号u(k)がDM信号u''(k)を所定のゲインFdで増幅した値として生成され、次に、加算器30gにより、この増幅DM信号u(k)を所定の基準値FLAFBASEに加算した値として、制御入力φop(k)が生成される。
以上のDMコントローラ30の制御アルゴリズムは、以下の式(52)〜(57)で表される。
r(k)=−1・Gd・PREVO2(k) ……(52)
σdu(k)=σdu(k−1)+u''(k−1) ……(53)
δ''(k)=r(k)−σdu(k) ……(54)
u''(k)=sgn(δ''(k)) ……(55)
u(k)=Fd・u''(k) ……(56)
φop(k)=FLAFBASE+u(k) ……(57)
ここで、Gd,Fdはゲインを表す。また、符号関数sgn(δ''(k))の値は、δ''(k)≧0のときにはsgn(δ''(k))=1となり、δ''(k)<0のときにはsgn(δ''(k))=−1となる(なお、δ''(k)=0のときに、sgn(δ''(k))=0と設定してもよい)。
以上のDMコントローラ30の制御アルゴリズムすなわちΔ変調アルゴリズムの特性は、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムと同様に、DM信号u(k)を制御対象に入力した際、参照信号r(k)が制御対象の出力に再現されるような値として、DM信号u(k)を生成(算出)できるという点にある。すなわち、DMコントローラ30は、前述したDSMコントローラ24およびSDMコントローラ29と同様の制御入力φop(k)を生成できるという特性を備えている。したがって、このDMコントローラ30を用いる本実施形態の制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。なお、DMコントローラ30の具体的なプログラムは図示しないが、DSMコントローラ24とほぼ同様に構成される。
次に、図44および図45を参照しながら、第7実施形態の制御装置について説明する。図44に示すように、この第7実施形態の制御装置1は、第1実施形態の制御装置1と比べて、LAFセンサ14がエンジン3に設けられていないとともに、O2センサ15が第2触媒装置8bよりも下流側に設けられている点のみが異なっている。
また、LAFセンサ14を備えていないため、この制御装置1では、図45に示すように、オンボード同定器23により、O2センサ15の出力Voutおよび制御入力φop(目標空燃比KCMD)に基づいて、モデルパラメータa1,a2,b1が算出される。すなわち、このオンボード同定器23では、前述した図5の式(8)〜(15)に示す同定アルゴリズムにより、モデルパラメータの同定値a1',a2',b1'が算出されるとともに、これらに前述したリミット処理を施すことにより、モデルパラメータa1,a2,b1が算出される。
さらに、状態予測器22により、モデルパラメータa1,a2,b1、O2センサ15の出力Voutおよび制御入力φopに基づいて、出力偏差VO2の予測値PREVO2が算出される。すなわち、この状態予測器22では、図4の式(6)に示す予測アルゴリズムにより、出力偏差VO2の予測値PREVO2が算出される。なお、これらの状態予測器22およびオンボード同定器23の演算処理の具体的なプログラムは、図示しないが、第1実施形態のものとほぼ同様に構成され、それら以外のプログラムも、第1実施形態のものと同様に構成される。
以上のような本実施形態の制御装置1によれば、第1実施形態の制御装置1と同様の効果を得ることができる。特に、前述したように、図34のステップ192〜194において、参照信号値用のゲインKRDSMを、排気ガスをリーン側に制御する場合と、リッチ側に制御する場合とで互いに異なる値に設定し、目標空燃比KCMDの目標値Vopへの収束速度を変更することにより、本実施形態のようなO2センサ15のみで空燃比を制御する場合においても、混合気の空燃比をリッチ側およびリーン側に変更する際、良好な排気ガス浄化率を確実に得ることができる。これに加えて、LAFセンサ14を用いることなく、良好な排気ガス浄化率を確保できるので、その分、製造コストを削減することができる。
次に、図46を参照しながら、第8実施形態の制御装置について説明する。同図に示すように、この第8実施形態の制御装置1は、上記第7実施形態の制御装置1において、ADSMコントローラ20、PRISMコントローラ21およびオンボード同定器23を、前記第4実施形態のスケジュール型DSMコントローラ20A、スケジュール型状態予測スライディングモードコントローラ21Aおよびパラメータスケジューラ28に置き換えたものであり、これらのコントローラ20A,21Aおよびパラメータスケジューラ28は、第4実施形態のものと同様に構成されている。この制御装置1によれば、上記第7実施形態の制御装置1と同様の効果を得ることができる。これに加えて、パラメータスケジューラ28を用いることにより、オンボード同定器23を用いる場合と比べて、モデルパラメータa1,a2,b1を、より迅速に算出することができる。これにより、制御の応答性を向上させることができ、良好な排気ガス浄化率をより迅速に確保することができる。
次に、図47〜図49を参照しながら、第9実施形態の制御装置について説明する。図47に示すように、この第2実施形態の制御装置1は、第1実施形態の制御装置1に、2つのデシメーションフィルタ40,40(サンプリング手段)と、オーバーサンプラ41とを付加したものであり、それに伴い、以下に述べるように、DSMコントローラ24による目標空燃比KCMDの算出周期ΔTm(空燃比算出周期)と、状態予測器22およびオンボード同定器23による、予測値PREVO2およびモデルパラメータa1,a2,b1の算出周期ΔTk(偏差算出周期、予測値算出周期)とが、互いに異なる値に設定されている(図49参照)。
これらのデシメーションフィルタ40,40の一方は、DSMコントローラ24により算出された目標空燃比KCMDにデシメーション処理を施すとともに、そのデシメーション値FD(KCMD)と基準値FLAFBASEとにより、空燃比偏差のデシメーション値DKCMD’(k)(図49(h)に黒丸で示す値)をサンプリングする。具体的には、まず、目標空燃比KCMDを、所定のサンプリング周期ΔTsm(10msec)でサンプリングする。次に、これらのサンプリング値(図49(g)に黒丸および白抜きの丸で示す値)にローパスフィルタリング処理を施した後、ΔTsmの4倍のサンプリング周期ΔTsk(40msec)でダウンサンプリングすることにより、目標空燃比のデシメーション値FD(KCMD)(図49(g)に黒丸で示す値)をサンプリングする。次いで、このデシメーション値FD(KCMD)と基準値FLAFBASEとの偏差を、空燃比偏差のデシメーション値DKCMD’(k)としてサンプリングする。
また、もう一方のデシメーションフィルタ40は、LAFセンサ14の出力KACTに上記と同じデシメーション処理を施すとともに、そのデシメーション値FD(KACT)と基準値FLAFBASEとにより、LAF出力偏差のデシメーション値DKACT’(k)(図49(c)に黒丸で示す値)をサンプリングする。具体的には、LAFセンサ14の出力KACTを、所定のサンプリング周期ΔTsm(10msec)でサンプリングし、次に、これらのサンプリング値(図49(b)に黒丸および白抜きの丸で示す値)にローパスフィルタリング処理を施した後、ΔTsmの4倍のサンプリング周期ΔTsk(40msec)でダウンサンプリングすることにより、デシメーション値FD(KACT)(図49(b)に黒丸で示す値)をサンプリングする。次いで、このデシメーション値FD(KACT)と基準値FLAFBASEとの偏差を、LAF出力偏差のデシメーション値DKACT’(k)としてサンプリングする。なお、以上のデシメーション処理において、サンプリング周期ΔTskでのダウンサンプリング処理と、ローパスフィルタリング処理とを、上記とは逆の順序で実行してもよい。
さらに、図示しないサンプラにより、O2センサ15の出力のサンプリング値Vout(k)がサンプリング周期ΔTskでサンプリングされる(すなわち図49(a)に黒丸で示す値がサンプリングされる)。また、これらの3つの値DKCMD’(k),DKACT’(k),Vout(k)は、互いに同じタイミングでサンプリングされる(図49参照)。
オンボード同定器23(同定手段)は、上記3つの値DKCMD’(k),DKACT’(k),Vout(k)のサンプリングタイミングに同期して、サンプリングされたサンプリング値Vout(k)およびデシメーション値DKACT’(k)に基づき、出力偏差VO2およびモデルパラメータa1,a2,b1を算出(同定)する(図49(d)参照)。すなわち、オンボード同定器23によるモデルパラメータa1,a2,b1の算出周期ΔTkは、サンプリング周期ΔTskと同じ値(40msec)に設定されている。
また、状態予測器22(予測値算出手段、偏差算出手段)は、モデルパラメータa1,a2,b1の同定値および上記3つの値DKCMD’(k),DKACT’(k),Vout(k)に基づき、上記サンプリングタイミングに同期して、出力偏差VO2および予測値PREVO2を算出する(図49(e)参照)。すなわち、予測値PREVO2も、上記算出周期ΔTkで算出される。
次に、オーバーサンプラ41は、予測値PREVO2のオーバーサンプル値Fo(PREVO2)をサンプリングする。具体的には、予測値PREVO2を、前述したサンプリング周期ΔTsmでオーバーサンプリングすることにより、オーバーサンプル値Fo(PREVO2)をサンプリングする(すなわち図49(f)に白抜きの丸で示す値をサンプリングする)。
次いで、DSMコントローラ24(空燃比算出手段)は、このオーバーサンプル値Fo(PREVO2)に基づき、そのサンプリングタイミングに同期して、目標空燃比KCMDを、前記サンプリング周期ΔTsmと同じ値(10msec)の算出周期ΔTmで算出する。
次に、この制御装置1における状態予測器22の予測アルゴリズムについて説明する。前述したように、空燃比偏差のデシメーション値DKCMD’(k)およびLAF出力偏差のデシメーション値DKACT’(k)はそれぞれ、下式(58),(59)に示すように定義される。
DKCMD’(k)=Fd(φop(m))−FLAFBASE
=Fd(KCMD(m))−FLAFBASE ……(58)
DKACT’(k)=Fd(φin(m))−FLAFBASE
=Fd(KACT(m))−FLAFBASE ……(59)
ここで、記号mは、サンプリング周期ΔTsmでのサンプリングにより離散化された時間を表し、記号kは、サンプリング周期ΔTskでのサンプリングにより離散化された時間を表す。また、KCMD(m)およびKACT(m)はそれぞれ、目標空燃比KCMDおよびLAFセンサ14の出力KACTの離散データを表す。
また、制御対象モデルは、下式(60)のように定義される。
VO2(k)=a1・VO2(k-1)+a2・VO2(k-2)+b1・DKCMD'(k-dt) ……(60)
なお、この式(60)に、DKACT’(k)=DKCMD’(k−d')の関係を適用することにより、制御対象モデルを、VO2とDKACT’の関係で表すことも可能である。
さらに、上記式(60)の制御対象モデルに基づき、第1実施形態と同様の手法を用いると、予測値PREVO2の算出式は、図48に示す式(61)として定義される。
一方、オンボード同定器23の同定アルゴリズムは、図48に示す式(62)〜(69)のように定義される。
また、DSMコントローラ24の制御アルゴリズムは、以下の式(70)〜(75)で表される。
r(m)=−1・Gd・PREVO2(m) ……(70)
δ(m)=r(m)−u''(m−1) ……(71)
σd(m)=σd(m−1)+δ(m) ……(72)
u''(m)=sgn(σd(m)) ……(73)
u(m)=Fd・u''(m) ……(74)
φop(m)=KCMD(m)=FLAFBASE+u(m) ……(75)
ここで、符号関数sgn(σd(m))の値は、σd(m)≧0のときにはsgn(σd(m))=1となり、σd(m)<0のときにはsgn(σd(m))=−1となる(なお、σd(m)=0のときに、sgn(σd(m))=0と設定してもよい)。
以上のように、本実施形態の制御装置1では、状態予測器22およびオンボード同定器23により、予測値PREVO2およびモデルパラメータa1,a2,b1が、互いに同じ所定のサンプリング周期ΔTsk(40msec)でサンプリングされた値DKCMD’,DKACT’,Vout(k)を用い、互いに同じ所定の算出周期ΔTk(40msec)で算出される。これに加えて、DSMコントローラ24により、目標空燃比KCMDが、算出周期ΔTkの1/4の算出周期ΔTm(10msec)で算出される。これは以下の理由による。
すなわち、DSMコントローラ24では、算出周期ΔTmが短いほど、目標空燃比KCMDの算出精度は向上する。これに対して、一般に、O2センサ15の出力Voutのパワースペクトルは、0〜5Hzの周波数域に存在するため、サンプリング周期ΔTskおよび算出周期ΔTkが20msecよりも短い場合には、制御対象の周波数特性が、モデルパラメータa1,a2,b1の同定値および制御対象モデルに適切に反映されなくなるとともに、予測値PREVO2の算出値にも適切に反映されなくなることがある。それにより、モデルパラメータa1,a2,b1および予測値PREVO2の算出精度が低下してしまうことがある。したがって、本実施形態の制御装置1によれば、サンプリング周期ΔTskおよび算出周期ΔTkが上記の値に設定されることにより、制御対象の周波数特性を制御対象モデルに適切に反映させることができ、モデルパラメータa1,a2,b1および予測値PREVO2の算出値に、制御対象の周波数特性を適切に反映させることができる。その結果、モデルパラメータa1,a2,b1および予測値PREVO2の算出精度を、第1実施形態の例よりもさらに向上させることができると同時に、算出周期ΔTmが算出周期ΔTkよりも短い値に設定されることにより、目標空燃比KCMDの良好な算出精度も確保することができる。また、本実施形態の制御装置1によれば、前述した第1実施形態の制御装置1と同様の効果も得ることができる。
なお、目標空燃比KCMDおよびLAFセンサ14の出力KACTをサンプリング周期ΔTskでサンプリングするための構成として、第9実施形態で用いたデシメーションフィルタ40に代えて、これらをサンプリング周期ΔTskでサンプリングするサンプラなどを用いてもよい。また、DSMコントローラ24に代えて、前述したSDMコントローラ29またはDMコントローラ30を用いてもよい。さらに、各算出周期ΔTm,ΔTkおよびサンプリング周期ΔTsm,ΔTskは、前述した値に限らず、適切な値に設定することが可能である。例えば、算出周期ΔTmおよびサンプリング周期ΔTsmを、前述した値(10msec)よりも短い値に、算出周期ΔTkおよびサンプリング周期ΔTskを、前述した値(40msec)よりも長い値にそれぞれ設定してもよい。
次に、第10実施形態の制御装置について説明する。この制御装置1は、前述した図44の例と同様に、LAFセンサ14がエンジン3に設けられていないとともに、O2センサ15が第2触媒装置8bよりも下流側に設けられているエンジン3に適用した例である。そのため、この制御装置1では、図50に示すように、O2センサ15の出力Voutのサンプリング値と、目標空燃比のデシメーション値DKCMD’とを用いて、状態予測器22よる予測値PREVO2の算出、およびオンボード同定器23によるモデルパラメータa1,a2,b1の算出が行われる。
また、状態予測器22の予測アルゴリズムでは、前述した式(60)の制御対象モデルに基づき、予測値PREVO2の算出式は、図51に示す式(76)として定義される。さらに、オンボード同定器23の同定アルゴリズムは、図51に示す式(77)〜(84)で表される。また、DSMコントローラ24の制御アルゴリズムは、前述した式(70)〜(75)で表される。
以上の制御装置1によれば、上記第9実施形態の制御装置1と同様の効果を得ることができる。これに加えて、そのような制御装置1をLAFセンサ14を用いることなく、構成することができ、その分、製造コストを削減することができる。
また、この第10実施形態の制御装置1でも、第9実施形態の制御装置1と同様に、デシメーションフィルタ40に代えて、目標空燃比KCMDをサンプリング周期ΔTskでサンプリングするサンプラなどを用いてもよく、DSMコントローラ24に代えて、SDMコントローラ29またはDMコントローラ30を用いてもよい。
なお、ADSMコントローラ20およびPRISMコントローラ21を、実施形態のプログラムに代えて、電気回路により構成してもよい。