実施の形態1.
図1はこの発明の実施の形態1に係る内燃機関の空燃比制御装置を概略的に示す構成図である。
図1において、内燃機関(エンジン)を構成する機関本体1の吸気通路2には、エアフローセンサ3が設けられている。エアフローセンサ3は、機関本体1への吸入空気量を直接計測するためのホットワイヤを内蔵しており、吸入空気量に比例した出力信号(アナログ電圧)を生成する。エアフローセンサ3の出力信号は、マイクロコンピュータからなる制御回路10内のマルチプレクサ内蔵型のA/D変換器101に供給されている。
機関本体1には、複数気筒の点火制御に関連したディストリビュータ4が設けられており、ディストリビュータ4には、クランク角センサ5、6が配設されている。一方のクランク角センサ5は、たとえばクランク角に換算して720゜ごとに基準位置検出用パルス信号を生成し、他方のクランク角センサ6は、クランク角に換算して30゜ごとに基準位置検出用パルス信号を生成する。クランク角センサ5、6の各パルス信号は、制御回路10内の入出力インターフェイス102に供給され、クランク角センサ6の出力信号は、CPU103の割込み端子に供給される。
機関本体1の吸気通路2には、気筒ごとに燃料供給系から加圧燃料を吸気ポートへ供給するための燃料噴射弁7が設けられている。また、機関本体1のシリンダブロックのウォータジャケット8には、冷却水の温度を検出するための水温センサ9が設けられている。水温センサ9は、冷却水温THWに応じた電気信号(アナログ電圧)を生成する。水温センサ9の出力信号は、制御回路10内のA/D変換器101に供給されている。
機関本体1の排気マニホールド11よりも下流側の排気系には、排気ガス中の3つの有害成分HC、CO、NOxを同時に浄化するための3元触媒を収容した触媒コンバータ(以下、単に「触媒」という)12が設けられている。触媒12の上流側に位置する排気マニホールド11には、上流側O2センサ(上流側空燃比センサ)13が設けられ、触媒12の下流側の排気管14には、下流側O2センサ(下流側空燃比センサ)15が設けられている。
各O2センサ13、15は、排気ガス中の空燃比に応じた電気信号(電圧信号)を出力値V1、V2として生成する。空燃比に応じて異なる各O2センサ13、15の出力値V1、V2は、制御回路10内のA/D変換器101に入力されている。
制御回路10は、A/D変換器101、入出力インターフェイス102およびCPU103に加えて、ROM104、RAM105、バックアップRAM106、クロック発生回路107および駆動装置108、109、110などを備えている。制御回路10には、機関本体1の運転条件を示す各種センサ(エアフローセンサ3、クランク角センサ5、6、温度センサ9など)からの検出情報が入力されている。各種センサには、吸気通路2内のスロットル弁の下流側に設けられた圧力センサ(図示せず)なども含まれる。
制御回路10において、燃料供給量Qfuel(後述する)が演算されると、駆動装置108、109、110により燃料噴射弁7が駆動され、燃料供給量Qfuelに応じた量の燃料が機関本体1の燃焼室に送り込まれる。なお、CPU103への割込み発生は、A/D変換器101のA/D変換終了時、入出力インターフェイス102を介したクランク角センサ6からのパルス信号受信時、クロック発生回路107からの割込信号受信時、などに行われる。
エアフローセンサ3からの吸入空気量Qaおよび水温センサ9からの冷却水温THWは、A/D変換器101により所定時間ごとに実行されるA/D変換ルーチンにしたがって取込まれ、RAM105の所定領域に格納される。つまり、RAM105内の吸入空気量Qaおよび冷却水温THWは、所定時間ごとに更新されている。また、エンジン回転速度Neは、クランク角センサ6の30゜CAごとの割込みによって演算されてRAM105の所定領域に格納される。
図2は図1内の制御回路10の基本構成を示す機能ブロック図であり、図2内の各手段は主としてCPU103により構成されている。
前述のように、制御回路10には、上流側O2センサ13の出力値V1(触媒12の上流側排気ガス中の空燃比)と、下流側O2センサ15の出力値V2(触媒12の下流側排気ガス中の空燃比)と、他の各種センサからの検出情報が入力されている。
図2において、制御回路10は、第1の空燃比フィードバック制御手段201と、第2の空燃比フィードバック制御手段202と、平均空燃比振動手段203と、最大酸素吸蔵量演算手段204と、触媒劣化振動手段205とを備えており、第1の空燃比フィードバック制御手段201には、上流側O2センサ13の出力値V1が入力されている。
第2の空燃比フィードバック制御手段202、平均空燃比振動手段203とおよび触媒劣化振動手段205には、下流側O2センサ15の出力値V2が入力され、最大酸素吸蔵量演算手段204には、他の各種センサからの検出情報が入力されている。
第1の空燃比フィードバック制御手段201は、上流側O2センサ13の出力値V1および所定のフィードバック制御定数(以下、単に「制御定数」という)に応じて、燃料噴射弁7の励磁駆動手段(図示せず)を制御することにより、機関本体1に供給する空燃比を調整して、空燃比を周期的にリッチ方向およびリーン方向に振動させる。
平均空燃比振動手段203は、触媒12の酸素吸蔵量(後述する推定酸素吸蔵量OSC)に基づいて、周期的に振動する空燃比を平均化した平均空燃比がリッチ方向およびリーン方向に振動するように、第1の空燃比フィードバック制御手段201内で用いられる制御定数を操作する。
平均空燃比振動手段203は、具体的には、平均空燃比に対する目標平均空燃比AFAVEobjに応じて制御定数を設定し、目標平均空燃比AFAVEobjをリッチ方向およびリーン方向に周期的に振動させる。
また、たとえば、平均空燃比振動手段203は、触媒12の酸素吸蔵量の振動幅ΔOSCが、触媒12の最大酸素吸蔵量OSCmaxの範囲内であって、かつ機関本体1の運転条件に応じて設定された所定振動幅となるように、平均空燃比の振動幅または振動周期を、機関本体1の運転条件に応じて設定する。
または、平均空燃比振動手段203は、触媒12の酸素吸蔵量の振動幅ΔOSCが、触媒12が劣化する前の最大酸素吸蔵量OSCmaxの範囲内であって、かつ劣化診断が必要な劣化触媒の最大酸素吸蔵量の範囲外となるように、平均空燃比の振動幅または振動周期を、機関本体1の運転条件に応じて設定する。
平均空燃比振動手段203は、平均空燃比の振動開始時の最初の振動周期を、最終的に設定される振動周期の半分に設定し、平均空燃比の振動開始時の最初の振動幅を、最終的に設定される振動幅の半分に設定する。
また、平均空燃比振動手段203は、機関本体1の過渡運転中または過渡運転後の所定期間において、平均空燃比の振動処理の実行を中止する。
平均空燃比振動手段203は、平均空燃比を所定周期でリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側O2センサ15の出力値V2がリッチ方向に反転した場合には、平均空燃比のリッチ方向への設定周期を終了して、平均空燃比をリーン方向に強制的に反転させる。また、平均空燃比振動手段203は、平均空燃比がリーン方向に設定されているときに、下流側O2センサ15の出力値V2がリーン方向に反転した場合には、平均空燃比のリーン方向への設定周期を終了して、平均空燃比をリッチ方向に強制的に反転させる。
また、平均空燃比振動手段203は、推定酸素吸蔵量OSCに基づいて平均空燃比をリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側O2センサの出力値V2がリッチ方向に反転した場合には、推定酸素吸蔵量OSCを触媒12の酸素吸蔵量の振動範囲の下限値にリセットするとともに、平均空燃比をリーン方向に強制的に反転させる。
また、平均空燃比振動手段203は、平均空燃比がリーン方向に設定されているときに、下流側O2センサの出力値V2がリーン方向に反転した場合には、推定酸素吸蔵量OSCを触媒12の酸素吸蔵量の振動範囲の上限値にリセットするとともに、平均空燃比をリッチ方向に強制的に反転させる。
さらに、平均空燃比振動手段203は、触媒劣化診断手段205による触媒12の劣化診断時と劣化診断時以外とで、触媒12の酸素吸蔵量の振動幅ΔOSCが変化するように、平均空燃比の振動幅または振動周期を変更する。
第2の空燃比フィードバック制御手段202は、平均空燃比振動手段203により振動する平均空燃比の振動中心(中心空燃比)AFCNTを、下流側O2センサ15の出力値V2に基づいて補正する。
また、第2の空燃比フィードバック制御手段202は、第2の空燃比フィードバック制御手段202の制御ゲインを変更する制御ゲイン変更手段206を含む。制御ゲイン変更手段206は、平均空燃比振動手段203による平均空燃比の振動処理の実行中においては、制御ゲインを変更する。
触媒劣化診断手段205は、最大酸素吸蔵量演算手段204により演算された最大酸素吸蔵量OSCmaxに基づいて、触媒12の劣化の有無を診断する。また、触媒劣化診断手段205は、平均空燃比振動手段203による平均空燃比の振動処理の実行中に、少なくとも下流側O2センサの出力値V2により触媒12の劣化を診断する。
触媒劣化診断手段205による診断結果は、警報ランプ(図示せず)などの警報駆動手段に入力される。
次に、図3のフローチャートを参照しながら、図2内の第1の空燃比フィードバック制御手段201による演算処理動作について説明する。
図3の演算処理ルーチンは、上流側O2センサ13の出力値V1に基づく燃料補正係数FAFの演算制御手順を示しており、所定時間(たとえば、5msec)ごとに第1の空燃比フィードバック制御手段201により実行される。
図3において、各判定処理からの分岐部の符号「Y」、「N」は、それぞれ「YES」、「NO」を示している。
まず、上流側O2センサ13の出力値V1をA/D変換して取り込み(ステップ401)、上流側O2センサ13による空燃比のフィードバックF/B(閉ループ)条件が成立しているか否かを判定する(ステップ402)。
このとき、理論空燃比制御以外の空燃比制御条件(たとえば、機関始動中、低水温時のリッチ化制御中、高負荷パワー増量のリッチ化制御中、燃費向上のためのリーン化制御中、始動後のリーン化制御中、燃料カット中)の成立時や、上流側O2センサ13の不活性状態時または故障時などの場合は、いずれも閉ループ条件が不成立状態と判定され、その他の場合は、閉ループ条件が成立状態と判定される。
ステップ402において、閉ループ条件が不成立(すなわち、NO)と判定されれば、燃料補正係数FAFを「1.0」に設定して(ステップ433)、ディレイカウンタCDLYを「0」にリセットする(ステップ434)。なお、燃料補正係数FAFは、閉ループ制御の終了直前の値または学習値(制御回路10内のバックアップRAM106内の記憶値)としてもよい。
続いて、上流側O2センサ13の出力値V1が比較電圧VR1以下(リーン)であるか否かを判定し(ステップ435)、上流側空燃比がリーン状態(V1≦VR1)(すなわち、YES)と判定されれば、遅延前空燃比フラグF0を「0」(リーン)に設定するとともに(ステップ436)、遅延後空燃比フラグF1を「0」(リーン)に設定して(ステップ437)、図3の処理ルーチンを抜け出る(ステップ440)。なお、比較電圧VR1は、リーン判定用の基準電圧(たとえば、0.45V程度)に設定される。
また、ステップ435においてV1>VR1(すなわち、NO)と判定されれば、上流側空燃比がリッチ状態なので、遅延前空燃比フラグF0を「1」(リッチ)に設定するとともに(ステップ438)、遅延後空燃比フラグF1を「1」(リッチ)に設定して(ステップ439)、図3の処理ルーチンを抜け出る(ステップ440)。以上のステップ434〜439により、空燃比の閉ループ条件が不成立時での初期値が設定される。
一方、ステップ402において、閉ループ(フィードバック)条件が成立(すなわち、YES)と判定されれば、続いて、上流側O2センサ13の出力値V1が比較電圧VR1(たとえば、0.45V)以下か否か、つまり、触媒12の上流側空燃比が比較電圧VR1に対してリッチ状態かリーン状態かを判定する(ステップ403)。
ステップ403において、V1≦VR1(すなわち、YES)と判定されれば、上流側空燃比がリーン状態であると見なし、続いて、ディレイカウンタCDLYが最大値TDR以上であるか否かを判定する(ステップ404)。なお、最大値TDRは、上流側O2センサ13の出力値がリーンからリッチに変化しても、リーン状態であるとの判定を保持するための「リッチ遅延時間」に対応し、正の値で定義される。
ステップ404において、CDLY≧TDR(すなわち、YES)と判定されれば、ディレイカウンタCDLYを「0」にリセットするとともに(ステップ405)、遅延前空燃比フラグF0を「0」(リーン)に設定して(ステップ406)、ステップ416(後述する)に進む。
また、ステップ404において、CDLY<TDR(すなわち、NO)と判定されれば、続いて、遅延前空燃比フラグF0が「0」(リーン)であるか否かを判定し(ステップ407)、F0=0(リーン)(すなわち、YES)と判定されれば、ディレイカウンタCDLYを「1」だけ減算して(ステップ408)、ステップ416に進む。また、ステップ407において、F0=1(リッチ)(すなわち、NO)と判定されれば、ディレイカウンタCDLYを「1」だけ加算して(ステップ409)、ステップ416に進む。
一方、ステップ403において、V1>VR1(すなわち、NO)と判定されれば、上流側空燃比がリッチ状態であると見なし、続いて、ディレイカウンタCDLYが最小値TDL以下であるか否かを判定する(ステップ410)。なお、最小値TDLは、上流側O2センサ13の出力値V1がリッチからリーンに変化しても、リッチ状態であるとの判定を保持するための「リーン遅延時間」に対応し、負の値で定義される。
ステップ410において、CDLY≦TDL(すなわち、YES)と判定されれば、ディレイカウンタCDLYを「0」にリセットするとともに(ステップ411)、遅延前空燃比フラグF0を「1」(リッチ)に設定して(ステップ412)、ステップ416に進む。
また、ステップ410において、CDLY>TDL(すなわち、NO)と判定されれば、続いて、遅延前空燃比フラグF0が「0」(リーン)であるか否かを判定し(ステップ413)、F0=0(すなわち、YES)と判定されれば、ディレイカウンタCDLYを「1」だけ減算して(ステップ414)、ステップ416に進む。
また、ステップ413において、F0=1(リッチ)(すなわち、NO)と判定されれば、ディレイカウンタCDLYを「1」だけ加算して(ステップ415)、ステップ416に進む。
ステップ416においては、ディレイカウンタCDLYが最小値TDL以下であるか否かを判定し、CDLY>TDL(すなわち、NO)と判定されれば、ステップ419(後述する)に進む。
また、ステップ416において、CDLY≦TDL(すなわち、YES)と判定されれば、ディレイカウンタCDLYを最小値TDLに設定し(ステップ417)、遅延後空燃比フラグF1を「0」(リーン)に設定する(ステップ418)。つまり、ディレイカウンタCDLYが最小値TDLに到達した場合には、最小値TDLでガードするとともに、遅延後空燃比フラグF1を「0」(リーン)とする。
続いて、ディレイカウンタCDLYが最大値TDR以上であるか否かを判定し(ステップ419)、CDLY<TDR(すなわち、NO)と判定されれば、ステップ422(後述する)に進む。
また、ステップ419において、CDLY≧TDR(すなわち、YES)と判定されれば、ディレイカウンタCDLYを最大値TDRに設定するとともに(ステップ420)、遅延後空燃比フラグF1を「1」(リッチ)に設定して(ステップ421)、ステップ422に進む。つまり、ディレイカウンタCDLYが最大値TDRに到達した場合には、ディレイカウンタCDLYを最大値TDRでガードするとともに、遅延後空燃比フラグF1を「1」(リッチ)とする。
ステップ422においては、燃料補正係数FAFのスキップ増減処理(または、積分処理)の実行に先だって、まず、遅延処理後の空燃比が反転したか否かを、遅延後空燃比フラグF1の符号が反転したか否かにより判定する。
ステップ422において、遅延後空燃比フラグF1の符号(空燃比)が反転している(すなわち、YES)と判定されれば、続いて、リッチからリーンへの反転か、またはリーンからリッチへの反転かを、遅延後空燃比フラグF1の値が「0」であるか否かにより判定する(ステップ423)。
ステップ423において、F1=0(すなわち、YES)と判定されれば、リッチからリーンへの反転であるので、燃料補正係数FAFを「FAF+RSR」として、定数RSRだけスキップ的に増大させ(ステップ424)、ステップ429(後述する)に進む。
また、ステップ423において、F1=1(すなわち、NO)と判定されれば、リーンからリッチへの反転であるので、燃料補正係数FAFを「FAF−RSL」として、定数RSLだけスキップ的に減少させ(ステップ425)、ステップ429に進む。
一方、ステップ422において、遅延後空燃比フラグF1の符号(空燃比)が反転していない(すなわち、NO)と判定されれば、続いて、遅延後空燃比フラグF1が「0」(リーン)であるか否かを判定し(ステップ426)、F1=0(すなわち、YES)と判定されれば、燃料補正係数FAFを「FAF+KIR」として、定数KIR(<RSR)だけ増大させ(ステップ427)、ステップ429に進む。
また、ステップ426において、F1=1(すなわち、NO)と判定されれば、リッチ状態であるので、燃料補正係数FAFを「FAF−KIL」として、定数KIL(<RSL)だけ減少させ(ステップ428)、ステップ429に進む。
なお、積分定数KIR、KILは、スキップ定数RSR、RSLと比べて、十分小さい値に設定されている。したがって、ステップ427においては、リーン状態(F1=0)での燃料噴射量を徐々に増大させ、ステップ428においては、リッチ状態(F1=1)での燃料噴射量を徐々に減少させることになる。
ステップ429においては、燃料補正係数FAFが「0.8」よりも小さいか否かを判定し、FAF<0.8(すなわち、YES)と判定されれば、燃料補正係数FAFを「0.8」に設定して(ステップ430)、ステップ431(後述する)に進む。
一方、ステップ429において、FAF≧0.8(すなわち、NO)と判定されれば、続いて、燃料補正係数FAFが「1.2」よりも大きいか否かを判定し(ステップ431)、FAF>1.2(すなわち、YES)と判定されれば、燃料補正係数FAFを「1.2」に設定して(ステップ432)、図3の処理ルーチンを抜け出る(ステップ440)。また、ステップ431において、FAF≦1.2(すなわち、NO)と判定されれば、直ちに、図3の処理ルーチンを抜け出る(ステップ440)。
つまり、ステップ424、425、427、428で演算された燃料補正係数FAFは、ステップ429、430において、「0.8」(最小値)でガードされ、また、ステップ431、432において、「1.2」(最大値)でガードされる。これにより、何らかの原因で燃料補正係数FAFが大きく、または、小さくなり過ぎた場合には、最大値(たとえば、1.2)または最小値(たとえば、0.8)で機関本体1の空燃比を制御して、オーバリッチまたはオーバリーンになるのを防ぐ。
以上で図3の演算処理は終了し、ステップ401〜440により演算された燃料補正係数FAFは、制御回路10内のRAM105に格納される。
次に、図4のタイミングチャートを参照しながら、図3に示した演算処理動作について補足説明する。
図4において、上流側O2センサ13の出力値V1に基づいて遅延処理前の空燃比信号(リッチ、リーン判定の比較結果)が得られると、遅延処理前の空燃比信号に応答する遅延前空燃比フラグF0は、リッチ状態またはリーン状態に変化する。
ディレイカウンタCDLYは、最大値TDRと最小値TDLとの間の範囲内で、遅延前空燃比フラグF0(遅延処理前の空燃比信号に対応)のリッチ状態に応答してカウントアップされ、逆に、リーン状態に応答してカウントダウンされる。これにより、遅延後空燃比フラグF1は、遅延処理された空燃比信号を示すようになる。
たとえば、時刻t1において、遅延処理前の空燃比信号(出力値V1の比較結果)がリーンからリッチに反転しても、遅延処理された空燃比信号(遅延後空燃比フラグF1)は、リッチ遅延時間τDRだけリーンに保持された後の時刻t2において、リッチに変化する。
同様に、時刻t3において、遅延処理前の空燃比信号(上流側A/F)がリッチからリーンに変化しても、遅延処理後の空燃比信号(遅延後空燃比フラグF1)は、リーン遅延時間τDLだけリッチに保持された後の時刻t4において、リーンに変化する。
しかし、たとえば時刻t5の後(リッチ遅延処理の開始後)に、時刻t6、t7に示すように、遅延処理前の空燃比信号(比較結果)が、リッチ遅延時間τDRよりも短い期間で反転しても、ディレイカウンタCDLYがリッチ遅延時間τDRに到達するまでの遅延処理中(時刻t5〜t8)においては、遅延前空燃比フラグF0が反転することはない。
つまり、遅延前空燃比フラグF0は、出力値V1の微小変動に起因した一時的な比較結果(遅延処理後の空燃比信号)の変動に影響されないので、比較結果(遅延処理前の空燃比信号)に比べて安定した波形となる。このように、遅延処理を実行することにより、安定した遅延前空燃比フラグF0および遅延処理後の空燃比信号(遅延後空燃比フラグF1)が得られ、遅延後空燃比フラグF1に基づいて、適切な燃料補正係数FAFが得られる。
燃料補正係数FAFの波形において、増大方向および減少方向の傾きは、それぞれ、積分定数KIR、KILに相当し、スキップ増減量は、それぞれ、スキップ定数RSR、RSLに相当する。
以下、制御回路10内の励磁駆動手段は、第1の空燃比フィードバック制御手段201で演算された燃料補正係数FAFと、基本燃料量Qfuel0とに応じて、空燃比が目標空燃比A/Foと一致するように燃料噴射弁7を駆動するために、機関本体1に供給する燃料供給量Qfuelを、以下の式(1)のように調整する。
Qfuel1=Qfuel0×FAF ・・・(1)
ただし、式(1)において、基本燃料量Qfuel0は、機関本体1に供給される空気量Qacylと、目標空燃比A/Foとを用いて、以下の式(2)のように演算される。
Qfuel0=Qacyl/(A/Fo) ・・・(2)
式(2)において、機関本体1への空気量Qacylは、エアフローセンサ3から検出される吸入空気量Qaに基づいて演算される。また、エアフローセンサ3を用いない場合には、吸気通路2内のスロットル弁下流側に設けられた圧力センサ(図示せず)の出力信号に基づいて吸入空気量Qaを演算してもよく、エンジン回転速度Neまたはスロットル弁のスロットル開度などに基づいて演算してもよい。
また、目標空燃比A/Foは、図5に示すような、エンジン回転速度Neと負荷との2次元マップで領域設定された値に設定される。すなわち、目標空燃比A/Foは、理論空燃比(A/F≒14.53)制御時においては、平均空燃比振動手段203により演算される目標平均空燃比として、フィードフォワード的に反映させた値に設定される。
これにより、目標値が変化した場合のフィードバック追従遅れを改善するとともに、燃料補正係数FAFを「1.0」の中心付近の値に維持することができる。また、このとき、燃料補正係数FAFに基づき、第1の空燃比フィードバック制御手段201に関連する構成要素の経時変化および生産バラツキを吸収するように学習制御が行われるので、フィードフォワード補正により燃料補正係数FAFが安定している方が、学習制御の精度が向上する。
次に、図6のフローチャートとともに、図7〜図13および図15の説明図、ならびに図14、図16および図17のタイミングチャートを参照しながら、図2内の平均空燃比振動手段203による演算処理動作について説明する。図6の演算処理ルーチンは、所定時間(たとえば、5msec)ごとに実行される。
図6において、まず、下流側O2センサ15の出力値V2のリッチ/リーン反転を判定する(ステップ701)。下流側O2センサ15は、2値的出力特性を有するλ型センサからなり、図7に示すように、センサ雰囲気の空燃比変化に対し、理論空燃比の付近において出力値V2(電圧値)が急激に変化する。図7の特性を有するλ型センサは、理論空燃比付近の空燃比に対する検出分解能が非常に高く、かつ検出精度も良い。
つまり、ステップ701においては、図8に示すように、判定閾値(1点鎖線)を基準として、下流側O2センサ15の出力値V2がリッチまたはリーン側にあるかを判定するとともに、リッチまたはリーンの判定結果が反転したか否かを判定する。
ステップ701において、リーンからリッチへの反転が判定されたときには、下流側O2センサ15の反転フラグFRO2を「1」(リッチ反転を示す値)に設定し、リッチからリーンへの反転が判定されたときには、反転フラグFRO2を「2」(リーン反転を示す値)に設定し、いずれの反転も判定されないときには、反転フラグFRO2を「0」(非反転を示す値)に設定する。
なお、図8に示す判定閾値(1点鎖線参照)は、単にエンジン回転速度Neや負荷などの運転条件に応じた所定電圧に設定されてもよく、第2の空燃比フィードバック制御手段202に関連した下流側O2センサ15の目標電圧VR2(後述する)に設定されてもよい。下流側O2センサ15の出力値V2は目標電圧VR2付近に制御されるので、判定閾値を目標電圧VR2に設定した場合には、下流側O2センサ15のリッチ方向またはリーン方向への変動の検出精度が向上する。
また、下流側O2センサ15の目標電圧VR2にフィルタ処理(または、平均化などのなまし処理)を施した値を、判定閾値として設定してもよい。これにより、下流側O2センサ15の出力値V2が変化しない状態で目標電圧VR2が急変しても、リッチ/リーン反転を誤判定する可能性を軽減することができる。
また、下流側O2センサ15の出力値V2にフィルタ処理(または、平均化などのなまし処理)を施した値を、判定閾値として設定してもよい。これにより、下流側O2センサ15の出力値V2が、固定閾値からシフトした状態でリッチ方向またはリーン方向に変動しても、リッチ/リーン反転を確実に検出することができる。
また、判定閾値と比較される出力値V2の代わりに、出力値V2にフィルタ処理(または、平均化などのなまし処理)を施した値を用いてもよい。これにより、出力値V2の高周波成分に起因した誤判定を防止することができる。
また、このとき、下流側O2センサ15の出力値V2に対するフィルタ処理(または、平均化などのなまし処理)を調整して、上流側O2センサ13の出力値V1の変動周期の影響を低減するようにしてもよい。これにより、触媒12の大幅劣化によって、下流側O2センサ15の出力値V2の変動が、上流側O2センサ13の出力値V1の変動に近づいた場合でも、高い周波数でリッチ/リーン反転の判定が行われて制御系の挙動が不安定になる問題を回避することができる。
さらに、図8に示すように、リッチまたはリーンの判定において、リッチからリーンへの判定閾値と、リーンからリッチへの判定閾値との間に、判定閾値を中心としたヒステリシス(または、不感帯)を設定し、ヒステリシス(または、不感帯)の幅を調整してもよい。これにより、出力値V2の微小変動による判定結果のチャタリングを防止するとともに、反転判定用の出力値V2の変動幅を調整することができる。
図6に戻り、平均空燃比振動手段203は、ステップ701に続いて、振動条件フラグFPTが「1」に設定されているか否かにより、平均空燃比の振動条件が成立しているか否かを判定する(ステップ702)。
ステップ702における振動条件は、触媒12が安定している状態と、機関本体1があらかじめ設計した運転条件下にある状態とを含み、たとえば、第1の空燃比フィードバック制御手段201による理論空燃比制御が実行中の場合、エンジン回転速度Ne、負荷、吸入空気量Qaなどの運転条件が所定範囲内を示す場合、機関本体1の始動後から所定時間以上経過した場合、冷却水温THWが所定温度以上の場合、アイドル運転以外の場合、過渡運転以外の場合、および過渡運転後所定期間以外の場合などによって判定される。
過渡運転は、空燃比の変動が増加して、触媒12の酸素吸蔵量が急変する条件であり、急な加減速時、燃料カット時、リッチ化制御時、リーン化制御時、第2の空燃比フィードバック制御手段201による制御の停止時、第1の空燃比フィードバック制御手段202による制御の停止時、第1の空燃比フィードバック制御手段201からの燃料補正係数FAFの大変動時、故障診断のためのアクチュエータ強制駆動時、蒸散ガス導入の急変時、などを含む。
急な加減速は、たとえば単位時間当たりのスロットル開度(または、吸入空気量Qa)の変化量が所定以上を示すことから判定される。また、蒸散ガス導入の急変は、蒸散ガスを導入するバルブ開度の単位時間当たりの変化量が所定以上を示すことから判定される。
なお、過渡運転後においても、所定期間が経過するまでは、触媒12の酸素吸蔵量の変動による影響が残るので、振動処理は実行されない。所定期間は、単に時間設定してもよく、触媒12の酸素吸蔵量の変化と比例関係にある吸入空気量Qaを用いて、過渡運転後の積算吸入空気量が所定量に到達するまでの時間に設定してもよい。吸入空気量Qaに基づいて所定期間の経過を判定することにより、振動開始時期を触媒12の酸素吸蔵量の挙動に合わせて、適切に設定することができる。
ステップ702において、振動条件が成立していて、FPT=1(すなわち、YES)と判定されれば、ステップ703に進む。また、振動条件が成立しておらず、FPT=0(すなわち、NO)と判定されれば、ステップ723(後述する)に進む。
振動条件の成立時には、ステップ703〜705により、振動条件成立後の初回振動用の初期値を設定する。まず、振動回数PTNが「0」であるか否かにより、初回振動であるか否かを判定し(ステップ703)、PTN=0(すなわち、YES)と判定されれば、初期値として、初回の振動方向フラグFRLを「1」(リッチ方向)に設定するとともに(ステップ704)、振動回数PTNを「1」(初回振動中を示す)に設定し(ステップ705)、ステップ706に進む。
一方、ステップ703において、PTN>0(すなわち、NO)と判定されれば、初期値の設定処理(ステップ704、705)を実行せずに、ステップ706に進む。
なお、ステップ704においては、振動方向フラグFRLの初期値として「1」(リッチ方向)に設定したが、「2」(リーン方向)に設定してもよい。
次に、ステップ706〜708により、平均空燃比振動のリッチ方向およびリーン方向での周期Tjおよび振動幅DAFjをそれぞれ設定する。まず、振動方向フラグFRLが「1」であるか否かにより、振動方向がリッチ方向であるか否かを判定し(ステップ706)、リッチ方向(FRL=1)(すなわち、YES)と判定されれば、周期Tjおよび振動幅DAFjとして、それぞれ、リッチ方向の周期Trおよび振動幅DAFrを設定し(ステップ707)、ステップ709に進む。
なお、ステップ707において、リッチ方向周期Trおよびリッチ方向振動幅DAFrは、図9および図10の説明図に示すように、触媒12の酸素吸蔵量の振動幅ΔOSCが所定量となるように、それぞれ吸入空気量Qaに応じた1次元マップにより設定される。
一方、ステップ706において、振動方向がリーン方向(FRL=2)(すなわち、NO)と判定されれば、周期Tjおよび振動幅DAFjとして、それぞれ、リーン方向の周期Tlおよび振動幅DAFlを設定し(ステップ708)、ステップ709に進む。
なお、ステップ708において、リーン方向周期Tlおよびリーン方向の平均空燃比の振動幅DAFlは、図9、図10と同様の図11、図12の説明図に示すように、触媒12の酸素吸蔵量の振動幅ΔOSCが所定量となるように、それぞれ吸入空気量Qaに応じた1次元マップにより設定される。
酸素吸蔵量の振動幅ΔOSCは、周期Tj[sec]と、振動幅DAFjの絶対値と、吸入空気量Qa[g/sec]と、酸素吸蔵量に変換するための所定係数KO2とを用いて、以下の式(3)のように表される。
ΔOSC[g]=Tj×|DAFj|×Qa×KO2 ・・・(3)
ここで、振動幅ΔOSCを所定量とするためには、吸入空気量Qaの変化により、振動幅DAFjまたは周期Tjを変化させる必要がある。
たとえば、振動幅DAFjを固定値とした場合には、周期Tjを吸入空気量Qaに反比例する値に設定し、周期Tjを固定値とした場合には、振動幅DAFjを吸入空気量Qaに反比例する値に設定する。
しかし、実際には、触媒12の浄化特性の向上、ドライバビリティの向上、または応答性の向上などを目的として、周期Tj、振動幅DAFjの設定範囲には各種の制約があるので、周期Tjおよび振動幅DAFjは、両方とも、所定の酸素吸蔵量の振動幅ΔOSCとなるように、吸入空気量Qaに応じて可変設定される。
また、平均空燃比振動のリッチ方向およびリーン方向の周期Tj(または、振動幅DAFj)を互いに非対称になるように設定してもよい。
たとえば、触媒12のNOx浄化特性を向上させるため、またはトルク低下を軽減するために、リーン方向への振動幅DAFjの絶対値をリッチ方向への振動幅DAFjの絶対値よりも小さく設定し、振動幅ΔOSCが一定となるように、リーン方向への周期Tjをリッチ方向への周期Tjよりも大きく設定してもよい。
また、酸素吸蔵量の振動幅ΔOSCは、触媒12の最大酸素吸蔵量OSCmaxの範囲内となるように設定され、触媒12の酸素吸蔵量は、最大酸素吸蔵量OSCmaxと最小酸素吸蔵量(=0)との間の範囲内となるように設定される。これにより、触媒12の上流側空燃比の変動は、酸素吸蔵量の変化によって確実に吸収され、触媒12内の空燃比は理論空燃比付近に保たれるので、触媒12の浄化率の大幅な悪化を防止することができる。
また、最大酸素吸蔵量OSCmaxの範囲内においても、酸素吸蔵量の振動幅ΔOSCは、触媒12の浄化特性の向上や、触媒12の劣化診断を目的として、各種条件に応じて調整され、所定量に設定される。たとえばエンジン回転速度Neや負荷の違いによって、機関本体1からの排気ガス成分や触媒12の温度は変化し、触媒12の浄化特性も変化するので、酸素吸蔵量の振動幅ΔOSCをエンジン回転速度Neまたは負荷に応じて変更する。これにより、さらに触媒12の浄化特性を向上させることができる。
また、劣化診断時の酸素吸蔵量の振動幅ΔOSCは、劣化前の触媒12の最大酸素吸蔵量OSCmaxの範囲内で、かつ劣化診断が必要な触媒の最大酸素吸蔵量の範囲外となるように設定される。これにより、劣化診断が必要な触媒が用いられている場合には、下流側O2センサ15の出力値V2の乱れが大きくなるので、劣化診断における劣化判定精度が向上する。
図6に戻り、ステップ709においては、ステップ707、708で設定した平均空燃比振動の周期Tjおよび振動幅DAFjが、最大酸素吸蔵量演算手段204により演算された最大酸素吸蔵量OSCmaxに応じて、それぞれ適応的に補正される。具体的には、周期Tj、振動幅DAFjは、補正係数Kosct、Koscafを用いて、それぞれ、以下の式(4)、式(5)のように補正される。
Tj=Tj(n−1)×Kosct ・・・(4)
DAFj=DAFj(n−1)×Koscaf ・・・(5)
式(4)、式(5)において、(n−1)は補正前の前回値を示す。なお、周期Tjに対する補正係数Kosct、および、平均空燃比の振動幅DAFjに対する補正係数Koscafは、それぞれ最大酸素吸蔵量OSCmaxに応じた1次元マップにより設定される。
また、各補正係数Kosct、Koscafは、変化後の最大酸素吸蔵量OSCmaxの範囲内であって、かつ酸素吸蔵量の振動幅ΔOSCが維持されるように、最大酸素吸蔵量OSCmaxの減少とともに、酸素吸蔵量の振動幅ΔOSCが減少するように設定される。これにより、酸素吸蔵量の振動幅ΔOSCが最大酸素吸蔵量OSCmaxから逸脱して大幅に振り切れることを防止して、大幅な排気ガスの悪化を防止することができる。
また、ステップ709に続いて、周期Tj、振動幅DAFjは、平均空燃比の振動開始後の振動回数PTNに応じた補正係数Kptnt、Kptnafが、式(4)、式(5)と同様に乗算されて、さらに補正される(ステップ710)。なお、周期Tjに対する補正係数Kptnt、および、振動幅DAFjに対する補正係数Kptnafは、振動回数PTNに応じて、それぞれ、図13(a)、(b)に示すテーブルにより設定される。
図13(a)において、周期補正係数Kptntは、初回振動(PTN=1)に対する値のみが「0.5」に設定され、他の振動回数PTNに対しては「1.0」に設定される。また、図13(b)において、振動幅補正係数Kptnafは、振動回数PTNとは無関係に、すべて「1.0」に設定される。
図13(a)、(b)のように各補正係数Kptnt、Kptnafを設定することにより、図14のタイミングチャートに示すように、酸素吸蔵量の振動幅ΔOSCは、初回振動時のみにおいて最終設定値の半分に設定される。これにより、振動幅ΔOSCが所定幅を超過することはない。
なお、図13および図14では、初回振動の周期補正係数Kptntを「0.5」に設定した場合を示したが、初回振動の振動幅補正係数Kptnafを「0.5」に設定してもよい。また、初回振動時の酸素吸蔵量の振動幅ΔOSCが半分となるように、周期および振動幅の各補正係数Kptnt、Kptnafの組合せを設定してもよい。
また、図15の説明図および図16のタイミングチャートに示すように、振動回数PTNの増加とともに、酸素吸蔵量の振動幅ΔOSCが徐々に増加するように、周期および振動幅の各補正係数Kptnt、Kptnafを設定してもよい。これにより、触媒12の状態急変を防止することができ、また、空燃比制御(特に、第2の空燃比フィードバック制御手段202による制御)の追従性の不良を防止することができる。
図6に戻り、ステップ710に続いて、ステップ711〜714において、下流側O2センサ15の出力値V2のリッチ/リーン反転により、触媒12の酸素吸蔵量が最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)の振り切れを検出した場合に、平均空燃比の振動方向を強制的に反転させるための処理を実行する。
まず、振動方向フラグFRLが「1」であるか否かにより、リッチ方向に振動中であるか否かを判定し(ステップ711)、リッチ方向に振動中(FRL=1)(すなわち、YES)と判定されれば、続いて、下流側O2センサ15の反転フラグFRO2が「1」であるか否かにより、下流側A/Fがリッチ反転である(下流側O2センサ15の出力値V2がリーンからリッチへの反転を示す)か否かを判定する(ステップ712)。
ステップ712において、下流側A/Fがリッチ反転(FRO2=1)(すなわち、YES)と判定されれば、振動が反転するように、周期カウンタ(タイマカウンタ)Tmrを周期Tjにリセットして(ステップ714)、ステップ715に進む。
また、ステップ712において、下流側A/Fがリッチ反転でなく、FRO2≠1(すなわち、NO)と判定されれば、周期カウンタTmrのリセット処理(ステップ714)を実行せずに、ステップ715に進む。
一方、ステップ711において、リーン方向に振動中(FRL=2)(すなわち、NO)と判定されれば、続いて、下流側O2センサ15の反転フラグFRO2が「2」であるか否かにより、下流側A/Fがリーン反転である(下流側O2センサ15の出力値V2がリッチからリーンへの反転を示す)か否かを判定する(ステップ713)。
ステップ713において、下流側A/Fがリーン反転(FRO2=2)(すなわち、YES)と判定されれば、振動が反転するように、周期カウンタTmrのリセット処理(ステップ714)に進む。
また、ステップ713において、FRO2≠1であって、下流側A/Fがリーン反転でない(すなわち、NO)と判定されれば、周期カウンタTmrのリセット処理(ステップ714)を実行せずに、ステップ715に進む。
ここで、図17のタイミングチャートを参照しながら、触媒12の酸素吸蔵量の振り切れが発生した場合の挙動について説明する。
酸素吸蔵量の振り切れは、外乱に起因した空燃比の乱れによって酸素吸蔵量が急変した場合、触媒12の劣化または触媒温度Tmpcatの低下などによって最大酸素吸蔵量OSCmaxが減少した場合、または、平均空燃比の反転タイミングが遅れた場合などに引き起こされる。
図17に示すように、時刻t141の直前でリーン方向の空燃比の大きな乱れが生じた場合、触媒12の推定酸素吸蔵量OSCは、大幅にかつ急激に増加し、時刻t141において、最大酸素吸蔵量OSCmaxから大幅に振り切れてしまう。
このとき、仮に強制反転処理を実行しない場合には、点線波形で示すように、周期カウンタTmrの値が反転周期Tjに到達していないことから、リーン方向(FRL=2)への振動を継続し、時刻t141〜t142の期間にわたって、酸素吸蔵量が振り切れた状態を保持するので、触媒12内の空燃比が理論空燃比から逸脱して、排気ガスの浄化状態は著しく悪化する。
一方、上記ステップ714により強制反転処理を実行する際には、時刻t141において下流側O2センサ15の出力値V2が反転し、反転フラグFRO2が「0」から「2」になり、触媒12の推定酸素吸蔵量OSCの振り切れが検出されるので、これに応答して、実線波形で示すように、周期カウンタTmrを反転周期Tjにリセットして、リッチ方向へ振動を強制的に反転させる。これにより、酸素吸蔵量の振り切れ状態から復帰させることができ、排気ガスの悪化を最小限に抑制することができる。
次に、強制リセット処理(ステップ714)に続いて、ステップ715〜721において、タイマ処理によるリッチ/リーン周期反転処理を実行する。
まず、周期カウンタTmrを所定量Dtmrだけ増加させて更新し(ステップ715)、周期カウンタTmrが周期Tjを越えたか否かを判定する(ステップ716)。なお、所定量Dtmrは演算周期5msecに設定される。
ステップ716において、Tmr>Tj(すなわち、YES)と判定されれば、反転タイミングに到達しているので、周期カウンタTmrを「0」にリセットするとともに(ステップ717)、振動回数PTNを「1」だけ増加させ(ステップ718)、続いて、振動方向フラグFRLが「1」であるか否かにより、現在の振動方向がリッチであるか否かを判定する(ステップ719)。
ステップ719において、現在の振動方向がリッチ(FRL=1)(すなわち、YES)と判定されれば、振動方向フラグFRLを「2」に設定して、リーン方向に反転させ(ステップ720)、ステップ720に進む。
また、ステップ719において、現在の振動方向がリーン(FRL=2)(すなわち、NO)と判定されれば、振動方向フラグFRLを「1」に設定して、リッチ方向に反転させ(ステップ721)、ステップ721に進む。
一方、上記ステップ716において、Tmr≦Tj(すなわち、NO)と判定されれば、反転タイミングに到達していないので、ステップ717〜721を実行せずに、直ちにステップ722に進む。
ステップ722においては、振動条件の成立時での目標平均空燃比AFAVEobjを設定する。このとき、目標平均空燃比AFAVEobjは、振動中心AFCNT(第2の空燃比フィードバック制御手段202で演算される目標平均空燃比)に振動幅DAFjを加えることにより、以下の式(6)のように演算される。
AFAVEobj=AFCNT+DAFj ・・・(6)
このように、下流側O2センサ15の出力値V2に基づいて触媒12の酸素吸蔵量の状態を検出することにより、最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)を振り切れないように目標平均空燃比AFAVEobjの振動中心AFCNTを調整することができるので、酸素吸蔵量の振動処理の制御精度をさらに向上させることができる。
なお、振動中心AFCNTは、運転条件により所定値に設定されてもよい。
また、振動中心AFCNTを条件に応じてリーン方向またはリッチ方向にシフトすることにより、触媒12の浄化状態を変更してもよい。
さらに、上記振動処理を、触媒12の劣化診断のみならず、センサなどの故障診断に用いてもよい。
一方、最初のステップ702において、振動条件でない(すなわち、NO)と判定されれば、振動回数PTNを「0」にリセットするとともに(ステップ723)、周期カウンタTmrを「0」にリセットして(ステップ724)、振動条件の不成立時での目標平均空燃比AFAVEobjを、振動中心AFCNTに設定する(ステップ725)。
最後に、ステップ722または725で設定された目標平均空燃比AFAVEobjと一致するように、第1の空燃比フィードバック制御手段201における制御定数を設定して(ステップ726)、平均空燃比振動手段203による図6の処理ルーチンを終了して抜け出る。
次に、図6内の最終ステップ726について具体的に説明する。まず、ステップ726で実行される制御定数に基づく平均空燃比の操作処理について説明する。
平均空燃比は、第1の空燃比フィードバック制御手段201における制御定数(リッチ/リーンスキップ量RSR、RSL、リッチ/リーン積分定数KIR、KIL、リッチ/リーン遅延時間τDR、τDL、または、上流側O2センサ13の出力値V1に対する比較電圧VR1)を操作することによって操作される。
たとえば、平均空燃比は、リッチスキップ量RSRを大きくするか、またはリーンスキップ量RSLを小さくすると、リッチ側に移行し、リーンスキップ量RSLを大きくか、またはリッチスキップ量RSRを小さくすると、リーン側に移行する。つまり、平均空燃比は、リッチスキップ量RSRおよびリーンスキップ量RSLを変更することにより制御することができる。
また、平均空燃比は、リッチ積分定数KIRを大きくするか、またはリーン積分定数KILを小さくするとリッチ側に移行し、リーン積分定数KILを大きくするか、またはリッチ積分定数KIRを小さくするとリーン側に移行する。つまり、平均空燃比は、リッチ積分定数KIRおよびリーン積分定数KILを変更することにより制御することができる。
また、平均空燃比は、リッチ遅延時間τDRおよびリーン遅延時間τDLを「τDR>τDL」の関係に設定すれば、リッチ側に移行し、逆に、「τDL>τDR」の関係に設定すれば、リーン側に移行する。つまり、平均空燃比は、リッチ/リーン遅延時間τDR、τDLを変更することにより制御することができる。
さらに、平均空燃比は、上流側O2センサ13の出力値V1に対する比較電圧VR1を大きくすると、リッチ側に移行し、また、比較電圧VR1を小さくすると、リーン側に移行する。つまり、平均空燃比は、比較電圧VR1を変更することにより制御することができる。このように、制御定数(遅延時間、スキップ量、積分ゲイン、比較電圧など)を変更することにより、上流側の平均空燃比を制御することができる。
また、制御定数のうちの2つ以上を同時に操作することにより、平均空燃比の制御性を向上させることができる。
ただし、2つ以上の制御定数を操作すると、平均空燃比のリッチ/リーンの操作方向を管理することはできるが、非線形な相互作用により、操作量の管理が困難となる可能性がある。そこで、複数の制御定数の操作に起因した不具合を解消するとともに、自由度を積極的に利用するために、さらに、目標平均空燃比から制御定数の操作量を演算する手段を設け、目標平均空燃比の管理指標に応じて制御定数を設定して、平均空燃比により制御定数の操作を管理する方法も考えられる。
また、制御定数ごとに平均空燃比を制御するうえで、たとえば、平均空燃比の制御精度、操作幅、または制御周期、空燃比振動幅などに関して、利点および不利点があるが、目標平均空燃比の動作点に応じて、各制御定数をきめ細かく設定することにより、それぞれの利点を生かすことができる。
次に、図18を参照しながら、平均空燃比振動手段203による制御定数の設定演算処理について説明する。
図18は制御定数の設定演算処理を図式的に示すフローチャートであり、目標平均空燃比に応じて第1の空燃比フィードバック制御手段201における制御定数(各スキップ量RSR、RSL、各積分定数KIR、KIL、各遅延時間τDR、τDL、比較電圧VR1)を設定する演算ルーチンを示している。図18の演算ルーチンは、所定時間(たとえば、5msec)ごとに実行される。
図18において、まず、目標平均空燃比AFAVEobjに応じた1次元マップにより、リッチスキップ量RSRを演算する(ステップ1501)。なお、1次元マップの値は、あらかじめ机上計算または実験に基づいて設定されており、目標平均空燃比AFAVEobの入力値に対応した設定値(マップ検索結果)がリッチスキップ量RSRとして出力される。
また、ステップ1501における1次元マップは、機関本体1の運転条件ごとに設けられており、運転条件の変化に応じて、1次元マップを切り替えてマップ検索が行われる。運転条件には、第1の空燃比フィードバック制御手段201の構成の応答性や特性などに関係する条件(たとえば、エンジン回転速度Ne、負荷、アイドル状態、冷却水温THW、排気温度、上流側O2センサの温度、EGRバルブ開度など)が含まれる。また、たとえば、運転条件を所定の回転速度、負荷、冷却水温で区分けされた運転領域として設定することができる。
さらに、リッチスキップ量RSRの演算マップは、必ずしも1次元マップでなくてもよく、入力値と出力値との関係を表す手段であればよい。たとえば、1次元マップに代えて、任意の近似式であってもよく、さらに多くの入力値に対応した高次元のマップや高次関数であってもよい。
以下、ステップ1501と同様の処理方法で、目標平均空燃比AFAVEobjに応じてスキップ量RSLを演算し(ステップ1502)、目標平均空燃比AFAVEobjに応じて積分定数KIRを演算し(ステップ1503)、目標平均空燃比AFAVEobjに応じて積分定数KILを演算し(ステップ1504)、目標平均空燃比AFAVEobjに応じて遅延時間τDRを演算し(ステップ1505)、目標平均空燃比AFAVEobjに応じて遅延時間τDLを演算し(ステップ1506)、目標平均空燃比AFAVEobjに応じて比較電圧VR1を演算し(ステップ1507)、図18の処理ルーチンを終了する。
このように、目標平均空燃比AFAVEobjに応じて、制御定数(各スキップ量RSR、RSL、各積分定数KIR、KIL、各遅延時間τDR、τDL、比較電圧VR1)がそれぞれ演算される。
ステップ1501〜1507における各演算マップ上の設定値は、前述のように、触媒12の上流側の実際の平均空燃比が、入力値である目標平均空燃比AFAVEobjと一致するように、あらかじめ机上計算または実験値に基づいて設定されている。また、運転条件により制御定数の設定値を変化させることにより、運転条件にかかわらず、実際の平均空燃比が目標平均空燃比AFAVEobjと一致するように設定されている。
次に、図19のフローチャートとともに、図20および図21の説明図を参照しながら、最大酸素吸蔵量演算手段204による処理動作について説明する。図19の演算ルーチンは所定時間(たとえば、5msec)ごとに実行される。
図19において、まず、触媒12の最大酸素吸蔵量の初期値OSCmax0を設定する(ステップ1601)。
なお、初期値OSCmax0としては、あらかじめ設計した新品時の触媒の最大酸素吸蔵量が設定されてもよい。
また、初期値OSCmax0として、排気ガス規制で定められた所定距離走行後の耐久触媒の最大酸素吸蔵量を設定してもよく、この場合、確実に排気ガス規制の要件を満たすような初期値OSCmax0を設定することができる。
さらに、初期値OSCmax0として、機関本体1の運転条件(エンジン回転速度Ne、負荷、吸入空気量Qaなど)に基づき、定常状態での最大酸素吸蔵量を設定してもよく、この場合、設定精度が向上する。
続いて、触媒温度Tmpcatを演算する(ステップ1602)。なお、触媒温度Tmpcatは、触媒12に温度センサを取り付けるか、または触媒12の上下流に温度センサを配置して、測定により直接求めてもよい。
また、触媒温度Tmpcatを、他の運転条件情報から推定演算で求めてもよい。たとえば、触媒温度Tmpcatは、運転条件(エンジン回転速度Ne、負荷、吸入空気量Qaなど)ごとに設定された定常状態での値をマップ演算で読み出すことにより、定常状態時の値として推定演算することができる。また、機関本体1の過渡時における挙動は、定常状態の触媒温度Tmpcatにフィルタ処理を加えることにより、推定することができる。
さらに、始動時の初期触媒温度Tmpcat0は、始動時の冷却水温THW、または、前回停止時から今回始動時までの時間間隔などから推定することができる。これにより、機関本体1の始動から触媒12が活性化して定常状態になるまでの過渡的な温度挙動のみならず、運転条件の変動による過渡的な温度挙動を求めることができる。
次に、ステップ1602に続いて、触媒温度Tmpcatに応じて設定された1次元マップ(図20参照)により、最大酸素吸蔵量OSCmaxの温度補正係数Ktmpcatを演算する(ステップ1603)。
温度補正係数Ktmpcatは、図20に示すように、触媒温度Tmpcatが低いほど、最大酸素吸蔵量OSCmaxが減少するように、小さい値に設定される。また、触媒12の酸素吸蔵作用は、300℃〜400℃程度の温度領域で急速に活性化する特性を有するので、温度補正係数Ktmpcatは、触媒12の温度特性を考慮して設定される。
続いて、下流側O2センサ15の出力値V2に対して適応的に触媒劣化度Catdetを演算する(ステップ1604)。触媒劣化度Catdetは、触媒12の劣化が大きいほど大きい値となる。
続いて、触媒劣化度Catdetに応じて設定された1次元マップ(図21参照)により最大酸素吸蔵量の劣化補正係数Kcatdetを演算する(ステップ1605)。劣化補正係数Kcatdetは、図21に示すように、触媒劣化度Catdetが大きいほど、最大酸素吸蔵量OSCmaxを減少させるように、小さい値に設定される。
最後に、温度補正係数Ktmpcatおよび劣化補正係数Kcatdetに基づき最大酸素吸蔵量の初期値OSCmax0を補正して、以下の式(7)のように最大酸素吸蔵量OSCmaxを演算する(ステップ1606)。
OSCmax=OSCmax0×Ktmpcat×Kcatdet ・・・(7)
式(7)により、各種運転条件の変化のみならず、触媒12の活性途中および過渡時に応じた触媒温度Tmpcatの変化や、触媒12の劣化などの各種条件に応じて変化する最大酸素吸蔵量OSCmaxを演算することができ、触媒12の酸素吸蔵量の振動処理の制御精度を向上させることができる。
次に、図22のフローチャートを参照しながら、最大酸素吸蔵量演算手段204による図19内の触媒劣化度演算処理(ステップ1604)について、さらに詳細に説明する。図22の演算ルーチンは、所定時間(たとえば、5msec)ごとに実行される。
図22において、まず、触媒劣化度Catdetの初期化条件か成立しているか否かを判定し(ステップ1901)、初期化条件が成立している(すなわち、YES)と判定されれば、触媒劣化度Catdetを「0」(劣化無し状態)にリセットして(ステップ1902)、ステップ1903に進む。また、ステップ1901において、初期化条件が成立していない(すなわち、NO)と判定されれば、ステップ1902を実行せずに、ステップ1903に進む。
触媒劣化度Catdetは、機関本体1の停止時にリセットされないように、制御回路10内のバックアップRAM106(または、EEPROMなど)に記録されて保持されているが、バッテリの取り外し後またはEEPROMの初期化後の最初の電源ON時において、初期化条件が成立するようになっている。
また、触媒劣化度Catdetの演算が不可能になった場合(下流側O2センサ15などのセンサ故障が検出された場合など)や、触媒劣化度Catdetの再演算条件が成立した場合、または、外部機器(図示せず)からの通信によりリセット要求があった場合にも、ステップ1901において、初期化条件が成立したものと判定される。
続いて、下流側O2センサ15の出力値V2のリッチ/リーン反転の判定処理を行う(ステップ1903)。ステップ1903の判定処理は、平均空燃比振動手段203による図6内のステップ701の判定処理と同様に行われる。
すなわち、下流側O2センサ15の出力値V2がリーンからリッチに反転した場合には、下流側O2センサ15の反転フラグFRO2detを「1」に設定し、リッチからリーンに反転した場合には、反転フラグFRO2detを「2」に設定し、反転しなかった場合には反転フラグFRO2detを「0」に設定する。なお、図8に示すヒステリシスの設定幅、または不感帯の設定幅、出力値V2のなまし処理の程度は、平均空燃比振動手段203の場合とは異なるように設定してもよい。
次に、ステップ1903に続いて、触媒劣化度Catdetの更新条件が成立しているか否かを判定し(ステップ1904)、触媒劣化度Catdetの更新条件が成立している(すなわち、YES)と判定されれば、ステップ1905以下の処理に進む。また、ステップ1904において、更新条件が成立していない(すなわち、NO)と判定されれば、ステップ1905〜1910を実行せずに、図22の処理ルーチンを終了する。
なお、触媒劣化度Catdetの更新条件は、触媒12が十分活性していると判定可能な条件下および平均空燃比の振動処理が実行中の条件下において成立する。また、触媒12の活性状態は、触媒温度Tmpcatから直接的に判定してもよく、機関本体1の始動後の経過時間や始動後の積算吸入空気量、または、エンジン回転速度Neや負荷などの所定運転条件に基づいて判定してもよい。さらに、触媒12の活性状態を、平均空燃比の振動処理の振動回数PTNが所定回数以上に達したか否かに基づいて判定してもよい。
続いて、ステップ1905〜1909においては、下流側O2センサ15の出力値V2のリッチ/リーン反転に基づいて、触媒12の酸素吸蔵量が最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)からの振り切れを検出し、触媒劣化度Catdetの増減処理が行われる。
まず、振動方向フラグFRLが「1」であるか否かにより、リッチ方向に振動中か否かを判定し(ステップ1905)、リッチ方向に振動中(FRL=1)(すなわち、YES)と判定されれば、ステップ1906に進む。また、ステップ1905において、リーン方向に振動中(FRL=2)(すなわち、NO)と判定されれば、ステップ1907に進む。
ステップ1905で、FRL=1(すなわち、YES)と判定された場合に実行されるステップ1906においては、下流側O2センサ15の反転フラグFRO2detが「1」であるか否かにより、リッチ反転(下流側O2センサ15の出力値V2がリーンからリッチに反転した)か否かを判定する。
ステップ1906において、リッチ反転(FRO2det=1)(すなわち、YES)と判定されれば、触媒劣化度Catdetを所定設定値XdetHだけ増加させて(ステップ1908)、以下の式(8)のように更新演算し、ステップ1910に進む。
Catdet=Catdet+XdetH ・・・(8)
一方、ステップ1905で、FRL=2(すなわち、NO)と判定された場合に実行されるステップ1907においては、下流側O2センサ15の反転フラグFRO2detが「2」であるか否かにより、リーン反転(下流側O2センサ15の出力値V2がリッチからリーンに反転した)か否かを判定する。
ステップ1907において、リーン反転(FRO2det=2)(すなわち、YES)と判定されれば、ステップ1908に進み、上記式(8)のように、触媒劣化度Catdetを所定設定値XdetHだけ増加させる。
一方、ステップ1906において、リーン反転(FRO2det=2)(すなわち、NO)と判定された場合、または、ステップ1907において、リッチ反転(FRO2det=1)(すなわち、NO)と判定された場合には、触媒劣化度Catdetを所定設定値XdetLだけ減少させて(ステップ1909)、以下の式(9)のように更新演算し、ステップ1910に進む。
Catdet=Catdet−XdetL ・・・(9)
なお、式(8)、式(9)内の各所定設定値XdetH、XdetLは、平均空燃比の振動周期を考慮して設定されるとともに、吸入空気量Qaに反比例するように、吸入空気量Qaに応じて、または運転条件に応じて設定される。
最後に、ステップ1910において、上限値MXdetと下限値MNdetとの範囲内の値となるように、以下の式(10)を用いて、触媒劣化度Catdetの上下限制限処理を行い、図22の処理ルーチンを終了する。
MNdet≦Catdet≦MXdet ・・・(10)
次に、図23および図24を参照しながら、触媒劣化診断手段205の処理動作について説明する。
図23は触媒12の劣化時の挙動を示すタイミングチャートであり、図24は触媒劣化診断手段203の処理動作を示すフローチャートである。図24の演算ルーチンは、所定時間(たとえば、5msec)ごとに実行される。
図23において、触媒12の劣化により最大酸素吸蔵量OSCmaxが減少し、平均空燃比の振動処理による酸素吸蔵量の振動幅が、減少した最大酸素吸蔵量OSCmaxから振り切れるようになると、下流側O2センサ15の出力値V2のリッチ/リーン反転が増加することにより、触媒劣化度Catdetは増加する。
図24において、まず、触媒12の劣化診断の初期化条件が成立しているか否かを判定し(ステップ2101)、初期化条件が成立している(すなわち、YES)と判定されれば、診断回数Nratioを「0」にリセットし(ステップ2102)、反転回数比Roaの積算値Roasmを「0」にリセットし(ステップ2103)、劣化診断結果Fcatjを「0」(未判定状態)にリセットし(ステップ2104)、反転回数比平均値Roaaveを「0」にリセットし(ステップ2105)、続いて、劣化診断条件が成立しているか否かを判定する(ステップ2106)。
また、ステップ2101において、初期化条件が成立していない(すなわち、NO)と判定されれば、ステップ2102〜2105を実行せずに、ステップ2106に進む。
なお、触媒劣化診断手段205の情報(触媒劣化度Catdetなど)は、機関本体1の停止時にリセットされないように、バックアップRAM106(または、EEPROMなど)に記録されて保持されているが、バッテリの取り外し後またはEEPROMの初期化後の最初の電源ON時において、ステップ2101の初期化条件が成立するようになっている。
また、触媒劣化度Catdetの演算が不可能になった場合(下流側O2センサ15などの故障検出時など)や、触媒劣化度Catdetの再演算条件が成立した場合、または外部機器(図示せず)からの通信によりリセット要求があった場合にも、ステップ2101において、初期化条件が成立したものと判定される。
ステップ2106において、劣化診断条件が成立している(すなわち、YES)と判定されれば、続いて、目標平均空燃比がリッチ/リーンで反転したか否かを判定し(ステップ2107)、反転した(すなわち、YES)と判定されれば、平均空燃比反転回数Nafを「1」だけ増加させて(ステップ2108)、ステップ2109に進む。
また、ステップ2107において、目標平均空燃比が反転していない(すなわち、NO)と判定されれば、ステップ2108を実行せずに、ステップ2109に進む。
なお、ステップ2107における目標平均空燃比の反転判定は、振動方向フラグFRLが「1」(リッチ)または「2」(リーン)に変化したか否かにより行われる。つまり、前回演算時の振動方向フラグFRLを記憶しておき、今回演算時の振動方向フラグFRLと比較することにより、目標平均空燃比の反転を判定することができる。
一方、ステップ2106において、劣化診断条件が成立していない(すなわち、NO)と判定されれば、平均空燃比反転回数Nafを「0」にリセットし(ステップ2132)、下流側O2反転回数Nro2を「0」にリセットし(ステップ2133)、ディレイ判定フラグFrsdlyを「0」(後述するディレイ処理の非実行を示す)にリセットして(ステップ2134)、ステップ2127(後述する)に進む。
なお、ステップ2106における劣化診断条件は、前述(図22内のステップ1904)の触媒劣化度Catdetの更新条件と同様に、触媒12が十分活性していると判定可能な条件下および平均空燃比の振動処理が実行中の条件下において成立する。また、触媒12の活性状態は、触媒温度Tmpcatから直接的に判定してもよく、機関本体1の始動後の経過時間や始動後の積算吸入空気量、または、エンジン回転速度Neや負荷などの所定運転条件に基づいて判定してもよい。さらに、触媒12の活性状態を、平均空燃比の振動処理の振動回数PTNが所定回数以上に達したか否かに基づいて判定してもよい。
ステップ2108に戻り、続いて、前述(図6内のステップ701、図22内のステップ1903)と同様に、下流側O2センサ15の出力値V2のリッチ/リーン反転の判定処理を実行する(ステップ2109)。
ステップ2109において、出力値V2がリーンからリッチへの反転が判定された場合には、下流側O2センサ15の反転フラグFRO2rvを「1」に設定し、リッチからリーンへの反転が判定された場合には、反転フラグFRO2rvを「2」に設定し、反転が判定されなかった場合には、反転フラグFRO2rvを「0」に設定する。
このとき、前述のステップ1903の場合と同様に、図8に示すヒステリシスの設定幅、または不感帯の設定幅、出力値V2のなまし処理の程度は、平均空燃比振動手段203の場合とは異なるように設定してもよい。
ステップ2105〜2109は、出力値V2のリッチ/リーン反転により、触媒12の酸素吸蔵量が、最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)から振り切れたことを検出し、これに応答して触媒劣化度Catdetを増減するための処理である。
次に、反転フラグFRO2rvが「1」または「2」であるか否かにより、出力値V2(下流側空燃比)が反転したか否かを判定し(ステップ2110)、反転した(FRO2rv=1、または、FRO2rv=2)(すなわち、YES)と判定されれば、下流側O2反転回数Nro2を「1」だけ増加させる(ステップ2111)。
続いて、平均空燃比反転回数Nafが更新条件判定値Xnaf以上であるか否かにより、劣化診断用の判定基準値Xroaの更新条件が成立しているか否かを判定し(ステップ2112)、判定基準値Xroaの更新条件が成立している(Naf≧Xnaf)(すなわち、YES)と判定されれば、判定用平均空燃比反転回数Nafjとして、平均空燃比反転回数Nafを設定することにより、判定用平均空燃比反転回数Nafjを更新する(ステップ2113)。
また、次回の判定基準値Xroaを演算するための準備として、平均空燃比反転回数Nafを「0」にリセットするとともに(ステップ2114)、平均空燃比が変動してから出力値V2が変動するまでの時間遅れを考慮したディレイ判定フラグFrsdlyを「1」(ディレイ処理中を示す)にセットし(ステップ2115)、ディレイ判定フラグFrsdlyが「1」であるか否かにより、ディレイ処理中であるか否かを判定する(ステップ2116)。
一方、ステップ2112において、判定基準値Xroaの更新条件が成立してない(Naf<Xnaf)(すなわち、NO)と判定されれば、ステップ2113〜2115を実行せずに、ステップ2116に進む。
ステップ2116において、ディレイ処理中である(Frsdly=1)(すなわち、YES)と判定されれば、以下の式(11)のように、ディレイタイマTrsdlyを所定値DTrsdlyだけ増加させて更新し(ステップ2117)、ステップ2119に進む。
Trsdly=Trsdly+DTrsdly ・・・(11)
式(11)において、タイマ更新用の所定値DTrsdlyは、たとえば演算周期5msecに設定される。
また、ステップ2116において、ディレイ処理中でない(Frsdly=0)(すなわち、NO)と判定されれば、ディレイタイマTrsdlyを「0」にリセットして(ステップ2118)、ステップ2119に進む。
ステップ2119においては、ディレイタイマTrsdlyが所定判定値Xrsdlyよりも大きいか否かにより、ディレイ時間が経過したか否かを判定し、ディレイ時間が経過していない(Trsdly≦Xrsdly)(すなわち、NO)と判定されれば、ステップ2127(後述する)に進む。
また、ステップ2119において、ディレイ時間が経過した(Trsdly>Xrsdly)(すなわち、YES)と判定されれば、出力値V2に基づく劣化診断判定情報の更新条件が成立しているので、以下の更新処理(ステップ2120〜2126)を実行する。
なお、所定判定値Xrsdlyは、平均空燃比の変動により、触媒12の下流側O2センサ15の出力値V2が変動するまでの時間遅れを考慮して設定される。この時間遅れは、燃料噴射弁7から燃料が噴射された時点から、実際に混合気が下流側O2センサ15の設置位置に移動するまでの時間遅れと、触媒12の酸素吸蔵作用による時間遅れとを含み、概して吸入空気量Qaに反比例する。
したがって、所定判定値Xrsdlyは、たとえば吸入空気量Qaに応じた1次元マップにより設定されている。
また、ステップ2119における更新条件の判定に、ディレイタイマTrsdly(タイマ動作)を用いたが、これに代えて、ディレイタイマTrsdlyを用いずに、ディレイ判定フラグFrsdlyが「1」に設定されている期間中(ディレイ処理中)の吸入空気量Qaの積算量を演算し、吸入空気量Qaの積算量が所定量よりも大きい場合に、更新条件が成立したと判定してもよい。
ステップ2119に続く劣化診断判定情報の更新処理において、まず、判定用下流側O2反転回数Nro2jとして、下流側O2反転回数Nro2に設定することにより、判定用下流側O2反転回数Nro2jを更新する(ステップ2120)。
また、次回の判定基準値Xroaを演算するための準備として、下流側O2反転回数Nro2を「0」にリセットするとともに(ステップ2121)、ディレイ判定フラグFrsdlyを「0」にリセットして(ステップ2122)、ディレイ処理を終了する。
続いて、判定用平均空燃比反転回数Nafjと、これに対応する判定用下流側O2反転回数Nro2jとが揃えられたので、以下の式(12)のように、判定用平均空燃比反転回数Nafjと判定用下流側O2反転回数Nro2jとの反転回数比Roaを更新演算する(ステップ2123)。
Roa=Nro2j/Nafj ・・・(12)
続いて、反転回数比Roaの平均値Roaaveを更新演算するために、まず、前回の積算値Roasmに反転回数比Roaを加算して積算値Roasmを更新演算し(ステップ2124)、診断回数Nratioを「1」だけ増加させた後(ステップ2125)、以下の式(13)のように、反転回数比平均値Roaaveを更新演算する(ステップ2126)。
Roaave=Roasm/Nratio ・・・(13)
次に、劣化診断結果Fcatjが「0」であるか否かにより、劣化診断処理が未実行であるか否かを判定し(ステップ2127)、診断処理が実行済み(Fcatj=1、または、Fcatj=2)(すなわち、NO)と判定されれば、図24の処理ルーチンを終了する。
また、診断処理が未実行である(Fcatj=0)(すなわち、YES)と判定されれば、続いて、診断回数Nratioが診断実行回数Xnrと一致するか否かにより、診断条件が成立しているか否かを判定し(ステップ2128)、診断条件が成立していない(Nratio≠Xnr)(すなわち、NO)と判定されれば、図24の処理ルーチンを終了する。
また、ステップ2128において、診断条件が成立している(Nratio=Xnr)(すなわち、YES)と判定されれば、触媒12の劣化診断処理を実行し、反転回数比平均値Roaaveが判定基準値Xroa以上であるか否かにより、触媒劣化の有無を判定する(ステップ2129)。
ステップ2129において、触媒12が劣化状態である(Roaave≧Xroa)(すなわち、YES)と判定されれば、劣化診断結果Fcatjを「2」(劣化を示す)に設定して(ステップ2130)、図24の処理ルーチンを終了する。
また、ステップ2129において、触媒12が正常状態である(Roaave<Xroa)(すなわち、NO)と判定されれば、劣化診断結果Fcatjを「1」(正常を示す)に設定して(ステップ2131)、図24の処理ルーチンを終了する。
なお、判定基準値Xroaは、劣化診断が必要な触媒の最大酸素吸蔵量OSCmaxの減少状態を検出できる値に調整されている。
また、平均空燃比の振動による酸素吸蔵量を、劣化診断が必要な触媒の最大酸素吸蔵量OSCmaxよりも大きい値に設定することにより、劣化診断が必要な触媒を確実に検出することができる。
さらに、下流側O2反転回数Nro2(下流側O2センサ15の出力値V2の反転回数)を、酸素吸蔵量の振動回数PTNとの比較に基づいて判定することにより、機関本体1の運転条件および運転パターンにより変化する振動周期に起因した劣化診断の判定精度低下を防止することができる。
ここでは、反転回数平均値Roaaveを用いて触媒劣化を診断したが、最大酸素吸蔵量演算手段204で演算される触媒劣化度Catdetが所定値以上を示す場合に、触媒12が劣化していると判定してもよい。
次に、図25のタイミングチャートを参照しながら、触媒劣化診断における挙動について説明する。図25においては、触媒12の劣化により最大酸素吸蔵量OSCmaxが減少して、酸素吸蔵量の振動幅が振り切れ始めた場合の各パラメータの挙動を示している。
図25において、下流側O2センサ15の出力値V2の反転が判定された状態でも、平均空燃比が反転していない理由は、触媒劣化診断手段205のヒステリシス幅が、平均空燃比振動手段203のヒステリシス幅よりも狭く設定されているからである。
まず、時刻t221において、平均空燃比(振動方向フラグFRL参照)がリッチからリーンに反転すると、平均空燃比反転回数Nafが更新条件判定値Xnafに到達し、ディレイタイマTrsdlyが増加し始める。
続いて、前述の混合気の移動遅れや酸素吸蔵作用により、時刻t221においてリッチからリーンに反転した影響が、時間遅れをもって時刻t222の付近から表れ始め、時刻t222において、下流側O2センサ15の出力値V2がリッチ反転する。
一方、ディレイタイマTrsdlyは、時刻t223において、所定判定値Xrsdlyに到達し、判定用下流側O2反転回数Nro2jを更新する。このように、制御系の遅れを考慮したディレイタイマTrsdlyを設けることにより、平均空燃比の振動に対応した下流側O2センサ15の出力値V2の変動を精度よく検出することができる。
次に、図26のフローチャートおよび図27の説明図を参照しながら、第2の空燃比フィードバック制御手段202による演算処理について説明する。図26の処理ルーチンは、出力値V2に基づく平均空燃比振動の振動中心AFCNTを演算するための手順を示しており、所定時間(たとえば、5msec)ごとに実行される。
図26において、第2の空燃比フィードバック制御手段202は、まず、下流側O2センサ15の出力値V2を読み込み、フィルタ処理(または、平均化処理などのなまし処理)を施し(ステップ2301)、処理後の出力値V2fltに基づく制御を可能にする。
続いて、下流側O2センサ15によるフィードバック領域(閉ループ条件が成立している)か否かを判定する(ステップ2302)。
ステップ2302においては、たとえば、理論空燃比制御以外の空燃比制御条件下(機関本体1の始動中、冷却水温THWが低温時でのリッチ化制御中、高負荷パワー増量時でのリッチ化制御中、燃費向上時のリーン化制御中、始動後のリーン化制御中、燃料カット中など)、下流側O2センサ15の不活性状態時または故障時などの場合に、閉ループ条件が不成立と判定され、その他の場合には閉ループ条件が成立したと判定される。
なお、下流側O2センサ15の活性/不活性状態の判定は、始動後から所定時間だけ経過したか否か、または、下流側O2センサ15の出力値V2のレベルが所定電圧を一度横切ったか否かにより判定することができる。
ステップ2302において、閉ループ条件が成立していない(すなわち、NO)と判定されれば、平均空燃比振動の振動中心(中心空燃比)の初期値AFCNT0と積分演算値(以下、単に「積分値」という)AFIとを用いて、平均空燃比振動の振動中心AFCNTを、以下の式(14)のように求め(ステップ2314)、図26の処理ルーチンを終了する。
AFCNT=AFCNT0+AFI ・・・(14)
式(14)において、初期値AFCNT0は、たとえば「14.53」に設定される。また、積分値AFIは、閉ループ制御が終了する直前の値であり、制御回路10内のバックアップRAM106に保持されている。初期値AFCNT0および積分値AFIは、機関本体1の運転条件(たとえば、エンジン回転速度Ne、負荷、冷却水温THWで区分けされた運転領域)ごとに保持された設定値であり、それぞれ、バックアップRAM106内に保持されている。
一方、ステップ2302において、閉ループ条件が成立している(すなわち、YES)と判定されれば、下流側O2センサ15の出力値V2の目標値VR2を設定する(ステップ2303)。
目標値VR2は、理論空燃比付近の触媒12の浄化ウインドウに対応した下流側O2センサ15の所定出力値(たとえば、0.45V付近)に設定されてもよく、または、触媒12のNOx浄化率が高くなるような高めの電圧(たとえば、0.75V付近)や、CO、HCの浄化率が高くなるような低めの電圧(たとえば、0.2V付近)などに設定されてもよく、さらに、運転条件などに応じて可変変更されてもよい。
なお、運転条件に応じて目標値VR2を変更する場合には、変更時のステップ的な変化による空燃比変動を緩和するために、目標値VR2になまし処理(たとえば、1次遅れフィルタ処理)を施してもよい。
次に、ステップ2303に続いて、出力値V2の目標値VR2と、フィルタ処理後の出力値V2fltとの偏差ΔV2(=VR2−V2flt)を演算し(ステップ2304)、偏差ΔV2が「0」となるような振動中心AFCNTを設定するために、偏差ΔV2に応じたPI制御処理(比例演算および積分演算)を行う(ステップ2305〜2311)。
たとえば、下流側O2センサ15の出力値V2が目標値VR2よりも小さく、リーン側の場合には、上流側の目標平均空燃比AFAVEobjをリッチ側に設定して、下流側O2センサ15の出力値V2が目標値VR2に復帰するように作用させる。
触媒12の上流側の目標平均空燃比AFAVEobjは、一般的なPI制御器により、目標平均空燃比の初期値AFAVE0と、積分ゲインKi2に基づく積分操作量Σ{Ki2(ΔV2)}と、比例ゲインKp2に基づく比例操作量Kp2(ΔV2)とを用いて、以下の式(15)のように演算される。
AFAVEobj=AFAVE0+Σ{Ki2(ΔV2)}+Kp2(ΔV2)・・・(15)
式(15)において、初期値AFAVE0は、運転条件ごとに設定された理論空燃比に相当する値であり、たとえば「14.53」に設定される。
また、積分ゲインKi2に基づく積分演算は、偏差ΔV2を積分しながら出力を生成して比較的ゆっくり動作するので、上流側O2センサ13の特性変動に起因する下流側O2センサ15の出力値V2の定常的な偏差を解消する効果がある。
積分ゲインKi2は、大きく設定すればするほど、積分操作量Σ{Ki2(ΔV2)}の絶対値が大きくなり、偏差解消用の制御効果は大きくなるが、大きく設定し過ぎると位相遅れが大きくなり、制御系が不安定になってハンチングが生じるので、適切なゲイン設定が必要となる。
一方、比例ゲインKp2に基づく比例演算は、偏差ΔV2に比例した出力を生成して早い応答性を示すので、偏差を早急に復帰させる効果がある。比例ゲインKp2は、大きく設定すればするほど、比例操作量Kp2(ΔV2)(たとえば、「Kp2・ΔV2」)の絶対値が大きくなり、復帰速度が早くなるが、大きく設定し過ぎると制御系が不安定になってハンチングを生じるので、適切なゲイン設定が必要となる。
上記PI制御処理において、まず、積分値AFIの更新条件が成立しているか否かを判定する(ステップ2305)。積分値AFIの更新条件は、過渡運転中の場合および過渡運転後の所定期間以外の場合に成立する。
たとえば、過渡運転時においては、上流側A/Fが大きく乱れ、同様に下流側A/Fも乱れるので、仮に、この状態で積分演算を行うと間違った値を積分し、特に積分演算は比較的ゆっくり動作することから、過渡運転後もしばらくは間違った値を保持して制御性能が悪化する。
したがって、過渡運転時においては、積分演算の更新を一時的に停止して積分値AFIを保持することにより、上記のような誤った積分演算を防止している。また、過渡運転後も、制御対象の遅れによりしばらくは影響が残るので、過渡運転後の所定期間においても積分値AFIの更新を禁止する。特に、触媒12の遅れが大きいので、過渡運転後の所定期間を、過渡運転後の積算吸入空気量が所定値に到達するまでの期間として設定してもよい。なぜなら、触媒12の状態が過渡運転の影響から復帰するまでの速度は、触媒12のO2吸蔵作用に依存し、吸入空気量Qaに比例するからである。
なお、過渡運転は、急な加減速、燃料カット、リッチ化制御、リーン化制御、第2の空燃比フィードバック制御手段202による制御の停止、第1の空燃比フィードバック制御手段201による制御の停止、蒸散ガス導入の急変、などを含む。急な加減速は、スロットル開度の単位時間当たりの変化量が所定以上を示す場合、または、吸入空気量Qaの単位時間当たりの変化量が所定以上を示す場合などに判定される。また、蒸散ガス導入の急変は、蒸散ガスを導入するバルブ開度の単位時間当たりの変化量が所定以上を示す場合などに判定される。
ステップ2305において、積分値AFIの更新条件が成立している(すなわち、YES)と判定されれば、前回までの積分値AFIに、積分ゲインKi2に基づく更新量Ki2(ΔV2)を加算し、積分値AFIを更新演算して(ステップ2306)、ステップ2308に進む。
積分値AFIは、前述のように運転条件ごとにバックアップRAM106に保持されている。更新量Ki2(ΔV2)は、単純に「Ki2・ΔV2」と設定されてもよく、または、図27に示すような1次元マップを用いて、偏差ΔV2に応じた値に可変設定(いわゆる、可変ゲイン設定)してもよい。
また、積分値AFIにより補償される上流側O2センサ13の特性変動は、排気温度または排気圧力などの運転条件に応じて変化するので、積分値AFIは、運転条件が変化するごとに更新設定されるバックアップRAM106内に保持しておき、運転条件ごとに切り替えられる。また、積分値AFIは、バックアップRAM106内に保持されているので、機関本体1の停止または再始動ごとにリセットされ、制御性能の低下を回避することができる。
一方、ステップ2305において、積分値AFIの更新条件が成立していない(すなわち、NO)と判定されれば、前回の積分値AFIのままに設定し、積分値AFIを更新せずに(ステップ1107)、ステップ2308に進む。
ステップ2308においては、積分値AFIの最小値AFIminおよび最大値AFImaxを用いて、以下の式(16)を満たすように、積分値AFIの上下限制限処理を行う。
AFImin<AFI<AFImax ・・・(16)
最小値AFIminおよび最大値AFImaxは、上流側O2センサ13の特性変動幅(あらかじめ把握可能)を補償できるような適切な制限値に設定される。これにより、過大な空燃比操作を回避することができる。
続いて、比例演算処理を行い、比例演算値(以下、「比例値」という)AFPとして、比例操作量Kp2(ΔV2)を設定する(ステップ2309)。比例値Kp2(ΔV2)は、単純に「Kp2・ΔV2」と設定してもよく、積分値AFIの更新量Ki2(ΔV2)と同様に、図27に示すような1次元マップを用いて、偏差ΔV2に応じて可変設定(可変ゲイン設定)してもよい。
また、積分ゲインKi2および比例ゲインKp2は、平均空燃比振動手段203による平均空燃比の振動処理の有無、または平均空燃比の振動幅に応じて、設定変更されてもよい。この場合、平均空燃比振動手段203により下流側O2センサ15の出力値V2の変動が増加すると、第2の空燃比フィードバック制御手段202の制御により、出力値V2の変動を抑制するように平均空燃比が操作されるので、平均空燃比振動手段203と第2の空燃比制御手段202とが相互に影響する。つまり、積分ゲインKi2および比例ゲインKp2は、平均空燃比の振動処理中に変更され、相互影響を考慮して設定される。
また、積分ゲインKi2および比例ゲインKp2は、最大酸素吸蔵量演算手段204により演算される最大酸素吸蔵量OSCmax、触媒温度Tmpcat、触媒劣化度Catdet、または、触媒劣化診断手段205による劣化有無の診断結果に応じて、設定変更されてもよい。この場合、積分ゲインKi2および比例ゲインKp2の変更により、触媒12の最大酸素吸蔵量OSCmaxの変化に応じた適切なゲインを設定することができる。
また、過渡運転条件下(積分値AFIの更新条件が不成立)における過渡運転後の所定期間では、比例ゲインKp2の絶対値を大きく設定して、外乱で悪化した触媒12の浄化状態の復帰速度を速める。一方、過渡運転後の所定期間経過後は、比例ゲインKp2の絶対値を小さく設定して、目標空燃比A/Foの操作量過大に起因したドライバビリティの悪化を回避する。
比例演算における過渡運転後の所定時間は、積分演算の場合と同様に、過渡運転後の積算空気量が所定値に到達するまでの期間に制御されてもよい。なぜなら、触媒12の状態が過渡運転の影響から復帰するまでの速度は、触媒12のO2吸蔵作用に依存し、吸入空気量Qaに比例するからである。
したがって、過渡運転後の所定期間において、比例ゲインKp2の絶対値を大きく設定することにより、過渡運転による触媒12の浄化状態悪化を早く復帰させることができ、また通常運転時のドライバビリティの悪化を回避することができる。
次に、ステップ2309に続いて、過大な空燃比操作を防止するために、比例値AFPの最小値AFPminおよび最大値AFPmaxを用いて、以下の式(17)を満たすように、比例値AFPの上下限制限処理を行う(ステップ2310)。
AFPmin<AFP<AFPmax ・・・(17)
続いて、ステップ2306〜2308で求めた積分値AFIと、ステップ2309、2310で求めた比例値AFPとを合計し、以下の式(18)により、振動中心AFCNTを演算する(ステップ2311)。
AFCNT=AFAVE0+AFP+AFI ・・・(18)
式(18)のようにPI演算値の合計からなる振動中心AFCNTは、触媒12の上流側の目標平均空燃比AFAVEobjを求める前述の式(15)に対応する。
最後に、過大な空燃比操作を回避するために、振動中心AFCNT(目標平均空燃比AFAVEobjに対応)の最小値AFCNTminおよび最大値AFCNTmaxを用いて、以下の式(19)を満たすように、振動中心AFCNT(目標平均空燃比AFAVEobj)の上下限制限処理を行い(ステップ2312)、図26の処理ルーチンを終了する。
AFCNTmin<AFCNTobj<AFCNTmax ・・・(19)
以上のように、この発明の実施の形態1に係る内燃機関の空燃比制御装置は、触媒12の上流側に設けられて上流側排気ガス中の空燃比を検出する上流側O2センサ13と、上流側O2センサ13の出力値V1および制御定数に応じて機関本体1に供給する空燃比を調整して、空燃比を周期的にリッチ方向およびリーン方向に振動させる第1の空燃比フィードバック制御手段201と、平均空燃比振動手段203とを備え、平均空燃比振動手段203は、触媒12の酸素吸蔵量に基づいて、周期的に振動する空燃比を平均化した平均空燃比がリッチ方向およびリーン方向に振動するように、制御定数を操作する。
これにより、図32、図33に示すように、上流側A/Fのリッチ方向およびリーン方向への空燃比振動の周期または振動幅を大きく変化させることなく、振動中の空燃比の平均空燃比をリッチ方向およびリーン方向に周期的に振動させて、酸素吸蔵量の振動幅を変更させることができ、空燃比フィードバック性能およびトルク変動を重視した空燃比振動の周期または振動幅の設定を変更することなく、酸素吸蔵量の振動幅ΔOSCを、触媒12の劣化に適応するために自由に変更することができる。
また、空燃比フィードバック性能およびトルク変動に影響する空燃比振動の周期または振動幅を大きく変えることなく、触媒12の劣化診断のために自由に変更することができる。
また、平均空燃比振動手段203は、平均空燃比に対する目標平均空燃比AFAVEobjに応じて制御定数(各スキップ量RSR、RSL、各積分定数KIR、KIL、各遅延時間τDR、τDL、比較電圧VR1)を演算設定し、目標平均空燃比AFAVEobjをリッチ方向およびリーン方向に周期的に振動させる。また、各演算マップ上の設定値は、触媒12の上流側の実際の平均空燃比が目標平均空燃比AFAVEobjと一致するように、あらかじめ机上計算または実験値に基づいて設定される。さらに、運転条件により制御定数の設定値を変化させることにより、運転条件にかかわらず、実際の平均空燃比が目標平均空燃比AFAVEobjと一致させることができる。
また、平均空燃比振動手段203は、触媒12の酸素吸蔵量の振動幅ΔOSCが、触媒12の最大酸素吸蔵量OSCmaxの範囲内であって、かつ機関本体1の運転条件に応じて設定された所定振動幅となるように、平均空燃比の振動幅または振動周期を運転条件に応じて設定する。
このように、触媒12の最大酸素吸蔵量OSCmaxの範囲内となるように酸素吸蔵量の振動幅ΔOSCを設定し、最大酸素吸蔵量OSCmaxと最小酸素吸蔵量(=0)との間の範囲内となるように触媒12の酸素吸蔵量を設定することにより、触媒12の上流側空燃比の変動は、酸素吸蔵量の変化によって確実に吸収され、触媒12内の空燃比は理論空燃比付近に保たれるので、触媒12の浄化率の大幅な悪化を防止することができる。
また、平均空燃比振動手段203は、触媒劣化診断手段205による触媒12の劣化診断時と劣化診断時以外とで、触媒12の酸素吸蔵量の振動幅ΔOSCが変化するように、平均空燃比の振動幅または振動周期を変更する。つまり、最大酸素吸蔵量OSCmaxの範囲内においても、酸素吸蔵量の振動幅ΔOSCは、触媒12の浄化特性の向上や、触媒12の劣化診断を目的として、各種条件に応じて調整され、所定量に設定される。
これにより、たとえばエンジン回転速度Neや負荷の違いによって、機関本体1からの排気ガス成分や触媒12の温度が変化して、触媒12の浄化特性が変化しても、エンジン回転速度Neや負荷に応じて酸素吸蔵量の振動幅ΔOSCが変更されるので、さらに触媒12の浄化特性を向上させることができる。
また、平均空燃比振動手段203は、触媒12の酸素吸蔵量の振動幅ΔOSCが、触媒12が劣化する前の最大酸素吸蔵量OSCmaxの範囲内であって、かつ劣化診断が必要な劣化触媒の最大酸素吸蔵量の範囲外となるように、平均空燃比の振動幅または振動周期を運転条件に応じて設定する。つまり、劣化診断時の酸素吸蔵量の振動幅ΔOSCは、劣化前の触媒12の最大酸素吸蔵量OSCmaxの範囲内で、かつ劣化診断が必要な触媒の最大酸素吸蔵量の範囲外となるように設定される。
これにより、劣化診断が必要な触媒が用いられている場合には、下流側O2センサ15の出力値V2の乱れが大きくなるので、劣化診断における劣化判定精度を向上させることができる。
また、平均空燃比振動手段203は、たとえば、平均空燃比の振動開始時の最初の振動周期を、最終的に設定される振動周期の半分に設定し、平均空燃比の振動開始時の最初の振動幅を、最終的に設定される振動幅の半分に設定する。これにより、触媒12の酸素吸蔵量の振動幅ΔOSCが所定幅を超過することを回避することができる。
また、この発明の実施の形態1に係る内燃機関の空燃比制御装置は、機関本体1の運転条件に基づいて触媒12の最大酸素吸蔵量OSCmaxを演算する最大酸素吸蔵量演算手段204を備え、平均空燃比振動手段203により設定される平均空燃比の振動周期または振動幅は、最大酸素吸蔵量演算手段204により演算された最大酸素吸蔵量OSCmaxに応じて設定される。
これにより、各種運転条件の変化のみならず、触媒12の活性途中および過渡時に応じた触媒温度Tmpcatの変化や、触媒12の劣化などの各種条件に応じて変化する最大酸素吸蔵量OSCmaxを演算することができ、触媒12の酸素吸蔵量の振動処理の制御精度を向上させることができる。
また、平均空燃比振動手段203は、機関本体1の過渡運転中または過渡運転後の所定期間において、平均空燃比の振動処理の実行を中止するので、酸素吸蔵量の変動による影響を回避して、振動開始時期を触媒12の酸素吸蔵量の挙動に合わせて、適切に設定することができる。
また、この発明の実施の形態1に係る内燃機関の空燃比制御装置は、触媒12の下流側に設けられ、下流側排気ガス中の空燃比を検出する下流側O2センサ15と、平均空燃比振動手段203により振動する平均空燃比の振動中心(中心空燃比)AFCNTを、下流側O2センサの出力値V2に基づいて補正する第2の空燃比フィードバック制御手段202とを備え、下流側O2センサ15の出力値V2に基づいて触媒12の酸素吸蔵量の状態を検出するので、最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)を振り切れないように目標平均空燃比AFAVEobjの振動中心AFCNTを調整することができ、酸素吸蔵量の振動処理の制御精度をさらに向上させることができる。
また、この発明の実施の形態1に係る内燃機関の空燃比制御装置は、第2の空燃比フィードバック制御手段202の制御ゲインを変更する制御ゲイン変更手段206を備え、制御ゲイン変更手段206は、平均空燃比振動手段203による平均空燃比の振動処理の実行中においては、積分ゲインKi2および比例ゲインKp2を変更するので、触媒12の最大酸素吸蔵量OSCmaxの変化に応じた適切なゲインを設定することができる。
また、平均空燃比振動手段203は、平均空燃比を所定周期でリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側O2センサ15の出力値V2がリッチ方向に反転した場合には、平均空燃比のリッチ方向への設定周期を終了して、平均空燃比をリーン方向に強制的に反転させ、平均空燃比がリーン方向に設定されているときに、下流側O2センサ15の出力値V2がリーン方向に反転した場合には、平均空燃比のリーン方向への設定周期を終了して、平均空燃比をリッチ方向に強制的に反転させるので、酸素吸蔵量の振り切れ状態から復帰させることができ、排気ガスの悪化を最小限に抑制することができる。
また、この発明の実施の形態1に係る内燃機関の空燃比制御装置は、触媒21の劣化の有無を診断する触媒劣化診断手段205を備えているので、触媒劣化診断手段205は、最大酸素吸蔵量演算手段204により演算された最大酸素吸蔵量OSCmaxに基づいて、触媒12の劣化を診断することができる。
また、触媒劣化診断手段205は、平均空燃比振動手段203による平均空燃比の振動処理の実行中に、少なくとも下流側O2センサ15の出力値V2により触媒12の劣化を診断することができる。
実施の形態2.
なお、上記実施の形態1では、平均空燃比振動手段203は、周期カウンタTmrに基づいて振動処理を実行したが、酸素吸蔵量の推定値(推定酸素吸蔵量OSC)に基づいて振動処理を実行してもよい。
以下、図1および図2とともに、図28〜図31を参照しながら、推定酸素吸蔵量OSCに基づく振動処理を実行するこの発明の実施の形態2について説明する。この場合、平均空燃比振動手段203による演算処理(図6参照)の一部が異なるのみであり、内燃機関の空燃比制御装置の全体構成および他の機能は、前述と同様である。
図28はこの発明の実施の形態2に係る平均空燃比振動手段203による処理動作を示すフローチャートであり、図28の演算ルーチンは、前述の図6の場合と同様に所定時間(たとえば、5msec)ごとに実行される。図29、図30はリッチ方向およびリーン方向の推定酸素吸蔵量OSCr、OSClの設定値を示す説明図である。なお、平均空燃比振動のリッチ方向およびリーン方向の振動幅DAFr、DAFlは、前述の図10、図12に示した通りである。図31はこの発明の実施の形態2における振動幅ΔOSCを示すタイミングチャートである。
図28において、ステップ2501〜2526は、前述(図6参照)のステップ701〜726にそれぞれ対応している。ただし、ステップ2507〜2510、2514〜2517および2524の各処理において、反転周期Tjまたは周期カウンタTmrの代わりに、推定酸素吸蔵量OSCが適用されている点のみが前述と異なる。
平均空燃比振動手段203は、まず、前述(ステップ701)と同様に、下流側O2センサ15の出力値V2のリッチ/リーン反転を判定し(ステップ2501)、リーンからリッチへの反転時には、反転フラグFRO2=1(リッチ反転)とし、リッチからリーンへの反転時には、FRO2=2(リーン反転)とし、非反転時には、FRO2=0(反転なし)として、ステップ2502に進む。
ステップ2502においては、前述(ステップ702)と同様に、平均空燃比の振動条件が成立しているか否か判定し、振動条件が成立であれば、次の判定処理(ステップ2503)に進み、振動条件が不成立であれば、リセット処理(ステップ2523)に進む。
ステップ2503〜2505では、振動条件成立後の初回振動における初期値(振動方向フラグFRL、振動回数PTN)を設定する。まず、ステップ2503の判定結果が、振動回数PTN=0(初回振動)の場合には、ステップ2504、2505で初期値を設定し、PTN=0以外の場合には、初期値を設定せずにステップ2506に進む。ステップ2504では、初回の振動方向フラグFRL(たとえば、リッチ方向「1」)を設定し、ステップ2505では、初回の振動回数PTN=1に設定する。
ステップ2506〜2508では、リッチ方向およびリーン方向への推定酸素吸蔵量OSCj、平均空燃比の振動幅DAFjをそれぞれ設定する。まず、ステップ2506で、リッチまたはリーンへの振動方向を判定し、リッチ方向(FRL=1)の場合には、ステップ2507に進み、リーン方向(FRL=2)の場合には、ステップ2508に進む。
ステップ2507においては、リッチ方向の推定酸素吸蔵量OSCrおよび振動幅DAFrを設定し、ステップ2509に進む。このとき、推定酸素吸蔵量OSCj(=OSCr)は、酸素吸蔵量の振動幅ΔOSCが所定量となるように、吸入空気量Qaに応じた1次元マップ(図29参照)により設定され、平均空燃比の振動幅DAFj(=DAFr)は、同様に、振動幅ΔOSCが所定量となるように、吸入空気量Qaに応じた1次元マップ(図10参照)により設定される。
ステップ2508においては、リーン方向の推定酸素吸蔵量OSClおよび振動幅DAFlを設定し、ステップ2509に進む。このとき、推定酸素吸蔵量OSCj(=OSCl)は、酸素吸蔵量の振動幅ΔOSCが所定量となるように、吸入空気量Qaに応じた1次元マップ(図30参照)により設定され、平均空燃比の振動幅DAFj(=DAFl)は、同様に、振動幅ΔOSCが所定量となるように、吸入空気量Qaに応じた1次元マップ(図12参照)により設定される。
また、後述するように、触媒劣化診断手段205による劣化診断中においては、劣化診断時の酸素吸蔵量の振動幅ΔOSCは、劣化前の触媒12の最大酸素吸蔵量OSCmaxの範囲内で、かつ劣化診断が必要な触媒の最大酸素吸蔵量の範囲外となるように設定される。これにより、劣化診断が必要な触媒の場合に、下流側O2センサ15の出力値V2の乱れが大きくなり、劣化診断の精度が向上する。
酸素吸蔵量の振動幅ΔOSCは、酸素吸蔵量OSCjと、周期Tj[sec]と、振動幅DAFjの絶対値と、吸入空気量Qa[g/sec]と、変換用の所定係数KO2とを用いて、前述の式(3)と同様に、以下の式(20)のように表される。
ΔOSC[g]=2×|OSCj|[g]
=Tj×|DAFj|×Qa×KO2 ・・・(20)
酸素吸蔵量の振動幅ΔOSCを所定値に維持させるためには、たとえば振動幅DAFjを固定値とすれば、吸入空気量Qaに反比例するように周期Tjを変化させればよい(図9、図11参照)。逆に、周期Tjを固定値とした場合には、吸入空気量Qaに反比例するように振動幅DAFjを設定すればよい。ただし、実際には、周期Tjまたは振動幅DAFjの設定範囲には、触媒12の浄化特性の向上、ドライバビリティの向上、応答性の向上などの様々な制約があるので、図10、図12のように、振動幅DAFjを吸入空気量Qaに応じて変化させ、酸素吸蔵量の振動幅ΔOSCが所定値となるように設定する。
また、リッチ方向およびリーン方向への振動幅DAFjを非対称になるように設定され、たとえば、触媒12のNOx浄化特性を向上させるため、または、機関本体1のトルク低下を軽減するために、リーン方向への振動幅DAFj(=DAFl)の絶対値をリッチ方向への振動幅DAFj(=DAFr)の絶対値よりも小さく設定される。
また、推定酸素吸蔵量OSC(振動幅ΔOSC)は、触媒12の最大酸素吸蔵量OSCmaxの範囲内となるように設定される。なぜなら、触媒12の酸素吸蔵量が最大酸素吸蔵量OSCmaxと最小酸素吸蔵量(=0)との間の範囲内にある場合には、触媒12の上流側の空燃比変動が酸素吸蔵量の変化によって吸収され、触媒12内の空燃比が理論空燃比付近に保たれるので、触媒12の浄化率の大幅な悪化を防止できるからである。
最大酸素吸蔵量OSCmaxの範囲内においても、たとえば触媒12の浄化特性の向上や触媒12の劣化診断のために、酸素吸蔵量の振動幅ΔOSCが調整され、条件に応じて所定量に設定される。なぜなら、エンジン回転速度Neまたは負荷に応じて、酸素吸蔵量の振動幅ΔOSCを変更することにより、機関本体1から排出される排気ガス成分および触媒温度Tmpcatが変化して触媒12の浄化特性が変化するので、さらに触媒12の浄化特性を向上させることができるからである。
また、リッチ方向およびリーン方向での推定酸素吸蔵量OSCj、振動幅DAFjの各設定値は、触媒12の浄化特性を向上させる場合や、触媒12の劣化診断を行う場合などに、切り替えられてもよい。これにより、目的に応じた適切な酸素吸蔵量の振動幅ΔOSCを設定することができる。このときの切り替え処理は、たとえば、ステップ2507、2508で設定した推定酸素吸蔵量OSCjおよび振動幅DAFjの各マップを、条件に応じて切り替えることによって行われる。
劣化診断時の酸素吸蔵量の振動幅ΔOSCは、劣化前の触媒12の最大酸素吸蔵量OSCmaxの範囲内で、かつ劣化診断が必要な触媒の最大酸素吸蔵量の範囲外となるように設定される。これにより、劣化診断が必要な触媒の場合に、下流側O2センサ15の出力値V2の乱れが大きくなり、劣化診断の精度が向上する。
図28に戻り、ステップ2509においては、前述(図6)のステップ709と同様に、最大酸素吸蔵量演算手段204で演算された最大酸素吸蔵量OSCmaxに応じて、ステップ2507または2508で設定した推定酸素吸蔵量OSCj(振動幅ΔOSC)および平均空燃比の振動幅DAFjを適応的に補正する。
すなわち、平均空燃比の振動幅DAFjは、前述の式(5)により、最大酸素吸蔵量OSCmaxに応じた補正係数Koscafを用いて補正され、推定酸素吸蔵量OSCj(振動幅ΔOSC)は、前述の式(4)と同様に、補正係数Kosctを用いて、以下の式(21)により補正される。
OSCj=OSCj(n−1)×Kosct ・・・(21)
式(21)において、(n−1)は補正前の前回値を示す。なお、補正係数Kosctは、最大酸素吸蔵量OSCmaxに応じた1次元マップにより設定される。
また、補正係数Kosct、Koscafは、推定酸素吸蔵量OSCjの振動幅ΔOSCを、変化後の最大酸素吸蔵量OSCmaxの範囲内に維持するために、最大酸素吸蔵量OSCmaxの減少とともに酸素吸蔵量の振動幅ΔOSCが減少するように設定される。これにより、酸素吸蔵量の振動幅ΔOSCが最大酸素吸蔵量OSCmaxを大幅に振り切れることを防止することができ、大幅な排気ガスの悪化を回避することができる。
次に、ステップ2509の補正処理に続いて、平均空燃比の振動開始後の振動回数PTNに応じた補正係数Kptnt、Kptnafを乗算することにより、推定酸素吸蔵量OSCjおよび平均空燃比の振動幅DAFjをさらに補正する(ステップ2510)。
推定酸素吸蔵量OSCj(振動幅ΔOSC)の補正係数Kptnt、および、平均空燃比の振動幅DAFjの補正係数Kptnafは、振動回数PTNに応じたテーブルによりそれぞれ設定される。なお、各補正係数は、振動回数PTNの増加とともに、酸素吸蔵量の振動幅ΔOSCが徐々に増加するように設定されてもよい。これにより、触媒12の状態急変を防止することができ、また、空燃比制御(特に、第2の空燃比フィードバック制御手段202による制御)の追従性不良を回避することができる。
続いて、前述(図6)のステップ711〜714と同様に、ステップ2511〜2514において、下流側O2センサ15の出力値V2のリッチ/リーン反転時に、触媒12の酸素吸蔵量OSCが最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)から振り切れた場合に強制リセットを行い、平均空燃比の振動方向を強制的に反転させる。
まず、ステップ2511の判定結果が、リッチ方向に振動中(振動方向フラグFRL=1)であれば、ステップ2512に進み、リーン方向に振動中(FRL=2)であれば、ステップ2513に進む。
続いて、リッチ方向に振動中におけるステップ2512の判定結果が、出力値V2のリーンからリッチへの反転(下流側O2センサ15の反転フラグFRO2=1)であれば、推定酸素吸蔵量OSCを反転酸素吸蔵量OSCjにリセットし(ステップ2514)、振動方向を強制的に反転させる。
また、リーン方向に振動中におけるステップ2513の判定結果が、出力値V2のリッチからリーンへの反転(FRO2=2)であれば、同様に、ステップ2514に進み、推定酸素吸蔵量OSCを反転酸素吸蔵量OSCjにリセットして、振動方向を強制的に反転させる。
このように、前述の実施の形態1と同様に、下流側O2センサ15の出力値V2の反転に基づいて触媒12の酸素吸蔵量OSCの振り切れを検出し、平均空燃比の振動方向を反転させることにより、酸素吸蔵量OSCの振り切れ状態から復帰させることができ、排気ガスの悪化を最小限に抑制することができる。
次に、ステップ2515〜2521により、推定酸素吸蔵量OSCの更新によるリッチ/リーン反転を行う。まず、ステップ2515において、推定酸素吸蔵量OSCは、平均空燃比の振動幅DAFと、吸入空気量Qa[g/sec]と、演算周期DT(=5msec)と、酸素吸蔵量OSCに変換するための所定係数KO2とを用いて、前回積分値OSC(n−1)に対する積分演算により、以下の式(22)のように更新される。
OSC=OSC(n−1)+DAF×Qa×DT×KO2 ・・・(22)
図31は平均空燃比から推定した推定酸素吸蔵量OSC(実線参照)の挙動を示すタイミングチャートであり、平均処理前の(リッチ/リーンに周期的に変動する)空燃比挙動から推定した酸素吸蔵量(点線参照)と比較して示している。
図31において、空燃比挙動に基づく推定酸素吸蔵量(点線参照)と、平均空燃比に基づく推定酸素吸蔵量OSC(実線参照)とを比較すると、推定酸素吸蔵量OSC(実線参照)のように微小振動(点線参照)を省略しても、長い周期の酸素吸蔵量の振動を十分に模擬可能なことが分かる。
なお、式(22)では、平均空燃比の振動幅DAFを用いたが、目標平均空燃比AFAVEobjを用いてもよい。この場合、式(22)の演算において、振動幅DAFに代えて、(AFAVEobj−14.53)が用いられる。
また、目標平均空燃比AFAVEobjの代わりに、触媒12の上流空燃比の推定値を用いてもよい。この場合、上流空燃比の推定値は、たとえば、燃料補正係数FAFに無駄時間処理(または、なまし処理など)を施すことにより推定演算される。
目標平均空燃比AFAVEobjまたは燃料補正係数FAFに基づいて空燃比を推定した場合には、第2の空燃比フィードバック制御手段202による制御の影響を受けるので、フィードバック制御との相互作用が生じて設計が複雑になるが、酸素吸蔵量OSCの推定精度は優れている。一方、平均空燃比の振動幅DAFに基づいて空燃比を推定した場合には、第2の空燃比フィードバック制御手段202による制御の影響を受けないので、設計が容易である反面、酸素吸蔵量OSCの推定精度は劣る。
また、理論空燃比を「14.53」として説明したが、第2の空燃比フィードバック制御手段202による制御で学習した理論空燃比(=14.53+AFI)を用いて演算してもよい。
次に、推定酸素吸蔵量OSCの更新処理(ステップ2515)に続いて、推定酸素吸蔵量OSCの絶対値が反転後の推定酸素吸蔵量OSCjの絶対値よりも大きいか否かにより、反転タイミングであるか否かを判定し(ステップ2516)、反転タイミングである(|OSC|>|OSCj|)(すなわち、YES)と判定されれば、推定酸素吸蔵量OSCを「0」にリセットし(ステップ2517)、振動回数PTNを「1」だけ増加させて(ステップ2518)、前述(図6)のステップ719と同様のステップ2519に進む。
一方、ステップ2516において、反転タイミングでない(|OSC|≦|OSCj|)(すなわち、NO)と判定されれば、目標平均空燃比AFAVEobjの設定処理(ステップ2522)に進む。
以下、ステップ2519の判定結果が、現在の振動方向フラグFRL=1(リッチ)であれば、振動方向フラグFRLを「2」に設定してリーン方向に反転させ(ステップ2520)、ステップ2519の判定結果が、FRL=2(リーン)であれば、FRL=1に設定してリッチ方向に反転させる(ステップ2521)。
また、前述の式(6)のように、振動中心AFCNTに振動幅DAFjを加えて、振動条件成立時における目標平均空燃比AFAVEobjを演算設定し(ステップ2522)、ステップ2526に進む。なお、振動中心AFCNTは、第2の空燃比フィードバック制御手段202による制御で演算される目標平均空燃比である。
このように、下流側O2センサ15の出力値V2により触媒12の酸素吸蔵量OSCの状態が検出することにより、最大酸素吸蔵量OSCmaxまたは最小酸素吸蔵量(=0)を振り切れないように振動中心AFCNTを調整することができ、酸素吸蔵量OSCの振動処理の制御精度をさらに向上させることができる。
なお、振動中心AFCNTを運転条件に応じた所定値に設定してもよい。
また、条件に応じて、振動中心AFCNTをリーン方向またはリッチ方向にシフトすることにより、触媒12の浄化状態を変更してもよく、触媒12および各種センサなどの故障診断に用いてもよい。
一方、前述のステップ2502での判定結果が振動条件でない場合には、振動回数PTNを「0」にリセットし(ステップ2523)、推定酸素吸蔵量OSCを「0」にリセットし(ステップ2524)、振動条件の不成立時の目標平均空燃比AFAVEobjを振動中心AFCNTに設定して(ステップ2525)、ステップ2526に進む。
最後に、ステップ2526により、目標平均空燃比AFAVEobjとなるように、第1の空燃比フィードバック制御手段201による制御における制御定数を設定し、図28の平均空燃比振動手段203の処理を終了する。
以上のように、この発明の実施の形態2による平均空燃比振動手段203は、触媒12の酸素吸蔵量OSCを推定し、推定酸素吸蔵量OSCが触媒12の最大酸素吸蔵量OSCmaxの範囲内であって、かつ運転条件に応じて設定された所定範囲を振動するように、推定酸素吸蔵量OSCに基づいて平均空燃比をリッチ方向とリーン方向とに反転する。
このように、触媒12の酸素吸蔵量OSCを、最大酸素吸蔵量OSCmaxと最小酸素吸蔵量(=0)との間の範囲内に制御することにより、触媒12の上流側の空燃比変動が酸素吸蔵量の変化によって吸収され、触媒12内の空燃比が理論空燃比付近に保たれるので、触媒12の浄化率の大幅な悪化を防止することができる。
また、最大酸素吸蔵量OSCmaxの範囲内においても、エンジン回転速度Neまたは負荷などの条件に応じて、酸素吸蔵量の振動幅ΔOSCを所定量に調整し、機関本体1から排出される排気ガス成分および触媒温度Tmpcatを変化させて触媒12の浄化特性を変化させることにより、さらに触媒12の浄化特性を向上させるとともに、触媒12の劣化診断に適用することができる。
また、平均空燃比振動手段203は、平均空燃比振動手段203により設定される平均空燃比(振動幅DAF)に基づいて推定酸素吸蔵量OSCを求めるので、第2の空燃比フィードバック制御手段202による制御の影響を受けないので、設計を容易にすることができる。
または、平均空燃比振動手段203は、第1の空燃比フィードバック制御手段201による空燃比の調整量(目標平均空燃比AFAVEobj)に基づいて推定酸素吸蔵量OSCを求めので、酸素吸蔵量OSCの推定精度を向上させることができる。
また、この発明の実施の形態2に係る内燃機関の空燃比制御装置は、機関本体1の運転条件に基づいて触媒12の最大酸素吸蔵量OSCmaxを演算する最大酸素吸蔵量演算手段204を備え、平均空燃比振動手段203により設定される平均空燃比の振動幅DAFまたは触媒12の酸素吸蔵量の振動幅ΔOSCは、最大酸素吸蔵量演算手段204で演算された最大酸素吸蔵量OSCmaxに応じて設定され、平均空燃比振動手段203は、推定酸素吸蔵量OSCに基づいて平均空燃比をリッチ方向とリーン方向とに反転する。
これにより、補正係数Kosct、Koscafは、推定酸素吸蔵量OSCjの振動幅ΔOSCを、変化後の最大酸素吸蔵量OSCmaxの範囲内に維持するために、最大酸素吸蔵量OSCmaxの減少とともに酸素吸蔵量の振動幅ΔOSCが減少するように設定されるので、酸素吸蔵量の振動幅ΔOSCが最大酸素吸蔵量OSCmaxを大幅に振り切れることを防止することができ、大幅な排気ガスの悪化を回避することができる。
また、平均空燃比振動手段203は、推定酸素吸蔵量OSCに基づいて平均空燃比をリッチ方向とリーン方向とに振動させ、平均空燃比がリッチ方向に設定されているときに、下流側O2センサ15の出力値V2がリッチ方向に反転した場合には、推定酸素吸蔵量OSCを触媒12の酸素吸蔵量の振動範囲の下限値にリセットするとともに、平均空燃比をリーン方向に強制的に反転させる。一方、平均空燃比がリーン方向に設定されているときに、下流側O2センサ15の出力値V2がリーン方向に反転した場合には、推定酸素吸蔵量OSCを触媒12の酸素吸蔵量の振動範囲の上限値にリセットするとともに、平均空燃比をリッチ方向に強制的に反転させる。
このように、下流側O2センサ15の出力値V2の反転に基づいて触媒12の酸素吸蔵量OSCの振り切れを検出し、平均空燃比の振動方向を反転させることにより、酸素吸蔵量OSCの振り切れ状態から復帰させることができ、排気ガスの悪化を最小限に抑制することができる。
なお、上記各実施の形態では、下流側O2センサ15としてλ型センサを用いたが、流側O2センサ15は、上流側に位置する触媒12の浄化状態を検出可能なセンサであれば他のセンサでもよく、たとえば、リニア空燃比センサ、NOxセンサ、HCセンサ、COセンサなどを用いても、触媒12の浄化状態を制御することができるので、前述と同様の作用効果を奏する。
また、上流側O2センサ13としては、空燃比変化に対してリニアな出力特性を有するリニア型O2センサを用いてもよく、前述と同様の第1の空燃比フィードバック制御手段201による制御により、触媒12の上流側の空燃比を振動させながら、平均空燃比を制御することができるので、前述と同様の作用効果を奏する。
また、上流側O2センサ13としてリニア型O2センサを用いる場合には、目標空燃比A/Foへの追従性に優れた制御も可能なので、目標空燃比A/Foをリッチ方向およびリーン方向に周期的に振動させて上流側空燃比を振動させ、振動中の目標空燃比A/Foの平均値を、さらにリッチ方向およびリーン方向に周期的に振動させることにより、前述と同様の作用効果を奏する。
さらに、第2の空燃比フィードバック制御装置202は、目標値VR2と、下流側O2センサ15の出力値V2(出力情報)とから、比例演算および積分演算を用いて目標空燃比A/Foを演算する構成としたが、目標値VR2および出力値V2から他のフィードバック制御(たとえば、現代制御理論の状態フィードバック制御、スライディングモード制御、オブザーバ、適応制御、H∞制御など)を用いて目標空燃比A/Foを演算しても、触媒12の浄化状態を制御することができるので、前述と同様の作用効果を奏する。
1 機関本体(内燃機関)、2 吸気通路、3 エアフローセンサ、5、6 クランク角センサ、7 燃料噴射弁、9 水温センサ、10 制御回路、11 排気マニホールド、12 触媒、13 上流側O2センサ(上流側空燃比センサ)、14 排気管、15 下流側O2センサ(下流側空燃比センサ)、103 CPU、106 バックアップRAM、201 第1の空燃比フィードバック制御手段、202 第2の空燃比フィードバック制御手段、203 平均空燃比振動手段、204 最大酸素吸蔵量演算手段、205 触媒劣化診断手段、206 制御ゲイン変更手段、AFAVEobj 目標平均空燃比、DAF 平均空燃比の振動幅、OSC 酸素吸蔵量(推定酸素吸蔵量)、OSCmax 最大酸素吸蔵量、ΔOSC 酸素吸蔵量の振動幅、V1 上流側O2センサの出力値、V2 下流側O2センサの出力値。