(57)【要約】【課題】  安定した条件下で精度のよいリーク診断を行うことのできる蒸発燃料処理システムの診断装置を提供する。【解決手段】  ＥＣＵ１８は、各バルブ１０，１１，１４，１７の制御によって、蒸発燃料処理系を所定負圧で負圧封印する。ＥＣＵ１８は、負圧封印された蒸発燃料処理系の内圧値Ｐteが目標内圧値Ｐdに到達するまでの時間ｔd2を計時し、この計時時間ｔd2に基づいて圧力変化計測時間ｔe2を設定するとともに、蒸発燃料処理系の内圧値Ｐteが目標内圧値Ｐd到達後に圧力変化計測時間ｔe2かけて変化する圧力変化量Ｐ1を計測する。そして、診断部２５は、少なくとも蒸発燃料処理系の空間容積に基づいて判定値Ｐth0を設定し、圧力変化量Ｐ1が判定値Ｐth0よりも大きいとき蒸発燃料処理系が正常であると判定し、圧力変化量Ｐ1が判定値Ｐth0よりも小さいとき蒸発燃料処理系が異常であると判定する。【選択図】  図９
2005282378.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の燃料タンクを含む蒸発燃料処理系の内部圧力を設定負圧で負圧封印する負圧封印制御手段と、
負圧封印された上記蒸発燃料処理系の内圧が目標内圧値に到達するまでの時間を計時し、この計時時間に基づいて圧力変化計測時間を設定する計測時間設定手段と、
負圧封印された上記蒸発燃料処理系の内圧が、上記目標内圧値到達後に上記圧力変化計測時間かけて変化する圧力変化量を計測する圧力変化量計測手段と、
少なくとも上記蒸発燃料処理系の空間容積に基づいて判定値を設定し、上記圧力変化量が上記判定値よりも大きいとき上記蒸発燃料処理系の正常を判定し、上記圧力変化量が上記判定値よりも小さいとき上記蒸発燃料処置系の異常を判定する診断手段とを備えたことを特徴とする蒸発燃料処理システムの診断装置。
【請求項２】
上記計測時間設定手段は、大気圧の変化に応じて上記目標内圧値を補正することを特徴とする請求項１記載の蒸発燃料処理システムの診断装置。
【請求項３】
上記診断手段は、大気圧の変化に応じて上記判定値を補正することを特徴とする請求項１または請求項２記載の蒸発燃料処理システムの診断装置。
【請求項４】
上記負圧封印制御手段は、上記蒸発燃料処理系を大気解放して内圧を大気圧近傍で安定化させる安定化処理と、安定化処理された上記蒸発燃料処理系に負圧を導入して内圧を設定負圧まで降下させる負圧導入処理とを行って、上記蒸発燃料処理系を負圧封印するものであって、
上記診断手段は、上記負圧封印制御手段による上記安定化処理の所要時間、或いは上記負圧導入処理の所要時間の少なくとも何れか一方に応じて、上記判定値を補正することを特徴とする請求項１乃至請求項３の何れかに記載の蒸発燃料処理システムの診断装置。
【請求項５】
上記診断手段は、上記負圧封印制御手段による上記安定化処理の所要時間が所定時間を超えたとき、或いは、上記負圧封印制御手段による上記負圧導入処理の所要時間が所定時間を超えたとき、上記蒸発燃料処理系の診断を中断することを特徴とする請求項４記載の蒸発燃料処理システムの診断装置。
【請求項６】
上記診断手段は、上記負圧封印後の内圧が所定時間経過しても所定以上上昇しないとき、上記圧力変化量と上記判定値とに基づく判定を行うことなく、上記蒸発燃料処理系の正常を判定することを特徴とする請求項１乃至請求項５の何れかに記載の蒸発燃料処理システムの診断装置。
【請求項７】
上記診断手段は、少なくとも上記蒸発燃料処理系の空間容積に基づいて上記判定値よりも小値なキャンセル判定値を設定し、上記圧力変化量が上記キャンセル判定値よりも大きいとき、上記判定値に基づく異常の判定をキャンセルすることを特徴とする請求項１乃至請求項６に何れかに記載の蒸発燃料処理システムの診断装置。
【請求項８】
上記診断手段は、上記圧力変化量計測終了時の内圧が所定圧力以上であるとき、上記判定値に基づく異常の判定をキャンセルすることを特徴とする請求項１乃至請求項７の何れかに記載の蒸発燃料処理システムの診断装置。
【請求項９】
上記蒸発燃料処理系の内圧が上記目標内圧値に到達してから上記圧力変化量計測手段による圧力変化量の計測を開始するまでのディレイ制御を行うディレイ制御手段備えたことを特徴とする請求項１乃至請求項８の何れかに記載の蒸発燃料処理システムの診断装置。
【請求項１０】
上記診断手段は、上記ディレイ制御時の圧力変化率と上記圧力変化量計測時の圧力変化率との比が所定値以下であるとき、上記判定値に基づく異常の判定をキャンセルすることを特徴とする請求項９記載の蒸発燃料処理システムの診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、蒸発燃料処理システムの診断装置に係り、特に、燃料タンクを含む蒸発燃料処理系のリーク診断に関する。
【背景技術】
【０００２】
燃料タンク内で蒸発した燃料が大気へ放出されるのを防止するため、蒸発燃料処理システムを備えた内燃機関が知られている。このシステムでは、燃料タンク内に生じた蒸発燃料（エバポレーションガス）がキャニスタの内部に充填された吸着剤に一時的に吸着されるとともに、所定の運転条件下で、吸着された蒸発燃料がパージ通路を介して内燃機関の吸気系へ放出される。ところが、何らかの理由で、このシステムの一部が破損または破裂した場合、蒸発燃料が大気中に放出されてしまう。かかる事態を防止すべく、蒸発燃料処理系のリークの有無を判定するリーク診断が行われる（例えば、特許文献１参照）。
【０００３】
このリーク診断では、先ず、パージ制御弁（パージ制御ソレノイドバルブ）が全閉され、その後キャニスタ閉塞弁（ドレーンバルブ）が全閉されることにより、大気圧で封印されたれた密閉パージ経路が形成され、正圧下での燃料蒸発ガスの発生による圧力変化量Ｐ１が計測される。その後、パージ制御弁が開弁されることで燃料タンク内に吸気管負圧が導入され、パージ制御弁が再度閉弁されることにより、所定の負圧で封印された密閉パージ経路が形成され、負圧下での燃料蒸発ガスの発生による圧力変化量Ｐ２が計測される。そして、計測された圧力変化量Ｐ１とＰ２との関係に基づいて、蒸発燃料処理系からのリークの有無が判定される。
【特許文献１】特開平２００１−４１１１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の特許文献１に開示された技術では、それぞれ異なる圧力状態で蒸発燃料処理系を封印して圧力変化量Ｐ１，Ｐ２を計測しているため、リーク診断を精度よく行うことが困難な場合がある。
【０００５】
すなわち、蒸発燃料処理系を異なる圧力状態で封印すると、たとえ燃料残量や温度等の条件が同一であったとしてもエバポレーションガスの発生量が大きく変化する。従って、このような不安定な条件下で圧力変化量Ｐ１，Ｐ２を個別に計測した場合には、精度のよいリーク判断を行うことが困難となる。
【０００６】
本発明は上記事情に鑑みてなされたもので、安定した条件下で精度のよいリーク診断を行うことのできる蒸発燃料処理システムの診断装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、内燃機関の燃料タンクを含む蒸発燃料処理系の内部圧力を設定負圧で負圧封印する負圧封印制御手段と、負圧封印された上記蒸発燃料処理系の内圧が目標内圧値に到達するまでの時間を計時し、この計時時間に基づいて圧力変化計測時間を設定する計測時間設定手段と、負圧封印された上記蒸発燃料処理系の内圧が、上記目標内圧値到達後に上記圧力変化計測時間かけて変化する圧力変化量を計測する圧力変化量計測手段と、少なくとも上記蒸発燃料処理系の空間容積に基づいて判定値を設定し、上記圧力変化量が上記判定値よりも大きいとき上記蒸発燃料処理系の正常を判定し、上記圧力変化量が上記判定値よりも小さいとき上記蒸発燃料処置系の異常を判定する診断手段とを備えたことを特徴とする。
【発明の効果】
【０００８】
本発明の蒸発燃料処理システムの診断装置によれば、安定した条件下で精度のよいリーク診断を行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の形態を説明する。図面は本発明の第１の形態に係わり、図１は蒸発燃料処理システムの概略構成図、図２はＥＣＵの機能的なブロック図、図３はリーク診断のメインルーチンのフローチャート、図４は図３のモードＡ実行サブルーチンのフローチャート、図５は図３のモードＢ実行サブルーチンのフローチャート、図６は図３のモードＣ実行サブルーチンのフローチャート、図７は図３のモードＤ実行サブルーチンのフローチャート、図８はモードＥ実行サブルーチンのフローチャート、図９はリーク診断におけるタイミングチャートである。
【００１０】
図１において、エアクリーナ１により大気中の塵埃等が除去された空気は、図示しない電動スロットルバルブの開度に応じて、その流量が制御される。このスロットルバルブは、エアクリーナ１とエアチャンバ２との間の吸気通路に設けられたスロットルボディ３に設けられており、その開度（スロットル開度）は電動モータによって設定される。スロットル開度は、マイクロコンピュータを中心として構成される制御装置１８（以下「ＥＣＵ」という）からの出力信号によって設定される。スロットル開度によって流量が制御された吸入空気は、エアチャンバ２、インテークマニホルド４を流れ、図示しないインジェクタから噴射された燃料（ガソリン）と混合される。このインジェクタは、インテークマニホルド４内に先端が突出するように配置され、エンジンの気筒毎に設けられている。各インジェクタには、燃料タンク５と連通した燃料配管（図示せず）を介して、調圧された燃料が供給される。インテークマニホルド４の内部において形成された混合気は、吸気バルブの開弁によってエンジンの燃焼室に流入する。そして、点火プラグで混合気を着火し、混合気を燃焼させることで、エンジンの駆動力が発生する。燃焼後のガスは、排気バルブの開弁によって燃焼室から排気通路へと排出される。
【００１１】
燃料タンク５の内部において発生した蒸発燃料は、蒸発燃料処理システムを介して、吸気系のエアチャンバ２に放出される。具体的には、燃料タンク５は、その上部に設けられたエバポ通路６を介して、キャニスタ７と連通している。燃料タンク５内の蒸発燃料は、キャニスタ７の内部に充填された活性炭等の吸着剤に吸着される。キャニスタ７内の燃料成分（特に炭化水素（ＨＣ）等）を含まない気体は、新気導入通路８を介し、ドレーンフィルタ９によって浄化された後に、大気中に放出される。この新気導入通路８には、ＥＣＵ１８によって開閉制御されるドレーンバルブ１０（以下「ＣＣＶ」という）が介装されている。バルブの通常制御時において、ＣＣＶ１０は、電磁ソレノイドがオフしており、開いた状態（開状態）に設定される。これに対して、リーク診断時には、ＥＣＵ１８の制御信号に応じて電磁ソレノイドがオンして、ＣＣＶ１０は閉まった状態（閉状態）に設定される。
【００１２】
また、エバポ通路６には、燃料タンク５の内部圧力を調整すべく、機械的な調圧機構を有する圧力制御ソレノイドバルブ１１（以下「ＰＣＶ」という）が介装されている。このＰＣＶ１１は、内蔵された電磁ソレノイドがオフする通常時には、燃料タンク５の内部圧力と大気圧との圧力差、または、燃料タンク５の内部圧力とキャニスタ７の内部圧力との圧力差に応じて、機械的に開閉する。具体的には、燃料タンク５の内部圧力が大気圧よりも上昇した場合には、ＰＣＶ１１が開弁し、燃料タンク５内の蒸発燃料がキャニスタ７に向かって流れる（図中、エバポ通路６のｂ→ａ）。これにより、燃料タンク５内の圧力状態が大気圧に調整され、燃料タンク５の内部圧力の上昇が抑制される。また、燃料タンク５野内部圧力がキャニスタ７の内部圧力よりも低下した場合、すなわち、燃料タンク５内の圧力が負圧になった場合にも、ＰＣＶ１１が開弁し、キャニスタ７内の気体が燃料タンク５に向かって流れる（図中、エバポ通路６のａ→ｂ）。これにより、燃料タンク５内の圧力状態が大気圧に調整され、燃料タンク５内の圧力の低下が抑制される。このようなＰＣＶ１１の機械的な調圧機構により、燃料タンク５の変形や破損を有効に防止できる。これに対して、リーク診断時において、ＰＣＶ１１は、ＥＣＵ１８の制御信号に応じて電磁ソレノイドがオンして、強制的に開弁する。この開弁状態では、燃料タンク５の内部圧力とキャニスタ７の内部圧力との圧力差に応じて、燃料タンク５からキャニスタ７、または、キャニスタ７から燃料タンク５の一方へ気体が流れる（図中、エバポ通路６のａ→ｂ，ｂ→ａ）。
【００１３】
一方、キャニスタ７と吸気系のエアチャンバ２との間を流通するパージ通路１２には、チャンバ１３が形成されているとともに、その下流にはパージ制御ソレノイドバルブ１４（以下「パージバルブ」または「ＣＰＣ」という）が介装されている。パージバルブ１４は、ＥＣＵ１８から出力された制御信号のデューティ比に応じて開度が設定されるデューティソレノイドバルブであり、リーク診断時には、診断状況に応じてその開度が調整される。一方、通常制御時には、運転状態に応じてパージバルブ１４の開度が制御され、これによりパージ量が調整される。パージバルブ１４の上流側に設けられたチャンバ１３は、パージバルブ１４の開閉によって発生する気流音や脈動音を消音するために設けられている。
【００１４】
燃料タンク５の上部には、燃料タンク５の内部圧力（内圧値）を検出する圧力センサ１５が取付けられている。この圧力センサ１５は、大気圧と燃料タンク５の内部圧力との圧力差を内圧として検出するセンサであり、これを内圧値ＰteとしてＥＣＵ１８に出力する。また、圧力センサ１５へ大気を導入する大気導入通路１６には、ＥＣＵ１８によって開閉制御されるタンク内圧切替ソレノイドバルブ１７（以下「タンク内圧バルブ」という）が介装されている。このバルブ１７を設ける理由は、走行時における高度変化に伴い大気圧が変動すると、燃料タンク５内の絶対的な圧力が一定であったとしても、内圧値Ｐteが変動してしまうので、これに対処するためである。通常時には、内蔵された電磁ソレノイドがオフし、タンク内圧バルブ１７が開状態に設定されており、これにより、大気導入通路１６が大気に開口される。これに対して、リーク診断時には、ＥＣＵ１８の制御信号に応じて電磁ソレノイドがオンし、タンク内圧バルブ１７が閉状態に設定される。これにより、圧力センサ１５とタンク内圧バルブ１７との間の大気導入通路１６の圧力状態が大気圧に調整される。
【００１５】
ＥＣＵ１８は、ＲＯＭに格納された制御プログラムに従い、インジェクタの燃料噴射量、その噴射タイミング、点火プラグの点火タイミング、およびスロットル開度等に関する演算を行う。ＥＣＵ１８は、この演算によって算出された制御量（制御信号）を各種アクチュエータに対して出力する。また、ＥＣＵ１８は、上述した蒸発燃料処理システムにおける燃料タンク５を含む蒸発燃料処理系のリーク診断を行う。ＥＣＵ１８がリーク診断を行う際に必要な情報として、圧力センサ１５および各種センサ１９〜２３からの検出信号が挙げられる。燃料レベルセンサ１９は、燃料タンク５内に取付けられており、蓄えられた燃料の残量レベルＬを検出するセンサである。燃料温度センサ２０は燃料温度Ｔを検出するセンサであり、車速センサ２１は車速ｖを検出するセンサである。エンジン回転数センサ２２はエンジン回転数Ｎｅを検出するセンサである。また、大気圧センサ２３は大気圧を検出し、これを大気圧値ＰatとしてＥＣＵ１８に出力する。
【００１６】
図２に示すように、リーク診断を実行するための各部を機能的に捉えると、ＥＣＵ１８は、バルブ制御部２４と、診断部２５とを有する。バルブ制御部２４は、診断部２５におけるリーク診断の状況に応じて、各バルブ１０，１１，１７の開閉状態を指示する制御信号を出力する。これらの信号により、電磁ソレノイドがオン／オフして、対応するバルブ１０，１１，１７の開閉状態が設定される。また、バルブ制御部２４は、パージバルブ１４に対して制御信号を出力することにより、このパージバルブを制御信号のデューティ比に応じた開度に制御する。そして、バルブ制御部２４は、これら各バルブ制御によって、診断時には、蒸発燃料処理系を所定負圧で負圧封印する。すなわち、ＥＣＵ１８は、バルブ制御部２４によって負圧封印制御手段としての機能を実現する。
【００１７】
また、診断部２５は、負圧封印された蒸発燃料処理系の内圧値Ｐteが目標内圧値Ｐdに到達するまでの時間ｔd2を計時し、この計時時間ｔd2に基づいて圧力変化計測時間ｔe2を設定するとともに、蒸発燃料処理系の内圧値Ｐteが目標内圧値Ｐd到達後に圧力変化計測時間ｔe2かけて変化する圧力変化量Ｐ1を計測する。そして、診断部２５は、少なくとも蒸発燃料処理系の空間容積に基づいて判定値Ｐth0を設定し、圧力変化量Ｐ1が判定値Ｐth0よりも大きいとき蒸発燃料処理系が正常であると判定し、一方、圧力変化量Ｐ1が判定値Ｐth0よりも小さいとき蒸発燃料処理系が異常であると判定する。その際、診断部２５は、蒸発燃料処理系の内圧値Ｐteが目標内圧値Ｐdに到達してから圧力変化量Ｐ1の計測を開始するまでの間に所定のディレイ制御を行う。すなわち、ＥＣＵ１８は、診断部２５によって、計測時間設定手段、圧力変化量計測手段、診断手段、及びディレイ制御手段としての各機能を実現する。
【００１８】
次に、本形態に係るリーク診断について、図５に示すリーク診断のメインルーチンのフローチャートに従って詳細に説明する。このルーチンは、エンジンが始動してから停止するまでの間（すなわち、１運転サイクル）において、所定間隔（例えば１０ｍｓ）毎に呼び出され、ＥＣＵ１８によって実行される。なお、本形態におけるリーク診断の対象は、燃料タンク５を含む蒸発燃料処理系（エバポ通路６、キャニスタ７、パージバルブ１４とキャニスタ７との間を連通するパージ通路１２等）である。
【００１９】
このルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ１０１において、診断実行フラグＦdiagが「０」であるか否かを調べる。診断実行フラグＦdiagは、初期的には「０」に設定されており、リーク診断が適切に完了した場合、すなわち、１運転サイクルにおいて「正常」または「異常」の診断結果が得られた場合に「１」にセットされる。そのため、あるタイミングで診断実行フラグＦdiagが「０」から「１」に一旦変更されると、それ以降は、運転サイクルが継続する限り、ＥＣＵ１８は、ステップＳ１０１の判定に従い、ステップＳ１０２に進む。この場合、ＥＣＵ１８は、バルブの通常制御を実行した上で、本ルーチンを抜ける。
【００２０】
ここで、ＥＣＵ１８は、ステップＳ１０２において、ＣＣＶ１０に対する制御値ＸＣＣＶを「０」にセットし、電磁ソレノイドをオフすることで、ＣＣＶ１０を開弁する。また、ＥＣＵ１８は、ＰＣＶ１１に対する制御値ＸＰＣＶを「０」にセットし、電磁ソレノイドをオフすることで、ＰＣＶ１１をメカニカルな機構で開閉させる。また、ＣＰＶ１４に対する制御値ｄｐｒｇを運転状態に応じた所定デューティ比にセットし、電磁ソレノイドをデューティ制御することで、ＣＰＶ１４を適宜所定の開度で開閉させる。さらに、タンク内圧バルブ１７に対する制御値を「０」にセットし、電磁ソレノイドをオフすることで、タンク内圧バルブ１７を閉弁する。
【００２１】
一方、ステップＳ１０１において診断実行フラグＦdiagが「０」であると判定した場合、すなわち、リーク診断が完了していない場合には、ＥＣＵ１８は、ステップＳ１０３に進み、現在、診断実行条件が成立しているか否かを調べる。
【００２２】
この診断実行条件は、リーク診断を行うのに適した運転状態を規定した条件であり、例えば、以下に示す（１）〜（４）の条件で構成される。
【００２３】
（１）エンジン始動後の時間が所定時間以上経過していること（例えば、３２５ｓｅｃ）
エンジンを始動した直後では、エンジン回転数Ｎｅが安定せずに内圧値Ｐteが不安定になり、リーク診断における誤判定の可能性が生じる。そこで、エンジン始動からの経過時間が短い場合は、エンジン回転数Ｎｅが安定していないと判断して、リーク診断の実行を許可しない。
【００２４】
（２）燃料温度Ｔが所定温度の範囲であること（例えば、−１０≦Ｔ≦３５℃）
燃料温度Ｔが高いと蒸発燃料の発生量が多くなるため、燃料タンク５を含む蒸発燃料処理系のリークの有無を区別しにくくなる。そこで、燃料温度センサ２０を用いて燃料温度Ｔを検出し、燃料温度Ｔが適切に設定された範囲とならない場合は、リーク診断の実行を許可しない。
【００２５】
（３）燃料タンク内の燃料揺れが小さいこと
燃料タンク５内の燃料が大きく揺れている状況では、燃料タンク５内の圧力が大きく変動するため、リーク診断における誤判定の可能性が生じる。そこで、燃料レベルセンサ１９を用いて燃料タンク５内の燃料揺れを特定する。燃料揺れは、燃料レベルセンサ１９により検出された残量レベルＬの単位時間当たりの変化量ΔＬから推定することができる。すなわち、この変化量ΔＬが適切に設定された判定値よりも大きい場合は、燃料揺れが大きいものと判断して、リーク診断の実行を許可しない。
【００２６】
（４）エンジン回転数Ｎｅ及び車速ｖが所定値よりも大きいこと（例えば、Ｎｅ≧１５００ｒｐｍ、ｖ≧７０ｋｍ／ｈ）
低速走行時では、走行状態が不安定なため、リーク診断における誤判断の可能性が生じる。そこで、走行状態が比較的安定した高速走行時にリーク診断を行う。
【００２７】
そして、ステップＳ１０３において、上述の（１）〜（４）のうち少なくとも何れかの条件が成立しない場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常時制御を行った後、ルーチンを抜ける。
【００２８】
一方、ステップＳ１０３において、上述の（１）〜（４）の全ての条件が成立している場合には、ＥＣＵ１８は、ステップＳ１０４に進み、診断実行条件が成立していることを示す実行条件成立フラグＦexを「１」にセットした後、ステップＳ１０５に進む。その際、ＥＣＵ１８は、タンク内圧バルブ１７に対する制御値を「１」にセットし、電磁ソレノイドをオンすることで、タンク内圧バルブ１７を開弁する。
【００２９】
ステップＳ１０４からステップＳ１０５に進むと、ＥＣＵ１８は、以下のステップＳ１１４までの間にモードＡからモードＥまでの処理を順次実行することで、リーク診断を行う。
【００３０】
すなわち、ステップＳ１０４からステップＳ１０５に進むと、ＥＣＵ１８は、先ず、図４に示すモードＡ実行サブルーチンを呼び出し、当該サブルーチンに従って、モードＡの処理を実行する（図９中、ｍｏｄｅＡ参照）。このサブルーチンは、蒸発燃料処理系の内圧値Ｐteを大気圧近傍まで降下させることにより圧力状態の安定化を図る（安定化処理を行う）ためのもので、このサブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ２０１において、ＣＰＶ１４に対する制御値ｄｐｒｇを「０」にセットし、電磁ソレノイドをオフすることで、ＣＰＶ１４を閉弁する。また、ＥＣＵ１８は、ＰＣＶ１１に対する制御値ＸＰＣＶを「１」にセットし、電磁ソレノイドをオンすることで、ＰＣＶ１１を強制的に開弁する。さらに、ＥＣＵ１８は、ＣＣＶ１０に対する制御値ＸＣＣＶを「０」にセットし、電磁ソレノイドをオフすることで、ＣＣＶ１０を開弁する。これらにより、蒸発燃料処理系は、ＣＣＶ１０を通じて大気開放される。
【００３１】
続くステップＳ２０２において、ＥＣＵ１８は、カウント値ｔが、設定値ｔ0に到達したか否かを調べる。ここで、本モードＡにおいて、カウント値ｔは、モードＡ開始からの経過時間を表す。また、設定値ｔ0は、燃料の残量レベルＬに応じて可変に設定される時間を示し、当該時間は、蒸発燃料の発生量が所定量以下（すなわち、リーク診断を適切に実行可能な所定以下の蒸発燃料の発生量）であるとき、ＣＣＶ１０を通じた大気開放によって、蒸発燃料処理系の内圧値Ｐteを大気圧近傍まで下げるに十分な時間に設定される。具体的には、設定値ｔ0は、例えば、予め設定された燃料残量テーブルに従って設定されるようになっており、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には大きな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には小さな値に設定される。
【００３２】
そして、ステップＳ２０２において、カウント値ｔが設定値ｔ0に到達していない（ｔ≦ｔ0）と判断した場合には、ＥＣＵ１８は、ステップＳ２０３に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ２０４に進む。
【００３３】
ステップＳ２０３からステップＳ２０４に進むと、ＥＣＵ１８は、現在の内圧値Ｐteが目標内圧値Ｐa以下であるか否かを調べる。ここで、本形態において、目標内圧値Ｐaは、大気圧近傍に設定された固定値であり、大気圧を基準とした所定値（例えば、＋１．５ｍｍＨｇ）に設定されている。
【００３４】
そして、ＥＣＵ１８は、ステップＳ２０４において、内圧値Ｐteが未だ目標内圧値Ｐaまで降下していないと判定した場合にはステップＳ２０２に戻り、内圧値Ｐteが目標内圧値Ｐa以下であると判定した場合にはステップＳ２０５に進む。
【００３５】
ステップＳ２０４からステップＳ２０５に進むと、ＥＣＵ１８は、ＣＣＶ１０に対する制御値ＸＣＣＶを「０」から「１」に変更し、電磁ソレノイドをオンすることで、ＣＣＶ１０を閉弁する。ＣＣＶ１０の閉弁後、ＥＣＵ１８は、ステップＳ２０６に進み、モードＡが終了したことを示すモードＡ終了フラグＦaを「１」にセットし、続くステップＳ２０７で、モードＡ開始から終了までの所要時間ｔaをカウント値ｔに基づいてセットし（ｔa＝ｔ）、続くステップＳ２０８で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００３６】
一方、ステップＳ２０２において、カウント値ｔが設定値ｔ0に到達（ｔ＞ｔ0）したと判定した場合、すなわち、モードＡの開始から設定時間（設定値ｔ0に基づく設定時間）が経過しても内圧値Ｐteが目標内圧値Ｐaまで降下されていない場合には、ＥＣＵ１８は、現在、蒸発燃料の発生量が過剰であり、適切なリーク診断を行うことが困難であると判断して、ステップＳ２０９に進む。
【００３７】
そして、ステップＳ２０２からステップＳ２０９に進むと、ＥＣＵ１８は、リーク診断を中断してキャンセルフラグＦcanを「１」にセットし、続く、ステップＳ２１０で、実行条件成立フラグＦexを「０」にリセットした後、サブルーチンを抜ける。
【００３８】
メインルーチンにおいて、ステップＳ１０５からステップＳ１０６に進むと、ＥＣＵ１８は、上述のモードＡの処理によって実行条件成立フラグＦexが「０」にリセットされたか否かを調べる。
【００３９】
そして、ステップＳ１０６において、実行条件成立フラグＦexが「０」であると判定した場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常時制御を行った後、ルーチンを抜ける。
【００４０】
一方、ステップＳ１０６において、実行条件成立フラグＦexが「１」のまま維持されていると判定した場合には、ＥＣＵ１８は、ステップＳ１０７に進む。ステップＳ１０６からステップＳ１０７に進むと、ＥＣＵ１８は、図５に示すモードＢ実行サブルーチンを呼び出し、当該サブルーチンに従って、モードＢの処理を実行する（図９中、ｍｏｄｅＢ参照）。このサブルーチンは、インテークマニホル４の吸入管負圧を利用して蒸発燃料処理系の内圧値Ｐteを所定の目標内圧値Ｐbまで降下させるためのもので、サブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ３０１において、ＣＰＣ１４に対する制御値ｄｐｒｇを所定のデューティ比にセットし、電磁ソレノイドをデューティ制御することで、ＣＰＣ１４を所定開度で開弁する。これにより、蒸発燃料処理系への負圧の導入（負圧導入処理）が開始される。
【００４１】
続くステップＳ３０２において、ＥＣＵ１８は、カウント値ｔが設定値ｔ1に到達したか否かを調べる。ここで、本モードＢにおいて、カウント値ｔは、モードＢ開始からの経過時間を表す。また、設定値ｔ1は、燃料の残量レベルＬに応じて可変に設定される時間を示し、当該時間は、蒸発燃料の発生量が所定量以下（すなわち、リーク診断を適切に実行可能な所定以下の蒸発燃料の発生量）であるとき、ＣＰＣ１４を通じた負圧導入によって、蒸発燃料処理系の内圧値Ｐteを目標内圧値Ｐbまで下げるに十分な時間に設定される。具体的には、設定値ｔ1は、例えば、予め設定された燃料残量テーブルに従って設定されるようになっており、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には大きな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には小さな値に設定される。
【００４２】
そして、ステップＳ３０２において、カウント値ｔが設定値ｔ1に到達していない（ｔ≦ｔ1）と判断した場合には、ＥＣＵ１８は、ステップＳ３０３に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ３０４に進む。
【００４３】
ステップＳ３０３からステップＳ３０４に進むと、ＥＣＵ１８は、現在の内圧値Ｐteが目標内圧値Ｐb以下であるか否かを調べる。ここで、本形態において、目標内圧値Ｐbは、例えば、大気圧を基準として、−１５ｍｍＨｇに設定されている。
【００４４】
そして、ＥＣＵ１８は、ステップＳ３０４において、内圧値Ｐteが未だ目標内圧値Ｐbまで降下していないと判定した場合にはステップＳ３０２に戻り、内圧値Ｐteが目標内圧値Ｐb以下であると判定した場合にはステップＳ３０５に進む。
【００４５】
ステップＳ３０４からステップＳ３０５に進むと、ＥＣＵ１８は、ステップＳ３０６に進み、モードＢが終了したことを示すモードＢ終了フラグＦbを「１」にセットし、続くステップＳ３０６で、モードＢ開始から終了までの所要時間ｔbをカウント値ｔに基づいてセットし（ｔb＝ｔ）、続くステップＳ３０７で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００４６】
一方、ステップＳ３０２において、カウント値ｔが設定値ｔ1に到達（ｔ＞ｔ1）したと判定した場合、すなわち、モードＢの開始から設定時間（設定値ｔ1に基づく設定時間）が経過しても内圧値Ｐteが目標内圧値Ｐbまで降下されていない場合には、ＥＣＵ１８は、現在、蒸発燃料の発生量が過剰であり、適切なリーク診断を行うことが困難であると判断して、ステップＳ３０８に進む。
【００４７】
そして、ステップＳ３０２からステップＳ３０８に進むと、ＥＣＵ１８は、リーク診断を中断してキャンセルフラグＦcanを「１」にセットし、続くステップＳ３０９で、実行条件成立フラグＦexを「０」にリセットした後、サブルーチンを抜ける。
【００４８】
メインルーチンにおいて、ステップＳ１０７からステップＳ１０８に進むと、ＥＣＵ１８は、上述のモードＢの処理によって実行条件成立フラグＦexが「０」にリセットされたか否かを調べる。
【００４９】
そして、ステップＳ１０８において、実行条件成立フラグＦexが「０」であると判定した場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常時制御を行った後、ルーチンを抜ける。
【００５０】
一方、ステップＳ１０８において、実行条件成立フラグＦexが「１」に維持されていると判定した場合には、ＥＣＵ１８は、ステップＳ１０９に進む。ステップＳ１０８からステップＳ１０９に進むと、ＥＣＵ１８は、図６に示すモードＣ実行サブルーチンを呼び出し、当該サブルーチンに従ってモードＣの処理を実行する（図９中、ｍｏｄｅＣ参照）。このサブルーチンは、モードＢの負圧導入によって不安定となった蒸発燃料処理系の内圧を安定化させるためのもので、サブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ４０１において、ＣＰＣ１４に対する制御値ｄｐｒｇを「０」にセットし、電磁ソレノイドをオフすることで、ＣＰＣ１４を閉弁する。これにより、蒸発燃料処理系が負圧封印される。
【００５１】
続くステップＳ４０２において、ＥＣＵ１８は、カウント値ｔが、設定値ｔ2に到達したか否かを調べる。ここで、本モードＣにおいて、カウント値ｔは、モードＣ開始からの経過時間を表す。また、設定値ｔ2は、燃料の残量レベルＬに応じて可変に設定される時間を示し、当該時間は、蒸発燃料処理系に「異常」と判定すべきリークが発生しているとき、当該リークのみによって内圧値Ｐteを目標内圧値Ｐc（例えば、目標内圧値Ｐbよりも数ｍｍＨｇ程度高い値）まで上昇させるに十分な時間に設定されている。具体的には、設定値ｔ2は、例えば、予め設定された燃料残量テーブルに従って設定されるようになっており、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には大きな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には小さな値に設定される。
【００５２】
そして、ステップＳ４０２において、カウント値ｔが設定値ｔ2に到達していない（ｔ≦ｔ2）と判断した場合には、ＥＣＵ１８は、ステップＳ４０３に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ４０４に進む。
【００５３】
ステップＳ４０３からステップＳ４０４に進むと、ＥＣＵ１８は、現在の内圧値Ｐteが目標内圧値Ｐc以下であるか否かを調べる。
【００５４】
そして、ＥＣＵ１８は、ステップＳ４０４において、内圧値Ｐteが未だ目標内圧値Ｐcまで上昇していないと判定した場合にはステップＳ４０２に戻り、内圧値Ｐteが目標内圧値Ｐc異常であると判定した場合にはステップＳ４０５に進む。
【００５５】
ステップＳ４０４からステップＳ４０５に進むと、ＥＣＵ１８は、モードＣが終了したことを示すモードＣ終了フラグＦcを「１」にセットし、続くステップＳ４０６で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００５６】
一方、ステップＳ４０２において、カウント値ｔが設定値ｔ2に到達（ｔ＞ｔ2）したと判定した場合、すなわち、モードＣの開始から設定時間（設定値ｔ2に基づく設定時間）が経過しても内圧値Ｐteが目標内圧値Ｐcまで上昇されていない場合には、ＥＣＵ１８は、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生していない（すなわち、蒸発燃料処理系は「正常」である）と判断して、ステップＳ４０７に進む。なお、ステップＳ４０２で「正常」であると判定され得る場合とは、蒸発燃料処理系にリークが発生していないことは勿論のこと、蒸発燃料の発生量が少ない場合である。
【００５７】
そして、ステップＳ４０２からステップＳ４０７に進むと、ＥＣＵ１８は、蒸発燃料処理系がリークのない正常な状態であるとの診断結果を得られたことを示す正常判定フラグＦokを「１」にセットし、続くステップＳ４０８で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。すなわち、ＥＣＵ１８は、以下のモードＤ乃至モードＥの処理を行うことなく、蒸発燃料処理系の「正常」を判定する。
【００５８】
メインルーチンにおいて、ステップＳ１０９からステップＳ１１０に進むと、ＥＣＵ１８は、上述のモードＣの処理によって正常判定フラグＦokが「１」にセットされたか否かを調べる。
【００５９】
そして、ステップＳ１１０において、正常判定フラグＦokが「１」であると判定した場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常制御を行った後、ルーチンを抜ける。その際、ＥＣＵ１８は、診断実行フラグＦdiagを「１」にセットする。
【００６０】
一方、ステップＳ１１０において、正常判定フラグＦokが「１」でないと判定した場合には、ＥＣＵ１８は、ステップＳ１１１に進む。ステップＳ１１０からステップＳ１１１に進むと、ＥＣＵ１８は、図７に示すモードＤ実行サブルーチンを呼び出し、当該サブルーチンに従って、モードＤの処理を実行する（図９中、ｍｏｄｅＤ参照）。このサブルーチンは、後述するモードＥの処理において蒸発燃料処理系の圧力変化量Ｐ1を計測する際の圧力変化計測時間ｔe2を、内圧上昇時間ｔd2に基づいて設定するためのものである。ここで、本形態において、ＥＣＵ１８は、内圧値Ｐteが、後述のステップＳ５０３で設定される計時開始内圧値Ｐstから、所定の目標内圧値Ｐdまで上昇する間の時間を内圧上昇時間ｔd2として計時する。目標内圧値Ｐdは、例えば、燃料の残量レベルＬに応じて可変に設定される内圧値を示し、当該目標内圧値Ｐdは、予め設定された燃料残量テーブルに基づいて設定される。具体的には、目標内圧値Ｐdは、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には小さな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には大きな値に設定される。なお、目標内圧値Ｐdは、予め設定された燃料残量と燃料温度とのマップに基づいて、残量レベルＬ及び燃料温度Ｔに応じた値に設定されるものであってもよい。この場合、目標内圧値Ｐdは、燃料温度Ｔが高い程、大きな値に設定される。
【００６１】
サブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ５０１において、カウント値ｔが設定値ｔ3に到達したか否かを調べる。ここで、本モードＤにおいて、カウント値ｔは、モードＤ開始からの経過時間を表す。また、設定値ｔ3は、上述のモードＣで安定化させた内圧の変動をより確実に安定化させるためのディレイ時間であり、例えば、予め設定された固定値（図９中、ｔd1）に設定されている。すなわち、多量の蒸発燃料が発生してモードＣが早期に終了した場合、内圧値Ｐteが目標内圧値Ｐcに到達した時点で内圧が十分に安定していない場合がある。そこで、ＥＣＵ１８は、カウント値ｔが設定値ｔ3に到達するまでの間待機する。すなわち、カウント値ｔが設定値ｔ3に到達していない（ｔ≦ｔ3）と判定した場合、ＥＣＵ１８は、ステップＳ５０２に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ５０１に戻る。
【００６２】
一方、ステップＳ５０１において、カウント値ｔが設定値ｔ3に到達した（ｔ＞ｔ3）と判定した場合には、ＥＣＵ１８は、ステップＳ５０３に進み、現在の内圧値Ｐteを計時開始内圧値Ｐst2としてセットした後、ステップＳ５０４に進む。
【００６３】
ところで、圧力センサ１５は大気圧との相対圧を計測するものであるため、蒸発燃料の発生等に起因する内圧値Ｐteの変化を長時間に渡って精度よく計測するためには、大気圧の変動による補正を行う必要がある。すなわち、例えば、自車が登坂路を走行中の場合等には、高度変化によって大気圧が変動するため、この大気圧変動に伴う補正を行う必要がある。そこで、ステップＳ５０３からステップＳ５０４に進むと、ＥＣＵ１８は、計時開始内圧値Ｐst2がセットされた際の大気圧Ｐatを初期値Ｐat0としてセットする。そして、ステップＳ５０４からステップＳ５０５に進むと、ＥＣＵ１８は、初期値Ｐat0と現在の大気圧Ｐatとの差（Ｐat0−Ｐat）を大気圧補正量Ｄpatとして算出した後、ステップＳ５０６に進む。
【００６４】
ステップＳ５０５からステップＳ５０６に進むと、ＥＣＵ１８は、現在の内圧値Ｐteが、目標内圧値Ｐd（具体的には、大気圧補正された目標内圧値（Ｐd−Ｄpat））に到達したか否かを調べる。
【００６５】
そして、ステップＳ５０６において、内圧値Ｐteが目標内圧値に到達していない（Ｐte≦Ｐd−Ｄpat）と判定した場合には、ＥＣＵ１８は、ステップＳ５０７に進み、カウント値ｔが設定値ｔ4に到達したか否かを調べる。ここで、設定値ｔ4は、蒸発燃料処理系で所定量以上の蒸発燃料が発生している場合に、内圧値Ｐteを目標内圧値Ｐdまで上昇させるに十分な時間に設定されている。
【００６６】
そして、ステップＳ５０７において、カウント値ｔが設定値ｔ4に到達していないと判断した場合には、ＥＣＵ１８は、ステップＳ５０８に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ５０５に戻る。
【００６７】
一方、ステップＳ５０７において、カウント値ｔが設定値ｔ4に到達したと判断した場合、すなわち、モードＤ開始から設定時間（設定値ｔ4に基づく設定時間）が経過しても内圧値Ｐteが目標内圧値（大気圧補正された目標内圧値（Ｐd−Ｄpat））に到達していない場合には、ＥＣＵ１８は、蒸発燃料の発生量が極めて少ないと判断して、ステップＳ５０９に進む。
【００６８】
ステップＳ５０７からステップＳ５０９に進むと、ＥＣＵ１８は、設定時間（設定値ｔ4に基づく設定時間）経過時の内圧値Ｐteを内圧値Ｐend2としてセットした後、ステップＳ５１０に進み、設定時間内の圧力変化量Ｐ2（＝Ｐend2−Ｐst2）を算出した後、ステップＳ５１１に進む。
【００６９】
ステップＳ５１０からステップＳ５１１に進むと、ＥＣＵ１８は、圧力変化量Ｐ2が判定値Ｐth2（具体的には、大気圧補正された判定値（Ｐth2−Ｄpat））以下であるか否かを調べる。ここで、判定値Ｐth2は、蒸発燃料の発生量が極めて少ない場合に、圧力変化量Ｐ2に基づいて「異常」判定を行うための判定値であり、例えば、残量レベルＬに基づいて可変に設定される。具体的には、判定値Ｐth2は、予め設定された燃料残量テーブルに基づいて、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には小さな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には大きな値に設定される。なお、判定値Ｐth2は、予め設定された燃料残量と燃料温度とのマップに基づいて、残量レベルＬ及び燃料温度Ｔに応じた値に設定されるものであってもよい。この場合、判定値Ｐth2は、燃料温度Ｔが高い程、大きな値に設定される。
【００７０】
そして、ステップＳ５１１において、Ｐ2≦Ｐth2−Ｄpatであると判定した場合には、ＥＣＵ１８は、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生していない（すなわち。蒸発燃料処理系は「正常」である）と判断して、ステップＳ５１２に進み、正常判定フラグＦokを「１」にセットし、続くステップＳ５１３で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００７１】
一方、ステップＳ５１１において、Ｐ2＞Ｐth2−Ｄpatであると判定した場合には、ＥＣＵ１８は、ステップＳ５１４に進み、リーク診断がキャンセルされたことを示すキャンセルフラグＦcanを「１」にセットし、続く、ステップＳ５１５で、実行条件成立フラグＦexを「０」にリセットした後、サブルーチンを抜ける。すなわち、圧力変化量Ｐ2＞Ｐth2−Ｄpatでは、仮に蒸発燃料の発生量が略零であった場合に、十分なリークが発生していないと判断するには不十分であるため、ＥＣＵ１８は、今回のリーク診断をキャンセルした後、サブルーチンを抜ける。
【００７２】
また、ステップＳ５０６において、内圧値Ｐteは目標内圧値に到達している（Ｐte＞Ｐd−Ｄpat）と判定した場合には、ＥＣＵ１８は、ステップＳ５１６に進む。ステップＳ５０６からステップＳ５１６に進むと、ＥＣＵ１８は、モードＤが終了したことを示すモードＤ終了フラグＦdを「１」にセットし、続くステップＳ５１７で、計時した内圧上昇時間ｔd2（＝ｔ−ｔd1）に基づいて圧力変化計測時間ｔe2をセットし、続くステップＳ５１８で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。ここで、本形態においては、内圧上昇時間ｔd2が、そのまま、圧力変化計測時間ｔe2としてセットされる。
【００７３】
メインルーチンにおいて、ステップＳ１１１からステップＳ１１２に進むと、ＥＣＵ１８は、上述のモードＤの処理によって実行条件成立フラグＦexが「０」にリセットされたか否かを調べる。
【００７４】
そして、ステップＳ１１２において、実行条件成立フラグＦexが「０」であると判定した場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常時制御を行った後、ルーチンを抜ける。
【００７５】
一方、ステップＳ１１２において、実行条件成立フラグＦexが「１」であると判定した場合には、ＥＣＵ１８は、ステップＳ１１３に進み、上述のモードＤの処理によって正常判定フラグＦokが「１」にセットされたか否かを調べる。
【００７６】
そして、ステップＳ１１３において、正常判定フラグＦokが「１」であると判定した場合には、ＥＣＵ１８は、ステップＳ１０２に進み、バルブの通常時制御を行った後、ルーチンを抜ける。その際、ＥＣＵ１８は、診断実行フラグＦdiagを「１」にセットする。
【００７７】
一方、ステップＳ１１３において、正常判定フラグＦokが「１」でないと判定した場合には、ＥＣＵ１８は、ステップＳ１１４に進む。ステップＳ１１３からステップＳ１１４に進むと、ＥＣＵ１８は、図８に示すモードＥ実行サブルーチンを呼び出し、当該サブルーチンに従って、モードＥの処理を実行する（図９中、ｍｏｄｅＤ参照）。このサブルーチンは、上述のモードＤで設定した圧力変化計測時間ｔe2を用いて圧力変化量Ｐ1を計測し、この圧力変化量Ｐ1に基づいて蒸発燃料処理系のリーク診断を行うためのものである。
【００７８】
サブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ６０１において、カウント値ｔが設定値ｔ5に到達したか否かを調べる。ここで、本モードＥにおいて、カウント値ｔは、モードＥ開始からの経過時間を表す。また、設定値ｔ5は、上述のモードＤが終了してから圧力変化量Ｐ1の計測を開始するまでのディレイであり（図９中、ｔe1）、例えば、燃料の残量レベルＬに応じて可変に設定される。具体的には、設定値ｔ5は、予め設定された燃料残量テーブルに基づいて設定され、残量レベルＬが低く蒸発燃料処理系の空間容積が大きい場合には大きな値に設定され、残量レベルＬが高く蒸発燃料処理系の空間容積が小さい場合には小さな値に設定される。そして、このようなディレイを設定することにより、ＥＣＵ１８は、大気圧近傍における圧力変化量Ｐ1の計測を確実に実現させるようになっている。なお、上述のディレイ時間（設定値ｔ5）の設定は、予め設定された燃料残量と燃料温度とのマップに基づいて、残量レベルＬ及び燃料温度Ｔに応じた値に設定されるものであってもよい。この場合、設定値ｔ5は、燃料温度Ｔが高い程、小さな値に設定される。また、圧力変化量Ｐ1の計測を開始するまでのディレイの設定値としては、上述の時間の設定値ｔ5に代えて、例えば、残量レベルＬ、或いは、残量レベルＬ及び燃料温度Ｔに応じて可変に設定される圧力変化量Ｐ3（図９参照）の設定値を用いてもよい。
【００７９】
そして、ステップＳ６０１において、カウント値ｔが設定値ｔ5に到達していない（ｔ≦ｔ5）と判定した場合、ＥＣＵ１８は、ステップＳ６０２に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ６０１に戻る。
【００８０】
一方、ステップＳ６０１において、カウント値ｔが設定値ｔ5に到達した（ｔ＞ｔ3）と判定した場合には、ＥＣＵ１８は、ステップＳ６０３に進み、現在の内圧値Ｐteを圧力変化量Ｐ1計測の計測開始内圧値Ｐst1としてセットした後、ステップＳ６０４に進む。
【００８１】
ところで、圧力センサ１５は、大気圧との相対圧を計測するものであるため、蒸発燃料等の発生に起因する内圧値Ｐteの変化量を精度よく計測するためには、大気圧の変動による補正を行う必要がある。そこで、ステップＳ６０３からステップＳ６０４に進むと、ＥＣＵ１８は、計測開始内圧値Ｐst1がセットされた際の大気圧Ｐatを初期値Ｐat0としてセットする。そして、ステップＳ６０４からステップＳ６０５に進むと、ＥＣＵ１８は、初期値Ｐat0と現在の大気圧Ｐatとの差（Ｐat0−Ｐat）を大気圧補正量Ｄpatとして算出した後、ステップＳ５０６に進む。
【００８２】
ステップＳ６０５からステップＳ６０６に進むと、ＥＣＵ１８は、現在のカウント値ｔが、ディレイ時間ｔe1（すなわち、設定値ｔ5）と圧力変化計測時間ｔe2との和で規定されるモードＥ時間（ｔe1＋ｔe2）に到達したか否かを調べる。
【００８３】
そして、ステップＳ６０６において、カウント値ｔがモードＥ時間に到達していない（ｔ＜ｔe1＋ｔe2）と判定した場合には、ＥＣＵ１８は、ステップＳ６０７に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ６０５に戻る。
【００８４】
一方、ステップＳ６０６において、カウント値ｔがモードＥ時間に到達した（ｔ≧ｔe1＋ｔe2）と判定した場合には、ＥＣＵ１８は、ステップＳ６０８に進み、現在の内圧値Ｐteを圧力変化量Ｐ1計測の計測終了内圧値Ｐend1としてセットした後、ステップＳ６０４に進む。
【００８５】
そして、ステップＳ６０８からステップＳ６０９に進むと、ＥＣＵ１８は、計測開始内圧値Ｐst1と計測終了内圧値Ｐend1とに基づいて圧力変化量Ｐ1（＝Ｐend1−Ｐst1）を算出した後、ステップＳ６１０に進む。すなわち、ＥＣＵ１８は、蒸発燃料処理系の圧力変化計測時間ｔe2内での圧力変化量Ｐ1を算出する。
【００８６】
ステップＳ６０９からステップＳ６１０に進むと、ＥＣＵ１８は、算出した圧力変化量Ｐ1が判定値Ｐth0（具体的には、大気圧補正された判定値（Ｐth0−Ｄpat））よりも大きいか否かを調べる。ここで、判定値Ｐth0は、少なくとも残量レベルＬ（すなわち、蒸発燃料処理系の空間容積）に基づいて設定される。具体的には、判定値Ｐth0は、予め設定された燃料残量と計測時間とのマップに基づいて設定され、残量レベルＬが低く蒸発燃料処理系の空間容積が大きくなる程小さな値に設定され、計測時間が短い程小さな値に設定される。すなわち、蒸発燃料処理系の空間容積が大きく、計測時間が短い程、圧力変化量Ｐ1が小さくなるため、判定値Ｐth0は小さな値に設定される。その際、ＥＣＵ１８は、判定値Ｐth0を、上述のモードＡでセットされた所用時間やモードＢでセットされた所用時間を用いて補正することも可能である。すなわち、蒸発燃料処理系の空間容積がある一定の空間容積である場合、モードＡやモードＢでセットされた所要時間が長くなる程、蒸発燃料の発生量が多いことが推測できる。そこで、ＥＣＵ１８は、各所要時間が長くなる程、判定値th0を大きな値に補正する。
【００８７】
そして、ステップＳ６１０において、Ｐ1≧Ｐth0−Ｄpatであると判定した場合には、ＥＣＵ１８は、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生していない（すなわち。蒸発燃料処理系は「正常」である）と判断して、ステップＳ６１１に進み、正常判定フラグＦokを「１」にセットし、続くステップＳ６１２で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００８８】
一方、ステップＳ６１０において、Ｐ1＜Ｐth0−Ｄpatであると判定した場合には、ＥＣＵ１８は、蒸発燃料処理系が「異常」であると判断して、ステップＳ６１３に進む。
【００８９】
すなわち、蒸発燃料処理系にリークがない場合、大気圧付近においても、内圧値Ｐteは、蒸発燃料の発生によって上昇し続けるため、圧力変化量Ｐ1が比較的大きな値となる。その一方で、蒸発燃料処理系にリークがある場合、そのリークによって、内圧値Ｐteが大気圧近傍に収束するため、圧力変化量Ｐ1が比較的小さな値となる。従って、上述のように判定値Ｐth0を適切に設定し、することにより、Ｐ1≧Ｐth0−Ｄpatである場合には蒸発燃料処理系が「正常」であると判定し、Ｐ1＜Ｐth0−Ｄpatである場合には「異常」であると判定することが可能となる。
【００９０】
ステップＳ６１０からステップＳ６１３に進むと、ＥＣＵ１８は、以下の判定条件（５）、（６）がともに成立しているか否かを調べることにより、蒸発燃料処理系が「異常」であるか否かを再度検証する。  
（５）圧力変化量Ｐ1が判定値Ｐth1（具体的には、大気圧補正された判定値（Ｐth1−Ｄpat））よりも小さいこと。  
ここで、判定値（キャンセル判定値）Ｐth1は、判定値Ｐth0よりも小さな値であり、少なくとも残量レベルＬに基づいて設定される。具体的には、判定値Ｐth1は、予め設定された燃料残量と計測時間とのマップに基づいて設定され、残量レベルＬが低く蒸発燃料処理系の空間容積が大きくなる程小さな値に設定され、計測時間が短い程小さな値に設定される。すなわち、蒸発燃料処理系の空間容積が大きく、計測時間が短い程、圧力変化量Ｐ1が小さくなるため、判定値Ｐth0は小さな値に設定される。その際、ＥＣＵ１８は、判定値Ｐth0を、上述のモードＡでセットされた所用時間やモードＢでセットされた所用時間を用いて補正することも可能である。すなわち、蒸発燃料処理系の空間容積がある一定の空間容積である場合、モードＡやモードＢでセットされた所要時間が長くなる程、蒸発燃料の発生量が多いことが推測できる。そこで、ＥＣＵ１８は、各所要時間が長くなる程、判定値th0を大きな値に補正する。
【００９１】
（６）計測終了内圧値Ｐend1が所定圧力よりも小さいこと。  
ここで、計測終了内圧値Ｐend1に対する所定圧力は、例えば、残量レベルＬに基づいて設定される。具体的には、所定圧力は、予め設定された燃料残量のテーブルに基づいて設定され、残量レベルＬが低く蒸発燃料処理系の空間容積が大きくなる程大気圧に近い値に設定される。
【００９２】
そして、ステップＳ６１３において、判定条件（５）、（６）の全てが成立している（すなわち、Ｐ1＜Ｐth1−Ｄpat、Ｐend1＜所定圧力）と判定した場合、ＥＣＵ１８は、ステップＳ６１４に進み、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生している（すなわち。蒸発燃料処理系は「異常」である）と判断して、異常判定フラグＦngを「１」にセットし、続くステップＳ６１５で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【００９３】
一方、ステップＳ６１３において、判定条件（５）、（６）の少なくとも何れかが成立していないと判定した場合、蒸発燃料処理系が「異常」との判定を確定することが困難であるため当該判定をキャンセルし、ＥＣＵ１８は、ステップＳ６１６に進み、キャンセルフラグＦcanを「１」にセットし、続く、ステップＳ６１７で、実行条件成立フラグＦexを「０」にリセットした後、サブルーチンを抜ける。すなわち、判定条件（５）、（６）の少なくとも何れかが成立しない場合とは、圧力変化量Ｐ1が小さい状態にあるものの、その原因が、リークによるものなのか、或いは、蒸発燃料の発生量が少ないためであるかの十分な判断が困難な場合である。そこで、ＥＣＵ１８は、このような場合には、「異常」の判定をキャンセルする。
【００９４】
このような形態によれば、圧力変化計測時間ｔe2の設定のための内圧上昇時間ｔd2の計時や、圧力変化計測時間ｔe2を用いた圧力変化量Ｐ1の計測等を、同一の蒸発燃料発生環境下で行うことにより、精度のよいリーク診断を行うことができる。
【００９５】
すなわち、蒸発燃料処理系を一旦負圧封印した後、当該蒸発燃料処理系の大気開放や負圧導入等を行うことなく各種計測等を行うことにより、蒸発燃料の発生状態を変化させることなく診断に必要な情報を得ることができ、精度のよいリーク診断を実現することができる。
【００９６】
次に、図１０は本発明の第２の形態に係わり、図１０はモードＥ実行サブルーチンのフローチャートである。なお、本形態においては、モードＥにおいて蒸発燃料処理系の「異常」を判定する際の判定条件をさらに付加した点が、上述の第１の形態と主として異なる。その他、上述の第１の形態と同様の点については説明を省略する。
【００９７】
ＥＣＵ１８によってモードＥ実行サブルーチンが呼び出され、サブルーチンがスタートすると、ＥＣＵ１８は、先ず、ステップＳ７０１において、モードＥがスタートした直後の大気圧Ｐatを初期値Ｐst3としてセットする。そして、ステップＳ７０１からステップＳ７０２に進むと、ＥＣＵ１８は、初期値Ｐat3と現在の大気圧Ｐatとの差（Ｐat3−Ｐat）を大気圧補正量Ｄpat3として算出した後、ステップＳ７０３に進む。
【００９８】
ステップＳ７０２からステップＳ７０３に進むと、ＥＣＵ１８は、カウント値ｔが設定値ｔ5に到達したか否かを調べる。そして、ステップＳ７０３において、カウント値ｔが設定値ｔ5に到達していない（ｔ≦ｔ5）と判定した場合、ＥＣＵ１８は、ステップＳ７０４に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ７０２に戻る。
【００９９】
一方、ステップＳ７０３において、カウント値ｔが設定値ｔ5に到達した（ｔ＞ｔ3）と判定した場合には、ＥＣＵ１８は、ステップＳ７０５に進み、現在の内圧値Ｐteを圧力変化量Ｐ1計測の計測開始内圧値Ｐst1としてセットした後、ステップＳ７０６に進む。
【０１００】
続くステップＳ７０６において、ＥＣＵ１８は、モードＥ開始時の内圧値（すなわち、目標内圧値Ｐd）、計測開始内圧値Ｐst1、及び、大気圧補正量Ｄpat3に基づいて、上述のディレイ制御中の圧力変化量Ｐ3（＝Ｐst1−Ｐd−Ｄpat3）を算出し、ステップＳ７０７で、ディレイ制御時における単位時間当たりの圧力変化率ΔＰ3（＝Ｐ3／ｔe1）を算出した後、ステップＳ７０８に進む。
【０１０１】
ステップＳ７０７からステップＳ７０８に進むと、ＥＣＵ１８は、計測開始内圧値Ｐst1がセットされた際の大気圧Ｐatを初期値Ｐat0としてセットする。そして、ステップＳ７０９において、ＥＣＵ１８は、初期値Ｐat0と現在の大気圧Ｐatとの差（Ｐat0−Ｐat）を大気圧補正量Ｄpatとして算出した後、ステップＳ７１０に進む。
【０１０２】
ステップＳ７０９からステップＳ７１０に進むと、ＥＣＵ１８は、現在のカウント値ｔが、ディレイ時間ｔe1（すなわち、設定値ｔ5）と圧力変化計測時間ｔe2との和で規定されるモードＥ時間（ｔe1＋ｔe2）に到達したか否かを調べる。
【０１０３】
そして、ステップＳ７１０において、カウント値ｔがモードＥ時間に到達していない（ｔ＜ｔe1＋ｔe2）と判定した場合には、ＥＣＵ１８は、ステップＳ７１１に進み、カウント値ｔをインクリメント（ｔ←ｔ＋１）した後、ステップＳ７０９に戻る。
【０１０４】
一方、ステップＳ７１０において、カウント値ｔがモードＥ時間に到達した（ｔ≧ｔe1＋ｔe2）と判定した場合には、ＥＣＵ１８は、ステップＳ７１２に進み、現在の内圧値Ｐteを圧力変化量Ｐ1計測の計測終了内圧値Ｐend1としてセットした後、ステップＳ７１３に進む。
【０１０５】
ステップＳ７１２からステップＳ７１３に進むと、ＥＣＵ１８は、計測開始内圧値Ｐst1と計測終了内圧値Ｐend1とに基づいて圧力変化量Ｐ1（＝Ｐend1−Ｐst1）を算出した後、ステップＳ７１４に進む。すなわち、ＥＣＵ１８は、蒸発燃料処理系の圧力変化計測時間ｔe2内での圧力変化量Ｐ1を算出する。
【０１０６】
そして、ステップＳ７１４において、ＥＣＵ１８は、ディレイ制御時における単位時間当たりの圧力変化率ΔＰ3と、圧力変化計測時間ｔe2内における単位時間当たりの圧力変化率ΔＰ1（＝Ｐ1／ｔe2）との比（圧力変化率比）Ｒを算出した後、ステップＳ７１５に進む。
【０１０７】
ステップＳ７１４からステップＳ７１５に進むと、ＥＣＵ１８は、算出した圧力変化量Ｐ1が判定値Ｐth0（具体的には、大気圧補正された判定値（Ｐth0−Ｄpat））よりも大きいか否かを調べる。
【０１０８】
そして、ステップＳ７１５において、Ｐ1≧Ｐth0−Ｄpatであると判定した場合には、ＥＣＵ１８は、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生していない（すなわち。蒸発燃料処理系は「正常」である）と判断して、ステップＳ７１６に進み、正常判定フラグＦokを「１」にセットし、続くステップＳ７１７で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【０１０９】
一方、ステップＳ７１５において、Ｐ1＜Ｐth0−Ｄpatであると判定した場合には、ＥＣＵ１８は、蒸発燃料処理系が「異常」である可能性が高いと判断して、ステップＳ７１８に進む。
【０１１０】
ステップＳ７１５からステップＳ７１８に進むと、ＥＣＵ１８は、以下の判定条件（５）、（６）、（７）がともに成立しているか否かを調べることにより、蒸発燃料処理系が「異常」であるか否かを再度検証する。  
（５）圧力変化量Ｐ1が判定値Ｐth1（具体的には、大気圧補正された判定値（Ｐth1−Ｄpat））よりも小さいこと。  
（６）計測終了内圧値Ｐend1が所定圧力よりも小さいこと。  
（７）圧力変化率比Ｒが所定値よりも大きいこと。  
ここで、圧力変化率比Ｒに対する所定値は、例えば、予め設定された定数であり、１よりも大きな値に設定されるものである。これは、蒸発燃料処理系にリークがない場合、蒸発燃料の発生によって内圧値Ｐteの上昇が維持され、圧力変化率ΔＰ1，ΔＰ2が略等しくなる（すなわち、圧力変化率比Ｒが略１となる）一方で、蒸発燃料処理系にリークがある場合、蒸発燃料の発生による内圧値Ｐteの上昇が大気圧付近で緩慢となり、圧力変化率ΔＰ1がΔＰ2に対して小さな値となる（すなわち、圧力変化率Ｒが１よりも大きくなる）ためである。
【０１１１】
そして、ステップＳ７１８において、判定条件（５）、（６）、（７）の全てが成立している（すなわち、Ｐ1＜Ｐth1−Ｄpat、Ｐend1＜所定圧力、Ｒ＞所定値）と判定した場合、ＥＣＵ１８は、ステップＳ７１９に進み、蒸発燃料処理系に「異常」と判定し得るに十分なリークが発生している（すなわち。蒸発燃料処理系は「異常」である）と判断して、異常判定フラグＦngを「１」にセットし、続くステップＳ７２０で、カウント値ｔを「０」にリセットした後、サブルーチンを抜ける。
【０１１２】
一方、ステップＳ７１８において、判定条件（５）、（６）、（７）の少なくとも何れかが成立していないと判定した場合、蒸発燃料処理系が「異常」との判定を確定することが困難であるため当該判定をキャンセルし、ＥＣＵ１８は、ステップＳ７２１に進み、キャンセルフラグＦcanを「１」にセットし、続く、ステップＳ７２２で、実行条件成立フラグＦexを「０」にリセットした後、サブルーチンを抜ける。すなわち、判定条件（５）、（６）、（７）の少なくとも何れかが成立しない場合とは、圧力変化量Ｐ1が小さい状態にあるものの、その原因が、リークによるものなのか、或いは、蒸発燃料の発生量が少ないためであるかの十分な判断が困難な場合である。そこで、ＥＣＵ１８は、このような場合には、「異常」の判定をキャンセルする。
【０１１３】
このような形態によれば、上述の第１の形態で得られる効果に加え、判定条件を追加することにより、さらに精度の高い「異常」判定を実現することができる。この場合、特に、大気圧付近での揮発性が低い（すなわち、大気圧付近での蒸発燃料の発生量が減少する）燃料が適用される蒸発燃料処理系について、精度のよい診断が可能となる。
【図面の簡単な説明】
【０１１４】
【図１】第１の形態に係わり、蒸発燃料処理システムの概略構成図
【図２】同上、ＥＣＵの機能的なブロック図
【図３】同上、リーク診断のメインルーチンのフローチャート
【図４】同上、図３のモードＡ実行サブルーチンのフローチャート
【図５】同上、図３のモードＢ実行サブルーチンのフローチャート
【図６】同上、図３のモードＣ実行サブルーチンのフローチャート
【図７】同上、図３のモードＤ実行サブルーチンのフローチャート
【図８】同上、図３のモードＥ実行サブルーチンのフローチャート
【図９】同上、リーク診断におけるタイミングチャート
【図１０】第２の形態に係わり、モードＥ実行サブルーチンのフローチャート
【符号の説明】
【０１１５】
５  …  燃料タンク（蒸発燃料処理系）
６  …  エバポ通路（蒸発燃料処理系）
７  …  キャニスタ（蒸発燃料処理系）
１１  …  圧力制御ソレノイドバルブ（蒸発燃料処理系）
１２  …  パージ通路（蒸発燃料処理系）
１３  …  チャンバ（蒸発燃料処理系）
１４  …  パージ制御ソレノイドバルブ（蒸発燃料処理系）
１５  …  圧力センサ
１７  …  タンク内圧切替ソレノイドバルブ
１８  …  制御装置
１９  …  燃料レベルセンサ
２０  …  燃料温度センサ
２３  …  大気圧センサ
２４  …  バルブ制御部（負圧封印制御手段）
２５  …  診断部（計測時間設定手段、圧力変化量計測手段、診断手段、ディレイ制御手段）
Ｐ1  …  圧力変化量
Ｐat  …  大気圧値
Ｐd  …  目標内圧値
Ｐth0  …  判定値（判定値）
Ｐth1  …  判定値（キャンセル判定値）
Ｒ  …  圧力変化率比
ｔa  …  所要時間
ｔb  …  所要時間
ｔd2  …  内圧上昇時間（計時時間）
ｔe1  …  ディレイ時間
ΔＰ1  …  圧力変化率
ΔＰ3  …  圧力変化率
代理人    弁理士      伊    藤      進
【図１】
2005282378.tif 000003
【図２】
2005282378.tif 000004
【図３】
2005282378.tif 000005
【図４】
2005282378.tif 000006
【図５】
2005282378.tif 000007
【図６】
2005282378.tif 000008
【図７】
2005282378.tif 000009
【図８】
2005282378.tif 000010
【図９】
2005282378.tif 000011
【図１０】
2005282378.tif 000012