(57)【要約】【課題】  燃料供給系の異常を速やかに検出できるようにする。【解決手段】  （１）空燃比センサ２８で検出した空燃比λと目標空燃比λＴＧとの差と（２）空燃比補正係数ＦＡＦ（フィードバック補正量）と（３）学習補正量ＫＧｊとを燃料供給系の異常診断データとして用い、これら３つの異常診断データ（１）〜（３）を合計して異常診断パラメータを求める。その後、この異常診断パラメータをなまし処理し、そのなまし値を異常診断基準値と比較して燃料供給系の異常の有無を診断する。これにより、学習補正量ＫＧｊが更新されなくても、実空燃比λと目標空燃比λＴＧとの差と空燃比補正係数ＦＡＦとから、燃料供給系の異常（つまり実空燃比λの異常なずれ）を速やかに検出することができる。異常診断基準値は、吸入空気量Ｇａ等のエンジン運転パラメータに応じてマップ等により求める。【選択図】      図１
2004278542.tif 000002
【特許請求の範囲】
【請求項１】
排ガスの空燃比（以下「実空燃比」という）を検出する空燃比検出手段と、
機関運転状態に基づいて基本燃料噴射量を設定する基本燃料噴射量設定手段と、
目標空燃比からの実空燃比のずれ量を補正する補正量を学習して該学習補正量を更新記憶する学習手段と、
実空燃比を目標空燃比に一致させるように空燃比のフィードバック補正量を設定する空燃比フィードバック手段と、
前記基本燃料噴射量と前記学習補正量と前記フィードバック補正量とに基づいて要求燃料噴射量を設定する要求燃料噴射量設定手段と、
前記要求燃料噴射量に基づいて燃料を噴射する燃料噴射装置とを備えた内燃機関において、
前記実空燃比と目標空燃比との差と前記学習補正量と前記フィードバック補正量とに基づいて前記燃料噴射装置を含む燃料供給系の異常の有無を診断する噴射異常診断手段とを備え、
前記噴射異常診断手段は、前記実空燃比と目標空燃比との差と前記学習補正量と前記フィードバック補正量とを合計し、その合計値に基づいて前記燃料供給系の異常の有無を診断することを特徴とする内燃機関の燃料供給系異常診断装置。
【請求項２】
前記噴射異常診断手段は、前記合計値をなまし処理し、そのなまし値に基づいて前記燃料供給系の異常の有無を診断することを特徴とする請求項１に記載の内燃機関の燃料供給系異常診断装置。
【請求項３】
前記噴射異常診断手段は、前記燃料供給系の異常の有無を診断する際に用いる異常診断基準値を機関運転状態に基づいて設定することを特徴とする請求項１又は２のいずれか一方に記載の内燃機関の燃料供給系異常診断装置。
【請求項４】
燃料タンク内から蒸発する燃料蒸発ガスを吸着し、この燃料蒸発ガスを内燃機関の吸気系に導入する燃料蒸発ガスパージシステムを備え、
前記燃料蒸発ガスパージシステムから吸気系に導入される燃料蒸発ガス濃度が所定値以上の場合に前記噴射異常診断手段による前記燃料供給系の異常診断を禁止する診断禁止手段を備えていることを特徴とする請求項１乃至３のいずれかに記載の内燃機関の燃料供給系異常診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、燃料供給系の異常の有無を診断する内燃機関の燃料供給系異常診断装置に関するものである。
【背景技術】
【０００２】
例えば、特許文献１に記載された燃料供給系異常診断装置では、目標空燃比からの実空燃比のずれ量を補正する補正量（補正係数）を学習して得られた学習補正量を異常診断データとして用い、この学習補正量を基本燃料噴射量が略等しい運転領域毎に平均化し、この学習補正量の平均値を基本燃料噴射量が異なる運転領域の学習補正量の平均値と比較して燃料供給系の異常の有無を診断するようにしている。
【０００３】
また、特許文献２に記載された燃料供給系異常診断装置では、学習補正量と空燃比のフィードバック補正量を異常診断データとして用い、学習補正量とフィードバック補正量とが共に空燃比制御範囲の上下限値（ガード値）に張り付いた状態が所定時間継続するか否かで、燃料供給系の異常の有無を診断するようにしている。
【特許文献１】特開平４−１７１２３７号公報
【特許文献２】米国特許第５，０９，２１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した２つの燃料供給系異常診断装置は、いずれも、学習補正量を異常診断データとして用いるが、学習補正量の更新は、誤学習を防止するために、一般的には極めて更新速度が遅く設定されている。このため、学習補正量が更新されるまでの期間が比較的長く、この期間に燃料供給系の異常が発生しても、学習補正量が更新されるまで燃料供給系の異常を検出することができない。また、空燃比がフィードバック補正量以上になった場合は、学習補正量の更新が禁止されることがあり、この場合は、空燃比がフィードバック補正量以下になるまで燃料供給系の異常を検出することができない。要するに、従来の燃料供給系異常診断装置では、異常診断が学習補正量の更新時期に左右されてしまい、燃料供給系の異常を速やかに検出することができないことがあるという欠点がある。
【０００５】
そこで、本発明の目的は、学習補正量が更新されなくても、燃料供給系の異常が発生した時には、その異常を速やかに検出することができる内燃機関の燃料供給系異常診断装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の請求項１の内燃機関の燃料供給系異常診断装置は、機関運転状態に基づいて設定した基本燃料噴射量と学習補正量とフィードバック補正量とに基づいて要求燃料噴射量を要求燃料噴射量設定手段により設定し、この要求燃料噴射量に基づいて燃料噴射装置により燃料を噴射する内燃機関において、（１）実空燃比と目標空燃比との差と（２）学習補正量と（３）フィードバック補正量とを燃料供給系の異常診断データとして用い、これら３つの異常診断データ（１）〜（３）に基づいて燃料供給系の異常の有無を噴射異常診断手段により診断する。このようにすれば、たとえ（２）学習補正量が更新されなくても、（１）実空燃比と目標空燃比との差と（３）フィードバック補正量とから、燃料供給系の異常（つまり実空燃比の異常なずれ）を速やかに検出することができ、異常診断の信頼性を向上することができる。
【０００７】
更に、請求項１の内燃機関の燃料供給系異常診断装置は、上述した３つの異常診断データ（１）〜（３）を合計し、その合計値（（１）＋（２）＋（３））に基づいて燃料供給系の異常の有無を診断する。このようにするので、異常診断のロジックが極めて簡単である。
【０００８】
この場合、請求項２のように、３つの異常診断データ（１）〜（３）の合計値をなまし処理し、そのなまし値に基づいて燃料供給系の異常の有無を診断するようにしても良い。このようにすれば、ノイズ等による瞬間的な空燃比検出値の変動や過渡運転時の急激な機関運転状態の変動等の影響を受けずに安定した異常診断が可能となり、異常診断精度を向上することができる。
【０００９】
更に、請求項３のように、燃料供給系の異常の有無を診断する際に用いる異常診断基準値を機関運転状態に基づいて設定するようにしても良い。このようにすれば、機関運転状態に応じた最適な異常診断基準値を設定することが可能となり、異常診断精度を向上することができる。
【００１０】
また、燃料蒸発ガスパージシステムから吸気系に導入される燃料蒸発ガス濃度が高いと、その影響で実空燃比のずれが一時的に大きくなって、異常有りと誤診断されるおそれがあるため、請求項４のように、吸気系に導入される燃料蒸発ガス濃度が所定値以上の場合に異常診断を診断禁止手段によって禁止するようにしても良い。このようにすれば、燃料蒸発ガス濃度の影響をあまり受けない安定した運転条件下で異常診断を実施でき、異常診断の信頼性を向上できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態を図面に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側には、吸気温度ＴＨＡを検出する吸気温度センサ１４と、吸入空気量Ｇａを検出するエアフローメータ１０とが設けられている。このエアフローメータ１０の下流側には、スロットルバルブ１５とスロットル開度ＴＨを検出するスロットル開度センサ１６とが設けられている。
【００１２】
更に、スロットルバルブ１５の下流側には、吸気管圧力ＰＭを検出する吸気管圧力センサ１７が設けられ、この吸気管圧力センサ１７の下流側にサージタンク１８が設けられている。このサージタンク１８には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が接続され、この吸気マニホールド１９の各気筒の分岐管部に、それぞれ燃料を噴射する燃料噴射弁２０（燃料噴射装置）が取り付けられている。この燃料
噴射弁２０は、燃料タンク４０、燃料ポンプ（図示せず）等と共に燃料供給系を構成し、燃料タンク４０内から燃料ポンプで汲み上げた燃料が燃料配管（図示せず）を通して各気筒の燃料噴射弁２０に分配される。
【００１３】
また、燃料タンク４０内から蒸発する燃料蒸発ガスは、連通管４１を通してキャニスタ４２内の活性炭等の吸着体（図示せず）に吸着される。このキャニスタ４２と吸気管１２との間には、キャニスタ４２内に吸着されている燃料蒸発ガスを吸気管１２にパージ（放出）するためのパージ配管４４が設けられ、このパージ配管４４の途中にパージ流量を調整するパージ制御弁４５が設けられている。これらキャニスタ４２、パージ制御弁４５、パージ配管４４等から燃料パージシステム４６が構成されている。
【００１４】
また、エンジン１１には各気筒毎に点火プラグ２１が取り付けられ、各点火プラグ２１には、点火回路２２で発生した高圧電流がディストリビュータ２３を介して供給される。このディストリビュータ２３には、７２０℃Ａ（クランク軸２回転）毎に例えば２４個のパルス信号を出力するクランク角センサ２４が設けられ、このクランク角センサ２４の出力パルス間隔によってエンジン回転数Ｎｅを検出するようになっている。また、エンジン１１には、エンジン冷却水温ＴＨＷを検出する水温センサ３８が取り付けられている。
【００１５】
一方、エンジン１１の排気ポート（図示せず）には、排気マニホールド２５を介して排気管２６が接続され、この排気管２６の途中に排ガス中の有害成分（ＣＯ，ＨＣ，ＮＯｘ等）を低減させる三元触媒等の触媒２７が設けられている。この触媒２７の上流側には、排ガスの空燃比に応じたリニアな空燃比信号λを出力する空燃比センサ２８（空燃比検出手段）が設けられている。また、触媒２７の下流側には、排ガスの空燃比が理論空燃比に対してリッチかリーンかによって出力電圧Ｒ／Ｌが反転する酸素センサ２９が設けられている。
【００１６】
上述した各種のセンサの出力はエンジン制御回路３０内に入力ポート３１を介して読み込まれる。このエンジン制御回路３０は、マイクロコンピュータを主体として構成され、ＣＰＵ３２、ＲＯＭ３３（記憶媒体）、ＲＡＭ３４、バッテリ（図示せず）でバックアップされたバックアップＲＡＭ３５等を備え、ＲＯＭ３３に記憶された後述する図２、図４及び図７に示す燃料噴射制御用のプログラムや点火制御プログラム（図示せず）を実行することで、各種センサで検出されたエンジン運転パラメータを用いて要求燃料噴射量ＴＡＵや点火時期Ｉｇ等を演算し、その演算結果に応じた信号を出力ポート３６から燃料噴射弁２０や点火回路２２に出力してエンジン１１の運転を制御する。
【００１７】
更に、このエンジン制御回路３０は、後述する図８乃至図１２に示す燃料供給系異常診断用の各プログラムや、これらのプログラムに用いる図１３の異常診断基準値マップや初期値等をＲＯＭ３３に記憶し、これら図８乃至図１２に示す各プログラムを実行することで、（１）実空燃比と目標空燃比との差と（２）学習補正量と（３）フィードバック補正量とに基づいて燃料供給系の異常の有無を診断し、燃料供給系の異常有りと診断した時には、出力ポート３６から警告ランプ３７に点灯信号を出力して警告ランプ３７を点灯し、運転者に警告する。
【００１８】
以下、このエンジン制御回路３０が実行する各種プログラムの処理の流れを説明する。
【００１９】
［空燃比制御］
図２に示す空燃比制御プログラムは、空燃比のフィードバック制御を通じて要求燃料噴射量ＴＡＵを設定するプログラムであり、所定クランク角毎（例えば３６０℃Ａ毎）に起動される。本プログラムが起動されると、まずステップ１０１で、前記各種センサからの検出信号（例えばエンジン回転数Ｎｅ、吸気管圧力ＰＭ、冷却水温ＴＨＷ、空燃比λ、排ガス中の酸素濃度Ｒ／Ｌ等）を読み込む。この後、ステップ１０２で、エンジン運転状態（エンジン回転数Ｎｅと吸気管圧力ＰＭ等）に応じてマップ等から基本燃料噴射量Ｔｐを演算する。このステップ１０２の処理が特許請求の範囲でいう基本燃料噴射量設定手段として機能する。
【００２０】
そして、次のステップ１０３で、空燃比フィードバック条件が成立しているか否かを判定する。ここで、空燃比フィードバック条件は、次の（Ａ１）〜（Ａ４）の条件を全て満たした時に成立し、１つでも満たさない条件があれば、不成立となる。
【００２１】
（Ａ１）各種の燃料増量補正が行われていないこと
（Ａ２）燃料カット中でないこと
（Ａ３）高負荷運転中でないこと
（Ａ４）空燃比センサ２８が活性化していること
尚、上記（Ａ４）の空燃比センサ２８の活性化の有無は、例えば、1)冷却水温ＴＨＷが所定温度（例えば３０℃）以上となっているか否かで判定したり、2)始動後の経過時間が所定時間以上となっているか否かで判定したり、3)実際に空燃比センサ２８から出力λが出たか否かで判定したり、或は、4)空燃比センサ２８の素子インピーダンス（素子温相当）を検出してその素子インピーダンスから判定しても良い。
【００２２】
上記ステップ１０３で、空燃比フィードバック条件が不成立と判定された場合には、ステップ１０４に進み、空燃比補正係数ＦＡＦ（フィードバック補正量に相当）を「１．０」に設定して、ステップ１０９に進む。この場合は、空燃比の補正は行われない。
【００２３】
一方、上記ステップ１０３で、空燃比フィードバック条件成立と判定された場合には、ステップ１０５に進み、触媒２８が活性化しているか否かを判定する。この触媒２８の活性の有無は、例えば、冷却水温ＴＨＷが所定温度（例えば４０℃）以上となっているか否かで判定する。このステップ１０５で、触媒２８が活性化していると判定された時には、ステップ１０６に進み、後述する図４の目標空燃比設定プログラムを実行し、触媒２８下流の酸素センサ２９の出力Ｒ／Ｌに基づいて目標空燃比λＴＧを設定してから、ステップ１０８に進む。
【００２４】
これに対し、上記ステップ１０５において、触媒２８が活性化していないと判定された時には、ステップ１０７に進み、図３に示す冷却水温ＴＨＷをパラメータとする目標空燃比マップを検索して、その時点の冷却水温ＴＨＷに応じた目標空燃比λＴＧを設定してステップ１０８に進む。
【００２５】
以上のようにして、ステップ１０６又は１０７で目標空燃比λＴＧを設定した後、ステップ１０８に進み、目標空燃比λＴＧと空燃比センサ２８の出力λ（空燃比）とに基づいて空燃比補正係数ＦＡＦを次式により算出する。
【００２６】
ＦＡＦ（ｋ）＝Ｋ１・λ（ｋ）＋Ｋ２・ＦＡＦ（ｋ−３）＋Ｋ３・ＦＡＦ（ｋ−２）＋Ｋ４・ＦＡＦ（ｋ−１）＋ＺＩ（ｋ）
但し、ＺＩ（ｋ）＝ＺＩ（ｋ−１）＋Ｋａ・｛λＴＧ−λ（ｋ）｝
ここで、ｋは最初のサンプリング開始からの制御回数を示す変数、Ｋ１〜Ｋ４は最適フィードバック定数、Ｋａは積分定数である。このステップ１０８の処理が特許請求の範囲でいう空燃比フィードバック手段として機能する。
【００２７】
そして、次のステップ１０９で、基本燃料噴射量Ｔｐ、空燃比補正係数ＦＡＦ、バックアップＲＡＭ３５に格納されている空燃比の学習補正量ＫＧｊのうちの現在の運転領域に属する学習補正量ＫＧｊとを用いて、次式の演算を実行し、要求燃料噴射量ＴＡＵを算出して、本プログラムを終了する。
【００２８】
ＴＡＵ＝Ｔｐ・ＦＡＦ・ＫＧｊ・ＦＡＬＬ
ここで、ＦＡＬＬは、空燃比補正係数ＦＡＦと学習補正量ＫＧｊによらない他の補正係数（例えばエンジン温度による補正係数、加減速時の補正係数等）である。このステップ１０９の処理が特許請求の範囲でいう要求燃料噴射量設定手段として機能する。
【００２９】
［目標空燃比設定］
図４に示す目標空燃比設定プログラムは、図２の空燃比制御プログラムのステップ１０６で実行されるサブルーチンである。本プログラムが起動されると、まずステップ１１１〜１１３で、酸素センサ２９の出力Ｒ／Ｌに基づいて、実際の空燃比と空燃比センサ２８の出力λ（検出した空燃比）とのずれを補正するように、目標空燃比の中央値λＴＧＣを設定する。具体的には、まずステップ１１１で、酸素センサ２９の出力Ｒ／Ｌがリッチ（Ｒ）かリーン（Ｌ）かを判別し、リッチ（Ｒ）の場合は、ステップ１１２に進み、中央値λＴＧＣを所定値λＭだけ大きく、すなわちλＭだけリーンに設定する（λＴＧＣ←λＴＧＣ＋λＭ）。
【００３０】
一方、酸素センサ２９の出力Ｒ／Ｌがリーン（Ｌ）の場合は、ステップ１１３に進み、中央値λＴＧＣを所定値λＭだけ小さく、すなわちλＭだけリッチに設定する（λＴＧＣ←λＴＧＣ一λＭ）。図５は、このような酸素センサ２９の出力Ｒ／Ｌに基づいて目標空燃比の中央値λＴＧＣを設定する場合の一例を示している。
【００３１】
以上のようにして、目標空燃比の中央値λＴＧＣを設定した後、ステップ１１４〜１２３で、いわゆるディザ制御により目標空燃比λＴＧを次のようにして設定する。まず、ステップ１１４で、ディザ周期カウンタのカウント値ＣＤＺＡがディザ周期ＴＤＺＡ以上となっているか否かを判定する。このディザ周期ＴＤＺＡは、当該ディザ制御の分解能を決定する因子であり、後述するステップ１１８の処理により、エンジン１１の運転状態に対応した望ましい値がその都度設定される。
【００３２】
もし、ディザ周期カウンタのカウント値ＣＤＺＡがディザ周期ＴＤＺＡよりも小さければ、ステップ１１５に進み、ディザ周期カウンタのカウント値ＣＤＺＡを１インクリメントして、ステップ１２３の処理を実行する。この場合は、目標空燃比λＴＧの値を更新することなく、その時点で設定されている目標空燃比λＴＧの値を維持する。
【００３３】
一方、ディザ周期カウンタのカウント値ＣＤＺＡがディザ周期ＴＤＺＡ以上であれば、ステップ１１６に進み、ディザ周期カウンタのカウント値ＣＤＺＡを「０」にリセットした後、ディザ制御により目標空燃比λＴＧが前記中央値λＴＧＣを中心にしてリッチ／リーン側に交互に階段状に変化するように、以下の処理を実行する。
【００３４】
まず、ステップ１１７，１１８で、ディザ振幅λＤＺＡとディザ周期ＴＤＺＡを設定する。ここで、ディザ振幅λＤＺＡは、ディザ制御の制御量を決定する因子であり、ディザ周期ＴＤＺＡと同じく、エンジン１１の運転状態に対応した望ましい値がその都度設定される。これらディザ振幅λＤＺＡとディザ周期ＴＤＺＡは、エンジン回転数Ｎｅと吸気管圧力ＰＭとをパラメータとする２次元マップ（図示せず）を検索して、その時点のエンジン回転数Ｎｅと吸気管圧力ＰＭに対応するディザ振幅λＤＺＡとディザ周期ＴＤＺＡを求める。
【００３５】
この後、ステップ１１９で、ディザ処理フラグＸＤＺＲが「０」であるか否かを判定する。このディザ処理フラグＸＤＺＲは、目標空燃比中央値λＴＧＣに対して目標空燃比λＴＧをリッチに設定する場合にＸＤＺＲ＝１にセットし、リーンに設定する場合にＸＤＺＲ＝０にリセットする。
【００３６】
上記ステップ１１９で、ＸＤＺＲ＝０と判定された場合、つまり前回のディザ制御で目標空燃比中央値λＴＧＣに対して目標空燃比λＴＧがリーンに設定されている場合には、ステップ１２０に進み、今回のディザ制御で目標空燃比λＴＧがリッチに設定されるように、ディザ処理フラグＸＤＺＲを「１」にセットする。これに対し、上記ステップ１１９で、ＸＤＺＲ＝１と判定された場合、つまり前回のディザ制御で目標空燃比中央値λＴＧＣに対して目標空燃比λＴＧがリッチに設定されている場合には、ステップ１２１に進み、今回のディザ制御で目標空燃比λＴＧがリーンに設定されるように、ディザ処理フラグＸＤＺＲを「０」にリセットする。
【００３７】
このようにして、ステップ１２０又は１２１で、ディザ処理フラグＸＤＺＲを反転させ、更に、ＸＤＺＲ＝１の場合には、ステップ１２２で、ディザ振幅λＤＺＡを−値に反転させる（ＸＤＺＲ＝０の場合はステップ１１２又は１１３で設定したディザ振幅λＤＺＡをそのまま用いる）。この後、ステップ１２３で、目標空燃比中央値λＴＧＣとディザ振幅λＤＺＡとから目標空燃比λＴＧを設定する。例えば、前回のディザ制御で目標空燃比中央値λＴＧＣに対して目標空燃比λＴＧがリーンに設定された場合には、今回のディザ制御で、目標空燃比λＴＧを中央値λＴＧＣに対してディザ振幅λＤＺＡだけリッチに設定するように、次式により目標空燃比λＴＧを算出する。λＴＧ＝λＴＧＣ−λＤＺＡ
逆に、前回のディザ制御で目標空燃比中央値λＴＧＣに対して目標空燃比λＴＧがリッチに設定された場合には、今回のディザ制御で、目標空燃比λＴＧを中央値λＴＧＣに対してディザ振幅λＤＺＡだけリーンに設定するように、次式により目標空燃比λＴＧを算出する。
【００３８】
λＴＧ＝λＴＧＣ＋λＤＺＡ
このようなディザ制御により、図６に示すように、目標空燃比λＴＧが中央値λＴＧＣを中心にしてリッチ／リーン側に交互にディザ振幅λＤＺＡだけ階段状に変化するように設定される。
【００３９】
［空燃比学習］
図７に示す空燃比学習プログラムは、所定クランク角毎に起動され、特許請求の範囲でいう学習手段として機能する。本プログラムが起動されると、まずステップ２０１で、後述する例えば８つの運転領域０〜７についての空燃比学習が全て終了したか否かを判定する。この判定は、各運転領域０〜７に対応した学習フラグＸＤＯＭ０〜ＸＤＯＭ７が学習終了を意味する「１」であるか否かによって行われる。８つの運転領域０〜７の空燃比学習が全て終了している場合（ＸＤＯＭ０〜ＸＤＯＭ７＝１の場合）には、ステップ２０３に進み、学習終了フラグＸＡＦＬＮを全領域学習終了を意味する「１」にセットする。
【００４０】
一方、運転領域０〜７のうちのいずれか１つでも空燃比学習が終了していない場合には、ステップ２０１からステップ２０２に進み、学習終了フラグＸＡＦＬＮを「０」にリセットする。
【００４１】
この後、ステップ２０４で、下記の（Ｂ１）〜（Ｂ６）の学習条件が成立しているか否かを判定する。
【００４２】
（Ｂ１）空燃比フィードバック制御中であること
（Ｂ２）冷却水温ＴＨＷが例えば８０℃以上であること
（Ｂ３）始動後増量が「０」であること
（Ｂ４）暖機増量が「０」であること
（Ｂ５）現在の運転領域に入ってから所定クランク角だけ経過していること
（Ｂ６）バッテリ電圧が例えば１１．５Ｖ以上であること
これら（Ｂ１）〜（Ｂ６）の条件を１つでも満たさないものがあれば、学習条件が不成立となり、ステップ２０５以降の学習処理を行うことなく、本プログラムを終了する。
【００４３】
一方、（Ｂ１）〜（Ｂ６）の条件を全て満たせば、学習条件が成立し、ステップ２０５以降の学習処理を次のようにして実行する。まずステップ２０５で、ＲＡＭ３４に格納されている空燃比補正係数ＦＡＦの平均値ＦＡＦＡＶを読み込んだ後、ステップ２０６で、アイドル時（ＩＤＬＯＮ）であるか否かを判定し、アイドル時か走行時かに応じて、以下のような学習処理を実行する。
【００４４】
すなわち、走行時である場合には、ステップ２０７に進み、その時点のエンジン回転数Ｎｅが１０００〜３２００ｒｐｍの範囲内（安定した走行状態）であるか否かを判定し、範囲外であれば、以降の処理を行うことなく、本プログラムを終了する。一方、エンジン回転数Ｎｅが１０００〜３２００ｒｐｍの範囲内であれば、学習処理が可能と判断して、ステップ２０８に進み、エンジン１１の運転領域が「１」〜「７」のいずれの領域に該当するか判定する。この運転領域の判定は、エンジン１１の負荷（例えば吸気管圧力ＰＭ）に基づいて行われ、該負荷の大きさに応じて、運転領域「１」〜「７」のいずれかの領域を当該学習処理領域として設定する。この後、ステップ２０９で、上記ステップ２０８で設定した領域ｉ（ｉは「１」〜「７」のいずれか）に対応する学習フラグＸＤＯＭｉをセットする。
【００４５】
一方、ステップ２０６において、アイドル時と判定された場合には、（１）エンジン回転数Ｎｅが例えば６００〜１０００ｒｐｍの範囲内（安定したアイドル状態）であるか否か（ステップ２１０）、また、（２）吸気管圧力ＰＭが例えば１７３ｍｍＨｇより高いか否かを判定する（ステップ２１１）。これら２つの条件（１），（２）のいずれか一方でも満たさなければ、以降の処理を行うことなく、本プログラムを終了する。
【００４６】
これに対し、２つの条件（１），（２）を共に満たせば、学習処理が可能であると判断して、ステップ２１２に進み、その運転領域を領域「０」に設定した後、ステップ２１３で、上記ステップ２１２で設定した領域「０」に対応する学習フラグＸＤＯＭ０をセットする。
【００４７】
以上のようにして、現在の運転状態に応じて学習フラグＸＤＯＭｉ又はＸＤＯＭ０をセットした後、ステップ２１４〜２１７で、空燃比の学習補正量ＫＧｊ（ｊ＝０〜７）の設定、又は既に設定した学習補正量ＫＧｊの更新を実行する。この学習処理は、まずステップ２１４で、前記ステップ２０５で読み込んだ空燃比補正係数の平均値ＦＡＦＡＶの基準値（１．０）からのずれ量（１−ＦＡＦＡＶ）を判定し、ずれ量が所定値（例えば２％）以上であれば、当該領域の学習補正量ＫＧｊを所定値Ｋ％だけ補正し（ステップ２１５）、ずれ量が所定値（例えば一２％）以下であれば、当該領域の学習補正量ＫＧｊを所定値Ｌ％だけ補正する（ステップ２１７）。もし、ずれ量が上記所定値内であれば、当該領域の学習補正量ＫＧｊを維持する（ステップ２１６）。
【００４８】
この後、ステップ２１８で、上記ステップ２１５〜２１７で設定（更新）した学習補正量ＫＧｊの上下限チェック（ガード処理）を実行する。この上下限チェックでは、学習補正量ＫＧｊの上限値が例えば「１．２」に設定され、下限値が例えば「０．８」に設定される。これら上下限値は、上述したエンジン１１の運転領域毎に設定しても良い。このようにして設定された学習補正量ＫＧｊは、バックアップＲＡＭ３５に運転領域毎に格納される。
【００４９】
［燃料蒸発ガス濃度検出］
燃料蒸発ガス濃度検出は、図８に示す燃料蒸発ガス濃度検出プログラムに従って例えば４ｍｓｅｃ毎の割込み処理により実行される。本プログラムの処理が開始されると、まずステップ２２１で、キースイッチ投入時であるか否かを判別する。キースイッチ投入時であれば、ステップ２３５〜２３７で各データを初期化し、燃料蒸発ガス濃度ＦＬＰＲＧ＝０、燃料蒸発ガス濃度平均値ＦＬＰＲＧＡＶ＝０、初回濃度検出終了フラグＸＮＦＬＰＲＧ＝０にする。
【００５０】
ここで、燃料蒸発ガス濃度ＦＬＰＲＧ＝０、燃料蒸発ガス濃度平均値ＦＬＰＲＧＡＶ＝０は、燃料蒸発ガス濃度が「０」であること（換言すればキャニスタ３２に燃料蒸発ガスが全く吸着されていないこと）を意味する。エンジン始動時には初期化により吸着量が「０」に仮定される。初回濃度検出終了フラグＸＮＦＬＰＲＧ＝０は、エンジン始動後に未だ燃料蒸発ガス濃度が検出されていないことを意味する。
【００５１】
キースイッチ投入後は、ステップ２２２に進み、パージ実行フラグＸＰＲＧが「１」であるか否か、即ちパージ制御が開始されているか否かを判別する。ここで、ＸＰＲＧ＝０（パージ制御開始前）の場合には、そのまま本プログラムを終了する。一方、ＸＰＲＧ＝１（パージ制御開始後）の場合には、ステップ２２３に進み、車両が加減速中であるか否かを判定する。ここで、加減速中であるか否かの判定は、アイドルスイッチ（図示せず）のオフ、スロットルバルブ１３の弁開度変化、吸気管圧力変化、車速変化等の検出結果によって行われる。そして、加減速中であると判定されると、そのまま本プログラムを終了する。つまり、加減速中（エンジン運転の過渡状態）では燃料蒸発ガス濃度検出が禁止され、誤検出防止が図られる。
【００５２】
また、上記ステップ２２３で、加減速中でないと判定されると、ステップ２２４に進み、初回濃度検出終了フラグＸＮＦＰＧが「１」であるか否か、即ち燃料蒸発ガス濃度の初回検出が終了しているか否かを判定する。ここで、ＸＮＦＬＰＲＧ＝１（初回検出後）であれば、ステップ２２５に進み、ＸＮＦＰＧ＝０（初回検出前）であれば、ステップ２２５を飛び越してステップ２２６に進む。
【００５３】
最初は、燃料蒸発ガス濃度検出が終了していないので（ＸＮＦＬＰＲＧ＝０）、ステップ２２４からステップ２２６に進み、パージ制御量ＡＦＰＲＧのなまし値ＡＦＰＲＧＳＭが基準値（＝１）からどの程度ずれているか判定し、ＡＦＰＲＧＳＭ−１＜−０．０２の場合は、ステップ２２８に進み、前回の燃料蒸発ガス濃度ＦＬＰＲＧ（ｉ−１）から所定値ｂを減算した値を今回の燃料蒸発ガス濃度ＦＬＰＲＧとする。また、−０．０２≦ＡＦＰＲＧＳＭ−１≦＋０．０２の場合は、ステップ２２９に進み、前回の燃料蒸発ガス濃度ＦＬＰＲＧ（ｉ−１）をそのまま今回の燃料蒸発ガス濃度ＦＬＰＲＧとする。また、ＡＦＰＲＧＳＭ−１＞＋０．０２の場合は、ステップ２３０に進み、前回の燃料蒸発ガス濃度ＦＬＰＲＧ（ｉ−１）に所定値ａを加算した値を今回の燃料蒸発ガス濃度ＦＬＰＲＧとする。この場合、所定値ａは所定値ｂよりも小さい値に設定されている。これは、燃料蒸発ガス濃度が低いときには、パージしても濃度が徐々にしか下がらないためである。
【００５４】
前述した初期化処理により、燃料蒸発ガス濃度ＦＬＰＲＧの初期値は「０」に設定され（ステップ２３５）、上記ステップ２２６〜２３０の処理によりパージ制御量なまし値ＡＦＰＲＧＳＭのずれ量に応じて燃料蒸発ガス濃度ＦＬＰＲＧの学習値が徐々に更新される。このステップ２２６〜２３０の処理が特許請求の範囲でいう学習手段としての役割を果たす。この燃料蒸発ガス濃度ＦＬＰＲＧの学習値の更新方法は、図９を参照すれば、一層理解が容易である。
【００５５】
このようにして燃料蒸発ガス濃度ＦＬＰＲＧの学習値を更新した後、ステップ２３１に進み、初回濃度検出終了フラグＸＮＦＬＰＲＧが初回濃度検出終了を意味する「１」であるか否かを判定する。ここで、ＸＮＦＬＰＲＧ＝０（初回濃度検出前）であれば、ステップ２３２に進み、燃料蒸発ガス濃度ＦＬＰＲＧの前回検出値と今回検出値との変化が所定値（例えば３％）以下の状態が例えば３回以上継続したか否かによって、燃料蒸発ガス濃度ＦＬＰＲＧが安定したか否かを判定する。燃料蒸発ガス濃度ＦＬＰＲＧが安定すると、次のステップ２３３に進み、初回濃度検出終了フラグＸＮＦＬＰＲＧに「１」をセットした後、ステップ２３４に進む。
【００５６】
一方、上記ステップ２３１で、ＸＮＦＬＰＲＧ＝１（初回濃度検出終了）の場合、又はステップ２３２で燃料蒸発ガス濃度ＦＬＰＲＧが安定していないと判定された場合、ステップ２３４へジャンプし、今回の燃料蒸発ガス濃度ＦＬＰＲＧを平均化するために、所定のなまし演算（例えば１／６４なまし演算）を実行し、燃料蒸発ガス濃度平均値ＦＬＰＲＧＡＶを求める。この燃料蒸発ガス濃度平均値ＦＬＰＲＧＡＶは、基本燃料噴射量に対するパージ補正係数を算出するのに用いられる。
【００５７】
このようにして初回濃度検出が終了すると（ＸＮＦＬＰＲＧ＝１がセットされると）、ステップ２２４が常に「Ｙｅｓ」と判定され、ステップ２２５に進んで、最終パージ率ＲＰＲＧが所定値β（例えば０％）を越えるか否かを判定する。そして、ＲＰＲＧ＞βの場合のみ、ステップ２２６以降の燃料蒸発ガス濃度の学習処理を実行する。つまり、パージ実行フラグＸＰＲＧが「１」にセットされていても、最終パージ率ＲＰＲＧが「０」となる場合があり、この場合は、実際にはパージが実施されないため、初回検出時以外は、ＲＰＲＧ＝０の場合に燃料蒸発ガス濃度の検出を行なわないようにしている。
【００５８】
尚、最終パージ率ＲＰＲＧが小さい場合、即ちパージ制御弁３５が低流量側で制御されている場合は開度制御の精度が比較的低く、燃料蒸発ガス濃度検出の信頼性が低い。そこで、ステップ２２５の所定値βをパージ制御弁３５の低開度域に設定し（例えば０％＜β＜２％）、初回検出時以外は、精度の良い検出条件が揃った場合のみ、燃料蒸発ガス濃度検出を行うようにしても良い。
【００５９】
［異常診断実行条件判定］
図１０に示す異常診断実行条件判定プログラムは、所定時間毎（例えば２５６ｍｓ毎）に起動され、次のようにして燃料供給系の異常診断実行条件が成立しているか否かを判定する。まず、ステップ３０１で、エンジン始動後の運転状態が安定したか否かを判定するために、エンジン始動後の経過時間が例えば６０秒を越えたか否かを判定し、経過時間が６０秒に達していなければ、運転状態がまだ不安定であると判断して、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして、本プログラムを終了する。
【００６０】
一方、エンジン始動後の経過時間が６０秒を越えている場合には、エンジン始動後の運転状態が安定していると判断して、ステップ３０１からステップ３０２に進み、空燃比フィードバック制御中（図２のステップ１０３で空燃比フィードバック条件が成立している時）であるか否かを判定し、空燃比フィードバック制御中でない場合は、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６１】
空燃比フィードバック制御中であれば、ステップ３０２からステップ３０３に進み、冷却水温ＴＨＷが例えば７０℃＜ＴＨＷ＜９０℃であるか否かを判定し、ＴＨＷ≦７０℃の場合（エンジン暖機完了前）、又は、ＴＨＷ≧９０℃の場合（センサ類やアクチュエータ類の温度特性の影響が大きくなる高温域）であれば、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６２】
７０℃＜ＴＨＷ＜９０℃であれば、ステップ３０３からステップ３０４に進み、吸気温度ＴＨＡが例えば−１０℃＜ＴＨＡ＜６０℃であるか否かを判定し、ＴＨＡ≦−１０℃の場合（極低温時）、又は、ＴＨＡ≧６０℃の場合（センサ類やアクチュエータ類の温度特性の影響が大きくなる高温域）であれば、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６３】
−１０℃＜ＴＨＡ＜６０℃であれば、ステップ３０４からステップ３０５に進み、エンジン回転数Ｎｅが例えば７００ｒｐｍ＜Ｎｅ＜３６００ｒｐｍであるか否かを判定し、Ｎｅ≦７００ｒｐｍの場合、又は、Ｎｅ≧３６００ｒｐｍの場合には、エンジン１１の運転状態が不安定で、燃料供給系の異常を誤検出するおそれがあるので、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６４】
７００ｒｐｍ＜Ｎｅ＜３６００ｒｐｍであれば、ステップ３０５からステップ３０６に進み、吸気管圧力ＰＭが例えば２００ｍｍＨｇ＜ＰＭ＜６３０ｍｍＨｇであるか否かを判定し、ＰＭ≦２００ｍｍＨｇの場合、又は、ＰＭ≧６３０ｍｍＨｇの場合には、エンジン１１の運転状態が不安定で、燃料供給系の異常を誤検出するおそれがあるので、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６５】
２００ｍｍＨｇ＜ＰＭ＜６３０ｍｍＨｇであれば、ステップ３０６からステップ３０７に進み、吸気管圧力センサ１７、水温センサ３８、吸気温度センサ１４、空燃比センサ２８等、空燃比に影響する全てのセンサが正常であるか否かを判定し、１つでも異常なセンサがあれば、燃料供給系の異常を誤検出するおそれがあるので、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６６】
空燃比に影響する全てのセンサが正常であれば、ステップ３０７からステップ３０８に進み、失火検出系、燃料蒸発ガスパージ系等、空燃比に影響する全てのシステムが正常であるか否かを判定し、１つでも異常なシステムがあれば、燃料供給系の異常を誤検出するおそれがあるので、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。
【００６７】
失火検出系、燃料蒸発ガスパージ系等が全て正常であれば、ステップ３０８からステップ３０９に進み、図８の燃料蒸発ガス濃度検出プログラムで算出した燃料蒸発ガス濃度ＦＬＰＲＧが所定値（例えば１０％）以下であるか否かを判定する。もし、燃料蒸発ガス濃度ＦＬＰＲＧが所定値よりも高い場合には、燃料蒸発ガスによる実空燃比のずれが一時的に大きくなって、異常有りと誤検出するおそれがあるので、ステップ３１１に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断禁止を意味する「０」にリセットして本プログラムを終了する。このステップ３０９の処理が特許請求の範囲でいう診断禁止手段としての役割を果たす。
【００６８】
以上説明したステップ３０１〜３０９で判定する条件が全て満たされた時に、異常診断実行条件が成立し、ステップ３１０に進み、異常診断許可フラグＸＤＧＦＵＥＬＥＸを異常診断許可を意味する「１」にセットして本プログラムを終了する。
【００６９】
［異常診断パラメータ算出］
図１１に示す異常診断パラメータ算出プログラムは、所定クランク角毎（例えば１８０℃Ａ毎）に起動される。本プログラムが起動されると、まずステップ４０１で、空燃比フィードバック制御中（図２のステップ１０３で空燃比フィードバック条件が成立している時）であるか否かを判定し、空燃比フィードバック制御中でない場合は、ステップ４０８，４０９に進み、異常診断パラメータＤＧＤＥＬＡＦと異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭを、共に、異常無しを意味する「１．０」に設定して本プログラムを終了する。
【００７０】
一方、空燃比フィードバック制御中の場合には、ステップ４０２〜４０５において、空燃比補正係数ＦＡＦ、学習補正量ＫＧｊ、空燃比λ及び目標空燃比λＴＧを読み込む。この後、ステップ４０６で、（１）空燃比センサ２８で検出した空燃比λと目標空燃比λＴＧとの差と（２）空燃比補正係数ＦＡＦ（フィードバック補正量）と（３）学習補正量ＫＧｊとを合計して異常診断パラメータＤＧＤＥＬＡＦを求める。
【００７１】
ＤＧＤＥＬＡＦ＝（λ−λＴＧ）＋ＦＡＦ＋ＫＧｊ
この後、ステップ４０７で、異常診断パラメータＤＧＤＥＬＡＦを次式によりなまし処理して異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭを算出する。
【００７２】
ＤＧＤＥＬＡＦＳＭ（ｉ）＝｛３×ＤＧＤＥＬＡＦＳＭ（ｉ−１）＋ＤＧＤＥＬＡＦ｝／４
上式は、なまし係数が１／４であるが、１／３、１／６、１／８等であっても良い。
【００７３】
［異常診断実行］
図１２に示す異常診断実行プログラムは、所定時間毎（例えば１０２４ｍｓ毎）に起動され、特許請求の範囲でいう噴射異常診断手段として機能する。本プログラムが起動されると、まずステップ５０１で、異常診断許可フラグＸＤＧＦＵＥＬＥＸ＝１（異常診断許可）の状態が例えば２０ｓ継続したか否かを判定し、「Ｎｏ」と判定された場合には、ステップ５１４，５１５に進み、リッチ側診断カウンタｃＤＦＡＦＲとリーン側診断カウンタｃＤＦＡＦＬを「０」にリセットする。
【００７４】
その後、異常診断許可フラグＸＤＧＦＵＥＬＥＸ＝１の状態が２０ｓ継続した時点で、ステップ５０１からステップ５０２に進み、図１１のステップ４０７で算出した異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭを読み込んだ後、ステップ５０３で、リッチ側異常診断基準値ｔＤＦＡＦＲとリーン側異常診断基準値ｔＤＦＡＦＬを現在の吸入空気量Ｇａに応じて図１３の異常診断基準値マップより読み込む。
【００７５】
この後、ステップ５０４で、異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭをリッチ側異常診断基準値ｔＤＦＡＦＲと比較し、ＤＧＤＥＬＡＦＳＭ≦ｔＤＦＡＦＲ（リッチ側の異常）であれば、ステップ５０９に進み、リッチ側診断カウンタｃＤＦＡＦＲを１インクリメントする。そして、次のステップ５１０で、リッチ側診断カウンタｃＤＦＡＦＲのカウント値が例えば２０以上になった否か、つまり、リッチ側の異常が例えば２０秒継続したか否かを判定し、２０秒継続すれば、ステップ５１２に進み、最終的に燃料供給系のリッチ側の異常と診断してリッチ側異常診断フラグＤＧＦＵＥＬＲＮＧをリッチ側の異常を意味する「１」にセットし、次のステップ５１３で、警告ランプ３７を点灯して運転者に警告して本プログラムを終了する。
【００７６】
上記ステップ５１０で、リッチ側診断カウンタｃＤＦＡＦＲのカウント値が２０未満の場合、つまり、リッチ側の異常が２０秒継続していない場合には、最終的な診断結果を出さずに本プログラムを終了する。
【００７７】
また、上記ステップ５０４で、ＤＧＤＥＬＡＦＳＭ＞ｔＤＦＡＦＲ（リッチ側正常）と判定された場合には、ステップ５０５に進み、異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭをリーン側異常診断基準値ｔＤＦＡＦＬと比較し、ＤＧＤＥＬＡＦＳＭ≧ｔＤＦＡＦＬ（リーン側の異常）であれば、ステップ５０６に進み、リーン側診断カウンタｃＤＦＡＦＬを１インクリメントする。そして、次のステップ５０７で、リーン側診断カウンタｃＤＦＡＦＬのカウント値が例えば２０以上になった否か、つまり、リーン側の異常が例えば２０秒継続したか否かを判定し、２０秒継続すれば、ステップ５０８に進み、最終的に燃料供給系のリーン側の異常と診断して、リーン側異常診断フラグＤＧＦＵＥＬＬＮＧをリーン側の異常を意味する「１」にセットし、次のステップ５１３で、警告ランプ３７を点灯して運転者に警告して本プログラムを終了する。
【００７８】
上記ステップ５０７で、リーン側診断カウンタｃＤＦＡＦＬのカウント値が２０未満の場合、つまり、リーン側の異常が２０秒継続していない場合には、最終的な診断結果を出さずに本プログラムを終了する。
【００７９】
以上説明したプログラムによって燃料供給系の異常診断を行った場合の一例を図１４に基づいて説明する。図１４の例では、空燃比補正係数ＦＡＦが途中から下限ガード値に張り付いた状態となり、学習補正量ＫＧｊが更新されなくなる。学習補正量ＫＧｊが更新されない期間でも、異常診断パラメータなまし値ＤＧＤＥＬＡＦＳＭがリッチ側異常診断基準値ｔＤＦＡＦＲ以下になると、リッチ側診断カウンタｃＤＦＡＦＲがインクリメントされる。このインクリメント動作は、ＤＧＤＥＬＡＦＳＭ≦ｔＤＦＡＦＲの状態が続く限り約１秒毎に繰り返され、該カウンタｃＤＦＡＦＲのカウント値が２０（秒）に達した時点で、リッチ側異常診断フラグＤＧＦＵＥＬＲＮＧが「１」にセットされ、燃料供給系の異常が検出される。
【００８０】
以上説明した本実施形態によれば、（１）空燃比センサ２８で検出した空燃比λと目標空燃比λＴＧとの差と（２）空燃比補正係数ＦＡＦ（フィードバック補正量）と（３）学習補正量ＫＧｊとを燃料供給系の異常診断データとして用い、これら３つの異常診断データ（１）〜（３）を合計して異常診断パラメータＤＧＤＥＬＡＦを求め、この異常診断パラメータＤＧＤＥＬＡＦに基づいて燃料供給系の異常の有無を診断するようにしたので、たとえ（３）学習補正量ＫＧｊが更新されなくても、（１）実空燃比λと目標空燃比λＴＧとの差と（２）空燃比補正係数ＦＡＦとから、燃料供給系の異常（つまり実空燃比λの異常なずれ）を速やかに検出することができ、異常診断の信頼性を向上することができる。
【００８１】
しかも、３つの異常診断データ（１）〜（３）を合計して得られた異常診断パラメータＤＧＤＥＬＡＦに基づいて燃料供給系の異常の有無を診断するようにしたので、３つの異常診断データ（１）〜（３）を個別に評価する場合と比較して、異常診断のロジックが極めて簡単であり、ソフトウエア構成の簡素化、演算負荷の軽減、演算処理の高速化等の要求を満たすことができる。
【００８２】
但し、本発明は、３つの異常診断データ（１）〜（３）を個別に評価した後に、これら３つの個別評価を総合的に評価して燃料供給系の異常の有無を診断するようにしても良く、この場合でも、本発明の所期の目的を十分に達成できる。
【００８３】
また、本実施形態では、３つの異常診断データ（１）〜（３）を合計して得られた異常診断パラメータＤＧＤＥＬＡＦをなまし処理し、そのなまし値ＤＧＤＥＬＡＦＳＭを異常診断基準値ｔＤＦＡＦＲ，ｔＤＦＡＦＬと比較して燃料供給系の異常の有無を診断するようにしたので、ノイズ等による瞬間的な空燃比検出値の変動や過渡運転時の急激なエンジン運転状態の変動等の影響を受けずに安定した異常診断が可能となり、異常診断精度を向上することができる。
【００８４】
しかも、異常診断基準値ｔＤＦＡＦＲ，ｔＤＦＡＦＬを吸入空気量Ｇａに応じて図１３の異常診断基準値マップより設定するようにしたので、エンジン運転状態に応じた最適な異常診断基準値ｔＤＦＡＦＲ，ｔＤＦＡＦＬを設定することが可能となり、異常診断精度を向上することができる。
【００８５】
この場合、異常診断基準値マップのパラメータは吸入空気量Ｇａのみに限定されず、例えば吸気管圧力ＰＭ、エンジン回転数Ｎｅ等、種々のエンジン運転状態パラメータを用いても良く、また、１次元マップに限定されず、２次元マップ、３次元マップとして構成しても良い。
【図面の簡単な説明】
【００８６】
【図１】本発明の一実施形態を示すエンジン制御システム全体の概略構成図
【図２】空燃比制御プログラムの処理の流れを示すフローチャート
【図３】目標空燃比マップを概念的に示す図
【図４】目標空燃比設定プログラムの処理の流れを示すフローチャート
【図５】酸素センサの出力と目標空燃比の中央値λＴＧＣとの関係を示すタイムチャート
【図６】酸素センサの出力と目標空燃比λＴＧとの関係を示すタイムチャート
【図７】空燃比学習プログラムの処理の流れを示すフローチャート
【図８】燃料蒸発ガス濃度検出プログラムの処理の流れを示すフローチャート
【図９】燃料蒸発ガス濃度ＦＬＰＲＧの学習値の更新方法を説明する図
【図１０】異常診断実行条件判定プログラムの処理の流れを示すフローチャート
【図１１】異常診断パラメータ算出プログラムの処理の流れを示すフローチャート
【図１２】異常診断実行プログラムの処理の流れを示すフローチャート
【図１３】異常診断基準値マップを概念的に示す図
【図１４】燃料供給系の異常診断を行った場合の一例を示すタイムチャート
【符号の説明】
【００８７】
１０  エアフローメータ
１１  エンジン（内燃機関）
１４  吸気温度センサ
１７  吸気管圧力センサ
２０  燃料噴射弁（燃料噴射装置）
２４  クランク角センサ
２６  排気管
２７  触媒
２８  空燃比センサ（空燃比検出手段）
２９  酸素センサ
３０  エンジン制御回路（基本燃料噴射量設定手段，学習手段，空燃比フィードバック手段，要求燃料噴射量設定手段，噴射異常診断手段、診断禁止手段）
３７  警告ランプ
３８  水温センサ
４０  燃料タンク
４２  キャニスタ
４４  パージ配管
４５  パージ制御弁
４６  燃料蒸発ガスパージシステム
【図１】
2004278542.tif 000003
【図２】
2004278542.tif 000004
【図３】
2004278542.tif 000005
【図４】
2004278542.tif 000006
【図５】
2004278542.tif 000007
【図６】
2004278542.tif 000008
【図７】
2004278542.tif 000009
【図８】
2004278542.tif 000010
【図９】
2004278542.tif 000011
【図１０】
2004278542.tif 000012
【図１１】
2004278542.tif 000013
【図１２】
2004278542.tif 000014
【図１３】
2004278542.tif 000015
【図１４】
2004278542.tif 000016