(57)【特許請求の範囲】
【請求項１】
エンジンの排気系に配設され、排ガスを浄化するための触媒と、
この触媒の上・下流にそれぞれ配設され、空燃比が理論空燃比に対してリッチかリーンかを検出する上流，下流酸素センサと、
この上流酸素センサの出力信号に応じて、前記エンジンに供給される混合気の空燃比を理論空燃比近傍になるように補正するための主空燃比補正係数を算出する空燃比補正係数算出手段と、
前記主空燃比補正係数を用いて前記混合気の空燃比が理論空燃比になるように制御するエンジン制御手段と、
前記下流酸素センサの出力信号の低周波成分を検出する低周波成分検出手段と、
この低周波成分検出手段により検出された低周波成分のうち、低周波成分の振幅に基づいて前記触媒の劣化を検出する触媒劣化検出手段とを備えるエンジン用触媒劣化検出装置。
【請求項２】
エンジンの排気系に配設され、排ガスを浄化するための触媒と、
この触媒の上・下流にそれぞれ配設され、空燃比が理論空燃比に対してリッチかリーンかを検出する上流，下流酸素センサと、
この上流酸素センサの出力信号に応じて、前記エンジンに供給される混合気の空燃比が理論空燃比近傍になるように補正するための主空燃比補正係数を算出する空燃比補正係数算出手段と、
前記主空燃比補正係数を用いて前記混合気の空燃比を理論空燃比になるように制御するエンジン制御手段と、
前記下流酸素センサの出力信号の高周波振幅を検出する高周波振幅検出手段と、
前記下流酸素センサの出力信号の低周波振幅を検出する低周波振幅検出手段と、
前記高周波振幅検出手段と前記低周波振幅検出手段との双方の検出結果に応じて前記触媒の劣化を検出する触媒劣化検出手段とを備えることを特徴とするエンジン用触媒劣化検出装置。
【請求項３】
前記触媒劣化検出手段は、前記高周波振幅検出手段の検出結果が所定値より大きく、かつ前記低周波振幅検出手段の検出結果が所定値より小さい時、前記触媒が劣化したと判断する手段を含むことを特徴とする請求項２記載のエンジン用触媒劣化検出装置。
【請求項４】
前記空燃比補正係数の所定変化後、この所定変化に対応した前記下流酸素センサ出力信号変化が生じるまでの遅延時間を検出する遅延時間検出手段と、
前記遅延時間が所定時間未満の場合、前記振幅による触媒劣化検出手段の結果にかかわらず、前記触媒が劣化したと判断する第２の触媒劣化検出手段とをさらに備える請求項２または３記載のエンジン用触媒劣化検出装置。
【請求項５】
前記高周波振幅検出手段は、前記主空燃比補正係数の一周期間毎の前記下流酸素センサの出力信号の最大値と最小値との差により前記高周波振幅を算出する手段を含む請求項２〜４のうちいずれかに記載のエンジン用触媒劣化検出装置。
【請求項６】
前記低周波振幅検出手段は、前記主空燃比補正係数の一周期毎に前記下流酸素センサの出力信号の最大値と最小値との平均値を演算する平均手段と、この平均値の所定期間における複数個の値のうち最大値と最小値との差を演算して前記低周波振幅を算出する手段を含む請求項２〜５のうちいずれかに記載のエンジン用触媒劣化検出装置。
【請求項７】
前記下流酸素センサの出力信号に応じて前記副空燃比補正係数が算出されて前記主空燃比補正係数を微調整する副空燃比補正係数算出手段と、
前記触媒劣化検出手段による触媒劣化検出条件を満足するか否かを判別し、この触媒劣化検出条件が満足された時に前記触媒劣化検出手段の触媒劣化検出処理の実行を許可する条件判別手段と、
前記条件判別手段により触媒劣化検出条件が満足された時に前記副空燃比補正係数を所定の値に変更する変更手段とをさらに備える請求項２〜６のうちいずれかに記載のエンジン用触媒劣化検出装置。
【請求項８】
前記高周波振幅検出手段は、前記変更手段により前記副空燃比補正係数が変更される前と後との双方において前記高周波振幅を検出するものであり、
前記変更手段により前記副空燃比補正係数が変更される前に、前記高周波振幅検出手段により検出された高周波振幅が所定値より大きいと判断され、かつ前記条件判別手段により触媒劣化検出条件が満足されると前記変更手段による前記副空燃比補正係数の変更を許可する許可手段とをさらに備える請求項７記載のエンジン用触媒劣化検出装置。
【請求項９】
前記触媒劣化検出手段は、前記高周波検出手段及び低周波検出手段の検出結果と比較される前記各所定値を、前記空燃比補正係数の周期に応じて設定する設定手段を含む請求項３記載のエンジン用触媒劣化検出装置。
【請求項１０】
前記低周波振幅検出手段は、前記主空燃比補正係数の一周期毎に前記下流酸素センサの出力信号の最大値と最小値との平均値を演算して前記低周波成分を検出する平均手段を含む請求項１〜４、７〜９のうちいずれかに記載のエンジン用触媒劣化検出装置。
【請求項１１】
前記低周波振幅検出手段は、前記下流酸素センサの出力信号を所定のなまし率でなまして前記前記低周波成分を検出するなまし手段を含む請求項１〜４、７〜９のうちいずれかに記載のエンジン用触媒劣化検出装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はエンジンの排気系に配置され、排ガスを浄化するための触媒の劣化を検出する触媒劣化検出装置に関するものである。
【０００２】
【従来の技術】
従来より、触媒の上下流に酸素センサを設けたシステムにおいて、触媒正常時は触媒のストレージ効果によって下流酸素センサの出力信号の周期は上流酸素センサのそれより長くなり、触媒劣化時はストレージ効果の低下によって下流酸素センサの出力信号の周期が短くなり、ほぼ上流酸素センサの出力信号周期と同じになるとともに、下流酸素センサの出力信号の振幅が触媒正常時に比べて大きくなることが知られている。
【０００３】
そのため、触媒の劣化検出装置としては上下流酸素センサの出力信号の周期比（上流酸素センサ周期／下流酸素センサ周期）を求め、この周期比が所定値以下になった時あるいは下流酸素センサの出力信号振幅が判定値を越えた時、触媒劣化と判別するものが特開昭６１−２８６５５０号公報に開示されている。
【０００４】
【発明が解決しようとする課題】
しかし、前述のような装置においては、上流酸素センサの出力特性が劣化し応答性が遅くなるとその出力信号の周期は長くなるため下流酸素センサも同じ周期でリッチ／リーンに振れてしまうので前後酸素センサの周期比は小さくなり、触媒が良くても劣化であると誤検出してしまうという問題がある。
【０００５】
また、図７に示すように上流酸素センサ劣化時には上流酸素センサ出力Ｖ１に基づいて定められる空燃比補正係数ＦＡＦの振幅Ｗ２が、図６に示す上流酸素センサ正常時（周期が短い時）の振幅Ｗ１より大きくなるため、空燃比は大きく振られ、その結果、その空燃比の変動幅の増大に応じて下流酸素センサの出力信号の振幅も大きくなる。即ち、下流酸素センサの振幅は上流酸素センサの周期が長くなるに従って大きくなる。そのため、下流酸素センサの振幅が大きくなった時、触媒劣化と判別する前述の装置だと上流酸素センサ劣化による下流酸素センサの振幅増大を触媒劣化と誤判定してしまうという問題もある。
【０００６】
また、上下流酸素センサの出力信号から触媒劣化を判断する以上、下流酸素センサの出力応答バラツキの影響は避けられないという問題がある。
そこで、これらの問題を解決するため、下流酸素センサの出力に応じて演算される副空燃比補正係数の所定時間内の変化量を演算し、この変化量が所定値以下であるときに触媒が劣化したと判断するものも考えられている（例えば、特開平３−１３４２４１号公報）。
【０００７】
ところが、このように副空燃比補正係数の所定時間内の変化量により触媒の劣化を検出するものでは、下流酸素センサの出力に応じて演算される副空燃比補正係数の１回当たりの更新量によって、副空燃比補正係数の所定時間内の変化量も大きく変化するので、副空燃比補正係数の更新量や、副空燃比補正係数の種類、すなわち、スキップ量、積分定数、遅延時間のうちいずれの空燃比フィードバック制御定数を副空燃比補正係数として用いているかにより、副空燃比補正係数の所定時間内の変化量が大きく相違し、しかも、これらの副空燃比補正係数は各種の内燃機関に適合させて各種の値に設定されるため、各種の副空燃比補正係数に合わせて、触媒劣化の判定をきめ細かく適合させる必要があるのみならず、触媒の劣化検出に合わせて副空燃比補正係数の更新量が決められていないので、触媒の劣化検出精度も劣るという問題がある。
【０００８】
本発明は、前述のような問題点に鑑みてなされたものであり、その目的とするところは、上流及び下流酸素センサの劣化の有無や出力応答のバラツキによる影響が少なく、しかも、各種の内燃機関に対して比較的適合が容易で、かつ触媒の劣化を精度よく検出できる装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明は図１に示すように、エンジンの排気系に配設され、排ガスを浄化するための触媒と、この触媒の上・下流にそれぞれ配設され、空燃比が理論空燃比に対してリッチかリーンかを検出する上流，下流酸素センサと、この上流酸素センサの出力信号に応じて前記エンジンに供給される混合気の空燃比を理論空燃比近傍になるように補正するための主空燃比補正係数を算出する空燃比補正係数算出手段と、前記主空燃比補正係数を用いて前記混合気の空燃比を理論空燃比になるように制御するエンジン制御手段と、前記下流酸素センサの出力信号の低周波成分を検出する低周波成分検出手段と、前記低周波成分検出手段により検出された前記下流酸素センサ信号の低周波成分のうち、低周波成分の振幅に基づいて前記触媒の劣化を検出する触媒劣化検出手段とを備えることを特徴とするエンジン用触媒劣化検出装置を要旨としている。
【００１０】
また、エンジンの排気系に配設され、排ガスを浄化するための触媒と、
この触媒の上・下流にそれぞれ配設され、空燃比が理論空燃比に対してリッチかリーンかを検出する上流，下流酸素センサと、
この上流酸素センサの出力信号に応じて前記エンジンに供給される混合気の空燃比を理論空燃比近傍になるように補正するための主空燃比補正係数を算出する空燃比補正係数算出手段と、
前記主空燃比補正係数を用いて前記混合気の空燃比を理論空燃比になるように制御するエンジン制御手段と、
前記下流酸素センサの出力信号の高周波振幅を検出する高周波振幅検出手段と、
前記下流酸素センサの出力信号の低周波振幅を検出する低周波振幅検出手段と、
前記高周波振幅検出手段と低周波振幅検出手段との双方の検出結果に応じて前記触媒の劣化を検出する触媒劣化検出手段を備えることを特徴とするエンジン用触媒劣化検出装置を要旨とすることもできる。
【００１１】
【作用】
以上の構成により、空燃比補正係数算出手段でエンジンの排気系に配設される排ガスを浄化するための触媒の上流に配設された上流酸素センサの出力信号に応じてエンジンに供給される混合気の空燃比を理論空燃比近傍になるように補正するための主空燃比補正係数が算出される。
【００１２】
更に下流酸素センサの出力に応じて、副空燃比補正係数が算出されて、主空燃比補正係数を微調整する。そして、エンジ制御手段でこの主空燃比補正係数を用いてエンジンに供給される混合気の空燃比が理論空燃比近傍に制御される。
【００１４】
さらに、高周波振幅検出手段で下流酸素センサ出力の高周波の振幅が検出され、低周波振幅検出手段で下流酸素センサ出力の低周波の振幅が検出され、触媒劣化検出手段で高周波振幅が所定値より大きく、かつ低周波振幅が所定値より小さい時、触媒劣化と判断するようにすることもできる。
【００１５】
【実施例】
以下、本発明を車両用エンジンに適応した実施例について図面に基づいて説明する。
【００１６】
〔第１実施例〕
図２は本発明実施例の概略構成図である。エンジン１の吸気通路２にはエアフロメータ３が設けられている。エアフロメータ３はエアクリーナ４を通って導かれる吸気量Ｑを直接計測するものである。さらに吸気通路２には、運転者のアクセル５の操作量に応じて開閉し、エンジン１へ供給する吸気量Ｑを調節するスロットル弁６が設けられている。また、エンジン１の各気筒には各気筒毎に燃料供給系７から加圧燃料を吸気ポートへ供給するための燃料噴射弁８が設けられている。
【００１７】
また、ディストリビュータ９には、７２０クランク角度（℃Ａ）毎に基準位置検出用信号を発生する基準位置センサ１０および３０℃Ａ毎にクランク角検出用信号を発生するクランク角センサ１１が設けられている。
【００１８】
さらに、エンジン１のシリンダブロックのウォータジャケット１２には、冷却水温Ｔｈｗを検出するための水温センサ１３が設けられている。
一方、排気系には排気マニホールド１４の下流に排ガス中の有害成分（ＨＣ，ＣＯ，ＮＯｘ）を同時に浄化する三元触媒１５が設けられている。そして、三元触媒１５の上流側、即ち排気マニホールド１４には、上流酸素センサ（Ｏ２  センサ）１６が設けられ、また三元触媒１５の下流側の排気管１７には下流Ｏ２  センサ１８が設けられている。周知の通り、これら上・下流Ｏ２  センサ１６，１８は空燃比が理論空燃比に比してリーンであるかリッチであるかに応じて異なる出力電圧を発生するものである。
【００１９】
また、１９は後述する電子制御装置（ＥＣＵ）２０で三元触媒１５が劣化したと判断された時、運転者へ警告を発するためのアラームである。
ＥＣＵ２０は、例えばマイクロコンピュータとして構成され、周知の通りＡ／Ｄ変換器１０１，Ｉ／Ｏポート１０２，ＣＰＵ１０３，ＲＯＭ１０４，ＲＡＭ１０５，バックアップＲＡＭ１０６，クロック発生回路１０７等が設けられている。
【００２０】
ＥＣＵ２０は、エアフロメータ３で検出される吸気量Ｑ，水温センサ１３で検出される冷却水温ＴＨＷ，クランク角センサ１１から出力されるクランク角検出用信号に基づいて算出される回転数ＮＥ等に応じて基本燃料噴射量を設定する。そして、上，下流のＯ２  センサ１６，１８の信号に応じて三元触媒１５の浄化率αが最大となるように基本燃料噴射量が補正されて燃料噴射量ＴＡＵが設定される。そして、Ｉ／Ｏポート１０２より燃料噴射量ＴＡＵに応じた制御信号が燃料噴射弁８へ出力される。
【００２１】
また、ＥＣＵ２０において、ダウンカウンタ１０８，フリップフロップ１０９、および駆動回路１１０は燃料噴射弁８を制御するためのものである。すなわち、後述のルーチンにおいて、燃料噴射量ＴＡＵが演算されると、燃料噴射量ＴＡＵがダウンカウンタ１０８にプリセットされると共にフリップフロップ１０９もセットされる。この結果、駆動回路１１０が燃料噴射弁８の付勢を開始する。他方、ダウンカウンタ１０８がクロック信号（図示せず）を計数して最後にそのキャリアウト端子が“１”レベルとなったときに、フリップフロップ１０９がリセットされて駆動回路１１０は燃料噴射弁８の付勢を停止する。つまり、上述の燃料噴射量ＴＡＵだけ燃料噴射弁８は付勢され、従って、燃料噴射量ＴＡＵに応じた量の燃料がエンジン１の燃焼室に送り込まれる。
【００２２】
次に、三元触媒１５の劣化検出について説明する。図３に触媒浄化率と下流酸素センサ波形の関係を示す。なお、図中下流酸素センサ出力信号（下流Ｏ２  ）に示された破線は副空燃比フィードバック（Ｆ／Ｂ）により生じる低周波成分の動きである。図３の（ａ）に示す通り、触媒が高浄化率（図では７５％）の時、下流酸素センサの波形は高周波振幅が小さく、低周波振幅が大きい。そして図３の（ａ）→（ｂ）→（ｃ）で示すごとく、触媒の劣化度合が進むにつれて（図では触媒浄化率７５％→４０％→２０％）、高周波振幅が大きくなり、逆に低周波振幅が小さくなっていく。  本発明は、この特徴に着目し、下流酸素センサ出力の高周波振幅と、低周波振幅とを検出し、これらの双方を用いて正確に触媒の劣化を検出するものである。すなわち、下流酸素センサ出力の高周波振幅が大きく、かつ、低周波振幅が小さい時触媒が劣化していると判定する。
【００２３】
図４に下流酸素センサ出力の判定領域を示す。図４は横軸に低周波振幅、縦軸に高周波振幅を示している。前述の触媒劣化判定基準は高周波振幅が大きく、即ち所定値Ｂよりも大きい時、かつ低周波振幅が小さい時、即ち所定値Ｃ未満の時、触媒劣化を判定し、その劣化判定領域は本図では斜線領域で触媒劣化を判定する。
【００２４】
ここで、振幅を検出する高周波，低周波の各周波数は重要な意味を持つ。それでは、この各周波数の設定について以下に説明する。
高周波とは、主空燃比フィードバック（Ｆ／Ｂ）の影響を受け、上流酸素センサ１６と同じ周波数で細かく変動する下流酸素センサ１８出力の周波数成分を高周波成分と定義する。この振幅は触媒の吸着作用により、触媒の正常時には小さく、劣化するに従い大きくなる（上流酸素センサ１６の振幅に近づく）。この下流酸素センサ１８の振幅を高周波振幅と定義する。
【００２５】
一方、副Ｆ／Ｂの影響を受け、高周波よりも十分に長い（４倍以上）周期で大きく変動する下流酸素センサ１８出力の低周波成分を低周波成分と定義する。この振幅は、触媒の劣化に伴ない浄化しきれない成分（リッチ出力時のＯ２  ，リーン出力時のＨ２  等）が増加すると、小さくなる。
【００２６】
すなわち、触媒浄化率が高い時低周波成分の振幅は大きく、触媒浄化率が低い時低周波成分の振幅は小さくなる。この振幅を低周波振幅と定義する。そこで本発明では上記２つの振幅のＡＮＤをとることで高い精度での触媒劣化検出を行なう。
【００２７】
以下三元触媒１５の劣化検出について図５に示すフローチャートに基づいて説明する。
このルーチンは通常の空燃比フィードバック中において所定時間（例えば６４ｍｓｅｃ）毎に起動・実行されるものである。ステップ１４０１で検出時間に対応する検出時間カウンタＣＴＩＭＥをインクリメントしてステップ１４０２へ進む。
【００２８】
ステップ１４０２で下流酸素センサ出力値がピークであるか否かの判定のため下流酸素センサ１８の出力の信号方向がリッチ→リーン、あるいはリーン→リッチに反転したか否かを判定し、反転した時ステップ１４０３へ進む。
【００２９】
ステップ１４０３で高周波振幅の演算のため、高周波成分が反転した時の下流酸素センサ出力値ＯＸ２  を高周波成分のピーク値ＨＫＣとし、このピーク値ＨＫＣと前回のピーク値ＨＫＣＯとの差の絶対値を高周波振幅ＨＣとすると共に、次回の演算のために今回のピーク値ＨＫＣを前回のピーク値ＨＫＣＯとして置換した後、ステップ１４０４ヘ進む。
【００３０】
ステップ１４０４で高周波振幅の平均値を求める演算に用いるため、高周波振幅ＨＣの積算ＧＨＣを行ない、また平均値演算の分母としての反転回数積算カウンタＣＨを積算してステップ１４０６に進む。
【００３１】
ステップ１４０６で下流酸素センサ出力ＯＸ２  を、あるなまし率ＴＩＭＣでなまして低周波成分代用値のＯＸＳＭを演算し、ステップ１４０７へ進む。ステップ１４０７〜１４１０で低周波振幅の演算として用いるＯＸＳＭの最大値ＬＨＩＧＨ，最小値ＬＬＯＷを求め、ステップ１４１１へ進む。
【００３２】
ステップ１４１１で検出時間カウンタＣＴＩＭＥにより、検出時間が所定時間Ａ（例えば２９秒）以上か否かを判定し、所定時間Ａ未満であるならばステップ１４０１に戻り、所定時間以上であるならステップ１４１２へ進む。
【００３３】
ステップ１４１２で高周波振幅ＨＣの積算値ＧＨＣを反転回数積算カウンタ値ＣＨで除算して、下流酸素センサ１８出力の高周波振幅平均値ＡＨＣを算出すると共に、ＯＸＳＭの最大値ＬＨＩＧＨからその最小値ＬＬＯＷを減算して低周波振幅ＬＣを算出し、ステップ１４１３へ進む。
【００３４】
ステップ１４１３で高周波振幅ＡＨＣが所定値Ｂより大きく、ステップ１４１４で低周波振幅ＬＣが所定値Ｃより小さければステップ１４１５で触媒劣化と判定してアラーム１９を点灯する。また、ステップ１４１３で高周波振幅ＡＨＣが所定値Ｂ以下か、ステップ１４１４で低周波振幅ＬＣが所定値Ｃ以上であればステップ１４１７で触媒正常と判定し、次のステップ１４１６でカウンタＣＴＩＭＥおよびＣＨを０にリセットした後、本ルーチンを終了する。
【００３５】
以上の図５に示す三元触媒の劣化検出の結果、ステップ１４１７で触媒正常と判定した場合には、図８のフローチャートにより三元触媒１５の劣化検出をダブルチェックする。
【００３６】
図８のルーチンは所定期間（例えば、本実施例では６４ｍｓｅｃ）毎に起動・実行される。ステップ４０１で劣化検出条件が成立しているか否か、即ち劣化検出処理を実行するか否かを判断する。ここで、劣化検出条件とは、図６のステップ１４１７で触媒正常と判定した場合において、例えば後述する主・副空燃比フィードバック制御中である、空燃比補正計数ＦＡＦ、第１のリッチスキップ量ＲＳＲ１および第１のリーンスキップ量ＲＳＬ２がガード値でない、エンジン１が定常状態である等である。ステップ４０１で劣化検出条件が成立していない場合は以後の処理を行わずに本ルーチンを終了する。
【００３７】
一方、ステップ４０１で触媒劣化検出条件が成立した場合は、ステップ４０２以後の劣化検出処理を実行する。まずステップ４０２及び４０３でカウンタＣＲＬ，ＣＬＲをインクリメントする（ＣＲＬ→ＣＲＬ＋１，ＣＬＲ←ＣＬＲ＋１）。
【００３８】
ここでカウンタＣＲＬは空燃比補正係数ＦＡＦがリッチからリーンにスキップ状に変化した時点からの経過時間に相当し、カウンタＣＬＲは空燃比補正係数ＦＡＦがリーンからリッチ側にスキップ状に変化した時点からの経過時間に相当する。
【００３９】
図９は、上流Ｏ２  センサ１６，空燃比補正係数ＦＡＦ，下流Ｏ２  センサ１８の出力波形を表したもので、下流Ｏ２  センサ１８の出力は空燃比補正係数ＦＡＦのスキップ状の変化（リッチからリーン及びリーンからリッチ）に対し、それぞれ所定の遅延時間Ｔ１，Ｔ２経過後に比較電圧ＶＲ２をリーン側に、あるいはリッチ側に横切っている。
【００４０】
即ち、触媒１５が正常であればそのストレージ効果によって、空燃比補正係数ＦＡＦの変化に伴う空燃比の変動の下流Ｏ２  センサ１８への伝搬が遅れる。しかし触媒１５が劣化するとそのストレージ効果が低下し、図９に示す様に空燃比補正係数ＦＡＦの変化に対する下流Ｏ２  センサ１８の出力の変化の遅れ時間Ｔ１Ｘ，Ｔ２Ｘはそれぞれ正常時の遅れ時間Ｔ１，Ｔ２に対して短くなる。本発明実施例では空燃比補正係数ＦＡＦがリッチからリーンへの変化時点から下流Ｏ２  センサ１８の出力電圧Ｖ２が比較電圧ＶＲ２以下になるまでの遅延時間Ｔ１をカウンタＣＲＬでカウントし、空燃比補正係数ＦＡＦがリーンからリッチへの変化時点から出力電圧Ｖ２が比較電圧ＶＲ２以上になるまでの遅延時間Ｔ２をカウンタＣＬＲでカウントする。そして所定回数α（例えば１０回）だけＴ１，Ｔ２を求め、Ｔ１，Ｔ２の平均を算出し、その平均値より触媒１５の劣化を判別している。
【００４１】
図８に戻って、ステップ４０２，４０３でカウンタＣＲＬ，ＣＬＲをインクリメントするとステップ４０４で空燃比補正係数ＦＡＦがリッチ側からリーン側にスキップ状に変化したか即ち、ＦＡＦの値が１．０以上から１．０以下に下降したかの判別を行なう。リッチからリーンに変化した場合はステップ４０５でカウンタＣＲＬをリセット（ＣＲＬ←０）する。
【００４２】
そしてステップ４０８で下流Ｏ２  センサ１８がリッチからリーンに変化したか即ち出力電圧Ｖ２が比較電圧ＶＲ２を下回ったか否かの判別を行ない、下回った場合はステップ４０９で遅延時間Ｔ１の演算値に相当し、第１の積算手段をなす積算カウンタＴＣＲＬに現在のカウント値ＣＲＬ（Ｔ１に相当する値）を加算する。
【００４３】
【数１】
ＴＣＲＬ→ＴＣＲＬ＋ＣＲＬ
そしてステップ４１０でカウンタ値ＣＲＬを積算した回数を示す第１のカウント手段をなす積算回数カウンタＣＣＲＬをインクリメントする（ＣＣＲＬ→ＣＣＲＬ＋１）。次にステップ４１４でステップ４０９，４１２で遅延時間Ｔ１，Ｔ２の積算回数に相当する実行積算カウンタＴＴをインクリメントする（ＴＴ←ＴＴ＋１）。そしてステップ４１５で積算カウンタＴＴが所定回数αに達したか否かの（所定期間積算したか否か）判別を行ない、達した場合は以下ステップ４１６〜４２１の処理を実行し、達していない場合は本ルーチンを抜ける。
【００４４】
またステップ４０４でＮＯ判定のときはステップ４０６で空燃比補正係数ＦＡＦがリーンからリッチにスキップ状に変化したか即ちＦＡＦの値が１．０以下から１．０以上に上昇したかの判別を行ない、リーンからリッチに変化した場合はステップ４０７でカウンタＣＬＲをリセットする（ＣＬＲ←０）。
【００４５】
またステップ４０８での判定がＮＯであった場合はステップ４１１で下流Ｏ２  センサ１８がリーンからリッチに変化したか即ち出力電圧Ｖ２が比較電圧ＶＲ２を上回ったか否かの判別を行ない、上回った場合はステップ４１２で遅延時間Ｔ２を積算する第２の生産手段をなすカウンタＴＣＬＲに現在のカウント値ＣＲＬ（Ｔ２に相当する値）を加算する。
【００４６】
【数２】
ＴＣＬＲ←ＴＣＬＲ＋ＣＬＲ
そしてステップ４１３でカウンタ値ＣＬＲを積算した回数を示し、第２のカウント手段をなす積算回路カウンタＣＣＬＲをインクリメント（ＣＣＬＲ←ＣＣＬＲ＋１）し、ステップ４１４に進む。
【００４７】
またステップ４０６でＮＯ判定である都合即ち、空燃比補正係数ＦＡＦがリッチ→リーンまたはリーン→リッチの変化時でないときはカウンタＣＲＬ，ＣＬＲはリセットされずステップ４０８に進む。そして、ステップ４０８，４１１共にＮＯ判定の場合は以下の処理は行なわない。即ち、本ルーチンにおいて、ＦＡＦがリッチからリーンへの変化時でなく、また下流Ｏ２  センサ１８がリッチからリーンへの変化時でないときはカウンタＣＲＬ，ＣＬＲの更新のみを行なう。
【００４８】
ステップ４１５で積算カウンタＴＴが所定回数αに達した場合はステップ４１６に進んで遅延時間Ｔ１とＴ２の平均値Ｔを算出する。
【００４９】
【数３】
Ｔ＝（ＴＣＲＬ／ＣＣＲＬ＋ＴＣＬＲ／ＣＣＬＲ）／２
上式においてＴＣＲＬ／ＣＣＲＬは積算結果ＴＣＲＬを積算回数ＣＣＲＬで除算して得られる除算結果であり、遅延時間Ｔ１のＣＣＲＬ回数分の平均値に相当し、またＴＣＬＲ／ＣＣＬＲは積算結果ＴＣＲＬを積算回数ＣＣＲＬで除算して得られる除算結果であり、遅延時間Ｔ２のＣＣＬＲ回数分の平均に相当するため、両者の和を２で除算して求まるＴはＴ１とＴ２とを含めた遅延時間の平均値となる。
【００５０】
ステップ４１７で劣化判定レベルβを読み込む。ここで劣化判定レベルβは図１０に示すように吸入気量Ｑに対応して定められており吸気量Ｑが大きくなるに従って劣化判定レベルβは小さくなる特性を有している。ステップ４１７で劣化判定レベルβが定まるとステップ４１８で平均値Ｔと劣化判定レベルβとを比較し、平均値Ｔの方が小さいときはステップ４１９で触媒１５が劣化を判別してステップ４２０でアラーム１９を点灯してステップ４２２に進む。
【００５１】
逆に平均値Ｔの方が劣化判定レベルβより大きいときはステップ４２１で触媒１５は正常と判別してステップ４２２に進む。ステップ４２２では、カウンタＣＲＬ，ＣＬＲ，積算カウンタＴＣＲＬ，ＴＣＬＲ，積算回数カウンタＣＣＲＬ，ＣＣＬＲ，実行積算カウンタＴＴをリセットして本ルーチンを終了する。
【００５２】
ここで、図８の実施例では遅延時間Ｔ１，Ｔ２を所定回求めてそれらの平均値Ｔを用いて触媒の劣化検出を行ったが、遅延時間Ｔ１の平均値（ＴＣＲＬ／ＣＣＲＬ）のみあるいは遅延時間Ｔ２の平均値（ＴＣＬＲ／ＣＣＬＲ）のみを劣化判別レベルβと比較することにより触媒の劣化を判別してもよい。
【００５３】
さちに遅延時間Ｔ１，Ｔ２を積算して積算結果を積算回数で除算した除算結果即ち平均値を用いずに、１回のみの遅延時間Ｔ１あるいはＴ２を劣化判定レベルβと比較することにより触媒の劣化を判別する様にしてもよい。
【００５４】
また、遅延時間Ｔ１，Ｔ２の積算回数が所定αを越えた後にステップ４１６以降の劣化判別処理を実行する替わりに、所定時間（例えば６４０ｍｓｅｃ）毎にステップ４１６以降の劣化判別処理を実行する様にしてもよい。
【００５５】
また、劣化判定レベルβを吸気量Ｑに対応して設定する替わりに、一定値例えば１ｓｅｃに設定してもよい。
図１１は前述の各種センサからの検出信号に応じて燃料噴射量ＴＡＵを演算する燃料噴射量演算ルーチンを示すフローチャートである。このルーチンは所定期間（例えば、本実施例では３６０℃Ａ）毎に起動・実行されるものである。
【００５６】
ステップ１０１で吸気量Ｑ，回転数ＮＥ等の検出信号を読み込んでステップ１０２で基本燃料噴射量Ｔｐを次式により演算する。
【００５７】
【数４】
Ｔｐ←Ｋ・Ｑ／ＮＥ
ここで、Ｋは定数である。つづくステップ１０３で基本燃料噴射量Ｔｐを後述する空燃比フィードバック制御等の各種の補正を行い燃料噴射量ＴＡＵを次式を用いて演算する。
【００５８】
【数５】
ＴＡＵ←Ｔｐ・ＦＡＦ・Ｆ
ここで、ＦＡＦは空燃比フィードバック制御による空燃比補正係数、Ｆは各種補正係数である。そして、ステップ１０４で前述のステップ１０３により演算された燃料噴射量ＴＡＵに対応した制御信号を燃料噴射弁８へ出力する。
【００５９】
図１２は上流Ｏ２  センサ１６の検出信号（上流出力値）Ｖ１に基づいて行われる主空燃比フィードバック制御、即ち空燃比補正係数ＦＡＦを設定する空燃比フィードバック制御ルーチンである。このルーチンは所定時間（例えば、本実施例では４ｍｓｅｃ）毎に起動・実行されるものである。
【００６０】
ステップ２０１で主空燃比フィードバック制御の条件（第１の実行条件）が成立しているか否かを判断する。ここで、第１の実行条件としては、例えば、本実施例ではエンジン始動後でかつ上流Ｏ２  センサ１６が活性状態であること等である。ステップ２０１で第１の実行条件が成立していないと判断された場合は、ステップ２０２へ進む。ステップ２０２で空燃比補正係数ＦＡＦを１．０に設定（ＦＡＦ←１．０）し、本ルーチンを終了する。
【００６１】
一方、ステップ２０１で第１の実行条件が成立していると判断された場合はステップ２０３以降の上流出力値Ｖ１によるフィードバック処理を実行する。
ステップ２０３で上流出力値Ｖ１を読み込む。つづくステップ２０４で上流出力値Ｖ１が第１の比較電圧ＶＲ１（例えば、本実施例では０．４５Ｖ）以下か否か、即ち空燃比がリッチかリーンかを判定する。ここで、上流出力値Ｖ１が第１の比較電圧ＶＲ１以下、即ち空燃比がリーンである場合はステップ２０５へ進む。ステップ２０５で第１のディレイカウンタＣＤＬＹ１が正の値、即ち今回の制御タイミングで上流出力値Ｖ１がリッチからリーンへ反転したか否かを判定する。ここで、第１のディレイカウンタＣＤＬＹ１は上流出力値Ｖ１が第１の比較電圧ＶＲ１を横切ってからの経過時間を計測するためのカウンタであり、リッチ状態の経過時間は正の値、リーン状態の経過時間は負の値で定義される。
【００６２】
ステップ２０５で第１のディレイカウンタＣＤＬＹ１が負の値である場合はステップ２０７へ進む。また、ステップ２０５で第１のディレイカウンタＣＤＬＹ１が正の値である場合はステップ２０６へ進む。ステップ２０６で第１のディレイカウンタＣＤＬＹ１をリセット（ＣＤＬＹ１←０）し、ステップ２０７へ進む。
【００６３】
ステップ２０７で第１のディレイカウンタＣＤＬＹ１の値をデクリメントする（ＣＤＬＹ１←ＣＤＬＹ１−１）。次にステップ５０１で図８に示す触媒劣化検出ルーチン実行中か否かの判別を図８のステップ４０１の触媒劣化検出条件が成立しているか否かで行う。ステップ５０１がＮＯ判定のときはステップ５０３で第１のリーン遅延時間ＴＤＬ１を所定値ＴＲ１に設定し、ＹＥＳ判定のときはステップ５０２で所定値ＴＲ１より小さい所定値ＴＳ１に設定する。続くステップ２０８で第１のディレイカウンタＣＤＬＹ１が第１のリーン遅延時間ＴＤＬ１未満か否かを判定する。ここで、第１のリーン遅延時間ＴＤＬ１は、上流Ｏ２  センサ１６の出力信号がリッチからリーンへの変化があってもリッチであるとの判断を保持する遅延処理における遅延時間に対応するカウント値であり、負の値で定義される。このため第１のリーン遅延時間ＴＤＬ１を所定値ＴＲ１より小さい所定値ＴＳ１に設定すると遅延処理における遅延時間は例えば１２ｍｓｅｃから２４０ｍｓｅｃへ変化して長くなり空燃比補正係数ＦＡＦの周期が長くなって前述した図８のステップ４０８，４１１で確実に下流酸素センサ１８のリッチ⇔リーン反転を検出することができる。
【００６４】
ステップ２０８で第１のディレイカウンタＣＤＬＹ１が第１のリーン遅延時間ＴＤＬ１以上の場合はステップ２１７へ進む。
一方、ステップ２０８で第１のディレイカウンタＣＤＬＹ１が第１のリーン遅延時間ＴＤＬ１未満、即ち上流Ｏ２  センサ１６の出力信号がリッチからリーンへ変化してから前述の遅延時間以上経過した場合はステップ２０９へ進む。ステップ２０９で第１のディレイカウンタＣＤＬＹ１を第１のリーン遅延時間ＴＤＬ１に設定（ＣＤＬＹ１←ＴＤＬ１）し、ステップ２０１へ進む。ステップ２１０で遅延処理後の空燃比の状態を示すフラグＦ１をリセット（Ｆ１←０）し、ステップ２１７へ進む。即ちフラグＦ１がリセット状態（Ｆ１＝０）の場合は遅延処理後の空燃比がリーンであることを示す。
【００６５】
また、ステップ２０４で上流出力値Ｖ１が第１の比較電圧ＶＲ１より大きい、即ち空燃比がリッチである場合はステップ２１１へ進む。ステップ２１１で第１のディレイカウンタＣＤＬＹ１が負の値、即ち今回の制御タイミングで上流出力値Ｖ１がリーンからリッチへ反転したか否かを判定する。ここで、第１のディレイカウンタＣＤＬＹ１が正の値である場合はステップ２１３へ進む。
【００６６】
一方、ステップ２１１で第１のディレイカウンタＣＤＬＹ１が負の値である場合はステップ２１２へ進む。ステップ２１２で第１のディレイカウンタＣＤＬＹ１をリセット（ＣＤＬＹ１←０）し、ステップ２１３へ進む。
【００６７】
ステップ２１３で第１のディレイカウンタＣＤＬＹ１の値をインクリメントする（ＣＤＬＹ１←ＣＤＬＹ１＋１）。次にステップ５０４でステップ５０１と同様に図８に示す触媒劣化検出ルーチン実行中か否かの判別を行う。ステップ５０４がＮＯ判定のときはステップ５０６で第１のリッチ遅延時間ＴＤＲ１を所定値ＴＲに設定し、ＹＥＳ判定のときはステップ５０５で所定値ＴＲより大きい所定値ＴＳに設定する。続くステップ２１４で第１のディレイカウンタＣＤＬＹ１が第１のリッチ遅延時間ＴＤＲ１以上か否かを判定する。ここで、第１のリッチ遅延時間ＴＤＲ１は、上流Ｏ２  センサ１６の出力信号がリーンからリッチへの変化があってもリーンであるとの判断を保持する遅延処理に対応する遅延時間に対応するカウント値であり、正の値で定義される。このため第１のリッチ遅延時間ＴＤＲ１を所定値ＴＲより大きい所定値ＴＳに設定すると遅延処理における遅延時間は例えば６４ｍｓｅｃから２４０ｍｓｅｃへ変化して長くなり空燃比補正係数ＦＡＦの周期が長くなって前述した図８のステップ４０８，４１１で確実に下流酸素センサ１８のリッチ⇔リーン反転を検出することができる。ステップ２１４で第１のディレイカウンタＣＤＬＹ１が第１のリッチ遅延時間ＴＤＲ１以下の場合はステップ２１７へ進む。
【００６８】
一方、ステップ２１４で第１のディレイカウンタＣＤＬＹ１が第１のリッチ遅延時間ＴＤＲ１より大きい場合、即ち上流Ｏ２  センサ１６の出力信号がリーンからリッチへ変化してから前述の遅延時間以上経過した場合はステップ２１５へ進む。ステップ２１５で第１のディレイカウンタＣＤＬＹ１を第１のリッチ遅延時間ＴＤＲ１に設定（ＣＤＬＹ１←ＴＤＲ１）し、ステップ２１６へ進む。ステップ２１６で遅延処理後の空燃比の状態を示すフラグＦ１をセット（Ｆ１←１）し、ステップ２１７へ進む。即ちフラグＦ１がセット状態（Ｆ１＝１）の場合は遅延処理後の空燃比かリッチであることを示す。
【００６９】
ステップ２１７でフラグＦ１が反転したか否か、即ち遅延処理後の空燃比の状態が反転したか否かを判別する。ここで、遅延処理後の空燃比の状態が反転した場合は、ステップ２１８〜ステップ２２０のスキップ処理を行う。まず、ステップ２１８でフラグＦ１がリセット状態か否かを判定する。ここで、フラグＦ１がリセット状態である、即ちリッチからリーンへの反転である場合はステップ２１９へ進む。ステップ２１９で空燃比補正係数ＦＡＦを第１のリッチスキップ量ＲＳＲ１だけ増大させ、
【００７０】
【数６】
ＦＡＦ←ＦＡＦ＋ＲＳＲ１
ステップ２２４へ進む。また、ステップ２１８でフラグＦ１がセット状態である、即ちリーンからリッチへの反転である場合はステップ２２０へ進む。ステップ２２０で空燃比補正係数ＦＡＦを第１のリーンスキップ量ＲＳＬ１だけ減少させ、
【００７１】
【数７】
ＦＡＦ←ＦＡＦ−ＲＳＬ１
ステップ２２４へ進む。一方、ステップ２１７で遅延処理後の空燃比の状態が反転していない場合はステップ２２１〜ステップ２２３の積分処理を行う。まず、ステップ２２１でフラグＦ１がリセット状態である、即ちリーンであるか否かを判別する。ここで、リーンである場合はステップ２２２へ進む。ステップ２２２で空燃比補正係数ＦＡＦを第１のリッチ積分定数ＫＩＲ１だけ増加させ、
【００７２】
【数８】
ＦＡＦ←ＦＡＦ＋ＫＩＲ１
ステップ２２４へ進む。また、ステップ２２１でリッチである場合はステップ２２３へ進む。ステップ２２３で空燃比補正係数ＦＡＦを第１のリーン積分定数ＫＩＬ１だけ減少させ、
【００７３】
【数９】
ＦＡＦ←ＦＡＦ−ＫＩＬ１
ステップ２２４へ進む。ステップ２２４で前述のようにして設定された空燃比係数ＦＡＦが所定範囲（例えば、本実施例では０．８〜１．２）となるようにガード処理を行い本ルーチンを終了する。
【００７４】
図１３は下流Ｏ２  センサ１８の出力値（下流出力値）Ｖ２に基づいて主空燃比フィードバック制御における第１のリッチスキップ量ＲＳＲ１，第１のリーンスキップ量ＲＳＬ１を補正する副空燃比フィードバック制御ルーチンを示すフローチャートである。本ルーチンは所定時間（例えば、本実施例では１ｓｅｃ）毎に起動，実行されるものである。
【００７５】
まず、ステップ３０１で空燃比フィードバック条件（第２の実行条件）が成立しているか否か、即ち副空燃比フィードバック制御を実行するか否かを判断する。ここで、第２の実行条件とは、例えば本実施例では、第１の実行条件が成立している、即ち主空燃比フィードバック制御中である。下流Ｏ２  センサ１８が活性状態である等である。
【００７６】
ステップ３０１で第２の実行条件が成立していない場合はステップ３０２へ進む。ステップ３０２で第１のリッチスキップ量ＲＳＲ１を所定のリッチスキップ量ＲＳＲ０に設定する。つづくステップ３０３で第１のリーンスキップ量ＲＳＬ１を所定のリーンスキップ量ＲＳＬ０に設定し、本ルーチンを終了する。
【００７７】
また、ステップ３０１で第２の実行条件が成立している場合はステップ３０４以降の下流出力値Ｖ２に基づく副空燃比フィードバック処理を実行する。まず、ステップ３０４で下流出力値Ｖ２を読み込む。ステップ３０５で下流出力値Ｖ２が第２の比較電圧ＶＲ２（例えば、本実施例では第１の比較電圧ＶＲ１と同じ０．４５Ｖと設定）以下か否か、即ち空燃比がリッチかリーンかを判定する。ここで、下流出力値Ｖ２が第２の比較電圧ＶＲ２以下、即ち空燃比がリーンである場合はステップ３０６へ進む。
【００７８】
ステップ３０６で第２のディレイカウンタＣＤＬＹ２が正の値、即ち今回の制御タイミングで下流出力値Ｖ２がリッチからリーンへ反転したか否かを判定する。ここで、第２のディレイカウンタＣＤＬＹ２は前述の第１のディレイカウンタＣＤＬＹ１と同様に下流出力値Ｖ２が第２の比較電圧ＶＲ２を横切ってからの経過時間を計測するためのカウンタであり、リッチ状態の経過時間は正の値、リーン状態の経過時間は負の値で定義される。
【００７９】
ステップ３０６で第２のディレイカウンタＣＤＬＹ２が負の値である場合はステップ３０８へ進む。また、ステップ３０６で第２のディレイカウンタＣＤＬＹ２が正の値である場合はステップ３０７へ進む。ステップ３０７で第２のディレイカウンタＣＤＬＹ２をリセット（ＣＤＬＹ２←０）し、ステップ３０８へ進む。
【００８０】
ステップ３０８で第２のディレイカウンタＣＤＬＹ２の値をデクリメントする（ＣＤＬＹ２←ＣＤＬＹ２−１）。続くステップ３０９で第２のディレイカウンタＣＤＬＹ２が第２のリーン遅延時間ＴＤＬ２未満か否かを判定する。ここで、第２のリーン遅延時間ＴＤＬ２は、下流Ｏ２  センサ１８の出力信号がリッチからリーンへの変化があってもリッチであるとの判断を保持する遅延処理における遅延時間に対応するカウント値であり、負の値で定義される。ステップ３０９で第２のディレイカウンタＣＤＬＹ２が第２のリーン遅延時間ＴＤＬ２以上の場合はステップ３１８へ進む。
【００８１】
一方、ステップ３０９で第２のディレイカウンタＣＤＬＹ２が第２のリーン遅延時間ＴＤＬ２未満、即ち下流Ｏ２  センサ１８の出力信号がリッチからリーンへ変化してから前述の遅延時間以上経過した場合はステップ３１０へ進む。ステップ３１０で第２のディレイカウンタＣＤＬＹ２を第２のリーン遅延時間ＴＤＬ２に設定（ＣＤＬＹ２←ＴＤＬ２）し、ステップ３１１へ進む。ステップ３１１で遅延処理後の空燃比の状態を示すフラグＦ２をリセット（Ｆ２←０）し、ステップ３１８へ進む。即ちフラグＦ２がリセット状態（Ｆ２＝０）の場合は遅延処理後の空燃比がリーンであることを示す。
【００８２】
また、ステップ３０５で下流出力値Ｖ２が第２の比較電圧ＶＲ２より大きい、即ち空燃比がリッチである場合はステップ３１２へ進む。ステップ３１２で第２のディレイカウンタＣＤＬＹ２が負の値、即ち今回の制御タイミングで下流出力値Ｖ２がリーンからリッチへ反転したか否かを判定する。ここで、第２のディレイカウンタＣＤＬＹ２が正の値である場合はステップ３１４へ進む。
【００８３】
一方、ステップ３１２で第２のディレイカウンタＣＤＬＹ２が負の値である場合はステップ３１３へ進む。ステップ３１３で第２のディレイカウンタＣＤＬＹ２をリセット（ＣＤＬＹ２←０）し、ステップ３１４へ進む。
【００８４】
ステップ３１４で第２のディレイカウンタＣＤＬＹ２の値をインクリメントする（ＣＤＬＹ２←ＣＤＬＹ２＋１）。続くステップ３１５で第２のディレイカウンタＣＤＬＹ２が第２のリッチ遅延時間ＴＤＲ２未満か否かを判定する。ここで、第２のリッチ遅延時間ＴＤＲ２は、下流Ｏ２  センサ１８の出力信号がリーンからリッチへの変化があってもリーンであるとの判断を保持する遅延処理に対応する遅延時間に対応するカウント値であり、正の値で定義される。ステップ３１５で第２のディレイカウンタＣＤＬＹ２が第２のリッチ遅延時間ＴＤＲ２以上の場合はステップ３１８へ進む。
【００８５】
一方、ステップ３１５で第２のディレイカウンタＣＤＬＹ２が第２のリッチ遅延時間ＴＤＲ２より大きい、即ち下流Ｏ２  センサ１８の出力信号がリーンからリッチへ変化してから前述の遅延時間以上経過した場合はステップ３１６へ進む。ステップ３１６で第２のディレイカウンタＣＤＬＹ２を第２のリッチ遅延時間ＴＤＲ２に設定（ＣＤＬＹ２←ＴＤＲ２）し、ステップ３１７へ進む。ステップ３１７で遅延処理後の空燃比の状態を示すフラグＦ２をセット（Ｆ２←１）し、ステップ３１８へ進む。即ちフラグＦ２がセット状態（Ｆ２＝１）の場合は遅延処理後の空燃比がリッチであることを示す。
【００８６】
ステップ３１８でフラグＦ２がリセット状態か否か、即ち遅延処理後の空燃比がリーンであるかリッチであるかを検出する。ここで、フラグＦ２がリセット状態、即ち遅延処理後の空燃比がリーンである場合はステップ３１９へ進む。ステップ３１９で第１のリッチスキップ量ＲＳＲ１を所定値ＲＳだけ増加させ、
【００８７】
【数１０】
ＲＳＲ１←ＲＳＲ１＋ＲＳ
ステップ３２０へ進む。ステップ３２０で第１のリーンスキップ量ＲＳＬ１を所定値ＲＳだけ減少させ、
【００８８】
【数１１】
ＲＳＬ１←ＲＳＬ１−ＲＳ
ステップ３２３へ進む。一方、ステップ３１８でフラグＦ２がセット状態、即ち遅延処理後の空燃比がリッチである場合はステップ３２１へ進む。ステップ３２１で第１のリッチスキップ量ＲＳＲ１を所定値ＲＳだけ減少させ、
【００８９】
【数１２】
ＲＳＲ１←ＲＳＲ１−ＲＳ
ステップ３２２へ進む。ステップ３２２で第１のリーンスキップ量ＲＳＬ１を所定値ＲＳだけ増加させ、
【００９０】
【数１３】
ＲＳＬ１←ＲＳＬ１＋ＲＳ
ステップ３２３へ進む。ステップ３２３で前述のようにして設定された第１のリッチスキップ量ＲＳＲ１，第１のリーンスキップ量ＲＳＬ１が所定範囲内となるようにガード処理し、本ルーチンを終了する。
【００９１】
〔第２実施例〕
この実施例は第１実施例に対し、図５の触媒劣化検出ルーチンを図１４に置換したものであり、他の構成は第１実施例と同じである。
【００９２】
このルーチンは通常の空燃比フィードバック中において所定時間（例えば６４ｍｓｅｃ）毎に起動・実行されるものであり、図１４中、図５と同一符号のステップはそれと同じ処理を実行する。ステップ１４０１で検出時間に対応する検出時間カウンタＣＴＩＭＥをインクリメントしてステップ１４０５Ａへ進む。
【００９３】
ステップ１４０５Ａで主空燃比フィードバック周期の判定のため、空燃比補正係数ＦＡＦのリッチ→リーンもしくはリーン→リッチのスキップを判定し、ＦＡＦスキップが実行されていればステップ１４１２Ｂへ、実行されていなければステップ１４０５Ｂへ進む。
【００９４】
ステップ１４０５Ｂ〜１４０５Ｅで高周波振幅演算のため、主空燃比フィードバック一周期間の下流酸素センサ１８出力信号の最大値ＫＭＡＸと最小値ＫＭＩＮを求め、ステップ１４１１へ進む。
【００９５】
ステップ１４１２Ｂで低周波振幅演算のため、ＫＭＡＸとＫＭＩＮの平均値ＴＥＩを求め（この平均値が下流酸素センサ１８の低周波成分に相当する）、高周波振幅ＫＯＵをＫＭＡＸとＫＭＩＮの差より求める。そして、高周波振幅平均値を求めるため、ＫＯＵを積算して高周波振幅積算値ＧＫＯＵを求め、さらに、高周波振幅の平均値演算の分母としての主フィードバック周期カウンタＧＨを積算してステップ１４１２Ｃに進む。ステップ１４１２ＣではＫＭＡＸ，ＫＭＩＮとして、その時の下流酸素センサ１８の出力信号ＯＸ２を設定して、次回の主フィードバック周期でのＫＭＡＸ，ＫＭＩＮの演算に備える。
【００９６】
次のステップ１４１２Ｄ〜１４１２Ｇで低周波振幅演算のため、ＴＥＩの最大値ＴＭＡＸ，最小値ＴＭＩＮを求め、ステップ１４１１に進む。
ステップ１４１１で検出時間カウンタＣＴＩＭＥにより、検出時間が所定時間Ａ（例えば２０秒）以上か否かを判定し、所定時間Ａ以上であるならステップ１４１２Ａへ進む。
【００９７】
ステップ１４１２Ａで下流酸素センサ１８出力の高周波振幅平均値ＡＨＣと低周波振幅ＬＣとを算出し、ステップ１４１３へ進む。
ステップ１４１３で高周波振幅ＡＨＣが所定値Ｂより大きく、ステップ１４１４で低周波振幅ＬＣが所定値Ｃより小さければステップ１４１５で触媒劣化と判定してアラーム１９を点灯し、ステップ１４１３で高周波振幅ＡＨＣが所定値Ｂ以下か、ステップ１４１４で低周波振幅ＬＣが所定値Ｃ以上であればステップ１４１７で触媒正常と判定し、次のステップ１４１６でカウンタＣＴＩＭＥおよびＣＨを０にリセットし、さらに、次のステップ１４１８でＴＭＡＸ，ＴＭＩＮとして、その時の下流酸素センサ１８の出力信号ＯＸ２を設定して、次回の所定時間ＡでのＴＭＡＸ，ＴＭＩＮの演算に備える。
【００９８】
これにより、図１５に示すごとく、主空燃比フィードバック一周期毎に、下流酸素センサ１８の出力信号ＯＸ２の最大値ＫＭＡＸ及び最小値ＫＭＩＮとこれらの平均値ＴＥＩと高周波振幅ＫＯＵとを求めることができると共に、所定時間Ａ毎に、下流酸素センサ１８の高周波振幅ＫＯＵの平均値ＡＨＣと低周波成分の最大値ＴＭＡＸ及び最小値ＴＭＩＮと低周波振幅ＬＣとを求めることができる。
〔第３実施例〕
この第３実施例は第１実施例及び第２実施例に対し、図５の代わりに図１６に示す触媒劣化検出ルーチンを用いると共に、図８の遅延時間による触媒劣化検出ルーチンを省略し、さらに、図１２の主空燃比フィードバック処理中、ステップ５０１〜５０６のみを省略したものであって、他の構成は第１実施例及び第２実施例と同じである。
【００９９】
以下、劣化検出について図１６に示すフローチャートに基づいて説明する。
このルーチンは所定時間（例えば６４ｍｓｅｃ）毎に実行される。ステップ１３０１で高周波振幅ＫＯＵを測定する第１検出条件のチェックを行なう。この第１検出条件は急激な過渡運転時及び燃料カット（Ｆ／Ｃ）時等を除く通常運転条件である。ステップ１３０２で第１検出条件を満足した場合はステップ１３０２へ進み、満足してない場合はステップ１３０４へ進む。ステップ１３０２では下流Ｏ２  センサ１８の高周波振幅ＫＯＵの平均値ＡＨＣを測定し、ステップ１３０３へ進む。
【０１００】
ステップ１３０３ではステップ１３０２で検出された高周波振幅ＫＯＵの平均値ＡＨＣを所定値Ｂと比較し、所定値Ｂより小さければ、触媒を正常と判定し本ルーチンを終了する。一方、高周波振幅ＫＯＵが所定値Ｂより小さければ、ステップ１３０４へ進む。
【０１０１】
ステップ１３０４では、下流Ｏ２  センサ１８の高周波振幅ＫＯＵ及び低周波振幅ＬＣを測定するための第２検出条件のチェックを行なう。この第２検出条件はエンジン運転がほぼ定常状態である。第２検出条件を満足しない場合は本ルーチンを終了する。満足した場合はステップ１３０５へ進み、副空燃比補正係数を変更した後、ステップ１３０６へ進む。
【０１０２】
ステップ１３０６では下流Ｏ２  センサ１８の高周波振幅ＫＯＵの平均値ＡＨＣを測定した後、ステップ１３０７へ進む。ステップ１３０７では下流Ｏ２  センサ１８の低周波振幅ＬＣを測定し、その後、ステップ１３０８で副空燃比補正係数を通常にもどす。ステップ１３０９ではステップ１３０６で測定される高周波振幅の平均値ＡＨＣとステップ１３０８で測定された低周波振幅ＬＣとをそれぞれ所定値Ｂ，Ｃと比較する。
【０１０３】
ステップ１３０９にて、ステップ１３０６で測定された高周波振幅ＫＯＵの平均値ＡＨＣが所定値Ｂより大きく、かつステップ１３０７で測定された低周波振幅ＬＣが所定値Ｃより小さいと判断された場合は、ステップ１３１０へ進み、そうでない場合はステップ１３１１へ進む。ステップ１３１０では触媒が劣化したと判定してアラーム１９を点灯させる。ステップ１３１１では触媒が正常と判定し本ルーチンを終了する。
【０１０４】
ここで、ステップ１３０９において高周波振幅ＫＯＵの平均値ＡＨＣ及び低周波振幅ＬＣと比較する所定値Ｂ，Ｃは各運転状態で各々一定値でもよいが、図１７に示す様に上流酸素センサ１６の反転周期（主フィードバック周期）で切り換えるとさらに検出精度が向上する。
【０１０５】
このような制御をする場合の図１６のステップ１３０９のルーチンを図１８により詳細に説明する。まず、ステップ１３０９Ａで主空燃比フィードバック周期の判定のため、空燃比補正係数ＦＡＦのリッチ→リーンのスキップを図１２に示すフラグＦ１の状態により判定し、ＦＡＦがスキップしたらステップ１３０９Ｂへ進み、スキップしていなければステップ１３０９Ｆへ進む。ステップ１３０９Ｂ〜１３０９Ｄでは空燃比補正係数ＦＡＦがリッチ→リーンへスキップする主空燃比フィードバック一周期の時間ＴＢを求める。
【０１０６】
次のステップ１３０９Ｅで、この主空燃比フィードバック一周期の時間ＴＢに応じて、図１７に示すように各所定値Ｂ，Ｃを補間演算して求める。次のステップ１３０９Ｆで高周波振幅の平均値ＡＨＣと所定値Ｂとを比較し、さらに次のステップ１３０９Ｇで低周波振幅幅ＬＣと所定値Ｃとを比較して触媒１５の劣化の有無を判断する。
【０１０７】
図１６に示す検出法によると、まず、通常運転領域（ほぼ定常）で、ステップ１３０２により高周波振幅を測定することにより、次のステップ１３０３での高周波振幅が大でないという簡単な処理で明らかに正常な触媒を検出することができる。そして、正常と判定されなかった触媒については、ステップ１３０４以降の処理を行なうことで、正確に触媒の劣化または正常の判定を行なうことができるというリメットがある。
【０１０８】
それでは、ステップ１３０５にて行なう副空燃比補正係数の変更について図１９のタイムチャートを用い説明する。まず、図１６のステップ１３０４で第２の検出条件が満足された場合、副空燃比補正係数は図１９の（ｅ）の下流Ｏ２  センサ１８のディレイ処理後フラグＸＲＯ２Ｄにより、図１９の（ｆ）で示すごとく積分処理、スキップ処理を行なう。この下流酸素（Ｏ２  ）センサディレイ処理後フラグＸＲＯ２Ｄは図１９の（ｄ）の下流Ｏ２  センサ信号リッチ・リーン波形を基に以下の様に作成する。
【０１０９】
下流Ｏ２  センサ信号リッチ・リーン波形が反転後（例えばリーン→リッチ）所定時間Ｔ１ｍｓｅｃのディレイを持ち、ディレイ処理後フラグＸＲＯ２Ｄを反転する（リーン→リッチ）。この場合、所定時間Ｔ１ｍｓｅｃ以内に再び下流Ｏ２  センサ信号リッチ・リーン波形が反転（リッチ→リーン）した場合は、ディレイ処理後フラグＸＲＯ２Ｄの反転を無効とする。つまり、下流Ｏ２  センサディレイ処理後フラグＸＲＯ２Ｄは、下流Ｏ２  センサ信号リッチ・リーン波形に対し、所定時間Ｔ１ｍｓｅｃのディレイを持ち、かつ同一状態がＴ１ｍｓｅｃ以上続いた時に反転するフラグである。
【０１１０】
ステップ１３０５では、副空燃比補正係数の演算を、この下流Ｏ２  センサディレイ処理後フラグＸＲＯ２Ｄを基に行ない、かつ、副空燃比補正係数の積分定数とスキップ定数とを所定の値に設定する。
【０１１１】
この副空燃比補正係数の変更（積分定数の変更、所定時間Ｔ１のディレイの追加、スキップの追加）により、高浄化率触媒使用時の下流Ｏ２  センサ１８信号の低周波振幅値が顕著に現れ、触媒劣化検出能力が段格に向上する。
【０１１２】
次に、図１６のステップ１３０５の副空燃比補正係数の変更について図２０，図２１により説明する。図２０は図１６のステップ１３０５により副空燃比補正係数変更と決定されると４ｍｓｅ程度毎に実行されるスキップ処理ルーチンである。まず、ステップ１７０１〜１７０９より図１９の（ｃ）で示す下流Ｏ２  センサ１８信号に所定時間ディレイ処理したフラグＸＲＯ２Ｄを作る（図１９の（ｅ）参照）。ステップ１７１０〜１７１３ではフラグＸＲＯ２Ｄの反転により、副空燃比補正係数をリーンスキップ、リッチスキップさせる（図１６の（ｆ）参照）。
【０１１３】
図２１は図１６のステップ１３０５により副空燃比補正係数変更と決定されると５００ｍｓｅ程度毎に実行される積分処理ルーチンであり、フラグＸＲＯ２Ｄの状態により、ステップ１８０１〜１８０３によって副空燃比補正係数のリーン側積分、リッチ側積分を５００ｍｓｅ毎に行なう。
【０１１４】
つまり、図１６のステップ１３０５では、副空燃比補正係数を下流Ｏ２  センサ１８出力のディレイ処理後のフラグＸＲＯ２Ｄに基づき、スキップ積分制御を行ない、また、このスキップ量、積分量を通常の副空燃比補正係数に対し、大きな値に変更する。
【０１１５】
ここで、図１６のステップ１３０５での副空燃比補正係数の変更としては、上記以外に、副空燃比補正係数制御を規則的にオープン制御にするようにしてもよい。
【０１１６】
ここで、副空燃比補正係数としては、主空燃比フィードバックにおける第１のリッチスキップ量ＲＳＲ１、第２のリーンスキップ量ＲＳＬ１、積分定数ＫＩＲＩ，ＫＩＬＩ及び遅延時間ＴＤＲ１，ＴＤＬ１のうちいずれか１つを変化させるようにすればよい。
【０１１７】
以上の第３実施例におけるステップ１３０２，１３０６の高周波振幅の測定及びステップ１３０７の低周波振幅の測定は、第１実施例で説明した図５の方法と、第２実施例で説明した図１４の方法とのいずれを用いても可能なことは勿論であるが、第２実施例で説明した図１４の方法を用いた方が検出精度が向上するため、好ましい。
〔第４実施例〕
第４実施例の三元触媒１５の劣化検出について説明する。図２２に触媒浄化率と下流酸素センサ１８波形の関係を示す。なお、図中下流酸素センサ１８出力信号（下流Ｏ２  ）に示された破線は副空燃補正係数の時間的変化に対応する低周波成分である。
【０１１８】
図２２に示す如く、副空燃比係数の時間的変化に対する下流酸素センサ１８の低周波成分の時間差Ｔは、
触媒の浄化率が高い時、（図では９０％）時間差Ｔが大となり、
触媒の劣化度合が進むにつれて（図では触媒浄化率９０％→７０％→２０％）、前記時間差は小さくなっていく。
【０１１９】
本発明はこの特徴に着目し、前記時間差が所定値よりも小さい時、触媒が劣化していると判定する。
図２３に、触媒浄化率と前記時間差Ｔとの関係を示す。今、触媒浄化率５０％以下を劣化として判定する時は、前記時間差の判定値をＴ１に設定すれば良い。
【０１２０】
以下ＥＣＵ２０において実行される三元触媒１５の劣化検出について図２４に示すフローチャートに基づいて説明する。
このルーチンは通常の空燃比フィードバック中において所定時間（例えば６４ｍｓｅｃ）毎に起動・実行されるものである。ステップ１４２１で検出時間に対応する検出時間カウンタＣＴＩＭＥをインクリメントしてステップ１４２２へ進む。
【０１２１】
ステップ１４２２で副空燃比補正係数の変化方向がリーン側（減少）→リッチ側（増加）へ反転したか否かを判定し（ステップ１４２２の詳細は後述する）、その方向へ反転した時はステップ１４２３へ進み、判定しなかった場合はステップ１４２４へ進む。ステップ１４２３では反転した時刻をＴＩＭＥ１にセットしてステップ１４２４に進む。
【０１２２】
ステップ１４２４では下流酸素センサ１８出力ＯＸ２  より低周波成分を演算してステップ１４２５へ進む（ステップ１４２４の詳細は後述する）。
ステップ１４２５では低周波成分が極小値（リーンピーク値）か否かを判定し（ステップ１４２５の詳細は後述する）、極小値と判定しなかった場合にはステップ１４２７へ進み、極小値と判定した場合はステップ１４２６へ進んで極小値と判定した時刻をＴＩＭＥ２にセットし、ステップ１４２８への進む。
【０１２３】
ステップ１４２７では検出時間カウンタＣＴＩＭＥにより、検出時間が所定時間以上か否かを判定し、所定時間未満であるならステップ１４２１へ戻り、所定時間以上であるならばステップ１４２８へ進む。
【０１２４】
ステップ１４２８では副空燃比補正係数がリッチ側へ反転してから下流酸素センサ１８の低周波成分のリーンピーク値が表れるまでの時間差Ｔを算出する。次のステップ１４２９でこの時間差Ｔが所定値Ｔ２以上かを判定し、この時間差Ｔが所定値Ｔ２より大きければ、ステップ１４３０で触媒は正常と判定され、Ｔ２以下ならばステップ１４３１で触媒劣化と判定されてアラーム１９を点灯させる。
【０１２５】
そして、次のステップ１４３２でカウンタＣＴＩＭＥおよび時間差Ｔを０にリセットした後本ルーチンを終了する。
前述の各種センサからの検出信号に応じてＥＣＵ２０において実行される燃料噴射量ＴＡＵを演算する燃料噴射量演算ルーチンは第１実施例の図６と同じであるため説明を省略する。
【０１２６】
図２５は上流Ｏ２  センサ１６の検出信号（上流出力値）Ｖ１に基づいてＥＣＵ２０で実行される主空燃比フィードバック制御、即ち空燃比補正係数ＦＡＦを設定する空燃比フィードバック制御ルーチンである。このルーチンは第１実施例の図１２に対し、ステップ５０１〜５０６を省略したのみのものであるため、詳細な説明は省略する。
【０１２７】
次に、図２４のステップ１４２２のより詳細なフローチャートを図２６の（ａ）により説明する。まず、ステップ１４２２Ａにより、副空燃比補正係数としての第１のリッチスキップ量ＲＳＲ１の反転を、フラグＦ２が反転したかにより判断し、反転しているときにはステップ１４２２Ｂにより、フラグＦ２が０かを判断する。これにより、フラグＦ２が反転した時にフラグＦ２が０であると判断すると、副空燃比補正係数としての第１のリッチスキップ量ＲＳＲ１が減少→増加へ反転したことを判断することになる。
【０１２８】
また、図２４のステップ１４２４、１４２５のより詳細なフローチャートを図２６の（ｂ）により説明する。まず、ステップ１４２４Ａで主空燃比フィードバック周期の判定のため、空燃比補正係数ＦＡＦのリッチ→リーンもしくはリーン→リッチのスキップを、フラグＦ１の状態により図２６の（ａ）と同様にして判定し、ＦＡＦのスキップが実行されていればステップ１４２４Ｆへ、また実行されていなければステップ１４２４Ｂへ進む。
【０１２９】
そして、ステップ１４２４Ｂで下流酸素センサ１８の出力信号０Ｘ２と主空燃比フィードバック一周期での最大値ＫＭＡＸとを比較し、最大値ＫＭＡＸより下流酸素センサ１８の出力信号０Ｘ２の方が大きい時にはステップ１４２４Ｃへ進んで、最大値ＫＭＡＸとしてその時の下流酸素センサ１８の出力信号０Ｘ２を設定した後ステップ１４２４Ｄへ進み、最大値ＫＭＡＸより下流酸素センサ１８の出力信号０Ｘ２の方が大きくない時にはステップ１４２４Ｃをバイパスしてステップ１４２４Ｄへ進む。
【０１３０】
ステップ１４２４Ｄでは下流酸素センサ１８の出力信号０Ｘ２とフィードバック一周期での最小値ＫＭＩＮとを比較し、最小値ＫＭＩＮより下流酸素センサ１８の出力信号０Ｘ２の方が小さい時にはステップ１４２４Ｅへ進んで、最小値ＫＭＩＮとしてその時の下流酸素センサ１８の出力信号０Ｘ２を設定した後次のステップ１４２７へ進み、最小値ＫＭＩＮより下流酸素センサ１８の出力信号０Ｘ２の方が小さくない時にはステップ１４２４Ｅをバイパスしてステップ１４２７へ進む。これにより、図１５に示すごとく、主空燃比フィードバック一周期毎に下流酸素センサ１８の出力信号０Ｘ２の最大値ＫＭＡＸと最小値ＫＭＩＮとを求めることができる。また、ステップ１４２４Ｆでは最大値ＫＭＡＸと最小値ＫＭＩＮとの平均値ＴＥＩを演算することにより図１５の破線で示すごとく、空燃比補正係数ＦＡＦのリッチ→リーンもしくはリーン→リッチのスキップ毎に下流酸素センサ１８の出力信号０Ｘ２の低周波成分が求められる。
【０１３１】
次のステップ１４２５Ａでは平均値ＴＥＩがその前回の平均値ＴＥＩｂより小さいか判断し、小さい時にはステップ１４２５Ｂへ進んでフラグＦ３を０とした後ステップ１４２７へ進み、大きい時にはステップ１４２５Ｃへ進んでフラグＦ３が０かを判断し、フラグＦ３が０のときにはステップ１４２５Ｄへ進み、０でないときにはステップ１４２７へ進む。ステップ１４２５ＤではフラグＦ３を１とした後ステップ１４２５Ｅへ進んで、次回の演算のために今回の平均値ＴＥＩを前回の平均値ＴＥＩｂとして置き換える。これにより、下流酸素センサ１８の出力信号０Ｘ２の低周波成分である平均値が減少から増加に反転した時点を低周波成分が極小値になった時点であると判断することができる。
【０１３２】
なお、上述した第４実施例においては、副空燃比補正係数の時間変化に対する下流酸素センサ１８の低周波成分の時間差を、前者の極小値発生時刻と後者の極小値発生時刻との差で算出しているが、特に極小値に限るものではなく、図２７の（ａ）で示すごとく、ステップ１４２２ＢでフラグＦ２が１かを判断するようにし、かつ図２７の（ｂ）で示すごとく、ステップ１４２５Ａで平均値ＴＥＩがその前回の平均値ＴＥＩｂより大きいかを判断するようにすることにより、極大値を用いて算出するようにしてもよい。
【０１３３】
また、上述した各実施例においては、副空燃比補正係数として第１のリッチスキップ量ＲＳＲ１を用いたが、第１のリーンスキップ量ＲＳＬ１を用いるようにしてもよい。また、副空燃比フィードバック制御によって制御される副空燃比補正係数として、図１３に示すステップ３１９〜３２２、３０２、３０３において、主空燃比フィードバック制御のスキップ量ＲＳＲ１、ＲＳＬ１の代わりに、図２７の（ｃ）で示すごとく積分定数ＫＩＲＩ、ＫＩＬＩを変化させたり、図２７の（ｄ）で示すごとく遅延時間ＴＤＲ１、ＴＤＬ１を変化させるものにおいても、これらの積分定数ＫＩＲＩ、ＫＩＬＩや遅延時間ＴＤＲ１、ＴＤＬ１を副空燃比補正係数として用いることにより、本発明を適用することができる。
【０１３４】
〔第５実施例〕
図２８は本発明第５実施例におけるＥＣＵ２０で実行される触媒劣化検出ルーチンを示すもので、上述した各実施例より精度は劣るものの、下流酸素センサ１８の低周波成分の周期のみにより触媒１５の劣化を判別するようにしたものである。この第５実施例によれば、第４実施例の図２４のフローチャートに対し、ステップ１４２１、１４２２、１４２３、１４２７、１４３２を省略し、ステップ１４２５と１４２６との間に、今まで記憶されている低周波成分が極小値となった時刻ＴＩＭＥ２を前回の低周波成分が極小値となった時刻ＴＩＭＥ２−１として記憶するステップ１４２５Ａを追加し、ステップ１４２６の後に、ステップ１４２８の代わりに、ステップ１４２８Ａによって、今回の低周波成分が極小値となった時刻ＴＩＭＥ２から前回の低周波成分が極小値となった時刻ＴＩＭＥ２−１を減算して下流酸素センサ１８の低周波成分の周期ＴＡを検出するようにする。
【０１３５】
そして、次のステップ１４２９Ａで周期ＴＡが所定時間Ｔ３より長いか否かを判断し、周期ＴＡが所定時間Ｔ３より長いとき触媒正常と判断し、周期ＴＡが所定時間Ｔ３より長くないとき触媒異常と判別するようにしたものである。
【０１３６】
また、触媒の劣化検出はこれらの実施例の他に、下流酸素センサ１８の低周波成分の振幅のみを検出し、この振幅が所定値以下のとき触媒劣化と判別するようにしてもよい。
【０１３７】
【発明の効果】
以上に詳述したように本発明では下流酸素センサ出力の低周波成分を用い、またこの低周波成分の周期は酸素センサの応答性バラツキに対し十分に（４倍以上）長いため、低周波振幅は下流酸素センサの応答性に対するバラツキにあまり影響を受けない。これにより、上流及び下流酸素センサの劣化の有無や出力応答のバラツキによる影響が少なく、しかも、下流酸素センサの低周波成分は、副空燃比補正係数の時間的変化に対応してはいるが、副空燃比補正係数そのものではないため、触媒劣化検出に際して、各種の内燃機関に対する適合が比較的容易で、かつ触媒の劣化を精度よく検出できるという優れた効果がある。
【０１３８】
また本発明では下流酸素センサ低周波振幅の検出に加え、高周波振幅も検出することにより、すなわち低周波振幅・高周波振幅の２つのＡＮＤを取るようにすることにより、それぞれを単独で取ることに比べ、触媒劣化検出精度が高くなるという優れた効果がある。
【図面の簡単な説明】
【図１】本発明のクレーム対応図である。
【図２】本発明を適応した第１実施例の概略構成図である。
【図３】触媒劣化に伴う上・下流酸素センサの出力波形を示したタイムチャートである。
【図４】触媒劣化判定領域で示す図である。
【図５】振幅による触媒劣化検出ルーチンを示したフローチャートである。
【図６】上流酸素センサ正常時の上・下流酸素センサの出力波形を示したタイムチャートである。
【図７】上流酸素センサ劣化時の上・下流酸素センサの出力波形を示したタイムチャートである。
【図８】遅延時間による触媒劣化検出ルーチンを示したフローチャートである。
【図９】三元触媒１５の劣化状態に応じた上・下流酸素センサの出力波形を示したタイムチャートである。
【図１０】劣化判定レベルβと吸気量Ｑとの関係を示したマップである。
【図１１】燃料噴射量算出ルーチンを示したフローチャートである。
【図１２】主空燃比フィードバック処理を示したフローチャートである。
【図１３】副空燃比フィードバック処理を示したフローチャートである。
【図１４】本発明の第２実施例における触媒劣化検出ルーチンを示したフローチャートである。
【図１５】主空燃比補正係数及び下流酸素センサの出力波形を示したタイムチャートである。
【図１６】本発明の第３実施例における触媒劣化検出ルーチンを示したフローチャートである。
【図１７】主空燃比フィードバック周期に対する高周波振幅判定値及び低周波振幅判定値を示す図である。
【図１８】高周波振幅大、低周波振幅小判定処理を示すフローチャートである。
【図１９】第３実施例の作動説明に供する各部波形のタイムチャートである。
【図２０】スキップ処理ルーチンを示すフローチャートである。
【図２１】積分処理ルーチンを示すフローチャートである。
【図２２】触媒劣化に伴う副空燃比補正係数と下流酸素センサの出力波形を示すタイムチャートである。
【図２３】触媒浄化率と時間差との関係を示す図である。
【図２４】本発明の第４実施例の時間差による触媒劣化検出ルーチンを示したフローチャートである。
【図２５】第４実施例の主空燃比フィードバック処理を示したフローチャートである。
【図２６】（ａ）は図２４のルーチンにおけるステップ１４２２をより詳細に示すフローチャートであり、（ｂ）は図２４のルーチンにおけるステップ１４２４，１４２５をより詳細に示すフローチャートである。
【図２７】（ａ）は図２６（ａ）の他の実施例を示すフローチャートであり、（ｂ）は図２６の（ｂ）の他の実施例の要部のフローチャートでり、（ｃ），（ｄ）は図１３の他の実施例の要部をそれぞれ示すフローチャートである。
【図２８】本発明の第５実施例における触媒劣化検出ルーチンを示すフローチャートである。
【符号の説明】
１  エンジン
８  燃料噴射弁
１５  三元触媒
１６  上流酸素センサ
１８  下流酸素センサ
１９  アラーム
２０  ＥＣＵ
【図１】
0003620051.tif 000002
【図２】
0003620051.tif 000003
【図３】
0003620051.tif 000004
【図４】
0003620051.tif 000005
【図５】
0003620051.tif 000006
【図６】
0003620051.tif 000007
【図７】
0003620051.tif 000008
【図８】
0003620051.tif 000009
【図９】
0003620051.tif 000010
【図１０】
0003620051.tif 000011
【図１１】
0003620051.tif 000012
【図１２】
0003620051.tif 000013
【図１３】
0003620051.tif 000014
【図１４】
0003620051.tif 000015
【図１５】
0003620051.tif 000016
【図１６】
0003620051.tif 000017
【図１７】
0003620051.tif 000018
【図１８】
0003620051.tif 000019
【図１９】
0003620051.tif 000020
【図２０】
0003620051.tif 000021
【図２１】
0003620051.tif 000022
【図２２】
0003620051.tif 000023
【図２３】
0003620051.tif 000024
【図２４】
0003620051.tif 000025
【図２５】
0003620051.tif 000026
【図２６】
0003620051.tif 000027
【図２７】
0003620051.tif 000028
【図２８】
0003620051.tif 000029