(57)【特許請求の範囲】
【請求項１】
燃料タンクと内燃機関の吸気管とを連通する通路に、前記燃料タンク内の燃料が蒸発して生じたエバポガスを吸着するキャニスタと、このキャニスタから前記吸気管へのエバポガスのパージを制御するパージ制御弁とを設けたエバポガスパージシステムにおいて、
異常診断時に少なくとも前記燃料タンクと前記キャニスタとを含むエバポガスパージ系に所定の圧力を導入して密閉したときの該エバポガスパージ系の圧力又はその後の圧力変化量を検出してその検出値に基づいて前記エバポガスパージ系の異常の有無を診断する異常診断手段を備え、
前記異常診断手段は、パージ実行中の空燃比フィードバック補正量偏差とパージ率との比からエバポガス濃度を求め、該エバポガス濃度の変化量及び該エバポガス濃度の両方又は該エバポガス濃度の変化量を判定値と比較して異常診断の実行／中止を判定する実行条件判定手段と、前記エバポガスパージ系の圧力変化量の検出値を前記エバポガス濃度と該エバポガス濃度の変化量の少なくとも一方に基づいて補正する検出値補正手段を有することを特徴とするエバポガスパージシステムの異常診断装置。
【請求項２】
前記異常診断手段は、前記判定値を、冷却水温、始動後の経過時間、パージ実行積算時間の少なくとも１つに基づいて設定する判定値設定手段を有することを特徴とする請求項１に記載のエバポガスパージシステムの異常診断装置。
【請求項３】
燃料タンクと内燃機関の吸気管とを連通する通路に、前記燃料タンク内の燃料が蒸発して生じたエバポガスを吸着するキャニスタと、このキャニスタから前記吸気管へのエバポガスのパージを制御するパージ制御弁とを設けたエバポガスパージシステムにおいて、
異常診断時に少なくとも前記燃料タンクと前記キャニスタとを含むエバポガスパージ系に所定の圧力を導入して密閉したときの該エバポガスパージ系の圧力又はその後の圧力変化量を検出してその検出値に基づいて前記エバポガスパージ系の異常の有無を診断する異常診断手段を備え、
前記異常診断手段は、パージ実行中の空燃比フィードバック補正量偏差とパージ率との比からエバポガス濃度を求め、該エバポガス濃度を判定値と比較して異常診断の実行／中止を判定する実行条件判定手段と、前記判定値を、冷却水温、始動後の経過時間、パージ実行積算時間の少なくとも１つに基づいて設定する判定値設定手段と、前記エバポガスパージ系の圧力変化量の検出値を前記エバポガス濃度と該エバポガス濃度の変化量の少なくとも一方に基づいて補正する検出値補正手段を有することを特徴とするエバポガスパージシステムの異常診断装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、燃料タンク内の燃料が蒸発して生じたエバポガス（燃料蒸発ガス）を内燃機関の吸気管にパージ（放出）するエバポガスパージシステムの異常の有無を診断するエバポガスパージシステムの異常診断装置に関するものである。
【０００２】
【従来の技術】
従来より、エバポガスパージシステムにおいては、燃料タンク内から発生するエバポガスが大気中に漏れ出すことを防止するため、燃料タンク内のエバポガス通路を通してキャニスタ内に吸着すると共に、このキャニスタ内に吸着されているエバポガスを内燃機関の吸気管へパージするパージ通路の途中にパージ制御弁を設け、内燃機関の運転状態に応じてパージ制御弁の開閉を制御することによって、キャニスタから吸気管へパージするエバポガスのパージ流量を制御するようになっている。このエバポガスパージシステムから大気中にエバポガスが漏れる異常が長期間放置されるのを防止するために、エバポガスの漏れを早期に検出する必要がある。
【０００３】
そこで、例えば特開平５−１２５９９７号公報に示すように、エバポガスパージ系内に大気圧又は吸気管負圧を導入・密閉したときの該エバポガスパージ系の圧力又はその後の圧力変化量に基づいて該エバポガスパージ系の圧力漏れ等の異常の有無を診断するようにしたものがある。
【０００４】
しかし、エバポガスパージ系内のエバポガスの発生量が多いときに、異常診断を実行してエバポガスパージ系内に吸気管負圧を導入すると、吸気管内へのエバポガスの流入によるオーバーリッチが発生しやすく、ドライバビリティや排気エミッションが悪化するおそれがある。
【０００５】
この対策として、特開平９−１７７６１７号公報に示すように、エンジン始動後のパージ実行積算時間又は積算パージ量が所定値以下のときや、空燃比フィードバック補正量が所定値以上のときに、エバポガスパージ系の異常診断を中止することが提案されている。
【０００６】
【発明が解決しようとする課題】
しかし、空燃比フィードバック補正量が所定値以上のときでも、エバポガスパージ系内のエバポガスの発生量が少ない場合には、エバポガスパージ系の異常診断を実行しても、オーバーリッチにはならない。また、パージ実行積算時間や積算パージ量から推定したエバポガス発生量は誤差が大きいため、その誤差を見込んだ判定基準で異常診断の実行／中止を判定すると、異常診断中止期間が長くなってしまう。このため、異常診断を実行可能な時にも、異常診断が中止されることがあり、異常診断の実行頻度が低下して、異常の検出が遅れることがある。
【０００７】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、エバポガスパージ系内のエバポガスの発生量が多いときに、エバポガスパージ系の異常診断を中止して、ドライバビリティや排気エミッションの悪化を防ぐことができ、それ以外のときに、異常診断を実行して、エバポガスパージ系の異常を早期検出することができるエバポガスパージシステムの異常診断装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１のエバポガスパージシステムの異常診断装置によれば、異常診断手段は、空燃比フィードバック補正量偏差とパージ率との比からエバポガス濃度を求め、該エバポガス濃度の変化量及び該エバポガス濃度の両方又は該エバポガス濃度の変化量を判定値と比較して異常診断の実行／中止を実行条件判定手段により判定すると共に、エバポガスパージ系の圧力変化量の検出値をエバポガス濃度と該エバポガス濃度の変化量の少なくとも一方に基づいて検出値補正手段により補正する。ここで、エバポガスの発生量が多くなると、エバポガス濃度の変化量が大きくなるため、エバポガス濃度の変化量を用いて異常診断の実行／中止を判定すれば、エバポガスの発生量が多いときに、エバポガスパージ系の異常診断を中止して、ドライバビリティや排気エミッションの悪化を防ぐことができ、それ以外のときに、異常診断を実行して、エバポガスパージ系の異常を早期検出することができる。尚、エバポガス濃度も、エバポガス濃度の変化量と同じく、エバポガスの発生量を反映するパラメータとなるため、エバポガス濃度の変化量及びエバポガス濃度の両方を用いて異常診断の実行／中止を判定すれば、異常診断の実行／中止の判定を更に精度良く行うことができる。
また、請求項１のように、エバポガスパージ系の圧力変化量の検出値をエバポガス濃度と該エバポガス濃度の変化量の少なくとも一方に基づいて補正すれば、圧力変化量の検出値の精度を高めることができ、異常診断精度を向上できる。
【０００９】
この場合、請求項２のように、判定値を、冷却水温、始動後の経過時間、パージ実行積算時間の少なくとも１つに基づいて判定値設定手段により設定するようにしても良い。このようにすれば、冷却水温、始動後の経過時間、パージ実行積算時間に応じて最適な判定値を設定でき、判定精度を向上できる。
【００１０】
また、請求項３のように、エバポガス濃度を判定値と比較して異常診断の実行／中止を判定する際に、判定値を、冷却水温、始動後の経過時間、パージ実行積算時間の少なくとも１つに基づいて判定値設定手段により設定するようにしても良い。このようにすれば、エバポガス濃度から異常診断の実行／中止を判定する場合でも、異常診断の実行／中止の判定を精度良く行うことができる。
【００１１】
また、請求項３においても、エバポガスパージ系の圧力変化量の検出値をエバポガス濃度と該エバポガス濃度の変化量の少なくとも一方に基づいて検出値補正手段により補正するようにすれば、圧力変化量の検出値の精度を高めることができ、異常診断精度を向上できる。
【００１２】
【発明の実施の形態】
以下、本発明の一実施形態を図１乃至図１７に基づいて説明する。まず、図１に基づいてシステム全体の概略構成を説明する。内燃機関であるエンジン１１の吸気管１２の上流側にはエアクリーナ１３が設けられ、このエアクリーナ１３を通過した空気がスロットルバルブ１４を通してエンジン１１の各気筒に吸入される。上記スロットルバルブ１４の開度は、アクセルペダル１５の踏込み量によって調節される。また、吸気管１２には、各気筒毎に燃料噴射弁１６が設けられている。各燃料噴射弁１６には、燃料タンク１７内の燃料（ガソリン）が燃料ポンプ１８により燃料配管１９を介して送られてくる。燃料タンク１７には、燃料タンク１７の内圧を検出する半導体圧力センサ等の圧力センサ２０が設けられている。
【００１３】
次に、エバポガスパージシステム２１の構成を説明する。燃料タンク１７には、連通管２２を介してキャニスタ２３が接続されている。このキャニスタ２３内には、エバポガスを吸着する活性炭等の吸着体２４が収容されている。また、キャニスタ２３の底面部には、大気に連通する大気連通管２５が設けられ、この大気連通管２５にはキャニスタ閉塞弁２６が取り付けられている。
【００１４】
このキャニスタ閉塞弁２６は、電磁弁により構成され、図２に示すようにソレノイドコイル２７への通電がオフされている状態では、弁体２８がスプリング２９により開放位置へ付勢されてキャニスタ２３の大気連通管２５が大気に開放された状態に保たれる。そして、ソレノイドコイル２７に所定電圧（例えば６Ｖ以上）が印加されると、弁体２８がスプリング２９の付勢力に抗して閉塞位置へ移動され、大気連通管２５が途中で弁体２８によって閉塞された状態になる。
【００１５】
一方、図１に示すように、キャニスタ２３と吸気管１２との間には、吸着体２４に吸着されているエバポガスを吸気管１２にパージ（放出）するためのパージ通路３０ａ，３０ｂが設けられ、このパージ通路３０ａ，３０ｂ間にパージ流量を調整するパージ制御弁３１が設けられている。このパージ制御弁３１は、図３に示すように、キャニスタ２３側のパージ通路３０ａに接続されるポート３２と、吸気管１２側のパージ通路３０ｂに接続されるポート３３と、これら両ポート３２，３３間の通路３４を途中で開閉する弁体３５と、この弁体３５を閉弁方向へ付勢するスプリング３６と、このスプリング３６の付勢力に抗して弁体３５を開弁方向へ移動させるソレノイドコイル３７とを備えた電磁弁である。
【００１６】
このパージ制御弁３１のソレノイドコイル３７には、パルス信号にて電圧が印加され、このパルス信号の周期に対するパルス幅の比率（デューティ比）を変えることによって、弁体３５の開閉周期に対する弁体３５の開弁時間の比率を変えて、キャニスタ２３から吸気管１２へのエバポガスのパージ流量を制御するようになっている。このパージ制御弁３１の駆動デューティとパージ流量との変化特性は図４に示されている。
【００１７】
また、図１に示すように、燃料タンク１７の給油口には、リリーフ弁付きの蓋３８が設けられ、燃料タンク内圧が−４０ｍｍＨｇ〜１５０ｍｍＨｇ（リリーフ圧）を越える内圧となった場合に、蓋３８のリリーフ弁が開放して圧抜きすようになっている。従って、燃料タンク１７からキャニスタ２３までの区間は、常にこのリリーフ圧範囲内の圧力変動以下に抑えられている。
【００１８】
次に、制御系の構成を図１に基づいて説明する。制御回路３９は、ＣＰＵ４０、後述する各種の制御プログラムやデータが格納されたＲＯＭ４１、入力データや演算データ等を一時的に記憶するＲＡＭ４２、入出力回路４３等をコモンバス４４を介して相互に接続して構成されている。また、入出力回路４３には、スロットルセンサ４５、アイドルスイッチ４６、車速センサ４７、大気圧センサ４８、吸気管圧力センサ４９、冷却水温センサ５０、吸気温センサ５１等の各種の運転状態検出手段が接続され、これら各運転状態検出手段から入出力回路４３を介して入力される信号及びＲＯＭ４１やＲＡＭ４２内のプログラムやデータ等に基づいて、空燃比フィードバック制御、燃料噴射制御、点火制御、エバポガスパージ制御、エバポガスパージシステム２１の異常診断等を実行し、燃料噴射弁１６、点火プラグ５２、キャニスタ閉塞弁２６、パージ制御弁３１等に入出力回路４３を介して駆動信号を出力すると共に、エバポガスパージシステム２１の異常時には警告ランプ５３を点灯して運転者に知らせる。以下、制御回路３９が実行する各種制御について説明する。
【００１９】
［空燃比フィードバック制御］
空燃比フィードバック（Ｆ／Ｂ）制御ルーチンは、図５のフローチャートに従って、例えば４ｍｓｅｃ毎の割込み処理により実行される。本ルーチンの処理が開始されると、まず、ステップ１０１で、フィードバック実行条件が成立しているか否かを判定する。ここで、フィードバック実行条件としては、（１）エンジン始動時でないこと、（２）燃料カット中でないこと、（３）冷却水温ＴＨＷ≧４０℃であること、（４）燃料噴射量ＴＡＵ＞ＴＡＵｍｉｎであること（但しＴＡＵｍｉｎは燃料噴射弁１６の最小燃料噴射量）、（５）排出ガスの酸素濃度を検出する酸素センサ（図示せず）が活性状態であること等があり、これら（１）〜（５）の条件を全て満たす場合に、フィードバック実行条件が成立し、１つでも満たさない条件があれば、フィードバック実行条件が不成立となる。もし、フィードバック実行条件が不成立であれば、ステップ１０２に進み、空燃比補正係数ＦＡＦ（空燃比フィードバック補正量に相当）を「１．０」に設定して本ルーチンを終了する。
【００２０】
一方、フィードバック実行条件が成立している場合には、ステップ１０３に進み、酸素センサの出力を所定の判定レベルと比較して、それぞれ所定時間Ｈ，Ｉ（ｍｓｅｃ）だけ遅らせて空燃比フラグＸＯＸＲを操作する。具体的には、酸素センサ出力がリッチからリーンに反転してからＨ（ｍｓｅｃ）後にＸＯＸＲ＝０（リーンを意味）にセットし、酸素センサ出力がリーンからリッチに反転してからＩ（ｍｓｅｃ）後にＸＯＸＲ＝１（リッチを意味）にセットする。
【００２１】
次のステップ１０４で、上記空燃比フラグＸＯＸＲに基づいて空燃比補正係数ＦＡＦの値を次のように操作する。即ち、空燃比フラグＸＯＸＲが「０」→「１」または「１」→「０」に変化したときに、空燃比補正係数ＦＡＦの値を所定量スキップさせ、空燃比ＸＯＸＲが「１」または「０」を継続しているときに、空燃比補正係数ＦＡＦの積分制御を行なう。この後、ステップ１０５で、空燃比補正係数ＦＡＦの値の上下限チェック（ガード処理）を行い、続くステップ１０６で、空燃比補正係数ＦＡＦを基に、スキップ毎又は所定時間毎になまし（平均化）処理を行なって空燃比補正係数のなまし値ＦＡＦＡＶを算出し、本ルーチンを終了する。
【００２２】
［パージ率制御］
パージ率制御は、図６のフローチャートに従って例えば３２ｍｓｅｃ毎の割込み処理により実行される。処理が開始されると、まず、ステップ２０１で冷却水温ＴＨＷが８０℃以上であるか否かを判定すると共に、ステップ２０２で空燃比フィードバック中であるか否かを判定する。このとき、エンジン暖機後（ＴＨＷ≧８０℃）で且つ通常の空燃比フィードバックが実行されていれば（図４のステップ１０１の条件成立時）、ステップ２０１，２０２が共に「Ｙｅｓ」と判定され、ステップ２０５に進む。
【００２３】
このステップ２０５で、パージ実施フラグＸＰＲＧに「１」をセットした後、ステップ２０６〜２０９で、最終パージ率ＰＧＲ（吸入空気量に対するパージ流量の比率）を次のようにして演算する。まず、ステップ２０６で、吸気管圧力ＰＭとエンジン回転数ＮＥに基づいて図７の二次元マップから全開パージ率ＰＧＲＭＸを読み込む。次のステップ２０７で、目標ＴＡＵ補正量ＫＴＰＲＧをエバポガス濃度平均値ＦＧＰＧＡＶで除算して目標パージ率ＰＧＲＯを算出する（ＰＧＲＯ＝ＫＴＰＲＧ／ＦＧＰＧＡＶ）。
【００２４】
ここで、目標ＴＡＵ補正量ＫＴＰＲＧとは、燃料噴射量ＴＡＵを減量補正する際における最大補正量に相当する。また、エバポガス濃度平均値ＦＧＰＧＡＶは、キャニスタ２３内のエバポガス吸着量に対応しており、後述の処理によって推定され、随時更新されつつＲＡＭ４２に書き込まれている。従って、目標パージ率ＰＧＲＯは、目標ＴＡＵ補正量ＫＴＰＲＧまで一杯に燃料噴射量を減量することを想定したとき、どれだけのエバポガスをパージによって補充したらよいかに対応する。この場合、同じ運転状態であれば、目標パージ率ＰＧＲＯはエバポガス濃度平均値ＦＧＰＧＡＶが大きいほど小さな値となる。尚、本実施形態では、目標ＴＡＵ補正量ＫＴＰＲＧを例えば３０％に設定している。
【００２５】
目標パージ率ＰＧＲＯの算出後、ステップ２０８で、パージ率徐変値ＰＧＲＤを読み込む。ここで、パージ率徐変値ＰＧＲＤとは、パージ率をいきなり大きく変更すると、補正が追いつかず最適な空燃比を保てなくなってしまうため、これを避けるために設けられた制御値である。このパージ率徐変値ＰＧＲＤの設定方法は後述するパージ率徐変制御にて説明する。
【００２６】
このようにして全開パージ率ＰＧＲＭＸ、目標パージ率ＰＧＲＯ、パージ率徐変値ＰＧＲＤが求められたら、ステップ２０９に進み、これらのうちで最小値を最終パージ率ＰＧＲとして決定する。この最終パージ率ＰＧＲにてパージ制御が実施される。この場合、通常はパージ率徐変値ＰＧＲＤにて最終パージ率ＰＧＲが制御され、このパージ率徐変値ＰＧＲＤが増え続ければ、最終パージ率ＰＧＲは全開パージ率ＰＧＲＭＸ又は目標パージ率ＰＧＲＯによって上限ガードされることになる。
【００２７】
一方、前記ステップ２０１でＴＨＷ＜８０℃のとき、或は、ステップ２０２で空燃比フィードバック中でないときには、ステップ２１０に進み、パージ実施フラグＸＰＲＦを「０」にクリアすると共に、続くステップ２１１で、最終パージ率ＰＧＲを「０」にリセットして、本ルーチンを終了する。この最終パージ率ＰＧＲが「０」とということは、エバポガスパージを実施しないことを意味する。つまり、エンジン１１の暖機前等、冷却水温が低い場合（ＴＨＷ＜８０℃）には水温補正によってパージ以外の燃料増量が実施され、パージ率制御は実行されない。
【００２８】
［パージ率徐変制御］
パージ率徐変制御は、図８のフローチャートに従って例えば３２ｍｓｅｃ毎の割込み処理により実行される。処理が開始されると、まずステップ３０１で、パージ実施フラグＸＰＲＧが「１」であるか否かを判定し、ＸＰＲＧ＝０の場合、つまりパージ率制御が実行されない場合には、ステップ３０６に進み、パージ率徐変値ＰＧＲＤを「０」として本ルーチンを終了する。
【００２９】
一方、ＸＰＲＧ＝１の場合には、ステップ３０２に進み、空燃比補正係数ＦＡＦのズレ量｜１−ＦＡＦＡＶ｜を検出する。このとき、｜１−ＦＡＦＡＶ｜≦５％であれば、ステップ３０３に進み、前回の最終パージ率ＰＦＲ(i-1) に「０．１％」加算した値を今回のパージ率徐変値ＰＦＲＤとする。また、５％＜｜１−ＦＡＦＡＶ｜≦１０％であれば、ステップ３０４に進んで、前回の最終パージ率ＰＧＲ(i-1) を今回のパージ率徐変値ＰＧＲＤとする。｜１−ＦＡＦＡＶ｜＞１０％であれば、ステップ３０５に進んで、前回の最終パージ率ＰＧＲ(i-1) から「０．１％」減算した値を今回のパージ率徐変値ＰＧＲＤとする。パージ率を大きく変更すると補正が追いつかず、最適な空燃比を保てなくなってしまうため、パージ率徐変値ＰＧＲＤによってこの様な問題を避けることは前述した通りである。
【００３０】
［エバポガス濃度検出］
エバポガス濃度検出は、図９のフローチャートに従って例えば４ｍｓｅｃ毎の割込み処理により実行される。処理が開始されると、まずステップ４０１で、キースイッチ投入時であるか否かを判定する。キースイッチ投入時であれば、ステップ４１２〜４１４で各データを初期化し、エバポガス濃度ＦＧＰＧ＝１．０、エバポガス濃度平均値ＦＧＰＧＡＶ＝１．０、初回濃度検出終了フラグＸＮＦＧＰＧ＝０にリセットする。ここで、エバポガス濃度ＦＧＰＧ＝１．０，エバポガス濃度平均値ＦＧＰＧＡＶ＝１．０は、エバポガス濃度が「０」であること（換言すればキャニスタ２３にエバポガスが全く吸着されていないこと）を意味する。エンジン始動時には初期化により吸着量が「０」に仮定される。初回濃度検出終了フラグＸＮＦＧＰＧ＝０は、エンジン始動後に未だエバポガス濃度が検出されていないことを意味する。
【００３１】
キースイッチ投入後は、ステップ４０２に進み、パージ実施フラグＸＰＲＧが「１」であるか否か、即ちパージ制御が開始されているか否かを判定する。ここで、ＸＰＲＧ＝０（パージ制御開始前）の場合には、そのまま本ルーチンを終了する。一方、ＸＰＲＧ＝１（パージ制御開始後）の場合には、ステップ４０３に進み、車両が加減速中であるか否かを判定する。ここで、加減速中であるか否かの判定は、アイドルスイッチ４６のオフ、スロットルバルブ１４の弁開度変化、吸気管圧力変化、車速変化等の検出結果によって行われる。そして、加減速中であると判定されると、そのまま本ルーチンを終了する。つまり、加減速中（エンジン運転の過渡状態）ではエバポガス濃度検出が禁止され、誤検出防止が図られる。
【００３２】
また、上記ステップ４０３で、加減速中でないと判定されると、ステップ４０４に進み、初回濃度検出終了フラグＸＮＦＰＧが「１」であるか否か、即ちエバポガス濃度の初回検出が終了しているか否かを判定する。ここで、ＸＮＦＧＰＧ＝１（初回濃度検出後）であれば、ステップ４０５に進み、ＸＮＦＰＧ＝０（初回濃度検出前）であればステップ４０５を飛び越してステップ４０６に進む。
【００３３】
最初は、エバポガス濃度検出が終了していないので（ＸＮＦＧＰＧ＝０）、ステップ４０４からステップ４０６に進み、空燃比補正係数のなまし値ＦＡＦＡＶが基準値（＝１）に対して所定値ω（例えば２％）以上の偏差を有するか否かを判定する。つまり、エバポガスパージによる空燃比のズレ量が小さすぎるとエバポガス濃度が正しく検出できない。そのため、空燃比のズレ量が小さければ（｜１−ＦＡＦＡＶ｜≦ω）、そのまま本ルーチンを終了する。また、空燃比のズレ量が大きければ（｜１−ＦＡＦＡＶ｜＞ω）、ステップ４０７に進み、次の（１）式によりエバポガス濃度ＦＧＰＧを検出する。
【００３４】
ＦＧＰＧ＝ＦＧＰＧ(i-1) ＋（ＦＡＦＡＶ−１）／ＰＧＲ  ……（１）
上式において、（ＦＡＦＡＶ−１）は空燃比フィードバック補正量偏差に相当し、ＰＧＲは、図６のステップ２０９で算出された最終パージ率である。
【００３５】
前述のごとくエバポガス濃度ＦＧＰＧの初期値は「１」であり、上式により、空燃比がリッチ寄りかまたはリーン寄りかに応じてエバポガス濃度ＦＧＰＧが徐々に更新される。この場合、実際のエバポガス濃度が高いほど（キャニスタ２３の吸着量が多いほど）、エバポガス濃度ＦＧＰＧの値は「１」を基準に減じられる。また、エバポガス濃度ＦＧＰＧの値は、実際のエバポガス濃度の低下分（キャニスタ２３のパージ量）に応じて増加させられる。具体的には、空燃比がリッチであれば（ＦＡＦＡＶ−１＜０）、エバポガス濃度ＦＧＰＧの値は、「ＦＡＦＡＶ−１」を最終パージ率ＰＧＲで除算した値だけ小さくなる。また、空燃比がリーンであれば（ＦＡＦＡＶ−１＞０）、エバポガス濃度ＦＧＰＧの値は、「ＦＡＦＡＶ−１」を最終パージ率ＰＧＲで除算した値だけ大きくなる。
【００３６】
その後、ステップ４０８に進み、初回濃度検出終了フラグＸＮＦＧＰＧが初回濃度検出終了を意味する「１」であるか否かを判定する。ここで、ＸＮＦＧＰＧ＝０（初回濃度検出前）であれば、ステップ４０９に進み、エバポガス濃度ＦＧＰＧの前回検出値と今回検出値との変化が所定値（例えば３％）以下の状態が例えば３回以上継続したか否かによって、エバポガス濃度ＦＧＰＧが安定したか否かを判定する。エバポガス濃度ＦＧＰＧが安定すると、次のステップ４１０に進み、初回濃度検出終了フラグＸＮＦＧＰＧに「１」をセットした後、ステップ４１１に進む。
【００３７】
一方、上記ステップ４０８で、ＸＮＦＧＰＧ＝１の場合、又はステップ４０９でエバポガス濃度ＦＧＰＧが安定していないと判定された場合、ステップ４１１へジャンプし、今回のエバポガス濃度ＦＧＰＧを平均化するために、所定のなまし演算（例えば１／６４なまし演算）を実行し、エバポガス濃度平均値ＦＧＰＧＡＶを求める。
【００３８】
このようにして初回濃度検出が終了すると（ＸＮＦＧＰＧ＝１がセットされると）、ステップ４０４が常に「Ｙｅｓ」と判定され、ステップ４０５に進んで、最終パージ率ＰＧＲが所定値β（例えば０％）を越えるか否かを判定する。そして、ＰＧＲ＞βの場合のみ、ステップ４０６以降のエバポガス濃度検出を実行する。つまり、パージ実施フラグＸＰＲＧがセットされていても最終パージ率ＰＧＲが「０」となり、実際にはエバポパージが実施されていないことがある。そのため、初回濃度検出時以外は、最終パージ率ＰＧＲ＝０の場合にエバポガス濃度の検出を行なわないようにしている。
【００３９】
尚、最終パージ率ＰＧＲが小さい場合、即ちパージ制御弁３１が低流量側で制御されている場合は開度制御の精度が比較的低く、エバポガス濃度検出の信頼性が低い。そこで、ステップ４０５の所定値βをパージ制御弁３１の低開度域に設定し（例えば０％＜β＜２％）、初回検出時以外は、精度の良い検出条件が揃った場合のみ、エバポガス濃度検出を行うようにしても良い。
【００４０】
［燃料噴射量制御］
燃料噴射量制御は、図１０のフローチャートに従って例えば４ｍｓｅｃ毎の割込み処理により実行される。処理が開始されると、まずステップ５０１で、燃料カットフラグＸＦＣが燃料カット不実行を意味する「０」であるか否かを判定し、ＸＦＣ＝１（燃料カット実行）であれば、ステップ５０６に進んで、燃料噴射量ＴＡＵを「０」にして本ルーチンを終了する。これにより、燃料カットが実行される。
【００４１】
一方、ＸＦＣ＝０（燃料カット不実行）であれば、ステップ５０２に進み、ＲＯＭ４１内にマップとして格納されているデータに基づき、エンジン回転数ＮＥと負荷（例えば吸気管圧力ＰＭ）に応じた基本噴射量ＴＰを演算する。そして、次のステップ５０３で、エンジン１１の運転状態に関する各種補正（冷却水温補正、始動後補正、吸気温補正等）を行なう。この後、ステップ５０４で、図９のルーチンで演算したエバポガス濃度平均値ＦＧＰＧＡＶと図６のルーチンで演算した最終パージ率ＰＧＲとに応じてパージ補正係数ＦＰＧを次の（２）式により算出する。
【００４２】
ＦＰＧ＝（ＦＧＰＧＡＶ−１）・ＰＧＲ        ……（２）
このパージ補正係数ＦＰＧは、パージ率制御処理によって決定された条件でパージを実行することによって補充される燃料量を意味し、この係数の相当量が基本噴射量ＴＰから減量補正されることになる。
【００４３】
その後、ステップ５０５で、空燃比補正係数ＦＡＦ、パージ補正係数ＦＰＧ及び空燃比学習値ＫＧｊから次の（３）式により補正係数Ｋｍを求め、この補正係数Ｋｍを基本噴射量ＴＰに乗算して燃料噴射量ＴＡＵに反映させる。
Ｋｍ＝１＋（ＦＡＦ−１）＋（ＫＧｊ−１）＋ＦＰＧ      ……（３）
【００４４】
尚、空燃比学習値ＫＧｊはバックアップＲＡＭ（図示せず）に記憶保持されるバックアップデータであり、各エンジン運転領域毎に設定される係数である。そして、ＣＰＵ４０は、所定の燃料噴射タイミングで燃料噴射量ＴＡＵに基づいて燃料噴射弁１６による燃料噴射を実行する。
【００４５】
［パージ制御弁の制御］
パージ制御弁３１の制御は、図１１のフローチャートに従って例えば１００ｍｓｅｃ毎に割込み処理により実行される。処理が開始されると、まずステップ６０１で、パージ実施フラグＸＰＲＧがパージ実施を意味する「１」であるか否かを判定し、ＸＰＲＧ＝０（パージ不実施）であれば、ステップ６０２に進み、パージ制御弁３１を駆動させるための制御値Ｄｕｔｙを「０」とする。また、ＸＰＲＧ＝１（パージ実施）であれば、ステップ６０３に進み、最終パージ率ＰＧＲ及びその時点での運転状態に見合った全開パージ率ＰＧＲＭＸに基づき、次の（４）式により制御値Ｄｕｔｙを算出する。
Ｄｕｔｙ＝（ＰＧＲ／ＰＧＲＭＸ）・（１００−Ｐｖ）・Ｐｐａ＋Ｐｖ……（４）
【００４６】
この式で、パージ制御弁３１の駆動周期は１００ｍｓｅｃに設定されている。また、Ｐｖはバッテリ電圧の変動に対する電圧補正値（駆動周期補正用の時間相当量）であり、Ｐｐａは大気圧の変動に対する大気圧補正値である。上記（４）式で算出された制御値Ｄｕｔｙに基づき、パージ制御弁３１の駆動パルス信号のデューティ比が設定される。
【００４７】
［異常診断］
エバポガスパージシステム２１の異常診断は、キースイッチ（図示せず）が投入されると、図１２及び図１３のフローチャートに従って所定時間毎（例えば２５６ｍｓｅｃ毎）に繰り返し実行される。この異常診断ルーチンが特許請求の範囲でいう異常診断手段としての役割を果たす。
【００４８】
本ルーチンの処理が開始されると、まず図１２のステップ７０１で、実行条件が成立しているか否かを判定する。ここで、実行条件はエンジン運転状態が安定しているときに成立し、具体的には、吸入空気量＝５．０〜４０ｇ／ｓ、吸気温＝−１０〜７０℃、始動時冷却水温＝−７．５〜３５℃、始動時吸気温＝−１０〜７０℃、始動後７００秒以上経過、バッテリ電圧１０Ｖ以上、空燃比フィードバック実行中であることが実行条件となり、これらの条件を全て満たすときに実行条件が成立し、ステップ７０２に進むが、実行条件が不成立のときには、異常診断を禁止し、図１３のステップ７４０に進んで、キャニスタ閉塞弁２６を全開し、続くステップ７４１で、パージ制御弁３１を通常の制御状態にした後、ステップ７３１に進み、第１〜第４の各フラグＦ１，Ｆ２，Ｆ３，Ｆ４を「０」にリセットして本ルーチンを終了する。
【００４９】
一方、実行条件が成立している場合には、図１２のステップ７０１からステップ７０２に進み、禁止条件が不成立か否かを判定する。ここで、禁止条件としては、失火発生時、運転状態検出手段の故障時（例えば燃料レベルゲージ故障時、車速センサ４７の故障時、燃料タンク内圧センサ故障時、エアフローセンサ故障時、吸気管圧力センサ５０の故障時、回転センサ故障時、スロットルセンサ４５の故障時、大気圧センサ４８の故障時、酸素センサ故障時、吸気温センサ５１の故障時、冷却水温センサ５０の故障時）、燃料供給系故障時、点火系故障時、キャニスタ閉塞弁２６の故障時、酸素センサヒータ故障時があり、これらのうちのいずれか１つでも該当すれば禁止条件が成立し、全て該当しなければ、禁止条件が不成立となる。禁止条件が成立すれば、前述した実行条件が不成立の場合と同じく、異常診断を禁止し、キャニスタ閉塞弁２６を全開して（ステップ７４０）、パージ制御弁３１を通常の制御状態にし（ステップ７４１）、第１〜第４の各フラグＦ１，Ｆ２，Ｆ３，Ｆ４を「０」にリセットして（ステップ７３１）、本ルーチンを終了する。
【００５０】
一方、禁止条件が不成立の場合には、ステップ７０３に進み、エバポガス濃度変化量ΔＦＧＰＧが判定値ＫＦＬＧＡ以下、且つ、エバポガス濃度ＦＧＰＧが判定値ＫＦＬＧＢ以下であるか否かによって、エバポガス発生量（キャニスタ２３内のエバポガス吸着量）が少ないか否かを判定する。ここで、エバポガス濃度変化量ΔＦＧＰＧは、異常診断を行う前のパージ実行中に測定する。パージ開始直後は、暫くエバポガスの発生状態が不安定で、エバポガス濃度がばらつくため、図１４に示すように、パージ開始後、エバポガス濃度が安定するのに必要な所定時間Ｔ1 が経過してから、エバポガス濃度の測定を開始し、所定時間Ｔ2 に変化したエバポガス濃度の変化量ΔＦＧＰＧを測定する。つまり、パージ開始から所定時間Ｔ1 経過後のエバポガス濃度ＦＧＰＧ(T1)を検出し、更に、それから所定時間Ｔ2 経過後のエバポガス濃度ＦＧＰＧ(T2)を検出し、これらの検出値ＦＧＰＧ(T1)とＦＧＰＧ(T2)の差分をエバポガス濃度の変化量ΔＦＧＰＧとする。或は、ＦＧＰＧ(T1)とＦＧＰＧ(T2)の差分をＦＧＰＧ(T1)又はＦＧＰＧ(T2)で割り算した値（又はその逆数）をエバポガス濃度変化量ΔＦＧＰＧとしても良い。
【００５１】
また、上記ステップ７０３の判定で用いる判定値ＫＦＬＧＡ，ＫＦＬＧＢは、予め設定した一定値でも良いが、本実施形態では、図１５に示す（ａ）又は（ｂ）のマップを用いて、現在の冷却水温又はパージ実行積算時間に応じてマップより判定値ＫＦＬＧＡ，ＫＦＬＧＢを設定する。この機能が特許請求の範囲でいう設定値設定手段に相当する。
【００５２】
尚、判定値ＫＦＬＧＡ，ＫＦＬＧＢを始動後の経過時間に基づいて設定しても良いし、冷却水温、パージ実行積算時間、始動後の経過時間の中から２以上のデータを用いて判定値ＫＦＬＧＡ，ＫＦＬＧＢを設定するようにしても良い。また、冷却水温に応じて判定値ＫＦＬＧＡ，ＫＦＬＧＢを設定する場合は、始動時の冷却水温に応じて設定した判定値ＫＦＬＧＡ，ＫＦＬＧＢを、始動完了後もそのまま変更せずに用いるようにしても良い。上記ステップ７０３の処理は、特許請求の範囲でいう実行条件判定手段としての役割を果たす。
【００５３】
上記ステップ７０３の判定が「Ｎｏ」の場合、つまりエバポガス発生量が多いと推定される場合には、異常診断を禁止し、キャニスタ閉塞弁２６を全開して（ステップ７４０）、パージ制御弁３１を通常の制御状態にし（ステップ７４１）、第１〜第４の各フラグＦ１，Ｆ２，Ｆ３，Ｆ４を「０」にリセットして（ステップ７３１）、本ルーチンを終了する。
【００５４】
一方、ステップ７０３の判定が「Ｙｅｓ」の場合、つまりエバポガス発生量が少ないと推定される場合には、ステップ７０４に進み、第４のフラグＦ４が「１」か否かを判定し、Ｆ４＝０の場合には、ステップ７０５に進み、大気圧Ｐa1を読み込み、続くステップ７０６で、第４のフラグＦ４を「１」にセットしてステップ７０７に進む。
【００５５】
尚、上記ステップ７０４で、Ｆ４＝１の場合には既に１回目の大気圧Ｐa1の読み込みが終了しているので、ステップ７０７へジャンプし、２回目の大気圧Ｐa2を読み込む。次のステップ７０８で、大気圧変化ΔＰa （＝Ｐa2−Ｐa1）を算出した後、ステップ７０９に進み、大気圧変化ΔＰa の絶対値が所定値（例えば３ｍｍＨｇ）以上であるか否かを判定する。もし、｜ΔＰa ｜≧３ｍｍＨｇであれば、異常診断を禁止し、キャニスタ閉塞弁２６を全開して（ステップ７４０）、パージ制御弁３１を通常の制御状態にし（ステップ７４１）、第１〜第４の各フラグＦ１，Ｆ２，Ｆ３，Ｆ４を「０」にリセットして（ステップ７３１）、本ルーチンを終了する。
【００５６】
一方、｜ΔＰa ｜＜３ｍｍＨｇの場合には、ステップ７１０〜７１２に進み、現在の処理がどの段階まで進んでいるか否かを判定しつつ、種々のステップへ分岐する。処理は第１〜第４段階の４つであり、第１〜第３フラグＦ１〜Ｆ３の各設定状態から処理段階を判断できるようになっている。全てのフラグＦ１〜Ｆ３が「０」に設定されているとき、即ちステップ７１０〜７１２が全て「Ｎｏ」のときが第１段階であり、ステップ７１３に進む。
【００５７】
第１段階では、まずステップ７１３で、パージ制御弁３１を全閉にした後、ステップ７１４で、キャニスタ閉塞弁２６を全閉にして燃料タンク１７から吸気管１２までのパージ経路を密閉状態にする。即ち、図１６に示すように、まずキャニスタ閉塞弁２６が開放状態のときに時刻Ｔ１でパージ制御弁３１を全閉にすることで、燃料タンク１７からパージ制御弁３１までのエバポガスパージ系を大気連通管２５を介して大気圧と同じ圧力に保ち、やや遅れて時刻Ｔ２でキャニスタ閉塞弁２６を全閉にすることで、大気圧に保たれたエバポガスパージ系を形成するのである。
【００５８】
そして、次のステップ７１５で、図１６の時刻Ｔ２での燃料タンク内圧Ｐ1aを読み込み、タイマＴをリセットスタートさせた後、ステップ７１６に進み、タイマＴのカウント値が１０秒以上になったか否かを判定する。１０秒経過前であれば、ステップ７１７に進み、第１フラグＦ１を「１」にセットして本ルーチンを終了する。
【００５９】
これ以後、第２段階の処理となる。この第２段階では、ステップ７１０で「Ｙｅｓ」と判定されるようになり、ステップ７０１〜７１０→ステップ７１６→……と処理を繰り返す。この間、圧力センサ２０の検出値は、図１６の時刻Ｔ２から時刻Ｔ３の間において、燃料タンク１７内でのエバポガスの発生量に応じて０ｍｍＨｇから上昇する。
【００６０】
その後、時刻Ｔ２（Ｐ1aの検出時点）から１０秒が経過すると、図１３のステップ７１８に進み、圧力センサ２０からの入力信号を読み込んで、このときの燃料タンク内圧Ｐ1bを記憶し、続くステップ７１９で、１０秒間の圧力変化量ΔＰ１を算出した後、ステップ７２０で、第１フラグＦ１をリセットする。これによって第２段階の処理が終了し、第３段階へ移る。
【００６１】
この第３段階では、まずステップ７２１で、パージ制御弁３１を全閉から全開状態に切り換えると共にタイマＴをリセットスタートする。ここで、パージ制御弁３１が全開されることにより、それ以前の大気圧導入下のエバポガスパージ系内に吸気管負圧を導入し始める（図１６の時刻Ｔ３）。従って、エバポガスパージ系に圧力漏れ等による異常がなければ、圧力センサ２０の検出値は下降し始める。
【００６２】
次のステップ７２２では、この圧力センサ２０からの入力信号に基づいて燃料タンク内圧ＰＴが−２０ｍｍＨｇ以下になったか否かを判定し、ＰＴ＞−２０ｍｍＨｇであれば、ステップ７３２に進み、パージ制御弁３１の全開後１０秒が経過したか否かを判定する。１０秒経過前であれば、ステップ７３７に進み、第２のフラグＦ２を「１」にセットする。この後、ステップ７３８で、空燃比補正係数ＦＡＦが±２０％以内であるか否かを判定し、ＦＡＦが±２０％以内であれば、ステップ７３９に進んで、大気圧Ｐａと吸気管圧力ＰＭとの差圧が所定値（例えば１５０ｍｍＨｇ）以上であるか否かを判定する。
【００６３】
これらステップ７３８，７３９のいずれかが「Ｎｏ」と判定された場合、つまり空燃比補正係数ＦＡＦが±２０％を越えたとき、又は吸気管圧力ＰＭとの差圧が所定値（例えば１５０ｍｍＨｇ）未満のときには、異常診断を禁止し、キャニスタ閉塞弁２６を全開して（ステップ７４０）、パージ制御弁３１を通常の制御状態にし（ステップ７４１）、第１〜第４の各フラグＦ１，Ｆ２，Ｆ３，Ｆ４を「０」にリセットして（ステップ７３１）、本ルーチンを終了する。一方、ステップ７３８，７３９の判定が共に「Ｙｅｓ」の場合には、そのまま本ルーチンを終了する。
【００６４】
この場合、ステップ７３７で、第２のフラグＦ２が「１」にセットされることで、次回以降の本ルーチン実行時には、ステップ７１０で「Ｎｏ」、ステップ７１１で「Ｙｅｓ」と判定されるようになり、ステップ７０１〜７１１→ステップ７２２→……と処理を繰り返す。この状態は、ステップ７２２またはステップ７３２が「Ｙｅｓ」となると終了する。ステップ７３２の方が先に「Ｙｅｓ」となった場合には、燃料タンク１７から吸気管１２までのパージ経路のどこかに閉塞部分があることを意味し、ステップ７３３で、パージ系詰りフラグＦclose を「１」に設定し、続くステップ７３４で、警告ランプ５３を点灯する。
【００６５】
一方、ステップ７２２の方が先に「Ｙｅｓ」となった場合には、ステップ７２３に進んで、第２のフラグＦ２をリセットし、続くステップ７２４で、パージ制御弁３１を再び全閉にした後、ステップ７２５で、圧力センサ２０からの入力信号を読み込んで、エバポガスパージ系を負圧密閉状態にした直後の燃料タンク内圧Ｐ2aを記憶すると共にタイマＴをリセットスタートする。これによって、第３段階から第４段階に移行する。
【００６６】
上記ステップ７２３〜７２５の処理が実行されることにより、図１６に示すように、時刻Ｔ４で密閉パージ経路内は−２０ｍｍＨｇの負圧状態に調整された状態となる。これ以後、圧力センサ２０の検出値は、時刻Ｔ４から時刻Ｔ５の間で燃料タンク１７内でのエバポガスの発生量に応じて−２０ｍｍＨｇから上昇していくことになる。
【００６７】
そして、次のステップ７２６で、Ｐ2aの読み込み後、１０秒が経過したか否かを判定し、１０秒経過前は、ステップ７３５に進み、第３のフラグＦ３を「１」に設定して本ルーチンを終了する。これにより、次回以降の本ルーチン実行時には、ステップ７１０，７１１で「Ｎｏ」、ステップ７１２で「Ｙｅｓ」と判定されるようになり、ステップ７０１〜７１２→ステップ７２６→……と処理を繰り返す。
【００６８】
この後、Ｐ2aの読み込みから１０秒が経過すると、ステップ７２８に進み、圧力センサ２０からの入力信号を読み込んで、時刻Ｔ６での燃料タンク内圧Ｐ2bを記憶し、密閉後１０秒間の圧力変化量ΔＰ2 （＝Ｐ2b−Ｐ2a）を計算する。この後、ステップ７３０で、次の（５）式で示されたリーク判定条件に基づいてリークがあるか否かを判定する。
ΔＰ2 ＞α・ΔＰ1 ・ＢＡ＋β      ……（５）
【００６９】
ここで、αは大気圧と負圧の違いによる燃料蒸発量の差を補正する係数、βは圧力センサ２０の検出精度、キャニスタ閉塞弁２６の圧力漏れなどを補正する係数である。ＢＡは、大気圧下の圧力変化量ΔＰ1 をエバポガス濃度に応じて補正するための補正係数であり、例えば、図１７に示すマップより、エバポガス濃度に応じて設定される。この機能が特許請求の範囲でいう検出値補正手段に相当する。尚、上記（５）式では、大気圧からの圧力変化量ΔＰ1 をエバポガス濃度に応じて補正するようにしたが、負圧からの圧力変化量ΔＰ2 をエバポガス濃度に応じて補正するようにしても良い。
【００７０】
また、上記（５）式に代えて、次の（６）式で示されたリーク判定条件に基づいてリークがあるか否かを判定するようにしても良い。
ΔＰ2 ＞α・ΔＰ1 ＋β＋ＢＢ      ……（６）
ここで、ＢＢは、大気圧からの圧力変化量ΔＰ1 をエバポガス濃度に応じて補正するための補正係数であり、例えば、図１７に示すマップより、エバポガス濃度に応じて設定される。
【００７１】
尚、図１７のマップでは、エバポガス濃度に応じて補正係数ＢＡ，ＢＢを設定するようにしたが、エバポガス濃度の変化量に応じて補正係数ＢＡ，ＢＢを設定するようにしても良く、また、エバポガス濃度とエバポガス濃度変化量の両方に基づいて補正係数ＢＡ，ＢＢを設定するようにしても良い。更に、補正係数ＢＡ，ＢＢに吸気温による補正を加えても良い。
【００７２】
上述したステップ７３０で、上記（５）式又は（６）式を満たせば、「リーク有り」と判定される。即ち、燃料タンク１７からパージ制御弁３１までのエバポガスパージ系にリーク原因があるならば、正圧下ではエバポガスパージ系から大気中への流出が起こる一方、負圧下では大気中からエバポガスパージ系への空気の流入が起こる。従って、「（大気圧からの圧力変化量ΔＰ1 ）＝（燃料タンク１７からのエバポガスの発生量）−（エバポガスパージ系から大気中への流出量）」よりも「（負圧からの圧力変化量ΔＰ2 ）＝（燃料タンク１７からのエバポガスの発生量）＋（大気中からエバポガスパージ系への流入量）」の方が大きくなる。この関係から、上記（５）式又は（６）式のリーク判定条件が導き出されている。
【００７３】
上記（５）式又は（６）式のリーク判定条件を満足する場合、つまりステップ７３０で「リーク有り」と判定された場合には、燃料タンク１７から吸気管１２までのパージ経路のどこかにリーク原因となる部分があることを意味し、ステップ７３６で、パージ経路リークフラグＦleakを「１」に設定し、続くステップ７３４で、警告ランプ５３を点灯する。一方、ステップ７３０で「ＮＯ」と判定された場合、つまりリークが発生していない場合には、ステップ７３１に進み、第１〜第４の各フラグＦ１〜Ｆ４を強制的にリセットして本ルーチンを終了する。
【００７４】
以上説明した異常診断処理によって検出できる各種異常の態様を示すと以下の様になる。
【００７５】
ケース▲１▼：連通管２２又はパージ通路３０ａにおける損傷、脱落
負圧下では損傷、脱落部からの大気の流入があり、正圧下では大気中への流出があるから、ステップ７３０で「リーク有り」と判定され、異常を報知することができる。
【００７６】
ケース▲２▼：連通管２２又はパージ通路３０ａにおける折れ曲がり、潰れ等
負圧を導入しても圧力が下がらないか、或は圧力が下がるのが遅いため、ステップ７２２で「Ｎｏ」、ステップ７３２で「Ｙｅｓ」となり、異常を報知することができる。
【００７７】
ケース▲３▼：パージ制御弁３１の開放不能
負圧を導入することができず、ケース▲２▼と同様に、ステップ７２２で「Ｎｏ」、ステップ７３２で「Ｙｅｓ」となり、異常を報知することができる。このパージ制御弁３１が開放不能になると、キャニスタ２３内の吸着体２４に吸着したエバポガスを吸気管１２に導入できなくなり、その後、吸着体２４のエバポガス吸着能力を越え、大気連通管２５からエバポガスが放出されてしまう。
【００７８】
ケース▲４▼：パージ通路３０ｂの脱落
吸気管１２から負圧を導入することができず、ケース▲２▼、▲３▼と同様に、ステップ７２２で「Ｎｏ」、ステップ７３２で「Ｙｅｓ」となり、異常を報知することができる。尚、ケース▲４▼は閉塞ではなく脱落であるから、異常の種類としては間違いであるが、異常があることさえ的確に判定できれば異常診断の目的は十分に達成される。
【００７９】
ケース▲５▼：パージ通路３０ｂにおける折れ曲がり、潰れ等
これは、ケース▲２▼、▲３▼と全く同様であり、負圧導入状況に基づいてステップ７２２で「Ｎｏ」、ステップ７３２で「Ｙｅｓ」となり、異常を報知することができる。このケース▲５▼の状態も、ケース▲３▼と同様に、大気連通管２５からの燃料ガス放出のおそれがあり、検出の必要な異常である。
【００８０】
ケース▲６▼：キャニスタ２３の大気連通管２５の閉塞
この異常は、ゴムホースの潰れや折れ曲がりの如く直ちに大幅な圧力上昇を引き起こすという訳ではない。パージ通路３０の潰れ等の場合にはパージ制御弁３１を開放したとしてもエバポガスをパージすることができないが、キャニスタ２３の大気連通管２５が閉塞していても、パージ制御弁３１を開放したときにはエバポガスがそれなりにパージされるからである。このため、キャニスタ２３の大気連通管２５が閉塞したままの状態となる異常については、上述の異常診断ルーチンでは、検出できるようにはなっていないが大きな問題はない。必要ならば、上述の異常診断ルーチンのステップ７２８で、燃料タンク内圧Ｐ2bを検出したら直ちにキャニスタ閉塞弁２６を開放し、圧力が速やかに大気圧近傍に復帰しない場合には大気連通管２５の閉塞異常があると判定するようにすれば良い。
【００８１】
ケース▲７▼：パージ制御弁３１が閉鎖不能となる状態
この異常がある場合には、常時エバポガスが吸気管１２内へ導入されてしまうことになるが、開放不能の場合のように二次的に大気連通管２５からエバポガスの放出を招くということもなく、エバポガスの蒸散防止の観点からいえば異常としなくて良い。従って、上述の異常診断ルーチンでは、この異常については特に検出する手法を設けなかった。必要ならば、ステップ７１９にて算出したΔＰ1 が所定負圧以下となった場合は、パージ制御弁３１が閉鎖不能となっていると判定するようにすれば良い。
【００８２】
ケース▲８▼：パージ通路３０ｂに亀裂等の損傷がある状態
パージ通路３０ｂは、パージ制御弁３１が開放されたときのみエバポガスが通過する部分であるから、亀裂や孔があったとしても、これはキャニスタ２３の大気連通管２５と同様に作用するだけであり、エバポガス蒸散防止の観点からは特に異常とするまでもない。従って、上述の異常診断ルーチンではこれを検出できないものの何等問題はない。
【００８３】
以上説明した実施形態では、ステップ７０３で、エバポガス濃度変化量が判定値ＫＦＬＧＡ以下、且つ、エバポガス濃度が判定値ＫＦＬＧＢ以下であるか否かによって、エバポガス発生量が少ないか否かを判定し、それによって異常診断の実行／中止を判定するようにしたので、エバポガスの発生量が多いときに、エバポガスパージ系の異常診断を中止して、ドライバビリティや排気エミッションの悪化を防ぐことができ、それ以外のときに、異常診断を実行して、エバポガスパージ系の異常を早期検出することができる。
【００８４】
尚、ステップ７０３の判定を「エバポガス濃度変化量≦ＫＦＬＧＡ」のみに変更し、エバポガス濃度変化量≦ＫＦＬＧＡであるか否かによって異常診断の実行／中止を判定するようにしても良い。エバポガスの発生量が多くなると、エバポガス濃度の変化量が大きくなるため、エバポガス濃度の変化量からエバポガスの発生量を推定して異常診断の実行／中止を判定することが可能である。
【００８５】
また、ステップ７０３の判定を「エバポガス濃度変化量≦ＫＦＬＧＣ」に変更し、エバポガス濃度変化量≦ＫＦＬＧＣであるか否かによって異常診断の実行／中止を判定するようにしても良い。この場合、判定値ＫＦＬＧＣを図１８のマップ（ａ）又は（ｂ）により冷却水温又はパージ実行積算時間に応じて設定する。或は、判定値ＫＦＬＧＣを始動後の経過時間に基づいて設定しても良いし、冷却水温、パージ実行積算時間、始動後の経過時間の中から２以上のデータを用いて判定値ＫＦＬＧＣを設定するようにしても良い。
【００８６】
更に、この判定値ＫＦＬＧＣを吸気温による補正値ＫＦＬＧＫによって次式により補正するようにしても良い。
ＫＦＬＧＣ＝ＫＦＬＧＣ−ＫＦＬＧＫ
この吸気温による補正値ＫＦＬＧＫは、図１８のマップ（ｃ）により吸気温に応じて設定する。
【００８７】
尚、図１２及び図１３の異常診断ルーチンでは、ステップ７３０で、圧力変化量をエバポガス濃度（又はエバポガス濃度の変化量）に応じて補正するようにしたが、補正せずに、次式によってリークがあるか否かを判定するようにしても良い。
ΔＰ2 ＞α・ΔＰ1 ＋β
【図面の簡単な説明】
【図１】本発明の一実施形態を示すシステム全体の概略構成図
【図２】キャニスタ閉塞弁の断面図
【図３】パージ制御弁の断面図
【図４】パージ制御弁駆動デューティとパージ流量との関係を示す特性図
【図５】空燃比フィードバック制御ルーチンの処理の流れを示すフローチャート
【図６】パージ率制御ルーチンの処理の流れを示すフローチャート
【図７】全開パージ率マップの一例を示す図
【図８】パージ率徐変制御ルーチンの処理の流れを示すフローチャート
【図９】エバポガス濃度検出ルーチンの処理の流れを示すフローチャート
【図１０】燃料噴射量制御ルーチンの処理の流れを示すフローチャート
【図１１】パージ制御弁制御ルーチンの処理の流れを示すフローチャート
【図１２】異常診断ルーチンの処理の流れを示すフローチャート（その１）
【図１３】異常診断ルーチンの処理の流れを示すフローチャート（その２）
【図１４】エバポガス濃度変化量の測定方法を説明するタイムチャート
【図１５】（ａ）は冷却水温で判定値ＫＦＬＧＡを設定するマップを概念的に示す図、（ｂ）はパージ実行積算時間で判定値ＫＦＬＧＡを設定するマップを概念的に示す図
【図１６】異常診断時のパージ制御弁とキャニスタ閉塞弁との開閉と燃料タンク内圧の変化の関係を説明するタイムチャート
【図１７】エバポガス濃度で補正係数ＢＡ，ＢＢを設定するマップを概念的に示す図
【図１８】（ａ）は冷却水温で判定値ＫＦＬＧＣを設定するマップを概念的に示す図、（ｂ）はパージ実行積算時間で判定値ＫＦＬＧＣを設定するマップを概念的に示す図、（ｃ）は吸気温で補正値ＫＦＬＧＫを設定するマップを概念的に示す図
【符号の説明】
１１…エンジン（内燃機関）、１２…吸気管、１４…スロットルバルブ、１６…燃料噴射弁、１７…燃料タンク、１８…燃料ポンプ、２０…圧力センサ、２１…エバポガスパージシステム、２２…連通管、２３…キャニスタ、２４…吸着体、２６…キャニスタ閉塞弁、３０ａ，３０ｂ…パージ通路、３１…パージ制御弁、３９…制御回路（異常診断手段，実行条件判定手段，判定値設定手段，検出値補正手段）、４５…スロットルセンサ、４６…アイドルスイッチ、４７…車速センサ、４８…大気圧センサ、４９…吸気管圧力センサ、５０…冷却水温センサ、５１…吸気温センサ、５３…警告ランプ。
【図１】
0003937258.tif 000002
【図２】
0003937258.tif 000003
【図３】
0003937258.tif 000004
【図４】
0003937258.tif 000005
【図５】
0003937258.tif 000006
【図６】
0003937258.tif 000007
【図７】
0003937258.tif 000008
【図８】
0003937258.tif 000009
【図９】
0003937258.tif 000010
【図１０】
0003937258.tif 000011
【図１１】
0003937258.tif 000012
【図１２】
0003937258.tif 000013
【図１３】
0003937258.tif 000014
【図１４】
0003937258.tif 000015
【図１５】
0003937258.tif 000016
【図１６】
0003937258.tif 000017
【図１７】
0003937258.tif 000018
【図１８】
0003937258.tif 000019