(57)【特許請求の範囲】
【請求項１】
燃料タンク内に発生した蒸発燃料をパージ制御弁を介して吸気系にパージするパージ系を有する内燃機関の制御装置であって、
前記内燃機関の運転状態に基づいて該内燃機関に供給すべき要求燃料量を算出する燃料量算出手段と、
前記パージ系によって吸気系にパージされる蒸発燃料量を表す値を算出する算出手段と、
前記パージを開始した時から、前記要求燃料量を補正するためのパージ補正量を所定の初期値から前記算出手段により算出された値まで漸増する漸増手段と、
前記漸増手段により漸増された前記パージ補正量を前記要求燃料量から減量することにより、該要求燃料量を補正するパージ補正手段と、
前記パージ制御弁を開いて前記パージ系を負圧にした場合の圧力変化に基づいて該パージ系の異常の有無を判定する異常判定が実施されているかどうかを判断する判断手段と、を備え、
前記判断手段によって異常判定が実施されていると判断されたならば、前記パージ補正手段は、前記漸増手段による前記パージ補正量の漸増を禁止して、前記算出手段により算出された値を前記パージ補正量として前記要求燃料量から減量することにより、該要求燃料量を補正する、
内燃機関の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、蒸発燃料を吸気系にパージするパージ系にリークがあるかどうかを判定する内燃機関において、該リーク判定中における空燃比を適正化する制御装置に関する。
【０００２】
【従来の技術】
自動車の内燃機関には、燃料タンクから燃料噴射弁を介して燃料が供給される。一方、燃料タンク内で発生した蒸発燃料はキャニスタに吸着され、該キャニスタに吸着された蒸発燃料の一部は、パージ通路を介して内燃機関の吸気系にパージされる。パージ通路にはパージ制御弁が設けられている。運転状態に従って該パージ制御弁の開度を調節することにより、内燃機関に流入する蒸発燃料の量が制御される。
【０００３】
一般に、内燃機関においては空燃比のフィードバック制御が行われる。この空燃比フィードバック制御では、空燃比が目標空燃比になるよう燃料噴射量が算出され、該算出された燃料噴射量に従って燃料噴射弁が制御される。このような空燃比フィードバック制御において、蒸発燃料が内燃機関の吸気系にパージされると、空燃比に変動が生じる。そのため、内燃機関に供給される燃料に寄与する蒸発燃料量を燃料噴射量から減量するように、燃料噴射量を補正する技術が提案されている。
【０００４】
特開平７−２１７４７７号公報には、燃料噴射量に対する補正量を調整する方法が記載されている。燃料カット等によってパージ処理が停止している状況から、燃料の供給およびパージ処理が再開された時、空燃比に変動が生じることがある。この変動は、蒸発燃料が実際の燃料噴射に寄与するまでの遅れや、燃料噴射量が大きな補正量で補正されること等に起因する。この空燃比の変動を回避するため、補正量を、パージ処理が開始されたときから徐々に増やすようにする。
【０００５】
一方、燃料タンクから吸気系に至るパージ系の異常としてリーク（漏れ）を検出する技術が知られている。特開平９−２９１８５４号公報に記載されるリーク検出の方法では、パージ制御弁を開弁し、大気開放弁（ベントシャット弁）を閉弁することにより、パージ系を所定圧まで減圧する。パージ系を所定の負圧にした後、パージ制御弁を閉弁することにより、該パージ系を密閉状態にする。該パージ系を密閉状態にしてから所定期間の圧力変化に従って、該パージ系にリークがあるかどうかを判断する。
【０００６】
このようなリーク判定においては、パージ系を速やかに負圧状態にするために、パージ制御弁は比較的大きい開度に強制的に設定される。したがって、吸気系にパージされる蒸発燃料の量は多くなる。
【０００７】
【発明が解決しようとする課題】
リーク判定を行うためにパージ制御弁を高開度としても、通常であれば、すぐに高開度相当の補正量が燃料噴射量から減量され、空燃比の変動を抑制することができる。しかしながら、上記の従来の方法のような補正量の漸増制御が実施されている間にリーク判定処理が開始されると、算出される補正量は徐々にしか増加しないにもかかわらず、実際には、パージ制御弁は強制的に比較的大きい開度で開弁され、多量の蒸発燃料がパージされるという状況を引き起こす。燃料噴射弁を介して供給される燃料噴射量は、算出された補正量に適合するよう算出されるので、結果として空燃比はリッチ化し、排ガス特性および運転性が損なわれるおそれがある。
【０００８】
したがって、パージ系のリーク判定が実施されているとき、パージされる蒸発燃料の量に応じて燃料噴射量を適切に補正し、空燃比の変動を回避する装置および方法が必要とされている。
【０００９】
【課題を解決するための手段】
この発明の一つの側面によると、燃料タンク内に発生した蒸発燃料をパージ制御弁を介して吸気系にパージするパージ系を有する内燃機関の制御装置が提供される。該制御装置は、内燃機関の運転状態に基づいて該内燃機関に供給すべき要求燃料量を算出する燃料量算出手段（図２の供給燃料算出部９０および式（１））と、パージ系によって吸気系にパージされた蒸発燃料分を表すパージ補正量を算出し、燃料量算出手段によって算出された前記要求燃料量に対して、該蒸発燃料分を減量するようにパージ補正量を用いて補正するパージ補正手段（図２のパージ補正係数算出部８９、式（２）および（１３））とを備える。さらに、該制御装置は、パージの開始時には、前記パージ補正量を所定の初期値から漸増するようにして設定する漸増手段（図２のパージ補正係数算出部８９および式（１４））と、パージ制御弁を開いてパージ系を負圧にした場合の圧力変化に基づいて該パージ系の異常の有無を判定する異常判定が実施されているかどうかを判断する判断手段（図２のリーク判定部８０）と、該判断手段によって異常判定が実施されていると判断されたならば、前記漸増手段の実施を禁止する禁止手段（図２のパージ補正係数算出部８９および式（１５））とを備える。
【００１０】
この発明によると、パージ系の異常判定が実施されているときは、パージ補正量を徐々に増加する漸増制御を実施せず、蒸発燃料分相当のパージ補正量が要求燃料量から減量されるようにする。したがって、異常判定を実施することによって多量の蒸発燃料がパージされた場合でも、該蒸発燃料分に応じた量の燃料が燃料噴射弁から噴射されるので、異常判定中における空燃比が適正化され、排ガス特性および運転性の劣化を回避することができる。
【００１１】
【発明の実施の形態】
次に図面を参照してこの発明の実施の形態を説明する。図１は、この発明の実施形態に従う、内燃機関およびその制御装置の全体構成図である。
【００１２】
電子制御ユニット（以下、「ＥＣＵ」）という）５は、内燃機関（以下、「エンジン」と呼ぶ）１の各部の制御を行うための演算を実行するＣＰＵ４１、エンジン各部の制御を行うためのプログラムおよび各種のデータを格納する読み取り専用メモリ（ＲＯＭ）４２、ＣＰＵ４１による演算の作業領域を提供し、エンジン各部から送られてくるデータおよびエンジン各部に送り出す制御信号を一時記憶するランダムアクセスメモリ（ＲＡＭ）４３、エンジン各部から送られてくるデータを受け入れる入力回路４４、エンジン各部に制御信号を送る出力回路４５を備えている。
【００１３】
図１では、プログラムは、モジュール１、モジュール２、モジュール３等で示されており、この発明に従う、内燃機関に供給される燃料の量を制御するためのプログラムは、これらのモジュールのうちの１つまたは複数に含まれている。また、演算に用いる各種のデータはテーブル１、テーブル２等の形でＲＯＭ４２に格納されている。ＲＯＭ４２は、ＥＥＰＲＯＭのような書き換え可能なＲＯＭであってもよく、この場合、ある運転サイクルにおいてＥＣＵ５が演算した結果をＲＯＭに格納しておき、次の運転サイクルで利用することができる。
【００１４】
エンジン１は、例えば４気筒を備えるエンジンであり、吸気管２が連結されている。吸気管２の上流側にはスロットル弁３が配されており、スロットル弁３に連結されたスロットル弁開度センサ（θＴＨ）４は、スロットル弁３の開度に応じた電気信号を出力してＥＣＵ５に供給する。
【００１５】
燃料噴射弁６は、吸気管２の途中であって、エンジン１とスロットル弁３の間に各気筒毎に設けられ、ＥＣＵ５からの制御信号によって開弁時間が制御される。燃料供給管７は、燃料噴射弁６および燃料タンク９を接続し、その途中に設けられた燃料ポンプ８が燃料を燃料タンクから燃料噴射弁６に供給する。図示しないレギュレータが、ポンプ８と燃料噴射弁６の間に設けられ、吸気管２から取り込まれる空気の圧力と、燃料供給管７を介して供給される燃料の圧力との間の差圧を一定にするよう動作して、燃料の圧力が高すぎるときは図示しないリターン管を通して余分な燃料を燃料タンク９に戻す。こうして、スロットル弁３を介して取り込まれた空気は、吸気管２を通り、燃料噴射弁６から噴射される燃料と混合してエンジン１のシリンダ（図示せず）に供給される。
【００１６】
吸気管圧力（ＰＢＡ）センサ１３および吸気温（ＴＡ）センサ１４は、吸気管２のスロットル弁３の下流側に装着されており、それぞれ吸気管圧力ＰＢＡおよび吸気温ＴＡを検出して電気信号に変換し、それをＥＣＵ５に送る。エンジン水温（ＴＷ）センサ１５は、エンジン１のシリンダブロックの冷却水が充満した気筒周壁（図示せず）に取り付けられ、エンジン冷却水の温度ＴＷを検出し、これをＥＣＵ５に送る。
【００１７】
気筒判別（ＣＹＬ）センサ３４は、エンジン１のカム軸またはクランク軸（共に図示せず）周辺に取り付けられ、特定の気筒が所定のクランク角度位置に達したときに気筒判別信号ＣＹＬを出力し、それをＥＣＵ５に送る。同様に、ＴＤＣセンサ３６が、カム軸またはクランク軸周辺に取り付けられ、ピストンのＴＤＣ位置に関連した所定のクランク角度位置でＴＤＣ信号を出力する。さらに、クランク角（ＣＲＫ）センサ３８が取り付けられ、ＴＤＣ信号パルスの周期よりも短いクランク角度（たとえば、３０度）の周期で、ＣＲＫ信号パルスを出力する。ＣＲＫ信号パルスはＥＣＵ５によってカウントされ、これによりエンジン回転数ＮＥが検出される。
【００１８】
エンジン１は排気管１２を持ち、排気管１２の途中に設けられた排気ガス浄化装置である三元触媒３３を介して排気する。排気管１２の途中に装着されたＬＡＦセンサ３２は広域空燃比センサであり、リーンからリッチにわたる範囲において排気ガス中の酸素濃度すなわち実空燃比を検出し、それをＥＣＵ５に送る。
【００１９】
エンジン１の燃焼室（図示せず）には点火プラグ５８が配置され、点火プラグ５８は、点火コイルおよびイグナイタ５０を介してＥＣＵ５に電気的に接続される。また、エンジン１のシリンダヘッド（図示せず）にはノックセンサ５２が配置され、エンジン１の振動に応じて信号を出力し、それをＥＣＵ５に送る。
【００２０】
車両の速度を検出する車速（ＶＰＳ）センサ１７がＥＣＵ５に接続され、検出した車速信号をＥＣＵ５に送る。さらに、バッテリ電圧（ＶＢ）センサ１８および大気圧（ＰＡ）センサ１９がＥＣＵ５に接続されており、それぞれ、バッテリ電圧および大気圧を検出し、それをＥＣＵ５に送る。
【００２１】
各種センサからの入力信号は入力回路４４に渡される。入力回路４４は、入力信号波形を整形して電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する。ＣＰＵ４１は、変換されたデジタル信号を処理し、ＲＯＭ４２に格納されているプログラムに従って演算を実行し、車の各部のアクチュエータに送る制御信号を作り出す。この制御信号は出力回路４５に送られ、出力回路４５は、燃料噴射弁６、イグナイタ５０およびその他のアクチュエータに制御信号を送る。
【００２２】
次に、蒸発燃料排出抑止系（以下、単にパージ系と呼ぶ）３１について説明する。パージ系３１は、燃料タンク９、チャージ通路２０、キャニスタ２５、パージ通路２７およびいくつかの制御弁を備え、燃料タンク９からの蒸発燃料の排出を制御する。
【００２３】
燃料タンク９は、チャージ通路２０を介してキャニスタ２５に接続され、燃料タンク９からの蒸発燃料が、キャニスタ２５に移動できるようになっている。チャージ通路２０は、第１の分岐２０ａおよび第２の分岐２０ｂを持ち、これらはエンジンルーム内に設けられている。内圧センサ１１は、チャージ通路２０の燃料タンク側に取り付けられており、チャージ通路２０内の内圧と大気圧との差圧を検出する。
【００２４】
第１の分岐２０ａには二方向弁２３が設けられ、二方向弁２３は２つの機械式の弁２３ａおよび２３ｂを備える。弁２３ａは、タンク内圧が大気圧より所定量高くなったときに開く正圧弁であり、これが開弁状態にあると、蒸発燃料がキャニスタ２５に流れ、そこで吸着される。弁２３ｂは、タンク内圧がキャニスタ２５側の圧力より所定量低くなったとき開く負圧弁であり、これが開弁状態にあると、キャニスタ２５に吸着された蒸発燃料が燃料タンク９に戻る。第２の分岐２０ｂには電磁弁であるバイパス弁２４が設けられる。バイパス弁２４は、通常は閉弁状態にあり、ＥＣＵ５からの制御信号に従って開弁する。
【００２５】
キャニスタ２５は、燃料蒸気を吸着する活性炭を内蔵し、通路２６ａを介して大気に連通する吸気口（図示せず）を持つ。通路２６ａの途中に、電磁弁であるベントシャット弁２６が設けられる。ベントシャット弁２６は、通常は開弁状態にあり、ＥＣＵ５からの制御信号に従って開弁する。
【００２６】
キャニスタ２５は、パージ通路２７を介して吸気管２のスロットル弁３の下流側に接続される。パージ通路２７の途中には電磁弁であるパージ制御弁３０が設けられ、キャニスタ２５に吸着された燃料が、パージ制御弁３０を介してエンジンの吸気系に適宜パージされる。パージ制御弁３０は、ＥＣＵ５からの制御信号に基づいて、オン−オフデューティ比を変更することにより、パージ流量を連続的に制御する。
【００２７】
以下、バイパス弁２４より燃料タンク側の部分をタンク系と呼び、バイパス弁２４よりキャニスタ側の部分をキャニスタ系と呼ぶ。
【００２８】
発明の理解を助けるため、最初に、要求燃料およびパージ補正量について概略を説明する。要求燃料は、エンジンの各気筒に供給すべき燃料である。要求燃料は、式（１）に示されるように、基本燃料量ＴＩＭに、燃料噴射係数（ＫＴＯＴＡＬ×ＫＣＭＤ×ＫＡＦ）を乗算することにより算出される。
【００２９】
【数１】
要求燃料＝ＴＩＭ×（ＫＴＯＴＡＬ×ＫＣＭＤ×ＫＡＦ）      （１）
【００３０】
ここで、基本燃料量ＴＩＭは、具体的には、エンジン回転数ＮＥおよび吸気管圧力ＰＢＡに従って決定される基本燃料噴射時間で表される。ＫＴＯＴＡＬは、各種センサからの検出信号に基づいて算出される補正係数であり、運転状態に応じてエンジンの燃費特性および加速特性等が最適化されるように設定される。ＫＣＭＤは目標空燃比係数と呼ばれ、目標空燃比を当量比で表したものである。目標空燃比係数ＫＣＭＤは、空燃比Ａ／Ｆの逆数、すなわち燃空比Ｆ／Ａに比例し、理論空燃比のとき値１．０をとる。ＫＡＦは空燃比補正係数を示す。空燃比補正係数ＫＡＦは、エンジンに供給される混合気の空燃比が目標空燃比に一致するように空燃比をフィードバック制御するのに使用される係数である。空燃比補正係数ＫＡＦは、ＬＡＦセンサ３２によって検出される実空燃比に基づいて算出される。
【００３１】
要求燃料に対してパージ流量ＱＰＧＣが寄与する燃料量（以下、パージ補正量と呼ぶ）は、式（２）に示されるように、基本燃料量ＴＩＭにパージ補正係数ＫＡＦＥＶＡＣＴを乗算することにより算出される。ここで、パージ流量ＱＰＧＣは、エンジンの吸気系にパージされる蒸発燃料の流量を示す。
【００３２】
【数２】
パージ補正量＝ＴＩＭ×ＫＡＦＥＶＡＣＴ    （２）
【００３３】
パージ補正係数ＫＡＦＥＶＡＣＴは、燃料噴射係数に対する割合で表される。パージ補正係数ＫＡＦＥＶＡＣＴは、パージ流量ＱＰＧＣおよび蒸発燃料の濃度（以下、ベーパ濃度と呼ぶ）ＫＡＦＥＶに基づいて算出される。パージ補正係数ＫＡＦＥＶＡＣＴの詳細な算出方法は、後述される。
【００３４】
式（１）および（２）から、燃料噴射弁を介して実際に噴射される燃料噴射量ＴＣＹＬが、以下の式（３）のように導かれる。こうして、パージ補正係数ＫＡＦＥＶＡＣＴに基づくパージ補正量だけ要求燃料量から減らされた量の燃料が、燃料噴射弁から供給される。
【００３５】
【数３】
0003970655.tif 000002
【００３６】
図２は、この発明に従う制御装置の機能ブロック図である。各機能ブロックで表される機能は、典型的にはコンピュータプログラムによって実行される。代替的には、各機能ブロックで表される機能を実行するよう構成された任意のハードウェアによって、各機能ブロックを実現してもよい。
【００３７】
リーク判定部８０は、所定の条件が満たされたとき、パージ系３１にリークがあるかどうかを判定する。所定の条件には、１）パージ処理が実行中である、２）エンジンの運転状態が所定の定常状態にある、３）車速の変化が小さい、４）空燃比補正係数が所定値範囲にある、等を含めることができる。代替的に、他の条件を用いてもよいし、異なる条件を追加してもよい。リーク判定部８０は、所定の条件が満たされたとき、リーク判定の実行を許可するために、フラグＦ＿ＥＶＰＬＫＭに１をセットする。
【００３８】
リーク判定部８０は、フラグＦ＿ＥＶＰＬＫＭに１がセットされたならば、以下の手順に従い、パージ系３１のタンク系およびキャニスタ系のリーク判定を実行する。
【００３９】
［タンク系のリーク判定］
１）バイパス弁２４およびベントシャット弁２６を開き、パージ制御弁３０を閉じて、燃料タンク９を大気に開放する。
【００４０】
２）バイパス弁２４およびパージ制御弁３０を閉じて、大気圧から正圧に上昇する単位時間あたりの圧力変動量を補正値として測定する補正チェックモードを実施する。
【００４１】
３）バイパス弁２４を開き、ベントシャット弁２６を閉じ、パージ制御弁３０を制御しながら、タンク系を所定の圧力にまで安定的に減圧する減圧モードを実施する。
【００４２】
４）タンク系が所定の負圧状態になった後、すべての弁２４、２６および３０を閉じ、復帰する単位時間当たりの圧力変動量を測定するリークチェックモードを実施する。
【００４３】
５）リークチェックモード中の単位時間あたりの圧力変動量から、補正チェックモード中の単位時間あたりの圧力変動量に所定の係数を掛けた値を減算する。その結果算出された値に基づいて、タンク系のリークを判定する。該算出された値が小さければ、タンク系の負圧状態がほぼ保持されており、タンク系にはリークが無いと判定される。該算出された値が大きければ、タンク系にリークがあると判定される。
【００４４】
［キャニスタ系］
１）バイパス弁２４およびベントシャット弁２６を開き、パージ制御弁３０を閉じて、キャニスタ系を大気に開放する。
【００４５】
２）ベントシャット弁２６を閉じ、パージ制御弁３０を開いて、キャニスタ系を所定の圧力にまで安定的に減圧する。
【００４６】
３）キャニスタ系が所定の負圧状態になった後、すべての弁２４、２６および３０を閉じ、復帰する圧力変動量を測定する。変動量が小さければ、キャニスタ系の負圧状態がほぼ保持されており、リークが無いと判定される。変動量が大きければ、キャニスタ系にリークがあると判定される。
【００４７】
タンク系およびキャニスタ系のいずれか一方のリーク判定が実施される場合にも、当然ながら本発明を適用することができる。また、対象となる系を負圧にしてリーク判定を実施する手法として、上記以外の他の手法を用いてもよい。
【００４８】
機能ブロック８１〜８９に示される機能は、パージされる蒸発燃料の量に応じて燃料噴射量を補正する技術を実現する。
【００４９】
吸入空気量算出部８１は、式（４）に従い、吸入空気量ＱＡＩＲを算出する。
【００５０】
【数４】
ＱＡＩＲ＝ＴＩＭ×ＮＥ×２×ＫＱＡＩＲ×ＫＰＡ    （４）
【００５１】
ここで、ＴＩＭは、前述した基本燃料噴射量を示す。ＫＱＡＩＲは、燃料噴射量を空気の流量に換算するための係数であり、固定値（たとえば、０．４５L/ms）を持つ。ＫＰＡは、吸気管圧力ＰＢＡに応じた流量の変動を補正するための係数である。
【００５２】
吸入空気量算出部８１は、さらに、吸入空気量ＱＡＩＲに対する蒸発燃料の割合、すなわち基本パージ量ＱＰＧＣＢＡＳＥを、式（５）に従って算出する。
【００５３】
【数５】
ＱＰＧＣＢＡＳＥ＝ＱＡＩＲ×ＫＱＰＧＢ    （５）
【００５４】
ここで、ＫＱＰＧＢは目標パージ率を示しており、たとえば０．０４である。この場合、吸入空気量ＱＡＩＲの４％に蒸発燃料を含めることになる。
【００５５】
パージ流量算出部８２は、基本パージ量ＱＰＧＣＢＡＳＥに基づいて、目標パージ流量ＱＰＧＣＭＤを式（６）に従って算出する。目標パージ流量ＱＰＧＣＭＤは、今回のサイクルにおいてエンジンの吸気系にパージするパージ流量の目標値を表す。
【００５６】
【数６】
ＱＰＧＣＭＤ＝ＱＰＧＣＢＡＳＥ×ＫＰＧＴ    （６）
【００５７】
ここで、ＫＰＧＴはパージ流量係数であり、１以下の値を持つ。係数ＫＰＧＴを用いて、目標パージ流量ＱＰＧＣＭＤの量を制御することができる。係数ＫＰＧＴは、運転状態に応じて算出される。
【００５８】
さらに、パージ流量算出部８２は、吸入空気量ＱＡＩＲに基づいて、今回のサイクルでパージするパージ流量ＱＰＧＣを式（７）に従って算出する。
【００５９】
【数７】
ＱＰＧＣ(ｋ)＝ＱＰＧＣ(ｋ−１)＋（ＱＡＩＲ×ＫＤＱＰＧＣ）    （７）
【００６０】
ここで、ｋはサイクルを識別する数字であり、（ｋ）は今回のサイクルを示し、（ｋ−１）は前回のサイクルを示す。ＫＤＱＰＧＣは予め決められた固定値（たとえば、０．００３）である。式（７）から明らかなように、パージ流量ＱＰＧＣは、徐々に目標パージ流量ＱＰＧＣＭＤに達するように制御される。
【００６１】
デューティ算出部８３は、パージ流量算出部８２から受け取ったパージ流量ＱＰＧＣがパージされるように、パージ制御弁を駆動するデューティ比ＰＧＣＭＤを、式（８）に従って算出する。デューティ比は、パージ制御弁が開弁する比率を表す。
【００６２】
【数８】
0003970655.tif 000003
【００６３】
ＫＤＵＴＹは、パージ流量をデューティ比に換算するための係数であり、固定値（たとえば、３．８%・min/L）を持つ。差圧に応じてパージ制御弁の開度が変化するので、ＫＤＰＢＧは、それを補正するための係数である。ＰＧＣＭＤ０は、パージ流量ＱＰＧＣに対応するデューティ比を表しており、以下目標デューティ比と呼ぶ。バッテリ電圧ＶＢおよび吸気管圧力ＰＢＡに依存してパージ制御弁が開き始めるまでに何らかの遅れが生ずるので、ＤＰＧＣＶＢＸおよびＤＰＧＣ０は、それぞれ、この遅れ（以下、無効時間と呼ぶ）を補正する係数である。
【００６４】
デューティ算出部８３は、デューティ比ＰＧＣＭＤに対して、所定の上限値および下限値でリミット処理を行い、最終デューティ比ＤＯＵＴＰＧＣを出力する。こうして、パージ制御弁の開度は、最終デューティ比ＤＯＵＴＰＧＣに従って制御される。
【００６５】
輸送遅れ算出部８４は、エンジン回転数ＮＥに基づいて、パージ輸送遅れＣＰＧＤＬＹＲＸを算出する。パージ輸送遅れＣＰＧＤＬＹＲＸは、蒸発燃料がパージ通路にパージされてからエンジンの吸気系に送られるまでの時間的な遅れを示す。パージ輸送遅れＣＰＧＤＬＹＲＸは整数ｎで表され、ｎが大きくなるにつれ輸送遅れが大きいことを示す。代替的に、パージ輸送遅れを、エンジン回転数ＮＥの代わりに吸入空気量ＱＡＩＲに基づいて算出するようにしてもよい。
【００６６】
空燃比制御部８５は、ＬＡＦセンサ３２からの出力に基づいて、内燃機関に供給される混合気の空燃比をフィードバック制御によって目標空燃比に収束させるための空燃比係数ＫＡＦを算出する。
【００６７】
空燃比学習値算出部８６は、空燃比制御部８５によって算出された空燃比係数ＫＡＦに基づいて、パージ有り学習値ＫＲＥＦと、パージ無し学習値ＫＲＥＦＸとを、以下の式（９）に基づいて算出する。前述したように、（ｋ）は今回のサイクルを示し、（ｋ−１）は前回のサイクルを示す。
【００６８】
【数９】
0003970655.tif 000004
0003970655.tif 000005
【００６９】
ここで、＃ＣＲＥＦおよび＃ＣＲＥＦＸは、それぞれ、重み付け係数を表す所定値である。この値で、前回のサイクルで算出されたＫＲＥＦ(k-1)およびＫＲＥＦＸ(k-1)に対し、どれだけ空燃比補正係数ＫＡＦを反映させるかを決定する。
【００７０】
ベーパ濃度係数算出部８７は、空燃比制御部８５によって算出された空燃比補正係数ＫＡＦ、空燃比学習値算出部８６によって算出された学習値ＫＲＥＦＸおよびＫＲＥＦに基づいて、ベーパ濃度係数ＫＡＦＥＶを算出する。
【００７１】
目標パージ補正係数算出部８８は、以下の式（１０）に従って、目標パージ補正係数ＫＡＦＥＶＡＣＺを算出する。
【００７２】
【数１０】
0003970655.tif 000006
【００７３】
ＰＧＲＡＴＥおよびＱＲＡＴＥは、式（１１）および（１２）で表される。
【００７４】
【数１１】
0003970655.tif 000007
【数１２】
ＱＲＡＴＥ＝ＱＰＧＣ／ＱＰＧＣＢＡＳＥ                          （１２）
【００７５】
「ＰＧＲＡＴＥ×ＱＲＡＴＥ」は、今回のサイクルにおいてエンジンの吸気系にパージされるパージ流量の割合を示す。具体的に説明すると、前述したようにＤＯＵＴＰＧＣは最終デューティ比を表しているので、式（１１）に示されるデューティレートＰＧＲＡＴＥは、パージ流量ＱＰＧＣの目標デューティ比ＰＧＣＭＤ０に対する、実際のデューティ比（無効時間を差し引いたもの）の割合を示す。したがって、「ＰＧＲＡＴＥ×ＱＰＧＣ」は、今回のサイクルにおいてパージ制御弁によってパージされる実際のパージ流量を示す。
【００７６】
一方、基本パージ流量ＱＰＧＣＢＡＳＥは、式（５）を参照して前述したように、今回のサイクルにおける吸入空気量ＱＡＩＲに含めることのできる蒸発燃料の流量を示す。燃料はベーパ濃度係数ＫＡＦＥＶに依存して表されるので、式（１０）に示されるように、「ＰＧＲＡＴＥ×ＱＲＡＴＥ」にベーパ濃度係数ＫＡＦＥＶを乗算することにより、目標パージ補正係数ＫＡＦＥＶＡＣＺを求めることができる。
【００７７】
目標パージ補正係数算出部８８は、０〜（ｎ−１）の番号がそれぞれ付与された複数のバッファを有しており、今回のサイクルで算出された目標パージ補正係数をゼロ番目のバッファに格納し、前回のサイクルで算出された目標パージ補正係数を１番目のバッファに格納し、．．．というように、目標パージ補正係数を時系列に格納する。目標パージ補正係数算出部８８は、輸送遅れ算出部８４から蒸発燃料の輸送遅れＣＰＧＤＬＹＲＸの値ｎを受け取り、該ｎに対応する番号のバッファから、目標パージ補正係数ＫＡＦＥＶＡＣＺを抽出する。たとえば、受け取ったＣＰＧＤＬＹＲＸの値ｎが３ならば、３番目のバッファから目標パージ補正係数ＫＡＦＥＶＡＣＺを抽出する。
【００７８】
パージ補正係数算出部８９は、算出された目標パージ補正係数ＫＡＦＥＶＡＣＺに基づいて、要求燃料に対してパージ流量ＱＰＧＣが寄与する燃料量の割合を示すパージ補正係数ＫＡＦＥＶＡＣＴ（式（２）を参照して前述した）を算出する。
【００７９】
パージ補正係数算出部８９は、リーク判定部８０によってリーク判定が実施されていないとき（すなわち、フラグＦ＿ＥＶＰＬＫＭがゼロのとき）、式（１３）および（１４）に従って、パージ補正係数ＫＡＦＥＶＡＣＴを算出する。
【００８０】
【数１３】
0003970655.tif 000008
0003970655.tif 000009
【数１４】
0003970655.tif 000010
【００８１】
ここで、ＫＫＥＶＧは高濃度補正係数を示しており、蒸発燃料の濃度が非常に高いと空燃比への影響が大きいので、これを補正するための係数である。高濃度補正係数ＫＫＥＶＧは、蒸発燃料の濃度が非常に高いときに、それに応じて１より大きい値が設定される。
【００８２】
漸増係数ＫＥＶＡＣＴは、所定の初期値（たとえば、ゼロ）から１．０まで徐々に増やされる係数である。漸増係数ＫＥＶＡＣＴは、パージが開始された時は初期値に設定され、その後、それぞれのサイクルで所定値だけ増やされていく。こうして、要求燃料量に寄与するパージ補正量を徐々に増やすことで、パージ処理を開始した時の空燃比の変動を防ぐ。パージカット中は、漸増係数ＫＥＶＡＣＴはゼロに設定される。
【００８３】
＃ＣＫＡＦＥＶＡＣは、重み付け係数を表す所定値である。この値で、前回のサイクルで算出されたパージ補正係数ＫＡＦＥＶＡＣＴ(k-1)に対し、どれだけ暫定パージ補正係数ＫＡＦＥＶＡＣを反映させるかを決定する。
【００８４】
パージ補正係数算出部８９は、リーク判定部８０によってリーク判定が実施されているとき（すなわち、フラグＦ＿ＥＶＰＬＫＭが１のとき）、式（１５）に従って、パージ補正係数ＫＡＦＥＶＡＣＴを算出する。
【００８５】
【数１５】
ＫＡＦＥＶＡＣＴ＝ＫＡＦＥＶＡＣＺ×ＫＫＥＶＧ      式（１５）
【００８６】
式（１４）と比較して明らかなように、リーク判定が実施されているときは、パージ補正係数ＫＡＦＥＶＡＣＴの算出に漸増係数ＫＥＶＡＣＴを使用しない。
【００８７】
パージ開始時には、漸増係数ＫＥＶＡＣＴで、要求燃料に対するパージ補正量の割合を絞ることにより、空燃比の変動を抑制することができる。しかしながら、前述したように、リーク判定中はパージ系を速やかに負圧にするため、パージ制御弁は強制的に所定の開度に開かれる。その結果、算出されたパージ補正量より多くの蒸発燃料がパージされ、空燃比がリッチ化し、運転状態を悪化させるおそれがある。これを回避するため、リーク判定中は、漸増係数ＫＥＶＡＣＴによるパージ補正量の漸増制御を実施しないようにする。こうして、リーク判定中は、パージ補正量として、算出された蒸発燃料の量が最初から設定されるので、空燃比が適正に維持される。
【００８８】
さらに、パージ補正係数算出部８９は、オープンループ制御においては、上記の式（１３）または（１５）に基づいて算出された補正係数ＫＡＦＥＶＡＣＴを、以下の式（１６）に従って補正する。
【００８９】
【数１６】
0003970655.tif 000011
【００９０】
ここで、パージ有り学習値ＫＲＥＦは、パージが実行されている間に空燃比補正係数ＫＡＦをなまし平均した値である。パージ無し学習値ＫＲＥＦＸは、パージカットを実施している間の空燃比係数ＫＡＦをなまし平均した値である。式（１６）で示されるように、補正係数ＫＡＦＥＶＡＣＴは、パージ有り学習値とパージ無し学習値の偏差（ＫＲＥＦ−ＫＲＥＦＸ）で補正される。学習値ＫＲＥＦおよびＫＲＥＦＸは、直近に実行されたフィードバック制御時に算出されたものを用いる。
【００９１】
ベーパ濃度係数ＫＡＦＥＶは推定により算出されるので、運転状態によっては誤差を含むことがある。その結果、パージ補正係数ＫＡＦＥＶＡＣＴに“ずれ”が生じる。空燃比フィードバック制御が実行されている間は、空燃比補正係数ＫＡＦにより空燃比が目標空燃比に達するよう制御されるので、該ずれは修正されることができる。
【００９２】
しかしながら、オープンループ制御が実行されている間は、空燃比補正係数ＫＡＦが、たとえば値１．０に固定されるので、該ずれを空燃比補正係数ＫＡＦで修正することができない。したがって、オープンループ制御時は、フィードバック制御時に空燃比補正係数ＫＡＦによって修正されていたずれを求め、該ずれに応じた量で、パージ補正係数ＫＡＦＥＶＡＣＴを補正する。パージ有り学習値ＫＲＥＦとパージ無し学習値ＫＲＥＦＸの差は、この“ずれ”を表している。こうして、フィードバック制御時に含まれていたパージ補正係数ＫＡＦＥＶＡＣＴのずれが解消され、オープンループ制御においても、要求燃料に適合した量の燃料が内燃機関に供給される。
【００９３】
供給燃料算出部９０は、パージ補正係数算出部８９からパージ補正係数ＫＡＦＥＶＡＣＴを受け取り、上記の式（３）に従って燃料噴射量ＴＣＹＬを算出する。算出された燃料噴射量ＴＣＹＬは、燃料噴射弁を介してエンジンに供給される。こうして、パージ流量ＱＰＧＣが寄与する蒸発燃料量（すなわち、パージ補正量）を差し引いた量の燃料が、燃料噴射弁を介してエンジンに供給される。
【００９４】
図３は、吸入空気量ＱＡＩＲおよび基本パージ流量ＱＰＧＢＡＳＥを求めるフローチャートである。このフローは、たとえばＴＤＣセンサからＴＤＣパルス信号が出力されるたびに実行される。ステップＳ１０１において、前述した式（４）に従って吸入空気量ＱＡＩＲを求める。ステップＳ１０２において、前述した式（５）に従って基本パージ流量ＱＰＧＣＢＡＳＥを求める。
【００９５】
図４は、パージ制御弁を駆動する最終デューティ比ＤＯＵＴＰＧＣを求めるフローチャートである。このフローは、一定の時間間隔（たとえば８０ミリ秒）で繰り返し実行される。
【００９６】
ステップＳ１１１において、パージ流量ＱＰＧＣを求めるルーチン（図５）を実行する。ステップＳ１１２において、ステップＳ１１１で算出されたパージ流量ＱＰＧＣがゼロならば、蒸発燃料をパージしないことを示すので、デューティ比ＰＧＣＭＤにゼロを設定し（Ｓ１１３）、ステップＳ１２０に進む。ステップＳ１１２においてパージ流量ＱＰＧＣがゼロでなければ、ステップＳ１１４に進み、パージ制御弁を駆動する周期（たとえば、８０ミリ秒）を設定する。
【００９７】
ステップＳ１１５〜Ｓ１１９は、前述した式（８）に従ってデューティ比ＰＧＣＭＤを求める処理である。ステップＳ１１５において、バッテリ電圧に応じたパージ制御弁の無効時間を補正するため、ＤＰＧＣＶＢＸテーブルをアクセスし、バッテリ電圧ＶＢに基づいて無効時間ＤＰＧＣＶＢＸを求める。ＤＰＧＣＶＢＸテーブルは、バッテリ電圧が大きくなるほど、無効時間ＤＰＧＣＶＢＸが小さくなるよう設定されている。
【００９８】
ステップＳ１１６に進み、差圧に起因するパージ制御弁のデューティの変動を補正するため、ＫＤＰＢＧテーブルをアクセスし、吸気管圧力ＰＢＡに基づいて差圧補正値ＫＤＰＢＧを求める。ＫＤＰＢＧテーブルは、エンジン負荷が低くなるほど、差圧補正値ＫＤＰＢＧが大きくなるよう設定されている。ステップＳ１１７に進み、吸気管圧力ＰＢＡに応じたパージ制御弁の無効時間を補正するため、ＤＰＧＣ０テーブルをアクセスし、吸気管圧力ＰＢＡに基づいて無効時間ＤＰＧＣ０を求める。ＤＰＧＣ０テーブルは、負荷が大きくなるほど、無効時間ＤＰＧＣ０が大きくなるよう設定されている。ステップＳ１１８およびステップＳ１１９で、前述の式（８）に従い、デューティ比ＰＧＣＭＤを求める。
【００９９】
ステップＳ１２０〜Ｓ１２５は、デューティ比ＰＧＣＭＤに対するリミット処理を示す。ステップＳ１２０において、デューティ比ＰＧＣＭＤが予め決められた上限値ＤＯＵＴＰＧＨ（たとえば、９５％）以上ならば、最終デューティ比ＤＯＵＴＰＧＣに、該上限値ＤＯＵＴＰＧＨをセットする（Ｓ１２２）。ステップＳ１２０およびＳ１２１において、デューティ比ＰＧＣＭＤが、上限値ＤＯＵＴＰＧＨおよび予め決められた下限値ＤＯＵＴＰＧＬ（たとえば、５％）の間の値を持つならば、最終デューティ比ＤＯＵＴＰＧＣに、デューティ比ＰＧＣＭＤをセットする（Ｓ１２３）。
【０１００】
ステップＳ１２１において、デューティＰＧＣＭＤが下限値ＤＯＵＴＰＧＬ以下ならば、最終デューティ比ＤＯＵＴＰＧＣにゼロを設定する（Ｓ１２４）。この場合、最終デューティ比ＤＯＵＴＰＧＣがゼロなので、デューティレートＰＧＲＡＴＥおよびパージ流量レートＱＲＡＴＥにゼロが設定され、高濃度補正係数ＫＫＥＶＧに値１がセットされ、漸増係数ＫＥＶＡＣＴがゼロにセットされる（Ｓ１２５）。ステップＳ１２６に進み、前述した式（１１）に従ってデューティレートＰＧＲＡＴＥを求める。
【０１０１】
図５は、図４のステップＳ１１１で実行される、パージ量ＱＰＧＣを求めるフローチャートである。ステップＳ１５１において、パージ流量係数ＫＰＧＴを求める。パージ流量係数ＫＰＧＴは、運転状態に応じて算出される。
【０１０２】
ステップＳ１５２〜Ｓ１５７は、目標パージ流量ＱＰＧＣＭＤを求める処理である。ステップＳ１５２において、前述した式（６）に従い、基本パージ流量ＱＰＧＣＢＡＳＥに係数ＫＰＧＴを乗算した値を、一時変数ｑｐｇｃｍｄにセットする。一次変数ｑｐｇｃｍｄが、予め設定された上限値ＱＰＧＭＡＸ（たとえば、３０L/min）より大きければ、該上限値がパージ流量ＱＰＧＣＭＤに設定される（Ｓ１５３およびＳ１５７）。一次変数ｑｐｇｃｍｄが、予め設定された下限値（たとえば１L/min）より小さければ、該下限値が目標パージ流量ＱＰＧＣＤＭＤにセットされる（Ｓ１５４およびＳ１５５）。一次変数ｑｐｇｃｍｄが上限値および下限値の間にあるならば、該一時変数ｑｐｇｃｍｄにセットされた値が目標パージ流量ＱＰＧＣＭＤに設定される（Ｓ１５６）。
【０１０３】
ステップＳ１５８〜Ｓ１６７は、前述した式（７）に従ってパージ流量ＱＰＧＣを求める処理である。前述したように、パージ流量ＱＰＧＣは、段階的に目標パージ流量ＱＰＧＣＭＤに達するように制御される。ステップＳ１５８において、パージカットフラグＦ＿ＰＧＲＥＱに１が設定されているかどうかを調べる。１が設定されていれば、パージカットが実行されていること（すなわち、パージされていない状態）を示すので、前回のサイクルで算出されたパージ流量ＱＰＧＣ（ｋ−１）から所定値ＤＱＰＧＣＯＢＤ（たとえば、２L/min）だけ減らした値を、一時変数ｑｐｇｃに代入する（Ｓ１６４）。
【０１０４】
パージカットフラグがゼロならば、一時変数ｄｑｐｇｃに、「吸入空気量ＱＡＩＲ×パージ加算係数ＫＤＱＰＧＣ」を代入する。パージ加算係数ＫＤＱＰＧＣは、吸入空気量ＱＡＩＲに対してどれくらいをパージ流量として加算するかを定める係数（たとえば、０．００３）である。ステップＳ１６０おいて、一時変数ｄｑｐｇｃの値が、予め決められた上限値ＤＱＰＧＣＭＡＸ（たとえば、２L/min）以上ならば、該上限値をデルタパージ量ＤＱＰＧＣにセットし（１６２）、該上限値ＤＱＰＧＣＭＡＸより小さければ、一時変数ｄｑｐｇｃの値をデルタパージ量ＤＱＰＧＣにセットする（Ｓ１６１）。ステップＳ１６３に進み、前回のサイクルで算出されたパージ流量ＱＰＧＣ（ｋ−１）に、ステップＳ１６１またはＳ１６２で求めたデルタパージ量ＤＱＰＧＣを加算する。こうして、目標パージ流量ＱＰＧＣＭＤに向けて、パージ流量が増やされる。
【０１０５】
ステップＳ１６５では、一時変数ｑｐｇｃが目標パージ流量ＱＰＧＣＭＤを超えたかどうか判断する。超えたならば、目標パージ流量ＱＰＧＣＭＤの値をパージ流量ＱＰＧＣにセットし（Ｓ１６６）、超えなければ、一時変数ｑｐｇｃの値をパージ流量ＱＰＧＣにセットする（Ｓ１６７）。こうして、今回のサイクルにおいてパージされるパージ流量ＱＰＧＣが、目標パージ流量ＱＰＧＣＭＤを超えないよう算出される。
【０１０６】
ステップＳ１６８において、漸増係数ＫＥＶＡＣＴを、所定値ＤＫＥＶＡＣＴだけ増やす。ステップＳ１６９および１７０において、漸増係数ＫＥＶＡＣＴは、値１以下にリミット処理される。こうして、漸増係数ＫＥＶＡＣＴは、前述した図４のステップＳ１２１においてデューティ比ＰＧＣＭＤが下限値ＤＯＵＴＰＧＬ以下であってパージカット状態であるときにはゼロに初期化され、ＰＧＣＭＤ＞ＤＯＵＴＰＧＬとなってパージが開始された時点より該ルーチンが実行されるたびに、値１に向けて徐々に増やされる。
【０１０７】
図６は、空燃比補正係数ＫＡＦを算出するフローチャートである。この実施例では、空燃比補正係数ＫＡＦはＰＩＤ制御によって算出される。しかし、他の制御方法によって算出するようにしてもよい。このフローチャートは、たとえばＴＤＣセンサからＴＤＣパルス信号が出力されるたびに実行される。
【０１０８】
ステップＳ２０１において、現在空燃比フィードバック制御が行われているかどうかを判断する。現在空燃比フィードバック制御が行われていなければ、オープンループ制御であることを示す。この場合ステップＳ２０２に進み、空燃比補正係数ＫＡＦに値１．０をセットする。
【０１０９】
空燃比フィードバック制御が行われていれば、前回のサイクルにおいて空燃比フィードバック制御が行われていたかどうかを判断する（Ｓ２０３）。前回のサイクルでフィードバック制御が実行されていなかったならば、ステップＳ２０４およびＳ２０５でＰＩＤ制御のための初期値をセットする。具体的には、今回のサイクルの積分項ＫＩＦ(k)に、最新の空燃比係数ＫＡＦをセットし（Ｓ２０４）、変数ＤＫＣＭＤＢに、目標空燃比係数ＫＣＭＤに対する実空燃比係数ＫＡＣＴの偏差ＤＫＣＭＤをセットする（Ｓ２０５）。
【０１１０】
ステップＳ２０６で、ＰＩＤ制御の比例項ＫＰＦを算出する。比例項ＫＰＦは、実験的に決定される比例制御ゲイン＃ＫＰＡＦに、偏差ＤＫＣＭＤを乗算して算出される。ステップＳ２０７では、積分項ＫＩＦを算出する。積分項ＫＩＦは、実験的に決定される積分制御ゲイン＃ＫＩＡＦに偏差ＤＫＣＭＤを乗算したものを、前回のサイクルで算出された積分項ＫＩＦ(k-1)に加算することにより算出される。ステップＳ２０８では、ＰＩＤ制御の微分項ＫＤＦを算出する。微分項ＫＤＦは、実験的に決定される微分制御ゲイン＃ＫＤＡＦに、今回のサイクルにおける偏差ＤＫＣＭＤと前回のサイクルにおける偏差ＤＫＣＭＤＢとの差を乗算することにより、算出される。
【０１１１】
ステップＳ２０９に進み、比例項ＫＰＦ、積分項ＫＩＦ、および微分項ＫＤＦを加算し、空燃比補正係数ＫＡＦを算出する。ステップＳ２１０に進み、今回のサイクルにおける偏差ＤＫＣＭＤを変数ＤＫＣＭＤＢにシフトする。
【０１１２】
ステップＳ２１１において、現在パージが実行されているかどうか判断する。パージが実行されていなければ、前述した式（９）に従い、パージ無し学習値ＫＲＥＦＸを算出する（Ｓ２１２）。パージが実行されていれば、前述した式（９）に従い、パージ有り学習値ＫＲＥＦを算出する（Ｓ２１３）。
【０１１３】
図７は、パージ補正係数ＫＡＦＥＶＡＣＴを算出するフローチャートである。このフローチャートは、たとえばＴＤＣセンサからＴＤＣパルス信号が出力されるたびに実行される。
【０１１４】
ステップＳ３０１において、目標パージ補正係数ＫＡＦＥＶＡＣＺを求めるルーチン（図８）を実行する。目標パージ補正係数ＫＡＦＥＶＡＣＺは、前述したように、高濃度補正係数ＫＫＥＶＧで補正される前の、要求燃料に対する蒸発燃料の割合を示す係数である。
【０１１５】
ステップＳ３０２〜Ｓ３０４は、高濃度補正係数ＫＫＥＶＧを算出する処理を示す。ステップＳ３０２において、ベーパ濃度係数ＫＡＦＥＶと、ガード係数ＫＥＶＡＣＴＧを比較する。ガード係数ＫＥＶＡＣＴＧは、運転状態に応じて算出される係数である。ベーパ濃度係数ＫＡＦＥＶがガード係数ＫＥＶＡＣＴＧより大きければ、蒸発燃料の濃度が非常に濃いことを示す。この場合、「ＫＡＦＥＶ／ＫＥＶＡＣＴＧ」を計算し、高濃度係数ＫＫＥＶＧを求める（Ｓ３０３）。一方、ベーパ濃度係数ＫＡＦＥＶがガード係数ＫＥＶＡＣＴＧより小さければ、蒸発燃料の濃度が補正するほど大きくないことを示す。この場合、高濃度補正係数ＫＫＥＶＧに１をセットする（Ｓ３０４）。
【０１１６】
ステップＳ３０５に進み、前述の式（１４）に示されるように、目標パージ補正係数ＫＡＦＥＶＡＣＺに、ステップＳ３０３またはＳ３０４で求めた高濃度係数ＫＫＥＶＧと、ステップＳ１６８〜Ｓ１７０（図５）で求めた漸増係数ＫＥＶＡＣＴを乗算し、暫定パージ補正係数ＫＡＦＥＶＡＣを求める。
【０１１７】
ステップＳ３０６において、リーク判定の実施についての許可フラグＦ＿ＥＶＰＬＫＭの値を調べる。フラグＦ＿ＥＶＰＬＫＭが、リーク判定が実施されていないことを示す値ゼロを持つならば、ステップＳ３０７に進み、前述の式（１３）に従ってパージ補正係数ＫＡＦＥＶＡＣＴを求める。フラグＦ＿ＥＶＰＬＫＭが、リーク判定が実施されていることを示す値１を持つならば、ステップＳ３０８に進み、前述の式（１５）に従ってパージ補正係数ＫＡＦＥＶＡＣＴを求める。こうして、リーク判定が実施されないときは、パージ補正量は、算出された蒸発燃料の量に向かって徐々に増えるよう制御され、リーク判定が実施されるときは、パージ補正量は、算出された蒸発燃料の量に最初から設定される。
【０１１８】
ステップＳ３０９に進み、フラグＦ＿ＷＯＴの値を調べる。フラグＦ＿ＷＯＴに値１がセットされていれば、空燃比をリッチ状態にする制御モード（リッチ制御モードと呼ぶ）にあることを示す。フラグＦ＿ＷＯＴは、たとえばスロットルが全開であるとき、触媒が高温であるとき等に値１がセットされる。リッチ制御モードに入ると、オープンループ制御が実行される。
【０１１９】
フラグＦ＿ＷＯＴが値１ならば、パージ無し学習値ＫＲＥＦＸとパージ有り学習値ＫＲＥＦを比較する（Ｓ３１０）。前述したように、パージ無し学習値ＫＲＥＦＸとパージ有り学習値ＫＲＥＦの偏差は、フィードバック制御時に空燃比補正係数ＫＡＦによって修正されていたパージ補正係数ＫＡＦＥＶＡＣＴの“ずれ”に相当する。
【０１２０】
ステップＳ３１０で、パージ有り学習値ＫＲＥＦがパージ無し学習値ＫＲＥＦＸより大きければ、空燃比が目標空燃比に対してリーン状態にあることを示す。したがって、ステップＳ３１１において、ステップＳ３０７またはＳ３０８で求めたパージ補正係数ＫＡＦＥＶＡＣＴを、前述の式（１６）に従って補正する。こうして、空燃比フィードバック制御時に生じていたパージ補正係数ＫＡＦＥＶＡＣＴのずれが解消され、パージ補正係数ＫＡＦＥＶＡＣＴは減る方向に修正される。
【０１２１】
ステップＳ３１０でパージ有り学習値ＫＲＥＦがパージ無し学習値ＫＲＥＦＸ以下ならば、空燃比が目標空燃比に対してリッチ状態にあることを示す。この実施例では、リッチ制御の場合、空燃比がさらにリッチの方向に向かうのは問題なしとして、パージ補正係数ＫＡＦＥＶＡＣＴを補正しない。
【０１２２】
代替的に、ステップＳ３１０でパージ有り学習値ＫＲＥＦがパージ無し学習値ＫＲＥＦＸ以下である場合に、内燃機関に供給される燃料量が要求燃料量に対して過剰とならないようパージ補正係数ＫＡＦＥＶＡＣＴを補正してもよい。この場合、「ＫＡＦＥＶＡＣＴ←ＫＡＦＥＶＡＣＴ＋（ＫＲＥＦＸ−ＫＲＥＦ）×ＰＧＲＡＴＥ×ＱＲＡＴＥ」を実行する。こうすることにより、パージ補正係数ＫＡＦＥＶＡＣＴが増える方向に修正され、要求燃料に適合した量の燃料が内燃機関に供給される。
【０１２３】
図８は、図７のステップＳ３０１で実行される、目標パージ補正係数ＫＡＦＥＶＡＣＺを算出するフローチャートを示す。ステップＳ３５１において、パージ流量レートＱＲＡＴＥを求める。これは、前述した式（１２）に従って算出される。
【０１２４】
ステップＳ３５２において、パージ輸送遅れテーブルＣＰＧＤＬＹＲＸをアクセスし、エンジン回転数ＮＥに基づいてパージ輸送遅れＣＰＧＤＬＹＲＸを求める。前述したように、パージ輸送遅れＣＰＧＤＬＹＲＸは、蒸発燃料がパージ制御弁を介してパージ通路にパージされてから、エンジンの吸気系に到達するまでの時間的遅れを示す。この実施例では、パージ輸送遅れＣＰＧＤＬＹＲＸは整数ｎで表される。図１０に、パージ輸送遅れテーブルＣＰＧＤＬＹＲＸテーブルの例を示す。該テーブルに示されるように、回転ＮＥが大きくなるほど、パージ輸送遅れＣＰＧＤＬＹＲＸも大きくなる。これは、エンジン回転数ＮＥが大きいほど、蒸発燃料がパージされてからエンジンの吸気系に到達するまでの間に実行される、内燃機関における吸入工程数が増加するからである。
【０１２５】
ステップＳ３５３において、リングバッファを１つだけシフトする。リングバッファは、たとえばＫＡＦＥＶＲＴ０〜ＫＡＦＥＶＲＴｆの１６個のバッファから構成される。リングバッファをシフトするということは、ＫＡＦＥＶＲＴ０〜ＫＡＦＥＶＲＴｅに格納されたデータを、ＫＡＦＥＶＲＴ１〜ＫＡＦＥＶＲＴｆにそれぞれシフトすることを示す。ＫＡＦＥＶＲＴｆに格納されていたデータを廃棄される。こうして、ＫＡＦＥＶＲＴ０を空にする。
【０１２６】
ステップＳ３５４において、パージ流量レートＱＲＡＴＥに、図４のステップＳ１２６で算出されたデューティレートＰＧＲＡＴＥを乗算したものを、バッファＫＡＦＥＶＲＴ０に格納する。こうして、ゼロ番目のバッファには、今回のサイクルで算出された「ＰＧＲＡＴＥ×ＱＲＡＴＥ」が格納される。１番目、２番目、．．．のバッファ（すなわち、ＫＡＦＥＶＲＴ１、ＫＡＦＥＶＲＴ２、、、）には、それぞれ、前回、前々回、．．．のサイクルで算出された「ＰＧＲＡＴＥ×ＱＲＡＴＥ」が格納されている。
【０１２７】
ステップＳ３５５に進み、前述の式（１０）に従い、目標パージ補正係数ＫＡＦＥＶＡＣＺを求める。具体的には、ベーパ濃度係数ＫＡＦＥＶに、ステップＳ３５２で求めたパージ輸送遅れの値ｎに対応するＫＡＦＥＶＲＴｎを乗算し、目標パージ補正係数ＫＡＦＥＶＡＣＺを算出する。たとえば、パージ輸送遅れＣＰＧＤＬＹＲＸが「４」ならば、バッファＫＡＦＥＶＲＴ４に格納されたＫＡＦＥＶＲＴの値が使用される。
【０１２８】
図９は、ベーパ濃度係数ＫＡＦＥＶを求めるフローチャートである。このフローチャートは、一定の時間間隔（たとえば１０ミリ秒）ごとに繰り返し実行される。
【０１２９】
ステップＳ４０１において、現在空燃比フィードバック制御が実行されているかどうか判断する。フィードバック制御中でなければこのルーチンを抜け、フィードバック制御中ならばステップＳ４０２に進む。ステップＳ４０２において、パージ流量ＱＰＧＣがゼロならば、今回のサイクルでは蒸発燃料をパージしないことを示すので、このルーチンを抜ける。パージ流量ＱＰＧＣがゼロでなければ、ステップＳ４０３に進む。
【０１３０】
ステップＳ４０３およびＳ４０４において、ＤＫＡＦＥＶＸＨテーブルおよびＤＫＡＦＥＶＸＬテーブルをアクセスし、吸入空気量ＱＡＩＲに基づいて高側判定値ＤＫＡＦＥＶＸＨおよび低側判定値ＤＫＡＦＥＶＸＬをそれぞれ求める。図１１は、このテーブルの例を示す。高側および低側判定値ＤＫＡＦＥＶＸＨおよびＤＫＡＦＥＶＸＬは、吸入空気量ＱＡＩＲが大きくなるほど小さくなるよう設定される。
【０１３１】
ステップＳ４０５において、空燃比学習値ＫＲＥＦＸと低側判定値ＤＫＡＦＥＶＸＬの差が空燃比補正係数ＫＡＦより大きく、かつステップＳ４０６において、実空燃比係数ＫＡＣＴが目標空燃比係数ＫＣＭＤより大きければ、パージによる影響で空燃比が目標空燃比に対してリッチ状態にあることを示す。したがって、ベーパ濃度係数ＫＡＦＥＶを、所定値ＤＫＥＶＡＰＯＰ（たとえば、０．０５）だけ増やす（Ｓ４０７）。
【０１３２】
一方、空燃比学習値ＫＲＥＦＸに高側判定値ＤＫＡＦＥＶＸＨを足したものが、空燃比補正係数ＫＡＦより小さく（Ｓ４０８）、かつ実空燃比係数ＫＡＣＴが目標空燃比係数ＫＣＭＤより小さければ（Ｓ４０９）、空燃比が目標空燃比に対してリーン状態にあることを示す。したがって、ベーパ濃度係数ＫＡＦＥＶを所定値ＤＫＥＶＡＰＯＭ（たとえば、０．０８）だけ減らす（Ｓ４１０）。
【０１３３】
ステップＳ４０５およびＳ４０８の両方の判断ステップがＮｏであるとき、空燃比補正係数ＫＡＦが、高側判定値ＤＫＡＦＥＶＸＨと低側判定値ＤＫＡＦＥＶＸＬの間にあることを示す。この場合、ステップＳ４１１〜Ｓ４１４において、学習値ＫＲＥＦおよびＫＲＥＦＸの差に応じて、ベーパ濃度係数ＫＡＦＥＶを求める。学習値ＫＲＥＦが学習値ＫＲＥＦＸより小さければステップＳ４１２に進み、学習値ＫＲＥＦが学習値ＫＲＥＦＸ以上ならばステップＳ４１４に進む。
【０１３４】
ステップＳ４１２において、空燃比補正係数ＫＡＦが学習値ＫＲＥＦＸより小さければ、パージの影響で空燃比がリッチ側に傾いていることを示す。学習値ＫＲＥＦＸからＫＲＥＦを引いた値に所定値ＣＡＦＥＶ（たとえば、０．０２）を乗算した値を加算することにより、ベーパ濃度係数ＫＡＦＥＶを更新する。この場合、ＫＲＥＦ＜ＫＲＥＦＸなので、ベーパ濃度係数ＫＡＦＥＶは大きくなる。
【０１３５】
一方、ステップＳ４１４において空燃比補正係数ＫＡＦが学習値ＫＲＥＦＸより大きければ、空燃比がリーン側に傾いていることを示す。学習値ＫＲＥＦＸからＫＲＥＦを引いた値に所定値を乗算した値を加算することにより、ベーパ濃度係数ＫＡＦＥＶを更新する。この場合、ＫＲＥＦ＞ＫＲＥＦＸなので、ベーパ濃度係数ＫＡＦＥＶは小さくなる。
【０１３６】
以上、本発明の好ましい実施形態について説明してきた。本発明は、リーク判定を実施するためにパージ制御弁を開いて蒸発燃料排出抑止系を減圧する形態だけでなく、他の目的のために該系を減圧する他の形態にも適用されることができる。
【０１３７】
【発明の効果】
この発明によれば、蒸発燃料排出抑止系についてリーク判定を実施するためにパージ制御弁を大きく開弁して多量の蒸発燃料がパージされた場合でも、燃料噴射量に対する適切な補正を迅速に行うことができ、よって適切な空燃比を実現することができる。
【図面の簡単な説明】
【図１】この発明の一実施例に従う、内燃機関およびその制御装置を概略的に示す図。
【図２】この発明の一実施例に従う、内燃機関の制御装置の機能ブロック図。
【図３】この発明の一実施例に従う、吸入空気量ＱＡＩＲを算出するフローチャート。
【図４】この発明の一実施例に従う、パージ制御弁を駆動するためのデューティＰＧＣＭＤを算出するフローチャート。
【図５】この発明の一実施例に従う、パージ流量ＱＰＧＣを算出するフローチャート。
【図６】この発明の一実施例に従う、空燃比補正係数ＫＡＦを算出するフローチャート。
【図７】この発明の一実施例に従う、パージ補正係数ＫＡＦＥＶＡＣＴを算出するフローチャート。
【図８】この発明の一実施例に従う、目標パージ補正係数ＫＡＦＥＶＡＣＺを算出するフローチャート。
【図９】この発明の一実施例に従う、ベーパ濃度係数ＫＡＦＥＶを算出するフローチャート。
【図１０】この発明の一実施例に従う、エンジン回転数ＮＥに基づくパージ輸送遅れを求めるためのＣＰＧＤＬＹＲＸテーブルの例を示す図。
【図１１】この発明の一実施例に従う、吸入空気量ＱＡＩＲに基づく、空燃比学習値の高側および低側判定値ＤＫＡＦＥＶＸＨおよびＤＫＡＦＥＶＸＬを求めるためのテーブルの例を示す図。
【符号の説明】
１  エンジン      ２  吸気管
５  ＥＣＵ        ６  燃料噴射弁
９  燃料タンク    ２７  パージ通路
３０  パージ制御弁
【図１】
0003970655.tif 000012
【図２】
0003970655.tif 000013
【図３】
0003970655.tif 000014
【図４】
0003970655.tif 000015
【図５】
0003970655.tif 000016
【図６】
0003970655.tif 000017
【図７】
0003970655.tif 000018
【図８】
0003970655.tif 000019
【図９】
0003970655.tif 000020
【図１０】
0003970655.tif 000021
【図１１】
0003970655.tif 000022