(57)【要約】【課題】学習補正基本燃料噴射量に対してＦＦ補正及びＦＢ補正がなされる内燃機関の空燃比制御装置において、燃料中のアルコール濃度に大きな変化があった場合において目標空燃比が急変しても空燃比を迅速に目標空燃比に収束させること。【解決手段】逐次更新されていく学習値Ｇで補正した基本燃料噴射量（学習補正基本燃料噴射量）Fbaseをフィードフォワード補正係数KFFとフィードバック補正量DFBとでＦＦ補正及びＦＢ補正して指令燃料噴射量Fi(＝Fbase・KFF＋DFB)が原則的に決定される。学習値Ｇが「基本燃料噴射量の誤差」に対応する値に収束したか否か（「学習完了状態」か「学習未完了状態」か）が判定される。燃料中のアルコール濃度に大きな変化があった場合、強制的に「学習未完了状態」とされる。そして、アルコール濃度が急変した場合（即ち、「学習未完了状態」にある場合）、KFFによるFbaseの補正（ＦＦ補正）が禁止される。【選択図】図１０
2009036107.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも上流の前記排気通路に配設されて同排気通路内のガスの空燃比に応じた値を出力する空燃比センサと、
燃料に含まれるアルコール成分の濃度であるアルコール濃度を取得するアルコール濃度センサと、
指令燃料噴射量の燃料の噴射指示に応じて燃料を噴射する燃料噴射手段と、
を備えた内燃機関に適用される内燃機関の空燃比制御装置であって、
前記取得されたアルコール濃度に基づいて燃料の基準空燃比を決定する基準空燃比決定手段と、
吸気行程にて前記内燃機関の燃焼室に吸入された空気の量を前記基準空燃比で除した値である基本燃料噴射量を取得する基本燃料噴射量取得手段と、
前記内燃機関の運転状態に応じて変化する目標空燃比を同運転状態に基づいて取得する目標空燃比取得手段と、
前記目標空燃比の前記基準空燃比からの偏移に基づいてフィードフォワード補正量を取得するフィードフォワード補正量取得手段と、
前記目標空燃比の値にローパスフィルタ処理が施された値であって燃料の噴射指示から同噴射指示による噴射燃料の燃焼に基づく排ガスが前記空燃比センサに到達するまでの時間だけ前の時点での値である遅延目標空燃比を取得する遅延処理手段と、
前記空燃比センサの出力値から得られる検出空燃比と前記遅延目標空燃比との偏差に相当する値を積算して更新されていく偏差積分値に少なくとも基づいて前記検出空燃比を前記遅延目標空燃比に一致させるためのフィードバック補正量を取得するフィードバック補正量取得手段と、
所定のタイミングが到来する毎に、前記偏差積分値の定常的な成分を学習値に移し変えていき且つ前記偏差積分値から前記定常的な成分を除く学習処理を行う学習手段と、
前記基本燃料噴射量を前記学習値で補正した値を、前記フィードフォワード補正量と、前記フィードバック補正量と、に基づいて補正することで前記指令燃料噴射量を算出する指令燃料噴射量算出手段と、
前記指令燃料噴射量の燃料の噴射指示を前記燃料噴射手段に対して行うことで前記燃焼室に供給される混合気の空燃比を前記目標空燃比に一致するように制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置であって、
前記取得されたアルコール濃度に所定程度以上の変化があった場合、前記指令燃料噴射量算出手段による前記指令燃料噴射量の算出にあたり前記フィードフォワード補正量による補正を禁止する禁止手段を備えた内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置であって、
前記学習値の状態が、前記学習値が収束している学習完了状態にあるか前記学習値が収束していない学習未完了状態にあるかを判定する判定手段を備え、
前記学習手段は、
前記学習未完了状態において前記学習処理を行うとともに前記学習完了状態において前記学習処理を行わないように構成されていて、
前記禁止手段は、
前記学習未完了状態においてのみ前記フィードフォワード補正量による補正を禁止するように構成され、且つ、前記取得されたアルコール濃度に前記所定程度以上の変化があった場合に前記判定手段の判定結果にかかわらず前記学習値の状態を前記学習未完了状態とするように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項２に記載の内燃機関の空燃比制御装置であって、
前記学習未完了状態から前記学習完了状態への移行に応答して現時点での前記学習値を現時点での前記アルコール濃度に対応させて学習記憶値として記憶する記憶手段を備え、
前記禁止手段は、
前記取得されたアルコール濃度に前記所定程度以上の変化があった場合であっても、前記変化後のアルコール濃度に対応する前記学習記憶値が既に記憶されているときは、前記学習値を前記変化後のアルコール濃度に対応する前記学習記憶値と等しい値に設定するとともに前記フィードフォワード補正量による補正の禁止を行わないように構成された内燃機関の空燃比制御装置。
【請求項４】
請求項１乃至請求項３の何れか一項に記載の内燃機関の空燃比制御装置において、
前記フィードバック補正量取得手段は、
前記禁止手段により前記フィードフォワード補正量による補正の禁止が行われている間、前記偏差積分値を、前記空燃比センサの出力値から得られる検出空燃比と現時点での前記目標空燃比そのものとの偏差に相当する値を積算して更新していくように構成された内燃機関の空燃比制御装置。
【請求項５】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも上流の前記排気通路に配設されて同排気通路内のガスの空燃比に応じた値を出力する空燃比センサと、
燃料に含まれるアルコール成分の濃度であるアルコール濃度を取得するアルコール濃度センサと、
指令燃料噴射量の燃料の噴射指示に応じて燃料を噴射する燃料噴射手段と、
を備えた内燃機関に適用される内燃機関の空燃比制御装置であって、
前記取得されたアルコール濃度に基づいて燃料の基準空燃比を決定する基準空燃比決定手段と、
吸気行程にて前記内燃機関の燃焼室に吸入された空気の量を前記基準空燃比で除した値である基本燃料噴射量を取得する基本燃料噴射量取得手段と、
前記内燃機関の運転状態に応じて変化する目標空燃比を同運転状態に基づいて取得する目標空燃比取得手段と、
前記目標空燃比の前記基準空燃比からの偏移に基づいてフィードフォワード補正量を取得するフィードフォワード補正量取得手段と、
前記目標空燃比の値にローパスフィルタ処理が施された値であって燃料の噴射指示から同噴射指示による噴射燃料の燃焼に基づく排ガスが前記空燃比センサに到達するまでの時間だけ前の時点での値である遅延目標空燃比を取得する遅延処理手段と、
前記空燃比センサの出力値から得られる検出空燃比と前記遅延目標空燃比との偏差に相当する値を積算して更新されていく偏差積分値に少なくとも基づいて前記検出空燃比を前記遅延目標空燃比に一致させるためのフィードバック補正量を取得するフィードバック補正量取得手段と、
所定のタイミングが到来する毎に、前記偏差積分値の定常的な成分を学習値に移し変えていき且つ前記偏差積分値から前記定常的な成分を除く学習処理を行う学習手段と、
前記基本燃料噴射量を前記学習値で補正した値を、前記フィードフォワード補正量と、前記フィードバック補正量と、に基づいて補正することで前記指令燃料噴射量を算出する指令燃料噴射量算出手段と、
前記指令燃料噴射量の燃料の噴射指示を前記燃料噴射手段に対して行うことで前記燃焼室に供給される混合気の空燃比を前記目標空燃比に一致するように制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置であって、
前記学習値の状態が、前記学習値が収束している学習完了状態にあるか前記学習値が収束していない学習未完了状態にあるかを判定する判定手段を備え、
前記学習手段は、
前記学習未完了状態において前記学習処理を行うとともに前記学習完了状態において前記学習処理を行わないように構成されていて、
前記学習未完了状態において、前記指令燃料噴射量算出手段による前記指令燃料噴射量の算出にあたり前記フィードフォワード補正量による補正を禁止する禁止手段を備えた内燃機関の空燃比制御装置。
【請求項６】
請求項５に記載の内燃機関の空燃比制御装置において、
前記禁止手段は、
前記取得されたアルコール濃度に所定程度以上の変化があった場合に前記判定手段の判定結果にかかわらず前記学習値の状態を前記学習未完了状態とするように構成された内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、触媒よりも上流の排気通路に配設された空燃比センサの出力値に基づいて内燃機関の燃焼室に供給される混合気の空燃比を目標空燃比に制御する内燃機関の空燃比制御装置に関する。以下、「内燃機関の燃焼室に供給される混合気の空燃比」を単に「空燃比」と称呼し、「内燃機関」を単に「機関」と称呼することもある。
【背景技術】
【０００２】
従来より、この種の空燃比制御装置として、例えば特許文献１に開示されたものが知られている。この装置では、目標空燃比が機関の運転状態に応じて基準空燃比（＝理論空燃比）から変化し得る場合において、以下のように空燃比制御が実行される。
【特許文献１】特開２００７−１６２５６５号公報
【０００３】
吸気行程にて機関の燃焼室に吸入された空気の量（筒内吸入空気量）を基準空燃比（理論空燃比）で除した値（＝基本燃料噴射量）が取得される。目標空燃比が運転状態に基づいて取得される。目標空燃比の基準空燃比（＝理論空燃比）からの偏移に基づいてフィードフォワード補正量が取得される。目標空燃比の値にローパスフィルタ処理（一次遅れ処理）が施された値であって燃料の噴射指示から同噴射指示による噴射燃料の燃焼に基づく排ガスが空燃比センサに到達するまでの時間（むだ時間）だけ前の時点での値（＝遅延目標空燃比）が取得される。この遅延目標空燃比は、空燃比変化に対する空燃比センサ出力の応答遅れ（むだ時間＋一次遅れ）を模擬した遅延処理が目標空燃比に対して施された値である。空燃比センサ出力値から得られる検出空燃比と遅延目標空燃比との偏差を積算して更新されていく偏差積分値（積分項）に少なくとも基づいて（即ち、偏差の積分処理（Ｉ処理）に少なくとも基づいて、具体的には、偏差のＰＩ処理等に基づいて）検出空燃比を遅延目標空燃比に一致させるためのフィードバック補正量が取得される。基本燃料噴射量をフィードフォワード補正量とフィードバック補正量とに基づいて補正することで指令燃料噴射量が算出される。そして、指令燃料噴射量の燃料の噴射指示がインジェクタに対してなされることで空燃比が目標空燃比に一致するように制御される。以下、上記フィードバック補正量による基本燃料噴射量の補正を「ＦＢ補正」と称呼し、上記フィードフォワード補正量による基本燃料噴射量の補正を「ＦＦ補正」と称呼する。
【０００４】
このように、目標空燃比が基準空燃比から変化した場合にＦＦ補正が行われ、且つ、ＦＢ補正において空燃比センサ出力の応答遅れを模擬した遅延処理が施された目標空燃比（＝遅延目標空燃比）が検出空燃比の目標値として使用される。これにより、目標空燃比が急変した場合であっても、遅延目標空燃比の変化の経緯を検出空燃比の変化の経緯に近づけることができ、検出空燃比と遅延目標空燃比との偏差を小さい値に維持できる。この結果、フィードバック補正量の一時的な急増が抑制され得、空燃比の比較的大きな荒れの発生が抑制され得る。この結果、目標空燃比が急変しても空燃比を迅速に目標空燃比に収束させることができる。
【発明の開示】
【０００５】
ところで、近年、アルコール成分を含む燃料（例えば、ガソリン＋アルコール、或いはアルコールのみからなる）が特に車両用の内燃機関の燃料として使用されてきている。燃料の理論空燃比は、燃料中のアルコール濃度に大きく依存し、アルコール濃度が大きいほどより小さい値になる。従って、基本燃料噴射量を精度良く決定するためにはアルコール濃度を正確に取得する必要がある。
【０００６】
ところが、一般に、燃料中のアルコール濃度を検出するセンサ（アルコール濃度検出センサ）の検出誤差は比較的大きい。従って、係るアルコール濃度センサの検出誤差に起因して基本燃料噴射量の誤差（計算値の真値からのずれ）が発生し得る。なお、基本燃料噴射量の誤差は、アルコール濃度センサの検出誤差のみならず、例えば、インジェクタに噴射指示される指令燃料噴射量と実際に噴射された燃料の量との差（インジェクタのばらつき）等によっても発生し得る。
【０００７】
フィードバック補正量（の一部）に含まれる上記偏差積分値（積分項）は、上記基本燃料噴射量の誤差に起因して発生する「基本燃料噴射量をＦＦ補正した値」に含まれる誤差を補償するように推移していく。即ち、基本燃料噴射量の誤差は上記偏差積分値により補償され得る。そこで、基本燃料噴射量の誤差を補償するために「学習値」を導入し、指令燃料噴射量を、「基本燃料噴射量を学習値で補正した値」をＦＦ補正及びＦＢ補正することで決定することが考えられる。この場合、所定のタイミング（学習値更新タイミング）が到来する毎に、偏差積分値の定常的な成分が学習値に移し変えられていき且つ偏差積分値から係る定常的な成分が除かれる処理（以下、「学習処理」と称呼する。）が行われる。以下、「基本燃料噴射量を学習値で補正した値」を「学習補正基本燃料噴射量」と称呼する。
【０００８】
なお、理論的には、係る学習処理の繰り返し実行により学習値が基本燃料噴射量の誤差に対応する値（以下、「学習収束値」と称呼する。）に収束すると、偏差積分値はゼロ近傍の微小範囲内（以下、「ゼロ」とも称呼する。）になる。以下、学習値が学習収束値に収束している状態（即ち、偏差積分値がゼロに維持されている状態）を「学習完了状態」と称呼する。「学習完了状態」では学習補正基本燃料噴射量は基本燃料噴射量の真値に一致している。一方、学習値が学習収束値に収束していない状態（即ち、偏差積分値がゼロに維持されていない状態）を「学習未完了状態」と称呼する。「学習未完了状態」では学習補正基本燃料噴射量は基本燃料噴射量の真値からずれている。
【０００９】
ところで、「学習完了状態」か「学習未完了状態」かにかかわらず、給油等により燃料中のアルコール濃度に大きな変化があった場合、上述のアルコール濃度センサの検出誤差の程度が変化すること等に起因して基本燃料噴射量の誤差の程度が大きく変化し得る。この結果、上記学習収束値も大きく変化するから、学習値が学習収束値に一致し得なくなって「学習未完了状態」となる（即ち、学習補正基本燃料噴射量が誤差を含む状態となる）。
【００１０】
このような「学習未完了状態」にある場合において目標空燃比が急変する場合を考える。この場合、目標空燃比の急変によりフィードフォワード補正量の大きさが急変することで、誤差を含んだ学習補正基本燃料噴射量をフィードフォワード補正量でＦＦ補正した値の誤差の程度も目標空燃比の急変により大きく変化する。このように「学習補正基本燃料噴射量をＦＦ補正した値」の誤差の程度が急変すると、空燃比の比較的大きな荒れが発生し得る（詳細は、後述する図７等を参照）。
【００１１】
以上のように、燃料中のアルコール濃度に大きな変化があった場合において（即ち、「学習未完了状態」にて）目標空燃比が急変すると、ＦＦ補正の実行に起因して空燃比の比較的大きな荒れが発生し、空燃比を迅速に目標空燃比に収束させることができないという問題があった。
【００１２】
従って、本発明の目的は、学習補正基本燃料噴射量に対してＦＦ補正及びＦＢ補正がなされる内燃機関の空燃比制御装置において、燃料中のアルコール濃度に大きな変化があった場合において目標空燃比が急変しても空燃比を迅速に目標空燃比に収束させることができるものを提供することにある。
【００１３】
本発明に係る空燃比制御装置は、触媒と、触媒よりも上流の排気通路に配設された空燃比センサと、アルコール濃度を取得するアルコール濃度センサと、燃料噴射手段（インジェクタ）とを備えた内燃機関に適用される。
【００１４】
本発明に係る空燃比制御装置では、取得されたアルコール濃度に基づいて燃料の基準空燃比（例えば、理論空燃比等）が決定され、この基準空燃比を用いて、基本燃料噴射量（＝筒内吸入空気量を基準空燃比で除した値）が取得される。この基本燃料噴射量を上記学習値で補正した値（＝学習補正基本燃料噴射量）に上記フィードフォワード補正量によるＦＦ補正及び上記フィードバック補正量によるＦＢ補正がなされて指令燃料噴射量が決定される。なお、理論空燃比とは、空気中の酸素と燃料とが過不足なく反応する場合に対応する燃料量に対する空気量の割合をいう。
【００１５】
ここで、学習値は、基本燃料噴射量に乗算される値であることが好ましい。フィードフォワード補正量は、学習補正基本燃料噴射量に加算（減算）される値であっても、学習補正基本燃料噴射量に乗算される値であってもよい。また、フィードバック補正量も、学習補正基本燃料噴射量に加算（減算）される値であっても、基本燃料噴射量に乗算される値であってもよい。このフィードバック補正量は、例えば、検出空燃比と遅延目標空燃比との偏差に相当する値を逐次積算して更新されていく偏差積分値そのものであってもよいし、前記「偏差に相当する値」をＰＩＤ処理等して得られる値であってもよい。前記「偏差に相当する値」は、例えば、検出空燃比と遅延目標空燃比との偏差そのもの、検出空燃比に対応する空燃比センサ出力値と遅延目標空燃比に対応する空燃比センサ出力値との偏差、筒内吸入空気量を検出空燃比で除した値と筒内吸入空気量を遅延目標空燃比で除した値との偏差等である。
【００１６】
本発明に係る空燃比制御装置の特徴は、取得されたアルコール濃度に所定程度以上の変化があった場合（アルコール濃度が急変した場合）、指令燃料噴射量算出手段による指令燃料噴射量の算出にあたりフィードフォワード補正量による補正（ＦＦ補正）を禁止することにある。
【００１７】
これによれば、アルコール濃度が急変した場合（即ち、「学習未完了状態」になった場合）、ＦＦ補正が禁止される。この結果、「学習未完了状態」において目標空燃比が急変した場合であっても、上述した「ＦＦ補正の実行に起因する空燃比の比較的大きな荒れの発生」が防止され、空燃比を迅速に目標空燃比に収束させることができる。
【００１８】
上記本発明による空燃比制御装置は、学習値の状態が「学習完了状態」にあるか「学習未完了状態」にあるかを判定する判定手段を備え、前記学習手段は、「学習未完了状態」において学習処理を行うとともに「学習完了状態」において学習処理を行わないように構成され、前記禁止手段は、「学習未完了状態」においてのみＦＦ補正を禁止するように構成され、且つ、アルコール濃度が急変した場合に前記判定手段の判定結果にかかわらず学習値の状態を「学習未完了状態」とするように構成されることが好適である。
【００１９】
これによれば、アルコール濃度が急変した場合、直ちに「学習未完了状態」とされてＦＦ補正が禁止される。その後、学習処理が繰り返し実行されて「学習完了状態」に移行するとＦＦ補正が再開される。
【００２０】
上述したように、「学習完了状態」では学習補正基本燃料噴射量が誤差を含んでいないから、目標空燃比が変化しても、「学習補正基本燃料噴射量をＦＦ補正した値」の誤差の程度が変化する事態そのものが発生し得ない。即ち、ＦＦ補正が行われていても、上述した「ＦＦ補正の実行に起因する空燃比の比較的大きな荒れ」が発生し得ない。従って、アルコール濃度の急変後において「学習完了状態」となった時点以降では、ＦＦ補正を再開することができる。
【００２１】
上記構成は、係る知見に基づくものである。これによれば、上述した「ＦＦ補正の実行に起因する空燃比の比較的大きな荒れ」が発生し得る「学習未完了状態」においてのみＦＦ補正を禁止することができる。即ち、ＦＦ補正の禁止期間を適切に設定することができる。
【００２２】
この場合、上記本発明による空燃比制御装置は、「学習未完了状態」から「学習完了状態」への移行に応答して現時点での学習値を現時点でのアルコール濃度に対応させて学習記憶値として記憶する記憶手段を備え、前記禁止手段は、アルコール濃度が急変した場合であっても、変化後のアルコール濃度に対応する学習記憶値が既に記憶されているときは、学習値を変化後のアルコール濃度に対応する学習記憶値と等しい値に設定するとともにＦＦ補正の禁止を行わないように構成されることが好適である。
【００２３】
変化後のアルコール濃度に対応する学習記憶値が既に記憶されている場合、アルコール濃度変化後において上記学習収束値がこの学習記憶値と一致し得る。即ち、学習値をこの学習記憶値と等しい値に設定すれば、直ちに「学習完了状態」とすることができる。「学習完了状態」となれば上述のごとくＦＦ補正を禁止する必要がない。上記構成は係る知見に基づくものである。これによれば、前記記憶手段を設けることでＦＦ補正の禁止の頻度を少なくすることができる。
【００２４】
上記本発明による空燃比制御装置においては、前記フィードバック補正量取得手段は、前記禁止手段によりＦＦ補正が禁止されている間、前記偏差積分値を、前記空燃比センサの出力値から得られる検出空燃比と現時点での前記目標空燃比そのものとの偏差に相当する値を積算して更新していくように構成されることが好ましい。
【００２５】
これによれば、ＦＦ補正が禁止されている間、偏差積分値が「検出空燃比と遅延目標空燃比との偏差に相当する値」に代えて「検出空燃比と現時点での目標空燃比そのものとの偏差に相当する値」を積算して更新されていく。これにより、ＦＦ補正禁止中において目標空燃比が変化した場合、空燃比をより一層迅速に目標空燃比に収束させることができる（詳細は、後述する図１５等を参照）。
【００２６】
以上では、前記判定手段（「学習完了状態」か「学習未完了状態」かを判定する手段）の有無によらず、アルコール濃度が急変した場合にＦＦ補正が禁止される構成について説明した。これに対し、前記判定手段が備えられている場合、「学習未完了状態」にてＦＦ補正が禁止される構成が採用されてもよい。この場合、具体的には、アルコール濃度が急変した場合に前記判定手段の判定結果にかかわらず「学習未完了状態」とされる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００２８】
（第１実施形態）
図１は、第１実施形態による空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。内燃機関１０は、燃料として、ガソリンのみ（アルコール濃度＝０％）、アルコール成分を含むガソリン、及びアルコールのみ（アルコール濃度＝１００％）を使用可能となっている。
【００２９】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これによりクランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００３０】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともにインテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００３１】
吸気系統４０は、吸気ポート３１に連通し吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、及びスロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａを備えている。
【００３２】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１（実際には、各排気ポート３４に連通した各々のエキゾーストマニホールド５１が集合した集合部）に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された上流側の三元触媒５３（上流側触媒コンバータ、以下、「第１触媒５３」と称呼する。）、及びこの第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側の三元触媒５４（以下、「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。
【００３３】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路（本例では、上記各々のエキゾーストマニホールド５１が集合した集合部）に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、アクセル開度センサ６８、及びアルコール濃度センサ６９を備えている。
【００３４】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量を検出し、質量流量Gaを表す信号を出力するようになっている。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともにクランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、運転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００３５】
上流側空燃比センサ６６は、限界電流式の酸素濃度センサであり、図２に実線にて示したように、空燃比Ａ／Ｆに応じて出力される電流に応じた電圧である出力値Vabyfsを出力するようになっている。特に、空燃比が理論空燃比stoich（基準空燃比）であるときには出力値Vabyfsは上流側目標値Vstoichになる。
【００３６】
下流側空燃比センサ６７は、起電力式（濃淡電池式）の酸素濃度センサであり、図３に示したように、理論空燃比stoich近傍において急変する電圧である出力値Voxsを出力するようになっている。より具体的に述べると、下流側空燃比センサ６７は、空燃比が理論空燃比よりもリーンのときは略０．１（Ｖ）、空燃比が理論空燃比よりもリッチのときは略０．９（Ｖ）、及び空燃比が理論空燃比のときは０．５（Ｖ）の電圧を出力するようになっている。アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００３７】
アルコール濃度センサ６９は、図示しない燃料タンク内に貯留されている燃料に含まれるアルコール成分（エタノール等）の濃度（即ち、上記アルコール濃度、本例では、質量濃度）を検出し、アルコール濃度Ｒ（０≦Ｒ≦１００（％））を表す信号を出力するようになっている。
【００３８】
本例では、図４に示すように設定される係数Ｋ（１≦Ｋ）が導入される。この係数Ｋは、アルコール濃度Ｒが０％のときに「１」に設定され、アルコール濃度Ｒの０％からの増大に応じて「１」から増大するように設定される。アルコール濃度Ｒ＝０％のときの理論空燃比stoichをstoich0（例えば、１４．６等）とすると、アルコール濃度Ｒ≧０％のときの理論空燃比stoichは「stoich0・(1/Ｋ)」と表すことができる。
【００３９】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＲＡＭ７３、バックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６９と接続され、ＣＰＵ７１にセンサ６１〜６９からの信号を供給するとともに、ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、及びスロットル弁アクチュエータ４３ａに駆動信号を送出するようになっている。
【００４０】
（空燃比制御の概要）
次に、上記のように構成された空燃比制御装置（以下、「本装置」と云う。）が行う空燃比制御の概要について説明する。
【００４１】
本装置は、下流側空燃比センサ６７の出力値Voxsが目標空燃比abyfrに対応する下流側目標値Voxsref（原則的には、０．５（Ｖ）、図３を参照）となるように、上流側空燃比センサ６６の出力値Vabyfs（即ち、第１触媒５３上流の空燃比）、及び下流側空燃比センサ６７の出力値Voxs（即ち、第１触媒５３下流の空燃比）に応じて空燃比を制御する。
【００４２】
より具体的に述べると、本装置は、機能ブロック図である図５に示したように、Ａ１〜Ａ１８の各機能ブロックを含んで構成されている。以下、図５を参照しながら各機能ブロックについて説明していく。なお、以下、「フィードバック」を「ＦＢ」と称呼し、「フィードフォワード」を「ＦＦ」と称呼することもある。
【００４３】
筒内吸入空気量算出手段Ａ１は、エアフローメータ６１が計測している吸入空気流量Gaと、クランクポジションセンサ６４の出力に基づいて得られる運転速度NEと、ＲＯＭ７２が記憶しているテーブルMapMcとに基づき、吸気行程を迎える気筒の今回の吸入空気量である筒内吸入空気量Mc(k)を求める。ここで、添え字の（k）は、今回の吸気行程に対する値であることを示している（以下、他の物理量についても同様。）。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００４４】
<目標空燃比の設定>
上流側目標空燃比設定手段Ａ２は、内燃機関１０の運転状態である運転速度NE、及びアクセルペダル操作量Accp等に基づいて、且つ上記係数Ｋに基づいて、目標空燃比abyfr(k)（前記「目標空燃比」に対応）を決定する。この目標空燃比abyfr(k)は、原則的には理論空燃比（基準空燃比）stoich（＝stoich0・(1/Ｋ)）に設定される一方、運転速度NE、及びアクセルペダル操作量Accp等によっては理論空燃比stoich以外の空燃比にも設定される。目標空燃比abyfrは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。この上流側目標空燃比設定手段Ａ２は、前記「目標空燃比取得手段」、及び前記「基準空燃比決定手段」に相当する。
【００４５】
<基本燃料噴射量の決定>
基本燃料噴射量決定手段Ａ３は、下記（1）式に従って、基本燃料噴射量Fbase（＝上記学習補正基本燃料噴射量）を求める。(1)式において、値Ｇは後述する学習処理手段Ａ１８により決定・更新される、基本燃料噴射量（＝Mc(k)/stoich）を補正するための学習値である。ここで、基本燃料噴射量（＝Mc(k)/stoich）（即ち、学習値Ｇで補正される前の値）を取得する手段が前記「基本燃料噴射量取得手段」に相当する。基本燃料噴射量決定手段Ａ３は「学習補正基本燃料噴射量Fbase」を決定する手段に相当する。
【００４６】
Fbase＝(Mc(k)/stoich)・Ｇ  …(1)
【００４７】
<ＦＦ補正係数の算出>
ＦＦ補正係数算出手段Ａ４は、下記(2)式に従って、目標空燃比abyfr(k)の理論空燃比stoichからの偏移に応じた、学習補正基本燃料噴射量Fbaseを補正するためのＦＦ補正係数KFF（前記「フィードフォワード補正量」に相当）を求める。
【００４８】
KFF＝stoich/abyfr(k)  ・・・(2)
【００４９】
このＦＦ補正係数KFFは、目標空燃比abyfr(k)が理論空燃比stoichよりもリッチのときに「１」よりも大きい正の値（よりリッチであるほどより大きい正の値）となり、目標空燃比abyfr(k)が理論空燃比stoichよりもリーンのときに「１」よりも小さい正の値（よりリーンであるほどより小さい正の値）となる。このＦＦ補正係数算出手段Ａ４は、前記「フィードフォワード補正量取得手段」に相当する。
【００５０】
<指令燃料噴射量の算出>
ＦＦ補正後基本燃料噴射量算出手段Ａ５は、学習補正基本燃料噴射量FbaseにＦＦ補正係数KFFを乗じてＦＦ補正後基本燃料噴射量「Fbase・KFF」を算出する。
【００５１】
指令燃料噴射量算出手段Ａ６は、ＦＦ補正後基本燃料噴射量「Fbase・KFF」に、後述するＦＢ補正量DFB（前記「フィードバック補正量」に相当）を加えることで、下記(3)式に基づいて指令燃料噴射量Fiを求める。この指令燃料噴射量算出手段Ａ６は、前記「指令燃料噴射量算出手段」に相当する。
【００５２】
Fi＝Fbase・KFF＋DFB  ・・・(3)
【００５３】
このようにして、本装置は、学習補正基本燃料噴射量FbaseをＦＦ補正係数KFF及びＦＢ補正量DFBに基づいてＦＦ補正及びＦＢ補正することで得られる指令燃料噴射量Fiの燃料の噴射指示を今回の吸気行程を迎える気筒についてのインジェクタ３９に対して行う。このように燃料の噴射指示を行う手段が前記「空燃比制御手段」に相当する。
【００５４】
<サブフィードバック補正量の取得>
下流側目標値設定手段Ａ７は、上述した上流側目標空燃比設定手段Ａ２と同様、内燃機関１０の運転状態である運転速度NE、及びアクセルペダル操作量Accp等に基づいて下流側目標値Voxsrefを決定する。この下流側目標値Voxsrefは、本例では、下流側目標値Voxsrefに対応する空燃比が上述した目標空燃比abyfr(k)と常時一致するように設定される。
【００５５】
出力偏差量算出手段Ａ８は、下記(4)式に基づいて、現時点（具体的には、今回のFiの噴射指示開始時点）での下流側目標値Voxsrefから現時点での下流側空燃比センサ６７の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
【００５６】
DVoxs＝Voxsref−Voxs  ・・・(4)
【００５７】
ＰＩＤコントローラＡ９は、出力偏差量DVoxsを比例・積分・微分処理（ＰＩＤ処理）することで、下記(5)式に基づいてサブフィードバック補正量Vafsfbを求める。下記(5)式において、Kpは予め設定された比例ゲイン（一定値）、Kiは予め設定された積分ゲイン（一定値）、Kdは予め設定された微分ゲイン（一定値）である。
【００５８】
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs＋Kd・DDVoxs  ・・・(5)
【００５９】
また、SDVoxsは出力偏差量DVoxsの時間積分値であり、DDVoxsは出力偏差量DVoxsの時間微分値である。ここで、ＰＩＤコントローラＡ９は積分項Ki・SDVoxsを含んでいるので、定常状態では出力偏差量DVoxsがゼロになることが保証される。換言すれば、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの定常偏差がゼロになる。
【００６０】
このようにして、本装置は、下流側目標値Voxsrefと下流側空燃比センサ６７の出力値Voxsとの定常偏差がゼロになるように出力値Voxsに基づいて、サブフィードバック補正量Vafsfbを求める。このサブフィードバック補正量Vafsfbは、後述するように制御用空燃比abyfsの取得に用いられる。
【００６１】
<制御用空燃比の取得>
制御用空燃比相当出力値算出手段Ａ１０は、現時点での上流側空燃比センサ６６の出力値Vabyfsに下流側フィードバック補正量Vafsfbを加えることで、制御用空燃比相当出力値(Vabyfs+Vafsfb)を求める。
【００６２】
テーブル変換手段Ａ１１は、上記制御用空燃比相当出力値(Vabyfs+Vafsfb)と、先に説明した図２にグラフにより示した上流側空燃比センサの出力値Vabyfsと空燃比Ａ／Ｆとの関係を規定したテーブルMapabyfsとに基づいて、アルコール濃度Ｒ＝０％の場合における現時点での（今回の）制御用空燃比abyfs1(k)を求める。
【００６３】
空燃比変換手段Ａ１２は、上記制御用空燃比abyfs1(k)に値(1/Ｋ)を乗じることで、現時点でのアルコール濃度Ｒに対応する制御用空燃比abyfs(k)を求める。これにより、制御用空燃比abyfs(k)は、上流側空燃比センサ６６の出力値Vabyfsから得られる空燃比（検出空燃比）に対してサブフィードバック補正量Vafsfbに相当する分だけ異なる空燃比となる。
【００６４】
<ＦＢ補正量の算出>
ローパスフィルタＡ１３は、目標空燃比abyfr(k)を時定数τsで一次のローパスフィルタ処理を行ってローパスフィルタ通過後目標空燃比abyfrlow(k)を求める。時定数τsは、上流側空燃比センサ６６の出力値Vabyfsのステップ入力に対する応答遅れの程度を表す。ローパスフィルタ通過後目標空燃比abyfrlowは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００６５】
目標空燃比遅延手段Ａ１４は、上記ローパスフィルタ通過後目標空燃比abyfrlowのうち、現時点からＮストローク前の値abyfrlow(k-N)（以下、「遅延目標空燃比」と称呼する。）をＲＡＭ７３から読み出す。ここで、ストローク数Ｎは、「行程遅れに係る時間」と「輸送遅れに係る時間」と「応答遅れに係る時間」の和（以下、「むだ時間Ｌ」と称呼する。）に相当するストローク数である。
【００６６】
「行程遅れに係る時間」は、燃料の噴射指示から、この噴射指示により噴射された燃料の燃焼に基づく排ガスが排気弁３５を介して燃焼室２５から排気通路へ排出されるまでの時間である。「輸送遅れに係る時間」は、排ガスが排気弁３５を介して排気通路へ排出されてから上流側空燃比センサ６６（の検出部）に到達するまでの時間である。「応答遅れに係る時間」は、上流側空燃比センサ６６（の検出部）に到達した排ガスの空燃比が上流側空燃比センサ６６の出力値Vabyfsとして現れるまでの時間である。
【００６７】
これにより、遅延目標空燃比abyfrlow(k-N)は、空燃比変化に対する上流側空燃比センサ６６の出力値Vabyfsの応答遅れ（むだ時間＋一次遅れ）を模擬した遅延処理が目標空燃比abyfr(k)に対して施された値となる。このローパスフィルタＡ１３、及び目標空燃比遅延手段Ａ１４は、前記「遅延処理手段」に相当する。
【００６８】
空燃比偏差算出手段Ａ１５は、下記(6)式に基づいて、今回の制御用空燃比abyfs(k)から、遅延目標空燃比abyfrlow(k-N)を減じることにより、空燃比偏差DAFを求める。ここで、上流側空燃比センサ６６の出力値Vabyfsが現時点から上記むだ時間Ｌだけ前の噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比を表すことを考慮すると、この空燃比偏差DAFは、現時点からＮストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
【００６９】
DAF＝abyfs(k)−abyfrlow(k-N)  ・・・(6)
【００７０】
ＰＩコントローラＡ１６は、上記空燃比偏差DAFを比例・積分処理（ＰＩ処理）することで、下記(7)式に基づいて、現時点からＮストローク前の燃料供給量の過不足を補償するためのＦＢ補正量DFBを求める。
【００７１】
DFB＝(Gp・DAF+Gi・SDAF)・KFB  ・・・(7)
【００７２】
上記(7)式において、Gpは比例ゲイン（一定値）、Giは積分ゲイン（一定値）である。SDAFは空燃比偏差DAFの時間積分値（以下、「偏差積分値」と称呼する。）である。係数KFBは、運転速度NE、及び筒内吸入空気量Mc等により可変とすることが好適であるが、本例では「１」としている。上述のごとく、このＦＢ補正量DFBは、指令燃料噴射量Fiの計算に使用される。このＰＩコントローラＡ１６は、前記「フィードバック補正量取得手段」に相当する。
【００７３】
<アルコール濃度の取得>
アルコール濃度取得手段Ａ１７であるアルコール濃度センサ６９は、上述したように、図示しない燃料タンク内に貯留されている燃料のアルコール濃度Ｒ（０≦Ｒ≦１００（％））を所定のアルコール濃度Ｒ取得タイミングの到来毎に取得・更新し、図４に示したテーブルに基づいて係数Ｋを取得・更新する。このように取得・更新された係数Ｋは、上述のごとく、上流側目標空燃比設定手段Ａ２等により使用される。
【００７４】
以上のように、本装置は、現時点からＮストローク前の時点で筒内に供給された燃料の過不足分を補償するために、現時点での制御用空燃比abyfs(k)が、現時点からＮストローク前の遅延目標空燃比abyfrlow(k-N)と一致するように、空燃比がフィードバック制御される。
【００７５】
加えて、制御用空燃比abyfsは、上述したように、上流側空燃比センサ６６の出力値Vabyfsから得られる検出空燃比をサブフィードバック補正量Vafsfbに相当する分だけ補正した空燃比である。従って、制御用空燃比abyfsは出力偏差量DVoxsにも応じて変化する。この結果、下流側空燃比センサ６７の出力値Voxsが下流側目標値Voxsrefに一致するようにも空燃比がフィードバック制御される。
【００７６】
加えて、ＰＩコントローラＡ１６は積分項Gi・SDAFを含んでいるので、定常状態では空燃比偏差DAFがゼロになることが保証される。換言すれば、遅延目標空燃比abyfrlow(k-N)と制御用空燃比abyfs(k)との定常偏差がゼロになる。このことは、定常状態において、制御用空燃比abyfs(k)が遅延目標空燃比abyfrlow(k-N)に一致すること、従って、第１触媒５３の上下流の空燃比が目標空燃比abyfrに一致することが保証されることを意味する。
【００７７】
また、定常状態では、空燃比偏差DAFがゼロになることで比例項Gp・DAFがゼロとなるから、ＦＢ補正値DFBは積分項Gi・SDAFの値と等しくなる。この積分項Gi・SDAFの値（従って、偏差積分値SDAF）は、上述した「アルコール濃度センサ６９の検出誤差」や上述した「インジェクタ３９のばらつき」に起因する上記「基本燃料噴射量の誤差」に対応する値になる。即ち、偏差積分値SDAFにより「基本燃料噴射量の誤差」を補償することができる。
【００７８】
<学習処理>
学習処理手段Ａ１８は上述の学習補正基本燃料噴射量Fbaseの算出に使用される、基本燃料噴射量（＝Mc(k)/stoich）を補正するための学習値Ｇを更新・決定する（上記(1)式を参照）。学習値Ｇの具体的な更新・決定方法については後に図１３に示したルーチンを参照しながら説明する。学習処理手段Ａ１８は、所定の学習値更新タイミングが到来する毎に原則的に「学習処理」を実行する。「学習処理」では、偏差積分値SDAFの定常的な成分（後述するSDAFlow）が学習値Ｇに移し変えられていき且つ偏差積分値SDAFから係る定常的な成分（SDAFlow）が除かれる。この点について学習処理手段Ａ１８は前記「学習手段」に相当する。
【００７９】
この「学習処理」の繰り返し実行により学習値Ｇが「基本燃料噴射量の誤差」に対応する値（＝上記「学習収束値」）に収束すると、偏差積分値SDAFはゼロ近傍の微小範囲内に維持される。学習処理手段Ａ１８は、学習値Ｇが学習収束値に収束している状態（「学習完了状態」）か収束していない状態（「学習未完了状態」）かを判定する。この点について学習処理手段Ａ１８は前記「判定手段」に相当する。「学習完了状態」では、学習補正基本燃料噴射量Fbase（＝Mc(k)/stoich・Ｇ）は基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値に一致している一方、「学習未完了状態」では学習補正基本燃料噴射量Fbaseは基本燃料噴射量の真値からずれている。本例では、「学習処理」は「学習未完了状態」においてのみ実行され、「学習完了状態」になると中断される。このように、本例では、学習値Ｇが導入されて、偏差積分値SDAFに代えて学習値Ｇにより「基本燃料噴射量の誤差」が補償される。
【００８０】
<ＦＦ補正の禁止>
学習処理手段Ａ１８は、「学習未完了状態」にある場合、その後において「学習完了状態」となるまでの期間、ＦＦ補正係数KFF＝１に固定することで、ＦＦ補正（即ち、ＦＦ補正係数KFFによる学習補正基本燃料噴射量Fbaseの補正）を禁止する。
【００８１】
加えて、学習処理手段Ａ１８は、給油等によりアルコール濃度Ｒ（従って、係数Ｋ）に大きな変化があった場合（後述するΔＫ＞ΔＫref）、「学習完了状態」か「学習未完了状態」かにかかわらず強制的に「学習未完了状態」とする。これは、以下の理由に基づく。即ち、給油等によりアルコール濃度Ｒに大きな変化があった場合、上述の「アルコール濃度センサ６９の検出誤差」の程度が変化すること等に起因して「基本燃料噴射量の誤差」の程度が大きく変化し得る。この結果、上記学習収束値も大きく変化する。従って、アルコール濃度Ｒの変化前の段階で「学習完了状態」にあるか「学習未完了状態」にあるかにかかわらず、アルコール濃度Ｒの変化後において学習値Ｇが学習収束値に一致し得なくなって「学習未完了状態」となる。本例では、かかる観点に基づき、前記「判定手段」による判定を待つまでもなく強制的に「学習未完了状態」とされる。
【００８２】
即ち、学習処理手段Ａ１８は、アルコール濃度Ｒに大きな変化があった場合、その後において「学習完了状態」となるまでの期間、ＦＦ補正を禁止するということもできる。この点について学習処理手段Ａ１８は前記「禁止手段」に相当する。以下、係るＦＦ補正の禁止について図６〜図８を参照しながら説明する。なお、図６〜図８において、筒内吸入空気量Mcは一定に維持されているものとする。
【００８３】
図６は、「学習完了状態」においてＦＦ補正が行われる場合の一例を示したタイムチャートである。図６では、目標空燃比abyfr(k)が、時刻ｔ１以前にて値AF1（stoichよりもリッチ）に維持され、時刻ｔ１にて値AF1から理論空燃比stoichにステップ的に変化した場合が示されている。この例は、例えば、冷間始動後において所謂「始動増量」により所定期間だけ空燃比が理論空燃比stoichよりもリッチに維持され、その後、空燃比が理論空燃比stoichに戻される場合等を想定している。
【００８４】
図６では、時刻ｔ１以前において、制御用空燃比（検出空燃比）abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）に収束している場合（定常状態）が示されている。「学習完了状態」であるから、時刻ｔ１以前において、フィードバック補正量DFB（具体的には、偏差積分値SDAF）がゼロに維持されているとともに、学習補正基本燃料噴射量Fbase（＝Mc(k)/stoich・Ｇ）は基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値に一致している。従って、時刻ｔ１以前において、ＦＦ補正後基本燃料噴射量「Fbase・KFF」（実線を参照）もＦＦ補正後基本燃料噴射量（＝筒内吸入空気量／目標空燃比）の真値（破線を参照）に一致している。即ち、時刻ｔ１以前において、指令燃料噴射量Fi（＝Fbase・KFF＋DFB）は空燃比＝AF1に対応する真値と一致している。
【００８５】
時刻ｔ１にて、目標空燃比abyfr(k)が値AF1から理論空燃比stoichにステップ的に変化すると、ＦＦ補正により（具体的には、KFFが「１」より大きい値から「１」に変化することにより）、ＦＦ補正後基本燃料噴射量「Fbase・KFF」がAF1に対応する値Ｆ１からstoichに対応する値Ｆ２にステップ的に減少する。このため、時刻ｔ１にて指令燃料噴射量Fiがステップ的に減少する。
【００８６】
ここで、「学習完了状態」であるから、目標空燃比abyfrが変化しても学習補正基本燃料噴射量Fbaseは基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値に一致し続ける。従って、ＦＦ補正後基本燃料噴射量「Fbase・KFF」（実線を参照）もＦＦ補正後基本燃料噴射量（＝筒内吸入空気量／目標空燃比）の真値（破線を参照）に一致し続ける。この結果、時刻ｔ１以降、指令燃料噴射量Fiは空燃比＝stoichに対応する真値と一致している。この結果、制御用空燃比abyfs(k)は、時刻ｔ１から上記むだ時間Ｌが経過した時刻ｔ２までの間、値AF1に維持されるとともに、時刻ｔ２以降、値AF1から理論空燃比stoichに向けて上述した上流側空燃比センサ６６の応答遅れ（時定数τs）に起因して一次遅れ特性をもって緩やかに増大していき理論空燃比stoichに収束する。
【００８７】
一方、遅延目標空燃比abyfrlow(k-N)は、上記むだ時間Ｌ及び上流側空燃比センサ６６の応答遅れ（時定数τs）を模擬した遅延処理が目標空燃比abyfr(k)に対して施された値である。従って、遅延目標空燃比abyfrlow(k-N)も、時刻ｔ１から上記むだ時間Ｌが経過した時刻ｔ２までの間、値AF1に維持されるとともに、時刻ｔ２以降、値AF1から理論空燃比stoichに向けて時定数τsの一次遅れ特性をもって緩やかに増大していき理論空燃比stoichに収束する。即ち、遅延目標空燃比abyfrlow(k-N)は、時刻ｔ１以降も、制御用空燃比abyfs(k)と同じ値を採り続ける。換言すれば、時刻ｔ１以降も、フィードバック補正量DFB（偏差積分値SDAF）がゼロに維持される。
【００８８】
このように、「学習完了状態」では、目標空燃比abyfrが急変しても、ＦＦ補正の実行に起因して空燃比に大きな荒れが発生することなく、空燃比を迅速に目標空燃比に収束させることができる。
【００８９】
これに対し、図７は、アルコール濃度Ｒに大きな変化があったこと等により「学習未完了状態」にある場合においてＦＦ補正が行われる場合の一例を示した図６に対応するタイムチャートである。図７における時刻ｔ１、ｔ２は、図６における時刻ｔ１、ｔ２にそれぞれ対応している。
【００９０】
図７でも、時刻ｔ１以前において、制御用空燃比abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）に収束している場合（定常状態）が示されている。「学習未完了状態」であるから、学習補正基本燃料噴射量Fbase（＝Mc(k)/stoich・Ｇ）は基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値から（ｈ２だけ大きい方向に）ずれている。この結果、ＦＦ補正後基本燃料噴射量「Fbase・KFF」（＝Ｆ１）（実線を参照）がＦＦ補正後基本燃料噴射量（＝筒内吸入空気量／目標空燃比）の真値（破線を参照）からｈ１だけ大きい方向にずれているものとする。このずれｈ１は、フィードバック補正量DFB（偏差積分値SDAF）が値−ｈ１に維持されることで偏差積分値SDAFにより補償されている。これにより、時刻ｔ１以前において、指令燃料噴射量Fi（＝Fbase・KFF＋DFB）が空燃比＝AF1に対応する真値と一致していて、制御用空燃比（検出空燃比）abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）に収束している。
【００９１】
時刻ｔ１にて、目標空燃比abyfr(k)が値AF1から理論空燃比stoichにステップ的に変化すると、図６と同様、フィードフォワード補正係数KFFが「１」より大きい値から「１」にステップ的に変化して、ＦＦ補正後基本燃料噴射量「Fbase・KFF」が値Ｆ１から値Ｆ２にステップ的に減少する。このように、ＦＦ補正によりフィードフォワード補正係数KFFの大きさがより小さい値にステップ的に変化するため、時刻ｔ１以降、ＦＦ補正後基本燃料噴射量「Fbase・KFF」（＝Ｆ２）（実線を参照）の真値（破線を参照）からのずれは、値ｈ１から値ｈ２（＜ｈ１）に減少する。
【００９２】
一方、時刻ｔ１〜ｔ２の間、図６と同様、制御用空燃比abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）と一致し続けるから、時刻ｔ１〜ｔ２の間、フィードバック補正量DFB（偏差積分値SDAF）は値−ｈ１になお維持され続ける。この結果、時刻ｔ１〜ｔ２の間、指令燃料噴射量Fiは空燃比＝stoichに対応する真値よりも（ｈ１−ｈ２）だけ小さい値に調整されて、時刻ｔ１〜ｔ２の間、空燃比が「理論空燃比stoichよりもリーンの空燃比」に制御される。これにより、時刻ｔ２以降、制御用空燃比abyfs(k)は、値AF1から上記「理論空燃比stoichよりもリーンの空燃比」に向けて増大していき、理論空燃比stoichを超える（オーバーシュートする）。
【００９３】
一方、時刻ｔ２以降、遅延目標空燃比abyfrlow(k-N)は、図６と同様、値AF1から理論空燃比stoichに向けて時定数τsの一次遅れ特性をもって増大していき理論空燃比stoichに収束する。この結果、時刻ｔ２以降、空燃比偏差DAFが正の値となることで、フィードバック補正量DFB（偏差積分値SDAF）が値−ｈ１から増大していく。このため、時刻ｔ２以降、指令燃料噴射量Fiが増大していき、その後、理論空燃比stoichを超えた（オーバーシュートした）制御用空燃比abyfs(k)は減少を開始する。
【００９４】
以降、フィードバック補正量DFB（偏差積分値SDAF）が値−ｈ２の周りを複数回振動しながら値−ｈ２に収束していき（即ち、指令燃料噴射量Fiが空燃比＝stoichに対応する真値に収束していき）、この結果、制御用空燃比abyfs(k)は、理論空燃比stoichの周りを複数回振動しながら理論空燃比stoichに収束していく。
【００９５】
このように、「学習完了状態」とは異なり、「学習完了未状態」では、目標空燃比abyfrが急変した場合にＦＦ補正を行うと、ＦＦ補正後基本燃料噴射量「Fbase・KFF」の真値からのずれ量が急変すること（ｈ１→ｈ２）に起因して、空燃比に大きな荒れ（オーバーシュートを含む）が発生する。この結果、空燃比が迅速に目標空燃比に収束し得ない。
【００９６】
以上、図６、図７を参照しながら説明したように、上述した「ＦＦ補正の実行に起因する空燃比の比較的大きな荒れ」は、「学習完了状態」では発生しないが「学習未完了状態」では発生し得る。そこで、本例では、「学習未完了状態」にある場合、その後において「学習完了状態」となるまでの期間、ＦＦ補正係数KFF＝１に固定されてＦＦ補正が禁止される。
【００９７】
図８は、アルコール濃度Ｒに大きな変化があったこと等により「学習未完了状態」にある場合において本例のようにＦＦ補正が禁止される場合（KFF＝１で固定）の一例を示した図６、図７に対応するタイムチャートである。図８における時刻ｔ１、ｔ２は、図６、図７における時刻ｔ１、ｔ２にそれぞれ対応している。
【００９８】
図８でも、時刻ｔ１以前において、制御用空燃比abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）に収束している場合（定常状態）が示されている。「学習未完了状態」であるから、学習補正基本燃料噴射量Fbase（＝Mc(k)/stoich・Ｇ）は基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値から（ｈ２だけ大きい方向に）ずれている。ＦＦ補正が禁止されているから（KFF＝１で固定）、時刻ｔ１以前において、目標空燃比abyfr(k)＝AF1であるにもかかわらずＦＦ補正後基本燃料噴射量「Fbase・KFF」が値Ｆ２（stoichに対応する値）に維持されている。この結果、ＦＦ補正後基本燃料噴射量「Fbase・KFF」（＝Ｆ２）（実線を参照）も基本燃料噴射量（＝筒内吸入空気量／理論空燃比）の真値（破線を参照）からｈ２だけ大きい方向にずれているものとする。この燃料の増加分ｈ２とＦＦ補正禁止による燃料の減少分（Ｆ１−Ｆ２）は、フィードバック補正量DFB（偏差積分値SDAF）が値ｈ３（＝（Ｆ１−Ｆ２）−ｈ２）に維持されることで偏差積分値SDAFにより補償されている。これにより、時刻ｔ１以前において、指令燃料噴射量Fi（＝Fbase・KFF＋DFB）が空燃比＝AF1に対応する真値と一致していて、制御用空燃比（検出空燃比）abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）に収束している。
【００９９】
時刻ｔ１にて、目標空燃比abyfr(k)が値AF1から理論空燃比stoichにステップ的に変化する。しかしながら、ＦＦ補正が禁止されていることから、時刻ｔ１以降、ＦＦ補正後基本燃料噴射量「Fbase・KFF」がなお値Ｆ２に維持される。また、時刻ｔ１〜ｔ２の間、図６と同様、制御用空燃比abyfs(k)が遅延目標空燃比abyfrlow(k-N)（＝AF1）と一致し続けるから、時刻ｔ１〜ｔ２の間、フィードバック補正量DFB（偏差積分値SDAF）は値ｈ３になお維持され続ける。この結果、時刻ｔ１〜ｔ２の間もなお、指令燃料噴射量Fiが空燃比＝AF1に対応する真値と一致し続け、時刻ｔ１〜ｔ２の間も空燃比が値AF1に制御される。この結果、制御用空燃比abyfs(k)は、時刻ｔ２から上記むだ時間Ｌが経過した時刻ｔ３までの間もなお、値AF1に維持され続ける。
【０１００】
一方、遅延目標空燃比abyfrlow(k-N)は、図６と同様、時刻ｔ２以降、値AF1から理論空燃比stoichに向けて時定数τsの一次遅れ特性をもって増大していき理論空燃比stoichに収束する。この結果、時刻ｔ２以降、空燃比偏差DAFが負の値となることで、フィードバック補正量DFB（偏差積分値SDAF）が値ｈ３から減少していく。このため、時刻ｔ２以降、指令燃料噴射量Fiが減少していく。この結果、時刻ｔ３以降、制御用空燃比abyfs(k)は値AF1から増大を開始する。
【０１０１】
以降、減少していくフィードバック補正量DFB（偏差積分値SDAF）は値−ｈ２に収束していき（即ち、指令燃料噴射量Fiが空燃比＝stoichに対応する真値に収束していき）、この結果、増大していく制御用空燃比abyfs(k)はオーバーシュートすることなく理論空燃比stoichに収束していく。
【０１０２】
このように、「学習完了未状態」においてＦＦ補正が禁止されると、目標空燃比abyfrが急変した場合であっても、空燃比に大きな荒れ（オーバーシュート）が発生しない。この結果、ＦＦ補正が禁止されない場合（図７に示したようにオーバーシュートが発生する場合）に比して、空燃比がより迅速に目標空燃比に収束し得る。
【０１０３】
<学習値の記憶>
学習処理手段Ａ１８は、「学習未完了状態」から「学習完了状態」へ移行した場合、現時点での学習値Ｇを現時点でのアルコール濃度Ｒ（従って、係数Ｋ）に対応させて学習記憶値GmemとしてバックアップＲＡＭ７４に記憶する。より具体的には、図９に示すように、係数Ｋの値の範囲が複数に分類されていて（図９では分類１〜分類４）、現時点での係数Ｋに対応する分類の学習記憶値Gmem(m)(m:1,2,3,4)が現時点での学習値Ｇと等しい値に設定されてバックアップＲＡＭ７４に記憶される。図９は、分類１〜分類４の全ての分類について学習記憶値Gmemが設定されている状態を示している。この点について学習処理手段Ａ１８は前記「記憶手段」に相当する。
【０１０４】
いま、上述した「基本燃料噴射量の誤差」が「アルコール濃度センサ６９の検出誤差」のみに起因して発生するものと仮定する（換言すれば、上述した「インジェクタ３９のばらつき」等が発生していないものと仮定する）。この場合において、アルコール濃度Ｒ（従って、係数Ｋ）に大きな変化があった場合を考える。この場合において、アルコール濃度変化後の係数Ｋに対応する学習記憶値Gmem(m)が既に記憶されている場合、アルコール濃度変化後における学習Ｇの上記「学習収束値」はこの学習記憶値Gmem(m)と一致する。このことは、アルコール濃度変化後において学習値Ｇをこの学習記憶値Gmem(m)と等しい値に設定することで直ちに「学習完了状態」となることを意味している。「学習完了状態」となれば上述のごとくＦＦ補正を禁止する必要がない（図６を参照）。
【０１０５】
そこで、学習処理手段Ａ１８は、アルコール濃度Ｒ（従って、係数Ｋ）に大きな変化があった場合であっても、アルコール濃度変化後の係数Ｋに対応する学習記憶値Gmem(m)が既にバックアップＲＡＭ７４に記憶されているときは、学習値Ｇをアルコール濃度変化後の係数Ｋに対応する学習記憶値Gmem(m)と等しい値に設定し、且つ、上述した強制的に「学習未完了状態」とする処理を行わない（即ち、ＦＦ補正の禁止を行わない）。これにより、ＦＦ補正の禁止の頻度を少なくすることができる。以上が、本装置が行う空燃比制御の概要である。
【０１０６】
（実際の作動）
次に、本装置の実際の作動について説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。
【０１０７】
<空燃比制御>
ＣＰＵ７１は、図１０にフローチャートにより示した（学習補正）基本燃料噴射量Fbase、ＦＦ補正係数KFF、指令燃料噴射量Fiの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、ＣＰＵ７１はステップ１０００から処理を開始してステップ１００５に進み、アルコール濃度Ｒ取得タイミングが到来したか否かを判定し、「Ｎｏ」と判定する場合、ステップ１０４０に直ちに進む。アルコール濃度Ｒ取得タイミングは、例えば、本例では、機関始動から所定時間が経過した時点で到来する。
【０１０８】
「Ｙｅｓ」と判定する場合、ＣＰＵ７１はステップ１０１０に進んで、アルコール濃度センサ６９から得られるアルコール濃度Ｒを取得・更新するとともに、図４に示したテーブルに基づいて係数Ｋを取得・更新する。この係数ＫはバックアップＲＡＭ７４に記憶される。
【０１０９】
続いて、ＣＰＵ７１はステップ１０１５に進み、係数変化量ΔＫを、今回更新された係数Ｋと前回の係数Ｋ（＝Ｋｂ）との差の絶対値|Ｋ−Ｋｂ|に設定し、続くステップ１０２０にて係数変化量ΔＫが所定値ΔＫrefよりも大きいか否かを判定する。これにより、アルコール濃度Ｒ（従って、係数Ｋ）に大きな変化があったか否かが判定される。
【０１１０】
「Ｙｅｓ」と判定する場合、ＣＰＵ７１はステップ１０２５に進んでフラグＣＨＧを「１」に設定し、「Ｎｏ」と判定する場合、ＣＰＵ７１はステップ１０３０に進んでフラグＣＨＧを「０」に設定する。ＣＨＧ＝１はアルコール濃度Ｒに大きな変化があったことを示し、ＣＨＧ＝０はアルコール濃度Ｒに大きな変化がなかったことを示す。
【０１１１】
次に、ＣＰＵ７１はステップ１０３５に進んで、値stoich0（アルコール濃度Ｒ＝０％での理論空燃比）に値（１/Ｋ）を乗じることで、今回更新された係数Ｋ（即ち、現在のアルコール濃度Ｒ）に対応する理論空燃比stoichを決定する。
【０１１２】
ＣＰＵ７１はステップ１０４０に進むと、テーブルMapMc(NE,Ga)に基づいて今回の吸気行程を迎える気筒（以下、「燃料噴射気筒」と云うこともある。）に吸入された今回の筒内吸入空気量Mc(k)を決定する。
【０１１３】
次に、ＣＰＵ７１はステップ１０４５に進んで、上記(1)式に従って学習補正基本燃料噴射量Fbaseを決定する。ここで、学習値Ｇとしては後述する図１３のルーチンで更新されている最新値が使用される。
【０１１４】
次いで、ＣＰＵ７１はステップ１０５０に進み、テーブルMapabyfr(NE,Accp,THW)に基づいてアルコール濃度Ｒ＝０％のときの目標空燃比を求め、これに値(１/Ｋ)を乗じて今回の目標空燃比abyfr(k)を決定する。
【０１１５】
続いて、ＣＰＵ７１はステップ１０５５に進んで、フラグＸＣＯＭＰが「１」であるか否かを判定する。ここで、フラグＸＣＯＭＰは後述する図１３のルーチンで決定され、ＸＣＯＭＰ＝１は「学習完了状態」を表し、ＸＣＯＭＰ＝０は「学習未完了状態」を表す。
【０１１６】
「Ｎｏ」と判定する場合、ＣＰＵ７１はステップ１０６０に進み、ＦＦ補正係数KFFを「１」に固定する。これにより、「学習未完了状態」にてＦＦ補正が禁止される。一方、「Ｙｅｓ」と判定する場合、ＣＰＵ７１はステップ１０６５に進んで、上記(2)式に従って、ＦＦ補正係数KFFを目標空燃比abyfr(k)に応じた値に決定する。これにより、「学習完了状態」にてＦＦ補正が実行される。
【０１１７】
ＣＰＵ７１はステップ１０７０に進むと、上記(3)式に従って、指令燃料噴射量Fiを決定する。ここで、ＦＢ補正量DFBとしては後述する図１１のルーチンで更新されている最新値が使用される。
【０１１８】
そして、ＣＰＵ７１はステップ１０７５に進んで、上記指令燃料噴射量Fiの燃料の噴射指示を行い、続くステップ１０８０にてabyfr(k)を時定数τsをもってローパスフィルタ処理してローパスフィルタ通過後目標空燃比abyfrlow(k)を取得した後、ステップ１０９５に進んで本ルーチンを一旦終了する。以上により、学習補正基本燃料噴射量FbaseがＦＦ補正、及びＦＢ補正されて決定された指令燃料噴射量Fiの燃料の噴射指示が燃料噴射気筒に対してなされる。ローパスフィルタ通過後目標空燃比abyfrlow(k)は、後述する図１１のルーチンでＦＢ補正量DFBを算出する際に使用される。
【０１１９】
<ＦＢ補正量の計算>
次に、ＦＢ補正量DFBを算出する際の作動について説明すると、ＣＰＵ７１は図１１にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期が到来する毎に、繰り返し実行するようになっている。
【０１２０】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１１００から処理を開始し、ステップ１１０５に進んで、フィードバック条件が成立しているか否かを判定する。フィードバック条件は、例えば、機関の冷却水温THWが第１所定温度以上であって、上流側空燃比センサ６６が正常（活性状態となっていることを含む）であって、筒内吸入空気量Mc(k)（或いは、負荷）が所定値以下であるときに成立する。
【０１２１】
いま、フィードバック条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、テーブルMapＮ(Mc(k),NE)に基づいて上記ストローク数Ｎを決定する。これは、ストローク数Ｎが、筒内吸入空気量Mc(k)が大きいほど、或いは運転速度NEが大きいほど小さくなることに基づく。
【０１２２】
次に、ＣＰＵ７１はステップ１１１５に進んで、現時点の上流側空燃比センサ６６の出力値Vabyfsと後述するルーチンにて求められているサブフィードバック補正量Vafsfbの最新値との和である制御用空燃比相当出力値(Vabyfs+Vafsfb)をテーブルMapabyfs(Vabyfs+Vafsfb)に基づいて変換することにより、アルコール濃度Ｒ＝０％のときの制御用空燃比abyfs1(k)を求め（図２を参照）、これに値(1/Ｋ)を乗じて現時点における制御用空燃比abyfs(k)を求める。
【０１２３】
次いで、ＣＰＵ７１はステップ１１２０に進み、上記(6)式に従って、空燃比偏差DAFを求め、続くステップ１１２５にて、上記(7)式に従って、ＦＢ補正量DFBを求める。続いて、ＣＰＵ７１はステップ１１３０に進み、その時点における空燃比偏差DAFの偏差積分値SDAFに上記ステップ１１２０にて求めた空燃比偏差DAFを加えて偏差積分値SDAFを更新した後、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１２４】
以上により、ＦＢ補正量DFBが求められ、このＦＢ補正量DFBが前述した図１０のステップ１０７０より指令燃料噴射量Fiに反映されることで空燃比フィードバック制御が実行される。
【０１２５】
一方、ステップ１１０５の判定時において、フィードバック条件が成立していない場合、ＣＰＵ７１はステップ１１０５にて「Ｎｏ」と判定してステップ１１３５に進んでＦＢ補正量DFBの値を「０」に設定し、その後ステップ１１９５に進んで本ルーチンを一旦終了する。このように、フィードバック条件が成立していない場合、ＦＢ補正量DFBを「０」として学習補正基本燃料噴射量FbaseのＦＢ補正を行わない。
【０１２６】
<サブフィードバック補正量の計算>
次に、サブフィードバック補正量Vafsfbを算出する際の作動について説明すると、ＣＰＵ７１は図１２にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。
【０１２７】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１２００から処理を開始し、ステップ１２０５に進んで、サブフィードバック条件が成立しているか否かを判定する。サブフィードバック条件は、例えば、前述したステップ１１０５のフィードバック条件に加え、機関の冷却水温THWが前記第１所定温度よりも高い第２所定温度以上のときに成立する。
【０１２８】
いま、サブフィードバック条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、上記(4)式に従って、出力偏差量DVoxsを求める。次に、ＣＰＵ７１はステップ１２１５に進んで、下記(8)式に基づき出力偏差量DVoxsの微分値DDVoxsを求める。
【０１２９】
DDVoxs＝(DVoxs−DVoxs1)／Δt  ・・・(8)
【０１３０】
上記(8)式において、DVoxs1は前回の本ルーチン実行時において後述するステップ１２３０にて更新された出力偏差量DVoxsの前回値である。また、Δtは本ルーチンが前回実行された時点から今回実行された時点までの時間である。次いで、ＣＰＵ７１はステップ１２２０に進み、上記(5)式に基づいてサブフィードバック補正量Vafsfbを求める。
【０１３１】
続いて、ＣＰＵ７１はステップ１２２５に進んで、その時点における出力偏差量の積分値SDVoxsに上記ステップ１２１０にて求めた出力偏差量DVoxsを加えて、出力偏差量の積分値SDVoxsを更新し、続くステップ１２３０にて、出力偏差量DVoxsの前回値DVoxs1を上記ステップ１２１０にて求めた出力偏差量DVoxsと等しい値に設定した後、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１３２】
以上により、サブフィードバック補正量Vafsfbが求められる。このサブフィードバック補正量Vafsfbは、前述した図１１のルーチンの次回の実行時においてステップ１１１５にて制御用空燃比abyfsを求めるために用いられる。
【０１３３】
一方、ステップ１２０５の判定時において、サブフィードバック条件が不成立であると、ＣＰＵ７１は同ステップ１２０５にて「Ｎｏ」と判定してステップ１２３５に進んでサブフィードバック補正量Vafsfbの値を「０」に設定し、ステップ１２９５に進んで本ルーチンを一旦終了する。このように、サブフィードバック条件が不成立であるときは、サブフィードバック補正量Vafsfbを「０」としてサブフィードバック制御に基づく空燃比フィードバック制御を行わない。
【０１３４】
次に、学習値Ｇの更新、学習完了判定を行う際の作動について説明すると、ＣＰＵ７１は図１３にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。
【０１３５】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１３０２に進み、偏差積分値SDAFを時定数τsをもってローパスフィルタ処理してローパスフィルタ通過後偏差積分値SDAFlow（前記「偏差積分値の定常的な成分」に対応）を取得する。次いで、ＣＰＵ７１はステップ１３０４に進み、フラグＸＣＯＭＰの値が「０」であるか否か（即ち、「学習未完了状態」か「学習完了状態」か）を判定する。
【０１３６】
先ず、「学習未完了状態」である場合について説明する。この場合、フラグＸＣＯＭＰの値が「０」となっている。従って、ＣＰＵ７１はステップ１３０４にて「Ｙｅｓ」と判定してステップ１３０６に進み、学習値Ｇの更新タイミングが到来しているか否かを判定し、「Ｎｏ」と判定する場合、ステップ１３９５に直ちに進んで本ルーチンを一旦終了する。学習値Ｇの更新タイミングは、例えば、本例では、燃料噴射回数が所定の回数に達する毎に到来する。
【０１３７】
このような処理は、学習値Ｇの更新タイミングが到来するまで繰り返し実行される。これにより、図１１のステップ１１３０にて更新されていく偏差積分値SDAFの更新に同期してローパスフィルタ通過後偏差積分値SDAFlowが更新されていく。
【０１３８】
そして、学習値Ｇの更新タイミングが到来した場合、ＣＰＵ７１はステップ１３０６に進んだとき「Ｙｅｓ」と判定してステップ１３０８に進み、目標空燃比abyfr(k)が理論空燃比stoichと等しいか否かを判定し、「Ｎｏ」と判定する場合、ステップ１３９５に直ちに進んで本ルーチンを一旦終了する。即ち、目標空燃比abyfr(k)が理論空燃比stoichと異なる場合、学習値Ｇの更新（即ち、上述した「学習処理」）が実行されない。
【０１３９】
以下、目標空燃比abyfr(k)が理論空燃比stoichと等しい場合について説明する。この場合、ＣＰＵ７１はステップ１３０８にて「Ｙｅｓ」と判定してステップ１３１０に進み、図１１のステップ１１３０にて更新されている偏差積分値SDAFの絶対値｜SDAF｜が収束判定値Zより大きいか否かを判定する。
【０１４０】
いま、偏差積分値の絶対値｜SDAF｜が収束判定値Zより大きいものとすると（即ち、学習値Ｇの収束判定条件が成立していないものとすると）、ＣＰＵ７１はステップ１３１２に進んで、ステップ１３１２内に記載の式に従って学習値Ｇを更新し、更新した学習値ＧをバックアップＲＡＭ７４に記憶する。ローパスフィルタ通過後偏差積分値SDAFlowとしては、ステップ１３０２にて更新されている最新値が使用される。
【０１４１】
次いで、ＣＰＵ７１はステップ１３１４に進んで、その時点での偏差積分値SDAFからローパスフィルタ通過後偏差積分値SDAFlowを減じることで偏差積分値SDAFを再設定し、続くステップ１３１６にてローパスフィルタ通過後偏差積分値SDAFlowを「０」に設定した後、ステップ１３９５に進んで本ルーチンを一旦終了する。
【０１４２】
このように、「学習未完了状態（ＸＣＯＭＰ＝０）」であって且つ目標空燃比abyfr(k)が理論空燃比stoichと等しい場合、学習値Ｇの更新タイミングが到来する毎に学習値Ｇの収束判定が行われる。この収束判定において収束判定条件が成立していない場合（ステップ１３１０で「Ｙｅｓ」と判定される場合）、上述した「学習処理」が実行される。
【０１４３】
これにより、「学習処理」が実行される毎に、偏差積分値SDAFが「０」に近づいていくとともに、学習値Ｇが上述した「学習収束値」（即ち、上記「基本燃料噴射量の誤差」の大きさを正確に表す値）に近づいていく。このような処理は、学習値Ｇの収束判定条件が成立するまで繰り返し実行される。
【０１４４】
そして、学習値Ｇの収束判定条件が成立したものとすると（ステップ１３１０にて「Ｎｏ」）、ＣＰＵ７１はステップ１３１８に進んでフラグＸＣＯＭＰの値を「０」から「１」に変更する。これにより、「学習未完了状態」から「学習完了状態」へ移行する。
【０１４５】
次いで、ＣＰＵ７１はステップ１３２０に進み、フラグＣＨＧ（図１０のステップ１０２５、１０３０を参照）を「０」に設定し、続くステップ１３２２にて現在の係数Ｋに対応する分類ｍについて学習記憶値Gmem(m)をステップ１３１２にて更新されている最新の学習値Ｇと等しい値に設定し、続くステップ１３２４にて現在の係数Ｋに対応する分類ｍについてフラグＤＴ(m)を「１」に設定し、ステップ１３９５に進む。ここで、ＤＴ(m)＝１は分類ｍについて学習記憶値Ｇmem(m)がバックアップＲＡＭ７４に記憶されている状態にあることを示し、ＤＴ(m)＝０は分類ｍについて学習記憶値Ｇmem(m)がバックアップＲＡＭ７４に記憶されていない状態にあることを示す。
【０１４６】
以降、ＣＰＵ７１はステップ１３０４に進んだとき「Ｎｏ」と判定してステップ１３２６に進むようになり、図１１のステップ１１３０にて更新されている偏差積分値SDAFの絶対値｜SDAF｜が再び上記収束判定値Zより大きくなったか否かをモニタするようになる。
【０１４７】
そして、ステップ１３２６にて「Ｎｏ」と判定する場合、ＣＰＵ７１はステップ１３３２に進んでフラグＣＨＧ＝１であるか否かを判定し、ここでも「Ｎｏ」と判定する場合、ステップ１３９５に進む。このように、「学習完了状態」では「学習処理」が行われない。なお、ステップ１３３２にて「Ｙｅｓ」と判定される場合については後述する。
【０１４８】
一方、ステップ１３２６にて「Ｙｅｓ」と判定する場合、ＣＰＵ７１はステップ１３２８に進んで、フラグＸＣＯＭＰを「１」から「０」に変更し、続くステップ１３３０にて現在の係数Ｋに対応する分類ｍについてフラグＤＴ(m)を「０」にクリアした後、ステップ１３１２以降の処理（即ち、「学習処理」）を行う。
【０１４９】
このように、「学習完了状態」（ＸＣＯＭＰ＝１）において学習値Ｇの上記収束判定条件が再び成立しなくなると、再び「学習未完了状態」（ＸＣＯＭＰ＝０）となるとともに、「学習処理」が再び繰り返し実行されていく。
【０１５０】
次に、ステップ１３３２にて「Ｙｅｓ」と判定される場合（即ち、「学習完了状態」においてフラグＣＨＧ＝１である場合）について説明する。これは、「学習完了状態」においてアルコール濃度Ｒに大きな変化があった場合に対応する。
【０１５１】
この場合、ＣＰＵ７１はステップ１３３４に進んで現在の係数Ｋ（即ち、アルコール濃度Ｒ変化後の係数Ｋ）に対応する分類ｍについてフラグＤＴ(ｍ)＝１であるか否かを判定する。ここで、「Ｎｏ」と判定する場合、ＣＰＵ７１はステップ１３３６に進み、フラグＸＣＯＭＰの値を「１」から「０」に変更する。このように、「学習完了状態」においてアルコール濃度Ｒに大きな変化があった場合、原則的には、後のステップ１３２６の「Ｙｅｓ」判定を待つまでもなく「学習完了状態」から「学習未完了状態」へ強制的に移行される。換言すれば、「学習完了状態」においてアルコール濃度Ｒに大きな変化があった場合、図１０のステップ１０５５にて「Ｎｏ」と判定されるようになり、ＦＦ補正が禁止される。なお、「学習未完了状態」（ＸＣＯＭＰ＝０）においてアルコール濃度Ｒに大きな変化があった場合も、同様に、図１０のステップ１０５５にて「Ｎｏ」と判定されて、ＦＦ補正が禁止される。
【０１５２】
一方、ステップ１３３４にて「Ｙｅｓ」と判定される場合、即ち、現在の係数Ｋ（即ち、アルコール濃度Ｒ変化後の係数Ｋ）に対応する分類ｍについて学習記憶値Gmem(m)が既にバックアップＲＡＭ７４に記憶されている場合、ＣＰＵ７１はステップ１３３８に進んで学習値Ｇを、その記憶されている学習記憶値Gmem(m)と等しい値に設定し、続くステップ１３４０にてフラグＣＨＧを「１」から「０」に変更する。
【０１５３】
このように、「学習完了状態」においてアルコール濃度Ｒに大きな変化があった場合であっても、現在の係数Ｋ（即ち、アルコール濃度Ｒ変化後の係数Ｋ）に対応する分類ｍについて学習記憶値Gmem(m)が既にバックアップＲＡＭ７４に記憶されている場合、学習値Ｇがその記憶されている学習記憶値Gmem(m)と等しい値に設定されるとともに、「学習完了状態」（ＸＣＯＭＰ＝１）が維持される。即ち、ＦＦ補正が禁止されない。
【０１５４】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第１実施形態によれば、学習値Ｇで補正した基本燃料噴射量（学習補正基本燃料噴射量）FbaseをＦＦ補正係数KFFとＦＢ補正量DFBとで補正して指令燃料噴射量Fi(＝Fbase・KFF＋DFB)が原則的に決定される。学習値Ｇが「基本燃料噴射量の誤差」に対応する値（学習収束値）に収束したか否か（「学習完了状態」か「学習未完了状態」か）が判定される。更には、燃料中のアルコール濃度に大きな変化があった場合、強制的に「学習未完了状態」とされる。そして、アルコール濃度が急変した場合（即ち、「学習未完了状態」にある場合）、ＦＦ補正係数KFFによる学習補正基本燃料噴射量Fbaseの補正（ＦＦ補正）が禁止される。
【０１５５】
この結果、「学習未完了状態」において目標空燃比abyfr(k)が急変した場合であっても、上述した「ＦＦ補正の実行に起因する空燃比の比較的大きな荒れの発生」が防止され、空燃比を迅速に目標空燃比に収束させることができる。
【０１５６】
（第２実施形態）
次に、本発明の第２実施形態に係る空燃比制御装置について説明する。この第２実施形態は、上記第１実施形態の図１１に示したルーチンに代えて図１４に示した図１１に対応するルーチンを実行する点においてのみ、上記第１実施形態と異なる。以下、係る相違点についてのみ説明する。
【０１５７】
図１４に示したルーチンは、ステップ１４０５、１４１０が追加された点においてのみ、図１１に示したルーチンと異なる。このステップ１４０５、１４１０の追加により、「学習完了状態」（ＸＣＯＭＰ＝１）では、空燃比偏差DAFは、上記第１実施形態と同様に「制御用空燃比abyfs(k)から遅延目標空燃比abyfrlow(k)を減じた値」に設定される。一方、「学習未完了状態」（ＸＣＯＭＰ＝０）では、空燃比偏差DAFは、「制御用空燃比abyfs(k)から現時点での目標空燃比abyfr(k)そのものを減じた値」に設定される。
【０１５８】
即ち、第２実施形態では、「学習未完了状態」において、ＦＦ補正が禁止されることに加えて、ＦＢ補正量DFBの算出に必要な空燃比偏差DAFが現時点での目標空燃比abyfr（k）そのものを用いて算出される。以下、このことによる作用・効果について図１５を参照しながら説明する。
【０１５９】
図１５は、アルコール濃度Ｒに大きな変化があったこと等により「学習未完了状態」にある場合において第２実施形態のようにＦＦ補正が禁止され（KFF＝１で固定）且つ現時点での目標空燃比abyfr(k)を用いて空燃比偏差DAFが算出される場合の一例を示した図８に対応するタイムチャートである。図１５における時刻ｔ１、ｔ２、ｔ３は、図８における時刻ｔ１、ｔ２、ｔ３にそれぞれ対応している。
【０１６０】
上述したように、上記第１実施形態（図８に示した例）では、時刻ｔ１〜ｔ２の間、空燃比偏差DAF(＝abyfs(k)−abyfrlow(k-N))が「０」に維持され続けるから、時刻ｔ１〜ｔ２の間、フィードバック補正量DFB（偏差積分値SDAF）は値ｈ３になお維持され続ける。このことに起因して、時刻ｔ２以降、初めて空燃比偏差DAFが負の値となり、時刻ｔ２以降、フィードバック補正量DFB（偏差積分値SDAF）が値ｈ３から値−ｈ２に向けて減少を開始する。これを受けて、空燃比が値AF1から理論空燃比stoichに収束していく。換言すれば、「学習未完了状態」において目標空燃比abyfr(k)が急変した場合、空燃比に大きな荒れが発生しないものの、遅延目標空燃比abyfrlow(k−N)を用いて空燃比偏差DAFが算出されることに起因して、空燃比が理論空燃比stoichに収束する時期が若干遅れる傾向があった。
【０１６１】
これに対し、第２実施形態（図１５に示した例）では、時刻ｔ１以降直ちに、空燃比偏差DAF（＝abyfs(k)−abyfr(k)）が負の値となり、時刻ｔ１以降、フィードバック補正量DFB（偏差積分値SDAF）が値ｈ３から値−ｈ２に向けて直ちに減少を開始する。これを受けて、空燃比が値AF1から理論空燃比stoichに収束していく。
【０１６２】
以上より、第２実施形態では、「学習未完了状態」において目標空燃比abyfr(k)が急変した場合において、空燃比に大きな荒れを発生させることなく、上記第１実施形態に比して、むだ時間Ｌだけより早い段階で空燃比を理論空燃比stoichに収束させることができる。
【０１６３】
本発明は上記第１、第２実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記第１、第２実施形態においては、「学習完了状態」か「学習未完了状態」かが判定され、「学習未完了状態」にてＦＦ補正が禁止される。加えて、アルコール濃度に大きな変化があった場合に強制的に「学習未完了状態」とされることで、アルコール濃度に大きな変化があった場合にＦＦ補正が禁止されるように構成されている。換言すれば、アルコール濃度の急変以外の要因で「学習未完了状態」となった場合においてもＦＦ補正が禁止される。
【０１６４】
これに対し、「学習完了状態」か「学習未完了状態」かの判定そのものを行うことなく、アルコール濃度に大きな変化があった場合にのみＦＦ補正が禁止されるように構成されてもよい。
【０１６５】
また、上記第１、第２実施形態においては、下流側空燃比センサ６７の出力値Voxsに基づくサブフィードバック制御が実行されているが、サブフィードバック制御を実行しないように構成してもよい。より具体的には、現時点での上流側空燃比センサ６６の出力値Vabyfsそのものと図２に示したテーブルMapabyfsとに基づいて得られるアルコール濃度Ｒ＝０％の場合における現時点での検出空燃比に値(1/Ｋ)を乗じることで、現時点でのアルコール濃度Ｒに対応する検出空燃比abyfs(k)が求められ、この検出空燃比abyfs(k)から遅延目標空燃比abyfrlow(k−N)（又は、目標空燃比abyfr(k)）を減じることで空燃比偏差DAFが算出されてもよい。
【図面の簡単な説明】
【０１６６】
【図１】本発明の第１実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図３】図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図４】アルコール濃度と係数Ｋとの関係を示したグラフである。
【図５】図１に示した空燃比制御装置が空燃比制御を実行する際の機能ブロック図である。
【図６】「学習完了状態」においてＦＦ補正が行われる場合の一例を示したタイムチャートである。
【図７】「学習未完了状態」においてＦＦ補正が行われる場合の一例を示したタイムチャートである。
【図８】図１に示した空燃比制御装置が適用されることで「学習未完了状態」においてＦＦ補正が禁止される場合の一例を示したタイムチャートである。
【図９】学習記憶値Gmemが係数Ｋで分類されて記憶されている状態を示した図である。
【図１０】図１に示したＣＰＵが実行する基本燃料噴射量、ＦＦ補正量、燃料噴射量の計算、及び噴射指示を行うためのルーチンを示したフローチャートである。
【図１１】図１に示したＣＰＵが実行するＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１２】図１に示したＣＰＵが実行するサブフィードバック補正量を計算するためのルーチンを示したフローチャートである。
【図１３】図１に示したＣＰＵが実行する学習値の更新、学習完了判定を行うためのルーチンを示したフローチャートである。
【図１４】本発明の第２実施形態に係る空燃比制御装置のＣＰＵが実行するＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１５】本発明の第２実施形態に係る空燃比制御装置が適用されることで「学習未完了状態」においてＦＦ補正が禁止される場合の一例を示したタイムチャートである。
【符号の説明】
【０１６７】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、５３…三元触媒（第１触媒）、６６…上流側空燃比センサ、６９…アルコール濃度センサ、７０…電気制御装置、７１…ＣＰＵ
【図１】
2009036107.tif 000003
【図２】
2009036107.tif 000004
【図３】
2009036107.tif 000005
【図４】
2009036107.tif 000006
【図５】
2009036107.tif 000007
【図６】
2009036107.tif 000008
【図７】
2009036107.tif 000009
【図８】
2009036107.tif 000010
【図９】
2009036107.tif 000011
【図１０】
2009036107.tif 000012
【図１１】
2009036107.tif 000013
【図１２】
2009036107.tif 000014
【図１３】
2009036107.tif 000015
【図１４】
2009036107.tif 000016
【図１５】
2009036107.tif 000017