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