(57)【特許請求の範囲】
【請求項１】
リーン運転時の空燃比を初期設定する手段と、
負荷と回転数とをパラメータとする全運転領域を複数の学習領域に分割し、その各学習領域毎に通常学習値を記憶する手段と、
前記全運転領域より狭い所定の学習領域に１データのベース学習値を記憶する手段と、
このベース学習値が収束したかどうかを判定する手段と、
この判定結果よりベース学習値が収束する前はベース学習値を、またベース学習値が収束した後はそのときの負荷と回転数の属する学習領域にある前記通常学習値を選択する手段と、
燃焼の安定度を検出する手段と、
リーン運転時に安定度に基づくフィードバック制御を行う条件かどうかを判定する手段と、
この判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時に前記安定度の検出値が安定度の制御目標値と一致するように安定度補正量を算出する手段と、
前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の非成立時に前記選択されたほうの学習値で前記リーン運転時の初期設定の空燃比を補正する手段と、
同じくリーン運転時の安定度に基づくフィードバック制御条件の非成立時に、またリーン運転時の安定度に基づくフィードバック制御条件の成立時にもこのリーン運転時の初期設定の空燃比を、前記選択されたほうの学習値で補正された空燃比となるようにエンジンへの燃料供給量を制御する手段と、
前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値が収束する前にそのときの負荷と回転数が前記ベース学習値の学習領域にあるときには前記安定度の検出値が安定度の制御目標値と一致するように前記安定度補正量に基づいて前記ベース学習値を更新する手段と、
前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値が収束した後に前記ベース学習値の収束値を初期値として前記安定度の検出値が安定度の制御目標値と一致するように前記安定度補正量に基づいてそのときの負荷と回転数の属する学習領域にある前記通常学習値を更新する手段と
を設けたことを特徴とするエンジンの空燃比制御装置。
【請求項２】
ベース学習値を更新した回数を計測する学習カウンタが所定値以上となったとき、ベース学習値が収束したと判定することを特徴とする請求項１に記載のエンジンの空燃比制御装置。
【請求項３】
前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値が収束する前にそのときの負荷と回転数がベース学習値の学習領域にないときにはそのときの負荷と回転数の属する学習領域の通常学習値を前記安定度補正量に基づいて更新することを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項４】
前記ベース学習値の収束値をすべての学習領域の通常学習値の初期値として設定することを特徴とする請求項１に記載のエンジンの空燃比制御装置。
【請求項５】
前記ベース学習値の収束値に、ベース学習値の更新を行う領域と前記通常学習値の各学習領域との運転条件の差に応じたリッチ化マージンを加えた値を前記通常学習値の初期値として学習領域毎に設定することを特徴とする請求項１に記載のエンジンの空燃比制御装置。
【請求項６】
前記燃焼の安定度はエンジンの回転変動から検出することを特徴とする請求項１から５までのいずれか一つに記載のエンジンの空燃比制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はエンジンの空燃比制御装置に関する。
【０００２】
【従来の技術】
エンジンの燃費を改善すると同時にＮＯｘを低減するため、空気と燃料の比率である空燃比を理論空燃比よりも希薄なリーン空燃比となるように燃料供給量を制御し、リーン運転時にエンジンの回転変動から燃焼の安定度（以下、単に「安定度」という。）を検出しその安定度の検出値が安定度の制御目標値よりも悪化すると、空燃比をリッチ側に補正（あるいは点火時期やＥＧＲ率を燃焼の安定する側に補正）して燃焼の安定性を確保するようにしたエンジンの運転方法が、特開昭５８−１６０５３０号公報によって提案されている。
【０００３】
【発明が解決しようとする課題】
ところで、安定許容限界まで余裕がある領域では、安定度が空燃比の変化に対して比較的平坦な特性を示すのであるが、空燃比が安定許容限界に近づくほど空燃比の変化に対して安定度が急峻に変化するようになるので、安定許容限界近傍で目標を越えて行き過ぎる過補正が生じやすく、この過補正により安定度が許容限界を超えてしまったのではヘジテーションやスタンブルが避けられない。したがって、リーン運転時に安定度に基づくフィードバック制御を行うだけの従来装置では、安定許容限界近傍に近づけようとすればするほど、過補正を抑制して制御安定性を高めるためフィードバック制御の応答速度を遅くする必要があり、この場合には過渡運転条件などで安定度に基づくフィードバック制御を十分に行うことができないことがあった。
ここで、「安定度に基づくフィードバック制御」とは、安定度の検出値が安定度の制御目標値と一致するように安定度補正量を更新する制御のことである。
【０００４】
そこで、このような運転領域においても安定許容限界近傍での制御を可能とするため、安定度に基づくフィードバック制御に学習制御を併用することが考えられる。これを説明すると、定常時（安定度に基づくフィードバック制御条件である）に安定度に基づくフィードバック制御を十分行った後（図２の左側参照）では、空燃比のフィードバック補正量（図２では単に補正量で示す）により目標安定度での制御が可能となり、このフィードバック補正量を学習値として記憶しておく。そして、リーン運転時でも安定度に基づくフィードバック制御条件が成立しない運転時（たとえば緩加速時）になると、この学習値を補正量として用いることで（図２の右側参照）、安定度に基づくフィードバック制御が行われなくても目標安定度での制御が可能となるのである。なお、図２において点火時期をＡＤＶ、空燃比をＡ／Ｆで略記している。
【０００５】
しかしながら、その一方でパージガスの影響など何らかの原因によって学習値が不適当な値になったとき、安定度に基づくフィードバック制御の応答が遅いため、安定度が良好な状態に収束するまでのあいだ燃焼不安定に伴う不快感を運転者に与えることになる。
【０００６】
このようなパージガスの影響などにより学習値が不適当な値になったときの安定度の悪化を防止するため、通常時の学習値とは別にベース学習値を導入し、
１）始動後にリーン運転とパージガスの導入を禁止して、理論空燃比を目標値とする空燃比のフィードバック制御を行い、その空燃比フィードバック制御中にベース学習値を更新する、
２）ベース学習値の収束後にパージガスの導入を開始して通常時の学習値を更新する、
３）リーン運転時になると、空燃比をよりリッチ側にするほうの学習値を選択し、この選択された学習値を用いて空燃比をオープン制御する
ようにしたものがあるので（特開平７−２１７４７０号公報参照）、このものを、上記の安定度に基づくフィードバック制御に学習制御を併用するものに適用して、
１）始動後にパージガスの導入を禁止して安定度に基づくフィードバック制御を行い、そのフィードバック制御中にベース学習値を更新する、
２）ベース学習値の収束後にパージガスの導入を開始して通常時の学習値（以下通常学習値という）を更新する、
３）ベース学習値の収束前はベース学習値を、またベース学習値の収束後は通常学習値を選択し、この選択された学習値を用いてリーン運転時の安定度に基づくフィードバック制御条件の非成立時に空燃比をオープン制御する
ことが考えられる。
【０００７】
しかしながら、安定度に基づくフィードバック制御は前述のようにその応答速度を遅くする必要があるので、特開平７−２１７４７０号公報のように、学習値の中心値を初期値として通常学習値を更新してゆくのでは、通常学習値が収束するまでに長い時間を要し、そのあいだ空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりしてしまう（空燃比が目標安定度相当値より過剰にリッチになったときは燃費の悪化とＮＯｘ排出量の増大が、また空燃比が目標安定度相当値より過剰にリーンになったときは燃焼不安定に伴う運転性の悪化が生じる）。
【０００８】
そこで本発明は、ベース学習値の収束値を通常学習値の初期値として設定することにより、通常学習値の収束を早め、これによって空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりしないようにすることを目的とする。
【０００９】
【課題を解決するための手段】
第１の発明では、図２３に示すように、リーン運転時の空燃比を初期設定する手段２１と、負荷と回転数とをパラメータとする全運転領域を複数の学習領域に分割し、その各学習領域毎に通常学習値ＬＲＬＤＭＬを記憶する手段２２と、前記全運転領域より狭い所定の学習領域に１データのベース学習値ＢＳＬＤＭＬを記憶する手段２３と、このベース学習値ＢＳＬＤＭＬが収束したかどうかを判定する手段２４と、この判定結果よりベース学習値ＢＳＬＤＭＬが収束する前はベース学習値を、またベース学習値が収束した後はそのときの負荷と回転数の属する学習領域にある前記通常学習値を選択する手段２５と、燃焼の安定度ＦＩＬＤＭＰを検出する手段２９と、リーン運転時に安定度に基づくフィードバック制御を行う条件かどうかを判定する手段２６と、この判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時に前記安定度の検出値が安定度の制御目標値と一致するように安定度補正量ＬＬＤＭＬを算出する手段（図示しない）と、前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の非成立時に前記選択されたほうの学習値で前記リーン運転時の初期設定の空燃比を補正する手段２７と、同じくリーン運転時の安定度に基づくフィードバック制御条件の非成立時に、またリーン運転時の安定度に基づくフィードバック制御条件の成立時にもこの補正された空燃比となるようにエンジンへの燃料供給量を制御する手段２８と、
前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値ＢＳＬＤＭＬが収束する前にそのときの負荷と回転数が前記ベース学習値の学習領域にあるときには前記安定度の検出値ＦＩＬＤＭＰが安定度の制御目標値ＬＬＳＬと一致するように前記安定度補正量ＬＬＤＭＬに基づいて前記ベース学習値ＢＳＬＤＭＬを更新する手段３０と、前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値ＢＳＬＤＭＬが収束した後に前記ベース学習値ＢＳＬＤＭＬの収束値を初期値として前記安定度の検出値ＦＩＬＤＭＰが安定度の制御目標値ＬＬＳＬと一致するように前記安定度補正量に基づいてそのときの負荷と回転数の属する学習領域にある前記通常学習値ＬＲＬＤＭＬを更新する手段３１とを設けた。
第２の発明では、第１の発明においてベース学習値ＢＳＬＤＭＬを更新した回数を計測する学習カウンタＣＢＳＬＤＭが所定値ＮＢＳＬＤＭ＃以上となったとき、ベース学習値ＢＳＬＤＭＬが収束したと判定する。
第３の発明では、第１または第２の発明において前記判定結果よりリーン運転時の安定度に基づくフィードバック制御条件の成立時かつ前記ベース学習値ＢＳＬＤＭＬが収束する前にそのときの負荷と回転数がベース学習値の学習領域にないときにはそのときの負荷と回転数の属する学習領域の通常学習値ＬＲＬＤＭＬを前記安定度補正量ＬＬＤＭＬに基づいて更新する。
【００１１】
第４の発明では、第１の発明において前記ベース学習値ＢＳＬＤＭＬの収束値をすべての学習領域の通常学習値の初期値として設定する。
【００１２】
第５の発明では、第１の発明において前記ベース学習値ＢＳＬＤＭＬの収束値に、ベース学習値ＢＳＬＤＭＬの更新を行う領域と前記通常学習値の各学習領域との運転条件の差に応じたリッチ化マージンＩＮＴＭＧＮを加えた値を前記通常学習値の初期値として学習領域毎に設定する。
【００１４】
第６の発明では、第１から第５までのいずれか一つの発明において前記燃焼の安定度がエンジンの回転変動から検出する。
【００１５】
【発明の効果】
第１の発明では、ベース学習値の更新より通常学習値の更新へと移行するとき、学習値の中心値からでなく、ベース学習値の収束値を初期値として通常学習値の更新を開始するので、学習値の中心値より通常学習値の更新を開始する場合にくらべて、学習値が要求値により近い値となることから、通常学習値の更新速度がもともと遅くても、通常学習値の収束を早めることができ、これによって、空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりすることがない。
【００１６】
また、ベース学習値より通常学習値に移行する場合においてベース学習値の収束値が学習値の中心値から外れているときでも、学習値の中心値を初期値として通常学習値の更新を開始する従来装置では、ベース学習値より通常学習値への移行時に空燃比がステップ的に切換わり、これによって移行前後でトルク段差を生じて運転者に不快感を与えることになるのであるが、第１の発明では、ベース学習値より通常学習値への移行時の空燃比段差がなくなり、これによって移行前後でのトルク段差に伴う運転者への不快感を回避することができる。
【００１８】
第５の発明では、ベース学習値の更新を行う領域と通常学習値の各学習領域との運転条件の差に応じたリッチ化マージンをベース学習値の収束値に加算した値を通常学習値の初期値として学習領域毎に設定するので、１データであるベース学習値を更新したときの運転領域とそのベース学習値が格納される通常学習値の学習領域とが離れていても、ベース学習値より通常学習値への移行当初に空燃比がサージ限界よりもリーン側に外れることがない。
【００１９】
【発明の実施の形態】
図１において、１はエンジン本体で、吸入空気はエアクリーナから吸気管８を通ってシリンダに供給される。燃料は、運転条件に応じて所定の空燃比となるようにコントロールユニット（図ではＣ／Ｕで略記）２よりの噴射信号に基づき燃料噴射弁７からエンジン１の吸気ポートに向けて噴射される。
【００２０】
コントロールユニット２にはディストリビュータに内蔵されるクランク角センサ４からのＲｅｆ信号と１度信号、エアフローメータ６からの吸入空気量信号、三元触媒１０の上流側に設置したＯ2センサ３からの空燃比（酸素濃度）信号、さらには水温センサ１５からの冷却水温信号、スロットルセンサからのスロットルバルブ開度信号、トランスミッションのギヤ位置センサからのギヤ位置信号、車速センサ１６からの車速信号等が入力し、これらに基づいて運転状態を判断しながら条件に応じてリーン空燃比と理論空燃比との制御を行う。
【００２１】
排気管９には三元触媒１０が設置され、理論空燃比の運転時に最大の転換効率をもって、排気中のＮＯｘの還元とＨＣ、ＣＯの酸化を行う。なお、この三元触媒１０はリーン空燃比のときはＨＣ、ＣＯを酸化するが、ＮＯｘの還元効率は低い。しかし、空燃比がリーン側に移行すればするほどＮＯｘの発生量は少なくなり、所定の空燃比以上では三元触媒１０で浄化するのと同じ程度にまで下げることができ、同時に、リーン空燃比になるほど燃費が改善される。反面、リーン空燃比での運転時には、運転条件によって燃焼が不安定になりやすい。
【００２２】
したがって、負荷のそれほど大きくない所定の運転領域においてリーン空燃比による運転を行い、同時に燃焼の安定度を検出し、この安定度の検出値がその制御目標値と一致するようにリーン空燃比での安定度に基づくフィードバック制御を行うことで、安定性を確保することができる。
【００２３】
この場合、安定許容限界まで余裕がある領域では、安定度が空燃比（あるいは点火時期）の変化に対して比較的平坦な特性を示すのであるが、空燃比（あるいは点火時期）が安定許容限界に近づくほど空燃比（あるいは点火時期）の変化に対して安定度が急峻に変化するようになるので、従来装置のように、安定許容限界近傍で目標を行き過ぎる過補正が生じやすく、この過補正により安定度が許容限界を超えてしまったのではヘジテーションやスタンブルが避けられない。したがって、安定許容限界近傍に近づけようとすればするほど、過補正を抑制して制御安定性を高めるため安定度に基づくフィードバック制御の応答速度を遅くする必要のある従来装置では、過渡運転条件などで安定度に基づくフィードバック制御を十分に行うことができない。
【００２４】
そこで、このような運転領域においても安定許容限界近傍での制御を可能とするため、安定度に基づくフィードバック制御に学習制御を併用することが考えられる。これを説明すると、定常時（安定度に基づくフィードバック制御条件である）に安定度に基づくフィードバック制御を十分行った後（図２の左側参照）では、空燃比のフィードバック補正量により目標安定度での制御が可能となり、このフィードバック補正量を学習値として記憶しておく。そして、リーン運転時でも安定度に基づくフィードバック制御条件が成立しない運転時（たとえば緩加速時）になると、この学習値を補正量として用いることで（図２の右側参照）、安定度に基づくフィードバック制御が行われなくても目標安定度での制御が可能となるのである。
【００２５】
しかしながら、その一方でパージガスの影響など何らかの原因によって学習値が不適当な値になったとき、安定度に基づくフィードバック制御の応答が遅いため、安定度が良好な状態に収束するまでのあいだ燃焼不安定に伴う不快感を運転者に与えることになる。
【００２６】
このようなパージガスの影響などにより学習値が不適当な値になったときの安定度の悪化を防止するため、始動後にリーン運転とパージガスの導入を禁止して、理論空燃比を目標値とする空燃比のフィードバック制御を行い、その空燃比フィードバック制御中にベース学習値を更新し、ベース学習値の収束後にパージガスの導入を開始して通常学習値を更新するようにした従来装置があるので、この従来装置を、上記の安定度に基づくフィードバック制御に学習制御を併用するものに適用して、始動後にパージガスの導入を禁止して安定度に基づくフィードバック制御を行い、そのフィードバック制御中にベース学習値を更新し、ベース学習値の収束後にパージガスの導入を開始して通常学習値を更新するようにすることが考えられる。
【００２７】
しかしながら、前述のように安定度に基づくフィードバック制御はその応答速度を遅くする必要があるので、従来装置のように、学習値の中心値を初期値として通常学習値を更新してゆくのでは、通常学習値が収束するまでに長い時間を要し、そのあいだ空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりしてしまう。
【００２８】
これに対処するため本発明の第１実施形態では、ベース学習値の収束値を通常学習値の初期値として設定する。
【００２９】
コントロールユニット２で実行されるこの制御の内容を、以下のフローチャートにしたがって説明する。
【００３０】
図３のフローチャートは所定の空燃比となるように制御するための目標燃空比Ｔｄｍｌを算出するためのもので、一定時間毎（たとえば１０ｍｓ毎）にあるいはバックグランドジョブで実行する。以下のフローチャートで一定時間毎にあるいはバックグランドジョブで実行する場合、図に単に１０ｍｓ毎と記し、制御周期については省略する。
【００３１】
ステップ１ではリーン運転条件かどうかをフラグ＃ＦＬＥＡＮにより判断する。＃ＦＬＥＡＮ＝１のときはリーン運転条件、＃ＦＬＥＡＮ＝０のときは非リーン運転条件である。リーン運転条件の判定については説明しないが、特開平６−２７２５９１号公報などに開示されている公知のものでかまわない。
【００３２】
リーン運転条件のときはステップ２に進み、理論空燃比よりも薄い空燃比のマップ値を、所定のマップ（ＭＤＭＬＬマップ）を回転数Ｎｅと負荷Ｔｐとで参照することにより求める。
【００３３】
ステップ３では学習値を参照する。この学習値の参照については図４、図５のフローチャートにより説明する。
【００３４】
図４、図５において、まずステップ１１ではフラグ＃ＦＢＬＬＴＤよりベース学習値ＢＳＬＤＭＬが収束したかどうかをみる。図１４で後述するように、＃ＦＢＬＬＴＤ＝０はベース学習値ＢＳＬＤＭＬが未収束であることを、また＃ＦＢＬＬＴＤ＝１はベース学習値ＢＳＬＤＭＬが収束したことを表す。したがって、ＢＳＬＤＭＬが未収束のときは原則としてステップ１１よりステップ１５に進んでベース学習値ＢＳＬＤＭＬを、またＢＳＬＤＭＬが収束したあとは、図１０で後述する安定化燃空比補正係数ＬＬＤＭＬの更新許可状態にあるかぎり、原則として図４のステップ１１、図５のステップ２１より図５のステップ２４またはステップ２７に進んで学習領域毎の通常学習値ＬＲＬＤＭＬ（ｋ）をそれぞれ選択する。
【００３５】
なお、ベース学習値ＢＳＬＤＭＬは図１４で後述するように、運転領域に関係のない１データである。また、通常学習値ＬＲＬＤＭＬ（ｋ）の学習領域は、後述する図１６に示すように、回転数Ｎｅと負荷Ｔｐをパラメータとして複数の領域に分割され、学習領域毎に独立の学習値が格納されている。ＬＲＬＤＭＬ（ｋ）のｋは、図１６に示す０から１５までの各学習領域を区別するためにつけた番号である。
【００３６】
ただし、次の▲１▼〜▲５▼の条件のときは参照学習値が若干異なる。
【００３７】
〈１〉ベース学習値が未収束の場合（図４でステップ１２以降に進む場合）
▲１▼ＢＳＬＤＭＬの更新領域にあるものの安定化燃空比補正係数ＬＬＤＭＬ（後述する）の更新許可状態にないときはステップ１２、１４よりステップ１８に進んでＢＳＬＤＭＬに誤差マージンＬＲＭＧＮを加えた値を参照学習値に入れる。
【００３８】
▲２▼ＬＬＤＭＬの更新許可状態であるがＢＳＬＤＭＬの更新領域にないときはステップ１２、１３よりステップ１６、１７に進んでそのときの回転数Ｎｅと負荷Ｔｐの属する学習領域の通常学習値ＬＲＬＤＭＬ（ｋ）を選択し、このＬＲＬＤＭＬ（ｋ）を参照学習値に入れる。
【００３９】
▲３▼ＬＬＤＭＬの更新許可状態でなくかつＢＳＬＤＭＬの更新領域でもないときはステップ１２、１４よりステップ１９に進んで学習値の中心値である１００％を参照学習値に入れる。
【００４０】
〈２〉ベース学習値が収束した後（図５のステップ２１以降に進む場合）
▲４▼ＢＳＬＤＭＬより所定値ＳＬＬＤＭＬ＃を差し引いた値よりもそのときの通常学習値ＬＲＬＤＭＬ（ｋ）のほうが大きい場合（ＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃≦ＬＲＬＤＭＬ（ｋ））にＬＬＤＭＬの更新許可状態にないときは、ステップ２２、２３よりステップ２５に進んで、ＬＲＬＤＭＬ（ｋ）に誤差マージンＬＲＭＧＮを加えた値を参照学習値に入れる。
【００４１】
▲５▼ＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃よりもＬＲＬＤＭＬ（ｋ）が小さくなった場合（ＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＞ＬＲＬＤＭＬ（ｋ））にＬＬＤＭＬの更新許可状態にないときは、ステップ２２、２６よりステップ２８に進んでＢＳＬＤＭＬに誤差マージンＬＲＭＧＮを加えた値を参照学習値に入れる。
【００４２】
ここで、▲５▼の場合に通常学習値を選択せずにベース学習値を選択するようにしたのは、この場合にまで通常学習値を選択したのでは、空燃比がリーンになり過ぎるので、これを避けるためである。
【００４３】
▲１▼、▲４▼、▲５▼の場合に誤差マージンＬＲＭＧＮを加えるようにしたのは次の理由からである。
【００４４】
次の２つの運転条件
１）第一の運転条件：リーン運転時において安定度に基づくフィードバック制御を行いつつ学習値を更新しているとき、
２）第二の運転条件：同じリーン運転時でも安定度に基づくフィードバック制御時でなく記憶手段に格納されている学習値で初期設定の空燃比を補正するとき
を考える。なお、このときの学習値は正確には、ベース学習値の収束前であれば図４にしたがって参照される学習値、ベース学習値の収束後になると図５にしたがって参照される学習値である。しかしながら、簡単にはベース学習値の収束前はベース学習値、ベース学習値の収束後は通常学習値で考えればよい。
【００４５】
この場合に、目標空燃比を一定として吸入空気量を変化させたときの空燃比誤差（以下単に空燃比誤差という）が運転条件によらず一律の大きさであるとき、あるいは空燃比誤差がまったくないとき（理想的な状態のとき）には、第二の運転条件での安定度が第一の運転条件での安定度と一致する（つまり、第二の運転条件において空燃比が目標安定度へと制御される）のであるが、空燃比誤差が運転条件（たとえば負荷や回転数）により異なるときは、２つの運転条件のあいだの空燃比誤差の差分だけ第二の運転条件での安定度が第一の運転条件での安定度からずれる。このずれにより第二の運転条件での安定度が第一の運転条件での安定度よりも悪くなった（つまり空燃比が目標安定度相当値よりもリッチになった）とき、燃焼変動が増大して運転者へ与える不快感が増すのである。
【００４６】
さらに詳述すると、図６の左側に吸入空気量に対して空燃比誤差が右下がりで変化する例を示す（吸入空気量が小さい領域では空燃比誤差がプラスであったものが、吸入空気量の増加とともに空燃比誤差がマイナス側へと変化している）。
この場合に、定常の位置（黒丸で示す）が上記の第一の運転条件、緩加速の位置（白丸で示す）が上記の第二の運転条件にそれぞれ相当し、空燃比誤差の特性が右下がりであることから、２つの位置の間に空燃比誤差の差分が存在する。定常の位置においても、安定度に基づくフィードバック制御を行うこともなくかつ学習も進んでなければ空燃比誤差により安定度が目標安定度より外れることになるが、定常の位置では安定度に基づくフィードバック制御が行われることから、図６右側上段に示したように、空燃比誤差が存在しても安定度が目標安定度へと制御され、このときのフィードバック補正量が学習値として格納される。
【００４７】
これに対して、定常の位置よりも空燃比誤差がマイナスで大きくなる緩加速の位置では、定常の位置との空燃比誤差の差分だけ空燃比が初期設定の空燃比よりリーン側にずれるので、この差分だけずれた初期設定の空燃比を、定常の位置で格納した学習値を補正量として補正すると、図６右側下段に示したように、空燃比が目標安定度相当値よりも過剰にリーンになってしまうのである。
【００４８】
なお、このことは、図６左側において空燃比誤差の特性が右上がりとなる（ただし、定常の位置、緩加速の位置ともプラス側にあり、かつ定常の位置よりも緩加速の位置のほうがよりプラス側にあるとする）ときも同様であり、このときは、第一の運転条件との空燃比誤差の差分だけ第二の運転条件での空燃比が目標安定度相当値よりも過剰にリッチになる。
【００４９】
そこで、リーン運転での安定度に基づくフィードバック制御の非成立時にそのときの運転条件と学習代表点との空燃比誤差の差分だけ学習値をエンジンの発生するトルクが増加する側にシフトさせるため、誤差マージンＬＲＭＧＮを導入する。学習値（ＢＳＬＤＭＬ、ＬＲＬＤＭＬ）はこの値が大きくなるほど空燃比がリッチ側に向かう値であり、誤差マージンＬＲＭＧＮは２つの運転条件（上記の第一の運転条件と第二の運転条件）の間の空燃比誤差の差分に相当し、ＬＲＭＧＮには０または正の値を与えているので、ＬＲＭＧＮを加算することは、リーン運転時の初期設定の空燃比をリッチ側にシフトすることになるのである。
【００５０】
具体的には、ＬＲＭＧＮは図７に示したように、リーン運転時でも安定度に基づくフィードバック制御時でない場合の負荷Ｔｐと学習代表点（図６左側に示す定常の位置あるいは第一の運転条件のこと）の負荷ＬＲＴＰとの差の絶対値｜Ｔｐ−ＬＲＴＰ｜をパラメータとし、｜Ｔｐ−ＬＲＴＰ｜が０のとき最小値の０となり、｜Ｔｐ−ＬＲＴＰ｜が大きくなるほど大きくなる値である。
【００５１】
なお、図６左側に示したように、
（ｉ）定常の位置で空燃比誤差がマイナス側にありかつ定常の位置より緩加速の位置の空燃比誤差のほうがマイナスで大きい場合
に、緩加速の位置で学習値を参照してこれを補正量とするとき、空燃比が定常の位置との空燃比誤差の差分だけ目標安定度相当値を超えて過度にリーン側になる。これを逆にいえば、
（ｉｉ）定常の位置で空燃比誤差がマイナス側にありかつ定常の位置より緩加速の位置の空燃比誤差のほうがマイナスで小さい場合（図示しない）
には、緩加速の位置で学習値を参照してこれを補正量とするとき、空燃比が定常の位置との空燃比誤差の差分だけ目標安定度相当値よりもリッチ側（つまり燃焼変動が収まる側）になるので、この場合には運転者への不快感を増すことにならない。したがって、燃焼変動の増大に伴う運転者への不快感を解消するために空燃比をリーン側にシフトしなければならないのは、上記（ｉ）の場合だけである。しかしながら、コントロールユニットでは、上記（ｉ）の場合であるのか、上記（ｉｉ）の場合であるのかを区別することができないので、（ｉ）、（ｉｉ）の場合とも、空燃比をリッチ側にシフトするため、図７のように、ＴｐとＬＲＴＰの差の絶対値をパラメータとしているのである。
【００５２】
なお、予め（ｉ）、（ｉｉ）の場合を区別できるときは、（ｉ）の場合に限って空燃比をリーン側にシフトし、（ｉｉ）の場合には、逆に空燃比をリッチ側にシフトすることで、（ｉｉ）の場合にも、空燃比を目標安定度相当値へと制御できることになる。
【００５３】
図６左側に示した定常の位置（学習代表点）は、リーン運転領域での負荷が中程の条件を選んで設定する。その理由は次の通りである。誤差マージンが大きいと、空燃比が大きく変化してしまうので、誤差マージンはできれば小さいほど望ましいこと、また、２つの位置（定常の位置と緩加速の位置）の間の空燃比誤差の差分が多くなるほど誤差マージンを大きくする必要があることから、定常の位置がリーン運転領域での負荷の中程にあるときがトータルでみて２つの位置の間の空燃比誤差の差分（したがって誤差マージン）が最小になると推測されるからである。
【００５４】
運転条件に応じて空燃比誤差が変化する場合に、運転条件の代表として図６左側には吸入空気量を挙げたが、エンジン回転数に応じても空燃比誤差が変化することが考えられるので、図７に示したように、誤差マージンは回転数Ｎｅと学習代表点の回転数ＬＲＮＥとの差の絶対値｜Ｎｅ−ＬＲＮＥ｜をもパラメータとしており、｜Ｎｅ−ＬＲＮＥ｜が大きくなるほどＬＲＭＧＮの値を大きくしている。
【００５５】
このようにして、誤差マージンＬＲＭＧＮにより第二の運転条件でその第二の運転条件と第一の運転条件との空燃比誤差の差分だけ学習値をリッチ側にシフトするので、第一の運転条件と第二の運転条件との間に空燃比誤差の差分が存在する場合でも、空燃比を目標安定度相当値へと制御できる。たとえば、図８は図６の右側の特性を改めて書き直したもので、緩加速時（第二の運転条件）に学習値を参照してこれを補正量とするとき、空燃比が定常時（第一の運転条件）との空燃比誤差の差分だけ目標安定度相当値を超えて過度にリーン側になるのであるが、本実施形態では、緩加速時と定常時の２つの運転条件の間の空燃比誤差の差分だけリッチ側にシフトされることから（図８右側参照）、２つの運転条件の間に空燃比誤差の差分が存在しても、空燃比を目標安定度相当値へと制御できるのである。
【００５６】
このようにして学習値を参照したら図３のステップ４に戻り、その参照学習値をリーン運転条件のときのマップ燃空比に乗算することにより、つまり
Ｔｄｍｌ＝Ｍｄｍｌ×参照学習値                            …（１）
の式により目標燃空比Ｔｄｍｌを算出する。
【００５７】
安定度に基づくフィードバック制御時にエンジン回転変動量が大きくなるほど参照学習値が大きくなるため、燃焼変動量が増大するのにしたがってこの目標燃空比Ｔｄｍｌが大きくなり、つまり目標燃空比はリッチ側にシフトされていく。
なお、リーン運転条件にないときは、ステップ５で理論空燃比あるいはそれよりも濃い値のマップ燃空比を、上記ＭＤＭＬＬマップと同じように所定のマップ（ＭＤＭＬＳマップ）にしたがって参照し、このマップ燃空比Ｍｄｍｌをステップ６においてそのままＴｄｍｌに入れる。
【００５８】
なお、ここでは図示しないが、空燃比を緩やかに切換えることによりトルクの急変を防いで、運転性能の安定性を確保するため、目標燃空比Ｔｄｍｌに対して、空燃比切換時のダンパ操作を行って燃空比補正係数ＤＭＬを求めるようにしてもかまわない（特開平６−２７２５９１号公報参照）。
【００５９】
次に、図９のフローチャートは安定度を検出するためのもので、図３とは独立にＲｅｆ信号の入力毎に実行する。Ｒｅｆ信号は、４気筒エンジンのときクランク角で１８０°毎に、６気筒エンジンのときクランク角で１２０°毎に発生する信号である。
【００６０】
ステップ３１、３２ではＲｅｆ信号周期ＴＲＥＦを計測し、これの逆数に定数Ｋ１を掛けることによってエンジン回転数Ｒ０に変換する。ステップ３３ではクランク角センサの誤差により特定の周波数に生じるノイズを除去するためバンドリジェクトフィルタ処理を行う。続いて人体に振動として感じられる車両共振周波数成分を抽出するバンドパスフィルタ処理をステップ３４において、さらに絶対値処理をステップ３５において行い、その結果をステップ３６においてフィルタ出力ＦＩＬＯＵＴとする。バンドパスフィルタ処理により、エンジン回転数の時系列データからＤＣ成分と高周波成分を除去して車両共振周波数帯の変動成分のみを残すのである。また、絶対値処理によりその変動の大きさを取り出している。したがって、フィルタ出力ＦＩＬＯＵＴは、エンジン回転変動のうち車両共振周波数帯に含まれる変動成分の大きさを表す。
【００６１】
ステップ３７ではこのフィルタ出力ＦＩＬＯＵＴに加重平均処理を行い、その結果を安定度指標ＦＩＬＤＭＰとする。
【００６２】
図１０、図１１のフローチャートは安定度補正量としての安定化燃空比補正係数ＬＬＤＭＬを算出するためのもので、図９とは独立に実行する。ただし、図１０のステップ４２の操作を実行する直前に図９にしたがって安定度指標ＦＩＬＤＭＰが得られていることが前提である。
【００６３】
図１０のステップ４１で安定化燃空比補正係数ＬＬＤＭＬの更新が許可されているかどうかを判定するが、このための具体的な内容は図１１に示す。この判定は図１１のステップの内容を一つずつチェックすることにより行い、各項目のすべてが満たされたときにＬＬＤＭＬの更新を許可し、一つでも反するときはＬＬＤＭＬの更新を不許可とする。
【００６４】
すなわち、
ステップ５１：フラグ＃ＦＬＥＡＮ＝１（リーン運転条件）である、
ステップ５２：負荷Ｔｐの５０ｍｓ前からの変化量の絶対値｜ΔＴｐ｜が所定値ＬＬＤＴＰ＃以下である、
ステップ５３：回転数Ｎｅの５０ｍｓ前からの変化量の絶対値｜ΔＮｅ｜が所定値ＬＬＤＮＥ＃以下である、
ステップ５４：スロットルバルブ開度ＴＶＯの５０ｍｓ前からの変化量の絶対値｜ΔＴＶＯ｜が所定値ＬＬＤＴＶＯ＃以下である、
ステップ５５：どの気筒も燃料カット中でない、
ステップ５６：クランク角センサに異常（図ではＮＧで略記）がない、
ステップ５７：フラグ＃ＦＣＮＳＴ＝１（緩加速時や定常時）である
ときに、ステップ５８でＬＬＤＭＬの更新を許可し、そうでなければステップ５９に移行してＬＬＤＭＬの更新を許可しない。
【００６５】
上記のステップ５１〜５７はＬＬＤＭＬの更新（安定度の検出を含む）を精度良く行うための条件である。本実施形態のように燃焼変動と回転変動の相関を利用して回転変動より燃焼変動を推定する方式では、加減速によりエンジン回転が上下すると、その加減速に伴う回転変化分が燃焼変動に伴う回転変動と分離できずに燃焼変動の大きさを実際よりも大きく推定してしまうことが懸念されるので、上記のステップ５２、５３、５４、５７により非定常時（急加速時や急減速時）にはＬＬＤＭＬの更新を禁止するのである。なお、ステップ５７のフラグ＃ＦＣＮＳＴは車速の変化量ΔＶＳＰと所定値ＬＬＣＤＶＨの比較によりΔＶＳＰ＜ＬＬＣＤＶＨ（緩加速時や定常時）のとき“１”となり（図１２参照）、ΔＶＳＰ≧ＬＬＣＤＶＨ（急加速時）のとき“０”となるフラグである。
【００６６】
このようにしてＬＬＤＭＬの更新を許可するかどうかを判定したら、図１０のステップ４１に戻り、ＬＬＤＭＬの更新を許可するときだけステップ４２以降に進む。
【００６７】
ステップ４２では、安定度指標ＦＩＬＤＭＰ（図９のステップ３７ですでに得られている）を読み込み、ステップ４３において負荷と回転数より所定のマップを参照して安定度目標値ＬＬＳＴを求め、これらの値を用いステップ４４において
0003946816.tif 000002
ただし、ＬＬＤＭＬ（ｎｅｗ）：更新後の安定化燃空比補正係数
ＬＬＤＭＬ（ｏｌｄ）：更新前の安定化燃空比補正係数
ＧＬＬＦＢ＃：ゲイン
の式により安定化燃空比補正係数（始動時に１００％に初期設定）ＬＬＤＭＬを更新する。
【００６８】
（２）式より安定化燃空比補正係数ＬＬＤＭＬは、安定度指標ＦＩＬＤＭＰが安定度目標値ＬＬＳＴを超えて大きくなるほど、つまり燃焼が悪化するほど大きくなる値である。
【００６９】
（２）式のゲインＧＬＬＦＢ＃は安定度に基づくフィードバック制御の応答速度を定める値であり、従来装置と同じに、過補正を抑制して制御安定性を高めるため比較的小さな値としている（フィードバック制御の応答速度を遅くしている）。
【００７０】
ステップ４５では下限リミッタＬＤＭＬＭＮと上限リミッタＬＤＭＬＭＸを読み込み、ステップ４６においてＬＬＤＭＬのリミッタ処理を行う。ここでは、図１３に示したように、ベース学習値ＢＳＬＤＭＬを基準として所定値ＬＲＣＨＧ＃を差し引いた値を下限リミッタＬＤＭＬＭＮ、ＢＳＬＤＭＬより所定値ＬＲＣＨＧ＃を加えた値を上限リミッタＬＤＭＬＭＸとしている。
【００７１】
図１０のステップ４７では学習値の更新を行う。これについては図１４のフローチャートにより説明する。
【００７２】
まず、ステップ７１で学習カウンタ（始動時に０に初期設定）ＣＢＳＬＤＭと所定値ＮＢＳＬＤＭ＃を比較する。学習カウンタＣＢＳＬＤＭはベース学習値ＢＳＬＤＭＬを更新した回数を計測するためのものである。ＣＢＳＬＤＭ＜ＮＢＳＬＤＭ＃のときはベース学習値ＢＳＬＤＭＬが収束していないと判断してステップ７２に進み、フラグ＃ＦＢＬＬＴＤに“０”を入れる。フラグ＃ＦＢＬＬＴＤ＝０によりＢＳＬＤＭＬが未収束であることを表すわけである。これに対して＃ＦＢＬＬＴＤ＝１は、後述するようにＢＳＬＤＭＬが収束したことを表す。
【００７３】
ステップ７３、７４では負荷Ｔｐが所定の領域（ＬＬＣＴＰＬ≦Ｔｐ≦ＬＬＣＴＰＨ）にあるかどうか、回転数Ｎｅが所定の領域（ＬＬＣＮＥＬ≦Ｎｅ≦ＬＬＣＮＥＨ）にあるかどうかみて、両方が所定の領域にあるときはステップ７５でフラグ＃ＦＬＲＬＬＣに“１”を入れる。フラグ＃ＦＬＲＬＬＣ＝１によりベース学習値の更新領域（図１５参照）にあることを表すわけである。これに対して、負荷と回転数のいずれかが所定の領域にないときはフラグ＃ＦＬＲＬＬＣ＝０である（後述する）。
【００７４】
ステップ７６、７７では、そのときの安定化燃空比補正係数ＬＬＤＭＬをベース学習値ＢＳＬＤＭＬに入れるとともに、学習カウンタＣＢＳＬＤＭをインクリメントする。
【００７５】
つまり、エンジン始動後最初にリーン運転状態になり、安定度に基づくフィードバック制御を開始したとき、ベース学習値ＢＳＬＤＭＬが未収束であれば通常学習値ＬＲＬＤＭＬ（ｋ）の更新を行う前にパージをカットしてベース学習値ＢＳＬＤＭＬの更新を行うので、ベース学習値ＢＳＬＤＭＬはパージの影響を受けずに、エンジンの特性のみで決まる安定化燃空比補正係数ＬＬＤＭＬの要求値へと収束する。また、ベース学習値ＢＳＬＤＭＬが収束したら以降はベース学習値の更新は行わず、通常学習値ＬＲＬＤＭＬ（ｋ）の更新へと進むことになる。
【００７６】
ただし、ベース学習値ＢＳＬＤＭＬが収束するまではパージをカットし続けなければならないため、できるだけ短時間でベース学習値ＢＳＬＤＭＬを収束させる必要がある。そこで、ベース学習値ＢＳＬＤＭＬは通常学習値ＬＲＬＤＭＬ（ｋ）のように学習マップをもたせず、運転条件によらず１データで構成している。
【００７７】
一方、運転条件によらず同一のベース学習値ＢＳＬＤＭＬを更新し、また参照するため、ベース学習値ＢＳＬＤＭＬの更新時と参照時との運転条件が大きく異なる場合には参照時の空燃比制御精度が悪化することが懸念される。しかしながら、ベース学習値ＢＳＬＤＭＬの更新時と運転条件が大きく異なる場合にベース学習値ＢＳＬＤＭＬを参照するのは、パージガスの導入の影響などにより不安定状態になったとき（具体的にはベース学習値の収束後においてＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＞ＬＲＬＤＭＬ（ｋ）かつＬＬＤＭＬの更新許可状態でないとき図５のステップ２８でＢＳＬＤＭＬが参照される）だけであり、その参照期間も一時的であるので、大きな問題となることはない。
【００７８】
また、ベース学習値ＢＳＬＤＭＬはバックアップメモリに格納する。今回運転時に更新されたＢＳＬＤＭＬがそのまま次回運転時まで保持されるわけである。ＢＳＬＤＭＬの初期設定値は学習値の中心値である１００％である。
【００７９】
ステップ７８ではベース学習値ＢＳＬＤＭＬに入れたと同じ安定化燃空比補正係数ＬＬＤＭＬの値をすべての学習領域の通常学習値ＬＲＬＤＭＬ（ｋ）に入れる。通常学習値ＬＲＬＤＭＬ（ｋ）の学習領域は、図１６のように、回転数Ｎｅと負荷Ｔｐをパラメータとして複数の領域に分割され、学習領域毎に独立の学習値が格納されている。通常学習値ＬＲＬＤＭＬ（ｋ）のｋは、後述する図１６に示す０から１５までの各学習領域を区別するためにつけた番号である。したがって、ステップ７８の操作によりすべての学習領域の通常学習値ＬＲＬＤＭＬ（ｋ）にベース学習値の収束値が初期値として格納されることになる。
【００８０】
ＣＢＳＬＤＭ＜ＮＢＳＬＤＭ＃かつベース学習値の更新領域であることが継続するときは、ステップ７５〜７８を繰り返し、やがてＣＢＳＬＤＭ≧ＮＢＳＬＤＭ＃になると、ベース学習値ＢＳＬＤＭＬが収束したことを表すためステップ８０に進んでフラグ＃ＦＢＬＬＴＤに“１”を入れ、その後にステップ８１、８２に進んで学習領域毎に通常学習値ＬＲＬＤＭＬ（ｋ）の更新を行う。回転数Ｎｅと負荷Ｔｐが図１６に示した５の学習領域に属するときは、その判定した５の学習領域の通常学習値ＬＲＬＤＭＬ（５）にだけ安定化燃空比補正係数ＬＬＤＭＬを入れるのである。
【００８１】
ここで、通常学習値ＬＲＬＤＭＬ（ｋ）の学習領域は、図１６に示したように全運転領域を回転数Ｎｅと負荷Ｔｐをパラメータとして複数の領域に分割したもので、学習領域毎に独立の学習値が格納されている。ＬＲＬＤＭＬ（ｋ）は学習領域毎の学習値を表している。ＬＲＬＤＭＬ（ｋ）のｋは各学習領域を区別するためにつけた番号で、１６個の学習領域があるときｋは０から１５までの整数を取り得る
一方、ＣＢＳＬＤＭ＜ＮＢＳＬＤＭ＃でもベース学習値ＢＳＬＤＭＬの更新領域でないときはステップ７３または７４よりステップ７９に進みフラグ＃ＦＢＬＤＴＤに“０”を入れる。
【００８２】
このときは、さらにステップ８１、８２の操作を行う。この操作によりＬＬＤＭＬの値が通常学習値に入り、結果として参照学習値にもＬＬＤＭＬが入る（図４のステップ１１、１２、１３、１６、１７参照）。つまり、図１４のフローチャートでは、安定化燃空比補正係数ＬＬＤＭＬをいったんは必ず学習値として格納する処理を行わせるため、このときにもステップ８１、８２の操作へと進ませているのである。図１４、図４、図５より、結果的には学習値が同時に参照学習値に入り、また空燃比補正は参照学習値しか使用しない（図３のステップ３、４参照）ので、これで通常のフィードバック制御と同様の働きになる。ＢＳＬＤＭＬの収束前（つまりＬＬＤＭＬの更新許可状態にあるがＢＳＬＤＭＬの更新領域にないとき）は、通常学習値をダミーとして使っているわけである。
【００８３】
図１７のフローチャートは、このようにして求めた目標燃空比Ｔｄｍｌを使って燃料噴射パルス幅を算出して出力する制御動作内容を示すもので、図３に続いて実行する。
【００８４】
まずステップ８１で目標燃空比Ｔｄｍｌを用いて、目標燃空比相当量Ｔｆｂｙａを、
Ｔｆｂｙａ＝Ｄｍｌ＋Ｋｔｗ＋Ｋａｓ                        …（３）
の式により算出する。
【００８５】
ここで、Ｋｔｗは冷却水温に応じた燃料増量分、Ｋａｓは始動直後の燃料増量分である。なお、（３）式のＴｆｂｙａの単位は％であるが、後述する（４）式のＴｆｂｙａの単位は無名数である。
【００８６】
次に、ステップ８２でエアフローメータの出力をＡ／Ｄ変換し、リニアライズして吸入空気流量Ｑを算出する。そして、ステップ８３でこの吸入空気流量Ｑとエンジン回転数Ｎｅとから、ほぼ理論空燃比の得られる基本噴射パルス幅Ｔｐを、Ｔｐ＝Ｋ×Ｑ／Ｎとして求める。なおＫは定数である。
【００８７】
そして、ステップ８４でこのＴｐをもとにして、シーケンシャル噴射における一回の燃料噴射パルス幅Ｔｉを、
0003946816.tif 000003
の式で計算する。
【００８８】
ここで、Ｋａｔｈｏｓは過渡補正量、αは空燃比フィードバック補正係数、αｍはαに基づいて演算される空燃比学習補正係数、Ｔｓは噴射弁が噴射信号を受けてから実際に開弁するまでの作動遅れを補償するための無効パルス幅である。また、（４）式はシーケンシャル噴射（４気筒ではエンジン２回転毎に１回、各気筒の点火順序に合わせて噴射）における式であるため、Ｔｓの前に数字の２が入っている。ただし、リーン条件のときには、αとαｍは所定の値に固定されている。
【００８９】
なお、前述したように基本噴射パルス幅Ｔｐをエンジン負荷として用いている。ここでは簡単のためこのＴｐを用いているが、このＴｐに対して吸気管容積を考慮して加重平均した値を、Ｔｐに代えて用いることもできる。
【００９０】
次にステップ８５、８６で燃料カットの判定を行い、ステップ８７、８８で燃料カット条件ならば無効噴射パルス幅Ｔｓを、そうでなければＴｉを出力レジスタにストアすることでクランク角センサの出力にしたがって所定の噴射タイミングでの噴射に備える。
【００９１】
図１８のフローチャートはパージ弁の開閉制御を行うためのもので、図３、図１０、図１７とは独立に実行する。
【００９２】
パージ弁の開閉制御は、ステップ９１、９２、９３、９４の内容を一つずつチェックすることにより行い、各項目のすべてを満たすとき、パージ弁を開き、一つでも反するときはパージ弁を閉じる。
【００９３】
すなわち、
ステップ９１：アイドルスイッチがＯＮでない、
ステップ９２：冷却水温Ｔｗが所定の範囲（ＴＷＣＰＬ≦Ｔｗ≦ＴＷＣＰＨ）にある、
ステップ９３：負荷Ｔｐが所定の領域（ＴＰＣＰＬ≦Ｔｐ≦ＴＰＣＰＨ）にある、
ステップ９４：フラグ＃ＦＢＬＬＴＤ＝１である（ＢＳＬＤＭＬの収束後）
ときにステップ９５でパージ弁を開き、そうでなければステップ９６に移行してパージ弁を閉じる。つまり、ベース学習値ＢＳＬＤＭＬの更新はパージカット中に行う。パージ時にベース学習値ＢＳＬＤＭＬの更新を禁止するのは、ベース学習値ＢＳＬＤＭＬにより基本の空燃比に関係する部品（燃料噴射弁やエアフローメータ）の流量特性のバラツキや経時劣化に伴う空燃比誤差のみを吸収したいためである。
【００９４】
ここで、本実施形態の作用を説明する。図１９に示したように、リーン運転の開始後しばらくパージカットを行った後でキャニスタからのパージガスが導入され、そのパージ中に運転条件が学習領域１から学習領域２へと移り、学習領域１に戻ってくる場合を考える。ただし、ベース学習値ＢＳＬＤＭＬに中心値の１００％が、また学習領域毎の通常学習値ＬＲＬＤＭＬ（ｋ）にすべての学習領域で中心値の１００％が入っているとする。なお、図１９の学習領域１、学習領域２は学習領域が異なることを意味させているにすぎず、学習領域１、２の通常学習値がＬＲＬＤＭＬ（１）、ＬＲＬＤＭＬ（２）ということではない。
【００９５】
ベース学習値ＢＳＬＤＭＬ、通常学習値ＬＲＬＤＭＬ（ｋ）、安定化燃空比補正係数ＬＬＤＭＬのすべてが１００％であるとき必ず安定な状態になるようにリーン運転時の空燃比（および点火時期）を初期設定していることから、ｔ１のリーン運転の開始タイミングでは、空燃比が目標空燃比よりもリッチ側にくる（安定度指標ＦＩＬＤＭＰが安定度目標値ＬＬＳＬより小さくなる）ので、ベース学習値が小さくなる側に更新され、ｔ２のタイミングの直前でベース学習値がａの値に収束し、このときの空燃比は目標空燃比と一致している（第３段目の実線参照）。
【００９６】
一方、本実施形態ではベース学習値を更新する際に、従来装置と相違して、ベース学習値に格納される安定化燃空比補正係数ＬＬＤＭＬの値と同じ値がすべての学習領域の通常学習値に格納されることから、図示しないが、学習領域１、２の各通常学習値もベース学習値と同じ変化をたどり、ｔ２のタイミングの直前でａの値になる。
【００９７】
ベース学習値が収束したｔ２のタイミングで通常学習値の更新に移行してパージが開始されると、空燃比は一時的に目標空燃比よりもリッチになり、その分だけ安定度がよくなる（ふたたび安定度指標ＦＩＬＤＭＰが安定度目標値ＬＬＳＬより小さくなる）ので、学習領域１の通常学習値がベース学習値の収束値であるａよりさらに小さくなる側に更新されてゆき、ｔ３のタイミングからは学習値の下限リミッタであるｂに制限される（第３段目の実線参照）。このように本実施形態では、同じ学習領域１においてベース学習値の更新より通常学習値の更新へと移行するとき、学習値の中心値である１００％からでなく、ベース学習値の収束値であるａを初期値として通常学習値の更新を開始するので、学習値の中心値である１００％より通常学習値の更新を開始する場合より通常学習値が要求値により近い値となることから、通常学習値の収束が早まり、これによって、空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりすることがないのである。
【００９８】
なお、図示のパージガス濃度の変化に対して目標空燃比を維持するためには通常学習値が要求値のように急激に変化しなけばならないが、上記（２）式のゲインが、過補正を抑制して制御安定性を高めるため比較的小さな値としているので、要求値に対して通常学習値に応答遅れが生じている。
【００９９】
ｔ４よりｔ５までの期間は運転条件が定常でなくなる（ＬＬＤＭＬの更新許可状態でなくなる）ことから、安定度に基づくフィードバック制御条件の非成立時の制御（図ではオープン制御で示す）に移り、図４、図５のフローにしたがってベース学習値か通常学習値のいずれかが参照される。ｔ４よりｔ５までの期間ではＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＞ＬＲＬＤＭＬ（ｋ）であることから、図５のステップ２２、２６、２８と流れ、ベース学習値ＢＳＬＤＭＬの収束値であるａに誤差マージンＬＲＭＧＮが加算された値が参照される（第３段目の実線参照）。
【０１００】
ｔ５のタイミングで学習領域１より学習領域２へと切換わるときには学習領域１の通常学習値がｂの値のまま保持され、今度は学習領域２の通常学習値の更新へと移る。このときの学習領域２の通常学習値にはベース学習値ＢＳＬＤＭＬの収束値と同じ値であるａが入っている。
【０１０１】
ただし、ｔ５よりｔ６までの期間は運転条件が定常でない（ＬＬＤＭＬの更新許可状態でない）ので、安定度に基づくフィードバック制御条件の非成立時の制御となり、図４、図５のフローにしたがって学習値が参照される。ｔ５よりｔ６までの期間では、ＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＜ＬＲＬＤＭＬ（ｋ）となるので、図５のステップ２２、２３、２５と流れ、学習領域２の通常学習値の初期値であるａに誤差マージンＬＲＭＧＮが加算された値が参照される（第３段目の実線参照）。
【０１０２】
定常となるｔ６のタイミングよりベース学習値の収束値であるａの値を初期値として学習領域２の通常学習値が更新されていくが、学習領域２でもパージガスの影響を受けて空燃比がリッチになるので、学習領域２の通常学習値がａより小さくなる側に更新されてゆき、ｔ７のタイミングで要求値と一致している（第３段目の実線参照）。このように、ベース学習値の収束値であるａの値を、学習領域２の通常学習値の初期値としても設定しているので、学習値の中心値である１００％より学習領域２の通常学習値の更新を開始する場合より、通常学習値が要求値により近い値となり、不要に空燃比をリッチにすることがない。これによってＮＯｘの増加を抑えることができる。
【０１０３】
運転条件が定常でなくなる（ＬＬＤＭＬの更新許可状態でなくなる）ｔ８のタイミングでの通常学習値の値であるｃが学習領域２の通常学習値として保持され、ｔ８よりｔ９までは安定度に基づくフィードバック制御条件の非成立時の制御に移り、図４、図５のフローにしたがって学習値が参照される。このときはＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＜ＬＲＬＤＭＬ（ｋ）より図５のステップ２２、２３、２５と流れ、ｔ８のタイミングで保持された学習領域２の通常学習値の値であるｃに誤差マージンＬＲＭＧＮが加算された値が参照されるわけである（第３段目の実線参照）。
【０１０４】
ｔ９のタイミングで学習領域１に戻ると、学習領域１の通常学習値の更新に移る。このときの学習領域１の通常学習値にはｔ４のタイミングで保持された学習領域１の通常学習値であるｂの値が入っている。
【０１０５】
ただし、ｔ９よりｔ１０までの期間は運転条件が定常でない（ＬＬＤＭＬの更新許可状態でない）ので、安定度に基づくフィードバック制御条件の非成立時の制御により図４、図５のフローにしたがって学習値が参照される。このときは、ＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃＞ＬＲＬＤＭＬ（ｋ）より図５のステップ２２、２６、２８と流れ、ベース学習値の初期値であるａに誤差マージンＬＲＭＧＮが加算された値が参照される（第３段目の実線参照）。
【０１０６】
定常となるｔ１０のタイミングより、ｔ４のタイミングで保持された下限リミッタの値であるｂを初期値として学習領域１の通常学習値が更新される。ｔ４のタイミングでのパージガス濃度よりもｔ１０でのパージガス濃度のほうが小さくなっているので、ｔ１０のタイミングより学習領域１の通常学習値の更新を再開する当初は、そのパージガス濃度の減少分だけ空燃比が一気にリーン化する。このリーン化により安定度が悪くなる（安定度指標ＦＩＬＤＭＰが安定度目標値ＬＬＳＬより大きくなる）ので、学習領域１の通常学習値がｂの値より大きくなる側（空燃比をリッチにする側）に変化してゆき、ｔ１１のタイミングで要求値と一致している（第３段目の実線参照）。
【０１０７】
なお、図１９の第３段目において、オープン時マージンとあるのがＬＲＭＧＮ、オープン時学習値選択ゲタとあるのがＳＬＬＤＭＬ＃、オープン時学習値選択スライスレベルとあるのがＢＳＬＤＭＬ−ＳＬＬＤＭＬ＃のことである。
【０１０８】
このようにして本実施形態では、同じ学習領域１においてベース学習値の更新より通常学習値の更新へと移行するとき、学習値の中心値である１００％からでなく、ベース学習値の収束値を初期値として通常学習値の更新を開始するので、学習値の中心値である１００％より通常学習値の更新を開始する場合に比べて、学習値が要求値により近い値となることから、通常学習値の更新速度がもともと遅いものであっても、通常学習値の収束を早めることができ、これによって、空燃比が目標安定度相当値よりも過剰にリッチになったり、反対にリーンなったりすることがない。
【０１０９】
また、同じ学習領域においてベース学習値より通常学習値に移行する場合においてベース学習値の収束値が１００％から外れているときでも、学習値の中心値である１００％を初期値として通常学習値の更新を開始する従来装置では、ベース学習値より通常学習値への移行時に空燃比がステップ的に切換わり、これによって移行前後でトルク段差を生じて運転者に不快感を与えることになるのであるが、本実施形態では、ベース学習値より通常学習値への移行時の空燃比段差をなくすことができ、これによって移行前後でのトルク段差に伴う運転者への不快感を回避することができる。
【０１１０】
図２０のフローチャートは第２実施形態で、第１実施形態の図１４に対応する。図１４と異なるのはステップ１０１だけである。なお、図１４と同一の部分には同一のステップ番号をつけている。
【０１１１】
ベース学習値は学習領域毎の値でなく１データであるため、ベース学習値を更新したときの運転領域とそのベース学習値が格納される通常学習値の学習領域とが離れるほど通常学習値の初期値としての精度が悪くなる。そこで、第２実施形態ではベース学習値より通常学習値への移行当初に、この初期値の精度悪化分の影響を受けて空燃比がサージ限界よりもリーン側に外れないように、ベース学習値の収束値に所定のリッチ化マージンを加えた値を、通常学習値の初期値として設定するようにしたものである。
【０１１２】
第１実施形態と相違する部分を具体的に説明すると、図２０のステップ１０１ではサブルーチンを実行する。このサブルーチンについては図２１のフローチャートにより説明する。
【０１１３】
ステップ１１１では、領域番号ｋに０を入れ、ステップ１１２でこの領域に対するリッチ化マージンＩＮＴＭＧＮ（ｋ）を、図２２を内容とするマップを参照して求め、このリッチ化マージンＩＮＴＭＧＮ（ｋ）をステップ１１３において安定化燃空比補正係数ＬＬＤＭＬに加算した値を、リッチ化マージンＩＮＴＭＧＮ（ｋ）を参照したと同じ領域の通常学習値ＬＲＬＤＭＬ（ｋ）に入れる。
【０１１４】
図２２のように、リッチ化マージンＩＮＴＭＧＮ（ｋ）の領域は、図１６に示した通常学習値の学習領域と同じに区分けしかつ領域番号も通常学習値と同じにしており、各領域ごとに独立の値が入っている。ＩＮＴＭＧＮ（ｋ）の大きさは、ベース学習値の更新を行う領域と通常学習値の各学習領域との運転条件の差によって決める必要があるからである。
【０１１５】
ステップ１１４ではｋと１５を比較し、ｋ≦１５のときはステップ１１５でｋをインクリメントし、ステップ１１２、１１３の操作を繰り返す。やがて、ｋ＞１５になれば、図２１のサブルーチンを終了する。なお、ステップ１１２、１１３の操作をすべての学習領域に対して行う前に図２０の制御間隔である１０ｍｓが経過することはない。
【０１１６】
このようにして第２実施形態では、ベース学習値の更新を行う領域と通常学習値の各学習領域との運転条件の差に応じたリッチ化マージンをベース学習値の収束値に加算し、その加算値を通常学習値の初期値として設定するので、１データであるベース学習値を更新したときの運転領域とそのベース学習値が格納される通常学習値の学習領域とが離れていても、ベース学習値より通常学習値への移行当初に空燃比がサージ限界よりもリーン側に外れることがない。
【０１１７】
上記の（２）式（ＬＬＤＭＬの更新の式）は、積分制御方式で説明したが、比例制御方式あるいは比例積分方式でもかまわない。
【０１１８】
実施形態では、ベース学習値ＢＳＬＤＭＬ、通常学習値ＬＲＬＤＭＬ（ｋ）を記憶する手段がバックアップメモリ（たとえばバックアップＲＡＭ）である場合で説明したが、単なるＲＡＭでもかまわない。この場合でも、リーン運転時かつ安定度に基づくフィードバック制御時にベース学習値が収束した後に、リーン運転時でも安定度に基づくフィードバック制御時でなくなった場合に、そのベース学習値の収束値を初期値として通常学習値の更新を開始することで、通常学習値の収束を早めることができる。
【０１１９】
実施形態では、通常学習値を学習領域毎の値としたものであるが、１データで構成することもできる。
【０１２０】
最後に、図１において１１はリーンＮＯｘ触媒である。この触媒を用いた制御では、この触媒の吸蔵物質に限界まで吸着されたＮＯｘをいったん離脱させる必要があるときに、排気中の未燃成分であるＨＣ，ＣＯの量がすべてのＮＯｘ（吸蔵物質から離脱されるＮＯｘと排気中のＮＯｘの両方）を過不足なく還元するための必要量を超えるように空燃比をリッチ化し、そのあと直ちに所定のリカバー速度で理論空燃比へと戻すのであるが、本発明と直接関係しないので、説明は省略する（特願平７−１０１１４９号参照）。
【図面の簡単な説明】
【図１】第１実施形態の制御システム図である。
【図２】安定度学習制御の原理を説明するための特性図である。
【図３】目標燃空比Ｔｄｍｌの算出を説明するためのフローチャートである。
【図４】学習値の参照を説明するためのフローチャートである。
【図５】学習値の参照を説明するためのフローチャートである。
【図６】空燃比誤差の差分による安定度学習制御への影響を表す特性図である。
【図７】誤差マージンＬＲＭＧＮの特性図である。
【図８】誤差マージンＬＲＭＧＮの効果を説明するための特性図である。
【図９】安定度の検出を説明するためのフローチャートである。
【図１０】安定化燃空比補正係数ＬＬＤＭＬの算出を説明するためのフローチャートである。
【図１１】安定化燃空比補正係数ＬＬＤＭＬの更新許可の判定を説明するためのフローチャートである。
【図１２】フラグ＃ＦＣＮＳＴを説明するための波形図である。
【図１３】学習リミッタの算出を説明するためのフローチャートである。
【図１４】学習値の更新を説明するためのフローチャートである。
【図１５】ベース学習値の更新領域の説明図である。
【図１６】通常学習値の領域図である。
【図１７】燃料噴射パルス幅の算出とその出力とを説明するためのフローチャートである。
【図１８】パージ弁制御を説明するためのフローチャートである。
【図１９】第１実施形態の作用を説明するための波形図である。
【図２０】第２実施形態の学習値の更新を説明するためのフローチャートである。
【図２１】図２０のサブルーチンを説明するためのフローチャートである。
【図２２】第２実施形態のリッチ化マージンＩＮＴＭＧＮ（ｋ）の領域図である。
【図２３】第１の発明のクレーム対応図である。
【符号の説明】
１  エンジン本体
２  コントロールユニット
４  クランク角センサ
６  エアフローメータ
７  燃料噴射弁
【図１】
0003946816.tif 000004
【図２】
0003946816.tif 000005
【図３】
0003946816.tif 000006
【図４】
0003946816.tif 000007
【図５】
0003946816.tif 000008
【図６】
0003946816.tif 000009
【図７】
0003946816.tif 000010
【図８】
0003946816.tif 000011
【図９】
0003946816.tif 000012
【図１０】
0003946816.tif 000013
【図１１】
0003946816.tif 000014
【図１２】
0003946816.tif 000015
【図１３】
0003946816.tif 000016
【図１４】
0003946816.tif 000017
【図１５】
0003946816.tif 000018
【図１６】
0003946816.tif 000019
【図１７】
0003946816.tif 000020
【図１８】
0003946816.tif 000021
【図１９】
0003946816.tif 000022
【図２０】
0003946816.tif 000023
【図２１】
0003946816.tif 000024
【図２２】
0003946816.tif 000025
【図２３】
0003946816.tif 000026