(57)【特許請求の範囲】
【請求項１】
触媒の上流側と下流側の各空燃比センサと、
空燃比フィードバック制御の基本制御定数を演算する手段と、
前記空燃比フィードバック制御を行う制御域の中にあって空燃比フィードバック制御を行う制御域よりも狭い所定の修正制御域に運転条件があることを条件の一つに含む前記制御定数の修正制御条件の成立時かまたは非成立時かを判定する手段と、
この判定結果より修正制御条件の成立時に前記下流側空燃比センサの出力に基づいて修正値を演算する手段と、
この修正値で前記基本制御定数を修正して第１の制御定数を演算する手段と、
学習値を記憶する手段と、前記修正制御条件の成立時に前記修正値に基づいて前記記憶手段に記憶されている学習値を更新する手段と、
前記修正制御条件の成立時に前記下流側空燃比センサの出力よりリッチからリーンへの応答とリーンからリッチへの応答の差を演算する手段と、
この応答差に応じて前記学習値に対する補正値を演算する手段と、
この補正値を記憶する手段と、
この記憶手段に記憶されている補正値で前記記憶手段に記憶されている学習値を補正した値を修正値として設定し、この設定された修正値で前記基本制御定数を修正して第２の制御定数を演算する手段と、
前記修正制御条件の成立時には前記第１制御定数を用いて、また前記修正制御条件の非成立時には前記第２制御定数を用いて前記上流側空燃比センサの出力に基づく空燃比のフィードバック制御を行う手段と
を設けたことを特徴とするエンジンの空燃比制御装置。
【請求項２】
触媒の上流側と下流側の各空燃比センサと、
空燃比フィードバック制御の基本制御定数を演算する手段と、
前記下流側空燃比センサの出力を遅延させるとともに、この遅延させた値を正の上限値と負の下限値との間に制限する手段と、
空燃比フィードバック制御条件の成立時にこの遅延、制限された信号に基づいて修正値を演算する手段と、
この修正値で前記基本制御定数を修正して制御定数を演算する手段と、
この制御定数を用いて前記上流側空燃比センサの出力に基づく空燃比のフィードバック制御を行う手段と、
前記空燃比フィードバック制御条件の成立時に前記遅延、制限処理された信号よりリッチからリーンへの応答とリーンからリッチへの応答の差を演算する手段と、
この応答差に応じて前記上限値と下限値の各基本値に対する補正値を演算する手段と、
この補正値で前記上限値と下限値の各基本値を２つの基本値の間の幅を変えることなく補正して前記上限値と下限値を演算する手段と
を設けたことを特徴とするエンジンの空燃比制御装置。
【請求項３】
学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記空燃比フィードバック制御条件の成立直後の修正値の初期値として用いるようにしたことを特徴とする請求項２に記載のエンジンの空燃比制御装置。
【請求項４】
触媒の上流側と下流側の各空燃比センサと、
空燃比フィードバック制御の基本制御定数を演算する手段と、
空燃比フィードバック制御に使用する制御定数を下流側空燃比センサの出力に基づいて修正する制御である修正制御の基本制御定数を演算する手段と、
空燃比フィードバック制御条件の成立時に前記下流側空燃比センサの出力よりリッチからリーンへの応答とリーンからリッチへの応答の差を演算する手段と、
この応答差に応じて前記修正制御の基本制御定数に対する補正値を演算する手段と、
この補正値で前記修正制御の基本制御定数を補正して前記修正制御の制御定数を演算する手段と、
この修正制御の制御定数を用いて修正値を前記空燃比フィードバック制御条件の成立時に演算する手段と、
この修正値で前記基本制御定数を修正して空燃比フィードバック制御の制御定数を演算する手段と、
この空燃比フィードバック制御の制御定数を用いて前記上流側空燃比センサの出力に基づく空燃比のフィードバック制御を行う手段と
を設けたことを特徴とするエンジンの空燃比制御装置。
【請求項５】
学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記空燃比フィードバック制御条件の成立直後の修正値の初期値として用いるようにしたことを特徴とする請求項４に記載のエンジンの空燃比制御装置。
【請求項６】
触媒の上流側と下流側の各空燃比センサと、
空燃比フィードバック制御の基本制御定数を演算する手段と、
前記空燃比フィードバック制御を行う制御域の中にあって空燃比フィードバック制御を行う制御域よりも狭い所定の修正制御域に運転条件があることを条件の一つに含む前記修正制御条件の成立時かまたは非成立時かを判定する手段と、
空燃比フィードバック制御に使用する制御定数を下流側空燃比センサの出力に基づいて修正する制御である修正制御の基本制御定数を演算する手段と、
前記判定結果より修正制御条件の成立時に前記下流側空燃比センサの出力よりリッチからリーンへの応答とリーンからリッチへの応答の差を演算する手段と、
この応答差に応じて前記修正制御の基本制御定数に対する補正値を演算する手段と、
この補正値で前記修正制御の基本制御定数を補正して前記修正制御の制御定数を演算する手段と、
この修正制御の制御定数を用いて修正値を前記修正制御条件の成立時に演算する手段と、
この修正値で前記空燃比フィードバック制御の基本制御定数を修正して第１の制御定数を演算する手段と、
学習値を記憶する手段と、
前記修正制御条件の成立時に前記修正値に基づいて前記記憶手段に記憶されている学習値を更新する手段と、
前記記憶手段に記憶されている学習値を修正値として設定し、この設定された修正値で前記空燃比フィードバック制御の基本制御定数を修正して第２の制御定数を演算する手段と、
前記修正制御条件の成立時には前記第１制御定数を用いて、また前記修正制御条件の非成立時には前記第２制御定数を用いて前記上流側空燃比センサの出力に基づく空燃比のフィードバック制御を行う手段と
を設けたことを特徴とするエンジンの空燃比制御装置。
【請求項７】
学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記修正制御条件の成立直後の修正値の初期値として用いるようにしたことを特徴とする請求項６に記載のエンジンの空燃比制御装置。
【請求項８】
前記下流側空燃比センサ出力がリーンにある期間とリッチにある期間との差を前記応答差とすることを特徴とする請求項１、４から７までのいずれか一つに記載のエンジンの空燃比制御装置。
【請求項９】
前記下流側空燃比センサ出力と比較するためのスライスレベルが下限値と上限値を有し、前記下流側空燃比センサ出力が前記上限値から前記下限値までを通過するのに要する期間と前記下流側空燃比センサ出力が前記下限値から前記上限値までを通過するのに要する期間との差を前記応答差とすることを特徴とする請求項１、４から７までのいずれか一つに記載のエンジンの空燃比制御装置。
【請求項１０】
前記下流側空燃比センサ出力がリーンとなってから下限ピークに達するまでの期間と前記下流側空燃比センサ出力がリッチになってから上限ピークに達するまでの期間との差を前記応答差とすることを特徴とする請求項１、４から７までのいずれか一つに記載のエンジンの空燃比制御装置。
【請求項１１】
前記遅延、制限処理された信号がリーンにある期間とリッチにある期間との差を前記応答差とすることを特徴とする請求項２または３に記載のエンジンの空燃比制御装置。
【請求項１２】
前記遅延、制限処理された信号と比較するためのスライスレベルが下限値と上限値を有し、前記遅延、制限処理された信号が前記上限値から前記下限値までを通過するのに要する期間と前記遅延、制限処理された信号が前記下限値から前記上限値までを通過するのに要する期間との差を前記応答差とすることを特徴とする請求項２または３に記載のエンジンの空燃比制御装置。
【請求項１３】
前記遅延、制限処理された信号がリーンとなってから下限ピークに達するまでの期間と前記遅延、制限処理された信号がリッチになってから上限ピークに達するまでの期間との差を前記応答差とすることを特徴とする請求項２または３に記載のエンジンの空燃比制御装置。
【請求項１４】
前記修正制御条件は所定の運転域であることを特徴とする請求項１、６、７のいずれか一つに記載のエンジンの空燃比制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はエンジンの空燃比制御装置に関する。
【０００２】
【従来の技術】
排気浄化用触媒の上流と下流に空燃比センサを設け、上流側空燃比センサで空燃比のフィードバック制御を行なうとともに、その空燃比フィードバック制御に使用する制御定数を、下流側空燃比センサ出力に基づいて修正する、いわゆるダブルＯ２センサシステムの装置がある（特開昭６２−６０９４１号、特開昭６３−９７８５１号、特開平３−２１７６３６号公報参照）。
【０００３】
この装置では、上流側Ｏ２センサ出力とスライスレベルとの比較により、次のようにして空燃比フィードバック補正量αが作られる。
【０００４】
（１）リッチからリーンへの反転直後には、空燃比をステップ的にリッチ側に戻すため、前回算出された空燃比フィードバック補正量αより比例分ＰＬだけ大きくされ、またリーンからリッチへの反転直後には空燃比をステップ的にリーン側に戻すため、αが前回値より比例分ＰＲだけ小さくされる。
【０００５】
（２）今回も前回と同じリーンであるときは空燃比を徐々にリッチ側に戻すため、αが前回値より積分分ＩＬ（ＩＬ＜ＰＬ）だけ大きくされ、また前回もリッチ、今回もリッチであるときは、空燃比を徐々にリーン側に戻すため、αが前回値から積分分ＩＲだけ小さくされる。
【０００６】
このようにして作られるαは図１９に示すように、周期的な波形となる。
【０００７】
一方、空燃比フィードバック制御中に下流側Ｏ２センサ出力に基づいて空燃比フィードバック制御の制御定数（たとえば比例分ＰＬ）の修正制御を行うため、下流側Ｏ２センサ出力とスライスレベルとの比較により修正値ＬＰが次のように作られる。
【０００８】
リーンであるときは空燃比を全体としてリッチ側にシフトするため、修正値ＬＰが一定値ΔＬＰずつ大きくされ、またリッチであるときは空燃比をリーン側にシフトするため、修正値ＬＰが一定値ΔＬＰずつ大きくされる（図１９参照）。
【０００９】
このようにして作られる修正値ＬＰは、リッチからリーンへの反転直後に比例分ＰＬに加算され、リーンからリッチへの反転直後には比例分ＰＲから減算される。
【００１０】
【発明が解決しようとする課題】
ところで、下流側Ｏ２センサ部での空燃比の動きは、上流側Ｏ２センサ部での空燃比に対して応答遅れを有するので、下流側Ｏ２センサ出力がリッチあるいはリーンと判断している期間（時間やクランク角度）のうち一部分は、応答遅れによる誤判断が生じる。さらに実際の下流側Ｏ２センサ出力では図２０に示すようにリッチからリーンへの応答とリーンからリッチへの応答とで特性が異なるため、リッチと誤判断している期間の長さとリーンと誤判断している期間の長さが異なり、両者の期間差が比較的大きいと、下流側Ｏ２センサ出力が全体としてリッチ寄り、あるいはリーン寄りに誤判断する。その誤判断された結果で空燃比フィードバック制御の制御定数を修正すると、空燃比フィードバック制御は、不要のリッチシフトあるいはリーンシフトを行うことになり、良好な運転性や排気浄化性能を得られない場合が生じ得るのである。
【００１１】
ここで、エンジンの諸元や触媒を含む排気系の構成および燃料噴射弁やＯ２センサの特性、また制御回路の入出力器のフィルタ特性等、この制御定数の修正制御にかかわる各部の特性が明らかであるのなら、前述の不要分の空燃比シフト量を予め実験等により求めておき、実際の制御時には、これを打ち消すように補正を加えることも可能であるが、触媒や下流側Ｏ２センサはエンジンの運転時間が増えるほど劣化してその特性が変化し、また、エンジンの運転条件によって排気流量が変化しても、下流側Ｏ２センサ出力の応答が変化するので、現実には、予め実験等により求めた補正量のみで長期にわたり、あるいはエンジンの幅広い運転条件に対応して、誤判断を防止することは困難である。
【００１２】
こうした誤判断を避けるため、下流側Ｏ２センサの応答特性を実際に計測し、その計測結果に基づいて前記制御定数の修正制御の結果をさらに補正することが考えられる。その一例として、エンジンの燃料噴射量の基本信号に矩形波等の応答計測用信号を重畳することによって、このときの下流側Ｏ２センサの応答波形から応答特性を計測するようにしたものが特開平５−１８７２９６号公報等に開示されている。
【００１３】
しかしながら、このものでは、次の２つの問題がある。
【００１４】
１）応答特性の計測時には、少なくとも下流側Ｏ２センサによる制御定数の修正制御は中止する必要がある。
【００１５】
２）矩形波を入力とするとき、その中心空燃比を所定の値（理論空燃比が望ましい）に固定する必要がある。ステップ入力であれば、その始点終点の空燃比も所定の値に固定しなければならない。これらの設定が精度良く行われないと、その分だけ応答計測結果に誤差を生じる。
【００１６】
こうした２つの問題により、応答計測用信号を入力し、その応答波形をみて下流側Ｏ２センサ出力やそれに基づく制御定数の修正制御結果を変更、調整することは実際には困難である。
【００１７】
そこでこの発明は、どの程度のリッチ寄りあるいはリーン寄りの誤判断がなされたのかを知るため、空燃比フィードバック制御の制御定数の修正制御中に下流側空燃比センサ出力のリッチからリーンへの応答期間とリーンからリッチへの応答期間の差を測定し、この応答時間差に応じた補正を空燃比フィードバック制御の制御定数の修正値に加えることにより、下流側空燃比センサ出力にリッチからリーンへの応答とリーンからリッチへの応答の間に大きな応答期間差があっても、良好な運転性や排気浄化性能を得ることを目的としている。
【００１８】
【課題を解決するための手段】
第１の発明では、図２１に示すように、触媒の上流側と下流側の各空燃比センサ３１、３２と、空燃比フィードバック制御の基本制御定数（たとえば比例分ＰＬ、ＰＲ、積分分ＩＬ、ＩＲ、上流側空燃比センサと比較するスライスレベルＳＬＦ等）を演算する手段３３と、前記空燃比フィードバック制御を行う制御域の中にあって空燃比フィードバック制御を行う制御域よりも狭い所定の修正制御域に運転条件があることを条件の一つに含む前記制御定数の修正制御条件の成立時かまたは非成立時かを判定する手段３４と、この判定結果より修正制御条件の成立時に前記下流側空燃比センサ３２の出力に基づいて修正値を演算する手段３５と、この修正値で前記基本制御定数を修正して第１の制御定数を演算する手段３６と、学習値を記憶する手段３８と、前記修正制御条件の成立時に前記修正値に基づいて前記記憶手段３８に記憶されている学習値を更新する手段３９と、前記修正制御条件の成立時に前記下流側空燃比センサ３２の出力よりリッチからリーンへの応答とリーンからリッチへの応答の差（時間差やクランク角度差）を演算する手段４０と、この応答差に応じて前記学習値に対する補正値を演算する手段４１と、この補正値を記憶する手段４２と、この記憶手段４２に記憶されている補正値で前記記憶手段３８に記憶されている学習値を補正した値を修正値として設定し、この設定された修正値で前記基本制御定数を修正して第２の制御定数を演算する手段４３と、前記修正制御条件の成立時には前記第１制御定数を用いて、また前記修正制御条件の非成立時には前記第２制御定数を用いて前記上流側空燃比センサ３１の出力に基づく空燃比のフィードバック制御を行う手段４４とを設けた。
【００１９】
第２の発明では、図２２に示すように、触媒の上流側と下流側の各空燃比センサ３１、３２と、空燃比フィードバック制御の基本制御定数（たとえば比例分ＰＬ、ＰＲ、積分分ＩＬ、ＩＲ、上流側空燃比センサ出力と比較するスライスレベルＳＬＦ等）を演算する手段３３と、前記下流側空燃比センサ３２の出力を遅延させるとともに、この遅延させた値を正の上限値ＤＲと負の下限値ＤＬとの間に制限する手段５１と、空燃比フィードバック制御条件の成立時にこの遅延、制限処理された信号に基づいて修正値を演算する手段５２と、この修正値で前記基本制御定数を修正して制御定数を演算する手段５３と、この制御定数を用いて前記上流側空燃比センサ３１の出力に基づく空燃比のフィードバック制御を行う手段５４と、前記空燃比フィードバック制御条件の成立時に前記遅延、制限処理された信号よりリッチからリーンへの応答とリーンからリッチへの応答の差（時間差やクランク角度差）を演算する手段５６と、この応答差に応じて前記上限値と下限値の各基本値ＤＲ０、ＤＬ０に対する補正値ＨＤを演算する手段５７と、この補正値で前記上限値と下限値の各基本値ＤＲ０、ＤＬ０を２つの基本値ＤＲ０、ＤＬ０の間の幅を変えることなく補正して前記上限値ＤＲと下限値ＤＬを演算する手段５８とを設けた。
【００２０】
第３の発明は、第２の発明において、学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記空燃比フィードバック制御条件の成立直後の修正値の初期値として用いるようにした。
【００２１】
第４の発明は、図２３に示すように、触媒の上流側と下流側の各空燃比センサ３１、３２と、空燃比フィードバック制御の基本制御定数（たとえば比例分ＰＬ、ＰＲ、積分分ＩＬ、ＩＲ、上流側空燃比センサ出力と比較するスライスレベルＳＬＦ等）を演算する手段３３と、空燃比フィードバック制御に使用する制御定数を下流側空燃比センサ３２の出力に基づいて修正する制御である修正制御の基本制御定数（修正値の演算の際の増加側へのきざみと減少側への刻みの大きさ、下流側空燃比センサ出力と比較するスライスレベルＳＬＲ等）を演算する手段６１と、空燃比フィードバック制御条件の成立時に前記下流側空燃比センサ３２の出力よりリッチからリーンへの応答とリーンからリッチへの応答の差（時間差やクランク角度差）を演算する手段６２と、この応答差に応じて前記修正制御の基本制御定数に対する補正値を演算する手段６３と、この補正値で前記修正制御の基本制御定数を補正して前記修正制御の制御定数を演算する手段６４と、この修正制御の制御定数を用いて修正値を前記空燃比フィードバック制御条件の成立時に演算する手段６５と、この修正値で前記基本制御定数を修正して空燃比フィードバック制御の制御定数を演算する手段５３と、この空燃比フィードバック制御の制御定数を用いて前記上流側空燃比センサ３１の出力に基づく空燃比のフィードバック制御を行う手段５４とを設けた。
【００２２】
第５の発明は、第４の発明において、学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記空燃比フィードバック制御条件の成立直後の修正値の初期値として用いるようにした。
【００２３】
第６の発明は、図２４に示すように、触媒の上流側と下流側の各空燃比センサ３１、３２と、空燃比フィードバック制御の基本制御定数（たとえば比例分ＰＬ、ＰＲ、積分分ＩＬ、ＩＲ、上流側空燃比センサと比較するスライスレベルＳＬＦ等）を演算する手段３３と、前記空燃比フィードバック制御を行う制御域の中にあって空燃比フィードバック制御を行う制御域よりも狭い所定の修正制御域に運転条件があることを条件の一つに含む前記修正制御条件の成立時かまたは非成立時かを判定する手段３４と、空燃比フィードバック制御に使用する制御定数を下流側空燃比センサの出力に基づいて修正する制御である修正制御の基本制御定数（修正値の演算の際の増加側へのきざみと減少側への刻みの大きさ、下流側空燃比センサ出力と比較するスライスレベルＳＬＲ等）を演算する手段６１と、前記判定結果より修正制御条件の成立時に前記下流側空燃比センサ３２の出力よりリッチからリーンへの応答とリーンからリッチへの応答の差（時間差やクランク角度差）を演算する手段６２と、この応答差に応じて前記修正制御の基本制御定数に対する補正値を演算する手段６３と、この補正値で前記修正制御の基本制御定数を補正して前記修正制御の制御定数を演算する手段６４と、この修正制御の制御定数を用いて修正値を前記修正制御条件の成立時に演算する手段７２と、この修正値で前記空燃比フィードバック制御の基本制御定数を修正して第１の制御定数を演算する手段３６と、学習値を記憶する手段３８と、前記修正制御条件の成立時に前記修正値に基づいて前記記憶手段３８に記憶されている学習値を更新する手段３９と、前記記憶手段３８に記憶されている学習値を修正値として設定し、この設定された修正値で前記空燃比フィードバック制御の基本制御定数を修正して第２の制御定数を演算する手段７１と、前記修正制御条件の成立時には前記第１制御定数を用いて、また前記修正制御条件の非成立時には前記第２制御定数を用いて前記上流側空燃比センサ３１の出力に基づく空燃比のフィードバック制御を行う手段４４とを設けた。
【００２４】
第７の発明は、第６の発明において、学習条件の成立時に前記修正値に基づいて学習値を更新してこれを記憶しておき、この学習値を前記修正制御条件の成立直後の修正値の初期値として用いるようにした。
【００２５】
第８の発明は、第１、第４から第７までのいずれか一つの発明において、前記下流側空燃比センサ出力がリーンにある期間とリッチにある期間との差を前記応答差とする。
【００２６】
第９の発明は、第１、第４から第７までのいずれか一つの発明において、前記下流側空燃比センサ出力と比較するためのスライスレベルが下限値ＳＬＲＬと上限値ＳＬＲＲを有し、前記下流側空燃比センサ出力が前記上限値ＳＬＲＲから前記下限値ＳＬＲＬまでを通過するのに要する期間と前記下流側空燃比センサ出力が前記下限値ＳＬＲＬから前記上限値ＳＬＲＲまでを通過するのに要する期間との差を前記応答差とする。
【００２７】
第１０の発明は、第１、第４から第７までのいずれか一つの発明において、前記下流側空燃比センサ出力がリーンとなってから下限ピークに達するまでの期間と前記下流側空燃比センサ出力がリッチになってから上限ピークに達するまでの期間との差を前記応答差とする。
【００２８】
第１１の発明は、第２または第３の発明において、前記遅延、制限処理された信号がリーンにある期間とリッチにある期間との差を前記応答差とする。
【００２９】
第１２の発明は、第２または第３の発明において、前記遅延、制限処理された信号と比較するためのスライスレベルが下限値ＳＬＲＬと上限値ＳＬＲＲを有し、前記遅延、制限処理された信号が前記上限値ＳＬＲＲから前記下限値ＳＬＲＬまでを通過するのに要する期間と前記遅延、制限処理された信号が前記下限値ＳＬＲＬから前記上限値ＳＬＲＲまでを通過するのに要する期間との差を前記応答差とする。
【００３０】
第１３の発明は、第２または第３の発明において、前記遅延、制限処理された信号がリーンとなってから下限ピークに達するまでの期間と前記遅延、制限処理された信号がリッチになってから上限ピークに達するまでの期間との差を前記応答差とする。
【００３１】
第１４の発明は、第１、第６、第７のいずれか一つの発明において、前記修正制御条件が所定の運転域である。
【００３２】
【作用】
修正制御中に求めた学習値には、下流側空燃比センサの応答特性のアンバランスによる影響が乗っているので、修正制御条件の非成立時にそのまま学習値を修正値として制御定数の演算に使用したのでは、理論空燃比からずれてしまうのであるが、第１の発明では、修正制御条件の成立時に、下流側空燃比センサの応答特性のアンバランスを計測してこれに基づく補正値を求めておき、修正制御条件の非成立時になると、この補正値で学習値を補正した値を修正値として設定するので、修正制御条件を外れた運転域においては、下流側空燃比センサの応答特性のアンバランスの影響を解消して、空燃比を理論空燃比に近づけることができる。
【００３３】
第２と第４の発明では、補正値を修正制御自体に反映させているため、修正制御を行いつつ下流側空燃比センサ出力の応答特性のアンバランスによる影響をなくすことができる。
【００３４】
第３と第５の発明では、学習値を空燃比フィードバック制御条件の成立直後の修正値の初期値として使用することで、空燃比フィードバック制御条件の成立直後から空燃比フィードバック制御の制御精度が向上する。
【００３５】
第６の発明では、補正値を修正制御自体に反映させているため、修正制御を行いつつ下流側空燃比センサ出力の応答特性のアンバランスによる影響をなくすことができるほか、そのようにして得られた修正制御結果を学習値として用いるので、学習値の補正を行うことなく、修正制御条件を外れた運転域においても、下流側空燃比センサの応答特性のアンバランスによる影響をなくすことができる。
【００３６】
第７の発明では、学習値を修正制御条件の成立直後の修正値の初期値として使用することで、修正制御条件の成立直後から空燃比フィードバック制御の制御精度が向上する。
【００３７】
第９と第１２の発明では、リッチからリーンへの応答の速度とリーンからリッチへの応答の速度を計測することになり、応答特性がより明確に現れるため、補正値の精度が向上する。
【００３８】
第１０と第１３の発明では、たとえばリッチからリーンへの反転を検出した制御側が、それまでのリーン化処理（修正値の減少による）よりリッチ化処理（修正値の増大による）に転じてよりその制御が結果として現れる（つまり触媒下流位置の空燃比がリッチ化し始める）までの期間を計測するので、下流側空燃比センサ出力の応答特性が最もよく現れ、これによって補正値の精度が一段と向上する。
【００３９】
下流側空燃比センサの応答特性のアンバランスの影響を解消できるのは、修正制御条件を外れた運転域であるため、第１４の発明により、所定の運転域を小さくするほど、下流側空燃比センサの応答特性のアンバランスの影響を解消できる運転域が拡大する。
【００４０】
【発明の実施の形態】
図１において、１はエンジン本体で、その吸気通路８には吸気絞り弁５の下流に位置して燃料噴射弁７が設けられ、コントロールユニット（図ではＣ／Ｕで略記）２からの噴射信号により運転条件に応じて所定の空燃比となるように、吸気中に燃料を噴射供給する。
【００４１】
コントロールユニット２にはクランク角センサ４からのＲｅｆ信号（基準位置信号）とＰｏｓ信号（１°信号）、エアフローメータ６からの吸入空気量信号、水温センサ１１からのエンジン冷却水温信号等が入力され、これらに基づいて基本噴射パルス幅Ｔｐを算出するとともに、排気通路９の三元触媒１０の上流側に設置した酸素センサ３からの空燃比（酸素濃度）信号に基づいて空燃比のフィードバック制御を行い、さらにその空燃比フィードバック制御に使用する比例分を、三元触媒１０の下流側に設置した酸素センサ１３からの空燃比（酸素濃度）信号により修正する。
【００４２】
ここで、空燃比フィードバック制御は、排気空燃比が理論空燃比を中心として周期的に振らすようにした制御であり、このとき排気通路９に設けた三元触媒１０が最大の転換効率をもって、排気中のＮＯｘの還元とＨＣ、ＣＯの酸化を行う。
【００４３】
図２のフローチャートは上流側Ｏ２センサ出力ＯＳＲ１に基づいて空燃比フィードバック補正係数αを計算するためのルーチンで、回転同期（Ｒｅｆ信号同期）、あるいは所定時間ごと（たとえば４ｍｓごと）で実行する。
【００４４】
Ｓ１０では、空燃比のフィードバック制御条件が成立しているかどうかをみる。▲１▼冷却水温Ｔｗが所定値以下のとき、▲２▼上流側Ｏ２センサが不活性のとき、▲３▼高負荷時等はいずれも空燃比フィードバック制御条件の成立しない場合であり、このときはＳ２５に進んで、αに１を入れて（αをクランプ）、図２のフローを終了する。
【００４５】
上記の▲１▼〜▲３▼等のいずれでもないとき（空燃比フィードバック制御条件の成立時）はＳ１１に進んで上流側Ｏ２センサ出力ＯＳＲ１をＡ／Ｄ変換して取り込み、Ｓ１２においてＯＳＲ１とスライスレベルＳＬＦを比較する。ＯＳＲ１＞ＳＬＦであればリッチ側にあると判断し、Ｓ１３でフラグＡＦＦ１に“１”を入れ、ＯＳＲ１≦ＳＬＦであるときはリーン側にあると判断し、Ｓ１４においてフラグＡＦＦ１に“０”を入れる。ＡＦＦ１＝０はリーン側にあることを、ＡＦＦ１＝１はリッチ側にあることを表す。
【００４６】
Ｓ１５ではフラグＡＦＦ０の値を読み込む。フラグＡＦＦ０は前回に空燃比がリッチあるいはリーンのいずれの側にあったかを示すフラグであり、ＡＦＦ０＝０は前回リーン側にあったことを、ＡＦＦ０＝１は前回リッチ側にあったことを表す。
【００４７】
Ｓ１６では２つのフラグＡＦＦ０、ＡＦＦ１を比較し、両者の値が等しくないときは、ＯＳＲ１がリッチからリーンへの反転直後あるいはその反対にリーンからリッチへの反転直後にあると判断し、Ｓ１７で比例分ＰＬ、ＰＲを演算する。この比例分ＰＬ、ＰＲの演算は図３のフローチャートで説明する。
【００４８】
図３のＳ３０では比例分の基本値ＰＬ０、ＰＲ０を読み込む。ＰＬ０、ＰＲ０は、上流側Ｏ２センサ３や触媒１０に劣化のない状態でマッチングしたときの基本値で、図４、図５に示したように回転数Ｎｅとエンジン負荷相当の基本噴射パルス幅Ｔｐとをパラメータとするマップで割り付けており、このマップを検索して求める。
【００４９】
Ｓ３１では比例分修正制御条件（図７のＳ４０でまとめて説明する）かどうかみて、比例分修正制御条件の成立時は、Ｓ３２、Ｓ３３で修正値ＬＰを読み込み、基本値ＰＬ０に修正値ＬＰを加算した値を比例分ＰＬ、また基本値ＰＲ０から修正値ＬＰを差し引いた値を比例分ＰＲとおくことによって比例分ＰＬ、ＰＲを演算し、そのあと図２のＳ１８に戻る。
【００５０】
これに対して比例分修正制御条件の非成立時には、Ｓ３１からＳ３４、Ｓ３５に進んで、学習値ＬＰＡを読み込み、これをＬＰとおく。なお、Ｓ３４、Ｓ３５の補正値ＨＬＰについては後述する。
【００５１】
図２に戻りＳ１８ではフラグＡＦＦ１の値をみる。ＡＦＦ１＝０であればリッチからリーンへの反転直後にあると判断し、Ｓ１９で空燃比フィードバック補正係数α（初期値は０）を比例分ＰＬだけ大きくし、またＡＦＦ１＝１であるときはリーンからリッチへの反転直後にあると判断し、Ｓ２０においてαを比例分ＰＲだけ小さくする。
【００５２】
一方、２つのフラグＡＦＦ０、ＡＦＦ１の値が等しいときは、反転直後でないと判断し、Ｓ２１に進んで、フラグＡＦＦ１の値をみる。ＡＦＦ１＝０であれば前回、今回ともリーンであると判断し、Ｓ２２でαを積分分ＩＬだけ大きくし、またＡＦＦ１＝１であるときは前回、今回ともリッチであると判断し、Ｓ２３においてαを積分分ＩＲだけ小さくする。
【００５３】
Ｓ２４ではＡＦＦ１の値をＡＦＦ０に移して図２のフローを終了する。
【００５４】
図７のフローチャートは、上記の修正値ＬＰを演算するためのもので、図２、図３とは独立にＲｅｆ信号に同期して実行する。
【００５５】
Ｓ４０では比例分修正制御条件かどうかをみる。▲４▼下流側Ｏ２センサが非活性のとき、▲５▼運転条件が所定の比例分修正制御域にないとき、▲６▼運転条件の変化が所定の範囲より大きいとき等に比例分修正制御条件が非成立となる。▲５▼の比例分修正制御域Ａは、図６に示したように、学習値ＬＰＡの算出に関しノイズ（上流側Ｏ２センサや触媒の劣化以外の要因による理論空燃比からのずれ）の少ない領域を設定しておけばよい。
【００５６】
比例分修正制御条件の成立時は、Ｓ４１以降に進むが、Ｓ４１〜Ｓ５４は図２のＳ１１〜Ｓ１６、Ｓ１８〜Ｓ２４とほぼ同様である。
【００５７】
Ｓ４１では下流側Ｏ２センサ出力ＯＳＲ２を読み込み、このＯＳＲ２をＳ４２においてスライスレベルＳＬＲと比較する。ＯＳＲ２＞ＳＬＲであれば、Ｓ４３でフラグＡＦＲ１に“１”を、またＯＳＲ２≦ＳＬＲであるときは、Ｓ４４においてフラグＡＦＲ１に“０”を入れる。ＡＦＲ１＝０はリーン側に、またＡＦＲ１＝１はリッチ側にあることを表している。
【００５８】
Ｓ４５ではフラグＡＦＲ０の値を読み込む。ＡＦＦ０＝０は前回にリーン側にあったことを、またＡＦＦ０＝１は前回リッチ側にあったことを表す。
【００５９】
Ｓ４６では２つのフラグＡＦＲ０、ＡＦＲ１を比較し、両者の値が等しいときは、反転直後でないと判断し、Ｓ５１に進んで、フラグＡＦＲ１の値をみる。ＡＦＲ１＝０であれば前回、今回ともリーンであると判断し、Ｓ５２で修正値ＬＰ（初期値は０）を所定値ＤＬＰだけ増加させ、またＡＦＦ１＝１であるときは前回、今回ともリッチであると判断し、Ｓ５３においてＬＰを所定値ＤＬＰだけ減少させる。
【００６０】
これに対して、２つのフラグＡＦＲ０、ＡＦＲ１の値が等しくないときは、ＯＳＲ１が反転した直後にあると判断し、Ｓ４７に進んでフラグＡＦＲ１の値をみる。ＡＦＲ１＝０であればリッチからリーンへの反転直後にあると判断し、Ｓ４８、Ｓ４９に進み、またまたＡＦＲ１＝１であるときはリーンからリッチへの反転直後にあると判断し、Ｓ５０に進む。
【００６１】
ここで、図２のＳ１９、Ｓ２０に相当する部分が図７のほうにないため、修正値ＬＰは、αと相違して図１０に示したように、漸増と漸減とを繰り返す波形となる。
【００６２】
その一方で、図２にないＳ４８、Ｓ４９、Ｓ５０が図７に追加されている。
【００６３】
図７においてＳ５０へと流れるのは図１０においてｔ２、ｔ４のタイミング（リーンからリッチへの反転直後）であり、このタイミングでのＬＰをＬＰＲに移すと、ＬＰＲにはＬＰの最新の極大値が入る。
【００６４】
また、Ｓ４８、Ｓ４９へと流れるのは図１０においてｔ１、ｔ３のタイミング（リッチからリーンへの反転直後）であり、このタイミングでのＬＰ（つまりＬＰの極小値）とＬＰＲの平均値ＬＰＭを求め、この平均値ＬＰＭから学習値ＬＰＡを、
ＬＰＡ←ＬＰＭ×ｎ＋ＬＰＡ×（１−ｎ）                    …（１）
ただし、ｎ：加重平均係数（ｎ＜１）
の式により計算する。学習値ＬＰＡはバックアップＲＡＭに記憶させる。
【００６５】
Ｓ５４では次回制御のためＡＦＲ１の値をＡＦＲ０に移したあとで、比例分ＰＬ、ＰＲの演算を終了する。
【００６６】
図１１のフローチャートは、燃料噴射パルス幅Ｔｉを演算するためのもので、たとえば４ｍｓ周期で実行する。
【００６７】
Ｓ１では吸入空気量Ｑａと回転数Ｎｅを読み込み、これらから基本噴射パルス幅ＴｐをＴｐ＝Ｋ・Ｑａ／Ｎｅ（ただしＫは定数）の式により求め、このＴｐをＳ３において各種補正係数の和Ｃｏ、空燃比フィードバック補正係数αおよび無効パルス幅Ｔｓで補正することにより燃料噴射パルス幅Ｔｉを算出し、これをＳ４においてレジスタにセットすることで、クランク角センサの出力にしたがって所定の噴射タイミングでの噴射に備える。
【００６８】
このようにして、上流側Ｏ２センサや触媒に劣化のない状態でマッチングして得た基本値ＰＬ０、ＰＲ０と上流側Ｏ２センサや触媒の劣化状況を考慮するための修正値ＬＰとから比例分ＰＬ、ＰＲを算出（図３のＳ３３）する場合に、修正値ＬＰとして、比例分修正制御中であれば、触媒下流位置の空燃比に応じて算出した値をそのまま使用し（図３のＳ３２、図７）、比例分修正制御中でなくなると、学習値ＬＰＡを使用している（図３のＳ３５）。
【００６９】
なお、運転条件によって適正な比例分の値が異なることについては、基本値ＰＬ０、ＰＲ０を運転条件により領域分けしたマップ（ＲＯＭ）に記憶しておく（すなわち、各領域毎に基本値をマッチングしておく）ことで対処し、修正値ＬＰ、学習値ＬＰＡを領域毎に算出することはないので、運転中に更新される値が、ＬＰとＬＰＡだけとなり、ＲＡＭに確保するメモリが２つで済んでいる。
【００７０】
さて、比例分修正制御中に算出した学習値ＬＰＡには、下流側Ｏ２センサの応答特性のアンバランスによる影響が乗っているので、そのままＬＰＡを修正値ＬＰとして比例分の算出に使用したのでは、理論空燃比からずれてしまう。このずれを防ぐため本発明では学習値ＬＰＡに対する補正値ＨＬＰを新たに導入する。具体的には、図３のＳ３４、Ｓ３５を変更するとともに、図８のフローを新たに追加している。
【００７１】
図８のフローチャートは、補正値ＨＬＰを演算するためのもので、図２、図７とは独立に、一定時間Δｔ毎に実行する。なお、図７と同一の部分には同一の番号を付しており、図７と異なる部分を主に説明する。
【００７２】
補正値ＨＬＰの演算は比例分修正制御中であることを条件として行う（Ｓ６０）。比例分修正制御中を条件としてＨＬＰの演算を行うのは、比例分修正制御中は下流側Ｏ２センサの応答特性のアンバランスの影響が補正されずにそのまま理論空燃比からのずれとして生じているからである。
【００７３】
比例分修正制御中であれば、リッチからリーンへの反転時にＳ４６、Ｓ４７からＳ６２へと進んでカウンタＴ１を０にリセットし、リーンにあるあいだＳ４６、Ｓ５１からＳ６８へと進んでカウンタＴ１をΔｔずつ加算することで、カウンタＴ１により空燃比がリーンにある時間を計測する（図１０参照）。
【００７４】
同様にして、リーンからリッチへの反転時にＳ４６、Ｓ４７からＳ６３へと進んでカウンタＴ２を０にリセットし、リッチにあるあいだＳ４６、Ｓ５１からＳ６９へと進んでカウンタＴ２をΔｔずつ加算することで、Ｔ２により空燃比がリッチにある時間を計測する（図１０参照）。
【００７５】
反転時には、Ｓ４６からＳ６１へと進んでＴ１とＴ２の差ΔＴを計算し、その差ΔＴをＳ６４、Ｓ６５において積算値ＳＵＭＴ（初期値は０）に加算するとともに、カウンタＣ（初期値は０）をカウントアップする。これらのＳＵＭＴ、ＣからＳ６６、Ｓ６７では、
ＴＵＢ＝ＳＵＭＴ／Ｃ                                      …（２）
の式により、比例分修正制御中での応答差の平均値ＴＵＢを計算し、このＴＵＢから図９のテーブルを検索して補正値ＨＬＰを求め、これをバックアップＲＡＭに記憶する。
【００７６】
下流側Ｏ２センサの応答差とそれによる空燃比シフト量（理論空燃比からのずれのこと）との関係、およびその空燃比シフトを解消するための補正値ＨＬＰは、実験等によって予め求めておくことができるので、応答差に対応させて補正値ＨＬＰを設定するテーブルを予め作っておくことができ、現在の応答差（の平均値）ＴＵＢに対応する補正値ＨＬＰをこのテーブルから検索するのである。
【００７７】
なお、応答差が０のとき補正値ＨＬＰが０になるとは限らない。空燃比フィードバック制御の制御定数（たとえばＰＬ０、ＰＲ０）のマッチングを行ったときの応答差と等しい応答差のときは補正値ＨＬＰが０となるものの、この応答差とのずれが生じたときにこのずれによる空燃比シフトを解消するため、０でない値の補正値ＨＬＰが図８のフローにより算出されるわけである。
【００７８】
なお、図８のフローでは、細かい点は省略した。実際には、補正値ＨＬＰの算出条件が前回非成立で今回成立の場合、Ｔ１、Ｔ２をいずれもリセットする処理や、ＨＬＰの算出条件成立からの経過時間が短く、Ｔ１、Ｔ２のどちらかが０（つまり計測が行われていない）場合にＳ６１、Ｓ６４〜Ｓ６７の処理を行わないようにする処理等が必要になる。
【００７９】
このようにして得た補正値ＨＬＰは、図３において比例分修正制御条件の非成立時になると、Ｓ３４、Ｓ３５で学習値ＬＰＡとともに読み込み、学習値ＬＰＡに補正値ＨＬＰを加算した値を修正値ＬＰとして設定する。
【００８０】
このようにして、第１実施形態では、下流側Ｏ２センサの応答特性のアンバランスの影響が補正されずにそのまま出ている比例分修正制御中に、下流側Ｏ２センサの応答特性のアンバランスを計測してこれに基づく補正値ＨＬＰを求めておき、比例分修正制御中以外の運転域になると、この補正値ＨＬＰで学習値ＬＰＡを補正した値を修正値ＬＰとして設定することで、当該運転域においては、下流側Ｏ２センサの応答特性のアンバランスの影響を解消して、空燃比を理論空燃比に近づけるのである。
【００８１】
なお、第１実施形態では、図６に示した比例分修正制御域Ａの全域で補正値ＨＬＰの算出を行っているが、制御域Ａ内のさらに狭い領域でだけ補正値ＨＬＰの算出を行わせるようにしてもかまわない。
【００８２】
さて、第１実施形態は、図１２（Ａ）に示したように、リーンにある時間Ｔ１とリッチにある時間Ｔ２を計測し、これらの時間差ΔＴを応答差とするものであるが、本発明はこれに限られるものでない。なお、ＯＳＲ２の波形は単に傾向を表すだけのもので、実際の波形とは異なる。
【００８３】
図１２（Ｂ）のように、ＯＳＲ２と比較するためのスライスレベルに下限値ＳＬＲＬと上限値ＳＬＲＲを設け、ＯＳＲ２がＳＬＲＲからＳＬＲＬまでを通過するに要する時間Ｔ１と、この逆にＯＳＲ２がＳＬＲＬからＳＬＲＲまでを通過するに要する時間Ｔ２とを計測し、両者の時間差を応答差とするもの（第２実施形態）、また図１２（Ｃ）のように、リーンとなってからＯＳＲ２が下限ピークに達するまでの時間Ｔ１と、リッチになってからＯＳＲ２が上限ピークに達するまでの時間Ｔ２とを計測し、両差の時間差を応答差とするもの（第３実施形態）であってもかまわない。
【００８４】
ここで、図１２（Ｂ）に示した方法は、リッチからリーンへの応答の速度とリーンからリッチへの応答の速度を計測することになり、図１２（Ａ）の方法より応答特性が明確に現れるというメリットを有するのに対し、２つのスライスレベルＳＬＲＬ、ＳＬＲＲとＯＳＲ２との比較という処理が新たに加わるので、図１２（Ａ）の方法よりも処理は少しだけ複雑になる。図１２（Ｃ）の方法は、たとえばリッチからリーンへの反転を検出した制御側が、それまでのリーン化処理（ＬＰ減少による）よりリッチ化処理（ＬＰ増大による）に転じてよりその制御が結果として現れる（つまり触媒下流位置の空燃比がリッチ化し始める）までの時間を計測するもので、下流側Ｏ２センサの応答特性が３つの中では最もよく現れる計測方法であるが、ＯＳＲ２のピーク位置を検出する処理が必要であり、３つの方法の中では最も複雑な処理になる。このように、異なる方法で応答特性を計測すれば異なる応答差が得られるので、どの方法を用いるかによってＨＬＰテーブルも全く異なるものになる。
【００８５】
図１３、図１５、図１６の各フローチャートは第４実施形態で、図１３は図３に、図１５は図７のうち修正値ＬＰを演算する部分に、また図１６は図７のうち学習値ＬＰＡを演算する部分および図８に対応する。
【００８６】
第４実施形態の方法は、図１８に示したように、基本的には図１２（Ｃ）と同じで、反転時よりＯＳＲ２がピークに達するまでの時間を計測するものである。
【００８７】
ただし、時間計測を開始するのは、ＯＳＲ２の反転するタイミングでなく、ディレイカウンタＣＡＦＲの符号（正と負）の反転するタイミングである点が図１２（Ｃ）と異なっている。なお、ディレイカウンタＣＡＦＲは、後述するようにＯＳＲ２を時間的に遅らせた信号（波形そのものはＯＳＲ２と異なる）である。
以下、第１実施形態との違いを主に説明する。
【００８８】
まず、図１３のＳ７０では比例分の基本値ＰＬ０、ＰＲ０と学習値ＬＰＡを読み込む。
【００８９】
ここで、第１実施形態ではＰＬ０、ＰＲ０が運転条件に応じたマップ値、学習値ＬＰＡが全運転域で１つの値であったが、第４実施形態のＰＬ０、ＰＲ０は全運転域で１つの値、学習値ＬＰＡは図１４に示したように運転条件に応じたマップ値（各学習領域毎の学習値を持つ）である。
【００９０】
また、図１３には図３のＳ３１がないことから、空燃比フィードバック制御が行われる全運転域において基本的にはＳ７０からＳ３２、Ｓ３３と流れて、比例分ＰＬ、ＰＲの修正制御を実行する。空燃比フィードバック制御が行われる全運転域において比例分ＰＬ、ＰＲの修正制御を実行するのであれば、運転条件の差異に基づく理論空燃比のずれも上流側Ｏ２センサや触媒の劣化状況に基づく理論空燃比のずれも、ともに修正値ＬＰにより修正されて適正な比例分が得られる（空燃比が理論空燃比に収束する）ので、Ｓ７０で読み込む比例分の基本値ＰＬ０、ＰＲ０は運転条件によらない定数でよいわけである。もちろん、第１実施形態と同じに、ＰＬ０、ＰＲ０をマップ値とおいてもかまわない。
【００９１】
さらに、図１３ではＳ７１、Ｓ７２を追加しており、空燃比フィードバック制御条件の成立直後の１回目（あるいは運転条件が図１４において１つの学習領域からこれと異なる他の学習領域に移行した直後の１回目）に、学習値ＬＰＡを修正値ＬＰに移している。ここでの学習値ＬＰＡの使い方は、第１実施形態と異なり、学習値ＬＰＡを修正値ＬＰの初期値として使用することで、空燃比フィードバック制御条件の成立直後あるいは他の学習領域を移行した直後の空燃比フィードバック制御の制御精度向上に寄与するものである。
【００９２】
図１５のフローチャートに移ると、これは図６と相違して所定時間Δｔ毎に実行する。
【００９３】
Ｓ４２、Ｓ８３〜Ｓ８８はＯＳＲ２の信号を遅延させる処理を行う部分で、ＯＳＲ２＞ＳＬＲよりリッチにあるときＳ８３でディレイカウンタＣＡＦＲを所定時間Δｔずつ増加し、Ｓ８４、Ｓ８５においてＣＡＦＲが上限値（正の値）ＤＲを超えるときはＤＲに制限する。同様にして、ＯＳＲ２≦ＳＬＲよりリーンのときはＳ８６でディレイカウンタＣＡＦＲを所定時間Δｔずつ減少させ、Ｓ８７、Ｓ８８においてＣＡＦＲが下限値（負の値）ＤＬより小さくなるときはＤＬに制限する。この結果、ディレイカウンタＣＡＦＲは、図１８に示したように、ＯＳＲ２よりも遅れた信号（波形そのものはＯＳＲ２と異なる）として得られる。
【００９４】
このようにして得たＣＡＦＲを、ＯＳＲ２の代わりに用いるのであり、Ｓ８９ではＣＡＦＲと０とを比較し、ＣＡＦＲが０より小さいときは、Ｓ５２で修正値ＬＰをＤＬＰずつ増加し、またＣＡＦＲが０以上のときはＳ５３においてＬＰをＤＬＰずつ減少させることによって、ＬＰを演算する。なお、飛ばしたＳ８１、Ｓ８２は後述する。
【００９５】
図１６のフローチャートでは、Ｓ９０、Ｓ９１、Ｓ９２、Ｓ９３、Ｓ４８、Ｓ４９、Ｓ５０（残りは後述）が学習値ＬＰＡの演算に関係する部分である（図７と同一部分には同一の番号を付している）。
【００９６】
Ｓ９０で空燃比フィードバック制御条件かどうかみて、空燃比フィードバック制御条件の成立時にはＳ９１に進み、学習条件が成立するかどうかみる。
【００９７】
学習条件の非成立時（運転条件の変化が所定の範囲より大きいとき等）には、学習値ＬＰＡを算出することなく、図１６のフローを終了し、学習条件の成立時に最終的にＳ４９に進んで、学習値ＬＰＡの算出を行っている。第１実施形態の比例分修正制御では、その比例分修正制御中に学習値ＬＰＡを算出することが重要であるのに対し、第４実施形態では、比例分修正制御を行うこと自体が重要であり、学習値ＬＰＡの算出は２次的なものであるため、比例分修正制御の中に学習値の算出精度を確保するための条件（具体的には運転条件変化が所定の範囲より大きいか否か等）を入れていない。つまり、可能な限り比例分修正制御を行わせ、その中で学習条件が成立したら、学習値ＬＰＡの算出を行うのである。
【００９８】
なお、図１６のＳ４９における学習値ＬＰＡは、現在の運転条件が属する学習領域に対応する学習値をＬＰＡマップから検索し、その検索した値を更新して得た値を最新の学習値としてＬＰＡマップの同じ学習領域に書き込むことなる。
【００９９】
このようにして、比例分修正制御を行う場合においても、修正値ＬＰ（および学習値ＬＰＡ）に下流側Ｏ２  センサの応答特性のアンバランスによる影響が乗ってしまうため、第４実施形態では、ディレイカウンタの上限値、下限値に対する補正値ＨＤを導入し、この補正値ＨＤによって、下流側Ｏ２  センサ出力の応答特性のアンバランスの影響がなくなるようにディレイカウンタ上限値とディレイカウンタ下限値の比率を補正値ＨＤにより変化させる。詳細には、図１６において、学習値ＬＰＡに関係する部分以外の部分と、図１５のＳ８１、Ｓ８２を新たに追加している。ただし、図１６において図８と同じ部分には同じ番号を付している。
【０１００】
図１６において、Ｓ９１で学習条件の非成立時には、補正値ＨＤを算出しない。
【０１０１】
学習条件の成立時には、リッチからリーンへの反転時にＳ９２、Ｓ９３からＳ６２へと進んでカウンタＴ１を０にリセットし、リーンにあるあいだかつＯＳＲ２が減少中に限ってＳ９２、Ｓ９５、Ｓ９６からＳ６８へと進んでカウンタＴ１をΔｔずつ加算する。同様にして、リーンからリッチへの反転時にＳ９２、Ｓ９３からＳ６３へと進んでカウンタＴ２を０にリセットし、リッチにあるあいだかつＯＳＲ２が増大中に限ってＳ９２、Ｓ９５、Ｓ９７からＳ６９へと進んでカウンタＴ２をΔｔずつ加算する。
【０１０２】
反転時には、Ｓ９２からＳ６１へと進んでＴ１とＴ２の差ΔＴを計算し、その差ΔＴをＳ６４、Ｓ６５において積算値ＳＵＭＴに加算するとともに、カウンタＣをカウントアップする。これら２つの値からＳ６６では、上記の（２）式により、学習条件成立時の応答差の平均値ＴＵＢを計算し、このＴＵＢからＳ９４において図１７のテーブルを検索して補正値ＨＤを求め、これをバックアップＲＡＭに記憶する。
【０１０３】
このようにして記憶させた補正値ＨＤを、図１５のＳ８１、Ｓ８２において読み込み、この補正値ＨＤをディレイカウンタ上限値の基本値ＤＲ０に加算した値をディレイカウンタ上限値ＤＲとして、またディレイカウンタ下限値の基本値ＤＬ０にＨＤを加算した値をディレイカウンタ下限値ＤＬとして求める。ＤＲ０とＤＬ０の絶対値は同じ大きさの値であるため、ＤＲ０とＤＬ０に加える補正値ＨＤの大きさを変えるとＤＲとＤＬの大きさ（絶対値）の比率が変化するわけである。
【０１０４】
このようにして、第４実施形態では、補正値ＨＤを比例分修正制御の中で用いるディレイカウンタ下限値ＤＬ、上限値ＤＲに反映（つまり補正値ＨＤを比例分修正制御自体に反映）させているため、比例分修正制御を行いつつ下流側Ｏ２センサの応答特性のアンバランスによる影響を補正値ＨＤによってなくすことができる。
【０１０５】
このことは、補正値ＨＤを比例分修正制御の他の制御定数（ＬＰ算出の際の増加側へのきざみと減少側への刻みの大きさであるＤＬＰ、スライスレベルＳＬＲ等）に反映させるようにする場合も同様である。なお、ＤＬ、ＤＲも比例分修正制御の制御定数である。
【０１０６】
第１実施形態では、比例分修正制御を行わないとき（所定運転域Ａ以外のとき）に限り下流側Ｏ２センサの応答特性のアンバランスによる影響を補正値ＨＬＰにより無くすことができることを前述したが、このことは、補正値ＨＬＰを空燃比フィードバック制御の他の制御定数（積分分ＩＬ、ＩＲ、スライスレベルＳＬＦ等）に反映させるようにする場合も同様である。
【０１０７】
また、空燃比フィードバック制御の制御定数の修正制御を行う所定領域を第１実施形態のように設定し、第２実施形態のように補正値ＨＤを制御定数の修正制御自体に反映させ、所定領域での修正制御中に得られた学習値をそのまま（補正なし）、修正制御を行わない領域での空燃比フィードバック制御に反映させるようにすることもできる。
【０１０８】
【発明の効果】
修正制御中に求めた学習値には、下流側空燃比センサの応答特性のアンバランスによる影響が乗っているので、修正制御条件の非成立時にそのまま学習値を修正値として制御定数の演算に使用したのでは、理論空燃比からずれてしまうのであるが、第１の発明では、修正制御条件の成立時に、下流側空燃比センサの応答特性のアンバランスを計測してこれに基づく補正値を求めておき、修正制御条件の非成立時になると、この補正値で学習値を補正した値を修正値として設定するので、修正制御条件を外れた運転域においては、下流側空燃比センサの応答特性のアンバランスの影響を解消して、空燃比を理論空燃比に近づけることができる。
【０１０９】
第２と第４の発明では、補正値を修正制御自体に反映させているため、修正制御を行いつつ下流側空燃比センサ出力の応答特性のアンバランスによる影響をなくすことができる。
【０１１０】
第３と第５の発明では、学習値を空燃比フィードバック制御条件の成立直後の修正値の初期値として使用することで、空燃比フィードバック制御条件の成立直後から空燃比フィードバック制御の制御精度が向上する。
【０１１１】
第６の発明では、修正制御を行いつつ下流側空燃比センサ出力の応答特性のアンバランスによる影響をなくすことができるほか、学習値の補正を行うことなく、修正制御条件を外れた運転域においても、下流側空燃比センサの応答特性のアンバランスによる影響をなくすことができる。
【０１１２】
第７の発明では、学習値を修正制御条件の成立直後の修正値の初期値として使用することで、修正制御条件の成立直後から空燃比フィードバック制御の制御精度が向上する。
【０１１３】
第９と第１２の発明では、リッチからリーンへの応答の速度とリーンからリッチへの応答の速度を計測することになり、応答特性がより明確に現れるため、補正値の精度が向上する。
【０１１４】
第１０と第１３の発明では、たとえばリッチからリーンへの反転を検出した制御側が、それまでのリーン化処理（修正値の減少による）よりリッチ化処理（修正値の増大による）に転じてよりその制御が結果として現れる（つまり触媒下流位置の空燃比がリッチ化し始める）までの期間を計測するので、下流側空燃比センサ出力の応答特性が最もよく現れ、これによって補正値の精度が一段と向上する。
【０１１５】
下流側空燃比センサの応答特性のアンバランスの影響を解消できるのは、修正制御条件を外れた運転域であるため、第１４の発明により、所定の運転域を小さくするほど、下流側空燃比センサの応答特性のアンバランスの影響を解消できる運転域が拡大する。
【図面の簡単な説明】
【図１】第１実施形態の制御システム図である。
【図２】空燃比フィードバック補正係数αの演算を説明するためのフローチャートである。
【図３】比例分ＰＬ、ＰＲの演算を説明するためのフローチャートである。
【図４】比例分の基本値ＰＬ０のマップを表す図である。
【図５】比例分の基本値ＰＲ０のマップを表す図である。
【図６】所定運転域Ａの領域図である。
【図７】修正値ＬＰの演算を演算するためのフローチャートである。
【図８】補正値ＨＬＰの演算を説明するためのフローチャートである。
【図９】補正値ＨＬＰのテーブルを表す図である。
【図１０】第１実施形態の作用を説明するための波形図である。
【図１１】燃料噴射パルス幅Ｔｉの演算を説明するための波形図である。
【図１２】３つの実施形態による応答差を求める方法の違いを説明するための波形図である。
【図１３】第４実施形態の比例分ＰＬ、ＰＲの演算を説明するためのフローチャートである。
【図１４】学習値ＬＰＡのマップを表す図である。
【図１５】第４実施形態の修正値ＬＰの演算を説明するためのフローチャートである。
【図１６】第４実施形態の補正値ＨＤの演算を説明するためのフローチャートである。
【図１７】補正値ＨＤのテーブルを表す図である。
【図１８】第４実施形態の作用を説明するための波形図である。
【図１９】従来のＯ２センサ出力ＯＳＲ１、ＯＳＲ２、空燃比フィードバック補正係数α、修正値ＰＬ、ＰＲの各波形図である。
【図２０】下流側Ｏ２センサ出力の応答波形図である。
【図２１】第１の発明のクレーム対応図である。
【第２２】第２の発明のクレーム対応図である。
【図２３】第４の発明のクレーム対応図である。
【第２４】第６の発明のクレーム対応図である。
【符号の説明】
２  コントロールユニット
３  上流側Ｏ２センサ（上流側空燃比センサ）
４  クランク角センサ
６  エアフローメータ
７  燃料噴射弁
９  排気通路
１０  三元触媒
１３  下流側Ｏ２センサ（下流側空燃比センサ）
【図１】
0003550821.tif 000002
【図２】
0003550821.tif 000003
【図３】
0003550821.tif 000004
【図４】
0003550821.tif 000005
【図５】
0003550821.tif 000006
【図６】
0003550821.tif 000007
【図７】
0003550821.tif 000008
【図８】
0003550821.tif 000009
【図９】
0003550821.tif 000010
【図１０】
0003550821.tif 000011
【図１１】
0003550821.tif 000012
【図１２】
0003550821.tif 000013
【図１３】
0003550821.tif 000014
【図１４】
0003550821.tif 000015
【図１５】
0003550821.tif 000016
【図１６】
0003550821.tif 000017
【図１７】
0003550821.tif 000018
【図１８】
0003550821.tif 000019
【図１９】
0003550821.tif 000020
【図２０】
0003550821.tif 000021
【図２１】
0003550821.tif 000022
【図２２】
0003550821.tif 000023
【図２３】
0003550821.tif 000024
【図２４】
0003550821.tif 000025