(57)【要約】【課題】ドライバビリティを悪化させることなく、三元触媒が劣化したか否かを判定可能とすること。【解決手段】この触媒劣化判定装置は、第１触媒が新品の触媒であると想定して構築された触媒モデルに基づき、同第１触媒から流出する流出酸素量ＣｇｏｕｔＯ２（Ｎ）を推定する。そして、下流側空燃比センサ出力Ｖｏｘｓに基づく空燃比フィードバック制御中において、下流側空燃比センサ出力Ｖｏｘｓが第１の状態（リッチ側所定値Ｖｒｉｃｈを増加しながら、又はリーン側所定値Ｖｌｅａｎを減少しながら通過する状態）となる時点（時刻ｔ１〜ｔ４，ｔ１０〜ｔ６０）において前記流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態（負の閾値Ｃｒｅｆｍｎｓよりも小さい値、又は正の閾値Ｃｒｅｆｐｌｓよりも大きい値になっている状態）になっている確率が所定値よりも低ければ、触媒が劣化触媒であると判定する。【選択図】  図５
2004300981.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記触媒よりも下流の前記排気通路に配設された空燃比センサと、
を備えた内燃機関の排気浄化装置に適用され、
前記触媒が劣化した触媒であると判定すべき程度まで劣化していない正常触媒であるか、劣化した触媒であると判定すべき程度まで劣化した劣化触媒であるか、を判定する触媒劣化判定手段を備えた触媒劣化判定装置であって、
前記触媒が前記正常触媒であると想定した場合における同触媒内の反応を考慮して構築された触媒モデルに基づいて同触媒から流出するガス中の特定成分の量に関する値を推定する特定成分量推定手段を備え、
前記触媒劣化判定手段は、前記空燃比センサの出力値と前記推定された特定成分の量に関する値との関係が同空燃比センサの出力値と前記特定成分の量に関する値の実際値との間で得られるべき所定の相関関係から逸脱する程度が所定の程度以下であるとき前記触媒が前記正常触媒であると判定するとともに、同関係が同所定の相関関係から逸脱する程度が同所定の程度を超えるとき同触媒が前記劣化触媒であると判定するように構成された触媒劣化判定装置。
【請求項２】
請求項１に記載の触媒劣化判定装置であって、
前記空燃比センサの出力値又は前記推定された特定成分の量に関する値の何れかが所定の目標値となるように同何れかの値に基づいて前記触媒に流入するガスの空燃比をフィードバック制御する空燃比制御手段を備え、
前記触媒劣化判定手段は、前記フィードバック制御中において前記触媒が前記正常触媒であるか前記劣化触媒であるかを判定するように構成された触媒劣化判定装置。
【請求項３】
請求項１又は請求項２に記載の触媒劣化判定装置において、
前記触媒劣化判定手段は、
前記空燃比センサの出力値又は前記推定された特定成分の量に関する値の一方の値が前記触媒からリッチ空燃比又はリーン空燃比のガスが流出していることを表す第１の状態となる毎に他方の値が同触媒から同一のリッチ空燃比又はリーン空燃比のガスが流出していることを表す第２の状態になっているか否かを判定し、
前記一方の値が前記第１の状態となる頻度に対する、同一方の値が同第１の状態となる時点において前記他方の値が前記第２の状態になっている頻度の割合が所定値以上であるとき、前記空燃比センサの出力値と前記推定された特定成分の量に関する値との関係が前記所定の相関関係から逸脱する程度が前記所定の程度以下であると判定するとともに、同頻度の割合が同所定値未満であるとき、同関係が同所定の相関関係から逸脱する程度が同所定の程度を超えたと判定するように構成された触媒劣化判定装置。
【請求項４】
請求項１乃至請求項３のいずれか一項に記載の触媒劣化判定装置において、
前記特定成分量推定手段は、前記触媒から流出するガス中の酸素の過不足量に関する値を前記ガス中の特定成分の量に関する値として推定するように構成された触媒劣化判定装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の排気通路に配設された三元触媒が劣化したか否かを判定する触媒劣化判定装置に関する。
【０００２】
【従来の技術】
従来より、内燃機関の排気ガスを浄化するための三元触媒（本明細書においては、単に「触媒」とも云うこともある。）が、同機関の排気通路に配設されている。この三元触媒は、酸素を貯蔵するＯ２ストレージ機能（酸素吸蔵機能）を有していて、流入するガスの空燃比がリッチである場合には貯蔵している酸素によりＨＣ，ＣＯ等の未燃成分を酸化するとともに、流入するガスの空燃比がリーンである場合には窒素酸化物（ＮＯｘ）を還元して同ＮＯｘから奪った酸素を内部に貯蔵（吸蔵）する。これにより、三元触媒は、触媒に流入するガスの空燃比が理論空燃比から偏移した場合でも、未燃成分や窒素酸化物を浄化することができる。従って、三元触媒が貯蔵し得る酸素量（以下、「酸素吸蔵量」と称呼する。）の最大値（以下、「最大酸素吸蔵量」と称呼する。）が大きいほど、三元触媒の浄化能力は高い。
【０００３】
ところで、触媒は燃料中に含まれる鉛や硫黄等による被毒、或いは触媒に加わる熱により劣化する。その結果、触媒の酸素吸蔵機能は次第に低下する。即ち、触媒の劣化が進行するほど、同触媒の最大酸素吸蔵量は低下する。このことから、触媒の最大酸素吸蔵量が推定できれば、同推定した最大酸素吸蔵量に基づいて触媒が劣化したか否かを判定することができる。
【０００４】
特許文献１に開示された触媒劣化判定装置は、このような知見に基づいたものであって、機関の空燃比を所定のリッチ空燃比からリーン空燃比（又は、その逆）に強制的に変化させ、その際における触媒下流に配置した空燃比センサ（以下、「下流側空燃比センサ」と称呼する。）の出力に基づいて同触媒の最大酸素吸蔵量を推定し、同推定した最大酸素吸蔵量に基づいて同触媒が劣化したか否かを判定するように構成されている。
【０００５】
より具体的に述べると、上記開示された装置は、触媒上流の空燃比を所定のリッチな空燃比に制御して酸素吸蔵量を「０」にしておき、その後、同触媒の空燃比を所定のリーンな空燃比に制御し、触媒の酸素吸蔵量が最大酸素吸蔵量以上となって触媒下流の空燃比センサの出力がリーンへと変化するまでの時間と同触媒に単位時間当りに流入した酸素量とを乗じることで、同最大酸素吸蔵量を推定する。或いは、触媒上流の空燃比を所定のリーンな空燃比に制御して酸素吸蔵量を最大酸素吸蔵量としておき、その後、同触媒の空燃比を所定のリッチな空燃比に制御し、触媒の酸素吸蔵量が「０」となって触媒下流の空燃比センサの出力がリッチへと変化するまでの時間と同触媒内で単位時間当りに放出（消費）された酸素量とを乗じることで、同最大酸素吸蔵量を推定する。
【０００６】
このように、上記開示された装置によれば、最大酸素吸蔵量を推定するために触媒に流入する酸素量、或いは触媒で消費される酸素量を計測する必要がある。この酸素量は機関の吸入空気量に基づいて計測される。従って、最大酸素吸蔵量を精度良く求めるためには、機関の吸入空気量が精度良く計測されなければならない。このため、上記触媒劣化度の判定は、吸入空気量が精度良く計測可能な運転状態で、即ち、機関が定常運転されているときに行われる必要がある。
【０００７】
【特許文献１】
特開平５−１３３２６４号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、機関の定常状態が長時間継続する保証はないので、最大酸素吸蔵量の測定を短期間に終了させる必要があり、このため、前述した所定のリッチ空燃比と所定のリーン空燃比の差は比較的大きく設定されなければならない。この結果、かかる大きな空燃比変化に伴って機関の出力が変動し、ドライバビリティが悪化するという問題がある。また、機関の出力が安定している定常運転にあるときに空燃比の強制的変化が開始されるため、機関の出力変動が運転者に感知され易く、ドライバビリティの悪化が感知され易いという問題がある。
【０００９】
従って、本発明の目的は、ドライバビリティを犠牲にすることなく、触媒が劣化しているか否かを精度良く判定し得る触媒劣化判定装置を提供することにある。
【００１０】
【本発明の概要】
本発明の特徴は、内燃機関の排気通路に配設された触媒と、前記触媒よりも下流の前記排気通路に配設された空燃比センサと、を備えた内燃機関の排気浄化装置に適用され、前記触媒が劣化した触媒であると判定すべき程度まで劣化していない正常触媒であるか、劣化した触媒であると判定すべき程度まで劣化した劣化触媒であるかを判定する触媒劣化判定手段を備えた触媒劣化判定装置が、前記触媒が前記正常触媒であると想定した場合における同触媒内の反応を考慮して構築された触媒モデルに基づいて同触媒から流出するガス中の特定成分の量に関する値を推定する特定成分量推定手段を備え、前記触媒劣化判定手段は、前記空燃比センサの出力値と前記推定された特定成分の量に関する値との関係が同空燃比センサの出力値と前記特定成分の量に関する値の実際値との間で得られるべき所定の相関関係から逸脱する程度が所定の程度以下であるとき前記触媒が前記正常触媒であると判定するとともに、同関係が同所定の相関関係から逸脱する程度が同所定の程度を超えるとき同触媒が前記劣化触媒であると判定するように構成されたことにある。
【００１１】
ここにおいて、触媒から流出するガス中の特定成分の量に関する値は、例えば、特定成分の絶対量、又は特定成分の濃度等である。また、前記特定成分とは、例えば、一酸化炭素ＣＯ、炭化水素ＨＣ、窒素酸化物ＮＯｘ等の触媒で浄化すべき成分や、酸素Ｏ２（の過不足量）等のことを云う。
【００１２】
この場合、前記本発明の特徴に係る触媒劣化判定装置は、前記空燃比センサの出力値又は前記推定された特定成分の量に関する値の何れかが所定の目標値となるように同何れかの値に基づいて前記触媒に流入するガスの空燃比をフィードバック制御する空燃比制御手段を備え、前記触媒劣化判定手段は、前記フィードバック制御中において前記触媒が前記正常触媒であるか前記劣化触媒であるかを判定するように構成されることが好適である。ここにおいて、前記触媒に流入するガスの空燃比をフィードバック制御する空燃比制御手段は、例えば、機関に供給される混合気の空燃比を制御させる手段であってもよく、或いは、同機関に供給される混合気の空燃比の制御を行うとともに、同触媒の上流の排気通路に備えられたノズル等から空気や燃料を供給することで同触媒に流入するガスの空燃比を制御する手段であってもよい。なお、機関に供給される混合気の空燃比を制御すれば、触媒に流入するガスの空燃比を制御することができる。
【００１３】
触媒から流出するガスの空燃比は、同ガス中の酸化剤（例えば、窒素酸化物ＮＯｘ、酸素Ｏ２）の量が多くなっているとき（このとき同ガス中の還元剤（例えば、一酸化炭素ＣＯ、炭化水素ＨＣ）の量は微量となっている。）リーン空燃比となり、同ガス中の還元剤の量が多くなっているとき（このとき同ガス中の酸化剤の量は微量となっている。）リッチ空燃比となる。従って、前記ガス中の酸化剤の量及び還元剤の量（従って、前記特定成分の量（に関する値））は同ガスの空燃比に応じて変化する。よって、触媒下流の排気通路に配設された空燃比センサの出力値と同触媒から流出するガス中の特定成分の量に関する値（例えば、酸素の過不足量）の実際値とは所定の相関関係にあると云うことができる。
【００１４】
ところで、発明者は、後に詳述するように、触媒内の反応（酸素吸蔵機能に基づく酸素吸蔵・放出反応）を考慮して構築された触媒モデルに基づいて同触媒から流出するガス中の特定成分の量（に関する値）を推定する手法を開発した。この触媒モデルに基づいて推定された特定成分の量に関する値と同触媒モデルが対象とする実際の触媒の下流の排気通路に配設された空燃比センサの出力値との関係が前記所定の相関関係にあるとき同触媒モデルは同実際の触媒内の反応を忠実に表していることを意味している。一方、前記推定された特定成分の量に関する値と前記空燃比センサの出力値との関係が前記所定の相関関係から逸脱しているとき触媒モデルは実際の触媒内の反応を忠実に表していないことを意味していると云える。
【００１５】
また、前述のごとく、触媒の劣化が進行すると同触媒内の反応に影響を与える最大酸素吸蔵量が低下し、更には同触媒内の反応速度が変化する。従って、触媒内の反応の程度は同触媒の劣化の進行に応じて変化する。
【００１６】
以上のことから、触媒モデルが対象とする実際の触媒が劣化した触媒であると判定すべき程度まで劣化していない正常触媒（例えば、新品の触媒）である（例えば、最大酸素吸蔵量が常に新品時点における値である）と想定した場合における同実際の触媒内の反応を考慮して同触媒モデルが構築されている場合を考える。そうすると、実際の触媒が前記正常触媒であるとき、触媒モデルは同実際の触媒内の反応を忠実に表し得るから同触媒モデルにより推定された特定成分の量に関する値と前記空燃比センサの出力値との関係は前記所定の相関関係から逸脱しない。一方、前記実際の触媒の劣化が前記正常触媒の劣化の程度から進行するにつれて、触媒モデルが表す反応の程度が実際の触媒内の反応の程度と異なるようになって同触媒モデルが同実際の触媒内の反応を忠実に表し得なくなるから前記推定された特定成分の量に関する値と前記空燃比センサの出力値との関係が前記所定の相関関係から逸脱する程度が次第に大きくなる。
【００１７】
従って、前記推定された特定成分の量に関する値と前記空燃比センサの出力値との関係が前記所定の相関関係から逸脱する程度が或る所定の程度を超えるか否かに応じて前記実際の触媒が劣化した触媒であると判定すべき程度まで劣化した劣化触媒であるか否かを判定することができる。上記本発明の特徴に係る触媒劣化判定装置は、かかる現象を利用して触媒が正常触媒であるか劣化触媒であるかを判定するものである。
【００１８】
これによれば、触媒の劣化判定を行うために機関が定常運転されているときに空燃比を強制的に変更する必要がなく、例えば、実質的な空燃比変化幅が小さい前述した空燃比フィードバック制御中に触媒の劣化判定が実行され得る。この結果、ドライバビリティを犠牲とすることなく触媒が正常触媒であるか劣化触媒であるかを判定することができる。
【００１９】
上記何れかの触媒劣化判定装置においては、前記触媒劣化判定手段は、前記空燃比センサの出力値又は前記推定された特定成分の量に関する値の一方の値が前記触媒からリッチ空燃比又はリーン空燃比のガスが流出していることを表す第１の状態となる毎に他方の値が同触媒から同一のリッチ空燃比又はリーン空燃比のガスが流出していることを表す第２の状態になっているか否かを判定し、前記一方の値が前記第１の状態となる頻度に対する、同一方の値が同第１の状態となる時点において前記他方の値が前記第２の状態になっている頻度の割合が所定値以上であるとき、前記空燃比センサの出力値と前記推定された特定成分の量に関する値との関係が前記所定の相関関係から逸脱する程度が前記所定の程度以下であると判定するとともに、同頻度の割合が同所定値未満であるとき、同関係が同所定の相関関係から逸脱する程度が同所定の程度を超えたと判定するように構成されることが好適である。
【００２０】
この場合、前記一方の値が第１の状態となる頻度に対する前記他方の値が第２の状態になっている頻度の割合が所定値以上であるとき触媒が正常触媒であると判定されるとともに、同頻度の割合が同所定値未満であるとき同触媒が劣化触媒であると判定されることになる。これによれば、空燃比センサの出力値又は前記推定された特定成分の量に関する値の一方の値が第１の状態となる頻度と他方の値が第２の状態になっている頻度とをカウントするという簡易な構成で触媒の劣化判定を行うことができる。
【００２１】
また、上記何れかの触媒劣化判定装置においては、前記特定成分量推定手段は、前記触媒から流出するガス中の酸素の過不足量に関する値を前記ガス中の特定成分の量に関する値として推定するように構成されることが好適である。触媒から流出するガス中の酸素が過剰となっていることは、同ガス中の酸化剤の量が多くなっている（このとき同ガス中の還元剤の量は微量となっている。）ことを意味し、同ガス中の酸素が不足していることは、同ガス中の還元剤の量が多くなっている（このとき同ガス中の酸化剤の量は微量となっている。）ことを意味している。換言すれば、触媒から流出するガスの状態を同ガス中の酸素の過不足量に関する値という一つの値のみに基づいて表すことができる。従って、上記のように構成すれば、酸素の過不足量に関する値以外の値を触媒から流出するガス中の特定成分の量に関する値として計算する必要がなく、触媒の劣化判定に必要な計算を簡易なものとすることができる。
【００２２】
【発明の実施の形態】
以下、本発明による触媒劣化判定装置を含む空燃比制御装置（排気浄化装置）の一実施形態について図面を参照しつつ説明する。図１は、そのような触媒劣化判定装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。
【００２３】
この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００２４】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより同クランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００２５】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともに同インテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００２６】
吸気系統４０は、吸気ポート３１に連通し同吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、スロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａ、スワールコントロールバルブ（以下、「ＳＣＶ」と称呼する。）４４、及びＤＣモータからなるＳＣＶアクチュエータ４４ａを備えている。
【００２７】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された第１触媒（スタート・キャタリティック・コンバータとも云う。）５３、及び第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された第２触媒（車両のフロア下方に配設されるため、アンダ・フロア・キャタリティック・コンバータとも云う。）５４を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。なお、本触媒劣化判定装置は、第１触媒５３が劣化したか否かを判定するものである。
【００２８】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、及びアクセル開度センサ６８を備えている。
【００２９】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の質量流量に応じた電圧Ｖｇを出力するようになっている。かかるエアフローメータ６１の出力Ｖｇと、計測された吸入空気流量Ｇａとの関係は、図２に示したとおりである。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度ＮＥを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
【００３０】
上流側空燃比センサ６６は、図３に示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧ｖａｂｙｆｓを出力するようになっている。図３から明らかなように、上流側空燃比センサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。下流側空燃比センサ６７は、図４に示したように、理論空燃比において急変する電圧Ｖｏｘｓを出力するようになっている。より具体的に述べると、下流側空燃比センサ６７は、空燃比が理論空燃比よりもリーンのときは略０．１（Ｖ）、空燃比が理論空燃比よりもリッチのときは略０．９（Ｖ）、及び空燃比が理論空燃比のときは略０．５（Ｖ）の電圧を出力するようになっている。アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、同アクセルペダル８１の操作量Ａｃｃｐを表す信号を出力するようになっている。
【００３１】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、及びＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、同ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、スロットル弁アクチュエータ４３ａ、及びＳＣＶアクチュエータ４４ａに駆動信号を送出するようになっている。また、インターフェース７５は、ＣＰＵ７１の指示に応じてユーザーに第１触媒５３の劣化を知らしめるための警報ランプ８２に同警報ランプ８２を点灯・消灯させるための指示信号を送出するようになっている。
【００３２】
（空燃比フィードバック制御の概要）
三元触媒である第１触媒５３（第２触媒５４も同様である。）は、空燃比がほぼ理論空燃比のときに未燃成分（ＨＣ，ＣＯ）を酸化し、同時に窒素酸化物（ＮＯｘ）を還元する機能を有する。更に、第１触媒５３は、酸素を貯蔵する機能（酸素貯蔵機能、Ｏ２ストレージ機能）を有し、この酸素貯蔵機能により、空燃比が理論空燃比からある程度まで偏移したとしても、ＨＣ，ＣＯ、及びＮＯｘを浄化することができる。即ち、機関に供給される混合気の空燃比がリーンとなって第１触媒５３に流入するガスにＮＯｘが多量に含まれると、第１触媒５３はＮＯｘから酸素分子を奪ってＮＯｘを還元し、これによりＮＯｘを浄化する。また、機関に供給される混合気の空燃比がリッチになって第１触媒５３に流入するガスにＨＣ，ＣＯが多量に含まれると、第１触媒５３はこれらに酸素分子を与えて酸化し、これによりＨＣ，ＣＯを浄化する。
【００３３】
従って、第１触媒５３が連続的に流入する多量のＨＣ，ＣＯを効率的に浄化するためには、同第１触媒５３が酸素を多量に貯蔵していなければならず、逆に連続的に流入する多量のＮＯｘを効率的に浄化するためには、同第１触媒５３が酸素を十分に貯蔵し得なければならないことになる。以上のことから明らかなように、第１触媒５３の浄化能力は、同第１触媒５３が貯蔵し得る最大の酸素量（最大酸素吸蔵量）に依存する。
【００３４】
一方、第１触媒５３は燃料中に含まれる鉛や硫黄等による被毒、或いは触媒に加わる熱により劣化するから、次第に最大酸素吸蔵量が低下してくる。このように最大酸素吸蔵量が低下した場合であっても、エミッションの排出量が少ない状態を維持するには、第１触媒５３から排出されるガスの空燃比が理論空燃比に極めて近い状態となるように制御する必要がある。
【００３５】
そこで、本実施形態の空燃比制御装置は、下流側空燃比センサ６７の出力Ｖｏｘｓが理論空燃比に略相当する目標値（つまり、第１触媒５３の浄化効率が良好となるための目標値）Ｖｏｘｓｒｅｆ（＝０．５（Ｖ））となるように、目標値Ｖｏｘｓｒｅｆから下流側空燃比センサ６７の出力Ｖｏｘｓを減じて得られる偏差ＤＶｏｘｓを比例・積分処理したサブフィードバック制御量ｖａｆｓｆｂに基づいて機関に供給される混合気の空燃比をフィードバック制御する（本実施形態では、上流側空燃比センサ出力ｖａｂｙｆｓにも応じて空燃比をフィードバック制御する。）。
【００３６】
即ち、下流側空燃比センサ６７の出力が理論空燃比よりリーンの空燃比を表す値となると（実際には、サブフィードバック制御量ｖａｆｓｆｂが正の値になると）機関に供給される混合気の空燃比をリッチ側に制御し、下流側空燃比センサ６７の出力が理論空燃比よりリッチの空燃比を表す値となると（実際には、サブフィードバック制御量ｖａｆｓｆｂが負の値になると）機関に供給される混合気の空燃比をリーン側に制御する。以上のようにして、機関に供給される混合気の空燃比が下流側空燃比センサ出力Ｖｏｘｓ（従って、サブフィードバック制御量ｖａｆｓｆｂ）に基づいてフィードバック制御される。このようにして、機関に供給される空燃比（従って、第１触媒５３に流入するガスの空燃比）を制御する手段が空燃比制御手段に相当する。
【００３７】
（触媒劣化判定の原理）
上述した空燃比フィードバック制御中において、第１触媒５３から流出するガス中の酸素が不足して同ガス中の未燃ＣＯ，ＨＣの量が多くなると（このとき同ガス中の窒素酸化物ＮＯｘの量は微量となっている。）下流側空燃比センサ６７の出力Ｖｏｘｓは増加しながらリッチを示す値に近づく。一方、第１触媒５３から流出するガス中の酸素が過剰となって同ガス中の窒素酸化物ＮＯｘの量が多くなると（このとき同ガス中の未燃ＣＯ，ＨＣの量は微量となっている。）下流側空燃比センサ６７の出力Ｖｏｘｓは減少しながらリーンを示す値に近づく。
【００３８】
換言すれば、下流側空燃比センサ６７の出力Ｖｏｘｓが理論空燃比に相当する上記目標値Ｖｏｘｓｒｅｆよりも大きいリッチ側所定値Ｖｒｉｃｈを増加しながら通過するときには少なくとも第１触媒５３から流出しているガス中の酸素の不足量は或る閾値を越える量となっている。一方、下流側空燃比センサ６７の出力Ｖｏｘｓが目標値Ｖｏｘｓｒｅｆよりも小さいリーン側所定値Ｖｌｅａｎを減少しながら通過するときには少なくとも第１触媒５３から流出しているガス中の酸素の過剰量は或る閾値を越える量となっている。下流側空燃比センサ６７の出力Ｖｏｘｓと第１触媒５３から流出するガス中の特定成分（酸素の過不足量、窒素酸化物ＮＯｘ，未燃ＣＯ，ＨＣ等）の量（実際の量）とは少なくともこのような所定の相関関係にある。
【００３９】
一方、第１触媒５３から流出するガス中の特定成分の量（本例では、酸素の過不足量（流出酸素量）ＣｇｏｕｔＯ２（Ｎ））は、後に詳述するように、第１触媒５３内の反応（酸素吸蔵機能に基づく酸素吸蔵・放出反応）を考慮して構築された触媒モデルに基づいて推定することができる。ここで、流出酸素量ＣｇｏｕｔＯ２（Ｎ）は、その値が正の値であるとき酸素が過剰であって第１触媒５３からＮＯｘが流出している状態であることを意味し、その値が負の値であるとき酸素が不足して第１触媒５３から未燃ＣＯ，ＨＣが流出している状態であることを意味している。
【００４０】
この触媒モデルに基づいて推定された流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力Ｖｏｘｓとの関係が前述の所定の相関関係にあるとき同触媒モデルは第１触媒５３内の反応を忠実に表していることを意味している。一方、前記推定された流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力Ｖｏｘｓとの関係が前記所定の相関関係から逸脱しているとき触媒モデルは第１触媒５３内の反応を忠実に表していないことを意味していると云える。
【００４１】
また、先に説明したように、一般に、触媒の劣化が進行すると同触媒内の反応に影響を与える最大酸素吸蔵量が低下し、更には同触媒内の反応速度が変化する。従って、触媒内の反応の程度は同触媒の劣化の進行に応じて変化する。
【００４２】
以上のことから、第１触媒５３が新品の触媒である（例えば、最大酸素吸蔵量が常に新品の時点における値である）と想定した場合における同第１触媒５３内の反応を考慮して触媒モデルが構築されている場合を考える。そうすると、第１触媒５３が新品の触媒であるとき、触媒モデルは第１触媒５３内の反応を忠実に表し得るから同触媒モデルにより推定された流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係は前記所定の相関関係から逸脱しない。一方、第１触媒５３の劣化が（新品の時点から）進行するにつれて、触媒モデルが表す反応の程度が第１触媒５３内の反応の程度と異なるようになって同触媒モデルが同第１触媒５３内の反応を忠実に表し得なくなるから流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係が前記所定の相関関係から逸脱する程度が次第に大きくなる。
【００４３】
以下、この点について、図５を参照しながらより具体的に説明する。（Ａ）は、第１触媒５３が新品の触媒であるときの下流側空燃比センサ６７の出力Ｖｏｘｓ、及び後述する触媒モデルが算出する前記流出酸素量ＣｇｏｕｔＯ２（Ｎ）の変化の一例を示したタイムチャートである。前述のごとく、触媒モデルは第１触媒５３が新品の触媒であると想定して構築されているから新品の触媒である第１触媒５３内の反応を忠実に表している。従って、（Ａ）に示した触媒モデルが算出する流出酸素量ＣｇｏｕｔＯ２（Ｎ）の変化は第１触媒５３から流出するガス中の酸素の過不足量（の実際量）の変化と一致している。
【００４４】
即ち、時刻ｔ１以前において、機関に供給される混合気の空燃比がリッチ側に制御されている（即ち、上述したサブフィードバック制御量ｖａｆｓｆｂが正の値になっている）ことで第１触媒５３内の酸素吸蔵量が「０」に近づくと、第１触媒５３は流入するガス中の多量の未燃ＣＯ，ＨＣを完全に酸化できなくなって第１触媒５３から未燃ＣＯ，ＨＣが流出し始める（従って、第１触媒５３から流出するガス中の酸素が不足し始める。）。これに応じて流出酸素量ＣｇｏｕｔＯ２（Ｎ）は略「０」から減少を開始するとともに下流側空燃比センサ６７の出力Ｖｏｘｓは増加を開始し、時刻ｔ１になると、出力Ｖｏｘｓはリッチ側所定値Ｖｒｉｃｈを増加しながら通過する。また、負の値である流出酸素量ＣｇｏｕｔＯ２（Ｎ）は、時刻ｔ１において負の閾値Ｃｒｅｆｍｎｓよりも小さい値となっているとともにその後も減少を続ける。
【００４５】
時刻ｔ１の直後の時刻ｔ１’になると、サブフィードバック制御量ｖａｆｓｆｂが正の値から負の値に変化することで機関に供給される混合気の空燃比がリーン側に制御されるようになる。これに伴い、時刻ｔ１’以降、流出酸素量ＣｇｏｕｔＯ２（Ｎ）は、第１触媒５３から未燃ＣＯ，ＨＣが流出しなくなることから再び略「０」を維持するようになる。ここで、サブフィードバック制御量ｖａｆｓｆｂが正の値から負の値に変化する時点（時刻ｔ１’）が、出力Ｖｏｘｓが目標値Ｖｏｘｓｒｅｆを増加しながら通過する時点（時刻ｔ１の直前）よりも遅い時点となっているのは、サブフィードバック制御量ｖａｆｓｆｂを求めるための前記比例・積分処理における積分項の値が前記時刻ｔ１の直前の時点において大きい正の値となっていることに基づく。
【００４６】
時刻ｔ１（ｔ１’）以降、機関に供給される混合気の空燃比がリーン側に制御されている（即ち、サブフィードバック制御量ｖａｆｓｆｂが負の値になっている）ことで第１触媒５３内の酸素吸蔵量が最大酸素吸蔵量に近づくと、第１触媒５３は流入するガス中の多量の窒素酸化物ＮＯｘを完全に還元できなくなって第１触媒５３から窒素酸化物ＮＯｘが流出し始める（従って、第１触媒５３から流出するガス中の酸素が過剰になり始める。）。これに応じて流出酸素量ＣｇｏｕｔＯ２（Ｎ）は略「０」から増加を開始するとともに下流側空燃比センサ６７の出力Ｖｏｘｓは減少を開始し、時刻ｔ２になると、出力Ｖｏｘｓはリーン側所定値Ｖｌｅａｎを減少しながら通過する。また、正の値である流出酸素量ＣｇｏｕｔＯ２（Ｎ）は、時刻ｔ２において正の閾値Ｃｒｅｆｐｌｓよりも大きい値となっているとともにその後も増加を続ける。
【００４７】
時刻ｔ２の直後の時刻ｔ２’になると、上述したサブフィードバック制御量ｖａｆｓｆｂが負の値から正の値に再び変化することで機関に供給される混合気の空燃比がリッチ側に制御されるようになる。これに伴い、時刻ｔ２’以降、流出酸素量ＣｇｏｕｔＯ２（Ｎ）は、第１触媒５３から窒素酸化物ＮＯｘが流出しなくなることから再び略「０」を維持するようになる。ここで、サブフィードバック制御量ｖａｆｓｆｂが負の値から正の値に変化する時点（時刻ｔ２’）が、出力Ｖｏｘｓが目標値Ｖｏｘｓｒｅｆを減少しながら通過する時点（時刻ｔ２の直前）よりも遅い時点となっているのは、サブフィードバック制御量ｖａｆｓｆｂを求めるための前記積分項の値が前記時刻ｔ２の直前の時点において大きい負の値となっていることに基づく。
【００４８】
時刻ｔ２（ｔ２’）以降も同様に、時刻ｔ３になると、出力Ｖｏｘｓはリッチ側所定値Ｖｒｉｃｈを増加しながら通過するとともに、前述の時刻ｔ１と同様、流出酸素量ＣｇｏｕｔＯ２（Ｎ）は負の閾値Ｃｒｅｆｍｎｓよりも小さい値となっている。また、時刻ｔ４になると、出力Ｖｏｘｓはリーン側所定値Ｖｌｅａｎを減少しながら通過するとともに、前述の時刻ｔ２と同様、流出酸素量ＣｇｏｕｔＯ２（Ｎ）は正の閾値Ｃｒｅｆｐｌｓよりも大きい値となっている。
【００４９】
このように、第１触媒５３が新品の触媒である場合、出力Ｖｏｘｓがリッチ側所定値Ｖｒｉｃｈを増加しながら通過する毎に（（Ａ）においては時刻ｔ１，ｔ３）触媒モデルが算出する流出酸素量ＣｇｏｕｔＯ２（Ｎ）は必ず負の閾値Ｃｒｅｆｍｎｓよりも小さい値となっているとともに、出力Ｖｏｘｓがリーン側所定値Ｖｌｅａｎを減少しながら通過する毎に（（Ａ）においては時刻ｔ２，ｔ４）流出酸素量ＣｇｏｕｔＯ２（Ｎ）は必ず正の閾値Ｃｒｅｆｐｌｓよりも大きい値となっている。換言すれば、流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係は前記所定の相関関係から逸脱しない。
【００５０】
一方、図５（Ｂ）は、第１触媒５３が劣化した触媒であると判定すべき程度まで劣化した劣化触媒であるときの下流側空燃比センサ６７の出力Ｖｏｘｓ、及び流出酸素量ＣｇｏｕｔＯ２（Ｎ）の変化の一例を示したタイムチャートである。前述のごとく、触媒モデルは第１触媒５３が新品の触媒であると想定して構築されているから、この場合、劣化触媒である第１触媒５３内の反応を忠実に表し得ない。
【００５１】
より具体的に述べると、この場合、第１触媒５３は前記劣化触媒であるから、第１触媒５３内の最大酸素吸蔵量は相当程度に低下している。従って、第１触媒５３内の実際の酸素吸蔵量は短時間で「０」又は最大酸素吸蔵量に近づくようになり、これに伴って、機関に供給される混合気の空燃比がリッチ側からリーン側へと、或いは、リーン側からリッチ側へと頻繁に変化するようになる。一方、触媒モデルにおいては、第１触媒５３の最大酸素吸蔵量として新品の時点における大きな値が常に想定されているから、第１触媒５３内の酸素吸蔵量（推定値、計算値）は前記空燃比の頻繁な変化に応じて頻繁に増減するものの、「０」又は最大酸素吸蔵量には到達しにくい。換言すれば、第１触媒５３内の実際の酸素吸蔵量が「０」又は最大酸素吸蔵量に近づく時点と触媒モデルにおいて計算されている第１触媒５３内の酸素吸蔵量（推定値）が「０」又は最大酸素吸蔵量に近づく時点とは異なる。従って、触媒モデルが計算する流出酸素量ＣｇｏｕｔＯ２（Ｎ）の変化は第１触媒５３から流出するガス中の酸素の過不足量（の実際量）の変化と一致しない。
【００５２】
これにより、（Ｂ）においては、出力Ｖｏｘｓがリッチ側所定値Ｖｒｉｃｈを増加しながら通過する毎に（時刻ｔ１０，ｔ３０，ｔ５０）第１触媒５３から流出するガス中の酸素の過不足量（実際量）が必ず負の閾値Ｃｒｅｆｍｎｓよりも小さい値となる一方で、触媒モデルが計算する流出酸素量ＣｇｏｕｔＯ２（Ｎ）は時刻ｔ５０においてのみ負の閾値Ｃｒｅｆｍｎｓよりも小さい値となっている。また、出力Ｖｏｘｓがリーン側所定値Ｖｌｅａｎを減少しながら通過する毎に（時刻ｔ２０，ｔ４０，ｔ６０）第１触媒５３から流出するガス中の酸素の過不足量（実際量）が必ず正の閾値Ｃｒｅｆｐｌｓよりも大きい値となる一方で、前記流出酸素量ＣｇｏｕｔＯ２（Ｎ）は時刻ｔ２０においてのみ正の閾値Ｃｒｅｆｐｌｓよりも大きい値となっている。
【００５３】
換言すれば、第１触媒５３が前記劣化触媒になると、流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係が前記所定の相関関係から逸脱する程度が相当に大きくなる。また、流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係が前記所定の相関関係から逸脱する程度は、第１触媒５３の最大酸素吸蔵量が触媒モデルにおいて想定されている新品の時点での大きい値から低下するにつれて、即ち、第１触媒５３の劣化が（新品の時点から）進行するにつれて次第に大きくなる。
【００５４】
この流出酸素量ＣｇｏｕｔＯ２（Ｎ）と下流側空燃比センサ６７の出力値Ｖｏｘｓとの関係が前記所定の相関関係から逸脱する程度は、出力Ｖｏｘｓ（一方の値）がリッチ側所定値Ｖｒｉｃｈを増加しながら、又はリーン側所定値Ｖｌｅａｎを減少しながら通過する時点（即ち、下流側空燃比センサ６７の出力Ｖｏｘｓが第１の状態となる時点）において流出酸素量ＣｇｏｕｔＯ２（Ｎ）（他方の値）が負の閾値Ｃｒｅｆｍｎｓよりも小さい値、又は正の閾値Ｃｒｅｆｐｌｓよりも大きい値になっている（即ち、流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっている）確率により表すことができ、同確率が低下するにつれて次第に大きくなる。例えば、図５（Ａ）に示す一例では前記確率は１００パーセント（４回／４回）であるのに対し、図５（Ｂ）に示す一例では同確率は約３３パーセント（２回／６回）と低下していて上記所定の相関関係から逸脱する程度は大きいと云うことができる。
【００５５】
以上のことから、本触媒劣化判定装置は、第１触媒５３を対象とする触媒モデルを同第１触媒５３が新品の触媒であると想定して構築する。また、本触媒劣化判定装置は、上述した空燃比フィードバック制御中において、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態となる毎に触媒モデルが計算している流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっているか否かを判定するとともに、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態となる頻度（回数）ＳＭＬが十分なサンプリングが行われたことを示す基準値ＳＭＬ０に達する毎（一サンプリング期間が経過する毎）に、この一サンプリング期間中にて下流側空燃比センサ６７の出力Ｖｏｘｓが同第１の状態となった時点において流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっている頻度（回数）ＦＲＥを求める。
【００５６】
そして、本触媒劣化判定装置は、前記頻度ＦＲＥが劣化判定基準値ＦＲＥｒｅｆ以上（従って、頻度ＳＭＬ０に対する頻度ＦＲＥの割合が所定値以上）であれば、第１触媒５３は劣化した触媒であると判定すべき程度まで劣化していない正常触媒であると判定する一方、頻度ＦＲＥが劣化判定基準値ＦＲＥ未満（従って、頻度ＳＭＬ０に対する頻度ＦＲＥの割合が所定値未満）であれば、第１触媒５３は劣化した触媒であると判定すべき程度まで劣化した劣化触媒であると判定する。このようにして第１触媒５３の劣化判定を行う手段が触媒劣化判定手段に相当する。
【００５７】
（触媒モデル）
次に、第１触媒５３から流出するガス中の特定成分の量（本例では、酸素の過不足量（流出酸素量）ＣｇｏｕｔＯ２（Ｎ））を求めるための触媒モデルについて説明する。一般に、触媒にリーンな空燃比のガスが流入したときには、同触媒の上流側においてより多くの酸素が吸蔵され、同触媒にリッチな空燃比のガスが流入したときには、同触媒の上流側から吸蔵されている酸素が消費されていく。従って、触媒内に吸蔵されている酸素は同触媒の排ガスの流れ方向において均一に分布しているわけではない。よって、触媒内の酸素吸蔵量を正確に求めるためには、かかる吸蔵酸素の分布を考慮した計算を行う必要がある。
【００５８】
また、触媒の酸素吸蔵量は同触媒内において発生する酸素吸蔵・放出反応の程度に応じて変化する。この酸素吸蔵・放出反応の程度は、触媒に流入する排ガスに含まれる上記酸素吸蔵・放出反応に関係する特定成分の量に依存する。従って、触媒の酸素吸蔵量を正確に求めるためには、前記特定成分の量を考慮に入れた計算を行う必要がある。そして、触媒の酸素吸蔵量を正確に求めることができれば、同触媒から流出するガス中の特定成分の量をも正確に計算することができる。そこで、本装置は以下に説明する触媒モデルを第１触媒５３に適用することにより、同第１触媒５３内の酸素吸蔵量ＯＳＡａｌｌ、及び第１触媒５３から流出する特定成分の量（この例では、流出酸素量ＣｇｏｕｔＯ２（Ｎ））を算出する。
【００５９】
この触媒モデルにおいては、図６に模式的に示したように、軸線に直交する断面形状が一定である柱状の触媒を同軸線に直交する面によりＮ個の（複数の）領域（「ブロック」とも称呼する。）に分割する。即ち、触媒モデルが対象とする触媒は排ガスの流れ方向に沿ってＮ個のブロックに分割されている。分割された各ブロックの軸線方向の長さはＬである。なお、説明の便宜上、各ブロックには、排ガスの流れ方向に沿って上流側から順に図６に示すように番号が付されている。また、任意のｉ番目のブロックに関連する変数・記号等には、それらの末尾に（ｉ）が付されている。
【００６０】
この触媒モデルにおいては、図７に示したように、分割されたブロックのうちのｉ番目のブロック（ｉ）（特定領域）に注目し、同ブロック（ｉ）における酸素吸蔵・放出反応に関係する特定成分のＣＰＵ７１の演算周期あたりの収支を考える。このとき、触媒での酸化・還元反応である三元反応は瞬時かつ完全に終了するものと仮定し、その結果としての酸素の過不足に基く酸素の吸蔵・放出反応のみに着目するものとする。この仮定（触媒モデル）は、現実的でありかつ計算精度のよいものである。なお、図７に示した排ガス相は排ガスが通過する空間であり、コート層は触媒機能を発生せしめる白金（Ｐｔ）等の貴金属からなる活性成分及び酸素吸蔵機能を発生せしめるセリア（ＣｅＯ２）等の成分が担持された層である。
【００６１】
特定成分は、例えば、酸素（分子）Ｏ２、窒素酸化物ＮＯｘ、一酸化炭素ＣＯ、炭化水素ＨＣから選択された成分であってもよいが、この触媒モデルでは、上記三元反応が瞬時かつ完全に終了するものと仮定した状態における排ガスに含まれる酸素（酸素分子及び窒素酸化物の酸素。本明細書では、酸素分子及び窒素酸化物の酸素を総称して「酸素」と称呼する。）（の過不足）を特定成分として選択している。この酸素の量である酸素量ＣｇＯ２は、同酸素が過剰であるとき（即ち、排ガス中にＯ２及びＮＯｘが存在する場合）に正の値となり、同酸素が不足しているとき（即ち、排ガス中に未燃ＨＣ，ＣＯが存在する場合）に負の値となるように計算される。
【００６２】
また、注目するブロック（ｉ）において、ＣＰＵ７１の演算周期あたり同ブロック（ｉ）の排ガス相に流入する酸素量ＣｇＯ２を流入酸素量ＣｇｉｎＯ２（ｉ）、同演算周期あたり同ブロック（ｉ）の排ガス相から流出する酸素量ＣｇＯ２を流出酸素量ＣｇｏｕｔＯ２（ｉ）と称呼し、同演算周期あたり同ブロック（ｉ）のコート層に吸蔵され又は同コート層から放出される酸素量ＣｇＯ２を酸素吸蔵量変化量δＯＳＡ（ｉ）と称呼する。この酸素吸蔵量変化量δＯＳＡ（ｉ）は、酸素がコート層に吸蔵されるときに正の値となり、酸素がコート層から放出されるときに負の値となるように計算される。また、現時点におけるブロック（ｉ）のコート層における酸素吸蔵量を酸素吸蔵量ＯＳＡ（ｉ）と称呼し、現時点におけるブロック（ｉ）のコート層における最大酸素吸蔵量を最大酸素吸蔵量Ｃｍａｘ（ｉ）と称呼する。
【００６３】
いま、図７に示すブロック（ｉ）における酸素量ＣｇＯ２の上記演算周期あたりの収支を考えると、同ブロック（ｉ）の排ガス相に流入した流入酸素量ＣｇｉｎＯ２（ｉ）のうち酸素吸蔵量変化量δＯＳＡ（ｉ）だけがコート層に吸蔵され、同流入酸素量ＣｇｉｎＯ２（ｉ）のうちコート層に吸蔵されなかった残りの酸素量ＣｇＯ２が流出酸素量ＣｇｏｕｔＯ２（ｉ）となるから、流入酸素量ＣｇｉｎＯ２（ｉ），流出酸素量ＣｇｏｕｔＯ２（ｉ）及び酸素吸蔵量変化量δＯＳＡ（ｉ）の間には下記数１に示した関係が成立する。この下記数１に示した関係が本触媒モデルの基本式である。
【００６４】
【数１】
ＣｇｏｕｔＯ２（ｉ）＝ＣｇｉｎＯ２（ｉ）−δＯＳＡ（ｉ）
【００６５】
次に、酸素吸蔵量変化量δＯＳＡ（ｉ）について考える。流入酸素量ＣｇｉｎＯ２（ｉ）が正の値のときはブロック（ｉ）の排ガス相に流入する排ガス中の酸素が過剰であることを意味し、同排ガス中の酸素の一部はブロック（ｉ）のコート層に吸蔵されるから酸素吸蔵量変化量δＯＳＡ（ｉ）は正の値となる。このときの酸素吸蔵反応の量、即ち酸素吸蔵量変化量δＯＳＡ（ｉ）は、流入酸素量ＣｇｉｎＯ２（ｉ）の値に比例するとともにブロック（ｉ）の現時点での最大酸素吸蔵量Ｃｍａｘ（ｉ）と現時点での酸素吸蔵量ＯＳＡ（ｉ）との差の値に比例すると考えられる。従って、流入酸素量ＣｇｉｎＯ２（ｉ）が正の値のとき、酸素吸蔵量変化量δＯＳＡ（ｉ）は下記数２，及び下記数３に基づいて算出することができる。
【００６６】
【数２】
δＯＳＡ（ｉ）＝Ｈ（ｉ）・ＣｇｉｎＯ２（ｉ）
【００６７】
【数３】
Ｈ（ｉ）＝ｈ・（（Ｃｍａｘ（ｉ）−ＯＳＡ（ｉ））／Ｃｍａｘ（ｉ））  （０  ≦  Ｈ（ｉ）  ＜  １）
【００６８】
上記数２及び上記数３において、Ｈ（ｉ）はブロック（ｉ）における流入酸素量ＣｇｉｎＯ２（ｉ）に対する吸蔵される酸素量（δＯＳＡ（ｉ））の割合を示す反応率である。ｈは第１触媒５３が新品の触媒であると想定した場合の反応速度定数であり、本モデルでは正の一定値としているが触媒の温度に応じて変化する正の値（例えば、触媒の温度の増加に応じて単調増加する正の値）としてもよい。また、上記数３における現時点での最大酸素吸蔵量Ｃｍａｘ（ｉ）と現時点での酸素吸蔵量ＯＳＡ（ｉ）との差の値（Ｃｍａｘ（ｉ）−ＯＳＡ（ｉ））は、ブロック（ｉ）における現時点での酸素吸蔵余裕量を示している。このように、本触媒モデルでは、少なくとも触媒内の酸素吸蔵量に基づいて同触媒が内部に流入する排ガスから吸蔵する酸素量を算出する。
【００６９】
一方、流入酸素量ＣｇｉｎＯ２（ｉ）が負の値のときはブロック（ｉ）の排ガス相に流入する排ガスの酸素が不足していることを意味し、同排ガスにはブロック（ｉ）のコート層から放出された酸素が与えられるから酸素吸蔵量変化量δＯＳＡ（ｉ）は負の値となる。このときの酸素放出反応の量、即ち酸素吸蔵量変化量δＯＳＡ（ｉ）（の絶対値）は、流入酸素量ＣｇｉｎＯ２（ｉ）の値に比例するとともにブロック（ｉ）の現時点での酸素吸蔵量ＯＳＡ（ｉ）の値に比例すると考えられる。従って、流入酸素量ＣｇｉｎＯ２（ｉ）が負の値のとき、酸素吸蔵量変化量δＯＳＡ（ｉ）は上記数２と同一の関係を示す下記数４，及び下記数５に基づいて算出することができる。
【００７０】
【数４】
δＯＳＡ（ｉ）＝Ｈ（ｉ）・ＣｇｉｎＯ２（ｉ）
【００７１】
【数５】
Ｈ（ｉ）＝ｈ・（ＯＳＡ（ｉ）／Ｃｍａｘ（ｉ））  （０  ≦  Ｈ（ｉ）  ＜  １）
【００７２】
上記数４及び上記数５において、Ｈ（ｉ）はブロック（ｉ）における流入酸素量ＣｇｉｎＯ２（ｉ）（負の値）に対する放出される酸素量（δＯＳＡ（ｉ），負の値）の割合を示す反応率である。ｈは第１触媒５３が新品の触媒であると想定した場合の反応速度定数であり上記数３にて使用されているものと同様である。また、上記数５における現時点での酸素吸蔵量ＯＳＡ（ｉ）の値は、ブロック（ｉ）における現時点での酸素放出余裕量を示している。このように、本触媒モデルでは、少なくとも触媒内の酸素吸蔵量に基づいて同触媒が内部に吸蔵している酸素から放出する酸素量を算出する。
【００７３】
なお、上記数３及び上記数５にて使用するブロック（ｉ）における最大酸素吸蔵量Ｃｍａｘ（ｉ）については後述する。また、上記数３及び上記数５にて使用するブロック（ｉ）における現時点での酸素吸蔵量ＯＳＡ（ｉ）は、初期値が付与された時点から現時点までの酸素吸蔵量変化量δＯＳＡ（ｉ）の積算値であるから下記数６に基づいて算出することができる。
【００７４】
【数６】
ＯＳＡ（ｉ）＝ΣδＯＳＡ（ｉ）    （０  ≦  ＯＳＡ（ｉ）  ≦  Ｃｍａｘ（ｉ））
【００７５】
次に、各ブロック間での境界条件について考えると、図６に示したように、互いに隣接する２つのブロックのうちの上流側のブロックの排ガス相の流出面と下流側のブロックの排ガス相の流入面は互いに連続しているから、図７に示したように、ブロック（ｉ）に流入する流入酸素量ＣｇｉｎＯ２（ｉ）は、ブロック（ｉ）に隣接する上流側のブロック（ｉ−１）から流出する流出酸素量ＣｇｏｕｔＯ２（ｉ−１）と等しく、また、ブロック（ｉ）から流出する流出酸素量ＣｇｏｕｔＯ２（ｉ）は、ブロック（ｉ）に隣接する下流側のブロック（ｉ＋１）に流入する流入酸素量ＣｇｉｎＯ２（ｉ＋１）と等しい。従って、下記数７に示した関係が成立する。換言すると、任意のｉ番目のブロック（ｉ）の流出酸素量ＣｇｏｕｔＯ２（ｉ）が求まればブロック（ｉ）に隣接する下流側のブロック（ｉ＋１）の流入酸素量ＣｇｉｎＯ２（ｉ＋１）が求まる。
【００７６】
【数７】
ＣｇｉｎＯ２（ｉ＋１）＝ＣｇｏｕｔＯ２（ｉ）
【００７７】
以上のことから、最上流のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）が境界条件として付与されれば、上記数２又は上記数４によりブロック（１）における酸素吸蔵量変化量δＯＳＡ（１）が求まり、その結果、上記数６によりブロック（１）における酸素吸蔵量ＯＳＡ（１）を更新できるとともに上記数１によりブロック（１）における流出酸素量ＣｇｏｕｔＯ２（１）が求まる。ブロック（１）における流出酸素量ＣｇｏｕｔＯ２（１）が求まれば、上記数７によりブロック（２）における流入酸素量ＣｇｉｎＯ２（２）が求まり、その結果、上記数２又は上記数４によりブロック（２）における酸素吸蔵量変化量δＯＳＡ（２）が求まる。これにより、上記数６によりブロック（２）における酸素吸蔵量ＯＳＡ（２）を更新できるとともに、上記数１によりブロック（２）における流出酸素量ＣｇｏｕｔＯ２（２）が求まる。
【００７８】
ＣＰＵ７１は、このような処理を所定の演算周期毎に繰り返し実行する。従って、ＣＰＵ７１の演算周期が経過する毎に最上流のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）が境界条件として付与されれば、上記数１〜上記数７より、最上流のブロック（１）から、順次、各ブロック（ｉ）  （ｉ＝１，２，・・・，Ｎ）  における酸素吸蔵量ＯＳＡ（ｉ），流入酸素量ＣｇｉｎＯ２（ｉ），及び流出酸素量ＣｇｏｕｔＯ２（ｉ）を全て算出することができる。これにより、触媒内部の酸素吸蔵量の分布が精度よく計算される。また、各ブロックの酸素吸蔵量ＯＳＡ（ｉ）  （ｉ＝１，２，・・・，Ｎ）  を触媒全体について積算すれば、同触媒全体の酸素吸蔵量ＯＳＡａｌｌについても精度よく計算することができる。更には、各ブロックから流出する流出酸素量ＣｇｏｕｔＯ２（ｉ）  （ｉ＝１，２，・・・，Ｎ）を計算することができ、これにより、ブロック（Ｎ）（従って、第１触媒５３）から流出する流出酸素量ＣｇｏｕｔＯ２（Ｎ）を計算することができる。このようにして、第１触媒５３が新品の触媒であると想定して構築された触媒モデルに基づいて同第１触媒５３から流出するガス中の酸素の過不足量（流出酸素量）ＣｇｏｕｔＯ２（Ｎ）を推定する手段が特定成分量推定手段に相当する。
【００７９】
なお、以下に、任意のｉ番目のブロック（ｉ）の流出酸素量ＣｇｏｕｔＯ２（ｉ）を求めるための一般式を求めておく。先ず、上記数１における「ｉ」を「１」に書き換えると下記数８が導かれる。
【００８０】
【数８】
ＣｇｏｕｔＯ２（１）＝ＣｇｉｎＯ２（１）−δＯＳＡ（１）
【００８１】
また、上記数１における「ｉ」を「２」に書き換えて、これに上記数７及び上記数８の関係を適用すると、下記数９が導かれる。
【００８２】
【数９】
2004300981.tif 000003
【００８３】
さらに、上記数１における「ｉ」を「３」に書き換え、これに上記数７及び上記数９の関係を適用すると、下記数１０が導かれる。
【００８４】
【数１０】
2004300981.tif 000004
【００８５】
このような手続きを繰り返すことにより、任意のｉ番目のブロック（ｉ）の流出酸素量ＣｇｏｕｔＯ２（ｉ）を求めるための一般式である下記数１１が導かれる。
【００８６】
【数１１】
ＣｇｏｕｔＯ２（ｉ）＝ＣｇｉｎＯ２（１）−δＯＳＡ（１）−δＯＳＡ（２）−  ・・・  −δＯＳＡ（ｉ−１）−δＯＳＡ（ｉ）
（ｉ＝１，２，・・・，Ｎ）
【００８７】
また、上記数１及び上記数２（又は上記数４）より下記数１２が導かれるから、下記数１２に上記数７の関係を適用し、その関係を一般的に記述すると、任意のｉ番目のブロック（ｉ）の流出酸素量ＣｇｏｕｔＯ２（ｉ）を求めるための他の一般式である下記数１３も容易に導くことができる。
【００８８】
【数１２】
ＣｇｏｕｔＯ２（ｉ）＝ＣｇｉｎＯ２（ｉ）・（１−Ｈ（ｉ））
【００８９】
【数１３】
2004300981.tif 000005
【００９０】
次に、上記数３及び数５において反応率Ｈ（ｉ）を求める際に必要となるブロック（ｉ）における最大酸素吸蔵量Ｃｍａｘ（ｉ）について説明する。この触媒モデルは第１触媒５３が新品の触媒であると想定して構築されているから、各ブロック（ｉ）の最大酸素吸蔵量Ｃｍａｘ（ｉ）  （ｉ＝１，・・・，Ｎ）の総和は、第１触媒５３が新品の触媒であるときの同第１触媒５３全体の最大酸素吸蔵量Ｃｍａｘａｌｌの値（一定値）となるように設定されている。また、各ブロック（ｉ）の最大酸素吸蔵量Ｃｍａｘ（ｉ）  （ｉ＝１，・・・，Ｎ）は、例えば、前記最大酸素吸蔵量Ｃｍａｘａｌｌの値をブロックの個数Ｎで除した値にそれぞれ設定されている。このように設定された各ブロック（ｉ）の最大酸素吸蔵量Ｃｍａｘ（ｉ）  （ｉ＝１，・・・，Ｎ）は、第１触媒５３の劣化の進行に拘わらず変化しない。
【００９１】
（触媒モデルの適用）
次に、以上説明した触媒モデルを、図８に示したように、第１触媒５３に適用し、各種値を求める例について説明する。
【００９２】
以下、第１触媒５３のｉ番目のブロックであるブロック（ｉ）における流入酸素量を流入酸素量ＣｇｉｎＯ２（ｉ），流出酸素量を流出酸素量ＣｇｏｕｔＯ２（ｉ），酸素吸蔵量をＯＳＡ（ｉ），最大酸素吸蔵量をＣｍａｘ（ｉ）とそれぞれ称呼する。また、各ブロックの酸素吸蔵量ＯＳＡ（ｉ）  （ｉ＝１，２，・・・，Ｎ）  を積算することにより得られる第１触媒５３全体の酸素吸蔵量を酸素吸蔵量ＯＳＡａｌｌと称呼し、各ブロックの最大酸素吸蔵量Ｃｍａｘ（ｉ）  （ｉ＝１，２，・・・，Ｎ）  を積算した値である第１触媒５３全体の最大酸素吸蔵量を最大酸素吸蔵量Ｃｍａｘａｌｌと称呼する。
【００９３】
この触媒モデルにおいては、図８に示したように、第１触媒５３の各ブロックにおける酸素吸蔵量ＯＳＡ（ｉ）  （ｉ＝１，２，・・・，Ｎ）の初期値を初期条件として付与するとともに、ＣＰＵ７１の演算周期が経過する毎に、第１触媒５３の最上流のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）を境界条件として付与すれば、第１触媒５３の各ブロック（ｉ）  （ｉ＝１，２，・・・，Ｎ）  における酸素吸蔵量ＯＳＡ（ｉ），流入酸素量ＣｇｉｎＯ２（ｉ），及び流出酸素量ＣｇｏｕｔＯ２（ｉ）を全て算出することができる。これにより、第１触媒５３全体の酸素吸蔵量ＯＳＡａｌｌも取得・算出することができる。
【００９４】
そこで、先ず、第１触媒５３の各ブロックにおける酸素吸蔵量の初期値を付与する手法について説明すると、本装置は、下流側空燃比センサ６７の出力Ｖｏｘｓが０．７（Ｖ）より大きい値を示したとき、即ち、第１触媒５３の下流側の空燃比が明白なリッチ空燃比となったときは、同第１触媒５３内に酸素が全く存在せず未燃ＨＣ，ＣＯが浄化されない状態となったことを意味するから、第１触媒５３の各ブロックにおける酸素吸蔵量ＯＳＡ（ｉ）  （ｉ＝１，２，・・・，Ｎ）  及び第１触媒５３全体の酸素吸蔵量ＯＳＡａｌｌを全て「０」に設定する。このようにして、第１触媒５３の各ブロックにおける酸素吸蔵量の初期値「０」が初期条件として付与される。
【００９５】
次に、第１触媒５３の最上流のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）を付与する手法について説明すると、本装置は、下記数１４に基づいてＣＰＵ７１の演算周期毎の流入酸素量ＣｇｉｎＯ２（１）を算出する。
【００９６】
【数１４】
ＣｇｉｎＯ２（１）＝０．２３・ｍｆｒ・（ａｂｙｆｓａｖｅ  −  ｓｔｏｉｃｈ）
【００９７】
上記数１４において、値「０．２３」は大気中に含まれる酸素の重量割合である。ｍｆｒは一演算周期Δｔ内における燃料噴射量Ｆｉの合計量であり、ｓｔｏｉｃｈは理論空燃比（例えば、１４．７）である。また、ａｂｙｆｓａｖｅは一演算周期Δｔ内において上流側空燃比センサ６６により検出された空燃比Ａ／Ｆの平均値である。
【００９８】
この数１４に示したように、一演算周期Δｔ内における噴射量の合計量ｍｆｒに、検出された空燃比Ａ／Ｆの平均値の理論空燃比からの偏移（ａｂｙｆｓａｖｅ  −  ｓｔｏｉｃｈ）を乗じることでこの一演算周期Δｔ内における空気の過剰量が求められ、この一演算周期Δｔ内における空気の過剰量に酸素の重量割合を乗じることで一演算周期Δｔにおける酸素の過剰量、即ち現時点での流入酸素量ＣｇｉｎＯ２（１）が求められる。
【００９９】
このようにして算出される流入酸素量ＣｇｉｎＯ２（１）は、上記数１４から明らかなように、酸素が過剰であるとき（即ち、空燃比がリーンであってａｂｙｆｓａｖｅ＞ｓｔｏｉｃｈのとき）に正の値となり、酸素が不足しているとき（即ち、空燃比がリッチであってａｂｙｆｓａｖｅ＜ｓｔｏｉｃｈのとき）に負の値となるように計算される。このようにして、ＣＰＵ７１の演算周期毎に第１触媒５３の最上流のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）が境界条件として付与される。
【０１００】
（実際の作動）
次に、上記のように構成された空燃比制御装置の実際の作動について、電気制御装置７０のＣＰＵ７１が実行するルーチンをフローチャートにより示した図９〜図１６を参照しながら説明する。
【０１０１】
ＣＰＵ７１は、図９に示した最終燃料噴射量Ｆｉの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が前記所定クランク角度になると、ＣＰＵ７１はステップ９００から処理を開始してステップ９０５に進み、エアフローメータ６１により計測された吸入空気流量Ｇａと、エンジン回転速度ＮＥとに基づいて、機関の空燃比を理論空燃比とするための基本燃料噴射量Ｆｂａｓｅをマップｆから求める。
【０１０２】
次いで、ＣＰＵ７１はステップ９１０に進み、基本燃料噴射量Ｆｂａｓｅに係数Ｋを乗じた値に後述する空燃比フィードバック補正量ＤＦｉを加えた値を最終燃料噴射量Ｆｉに設定する。この係数Ｋの値は、通常は「１．００」であり、後述するように被毒回復処理が実行されるとき、「１．００」以外の所定値に設定される。
【０１０３】
次いで、ＣＰＵ７１はステップ９１５に進んで、前記設定された最終燃料噴射量Ｆｉの燃料を噴射するための指示を吸気行程直前にある気筒のインジェクタ３９に対して行う。その後、ＣＰＵ７１はステップ９２０に進み、その時点の燃料噴射量合計量ｍｆｒに最終燃料噴射量Ｆｉを加えた値を新たな燃料噴射量合計量ｍｆｒに設定する。この燃料噴射量合計量ｍｆｒは、後述する流入酸素量ＣｇｉｎＯ２（１）を算出する際に用いられる。その後、ＣＰＵ７１はステップ９９５に進み、本ルーチンを一旦終了する。以上により、フィードバック補正された最終燃料噴射量Ｆｉの燃料が吸気行程を迎える気筒に対して噴射される。
【０１０４】
次に、上記空燃比フィードバック補正量ＤＦｉの算出について説明すると、ＣＰＵ７１は図１０に示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１０００から処理を開始し、ステップ１００５に進んで空燃比フィードバック制御条件が成立しているか否かを判定する。空燃比フィードバック制御条件は、例えば、機関の冷却水温ＴＨＷが第１所定温度以上であり、機関の一回転当りの吸入空気量（負荷、筒内吸入空気量Ｍｃ）が所定値以下であり、上流側空燃比センサ６６が正常（活性状態であることを含む。）であり、且つ、後述する被毒回復処理実行中フラグＰＷＭの値が「０」のときに成立する。なお、被毒回復処理実行中フラグＰＷＭは、その値が「１」のとき後述する被毒回復処理を実行していることを示し、その値が「０」のとき同被毒回復処理を実行していないことを示す。
【０１０５】
いま、空燃比フィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、現時点の上流側空燃比センサ６６の出力ｖａｂｙｆｓと後述するサブフィードバック制御量ｖａｆｓｆｂとの和（ｖａｂｙｆｓ＋ｖａｆｓｆｂ）を図３に示したマップに基づいて変換することにより、現時点における第１触媒５３の上流側制御用空燃比ａｂｙｆｓを求める。
【０１０６】
次に、ＣＰＵ７１はステップ１０１５に進み、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Ｍｃ（ｋ−Ｎ）を前記求めた上流側制御用空燃比ａｂｙｆｓで除することにより、現時点からＮストローク前の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求める。値Ｎは、内燃機関の排気量、燃焼室２５から上流側空燃比センサ６６までの距離等により異なる値である。
【０１０７】
このように、現時点からＮストローク前の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を上流側制御用空燃比ａｂｙｆｓで除するのは、燃焼室２５内で燃焼された混合気が上流側空燃比センサ６６に到達するまでには、Ｎストロークに相当する時間を要しているからである。なお、筒内吸入空気量Ｍｃは、各気筒の吸気行程毎に、その時点のエアフローメータ６１により計測された吸入空気流量Ｇａと、エンジン回転速度ＮＥとに基づいて求められ（例えば、エアフローメータ６１により計測された吸入空気流量Ｇａに一次遅れ処理を施した値をエンジン回転速度ＮＥで除することにより求められ）、各吸気行程に対応してＲＡＭ７３内に記憶されている。
【０１０８】
次いで、ＣＰＵ７１はステップ１０２０に進み、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を現時点からＮストローク前の時点における目標空燃比ａｂｙｆｒ（ｋ−Ｎ）（この例では、理論空燃比）で除することにより、現時点からＮストローク前の目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）を求める。そして、ＣＰＵ７１はステップ１０２５に進んで目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じた値を筒内燃料供給量偏差ＤＦｃとして設定する。つまり、筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。次に、ＣＰＵ７１はステップ１０３０に進み、下記数１５に基づいてフィードバック補正量ＤＦｉを求める。
【０１０９】
【数１５】
ＤＦｉ＝（Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ）・ＫＦＢ
【０１１０】
上記数１５において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。なお、数１５の係数ＫＦＢはエンジン回転速度ＮＥ、及び筒内吸入空気量Ｍｃにより可変とすることが好適であるが、ここでは「１」としている。また、値ＳＤＦｃは筒内燃料供給量偏差ＤＦｃの積分値であり、次のステップ１０３５にて更新される。即ち、ＣＰＵ７１は、ステップ１０３５にてその時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ１０２５にて求めた筒内燃料供給量偏差ＤＦｃを加えて、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを求め、ステップ１０９５にて本ルーチンを一旦終了する。以上により、フィードバック補正量ＤＦｉが求められ、このフィードバック補正量ＤＦｉが前述した図９のステップ９１０，９１５により燃料噴射量に反映されるので、Ｎストローク前の燃料供給量の過不足が補償され、機関に供給される混合気の空燃比の平均値が目標空燃比ａｂｙｆｒと略一致せしめられるようにフィードバック制御される。
【０１１１】
一方、ステップ１００５の判定時において、空燃比フィードバック制御条件が不成立であると、ＣＰＵ７１は同ステップ１００５にて「Ｎｏ」と判定してステップ１０４０に進み、空燃比フィードバック補正量ＤＦｉの値を「０」に設定し、ステップ１０９５に進んで本ルーチンを一旦終了する。このように、空燃比フィードバック制御条件が不成立であるときは、空燃比フィードバック補正量ＤＦｉを「０」として空燃比（基本燃料噴射量Ｆｂａｓｅ）の補正を行わない。
【０１１２】
次に、下流側空燃比センサ６７の出力に基づく先に説明した空燃比フィードバック制御について説明する。なお、かかる制御はサブフィードバック制御とも呼ばれる。このサブフィードバック制御により、サブフィードバック制御量ｖａｆｓｆｂが算出される。
【０１１３】
ＣＰＵ７１は、サブフィードバック制御量ｖａｆｓｆｂを求めるために、図１１に示したルーチンを所定時間の経過毎に実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１１００から処理を開始し、ステップ１１０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、前述したステップ１００５での空燃比フィードバック制御条件に加え、機関の冷却水温ＴＨＷが前記第１所定温度よりも高い第２所定温度以上であり、下流側空燃比センサ６７が正常（活性状態であることを含む。）のときに成立する。
【０１１４】
いま、サブフィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、前記目標値Ｖｏｘｓｒｅｆから現時点の下流側空燃比センサ６７の出力Ｖｏｘｓを減じることにより、出力偏差量ＤＶｏｘｓを求める。次に、ＣＰＵ７１はステップ１１１５に進み、下記数１６に基づいてサブフィードバック制御量ｖａｆｓｆｂを求める。
【０１１５】
【数１６】
ｖａｆｓｆｂ＝Ｋｐ・ＤＶｏｘｓ＋Ｋｉ・ＳＤＶｏｘｓ
【０１１６】
上記数１６において、Ｋｐは予め設定された比例ゲイン、Ｋｉは予め設定された積分ゲインである。また、ＳＤＶｏｘｓは、出力偏差量ＤＶｏｘｓの積分値であって、次のステップ１１２０にて更新される値である。即ち、ＣＰＵ７１は、ステップ１１２０に進むと、その時点における出力偏差量の積分値ＳＤＶｏｘｓに上記ステップ１１１０にて求めた出力偏差量ＤＶｏｘｓを加えて、新たな出力偏差量の積分値ＳＤＶｏｘｓを求め、その後、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１１７】
このようにして、サブフィードバック制御量ｖａｆｓｆｂが求められ、この値は前述した図１０のステップ１０１０にて上流側空燃比センサ６６の実際の出力ｖａｂｙｆｓに加えられ、その和（ｖａｂｙｆｓ  ＋  ｖａｆｓｆｂ）が図３に示したマップに基づいて前記上流側制御用空燃比ａｂｙｆｓに変換される。換言すると、下流側空燃比センサ６７の出力Ｖｏｘｓに基づいて求められる（修正される）上流側制御用空燃比ａｂｙｆｓは、上流側空燃比センサ６６が実際に検出している空燃比に対して、サブフィードバック制御量ｖａｆｓｆｂに相当する分だけ異なる空燃比として求められる。この結果、前述した図１０のステップ１０１５にて計算される筒内燃料供給量Ｆｃ（ｋ−Ｎ）が下流側空燃比センサ６７の出力Ｖｏｘｓに応じて変化し、ステップ１０２５，１０３０にてフィードバック補正量ＤＦｉが同下流側空燃比センサ６７の出力Ｖｏｘｓに応じて変更せしめられる。これにより、第１触媒５３の下流側の空燃比が目標値Ｖｏｘｓｒｅｆに一致するように、機関に供給される混合気の空燃比（従って、第１触媒５３に流入するガスの空燃比）が制御せしめられる。
【０１１８】
例えば、機関に供給される混合気の平均的な空燃比がリーンであるために下流側空燃比センサ６７の出力Ｖｏｘｓが理論空燃比よりもリーンである空燃比に対応した値を示すと、ステップ１１１０にて求められる出力偏差量ＤＶｏｘｓが正の値となるので、ステップ１１１５にて求められるサブフィードバック制御量ｖａｆｓｆｂは正の値となる（図５（Ａ）においては、例えば、時刻ｔ２’〜ｔ３’）。従って、ステップ１０１０にて求められるａｂｙｆｓは上流側空燃比センサ６６が実際に検出している空燃比よりもリーンな値（より大きな値）として求められる。このため、ステップ１０１５にて求められる筒内燃料供給量Ｆｃ（ｋ−Ｎ）は小さい値となり、ステップ１０２５にて求められる筒内燃料供給量偏差ＤＦｃは大きい正の値として求められるので、ステップ１０３０にて求められる空燃比フィードバック補正量ＤＦｉが大きい正の値となる。これにより、図９のステップ９１０にて求められる最終燃料噴射量Ｆｉは、基本燃料噴射量Ｆｂａｓｅよりも大きくなって、機関に供給される混合気の空燃比がリッチとなるように制御される。
【０１１９】
反対に、機関に供給される混合気の平均的な空燃比がリッチであるために下流側空燃比センサ６７の出力Ｖｏｘｓが理論空燃比よりもリッチ空燃比に対応した値を示すと、ステップ１１１０にて求められる出力偏差量ＤＶｏｘｓが負の値となるので、ステップ１１１５にて求められるサブフィードバック制御量ｖａｆｓｆｂは負の値となる（図５（Ａ）においては、例えば、時刻ｔ１’〜ｔ２’，時刻ｔ３’〜ｔ４’）。従って、ステップ１０１０にて求められるａｂｙｆｓは上流側空燃比センサ６６が実際に検出している空燃比よりもリッチな値（より小さな値）として求められる。このため、ステップ１０１５にて求められる筒内燃料供給量Ｆｃ（ｋ−Ｎ）は大きい値となり、筒内燃料供給量偏差ＤＦｃは負の値として求められるので、フィードバック補正量ＤＦｉが負の値となる。これにより、図９のステップ９１０にて求められる最終燃料噴射量Ｆｉは、基本燃料噴射量Ｆｂａｓｅよりも小さくなって、機関に供給される混合気の空燃比がリーンとなるように制御される。
【０１２０】
一方、サブフィードバック制御条件が不成立であるとき、ＣＰＵ７１はステップ１１０５にて「Ｎｏ」と判定してステップ１１２５に進み、サブフィードバック制御量ｖａｆｓｆｂの値を「０」に設定する。これにより、下流側空燃比センサ６７の出力Ｖｏｘｓに基づくサブフィードバック制御が停止される。
【０１２１】
次に、第１触媒５３の各ブロック毎の流出酸素量，酸素吸蔵量等の算出における作動について説明する。ＣＰＵ７１は図１２及び図１３のフローチャートにより示された各ルーチンを所定時間の経過毎に実行するようになっている。
【０１２２】
従って、所定のタイミングになると、ＣＰＵ７１は、第１触媒５３の各ブロック毎の流出酸素量，酸素吸蔵量等を算出するための図１２に示したルーチンのステップ１２００から処理を開始し、ステップ１２０５に進んで、先に説明した上流側空燃比センサ６６により検出された空燃比Ａ／Ｆの平均値ａｂｙｆｓａｖｅと、図９のステップ９２０にて逐次更新されている燃料噴射量合計量ｍｆｒの最新値と、上記数１４に基づくステップ１２０５内に記載した式とに基づいて、先に説明したように境界条件である第１触媒５３のブロック（１）における流入酸素量ＣｇｉｎＯ２（１）を算出する。
【０１２３】
次いで、ＣＰＵ７１はステップ１２１０に進んでカウンタ値ｎの値、及び第１触媒５３の酸素吸蔵量ＯＳＡａｌｌの値をそれぞれ「０」に設定した後、ステップ１２１５に進んで第１触媒５３の各ブロック毎の流出酸素量，酸素吸蔵量等を算出する処理を開始する。まず、ＣＰＵ７１はステップ１２１５においてカウンタ値ｎの値を「１」だけ増大して「１」に設定する。カウンタ値ｎは第１触媒５３のブロックの番号を示している。この時点ではカウンタ値ｎの値は「１」であり、続くステップ１２２０からステップ１２７５までの今回の処理においてカウンタ値ｎの値は「１」に維持されるので、今回の同ステップ１２２０〜ステップ１２７５までの処理においては最上流のブロック（１）における計算が実行される。
【０１２４】
まず、ＣＰＵ７１はステップ１２２０に進んで、流入酸素量ＣｇｉｎＯ２（１）の値が「０」以上であるか否かを判定し、流入酸素量ＣｇｉｎＯ２（１）の値が「０」以上であれば同ステップ１２２０において「Ｙｅｓ」と判定するとともにステップ１２２５に進んで、先に説明したように予め所定の一定値に設定されているブロック（１）の最大酸素吸蔵量Ｃｍａｘ（１）の値と、後述するステップ１２６０にて前回本ルーチンが実行されたときに計算（更新）されたブロック（１）の酸素吸蔵量ＯＳＡ（１）の値と、上記数３（の右辺）に基づくステップ１２２５内に記載した式とに基づいてブロック（１）における反応率Ｈを算出する。
【０１２５】
また、ステップ１２２０における判定において、流入酸素量ＣｇｉｎＯ２（１）の値が「０」以上でなければＣＰＵ７１は同ステップ１２２０において「Ｎｏ」と判定するとともにステップ１２３０に進んで、上記最大酸素吸蔵量Ｃｍａｘ（１）の値と、上記酸素吸蔵量ＯＳＡ（１）の値と、上記数５（の右辺）に基づくステップ１２３０内に記載した式とに基づいてブロック（１）における反応率Ｈを算出する。
【０１２６】
次いで、ＣＰＵ７１はステップ１２３５に進み、ステップ１２２５又はステップ１２３０にて算出した反応率Ｈの値と、ステップ１２０５にて算出したブロック（１）における流入酸素量ＣｇｉｎＯ２（１）の値と、上記数２（の右辺）又は上記数４（の右辺）に基づくステップ１２３５内に記載した式とに基づいてブロック（１）における酸素吸蔵量変化量δＯＳＡ（１）を算出する。
【０１２７】
次に、ＣＰＵ７１はステップ１２４０に進んで、後述するステップ１２６０にて前回本ルーチンが実行されたときに計算されたブロック（１）の酸素吸蔵量ＯＳＡ（１）の値とステップ１２３５にて今回算出したブロック（１）の酸素吸蔵量変化量δＯＳＡ（１）の値とを積算した値がブロック（１）における最大酸素吸蔵量Ｃｍａｘ（１）の値以下であるか否かを判定する。
【０１２８】
ここで、前記積算した値が最大酸素吸蔵量Ｃｍａｘ（１）の値以下であればＣＰＵ７１はステップ１２４０にて「Ｙｅｓ」と判定してステップ１２４５に進んで同積算した値が「０」以上であるか否かを判定するとともに、同積算した値が「０」以上であれば同ステップ１２４５にて「Ｙｅｓ」と判定してステップ１２６０に進んで、同積算した値を新たな酸素吸蔵量ＯＳＡ（１）として設定する。このように、前記積算した値が「０」以上最大酸素吸蔵量Ｃｍａｘ（１）以下であればステップ１２３５にて算出された酸素吸蔵量変化量δＯＳＡ（１）の値がそのままブロック（１）における酸素吸蔵量変化量として使用される。
【０１２９】
一方、ステップ１２４０の判定において、前記積算した値が最大酸素吸蔵量Ｃｍａｘ（１）の値を超えていればＣＰＵ７１は同ステップ１２４０にて「Ｎｏ」と判定してステップ１２５０に進み、最大酸素吸蔵量Ｃｍａｘ（１）の値から前回算出した酸素吸蔵量ＯＳＡ（１）の値を減算した値を酸素吸蔵量変化量δＯＳＡ（１）に格納した後、ステップ１２６０に進む。このように、前記積算した値がブロック（１）における最大酸素吸蔵量Ｃｍａｘ（１）を超えていれば今回ステップ１２６０にて算出されるブロック（１）における酸素吸蔵量ＯＳＡ（１）の値が最大酸素吸蔵量Ｃｍａｘ（１）を超えてしまうことを意味するので、今回ステップ１２６０にて算出される酸素吸蔵量ＯＳＡ（１）の値が最大酸素吸蔵量Ｃｍａｘ（１）の値と等しくなるように酸素吸蔵量変化量δＯＳＡ（１）が調整される。
【０１３０】
同様に、ステップ１２４５の判定において、前記積算した値が「０」未満（負の値）となっていればＣＰＵ７１は同ステップ１２４５にて「Ｎｏ」と判定してステップ１２５５に進み、前回算出した酸素吸蔵量ＯＳＡ（１）の値に対して符号を反転させた値を酸素吸蔵量変化量δＯＳＡ（１）に格納した後、ステップ１２６０に進む。このように、前記積算した値が「０」未満であれば今回ステップ１２６０にて算出されるブロック（１）における酸素吸蔵量ＯＳＡ（１）の値が「０」未満（負の値）になってしまうことを意味するので、今回ステップ１２６０にて算出される酸素吸蔵量ＯＳＡ（１）の値が「０」になるように酸素吸蔵量変化量δＯＳＡ（１）が調整される。
【０１３１】
ステップ１２６０にてブロック（１）における今回の酸素吸蔵量ＯＳＡ（１）を算出した後、ＣＰＵ７１はステップ１２６５に進んでステップ１２０５にて算出したブロック（１）における流入酸素量ＣｇｉｎＯ２（１）の値と、上記調整後のブロック（１）における酸素吸蔵量変化量δＯＳＡ（１）の値と、上記数１（の右辺）に基づくステップ１２６５内に記載した式とに基づいてブロック（１）における流出酸素量ＣｇｏｕｔＯ２（１）を算出する。
【０１３２】
次いで、ＣＰＵ７１はステップ１２７０に進んで、（現時点ではステップ１２１０の実行により「０」となっている）現時点における第１触媒５３の酸素吸蔵量ＯＳＡａｌｌの値にステップ１２６０にて算出されたブロック（１）における今回の酸素吸蔵量ＯＳＡ（１）の値を加えた値を新たな酸素吸蔵量ＯＳＡａｌｌとして格納した後、ステップ１２７５に進んで、ステップ１２６５にて算出されたブロック（１）における流出酸素量ＣｇｏｕｔＯ２（１）の値と、上記数７に基づいてブロック（１）に隣接する下流側のブロック（２）における流入酸素量ＣｇｉｎＯ２（２）を算出する。
【０１３３】
そして、ＣＰＵ７１はステップ１２８０に進んでカウンタ値ｎの値が第１触媒５３のブロック数Ｎと等しいか否かを判定する。現時点ではカウンタ値ｎの値は「１」であるから、ＣＰＵ７１はステップ１２８０にて「Ｎｏ」と判定し、再びステッ１２１５に戻ってカウンタ値ｎの値を「１」だけ増大して「２」に設定した後、続くステップ１２２０〜ステップ１２７５までの処理を実行することで次のブロックであるブロック（２）における計算を実行する。このとき、ステップ１２６５における流入酸素量ＣｇｉｎＯ２（２）の値としては前回ステップ１２７５にて算出した流入酸素量ＣｇｉｎＯ２（２）の値が使用される。
【０１３４】
このようにして、ステップ１２２０〜ステップ１２７５までの処理は、カウンタ値ｎの値が第１触媒５３のブロック数Ｎと等しくなるまで繰り返し実行される。これにより、第１触媒５３の最上流のブロック（１）から最下流のブロック（Ｎ）までの各ブロック（ｎ）の流入酸素量ＣｇｉｎＯ２（ｎ）、流出酸素量ＣｇｏｕｔＯ２（ｎ）、酸素吸蔵量変化量δＯＳＡ（ｎ）、及び酸素吸蔵量ＯＳＡ（ｎ）の値が順次算出されていく。また、ステップ１２７０の処理が繰り返し実行されることにより、第１触媒５３の酸素吸蔵量ＯＳＡａｌｌも算出される。このようにして、カウンタ値ｎの値がブロック数Ｎであるときにステップ１２６５にて算出される値が第１触媒５３から流出するガス中の酸素の過不足量（流出酸素量）ＣｇｏｕｔＯ２（Ｎ）となる。
【０１３５】
ステップ１２１５の処理が繰り返されることによりカウンタ値ｎの値が第１触媒５３のブロック数Ｎと等しくなると、ＣＰＵ７１はステップ１２８０にて「Ｙｅｓ」と判定し、続くステップ１２８５にて燃料噴射量合計量ｍｆｒの値を「０」に設定した後、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１３６】
また、ＣＰＵ７１は、所定のタイミングになると、第１触媒５３の各ブロック毎の酸素吸蔵量の値、並びに第１触媒５３の酸素吸蔵量の値を初期化（クリア）するための図１３にフローチャートにより示したルーチンのステップ１３００から処理を開始し、ステップ１３０５に進んで、下流側空燃比センサ６７の出力Ｖｏｘｓの値が０．７（Ｖ）より大きいか否かをモニタする。このとき、下流側空燃比センサ６７の出力Ｖｏｘｓの値が０．７（Ｖ）より大きければ、即ち、第１触媒５３の下流空燃比がリッチ空燃比であれば、同第１触媒５３内全体に吸蔵されている酸素量が「０」であることを意味するので、ＣＰＵ７１はステップ１３１０に進んで第１触媒５３の各ブロック毎の酸素吸蔵量の値及び第１触媒５３の酸素吸蔵量の値を総て「０」に設定する処理を開始する。一方、ステップ１３０５の判定において、下流側空燃比センサ６７の出力Ｖｏｘｓの値が０．７（Ｖ）以下であれば、ＣＰＵ７１はステップ１３０５からステップ１３９５に直接進んで本ルーチンを一旦終了する。
【０１３７】
いま、ステップ１３０５の判定において下流側空燃比センサ６７の出力Ｖｏｘｓの値が０．７（Ｖ）より大きくなっているとすると、ＣＰＵ７１はステップ１３１０に進み、カウンタ値ｎの値を「０」に設定した後、ステップ１３１５に進んでカウンタ値ｎの値を「１」だけ増大して「１」に設定する。次いで、ＣＰＵ７１はステップ１３２０に進んで、第１触媒５３のブロック（ｎ）における酸素吸蔵量ＯＳＡ（ｎ）の値を「０」に設定する。この時点ではカウンタ値ｎの値は「１」であるから、最上流のブロック（１）における酸素吸蔵量ＯＳＡ（１）の値が「０」に設定される。
【０１３８】
そして、ＣＰＵ７１はステップ１３２５に進んでカウンタ値ｎの値が第１触媒５３のブロック数Ｎと等しいか否かを判定する。現時点ではカウンタ値ｎの値は「１」であるから、ＣＰＵ７１はステップ１３２５にて「Ｎｏ」と判定し、再びステップ１３１５に戻ってカウンタ値ｎの値を「１」だけ増大した後ステップ１３２０及びステップ１３２５の処理を実行する。即ち、ステップ１３２０及びステップ１３２５の処理は、カウンタ値ｎの値が第１触媒５３のブロック数Ｎと等しくなるまで繰り返し実行される。これにより、第１触媒５３の最上流のブロック（１）から最下流のブロック（Ｎ）までの各ブロック（ｎ）における酸素吸蔵量ＯＳＡ（ｎ）の値が総て「０」にクリアされる。
【０１３９】
前述のステップ１３１５の処理が繰り返されることによりカウンタ値ｎの値が触媒５３のブロック数Ｎと等しくなると、ＣＰＵ７１はステップ１３２５にて「Ｙｅｓ」と判定してステップ１３３０に進み、第１触媒５３の酸素吸蔵量ＯＳＡａｌｌの値を「０」に設定した後、ステップ１３９５に進んで本ルーチンを一旦終了する。
【０１４０】
次に、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態となる頻度ＳＭＬが前記基準値ＳＭＬ０に達する毎（一サンプリング期間が経過する毎）にこの一サンプリング期間中にて下流側空燃比センサ６７の出力Ｖｏｘｓが同第１の状態となった時点において流出酸素量ＣｇｏｕｔＯ２（Ｎ）が前記第２の状態になっている頻度ＦＲＥを求める際の作動について説明する。ＣＰＵ７１は図１４のフローチャートにより示された各ルーチンを所定時間の経過毎に実行するようになっている。
【０１４１】
従って、所定のタイミングになると、ＣＰＵ７１はステップ１４００から処理を開始し、ステップ１４０５に進んで、前述の図１１のステップ１１０５におけるものと同様のサブフィードバック制御条件が成立していて、且つ、被毒回復処理実行中フラグＰＷＭの値が「０」になっているか否かを判定し、ステップ１４０５にて「Ｎｏ」と判定するときはステップ１４５０に直ちに進んで、現時点での下流側空燃比センサ出力Ｖｏｘｓの値を前回の下流側空燃比センサ出力Ｖｏｘｓｐとして設定した後、本ルーチンを一旦終了する。これは、下流側空燃比センサ６７が正常であって、且つ後述する被毒回復処理が実行されていない場合における前記頻度ＦＲＥを算出するためである。
【０１４２】
いま、サブフィードバック制御条件が成立し、被毒回復処理実行中フラグＰＷＭの値が「０」になっていて、且つ、下流側空燃比センサ６７の出力Ｖｏｘｓがリッチ側所定値Ｖｒｉｃｈを増加しながら、或いはリーン側所定値Ｖｌｅａｎを減少しながら通過する前記第１の状態となっていないものとして説明を続けると、ＣＰＵ７１はステップ１４０５にて「Ｙｅｓ」と判定してステップ１４１０に進み、今回の（現時点での）下流側空燃比センサ出力Ｖｏｘｓの値がリッチ側所定値Ｖｒｉｃｈよりも大きく、且つ、前回本ルーチン実行時にステップ１４５０にて更新されている前回の下流側空燃比センサ出力Ｖｏｘｓｐの値が同リッチ側所定値Ｖｒｉｃｈ以下であるか否か（従って、下流側空燃比センサ出力Ｖｏｘｓがリッチ側所定値Ｖｒｉｃｈを増加しながら通過しているか否か）を判定する。
【０１４３】
現時点では、上記の仮定に従い、ＣＰＵ７１はステップ１４１０にて「Ｎｏ」と判定してステップ１４１５に進み、今回の下流側空燃比センサ出力Ｖｏｘｓの値がリーン側所定値Ｖｌｅａｎよりも小さく、且つ、前回の下流側空燃比センサ出力Ｖｏｘｓｐの値が同リーン側所定値Ｖｌｅａｎ以上であるか否か（従って、下流側空燃比センサ出力Ｖｏｘｓがリーン側所定値Ｖｌｅａｎを減少しながら通過しているか否か）を判定する。
【０１４４】
現時点では、上記の仮定に従い、ＣＰＵ７１はステップ１４１５でも「Ｎｏ」と判定してステップ１４５０に直ちに進む。以降、ＣＰＵ７１は、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態とならない限りにおいてステップ１４００〜１４１５，１４５０の処理を繰り返し実行する。
【０１４５】
次に、この状態から、下流側空燃比センサ出力Ｖｏｘｓがリッチ側所定値Ｖｒｉｃｈを増加しながら通過した場合（図５（Ａ）においては時刻ｔ１，ｔ３）について説明すると、この場合、ＣＰＵ７１はステップ１４１０に進んだとき「Ｙｅｓ」と判定してステップ１４２０に進み、現時点での頻度ＳＭＬの値を「１」だけ増大した値を新たな頻度ＳＭＬとして設定する。
【０１４６】
次いで、ＣＰＵ７１はステップ１４２５に進んで、前述した図１２のステップ１２６５にて算出されている流出酸素量ＣｇｏｕｔＯ２（Ｎ）の最新値が負の閾値Ｃｒｅｆｍｎｓよりも小さい値になっているか（即ち、流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっているか）否かを判定し、「Ｙｅｓ」と判定するときにはステップ１４３０にて現時点での頻度ＦＲＥの値を「１」だけ増大した値を新たな頻度ＦＲＥとして設定した後にステップ１４５０に進む。一方、ステップ１４２５の判定にて「Ｎｏ」と判定するときにはＣＰＵ７１は頻度ＦＲＥの値を現時点での値に維持したままステップ１４５０に直ちに進む。以降、ＣＰＵ７１は、再び、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態とならない限りにおいてステップ１４００〜１４１５，１４５０の処理を繰り返し実行するようになる。
【０１４７】
次に、この状態から、下流側空燃比センサ出力Ｖｏｘｓがリーン側所定値Ｖｌｅａｎを減少しながら通過した場合（図５（Ａ）においては時刻ｔ２，ｔ４）について説明すると、この場合、ＣＰＵ７１はステップ１４１５に進んだとき「Ｙｅｓ」と判定してステップ１４３５に進み、現時点での頻度ＳＭＬの値を「１」だけ増大した値を新たな頻度ＳＭＬとして設定する。
【０１４８】
次いで、ＣＰＵ７１はステップ１４４０に進んで、前述した図１２のステップ１２６５にて算出されている流出酸素量ＣｇｏｕｔＯ２（Ｎ）の最新値が正の閾値Ｃｒｅｆｐｌｓよりも大きい値になっているか（即ち、流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっているか）否かを判定し、「Ｙｅｓ」と判定するときにはステップ１４４５にて現時点での頻度ＦＲＥの値を「１」だけ増大した値を新たな頻度ＦＲＥとして設定した後にステップ１４５０に進む。一方、ステップ１４４０の判定にて「Ｎｏ」と判定するときにはＣＰＵ７１は頻度ＦＲＥの値を現時点での値に維持したままステップ１４５０に直ちに進む。以降、ＣＰＵ７１は、再び、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態とならない限りにおいてステップ１４００〜１４１５、１４５０の処理を繰り返し実行するようになる。
【０１４９】
このように、本ルーチンが繰り返し実行されることにより、下流側空燃比センサ６７の出力Ｖｏｘｓが前記第１の状態となる毎に頻度ＳＭＬの値が「１」だけ増大されるとともに、下流側空燃比センサ６７の出力Ｖｏｘｓが同第１の状態となった時点において流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっている毎に頻度ＦＲＥの値が「１」だけ増大されていく。
【０１５０】
また、ＣＰＵ７１は、図１５にフローチャートにより示した第１触媒５３の劣化判定を行うためのルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１はステップ１５００から処理を開始し、ステップ１５０５に進んで、頻度ＳＭＬの値が前記基準値ＳＭＬ０以上となったか否かを判定する。このとき、頻度ＳＭＬの値が基準値ＳＭＬ０よりも小さければ、ＣＰＵ７１は触媒の劣化判定を行うことなくステップ１５９５に直ちに進んで本ルーチンを一旦終了する。
【０１５１】
一方、頻度ＳＭＬが基準値ＳＭＬ０に達していると（即ち、前記一サンプリング期間が経過すると）、ＣＰＵ７１はステップ１５０５にて「Ｙｅｓ」と判定してステップ１５１０に進み、頻度ＦＲＥの値が劣化判定基準値ＦＲＥｒｅｆ以上であるか否かを判定する。
【０１５２】
いま、第１触媒５３の劣化の程度が少ないものとして説明を続けると、この場合、頻度ＦＲＥの値が劣化判定基準値ＦＲＥｒｅｆ以上となっている。従って、ＣＰＵ７１はステップ１５１０にて「Ｙｅｓ」と判定してステップ１５１５に進んで、劣化判定フラグＸＲの値を「０」に設定し、続くステップ１５２０にてカウンタＣＮＴの値を「０」に設定する。ここで、劣化判定フラグＸＲは、その値が「１」であるとき第１触媒５３が前記劣化触媒であることを示し、その値が「０」であるとき第１触媒５３が前記正常触媒であることを示す。また、カウンタＣＮＴの値は、前記一サンプリング期間の経過毎に連続して劣化判定フラグＸＲが「１」となる（従って、連続して第１触媒５３が劣化触媒であると判定される）回数を示す値である。
【０１５３】
そして、ＣＰＵ７１はステップ１５２５に進み、警報ランプ８２に同警報ランプ８２を消灯させるための指示信号を送出するとともに、続くステップ１５３０にて頻度ＳＭＬの値、及び頻度ＦＲＥの値を共に「０」に設定した後、ステップ１５９５に進んで本ルーチンを一旦終了する。これにより、図１４のルーチンが繰り返し実行されることで、再度、頻度ＳＭＬの値が基準値ＳＭＬ０に達するまで（即ち、次の一サンプリング期間が経過するまで）頻度ＦＲＥの値が「０」から更新されていき、次の一サンプリング期間が経過するとその時点における更新された頻度ＦＲＥの値に基づいて再び第１触媒５３の劣化判定が実行される。そして、かかる頻度ＦＲＥの値が劣化判定基準値ＦＲＥｒｅｆ以上となっている限りにおいて、第１触媒５３は正常触媒であると判定され続ける。
【０１５４】
次に、この状態から、第１触媒５３の劣化が進行して頻度ＦＲＥの値が劣化判定基準値ＦＲＥｒｅｆより小さくなった場合について説明すると、この場合、ＣＰＵ７１はステップ１５１０にて「Ｎｏ」と判定してステップ１５３５に進むようになり、同ステップ１５３５にて劣化判定フラグＸＲの値を「１」に設定し、続くステップ１５４０にて被毒回復処理実行中フラグＰＷＭの値を「１」に設定するとともに、続くステップ１５４５にて現時点でのカウンタＣＮＴの値（現時点では「０」である。）を「１」だけ増大した値（＝１）を新たなカウンタＣＮＴとして設定する。
【０１５５】
次いで、ＣＰＵ７１はステップ１５５０に進み、カウンタＣＮＴの値が「１」以下であるか、即ち、連続して第１触媒５３が劣化触媒であると判定された回数が１回以下であるか否かを判定する。現時点では、カウンタＣＮＴの値は「１」であるから、ＣＰＵ７１はステップ１５５０にて「Ｙｅｓ」と判定してステップ１５３０に直ちに進んで頻度ＳＭＬの値、及び頻度ＦＲＥの値を共に「０」に設定した後、ステップ１５９５に進んで本ルーチンを一旦終了する。
【０１５６】
これにより、被毒回復処理実行中フラグＰＷＭの値が「１」となって前述の空燃比フィードバック制御条件が成立しなくなるから、ＣＰＵ７１は図１０のステップ１００５にて「Ｎｏ」と判定してステップ１０４０に進むようになり、空燃比フィードバック補正量ＤＦｉの値が「０」に設定されて前述の空燃比フィードバック制御が中断されるようになる。また、ＣＰＵ７１は図１４のステップ１４０５にて「Ｎｏ」と判定してステップ１４５０に直ちに進むようになり、頻度ＦＲＥの算出も中断されるようになる。従って、頻度ＳＭＬの値が「０」に維持されるから、ＣＰＵ７１が図１５のステップ１５０５にて「Ｎｏ」と判定し続けることで、第１触媒５３の劣化判定が実行されなくなる。これにより、カウンタＣＮＴの値は「１」に維持される。
【０１５７】
また、ＣＰＵ７１は、図１６にフローチャートにより示した被毒回復処理を実行するためのルーチンを実行するようになっている。一般に、第１触媒５３のような三元触媒の劣化には、大別すると、熱による劣化と被毒による劣化が存在する。ここで、三元触媒が熱により劣化した場合、その劣化状態を解消することは困難である。一方、三元触媒が被毒により劣化した場合、所定の被毒回復処理を実行することでその劣化状態を解消できる可能性があることが知られている。以下、かかる被毒による劣化、及び、被毒回復処理について簡単に説明する。
【０１５８】
触媒は、排気ガス中の還元剤（例えば、ＨＣ，ＣＯ等の未燃成分）が所定量だけ連続的に流入すると、同還元剤が同触媒内の貴金属やセリア（ＣｅＯ２）（以下、「貴金属等」と称呼する。）の表面に付着して貴金属等の表面積が小さくなることにより被毒（所謂、一次被毒）し、かかる被毒により劣化する（例えば、触媒の最大酸素吸蔵量が低下する）ことが知られている。また、一方では、還元剤による触媒の一次被毒状態は、同触媒に所定量の酸素（従って、リーン空燃比のガス）を供給することにより解消することも知られている。
【０１５９】
他方、触媒は、排気ガス中の硫黄成分が所定量だけ連続的に流入すると、同硫黄成分が同触媒内の貴金属等の表面に付着して貴金属等の表面積が小さくなることにより被毒（所謂、一次被毒）し、かかる被毒によっても劣化することが知られている。また、一方では、硫黄成分による触媒の一次被毒状態は、同触媒に所定量の還元剤（例えば、ＨＣ，ＣＯ等の未燃成分。従って、リッチ空燃比のガス）を供給することにより解消することも知られている。
【０１６０】
以上のことから、本触媒劣化判定装置は、第１触媒５３が劣化触媒であると判定される毎に（即ち、図１５のステップ１５４０が実行されて被毒回復処理実行中フラグＰＷＭの値が「０」から「１」に変更される毎に）、前述の空燃比フィードバック制御を中止して機関に供給される混合気の空燃比を、所定の期間の経過毎に所定のリッチ空燃比、所定のリーン空燃比、同所定のリッチ空燃比、同所定のリーン空燃比の順に強制的に制御する被毒回復処理を実行する。
【０１６１】
このような被毒回復処理を実行するため、ＣＰＵ７１は、図１６のルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１６００から処理を開始し、ステップ１６０５に進んで、被毒回復処理実行中フラグＰＷＭの値が「１」であるか否かを判定し、「Ｎｏ」と判定する場合、被毒回復処理を実行することなくステップ１６９５に直ちに進んで本ルーチンを一旦終了する。
【０１６２】
いま、前述の図１５のステップ１５４０が実行された直後であるものとして説明を続けると、ＣＰＵ７１はステップ１６０５にて「Ｙｅｓ」と判定してステップ１６１０に進み、被毒回復処理実行中フラグＰＷＭの値が「０」から「１」に変更されたか否かを判定する。現時点は、図１５のステップ１５４０が実行された直後であって被毒回復処理実行中フラグＰＷＭの値が「０」から「１」に変更された直後であるから、ＣＰＵ７１はステップ１６１０にて「Ｙｅｓ」と判定してステップ１６１５に進み、カウンタ値Ｔを「０」に設定するとともに、続くステップ１６２０にて図９のステップ９１０にて使用される係数Ｋの値を「１．０２」に設定する。ここで、カウンタ値Ｔは被毒回復処理が開始された時点からの経過時間を表す値である。
【０１６３】
次いで、ＣＰＵ７１はステップ１６２５に進み、カウンタ値を「１」だけ増大し、続くステップ１６３０にてカウンタ値Ｔが「４・Ｔ１」よりも小さいか否かを判定する。ここで、Ｔ１は前記所定の期間に相当する値である。従って、このステップ１６３０では、被毒回復処理が開始された後に前記所定の期間が４回繰り返されていないか否か、即ち、被毒回復処理を終了すべき時期が到来していないか否かが判定される。
【０１６４】
現時点は被毒回復処理が開始された直後であるから、ＣＰＵ７１はステップ１６３０にて「Ｙｅｓ」と判定してステップ１６３５に進み、カウンタ値Ｔが値「Ｔ１」又は値「３・Ｔ１」の何れかになっているか否かを判定する。現時点は被毒回復処理が開始された直後であるから、ＣＰＵ７１はステップ１６３０にて「Ｎｏ」と判定してステップ１６４０に進み、カウンタ値Ｔが値「２・Ｔ１」になっているか否かを判定する。現時点は被毒回復処理が開始された直後であるから、ＣＰＵ７１はステップ１６４０でも「Ｎｏ」と判定してステップ１６９５に直ちに進んで本ルーチンを一旦終了する。
【０１６５】
以降、ステップ１６２５が繰り返し実行されてカウンタ値Ｔが値Ｔ１になるまで（従って、被毒回復処理開始後に前記所定の期間が経過するまで）ＣＰＵ７１は、ステップ１６００〜１６１０，１６２５〜１６４０，１６９５の処理を繰り返し実行する。従って、被毒回復処理開始後に前記所定の期間が経過するまでの間、図９のステップ９１０の実行により、基本燃料噴射量Ｆｂａｓｅが１．０２倍された値が最終燃料噴射量Ｆｉとして算出され（空燃比フィードバック補正量ＤＦｉの値は「０」に設定されている。）、この最終燃料噴射量Ｆｉの燃料が噴射されるので、機関に供給される混合気の空燃比（従って、第１触媒５３に流入するガスの空燃比）は理論空燃比よりもリッチな前記所定のリッチ空燃比に制御され続ける。これにより、硫黄成分による第１触媒５３の一次被毒状態が解消される可能性がある。
【０１６６】
次に、この状態から、カウンタ値Ｔが値Ｔ１になった場合について説明する。この場合、ＣＰＵ７１はステップ１６３５に進んだとき「Ｙｅｓ」と判定してステップ１６４５に進んで係数Ｋの値を「１．０２」から「０．９８」に変更した後、ステップ１６９５に進んで本ルーチンを一旦終了する。以降、ステップ１６２５が繰り返し実行されてカウンタ値Ｔが値Ｔ２になるまで（従って、１回目の所定の期間の経過後、２回目の所定の期間が経過するまで）ＣＰＵ７１は、ステップ１６００〜１６１０，１６２５〜１６４０，１６９５の処理を再び繰り返し実行するようになる。従って、１回目の所定の期間の経過後、２回目の所定の期間が経過するまでの間、基本燃料噴射量Ｆｂａｓｅが０．９８倍された値が最終燃料噴射量Ｆｉとして算出されるから、機関に供給される混合気の空燃比（従って、第１触媒５３に流入するガスの空燃比）は理論空燃比よりもリーンな前記所定のリーン空燃比に制御され続ける。これにより、還元剤による第１触媒５３の一次被毒状態が解消される可能性がある。
【０１６７】
同様に、カウンタ値Ｔが値Ｔ１から増大していき値Ｔ２になると、ＣＰＵ７１はステップ１６４０に進んだとき「Ｙｅｓ」と判定してステップ１６５０に進み、係数Ｋの値を「０．９８」から再び「１．０２」に変更する。これにより、２回目の所定の期間の経過後、３回目の所定の期間が経過するまでの間、再び、機関に供給される混合気の空燃比（従って、第１触媒５３に流入するガスの空燃比）は理論空燃比よりも前記所定のリッチ空燃比に制御され続ける。また、同様に、カウンタ値Ｔが値Ｔ２から増大していき値Ｔ３になると、ＣＰＵ７１はステップ１６３５に進んだとき「Ｙｅｓ」と判定してステップ１６４５に進み、係数Ｋの値を「１．０２」から再度「０．９８」に変更する。これにより、３回目の所定の期間の経過後、４回目の所定の期間が経過するまでの間、再び、機関に供給される混合気の空燃比（従って、第１触媒５３に流入するガスの空燃比）は理論空燃比よりも前記所定のリーン空燃比に制御され続ける。
【０１６８】
そして、カウンタ値Ｔが値Ｔ３から増大していき値Ｔ４になると、ＣＰＵ７１はステップ１６３０に進んだとき「Ｎｏ」と判定してステップ１６５５に進み、係数Ｋの値を「１．００」に再設定するとともに、続くステップ１６６０にて被毒回復処理実行中フラグＰＷＭの値を「１」から「０」に変更した後、ステップ１６９５に進んで本ルーチンを一旦終了する。
【０１６９】
以降、被毒回復処理実行中フラグＰＷＭの値が「０」になっているから、図１５のステップ１５４０にて被毒回復処理実行中フラグＰＷＭの値が再び「１」に設定されるまでの間、ＣＰＵ７１はステップ１６０５からステップ１６９５に直ちに進んで本ルーチンを一旦終了するようになる。また、空燃比フィードバック制御条件、及びサブフィードバック制御条件が成立していれば、ＣＰＵ７１は図１０のステップ１００５及び図１１のステップ１１０５にて「Ｙｅｓ」と判定するようになるから、空燃比フィードバック制御が再開されるともに、図１４のステップ１４０５にて「Ｙｅｓ」と判定するようになるから、頻度ＦＲＥの算出が再開される。
【０１７０】
従って、被毒回復処理が終了した時点以降、再び、頻度ＳＭＬが基準値ＳＭＬ０に達すると（即ち、一サンプリング期間が経過すると）、ＣＰＵ７１は図１５のステップ１５０５にて「Ｙｅｓ」と判定してステップ１５１０以降に進み、第１触媒５３の劣化判定を行う。そして、被毒回復処理により第１触媒５３の劣化状態が解消している場合、ＣＰＵ７１はステップ１５１０にて「Ｙｅｓ」と判定し、ステップ１５２０にてカウンタＣＮＴの値を現時点での値「１」から「０」にクリアする。
【０１７１】
一方、被毒回復処理によっても第１触媒５３の劣化状態が解消していない場合、ＣＰＵ７１はステップ１５１０にて再び「Ｎｏ」と判定し、ステップ１５４５にてカウンタＣＮＴの値を現時点での値「１」から「１」だけ増大して「２」に設定する。従って、ＣＰＵ７１は続くステップ１５５０にて「Ｎｏ」と判定するようになり、ステップ１５５５に進んで警報ランプ８２に同警報ランプ８２を点灯させるための指示信号を送出する。これにより、警報ランプ８２が点灯する。
【０１７２】
即ち、警報ランプ８２は、一旦、第１触媒５３が劣化触媒であると判定された後に被毒回復処理が１回実行されてもなお、第１触媒５３の劣化状態が解消しなかった場合に点灯されることになる。また、この場合、ステップ１５４０の処理によりその後に被毒回復処理が再び実行されることになる。そして、仮に、被毒回復処理が繰り返し実行されることでその後において第１触媒５３の劣化状態が解消されるようなことがあった場合、ＣＰＵ７１がステップ１５１０にて「Ｙｅｓ」と判定することで、ステップ１５２０にてカウンタＣＮＴの値が「０」にクリアされるとともに、ステップ１５２５にて現時点まで点灯し続けていた警報ランプ８２が消灯される。一方、第１触媒５３の劣化状態が引き続き解消されない場合は、ステップ１５２５の処理が実行されないことから警報ランプ８２は継続して点灯し続ける。
【０１７３】
以上、説明したように、本発明の実施形態によれば、第１触媒５３が新品の触媒であると想定して構築された同第１触媒５３を対象とする触媒モデルに基づき、第１触媒５３から流出するガス中の特定成分の量（流出酸素量ＣｇｏｕｔＯ２（Ｎ））を推定（算出）する。そして、本発明の実施形態は、第１触媒５３下流の下流側空燃比センサ６７の出力Ｖｏｘｓに基づく空燃比フィードバック制御中において、下流側空燃比センサ出力Ｖｏｘｓが第１の状態（リッチ側所定値Ｖｒｉｃｈを増加しながら、又はリーン側所定値Ｖｌｅａｎを減少しながら通過する状態）となる毎に触媒モデルが推定している流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態（負の閾値Ｃｒｅｆｍｎｓよりも小さい値、又は正の閾値Ｃｒｅｆｐｌｓよりも大きい値になっている状態）になっているか否かを判定するとともに、下流側空燃比センサ出力Ｖｏｘｓが第１の状態となる頻度ＳＭＬが所定の基準値ＳＭＬ０に達する毎（一サンプリング期間が経過する毎）に、この一サンプリング期間中にて下流側空燃比センサ出力Ｖｏｘｓが第１の状態となった時点において流出酸素量ＣｇｏｕｔＯ２（Ｎ）が第２の状態になっている頻度ＦＲＥを求め、この頻度ＦＲＥが劣化判定基準値ＦＲＥｒｅｆ以上か否か（従って、頻度ＳＭＬ０に対する頻度ＦＲＥの割合が所定値以上か否か）に基づいて第１触媒５３が正常触媒であるか劣化触媒であるかを判定する。
【０１７４】
このような触媒劣化判定方法は、通常の空燃比フィードバック（サブフィードバック）における空燃比変動を伴うのみであって、従来技術のように機関が定常状態にあるときに空燃比を強制的に変化させないので、触媒劣化判定をドライバビリティの悪化を招くことなく行うことができた。また、通常の空燃比フィードバック制御（サブフィードバック制御）中に触媒劣化判定がなされるので、触媒劣化判定の機会を多く確保でき、この結果、第１触媒５３が正常触媒であるか劣化触媒であるかを遅滞なく判定することができた。
【０１７５】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、下流側空燃比センサ出力Ｖｏｘｓが第１の状態となる頻度ＳＭＬが基準値ＳＭＬ０に達する毎に頻度ＦＲＥと劣化判定基準値ＦＲＥｒｅｆとの比較結果に基づいて触媒の劣化判定を実行しているが、所定の（一定の）サンプリング時間の経過毎に同サンプリング時間内における頻度ＳＭＬに対する頻度ＦＲＥの割合と所定値との比較結果に基づいて触媒の劣化判定を実行するように構成してもよい。
【０１７６】
また、上記実施形態においては、下流側空燃比センサ出力Ｖｏｘｓが第１の状態（リッチ側所定値Ｖｒｉｃｈを増加しながら、又はリーン側所定値Ｖｌｅａｎを減少しながら通過する状態）となる頻度ＳＭＬ（ＳＭＬ０）に対する、同下流側空燃比センサ出力Ｖｏｘｓが第１の状態となる時点において第１触媒５３から流出する特定成分の量（流出酸素量ＣｇｏｕｔＯ２（Ｎ））が第２の状態（負の閾値Ｃｒｅｆｍｎｓよりも小さい値、又は正の閾値Ｃｒｅｆｐｌｓよりも大きい値になっている状態）になっている頻度ＦＲＥの割合に応じて第１触媒５３の劣化判定が実行されているが、前記第２の状態を、「減少している、又は増加している状態」としてもよい。また、第１触媒５３から流出する特定成分の量（流出酸素量ＣｇｏｕｔＯ２（Ｎ））が第１の状態（負の閾値Ｃｒｅｆｍｎｓを減少しながら、又は正の閾値Ｃｒｅｆｐｌｓを増加しながら通過する状態）となる頻度ＳＭＬ（ＳＭＬ０）に対する、同特定成分の量が第１の状態となる時点において下流側空燃比センサ出力Ｖｏｘｓが第２の状態（リッチ側所定値Ｖｒｉｃｈよりも大きい値、又はリーン側所定値Ｖｌｅａｎよりも小さい値になっている状態）になっている頻度ＦＲＥの割合に応じて第１触媒５３の劣化判定が実行されるように構成されてもよい。この場合、前記第２の状態を、「増加している、又は減少している状態」としてもよい。また、上述のリッチ側所定値Ｖｒｉｃｈ、及びリーン側所定値Ｖｌｅａｎは共に、目標値Ｖｏｘｓｒｅｆと等しい値に設定してもよい。
【０１７７】
また、上記実施形態においては、空燃比フィードバック制御（サブフィードバック制御）は下流側空燃比センサ６７の出力Ｖｏｘｓに基づいて実行されているが、触媒モデルにより推定されている流出酸素量ＣｇｏｕｔＯ２（Ｎ）に基づいて実行されるように構成してもよい。この場合、図１１のステップ１１１０を「ＤＶｏｘｓ  ←  ＣｇｏｕｔＯ２（Ｎ）  −  ＣｇｏｕｔＯ２ｒｅｆ」に書き換えればよい。ここで、ＣｇｏｕｔＯ２ｒｅｆは流出酸素量ＣｇｏｕｔＯ２（Ｎ）の目標値であって、例えば「０」である。
【０１７８】
また、サブフィードバック制御は、上記ＰＩ制御でなく、ＰＩＤ制御であってもよい。更に、下流側空燃比センサ６７は、上流側空燃比センサ６６と同様な空燃比センサであってもよい。また、下流側空燃比センサ６７の出力Ｖｏｘｓのみに基づいて機関に供給される混合気の空燃比をフィードバック制御するように構成してもよい。
【図面の簡単な説明】
【図１】本発明による触媒劣化判定装置を適用した内燃機関の概略図である。
【図２】図１に示したエアフローメータの出力電圧と計測された吸入空気流量との関係を示したマップである。
【図３】図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したマップである。
【図４】図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したマップである。
【図５】（Ａ）は第１触媒が新品の触媒である場合の空燃比フィードバック制御（サブフィードバック制御）における下流側空燃比センサの出力、及び本発明の触媒劣化判定装置が採用する触媒モデルにより推定される第１触媒から流出する流出酸素量の変化を示したタイムチャートであり、（Ｂ）は第１触媒が劣化触媒である場合の空燃比フィードバック制御における同下流側空燃比センサの出力、及び同流出酸素量の変化を示したタイムチャートである。
【図６】本発明の触媒劣化判定装置が採用する触媒モデルを模式的に示した図である。
【図７】本発明の触媒劣化判定装置が採用する触媒モデルの特定領域に注目したときの同特定領域における酸素吸蔵・放出反応に関係する特定成分の収支を示した図である。
【図８】本発明の触媒劣化判定装置が採用する触媒モデルを第１触媒に適用した場合の模式図である。
【図９】図１に示したＣＰＵが実行する燃料噴射量計算のためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが実行する空燃比フィードバック補正量の計算のためのルーチンを示したフローチャートである。
【図１１】図１に示したＣＰＵが実行するサブフィードバック制御量の計算のためのルーチンを示したフローチャートである。
【図１２】図１に示したＣＰＵが実行する第１触媒の各ブロック毎の流出酸素量、酸素吸蔵量等の計算のためのルーチンを示したフローチャートである。
【図１３】図１に示したＣＰＵが実行する第１触媒の各ブロック毎の酸素吸蔵量をクリアするためのルーチンを示したフローチャートである。
【図１４】図１に示したＣＰＵが実行する触媒劣化判定に使用する頻度ＦＲＥを求めるためのルーチンを示したフローチャートである。
【図１５】図１に示したＣＰＵが実行する第１触媒が正常触媒であるか劣化触媒であるかを判定するためのルーチンを示したフローチャートである。
【図１６】図１に示したＣＰＵが実行する第１触媒の被毒回復処理を行うためのルーチンを示したフローチャートである。
【符号の説明】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、５２…エキゾーストパイプ（排気管）、５３…第１触媒、６６…上流側空燃比センサ、６７…下流側空燃比センサ、７０…電気制御装置、７１…ＣＰＵ
【図１】
2004300981.tif 000006
【図２】
2004300981.tif 000007
【図３】
2004300981.tif 000008
【図４】
2004300981.tif 000009
【図５】
2004300981.tif 000010
【図６】
2004300981.tif 000011
【図７】
2004300981.tif 000012
【図８】
2004300981.tif 000013
【図９】
2004300981.tif 000014
【図１０】
2004300981.tif 000015
【図１１】
2004300981.tif 000016
【図１２】
2004300981.tif 000017
【図１３】
2004300981.tif 000018
【図１４】
2004300981.tif 000019
【図１５】
2004300981.tif 000020
【図１６】
2004300981.tif 000021