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