(57)【特許請求の範囲】
【請求項１】
排気通路に触媒を備えた内燃機関の空燃比制御装置であって、
前記機関の吸入空気量に応じた値を取得する吸入空気量相当値取得手段と、
前記触媒の上流側空燃比を検出する上流側空燃比検出手段と、
前記触媒の下流側空燃比を検出する下流側空燃比検出手段と、
前記検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化したときに目標空燃比を理論空燃比よりもリッチである所定のリッチ空燃比に設定するとともに、前記検出される下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比に変化したときに同目標空燃比を理論空燃比よりもリーンである所定のリーン空燃比に設定する目標空燃比設定手段と、
前記目標空燃比が前記所定のリッチ空燃比に設定されたとき前記機関に供給される混合気の空燃比を理論空燃比よりもリッチとするために必要な燃料量を少なくとも前記取得された吸入空気量に基いてフィードフォワード燃料供給量として算出するとともに、前記目標空燃比が前記所定のリーン空燃比に設定されたとき前記機関に供給される混合気の空燃比を理論空燃比よりもリーンとするために必要な燃料量を少なくとも前記取得された吸入空気量に基いてフィードフォワード燃料供給量として算出し、前記上流側空燃比検出手段により検出された上流側空燃比を前記目標空燃比と一致させるためのフィードバック補正量を同検出された上流側空燃比と同目標空燃比とに基いて算出し、前記フィードフォワード燃料供給量を前記フィードバック補正量により補正して最終燃料供給量を算出する燃料供給量算出手段と、
前記算出された最終燃料供給量の燃料を前記機関に供給する燃料供給手段とを備えた内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置において、
前記燃料供給量算出手段は、前記取得された吸入空気量に応じた値と前記設定された目標空燃比とに基いて前記機関に供給される混合気の空燃比が同目標空燃比と理論上一致するために必要な燃料量を前記フィードフォワード燃料供給量として算出するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項１又は請求項２に記載の内燃機関の空燃比制御装置であって、
前記目標空燃比が前記所定のリーン空燃比に切り換えられてから前記検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化するまでの間に同触媒内に流入する酸素量を求め、同求めた酸素量に基いて同触媒の最大酸素吸蔵量を算出する最大酸素吸蔵量算出手段を備えた内燃機関の空燃比制御装置。
【請求項４】
請求項１又は請求項２に記載された内燃機関の空燃比制御装置であって、
前記目標空燃比が前記所定のリッチ空燃比に切り換えられてから前記検出される下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比に変化するまでの間に同触媒内で消費される酸素量を求め、同求めた酸素量に基いて同触媒の最大酸素吸蔵量を算出する最大酸素吸蔵量算出手段を備えた内燃機関の空燃比制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、排気通路に触媒を備えた内燃機関の空燃比制御装置に関する。
【０００２】
【従来の技術】
従来より、内燃機関の排気ガスを浄化するための三元触媒（本明細書においては、単に「触媒」と云うこともある。）が、同機関の排気通路に配設されている。この触媒は、酸素を貯蔵（吸蔵）するＯ2ストレージ機能（酸素貯蔵機能、酸素吸蔵機能）を有していて、流入するガスの空燃比がリッチである場合には貯蔵している酸素によりＨＣ,ＣＯ等の未燃成分を酸化するとともに、流入するガスの空燃比がリーンである場合には窒素酸化物（ＮＯｘ）を還元して同ＮＯｘから奪った酸素を内部に貯蔵する。これにより、三元触媒は、機関の空燃比が理論空燃比から偏移した場合でも、未燃成分や窒素酸化物を効率よく浄化することができる。従って、三元触媒が貯蔵し得る酸素量（以下、「酸素吸蔵量」と称呼する。）の最大値（以下、「最大酸素吸蔵量」と称呼する。）が大きいほど、三元触媒の浄化能力は高くなる。
【０００３】
一方、触媒は使用するにつれて劣化し、この劣化の程度に応じて前記最大酸素吸蔵量は変化する。従って、触媒の最大酸素吸蔵量が精度良く推定できれば、同推定した最大酸素吸蔵量に基いて同触媒が劣化したか否かを判定することができる。
【０００４】
特開平５−１３３２６４号公報に開示された触媒劣化度検出装置は、このような知見に基いて触媒劣化度を検出するものであって、機関の空燃比（従って、触媒上流の空燃比）を所定のリッチ空燃比からリーン空燃比（又は、その逆）に強制的に変化させ、その際における触媒下流に配置した空燃比センサ（以下、「下流側空燃比センサ」と称呼する。）の出力の変化に基いて同触媒の最大酸素吸蔵量を推定し、同推定した最大酸素吸蔵量に基いて同触媒の劣化度を検出するようになっている。
【０００５】
より具体的に述べると、上記開示された装置は、触媒上流の空燃比を所定のリッチな空燃比（以下、「設定リッチ空燃比」と称呼する。）にオープンループ制御して触媒の酸素吸蔵量を「０」にし、これにより触媒下流の空燃比が理論空燃比よりもリッチとなったことが下流側空燃比センサにより検出された時点で、触媒上流の空燃比を所定のリーンな空燃比（以下、「設定リーン空燃比」と称呼する。）にオープンループ制御する。ここで、オープンループ制御とは、機関から排出されたガスの空燃比（即ち、触媒上流の空燃比）を検出してフィードバック制御することなく同機関に供給される混合気の空燃比（この空燃比は、機関の空燃比とも称呼し、触媒上流の空燃比と等しい。）をフィードフォワード制御することである。
【０００６】
そして、上記装置は、触媒上流の空燃比を前記設定リーン空燃比に切り換えてから触媒の酸素吸蔵量が最大酸素吸蔵量以上となって触媒下流の空燃比がリーンとなったことが下流側空燃比センサによって検出されるまでの間に同触媒に流入した酸素量を算出することで、同触媒の最大酸素吸蔵量を推定するようになっている。
【０００７】
或いは、上記従来の装置は、触媒上流の空燃比を設定リーン空燃比にオープンループ制御して酸素吸蔵量を最大酸素吸蔵量とし、これにより触媒下流の空燃比が理論空燃比よりもリーンとなったことが下流側空燃比センサにより検出された時点で、触媒上流の空燃比を設定リッチ空燃比にオープンループ制御する。そして、触媒上流の空燃比を前記設定リッチ空燃比に切り換えてから、触媒の酸素吸蔵量が「０」となって触媒下流の空燃比がリッチとなったことが下流側空燃比センサによって検出されるまでの間に同触媒内で消費された酸素量を算出することで、同触媒の最大酸素吸蔵量を推定するようになっている。
【０００８】
【発明が解決しようとする課題】
しかしながら、上記従来の触媒劣化度検出装置は、最大酸素吸蔵量を求める際に触媒上流の空燃比（機関の空燃比）をオープンループ制御しているから、その際の機関の空燃比が同機関の運転状態の違いや機関の個体差などにより必ずしも狙いとする前記設定リッチ空燃比又は前記設定リーン空燃比とならず、その結果、同機関の空燃比が過度にリッチ又はリーンとなって、ドライバビリティが悪化する等の恐れがある。
【０００９】
一方、このような問題を解決するために、最大酸素吸蔵量を求める際の触媒上流の空燃比をフィードバック制御することが考えられる。即ち、触媒上流の空燃比が理論空燃比となるような燃料量（これを便宜上「基本燃料量」と云う。）の燃料を供給するとともに、同触媒上流の目標空燃比を前記設定リッチ空燃比又は前記設定リーン空燃比とし、触媒上流に配設した空燃比センサにより検出される実際の空燃比が同目標空燃比と一致するように同実際の空燃比と同目標空燃比との偏差をＰＩ処理又はＰＩＤ処理してフィードバック補正量を求め、このフィードバック補正量で前記基本燃料量を補正することが考えられる。
【００１０】
ところが、かかるフィードバック制御には制御遅れが不可避であり、特に、上述したような手法で最大酸素吸蔵量を推定する場合にはエミッションが悪化するという問題が発生する。
【００１１】
即ち、図１７の時刻ｔ１０に示したように、下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比へと切換った時点で目標空燃比を設定リーン空燃比に切り換えても、時刻ｔ２０に至るまでの暫くの間、フィードバック制御の制御遅れに起因して触媒にリッチな空燃比のガスが流入し続け、しかも、この時点で触媒内の酸素吸蔵量は「０」となっているため、同触媒は同ガス中の未燃成分（例えば、ＣＯ）を浄化することができない。
【００１２】
或いは、図１７の時刻ｔ３０に示したように、下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比へと切換った時点で目標空燃比を設定リッチ空燃比に切り換えても、時刻ｔ４０に至るまでの暫くの間、フィードバック制御の制御遅れに起因して触媒にリーンな空燃比のガスが流入し続け、しかも、この時点で触媒内の酸素吸蔵量は最大酸素吸蔵量と等しくとなっているため、同触媒は同ガス中のＮＯｘを浄化することができない。
【００１３】
【本発明の概要】
本発明は、上述した課題に対処するためになされたものであって、その特徴は、排気通路に触媒を備えた内燃機関の空燃比制御装置であって、前記機関の吸入空気量に応じた値を取得する吸入空気量相当値取得手段と、前記触媒の上流側空燃比を検出する上流側空燃比検出手段と、前記触媒の下流側空燃比を検出する下流側空燃比検出手段と、前記検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化したときに目標空燃比を理論空燃比よりもリッチである所定のリッチ空燃比に設定するとともに、前記検出される下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比に変化したときに同目標空燃比を理論空燃比よりもリーンである所定のリーン空燃比に設定する目標空燃比設定手段と、前記目標空燃比が前記所定のリッチ空燃比に設定されたとき前記機関に供給される混合気の空燃比を理論空燃比よりもリッチとするために必要な燃料量を少なくとも前記取得された吸入空気量に基いてフィードフォワード燃料供給量として算出するとともに、前記目標空燃比が前記所定のリーン空燃比に設定されたとき前記機関に供給される混合気の空燃比を少なくとも理論空燃比よりもリーンとするために必要な燃料量を前記取得された吸入空気量に基いてフィードフォワード燃料供給量として算出し、前記上流側空燃比検出手段により検出された上流側空燃比を前記目標空燃比と一致させるためのフィードバック補正量を同検出された上流側空燃比と同目標空燃比とに基いて算出し、前記フィードフォワード燃料供給量を前記フィードバック補正量により補正して最終燃料供給量を算出する燃料供給量算出手段と、前記算出された最終燃料供給量の燃料を前記機関に供給する燃料供給手段とを備えたことにある。
【００１４】
これによれば、検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化したときに目標空燃比が理論空燃比よりもリッチである所定のリッチ空燃比に設定される。このとき、機関に供給される混合気の空燃比を理論空燃比よりもリッチとするために必要な燃料量が少なくとも吸入空気量に基いてフィードフォワード燃料供給量として算出され、検出された上流側空燃比を目標空燃比と一致させるためのフィードバック補正量が同検出された上流側空燃比と同目標空燃比とに基いて算出される。そして、フィードフォワード燃料供給量が前記フィードバック補正量により補正されることにより最終燃料供給量が算出され、同最終燃料供給量の燃料が機関に供給される。
【００１５】
同様に、検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化したときに目標空燃比が理論空燃比よりもリッチである所定のリッチ空燃比に設定される。このとき、機関に供給される混合気の空燃比を理論空燃比よりもリッチとするために必要な燃料量が少なくとも吸入空気量に基いてフィードフォワード燃料供給量として算出され、検出された上流側空燃比を目標空燃比と一致させるためのフィードバック補正量が同検出された上流側空燃比と同目標空燃比とに基いて算出される。そして、フィードフォワード燃料供給量が前記フィードバック補正量により補正されることにより最終燃料供給量が算出され、同最終燃料供給量の燃料が機関に供給される。
【００１６】
このように、本発明の空燃比制御装置は、触媒下流の実際の空燃比がリーンな空燃比となったことに応答して空燃比を所定のリッチ空燃比に変更する際、リッチ空燃比が得られるようなフィードフォワード量を求め、これをフィードバック補正量により補正するようにした。従って、空燃比切換直後の触媒内の酸素量が最大酸素吸蔵量となっている期間において、フィードバックバック制御の制御遅れに拘らず実際の触媒上流の空燃比を理論空燃比よりもリッチ側とすることが可能となり、その結果、ＮＯｘが多量に排出されてしまうことを回避することができる。
【００１７】
同様に、触媒下流の実際の空燃比がリッチな空燃比となったことに応答して空燃比を所定のリーン空燃比に変更する際、リーン空燃比が得られるようなフィードフォワード量を求め、これをフィードバック補正量により補正するようにした。従って、空燃比切換直後の触媒内に酸素が吸蔵されていない期間において、フィードバック制御の制御遅れに拘らず、実際の触媒上流の空燃比を理論空燃比よりもリーン側とすることが可能となり、その結果、未燃燃料が多量に排出されてしまうことを回避することができる。
【００１８】
更に、本空燃比制御装置によれば、触媒上流のガスの空燃比を所定のリッチ空燃比又は所定のリーン空燃比とする際、フィードフォワード燃料供給量がフィードバック補正量により補正されるため、同触媒上流のガスの実際の空燃比を前記所定のリッチ空燃比又は前記所定のリーン空燃比に精度良く一致させることが可能となる。
【００１９】
なお、上記フィードフォワード燃料供給量は、例えば、目標空燃比切り換え直後において最も大きく、その後、時間経過とともに減衰する量のように、時間経過とともに変化する量であってもよい。
【００２０】
この場合、前記燃料供給量算出手段は、前記取得された吸入空気量に応じた値と前記設定された目標空燃比とに基いて前記機関に供給される混合気の空燃比が同目標空燃比と理論上一致するために必要な燃料量を前記フィードフォワード燃料供給量として算出するように構成されることが好適である。
【００２１】
これによれば、目標空燃比の切換直後から同目標空燃比と実質的に等しい空燃比のガスを触媒内に流入させることができるので、エミッションの悪化を確実に回避できるとともに、触媒に流入するガスの空燃比を切換後の目標空燃比に迅速に一致させることが可能となり、例えば、触媒劣化判定のための最大酸素吸蔵量を同じ空燃比の下で得ることが可能となる。
【００２２】
また、上記本発明の空燃比制御装置は、前記目標空燃比が前記所定のリーン空燃比に切り換えられてから前記検出される下流側空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化するまでの間に同触媒内に流入する酸素量を求め、同求めた酸素量に基いて同触媒の最大酸素吸蔵量を算出する最大酸素吸蔵量算出手段、及び／又は、前記目標空燃比が前記所定のリッチ空燃比に切り換えられてから前記検出される下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比に変化するまでの間に同触媒内で消費される酸素量を求め、同求めた酸素量に基いて同触媒の最大酸素吸蔵量を算出する最大酸素吸蔵量算出手段を備えることが好適である。
【００２３】
上述したように、本発明によれば、触媒上流の空燃比をリッチ又はリーンの所定の空燃比に速やかに到達させることができるから、目標空燃比の切換後から同目標空燃比の切換結果が触媒下流の空燃比として検出されるまでの期間に得られる触媒の最大酸素吸蔵量は、同所定のリッチ空燃比又は同所定のリーン空燃比と実質的に等しい空燃比の下で得られたものとして扱うことができるので、例えば、触媒が劣化しているか否かの指標値として信頼性の高いものとなり、同触媒の劣化判定を精度良く行うことが可能となる。
【００２４】
【発明の実施の形態】
以下、本発明による内燃機関の空燃比制御装置の実施形態について図面を参照しつつ説明する。図１は、この空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。
【００２５】
この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００２６】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより同クランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００２７】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともに同インテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００２８】
吸気系統４０は、吸気ポート３１に連通し同吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、スロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａ、スワールコントロールバルブ（以下、「ＳＣＶ」と称呼する。）４４、及びＤＣモータからなるＳＣＶアクチュエータ４４ａを備えている。
【００２９】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された上流側の三元触媒５３（上流側触媒コンバータ、又はスタート・キャタリティック・コンバータとも云うが、以下「第１触媒５３」と称呼する。）、及びこの第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側の三元触媒５４（車両のフロア下方に配設されるため、アンダ・フロア・キャタリティック・コンバータとも云うが、以下「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。
【００３０】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、及びアクセル開度センサ６８を備えている。
【００３１】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量に応じた電圧Vgを出力するようになっている。かかるエアフローメータ６１の出力Vgと、計測された吸入空気量（流量）Ｇａとの関係は、図２に示したとおりである。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００３２】
上流側空燃比センサ６６は、限界電流式の酸素濃度センサであり、図３に示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧vabyfsを出力するようになっている。図３から明らかなように、上流側空燃比センサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。下流側空燃比センサ６７は、起電力式（濃淡電池式）の酸素濃度センサであり、図４に示したように、理論空燃比において急変する電圧Voxsを出力するようになっている。より具体的に述べると、下流側空燃比センサ６７は、空燃比が理論空燃比よりもリーンのときは略０．１（Ｖ）、空燃比が理論空燃比よりもリッチのときは略０．９（Ｖ）、及び空燃比が理論空燃比のときは略０．５（Ｖ）の電圧を出力するようになっている。アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、同アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００３３】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、同ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、スロットル弁アクチュエータ４３ａ、及びＳＣＶアクチュエータ４４ａに駆動信号を送出するようになっている。
【００３４】
（通常時の空燃比制御の概要）
次に、上記のように構成された内燃機関の空燃比制御装置が行う空燃比制御の概要について説明する。
【００３５】
第１触媒５３（第２触媒５４も同様である。）は、酸素を貯蔵（吸蔵）する機能（酸素貯蔵機能）を有し、この酸素貯蔵機能により、空燃比が理論空燃比からある程度まで偏移したとしても、ＨＣ,ＣＯ、及びＮＯｘを浄化することができる。即ち、機関の空燃比がリーンとなって第１触媒５３に流入するガスにＮＯｘが多量に含まれると、第１触媒５３はＮＯｘから酸素分子を奪って同酸素分子を吸蔵するとともに同ＮＯｘを還元し、これによりＮＯｘを浄化する。また、機関の空燃比がリッチになって第１触媒５３に流入するガスにＨＣ,ＣＯが多量に含まれると、三元触媒は内部に吸蔵している酸素分子をこれらのＨＣ，ＣＯに与えて酸化し、これにより同ＨＣ,ＣＯを浄化する。
【００３６】
従って、第１触媒５３が連続的に流入する多量のＨＣ,ＣＯを効率的に浄化するためには、同第１触媒５３が酸素を多量に貯蔵していなければならず、逆に連続的に流入する多量のＮＯｘを効率的に浄化するためには、同第１触媒５３が酸素を十分に貯蔵し得る状態になければならないことになる。以上のことから、第１触媒５３の浄化能力は、同第１触媒５３が貯蔵し得る最大の酸素量（最大酸素吸蔵量）に依存する。
【００３７】
一方、第１触媒５３のような三元触媒は燃料中に含まれる鉛や硫黄等による被毒、或いは触媒に加わる熱により劣化し、これに伴い最大酸素吸蔵量が次第に低下してくる。このように最大酸素吸蔵量が低下した場合であっても、エミッションを良好に維持するには、第１触媒５３から排出されるガスの空燃比（従って、第１触媒５３に流入するガスの平均空燃比）が、理論空燃比に極めて近い状態となるように制御する必要がある。
【００３８】
そこで、本実施形態の空燃比制御装置は、機関１０の排気に関する状態量の一つである下流側空燃比センサ６７の出力が理論空燃比に略相当する目標値Voxsrefとなるように、下流側空燃比センサ６７の出力Voxs（即ち、第１触媒下流の空燃比）に応じて機関１０に供給される混合気の空燃比（即ち、機関の空燃比）をフィードバック制御する。注記すると、機関の空燃比と第１触媒５３の上流側におけるガスの空燃比（以下、単に「触媒上流側空燃比」とも称呼する場合がある。）は等しいので、本空燃比制御装置は触媒上流側空燃比をフィードバック制御しているとも言える。
【００３９】
より具体的には、空燃比制御装置は、下流側空燃比センサ６７の出力が理論空燃比よりリーンの空燃比を表す値となると、下流側空燃比センサ６７の出力Voxsと理論空燃比に略相当する目標値Voxsrefとの偏差を比例・積分処理（ＰＩ処理）してサブフィードバック制御量vafsfbを求め、同サブフィードバック制御量vafsfb分だけ上流側空燃比センサ６６の出力vabyfsを補正する。これにより、機関の実際の空燃比が、同上流側空燃比センサ６６の検出空燃比よりも見かけ上リーン側であるように設定される。
【００４０】
そして、その補正した見かけ上の空燃比が理論空燃比である目標空燃比abyfrと等しくなるように機関に供給する燃料量（燃料噴射量）を調整するためのフィードバック補正量ＦＤｉを算出し、機関の一吸気行程における筒内吸入空気量に相当する値Ｍｃを理論空燃比で除した値に応じて決定される基本噴射量Ｆbaseを前記算出したフィードバック補正量ＦＤｉにより補正することで、機関の空燃比のフィードバック制御を実行する。
【００４１】
同様に、下流側空燃比センサ６７の出力が理論空燃比よりリッチの空燃比を表す値となると、下流側空燃比センサ６７の出力Voxsと理論空燃比に略相当する目標値Voxsrefとの偏差を比例・積分処理（ＰＩ処理）してサブフィードバック制御量vafsfbを求め、同サブフィードバック制御量vafsfb分だけ上流側空燃比センサ６６の出力vabyfsを補正し、これにより、機関の実際の空燃比が、同上流側空燃比センサ６６の検出空燃比よりも見かけ上リッチ側であるように設定し、その補正した見かけ上の空燃比が理論空燃比である目標空燃比abyfrとなるようにフィードバック制御する。以上により、第１触媒５３の上流の平均空燃比が理論空燃比と一致するようにフィードバック制御される。
【００４２】
（最大酸素吸蔵量Ｃmax算出時の空燃比制御と同最大酸素吸蔵量Ｃmaxの算出）
上述したように、触媒が劣化するに従って同触媒の最大酸素吸蔵量は次第に低下してくる。従って、本空燃比制御装置は、触媒（本例では第１触媒５３）の最大酸素吸蔵量Ｃmaxを算出・推定し、同最大酸素吸蔵量Ｃmaxが閾値Ｔｈより小さいか否かを判定することにより、第１触媒５３が劣化したか否かを判定する。以下、最大酸素吸蔵量Ｃmaxを算出するための空燃比制御（空燃比強制設定制御、アクティブ制御）について、図５のタイムチャートを参照しながら説明する。
【００４３】
先ず、本空燃比制御装置は、図５（Ａ）に示したように、時刻ｔ１までは前述した通常の空燃比制御を行い、同時刻ｔ１にて最大酸素吸蔵量を算出する所定の条件（この例では、その時点の下流側空燃比センサ６７が理論空燃比よりもリッチな空燃比を検出していることも同所定条件に含められている。）が成立すると、第１触媒５３の上流のガスの空燃比を理論空燃比よりもリーンな所定の設定リーン空燃比に制御するため、上記第１触媒５３の上流のガスの目標空燃比abyfrを所定の設定リーン空燃比abyfLeanに設定する。
【００４４】
このとき、空燃比制御装置は、理論空燃比を同設定空燃比abyfLeanで除した値である空燃比設定係数Ｋを上記基本噴射量Fbaseに乗じたフィードフォワード燃料供給量（＝Ｋ・Fbase）を求めるとともに、上流側空燃比センサ６６により検出される実際の触媒上流側空燃比が目標空燃比abyfrと一致するように、同検出された実際の触媒上流側空燃比と同目標空燃比abyfrとに基いて機関に供給する燃料量（燃料噴射量）を調整するフィードバック補正量ＤＦｉを求める。そして、空燃比制御装置は、上記フィードフォワード燃料供給量（＝Ｋ・Fbase）を同フィードバック補正量ＤＦｉで補正することで触媒上流側空燃比（従って、機関の空燃比）のフィードバック制御を実行する。
【００４５】
これにより、第１触媒５３にリーンな空燃比のガスが流入するから、図５（Ｃ）に示したように、第１触媒５３の酸素吸蔵量ＯＳＡは次第に増大し、時刻ｔ２にて最大酸素吸蔵量Ｃmax2に達する。この結果、時刻ｔ２にて、第１触媒５３から酸素を含むガス（リーン空燃比のガス）が流出し始め、図５（Ｂ）に示したように、下流側空燃比センサ６７の出力Voxsは理論空燃比よりリッチを示す値から理論空燃比よりリーンを示す値に変化する。この時刻ｔ１〜ｔ２間の作動を第１モード（Mode=1）における作動と呼ぶ。
【００４６】
時刻ｔ２にて、下流側空燃比センサ６７の出力Voxsがリッチを示す値からリーンを示す値に変化すると、本装置は第１触媒５３の上流のガスの空燃比を理論空燃比よりもリッチな所定の設定リッチ空燃比に制御するため、上記第１触媒５３の上流のガスの目標空燃比abyfrを所定の設定リッチ空燃比abyfRichに設定する。
【００４７】
この場合においても、空燃比制御装置は、理論空燃比を同設定空燃比abyfRichで除した値である空燃比設定係数Ｋを上記基本噴射量Fbaseに乗じたフィードフォワード燃料供給量（＝Ｋ・Fbase）を求めるとともに、上流側空燃比センサ６６により検出される実際の触媒上流側空燃比が目標空燃比abyfrと一致するように、同検出された実際の触媒上流側空燃比と同目標空燃比abyfrとに基いて機関に供給する燃料量（燃料噴射量）を調整するフィードバック制御量（フィードバック補正量）ＤＦｉを求める。そして、上記フィードフォワード燃料供給量（＝Ｋ・Fbase）を同フィードバック補正量ＤＦｉで補正し、これにより触媒上流側空燃比のフィードバック制御を実行する。
【００４８】
この結果、第１触媒５３にリッチな空燃比のガスが流入するため、第１触媒５３内に吸蔵されている酸素が同第１触媒５３に流入する未燃ＨＣ,ＣＯの酸化のために消費され、同第１触媒５３の酸素吸蔵量は最大酸素吸蔵量Ｃmax2から減少して行く。そして、時刻ｔ３になると、第１触媒５３の酸素吸蔵量は「０」となるから、第１触媒５３からリッチ空燃比のガスが流出し始め、下流側空燃比センサ６７の出力Voxsはリーンを示す値からリッチを示す値に変化する。この時刻ｔ２〜ｔ３間の作動を第２モード（Mode=2）における作動と呼ぶ。
【００４９】
本空燃比制御装置は、かかる時刻ｔ２〜ｔ３間において、以下のようにして第１触媒５３の最大酸素吸蔵量Ｃmaxを最大酸素吸蔵量Ｃmax2として推定する。即ち、第１触媒上流空燃比を設定リッチ空燃比に設定した時刻ｔ２から、下流側空燃比センサ６７の出力Voxsがリッチを示す値に変化する時刻ｔ３までの間、下記数１、及び下記数２に基いて酸素吸蔵量の変化量ΔO2を算出するとともにこれを積算し、同時刻ｔ３での積算値を最大酸素吸蔵量Ｃmax2として算出する。
【００５０】
【数１】
ΔO2＝０．２３・ｍｆｒ・（stoich − abyfs）
【００５１】
【数２】
Ｃmax3＝ΣΔO2（区間ｔ＝ｔ２〜ｔ３）
【００５２】
上記数１において、値「０．２３」は大気中に含まれる酸素の重量割合である。ｍｆｒは所定時間（計算周期tsample）内の燃料噴射量Ｆｉの合計量であり、stoichは理論空燃比（例えば、１４．７）である。abyfsは所定時間tsampleにおいて上流側空燃比センサ６６により検出された空燃比Ａ／Ｆである。なお、abyfsは前記所定時間tsample内の上流側空燃比センサ６６により検出された空燃比Ａ／Ｆの平均値としてもよい。
【００５３】
この数１に示したように、所定時間tsample内の噴射量の合計量ｍｆｒに、検出された空燃比Ａ／Ｆの理論空燃比からの偏移（stoich − abyfs）を乗じることで、同所定時間tsampleにおける空気の不足量が求められ、この空気の不足量に酸素の重量割合を乗じることで同所定時間tsampleにおける酸素吸蔵量変化量（吸蔵酸素の消費量）ΔO2が求められる。そして、数２に示したように、酸素吸蔵量変化量ΔO2を時刻ｔ２〜ｔ３に渡って積算することで、第１触媒５３が酸素を最大限貯蔵していた状態から酸素を総べて消費した状態となるまでの酸素消費量、即ち最大酸素吸蔵量Ｃmax2が推定・算出される。
【００５４】
なお、本実施形態においては、時刻ｔ２〜ｔ３間で第１触媒上流空燃比は一定のリッチ空燃比abyfRichに精度良く制御されるから、時刻ｔ２〜ｔ３までの時間をΔｔ２、その間における単位時間当りの燃料供給量をｍｆｒ２とすれば、上記数１及び上記数２から、最大酸素吸蔵量Ｃmax2は０．２３・ｍｆｒ２・（stoich− abyfRich）・Δｔ２として簡単に求めることもできる。
【００５５】
時刻ｔ３にて、下流側空燃比センサ６７の出力Voxsがリーンを示す値からリッチを示す値に変化すると、本装置は第１触媒５３の上流のガスの空燃比を理論空燃比よりもリーンな所定の設定リーン空燃比に制御するため、上記第１触媒５３の上流のガスの目標空燃比abyfrを所定の設定リーン空燃比abyfLeanに設定する。
【００５６】
この場合においても、空燃比制御装置は、理論空燃比を同設定空燃比abyfLeanで除した値である空燃比設定係数Ｋを上記基本噴射量Fbaseに乗じたフィードフォワード燃料供給量（＝Ｋ・Fbase）を求めるとともに、上流側空燃比センサ６６により検出される実際の触媒上流側空燃比が目標空燃比abyfrと一致するように、同検出された実際の触媒上流側空燃比と同目標空燃比abyfrとに基いて機関に供給する燃料量（燃料噴射量）を調整するフィードバック補正量ＤＦｉを求める。そして、上記フィードフォワード燃料供給量（＝Ｋ・Fbase）を同フィードバック補正量ＤＦｉで補正し、これにより触媒上流側空燃比のフィードバック制御を実行する。
【００５７】
これにより、第１触媒５３にリーンな空燃比のガスが流入する。また、時刻ｔ３の時点においては、第１触媒５３の酸素吸蔵量は「０」となっている。従って、時刻ｔ３以降において、第１触媒５３内の酸素吸蔵量は「０」から増大し続け、時刻ｔ４にて最大酸素吸蔵量Ｃmax3に達する。この結果、時刻ｔ４にて、第１触媒５３から酸素を含む理論空燃比よりもリーンなガスが流出し始め、下流側空燃比センサ６７の出力Voxsはリッチを示す値からリーンを示す値に変化する。この時刻ｔ３〜ｔ４間の作動を第３モード（Mode=３）における作動と称呼する。
【００５８】
本装置は、かかる時刻ｔ３〜ｔ４間においても、以下のようにして第１触媒５３の最大酸素吸蔵量Ｃmaxを最大酸素吸蔵量Ｃmax3として推定する。即ち、時刻ｔ３において第１触媒５３の酸素吸蔵量は「０」であり、下流側空燃比センサ６７の出力Voxsがリーン空燃比を示す値となった時刻ｔ４では、第１触媒５３の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達したことを意味するから、時刻ｔ３〜ｔ４までの間、下記数３及び下記数４に基いて酸素吸蔵量の変化量ΔO2を算出するとともにこれを積算し、同時刻ｔ４での積算値を最大酸素吸蔵量Ｃmax3として推定・算出する。
【００５９】
【数３】
ΔO2＝０．２３・ｍｆｒ・（abyfs − stoich）
【００６０】
【数４】
Ｃmax5＝ΣΔO2（区間ｔ＝ｔ３〜ｔ４）
【００６１】
この数３に示したように、所定時間tsample内の噴射量の合計量ｍｆｒに、空燃比Ａ／Ｆの理論空燃比からの偏移（abyfs − stoich）を乗じることで、同所定時間tsampleにおける空気の過剰量が求められ、この空気の過剰量に酸素の重量割合を乗じることで同所定時間tsampleにおける酸素吸蔵量変化量（吸蔵酸素量）ΔO2が求められる。そして、数４に示したように、酸素吸蔵量変化量ΔO2を時刻ｔ３〜ｔ４に渡って積算することで、第１触媒５３の酸素吸蔵量が「０」である状態から酸素を最大限に吸蔵する状態となるまでの酸素量、即ち最大酸素吸蔵量Ｃmax3が推定・算出される。
【００６２】
なお、この場合においても、時刻ｔ３〜ｔ４間で第１触媒上流空燃比は一定の設定リーン空燃比abyfLeanに精度良く制御されるから、時刻ｔ３〜ｔ４までの時間をΔｔ３、設定リーン空燃比をabyfLean、その間における単位時間当りの燃料供給量をｍｆｒ３とすれば、最大酸素吸蔵量Ｃmax3は０．２３・ｍｆｒ３・（abyfLean − stoich）・Δｔ３として簡単に求めることもできる。
【００６３】
そして、本装置は、時刻ｔ４にて前述した通常の空燃比制御を再開して機関に吸入される混合気の空燃比を理論空燃比に戻すとともに、同時刻ｔ４以降において、上記のように求めた最大酸素吸蔵量Ｃmax2及びＣmax3の平均値を第１触媒５３の最大酸素吸蔵量Ｃmaxとして算出する。以上が、第１触媒５３の最大酸素吸蔵量Ｃmaxの算出原理である。そして、本空燃比制御装置は、最大酸素吸蔵量Ｃmaxを所定の回数ＣＮｔｈだけ算出すると、それらの平均値を平均最大酸素吸蔵量Ｃmaxaveとして算出し、この平均最大酸素吸蔵量Ｃmaxaveが所定の基準値（閾値）Ｔｈより小さい場合、第１触媒５３が劣化していると判定するようになっている。
【００６４】
このように、本空燃比制御装置は、最大酸素吸蔵量Ｃmaxに基いて触媒が劣化しているか否かの判定を行う。また、最大酸素吸蔵量Ｃmaxを求める際、下流側空燃比センサ６７の検出する空燃比が理論空燃比よりリッチな空燃比からリーンな空燃比に変化したときに目標空燃比abyfrを理論空燃比よりもリッチである所定のリッチ空燃比abyfRichに設定するとともに、前記検出される下流側空燃比が理論空燃比よりリーンな空燃比からリッチな空燃比に変化したときに目標空燃比abyfrを理論空燃比よりもリーンである所定のリーン空燃比abyfLeanに設定する。そして、上流側空燃比センサ６６の検出する空燃比が設定された目標空燃比abyfrとなるようにフィードバック補正量ＦＤｉを求める。
【００６５】
また、目標空燃比を設定リッチ空燃比abyfRichから設定リーン空燃比abyfLeanに、又はその逆に変更したとき、理論空燃比を同変更後の目標空燃比abyfrで除した値である空燃比設定係数Ｋを理論空燃比を得るために理論上必要な基本噴射量Fbaseに乗じてフィードフォワード燃料供給量（＝Ｋ・Fbase）を求め、これをフィードバック補正量ＦＤｉにより補正する。
【００６６】
換言すると、目標空燃比abyfrが設定リーン空燃比abyfLeanから設定リッチ空燃比abyfRichに変更されたとき、フィードフォワード燃料供給量は、前記機関に供給される混合気の空燃比を（仮にフィードバック補正量ＦＤｉによる補正がない場合であっても）理論空燃比よりもリッチとするために必要な燃料量となるように、第１，第２空燃比センサ６６，６７の出力に関わりなく、前記取得された筒内吸入空気量Ｍｃに応じた値と同設定された目標空燃比abyfrとに基いて算出される。なお、本例では、触媒上流側空燃比を設定リッチ空燃比abyfRichと一致させるために理論上必要な燃料量をフィードフォワード燃料供給量として算出しているが、これに限定されるはことなく、触媒上流の空燃比が理論空燃比よりもリーンな空燃比から理論空燃比よりもリッチな空燃比に直ちに変化するに充分な燃料量を同フィードフォワード燃料供給量として算出してもよい。
【００６７】
同様に、目標空燃比abyfrが設定リッチ空燃比abyfRichから設定リーン空燃比abyfLeanに変更されたとき、フィードフォワード燃料供給量は、前記機関に供給される混合気の空燃比を理論空燃比よりもリーンとするために必要な燃料量となるように、第１，第２空燃比センサ６６，６７の出力に関わりなく、前記取得された筒内吸入空気量Ｍｃに応じた値と同設定された目標空燃比abyfrとに基いて算出される。なお、本例では、触媒上流側空燃比を設定リーン空燃比abyfLeanと一致させるために理論上必要な燃料量をフィードフォワード燃料供給量として算出しているが、これに限定されるはことなく、触媒上流の空燃比が理論空燃比よりもリッチな空燃比から理論空燃比よりもリーンな空燃比に直ちに変化するに充分な燃料量を同フィードフォワード燃料供給量として算出してもよい。
【００６８】
従って、目標空燃比abyfrの切換直後において、触媒上流空燃比は同目標空燃比abyfrに略等しい空燃比となるので、空燃比のフィードバック補正量ＦＤｉによる制御遅れが存在しても、エミッションが大幅に悪化しない。つまり、従来技術のように、理論空燃比を得るための基本燃料噴射量をフィードバック補正量ＦＤｉで補正することにより理論空燃比とは異なる設定リッチ空燃比又は設定リーン空燃比に制御しようとすると、フィードバック補正量ＦＤｉが収束するまでの時間（つまりは、空燃比が目標空燃比と略一致するまでの時間）が長くなり、その間（特に、切換後の目標空燃比に向けて変化する触媒上流側空燃比が理論空燃比を横切るまでの期間）においてエミッションが悪化するのに対し、本空燃比制御装置は、そのようなエミッションの悪化を招くことがない。
【００６９】
（実際の作動）
次に、上記空燃比制御装置の実際の作動について説明する。
【００７０】
＜通常の空燃比のフィードバック制御＞
ＣＰＵ７１は、図６にフローチャートにより示した最終燃料噴射量Ｆｉの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が前記所定クランク角度になると、ＣＰＵ７１はステップ６００から処理を開始してステップ６０５に進み、エアフローメータ６１により計測された吸入空気流量Ｇａと、エンジン回転速度NEとに基いて、機関の空燃比を理論空燃比とするための基本燃料噴射量Ｆbaseを求める。具体的には、エアフローメータ６１が計測している吸入空気流量Ｇａに一次遅れ処理を施した値（吸入空気量に応じた値）をエンジン回転速度NEで除することで筒内吸入空気量Ｍｃを算出し、これを目標空燃比である理論空燃比で除する関数ｆにより基本燃料噴射量Ｆbaseを求める。なお、この筒内吸入空気量Ｍｃを算出する機能は吸入空気量相当値取得手段の機能である。
【００７１】
次いで、ＣＰＵ７１はステップ６１０に進み、基本燃料噴射量Ｆbaseに空燃比設定係数Ｋを乗じた値（即ち、フィードフォワード燃料供給量＝Ｋ・Ｆbase）に後述する空燃比フィードバック補正量（メインフィードバック制御量）ＤＦｉを加えた値を最終燃料噴射量（最終燃料供給量）Ｆｉとして設定する。この空燃比設定係数Ｋの値は、通常は「１．００」であり、後述するように、最大酸素吸蔵量Ｃmaxを求めるために強制的に空燃比を変更するとき、理論空燃比をその時点の目標空燃比abyfrで除した値（従って、「１．００」以外の所定値）に設定される。
【００７２】
次いで、ＣＰＵ７１はステップ６１５に進み、同ステップ６１５にて同最終燃料噴射量Ｆｉの燃料を噴射するための指示を燃料供給手段の一部であるインジェクタ３９に対して行う。その後、ＣＰＵ７１はステップ６２０に進み、その時点の燃料噴射量積算値ｍｆｒに最終燃料噴射量Ｆｉを加えた値を、新たな燃料噴射量積算値ｍｆｒに設定する。この燃料噴射量積算値ｍｆｒは、後述する酸素吸蔵量を算出する際に用いられる。その後、ＣＰＵ７１はステップ６９５に進み、本ルーチンを一旦終了する。以上により、フィードバック補正された最終燃料噴射量Ｆｉの燃料が吸気行程を迎える気筒に対して噴射される。
【００７３】
次に、上記メインフィードバック補正量ＤＦｉの算出について説明すると、ＣＰＵ７１は図７にフローチャートにより示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ７００から処理を開始し、ステップ７０５に進んで空燃比フィードバック制御条件（メインフィードバック制御条件）が成立しているか否かを判定する。この空燃比フィードバック制御条件は、例えば、機関の冷却水温THWが第１所定温度以上であり、機関の一回転当りの吸入空気量（負荷、筒内吸入空気量Ｍｃ）が所定値以下であり、且つ上流側空燃比センサ６６が正常であるときに成立する。
【００７４】
いま、空燃比フィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ７０５にて「Ｙｅｓ」と判定してステップ７１０に進み、現時点の上流側空燃比センサ６６の出力vabyfsと後述するサブフィードバック制御量vafsfbとの和（vabyfs＋vafsfb）を図３に示したマップに基いて変換することにより、現時点におけるメインフィードバック制御用空燃比abyfsを求める。このメインフィードバック制御用空燃比abyfsが、上流側空燃比センサ６６の出力をサブフィードバック制御量vafsfbにより補正した第１触媒５３の上流における上記「見かけ上の空燃比」である。
【００７５】
次に、ＣＰＵ７１はステップ７１５に進み、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Ｍｃ（ｋ−Ｎ）を前記求めたメインフィードバック制御用空燃比abyfsで除することにより、現時点からＮストローク前の実際の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求める。値Ｎは、内燃機関の排気量、燃焼室２５から上流側空燃比センサ６６までの距離等により異なる値である。
【００７６】
このように、現時点からＮストローク前の筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）をメインフィードバック制御用空燃比abyfsで除するのは、燃焼室２５内で燃焼された混合気が上流側空燃比センサ６６に到達するまでには、Ｎストロークに相当する時間を要しているからである。なお、筒内吸入空気量Ｍｃは、各気筒の吸気行程に対応されながらＲＡＭ７３内に記憶されるようになっている。
【００７７】
次いで、ＣＰＵ７１はステップ７２０に進み、現時点からＮストローク前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を現時点からＮストローク前の目標空燃比abyfr（ｋ−Ｎ）で除することにより、現時点からＮストローク前の目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）を求める。なお、目標空燃比abyfrも各気筒の吸気行程に対応されながらＲＡＭ７３内に記憶されるようになっている。
【００７８】
そして、ＣＰＵ７１はステップ７２５に進んで目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じた値を筒内燃料供給量偏差ＤＦｃとして設定する。つまり、筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。次に、ＣＰＵ７１はステップ７３０に進み、下記数５に基いてメインフィードバック補正量ＤＦｉを求める。
【００７９】
【数５】
ＤＦｉ＝（Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ）・ＫＦＢ
【００８０】
上記数５において、Ｇｐは予め設定された比例ゲイン（比例定数）、Ｇｉは予め設定された積分ゲイン（積分定数）である。なお、数５の係数ＫＦＢはエンジン回転速度NE、及び筒内吸入空気量Ｍｃ等により可変とすることが好適であるが、ここでは「１」としている。また、値ＳＤＦｃは筒内燃料供給量偏差ＤＦｃの積分値であり、次のステップ７３５にて更新される。即ち、ＣＰＵ７１は、ステップ７３５にてその時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ７２５にて求めた筒内燃料供給量偏差ＤＦｃを加えて、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを求め、ステップ７９５にて本ルーチンを一旦終了する。
【００８１】
以上により、メインフィードバック補正量ＤＦｉが比例積分制御により求められ、このメインフィードバック補正量ＤＦｉが前述した図６のステップ６１０により燃料噴射量に反映されるので、Ｎストローク前の燃料供給量の過不足が補償され、内燃機関の空燃比が目標空燃比abyfrと略一致せしめられるようにフィードバック制御される。
【００８２】
一方、ステップ７０５の判定時において、空燃比フィードバック制御条件が不成立であると、ＣＰＵ７１は同ステップ７０５にて「Ｎｏ」と判定してステップ７４０に進み、メインフィードバック補正量ＤＦｉの値を「０」に設定し、その後ステップ７９５に進んで本ルーチンを一旦終了する。このように、空燃比フィードバック制御条件が不成立であるときは、メインフィードバック補正量ＤＦｉを「０」として空燃比（フィードフォワード燃料供給量＝Ｋ・Ｆbase）の補正を行わない。
【００８３】
次に、下流側空燃比センサ６７の出力Voxsに基く空燃比フィードバック制御（サブフィードバック制御）について説明する。このサブフィードバック制御により、サブフィードバック制御量vafsfbが算出される。
【００８４】
ＣＰＵ７１は、サブフィードバック制御量vafsfbを求めるために、図８に示したルーチンを所定時間の経過毎に実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ８００から処理を開始し、ステップ８０５に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件は、例えば、前述したステップ７０５での空燃比フィードバック制御条件に加え、機関の冷却水温THWが前記第１所定温度よりも高い第２所定温度以上のとき、下流側空燃比センサ６７が正常であるとき、及び、空燃比強制設定制御実行中フラグＸＨＡＮの値が「０」であって最大酸素吸蔵量Ｃmax算出のために強制的に空燃比を変更する空燃比制御（アクティブ制御）を実行していないときに成立する。
【００８５】
なお、空燃比強制設定制御実行中フラグＸＨＡＮは、後述するように、その値が「１」のとき最大酸素吸蔵量Ｃmax算出のために強制的に空燃比を変更する空燃比制御を実行していることを示し、その値が「０」のとき同最大酸素吸蔵量Ｃmax算出のための空燃比制御を実行していないことを示す。
【００８６】
いま、サブフィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、所定の目標値Voxrefから現時点の下流側空燃比センサ６７の出力Voxsを減じることにより、出力偏差量ＤＶoxsを求める。この目標値Voxsrefは、略理論空燃比に対応した値に設定されている。次いで、ＣＰＵ７１はステップ８１５に進み、下記数６に基いてサブフィードバック制御量vafsfbを求める。
【００８７】
【数６】
vafsfb＝Ｋｐ・ＤＶoxs＋Ｋｉ・ＳＤＶoxs
【００８８】
上記数６において、Ｋｐは予め設定された比例ゲイン（比例定数）、Ｋｉは予め設定された積分ゲイン（積分定数）である。また、ＳＤＶoxsは、出力偏差量ＤＶoxsの積分値であって、次のステップ８２０にて更新される値である。即ち、ＣＰＵ７１は、ステップ８２０に進むと、その時点における出力偏差量の積分値ＳＤＶoxsに上記ステップ８１０にて求めた出力偏差量ＤＶoxsを加えて、新たな出力偏差量の積分値ＳＤＶoxsを求め、その後、ステップ８９５に進んで本ルーチンを一旦終了する。
【００８９】
このようにして、サブフィードバック制御量vafsfbが求められ、この値は前述した図７のステップ７１０にて上流側空燃比センサ６６の実際の出力vabyfsに加えられ、その和（vabyfs + vafsfb）がＲＯＭ内に格納した図３に示したマップに基いてメインフィードバック制御用空燃比abyfsに変換される。このようにして、下流側空燃比センサ６７の出力Voxsに基いて求められるメインフィードバック制御用空燃比abyfsは、上流側空燃比センサ６６が実際に検出している空燃比vabyfsに対して、サブフィードバック制御量vafsfbに相当する分だけ異なる空燃比として求められる。
【００９０】
この結果、前述した図７のステップ７１５にて計算される筒内燃料供給量Ｆｃ（ｋ−Ｎ）が下流側空燃比センサ６７の出力Voxsに応じて変化するので、ステップ７２５，ステップ７３０によってメインフィードバック補正量ＤＦｉが同下流側空燃比センサ６７の出力Voxsに応じて変更せしめられる。これにより、第１触媒５３の下流側の空燃比が目標値Voxsrefで表された空燃比に一致するように、機関の空燃比が制御せしめられる。
【００９１】
一方、サブフィードバック制御条件が不成立であるとき、ＣＰＵ７１はステップ８０５にて「Ｎｏ」と判定してステップ８２５に進み、同ステップ８２５にてサブフィードバック制御量vafsfbを「０」に設定し、ステップ８９５にて本ルーチンを一旦終了する。これにより、下流側空燃比センサ６７の出力Voxsに基くサブフィードバック制御が停止される。
【００９２】
（最大酸素吸蔵量算出及び触媒劣化判定のための実際の作動）
次に、上述した第１触媒５３の最大酸素吸蔵量Ｃmaxの算出、及び同第１触媒５３の劣化判定についての本装置の実際の作動について説明すると、ＣＰＵ７１は図９〜図１６のフローチャートにより示された各ルーチンを所定時間の経過毎に実行するようになっている。
【００９３】
従って、所定のタイミングになると、ＣＰＵ７１は酸素吸蔵量算出を開始すべきか否かを判定するために、図９に示したルーチンのステップ９００から処理を開始し、ステップ９０５に進んで空燃比強制設定制御実行中フラグＸＨＡＮの値が「０」であるか否かを判定する。
【００９４】
いま、最大酸素吸蔵量算出のための空燃比制御を行っておらず、且つ、最大酸素吸蔵量算出条件（触媒劣化判定条件）が成立していないとして説明を続けると、空燃比強制設定制御実行中フラグＸＨＡＮの値は「０」となっている。従って、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、先に説明した図６のステップ６１０にて使用される空燃比設定係数Ｋの値を１．００に設定する。
【００９５】
次いで、ＣＰＵ７１はステップ９１５にて最大酸素吸蔵量算出条件が成立しているか否かを判定する。この最大酸素吸蔵量算出条件は、冷却水温THWが所定温度以上であり、図示しない車速センサにより得られた車速が所定の高車速以上であり、且つスロットル弁開度TAの単位時間あたりの変化量が所定量以下であるという条件が満足された場合、即ち、機関が定常運転されている場合に成立する。
【００９６】
更に、最大酸素吸蔵量算出条件に、推定される第１触媒５３の温度が所定の温度範囲内にあること、前回の最大酸素吸蔵量算出から所定時間以上が経過したこと、前回の最大酸素吸蔵量算出から車両が所定距離以上運転されたこと、前回の最大酸素吸蔵量算出から内燃機関１０が所定時間以上運転されたことの任意の一つ、又は一つ以上を最大酸素吸蔵量算出条件に加えても良い。現段階では、上述したように、最大酸素吸蔵量算出条件は成立していないから、ＣＰＵ７１はステップ９１５にて「Ｎｏ」と判定してステップ９９５に進み、本ルーチンを一旦終了する。
【００９７】
次に、先に説明した図５の時刻ｔ１のように、その時点までは最大酸素吸蔵量算出のための空燃比制御を行っていないが（即ち、上述の通常の空燃比制御を行っているが）、同時点にて最大酸素吸蔵量算出条件が成立したものとして説明を続けると、この場合においても、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、同ステップ９１０にて空燃比設定係数Ｋの値を１．００に設定する。次いで、ＣＰＵ７１は、最大酸素吸蔵量算出条件が成立しているので、ステップ９１５にて「Ｙｅｓ」と判定してステップ９２０に進み、同ステップ９２０にて空燃比強制設定制御実行中フラグＸＨＡＮの値を「１」に設定する。
【００９８】
そして、ＣＰＵ７１はステップ９２５に進み、第１モードに移行するためにModeの値を「１」に設定するとともに、続くステップ９３０にて空燃比設定係数Ｋの値を０．９８に設定し、ステップ９９５に進んで本ルーチンを一旦終了する。
【００９９】
一方、ＣＰＵ７１は図１０に示した目標空燃比設定ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１０００から処理を開始してステップ１００５に進み、同ステップ１００５にてModeの値が「１」又は「３」であるか否かを判定するようになっている。
【０１００】
これに対し、現段階では、先のステップ９２５の処理によりModeの値が「１」となっているから、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、目標空燃比abyfrを設定リーン空燃比abyfLeanとし、ステップ１０９５に進んで本ルーチンを一旦終了する。なお、理論空燃比を設定リーン空燃比abyfLeanで除した値は、前記ステップ９３０で設定される空燃比設定係数Ｋの値と等しい。
【０１０１】
この結果、ステップ９２０にて空燃比強制設定制御実行中フラグＸＨＡＮの値が「１」に設定されてサブフィードバック制御条件が不成立となるから、ＣＰＵ７１は図８のステップ８０５にて「Ｎｏ」と判定してステップ８２５に進み、サブフィードバック制御量vafsfbの値が「０」に設定され、これによりサブフィードバック制御が停止する。
【０１０２】
一方、メインフィードバック制御は続行されるから、図７に示したルーチンの実行により触媒上流側空燃比が設定リーン空燃比abyfLeanと等しくなるように、上流側空燃比センサ出力vabyfsと目標空燃比abyfrとに基いてメインフィードバック補正量ＤＦｉが算出される。そして、図６に示したルーチンのステップ６１０の実行により、基本燃料噴射量Ｆbaseを０.９８倍（Ｋ倍）したフィードフォワード燃料供給量にメインフィードバック補正量ＤＦｉが加算されることにより最終燃料噴射量Ｆｉが算出され、この最終燃料噴射量Ｆｉの燃料が噴射される。この結果、機関の空燃比は理論空燃比よりもリーンな前記設定リーン空燃比abyfLeanに直ちに制御される。
【０１０３】
以降、ＣＰＵ７１は図９のルーチンの処理をステップ９００から繰り返し実行するが、空燃比強制設定制御実行中フラグＸＨＡＮの値が「１」となっていることから、ステップ９０５にて「Ｎｏ」と判定して直ちにステップ９９５に進み、本ルーチンを一旦終了するようになる。
【０１０４】
一方、ＣＰＵ７１は図１１に示した第１モード制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングとなると、ＣＰＵ７１はステップ１１００から処理を開始してステップ１１０５に進み、Modeの値が「１」であるか否かを判定する。この場合、先の図９のステップ９２５の処理によりModeの値は「１」となっているので、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、下流側空燃比センサ６７の出力Voxsが理論空燃比よりもリッチな空燃比を示す値から同理論空燃比よりもリーンな空燃比を示す値に変化したか否かを判定する。
【０１０５】
現時点では、機関の空燃比を設定リーン空燃比abyfLeanにする制御が開始された直後であるから、下流側空燃比センサ出力Voxsは理論空燃比よりもリッチな空燃比を示している。従って、ＣＰＵ７１はステップ１１１０にて「Ｎｏ」と判定し、ステップ１１９５にて本ルーチンを一旦終了する。
【０１０６】
以降、ＣＰＵ７１は図１１のステップ１１００〜１１１０を繰り返し実行する。また、空燃比は設定リーン空燃比abyfLeanに略等しく制御されているから、所定の時間が経過すると図５の時刻ｔ２のように下流側空燃比センサ出力Voxsはリッチを示す値からリーンを示す値に変化する。これにより、ＣＰＵ７１はステップ１１１０に進んだとき、同ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１１５に進み、Modeの値を「２」に設定するとともに、続くステップ１１２０にて空燃比設定係数Ｋの値を１．０２に設定し、その後ステップ１１９５にて本ルーチンを一旦終了する。
【０１０７】
このとき、ＣＰＵ７１は図１０に示したステップ１００５に進むと、同ステップ１００５にて「Ｎｏ」と判定しステップ１０１５に進んでModeの値が２であるか否かを判定する。この場合、先のステップ１１１５の処理によりModeの値は「２」となっているから、ＣＰＵ７１はステップ１０１５にて「Ｙｅｓ」と判定してステップ１０２０に進み、目標空燃比abyfrを設定リッチ空燃比abyfRichとし、ステップ１０９５に進んで本ルーチンを一旦終了する。なお、理論空燃比を設定リッチ空燃比abyfRichで除した値は、前記ステップ１１２０で設定される空燃比設定係数Ｋの値（＝１.０２）と等しい。
【０１０８】
以上の処理により、サブフィードバック制御量vafsfbの値が「０」に維持されるとともに、触媒上流側空燃比が設定リッチ空燃比abyfRichと等しくなるように、上流側空燃比センサ出力vabyfsと目標空燃比abyfrとに基いてメインフィードバック補正量ＤＦｉが算出される。そして、図６のステップ６１０の実行により、基本燃料噴射量Ｆbaseを１.０２倍（Ｋ倍）したフィードフォワード燃料供給量にメインフィードバック補正量ＤＦｉが加算されて最終燃料噴射量Ｆｉが算出され、この最終燃料噴射量Ｆｉの燃料が噴射される。この結果、機関の空燃比は理論空燃比よりもリッチな前記設定リッチ空燃比abyfRichに直ちに制御される。
【０１０９】
以降、ＣＰＵ７１は図１１のルーチンの処理をステップ１１００から繰り返し実行するが、Modeの値が「２」となっていることから、ステップ１１０５にて「Ｎｏ」と判定して直ちにステップ１１９５に進み、本ルーチンを一旦終了するようになる。
【０１１０】
同様に、ＣＰＵ７１は図１２に示した第２モード制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングとなると、ＣＰＵ７１はステップ１２００から処理を開始してステップ１２０５に進み、Modeの値が「２」であるか否かを判定する。この場合、先の図１１のステップ１１１５の処理によりModeの値が「２」となっているから、ＣＰＵ７１はステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、同ステップ１２１０にて下流側空燃比センサ６７の出力Voxsが理論空燃比よりリーンな空燃比を示す値から同理論空燃比よりリッチな空燃比を示す値に変化したか否かを判定し、かかる変化がない場合にはステップ１２９５に進む処理を行う。
【０１１１】
そして、図５の時刻ｔ３に示したように、下流側空燃比センサ６６の出力Voxsが理論空燃比よりリーンな空燃比を示す値から同理論空燃比よりリッチな空燃比を示す値に変化すると、ＣＰＵ７１はステップ１２１０からステップ１２１５に進んで第３モードに移行すべくModeの値を「３」に設定し、続くステップ１２２０にて空燃比設定係数Ｋの値を０．９８に設定する。これにより、ＣＰＵ７１は図１０のステップ１００５に進んだとき、同ステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、目標空燃比abyfrを前記設定リーン空燃比abyfLeanとする。この結果、Modeの値が「１」である場合と同様に、機関の空燃比が前記設定リーン空燃比abyfLeanに再び制御される。
【０１１２】
また、ＣＰＵ７１は図１３に示した第３モード制御ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングとなると、ＣＰＵ７１はステップ１３００から処理を開始してステップ１３０５に進み、Modeの値が「３」であるか否かを判定する。この場合、先の図１２のステップ１２１５の処理によりModeの値は「３」となっているから、ＣＰＵ７１はステップ１３０５にて「Ｙｅｓ」と判定してステップ１３１０に進み、同ステップ１３１０にて下流側空燃比センサ６６の出力Voxsが理論空燃比よりリッチな空燃比を示す値から同理論空燃比よりリーンな空燃比を示す値に変化したか否かをモニタする。
【０１１３】
そして、図５の時刻ｔ４に示したように、下流側空燃比センサ６６の出力Voxsが理論空燃比よりリッチな空燃比を示す値から同理論空燃比よりリーンな空燃比を示す値に変化すると、ＣＰＵ７１はステップ１３１０からステップ１３１５に進んでModeの値を「０」に再設定し、続くステップ１３２０にて空燃比強制設定制御実行中フラグＸＨＡＮの値を「０」に設定した後、ステップ１３９５に進んで本ルーチンを一旦終了する。
【０１１４】
これにより、ＣＰＵ７１は図９のルーチンを実行する際、ステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進むので、空燃比設定係数Ｋの値が１．００に戻される。同時に、ＣＰＵ７１は、Modeの値が「０」に戻されたことから、図１０のステップ１００５及びステップ１０１５にて「Ｎｏ」と判定してステップ１０２５に進み目標空燃比abyfrを理論空燃比stoichに戻す。また、空燃比強制設定制御実行中フラグＸＨＡＮの値が「０」に戻されたので、他のサブフィードバック制御条件が成立していれば、ＣＰＵ７１は図８のステップ８０５にて「Ｙｅｓ」と判定するから、サブフィードバック制御が再開され、これらにより空燃比が理論空燃比にフィードバック制御されるようになる。
【０１１５】
以上、説明したように、最大酸素吸蔵量算出条件が成立すると、機関の空燃比が設定リーン空燃比abyfLean、設定リッチ空燃比abyfRich、及び設定リーン空燃比abyfLeanの順に制御される。
【０１１６】
一方、ＣＰＵ７１は、第１触媒５３の最大酸素吸蔵量Ｃmaxを算出するために、図１４及び図１５のフローチャートにより示された各ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１は図１４のステップ１４００から処理を開始し、ステップ１４０５に進んで下記数７により酸素吸蔵量変化量ΔO2を求める。
【０１１７】
【数７】
ΔO2＝０．２３・ｍｆｒ・（abyfs − stoich）
【０１１８】
次いで、ＣＰＵ７１はステップ１４１０に進んでModeの値が「２」であるか否かを判定し、Modeの値が「２」であれば同ステップ１４１０にて「Ｙｅｓ」と判定してステップ１４１５に進む。そして、ＣＰＵ７１は、ステップ１４１５にてその時点の第２モードの酸素吸蔵量ＯＳＡ２に上記酸素吸蔵量変化量ΔO2の絶対値を加えた値を新たな酸素吸蔵量ＯＳＡ２として設定し、その後ステップ１４２０に進んで燃料噴射量Ｆｉの合計量ｍｆｒを「０」に設定し、その後ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１１９】
このような処置（ステップ１４０５〜ステップ１４２０）は、Modeの値が「２」である限り繰り返し実行される。この結果、第１触媒５３の上流の空燃比が設定リッチ空燃比abyfRichに制御される第２モード（Mode=2）において、第１触媒５３の酸素吸蔵量ＯＳＡ２が算出されて行く。
【０１２０】
一方、現時点が第２モード以外のモードである場合、ＣＰＵ７１は上記ステップ１４１０にて「Ｎｏ」と判定してステップ１４２５に進み、同ステップ１４２５にてModeの値が「３」であるか否かを判定し、Modeの値が「３」であれば同ステップ１４２５にて「Ｙｅｓ」と判定してステップ１４３０に進む。そして、ＣＰＵ７１は、ステップ１４３０にてその時点の第３モードの酸素吸蔵量ＯＳＡ３に上記酸素吸蔵量変化量ΔO2の絶対値を加えた値を新たな酸素吸蔵量ＯＳＡ３として設定し、その後ステップ１４２０に進んで燃料噴射量Ｆｉの合計量ｍｆｒを「０」に設定した後、ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１２１】
このような処置（ステップ１４００，１４０５，１４１０，１４２５，１４３０，１４２０）は、Modeの値が「３」である限り繰り返し実行される。この結果、第１触媒５３の上流の空燃比が設定リーン空燃比abyfLeanに制御される第３モード（Mode=3）において、第１触媒５３の酸素吸蔵量ＯＳＡ３が算出されて行く。なお、ステップ１４２５での判定において「Ｎｏ」と判定される場合、ＣＰＵ７１は同ステップ１４２５からステップ１４２０に直接進む。
【０１２２】
また、ＣＰＵ７１は図１５に示した最大酸素吸蔵量の算出及び触媒劣化判定のためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ７１はステップ１５００から処理を開始し、ステップ１５０５に進んで空燃比強制設定制御実行中フラグＸＨＡＮの値が「１」から「０」に変化したか否かをモニタする。
【０１２３】
このとき、第３モードが終了して、先に説明した図１３のステップ１３２０にて空燃比強制設定制御実行中フラグＸＨＡＮの値が「０」に変更されると、ＣＰＵ７１はステップ１５０５にて「Ｙｅｓ」と判定してステップ１５１０に進む。他方、空燃比強制設定制御実行中フラグＸＨＡＮの値が変化していなければ、ＣＰＵ７１はステップ１５０５からステップ１５９５に直接進んで本ルーチンを一旦終了する。
【０１２４】
いま、第３モードが終了した直後であるとすると、空燃比強制設定制御実行中フラグＸＨＡＮの値が「１」から「０」に変更された直後であるから、ＣＰＵ７１はステップ１５０５からステップ１５１０に進み、その時点の酸素吸蔵量ＯＳＡ２，及びＯＳＡ３を、最大酸素吸蔵量Ｃmax2，及びＣmax3として格納する。次いで、ＣＰＵ７１はステップ１５１５に進み、同ステップ１５１５にて最大酸素吸蔵量Ｃmax2と最大酸素吸蔵量Ｃmax3の平均値を、第１触媒５３の最大酸素吸蔵量Ｃmaxとして格納する。
【０１２５】
次に、ＣＰＵ７１はステップ１５２０に進んでステップ１５１５にて求めた最大酸素吸蔵量Ｃmaxをその時点の最大酸素吸蔵量積算値ＳＣmaxに加えて新たな最大酸素吸蔵量積算値ＳＣmaxを求め、続くステップ１５２５にてカウンタＣＮの値を「１」だけ増大する。従って、カウンタＣＮの値は最大酸素吸蔵量積算値ＳＣmaxとして積算された最大酸素吸蔵量Ｃmaxのデータ数を表す値となる。次いで、ＣＰＵ７１はステップ１５３０に進み、酸素吸蔵量ＯＳＡ２，ＯＳＡ３の各々の値を「０」に設定し、ステップ１５９５に進んで本ルーチンを一旦終了する。以上により、最大酸素吸蔵量Ｃmaxが算出され、最大酸素吸蔵量積算値ＳＣmax、及びカウンタＣＮの値が更新される。
【０１２６】
また、ＣＰＵ７１は図１６にフローチャートにより示した触媒劣化判定ルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになるとＣＰＵ７１はステップ１６００から処理を開始し、ステップ１６０５に進んでカウンタＣＮの値が所定の閾値ＣＮｔｈ以上となったか否かを判定する。このとき、カウンタＣＮの値が所定の閾値ＣＮｔｈ以上となっていなければ、ＣＰＵ７１はステップ１６０５にて「Ｎｏ」と判定してステップ１６９５に進み、本ルーチンを一旦終了する。
【０１２７】
その後、複数回に渡り最大酸素吸蔵量Ｃmaxが求められると、カウンタＣＮの値が閾値ＣＮｔｈに等しくなるので、ＣＰＵ７１はステップ１６０５に進んだとき同ステップ１６０５にて「Ｙｅｓ」と判定し、ステップ１６１０に進んで最大酸素吸蔵量積算値ＳＣmaxを閾値ＣＮｔｈ（この時点のカウンタＣＮの値）で除し、平均最大酸素吸蔵量Ｃmaxaveを求める。
【０１２８】
次いで、ＣＰＵ７１はステップ１６１５にて最大酸素吸蔵量積算値ＳＣmaxとカウンタＣＮの値を共に「０」にクリアするとともに、続くステップ１６２０にて平均最大酸素吸蔵量Ｃmaxaveが触媒劣化判定基準値Ｔｈ以下か否かを判定する。そして、平均最大酸素吸蔵量Ｃmaxaveが触媒劣化判定基準値Ｔｈ以下であるとき、ＣＰＵ７１は第１触媒５３が劣化したと判定し、ステップ１６２５に進んでバックアップＲＡＭ７４に格納される触媒劣化判定結果フラグＸＲＳＣの値を「１」に設定し、その後、ステップ１６９５にて本ルーチンを一旦終了する。
【０１２９】
他方、ステップ１６２０にて、平均最大酸素吸蔵量Ｃmaxaveが触媒劣化判定基準値Ｔｈより大きいとき、ＣＰＵ７１は第１触媒５３が劣化していないと判定し、ステップ１６３０に進んで触媒劣化判定結果フラグＸＲＳＣの値を「０」に設定し、ステップ１６９５にて本ルーチンを一旦終了する。以上により、第１触媒５３が劣化したか否かの判定結果が、必要に応じて読み出されるようにバックアップＲＡＭ７４に格納される。
【０１３０】
このように、第１触媒５３の最大酸素吸蔵量Ｃmaxが複数回（ＣＮｔｈ回）求められると、最大酸素吸蔵量Ｃmaxの平均値Ｃmaxaveの値が触媒劣化判定基準値Ｔｈより小さいか否かが判定され、最大酸素吸蔵量Ｃmaxの平均値Ｃmaxaveの値が触媒劣化判定基準値Ｔｈより小さいとき、第１触媒５３が劣化したものと判定される。
【０１３１】
以上、説明したように、本発明による内燃機関の空燃比制御装置は、最大酸素吸蔵量算出条件が成立している場合に、第１触媒５３の下流側空燃比センサ６７の出力がリーンからリッチに反転したとき、第１触媒５３の上流空燃比の目標空燃比をリーン空燃比に設定し、上流側空燃比センサ６６が検出する空燃比が同目標空燃比となるように空燃比のフィードバック制御量を求めるとともに、上流側空燃比センサ６６の検出する空燃比に基く空燃比のフィードバック制御が行われない場合であっても第１触媒５３の上流側空燃比がリーンになるような燃料供給量（フィードフォワード量）を求め、この燃料供給量を上流側空燃比センサ６６の検出する空燃比に基くフィードバック制御量で補正する。
【０１３２】
従って、第１触媒５３の下流側空燃比センサ６７の出力がリーンからリッチに反転したときには、第１触媒５３の酸素吸蔵量は「０」となっているが、その後、フィードフォワード量の燃料が直ちに供給されて第１触媒５３に流入するガスの空燃比が直ちにリーンとなるので、未燃燃料が多量に排出されることがない。また、上流側空燃比センサ６６の検出する空燃比に基く空燃比のフィードバック制御も行われるので、第１触媒５３に流入するガスの空燃比も所定のリーン空燃比に精度良く制御され、その結果、第１触媒５３の劣化程度を精度良く表す最大酸素吸蔵量を得ることができるとともに、機関の空燃比が過度にリーンとならないので、ドライバビリティの悪化を回避することもできる。
【０１３３】
同様に、本空燃比制御装置は、第１触媒５３の下流側空燃比センサ６７の出力がリッチからリーンに反転したとき、第１触媒５３の上流空燃比の目標空燃比をリッチ空燃比に設定し、上流側空燃比センサ６６が検出する空燃比が同目標空燃比となるように同上流側空燃比センサ６６の検出する空燃比に基く空燃比のフィードバック制御量を求めるとともに、上流側空燃比センサ６６の検出する空燃比に基く空燃比のフィードバック制御が行われない場合であっても第１触媒５３の上流空燃比がリッチになるような燃料供給量（フィードフォワード量）を求め、この燃料供給量を前記フィードバック制御量で補正する。
【０１３４】
従って、第１触媒５３の下流側空燃比センサ６７の出力がリッチからリーンに反転したときには、第１触媒５３の酸素吸蔵量は最大となっているが、その後、フィードフォワード量の燃料が直ちに供給されて第１触媒５３に流入するガスの空燃比が直ちにリッチとなるので、ＮＯｘが多量に排出されることがない。また、空燃比のフィードバック制御も行われるので、第１触媒５３に流入するガスの空燃比も所定のリッチ空燃比に精度良く制御され、その結果、第１触媒５３の劣化程度を精度良く表す最大酸素吸蔵量を得ることができるとともに、機関の空燃比が過度にリッチとならないので、ドライバビリティの悪化を回避することもできる。
【０１３５】
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、サブフィードバック制御は、上記ＰＩ制御でなく、ＰＩＤ制御であってもよい。更に、下流側空燃比センサ６７は、上流側空燃比センサ６６と同様な空燃比センサであってもよい。
【０１３６】
また、上記実施形態においては、第１触媒５３の最大酸素吸蔵量を求めるために、目標空燃比abyfrを設定リッチ空燃比abyfRichと設定リーン空燃比abyfLeanとに切り換えていたが、例えば、下流側空燃比センサ６７が正常に機能するか否かを判定するために（同センサの応答遅れ等を検出するために）、同目標空燃比を設定リッチ空燃比abyfRichと設定リーン空燃比abyfLeanとに切り換えるような場合に対しても、本発明を適用することができる。
【０１３７】
また、上記実施形態の空燃比制御装置は、目標空燃比を設定リーン空燃比abyfLean、設定リッチ空燃比abyfRich、及び設定リーン空燃比abyfLeanの順に制御し、同目標空燃比が同設定空燃比abyfRichとされている期間（第２モード）で得られた最大酸素吸蔵量Ｃmax2と、これに続く同目標空燃比が同設定空燃比abyfLeanとされている期間（第３モード）で得られた最大酸素吸蔵量Ｃmax3との平均を一つの最大酸素吸蔵量Ｃmaxのデータとして取得していたが、第２モードと第３モードを交互に複数回（例えば、４回）繰り返し、その各モードにおいて得られた各最大酸素吸蔵量Ｃmaxを平均することにより、その時点における一つの最大酸素吸蔵量Ｃmaxについてのデータを取得するように構成してもよい。
【０１３８】
また、上記実施形態におけるフィードフォワード燃料供給量は、例えば、目標空燃比切り換え直後において最も大きく、その後、時間経過とともに減衰する量のように、時間経過とともに変化する量であってもよい。更に、前述したように、フィードフォワード燃料供給量は、触媒に流入するガスの空燃比が、切換後の目標空燃比に向けて直ちに理論空燃比を横切る（跨ぐ）ような量であればよく、上記実施形態のフィードフォワード燃料量に限定されない。
【０１３９】
また、酸素吸蔵量算出条件が成立したとき、触媒下流空燃比センサ出力Voxsがリーンであることを示している場合、第１触媒上流空燃比を設定リーン空燃比とする第２モードから制御を開始してもよい。但し、最初の第２モードにおいて推定される最大酸素吸蔵量Ｃmax2は正確ではないので破棄する。そして、第３モード、次いで第２モードを実行し、これらの各モードで得られた最大酸素吸蔵量Ｃmax3と最大酸素吸蔵量Ｃmax2の平均値を最大酸素吸蔵量Ｃmaxとして採用してもよい。
【図面の簡単な説明】
【図１】  本発明の実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】  図１に示したエアフローメータの出力電圧と計測された吸入空気流量との関係を示したグラフ（マップ）である。
【図３】  図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフ（マップ）である。
【図４】  図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したマップである。
【図５】  図１に示した第１触媒の最大酸素吸蔵量を求める場合の目標空燃比、下流側空燃比センサの出力、及び第１触媒の酸素吸蔵量の変化を示したタイムチャートである。
【図６】  図１に示したＣＰＵが実行する燃料噴射量計算のためのルーチンを示したフローチャートである。
【図７】  図１に示したＣＰＵが実行する空燃比フィードバック補正量を計算するためのルーチンを示したフローチャートである。
【図８】  図１に示したＣＰＵが実行するサブフィードバック制御量を計算するためのルーチンを示したフローチャートである。
【図９】  図１に示したＣＰＵが実行する酸素吸蔵量算出開始の判定を行うルーチンを示したフローチャートである。
【図１０】  図１に示したＣＰＵが実行する目標空燃比を設定するためのルーチンを示したフローチャートである。
【図１１】  図１に示したＣＰＵが実行する第１モードのルーチンを示したフローチャートである。
【図１２】  図１に示したＣＰＵが実行する第２モードのルーチンを示したフローチャートである。
【図１３】  図１に示したＣＰＵが実行する第３モードのルーチンを示したフローチャートである。
【図１４】  図１に示したＣＰＵが実行する第１触媒の酸素吸蔵量を算出するためのルーチンを示したフローチャートである。
【図１５】  図１に示したＣＰＵが最大酸素吸蔵量を算出するために実行するルーチンを示したフローチャートである。
【図１６】  図１に示したＣＰＵが触媒が劣化したか否かを判定するために実行するルーチンを示したフローチャートである。
【図１７】  従来技術における空燃比の挙動を説明するタイムチャートである。
【符号の説明】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、５２…エキゾーストパイプ（排気管）、５３…三元触媒（第１触媒）、５４…三元触媒（第２触媒）、６６…上流側空燃比センサ、６７…下流側空燃比センサ、７０…電気制御装置、７１…ＣＰＵ。
【図１】
0003922091.tif 000002
【図２】
0003922091.tif 000003
【図３】
0003922091.tif 000004
【図４】
0003922091.tif 000005
【図５】
0003922091.tif 000006
【図６】
0003922091.tif 000007
【図７】
0003922091.tif 000008
【図８】
0003922091.tif 000009
【図９】
0003922091.tif 000010
【図１０】
0003922091.tif 000011
【図１１】
0003922091.tif 000012
【図１２】
0003922091.tif 000013
【図１３】
0003922091.tif 000014
【図１４】
0003922091.tif 000015
【図１５】
0003922091.tif 000016
【図１６】
0003922091.tif 000017
【図１７】
0003922091.tif 000018