(57)【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する下流側空燃比センサと、
燃料を噴射する燃料噴射弁と、
を備えた内燃機関に適用され、
前記下流側空燃比センサの出力値と理論空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新し、前記更新された時間積分値に基づいて積分項を更新する積分項更新手段と、
前記積分項に少なくとも基づいて前記触媒に流入するガスの空燃比が前記理論空燃比に一致するように前記燃料噴射弁から噴射される燃料量をフィードバック制御するフィードバック制御手段と、
を備え、
前記積分項更新手段は、
前記積分項の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記積分項の収束値からの偏移が大きいとの判定がなされた場合、第１段階として、前記積分項の変化速度を第１変化速度に設定し、
前記第１段階において第１の条件が成立した場合、第２段階として、前記変化速度を前記第１変化速度から前記第１変化速度よりも小さい第２変化速度に変更し、
前記第２段階において第２の条件が成立した場合、第３段階として、前記変化速度を前記第２変化速度から前記第２変化速度よりも小さい第３変化速度に変更するように構成され、
前記積分項更新手段は、
前記積分項の１回あたりの更新量を調整する調整値を使用して前記積分項を算出・更新し、
前記変化速度変更手段は、
前記第１段階にて、前記調整値を第１値に設定し、
前記第２段階にて、前記調整値を前記第１値よりも前記１回あたりの更新量が小さい第２値に変更し、
前記第３段階にて、前記調整値を前記第２値よりも前記１回あたりの更新量が小さい第３値に変更するように構成され、
前記内燃機関の運転状態に応じて前記燃料噴射弁からの燃料噴射を中断するフューエルカット制御を行うフューエルカット制御手段と、
前記フューエルカット制御が実行された場合、前記フューエルカット制御から復帰した後、前記触媒に流入するガスの空燃比が前記理論空燃比よりもリッチな空燃比になるように前記燃料噴射弁から噴射される燃料量を制御するリッチ制御を行うリッチ制御手段と、
を備え、
前記触媒は、酸素吸蔵機能を有し、
前記変化速度変更手段は、
前記触媒が吸蔵し得る酸素の最大量が大きいほど、前記調整値を前記１回あたりの更新量がより小さい量となる値に設定するように構成された内燃機関の空燃比制御装置。
【請求項２】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する下流側空燃比センサと、
燃料を噴射する燃料噴射弁と、
を備えた内燃機関に適用され、
前記下流側空燃比センサの出力値と理論空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新し、前記更新された時間積分値に基づいて積分項を更新する積分項更新手段と、
前記積分項に少なくとも基づいて前記触媒に流入するガスの空燃比が前記理論空燃比に一致するように前記燃料噴射弁から噴射される燃料量をフィードバック制御するフィードバック制御手段と、
を備え、
前記積分項更新手段は、
前記積分項の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記積分項の収束値からの偏移が大きいとの判定がなされた場合、第１段階として、前記積分項の変化速度を第１変化速度に設定し、
前記第１段階において第１の条件が成立した場合、第２段階として、前記変化速度を前記第１変化速度から前記第１変化速度よりも小さい第２変化速度に変更し、
前記第２段階において第２の条件が成立した場合、第３段階として、前記変化速度を前記第２変化速度から前記第２変化速度よりも小さい第３変化速度に変更するように構成され、
前記内燃機関の運転状態に応じて前記燃料噴射弁からの燃料噴射を中断するフューエルカット制御を行うフューエルカット制御手段を備え、
前記変化速度変更手段は、
前記第１段階にて、前記フューエルカット制御が実行された場合、前記フューエルカット制御から復帰した時点から前記積分項の更新を第１期間に亘って禁止し、
前記第２段階にて、前記フューエルカット制御が実行された場合、前記フューエルカット制御から復帰した時点から前記積分項の更新を前記第１期間よりも長い第２期間に亘って禁止し、
前記第３段階にて、前記フューエルカット制御が実行された場合、前記フューエルカット制御から復帰した時点から前記積分項の更新を前記第２期間よりも長い第３期間に亘って禁止するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項２に記載の内燃機関の空燃比制御装置において、
前記触媒は、酸素吸蔵機能を有し、
前記変化速度変更手段は、
前記触媒が吸蔵し得る酸素の最大量が大きいほど、前記積分項の更新を禁止する期間をより長い期間に設定するように構成された内燃機関の空燃比制御装置。
【請求項４】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する下流側空燃比センサと、
燃料を噴射する燃料噴射弁と、
を備えた内燃機関に適用され、
前記下流側空燃比センサの出力値と理論空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新し、前記更新された時間積分値に基づいて積分項を更新する積分項更新手段と、
前記積分項に少なくとも基づいて前記触媒に流入するガスの空燃比が前記理論空燃比に一致するように前記燃料噴射弁から噴射される燃料量をフィードバック制御するフィードバック制御手段と、
を備え、
前記積分項更新手段は、
前記積分項の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記積分項の収束値からの偏移が大きいとの判定がなされた場合、第１段階として、前記積分項の変化速度を第１変化速度に設定し、
前記第１段階において第１の条件が成立した場合、第２段階として、前記変化速度を前記第１変化速度から前記第１変化速度よりも小さい第２変化速度に変更し、
前記第２段階において第２の条件が成立した場合、第３段階として、前記変化速度を前記第２変化速度から前記第２変化速度よりも小さい第３変化速度に変更するように構成され、
前記内燃機関は、
前記触媒よりも上流の前記排気通路に配設されて前記触媒へ流入するガスの空燃比に応じた値を出力する上流側空燃比センサを備えていて、
前記フィードバック制御手段は、
前記上流側空燃比センサの出力にも基づいて前記燃料噴射弁から噴射される燃料量をフィードバック制御するように構成されていて、
前記変化速度変更手段は、
前記積分項の収束値からの偏移が大きいとの判定がなされた場合として、
失火率の変化が所定の度合いよりも大きい場合を使用するように構成された内燃機関の空燃比制御装置。
【請求項５】
請求項４に記載の内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記失火率の変化が大きいほど前記変化速度をより大きい速度に設定するように構成された内燃機関の空燃比制御装置。
【請求項６】
請求項４に記載の内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記失火率の変化が大きいほど前記第１段階中の前記積分項の更新回数がより大きい回数となるよう前記第１の条件を設定するように構成された内燃機関の空燃比制御装置。
【請求項７】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する下流側空燃比センサと、
燃料を噴射する燃料噴射弁と、
を備えた内燃機関に適用され、
前記下流側空燃比センサの出力値と理論空燃比に相当する値との相違に起因する値である相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新し、前記更新された時間積分値に基づいて積分項を更新する積分項更新手段と、
前記積分項に少なくとも基づいて前記触媒に流入するガスの空燃比が前記理論空燃比に一致するように前記燃料噴射弁から噴射される燃料量をフィードバック制御するフィードバック制御手段と、
を備え、
前記積分項更新手段は、
前記積分項の変化速度を変更する変化速度変更手段を備えた内燃機関の空燃比制御装置において、
前記変化速度変更手段は、
前記積分項の収束値からの偏移が大きいとの判定がなされた場合、第１段階として、前記積分項の変化速度を第１変化速度に設定し、
前記第１段階において第１の条件が成立した場合、第２段階として、前記変化速度を前記第１変化速度から前記第１変化速度よりも小さい第２変化速度に変更し、
前記第２段階において第２の条件が成立した場合、第３段階として、前記変化速度を前記第２変化速度から前記第２変化速度よりも小さい第３変化速度に変更するように構成され、
前記内燃機関の運転状態に応じて前記燃料噴射弁からの燃料噴射を中断するフューエルカット制御を行うフューエルカット制御手段と、
前記フューエルカット制御が実行された場合、前記フューエルカット制御から復帰した後、前記触媒に流入するガスの空燃比が前記理論空燃比よりもリッチな空燃比になるように前記燃料噴射弁から噴射される燃料量を制御するリッチ制御を行うリッチ制御手段と、
を備え、
前記触媒は、酸素吸蔵機能を有し、
前記リッチ制御手段は、
前記第１段階では前記リッチ制御を実行しないように構成され、
前記積分項更新手段は、
前記第１の条件が成立した場合、
前記積分項を前記噴射弁から噴射される燃料量が減少する方向に所定量だけ変更するように構成された内燃機関の空燃比制御装置。
【請求項８】
請求項７に記載の内燃機関の空燃比制御装置において、
前記積分項更新手段は、
前記触媒が吸蔵し得る酸素の最大量が大きいほど前記所定量をより大きい量に設定するように構成された内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気通路に配設された触媒の下流に設けられた空燃比センサの出力に基づいて触媒に流入するガスの空燃比をフィードバック制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、この種の空燃比制御装置が広く知られている。例えば、特許文献１に記載の空燃比制御装置においては、内燃機関の排気通路に触媒（三元触媒）が配設されており、触媒よりも上流及び下流の排気通路に、上流側空燃比センサ及び下流側空燃比センサがそれぞれ設けられている。この種の空燃比制御装置は、下流側空燃比センサの出力値と、理論空燃比に相当する値との比較結果に応じた値が積分処理されるようになっている。この積分処理された値（以下、「積分処理値」とも称呼する。）に基づいて、上流側空燃比センサの出力値が補正される。そして、この装置は、上記補正された値に基づいて燃料噴射量を補正することで、内燃機関に供給される混合気の空燃比（従って、触媒に流入するガスの空燃比、以下、単に「空燃比」とも称呼する。）が理論空燃比に一致するようにフィードバック制御するようになっている。
【０００３】
上述したフィードバック制御の実行により、エアフローメータの誤差、インジェクタの誤差、上流側空燃比センサの誤差等（以下、「吸排気系の誤差」と総称する。）が発生していても、吸排気系の誤差が上記積分処理値により補償され得る。この結果、空燃比を理論空燃比に一致させることができる。
【０００４】
換言すれば、上記積分処理値は、吸排気系の誤差の大きさを表す値と等しい値に収束し得る。この種の空燃比制御装置では、上記吸排気系の誤差を適切に補償するため、このような性格を有する積分処理値を記憶するとともに、記憶されている積分処理値を所定のタイミング毎に更新（学習）していく場合が多い。
【０００５】
ところで、上記積分処理値は、収束すべき値（即ち、上記吸排気系の誤差に相当する値。以下、単に、「収束値」とも称呼する。）から大きく偏移する場合がある。例えば、バッテリ交換等により記憶されていた積分処理値がクリアされると、クリア後において積分処理値が収束値から大きく偏移する事態が発生し得る。また、失火率が変化する場合にも、上記積分処理値が収束値から大きく偏移する事態が発生し得る（詳細は後述する。）。
【０００６】
上記積分処理値の収束値からの偏移が大きい場合に、積分処理値を収束値に迅速に収束させる観点から、特許文献１に記載の空燃比制御装置は、以下のように制御を実行する。積分処理値が記憶されていないとの判定がなされた場合、積分処理値の変化速度が大きい値に設定される。以下、積分処理値の変化速度が大きい値に設定される区間を「速度大区間」と称呼する。
【０００７】
そして、上記判定がなされた後、積分処理値が記憶されたとの判定がなされたときから所定期間経過したときに、積分処理値の変化速度が、上記速度大区間にて設定されていた変化速度よりも小さい値に設定される。以下、積分処理値の変化速度が速度大区間にて設定されていたものよりも小さい値に設定される区間を「速度小区間」と称呼する。
【０００８】
このように、上記積分処理値の変化速度は、上記速度大区間及び速度小区間に分けられて、２値的に設定・変更されるようになっている。これにより、上記速度大区間にて上記積分処理値が収束値に迅速に近づき得、上記速度小区間には上記積分処理値が収束値近傍に推移し得る。この結果、上記積分処理値が収束値から大きく偏移する事態が発生しても、上記吸排気系の誤差が早期に精度よく補償され得る。
【特許文献１】特開平５−４４５５９号公報
【発明の開示】
【０００９】
ところで、積分処理値が収束値に向かって変化していく際、外乱の発生により積分処理値が収束値から偏移する場合がある。この偏移の程度は、積分処理値の変化速度が大きいほどより大きくなる。ここで、上述のように積分処理値の変化速度を速度大区間及び速度小区間とで分ける制御中に、外乱が発生する場合を考える。
【００１０】
この場合、上記速度大区間において外乱が発生すると、積分処理値が収束値から比較的大きく偏移した状態にて同区間の終期が到来し得る。即ち、積分処理値が収束値から比較的大きく偏移した状態にて、上記速度小区間の始期が到来し得る。このため、速度小区間においては、外乱の発生による積分処理値の収束値からの偏移程度は小さいものの、積分処理値が収束値に近づくのに時間がかかる場合がある。
【００１１】
このように、積分処理値の変化速度が２値的に設定・変更される制御では、外乱の発生により上記吸排気系の誤差が早期に精度よく補償され得ない事態が発生し得る。従って、上記積分処理値の収束値からの偏移が大きいと判定される場合に、外乱が発生する場合であっても上記吸排気系の誤差を早期に精度よく補償することが望まれている。
【００１２】
本発明の目的は、触媒下流の空燃比センサの出力値と理論空燃比に相当する値との相違に起因する値（以下、「相違起因値」と称呼する。）に基づく値を積算して相違起因値に係わる時間積分値を更新し、更新された時間積分値に基づいて更新される積分項に少なくとも基づいて空燃比をフィードバック制御する空燃比制御装置において、外乱が発生する場合であっても上記吸排気系の誤差が早期に精度よく補償し得るものを提供することにある。
【００１３】
本発明にかかる第１の空燃比制御装置は、内燃機関の排気通路に配設された触媒と、前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する下流側空燃比センサと、燃料を噴射する燃料噴射弁と、を備えた内燃機関に適用される。
【００１４】
本発明に係る第１の空燃比制御装置は、前記下流側空燃比センサの出力値と前記相違起因値に基づく値を積算して前記相違起因値に係わる時間積分値を更新し前記更新された時間積分値に基づいて積分項を更新する積分項更新手段と、前記積分項に少なくとも基づいて前記触媒に流入するガスの空燃比が前記理論空燃比に一致するように前記燃料噴射弁から噴射される燃料量をフィードバック制御するフィードバック制御手段と、を備え、前記積分項更新手段は、前記積分項の変化速度を変更する変化速度変更手段を備える。
【００１５】
ここにおいて、「積分項」及び「時間積分値」は、所定の記憶手段にて記憶され所定のタイミング毎に更新（学習）されるものであってもよいし、学習されないものであってもよい。
【００１６】
また、「相違起因値」は、例えば、下流側空燃比センサの出力値と理論空燃比に相当する下流側空燃比センサの出力値との差、下流側空燃比センサにより検出される空燃比と理論空燃比との差等であって、これらに限定されない。また、「積分項」は、例えば、前記時間積分値にゲイン等の係数を乗じた値、前記時間積分値と等しい値等であって、これらに限定されない。
【００１７】
本発明に係る第１の空燃比制御装置の特徴は、前記変化速度変更手段が、前記積分項の収束値からの偏移が大きいと判定された場合第１段階として前記積分項の変化速度を第１変化速度に設定し、前記第１段階において第１の条件が成立した場合第２段階として前記変化速度を前記第１変化速度から前記第１変化速度よりも小さい第２変化速度に変更し、前記第２段階において第２の条件が成立した場合第３段階として前記変化速度を前記第２変化速度から前記第２変化速度よりも小さい第３変化速度に変更するように構成されたことにある。
【００１８】
ここにおいて、「積分項の収束値からの偏移が大きいと判定された場合」は、例えば、前記積分項（前記時間積分値）が逐次更新・記憶（学習）される場合においてバッテリ交換等により記憶されていた前記積分項（前記時間積分値）がクリアされる場合、前記触媒の上流に空燃比センサが配設されている場合において失火率が変化する場合等であって、これらに限定されない。
【００１９】
また、「第１の条件」は、例えば、第１段階において前記積分項（前記時間積分値）の更新回数が所定の第１回数に達したという条件、第１段階において前記積分項（前記時間積分値）の所定期間における変動幅が所定の第１範囲内であるという条件、第１段階の継続時間が所定の第１時間に達したという条件等であって、これらに限定されない。
【００２０】
また、「第２の条件」は、例えば、第２段階において前記積分項（前記時間積分値）の更新回数が上記第１回数よりも大きい所定の第２回数に達したという条件、第２段階において前記積分項（前記時間積分値）の上記所定期間における変動幅が上記第１範囲よりも小さい所定の第２範囲内であるという条件、第２段階の継続時間が上記第１時間よりも長い所定の第２時間に達したという条件等であって、これらに限定されない。
【００２１】
また、第１、第２、及び第３変化速度は、第１、第２、及び第３段階に対応する期間における、積分項の変化速度の平均値を意味している。
【００２２】
上記構成によれば、積分項の収束値からの偏移が大きいと判定された場合、第１段階として、変化速度が大きい速度に設定され得る。従って、第１段階にて、外乱が発生すると積分項は収束値から偏移し易いものの、積分項がきわめて迅速に収束値向かって変化し得る。従って、積分項が収束値にある程度近い値に早期に近づき得る。
【００２３】
次に、第２段階として、変化速度が中程度の速度に設定され得る。このため、第２段階にて外乱が発生しても、積分項の収束値からの偏移の程度が小さくなり得る。また、第２段階の始期（即ち、第１段階の終期）には、積分項が収束値にある程度近づいている状態となり得る。従って、第２段階にて積分項を収束値に迅速に近づけることができ、第２段階の終期には積分項が収束値により一層近い値に推移し得る。
【００２４】
そして、第３段階として、変化速度が小さい速度に設定され得る。このため、第３段階にて外乱が発生しても、積分項が収束値から偏移することが大幅に抑制され得る。また、第３段階の始期（即ち、第２段階の終期）には、積分項が収束値に十分に近づいている状態となり得る。従って、第３段階にて、積分項が収束値近傍の値に安定して推移し得る。
【００２５】
以上のことから、積分項の収束値からの偏移が大きい場合に、積分項が収束値に向かって変化していく。この際に外乱が発生する場合であっても、上述のように少なくとも３値的に変化速度が設定・変更されることで、積分項が収束値（の近傍の値）に迅速に近づき得、その後、収束値近傍の値に安定して推移し得る。この結果、上記吸排気系の誤差を早期に精度よく補償することができる。
【００２６】
上記本発明に係る第１の空燃比制御装置においては、例えば、前記積分項更新手段が、前記積分項（前記時間積分値）の１回あたりの更新量を調整する調整値を使用して前記積分項を算出・更新し、前記変化速度変更手段が、前記第１段階にて前記調整値を第１値に設定し、前記第２段階にて前記調整値を前記第１値よりも前記１回あたりの更新量が小さい第２値に変更し、前記第３段階にて前記調整値を前記第２値よりも前記１回あたりの更新量が小さい第３値に変更するように構成されてもよい。
【００２７】
ここにおいて、「調整値」は、例えば、時間積分値に乗じられる値であって、時間積分値の１回あたりの更新量を調整することで積分項の１回あたりの更新量を調整する値であってもよい。また、例えば、時間積分値の１回あたりの更新量が一定とされる場合、積分項に乗じられる値であって、積分項そのものの１回あたりの更新量を調整する値であってもよい。
【００２８】
積分項の更新間隔が一定の場合、積分項の変化速度は、積分項の１回あたりの更新量が大きいほど大きくなる。上記構成によれば、調整値が利用されて上記更新量が容易に調整され得る。従って、積分項の変化速度の設定・変更を容易に行うことができる。
【００２９】
この場合、上記本発明に係る第１の空燃比制御装置は、前記内燃機関の運転状態に応じて前記燃料噴射弁からの燃料噴射を中断するフューエルカット制御を行うフューエルカット制御手段と、前記フューエルカット制御が実行された場合前記フューエルカット制御から復帰した後前記触媒に流入するガスの空燃比が前記理論空燃比よりもリッチな空燃比になるように前記燃料噴射弁から噴射される燃料量を制御するリッチ制御を行うリッチ制御手段と、を備え、前記触媒が、酸素吸蔵機能を有し、前記変化速度変更手段が、前記触媒が吸蔵し得る酸素の最大量が大きいほど前記調整値を前記１回あたりの更新量がより小さい量となる値に設定するように構成されると好適である。
【００３０】
一般に、この種の空燃比制御装置においては、燃費向上等の観点から、内燃機関の運転状態に応じて前記フューエルカット制御が実行される場合が多い。また、前記フューエルカット制御が実行される場合、同制御からの復帰時においては触媒の酸素吸蔵量が大きい場合が多い。フューエルカット制御の復帰した後においても、触媒に流入するＮＯｘを適切に浄化する観点から、同制御の復帰後に触媒の酸素吸蔵量をある程度まで減少させることが好ましい。このため、フューエルカット制御から復帰した後、前記リッチ制御が実行されることが好ましい。
【００３１】
前記リッチ制御が実行される場合、同制御実行中のある時点以降、下流側空燃比センサ（例えば、濃淡電池式の酸素濃度センサ）の出力値が、空燃比がリッチを示す値に所定期間に亘って推移する。このため、積分項は、上記リッチを示す値に推移する期間に亘って、前記噴射弁から噴射される燃料量が減少する方向（以下、この方向を「リーン方向」とも称呼する。）に変化し続ける。
【００３２】
従って、上記リッチ制御が実行されることにより、積分項は収束値からリーン方向へ偏移する場合がある。以下、このように積分項が収束値からリーン方向へ偏移する態様を、積分項の「リーンずれ」とも称呼する。換言すれば、上記リッチ制御は、積分項が収束値に向かって変化していく際の外乱となり得る。
【００３３】
ここで、触媒が吸蔵し得る酸素の最大量（以下、「最大酸素吸蔵量」と称呼する。）が大きいほど、上記リッチを示す値に推移する期間がより長くなる（即ち、積分項がリーン方向へ変化し続ける時間が長くなる。）。このため、積分項の変化速度が一定である場合、触媒の最大酸素吸蔵量が大きいほど、上記積分項のリーンずれの程度がより大きくなる。
【００３４】
従って、上記積分項のリーンずれの程度を抑制する観点から、触媒の最大酸素吸蔵量が大きいほど、積分項の変化速度がより小さい値に設定されることが好ましい。上記構成は、かかる知見に基づくものである。これによれば、触媒の最大酸素吸蔵量が大きいほど、積分項の変化速度がより小さい値に設定され得る。従って、最大酸素吸蔵量の大きさに依存することなく上記積分項のリーンずれの程度を抑制することができる。換言すれば、最大酸素吸蔵量が小さいほど、積分項の変化速度が大きい値に設定され得、上記積分項のリーンずれの程度を抑制しつつ積分項を収束値により迅速に近づけることができる。
【００３５】
また、上記本発明に係る第１の空燃比制御装置においては、前記フューエルカット制御手段を備え、前記変化速度変更手段が、前記第１段階にて前記フューエルカット制御が実行された場合前記フューエルカット制御から復帰した時点から前記積分項の更新を第１期間に亘って禁止し、前記第２段階にて前記フューエルカット制御が実行された場合前記フューエルカット制御から復帰した時点から前記積分項の更新を前記第１期間よりも長い第２期間に亘って禁止し、前記第３段階にて前記フューエルカット制御が実行された場合前記フューエルカット制御から復帰した時点から前記積分項の更新を前記第２期間よりも長い第３期間に亘って禁止するように構成されることが好適である。
【００３６】
上記フューエルカット制御が実行される場合、同制御から復帰した後上記リッチ制御が実行されない場合には、上記フューエルカット制御からの復帰時点以降も下流側空燃比センサ（例えば、濃淡電池式の酸素濃度センサ）の出力値が、空燃比がリーンを示す値に所定期間に亘って推移する。このため、積分項は、上記リーンを示す値に推移する期間に亘って、前記噴射弁から噴射される燃料量が増量する方向（以下、この方向を「リッチ方向」とも称呼する。）に変化し続ける。
【００３７】
従って、上記フューエルカット制御が実行されて上記リッチ制御が実行されない場合には、積分項は収束値からリッチ方向へ偏移する場合がある。以下、このように積分項が収束値からリッチ方向へ偏移する態様を、積分項の「リッチずれ」とも称呼する。換言すれば、上記フューエルカット制御が実行されて、同制御から復帰した後上記リッチ制御が実行されない制御も、積分項が収束値に向かって変化していく際の外乱となり得る。
【００３８】
一方、上述のように、フューエルカット制御から復帰した後に上記リッチ制御が実行される場合には、上記積分項のリーンずれが発生し得る。上述した積分項のリッチずれ、又は、リーンずれを抑制する観点から、フューエルカット制御が実行された場合に同制御から復帰した時点から、所定の期間に亘って積分項の更新が禁止されることが好ましい。
【００３９】
ここで、積分項の更新が禁止される期間が長いほど、積分項の更新回数がより小さくなり得る。積分項の更新回数が小さいほど、積分項の変化速度がより小さくなり得る。従って、積分項の変化速度は、更新が禁止される期間が長いほどより小さくなり得る。上記構成によれば、積分項の更新が禁止される期間が第１、第２及び第３期間に分けて設定・変更されることで、積分項の変化速度が３値的に設定・変更され得る。この結果、外乱としてのフューエルカット制御（又は、リッチ制御）による上記リッチずれ（又は、上記リーンずれ）を抑制しつつ、上記吸排気系の誤差を早期に精度よく補償することができる。
【００４０】
また、このように積分項の更新が禁止される期間が設定・変更される場合において、前記触媒が、酸素吸蔵機能を有する場合、前記変化速度変更手段が、前記最大酸素吸蔵量が大きいほど前記積分項の更新を禁止する期間をより長い期間に設定するように構成されることが好適である。
【００４１】
上記リッチ制御は、理論空燃比よりもリッチな一定の空燃比をもって、リッチ制御の実行期間が調整されて酸素吸蔵量の減少度合いを所望の度合いに近づけるようになっている場合が多い。即ち、この場合、最大酸素吸蔵量が大きいほどリッチ制御の実行期間がより長い期間に調整され得る。他方、リッチ制御が実行される場合、積分項の更新は、上記リッチ制御の実行期間よりも長い期間に亘って禁止されることが好ましい。以上のことから、最大酸素吸蔵量が大きいほど積分項の更新を禁止期間がより長いと好適である。
【００４２】
上記構成はかかる知見に基づくものである。これによれば、触媒の最大酸素吸蔵量が大きいほど積分項の変化速度が小さい値に設定され得るため、最大酸素吸蔵量の大きさに依存することなく上記リーンずれの程度を抑制することができる。換言すれば、最大酸素吸蔵量が小さいほど、積分項の変化速度が大きい値に設定され得、上記リーンずれの程度を抑制しつつ積分項を収束値により迅速に近づけることができる。
【００４３】
また、上記本発明に係る第１の空燃比制御装置においては、前記フューエルカット制御手段と、前記リッチ制御を行うリッチ制御手段と、を備え、前記触媒が、酸素吸蔵機能を有し、前記リッチ制御手段が、前記第３段階における前記リッチ制御の実行による前記触媒の酸素吸蔵量の減少の程度を前記第１及び第２段階における前記リッチ制御の実行による前記触媒の酸素吸蔵量の減少の程度よりも大きくするように構成されると好適である。
【００４４】
上述のように、上記フューエルカット制御の復帰した後においても、触媒に流入するＮＯｘを適切に浄化する観点から、上記リッチ制御により触媒の酸素吸蔵量をある程度まで減少させることが好ましい。ここで、上記リッチ制御による酸素吸蔵量の減少度合いが大きいほど、ＮＯｘがより適切に浄化され易い。
【００４５】
他方、上記リッチ制御による酸素吸蔵量の減少度合いが大きいほど、リッチ制御から復帰した時点以降に、（最大酸素吸蔵量が一定の状態にて）触媒が吸蔵し得る酸素量の余裕度が大きい。この余裕度が大きいほど、リッチ制御から復帰した時点以降、空燃比フィードバック制御により触媒の酸素吸蔵量が最大酸素吸蔵量に達する時間が長い。従って、上記リッチ制御による酸素吸蔵量の減少度合いが大きいほど、リッチ制御から復帰した時点以降、下流側空燃比センサの出力値がリッチを示す値に推移する期間が長くなる。このため、積分項の変化速度が一定である場合、上記リッチ制御による酸素吸蔵量の減少度合いが大きいほど、上記積分項のリーンずれの程度がより大きくなる。
【００４６】
第１、及び第２段階における積分項の変化速度は、第３段階におけるものに比して大きい。このため、第１、及び第２段階においては、上記酸素吸蔵量の減少度合いを大きくしてＮＯｘをより適切に浄化する要求よりも、上記酸素吸蔵量の減少度合いを小さくして積分項のリーンずれの程度を抑制する要求が大きい。上記構成はかかる知見に基づくものである。これにより、第１、及び第２段階にて上記リーンずれの程度が抑制され得る。
【００４７】
また、第３段階においては、積分項の変化速度が小さい値に設定され得るため、上記酸素吸蔵量の減少度合いが大きくなるようリッチ制御が実行されても、上記リーンずれの程度が抑制され得る。従って、第３段階においては、上記リーンずれの程度を抑制しつつ、ＮＯｘがより適切に浄化され得るようにリッチ制御を実行することができる。
【００４８】
また、上記本発明に係る第１の空燃比制御装置においては、前記内燃機関が、前記触媒よりも上流の前記排気通路に配設されて前記触媒へ流入するガスの空燃比に応じた値を出力する上流側空燃比センサを備えていて、前記フィードバック制御手段が、前記上流側空燃比センサの出力にも基づいて前記燃料噴射弁から噴射される燃料量をフィードバック制御するように構成されている場合、前記変化速度変更手段が、前記積分項の収束値からの偏移が大きいと判定された場合として失火率の変化が所定の度合いよりも大きい場合を使用するように構成されると好適である。
【００４９】
ここにおいて、「失火率」は、前記燃料噴射弁から所定回数の燃料噴射がなされた期間内に発生する失火の回数の、上記所定回数に対する割合を意味している。
【００５０】
失火が発生する場合、燃料と空気の混合気が筒内から上流側空燃比センサを経て触媒へ流入する。そして、触媒に流入した混合気は、大部分が触媒にて燃焼処理されて、燃焼ガスとして触媒から流出する。従って、失火が発生する場合には、混合気そのものが上流側センサに到達する一方で、その混合気の燃焼ガスが下流側空燃比センサに到達するという事態が発生し得る。
【００５１】
一般に、理論空燃比（又は、理論空燃比近傍の空燃比）の混合気が空燃比センサの検出部に接触すると、空燃比センサはリーンを示す値を出力する場合が多い。これは、混合気中の酸素に対する空燃比センサの感度が、混合気中の他の成分に対する感度よりも大きいことに基づくと考えられる。
【００５２】
従って、失火が発生する毎に、（混合気の空燃比が理論空燃比近傍の空燃比であっても）上流側空燃比センサがリーンを示す値を出力することに応じて、燃料噴射量がリッチ方向にフィードバック制御される。このため、失火率が一定の場合、触媒に流入するガスの空燃比が、理論空燃比よりもリッチ方向に一定の程度をもって平均的に偏移する。この空燃比のリッチ方向への平均的な偏移を補償するために、下流側空燃比センサがリッチを示す値を出力して、積分項がリーン方向へ偏移した収束値に向かって収束していく。
【００５３】
ここで、上記空燃比のリッチ方向への平均的な偏移の程度は、失火率が大きいほどより大きくなる。従って、失火率が増大（又は、減少）した場合、失火率の増大後（減少後）の積分項の収束値は、失火率の増大前（減少前）のものからリーン（リッチ）方向へ偏移する。このため、失火率の変化が所定の度合いよりも大きい場合には、積分項の収束値からの偏移が大きいと判定されることが好ましい。
【００５４】
上記構成はかかる知見に基づくものである。これによれば、失火率の変化により積分項が収束値から大きく偏移する場合であっても、上記吸排気系の誤差（特に、上流側空燃比センサの誤差）を早期に精度よく補償することができる。
【００５５】
この場合、前記変化速度変更手段が、前記失火率の変化が大きいほど前記変化速度をより大きい速度に設定するように構成されることがより好適である。
【００５６】
失火率が変化する場合において、失火率の変化が大きいほど、失火率の変化前後での収束値の変化度合いがより大きくなる。即ち、失火率の変化が大きいほど、積分項が収束値から偏移する程度がより大きくなる。従って、この場合、積分項を収束値に迅速に近づける観点から、失火率の変化が大きいほど、積分項の変化速度がより大きい値に設定されることが好ましい。上記構成はかかる知見に基づくものである。これによれば、失火率の変化の度合いに依存することなく、収束値から偏移した積分項を収束値に迅速に近づけることができる。
【００５７】
また、この場合、前記変化速度変更手段が、前記失火率の変化が大きいほど前記第１段階中の前記積分項の更新回数がより大きい回数となるよう前記第１の条件を設定するように構成されてもよい。
【００５８】
失火率の変化が大きい場合に積分項を迅速に収束値に近づけるためには、積分項の変化速度を大きい値に設定する機会を大きくすることも考えられる。ここで、第１段階においては、積分項の変化速度が大きい値に設定され得る。従って、第１段階中の積分項の更新回数が大きいほど、積分項の変化速度を大きい値に設定する機会がより大きくなり得る。以上のことから、失火率の変化が大きいほど、第１段階中の積分項の更新回数が大きくされることが好ましい。
【００５９】
上記構成はかかる知見に基づくものである。これによっても、失火率の変化の度合いに依存することなく、収束値から偏移した積分項を迅速に収束値に近づけることができる。
【００６０】
一方、失火率の変化が小さい場合には、積分項の変化速度を大きい値に設定する必要性が小さい。従って、例えば、失火率の変化が微小である場合、第１段階中の積分項の更新回数がゼロとなるようにしてもよい。即ち、この場合、第１段階が実質的に省略されて、不必要に変化速度が大きい値に設定されることが回避され得る。
【００６１】
また、上記本発明に係る第１の空燃比制御装置においては、前記フューエルカット制御手段と、前記リッチ制御手段と、を備え、前記触媒が、酸素吸蔵機能を有し、前記リッチ制御手段が、前記第１段階では前記リッチ制御を実行しないように構成され、前記積分項更新手段が、前記第１の条件が成立した場合前記積分項を前記噴射弁から噴射される燃料量が減少する方向に所定量だけ変更するように構成されてもよい。
【００６２】
これによれば、第１段階にて、フューエルカット制御からの復帰後リッチ制御が禁止される。このため、フューエルカット制御から復帰した時点からも、下流側空燃比センサ（例えば、濃淡電池式酸素濃度センサ）の出力値はリーンを示す値に推移し続ける。従って、フューエルカット制御から復帰した時点から、下流側空燃比センサの出力値がリーンを示す値に推移している期間に亘って、積分項はリッチずれしていく。
【００６３】
ここで、フューエルカット制御から復帰した時点においては、触媒の酸素吸蔵量が上記最大酸素吸蔵量に達している場合が多い。この場合、最大酸素吸蔵量が一定であれば１回あたりのフューエルカット制御における、上記リッチずれの程度が略一定となり得る。更に、積分項の変化速度、フューエルカット制御の頻度等に応じて、第１段階に対応する期間の終期における上記リッチずれの程度を予め見積もっておくことができる。
【００６４】
以上のことから、上記所定量を、上記予め見積もっておいたリッチずれの程度に対応する量に設定することで、第１の条件が成立した場合にて積分項を収束値に比較的近い値とすることができる。従って、これによっても、上記吸排気系の誤差を早期に精度よく補償することができる。
【００６５】
この場合、前記積分項更新手段が、前記触媒が吸蔵し得る酸素の最大量が大きいほど前記所定量をより大きい量に設定するように構成されると好適である。
【００６６】
最大酸素吸蔵量が大きいほど、１回あたりのフューエルカット制御により下流側空燃比センサの出力値がリーンを示す値に推移している期間がより長くなる。このため、積分項のリッチずれの程度も最大酸素吸蔵量が大きいほどより大きくなり得る。従って、上記構成によれば、第１の条件が成立した場合にて、最大酸素吸蔵量の大きさに依存することなく、積分項を収束値に適切に近づけることができる。
【００６７】
以上が、本発明に係る第１の空燃比制御装置についての説明である。次に、本発明に係る第２の空燃比制御装置について説明する。
【００６８】
本発明に係る第２の空燃比制御装置は、上記本発明に係る第１の空燃比制御装置と同じ触媒と、下流側空燃比センサと、燃料噴射弁と、を備えた内燃機関に適用される。
【００６９】
本発明に係る第２の空燃比制御装置は、上記本発明に係る第１の空燃比制御装置と同じ積分項更新手段と、フィードバック制御手段と、を備え、前記積分項更新手段が、前記積分項の変化速度を変更する変化速度変更手段を備える。
【００７０】
本発明に係る第２の空燃比制御装置の特徴は、前記変化速度変更手段が、前記積分項の収束値からの偏移の程度が第１の程度よりも大きいという第１判定がなされる毎に前記積分項の変化速度をより大きい値に変更し、前記積分項の収束値からの偏移の程度が前記第１の程度よりも小さい第２の程度よりも小さいという第２判定がなされる毎に前記積分項の変化速度をより小さい値に変更し、前記第１判定がなされる毎に前記第１及び第２の程度をより大きい値に変更し、前記第２判定がなされる毎に前記第１及び第２の程度をより小さい値に変更するように構成されたことにある。
【００７１】
これによれば、積分項の収束値からの偏移の程度が大きい場合、前記第１判定がなされ得、積分項の変化速度が大きい値に設定され得る。従って、積分値が収束値に迅速に近づき得、上記偏移の程度が小さくなり得る。ここで、第１判定がなされる毎に前記第１及び第２の程度が大きい値に変更されていくため、上記偏移の程度が小さくなっていくのに伴って前記第１判定がなされ難く、且つ、前記第２判定がなされ易くなっていく。従って、上記偏移の程度が小さくなると、前記第２判定がなされ得、積分項の変化速度が小さい値に設定され得る。この結果、積分項が収束値近傍の値に安定して推移し得る。以上のことから、積分項の収束値からの偏移が大きくなる事態が発生する場合（例えば、外乱が発生する場合）であっても、上記吸排気系の誤差を早期に精度よく補償することができる。
【００７２】
上記本発明に係る第２の空燃比制御装置においては、前記変化速度変更手段が、前記積分項に応答遅れ処理を施して得られる応答遅れ処理値を計算していくように構成され、前記積分項の基準値との偏移の程度が前記第１の程度よりも大きい場合前記第１判定がなされ、前記積分項の前記基準値との偏移の程度が前記第２の程度よりも小さい場合前記第２判定がなされ、前記第１判定がなされる毎に前記基準値を前記積分項と等しい値に変更するとともに、前記第２判定がなされる毎に前記基準値を前記応答遅れ処理値と等しい値に変更するように構成されると好適である。
【００７３】
これによれば、積分項（及び基準値）の収束値からの偏移の程度が大きい場合、応答遅れ処理値に比して、積分項の値そのものの方が収束値に近いものとなり得る（図２５を参照）。他方、基準値は第１判定がなされて次に判定がなされるまで一定の値となる。従って、第１判定がなされる毎に基準値が積分項と等しい値に設定・変更されることで、基準値は収束値に迅速に近づいていく。これに伴い、積分項の値そのもの、及び応答遅れ処理値も収束値に迅速に近づき得る。
【００７４】
そして、積分項（及び基準値）の収束値からの偏移の程度が小さくなると、積分項そのものの値に比して、応答遅れ処理値の方が収束値に近いものとなり得る（図２５を参照）。他方、基準値は第２判定がなされて次に判定がなされるまで一定の値となる。従って、第２判定がなされる毎に、基準値が応答遅れ処理値と等しい値に設定・変更されることで、基準値は収束値近傍の値に安定して推移し得る。これに伴い、積分項の値そのもの、及び応答遅れ処理値も収束値近傍の値に安定して推移し得る。
【００７５】
従って、少なくとも基準値、積分項、及び応答遅れ処理値が用いられることで、簡易に上記吸排気系の誤差を早期に精度よく補償することが達成され得る。換言すれば、積分項の収束値からの偏移の程度を表すパラメータ（例えば、失火率の変化等）を利用することなく、第１、及び第２判定が簡易かつ適切になされ得る。
【００７６】
また、上記本発明に係る第２の空燃比制御装置においては、前記触媒が、酸素吸蔵機能を有する場合、前記変化速度変更手段が、前記第１判定がなされた場合前記触媒が吸蔵し得る酸素の最大量が大きいほど前記積分項の変化速度の増大度合いがより小さい度合いとなるよう前記変化速度を変更し、前記第２判定がなされた場合前記酸素の最大量が大きいほど前記積分項の変化速度の減少度合いがより小さい度合いとなるよう前記変化速度を変更するように構成されると好適である。
【００７７】
上述したように、例えば、フューエルカット制御からの復帰後にリッチ制御が実行されることにより、上記積分項のリーンずれが発生し得る。このリーンずれの程度は、積分項の変化速度が一定の場合、触媒の最大酸素吸蔵量が大きいほどより大きくなる。従って、触媒の最大酸素吸蔵量が大きいほど、積分項の変化速度の増加度合い（及び減少度合い）がより小さくなるように積分項の変化速度を変更することが好ましい。
【００７８】
上記構成はかかる知見に基づくものである。これによれば、触媒の最大酸素吸蔵量の大きさに依存することなく、積分項を迅速に且つ精度よく収束値に収束させることができる。また、換言すれば、触媒が劣化する等により最大酸素吸蔵量が小さくなるほど、積分項の変化速度をより大きくすることができる。
【００７９】
この場合、積分項の更新を禁止する期間を調整することで、積分項の変化速度の調整が達成されてもよい。即ち、前記変化速度変更手段が、前記第１判定がなされた場合、前記触媒が吸蔵し得る酸素の最大量が大きいほど、前記積分項の更新を禁止する期間の短縮度合いがより小さい度合いとなるよう前記更新を禁止する期間を短縮し、前記第２判定がなされた場合、前記酸素の最大量が大きいほど、前記積分項の更新を禁止する期間の延長度合いがより小さい度合いとなるよう前記更新を禁止する期間を延長するように構成されてもよい。
【発明を実施するための最良の形態】
【００８０】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００８１】
（第１実施形態）
図１は、本発明の第１実施形態にかかる空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００８２】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これによりクランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００８３】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともにインテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ３９を備えている。
【００８４】
吸気系統４０は、吸気ポート３１に連通し吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、及びスロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａを備えている。
【００８５】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１に接続されたエキゾーストパイプ５２、エキゾーストパイプ５２に配設された上流側触媒５３、上流側触媒５３よりも下流のエキゾーストパイプ５２に配設された下流側触媒５４を備えている。排気ポート３４、エキゾーストマニホールド５１及びエキゾーストパイプ５２は、排気通路を構成している。
【００８６】
上流側触媒５３及び下流側触媒５４のそれぞれは、所謂、白金等の貴金属からなる活性成分を担持する三元触媒装置である。各触媒は、触媒流入ガスがほぼ理論空燃比であるとき、ＨＣ，ＣＯなどの未燃ガスを酸化するとともに、窒素酸化物（ＮＯｘ）を還元する機能を有する。更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有し、この酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃ガス及び窒素酸化物を浄化することができる。この酸素吸蔵機能は、触媒に担持されているセリア(ＣｅＯ２)によってもたらされる。
【００８７】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、空燃比センサ６６、酸素濃度センサ６７、及びアクセル開度センサ６８を備えている。
【００８８】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量を検出し、吸入空気流量Gaを表す信号を出力するようになっている。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともにクランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、運転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００８９】
空燃比センサ６６は、排気通路であって上流側触媒５３よりも上流側に配設されている。空燃比センサ６６は、所謂「限界電流式酸素濃度センサ」であって、上流側触媒５３に流入する排ガス中の空燃比を検出し、図２に実線にて示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧である出力値Vabyfs(V)を出力するようになっている。特に、正常状態では、空燃比が理論空燃比であるときに出力値Vabyfs(V)は値Vstoich(V)になるようになっている。図２から明らかなように、空燃比センサ６６によれば、広範囲にわたる空燃比A/Fを精度良く検出することができる。
【００９０】
酸素濃度センサ６７は、排気通路であって上流側触媒５３よりも下流側であり下流側触媒５４よりも上流側に配設されている。酸素濃度センサ６７は、所謂「濃淡電池式（起電力式）酸素濃度センサ」である。図３に示したように、酸素濃度センサ６７は、上流側触媒５３から流出するガスの空燃比が理論空燃比よりもリッチ及びリーンのとき略０．９(V)（最大値）及び略０．１(V)（最小値）の電圧をそれぞれ出力し、上流側触媒５３から流出するガスの空燃比が理論空燃比であるときは０．５(V)の電圧を出力するようになっている。
【００９１】
アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００９２】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、及びスロットル弁アクチュエータ４３ａに駆動信号を送出するようになっている。
【００９３】
（空燃比フィードバック制御の概要）
次に、上記のように構成された空燃比制御装置が行う空燃比のフィードバック制御の概要について説明する。
【００９４】
この空燃比制御装置（以下、「本装置」と称呼する。）は、後に詳述するように、酸素濃度センサ６７の出力値Voxsと下流側目標値Voxsrefとの偏差を比例・積分・微分処理（ＰＩＤ処理）して下流側フィードバック補正値Vafsfbを求める。そして、下流側フィードバック補正値Vafsfbを空燃比センサ６６の出力値Vabyfsに加えて空燃比センサ６６の出力値Vabyfsを補正し、この補正した値に対応する空燃比（以下、「制御用空燃比」と称呼する。）が目標空燃比（原則的には、理論空燃比AFstoich）と一致するように空燃比をフィードバック制御する。
【００９５】
より具体的に述べると、本装置は、機能ブロック図である図４に示したように、Ａ１〜Ａ１１の各機能ブロックを含んで構成されている。以下、図４を参照しながら各機能ブロックについて説明していく。
【００９６】
<基本燃料噴射量の算出>
先ず、筒内吸入空気量算出手段Ａ１は、エアフローメータ６１が計測している吸入空気流量Gaと、クランクポジションセンサ６４の出力に基づいて得られる運転速度NEと、ＲＯＭ７２が記憶しているテーブルMapMcとに基づき、吸気行程を迎える気筒の今回の吸入空気量である筒内吸入空気量Mcを求める。
【００９７】
上流側目標空燃比設定手段Ａ２は、内燃機関１０の運転状態に基づいて上流側目標空燃比abyfrを決定する。この上流側目標空燃比abyfrは、原則的には、理論空燃比AFstoichに設定されている。一方、後述するフューエルカット制御（以下、「ＦＣ制御」と称呼することもある。）が実行された場合には、ＦＣ制御からの復帰時点から所定期間に亘って、上流側目標空燃比abyfrが理論空燃比AFstoichよりもリッチな空燃比AFrich（本例では一定）に設定される。以下、この空燃比AFrichに基づく空燃比制御を「ＦＣ後リッチ制御」とも称呼する。
【００９８】
また、上流側触媒５３の最大酸素吸蔵量Cmaxを取得する場合、上流側触媒５３上流の空燃比を理論空燃比からリッチ側、及びリーン側に交互に変動させるように、上流側目標空燃比abyfrが設定・変更される（所謂、アクティブ空燃比制御）。なお、アクティブ空燃比制御については、例えば、特開平５−１３３２６４号公報等に記載されているので、ここではその詳細な説明を省略する。なお、最大酸素吸蔵量Cmaxは、取得される毎にバックアップＲＡＭ７４に記憶・更新されるようになっており、各種パラメータの算出等に用いられる際にはバックアップＲＡＭ７４から読み出されるようになっている。
【００９９】
基本燃料噴射量算出手段Ａ３は、筒内吸入空気量算出手段Ａ１により求められた筒内吸入空気量Mcを上流側目標空燃比設定手段Ａ２により設定された上流側目標空燃比abyfrで除することにより、空燃比を上流側目標空燃比abyfrとするための今回の吸気行程に対する基本燃料噴射量Fbaseを求める。
【０１００】
本例では、ＦＣ制御は、アクセルペダル８１の操作量Accpがゼロである等の所定の運転条件が成立した場合に実行されるようになっている。ＦＣ制御実行条件が成立した場合には、基本燃料噴射量Fbaseはゼロに設定されるとともに、空燃比フィードバック制御の実行が禁止される。
【０１０１】
<燃料噴射量の算出>
燃料噴射量算出手段Ａ４は、基本燃料噴射量算出手段Ａ３により求められた基本燃料噴射量Fbaseに、後述する上流側フィードバック補正値DFiを加えることで、下記(1)式に基づいて燃料噴射量Fiを求める。
Fi＝Fbase＋DFi  ・・・(1)
【０１０２】
このようにして、本装置は、燃料噴射量算出手段Ａ４により、基本燃料噴射量Fbaseを上流側フィードバック補正値DFiに基づいて補正することにより得られる燃料噴射量Fiの燃料の噴射指示を今回の吸気行程を迎える気筒についてのインジェクタ３９に対して行う。
【０１０３】
<下流側フィードバック補正値の算出>
先ず、下流側目標値設定手段Ａ５は、上述した上流側目標空燃比設定手段Ａ２と同様、内燃機関１０の運転状態に基づいて下流側目標値Voxsrefを決定する。この下流側目標値Voxsrefは、本例では、下流側目標値Voxsrefに対応する空燃比が上述した上流側目標空燃比abyfrと常時一致するように設定される。即ち、下流側目標値Voxsrefは、原則的には、理論空燃比AFstoichに相当する値（＝０．５(V)）に設定される。一方、上記ＦＣ後リッチ制御が実行される場合には、上記理論空燃比AFstoichよりもリッチな空燃比AFrichに相当する値（＞０．５(V)）に設定される。
【０１０４】
出力偏差量算出手段Ａ６は、下記(2)式に基づいて、下流側目標値設定手段Ａ５により設定されている現時点（具体的には、今回のFiの噴射指示開始時点）での下流側目標値Voxsrefから現時点での酸素濃度センサ６７の出力値Voxsを減じることにより、出力偏差量DVoxsを更新する。この出力偏差量DVoxsは前記相違起因値に対応する。
DVoxs＝Voxsref−Voxs  ・・・(2)
【０１０５】
下流側フィードバック補正値算出手段Ａ７は、出力偏差量DVoxsを比例・積分・微分処理（ＰＩＤ処理）することで、下記(3)式に基づいて下流側フィードバック補正値Vafsfbを求める。この下流側フィードバック補正値Vafsfbは、後述する上流側フィードバック補正値DFiを算出するのに用いられる。
Vafsfb＝Kp・DVoxs＋Ki・SDVoxs＋Kd・DDVoxs  ・・・(3)
【０１０６】
上記(3)式において、Kpは予め設定された比例ゲイン（比例定数）、Kiは予め設定された積分ゲイン（積分定数）、Kdは予め設定された微分ゲイン（微分定数）である。本例では、これらのゲインは一定である。この値「Ki・SDVoxs」が前記積分項に対応する。
【０１０７】
また、DDVoxsは出力偏差量DVoxsの時間微分値であり、今回更新された出力偏差量DVoxsと前回更新されていた出力偏差量DVoxsとの偏差を更新間隔に対応する時間で除することで更新される。また、SDVoxsは出力偏差量DVoxsの時間積分値であり、この時間積分値SDVoxsは下記(4)式に基づいて更新される。
SDVoxs＝SDVoxs＋K・DVoxs  ・・・(4)
【０１０８】
上記(4)式において、Kは調整値であり、後述するように設定・変更される値である。即ち、時間積分値SDVoxsの１回あたりの更新量は、出力偏差量DVoxsに調整値Kを乗じた値K・DVoxsである。調整値Kが設定・変更されることにより、上記１回あたりの更新量K・DVoxsも設定・変更されるようになっている。また、時間積分値SDVoxsは、更新される毎にバックアップＲＡＭ７４に逐次記憶されていくようになっている。そして、記憶されている時間積分値SDVoxsの最新値が利用されて、下流側フィードバック補正値Vafsfbが更新される。
【０１０９】
<上流側フィードバック補正値の算出>
制御用空燃比相当出力値算出手段Ａ８は、空燃比センサ６６の出力値Vabyfsに、下流側フィードバック補正値算出手段Ａ７により求められた下流側フィードバック補正値Vafsfbを加えることで、制御用空燃比相当出力値(Vabyfs+Vafsfb)を求める。
【０１１０】
テーブル変換手段Ａ９は、制御用空燃比相当出力値算出手段Ａ８により算出された制御用空燃比相当出力値(Vabyfs+Vafsfb)と、先に説明した図２にグラフにより示した空燃比センサ６６の出力値Vabyfsと空燃比A/Fとの関係を規定したテーブルMapabyfsとに基づいて、制御用空燃比abyfsを求める（図２の実線を参照）。このように、制御用空燃比abyfsは、空燃比センサ６６の出力値Vabyfsに対応する空燃比（検出空燃比）に対して下流側フィードバック補正値Vafsfbに相当する分だけ異なる空燃比（見かけ上の空燃比）である。
【０１１１】
空燃比偏差算出手段Ａ１０は、下記(5)式に基づいて、テーブル変換手段Ａ９により求められた制御用空燃比abyfsから上記上流側目標空燃比abyfrを減じることにより、空燃比偏差DAFを求める。この空燃比偏差DAFは、燃料供給量の過不足分を表す量となる。
DAF＝abyfs−abyfr  ・・・(5)
【０１１２】
上流側フィードバック補正値算出手段Ａ１１は、空燃比偏差算出手段Ａ１０により算出された空燃比偏差DAFを比例・積分処理（ＰＩ処理）することで、下記(6)式に基づいて燃料供給量の過不足を補償するための上流側フィードバック補正値DFiを求める。
DFi＝Gp・DAF＋Gi・SDAF  ・・・(6)
【０１１３】
上記(6)式において、Gpは予め設定された比例ゲイン（比例定数）、Giは予め設定された積分ゲイン（積分定数）である。SDAFは空燃比偏差DAFの時間積分値である。係る上流側フィードバック補正値DFiは、先に述べたように燃料噴射量算出手段Ａ４により燃料噴射量Fiを求める際に使用される。
【０１１４】
このように、本装置は、上流側目標空燃比abyfrと制御用空燃比abyfsとが一致するように空燃比センサ６６の出力値Vabyfsに基づいて空燃比をフィードバック制御する。加えて、制御用空燃比abyfsは、上述したように空燃比センサ６６による検出空燃比に対して、下流側フィードバック補正値Vafsfbに相当する分だけ異なる空燃比であるから、酸素濃度センサ６７の出力値Voxsの下流側目標値Voxsrefからの出力偏差量DVoxsにも応じて変化する。
【０１１５】
例えば、酸素濃度センサ６７の出力値Voxsがリッチを示す値（略０．９(V)（最大値））に維持されているときには、上記出力偏差量DVoxs（＝Voxsref-Voxs）は負の値となる。このため、下流側フィードバック補正値Vafsfbも負の値となり、制御用空燃比が目標空燃比よりリッチ方向へ偏移した空燃比となり、空燃比偏差DAFが負の値となる。従って、上流側フィードバック補正値DFiが負の値となる。これにより燃料噴射量Fiは基本燃料噴射量Fbaseよりも小さくなるようにフィードバック制御される。
【０１１６】
一方、酸素濃度センサ６７の出力値Voxsがリーンを示す値（略０．１(V)（最小値））に維持されているときには、上記出力偏差量DVoxs（＝Voxsref-Voxs）は正の値となる。このため、下流側フィードバック補正値Vafsfbも正の値となり、制御用空燃比が目標空燃比よりリーン方向へ偏移した空燃比となり、空燃比偏差DAFが正の値となる。従って、上流側フィードバック補正値DFiが正の値となる。これにより燃料噴射量Fiは基本燃料噴射量Fbaseよりも大きくなるようにフィードバック制御される。
【０１１７】
（時間積分値の収束値からの偏移が大きい場合の対処）
【０１１８】
ところで、限界電流式の酸素濃度センサである空燃比センサ６６は、個体誤差、経年変化等により理論空燃比AFstoichに対応する出力値が正常値（本例では、図２における値Vstoich）から偏移し易い特性を有する。この例では、空燃比センサ６６の出力値Vabyfsが、図２に破線にて示したように、空燃比全域に亘って正常値から値dVだけ大きめに偏移している。この結果、理論空燃比AFstoichに対応する出力値が正常値Vstoichから値dVだけ大きい値（Vstoich＋dV）になっているものとする。即ち、実際の空燃比は、空燃比センサ６６の検出空燃比よりも値dVに相当する分だけリッチ側に偏移しているものとする。
【０１１９】
上述した本装置によるフィードバック制御が実行されると、係る空燃比センサ６６の誤差は上記下流側フィードバック補正値Vafsfbの積分項Ki・SDVoxsにより補償される。即ち、定常運転状態では、積分項Ki・SDVoxsが上記値dV（の負の値）と等しい値に収束することで、制御用空燃比abyfsが実際の空燃比と一致し、この結果、上流側触媒５３の上下流の空燃比が目標空燃比に維持され得る。換言すれば、時間積分値SDVoxsが上記値dVに対応する収束値SDVoxs1に収束することで、空燃比センサ６６の誤差が補償され得る。
【０１２０】
本例では、上述したように時間積分値SDVoxsが更新毎にバックアップＲＡＭ７４に記憶されるようになっている。バックアップＲＡＭ７４には、内燃機関１０が運転されていない状態（エンジンキーoff時）であっても、時間積分値SDVoxsが記憶・保存され得る。これにより、例えば、内燃機関１０の始動時において、バックアップＲＡＭ７４に記憶されていた時間積分値SDVoxsが読み出され、読み出された時間積分値SDVoxsに基づいて上記積分項Ki・SDVoxsが算出される。従って、内燃機関１０が始動した場合には、新たに時間積分値SDVoxsが収束する時間を待たずに、空燃比センサ６６の誤差が直ちに補償され得るようになっている。
【０１２１】
この時間積分値SDVoxsは、例えば、車両のバッテリ交換時等においてゼロにリセットされる。この場合、内燃機関１０の始動後において、上述したフィードバック制御が開始されることで、時間積分値SDVoxsがゼロから収束値SDVoxs1に近づいていく（即ち、積分項Ki・SDVoxsもゼロから上記値dVと等しい値に向かって近づいていく。）。即ち、上述のようにバッテリ交換等により時間積分値SDVoxsがリセットされることで、時間積分値SDVoxsが収束値SDVoxs1から大きく偏移するという事態が発生し得る。
【０１２２】
本装置は、このように時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいと判定された場合、時間積分値SDVoxsが迅速且つ精度よく収束値SDVoxs1に収束するように、時間積分値SDVoxsの変化速度を設定・変更していく。以下、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きい場合の対処について詳述していく。
【０１２３】
図５は、バッテリ交換がなされて内燃機関１０が始動された場合における、フィードバック制御開始以降の各種変数の変化の一例を示したタイムチャートである。この各種変数は、上流側触媒５３に流入するガスの空燃比A/F、上流側触媒５３の酸素吸蔵量OSA、酸素濃度センサ６７の出力値Voxs、及び時間積分値SDVoxsである。なお、図５において、実線は上流側触媒５３の最大酸素吸蔵量Cmaxが値Cmax1である場合の上記各種変数の変化を示し、破線は最大酸素吸蔵量Cmaxが値Cmax1よりも小さい値Cmax2である場合のものを示している。
【０１２４】
先ず、図５の実線について説明する。本例では、上述したように所定の条件が成立した場合、ＦＣ制御が実行される。いま、時刻ｔＡにてＦＣ制御が実行開始され、時刻ｔＢにてＦＣ制御から復帰するものとする。なお、ＦＣ制御中は空燃比フィードバック制御（以下、「ＦＢ制御」とも称呼する。）の実行が禁止(Off)される。
【０１２５】
ＦＣ制御からの復帰時点ｔＢにおいては、酸素吸蔵量OSAは最大酸素吸蔵量Cmaxに達している場合が多く、この場合、上流側触媒５３に流入するＮＯｘが適切に浄化され難い。ＮＯｘを適切に浄化する観点から、ＦＣ制御からの復帰後、酸素吸蔵量OSAをある程度まで減少させることが好ましい。従って、本例では、上記ＦＣ後リッチ制御が実行される。
【０１２６】
ＦＣ後リッチ制御は、上流側目標空燃比abyfrが上記リッチな空燃比AFrich（一定）に設定され、下流側目標値Voxsrefが空燃比AFrichに相当する値（＞０．５(V)）に設定されて、ＦＢ制御が実行されることで達成されるようになっている。そして、酸素吸蔵量OSAが最大酸素吸蔵量Cmaxから、最大酸素吸蔵量Cmaxの半分よりも小さい所定の量（具体的には、最大酸素吸蔵量Cmaxに比例する量）に達するように、ＦＣ後リッチ制御の実行期間（燃料噴射回数）が調整される。このＦＣ後リッチ制御の実行期間（燃料噴射回数）は、最大酸素吸蔵量Cmaxが大きいほどより大きくなる。本例では、上記時刻ｔＢにて開始されたＦＣ後リッチ制御は、時刻ｔＣにて終了するものとする。
【０１２７】
このＦＣ後リッチ制御では、ＦＣ後リッチ制御の実行中にて酸素吸蔵量OSAが上記「最大酸素吸蔵量Cmaxの半分よりも小さい所定の量」に達する前に、上流側触媒５３からＨＣが流出する場合が多い。即ち、時刻ｔＣよりも前の時刻ｔＤにて、上記ＨＣの流出が発生して、ＦＣ制御によりリーンを示す値に維持されていた酸素濃度センサ６７の出力値Voxsが反転してリッチを示す値となる。
【０１２８】
他方、時刻ｔＢから、時間積分値SDVoxsの更新が回数Ｌに亘って禁止(Off)される。以下、この回数Lを、「更新禁止回数L」と称呼する。本例では、この更新禁止回数Ｌは、ＦＣ後リッチ制御の実行期間に対応する燃料噴射回数よりも大きい値に設定される。即ち、時間積分値SDVoxsの更新が禁止される期間の終期ｔＥは、時刻ｔＣよりも後に到来するようになっている。このため、時間積分値SDVoxsは、期間ｔＡ〜ｔＥに亘って一定の値に維持される。
【０１２９】
時刻ｔＥにて、時間積分値SDVoxsの更新が許可(On)される。また、時刻ｔＥでは、時刻ｔＤにて反転した酸素濃度センサ６７の出力値Voxsがリッチを示す値に維持されている。これらのことから、時刻ｔＥ以降、時間積分値SDVoxsの１回あたりの更新量K・DVoxs（＝K・(Voxsref−Voxs)）が負の値となり、時間積分値SDVoxsが減少していく。即ち、時間積分値SDVoxsは、ＦＣ後リッチ制御により上記収束値SDVoxs1から燃料噴射量Fiが減少する方向へ偏移していく（時間積分値SDVoxsがリーンずれしていく）。
【０１３０】
ここで、最大酸素吸蔵量Cmaxが異なる場合における時間積分値SDVoxsの変化について説明する。最大酸素吸蔵量Cmaxが比較的大きい上記値Cmax1である場合（図５の実線を参照）、酸素濃度センサ６７の出力値Voxsが、ＦＣ後リッチ制御中に反転した時点（時刻ｔＤを参照）以降リッチを示す値に維持される期間が長い。従って、この場合、酸素濃度センサ６７の出力値Voxsが再びリーンを示す値に反転する前に、再びＦＣ制御が実行開始される場合が多い（時刻ｔＦを参照）。このため、時間積分値SDVoxsのリーンずれの程度は平均的に大きい。
【０１３１】
一方、最大酸素吸蔵量Cmaxが上記値Cmax1よりも小さい上記値Cmax2である場合（図５の破線を参照）、酸素濃度センサ６７の出力値Voxsが、ＦＣ後リッチ制御中に反転した時点以降リッチを示す値に維持される期間が短い。従って、この場合、再びＦＣ制御が実行される前に、酸素濃度センサ６７の出力値Voxsが再びリーンを示す値に反転する場合が多い（時刻ｔＧを参照）。時刻ｔＧ以降、上記時刻ｔＦまでの短い期間にて、時間積分値SDVoxsは増大し得る。このため、最大酸素吸蔵量Cmaxが上記値Cmax1である場合に比して、時間積分値SDVoxsのリーンずれの程度は平均的に小さい。
【０１３２】
このように、時間積分値SDVoxsが収束値SDVoxs1に近づいていく際、ＦＣ制御、及びＦＣ後リッチ制御が実行される場合、これらが外乱となり得る。この外乱に起因して、時間積分値SDVoxsの収束値SDVoxs1からのリーンずれが発生する。また、このリーンずれの程度は、上流側触媒５３の最大酸素吸蔵量Cmaxが大きいほどより大きくなる。
【０１３３】
図６は、バッテリ交換がなされて内燃機関１０が時刻ｔ０にて始動された場合において、本装置による制御が実行された場合における、時間積分値SDVoxsの変化の一例を示したタイムチャートである。この場合、バッテリ交換がなされたため、時刻ｔ０における時間積分値SDVoxsはゼロである。
【０１３４】
上述のように、外乱としてのＦＣ制御、及びＦＣ後リッチ制御が実行される場合であっても時間積分値SDVoxsを収束値SDVoxs1に迅速かつ精度よく近づけるために、本装置は、以下に説明する制御を実行する。時刻ｔ０以降の時刻であってＦＢ制御開始条件が成立する時刻ｔ１以降、本装置は、３つの段階（step）に分けて、時間積分値SDVoxsの変化速度を大、中、小程度の値にそれぞれ設定（変更）する。また、本装置は、後述するように、時間積分値SDVoxsの１回あたりの更新量（＝K・DVoxs）、及びＦＣ制御からの復帰時点から時間積分値SDVoxsの更新禁止回数Lを調整することで、時間積分値SDVoxsの変化速度を調整する。
【０１３５】
（実際の作動）
以下、本装置の実際の作動について、図７〜図９及び図１２に示したフローチャート、及び図６に示したタイムチャートを参照しながら説明していく。
【０１３６】
以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。また、「stepN」は、stepをN（N＝1,2,3）に設定した状態のstepを表すものとする。
【０１３７】
<下流側フィードバック補正値Vafsfbの計算>
ＣＰＵ７１は、図７にフローチャートにより示した下流側フィードバック補正値Vafsfbの計算を行うルーチンを、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来する毎に、繰り返し実行するようになっている。
【０１３８】
従って、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来すると、ＣＰＵ７１はステップ７００から処理を開始してステップ７０５に進み、ＦＢ制御が許可(On)されているか否かを判定する。本例では、ＦＢ制御条件は、冷却水温THWが所定温度以上であり、且つ、空燃比センサ６６及び酸素濃度センサ６７が正常であるときに成立する。また、ＦＣ制御が実行されている期間に亘ってもＦＢ制御が禁止(Off)される。
【０１３９】
いま、内燃機関１０の始動直後（図６の時刻ｔ０を参照）であって、事前に車両に搭載されたバッテリが交換されたものとする。この場合、ＣＰＵ７１はステップ７０５にて「Ｎｏ」と判定した後、直ちにステップ７９５に進んで本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ７０５の条件が成立するまで、ステップ７０５の処理を繰り返し実行する。
【０１４０】
<setpの設定>
次に、stepを設定する際の作動を説明すると、ＣＰＵ７１は図８にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来する毎に、繰り返し実行するようになっている。
【０１４１】
従って、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来すると、ＣＰＵ７１はステップ８００から処理を開始し、ステップ８０５に進んで内燃機関１０が始動直後であるか否かを判定する。
【０１４２】
現時点は内燃機関１０の始動直後（図６の時刻ｔ０を参照）であるため、ＣＰＵ７１はステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進んでバッテリ交換がなされたか否かを判定する。本例では、事前にバッテリが交換されているため、ＣＰＵ７１はステップ８１０にて「Ｙｅｓ」と判定してステップ８１５に進んでstepを「１」に設定・更新し、続くステップ８２０に進んでカウンタIをクリアする。stepは、更新される毎にバックアップＲＡＭ７４に記憶・更新されるようになっている。なお、バッテリ交換がされていないと判定された場合、ＣＰＵ７１はステップ８１０にて「Ｎｏ」と判定してステップ８２５に進み、バックアップＲＡＭ７４に記憶されているstepを読み出すようになっている。
【０１４３】
次に、ＣＰＵ７１はステップ８３０に進んで、ＦＢ制御が許可されており、且つ、時間積分値SDVoxsの更新が許可されているか否かを判定する。現時点は、内燃機関１０の始動直後であるので、ＦＢ制御が禁止されている。従って、ＣＰＵ７１はステップ８３０にて「Ｎｏ」と判定して直ちにステップ８９５に進んで本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ８０５にて「Ｎｏ」と判定するようになり、ステップ８３０の条件が成立するまで、ステップ８０５，８３０の処理を繰り返し実行する。
【０１４４】
<調整値K、及び更新禁止回数Lの設定>
次に、調整値K、及び更新禁止回数Lを設定する際の作動を説明すると、ＣＰＵ７１は図９にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来する毎に、繰り返し実行するようになっている。
【０１４５】
従って、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来すると、ＣＰＵ７１はステップ９００から処理を開始し、ステップ９０５に進んでstepが更新されたか否かを判定する。現時点は上述した図８のステップ８１５にてstepが「１」に設定・更新された直後である。従って、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、調整値KをテーブルMapK(Cmax,step)に基づいて決定する。
【０１４６】
図１０は、上流側触媒５３の最大酸素吸蔵量Cmax及びstepと、調整値Kとの関係を規定したテーブルMapK(Cmax,step)を示している。最大酸素吸蔵量Cmaxが一定の場合において、step1での調整値Kがstep2のものよりも大きく、且つ、step2での調整値Kがstep3のものよりも大きくなるように、調整値Kが決定される。現時点では、stepが「１」に設定されているため、調整値Kは大きい値に設定される。ここで設定される調整値Kは前記第１値に対応する。
【０１４７】
また、テーブルMapK(Cmax,step)によれば、何れのstepにおける調整値Kは、最大酸素吸蔵量Cmaxが大きいほどより小さい値となるように決定される。これは、最大酸素吸蔵量Cmaxが大きいほど時間積分値SDVoxsの変化速度をより小さく設定して、時間積分値SDVoxsのリーンずれの程度が大きくなることを抑制するためである。
【０１４８】
次に、ＣＰＵ７１はステップ９１５に進んでＦＣ制御が終了した直後か否かを判定する。ステップ９１５にて「Ｎｏ」と判定される場合、ＣＰＵ７１はステップ９９５に直ちに進んで本ルーチンを一旦終了する。一方、ステップ９１５にて「Ｙｅｓ」と判定される場合には、ＣＰＵ７１はステップ９２０に進んで、更新禁止回数LをテーブルMapL(Cmax,step)に基づいて決定した後、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１４９】
図１１は、上流側触媒５３の最大酸素吸蔵量Cmax及びstepと、更新禁止回数Lとの関係を規定したテーブルMapL(Cmax,step)を示している。最大酸素吸蔵量Cmaxが一定の場合において、step1での更新禁止回数Lがstep2のものよりも小さく、且つ、step2での更新禁止回数Lがstep3のものよりも小さくなるように、更新禁止回数Lが設定される。ここで設定される更新禁止回数Lに相当する期間が前記第１期間に対応する。
【０１５０】
また、テーブルMapL(Cmax,step)によれば、何れのstepにおける更新禁止回数Lは、最大酸素吸蔵量Cmaxが大きいほどより大きい値となるように決定される。これは、最大酸素吸蔵量Cmaxが大きいほどＦＣリッチ制御の実行期間が長くなること、及び更新禁止回数LがＦＣリッチ制御の実行期間に対応する燃料噴射回数よりも大きい回数に設定されることに基づく。また、テーブルMapL(Cmax,step)は、step1,2,3における最大酸素吸蔵量Cmaxの増大に対する更新禁止回数Lの増大度合いが、大、中、小の関係となるようになっている。
【０１５１】
以降、ＣＰＵ７１はステップ９０５にて「Ｎｏ」と判定するようになり、ステップ９０５の条件が成立するまで、ステップ９０５，９１５の処理を繰り返し実行する。また、ＦＣ制御の終了直後が到来する毎に、更新禁止回数Lが設定される。これらの図８、図９のルーチンが前記変化速度変更手段の一部に対応する。
【０１５２】
図６の時刻ｔ０以降、ＦＢ制御が禁止(Off)されるため、時間積分値SDVoxsがゼロに維持される。そして、時刻ｔ１にてＦＢ制御条件が成立し、フィードバック制御が許可(On)される。
【０１５３】
時刻ｔ１になると、図７のルーチンを繰り返し実行しているＣＰＵ７１はステップ７０５に進んだとき「Ｙｅｓ」と判定してステップ７１０に進むようになり、上記式(2)に基づいて出力偏差量DVoxs、及び時間微分値DDVoxsを更新する。なお、時間微分値DDVoxsは、前回の本ルーチン実行時にて更新されていた出力偏差量DVoxsと、今回の出力偏差量DVoxsとの偏差を、本ルーチンの実行間隔に対応する時間で除したものである。
【０１５４】
次に、ＣＰＵ７１はステップ７１５に進んで、時間積分値SDVoxsの更新が許可(On)されているか否かを判定する。本例では、上述したようにＦＣ制御終了直後から更新禁止回数Ｌだけ時間積分値SDVoxsの更新が禁止される。ステップ７１５にて「Ｙｅｓ」と判定される場合、ＣＰＵ７１はステップ７２０に進み上記式(4)に基づいて時間積分値SDVoxsを更新して、続くステップ７２５にて上記式(3)、上述のように更新された出力偏差量DVoxs、時間微分値DDVoxs、及び時間積分値SDVoxsに基づいて下流側フィードバック補正値Vafsfbが計算した後、ステップ７９５に進み本ルーチンを一旦終了する。このステップ７２５が前記積分項更新手段の一部に対応する。
【０１５５】
一方、ステップ７１５にて「Ｎｏ」と判定される場合、ＣＰＵ７１はステップ７２５に直ちに進んで時間積分値SDVoxsを更新することなく下流側フィードバック補正値Vafsfbを計算した後、ステップ７９５に進み本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ７０５，７１０，７１５，７２０，７２５の処理を繰り返し実行するようになる。
【０１５６】
また、時刻ｔ１になると、図８のルーチンを繰り返し実行しているＣＰＵ７１はステップ８３０に進んだとき、時間積分値SDVoxsの更新が許可されている場合に「Ｙｅｓ」と判定してステップ８３５に進むようになり、設定されているstepが「１」であるか否かを判定する。現時点では、stepが「１」に設定されているため（ステップ８１５を参照）、ＣＰＵ７１はステップ８３５にて「Ｙｅｓ」と判定してステップ８４０に進んでカウンタIがstep1更新回数目標値Iref（本例では一定値）より小さいか否かを判定する。
【０１５７】
現時点では、カウンタIはゼロに維持されている（ステップ８２０を参照）。従って、ＣＰＵ７１はステップ８４０にて「Ｙｅｓ」と判定してステップ８４５に進み、カウンタIをインクリメントした後、ステップ８９５に進んで本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ８０５，８３０，８３５，８４０，８４５の処理を繰り返し実行するようになる。これにより、カウンタIがインクリメントされていく。
【０１５８】
図６の時刻ｔ１以降、step1であるため、調整値Kが大きい値に設定されている（図９のステップ９１０、及び図１０を参照）。これにより、時間積分値SDVoxsの１回あたりの更新量K・DVoxs（の絶対値）が大きい値に設定される。また、ＦＣ制御の終了直後毎に、更新禁止回数Lが小さい値に設定される（図９のステップ９２０、及び図１１を参照）。これにより、ＦＣ制御が実行される場合、ＦＣ制御から復帰した後時間積分値SDVoxsが小さい期間に亘って一定値に維持される。
【０１５９】
以上のことから、時刻ｔ１以降、時間積分値SDVoxsは、ゼロから大きい変化速度をもって収束値SDVoxs1に収束していく。この時間積分値SDVoxsの変化速度が前記第１速度に対応する。一方、変化速度が大きいため、ＦＣ制御、及びＦＣ後リッチ制御が実行されて、時間積分値SDVoxsが収束値SDVoxs1からリーン方向へ偏移する。即ち、時間積分値SDVoxsの変化速度が大きいため、時間積分値SDVoxsが収束値SDVoxs1に迅速に近づき得るものの、外乱の発生により時間積分値SDVoxsのリーンずれの程度が大きくなる。
【０１６０】
図８のルーチンにてインクリメントされるカウンタI（ステップ８４５を参照）が、上記step1更新回数目標値Irefに達する時刻ｔ２が到来すると、図８のルーチンを繰り返し実行しているＣＰＵ７１はステップ８４０に進んだとき「Ｎｏ」と判定してステップ８５０に進んで、「１」であったstepを「２」に変更・更新する。即ち、カウンタIが上記step1更新回数目標値Irefに達するという条件が前記第１の条件に対応する。
【０１６１】
これ以降、ＣＰＵ７１はステップ８３５に進んだとき「Ｎｏ」と判定してステップ８５５に進み、設定されているstepが「２」であるか否かを判定する。現時点では、stepが「２」に設定されているので、ＣＰＵ７１はステップ８５５にて「Ｙｅｓ」と判定してステップ８６０に進み、所定期間における時間積分値SDVoxsの変動幅ΔSDVoxsが所定変動幅Zよりも大きいか否かを判定するようになる。即ち、ＣＰＵ７１はステップ８０５,８３０，８３５，８５５，８６０の処理を繰り返し実行するようになる。
【０１６２】
また、時刻ｔ２になると、図９のルーチンを繰り返し実行しているＣＰＵ７１はステップ９０５に進んだとき、上述した図８のステップ８５０にてstepが「２」に設定・更新されているので、「Ｙｅｓ」と判定してステップ９１０に進み、調整値KをテーブルMapK(Cmax,step)に基づいて決定する。これにより、調整値Kが中程度の値に設定・変更される（図１０を参照）。ここで設定される調整値Kは前記第２値に対応する。
【０１６３】
また、時刻ｔ２以降、ＦＣ制御の終了直後となる毎に、ステップ９２０にてテーブルMapL(Cmax,step)に基づいて更新禁止回数Lが設定される。この場合、更新禁止回数Lが中程度の値に設定・変更される（図１１を参照）。ここで設定される更新禁止回数Lに相当する期間が前記第２期間に対応する。
【０１６４】
図６の時刻ｔ２以降、step2であるため、大きい値に設定されていた調整値Kが中程度の値に設定・変更されて、時間積分値SDVoxsの１回あたりの更新量K・DVoxs（の絶対値）も中程度の値に設定される。また、ＦＣ制御の終了直後毎に、更新禁止回数Lが中程度の値に設定される。
【０１６５】
以上のことから、時刻ｔ２以降、時間積分値SDVoxsは、ある程度収束値SDVoxs1に近い値から中程度の変化速度をもって収束値SDVoxs1に収束していく。この時間積分値SDVoxsの変化速度が前記第２速度に対応する。変化速度が中程度であるため、外乱の発生による時間積分値SDVoxsのリーンずれの程度を抑制しつつ、時間積分値SDVoxsを、更に収束値SDVoxs1に近づけることができる。
【０１６６】
図８のルーチンにて上記変動幅ΔSDVoxsが所定変動幅Z以下となる時刻ｔ３が到来すると、図８のルーチンを繰り返し実行しているＣＰＵ７１はステップ８６０に進んだとき「Ｎｏ」と判定してステップ８６５に進んで、「２」であったstepを「３」に変更・更新する。即ち、上記変動幅ΔSDVoxsが所定変動幅Z以下となるという条件が前記第２の条件に対応する。
【０１６７】
これ以降、ＣＰＵ７１はステップ８５５に進んだとき「Ｎｏ」と判定してステップ８７０に進み、所定期間における時間積分値SDVoxsの変動幅ΔSDVoxsが所定変動幅Z以下であるか否かを判定するようになる。即ち、ＣＰＵ７１はステップ８０５,８３０，８３５，８５５，８７０の処理を繰り返し実行するようになる。
【０１６８】
また、時刻ｔ３になると、図９のルーチンを繰り返し実行しているＣＰＵ７１はステップ９０５に進んだとき、上述した図８のステップ８５０にてstepが「３」に設定・更新されているので、「Ｙｅｓ」と判定してステップ９１０に進み、調整値KをテーブルMapK(Cmax,step)に基づいて決定する。これにより、調整値Kが小さい値に設定・変更される（図１０を参照）。ここで設定される調整値Kは前記第３値に対応する。
【０１６９】
また、時刻ｔ３以降、ＦＣ制御の終了直後となる毎に、ステップ９２０にてテーブルMapL(Cmax,step)に基づいて更新禁止回数Lが設定される。この場合、更新禁止回数Lが大きい値に設定・変更される（図１１を参照）。ここで設定される更新禁止回数Lに相当する期間が前記第３期間に対応する。
【０１７０】
図６の時刻ｔ３以降、step3であるため、中程度の値に設定されていた調整値Kが小さい値に設定・変更されて、時間積分値SDVoxsの１回あたりの更新量K・DVoxs（の絶対値）も小さい値に設定される。また、ＦＣ制御の終了直後毎に、更新禁止回数Lが大きい値に設定される。
【０１７１】
以上のことから、時刻ｔ３以降、収束値SDVoxs1に十分に近づいている時間積分値SDVoxsの変化速度が小さいため、時間積分値SDVoxsは外乱が発生しても収束値SDVoxs1近傍の値に安定して推移し得る。この時間積分値SDVoxsの変化速度が前記第３速度に対応する。なお、時刻ｔ３以降、時間積分値SDVoxsの変動幅ΔSDVoxsが所定変動幅Zよりも大きくなる事態が発生した場合、図８のルーチンを繰り返し実行しているＣＰＵ７１はステップ８７０に進んだとき「Ｎｏ」と判定してステップ８７５に進んで、「３」に設定されていたstepを「２」に設定・変更する。
【０１７２】
<ＦＣ後リッチ制御>
次に、上記ＦＣ後リッチ制御の実行をする際の作動を説明すると、ＣＰＵ７１は図１２にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来する毎に、繰り返し実行するようになっている。
【０１７３】
従って、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来すると、ＣＰＵ７１はステップ１２００から処理を開始し、ステップ１２０５に進んで現時点がＦＣ制御の終了直後か否かを判定する。いま、現時点がＦＣ制御の終了直後であるものとすると、ＣＰＵ７１はステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、ＦＣ後リッチ制御を開始する。即ち、空燃比が理論空燃比AFstoichよりもリッチな上記空燃比AFrichとなるように、上流側目標空燃比abyfrが上記空燃比AFrichに設定され、下流側目標値Voxsrefが上記空燃比AFrichに対応する値に設定されてＦＢ制御がなされる。
【０１７４】
次に、ＣＰＵ７１はステップ１２１５に進んで、上流側触媒５３の酸素吸蔵量（本ルーチンにおいては推定値）OSAを上流側触媒５３の最大酸素吸蔵量Cmaxと等しい値に設定する。次いで、ＣＰＵ７１はステップ１２２０に進み、現時点にて設定されているstepが「１」又は「２」であるか否かを判定し、「Ｙｅｓ」と判定する場合、酸素吸蔵量目標値OSArefを値Cmax・α1に設定する。一方、「Ｎｏ」と判定する場合（即ち、step3である場合）、酸素吸蔵量目標値OSArefを値Cmax・α2に設定する。ここで、値α1は、ゼロよりも大きく「０．５」よりも小さい値である。また、値α2は、ゼロよりも大きく上記値α1よりも小さい値である。
【０１７５】
続いて、ＣＰＵ７１はステップ１２３５に進んで、ＦＣ後リッチ制御中であるか否かを判定する。現時点はＦＣ後リッチ制御が開始された直後なので、ＣＰＵ７１はステップ１２３５にて「Ｙｅｓ」と判定してステップ１２４０に進み、酸素吸蔵量減少量ΔO2をステップ１２４０内に記載の式に従って求める。ここで、値「０．２３」は、空気中に含まれる酸素の質量割合である。
【０１７６】
ステップ１２４０内に記載の式において、値「(AFstoich−AFrich1)・Fi」は、燃料噴射間隔当たりにおいて上流側触媒５３に流入するガス中の空気の不足量（質量）を表す。従って、値「0.23・(AFstoich−AFrich1)・Fi」（＝ΔO2）は、燃料噴射間隔当たりにおいて上流側触媒５３に流入するガス中の酸素の不足量（質量）、即ち、ＦＣ後リッチ制御実行中の燃料噴射間隔当たりにおける上流側触媒５３の酸素吸蔵量の減少分（＞０）を表す。
【０１７７】
次に、ＣＰＵ７１はステップ１２４５に進み、その時点における酸素吸蔵量OSA（ＦＣ制御の終了直後では、先のステップ１２１５の処理により最大酸素吸蔵量Cmaxと等しい）から上記ステップ１２４０にて求めた酸素吸蔵量減少量ΔO2（＞０）を減じることで酸素吸蔵量OSAを更新する（減少させる）。
【０１７８】
次いで、ＣＰＵ７１はステップ１２５０に進み、ステップ１２４５にて更新された酸素吸蔵量OSAが上記ステップ１２２５、或いはステップ１２３０にて設定されたで酸素吸蔵量目標値OSAref以下となった否かを判定する。
【０１７９】
現時点はＦＣ制御の終了直後であるから、酸素吸蔵量OSAは酸素吸蔵量目標値OSArefまで減少していない。従って、ＣＰＵ７１はステップ１２５０にて「Ｎｏ」と判定してステップ１２９５に直ちに進む。以降、ＣＰＵ７１はステップ１２０５にて「Ｎｏ」と判定するようになり、ステップ１２０５，１２３５，１２４０，１２４５，１２５０の処理を繰り返し実行する。これにより、最大酸素吸蔵量Cmaxと等しい値に設定されていた酸素吸蔵量OSAが減少していく。
【０１８０】
減少していく酸素吸蔵量OSAが酸素吸蔵量目標値OSArefに達すると、図１２のルーチンを繰り返し実行しているＣＰＵ７１はステップ１２５０に進んだとき「Ｎｏ」と判定してステップ１２５５に進んで、ＦＣリッチ制御を終了する。これ以降、ＣＰＵ７１はステップ１２０５，１２３５に進んだとき共に「Ｎｏ」と判定してステップ１２９５に直ちに進んで本ルーチンを一旦終了する。この結果、空燃比が理論空燃比AFstoichと一致するように、上流側目標空燃比abyfrが理論空燃比AFstoichに設定され、下流側目標値Voxsrefが理論空燃比AFstoichに相当する値（＝０．５(V)）に設定されてＦＢ制御されるようになる。
【０１８１】
これによれば、step1,2において、step3に比して、ＦＣ後リッチ制御による上流側触媒５３の（実際の）酸素吸蔵量OSAの減少度合いが小さくされ得る。従って、step1,2において、ＦＣ後リッチ制御中に反転する酸素濃度センサ６７の出力値Voxsがリッチを示す値に維持される期間が、過度に長くなることが抑制され得る（図５の時刻ｔＤを参照）。この結果、step1,2においては、時間積分値SDVoxsの変化速度が比較的大きいものの、上述した時間積分値SDVoxsのリーンずれの程度が抑制され得る。step3においては、上流側触媒５３に流入するＮＯｘをより適切に浄化することができる。
【０１８２】
以上説明したように、本発明による内燃機関の空燃比制御装置の第１実施形態によれば、上流側触媒５３下流の酸素濃度センサ６７の出力値Voxsと目標空燃比に対応する下流側目標値Voxsrefとの差DVoxsに調整値Kが乗じられた値「K・DVoxs」を積算することで時間積分値SDVoxsが更新される。この時間積分値SDVoxs（即ち、下流側フィードバック補正値Vafsfb）に基づいてＦＢ制御が実行される。これにより、空燃比センサ６６に誤差が発生する場合、時間積分値SDVoxsがその誤差に相当する収束値SDVoxs1に収束して、誤差が補償され得る。
【０１８３】
時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいと判定される場合、step1,setp2,step3の３段階に分けて時間積分値SDVoxsの変化速度が設定・変更される。step1では、調整値Kの値を大きい値に設定することで、時間積分値SDVoxsの１回あたりの更新量が大きくされる。また、ＦＣ制御終了直後から時間積分値SDVoxsの更新を禁止する回数（更新禁止回数L）が小さい値に設定される。これらにより、step1での時間積分値SDVoxsの変化速度が大きい値に設定される。
【０１８４】
この結果、外乱としてのＦＣ制御、及びＦＣ後リッチ制御が実行される場合、時間積分値SDVoxsのリーンずれの程度が大きいものの、大きく収束値SDVoxs1から偏移していた時間積分値SDVoxsをある程度収束値SDVoxs1に近い値に迅速に近づけることができる。
【０１８５】
step1にて、時間積分値SDVoxsの更新回数が所定回数に達したと判定されると、step2として、調整値Kがstep1のものよりも小さい値に設定・変更されるようになる。また、更新禁止回数Lが、step1のものよりも大きい値に設定・変更されるようになる。これらにより、step2での時間積分値SDVoxsの変化速度が中程度の値に設定される。この結果、時間積分値SDVoxsのリーンずれの程度を抑制しつつ、ある程度収束値SDVoxs1に近い時間積分値SDVoxsを、更に収束値SDVoxs1に近づけることができる。
【０１８６】
step2にて、時間積分値SDVoxsの変動幅が小さいと判定されると、step3として、調整値Kがstep2のものよりも小さい値に設定・変更されるようになる。また、更新禁止回数Lが、step2のものよりも大きい値に設定・変更されるようになる。これらにより、step3での時間積分値SDVoxsの変化速度が小さい値に設定される。この結果、時間積分値SDVoxsを、収束値SDVoxs1近傍の値に安定して推移させることができる。
【０１８７】
以上のように、時間積分値SDVoxsの変化速度が３段階に分けて設定・変更されることで、外乱が発生する場合であっても、収束値SDVoxs1から大きく偏移していた時間積分値SDVoxsが迅速且つ精度よく収束値SDVoxs1に近づき得る。即ち、上記値dVから大きく偏移していた積分項Ki・SDVoxsが迅速且つ精度よく上記値dVに近づき得る。この結果、空燃比センサ６６の誤差を早期に精度よく補償することができる。
【０１８８】
（第１実施形態の変形例）
次に、上記第１実施形態の変形例について説明する。上述したように、空燃比センサ６６の酸素に対する感度が大きいことに起因して、失火率が増大（又は、減少）した場合、失火率の増大後（減少後）の収束値SDVoxs1は、失火率の増大前（減少前）のものからリーン（リッチ）方向へ偏移する。即ち、失火率が変化することにより時間積分値SDVoxsは、収束値SDVoxs1から大きく偏移し得、この偏移の程度は失火率の変化が大きいほどより大きくなる。なお、この失火率の変化による、時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度は、上述したバッテリ交換に起因するものに比して大きい場合が多い。
【０１８９】
このことから、この変形例は、失火率の変化が大きい場合に、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいと判定する点についてのみ、上記第１実施形態と異なる。より具体的には、この変形例は、図８に代えて、図８に対応する図１３に示したフローチャートを実行する点についてのみ、上記第１実施形態と異なる。以下、上記第１実施形態と異なる点のみについて説明する。
【０１９０】
図１３のフローチャートは、図８のフローチャートのステップ８０５〜８２５が削除され、新たにステップ１３０５〜１３２０が追加された点においてのみ図８のものと異なる。なお、図１３において、図８のステップと同じものについては、同一のステップ番号を付して説明を省略する。
【０１９１】
本変形例にかかる空燃比制御装置の実際の作動について説明する。ＣＰＵ７１がステップ８３０にて「Ｙｅｓ」と判定した場合、ステップ１３０５に進んで失火率変化ΔRmisが第１失火率変化ΔRmis1よりも大きいか否かを判定する。ここで、本例では、失火率は、所定回数の燃料噴射がなされた期間内に発生する失火の回数の、上記所定回数に対する割合を意味しており、運転速度NEの変化等に基づいて別途取得される。また、失火率変化ΔRmisは、このように取得される失火率の所定期間における変動幅（絶対値）である。更に、第１失火率変化ΔRmis1は、時間積分値SDVoxsの変化速度が設定され得る最小の値（本例では、step3にて設定される変化速度、上記小さい変化速度。）である場合に、所定期間における空燃比の荒れの程度が適正範囲内となる失火率変化ΔRmisの範囲の最大値である。
【０１９２】
ＣＰＵ７１がステップ１３０５にて「Ｙｅｓ」と判定する場合、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいとして、続くステップ１３１０，１３１５に順に進んで、stepを「１」に設定・更新してカウンタIをクリアする。次に、ＣＰＵ７１はステップ１３２０に進んで、テーブルMapIref(ΔRmis)に基づいてstep1更新回数目標値Irefを設定する。
【０１９３】
図１４は、失火率変化ΔRmisと、step1更新回数目標値Irefとの関係を規定したテーブルMapIref(ΔRmis)を示している。これによれば、失火率変化ΔRmisが、第１失火率変化ΔRmis1よりも大きく、且つ、第２失火率変化ΔRmis2(＞ΔRmis1)以下である場合、step1更新回数目標値Irefがゼロに設定される。ここで、第２失火率変化ΔRmis2は、以下の条件を満たす失火率変化ΔRmisの範囲内の最大値である。この条件は、時間積分値SDVoxsの変化速度がstep1にて設定される変化速度（上記大きいの変化速度）と等しい値である場合におけるＦＣ後リッチ制御に起因する上記リーンずれの程度（の絶対値）の最大値が、失火率の変化に起因する時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度（の絶対値）よりも大きい、というものである。
【０１９４】
従って、失火率変化ΔRmisが、ΔRmis1＜ΔRmis≦ΔRmis2の条件を満たす場合、図１３のステップ１３２０にてstep1更新回数目標値Irefがゼロに設定される。このため、ＣＰＵ７１がステップ８４０に進んだとき、「Ｎｏ」と判定してステップ８５０に進みstepを「２」に設定する。この場合、step1が実質的に省略されて、step2から時間積分値SDVoxsを収束値SDVoxs1に近づけるための制御が開始される。これは、失火率変化ΔRmisが、ΔRmis1＜ΔRmis≦ΔRmis2の条件を満たす場合には、step1を経るまでもなく、時間積分値SDVoxsが収束値SDVoxs1にある程度近い値に推移している場合が多いことに基づく。この結果、不必要に変化速度を大きい値に設定することが回避され得る。
【０１９５】
再び図１４を参照すると、失火率変化ΔRmisが、第２失火率変化ΔRmis2よりも大きい場合、step1更新回数目標値Irefが、失火率変化ΔRmisが大きいほどより大きい値に設定される。従って、失火率変化ΔRmisが、第２失火率変化ΔRmis2よりも大きい場合、ステップ８４０にて、失火率変化ΔRmisの大きさに応じて設定されたstep1更新回数目標値Irefにより判定がなされる。このため、step1の区間（即ち、変化速度が大きい値に設定される機会）も失火率変化ΔRmisが大きいほどより大きくなる。この結果、失火率変化ΔRmisの大きさに依存することなく、時間積分値SDVoxsを収束値SDVoxs1に迅速に近づけることができる。
【０１９６】
更に、この変形例では、図９のフローチャートにて設定される調整値K、及び更新禁止回数Lが、stepが「１」に設定・更新された場合にのみ失火率変化ΔRmisにも応じて調整される。より具体的には、stepが「１」に設定・更新された場合、ＣＰＵ７１が図９のステップ９１０に進んだとき、図１５に示した失火率変化ΔRmis及び最大酸素吸蔵量Cmaxと、調整値Kとの関係を規定したテーブルMapK(ΔRmis,Cmax)に基づいて調整値Kを設定する。一方、stepが「２」又は「３」に設定・更新された場合には、図１６に示した最大酸素吸蔵量Cmax及び設定されているstepと、調整値Kとの関係を規定したテーブルMapK(Cmax,step)に基づいて調整値Kを設定する。
【０１９７】
また、stepが「１」に設定されている場合、ＣＰＵ７１が図９のステップ９２０に進んだとき、図１７に示した失火率変化ΔRmis及び最大酸素吸蔵量Cmaxと、更新禁止回数Lとの関係を規定したテーブルMapL(ΔRmis,Cmax)に基づいて更新禁止回数Lを設定する。一方、stepが「２」又は「３」に設定されている場合には、図１８に示した最大酸素吸蔵量Cmax及び設定されているstepと、更新禁止回数Lとの関係を規定したテーブルMapL(Cmax,step)に基づいて更新禁止回数Lを設定する。
【０１９８】
図１５に示したテーブルMapK(ΔRmis,Cmax)によれば、上記第１実施形態と同様、調整値Kは、最大酸素吸蔵量Cmaxが大きいほどより小さい値に設定される。また、調整値Kは、失火率変化ΔRmisが大きいほどより大きい値に設定される。図１７に示したテーブルMapL(ΔRmis,Cmax)によれば、上記第１実施形態と同様、更新禁止回数Lは、最大酸素吸蔵量Cmaxが大きいほどより大きい値に設定される。また、更新禁止回数Lは、失火率変化ΔRmisが大きいほどより小さい値に設定される。これらは、失火率変化ΔRmisが大きいほど、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいため、時間積分値SDVoxsの変化速度をより大きい値に設定する要求が大きいことに基づく。
【０１９９】
なお、図１６、及び図１８のテーブルは、図１０、及び図１１のテーブルからそれぞれstep1についての値を削除したものと同じである。
【０２００】
一方、ＣＰＵ７１がステップ１３０５にて「Ｎｏ」と判定する場合、直ちにステップ８３５に進んでステップ処理を実行していく。
【０２０１】
以上説明したように、上記第１実施形態の変形例によれば、失火率が変化することで時間積分値SDVoxsが収束値SDVoxs1から大きく偏移する場合であっても、時間積分値SDVoxsを収束値SDVoxs1に迅速且つ精度よく収束値SDVoxs1に近づけることができる。      
【０２０２】
本変形例においては、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいと判定される場合として、失火率変化ΔRmisが第１失火率変化ΔRmis1よりも大きい場合のみが用いられているが、これに加え、バッテリ交換があった場合にも上記判定がなされるように構成されてもよい。
【０２０３】
また、本変形例では、step1である場合においてのみ、失火率変化ΔRmisにも基づいて調整値K及び更新禁止回数Lが設定されていたが、step2,step3である場合においても、失火率変化ΔRmisが大きいほど、調整値K（及び更新禁止回数L）をより大きい値（より小さい値）に設定してもよい。
【０２０４】
（第２実施形態）
次に、本発明の第２実施形態に係る空燃比制御装置について説明する。この第２実施形態は、以下の２点についてのみ上記第１実施形態と異なる。第１に、step1にて、ＦＣ制御が実行された場合にＦＣ後リッチ制御の実行が禁止される。第２に、「１」に設定されていたstepが「２」に変更されたときに、時間積分値SDVoxsが、時間積分値SDVoxsから所定量ΔIだけ減量された値に更新される。以下、上記第１実施形態と異なる点のみについて説明する。
【０２０５】
図１９は、step1における各種変数の変化を示す、図５に対応するタイムチャートである。本例では、step1にてＦＣ後リッチ制御の実行が禁止されるため、ＦＣ制御が終了する時刻ｔＢ以降、ＦＢ制御により燃料噴射量Fiがリッチ方向に補正される。これにより、上流側触媒５３の酸素吸蔵量OSAが比較的緩やかに減少していく。そして、酸素吸蔵量OSAがほぼゼロとなってから、リーンを示す値に維持されていた酸素濃度センサ６７の出力値Voxsがリッチを示す値に反転する（時刻ｔＤを参照）。
【０２０６】
従って、時刻ｔＥ以降、時間積分値SDVoxsの１回あたりの更新量K・DVoxs（＝K・(Voxsref−Voxs)）が正の値となり、時間積分値SDVoxsが増大していく。即ち、時間積分値SDVoxsは、ＦＣ後リッチ制御が禁止されることにより上記収束値SDVoxs1から燃料噴射量Fiが増大する方向へ偏移していく（時間積分値SDVoxsがリッチずれしていく）。
【０２０７】
ここで、時刻ｔＢにおいては、酸素吸蔵量OSAが最大酸素吸蔵量Cmaxとなっている場合が多い。従って、最大酸素吸蔵量Cmaxが一定である場合、時刻ｔＢ〜ｔＤの期間が略一定となり得る（即ち、時刻ｔＥ〜ｔＤの期間が略一定となり得る）。このため、時間積分値SDVoxsの変化速度も一定の場合、時刻ｔＢ〜ｔＤの期間における時間積分値SDVoxsのリッチずれの程度も略一定となり得る。
【０２０８】
また、最大酸素吸蔵量Cmaxが上記値Cmax1である場合（図１９の実線を参照）、時刻ｔＢ〜ｔＤの期間が長い。従って、時刻ｔＢ〜ｔＤの期間における時間積分値SDVoxsのリッチずれの程度も大きくなり得る。更に、時刻ｔＤに時刻ｔＦが近づき易いため時間積分値SDVoxsの減少程度は小さいものとなり得る。このため、時間積分値SDVoxsのリッチずれの程度は平均的に大きい。
【０２０９】
一方、最大酸素吸蔵量Cmaxが上記値Cmax2（＜Cmax1）である場合（図１９の破線を参照）、時刻ｔＢから酸素濃度センサ６７の出力値Voxsがリッチを示す値に反転する時刻ｔＨまでの期間が短い。従って、時刻ｔＢ〜ｔＨの期間における時間積分値SDVoxsのリッチずれの程度も小さくなり得る。更に、時刻ｔＨ〜ｔＦの期間が長くなり易いため時間積分値SDVoxsの減少程度はある程度大きいものとなり得る。このため、時間積分値SDVoxsのリッチずれの程度は平均的に小さい。
【０２１０】
このように、step1にてＦＣ後リッチ制御の実行が禁止されると、時間積分値SDVoxsの収束値SDVoxs1からのリッチずれが発生する。また、このリッチずれの程度は、上流側触媒５３の最大酸素吸蔵量Cmaxが大きいほどより大きくなる。
【０２１１】
図２０は、第２実施形態にかかる空燃比制御装置による制御が実行された場合における時間積分値SDVoxsの変化の一例を示した、図６に対応するタイムチャートである。この実施形態では、step1においてのみＦＣ後リッチ制御の実行が禁止される。このため、step1において時間積分値SDVoxsがリッチずれし得る。そして、stepが「１」から「２」に変更されたとき、時間積分値SDVoxsが、時間積分値SDVoxsから所定量ΔIだけ減量された値に更新される。
【０２１２】
次に、第２実施形態にかかる空燃比制御装置の実際の作動について説明する。この第２実施形態は、図７、及び図１２に代えて、図７及び図１２にそれぞれ対応する図２１に示したフローチャート、及び図２３に示したフローチャートを実行する点についてのみ、上記第１実施形態と異なる。
【０２１３】
図２１のフローチャートは、図７のフローチャートに、新たにステップ２１０５〜２１１５が追加された点においてのみ図７のものと異なる。なお、図２１において、図７のステップと同じものについては、同一のステップ番号を付して説明を省略する。
【０２１４】
従って、ＣＰＵ７１がステップ７１５にて「Ｙｅｓ」と判定した場合、ステップ２１０５に進んで、現時点が「１」に設定されていたstepが「２」に設定・変更された直後か否かを判定する。ステップ２１０５にて「Ｙｅｓ」と判定された場合、ＣＰＵ７１はステップ２１１０に進んで上記所定量ΔIをテーブルMapΔI(Cmax)に基づいて設定する。
【０２１５】
図２２は、上流側触媒５３の最大酸素吸蔵量Cmaxと、所定量ΔIとの関係を規定したテーブルMapΔI（Cmax）を示している。この所定量ΔIは、本例では、時間積分値SDVoxsの変化速度、及びＦＣ制御の頻度を一定とした場合における時間積分値SDVoxsの変動幅の最大値であって、予め実験、シミュレーション等により得られる値である。これによれば、所定量ΔIが、最大酸素吸蔵量Cmaxが大きいほどより大きい値に設定される。上述したように、時間積分値SDVoxsのリッチずれの程度は、最大酸素吸蔵量Cmaxが大きいほどより大きくなる。このように所定量ΔIが設定されるのは、stepが「１」から「２」へ変更される際、最大酸素吸蔵量Cmaxの大きさに依存することなく時間積分値SDVoxsを収束値SDVoxs1に近づけるためである。
【０２１６】
次に、ＣＰＵ７１はステップ２１１５に進んで、時間積分値SDVoxsを、現時点における時間積分値SDVoxsから上述したステップ２１１０にて設定された所定量ΔIを減じた値に更新（変更）する。次いで、ＣＰＵ７１はステップ７２５に進み、ステップ２１１５にて更新された時間積分値SDVoxsを用いて下流側フィードバック補正値Vafsfbを計算する。即ち、この場合、上記式(4)に基づく時間積分値SDVoxsの更新が行われない。一方、ステップ２１０５にて「Ｎｏ」と判定された場合、ＣＰＵ７１はステップ７２０に進んで上記式(4)に基づいて時間積分値SDVoxsを更新し、続くステップ７２５に進んでステップ７２０にて更新された時間積分値SDVoxsを用いて下流側フィードバック補正値Vafsfbを計算する。
【０２１７】
また、図２３のフローチャートは、図１２のフローチャートに、新たにステップ２３０５が追加された点においてのみ図１２のものと異なる。なお、図２３において、図１２のステップと同じものについては、同一のステップ番号を付して説明を省略する。
【０２１８】
従って、ＣＰＵ７１がステップ２３０５に進んだとき、設定されているstepが「１」であるか否かを判定する。ステップ２３０５にて「Ｙｅｓ」と判定された場合、ＣＰＵ７１はステップ２３９５に直ちに進んで本ルーチンを一旦終了する。即ち、この場合、ＦＣ制御が実行されるか否かにかかわらずＦＣ後リッチ制御の実行が禁止される。一方、ステップ２３０５にて「Ｎｏ」と判定された場合、ＣＰＵ７１はＦＣ後リッチ制御を実行するためのステップ処理が実行されていく。
【０２１９】
以上説明したように、本発明による内燃機関の空燃比制御装置の第２実施形態によれば、step1においてはＦＣ制御が実行される場合であってもＦＣ後リッチ制御の実行が禁止される。このため、時間積分値SDVoxsの収束値SDVoxs1からのリッチずれが発生し得る。そして、「１」に設定されていたstepが「２」に変更されたとき、時間積分値SDVoxsが、リッチずれしている時間積分値SDVoxsから、予想されるリッチずれの程度を考慮した所定量ΔIを減じた値に更新（変更）される。従って、step2の始期には、時間積分値SDVoxsを収束値SDVoxs1にある程度近づけることができる。この結果、上記第１実施形態と同様の効果を奏し得る。
【０２２０】
本発明は上記各実施形態に限定されることなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記第２実施形態においては、上記第１実施形態と同様、step1にて更新禁止回数Lが最大酸素吸蔵量Cmaxに基づいて設定されていたが（図９、図１１、及びテーブルMapL(Cmax,step)を参照）、これに代えて、step1にて更新禁止回数Lがゼロとなるように構成されてもよい。
【０２２１】
また、上記第２実施形態においては、時間積分値SDVoxsの収束値SDVoxs1からの偏移が大きいと判定される場合として、バッテリ交換により時間積分値SDVoxsがクリアされた場合が用いられているが、これに代えて、又は、これに加えて、失火率変化ΔRmisが上記第１失火率変化ΔRmis1よりも大きい場合が用いられてもよい。更に、上記第１、第２実施形態においては、上記判定される場合として、空燃比センサ６６の検出部に所定量以上の水素が到達すると判定される場合や、各気筒における排ガスの空燃比のばらつき度合いが所定の度合いよりも大きいと判定される場合が用いられてもよい。
【０２２２】
加えて、上記第１、第２実施形態においては、時間積分値SDVoxsの更新回数に基づいてstep1からstep2へ切換えるか否かが判定され、時間積分値SDVoxsの変動幅ΔSDVoxsに基づいてstep2からstep3へ切換えるか否かが判定されていたが、これに代えて、step1における酸素濃度センサ６７の出力値Voxsの総反転回数が所定の回数に到達したと判定された場合にstep1からstep2へ切換え、step2における上記総反転回数が所定の回数に到達したと判定された場合にstep2からstep3へ切換えるようにしてもよい。
【０２２３】
（第３実施形態）
次に、本発明の第３実施形態にかかる空燃比制御装置について説明する。この第３実施形態は、時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度が大きいか否かを逐次判定し、偏移の程度が大きいと判定される場合、時間積分値SDVoxsの変化速度をより大きい値に変更するとともに判定基準を緩和する。一方、上記偏移の程度が小さいと判定される場合には、時間積分値SDVoxsの変化速度をより小さい値に変更するとともに判定基準を厳しくする。
【０２２４】
より具体的には、この第３実施形態は、図８及び図９に代えて、図２４に示したフローチャートを実行し、図１２に代えて、図１２に対応する図２７に示したフローチャートを実行する点についてのみ、上記第１実施形態と異なる。
【０２２５】
また、図２５は、第３実施形態にかかる空燃比制御装置による制御が実行された場合における各種変数の変化を示したタイムチャートである。以下、図２４に示したフローチャート、及び図２５に示したタイムチャートを参照しながら、第３実施形態の上記第１実施形態と異なる点についてのみ説明する。
【０２２６】
図２４は、調整値K、更新禁止回数L、及び判定値Aを設定する際のフローチャートを示している。ＣＰＵ７１は図２４にフローチャートにより示したルーチンを、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来する毎に、繰り返し実行するようになっている。
【０２２７】
従って、内燃機関１０の始動時点以降、吸気行程を迎える気筒について燃料噴射開始時点が到来すると、ＣＰＵ７１はステップ２４００から処理を開始してステップ２４０５に進み、ＦＢ制御が許可(On)されており、且つ、時間積分値SDVoxsの更新が許可(On)されているか否かを判定する。
【０２２８】
ステップ２４０５にて「Ｎｏ」と判定された場合、ＣＰＵ７１は直ちにステップ２４９５に進んで本ルーチンを一旦終了する。一方、ステップ２４０５にて「Ｙｅｓ」と判定された場合、ＣＰＵ７１は直ちにステップ２４１０に進んで、図７のルーチンにて更新されている時間積分値SDVoxsの最新値から後述するステップにて更新される基準値SDVoxsstdを減じた値の絶対値が、判定値A以下であるか否かを判定する。
【０２２９】
いま、上記値｜SDVoxs−SDVoxsstd｜が判定値A以下であるものとすると、ＣＰＵ７１はステップ２４１０にて「Ｙｅｓ」と判定してステップ２４１５に進んで、カウンタJをインクリメントする。次に、ＣＰＵ７１はステップ２４２０に進んで、ステップ２４２０内に記載の式に基づいて応答遅れ処理値SDVoxslowを更新する。ここにおいて、図７のルーチンにて更新されている時間積分値SDVoxsの最新値と、前回の本ルーチン実行時にて更新された応答遅れ処理値SDVoxslowとが用いられる。また、値「1/k」（＜１）は、応答遅れの度合いを表す値であって、本例では一定である。
【０２３０】
次いで、ＣＰＵ７１はステップ２４２５に進み、カウンタJが安定目標値Jrefよりも小さいか否かを判定する。ここにおいて、安定目標値Jrefは、本例では、時間積分値SDVoxsが安定していると判定され得るカウント数の範囲の最小値である。いま、カウンタJが安定目標値Jrefよりも小さいものとすると、ＣＰＵ７１はステップ２４２５にて「Ｙｅｓ」と判定してステップ２４９５に直ちに進んで、本ルーチンを一旦終了する。以降、ＣＰＵ７１はステップ２４５０，２４１０〜２４２５の処理を繰り返し実行する。これにより、カウンタJがインクリメントされていく。また、この場合、時間積分値SDVoxsの変化速度は変更されない。
【０２３１】
ここで、カウンタJが安定目標値Jrefに達する時点よりも前の時刻である、図２５の時刻ｔａにて、上記値｜SDVoxs−SDVoxsstd｜が判定値Aよりも大きくなるものとする（図２５の実線、及び２点鎖線を参照）。従って、時刻ｔａが到来すると、本ルーチンを繰り返し実行していたＣＰＵ７１はステップ２４１０に進んだとき、「Ｎｏ」と判定してステップ２４３０に進んで応答遅れ処理値SDVoxslowを図７のルーチンにて更新されている時間積分値SDVoxsの最新値と等しい値に設定する。この判定は、時間積分値SDVoxs（及び基準値SDVoxsstd）の収束値SDVoxs1からの偏移の程度が大きいということを意味しており、前記第１判定に対応している。
【０２３２】
次に、ＣＰＵ７１はステップ２４３５に進んで、基準値SDVoxsstdを上記時間積分値SDVoxsの最新値と等しい値に設定する。次いで、ＣＰＵ７１はステップ２４４０に進み、触媒調整値a（＞１）を図２６に示すテーブルMapa(Cmax)に基づいて設定する。このテーブルMapa(Cmax)によれば、上記触媒調整値aが、上流側触媒５３の最大酸素吸蔵量Cmaxが大きいほどより小さい値に設定される。
【０２３３】
続いて、ＣＰＵ７１はステップ２４４５に進んで、前回更新された調整値Kに、上述したステップ２４４０にて設定された触媒調整値aを乗じることで調整値Kを更新する。次に、ＣＰＵ７１はステップ２４５０に進んで、前回更新された更新禁止回数Lを、上記設定された触媒調整値aで除することで、更新禁止回数Lを更新する。次いで、ＣＰＵ７１はステップ２４５５に進み、前回更新された判定値Aに、上記設定された触媒調整値aを乗じることで判定値Aを更新する。そして、ＣＰＵ７１はステップ２４６０に進み、カウンタJをクリアした後、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０２３４】
このように、図２５の時刻ｔａ到来後においては、時刻ｔａ到来前に比して、調整値Kがより大きい値に変更されるとともに、更新禁止回数Lがより小さい値に変更される。これにより、時間積分値SDVoxsの変化速度もより大きい値に変更される。また、判定値Aもより大きい値に変更されることにより、ステップ２４１０での判定基準がより緩和される。時刻ｔａ以降、ルーチンを繰り返し実行しているＣＰＵ７１がステップ２４１０にて「Ｎｏ」と判定する毎に、時間積分値SDVoxsの変化速度、及び判定値Aがより大きい値に変更されていく。
【０２３５】
また、基準値SDVoxsstdは、ステップ２４１０における「Ｎｏ」の判定がなされたときから、次にこの判定がなされるときまでの間一定の値に維持される（図２５の破線を参照）。従って、上記判定がなされるときには、時間積分値SDVoxsが、基準値SDVoxsstd（及び、応答遅れ処理値SDVoxslow）に比して収束値SDVoxs1に近接している度合いが大きい。このため、上記判定毎に、基準値SDVoxsstdが時間積分値SDVoxsと等しい値に更新されることにより、基準値SDVoxsstdが収束値SDVoxs1に迅速に近づいていく。これに伴って、時間積分値SDVoxsも収束値SDVoxs1に迅速に近づいていく。
【０２３６】
ここで、図２５の時刻ｔｂにて、カウンタJが安定目標値Jrefに達するものとする（即ち、この場合｜SDVoxs−SDVoxsstd｜≦A）。従って、時刻ｔｂが到来すると、本ルーチンを繰り返し実行していたＣＰＵ７１はステップ２４２５に進んだとき、「Ｎｏ」と判定してステップ２４６５に進んで基準値SDVoxsstdをステップ２４２０にて更新されている応答遅れ処理値SDVoxslowの最新値と等しい値に設定する。この判定は、時間積分値SDVoxs（及び基準値SDVoxsstd）の収束値SDVoxs1からの偏移の程度が小さいということを意味しており、前記第２判定に対応する。
【０２３７】
次いで、ＣＰＵ７１はステップ２４７０に進み、触媒調整値aを上記テーブルMapa(Cmax)に基づいて設定する。続いて、ＣＰＵ７１はステップ２４７５に進んで、前回更新された調整値Kを、上述したステップ２４７０にて設定された触媒調整値aで除することで、調整値Kを更新する。次に、ＣＰＵ７１はステップ２４８０に進んで、前回更新された更新禁止回数Lに、上記設定された触媒調整値aを乗じることで、更新禁止回数Lを更新する。次いで、ＣＰＵ７１はステップ２４８５に進み、前回更新された判定値Aを、上記設定された触媒調整値aで除することで、判定値Aを更新する。そして、ＣＰＵ７１はステップ２４９０に進み、カウンタJをクリアした後、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０２３８】
このように、図２５の時刻ｔｂ到来後においては、時刻ｔｂ到来前に比して、調整値Kがより小さい値に変更されるとともに、更新禁止回数Lがより大きい値に変更される。これにより、時間積分値SDVoxsの変化速度も小さい値に変更される。また、判定値Aもより小さい値に変更されることにより、ステップ２４１０での判定基準がより厳しくされる。時刻ｔｂ以降、ルーチンを繰り返し実行しているＣＰＵ７１がステップ２４２５にて「Ｎｏ」と判定する毎に、時間積分値SDVoxsの変化速度、及び判定値Aがより小さい値に変更されていく。
【０２３９】
また、基準値SDVoxsstdは、ステップ２４２５における「Ｎｏ」の判定がなされたときから、次にこの判定がなされるときまでの間も一定の値に維持される。従って、上記判定がなされるときには、応答遅れ処理値SDVoxslowが、基準値SDVoxsstd（及び、時間積分値SDVoxs）に比して収束値SDVoxs1に近接している度合いが大きい。このため、上記判定毎に、基準値SDVoxsstdが応答遅れ処理値SDVoxslowと等しい値に更新されることにより、基準値SDVoxsstdが収束値SDVoxs1近傍の値に安定して推移する。これに伴って、時間積分値SDVoxsも収束値SDVoxs1近傍の値に安定して推移する。
【０２４０】
そして、時刻ｔｂ以降、カウンタJが安定目標値Jrefに達する時点よりも前に、再び上記値｜SDVoxs−SDVoxsstd｜＞Aとなる事態が発生した場合（即ち、収束値SDVoxs1が変化して、時間積分値SDVoxsが収束値SDVoxs1から偏移する事態が発生した場合、 図２５の時刻ｔｃを参照）、再び調整値K、更新禁止回数L、及び判定値Aが、より大きい値、より小さい値、及びより大きい値にそれぞれ変更される。その後、上述した変化と同様の変化を経て、時間積分値SDVoxsは変化後の収束値SDVoxs1に近づいていく。
【０２４１】
なお、本例では、最大酸素吸蔵量Cmaxが大きいほど触媒調整値aがより小さい値に設定される（図２６を参照）。このため、最大酸素吸蔵量Cmaxが大きいほど、調整値K、及び更新禁止回数Lの変更時における、これらの変化度合いがより小さくされる。即ち、最大酸素吸蔵量Cmaxが大きいほど、時間積分値SDVoxsの変化速度の増大度合い（又は、減少度合い）がより小さくされる。これは、最大酸素吸蔵量Cmaxの大きさに依存することなく、上記ＦＣ後リッチ制御による時間積分値SDVoxsのリーンずれの程度が大きくなることを抑制するためである。
【０２４２】
また、本例では、上述したように図２７のフローチャートが実行される。これは、図１２のフローチャートのステップ１２２０，１２２５，１２３０の部分を、ステップ２７０５に代えたフローチャートと同じである。これにより、最大酸素吸蔵量Cmaxのみに応じて設定され得る。ここにおいて、値αは、値「Cmax・α」が適切にＮＯｘを浄化し得る範囲内の値となるように調整される値であって、本例では一定である。
【０２４３】
以上説明したように、本発明による内燃機関の空燃比制御装置の第３実施形態によれば、時間積分値SDVoxs、基準値SDVoxsstd、及び判定値Aが利用されて時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度が大きいか否かが判定される。｜SDVoxs−SDVoxsstd｜＞Aと判定される毎に、時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度が大きいとして、時間積分値SDVoxsの変化速度及び判定値Aがより大きい値に変更される。また、基準値SDVoxsstdが時間積分値SDVoxsと等しい値に設定される。これにより、基準値SDVoxsstdが収束値SDVoxs1に迅速に近づくのに伴い、時間積分値SDVoxsも収束値SDVoxs1に迅速に近づき得る。
【０２４４】
一方、｜SDVoxs−SDVoxsstd｜≦Aと判定される回数が安定目標値Jrefに対応する回数に達する毎に、時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度が小さいとして、時間積分値SDVoxsの変化速度及び判定値Aがより小さい値に変更される。また、基準値SDVoxsstdが応答遅れ処理値SDVoxslowと等しい値に設定される。これにより、基準値SDVoxsstdが収束値SDVoxs1近傍の値に安定して推移するのに伴い、時間積分値SDVoxsも収束値SDVoxs1近傍の値に安定して推移し得る。
【０２４５】
以上のことから、時間積分値SDVoxsの収束値SDVoxs1からの偏移の程度を表す値に基づくことなく、適切に時間積分値SDVoxsの変化速度が変更され得、この結果、上記第１実施形態と同様の効果を奏し得る。
【０２４６】
本発明は上記各実施形態に限定されることなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記第３実施形態においては、同一の触媒調整値aを用いて調整値K、更新禁止回数L、及び判定値Aをそれぞれ更新しているが、これに代えて、触媒調整値をa1,a2,a3の３つに異ならせてそれぞれが、調整値K、更新禁止回数L、及び判定値Aの更新に用いられてもよい。この場合、触媒調整値a1,a2,a3は最大酸素吸蔵量Cmaxが大きいほどより小さい値にそれぞれ設定されると好適である。
【０２４７】
また、上記第１〜第３実施形態においては、積分ゲインKiを一定として調整値Kを変更することで時間積分値SDVoxsの１回あたりの更新量「K・DVoxs」を調整して時間積分値SDVoxsの変化速度（即ち、積分項Ki・SDVoxsの変化速度）を変更していたが、これに代えて、時間積分値SDVoxsの１回あたりの更新量を「DVoxs」（略一定）として、積分ゲインKiを変更することで積分項Ki・SDVoxsの変化速度を変更してもよい。この場合、積分ゲインKiは、調整値Kの変更・設定に対応するように変更・設定されると好適である。
【０２４８】
また、上記第１〜第３実施形態においては、時間積分値SDVoxsの１回あたりの更新量が出力偏差量DVoxsに調整値Kを乗じた値「K・DVoxs」とされていたが、これに代えて、時間積分値SDVoxsの１回あたりの更新量が出力偏差量DVoxsに調整値Kを加えた値「K＋DVoxs」とされてもよい。この場合、出力偏差量DVoxsが正の値（負の値）であるときには、調整値Kが正の値（負の値）に設定され、調整値Kの絶対値が大きい値に設定されることで時間積分値SDVoxsの変化速度が大きい値に設定されると好適である。
【０２４９】
また、上記第１〜第３実施形態においては、更新禁止回数LがＦＣ後リッチ制御の実行期間に対応する燃料噴射回数よりも大きい値に設定されていたが、これに代えて、更新禁止回数Lが上記対応する燃料噴射回数と等しい値に設定されてもよい。また、最大酸素吸蔵量Cmaxが大きいほど、更新禁止回数L及び上記対応する燃料噴射回数がより大きい値にそれぞれ設定されていたが（即ち、更新禁止回数Lが上記対応する燃料噴射回数に連動して設定されていたが）、これに代えて、更新禁止回数LがＦＣ後リッチ制御の実行期間に対応する燃料噴射回数に連動することなく設定されてもよい。
【０２５０】
加えて、上記第１〜第３実施形態においては、時間積分値SDVoxsの１回あたりの更新量を変更することで時間積分値SDVoxsの変化速度を変更していたが、これに代えて、上記１回あたりの更新量を一定として、時間積分値SDVoxsの更新間隔の時間を変更することにより変化速度を変更してもよい。この場合、上記更新間隔の時間が短い時間に設定されることで時間積分値SDVoxsの変化速度が大きい値に設定されると好適である。
【図面の簡単な説明】
【０２５１】
【図１】本発明の第１実施形態にかかる空燃比制御装置を内燃機関に適用したシステムの概略構成図である。
【図２】図１に示した空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図３】図１に示した酸素濃度センサの出力電圧と空燃比との関係を示したグラフである。
【図４】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際の機能ブロック図である。
【図５】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際、フューエルカット制御及びフューエルカット後リッチ制御に起因して時間積分値のリーンずれが発生する様子を示したタイムチャートである。
【図６】図１に示した空燃比制御装置が時間積分値の収束値からの偏移が大きいと判定した場合に実行する制御の概要を説明するためのタイムチャートである。
【図７】図１に示したＣＰＵが実行する下流側フィードバック補正値を計算するためのルーチンを示したフローチャートである。
【図８】図１に示したＣＰＵが実行するstepを設定するためのルーチンを示したフローチャートである。
【図９】図１に示したＣＰＵが実行する調整値、及び更新禁止回数を設定するためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが参照する最大酸素吸蔵量及びstepと、調整値との関係を規定するテーブルを示したグラフである。
【図１１】図１に示したＣＰＵが参照する最大酸素吸蔵量及びstepと、更新禁止回数との関係を規定するテーブルを示したグラフである。
【図１２】図１に示したＣＰＵが実行するフューエルカット後リッチ制御を実行するためのルーチンを示したフローチャートである。
【図１３】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが実行するstepを設定するためのルーチンを示したフローチャートである。
【図１４】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが参照する失火率変化とstep1更新回数目標値との関係を規定するテーブルを示したグラフである。
【図１５】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが参照する失火率変化及び最大酸素吸蔵量と、調整値との関係を規定するテーブルを示したグラフである。
【図１６】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが参照する最大酸素吸蔵量及びstepと、調整値との関係を規定するテーブルを示したグラフである。
【図１７】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが参照する失火率変化及び最大酸素吸蔵量と、更新禁止回数との関係を規定するテーブルを示したグラフである。
【図１８】本発明の第１実施形態の変形例にかかる空燃比制御装置のＣＰＵが参照する最大酸素吸蔵量及びstepと、更新禁止回数との関係を規定するテーブルを示したグラフである。
【図１９】本発明の第２実施形態にかかる空燃比制御装置が空燃比フィードバック制御を実行する際、フューエルカット制御に起因して時間積分値のリッチずれが発生する様子を示したタイムチャートである。
【図２０】本発明の第２実施形態にかかる空燃比制御装置が時間積分値の収束値からの偏移が大きいと判定した場合に実行する制御の概要を説明するためのタイムチャートである。
【図２１】本発明の第２実施形態にかかる空燃比制御装置のＣＰＵが実行する下流側フィードバック補正値を計算するためのルーチンを示したフローチャートである。
【図２２】本発明の第２実施形態にかかる空燃比制御装置のＣＰＵが参照する最大酸素吸蔵量と、step1からstep2への移行時に時間積分値から減じる量との関係を規定するテーブルを示したグラフである。
【図２３】本発明の第２実施形態にかかる空燃比制御装置のＣＰＵが実行するフューエルカット後リッチ制御を実行するためのルーチンを示したフローチャートである。
【図２４】本発明の第３実施形態にかかる空燃比制御装置のＣＰＵが実行する調整値、更新禁止回数、及び判定値を設定するためのルーチンを示したフローチャートである。
【図２５】本発明の第３実施形態にかかる空燃比制御装置が空燃比フィードバック制御を実行する際の各種変数の変化の一例を示したタイムチャートである。
【図２６】本発明の第３実施形態にかかる空燃比制御装置のＣＰＵが参照する最大酸素吸蔵量と、触媒調整値との関係を規定するテーブルを示したグラフである。
【図２７】本発明の第３実施形態にかかる空燃比制御装置のＣＰＵが実行するフューエルカット後リッチ制御を実行するためのルーチンを示したフローチャートである。
【符号の説明】
【０２５２】
１０…内燃機関、３９…燃料噴射弁、５２…エキゾーストパイプ、５３…上流側触媒、６６…空燃比センサ（上流側空燃比センサ）、６７…酸素濃度センサ（下流側空燃比センサ）、７０…電気制御装置、７１…ＣＰＵ
【図１】
0004957559.tif 000002
【図２】
0004957559.tif 000003
【図３】
0004957559.tif 000004
【図４】
0004957559.tif 000005
【図５】
0004957559.tif 000006
【図６】
0004957559.tif 000007
【図７】
0004957559.tif 000008
【図８】
0004957559.tif 000009
【図９】
0004957559.tif 000010
【図１０】
0004957559.tif 000011
【図１１】
0004957559.tif 000012
【図１２】
0004957559.tif 000013
【図１３】
0004957559.tif 000014
【図１４】
0004957559.tif 000015
【図１５】
0004957559.tif 000016
【図１６】
0004957559.tif 000017
【図１７】
0004957559.tif 000018
【図１８】
0004957559.tif 000019
【図１９】
0004957559.tif 000020
【図２０】
0004957559.tif 000021
【図２１】
0004957559.tif 000022
【図２２】
0004957559.tif 000023
【図２３】
0004957559.tif 000024
【図２４】
0004957559.tif 000025
【図２５】
0004957559.tif 000026
【図２６】
0004957559.tif 000027
【図２７】
0004957559.tif 000028