以下、本発明による内燃機関の空燃比制御装置の実施形態について図面を参照しつつ説明する。
図1は、本発明の実施形態に係る空燃比制御装置を火花点火式多気筒(4気筒)内燃機関10に適用したシステムの概略構成を示している。この内燃機関10は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部20と、シリンダブロック部20の上に固定されるシリンダヘッド部30と、シリンダブロック部20にガソリン混合気を供給するための吸気系統40と、シリンダブロック部20からの排気ガスを外部に放出するための排気系統50とを含んでいる。
シリンダブロック部20は、シリンダ21、ピストン22、コンロッド23、及びクランク軸24を含んでいる。このシリンダブロック部20においては、ピストン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、スロットル弁アクチュエータ43a、スワールコントロールバルブ44、SCVアクチュエータ44a、液体燃料を貯蔵する燃料タンク45、所定量の燃料ガスを吸蔵可能なキャニスタ46、燃料タンク45内で蒸発した燃料ガスをキャニスタ46へ導入するためのベーパー捕集管47、キャニスタ46から脱離した燃料ガスを吸気管41に導入するためのパージ流路48、及びパージ流路48(燃料ガス導入路)に介装された常閉開閉弁であるパージ制御弁49を備えている。ここで、吸気ポート31、及び吸気管41は、吸気通路を構成している。
キャニスタ46は、周知のチャコールキャニスタであって、ベーパー捕集管47に接続されたタンクポート46aと、パージ流路48に接続されたパージポート46bと、大気ポート46cとが形成された筐体内に、燃料ガスを吸着するための吸着剤46dを収納することにより構成されている。
機関停止中における日光等による加熱によって燃料タンク45中で発生した燃料ガスは、燃料タンク45,ベーパー捕集管47,キャニスタ46,及びパージ流路48のパージ制御弁49よりもエバポガスの流れにおける上流側(キャニスタ46側)によって形成される閉空間内に充満する。そして、この閉空間内に充満した燃料ガスは、吸着剤46dに吸着されることでキャニスタ46内に吸蔵されるようになっている。
なお、大気ポート46cは、パージ制御弁49が開放された場合に、吸気管41にて生じる負圧により、パージ流路48にて吸気管41に向かうガスの流れが生じるように、外部の空気をキャニスタ46内に導入するための大気連通孔である。
加えて、キャニスタ46は、タンクポート46aからパージポート46bへの直接のガス流路を有している。このガス流路により、内燃機関10の運転中であってパージ制御弁49が開放された場合に、燃料タンク45にて発生した燃料ガスがタンクポート46aから当該キャニスタ46の内部に流入した後に吸着剤46dに吸着されることなくそのままパージポート46bから排出され得るようになっている。
即ち、このシステムにおいては、パージ制御弁49が開放された場合にタンクベーパー流路とキャニスタパージ流路とが同時に形成されるようになっている。ここで、「タンクベーパー流路」とは、燃料タンク45からベーパー捕集管47を経てタンクポート46aに至るガス流路、当該タンクポート46aから吸着剤46dの内部を通らずにキャニスタ46の筐体内部を通って直接パージポート46bに至るガス流路、及び当該パージポート46bからパージ流路48を経て吸気管41に至るガス流路を接続した、燃料タンク45から吸気管41に至るガス流路をいう。また、「キャニスタパージ流路」とは、大気ポート46cから吸着剤46dの内部を通ってパージポート46bに至り、当該パージポート46bからパージ流路48を経て吸気管41に至るガス流路をいう。
パージ制御弁49は、周知のVSV(バキュームスイッチングバルブ)により構成されている(本実施形態の以下の説明では、パージ制御弁49を「VSV49」と称呼する。)。VSV49は、後述するパージ実行条件が成立したとき開放されるようになっている。このVSV49が開放された場合、吸気管41にて生じる負圧により、前記タンクベーパー流路を通る第1のガス流(タンクベーパー)と、前記キャニスタパージ流路を通る第2のガス流(キャニスタパージガス)とが混合したエバポガスが、VSV49を通って吸気管41に吸入され得る構成となっている。
また、上述したパージ率(=(エバポガス流量/(エバポガス流量+エアフローメータ検出空気流量)):単位は質量%)の目標値である目標パージ率PGRは、後述するエアフローメータ61により計測される吸入空気量(流量)Gaと、吸入空気流量Gaと目標パージ率PGRとの関係を規定するテーブルMapPGR(Ga)とに基づいて、吸入空気流量Gaが大きくなるほど大きくなるように決定されるようになっている。そして、後述する電気制御装置70の指示によりVSV49がデューティ制御されることにより、実際のパージ率が目標パージ率PGRに一致するように制御されるようになっている。
排気系統50は、排気ポート34に連通したエキゾーストマニホールド51、エキゾーストマニホールド51(実際には、各排気ポート34に連通した各々のエキゾーストマニホールド51が集合した集合部)に接続されたエキゾーストパイプ(排気管)52、エキゾーストパイプ52に配設(介装)された上流側触媒装置53(以下、「第1触媒53」と称呼する。)、及びこの第1触媒53の下流のエキゾーストパイプ52に配設(介装)された下流側触媒装置54(以下、「第2触媒54」と称呼する。)を備えている。排気ポート34、エキゾーストマニホールド51、及びエキゾーストパイプ52は、排気通路を構成している。
一方、このシステムは、エアフローメータ61、スロットルポジションセンサ62、カムポジションセンサ63、クランクポジションセンサ64、水温センサ65、第1触媒53の上流の排気通路(本例では、前記各々のエキゾーストマニホールド51が集合した集合部)に配設された空燃比センサ66(以下、「上流側空燃比センサ66」と称呼する。)、第1触媒53の下流であって第2触媒54の上流の排気通路に配設された空燃比センサ67(以下、「下流側空燃比センサ67」と称呼する。)、アクセル開度センサ68、及び燃料タンク45内の燃料温度を検知するための温度センサである燃料温センサ69を備えている。
エアフローメータ61は、周知の熱線式エアフローメータにより構成されており、吸気管41内を流れる吸入空気の単位時間あたりの質量流量(吸入空気流量Ga)に応じた電圧を出力するようになっている。スロットルポジションセンサ62は、スロットル弁43の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ63は、インテークカムシャフトが90°回転する毎に(即ち、クランク軸24が180°回転する毎に)一つのパルスを有する信号(G2信号)を発生するようになっている。クランクポジションセンサ64は、クランク軸24が10°回転する毎に幅狭のパルスを有するとともに当該クランク軸24が360°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、運転速度NEを表す。水温センサ65は、内燃機関10の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
上流側空燃比センサ66は、限界電流式の酸素濃度センサであり、図2に示したように、空燃比A/Fに応じた電流を出力し、この電流に応じた電圧である出力値Vabyfsを出力するようになっていて、特に、空燃比が理論空燃比であるときには出力値Vabyfsは上流側目標値Vstoichになる。図2から明らかなように、上流側空燃比センサ66によれば、広範囲にわたる空燃比A/Fを精度良く検出することができる。
下流側空燃比センサ67は、起電力式(濃淡電池式)の酸素濃度センサであり、図3に示したように、理論空燃比近傍において急変する電圧である出力値Voxsを出力するようになっている。より具体的に述べると、下流側空燃比センサ67は、空燃比が理論空燃比よりもリーンのときは略0.1(V)、空燃比が理論空燃比よりもリッチのときは略0.9(V)、及び空燃比が理論空燃比のときは0.5(V)の電圧を出力するようになっている。アクセル開度センサ68は、運転者によって操作されるアクセルペダル81の操作量を検出し、当該アクセルペダル81の操作量Accpを表す信号を出力するようになっている。
更にこのシステムは、電気制御装置70を備えている。電気制御装置70は、互いにバスで接続されたCPU71、CPU71が実行するルーチン(プログラム)、テーブル(ルックアップテーブル、マップ)、及びパラメータ等を予め記憶したROM72、CPU71が必要に応じてデータを一時的に格納するRAM73、電源が投入された状態でデータを格納するとともに当該格納したデータを電源が遮断されている間も保持するバックアップRAM74、並びにADコンバータを含むインターフェース75等からなるマイクロコンピュータである。インターフェース75は、前記センサ61〜69と接続され、CPU71にセンサ61〜69からの信号を供給するとともに、同CPU71の指示に応じて可変吸気タイミング装置33のアクチュエータ33a、イグナイタ38、インジェクタ39、スロットル弁アクチュエータ43a、SCVアクチュエータ44a、及びVSV49に駆動信号を送出するようになっている。
(空燃比制御の概要)
次に、上述のように構成された空燃比制御装置(以下、「本装置」とも称呼する。)が行う機関の空燃比制御の概要について説明する。
本装置は、上流側空燃比センサ66の出力値を用いた空燃比フィードバック制御(以下、「メインフィードバック制御」と称呼する。)、及び、下流側空燃比センサ67の出力値を用いた空燃比フィードバック制御(以下、「サブフィードバック制御」と称呼する。)という2つの空燃比フィードバック制御を行う。加えて、本装置は、「基本燃料噴射量の誤差」を適切に補償するため上流側空燃比センサ66の出力値を用いて基本燃料噴射量の補正を行う。これらにより、空燃比が目標空燃比である理論空燃比に一致するようにフィードバック制御される。
より具体的に述べると、本装置は、機能ブロック図である図4に示したように、A1〜A15の各機能ブロックを含んで構成されている。以下、図4を参照しながら各機能ブロックについて説明していく。
<基本燃料噴射量の算出・補正>
先ず、筒内吸入空気量算出手段A1は、エアフローメータ61が計測している吸入空気流量Gaと、クランクポジションセンサ64の出力に基づいて得られる運転速度NEと、ROM72が記憶しているテーブルMapMcとに基づき、今回の吸気行程において吸気行程を迎える気筒に吸入された新気の量である筒内吸入空気量Mc(k)を求める。ここで、添え字の(k)は、今回の吸気行程に対する値であることを示している(以下、他の物理量についても同様。)。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。
上流側目標空燃比設定手段A2は、内燃機関10の運転状態である運転速度NE、及びスロットル弁開度TA等に基づいて上流側目標空燃比abyfr(k)を決定する。この上流側目標空燃比abyfr(k)は、例えば、内燃機関10の暖機終了後においては、特殊な場合を除き理論空燃比に設定されている。上流側目標空燃比abyfrは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。
基本燃料噴射量算出手段A3は、筒内吸入空気量Mc(k)を上流側目標空燃比abyfr(k)で除することにより、筒内吸入空気量Mc(k)に対応する、上流側目標空燃比abyfr(k)を得るための燃料の量である補正前基本燃料噴射量Fbaseb(k)を求める。補正前基本燃料噴射量Fbasebは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。基本燃料噴射量算出手段A3が前記「基本燃料噴射量取得手段」に相当する。
補正後基本燃料噴射量算出手段A4は、補正前基本燃料噴射量Fbaseb(k)に、後述する基本燃料噴射量補正係数設定手段A15により(前回の吸気行程にて既に)求められている基本燃料噴射量補正係数KF(基本燃料噴射量補正用のパラメータ値)を乗じることで、補正後基本燃料噴射量Fbaseを求める。補正後基本燃料噴射量算出手段A4、及び後述する基本燃料噴射量補正係数設定手段A15が前記「基本燃料噴射量補正手段」に相当する。
この補正後基本燃料噴射量Fbaseは、後に詳述するように、パージ時、非パージ時にかかわらず、今回の吸気行程における空燃比を今回の上流側目標空燃比abyfr(k)と一致させるために噴射されるべき燃料の量と等しい量の燃料を実際に噴射するためにインジェクタ39に噴射指示すべき指令燃料噴射量(即ち、現時点での前記基本燃料噴射量相当指令噴射量)となる。
<指令燃料噴射量の算出>
指令燃料噴射量算出手段A5は、補正後基本燃料噴射量Fbaseに後述するメインフィードバック補正量DFimain(上流側フィードバック補正値)、及びサブフィードバック補正量DFisub(下流側フィードバック補正値)を加えることで、下記(1)式に基づいて今回の指令燃料噴射量Fi(k)を求める。指令燃料噴射量Fiは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。この指令燃料噴射量算出手段A5は、前記「指令燃料噴射量算出手段」に相当する。
Fi(k)=Fbase+DFimain+DFisub ・・・(1)
本装置は、このようにして、指令燃料噴射量算出手段A5により、補正後基本燃料噴射量Fbaseと、メインフィードバック補正量DFimainと、サブフィードバック補正量DFisubとに基づいて算出される指令燃料噴射量Fi(k)の燃料の噴射指示を今回の吸気行程を迎える気筒についてのインジェクタ39に対して行う。このように燃料の噴射指示を行う手段が前記「空燃比制御手段」に相当する。
これにより、パージ時、非パージ時にかかわらず、インジェクタ39から実際に噴射された燃料は燃焼室25に流入し、更に、パージ時は、パージにより吸気行程にてVSV49を介して吸気管41に流入したエバポガス中の燃料も燃焼室25に流入する。
<サブフィードバック制御>
下流側目標値設定手段A6は、上述した上流側目標空燃比設定手段A2と同様、内燃機関10の運転状態である運転速度NE、及びスロットル弁開度TA等に基づいて下流側目標値Voxsrefを決定する。この下流側目標値Voxsrefは、例えば、内燃機関10の暖機終了後においては、特殊な場合を除き理論空燃比に対応する値である0.5(V)に設定されている(図3を参照。)。また、本例では、下流側目標値Voxsrefは、同下流側目標値Voxsrefに対応する空燃比が上述した上流側目標空燃比abyfr(k)と常時一致するように設定される。
出力偏差量算出手段A7は、下記(2)式に基づいて、現時点(具体的には、今回のFi(k)の噴射指示開始時点)での下流側目標値Voxsrefから同現時点での下流側空燃比センサ67の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
DVoxs=Voxsref−Voxs ・・・(2)
PIDコントローラA8は、出力偏差量DVoxsを比例・積分・微分処理(PID処理)することで、下記(3)式に基づいてサブフィードバック補正量DFisubを求める。
DFisub=Kp・DVoxs+Ki・SDVoxs+Kd・DDVoxs ・・・(3)
前記(3)式において、Kpは予め設定された比例ゲイン(比例定数)、Kiは予め設定された積分ゲイン(積分定数)、Kdは予め設定された微分ゲイン(微分定数)である。また、SDVoxsは出力偏差量DVoxsの時間積分値であり、DDVoxsは出力偏差量DVoxsの時間微分値である。
このようにして、本装置は、下流側目標値Voxsrefと下流側空燃比センサ67の出力値Voxsとの偏差である出力偏差量DVoxsに基づいてサブフィードバック補正量DFisubを求める。以上、下流側目標値設定手段A6、出力偏差量算出手段A7、及びPIDコントローラA8が前記「下流側フィードバック補正値取得手段」に相当する。
そして、本装置は、指令燃料噴射量Fi(k)を求める際、上述したように、補正後基本燃料噴射量Fbaseに対してサブフィードバック補正量DFisubを加える。これにより、以下のようにサブフィードバック制御がなされる。
例えば、平均的な空燃比がリーンであるために下流側空燃比センサ67の出力値Voxsが理論空燃比よりもリーンである空燃比に対応した値を示すと、出力偏差量DVoxsが正の値となるので(図3を参照。)、サブフィードバック補正量DFisubは正の値となる。これにより、指令燃料噴射量Fi(k)は補正後基本燃料噴射量Fbaseよりも大きくなって、空燃比がリッチとなるように制御される。
反対に、平均的な空燃比がリッチであるために下流側空燃比センサ67の出力値Voxsが理論空燃比よりもリッチである空燃比に対応した値を示すと、出力偏差量DVoxsが負の値となるので、サブフィードバック補正量DFisubは負の値となる。これにより、指令燃料噴射量Fi(k)は補正後基本燃料噴射量Fbaseよりも小さくなって、空燃比がリーンとなるように制御される。
加えて、PIDコントローラA8は積分項Ki・SDVoxsを含んでいるので、定常状態では出力偏差量DVoxsがゼロになることが保証される。換言すれば、下流側目標値Voxsrefと下流側空燃比センサ67の出力値Voxsとの定常偏差がゼロになる。この結果、サブフィードバック制御により、上流側空燃比センサ66の出力値Vabyfsに誤差がある場合であっても、定常状態において第1触媒53の下流の空燃比が下流側目標値Voxsrefに対応する空燃比(即ち、理論空燃比)に収束することが保証される。
<メインフィードバック制御>
テーブル変換手段A9は、上流側空燃比センサ66の出力値Vabyfsと、先に説明した図2に示した上流側空燃比センサ出力値Vabyfsと空燃比A/Fとの関係を規定したテーブルとに基づいて、上流側空燃比センサ66が検出する現時点(具体的には、今回のFi(k)の噴射指示開始時点)における今回の検出空燃比abyfs(k)を求める。検出空燃比abyfsは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。
目標空燃比遅延手段A10は、上流側目標空燃比設定手段A2により吸気行程毎に求められRAM73に記憶されている目標空燃比abyfrのうち、現時点からNストローク(N回の吸気行程)前の目標空燃比abyfrをRAM73から読み出し、これを目標空燃比abyfr(k−N)とする。この値Nは、燃料の噴射指示から、その噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比が上流側空燃比センサ66の出力値Vabyfsとして現れるまでに要する時間(以下、「遅れ時間L」と称呼する。)に相当するストローク数である。以下、遅れ時間L、及びストローク数Nについて付言する。
一般に、燃料の噴射指示は、吸気行程中(或いは吸気行程よりも前の時点)にて実行され、噴射された燃料は、その後に到来する圧縮上死点近傍の時点で燃焼室25内にて着火(燃焼)させられる。この結果、発生する排ガスは、排気弁35の周囲を介して燃焼室25から排気通路へと排出され、その後、排気通路内を移動していくことで上流側空燃比センサ66(の検出部)に到達する。更に、上流側空燃比センサ66の検出部に到達した排ガスの空燃比が同センサの出力値Vabyfsとして現れるまでには所定の時間を要する。
以上のことから、上記遅れ時間Lは、燃焼行程に係わる遅れ(行程遅れ)、排気通路内での排ガスの移動に係わる遅れ(輸送遅れ)、及び上流側空燃比センサ66の応答に係わる遅れ(応答遅れ)の和で表される。即ち、上流側空燃比センサ66による検出空燃比abyfsは、このようにして得られる遅れ時間Lだけ前に実行された燃料の噴射指示に基づいて発生した排ガスの空燃比を表す値となる。
上述した行程遅れに係る時間は、運転速度NEの増加に応じて短くなるとともに、輸送遅れに係る時間は、運転速度NE及び筒内吸入空気量Mcの上昇に応じて短くなる傾向がある。従って、遅れ時間Lに相当するストローク数Nは、筒内吸入空気量Mc(k)と、運転速度NEと、図5にグラフにより示した、運転速度NE及び筒内吸入空気量Mcと、ストローク数Nとの関係を規定するテーブルMapN(Mc,NE)と、に基づいて求めることができる。これにより、ストローク数Nは、運転速度NE及び筒内吸入空気量Mcの上昇に応じて小さくなる。
上流側空燃比偏差算出手段A11は、下記(4)式に基づいて、今回の検出空燃比abyfs(k)から現時点からNストローク前の目標空燃比abyfr(k−N)を減じることにより、現時点からNストローク前の上流側空燃比偏差DAFを求める。
DAF=abyfs(k)−abyfr(k−N) ・・・(4)
このように、現時点からNストローク前の上流側空燃比偏差DAFを求めるために、今回の検出空燃比abyfs(k)から、現時点からNストローク前の目標空燃比abyfr(k−N)を減じるのは、上述したように、今回の検出空燃比abyfs(k)は、現時点から遅れ時間Lだけ前(従って、現時点からNストローク前)に実行された噴射指示に基づいて発生した排ガスの空燃比を表しているからである。この上流側空燃比偏差DAFは、Nストローク前の時点で筒内に供給された燃料の過不足量に対応する値である。
ハイパスフィルタA12は、その特性をラプラス演算子sを用いて表した下記(5)式に示すように、一次のディジタルフィルタである。下記(5)式において、τ1は時定数である。ハイパスフィルタA12は、周波数(1/τ1)以下の低周波数成分が通過することを実質的に禁止する。
1−1/(1+τ1・s) ・・・(5)
ハイパスフィルタA12は、上記上流側空燃比偏差DAFの値を入力するとともに、上記(5)式に従って上流側空燃比偏差DAFの値をハイパスフィルタ処理した後の値であるハイパスフィルタ通過後上流側空燃比偏差DAFhiを出力する。
PコントローラA13は、ハイパスフィルタ通過後上流側空燃比偏差DAFhiを比例処理(P処理)することで、下記(6)式に基づいてNストローク前の燃料供給量の過不足(における周波数(1/τ1)以上の高周波数成分のみの過不足)を補償するためのメインフィードバック補正量DFimainを求める。(6)式において、Gphiは予め設定された比例ゲイン(比例定数)である。
DFimain=Gphi・DAFhi ・・・(6)
このようにして、本装置は、上流側空燃比センサ66の出力値Vabyfsに基づく値であってハイパスフィルタ処理された値に基づいてメインフィードバック補正量DFimainを求める。以上、テーブル変換手段A9、目標空燃比遅延手段A10、上流側空燃比偏差算出手段A11、ハイパスフィルタA12、及び、PコントローラA13が前記「上流側フィードバック補正値取得手段」に相当する。
そして、本装置は、指令燃料噴射量Fi(k)を求める際、上述したように、補正後基本燃料噴射量Fbaseに対して、サブフィードバック補正量DFisubとは独立して、メインフィードバック補正量DFimainを加える。これにより、以下のようにメインフィードバック制御がなされる。
例えば、空燃比が急変してリーンとなると、今回の検出空燃比abyfs(k)は現時点からNストローク前の上流側目標空燃比abyfr(k−N)よりもリーンな値(より大きな値)となる。このため、上流側空燃比偏差DAFは大きい正の値となる。また、空燃比の急変によりこの上流側空燃比偏差DAFを示す信号には前記周波数(1/τ1)以上の高周波数成分が存在するから、ハイパスフィルタA12を通過した後のハイパスフィルタ通過後上流側空燃比偏差DAFhiも大きい正の値となる。従って、メインフィードバック補正量DFimainが大きい正の値となる。これにより、指令燃料噴射量Fi(k)は、補正後基本燃料噴射量Fbaseよりも大きくなって、空燃比がリッチとなるように制御される。
反対に、空燃比が急変してリッチとなると、今回の検出空燃比abyfs(k)は上流側目標空燃比abyfr(k−N)よりもリッチな値(より小さな値)となる。このため、上流側空燃比偏差DAFは負の値となる。また、空燃比の急変によりこの上流側空燃比偏差DAFを示す信号には前記周波数(1/τ1)以上の高周波数成分が存在するから、ハイパスフィルタ通過後上流側空燃比偏差DAFhiも負の値となる。従って、メインフィードバック補正量DFimainが負の値となる。これにより、指令燃料噴射量Fi(k)は、補正後基本燃料噴射量Fbaseよりも小さくなって、空燃比がリーンとなるように制御される。
このようにして、メインフィードバック制御により、過渡の外乱に対して適切な空燃比の補正が実行され得る。なお、PコントローラA13は積分項を含んでいない。従って、メインフィードバック制御では、「基本燃料噴射量の誤差」は補償され得ない。
<パージ燃料量の推定>
パージ燃料量推定手段A14は、今回の吸気行程にてVSV49を介して燃焼室25に吸入されたエバポガスに含まれる燃料の量(以下、「パージ燃料量Fprg(k)」と称呼する。)を、下記(7)式に従って推定する。このパージ燃料量Fprgは、後述する基本燃料噴射量補正係数KFの計算に使用される。
Fprg(k)=(Mc(k)・PGR・Ceva)/(1−PGR) ・・・(7)
(7)式において、PGRは上述した目標パージ率である。Cevaはエバポガスの燃料濃度である。なお、エバポガスの燃料濃度Cevaは、周知の手法の一つに従って求められる。以下、(7)式の導出について説明する。
パージ燃料量Fprg(k)は、下記(8)式に示すように、今回の吸気行程において燃焼室25に吸入されたエバポガスの量(以下、「エバポガス量Geva」と称呼する。)とエバポガスの燃料濃度Cevaの積で表される。他方、今回の吸気行程における実際のパージ率(=目標パージ率PGR)は、機関10が定常運転状態にある場合、下記(9)式にて表すことができる。
Fprg(k)=Geva・Ceva ・・・(8)
PGR=Geva/(Geva+Mc(k)) ・・・(9)
上記(8)式と上記(9)式とからエバポガス量Gevaを消去してパージ燃料量Fprg(k)について解けば、上記(7)式が得られる。(7)式によれば、非パージ時は、目標パージ率PGRが「0」に設定されるからパージ燃料量Fprg(k)は「0」となる。一方、パージ時は、目標パージ率PGRが「0」より大きい(且つ、「1」未満の)値に設定されるからパージ燃料量Fprg(k)は「0」より大きい値となる。パージ燃料量Fprgは、各気筒の吸気行程に対応されながらRAM73に記憶されていく。このパージ燃料量推定手段A14は、前記「パージ燃料量取得手段」に相当する。
<基本燃料噴射量補正係数の設定>
基本燃料噴射量補正係数設定手段A15は、上記補正前基本燃料噴射量Fbaseb(k)に基本燃料噴射量補正係数KFを乗じた値(=上記補正後基本燃料噴射量Fbase)が、パージ時、非パージ時にかかわらず、今回の吸気行程における空燃比を今回の上流側目標空燃比abyfr(k)と一致させるために噴射されるべき燃料の量と等しい量の燃料を実際に噴射するためにインジェクタ39に噴射指示すべき指令燃料噴射量と一致する(近づく)ように、基本燃料噴射量補正係数KFを設定する。以下、基本燃料噴射量補正係数設定手段A15による基本燃料噴射量補正係数KFの設定方法について説明する。
指令燃料噴射量Fiとパージ燃料量Fprgの和は、燃焼室25に実際に流入した燃料の量(即ち、実際に噴射された燃料の量とパージ燃料量Fprgの和)と等しい量の燃料を噴射する場合において噴射指示される必要がある指令燃料噴射量(以下、「実筒内流入燃料量相当指令噴射量Fcyl」と称呼する。)を表す。
ここで、筒内吸入空気量Mcが一定であると仮定すると、下記(10)式に示すように、実筒内流入燃料量相当指令噴射量Fcylに値(検出空燃比abyfs/上流側目標空燃比abyfr)を乗じることで、空燃比を上流側目標空燃比abyfrとするために燃焼室25に流入すべき燃料の量と等しい量の燃料を噴射する場合において噴射指示される必要がある指令燃料噴射量(以下、「必要筒内流入燃料量相当指令噴射量Fcylt」と称呼する。)が求められる。
Fcylt=Fcyl・(abyfs/abyfr) ・・・(10)
下記(11)式に示すように、この必要筒内流入燃料量相当指令噴射量Fcyltからパージ燃料量Fprgを減じることで、空燃比を目標空燃比とするために噴射されるべき燃料の量と等しい量の燃料を実際に噴射するために噴射指示されるべき指令燃料噴射量(以下、「基本燃料噴射量相当指令噴射量Fbaset」と称呼する。)を求めることができる。
Fbaset=Fcylt−Fprg ・・・(11)
ここで、上述したように、補正前基本燃料噴射量Fbasebに基本燃料噴射量補正係数KFを乗じた値が上記(11)式に従って求められる基本燃料噴射量相当指令噴射量Fbasetと等しくなるように基本燃料噴射量補正係数KFが設定されるから、基本燃料噴射量補正係数KFは下記(12)式に従って設定することができる。
KF=Fbaset/Fbaseb ・・・(12)
ところで、上述したように、上流側空燃比センサ66の出力値Vabyfsに基づく検出空燃比abyfsは、現時点から上記遅れ時間L前(従って、現時点から上記Nストローク前(図5を参照))に実行された噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比を表す。このことを考慮すると、上記(10)式、(11)式を使用して基本燃料噴射量相当指令噴射量Fbasetを算出する際、検出空燃比abyfsとして今回の値abyfs(k)を使用し、上流側目標空燃比abyfr、指令燃料噴射量Fi、及びパージ燃料量Fprgとして現時点からNストローク前の値abyfr(k−N),Fi(k−N),Fprg(k−N)をそれぞれ使用すれば、基本燃料噴射量相当指令噴射量Fbasetの算出に使用される4つの値(検出空燃比abyfs、上流側目標空燃比abyfr、指令燃料噴射量Fi、パージ燃料量Fprg)に対応する吸気行程を全て同じとすることができる。この結果、現時点からNストローク前の吸気行程に対応する基本燃料噴射量相当指令噴射量Fbasetを精度良く求めることができる。
そして、上記(12)式を使用して基本燃料噴射量補正係数KFを算出する際、基本燃料噴射量相当指令噴射量Fbasetとして上述のように精度良く求められる「現時点からNストローク前の吸気行程に対応する値」を使用し、補正前基本燃料噴射量Fbasebとして現時点からNストローク前の吸気行程に対応する値Fbaseb(k−N)を使用すれば、基本燃料噴射量補正係数KFが、現時点からNストローク前の吸気行程の時点における、補正前基本燃料噴射量Fbasebと基本燃料噴射量相当指令噴射量Fbasetの比を精度良く表す値に算出され得る。
従って、このようにして得られる基本燃料噴射量補正係数KFを現時点での(今回の)補正前基本燃料噴射量Fbaseb(k)に乗じることで、現時点での(今回の)補正後基本燃料噴射量Fbaseを今回の吸気行程に対応する上記基本燃料噴射量相当指令噴射量と精度良く一致させることができる。
加えて、機関が過渡運転状態にある場合、検出空燃比abyfs、指令燃料噴射量Fi、及び補正前基本燃料噴射量Fbasebは別個独立に高周波数をもって大きく変動し得る。このような場合、上記(12)式に従って算出される基本燃料噴射量補正係数KFも高周波数をもって大きく変動し得、この結果、安定した「基本燃料噴射量の補正」を実現できなくなる可能性がある。従って、安定した「基本燃料噴射量の補正」を実現するためにローパスフィルタ処理を用いることが好ましい。以上のことから、基本燃料噴射量補正係数設定手段A15は、その機能ブロック図である図6に示したようにA15a〜A15iの各機能ブロックを含んで構成されている。
パージ燃料量遅延手段A15aは、パージ燃料量推定手段A14により吸気行程毎に求められRAM73に記憶されているパージ燃料量Fprgのうち、現時点からNストローク前の値をRAM73から読み出し、これをパージ燃料量Fprg(k−N)とする。
指令燃料噴射量遅延手段A15bは、指令燃料噴射量算出手段A5により吸気行程毎に求められRAM73に記憶されている指令燃料噴射量Fiのうち、現時点からNストローク前の値をRAM73から読み出し、これを指令燃料噴射量Fi(k−N)とする。
実筒内流入燃料量相当指令噴射量算出手段A15cは、上記指令燃料噴射量Fi(k−N)に上記パージ燃料量Fprg(k−N)を加えることで、現時点からNストローク前の吸気行程に対応する実筒内流入燃料量相当指令噴射量Fcyl(k−N)を求める。
目標空燃比遅延手段A15dは、上流側目標空燃比設定手段A2により吸気行程毎に求められRAM73に記憶されている上流側目標空燃比abyfrのうち、現時点からNストローク前の値をRAM73から読み出し、これを上流側目標空燃比abyfr(k−N)とする。
必要筒内流入燃料量相当指令噴射量A15eは、上記(10)式に相当する下記(13)式に従って、現時点からNストローク前の吸気行程に対応する必要筒内流入燃料量相当指令噴射量Fcyltを求める。
Fcylt=Fcyl(k−N)・(abyfs(k)/abyfr(k−N)) ・・・(13)
基本燃料噴射量相当指令噴射量算出手段A15fは、上記(11)式に相当する下記(14)式に従って、現時点からNストローク前の吸気行程に対応する基本燃料噴射量相当指令噴射量Fbasetを求める。なお、非パージ時では、パージ燃料量Fprg(k−N)=0となることを考慮すると、現時点からNストローク前の吸気行程に対応する基本燃料噴射量相当指令噴射量Fbasetは、下記(15)式に従って表すことができる。
Fbaset=Fcylt−Fprg(k−N) ・・・(14)
Fbaset=Fi(k−N)・(abyfs(k)/abyfr(k−N)) ・・・(15)
補正前基本燃料噴射量遅延手段A15gは、基本燃料噴射量算出手段A3により吸気行程毎に求められRAM73に記憶されている補正前基本燃料噴射量Fbasebのうち、現時点からNストローク前の値をRAM73から読み出し、これを補正前基本燃料噴射量Fbaseb(k−N)とする。
補正係数設定手段A15hは、上記(12)に相当する下記(16)式に従って、ローパスフィルタ処理前の基本燃料噴射量補正係数KF1を求める。
KF1=Fbaset/Fbaseb(k−N) ・・・(16)
ローパスフィルタA15iは、その特性をラプラス演算子sを用いて表した下記(17)式に示すように、一次のディジタルフィルタである。下記(17)式において、τ2は時定数である。ローパスフィルタA15iは、周波数(1/τ2)以上の高周波数成分が通過することを実質的に禁止する。
1/(1+τ2・s) ・・・(17)
ローパスフィルタA15iは、上記ローパスフィルタ処理前の基本燃料噴射量補正係数KF1の値を入力するとともに、上記(17)式に従って値KF1をローパスフィルタ処理した後の値である基本燃料噴射量補正係数KFを出力する。
以上が、基本燃料噴射量補正係数設定手段A15による基本燃料噴射量補正係数KFの設定方法の概要である。このようにして、基本燃料噴射量補正係数KFは、パージ時、非パージ時にかかわらず「基本燃料噴射量の誤差」を補償するための適切な値に設定され得る。ここにおいて、遅延手段A15a,A15b,A15d,A15gが前記「遅れ時間取得手段」に相当する。
<基本燃料噴射量補正係数の記憶処理>
内燃機関の暖気運転中等、「上流側空燃比センサ66の出力値Vabyfsが正常な値とならない場合」においては、検出空燃比abyfsが排気ガスの空燃比を精度良く表す値とならない。このような場合、検出空燃比abyfsの値を使用して前記(13)式〜(17)式に従って算出される基本燃料噴射量補正係数KFの値も「基本燃料噴射量の誤差」を補償するための適切な値とならない。従って、このような場合、前記(13)式〜(17)式に従って算出される基本燃料噴射量補正係数KFは補正前基本燃料噴射量Fbaseb(k)の補正に使用されるべきでない。
そこで、本装置は、「上流側空燃比センサ66の出力値Vabyfsが正常な値となる(なり得る)場合(具体的には、後述するメインフィードバック条件が成立する場合)」に限り、前記(13)式〜(17)式に従って計算された基本燃料噴射量補正係数KFを使用して補正前基本燃料噴射量Fbaseb(k)を補正していく。加えて、この場合、本装置は、計算された基本燃料噴射量補正係数KFの値を逐次バックアップRAM74に記憶・更新していく。
ここで、基本燃料噴射量補正係数KFの値の記憶・更新について付言する。一般に、筒内吸入空気量Mcが増大すると、「基本燃料噴射量の誤差」の程度が増大する(従って、基本燃料噴射量補正係数KFの値の「1」からの偏移量が変化する)傾向がある。そこで、本装置は、図7に示すように、筒内吸入空気量Mcのとり得る範囲を複数の(本例では、4つの)分類に区分する。そして、本装置は、新たな基本燃料噴射量補正係数KFを計算する毎に、今回の筒内吸入空気量Mc(k)が属する分類を選択するとともに、同選択された分類に対応する基本燃料噴射量補正係数KFmem(m)(m:1,2,3,4)の値を前記計算された新たな基本燃料噴射量補正係数KFの値に更新・記憶していく。
一方、本装置は、「上流側空燃比センサ66の出力値Vabyfsが正常な値とならない場合(具体的には、後述するメインフィードバック条件が成立しない場合)」においては、今回の筒内吸入空気量Mc(k)が属する分類を選択するとともに、バックアップRAM74に記憶されている基本燃料噴射量補正係数KFmem(m)(m:1,2,3,4)のうち同選択された分類に対応する値を基本燃料噴射量補正係数記憶値KFmemとする。
そして、本装置は、前記(13)式〜(17)式に従って計算される基本燃料噴射量補正係数KFに代えて基本燃料噴射量補正係数記憶値KFmemを利用して補正前基本燃料噴射量Fbaseb(k)を補正していく。これにより、「上流側空燃比センサ66の出力値Vabyfsが正常な値とならない場合」においても、「基本燃料噴射量の誤差」をある程度正確に補償していくことができる。
ただし、後述するように、「上流側空燃比センサ66の出力値Vabyfsが正常な値とならない場合(後述するメインフィードバック条件が成立しない場合)」、パージが実行されない。このことを考慮して、上述した基本燃料噴射量補正係数KFの値のバックアップRAM74への記憶・更新は、非パージ時においてのみ実行される。以上が、本装置による空燃比制御の概要である。
(実際の作動)
次に、本装置による空燃比制御装置の実際の作動について説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。
<空燃比フィードバック制御>
CPU71は、図8にフローチャートにより示した指令燃料噴射量Fiの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、繰り返し実行するようになっている。
従って、任意の気筒のクランク角度が前記所定クランク角度になると、CPU71はステップ800から処理を開始してステップ805に進んで、テーブルMapMc(NE,Ga)に基づいて、今回の吸気行程を迎える気筒(以下、「燃料噴射気筒」と云うこともある。)に吸入された新気の量である今回の筒内吸入空気量Mc(k)を推定する。次に、CPU71はステップ810に進んで、上記筒内吸入空気量Mc(k)を今回の目標空燃比abyfr(k)で除することにより、今回の補正前基本燃料噴射量Fbaseb(k)を決定する。
次いで、CPU71はステップ815に進んで、メインフィードバック条件が成立しているか否かを判定する。ここで、メインフィードバック条件は、例えば、機関の冷却水温THWが第1所定温度以上であって、上流側空燃比センサ66が正常(活性状態となっていることを含む)であって、筒内吸入空気量Mc(k)(或いは、負荷)が所定値以下であるときに成立する。
メインフィードバック条件が成立している場合、CPU71はステップ815にて「Yes」と判定してステップ820に進み、上記補正前基本燃料噴射量Fbaseb(k)に、後述するルーチンにて求められている基本燃料噴射量補正係数KFの最新値を乗じることにより補正後基本燃料噴射量Fbaseを決定する。
一方、メインフィードバック条件が成立していない場合(この場合、パージは実行されない。)、CPU71はステップ815にて「No」と判定してステップ825に進み、基本燃料噴射量補正係数記憶値KFmemを、バックアップRAM74に記憶されている基本燃料噴射量補正係数KFmem(m)(m:1,2,3,4)のうち筒内吸入空気量Mc(k)の値から選択された値に決定する。続いて、CPU71はステップ830に進み、ステップ810にて決定された補正前基本燃料噴射量Fbaseb(k)に上記基本燃料噴射量補正係数記憶値KFmemを乗じることにより補正後基本燃料噴射量Fbaseを決定する。
次に、CPU71はステップ835に進み、上記(1)式に従って、上記求めた補正後基本燃料噴射量Fbaseに、後述するルーチンにて(前回の燃料噴射時点にて)求められている最新のメインフィードバック補正量DFimainと、後述するルーチンにて(前回の燃料噴射時点にて)求められている最新のサブフィードバック補正量DFisubとを加えることで、今回の指令燃料噴射量Fi(k)を決定する。この、指令燃料噴射量Fi(k)の値は、上述したように、各気筒の吸気行程に対応されながらRAM73に記憶されていく。
続いて、CPU71はステップ840に進んで、指令燃料噴射量Fi(k)の燃料の噴射指示を行った後、ステップ895に進んで本ルーチンを一旦終了する。以上により、補正前基本燃料噴射量Fbaseb(k)が上述した基本燃料噴射量相当指令噴射量Fbasetに一致するように補正されて「基本燃料噴射量の誤差」が補償され得るとともに、メインフィードバック制御、及びサブフィードバック制御が行われる。
<メインフィードバック補正量の計算>
次に、上述したメインフィードバック制御においてメインフィードバック補正量DFimainを算出する際の作動について説明すると、CPU71は図9にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期(噴射指示開始時点)が到来する毎に、繰り返し実行するようになっている。
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、CPU71はステップ900から処理を開始し、ステップ905に進んで、メインフィードバック条件が成立しているか否かを判定する。このメインフィードバック条件は、先の図8のステップ815におけるメインフィードバック条件と同一である。
いま、メインフィードバック条件が成立しているものとして説明を続けると、CPU71はステップ905にて「Yes」と判定してステップ910に進み、テーブルMapabyfs(Vabyfs)(図2を参照)に基づいて、今回の検出空燃比abyfs(k)を求める。
次に、CPU71はステップ915に進んで、テーブルMapN(Mc(k),NE)(図5を参照)に基づいて、ストローク数Nを決定する。次いで、CPU71はステップ920に進み、上記(4)式に従って、前記求めた検出空燃比abyfs(k)から現時点からNストローク(N回の吸気行程)前の上流側目標空燃比であるabyfr(k−N)を減ずることにより、上流側空燃比偏差DAFを求める。
続いて、CPU71はステップ925に進み、上流側空燃比偏差DAFをハイパスフィルタA13によりハイパスフィルタ処理してハイパスフィルタ通過後上流側空燃比偏差DAFhiを取得する。次に、CPU71はステップ930に進んで、前記(6)式に従ってメインフィードバック補正量DFimainを求めた後、ステップ995に進んで本ルーチンを一旦終了する。
以上により、メインフィードバック補正量DFimainが求められ、このメインフィードバック補正量DFimainが前述した図8のステップ835により指令燃料噴射量Fi(k)に反映されることで上述したメインフィードバック制御が実行される。
一方、ステップ905の判定時において、メインフィードバック条件が不成立であると、CPU71は同ステップ905にて「No」と判定してステップ935に進んでメインフィードバック補正量DFimainの値を「0」に設定し、その後ステップ995に進んで本ルーチンを一旦終了する。このように、メインフィードバック条件が不成立であるときは、メインフィードバック補正量DFimainを「0」としてメインフィードバック制御に基づく空燃比フィードバック制御を行わない。
<サブフィードバック補正量の計算>
次に、上述したサブフィードバック制御においてサブフィードバック補正量DFisubを算出する際の作動について説明すると、CPU71は図10にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期(噴射指示開始時点)が到来する毎に、繰り返し実行するようになっている。
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、CPU71はステップ1000から処理を開始し、まず、ステップ1005にて、サブフィードバック条件が成立しているか否かを判定する。サブフィードバック条件は、例えば、前述したステップ815(及び、ステップ905)でのメインフィードバック条件に加え、機関の冷却水温THWが前記第1所定温度よりも高い第2所定温度以上のときに成立する。
いま、サブフィードバック条件が成立しているものとして説明を続けると、CPU71はステップ1005にて「Yes」と判定してステップ1010に進み、上記(2)式に従って、下流側目標値Voxsrefから現時点の下流側空燃比センサ67の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
次に、CPU71はステップ1015に進んで、下記(18)式に基づき出力偏差量DVoxsの微分値DDVoxsを求める。(18)式において、DVoxs1は前回の本ルーチン実行時において後述するステップ1030にて設定(更新)された出力偏差量DVoxsの前回値である。また、dtは本ルーチンが前回実行された時点から今回実行された時点までの時間である。
DDVoxs=(DVoxs−DVoxs1)/dt ・・・(18)
次いで、CPU71はステップ1020に進み、上記(3)式に従って、サブフィードバック補正量DFisubを求めた後、ステップ1025に進んで、その時点における出力偏差量の積分値SDVoxsに上記ステップ1010にて求めた出力偏差量DVoxsを加えて、新たな出力偏差量の積分値SDVoxsを求め、続くステップ1030にて、出力偏差量DVoxsの前回値DVoxs1を上記ステップ1010にて求めた出力偏差量DVoxsと等しい値に設定した後、ステップ1095に進んで本ルーチンを一旦終了する。
以上により、サブフィードバック補正量DFisubが求められ、このサブフィードバック補正量DFisubが前述した図8のステップ835により指令燃料噴射量Fi(k)に反映されることで上述したサブフィードバック制御が実行される。
一方、ステップ1005の判定時において、サブフィードバック条件が不成立であると、CPU71は同ステップ1005にて「No」と判定してステップ1035に進んでサブフィードバック補正量DFisubの値を「0」に設定し、その後、ステップ1095に進んで本ルーチンを一旦終了する。このように、サブフィードバック条件が不成立であるときは、サブフィードバック補正量DFisubを「0」としてサブフィードバック制御に基づく空燃比フィードバック制御を行わない。
<パージ燃料量の計算>
次に、パージ燃料量Fprg(k)を計算する際の作動について説明すると、CPU71は図11にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期(噴射指示開始時点)が到来する毎に、繰り返し実行するようになっている。従って、燃料噴射気筒について燃料噴射開始時期が到来すると、CPU71はステップ1100から処理を開始し、ステップ1105に進んで、パージ条件が成立しているか否かを判定する。
パージ条件は、例えば、空燃比フィードバック制御中(メインフィードバック条件が成立中)であって、且つ、今回の吸気行程における筒内吸入空気量Mc(k)に対応するKFmem(m)の更新(後に詳述する)が実行(完了)されている場合に成立する。
パージ条件が成立していない場合、CPU71はステップ1105にて「No」と判定してステップ1110に進み、目標パージ率PGRを「0」に設定する。これにより、VSV49は別途図示しないルーチンの実行により閉状態に維持される。
次いで、CPU71はステップ1115に進んで、今回のパージ燃料量Fprg(k)を「0」に設定した後、ステップ1195に進んで本ルーチンを一旦終了する。このように、パージ条件が成立していない場合、パージ燃料量Fprg(k)は「0」に維持される。
一方、パージ条件が成立している場合、CPU71はステップ1105にて「Yes」と判定してステップ1120に進み、テーブルMapPGR(Ga)に基づいて目標パージ率PGRを求める。これにより、VSV49は、実際のパージ率が現時点での吸入空気流量Gaに応じた目標パージ率PGR(≠0)に一致するように別途図示しないルーチンの実行によりデューティ制御され、この結果、パージが実行される。
続いて、CPU71はステップ1125に進んで、上記目標パージ率PGRと、先のステップ805にて推定されている今回の筒内吸入空気量Mc(k)と、上記エバポガスの燃料濃度Cevaと、上記(7)式とに基づいて今回のパージ燃料量Fprg(k)を求め、ステップ1195に進んで本ルーチンを一旦終了する。
このように、パージ燃料量Fprg(k)が計算され、このパージ燃料量Fprg(k)の値は、上述したように、各気筒の吸気行程に対応されながらRAM73に記憶されていく。
<基本燃料噴射量補正係数の計算、及び記憶>
次に、基本燃料噴射量補正係数KFを計算する際の作動について説明すると、CPU71は図12にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期(噴射指示開始時点)が到来する毎に、繰り返し実行するようになっている。
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、CPU71はステップ1200から処理を開始し、ステップ1205に進んで、メインフィードバック条件が成立しているか否かを判定し、「No」と判定する場合、ステップ1295に直ちに進んで本ルーチンを一旦終了する。この場合、基本燃料噴射量補正係数KFの計算、及び基本燃料噴射量補正係数KFの値のバックアップRAM74への記憶処理が実行されない。このメインフィードバック条件は、上記ステップ815,905におけるメインフィードバック条件と同一である。
いま、メインフィードバック条件が成立しているものとして説明を続けると、CPU71はステップ1205にて「Yes」と判定してステップ1210に進み、テーブルMapN(Mc(k),NE)に基づいてストローク数Nを決定する。
次に、CPU71はステップ1215に進んで、現時点からNストローク前の指令燃料噴射量Fi(k−N)と現時点からNストローク前のパージ燃料量Fprg(k−N)の和を実筒内流入燃料量相当指令噴射量Fcyl(k−N)とする。
続いて、CPU71はステップ1220に進み、上記実筒内流入燃料量相当指令噴射量Fcyl(k−N)と、先のステップ910にて求めた今回の検出空燃比abyfs(k)と、現時点からNストローク前の上流側目標空燃比abyfr(k−N)と、上記(13)式とに基づいて、必要筒内流入燃料量相当指令噴射量Fcyltを求める。
次いで、CPU71はステップ1225に進んで、上記必要筒内流入燃料量相当指令噴射量Fcyltと、現時点からNストローク前のパージ燃料量Fprg(k−N)と、上記(14)式とに基づいて基本燃料噴射量相当指令噴射量Fbasetを求め、続くステップ1230にて、基本燃料噴射量相当指令噴射量Fbasetと、現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)と、上記(16)式とに基づいてローパスフィルタ処理前の基本燃料噴射量補正係数KF1を求める。
次に、CPU71はステップ1235に進み、上記ローパスフィルタ処理前の基本燃料噴射量補正係数KF1をローパスフィルタA15iによりローパスフィルタ処理して基本燃料噴射量補正係数KFを取得する。
次に、CPU71はステップ1240に進んで、KF記憶条件が成立したか否かを判定する。基本燃料噴射量補正係数KFの記憶処理は、非パージ時において基本燃料噴射量補正係数KFの値が安定している定常運転状態において実行されることが好ましい。本例では、KF記憶条件は、非パージ時であって、且つ、機関10が所定の定常運転状態(例えば、運転速度NE、及びアクセルペダル操作量Accpの変動幅が現時点までの所定期間に亘って所定値以下の状態)にある場合に成立する。
いま、KF記憶条件が成立しているものとすると、CPU71はステップ1240にて「Yes」と判定してステップ1245に進んで、筒内吸入空気量Mc(k)の最新値から選択されるKFmem(m)(m:1,2,3,4)の値を先のステップ1235にて求めた基本燃料噴射量補正係数KFと等しい値に更新し、同更新されたKFmem(m)の値をバックアップRAM74の対応するメモリに記憶した後ステップ1295に進む。一方、CPU71はステップ1240にて「No」と判定した場合、ステップ1245の処理を実行することなく直ちにステップ1295に進む。
これにより、メインフィードバック条件が成立している場合において、燃料噴射気筒について燃料噴射開始時期が到来する毎に、基本燃料噴射量補正係数KFの計算(更新)が実行されていく。そして、前述した図8のルーチンのステップ820にて、上述のように計算(更新)される基本燃料噴射量補正係数KFの最新値が使用されることで、補正前基本燃料噴射量Fbaseb(k)が補正されていく。加えて、KF記憶条件が成立している場合、基本燃料噴射量補正係数KFの値のバックアップRAM74への記憶処理が実行されていく。
以上、説明したように、本発明による内燃機関の空燃比制御装置の実施形態によれば、パージ燃料量Fprg(パージ時はゼロより大きい値、非パージ時はゼロ)を考慮して、上記(13)式、(14)式に従って、基本燃料噴射量相当指令噴射量Fbasetが求められる。この基本燃料噴射量相当指令噴射量Fbasetを補正前基本燃料噴射量Fbaseb(k−N)で除した値KF1(=Fbaset/Fbaseb(k−N))をローパスフィルタ処理して基本燃料噴射量補正係数KFが求められる(図6を参照)。
そして、この基本燃料噴射量補正係数KFを補正前基本燃料噴射量Fbaseb(k)に乗じることで補正前基本燃料噴射量Fbaseb(k)が補正されていく(即ち、補正後基本燃料噴射量Fbaseが決定されていく)。これにより、パージ時、非パージ時にかかわらず、基本燃料噴射量相当指令噴射量Fbasetが空燃比を上流側目標空燃比abyfrとするために噴射指示されるべき適切な値に計算され得、補正後基本燃料噴射量Fbaseが係る基本燃料噴射量相当指令噴射量Fbasetと一致するように計算されていく。この結果、パージ時であっても上記「基本燃料噴射量の補正」が適切に行われ得、この結果、「基本燃料噴射量の誤差」が適切に補償され得る。
加えて、上流側空燃比センサ66の出力値Vabyfsに基づく値であってハイパスフィルタ処理された値に基づくメインフィードバック制御により、過渡の外乱に対して適切な空燃比の補正が実行され得る。
更には、下流側目標値Voxsrefと下流側空燃比センサ67の出力値Voxsの差(=出力偏差量DVoxs)の積分処理を含むサブフィードバック制御により、上流側空燃比センサ66の出力値Vabyfsに誤差がある場合であっても、定常状態において第1触媒53の下流の空燃比が下流側目標値Voxsrefに対応する空燃比(即ち、理論空燃比)に収束することが保証され得る。
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、検出空燃比abyfs(k)、指令燃料噴射量Fi(k−N)、パージ燃料量Fprg(k−N)、上流側目標空燃比abyfr(k−N)、及び補正前基本燃料噴射量Fbaseb(k−N)のそれぞれの値そのものからローパスフィルタ処理前の基本燃料噴射量補正係数KF1を求め、値KF1をローパスフィルタ処理して基本燃料噴射量補正係数KFを求めるように構成しているが、検出空燃比abyfs(k)、指令燃料噴射量Fi(k−N)、パージ燃料量Fprg(k−N)、上流側目標空燃比abyfr(k−N)、及び補正前基本燃料噴射量Fbaseb(k−N)をそれぞれ別個にローパスフィルタ処理した後のそれぞれの値を用いて、(ローパスフィルタ処理前基本燃料噴射量補正係数KF1を求めることなく)直接、基本燃料噴射量補正係数KFを求めるようにしてもよい。
また、上記実施形態においては、検出空燃比abyfs(k)、指令燃料噴射量Fi(k−N)、パージ燃料量Fprg(k−N)、上流側目標空燃比abyfr(k−N)、及び補正前基本燃料噴射量Fbaseb(k−N)を使用して基本燃料噴射量補正係数KFを求めるように構成しているが、上流側目標空燃比abyfr(k−N)、及び補正前基本燃料噴射量Fbaseb(k−N)に代えて上流側目標空燃比abyfr(k)、及び補正前基本燃料噴射量Fbaseb(k)をそれぞれ使用して基本燃料噴射量補正係数KFを求めるようにしてもよい。
また、上記実施形態においては、基本燃料噴射量補正係数KFを求める際に使用されるストローク数N(遅れ時間Lに相当するストローク数)を、図5に示すテーブルMapN(Mc(k),NE)に基づいて求めているが、ストローク数Nを所定の一定値としてもよい。
また、上記実施形態においては、メインフィードバック制御において、上流側空燃比センサ66による今回の検出空燃比abyfs(k)から現時点からNストローク前の上流側目標空燃比abyfr(k−N)を減じた値(=abyfs(k)−abyfr(k−N))をハイパスフィルタ処理した値に基づいてメインフィードバック補正量DFimainを求めているが、現時点からNストローク前の筒内吸入空気量Mc(k−N)を現時点からNストローク前の上流側目標空燃比abyfr(k−N)で除した値である現時点からNストローク前の目標筒内燃料供給量Fcr(k−N)から、現時点からNストローク前の筒内吸入空気量Mc(k−N)を今回の検出空燃比abyfs(k)で除した値である現時点からNストローク前の実際の筒内燃料供給量Fc(k−N)を減じた値(=Fcr(k−N)−Fc(k−N))をハイパスフィルタ処理した値に基づいてメインフィードバック補正量DFimainを求めるように構成してもよい。
更には、メインフィードバック制御において、上流側空燃比センサ66による今回の検出空燃比abyfs(k)そのものをハイパスフィルタ処理した値に基づいてメインフィードバック補正量DFimainを求めてもよい。同様に、メインフィードバック制御において、上流側空燃比センサ66の出力値Vabyfsそのものをハイパスフィルタ処理した値に基づいてメインフィードバック補正量DFimainを求めてもよい。
また、上記実施形態においては、上流側空燃比センサ66の出力値Vabyfsに基づく上記「基本燃料噴射量の補正」及びメインフィードバック制御に加えて、下流側空燃比センサ67の出力値Voxsに基づくサブフィードバック制御が行われているが、係るサブフィードバック制御が省略されてもよい。
また、上記実施形態において、パージ燃料量Fprg(k)を取得するために使用されるエバポガスの燃料濃度Cevaは、例えば、以下の手法により取得され得る。エバポガスの燃料濃度Cevaを取得する際、基本燃料噴射量相当指令噴射量Fbasetは、パージ燃料量Fprgを考慮した上記(13)式、(14)式に代えて、パージ燃料量Fprgを考慮しない上記(15)式に従って算出され、このように算出された値Fbasetを用いて基本燃料噴射用補正係数KFが算出されるものとする。
この場合、筒内吸入空気量Mcが一定である場合、非パージ時とパージ時との間の値Fbaset(=KF・Fbaseb(k))の差は、「基本燃料噴射量の誤差」の影響が除外された、純粋なパージ燃料量Fprg(k)(以下、「パージ燃料量実際値Fprgact」と称呼する。)と一致する。また、筒内吸入空気量Mcが一定である場合、補正前基本燃料噴射量Fbaseb(k)は一定である。従って、非パージ時のKF値をKFnonpurge、パージ時のKF値をKFpurgeとすると、パージ燃料量実際値Fprgactは下記(19)式にて表すことができる。
Fprgact=(KFnonpurge−KFpurge)・Fbaseb(k) ・・・(19)
一方、上記(8)式においてFprg(k)をFprgactに置き換えた式と、上記(9)式と、からエバポガス量Gevaを消去してエバポガスの燃料濃度Cevaについて解けば、下記(20)式が得られる。
Ceva=((1−PGR)/(Mc(k)・PGR))・Fprgact ・・・(20)
従って、例えば、パージ時の定常運転状態において、KFpurgeの値を現時点での基本燃料噴射量補正係数KFの値に、KFnonpurgeの値を、現時点での筒内吸入空気量Mc(k)に対応する上記基本燃料噴射量補正係数記憶値KFmemに設定することにより上記(19)式、(20)式に従ってエバポガスの燃料濃度Cevaが取得され得る。
10…内燃機関、25…燃焼室、39…インジェクタ、48…パージ流路、49…パージ制御弁(VSV)、51…エキゾーストマニホールド、53…三元触媒(第1触媒)、66…上流側空燃比センサ、67…下流側空燃比センサ、70…電気制御装置、71…CPU、74…バックアップRAM