(57)【特許請求の範囲】
【請求項１】
燃料タンク（１）内の燃料の残量を検出する燃料レベルセンサ（５）から燃料レベル信号を入力して燃料レベルセンサの故障を判定するものであって、
前記燃料タンクの燃料の消費量を示す燃料消費量信号を入力して積算する燃料消費量積算部（１１）と、
前記燃料消費量積算部による燃料消費量積算値が故障判定値を上回るときに前記燃料レベルセンサの故障を判定する判定部（１１）と、
前記燃料レベル信号の変化量がクリア判定値を超える場合に、前記燃料消費量積算値をクリアする積算値クリア部（１１）と、
前記燃料タンクへの燃料補給時に、前記燃料レベル信号の変化量が前記クリア判定値を超えない場合に少量補給と判断し、前記判定部の前記故障判定値を補正する補正部（１１）と
を備えたことを特徴とする燃料レベルセンサ診断装置。
【請求項２】
請求項１に記載の燃料レベルセンサ診断装置において、
前記補正部（１１）は、前記少量補給が所定回数連続したときには、前記故障判定値の補正を行わないことを特徴とする燃料レベルセンサ診断装置。
【請求項３】
請求項１または２に記載の燃料レベルセンサ診断装置において、
前記補正部（１１）は、前記燃料レベル信号が満状態もしくは空状態を呈する場合に、前記少量補給を判断したときには、前記故障判定値の補正を不感帯補正値により補正することを特徴とする燃料レベルセンサ診断装置。
【請求項４】
請求項１ないし３のいずれか一項に記載の燃料レベルセンサ診断装置において、
前記補正部（１１）は、前記少量補給を判定して前記判定部の前記故障判定値を補正したときには、その時点から別途前記燃料消費量積算部により前記燃料消費量を補正用積算値として積算し、前記燃料レベル信号の変化量が再補正判定値を超えたときの前記補正用積算値により前記故障判定値を再補正することを特徴とする燃料レベルセンサ診断装置。
【請求項５】
請求項１から４のいずれか一項に記載の燃料レベルセンサ診断装置において、
前記補正部（１１）は、前記燃料タンクの燃料補給口に設けられた開閉センサ（４）の検出信号の開から閉への推移により、前記燃料タンクへの燃料の補給を判断することを特徴とする燃料レベルセンサ診断装置。
【請求項６】
請求項１から４のいずれか一項に記載の燃料レベルセンサ診断装置において、
前記補正部（１１）は、前記燃料タンクの内部圧力を検出する圧力センサ（６）の検出信号の大気圧への上昇から大気圧以下への下降の推移により、前記燃料タンクへの燃料の補給を判断することを特徴とする燃料レベルセンサ診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、燃料レベルセンサ診断装置に関する。
【背景技術】
【０００２】
燃料タンクに貯留している燃料の残量を検出するものとして燃料レベルセンサがある。この燃料レベルセンサは、検出する方式としてさまざまなものがあるが、正常な動作が行われないと燃料補給のタイミングを逸するため、故障したときには迅速に修理等を行う必要がある。
【０００３】
燃料レベルセンサの故障を診断するものとして、所定の燃料を消費したときの燃料レベルセンサの出力変化量が所定値を上回らないときに、燃料レベルセンサの故障と判定する技術がある。
【０００４】
燃料レベルセンサは、タンク内の燃料で浮かぶフロートの移動により検出するものでは、満杯と空のいずれの状態においても残量に応じて出力の変化がない不感帯が存在する場合がある。
【０００５】
これらの不感帯及びそれ以外の中間領域において燃料レベルセンサの出力変化量が所定値を上回らないような少量の給油を繰り返し行うと、燃料レベルセンサが所定変化量を出力するまでには、累積燃料消費量が故障判定値を上回ることがあり、正常であるにもかかわらず燃料レベルセンサの故障を判定してしまうことがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−０１０５７４号公報
【特許文献２】特開２０１４−００９５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記事情を考慮してなされたもので、その目的は、燃料タンクへの燃料補給を少量で行うことで燃料レベルセンサの変化量が少ないために燃料レベルセンサの故障状態を判定してしまうことを極力回避できるようにした燃料レベルセンサ診断装置を提供することにある。
【課題を解決するための手段】
【０００８】
請求項１に記載の燃料レベルセンサ診断装置は、燃料タンク内の燃料の残量を検出する燃料レベルセンサから燃料レベル信号を入力して燃料レベルセンサの故障を判定するものであって、前記燃料タンクの燃料の消費量を示す燃料消費量信号を入力して積算する燃料消費量積算部と、前記燃料消費量積算部による燃料消費量積算値が故障判定値を上回るときに前記燃料レベルセンサの故障を判定する判定部と、前記燃料レベル信号の変化量がクリア判定値を超える場合に、前記燃料消費量積算値をクリアする積算値クリア部と、前記燃料タンクへの燃料補給時に、前記燃料レベル信号の変化量が前記クリア判定値を超えない場合に少量補給と判断し、前記判定部の前記故障判定値を補正する補正部とを備えている。
【０００９】
上記構成を採用することにより、燃料消費量積算部は、燃料タンクの燃料の消費量を示す燃料消費量信号を入力して積算しており、この燃料消費量積算値が故障判定値を上回ると、判定部は燃料レベルセンサの故障を判定する。また、積算値クリア部は、燃料レベル信号の変化量がクリア判定値を超える場合燃料消費量積算値をクリアしている。
【００１０】
燃料レベルセンサが正常に動作している場合には、燃料レベル信号の変化量が燃料消費量積算値に対応しているので、燃料消費量積算値が故障判定値に達する前に、燃料レベルセンサの燃料レベル信号の変化量がクリア判定値を超えるようになる。この結果、燃料消費量積算値を一度クリアして再び燃料消費量信号の積算を開始することができる。
【００１１】
また、燃料タンクへの燃料補給では、空に近い状態から満量に近い状態に補給をする場合には、同じく燃料レベルセンサの燃料レベル信号の変化量がクリア判定値を超えるようになり、燃料消費量積算値を一度クリアして再び燃料消費量信号の積算を開始することができる。
【００１２】
そして、燃料タンクへの燃料補給が少量補給である時には、燃料レベル信号の変化量がクリア判定値を超えない場合がある。このときには、少量補給を判定し、補正部により判定部の故障判定値を補正する。これにより、燃料消費量積算値がクリアされない状態であっても、故障判定値に達するのを遅らせることができ、誤判定が発生するのを抑制できる。さらに、少量補給が繰り返された場合には、この傾向が顕著になるが、補正部により少量補給の都度故障判定値を補正するので、診断動作を正確且つ安定して実施することができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態を示す概略的な構成図
【図２】燃料タンクの燃料の残量と燃料レベルセンサのレベル信号との関係を示す図
【図３】燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート
【図４】燃料レベルセンサの故障診断プログラムのフローチャート
【図５】少量給油の場合の燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート（その１）
【図６】少量給油の場合の燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート（その２）
【図７】少量給油の場合の燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート（その３）
【図８】第２実施形態を示す燃料レベルセンサの故障診断プログラムのフローチャート
【図９】少量給油のときに再補正をする場合の燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート
【図１０】第３実施形態を示す燃料タンクの燃料の残量と燃料レベルセンサのレベル信号との関係を示す図
【図１１】燃料レベルセンサの故障診断プログラムのフローチャート
【図１２】少量給油のときに再補正をする場合の燃料レベルセンサのレベル信号と燃料消費量等の推移を示すタイムチャート
【図１３】第４実施形態を示す燃料レベルセンサの故障診断プログラムのフローチャート
【発明を実施するための形態】
【００１４】
（第１実施形態）
以下、本発明の第１実施形態について、図１〜図７を参照して説明する。
図１は燃料レベルセンサ診断装置を搭載したシステム構成図である。この図１において、燃料タンク１は、内部に所定量の燃料２が貯留可能に構成されている。燃料タンク１は、給油口１ａを備えていてキャップ３が開閉可能に設けられている。キャップ３には、開閉を検出するための開閉センサ４が設けられている。燃料タンク１の内部には、燃料２の残量を燃料レベルとして検出する燃料レベルセンサ（ＦＬＳ;fuel level sensor）５が設けられている。燃料レベルセンサ５は、燃料タンク１の内部に貯留された燃料２のレベル（高さ）に応じて上下方向に動くフロート５ａを備えており、フロート５ａのレベルに応じたレベル信号ＦＬを燃料レベル信号として出力する。フロート５ａは、燃料タンク１内において最下位置Ｌ１と最上位置Ｌ２の間の範囲を移動可能に設けられている。最下位置Ｌ１は空状態に対応し、最上位置Ｌ２は満状態に対応している。
【００１５】
なお、最下位置Ｌ１は、燃料２が全く無い状態である「空」になる前に到達するレベルであり、その時点から燃料２が「空」になるまでは最下位置Ｌ１に保持される。レベル信号ＦＬが最小位置Ｌ１にある期間は、Ｅｍｐｔｙ不感帯（燃料の最大量はΔＩＮＪempty）とされる。同様に、最上位置Ｌ２は燃料２が満杯状態である「満量」に達する前に到達するレベルであり、その時点から燃料２が「満量」になるまでは最上位置Ｌ２に保持される。レベル信号ＦＬが最上位置Ｌ２にある期間は、Ｆｕｌｌ不感帯（燃料の最大量はΔＩＮＪfull）とされる。
【００１６】
燃料タンク１内には、燃料２が充填されていない空間部の内部圧力を検出する内圧センサ６が設けられている。また、燃料タンク１内には、燃料２をエンジン７側に汲み出す燃料ポンプ８が設けられ、燃料パイプ９を通じてエンジン７のインジェクタ１０に連結されている。インジェクタ１０は、燃料２をエンジン７に噴射するようにＥＣＵ（electrical control unit）１１により制御される。
【００１７】
ＥＣＵ１１には、上記した燃料レベルセンサ５およびキャップ３の開閉センサ４が接続されており、レベル信号ＦＬおよびキャップ３の開閉を示す検出信号Ｓが入力される。また、ＥＣＵ１１には、このほかに、車両の走行速度を検出する車速センサ１２およびエンジン７への吸気量を検出する吸気量センサ１３などが接続されている。
【００１８】
ＥＣＵ１１は、燃料レベルセンサ５の診断装置として機能するもので、マイコンおよびメモリなどを内部に備えており、メモリ内には後述する故障診断プログラムが記憶されている。燃料タンク１内の燃料２が消費され、あるいは給油により補給されることで燃料レベルセンサ５のレベル信号ＦＬが変化するときに、これが正常に動作しているか否かを診断するものである。ここで、ＥＣＵ１１は、燃料消費量積算部、判定部、積算値クリア部、補正部などの機能を兼ね備えた構成で、これらは後述する故障診断プログラムの処理ステップとして実施する機能的な構成である。
【００１９】
図２は、燃料タンク１内の燃料２の残量と燃料レベルセンサ５のレベル信号ＦＬとの関係を示している。この図２に示すように、燃料レベルセンサ５のレベル信号ＦＬは、燃料タンク１内の燃料２が多いときに小さい値の信号として出力される。上述したように、燃料レベルセンサ５のレベル信号ＦＬは、燃料２が「空」状態からＬ１までの間は、Ｅｍｐｔｙ不感帯であるから、一定レベルＦＬｅ（Ｅｍｐｔｙレベル）である。この後、燃料２の残量が多くなるにしたがってレベル信号ＦＬはほぼ比例した関係で減少し、燃料２が「満量」前のＬ２に達するとＦｕｌｌ不感帯になるので、一定レベルＦＬｆ（Ｆｕｌｌレベル）になる。
【００２０】
この場合、燃料タンク１の形状や内部に配置する装置などに応じてレベル信号ＦＬと燃料２の残量との関係が必ずしも一定の比例関係を保たない場合がある。すなわち、図１に示した燃料タンク１では、図２に示しているように、燃料２の残量とレベル信号ＦＬとの関係を示すラインが、中間領域において傾きが変化するように折れ曲がった特性となっている。
【００２１】
また、前記したように、燃料レベルセンサ５のレベル信号ＦＬが燃料２の残量に追従する領域（Ｌ１〜Ｌ２）と追従しない不感帯領域（０〜Ｌ１およびＬ２〜Ｌ３）が存在する。このため、燃料タンク１内の燃料２の残量が満量であるＦｕｌｌ付近または「空」であるＥｍｐｔｙ付近であるときには、実際の燃料２の消費量に比べて燃料レベルセンサ５のレベル信号ＦＬ値はＦＬｆまたはＦＬｅのままとなり変化しなくなる。
【００２２】
なお、以下の説明では、前記したように、Ｅｍｐｔｙ不感帯での最大燃料貯蔵量をΔＩＮＪempty、Ｆｕｌｌ不感帯での最大燃料貯蔵量をΔＩＮＪfullと記す。また、燃料タンク１内に燃料２が満量補給された後は、燃料２の消費に伴って燃料タンク１内の残量はＬ３→Ｌ２→Ｌ１→０へと変化し、その後、再度燃料２を満量補給すれば０からＬ３まで回復する。
【００２３】
図３は燃料レベルセンサ５の故障診断の流れをタイムチャートで示している。この診断動作では、ＥＣＵ１１による診断動作中、燃料消費に伴って燃料タンク１の残量が減ったときに、燃料２を満量もしくは満量近く補給した場合について、燃料レベルセンサ５が正常状態から故障状態となったときの検出動作を示している。
【００２４】
ＥＣＵ１１は、燃料レベルセンサ５の診断を行うための故障診断プログラムをメモリから読み出して実行を開始する。ＥＣＵ１１は、時刻ｔ０において燃料レベルセンサ５の動作を診断するモニタ条件が成立すると、その後、インジェクタ１０により噴射する燃料２の消費量を燃料消費量ＩＮＪsumの値に加算していく。
【００２５】
燃料レベルセンサ５が正常に動作している状態では、レベル信号ＦＬが燃料２の消費に伴って変化（増大）していく。そして、時刻ｔ１になると、燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬがレベル信号のクリア判定値としての所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）ようになる。これにより、ＥＣＵ１１は、燃料レベルセンサ５が故障していないことを判定できる。ＥＣＵ１１は、この結果を受けて、積算していた燃料消費量ＩＮＪsumをクリアし、この後診断を継続する。
【００２６】
この後、燃料タンク１の燃料２の残量が少なくなったことで、給油イベントとして例えば使用者により燃料２の補給（給油）が行われると、燃料レベルセンサ５のレベル信号ＦＬが変化していく。このとき、ＥＣＵ１１は、開閉センサ４からの検出信号Ｓにより、燃料タンク１のキャップ３が「開」状態となり、且つレベル信号ＦＬが燃料２の増加を示すように変化することで認識できる。この後、ＥＣＵ１１は、時刻ｔ２において、開閉センサ４からの検出信号Ｓにより、燃料タンク１のキャップ３が「閉」状態となったことで、すなわち燃料補給が終了したことを認識する。ＥＣＵ１１は、このとき燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回った（ΔＦＬ＞ΔＦＬpass）ことで、燃料消費量ＩＮＪsumをクリアする。
【００２７】
次に、燃料レベルセンサ５が故障した場合について説明する。例えば、燃料レベルセンサ５が時刻ｔ３において故障し、それ以降はフロート５ａの上下移動の変化があってもレベル信号ＦＬが一定状態となって変化しない状況である。ＥＣＵ１１は、燃料の消費に伴って燃料消費量ＩＮＪsumを積算している。そして、ＥＣＵ１１は、この後、燃料消費量ＩＮＪsumが燃料消費量判定値ＩＮＪfailを上回る時刻ｔ４になると、この時点でレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回っていないことから燃料レベルセンサ５の故障状態を判定する。
【００２８】
以上のようにして、ＥＣＵ１１により、燃料レベルセンサ５の故障診断が行われる。ところで、燃料２の補給をしたときに、燃料レベルセンサ５が正常であってもレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを超えない場合がある。これはいわゆる給油イベントとして燃料タンク１への燃料２の少量補給が行われた場合である。この場合には、上記した故障診断の処理では、燃料消費量ＩＮＪsumがクリアされないままとなり誤判定を招くおそれがある。この実施形態では、このような場合でも、燃料レベルセンサ５の誤診断を起こさないようにしたものである。
【００２９】
図４は、上記したような少量の燃料補給を行った場合に対応してＥＣＵ１１により実施する故障診断プログラムのフローチャートである。ＥＣＵ１１は、この故障診断プログラムを適宜のタイミングで繰り返し実行している。これにより、上記した燃料２の少量補給が繰り返し行われる場合でも燃料レベルセンサ５の故障を誤判定するのを回避することができる。
【００３０】
図４において、ＥＣＵ１１は、まず、故障診断の事前準備処理としてパラメータ初期化条件判定を行なう（Ａ１）。このパラメータ初期化条件判定では、ＥＣＵ１１は、「バッテリクリア時」、「正常判定時」、「故障判定時」のいずれかの条件が成立したとき（Ａ１でＹＥＳのとき）に、各種補正パラメータをクリアする（Ａ２）。ここで、「バッテリクリア時」とはバッテリを交換するなどで新たにバッテリを接続したことが検出されたときである。また、「正常判定時」、「故障判定時」は、燃料レベルセンサ５の正常状態あるいは故障が判定されたときを意味している。そして、ステップＡ２の各種補正パラメータとしては、燃料消費量補正量ΔＩＮＪＰＰ[ｋ]（ｋ＝１〜ppcnt）、補正中燃料消費積算値ΔＩＮＪＳＵＭＰＰ[ｋ]（ｋ＝１〜ppcnt）、連続補正回数ppcnt、補正中フラグ（クリアでオフにする）などである。
【００３１】
ＥＣＵ１１は、ステップＡ１でＮＯと判断したときあるいはＡ２を実行した後、給油イベントが開始されたかどうか、すなわち燃料タンク１のキャップ３が「閉」から「開」に変化したかどうかを開閉センサ４の検出信号Ｓにより判断する（Ａ３）。ＥＣＵ１１は、開閉センサ４から「閉」から「開」への状態変化を示す検出信号Ｓが入力された場合には、燃料補給開始時の燃料レベルセンサ５のレベル信号ＦＬをＦＬrefとして記憶する（Ａ４）。
【００３２】
ステップＡ３でＮＯと判断したときあるいはＡ４を実行した後、ＥＣＵ１１は、給油口が閉じられて給油イベントが終了したかどうか、すなわち燃料タンク１のキャップ３が「開」から「閉」に変化したかどうかを開閉センサ４の検出信号Ｓにより判断する（Ａ５）。ＥＣＵ１１は、開閉センサ４から「開」から「閉」への状態変化を示す検出信号Ｓが入力された場合には、給油イベントの終了を判断する。ＥＣＵ１１は、ステップＡ６で、燃料補給終了時の燃料レベルセンサ５のレベル信号ＦＬとステップＡ４で記憶した燃料補給開始時のＦＬrefの値との差を変化量ΔＦＬとして算出する。ΔＦＬは、燃料タンク１への給油前後の燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬとして算出される。
【００３３】
次に、ＥＣＵ１１は、ステップＡ６で算出した変化量ΔＦＬが、所定値ΔＦＬpassを上回っているか（ΔＦＬ＞ΔＦＬpass）否かを判断し（Ａ７）、ＹＥＳの場合には燃料２の補給量が所定以上であったことから、燃料消費量ＩＮＪsumおよびその他の各種の補正パラメータをクリアする（Ａ８）。また、ＥＣＵ１１は、ステップＡ５でＮＯと判断したときは、プログラムを繰り返し実行して、燃料タンク１のキャップ３が閉じられることが検出されるのを待つ。また、ＥＣＵ１１は、ステップＡ８を実行した後はプログラムを終了する。
【００３４】
また、ステップＡ７でＮＯとなる場合は、燃料２の補給は行われたが、燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを超えない程度の少量の補給量であったことを示している。この場合には、ＥＣＵ１１は、各種の補正パラメータをクリアすることなく診断動作を継続する。このため、燃料消費量ＩＮＪsumの値はクリアされないで、そのまま燃料の消費に伴って積算されていく。
【００３５】
そこで、燃料消費量ＩＮＪsumがクリアされない状態のまま診断動作を継続することによる誤判定を防止するため、ＥＣＵ１１は、次に、燃料消費量判定値ＩＮＪfailを補正する処理を実施する。このとき、故障検出頻度を充分に確保するため連続補正回数を例えば３回といったように制限する補正回数上限値Ｎmaxを設定する。なお、この補正回数上限値Ｎmaxの値は適宜の回数に設定することができる。
【００３６】
ＥＣＵ１１は、ステップＡ９において、連続補正回数ppcntの値が補正回数上限値Ｎmaxに達していないかをチェックする。ＥＣＵ１１は、連続補正回数ppcntが補正回数上限値Ｎmaxに達していない場合には、連続補正回数ppcntの値を「１」加算する（Ａ１０）。この後、ＥＣＵ１１は、燃料レベルセンサ５の現在のレベル信号ＦＬがＥｍｐｔｙレベルを示すレベルＦＬｅとＦｕｌｌレベルを示すレベルＦＬｆとの間にあるかどうかを判断する（Ａ１１）。補正回数上限値Ｎmaxの値は、例えば、補正を繰り返すことで後述する補正値の値が大きくなりすぎることを防止するものである。なお、ＥＣＵ１１はステップＡ９でＮＯと判断したときには、プログラムを終了する。
【００３７】
ＥＣＵ１１は、レベル信号ＦＬが中間領域すなわちレベルＦＬｅとレベルＦＬｆとの間にある場合（Ａ１１でＹＥＳ）には、次のようにして燃料消費量補正量ΔＩＮＪＰＰ[現在補正回数（ppcnt）]を設定する。燃料消費量補正量ΔＩＮＪＰＰ［ppcnt］は、燃料レベルセンサ５の故障判定タイミングを設定する燃料消費量判定値ＩＮＪfailを補正するためのものである。そこで、少量の補給による燃料２の分量をレベル信号ＦＬの変化量ΔＦＬから推定し、この増加した燃料２が燃料噴射されたときの燃料消費量として加算するものである。
【００３８】
ＥＣＵ１１内のメモリには、燃料レベルセンサ５のレベル信号ＦＬの出力特性テーブルが記憶されている。ＥＣＵ１１は、ステップＡ１２で、出力特性テーブルのデータを参照して、燃料２の補給の前後のレベル信号ＦＬの変化量ΔＦＬ（＝ＦＬref−レベル信号ＦＬ）に相当する燃料残量を加算し、その結果をΔＩＮＪＰＰ[ppcnt]に記憶する。なお、ΔＩＮＪＰＰ［ppcnt］のppcntは現在補正回数として例えば１回目なら「１」を示している。
なお、ＥＣＵ１１によりステップＡ１１でＹＥＳと判断される場合でも、燃料補給の前のレベル信号ＦＬがＥｍｐｔｙ不感帯であった場合には、Ｅｍｐｔｙ不感帯の範囲で補給された分を考慮することができる。すなわち、出力特性テーブルには、レベル信号ＦＬの変化量ΔＦＬにＥｍｐｔｙ不感帯での最大貯蔵量ΔＩＮＪemptyに相当するデータを加算したものを設定している。
【００３９】
ＥＣＵ１１は、ステップＡ１１でＮＯの場合あるいはステップＡ１２を実行した後は、ステップＡ１３に進む。ここでは、ステップＡ１１でＮＯであった場合について、ＥＣＵ１１は、燃料レベルセンサ５の現在のレベル信号ＦＬが燃料２の残量に応じて変化しないＥｍｐｔｙ不感帯にあるかどうかを判断する。Ｅｍｐｔｙ不感帯である（Ａ１３でＹＥＳ）場合には、ＥＣＵ１１は、ステップＡ１４で、次のようにしてΔＩＮＪＰＰ[ppcnt]の値を設定する。すなわち、ＥＣＵ１１は、Ｅｍｐｔｙ不感帯での最大貯蔵量ΔＩＮＪemptyをΔＩＮＪＰＰ[ppcnt]に記憶する。ここで、最大貯蔵量ΔＩＮＪemptyは、Ｅｍｐｔｙ不感帯に入ってから使用可能な燃料２の量に相当する値である。
【００４０】
また、ＥＣＵ１１は、ステップＡ１３でＮＯの場合あるいはステップＡ１４を実行した後は、ステップＡ１５に進む。ここでは、ＥＣＵ１１は、ステップＡ１１、Ａ１３で共にＮＯであった場合について、燃料レベルセンサ５の現在のレベル信号ＦＬが燃料２の残量に応じて変化しないＦｕｌｌ不感帯にあるかどうかを判断する。ＹＥＳの場合には、ＥＣＵ１１は、ステップＡ１６で、次のようにしてΔＩＮＪＰＰ[ppcnt]の値を設定する。すなわち、ＥＣＵ１１は、Ｆｕｌｌ不感帯での最大貯蔵量ΔＩＮＪfullと給油前後のレベル信号ＦＬの変化量ΔＦＬ（＝ＦＬref−レベル信号ＦＬ）に相当する燃料残量を加算し、その結果をΔＩＮＪＰＰ[ppcnt]に記憶する。ここで、最大貯蔵量ΔＩＮＪfullは、Ｆｕｌｌ不感帯に入ってから補給可能な燃料２の量に相当する値である。
【００４１】
これにより、ＥＣＵ１１は、燃料レベルセンサ５の現在のレベル信号ＦＬが中間領域、Ｅｍｐｔｙ不感帯、Ｆｕｌｌ不感帯のいずれかに対応して、燃料消費量補正量ΔＩＮＪＰＰ［ppcnt］を設定することができる。この後、ＥＣＵ１１は、燃料消費量判定値ＩＮＪfailの値を、上記した算出過程により記憶した少量給油時の補正量ΔＩＮＪＰＰ［ppcnt］の値を加算して（Ａ１７）プログラムを終了する。
【００４２】
以降、ＥＣＵ１１は、燃料レベルセンサ５の故障判定を行う場合には、上記した過程を経て補正量ΔＩＮＪＰＰ［ppcnt］として算出した補正値を加算した値を新たな燃料消費量判定値ＩＮＪfailとして故障診断処理を行う。
【００４３】
次に、図５〜図７を参照して、上記のように燃料消費量判定値ＩＮＪfailを補正する処理を行う場合について、具体的に３つの場合に分けて説明する。図５は、燃料補給時の燃料レベルセンサ５のレベル信号ＦＬの値が中間領域の場合（Ａ１１でＹＥＳ）の具体例である。また、図６はレベル信号ＦＬの値がＥｍｐｔｙ不感帯の場合（Ａ１３でＹＥＳ）の具体例、図７はレベル信号ＦＬの値がＦｕｌｌ不感帯の場合（Ａ１５でＹＥＳ）の具体例を示している。
【００４４】
まず、図５の具体例について説明する。この場合には、例えば時刻ｔａ０でモニタ条件が成立すると、ＥＣＵ１１により燃料レベルセンサ５の故障診断プログラムを開始する。前述したように、ＥＣＵ１１は、図４に示したプログラムのステップＡ１、Ａ２を実行し、この後、インジェクタ１０により噴射する燃料２の消費量を燃料消費量ＩＮＪsumに加算していく。
【００４５】
燃料レベルセンサ５が正常に動作している状態では、レベル信号ＦＬが燃料２の消費に伴って変化していく。そして、時刻ｔａ１になると、燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）ようになる。これにより、ＥＣＵ１１は、燃料レベルセンサ５が故障していないことをモニタできたため、積算していた燃料消費量ＩＮＪsumをクリアし、この後診断を継続する。
【００４６】
この後、燃料タンク１の燃料２の残量が少なくなったことで、例えば使用者により燃料２の補給（給油）が行われると、燃料レベルセンサ５のレベル信号ＦＬが変化していく。ＥＣＵ１１は、燃料タンク１への燃料２の補給をステップＡ３〜Ａ５を実行して認識すると、時刻ｔａ２において給油イベントが実施されたことを判断する。ＥＣＵ１１は、このとき燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回った（ΔＦＬ＞ΔＦＬpass）ことで、燃料消費量ＩＮＪsumをクリアする（Ａ６〜Ａ８実施）。
【００４７】
次に、燃料タンク１の燃料２がＥｍｐｔｙレベルまで減った状態ではないが、少量の燃料補給を行う場合について説明する。燃料タンク１内の燃料２が消費されるにしたがって、レベル信号ＦＬが燃料の減少を示す変化をしていく。この後、燃料タンク１への燃料２の少量の補給が実施された場合には、ＥＣＵ１１は、例えば時刻ｔａ３において給油イベントを判断すると（Ａ５でＹＥＳ）。このとき、ＥＣＵ１１は、レベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）ことがないので、少量の燃料補給であったことを判断する（Ａ７でＮＯ）。
【００４８】
これにより、ＥＣＵ１１は、積算していた燃料消費量ＩＮＪsumをクリアすることなく診断を継続するが、補給した燃料２の量を推定して故障を判定するための燃料消費量判定値ＩＮＪfailの値を補正する。すなわち、ＥＣＵ１１は、燃料レベルセンサ５のレベル信号ＦＬの値が中間領域であることからステップＡ１１でＹＥＳと判断し、ΔＩＮＪＰＰ［ppcnt］の値を設定する（Ａ１２）。
【００４９】
このとき、レベル信号ＦＬの出力特性テーブルでは、例えば燃料タンク１の形状に起因して図２に示したような折れ曲がりのある特性である場合などに対応して補正量を設定したものである。これにより、ＥＣＵ１１は、レベル信号ＦＬの給油前後の変化量ΔＦＬの値に対応する燃料２とその補正量を加算したものをΔＩＮＪＰＰ［ppcnt］として算出する（Ａ１２）。ここでは、１回目の補正量であるからΔＩＮＪＰＰ［１］となる。ＥＣＵ１１は、ΔＩＮＪＰＰ［１］の値を燃料消費量判定値ＩＮＪfailの値に加算する（Ａ１７）。この結果、燃料消費量ＩＮＪsumの値が燃料消費量判定値ＩＮＪfailに到達する時間が延長されることになる。
【００５０】
以下、同様にして燃料タンク１への燃料２の少量の補給が繰り返された場合でも、それらに対応してＥＣＵ１１は、補正量として時刻ｔａ４でΔＩＮＪＰＰ［２］、時刻ｔａ５でΔＩＮＪＰＰ［３］として求め、順次燃料消費量ＩＮＪsumの値に加算していく。これによって、例えば時刻ｔａ６で、給油時である時刻ｔａ５以降におけるレベル信号ＦＬの変化量ΔＦＬが変化判定基準地である所定値ΔＦＬpassに達する。ＥＣＵ１１は、このときの燃料消費量ＩＮＪsumが燃料消費量判定値ＩＮＪfailに達していないことから、燃料レベルセンサ５が正常状態であることをモニタできたため、積算していた燃料消費量ＩＮＪsumをクリアし、この後故障診断を継続する。なお、ＥＣＵ１１は、燃料レベルセンサ５が正常状態を判断したことから、次に故障診断プログラムを実行する際に、パラメータ初期化の条件が成立していることになる（Ａ１でＹＥＳ）ので、燃料消費量判定値ＩＮＪfailの値を補正していないもとの値にクリアする（Ａ２）。
【００５１】
なお、燃料タンク１の燃料２がＥｍｐｔｙ不感帯のレベルにある状態で、上記同様の少量の燃料補給を行い、給油後にＥｍｐｔｙレベルを超えている場合には、同様にしてステップＡ１２でΔＩＮＪＰＰ［ppcnt］の値を設定するが、出力特性テーブルの値は次のように設定されている。レベル信号ＦＬがＥｍｐｔｙ不感帯にある状態から給油を開始している場合には別のデータとして、中間領域でのレベル信号ＦＬの変化量ΔＦＬの値に、Ｅｍｐｔｙ不感帯からＥｍｐｔｙレベルに達するまでの間の給油量として最大貯蔵量ΔＩＮＪemptyを加算した値を設定している。したがって、燃料補給時に燃料タンク１内が「空」になっていない場合でも、この最大貯蔵量ΔＩＮＪemptyを加算することで、「空」になったと想定して補正をしていることになる。
【００５２】
また、燃料レベルセンサ５が故障する場合について説明する。例えば時刻ｔａ７において燃料レベルセンサ５の故障が発生し、それ以降はレベル信号ＦＬが一定状態となる状況である。ＥＣＵ１１は、燃料の消費に伴って燃料消費量ＩＮＪsumを積算している。そして、ＥＣＵ１１は、この後、燃料消費量ＩＮＪsumが燃料消費量判定値ＩＮＪfailを上回る時刻ｔａ８になると、この時点でレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回らないため、燃料レベルセンサ５の故障を判定する。
【００５３】
以上によって、燃料２の少量補給があった場合に、補給量に相当する分だけ燃料消費量判定値ＩＮＪfailの値を補正することで、適正な判定タイミングを設定することができ、この結果、誤診断をしてしまうことを回避でき、結果として、より正確な診断動作を行うことができるものである。
【００５４】
次に、図６に示すレベル信号ＦＬの値がＦｕｌｌ不感帯の場合について説明する。同様にして、時刻ｔｂ０でモニタ条件が成立すると、ＥＣＵ１１により燃料レベルセンサ５の故障診断プログラムを開始する。この場合には、開始時点で燃料レベルセンサ５のレベル信号ＦＬはＦｕｌｌレベルを示す値ＦＬｆをとっている。ＥＣＵ１１は、図４に示したプログラムのステップＡ１、Ａ２を実行し、この後、インジェクタ１０により噴射する燃料２の消費量を燃料消費量ＩＮＪsumに加算していく。
【００５５】
燃料レベルセンサ５が正常に動作している状態では、例えば、時刻ｔｂ１にて燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）。ＥＣＵ１１は、燃料レベルセンサ５が正常であることを判断して、積算していた燃料消費量ＩＮＪsumをクリアし、この後故障診断処理を継続する。
【００５６】
また、燃料２を消費したことで、使用者により燃料２の補給（給油）が行われると、燃料レベルセンサ５のレベル信号ＦＬが変化していく。ＥＣＵ１１は、燃料タンク１への燃料２の補給をステップＡ３〜Ａ５を実行して認識し、時刻ｔｂ２において給油イベントが実施されたことを判断する。ＥＣＵ１１は、燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回った（ΔＦＬ＞ΔＦＬpass）ことで、燃料消費量ＩＮＪsumをクリアする（Ａ６〜Ａ８実施）。
【００５７】
なお、この状態では、燃料レベルセンサ５のレベル信号ＦＬは、Ｆｕｌｌ不感帯に入るためＦｕｌｌレベルで止まっているが、実際には燃料タンク１内に満量になるまでさらに補給されている。逆に、その状態から燃料２を使用した場合に、燃料レベルセンサ５のレベル信号ＦＬはしばらくの間Ｆｕｌｌレベルのとどまっており、Ｆｕｌｌ不感帯から中間領域に入るとレベル信号ＦＬが変化するようになる。
【００５８】
次に、燃料タンク１の燃料２がＦｕｌｌレベルに近い状態であるが、この状態で少量の燃料補給を行う場合について説明する。燃料タンク１への燃料２の少量補給が実施された場合には、ＥＣＵ１１は、例えば時刻ｔｂ３において給油イベントを判断すると（Ａ５でＹＥＳ）。このとき、ＥＣＵ１１は、レベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）ことがないので、少量の燃料補給であったことを判断する（Ａ７でＮＯ）。
【００５９】
これにより、ＥＣＵ１１は、積算していた燃料消費量ＩＮＪsumをクリアすることなく故障診断処理を継続するが、補給した燃料２の量を推定して故障を判定するための燃料消費量判定値ＩＮＪfailの値を補正する。すなわち、ＥＣＵ１１は、燃料レベルセンサ５のレベル信号ＦＬの値がＦｕｌｌ不感帯であることからステップＡ１５でＹＥＳと判断し、ΔＩＮＪＰＰ［ppcnt］の値を設定する（Ａ１６）。
【００６０】
ここでは、燃料タンク１への燃料２の少量補給を実施した時点ｔｂ３で、レベル信号ＦＬがＦｕｌｌ不感帯の値である。この場合には、ＥＣＵ１１は、中間領域からＦｕｌｌ不感帯に達するまでのレベル信号ＦＬの変化量ΔＦＬの値に、最大貯蔵量ΔＩＮＪfullを加算した値をΔＩＮＪＰＰ［１］として設定する。ΔＩＮＪfullの値は、Ｆｕｌｌ不感帯での補正量として予め設定されている最大貯蔵量である。したがって、燃料補給時に燃料タンク１内が満量になっていない場合でも、この最大貯蔵量を加算することで、満量になったと想定して補正をしていることになる。
【００６１】
ここでは、１回目の補正量であるからΔＩＮＪＰＰ［１］となる。ＥＣＵ１１は、ΔＩＮＪＰＰ［１］の値を燃料消費量判定値ＩＮＪfailの値に加算する（Ａ１７）。この結果、燃料消費量ＩＮＪsumの値が燃料消費量判定値ＩＮＪfailに到達する時間が延長されることになる。
【００６２】
以下、同様にして、残量が満量付近の燃料タンク１への燃料２の少量の補給が繰り返された場合でも、それらに対応してＥＣＵ１１は、補正量として時刻ｔｂ４でΔＩＮＪＰＰ［２］、時刻ｔｂ５でΔＩＮＪＰＰ［３］として求め、順次燃料消費量ＩＮＪsumの値に加算していく。これによって、例えば時刻ｔｂ６で、給油時である時刻ｔｂ５以降におけるレベル信号ＦＬの変化量ΔＦＬが変化判定基準地である所定値ΔＦＬpassに達する。ＥＣＵ１１は、このときの燃料消費量ＩＮＪsumが燃料消費量判定値ＩＮＪfailに達していないことから、燃料レベルセンサ５が正常状態であることをモニタできたため、積算していた燃料消費量ＩＮＪsumをクリアし、この後故障診断処理を継続する。
【００６３】
なお、ＥＣＵ１１は、燃料レベルセンサ５が正常状態を判断したことから、次に診断プログラムを実行する際に、パラメータ初期化の条件が成立していることになる（Ａ１でＹＥＳ）ので、燃料消費量判定値ＩＮＪfailの値を補正していないもとの値にクリアする（Ａ２）。
【００６４】
また、燃料レベルセンサ５が故障する場合については、図５について説明した場合と同様に時刻ｔｂ８に故障状態を判定することができる。以上によって、燃料タンク１が満量付近になる状態で燃料２の少量の補給があった場合に、補給量に相当する分だけ燃料消費量判定値ＩＮＪfailの値を補正することで、誤診断をしてしまうことを回避でき、結果として、より正確な診断動作を行うことができるものである。
【００６５】
次に、図７に示すレベル信号ＦＬの値がＥｍｐｔｙ不感帯の場合について説明する。同様にして、時刻ｔｃ０でモニタ条件が成立すると、ＥＣＵ１１により燃料レベルセンサ５の故障診断プログラムを開始する。この場合には、開始時点で燃料レベルセンサ５のレベル信号ＦＬは中間レベルを示す値をとっている。ＥＣＵ１１は、図４に示したプログラムのステップＡ１、Ａ２を実行し、この後、インジェクタ１０により噴射する燃料２の消費量を燃料消費量ＩＮＪsumに加算していく。
【００６６】
燃料レベルセンサ５が正常に動作している状態では、例えば、時刻ｔｃ１にて燃料レベルセンサ５のレベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）。ＥＣＵ１１は、燃料レベルセンサ５が正常であることを判断して、積算していた燃料消費量ＩＮＪsumをクリアし、この後診断を継続する。
【００６７】
次に、燃料２を消費したことで、燃料レベルセンサ５のレベル信号ＦＬがＥｍｐｔｙ不感帯に入りＥｍｐｔｙレベルＦＬｅに留まった状態になり、時刻ｔｃ２以前に使用者により燃料２の補給（給油）が行われた場合について説明する。そして、この場合、燃料タンク１への燃料２の少量の補給が実施されたが、レベル信号ＦＬはＥｍｐｔｙ不感帯に留まっていて、ＦＬｅのままである。図７に、燃料タンク１の実際の燃料のレベルとしてＥｍｐｔｙ不感帯の領域に破線で示している。この後、ＥＣＵ１１は、燃料タンク１への燃料２の補給をステップＡ３〜Ａ５を実行して認識し、時刻ｔｃ２において給油イベントが実施されたことを判断する（Ａ５でＹＥＳ）。このとき、ＥＣＵ１１は、レベル信号ＦＬの変化量ΔＦＬが所定値ΔＦＬpassを上回る（ΔＦＬ＞ΔＦＬpass）ことがないので、少量の燃料補給であったことを判断する（Ａ７でＮＯ）。ＥＣＵ１１は、積算していた燃料消費量ＩＮＪsumをリセットしない。
【００６８】
上記したように、燃料レベルセンサ５のレベル信号ＦＬは、Ｅｍｐｔｙ不感帯に止まっているが、実際には燃料タンク１内が「空」となるレベルよりも少し残っている状態のこともある。その状態から燃料２を補給しても、燃料レベルセンサ５のレベル信号ＦＬはしばらくの間Ｅｍｐｔｙレベルにとどまっている。上記した時刻ｔｃ２での給油のように、燃料タンク１への燃料２の少量の補給が実施された場合（すなわち上記した時刻ｔｃ２での補給）においては、レベル信号ＦＬは給油後もＥｍｐｔｙレベルに留まる。
【００６９】
次に、ＥＣＵ１１は、時刻ｔｃ２で補給した燃料２の量を推定して故障を判定するための燃料消費量判定値ＩＮＪfailの値を補正する。すなわち、ＥＣＵ１１は、燃料レベルセンサ５のレベル信号ＦＬの値がＥｍｐｔｙ不感帯であることからステップＡ１３でＹＥＳと判断し、ΔＩＮＪＰＰ［ppcnt］の値を設定する（Ａ１４）。
【００７０】
ここでは、燃料タンク１への燃料２の少量補給を実施した時点ｔｃ２で、レベル信号ＦＬがＥｍｐｔｙ不感帯の値である。この場合には、ＥＣＵ１１は、最大貯蔵量ΔＩＮＪemptyをΔＩＮＪＰＰ［１］として設定する。ΔＩＮＪemptyの値は、Ｅｍｐｔｙ不感帯での補正量として予め設定されている最大貯蔵量である。したがって、燃料補給時に燃料タンク１内が「空」になっていない場合でも、この最大貯蔵量を加算することで、「空」になったと想定して補正をしていることになる。
【００７１】
ここでは、１回目の補正量であるからΔＩＮＪＰＰ［１］となる。ＥＣＵ１１は、ΔＩＮＪＰＰ［１］の値を燃料消費量判定値ＩＮＪfailの値に加算する（Ａ１７）。この結果、燃料消費量ＩＮＪsumの値が燃料消費量判定値ＩＮＪfailに到達する時間が延長されることになる。
【００７２】
以下、同様にして、残量が満量付近の燃料タンク１への燃料２の少量の補給が繰り返された場合でも、それらに対応してＥＣＵ１１は、補正量として時刻ｔｃ３でΔＩＮＪＰＰ［２］として求め、順次燃料消費量ＩＮＪsumの値に加算する。これによって、例えば時刻ｔｃ４で、給油時である時刻ｔｃ３以降におけるレベル信号ＦＬの変化量ΔＦＬが変化判定基準地である所定値ΔＦＬpassに達する。ＥＣＵ１１は、このときの燃料消費量ＩＮＪsumが燃料消費量判定値ＩＮＪfailに達していないことから、燃料レベルセンサ５が正常状態であることをモニタできたため、積算していた燃料消費量ＩＮＪsumをクリアし、この後、故障診断処理を継続する。
【００７３】
なお、ＥＣＵ１１は、燃料レベルセンサ５が正常状態を判断したことから、次に診断プログラムを実行する際に、パラメータ初期化の条件が成立していることになる（Ａ１でＹＥＳ）ので、燃料消費量判定値ＩＮＪfailの値を補正していないもとの値にクリアする（Ａ２）。
【００７４】
また、燃料レベルセンサ５が故障する場合については、図５について説明した場合と同様に時刻ｔｃ６に故障状態を判定することができる。以上によって、燃料タンク１が「空」付近になる状態で燃料２の少量の補給があった場合に、最大貯蔵量ΔＩＮＪemptyに相当する分だけ燃料消費量判定値ＩＮＪfailの値を補正することで、誤診断をしてしまうことを回避でき、結果として、より正確な故障診断を行うことができるものである。
【００７５】
このような第１実施形態によれば、ＥＣＵ１１により、燃料タンク１への燃料２の少量補給が行われたときに、燃料消費量判定値ＩＮＪfailの値を補給量に対応して補正するようにしたので、繰り返し少量補給を行うことで燃料消費量ＩＮＪsumの値がクリアされない状態で大きくなりすぎるのを抑制できる。この結果、燃料消費量ＩＮＪsumの値が大きくなっても、燃料消費量判定値ＩＮＪfailとの差が少なくなってしまうのを防止できる。このことは、燃料レベルセンサ５が、故障していないにもかかわらず燃料２の少量補給に起因して故障を判定してしまう誤診断を防止でき、正確な故障診断を実施することができる。
【００７６】
また、上記実施形態では、燃料レベルセンサ５のレベル信号ＦＬが、Ｆｕｌｌ不感帯あるいはＥｍｐｔｙ不感帯にあるときでも、これに対応して補正をすることができるので、正確な故障診断を行うことができる。
さらに、上記実施形態では、繰り返し補正を行う回数に制限を設けているので、過剰な補正の繰り返しで検出動作自体に誤差が発生するのを抑制することができる。
【００７７】
（第２実施形態）
図８および図９は第２実施形態を示すもので、以下、第１実施形態と異なる部分について説明する。この実施形態では、第１実施形態で、燃料タンク１への燃料２の少量補給を燃料レベルセンサ５のレベル信号ＦＬがＦｕｌｌ不感帯にあるときに実施したときに行う補正の値について、再補正を行うようにしたものである。すなわち、第１実施形態では、燃料レベルセンサ５のレベル信号ＦＬがＦｕｌｌ不感帯にあるときに少量補給が判断されると、補正量として加算する最大貯蔵量ΔＩＮＪfullの値が予め設定されている。
【００７８】
これに対して、この実施形態では、Ｆｕｌｌ不感帯に対応して補正する最大貯蔵量ΔＩＮＪfullの値が実際の補給量よりも大きくなる場合を想定して、一旦補正した後、実情に即した補正値に再補正するものである。これにより、燃料２の少量補給を繰り返すことで補正量の誤差が累積して実際の補給量の値からずれてくるのを是正するものである。
【００７９】
図８は、第１実施形態における図４のフローチャート中、再補正処理のためのステップＡ２０〜Ａ２４を付加したものである。具体的には、ステップＡ１６の直後にステップ２０を付加し、ステップ１７の直前にステップ２１〜２４を付加している。第１実施形態と同様にして、燃料タンク１への燃料２の少量補給があったときには、ＥＣＵ１１は、ステップＡ１１〜Ａ１６において、いずれかの補正を行う。ＥＣＵ１１は、Ｆｕｌｌ不感帯での少量補給に対応した補正を行ったとき（Ａ１５、Ａ１６）には、補正中フラグをＯＮ状態に設定し、補正開始時の燃料レベルセンサ５のレベル信号ＦＬをＦＬrefpp[ppcnt]に記憶する（Ａ２０）。換言すれば、中間領域もしくはＥｍｐｔｙ不感帯での少量補給に対応した補正がなされたときには、補正中フラグはＯＮされない。
【００８０】
次に、ＥＣＵ１１は、燃料２の少量補給時の補正要求の有無すなわち補正中フラグがＯＮかどうかを判定する（Ａ２１）。ＥＣＵ１１は、補正中フラグがＯＮである場合（Ａ２１でＹＥＳ）には、この時点での燃料消費量を補正中の燃料消費量ΔＩＮＪSUMPP［ppcnt］として積算する（Ａ２２）。なお、ＥＣＵ１１は、ステップＡ２１でＮＯと判断した場合には、ステップＡ１７に移行する。
【００８１】
この後、ＥＣＵ１１は、補正開始からのレベル信号ＦＬの変化量を（レベル信号ＦＬ−ＦＬrefpp[ppcnt]）により演算して変化量ΔＦＬppとし、この変化量ΔＦＬppが再補正判定値としての所定値ΔＦＬreadjustを上回るかどうかを判定する（Ａ２３）。所定値ΔＦＬreadjustは、例えば、読み取り可能な変化量として設定されていて、具体的には、レベル信号ＦＬが若干の変化を呈したことを検出する。これにより、レベル信号ＦＬの出力範囲がＦｕｌｌ不感帯から脱して中間領域に入ったことを検出しているのである。
【００８２】
この後、ＥＣＵ１１は、燃料消費量判定値ＩＮＪfailに対する補正を過剰に行うことのないよう、次の処理（Ａ２４）を行う。すなわち、ＥＣＵ１１は、前回までのプログラム実行で、ステップＡ１７での処理において燃料消費量判定値ＩＮＪfailに補正量ΔＩＮＪＰＰ［ppcnt］を加算しているので、一旦ここで減算する。これにより、燃料消費量判定値ＩＮＪfailを補正前の値に戻すことができる。続いて、ＥＣＵ１１は、燃料消費量判定値の前回の補正量ΔＩＮＪＰＰ［ppcnt］に対して、実際の燃料消費量に相当する値として燃料消費量ΔＩＮＪSUMPP［ppcnt］の値に置き換えることで再補正を行う（Ａ２４）。これにより、レベル信号ＦＬがＦｕｌｌ不感帯にとどまっていた状態の燃料２の実際の量を燃料消費量により置き換えることで、実際の補給量に近似させるものである。
【００８３】
なお、ＥＣＵ１１は、ステップＡ２３でＮＯと判断した場合には、前述と同様にしてステップＡ１７を実行した後にプログラムを終了する。また、ＥＣＵ１１は、ステップＡ２４を実行した場合には、続いて、ステップＡ１７にて燃料消費量判定値ＩＮＪfailに、ステップＡ２４で再補正用に設定した少量給油時の補正量ΔＩＮＪＰＰ［ppcnt］を加算し、この後補正処理を終了させる。
【００８４】
図９は上記の再補正処理の具体的な実施例を示している。ここでは、燃料レベルセンサ５のレベル信号ＦＬがＦｕｌｌ不感帯にある場合（第１実施形態の図６に対応）について示している。前述のようにＦｕｌｌ不感帯で少量の燃料補給を行った場合に、補正量としては最大貯蔵量ΔＩＮＪfullにより一律に設定するので、実際には補正量が大きい場合が生じている。
【００８５】
これに対して、この実施形態では、ＥＣＵ１１は、第１実施形態と同様にしてステップＡ１６を実施することで１回目の補正量ΔＩＮＪＰＰ［１］を設定している。この後、ＥＣＵ１１は、ステップＡ２３でＹＥＳと判断した時点ｔｂ３ｘで、このときの補正量ΔＩＮＪＰＰ［１］を燃料消費量ΔＩＮＪＳＵＭＰＰ［１］の値に置き換えることで正確な値となるように再補正することができる。なお、図９中では、再補正された補正量をΔ［１］として簡略的に示している。この後、ＥＣＵ１１は、再補正の値Δ［１］の値を燃料消費量判定値ＩＮＪfailの値に加算する（Ａ１７）。この結果、燃料消費量ＩＮＪsumの値が燃料消費量判定値ＩＮＪfailに到達する時間が修正された状態で延長されることになる。
【００８６】
以下、同様にして、残量が満量付近の燃料タンク１への燃料２の少量の補給が繰り返された場合でも、それらに対応してＥＣＵ１１は、補正量として時刻ｔｂ４でΔＩＮＪＰＰ［２］として求め、この後、時刻ｔｂ４ｘで再補正値Δ［２］を算出して補正を行う。さらに、ＥＣＵ１１は、補正量として時刻ｔｂ５でΔＩＮＪＰＰ［３］として求め、この後、時刻ｔｂ５ｘで再補正値Δ［３］を算出して補正を行う。
【００８７】
以上のように、第２実施形態によれば、ＥＣＵ１１により、一度補正をした燃料消費量判定値ＩＮＪfailに対して、燃料２の少量補給時の燃料消費量判定値ＩＮＪfailが適切となるように再補正値を求めて再補正することで、診断の精度と頻度を両立させることができる。
【００８８】
（第３実施形態）
図１０から図１２は第３実施形態を示すもので、以下、第２実施形態と異なる部分について説明する。この実施形態においては、燃料レベルセンサ５のレベル信号ＦＬが、燃料タンク１内の燃料２の残量にほぼ比例したレベルの信号として出力される場合に対応している。
【００８９】
図１０は、燃料タンク１内の燃料２の残量と燃料レベルセンサ５のレベル信号ＦＬとの関係を示している。この図１０に示すように、燃料レベルセンサ５のレベル信号ＦＬは、燃料タンク１内の燃料２が少ないときに小さい値の信号として出力される。燃料レベルセンサ５のレベル信号ＦＬは、燃料２が「空」状態からＬ１までの間は、Ｅｍｐｔｙ不感帯であるから、一定レベルである。この後、燃料２の残量が多くなるにしたがってレベル信号ＦＬはほぼ比例した関係で増大し、燃料２が「満量」前のＬ２に達するとＦｕｌｌ不感帯になるので、一定レベルになる。
【００９０】
この場合、燃料タンク１の形状や内部に配置する装置などに応じてレベル信号ＦＬと燃料２の残量との関係が必ずしも比例関係を保たない場合があり、この図１０においても、燃料２の残量が中間部において傾きが変化するように設けられている。
【００９１】
図１１は、図１０に示す特性を有する燃料レベルセンサ５を用いた場合の故障診断プログラムのフローチャートである。ＥＣＵ１１は、この故障診断処理においては、第２実施形態（第１実施形態）とほぼ同様の処理を行うが、燃料レベルセンサ５のレベル信号ＦＬの出力レベルが判定していることに起因して、図１１の処理では、ステップＡ６、Ａ１１およびＡ２３における処理がステップＡ６ａ、Ａ１１ａおよびＡ２３ａに置き換えられている。
【００９２】
すなわち、ＥＣＵ１１は、ステップＡ６ａにおいて、レベル信号ＦＬの変化量ΔＦＬとして、レベル信号ＦＬからＦＬrefを減じる（ΔＦＬ＝レベル信号ＦＬ−ＦＬref）ように処理している。また、ＥＣＵ１１は、ステップＡ１１ａにおいて、レベル信号ＦＬが中間領域に存在するか否かを判定する際に、大小関係が反転していることから、不等式が逆の関係（ＦＬｅ＜ＦＬ＜ＦＬｆ）となっている。さらに、ＥＣＵ１１は、ステップＡ２３ａにおいて、補正開始からのレベル信号ＦＬの変化量を（ＦＬrefpp[ppcnt]−レベル信号ＦＬ）により演算して変化量ΔＦＬppとし、この変化量ΔＦＬppが所定値ΔＦＬreadjustを上回るかどうかを判定する。
【００９３】
図１２は、燃料レベルセンサ５のレベル信号ＦＬがＦｕｌｌ不感帯にある場合を具体例として示している。具体的な処理の流れは第２実施形態とほぼ同じである。また、図１２中、レベル信号ＦＬの波形が上下判定していることを除いて、ほぼ同様の作用効果を得ることができる。
【００９４】
したがって、このような第３実施形態によっても、以上の差異を除いて、レベル信号ＦＬの大小関係が逆になっていることを前提としながら、ＥＣＵ１１により、第２実施形態（第１実施形態）と同様の趣旨で処理を行うことで、同様の作用効果を得ることができる。
【００９５】
（第４実施形態）
図１３は第４実施形態を示すもので、第１実施形態と異なるところは、燃料タンク１に開閉センサ４が設けられておらず、キャップ３の開閉を直接検出することができないが、他の既存の構成により燃料補給を判定することができるようにしたものである。
【００９６】
すなわち、第１実施形態で示しているように、燃料タンク１には、内圧センサ６が設けられているとともに、車両の走行状態を判定できる車速センサ１２を備えている。この実施形態では、これらの構成から得られる信号に基づいて給油イベントを判定する。
【００９７】
すなわち、図１３において、ＥＣＵ１１は、この補正処理においては、第１実施形態とほぼ同様の処理を行うが、燃料タンク１の開閉動作を検出するステップＡ３およびＡ５における処理がステップＡ３ａ、Ａ５ａに置き換えられている。
【００９８】
燃料タンク１の開閉を検出する条件として、通常燃料タンク１は、内部空間が負圧となるように設定されているところ、燃料補給のためキャップ３が開状態になると、内部空間が大気圧に変化する。また、燃料タンク１に燃料２を補給する際には、車両が停止していることが条件となることから、ＥＣＵ１１は、車速センサ１２の信号から停車状態を判定することができる。したがって、ＥＣＵ１１は、ステップＡ３ａにおいて、車速がゼロで停車状態を判定し、且つ負圧から大気圧への圧力変化を内圧センサ６により検出することで、ＥＣＵ１１は燃料タンク１への燃料補給開始が判断できる。
【００９９】
また、燃料タンク１のキャップ３が閉じられたことについては、内圧が変化するのは遅いが、少なくとも車速センサ１２により走行状態が検出されていれば、これをもってキャップ３が閉じられていることを推定できる。したがって、ＥＣＵ１１は、ステップＡ５ａにおいて、車両が停車状態から走行状態に変化したことを車速センサ１２の検出信号によって得ることができたときに、燃料タンク１のキャップ３が閉じられた状態を判定することができる。
【０１００】
なお、このステップＡ５ａでのＥＣＵ１１による給油イベントの終了判定では、キャップ３を閉じたタイミングは検出できていないが、実用上においては、車両が走行するときにもっぱら燃料が消費されるので、このような判定をしても大きく誤差がでることを回避することができる。
【０１０１】
このような第４実施形態によっても、燃料タンク１の開閉センサ４の代わりに、内圧センサ６および車速センサ１２によって給油イベントを判断することができ、第１実施形態と同様の作用効果を奏することができる。
なお、上記実施形態は、第２実施形態あるいは第３実施形態に適用することもできる。
【０１０２】
（他の実施形態）
なお、本発明は、上述した一実施形態のみに限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能であり、例えば、以下のように変形または拡張することができる。
【０１０３】
燃料レベルセンサ５のレベル信号ＦＬと燃料タンク１内の燃料２の残量との関係は、概ね比例関係を満たしていれば、途中で傾きが変化しない特性の場合はもちろん、複数個所で変化する特性の場合でも、適用することができる。
【０１０４】
第１実施形態では、補正回数の上限値Ｎmaxを３回に設定したが、これに限らず、適宜の回数に設定することができるし、上限値を設けないようにしても良い。
【符号の説明】
【０１０５】
図面中、１は燃料タンク、２は燃料、３はキャップ、４は開閉センサ、５は燃料レベルセンサ、５ａはフロート、６は内圧センサ、１０はインジェクタ、１１はＥＣＵ（燃料消費量積算部、判定部、積算値クリア部、補正部）、１２は車速センサ、１３は吸気量センサである。
【図１】
0006601260.tif 000002
【図２】
0006601260.tif 000003
【図３】
0006601260.tif 000004
【図４】
0006601260.tif 000005
【図５】
0006601260.tif 000006
【図６】
0006601260.tif 000007
【図７】
0006601260.tif 000008
【図８】
0006601260.tif 000009
【図９】
0006601260.tif 000010
【図１０】
0006601260.tif 000011
【図１１】
0006601260.tif 000012
【図１２】
0006601260.tif 000013
【図１３】
0006601260.tif 000014