(57)【特許請求の範囲】
【請求項１】
内燃機関の空燃比をフィードバック制御する空燃比制御システムと、
前記空燃比制御手段による空燃比のフィードバック補正量が所定範囲外になっている状態の継続時間に基づいて前記空燃比制御システムの異常の有無を所定の判定条件を用いて判定する異常検出手段と、
燃料タンク内の燃料残量を検出する燃料残量検出手段と、
前記継続時間に対する判定条件を前記燃料残量に応じて切り換える判定条件切換手段とを備えていることを特徴とする内燃機関の異常診断装置。
【請求項２】
内燃機関の排ガスの空燃比又はリッチ／リーンを検出する空燃比検出システムと、
前記空燃比検出システムの出力が所定範囲外になっている状態の継続時間に基づいて前記空燃比検出システムの異常の有無を所定の判定条件を用いて判定する異常判定手段と、
燃料タンク内の燃料残量を検出する燃料残量検出手段と、
前記継続時間に対する判定条件を前記燃料残量に応じて切り換える判定条件切換手段とを備えていることを特徴とする内燃機関の異常診断装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関（エンジン）を制御又は駆動するシステムの異常の有無を判定をする内燃機関の異常診断装置に関するものである。
【０００２】
【従来の技術】
従来より、自動車のエンジンの異常診断装置として、例えば、エンジン回転数の変動等から失火を検出し、失火検出回数が所定期間中に所定の判定回数を越えた時に、点火プラグ等の点火システムの異常と判定するようにしたものがある。また、排ガスの空燃比を目標空燃比（理論空燃比）にフィードバック制御する空燃比制御システムでは、空燃比フィードバック補正量が正常範囲外となっている状態が所定の判定時間を越えた時に、空燃比制御システムの異常と判定するようにしたものがある。更に、排ガスの空燃比のリッチ／リーンを検出する酸素センサの出力信号がリッチ側又はリーン側のどちらか一方に張り付いた状態が所定の判定時間を越えた時に、酸素センサの異常と判定するようにしたものもある。
【０００３】
【発明が解決しようとする課題】
ところで、燃料タンク内の燃料が残り少なくなると、燃料ポンプにエアーが吸い込まれやすくなる。燃料ポンプにエアーが吸い込まれると、燃料ポンプが正常に動作していても、エンジンに必要な燃料を供給できなくなるため、失火が発生しやすくなり、失火検出回数が増えて点火システムの異常と誤判定するおそれがある。また、燃料ポンプのエアーの吸い込みにより、エンジンに必要な燃料を供給できなくなると、空燃比フィードバック制御が正常に働かなくなって、空燃比フィードバック補正量（目標空燃比に対する実際の空燃比のずれ量）が正常範囲外となっている状態が長く続いて空燃比制御システムの異常と誤判定したり、或は、酸素センサの出力信号がリーン側に張り付いた状態が長く続いて酸素センサの異常と誤判定したりするおそれがある。
【０００４】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、燃料残量の低下（燃料ポンプのエアーの吸い込み）により発生する一時的な異常現象をシステムの異常と誤判定することを未然に防止することができ、異常診断の信頼性を向上できる内燃機関の異常診断装置を提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、請求項１のように、フィードバック補正量が所定範囲外になっている状態の継続時間に基づいて空燃比制御システムの異常の有無を判定する場合は、この継続時間に対する判定条件を燃料残量に応じて切り換えるようにすると良い。このようにすれば、燃料残量低下時に発生する燃料ポンプのエアーの吸い込みにより空燃比のフィードバック補正量（目標空燃比に対する実際の空燃比のずれ量）が一時的に大きくなっても、その状態の継続時間が異常判定時間を越えないようにすることができ、燃料残量の低下によるフィードバック補正量の一時的な異常を空燃比制御システムの異常と誤判定することを未然に防止できる。
【０００６】
また、請求項２のように、空燃比検出システムの出力が所定範囲外になっている状態の継続時間に基づいて空燃比検出システムの異常の有無を判定する場合は、この継続時間に対する判定条件を燃料残量に応じて切り換えるようにすると良い。このようにすれば、燃料残量低下時に発生する燃料ポンプのエアーの吸い込みにより空燃比検出システムの出力が異常な挙動を示すようになっても、その状態の継続時間が異常判定時間を越えないようにすることができ、燃料残量の低下による空燃比検出システムの出力の一時的な異常を空燃比検出システムの異常と誤判定することを未然に防止できる。
【０００７】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側には、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、スロットルバルブ１５とスロットル開度を検出するスロットル開度センサ１６とが設けられている。
【０００８】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７に、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、この吸気マニホールド１９の各気筒の分岐管部にそれぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。
【０００９】
各燃料噴射弁２０には、燃料タンク２１内の燃料（ガソリン）が燃料ポンプ（図示せず）により燃料配管（図示せず）を介して送られてくる。燃料タンク２１には、燃料残量を検出するフューエルセンサ２２（燃料残量検出手段）が設けられている。
【００１０】
エンジン１１のシリンダヘッドには、気筒毎に点火プラグ２３が取り付けられ、点火タイミング毎に点火コイル２４の二次側に発生する高電圧が各気筒の点火プラグ２３に印加され、点火される。このエンジン１１には、エンジン回転数を検出するエンジン回転数センサ２５と、冷却水温を検出する冷却水温センサ２６とが取り付けられている。
【００１１】
エンジン１１の排気管２７の途中には、排ガス中の有害成分（ＣＯ，ＨＣ，ＮＯｘ等）を低減させる三元触媒等の触媒２８が設置され、この触媒２８の上流側に、酸素センサ２９が設置されている。この酸素センサ２９は、排ガスの空燃比が理論空燃比に対してリッチかリーンかによって出力電圧が例えば１Ｖと０Ｖとの間で反転する（図７参照）。
【００１２】
一方、エンジン回転数センサ２５や酸素センサ２９等の各種のセンサ出力信号は、エンジン制御回路３０に入力される。このエンジン制御回路３０は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された点火制御プログラム、空燃比フィードバック制御プログラム、燃料噴射制御プログラムを実行することで、点火制御、空燃比フィードバック制御、燃料噴射制御を行う。更に、エンジン制御回路３０は、ＲＯＭに記憶された図２、図４及び図６の各システムの異常判定プログラムを実行することで、各システムの異常の有無を判定する異常判定手段としての役割を果たす。そして、システムの異常有り（フェイル）と判定した時には、図８のフェイル処理プログラムによって所定のフェイル処理を行う。以下、これら各プログラムの処理内容を説明する。
【００１３】
［点火システム異常判定］
図２の点火システム異常判定プログラムは、点火毎（例えば４気筒エンジンでは１８０℃Ａ毎）に実行され、点火プラグ２３、点火コイル２４等の点火システムの異常の有無を次のようにして判定する。まず、ステップ１０１で、異常判定実行条件が成立しているか否かを判定する。ここで、異常判定実行条件は、例えば、エンジン回転数、吸気管圧力、冷却水温がそれぞれ所定範囲内であること、エンジン１１が定常状態であること（例えば吸気管圧力変動が小さいこと）、エアコン等の電気負荷のオン／オフの切り換えが行われていないこと等である。これらの条件を全て満たせば、異常判定実行条件が成立するが、いずれか１つでも満たさない条件があれば、異常判定実行条件が不成立となる。もし、異常判定実行条件が不成立であれば、以降の異常判定処理（ステップ１０２〜１１３）を行わずに本プログラムを終了する。
【００１４】
一方、異常判定実行条件が成立していれば、ステップ１０２に進み、回転回数カウンタｃｒｅｖを「１」だけインクリメントする。この回転回数カウンタｃｒｅｖは、１８０℃Ａ毎（点火毎）に「１」ずつインクリメントされるため、回転回数カウンタｃｒｅｖの２カウントが、クランク軸の１回転（３６０℃Ａ）に相当する。この回転回数カウンタｃｒｅｖは、後述する失火検出回数ｃｍｆをカウントする期間を定めるものである。尚、回転回数カウンタｃｒｅｖの初期値は「０」である（ステップ１１３）。
【００１５】
次のステップ１０３で、クランク軸が１８０℃Ａ回転するのに要した時間を検出し、この時間から１８０℃Ａ間のクランク角速度ｏｍｇ（ｎ）を算出する。この後、ステップ１０４で、エンジン回転変動ｄｏｍｇを次式により算出する。
【００１６】
ｄｏｍｇ＝ｏｍｇ（ｎ−１）−ｏｍｇ（ｎ）
ここで、ｏｍｇ（ｎ−１）は１点火前（１８０℃Ａ前）のクランク角速度である。
【００１７】
この後、ステップ１０５で、エンジン回転変動ｄｏｍｇが失火判定値ｒｅｆｍｆ１よりも大きいか否かで失火の有無を判定する。この際、失火判定値ｒｅｆｍｆ１は、エンジン回転数と吸気管圧力に基づいてマップ又は数式により設定される。このステップ１０５の処理が特許請求の範囲でいう失火検出手段としての役割を果たす。もし、このステップ１０５で、エンジン回転変動ｄｏｍｇが失火判定値ｒｅｆｍｆ１以下と判定されれば、失火が発生していないと判断して、本プログラムを終了する。
【００１８】
一方、上記ステップ１０５で、エンジン回転変動ｄｏｍｇが失火判定値ｒｅｆｍｆ１よりも大きいと判定された場合は、失火が発生したと判断して、ステップ１０６に進み、失火検出回数をカウントする失火検出回数カウンタｃｍｆを「１」だけインクリメントした後、ステップ１０７で、回転回数カウンタｃｒｅｖのカウント値が失火検出回数ｃｍｆのカウント期間、例えば４００（＝２００回転）を越えたか否かを判定する。もし、回転回数カウンタｃｒｅｖが４００以下であれば、失火検出回数ｃｍｆのカウント期間が終了していないため、そのまま本プログラムを終了する。
【００１９】
その後、上記ステップ１０７で、回転回数カウンタｃｒｅｖが４００を越えた時に、失火検出回数ｃｍｆのカウント期間が終了したと判断して、ステップ１０８に進み、フューエルセンサ２２で検出した燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆよりも多いか否かを判定する。ここで、所定値Ｆは、燃料ポンプのエアーの吸い込みが発生しない最低の燃料残量（例えば２リットル）に設定されている。
【００２０】
このステップ１０８で、燃料残量ｌｆｇが所定値Ｆよりも多いと判定されたときは、燃料ポンプのエアーの吸い込みによる失火が発生しないと判断して、ステップ１０９に進み、失火検出回数ｃｍｆを通常の異常判定回数ｒｅｆｍｆ２と比較する。もし、失火検出回数ｃｍｆが通常の異常判定回数ｒｅｆｍｆ２を越えていれば、点火システムの異常有りと判断して、ステップ１１１に進み、後述する図８のフェイル処理プログラムを実行してフェイル処理を行う。この後、ステップ１１２で、失火検出回数カウンタｃｍｆを「０」にリセットし、続くステップ１１３で、回転回数カウンタｃｒｅｖを「０」にリセットして本プログラムを終了する。
【００２１】
一方、ステップ１０９で、失火検出回数ｃｍｆが通常の異常判定回数ｒｅｆｍｆ２以下と判定された場合は、点火システムの異常無しと判断して、フェイル処理（ステップ１１１）を行うことなく、失火検出回数カウンタｃｍｆと回転回数カウンタｃｒｅｖを「０」にリセットし（ステップ１１２，１１３）、本プログラムを終了する。
【００２２】
これに対して、上記ステップ１０８で、燃料残量ｌｆｇが所定値Ｆ以下と判定された場合は、燃料ポンプのエアーの吸い込みによる失火が発生しやすいと判断して、ステップ１１０に進み、失火検出回数ｃｍｆが燃料残量低下時の異常判定回数ｒｅｆｍｆ３を越えたか否かを判定する。この燃料残量低下時の異常判定回数ｒｅｆｍｆ３は、通常の異常判定回数ｒｅｆｍｆ２よりも大きい値、例えば、１．５倍の値に設定されている（ｒｅｆｍｆ３＝ｒｅｆｍｆ２×１．５）。
【００２３】
もし、失火検出回数ｃｍｆが燃料残量低下時の異常判定回数ｒｅｆｍｆ３を越えていれば、点火システムの異常有りと判断して、図８のフェイル処理プログラムを実行し、フェイル処理を行った後、失火検出回数カウンタｃｍｆと回転回数カウンタｃｒｅｖを「０」にリセットして（ステップ１１１〜１１３）、本プログラムを終了する。
【００２４】
一方、ステップ１１０で、失火検出回数ｃｍｆが燃料残量低下時の異常判定回数ｒｅｆｍｆ３以下と判定された場合は、点火システムの異常無しと判断して、フェイル処理（ステップ１１１）を行うことなく、失火検出回数カウンタｃｍｆと回転回数カウンタｃｒｅｖを「０」にリセットし（ステップ１１２，１１３）、本プログラムを終了する。この場合、ステップ１０８〜１１０の処理が特許請求の範囲でいう判定条件切換手段としての役割を果たす。
【００２５】
以上説明した点火システムの異常判定処理の実行例を図３のタイムチャートを用いて説明する。図３は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になるときのエンジン回転数ＮＥ、エンジン回転変動ｄｏｍｇ、失火検出回数ｃｍｆ、警告ランプの状態を示している。燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下のときには、燃料ポンプがエアーを吸い込みやすく、エアーの吸い込みによる失火が発生しやすいと判断して、失火検出回数ｃｍｆに対する異常判定回数を通常の異常判定回数ｒｅｆｍｆ２よりも大きい燃料残量低下時の異常判定回数ｒｅｆｍｆ３に切り換える。このため、燃料残量の低下（燃料ポンプのエアーの吸い込み）により失火が発生しても、失火カウント期間中の失火検出回数ｃｍｆが燃料残量低下時の異常判定回数ｒｅｆｍｆ３を越えなくなる（図３の例では、失火検出回数ｃｍｆが燃料残量低下時の異常判定回数ｒｅｆｍｆ３に到達する前にガス欠によるエンストが発生する）。これにより、燃料残量低下時の燃料ポンプのエアーの吸い込みによる一時的な失火によって点火システムの異常有りと誤判定されることが未然に防止される。
【００２６】
ちなみに、従来は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になっても、通常の異常判定回数ｒｅｆｍｆ２を用いるため、失火カウント期間中の失火検出回数ｃｍｆが異常判定回数ｒｅｆｍｆ２を越えてしまい、点火システムの異常有りと誤判定されてしまう。
【００２７】
尚、本実施形態では、エンジン回転変動を検出して失火を検出するようにしたが、混合気の燃焼に伴って発生するイオン電流を点火プラグ２３等で検出して失火の有無を判定したり、燃焼光を検出する燃焼光センサや、筒内圧を検出する筒内圧センサの出力から失火の有無を判定するようにしても良い。
【００２８】
［空燃比制御システム異常判定］
次に、図４及び図５に基づいて空燃比制御システムの異常判定処理を説明する。エンジン制御回路３０は、空燃比フィードバック実行条件が成立している時に、酸素センサ２９の出力信号に基づいて、排ガスの空燃比を目標空燃比（理論空燃比）に一致させるように、空燃比をフィードバック制御する。この際、エンジン制御回路３０は、図４の空燃比制御システム異常判定プログラムを所定時間毎（例えば５０ｍｓｅｃ毎）に実行することで、空燃比フィードバック補正係数ｆａｆに基づいて、燃料噴射弁２０（燃料供給系）、酸素センサ２９等からなる空燃比制御システムの異常の有無を次のようにして判定する。
【００２９】
まず、ステップ３０１で、図２のステップ１０１と同じ異常判定実行条件が成立しているか否かを判定し、この異常判定実行条件が不成立であれば、以降の異常判定処理を行うことなく、本プログラムを終了する。
【００３０】
一方、異常判定実行条件が成立していれば、ステップ３０２に進み、空燃比フィードバック補正係数ｆａｆが下限値ｆｍｉｎ以下であるか否かを判定する。ここで、下限値ｆｍｉｎは、空燃比フィードバック補正係数ｆａｆの下限ガード値であり、例えば−２０％に設定されている。もし、空燃比フィードバック補正係数ｆａｆが下限値ｆｍｉｎ以下であれば、ステップ３０３に進み、現在までの下限側異常値の継続時間ｌｃｆｓを、前回までの継続時間ｌｃｆｓに処理周期５０ｍｓｅｃを加算して求める（ｌｃｆｓ＝ｌｃｆｓ＋５０ｍｓｅｃ）。この後、ステップ３０４で、後述する上限側異常値の継続時間ｈｃｆｓを「０」にリセットする。
【００３１】
上記ステップ３０２で、空燃比フィードバック補正係数ｆａｆが下限値ｆｍｉｎより大きいと判定された場合は、ステップ３０５に進み、空燃比フィードバック補正係数ｆａｆが上限値ｆｍａｘ以上であるか否かを判定する。この上限値ｆｍａｘは、空燃比フィードバック補正係数ｆａｆの上限ガード値であり、例えば２０％に設定されている。もし、空燃比フィードバック補正係数ｆａｆが上限値ｆｍａｘ以上であれば、ステップ３０６に進み、現在までの上限側異常値の継続時間ｈｃｆｓを、前回までの継続時間ｈｃｆｓに処理周期５０ｍｓｅｃを加算して求める（ｈｃｆｓ＝ｈｃｆｓ＋５０ｍｓｅｃ）。この後、ステップ３０７で、下限側異常値の継続時間ｌｃｆｓを「０」にリセットする。尚、空燃比フィードバック補正係数ｆａｆが正常範囲内（ｆｍｉｎ＜ｆａｆ＜ｆｍａｘ）の場合は、そのまま本プログラムを終了する。
【００３２】
空燃比フィードバック補正係数ｆａｆが正常範囲外（ｆａｆ≦ｆｍｉｎ又はｆａｆ≧ｆｍａｘ）の場合は、ステップ３０３，３０４又はステップ３０６，３０７からステップ３０８に進み、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ（例えば２リットル）よりも多いか否かを判定し、燃料残量ｌｆｇが所定値Ｆよりも多いと判定されれば、ステップ３０９，３１０の処理により、下限側異常値の継続時間ｌｃｆｓと上限側異常値の継続時間ｈｃｆｓを、通常の異常判定時間（例えば１０ｓｅｃ）と比較して空燃比制御システムの異常の有無を判定する。
具体的には、ステップ３０９で、下限側異常値の継続時間ｌｃｆｓが通常の異常判定時間１０ｓｅｃを越えたか否かを判定し、通常の異常判定時間１０ｓｅｃを越えていれば、空燃比制御システムの異常有りと判断して、ステップ３１３に進み、図８のフェイル処理プログラムを実行する。
【００３３】
一方、下限側異常値の継続時間ｌｃｆｓが通常の異常判定時間１０ｓｅｃ以下であれば、ステップ３１０に進み、上限側異常値の継続時間ｈｃｆｓが通常の異常判定時間１０ｓｅｃを越えたか否かを判定し、通常の異常判定時間１０ｓｅｃを越えていれば、空燃比制御システムの異常有りと判断して、ステップ３１３に進み、図８のフェイル処理プログラムを実行する。
【００３４】
これら２つのステップ３０９，３１０で、いずれも「Ｎｏ」と判定されれば、空燃比制御システムの異常無しと判断して、フェイル処理（ステップ３１３）を行うことなく、本プログラムを終了する。
【００３５】
これに対し、上記ステップ３０８で、燃料残量ｌｆｇが所定値Ｆ以下と判定された場合は、燃料ポンプがエアーを吸い込みやすく、空燃比がリーンになりやすい状態となっているため、空燃比フィードバック補正係数ｆａｆが異常となりやすいと判断して、ステップ３１１，３１２の処理により、下限側異常値の継続時間ｌｃｆｓと上限側異常値の継続時間ｈｃｆｓを、通常の異常判定時間よりも長い燃料残量低下時の異常判定時間（例えば１５ｓｅｃ）と比較して空燃比制御システムの異常の有無を判定する。
【００３６】
具体的には、ステップ３１１で、下限側異常値の継続時間ｌｃｆｓが燃料残量低下時の異常判定時間１５ｓｅｃを越えたか否かを判定し、燃料残量低下時の異常判定時間１５ｓｅｃを越えていれば、空燃比制御システムの異常有りと判断して、図８のフェイル処理プログラムを実行する（ステップ３１３）。
【００３７】
一方、下限側異常値の継続時間ｌｃｆｓが燃料残量低下時の異常判定時間１５ｓｅｃ以下の場合は、上限側異常値の継続時間ｈｃｆｓが燃料残量低下時の異常判定時間１５ｓｅｃを越えたか否かを判定し（ステップ３１２）、燃料残量低下時の異常判定時間１５ｓｅｃを越えていれば、空燃比制御システムの異常有りと判断して、図８のフェイル処理プログラムを実行する（ステップ３１３）。
【００３８】
これら２つのステップ３１１，３１２で、いずれも「Ｎｏ」と判定されれば、空燃比制御システムの異常無しと判断して、フェイル処理（ステップ３１３）を行うことなく、本プログラムを終了する。この場合、ステップ３０８〜３１２の処理が特許請求の範囲でいう判定条件切換手段としての役割を果たす。
【００３９】
以上説明した空燃比制御システムの異常判定処理の実行例を図５のタイムチャートを用いて説明する。図５は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になるときの空燃比フィードバック補正係数ｆａｆ、上限側異常値の継続時間ｈｃｆｓ、警告ランプの状態を示している。空燃比フィードバック補正係数ｆａｆは、上限値ｆｍａｘ（２０％）と下限値ｆｍｉｎ（−２０％）でガード処理される。
【００４０】
燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下のときには、燃料ポンプがエアーを吸い込みやすく、空燃比がリーンになりやすい状態となっているため、空燃比フィードバック補正係数ｆａｆが異常になりやすいと判断して、上限側／下限側異常値の継続時間ｈｃｆｓ，ｌｃｆｓに対する異常判定時間を、通常の異常判定時間１０ｓｅｃよりも長い燃料残量低下時の異常判定時間１５ｓｅｃに切り換える。このため、燃料残量の低下（燃料ポンプのエアーの吸い込み）により空燃比フィードバック補正係数ｆａｆが上限値ｆｍａｘ（２０％）以上になっても、上限側異常値の継続時間ｈｃｆｓが燃料残量低下時の異常判定時間１５ｓｅｃを越えなくなる（図５の例では、上限側異常値の継続時間ｈｃｆｓが燃料残量低下時の異常判定時間１５ｓｅｃに到達する前に、ガス欠によるエンストが発生する）。これにより、燃料残量低下時の燃料ポンプのエアーの吸い込みによる空燃比フィードバック補正係数ｆａｆの一時的な異常によって空燃比制御システムの異常有りと誤判定されることが未然に防止される。
【００４１】
ちなみに、従来は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になっても、通常の異常判定時間１０ｓｅｃを用いるため、上限側異常値の継続時間ｈｃｆｓが異常判定時間１０ｓｅｃを越えてしまい、空燃比制御システムの異常有りと誤判定されてしまう。
【００４２】
［空燃比検出システム異常判定］
次に、図６及び図７に基づいて空燃比検出システムの異常判定処理を説明する。エンジン制御回路３０は、図６の空燃比検出システム異常判定プログラムを所定時間毎（例えば５０ｍｓｅｃ毎）に実行することで、酸素センサ２９の出力電圧ｏｘａｄが所定範囲外（例えばｏｘａｄ＜０．３Ｖ，ｏｘａｄ＞０．６Ｖ）となっている状態の継続時間に基づいて、酸素センサ２９等の空燃比検出システムの異常の有無を次のようにして判定する。
【００４３】
まず、ステップ４０１で、図２のステップ１０１と同じ異常判定実行条件が成立しているか否かを判定し、この異常判定実行条件が不成立であれば、以降の異常判定処理を行うことなく、本プログラムを終了する。
【００４４】
一方、異常判定実行条件が成立していれば、ステップ４０２に進み、酸素センサ２９の出力電圧ｏｘａｄが例えば０．３Ｖよりも低いか否かを判定する。前述したように、酸素センサ２９の出力電圧ｏｘａｄは、排ガスの空燃比のリッチ／リーンに応じて１Ｖと０Ｖとの間で反転する（図７参照）。従って、酸素センサ２９の出力電圧ｏｘａｄが０．３Ｖよりも低ければ、酸素センサ２９の出力電圧ｏｘａｄが０Ｖ（リーン）と判断して、ステップ４０３に進み、現在までのリーン状態の継続時間ｌｃｏｘを前回までの継続時間ｌｃｏｘに処理周期５０ｍｓｅｃを加算して求める（ｌｃｏｘ＝ｌｃｏｘ＋５０ｍｓｅｃ）。この後、ステップ３０４で、後述するリッチ状態の継続時間ｈｃｏｘを「０」にリセットする。
【００４５】
上記ステップ４０２で、酸素センサ２９の出力電圧ｏｘａｄが０．３Ｖ以上と判定された場合は、ステップ４０５に進み、酸素センサ２９の出力電圧ｏｘａｄが例えば０．６Ｖよりも高いか否かを判定する。酸素センサ２９の出力電圧ｏｘａｄが０．６Ｖよりも高ければ、酸素センサ２９の出力電圧ｏｘａｄが１Ｖ（リッチ）と判断して、ステップ４０６に進み、現在までのリッチ状態の継続時間ｈｃｏｘを前回までの継続時間ｈｃｏｘに処理周期５０ｍｓｅｃを加算して求める（ｈｃｏｘ＝ｈｃｏｘ＋５０ｍｓｅｃ）。この後、ステップ４０７で、リーン状態の継続時間ｌｃｏｘを「０」にリセットする。
【００４６】
その後、ステップ４０４又は４０７からステップ４０８に進み、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ（例えば２リットル）よりも多いか否かを判定し、燃料残量ｌｆｇが所定値Ｆよりも多いと判定されたときは、ステップ４０９，４１０の処理により、リーン状態の継続時間ｌｃｏｘとリッチ状態の継続時間ｈｃｏｘを、通常の異常判定時間（例えば１０ｓｅｃ）と比較して空燃比検出システムの異常の有無を判定する。
【００４７】
具体的には、ステップ４０９で、リーン状態の継続時間ｌｃｏｘが通常の異常判定時間１０ｓｅｃを越えたか否かを判定し、通常の異常判定時間１０ｓｅｃを越えていれば、空燃比検出システムの異常有りと判断して、ステップ４１３に進み、図８のフェイル処理プログラムを実行する。
【００４８】
一方、リーン状態の継続時間ｌｃｏｘが通常の異常判定時間１０ｓｅｃ以下の場合は、次のステップ４１０に進み、リッチ状態の継続時間ｈｃｏｘが通常の異常判定時間１０ｓｅｃを越えたか否かを判定し、通常の異常判定時間１０ｓｅｃを越えていれば、空燃比検出システムの異常有りと判断して、ステップ４１３に進み、図８のフェイル処理プログラムを実行する。
【００４９】
これら２つのステップ４０９，４１０で、いずれも「Ｎｏ」と判定されれば、空燃比検出システムの異常無しと判断して、フェイル処理（ステップ４１３）を行うことなく、本プログラムを終了する。
【００５０】
これに対し、上記ステップ４０８で、燃料残量ｌｆｇが所定値Ｆ以下と判定された場合は、燃料ポンプがエアーを吸い込みやすく、空燃比がリーンになりやすい状態となっているため、酸素センサ２９の出力が異常な挙動を示しやすいと判断して、ステップ４１１，４１２の処理により、リーン状態の継続時間ｌｃｏｘとリッチ状態の継続時間ｈｃｏｘを、通常の異常判定時間よりも長い燃料残量低下時の異常判定時間（例えば１５ｓｅｃ）と比較して空燃比検出システムの異常の有無を判定する。
【００５１】
具体的には、ステップ４１１で、リーン状態の継続時間ｌｃｏｘが燃料残量低下時の異常判定時間１５ｓｅｃを越えたか否かを判定し、燃料残量低下時の異常判定時間１５ｓｅｃを越えていれば、空燃比検出システムの異常有りと判断して、図８のフェイル処理プログラムを実行する（ステップ４１３）。
【００５２】
一方、リーン状態の継続時間ｌｃｏｘが燃料残量低下時の異常判定時間１５ｓｅｃ以下の場合は、リッチ状態の継続時間ｈｃｏｘが燃料残量低下時の異常判定時間１５ｓｅｃを越えたか否かを判定し（ステップ４１２）、燃料残量低下時の異常判定時間１５ｓｅｃを越えていれば、空燃比検出システムの異常有りと判断して、図８のフェイル処理プログラムを実行する（ステップ４１３）。
【００５３】
これら２つのステップ４１１，４１２で、いずれも「Ｎｏ」と判定されれば、空燃比検出システムの異常無しと判断して、フェイル処理（ステップ４１３）を実行することなく、本プログラムを終了する。この場合、ステップ４０８〜４１２の処理が特許請求の範囲でいう判定条件切換手段としての役割を果たす。
【００５４】
以上説明した空燃比検出システムの異常判定処理の実行例を図７のタイムチャートを用いて説明する。図７は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になるときの酸素センサ２９の出力電圧ｏｘａｄ、リーン状態の継続時間ｌｃｏｘ及び警告ランプの挙動を示している。燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下のときには、燃料ポンプがエアーを吸い込みやすく、空燃比がリーンになりやすい状態となっているため、酸素センサ２９の出力電圧ｏｘａｄが異常な挙動を示しやすいと判断して、リッチ状態／リーン状態の継続時間ｈｃｏｘ，ｌｃｏｘに対する異常判定時間を、通常の異常判定時間１０ｓｅｃよりも長い燃料残量低下時の異常判定時間１５ｓｅｃに切り換える。このため、燃料残量の低下（燃料ポンプのエアーの吸い込み）により酸素センサ２９の出力電圧ｏｘａｄがリーン側に張り付いた状態になっても、そのリーン状態の継続時間ｌｃｏｘが燃料残量低下時の異常判定時間１５ｓｅｃを越えなくなる（図７の例では、リーン状態の継続時間ｌｃｏｘが燃料残量低下時の異常判定時間１５ｓｅｃに到達する前に、ガス欠によるエンストが発生する）。これにより、燃料残量低下時の燃料ポンプのエアーの吸い込みによる酸素センサ２９の出力の一時的な異常な挙動によって空燃比検出システムの異常有りと判定されることが未然に防止される。
【００５５】
ちなみに、従来は、燃料タンク２１内の燃料残量ｌｆｇが所定値Ｆ以下になっても、通常の異常判定時間１０ｓｅｃを用いるため、リーン状態の継続時間ｌｃｏｘが異常判定時間１０ｓｅｃを越えてしまい、空燃比検出システムの異常有りと誤判定されてしまう。
【００５６】
尚、本実施形態では、排ガスの空燃比のリッチ／リーンに応じて出力電圧が１Ｖと０Ｖとの間で反転する酸素センサ２９を用いたが、これに代えて、排ガスの空燃比に応じてリニアな電圧信号を出力する空燃比センサを用いても良い。この場合は、空燃比センサの出力（検出空燃比）が正常な制御範囲外となっている状態の継続時間を計測し、その継続時間に対する異常判定時間を燃料残量に応じて切り換えるようにすれば良い。
【００５７】
［フェイル処理］
図８に示すフェイル処理プログラムは、図２、図４、図６の各システム異常判定プログラムで異常有りと判定されたときに実行され（ステップ１１１，３１３，４１３）、次のようにしてフェイル処理が行われる。まず、ステップ２０１で、警告ランプ（図示せず）を点灯して異常の発生を運転者等に知らせ、次のステップ２０２で、発生した異常の種類に応じた異常コードをエンジン制御回路３０のバックアップＲＡＭ等の不揮発性メモリに記憶する。その後、ステップ２０３に進み、異常発生時の運転状態（エンジン回転数、エンジン負荷、冷却水温、吸気温、燃料残量等）を不揮発性メモリに記憶して本プログラムを終了する。
【００５８】
尚、図２、図４、図６の各システム異常判定プログラムでは、通常時の異常判定値と燃料残量低下時の異常判定値とを切り換えるときの燃料残量判定値Ｆを固定値としたが、走行中の路面の凹凸や車体の傾きが大きくなるほど、燃料タンク２１内の燃料の揺れや燃料液面の傾きが大きくなって、燃料ポンプにエアーが吸い込まれやすくなることを考慮して、路面状態や車体の傾きに応じて燃料残量判定値Ｆを段階的又は連続的に切り換えるようにしても良い。また、異常判定値（異常判定時間）を燃料残量に応じて３段階以上又は連続的に切り換えるようにしても良い。
【００５９】
また、本実施形態では、燃料タンク２１に設けたフューエルセンサ２２により燃料タンク２１内の燃料残量ｌｆｇを検出するようにしたが、燃料蒸発ガスパージシステムによって燃料タンク２１内に吸気管負圧を導入するときの圧力降下勾配や、負圧導入後に燃料タンク２１内に大気圧を導入するときの圧力上昇勾配が燃料タンク２１内の空間容積にほぼ比例する点に着目して、吸気管負圧導入時の圧力降下勾配や大気圧導入時の圧力上昇勾配から燃料残量を検出するようにしても良い。
【００６０】
その他、本発明は、点火システム、空燃比制御システム、空燃比検出システムの異常診断に限定されず、燃料残量の低下により影響を受ける種々のシステムの異常診断に適用可能である。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すエンジン制御システム全体の概略構成図
【図２】点火システム異常判定プログラムの処理の流れを示すフローチャート
【図３】点火システム異常判定処理の実行例を示すタイムチャート
【図４】空燃比制御システム異常判定プログラムの処理の流れを示すフローチャート
【図５】空燃比制御システム異常判定処理の実行例を示すタイムチャート
【図６】空燃比検出システム異常判定プログラムの処理の流れを示すフローチャート
【図７】空燃比検出システム異常判定処理の実行例を示すタイムチャート
【図８】フェイル処理プログラムの処理の流れを示すフローチャート
【符号の説明】
１１…エンジン（内燃機関）、
２０…燃料噴射弁（空燃比制御システム）、
２１…燃料タンク、
２２…フューエルセンサ（燃料残量検出手段）、
２３…点火プラグ（点火システム）、
２４…点火コイル（点火システム）、
２９…酸素センサ（空燃比制御システム，空燃比検出システム）、
３０…エンジン制御回路（異常判定手段，判定条件切換手段，失火検出手段）。
【図１】
0003918761.tif 000002
【図２】
0003918761.tif 000003
【図３】
0003918761.tif 000004
【図４】
0003918761.tif 000005
【図５】
0003918761.tif 000006
【図６】
0003918761.tif 000007
【図７】
0003918761.tif 000008
【図８】
0003918761.tif 000009