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