(57)【要約】【課題】  触媒下流に配設された起電力式の酸素濃度センサの出力値から算出され、積分項を含む下流側フィードバック補正値に基づいて空燃比をフィードバック制御する空燃比制御装置において、吸排気系の誤差を早期に精度よく補償すること。【解決手段】  この装置は、積分項SUMの収束判定を行うとともに、未収束状態で下流側フィードバック制御が開始された場合、酸素濃度センサの出力値Voxsの１回目の反転時期よりも前において積分項SUMの変化速度を大きい値に設定する。これにより、積分項SUMを迅速に収束値（値SUM1）に近づけることができる。また、１回目の反転時期以降において積分項SUMの変化速度を小さい値に設定・変更する。ここで、積分項SUMの変動幅は、積分項SUMの変化速度が小さいほど小さい。これにより、積分項SUMの変動幅が小さい状態で積分項SUMの収束判定がなされ得る。【選択図】  図９
2008106712.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された酸素吸蔵機能を有する触媒と、
前記触媒よりも下流の前記排気通路に配設されて同触媒から流出するガスの空燃比に応じた値を出力する起電力式の酸素濃度センサと、
を備えた内燃機関に適用され、
前記酸素濃度センサの出力値と目標空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新する時間積分値更新手段と、
前記時間積分値に少なくとも基づいて前記触媒に流入するガスの空燃比を前記目標空燃比に一致するようにフィードバック制御するフィードバック制御手段と、
前記時間積分値が収束したか否かを判定する収束判定手段と、
を備え、
前記時間積分値更新手段は、
前記時間積分値の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記時間積分値が収束したと判定されていない状態で前記フィードバック制御が開始された場合である未収束フィードバック開始時において、前記フィードバック制御開始後の所定の時期以降における前記時間積分値の変化速度を、同所定の時期よりも前における同時間積分値の変化速度より小さくするように構成された内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置において、
前記変化速度変更手段は、前記所定の時期として、
前記フィードバック制御開始後における前記酸素濃度センサの出力値の１回目の反転時期以降の時期を使用するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項１又は請求項２に記載の内燃機関の空燃比制御装置であって、
前記触媒に吸蔵される酸素の最大量である最大酸素吸蔵量を取得する最大酸素吸蔵量取得手段を備え、
前記変化速度変更手段は、
前記最大酸素吸蔵量が大きいほど前記所定の時期以降における前記時間積分値の変化速度をより小さい値に設定するように構成された内燃機関の空燃比制御装置。
【請求項４】
内燃機関の排気通路に配設された酸素吸蔵機能を有する触媒と、
前記触媒よりも上流の前記排気通路に配設されて同触媒に流入するガスの空燃比に応じた値を出力する上流側空燃比センサと、
前記触媒よりも下流の前記排気通路に配設されて同触媒から流出するガスの空燃比に応じた値を出力する起電力式の酸素濃度センサと、
を備えた内燃機関に適用され、
前記酸素濃度センサの出力値と目標空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新する時間積分値更新手段と、
前記上流側空燃比センサの出力値と前記時間積分値とに少なくとも基づいて前記触媒に流入するガスの空燃比を前記目標空燃比に一致するようにフィードバック制御するフィードバック制御手段と、
前記時間積分値が収束したか否かを判定する収束判定手段と、
を備え、
前記時間積分値更新手段は、
前記時間積分値の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置であって、
前記触媒に吸蔵される酸素の最大量である最大酸素吸蔵量を取得する最大酸素吸蔵量取得手段と、
前記時間積分値が収束したと判定されていない状態で前記フィードバック制御が開始された場合である未収束フィードバック開始時において、前記上流側空燃比センサにより検出される検出空燃比と、前記触媒に流入するガスの空燃比が前記目標空燃比に一致する場合における前記検出空燃比である基準検出空燃比と、の差に基づいて得られる前記触媒に流入するガス中の酸素の過不足量の、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ回目（Ｎは自然数）の反転時期からＮ＋１回目の反転時期までの間に亘る経緯と、前記最大酸素吸蔵量と、に基づいて、前記基準検出空燃比を算出する基準検出空燃比算出手段と、
を備え、
前記時間積分値更新手段は、
前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ＋１回目の反転時期以降、前記基準検出空燃比に対応する前記上流側空燃比センサの出力値と、前記検出空燃比が前記目標空燃比に一致する場合における前記上流側空燃比センサの出力値との相違を利用して、前記時間積分値を更新するように構成され、
前記変化速度変更手段は、
前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ＋１回目の反転時期以降の所定の時期以降における前記時間積分値の変化速度を、同所定の時期よりも前における同時間積分値の変化速度より小さくするように構成された内燃機関の空燃比制御装置。
【請求項５】
請求項４に記載の内燃機関の空燃比制御装置において、
前記基準検出空燃比算出手段、前記時間積分値更新手段、及び前記変化速度変更手段は、
前記自然数Ｎとして１を使用するように構成された内燃機関の空燃比制御装置。
【請求項６】
請求項４又は請求項５に記載の内燃機関の空燃比制御装置であって、
前記触媒の最大酸素吸蔵量に影響を与える値である影響付与値を取得する影響付与値取得手段と、
前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ回目の反転時期からＮ＋１回目の反転時期までの間に亘る、前記影響付与値の、前記最大酸素吸蔵量取得手段により前記最大酸素吸蔵量が取得された時点での同影響付与値からの相違の程度に応じて前記最大酸素吸蔵量を補正する最大酸素吸蔵量補正手段と、
を備え、
前記基準検出空燃比算出手段は、
前記基準検出空燃比を算出する際に前記補正された最大酸素吸蔵量を使用するように構成された内燃機関の空燃比制御装置。
【請求項７】
請求項４に記載の内燃機関の空燃比制御装置であって、
前記触媒の最大酸素吸蔵量に影響を与える値である影響付与値を取得する影響付与値取得手段を備え、
前記基準検出空燃比算出手段、前記時間積分値更新手段、及び前記変化速度変更手段は、
前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＭ回目（Ｍは自然数）の反転時期からＭ＋１回目の反転時期までの間に亘る、前記影響付与値の、前記最大酸素吸蔵量取得手段により前記最大酸素吸蔵量が取得された時点での同影響付与値からの相違の程度が所定の程度よりも小さい場合、前記自然数Ｎとして、前記自然数Ｍを使用するように構成された内燃機関の空燃比制御装置。
【請求項８】
請求項４乃至請求項７の何れか一項に記載の内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記最大酸素吸蔵量が大きいほど前記所定の時期以降における前記時間積分値の変化速度をより小さい値に設定するように構成された内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気通路に配設された触媒の下流に設けられた起電力式の酸素濃度センサの出力値に基づいて触媒に流入するガスの空燃比をフィードバック制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、この種の空燃比制御装置が広く知られている。例えば、特許文献１に記載の空燃比制御装置では、内燃機関の排気通路に配設された酸素吸蔵機能を有する触媒（三元触媒）の上流に限界電流式の酸素濃度センサ、下流に起電力式の酸素濃度センサがそれぞれ設けられている。この下流側の酸素濃度センサの出力値と目標空燃比（＝理論空燃比）に相当する値（目標空燃比相当値）との偏差（＝目標空燃比相当値−酸素濃度センサ出力値）を比例・積分処理（ＰＩ処理）してフィードバック補正値が算出される。そして、このフィードバック補正値で上流側の酸素濃度センサの出力値を補正した値に基づいて燃料噴射量が補正されることで内燃機関に供給する混合気の空燃比（従って、触媒に流入するガスの空燃比、以下、単に「空燃比」とも称呼する。）が目標空燃比に一致するようにフィードバック制御されるようになっている。
【特許文献１】特開２００４−３１６５２３号公報
【０００３】
上記フィードバック補正値には、積分項（Ｉ項）の値、即ち、上記下流側の酸素濃度センサの出力値と目標空燃比相当値との偏差を積算して更新されていく時間積分値にゲインを乗じた値が含まれている。これにより、エアフローメータの誤差、インジェクタの誤差、上流側の酸素濃度センサの誤差等（以下、「吸排気系の誤差」と総称する。）が発生していても、上述したフィードバック制御の実行により、吸排気系の誤差が時間積分値（従って、積分項の値）により補償され得、この結果、空燃比を目標空燃比に一致させることができる。
【０００４】
換言すれば、時間積分値（従って、積分項の値）は、吸排気系の誤差の大きさを表す値となり得る。この種の空燃比制御装置では、このような性格を有する時間積分値を記憶するとともに記憶されている時間積分値（以下、「時間積分値の学習値」とも称呼する。）を所定のタイミング毎に更新（学習）していく時間積分値の学習が実行される場合が多い。
【０００５】
上記文献に記載の空燃比制御装置では、積分項が収束したと判定されていない状態でフィードバック制御が開始された場合（以下、「未収束フィードバック開始時」と称呼する。）、フィードバック制御開始後、所定期間が経過した時期において、積分項の値が収束すべき値（即ち、上記吸排気系の誤差の大きさを正確に表す値、以下、「収束値」と称呼する。）に収束した（或いは、時間積分値の学習が完了した）と判定されるようになっている。以下、積分項の値が収束値に収束したと判定される時期を「収束完了時期」と称呼する。
【０００６】
図１４に示すタイムチャートは、上記文献に記載の空燃比制御装置により、未収束フィードバック開始時にてフィードバック制御が開始される場合における、積分項のゲイン、積分項、及び下流側の酸素濃度センサの出力値の変化の一例を示している。このように上記文献に記載の空燃比制御装置では、積分項のゲインは、（Ａ）に示すように、フィードバック制御開始から収束完了時期ｔＡまでの期間において大きい値に維持され、収束完了時期ｔＡにおいて小さい値に変更される。
【０００７】
従って、積分項の変化速度は、（Ｂ）に示すように、フィードバック制御開始から収束完了時期ｔＡまでの期間において大きい値となり、収束完了時期ｔＡ以降、小さい値に変更される。これにより、上記文献に記載の空燃比制御装置では、フィードバック制御開始後、積分項の値を迅速に収束値に近づけることで収束完了時期ｔＡを早めることができるとともに、収束完了時期ｔＡ以降、積分項の値を利用してフィードバック制御される空燃比の変動（荒れ）を抑制することができる。
【０００８】
ところで、上記文献に記載の空燃比制御装置のように、酸素吸蔵機能を有する触媒の下流側の酸素濃度センサとして起電力式の酸素濃度センサが使用される場合、（Ｃ）に示すように、下流側の酸素濃度センサの出力値は、リッチを示す値又はリーンを示す値に交互に切り換わりながら周期的に変動する傾向がある。以下、このように、酸素濃度センサの出力値が切り換わるタイミングの間隔を「一出力値維持期間」と称呼する。
【０００９】
下流側の酸素濃度センサの出力値が周期的に変動すると、（Ｂ）に示すように、積分項の値も周期的に変動する。ここで、積分項の変動の幅（即ち、一出力値維持期間中における積分項の最大値と最小値との差）は、一出力値維持期間が長いほど、或いは、積分項の変化速度が大きいほど、大きくなる。上述のごとく、収束完了時期ｔＡ以前における積分項の変化速度は大きい。従って、（Ｂ）に示すように、収束完了時期ｔＡ以前における積分項の変動幅は大きい。
【００１０】
換言すれば、上記文献に記載の装置では、積分項の変動幅が大きい状態で積分項が収束した（或いは、時間積分値の学習が完了した）と判定される。このため、（Ｂ）に示すように、収束完了時期ｔＡにおいて、収束したと判定された積分項の値（或いは、時間積分値の学習値）が収束値から大きくずれる場合があり得る。この場合、上記吸排気系の誤差が精度よく補償され得ず、この結果、空燃比が目標空燃比に適切に一致し得なくなるという問題があった。
【発明の開示】
【００１１】
従って、本発明の目的は、触媒下流の起電力式の酸素濃度センサの出力値と目標空燃比相当値との偏差等に基づく値を積算して更新されていく時間積分値に基づいて空燃比をフィードバック制御する空燃比制御装置において、上記吸排気系の誤差が早期に精度よく補償され得るものを提供することにある。
【００１２】
本発明に係る第１の空燃比制御装置は、内燃機関の排気通路に配設された酸素吸蔵機能を有する触媒と、前記触媒よりも下流の排気通路に配設されて触媒から流出するガスの空燃比に応じた値を出力する起電力式の酸素濃度センサとを備えた内燃機関に適用される。
【００１３】
本発明に係る第１の空燃比制御装置は、前記酸素濃度センサの出力値と目標空燃比相当値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新する時間積分値更新手段と、前記時間積分値に少なくとも基づいて前記触媒に流入するガスの空燃比を前記目標空燃比に一致するようにフィードバック制御するフィードバック制御手段と、前記時間積分値が収束したか否かを判定する収束判定手段と
を備え、前記時間積分値更新手段は、前記時間積分値の変化速度を変更する変化速度変更手段を備える。
【００１４】
ここにおいて、「相違起因値」とは、例えば、酸素濃度センサの出力値と目標空燃比に相当する酸素濃度センサの出力値との差、酸素濃度センサにより検出される検出空燃比と目標空燃比との差等であって、これらに限定されない。
【００１５】
本発明に係る第１の空燃比制御装置の特徴は、前記変化速度変更手段が、前記未収束フィードバック開始時において、前記フィードバック制御開始後の所定の時期以降における前記時間積分値の変化速度を、同所定の時期よりも前における同時間積分値の変化速度より小さくするように構成されたことにある。
【００１６】
具体的には、例えば、前記所定の時期として、前記フィードバック制御開始後における前記酸素濃度センサの出力値の１回目の反転時期以降の時期（例えば、前記１回目の反転時期そのもの）を使用するように構成されることが好適である。なお、以下、フィードバック制御開始後における酸素濃度センサの出力値のＮ回目（Ｎ：自然数）の反転時期を、単に「Ｎ回目の反転時期」と呼ぶ。
【００１７】
未収束フィードバック開始時において、時間積分値（或いは、時間積分値の学習値）は、上記収束値から大きく乖離している場合がある。この場合、１回目の反転時期において、時間積分値（或いは、時間積分値の学習値）は、収束値に比較的近い値になっている傾向がある（図９の時刻ｔ１を参照）。
【００１８】
上記構成によれば、1回目の反転時期よりも前における時間積分値の変化速度を大きくすることができる。従って、未収束フィードバック開始時において、時間積分値（或いは、時間積分値の学習値）が収束値から大きく乖離している場合であっても、時間積分値（或いは、時間積分値の学習値）を迅速に収束値に近づけることができる。この結果、収束完了時期も早めることができる。
【００１９】
また、収束完了時期よりも前において、時間積分値の変化速度を小さくすることができる。ここで、時間積分値の変動幅（上記一出力値維持期間中における時間積分値の最小値と最大値の差）は、時間積分値の変化速度が小さいほど小さくなる。以上より、時間積分値の変動幅が小さい状態で時間積分値が収束した（或いは、時間積分値の学習が完了した）と判定され得る。従って、収束完了時期において、時間積分値（或いは、時間積分値の学習値）が収束値から大きくずれることを回避することができる。以上のことから、上記吸排気系の誤差を早期に精度よく補償することができる。
【００２０】
上記本発明に係る第１の空燃比制御装置においては、前記触媒に吸蔵される酸素の最大量である最大酸素吸蔵量を取得する最大酸素吸蔵量取得手段を備え、前記変化速度変更手段が、前記最大酸素吸蔵量が大きいほど前記所定の時期以降における前記時間積分値の変化速度をより小さい値に設定するように構成されることが好適である。
【００２１】
時間積分値の変動幅は、時間積分値の変化速度が一定である場合、最大酸素吸蔵量が大きいほど、上記一出力値維持期間が長くなることに起因して大きくなる傾向がある。このことを考慮すると、上記構成によれば、最大酸素吸蔵量の大きさに依存することなく、収束完了時期よりも前において、時間積分値の変動幅を略一定かつ小さくすることができる。従って、収束完了時期において、時間積分値（或いは、時間積分値の学習値）が収束値からずれる程度を略一定かつ小さくすることができる。この結果、最大酸素吸蔵量の大きさに依存することなく、上記吸排気系の誤差を安定して精度よく補償することができる。
【００２２】
本発明に係る第２の空燃比制御装置は、上記本発明に係る第１の空燃比制御装置が有するものと同じ触媒、及び酸素濃度センサに加え、更に、前記触媒よりも上流の前記排気通路に配設されて同触媒に流入するガスの空燃比に応じた値を出力する上流側空燃比センサを備えた内燃機関に適用される。
【００２３】
本発明に係る第２の空燃比制御装置は、上記本発明に係る第１の空燃比制御装置が有するものと同じ時間積分値更新手段、及び収束判定手段に加え、更に、前記上流側空燃比センサの出力値と前記時間積分値とに少なくとも基づいて前記触媒に流入するガスの空燃比を前記目標空燃比に一致するようにフィードバック制御するフィードバック制御手段を備え、前記時間積分値更新手段は、前記時間積分値の変化速度を変更する変化速度変更手段を備える。
【００２４】
本発明に係る第２の空燃比制御装置の特徴は、前記最大酸素吸蔵量を取得する最大酸素吸蔵量取得手段と、基準検出空燃比算出手段とを備えたことにある。基準検出空燃比算出手段は、前記未収束フィードバック開始時において、前記上流側空燃比センサにより検出される検出空燃比と、前記触媒に流入するガスの空燃比が前記目標空燃比に一致する場合における前記検出空燃比である基準検出空燃比と、の差に基づいて得られる前記触媒に流入するガス中の酸素の過不足量の、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ回目（Ｎは自然数）の反転時期からＮ＋１回目の反転時期までの間に亘る経緯と、前記最大酸素吸蔵量と、に基づいて、前記基準検出空燃比を算出する。
【００２５】
また、上記本発明に係る第２の空燃比制御装置の特徴は、前記時間積分値更新手段が、前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ＋１回目の反転時期以降、前記基準検出空燃比に対応する前記上流側空燃比センサの出力値と、前記検出空燃比が前記目標空燃比に一致する場合における前記上流側空燃比センサの出力値との相違を利用して、前記時間積分値を更新するように構成され、前記変化速度変更手段が、前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ＋１回目の反転時期以降の所定の時期以降における前記時間積分値の変化速度を、同所定の時期よりも前における同時間積分値の変化速度より小さくするように構成されたことにある。
【００２６】
上流側空燃比センサの出力値と、時間積分値とに基づく空燃比のフィードバック制御において、特に、上流側空燃比センサの出力値と目標空燃比相当値との偏差等に係わる積分処理（Ｉ処理）が行われる場合、上流側空燃比センサの誤差以外の上記吸排気系の誤差は、この積分処理により補償され得る。一方、上流側空燃比センサの誤差は、上記時間積分値（或いは、時間積分値の学習値）により補償され得る。即ち、時間積分値の収束値は、上流側空燃比センサの誤差に対応する値となる。
【００２７】
一方、上流側空燃比センサに誤差が生じている場合、上記基準検出空燃比は、上流側空燃比センサの誤差に相当する分だけ目標空燃比から偏移した値として算出され得る（後に、詳述する。下記(3)式を参照）。即ち、基準検出空燃比に対応する上流側空燃比センサの出力値と、検出空燃比が目標空燃比に一致する場合における上流側空燃比センサの出力値との相違は、上流側空燃比センサの誤差を表す。以上より、この相違を利用して時間積分値を更新することで、時間積分値（或いは、時間積分値の学習値）を、上記上流側空燃比センサの誤差に対応する値（即ち、収束値）に一致させることができる。
【００２８】
上記構成は、係る知見に基づく。即ち、例えば、自然数Ｎとして１が使用される場合、上記基準検出空燃比はＮ＋１回目（即ち、２回目）の反転時期にて取得され得、この基準検出空燃比を用いて２回目の反転時期において時間積分値（或いは、時間積分値の学習値）を収束値に直ちに一致させることができる（図１２の時刻ｔ１２を参照）。加えて、２回目の反転時期よりも前における時間積分値の変化速度を大きくすることができる。従って、未収束フィードバック開始時において、時間積分値（或いは、時間積分値の学習値）が収束値から大きく乖離している場合であっても、時間積分値（或いは、時間積分値の学習値）を迅速に収束値に一致させることができる。この結果、収束完了時期も早めることができる。
【００２９】
また、収束完了時期よりも前において、時間積分値の変化速度（従って、時間積分値の変動幅）を小さくすることができる。従って、収束完了時期において、時間積分値（或いは、時間積分値の学習値）が収束値から大きくずれることを回避することができる。この結果、以上より、上流側空燃比センサの誤差を早期に精度よく補償することができる。
【００３０】
上記本発明に係る第２の空燃比制御装置においては、前記触媒の最大酸素吸蔵量に影響を与える値である影響付与値を取得する影響付与値取得手段と、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＮ回目の反転時期からＮ＋１回目の反転時期までの間に亘る、前記影響付与値の、前記最大酸素吸蔵量取得手段により前記最大酸素吸蔵量が取得された時点での同影響付与値（以下、「取得時影響付与値」と称呼する。）からの相違の程度に応じて前記最大酸素吸蔵量を補正する最大酸素吸蔵量補正手段とを備え、前記基準検出空燃比算出手段が、前記基準検出空燃比を算出する際に前記補正された最大酸素吸蔵量を使用するように構成されることが好適である。
【００３１】
ここにおいて、「影響付与値」とは、例えば、内燃機関の吸気通路における空気流量、触媒の温度等であって、これらに限定されない。また、「前記影響付与値の、上記取得時影響付与値からの相違の程度」とは、例えば、Ｎ回目の反転時期からＮ＋１回目の反転時期の間における影響付与値と取得時影響付与値との差の絶対値の最大値、Ｎ回目の反転時期からＮ＋１回目の反転時期までの間に亘る同絶対値の積算値等であって、これらに限定されない。また、「前記最大酸素吸蔵量が取得された時点」とは、例えば、所定のタイミング毎に最大酸素吸蔵量が取得される場合において、最大酸素吸蔵量の最新値が取得された時点等を意味している。
【００３２】
現時点での影響付与値が、取得時影響付与値から偏移する場合、現時点での最大酸素吸蔵量も、その偏移の程度に応じて取得されている最大酸素吸蔵量（の最新値）から偏移する。この場合、基準検出空燃比を正確に算出する観点から、基準検出空燃比の算出に際し、最大酸素吸蔵量として、取得されている最大酸素吸蔵量から上記偏移の程度に応じて補正された値を使用することが好ましい。
【００３３】
上記構成は係る知見に基づくものである。これによれば、補正された最大酸素吸蔵量を使用することで、基準検出空燃比を正確に算出することができ、時間積分値（或いは、時間積分値の学習値）を、上記上流側空燃比センサの誤差に対応する値（従って、収束値）に正確に一致させることができる。この結果、上流側空燃比センサの誤差をより一層精度よく補償することができる。
【００３４】
影響付与値として、例えば、空気流量（或いは、触媒の温度）が使用される場合、空気流量（或いは、触媒の温度）が、最大酸素吸蔵量が取得された時点での空気流量より大きいほど（或いは、同時点での触媒の温度より高いほど）最大酸素吸蔵量をより大きい値に補正すると好適である。
【００３５】
上記本発明に係る第２の空燃比制御装置においては、前記影響付与値を取得する影響付与値取得手段を備え、前記基準検出空燃比算出手段、前記時間積分値更新手段、及び前記変化速度変更手段が、前記未収束フィードバック開始時において、前記フィードバック制御開始後における前記酸素濃度センサの出力値のＭ回目（Ｍは自然数）の反転時期からＭ＋１回目の反転時期までの間に亘る、前記影響付与値の、上記取得時影響付与値からの相違の程度が所定の程度よりも小さい場合、前記自然数Ｎとして、前記自然数Ｍを使用するように構成されると好適である。
【００３６】
ここにおいて、「前記影響付与値の、上記取得時影響付与値からの相違の程度が所定の程度よりも小さい場合」とは、例えば、Ｍ回目の反転時期からＭ＋１回目の反転時期の間における影響付与値と取得時影響付与値との差の絶対値の最大値が所定値よりも小さい場合、Ｍ回目の反転時期からＭ＋１回目の反転時期までの間に亘る同絶対値の積算値が所定値よりも小さい場合等であって、これらに限定されない。
【００３７】
影響付与値の、取得時影響付与値からの偏移が大きい場合、最大酸素吸蔵量の、取得されている最大酸素吸蔵量からの偏移も大きい。従って、取得されている最大酸素吸蔵量そのものが基準検出空燃比の算出に使用される場合、基準検出空燃比を正確に算出する観点から、基準検出空燃比の算出に使用される一出力値維持期間として、影響付与値の取得時影響付与値からの相違の程度が小さい期間のみが使用されることが好ましい。
【００３８】
上記構成は、係る知見に基づくものである。これによれば、取得されている最大酸素吸蔵量を用いて基準検出空燃比を正確に算出することができる。
【００３９】
上記本発明に係る第２の空燃比制御装置においては、前記変化速度変更手段が、前記最大酸素吸蔵量が大きいほど前記所定の時期以降における前記時間積分値の変化速度をより小さい値に設定するように構成されると好適である。これによれば、上記第１の空燃比制御装置の場合と同様の理由により、最大酸素吸蔵量の大きさに依存することなく、上流側空燃比センサの誤差を安定して精度よく補償することができる。
【発明を実施するための最良の形態】
【００４０】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００４１】
（第１実施形態）
図１は、本発明の第１実施形態に係る空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００４２】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これによりクランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００４３】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともにインテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ３９を備えている。
【００４４】
吸気系統４０は、吸気ポート３１に連通し吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、及びスロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａを備えている。
【００４５】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１に接続されたエキゾーストパイプ５２、エキゾーストパイプ５２に配設された上流側触媒５３、上流側触媒５３よりも下流のエキゾーストパイプ５２に配設された下流側触媒５４を備えている。排気ポート３４、エキゾーストマニホールド５１及びエキゾーストパイプ５２は、排気通路を構成している。
【００４６】
上流側触媒５３及び下流側触媒５４のそれぞれは、所謂、白金等の貴金属からなる活性成分を担持する三元触媒装置である。各触媒は、触媒流入ガスがほぼ理論空燃比であるとき、ＨＣ，ＣＯなどの未燃ガスを酸化するとともに、窒素酸化物（ＮＯｘ）を還元する機能を有する。更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有し、この酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃ガス及び窒素酸化物を浄化することができる。この酸素吸蔵機能は、触媒に担持されているセリア(CeO2)によってもたらされる。
【００４７】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、空燃比センサ６６、酸素濃度センサ６７、及びアクセル開度センサ６８を備えている。
【００４８】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量を検出し、質量流量Gaを表す信号を出力するようになっている。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともにクランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、運転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００４９】
空燃比センサ６６は、排気通路であって上流側触媒５３よりも上流側に配設されている。空燃比センサ６６は、所謂「限界電流式酸素濃度センサ」であって、上流側触媒５３に流入する排ガス中の空燃比を検出し、図２に実線にて示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧である出力値Vabyfs(V)を出力するようになっている。特に、正常状態では、空燃比が理論空燃比であるときに出力値Vabyfs(V)は値Vstoich(V)になるようになっている。図２から明らかなように、空燃比センサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。
【００５０】
酸素濃度センサ６７は、排気通路であって上流側触媒５３よりも下流側であり下流側触媒５４よりも上流側に配設されている。酸素濃度センサ６７は、所謂「起電力式（濃淡電池型）の酸素濃度センサ」である。図３に示したように、酸素濃度センサ６７は、上流側触媒５３から流出するガスの空燃比が理論空燃比よりもリッチ及びリーンのとき略０．９(V)（最大値）及び略０．１(V)（最小値）の電圧をそれぞれ出力し、上流側触媒５３から流出するガスの空燃比が理論空燃比であるときは０．５(V)（＝下流側目標値Voxsref）の電圧を出力するようになっている。
【００５１】
アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００５２】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、及びスロットル弁アクチュエータ４３ａに駆動信号を送出するようになっている。
【００５３】
（空燃比フィードバック制御の概要）
次に、上記のように構成された空燃比制御装置が行う空燃比のフィードバック制御の概要について説明する。
【００５４】
この空燃比制御装置（以下、「本装置」と称呼する。）は、酸素濃度センサ６７の出力値Voxsと理論空燃比stoichに相当する下流側目標値Voxsref(＝０．５（V）)との偏差DVoxs（＝Voxsref−Voxs）を比例・積分・微分処理（ＰＩＤ処理）して下流側フィードバック補正値Vafsfbを求め、下流側フィードバック補正値Vafsfbを空燃比センサ６６の出力値Vabyfsに加えて空燃比センサ６６の出力値Vabyfsを補正し、この補正した値に対応する空燃比（以下、「制御用空燃比」と称呼する。）が目標空燃比（＝理論空燃比）と一致するように空燃比をフィードバック制御する。これにより、上流側触媒５３下流の空燃比が目標空燃比と一致するように空燃比がフィードバック制御される。なお、酸素濃度センサ６７の出力値Voxsに基づく空燃比フィードバック制御を、特に「下流側フィードバック制御」と呼ぶこともある。
【００５５】
また、本装置は、所定のタイミング毎に、下流側フィードバック補正値Vafsfbの積分項「Ki・SDVoxs」（Ki：積分ゲイン、SDVoxs:偏差DVoxsに基づく値の時間積分値（偏差積分値））の学習処理を行う。この学習処理では、後述するように、偏差積分値SDVoxsの定常的な成分が積分項「Ki・SDVoxs」の学習値Learnに移し変えられる。即ち、本例では、積分項「Ki・SDVoxs」と学習値Learnの和（＝Ki・SDVoxs＋Learn）が下流側フィードバック補正値Vafsfbの実質的な積分項として機能する。以下、この和を「積分項SUM」と称呼する。そして、本装置は、積分項SUM（従って、学習値Learn）が収束したか否かの判定を行い、積分項SUMが収束したと判定した場合、「学習が完了した」と判定し、上記学習処理を終了する。以下、積分項SUMが収束したと判定されている状態及び判定されていない状態を、「収束状態」及び「未収束状態」とそれぞれ称呼する。
【００５６】
ところで、限界電流式の酸素濃度センサである空燃比センサ６６は、個体誤差、経年変化等により理論空燃比stoichに対応する出力値が正常値（本例では、図２における値Vstoich）から偏移し易い特性を有する。この例では、空燃比センサ６６の出力値Vabyfsが、図２に破線にて示したように、空燃比全域に亘って正常値から値（Vstoich−Vstoich1）だけ小さめに偏移していて、この結果、理論空燃比stoichに対応する出力値が正常値Vstoichより小さい値Vstoich1になっているものとする。即ち、実際の空燃比（即ち、上流側触媒５３に流入するガスの空燃比）が理論空燃比stoichに一致する場合において、空燃比センサ６６により検出される空燃比（以下、「検出空燃比」と称呼する。）は、理論空燃比stoichより値（Vstoich−Vstoich1）に相当する分だけリッチ側に偏移した空燃比（以下、「基準検出空燃比stoich1」と称呼する。）になるものとする。
【００５７】
上述した本装置によるフィードバック制御が実行されると、係る空燃比センサ６６の誤差は上記積分項SUMにより補償される。即ち、定常運転状態では、積分項SUMの値が値（Vstoich−Vstoich1）と等しい値SUM1に収束することで制御用空燃比が実際の空燃比と一致し、この結果、上流側触媒５３の上下流の空燃比が理論空燃比に維持され得る。
【００５８】
この積分項SUMは、例えば、システムが新品の状態（新車時）、車両のバッテリ交換時等において「０」（即ち、SDVoxs＝Learn＝０）にリセットされる。この場合、内燃機関１０の始動後において未収束状態にて下流側フィードバックが開始され、積分項SUMは、「０」から上記値SUM1に近づいていき、同値SUM1に収束する。
【００５９】
本装置は、このように未収束状態で下流側フィードバック制御が開始された場合（以下、「未収束ＦＢ開始時」と称呼する。）において、以下に述べるように、積分項SUMの変化速度を設定・変更する。
【００６０】
（実際の作動）
以下、このような処理を行う本装置の実際の作動について、図４〜図８に示したフローチャート、及び図９に示したタイムチャートを参照しながら説明していく。
【００６１】
図９は、未収束ＦＢ開始時において、積分項SUM＝０（SDVoxs＝Learn＝０）にリセットされた状態で時刻ｔ０から下流側フィードバック制御が開始される場合における調整値K、積分項SUM、及び酸素濃度センサ６７の出力値Voxsの変化を示したタイムチャートである。調整値Kは、後に詳述するように、積分項SUMの変化速度を変更するために使用される係数である。
【００６２】
以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。
【００６３】
<空燃比フィードバック制御>
ＣＰＵ７１は、図４にフローチャートにより示した燃料噴射量Fiの計算、及び燃料噴射の指示を行うルーチンを、内燃機関１０の始動時点以降、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、内燃機関１０の始動時点以降、任意の気筒のクランク角度が上記所定クランク角度になると、ＣＰＵ７１はステップ４００から処理を開始してステップ４０５に進み、テーブルMapMc(NE,Ga)に基づいて今回の吸気行程を迎える気筒（以下、「燃料噴射気筒」と云うこともある。）に吸入された今回の筒内吸入空気量Mc(k)を推定・決定する。ここで、添え字の（k）は、今回の吸気行程に対する値であることを示している（以下、他の物理量についても同様。）。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００６４】
次に、ＣＰＵ７１はステップ４１０に進んで、上記筒内吸入空気量Mc(k)を目標空燃比abyfrで除することにより、基本燃料噴射量Fbaseを決定する。次いで、ＣＰＵ７１はステップ４１５に進み、今回の目標筒内燃料供給量Fcr(k)を上記基本燃料噴射量Fbaseに設定する。目標筒内燃料供給量Fcrは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００６５】
続いて、ＣＰＵ７１はステップ４２０に進んで、上記基本燃料噴射量Fbaseに後述するルーチンにて（前回の燃料噴射時点にて）求められている最新の上流側フィードバック補正値DFiを加えることにより燃料噴射量Fiを決定する。そして、ＣＰＵ７１はステップ４２５に進んで、上記燃料噴射量Fiの燃料の噴射指示を行った後、ステップ４９５に進んで本ルーチンを一旦終了する。
【００６６】
<上流側フィードバック補正値DFiの計算>
次に、上流側フィードバック補正値DFiを算出する際の作動を説明すると、ＣＰＵ７１は図５にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。従って、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ５００から処理を開始し、ステップ５０５に進んで上流側フィードバック条件が成立しているか否かを判定する。ここで、上流側フィードバック条件は、本例では、冷却水温THWが第１所定温度以上であり、筒内吸入空気量Mcが所定値以下であり、且つ、空燃比センサ６６が正常であるときに成立する。
【００６７】
いま、内燃機関１０の始動直後であって、冷却水温THWが第１所定温度より低い等により上流側フィードバック条件が成立していないものとする。この場合、ＣＰＵ７１はステップ５０５にて「Ｎｏ」と判定してステップ５１０に進み上流側フィードバック補正値DFiを「０」に設定し、続くステップ５１５にて上流側フィードバック補正値DFiの計算に使用される筒内燃料供給量偏差の積分値SDFcを「０」に設定した後、ステップ５９５に進んで本ルーチンを一旦終了する。以降、上流側フィードバック条件が成立するまでＣＰＵ７１はステップ５００,５０５,５１０,５１５の処理を繰り返し実行する。
【００６８】
<下流側フィードバック補正値Vafsfbの計算>
次に、下流側フィードバック補正値Vafsfbを算出する際の作動を説明する。下流側フィードバック補正値Vafsfbは、制御用空燃比abyfsを得るために、後述するステップ５２０にて空燃比センサ６６の出力値Vabyfsに加えられる値である。ＣＰＵ７１は図６にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。従って、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ６００から処理を開始し、ステップ６０５に進んで下流側フィードバック条件が成立しているか否かを判定する。ここで、下流側フィードバック条件は、本例では、前述したステップ５０５での上流側フィードバック条件が成立し、冷却水温THWが上記第１所定温度よりも高い第２所定温度以上であり、且つ、酸素濃度センサ６７が正常であるときに成立する。
【００６９】
現時点は内燃機関１０の始動直後であって、上述のごとく上流側フィードバック条件が成立していないから、下流側フィードバック条件も成立していない。従って、ＣＰＵ７１はステップ６０５にて「Ｎｏ」と判定してステップ６１０に進み下流側フィードバック補正値Vafsfbを「０」に設定し、続くステップ６１５にて下流側フィードバック補正値Vafsfbの計算に使用される偏差積分値SDVoxsを「０」に設定した後、ステップ６９５に進んで本ルーチンを一旦終了する。以降、下流側フィードバック条件が成立するまでＣＰＵ７１はステップ６００,６０５,６１０,６１５の処理を繰り返し実行する。
【００７０】
<調整値Kの設定>
次に、調整値Kを設定する際の作動を説明すると、ＣＰＵ７１は図７にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。従って、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ７００から処理を開始し、ステップ７０５に進んで、周知の手法（例えば、酸素濃度センサ６７の出力値Voxsの反転する時期毎に空燃比を所定のリッチ・リーン空燃比の一方から他方に交互に切り換える所謂アクティブ空燃比制御を利用した手法等）により所定のタイミング毎に上流側触媒５３の最大酸素吸蔵量Cmaxを更新し、更新した最大酸素吸蔵量CmaxをバックアップＲＡＭ７４の所定の領域に記憶する。このステップ７０５が前記最大酸素吸蔵量取得手段に対応する。
【００７１】
次に、ＣＰＵ７１はステップ７１０に進んで下流側フィードバック条件が成立しているか否かを判定する。現時点は内燃機関１０の始動直後であって、上述のごとく下流側フィードバック条件が成立していない。従って、ＣＰＵ７１はステップ７１０にて「Ｎｏ」と判定して、ステップ７９５に直ちに進んで本ルーチンを一旦終了する。以降、下流側フィードバック条件が成立するまでＣＰＵ７１はステップ７００,７０５,７１０の処理を繰り返し実行する。
【００７２】
これにより、内燃機関１０の始動時点以降、上流側フィードバック条件が成立するまで、上流側フィードバック補正値DFi（及び下流側フィードバック補正値Vafsfb）が「０」に維持されることにより（ステップ５１０,６１０を参照）、燃料噴射量Fiが基本燃料噴射量Fbaseに維持される（ステップ４２０を参照）。即ち、空燃比フィードバック制御が実行されない。また、上流側フィードバック条件成立後であっても下流側フィードバック条件が成立するまでは、下流側フィードバック制御が実行されないから、積分項SUMが「０」に維持される。
【００７３】
次に、時刻ｔ０が到来した場合、即ち、既に成立していた上流側フィードバック条件に加えて、下流側フィードバック条件が成立した場合について説明する。この場合、図５のルーチンを繰り返し実行するＣＰＵ７１は、ステップ５０５に進んだとき「Ｙｅｓ」と判定して、ステップ５２０以降のステップの処理を実行する。
【００７４】
ＣＰＵ７１はステップ５２０に進むと、現時点の空燃比センサ６６の出力値Vabyfsと図６のルーチンにて（前回の燃料噴射時点にて）求められている下流側フィードバック補正値Vafsfbとの和である制御用空燃比相当出力値(Vabyfs＋Vafsfb)をテーブルMapabyfs(Vabyfs＋Vafsfb)（図２を参照）に基づいて変換することにより、現時点における制御用空燃比abyfsを求める。
【００７５】
次に、ＣＰＵ７１はステップ５２５に進んで、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Mc(k−N)を上記制御用空燃比abyfsで除することにより、現時点からＮストローク前の制御用筒内燃料供給量Fc(k−N)を求める。ここで、値Ｎは、内燃機関１０の排気量、燃焼室２５から空燃比センサ６６までの距離等により異なる値である。
【００７６】
このように、現時点からＮストローク前の制御用筒内燃料供給量Fc(k−N)を求めるために、現時点からＮストローク前の筒内吸入空気量Mc(k−N)を今回の制御用空燃比abyfsで除するのは、空燃比センサ６６の現時点での出力値Vabyfsは、Ｎストローク前の吸気行程にて吸入された混合気の燃焼に基づく排ガスの空燃比を表しているからである。
【００７７】
次いで、ＣＰＵ７１はステップ５３０に進み、現時点からＮストローク前の目標筒内燃料供給量Fcr(k−N)から上記制御用筒内燃料供給量Fc(k−N)を減じることにより筒内燃料供給量偏差DFcを求める。つまり、筒内燃料供給量偏差DFcは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。続いて、ＣＰＵ７１はステップ５３５に進んで、ステップ５３５内に記載の式に基づいて上流側フィードバック補正値DFiを求める。この上流側フィードバック補正値DFiが上述した図４のステップ４２０にて燃料噴射量Fiに反映されることで空燃比フィードバック制御が実行される。
【００７８】
ここにおいて、Gpは予め設定された一定の比例ゲイン（比例定数）、Giは予め設定された一定の積分ゲイン（積分定数）である。また、係数KFBは、運転速度NE、及び筒内吸入空気量Mc等により可変とすることが好適であるが、本例では「１」としている。SDFcは筒内燃料供給量偏差DFcの積分値であり、次のステップ５４０にて更新される。即ち、ＣＰＵ７１はステップ５４０にてその時点における筒内燃料供給量偏差DFcの積分値SDFcに上記ステップ５３０にて求めた筒内燃料供給量偏差DFcを加えて、新たな筒内燃料供給量偏差の積分値SDFcを求めた後、ステップ５９５に進んで本ルーチンを一旦終了する。この積分処理（Ｉ処理）により上記空燃比センサ６６の誤差以外の上記吸排気系の誤差が補償され得る。以降、上流側フィードバック条件が成立している限りにおいて、ＣＰＵ７１はステップ５００,５０５,５２０〜５４０の処理を繰り返し実行する。
【００７９】
また、下流側フィードバック条件が成立する時刻ｔ０になると、図６のステップ６００,６０５,６１０,６１５を繰り返し実行していたＣＰＵ７１は、ステップ６０５に進んだとき「Ｙｅｓ」と判定するようになり、ステップ６２０以降のステップの処理を実行するようになる。
【００８０】
ＣＰＵ７１はステップ６２０に進むと、目標空燃比（＝理論空燃比）に相当する値である下流側目標値Voxsrefから現時点の酸素濃度センサ６７の出力値Voxsを減じることにより、出力偏差量DVoxs（相違起因値）を求める。次に、ＣＰＵ７１はステップ６２５に進んで、ステップ６２５内に記載の式に基づき出力偏差量の微分値DDVoxsを求める。
【００８１】
ここにおいて、DVoxs1は前回の本ルーチン実行時において後述するステップ６４５にて設定（更新）された出力偏差量DVoxsの前回値である。また、Δtは本ルーチンが前回実行された時点から今回実行された時点までの時間である。
【００８２】
次に、ＣＰＵ７１はステップ６３０に進んで、ステップ６３０内に記載の式に基づいて上記積分項SUMを求める。ここにおいて、Kiは予め設定された一定の積分ゲイン（積分定数）である。SDVoxsは出力偏差量DVoxsに調整値Kを乗じた値（相違起因値に基づく値）の積分値である偏差積分値であり、後述するステップ６４０にて更新される。Learnは後述する図８のルーチンにて更新され、バックアップＲＡＭ７４に記憶されている、積分項「Ki・SDVoxs」の学習値の最新値である。なお、上述のように、時刻ｔ０における積分項SUMの値は「０」となる。
【００８３】
次いで、ＣＰＵ７１はステップ６３５に進み、ステップ６３５内に記載の式に基づいて下流側フィードバック補正値Vafsfbを求める。この下流側フィードバック補正値Vafsfbが上述した図５のステップ５２０にて制御用空燃比abyfsを求めるのに用いられる。ここにおいて、Kpは予め設定された一定の比例ゲイン（比例定数）、Kdは予め設定された一定の微分ゲイン（微分定数）である。このステップ６３５、図４のルーチン、及び図５のルーチンが前記フィードバック制御手段の一部に対応する。
【００８４】
次いで、ＣＰＵ７１はステップ６４０に進み、その時点における偏差積分値SDVoxsに、ステップ６２０にて求められた出力偏差量DVoxsに図７のルーチンにて（前回の燃料噴射時点にて）設定された調整値Kを乗じた値を加えて、新たな偏差積分値SDVoxsを求める。即ち、偏差積分値SDVoxsの一更新当たりの変化量は「DVoxs・K」である。これらのステップ６２０,６３０,６４０が前記時間積分値更新手段の一部に対応する。
【００８５】
続いて、ＣＰＵ７１はステップ６４５に進み、出力偏差量DVoxsの前回値DVoxs1を上記ステップ６２０にて求めた出力偏差量DVoxsに設定した後、ステップ６９５に進んで本ルーチンを一旦終了する。以降、下流側フィードバック条件が成立している限りにおいて、ＣＰＵ７１はステップ６００,６０５,６２０〜６４５の処理を繰り返し実行する。このようにして、時刻ｔ０以降、下流側フィードバック制御が開始され、空燃比センサ６６、及び酸素濃度センサ６７の出力に基づいて、制御用空燃比abyfsが目標空燃比abyfr（＝理論空燃比）に一致するように制御される。
【００８６】
また、下流側フィードバック条件が成立する時刻ｔ０になると、図７のステップ７００,７０５,７１０を繰り返し実行していたＣＰＵ７１は、ステップ７１０に進んだとき「Ｙｅｓ」と判定してステップ７１５に進み、フラグＸＣＯＭＰの値が「０」であるか否かを判定するようになる。ここで、フラグＸＣＯＭＰは、その値が「１」のとき「収束状態」を示し、その値が「０」のとき「未収束状態」を示す。
【００８７】
現時点は、未収束状態にあり、フラグＸＣＯＭＰの値が「０」となっている。従って、ＣＰＵ７１はステップ７１５にて「Ｙｅｓ」と判定してステップ７２０に進み、下流側フィードバック制御開始後（時刻ｔ０以降）における酸素濃度センサ６７の出力値Voxsの１回目の反転時期（以下、単に「１回目の反転時期」と称呼する。）が経過したか否かを判定する。現時点では、時刻ｔ０以降酸素濃度センサ６７の出力値Voxsは１回も反転していないから、ＣＰＵ７１はステップ７２０にて「Ｎｏ」と判定してステップ７２５に進み、調整値Kを「１」に設定した後、ステップ７９５に進んで本ルーチンを一旦終了する。
【００８８】
以降、１回目の反転時期が経過するまでＣＰＵ７１はステップ７００,７０５,７１０,７１５,７２０,７２５の処理を繰り返し実行し、ステップ７２０にて１回目の反転時期が経過したか否かをモニタするようになる。これにより、時刻ｔ０以降、１回目の反転時期である時刻ｔ１までの間、図９の（Ａ）に示すように、調整値Kは「１」に維持される。
【００８９】
他方、上述したように、時刻ｔ０の時点では積分項SUMは「０」であって上記値SUM1よりも小さい。このことは、上述した空燃比センサ６６の誤差に起因して実際の空燃比が制御用空燃比よりもリーンとなる傾向にあることを意味する。従って、時刻ｔ０以降、実際の空燃比は理論空燃比よりもリーン傾向となる。この結果、図９の（Ｃ）に示すように、酸素濃度センサ６７の出力値Voxsは略０．１（V）（最小値）となるから、出力偏差量DVoxsが正の大きい値になる（ステップ６２０を参照）。
【００９０】
時刻ｔ０以降、偏差積分値SDVoxsの一更新当たりの変化量「DVoxs・K」は、調整値Kが「１」に維持されること、並びに、出力偏差量DVoxsが正の大きい値になることから、正の大きい値となる。この結果、時刻ｔ０以降、図９の（Ｂ）に示すように、積分項SUMは、大きい変化速度（増加速度）をもって「０」から比較的急激に増大していく。
【００９１】
このように、上記大きい増加速度をもって増大していく積分項SUMは、時刻ｔ０以降のある時点で上記値SUM1より大きくなる（即ち、上流側触媒５３よりも上流側の空燃比が理論空燃比よりもリッチ傾向となる。）。これ以降において、上流側触媒５３の下流側の空燃比が理論空燃比よりもリッチとなる時刻ｔ１において、図９の（Ｃ）に示すように、略０．１（V）に維持されていた酸素濃度センサ６７の出力値Voxsは、下流側フィードバック制御開始後はじめて略０．９（V）に反転する。
【００９２】
そして、この時刻ｔ１において、図９の（Ｂ）に示すように、積分項SUMは上記値SUM1に比較的近い値となる傾向がある。このように、未収束ＦＢ開始時において上記値SUM1から大きく乖離していた積分項SUMは、迅速に上記値SUM1に近づく。
【００９３】
１回目の反転時期である時刻ｔ１になると、図７のルーチンを繰り返し実行しているＣＰＵ７１はステップ７２０に進んだとき「Ｙｅｓ」と判定してステップ７３０に進むようになり、テーブルMapK(Cmax)に基づいて調整値Kを決定した後、ステップ７９５に進んで本ルーチンを一旦終了する。
【００９４】
より具体的には、図１０に示すように、上記テーブルMapK(Cmax)により、調整値Kは「１」より小さい値であって、最大酸素吸蔵量Cmaxが大きいほどより小さい値に決定される。即ち、積分項SUMの変化速度は、最大酸素吸蔵量Cmaxが大きいほどより小さい値に設定される。
【００９５】
以降、ＣＰＵ７１はステップ７００,７０５,７１０,７１５,７２０,７３０の処理を繰り返し実行する。これにより、時刻ｔ１以降、調整値Kは、最大酸素吸蔵量Cmaxに応じた「１」より小さい値K1に決定される。即ち、時刻ｔ１以降、偏差積分値SDVoxsの一更新当たりの変化量「DVoxs・K」（＝DVoxs・K1）の絶対値は小さい値となる。
【００９６】
時刻ｔ１以降、上述したように、起電力式の酸素濃度センサ６７の出力値は、図９の（Ｃ）に示すように、略０．９（V）と略０．１（V）を交互に採りながら周期的に変動していく。これに伴って、偏差積分値SDVoxsの一更新当たりの変化量「DVoxs・K」（＝DVoxs・K1）も周期的に絶対値の小さい負・正の値を交互に採るようになる。この結果、図９の（Ｂ）に示すように、積分項SUMは、上記値SUM1を中心に小さい変化速度をもって比較的緩やかに変動していく。ここで、積分項SUMの変動幅は、積分項SUMの変化速度が小さいほど小さくなる。即ち、時刻ｔ１以降、積分項SUMの変動幅は小さい。以上、図７のルーチン、及び図６のステップ６４０が前記変化速度変更手段の一部に対応する。
【００９７】
ここで、上記テーブルMapK(Cmax)について付言する。積分項SUMの変動幅は、積分項SUMの変化速度が一定である場合、最大酸素吸蔵量Cmaxが大きいほど酸素濃度センサ６７の出力値Voxsが略０．１(V)又は略０．９(V)に維持される期間（即ち、上記一出力値維持期間）が長くなることに起因して大きくなる。従って、時刻ｔ１以降、上記テーブルMapK(Cmax)を用いて調整値Kを設定すると、最大酸素吸蔵量Cmaxの大きさに依存することなく、積分項SUMの変動幅を略一定かつ小さい値に設定できる。
【００９８】
<積分項の学習値Learnの更新、学習完了判定>
次に、学習値Learnの更新、学習完了判定をする際の作動を説明すると、ＣＰＵ７１は図８にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。従って、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ８００から処理を開始し、ステップ８０５に進んで下流側フィードバック条件が成立しているか否かを判定する。
【００９９】
いま、時刻ｔ０以前であるものとすると、ＣＰＵ７１はステップ８０５にて「Ｎｏ」と判定してステップ８９５に直ちに進んで本ルーチンを一旦終了する。なお、上述したように、学習値Learnは、時刻ｔ０以前では「０」に設定されている。従って、学習値Learnは、はじめて後述の学習タイミングが到来するまで「０」に維持される。
【０１００】
一方、時刻ｔ０になると、ＣＰＵ７１はステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、偏差積分値SDVoxsを所定の時定数をもってローパスフィルタ処理してローパスフィルタ処理後偏差積分値SDVoxslowを取得する。
【０１０１】
次に、ＣＰＵ７１はステップ８１５に進んで、フラグＸＣＯＭＰの値が「０」であるか否かを判定する。現時点は、未収束状態にあるから、フラグＸＣＯＭＰの値が「０」となっている。従って、ＣＰＵ７１はステップ８１５にて「Ｙｅｓ」と判定してステップ８２０に進み、学習値Learnの更新（学習）タイミングが到来しているか否かを判定する。学習タイミングは、本例では、１回目の反転時期（時刻ｔ１）以降の所定のタイミング毎に到来する。従って、現時点では、ＣＰＵ７１はステップ８２０にて「Ｎｏ」と判定し、ステップ８９５に直ちに進んで本ルーチンを一旦終了する。
【０１０２】
以降、学習値Learnの学習タイミングがはじめて到来するまでの間、ＣＰＵ７１はステップ８００,８０５〜８１５,８２０の処理を繰り返し実行し、ステップ８２０にて学習値Learnの学習タイミングが到来しているか否かをモニタする。これにより、図６のステップ６４０にて更新されていく偏差積分値SDVoxsの更新に同期してローパスフィルタ処理後偏差積分値SDVoxslowが更新されていく。
【０１０３】
そして、時刻ｔ１以降、学習タイミングが到来すると、ＣＰＵ７１はステップ８２０に進んだとき「Ｙｅｓ」と判定してステップ８２５に進み、図６のステップ６４０にて更新されている偏差積分値SDVoxsの絶対値｜SDVoxs｜が収束判定値Z（微小値）より大きいか否かを判定する。本例では、これにより積分項SUMの収束判定（学習完了判定）が行なわれる。
【０１０４】
現時点では、Learn＝０であり、値Ki・SDVoxs（＝SUM）が上記値SUM1に近い値となっている。従って、SDVoxs＞Zであるから、ＣＰＵ７１はステップ８２５にて「Ｙｅｓ」と判定してステップ８３０に進み、学習値Learnを更新するための更新値DLearnを上記ステップ８１０にて更新されているローパスフィルタ処理後偏差積分値SDVoxslowと等しい値に設定する。
【０１０５】
続いて、ＣＰＵ７１はステップ８３５に進み、その時点での学習値Learnに上記設定された更新値DLearnに上記積分ゲインKi（一定）を乗じた値を加えて学習値Learnを更新し（偏差積分値を学習し）、更新した学習値LearnをバックアップＲＡＭ７４の所定の領域に記憶する。次いで、ＣＰＵ７１はステップ８４０に進んで、その時点での偏差積分値SDVoxsから上記更新値DLearnを減じた値を上記積分ゲインKiで除することで偏差積分値SDVoxsを再設定し、続くステップ８４５にてローパスフィルタ処理後偏差積分値SDVoxslowを「０」に設定した後、ステップ８９５に進んで本ルーチンを一旦終了する。
【０１０６】
このように、未収束状態の場合（ＸＣＯＭＰ＝０）、学習タイミングが到来する毎に、積分項SUMの収束判定が行われ、積分項SUMが収束していないと判定される（ステップ８２５で「Ｙｅｓ」と判定される）毎に、積分項「Ki・SDVoxs」の学習処理が行われる。この学習処理では、偏差積分値SDVoxsの定常的な成分（即ち、ローパスフィルタ処理後偏差積分値SDVoxslow）が学習値Learnに移し変えられていく。即ち、各学習処理の前後において、積分項「Ki・SDVoxs」と学習値Learnの和である積分項SUMは変化しない。更には、ローパスフィルタ処理後偏差積分値SDVoxslowの値が「０」にクリアされる。
【０１０７】
これにより、学習値Learnが更新される毎に、偏差積分値SDVoxsが「０」に近づいていく一方、学習値Learnが上記「空燃比センサ６６の誤差」の大きさを正確に表す値（即ち、学習値Learnが収束すべき値、上記値SUM1）に近づいていく。（なお、学習値Learnが上記「空燃比センサ６６の誤差」の大きさを正確に表す値に近づいていく速度は、上記ローパスフィルタ処理後偏差積分値SDVoxslowを更新する際に使用されるローパスフィルタの時定数が大きいほど小さくなる。）このような学習処理は、積分項SUMが収束したと判定されるまで繰り返し実行される。
【０１０８】
そして、｜SDVoxs｜≦Zの状態で、時刻ｔ２にて学習タイミングが到来したものとすると、ＣＰＵ７１はステップ８２５にて「Ｎｏ」と判定してステップ８５０に進んでフラグＸＣＯＭＰの値を「０」から「１」に変更する。これにより、収束状態（即ち、学習が完了したと判定された状態）になる。即ち、時刻ｔ２は、上記収束完了時期に相当する。
【０１０９】
時刻ｔ２以降、フラグＸＣＯＭＰの値が「１」であるから、ＣＰＵ７１はステップ８１５に進んだとき「Ｎｏ」と判定してステップ８５５に進み、図６のステップ６４０にて更新されている偏差積分値SDVoxsの絶対値｜SDVoxs｜が再び上記収束判定値Zより大きくなったか否かをモニタするようになる。絶対値｜SDVoxs｜が上記収束判定値Z以下である場合、ＣＰＵ７１はステップ８５５にて「Ｎｏ」と判定してステップ８９５に直ちに進む。即ち、収束状態にある場合、学習処理は実行されない。
【０１１０】
一方、絶対値｜SDVoxs｜が再び上記収束判定値Zより大きくなっている場合、ＣＰＵ７１はステップ８５５にて「Ｙｅｓ」と判定してステップ８６０に進んで、フラグＸＣＯＭＰの値を「１」から「０」に変更した後、ステップ８３０以降の処理を行う。即ち、収束状態において、積分項SUMが収束していないと判定されると、再び、未収束状態になるとともに、学習処理が実行される。以上、図８のルーチンが前記収束判定手段の一部に対応する。
【０１１１】
また、時刻ｔ２以降、収束状態では、図７のルーチンを繰り返し実行しているＣＰＵ７１はステップ７１５に進んだとき「Ｎｏ」と判定してステップ７３０に進むようになり、上記テーブルMapK(Cmax)に基づいて調整値Kが決定される。これにより、時刻ｔ２以降もなお、図９の（Ａ）に示すように、調整値Kが上記値K1（＜１）に維持され、積分項SUMの変化速度（従って、変動幅）は小さい値に維持される。
【０１１２】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第１実施形態によれば、上流側触媒５３下流の酸素濃度センサ６７の出力値Voxsと目標空燃比に対応する下流側目標値Voxsrefとの差である出力偏差量DVoxsに調整値Kが乗じられた値「DVoxs・K」を積算することで下流側フィードバック補正値Vafsfbの積分項SUM（＝Ki・SDVoxs＋Learn）が更新され、この積分値SUMに基づいて下流側フィードバック制御が実行される。加えて、積分項SUMの収束判定が行われる。
【０１１３】
未収束ＦＢ開始時において、１回目の反転時期よりも前（図９の時刻ｔ０〜ｔ１を参照）において調整値Kが、「１」に維持される。これにより、偏差積分値SDVoxsの一更新当たりの変化量「DVoxs・K」が大きい値となって積分項SUMの変化速度が大きくなる。従って、未収束ＦＢ開始時において、上記「空燃比センサ６６の誤差」の大きさを正確に表す値である値SUM1から大きく乖離していた積分項SUMは、迅速に同値SUM1に近づく。即ち、時刻ｔ０〜ｔ１の期間が短くなる。この結果、積分項SUMが収束したと判定される時期（図９の時刻ｔ２を参照）を早めることができる。
【０１１４】
未収束ＦＢ開始時において、１回目の反転時期以降（図９の時刻ｔ１以降を参照）において調整値Kが、「１」より小さい値に設定される。これにより、偏差積分値SDVoxsの一更新当たりの変化量「DVoxs・K」が小さい値となって積分項SUMの変化速度が小さくなる。ここで、積分項SUMの変動幅は、積分項SUMの変化速度が小さいほど小さくなる。以上より、１回目の反転時期以降における積分項SUMの変動幅は小さい。
【０１１５】
即ち、積分項SUMの変動幅が小さい状態で積分項SUMが収束したと判定され得る。従って、収束完了時期（図９の時刻ｔ２を参照）において、積分項SUM（従って、学習値Learn）が上記値SUM1からずれる程度を小さくすることができる。以上のことから、上記「空燃比センサ６６の誤差」を早期に精度よく補償することができる。
【０１１６】
一方、収束状態（ＸＣＯＭＰ＝１、即ち、学習値Learnが上記値SUM1に近い値になっている状態）において、下流側フィードバック制御が開始される場合、１回目の反転時期が経過しているか否かにかかわらず、下流側フィードバック制御開始時点から積分項SUMの変化速度が小さい値に設定される（図７のステップ７１５,７３０を参照）。従って、この場合、下流側フィードバック制御が開始される時点以降における空燃比の荒れを抑制することができる。
【０１１７】
（第２実施形態）
次に、本発明の第２実施形態に係る内燃機関の空燃比制御装置について説明する。この第２実施形態は、１回目の反転時期に代えて、下流側フィードバック制御開始後における酸素濃度センサ６７の出力値Voxsの２回目の反転時期（以下、単に「２回目の反転時期」と称呼する。）において積分項SUMの変化速度を小さい値に設定・変更するとともに、２回目の反転時期において上述した基準検出空燃比stoich1を用いて積分項SUMを上記値SUM1に（略）等しい値に設定する点で上記第１実施形態と異なる。
【０１１８】
以下、第２実施形態に係る空燃比制御装置の実際の作動について説明する。この第２実施形態のＣＰＵ７１は、第１実施形態のＣＰＵ７１が実行する図４〜８に示したルーチンのうち、図４〜６、及び図８に示したルーチンをそれぞれ実行するとともに、図７に示したルーチンに代えて図１１にフローチャートに示したルーチンを実行する。なお、図１１において、図７に示したステップと同一のステップについては、図７のステップ番号と同一のステップ番号を付している。
【０１１９】
以下、第２実施形態に特有の図１１に示したルーチンについて、図９に対応する図１２に示したタイムチャートを参照しながら説明していく。図１２において、OSAは、上流側触媒５３の酸素吸蔵量である。なお、図１２における時刻ｔ１０,ｔ１１,ｔ１３は、図９における時刻ｔ０,ｔ１,ｔ２にそれぞれ対応している。時刻ｔ１２は、２回目の反転時期である。図１２も、図９と同様、未収束ＦＢ開始時において、積分項SUM＝０（SDVoxs＝Learn＝０）にリセットされた状態で、時刻ｔ１０から下流側フィードバック制御が開始される場合が示されている。
【０１２０】
従って、図９の時刻ｔ０前後と同様、本例では、時刻ｔ１０前後において、実際の空燃比が理論空燃比よりもリーン傾向となる。この結果、時刻ｔ１０以降、酸素濃度センサ６７の出力値Voxsは略０．１(V)となる。また、時刻ｔ１０において、酸素吸蔵量OSAは最大酸素吸蔵量Cmaxになっているものとする。
【０１２１】
ＣＰＵ７１は図１１に示したルーチンを、内燃機関１０の始動時点以降、燃料噴射気筒について燃料噴射開始時期（燃料噴射開始時点）が到来する毎に、繰り返し実行するようになっている。いま、時刻ｔ１０が到来したものとすると、ステップ１１００から処理を開始したＣＰＵ７１はステップ７１０,７１５にて共に「Ｙｅｓ」と判定して、ステップ１１０５に進んだとき、２回目の反転時期が経過したか否かを判定する。現時点では、ＣＰＵ７１はステップ１１０５にて「Ｎｏ」と判定してステップ１１１０に進み、調整値Kを「１」より大きい値K2（一定）に設定する。
【０１２２】
次に、ＣＰＵ７１はステップ１１１５に進み、１回目の反転時期が経過したか否かを判定する。現時点では、ＣＰＵ７１はステップ１１１５にて「Ｎｏ」と判定してステップ１１９５に進んで、本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ１１００,７０５〜７１５,１１０５,１１１０,１１１５の処理を繰り返し実行し、ステップ１１０５、及びステップ１１１５にて２回目の反転時期が到来したか否か、及び１回目の反転時期が到来したか否かをそれぞれモニタするようになる。
【０１２３】
これにより、時刻ｔ１０〜時刻ｔ１２の間、図１２の（Ａ）に示すように、調整値Kが値K2に維持される。この値K2は、図９の時刻ｔ０〜ｔ１の間における調整値K（＝１）よりも大きい。従って、時刻ｔ１０〜ｔ１１の間、図１２の（Ｂ）に示すように、積分項SUMが図９の時刻ｔ０〜ｔ１の間における増加速度より大きい増加速度をもって「０」から上記値SUM1に向かって増大していく。これにより、時刻ｔ１１における積分項SUMの値SUM1に対するオーバーシュート量が、図９の時刻ｔ１における積分項SUMの値SUM1に対するオーバーシュート量に比して大きくなる。
【０１２４】
このように、時刻ｔ１０以降、積分項SUMが増大することで、その後のある時点以降、理論空燃比よりもリーンであった実際の空燃比が理論空燃比よりリッチとなり、図１２の（Ｄ）に示すように、酸素吸蔵量OSAが最大酸素吸蔵量Cmaxから減少していく。そして、酸素吸蔵量OSAが「０」となった直後に時刻ｔ１１が到来し、図１２の（Ｃ）に示すように、略０．１(V)に維持されていた酸素濃度センサ６７の出力値Voxsは、下流側フィードバック制御開始後はじめて略０．９(V)に反転する。
【０１２５】
１回目の反転時期である時刻ｔ１１になると、ＣＰＵ７１はステップ１１１５に進んだとき「Ｙｅｓ」と判定しステップ１１２０に進み、テーブルMapabyfs(Vabyfs)に基づいて検出空燃比abyfs1を求めるようになる（図２を参照）。
【０１２６】
次に、ＣＰＵ７１はステップ１１２５に進んで、ステップ１１２５内に記載の式に基づいて第１積算値Ａ（初期値は「０」）を更新する。次いで、ＣＰＵ７１はステップ１１３０に進み、ステップ１１３０内に記載の式に基づいて第２積算値Ｂ（初期値は「０」）を更新した後、ステップ１１９５に進んで本ルーチンを一旦終了する。このような処理は、ステップ１１０５にて「Ｙｅｓ」と判定されるまで繰り返し実行される。これにより、時刻ｔ１１〜時刻ｔ１２の間、第１積算値Ａ、及び第２積算値Ｂが更新されていく。これらの第１積算値Ａ、及び第２積算値Ｂは、後述するステップ１１４０にて基準検出空燃比stoich1を算出するのに使用される。
【０１２７】
時刻ｔ１１〜ｔ１２の間、出力偏差量DVoxsは負の値となる。従って、積分項SUMは時刻ｔ１０〜ｔ１１の間における増加速度の値と等しい減少速度をもって減少していく。
【０１２８】
このように、時刻ｔ１１以降、積分項SUMが減少することで、その後のある時点以降、理論空燃比よりもリッチであった実際の空燃比が理論空燃比よりリーンとなり、図１２の（Ｄ）に示すように、酸素吸蔵量OSAが「０」から増大していく。そして、酸素吸蔵量OSAが最大酸素吸蔵量Cmaxに達した直後に時刻ｔ１２が到来し、図１２の（Ｃ）に示すように、略０．９(V)に維持されていた酸素濃度センサ６７の出力値Voxsは、再び略０．１(V)に反転する。
【０１２９】
２回目の反転時期である時刻ｔ１２になると、ＣＰＵ７１はステップ１１０５に進んだとき「Ｙｅｓ」と判定してステップ１１３５に進み、２回目の反転時期直後であるか否か判定し、現時点では、「Ｙｅｓ」と判定してステップ１１４０に進み、ステップ１１４０内に記載の式に基づいて基準検出空燃比stoich1を求める。ここで、最大酸素吸蔵量Cmaxとしては、ステップ７０５にて更新され、バックアップＲＡＭ７４に記憶されている最新値が使用される。
【０１３０】
以下、ステップ１１４０内に記載の式の導出について説明する。上述のように、時刻ｔ１１〜ｔ１２の間において、酸素吸蔵量OSAは最大酸素吸蔵量Cmax分だけ変化する。従って、下記(1)式が成立する。ここにおいて、ΔAFは上流側触媒５３に流入するガスの実際の空燃比（触媒上流空燃比）と理論空燃比との差であり、「０．２３」は空気中の酸素の質量割合である。「０．２３・ΔAF・Fi」は、上流側触媒５３に流入するガス中の１回の燃料噴射当たりの酸素の過剰量である。
Cmax＝Σ（０．２３・ΔAF・Fi）  （区間：ｔ１１〜ｔ１２）  ・・・(1)
【０１３１】
上記検出空燃比abyfs1は、空燃比センサ６６の誤差に相当する分だけ上流側触媒５３に流入するガスの空燃比からリッチ側に偏移した空燃比となる。また、上述したように、基準検出空燃比stoich1は、空燃比センサ６６の誤差に相当する分だけ理論空燃比stoichからリッチ側に偏移した空燃比となる。従って、検出空燃比abyfs1と基準検出空燃比stoich1との差（abyfs1−stoich1）は、上記(1)式のΔAFと等しい値となる。
【０１３２】
従って、下記(2)式が成立する。下記(2)式を基準検出空燃比stoich1について解くと、下記(3)式が得られる。下記(3)式はステップ１１４０内に記載の式に相当する。以上より、ステップ１１４０内に記載の式が導出される。以上、ステップ１１０５,１１１５〜１１４０が前記基準検出空燃比算出手段の一部に対応する。
Cmax＝Σ（０．２３・（abyfs1−stoich1）・Fi）  （区間：ｔ１１〜ｔ１２）  ・・・(2)
stoich1＝（０．２３・Σ（abyfs1・Fi）−Cmax）／（０．２３・ΣFi）  （区間：ｔ１１〜ｔ１２）  ・・・(3)
【０１３３】
次に、ＣＰＵ７１はステップ１１４５に進んで、テーブルMapVabyfs(stoich1)に基づいて基準検出空燃比stoich1に対応する空燃比センサ６６の出力値Vstoich1を求める（図２を参照）。次いで、ＣＰＵ７１はステップ１１５０に進み、目標空燃比（＝理論空燃比stoich）に対応する空燃比センサ６６の出力値Vstoichから上記出力値Vstoich1を減じた値（Vstoich−Vstoich1）（即ち、上記値SUM1）を学習値Learnに設定する。ここで、値（Vstoich−Vstoich1）は、上述のように空燃比センサ６６の誤差を表す（図２を参照）。
【０１３４】
続いて、ＣＰＵ７１はステップ１１５５に進んで、偏差積分値SDVoxsを「０」に設定する。そして、ＣＰＵ７１はステップ７３０に進みテーブルMapK(Cmax)に基づいて調整値Kを「１」より小さい値K1に設定・変更した後、ステップ１１９５に進んで、本ルーチンを一旦終了する。これにより、時刻ｔ１２において、図１２の（Ｂ）に示すように、学習値Learn（＝SUM）が空燃比センサ６６の誤差に対応する値である上記値SUM1に直ちに一致する。
【０１３５】
時刻ｔ１２以降、ＣＰＵ７１はステップ１１３５に進んだとき、「Ｎｏ」と判定してステップ７３０に直ちに進む。即ち、時刻ｔ１２以降、調整値Kは、値K1に維持される。このため、時刻ｔ１２以降、積分項SUMの変動幅は小さい。従って、時刻ｔ１２にて「０」にリセットされた偏差積分値SDVoxsは、時刻ｔ１２以降「０」近傍で推移する。
【０１３６】
この第２実施形態では、学習値Learnの学習タイミングは、２回目の反転時期以降の所定のタイミング毎に到来する。従って、収束完了時期である時刻ｔ１３は、時刻ｔ１２以降における１回目の学習タイミングなどの比較的早い時期となる。
【０１３７】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第２実施形態によれば、未収束ＦＢ開始時において、２回目の反転時期よりも前（図１２の時刻ｔ１０〜ｔ１２を参照）における調整値Kが、大きい値K2（＞１）に維持され、この結果、積分項SUMの変化速度が大きくなる。
【０１３８】
他方、検出空燃比abyfs1と基準検出空燃比stoich1との差（＝上記ΔAF）に基づいて得られる上流側触媒５３に流入するガス中の酸素の過剰量の、１回目の反転時期から２回目の反転時期までの間に亘る積算値が、最大酸素吸蔵量Cmaxと等しくなる関係を利用して、２回目の反転時期において基準検出空燃比stoich1が算出される。そして、２回目の反転時期において、積分項SUMが、理論空燃比stoichに対応する空燃比センサ６６の出力値Vstoichから基準検出空燃比stoich1に対応する空燃比センサ６６の出力値Vstoich1を減じた値（Vstoich−Vstoich1）（即ち、空燃比センサ６６の誤差に相当する積分項SUMが収束すべき値、上記値SUM1）に設定される。即ち、下流側フィードバック制御開始後から２回目の反転時期までにおける積分項SUMの変化速度にかかわらず、２回目の反転時期において積分項SUMが上記値SUM1に一致する。
【０１３９】
以上より、未収束ＦＢ開始時において、上記値SUM1から大きく乖離していた積分項SUMが迅速に上記SUM1に一致する。即ち、上記第１実施形態と同様、時刻ｔ１０〜ｔ１２の期間が短くなる。この結果、積分項SUMが収束したと判定される時期（図１２の時刻ｔ１３を参照）を早めることができる。
【０１４０】
ここで、上記第１実施形態において、下流側フィードバック制御開始後から１回目の反転時期までにおける調整値Kが大きい値K2に設定されると仮定すると、上述のように１回目の反転時期における積分項SUMの値SUM1に対するオーバーシュート量が大きくなることに起因して、図１２の（Ｂ）の破線に示すように、積分項SUMの変化速度が小さい１回目の反転時期以降において、積分項SUMが上記値SUM1に近づくのに長い時間を要する。従って、この第２実施形態では、上記第１実施形態に対して、収束完了時期をより早めることができる可能性がある。
【０１４１】
また、未収束ＦＢ開始時において、２回目の反転時期以降（図１２の時刻ｔ１２以降を参照）において調整値Kが、「１」より小さい値に設定・変更される。これにより、上記第１実施形態と同様、積分項SUMの変動幅が小さい状態で積分項SUMが収束したと判定され得る。従って、収束完了時期（図１２の時刻ｔ１３を参照）において、積分項SUM（従って、学習値Learn）が上記値SUM1からずれる程度を小さくすることができる。以上のことから、第２実施形態によっても、上記「空燃比センサ６６の誤差」を早期に精度よく補償することができる。
【０１４２】
なお、前記時間積分値の変化速度は、前記相違起因値に基づく値の積算により更新されていく時間積分値の一更新当たりの変化量を変更することにより変更され得る。従って、前記相違起因値に基づく値として、前記相違起因値と、調整値とに基づいて得られる値を用いるとともに、前記変化速度変更手段が、調整値を変更することで前記変化速度を変更するように構成されてもよい。この調整値は、前記相違起因値に乗じられる値であってもよいし、前記相違起因値に加算される値であってもよい。
【０１４３】
また、前記時間積分値の変化速度は、一出力値維持期間に亘って前記相違起因値が略一定となることに起因して、前記時間積分値の更新間隔の時間を変更することによっても変更され得る。従って、前記変化速度変更手段が、前記時間積分値の更新間隔の時間を変更することで前記時間積分値の変化速度を変更するように構成されてもよい。
【０１４４】
本発明は上記第２実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記第２実施形態においては、基準検出空燃比stoich1を算出する際、図１１のステップ７０５にて更新される最大酸素吸蔵量Cmaxの最新値そのものが利用されているが（ステップ１１４０を参照）、これに代えて、１回目の反転時期から２回目の反転時期の間における吸気管４１における吸入空気の質量流量Gaと最大酸素吸蔵量Cmaxの最新値が取得された時点での吸入空気の質量流量Ga1（以下、「取得時質量流量Ga1」と称呼する。）との差の絶対値の最大値に応じて、最大酸素吸蔵量Cmaxの最新値を補正した値が使用されることが好ましい。
【０１４５】
具体的には、１回目の反転時期から２回目の反転時期の間における吸入空気の質量流量Gaと取得時質量流量Ga1との差の絶対値が最大となる場合に対応する吸入空気の質量流量Gamaxを取得し、吸入空気の質量流量の最大偏移量（Gamax−Ga1）と補正係数αとの関係を規定するテーブルMapα(Gamax−Ga1)に基づいて、補正係数αを求める。そして、２回目の反転時期において、ステップ１１４０内に記載の式において「Cmax」に代えて、補正係数αを最大酸素吸蔵量Cmaxに乗じた値「α・Cmax」が使用される。これにより、最大酸素吸蔵量Cmaxの、上記更新される最大酸素吸蔵量Cmaxの最新値からの相違の程度を考慮して基準検出空燃比stoich1を正確に算出することができる。
【０１４６】
より具体的には、図１３に示すように、補正係数αは、上記最大偏移量（Gamax−Ga1）が大きいほど大きい値に設定される。２回目の反転時期における最大酸素吸蔵量Cmaxは、上記更新される最大酸素吸蔵量Cmaxの最新値から上記最大偏移量（Gamax−Ga1）に応じて偏移する。一方、最大酸素吸蔵量Cmaxは、吸入空気の質量流量Gaが大きいほど、上流側触媒５３の温度が高くなることに起因して大きくなる。従って、２回目の反転時期における最大酸素吸蔵量Cmaxは、上記最大偏移量（Gamax−Ga1）が大きいほど上記更新される最大酸素吸蔵量Cmaxの最新値より大きくなる。上記テーブルMapα(Gamax−Ga1)は係る知見に基づいて適合・作製されている。
【０１４７】
また、上記第２実施形態においては、基準検出空燃比stoich1を２回目の反転時期において算出しているが、これに代えて、未収束ＦＢ開始時において、下流側フィードバック制御開始後における酸素濃度センサ６７の出力値VoxsのＭ回目（Ｍは自然数）の反転時期（以下、単に「Ｍ回目の反転時期」と称呼する。）からＭ＋１回目の反転時期までの間における吸入空気の質量流量Gaと上記取得時質量流量Ga1との差の絶対値の最大値が所定値よりも小さい場合、基準検出空燃比stoich1をＭ＋１回目の反転時期において算出してもよい。
【０１４８】
具体的には、Ｍ回目の反転時期からＭ＋１回目の反転時期までステップ１１２０〜１１３０の処理が実行され、Ｍ回目の反転時期からＭ＋１回目の反転時期までの間における上記最大偏移量（Gamax−Ga1）の絶対値｜Gamax−Ga1｜が所定値より小さい場合、Ｍ＋１回目の反転時期においてステップ１１４０〜１１５５,７３０の処理が実行される。これにより、基準検出空燃比stoich1の算出に使用される一出力値維持期間として、最大酸素吸蔵量Cmaxの上記更新される最大酸素吸蔵量Cmaxの最新値からの相違の程度が小さい期間のみが使用される。従って、基準検出空燃比stoich1を正確に算出することができる。
【０１４９】
また、上記各実施形態においては、積分ゲインKiを一定として、調整値Kを変更することで偏差積分値SDVoxsの一更新当たり変化量「K・DVoxs」を変更し、積分項SUMの変化速度を変更していたが、これに代えて、例えば、偏差積分値SDVoxsの一更新当たり変化量を略一定の「DVoxs」とし、積分ゲインKiを変更することにより積分項SUMの変化速度を変更してもよい。この場合、例えば、ステップ７２５、及びステップ１１１０おいて積分ゲインKiが大きい値Ki1、及び値Ki2（＞Ki1）にそれぞれ設定され、ステップ７３０のテーブルMapK(Cmax)に代えて、テーブルMapKi(Cmax)が使用され、積分ゲインKiは最大酸素吸蔵量Cmaxが大きいほど値Ki1（或いは、値Ki2）より小さい値に設定される。
【０１５０】
加えて、上記各実施形態においては、調整値Kを変更することで偏差積分値SDVoxsの一更新当たり変化量「K・DVoxs」を変更し、積分項SUMの変化速度を変更していたが、これに代えて、例えば、偏差積分値SDVoxsの一更新当たり変化量を略一定の「DVoxs」とし、偏差積分値SDVoxsの更新間隔の時間を変更することにより積分項SUMの変化速度を変更してもよい。この場合、例えば、図６のルーチンのｎ回（ｎは自然数）の実行につき１回偏差積分値SDVoxsを更新する。そして、ステップ７２５、及びステップ１１１０おいて値ｎが小さい値ｎ1、及び値ｎ2（＜ｎ1）にそれぞれ設定され、ステップ７３０のテーブルMapK(Cmax)に代えて、テーブルMapｎ(Cmax)が使用され、値ｎは最大酸素吸蔵量Cmaxが大きいほど値ｎ1（或いは、値ｎ2）より大きい値に設定される。
【図面の簡単な説明】
【０１５１】
【図１】本発明の第１実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】図１に示した空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図３】図１に示した酸素濃度センサの出力電圧と空燃比との関係を示したグラフである。
【図４】図１に示したＣＰＵが実行する燃料噴射量の計算、及び噴射指示を行うためのルーチンを示したフローチャートである。
【図５】図１に示したＣＰＵが実行する上流側フィードバック補正値を計算するためのルーチンを示したフローチャートである。
【図６】図１に示したＣＰＵが実行する下流側フィードバック補正値を計算するためのルーチンを示したフローチャートである。
【図７】図１に示したＣＰＵが実行する調整値を設定するためのルーチンを示したフローチャートである。
【図８】図１に示したＣＰＵが実行する積分項の学習値を更新、学習完了判定するためのルーチンを示したフローチャートである。
【図９】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際の各種変数等の変化の一例を示したタイムチャートである。
【図１０】図１に示したＣＰＵが参照する最大酸素吸蔵量と調整値との関係を規定するテーブルを示したグラフである。
【図１１】本発明の第２実施形態に係る空燃比制御装置のＣＰＵが実行する調整値を設定するためのルーチンを示したフローチャートである。
【図１２】本発明の第２実施形態に係る空燃比制御装置が空燃比フィードバック制御を実行する際の各種変数等の変化の一例を示したタイムチャートである。
【図１３】本発明の実施形態の変形例に係る空燃比制御装置のＣＰＵが参照する吸入空気の質量流量の最大偏移量と補正係数との関係を規定するテーブルを示したグラフである。
【図１４】特許文献１に開示された空燃比制御装置が空燃比フィードバック制御を実行する際の各種変数等の変化の一例を示したタイムチャートである。
【符号の説明】
【０１５２】
１０…内燃機関、２５…燃焼室、５２…エキゾーストパイプ（排気管）、５３…上流側触媒、６６…空燃比センサ、６７…酸素濃度センサ、７０…電気制御装置、７１…ＣＰＵ
【図１】
2008106712.tif 000003
【図２】
2008106712.tif 000004
【図３】
2008106712.tif 000005
【図４】
2008106712.tif 000006
【図５】
2008106712.tif 000007
【図６】
2008106712.tif 000008
【図７】
2008106712.tif 000009
【図８】
2008106712.tif 000010
【図９】
2008106712.tif 000011
【図１０】
2008106712.tif 000012
【図１１】
2008106712.tif 000013
【図１２】
2008106712.tif 000014
【図１３】
2008106712.tif 000015
【図１４】
2008106712.tif 000016