(57)【要約】    【課題】  空燃比センサの時定数劣化とむだ時間劣化の影響を区別して異常診断できるようにして、空燃比センサの異常診断精度を向上させる。    【解決手段】  ＰＩ制御（異常診断用空燃比制御）を実行して空燃比センサ２５の検出空燃比を周期的に変化させる。このＰＩ制御中に空燃比センサ２５の検出空燃比がリッチ方向所定区間を通過する時間をリッチ方向時定数、リーン方向所定区間を通過する時間をリーン方向時定数として検出し、空燃比補正量が大きく増量補正されてから検出空燃比がリッチ方向閾値を越えるまでの時間をリッチ方向むだ時間、空燃比補正量が大きく減量補正されてから検出空燃比がリーン方向閾値を越えるまでの時間をリーン方向むだ時間として検出する。これらのリッチ方向時定数とリーン方向時定数とリッチ方向むだ時間とリーン方向むだ時間をそれぞれ異常判定値と比較して異常の有無を診断する。    【選択図】  図１
2006057587.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配置された空燃比センサの異常の有無を診断する空燃比センサの異常診断装置において、
前記空燃比センサの検出空燃比が異常診断用目標空燃比に向かう方向に空燃比補正量を所定積分量ずつ補正して前記検出空燃比が前記異常診断用目標空燃比を越えたときに前記空燃比補正量をそれまでとは反対方向に前記所定積分量よりも大きい所定スキップ量だけ補正する処理を繰り返す異常診断用空燃比制御を行う異常診断用空燃比制御手段と、
前記異常診断用空燃比制御中に前記検出空燃比に基づいて前記空燃比センサの時定数の情報を検出する時定数検出手段と、
前記異常診断用空燃比制御中に前記検出空燃比に基づいて前記空燃比センサのむだ時間の情報を検出するむだ時間検出手段と、
前記時定数検出手段で検出した時定数情報と前記むだ時間検出手段で検出したむだ時間情報とに基づいて前記空燃比センサのリッチ方向の時定数とリーン方向の時定数とリッチ方向のむだ時間とリーン方向のむだ時間のうちの少なくとも１つの異常の有無を診断する異常診断手段と
を備えていることを特徴とする空燃比センサの異常診断装置。
【請求項２】
前記異常診断用空燃比制御手段は、前記異常診断用空燃比制御中に前記検出空燃比が前記異常診断用目標空燃比を越える毎に該異常診断用目標空燃比をリーン側目標空燃比とリッチ側目標空燃比との間で切り換えることを特徴とする請求項１に記載の空燃比センサの異常診断装置。
【請求項３】
前記時定数検出手段は、前記異常診断用空燃比制御中に前記検出空燃比が所定区間を通過するのに要する時間を前記時定数情報として検出することを特徴とする請求項１又は２に記載の空燃比センサの異常診断装置。
【請求項４】
前記むだ時間検出手段は、前記異常診断用空燃比制御中に前記空燃比補正量がそれまでとは反対方向に前記所定スキップ量だけ補正された時点から前記検出空燃比がそれまでとは反対方向に変化し始めるまでの時間を前記むだ時間情報として検出することを特徴とする請求項１乃至３のいずれかに記載の空燃比センサの異常診断装置。
【請求項５】
前記むだ時間検出手段は、前記異常診断用空燃比制御中に前記空燃比補正量がそれまでとは反対方向に前記所定スキップ量だけ補正された時点から前記検出空燃比が所定の閾値を越えるまでの時間を前記むだ時間情報として検出することを特徴とする請求項１乃至３のいずれかに記載の空燃比センサの異常診断装置。
【請求項６】
前記異常診断用空燃比制御中に前記空燃比補正量が前記所定スキップ量だけ補正された時点から次に前記空燃比補正量が前記所定スキップ量だけ補正された時点までの時間を反転周期として検出する反転周期検出手段を備え、
前記異常診断手段は、前記反転周期に基づいて前記空燃比センサの異常の有無を診断することを特徴とする請求項１乃至５のいずれかに記載の空燃比センサの異常診断装置。
【請求項７】
前記異常診断用空燃比制御手段は、前記異常診断用空燃比制御中に前記空燃比補正量が前記所定スキップ量だけ補正される際の変化割合を前記異常診断用目標空燃比がリーン側目標空燃比とリッチ側目標空燃比との間で切り換えられる際の変化割合よりも大きくすることを特徴とする請求項１乃至６のいずれかに記載の空燃比センサの異常診断装置。
【請求項８】
内燃機関の排出ガス浄化用の触媒の上流側に前記空燃比センサが配置されると共に前記触媒の下流側に下流側空燃比センサが配置され、
前記異常診断用空燃比制御中に前記下流側空燃比センサの出力に基づいて前記異常診断用目標空燃比を補正する異常診断用目標空燃比補正手段を備えていることを特徴とする請求項１乃至７のいずれかに記載の空燃比センサの異常診断装置。
【請求項９】
内燃機関の排出ガス浄化用の触媒の上流側に上流側空燃比センサが配置されると共に前記触媒の下流側に下流側空燃比センサが配置され、前記上流側空燃比センサの異常の有無を診断する空燃比センサの異常診断装置において、
前記上流側空燃比センサの検出空燃比が異常診断用目標空燃比に向かう方向に空燃比補正量を所定積分量ずつ補正して前記上流側空燃比センサの検出空燃比が前記異常診断用目標空燃比を越えたときに前記空燃比補正量をそれまでとは反対方向に前記所定積分量よりも大きい所定スキップ量だけ補正する処理を繰り返す異常診断用空燃比制御を行う異常診断用空燃比制御手段と、
前記異常診断用空燃比制御中に前記上流側空燃比センサの異常の有無を診断する異常診断手段と、
前記異常診断用空燃比制御中に前記下流側空燃比センサの出力に基づいて前記異常診断用目標空燃比を補正する異常診断用目標空燃比補正手段と
を備えていることを特徴とする空燃比センサの異常診断装置。
【請求項１０】
前記上流側空燃比センサの検出空燃比が目標空燃比に一致するように空燃比補正量を算出する通常空燃比制御中に前記下流側空燃比センサの出力に基づいて前記目標空燃比を補正する目標空燃比補正手段を備え、
前記異常診断用目標空燃比補正手段は、前記異常診断用空燃比制御中に前記異常診断用目標空燃比を補正する際の補正量を前記通常空燃比制御中に前記目標空燃比を補正する際の補正量よりも小さくすることを特徴とする請求項８又は９に記載の空燃比センサの異常診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排出ガスの空燃比を検出する空燃比センサの異常の有無を診断する空燃比センサの異常診断装置に関するものである。
【背景技術】
【０００２】
近年、内燃機関を搭載した車両では、排出ガス浄化用の触媒の上流側に排出ガスの空燃比を検出する空燃比センサを設置し、この空燃比センサの出力に基づいて空燃比をフィードバック制御して触媒の排出ガス浄化効率を高めるようにしたものがある。このような排出ガス浄化システムにおいては、空燃比センサが劣化して空燃比制御精度が低下した状態（つまり排出ガス浄化効率が低下した状態）で運転が続けられるのを防ぐために、空燃比センサの劣化診断を行うようにしたものがある。
【０００３】
例えば、特許文献１（特許第３３７７３３６号公報）に記載されているように、空燃比センサの劣化診断を行う際に、空燃比センサの出力から得られた検出当量比がリッチ側の反転判定用基準値を越えるまで空燃比補正量を所定積分項ずつ増量して検出当量比がリッチ側の反転判定用基準値を越えた時点で空燃比補正量を所定比例項分だけ減量し、その後、検出当量比がリーン側の反転判定用基準値を越えるまで空燃比補正量を所定積分項分ずつ減量して検出当量比がリーン側の反転判定用基準値を越えた時点で空燃比補正量を所定比例項分だけ増量する処理を繰り返すＰＩフィードバック制御を行うことで、空燃比センサの検出当量比を周期的に反転させ、その反転周期を劣化判定値と比較して空燃比センサの応答性劣化の有無を診断するようにしたものがある。
【特許文献１】特許第３３７７３３６号公報（第５頁〜第６頁、第７図等）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、空燃比センサの応答性劣化の形態には、実空燃比の変化がセンサ出力の変化として現れるまでの時間が長くなる“むだ時間劣化”と、センサ出力の変化速度自体が低下する“時定数劣化”との二つの形態が存在し、むだ時間劣化と時定数劣化とでは空燃比制御性に対する影響度合、ひいては排気エミッションに対する影響度合が異なる。
【０００５】
しかし、上記特許文献１の空燃比センサの劣化診断では、排気エミッションに対する影響度合が異なるむだ時間劣化と時定数劣化を区別せずに、むだ時間劣化と時定数劣化の両方の影響を受けて変化する反転周期に基づいて空燃比センサの劣化診断を行うため、空燃比センサの劣化が排気エミッションに悪影響を及ぼすレベルに達したタイミングで異常有りと判定することが困難であり、空燃比センサの劣化を精度良く診断することができないという欠点がある。
【０００６】
例えば、反転周期の劣化判定値を、むだ時間劣化が排気エミッションに悪影響を及ぼすレベル付近に設定すると、時定数劣化が発生したときに時定数劣化が排気エミッションに悪影響を及ぼすレベルに達していないにも拘らず、反転周期が劣化判定値を越えて空燃比センサの異常有りと誤診断してしまう可能性がある。また、反転周期の劣化判定値を、時定数劣化が排気エミッションに悪影響を及ぼすレベル付近に設定すると、むだ時間劣化が発生したときにむだ時間劣化が排気エミッションに悪影響を及ぼすレベルを越えているにも拘らず、反転周期が劣化判定値を越えずに空燃比センサの異常無しと誤診断してしまう可能性がある。
【０００７】
本発明は、このような事情を考慮してなされたものであり、従って本発明の目的は、空燃比センサの時定数劣化とむだ時間劣化の影響を区別して空燃比センサの異常診断を行うことができて、劣化発生時に適正なタイミングで異常有りと判定することができ、空燃比センサの異常診断精度を向上させることができる空燃比センサの異常診断装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の請求項１に記載の空燃比センサの異常診断装置は、異常診断用空燃比制御手段によって空燃比センサの検出空燃比が異常診断用目標空燃比に向かう方向に空燃比補正量を所定積分量ずつ補正して検出空燃比が異常診断用目標空燃比を越えたときに空燃比補正量をそれまでとは反対方向に所定積分量よりも大きい所定スキップ量だけ補正する処理を繰り返す異常診断用空燃比制御を行い、この異常診断用空燃比制御中に、検出空燃比に基づいて空燃比センサの時定数の情報を時定数検出手段により検出すると共に、検出空燃比に基づいて空燃比センサのむだ時間の情報をセンサむだ時間検出手段により検出し、異常診断手段によって時定数情報とむだ時間情報とに基づいて空燃比センサのリッチ方向の時定数とリーン方向の時定数とリッチ方向のむだ時間とリーン方向のむだ時間のうちの少なくとも１つの異常の有無を診断するようにしたものである。
【０００９】
この構成では、異常診断用空燃比制御によって空燃比センサの検出空燃比を周期的に変化させた状態で、空燃比センサの時定数情報とむだ時間情報を検出するため、時定数情報とむだ時間情報を精度良く検出することができ、これらの時定数情報とむだ時間情報とを用いて空燃比センサの異常診断を行うため、空燃比センサの時定数劣化とむだ時間劣化の影響を区別して空燃比センサの異常診断を行うことができる。これにより、時定数劣化やむだ時間劣化の発生時に適正なタイミングで空燃比センサの異常有りと判定することができ（例えば、時定数劣化の発生時には、時定数劣化が排気エミッションに悪影響を及ぼすレベルに達したタイミングで異常有りと判定することができ、むだ時間劣化の発生時には、むだ時間劣化が排気エミッションに悪影響を及ぼすレベルに達したタイミングで異常有りと判定することができ）、空燃比センサの異常診断精度を向上させることができる。
【００１０】
この場合、請求項２のように、異常診断用空燃比制御中に検出空燃比が異常診断用目標空燃比を越える毎に該異常診断用目標空燃比をリーン側目標空燃比とリッチ側目標空燃比との間で切り換えるようにすると良い。このようにすれば、異常診断用空燃比制御中に検出空燃比の変化量（振幅）を大きくすることができ、空燃比センサの時定数情報やむだ時間情報の検出精度を向上させることができる。
【００１１】
また、時定数情報の検出方法は、例えば、請求項３のように、異常診断用空燃比制御中に検出空燃比が所定区間を通過するのに要する時間を時定数情報として検出するようにすると良い。このようにすれば、空燃比センサのむだ時間の影響を受けにくい区間を所定区間として設定して、その所定区間を検出空燃比が通過するのに要する時間を時定数情報として検出することが可能となり、時定数情報を精度良く検出することができる。
【００１２】
また、むだ時間情報の検出方法は、例えば、請求項４のように、異常診断用空燃比制御中に空燃比補正量がそれまでとは反対方向に所定スキップ量だけ補正された時点から検出空燃比がそれまでとは反対方向に変化し始めるまでの時間をむだ時間情報として検出するようにすると良い。このようにすれば、実空燃比の変化が検出空燃比（センサ出力）の変化に現れるまでの時間を精度良く反映したむだ時間情報を検出することができる。
【００１３】
ところで、上記請求項４の方法で、むだ時間情報を検出する際に、検出空燃比がそれまでとは反対方向に変化し始める時点（つまり検出空燃比の極値）付近では、検出空燃比の変化量が非常に小さくなってノイズの影響を受け易くなるため、ノイズの影響が大きい場合には、検出空燃比の極値を精度良く判定することが難しくなる。
【００１４】
そこで、請求項５のように、異常診断用空燃比制御中に空燃比補正量がそれまでとは反対方向に所定スキップ量だけ補正された時点から検出空燃比が所定の閾値を越えるまでの時間をむだ時間情報として検出するようにしても良い。検出空燃比の極値の判定に比べて検出空燃比が閾値を越えたか否かの判定は、ノイズの影響を受け難く比較的簡単に判定することができるため、むだ時間情報を比較的簡単に精度良く検出することができる。
【００１５】
また、請求項６のように、異常診断用空燃比制御中に空燃比補正量が所定スキップ量だけ補正された時点から次に空燃比補正量が所定スキップ量だけ補正された時点までの時間を反転周期として検出し、この反転周期に基づいて空燃比センサの異常の有無を診断するようにしても良い。このようにすれば、空燃比センサ出力（検出空燃比）の反転周期の異常も検出することができる。
【００１６】
また、請求項７のように、異常診断用空燃比制御中に空燃比補正量が所定スキップ量だけ補正される際の変化割合を異常診断用目標空燃比がリーン側目標空燃比とリッチ側目標空燃比との間で切り換えられる際の変化割合よりも大きくするようにすると良い。このようにすれば、異常診断用目標空燃比の変化幅を排気エミッションの悪化を防止できる程度に抑えながら、空燃比補正量のスキップ量を大きくして実空燃比の変化速度を大きくすることができて、空燃比センサの時定数情報やむだ時間情報の検出精度を向上させることができる。
【００１７】
ところで、異常診断用空燃比制御中は、通常の空燃比フィードバック制御が停止されるため、排出ガスの空燃比が触媒の浄化ウインドからはみ出して排気エミッションが悪化する可能性がある。
【００１８】
そこで、請求項８，９のように、触媒の下流側に下流側空燃比センサが配置されている場合には、異常診断用空燃比制御中に下流側空燃比センサの出力に基づいて異常診断用目標空燃比を補正するようにしても良い。このようにすれば、異常診断用空燃比制御中に排出ガスの空燃比が触媒の浄化ウインド内に収まるように異常診断用目標空燃比を補正することができ、異常診断用空燃比制御中の排気エミッションを向上させることができる。
【００１９】
ところで、上流側空燃比センサの検出空燃比が目標空燃比に一致するように空燃比補正量を算出する通常空燃比制御中に下流側空燃比センサの出力に基づいて目標空燃比を補正するシステムがあるが、異常診断用空燃比制御中に下流側空燃比センサの出力に基づいて異常診断用目標空燃比を補正する際の補正量を通常空燃比制御中に下流側空燃比センサの出力に基づいて目標空燃比を補正する際の補正量と同じにすると、異常診断用目標空燃比の変動が大きくなりすぎて、時定数情報やむだ時間情報のばらつきが大きくなり、時定数情報やむだ時間情報の検出精度が低下する可能性がある。
【００２０】
そこで、請求項１０のように、異常診断用空燃比制御中に異常診断用目標空燃比を補正する際の補正量を通常空燃比制御中に目標空燃比を補正する際の補正量よりも小さくするようにすると良い。このようにすれば、異常診断用目標空燃比の変動を適正な範囲に収めることができるため、時定数情報やむだ時間情報のばらつきを小さくすることができ、時定数情報やむだ時間情報の検出精度を確保することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の一実施例を図面に基づいて説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、ＤＣモータ等のモータ１５によって開度調節されるスロットルバルブ１６と、スロットル開度を検出するスロットル開度センサ１７とが設けられている。
【００２２】
更に、スロットルバルブ１６の下流側には、サージタンク１８が設けられ、このサージタンク１８には、吸気管圧力を検出する吸気管圧力センサ１９が設けられている。また、サージタンク１８には、エンジン１１の各気筒に空気を導入する吸気マニホールド２０が設けられ、各気筒の吸気マニホールド２０の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２１が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２２が取り付けられ、各点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００２３】
一方、エンジン１１の排気管２３（排気通路）には、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒２４が設けられ、この触媒２４の上流側に、排出ガスの空燃比を検出する空燃比センサ２５が設けられ、触媒２４の下流側に、排出ガスのリッチ／リーンを検出する酸素センサ２６（下流側空燃比センサ）が設けられている。
【００２４】
また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２７や、エンジン１１のクランク軸が所定クランク角回転する毎にパルス信号を出力するクランク角センサ２８が取り付けられている。このクランク角センサ２８の出力信号に基づいてクランク角やエンジン回転速度が検出される。
【００２５】
これら各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）２９に入力される。このＥＣＵ２９は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２１の燃料噴射量や点火プラグ２２の点火時期を制御する。
【００２６】
その際、ＥＣＵ２９は、図示しない空燃比フィードバック制御プログラムを実行することで、所定の空燃比フィードバック制御実行条件が成立したときに、空燃比センサ２５の検出空燃比が目標空燃比に一致するように空燃比補正量を算出する通常空燃比制御を実行し、この通常空燃比制御中に、触媒２４の下流側の酸素センサ２６の出力に基づいて排出ガスの空燃比が触媒２４の浄化ウインド内（例えばストイキ及びその近傍の範囲内）に収まるように目標空燃比を補正する。
【００２７】
また、ＥＣＵ２９は、後述する図６乃至図１２に示す空燃比センサ異常診断用の各プログラムを実行することで、次のようにして空燃比センサ２５の異常の有無を診断する。
【００２８】
まず、所定の異常診断実行条件が成立したときに、ＰＩ制御（異常診断用空燃比制御）を実行する。このＰＩ制御では、図２に示すように、空燃比センサ２５の検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリッチになったときに異常診断用目標空燃比をリーン側目標空燃比ｔｇλＬに切り換え、検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリーンになったときに異常診断用目標空燃比をリッチ側目標空燃比ｔｇλＲに切り換える。
【００２９】
更に、空燃比センサ２５の検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリーンの期間は空燃比補正量ＣＦＢを積分量ＫＩＣＦＢずつ増量補正し、検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリッチになったときに空燃比補正量ＣＦＢをスキップ量ＫＰＣＦＢだけ減量補正する。一方、空燃比センサ２５の検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリッチの期間は空燃比補正量ＣＦＢを積分量ＫＩＣＦＢずつ減量補正し、検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリーンになったときに空燃比補正量ＣＦＢをスキップ量ＫＰＣＦＢだけ増量補正する。
【００３０】
尚、スキップ量ＫＰＣＦＢは、積分量ＫＩＣＦＢよりも大きな値に設定されていると共に、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ補正される際の変化割合を異常診断用目標空燃比がリーン側目標空燃比ｔｇλＬとリッチ側目標空燃比ｔｇλＲとの間で切り換えられる際の変化割合よりも大きくするように設定されている。
【００３１】
このＰＩ制御中に、空燃比補正量ＣＦＢの反転周期ｃｔ（つまり空燃比センサ２５出力の反転周期）と空燃比センサ２５の時定数ｒｅｓと空燃比センサ２５のむだ時間ｄｔを次のようにして検出する。
【００３２】
反転周期ｃｔの検出方法は、図３に示すように、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点から次に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点までの時間をリッチ方向反転周期ｃｔＲとして検出し、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点から次に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点までの時間をリーン方向反転周期ｃｔＬとして検出する。
【００３３】
時定数ｒｅｓの検出方法は、図４に示すように、検出空燃比ｓｇλがリッチ方向所定区間（リッチ方向閾値ＬＲ１からリッチ方向閾値ＬＲ２まで）を通過するのに要する時間をリッチ方向時定数ｒｅｓＲとして検出し、検出空燃比ｓｇλがリーン方向所定区間（リーン方向閾値ＲＬ１からリーン方向閾値ＲＬ２まで）を通過するのに要する時間をリーン方向時定数ｒｅｓＬとして検出する。ここで、リッチ方向所定区間とリーン方向所定区間は、空燃比センサ２５のむだ時間の影響を受けにくい区間（例えば、検出空燃比ｓｇλの極値を越えた後の区間）になるように設定されている。
【００３４】
むだ時間ｄｔの検出方法は、図５に示すように、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点から検出空燃比ｓｇλがリッチ方向閾値ＬＲを越えるまでの時間をリッチ方向むだ時間ｄｔＲとして検出し、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点から検出空燃比ｓｇλがリーン方向閾値ＲＬを越えるまでの時間をリーン方向むだ時間ｄｔＬとして検出する。ここで、リッチ方向閾値ＬＲは、例えば、検出空燃比ｓｇλのリーン側極値よりも少しをリッチ側の値に設定され、リーン方向閾値ＲＬは、例えば、検出空燃比ｓｇλのリッチ側の極値よりも少しリーン側の値に設定されている。
【００３５】
このようにして反転周期ｃｔと時定数ｒｅｓとむだ時間ｄｔを検出した後、空燃比センサ２５の異常診断を次のようにして行う。まず、リッチ方向反転周期ｃｔＲとリーン方向反転周期ｃｔＬの合計値を異常判定値Ｋｃｔとを比較する。その結果、リッチ方向反転周期ｃｔＲとリーン方向反転周期ｃｔＬの合計値が異常判定値Ｋｃｔよりも大きい場合には、空燃比センサ２５出力の反転周期の異常有りと判定する。
【００３６】
また、リッチ方向時定数ｒｅｓＲを異常判定値ＫｒｅｓＲ１と比較すると共に、リーン方向時定数ｒｅｓＬを異常判定値ＫｒｅｓＬ１と比較する。その結果、リッチ方向時定数ｒｅｓＲが異常判定値ＫｒｅｓＲ１よりも大きい場合には、空燃比センサ２５のリッチ方向時定数の異常有り（リッチ方向時定数劣化有り）と判定し、リーン方向時定数ｒｅｓＬが異常判定値ＫｒｅｓＬ１よりも大きい場合には、空燃比センサ２５のリーン方向時定数の異常有り（リーン方向時定数劣化有り）と判定する。
【００３７】
更に、リッチ方向むだ時間ｄｔＲを異常判定値ＫｄｔＲと比較すると共に、リーン方向むだ時間ｄｔＬを異常判定値ＫｄｔＬと比較する。その結果、リッチ方向むだ時間ｄｔＲが異常判定値ＫｄｔＲよりも大きい場合には、空燃比センサ２５のリッチ方向むだ時間の異常有り（リッチ方向むだ時間劣化有り）と判定し、リーン方向むだ時間ｄｔＬが異常判定値ＫｄｔＬよりも大きい場合には、空燃比センサ２５のリーン方向むだ時間の異常有り（リーン方向むだ時間劣化有り）と判定する。但し、リッチ方向時定数ｒｅｓＲが判定値ＫｒｅｓＲ２以上で且つリーン方向時定数ｒｅｓＬが判定値ＫｒｅｓＬ２以上の場合には、時定数の影響でリッチ方向むだ時間ｄｔＲやリーン方向むだ時間ｄｔＬが異常判定値を越えたと判断して、空燃比センサ２５の異常無し（正常）と判定する。尚、判定値ＫｒｅｓＲ２，ＫｒｅｓＬ２はそれぞれ異常判定値ＫｒｅｓＲ１，ＫｒｅｓＲ２よりも小さい値に設定されている。
【００３８】
以上の異常診断で空燃比センサ２５の異常有りと判定された場合には、異常フラグをＯＮにセットし、運転席のインストルメントパネルに設けられた警告ランプ（図示せず）を点灯したり、或は運転席のインストルメントパネルの表示部（図示せず）に警告表示して運転者に警告すると共に、その異常情報（異常コード等）をＥＣＵ２９のバックアップＲＡＭ（図示せず）等の書き換え可能な不揮発性メモリに記憶する。
【００３９】
また、ＥＣＵ２９は、ＰＩ制御中（異常診断用空燃比制御中）に、触媒２４の下流側の酸素センサ２６の出力に基づいて排出ガスの空燃比が触媒２４の浄化ウインド内（例えばストイキ及びその近傍の範囲内）に収まるように異常診断用目標空燃比を補正する。
【００４０】
以上説明した空燃比センサ２５の異常診断は、ＥＣＵ２９によって図６乃至図１２の各プログラムに従って実行される。以下、これらの各プログラムの処理内容を説明する。
［空燃比センサ異常診断］
図６に示す空燃比センサ異常診断メインプログラムは、エンジン運転中に所定周期（例えば５ｍｓｅｃ周期）で実行される。本プログラムが起動されると、まず、ステップ１０１で、異常診断実行条件が成立しているか否かを判定する。ここで、異常診断実行条件は、例えば、エンジン回転速度が所定範囲内であること、冷却水温が所定値以上であること、空燃比センサ２５が活性状態であること、同ドライビングサイクル中に異常診断を実施していないこと等である。
【００４１】
これらの条件をすべて満たせば、異常診断実行条件が成立するが、いずれか１つでも満たさない条件があれば、異常診断実行条件が不成立となる。もし、異常診断実行条件が不成立と判定されれば、ステップ１０２以降の異常診断に関する処理を実行することなく、本プログラムを終了する。
【００４２】
一方、ステップ１０１で、異常診断実行条件が成立していると判定された場合には、ステップ１０２以降の異常診断に関する処理を次のようにして実行する。まず、ステップ１０２で、後述する図７のＰＩ制御プログラムを実行して、空燃比センサ２５の検出空燃比ｓｇλを周期的に変化させる。
【００４３】
この後、ステップ１０３で、後述する図８の反転周期算出プログラムを実行して、リッチ方向反転周期ｃｔＲ及びリーン方向反転周期ｃｔＬを算出し、次のステップ１０４で、後述する図９の時定数算出プログラムを実行して、リッチ方向時定数ｒｅｓＲ及びリーン方向時定数ｒｅｓＬを算出し、続くステップ１０５で、後述する図１０のむだ時間算出プログラムを実行して、リッチ方向むだ時間ｄｔＲ及びリーン方向むだ時間ｄｔＬを算出する。
【００４４】
この後、ステップ１０６に進み、後述する図１１の異常診断プログラムを実行して、リッチ方向反転周期ｃｔＲ及びリーン方向反転周期ｃｔＬと、リッチ方向時定数ｒｅｓＲ及びリーン方向時定数ｒｅｓＬと、リッチ方向むだ時間ｄｔＲ及びリーン方向むだ時間ｄｔＬとに基づいて空燃比センサ２５の異常の有無を診断する。
【００４５】
［ＰＩ制御］
図７に示すＰＩ制御プログラムは、図６の空燃比センサ異常診断メインプログラムのステップ１０２で実行されるサブルーチンであり、特許請求の範囲でいう異常診断用空燃比制御手段としての役割を果たす。
【００４６】
本プログラムが起動されると、まず、ステップ２０１で、ＰＩ制御実行条件が成立しているか否かを判定する。このＰＩ制御実行条件は、前述した異常診断実行条件と同じである。もし、ＰＩ制御実行条件が不成立と判定されれば、ステップ２０２以降のＰＩ制御に関する処理を実行することなく、本プログラムを終了する。
【００４７】
一方、上記ステップ２０１で、ＰＩ制御実行条件が成立していると判定された場合には、ステップ２０２以降のＰＩ制御に関する処理を次のようにして実行する。まず、ステップ２０２で、エンジン回転速度と吸入空気量とに応じたスキップ量ＫＰＣＦＢをマップ又は数式等により算出すると共に、エンジン回転速度と吸入空気量とに応じた積分量ＫＩＣＦＢをマップ又は数式等により算出する。尚、スキップ量ＫＰＣＦＢは、積分量ＫＩＣＦＢよりも大きな値に設定されていると共に、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ補正される際の変化割合を異常診断用目標空燃比がリーン側目標空燃比ｔｇλＬとリッチ側目標空燃比ｔｇλＲとの間で切り換えられる際の変化割合よりも大きくするように設定されている。
【００４８】
この後、ステップ２０３に進み、リッチ／リーン判定フラグＸＲＬが「１」にセットされているか否かによって、現在の異常判定用目標空燃比がリッチ側目標空燃比ｔｇλＲであるか否かを判定する。
【００４９】
その結果、リッチ／リーン判定フラグＸＲＬが「１」にセットされている（異常判定用目標空燃比がリッチ側目標空燃比ｔｇλＲである）と判定された場合には、ステップ２０４に進み、検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリーンであるか否かを判定する。
【００５０】
検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリーンの期間は、ステップ２０５に進み、リッチ／リーン判定フラグＸＲＬを「１」に維持して異常診断用目標空燃比をリッチ側目標空燃比ｔｇλＲに維持したまま、ステップ２０６に進み、空燃比補正量ＣＦＢを積分量ＫＩＣＦＢだけ増量補正する。
ＣＦＢ＝ＣＦＢ＋ＫＩＣＦＢ
【００５１】
その後、上記ステップ２０４で、検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリッチであると判定されたときに、ステップ２０７に進み、リッチ／リーン判定フラグＸＲＬを「０」にリセットして異常診断用目標空燃比をリーン側目標空燃比ｔｇλＬに切り換えた後、ステップ２０８に進み、空燃比補正量ＣＦＢをスキップ量ＫＰＣＦＢだけ減量補正する。
ＣＦＢ＝ＣＦＢ−ＫＰＣＦＢ
【００５２】
一方、上記ステップ２０３で、リッチ／リーン判定フラグＸＲＬが「０」にリセットされている（異常判定用目標空燃比がリーン側目標空燃比ｔｇλＬである）と判定された場合には、ステップ２０９に進み、検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリッチであるか否かを判定する。
【００５３】
検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリッチの期間は、ステップ２１０に進み、リッチ／リーン判定フラグＸＲＬを「０」に維持して異常診断用目標空燃比をリーン側目標空燃比ｔｇλＬに維持したまま、ステップ２１１に進み、空燃比補正量ＣＦＢを積分量ＫＩＣＦＢだけ減量補正する。
ＣＦＢ＝ＣＦＢ−ＫＩＣＦＢ
【００５４】
その後、上記ステップ２０９で、検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリーンであると判定されたときに、ステップ２１２に進み、リッチ／リーン判定フラグＸＲＬを「１」にセットして異常診断用目標空燃比をリッチ側目標空燃比ｔｇλＲに切り換えた後、ステップ２１３に進み、空燃比補正量ＣＦＢをスキップ量ＫＰＣＦＢだけ増量補正する。
ＣＦＢ＝ＣＦＢ＋ＫＰＣＦＢ
【００５５】
［反転周期算出］
図８に示す反転周期算出プログラムは、図６の空燃比センサ異常診断メインプログラムのステップ１０３で実行されるサブルーチンであり、特許請求の範囲でいう反転周期検出手段としての役割を果たす。
【００５６】
本プログラムが起動されると、まず、ステップ３０１で、ＰＩ制御実行条件が成立しているか否かを判定する。もし、ＰＩ制御実行条件が不成立と判定されれば、反転周期算出に関する処理（ステップ３０２〜３０８）を実行することなく、ステップ３０９に進み、リッチ方向反転周期ｃｔＲとリーン方向反転周期ｃｔＬを両方とも「０」にリセットした後、本プログラムを終了する。
【００５７】
一方、上記ステップ３０１で、ＰＩ制御実行条件が成立していると判定された場合には、ステップ３０２以降の反転周期算出に関する処理を次のようにして実行する。まず、ステップ３０２で、ＰＩ制御によって異常診断用目標空燃比が所定回数（例えば５回）以上反転したか否かを判定し、異常診断用目標空燃比が所定回数（例えば５回）以上反転したと判定されたときに、ステップ３０３に進み、リッチ／リーン判定フラグＸＲＬが「１」にセットされているか否かを判定する。
【００５８】
その結果、リッチ／リーン判定フラグＸＲＬが「１」にセットされていると判定された場合には、ステップ３０４に進み、リッチ／リーン判定フラグＸＲＬが「１」にセットされた時点から「０」にリセットされるまでカウンタをインクリメントして、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点から次に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点までの時間を計測し、それをリッチ方向反転周期ｃｔＲとして検出する。
【００５９】
一方、上記ステップ３０３で、リッチ／リーン判定フラグＸＲＬが「０」にリセットされていると判定された場合には、ステップ３０５に進み、リッチ／リーン判定フラグＸＲＬが「０」にリセットされた時点から「１」にセットされるまでカウンタをインクリメントして、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点から次に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点までの時間を計測し、それをリーン方向反転周期ｃｔＬとして検出する。
【００６０】
この後、ステップ３０６に進み、リッチ方向反転周期ｃｔＲとリーン方向反転周期ｃｔＬをそれぞれ所定回数（例えば５回）ずつ検出したか否かを判定し、リッチ方向反転周期ｃｔＲとリーン方向反転周期ｃｔＬをそれぞれ所定回数（例えば５回）ずつ検出したと判定された時点で、ステップ３０７に進み、所定回数（例えば５回）のリッチ方向反転周期ｃｔＲの平均値である平均リッチ方向反転周期ｃｔＲ(ave) を算出した後、ステップ３０８に進み、所定回数（例えば５回）のリーン方向反転周期ｃｔＬの平均値である平均リーン方向反転周期ｃｔＬ(ave) を算出する。
【００６１】
［時定数算出］
図９に示す時定数算出プログラムは、図６の空燃比センサ異常診断メインプログラムのステップ１０４で実行されるサブルーチンであり、特許請求の範囲でいう時定数検出手段としての役割を果たす。
【００６２】
本プログラムが起動されると、まず、ステップ４０１で、ＰＩ制御実行条件が成立しているか否かを判定する。もし、ＰＩ制御実行条件が不成立と判定されれば、時定数算出に関する処理（ステップ４０２〜４１０）を実行することなく、ステップ４１１に進み、リッチ方向時定数ｒｅｓＲとリーン方向時定数ｒｅｓＬを両方とも「０」にリセットした後、本プログラムを終了する。
【００６３】
一方、上記ステップ４０１で、ＰＩ制御実行条件が成立していると判定された場合には、ステップ４０２以降の時定数算出に関する処理を次のようにして実行する。まず、ステップ４０２で、ＰＩ制御によって異常診断用目標空燃比が所定回数（例えば５回）以上反転したか否かを判定し、異常診断用目標空燃比が所定回数（例えば５回）以上反転したと判定されたときに、ステップ４０３に進み、リッチ／リーン判定フラグＸＲＬが「１」にセットされているか否かを判定する。
【００６４】
その結果、リッチ／リーン判定フラグＸＲＬが「１」にセットされていると判定された場合には、ステップ４０４に進み、検出空燃比ｓｇλがリッチ方向所定区間内（ＬＲ１＞ｓｇλ＞ＬＲ２）であるか否かを判定する。検出空燃比ｓｇλがリッチ方向所定区間内（ＬＲ１＞ｇλ＞ＬＲ２）であると判定されれば、ステップ４０５に進み、その期間中、カウンタをインクリメントして、検出空燃比ｓｇλがリッチ方向所定区間（リッチ方向閾値ＬＲ１からリッチ方向閾値ＬＲ２まで）を通過するのに要する時間を計測し、それをリッチ方向時定数ｒｅｓＲとして検出する。
【００６５】
一方、上記ステップ４０３で、リッチ／リーン判定フラグＸＲＬが「０」にリセットされていると判定された場合には、ステップ４０６に進み、検出空燃比ｓｇλがリーン方向所定区間内（ＲＬ１＜ｓｇλ＜ＲＬ２）であるか否かを判定する。検出空燃比ｓｇλがリーン方向所定区間内（ＲＬ１＜ｓｇλ＜ＲＬ２）であると判定されれば、ステップ４０７に進み、その期間中、カウンタをインクリメントして、検出空燃比ｓｇλがリーン方向所定区間（リーン方向閾値ＲＬ１からリーン方向閾値ＲＬ２まで）を通過するのに要する時間を計測し、それをリーン方向時定数ｒｅｓＬとして検出する。
【００６６】
ここで、リッチ方向所定区間（ＬＲ１〜ＬＲ２）とリーン方向所定区間（ＲＬ１〜ＲＬ２）は、空燃比センサ２５のむだ時間の影響を受けにくい区間（例えば、検出空燃比ｓｇλの極値を越えた後の区間）になるように設定されている。また、ＬＲ２＝ＲＬ２＝（ＬＲ１＋ＲＬ１）／２としても良い。
【００６７】
この後、ステップ４０８に進み、リッチ方向時定数ｒｅｓＲとリーン方向時定数ｒｅｓＬをそれぞれ所定回数（例えば５回）ずつ検出したか否かを判定し、リッチ方向時定数ｒｅｓＲとリーン方向時定数ｒｅｓＬをそれぞれ所定回数（例えば５回）ずつ検出したと判定された時点で、ステップ４０９に進み、所定回数（例えば５回）のリッチ方向時定数ｒｅｓＲの平均値である平均リッチ方向時定数ｒｅｓＲ(ave) を算出した後、ステップ４１０に進み、所定回数（例えば５回）のリーン方向時定数ｒｅｓＬの平均値である平均リーン方向時定数ｒｅｓＬ(ave) を算出する。
【００６８】
［むだ時間算出］
図１０に示すむだ時間算出プログラムは、図６の空燃比センサ異常診断メインプログラムのステップ１０５で実行されるサブルーチンであり、特許請求の範囲でいうむだ時間検出手段としての役割を果たす。本プログラムが起動されると、まず、ステップ５０１で、ＰＩ制御実行条件が成立しているか否かを判定する。もし、ＰＩ制御実行条件が不成立と判定されれば、むだ時間算出に関する処理（ステップ５０２〜５１０）を実行することなく、ステップ５１１に進み、リッチ方向むだ時間ｄｔＲとリーン方向むだ時間ｄｔＬを両方とも「０」にリセットした後、本プログラムを終了する。
【００６９】
一方、上記ステップ５０１で、ＰＩ制御実行条件が成立していると判定された場合には、ステップ５０２以降のむだ時間算出に関する処理を次のようにして実行する。まず、ステップ５０２で、ＰＩ制御によって異常診断用目標空燃比が所定回数（例えば５回）以上反転したか否かを判定し、異常診断用目標空燃比が所定回数（例えば５回）以上反転したと判定されたときに、ステップ５０３に進み、リッチ／リーン判定フラグＸＲＬが「１」にセットされているか否かを判定する。
【００７０】
その結果、リッチ／リーン判定フラグＸＲＬが「１」にセットされていると判定された場合には、ステップ５０４に進み、検出空燃比ｓｇλがリッチ方向閾値ＬＲよりもリーンであるか否かを判定する。検出空燃比ｓｇλがリッチ方向閾値ＬＲよりもリーンであると判定されれば、ステップ５０５に進み、その期間中、カウンタをインクリメントして、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ増量補正された時点から検出空燃比ｓｇλがリッチ方向閾値ＬＲを越えるまでの時間を計測し、それをリッチ方向むだ時間ｄｔＲとして検出する。
【００７１】
一方、上記ステップ５０３で、リッチ／リーン判定フラグＸＲＬが「０」にリセットされていると判定された場合には、ステップ５０６に進み、検出空燃比ｓｇλがリーン方向閾値ＲＬよりもリッチであるか否かを判定する。検出空燃比ｓｇλがリーン方向閾値ＲＬよりもリッチであると判定されれば、ステップ５０７に進み、その期間中、カウンタをインクリメントして、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ減量補正された時点から検出空燃比ｓｇλがリーン方向閾値ＲＬを越えるまでの時間を計測し、それをリーン方向むだ時間ｄｔＬとして検出する。
【００７２】
ここで、リッチ方向閾値ＬＲは、例えば、検出空燃比ｓｇλのリーン側極値よりも少しをリッチ側の値に設定され、リーン方向閾値ＲＬは、例えば、検出空燃比ｓｇλのリッチ側の極値よりも少しリーン側の値に設定されている。また、むだ時間検出用のリッチ方向閾値ＬＲ及びリーン方向閾値ＲＬは、それぞれ時定数検出用のリッチ方向閾値ＬＲ１及びリーン方向閾値ＲＬ１と同じ値に設定しても良い（ＬＲ＝ＬＲ１，ＲＬ＝ＲＬ１）。
【００７３】
この後、ステップ５０８に進み、リッチ方向むだ時間ｄｔＲとリーン方向むだ時間ｄｔＬをそれぞれ所定回数（例えば５回）ずつ検出したか否かを判定し、リッチ方向むだ時間ｄｔＲとリーン方向むだ時間ｄｔＬをそれぞれ所定回数（例えば５回）ずつ検出したと判定された時点で、ステップ５０９に進み、所定回数（例えば５回）のリッチ方向むだ時間ｄｔＲの平均値である平均リッチ方向むだ時間ｄｔＲ(ave) を算出した後、ステップ５１０に進み、所定回数（例えば５回）のリーン方向むだ時間ｄｔＬの平均値である平均リーン方向むだ時間ｄｔＬ(ave) を算出する。
【００７４】
［異常診断］
図１１に示す異常診断プログラムは、図６の空燃比センサ異常診断メインプログラムのステップ１０６で実行されるサブルーチンであり、特許請求の範囲でいう異常診断手段としての役割を果たす。本プログラムが起動されると、まず、ステップ６０１で、全ての異常診断パラメータ、具体的には、平均リッチ方向反転周期ｃｔＲ(ave) 及び平均リーン方向反転周期ｃｔＬ(aveと) 、平均リッチ方向時定数ｒｅｓＲ(ave) 及び平均リーン方向時定数ｒｅｓＬ(ave) と、平均リッチ方向むだ時間ｄｔＲ(ave) 及び平均リーン方向むだ時間ｄｔＬ(ave) の算出を完了したか否かを判定する。
【００７５】
上記ステップ６０１で、全ての異常診断パラメータの算出を完了したと判定されたときに、ステップ６０２に進み、平均リッチ方向反転周期ｃｔＲ(ave) と平均リーン方向反転周期ｃｔＬ(ave) の合計値が異常判定値Ｋｃｔよりも大きいか否かを判定する。その結果、平均リッチ方向反転周期ｃｔＲ(ave) と平均リーン方向反転周期ｃｔＬ(ave) の合計値が異常判定値Ｋｃｔよりも大きいと判定された場合には、ステップ６０６に進み、空燃比センサ２５出力の反転周期の異常有りと判定する。
【００７６】
一方、上記ステップ６０２で、平均リッチ方向反転周期ｃｔＲ(ave) と平均リーン方向反転周期ｃｔＬ(ave) の合計値が異常判定値Ｋｃｔ以下であると判定された場合には、ステップ６０３に進み、平均リッチ方向時定数ｒｅｓＲ(ave) が異常判定値ＫｒｅｓＲ１よりも大きいか否かを判定すると共に、平均リーン方向時定数ｒｅｓＬ(ave) が異常判定値ＫｒｅｓＬ１よりも大きいか否かを判定する。
【００７７】
その結果、平均リッチ方向時定数ｒｅｓＲ(ave) が異常判定値ＫｒｅｓＲ１よりも大きいと判定された場合、又は、平均リーン方向時定数ｒｅｓＬ(ave) が異常判定値ＫｒｅｓＬ１よりも大きいと判定された場合には、ステップ６０７に進み、空燃比センサ２５のリッチ方向時定数の異常有り（リッチ方向時定数劣化有り）、又は、空燃比センサ２５のリーン方向時定数の異常有り（リーン方向時定数劣化有り）と判定する。
【００７８】
一方、上記ステップ６０３で、平均リッチ方向時定数ｒｅｓＲ(ave) が異常判定値ＫｒｅｓＲ１以下であり、且つ、平均リーン方向時定数ｒｅｓＬ(ave) が異常判定値ＫｒｅｓＬ１以下であると判定された場合には、ステップ６０４に進み、平均リッチ方向むだ時間ｄｔＲ(ave) が異常判定値ＫｄｔＲよりも大きいか否かを判定すると共に、平均リーン方向むだ時間ｄｔＬ(ave) が異常判定値ＫｄｔＬよりも大きいか否かを判定する。
【００７９】
その結果、平均リッチ方向むだ時間ｄｔＲ(ave) が異常判定値ＫｄｔＲ以下であり、且つ、平均リーン方向むだ時間ｄｔＬ(ave) が異常判定値ＫｄｔＬ以下であると判定された場合には、ステップ６０９に進み、空燃比センサ２５の異常無し（正常）と判定する。
【００８０】
一方、上記ステップ６０４で、平均リッチ方向むだ時間ｄｔＲ(ave) が異常判定値ＫｄｔＲよりも大きいと判定された場合、又は、平均リーン方向むだ時間ｄｔＬ(ave) が異常判定値ＫｄｔＬよりも大きいと判定された場合には、ステップ６０５に進み、平均リッチ方向時定数ｒｅｓＲ(ave) が判定値ＫｒｅｓＲ２よりも小さいか否かを判定すると共に、平均リーン方向時定数ｒｅｓＬ(ave) が判定値ＫｒｅｓＬ２よりも小さいか否かを判定する。これらの判定値ＫｒｅｓＲ２，ＫｒｅｓＬ２はそれぞれ異常判定値ＫｒｅｓＲ１，ＫｒｅｓＬ１よりも小さい値に設定されている。
【００８１】
その結果、平均リッチ方向時定数ｒｅｓＲ(ave) が判定値ＫｒｅｓＲ２よりも小さく、且つ、平均リーン方向時定数ｒｅｓＬ(ave) が判定値ＫｒｅｓＬ２よりも小さいと判定された場合には、ステップ６０８に進み、平均リッチ方向むだ時間ｄｔＲ(ave) が異常判定値ＫｄｔＲよりも大きい場合には、空燃比センサ２５のリッチ方向むだ時間の異常有り（リッチ方向むだ時間劣化有り）と判定し、平均リーン方向むだ時間ｄｔＬ(ave) が異常判定値ＫｄｔＬよりも大きい場合には、空燃比センサ２５のリーン方向むだ時間の異常有り（リーン方向むだ時間劣化有り）と判定する。
【００８２】
一方、上記ステップ６０５で、平均リッチ方向時定数ｒｅｓＲ(ave) が判定値ＫｒｅｓＲ２以上であると判定された場合、又は、平均リーン方向時定数ｒｅｓＬ(ave) が判定値ＫｒｅｓＬ２以上であると判定された場合には、時定数の影響で平均リッチ方向むだ時間ｄｔＲ(ave) や平均リーン方向むだ時間ｄｔＬ(ave) が異常判定値を越えたと判断して、ステップ６０９に進み、空燃比センサ２５の異常無し（正常）と判定する。
【００８３】
［異常診断用目標空燃比補正］
図１２に示す異常診断用目標空燃比補正プログラムは、エンジン運転中に所定周期（例えば５ｍｓｅｃ周期）で実行され、特許請求の範囲でいう異常診断用目標空燃比補正手段としての役割を果たす。本プログラムが起動されると、まず、ステップ７０１で、ＰＩ制御実行条件が成立しているか否かを判定する。もし、ＰＩ制御実行条件が不成立と判定されれば、異常診断用目標空燃比補正に関する処理（ステップ７０２〜７０７）を実行することなく、ステップ７０８に進み、通常サブフィードバック制御を実行して、通常空燃比制御中に、触媒２４の下流側の酸素センサ２６の出力に基づいて排出ガスの空燃比が触媒２４の浄化ウインド内（例えばストイキを含む範囲内）に収まるように目標空燃比を補正する。このステップ７０８の処理が、特許請求の範囲でいう目標空燃比補正手段としての役割を果たす。
【００８４】
一方、上記ステップ７０１で、ＰＩ制御実行条件が成立していると判定された場合には、ステップ７０２以降の異常診断用目標空燃比補正に関する処理を次のようにして実行する。まず、ステップ７０２で、下流側酸素センサ２６の出力電圧ＶＯＸ２が目標電圧Ｖtgよりも高いか否かによって、触媒２４を流れる排出ガスの空燃比がリッチかリーンかを判定する。
【００８５】
その結果、下流側酸素センサ２６の出力電圧ＶＯＸ２が目標電圧Ｖtgよりも高い、つまり、触媒２４を流れる排出ガスの空燃比がリッチであると判定された場合には、ステップ７０３に進み、異常診断用目標空燃比の中心値ｔｇλをリーン方向に所定値ＫＩＴＧＬＭＤだけ補正する。
ｔｇλ(i) ＝ｔｇλ(i-1) ＋ＫＩＴＧＬＭＤ
この後、ステップ７０４に進み、各種の閾値（リッチ方向閾値ＬＲ１，ＬＲ２，ＬＲ及びリーン方向閾値ＲＬ１，ＲＬ２，ＲＬ）もリーン方向に所定値ＫＩＴＧＬＭＤだけ補正する。
【００８６】
一方、上記ステップ７０２で、下流側酸素センサ２６の出力電圧ＶＯＸ２が目標電圧Ｖtgよりも低い、つまり、触媒２４を流れる排出ガスの空燃比がリーンであると判定された場合には、ステップ７０５に進み、異常診断用目標空燃比の中心値ｔｇλをリッチ方向に所定値ＫＩＴＧＬＭＤだけ補正する。
ｔｇλ(i) ＝ｔｇλ(i-1) −ＫＩＴＧＬＭＤ
この後、ステップ７０６に進み、各種の閾値（リッチ方向閾値ＬＲ１，ＬＲ２，ＬＲ及びリーン方向閾値ＲＬ１，ＲＬ２，ＲＬ）もリッチ方向に所定値ＫＩＴＧＬＭＤだけ補正する。
【００８７】
ここで、所定値ＫＩＴＧＬＭＤは、ＰＩ制御中に下流側酸素センサ２６の出力に基づいて異常診断用目標空燃比を補正する際の補正量が通常空燃比制御中に下流側酸素センサ２６の出力に基づいて目標空燃比を補正する際の補正量よりも小さくなるように設定されている。尚、異常診断用目標空燃比を補正する周期を長くすることで、ＰＩ制御中に異常診断用目標空燃比を補正する際の補正量が通常空燃比制御中に目標空燃比を補正する際の補正量よりも小さくなるようにしても良い。
【００８８】
異常診断用目標空燃比の中心値ｔｇλ及び各種の閾値を補正した後、ステップ７０７に進み、異常診断用目標空燃比の中心値ｔｇλから所定値ＫＰＩＴＧＬＭＤを減算してリッチ側目標空燃比ｔｇλＲを求め、異常診断用目標空燃比の中心値ｔｇλに所定値ＫＰＩＴＧＬＭＤを加算してリーン側目標空燃比ｔｇλＬを求める。
ｔｇλＲ＝ｔｇλ−ＫＰＩＴＧＬＭＤ
ｔｇλＬ＝ｔｇλ＋ＫＰＩＴＧＬＭＤ
【００８９】
以上の処理により、ＰＩ制御中（異常診断用空燃比制御中）に、触媒２４の下流側の酸素センサ２６の出力に基づいて排出ガスの空燃比が触媒２４の浄化ウインド内（例えばストイキ及びその近傍の範囲内）に収まるように異常診断用目標空燃比を補正する。
【００９０】
以上説明した本実施例では、ＰＩ制御によって空燃比センサ２５の検出空燃比ｓｇλを周期的に変化させた状態で、空燃比センサ２５の時定数ｒｅｓとむだ時間ｄｔを検出するため、時定数ｒｅｓとむだ時間ｄｔを精度良く検出することができ、しかも、これらの時定数ｒｅｓとむだ時間ｄｔとを用いて異常診断を行うため、空燃比センサ２５の時定数劣化とむだ時間劣化の影響を区別して異常診断を行うことができる。これにより、時定数劣化やむだ時間劣化の発生時に適正なタイミングで異常有りと判定することができ（例えば、時定数劣化の発生時には、時定数劣化が排気エミッションに悪影響を及ぼすレベルに達したタイミングで異常有りと判定することができ、むだ時間劣化の発生時には、むだ時間劣化が排気エミッションに悪影響を及ぼすレベルに達したタイミングで異常有りと判定することができ）、空燃比センサ２５の異常診断精度を向上させることができる。
【００９１】
更に、本実施例では、ＰＩ制御中に空燃比センサ２５の検出空燃比ｓｇλがリッチ側目標空燃比ｔｇλＲよりもリッチになったときに異常診断用目標空燃比をリーン側目標空燃比ｔｇλＬに切り換え、検出空燃比ｓｇλがリーン側目標空燃比ｔｇλＬよりもリーンになったときに異常診断用目標空燃比をリッチ側目標空燃比ｔｇλＲに切り換えるようにしたので、ＰＩ制御中に検出空燃比ｓｇλの変化量（振幅）を大きくすることができ、空燃比センサ２５の時定数ｒｅｓやむだ時間ｄｔの検出精度を向上させることができる。
【００９２】
また、本実施例では、ＰＩ制御中に検出空燃比ｓｇλが所定区間を通過するのに要する時間を時定数ｒｅｓとして検出するようにしたので、空燃比センサ２５のむだ時間の影響を受けにくい区間を所定区間として設定して、その所定区間を検出空燃比ｓｇλが通過するのに要する時間を時定数ｒｅｓとして検出することができ、時定数ｒｅｓを精度良く検出することができる。
【００９３】
一方、むだ時間ｄｔの検出は、例えば、ＰＩ制御中に空燃比補正量ＣＦＢがそれまでとは反対方向にスキップ量ＫＰＣＦＢだけ補正された時点から検出空燃比ｓｇλがそれまでとは反対方向に変化し始めるまでの時間をむだ時間ｄｔとして検出すれば、実空燃比の変化が検出空燃比ｓｇλ（センサ出力）の変化に現れるまでの時間を精度良く反映したむだ時間ｄｔを検出することができるが、検出空燃比ｓｇλがそれまでとは反対方向に変化し始める時点（つまり検出空燃比ｓｇλの極値）付近では、検出空燃比ｓｇλの変化量が非常に小さくなってノイズの影響を受け易くなるため、ノイズの影響が大きい場合には、検出空燃比ｓｇλの極値を精度良く判定することが難しくなる。
【００９４】
そこで、本実施例では、ＰＩ制御中に空燃比補正量ＣＦＢがそれまでとは反対方向にスキップ量ＫＰＣＦＢだけ補正された時点から検出空燃比ｓｇλが所定の閾値を越えるまでの時間をむだ時間ｄｔとして検出するようにしている。検出空燃比ｓｇλの極値の判定に比べて検出空燃比ｓｇλが閾値を越えたか否かの判定は、ノイズの影響を受け難く比較的簡単に判定することができるため、むだ時間ｄｔを比較的簡単に且つ精度良く検出することができる。
【００９５】
しかしながら、本発明は、ＰＩ制御中に空燃比補正量ＣＦＢがそれまでとは反対方向にスキップ量ＫＰＣＦＢだけ補正された時点から検出空燃比ｓｇλがそれまでとは反対方向に変化し始めるまでの時間をむだ時間ｄｔとして検出するようにしても良いことは言うまでもない。
【００９６】
また、本実施例では、ＰＩ制御中に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ補正された時点から次に空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ補正された時点までの時間を反転周期ｃｔとして検出し、この反転周期ｃｔに基づいて空燃比センサ２５の異常の有無を診断するようにしたので、空燃比センサ２５出力の反転周期の異常も検出することができる。
【００９７】
また、本実施例では、空燃比補正量ＣＦＢがスキップ量ＫＰＣＦＢだけ補正される際の変化割合を異常診断用目標空燃比がリーン側目標空燃比ｔｇλＬとリッチ側目標空燃比ｔｇλＲとの間で切り換えられる際の変化割合よりも大きくするようにしたので、異常診断用目標空燃比の変化幅を排気エミッションの悪化を防止できる程度に抑えながら、空燃比補正量ＣＦＢのスキップ量ＫＰＣＦＢを大きくして実空燃比の変化速度を大きくすることができて、空燃比センサ２５の時定数ｒｅｓやむだ時間ｄｔの検出精度を向上させることができる。
【００９８】
ところで、ＰＩ制御中は、通常の空燃比フィードバック制御が停止されるため、排出ガスの空燃比が触媒２４の浄化ウインドからはみ出して排気エミッションが悪化する可能性がある。
【００９９】
その対策として、本実施例では、ＰＩ制御中に触媒２４の下流側の酸素センサ２６の出力に基づいて異常診断用目標空燃比を補正することで、排出ガスの空燃比が触媒２４の浄化ウインド内に収まるように異常診断用目標空燃比を補正するようにしたので、ＰＩ制御中の排気エミッションを向上させることができる。
【０１００】
また、ＰＩ制御中に下流側酸素センサ２６の出力に基づいて異常診断用目標空燃比を補正する際の補正量を、通常空燃比制御中に下流側酸素センサ２６の出力に基づいて目標空燃比を補正する際の補正量と同じにすると、異常診断用目標空燃比の変動が大きくなり過ぎて検出空燃比ｓｇλが大きくばらつくため、時定数ｒｅｓやむだ時間ｄｔがばらついて時定数ｒｅｓやむだ時間ｄｔの検出精度が低下する可能性がある。
【０１０１】
その点、本実施例では、ＰＩ制御中に下流側酸素センサ２６の出力に基づいて異常診断用目標空燃比を補正する際の補正量を通常空燃比制御中に下流側酸素センサ２６の出力に基づいて目標空燃比を補正する際の補正量よりも小さくするようにしたので、検出空燃比ｓｇλのばらつくきを小さくして、時定数ｒｅｓやむだ時間ｄｔのばらつきを小さくすることができ、時定数ｒｅｓやむだ時間ｄｔの検出精度を確保することができる。
【０１０２】
尚、上記実施例では、空燃比センサ２５のリッチ方向時定数とリーン方向時定数とリッチ方向むだ時間とリーン方向むだ時間の全ての異常の有無を診断するようにしたが、リッチ方向時定数とリーン方向時定数とリッチ方向むだ時間とリーン方向むだ時間のうちの少なくとも１つの異常の有無を診断するようにしても良い。
【０１０３】
また、上記実施例では、触媒２４の下流側に排出ガスのリッチ／リーンを検出する酸素センサ２６を配置したが、触媒２４の下流側に排出ガスの空燃比をリニアに検出する空燃比センサを配置し、この下流側空燃比センサの出力に基づいてＰＩ制御中に異常診断用目標空燃比を補正するようにしても良い。
【０１０４】
その他、本発明は、空燃比センサ２５の時定数情報やむだ時間情報の検出方法を適宜変更して実施したり、時定数情報やむだ時間情報に基づいた異常の有無の診断方法を適宜変更して実施しても良い。
【図面の簡単な説明】
【０１０５】
【図１】本発明の一実施例におけるエンジン制御システム全体の概略構成図である。
【図２】ＰＩ制御を説明するためのタイムチャートである。
【図３】反転周期の算出方法を説明するためのタイムチャートである。
【図４】時定数の算出方法を説明するためのタイムチャートである。
【図５】むだ時間の算出方法を説明するためのタイムチャートである。
【図６】空燃比センサ異常診断メインプログラムの処理の流れを示すフローチャートである。
【図７】ＰＩ制御プログラムの処理の流れを示すフローチャートである。
【図８】反転周期算出プログラムの処理の流れを示すフローチャートである。
【図９】時定数算出プログラムの処理の流れを示すフローチャートである。
【図１０】むだ時間算出プログラムの処理の流れを示すフローチャートである。
【図１１】異常診断プログラムの処理の流れを示すフローチャートである。
【図１２】異常診断用目標空燃比補正プログラムの処理の流れを示すフローチャートである。
【符号の説明】
【０１０６】
１１…エンジン（内燃機関）、１２…吸気管、１６…スロットルバルブ、２１…燃料噴射弁、２２…点火プラグ、２３…排気管（排気通路）、２４…触媒、２５…空燃比センサ、２６…酸素センサ（下流側空燃比センサ）、２９…ＥＣＵ（異常診断用空燃比制御手段，時定数検出手段，むだ時間検出手段，異常診断手段，反転周期検出手段，異常診断用目標空燃比補正手段，目標空燃比補正手段）
【図１】
2006057587.tif 000003
【図２】
2006057587.tif 000004
【図３】
2006057587.tif 000005
【図４】
2006057587.tif 000006
【図５】
2006057587.tif 000007
【図６】
2006057587.tif 000008
【図７】
2006057587.tif 000009
【図８】
2006057587.tif 000010
【図９】
2006057587.tif 000011
【図１０】
2006057587.tif 000012
【図１１】
2006057587.tif 000013
【図１２】
2006057587.tif 000014