(57)【特許請求の範囲】
【請求項１】
内燃機関の排気系に設けられた排気ガスの空燃比を検出する空燃比検出手段と、比例項制御および積分項制御により空燃比フィードバック係数を算出する空燃比フィードバック係数算出手段と、前記積分項を実行すべき時間の長さを、前記内燃機関の運転状態に応じて設定する時間設定手段と、前記時間設定手段により設定された時間に基づいて前記積分項を算出する積分項算出手段と、前記空燃比フィードバック係数をシフトさせる比例項を設定する比例項設定手段と、を備える内燃機関の空燃比制御装置において、
前記積分項を実行する前の空燃比フィードバック係数と、該積分項を実行し、前記比例項設定手段が設定した比例項だけ空燃比フィードバック係数をシフトさせた後の空燃比フィードバック係数との偏差を検出する偏差検出手段と、
前記検出した偏差に応じて前記積分項を実行すべき時間の長さを補正する積分時間補正手段とを備えることを特徴とする内燃機関の空燃比制御装置。
【請求項２】
内燃機関の排気系に設けられた排気ガスの空燃比を検出する空燃比検出手段と、比例項制御および積分項制御により空燃比フィードバック係数を算出する空燃比フィードバック係数算出手段と、前記積分項を実行すべき時間の長さを、前記内燃機関の運転状態に応じて設定する時間設定手段と、前記時間設定手段により設定された時間に基づいて前記積分項を算出する積分項算出手段と、前記空燃比フィードバック係数をシフトさせる比例項を設定する比例項設定手段と、を備える内燃機関の空燃比制御装置において、
前記積分項を実行する前の空燃比フィードバック係数と、該積分項を実行し、前記比例項設定手段が設定した比例項だけ空燃比フィードバック係数をシフトさせた後の空燃比フィードバック係数との偏差を検出する偏差検出手段と、
前記検出した偏差に応じて前記積分項を実行すべき時間の長さを補正する積分時間補正手段と、
前記偏差に応じて前記空燃比検出手段の反応遅れを学習する手段と、
前記学習手段の学習値が上限値に達するとき、前記空燃比検出手段が劣化したと判定する劣化判定手段と、
を備えることを特徴とする内燃機関の空燃比制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、内燃エンジンの排気系に設けられた空燃比センサの出力に基づいて、エンジンに供給する混合気の空燃比を制御する空燃比フィードバック制御装置に関する。
【０００２】
【従来の技術】
エンジンの空燃比制御においては、排気ガス浄化触媒の上流側に設けられたＯ２センサなどの空燃比センサの出力に基づいて空燃比フィードバック係数を算出し、空燃比が理論空燃比を中心としてその上下の狭い範囲内で増加、減少を繰り返すよう制御することが行われている。ここで、空燃比フィードバック係数は、運転状態に応じて決められる燃料噴射装置（インジェクタ）の燃料噴射時間を算出する際に用いられる係数である。
【０００３】
特公平7-92008号公報には、この空燃比フィードバック係数の比例積分制御において、現在のエンジンの運転状態に基づいて、次の比例制御移行時の比例定数と、エンジンへの燃料供給量を変更した後に空燃比センサによってリッチあるいはリーンへの空燃比の反転が検出されるまでの時間とを予測することが記載されている。この予測した比例定数と時間とから現在の積分制御における積分定数を設定する。この積分定数により現在の積分制御で空燃比フィードバック係数を増加あるいは減少させた後、予測した比例定数により次回の比例制御で空燃比フィードバック係数を増加あるいは減少させることにより、空燃比の振れ幅および変化周期を小さくし、空燃比を理論空燃比に速やかに収束させる。
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来の手法では、Ｏ２センサが経年変化によって劣化するなどの原因で、Ｏ２センサの反応遅れ時間が伸びると、Ｏ２センサの反応遅れ時間TRLまたはTLRに基づいて算出される積分項の勾配で空燃比F/B係数ＫＯ２を変化させたのでは、劣化後の大きな遅れで実際にＯ２センサの出力が反転するまでにＫＯ２が大きく変化してしまい、空燃比が三元触媒の浄化ウィンドウ幅を外れてしまう懸念がある。
【０００５】
【課題を解決するための手段】
このような課題を解決するため、この発明は、内燃機関の排気系に設けられた排気ガスの空燃比を検出する空燃比検出手段と、比例項制御および積分項制御により空燃比フィードバック係数を算出する空燃比フィードバック係数算出手段と、前記積分項を実行すべき時間の長さを、前記内燃機関の運転状態に応じて設定する時間設定手段と、前記時間設定手段により設定された時間に基づいて前記積分項を算出する積分項算出手段と、前記空燃比フィードバック係数をシフトさせる比例項を設定する比例項設定手段と、を備える内燃機関の空燃比制御装置において、前記積分項を実行する前の空燃比フィードバック係数と、該積分項を実行し、前記比例項設定手段が設定した比例項だけ空燃比フィードバック係数をシフトさせた後の空燃比フィードバック係数との偏差を検出する偏差検出手段と、前記検出した偏差に応じて前記積分項を実行すべき時間の長さを補正する積分時間補正手段とを備えるという構成をとる。
【０００６】
この発明による手法の基本的な概念を、図３（Ｂ）に示す空燃比制御の例を用いて説明すると、空燃比をリッチからリーン、さらにリーンからリッチに反転させる際、積分項ILを実行する前の空燃比フィードバック係数KO2SRLと、積分項ILを実行し、シフト量KO2WLを加算した空燃比フィードバック係数KOSLRとの偏差に応じて、次回以降の積分項の実行に要する時間を補正する。こうして補正された時間に基づいて積分項を算出するので、空燃比検出手段に経年変化などによる反応遅れを生じたときは、その遅れに応じて積分項の値が小さくなる。したがって、空燃比検出手段出力が反転するまでの期間に過大に空燃比フィードバック係数が変化されるのを防止することができる。こうして、空燃比検出手段が劣化するなどして反応遅れ時間が変化した場合であっても、空燃比フィードバック制御の乱れを低減することができる。
【０００７】
また、請求項２の発明は、内燃機関の排気系に設けられた排気ガスの空燃比を検出する空燃比検出手段と、比例項制御および積分項制御により空燃比フィードバック係数を算出する空燃比フィードバック係数算出手段と、前記積分項を実行すべき時間の長さを、前記内燃機関の運転状態に応じて設定する時間設定手段と、前記時間設定手段により設定された時間に基づいて前記積分項を算出する積分項算出手段と、前記空燃比フィードバック係数をシフトさせる比例項を設定する比例項設定手段と、を備える内燃機関の空燃比制御装置において、前記積分項を実行する前の空燃比フィードバック係数と、該積分項を実行し、前記比例項設定手段が設定した比例項だけ空燃比フィードバック係数をシフトさせた後の空燃比フィードバック係数との偏差を検出する偏差検出手段と、前記検出した偏差に応じて前記積分項を実行すべき時間の長さを補正する積分時間補正手段と、前記偏差に応じて前記空燃比検出手段の反応遅れを学習する手段と、前記学習手段の学習値が上限値に達するとき、前記空燃比検出手段が劣化したと判定する劣化判定手段と、を備えるという構成をとる。
【０００８】
この発明によると、空燃比フィードバック制御における重要なデータ源である空燃比検出装置の劣化を、通常の空燃比フィードバック制御のプロセス中に検出することができる。
【０００９】
【発明の実施の形態】
次にこの発明の実施形態を図面を参照して説明する。図１は、この発明を適用するエンジンおよび空燃比フィードバック制御装置の概念図であり、エンジン１の吸気管２の途中にはスロットル弁３が配置されている。スロットル弁３にはスロットル弁開度（θTH）センサ４が設けられており、スロットル弁３の開度に応じた電気信号を電子コントロールユニット（ＥＣＵ）５に送る。
【００１０】
吸気管２のスロットルボディ３をバイパスする補助空気通路１７の途中には、吸気二次空気制御装置１８（EACV）が配置され、ＥＣＵ５から制御信号を受ける。EACV１８は、エンジン１のアイドル回転数を制御するために補助空気を吸気二次エアとして吸気管に供給する作用を行う。
【００１１】
燃料噴射弁６は、エンジン１とスロットル弁３との間で気筒ごとに設けられており、図示しない燃料ポンプに接続されており、ＥＣＵ５からの信号により開弁時間が制御される。
【００１２】
スロットル弁３の下流には管７を介して吸気管絶対圧（ＰＢＡ）センサ８が設けられており、ＥＣＵ５に吸気管の絶対圧を示す信号を送る。また、その下流には吸気温（TA）センサ９が設けられており、吸気温を示す信号をＥＣＵ５に送る。
【００１３】
エンジン１の本体に設けられたエンジン水温（TW）センサ１０は、典型的にはサーミスタからなり、エンジン水温を示す信号をＥＣＵ５に送る。エンジン回転数（NE）センサ１１および気筒判別（CYL）センサ１２がエンジン１のカム軸周囲またはクランク軸周囲に設けられている。エンジン回転数センサは、クランク軸の半回転ごとに所定のクランク角度位置（上死点）でパルス（TDC）を出力し、気筒判別センサは、特定の気筒の所定のクランク角度位置でパルスを出力する。
【００１４】
三元触媒（触媒コンバータ）１４は、エンジン１の排気管１３に配置されており、排気ガス中のＨＣ、ＣＯ、ＮＯｘなどの成分の浄化を行う。排気管１３の三元触媒１４の上流側には空燃比検出器として酸素濃度センサ１６（Ｏ２センサ）が設けられている。Ｏ２センサは、理論空燃比を境として出力値がディジタル的に変化する電気信号を発生する。
【００１５】
ＥＣＵ５は、各種のセンサからの入力信号の波形を整形し、電圧レベルを修正し、アナログ信号をディジタル信号に変換するなどの機能を有する入力回路５ａ、プロセッサ（ＣＰＵ）５ｂ、ＣＰＵ５ｂが実行するプログラムおよび演算結果を記憶するメモリ５ｃ、燃料噴射弁６その他のアクチュエータに駆動信号を送る出力回路５ｄを備えている。メモリ５ｃは、プログラムを格納する読み取り専用メモリ（ＲＯＭ）とＣＰＵ５ｂに作業領域を提供する一時記憶メモリ（ＲＡＭ）とで構成することができ、この場合、ＲＯＭに代えてバックアップ機能付きのＲＡＭを使用することもできる。
【００１６】
ＣＰＵ５ｂは、各種の運転状態を示す信号に基づいて、排気ガスから検出される空燃比に応じたフィードバック制御運転モード、オープンループ制御運転モードなどの予め用意されたいくつかの運転モードに応じてエンジン各部を制御する。その際、ＣＰＵ５ｂは、燃料噴射弁６の燃料噴射時間TOUTを次式により算出する。
【００１７】
【数１】
TOUT=T1 X KO2 X K1 + K2
ここで、T1は、エンジン回転数NEと吸気管圧力PBAをパラメータとしてメモリ５ｃに用意されたマップから得られる基本燃料噴射時間である。KO2は、Ｏ２センサ１６の出力に基づいて算出される空燃比フィードバック係数であり、空燃比フィードバック制御中は、Ｏ２センサによって検出される空燃比が目標空燃比に一致するようフィードバック制御され、オープンループ制御中は、エンジン運転状態に応じた値に設定される。K1およびK2は、各種のパラメータ信号に応じて演算される空燃比フィードバック係数および補正変数で、エンジン運転状態に応じた燃料特性、加速特性などの諸々の特性の最適化を図るよう設定される。
【００１８】
図２は、この発明を実施する一実施例におけるＥＣＵ５の機能ブロック図である。リッチ・リーン判定部２１は、Ｏ２センサ１６からの出力信号ＶＯ２に基づいて空燃比がリッチ領域に入ったか、リーン領域に入ったかを判定する。具体的には、図３（Ｃ）に示すようにＶＯ２が上のしきい値PVREFHを下から上に越えると空燃比がリッチ領域に入ったと判定し、Ｏ２センサ反転フラグF_PVREFを１にセットする。また、ＶＯ２が下のしきい値PVREFLを上から下にクロスすると、空燃比がリーン領域に入ったと判定し、Ｏ２センサ反転フラグF_PVREFを０にリセットする。
【００１９】
図３（Ａ）は、従来技術による空燃比フィードバックにおいてＯ２センサ１６が劣化したときの空燃比フィードバック係数ＫＯ２と、空燃比検出手段の出力ＶＯ２との関係を示す。図３（Ｂ）は、この発明により積分時間を補正したときの空燃比フィードバック係数ＫＯ２と、空燃比検出手段の出力ＶＯ２との関係を概念的に示す。
【００２０】
Ｆ／Ｂ定数検索部２２は、この発明の実施例で必要となる諸々の定数を求める機能を担当する。図３（Ｂ）を参照すると、これらの定数の一つは、リッチ領域に入った後、空燃比フィードバック係数KO2をリッチ領域で一定に保つ時間、すなわちリーンに向かわせる制御を開始するまでの遅れ時間RDLYである。空燃比をリーン側からリッチ側に切り替える制御サイクルにおいては、図３（Ｂ）に示すLDLYがこの遅れ時間に対応する。この時間は、運転状態に基づいて決定するが、この実施例では、吸入空気量相関値（エンジン回転数に基本噴射量を乗算した値）をパラメータとするテーブル（メモリ５ｃに格納されている）から読み出される。このテーブルは、一実施例ではメモリ５ｃの容量を節約するため補間計算付きの１０格子テーブルとして格納されている。
【００２１】
検索部２２が検索するもう一つの定数は、比例項（Ｐ項）と呼ばれる、リッチからリーン、リーンからリッチに向けて空燃比フィードバック係数KO2をシフトさせるシフト量KO2WRおよびKO2WLである。この定数もエンジンの運転状態に基づいて決められるが、この実施例では吸入空気量相関値をパラメータとするテーブルから読み出される。このテーブルも補間計算付きの１０格子テーブルとしてメモリ５ｃに格納されている。
【００２２】
検索部２２が検索するさらにもう一つの定数は、積分項（Ｉ項）制御に要する時間、すなわち図３（Ｂ）の例において、RDLY時間後、比例項を空燃比をリーンにシフトした後、空燃比がリーン領域に入り、Ｏ２センサ出力ＶＯ２に基づいてリーン・リッチ判定部２１がＯ２センサ反転フラグF_PVREFを０にリセット（リーンを意味する）するまでに要するはずの時間である。
【００２３】
検索部２２は、運転状態をパラメータとしてメモリ５ｃに格納されているテーブルから設定TRLおよび設定TLRであるSDTRLおよびSDTLRを読み出し、積分時間設定部２６に渡す。設定TRLまたは設定TLRは、Ｏ２センサの反応遅れ時間である。設定TRLおよび設定TLRは、運転状態をパラメータとするメモリ５ｃに格納されているテーブルから読み出される。この実施例では、設定TRLおよび設定TLRは、吸入空気量相関値をパラメータとする補間計算付きの１０点格子テーブルとしてメモリ５ｃに格納されているテーブルから読み出される。
【００２４】
一方、Ｏ２センサ反応遅れ時間学習部２３は、Ｏ２センサの劣化によって生じることのある反応遅れ時間の影響を学習し、設定TRLおよび設定TLRを補正する学習TRLおよび学習TLR（ODTRLおよびODTLR）を決定し、積分時間設定部２６に渡す。
【００２５】
学習TRLおよび学習TLRは、遅れ学習部２３が学習して書き換える、運転状態をパラメータとするテーブルから読み出される。この実施例では、この学習テーブルは、吸入空気量相関値（エンジン回転数X基本噴射量）をパラメータとする補間計算付きの１０点格子テーブルとしてメモリ５ｃに記憶されている。
【００２６】
この発明の発明者は、Ｏ２劣化によるＯ２センサの反応遅れを補正しない従来技術によると、Ｏ２劣化によるＯ２センサの反応遅れが生じると、図３（Ａ）に見られるように、積分項ILを実行する前の空燃比フィードバック係数KO2の値KO2SRLと、積分項ILを実行し、続いて比例項を実行した後の空燃比フィードバック係数の値KO2SLRとの間に偏差が生じることに着目した。この偏差は、比例項KO2WRをシフトしたときの空燃比フィードバック係数KO2の値KO2SRLと、比例項KO2WLをシフトしたときの空燃比フィードバック係数の値KO2SLRとの間の偏差と見ることもできる。遅れ学習部２３は、前述の積分時間を適正に補正することができるよう、この偏差とＯ２センサの追加的な反応遅れ時間との相関関係に基づいて学習テーブルを定期的に更新する。この操作の詳細は、図８から図１０を参照して後に説明する。
【００２７】
積分時間設定部２６は、定数検索部２２から設定されたＯ２センサ反応遅れ時間であるSDTRLおよびSDTLRを受け取り、Ｏ２センサ反応遅れ学習部２３から学習値ODTRLおよびODTLRを受け取り、比例項（Ｉ項）の実行に要する時間、すなわち積分時間を設定する。
【００２８】
積分項算出部２４は、定数検出部２２から得られるシフト量（比例項）KO2WL、KO2WR、および積分時間設定部から得られる積分時間に基づいて、次の式により積分項を算出する。
【００２９】
【数２】
IL=KO2WL/(SDTRL+ODTRL)
IR=KO2WR/(SDTLR+ODTLR)
ここで、ILは、空燃比フィードバック係数をリッチ側からリーン側に変化させるときの積分時間における変化の勾配である。IRは、逆にリーン側からリッチ側に空燃比フィードバック係数を変化させるときの積分時間における変化勾配である。
【００３０】
KO2WLは、図３（Ｂ）に示されるように、空燃比フィードバック係数をリーン側からリッチ側に変化させるときのシフト量（比例項）であり、KO2WRは、空燃比フィードバック係数をリッチ側からリーン側に変化させるときのシフト量（比例項）である。このように、空燃比フィードバック係数をリッチ側からリーン側に変化させるときの積分項の累積は、続いてリーン側からリッチ側に変化させるときのシフト量（比例項）に等しいから、リッチ側からリーン側にシフトした後の空燃比フィードバック係数KO2SRLとリーン側からリッチ側にシフトした後の空燃比フィードバック係数KO2SLRとは、積分時間(SDTRL+ODTRL、またはSDTLR+ODTLR)が正確にＯ２センサの反応遅れ時間に対応している限り、等しい。
【００３１】
空燃比フィードバック係数算出部２５は、定数検出部２２から得られる保持時間（RDY、LDY）、シフト量（KO2WL、KO2WR）、および積分項算出部２４から得られる積分項（IL、IR）および積分時間（SDTRL+ODTRL、SDTLR+ODTLR）にしたがって空燃比フィードバック係数KO2算出し、燃料噴射制御部２９に渡す。燃料噴射制御部２９は、渡された空燃比フィードバック係数を用いて燃料の噴射量を制御する。
【００３２】
次にフローチャートを参照して図２に示す各機能ブロックの詳細な働きを説明する。図４は、この発明をＥＣＵ５のプログラムに組み込む場合のプログラム・モジュールの構成を示す。エンジンの運転状態から空燃比フィードバック制御運転を実行する条件が満足されているどうかを判定し（１０１）、満足されていれば、この発明を用いた空燃比フィードバック制御に入る。
【００３３】
このプログラムは、Ｏ２センサの出力から空燃比がリーンであるかリッチであるかを判定するルーチン１０２、空燃比フィードバック定数を検索するルーチン１０３、空燃比フィードバック制御を行うルーチン１０４、空燃比フィードバック計数のリミットチェックを行うルーチン１０５、Ｏ２センサの反応遅れを学習するルーチン１０６、およびＯ２センサの劣化を判定するルーチン１０７からなる。
【００３４】
図５は、リーン・リッチを判定するルーチン１０２の詳細を示すフローチャートで、機能的には図２のリッチ・リーン判定部２１に対応する。このルーチンは、一定の周期、たとえば１０ミリ秒ごとに実行される。以下の図６から図８に示すルーチンも同様で、たとえば１０ミリ秒ごとに実行される。
【００３５】
Ｏ２センサ反転フラグF_PVREF（図３（Ｃ）の波形参照）が１かどうかを判定し（２０１）、１であると（リッチ状態）、センサ出力ＶＯ２が下側のしきい値（第１のしきい値）PVREFLより下にあるかどうかが判定される（２０２）。ＶＯ２が下側のしきい値、すなわち第１しきい値PVREFLより下になると、反転フラグF_PVREFは０にリセットされ（２０４）、リーン状態を示す。ステップ２０１で反転フラグが０のときは、センサ出力ＶＯ２が上側のしきい値、すなわち第２しきい値PVREFHを越えているかどうかを点検し（２０３）、越えていれば反転フラグを１にセットし（２０５）、リッチ状態を示す。ステップ２０２およびステップ２０３で判定がＮＯのときは、それぞれステップ２０５、２０４に進む。
【００３６】
図６は、この発明の実施例で使用する諸々の定数をメモリ５ｃから検索するプロセスを示すフローチャートで、機能的には図２の定数検索部２２に概ね対応する。今の時点での吸入空気量相関値（エンジン回転数X基本噴射量）に対応する空燃比フィードバック係数のシフト量（比例項）をメモリ５ｃに格納されている振幅テーブルから読み出す（３０１）。振幅テーブルは、リッチからリーンへのシフト量を示すテーブルと、リーンからリッチへのシフト量を示すテーブルとが用意されている。前述したようにこれらのテーブルは補間計算付きの１０点格子テーブルの形でメモリ５ｃに格納されている。
【００３７】
次にエンジンがアイドリング状態かどうかが点検され（３０２）、アイドリング状態であれば、振幅テーブルから読み出した値に１より小さい係数をかけてシフト量（比例項）KO2WRおよびKO2WLとする（３０４）。アイドリング状態でなければ、振幅テーブルから読み出した値がそのままシフト量となる（３０３）。シフト量KO2WRおよびKO2WLについては図３（Ｂ）に関連して上で説明した。アイドリング中にKO2WRおよびKO2WLを通常より小さくすることにより空燃比の変動を小さくすることができる。
【００３８】
ついで吸入空気量相関値NTIによる１０点格子テーブル（補間計算付き）から現在の吸入空気量相関値に対応するＯ２センサ反応遅れ時間基本値（SDTRL、SDTLR）を読み出す（３０５）。同様に吸入空気量相関値NTIによる１０点格子学習テーブル（補間計算付き）から現在の吸入空気相関値に対応するＯ２センサ反応遅れ学習値（ODTRL、ODTLR）を読み出す（３０６）。こうして読み出された定数を用いて、上記の数２の式にしたがって、積分項ILおよびIRを算出する（３０７）。
【００３９】
同様に吸入空気量相関値NTIによる１０点格子テーブル（補間計算付き）から空燃比フィードバック係数KO2のシフト（比例項）を実行する遅れ時間LDLY、RDLYを読み出す（３０８）。遅れ時間LDLYおよびRDLYについては、図３（Ｂ）に関連してすでに記述した。
【００４０】
図７は、空燃比フィードバック制御における空燃比フィードバック係数KO2を算出するルーチンのフローチャートで、機能的には図２のブロック２５に概ね対応する。Ｏ２センサ反転フラグ（図３（Ｃ）におけるF_PVREF）をモニターし、フラグの反転があったかどうかを見る（４０１）。反転がなければ、比例項の遅れ時間TRLDLYのタイマーが０になったか、すなわち比例項遅れ時間が経過したかどうかを判定し（４０２）、経過していなければ、タイマーをデクリメントし（４１５）、比例項実行フラグF_KO2WINを０にリセットする（４１６）。
【００４１】
ステップ４０２で比例項遅れ時間が経過していると、Ｏ２センサ反転フラグF_PVREFが１（リッチ）であるか０（リーン）であるか判定し（４０３）、リーン状態にあればステップ４０４に進み、比例項が実行されたかどうか、すなわち空燃比フィードバック係数がシフト量KO2WLだけシフトされたかどうか、比例項実行フラグF_KO2WINを見て判定する（４０４）。比例項が実行されていなければ、F_KO2WINは０なので、空燃比フィードバック係数の現在の瞬時値KO2Tにシフト量KO2WLを加算し、これを空燃比フィードバック係数の新しい瞬時値とする（４０６）。このシフトされたばかりの新しい瞬時値をパラメータKO2SLRとしてメモリ５ｃの所定の記憶領域に記憶しておく（４０７）。そして比例項実行フラグF_KO2WINを１にセットして（４０８）処理を抜ける。
【００４２】
ステップ４０４で比例項実行フラグが１になっていると、ステップ４０５に進み、空燃比フィードバック係数の現在の瞬時値KO2Tに積分項のIRを加算した値を新しい空燃比フィードバック係数の瞬時値として設定して処理を抜ける。
【００４３】
ステップ４０３でＯ２センサ反転フラグが１でリッチ状態を示すと、ステップ４１０に進み、比例項実行フラグが１になっているかどうか判定し、１でないとき、すなわち比例項が実行されていないときは、空燃比フィードバック係数の現在の瞬時値KO2Tから上で求められたシフト量KO2WRを引き、これを新しい空燃比フィードバック係数の瞬時値とする（４１１）。こうしてシフトしたばかりの空燃比係数の瞬時値を変数KO2SRL（図３（Ｂ）参照）として、メモリ５ｃの所定の記憶領域に記憶させる（４１２）。ついで、比例項実行フラグを１にセットして（４０８）、処理を抜ける。
【００４４】
ステップ４１０で比例項実行フラグが１になっていると、空燃比フィードバック係数の現在の瞬時値KO2Tから上で求めた積分項ILを引き、その値を新しい瞬時値KO2Tとして設定して処理を抜ける。
【００４５】
ステップ４０１でＯ２センサ反転フラグの反転が検出されると、反転フラグF_PVREFからリッチ状態なのかリーン状態なのかを判断し（４２０）、リーン状態であれば、図６のブロック３０８で求めたKO2シフトの遅れ時間LDLYをタイマーTRLDLYにセットする（４２２）。このタイマーは、上述したステップ４０２で点検され、ステップ４１５でデクリメントされる。ついで、比例項実行フラグF_KO2WINをリセットして処理を抜ける（４２５）。
【００４６】
ステップ４２０でリッチ状態であると、ブロック４２４で、図６のブロック３０８で求めたシフトの遅れ時間RDLYをタイマーTRLDLYにセットする（４２４）。ついで、比例項実行フラグF_KO2WINをリセットして処理を抜ける（４２５）。
【００４７】
図８は、Ｏ２センサの反応遅れ時間を学習するルーチンで、機能的には図２の学習部２３に概ね対応する。比例項実行フラグF_KO2WIN(図７のブロック４０８で１にセットされる）が０から１に変化したかどうかを点検し（５０１）、変化しているとＯ２センサ反転フラグF_PVREFが１かどうかを点検し（５０２）、１であれば、図７のブロック４０７でメモリ５ｃに記憶された変数KO2SLRとブロック４１２でメモリ５ｃに記憶された変数KO2SRLとの偏差DKO2TLRを算出する（５０３）。同様にＯ２センサ反転フラグが０のときは、変数KO2SRLと変数KO2SLRとの偏差DKO2TRLを算出する（５０９）。次に比例項実行から次の比例項実行までの時間HPVO2（図９参照）を計測するカウンタCHPVO2の値を読みとり（５０４）、カウンタを０にリセットする（５０５）。
【００４８】
ついで読みとられた期間HPVO2が予め定めた範囲内にあるかどうかを判定し（５０７）、範囲内になければ処理を抜ける。これは、なんらかの原因で期間HPVO2が一時的に大幅に短くなったとき、および逆に大幅に長くなったときのパラメータを学習に反映させないようにするためである。この判定で使用する上限値および下限値は、図１０（Ａ）に示す吸入空気量相関値NTIをパラメータとする１０点格子テーブル（補間計算付き）から読み出される。
【００４９】
期間HPVO2が図１０（Ａ）のテーブルから読み出される上限値と下限値の間にあるときは、Ｏ２センサ反転フラグF_PVREFが１（リッチ）であれば、ブロック５１２に進み、ブロック５０３で求めた偏差DKO2TLRをパラメータとして図１０（Ｂ）に示すようなテーブルから更新量DODTLRを検索する（５１２）。ついでブロック５１３に進み、ODTLR学習テーブル（吸入空気量相関値NTIをパラメータとする１０点格子テーブル（補間計算付き））から前回までの学習値ODTLRを検索する。こうして読み出した学習値ODTLRにブロック５１２で求めた更新量を加算する（５１４）。学習値ODTLRが求められると、この値が限界値（図１０（Ｃ）のテーブルから読み出されたリミット値ODTLRH、ODTLRL）を超えていないかどうかのチェックを行い（５１５）、今回算出した学習値ODTLRでODTLR学習値テーブルを置換する（５１６）。こうして、学習値テーブルは、偏差DKO2TLRが生じると、図１０（Ｂ）のテーブルで示す値だけ変更される。図１０（Ｂ）のテーブルの値は、Ｏ２センサの劣化による反応時間の遅れと偏差DKO2TLRとの相関関係を実験およびシミュレーションによって求め、この相関関係にしたがって設定する。
【００５０】
ブロック５１１でＯ２センサ反転フラグが０であると、ブロック５２１に進み、ブロック５０９で求めた偏差DKO2TRLに基づいて、図１０（Ｂ）に示すのと同様のDODTRL用のテーブルから定数DODTRLを検索する（５２１）。ODTRL学習テーブルから学習値ODTRLを検索する（５２２）。検索された前回学習値ODTRLにブロック５２１で検索した定数DODTRLを加える（５２３）。ついで図１０（Ｃ）と同様のテーブルにより検索されたリミット値によりリミットチェックを行って（５２４）、今回算出した学習値ODTRLに学習値テーブルを置換する（５２５）。
【００５１】
また、ブロック５０１で比例項実行フラグF_KO2WINが０のときは、ブロック５０８に進み、比例項実行の間隔を測定するカウンタCHPVO2をインクリメントする。ここで、図１０に示すテーブルは、F_PVREF=1の場合と、０の場合で別の設定にすることもできる。
【００５２】
こうして、ブロック５１４および５２３で得られた学習値ODTLRおよびODTRLが、図６のブロック３０７において積分項、すなわち空燃比フィードバック係数を変化させる勾配の算出に用いられる。
【００５３】
図１１は、劣化の判定を行うルーチンを示し、図８のステップ515のリミットチェックにおいて学習値ODTLRが上限値ODTLRHに達していて（601）、かつ図８のステップ503で算出した偏差DKO2TLRが劣化判定値DKO2LMT以上であるとき（604）、Ｏ２センサに劣化があると判定する（605）。また、図８のステップ524のリミットチェックにおいて学習値ODTRLが上限値ODTRLHに達していて（602）、かつ図８のステップ509で算出した偏差DKO2TRLがD劣化判定値KO2LMTより大きいとき(603)、Ｏ２センサに劣化があると判定する（605）。
【００５４】
以上にこの発明を具体的な実施例について記述したが、この発明は、このような実施例に限定されるものではなく、当業者にとって明らかな変形は、この発明に含まれる。たとえば、エンジンの運転状態の判定は、様々なパラメータに基づいて行うことができる。
【００５５】
【発明の効果】
この発明によると、空燃比検出手段が劣化するなどして反応遅れ時間が変化した場合であっても、空燃比フィードバック制御の乱れを低減することができる。
【００５６】
また、請求項２の発明によると、空燃比フィードバック制御のプロセス中に空燃比検出手段の劣化を検出することができる
【図面の簡単な説明】
【図１】この発明を適用するエンジン・システムの全体的な構成を示す図。
【図２】この発明に一実施例の空燃比フィードバック制御装置の全体的な機能ブロック図。
【図３】（Ａ）は、Ｏ２センサ劣化による反応遅れ時間を生じたときの従来技術における空燃比フィードバック係数KO2とセンサ出力VO2の関係を示し、（Ｂ）は、この発明に従ってＯ２センサ劣化による反応遅れ時間を学習した制御によるKO2とVO2の関係を示し、（Ｃ）はＯ２センサの検出出力とＯ２センサ反転フラグの関係を示す図。
【図４】この発明をプログラムで実施する実施例における、プログラム・ルーチンの全体的な構成を示す図。
【図５】リーン・リッチの判定を行うルーチンのフローチャート。
【図６】この発明の一実施例で使用する定数を検索するルーチンのフローチャート。
【図７】この発明の一実施例における空燃比フィードバック係数KO2を算出するルーチンのフローチャート。
【図８】この発明の一実施例におけるＯ２センサの反応遅れ時間を反映して空燃比フィードバック係数KO2の算出に使用する定数を学習するルーチンのフローチャート。
【図９】空燃比フィードバック係数KO2、比例項実行フラグF_KO2WIN、およびＯ２センサ反転フラグF_PVREFのタイミング関係を示す図。
【図１０】（Ａ）は、比例項実行の間隔の上限および下限を求めるテーブルを示し、（Ｂ）は、空燃比フィードバック係数KO2の偏差に基づく遅れ時間の補正量を求めるテーブルを示し、（Ｃ）は、運転状態に応じた遅れ時間補正量を示す学習テーブルの概念図。
【図１１】Ｏ２センサの劣化を判定するプロセスのフローチャート。
【符号の説明】
１６          Ｏ２センサ（空燃比検出手段）
２１          リッチ・リーン判定部
２２          定数検索部
２３          Ｏ２センサ反応遅れ学習部
２４          積分項算出部
２５          空燃比フィードバック係数算出部
２６          積分時間設定部
【図１】
0003813044.tif 000002
【図２】
0003813044.tif 000003
【図３】
0003813044.tif 000004
【図４】
0003813044.tif 000005
【図５】
0003813044.tif 000006
【図６】
0003813044.tif 000007
【図７】
0003813044.tif 000008
【図８】
0003813044.tif 000009
【図９】
0003813044.tif 000010
【図１０】
0003813044.tif 000011
【図１１】
0003813044.tif 000012