(57)【特許請求の範囲】
【請求項１】
内燃機関の排気通路に設けられ、排ガスを浄化する触媒と、
前記排気通路の前記触媒の途中または下流側に設けられ、排ガスの空燃比を検出する空燃比センサと、
所定のフィードバック制御条件が成立しているときに、前記空燃比センサの出力値を目標値になるようにフィードバック制御するための、積分項を含む制御入力を算出する制御入力算出手段と、
前記フィードバック制御中、前記触媒の上流側の排ガスの空燃比が前記触媒の途中または下流側の排ガスの空燃比に良好に反映されていると推定されるような条件であって、前記所定のフィードバック制御条件と異なる所定の条件が成立しているか否かを判定する条件成立判定手段と、
当該条件成立判定手段により前記所定の条件が成立していると判定されたときに、前記フィードバック制御中の、前記所定の条件が成立している期間中に算出された前記積分項に相当する積分項相当値を、次回のフィードバック制御用の積分項の初期値として更新し、記憶するとともに、前記所定の条件が成立していないと判定されたときに、前記積分項の前記初期値の更新を保留する初期値更新手段と、を備え、
前記制御入力算出手段は、フィードバック制御の開始時に、前記積分項の初期値として、前記記憶された初期値を用いることを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記初期値更新手段は、前記積分項の前記初期値の更新を保留する際、前記積分項の前記初期値を、前記所定の条件が成立していないと判定されたときのフィードバック制御中に算出された積分項に相当する積分項相当値と異なる値に保持することを特徴とする請求項１に記載の内燃機関の空燃比制御装置。
【請求項３】
前記初期値更新手段は、前記積分項の前記初期値の更新を保留する際、前記積分項の前記初期値をその時点で記憶されている値に保持することを特徴とする請求項１または２に記載の内燃機関の空燃比制御装置。
【請求項４】
前記初期値更新手段は、前記フィードバック制御が停止されているときに、前記条件成立判定手段の判定結果に基づき、前記積分項の前記初期値の更新および当該更新の保留の一方を実行することを特徴とする請求項１に記載の内燃機関の空燃比制御装置。
【請求項５】
前記初期値更新手段は、前記フィードバック制御の停止直後において前記所定の条件が成立していると判定されたときに、前記積分項の初期値の更新を１回のみ実行することを特徴とする請求項４に記載の内燃機関の空燃比制御装置。
【請求項６】
前記積分項相当値は、前記フィードバック制御が終了する直前のタイミングで算出された積分項であることを特徴とする請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置。
【請求項７】
前記積分項相当値は、前記所定の条件が成立している期間中に算出された前記積分項の極大値および極小値の平均値であることを特徴とする請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置。
【請求項８】
前記初期値更新手段は、前記フィードバック制御中の前記空燃比センサの前記出力値の状態に応じて、前記フィードバック制御が終了する直前のタイミングで算出された積分項と、前記所定の条件が成立している期間中に算出された前記積分項の極大値および極小値の平均値との一方を、前記積分項相当値として選択することを特徴とする請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置。
【請求項９】
前記触媒の上流側に設けられ、排ガスの空燃比を検出する上流側空燃比センサと、
前記触媒に流入する排ガスの流量を取得する排ガス流量取得手段と、をさらに備え、
前記条件成立判定手段は、
前記フィードバック制御中、前記空燃比センサの前記出力値が前記目標値に対して反転していない状態で、前記上流側空燃比センサによって検出された排ガスの空燃比と前記取得された排ガス流量とに基づいて、ストイキ状態に対する排ガス中の余剰酸素量および不足酸素量の少なくとも一方の積算値を算出する酸素量積算値算出手段を有し、
当該算出された酸素量積算値が所定量以上になったときに、前記所定の条件が成立していると判定することを特徴とする、請求項１ないし８のいずれかに記載の内燃機関の空燃比制御装置。
【請求項１０】
前記条件成立判定手段は、
前記フィードバック制御中、前記空燃比センサの前記出力値が前記目標値に対して反転した反転回数を算出する反転回数算出手段を有し、
当該算出された反転回数が所定回数以上になったときに、前記所定の条件が成立していると判定することを特徴とする、請求項１ないし８のいずれかに記載の内燃機関の空燃比制御装置。
【請求項１１】
前記触媒の上流側に設けられ、排ガスの空燃比を検出する上流側空燃比センサをさらに備え、
前記制御入力算出手段は、前記空燃比センサの前記出力値が前記目標値になるように、スライディングモード制御により、前記制御入力としての目標空燃比を算出するとともに、前記上流側空燃比センサで検出された排ガスの空燃比が前記算出された目標空燃比になるように、前記内燃機関に供給される燃料量を制御し、
前記制御入力の積分項は、スライディングモード制御における適応則入力であることを特徴とする、請求項１ないし１０のいずれかに記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気通路の触媒の途中または下流側に設けられた空燃比センサの出力値を目標値になるようにフィードバック制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来の内燃機関の空燃比制御装置として、例えば特許文献１に開示されたものが知られている。この内燃機関の排気通路には、排ガスを浄化する排気浄化装置が設けられ、その上流側には空燃比センサが配置されている。この空燃比センサは、排ガス中の酸素濃度に基づいて空燃比をリニアに検出するタイプのものである。
【０００３】
この空燃比制御装置では、内燃機関の運転状態に応じて基本燃料噴射量を算出し、目標空燃比を設定するとともに、フィードバック制御の条件が成立しているときに、空燃比センサで検出された空燃比が目標空燃比になるよう、フィードバック制御によってフィードバック補正係数を算出する。そして、上記の基本燃料噴射量に目標空燃比およびフィードバック補正係数を乗算することによって、最終的な燃料噴射量を算出し、空燃比を制御する。
【０００４】
また、この空燃比制御装置では、フィードバック制御を停止した後、再開する時に、フィードバック制御の積分項を、運転状態に応じてあらかじめ設定された所定の初期値にセットするとともに、その後の所定期間、この初期値に保持することにより、フィードバック制御の再開時に、フィードバック制御量を適正に算出するようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３９６１２７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、この従来の空燃比制御装置では、フィードバック制御の再開時およびその後の所定期間、その積分項が、常に、運転状態に応じた所定の初期値にセットされる。このため、この初期値には、前回のフィードバック制御時に燃料噴射弁の噴射特性などに応じて算出された積分項の学習結果がまったく反映されないため、積分項が適正値からかけ離れた状態で、フィードバック制御が開始されるおそれがある。その場合には、積分項が適正値に達するまでに遅れが生じ、その間、フィードバック制御量を適切に算出できず、空燃比制御の精度が低下してしまう。
【０００７】
本発明は、このような課題を解決するためになされたものであり、空燃比のフィードバック制御の再開時に、その積分項の初期値を、それ以前のフィードバック制御において適正に学習された値に設定でき、それにより、空燃比制御の精度を向上させることができる内燃機関の空燃比制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この目的を達成するため、請求項１に係る内燃機関の空燃比制御装置は、内燃機関３の排気通路（実施形態における（以下、本項において同じ）排気管５）に設けられ、排ガスを浄化する触媒８と、排気通路の触媒８の途中または下流側に設けられ、排ガスの空燃比を検出する空燃比センサ（酸素濃度センサ２１）と、所定のフィードバック制御条件が成立しているときに、空燃比センサの出力値（Ｏ２出力値ＳＶＯ２）を目標値ＳＶＯ２ＣＭＤになるようにフィードバック制御するための、積分項（適応則入力ＵＡＤＰ）を含む制御入力（目標空燃比ＫＣＭＤ）を算出する制御入力算出手段（ＥＣＵ２、図２のステップ３，図３）と、フィードバック制御中、触媒８の上流側の排ガスの空燃比が触媒８の途中または下流側の排ガスの空燃比に良好に反映されていると推定されるような条件であって、所定のフィードバック制御条件と異なる所定の条件が成立しているか否かを判定する条件成立判定手段（ＥＣＵ２、図７，１１のステップ８２〜８４）と、条件成立判定手段により所定の条件が成立していると判定されたときに、当該フィードバック制御中の、所定の条件が成立している期間中に算出された積分項に相当する積分項相当値を、次回のフィードバック制御用の積分項の初期値（適応則入力ＵＡＤＰの初期値ＵＡＤＰＷＩＮＩ）として更新し、記憶するとともに、所定の条件が成立していないと判定されたときに、積分項の初期値の更新を保留する初期値更新手段（ＥＣＵ２、図４のステップ２８〜３０、図８のステップ２８，３０，１００，図９）と、を備え、制御入力算出手段は、フィードバック制御の開始時に、積分項の初期値として、記憶された初期値を用いることを特徴とする。
【０００９】
この空燃比制御装置によれば、触媒の途中または下流側に設けられた空燃比センサによって排ガスの空燃比が検出されるとともに、所定のフィードバック制御条件が成立しているときに、空燃比センサの出力値を目標値にフィードバック制御するための、積分項を含む制御入力を算出することによって、空燃比のフィードバック制御が行われる。
【００１０】
また、このフィードバック制御中、所定の条件が成立しているか否かを判定する。ここで、所定の条件とは、触媒の上流側の排ガスの空燃比が触媒の途中または下流側の排ガスの空燃比に良好に反映されていると推定されるような条件であって、所定のフィードバック制御条件と異なる条件である。この所定の条件が成立していると判定されたときには、当該フィードバック制御中の、所定の条件が成立している期間中に算出された積分項に相当する積分項相当値を、次回のフィードバック制御用の積分項の初期値として更新し、記憶する。一方、所定の条件が成立していないと判定されたときに、初期値の更新を保留する。以上のように更新・記憶された初期値は、次回のフィードバック制御の開始時に、積分項の初期値として用いられる。
【００１１】
以上のように、フィードバック制御中に上述した所定の条件が成立していると判定されたときのみ、所定の条件が成立している期間中に算出された積分項に相当する積分項相当値を初期値として更新し、次回のフィードバック制御の開始時に積分項の初期値として用いる。したがって、触媒の上流側の排ガスの空燃比を下流側の排ガスの空燃比に良好に反映した状態で算出（学習）された信頼性の高い積分項のみを、次回のフィードバック制御の開始時の初期値として採用でき、その結果、その開始当初から制御入力を適切に算出でき、空燃比制御の精度を向上させることができる。
請求項２に係る発明は、請求項１に記載の内燃機関の空燃比制御装置において、初期値更新手段は、積分項の初期値の更新を保留する際、積分項の初期値を、所定の条件が成立していないと判定されたときのフィードバック制御中に算出された積分項に相当する積分項相当値と異なる値に保持することを特徴とする。
請求項３に係る発明は、請求項１または２に記載の内燃機関の空燃比制御装置において、初期値更新手段は、積分項の初期値の更新を保留する際、積分項の初期値をその時点で記憶されている値に保持することを特徴とする。
請求項４に係る発明は、請求項１に記載の内燃機関の空燃比制御装置において、初期値更新手段は、フィードバック制御が停止されているときに、条件成立判定手段の判定結果に基づき、積分項の初期値の更新および更新の保留の一方を実行することを特徴とする。
請求項５に係る発明は、請求項４に記載の内燃機関の空燃比制御装置において、初期値更新手段は、フィードバック制御の停止直後において所定の条件が成立していると判定されたときに、積分項の初期値の更新を１回のみ実行することを特徴とする。
【００１２】
請求項６に係る発明は、請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置において、積分項相当値は、フィードバック制御が終了する直前のタイミングで算出された積分項である（図４のステップ２９，図９のステップ１０３）ことを特徴とする。
【００１３】
この空燃比制御装置によれば、触媒の上流側の排ガスの空燃比が触媒の途中または下流側の排ガスの空燃比に良好に反映されている期間中に算出された積分項のうち、フィードバック制御の停止直前に算出された積分項が、次回のフィードバック制御の開始時に積分項の初期値として用いられるので、複雑な演算処理を行うことなく、信頼性の高い積分項を、次回のフィードバック制御の開始時の初期値として採用することができる。それにより、空燃比制御において、演算負荷の上昇を回避しながら、高い制御精度を確保することができる。
【００１４】
請求項７に係る発明は、請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置において、積分項相当値は、所定の条件が成立している期間中に算出された積分項の極大値ＵＡＤＰＭＡＸおよび極小値ＵＡＤＰＭＩＮの平均値である（図９のステップ１０２）ことを特徴とする。
【００１５】
この空燃比制御装置によれば、所定の条件が成立している期間中、すなわち触媒の上流側の排ガスの空燃比が触媒の途中または下流側の排ガスの空燃比に良好に反映されている期間中に算出された積分項の極大値および極小値の平均値が、次回のフィードバック制御の開始時に積分項の初期値として用いられる。それにより、所定の条件が成立している期間中、空燃比センサの出力値が目標値を中心として反転を繰り返す状況にあることなどに起因して、積分項が安定せず、比較的大きな幅で反転を繰り返す状態にあるときでも、次回のフィードバック制御における積分項の初期値を適切に算出することができ、その結果、空燃比制御において、高い制御精度を確保することができる。
【００１６】
請求項８に係る発明は、請求項１ないし５のいずれかに記載の内燃機関の空燃比制御装置において、初期値更新手段は、フィードバック制御中の空燃比センサの出力値の状態に応じて、フィードバック制御が終了する直前のタイミングで算出された積分項と、所定の条件が成立している期間中に算出された積分項の極大値ＵＡＤＰＭＡＸおよび極小値ＵＡＤＰＭＩＮの平均値との一方を、積分項相当値として選択する（図９のステップ１０１〜１０３）ことを特徴とする。
【００１７】
この空燃比制御装置によれば、フィードバック制御中の空燃比センサの出力値の状態に応じて、フィードバック制御が終了する直前のタイミングで算出された積分項と、所定の条件が成立している期間中に算出された積分項の極大値および極小値の平均値との一方が、積分項相当値として選択される。それにより、例えば、空燃比センサの出力値が目標値を中心として反転を繰り返すことで、積分項が比較的大きな幅で反転を繰り返すような状況下では、積分項の極大値および極小値の平均値を積分項相当値として選択することによって、空燃比制御において、高い制御精度を確保することが可能となる。一方、空燃比センサの出力値が目標値付近に収束している状況下では、フィードバック制御の停止直前に算出された積分項を積分項相当値として選択することによって、空燃比制御において、演算負荷の上昇を回避しながら、高い制御精度を確保することができる。その結果、フィードバック制御中の空燃比センサの出力値と目標値との関係にかかわらず、高い制御精度を確保することができる。
【００１８】
請求項９に係る発明は、請求項１ないし８のいずれかに記載の内燃機関の空燃比制御装置において、触媒８の上流側に設けられ、排ガスの空燃比（実空燃比ＫＡＣＴ）を検出する上流側空燃比センサ（ＬＡＦセンサ２２）と、触媒８に流入する排ガスの流量ＧＡＩＲＣＬＡＶＢを取得する排ガス流量取得手段（エアフローメータ２３、ＥＣＵ２）と、をさらに備え、条件成立判定手段は、フィードバック制御中、空燃比センサの出力値が目標値ＳＶＯ２ＣＭＤに対して反転していない状態で、上流側空燃比センサによって検出された排ガスの空燃比と取得された排ガス流量ＧＡＩＲＣＬＡＶＢとに基づいて、ストイキ状態に対する排ガス中の余剰酸素量および不足酸素量の少なくとも一方の積算値（ＯＳＣ量ＯＳＣＰＭ）を算出する酸素量積算値算出手段（ＥＣＵ２、図６，１０のステップ６４〜７５）を有し、算出された酸素量積算値が所定量ＯＳＣＰＭＨ以上になったときに、所定の条件が成立していると判定すること（図７，１１のステップ８２、８３）を特徴とする。
【００１９】
触媒の下流側の排ガスの空燃比は、触媒における酸素の貯蔵状態に応じて変化するため、上流側の排ガスの空燃比とは必ずしも一致しない。例えば、内燃機関への燃料の供給を停止するフューエルカット運転が比較的長く行われた場合には、触媒に多量の酸素が貯蔵される。その状態で触媒にリッチな空燃比の排ガスが流入すると、触媒から放出された酸素による酸化反応が行われるため、触媒の下流側の排ガスの空燃比は、上流側の排ガスの空燃比よりもリーン側の値を示し、その状態は、触媒内の酸素の消費が終了するまで継続する。したがって、そのような状態で行われたフィードバック制御において得られた積分項は、上流側の排ガスの空燃比に対してずれた状態の下流側の排ガスの空燃比に基づいて算出されるため、信頼性に乏しい。
【００２０】
上記とは逆に、例えば、フューエルカット運転の後に、ＮＯｘの排出量を低減するためにリッチな空燃比の排ガスを触媒に供給する触媒還元制御が比較的長く行われた場合には、触媒に貯蔵された酸素量は非常に小さくなる。その状態で触媒にリーンな空燃比の排ガスが流入すると、排ガス中の余剰の酸素が触媒に貯蔵されるため、触媒の下流側の排ガスの空燃比は、上流側の排ガスの空燃比よりもリッチ側の値を示し、その状態は、触媒内で酸素が飽和するまで継続する。したがって、そのような状態で行われたフィードバック制御において得られた積分項もまた、信頼性に乏しい。
【００２１】
以上のような観点から、本発明によれば、フィードバック制御中、空燃比センサの出力値が目標値に対して反転していない状態で、上流側空燃比センサによって検出された排ガスの空燃比と排ガス流量に基づいて、ストイキ状態に対する排ガス中の余剰酸素量および不足酸素量の少なくとも一方の積算値を算出する。そして、算出された酸素量積算値が所定量以上になったとき、すなわち、触媒にリーンな空燃比の排ガスが流入し続けたことで、触媒に貯蔵された酸素が飽和状態になったとみなされるとき、または、触媒にリッチな空燃比の排ガスが流入し続けたことで、触媒に酸素がほとんどなくなったとみなされるときに、所定の条件が成立していると判定する。したがって、そのように判定された状態で算出された積分項を初期値として更新することにより、触媒の上流側の排ガスの空燃比が下流側の排ガスの空燃比に良好に反映した状態で算出された信頼性の高い積分項のみを、次回のフィードバック制御の開始時に初期値として用いることができ、それにより、空燃比制御の精度を向上させることができる。
【００２２】
請求項１０に係る発明は、請求項１ないし８のいずれかに記載の内燃機関の空燃比制御装置において、条件成立判定手段は、フィードバック制御中、空燃比センサの出力値が目標値ＳＶＯ２ＣＭＤに対して反転した反転回数（反転回数カウンタ値ＣＯ２ＲＶＳＰＭ）を算出する反転回数算出手段（ＥＣＵ２、図７，１１のステップ７６〜７９）を有し、算出された反転回数が所定回数ＣＴＯ２ＲＶＳＰＭＬ以上になったときに、所定の条件が成立していると判定すること（図７，１１のステップ８３、８４）を特徴とする。
【００２３】
前述したように、本発明では、空燃比センサの出力値が目標値になるように空燃比のフィードバック制御が行われるため、この出力値が目標値に対してリッチ側にあれば、それを補正するように、上流側の排ガスの空燃比がリーン側に制御され、さらにこのリーン側への制御に伴い、空燃比センサの出力値が目標値に対してリーン側に転じると、それを補正するように、上流側の排ガスの空燃比がリッチ側に制御される。したがって、空燃比センサの出力値の目標値に対する反転が繰り返されていることは、触媒の上流側の排ガスの空燃比が下流側の排ガスの空燃比に良好に反映している状態を示す。
【００２４】
以上のような観点から、本発明によれば、フィードバック制御中、空燃比センサの出力値の目標値に対する反転回数を算出するとともに、算出された反転回数が所定回数以上になったときに、所定の条件が成立していると判定する。したがって、そのように判定された状態で算出された積分項を初期値として更新することにより、触媒の上流側の排ガスの空燃比が下流側の排ガスの空燃比に良好に反映した状態で算出された信頼性の高い積分項のみを、次回のフィードバック制御の開始時に初期値として用いることができ、それにより、空燃比制御の精度を向上させることができる。
【００２５】
請求項１１に係る発明は、請求項１ないし１０のいずれかに記載の内燃機関の空燃比制御装置において、触媒８の上流側に設けられ、排ガスの空燃比（実空燃比ＫＡＣＴ）を検出する上流側空燃比センサ（ＬＡＦセンサ２２）をさらに備え、制御入力算出手段は、空燃比センサの出力値が目標値ＳＶＯ２ＣＭＤになるように、スライディングモード制御により、制御入力としての目標空燃比ＫＣＭＤを算出する（図２のステップ３，図３）とともに、上流側空燃比センサで検出された排ガスの空燃比が算出された目標空燃比ＫＣＭＤになるように、内燃機関３に供給される燃料量（燃料噴射量Ｔｏｕｔ）を制御し、制御入力の積分項は、スライディングモード制御における適応則入力ＵＡＤＰであることを特徴とする。
【００２６】
この構成によれば、触媒の上流側には、上流側空燃比センサが設けられている。また、制御入力としての目標空燃比を、空燃比センサの出力値が目標値になるように、スライディングモード制御により算出する。したがって、空燃比センサで検出された排ガスの空燃比を用い、外乱の影響が少なく、かつ目標値への収束が早いという特性を有するスライディングモード制御によって、目標空燃比を適切に算出することができる。
【００２７】
また、そのように算出された目標空燃比を用いて、上流側空燃比センサで検出された排ガスの空燃比が算出された目標空燃比になるように、内燃機関に供給される燃料量を制御するので、空燃比の制御精度をさらに向上させることができる。また、制御入力の積分項は、スライディングモード制御における適応則入力に相当する。したがって、スライディングモード制御の開始時において適応則入力を初期化する際に、本発明による前述した利点を同様に得ることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１実施形態による空燃比制御装置を、内燃機関とともに示す図である。
【図２】燃料噴射量の算出処理を示すを示すフローチャートである。
【図３】目標空燃比のＣＡＴ後Ｆ／Ｂ制御用値の算出処理のサブルーチンを示すフローチャートである。
【図４】適応則入力の算出処理のサブルーチンを示すフローチャートである。
【図５】適応則入力の今回成分の算出処理のサブルーチンを示すフローチャートである。
【図６】適応則入力の初期値更新許可判定処理のサブルーチンを示すフローチャートである。
【図７】図６の初期値更新許可判定処理の残りの部分を示すフローチャートである。
【図８】第２実施形態の空燃比制御装置における適応則入力の算出処理のサブルーチンを示すフローチャートである。
【図９】適応則入力の初期値の算出処理のサブルーチンを示すフローチャートである。
【図１０】適応則入力の初期値更新許可判定処理のサブルーチンを示すフローチャートである。
【図１１】図１０の初期値更新許可判定処理の残りの部分を示すフローチャートである。
【発明を実施するための形態】
【００２９】
以下、図面を参照しながら、本発明の第１実施形態に係る内燃機関の空燃比制御装置について説明する。図１に示すように、本実施形態の空燃比制御装置１は、ＥＣＵ２を備えており、このＥＣＵ２は、内燃機関（以下「エンジン」という）３の空燃比制御を含む各種の制御処理を行う。エンジン３は、車両（図示せず）に搭載された、例えば４気筒のガソリンエンジンである。エンジン３の吸気管４には、スロットル弁６が設けられ、その下流側の吸気マニホールド４ａには、燃料噴射弁（以下「インジェクタ」という）７が設けられている。インジェクタ７の開弁時間および開閉タイミングは、ＥＣＵ２によって制御され、それにより、燃料噴射量Ｔｏｕｔおよび燃料噴射時期が制御される。
【００３０】
一方、排気管５の下流側には、触媒８が設けられている。この触媒８は、三元触媒で構成されており、酸化還元作用によって、排ガス中のＣＯ、ＨＣおよびＮＯｘを浄化する。また、三元触媒は、酸素を貯蔵する酸素貯蔵能を有する。
【００３１】
また、排気管５の触媒８よりも下流側には、酸素濃度センサ（以下「Ｏ２センサ」という）２１が設けられている。Ｏ２センサ２１は、触媒８の下流側における排ガス中の酸素濃度を検出し、その酸素濃度に応じた検出信号をＥＣＵ２に出力する。また、このＯ２センサ２１は、混合気の理論空燃比に相当する排ガスの空燃比の前後において急激に変化する出力特性を有する、いわゆる反転タイプのものであり、その検出値（以下「Ｏ２出力値」という）ＳＶＯ２は、排ガス空燃比がリッチ側にあるほど、より大きな値を示す。なお、「排ガス空燃比」とは、排ガス中の空気と可燃性気体との重量比をいう。
【００３２】
また、排気管５の触媒８よりも上流側には、ＬＡＦセンサ２２が設けられている。ＬＡＦセンサ２２は、広範囲の排ガス空燃比に対して、排ガス中の酸素濃度をリニアに検出し、酸素濃度に応じた排ガス空燃比（以下「実空燃比」という）ＫＡＣＴを表す検出信号をＥＣＵ２に出力する。この実空燃比ＫＡＣＴ、および後述する目標空燃比ＫＣＭＤは、当量比で表される。
【００３３】
また、吸気管４のスロットル弁６よりも上流側にはエアフローメータ２３が、下流側には吸気圧センサ２４が、それぞれ設けられている。エアフローメータ２３は、吸気管４を流れる空気の質量（以下「空気質量」という）ＧＡＩＲを検出し、吸気圧センサ２４は、吸気の圧力（以下「吸気圧」という）ＰＢＡを検出し、それらの検出信号をＥＣＵ２に出力する。さらに、ＥＣＵ２には、水温センサ２６から、エンジン３の冷却水の温度（以下「エンジン水温」という）ＴＷを表す検出信号が出力される。
【００３４】
一方、エンジン３のクランクシャフト（図示せず）には、クランク角センサ２５が設けられている。クランク角センサ２５は、クランクシャフトの回転に伴い、パルス信号であるＣＲＫ信号およびＴＤＣ信号を、ＥＣＵ２に出力する。
【００３５】
このＣＲＫ信号は、所定のクランク角（例えば３０゜）ごとに出力される。ＥＣＵ２は、ＣＲＫ信号に基づき、エンジン３の回転数（以下「エンジン回転数」という）ＮＥを算出する。ＴＤＣ信号は、いずれかの気筒（図示せず）においてピストン（図示せず）が吸気行程開始時のＴＤＣ（上死点）付近の所定のクランク角度位置にあることを表す信号であり、４気筒タイプの本例では、クランク角１８０゜ごとに出力される。
【００３６】
ＥＣＵ２は、ＣＰＵ、ＲＡＭ、ＲＯＭおよび入出力インターフェース（いずれも図示せず）などから成るマイクロコンピュータで構成されている。ＥＣＵ２は、上述したセンサ２１〜２６からの検出信号に応じ、ＲＯＭに記憶された制御プログラムなどに基づいて、空燃比制御などのための各種の演算処理を実行する。なお、本実施形態では、ＥＣＵ２は、制御入力算出手段、条件成立判定手段、初期値更新手段、酸素量積算値算出手段、および反転回数算出手段に相当する。
【００３７】
次に、図２〜図７を参照しながら、ＥＣＵ２で実行される空燃比制御処理について説明する。なお、以下の制御処理において算出される値はすべてＲＡＭ内に記憶されるものとする。この空燃比制御処理は、Ｏ２センサ２１のＯ２出力値ＳＶＯ２がエンジン運転状態に応じた値になるように、目標空燃比ＫＣＭＤを算出するとともに、ＬＡＦセンサ２２で検出された実空燃比ＫＡＣＴが目標空燃比ＫＣＭＤになるように、燃料噴射量Ｔｏｕｔを算出することによって、空燃比を制御するものである。
【００３８】
図２は、燃料噴射量Ｔｏｕｔの算出処理を示す。本処理は、ＴＤＣ信号の発生に同期して実行される。本処理ではまず、ステップ１（「Ｓ１」と図示。以下同じ）において、エンジン回転数ＮＥおよび吸気圧ＰＢＡに応じ、所定のマップ（図示せず）を検索することよって、基本燃料量ＴＩｂａｓｅを算出する。この基本燃料量ＴＩｂａｓｅは、燃料噴射量Ｔｏｕｔの基本値であり、このマップでは、エンジン回転数ＮＥが高いほど、また、吸気圧ＰＢＡが高いほど、より大きな値に設定されている。なお、この基本燃料量ＴＩｂａｓｅの算出を、エアフローメータ２３で検出された空気質量ＧＡＩＲに応じて行ってもよい。
【００３９】
次に、ステップ２において、ＣＡＴ後Ｆ／ＢフラグＦ＿ＰＲＩＳＭＯが「１」であるか否かを判別する。このＣＡＴ後Ｆ／ＢフラグＦ＿ＰＲＩＳＭＯは、図示しない設定処理において、所定のＣＡＴ後フィードバック制御の実行条件が成立しているときに「１」に設定され、それ以外のときには「０」に設定される。なお、ＣＡＴ後フィードバック制御は、後述するスライディングモード制御アルゴリズムによって、ＣＡＴ後Ｆ／Ｂ制御用値ＫＣＭＤＳＬＤを算出するものであり、その具体的な内容については後述する。
【００４０】
ステップ２の答がＹＥＳのときには、ＣＡＴ後フィードバック制御を実行すべきであると判定して、ステップ３に進み、目標空燃比ＫＣＭＤをＲＡＭ内に記憶されているＣＡＴ後Ｆ／Ｂ制御用値ＫＣＭＤＳＬＤに設定する。
【００４１】
一方、ステップ２の答がＮＯのときには、ＣＡＴ後フィードバック制御を中止すべきであると判定して、ステップ４に進み、目標空燃比ＫＣＭＤをＲＡＭ内に記憶されているＦＦ制御用値ＫＣＭＤＭＡＰに設定する。このＦＦ制御用値ＫＣＭＤＭＡＰは、図示しない算出処理において、エンジン３の運転状態に応じて、マップ検索手法や、所定値を選択する手法などによって算出される。
【００４２】
ステップ３または４に続くステップ５において、ＰＩＤフィードバック制御によって、ＬＡＦセンサ２２で検出された実空燃比ＫＡＣＴが目標空燃比ＫＣＭＤに収束するように、空燃比補正係数ＫＡＦを算出する。なお、この空燃比補正係数ＫＡＦの算出を、ＳＴＲ（セルフ・チューニング・レギュレータ）などを用いて行ってもよい。次に、ステップ６において、総補正係数ＫＴＯＴＡＬを算出する。この総補正係数ＫＴＯＴＡＬは、エンジン水温ＴＷに応じて算出される水温補正係数などを含む各種の補正係数を互いに乗算することによって、算出される。
【００４３】
次に、ステップ７において、ステップ１，３〜６で算出された基本燃料量ＴＩｂａｓｅ、目標空燃比ＫＣＭＤ、空燃比補正係数ＫＡＦおよび総補正係数ＫＴＯＴＡＬを用い、次式（１）によって、燃料噴射量Ｔｏｕｔを算出し、本処理を終了する。
Ｔｏｕｔ＝ＴＩｂａｓｅ・ＫＣＭＤ・ＫＡＦ・ＫＴＯＴＡＬ      ・・・・（１）
【００４４】
以下、図３を参照しながら、前述したＣＡＴ後Ｆ／Ｂ制御用値ＫＣＭＤＳＬＤの算出処理について説明する。この処理は、以下に述べるように、ＣＡＴ後フィードバック制御の実行条件が成立しているときには、スライディングモード制御アルゴリズムによって、Ｏ２センサ２１のＯ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤになるように、ＣＡＴ後Ｆ／Ｂ制御用値ＫＣＭＤＳＬＤを算出するものであり、所定時間（例えば５０ｍｓ）ごとに実行される。なお、本実施形態では、ＮＯｘの排出量の低減などのために、目標値ＳＶＯ２ＣＭＤは、理論空燃比に相当する値よりも若干大きな値、すなわち若干リッチ側に設定されている。
【００４５】
本処理ではまず、ステップ１１において、スライディングモード制御の適応則入力ＵＡＤＰを算出する。その算出処理については後述する。
【００４６】
次に、ステップ１２では、所定の到達則ゲインＫＲＣＨ、および後述する切換関数σ（ｋ）を用い、次式（２）によって到達則入力ＵＲＣＨを算出するとともに、その値にリミット処理を施した値を、最終的な到達則入力ＵＲＣＨとして算出する。
ＵＲＣＨ＝ＫＲＣＨ・σ（ｋ）                                ・・・・（２）
【００４７】
次に、ステップ１３において、算出された適応則入力ＵＡＤＰおよび到達則入力ＵＲＣＨを用い、次式（３）によって、補正値ＵＳＬを算出する。
ＵＳＬ＝ＵＡＤＰ＋ＵＲＣＨ                                  ・・・・（３）
【００４８】
次に、ステップ１４において、所定の空燃比基準値ＦＬＡＦＢＡＳＥおよび算出された補正値ＵＳＬを用い、次式（４）によって、目標空燃比ＫＣＭＤを算出し、本処理を終了する。
ＫＣＭＤ＝ＦＬＡＦＢＡＳＥ＋ＵＳＬ                          ・・・・（４）
【００４９】
図４は、図３のステップ１１で実行される適応則入力ＵＡＤＰの算出処理を示す。本処理ではまず、ステップ２１において、適応則入力ＵＡＤＰの初期化済みフラグＦ＿ＵＡＤＰＷＩＮＩが「１」であるか否かを判別する。
【００５０】
この答がＮＯで、適応則入力ＵＡＤＰの初期化がまだ行われていないときには、後述するようにして設定され、記憶された適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩを、適応則入力暫定値ｕａｄｐｔｍｐとして設定し（ステップ２２）、適応則入力ＵＡＤＰを初期化する。次に、初期化済みフラグＦ＿ＵＡＤＰＷＩＮＩを「１」にセットした（ステップ２３）後、後述するステップ３１に進む。
【００５１】
前記ステップ２１の答がＹＥＳで、適応則入力ＵＡＤＰの初期化が終了しているときには、ＣＡＴ後Ｆ／ＢフラグＦ＿ＰＲＩＳＭＯが「１」であるか否かを判別する（ステップ２４）。この答がＹＥＳで、ＣＡＴ後フィードバック制御の実行中のときには、触媒還元モードフラグＦ＿ＣＴＲＤＭＯＤが「１」であるか否かを判別する（ステップ２５）。この触媒還元モードフラグＦ＿ＣＴＲＤＭＯＤは、触媒還元モードの実行中のときに「１」にセットされるものである。また、この触媒還元モードは、エンジン３への燃料の供給を停止するフューエルカット運転の後などに、ＮＯｘの排出量を低減すべく触媒８を還元状態にするために、触媒８に供給する排ガスを強制的にリッチ化するものである。
【００５２】
このステップ２５の答がＮＯのとき、すなわち、ＣＡＴ後フィードバック制御の実行中であり、かつ触媒還元モード中でないときには、適応則入力ＵＡＤＰの今回成分ＤＵＡＤＰを算出する（ステップ２６）。
【００５３】
図５は、そのサブルーチンを示す。本処理ではまず、ステップ４１において、Ｏ２出力値ＳＶＯ２と目標値ＳＶＯ２ＣＭＤとの差を、出力偏差ＳＶＯ２Ｐとして算出し、ステップ４２において、算出された出力偏差ＳＶＯ２Ｐに応じ、変換値ＥＲＲＡＤＰＮを算出する。次に、ステップ４３において、Ｏ２出力値ＳＶＯ２に応じ、所定のマップ（図示せず）を検索することによって、第１ゲインＫＡＤＰＶＯ２Ｎを算出する。
【００５４】
次に、ステップ４４では、空気質量ＧＡＩＲに応じ、所定のマップ（図示せず）を検索することによって、第２ゲインＫＡＤＰＡＩＲＮを算出し、ステップ４５において、算出された第２ゲインＫＡＤＰＡＩＲＮを第１ゲインＫＡＤＰＶＯ２Ｎに乗算することによって、総ゲインＳＬＤＫＡＤＰＮを算出する。
【００５５】
次に、ステップ４６において、今回および前回の変換値ＥＲＲＡＤＰＮ（ｋ），ＥＲＲＡＤＰＮ（ｋ−１）と、所定の応答指定パラメータｓ（−１＜ｓ＜０）を用い、次式（５）によって、切換関数σ（ｋ）を算出する。
σ（ｋ）＝ＥＲＲＡＤＰＮ（ｋ）＋ｓ・ＥＲＲＡＤＰＮ（ｋ−１）・・・・（５）
【００５６】
次に、ステップ４７において、算出した総ゲインＳＬＤＫＡＤＰＮおよび切換関数σ（ｋ）を用い、次式（６）によって、適応則入力ＵＡＤＰの今回成分ＤＵＡＤＰを算出し、本処理を終了する。
ＤＵＡＤＰ＝ＳＬＤＫＡＤＰＮ・σ（ｋ）                      ・・・・（６）
【００５７】
図４に戻り、前記ステップ２６に続くステップ２７では、上記のようにして算出した今回成分ＤＵＡＤＰを、そのときまでに算出されている適応則入力ＵＡＤＰに加算することによって、適応則入力暫定値ｕａｄｐｔｍｐを算出し、その後、後述するステップ３１に進む。
【００５８】
一方、前記ステップ２４の答がＮＯで、ＣＡＴ後フィードバック制御の停止中のときには、初期値更新許可フラグＦ＿ＵＡＩＣＭＤが「１」であるか否かを判別する（ステップ２８）。この初期値更新許可フラグＦ＿ＵＡＩＣＭＤは、後述するステップ３２の判定処理において、ＣＡＴ後フィードバック制御の実行中、適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩの更新が許可されたときに「１」にセットされるものである。
【００５９】
このステップ２８の答がＹＥＳで、初期値ＵＡＤＰＷＩＮＩの更新が許可されているときには、そのときの適応則入力ＵＡＤＰ、すなわちＣＡＴ後フィードバック制御の停止直前に算出された適応則入力ＵＡＤＰを、初期値ＵＡＤＰＷＩＮＩとして設定し（ステップ２９）、これを更新する。なお、後述するように、初期値更新許可フラグＦ＿ＵＡＩＣＭＤは、前記ステップ２８の判別に用いられた直後に「０」にリセットされるので、上記ステップ２９による初期値ＵＡＤＰＷＩＮＩの更新は、ＣＡＴ後フィードバック制御の停止直後に１回のみ行われる。
【００６０】
一方、上記ステップ２８の答がＮＯで、Ｆ＿ＵＡＩＣＭＤ＝０のときには、前記ステップ２２と同様、初期値ＵＡＤＰＷＩＮＩを適応則入力暫定値ｕａｄｐｔｍｐとして設定した（ステップ３０）後、ステップ３１に進む。また、前記ステップ２５の答がＹＥＳで、触媒還元モード中のときには、適応則入力ＵＡＤＰの算出を行うことなく、上記ステップ３０を実行する。
【００６１】
前記ステップ２３、２７または３０に続くステップ３１では、算出された適応則入力暫定値ｕａｄｐｔｍｐに対してリミット処理を行い、最終的な適応則入力ＵＡＤＰを算出する。具体的には、適応則入力暫定値ｕａｄｐｔｍｐが所定の下限値ＵＡＤＰＬＭＴＬを下回っているときには、適応則入力ＵＡＤＰを下限値ＵＡＤＰＬＭＴＬに設定し、適応則入力暫定値ｕａｄｐｔｍｐが所定の上限値ＵＡＤＰＬＭＴＨを上回っているときには、適応則入力ＵＡＤＰを上限値ＵＡＤＰＬＭＴＨに設定し、それ以外のときには、適応則入力暫定値ｕａｄｐｔｍｐをそのまま適応則入力ＵＡＤＰとして設定する。
【００６２】
前記ステップ２９の後、または上記ステップ３１のリミット処理の後には、初期値ＵＡＤＰＷＩＮＩの更新許可判定処理を実行する（ステップ３２）。図６および図７は、そのサブルーチンを示す。本処理ではまず、ＣＡＴ後Ｆ／ＢフラグＦ＿ＰＲＩＳＭＯが「１」であるか否か（ステップ５１）、および触媒還元モードフラグＦ＿ＣＴＲＤＭＯＤが「１」であるか否か（ステップ５２）を、それぞれ判別する。
【００６３】
ステップ５１の答がＮＯで、ＣＡＴ後フィードバック制御の停止中のとき、またはステップ５２の答がＹＥＳで、触媒還元モード中のとき、すなわち適応則入力ＵＡＤＰが算出されていないときには、後述するリッチ側反転の初期設定フラグＦ＿Ｏ２ＲＶＳＩＮＩ、ＯＳＣ量ＯＳＣＰＭ、および反転回数カウンタ値ＣＯ２ＲＶＳＰＭを、それぞれ０にリセットする（ステップ５３〜５５）。また、初期値更新許可フラグＦ＿ＵＡＩＣＭＤを「０」にリセットし（ステップ５６）、本処理を終了する。
【００６４】
前記ステップ５１の答がＹＥＳで、かつ前記ステップ５２の答がＮＯのとき、すなわちＣＡＴ後フィードバック制御の実行中であり、かつ触媒還元モード中でないときには、初期設定フラグＦ＿Ｏ２ＲＶＳＩＮＩが「１」であるか否かを判別する（ステップ５７）。前記ステップ５３の実行により、初回のループでは、このステップ５７の答がＮＯになるので、その場合には、ステップ５８に進み、Ｏ２出力値ＳＶＯ２と目標値ＳＶＯ２ＣＭＤとの偏差である出力偏差ＳＶＯ２Ｐが、値０よりも大きいか否かを判別する。
【００６５】
この答がＹＥＳで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリッチ側にあるときには、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨおよび第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨＨをそれぞれ「１」にセットする（ステップ５９、６０）。
【００６６】
一方、ステップ５８の答がＮＯで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤと一致しているか、またはそれよりもリーン側にあるときには、第１および第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨ、Ｆ＿ＳＶＯ２ＰＭＨＨをそれぞれ「０」にセットする（ステップ６１、６２）。上記のステップ６０または６２の後には、初期設定フラグＦ＿Ｏ２ＲＶＳＩＮＩを「１」にセットし（ステップ６３）、本処理を終了する。
【００６７】
このステップ６３が実行された後には、前記ステップ５７の答がＹＥＳになるので、その場合には、ステップ６４〜７５において、ＯＳＣ量ＯＳＣＰＭを算出する。このＯＳＣ量ＯＳＣＰＭは、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対して反転していない状態での、ストイキ状態に対する排ガス中の余剰酸素量または不足酸素量の積算値に相当する。
【００６８】
まずステップ６４では、フェールセーフフラグＦ＿ＦＳＰＯＳＣＰＭが「１」であるか否かを判別する。この答がＹＥＳで、フェールセーフ中のときには、ＯＳＣ量ＯＳＣＰＭを値０にリセットし（ステップ６５）、後述するステップ７６に進む。
【００６９】
前記ステップ６４の答がＮＯのときには、ＬＡＦセンサ２２で検出された実空燃比ＫＡＣＴと基準空燃比ＫＳＴＯＩＣとの差（＝ＫＡＣＴ−ＫＳＴＯＩＣ）を、今回サイクルの空燃比偏差ｄｋａｃｔｔｍｐとして算出する（ステップ６６）。
【００７０】
上記の基準空燃比ＫＳＴＯＩＣは、理論空燃比に相当するものであり、適応則入力ＵＡＤＰの初期値ＵＡＤＰＷＩＮＩなどを用いて算出される。したがって、空燃比偏差ｄｋａｃｔｔｍｐは、今回サイクルの実空燃比ＫＡＣＴの理論空燃比に対するずれ量に相当する。また、実空燃比ＫＡＣＴなどが当量比で表されるため、空燃比偏差ｄｋａｃｔｔｍｐが正値であることは、排ガス空燃比がリッチ側にずれ、ストイキ状態に対して排ガス中の酸素が不足している状態を表し、逆に空燃比偏差ｄｋａｃｔｔｍｐが負値であることは、排ガス空燃比がリーン側にずれ、ストイキ状態に対して余剰の酸素が排ガス中に存在している状態を表す。
【００７１】
上記ステップ６６に続くステップ６７では、算出した空燃比偏差ｄｋａｃｔｔｍｐに今回サイクル相当の排ガス流量ＧＡＩＲＣＬＡＶＢを乗算した値を、それまでに算出されているＯＳＣ量ＯＳＣＰＭから減算することによって、ＯＳＣ量暫定値ｏｓｃｐｍｔｍｐを算出する。なお、排ガス流量ＧＡＩＲＣＬＡＶＢは、空気質量ＧＡＩＲに基づき、ＥＣＵ２によって算出される。
【００７２】
次に、出力偏差ＳＶＯ２Ｐが値０よりも大きいか否かを判別し（ステップ６８）、その答がＹＥＳのときには、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨが「１」であるか否かを判別する（ステップ６９）。この答がＹＥＳのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリッチ側にある状態が継続しているときには、ステップ６７で算出されたＯＳＣ量暫定値ｏｓｃｐｍｔｍｐと値０のうちの大きい方を、ＯＳＣ量ＯＳＣＰＭとして算出し（ステップ７０）、後述するステップ７６に進む。このようにＯＳＣ量暫定値ｏｓｃｐｍｔｍｐをリミット処理し、ＯＳＣ量ＯＳＣＰＭを０以上の値に維持するのは、ＬＡＦセンサ２２の検出遅れを考慮し、それに起因するＯＳＣ量ＯＳＣＰＭの誤算出を回避するためである。
【００７３】
前記ステップ６９の答がＮＯのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリーン側からリッチ側に変化したときには、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨを「１」にセットする（ステップ７１）とともに、ＯＳＣ量ＯＳＣＰＭを値０にリセットし（ステップ７２）、ステップ７６に進む。
【００７４】
一方、前記ステップ６８の答がＮＯで、出力偏差ＳＶＯ２Ｐ≦０のときには、前記ステップ６９と同様、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨが「１」であるか否かを判別する（ステップ７３）。この答がＮＯのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリーン側にある状態が継続しているときには、ＯＳＣ量暫定値ｏｓｃｐｍｔｍｐと値０のうちの小さい方を、ＯＳＣ量ＯＳＣＰＭとして算出し（ステップ７４）、ステップ７６に進む。このリミット処理もまた、ＬＡＦセンサ２２の検出遅れによるＯＳＣ量ＯＳＣＰＭの誤算出を回避するためである。
【００７５】
前記ステップ７３の答がＹＥＳのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリッチ側からリーン側に変化したときには、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨを「０」にセットする（ステップ７５）とともに、前記ステップ７２に進み、ＯＳＣ量ＯＳＣＰＭを値０にリセットした後、ステップ７６に進む。
【００７６】
次に、ステップ７６〜８１において、Ｏ２出力値ＳＶＯ２の目標値ＳＶＯ２ＣＭＤに対する反転回数を算出する。まずステップ７６では、出力偏差ＳＶＯ２Ｐが反転判定用の所定値ＶＯ２ＲＶＳＪＧよりも大きいか否かを判別する。この所定値ＶＯ２ＲＶＳＪＧは、値０に所定のヒステリシスを付したものである。このステップ７６の答がＹＥＳのときには、第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨＨが「１」であるか否かを判別する（ステップ７７）。この答がＹＥＳのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＶＯ２よりもリッチ側にある状態が継続しているときには、後述するステップ８２に進む。
【００７７】
一方、前記ステップ７７の答がＮＯのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリーン側からリッチ側に反転したときには、第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨＨを「１」にセットする（ステップ７８）とともに、反転回数カウンタ値ＣＯ２ＲＶＳＰＭをインクリメントし（ステップ７９）、ステップ８２に進む。
【００７８】
前記ステップ７６の答がＮＯのときには、前記ステップ７７と同様、第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨＨが「１」であるか否かを判別する（ステップ８０）。この答がＮＯのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリーン側にある状態が継続しているときには、ステップ８２に進む。
【００７９】
一方、前記ステップ８０の答がＹＥＳのとき、すなわち、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリッチ側からリーン側に反転したときには、第２リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨＨを「０」にセットする（ステップ８１）とともに、前記ステップ７９に進み、反転回数カウンタ値ＣＯ２ＲＶＳＰＭをインクリメントする。以上の算出方法から明らかなように、反転回数カウンタ値ＣＯ２ＲＶＳＰＭは、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリーン側とリッチ側の間で反転した回数を表す。
【００８０】
次に、ステップ８２では、前記ステップ６５、７０、７２または７４で算出されたＯＳＣ量ＯＳＣＰＭの絶対値｜ＯＳＣＰＭ｜が、所定量ＯＳＣＰＭＨ以上であるか否かを判別する。この所定量ＯＳＣＰＭＨは、触媒８がフレッシュな状態にあるときに貯蔵可能な最大酸素量に相当する。
【００８１】
このステップ８２の答がＹＥＳで、｜ＯＳＣＰＭ｜≧ＯＳＣＰＭＨのとき、すなわち、ＣＡＴ後フィードバック制御中、ストイキ状態に対する排ガス中の余剰酸素量の積算値が触媒８に貯蔵可能な最大酸素量以上になり、触媒８が酸素で飽和した状態になったと推定されるとき、またはストイキ状態に対する排ガス中の不足酸素量の積算値が触媒８の最大酸素量以上になり、触媒８内に酸素がほとんどなくなったと推定されるときには、触媒８の上流側の排ガス空燃比が下流側の排ガス空燃比に良好に反映されるという所定の条件が成立しているとして、初期値更新許可フラグＦ＿ＵＡＩＣＭＤを「１」にセットし（ステップ８３）、本処理を終了する。
【００８２】
前記ステップ８２の答がＮＯのときには、前記ステップ７９で算出された反転回数カウンタ値ＣＯ２ＲＶＳＰＭが所定回数ＣＴＯ２ＲＶＳＰＭＬ（例えば２回）以上であるか否かを判別する（ステップ８４）。
【００８３】
この答がＹＥＳで、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２の目標値ＳＶＯ２ＣＭＤに対する反転回数が、所定回数ＣＴＯ２ＲＶＳＳＭＬに達したときには、触媒８の上流側の排ガス空燃比が下流側の排ガス空燃比に良好に反映されるという所定の条件が成立しているとして、前記ステップ８３に進み、初期値更新許可フラグＦ＿ＵＡＩＣＭＤを「１」にセットする。一方、上記ステップ８４の答がＮＯのときには、そのまま本処理を終了する。
【００８４】
上記のように初期値更新許可フラグＦ＿ＵＡＩＣＭＤが「１」にセットされると、前記ステップ２９において、ＣＡＴ後フィードバック制御の停止直前に算出された適応則入力ＵＡＤＰが、初期値ＵＡＤＰＷＩＮＩとして更新され、次回のＣＡＴ後フィードバック制御の開始時に適応則入力ＵＡＤＰの初期値として用いられる。
【００８５】
以上のように、本実施形態によれば、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対して反転していない状態で、ＬＡＦセンサ２２で検出された実空燃比ＫＡＣＴと排ガス流量ＧＡＩＲＣＬＡＶＢに基づいて、ＯＳＣ量ＯＳＣＰＭを算出する。そして、算出されたＯＳＣ量ＯＳＣＰＭの絶対値が所定量ＯＳＣＰＭＨ以上になったときに、初期値更新許可フラグＦ＿ＵＡＩＣＭＤを「１」にセットし（図７のステップ８２、８３）、そのＣＡＴ後フィードバック制御の停止直前に算出された適応則入力ＵＡＤＰを、次回のＣＡＴ後フィードバック制御の開始時用の初期値ＵＡＤＰＷＩＮＩとして更新する（図４のステップ２９）。
【００８６】
また、ＣＡＴ後フィードバック制御中、目標値ＳＶＯ２ＣＭＤに対するＯ２出力値ＳＶＯ２の反転回数（反転回数カウンタ値ＣＯ２ＲＶＳＰ）が所定回数ＣＴＯ２ＲＶＳＰＭＬ以上になったときにも、初期値更新許可フラグＦ＿ＵＡＩＣＭＤを「１」にセットし（図７のステップ８２、８３）、適応則入力ＵＡＤＰの初期値ＵＡＤＰＷＩＮＩの更新を許可する。
【００８７】
したがって、触媒８の上流側の排ガスの空燃比が下流側の排ガスの空燃比に良好に反映した状態で算出された信頼性の高い適応則入力ＵＡＤＰのみを、次回のＣＡＴ後フィードバック制御の開始時に適応則入力ＵＡＤＰの初期値として用いることができ、それにより、空燃比制御の精度を向上させることができる。
【００８８】
また、目標空燃比ＫＣＭＤを、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤになるように、スライディングモード制御により算出する。したがって、Ｏ２センサ２１で検出されたＯ２出力値ＳＶＯ２を用い、外乱の影響が少なく、かつ目標値ＳＶＯ２ＣＭＤへの収束が早いという特性を有するスライディングモード制御によって、目標空燃比ＫＣＭＤを適切に算出することができる。また、そのように算出された目標空燃比ＫＣＭＤを用いて、ＬＡＦセンサ２２で検出された実空燃比ＫＡＣＴが目標空燃比ＫＣＭＤになるように、燃料噴射量Ｔｏｕｔを制御するので、空燃比の制御精度をさらに向上させることができる。
【００８９】
次に、本発明の第２実施形態に係る内燃機関の空燃比制御装置について説明する。この第２実施形態の空燃比制御装置の場合、第１実施形態の空燃比制御装置１と比較すると、電気的な構成および機械的な構成は同じであり、制御処理の一部の内容が異なっているのみであるので、以下、異なる点を中心に説明するとともに、第１実施形態の制御装置１と同じ構成および制御処理に関しては、その説明および図示を省略する。
【００９０】
この空燃比制御装置では、前述した図３のステップ１１における適応則入力ＵＡＤＰの算出処理が、図８に示すように実行される。同図に示すように、この算出処理は、前述した図４の算出処理と比べて、ステップ１００で適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩの算出処理を実行する点と、ステップ１１０における初期値ＵＡＤＰＷＩＮＩの更新許可判定処理の内容とが異なっているのみであるので、以下、これらの処理の内容について説明する。
【００９１】
まず、図９を参照しながら、上述した適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩの算出処理について説明する。同図に示すように、この処理の場合、まず、ステップ１０１で、ＲＡＭ内に記憶されている反転回数カウンタ値ＣＯ２ＲＶＳＰＭが所定回数ＣＴＯ２ＲＶＳＰＭＬ以上であるか否かを判別する。
【００９２】
この答がＹＥＳのとき、すなわち、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対して収束しておらず、反転を繰り返していると推定されるときには、ステップ１０２に進み、適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩを、適応則入力ＵＡＤＰの極大値ＵＡＤＰＭＡＸと極小値ＵＡＤＰＭＩＮの相加平均値［＝（ＵＡＤＰＭＡＸ＋ＵＡＤＰＭＩＮ）／２］に設定した後、本処理を終了する。なお、これらの極大値ＵＡＤＰＭＡＸおよび極小値ＵＡＤＰＭＩＮは、後述するように、初期値ＵＡＤＰＷＩＮＩの更新許可判定処理において算出される。
【００９３】
一方、ステップ１０１の答がＮＯのとき、すなわち、ＣＡＴ後フィードバック制御中、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤの近傍に収束していると推定されるときには、ステップ１０３に進み、適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩを、ＲＡＭ内に記憶されている適応則入力ＵＡＤＰに設定した後、本処理を終了する。
【００９４】
次に、図１０，１１を参照しながら、前述した初期値ＵＡＤＰＷＩＮＩの更新許可判定処理について説明する。両図１０，１１に示すように、この判定処理は、前述した図６，７の判定処理と比べて、ステップ１１１〜１１３のみが異なっているので、以下、これらの内容を中心にして説明する。
【００９５】
図１０に示すように、ステップ６４で、フェールセーフフラグＦ＿ＦＳＰＯＳＣＰＭが「１」であるか否かを判別し、その答がＹＥＳで、フェールセーフ中のときには、ステップ１１１に進み、ＯＳＣ量暫定値ｏｓｃｐｍｔｍｐを値０に設定する。一方、ステップ６４の答がＮＯのときには、前述したように、ステップ６６，６７を実行する。
【００９６】
ステップ６７または１１１に続くステップ６８で、前述したように、出力偏差ＳＶＯ２Ｐが値０よりも大きいか否かを判別し、その答がＹＥＳのときには、前述したように、ステップ６９に進み、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨが「１」であるか否かを判別する。
【００９７】
この答がＹＥＳで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリッチ側にある状態が継続しているときには、前述したように、ステップ７０を実行した後、図１１のステップ７６以降を実行し、本処理を終了する。一方、ステップ６９の答がＮＯで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリーン側からリッチ側に変化したときには、前述したように、ステップ７１を実行した後、ステップ１１２に進み、適応則入力ＵＡＤＰの極大値ＵＡＤＰＭＡＸを、ＲＡＭ内に記憶されている適応則入力ＵＡＤＰに設定する。次いで、前述したように、ステップ７２を実行した後、図１１のステップ７６以降を実行し、本処理を終了する。
【００９８】
一方、ステップ６８の答がＮＯのときには、前述したように、ステップ７３で、第１リッチ側反転フラグＦ＿ＳＶＯ２ＰＭＨが「１」であるか否かを判別し、この答がＮＯで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤよりもリーン側にある状態が継続しているときには、前述したように、ステップ７４を実行した後、図１１のステップ７６以降を実行し、本処理を終了する。
【００９９】
一方、ステップ７３の答がＹＥＳで、Ｏ２出力値ＳＶＯ２が目標値ＳＶＯ２ＣＭＤに対してリッチ側からリーン側に変化したときには、前述したように、ステップ７５を実行した後、ステップ１１３に進み、適応則入力ＵＡＤＰの極小値ＵＡＤＰＭＩＮを、ＲＡＭ内に記憶されている適応則入力ＵＡＤＰに設定する。次いで、前述したように、ステップ７２を実行した後、図１１のステップ７６以降を実行し、本処理を終了する。
【０１００】
以上のように、第２実施形態の空燃比制御装置によれば、ＣＯ２ＲＶＳＰＭ＜ＣＴＯ２ＲＶＳＰＭＬのときには、適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩが、ＲＡＭ内に記憶されている適応則入力ＵＡＤＰに設定されるので、第１実施形態の空燃比制御装置１と同様の作用効果を得ることができる。
【０１０１】
一方、ＣＯ２ＲＶＳＰＭ≧ＣＴＯ２ＲＶＳＰＭＬのときには、適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩが、適応則入力ＵＡＤＰの極大値ＵＡＤＰＭＡＸと極小値ＵＡＤＰＭＩＮの相加平均値［＝（ＵＡＤＰＭＡＸ＋ＵＡＤＰＭＩＮ）／２］に設定されるので、ＣＡＴ後フィードバック制御を停止する直前において、適応則入力ＵＡＤＰの値が安定せず、比較的大きな幅で反転を繰り返す状態にあったときでも、次回のフィードバック制御における適応則入力ＵＡＤＰ用の初期値ＵＡＤＰＷＩＮＩを適切に算出することができる。以上により、フィードバック制御中の空燃比センサの出力値と目標値との関係にかかわらず、高い制御精度を確保することができる。
【０１０２】
なお、本発明は、説明した各実施形態に限定されることなく、種々の態様で実施することができる。例えば、各実施形態では、適応則入力ＵＡＤＰの初期値ＵＡＤＰＷＩＮＩの更新を許可する所定の条件として、前述したようにして算出されたＯＳＣ量ＯＳＣＰＭの絶対値が所定量以上であるという条件と、目標値ＳＶＯ２ＣＭＤに対するＯ２出力値ＳＶＯ２の反転回数が所定回数以上であるという条件を用いているが、これらの２つの条件の一方のみを用いてもよい。また、ＯＳＣ量ＯＳＣＰＭの算出手法についても、各実施形態で示したものに限らず、他の適当な手法を採用できる。
【０１０３】
また、ＣＡＴ後フィードバック制御中、触媒８の上流側の排ガスの空燃比が下流側の排ガスの空燃比に良好に反映されていると推定される限り、所定の条件として、上記の２つの条件に代えてまたは加えて、他の適当な条件を用いることが可能である。
【０１０４】
また、各実施形態では、Ｏ２センサ２１は、触媒８の下流側に配置されているが、触媒８の途中に配置されていてもよい。さらに、Ｏ２センサ２１は、いわゆる反転タイプのものであるが、上流側のＬＡＦセンサ２２と同様、排ガス中の酸素濃度をリニアに検出するタイプのものでもよい。
【０１０５】
さらに、各実施形態では、Ｏ２出力値ＳＶＯ２および目標値ＳＶＯ２ＣＭＤに応じた目標空燃比ＫＣＭＤの算出を、スライディングモード制御により行っているが、例えばＰＩＤフィードバック制御によって行ってもよい。その場合には、フィードバック制御の積分項Ｉは、出力偏差ＳＶＯ２Ｐおよび積分項ゲインＫＩを用い、次式（７）によって算出され、本発明は、この積分項Ｉの初期値を更新するのに適用される。
Ｉ（ｋ）＝ＫＩ・ＳＶＯ２Ｐ＋Ｉ（ｋ−１）                    ・・・・（７）
【０１０６】
また、各実施形態は、本発明を車両に搭載されたガソリンエンジンに適用した例であるが、本発明は、これに限らず、ガソリンエンジン以外の各種のエンジンに適用してもよく、また、車両用以外のエンジン、例えば、クランクシャフトを鉛直に配置した船外機などの船舶推進機用のエンジンにも適用可能である。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。
【符号の説明】
【０１０７】
１  空燃比制御装置
２  ＥＣＵ（制御入力算出手段、条件成立判定手段、初期値更新手段、排ガス流量取得      手段、酸素量積算値算出手段、反転回数算出手段）
３  内燃機関
５  排気管（排気通路）
８  触媒
２１  酸素濃度センサ（空燃比センサ）
２２  ＬＡＦセンサ（上流側空燃比センサ）
２３  エアフローメータ（排ガス流量取得手段）
ＳＶＯ２  酸素濃度センサの出力値（空燃比センサの出力値）
ＳＶＯ２ＣＭＤ  目標値
ＵＡＤＰ  適応則入力（積分項）
ＵＡＤＰＷＩＮＩ  適応則入力の初期値（積分項の初期値）
ＫＡＣＴ  実空燃比（上流側空燃比センサで検出された排ガスの空燃比）
ＫＣＭＤ  目標空燃比（制御入力）
ＧＡＩＲＣＬＡＶＢ  排ガス流量
ＯＳＣＰＭ  ＯＳＣ量（酸素量積算値）
ＯＳＣＰＭＨ  所定量
ＣＯ２ＲＶＳＰＭ  反転回数カウンタ値（反転回数）
ＣＴＯ２ＲＶＳＰＭＬ  所定回数
Ｔｏｕｔ  燃料噴射量（内燃機関に供給される燃料量）
Ｉ  積分項
【図１】
0005261470.tif 000002
【図２】
0005261470.tif 000003
【図３】
0005261470.tif 000004
【図４】
0005261470.tif 000005
【図５】
0005261470.tif 000006
【図６】
0005261470.tif 000007
【図７】
0005261470.tif 000008
【図８】
0005261470.tif 000009
【図９】
0005261470.tif 000010
【図１０】
0005261470.tif 000011
【図１１】
0005261470.tif 000012