(57)【特許請求の範囲】
【請求項１】
空燃比センサの出力に基づく空燃比フィードバック補正量の学習値を記憶する空燃比学習マップに基づいて、キャニスタパージシステムを備えたエンジンの空燃比制御系が異常か否かを診断する空燃比制御系の故障診断方法であって、
上記空燃比学習マップにおける学習済みの全領域の学習値の平均値が設定範囲内になく、且つ学習済みの全領域の学習値の平均値とキャニスタパージによる空燃比変化の影響を受けない学習済みの各領域の学習値の平均値との差が設定値より小さい状態が設定時間継続したとき、上記空燃比制御系が異常であると判定することを特徴とする空燃比制御系の故障診断方法。
【請求項２】
上記各平均値の算出タイミングを、上記空燃比学習マップの学習進行状態に応じて決定することを特徴とする請求項１記載の空燃比制御系の故障診断方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、吸入空気量を計測する吸入空気計測系や燃料を供給する燃料供給系の異常を診断する空燃比制御系の故障診断方法に関する。
【０００２】
【従来の技術】
周知のように、エンジンの空燃比制御システムにおいては、吸入空気量センサ等の吸入空気計測系やインジェクタ等の燃料供給系の生産時のばらつき、あるいは経時変化による空燃比のずれを迅速に補正するため、Ｏ２センサ等の空燃比センサによるフィードバック制御に対して学習制御を取入れ、運転状態が大きく変化した場合にも常に目標空燃比の状態が保持されるようにしている。
【０００３】
すなわち、エンジンの定常運転状態において、Ｏ２センサによるクローズドループの補正係数すなわち空燃比フィードバック補正係数が、比例積分制御により空燃比リッチ／リーンを所定回数繰返したとき、空燃比フィードバック補正係数の中心値を学習値（オープンループの補正係数）として空燃比学習マップに記憶し、運転状態が変化した場合にも、この学習値を燃料噴射量に反映して上記空燃比フィードバック補正係数の中心が基準値となるよう制御し、空燃比を目標空燃比に保つようにしている。
【０００４】
この場合、空燃比制御システムには、例えば、インジェクタの配線に断線あるいは短絡が発生した場合等に対処するため、異常発生を自己診断する機能が備えられており、例えば、特開昭６０−２５２１３３号公報には、学習補正係数の値が設定値以上のとき、制御装置が異常であると判定する技術が開示されており、また、特開平６−０６６１８８号公報には、マップ内の学習済みフラグがセットされているエリア間の学習補正係数の段差が所定のスライスレベルを超えている場合、燃料供給系に異常有りと判定する技術が開示されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、燃料タンクの蒸発燃料を貯留するキャニスタに対してパージ制御を行うキャニスタパージシステムを備えたエンジンにおいては、キャニスタパージ実行による空燃比変化も学習されるため、前述した先行技術のように、ある学習領域内の学習値の偏差によって異常を検出するのみでは、キャニスタパージに伴って学習値が変化したのか、吸入空気計測系や燃料供給系等の空燃比制御系に生じた劣化を補償するために学習値が変化したのかを識別することは困難であり、誤診断を招くおそれがある。
【０００６】
本発明は上記事情に鑑みてなされたもので、空燃比制御系の劣化による通常の空燃比学習値の変化と蒸発燃料のパージ制御に伴う空燃比学習値の変化とを確実に識別し、的確且つ迅速に異常を検出することのできる空燃比制御系の故障診断方法を提供することを目的としている。
【０００７】
【課題を解決するための手段】
請求項１記載の発明は、空燃比センサの出力に基づく空燃比フィードバック補正量の学習値を記憶する空燃比学習マップに基づいて、キャニスタパージシステムを備えたエンジンの空燃比制御系が異常か否かを診断する空燃比制御系の故障診断方法であって、上記空燃比学習マップにおける学習済みの全領域の学習値の平均値が設定範囲内になく、且つ学習済みの全領域の学習値の平均値とキャニスタパージによる空燃比変化の影響を受けない学習済みの各領域の学習値の平均値との差が設定値より小さい状態が設定時間継続したとき、上記空燃比制御系が異常であると判定することを特徴とする。
【０００８】
請求項２記載の発明は、請求項１記載の発明において、上記各平均値の算出タイミングを、上記空燃比学習マップの学習進行状態に応じて決定することを特徴とする。
【０００９】
【作用】
請求項１記載の発明では、学習済みの全領域の学習値の平均値が設定範囲内にないとき、空燃比学習マップの学習済みの全領域の学習値の平均値とキャニスタパージによる空燃比変化の影響を受けない学習済みの各領域の学習値の平均値との差を算出し、この差が設定値より小さい状態が設定時間継続したとき、空燃比制御系が異常であると判定する。
【００１０】
請求項２記載の発明では、請求項１記載の発明において、空燃比学習マップの学習進行状態に応じたタイミングで上記各平均値の差を算出し、診断を行う。
【００１１】
【実施例】
以下、図面を参照して本発明の実施例を説明する。図面は本発明の一実施例を示し、図１は故障診断ルーチンを示すフローチャート、図２及び図３は空燃比学習ルーチンのフローチャート、図４はエンジン制御系の概略構成図、図５は電子制御系の回路構成図、図６は定常状態判定マトリックスと空燃比学習マップと学習済みフラグマップと学習進行フラグマップとの関係を示す説明図である。
【００１２】
図４において、符号１はエンジンであり、図においては水平対向４気筒型エンジンを示す。このエンジン１のシリンダヘッド２に形成された各吸気ポート２ａにインテークマニホルド３が連通され、このインテークマニホルド３にエアチャンバ４を介してスロットルチャンバ５が連通され、このスロットルチャンバ５上流側に吸気管６を介してエアクリーナ７が取付けられている。
【００１３】
また、上記吸気管６の上記エアクリーナ７の直下流に、ホットワイヤ式あるいはホットフィルム式等の吸入空気量センサ８が介装され、さらに、上記スロットルチャンバ５に設けられたスロットルバルブ５ａに、スロットル開度を検出するスロットル開度センサとスロットルバルブ全閉でＯＮするアイドルスイッチとを内蔵したスロットルセンサ９が連設されている。
【００１４】
また、上記スロットルバルブ５ａの上流側と下流側とを連通するバイパス通路１０に、アイドルスピードコントロール（ＩＳＣ）バルブ１１が介装され、上記インテークマニホルド３の各気筒の各吸気ポート２ａ直上流側に、インジェクタ１２が臨まされている。
【００１５】
さらに、先端を燃焼室に露呈する点火プラグ１３ａが上記シリンダヘッド２の各気筒毎に取付けられ、上記点火プラグ１３ａに連設される点火コイル１３ｂにイグナイタ１４が接続されている。
【００１６】
上記インジェクタ１２は、燃料供給路１５を介して燃料タンク１６に連通されており、この燃料タンク１６内にはインタンク式の燃料ポンプ１７が設けられている。この燃料ポンプ１７からの燃料は、上記燃料供給路１５に介装された燃料フィルタ１８を経て上記インジェクタ１２、プレッシャレギュレータ１９に圧送され、このプレッシャレギュレータ１９から上記燃料タンク１６にリターンされて上記インジェクタ１２への燃料圧力が所定の圧力に調圧される。
【００１７】
また、上記燃料タンク１６の上部には、フロートバルブからなるフューエルカットバルブ２０が設けられ、このフューエルカットバルブ２０から蒸発燃料ガス放出通路２１が延出されている。この蒸発燃料ガス放出通路２１には、２個のボールバルブと２ウエイバルブとが内蔵されたロールオーババルブ２２が介装され、活性炭等からなる吸着部を備えたキャニスタ２３に連通されている。さらに、このキャニスタ２３は、リニアソレノイドバルブ等からなるキャニスタパージコントロール（ＣＰＣ）バルブ２４を介して吸気系（上記スロットルバルブ５ａ全閉状態でスロットルバルブ５ａの直下流位置）に連通されている。
【００１８】
上記燃料タンク１６内で発生した蒸発燃料は、上記フューエルカットバルブ２０により上記蒸発燃料ガス放出通路２１への液体分の流入が阻止され、気体分のみが上記蒸発燃料ガス放出通路２１へ放出される。そして、上記蒸発燃料ガス放出通路２１へ放出された蒸発燃料ガスの圧力が上記ロールオーババルブ２２内の２ウエイバルブの設定圧を越えると、この２ウエイバルブを通って上記キャニスタ２３内の活性炭に吸着される。
【００１９】
上記キャニスタ２３内に貯えられた蒸発燃料ガスは、上記ＣＰＣバルブ２４を介して吸気系に導かれ、エンジン１の燃焼室内に吸入される。尚、上記ＣＰＣバルブ２４は、後述する電子制御装置４０からの駆動信号のデューティ比に応じて弁開度が制御される。
【００２０】
また、上記ロールオーババルブ２２は、万一の場合の車輌横転に対して２個のボールバルブにより上記燃料タンク１６からの燃料漏れを防止する安全装置の役目を果たすと同時に、通常時は２ウエイバルブとして働き、上記燃料タンク１６の内圧が設定圧以上に高くなると、蒸発燃料ガスを上記キャニスタ２３に解放し、逆に、上記燃料タンク１６内が規定以上の負圧になると、上記キャニスタ２３から大気を上記燃料タンク１６内に導き、タンク内圧を常に所定範囲内に保って上記燃料タンク１６の変形を防止するようになっている。
【００２１】
また、上記エンジン１のシリンダブロック１ａにノックセンサ２５が取付けられるとともに、このシリンダブロック１ａの左右バンクを連通する冷却水通路２６に冷却水温センサ２７が臨まされている。さらに、上記シリンダヘッド２の排気ポート２ｂに連通するエグゾーストマニホルド２８の集合部に、空燃比センサとしてのフロントＯ２センサ（ＦＯ２センサ）２９ａが臨まされ、このＦＯ２センサ２９ａの下流側にフロント触媒コンバータ３０ａが介装されている。このフロント触媒コンバータ３０ａの直下流にはリア触媒コンバータ３０ｂが介装され、このリア触媒コンバータ３０ｂの下流側に、同じく空燃比センサとしてのリアＯ２センサ（ＲＯ２センサ）２９ｂが臨まされている。
【００２２】
尚、上記ＲＯ２センサ２９ｂは、例えば、触媒劣化診断等のために設けられ、上記ＦＯ２センサ２９ａの出力と上記ＲＯ２センサ２９ｂの出力との比較結果に基づいて触媒の劣化診断が行なわれる。
【００２３】
また、上記シリンダブロック１ａに支承されたクランクシャフト１ｂに、クランクロータ３１が軸着され、このクランクロータ３１の外周に、所定のクランク角に対応する突起（あるいはスリット）を検出する磁気センサ（電磁ピックアップ等）あるいは光センサ等からなるクランク角センサ３２が対設されている。さらに、上記シリンダヘッド２のカムシャフト１ｃにカムロータ３３が連設され、このカムロータ３３に、同じく磁気センサあるいは光センサ等からなる気筒判別用のカム角センサ３４が対設されている。
【００２４】
一方、図５において、符号４０は電子制御装置（ＥＣＵ）であり、ＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、バックアップＲＡＭ４４、及び、Ｉ／Ｏインターフェース４５がバスライン４６を介して互いに接続されたマイクロコンピュータを中心として構成され、その他、安定化電圧を各部に供給する定電圧回路４７、上記Ｉ／Ｏインターフェース４５の出力ポートからの信号によりアクチュエータ類を駆動する駆動回路４８、センサ類からのアナログ信号をデジタル信号に変換するＡ／Ｄ変換器４９等の周辺回路が組み込まれている。
【００２５】
上記定電圧回路４７は、ＥＣＵリレー５０のリレー接点を介してバッテリ５１に接続され、このバッテリ５１に、上記ＥＣＵリレー５０のリレーコイルがイグニッションスイッチ５２を介して接続されている。また、上記定電圧回路４７は、直接、上記バッテリ５１に接続されており、上記イグニッションスイッチ５２がＯＮされてＥＣＵリレー５０のリレー接点が閉となったとき、上記定電圧回路４７から各部へ電源が供給される一方、上記イグニッションスイッチ５２のＯＮ，ＯＦＦに拘らず、常時、上記バックアップＲＡＭ４４にバックアップ用の電源が供給される。
【００２６】
また、上記Ｉ／Ｏインターフェース４５の入力ポートには、クランク角センサ３２、カム角センサ３４が接続されるとともに、吸入空気量センサ８、スロットルセンサ９、ノックセンサ２５、冷却水温センサ２７、ＦＯ２センサ２９ａ、ＲＯ２センサ２９ｂ、及び、車速センサ３５が上記Ａ／Ｄ変換器４９を介して接続され、さらに、このＡ／Ｄ変換器４９に上記バッテリ５１からの電圧ＶＢが入力されてモニタされる。
【００２７】
一方、上記Ｉ／Ｏインターフェース４５の出力ポートには、イグナイタ１４が接続されるとともに、上記駆動回路４８を介して、ＩＳＣバルブ１１、インジェクタ１２、ＣＰＣバルブ２４、及び、図示しないインストルメントパネルに配設され、各種警報を集中して表示するＭＩＬランプ５３が接続されている。
【００２８】
上記ＲＯＭ４２には、エンジン制御プログラムや各種の故障診断プログラム、、マップ類等の固定データが記憶されており、また、上記ＲＡＭ４３には、各センサ類、スイッチ類の出力信号を処理した後のデータ、及び上記ＣＰＵ４１で演算処理したデータが格納されている。また、上記バックアップＲＡＭ４４には、後述する空燃比学習マップを初めとする各種制御用データ、トラブルを示すデータ等がストアされており、上記イグニッションスイッチ５２がＯＦＦのときにもデータが保持される。
【００２９】
尚、上記バックアップＲＡＭ４４のトラブルデータは、ＥＣＵ４０にコネクタ５４を介して携帯型故障診断装置であるシリアルモニタ６０を接続することで外部に読み出すことができる。このシリアルモニタ６０は、本出願人が先に提出した特開平２−７３１３１号公報に詳述されている。
【００３０】
上記ＣＰＵ４１では上記ＲＯＭ４２に記憶されている制御プログラムに従って、燃料噴射量、点火時期、ＩＳＣバルブ１１の駆動信号のデューティ比、ＣＰＣバルブ２４の駆動信号のデューティ比等を演算し、空燃比学習制御、点火時期制御、アイドル回転数制御、キャニスタパージ制御等の各種制御を行なう。
【００３１】
空燃比フィードバック制御においては、クランク角センサ３２の出力信号に基づくエンジン回転数ＮＥと、吸入空気量センサ８の出力信号に基づく吸入空気量Ｑとから、基本燃料噴射量（基本燃料噴射パルス幅）Ｔｐを算出し（Ｔｐ＝Ｋ×Ｑ／ＮＥ；Ｋ…インジェクタ特性補正定数）、この基本燃料噴射量Ｔｐを、ＦＯ２センサ２９ａの出力に基づいて設定される空燃比フィードバック補正量としての空燃比フィードバック補正係数ＬＡＭＢＤＡ、冷却水温センサ２７、スロットルセンサ９からの信号に基づいて設定される各種増量分補正係数ＣＯＥＦによって空燃比補正する。
【００３２】
さらに、バックアップＲＡＭの空燃比学習値マップを参照して得られる空燃比学習値ＫＬＲから補間計算により空燃比学習補正係数ＫＢＬＲＣを設定し、この学習補正係数ＫＢＬＲＣによって上記基本燃料噴射量Ｔｐを学習補正するとともに、バッテリ５１の端子電圧ＶＢに基づいてインジェクタ１２の無効噴射時間を補間する電圧補正係数ＴＳにより電圧補正し、最終的な燃料噴射量（燃料噴射パルス幅）Ｔｉを設定する（Ｔｉ←Ｔｐ×ＣＯＥＦ×ＫＢＬＲＣ×ＬＡＭＢＤＡ＋ＴＳ）。そして、この燃料噴射量Ｔｉの駆動信号をインジェクタ１２に出力して相応する量の燃料を噴射させ、空燃比を制御する。
【００３３】
この場合、上記空燃比学習マップには、吸入空気量センサ等の吸入空気計測系やインジェクタ等の燃料供給系の生産時のばらつき、あるいは経時変化による空燃比のずれ、及び、キャニスタパージの実行に伴う空燃比のずれを学習した結果が記憶されており、エンジン回転数ＮＥとエンジン負荷としての基本燃料噴射量Ｔｐとによって特定される各領域毎に、学習がなされる。尚、キャニスタパージは、例えば、エンジン始動後から設定時間が経過し、冷却水温Ｔｗが設定値以上（エンジン暖機完了状態）で、且つ、エンジン回転数ＮＥが設定回転数以上の運転領域で実行される。
【００３４】
また、上記ＣＰＵ４１では、上記空燃比学習マップ内の学習状況から空燃比制御系が正常か否かを判定し、異常と判定すると、上記ＭＩＬランプ５３を点灯あるいは点滅して警告を発するとともに、バックアップＲＡＭ４４に該当するトラブルデータをストアする。
【００３５】
次に、ＥＣＵ４０による空燃比制御系の故障診断に係わる処理について、図１〜図３のフローチャートに従って説明する。
【００３６】
図２及び図３は、所定時間毎に実行される空燃比学習ルーチンであり、ステップＳ１０１で、Ｆ／Ｂ制御中か否かを判別する。例えば、冷却水温Ｔｗが設定値以下のエンジン冷態状態、或いはエンジン回転数ＮＥが設定回転数以上で基本燃料噴射量Ｔｐが設定値以上（スロットル略全開領域）のときには、クローズドループ制御条件不成立と判別し、これ以外のとき、且つ、ＦＯ２センサ２９ａ、ＲＯ２センサ２９ｂの出力電圧が設定値以上で活性化しているとき、クローズドループ制御条件成立と判別する。
【００３７】
そして、Ｆ／Ｂ制御中と判別したとき、上記ステップＳ１０１からステップＳ１０２へ進み、Ｆ／Ｂ制御中でないと判別したときには、ステップＳ１１８へジャンプして後述するリッチ／リーン切換り回数をカウントするためのカウント値Ｃ１をクリアし（Ｃ１←０）、ルーチンを抜ける。
【００３８】
ステップＳ１０２では、現在のエンジン回転数ＮＥと基本燃料噴射パルス幅Ｔｐとから図６に示す定常状態判定マトリックスＭＴ中の区画位置Ｄ１を特定し、この区画位置の領域データ（ＮＥ，Ｔｐ）ＮＥＷが前回のルーチン実行時に特定され、且つ、ＲＡＭ４３にストアされている領域データ（ＮＥ，Ｔｐ）ＯＬＤと同一であるか否かを判別する。
【００３９】
その結果、上記ステップＳ１０２で、前回の領域データ（ＮＥ，Ｔｐ）ＯＬＤと今回の領域データ（ＮＥ，Ｔｐ）ＮＥＷとが異なるとき、すなわち、ルーチンの実行が初回の実行であるとき、あるいは、前回ルーチン実行時の運転領域と今回ルーチン実行時の運転領域とが同一でなく定常運転状態でないときには、上記ステップＳ１０２からステップＳ１１７へ進み、今回の領域データ（ＮＥ，Ｔｐ）ＮＥＷを旧データ（ＮＥ，Ｔｐ）ＯＬＤとして（（ＮＥ，Ｔｐ）ＯＬＤ←（ＮＥ，Ｔｐ）ＮＥＷ）ＲＡＭ４３にストアすると、前述のステップＳ１１８を経てルーチンを抜ける。
【００４０】
一方、上記ステップＳ１０２で前回の領域データ（ＮＥ，Ｔｐ）ＯＬＤと今回の領域データ（ＮＥ，Ｔｐ）ＮＥＷとが同一の場合、上記ステップＳ１０２からステップＳ１０３へ進み、ＦＯ２センサ２９ａの出力電圧ＶＯ２を読込んで、この出力電圧ＶＯ２の所定時間Ｔ０内のリッチ／リーン切換りがあるか否か、すなわち、空燃比がリッチ側からリーン側へ、あるいは、リーン側からリッチ側へ反転したか否かを判別する。
【００４１】
そして、上記ステップＳ１０３で、所定時間Ｔ０内に上記ＦＯ２センサ２９ａの出力電圧ＶＯ２の反転がない場合、上記ステップＳ１０３から前述のステップＳ１１８へ分岐してルーチンを抜け、一方、上記ステップＳ１０３で所定時間Ｔ０内に上記ＦＯ２センサ２９ａの出力電圧ＶＯ２の反転があった場合、上記ステップＳ１０３からステップＳ１０４へ進んで、カウント値Ｃ１をカウントアップする（Ｃ１←Ｃ１＋１）。
【００４２】
その後、ステップＳ１０５へ進んで、上記カウント値Ｃ１が設定値Ｃ１Ｓ（例えば３）以上となったか否かを判別し、Ｃ１＜Ｃ１Ｓのとき、定常状態でないと判別してルーチンを抜け、Ｃ１≧Ｃ１Ｓのとき、すなわち、エンジン回転数ＮＥ及び基本燃料噴射量Ｔｐによる運転状態が略同一であり、且つ、このときＦＯ２センサ２９ａの出力電圧ＶＯ２の反転がＣ１Ｓ回以上あったときには、定常状態と判定してステップＳ１０６へ進む。
【００４３】
ステップＳ１０６では、上記カウント値Ｃ１をクリアし（Ｃ１←０）、次いで、ステップＳ１０７で、ＦＯ２センサ２９ａの出力電圧ＶＯ２がスライスレベルをＣ１Ｓ回横切った間の空燃比フィードバック補正係数ＬＡＭＢＤＡの極大値及び極小値の平均値ＬＡＭＢＤＡＡＶＥを算出すると、ステップＳ１０８で、この平均値ＬＡＭＢＤＡＡＶＥが基準値ＬＡＭＢＤＡ０（１．０）から設定範囲内（ＬＡＭＢＤＡＡＶＥＭＩＮ＜ＬＡＭＢＤＡＡＶＥ＜ＬＡＭＢＤＡＡＶＥＭＡＸ）にあるか否かを調べる。
【００４４】
そして、上記ステップＳ１０８で、上記平均値ＬＡＭＢＤＡＡＶＥが設定範囲外のときにはルーチンを抜け、上記平均値ＬＡＭＢＤＡＡＶＥが設定範囲内のとき、ステップＳ１０９へ進んで、上記平均値ＬＡＭＢＤＡＡＶＥが設定範囲内にある状態を計数するためのカウント値Ｃ２をカウントアップし（Ｃ２←Ｃ２＋１）、ステップＳ１１０で、このカウント値Ｃ２が設定値Ｃ２Ｓに達したか否か、すなわち、定常運転状態で空燃比フィードバック補正係数ＬＡＭＢＤＡのリッチ方向のピーク値とリーン方向のピーク値との平均値が基準値より設定範囲内にある状態が設定回数だけ繰り返されているか否かを調べる。
【００４５】
そして、上記ステップＳ１１０で、Ｃ２＜Ｃ２Ｓのときにはルーチンを抜け、Ｃ２≧Ｃ２Ｓのときには、学習を実施すべくステップＳ１１１へ進んでカウント値Ｃ２をクリアすると（Ｃ２←０）、ステップＳ１１２で、平均値ＬＡＭＢＤＡＡＶＥの基準値ＬＡＭＢＤＡ０（１．０）からの偏差量ＬＡＭＢＤＡＤＩＦを算出し（ＬＡＭＢＤＡＤＩＦ←ＬＡＭＢＤＡＡＶＥ−１．０）、ステップＳ１１３で、エンジン回転数ＮＥと基本燃料噴射量ＴｐとをパラメータとしてバックアップＲＡＭ４４の空燃比学習値マップＭＰＬＲから学習値ＫＬＲを検索する。
【００４６】
上記空燃比学習マップＭＰＬＲは、図６に示すように、エンジン回転数ＮＥとエンジン負荷としての基本燃料噴射量Ｔｐによって形成される各格子毎に、定常運転状態で、空燃比フィードバック補正係数ＬＡＭＢＤＡが空燃比リッチ／リーンを所定回数繰り返した間の平均値と基準値との差に基づいて決定された学習値ＫＬＲをストアするものであり、未学習の初期状態では、マップ内のデータはイニシャルセット値により１．０となっている。
【００４７】
従って、上記ステップＳ１１３からステップＳ１１４へ進むと、上記ステップＳ１１３で検索した学習値ＫＬＲと上記ステップＳ１１２で算出した偏差量ＬＡＭＢＤＡＤＩＦとから学習値ＫＬＲを設定し（ＫＬＲ←ＫＬＲ＋Ｍ×ＬＡＭＢＤＡＤＩＦ；Ｍは学習値更新の比率を決定する定数）、この学習値ＫＬＲを上記空燃比学習マップＭＰＬＲの該当アドレスに書き込む。
【００４８】
次いで、上記ステップＳ１１４からステップＳ１１５へ進み、上記ステップＳ１１４で学習値ＫＬＲを書き込んだ上記空燃比学習マップＭＰＬＲの格子に対応して、バックアップＲＡＭ４４の学習済みフラグマップＭＰＦＬＧ１の該当格子の学習済みフラグＦＬＧ１を１にセットし、ステップＳ１１６で、同様に、上記ステップＳ１１４で学習値ＫＬＲを書き込んだ上記空燃比学習マップＭＰＬＲの格子に対応して、バックアップＲＡＭ４４の学習進行フラグマップＭＰＦＬＧ２の該当格子の学習進行フラグＦＬＧ２を１にセットする。
【００４９】
上記学習済みフラグマップＭＰＦＬＧ１及び上記学習進行フラグマップＭＰＦＬＧ２は、図６に示すように、上記空燃比学習マップＭＰＬＲと同じ格子を有するマップであり、初期状態では共にマップ内のデータは０であるが、上記学習済みフラグマップＭＰＦＬＧ１には、上記空燃比学習マップＭＰＬＲの格子に学習値ＫＬＲが書き込まれたとき、対応する格子に１のデータが書き込まれる一方、上記学習進行フラグマップＭＰＦＬＧ２は、後述する図１の故障診断ルーチンによって診断が実行される毎にマップ内の全データが０にクリアされ、その後、上記空燃比学習マップＭＰＬＲの格子に学習値ＫＬＲが書き込まれると、対応する格子に１のデータが書き込まれる。
【００５０】
すなわち、エンジン回転数ＮＥと基本燃料噴射量Ｔｐとをパラメータとして、上記学習済みフラグマップＭＰＦＬＧ１を参照することにより、該当する運転領域が未学習の状態から既に学習が実行されている状態であるか否かを知ることができ、上記学習進行フラグＭＰＦＬＧ２を参照することにより、既学習領域の学習値ＫＬＲが再び更新される、あるいは、未学習領域が新たに学習される等して、前回の診断実行後に十分に学習が進行しているか否かを知ることができるのである。
【００５１】
以上の空燃比学習ルーチンに対し、所定時間毎に実行される図１の故障診断ルーチンについて説明する。
【００５２】
この故障診断ルーチンでは、まず、ステップＳ２０１で、学習進行フラグマップＭＰＦＬＧ２のＦＬＧ２＝１である格子数を計数するカウンタ値ＣＴが設定値ＰＲＧＺＤＴより大きいか否かを調べる。そして、ＣＴ≦ＰＲＧＺＤＴのときには、前回の診断から十分に学習が進行していないと判断して診断を行うことなくルーチンを抜け、ＣＴ＞ＰＲＧＺＤＴのとき、前回の診断から十分に学習が進行していると判断してステップＳ２０２以降へ進む。
【００５３】
ステップＳ２０２では、学習済みフラグマップＭＰＦＬＧ１内のフラグＦＬＧ１の値が１である格子に対応して、空燃比学習マップＭＰＬＲから学習済みの格子の学習値ＫＬＲを全て読み込み、その平均値ＫＬＲＡＶＥ１を算出する。次いで、ステップＳ２０３へ進み、この平均値ＫＬＲＡＶＥ１が設定範囲内（ＤＩＳＭＩＮ＜ＫＬＲＡＶＥ１＜ＤＩＳＭＡＸ）であるか否かを調べる。
【００５４】
その結果、上記平均値ＫＬＲＡＶＥ１が設定範囲内にあるときには、上記ステップＳ２０３からステップＳ２０４へ進み、上記平均値ＫＬＲＡＶＥ１が設定範囲内にある条件が満たされた状態の継続時間をカウントするためのカウント値Ｃ３をカウントアップし（Ｃ３←Ｃ３＋１）、ステップＳ２０５で、このカウント値Ｃ３が設定値Ｃ３Ｓ以上となったか否かを判別する。そして、Ｃ３＜Ｃ３Ｓのときには、ルーチンを抜け、Ｃ３≧Ｃ３Ｓのとき、すなわち、学習済み全領域の平均値ＫＬＲＡＶＥ１が設定範囲内にある条件が設定時間上継続しているときには、ステップＳ２０６で空燃比制御系は正常であると判断し、ステップＳ２０７でカウント値Ｃ３をクリアして（Ｃ３←０）ステップＳ２１４へ進む。
【００５５】
一方、上記ステップＳ２０３で、上記平均値ＫＬＲＡＶＥ１が設定範囲内にないときには、上記ステップＳ２０３からステップＳ２０８へ進み、空燃比学習マップＭＰＬＲにおいてキャニスタパージの影響を受けにくい領域、例えば、エンジン回転数ＮＥが所定回転数以下のキャニスタパージが実行されない領域で、学習済みとなった全ての格子の学習値の平均値ＫＬＲＡＶＥ２と、上記平均値ＫＬＲＡＶＥ１との差（絶対値）ΔＫＬＲＡＶＥを算出する（ΔＫＬＲＡＶＥ←｜ＫＬＲＡＶＥ２−ＫＬＲＡＶＥ１｜）。
【００５６】
次いで、ステップＳ２０９へ進み、上記ステップＳ２０８で算出した平均値の差ΔＫＬＲＡＶＥが設定値ＤＩＤＭＤＬより小さいか否か、すなわち、キャニスタパージによる空燃比学習マップＭＰＬＲ内の段差の大きさが設定値以上か否かを調べる。そして、ΔＫＬＲＡＶＥ≧ＤＩＤＭＤＬのときには、上記ステップＳ２０９からステップＳ２１４へジャンプし、ΔＫＬＲＡＶＥ＜ＤＩＤＭＤＬのとき、ステップＳ２１０へ進んで、空燃比学習マップＭＰＬＲ内の段差が設定値より小さい状態の継続時間をカウントするためのカウント値Ｃ４をカウントアップし（Ｃ４←Ｃ４＋１）、ステップＳ２１１で、このカウント値Ｃ４が設定値Ｃ４Ｓ以上となったか否かを判別する。
【００５７】
その結果、上記ステップ２１１で、Ｃ４＜Ｃ４Ｓのときには、ルーチンを抜け、Ｃ４≧Ｃ４Ｓのとき、すなわち、学習済み全領域の平均値ＫＬＲＡＶＥ１が設定範囲内になく、且つ、空燃比学習マップＭＰＬＲ内の段差が設定値より小さい状態が設定時間以上継続しているときには、ステップＳ２１２で、吸入空気計測系あるいは燃料供給系等の空燃比制御系が異常であると判断し、該当するトラブルデータをバックアップＲＡＭ４４にストアするとともに、ＭＩＬランプ５３を点灯あるいは点滅して警告を発した後、ステップＳ２１３でカウント値Ｃ４をクリアし（Ｃ４←０）、ステップＳ２１４へ進む。
【００５８】
すなわち、空燃比フィードバック制御中にキャニスタパージが実行されると、空燃比が変化して空燃比フィードバック補正係数ＬＡＭＢＤＡが基準値ＬＡＭＢＤＡ０（＝１．０）からずれ、この空燃比フィードバック補正係数ＬＡＭＢＤＡの基準値ＬＡＭＢＤＡ０からのずれが定常運転状態において学習され、空燃比学習値マップＭＰＬＲ内で、キャニスタパージが実行される領域と実行されない領域との間に段差が生じることになる。
【００５９】
従って、空燃比学習マップＭＰＬＲにおいて、学習済みの全領域の学習値の平均値ＫＬＲＡＶＥ１と、キャニスタパージの影響を受けない領域の学習済みの各領域の学習値の平均値ＫＬＲＡＶＥ２との差を調べることにより、キャニスタパージに伴って学習値が変化したのか、吸入空気計測系や燃料供給系等の空燃比制御系に生じた劣化を補償するために学習値が変化したのかを識別することができ、的確且つ迅速に異常を検出することができるのである。
【００６０】
そして、診断後、ステップＳ２１４へ進むと、次回の診断までの学習進行状態を調べるためのカウント値ＣＴをクリアし（ＣＴ←０）、ステップＳ２１５で、学習進行フラグマップＭＰＦＬＧ２内の全データをクリアしてルーチンを抜ける。
【００６１】
【発明の効果】
以上説明したように本発明によれば、学習済みの全領域の学習値の平均値が設定範囲内にないとき、空燃比学習マップの学習済みの全領域の学習値の平均値とキャニスタパージによる空燃比変化の影響を受けない学習済みの各領域の学習値の平均値との差を算出し、この差が設定値より小さい状態が設定時間継続したとき、空燃比制御系が異常であると判定するため、空燃比制御系の劣化による通常の空燃比学習値の変化と蒸発燃料のパージ制御に伴う空燃比学習値の変化とを確実に識別し、的確且つ迅速に異常を検出することができる。その際、上記各平均値の差を空燃比学習マップの学習進行状態に応じたタイミングで算出することにより、前回の診断から十分に学習が進行していることが保証され、適切な診断結果を得ることができる等優れた効果が得られる。
【図面の簡単な説明】
【図１】故障診断ルーチンを示すフローチャート
【図２】空燃比学習ルーチンのフローチャート
【図３】空燃比学習ルーチンのフローチャート（続き）
【図４】エンジン制御系の概略構成図
【図５】電子制御系の回路構成図
【図６】定常状態判定マトリックスと空燃比学習マップと学習済みフラグマップと学習進行フラグマップとの関係を示す説明図
【符号の説明】
１                  エンジン
２９ａ              ＦＯ２センサ（空燃比センサ）
ＭＰＬＲ              空燃比学習マップ
ＫＬＲ                学習値
ＫＬＲＡＶＥ１，ＫＬＲＡＶＥ２  平均値
ΔＫＬＲＡＶＥ          平均値の差
【図１】
0003630745.tif 000002
【図２】
0003630745.tif 000003
【図３】
0003630745.tif 000004
【図４】
0003630745.tif 000005
【図５】
0003630745.tif 000006
【図６】
0003630745.tif 000007