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