以下、本発明による内燃機関の燃料噴射制御装置の各実施形態について図面を参照しつつ説明する。これらの燃料噴射制御装置は、機関の燃料噴射量を制御する燃料噴射量制御装置でもある。
(第1実施形態)
図1は、本発明の実施形態に係る燃料噴射制御装置を4サイクル火花点火式多気筒内燃機関10に適用したシステムの概略構成を示している。なお、図1は、特定気筒の断面のみを示しているが、他の気筒も同様な構成を備えている。
この内燃機関10は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部20と、シリンダブロック部20の上に固定されるシリンダヘッド部30と、シリンダブロック部20にガソリン混合気を供給するための吸気系統40と、シリンダブロック部20からの排ガスを外部に放出するための排気系統50とを含んでいる。
シリンダブロック部20は、シリンダ21、ピストン22、コンロッド23及びクランク軸24を含んでいる。ピストン22はシリンダ21内を往復動し、ピストン22の往復動がコンロッド23を介してクランク軸24に伝達され、これにより同クランク軸24が回転するようになっている。シリンダ21とピストン22のヘッドは、シリンダヘッド部30とともに燃焼室25を形成している。
シリンダヘッド部30は、燃焼室25に連通した吸気ポート31、吸気ポート31を開閉する吸気弁32、吸気弁32を駆動するインテークカムシャフトを含むとともに同インテークカムシャフトの位相角及びリフト量を連続的に変更する可変吸気タイミング装置33、可変吸気タイミング装置33のアクチュエータ33a、燃焼室25に連通した排気ポート34、排気ポート34を開閉する排気弁35、排気弁35を駆動するエキゾーストカムシャフト36、点火プラグ37、点火プラグ37に与える高電圧を発生するイグニッションコイルを含むイグナイタ38及び燃料を吸気ポート31内に噴射するインジェクタ(燃料噴射手段)39を備えている。
吸気系統40は、吸気ポート31に連通し同吸気ポート31とともに吸気通路を形成するインテークマニホールドを含む吸気管41、吸気管41の端部に設けられたエアフィルタ42、吸気管41内にあって吸気通路の開口断面積を可変とするスロットルバルブ43及びスワールコントロールバルブ44を備えている。
スロットルバルブ43は、DCモータからなるスロットルバルブアクチュエータ43aにより吸気管41内で回転駆動されるようになっている。SCV44は、DCモータからなるSCVアクチュエータ44aにより回転駆動されるようになっている。
排気系統50は、排気ポート34に連通したエキゾーストマニホールド51、エキゾーストマニホールド51に接続されたエキゾーストパイプ52、エキゾーストパイプ52に配設された上流側触媒53、上流側触媒53よりも下流のエキゾーストパイプ52に配設された下流側触媒54を備えている。排気ポート34、エキゾーストマニホールド51及びエキゾーストパイプ52は、排気通路を構成している。
上流側触媒53及び下流側触媒54のそれぞれは、所謂、白金等の貴金属からなる活性成分を担持する三元触媒装置である。各触媒は、触媒流入ガスがほぼ理論空燃比であるとき、HC,COなどの未燃ガスを酸化するとともに、窒素酸化物(NOx)を還元する機能を有する。更に、各触媒は、酸素を吸蔵(貯蔵)する酸素吸蔵機能を有し、この酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃ガス及び窒素酸化物を浄化することができる。この酸素吸蔵機能は、触媒に担持されているセリア(CeO2)によってもたらされる。
一方、このシステムは、熱線式エアフローメータ61、吸気温センサ62、スロットルポジションセンサ63、カムポジションセンサ64、クランクポジションセンサ65、水温センサ66、空燃比センサ67、酸素濃度センサ68、及びアクセル開度センサ69を備えている。
エアフローメータ61は、吸気管41内を流れる吸入空気の質量流量(吸入空気流量)Gaに応じた信号を出力するようになっている。吸気温センサ62は、吸入空気の温度を検出し、吸気温度THAを表す信号を出力するようになっている。スロットルポジションセンサ63は、スロットルバルブ43の開度(スロットルバルブ開度)を検出し、スロットルバルブ開度TAを表す信号を出力するようになっている。
カムポジションセンサ64は、インテークカムシャフトが90°回転する毎に(即ち、クランク軸24が180°回転する毎に)一つのパルスを有する信号(G2信号)を発生するようになっている。クランクポジションセンサ65は、クランク軸24が10°回転する毎に幅狭のパルスを有するとともに同クランク軸24が360°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度NEを表す。水温センサ66は、内燃機関10の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
空燃比センサ67は、排気通路であって上流側触媒53よりも上流側に配設されている。空燃比センサ67は、所謂「限界電流式酸素濃度センサ」であって、上流側触媒53に流入する排ガス中の空燃比を検出し、図2に示したように、検出した空燃比(検出空燃比)に応じた信号Vabyf(V)を出力するようになっている。
酸素濃度センサ68は、排気通路であって上流側触媒53よりも下流側であり下流側触媒54よりも上流側に配設されている。酸素濃度センサ68は、所謂「濃淡電池型の酸素センサ」である。図3に示したように、酸素濃度センサ68は、上流側触媒53から流出するガスの空燃比が理論空燃比よりもリッチ及びリーンのとき最大値max(V)及び最小値min(V)をそれぞれ出力し、上流側触媒53から流出するガスの空燃比が理論空燃比であるとき最大値maxと最小値minの略中間の値(目標空燃比相当値Voxsref(V))を出力するようになっている。
アクセル開度センサ69は、運転者によって操作されるアクセルペダル71の操作量Accpを表す信号を出力するようになっている。
電気制御装置80は、互いにバスで接続されたCPU81、CPU81が実行するプログラム、テーブル(マップ、関数)及び定数等を予め記憶したROM82、CPU81が必要に応じてデータを一時的に格納するRAM83、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップRAM84並びにADコンバータを含むインターフェース85等からなるマイクロコンピュータである。
インターフェース85は、前記センサ61〜69と接続され、CPU81にセンサ61〜69からの信号を供給するとともに、CPU81の指示に応じて可変吸気タイミング装置33のアクチュエータ33a、イグナイタ38、インジェクタ39、スロットルバルブアクチュエータ43a及びSCVアクチュエータ44aに駆動信号を送出するようになっている。
(空燃比フィードバック制御の概要)
次に、上記のように構成された燃料噴射制御装置(以下、「本装置」と称呼する。)による空燃比フィードバック制御の概要について説明する。本装置は、上流側触媒53から流出するガスの空燃比が目標空燃比(=理論空燃比AFstoich)となるように機関に供給する混合気の空燃比(従って、上流側触媒53に流入するガスの空燃比。以下、単に「空燃比」とも称呼する。)を制御する。
具体的には、本装置は、上流側触媒53の下流に配設された酸素濃度センサ68の出力値Voxs(V)と、理論空燃比AFstoichに相当する上記目標空燃比相当値Voxsref(V)(一定)と、の偏差DVoxs(=Voxsref−Voxs)についてPID処理してフィードバック補正値(サブフィードバック補正量Vafsfb(V))を求め、サブフィードバック補正量Vafsfbに基づいて(実際には、空燃比センサ67の出力値Vabyfにも基づいて)、空燃比をフィードバック制御する。なお、酸素濃度センサ68の出力値Voxsに基づく空燃比フィードバック制御を、特に「サブフィードバック制御」と呼ぶこともある。
また、本装置は、上記PID処理におけるI処理に必要となる上記偏差DVoxsの積算値(=ΣDVoxs、以下、「偏差積分値SDVoxs」と称呼する。)に基づいて、所定のタイミング毎に偏差積分値SDVoxsの「学習」を行う(具体的には、後述する偏差積分値の学習値Learnを更新する)。加えて、本装置は、偏差積分値SDVoxsが収束したか否かの判定(即ち、偏差積分値の学習が完了したか否かの判定)を行い、偏差積分値SDVoxsが収束した(学習が完了した)と判定されている間は、偏差積分値の学習を行わない。
また、本装置は、機関の運転状態に応じてフューエルカット制御(FC)を行う。本装置は、FC中は上記空燃比フィードバック制御を中断する(従って、偏差積分値SDVoxsの更新を中断する)。
また、本装置は、FC後において上流側触媒53の酸素吸蔵量を所定の目標値とするため、FC終了時点から或る期間に亘って空燃比を理論空燃比よりもリッチ空燃比(=値AFrich1)に制御する「FC後リッチ制御」を行う。その際、本装置は、偏差積分値SDVoxsが収束したと判定されている間(即ち、上記「既収束の場合」)と、偏差積分値SDVoxsが収束していないと判定されている間(即ち、上記「未収束の場合」)とで、FC後リッチ制御における上記酸素吸蔵量の目標値を異ならせる。なお、本装置は、FC後リッチ制御中も、上記空燃比フィードバック制御を中断する(従って、偏差積分値SDVoxsの更新を中断する)。以上が、本装置による空燃比フィードバック制御の概要である。
(実際の作動)
次に、上記のように構成された燃料噴射制御装置の実際の作動について、図4A、図4Bに示したタイムチャート、並びに、電気制御装置80のCPU81が実行するルーチン(プログラム)をフローチャートにより示した図5〜図10を参照しながら説明する。
図4Aは、既収束の場合において、時刻t1〜t2においてFCが実行され、時刻t2〜t3においてFC後リッチ制御が実行された場合における、目標空燃比、上流側触媒53の酸素吸蔵量の変化の一例を示したタイムチャートである。図4Bは、未収束の場合において、時刻t1〜t2においてFCが実行され、時刻t2〜t3においてFC後リッチ制御が実行された場合における、目標空燃比、上流側触媒53の酸素吸蔵量の変化の一例を示したタイムチャートである。以下、現時点が時刻t1以前であるものとして(加えて、後述する空燃比フィードバック制御条件、及びサブフィードバック制御条件が成立しているものとして)説明を開始する。
CPU81は、図5に示した燃料噴射量Fiの計算及び燃料噴射の指示を行うルーチンを、任意の気筒のクランク角が吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、繰り返し実行するようになっている。従って、或る気筒(以下、「燃料噴射気筒」と称呼する。)のクランク角度が前記所定クランク角度になると、CPU81はステップ500から処理を開始してステップ505に進み、フラグXFCが「0」であるか否かを判定する。
ここで、フラグXFCの値は、後述するルーチンの実行により設定・変更されるようになっていて、フラグXFCは、その値が「1」のときFC中であることを示し、その値が「0」のときFC中でないことを示す。
現時点は、時刻t1以前であるからFC中ではない(即ち、XFC=0)。従って、CPU81はステップ505にて「Yes」と判定してステップ510に進み、エアフローメータ61により計測されている吸入空気流量Gaとエンジン回転速度NEとに基づいて今回の吸気行程において燃焼室25内に吸入される空気量(筒内吸入空気量Mc(k))をテーブルMapMcから求める。このテーブルMapMcは、ROM82に予め記憶されている。なお、添え字の(k)は、今回の吸気行程に対する値であることを表している。
続いて、CPU81はステップ515に進み、フラグXRICHの値が「0」であるか否かを判定する。ここで、フラグXRICHの値は、後述するルーチンの実行により設定・変更されるようになっていて、フラグXRICHは、その値が「1」のときFC後リッチ制御実行中であることを示し、その値が「0」のときFC後リッチ制御実行中でないことを示す。
現時点は、時刻t1以前であるからFC後リッチ制御中ではない(即ち、XRICH=0)。従って、CPU81はステップ515にて「Yes」と判定してステップ520に進み、上記求めた筒内吸入空気量Mc(k)を理論空燃比AFstoichで除することで空燃比を目標空燃比(=理論空燃比AFstoich)とするための基本燃料噴射量Fbaseを求める。
次いで、CPU81はステップ525に進み、燃料噴射量Fiを、上記求めた基本燃料噴射量Fbaseに後述する空燃比フィードバック補正量DFiを加えた値に設定する。
そして、CPU81はステッ530に進んで燃料噴射量Fiの燃料を噴射するための指示を燃料噴射気筒に対応するインジェクタ39に対して行い、ステップ595に進んで本ルーチンを一旦終了する。これにより、空燃比フィードバック補正された燃料噴射量Fiの燃料が吸気行程を迎える気筒に対して噴射される。このような処理は、FCが開始されるまで(図4の時刻t1が到来するまで)繰り返し実行される。
次に、上記空燃比フィードバック補正量DFiの算出について説明する。CPU81は図6に示したルーチンを図5のルーチンの実行に同期して(即ち、燃料噴射に同期して)繰り返し実行している。従って、所定のタイミングになると、CPU81はステップ600から処理を開始し、ステップ605に進んで空燃比フィードバック制御条件が成立しているか否かを判定する。空燃比フィードバック制御条件は、例えば、FCが実行されておらず(XFC=0)、FC後リッチ制御が実行されておらず(XRICH=0)、水温センサ66により検出される機関の冷却水温THWが第1所定温度以上であり、機関の一回転当りの吸入空気量(負荷)が所定値以下であり、且つ、空燃比センサ67が正常であるとき成立する。
現時点では、上述したように、空燃比フィードバック制御条件が成立している(即ち、XFC=0、XRICH=0)。従って、CPU81はステップ605にて「Yes」と判定してステップ610に進み、現時点の空燃比センサ67の出力Vabyfと後述するサブフィードバック補正量Vafsfbとの和(Vabyf+Vafsfb)及び図2に示したマップに基づいて現時点における上流側触媒53の上流の空燃比を求める。この空燃比は、上流側触媒53の上流におけるガスの「みかけの空燃比」であり、以下、「制御用空燃比abyfs」と称呼される。
次に、CPU81はステップ615に進み、現時点からNストローク(N回の吸気行程)前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Mc(k−N)を前記求めた制御用空燃比abyfsで除することにより、現時点からNストローク前の筒内燃料供給量Fc(k−N)を求める。値Nは、内燃機関の排気量及び燃焼室25から空燃比センサ67までの距離等により異なる値である。
このように、現時点からNストローク前の筒内燃料供給量Fc(k−N)を求めるために、現時点からNストローク前の筒内吸入空気量Mc(k−N)を制御用空燃比abyfsで除するのは、燃焼室25内で燃焼された混合気が空燃比センサ67に到達するまでには、Nストロークに相当する時間を要しているからである。なお、筒内吸入空気量Mcは、先のステップ510の処理により各気筒の吸気行程毎に求められ、各吸気行程に対応してRAM83内に記憶されている。
次いで、CPU81はステップ620に進み、現時点からNストローク前の筒内吸入空気量Mc(k−N)を現時点からNストローク前の時点における目標空燃比abyfr(k−N)(=理論空燃比AFstoich)で除することにより、現時点からNストローク前の目標筒内燃料供給量Fcr(k−N)を求める。
そして、CPU81はステップ625に進んで、筒内燃料供給量偏差DFcを、目標筒内燃料供給量Fcr(k−N)から筒内燃料供給量Fc(k−N)を減じた値に設定する。即ち、筒内燃料供給量偏差DFcは、Nストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
次に、CPU81はステップ630に進み、その時点における筒内燃料供給量偏差DFcの積分値SDFcに上記ステップ625にて求めた筒内燃料供給量偏差DFcを加えて、新たな筒内燃料供給量偏差の積分値SDFcを求める(即ち、筒内燃料供給量偏差の積分値SDFcを更新する)。
続いて、CPU81はステップ635に進んで、ステップ635内に記載の式に基づいて空燃比フィードバック補正量DFiを求めた後、ステップ695にて本ルーチンを一旦終了する。ここにおいて、Gpは予め設定された比例ゲイン、Giは予め設定された積分ゲインである。なお、(1)式の係数KFBはエンジン回転速度NE及び筒内吸入空気量Mc等により可変とすることが好適であるが、ここでは「1」としている。
以上により、空燃比フィードバック補正量DFiが比例・積分処理(PI処理)により求められ、この空燃比フィードバック補正量DFiが前述した図5のステップ525により燃料噴射量Fiに反映される。この結果、現時点からNストローク前の燃料供給量の過不足が補償されるので、機関の空燃比(従って、上流側触媒53に流入するガスの空燃比)の平均値が目標空燃比abyfr(=理論空燃比AFstoich)と略一致せしめられる。
一方、ステップ605の判定時において、空燃比フィードバック制御条件が不成立であると、CPU81は同ステップ605にて「No」と判定してステップ640に進み、空燃比フィードバック補正量DFiの値を「0」に設定し、ステップ695に進んで本ルーチンを一旦終了する。このように、空燃比フィードバック制御条件が不成立であるときは、空燃比フィードバック補正量DFiを「0」として空燃比(基本燃料噴射量Fbase)の補正を行わない。
次に、酸素濃度センサ68の出力Voxsに基づく空燃比フィードバック制御(即ち、サブフィードバック制御)について説明する。このサブフィードバック制御により、上述したサブフィードバック補正量Vafsfb(V)が算出される。
CPU81は、サブフィードバック補正量Vafsfbを求めるために、図7に示したルーチンを図5のルーチンの実行に同期して(即ち、燃料噴射に同期して)繰り返し実行している。従って、所定のタイミングになると、CPU81はステップ700から処理を開始し、ステップ705に進み、サブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、上記空燃比フィードバック制御条件が成立していて、機関の冷却水温THWが上記第1所定温度より高い第2所定温度以上であり、且つ、酸素濃度センサ68が正常であるとき成立する。
上述のごとく、現時点では、サブフィードバック制御条件が成立している。従って、CPU81はステップ705にて「Yes」と判定してステップ710に進み、偏差DVoxsを、目標空燃比相当値Voxsref(一定)から酸素濃度センサ68の出力値Voxsを減じた値に設定する。この偏差DVoxsは、前記「空燃比センサの出力値と理論空燃比に相当する目標値との偏差に相当する値」に対応する。
次いで、CPU81はステップ715に進んで、その時点における偏差積分値SDVoxsに上記ステップ710にて求めた偏差DVoxsを加えることで偏差積分値SDVoxsを更新する。このように、偏差積分値SDVoxsは、「空燃比センサの出力値と理論空燃比に相当する目標値との偏差に相当する値(DVoxs)」を逐次積算して更新されていく。
続いて、CPU81はステップ720に進んで、上記ステップ710にて求めた偏差DVoxsと、前回の偏差DVoxsbと、ステップ720内に記載の式とに基づいて偏差DVoxsの時間微分値DDVoxsを求める。前回の偏差DVoxsbとしては、前回の本ルーチン実行時において後述するステップ730にて更新されている値が使用される。Δtは本ルーチンの前回の実行時から今回の実行時までの時間(即ち、前回の燃料噴射から今回の燃料噴射までの時間)である。
次に、CPU81はステップ725に進み、上記ステップ710にて求めた偏差DVoxsと、上記ステップ715にて更新した偏差積分値SDVoxsと、上記ステップ720にて求めた偏差の時間微分値DDVoxsと、後述する偏差積分値SDVoxsの学習値Learnと、ステップ725内に記載の式とに基づいてサブフィードバック補正量Vafsfbを求める。ここにおいて、Kpは予め設定された比例ゲイン、Kiは予め設定された積分ゲイン、Kdは予め設定された微分ゲインである。
ステップ725内に記載の式において、右辺第1項「Kp・DVoxs」が比例項に、右辺第2項「Ki・SDVoxs」と右辺第4項「Ki・Learn」の和が積分項に、右辺第3項「Kd・DDVoxs」が微分項にそれぞれ対応している。即ち、サブフィードバック補正量Vafsfbは、比例項と、積分項と、微分項とに基づいて、偏差DVoxsについてPID処理して算出される。
そして、CPU81はステップ730に進んで、前回の偏差DVoxsbを上記ステップ710にて求めた偏差DVoxsに設定した後、ステップ795に進んで本ルーチンを一旦終了する。
このようにして、サブフィードバック補正量Vafsfb(V)が求められ、この値は前述した図6のステップ610における制御用空燃比abyfsの計算に使用される。換言すると、制御用空燃比abyfsは、空燃比センサ67が実際に検出している空燃比に対して、酸素濃度センサ68の出力値Voxsに基づいて求められるサブフィードバック補正量Vafsfbに相当する分だけ異なる空燃比として求められる。
この結果、前述した図6のステップ615にて計算される筒内燃料供給量Fc(k−N)が酸素濃度センサ68の出力値Voxsに応じて変化するので、ステップ625〜635によって空燃比フィードバック補正量DFiが酸素濃度センサ68の出力値Voxsに応じて変更せしめられる。これにより、上流側触媒53の下流側の空燃比が目標空燃比abyfr(=理論空燃比AFstoich)に一致するように、空燃比が制御せしめられる。
例えば、機関の平均的な空燃比がリーンであるために酸素濃度センサ68の出力値Voxsが目標空燃比相当値Voxsrefよりも小さい値(即ち、リーン側に偏移した値)となっていると、ステップ710にて求められる偏差DVoxsが正の値となるので、ステップ725にて求められるサブフィードバック補正量Vafsfbは正の値となる。従って、ステップ610にて求められる制御用空燃比abyfsは空燃比センサ67が実際に検出している空燃比よりもリーンな値(より大きな値)として求められる。
このため、ステップ615にて求められる筒内燃料供給量Fc(k−N)は小さい値となり、ステップ625にて求められる筒内燃料供給量偏差DFcは大きい値となる。従って、空燃比フィードバック補正量DFiが大きい正の値となる。この結果、図5のステップ525にて求められる燃料噴射量Fiは、基本燃料噴射量Fbaseよりも大きくなって、空燃比がリッチ側の値となるように制御される。
反対に、機関の平均的な空燃比がリッチであるために酸素濃度センサ68の出力値Voxsが目標空燃比相当値Voxsrefよりも大きい値(即ち、リッチ側に偏移した値)となっていると、偏差DVoxsが負の値となるので、サブフィードバック補正量Vafsfbは負の値となる。従って、ステップ610にて求められる制御用空燃比abyfsは空燃比センサ67が実際に検出している空燃比よりもリッチな値(より小さな値)として求められる。
従って、筒内燃料供給量Fcは大きい値となるので、筒内燃料供給量偏差DFcは負の値となる。その結果、空燃比フィードバック補正量DFiが負の値となる。これにより、燃料噴射量Fiは、基本燃料噴射量Fbaseよりも小さくなって、空燃比がリーン側の値となるように制御される。このような処理は、FCが開始されるまで(図4の時刻t1が到来するまで)繰り返し実行される。
次に、偏差積分値SDVoxsの学習値Learnの更新(学習)、学習完了判定について説明する。CPU81は、図8に示したルーチンを図5のルーチンの実行に同期して(即ち、燃料噴射に同期して)繰り返し実行している。従って、所定のタイミングになると、CPU81はステップ805に進み、偏差積分値SDVoxsを所定の時定数をもってローパスフィルタ処理してローパスフィルタ処理後偏差積分値SDVoxslowを取得する。
次いで、CPU81はステップ810に進み、フラグXCOMPの値が「0」であるか否かを判定する。ここで、フラグXCOMPは、その値が「1」のとき偏差積分値SDVoxsが或る収束値に収束していること(即ち、偏差積分値の学習が完了していること、上記既収束の場合)を示し、その値が「0」のとき偏差積分値SDVoxsが収束値に収束していないこと(即ち、偏差積分値の学習が完了していないこと、未収束の場合)を示す。
先ず、偏差積分値の学習が完了していない場合について説明する。この場合、フラグXCOMPの値が「0」となっている。従って、CPU81はステップ810にて「Yes」と判定してステップ815に進み、偏差積分値の学習値Learnの更新(学習)タイミングが到来しているか否かを判定し、「No」と判定する場合、ステップ895に直ちに進んで本ルーチンを一旦終了する。偏差積分値の学習値Learnの学習タイミングは、例えば、本例では、燃料噴射回数が所定の回数に達する毎に到来する。
このような処理は、偏差積分値の学習値Learnの学習タイミングが到来するまで繰り返し実行される。これにより、図7のステップ715にて更新されていく偏差積分値SDVoxsの更新に同期してローパスフィルタ処理後偏差積分値SDVoxslowが更新されていく。
そして、偏差積分値の学習値Learnの学習タイミングが到来した場合、CPU81はステップ815に進んだとき「Yes」と判定してステップ820に進み、フラグXFCの値が「0」であり、且つフラグXRICHの値が「0」であるか否かを判定し、「No」と判定する場合、ステップ895に直ちに進んで本ルーチンを一旦終了する。
現時点では、上述したように、フラグXFC=0、フラグXRICH=0である。従って、CPU81はステップ820にて「Yes」と判定してステップ825に進み、図7のステップ715にて更新されている偏差積分値SDVoxsの絶対値|SDVoxs|が収束判定値Zより大きいか否かを判定する。
いま、偏差積分値の絶対値|SDVoxs|が収束判定値Zより大きいものとすると(即ち、収束判定条件が成立していないものとすると)、CPU81はステップ825にて「Yes」と判定してステップ830に進んで偏差積分値の学習値Learnを更新するための更新値DLearnを上記ステップ805にて更新されているローパスフィルタ処理後偏差積分値SDVoxslowと等しい値に設定する。
続いて、CPU81はステップ835に進み、その時点での学習値Learnに上記設定された更新値DLearnを加えて学習値Learnを更新し(偏差積分値を学習し)、更新した学習値LearnをバックアップRAM84の所定の領域に記憶する。次いで、CPU81はステップ840に進んで、その時点での偏差積分値SDVoxsから上記更新値DLearnを減じることで偏差積分値SDVoxsを再設定し、続くステップ845にてローパスフィルタ処理後偏差積分値SDVoxslowを「0」に設定した後、ステップ895に進んで本ルーチンを一旦終了する。
このように、偏差積分値SDVoxsが収束していないと判定されている場合(XCOMP=0)であって、且つ、FC及びFC後リッチ制御が共に実行されていない場合、学習タイミングが到来する毎に、偏差積分値SDVoxsの収束判定が行われる。この収束判定において偏差積分値SDVoxsの収束判定条件が成立していない場合(ステップ825で「Yes」と判定される場合)、偏差積分値SDVoxsと偏差積分値の学習値Learnの和(SDVoxs+Learn)を変更することなく(即ち、ステップ725に記載の式における積分項の値を変更することなく)偏差積分値の学習値Learnが更新されていく。
これにより、偏差積分値の学習値Learnが更新される毎に(即ち、偏差積分値が学習される毎に)、偏差積分値SDVoxsが「0」に近づいていく一方、偏差積分値の学習値Learnが上記「燃料噴射量の誤差」の大きさを正確に表す値(即ち、偏差積分値の学習値Learnが収束すべき値)に近づいていく。なお、偏差積分値の学習値Learnが上記「燃料噴射量の誤差」の大きさを正確に表す値に近づいていく速度は、上記ローパスフィルタ処理後偏差積分値SDVoxslowを更新する際に使用されるローパスフィルタの時定数が大きいほど小さくなる。このような処理は、偏差積分値SDVoxsの収束判定条件が成立するまで繰り返し実行される。
そして、偏差積分値の絶対値|SDVoxs|が上記収束判定値Z以下になったものとすると(即ち、偏差積分値SDVoxsの収束判定条件が成立したものとすると)、CPU81はステップ825にて「No」と判定してステップ850に進んでフラグXCOMPの値を「0」から「1」に変更する。これにより、偏差積分値SDVoxsが収束したと判定された状態(即ち、偏差積分値の学習が完了したと判定された状態)になる。
以降、CPU81はステップ810に進んだとき「No」と判定してステップ855に進むようになり、図7のステップ715にて更新されている偏差積分値SDVoxsの絶対値|SDVoxs|が再び上記収束判定値Zより大きくなったか否かを判定し、「No」と判定する場合、ステップ895に直ちに進む。このように、偏差積分値SDVoxsが収束したと判定されている場合(XCOMP=1)、偏差積分値の学習値Learnは更新されない(即ち、偏差積分値の学習が実行されない)。
一方、偏差積分値SDVoxsが収束したと判定されている場合(XCOMP=1)において偏差積分値SDVoxsの絶対値|SDVoxs|が再び上記収束判定値Zより大きくなっている場合、CPU81はステップ855にて「Yes」と判定してステップ860に進んで、フラグXCOMPの値を「1」から「0」に変更した後、ステップ830以降の処理(即ち、偏差積分値の学習値Learnの更新処理)を行う。
このように、偏差積分値SDVoxsが収束したと判定されている場合(XCOMP=1)において偏差積分値SDVoxsの上記収束判定条件が再び成立しなくなると、再び、偏差積分値SDVoxsが収束していないと判定された状態(即ち、偏差積分値の学習が完了していないと判定された状態)になるとともに、上述と同じように偏差積分値の学習値Learnが更新されていく(偏差積分値の学習が実行されていく)。
次に、フラグXFCの設定・変更について説明する。CPU81は、図9に示したルーチンを図5のルーチンの実行に同期して(即ち、燃料噴射に同期して)繰り返し実行している。従って、所定のタイミングになると、CPU81はステップ905に進み、フラグXFCの値が「0」であるか否かを判定する。
現時点は、図4の時刻t1以前であり、上述したようにフラグXFC=0である。従って、CPU81はステップ905にて「Yes」と判定してステップ910に進み、FC開始条件が成立しているか否かを判定する。
FC開始条件は、本例では、ステップ910内に記載のように、アクセルペダル操作量Accpが「0」であり、且つ、エンジン回転速度NEが所定値NEref1よりも大きい場合に成立する。
現時点は、図4の時刻t1以前であり、FC開始条件が成立していない。従って、CPU81はステップ910にて「No」と判定してステップ995に直ちに進んで本ルーチンを一旦終了する。このような処理は、図4の時刻t1が到来するまで繰り返し実行される。
次に、図4の時刻t1が到来した場合について説明する。この場合、CPU81はステップ910に進んだとき「Yes」と判定してステップ915に進み、フラグXFCの値を「0」から「1」に変更する。
これにより、フラグXFCの値が「1」になるから、図5のルーチンを繰り返し実行しているCPU81はステップ505に進んだとき「No」と判定してステップ595に直ちに進むようになる。この結果、ステップ530の処理が実行されなくなって、FCが開始される。
また、フラグXFCの値が「1」になっているから、上述した空燃比フィードバック制御条件、及びサブフィードバック制御条件が不成立となる。従って、図6、図7のルーチンを繰り返し実行しているCPU81は、ステップ605、或いはステップ705に進んだとき「No」と判定するようになる。即ち、上述した空燃比フィードバック制御(及びサブフィードバック制御)が中断される。
また、偏差積分値の学習が完了していない場合(XCOMP=0)、図8のステップ820に進んだとき「No」と判定されるから、偏差積分値の学習が中断される。
加えて、図9のルーチンを繰り返し実行しているCPU81は、ステップ905に進んだとき「No」と判定してステップ920に進み、FC終了条件が成立しているか否かを判定する。FC終了条件は、本例では、ステップ920内に記載のように、アクセルペダル操作量Accpが「0」よりも大きい場合、又は、エンジン回転速度NEが所定値NEref2(<NEref1)よりも小さい場合に成立する。
現時点は、時刻t1が到来した直後であり、FC終了条件は成立していない。従って、CPU81はステップ920にて「No」と判定してステップ995に進む。以降、CPU81はステップ920にてFC終了条件が成立したか否かをモニタするようになる。以上、このような処理は、図4の時刻t2が到来するまで(フラグXFCの値が「1」に維持されている間)繰り返し実行される。
また、FCが継続される時刻t1〜t2の間、酸素を含んだ空気そのものが上流側触媒53に流入するようになる。従って、図4に示すように、上流側触媒53の酸素吸蔵量は増大していき、FC中の或る時点で最大酸素吸蔵量Cmaxに達する。以降、上流側触媒53の酸素吸蔵量は、FCが終了するまでの間、最大酸素吸蔵量Cmaxに維持される。
次に、図4の時刻t2が到来した場合について説明する。この場合、図9のルーチンを繰り返し実行しているCPU81はステップ920に進んだとき「Yes」と判定してステップ925に進み、フラグXFCの値を「1」から「0」に変更する。
これにより、以降、CPU81はステップ905に進んだとき「Yes」と判定してステップ910に進み、上述したFC開始条件が成立したか否かをモニタするようになる。
また、CPU81は、フラグXRICHの設定・変更を行うため、図10に示したルーチンを図5のルーチンの実行に同期して(即ち、燃料噴射に同期して)繰り返し実行している。従って、所定のタイミングになると、CPU81はステップ1005に進み、フラグXRICHの値が「0」であるか否かを判定する。
上述のごとく、現時点では、フラグXRICH=0である。従って、CPU81はステップ1005にて「Yes」と判定してステップ1010に進み、FC後リッチ制御開始条件が成立しているか否かを判定する。FC後リッチ制御開始条件は、本例では、フラグXFCの値が「1」から「0」に変更された場合に(即ち、FCが終了した時点で)成立する。
いま、先のステップ925の実行により、フラグXFCの値が「1」から「0」に変更された直後であるもの(即ち、図4の時刻t2が到来したもの)とすると、CPU81はステップ1010にて「Yes」と判定してステップ1015に進み、フラグXRICHの値を「0」から「1」に変更する。
続いて、CPU81はステップ1020に進み、上流側触媒53の酸素吸蔵量推定値OSAを上流側触媒53の最大酸素吸蔵量Cmaxと等しい値に設定する。最大酸素吸蔵量Cmaxは、周知の手法(例えば、酸素濃度センサ68の出力値Voxsが反転するタイミングで空燃比を所定のリッチ・リーン空燃比の一方から他方に切り換える所謂アクティブ空燃比制御等)により所定のタイミング毎に取得・更新されている。
次いで、CPU81はステップ1025に進んで、フラグXCOMPの値が「1」であるか否か(即ち、偏差積分値の学習が完了しているか否か)を判定し、「Yes」と判定する場合(学習が完了している場合)、ステップ1030に進んで酸素吸蔵量目標値OSArefを値αに設定する。値αは、最大酸素吸蔵量Cmaxの半分よりも小さい値であり、本例では、α=(1/3)・Cmaxである。一方、偏差積分値の学習が完了していない場合、CPU81はステップ1035に進んで酸素吸蔵量目標値OSArefを値βに設定する。値βは、最大酸素吸蔵量Cmaxの半分の値である(β=(1/2)・Cmax)。
以降、フラグXFC=0となる一方で、フラグXRICH=1となっている。従って、上述した空燃比フィードバック制御条件、及びサブフィードバック制御条件は不成立のままとなる。即ち、ステップ605、或いはステップ705にて「No」と判定されて、上述した空燃比フィードバック制御(及びサブフィードバック制御)が中断されたままとなる。
また、偏差積分値の学習が完了していない場合(XCOMP=0)、図8のステップ820に進んだとき「No」と判定されるから、偏差積分値の学習が継続してなお中断される。
また、図5のルーチンを繰り返し実行しているCPU81はステップ505に進んだとき再び「Yes」と判定するようになり、ステップ510の処理を実行した後、ステップ515に進んで「No」と判定してステップ535に進むようになる。
ステップ535では、ステップ510にて求めた筒内吸入空気量Mc(k)を所定の第1リッチ空燃比AFrich1(<AFstoich)で除することで空燃比を第1リッチ空燃比AFrich1とするための基本燃料噴射量Fbaseが求められる。
また、上述のように、空燃比フィードバック制御(及びサブフィードバック制御)は中断されているから、図6のステップ640の実行により空燃比フィードバック補正量DFi=0となっている。従って、ステップ525では、燃料噴射量Fiが、空燃比を第1リッチ空燃比AFrich1とするための基本燃料噴射量Fbaseと等しい値に設定される。
これにより、空燃比が第1リッチ空燃比AFrich1になるように制御されて、FC後リッチ制御が開始される。このような処理は、FC後リッチ制御が終了するまで(フラグXRICH=1の間、図4の時刻t3が到来するまで)繰り返し実行される。
また、FC後リッチ制御が継続される時刻t2〜t3の間、理論空燃比よりもリッチの第1リッチ空燃比のガスが上流側触媒53に流入するようになる。従って、図4に示すように、上流側触媒53の酸素吸蔵量は、時刻t2以降、最大酸素吸蔵量Cmaxから減少していく。
上述したように、時刻t2以降、フラグXRICH=1となっている。従って、図10のルーチンを燃料噴射と同期して繰り返し実行しているCPU81はステップ1005に進んだとき「No」と判定してステップ1040に進むようになり、酸素吸蔵量減少量ΔO2を、ステップ1040内に記載の式に従って求める。ここで、値「0.23」は、空気中に含まれる酸素の質量割合である。Fiは図5のステップ525にて決定されている最新値である。
ステップ1040内に記載の式において、値「(AFstoich−AFrich1)・Fi」は、燃料噴射間隔当たりにおいて上流側触媒53に流入するガス中の空気の不足量(質量)を表す。従って、値「0.23・(AFstoich−AFrich1)・Fi」(=ΔO2)は、燃料噴射間隔当たりにおいて上流側触媒53に流入するガス中の酸素の不足量(質量)、即ち、FC後リッチ制御実行中の燃料噴射間隔当たりにおける上流側触媒53の酸素吸蔵量の減少分(>0)を表す。
次に、CPU81はステップ1045に進み、その時点における酸素吸蔵量推定値OSA(時刻t2の直後では、先のステップ1020の処理により最大酸素吸蔵量Cmaxと等しい)から上記ステップ1040にて求めた酸素吸蔵量減少量ΔO2(>0)を減じることで酸素吸蔵量推定値OSAを更新する(減少させる)。
次いで、CPU81はステップ1050に進み、ステップ1045にて更新された酸素吸蔵量推定値OSAが上記ステップ1030、或いはステップ1035にて設定されたで酸素吸蔵量目標値OSAref以下となった否かを判定する。
現時点は時刻t2の直後であるから、酸素吸蔵量推定値OSAは酸素吸蔵量目標値OSArefにまで減少していない。従って、CPU81はステップ1050にて「No」と判定してステップ1095に直ちに進む。このような処理は、先のステップ1045の処理の繰り返しにより減少していく酸素吸蔵量推定値OSAが酸素吸蔵量目標値OSArefに達するまで繰り返し実行される。
そして、酸素吸蔵量推定値OSAが酸素吸蔵量目標値OSArefに達すると、即ち、偏差積分値の学習が完了している場合では図4Aの時刻t3に示すように酸素吸蔵量OSAが値α(=(1/3)・Cmax)に達すると、或いは、偏差積分値の学習が完了していない場合では図4Bの時刻t3に示すように酸素吸蔵量OSAが値β(=(1/2)・Cmax)に達すると、CPU81はステップ1050に進んだとき「Yes」と判定してステップ1055に進み、フラグXRICHの値を「1」から「0」に変更する。
これにより、以降、CPU81はステップ1005に進んだとき「Yes」と判定してステップ1010に進み、上述したFC後リッチ制御開始条件が成立したか否かをモニタするようになる。
以降、フラグXFCの値もフラグXRICHの値も「0」となっている。従って、上述した空燃比フィードバック制御条件、及びサブフィードバック制御条件が再び成立する。即ち、ステップ605、或いはステップ705にて「Yes」と判定されて、上述した空燃比フィードバック制御(及びサブフィードバック制御)が再開される。
また、図5のルーチンを繰り返し実行しているCPU81はステップ505にて「Yes」と判定後、ステップ515に進んだとき再び「Yes」と判定するようになる。この結果、上述した空燃比フィードバック制御が再開されて、図4の時刻t1以前と同じように、空燃比が目標空燃比である理論空燃比AFstoichと一致するようフィードバック制御されるようになる。
また、偏差積分値の学習が完了していない場合(XCOMP=0)、図8のステップ820に進んだとき「Yes」と判定されるようになり、図4Bの時刻t3以降に示すように、偏差積分値の学習が再開される。以上、このような処理は、FC開始条件が再び成立するまで(即ち、図9のステップ910にて「Yes」と判定されるまで)継続される。
このように空燃比フィードバック制御が再開されると、上流側触媒53には理論空燃比近傍のガスが流入する。従って、以降、図4の時刻t3以降に示すように、上流側触媒53の酸素吸蔵量は、空燃比フィードバック制御再開時点(図4の時刻t3)での値の近傍で推移していく傾向が強い。
以上、説明したように、本発明の第1実施形態に係る燃料噴射制御装置によれば、上流側触媒53の下流の酸素濃度センサ68の出力値Voxsと理論空燃比AFstoichに相当する目標空燃比相当値Voxsrefとの偏差DVoxsについてPID処理してサブフィードバック補正量Vafsfbが計算され、サブフィードバック補正量Vafsfbに基づいて空燃比が理論空燃比AFstoichに一致するように燃料噴射量Fiがフィードバック制御される。
また、第1実施形態では、機関の運転状態に応じてFCが行われ、FC終了直後からFC後リッチ制御が行われる。上記空燃比フィードバック制御は、FC実行中及びFC後リッチ制御実行中は中断される。これにより、FC実行中及びFC後リッチ制御実行中は、上記PID処理におけるI処理に必要となる上記偏差DVoxsの積算値(=偏差積分値SDVoxs)の更新も中断される。
また、第1実施形態では、所定のタイミング毎に、上記偏差積分値SDVoxsの「学習」を行う(具体的には、偏差積分値の学習値Learnを更新する)。この偏差積分値の学習は、FC実行中及びFC後リッチ制御実行中は行われない。更には、偏差積分値SDVoxsの収束判定が行われ、偏差積分値SDVoxsが収束した(偏差積分値の学習が完了した)と判定されている間は偏差積分値の学習は行われない。
加えて、第1実施形態では、偏差積分値SDVoxsが収束したと判定されている場合(XCOMP=1の場合、即ち、上記「既収束の場合」)、FC後リッチ制御中において、上流側触媒53の酸素吸蔵量推定値OSAが減少して最大酸素吸蔵量Cmaxの半分よりも小さい値α(=(1/3)・Cmax)に達した時点でFC後リッチ制御が終了されて上記空燃比フィードバック制御が再開される。一方、偏差積分値SDVoxsが収束していないと判定されている場合(XCOMP=0の場合、即ち、上記「未収束の場合」)、FC後リッチ制御中において、酸素吸蔵量推定値OSAが減少して最大酸素吸蔵量Cmaxの半分の値β(=(1/2)・Cmax)に達した時点でFC後リッチ制御が終了されて上記空燃比フィードバック制御が再開される。
これによれば、既収束の場合、FC後リッチ制御終了時点(図4Aの時刻t3を参照)にて上流側触媒53内が若干リッチ雰囲気に設定される。これにより、FC後リッチ制御終了後(図4Aの時刻t3以降)において理論空燃比よりもリーン空燃比の排ガスが上流側触媒53に流入する場合に対して上流側触媒53の酸素吸蔵機能が発揮され得る余裕度が大きめに確保され得る。この結果、既収束の場合、FC後リッチ制御終了後において上記「加速リーン傾向」が発生した場合において排ガス中のNOxを効果的に浄化することができる。
一方、未収束の場合、FC後リッチ制御終了時点(図4Bの時刻t3を参照)にて上流側触媒53内が理論空燃比相当の雰囲気に設定される。これにより、FC後リッチ制御終了時点以降(図4Bの時刻t3以降)、上流側触媒53から流出するガスの空燃比が理論空燃比近傍となる傾向が強くなり、従って、酸素濃度センサ68の出力値Voxsが目標空燃比相当値Voxsref近傍となる傾向が強くなる。この結果、FC後リッチ制御終了直後から再開される偏差積分値の学習において、偏差積分値SDVoxs(偏差積分値の学習値Learn)が収束値から離れていく事態の発生を抑制することができる。即ち、未収束の場合、偏差積分値SDVoxs(偏差積分値の学習値Learn)を収束値に効率良く収束させることができる。
このように、既収束の場合(XCOMP=1)と未収束の場合(XCOMP=0)とで、FC後リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少の程度が異なり、既収束の場合、未収束の場合に比して、FC後リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少の程度が大きくされる。これにより、内燃機関が総合的な観点から適切に制御され得る。
本発明は上記第1実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。既収束の場合と未収束の場合とでFC後リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少の程度を異ならせるため、上記第1実施形態では、FC後リッチ制御中において設定されるリッチ空燃比AFrich1を一定としつつ既収束の場合と未収束の場合とでFC後リッチ制御終了時点での上流側触媒53の酸素吸蔵量を異ならせているが、例えば、既収束の場合と未収束の場合とでFC後リッチ制御中において設定されるリッチ空燃比を異ならせてもよい。この場合、例えば、FC後リッチ制御の継続時間は一定とされる一方で、既収束の場合、未収束の場合に比して、FC後リッチ制御中において設定されるリッチ空燃比がよりリッチに設定される。
また、既収束の場合と未収束の場合とでFC後リッチ制御の継続時間を異ならせてもよい。この場合、例えば、FC後リッチ制御中において設定されるリッチ空燃比は一定とされる一方で、既収束の場合、未収束の場合に比して、FC後リッチ制御の継続時間がより長く設定される。
(第2実施形態)
次に、本発明の第2実施形態に係る燃料噴射制御装置について説明する。図11Aは、第2実施形態が適用される場合における図4Aに対応する既収束の場合におけるタイムチャートであり、図11Bは、第2実施形態が適用される場合における図4Bに対応する未収束の場合におけるタイムチャートである。
図11A及び図11Bと、図4A及び図4Bとの比較から理解できるように、第2実施形態は、既収束の場合も未収束の場合もFC後リッチ制御中において上流側触媒53の酸素吸蔵量が上記値β(=(1/2)・Cmax)に達した時点でFC後リッチ制御が終了される点、並びに、既収束の場合のみ上述した「再加速時リッチ制御」が実行される点、においてのみ上記第1実施形態と異なっている。
(第2実施形態の実際の作動)
以下、第2実施形態に係る燃料噴射制御装置の実際の作動について説明する。この装置のCPU81は、第1実施形態のCPU81が実行する図5〜図10に示したルーチンのうち、図6〜図9に示したルーチンをそのまま実行する。一方、この装置のCPU81は、第1実施形態のCPU81が実行する図5、図10に示したルーチンに代えて図12、図13にフローチャートにより示したルーチンを燃料噴射と同期してそれぞれ実行する。加えて、この装置のCPU81は、図14にフローチャートにより示したルーチンを燃料噴射と同期して実行する。
以下、第2実施形態に特有の図12〜図14に示したルーチンについて説明する。なお、図12〜図14に示したルーチンにおいて前出のルーチンのステップと同じステップについては前出のルーチンのステップ番号と同じステップ番号を付すことでそれらの説明に代える(以下に説明する、第3実施形態に係る図16〜図18についても同様)。
図12に示したルーチンは、ステップ515とステップ520の間にステップ1205を挿入した点、並びに、ステップ1210を追加した点においてのみ、図5に示したルーチンと異なる。
また、図13に示したルーチンは、ステップ1025、1030、1035を削除した点、並びに、ステップ1050をステップ1305に置き換えた点においてのみ、図10に示したルーチンと異なる。
ステップ1305では、図13のステップ1045にて更新された酸素吸蔵量推定値OSAが常に、値β(=(1/2)・Cmax)と比較される。これにより、既収束の場合も未収束の場合も、FC後リッチ制御中において上流側触媒53の酸素吸蔵量が上記値β(=(1/2)・Cmax)に達した時点でFC後リッチ制御が終了される(図11の時刻t3を参照)。
図12のステップ1205は、FCが実行されておらず(XFC=0)、且つ、FC後リッチ制御が実行されていない(XRICH=0)場合に実行される。ステップ1205では、フラグXREACの値が「0」であるか否かが判定される。ここで、フラグXREACの値は、後述する図14のルーチンの実行により設定・変更されるようになっていて、フラグXREACは、その値が「1」のとき再加速時リッチ制御実行中であることを示し、その値が「0」のとき再加速時リッチ制御実行中でないことを示す。
なお、第2実施形態では、「フラグXREAC=0」も空燃比フィードバック制御条件(及び、サブフィードバック制御条件)に加えられている。即ち、FC実行中、FC後リッチ制御実行中に加えて、再加速時リッチ制御実行中も空燃比フィードバック制御(及び、サブフィードバック制御)が中断される。
フラグXREAC=0のときは、ステップ520が実行されて、上述したように空燃比を理論空燃比AFstoichに一致させる空燃比フィードバック制御が実行される。一方、フラグXREAC=1のときは、ステップ1210が実行される。
ステップ1210では、図12のステップ510にて求めた筒内吸入空気量Mc(k)を所定の第2リッチ空燃比AFrich2(<AFstoich)で除することで空燃比を第2リッチ空燃比AFrich2とするための基本燃料噴射量Fbaseが求められる。また、この場合、上述のように、空燃比フィードバック制御(及びサブフィードバック制御)は中断されているから、空燃比フィードバック補正量DFi=0となっている。
従って、図12のステップ525では、燃料噴射量Fiが、空燃比を第2リッチ空燃比AFrich2とするための基本燃料噴射量Fbaseと等しい値に設定される。これにより、空燃比が第2リッチ空燃比AFrich2になるように制御されて、再加速時リッチ制御が実行される(図11Aの時刻t4〜t5を参照)。
以下、フラグXREACの値を設定・変更するための図14のルーチンについて説明する。図14のルーチンの処理の流れは、フラグXRICHの値を設定・変更するための図13のルーチンのものと類似している。
再加速時リッチ制御が実行されていない場合(XREAC=0)においては、ステップ1405にて「Yes」と判定されて、ステップ1410及びステップ1415に対応する「再加速時リッチ制御の開始条件」が成立しているか否かが判定される。
再加速時リッチ制御の開始条件は、本例では、アクセルペダル操作量Accpが「0」より大きく、フラグXFC=0であり、フラグXRICH=0であり、且つ、フラグXCOMP=1の場合に成立する。即ち、加速中であって、FC及びFC後リッチ制御が共に実行されておらず、且つ、既収束の場合に成立する。換言すれば、未収束の場合は、再加速時リッチ制御の開始条件が成立し得ない。
再加速時リッチ制御の開始条件が成立すると(図11Aの時刻t4を参照)、ステップ1420が実行されてフラグXREACの値が「0」から「1」に変更され、続くステップ1425にて酸素吸蔵量減少量積算値ΔO2sumが「0」に初期化される。
このように、再加速時リッチ制御の開始条件が成立するとフラグXREAC=1となる。これにより、上述したように、図12のステップ1205にて「No」と判定されて再加速時リッチ制御が開始される。
以降、ステップ1405にて「No」と判定されて、ステップ1430が実行される。ステップ1430では、酸素吸蔵量減少量ΔO2が、図13のステップ1040に類似したステップ1430内に記載の式に従って求められる。即ち、酸素吸蔵量減少量ΔO2は、再加速時リッチ制御実行中の燃料噴射間隔当たりにおける上流側触媒53の酸素吸蔵量の減少分(>0)を表す。
次のステップ1435では、その時点における酸素吸蔵量減少量積算値ΔO2sum(再加速時リッチ制御開始時の直後では、先のステップ1425の処理により「0」)に上記ステップ1430にて求めた酸素吸蔵量減少量ΔO2(>0)を加えることで酸素吸蔵量減少量積算値ΔO2sumが更新される(増大される)。即ち、酸素吸蔵量減少量積算値ΔO2sumは、再加速時リッチ制御開始時点から現時点までにおける上流側触媒53の酸素吸蔵量の減少分を表す。
次のステップ1440では、ステップ1435にて更新された酸素吸蔵量減少量積算値ΔO2sumが所定の酸素吸蔵量減少量目標値ΔO2ref1を超えたか否かが判定され、「Yes」と判定される場合(図11Aの時刻t5を参照)、ステップ1445にてフラグXREACの値が「1」から「0」に変更される。これにより、上述したように、図12のステップ1205にて「Yes」と判定され、再加速時リッチ制御に代えて上述した空燃比フィードバック制御が再開される。
このように、再加速時リッチ制御は、既収束の場合のみ実行され得る。また、再加速時リッチ制御は、再加速時リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少量が所定の酸素吸蔵量減少量目標値ΔO2ref1に達した時点で終了される。
以上、説明したように、本発明の第2実施形態に係る燃料噴射制御装置によれば、既収束の場合、FC後において、FC後リッチ制御も再加速時リッチ制御も共に実行され得る。これにより、FC後リッチ制御の実行によりFC後リッチ制御終了時点(図11Aの時刻t3を参照)において上流側触媒53の酸素吸蔵量が最大酸素吸蔵量Cmaxの半分の値β(=(1/2)・Cmax)に調整され得、且つ、再加速時リッチ制御の実行により上述した「加速リーン傾向」に基づく排ガス中のNOxの排出を抑制できる。
一方、未収束の場合、FC後において、既収束の場合と同様、FC後リッチ制御は実行され得る。これにより、FC後リッチ制御終了時点(図11Bの時刻t3を参照)にて上流側触媒53内が理論空燃比相当の雰囲気に設定される。これにより、上記第1実施形態と同様、FC後リッチ制御終了時点以降(図11Bの時刻t3以降)において再開される偏差積分値の学習において、偏差積分値SDVoxs(偏差積分値の学習値Learn)が収束値から離れていく事態の発生を抑制することができる。即ち、未収束の場合、偏差積分値SDVoxs(偏差積分値の学習値Learn)を収束値に効率良く収束させることができる。
加えて、未収束の場合、既収束の場合において再加速時リッチ制御が実行される状況(図11Aの時刻t4〜t5を参照)であっても再加速時リッチ制御が実行されず、上記空燃比フィードバック制御により空燃比が理論空燃比AFstoichに一致するように制御され得る。従って、既収束の場合において再加速時リッチ制御実行中となる期間中であっても、酸素濃度センサ68の出力値Voxsが目標空燃比相当値Voxsref近傍に維持される傾向が強くなり、この結果、同期間中においても偏差積分値SDVoxs(偏差積分値の学習値Learn)を収束値に効率良く近づける(収束させる)ことができる。即ち、未収束の場合においても再加速時リッチ制御が実行される場合に比して、偏差積分値SDVoxs(偏差積分値の学習値Learn)を収束値により早期に収束させることができる。
(第3実施形態)
次に、本発明の第3実施形態に係る燃料噴射制御装置について説明する。図15Aは、第3実施形態が適用される場合における図11Aに対応する既収束の場合におけるタイムチャートであり、図15Bは、第3実施形態が適用される場合における図11Bに対応する未収束の場合におけるタイムチャートである。
図15A及び図15Bと、図11A及び図11Bとの比較から理解できるように、第3実施形態は、既収束の場合では第2実施形態と全く同じ作動を行う。一方、第3実施形態は、未収束の場合、再加速時リッチ制御は実行するがFC後リッチ制御は実行しない点で、FC後リッチ制御は実行するが再加速時リッチ制御は実行しない上記第2実施形態と異なっている。
(第3実施形態の実際の作動)
以下、第3実施形態に係る燃料噴射制御装置の実際の作動について説明する。この装置のCPU81は、第1実施形態のCPU81が実行する図5〜図10に示したルーチンのうち、図6、図7、及び図9に示したルーチンをそのまま実行し、第2実施形態のCPU81が実行する図12に示したルーチンをそのまま実行する。
また、この装置のCPU81は、第1実施形態のCPU81が実行する図8に示したルーチンに代えて図16にフローチャートにより示したルーチンを燃料噴射と同期して実行する。加えて、この装置のCPU81は、第2実施形態のCPU81が実行する図13、図14に示したルーチンに代えて図17、図18にフローチャートにより示したルーチンを燃料噴射と同期してそれぞれ実行する。以下、第3実施形態に特有の図16、図17、及び図18に示したルーチンについて説明する。
図16に示したルーチンは、ステップ820をステップ1605に置き換えた点においてのみ、図8に示したルーチンと異なる。ステップ1605は、未収束の場合(XCOMP=0)に実行される。ステップ1605では、現時点が、FC開始後であって再加速時リッチ制御終了までの間(図15Bの時刻t1〜t5を参照)であるか否かが判定され、「Yes」と判定された場合、ステップ1695に直ちに進む。
これにより、偏差積分値の学習は、FCが開始されると中断され、以降、(最初に実行された)再加速時リッチ制御が終了するまで継続して中断される。そして、その再加速時リッチ制御が終了した時点から、偏差積分値の学習が再開される(図15Bの時刻t5を参照)。
図17に示したルーチンは、ステップ1010とステップ1015の間にステップ1705が挿入された点においてのみ、図13に示したルーチンと異なる。
ステップ1705では、フラグXCOMP=1であるか否かが判定される。この条件は、ステップ1010の条件と合わせてFC後リッチ制御の開始条件を構成する。即ち、第3実施形態では、FC後リッチ制御は、既収束の場合にのみ実行され、未収束の場合は実行され得ない。
図18に示したルーチンは、ステップ1415を削除した点、ステップ1425の次にステップ1805、1810、1815を挿入した点、並びに、ステップ1440をステップ1820に置き換えた点においてのみ、図14に示したルーチンと異なる。
ステップ1415が削除されたことにより、再加速時リッチ制御開始条件から「フラグXCOMP=1」が削除されることになる。この結果、再加速時リッチ制御は、既収束の場合のみならず、未収束の場合も実行され得る。
ステップ1805、1810、1815は、再加速時リッチ制御開始条件(ステップ1410の条件)が成立した場合に実行される。これにより、既収束の場合(XCOMP=1)、酸素吸蔵量減少量目標値ΔO2refが上記第2実施形態と同じ値ΔO2ref1(ステップ1440、図11Aの時刻t5を参照)に設定され、未収束の場合(XCOMP=0)、酸素吸蔵量減少量目標値ΔO2refが上記値ΔO2ref1よりも大きい値ΔO2ref2に設定される。
ステップ1820では、図18のステップ1435にて更新された酸素吸蔵量減少量積算値ΔO2sumが上記のように設定された酸素吸蔵量減少量目標値ΔO2refを超えたか否かが判定される。これにより、既収束の場合、再加速時リッチ制御は、再加速時リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少量が値ΔO2ref1に達した時点で終了される(図15Aの時刻t5を参照)。一方、未収束の場合、再加速時リッチ制御は、再加速時リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少量が値ΔO2ref2(>ΔO2ref1)に達した時点で終了される(図15Bの時刻t5を参照)。この値ΔO2ref2は、最大酸素吸蔵量Cmaxの半分よりも大きい値に設定される。
以上、説明したように、本発明の第3実施形態に係る燃料噴射制御装置によれば、既収束の場合、上記第2実施形態と同様、FC後において、FC後リッチ制御も再加速時リッチ制御も共に実行され得る。
一方、未収束の場合、FC後において、再加速時リッチ制御は実行され得るがFC後リッチ制御は実行されない。従って、既収束の場合においてFC後リッチ制御が実行される状況(図15Aの時刻t2〜t3を参照)であっても上述した空燃比フィードバックが実行されて空燃比が理論空燃比AFstoichに一致するように制御される。
これにより、未収束の場合、FC終了時点以降において、上流側触媒53の酸素吸蔵量がFC終了時点での値(即ち、最大酸素吸蔵量Cmax近傍の値)の近傍で推移する(図15Bの時刻t2以降を参照)。この結果、FC後における再加速時リッチ制御開始時点(図15Bの時刻t4を参照)での上流側触媒53の酸素吸蔵量が最大酸素吸蔵量Cmaxに近い大きい値になっている場合が多い。よって、上述のように、再加速時リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少量(=ΔO2ref2)を大きめに設定できる。この結果、上述した「加速リーン傾向」によりNOxが発生し易い加速状態において、NOxの排出を十分に抑制できる。
本発明は上記第3実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記第3実施形態では、既収束の場合と未収束の場合とで再加速時リッチ制御の実行による上流側触媒53の酸素吸蔵量の減少の程度を異ならせるため、再加速時リッチ制御中において設定されるリッチ空燃比AFrich2を一定としつつ既収束の場合と未収束の場合とで再加速時リッチ制御による上流側触媒53の酸素吸蔵量の減少量を異ならせているが、例えば、既収束の場合と未収束の場合とで再加速時リッチ制御中において設定されるリッチ空燃比を異ならせてもよい。この場合、例えば、再加速時リッチ制御の継続時間は一定とされる一方で、未収束の場合、既収束の場合に比して、再加速時リッチ制御中において設定されるリッチ空燃比がよりリッチに設定される。
また、既収束の場合と未収束の場合とで再加速時リッチ制御の継続時間を異ならせてもよい。この場合、例えば、再加速時リッチ制御中において設定されるリッチ空燃比は一定とされる一方で、未収束の場合、既収束の場合に比して、再加速時リッチ制御の継続時間がより長く設定される。
また、上記第2、第3実施形態においては、FC後リッチ制御中において設定されるリッチ空燃比AFrich1と、再加速時リッチ制御中において設定されるリッチ空燃比AFrich2とを、同じとしてもよいし、異ならせてもよい。
加えて、上記第1、第2、第3実施形態においては、FC後リッチ制御実行中において、第2、第3実施形態においては更に、再加速時リッチ制御実行中において、上述した空燃比フィードバック制御が中断されているが、空燃比フィードバック制御を継続してもよい。この場合、FC後リッチ制御実行中は、図6のステップ620の目標空燃比abyfrが値AFrich1に設定されるとともに図7のステップ710の目標空燃比相当値Voxsrefが目標空燃比abyfr(=値AFrich1)に相当する値に設定される必要がある。同様に、再加速時リッチ制御実行中は、図6のステップ620の目標空燃比abyfrが値AFrich2に設定されるとともに図7のステップ710の目標空燃比相当値Voxsrefが目標空燃比abyfr(=値AFrich2)に相当する値に設定される必要がある。