(57)【要約】【課題】  触媒上流側空燃比センサの出力値をハイパスフィルタ処理した後の値と、触媒下流側空燃比センサの出力値とに基づく空燃比制御において、機関の空燃比を目標空燃比に向けて制御しつつ基本燃料噴射量の誤差を迅速に補償すること。【解決手段】  この空燃比制御装置は、燃焼室内に吸入される筒内吸入空気量が等しいとの仮定のもと、指令最終燃料噴射量Fi（Fi(K-M)）と検出空燃比abyfs(k)の積は、機関の実際の空燃比を目標空燃比abyfr(k)とするための目標指令基本燃料噴射量Fbasetと目標空燃比abyfr(k)の積に等しくなる、という関係からFbaset(＝(abyfs(k)/abyfr(k))・Fi(k-M))を求め、同Fbasetを補正前指令基本燃料噴射量Fbaseb(k)で除することで基本燃料噴射量補正係数KF(＝Fbaset/Fbaseb(k))を求める。このKFを次回の補正前指令基本燃料噴射量Fbasebに乗じることで次回の補正前指令基本燃料噴射量Fbasebを補正していく。【選択図】  図５
2005273524.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも上流の前記排気通路に配設された上流側空燃比センサと、
前記触媒よりも下流の前記排気通路に配設された下流側空燃比センサと、
指示に応じて燃料を噴射する燃料噴射手段と、
を備えた内燃機関に適用される内燃機関の空燃比制御装置であって、
前記内燃機関の運転状態に基づいて推定される筒内吸入空気量から目標空燃比を得るための燃料量を指令基本燃料噴射量として取得する指令基本燃料噴射量取得手段と、
前記上流側空燃比センサの出力値と所定の上流側目標値との差に基づく値を所定のハイパスフィルタ処理した後の値、又は、前記上流側空燃比センサの出力値を所定のハイパスフィルタ処理した後の値、に基づいてメインフィードバック補正量を算出するメインフィードバック補正量算出手段と、
前記下流側空燃比センサの出力値と所定の下流側目標値とに基づいてサブフィードバック補正量を算出するサブフィードバック補正量算出手段と、
前記指令基本燃料噴射量の燃料の噴射指示を受けたときに前記燃料噴射手段が実際に噴射する燃料量が前記機関に供給される混合気の実際の空燃比を前記目標空燃比とするために必要な量となるように、同指令基本燃料噴射量を補正する指令基本燃料噴射量補正手段と、
前記補正された指令基本燃料噴射量を前記メインフィードバック補正量と前記サブフィードバック補正量とで補正することで指令最終燃料噴射量を算出する指令最終燃料噴射量算出手段と、
前記指令最終燃料噴射量の燃料の噴射指示を前記燃料噴射手段に対して行うことで前記機関に供給される混合気の空燃比をフィードバック制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置において、
前記指令基本燃料噴射量補正手段は、
前記上流側空燃比センサの出力値と、前記指令最終燃料噴射量と、前記目標空燃比と、前記指令基本燃料噴射量とに基づいて指令基本燃料噴射量補正用のパラメータ値を算出するとともに、同パラメータ値を用いて同指令基本燃料噴射量を補正するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項２に記載の内燃機関の空燃比制御装置において、
前記指令基本燃料噴射量補正手段により算出される前記指令基本燃料噴射量補正用のパラメータ値には所定のローパスフィルタ処理がなされている内燃機関の空燃比制御装置。
【請求項４】
請求項２又は請求項３に記載の内燃機関の空燃比制御装置であって、
燃料の噴射指示から、同噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比が前記上流側空燃比センサの出力値として現れるまでの遅れ時間を取得する遅れ時間取得手段を更に備え、
前記指令基本燃料噴射量補正手段は、
前記指令基本燃料噴射量補正用のパラメータ値を算出する際、少なくとも前記指令最終燃料噴射量として前記遅れ時間だけ前の時点での噴射指示に係わる値を使用するように構成された内燃機関の空燃比制御装置。
【請求項５】
請求項４に記載の内燃機関の空燃比制御装置において、
前記遅れ時間取得手段は、
前記内燃機関の運転状態に応じて前記遅れ時間を変更するように構成された内燃機関の空燃比制御装置。
【請求項６】
請求項２乃至請求項５に記載の内燃機関の空燃比制御装置であって、
前記指令基本燃料噴射量補正手段により算出された前記指令基本燃料噴射量補正用のパラメータ値を記憶する記憶手段を更に備えた内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気通路に配設された触媒（三元触媒）の上流側及び下流側の排気通路にそれぞれ空燃比センサを備え、各空燃比センサの出力値に基づいて機関の空燃比をフィードバック制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、この種の空燃比制御装置が広く知られている。一般に、係る装置は、内燃機関の排気通路に配設された触媒よりも上流側及び下流側の排気通路にそれぞれ上流側空燃比センサ、及び下流側空燃比センサを介装していて、下流側空燃比センサの出力値と所定の下流側目標値との差に基づいて（例えば、差を比例・積分・微分処理（ＰＩＤ処理）して）サブフィードバック補正量を算出するとともに、上流側空燃比センサの出力値と所定の上流側目標値との差に基づいて（例えば、差を比例・積分処理（ＰＩ処理）して）メインフィードバック補正量を算出する。そして、係る装置は、機関の運転状態（例えば、アクセル開度、エンジン回転速度等）に基づいて推定される筒内吸入空気量から取得される、目標空燃比を得るための燃料量（指令基本燃料噴射量）を、上記メインフィードバック補正量と上記サブフィードバック補正量とに基づいて補正して得られる指令最終燃料噴射量を計算するとともに、同指令最終燃料噴射量の燃料の噴射指示をインジェクタに対して行うことで機関に供給される混合気の空燃比をフィードバック制御するようになっている。
【０００３】
ところで、触媒（三元触媒）は、通常、流入する排ガスの空燃比がリーン空燃比のとき同排ガス中の窒素酸化物（ＮＯｘ）を還元して同窒素酸化物から奪った酸素を内部に貯蔵するとともに同流入する排ガスの空燃比がリッチ空燃比のとき同貯蔵している酸素により同排ガス中のＨＣ，ＣＯ等の未燃成分を酸化する所謂酸素吸蔵機能を有している。従って、触媒上流の排ガスの空燃比の変動における比較的周波数の高い高周波成分、及び比較的周波数が低くて振幅（理論空燃比からの偏移量）が比較的小さい低周波成分は触媒が有する酸素吸蔵機能により完全に吸収され得ることにより触媒下流の排ガスの空燃比の変動として現れることはない。
【０００４】
一方、触媒上流の排ガスの空燃比の変動における比較的周波数が低くて振幅が比較的大きい低周波数成分は前記触媒の酸素吸蔵機能では完全には吸収されず、少し遅れて触媒下流の排ガスの空燃比の変動として現れる。この結果、上流側空燃比センサの出力値と下流側空燃比センサの出力値とが理論空燃比に対して互いに逆方向に偏移した空燃比を示す値となる場合が発生する。この場合、メインフィードバック制御（メインフィードバック補正量）に基づく機関の空燃比制御とサブフィードバック制御（サブフィードバック補正量）に基づく機関の空燃比制御とが互いに干渉することになるので良好な機関の空燃比制御を行うことができない。
【０００５】
以上のことから、上流側空燃比センサの出力値の変動における各周波数成分のうち触媒下流の空燃比の変動として現れ得る程度の周波数成分（即ち、所定の周波数以下の低周波数成分）をカットした後の同上流側空燃比センサの出力値をメインフィードバック制御に使用すれば、前記機関の空燃比制御の干渉が発生することを回避することができる。
【０００６】
このような知見に基づき、下記特許文献１に記載のエンジン制御装置（空燃比制御装置）は、上流側空燃比センサの出力値をハイパスフィルタ処理した後の値と、下流側空燃比センサの出力値（この例では、同出力値をローパスフィルタ処理した後の値）とに基づいて空燃比制御を実行するようになっている。これによれば、上述した機関の空燃比制御の干渉が発生することを回避できるとともに、触媒下流の空燃比の変動として現れ得る程度の所定の周波数以下の空燃比の変動に対する空燃比制御（実質的な空燃比制御）はサブフィードバック制御により確実に行われ得る。また、上流側空燃比センサの出力値の変動における前記所定の周波数以上の高周波数成分はハイパスフィルタを通過するからハイパスフィルタ処理した後の値として現れる。従って、内燃機関が過渡運転状態にあって排ガスの空燃比が上記所定の周波数以上の高周波数で大きく変動するような場合、同所定の周波数以上の空燃比の変動に対する空燃比制御（即ち、過渡運転状態における空燃比の急変に対する補償）はメインフィードバック制御により迅速、且つ確実に行われ得る。
【特許文献１】特開平５−１８７２９７号公報
【０００７】
ところで、一般に、指令基本燃料噴射量を取得するために推定される筒内吸入空気量と実際の筒内吸入空気量との差、燃料を噴射するインジェクタに対する指令燃料噴射量と実際の燃料噴射量の差（以下、これらを「基本燃料噴射量の誤差」と総称する。）が不可避的に発生する。係る基本燃料噴射量の誤差を補償しつつ機関に供給される混合気の空燃比を目標空燃比に収束させる（具体的には、空燃比センサの出力値と前記所定の目標値との定常偏差を「０」にする）ためには、上記メインフィードバック制御及び前記サブフィードバック制御の少なくとも一方において、空燃比センサの出力値と前記所定の目標値との偏差の時間積分値に基づいてフィードバック補正量を算出する処理（即ち、積分処理（Ｉ処理））が実行される必要がある。
【０００８】
ところが、ハイパスフィルタ処理は微分処理（Ｄ処理）と同等の機能を達成する処理である。従って、上記文献に記載の装置においては、メインフィードバック制御が上記積分処理を含んだ処理（例えば、比例・積分処理（ＰＩ処理））を実行するものであっても、同メインフィードバック制御において実質的に上記積分処理が実行され得ない。従って、この場合、サブフィードバック制御において上記積分処理が実行される必要がある。
【０００９】
しかしながら、上述した触媒の酸素吸蔵機能の影響により機関に供給される混合気の空燃比の変化は少し遅れて触媒下流の排ガスの空燃比の変化として現れる。よって、上記基本燃料噴射量の誤差が急に増大する場合においては、サブフィードバック制御のみでは同基本燃料噴射量の誤差を直ちに補償することができず、その結果、一時的にエミッションの排出量が増大する場合が発生するという問題がある。
【発明の開示】
【００１０】
従って、本発明の目的は、内燃機関の排気通路に配設された触媒の上流側及び下流側の排気通路にそれぞれ上流側空燃比センサ及び下流側空燃比センサを備え、上流側空燃比センサの出力値をハイパスフィルタ処理した後の値と、下流側空燃比センサの出力値とに基づいて機関に供給される混合気の空燃比をフィードバック制御する内燃機関の空燃比制御装置において、機関に供給される混合気の空燃比を目標空燃比に向けて制御しつつ基本燃料噴射量の誤差を迅速に補償することができるものを提供することにある。
【００１１】
本発明の特徴は、触媒と、上流側空燃比センサと、下流側空燃比センサと、指示に応じて燃料を噴射する燃料噴射手段（例えば、インジェクタ）とを備えた内燃機関に適用される内燃機関の空燃比制御装置が、前記内燃機関の運転状態（例えば、アクセル開度、エンジン回転速度等）に基づいて推定される筒内吸入空気量から目標空燃比を得るための燃料量を指令基本燃料噴射量として取得する指令基本燃料噴射量取得手段と、前記上流側空燃比センサの出力値と所定の上流側目標値との差に基づく値を所定のハイパスフィルタ処理した後の値、又は、前記上流側空燃比センサの出力値を所定のハイパスフィルタ処理した後の値、に基づいてメインフィードバック補正量を算出するメインフィードバック補正量算出手段と、前記下流側空燃比センサの出力値と所定の下流側目標値とに基づいてサブフィードバック補正量を算出するサブフィードバック補正量算出手段と、前記指令基本燃料噴射量の燃料の噴射指示を受けたときに前記燃料噴射手段が実際に噴射する燃料量が前記機関に供給される混合気の実際の空燃比を前記目標空燃比とするために必要な量となるように、同指令基本燃料噴射量を補正する指令基本燃料噴射量補正手段と、前記補正された指令基本燃料噴射量を前記メインフィードバック補正量と前記サブフィードバック補正量とで補正することで指令最終燃料噴射量を算出する指令最終燃料噴射量算出手段と、前記指令最終燃料噴射量の燃料の噴射指示を前記燃料噴射手段に対して行うことで前記機関に供給される混合気の空燃比をフィードバック制御する空燃比制御手段とを備えたことにある。
【００１２】
ここにおいて、前記所定の上流側目標値、及び前記所定の下流側目標値は、共に前記目標空燃比に相当する値であることが好適であり、また、目標空燃比は、機関の暖機運転中等の特殊な場合を除いて理論空燃比に設定されることが好ましい。また、前記サブフィードバック補正量算出手段は、前記下流側空燃比センサの出力値と前記所定の下流側目標値との差に基づく値に基づいてサブフィードバック補正量を算出するように構成されることが好適である。
【００１３】
ここで、「センサの出力値と目標値との差に基づく値」は、例えば、センサの出力値と目標値との差、センサの出力値に相当する検出空燃比（実空燃比）と目標値に相当する目標空燃比との差、筒内吸入空気量をセンサの出力値に相当する検出空燃比で除した値である実際の筒内燃料供給量と同筒内吸入空気量を目標値に相当する目標空燃比で除した値である目標筒内燃料供給量との差であって、これらに限定されない。
【００１４】
これによれば、指令基本燃料噴射量の燃料の噴射指示を受けたときに燃料噴射手段が実際に噴射する燃料量が機関に供給される混合気の実際の空燃比を目標空燃比とするために必要な量となるように、同指令基本燃料噴射量が補正される。換言すれば、メインフィードバック補正量、及びサブフィードバック補正量の各値に影響されることなく上記基本燃料噴射量の誤差が直ちに補償され得る。
【００１５】
そして、このように基本燃料噴射量の誤差が補償された後の値となっている上記補正された指令基本燃料噴射量に基づいて算出された指令最終燃料噴射量の燃料の噴射指示が上記燃料噴射手段に対して行われる。従って、例えば、上記基本燃料噴射量の誤差が急に増大するような場合においても、機関に供給される混合気の空燃比を目標空燃比に向けて制御しつつ基本燃料噴射量の誤差が迅速に補償され得、この結果、基本燃料噴射量の誤差の増大によるエミッションの増大を抑制することができる。
【００１６】
この場合、前記指令基本燃料噴射量補正手段は、前記上流側空燃比センサの出力値と、前記指令最終燃料噴射量と、前記目標空燃比と、前記指令基本燃料噴射量とに基づいて指令基本燃料噴射量補正用のパラメータ値を算出するとともに、同パラメータ値を用いて同指令基本燃料噴射量を補正するように構成されることが好適である。
【００１７】
一般に、筒内（燃焼室内）に吸入される筒内吸入空気量が等しいという仮定のもと、燃料噴射量と、機関に供給される混合気の空燃比（従って、排ガスの空燃比）の積は一定となる。従って、上記指令最終燃料噴射量と、上流側空燃比センサの出力値に相当する空燃比（以下、「検出空燃比」と云うこともある。）の積は、機関に供給される混合気の実際の空燃比を目標空燃比とするために必要な指令基本燃料噴射量（燃料噴射手段への噴射指令値。以下、「目標指令基本燃料噴射量」と云うこともある。）と、目標空燃比の積に等しい、という関係が成立する。
【００１８】
従って、既知である指令最終燃料噴射量、検出空燃比、及び目標空燃比の各値と、上記関係とに基づいて上記目標指令基本燃料噴射量を算出することができる。上記目標指令基本燃料噴射量が算出できれば、この目標指令基本燃料噴射量と、既知である指令基本燃料噴射量（即ち、指令基本燃料噴射量取得手段により取得された値そのもの）との比較結果に基づいて指令基本燃料噴射量補正用のパラメータ値（例えば、補正係数）を算出することができる。
【００１９】
このようにして算出され得る指令基本燃料噴射量補正用のパラメータ値は、指令基本燃料噴射量の燃料の噴射指示を受けたときに燃料噴射手段が実際に噴射する燃料量が機関に供給される混合気の実際の空燃比を目標空燃比とするために必要な量となるように指令基本燃料噴射量を補正するための値（即ち、指令基本燃料噴射量を上記目標指令基本燃料噴射量に一致させるための値）となる。従って、上記構成のように、係る指令基本燃料噴射量補正用のパラメータ値を用いて指令基本燃料噴射量を補正するように構成すれば、簡易な計算で、且つ精度良く、指令基本燃料噴射量を目標指令基本燃料噴射量に一致するように補正することができ、この結果、機関に供給される混合気の空燃比を目標空燃比に向けて制御しつつ基本燃料噴射量の誤差を迅速、且つ精度良く補償することができる。
【００２０】
」
上記指令基本燃料噴射量補正用のパラメータ値を用いて指令基本燃料噴射量が補正される場合、前記指令基本燃料噴射量補正手段により算出される前記指令基本燃料噴射量補正用のパラメータ値には所定のローパスフィルタ処理がなされていることが好ましい。機関が過渡運転状態にある場合、排ガスの空燃比、前記指令基本燃料噴射量取得手段により取得される指令基本燃料噴射量、及び前記指令最終燃料噴射量算出手段により算出される指令最終燃料噴射量が別個独立に所定の周波数以上の高周波数で大きく変動し得る。
【００２１】
このような場合、上記関係が維持され得なくなって上記指令基本燃料噴射量補正用のパラメータ値が、指令基本燃料噴射量を目標指令基本燃料噴射量に一致させるための値と異なる値として算出される可能性がある。これに対し、上記のように、指令基本燃料噴射量補正用のパラメータ値に所定のローパスフィルタ処理を施すことにより、上記高周波数の変動による影響がカットされ得、この結果、機関が過渡運転状態にある場合において、指令基本燃料噴射量補正用のパラメータ値が、指令基本燃料噴射量を目標指令基本燃料噴射量に一致させるための値としてより一層精度良く算出され得る。
【００２２】
また、上記本発明に係る空燃比制御装置においては、上記指令基本燃料噴射量補正用のパラメータ値を用いて指令基本燃料噴射量が補正される場合、燃料の噴射指示から、同噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比が前記上流側空燃比センサの出力値として現れるまでの遅れ時間を取得する遅れ時間取得手段を更に備え、前記指令基本燃料噴射量補正手段は、前記指令基本燃料噴射量補正用のパラメータ値を算出する際、少なくとも前記指令最終燃料噴射量として前記遅れ時間だけ前の時点での噴射指示に係わる値を使用するように構成されることが好適である。
【００２３】
一般に、燃料の噴射（噴射指示）は、吸気行程中（或いは吸気行程よりも前の時点）にて実行され、噴射された燃料は、その後に到来する圧縮上死点近傍の時点で燃焼室内にて着火（燃焼）せしめられる。この結果、発生する排ガスは、排気弁を介して燃焼室から排気通路へと排出され、その後、排気通路内を移動していくことで上流側空燃比センサ（の検出部）に到達する。更に、上流側空燃比センサの検出部に到達した排ガスの空燃比の変化が同センサの出力値の変化として現れるまでには所定の時間を要する。
【００２４】
以上のことから、燃料の噴射指示から、同噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比が前記上流側空燃比センサの出力値として現れるまでには、燃焼行程に係わる遅れ（行程遅れ）、排気通路内での排ガスの移動に係わる遅れ（輸送遅れ）、及び上流側空燃比センサの応答に係わる遅れ（応答遅れ）による遅れ時間が必要である。換言すれば、上流側空燃比センサの出力値は、上記遅れ時間前に実行された燃料の噴射指示に基づいて発生した排ガスの空燃比を表す値となる。
【００２５】
一方、上述した行程遅れ、及び輸送遅れに係る時間は、例えば、噴射時期、点火時期、機関の諸元、エンジン回転速度、筒内吸入空気量、排気通路の断面積等に基づいて取得することができる。また、応答遅れに係る時間は、上流側空燃比センサの応答特性を予め実験等を通して取得しておくことにより取得することができる。従って、上記遅れ時間取得手段は、上記行程遅れ、輸送遅れ、及び応答遅れによる上記遅れ時間を取得することができる。
【００２６】
以上のことから、上記のように、指令基本燃料噴射量補正用のパラメータ値を算出する際、（上流側空燃比センサの出力値として現時点での値を使用するとともに、）少なくとも指令最終燃料噴射量として前記遅れ時間だけ前の時点での噴射指示に係わる値を使用するように構成すれば、現時点での上流側空燃比センサの出力値が表す空燃比を有する排ガスの発生に係わる燃料噴射指示がなされた時点と、指令基本燃料噴射量補正用のパラメータ値の算出に使用される指令最終燃料噴射量に基づく燃料噴射指示の時点とが一致し得る。従って、上記パラメータ値が、指令基本燃料噴射量を目標指令基本燃料噴射量に一致させるための値としてより一層精度良く算出され得る。
【００２７】
この場合、前記遅れ時間取得手段は、前記内燃機関の運転状態に応じて前記遅れ時間を変更するように構成されることが好適である。上述したように、上記行程遅れ、及び輸送遅れに係る時間は、例えば、エンジン回転速度、筒内吸入空気量等、機関の運転状態に応じて変化する。従って、上記構成により、内燃機関の運転状態にかかわらず上記遅れ時間を正確に取得することができるから、現時点での上流側空燃比センサの出力値が表す空燃比を有する排ガスの発生に係わる燃料噴射指示がなされた時点と、指令基本燃料噴射量補正用のパラメータ値の算出に使用される指令最終燃料噴射量、及び指令基本燃料噴射量に基づく燃料噴射指示の時点とがより精度良く一致する。この結果、上記パラメータ値が、指令基本燃料噴射量を目標指令基本燃料噴射量に一致させるための値としてより一層精度良く算出され得る。
【００２８】
また、上記本発明に係る空燃比制御装置においては、上記指令基本燃料噴射量補正用のパラメータ値を用いて指令基本燃料噴射量が補正される場合、前記指令基本燃料噴射量補正手段により算出された前記指令基本燃料噴射量補正用のパラメータ値を記憶する記憶手段を更に備えることが好適である。
【００２９】
一般に、機関の暖機運転中であって上流側空燃比センサが十分に活性化されていない場合、上流側空燃比センサが故障している場合等（以下、「上流側空燃比センサの出力値が正常な値とならない場合」と総称する。）においては、同上流側空燃比センサの出力値は排ガスの空燃比を精度良く表す値とならない。このような場合、上流側空燃比センサの出力値を用いて計算される指令基本燃料噴射量補正用のパラメータ値も正確に計算され得ない。従って、このような場合において計算される上記パラメータ値は指令基本燃料噴射量の補正に使用されるべきでない。
【００３０】
他方、基本燃料噴射量の誤差量は或る程度の期間内においては大きく変化することはないと考えることができる。以上のことから、上記のように、指令基本燃料噴射量補正用のパラメータ値を記憶する記憶手段を更に備えるように構成すれば、例えば、上流側空燃比センサの出力値が正常な値となる場合における同出力値を使用して計算された指令基本燃料噴射量補正用のパラメータ値を逐次、記憶手段に記憶・更新していくことができる。
【００３１】
そうすると、上流側空燃比センサの出力値が正常な値とならない場合であっても、上記記憶手段により予め記憶されている上記パラメータ値を使用して指令基本燃料噴射量の補正を実行することにより、同指令基本燃料噴射量を或る程度正確に目標指令基本燃料噴射量に一致させることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００３３】
（第１実施形態）
図１は、第１実施形態による空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００３４】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより同クランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００３５】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともに同インテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００３６】
吸気系統４０は、吸気ポート３１に連通し同吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、スロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａ、スワールコントロールバルブ（以下、「ＳＣＶ」と称呼する。）４４、及びＤＣモータからなるＳＣＶアクチュエータ４４ａを備えている。
【００３７】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１（実際には、各排気ポート３４に連通した各々のエキゾーストマニホールド５１が集合した集合部）に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された上流側の三元触媒５３（上流側触媒コンバータ、又はスタート・キャタリティック・コンバータとも云うが、以下「第１触媒５３」と称呼する。）、及びこの第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側の三元触媒５４（車両のフロア下方に配設されるため、アンダ・フロア・キャタリティック・コンバータとも云うが、以下「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。
【００３８】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路（本例では、上記各々のエキゾーストマニホールド５１が集合した集合部）に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、及びアクセル開度センサ６８を備えている。
【００３９】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量に応じた電圧Vgを出力するようになっている。かかるエアフローメータ６１の出力Vgと、計測された吸入空気量（流量）Ｇａとの関係は、図２に示したとおりである。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００４０】
上流側空燃比センサ６６は、限界電流式の酸素濃度センサであり、図３に示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧である出力値vabyfsを出力するようになっていて、特に、空燃比が理論空燃比であるときには出力値vabyfsは上流側目標値vstoichになる。図３から明らかなように、上流側空燃比センサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。
【００４１】
下流側空燃比センサ６７は、起電力式（濃淡電池式）の酸素濃度センサであり、図４に示したように、理論空燃比近傍において急変する電圧である出力値Voxsを出力するようになっている。より具体的に述べると、下流側空燃比センサ６７は、空燃比が理論空燃比よりもリーンのときは略０．１（Ｖ）、空燃比が理論空燃比よりもリッチのときは略０．９（Ｖ）、及び空燃比が理論空燃比のときは０．５（Ｖ）の電圧を出力するようになっている。アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、同アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００４２】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、同ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、スロットル弁アクチュエータ４３ａ、及びＳＣＶアクチュエータ４４ａに駆動信号を送出するようになっている。
【００４３】
（空燃比フィードバック制御の概要）
次に、上記のように構成された空燃比制御装置が行う機関の空燃比のフィードバック制御の概要について説明する。
【００４４】
第１触媒５３（第２触媒５４も同様である。）は、同第１触媒５３に流入するガスの空燃比が理論空燃比であるときに、ＨＣ,ＣＯを酸化するとともにＮＯｘを還元し、これらの有害成分を高い効率で浄化する。また、第１触媒５３は、酸素を吸蔵・放出する機能（酸素吸蔵機能、酸素吸蔵・放出機能）を有し、この酸素吸蔵・放出機能により、空燃比が理論空燃比からある程度まで偏移したとしても、ＨＣ,ＣＯ、及びＮＯｘを浄化することができる。即ち、機関に供給される混合気の空燃比（以下、「機関の空燃比」と云うこともある。）の空燃比がリーンとなって第１触媒５３に流入するガスにＮＯｘが多量に含まれると、第１触媒５３はＮＯｘから酸素分子を奪って同酸素分子を吸蔵するとともに同ＮＯｘを還元し、これによりＮＯｘを浄化する。また、機関の空燃比がリッチになって第１触媒５３に流入するガスにＨＣ,ＣＯが多量に含まれると、三元触媒はこれらに吸蔵している酸素分子を与えて（放出して）酸化し、これによりＨＣ,ＣＯを浄化する。
【００４５】
従って、第１触媒５３が連続的に流入する多量のＨＣ,ＣＯを効率的に浄化するためには、同第１触媒５３が酸素を多量に貯蔵していなければならず、逆に連続的に流入する多量のＮＯｘを効率的に浄化するためには、同第１触媒５３が酸素を十分に貯蔵し得る状態になければならないことになる。以上のことから、第１触媒５３の浄化能力は、同第１触媒５３が貯蔵し得る最大の酸素量（最大酸素吸蔵量）に依存する。
【００４６】
一方、第１触媒５３のような三元触媒は燃料中に含まれる鉛や硫黄等による被毒、或いは触媒に加わる熱により劣化し、これに伴い最大酸素吸蔵量が次第に低下してくる。このように最大酸素吸蔵量が低下した場合であっても、エミッションの排出量を継続的に抑制するには、第１触媒５３から排出されるガスの空燃比（従って、第１触媒５３に流入するガスの平均空燃比）が、理論空燃比に極めて近い状態となるように制御する必要がある。
【００４７】
そこで、本実施形態の空燃比制御装置は、下流側空燃比センサ６７の出力値が下流側目標空燃比としての理論空燃比に対応する下流側目標値Voxsref（０．５（Ｖ））となるように、下流側空燃比センサ６７の出力値Voxs（即ち、第１触媒下流の空燃比）に応じて機関の空燃比を制御する。
【００４８】
より具体的に述べると、この空燃比制御装置（以下、「本装置」と云うこともある。）は、機能ブロック図である図５に示したように、（Ａ１〜Ａ１７の各手段等の一部である）Ａ１〜Ａ９の各手段等を含んで構成されている。以下、図５を参照しながら各手段について説明していく。
【００４９】
<補正後指令基本燃料噴射量の算出>
先ず、筒内吸入空気量算出手段Ａ１は、エアフローメータ６１が計測している吸入空気流量Ｇａと、クランクポジションセンサ６４の出力に基づいて得られるエンジン回転速度NEと、ＲＯＭ７２が記憶しているテーブルMAPMcとに基づき今回の吸気行程を迎える気筒の吸入空気量である筒内吸入空気量Mc(k)を求める。ここで、添え字の（k）は、今回の吸気行程に対する値であることを示している（以下、他の物理量についても同様。）。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５０】
上流側目標空燃比設定手段Ａ２は、内燃機関１０の運転状態であるエンジン回転速度NE、及びスロットル弁開度TA等に基づいて所定の上流側目標値に相当する上流側目標空燃比abyfr(k)を決定する。この上流側目標空燃比abyfr(k)は、例えば、内燃機関１０の暖機終了後においては、特殊な場合を除き理論空燃比に設定されている。また、上流側目標空燃比abyfrは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５１】
補正前指令基本燃料噴射量算出手段Ａ３は、筒内吸入空気量算出手段Ａ１により求められた筒内吸入空気量Mc(k)を上流側目標空燃比設定手段Ａ２により設定された上流側目標空燃比abyfr(k)で除することにより、機関の空燃比を同上流側目標空燃比abyfr(k)とするための今回の吸気行程に対する目標筒内燃料供給量Fcr(k)（即ち、今回の補正前指令基本燃料噴射量Fbaseb(k)）を求める。目標筒内燃料供給量Fcr、及び補正前指令基本燃料噴射量Fbasebは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５２】
補正後指令基本燃料噴射量算出手段Ａ４は、補正前指令基本燃料噴射量算出手段Ａ３により求められた今回の補正前指令基本燃料噴射量Fbaseb(k)に後述する基本燃料噴射量補正係数設定手段Ａ１７により求められている基本燃料噴射量補正係数KFを乗じることで補正後指令基本燃料噴射量Fbaseを求める。基本燃料噴射量補正係数設定手段Ａ１７については後に詳述する。
【００５３】
このように、本装置は、筒内吸入空気量算出手段Ａ１、上流側目標空燃比設定手段Ａ２、補正前指令基本燃料噴射量算出手段Ａ３、補正後指令基本燃料噴射量算出手段Ａ４、及び基本燃料噴射量補正係数設定手段Ａ１７を利用して、補正後指令基本燃料噴射量Fbaseを求める。この補正後指令基本燃料噴射量Fbaseは、後述するように、機関に供給される混合気の実際の空燃比を今回の目標空燃比abyfr(k)とするためにインジェクタ３９に指示すべき指令燃料噴射量である。
【００５４】
<指令最終燃料噴射量の算出>
指令最終燃料噴射量算出手段Ａ５は、上記補正後指令基本燃料噴射量Fbase(k)に後述するメインフィードバック補正量DFimain、及びサブフィードバック補正量DFisubを加えることで、下記(1)式に基づいて今回の指令最終燃料噴射量Fi(k)を求める。指令最終燃料噴射量Fbaseは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５５】
Fi(k)＝Fbase(k)＋DFimain＋DFisub  ・・・(1)
【００５６】
本装置は、このようにして、指令最終燃料噴射量算出手段Ａ５により、補正後指令基本燃料噴射量Fbase(k)をメインフィードバック補正量DFimainとサブフィードバック補正量DFisubとに基づいて補正することにより得られる指令最終燃料噴射量Fi(k)の燃料の噴射指示を今回の吸気行程を迎える気筒についてのインジェクタ３９に対して行う。この結果、係るインジェクタ３９から実際に噴射される燃料量には、上述した「基本燃料噴射量の誤差」が含まれている。
【００５７】
<サブフィードバック補正量の算出>
先ず、下流側目標値設定手段Ａ６は、上述した上流側目標空燃比設定手段Ａ２と同様、内燃機関１０の運転状態であるエンジン回転速度NE、及びスロットル弁開度TA等に基づいて下流側目標空燃比に対応する下流側目標値（所定の下流側目標値）Voxsrefを決定する。この下流側目標値Voxsrefは、例えば、内燃機関１０の暖機終了後においては、特殊な場合を除き理論空燃比に対応する値である０．５（Ｖ）に設定されている（図４を参照。）。また、本例では、下流側目標値Voxsrefは、同下流側目標値Voxsrefに対応する下流側目標空燃比が上述した上流側目標空燃比abyfr(k)と常時一致するように設定される。
【００５８】
出力偏差量算出手段Ａ７は、下記(2)式に基づいて、下流側目標値設定手段Ａ６により設定されている現時点（具体的には、今回のFi(k)の噴射指示開始時点）での下流側目標値Voxsrefから同現時点での下流側空燃比センサ６７の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
【００５９】
DVoxs＝Voxsref-Voxs  ・・・(2)
【００６０】
ローパスフィルタＡ８は、その特性をラプラス演算子sを用いて表した下記(3)式に示すように、一次のフィルタである。下記(3)式において、τ1は時定数である。ローパスフィルタＡ８は、周波数（１／τ1）以上の高周波数成分が通過することを実質的に禁止する。ローパスフィルタＡ８は、前記出力偏差量算出手段Ａ７により求められた前記出力偏差量DVoxsの値を入力するとともに、下記(3)式に従って同出力偏差量DVoxsの値をローパスフィルタ処理した後の値であるローパスフィルタ通過後出力偏差量DVoxslowを出力する。
【００６１】
１／（１+τ1・s）  ・・・(3)
【００６２】
ＰＩＤコントローラＡ９は、ローパスフィルタＡ８の出力値であるローパスフィルタ通過後出力偏差量DVoxslowを比例・積分・微分処理（ＰＩＤ処理）することで、下記(4)式に基づいてサブフィードバック補正量DFisubを求める。
【００６３】
DFisub＝Kp・DVoxslow+Ki・SDVoxslow＋Kd・DDVoxslow  ・・・(4)
【００６４】
上記(4)式において、Kpは予め設定された比例ゲイン（比例定数）、Kiは予め設定された積分ゲイン（積分定数）、Kdは予め設定された微分ゲイン（微分定数）である。また、SDVoxslowはローパスフィルタ通過後出力偏差量DVoxslowの時間積分値であり、DDVoxslowはローパスフィルタ通過後出力偏差量DVoxslowの時間微分値である。
【００６５】
このようにして、本装置は、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの偏差である出力偏差量DVoxs（実際には、ローパスフィルタ通過後出力偏差量DVoxslow）に基づいて、サブフィードバック補正量DFisubを求め、上記補正後指令基本燃料噴射量Fbase(k)に同サブフィードバック補正量DFisubを加えることで、後述するメインフィードバック制御による(前記メインフィードバック補正量DFimainによる)補正後指令基本燃料噴射量Fbase(k)の補正とは独立に同補正後指令基本燃料噴射量Fbase(k)を補正する。
【００６６】
例えば、機関の平均的な空燃比がリーンであるために下流側空燃比センサ６７の出力値Voxsが理論空燃比よりもリーンである空燃比に対応した値を示すと、出力偏差量算出手段Ａ７により求められる出力偏差量DVoxsが正の値となるので（図４を参照。）、ＰＩＤコントローラＡ９にて求められるサブフィードバック補正量DFisubは正の値となる。これにより、指令最終燃料噴射量算出手段Ａ５にて求められる指令最終燃料噴射量Fi(k)は補正後指令基本燃料噴射量Fbase(k)よりも大きくなって、機関の空燃比がリッチとなるように制御される。
【００６７】
反対に、機関の平均的な空燃比がリッチであるために下流側空燃比センサ６７の出力値Voxsが理論空燃比よりもリッチである空燃比に対応した値を示すと、出力偏差量算出手段Ａ７により求められる出力偏差量DVoxsが負の値となるので、ＰＩＤコントローラＡ９にて求められるサブフィードバック補正量DFisubは負の値となる。これにより、指令最終燃料噴射量算出手段Ａ５にて求められる指令最終燃料噴射量Fi(k)は補正後指令基本燃料噴射量Fbase(k)よりも小さくなって、機関の空燃比がリーンとなるように制御される。
【００６８】
また、ＰＩＤコントローラＡ９は積分項Ki・SDVoxslowを含んでいるので、定常状態では出力偏差量DVoxsがゼロになることが保証される。換言すれば、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの定常偏差がゼロになる。また、定常状態では、出力偏差量DVoxsがゼロになることで比例項Kp・DVoxslow、微分項Kd・DDVoxslowが共にゼロとなるから、サブフィードバック補正量DFiは積分項Ki・SDVoxslowの値と等しくなる。この値は、下流側空燃比センサ６７の出力値Voxsと下流側目標値Voxsrefとの偏差の時間積分値に基づく値である。
【００６９】
ＰＩＤコントローラＡ９においてかかる積分処理が実行されることにより、上述した基本燃料噴射量の誤差が補償され得、且つ、定常状態において第１触媒５３の下流の空燃比（従って、機関の空燃比）が前記下流側目標値Voxsrefに対応する下流側目標空燃比（即ち、理論空燃比）に収束し得る。以上、下流側目標値設定手段Ａ６、出力偏差量算出手段Ａ７、ローパスフィルタＡ８、及びＰＩＤコントローラＡ９がサブフィードバック補正量算出手段に相当する。
【００７０】
<メインフィードバック制御>
先に説明したように、第１触媒５３は上記酸素吸蔵機能を有している。従って、第１触媒５３の上流の排ガスの空燃比の変動における比較的周波数の高い（例えば、前記周波数（１／τ1）以上の）高周波数成分、及び比較的周波数が低くて（例えば、前記周波数（１／τ1）以下であって）振幅（理論空燃比からの偏移量）が比較的小さい低周波数成分は第１触媒５３が有する酸素吸蔵機能により完全に吸収されることにより第１触媒５３の下流の排ガスの空燃比の変動として現れることはない。従って、例えば、内燃機関１０が過渡運転状態にあって排ガスの空燃比が前記周波数（１／τ1）以上の高周波数で大きく変動するような場合、同空燃比の変動が下流側空燃比センサ６７の出力値Voxsに現れないから、同周波数（１／τ1）以上の空燃比の変動に対する空燃比制御（即ち、過渡運転状態における空燃比の急変に対する補償）はサブフィードバック制御により実行することができない。従って、過渡運転状態における空燃比の急変に対する補償を確実に行うためには、上流側空燃比センサ６６の出力値vabyfsに基づいた空燃比制御であるメインフィードバック制御を行う必要がある。
【００７１】
一方、第１触媒５３の上流の排ガスの空燃比の変動における比較的周波数が低くて（例えば、前記周波数（１／τ1）以下であって）振幅が比較的大きい低周波数成分は第１触媒５３の酸素吸蔵機能では完全には吸収されず、少し遅れて第１触媒５３の下流の排ガスの空燃比の変動として現れる。この結果、上流側空燃比センサ６６の出力値vabyfsと下流側空燃比センサ６７の出力値Voxsとが理論空燃比に対して互いに逆方向に偏移した空燃比を示す値となる場合が存在する。従って、この場合、メインフィードバック制御（後述するメインフィードバック補正量DFimain）に基づく機関の空燃比制御とサブフィードバック制御（従って、前記サブフィードバック補正量DFisub）に基づく機関の空燃比制御とを同時に行うと、２つの空燃比制御が互いに干渉することになるので良好な機関の空燃比制御を行うことができない。
【００７２】
以上のことから、上流側空燃比センサ６６の出力値vabyfsの変動における各周波数成分のうち第１触媒５３の下流の空燃比の変動として現れ得る程度の周波数成分である所定の周波数（本例では、周波数（１／τ1））以下の低周波数成分をカットした後の同上流側空燃比センサ６６の出力値vabyfsをメインフィードバック制御に使用すれば、前記機関の空燃比制御の干渉が発生することを回避することができるとともに、過渡運転状態における空燃比の急変に対する補償を確実に行うことができる。
【００７３】
そこで、本装置は、前述の図５に示したように、Ａ１０〜Ａ１６の各手段等を含んで構成されている。以下、図５を参照しながら各手段について説明していく。
【００７４】
<メインフィードバック補正量の算出>
先ず、テーブル変換手段Ａ１０は、上流側空燃比センサ６６の出力値vabyfsと、先に説明した図３に示した上流側空燃比センサ出力値vabyfsと空燃比Ａ／Ｆとの関係を規定したテーブルとに基づいて、上流側空燃比センサ６６が検出する現時点（具体的には、今回のFi(k)の噴射指示開始時点）における今回の検出空燃比abyfs(k)を求める。
【００７５】
筒内吸入空気量遅延手段Ａ１１は、筒内吸入空気量算出手段Ａ１により吸気行程毎に求められＲＡＭ７３に記憶されている筒内吸入空気量Mcのうち、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の筒内吸入空気量McをＲＡＭ７３から読み出し、これを筒内吸入空気量Mc(k-N)として設定する。
【００７６】
筒内燃料供給量算出手段Ａ１２は、筒内吸入空気量遅延手段Ａ１１により求められた現時点からＮストローク前の筒内吸入空気量Mc(k-N)をテーブル変換手段Ａ１０により求められた今回の検出空燃比abyfs(k)で除することで、現時点からＮストローク前の実際の筒内燃料供給量Fc(k-N)を求める。ここで、前記値Ｎは、内燃機関１０の排気量、及び燃料室２５から上流側空燃比センサ６６までの距離等により異なる値である。
【００７７】
このように、現時点からＮストローク前の実際の筒内燃料供給量Fc(k-N)を求めるために、現時点からＮストローク前の筒内吸入吸気量Mc(k-N)を現時点における今回の検出空燃比abyfs(k)で除するのは、燃焼室２５内で燃料された混合気が上流側空燃比センサ６６に到達するまでには、Ｎストロークに相当する時間Ｌ１を要しているからである。
【００７８】
目標筒内燃料供給量遅延手段Ａ１３は、補正前指令基本燃料噴射量算出手段Ａ３により吸気行程毎に求められＲＡＭ７３に記憶されている目標筒内燃料供給量Fcrのうち、現時点からＮストローク前の目標筒内燃料供給量FcrをＲＡＭ７３から読み出し、これを目標筒内燃料供給量Fcr(k-N)として設定する。
【００７９】
筒内燃料供給量偏差算出手段Ａ１４は、下記(5)式に基づいて、目標筒内燃料供給量遅延手段Ａ１３により設定された現時点からＮストローク前の目標筒内燃料供給量Fcr(k-N)から筒内燃料供給量算出手段Ａ１２により求められた現時点からＮストローク前の実際の筒内燃料供給量Fc(k-N)を減じることにより、筒内燃料供給量偏差DFcを求める。この筒内燃料供給量偏差DFcは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量であって、上流側空燃比センサ６６の出力値vabyfsと上流側目標値（上流側目標空燃比abyfrが理論空燃比のときは図３に示すvstoich）との偏差に基づく値である。
【００８０】
DFc＝Fcr(k-N)-Fc(k-N)  ・・・(5)
【００８１】
ハイパスフィルタＡ１５は、その特性をラプラス演算子sを用いて表した下記(6)式に示すように、一次のフィルタである。下記(6)式において、τ1は上記ローパスフィルタＡ８の時定数τ1と同一の時定数である。ハイパスフィルタＡ１５は、周波数（１／τ1）以下の低周波数成分が通過することを実質的に禁止する。
【００８２】
１−１／（１+τ1・s）  ・・・(6)
【００８３】
ハイパスフィルタＡ１５は、前記筒内燃料供給量偏差算出手段Ａ１４により求められた前記筒内燃料供給量偏差DFcの値を入力するとともに、上記(6)式に従って同筒内燃料供給量偏差DFcの値をハイパスフィルタ処理した後の値であるハイパスフィルタ通過後筒内燃料供給量偏差DFchiを出力する。従って、ハイパスフィルタ通過後筒内燃料供給量偏差DFchiは、上流側空燃比センサ６６の出力値vabyfsと上流側目標値との偏差に基づく値をハイパスフィルタ処理した後の値である。
【００８４】
ＰＩコントローラＡ１６は、ハイパスフィルタＡ１５の出力値であるハイパスフィルタ通過後筒内燃料供給量偏差DFchiを比例・積分処理（ＰＩ処理）することで、下記(7)式に基づいてＮストローク前の燃料供給量の過不足（における周波数（１／τ1）以上の高周波数成分のみの過不足）を補償するためのメインフィードバック補正量DFimainを求める。
【００８５】
DFimain＝(Gphi・DFchi+Gihi・SDFchi)・KFB  ・・・(7)
【００８６】
上記(7)式において、Gphiは予め設定された比例ゲイン（比例定数）、Gihiは予め設定された積分ゲイン（積分定数）である。SDFchiはハイパスフィルタ通過後筒内燃料供給量偏差DFchiの時間積分値である。また、係数KFBは、エンジン回転速度NE、及び筒内吸入空気量Mc等により可変とすることが好適であるが、本例では「１」としている。係るメインフィードバック補正量DFimainは、先に述べたように指令最終燃料噴射量算出手段Ａ５により指令最終燃料噴射量Fi(k)を求める際に使用される。
【００８７】
このようにして、本装置は、メインフィードバック制御回路とサブフィードバック制御回路とを内燃機関１０に対して並列に接続している。そして、本装置は、上流側目標空燃比abyfrに対応する上流側目標値と上流側空燃比センサ６６の出力値vabyfsとの偏差に基づく値をハイパスフィルタ処理した後の値であるハイパスフィルタ通過後筒内燃料供給量偏差DFchiに基づいて、メインフィードバック補正量DFimainを求め、上記補正後指令基本燃料噴射量Fbaseに同メインフィードバック補正量DFimainを加えることで、上述したサブフィードバック制御による(サブフィードバック補正量DFisubによる)補正後指令基本燃料噴射量Fbaseの補正とは独立に同補正後指令基本燃料噴射量Fbaseを補正する。
【００８８】
例えば、機関の空燃比が急変してリーンとなると、テーブル変換手段Ａ１０にて求められる今回の検出空燃比abyfs(k)は上流側目標空燃比設定手段Ａ２により設定されている現時点からＮストローク前の上流側目標空燃比abyfr(k-N)よりもリーンな値（より大きな値）として求められる。このため、筒内燃料供給量算出手段Ａ１２にて求められる実際の筒内燃料供給量Fc(k-N)は目標筒内燃料供給量遅延手段Ａ１３にて求められる目標筒内燃料供給量Fcr(k-N)よりも小さい値となり、筒内燃料供給量偏差DFcは大きい正の値として求められる。また、機関の空燃比の急変によりこの筒内燃料供給量偏差DFcを示す信号には前記周波数（１／τ1）以上の高周波数成分が存在するから、ハイパスフィルタＡ１５を通過した後のハイパスフィルタ通過後筒内燃料供給量偏差DFchiも大きい正の値となる。従って、メインフィードバック補正量DFimainが大きい正の値となる。これにより、指令最終燃料噴射量算出手段Ａ５にて求められる指令最終燃料噴射量Fi(k)は、補正後指令基本燃料噴射量Fbaseよりも大きくなって、機関の空燃比がリッチとなるように制御される。
【００８９】
反対に、機関の空燃比が急変してリッチとなると、今回の検出空燃比abyfs(k)は現時点からＮストローク前の上流側目標空燃比abyfr(K-N)よりもリッチな値（より小さな値）として求められる。このため、実際の筒内燃料供給量Fc(k-N)は目標筒内燃料供給量Fcr(k-N)よりも大きい値となり、筒内燃料供給量偏差DFcは負の値として求められる。また、機関の空燃比の急変によりこの筒内燃料供給量偏差DFcを示す信号には前記周波数（１／τ1）以上の高周波数成分が存在するから、ハイパスフィルタ通過後筒内燃料供給量偏差DFchiも負の値となる。従って、メインフィードバック補正量DFimainが負の値となる。これにより、指令最終燃料噴射量Fi(k)は、補正後指令基本燃料噴射量Fbaseよりも小さくなって、機関の空燃比がリーンとなるように制御される。以上、指令最終燃料噴射量算出手段Ａ５、テーブル変換手段Ａ１０、筒内吸入空気量遅延手段Ａ１１、筒内燃料供給量算出手段Ａ１２、目標筒内燃料供給量遅延手段Ａ１３、筒内燃料供給量偏差算出手段Ａ１４、ハイパスフィルタＡ１５、及びＰＩコントローラＡ１６はメインフィードバック制御手段の一部に相当する。
【００９０】
このようにして、第１触媒５３の下流の空燃比の変動として現れ得る程度の周波数（１／τ1）以下の空燃比の変動に対する実質的な空燃比制御はサブフィードバック制御により確実に行われ得るとともに、同周波数（１／τ1）以下の低周波数成分はハイパスフィルタＡ１５を通過し得ずＰＩコントローラＡ１６に入力されないから前述した機関の空燃比制御の干渉が発生することを回避できる。また、機関の空燃比の変動（従って、上流側空燃比センサ６６の出力値vabyfsの変動）における前記周波数（１／τ1）以上の高周波数成分はハイパスフィルタＡ１５を通過するから、過渡運転状態における空燃比の急変に対する補償はメインフィードバック制御により迅速、且つ確実に行われ得る。
【００９１】
<基本燃料噴射量補正係数の設定>
先に説明したように、前記ＰＩＤコントローラＡ９において積分処理が実行されることにより、サブフィードバック制御において上述した基本燃料噴射量の誤差が補償され得る。しかしながら、上述した第１触媒５３の酸素吸蔵機能の影響により機関の空燃比の変化は少し遅れて同第１触媒５３の下流の排ガスの空燃比の変化として現れるから、上記基本燃料噴射量の誤差が急に増大する場合においては、サブフィードバック制御のみでは同基本燃料噴射量の誤差を直ちに補償することができず、その結果、一時的にエミッションの排出量が増大する場合が発生するという問題がある。
【００９２】
従って、前記酸素吸蔵機能による遅れの影響がないメインフィードバック制御においても上記基本燃料噴射量の誤差を直ちに補償できるように構成することが必要である。しかしながら、ハイパスフィルタ処理は微分処理（Ｄ処理）と同等の機能を達成する処理であるから、ハイパスフィルタＡ１５通過後の値がＰＩコントローラＡ１６の入力値とされている上記メインフィードバック制御においては、実質的に積分処理が実行され得ない。よって、上記メインフィードバック制御においては上記基本燃料噴射量の誤差が補償され得ない。
【００９３】
以上のことから、メインフィードバック制御、及びサブフィードバック制御による積分処理によることなく上記基本燃料噴射量の誤差を直ちに補償する必要がある。このためには、指令最終燃料噴射量Fiを決定する値のうちメインフィードバック補正量DFimain、及びサブフィードバック補正量DFisub以外の値である補正後指令基本燃料噴射量Fbaseが、機関に供給される混合気の実際の空燃比を目標空燃比abyfrとするために吸気行程を迎える気筒のインジェクタ３９に噴射指示すべき燃料噴射量（以下、「目標指令基本燃料噴射量Fbaset」と称呼する。）と一致する（近づく）ように補正される必要がある。
【００９４】
そのためには、図５から理解できるように、今回の上記補正前指令基本燃料噴射量Fbaseb(k)に上述した基本燃料噴射量補正係数設定手段Ａ１７により設定される基本燃料噴射量補正係数KFを乗じた値が上記目標指令基本燃料噴射量Fbasetと一致する（近づく）ように同基本燃料噴射量補正係数KFが設定される必要がある。以下、基本燃料噴射量補正係数設定手段Ａ１７による係る基本燃料噴射量補正係数KFの設定方法について説明する。
【００９５】
一般に、燃焼室内に吸入される筒内吸入空気量が等しいという仮定のもと、燃料噴射量と、機関に供給される混合気の空燃比（従って、排ガスの空燃比）の積は一定となる。従って、係る仮定のもとでは、一般に、上記指令最終燃料噴射量Fiと、上流側空燃比センサ６６による検出空燃比abyfsの積は、機関に供給される混合気の実際の空燃比を今回の目標空燃比abyfr(k)とするために必要な上記目標指令基本燃料噴射量Fbasetと、目標空燃比abyfr(k)の積に等しい、という関係が成立する。従って、目標指令基本燃料噴射量Fbasetは、一般に、下記(8)式に従って表すことができる。
【００９６】
Fbaset＝(abyfs / abyfr(k))・Fi  ・・・(8)
【００９７】
ここで、上述したように、今回の補正前指令基本燃料噴射量Fbaseb(k)に基本燃料噴射量補正係数KFを乗じた値が上記(8)式に従って求められる目標指令基本燃料噴射量Fbasetと等しくなるように同補正係数KFが設定されるから、同補正係数KFは下記(9)式に従って設定することができる。
【００９８】
KF＝Fbaset / Fbaseb(k)  ・・・(9)
【００９９】
ところで、燃料の噴射指示から、同噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比が上流側空燃比センサ６６の出力値vabyfsとして現れるまでには、上述した行程遅れ、輸送遅れ、及び応答遅れの和として表される遅れ時間Ｌ２が必要である。換言すれば、上流側空燃比センサ６６による検出空燃比abyfsは、遅れ時間Ｌ２前に実行された燃料の噴射指示に基づいて発生した排ガスの空燃比を表す値となる。
【０１００】
従って、上記(8)式に従って目標指令基本燃料噴射量Fbasetが計算される際、検出空燃比abyfsとして今回の検出空燃比abyfs(k)が使用される一方で、指令最終燃料噴射量Fiとしては、現時点（具体的には、今回のFi(k)の噴射指示開始時点）から遅れ時間Ｌ２に相当するＭストローク（Ｍ回の吸気行程）前に実行された燃料の噴射指示に係わる指令最終燃料噴射量である現時点からＭストローク前の指令最終燃料噴射量Fi(k-M)が使用されることが好ましい。
【０１０１】
更には、機関が過渡運転状態にある場合、検出空燃比abyfs、指令最終燃料噴射量Fi、及び補正前指令基本燃料噴射量Fbasebが別個独立に所定の周波数以上の高周波数で大きく変動し得る。このような場合、上記(8)式、及び上記(9)式に示した関係が維持され得なくなる可能性がある。従って、係る高周波数の変動による影響をカットするためには、今回の検出空燃比abyfs(k)の値、Ｍストローク前の指令最終燃料噴射量Fi(K-M)の値、及び今回の補正後指令基本燃料噴射量Fbaseb(k)の値にそれぞれ所定のローパスフィルタ処理を施した後の各値を上記(8)式、或いは上記(9)式の計算に使用することが好適である。
【０１０２】
また、上述した行程遅れ、及び輸送遅れに係る時間は、エンジン回転速度NEの上昇に応じて短くなるとともに、輸送遅れに係る時間は、筒内吸入空気量Mcの増加に応じて短くなる傾向がある。従って、上記遅れ時間Ｌ２（従って、値Ｍ）は、例えば、エンジン回転速度NEと、筒内吸入空気量Mc(k)と、図６にグラフにより示した、エンジン回転速度NE及び筒内吸入空気量Mcと、ストローク数Ｍとの関係を規定するテーブルMapMと、に基づいて求めることができる。
【０１０３】
以上のことから、基本燃料噴射量補正係数設定手段Ａ１７は、その機能ブロック図である図７に示したようにＡ１７ａ〜Ａ１７ｆの各手段等を含んで構成されている。ローバスフィルタＡ１７ａは、その特性をラプラス演算子sを用いて表した下記(10)式に示すように、一次のフィルタである。下記(10)式において、τ2は時定数である。ローパスフィルタＡ１７ａは、周波数（１／τ2）以上の高周波数成分が通過することを実質的に禁止する。
【０１０４】
１／（１+τ2・s）  ・・・(10)
【０１０５】
ローパスフィルタＡ１７ａは、テーブル変換手段Ａ１０により求められた今回の検出空燃比abyfs(k)の値を入力するとともに、上記(10)式に従って今回の検出空燃比abyfs(k)の値をローパスフィルタ処理した後の値であるローパスフィルタ通過後検出空燃比abyfslowを出力する。
【０１０６】
指令最終燃料噴射量遅延手段Ａ１７ｂは、ＲＯＭ７２に記憶されている上述したテーブルMapMと、現時点でのエンジン回転速度NEと、今回の筒内吸入空気量Mc(k)と、に基づいて値Ｍを求める。そして、指令最終燃料噴射量遅延手段Ａ１７ｂは、指令最終燃料噴射量算出手段Ａ５により吸気行程毎に求められＲＡＭ７３に記憶されている指令最終燃料噴射量Fiのうち、現時点からＭストローク（Ｍ回の吸気行程）前に吸気行程を迎えた気筒についての値をＲＡＭ７３から読み出し、これを指令最終燃料噴射量Fi(k-M)として設定する。
【０１０７】
ローパスフィルタＡ１７ｃは、上述したローパスフィルタＡ１７ａと同一のフィルタであって、指令最終燃料噴射量遅延手段Ａ１７ｂにより求められた指令最終燃料噴射量Fi(k-M)の値を入力するとともに、上記(10)式に従って指令最終燃料噴射量Fi(k-M)の値をローパスフィルタ処理した後の値であるローパスフィルタ通過後指令最終燃料噴射量Filowを出力する。
【０１０８】
目標指令基本燃料噴射量算出手段Ａ１７ｄは、上記(8)に相当する下記(11)式に従って、ローパスフィルタＡ１７ａの出力であるローパスフィルタ通過後検出空燃比abyfslowの値を今回の目標空燃比abyfr(k)で除することで得られる値にローパスフィルタＡ１７ｃの出力であるローパスフィルタ通過後指令最終燃料噴射量Filowの値を乗じることで目標指令基本燃料噴射量Fbasetを求める。
【０１０９】
Fbaset＝(abyfslow / abyfr(k))・Filow  ・・・(11)
【０１１０】
ローパスフィルタＡ１７ｅは、上述したローパスフィルタＡ１７ａと同一のフィルタであって、補正前指令基本燃料噴射量算出手段Ａ３により求められた今回の補正前指令基本燃料噴射量Fbaseb(k)の値を入力するとともに、上記(10)式に従って今回の補正前指令基本燃料噴射量Fbaseb(k)の値をローパスフィルタ処理した後の値であるローパスフィルタ通過後補正前指令基本燃料噴射量Fbaseblowを出力する。
【０１１１】
基本燃料噴射量補正係数設定手段Ａ１７ｆは、上記(9)に相当する下記(12)式に従って、目標指令基本燃料噴射量算出手段Ａ１７ｄにより求められた目標指令基本燃料噴射量FbasetをローパスフィルタＡ１７ｅの出力であるローパスフィルタ通過後補正前指令基本燃料噴射量Fbaseblowで除することで基本燃料噴射量補正係数KFを求める。
【０１１２】
KF＝Fbaset / Fbaseblow  ・・・（12）
【０１１３】
以上、基本燃料噴射量補正係数設定手段Ａ１７は、燃料の噴射時点（より具体的には、噴射指示が開始される時点）が到来する毎に、Ａ１７ａ〜Ａ１７ｆの各手段等を利用して基本燃料噴射量補正係数KFを設定する。そして、本装置は、このようにして今回設定された基本燃料噴射量補正係数KFを次回の補正前指令基本燃料噴射量Fbasebに乗じることで次回の補正前指令基本燃料噴射量Fbasebを補正していく（即ち、次回の補正後指令基本燃料噴射量Fbaseを決定していく）。従って、次回の補正後指令基本燃料噴射量Fbaseが、機関に供給される混合気の実際の空燃比を目標空燃比abyfrとするために噴射指示すべき燃料噴射量と一致する（近づく）ように決定されていき、この結果、機関に供給される混合気の空燃比が目標空燃比abyfrに向けて制御されつつ基本燃料噴射量の誤差が迅速に補償されていく。
【０１１４】
<基本燃料噴射量補正係数の記憶処理>
先に説明したように、機関の暖機運転中、及び上流側空燃比センサが故障している場合等、即ち、「上流側空燃比センサ６６の出力値vabyfsが正常な値とならない場合」においては、検出空燃比abyfsが排ガスの空燃比を精度良く表す値とならない。このような場合、検出空燃比abyfsに基づく上記ローパスフィルタ通過後検出空燃比abyfslowの値を使用して上記(11)式（、及び上記(12)式）に従って算出される基本燃料噴射量補正係数KFの値も、補正前指令基本燃料噴射量Fbaseb(k)を、目標指令基本燃料噴射量Fbasetになるように精度良く補正するための値とならない。従って、このような場合、上記(11)式、及び上記(12)式に従って算出される基本燃料噴射量補正係数KFは補正前指令基本燃料噴射量Fbaseb(k)の補正に使用されるべきでない。
【０１１５】
そこで、本装置は、「上流側空燃比センサ６６の出力値vabyfsが正常な値となる場合（具体的には、後述するメインフィードバック条件が成立する場合）」に限り、上記(11)式、及び上記(12)式に従って計算された基本燃料噴射量補正係数KFを使用して補正前指令基本燃料噴射量Fbaseb(k)を補正していくとともに、同計算された基本燃料噴射量補正係数KFの値を逐次バックアップＲＡＭ７４に記憶・更新していく。
【０１１６】
この場合、基本燃料噴射量の誤差量が筒内吸入空気量Mcに応じて増大していく（従って、基本燃料噴射量補正係数KFの値が筒内吸入空気量Mcに応じて増大していく）傾向があることを利用して、本装置は、図８に示すように、筒内吸入空気量Mcのとり得る範囲を複数の（本例では、４つの）分類に区分する。そして、本装置は、新たな基本燃料噴射量補正係数KFを計算する毎に、今回の筒内吸入空気量Mc(k)が属する分類を選択するとともに、同選択された分類に対応する基本燃料噴射量補正係数KF(m)(m:1,2,3,4)の値を上記計算された新たな基本燃料噴射量補正係数KFの値に更新・記憶していく。
【０１１７】
一方、本装置は、「上流側空燃比センサ６６の出力値vabyfsが正常な値とならない場合（具体的には、後述するメインフィードバック条件が成立しない場合）」においては、今回の筒内吸入空気量Mc(k)が属する分類を選択するとともに、バックアップＲＡＭ７４に記憶されている基本燃料噴射量補正係数KF(m)(m:1,2,3,4)のうち同選択された分類に対応する値を基本燃料噴射量補正係数記憶値KFmomeryとして設定する。
【０１１８】
そして、上記(11)式、及び上記(12)式に従って計算される基本燃料噴射量補正係数KFに代えて同基本燃料噴射量補正係数記憶値KFmomeryを使用して補正前指令基本燃料噴射量Fbaseb(k)を補正していく。これにより、「上流側空燃比センサ６６の出力値vabyfsが正常な値とならない場合」においても、補正前指令基本燃料噴射量Fbaseb(k)を、ある程度正確に目標指令基本燃料噴射量Fbasetに一致させていくことができ、この結果、基本燃料噴射量の誤差がある程度補償されていく。以上が、本装置による機関の空燃比フィードバック制御の概要である。
【０１１９】
（実際の作動）
次に、上記空燃比制御装置の実際の作動について説明する。
<空燃比フィードバック制御>
ＣＰＵ７１は、図９フローチャートにより示した燃料噴射量Fiの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が前記所定クランク角度になると、ＣＰＵ７１はステップ９００から処理を開始してステップ９０５に進み、エアフローメータ６１により計測された吸入空気流量Ｇａと、エンジン回転速度NEと、上述したテーブルMapMcとに基づいて今回の吸気行程を迎える気筒（以下、「燃料噴射気筒」と云うこともある。）に吸入された今回の筒内吸入空気量Mc(k)を推定・決定する。
【０１２０】
次に、ＣＰＵ７１はステップ９１０に進んで、上記推定された筒内吸入空気量Mc(k)を今回の目標空燃比abyfr(k)で除した値を今回の補正前指令基本燃料噴射量Fbaseb(k)として決定する。次いで、ＣＰＵ７１はステップ９１５に進んで、メインフィードバック条件が成立しているか否かを判定する。ここで、メインフィードバック条件は、例えば、機関の冷却水温THWが第１所定温度以上であって、上流側空燃比センサ６６が正常（活性状態となっていることを含む。）であって、機関の一回転当りの吸入空気量（負荷）が所定値以下であるときに成立する。即ち、メインフィードバック条件が成立することは、上述した「上流側空燃比センサ６６の出力値vabyfsが正常な値となる場合」に対応する。
【０１２１】
ＣＰＵ７１は、メインフィードバック条件が成立している場合、ステップ９１５にて「Ｙｅｓ」と判定してステップ９２０に進み、上記補正前指令基本燃料噴射量Fbaseb(k)に、後述するルーチンにて（前回の燃料噴射時点にて）求められている最新の基本燃料噴射量補正係数KFを乗じた値を補正後指令基本燃料噴射量Fbaseとして設定する。
【０１２２】
一方、ＣＰＵ７１は、メインフィードバック条件が成立していない場合、ステップ９１５にて「Ｎｏ」と判定してステップ９２５に進み、上記補正前指令基本燃料噴射量Fbaseb(k)に、バックアップＲＡＭ７４に記憶されている基本燃料噴射量補正係数KF(m)(m:1,2,3,4)のうち先のステップ９０５にて決定された筒内吸入空気量Mc(k)の値から選択された筒内吸入空気量KF(m)の値を基本燃料噴射量補正係数記憶値KFmomeryとして設定する。続いて、ＣＰＵ７１はステップ９３０に進み、上記補正前指令基本燃料噴射量Fbaseb(k)に、ステップ９２５にて設定した基本燃料噴射量補正係数記憶値KFmomeyを乗じた値を補正後指令基本燃料噴射量Fbaseとして設定する。
【０１２３】
次に、ＣＰＵ７１はステップ９３５に進み、上記(1)式に従って、上記求めた補正後指令基本燃料噴射量Fbaseに、後述するルーチンにて（前回の燃料噴射時点にて）求められている最新のメインフィードバック補正量DFimainと、後述するルーチンにて（前回の燃料噴射時点にて）求められている最新のサブフィードバック補正量DFisubとを加えた値を今回の指令最終燃料噴射量Fi(k)として求める。
【０１２４】
そして、ＣＰＵ７１はステップ９４０に進んで、上記指令最終燃料噴射量Fi(k)の燃料の噴射指示を行う。具体的には、図示しないルーチンにより別途計算されている燃料噴射開始時期が到来すると、ＣＰＵ７１は、上記指令最終燃料噴射量Fi(k)に応じた時間だけ燃料噴射気筒のインジェクタ３９を開弁する指示を同インジェクタ３９に対して行うことで燃料が噴射される。そして、ＣＰＵ７１はステップ９９５に進んで本ルーチンを一旦終了する。
【０１２５】
以上により、補正前指令基本燃料噴射量Fbaseb(k)が上述した目標指令基本燃料噴射量Fbasetに一致するように補正されるとともに、同補正された補正前指令基本燃料噴射量Fbaseb(k)（即ち、補正後指令基本燃料噴射量Fbase）がメインフィードバック補正、及びサブフィードバック補正された後の指令最終燃料噴射量Fi(k)の燃料の噴射指示が燃料噴射気筒に対して噴射される。
【０１２６】
（メインフィードバック補正量の計算）
次に、上記メインフィードバック制御において上記メインフィードバック補正量DFimainを算出する際の作動について説明すると、ＣＰＵ７１は図１０にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１０００から処理を開始し、ステップ１００５に進んでメインフィードバック条件が成立しているか否かを判定する。このメインフィードバック条件は、先のステップ９１５におけるメインフィードバック条件と同一である。
【０１２７】
いま、メインフィードバック条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、現時点（即ち、噴射指示開始時点）の上流側空燃比センサ６６の出力値vabyfsを図３に示したテーブルに基づいて変換することにより、今回の検出空燃比abyfs(k)を求める。
【０１２８】
次に、ＣＰＵ７１はステップ１０１５に進み、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Mc(k-N)を前記求めた検出空燃比abyfs(k)で除することにより、現時点からＮストローク前の実際の筒内燃料供給量Fc(k-N)を求める。
【０１２９】
次いで、ＣＰＵ７１はステップ１０２０に進み、現時点からＮストローク前の筒内吸入空気量Mc(k-N)を現時点からＮストローク前の目標空燃比abyfr(k-N)で除することにより、現時点からＮストローク前の目標筒内燃料供給量Fcr(k-N)を求める。
【０１３０】
そして、ＣＰＵ７１はステップ１０２５に進んで、上記(5)式に従って、目標筒内燃料供給量Fcr(k-N)から筒内燃料供給量Fc(k-N)を減じた値を筒内燃料供給量偏差DFcとして設定する。つまり、筒内燃料供給量偏差DFcは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。次に、ＣＰＵ７１はステップ１０３０に進み、前記筒内燃料供給量偏差DFcをハイパスフィルタＡ１５によりハイパスフィルタ処理してハイパスフィルタ通過後筒内燃料供給量偏差DFchiを取得する。
【０１３１】
次いで、ＣＰＵ７１はステップ１０３５に進んで、上記(7)式に基づくステップ１０３５内に示した式に従ってメインフィードバック補正量DFimainを求め、続くステップ１０４０にてその時点におけるハイパスフィルタ通過後筒内燃料供給量偏差DFchiの積分値SDFchiに前記ステップ１０３０にて求めたハイパスフィルタ通過後筒内燃料供給量偏差DFchiを加えて、新たなハイパスフィルタ通過後筒内燃料供給量偏差の積分値SDFchiを求めた後、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０１３２】
以上により、メインフィードバック補正量DFimainが求められ、このメインフィードバック補正量DFimainが前述した図９のステップ９３５により指令最終燃料噴射量Fi(k)に反映されることで上述したメインフィードバック制御に基づく機関の空燃比制御が実行される。
【０１３３】
一方、ステップ１００５の判定時において、メインフィードバック条件が不成立であると、ＣＰＵ７１は同ステップ１００５にて「Ｎｏ」と判定してステップ１０４５に進んでメインフィードバック補正量DFimainの値を「０」に設定し、その後ステップ１０９５に進んで本ルーチンを一旦終了する。このように、メインフィードバック条件が不成立であるときは、メインフィードバック補正量DFimainを「０」としてメインフィードバック制御に基づく機関の空燃比の補正を行わない。
【０１３４】
（サブフィードバック補正量の計算）
次に、上記サブフィードバック制御において上記サブフィードバック補正量DFisubを算出する際の作動について説明すると、ＣＰＵ７１は図１１にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１１００から処理を開始し、ステップ１１０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、前述したステップ９１５（及び、ステップ１００５）でのメインフィードバック条件に加え、機関の冷却水温THWが前記第１所定温度よりも高い第２所定温度以上のときに成立する。
【０１３５】
いま、サブフィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、上記(2)式に従って、下流側目標値Voxsrefから現時点の下流側空燃比センサ６７の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
【０１３６】
次に、ＣＰＵ７１はステップ１１１５に進んで、前記出力偏差量DVoxsをローパスフィルタＡ８によりローパスフィルタ処理してローパスフィルタ通過後出力偏差量DVoxslowを取得し、続くステップ１１２０にて、下記(13)式に基づきローパスフィルタ通過後出力偏差量DVoxslowの微分値DDVoxslowを求める。
【０１３７】
DDVoxslow＝(DVoxslow-DVoxslow1)/Δt  ・・・(13)
【０１３８】
上記(13)式において、DVoxslow1は前回の本ルーチン実行時において後述するステップ１１３５にて設定（更新）されたローパスフィルタ通過後出力偏差量DVoxslowの前回値である。また、Δtは本ルーチンが前回実行された時点から今回実行された時間までの時間である。
【０１３９】
次いで、ＣＰＵ７１はステップ１１２５に進み、上記(4)式に従って、サブフィードバック補正量DFisubを求めた後、ステップ１１３０に進んで、その時点におけるローパスフィルタ通過後出力偏差量の積分値SDVoxslowに上記ステップ１１１５にて求めたローパスフィルタ通過後出力偏差量DVoxslowを加えて、新たなローパスフィルタ通過後出力偏差量の積分値SDVoxslowを求め、続くステップ１１３５にて、上記ステップ１１１５にて求めたローパスフィルタ通過後出力偏差量DVoxslowをローパスフィルタ通過後出力偏差量DVoxslowの前回値DVoxslow1として設定した後、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１４０】
以上により、サブフィードバック補正量DFisubが求められ、このサブフィードバック補正量DFisubが前述した図９のステップ９３５により指令最終燃料噴射量Fi(k)に反映されることで上述したサブフィードバック制御に基づく機関の空燃比制御が実行される。
【０１４１】
一方、ステップ１１０５の判定時において、サブフィードバック制御条件が不成立であると、ＣＰＵ７１は同ステップ１１０５にて「Ｎｏ」と判定してステップ１１４０に進んでサブフィードバック補正量DFisubの値を「０」に設定し、その後、ステップ１１９５に進んで本ルーチンを一旦終了する。このように、サブフィードバック制御条件が不成立であるときは、サブフィードバック補正量DFisubを「０」としてサブフィードバック制御に基づく機関の空燃比の補正を行わない。
【０１４２】
（基本燃料噴射量補正係数の計算、及び記憶）
次に、基本燃料噴射量補正係数KFを算出する際の作動について説明すると、ＣＰＵ７１は図１２にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１２００から処理を開始し、ステップ１２０５に進んでメインフィードバック条件が成立しているか否かを判定し、「Ｎｏ」と判定する場合、ステップ１２９５に直ちに進んで本ルーチンを一旦終了する。この場合、基本燃料噴射量補正係数KFの計算、及び同補正係数KFの値のバックアップＲＡＭ７４への記憶処理が実行されない。このメインフィードバック条件は、先のステップ９１５（及び、ステップ１００５）におけるメインフィードバック条件と同一である。
【０１４３】
いま、メインフィードバック条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、先の図１０のステップ１００５にて求められている今回の検出空燃比abyfs(k)をローパスフィルタＡ１７ａによりローパスフィルタ処理してローパスフィルタ通過後検出空燃比abyfslowを取得する。
【０１４４】
次いで、ＣＰＵ７１はステップ１２１５に進んで、現時点でのエンジン回転速度NEと、先の図９のステップ９０５にて求めた今回の筒内吸入空気量Mc(k)と、図６に示したテーブルMapMとに基づいて値Ｍを求めるとともに、現時点からＭストローク前の指令最終燃料噴射量Fi(k-M)をローパスフィルタＡ１７ｃによりローパスフィルタ処理してローパスフィルタ通過後指令最終燃料噴射量Filowを取得する。
【０１４５】
続いて、ＣＰＵ７１はステップ１２２０に進んで、先の図９のステップ９１０にて求められている今回の補正前指令基本燃料噴射量Fbaseb(k)をローパスフィルタＡ１７ｅによりローパスフィルタ処理してローパスフィルタ通過後補正前指令基本燃料噴射量Fbaseblowを取得する。
【０１４６】
次に、ＣＰＵ７１はステップ１２２５に進み、上記取得されたローパスフィルタ通過後検出空燃比abyfslowと、上記取得されたローパスフィルタ通過後指令最終燃料噴射量Filowと、先の図９のステップ９１０にて使用した今回の目標空燃比abyfr(k)と、上記(11)式とに基づいて目標指令基本燃料噴射量Fbasetを求め、続くステップ１２３０にて、上記目標指令基本燃料噴射量Fbasetと、上記取得されたローパスフィルタ通過後補正前指令基本燃料噴射量Fbaseblowと、上記(12)式とに基づいて基本燃料噴射量補正係数KFを求める。
【０１４７】
そして、ＣＰＵ７１はステップ１２３５に進んで、図９のステップ９０５にて決定されている筒内吸入空気量Mc(k)の値に応じて選択されるKF(m)(m:1〜4)の値を上記求めた基本燃料噴射量補正係数KFの値に更新し、同更新したKF(m)の値をバックアップＲＡＭ７４の対応するメモリに記憶した後、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１４８】
これにより、メインフィードバック条件が成立している場合において、燃料噴射気筒について燃料噴射開始時期が到来する毎に、基本燃料噴射量補正係数KFの計算（更新）、及び同補正係数KFの値のバックアップＲＡＭ７４への記憶処理が実行されていく。そして、この基本燃料噴射量補正係数KFが次回の燃料噴射気筒について実行される前述した図９のルーチンのステップ９２０にて使用されることで次回の補正前指令基本燃料噴射量Fbasebが今回計算した基本燃料噴射量補正係数KFに従って補正されていく。
【０１４９】
以上、説明したように、本発明による内燃機関の空燃比制御装置の実施形態によれば、燃焼室内に吸入される筒内吸入空気量が等しいという仮定のもと、指令最終燃料噴射量Fi（実際には、Fi(K-M)）と、上流側空燃比センサ６６による検出空燃比abyfs(k)の積は、機関に供給される混合気の実際の空燃比を目標空燃比abyfr(k)とするために必要な目標指令基本燃料噴射量Fbasetと、目標空燃比abyfr(k)の積に等しい、という関係から目標指令基本燃料噴射量Fbaset(＝(abyfs(k)/abyfr(k))・Fi(k-M))を求め、同求めた目標指令基本燃料噴射量Fbasetを補正前指令基本燃料噴射量Fbaseb(k)で除することで基本燃料噴射量補正係数KF(＝Fbaset/Fbaseb(k))を求める（実際には、ローパスフィルタ処理が併せて実行される）。
【０１５０】
そして、この基本燃料噴射量補正係数KFを次回の補正前指令基本燃料噴射量Fbasebに乗じることで次回の補正前指令基本燃料噴射量Fbasebを補正していく（即ち、次回の補正後指令基本燃料噴射量Fbaseを決定していく）。従って、次回の補正後指令基本燃料噴射量Fbaseが、機関に供給される混合気の実際の空燃比を目標空燃比abyfrとするために噴射指示すべき燃料噴射量と一致する（近づく）ように決定されていき、この結果、機関に供給される混合気の空燃比が目標空燃比abyfrに向けて制御されつつ基本燃料噴射量の誤差が迅速に補償されていく。
【０１５１】
本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記各実施形態においては、図７（図１２のステップ１２１０〜１２２０）に示すように、検出空燃比abyfs(k)、指令最終燃料噴射量Fi(k-M)、及び補正前指令基本燃料噴射量Fbaseb(k)をローパスフィルタによりそれぞれローパスフィルタ処理した後の各値を用いて基本燃料噴射量補正係数KFを求めているが、検出空燃比abyfs(k)、指令最終燃料噴射量Fi(k-M)、及び補正前指令基本燃料噴射量Fbaseb(k)の各値そのものからローパスフィルタ処理前基本燃料噴射量補正係数KFb(＝(abyfs(k)・Fi(k-M))/(abyfr(k)・Fbaseb(k)))を求め、同ローパスフィルタ処理前基本燃料噴射量補正係数KFbをローパスフィルタによりローパスフィルタ処理することで基本燃料噴射量補正係数KFを求めるように構成してもよい。
【０１５２】
また、上記実施形態においては、基本燃料噴射量補正係数KFを求める際に使用される現時点からＭストローク前の指令最終燃料噴射量Fi(k-M)についての値Ｍ（遅れ時間に相当する値）を、エンジン回転速度NEと、筒内吸入空気量Mc(k)と、図６に示すテーブルMapMcとに基づいて求めているが、値Ｍを所定の一定値としてもよい。
【０１５３】
また、上記実施形態においては、図７に示すように、今回の検出空燃比abyfs(k)、現時点からＭストローク前の指令最終燃料噴射量Fi(k-M)、今回の目標空燃比abyfr(k)、及び今回の補正前指令基本燃料噴射量Fbaseb(k)に基づいて基本燃料噴射量補正係数KFを求めているが、今回の検出空燃比abyfs(k)、現時点からＭストローク前の指令最終燃料噴射量Fi(k-M)、現時点からＭストローク前の目標空燃比abyfr(k-M)、及び現時点からＭストローク前の補正前指令基本燃料噴射量Fbaseb(k-M)に基づいて基本燃料噴射量補正係数KFを求めるように構成してもよい。
【０１５４】
また、上記実施形態においては、メインフィードバック制御において、現時点からＮストローク前の目標筒内燃料供給量Fcr(k-N)から現時点からＮストローク前の実際の筒内燃料供給量Fc(k-N)を減じた値である筒内燃料供給量偏差DFcに基づいてメインフィードバック補正量DFimainを求めているが、上流側空燃比センサ６６による今回の検出空燃比abyfs(k)から現時点からＮストローク前の目標空燃比abyfr(k-N)を減じた値に基づいてメインフィードバック補正量DFimainを求めるように構成してもよい。
【図面の簡単な説明】
【０１５５】
【図１】本発明の実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】図１に示したエアフローメータの出力電圧と計測された吸入空気流量との関係を示したグラフである。
【図３】図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図４】図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図５】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際の機能ブロック図である。
【図６】図１に示したＣＰＵが参照する、エンジン回転速度及び筒内吸入空気量と、遅れ時間に相当するストローク数との関係を規定するテーブルを示したグラフである。
【図７】図５に示した基本燃料噴射量補正係数設定手段が基本燃料噴射量補正係数を設定する際の機能ブロック図である。
【図８】計算された基本燃料噴射量補正係数が筒内吸入空気量に応じて分類されてバックアップＲＡＭのメモリに記憶されている様子を示した図である。
【図９】図１に示したＣＰＵが実行する指令最終燃料噴射量の計算、及び噴射指示を行うためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが実行するメインフィードバック補正量を計算するためのルーチンを示したフローチャートである。
【図１１】図１に示したＣＰＵが実行するサブフィードバック補正量を計算するためのルーチンを示したフローチャートである。
【図１２】図１に示したＣＰＵが実行する基本燃料噴射量補正係数を計算するためのルーチンを示したフローチャートである。
【符号の説明】
【０１５６】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、５２…エキゾーストパイプ（排気管）、５３…三元触媒（第１触媒）、６６…上流側空燃比センサ、６７…下流側空燃比センサ、７０…電気制御装置、７１…ＣＰＵ、７４…バックアップＲＡＭ
【図１】
2005273524.tif 000003
【図２】
2005273524.tif 000004
【図３】
2005273524.tif 000005
【図４】
2005273524.tif 000006
【図５】
2005273524.tif 000007
【図６】
2005273524.tif 000008
【図７】
2005273524.tif 000009
【図８】
2005273524.tif 000010
【図９】
2005273524.tif 000011
【図１０】
2005273524.tif 000012
【図１１】
2005273524.tif 000013
【図１２】
2005273524.tif 000014