次に図面を参照してこの発明の実施の形態を説明する。図1は、この発明の実施形態に従う、内燃機関およびその制御装置の全体構成図である。
電子制御ユニット(以下、「ECU」)という)5は、車両の各部から送られてくるデータを受け入れる入力インターフェース5a、車両の各部の制御を行うための演算を実行するCPU5b、読み取り専用メモリ(ROM)およびランダムアクセスメモリ(RAM)を有するメモリ5c、および車両の各部に制御信号を送る出力インターフェース5dを備えている。メモリ5cのROMには、車両の各部の制御を行うためのプログラムおよび各種のデータが格納されている。この発明に従うリーク判定を実施するためのプログラム、および該プログラムの実行の際に用いるデータおよびテーブルは、このROMに格納されている。ROMは、EPROMのような書き換え可能なROMでもよい。RAMには、CPU5bによる演算のための作業領域が設けられる。車両の各部から送られてくるデータおよび車両の各部に送り出す制御信号は、RAMに一時的に記憶される。
エンジン1は、例えば4気筒を備えるエンジンであり、吸気管2が連結されている。吸気管2の上流側にはスロットル弁3が配されており、スロットル弁3に連結されたスロットル弁開度センサ(θTH)4は、スロットル弁3の開度に応じた電気信号を出力してECU5に供給する。
燃料噴射弁6は、エンジン1とスロットル弁3の間に気筒毎に設けられ、ECU5からの制御信号によって開弁時間が制御される。燃料供給管7は、燃料噴射弁6および燃料タンク9を接続し、その途中に設けられた燃料ポンプ8が、燃料を燃料タンク9から燃料噴射弁6に供給する。図示しないレギュレータが、ポンプ8と燃料噴射弁6の間に設けられ、吸気管2から取り込まれる空気の圧力と、燃料供給管7を介して供給される燃料の圧力との間の差圧を一定にするよう動作して、燃料の圧力が高すぎるときは図示しないリターン管を通して余分な燃料を燃料タンク9に戻す。こうして、スロットル弁3を介して取り込まれた空気は、吸気管2を通り、燃料噴射弁6から噴射される燃料と混合してエンジン1のシリンダ(図示せず)に供給される。
吸気管圧力(PB)センサ13および吸気温(TA)センサ14は、スロットル弁3の下流側に装着されており、それぞれ吸気管圧力PBおよび吸気温TAを検出し、それをECU5に送る。
エンジン1には、クランク角センサ17が設けられている。クランク角センサ17は、クランクシャフト(図示せず)の回転に伴い、パルス信号であるCRK信号およびTDC信号をECU5に出力する。
CRK信号は、所定のクランク角(たとえば、30度)で出力されるパルス信号である。ECU5は、該CRK信号に応じ、エンジン1の回転数NEを算出する。TDC信号は、ピストン(図示せず)のTDC位置に関連したクランク角度で出力されるパルス信号である。
エンジン水温(TW)センサ18は、エンジン1のシリンダブロックの冷却水が充満した気筒周壁(図示せず)に取り付けられ、エンジン冷却水の温度TWを検出し、それをECU5に送る。
エンジン1には排気管12が接続され、排気管12の途中に設けられた排気ガス浄化装置である三元触媒(図示せず)を介して排気する。三元触媒の上流に設けられたLAFセンサ19は広域空燃比センサであり、リーンからリッチにわたる範囲において排気ガス中の酸素濃度すなわち実空燃比を検出し、それをECU5に送る。
イグニッションスイッチ21がECU5に接続されている。イグニッションスイッチ21の切換信号は、ECU5に送られる。
車速(VP)センサ22および大気圧(PA)センサ23がECU5に接続されており、それぞれ、車両の速度VPおよび大気圧PAを検出し、それをECU5に送る。
エンジン1には、たとえば4速の変速機(図示せず)が連結されており、該変速機は、選択された変速比に従い、エンジン1の駆動力を車両の駆動輪に伝達する。
次に、蒸発燃料処理系50について説明する。燃料タンク9は、チャージ通路31を介してキャニスタ33に接続され、燃料タンク9からの蒸発燃料が、キャニスタ33に移動できるようになっている。チャージ通路31には、機械式の二方向弁35が設けられている。二方向弁35は、タンク内圧が大気圧より第1の所定圧(たとえば、2.7kPa)以上高いときに開く正圧弁と、タンク内圧がキャニスタ33の圧力より第2の所定圧以上低いとき開く負圧弁を備える。
二方向弁をバイパスするバイパス通路31aが設けられている。バイパス通路31aには、電磁弁であるバイパス弁36が設けられる。バイパス弁36は、通常は閉弁状態にあり、ECU5からの制御信号に従って開弁する。
圧力センサ15は、二方向弁35と燃料タンク9との間に設けられており、その検出信号はECU5に送られる。圧力センサ15の出力PTANKは、キャニスタ33および燃料タンク9内の圧力が安定している定常状態では、燃料タンク内の圧力に等しくなる。一方、圧力センサ15の出力PTANKは、キャニスタ33または燃料タンク9内の圧力が変化しているときは、実際のタンク内圧とは異なる圧力を示す。圧力センサ15の出力を、以下「タンク内圧PTANK」と呼ぶ。
キャニスタ33は、燃料蒸気を吸着する活性炭を内蔵し、通路37を介して大気に連通する吸気口(図示せず)を持つ。通路37の途中には、ベントシャット弁38が設けられる。ベントシャット弁38は、通常は開弁状態にあり、ECU5からの制御信号に従って閉弁する。
キャニスタ33は、パージ通路32を介して吸気管2のスロットル弁3の下流側に接続される。パージ通路32の途中には電磁弁であるパージ制御弁34が設けられ、キャニスタ33に吸着された燃料が、パージ制御弁34を介してエンジンの吸気系に適宜パージされる。パージ制御弁34は、ECU5からの制御信号に基づいて、オン−オフデューティ比を変更することにより、パージ流量を連続的に制御する。
この実施形態によると、イグニッションスイッチ21がオフされても、リーク判定を実施する期間中は、ECU5、バイパス弁36およびベントシャット弁38には電気が供給される。パージ制御弁34は、イグニッションスイッチ21がオフされると電気が供給されなくなり、閉弁状態を維持する。
各種センサからの入力信号はECU5の入力インターフェース5aに渡される。入力インターフェース5aは、受け取ったアナログ信号をデジタル信号に変換する。CPU5bは、変換されたデジタル信号を処理し、メモリ5cに格納されているプログラムに従って演算を実行し、車の各部のアクチュエータに送る制御信号を作り出す。この制御信号は出力インターフェース5dに送られ、出力インターフェース5dは、燃料噴射弁6、パージ制御弁34、バイパス弁36およびベントシャット弁38に制御信号を送る。
図2は、燃料タンク9の構成を概略的に示す。矢印Aに示される方向は、車両の進行方向を示し、その反対方向が、矢印Bにより示されている。燃料が“満タン”になった時の液面が、破線Fにより表されている。
燃料レベルセンサ10は、燃料の液面に浮かぶフロートと、該フロートの上下動に従って信号を出力する回路とを備える(いずれも図示せず)。該信号は、ECU5に送られ、燃料の液位Lを表す燃料レベルFLEVELが検出される。この実施形態では、燃料レベルセンサ10は、矢印A側に設けられている。
燃料タンク9の上部には、フロート弁41が設けられている。フロート弁41は弁室42を備えており、弁室42の上部には、キャニスタ33へのチャージ通路31が接続されている。弁室42には、上下に可動なフロート43が収容されている。燃料が“満タン”になると、フロート43が、チャージ通路31への開口部44を閉じる。
カット弁45は、満タンのレベルFよりも高い位置に設けられている。カット弁45は、弁室46を備えており、弁室46の上部には、チャージ通路31へ至る燃料通路47が接続されている。弁室46には、上下に可動なフロート48が収容されている。燃料タンク9内の燃料の液面が満タン時の液面Fよりも高くなったとき、たとえば車体が大きく傾いたりすることによって燃料が極度に上部まで達したとき、フロート48が、燃料通路47への開口部49を閉じ、燃料タンク9内の燃料がキャニスタ33に流入するのを阻止する。カット弁45は、液面が“満タン”のレベルFにある時は、開いている。
燃料タンク9には、ガソリンを燃料タンク9に給油するためのフィラーチューブ51が取り付けられている。フィラーチューブ51には、フィラーキャップ52が取り付けられる。リターン通路53が、燃料タンク9とフィラーチューブ51との間に接続されている。
フィラーチューブ51から給油ガンを介して燃料を供給すると、燃料タンク9の液面Lが次第に上昇し、燃料タンク9からチャージ通路31に押し出された蒸発燃料は、開弁状態にあるフロート弁41からチャージ通路31を経てキャニスタ33に供給され、該キャニスタ33にチャージされる。燃料タンクの液面Lが“満タン”レベルFに達すると、フロート弁41が閉弁状態になり、チャージ通路31が閉じられる。燃料タンク9内の蒸発燃料は、キャニスタ33に供給されなくなる。その結果、フィラーチューブ51内の液面が上昇する。これに応じて、オートストップ装置(図示せず)が作動し、燃料の供給が自動的に停止する。
また、給油ガンから燃料が供給されるとき、燃料タンク9から押し出された蒸発燃料の一部は、キャニスタ33に供給されることなく、リターン通路53を通ってフィラーチューブ51に返される。この蒸発燃料は、給油ガンからフィラーチューブ51に供給される燃料と共に、燃料タンク9の内部に還流する。これにより、新気が、フィラーチューブ51を経て燃料タンク9に取り込まれることが抑制される。新気が吸入されにくくなると、新たな蒸発燃料が発生しにくくなるので、キャニスタ33の負荷を軽減することができる。
フィラーチューブ51の先端55は、燃料レベルの液面Lが所定値以上になったとき、燃料に液没する。リターン通路53の先端56は、燃料レベルの液面Lが満タンレベルFになったとき、燃料に液没する。すなわち、燃料レベルの液面Lが満タンレベルFになったとき、フィラーチューブ51およびリターン通路53の先端55および56の両方が燃料に液没する。
燃料が満タンでなくても、フィラーチューブ51およびリターン通路53の先端55および56の両方が燃料に液没する状態は起こりうる。たとえば、傾斜している場所に車両を停車することにより、燃料タンク9が傾く。残存している燃料の量が所定値(たとえば、満タンのレベルFの8割)以上の時に燃料タンクが傾くと、リターン通路53の先端56が燃料に液没する。
図3は、このような状態の一例を示している。車両は坂道上にあり、車両の前方(矢印A側)が高くなるように、燃料タンク9が傾斜している。蒸発燃料処理系50は、第1の系と第2の系とに、燃料により分離される。第1の系は、圧力センサ15(前述したように、これは、チャージ通路31に設けられている)が存在する空間を含む系である。燃料タンク9から、チャージ通路31を経てキャニスタへと至る系が空間的につながっており、第1の系を構成する。図では、第1の系の一部が、点の網掛けにより表されている。
第2の系は、フィラーチューブ51内の空間を含む系である。この実施形態では、フィラーチューブ51内の空間は、リターン通路53内の空間とつながっているので、第2の系は、フィラーチューブ51およびリターン通路53を含む。図では、第2の系は、斜線の網掛けにより表されている。
リーク判定は、圧力センサ15により検出される圧力PTANKに基づいて実施される。第1の系と第2の系とに分離された状態では、リーク判定の対象は、実質的に第1の系のみとなり、第2の系にリークがあるかどうかは判定されない。第2の系にリークがあったとしても、蒸発燃料処理系50にはリーク無し(すなわち正常)と誤判定されるおそれがある。
本願発明の一実施形態では、図3に示されるような、第1および第2の系が燃料により分離された状態にあると判断した時、リーク判定を禁止する。一実施例として、燃料タンクに残存する燃料の量が所定値以上の時に燃料タンクが傾いている状態が検出されたならば、第1および第2の系が燃料により分離された状態であると判断する。
図4は、本願発明の一実施形態に従う、蒸発燃料処理系50のリークを判定する装置のブロック図である。各機能ブロックは、典型的には、メモリ5cに記憶されたコンピュータプログラムにより実現される。代替的に、ソフトウェア、ハードウェアおよびファームウェアおよびこれらの任意の組み合わせにより実現してもよい。
この発明の一実施形態では、第1および第2のリーク判定が実施される。第2のリーク判定は、第1のリーク判定よりも小さい穴(たとえば、直径が約0.5ミリメートルの穴)を検出する。以下の説明において、単に「リーク判定」と呼ぶ時は、第1および第2のリーク判定を含むものとする。
傾斜地走行判定部60は、車両の加速度に基づいて、車両が傾斜地を走行しているのか、または平地を走行しているのかを判断する。
第1の燃料レベル算出部61は、燃料タンク9に実際に残存する燃料の量を表す第1の燃料レベルFLEVELFを算出する。具体的には、車両が平地を走行していると判断されたときは、燃料タンク9内の燃料の液位を示す燃料レベルFLEVELを燃料レベルセンサ10から受け取り、式(1)に従って、第1の燃料レベルFLEVELFを算出する。ここで、kはサイクルを識別する識別子であり、(k)は今回のサイクルを示し、(k-1)は前回のサイクルを示す。
係数CFLFは、第1の平滑化(なまし)係数を示しており、予め決められた値(たとえば、0.01)にセットされる。代替的に、燃料レベルFLEVELに応じて、または他のパラメータに応じて、可変であってもよい。車両が走行しているとき、路面の状況により、液位Lの変動が大きく、かつ速いことがある。このような変動は、燃料レベルFLEVELにも現れる。第1の平滑化係数CFLFは、このような変動を平滑化することのできる値に設定される。
第1の燃料レベルFLEVELF=
CFLF×FLEVEL(k)+(1−CFLF)×FLEVELF(k−1)
(1)
第1の燃料レベル算出部61は、車両が傾斜地を走行しているときは、式(2)に従い、車両が平地を走行していると判断された時に算出された第1の燃料レベルの過去値FLEVEL1と、燃料消費量UGASFLVLとに基づいて、第1の燃料レベルFLEVELFを推定する。
第1の燃料レベルFLEVELF=FLEVELF1−UGASFLVL
(2)
一実施例では、FLEVELF1は、式(1)に従って直近に算出された第1の燃料レベルFLEVELFである。燃料消費量UGASFLVLは、FLEVEL1が算出された時点から消費された燃料の量である。
車両が傾斜地を走行している時は、燃料レベルセンサ10は、正確な値を示さないおそれがある。たとえば、図3に示されるように燃料タンクが傾くと、燃料レベルセンサ10は、実際の燃料レベルよりも低い値を出力する。燃料タンクに残存している正確な燃料の量を検出するため、車両が傾斜地を走行している時には、式(2)に従って、第1の燃料レベルFLEVELFを推定する。
第2の燃料レベル算出部62は、車両が傾斜地を走行しているか否かにかかわらず、燃料レベルセンサ10から受け取った燃料レベルFLEVELに基づいて第2の燃料レベルFLEVELRを算出する。算出は、式(3)に従う。
係数CFLRは、第2の平滑化係数を示しており、予め決められた値(たとえば、0.25)がセットされる。代替的に、燃料レベルFLEVELに応じて、または他のパラメータに応じて、可変であってもよい。
第2の燃料レベルFLEVELR=
CFLR×FLEVEL(k)+(1−CFLR)×FLEVELR(k−1)
(3)
好ましくは、第2の平滑化係数は、給油行為のような、燃料レベルFLEVELの変化速度が遅い状態を検出することができるような大きさに設定される。すなわち、第2の燃料レベルFLEVELRの方が、第1の燃料レベルFLEVELFよりも、燃料レベルセンサ10からの燃料レベルFLEVELを平滑化する度合いが小さくなるように、第1および第2の平滑化係数は設定されるのが好ましい。したがって、この実施形態では、第2の平滑化係数は、第1の平滑化係数よりも大きい値を持つ。
燃料タンク9が傾いておらず、かつ燃料タンク9に残存している燃料の量が実際に変化しなければ、第1の燃料レベルFLEVELFおよび第2の燃料レベルFLEVELRは、実質的に同じ値を示す。燃料タンクが傾いているとき、第1の燃料レベルFLEVELFは、燃料タンク内に実際に残存している燃料の量を正確に表す。燃料タンクが傾いているとき、第2の燃料レベルFLEVELRは、燃料タンク内の燃料の液位を表し、実際に残存している燃料の量を表さない。したがって、第1の燃料レベルFLEVELFと第2の燃料レベルFLEVELRを比較することにより、燃料タンクが傾いているかどうかを判断することができる。
この実施例では、第1の燃料レベルの算出と第2の燃料レベルの算出との間で、異なる大きさの平滑化係数を用いているが、このことは、この発明の趣旨に従えば、必須ではない。
しかしながら、第1の平滑化係数を小さめに設定することにより、車両の走行中における残存燃料を正確に検出することができる。また、第2の平滑化係数を、燃料レベルFLEVELのゆるやかな変化を検出することができるよう大きめに設定することにより、燃料タンクの傾斜による燃料の液位の変化を確実に検出することができる。
分離状態検出部63は、エンジンが停止した後の所定時間内に、第1の燃料レベルFLEVELFと第2の燃料レベルFLEVELRの差を算出する。第1の燃料レベルFLEVELFと第2の燃料レベルFLEVELRの間に差があるということは、燃料タンク9が傾いていることを示す。
該所定時間は、短い時間(たとえば5秒)に設定される。好ましくは、エンジンが停止してから給油が開始されるのに必要な時間よりも短く設定される。給油行為が開始されると、第2の燃料レベルFLEVELRの値が変化し、よって、燃料タンクが傾斜しているかどうかを正確に判断することができなくなるからである。
前述したように、燃料タンク9に残存している燃料の量が所定値以上のときに燃料タンク9が傾斜すると、圧力センサ15が存在する空間の第1の系と、フィラーチューブ51内の空間の第2の系とが燃料により分離される。分離状態検出部63は、残存している燃料の量が所定値以上であり、かつ燃料タンク9の傾斜が検出されたならば、第1および第2の系が分離されている状態にあると判断する。該残存している燃料の量は、第1の燃料レベルFLEVELFにより表される。
判定許可部64は、エンジンが停止したことに応じて、リーク判定を実行するための条件が成立するかどうかを判断する。判定許可部64は、分離状態検出部63により第1および第2の系の分離状態が検出されたならば、リーク判定を禁止する。こうして、第2の系のリークを検出することができない状態でリーク判定を実行することが禁止される。
リーク開始部65は、リーク判定を実行するための条件が成立したことに応じて、ベントシャット弁38およびバイパス弁36を開き、蒸発燃料処理系50を大気に開放する。該大気開放処理は、所定時間にわたって実行される。その後、ベントシャット弁38を閉じる。
リーク判定部66は、ベントシャット弁38が閉じることに応じて、第1および第2のリーク判定を開始する。第1および第2のリーク判定は、所定時間の間隔で、第1のリーク判定部71および第2のリーク判定部72によりそれぞれ実行される。
リーク判定は、任意の既知の手法で実行することができる。本願発明の一実施形態によると、第1の判定部61は、タンク内圧PTANKの2回微分値に基づいて、蒸発燃料処理系50にリークがあるかどうかを判定する。第2の判定部62は、タンク内圧PTANKと、該タンク内圧PTANKの停滞時間との関係に基づいて、リークがあるかどうかを判定する。
図5〜図8を参照して、第1のリーク判定を説明する。
図5は、タンク内圧PTANKの推移を示すタイムチャートの一例である。具体的には、図5は、大気開放処理の後にベントシャット弁38を閉じた時刻t0からのタンク内圧PTANKの推移を示す。図5の(a)は、蒸発燃料処理系50が正常な(すなわちリーク無しの)場合を示し、図5の(b)は、蒸発燃料処理系50にリークがある場合を示す。蒸発燃料処理系50が正常なときは、タンク内圧PTANKはほぼ直線的に増加する。蒸発燃料処理系50にリークがあるときは、タンク内圧PTANKは、比較的大きな変化率で上昇した後、徐々に変化率が減少する。したがって、タンク内圧PTANKの変化率の推移を観測することにより、リークがあるかどうかを判定することができる。
この発明の一実施形態では、リークがあるかどうかを判定するための判定パラメータの算出に、タンク内圧PTANKの2回微分値を用いる。蒸発燃料処理系50が正常ならば、該タンク内圧PTANKの2回微分値はほぼゼロとなる。蒸発燃料処理系50にリークがあれば、該2回微分値は負の値となる。
図6の(a)は、一定時間毎にサンプリングされたタンク内圧PTANKの実測値の一例を示す。今回のサンプリングサイクルで検出されたタンク内圧をPTANK(k)で表すと、タンク内圧の変化量DPは、式(4)で表される。
DP=PTANK(k)−PTANK(k−1) (4)
図6の(b)は、変化量DPの推移を示すタイムチャートである。変化量DPが徐々に減少する傾向があることが、示されている。本願発明の一実施形態では、最小二乗法により、変化量DPの推移を示す回帰直線L1を求め、この傾きEDDPLSQA(第1の傾きパラメータと呼ぶ)を算出する。第1の傾きパラメータは、タンク内圧PTANKの2回微分値を表している。
燃料タンク9内で発生する蒸発燃料の量が多く、かつベントシャット弁38を閉じた後の圧力変化率が大きいときは、蒸発燃料処理系50が正常であっても、変化量DPは徐々に減少する傾向を示すことが、実験的に確認されている。このような状態においてもリークがあるかどうかをより正確に判定するため、本願発明の一実施形態では、図7に示すように、ベントシャット弁38を閉じた時刻t0から、第1の判定時間TMDDPTLが経過するまでの期間における、タンク内圧の最大値DPEOMAXを検出する。蒸発燃料処理系50にリークがあれば、最大値DPEOMAXに対する傾きEDDPLSQAの割合が大きくなる。該割合を調べることにより、リークがあるかどうかを判定することができる。該割合は式(5)により算出され、これを判定パラメータEODDPJUDとする。
EODDPJUD=|EDDPLSQA|/DPEOMAX (5)
図8は、判定パラメータEODDPJUDを縦軸とし、最大圧力DPEOMAXを横軸とした座標平面上に、蒸発燃料処理系50にリークが無い(すなわち、正常)場合のデータを黒丸としてプロットし、リークがある場合のデータを白丸としてプロットしている。この図から明らかなように、しきい値DDPJUDを適切な値に設定することにより、リークがあるかどうかを正確に判定することができる。
次に、図9を参照して、第2のリーク判定について説明する。蒸発燃料処理系50に小さな孔(たとえば、直径が0.5ミリメートルのような孔)があり、タンク内圧PTANKの変化速度が非常に小さいときには、第1の判定によりリークを検出することが困難なことがある。第2の判定によれば、このような小さな孔によるリークを検出することができる。
図9の(a)は、正常な場合のタンク内圧PTANK(後述するように、より正確には、タンク内圧PTANKを平滑化した(ローパスフィルタを適用した)タンク内圧PEONVAVE)の推移を示し、図9の(b)は、リークがある場合のタンク内圧PTANK(後述するように、より正確には、タンク内圧PTANKを平滑化した(ローパスフィルタを適用した)タンク内圧PEONVAVE)の推移を示す。検出された圧力PTANKが変化しない持続時間を、停滞時間TSTYと定義する。図に示すT1、T2およびT3が、停滞時間TSTYに相当する。停滞時間TSTYとタンク内圧PTANKとの間の関係をプロットすると、正常な場合については図9の(c)に示されるような相関特性が得られ、リークがある場合については図9の(d)に示されるような相関特性が得られる。それぞれの図における回帰直線L11およびL12の傾きに着目すると、回帰直線L11の傾きAL11は、正の比較的小さな値であり、回帰直線L12の傾きAL12は、絶対値が大きな負の値となることがわかる。本願発明の一実施形態では、タンク内圧PTANKと停滞時間TSTYとの相関特性を表す回帰直線の傾き(第2の傾きパラメータEODTMJUDと呼ぶ)により、リークを判定する。
図10は、燃料タンクが傾斜している状態を検出するプロセスのフローチャートである。この実施例では、エンジンが停止した時に燃料タンクが傾いていることが検出されたならば、第1および第2の系が分離していると判断する。該プロセスは、所定の時間間隔(たとえば、1秒)で実行される。
ステップS1において、車両が傾斜地を走行している時に値1が設定される傾斜地走行フラグVSLOPEを調べる。該フラグの値は、傾斜地走行判断のプロセス(図11)でセットされる。フラグVSLOPEの値がゼロならば、車両が平地を走行していることを示し、ステップS2に進む。
ステップS2において、現在の燃料消費量USEDGASを、基準値UGASFLSに設定する。ステップS3において、第1の燃料レベルFLEVELFを算出する。車両が平地を走行している状態なので、第1の燃料レベルFLEVELFは、上記の式(1)に従って算出される。ステップS4において、第1の燃料レベルの前回値FLEVELF1に、ステップS3で算出された第1の燃料レベルFLEVELFを設定する。
ステップS1において車両が傾斜地を走行していると判断されたならば、ステップS5およびS6において、第1の燃料レベルFLEVELFを推定する。ステップS5において、現在の燃料消費量USEDGASから、ステップS2で設定された基準値UGASFLSを減算し、第2の燃料消費量UGASFLVLを算出する。第2の燃料消費量UGASFLVLは、FLEVELF1が算出された時点から消費した燃料の量を示す。ステップS6において、上記の式(2)に従い、第1の燃料レベルFLEVELFを算出する。
ステップS8において、車速VPがゼロかどうかを調べる。車速VPがゼロでなければ、すなわち車両が走行しているときは、ステップS15に進む。ステップS15において、エンジンが停車した時に燃料タンクが傾斜していれば値1に設定される傾斜フラグFEOSLOPEをゼロに設定する。ステップS16において、エンジンが停止した時からの経過時間を計測するダウンタイマTRFDCDYの値に、所定値TMRFDCDY(たとえば、5秒)をセットし、ステップS17に進む。
エンジンが停止した後にこのルーチンに入ると、ステップS8の判断がYesになる。ステップS9に進み、ダウンタイマTRFDCDYの値がゼロかどうかを調べる。最初にこのステップを実行する時の答えはNoである。これは、エンジンが停止してから、所定時間、たとえば5秒が経過していないことを示す。
ステップS10において、第1の燃料レベルFLEVELFから第2の燃料レベルFLEVELRを減算した値が、所定値DFLSLP以上かどうかを判断する。FLEVELF−FLEVELR≧DFLSLPならば、エンジンが停止した時に、図3に示されるように、矢印A側が高くなるよう燃料タンク9が傾いていることを示す。したがって、ステップS11において傾斜フラグFEOSLOPEを値1に設定し、ステップS12に進む。ステップS10の答えがNoならば、燃料タンクが傾いていないことを示す。傾斜フラグFESLOPEの値を1に設定することなく、ステップS12に進む。
傾斜フラグFEOSLOPEは、燃料タンクの傾斜によって、第1の系と第2の系が分離されている時に値1が設定される点に注意されたい。図3において、矢印B側が高くなるように燃料タンク9が傾くと、燃料レベルセンサ10の検出値FLEVELは、実際の燃料レベルよりも高い値を示す。しかしながら、このような傾斜においては、フィラーチューブ51の先端55およびリターン通路53の先端56は液没しない。液没が生じないので、リーク判定を行うことができる。したがって、(FLEVELF−FLEVELR)が所定値DFLSLPより小さいときは(たとえ、(FLEVELF−FLEVELR)の絶対値が該所定値DFLSLPより大きくても)、傾斜フラグFEOSLOPEに値1を設定しない。
車両の機種によっては、燃料レベルセンサ10が、図3の矢印B側(たとえば、リターン通路の先端56付近)に設けられることがある。この場合には、図3に示されるように燃料タンク9が傾斜すると、第2の燃料レベルFLEVELRは、実際の燃料レベルよりも高い値を示す。したがって、第2の燃料レベルFLEVELRから第1の燃料レベルFLEVELFを減算した値が、所定値DFLSLP以上ならば、傾斜フラグFESLOPEに値1を設定する。
このように、傾斜フラグFEOSLOPEに値1を設定するかどうかは、燃料レベルセンサ10と、第2の系を構成する要素(フィラーチューブ51やリターン通路53)との相対位置に従って変わる点に注意されたい。
ステップS12において、現在の第2の燃料レベルFLEVELRを、FLVLRDC1として保存する。
ステップS9の答えがYesならば、エンジンが停止してから所定時間が経過していることを示す。ステップS13において、給油中かどうかを判断する。具体的には、第2の燃料レベルの今回値FLEVELRと、ステップS12で保存された第2の燃料レベルの前回値FLFLRDC1との差が、所定値DFLRFLDC以上かどうかを判断する。第2の燃料レベルに変化が生じていれば、給油中であると判断することができる。したがって、ステップS13の答えがYesならば、給油フラグFRFUELDCを値1に設定し、給油中であることを示す。ステップS13の判断がNoならば、給油中でないことを示す。
ステップS17において、第2の燃料レベルFLEVELRを、上記の式(3)に従い算出する。
こうして、ステップS10およびS11に示されるように、第1の燃料レベルと第2の燃料レベルとの差に基づいて、第1の系と第2の系の分離状態を生じさせるような燃料タンクの傾斜を検出することができる。
車両が傾斜地を走行しているかどうかの判断は、任意の既知の手法を用いて実施されることができる。この実施例では、本願の出願人による、特許第2959937号公報に示される手法を用いる。ここで、簡単にその手法を説明する。
図11は、車両が傾斜地を走行しているかどうかを判断するプロセスのフローチャートである。このプロセスは、所定の時間間隔(たとえば、1秒)で実行される。
ステップS21において、車両が平地を走行するときに期待される加速度GGH(予想加速度と呼ぶ)を算出する。この実施例では、予想加速度GGHは、選択された変速比が3速であることを前提として算出される。予想加速度GGHは、検出された車速とスロットル弁の開度に基づいて算出されることができる。たとえば、車速およびスロットル弁の開度に基づく加速度を、予めマップに規定し、該マップをメモリに記憶する。プロセスは、該マップを参照することにより、予想加速度GGHを求めることができる。
ステップS22において、変速比が3速である場合の実加速度HDELVを算出する。実加速度HDELVは、検出された車速の変化量ΔVに補正係数を乗算することにより算出されることができる。該補正係数は、検出された車速の変化量ΔVを、3速に相当する値に換算するための係数である。
ステップS23において、実加速度HDELVから予想加速度GGHを減算し、降板方向の差分PKUを算出する。車両が坂を下っているときは、予想加速度よりも実加速度が大きくなる。したがって、車両が実際に坂を下っているならば、差分PKUは正の値を持つ。
ステップS24において、予想加速度GGHから実加速度HDELVを減算し、登板方向の差分PNOを算出する。車両が坂を登っているときは、実加速度よりも予想加速度が大きくなる。したがって、車両が実際に坂を登っているならば、差分PNOは正の値を持つ。
ステップS25において、差分PKUおよびPNOについて、重み付け平均値PKUAVEおよびPNOAVEをそれぞれ算出する。
ステップS26およびS27において、降板用平均値PKUAVEが所定値より小さく、かつ登板用平均値PNOAVEが所定値より小さければ、これは、実加速度と予想加速度との差がそれほど大きくないことを示す。すなわち、車両が平地を走行していると判断することができる。ステップS28において、傾斜地走行フラグVSLOPEにゼロを設定する。
降板用平均値PKUAVEが所定値以上ならば、車両が坂を下っていることを示し、登板用平均値PNOAVEが所定値以上ならば、車両が坂を上っていることを示す。ステップS29において、車両が傾斜地を走行していることを示すよう、傾斜地走行フラグVSLOPEに値1を設定する。
代替的に、車速VPに基づいて、車両が傾斜地を走行しているかどうかを判断してもよい。発明者の知見によれば、所定時間以上にわたって、所定の速度(たとえば、40キロメートル/時)以上に傾斜地を走行することは、ほとんど行われない。したがって、検出された車速が該所定の速度より小さければ、傾斜地を走行している可能性があると判断して、第1の燃料レベルを推定する(すなわち、図10のステップS5に進む)ようにしてもよい。
図12は、リーク判定を実行するための条件が成立するかどうかを判断するプロセスのフローチャートである。このプロセスでは、該条件が成立することに応じて、許可フラグFMCNDEONVが値1に設定される。このプロセスは、所定時間(たとえば、80ミリ秒)毎に実行される。
ステップS31において、許可フラグFMCNDEONVの値を調べる。FMCNDEONV=0ならば、許可フラグFMCNDEONVの値をゼロに維持し(S32)、このプロセスを終了する。
ステップS33において、リーク判定が終了するときに値1にセットされる判定終了フラグFDONEの値を調べる。FDONE=1ならば、リーク判定が既に終了しているので、ステップS32に進む。
FDONE=0ならば、ステップS34において、エンジンが停止しているか、すなわちイグニションスイッチ21がオフされているかどうかを調べる。エンジンが作動中であるときは、許可フラグFMCNDEONVの値をゼロにし(S32)、このプロセスを終了する。
エンジンが停止するとステップS35に進み、第1の燃料レベルFLEVELFが所定値FLVSLPL以上かどうかを判断する。所定値FLVSLPLは、たとえば、燃料タンクが満タンである時の燃料の量の8割の値に設定される。ステップS35の答えがYesならば、ステップS36において傾斜フラグFEOSLOPEの値を調べる。ステップS35およびS36の答えがYesならば、エンジンが停止した時に、燃料タンクに残存する燃料の量が所定値以上であり、かつ燃料タンクが傾斜していることを示す。これは、前述したように、第1の系と第2の系とが分離している状態を示す。このような分離状態下では、第2の系のリークを検出することはできない。したがって、ステップS32に進み、許可フラグFMCNDEONVをゼロにセットしてリーク判定を禁止する。
ステップS35の答えまたはS36の答えがNoならば、ステップS37において、給油中であるときに値1がセットされる給油フラグFRFUELDCを調べる。給油中である時は、リーク判定を正確に実行することができないので、ステップS32に進む。
給油中でなければ、ステップS38において許可フラグFMCNDEONVに値1をセットし、リーク判定を実行するための条件が成立したことを示す。
図13は、該タンク内圧PEONVAVEと、該停滞タンク内圧PEOAVDTMを算出するプロセスのフローチャートを示す。このプロセスは、エンジンが停止した後、所定時間(たとえば、80ミリ秒)毎に実行される。
ステップS52において、許可フラグFMCNDEONVの値がゼロならば、リーク判定を実行するための条件が成立していないことを示す。リーク判定の実行条件が成立していないときは、ダウンカウントタイマTEODLYを所定時間TEODLY0(たとえば、90秒)に設定してスタートする(S53)。タイマTEODLYは、大気開放処理期間を計測するタイマである。
ステップS54において、実行フラグFEONVEXEをゼロに設定する。さらに、バイパス弁36およびベントシャット弁38を開弁状態に維持し、蒸発燃料処理系50を大気に開放する。フラグFVSVCPCTLをゼロに設定して、ベントシャット弁38が開いていることを示す。
ステップS52においてFMCNDEONV=1ならば、リーク判定を実行する条件が成立していることを示す。ステップS55において、実行フラグFEONVEXEの値が1かどうかを判断する。最初にこのステップを実行する時は答えがNoであるので、ステップS56に進み、ステップS53でスタートしたタイマTEODLYの値がゼロかどうかを判断する。最初にこのステップを実行する時は答えがNoであるので、フラグFVSVCPTCLをゼロに設定し(S61)、ベントシャット弁38を開弁状態に維持する。
ステップS56においてTEODLY=0となると、ステップS57に進み、現在のタンク内圧PTANKを、開始圧PEOTANK0として記憶する。このタンク内圧PTANKは、大気開放処理により、ほぼ大気圧を示す。
ステップS58において、修正タンク内圧PEOTANK、タンク内圧PEONVAVE、比較パラメータの今回値PEODTM、比較パラメータの前回値PEODTMZ、停滞タンク内圧の今回値PEOAVDTM、停滞タンク内圧の前回値PEOAVDTMZを、ゼロに設定する。
ステップS59において、実行フラグFEONVEXEを値1に設定し、リーク判定の実行を開始する。ステップS60では、ダウンカウントタイマTEODTMを、所定時間TMEODTMに設定してスタートさせる。さらに、アップカウントタイマTEONVTLをゼロに設定して、ステップS61に進む。タイマTEONVTLは、リーク判定を開始してからの経過時間を計測するタイマである。
ステップS59において実行フラグFEONVEXEが値1に設定された後にこのルーチンに入ると、ステップS55の答えがYesになる。ステップS62に進み、現在のタンク内圧PTANKから開始圧PEOTANK0を減算することにより、修正タンク内圧PEOTANKを算出する。ステップS63において、式(6)により、タンク内圧PEONVAVEを算出する。
PEONVAVEの今回値=CPTAVE×PEOTANK
+(1−CPTAVE)×PEONVAVEの前回値 (6)
ここで、CPTAVEはゼロから1の間の値に設定される平滑化(なまし)係数である。
ステップS64において、比較パラメータの前回値PEODTMZに、今回値PEODTMを設定する。ステップS65において、比較パラメータの今回値PEODTMに、タンク内圧PEONVAVEを設定する。ステップS66では、比較パラメータの今回値と前回値が等しいかどうかを判断する。この答えがNoならば、タンク内圧PEONVAVEが変化していることを示す。ステップS67において、ダウンカウントタイマTEODTMに所定時間TMEODTMを設定してスタートさせる。ステップS71に進み、フラグFVSVCPTCLを値1に設定し、ベントシャット弁38を閉じる。
ステップS66の答えがYesであれば、タンク内圧PEONVAVEが停滞していることを示す。ステップS68において、タイマTEODTMの値がゼロかどうかを判断する。最初にこのステップを実行する時は答えがNoであるので、ステップS71に進む。ステップS68の答えがYesになると、停滞タンク内圧の前回値PEOAVDTMZに今回値PEOAVDTMを設定し(S69)、今回値PEOAVDTMに、タンク内圧PEONVAVEを設定する(S70)。その後、ステップS71に進む。
このように、リーク判定の実行条件が成立したときに、大気開放処理が実行され(S54)、その後ベントシャット弁38が閉じられる(S71)。リーク判定を実行している間は、タンク内圧PEONVAVEおよび停滞タンク内圧PEOAVDTMの演算が実行される。
図14および図15は、第1のリーク判定のプロセスのフローチャートである。このプロセスは、所定時間(例えば、1秒)毎に実行される。
ステップS80において、フラグFVSVCPTCLの値が調べる。前述したように、該フラグは、ベントシャット弁38が閉じている時に値1を持つ。FVSVCPTCL=0ならば、現在のタンク内圧PEONVAVEを、初期圧PEONVAVに設定する(S81)。ステップS82において、第1の傾きパラメータEDDPLSQAの算出に用いられる各種パラメータの初期化を行う。第1の傾きパラメータEDDPLSQAは、図6の(b)を参照して説明した、回帰直線L1の傾きを示す。
ステップS83において、最大圧力DPEOMAXをゼロに設定する。ステップS84において、第1の漏れ判定フラグFDDPLK、保留フラグFDDPJDHD、第1の判定終了フラグFEONVDDPJUDを、すべてゼロに設定する。第1の漏れ判定フラグFDDPLKは、リークがあると判定されたときに値1に設定されるフラグである。ステップS85において、アップカウントタイマTDDPTLの値をゼロに設定する。
ステップS80においてFVSVCPTCL=1ならば、ベントシャット弁38は閉じている。ステップS86において、タイマTDDPTLの値が、第1の判定時間TMDDPTL以上かどうかを判断する。前述したように、第1の判定時間TMDDPTLは、第1のリーク判定に必要な時間である。最初にこのステップを実行する時は答えがNoであるので、ステップS87〜S95を実行し、第1の傾きパラメータEDDPLSQAおよび最大圧力DPEOMAXを算出する。
ステップS87において、時間パラメータCEDDPCALを1だけインクリメントする。ステップS88において、タンク内圧PEONVAVEから初期圧PEONVAV0を減算することにより、圧力変化量DPEONVを算出する。
ステップ89において、式(7)により、時間パラメータCEDDPCALの積算値ESIGMAXを算出する。
ESIGMAXの今回値=ESIGMAXの前回値+CEDDPCAL (7)
ステップS90において、式(8)により、時間パラメータCEDDPCALを2乗した値の積算値ESIGMAX2を算出する。
ESIGMAX2の今回値=ESIGMAX2の前回値
+CEDDPCAL×CEDDPCAL (8)
ステップS91において、式(9)により、時間パラメータCEDDPCALと、圧力変化量DPEONVの積の積算値ESIGMAXYを算出する。
ESIGMAXYの今回値=ESIGMAXYの前回値
+CEDDPCAL×DPEONV (9)
ステップS92において、式(10)により、圧力変化量DPEONVの積算値ESIGMAYを算出する。
ESIGMAYの今回値=ESIGMAYの前回値+DPEONV (10)
ステップS93において、ステップS87、S89〜S92で算出される時間パラメータCEDDPCAL、積算値ESIGMAX、ESIGMAX2、ESIGMAXY、およびESIGMAYを用い、式(11)に従って第1の傾きパラメータEDDPLSQAを算出する。
ステップS94において、初期圧PEONVAV0に、現在のタンク内圧PEONVAVEを設定する。ステップS95において、最大圧力DPEOMAXと、タンク内圧PEONVAVEの大きい方を選択し、最大圧力DPEOMAXを求める。
ステップS86においてタイマTDDPTLの値が第1の判定時間TMDDPTLに達すると、ステップS101(図15)に進み、最大圧力DPEOMAXが、所定圧PDDPMIN以上であるかどうかを判断する。その答えがNoであるならば、タンク内圧PTANKの上昇が不十分であることを示す。この場合、正確な判定はできないので、第1の判定終了フラグFEONVDDPJUDをゼロに設定する(S112)。
ステップS101においてDPEOMAX≧PDDPMINならば、前述した式(5)により判定パラメータEODDPJUDを算出する(S102)。
ステップS103において、大気圧PAに基づいて図16に示すKEOP1JDXテーブルを参照し、補正係数KEOP1JDXを算出する。KEOP1JDXテーブルは、大気圧PAが低下するほど、補正係数KEOP1JDXが減少するように設定されている。図のPA1、PA2およびPA3は、たとえば、77kPa(580mmHg)、84kPa(630mmHg)、および99kPa(740mmHg)に設定され、KX1およびKX2は、たとえば、それぞれ0.75および0.84に設定される。
ステップS104およびS105において、補正係数KEOP1JDXを用い、式(12)および式(13)に従ってOK判定用しきい値DDPJUDOKおよびNG判定用しきい値DDPJUDNGを算出する。
DDPJUDOK=EODDPJDOK×KEOP1JDX (12)
DDPJUDNG=EODDPJDNG×KEOP1JDX (13)
ここで、EODDPJDOKおよびEODDPJDNGは、それぞれ、OK判定用のしきい値およびNG判定用の所定のしきい値であり、前者は、後者より小さい値に設定される。
ステップS106において、判定パラメータEODDPJUDが、OK判定用しきい値DDPJUDOK以下かどうかを判断する。その答えがYesならば、蒸発燃料処理系50は正常であると判定し、第1の漏れ判定フラグFDDPLKをゼロに設定する(S108)。
ステップS106においてEODDPJUD>DDPJUDOKならば、判定パラメータEODDPJUDがNG判定用のしきい値DDPJUDNGより大きいかどうかを判断する(S107)。この答えがYesならば、蒸発燃料処理系50にリークがあると判定し、第1の漏れ判定フラグFDDPLKを値1に設定する(S109)。ステップS107の答えがNoならば、すなわちDDPJUDOK<EODDPJUD≦DDPJUDNGならば、判定を保留し、保留フラグFDDPJDHDを値1に設定する(S110)。
ステップS111において、第1の判定終了フラグFEONVDDPJUDを値1に設定し、第1の判定が終了したことを示す。
第1の判定手法に従えば、タンク内圧PEONVAVEの時間についての2回微分値に相当する第1の傾きパラメータEDDPLSQAが算出される。さらに、第1の傾きパラメータEDDPLSQAを最大圧力DPEOMAXで除算することにより、判定パラメータEODDJUDが算出される。判定パラメータがOK判定用しきい値DDPJUDOK以下ならば、蒸発燃料処理系50は正常と判定され、NG判定用しきい値DDPJUDNGより大きければ、リークがあると判定される。こうして、図8を参照して説明した第1の判定が実現される。
図17は、第2のリーク判定の実行条件が成立するかどうかを判断するプロセスのフローチャートである。このプロセスは、エンジンが停止した後、所定時間(例えば、1秒)毎に実施される。
ステップS121では、ベントシャット弁38が閉じている時に値1がセットされるフラグFVSVCPTCLの値を調べる。FVSVCPTCL=0ならば、ステップS125に進み、許可フラグFEODTMEXにゼロを設定し、第2のリーク判定の実施を禁止する。
ステップS121においてFVSVCPTCL=1ならば、ステップS122に進み、
アップカウントタイマTEONVTLの値が、リーク判定に許容される所定時間TBATTOKより小さいかどうかを判断する。該許容時間は、たとえば、バッテリの充電状態に応じて設定されることができる。アップカウントタイマTEONVTLは、実行フラグFEONVEXEが値1に設定された時に起動され(図13のS60)、リーク判定の実行が開始されてからの経過時間を計測する。
TEONVTL≧TBATTOKならば、第2のリーク判定の実行を開始してからの経過時間が、許容される該所定時間を超えていることを示す。ステップS124に進み、中止フラグFEONVTMUPを値1に設定して第2のリーク判定を中止する。第2のリーク判定が中止されたので、ステップS125において、許可フラグFEODTMEXにゼロを設定する。
ステップS122において、TEONVTL<TBATTOKならば、ステップS123において、最大実行時間TMEOMAX(所定値であり、例えば、2400秒)と、経過時間TEONVTLとを比較する。TEONVTL≧TMEOMAXならば、第2のリーク判定を実行することのできる最大実行時間が経過したことを示す。ステップS124に進み、中止フラグFEONVTMUPを値1に設定して第2の判定を中止する。第2のリーク判定が中止されたので、ステップS125において、許可フラグFEODTMEXにゼロを設定する。
ステップS123においてTEONVTL<TMEOMAXならば、ステップS126に進み、停滞タンク内圧の今回値PEOAVDTMが第1の所定圧P0以上で、かつ第2の所定圧P1以下であるかどうかを判断する。第1の所定圧P0は、例えば大気圧に等しい値に設定され、第2の所定圧P1は、第1の所定圧P0よりわずかに高い値、たとえば第1の所定圧P0より0.133kPa(1mmHg)高い値に設定される。
ステップS126の答えがYesであるならば、停滞タンク内圧の今回値PEOAVDTMが大気圧近傍にあることを示す。ステップS130に進み、停滞タンク内圧の前回値PEOAVDTMZが第1の所定圧P0より低いかどうかを判断する。PEOAVDTMZ<P0であるならば、停滞タンク内圧が増加していることを示す。ステップS132に進み、許可フラグFEODTMEXにゼロを設定する。
一方、ステップS130においてPEOAVTMZ≧P0ならば、停滞タンク内圧が停滞している、または減少していることを示す。ステップS131において、許可フラグFEODMEXを値1に設定する。
ステップS126の答えがNoであるならば、すなわちPEOAVDTM<P0またはPEOAVDTM>P1であるならば、停滞タンク内圧の今回値PEOAVDTMが前回値PEOAVDTMZと等しいかどうかを判断する(S127)。両者が等しければ、停滞タンク内圧が変化していないことを示し、該プロセスを終了する。
ステップS127の答えがNoならば、停滞タンク内圧の今回値PEOAVDTMが前回値PEOAVDTMZより大きいかどうかを判断する(S128)。この答えがYesであるならば、停滞タンク内圧が増加したことを示し、許可フラグFEODTMEXにゼロを設定する(S132)。
ステップS128の答えがNoであるならば、停滞タンク内圧が減少したことを示し、ステップS129に進んで許可フラグFEODTMEXを値1に設定する。
こうして、停滞タンク内圧PEOAVDTMが増加している時は、許可フラグFEODTMEXはゼロに設定され、減少している時は、値1に設定される。また、停滞タンク内圧が大気圧近傍(P0からP1の間)に停滞しているときは、許可フラグFEODTMEXは常に値1に設定される。
このように、第2のリーク判定は、停滞タンク内圧が、大気圧近傍に停滞しているときと、減少しているときとに実行される。
図18および図19は、第2のリーク判定を実行するプロセスのフローチャートである。このプロセスは、所定時間(例えば1秒)毎に実行される。
ステップS141では、ベントシャット弁38が閉じている時に値1が設定されるフラグFVSVCPTCLを調べる。FVSVCPTCL=0ならば、ステップS145(図19)に進み、最小圧力の今回値DPEOMINおよび前回値DPEOMINZを、現在の停滞タンク内圧PEOAVDTMに設定する。ステップS146において、タンク内圧の停滞時間を計測するアップカウントタイマTDTMSTYの値をゼロに設定する。
ステップS147において、図9の(c)および(d)に示す回帰直線L11およびL12の傾きに相当する第2の傾きパラメータEODTMJUDを算出するための各種パラメータを初期化する。
ステップS148では、第2の漏れ判定フラグFDTMLK、判定不可フラグFDTMDISBL、第2の判定終了フラグFEONVDTMJUD、および圧力変化フラグFCHGのすべてをゼロに設定する。第2の判定フラグFDTMLKは、リークがあると判定されたときに値1に設定されるフラグである。
ステップS141の答えがYesならば、ベントシャット弁38が閉じていることを示す。ステップS142において、中止フラグFEONVTMUPの値が1かどうかを調べる。この答えがYesならば、判定不可フラグFDTMDISBLを値1に設定し(S143)、該プロセスを終了する。
ステップS142においてFEONVTMUP=0ならば、ステップS144に進み、許可フラグFEODTMEXの値が1かどうかを調べる。この答えがNoであるならば、ステップS145に進み、第2のリーク判定の実施を禁止する。
ステップS144においてFEODTMEX=1ならば、ステップS149に進み、最小圧力の前回値DPEOMINZに、今回値DPEOMINを設定する。ステップS150において、最小圧力DPEOMINと、停滞タンク内圧PEOAVDTMのうちの小さい方を選択し、最小圧力DPEOMINに設定する。
ステップS151において、最小圧力の今回値DPEOMINが前回値DPEOMINZと等しいかどうかを判断する。この答えがYesならば、タイマTDTMSTYの値が、所定値TDTMLK以上かどうかを判断する(S152)。最初にこのステップを実行する時は答えがNoであるので、ステップS153に進み、停滞時間パラメータCTMSTYを1だけインクリメントする。停滞時間パラメータCTMSTYは、停滞時間TSTY(図9)に対応するパラメータである。ステップS154において、圧力変化フラグFCHGが1かどうかを判断する。最初にこのステップを実行する時は答えがNoとなるので、ステップS164(図19)に進む。
最小圧力DPEOMINが変化すると、すなわち停滞タンク内圧PEOAVDTMが低下すると、ステップS151からステップS159に進み、圧力変化フラグFCHGを値1に設定する。ステップS160において、圧力パラメータCDTMPCHGを1だけインクリメントする。圧力パラメータCDTMPCHGは、図9の(c)または(d)の横軸に示すタンク内圧PTANKに対応するパラメータであるが、タンク内圧PTANKが低下するほど、圧力パラメータCDTMPCHGは増加する。したがって、第2の傾きパラメータEODTMJUDは、図9の(c)の直線L11に対応する値は負の値となり、図9の(d)の直線L12に対応する値は正の値となる。
ステップS161において、式(14)により、圧力パラメータCDTMPCHGの積算値DTMSIGXを算出する。
DTMSIGXの今回値=DTMSIGXの前回値+CDTMPCHG
(14)
ステップS162において、式(15)により、圧力パラメータCDTMPCHGを2乗した値の積算値DTMSIGX2を算出する。
DTMSIGX2の今回値=DTMSIGX2の前回値
+CDTMPCHG×CDTMPCHG (15)
ステップS163において、タイマTDTMSTYの値をゼロに戻し、ステップS164に進む。
圧力変化フラグFCHGが値1に設定された後に、ステップS151の答えがYesとなり、ステップS153を経てステップS154に進む。ステップS154の答えがYesとなるので、ステップS155に進み、式(16)により、停滞時間パラメータCTMSTYの積算値DTMSIGYを算出する
DTMSIGYの今回値=DTMSIGYの前回値+CTMSTY (16)
ステップS156において、式(17)により、圧力パラメータCDTMPCHGと停滞時間パラメータCTMSTYとの積の積算値DTMSIGXYを算出する。
DTMSIGXYの今回値=DTMSIGXYの前回値+
CDTMPCHG×CTMSTY (17)
ステップS157において、圧力変化フラグFCHGをゼロに戻し、停滞時間パラメータCTMSTYをゼロに戻す。その後、ステップS164に進む。
ステップS164において、圧力パラメータCDTMPCHGが1より大きいかどうかを判断する。その答えがNoであるときは、回帰直線の傾きを求めることはできないので、該プロセスを終了する。CDTMPCHG>1ならば、圧力パラメータCDTMPCHG、積算値DTMSIGX、DTMSIGX2、DTMSIGYおよびDTMSIGXYを用い、式(18)に従って第2の傾きパラメータEODTMJUDを算出する(S165)。この実施形態では、最小圧力DPEOMINが変化する毎に圧力パラメータCDTMPCHGが1だけインクリメントされるので、圧力パラメータCDTMPCHGはサンプリングデータ数を示すパラメータでもあることに注意されたい。
ステップS166において、第2の傾きパラメータEODTMJUDが、判定しきい値EODTMJDOKより大きいかどうかを判断する。その答えがYesであるならば、リークがあると判定し、第2の漏れ判定フラグFDTMLKを値1に設定する。第2の判定終了フラグFEONVDTMJUDを値1に設定し(S169)、第2のリーク判定が終了したことを示す。
第2の傾きパラメータEODTMJUDが判定しきい値EODTMJDOK以下であるならば、圧力パラメータCDTMPCHGが所定値DTMENBIT以上であるかどうかを判断する(S167)。CDTMPCHG<DTMENBITであるならば、該プロセスを終了する。圧力パラメータCDTMPCHGが所定値DTMENBITに達すると、ステップS168に進み、第2の漏れ判定フラグFDTMLKをゼロに設定し、第2のリーク判定でリークが検出されなかったことを示す。さらに、第2の判定終了フラグFEONVDTMJUDを値1に設定する(S168)。
また、ステップS152において、停滞時間を計測するタイマTDTMSTYの値が所定時間TDTMLK以上になったときは、リークがあると判定し、第2の漏れ判定フラグFDTMLKを1に設定し、第2の判定終了フラグFEONVDTMJUDを値1に設定する(S158)。
このように、停滞タンク内圧PEOAVDTMが停滞または低下している時に、第2のリーク判定が実行される。停滞時間TDTMSTYが所定時間TDTMLK以上であるならば、または図9に示す回帰直線の傾きに対応する第2の傾きパラメータEODTMJUDが判定しきい値EODTMJDOKより大きければ、蒸発燃料処理系に、小さい孔によるリークがあると判定される。
図20は、最終判定を行うプロセスのフローチャートである。このプロセスは、所定時間(例えば、1秒)毎に実行される。
ステップS171において、判定終了フラグFDONEが1かどうかを判断する。この答えがYesならば、本プロセスを終了する。FDONE=0ならば、許可フラグFMCNDEONVが1かどうかを判断する(S172)。この答えがYesならば、判定不可フラグFDTMDISBLが1かどうかを判断する(S173)。FMCNDEONV=0またはFDTMDISBL=1ならば、リーク判定を中断するため、中断フラグFEONVABOTおよび判定終了フラグFDONEを1に設定し(S174)、本プロセスを終了する。
ステップS173においてFDTMDISBL=0ならば、第1の判定終了フラグFEONVDDPJUDが1かどうかを判断する。FEONVDDPJUD=1ならば、第1のリーク判定は終了している。ステップS176において、保留フラグFDDPJDHDの値が1かどうかを判断する。FDDPJDHD=1ならば、中断フラグFEONVABOTをゼロに設定し、終了フラグFDONEを1に設定する(S184)。
ステップS176において保留フラグFDDPJDHDがゼロならば、ステップS177に進み、第1の漏れ判定フラグFDDPLKが1かどうかを判断する。FDDPLK=1ならば、故障フラグFFSDを1に設定し(S178)、故障が生じたことを示す。FDDPLK=0ならば、正常フラグFOKを1に設定する(S179)。その後、ステップS184に進む。
ステップS175において第1のリーク判定が終了していなければ、ステップS180に進み、第2の判定終了フラグFEONVDTMJUDが1かどうかを判断する。この答えがNoならば、本プロセスを終了する。第2の判定が終了しているときはS181に進み、第2の漏れ判定フラグFDTMLKが1かどうかを判断する。FDTMLK=1ならば、故障フラグFFSDを1に設定し(S182)、故障が生じたことを示す。FDTMLK=0ならば、正常フラグFFSDを1に設定する(S183)。その後、ステップS184に進む。
こうして、第1のリーク判定および第2のリーク判定のどちらかが終了することに応じて、発燃料処理系のリーク判定を終了する。第2のリーク判定は、第1のリーク判定よりも時間がかかるので、第1のリーク判定の結果を優先的に用いるようにしている。代替的に、両方の判定結果が得られることに応じて、蒸発燃料処理系のリーク判定を終了してもよい。また、第1のリーク判定においてリーク有りと判定された場合にのみ、第2のリーク判定の結果を得るようにしてもよい。
代替的に、平滑化されたタンク内圧PEONVAVEおよび停滞タンク内圧PEOAVDTMの変わりに、検出されたタンク内圧PTANKを用いてもよい。
図18および図19のプロセスでは、圧力パラメータCDTMPCHGおよび停滞時間パラメータCTMSTYについて最小2乗法を適用して、第2の傾きEODTMJUDを算出する。代替的に、タンク内圧PTANKおよびアップカウントタイマTDTMSTYの値に最小2乗法を適用して、第2の傾きEODTMJUDを算出してもよい。
上記の実施形態では、エンジンが停車した時に燃料タンクが傾斜しているならば、第1の系と第2の系とが分離される状態と判断した。他の状態を、分離状態として判定することができる。たとえば、燃料が満タンである時も、リターン通路とフィラーチューブの両方が燃料に液没するので、分離状態と判断することができる。
また、リターン通路に代えて、またはリターン通路に加えて、フィラーチューブに空間的につながる構成要素が設けられることがある。第2の系には、このような構成要素も含まれる。本願発明は、圧力センサが存在する空間の系と、フィラーチューブ内の空間を含む系とが、燃料により分離される様々な状態に適用可能である。