(57)【要約】    【課題】  短時間で発生する酸素濃度センサの検出値のずれを精度良く補正し、排気浄化用触媒に流入する排気中の酸素濃度を適切に制御することにより、良好な排気特性を維持することができる空燃比制御装置を提供する。    【解決手段】  空燃比を理論空燃比よりリーン側のリーン空燃比及びリッチ側のリッチ空燃比に交互に制御する空燃比切換制御が行われる。ＬＡＦセンサ１７の出力がリッチ空燃比を示す値に変化した時点からＯ２センサ出力がリッチ空燃比を示す値に変化した時点までに触媒から流出した酸素量に相当するリッチ側流入酸素量と、ＬＡＦセンサ１７の出力がリーン空燃比を示す値に変化した時点からＯ２センサ出力がリーン空燃比を示す値に変化した時点までに触媒に流入した酸素量に相当するリーン側流入酸素量とに基づいて、酸素濃度の補正量が算出され、この補正量により補正された酸素濃度を用いて空燃比切換制御が行われる。【選択図】  図３
2007278075.tif 000002
【特許請求の範囲】
【請求項１】
排気系に排気浄化用の触媒を備える内燃機関に供給する混合気の空燃比を制御する、内燃機関の空燃比制御装置において、
前記機関の吸入空気流量を検出する吸入空気流量検出手段と、
前記触媒の上流側に設けられた第１酸素濃度センサと、
前記触媒の下流側に設けられた第２酸素濃度センサと、
前記第１酸素濃度センサにより検出される酸素濃度及び前記吸入空気流量検出手段により検出される吸入空気流量に応じて前記触媒に流入する流入酸素量を算出する流入酸素量算出手段と、
前記流入酸素量と前記流入酸素量の目標値との比較結果に応じて前記機関に供給する混合気の空燃比を、理論空燃比よりリーン側のリーン空燃比及びリッチ側のリッチ空燃比に交互に制御する空燃比切換制御手段と、
前記第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力が理論空燃比よりリッチ側の空燃比を示す値に変化した時点までの間に前記触媒に流入したリッチ運転酸素量を算出するリッチ運転酸素量算出手段と、
前記第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に前記触媒に流入したリーン運転酸素量を算出するリーン運転酸素量算出手段と、
前記リッチ運転酸素量、前記リーン運転酸素量、及び前記吸入空気流量検出手段により検出される吸入空気流量の積算値に基づいて、前記第１酸素濃度センサにより検出される酸素濃度を補正する補正量を算出する補正量算出手段とを備え、
前記流入酸素量算出手段、前記リッチ運転酸素量算出手段、及び前記リーン運転酸素量算出手段は、前記補正量により補正された酸素濃度を用いて前記流入酸素量、リッチ運転酸素量、及びリーン運転酸素量をそれぞれ算出することを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力が理論空燃比よりリッチ側の空燃比を示す値に変化した時点までの間に前記触媒に流入した酸素量のピーク値をピークリッチ運転酸素量として算出するピークリッチ運転酸素量算出手段と、
前記第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に前記触媒に流入した酸素量のピーク値をピークリーン運転酸素量として算出するピークリーン運転酸素量算出手段と、
前記リッチ運転酸素量及び前記ピークリッチ運転酸素量により、前記リーン運転酸素量を補正するリーン運転酸素量補正手段と、
前記リーン運転酸素量及び前記ピークリーン運転酸素量により、前記リッチ運転酸素量を補正するリッチ運転酸素量補正手段とをさらに備え、
前記補正量算出手段は、前記補正されたリッチ運転酸素量及びリーン運転酸素量を用いて前記補正量を算出することを特徴とする請求項１に記載の内燃機関の空燃比制御装置。
【請求項３】
空燃比切換制御手段の作動中に、前記第２酸素濃度センサの出力に基づいて、前記触媒の劣化度合を検出する劣化検出手段をさらに備えることを特徴とする請求項１または２に記載の内燃機関の空燃比制御装置。
【請求項４】
前記空燃比切換制御手段は、前記補正量に応じて前記空燃比切換制御の中心空燃比を変更することを特徴とする請求項１から３のいずれか１項に記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の空燃比制御装置に関し、特に排気系に排気浄化用の触媒を備える内燃機関に供給する混合気の空燃比を制御するものに関する。
【背景技術】
【０００２】
特許文献１には、排気系に触媒を備える内燃機関の空燃比制御装置が示されている。この装置によれば、触媒の酸素の実際充填度が目標充填度と比較され、実際充填度が目標充填度以上であるときは、空燃比が理論空燃比よりリッチ側に制御される一方、実際充填度が目標充填度より小さいときは、空燃比が理論空燃比よりリーン側に制御される。これにより、触媒における酸素充填度が常に適切に維持され、良好な排気特性が得られる。
【０００３】
【特許文献１】特開平５−１９５８４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記従来の装置において、触媒の酸素の実際充填度は、機関の吸入空気流量及び触媒の上流側に設けられる空燃比センサの出力に応じて算出される。したがって、この空燃比センサの検出特性のばらつきや経時変化により、酸素の実際充填度の算出値が影響を受ける。この影響を軽減するために特許文献１には、触媒の下流側に設けられる空燃比センサ出力の平均値及び上流側に設けらられる空燃比センサ出力の平均値を算出し、２つの平均値の比率に応じて上流側空燃比センサ出力を補正する手法が示されている。
【０００５】
しかしがながら、排気管の形状や上流側空燃比センサ及び下流側空燃比センサの取り付け位置によっては、機関運転状態の変化に起因して各空燃比センサの近傍の排気中の酸素濃度が異なるものとなり、２つの空燃比センサ出力の相対関係が短時間のうちに変動する場合がある。
【０００６】
例えば機関の高負荷運転時は排気流速が速まり、図１７に実線Ａ１で示す排気流の酸素濃度と、破線Ａ２で示す排気流の酸素濃度とが若干ずれる可能性がある。このとき、上流側空燃比センサ１０１は、実線Ａ１で示す排気流の酸素濃度を検出する。一方触媒下流側では、上流側で実線Ａ１及び破線Ａ２で示した排気流の混合が進んで、太い実線Ａ３で示すような排気流となり、下流側空燃比センサ１０２はこの排気流の酸素濃度を検出する。したがって、２つの空燃比センサ１０１及び１０２の検出特性が全く同一であったとしても、センサ出力に差が出ることになる。
【０００７】
上記特許文献１に示された手法では、このように機関運転状態の変化によって短時間に発生する２つのセンサ出力のずれに対応することができない。
【０００８】
本発明はこの点に着目してなされたものであり、酸素濃度（空燃比）センサの特性ばらつきや経時変化だけでなく、より短時間で発生する検出値のずれを精度良く補正し、排気浄化用触媒に流入する排気中の酸素濃度を適切に制御することにより、良好な排気特性を維持することができる空燃比制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため請求項１に記載の発明は、排気系（１３）に排気浄化用の触媒（１４ａ）を備える内燃機関（１）に供給する混合気の空燃比を制御する、内燃機関の空燃比制御装置において、前記機関の吸入空気流量（ＧＡＩＲ）を検出する吸入空気流量検出手段と、前記触媒の上流側に設けられた第１酸素濃度センサ（１７）と、前記触媒の下流側に設けられた第２酸素濃度センサ（１８）と、前記第１酸素濃度センサ（１７）により検出される酸素濃度（ＫＡＣＴ）及び前記吸入空気流量検出手段により検出される吸入空気流量（ＧＡＩＲ）に応じて前記触媒に流入する酸素量（ＯＳ）を算出する流入酸素量算出手段と、前記流入酸素量（ＯＳ）と前記流入酸素量の目標値（ＯＳＯＢＪＲ，ＯＳＯＢＪＬ）との比較結果に応じて前記機関に供給する混合気の空燃比を、理論空燃比よりリーン側のリーン空燃比（ＫＣＭＤＬ）及びリッチ側のリッチ空燃比（ＫＣＭＤＨ）に交互に制御する空燃比切換制御手段と、前記第１酸素濃度センサにより検出される酸素濃度（ＫＡＣＴ）が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力（ＳＶＯ２）が理論空燃比よりリッチ側の空燃比を示す値に変化した時点までの間に前記触媒から流出したリッチ運転酸素量（ＯＳＣＲ）を算出するリッチ運転酸素量算出手段と、前記第１酸素濃度センサにより検出される酸素濃度（ＫＡＣＴ）が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力（ＳＶＯ２）が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に前記触媒に流入したリーン運転酸素量（ＯＳＣＬ）を算出するリーン運転酸素量算出手段と、前記リッチ運転酸素量（ＯＳＣＲ）、前記リーン運転酸素量（ＯＳＣＬ）、及び前記吸入空気量検出手段により検出される吸入空気流量の積算値（ＧＡＩＲＳＵＭ）に基づいて、前記第１酸素濃度センサにより検出される酸素濃度を補正する補正量（ＰＯ２Ｃ）を算出する補正量算出手段とを備え、前記流入酸素量算出手段、前記リッチ運転酸素量算出手段、及び前記リーン運転酸素量算出手段は、前記補正量（ＰＯ２Ｃ）により補正された酸素濃度（ＫＡＣＴＭ）を用いて前記流入酸素量（ＯＳ）、リッチ運転酸素量（ＯＳＣＲ）、及びリーン運転酸素量（ＯＳＣＬ）をそれぞれ算出することを特徴とする。
【００１０】
請求項２に記載の発明は、請求項１に記載の内燃機関の空燃比制御装置において、前記第１酸素濃度センサ（１７）により検出される酸素濃度（ＫＡＣＴ）が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力（ＳＶＯ２）が理論空燃比よりリッチ側の空燃比を示す値に変化した時点までの間に前記触媒に流入した酸素量のピーク値をピークリッチ運転酸素量（ＯＳＣＳＶＯ２）として算出するピークリッチ運転酸素量算出手段と、前記第１酸素濃度センサ（１７）により検出される酸素濃度（ＫＡＣＴ）が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、前記第２酸素濃度センサの出力（ＳＶＯ２）が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に前記触媒に流入した酸素量のピーク値をピークリーン運転酸素量（ＯＳＣＳＶＯ２）として算出するピークリーン運転酸素量算出手段と、前記リッチ運転酸素量（ＯＳＣＲ）及び前記ピークリッチ運転酸素量（ＯＳＣＳＶＯ２）により、前記リーン運転酸素量（ＯＳＣＬ）を補正するリーン運転酸素量補正手段と、前記リーン運転酸素量（ＯＳＣＬ）及び前記ピークリーン運転酸素量（ＯＳＣＳＶＯ２）により、前記リッチ運転酸素量（ＯＳＣＲ）を補正するリッチ運転酸素量補正手段とをさらに備え、前記補正量算出手段は、前記補正されたリッチ運転酸素量及びリーン運転酸素量を用いて前記補正量（ＰＯ２Ｃ）を算出することを特徴とする。
【００１１】
請求項３に記載の発明は、請求項１または２に記載の内燃機関の空燃比制御装置において、空燃比切換制御手段の作動中に、前記第２酸素濃度センサの出力（ＳＶＯ２）に基づいて、前記触媒（１４ａ）の劣化度合（ＲＥＳＵＬＴ）を検出する劣化検出手段をさらに備えることを特徴とする。
【００１２】
請求項４に記載の発明は、請求項１から３のいずれか１項に記載の内燃機関の空燃比制御装置において、前記空燃比切換制御手段は、前記補正量（ＰＯ２Ｃ）に応じて前記空燃比切換制御の中心空燃比を変更することを特徴とする。
【００１３】
前記第２酸素濃度センサ出力の反転が少なくとも２回連続して発生するように前記流入酸素量の目標値を適時修正する目標値修正手段（図５，Ｓ１６，Ｓ１７）をさらに備えることが望ましい。ここで「第２酸素濃度センサ出力の反転」とは、前記第２酸素濃度センサ出力がリーン空燃比を示す値からリッチ空燃比を示す値へ変化すること、またはその逆に変化することを意味する。
【発明の効果】
【００１４】
請求項１に記載の発明によれば、第１酸素濃度センサにより検出される酸素濃度及び吸入空気流量検出手段により検出される吸入空気流量に応じて触媒に流入する酸素量が算出され、算出された酸素量とこの酸素量の目標値との比較結果に応じて空燃比が理論空燃比よりリーン側のリーン空燃比及びリッチ側のリッチ空燃比に交互に制御される。第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、第２酸素濃度センサの出力が理論空燃比おりリッチ側の空燃比を示す値に変化した時点までの間に触媒に流入したリッチ運転酸素量と、第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、第２酸素濃度センサの出力が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に触媒に流入したリーン運転酸素量とが算出され、リッチ運転酸素量、リーン運転酸素量、及び検出される吸入空気流量の積算値に基づいて、第１酸素濃度センサにより検出される酸素濃度を補正する補正量が算出される。そして、この補正量により補正された酸素濃度を用いて流入酸素量、リッチ運転酸素量、及びリーン運転酸素量がそれぞれ算出される。
【００１５】
したがって、第２酸素濃度センサ出力が２回反転した時点で補正量を算出し、直ちに第１酸素濃度センサにより検出される酸素濃度を補正することができる。よって、機関運転状態の変化による検出酸素濃度のずれを迅速に補正して、正確な空燃比切換制御を行うことができる。その結果、触媒に流入する排気中の酸素濃度が適切に制御され、良好な排気特性を維持することができる。
【００１６】
請求項２に記載の発明によれば、第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリッチ側の空燃比を示す値に変化した時点から、第２酸素濃度センサの出力が理論空燃比よりリッチ側の空燃比を示す値に変化した時点までの間に触媒に流入した酸素量のピーク値であるピークリッチ運転酸素量と、第１酸素濃度センサにより検出される酸素濃度が理論空燃比よりリーン側の空燃比を示す値に変化した時点から、第２酸素濃度センサの出力が理論空燃比よりリーン側の空燃比を示す値に変化した時点までの間に触媒に流入した酸素量のピーク値であるピークリーン運転酸素量とが算出される。そして、リッチ運転酸素量及びピークリッチ運転酸素量によりリーン運転酸素量が補正され、リーン運転酸素量及びピークリーン運転酸素量によりリッチ運転酸素量が補正される。
【００１７】
通常は、第２酸素濃度センサの出力がリッチ／リーン側に変化してから、第１酸素濃度センサにより検出される酸素濃度がリーン／リッチ側に変化するが、第２酸素濃度センサの応答特性が劣化してくると、第１酸素濃度センサにより検出される酸素濃度がリーン／リッチ側に変化した後で、第２酸素濃度センサの出力がリッチ／リーン側に変化する場合がある。そのような場合でも、リッチ運転酸素量及びピークリッチ運転酸素量によりリーン運転酸素量を補正し、リーン運転酸素量及びピークリーン運転酸素量によりリッチ運転酸素量を補正することにより、正確なリッチ運転酸素量及びリーン運転酸素量を得ることができ、第１酸素濃度センサにより検出される酸素濃度を正確に補正することができる。
【００１８】
請求項３に記載の発明によれば、空燃比切換制御手段の作動中に第２酸素濃度センサの出力に基づいて、触媒の劣化度合が検出される。すなわち、機関運転状態の影響を受けない、正確な空燃比切換制御を行っている状態における第２酸素濃度センサ出力に基づいて、触媒の劣化度合が検出されるので、触媒の劣化度合をより精度良く検出することができる。
【００１９】
請求項４に記載の発明によれば、空燃比切換制御の中心空燃比が前記補正量に応じて変更されるので、リッチ空燃比及びリーン空燃比が第１酸素濃度センサにより検出される酸素濃度に対応したものとなり、触媒の流入する酸素量及び流出する酸素量をほぼ同量に維持することができる。その結果、第２酸素濃度センサ出力の反転周期が長くなり、同センサの応答特性劣化の影響を受けにくくなる。
【発明を実施するための最良の形態】
【００２０】
以下本発明の実施の形態を図面を参照して説明する。
図１は、本発明の一実施形態にかかる内燃機関（以下「エンジン」という）及びその空燃比制御装置の全体構成図であり、例えば４気筒のエンジン１の吸気管２の途中にはスロットル弁３が配されている。スロットル弁３にはスロットル弁開度（ＴＨ）センサ４が連結されており、当該スロットル弁３の開度に応じた電気信号を出力して電子制御ユニット（以下「ＥＣＵ」という）５に供給する。
【００２１】
燃料噴射弁６はエンジン１とスロットル弁３との間かつ吸気管２の図示しない吸気弁の少し上流側に各気筒毎に設けられており、各噴射弁は図示しない燃料ポンプに接続されていると共にＥＣＵ５に電気的に接続されて当該ＥＣＵ５からの信号により燃料噴射弁６の開弁時間が制御される。
【００２２】
スロットル弁３の上流側には吸入空気流量ＧＡＩＲを検出する吸入空気流量センサ７が設けられている。またスロットル弁３の下流側には吸気圧ＰＢＡを検出する吸気圧センサ８、及び吸気温ＴＡを検出する吸気温センサ９が設けられている。これらのセンサの検出信号は、ＥＣＵ５に供給される。
エンジン１の本体に装着されたエンジン水温（ＴＷ）センサ１０はサーミスタ等から成り、エンジン水温（冷却水温）ＴＷを検出して対応する温度信号を出力してＥＣＵ５に供給する。
【００２３】
ＥＣＵ５には、エンジン１のクランク軸（図示せず）の回転角度を検出するクランク角度位置センサ１１が接続されており、クランク軸の回転角度に応じた信号がＥＣＵ５に供給される。クランク角度位置センサ１１は、エンジン１の特定の気筒の所定クランク角度位置でパルス（以下「ＣＹＬパルス」という）を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点（ＴＤＣ）に関し所定クランク角度前のクランク角度位置で（４気筒エンジンではクランク角１８０度毎に）ＴＤＣパルスを出力するＴＤＣセンサ及びＴＤＣパルスより短い一定クランク角周期（例えば３０度周期）で１パルス（以下「ＣＲＫパルス」という）を発生するＣＲＫセンサから成り、ＣＹＬパルス、ＴＤＣパルス及びＣＲＫパルスがＥＣＵ５に供給される。これらのパルスは、燃料噴射時期、点火時期等の各種タイミング制御、エンジン回転数（エンジン回転速度）ＮＥの検出に使用される。
【００２４】
排気管１３には三元触媒１４ａ及び１４ｂが１つの容器内に収容された触媒ユニット１５が設けられている。
三元触媒１４ａ及び１４ｂは、酸素蓄積能力を有し、エンジン１に供給される混合気の空燃比が理論空燃比よりリーン側に設定され、排気中の酸素濃度が比較的高い排気リーン状態では、排気中の酸素を蓄積し、逆にエンジン１に供給される混合気の空燃比が理論空燃比よりリッチ側に設定され、排気中の酸素濃度が低く、ＨＣ、ＣＯ成分が多い排気リッチ状態では、蓄積した酸素により排気中のＨＣ，ＣＯを酸化する機能を有する。
【００２５】
触媒ユニット１５の上流側には、比例型酸素濃度センサ１７（以下「ＬＡＦセンサ１７」という）が装着されており、このＬＡＦセンサ１７は排気中の酸素濃度（空燃比）にほぼ比例した電気信号を出力し、ＥＣＵ５に供給する。
三元触媒１４ａと１４ｂの間には、二値型酸素濃度センサ（以下「Ｏ２センサ」という）１８が装着されており、その検出信号はＥＣＵ５に供給される。このＯ２センサ１８は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。また三元触媒１４ａには、その温度（以下「触媒温度」という）ＴＣＡＴを検出する触媒温度センサ１９が設けられており、その検出信号はＥＣＵ５に供給される。
【００２６】
ＥＣＵ５は、各種センサからの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理ユニット（以下「ＣＰＵ」という）、該ＣＰＵで実行される各種演算プログラム及び演算結果等を記憶する記憶回路、前記燃料噴射弁６に駆動信号を供給する出力回路等から構成される。
【００２７】
ＥＣＵ５のＣＰＵは、上述の各種エンジンパラメータ信号に基づいて、種々のエンジン運転状態を判別するとともに、該判別されたエンジン運転状態に応じて、次式（１）を用いて、前記ＴＤＣ信号パルスに同期して開弁作動する燃料噴射弁６の燃料噴射時間ＴＯＵＴを演算する。
ＴＯＵＴ＝ＴＩＭ×ＫＣＭＤ×ＫＡＦ×Ｋ１＋Ｋ２  （１）
【００２８】
ここに、ＴＩＭは基本燃料量、具体的には燃料噴射弁６の基本燃料噴射時間であり、吸入空気流量ＧＡＩＲに応じて設定されたＴＩＭテーブルを検索して決定される。ＴＩＭテーブルは、エンジンに供給する混合気の空燃比がほぼ理論空燃比になるように設定されている。
【００２９】
ＫＣＭＤは目標空燃比係数であり、通常制御中は、Ｏ２センサ出力ＳＶＯ２に応じて設定される。目標空燃比係数ＫＣＭＤは、空燃比Ａ／Ｆの逆数、すなわち燃空比Ｆ／Ａに比例し、理論空燃比のとき値１．０をとるので、目標当量比ともいう。後述する触媒の劣化判定を行うときは、空燃比を理論空燃比よりリッチ側及びリーン側に交互に制御するように設定される。
【００３０】
ＫＡＦは、フィードバック制御の実行条件が成立するときは、ＬＡＦセンサ１７の検出値から算出される検出当量比ＫＡＣＴが目標当量比ＫＣＭＤに一致するようにＰＩＤ（比例積分微分）制御あるいは適応制御器（Self Tuning Regulator）を用いた適応制御により算出される空燃比補正係数である。ＬＡＦセンサ１７の検出値と、Ｏ２センサ１８の検出値とにずれが生じているときは、検出当量比ＫＡＣＴが、後述する補正量ＰＯ２Ｃにより補正され、補正当量比ＫＡＣＴＭが算出される。すなわち、空燃比補正係数ＫＡＦは、補正当量比ＫＡＣＴＭが、目標当量比ＫＣＭＤに一致するように算出される。
【００３１】
Ｋ１及びＫ２は夫々各種エンジンパラメータ信号に応じて演算される他の補正係数および補正変数であり、エンジン運転状態に応じた燃費特性、エンジン加速特性等の諸特性の最適化が図れるような所定値に決定される。
【００３２】
ＥＣＵ５のＣＰＵは上述のようにして求めた燃料噴射時間ＴＯＵＴに基づいて燃料噴射弁６を開弁させる駆動信号を出力回路を介して燃料噴射弁６に供給する。また、ＥＣＵ５のＣＰＵは、以下に説明するように三元触媒１４ａの劣化判定を行う。なお、三元触媒１４ａが劣化したと判定されたときは、三元触媒１４ｂもほぼ同様に劣化していると推定され、例えば警告灯の点灯が行われる。
【００３３】
三元触媒の劣化判定は、エンジン１に供給する混合気の空燃比を理論空燃比を中心として変動させたとき（リーン運転とリッチ運転を交互に行ったとき）のＯ２センサ出力ＳＶＯ２に基づいて行われる。このようにリーン運転とリッチ運転とを交互に実行する制御を、以下「パータベーション制御」という。具体的には、正常な三元触媒は蓄積可能であるが、劣化した三元触媒は蓄積できない程度の量の酸素を三元触媒に供給するようにリーン運転を実行し、その後リッチ運転に切り換えて蓄積した酸素をほぼすべて放出するようにリッチ運転を実行する。このようなパータベーション制御を実行したとき、三元触媒が劣化していなければ、図２（ａ）に示すように、Ｏ２センサ１８の出力ＳＶＯ２はほとんど変化しないが、三元触媒が劣化しているときは、同図（ｂ）に示すように大きく変化する。したがって、本実施形態では、この違いを検出することにより、三元触媒の劣化判定を行う。
【００３４】
図３は、空燃比制御及び三元触媒の劣化判定を行うモジュールの構成を示すブロック図である。このモジュールを構成する各ブロックの機能は、実際にはＥＣＵ５のＣＰＵによる演算処理により実現される。
【００３５】
図３に示すモジュールは、減算部３１と、目標当量比の基本値ＫＣＭＤＢを算出するＫＣＭＤＢ算出部３２と、検出当量比ＫＡＣＴを補正する補正量ＰＯ２Ｃを算出するＰＯ２Ｃ算出部３３と、加算部３４と、空燃比補正係数ＫＡＦを算出するＫＡＦ算出部３５と、三元触媒１４ａの劣化判定を行う劣化判定部３６とを備えている。
【００３６】
減算部３１は、検出当量比ＫＡＣＴから補正量ＰＯ２Ｃを減算することにより、補正当量比ＫＡＣＴＭを算出する。ＫＣＭＤＢ算出部３２は、吸入空気流量ＧＡＩＲ、補正当量比ＫＡＣＴＭ、及びＯ２センサ出力ＳＶＯ２に応じて、基本値ＫＣＭＤＢを算出する。より具体的には、ＫＣＭＤＢ算出部３２は、リッチ運転とリーン運転を交互に行うパータベーション制御を実行すべく、基本値ＫＣＭＤＢを設定する。
【００３７】
ＰＯ２Ｃ算出部３３は、吸入空気流量ＧＡＩＲ、補正当量比ＫＡＣＴＭ、及びＯ２センサ出力ＳＶＯ２に応じて、検出当量比ＫＡＣＴの補正量ＰＯ２Ｃを算出する。この補正量ＰＯ２Ｃは、ＬＡＦセンサ１７の検出特性の経時変化、あるいはエンジン１の運転状態の変化に起因して発生する検出当量比ＫＡＣＴのずれを補正するためのパラメータである。
【００３８】
加算部３４は、基本値ＫＣＭＤＢに補正量ＰＯ２Ｃを加算することにより、目標当量比ＫＣＭＤを算出する。ＫＡＦ算出部３５は、補正当量比ＫＡＣＴＭが目標当量比ＫＣＭＤに一致するように、空燃比補正係数ＫＡＦを算出する。
また劣化判定部３６は、パータベーション制御を実行しているときのＯ２センサ出力ＳＶＯ２に応じて、三元触媒１４ａの劣化判定を行う。
【００３９】
図４は、上述した減算部３１、ＫＣＭＤＢ算出部３２、ＰＯ２Ｃ算出部３３，加算部３４、及び劣化判定部３６の機能を実現する演算処理のメインルーチンのフローチャートである。この処理は、ＥＣＵ５のＣＰＵで所定時間（例えば１０ミリ秒）毎に実行される。
【００４０】
ステップＳ１では、図５及び図６に示す処理を実行し、空燃比を変化させるためのパータベーション信号を生成する。具体的には、パータベーション信号の生成は、空燃比切換パラメータＫＯＳＦＢを「１」または「−１」に設定することに相当する。ステップＳ２では、図８に示す処理を実行し、空燃比切換パラメータＫＯＳＦＢに応じて、目標空燃比係数ＫＣＭＤの設定を行う。目標空燃比係数ＫＣＭＤは、通常制御中は、Ｏ２センサ１８の出力ＳＶＯ２に応じて設定されるが、三元触媒の劣化判定を行うときは、ステップＳ１で設定される、空燃比切換パラメータＫＯＳＦＢに応じて設定される。これにより、空燃比のパータベーション制御が行われる。
【００４１】
ステップＳ３では、図１０及び図１１に示す処理を実行し、検出当量比ＫＡＣＴの補正量ＰＯ２Ｃを算出する。
ステップＳ４では、図１４及び図１５に示す処理を実行し、パータベーション制御中のＯ２センサ出力ＳＶＯ２に基づいて、三元触媒の劣化度合を示す判定パラメータＲＥＳＵＬＴを算出するとともに、判定パラメータＲＥＳＵＬＴが判定閾値ＲＳＴＴＨを超えると、三元触媒が異常と判定する。
【００４２】
図５及び図６は、図４のステップＳ１で実行されるパータベーション信号生成処理のフローチャートである。
ステップＳ１０では、検出当量比ＫＡＣＴから補正量ＰＯ２Ｃを減算することにより、補正当量比ＫＡＣＴＭを算出する。ステップＳ１１では、補正当量比ＫＡＣＴＭに応じて図７（ａ）に示すＯ２Ｎテーブルを検索し、排気中の酸素濃度に比例する酸素濃度パラメータＯ２Ｎを算出する。Ｏ２Ｎテーブルは、理論空燃比に相当する酸素濃度Ｏ２ＳＴ（ＫＡＣＴＭ＝１．０）で酸素濃度パラメータＯ２Ｎが「０」となり、ＬＡＦセンサ１７により検出される酸素濃度が、酸素濃度Ｏ２ＳＴより高いとき（空燃比が理論空燃比よりリーン側にあるとき）正の値をとり、酸素濃度Ｏ２ＳＴより低いとき（空燃比が理論空燃比よりリッチ側にあるとき）負の値をとるように設定されている。
【００４３】
ステップＳ１２では、吸入空気流量ＧＡＩＲに応じて図７（ｂ）に示すＯＳＣテーブルを検索し、劣化触媒の基準となる基準酸素量ＯＳＣ［ｇ］を算出する。ＯＳＣテーブルは、吸入空気流量ＧＡＩＲが増加するほど基準酸素量ＯＳＣが減少するように設定されている。吸入空気流量ＧＡＩＲが増加するほど、排気が三元触媒を通過する時間が短くなる一方、三元触媒における反応速度（酸素の蓄積速度）は、触媒温度、及び三元触媒に流入する排気中の酸素濃度（ａ）と三元触媒内の排気中の酸素濃度（ｂ）との差（ｂ−ａ）が一定であれば、ほぼ一定である。そのため、吸入空気流量ＧＡＩＲが増加するほど、三元触媒に蓄積可能な酸素量は減少する。したがって、ＯＳＣテーブルは、図７（ｂ）に示すように設定されている。
【００４４】
ステップＳ１３では、触媒温度ＴＣＡＴに応じて図７（ｃ）に示すＫＴＣＡＴＲテーブルを検索し、第１温度補正係数ＫＴＣＡＴＲを算出する。ＫＴＣＡＴＲテーブルは、第１温度補正係数ＫＴＣＡＴＲが負の値をとり、触媒温度ＴＣＡＴが上昇するほど第１温度補正係数ＫＴＣＡＴＲが減少する（絶対値が増加する）ように設定されている。
【００４５】
ステップＳ１４では、触媒温度ＴＣＡＴに応じて図７（ｄ）に示すＫＴＣＡＴＬテーブルを検索し、第２温度補正係数ＫＴＣＡＴＬを算出する。ＫＴＣＡＴＬテーブルは、第２温度補正係数ＫＴＣＡＴＬが正の値をとり、触媒温度ＴＣＡＴが上昇するほど第２側温度補正係数ＫＴＣＡＴＬが増加するように設定されている。
【００４６】
ステップＳ１５では、下記式（２）、（３）に基準酸素量ＯＳＣ、温度補正係数ＫＴＣＡＴＲ及びＫＴＣＡＴＬを適用し、リッチ側限界値ＯＳＯＢＪＲ及びリーン側限界値ＯＳＯＢＪＬを算出する。
ＯＳＯＢＪＲ＝ＯＳＣ×ＫＴＣＡＴＲ              （２）
ＯＳＯＢＪＬ＝ＯＳＣ×ＫＴＣＡＴＬ              （３）
【００４７】
このようにして算出されるリッチ側限界値ＯＳＯＢＪＲ及びリーン側限界値ＯＳＯＢＪＬは、ステップＳ１８で算出される第１流入酸素量ＯＳの目標値であり、空燃比を切り換える時点を決定するための閾値として、後述するステップＳ３１またはＳ３２で使用される。リーン側限界値ＯＳＯＢＪＬは、正常な三元触媒は蓄積可能であるが、劣化した三元触媒では蓄積できない程度の流入酸素量に相当し、リッチ側限界値ＯＳＯＢＪＲは、リーン側限界値ＯＳＯＢＪＬと絶対値がほぼ等しい負の値に設定される。換言すれば、リッチ側限界値ＯＳＯＢＪＲ及びリーン側限界値ＯＳＯＢＪＬは、三元触媒が正常なときはＯ２センサ出力ＳＶＯ２がほとんど変化せず、三元触媒が劣化するとＯ２センサ出力ＳＶＯ２が大きく変化するように設定される。
【００４８】
ステップＳ１６では、カウンタＣＤＯ２の値が所定値ＣＣＲ０（例えば２）より小さいか否かを判別する。カウンタＣＤＯ２は、後述する図１０のステップＳ１１２でインクリメントされるカウンタであり、補正量ＰＯ２Ｃを算出するために必要なパラメータの算出回数を計数する。パータベーション制御開始後、少なくとも２回、Ｏ２センサ出力ＳＶＯ２が反転（リーン空燃比を示す値からリッチ空燃比を示す値への変化、またはその逆の変化）した時点で、補正量ＰＯ２Ｃの算出が可能となる。したがって、ステップＳ１６でＣＤＯ２＜ＣＣＲ０であるときは、下記式（４）及び（５）により、リッチ側限界値ＯＳＯＢＪＲを減少させるとともに、リーン側限界値ＯＳＯＢＪＬを増加させる（ステップＳ１７）。
ＯＳＯＢＪＲ＝ＯＳＯＢＪＲ−ΔＯＳ                （４）
ＯＳＯＢＪＬ＝ＯＳＯＢＪＬ＋ΔＯＳ                （５）
ステップＳ１６及びＳ１７により、Ｏ２センサ出力ＳＶＯ２を確実にＣＣＲ０回反転させ、補正量ＰＯ２Ｃを算出することができる。
【００４９】
ステップＳ１８では、下記式（５）に酸素濃度パラメータＯ２Ｎを適用して流入酸素流量Ｏ２を算出し、下記式（６）に流入酸素流量Ｏ２を適用して第１流入酸素量ＯＳを算出するとともに、空燃比切換パラメータの前回値ＫＯＳＦＢＺを今回値ＫＯＳＦＢに設定する。
Ｏ２＝Ｏ２Ｎ×ＧＡＩＲＡＶＥ                      （５）
ＯＳ＝ＯＳ＋Ｏ２                                  （６）
【００５０】
ここで、ＧＡＩＲＡＶＥは、吸入空気流量ＧＡＩＲの例えば６個程度のデータの移動平均値であり、式（６）の右辺のＯＳは前回算出値である。平均化空気流量ＧＡＩＲＡＶＥの算出処理（図示せず）は、ＣＲＫパルスの発生に同期して実行される。
【００５１】
ステップＳ１９では、空燃比切換パラメータＫＯＳＦＢが「−１」であるか否かを判別し、その答が肯定（ＹＥＳ）であってリーン運転中であるときは、リセットフラグＦＲＥＳＥＴＯＳが「１」であるか否かを判別する（ステップＳ２５）。リセットフラグＦＲＥＳＥＴＯＳは、空燃比切換パラメータＫＯＳＦＢの値を変更したとき（ステップＳ３８，Ｓ４０参照）、「１」に設定される。空燃比切換パラメータＫＯＳＦＢが「−１」に変更された直後であるときは、ステップＳ２５の答は肯定（ＹＥＳ）となるので、ステップＳ２８に進み、流入酸素流量Ｏ２が正の値であるか否かを判別する。リーン運転の開始当初は、ステップＳ２８の答は否定（ＮＯ）となり、直ちにステップＳ３２（図６）に進む。リーン運転を行って排気中の酸素濃度が高くなってくると、ステップＳ２８の答が肯定（ＹＥＳ）となり、ステップＳ２９に進んで、第１流入酸素量ＯＳを「０」に設定するとともに、リセットフラグＦＲＥＳＥＴＯＳを「０」に戻す。その後ステップＳ３２に進む。
【００５２】
リセットフラグＦＲＥＳＥＴＯＳが「０」に戻されると、ステップＳ２５の答が否定（ＮＯ）となり、ステップＳ２６に進んで、第１流入酸素量ＯＳが負の値であるか否かを判別する。通常この答が否定（ＮＯ）となるので、直ちにステップＳ３２に進む。もし第１流入酸素量ＯＳが負の値となっているときは、「０」にリセットして（ステップＳ２７）、ステップＳ３２に進む。
【００５３】
ステップＳ３２では、第１流入酸素量ＯＳがリーン側限界値ＯＳＯＢＪＬより大きいか否かを判別する。リーン運転開始当初はこの答は否定（ＮＯ）となるので、ステップＳ３３に進み、Ｏ２センサ出力ＳＶＯ２が理論空燃比より若干リーン側の空燃比に相当する第１リーン側所定値ＳＶＯ２ＬＥＡＮより小さく、かつ下流側酸素濃度パラメータＫＯＳＬＥＡＮが「１」であるか否かを判別する（ステップＳ３３）。下流側酸素濃度パラメータＫＯＳＬＥＡＮは、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値であるとき「０」に設定されるパラメータである（ステップＳ３９参照）。通常はこの答が否定（ＮＯ）となるので、ステップＳ３５に進んで、Ｏ２センサ出力ＳＶＯ２が理論空燃比より若干リッチ側の空燃比に相当する第１リッチ側所定値ＳＶＯ２ＲＩＣＨ（＞ＳＶＯ２ＬＥＡＮ）より大きく、かつ下流側酸素濃度パラメータＫＯＳＬＥＡＮが「０」であるか否かを判別する。この答も通常は否定（ＮＯ）となるので、直ちにステップＳ４１に進む。
【００５４】
その後リーン運転を継続すると、第１流入酸素量ＯＳが徐々に増加していく。そして、ステップＳ３２で第１流入酸素量ＯＳがリーン側限界値ＯＳＯＢＪＬを超えると、ステップＳ４０に進んで、空燃比切換パラメータＫＯＳＦＢを「１」に設定するとともに、リセットフラグＦＲＥＳＥＴＯＳを「１」に設定する。これにより、リッチ運転が開始される。
【００５５】
空燃比切換パラメータＫＯＳＦＢが「−１」から「１」に変更されると、ステップＳ１９からステップＳ２０に進み、リセットフラグＦＲＥＳＥＴＯＳが「１」であるか否かを判別する。最初は、ステップＳ２０の答は肯定（ＹＥＳ）となるので、ステップＳ２３に進み、流入酸素流量Ｏ２が負の値であるか否かを判別する。リッチ運転の開始当初は、ステップＳ２３の答は否定（ＮＯ）となり、直ちにステップＳ３１（図６）に進む。リッチ運転を開始して排気中の酸素濃度が低下してくると、ステップＳ２３の答が肯定（ＹＥＳ）となり、ステップＳ２４に進んで、第１流入酸素量ＯＳを「０」に設定するとともに、リセットフラグＦＲＥＳＥＴＯＳを「０」に戻す。その後ステップＳ３１に進む。第１流入酸素量ＯＳは、以後リッチ運転中は負の値をとる。このことは、三元触媒１４ａに還元剤（ＨＣ，ＣＯ）が供給され、蓄積された酸素が還元剤の酸化に使われて減少（流出）することを意味する。
【００５６】
リセットフラグＦＲＥＳＥＴＯＳが「０」に戻されると、ステップＳ２０の答が否定（ＮＯ）となり、ステップＳ２１に進んで、第１流入酸素量ＯＳが正の値であるか否かを判別する。通常この答が否定（ＮＯ）となるので、直ちにステップＳ３１に進む。もし第１流入酸素量ＯＳが正の値となっているときは、「０」にリセットして（ステップＳ２２）、ステップＳ３１に進む。
【００５７】
ステップＳ３１では、第１流入酸素量ＯＳがリッチ側限界値ＯＳＯＢＪＲより小さいか否かを判別する。リッチ運転開始当初はこの答は否定（ＮＯ）となるので、前記ステップＳ３３に進む。通常はステップＳ３３及びＳ３５の答がともに否定（ＮＯ）となる。
【００５８】
その後リッチ運転を継続すると、第１流入酸素量ＯＳが徐々に減少していく（負の値の絶対値が増加していく）。そして、ステップＳ３１で第１流入酸素量ＯＳがリッチ側限界値ＯＳＯＢＪＲを下回ると、ステップＳ３８に進んで、空燃比切換パラメータＫＯＳＦＢを「−１」に設定するとともに、リセットフラグＦＲＥＳＥＴＯＳを「１」に設定する。これにより、リーン運転が開始される。
【００５９】
三元触媒１４ａの劣化が進むと、リーン運転中にステップＳ３３の答が肯定（ＹＥＳ）となることがある。そのときは、ステップＳ３３からステップＳ３９に進み、下流側酸素濃度パラメータＫＯＳＬＥＡＮを「０」に設定する。その後ステップＳ４０に進んでリッチ運転に移行する。すなわち、この場合には第１流入酸素量ＯＳがリーン側限界値ＯＳＯＢＪＬを超える前に、リッチ運転への切換が行われる。また、リッチ運転中にステップＳ３５の答が肯定（ＹＥＳ）となることもある。そのときは、ステップＳ３５からステップＳ３７に進み、下流側酸素濃度パラメータＫＯＳＬＥＡＮを「１」に設定する。その後ステップＳ３８に進んでリーン運転に移行する。すなわち、この場合には第１流入酸素量ＯＳがリッチ側限界値ＯＳＯＢＪＲを下回る前に、リーン運転への切換が行われる。
【００６０】
Ｏ２センサ出力ＳＶＯ２に加えて下流側酸素濃度パラメータＫＯＳＬＥＡＮを用いて判定を行うのは、ヒステリシスによって制御のハンチングを防止するためである。
【００６１】
上述したステップＳ１６，Ｓ１７並びにステップＳ３３，Ｓ３５，Ｓ３７，及びＳ３９により、Ｏ２センサ出力ＳＶＯ２を反転させて、補正量ＰＯ２Ｃを確実に算出することができる。また三元触媒１４ａが劣化し、第１流入酸素量ＯＳが限界値ＯＳＯＢＪＬまたはＯＳＯＢＪＲを超える前にＯ２センサ出力ＳＶＯ２が変化した場合でも、排気特性を悪化させることを防止できる。
【００６２】
ステップＳ４１では、触媒温度ＴＣＡＴに応じて図７（ｅ）に示すＫＴＣＡＴＤテーブルを検索し、第３温度補正係数ＫＴＣＡＴＤを算出する。ＫＴＣＡＴＤテーブルは、ＫＴＣＡＴＬテーブルと同様に、触媒温度ＴＣＡＴが上昇するほど、第３温度補正係数ＫＴＣＡＴＤが増加し、かつ同一の触媒温度ＴＣＡＴでは、第２温度補正係数ＫＴＣＡＴＬより大きな値となるように設定されている。
【００６３】
ステップＳ４２では、下記式（７）に第３温度補正係数及びステップＳ１２で算出される基準酸素量ＯＳＣを適用し、禁止判定閾値ＯＳＤＩＳＡＢＬＥを算出する。
ＯＳＤＩＳＡＢＬＥ＝ＯＳＣ×ＫＴＣＡＴＤ              （７）
【００６４】
ステップＳ４３では、第１流入酸素量ＯＳの絶対値が禁止判定閾値ＯＳＤＩＳＡＢＬＥより大きいか否かを判別し、その答が肯定（ＹＥＳ）であるときは、禁止フラグＦＤＩＳＡＢＬＥＯＳを「１」に設定する（ステップＳ４５）。｜ＯＳ｜≦ＯＳＤＩＳＡＢＬＥであるときは、禁止フラグＦＤＩＳＡＢＬＥＯＳを「０」に設定する（ステップＳ４４）。禁止フラグＦＤＩＳＡＢＬＥＯＳが「１」に設定されると、触媒の劣化判定が中止される（図１４，ステップＳ７１参照）。
【００６５】
例えば、スロットル弁開度が急激に変化したときに空燃比制御が吸入空気量の変化に迅速に追従できなったような場合に、第１流入酸素量ＯＳの絶対値が異常に大きくなる可能性がある。そのような場合には、正確な劣化判定を行うことができないため、劣化判定を禁止することにより、判定精度の低下を防止することができる。
【００６６】
図８は、図４のステップＳ２で実行されるＫＣＭＤ算出処理のフローチャートである。
ステップＳ５１では、空燃比のパータベーションを実行しているか否かを判別し、その答が肯定（ＹＥＳ）であるときは、図５及び図６の処理で設定される空燃比切換パラメータＫＯＳＦＢが、その前回値ＫＯＳＦＢＺと等しいか否かを判別する（ステップＳ５２）。
【００６７】
ステップＳ５１またはＳ５２の答が否定（ＮＯ）であって、パータベーションを実行していないとき、または空燃比切換パラメータＫＯＳＦＢの値が変化したときは、目標空燃比係数の基本値ＫＣＭＤＢを「１．０」に設定し（ステップＳ５３）、ステップＳ５４に進む。ＫＯＳＦＢ＝ＫＯＳＦＢＺであるときは、直ちにステップＳ５４に進む。
【００６８】
ステップＳ５４では、空燃比切換パラメータＫＯＳＦＢが「１」であるか否かを判別する。この答が肯定（ＹＥＳ）であるときは、下記式（８）により基本値ＫＣＭＤＢを更新する（ステップＳ５５）。
ＫＣＭＤＢ＝ＫＣＭＤＢ＋ΔＫＣＭＤ                    （８）
ここで、ΔＫＣＭＤは、所定更新値であり、例えば０．０００２に設定される。
【００６９】
空燃比切換パラメータＫＯＳＦＢが「１」であるときは、ステップＳ５５を繰り返し実行することにより、基本値ＫＣＭＤＢは「１．０」から徐々に増加していく。すなわち空燃比が徐々にリッチ方向に変化する。
ステップＳ５４でＫＯＳＦＢ＝−１であるときは、下記式（９）により基本値ＫＣＭＤＢを更新する（ステップＳ５６）。
ＫＣＭＤＢ＝ＫＣＭＤＢ−ΔＫＣＭＤ                    （９）
【００７０】
したがって、空燃比切換パラメータＫＯＳＦＢが「−１」であるときは、ステップＳ５６を繰り返し実行することにより、基本値ＫＣＭＤＢは「１．０」から徐々に減少していく。すなわち空燃比が徐々にリーン方向に変化する。
【００７１】
ステップＳ５７〜Ｓ６０では、算出された基本値ＫＣＭＤＢのリミット処理を行う。すなわち、基本値ＫＣＭＤＢが上限値ＫＣＭＤＨ（例えば１．０３）より大きいときは、基本値ＫＣＭＤＢを上限値ＫＣＭＤＨに設定し（ステップＳ５７，Ｓ５８）、基本値ＫＣＭＤＢが下限値ＫＣＭＤＬ（例えば０．９７）より小さいときは、基本値ＫＣＭＤＢを下限値ＫＣＭＤＬに設定する（ステップＳ５９，Ｓ６０）。
ステップＳ６１では、基本値ＫＣＭＤＢに補正量ＰＯ２Ｃを加算することにより、目標空燃比係数（目標当量比）ＫＣＭＤを算出する。
【００７２】
図８の処理により、基本値ＫＣＭＤＢは、図９に示すように、空燃比切換パラメータＫＯＳＦＢの値（同図（ａ））に応じて、同図（ｂ）に示すように変化する。
【００７３】
図１０及び図１１は、図４のステップＳ３で実行されるＰＯ２Ｃ算出処理のフローチャートである。
ステップＳ１０１では、空燃比のパータベーション実行中であるか否かを判別し、その答が否定（ＮＯ）であるときは、ステップＳ１０２に進んで、本処理で使用されるパラメータの初期化を行う。すなわち、吸入空気量ＧＡＩＲＳＵＭ、第２流入酸素量ＯＳＳＶＯ２、ピーク流入酸素量ＯＳＣＳＶＯ２、補正量ＰＯ２Ｃ、及びカウンタＣＤＯ２の値を、すべて「０」に設定する。吸入空気量ＧＡＩＲＳＵＭは、ステップＳ１１７で算出される吸入空気流量ＧＡＩＲの積算値であり、第２流入酸素量ＯＳＳＶＯ２は、ステップＳ１１７で算出される、三元触媒１４ａに流入する酸素量である。
【００７４】
ステップＳ１０３では、Ｏ２センサ出力ＳＶＯ２が理論空燃比より若干リッチ側の空燃比に相当する第２リッチ側所定値ＳＶＯ２ＯＢＪＨ（第１リッチ側所定値ＳＶＯ２ＲＩＣＨより僅かに小さい値に設定される）より大きいか否かを判別する。この答が肯定（ＹＥＳ）であるときは、下流側濃度フラグＦＳＶＯ２ＬＥＡＮを「１」に設定し（ステップＳ１０４）、ステップＳ１０５に進む。ステップＳ１０３でＳＶＯ２≦ＳＶＯ２ＯＢＪＨであるときは、直ちにステップＳ１０５に進む。
【００７５】
ステップＳ１０５では、Ｏ２センサ出力ＳＶＯ２が理論空燃比より若干リーン側の空燃比に相当する第２リーン側所定値ＳＶＯ２ＯＢＪＬ（第１リーン側所定値ＳＶＯ２ＬＥＡＮより僅かに大きい値に設定される）より小さいか否かを判別する。この答が肯定（ＹＥＳ）であるときは、下流側濃度フラグＦＳＶＯ２ＬＥＡＮを「０」に設定し（ステップＳ１０６）、その後本処理を終了する。ステップＳ１０５でＳＶＯ２≧ＳＶＯ２ＯＢＪＬであるときは、直ちに本処理を終了する。
【００７６】
ステップＳ１０１の答が肯定（ＹＥＳ）、すなわちパータベーションを実行しているときは、Ｏ２センサ出力ＳＶＯ２が第２リッチ側所定値ＳＶＯ２ＯＢＪＨより大きく、かつ流入酸素流量Ｏ２が正の値であり、かつ下流側濃度フラグＦＳＶＯ２ＬＥＡＮが「０」であるか否かを判別する（ステップＳ１０７）。すなわち、ステップＳ１０７では、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値からリッチ空燃比を示す値に変化し、かつ流入酸素流量Ｏ２が正の値に変化したか（補正当量比ＫＡＣＴＭが１．０を下回ったか）否かを判別する。パータベーション制御中は、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値からリッチ空燃比を示す値に変化してリーン運転が開始された後、流入酸素流量Ｏ２が正の値に変化する。
【００７７】
ステップＳ１０７の答が否定（ＮＯ）であるときは、Ｏ２センサ出力ＳＶＯ２が第２リーン側所定値ＳＶＯ２ＯＢＪＬより小さく、かつ流入酸素流量Ｏ２が負の値であり、かつ下流側濃度フラグＦＳＶＯ２ＬＥＡＮが「１」であるか否かを判別する（ステップＳ１０９）。すなわち、ステップＳ１０９では、Ｏ２センサ出力ＳＶＯ２がリッチ空燃比を示す値からリーン空燃比を示す値に変化し、かつ流入酸素流量Ｏ２が負の値に変化したか（補正当量比ＫＡＣＴＭが１．０を超えたか）否かを判別する。パータベーション制御中は、Ｏ２センサ出力ＳＶＯ２がリッチ空燃比を示す値からリーン空燃比を示す値に変化してリッチ運転が開始された後、流入酸素流量Ｏ２が負の値に変化する。
【００７８】
ステップＳ１０９の答が否定（ＮＯ）であるときは、ステップＳ１１７に進み、下記式（１０）及び（１１）により、第２流入酸素量ＯＳＳＶＯ２及び吸入空気量ＧＡＩＲＳＵＭを算出する。
ＯＳＳＶＯ２＝ＯＳＳＶＯ２＋Ｏ２                  （１０）
ＧＡＩＲＳＵＭ＝ＧＡＩＲＳＵＭ＋ＧＡＩＲ          （１１）
【００７９】
ステップＳ１１８では、下流側濃度フラグＦＳＶＯ２ＬＥＡＮが「１」であるか否かを判別する。この答が肯定（ＹＥＳ）、すなわちＯ２センサ出力ＳＶＯ２がリッチ空燃比を示し、かつ流入酸素流量Ｏ２が正の値であるときは、下記式（１２）及び（１３）により、第２流入酸素量ＯＳＳＶＯ２及びピーク流入酸素量ＯＳＣＳＶＯ２を算出する（ステップＳ１２０）。
ＯＳＳＶＯ２＝ｍａｘ（ＯＳＳＶＯ２，０）                    （１２）
ＯＳＣＳＶＯ２＝ｍａｘ（ＯＳＣＳＶＯ２，ＯＳＳＶＯ２）      （１３）
【００８０】
式（１２）により、第２流入酸素量ＯＳＳＶＯ２が負の値であるときは、「０」にリセットされる。また式（１３）により、第２流入酸素量ＯＳＳＶＯ２の最大値として、ピーク流入酸素量ＯＳＣＳＶＯ２が算出される。
【００８１】
ステップＳ１１８でＦＳＶＯ２ＬＥＡＮ＝０であるとき、すなわちＯ２センサ出力ＳＶＯ２がリーン空燃比を示し、かつ流入酸素流量Ｏ２が負の値であるときは、下記式（１４）及び（１５）により、第２流入酸素量ＯＳＳＶＯ２及びピーク流入酸素量ＯＳＣＳＶＯ２を算出する（ステップＳ１１９）。
ＯＳＳＶＯ２＝ｍｉｎ（ＯＳＳＶＯ２，０）                    （１４）
ＯＳＣＳＶＯ２＝ｍｉｎ（ＯＳＣＳＶＯ２，ＯＳＳＶＯ２）      （１５）
【００８２】
式（１４）により、第２流入酸素量ＯＳＳＶＯ２が正の値であるときは、「０」にリセットされる。また式（１５）により、第２流入酸素量ＯＳＳＶＯ２の最小値として、ピーク流入酸素量ＯＳＣＳＶＯ２が算出される。
【００８３】
ステップＳ１０７の答が肯定（ＹＥＳ）となったときは、ステップＳ１０８に進み、下流側濃度フラグＦＳＶＯ２ＬＥＡＮを「１」に設定し、リッチ側流入酸素量ＯＳＣＲを、その時点のピーク流入酸素量ＯＳＣＳＶＯ２に設定するとともに、リッチ側吸入空気量ＧＡＩＲＳＵＭＲを、その時点の吸入空気量ＧＡＩＲＳＵＭに設定する。
【００８４】
ステップＳ１１２では、下記式（１６）により第２流入酸素量ＯＳＳＶＯ２をリセットするとともに、ピーク流入酸素量ＯＳＣＳＶＯ２及び吸入空気量ＧＡＩＲＳＵＭをともに「０」にリセットし、カウンタＣＤＯ２を「１」だけインクリメントする。式（１６）により、第２流入酸素量ＯＳＳＶＯ２は通常は「０」にリセットされる。ただし、Ｏ２センサ１８の応答遅れが大きくなったときには、「０」とはならないことがある。この点については後述する。
ＯＳＳＶＯ２＝ＯＳＳＶＯ２−ＯＳＣＳＶＯ２                （１６）
ステップＳ１１３では、カウンタＣＤＯ２の値が「２」以上か否かを判別する。最初はこの答が否定（ＮＯ）となるので、直ちに前記ステップＳ１１７に進む。
【００８５】
その後リーン運転が行われて、ステップＳ１０９の答が肯定（ＹＥＳ）となると、ステップＳ１１１に進み、下流側濃度フラグＦＳＶＯ２ＬＥＡＮを「０」に設定し、リーン側流入酸素量ＯＳＣＬを、その時点のピーク流入酸素量ＯＳＣＳＶＯ２に設定するとともに、リーン側吸入空気量ＧＡＩＲＳＵＭＬを、その時点の吸入空気量ＧＡＩＲＳＵＭに設定する。その後ステップＳ１１２を経てステップＳ１１３に進む。このときステップＳ１１３の答は肯定（ＹＥＳ）となり、ステップＳ１１４に進んで、下記式（１７）にリッチ側流入酸素量ＯＳＣＲ、リーン側流入酸素量ＯＳＣＬ、リッチ側吸入空気量ＧＡＩＲＳＵＭＲ、及びリーン側吸入空気量ＧＡＩＲＳＵＭＬを適用し、酸素濃度ずれ量ＤＯ２を算出する。酸素濃度ずれ量ＤＯ２は、Ｏ２センサ出力ＳＶＯ２により検出される酸素濃度Ｏ２ＳＶＯ２と、ＬＡＦセンサ１７により検出される酸素濃度Ｏ２ＬＡＦとのずれ量を示す。
ＤＯ２＝（ＯＳＣＲ＋ＯＳＣＬ）／（ＧＡＩＲＳＵＭＲ＋ＧＡＩＲＳＵＭＬ）                                                              （１７）
【００８６】
酸素濃度Ｏ２ＬＡＦが酸素濃度Ｏ２ＳＶＯ２と一致しているときは、リッチ側流入酸素量ＯＳＣＲとリーン側流入酸素量ＯＳＣＬの和は「０」となるため、酸素濃度ずれ量ＤＯ２は「０」となる。また酸素濃度Ｏ２ＬＡＦが、酸素濃度Ｏ２ＳＶＯ２より低いときは、酸素濃度ずれ量ＤＯ２は負の値となり、逆に酸素濃度Ｏ２ＬＡＦが、酸素濃度Ｏ２ＳＶＯ２より高いときは、酸素濃度ずれ量ＤＯ２は正の値となる。
【００８７】
ステップＳ１１５では、酸素濃度ずれ量ＤＯ２に応じて図１２に示すＤＳＯ２テーブルを検索し、酸素濃度ずれ量ＤＯ２の当量比換算値ＤＳＯ２を算出する。ステップＳ１１６では、当量比換算値ＤＳＯ２を下記式（１８）により積算し、補正量ＰＯ２Ｃを算出する。その後前記ステップＳ１１７に進む。
ＰＯ２Ｃ＝ＰＯ２Ｃ＋ＤＳＯ２                      （１８）
【００８８】
ステップＳ１１５での換算により、当量比換算値ＤＳＯ２の正負は、酸素濃度ずれ量ＤＯ２の正負と逆になり、補正量ＰＯ２Ｃは、検出当量比ＫＡＣＴがリッチ方向にずれているときは正の値となり、検出当量比ＫＡＣＴがリーン方向にずれているときは負の値となる。
【００８９】
図１３は、図１０及び図１１の処理を説明するためのタイムチャートである。時刻ｔ４までは、図５のステップＳ１６及びＳ１７により、パータベーション制御の限界値ＯＳＯＢＪＬ及びＯＳＯＢＪＲの絶対値が大きくなるように変更され、リッチ運転及びリーン運転の継続時間が長くなるので、Ｏ２センサ出力ＳＶＯ２が反転する（図１３（ｄ），時刻ｔ１，ｔ３）。時刻ｔ４において、補正量ＰＯ２Ｃが最初に算出され、検出当量比ＫＡＣＴの中心値が補正量ＰＯ２Ｃだけ減少方向に補正される（同図（ｂ））。図１３（ｂ）では、検出当量比ＫＡＣＴの減少方向の補正は、等価的に当量比１．０のレベル（図中に破線で示す）を補正量ＰＯ２Ｃだけ増加させることで示されている。また時刻ｔ４において目標空燃比係数ＫＣＭＤが補正量ＰＯ２Ｃだけ増加する（同図（ａ））。その後時刻ｔ６，ｔ８，ｔ１０，ｔ１２，…において、酸素濃度ずれ量ＤＯ２が算出され、補正量ＰＯ２Ｃが更新される。
【００９０】
第２流入酸素量ＯＳＳＶＯ２は、同図（ｃ）に示すように、補正当量比ＫＡＣＴＭが１．０より大きな値をとるとき、徐々に減少し、Ｏ２センサ出力ＳＶＯ２がリッチ空燃比を示す値に変化してリーン運転が開始され（ｔ３，ｔ７，ｔ１１）、その後補正当量比ＫＡＣＴＭが１．０に達した時点（ｔ４，ｔ８，ｔ１２）で、リッチ側流入酸素量ＯＳＣＲとして検出される。また、第２流入酸素量ＯＳＳＶＯ２は、補正当量比ＫＡＣＴＭが１．０より小さな値をとるとき、徐々に増加し、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値に変化してリッチ運転が開始され（ｔ１，ｔ５，ｔ９）、その後補正当量比ＫＡＣＴＭが１．０に達した時点（ｔ２，ｔ６，ｔ１０）で、リーン側流入酸素量ＯＳＣＬとして検出される。
【００９１】
なお、図１３には三元触媒１４ａが劣化していて、時刻ｔ３以後も継続して、Ｏ２センサ出力ＳＶＯ２の反転が起きる例が示されている。
【００９２】
図１０及び図１１の処理によれば、検出当量比ＫＡＣＴ（または補正当量比ＫＡＣＴＭ）がリッチ空燃比を示す値に変化した時点（ｔ２，ｔ６，ｔ１０）から、Ｏ２センサ出力ＳＶＯ２がリッチ空燃比を示す値に変化した時点（ｔ３，ｔ７，ｔ１１）までの期間に、三元触媒１４ａから流出した酸素量を示すリッチ側流入酸素量ＯＳＣＲが算出されるとともに、検出当量比ＫＡＣＴ（または補正当量比ＫＡＣＴＭ）がリーン空燃比を示す値に変化した時点（ｔ４，ｔ８）から、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値に変化した時点（ｔ５，ｔ９）までの期間に、三元触媒１４ａに流入した酸素量を示すリーン側流入酸素量ＯＳＣＬが算出される。そして、リッチ側流入酸素量ＯＳＣＲ、リーン側流入酸素量ＯＳＣＬ、及び対応する吸入空気量ＧＡＩＲＳＵＭＲ及びＧＡＩＲＳＵＭＬを用いて、酸素濃度ずれ量ＤＯ２が算出され、酸素濃度ずれ量ＤＯ２から補正量ＰＯ２Ｃが算出される。補正量ＰＯ２Ｃは、Ｏ２センサ出力ＳＶＯ２が少なくとも２回反転すれば得られるので、エンジン運転状態の変化に起因するずれのように短時間で発生する検出値のずれを迅速に補正し、正確な補正当量比ＫＡＣＴＭを得ることができる。その結果、正確な空燃比切換制御を行って、三元触媒１４ａに流入する排気中の酸素濃度を適切に制御し、良好な排気特性を維持することができる。
【００９３】
図１４及び図１５は、図４のステップＳ４で実行される劣化判定処理のフローチャートである。
ステップＳ７１では、禁止フラグＦＤＩＳＡＢＬＥＯＳが「１」であるか否かを判別する。この答が否定（ＮＯ）であるときは、空燃比のパータベーション実行中であるか否かを判別する（ステップＳ７２）。ステップＳ７１の答が肯定（ＹＥＳ）またはステップＳ７２の答が否定（ＮＯ）であるときは、Ｏ２センサ出力ＳＶＯ２の最大値ＳＶＯ２ＭＡＸを「０」に設定するとともに、最小値ＳＶＯ２ＭＩＮを「１５００」に設定し（ステップＳ７３）、直ちに本処理を終了する。
【００９４】
ステップＳ７２の答が肯定（ＹＥＳ）、すなわち空燃比のパータベーションを実行しているときは、空燃比切換パラメータＫＯＳＦＢが前回値ＫＯＳＦＢＺと等しいか否かを判別する（ステップＳ７４）。ＫＯＳＦＢ＝ＫＯＳＦＢＺであるときは、下記式（１９）及び（２０）により、最大値ＳＶＯ２ＭＡＸ及び最小値ＳＶＯ２ＭＩＮを更新する。式（９）の右辺は、前回までに算出された最大値ＳＶＯ２ＭＡＸと、今回のＯ２センサ出力ＳＶＯ２のうち大きい方を選択する演算であり、式（２０）の右辺は、前回までに算出された最小値ＳＶＯ２ＭＩＮと、今回のＯ２センサ出力ＳＶＯ２のうち小さい方を選択する演算である。ステップＳ７５を実行した後は、ステップＳ８９に進む。
ＳＶＯ２ＭＡＸ＝ｍａｘ（ＳＶＯ２ＭＡＸ，ＳＶＯ２）          （１９）
ＳＶＯ２ＭＩＮ＝ｍｉｎ（ＳＶＯ２ＭＩＮ，ＳＶＯ２）          （２０）
【００９５】
ステップＳ７４の答が否定（ＮＯ）、すなわち空燃比切換パラメータＫＯＳＦＢが変更された直後であるときは、最大値ＳＶＯ２ＭＡＸまたは最小値ＳＶＯ２ＭＩＮの第２記憶値ＳＶＯ２ＬＰ２を、第１記憶値ＳＶＯ２ＬＰ１に設定する（ステップＳ７６）。第１記憶値ＳＶＯ２ＬＰ１は、前回の空燃比切換直後にステップＳ７８またはＳ８０で最大値ＳＶＯ２ＭＡＸまたは最小値ＳＶＯ２ＭＩＮに設定されている。
【００９６】
ステップＳ７７では、空燃比切換パラメータＫＯＳＦＢが「１」であるか否かを判別する。この答が肯定（ＹＥＳ）であるときは、第１記憶値ＳＶＯ２ＬＰ１をそのときの最大値ＳＶＯ２ＭＡＸに設定するとともに、最大値ＳＶＯ２ＭＡＸを「０」にリセットする（ステップＳ７８）。空燃比切換パラメータＫＯＳＦＢが「−１」であるときは、ステップＳ７７の答は否定（ＮＯ）となるので、直ちにステップＳ７９に進む。
【００９７】
ステップＳ７９では、空燃比切換パラメータＫＯＳＦＢが「−１」であるか否かを判別する。空燃比切換パラメータＫＯＳＦＢが「−１」であるときは、ステップＳ８０に進み、第１記憶値ＳＶＯ２ＬＰ１をそのときの最小値ＳＶＯ２ＭＩＮに設定するとともに、最小値ＳＶＯ２ＭＩＮを「１５００」にリセットする（ステップＳ７８）。空燃比切換パラメータＫＯＳＦＢが「１」であるときは、ステップＳ７９の答は否定（ＮＯ）となるので、直ちにステップＳ８１に進む。
【００９８】
ステップＳ８１では、最大値ＳＶＯ２ＭＡＸと最小値ＳＶＯ２ＭＩＮの差分を示す第３差分パラメータＳＶＯ２Ｄ３を第２差分パラメータＳＶＯ２Ｄ２に設定するとともに、第２差分パラメータＳＶＯ２Ｄ２を第１差分パラメータＳＶＯ２Ｄ１に設定する。そして、ステップＳ８２〜Ｓ８７により、第１差分パラメータＳＶＯ２Ｄ１の更新を行う。
【００９９】
ステップＳ８２では、第２記憶値ＳＶＯ２ＬＰ２が、理論空燃比に相当する所定値ＳＶＯ２ＯＢＪより大きく、かつ第１記憶値ＳＶＯ２ＬＰ１が所定値ＳＶＯ２ＯＢＪより小さいか否かを判別する。この答が否定（ＮＯ）であるときは、さらに第２記憶値ＳＶＯ２ＬＰ２が所定値ＳＶＯ２ＯＢＪより小さく、かつ第１記憶値ＳＶＯ２ＬＰ１が所定値ＳＶＯ２ＯＢＪより大きいか否かを判別する（ステップＳ８４）。ステップＳ８２及びＳ８４の答がともに否定（ＮＯ）であるとき、すなわち、第１及び第２記憶値ＳＶＯ２ＬＰ１，ＳＶＯ２ＬＰ２がともに所定値ＳＶＯ２ＯＢＪより小さいとき、または第１及び第２記憶値ＳＶＯ２ＬＰ１，ＳＶＯ２ＬＰ２がともに所定値ＳＶＯ２ＯＢＪより大きいときは、Ｏ２センサ出力ＳＶＯ２がほとんど変化していないことを示す。したがって、第１差分パラメータＳＶＯ２Ｄ１を「０」に設定し（ステップＳ８７）、ステップＳ８８に進む。
【０１００】
ステップＳ８２またはＳ８４の答が肯定（ＹＥＳ）であるとき、すなわち連続する空燃比切換時点における最大値ＳＶＯ２ＭＡＸが所定値ＳＶＯ２ＯＢＪより大きくかつ最小値ＳＶＯ２ＭＩＮが所定値ＳＶＯ２ＯＢＪより小さいときは、下記式（２１）に第１記憶値ＳＶＯ２ＬＰ１及び第２記憶値ＳＶＯ２ＬＰ２を適用し、第１差分パラメータＳＶＯ２Ｄ１を算出する（ステップＳ８６）。その後、ステップＳ８８に進む。
ＳＶＯ２Ｄ１＝｜ＳＶＯ２ＬＰ１−ＳＶＯ２ＬＰ２｜            （２１）
【０１０１】
ステップＳ８８では下記式（２２）により、第１〜第３差分パラメータＳＶＯ２Ｄ１，ＳＶＯ２Ｄ２，ＳＶＯ２Ｄ３の最小値として、最小差分値ＳＶＯ２Ｄを算出し、さらに下記式（２３）により、最小差分値ＳＶＯ２Ｄを積算して判定パラメータＲＥＳＵＬＴを算出するとともに、カウンタＣＲＥＳＵＬＴを「１」だけインクリメントする。判定パラメータＲＥＳＵＬＴが、三元触媒１４ａの劣化度合を示す。
ＳＶＯ２Ｄ＝ｍｉｎ（ＳＶＯ２Ｄ１，ＳＶＯ２Ｄ２，ＳＶＯ２Ｄ３）
（２２）
ＲＥＳＵＬＴ＝ＲＥＳＵＬＴ＋ＳＶＯ２Ｄ                      （２３）
【０１０２】
差分パラメータＳＶＯ２Ｄ１が３回以上連続して大きな値をとらない限り、最小差分値ＳＶＯ２Ｄは比較的小さな値となる。したがって連続する３つのサンプリング時点における差分パラメータＳＶＯ２Ｄ１，ＳＶＯ２Ｄ２，ＳＶＯ２Ｄ３の最小値である最小差分値ＳＶＯ２Ｄを用いることにより、Ｏ２センサ出力ＳＶＯ２の一時的な変動の影響を排除して、正確な判定パラメータＲＥＳＵＬＴを得ることができる。
【０１０３】
ステップＳ８９では、カウンタＣＲＥＳＵＬＴの値が所定回数ＣＲＳＴ０（例えば６）より大きいか否かを判別し、この答が否定（ＮＯ）であるときは直ちに本処理を終了する。ステップＳ８９でカウンタＣＲＥＳＵＬＴの値が所定回数ＣＲＳＴ０を超えると、ステップＳ９０に進み、判定パラメータＲＥＳＵＬＴが劣化判定閾値ＲＳＴＴＨより大きいか否かを判別する。この答が否定（ＮＯ）であるときは、三元触媒１４ａは正常と判定する（ステップＳ９２）。判定パラメータＲＥＳＵＬＴが劣化判定閾値ＲＳＴＴＨを超えているときは、三元触媒１４ａは異常と判定する（ステップＳ９１）。異常と判定したときは、例えば警告灯を点灯させる。
【０１０４】
判定パラメータＲＥＳＵＬＴは、Ｏ２センサ出力ＳＶＯ２が図２（ａ）に示すように推移するとき、すなわち三元触媒１４ａの正常時はほぼゼロとなる一方、Ｏ２センサ出力ＳＶＯ２が図２（ｂ）に示すように推移するとき、すなわち三元触媒１４ａの劣化時は大きな値となるので、判定パラメータＲＥＳＵＬＴにより、三元触媒１４ａの劣化度合を正確に検出することができる。
【０１０５】
以上詳述したように本実施形態では、ＬＡＦセンサ１７出力に応じて算出される酸素濃度パラメータＯ２Ｎ、及び吸入空気流量センサ７により検出される吸入空気流量ＧＡＩＲに応じて三元触媒１４ａに流入する酸素量ＯＳが算出され、該第１流入酸素量ＯＳと、リッチ側限界値ＯＳＯＢＪＲまたはリーン側限界値ＯＳＯＢＪＬとの比較結果に応じて、空燃比を理論空燃比よりリーン側及びリッチ側に交互に制御するパータベーション制御が実行される。そして、パータベーション制御実行中のＯ２センサ出力ＳＶＯ２に基づいて、三元触媒１４ａの劣化度合を示す判定パラメータＲＥＳＵＬＴが算出される。第１流入酸素量ＯＳの目標値であるリッチ側限界値ＯＳＯＢＪＲ及びリーン側限界値ＯＳＯＢＪＬは、三元触媒が正常であるときはＯ２センサ出力ＳＶＯ２がほとんど変化せず、三元触媒が劣化するとＯ２センサ出力ＳＶＯ２が大きく変化するように設定されるので、三元触媒が正常な状態では排気特性を全く悪化させることがなく、三元触媒が劣化し始めた時点で排気特性をほとんど悪化させることなく、迅速に劣化度合を検出することが可能となる。
【０１０６】
またＬＡＦセンサ１７により検出される酸素濃度と、Ｏ２センサ１８により検出される酸素濃度がずれていると、三元触媒１４ａが劣化していても、Ｏ２センサ出力ＳＶＯ２が図２（ｂ）に示すように変動せず、正常であると誤判定するおそれがある。本実施形態では、補正量ＰＯ２Ｃにより、酸素濃度ずれを補正するようにしたので、エンジン１の運転状態の変化に拘わらず、正確な判定を行うことができる。
【０１０７】
また目標空燃比係数の基本値ＫＣＭＤＢを補正量ＰＯ２Ｃで補正することにより、目標空燃比係数ＫＣＭＤを算出するようにしたので、リッチ運転時の空燃比及びリーン運転時の空燃比が、ＬＡＦセンサ１７により検出される酸素濃度に対応したものとなり、三元触媒１４ａに流入する酸素量及び流出する酸素量をほぼ同量に維持し、三元触媒１４ａの良好な酸素蓄積状態を維持することができる。
【０１０８】
次に図１０のステップＳ１１２において、下記式（１６）（再掲）により、第２流入酸素量ＯＳＳＶＯ２の初期化（リセット）を行う点について、図１６を参照して詳細に説明する。
ＯＳＳＶＯ２＝ＯＳＳＶＯ２−ＯＳＣＳＶＯ２                （１６）
【０１０９】
図１６に示す例では、Ｏ２センサ１８の応答特性が劣化しているため、Ｏ２センサ出力ＳＶＯ２がリーン空燃比を示す値に変化する時刻ｔ２１より前に、検出当量比ＫＡＣＴが１．０を超える期間があるため、時刻ｔ２１における第２流入酸素量ＯＳＳＶＯ２は、ピーク値Ｐ１より下がって最終値Ｘ１となっている。一方ピーク流入酸素量ＯＳＣＳＶＯ２はピーク値Ｐ１であるから、第２流入酸素量ＯＳＳＶＯ２の初期値Ａ１は、式（１６）により（Ｘ１−Ｐ１）として算出される。これは、リッチ側流入酸素量ＯＳＣＲの初期値を「０」でなくＡ１とすることにより、リッチ側流入酸素量ＯＳＣＲを補正していることに相当する。
【０１１０】
またＯ２センサ出力ＳＶＯ２がリッチ空燃比を示す値に変化する時刻ｔ２２より前に、検出当量比ＫＡＣＴが１．０を下回る期間があるため、時刻ｔ２２における第２流入酸素量ＯＳＳＶＯ２は、ピーク値Ｐ２より大きく（絶対値が小さく）なり、最終値Ｘ２となっている。第２流入酸素量ＯＳＳＶＯ２の初期値Ａ２は、式（１６）により（Ｘ２−Ｐ２）として算出される。これは、リーン側流入酸素量ＯＳＣＬの初期値を「０」でなくＡ２とすることにより、リーン側流入酸素量ＯＳＣＬを補正していることに相当する。
このように第２流入酸素量ＯＳＳＶＯ２の初期値を補正することにより、Ｏ２センサ１８の特性劣化時においても正確な流入酸素量を算出することができる。
【０１１１】
本実施形態では、吸入空気流量センサ７、ＬＡＦセンサ１７、及びＯ２センサ１８が、それぞれ吸入空気流量検出手段、第１酸素濃度センサ、及び第２酸素濃度センサに相当する。また、ＥＣＵ５が流入酸素量算出手段、空燃比切換制御手段、リッチ運転酸素量算出手段、リーン運転酸素量算出手段、補正量算出手段、ピークリッチ運転酸素量算出手段、ピークリーン運転酸素量算出手段、リッチ運転酸素量補正手段、リーン運転酸素量補正手段、及び劣化検出手段を構成する。具体的には、図５のステップＳ１１、及び図１１のステップＳ１１７が流入酸素量算出手段に相当し、図５のステップＳ１２〜Ｓ１７，Ｓ１９〜Ｓ２９，及び図６のステップＳ３１〜Ｓ４０、並びに図８の処理が空燃比切換制御手段に相当し、図１０のステップＳ１０７，Ｓ１０８，Ｓ１１２，Ｓ１１７がリッチ運転酸素量算出手段に相当し、図１０のステップＳ１０９，Ｓ１１１，Ｓ１１２，Ｓ１１７がリーン運転酸素量算出手段に相当し、図１０のステップＳ１１３〜Ｓ１１６が補正量算出手段に相当し、図１１のステップＳ１１９がピークリッチ運転酸素量算出手段に相当し、同図のステップＳ１２０がピークリーン運転酸素量算出手段に相当し、図１０ステップＳ１１２で、式（１６）により第２流入酸素量ＯＳＳＶＯ２をリセットする点が、リッチ運転酸素量補正手段及びリーン運転酸素量補正手段に相当し、図１４のステップＳ７２〜Ｓ８１、及び図１５のステップＳ８２〜Ｓ９２が劣化検出手段に相当する。
【０１１２】
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した実施形態では、三元触媒１４ａ及び１４ｂが１つの容器に格納されているが、別体に構成されていてもよい。また、Ｏ２センサ１８の下流側に三元触媒が設けられていない場合であっても、本発明の適用は可能であり、従来技術と比較して、劣化判定実行時の排気特性の悪化をより軽減することができる。
【０１１３】
また上述した実施形態では、三元触媒１４ａの劣化判定を行うときに空燃比のパータベーション制御を行うようにしたが、特許文献１に示されるように、常に三元触媒１４ａの流入酸素量が適量となるようにパータベーション制御を実行するようにしてもよい。その場合には、適当な時間間隔ＴＣＲでＯ２センサ出力ＳＶＯ２を少なくとも２回反転させて補正量ＰＯ２Ｃを算出し、検出当量比ＫＡＣＴの補正を行うことが望ましい。時間間隔ＴＣＲは、例えば吸入空気量ＧＡＩＲが増加するほど、短くすることが望ましい。
【０１１４】
また本発明は、クランク軸を鉛直方向とした船外機などのような船舶推進機用エンジンなどの空燃比制御及び排気系に装着される排気浄化用触媒の劣化判定にも適用が可能である。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施形態にかかる内燃機関及びその空燃比制御装置の構成を示す図である。
【図２】触媒の劣化検出手法を説明するための図である。
【図３】空燃比制御及び触媒の劣化検出を行うモジュールの構成を示すブロック図である。
【図４】図３に示すモジュールを構成するブロックの機能を実現する処理のフローチャートである。
【図５】図４の処理で実行されるパータベーション信号生成処理のフローチャートである。
【図６】図４の処理で実行されるパータベーション信号生成処理のフローチャートである。
【図７】図５または図６の処理で参照されるテーブルを示す図である。
【図８】図４の処理で実行されるＫＣＭＤ算出処理のフローチャートである。
【図９】図８の処理を説明するためのタイムチャートである。
【図１０】図４の処理で実行される補正量（ＰＯ２Ｃ）算出処理のフローチャートである。
【図１１】図４の処理で実行される補正量（ＰＯ２Ｃ）算出処理のフローチャートである。
【図１２】図１０の処理で参照されるテーブルを示す図である。
【図１３】図１０及び図１１の処理を説明するためのタイムチャートである。
【図１４】図４の処理で実行される劣化判定処理のフローチャートである。
【図１５】図４の処理で実行される劣化判定処理のフローチャートである。
【図１６】三元触媒に流入する酸素量の補正手法を説明するためのタイムチャートである。
【図１７】従来技術の課題を説明するための図である。
【符号の説明】
【０１１６】
１  内燃機関
５  電子制御ユニット（流入酸素量算出手段、空燃比切換制御手段、リッチ運転酸素量算出手段、リーン運転酸素量算出手段、補正量算出手段、ピークリッチ運転酸素量補正手段、ピークリーン運転酸素量補正手段、リーン運転酸素量補正手段、リッチ運転酸素量補正手段、劣化検出手段）
６  燃料噴射弁
７  吸入空気流量センサ（吸入空気流量検出手段）
１７  比例型酸素濃度センサ（第１酸素濃度センサ）
１８  二値型酸素濃度センサ（第２酸素濃度センサ）
【図１】
2007278075.tif 000003
【図２】
2007278075.tif 000004
【図３】
2007278075.tif 000005
【図４】
2007278075.tif 000006
【図５】
2007278075.tif 000007
【図６】
2007278075.tif 000008
【図７】
2007278075.tif 000009
【図８】
2007278075.tif 000010
【図９】
2007278075.tif 000011
【図１０】
2007278075.tif 000012
【図１１】
2007278075.tif 000013
【図１２】
2007278075.tif 000014
【図１３】
2007278075.tif 000015
【図１４】
2007278075.tif 000016
【図１５】
2007278075.tif 000017
【図１６】
2007278075.tif 000018
【図１７】
2007278075.tif 000019