(57)【特許請求の範囲】
【請求項１】
エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、
上記下流酸素センサの出力値をモニタするモニタ手段と、
エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、
上記下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測する応答時間計測手段と、
上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とするエンジンの触媒下流酸素センサの劣化診断装置。
【請求項２】
エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、
上記下流酸素センサの出力値をモニタするモニタ手段と、
エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、
上記下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測する応答時間計測手段と、
上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とするエンジンの触媒下流酸素センサの劣化診断装置。
【請求項３】
エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、
上記下流酸素センサの出力値をモニタするモニタ手段と、
エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、
上記下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測し、今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新する応答時間計測手段と、
上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とするエンジンの触媒下流酸素センサの劣化診断装置。
【請求項４】
エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、
上記下流酸素センサの出力値をモニタするモニタ手段と、
エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、
上記下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測し、今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新する応答時間計測手段と、
上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とするエンジンの触媒下流酸素センサの劣化診断装置。
【請求項５】
上記燃料カットは、減速時燃料カットであることを特徴とする請求項１ないし請求項４の何れかに記載のエンジンの触媒下流酸素センサの劣化診断装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エンジンの触媒下流に配設した下流酸素センサの劣化を診断する触媒下流酸素センサの劣化診断装置に関し、詳しくは上記下流酸素センサに対する劣化診断を早期且つ正確に行い得るエンジンの触媒下流酸素センサの劣化診断装置に関する。
【０００２】
【従来の技術】
従来から、特開昭６２−２９７３８号公報等に示されるように、エンジンの空燃比制御として排気系に介装した触媒の上流と下流とに酸素センサをそれぞれ配設し、触媒の上流に配設した上流酸素センサ（以下「ＦＯ２  センサ」と略称する）の出力値に基づいて設定した空燃比フィードバック補正係数を、触媒の下流に配設した下流酸素センサ（以下「ＲＯ２  センサ」と略称する）の出力値に基づいて補正して空燃比の適正化を図ると共に、両Ｏ２  センサの出力を比較することで触媒の劣化を診断する、いわゆるデュアルＯ２  センサ制御（ＤＯＳ制御）が知られている。
【０００３】
ところで、各Ｏ２  センサが劣化するとＯ２  センサの応答性が悪化し適正な空燃比制御が損なわれ、また触媒に対する劣化診断も診断精度が低下するため、Ｏ２  センサの劣化診断を行う必要がある。ＦＯ２  センサは触媒上流に配設されておりエンジンから排出される排気ガス中の酸素濃度を直接的に検出するため、エンジンの空燃比変動に対して直ちに反応し、この反応状態をＦＯ２  センサの出力をモニタすることで、ＦＯ２  センサの劣化については比較的容易に検出することができる。しかし、ＲＯ２  センサでは、触媒通過後の排気ガス中の酸素濃度を検出するため、エンジンに空燃比変動が生じてもその空燃比変動が触媒の酸化、還元反応による酸素吸脱、触媒のストレージ効果によりなまされてしまい、エンジンの空燃比変動に対するＲＯ２  センサの反応状態からＲＯ２  センサ自体の劣化を検出することは困難である。
【０００４】
そのため、空燃比が確実に変動し且つ空燃比変動の大きい燃料カット時におけるＲＯ２  センサの出力値の変化から該ＲＯ２  センサの劣化を検出する技術が種々提案されている。例えば特開平５−５４４７号公報では、空燃比フィードバック制御が行われていない燃料増量の実施中に、燃料カットによりエンジンへの燃料供給が停止されたとき、ＲＯ２  センサの出力値をモニタし、ＲＯ２  センサの出力値が所定レベルをリッチ側からリーン側に横切った時点からの経過期間を測定し、この経過期間が所定期間に達したときのＲＯ２  センサの出力値が上記所定レベルよりもリーン側に設定された第１の判定レベルよりもリッチ側のとき、或いはＲＯ２  センサの出力値が上記第１のレベルに達するまでに上記経過期間が所定期間を経過しているとき、ＲＯ２  センサ劣化と判別し、下流酸素センサリッチ状態でエンジンへの燃料供給が停止されたときに下流酸素センサ出力値が所定レベルをリッチ側からリーン側に横切った時点からの経過期間を劣化判別に用いることで、ＲＯ２  センサ劣化に伴う応答遅れを確実に検出して劣化検出精度を向上すると共に、ＲＯ２  センサ出力のみを用いＦＯ２  センサの劣化の有無に拘らず確実にＲＯ２  センサの劣化を検出する技術が開示されている。
【０００５】
【発明が解決しようとする課題】
しかし、上記先行例によるＲＯ２  センサの劣化診断では、触媒の酸素吸脱能力が高い場合において燃料増量期間が長く、しかも燃料カット時間が短い条件下では、ＲＯ２  センサが正常であっても、ＲＯ２  センサの出力はリーン側へ十分反応せず、リッチ出力のまま或いは緩やかな反応を示すため、ＲＯ２  センサ劣化と誤診断する虞がある。
【０００６】
また、劣化診断開始条件が燃料増量の実施中での燃料供給停止と限定されるため、診断機会が極端に少なくなり、早期に劣化診断結果を得ることができない。
【０００７】
本発明は上記事情に鑑み、触媒の酸素吸脱能力が高い場合でも下流酸素センサの応答遅れを正確に検出することができ、しかも診断の機会を増加させて、下流酸素センサの劣化を早期且つ正確に検出することが可能なエンジンの触媒下流酸素センサの劣化診断装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するため請求項１記載の発明は、エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、図１の基本構成図に示すように、上記下流酸素センサの出力値をモニタするモニタ手段と、エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、上記下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測する応答時間計測手段と、上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とする。
【００１１】
請求項２記載の発明は、エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、上記下流酸素センサの出力値をモニタするモニタ手段と、エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、上記下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測する応答時間計測手段と、上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とする。
【００１２】
請求項３記載の発明は、エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、上記下流酸素センサの出力値をモニタするモニタ手段と、エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、上記下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測し、今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新する応答時間計測手段と、上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とする。
【００１３】
請求項４記載の発明は、エンジン排気系に介装される触媒の下流に配設した下流酸素センサの劣化を該下流酸素センサの出力値に基づき検出するエンジンの触媒下流酸素センサの劣化診断装置において、上記下流酸素センサの出力値をモニタするモニタ手段と、エンジン運転状態に応じ燃料カット条件が成立したとき燃料カットを行う燃料カット手段と、上記下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測し、今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新する応答時間計測手段と、上記応答時間と予め設定した劣化判定値とを比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間に達したとき、上記応答時間計測手段による応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する下流酸素センサ劣化検証手段とを備えたことを特徴とする。
【００１４】
請求項５記載の発明は、上記請求項１ないし請求項４の何れかに記載の発明において、上記燃料カットは、減速時燃料カットであることを特徴とする。
【００１７】
すなわち、請求項１記載の発明では、触媒の下流に配設された下流酸素センサの出力値をモニタし、下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測すると共に、該応答時間を予め設定した劣化判定値と比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時して燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された最新の応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する。
【００１８】
請求項２記載の発明では、触媒の下流に配設された下流酸素センサの出力値をモニタし、下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測すると共に、該応答時間を予め設定した劣化判定値と比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時して燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された最新の応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定する。
【００１９】
請求項３記載の発明では、触媒の下流に配設された下流酸素センサの出力値をモニタし、下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測し今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新すると共に、該応答時間を予め設定した劣化判定値と比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時して燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する。
【００２０】
請求項４記載の発明では、触媒の下流に配設された下流酸素センサの出力値をモニタし、下流酸素センサの出力値が完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値で下流酸素センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値を下回ったとき、上記下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として計測し今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新すると共に、該応答時間を予め設定した劣化判定値と比較し、応答時間が劣化判定値以上のときに、上記下流酸素センサの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時して燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定する。
【００２１】
請求項５記載の発明では、上記請求項１ないし請求項４記載の発明において、上記燃料カットとして減速時燃料カットのみを採用する。
【００２２】
【発明の実施の形態】
以下、図面を参照して本発明の実施の一形態を説明する。
【００２３】
先ず、図９に基づきエンジンの全体概略について説明する。同図において符号１はエンジンであり、本実施の形態においては水平対向４気筒型エンジンである。このエンジン１のシリンダヘッド２に形成された各吸気ポート２ａにインテークマニホールド３が連通され、このインテークマニホールド３に各気筒の吸気通路が集合するエアチャンバ４を介してスロットルチャンバ５が連通され、このスロットルチャンバ５上流側に吸気管６を介してエアクリーナ７が取付けられている。
【００２４】
また、上記吸気管６の上記エアクリーナ７の直下流に、例えばホットワイヤ式あるいはホットフィルム式等の吸入空気量センサ８が介装され、さらに、上記スロットルチャンバ５に設けられたスロットル弁５ａに、スロットル開度に応じた電圧を出力するスロットル開度センサ９ａとスロットル弁全閉でＯＮするアイドルスイッチ９ｂとを内蔵したスロットルセンサ９が連設されている。
【００２５】
また、上記スロットル弁５ａの上流側と下流側とを連通するバイパス通路１０に、アイドル回転数制御バルブ（アイドルスピードコントロールバルブ；ＩＳＣバルブ）１１が介装されている。さらに上記インテークマニホールド３の各気筒の各吸気ポート２ａの直上流側にインジェクタ１２が臨まされ、上記シリンダヘッド２には、先端を燃焼室に露呈する点火プラグ１３が各気筒毎に取付けられている。各点火プラグ１３には点火コイル１４がそれぞれ連設され、点火コイル１４にイグナイタ１５が接続されている。
【００２６】
上記インジェクタ１２は燃料供給路１６を介して燃料タンク１７に連通されており、この燃料タンク１７内にはインタンク式の燃料ポンプ１８が設けられている。この燃料ポンプ１８からの燃料は、上記燃料供給路１６に介装された燃料フィルタ１９を経て上記インジェクタ１２及びプレッシャレギュレータ２０に圧送され、このプレッシャレギュレータ２０から上記燃料タンク１７にリターンされて上記インジェクタ１２への燃料圧力が所定の圧力に調圧される。
【００２７】
また、エンジン１のシリンダブロック１ａにノックセンサ２１が取付けられると共に、シリンダブロック１ａの左右バンクを連通する冷却水通路２２に冷却水温センサ２３が臨まされている。さらに、エンジン１の排気系としては、上記シリンダヘッド２の各排気ポート２ｂに連通する排気マニホールド２４の集合部にフロント触媒２５ａが配設され、該フロント触媒２５ａの直下流にリア触媒２５ｂが介装されている。そして、上記フロント触媒２５ａの上流に上流酸素センサ（ＦＯ２  センサ）２６ａが、リア触媒２５ｂの下流に下流酸素センサ（ＲＯ２  センサ）２６ｂがそれぞれ配設されている。
【００２８】
また、上記シリンダブロック１ａに支承されたクランクシャフト２７にクランクロータ２８が軸着され、このクランクロータ２８の外周に所定のクランク角に対応する突起を検出する電磁ピックアップ等からなるクランク角センサ２９が対設され、さらに、上記クランクシャフト２７に対して１／２回転するカムシャフト３０に連設されたカムロータ３１に、電磁ピックアップ等からなる気筒判別用のカム角センサ３２が対設されている。上記クランクロータ２８は、その外周に突起が所定クランク角に対応して形成されており、後述する電子制御装置４０は、クランク角センサ２９で検出した突起すなわちクランク角信号の入力間隔時間からエンジン回転数を算出し、また、カム角センサによってカムロータ３１の外周に形成された気筒判別用の突起を検出したときの割り込み信号から気筒判別を行う。
【００２９】
上記インジェクタ１２、点火プラグ１３、ＩＳＣバルブ１１等の各アクチュエータに対する制御量の演算、制御信号の出力、すなわち燃料噴射制御、点火時期制御、アイドル回転数制御等のエンジン制御、並びに各センサ、各アクチュエータに対する故障診断は、図１０に示す電子制御装置４０により行われる。
【００３０】
電子制御装置４０は、ＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、バックアップＲＡＭ４４、及びＩ／Ｏインターフェイス４５がバスライン４６を介して互いに接続されるマイクロコンピュータを中心として構成され、その他、安定化電圧を各部に供給する定電圧回路４７、上記Ｉ／Ｏインターフェイス４５の出力ポートからの信号によりアクチュエータ類を駆動する駆動回路４８、センサ類からのアナログ信号をデジタル信号に変換するＡ／Ｄ変換器４９等の周辺回路が組込まれている。
【００３１】
上記定電圧回路４７は、電源リレー５０のリレー接点を介してバッテリ５１に接続され、バッテリ５１に、上記電源リレー５０のリレーコイルがイグニッションスイッチ５２を介して接続されている。また、上記定電圧回路４７は、直接、上記バッテリ５１に接続されており、上記イグニッションスイッチ５２がＯＮされて電源リレー５０のリレー接点が閉となると電子制御装置４０内の各部へ電源を供給する一方、上記イグニッションスイッチ５２のＯＮ，ＯＦＦに拘らず、常時、上記バックアップＲＡＭ４４にバックアップ用の電源を供給する。
【００３２】
また、上記Ｉ／Ｏインターフェイス４５の入力ポートには、アイドルスイッチ９ｂ、ノックセンサ２１、クランク角センサ２９、カム角センサ３２、及び車速センサ３３が接続されると共に、吸入空気量センサ８、スロットル開度センサ９ａ、冷却水温センサ２３、ＦＯ２  センサ２６ａ、及びＲＯ２  センサ２６ｂが上記Ａ／Ｄ変換器４９を介して接続され、さらに、上記Ａ／Ｄ変換器４９に上記バッテリ５１からの電圧ＶＢ  が入力されてモニタされる。
【００３３】
一方、上記Ｉ／Ｏインターフェイス４５の出力ポートには、イグナイタ１５が接続されると共に、上記駆動回路４８を介して、ＩＳＣバルブ１１、インジェクタ１２、及び、図示しないインストルメントパネルに配設され、各種警報を集中して表示するＭＩＬランプ５３が接続されている。
【００３４】
上記ＲＯＭ４２には、エンジン制御プログラムや各種の故障診断プログラム、マップ類等の固定データが記憶されており、また、上記ＲＡＭ４３には、上記各センサ類、スイッチ類の出力信号を処理した後のデータ、及び上記ＣＰＵ４１で演算処理したデータが格納される。また、上記バックアップＲＡＭ４４には、各種学習マップ等がストアされ、上記イグニッションスイッチ５２のＯＦＦのときにもデータが保持されるようになっている。
【００３５】
上記ＣＰＵ４１では上記ＲＯＭ４２に記憶されている制御プログラムに従って、各センサ、スイッチ類により検出される運転状態に応じて燃料噴射量、点火時期、ＩＳＣバルブ１１に対する駆動信号のデューティ比等を演算し、空燃比フィードバック制御を含む燃料噴射制御、点火時期制御、アイドル回転数制御等の各種エンジン制御を行う。
【００３６】
さらに、上記電子制御装置４０（上記ＣＰＵ４１を中心とするマイクロコンピュータ）は、下流酸素センサ（ＲＯ２  センサ）２６ｂを含む各センサ類、スイッチ類、アクチュエータ類等の劣化診断を含む故障診断を行う故障診断機能（いわゆる自己診断機能）を有しており、この故障診断機能によって検出された故障部位及び故障内容を示すトラブルデータ（後述するＲＯ２  センサ２６ｂの劣化を示す下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  を含む）が、上記バックアップＲＡＭ４４にストアされる。
【００３７】
尚、上記トラブルデータは、電子制御装置４０にシリアルモニタ（車輌診断装置）６０をコネクタ５４を介して接続することで外部に読み出すことができ、また、このシリアルモニタ６０によってバックアップＲＡＭ４４にストアされているトラブルデータをクリア（イニシャルセット）することができる。このシリアルモニタ６０は本出願人による特開平２−７３１３１号公報、特公平７−７６７３０号公報等に詳述されている。
【００３８】
上記電子制御装置４０は、本願発明の主要旨とするモニタ手段、燃料カット手段、応答時間計測手段、及び下流酸素センサ劣化検証手段としての機能を有し、下流酸素センサ（ＲＯ２  センサ）２６ｂに対する劣化診断を行い、ＲＯ２  センサ２６の劣化と確定されるときには、警告手段としてのＭＩＬランプ５３を点灯（或いは点滅）し、運転者に警告を発する。
【００３９】
具体的には、イグニッションスイッチ５２のＯＮにより電子制御装置４０に電源が投入されると、システムイニシャライズによりＲＡＭ４３に格納される各データ、フラグ値がクリア或いは初期値設定され（バックアップＲＡＭ４４に格納されている各データ、フラグ値は除く）、システムイニシャライズ後、図２〜図６に示す各ルーチンが所定周期毎（所定時間毎或いは所定クランク角毎）に実行されることで上記各機能手段が実現される。尚、図２〜図６の各ルーチンに示す各データ、フラグ値は、固定データ、バックアップＲＡＭ４４にストアされるデータ、フラグ値、及び特記されるもの以外は、システムイニシャライズ時にクリアされる。
【００４０】
そして、図２に示す空燃比フィードバック補正係数設定ルーチンにおいてＦＯ２  センサ２６ａ及びＲＯ２  センサ２６ｂの活性を判断し、各Ｏ２  センサ２６ａ，２６ｂの活性状態に応じてＲＯ２  センサ２６ｂに対する劣化診断条件を定める各フラグＦＣＬＳ  ，ＦＲＯ２ＯＫ  をセット・クリアすると共に、各Ｏ２  センサ２６ａ，２６ｂの活性状態、運転状態に応じて空燃比フィードバック補正係数λを設定する。また、図４に示す燃料カット判別ルーチンにより燃料カットを指示する燃料カットフラグＦＣＵＴ  を運転状態に応じてセット・クリアすると共に、ＲＯ２  センサ２６ｂに対する劣化診断を減速燃料カット時にのみ行わせるため、減速燃料カット状態に応じ減速時燃料カット判別フラグＦＣＦＣ  がセット・クリアされる。上記空燃比フィードバック補正係数λ及び燃料カットフラグＦＣＵＴ  は、図３に示す燃料噴射量設定ルーチンにおいて読み込まれ、エンジン運転状態に基づいて設定する燃料噴射量を上記空燃比フィードバック補正係数で空燃比補正して、エンジンの各気筒へ供給する最終的な燃料噴射量を定める燃料噴射パルス幅Ｔｉを設定すると共に、燃料カットフラグＦＣＵＴ  の値を参照し、燃料カットが指示されているときには燃料カットを行う。
【００４１】
また、図５に示す下流酸素センサ応答時間計測ルーチンにおいて、上記フラグＦＣＬＳ  ，ＦＲＯ２ＯＫ  の値に応じて図６の下流酸素センサ劣化診断ルーチンにおいて設定される診断条件成立フラグＦＲＯＲＤＳ  を参照し、両Ｏ２  センサ２６ａ，２６ｂが共に活性で診断条件成立フラグＦＲＯＲＤＳ  がセットされているとき、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  をモニタして、燃料カットの有無に拘らずＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリッチ側の出力値であることを示す第１のリッチ側設定値ＲＳＬＤＨ１以上の状態から低下し、第１のリッチ側設定値ＲＳＬＤＨ１よりも低い第２のリッチ側設定値ＲＳＬＤＨ２を横切り、さらに第２のリーン側設定値ＲＳＬＤＬ２を横切って該第２のリーン側設定値ＲＳＬＤＬ２よりも低い値でＲＯ２  センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値ＲＳＬＤＬ１を下回ったとき、上記ＲＯ２  センサの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行した間の時間を該ＲＯ２  センサ２６ｂの応答時間として応答時間計測用カウント値ＴＭＲＯＲ  により計測し、応答時間計測用カウント値ＴＭＲＯＲ  の値がＲＡＭ４３に記憶されている応答時間ＲＯＲＲＬよりも小さいとき該応答時間ＲＯＲＲＬを上記応答時間計測用カウント値ＴＭＲＯＲ  により更新する。
【００４２】
そして、図６に示す下流酸素センサ劣化診断ルーチンにおいて上記各フラグＦＣＬＳ  ，ＦＲＯ２ＯＫ  ，ＦＣＦＣ  の値を参照し、両Ｏ２  センサ２６ａ，２６ｂが共に活性のとき、上記応答時間ＲＯＲＲＬと予め設定した劣化判定値ＮＧＴＩＭとを比較し、応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上のときに、ＲＯ２  センサ２６ｂの劣化と判断し、燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値ＴＣＦＣ以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間ＡＴＣＦＣに達したとき、再度、最新の応答時間ＲＯＲＲＬを読み出して予め設定した劣化判定値ＮＧＴＩＭと比較し、該応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上で且つ応答時間ＲＯＲＲＬの更新が行われているときＲＯ２  センサ２６ｂの劣化と確定する。
【００４３】
以下、上記電子制御装置４０によるＲＯ２  センサ２６ｂの故障診断に係わる処理に先立ち、故障診断条件を判定するための各フラグを設定する処理について説明する。
【００４４】
図２に示す空燃比フィードバック補正係数設定ルーチンは、所定時間毎に実行され、先ず、ステップＳ１で、空燃比フィードバック（クローズドループ）条件が成立しているか否かを判断する。この空燃比フィードバック条件は、ＦＯ２  センサ２６ａが活性状態のとき空燃比フィードバック条件成立と判断するもので、ＦＯ２  センサ２６ａの出力値が設定値以上、或いは所定範囲内の状態が設定時間以上継続し、且つ冷却水温Ｔｗが所定温度（例えば２２℃）以上のときＦＯ２  センサ２６ａが活性していると判断し、ステップＳ２へ進み、クローズドループ成立フラグＦＣＬＳ  をセットする（ＦＣＬＳ  ←１）。従って、このクローズドループ成立フラグＦＣＬＳ  は、ＦＯ２  センサ２６ａの活性状態を表し、ＦＯ２  センサ２６ａの活性状態下においては燃料カット中のオープンループ制御中のときにもセットされており、後述する図５の下流酸素センサ応答時間計測ルーチン、及び図６の下流酸素センサ劣化診断ルーチンにおいて間接的に或いは直接的に参照され、ＲＯ２  センサ２６ｂの応答時間計測の条件、及びＲＯ２  センサ２６ｂに対する診断条件の一つとして採用される。
【００４５】
一方、上記ステップＳ１においてＦＯ２  センサ２６ａが不活性状態のときには、ステップＳ９へ分岐し、クローズドループ成立フラグＦＣＬＳ  をクリアして（ＦＣＬＳ  ←０）、ステップＳ１０で、空燃比フィードバック補正係数λを設定し、ルーチンを抜ける。ここで、ＦＯ２  センサ２６ａ不活性時の上記ステップＳ１０における空燃比フィードバック補正係数λの設定は、空燃比フィードバック補正係数を１．０にクランプして空燃比制御をオープンループ制御とする。
【００４６】
続くステップＳ３では、クランプ条件を判断する。燃料カット中、スロットル全開増量補正等のクランプ条件か否かを判断し、クランプ条件のときには、上記ステップＳ１０へ分岐して空燃比フィードバック補正係数λを設定してルーチンを抜ける。クランプ条件成立時のステップＳ１０における空燃比フィードバック補正係数λの設定は、該空燃比フィードバック補正係数λをクランプ条件に応じて予め設定される値にクランプして、同様に空燃比制御をオープンループ制御とする。
【００４７】
上記ステップＳ３で、通常運転によりクランプ条件非成立時には、ステップＳ４へ進み、ＲＯ２  センサ２６ｂが活性状態か否かを該ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  により判断し、ＲＯ２  センサ２６ｂが活性のときには、ステップＳ５へ進んで、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  をセットする（ＦＲＯ２ＯＫ  ←１）。従って、このデュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  は、ＲＯ２  センサ２６ｂの活性状態を表し、上記クローズドループ成立フラグＦＣＬＳ  と共に、図５の下流酸素センサ応答時間計測ルーチン、及び図６の下流酸素センサ劣化診断ルーチンにおいて間接的に或いは直接的に参照され、ＲＯ２  センサ２６ｂの応答時間計測の条件、及びＲＯ２  センサ２６ｂに対する診断条件の一つとして採用され、両Ｏ２  センサ２６ａ，２６ｂが共に活性状態のときに、ＲＯ２  センサ２６ｂの応答時間の計測、並びにＲＯ２  センサ２６ｂに対する劣化診断が実行される。逆に云えば、ＲＯ２  センサ２６ｂの不活性時には、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が小さく、この出力値ＲＶＯ２  がリッチ側設定値以上になることはなく、ＲＯ２  センサ２６ｂの応答時間（ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行するまでの時間）を計測することができず、このときには、ＲＯ２  センサ２６ｂの応答時間、並びにこの応答時間に基づくＲＯ２  センサ２６ｂに対する劣化診断を中止するのである。
【００４８】
両Ｏ２  センサ２６ａ，２６ｂの活性時、続くステップＳ６では、ＦＯ２  センサ２６ａ及びＲＯ２  センサ２６ｂの両出力値ＦＶＯ２  ，ＲＶＯ２  を共に用いたデュアルＯ２  センサ制御（ＤＯＳ制御）により空燃比フィードバック補正係数λを設定し、ルーチンを抜ける。このＤＯＳ制御は、ＦＯ２  センサ２６ａの出力値ＦＶＯ２  に基づいて設定した空燃比フィードバック補正係数を、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  に基づいて補正して空燃比の適正化を図るものであり、本出願人による特願平７−５２７４２号、或いは特開昭６２−２９７３８号公報等に詳述されている。
【００４９】
また、上記ステップＳ４においてＲＯ２  センサ２６ｂの不活性時には、ステップＳ７へ進み、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  をクリアし（ＦＲＯ２ＯＫ  ←１）、ステップＳ８で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  を用いることなくＦＯ２  センサ２６ｂの出力値ＦＶＯ２  のみを用い周知の比例積分制御（ＰＩ制御）によって空燃比フィードバック補正係数λを設定して、ルーチンを抜ける。
【００５０】
上記空燃比フィードバック補正係数λは、図３に示す燃料噴射量設定ルーチンにおいて燃料噴射量を定める燃料噴射パルス幅Ｔｉを設定する際に用いられる。
【００５１】
次に、燃料噴射量設定ルーチンについて、図３に基づき説明する。この燃料噴射量設定ルーチンは、所定クランク角周期毎に実行され、気筒毎に燃料噴射量としての燃料噴射パルス幅Ｔｉが設定される。先ず、ステップＳ２１で、エンジン回転数ＮＥ  と吸入空気量センサ８からの出力信号に基づく吸入空気量Ｑとから、基本燃料噴射量を定める基本燃料噴射パルス幅Ｔｐを算出し（Ｔｐ←Ｋ×Ｑ／ＮＥ  ；Ｋ…インジェクタ特性補正定数）、ステップＳ２２で、上記空燃比フィードバック補正係数設定ルーチンにおいて設定されＲＡＭ４３の所定アドレスにストアされている空燃比フィードバック補正係数λを読み出す。
【００５２】
次にステップＳ２３へ進み、水温センサ２３による冷却水温、スロットル開度センサ９ａによるスロットル開度、アイドルスイッチ９ｂからのアイドル出力等に基づいて、冷却水温補正、加減速補正、全開増量補正、アイドル後増量補正等に係わる各種増量分補正係数ＣＯＥＦを設定し、ステップＳ２４で、エンジン回転数ＮＥ  とエンジン負荷を表す基本燃料噴射パルス幅Ｔｐとに基づいて、吸入空気量センサ等の吸入空気量計測系やインジェクタ等の燃料供給系の生産時のばらつきや経時変化による空燃比のずれ等を学習した結果が記憶されるバックアップＲＡＭ４４の空燃比学習マップを参照して学習値ＫＬＲを検索し、補間計算により空燃比学習補正係数ＫＢＬＲＣを設定する。
【００５３】
続くステップＳ２５では、バッテリ５１の端子電圧ＶＢ  に基づいてインジェクタ１２の無効噴射時間を補間する電圧補正係数Ｔｓを設定し、ステップＳ２６で、ＲＡＭ４３の所定アドレスから燃料カットフラグＦＣＵＴ  を読み出すと、ステップＳ２７で燃料カットフラグＦＣＵＴ  の値を参照して燃料カットが指示されているか否かを調べる。
【００５４】
上記燃料カットフラグＦＣＵＴ  は、減速時、過回転時、車速制限時等の運転条件下で燃料カットを指示するためのフラグであり、後述する燃料カット判別ルーチンにおいて運転状態に応じてセット・クリアされる。従って、上記ステップＳ２７においてＦＣＵＴ  ＝０であり、燃料カットが指示されていないときには、ステップＳ２８で燃料カット係数ＫＦＣを１．０にセットして（ＫＦＣ←１．０）、ステップＳ３０へ進み、ＦＣＵＴ  ＝１で燃料カットが指示されているときには、ステップＳ２９で燃料カット係数ＫＦＣを０にクリアして（ＫＦＣ←０）ステップＳ３０へ進む。ステップＳ３０では、上記ステップＳ２１で算出した基本燃料噴射パルス幅Ｔｐに、上記ステップＳ２２で読み出した空燃比フィードバック補正係数λ及び上記ステップＳ２３で設定した各種増量分補正係数ＣＯＥＦを乗算して空燃比補正すると共に、上記ステップＳ２４で設定した空燃比学習補正係数ＫＢＬＲＣを乗算して学習補正し、さらに、上記ステップＳ２８或いはステップＳ２９でセットした燃料カット係数ＫＦＣを乗算した後、上記ステップＳ２５で設定した電圧補正係数Ｔｓを加算して電圧補正し、最終的な燃料噴射量を定める燃料噴射パルス幅Ｔｉを算出し（Ｔｉ←Ｔｐ×λ×ＣＯＥＦ×ＫＢＬＲＣ×ＫＦＣ＋Ｔｓ）、該燃料噴射パルス幅ＴｉをステップＳ３１でセットしてルーチンを抜ける。
【００５５】
その結果、燃料カット係数ＫＦＣがＫＦＣ＝１．０のときには、燃料噴射パルス幅Ｔｉの駆動パルス信号が所定タイミングで該当気筒のインジェクタ１２に出力されて燃料噴射パルス幅Ｔｉに相応する量の燃料が噴射される。一方、燃料カット係数ＫＦＣがＫＦＣ＝０のときには、燃料噴射パルス幅ＴｉがＴｉ＝Ｔｓとなって実質的にインジェクタ１２の駆動が停止され、燃料カットが実行されてエンジンへの燃料供給が停止される。そして、減速燃料カット時のみ後述する下流酸素センサ劣化診断ルーチンにおいてＲＯ２  センサ２６ｂに対する劣化診断の確定が行われる。
【００５６】
以上の燃料噴射制御による運転状態下では図４の燃料カット判別ルーチンが所定時間毎に実行され、燃料カットを指示する燃料カットフラグＦＣＵＴ  が減速時、エンジン過回転時、最高車速制限時等の運転状態に応じてセット・クリアされると共に、ＲＯ２  センサ２６ｂに対する劣化診断の確定を減速燃料カット時にのみ行わせるため、減速燃料カット状態に応じ減速時燃料カット判別フラグＦＣＦＣ  がセット・クリアされる。
【００５７】
この燃料カット判別ルーチンでは、ステップＳ４１ないしステップＳ４４で減速時燃料カット条件成立か否かを判断する。すなわち、車速センサ３３により検出した車速ＶＳＰを読込み、車速ＶＳＰが設定値ＶＳＰＳ  （例えば１６ｋｍ／ｈ）以上（ステップＳ４１）、且つアイドルスイッチ９ｂがＯＮのスロットル弁全閉（ステップＳ４３）、且つエンジン回転数ＮＥ  が設定回転数ＮＥＳ（例えば冷却水温、エアコン作動状態に応じて可変設定され、低水温のエンジン冷態時には２６００ｒｐｍ  、水温の上昇に応じ漸次低下され、エンジン暖機完了後は１６００ｒｐｍ  、またエアコンスイッチＯＮのエアコン使用時には設定回転数が若干アップされる）以上（ステップＳ４４）の車輌減速時、或いは、車輌停車状態（ステップＳ４２；ＶＳＰ＝０ｋｍ／ｈ）であって、且つアイドルスイッチ９ｂがＯＮのスロットル弁全閉（ステップＳ４３）、且つエンジン回転数ＮＥ  が設定回転数ＮＥＳ以上（ステップＳ４４）のエンジン減速要求時に、減速燃料カット条件成立と判断し、ステップＳ４５へ進み、減速時燃料カット判別フラグＦＣＦＣ  をセットし（ＦＣＦＣ  ←１）、ステップＳ４６で燃料カットフラグＦＣＵＴ  をセットして（ＦＣＵＴ  ←１）、ルーチンを抜ける。
【００５８】
一方、ステップＳ４１ないしステップＳ４４で、減速燃料カット条件の非成立時には、ステップＳ４７へ進み、減速時燃料カット判別フラグＦＣＦＣ  をクリアし（ＦＣＦＣ  ←０）、ステップＳ４８で、エンジン回転数ＮＥ  とエンジン過回転防止設定回転数ＮＥＯＶ  （例えば７５００ｒｐｍ  ）とを比較し、ＮＥ  ≧ＮＥＯＶ  のエンジン過回転時には上記ステップＳ４６へ進み、燃料カットによりエンジン回転数ＮＥ  を低下させるべく燃料カットフラグＦＣＵＴ  をセットして、ルーチンを抜け、ＮＥ  ＜ＮＥＯＶ  のときには、ステップＳ４９へ進み、車速ＶＳＰが最高車速制限値ＶＳＰＨ  （１８０ｋｍ／ｈ）以上か否かを判断し、ＶＳＰ≧ＶＳＰＨ  の最高車速制限時には、同様にステップＳ４６へ進み、燃料カットにより車速ＶＳＰを制限すべく燃料カットフラグＦＣＵＴ  をセットして、ルーチンを抜ける。また、ＶＳＰ＜ＶＳＰＨ  のときには、ステップＳ５０へ進み、燃料カットフラグＦＣＵＴ  をクリアしてルーチンを抜ける。従って、減速時、エンジン過回転時、車速制限時等の運転条件下では燃料カットフラグＦＣＵＴ  がセットされることで、前述の燃料噴射量設定ルーチンによって燃料カットが実行される。
【００５９】
ここで、減速燃料カット時にのみＲＯ２  センサ２６ｂに対する劣化診断の確定を行わせるため減速時燃料カット判別フラグＦＣＦＣ  を採用し、エンジン過回転時、最高車速制限時の燃料カットを除外するのは、エンジン過回転時燃料カット、或いは最高車速制限時燃料カットはエンジン回転数ＮＥ  、或いは車速ＶＳＰが低下すれば直ちに燃料カットリカバされてエンジンへの燃料供給が再開されるため、燃料カット時間が極めて短く、燃料カットが実行されても触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果により、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  はリーン側へ十分反応せず、正確なＲＯ２  センサ２６ｂの劣化診断の確定を行うことができないためである。
【００６０】
従って、燃料カット時間が比較的長く、且つ比較的頻繁に生じる減速燃料カット時にのみＲＯ２  センサ２６ｂに対する劣化診断の確定を行うことにより、正確なＲＯ２  センサ２６ｂの劣化診断を、早期に行い得る。
【００６１】
以上の減速時燃料カット判別フラグＦＣＦＣ  、及び上述のクローズドループ成立フラグＦＣＬＳ  、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  は、図６の下流酸素センサ劣化診断ルーチンにおいて参照され、クローズドループ成立フラグＦＣＬＳ  、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  が共にセットされ両Ｏ２  センサ２６ａ，２６ｂが共に活性状態のとき診断条件成立フラグＦＲＯＲＤＳ  をセットし、図５の下流酸素センサ応答時間計測ルーチンにおいて計測されたＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬを読み出し、この応答時間ＲＯＲＲＬと予め設定した劣化判定値ＮＧＴＩＭとを比較し、応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上のときに、ＲＯ２  センサ２６ｂの劣化と判断し、減速時燃料カットが行われたときにこの燃料カットの継続時間を計時し、燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値ＴＣＦＣ以上のときに、燃料カットリカバ後の時間を計時し、この燃料カットリカバ後の経過時間が設定時間ＡＴＣＦＣに達したとき、再度、最新の応答時間ＲＯＲＲＬを読み出して予め設定した劣化判定値ＮＧＴＩＭと比較し、該応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上のときＲＯ２  センサ２６ｂの劣化と確定する。
【００６２】
上記ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬは、図５に示す下流酸素センサ応答時間計測ルーチンにおいて計測され、上記診断条件成立フラグＦＲＯＲＤＳ  がセットされており、両Ｏ２  センサ２６ａ，２６ｂが共に活性のとき、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  をモニタして、燃料カットの有無に拘らずＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリッチ側の出力値であることを示す第１のリッチ側設定値ＲＳＬＤＨ１以上の状態から低下し、第１のリッチ側設定値ＲＳＬＤＨ１よりも低い第２のリッチ側設定値ＲＳＬＤＨ２を横切り、さらに第２のリーン側設定値ＲＳＬＤＬ２を横切って該第２のリーン側設定値ＲＳＬＤＬ２よりも低い値でＲＯ２  センサの出力値が完全にリーン側の出力値であることを示す第１のリーン側設定値ＲＳＬＤＬ１を下回ったとき、上記ＲＯ２  センサの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行した間の時間を該ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬとして計測する（図７参照）。
【００６３】
上記下流酸素センサ劣化診断ルーチン（図６）の説明に先立ち、下流酸素センサ応答時間計測ルーチンについて図５に基づき説明する。
【００６４】
下流酸素センサ応答時間計測ルーチンは、所定時間毎（１０ｍｓｅｃ毎）に実行され、ステップＳ６１で、診断終了フラグＦＲＯ２ＥＮＤの値を参照する。この診断終了フラグＦＲＯ２ＥＮＤは、図６の下流酸素センサ劣化診断ルーチンにおいてＲＯ２  センサ２６ｂに対する劣化診断結果が確定したとき診断終了を示すためセットされるものである。本実施の形態においては、１トリップ（１暖機運転サイクル）、すなわちイグニッションスイッチ５２がＯＮされてエンジン運転が開始され、各Ｏ２  センサ２６ａ，２６ｂが活性化すると共にエンジンの暖機が完了した状態で運転され、その後イグニッションスイッチ５２のＯＦＦによりエンジン停止されるまでの間に、図６の下流酸素センサ劣化診断ルーチンにおいてＲＯ２  センサ２６ｂに対する劣化診断結果が１回確定すれば、そのトリップにおけるＲＯ２  センサ２６ｂに対する劣化診断は終了する。従って、ＦＲＯ２ＥＮＤ＝１のときにはＲＯ２  センサ２６ｂに対する劣化診断結果が確定しているため、ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬを計測する必要がなく、このときにはそのままルーチンを抜ける。
【００６５】
一方、ＦＲＯ２ＥＮＤ＝０であり本トリップにおいて未だＲＯ２  センサ２６ｂに対する劣化診断結果が確定していないときには、ステップＳ６２へ進み、診断条件成立フラグＦＲＯＲＤＳ  の値を参照する。この診断条件成立フラグＦＲＯＲＤＳ  は、同様に図６の下流酸素センサ劣化診断ルーチンにおいて設定されるもので、上記クローズドループ成立フラグＦＣＬＳ  、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  が共にセットされ両Ｏ２  センサ２６ａ，２６ｂが共に活性状態のときにのみ、セットされる。
【００６６】
従って、ＦＲＯＲＤＳ  ＝０の少なくともＲＯ２  センサ２６ｂが不活性のときには、ＲＯ２  センサ２６ｂの応答時間を計測することなく、ステップＳ６３へ進み、第１の計測値有効フラグＦＲＯＲＣＮ  、第２の計測値有効フラグＦＲＯＲＣ、計測許可フラグＦＲＯＲＳＴ  をそれぞれクリアすると共に、ステップＳ６４で、応答時間計測用カウント値ＴＭＲＯＲ  及びＲＡＭ４３の所定アドレスに格納されるＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬをそれぞれ初期値ＩＮＩＴにより初期設定し、ルーチンを抜ける。
【００６７】
尚、上記初期値ＩＮＩＴは、上記応答時間計測用カウント値ＴＭＲＯＲ  の取り得る最大値であり、且つ上記応答時間ＲＯＲＲＬとしてＲＡＭ４３の所定アドレスに記憶可能な最大値に設定されている。
【００６８】
一方、ステップＳ６２でＦＲＯＲＤＳ  ＝１で、両Ｏ２  センサ２６ａ，２６ｂが共に活性のときには、ステップＳ６５以下でＲＯ２  センサ２６ｂの応答時間計測処理を行う。
【００６９】
ステップＳ６５では、ＲＯ２  センサ２６ｂの出力値（出力電圧）ＲＶＯ２  を読込み、第１のリッチ側設定値ＲＳＬＤＨ１と比較する。この第１のリッチ側設定値ＲＳＬＤＨ１は、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が確実にリッチを示していることを判断するために予め設定された値であり、ＲＶＯ２  ≧ＲＳＬＤＨ１でＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が確実にリッチを示しているときのみステップＳ６６へ進み、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行するまでの応答時間ＲＯＲＲＬの計測に備え、計測許可フラグＦＲＯＲＳＴ  をセットし、ステップＳ６７で、応答時間計測用カウント値ＴＭＲＯＲ  をクリアすると共に、ステップＳ６８で、第１の計測値有効フラグＦＲＯＲＣＮ  をセットし、第２の計測値有効フラグＦＲＯＲＣをクリアして、ルーチンを抜ける。
【００７０】
上記第１の計測値有効フラグＦＲＯＲＣＮ  及び第２の計測値有効フラグＦＲＯＲＣは、その各フラグ値の組合せによって、図７に示すように、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリッチ側設定値ＲＳＬＤＨ１以上で確実にリッチ側の値を示し、その後、第１のリッチ側設定値よりも若干低く設定されている第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切ったとき、ＲＯ２  センサ２６ｂの応答時間の計時を開始させ、その後さらにＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下して、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリーン側に移行したかを判断すべく設定されている第１のリーン側設定値ＲＳＬＤＬ１より若干高く設定された第２のリーン側設定値ＲＳＬＤＬ２を、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  がリッチ側からリーン側に横切ったときに上記応答時間の計時の終了を判断させるためのものであり、これ以外のＲＯ２  センサ２６ｂの出力値ＲＶＯ２  の変化については上記応答時間の計測を無効とする。
【００７１】
一方、上記ステップＳ６５においてＲＶＯ２  ＜ＲＳＬＤＨ１のときには、ステップＳ６９へ進み、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  と上記第２のリッチ側設定値ＲＳＬＤＨ２とを比較し、ＲＶＯ２  ≧ＲＳＬＤＨ２のときには、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  は未だ第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切っていないため、ステップＳ７０へ進み、第２の計測値有効フラグＦＲＯＲＣをクリアして、ルーチンを抜ける。
【００７２】
また、ＲＶＯ２  ＜ＲＳＬＤＨ２のときには、ステップＳ７１へ進み、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  と第２のリーン側設定値ＲＳＬＤＬ２とを比較する。そして、ＲＶＯ２  ≧ＲＳＬＤＬ２のとき、すなわち、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２と第２のリーン側設定値ＲＳＬＤＬ２との間にあるときは、ステップＳ７２へ進み、上記計測許可フラグＦＲＯＲＳＴ  の値を参照して、応答時間の計測が許可されているかを判断する。上述のように計測許可フラグＦＲＯＲＳＴ  は、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリッチ側設定値ＲＳＬＤＨ１以上の完全にリッチ側にあるときにセットされる。従って、ステップＳ７２でＦＲＯＲＳＴ  ＝０のときには、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  は、完全にリッチ側の値を示した状態から低下したものではなく、このときには応答時間の計測を行うことなく、上記ステップＳ７０へジャンプしてルーチンを抜ける。
【００７３】
上記ステップＳ７２でＦＲＯＲＳＴ  ＝１の応答時間の計測が許可されているときには、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切ったことを示し、ステップＳ７３ないしステップＳ７６の処理によりＲＯ２  センサ２６ｂの応答時間の計測を行う。
【００７４】
ステップＳ７３では、第２の計測値有効フラグＦＲＯＲＣの値を参照し、ＦＲＯＲＣ＝１のときには、ステップＳ７４へ進み、第１の計測値有効フラグＦＲＯＲＣＮ  の値を参照する。ここで、第２の計測値有効フラグＦＲＯＲＣがクリア状態（ＦＲＯＲＣ＝０）、且つ第１の計測値有効フラグＦＲＯＲＣＮ  がセット状態（ＦＲＯＲＣＮ  ＝１）のときは、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った初回のルーチン実行時を表し（ステップＳ６８参照）、このときには、ＲＯ２  センサ２６ｂの応答時間の計測を開始するべくステップＳ７５へ進み、第１の計測値有効フラグＦＲＯＲＣＮ  をクリアすると共に第２の計測値有効フラグＦＲＯＲＣをセットし、ステップＳ７６で、応答時間計測用カウント値ＴＭＲＯＲ  をカウントアップして、ルーチンを抜ける。
【００７５】
そして、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った２回目以降のルーチン実行時には、第２の計測値有効フラグＦＲＯＲＣがセットされていることからステップＳ７３からステップＳ７６へジャンプし、応答時間計測用カウント値ＴＭＲＯＲ  をカウントアップして応答時間の計測を続行する。
【００７６】
尚、上記ステップＳ７４でＦＲＯＲＣＮ  ＝１のときには、ＲＯ２  センサ２６ｂの応答時間の計測条件が成立しないので、応答時間の計測は無効であり、ステップＳ７７へ分岐して、応答時間計測用カウント値ＴＭＲＯＲ  を初期値ＩＮＩＴにより設定し、ステップＳ７８で、第２の計測値有効フラグＦＲＯＲＣをクリアして、ルーチンを抜ける。
【００７７】
一方、上記ステップＳ７１においてＲＶＯ２  ＜ＲＳＬＤＬ２で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリーン側設定値を下回ったときには、ステップＳ７９へ進み、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  と第１のリーン側設定値ＲＳＬＤＬ１とを比較し、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリーン側の値となったかを判断し、ＲＶＯ２  ≧ＲＳＬＤＬ１で未だＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリーン側の値に収束していないと判断されるときは、上記応答時間計測用カウント値ＴＭＲＯＲ  を未だＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬとして採用せず、上記ステップＳ７８へジャンプし、第２の計測値有効フラグＦＲＯＲＣをクリアしてルーチンを抜ける。
【００７８】
また、上記ステップＳ７９においてＲＶＯ２  ＜ＲＳＬＤＬ１で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリーン側設定値を下回り完全にリーン側の値となったときには、ステップＳ８０へ進み、計測許可フラグＦＲＯＲＳＴ  の値を参照する。
【００７９】
ここで、計測許可フラグＦＲＯＲＳＴ  がセットされているときは（ＦＲＯＲＳＴ  ＝１）、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った後、さらに第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切り、第１のリーン側設定値ＲＳＬＤＬ１よりも低下して完全にリーン側の値を示した初回のルーチン実行時を表し、このときには、ステップＳ８１へ進み、計測許可フラグＦＲＯＲＳＴ  をクリアし、ステップＳ８２で、応答時間計測用カウント値ＴＭＲＯＲ  と、ＲＡＭ４３の所定アドレスにストアされているＲＯ２  センサ２６ｂの応答時間（記憶値）ＲＯＲＲＬとを比較する。
【００８０】
そして、ＴＭＲＯＲ  ＜ＲＯＲＲＬのときのみ、ステップＳ８３へ進み、ＲＡＭ４３の所定アドレスにストアされている応答時間ＲＯＲＲＬを応答時間計測用カウント値ＴＭＲＯＲ  により更新し、ステップＳ８４で、応答時間ＲＯＲＲＬを更新したことを示す応答時間更新済みフラグＦＲＯＮＥＷ  をセットして、ステップＳ８５へ進む。
【００８１】
ここで、上記応答時間ＲＯＲＲＬの初期値（ＩＮＩＴ）は、そのデータの取り得る最大値に設定されており、ＲＡＭ４３に格納されている応答時間ＲＯＲＲＬよりも応答時間計測用カウント値ＴＭＲＯＲ  の方が小さければ、このカウント値ＴＭＲＯＲ  により上記応答時間ＲＯＲＲＬが順次更新される。逆に云えばＲＯ２  センサ２６ｂの応答時間（記憶値）ＲＯＲＲＬは、１トリップ（１暖機運転サイクル）、すなわちイグニッションスイッチ５２がＯＮされてエンジン運転が開始され、各Ｏ２  センサ２６ａ，２６ｂが活性化すると共にエンジンの暖機が完了した状態で運転され、その後イグニッションスイッチ５２のＯＦＦによりエンジン停止されるまでにおける、その時点でのＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行するまでの時間の最小値が記憶されることになり、この値に基づきＲＯ２  センサ２６ｂの劣化診断が行われるため、ＲＯ２  センサ２６ｂの劣化以外の影響を排除して適正なＲＯ２  センサ２６ｂに対する劣化診断が可能となる。また、上記応答時間更新済みフラグＦＲＯＮＥＷ  は、図６の下流酸素センサ劣化診断ルーチンにおいて参照され、ＦＲＯＮＥＷ  ＝１で応答時間ＲＯＲＲＬの更新が行われたときにのみ、該応答時間ＲＯＲＲＬに基づくＲＯ２  センサ２６ｂに対する劣化判断結果が最終的に採用される。尚、注目すべき点は、本ルーチンにおけるＲＯ２  センサ２６ｂの応答時間の計測は、燃料カットの有無を計測条件として採用せず燃料カットの有無に拘らず、ＲＯ２  センサ２６ｂが活性化していれば常時行われる。これにより上記応答時間ＲＯＲＲＬが更新される機会が増して、ＲＯ２  センサ２６ｂに対する劣化診断の信頼性が向上する。
【００８２】
そして、次回の応答時間の計測に備え、ステップＳ８５で、応答時間計測用カウント値ＴＭＲＯＲ  をクリアし、ステップＳ８６で、第１の計測値有効フラグＦＲＯＲＣＮ  をセットすると共に第２の計測値有効フラグＦＲＯＲＣをクリアして、ルーチンを抜ける。
【００８３】
また、上記ステップＳ８２においてＴＭＲＯＲ  ≧ＲＯＲＲＬのときには、ＲＡＭ４３にストアされている応答時間ＲＯＲＲＬを更新することなく上記ステップＳ８５へジャンプし、上記ステップＳ８６を経てルーチンを抜ける。
【００８４】
一方、上記ステップＳ８０でＦＲＯＲＳＴ  ＝０の計測許可フラグＦＲＯＲＳＴ  がクリアされているときには、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリーン側設定値ＲＳＬＤＬ１を下回った２回目以降のルーチン実行時であり、応答時間ＲＯＲＲＬの更新は完了しているため、そのまま上記ステップＳ８５へジャンプし、ステップＳ８６を経てルーチンを抜ける。
【００８５】
以上の下流酸素センサ応答時間計測ルーチンによるＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測処理について、図８に示すタイムチャートに基づき具体的に説明する。
【００８６】
ＲＯ２  センサ２６ｂが活性状態であり、時間ｔ１  において、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリッチ側設定値ＲＳＬＤＨ１以上で完全にリッチ側の値を示しているとき、計測許可フラグＦＲＯＲＳＴ  がセットされると共に（ステップＳ６６）、第１の計測値有効フラグＦＲＯＲＣＮ  がセット、第２の計測値有効フラグＦＲＯＲＣがクリアされ（ステップＳ６８）、さらに、応答時間計測用カウント値ＴＭＲＯＲ  がクリアされ（ステップＳ６７）、ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬ（記憶値）の更新がエンジン運転開始後、未だ１回も行われていないときには応答時間更新済みフラグはクリア状態にある。この状態で燃料カット等により空燃比リーンとなり触媒２５ｂ下流の排気ガス中の酸素濃度に応じＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下し、時間ｔ２  において、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切ると、逆に第１の計測値有効フラグＦＲＯＲＣＮ  がクリア、第２の計測値有効フラグＦＲＯＲＣがセットされ（ステップＳ７５）、応答時間計測用カウント値のカウントアップ（ステップＳ７６）、すなわちＲＯ２  センサ２６ｂの応答時間の計時が開始される。
【００８７】
そして、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  がそのまま低下を続け、応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップがルーチン実行毎に行われ、時間ｔ３  で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切ると、上記応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップが停止し、第２の計測値有効フラグＦＲＯＲＣがクリアされる（ステップＳ７８）。この状態で時間ｔ４  においてＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリーン側設定値ＲＳＬＤＬ１以下となった時点で、計測許可フラグＦＲＯＲＳＴ  がクリアされ（ステップＳ８１）、このときＲＡＭ４３の所定アドレスにストアされている応答時間ＲＯＲＲＬよりも上記応答時間計測用カウント値ＴＭＲＯＲ  の方が小さければ、この応答時間計測用カウント値ＴＭＲＯＲ  によって応答時間（記憶値）ＲＯＲＲＬを更新し（ステップＳ８３）、応答時間更新が行われたことを示す応答時間計測済みフラグＦＲＯＮＥＷ  をセットする（ステップＳ８４）と共に、次回の応答時間の計測に備え、応答時間計測用カウント値ＴＭＲＯＲ  をクリア（ステップＳ８５）すると共に、第１の計測値有効フラグＦＲＯＲＣＮ  をセット、第２の計測値有効フラグＦＲＯＲＣをクリアする（ステップＳ８６）。
【００８８】
また、時間ｔ２  の経過後、同図の時間ｔ５  に示すように、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った後、そのまま低下することなく再び上昇し、第２のリッチ側設定値ＲＳＬＤＨ２以上となると、応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップが停止して、第２の計測値有効フラグＦＲＯＲＣがクリアされる（ステップＳ７０）。そして再度、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下し、時間ｔ６  において、第２のリッチ側設定値ＲＳＬＤＨ２を下回ると、第１，第２の計測値有効フラグＦＲＯＲＣＮ  ，ＦＲＯＲＣが共にクリア状態のため（ステップＳ７３，７４）、応答時間計測用カウント値ＴＭＲＯＲ  を初期値ＩＮＩＴにより最大値ＭＡＸに設定する（ステップＳ７７）。そして、この状態が保持され、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下を続け、時間ｔ７  で、第１のリーン側設定値ＲＳＬＤＬ１を下回った時点で、計測許可フラグＦＲＯＲＳＴ  がクリアされ（ステップＳ８１）、ＲＡＭ４３の所定アドレスにストアされている応答時間ＲＯＲＲＬと上記応答時間計測用カウント値ＴＭＲＯＲ  とが比較される（ステップＳ８２）。ここで、応答時間計測用カウント値ＴＭＲＯＲ  は、初期値ＩＮＩＴにより最大値ＭＡＸにて設定されているため、上記応答時間ＲＯＲＲＬよりも小さいことはなく、従って、このときにはＲＡＭ４３にストアされている応答時間ＲＯＲＲＬの更新は行われず、応答時間計測用カウント値ＴＭＲＯＲ  がクリアされ（ステップＳ８５）、第１の計測値有効フラグＦＲＯＲＣＮ  がセット、第２の計測値有効フラグＦＲＯＲＣがクリアされる（ステップＳ８６）。
【００８９】
そして、以後、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が上記第１のリッチ側設定値ＲＳＬＤＨ１以上となって完全にリッチ側の値を示すまでは、この状態が保持される（時間ｔ７  〜ｔ１０）。
【００９０】
空燃比のリッチに伴い触媒２５ｂ下流の酸素濃度に応じＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が上昇し、時間ｔ１０で、第１のリッチ側設定値ＲＳＬＤＨ１以上となると、計測許可フラグＦＲＯＲＳＴ  がセットされる（ステップＳ６６）。尚、このとき第１の計測値有効フラグＦＲＯＲＣＮ  がセット、第２の計測値有効フラグＦＲＯＲＣがクリアされ（ステップＳ６８）、さらに、応答時間計測用カウント値ＴＭＲＯＲ  がクリア（ステップＳ６７）されるが、これ以前において、同じ状態にセット或いはクリアされており、これら各フラグＦＲＯＲＣＮ  ，ＦＲＯＲＣ、カウント値ＴＭＲＯＲ  は実質的に変化しない。
【００９１】
そして、再び空燃比リーンとなり、触媒２５ｂ下流の排気ガス中の酸素濃度に応じＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下し、時間ｔ１１において、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切ると、第１の計測値有効フラグＦＲＯＲＣＮ  がクリア、第２の計測値有効フラグＦＲＯＲＣがセットされ（ステップＳ７５）、応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップ（ステップＳ７６）が開始される。さらに、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  がそのまま低下を続け、応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップがルーチン実行毎に行われ、時間ｔ１２で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切ると、上記応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップが停止し、第２の計測値有効フラグＦＲＯＲＣがクリアされる（ステップＳ７８）。
【００９２】
また、時間ｔ１２の経過後、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  がそのまま低下することなく再び上昇し、第２のリーン側設定値ＲＳＬＤＬ２以上となると、このとき第１，第２の計測値有効フラグＦＲＯＲＣＮ  ，ＦＲＯＲＣが共にクリア状態のため（ステップＳ７３，７４）、応答時間計測用カウント値ＴＭＲＯＲ  が初期値ＩＮＩＴにより最大値ＭＡＸに設定される（ステップＳ７７）。そして、この状態が保持され、再びＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が低下して、時間ｔ１４で、第１のリーン側設定値ＲＳＬＤＬ１を下回った時点で、計測許可フラグＦＲＯＲＳＴ  がクリアされ（ステップＳ８１）、ＲＡＭ４３の所定アドレスにストアされている応答時間ＲＯＲＲＬと上記応答時間計測用カウント値ＴＭＲＯＲ  とが比較される（ステップＳ８２）。ここで、応答時間計測用カウント値ＴＭＲＯＲ  は、初期値ＩＮＩＴにより最大値ＭＡＸにて設定されているため、上記応答時間ＲＯＲＲＬよりも小さいことはなく、従って、このときにはＲＡＭ４３にストアされている応答時間ＲＯＲＲＬの更新は行われず、応答時間計測用カウント値ＴＭＲＯＲ  がクリアされ（ステップＳ８５）、第１の計測値有効フラグＦＲＯＲＣＮ  がセット、第２の計測値有効フラグＦＲＯＲＣがクリアされる（ステップＳ８６）。
【００９３】
従って、本実施の形態においては、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、第１のリッチ側設定値ＲＳＬＤＨ１以上の完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った後、そのまま低下を続け、第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切り、第１のリーン側設定値ＲＳＬＤＬ１よりも低下して完全にリーン側の値を示さない限りはＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの更新は行われず、これ以外のときは応答時間の計測は無効となり、適正且つ確実にＲＯ２  センサ２６ｂの応答時間が計測されることになる。
【００９４】
次に、図６に基づき下流酸素センサ劣化診断ルーチンについて説明する。
【００９５】
下流酸素センサ劣化診断ルーチンは、所定時間毎（５０ｍｓｅｃ毎）に実行され、先ず、ステップＳ１０１で、１トリップ（１暖機運転サイクル；イグニッションスイッチ５２がＯＮされてエンジン運転が開始され、各Ｏ２  センサ２６ａ，２６ｂが活性化すると共にエンジンの暖機が完了した状態で運転され、その後イグニッションスイッチ５２のＯＦＦによりエンジン停止されるまで）において、ＲＯ２  センサ２６ｂに対する劣化診断が終了したかを示す診断終了フラグＦＲＯ２ＥＮＤの値を参照して、このトリップにおいて既にＲＯ２  センサ２６ｂに対する劣化診断結果が得られたかを判断する。すなわち、この下流酸素センサ劣化診断ルーチンにおいては、１トリップにおいてＲＯ２  センサ２６ｂに対する劣化診断結果が１回得られれば、このトリップにおいてはＲＯ２  センサ２６ｂに対する劣化診断は行わない。
【００９６】
ここで、上記診断終了フラグＦＲＯ２ＥＮＤは、イグニッションスイッチ５２のＯＮによるシステムイニシャライズ時にクリアされ、ＦＲＯ２ＥＮＤ＝０で、このトリップにおいて未だＲＯ２  センサ２６ｂに対する劣化診断結果が得られていないときにはステップＳ１０２へ進み、ステップＳ１０２，Ｓ１０３で、クローズドループ成立フラグＦＣＬＳ  、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  が共にセットされ両Ｏ２  センサ２６ａ，２６ｂが共に活性状態にあるかを判断する。
【００９７】
そして、両フラグＦＣＬＳ  ，ＦＲＯ２ＯＫ  の少なくとも一方がクリア状態であり、少なくともＲＯ２  センサ２６ｂが不活性のときには、ＲＯ２  センサ２６ｂの応答時間は計測されていないので、ＲＯ２  センサ２６ｂに対する劣化診断を行うことができず劣化診断条件が成立しないので、ステップＳ１０４へ進み、診断条件成立フラグＦＲＯＲＤＳ  をクリアすると共に、燃料カットリカバ後の経過時間のカウントを指示する燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  をクリアし、ステップＳ１０５で、燃料カットの継続時間のカウントが行われていることを示す燃料カット時間計測フラグＦＲＯＱＣＳ  をクリアし、ステップＳ１０６で、燃料カットの継続時間或いは燃料カットリカバ後の時間をカウントする燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをクリアして、ルーチンを抜ける。
【００９８】
尚、上記診断条件成立フラグＦＲＯＲＤＳ  は、上述のように下流酸素センサ応答時間計測ルーチンにおいて参照され、ＦＲＯＲＤＳ  ＝１の両Ｏ２  センサ２６ａ，２６ｂが共に活性のときにのみＲＯ２  センサ２６ｂの応答時間の計測が行われる。
【００９９】
また、上記燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣは、詳しくは後述するが減速燃料カット中、且つ燃料カット時間計測フラグＦＲＯＱＣＳ  がセットされているとき燃料カットの継続時間をカウントし、燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  がセットされているとき燃料カットリカバ後の時間をカウントする。
【０１００】
一方、クローズドループ成立フラグＦＣＬＳ  、デュアルＯ２  センサ制御実行フラグＦＲＯ２ＯＫ  が共にセットされ両Ｏ２  センサ２６ａ，２６ｂが共に活性のときのみ、ステップＳ１０７へ進み、診断条件成立フラグＦＲＯＲＤＳ  をセットし、続くステップＳ１０８で、上述の下流酸素センサ応答時間計測ルーチンにより計測されＲＡＭ４３の所定アドレスにストアされているＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬを読み出し、ＲＯ２  センサ２６ｂの応答劣化を判断するために予め設定された劣化判定値ＮＧＴＩＭと比較する。尚、この劣化判定値ＮＧＴＩＭは、予め実験等により求めた固定値であり、減速燃料カット時において空燃比リーンに伴い触媒２５ｂ下流の酸素濃度に応じＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が前記第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行するまでの応答時間に基づく、ＲＯ２  センサ２６ｂの劣化に伴う応答遅れを許容しうる限界値である。
【０１０１】
従って、上記ステップＳ１０８でＲＯＲＲＬ＜ＮＧＴＩＭのときには、ＲＯ２  センサ２６ｂの劣化が進んでおらず応答性に問題がないと判断し、ステップＳ１２３へジャンプし、バックアップＲＡＭ４４の所定アドレスにストアされＲＯ２  センサ２６ｂが劣化したことを示す下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  をクリアし、ステップＳ１２４で、ＲＯ２  センサ２６ｂの劣化診断が終了したことを示す診断終了フラグＦＲＯ２ＥＮＤをセットして、ルーチンを抜ける。
【０１０２】
この診断終了フラグＦＲＯ２ＥＮＤのセットにより、次回以降のルーチン実行時においては、ステップＳ１０１でＦＲＯ２ＥＮＤ＝１により、ステップＳ１０２以降のＲＯ２  センサ２６に対する劣化診断処理を行うことなく、直ちにルーチンを抜ける。
【０１０３】
そして、上記ステップＳ１０８でＲＯＲＲＬ≧ＮＧＴＩＭであってＲＡＭ４３から読み出したＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上の、ＲＯ２  センサ２６ｂが劣化したと判断されるときにのみ、ステップＳ１０９以降の処理で、本当にＲＯ２  センサ２６ｂが劣化したのかを各種条件により検証するのである。
【０１０４】
これにより、必要とするときのみＲＯ２  センサ２６ｂの劣化が検証されるので、ＲＯ２  センサ２６ｂに対する不要な劣化診断が解消され、マイクロコンピュータによる演算負担が軽減されると共に、ステップＳ１０９以降の処理によってＲＯ２  センサ２６ｂに対する正確な劣化診断が行われる。
【０１０５】
ステップＳ１０９では、燃料カットリカバ後の経過時間のカウントを指示する燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  の値を参照する。この燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  は、燃料カットリカバ時、その燃料カットが継続された時間を判断し、燃料カットの継続時間が設定時間以上のときにセットされるものであり、ＦＲＯＱＳＴ  ＝０であり未だ燃料カットリカバ後の経過時間のカウントが指示されていないときには、ステップＳ１１０へ進み、減速時燃料カット判別フラグＦＣＦＣ  の値を参照し、現在、減速時燃料カット実行中か否かを判断する。
【０１０６】
そして、ＦＣＦＣ  ＝１で減速時燃料カット中のときには、ステップＳ１１２へ進み、燃料カットの継続時間のカウントが行われていることを示す燃料カット時間計測フラグＦＲＯＱＣＳ  の値を参照する。ここで、ＦＲＯＱＣＳ  ＝０のときには減速時燃料カットが実施された初回のルーチン実行時であり、このときには、ステップＳ１１２へ進み、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  を読込み、該出力値ＲＶＯ２  が前記第１のリッチ側設定値ＲＳＬＤＨ１以上の値で完全にリッチ側の値を示しているかを判断する。そして、ＲＶＯ２  ＜ＲＳＬＤＨ１のときには、上述の下流酸素センサ応答時間計測ルーチンにおいて減速時燃料カットに同期したＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測が行われないため、上記ステップＳ１０６へジャンプし、燃料カット継続時間計測用カウント値ＴＭＲＯＱＣをクリアすることで、このときには診断無効とする。
【０１０７】
一方、減速時燃料カット移行間際においてＲＶＯ２  ≧ＲＳＬＤＨ１であって、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が完全にリッチ側の値を示しており、この減速時燃料カットに同期して下流酸素センサ応答時間計測ルーチンにおいてＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測が行い得ると判断されるときは、ステップＳ１１３へ進み、燃料カット時間計測フラグＦＲＯＱＣＳ  をセットし（ＦＲＯＱＣＳ  ←１）、続くステップＳ１１４で、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをカウントアップし、燃料カットの継続時間の計時を開始する。尚、このときには上記カウント値ＴＭＲＯＱＣは燃料カットの継続時間の計時に使用されることになる。
【０１０８】
そして、上記燃料カット時間計測フラグＦＲＯＱＣＳ  がセットされたことで、減速時燃料カットが継続している間、ステップＳ１１１でＦＲＯＱＣＳ  ＝１により、ステップＳ１１１からステップＳ１１４へジャンプし、燃料カットの継続時間の計時が続行される。
【０１０９】
また、上記ステップＳ１１０においてＦＣＦＣ  ＝０のときには、ステップＳ１１５へ分岐して燃料カット時間計測フラグＦＲＯＱＣＳ  の値を参照し、ＦＲＯＱＣＳ  ＝０であって燃料カット継続時間の計時が行われておらず燃料カットリカバ時でないときは、診断条件が成立せずそのままルーチンを抜ける。
【０１１０】
これに対し、上述の燃料カット判別ルーチンにより減速時燃料カット条件が非成立となり燃料カットリカバ時には減速時燃料カット判別フラグＦＣＦＣ  がＦＣＦＣ  ＝０となったときには、燃料カット時において燃料カット継続時間の計時により燃料カット時間計測フラグＦＲＯＱＣＳ  がセットされていることから、減速燃料カットリカバ時には、上記ステップＳ１１５からステップＳ１１６へ進み、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣ、すなわち燃料カットの継続時間を設定値ＴＣＦＣと比較する。ここで、上記設定値ＴＣＦＣは、予め実験等により求めた同定値であり、燃料カットに移行後、触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果の影響がなくなり触媒２５ｂ下流の酸素濃度が十分に上昇し、応答性劣化が許容内の正常なＲＯ２  センサ２６ｂであれば該ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が十分に変化したと見做し得る時間である。
【０１１１】
従って、ＴＭＲＯＱＣ＜ＴＣＦＣのときには、燃料カットの継続時間が短過ぎ、触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果により、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  はリーン側へ十分反応せず、このときには上記ステップＳ１０５へ戻り、ステップＳ１０５，Ｓ１０６で、燃料カット時間計測フラグＦＲＯＱＣＳ  、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣを共にクリアし、ＲＯ２  センサ２６ｂに対する劣化診断を無効とする。
【０１１２】
一方、ＴＭＲＯＱＣ≧ＴＣＦＣのときには、燃料カットの継続により触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果の影響が無視でき、正常なＲＯ２  センサ２６ｂであればその出力値ＲＶＯ２  が十分に変化したと見做し得、ステップＳ１１７へ進み、燃料カットリカバ後の時間の計時に備え、燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  をセットすると共に、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをクリアし、続くステップＳ１１８で、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをカウントアップし、燃料カットリカバ後の時間の計時を開始する。
【０１１３】
そして、ステップＳ１１９で、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣ、すなわち燃料カットリカバ後の時間を設定値ＡＴＣＦＣと比較し、燃料カットリカバ後の時間が設定時間に達したかを判断する。上記設定値ＡＴＣＦＣは、燃料カットに対するＲＯ２  センサ２６ｂの応答遅れによる上述の下流酸素センサ応答時間計測ルーチンによる応答時間ＲＯＲＲＬの計測タイミングのずれを補償するための時間である。
【０１１４】
従って、ＴＭＲＯＱＣ＜ＡＴＣＦＣのときには、そのままルーチンを抜け、このとき上記燃料カットリカバ後時間計測フラグＦＲＯＱＳＴ  がセットされていることで、次回のルーチン実行時、ステップＳ１０８で同様にＲＯＲＲＬ≧ＮＧＴＩＭのときには、ステップＳ１０９からステップＳ１１８にジャンプして、燃料カットリカバ後の時間の計時が続行される。
【０１１５】
一方、上記ステップＳ１１９においてＴＭＲＯＱＣ≧ＡＴＣＦＣとなり燃料カットリカバ後の時間が設定時間に達し、上述の下流酸素センサ応答時間計測ルーチンによって、減速時燃料カットに伴い、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が、第１のリッチ側設定値ＲＳＬＤＨ１以上の完全にリッチ側の値を示した状態から低下し、第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った後、そのまま低下を続け、第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切り、第１のリーン側設定値ＲＳＬＤＬ１よりも低下して完全にリーン側の値を示したときの、第２のリッチ側設定値ＲＳＬＤＨ２から第２のリーン側設定値ＲＳＬＤＬ２に移行したときのＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測が正規に行われたと判断して、ステップＳ１２０へ進み、ＲＡＭ４３にストアされている最新の応答時間ＲＯＲＲＬを読み出して、劣化判定値ＮＧＴＩＭと比較する。
【０１１６】
そして、ＲＯＲＲＬ＜ＮＧＴＩＭのときには、ＲＯ２  センサ２６ｂの応答時間が許容内にあり該ＲＯ２  センサ２６ｂの劣化が進んでおらず応答性に問題がないと判断し、ステップＳ１２３へジャンプし、バックアップＲＡＭ４４の所定アドレスにストアされＲＯ２  センサ２６ｂが劣化したことを示す下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  をクリアし、ステップＳ１２４で、ＲＯ２  センサ２６ｂの劣化診断が終了したことを示す診断終了フラグＦＲＯ２ＥＮＤをセットして、ルーチンを抜ける。
【０１１７】
一方、上記ステップＳ１２０においてＲＯＲＲＬ≧ＮＧＴＩＭのときには、ＲＯ２  センサ２６ｂの応答遅れが許容値よりも大きくなりＲＯ２  センサ２６ｂの劣化と判断して、ステップＳ１２１で、応答時間更新済みフラグＦＲＯＮＥＷ  の値を参照し、このトリップにおいて上記応答時間ＲＯＲＲＬの更新が行われたものなのかを判断し、ＦＲＯＮＥＷ  ＝１でこのトリップにおいて応答時間ＲＯＲＲＬの更新が行われているときのみ、ＲＯ２  センサ２６ｂの劣化と確定して、ステップＳ１２２へ進み、ＲＯ２  センサ２６ｂが劣化したことを示す下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  をセットして（ＲＯ２ＲＮＧ  ←１）、バックアップＲＡＭ４４の所定アドレスにストアすると共に、ＭＩＬランプ５３を点灯（或いは点滅）させてＲＯ２  センサ２６ｂの劣化を警告し、ステップＳ１２４で、ＲＯ２  センサ２６ｂに対する劣化診断の終了により診断終了フラグＦＲＯ２ＥＮＤをセットして、ルーチンを抜ける。
【０１１８】
また、上記ステップＳ１２０で、ＦＲＯＮＥＷ  ＝０のときは、本トリップにおいて応答時間ＲＯＲＲＬが計測されていないことを表し、診断論理が矛盾するためＲＯ２  センサ２６ｂの劣化と確定することができず、従って、このときにはステップＳ１２３へ進み、下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  をクリアして、ステップＳ１２４で、診断終了フラグＦＲＯ２ＥＮＤをセットして、ルーチンを抜ける。
【０１１９】
以上の処理について図７のタイムチャートに基づき説明する。
【０１２０】
ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上（ステップＳ１０８）でＲＯ２  センサ２６ｂの劣化と判断されているとき、時間ｔ２０において減速時燃料カット判別フラグＦＣＦＣ  がセットされて減速燃料カット条件成立により燃料カットが開始されると（ステップＳ１１０）、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリッチ側設定値ＲＳＬＤＨ１以上の値を示しているとき（ステップＳ１１２）のみ、このＲＯ２  センサ２６ｂに対する劣化診断結果を検証する。すなわち、下流酸素センサ診断ルーチンと並行して実行される上述の下流酸素センサ応答時間計測ルーチンによる燃料カットに伴うＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測完了を待ち、この応答時間ＲＯＲＲＬに基づきＲＯ２  センサ２６ｂの劣化を判断し、劣化か否かを確定する。
【０１２１】
尚、同図において応答時間ＲＯＲＲＬは初期値ＩＮＩＴにより最大値に設定されている状態を示している。
【０１２２】
そして、上記の条件が成立しているとき、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをルーチン実行毎にカウントアップし（ステップＳ１１４）、燃料カットの継続時間を計時する。燃料カットが開始された時点では、触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果によってＲＯ２  センサ２６ｂの出力値ＲＶＯ２  は直ちに低下せず、遅れをもって低下する。
【０１２３】
ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリッチ側設定値ＲＳＬＤＨ２をリッチ側からリーン側に横切った時点で（時間ｔ２１）、応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップが開始される。
【０１２４】
そして、時間ｔ２２において、減速時燃料カット判別フラグＦＣＦＣ  がクリアされて燃料カットリカバ（燃料供給再開）されると、上記燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣ、すなわち燃料カットの継続時間を設定値ＴＣＦＣと比較し（ステップＳ１１６）、ＴＭＲＯＱＣ≧ＴＣＦＣであって燃料カットの継続により触媒２５ａ，２５ｂの酸素吸脱、ストレージ効果の影響が無視でき、正常なＲＯ２  センサ２６ｂであればその出力値ＲＶＯ２  が十分に変化したと見做し得るときにのみ、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣをクリアして、このカウント値のカウントアップを開始させ（ステップＳ１１７，Ｓ１１８）、燃料カットリカバ後の時間を計時する。
【０１２５】
また、時間ｔ２３で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第２のリーン側設定値ＲＳＬＤＬ２をリッチ側からリーン側に横切った時点で応答時間計測用カウント値ＴＭＲＯＲ  のカウントアップが中止される。さらに時間ｔ２４で、ＲＯ２  センサ２６ｂの出力値ＲＶＯ２  が第１のリーン側設定値ＲＳＬＤＬ１を下回り完全にリーン側の値となると、この時点でＴＭＲＯＲ  ≧ＲＯＲＲＬであれば上記応答時間計測用カウント値ＴＭＲＯＲ  によって応答時間ＲＯＲＲＬが更新され、カウント値ＴＭＲＯＲ  がクリアされる。
【０１２６】
そして、時間ｔ２５において、燃料カット継続時間／燃料カットリカバ後時間計測用カウント値ＴＭＲＯＱＣすなわち燃料カットリカバ後の時間が、応答時間ＲＯＲＲＬの計測タイミングのずれを補償するための設定値ＡＴＣＦＣに達し（ステップＳ１１９）、ＲＯ２  センサ２６ｂの応答時間ＲＯＲＲＬの計測が正規に行われたと見做し得る時点で、ＲＡＭ４３にストアされている最新の応答時間ＲＯＲＲＬを読み出して、劣化判定値ＮＧＴＩＭと比較し（ステップＳ１２１）、応答時間ＲＯＲＲＬが劣化判定値ＮＧＴＩＭ以上であり、そして、この燃料カットに同期して応答時間ＲＯＲＲＬの更新が行われていれば（ステップＳ１２１）、ＲＯ２  センサ２６ｂの劣化と確定して、ＲＯ２  センサ２６ｂの劣化を示す下流Ｏ２  センサＮＧフラグＲＯ２ＲＮＧ  をセットしてバックアップＲＡＭ４４にストアすると共に、ＭＩＬランプ５３を点灯（或いは点滅）して、ＲＯ２  センサ２６ｂの劣化を警報する。
【０１２７】
【発明の効果】
以上説明したように本発明によれば、燃料カット、燃料増量の有無に拘らず、下流酸素センサの出力値がリッチ側設定値からリーン側設定値に移行するまでの時間を該下流酸素センサの応答時間として計測し、この応答時間が劣化判定値以上のときに、下流酸素センサの劣化と判断し、この判断結果を予め設定された検証条件により検証し、検証条件が成立したときにのみ下流酸素センサの劣化と確定するので、下流酸素センサの劣化診断の基となる応答時間の計測頻度が増加して診断機会が増し、また、下流酸素センサの劣化と判断したときには、その診断結果が正しいかを検証した上で下流酸素センサの劣化を確定するため、早期且つ正確に下流酸素センサの劣化診断を行うことができる。
【０１２８】
又、下流酸素センサの出力値が、完全にリッチ側の出力値であることを示す第１のリッチ側設定値以上の状態から低下し、上記第１のリッチ側設定値よりも低い第２のリッチ側設定値を横切り、さらに第２のリーン側設定値を横切って該第２のリーン側設定値よりも低い値の第１のリーン側設定値よりも低下して完全にリーン側の値を示さない限りは、下流酸素センサの出力値が第２のリッチ側設定値から第２のリーン側設定値に移行した間の時間を該下流酸素センサの応答時間として採用せず、これ以外のときには応答時間の計測が無効となるため、下流酸素センサの劣化診断の基となる下流酸素センサの応答時間を適正且つ確実に計測することができる。
【０１２９】
特に、請求項１或いは請求項２の記載によれば、下流酸素センサの劣化と判断した際の検証条件として、燃料カットが行われたときにこの燃料カットの継続時間を計時して燃料カットリカバ時に燃料カットの継続時間の計時を停止し、この燃料カットの継続時間が設定値以上のときに、燃料カットリカバ後の時間を計時し、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された最新の応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上のとき上記下流酸素センサの劣化と確定するので、燃料カットの継続により触媒の酸素吸脱、ストレージ効果の影響が無視でき、正常な下流酸素センサであればその出力値が十分に変化したと見做し得た後に、さらに燃料カットリカバ後の経過時間により下流酸素センサの応答時間の計測タイミングのずれが補償され、この状態で読み出される応答時間は、燃料カットに同期して計測が正規に行われたと見做し得、これに対応して下流酸素センサの劣化判断結果に対する検証精度が向上し、信頼性を向上することができる。
【０１３０】
又、請求項３或いは請求項４記載発明によれば、今回計測した応答時間が記憶されている応答時間よりも小さいとき該応答時間を更新すると共に、さらに、下流酸素センサの劣化と判断した際の検証条件として、燃料カットリカバ後の経過時間が設定時間に達したとき、計測された最新の応答時間を読み出して予め設定した劣化判定値と比較し、該応答時間が劣化判定値以上で且つ応答時間の更新が行われているときのみ上記下流酸素センサの劣化と確定するので、下流酸素センサの応答時間として、その時点での最小値が記憶されることになり、この値に基づき下流酸素センサの劣化診断が行われるため、下流酸素センサの劣化以外の影響を排除して適正な下流酸素センサに対する劣化診断が可能となり、また、下流酸素センサに対する劣化診断結果の検証に際し、燃料カットに同期して更新された応答時間による検証が可能となり、下流酸素センサの劣化判断結果に対する検証精度がより向上し、下流酸素センサに対する劣化診断結果の信頼性をより一層向上することができる。
【０１３１】
請求項５記載の発明では、請求項１ないし請求項４記載の発明において、上記燃料カットとして減速時燃料カットのみを採用するので、上記効果に加え、燃料カット時間が比較的長く、且つ比較的頻繁に生じる減速燃料カット時にのみ下流酸素センサの劣化判断結果の検証が行われ、触媒の酸素吸脱、ストレージ効果の影響を受けることなく正確な下流酸素センサの劣化診断を、早期に行い得る効果を有する。
【図面の簡単な説明】
【図１】本発明の基本構成図
【図２】空燃比フィードバック補正係数設定ルーチンを示すフローチャート
【図３】燃料噴射量設定ルーチンを示すフローチャート
【図４】燃料カット判別ルーチンを示すフローチャート
【図５】下流酸素センサ応答時間計測ルーチンを示すフローチャート
【図６】下流酸素センサ劣化診断ルーチンを示すフローチャート
【図７】ＲＯ２  センサに対する劣化診断検証時の減速時燃料カットに伴うＲＯ２  センサの応答時間計測、並びに各カウント値の状態を示すタイムチャート
【図８】ＲＯ２  センサの応答時間計測に伴う各フラグ値、カウント値の状態を示すタイムチャート
【図９】エンジンの全体概略図
【図１０】電子制御系の回路構成図
【符号の説明】
１              エンジン
２５ａ，２５ｂ  触媒
２６ｂ          ＲＯ２  センサ（下流酸素センサ）
４０            電子制御装置
ＲＶＯ２          ＲＯ２  センサの出力値（下流酸素センサの出力値）
ＲＳＬＤＨ１    第１のリッチ側設定値
ＲＳＬＤＨ２    第２のリッチ側設定値
ＲＳＬＤＬ１    第１のリーン側設定値
ＲＳＬＤＬ２    第２のリーン側設定値
ＲＯＲＲＬ      応答時間
ＮＧＴＩＭ      劣化判定値
ＴＭＲＯＱＣ        燃料カット継続時間／燃料カットリカバ後時間計測用カウント値（燃料カットの継続時間、燃料カットリカバ後の時間）
ＴＣＦＣ        設定値
ＡＴＣＦＣ      設定値（設定時間）
【図１】
0003560263.tif 000002
【図２】
0003560263.tif 000003
【図３】
0003560263.tif 000004
【図４】
0003560263.tif 000005
【図５】
0003560263.tif 000006
【図６】
0003560263.tif 000007
【図７】
0003560263.tif 000008
【図８】
0003560263.tif 000009
【図９】
0003560263.tif 000010
【図１０】
0003560263.tif 000011