(57)【特許請求の範囲】
【請求項１】
内燃機関の排気系に設けられた空燃比検出手段と、前記空燃比検出手段の出力に基づいて、適応パラメータを調整する適応パラメータ調整手段を有する適応制御器を用いて前記機関に供給する混合気の空燃比を目標空燃比に収束させるように空燃比制御量を算出し、該空燃比制御量により前記機関に供給する混合気の空燃比をフィードバック制御するフィードバック制御手段とを備えた内燃機関の空燃比制御装置において、
前記適応パラメータ調整手段は、前記空燃比制御量の積分項に相当する積分項相当パラメータを算出する積分項相当パラメータ算出手段と、該積分項相当パラメータの値が所定リミット範囲内となるように処理するリミット処理手段とをさらに有し、
前記積分項相当パラメータ算出手段は、前記積分項相当パラメータを前記適応パラメータに基づいて算出することを特徴とする内燃機関の空燃比制御装置。
【請求項２】
前記リミット処理手段は、前記積分項相当パラメータが前記所定リミット範囲を越えたときは、前記適応パラメータを前回値に保持することを特徴とする請求項１記載の内燃機関の空燃比制御装置。
【請求項３】
前記適応パラメータはフィードバック制御の偏差の積分値に比例し、前記積分項相当パラメータ算出手段は、前記適応パラメータと複数の所定制御サイクル前における空燃比制御量との積の漸化式として表される空燃比制御量において、前記複数の所定制御サイクル前における空燃比制御量が互いに同一であると近似して前記空燃比制御量における積分項と比例項とを分離することにより前記積分項相当パラメータを算出することを特徴とする請求項１又は２記載の内燃機関の空燃比制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の空燃比制御装置に関し、特に適応制御理論を応用したフィードバック制御により、機関に供給する混合気の空燃比をフィードバック制御する空燃比制御装置に関する。
【０００２】
【従来の技術】
適応制御理論に基づく、漸化式形式のパラメータ調整機構を備える適応制御器を用いて空燃比制御量を算出し、これを用いて機関に供給する混合気の空燃比を目標空燃比にフィードバック制御する空燃比制御装置は、従来より知られている（例えば特開平７−２４７８８６号公報）。この装置では、機関排気系に設けられた空燃比センサによる検出空燃比が適応制御器に入力され、フィードバック制御が行われる。
【０００３】
また空燃比センサの出力に基づいていわゆるＰＩＤ制御により空燃比制御量を算出し、これを用いて空燃比をフィードバック制御する場合に、何らかの外乱が加わったことに起因して空燃比制御量が所定上下限値の範囲を越えたときは、空燃比の急激な変動を避けるために空燃比制御量及びその積分項をその上限値又は下限値に保持するリミット処理が一般に行われている。
【０００４】
【発明が解決しようとする課題】
しかしながら、適応制御器を用いた制御でリミット処理を行う場合には、空燃比制御量の算出式から積分項を容易に分離することができないという問題がある。そのため、図１９に示すように時刻ｔ１からｔ２に期間に一時的に大きな外乱が加わった場合、空燃比制御量ＫＳＴＲそのものは破線で示すように、時刻ｔ３以後はリミット値に保持するように制御することはできるが、積分項のリミット処理を行うことができないため、外乱がなくなってからも空燃比制御量ＫＳＴＲのリミット値保持状態がしばらく継続し、外乱が加わる前の状態に復帰するのに時間がかかるという問題があった。すなわち、空燃比制御量ＫＳＴＲの積分項に相当するパラメータは実線で示すように、外乱が無くなる時刻ｔ２まで増加し続けるため、このような問題が発生すると考えられる。
【０００５】
本発明はこの問題を解決するためになされたものであり、適応制御器を用いた制御において積分項相当のパラメータについてもリミット処理を行い、一時的に大きな外乱が加わった場合でもその外乱が無くなった後の制御の収束性を向上させることができる空燃比制御装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため請求項１の発明は、内燃機関の排気系に設けられた空燃比検出手段と、前記空燃比検出手段の出力に基づいて、適応パラメータを調整する適応パラメータ調整手段を有する適応制御器を用いて前記機関に供給する混合気の空燃比を目標空燃比に収束させるように空燃比制御量を算出し、該空燃比制御量により前記機関に供給する混合気の空燃比をフィードバック制御するフィードバック制御手段とを備えた内燃機関の空燃比制御装置において、前記適応パラメータ調整手段は、前記空燃比制御量の積分項に相当する積分項相当パラメータを算出する積分項相当パラメータ算出手段と、該積分項相当パラメータの値が所定リミット範囲内となるように処理するリミット処理手段とをさらに有し、前記積分項相当パラメータ算出手段は、前記積分項相当パラメータを前記適応パラメータに基づいて算出することを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の発明において、前記リミット処理手段は、前記積分項相当パラメータが前記所定リミット範囲を越えたときは、前記適応パラメータを前回値に保持することを特徴とする。
請求項３に記載の発明は、請求項１又は２記載の発明において、前記適応パラメータ（ｓ０，ｒ１〜ｒ３，ｂ０）はフィードバック制御の偏差の積分値に比例し、前記積分項相当パラメータ算出手段は、前記適応パラメータ（ｒ１〜ｒ３）と複数の所定制御サイクル前における空燃比制御量（ＫＳＴＲ（ｋ−４），ＫＳＴＲ（ｋ−８），ＫＳＴＲ（ｋ−１２））との積の漸化式（数式１９）として表される空燃比制御量（ＫＳＴＲ（ｋ））において、前記複数の所定制御サイクル前における空燃比制御量（ＫＳＴＲ（ｋ−４），ＫＳＴＲ（ｋ−８），ＫＳＴＲ（ｋ−１２））が互いに同一であると近似して前記空燃比制御量における積分項（（１−ｓ０−（ｒ１＋ｒ２＋ｒ３）×ＫＳＴＲＯ）／ｂ０）と比例項（−ｓ０×ＤＫＡＣＴ／ｂ０）とを分離することにより前記積分項相当パラメータを算出することを特徴とする。
【０００８】
本発明によれば、適応制御器を用いて算出される空燃比制御量の積分項に相当する積分項相当パラメータが適応パラメータに基づいて算出され、該積分項相当パラメータの値が所定リミット範囲内となるようにリミット処理が行われる。
【０００９】
【発明の実施の形態】
以下本発明の実施の形態を図面を参照して説明する。
【００１０】
図１は本発明の実施の一形態にかかる内燃機関（以下「エンジン」という）及びその制御装置の構成を示す図である。同図中、１は４気筒のエンジンである。
【００１１】
エンジン１の吸気管２は分岐部（吸気マニホルド）１１を介してエンジン１の各気筒の燃焼室に連通する。吸気管２の途中にはスロットル弁３が配されている。スロットル弁３にはスロットル弁開度（θＴＨ）センサ４が連結されており、スロットル弁開度θＴＨに応じた電気信号を出力して電子コントロールユニット（以下「ＥＣＵ」という）５に供給する。吸気管２には、スロットル弁３をバイパスする補助空気通路６が設けられており、該通路６の途中には補助空気量制御弁７が配されている。補助空気量制御弁７は、ＥＣＵ５に接続されており、ＥＣＵ５によりその開弁量が制御される。
【００１２】
吸気管２のスロットル弁３の上流側には吸気温（ＴＡ）センサ８が装着されており、その検出信号がＥＣＵ５に供給される。吸気管２のスロットル弁３と吸気マニホルド１１の間には、チャンバ９が設けられており、チャンバ９には吸気管内絶対圧（ＰＢＡ）センサ１０が取り付けられている。ＰＢＡセンサ１０の検出信号はＥＣＵ５に供給される。
【００１３】
エンジン１の本体にはエンジン水温（ＴＷ）センサ１３が装着されており、その検出信号がＥＣＵ５に供給される。ＥＣＵ５には、エンジン１のクランク軸（図示せず）の回転角度を検出するクランク角度位置センサ１４が接続されており、クランク軸の回転角度に応じた信号がＥＣＵ５に供給される。クランク角度位置センサ１４は、エンジン１の特定の気筒の所定クランク角度位置で信号パルス（以下「ＣＹＬ信号パルス」という）を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点（ＴＤＣ）に関し所定クランク角度前のクランク角度位置で（４気筒エンジンではクランク角１８０度毎に）ＴＤＣ信号パルスを出力するＴＤＣセンサ及びＴＤＣ信号パルスより短い一定クランク角周期（例えば３０度周期）で１パルス（以下「ＣＲＫ信号パルス」という）を発生するＣＲＫセンサから成り、ＣＹＬ信号パルス、ＴＤＣ信号パルス及びＣＲＫ信号パルスがＥＣＵ５に供給される。これらの信号パルスは、燃料噴射時期、点火時期等の各種タイミング制御及びエンジン回転数ＮＥの検出に使用される。
【００１４】
吸気マニホルド１１の吸気弁の少し上流側には、各気筒毎に燃料噴射弁１２が設けられており、各噴射弁は図示しない燃料ポンプに接続されているとともにＥＣＵ５に電気的に接続されて、ＥＣＵ５からの信号により燃料噴射時期及び燃料噴射時間（開弁時間）が制御される。エンジン１の点火プラグ（図示せず）もＥＣＵ５に電気的に接続されており、ＥＣＵ５により点火時期θＩＧが制御される。
【００１５】
排気管１６は分岐部（排気マニホルド）１５を介してエンジン１の燃焼室に接続されている。排気管１６には分岐部１５が集合する部分の直ぐ下流側に、広域空燃比センサ（以下「ＬＡＦセンサ」という）１７が設けられている。さらにＬＡＦセンサ１７の下流側には直下三元触媒１９及び床下三元触媒２０が配されており、またこれらの三元触媒１９及び２０の間には酸素濃度センサ（以下「Ｏ２センサ」という）１８が装着されている。三元触媒１９、２０は、排気ガス中のＨＣ，ＣＯ，ＮＯｘ等の浄化を行う。
【００１６】
ＬＡＦセンサ１７は、ローパスフィルタ２２を介してＥＣＵ５に接続されており、排気ガス中の酸素濃度（空燃比）に略比例した電気信号を出力し、その電気信号をＥＣＵ５に供給する。Ｏ２センサ１８は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。Ｏ２センサ１８は、ローパスフィルタ２３を介してＥＣＵ５に接続されており、その検出信号はＥＣＵ５に供給される。ローパスフィルタ２２、２３は、高周波ノイズ成分をカットするするために設けられたものであり、制御系の応答特性に対する影響は無視しうる程度のものである。
【００１７】
また、エンジン１と車輪（図示せず）との間には流体クラッチ等からなる自動変速機（図示せず）が介装され、シフトレバー（図示せず）を操作することによってＰレンジ、Ｎレンジ或いはＤレンジ等シフトポジションの変更が可能とされている。
【００１８】
また、自動変速機にはシフトポジション（ＳＰＮ）センサ７０が取り付けられ、該ＳＰＮセンサ７０により自動変速機のシフトポジションが検出されてその出力信号がＥＣＵ５に供給される。
【００１９】
また、エンジン１が搭載された車両の駆動輪速度及び従動輪速度を検出する車輪速センサ（図示せず）が設けられており、その検出信号がＥＣＵ５に供給される。ＥＣＵ５は、検出した駆動輪速度及び従動輪速度に基づいて駆動輪の過剰スリップ状態を判定し、過剰スリップ状態を検出したときは、空燃比のリーン化若しくは一部の気筒への燃料供給を停止する制御、又は点火時期を遅角させる制御（トラクション制御）を行う。
【００２０】
エンジン１は、吸気弁及び排気弁のうち少なくとも吸気弁のバルブタイミングを、エンジンの高速回転領域に適した高速バルブタイミングと、低速回転領域に適した低速バルブタイミングとの２段階に切換可能なバルブタイミング切換機構６０を有する。このバルブタイミングの切換は、弁リフト量の切換も含み、さらに低速バルブタイミング選択時は２つの吸気弁のうちの一方を休止させて、空燃比を理論空燃比よりリーン化する場合においても安定した燃焼を確保するようにしている。
【００２１】
バルブタイミング切換機構６０は、バルブタイミングの切換を油圧を介して行うものであり、この油圧切換を行う電磁弁及び油圧センサ（図示せず）がＥＣＵ５接続されている。油圧センサの検出信号はＥＣＵ５に供給され、ＥＣＵ５は電磁弁を制御してバルブタイミングの切換制御を行う。
【００２２】
また、ＥＣＵ５には、大気圧を検出する大気圧（ＰＡ）センサ２１が接続されており、その検出信号がＥＣＵ５に供給される。
【００２３】
ＥＣＵ５は、上述した各種センサからの入力信号波形を整形して電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変化する等の機能を有する入力回路と、中央処理回路（ＣＰＵ）と、該ＣＰＵで実行される各種演算プログラムや後述する各種マップ及び演算結果等を記憶するＲＯＭ及びＲＡＭからなる記憶回路と、燃料噴射弁１２等の各種電磁弁や点火プラグに駆動信号を出力する出力回路とを備えている。
【００２４】
ＥＣＵ５は、上述の各種エンジン運転パラメータ信号に基づいて、ＬＡＦセンサ１７及びＯ２センサ１８の出力に応じたフィードバック制御運転領域やオープン制御運転領域等の種々のエンジン運転状態を判別するとともに、エンジン運転状態に応じ、下記数式１により燃料噴射弁１２の燃料噴射時間ＴＯＵＴを演算し、この演算結果に基づいて燃料噴射弁１２を駆動する信号を出力する。
【００２５】
【数１】
ＴＯＵＴ＝ＴＩＭＦ×ＫＴＯＴＡＬ×ＫＣＭＤＭ×ＫＦＢ
図２は上記数式１による燃料噴射時間ＴＯＵＴの算出手法を説明するための機能ブロック図であり、これを参照して本実施の形態における燃料噴射時間ＴＯＵＴの算出手法の概要を説明する。なお、本実施の形態ではエンジンへの燃料供給量は燃料噴射時間として算出されるが、これは噴射される燃料量に対応するので、ＴＯＵＴを燃料噴射量若しくは燃料量とも呼んでいる。
【００２６】
図２においてブロックＢ１は、吸入空気量に対応した基本燃料量ＴＩＭＦを算出する。この基本燃料量ＴＩＭＦは、基本的にはエンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて設定されるが、スロットル弁３からエンジン１の燃焼室に至る吸気系をモデル化し、その吸気系モデルに基づいて吸入空気の遅れを考慮した補正を行うことが望ましい。その場合には、検出パラメータとしてスロットル弁開度θＴＨ及び大気圧ＰＡをさらに用いる。
【００２７】
ブロックＢ２〜Ｂ４は乗算ブロックであり、ブロックの入力パラメータを乗算して出力する。これらのブロックにより、上記数式１の演算が行われ、燃料噴射量ＴＯＵＴが得られる。
【００２８】
ブロックＢ９は、エンジン水温ＴＷに応じて設定されるエンジン水温補正係数ＫＴＷ，排気還流実行中に排気還流量に応じて設定されるＥＧＲ補正係数ＫＥＧＲ，蒸発燃料処理装置によるパージ実行時にパージ燃料量に応じて設定されるパージ補正係数ＫＰＵＧ等のフィードフォワード系補正係数をすべて乗算することにより、補正係数ＫＴＯＴＡＬを算出し、ブロックＢ２に入力する。
【００２９】
ブロックＢ２１は、エンジン回転数ＮＥ、吸気管内絶対圧ＰＢＡ等に応じて目標空燃比係数ＫＣＭＤを決定し、ブロック２２に入力する。目標空燃比係数ＫＣＭＤは、空燃比Ａ／Ｆの逆数、すなわち燃空比Ｆ／Ａに比例し、理論空燃比のとき値１．０をとるので、目標当量比ともいう。ブロックＢ２２は、ローパスフィルタ２３を介して入力されるＯ２センサ出力ＶＭＯ２に基づいて目標空燃比係数ＫＣＭＤを修正し、ブロックＢ１８、Ｂ２３及びＢ２４に入力する。ブロックＢ２３は、ＫＣＭＤ値に応じて燃料冷却補正を行い最終目標空燃比係数ＫＣＭＤＭを算出し、ブロックＢ３に入力する。ブロックＢ２４は、目標空燃比係数ＫＣＭＤの平滑化を行い、平滑化した目標空燃比係数ＫＣＭＤをブロック１９に入力する。
【００３０】
ローパスフィルタ２２を介して入力されるＬＡＦセンサ出力は、ローパスフィルタブロックＢ１６を介してブロック１８に入力され、ブロックＢ１７を介してブロックＢ１９に入力される。ブロックＢ１７は、ＬＡＦセンサにより検出された空燃比の平滑化を行う。
【００３１】
ブロックＢ１８は、検出空燃比と目標空燃比との偏差に応じてＰＩＤ制御によりＰＩＤ補正係数ＫＬＡＦを算出してブロックＢ２０に入力する。ブロックＢ１９は、ＬＡＦセンサ１７の検出空燃比に基づいて適応制御（Self Tuning Regulation）により適応補正係数ＫＳＴＲを算出してブロックＢ２０に入力する。この適応制御は、目標空燃比係数ＫＣＭＤ（ＫＣＭＤＭ）を基本燃料量ＴＩＭＦに乗算するだけでは、エンジンの応答遅れがあるため目標空燃比がなまされた検出空燃比になってしまうため、これを動的に補償し、外乱に対するロバスト性を向上させるために導入したものである。
【００３２】
ブロックＢ２０は、入力されるＰＩＤ補正係数ＫＬＡＦ及び適応補正係数ＫＳＴＲのいずれか一方をエンジン運転状態に応じて選択し、フィードバック補正係数ＫＦＢとしてブロックＢ４に入力する。これは、エンジン運転状態によっては、適応制御ではなく従来のＰＩＤ制御によって算出したＫＬＡＦ値を用いた方がよいことを考慮したものである。
【００３３】
以上のように本実施の形態では、ＬＡＦセンサ１７の出力に応じて通常のＰＩＤ制御により算出したＰＩＤ補正係数ＫＬＡＦと、適応制御により算出した適応補正係数ＫＳＴＲとを切り換えて、補正係数ＫＦＢとして上記数式１に適用して、燃料噴射量ＴＯＵＴを算出している。適応補正係数ＫＳＴＲにより、検出される空燃比変化に対する追従性及び外乱に対するロバスト性を向上させ、触媒の浄化率を向上させ、種々のエンジン運転状態において良好な排気ガス特性を得ることができる。
【００３４】
本実施の形態では、上述した図２の各ブロックの機能は、ＥＣＵ５のＣＰＵによる演算処理により実現されるので、この処理のフローチャートを参照して処理の内容を具体的に説明する。
【００３５】
図３は、ＬＡＦセンサ１７の出力に応じて、ＰＩＤ補正係数ＫＬＡＦ及び適応補正係数ＫＳＴＲを算出し、最終的にフィードバック補正係数ＫＦＢを算出する処理のフローチャートである。本処理はＴＤＣ信号パルスの発生毎に実行される。
【００３６】
ステップＳ１では、始動モードか否か、すなわちクランキング中か否かを判別し、始動モードのときは始動モードの処理へ移行する。始動モードでなければ、目標空燃比係数（目標当量比）ＫＣＭＤ及び最終目標空燃比係数ＫＣＭＤＭの算出（ステップＳ２）及びＬＡＦセンサ出力の読み込みを行う（ステップＳ３）とともに検出当量比ＫＡＣＴの演算を行う（ステップＳ４）。検出当量比ＫＡＣＴは、ＬＡＦセンサ１７の出力を当量比に変換したものである。
【００３７】
次いでＬＡＦセンサ１７の活性化が完了したか否かの活性判別を行う（ステップＳ５）。これは、例えばＬＡＦセンサ１７の出力電圧とその中心電圧との差を所定値（例えば０．４Ｖ）と比較し、該差が所定値より小さいとき活性化が完了したと判別するものである。
【００３８】
次にエンジン運転状態がＬＡＦセンサ１７の出力に基づくフィードバック制御を実行する運転領域（以下「ＬＡＦフィードバック領域」という）にあるか否かの判別を行う（ステップＳ６）。これは、例えばＬＡＦセンサ１７の活性化が完了し、且つフュエルカット中やスロットル全開運転中でないとき、ＬＡＦフィードバック領域と判定するものである。この判別の結果、ＬＡＦフィードバック領域にないときはリセットフラグＦＫＬＡＦＲＥＳＥＴを「１」に設定し、ＬＡＦフィードバック領域にあるときは「０」とする。
【００３９】
続くステップＳ７では、リセットフラグＦＫＬＡＦＲＥＳＥＴが「１」か否かを判別し、ＦＫＬＡＦＲＥＳＥＴ＝１のときは、ステップＳ８に進んでＰＩＤ補正係数ＫＬＡＦ、適応補正係数ＫＳＴＲ及びフィードバック補正係数ＫＦＢをいずれもに「１．０」に設定するとともに、ＰＩＤ制御の積分項ＫＬＡＦＩを「０」に設定して、本処理を終了する。また、ＦＫＬＡＦＲＥＳＥＴ＝０のときは、フィードバック補正係数ＫＦＢの演算を行って（ステップＳ９）、本処理を終了する。
【００４０】
図４は、図３のステップＳ２における最終目標空燃比係数ＫＣＭＤＭを算出する処理のフローチャートである。
【００４１】
ステップＳ２３では、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じてマップを検索し、基本値ＫＢＳを算出する。なお、そのマップにはアイドル時用の値も設定されている。
【００４２】
続くステップＳ２４では、エンジン始動直後のリーンバーン制御を実行すべき条件が成立するか否かを判別し、条件が成立したときは始動後リーンフラグＦＡＳＴＬＥＡＮを「１」に設定する一方、条件不成立のときは「０」とする。このリーンバーン制御実行条件は、例えばエンジン始動後所定期間内であって、エンジン水温ＴＷ、エンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡが所定範囲内にあるとき成立する。なお、始動直後のリーンバーン制御は、エンジン始動直後の触媒が未活性の状態でＨＣの排出量が増加すること防止する目的で行うものであるが、このリーンバーン実行時にＬＡＦセンサ１７のポンプ電流の異常を検知するようにしてもよい。
【００４３】
次いでステップＳ２５では、スロットル弁が全開（ＷＯＴ）の状態か否かを判別し、全開のときはＷＯＴフラグＦＷＯＴを「１」に設定し、全開でなければ「０」とする。次いで、エンジン水温ＴＷに応じて増量補正係数ＫＷＯＴを算出する（ステップＳ２６）。このとき高水温時の補正係数ＫＸＷＯＴも算出する。
【００４４】
続くステップＳ２７では、目標空燃比係数ＫＣＭＤを算出し、次いで算出したＫＣＭＤ値のリミット処理（所定上下限値の範囲内に入るようにする処理）を行う（ステップＳ２８）。このステップＳ２７の処理は図５を参照して後述する。続くステップＳ２９では、Ｏ２センサ１８の活性化が完了しているか否かの判別を行い、活性化が完了したときは、活性フラグＦＭＯ２を「１」に設定し、完了していないときは、「０」とする。例えばエンジン始動後所定期間経過したとき、活性化完了と判定する。次いで、Ｏ２センサ１８の出力ＶＭＯ２に応じて目標空燃比係数ＫＣＭＤの補正項ＤＫＣＭＤＯ２を算出する（ステップＳ３２）。この処理は、Ｏ２センサ出力ＶＭＯ２と基準値ＶＲＥＦＭとの偏差に応じてＰＩＤ制御により、補正項ＤＫＣＭＤＯ２を算出するものである。
【００４５】
続くステップＳ３３では、次式により目標空燃比係数ＫＣＭＤの補正を行う。
【００４６】
ＫＣＭＤ＝ＫＣＭＤ＋ＤＫＣＭＤＯ２
これにより、ＬＡＦセンサ１７の出力のずれを補償するように目標空燃比係数ＫＣＭＤを設定することができる。
【００４７】
続くステップＳ３４では、算出したＫＣＭＤ値に応じてＫＣＭＤ−ＫＥＴＣテーブルを検索して補正係数ＫＥＴＣを算出し、次式により最終目標空燃比係数ＫＣＭＤＭを算出する。
【００４８】
ＫＣＭＤＭ＝ＫＣＭＤ×ＫＥＴＣ
補正係数ＫＥＴＣは、ＫＣＭＤ値が増加し、燃料噴射量が増加するほど、噴射による燃料冷却効果が大きくなることを考慮して、その影響を補正するものであり、ＫＣＭＤ値が増加するほど大きな値に設定される。
【００４９】
次いで、ＫＣＭＤＭ値のリミット処理を行うとともに（ステップＳ３５）、ステップＳ３３で得られたＫＣＭＤ値をリングバッファに格納して（ステップＳ３６）、本処理を終了する。
【００５０】
図５は、図４のステップＳ２７におけるＫＣＭＤ算出処理のフローチャートである。
【００５１】
先ずステップＳ５１では、図４のステップＳ２４で設定した始動後リーンフラグＦＡＳＴＬＥＡＮが「１」か否かを判別し、ＦＡＳＴＬＥＡＮ＝１であるときは、ＫＣＭＤＡＳＴＬＥＡＮマップを検索して、リーン制御時の中心空燃比に相当するリーン目標値ＫＣＭＤＡＳＴＬＥＡＮを算出する（ステップＳ５２）。ここで、ＫＣＭＤＡＳＴＬＥＡＮマップは、エンジン水温ＴＷ及び吸気管内絶対圧ＰＢＡに応じてリーン目標値ＫＣＭＤＡＳＴＬＥＡＮが設定されたマップである。そして、目標空燃比係数ＫＣＭＤをリーン目標値ＫＣＭＤＡＳＴＬＥＡＮに設定して（ステップＳ５３）、ステップＳ６１に進む。
【００５２】
一方前記ステップＳ５１でＦＡＳＴＬＡＥＡＮ＝０であって、始動後リーンバーン制御実行条件が成立しないときは、エンジン水温ＴＷが所定水温ＴＷＣＭＤ（例えば８０℃）より高いか否かを判別する。そしてＴＷ＞ＴＷＣＭＤが成立するときは、ＫＣＭＤ値を図４のステップＳ２３で算出した基本値ＫＢＳに設定して（ステップＳ５７）、ステップＳ６１に進む。また、ＴＷ≦ＴＷＣＭＤが成立するときは、エンジン水温ＴＷ及び吸気管内絶対圧ＰＢＡに応じて設定されたマップを検索して、低水温用目標値ＫＴＷＣＭＤを算出し（ステップＳ５５）、基本値ＫＢＳがこのＫＴＷＣＭＤ値より大きいか否かを判別する（ステップＳ５６）。その結果ＫＢＳ＞ＫＴＷＣＭＤであるときは、前記ステップＳ５７に進み、ＫＢＳ≦ＫＴＷＣＭＤであるときは、基本値ＫＢＳを低水温用目標値ＫＴＷＣＭＤに置き換えて（ステップＳ５８）、ステップＳ６１に進む。
【００５３】
ステップＳ６１では、下記式によりＫＣＭＤ値を補正してステップＳ６２に進む。調整用加算項ＫＣＭＤＯＦＦＳＥＴは、エンジンの排気系やＬＡＦセンサの特性のばらつきや経時変化の影響を反映させて、目標空燃比係数ＫＣＭＤを微調整し、三元触媒のウィンドウゾーンの最適な位置をとるようにするためのパラメータである。この調整用加算項ＫＣＭＤＯＦＦＳＥＴは、ＬＡＦセンサ１７の特性等により設定されるが、Ｏ２センサ１８等の出力に応じて学習させることが望ましい。
【００５４】
ＫＣＭＤ＝ＫＣＭＤ＋ＫＣＭＤＯＦＦＳＥＴ
ステップＳ６２では、図４のステップＳ２５で設定したＷＯＴフラグＦＷＯＴが「１」か否かを判別し、ＦＷＯＴ＝０であれば直ちに本処理を終了し、ＦＷＯＴ＝１のときは、高負荷用のＫＣＭＤ値の設定処理を行い（ステップＳ６３）、本処理を終了する。この処理は、ＫＣＭＤ値を図４のステップＳ２６で算出した高負荷用増量補正係数ＫＷＯＴ，ＫＸＷＯＴと比較し、ＫＣＭＤ値がこれらの係数値より小さいときは、ＫＣＭＤ値に補正係数ＫＷＯＴ又はＫＸＷＯＴを乗算して補正を行うものである。
【００５５】
図６は、図３のステップＳ６におけるＬＡＦフィードバック領域判別処理のフローチャートである。
【００５６】
先ずステップＳ１２１では、ＬＡＦセンサ１７が不活性状態にあるか否かを判別し、活性状態にあるときはフュエルカット中であることを「１」で示すフラグＦＦＣが「１」か否かを判別し（ステップＳ１２２）、ＦＦＣ＝０であるときは、スロットル弁全開中であることを「１」で示すフラグＦＷＯＴが「１」か否かを判別し（ステップＳ１２３）、ＦＷＯＴ＝１でないときは、図示しないセンサによって検出したバッテリ電圧ＶＢＡＴが所定下限値ＶＢＬＯＷより低いか否かを判別し（ステップＳ１２４）、ＶＢＡＴ≧ＶＢＬＯＷであるときは、理論空燃比に対応するＬＡＦセンサ出力のずれ（ＬＡＦセンサストイキずれ）があるか否かを判別する。そして、ステップＳ１２１〜Ｓ１２５のいずれかの答が肯定（ＹＥＳ）のときは、ＬＡＦセンサ出力に基づくフィードバック制御を停止すべき旨を「１」で示すＫＬＡＦリセットフラグＦＫＬＡＦＲＥＳＥＴを「１」に設定する（ステップＳ１３２）。
【００５７】
一方、ステップＳ１２１〜Ｓ１２５の答がすべて否定（ＮＯ）のときは、ＬＡＦセンサ出力に基づくフィードバック制御を実行可能と判定して、ＫＬＡＦリセットフラグＦＫＬＡＦＲＥＳＥＴを「０」に設定する（ステップＳ１３１）。
【００５８】
続くステップＳ１３３では、Ｏ２センサ１８が不活性状態にあるか否かを判別し、活性状態にあるときは、エンジン水温ＴＷが所定下限水温ＴＷＬＯＷ（例えば０℃）より低いか否かを判別する（ステップＳ１３４）。そして、Ｏ２センサ１８が不活性状態のときまたはＴＷ＜ＴＷＬＯＷであるときは、ＰＩＤ補正係数ＫＬＡＦを現在値に維持すべきことを「１」で示すホールドフラグＦＫＬＡＦＨＯＬＤを「１」に設定して（ステップＳ１３６）、本処理を終了する。一方、Ｏ２センサ１８が活性状態にあり且つＴＷ≧ＴＷＬＯＷであるときは、ＦＫＬＡＦＨＯＬＤ＝０として（ステップＳ１３５）、本処理を終了する。
【００５９】
次に図３のステップＳ１０におけるフィードバック補正係数ＫＦＢの算出処理を説明する。
【００６０】
フィードバック補正係数ＫＦＢは、前述したようにエンジン運転状態に応じてＰＩＤ補正係数ＫＬＡＦ又は適応補正係数ＫＳＴＲに設定される。そこで、先ず図７及び図８を参照して、これらの補正係数の算出手法を説明する。
【００６１】
図７は、ＰＩＤ補正係数ＫＬＡＦ算出処理のフローチャートである。
【００６２】
同図のステップＳ３０１では、ホールドフラグＦＫＬＡＦＨＯＬＤが「１」か否かを判別し、ＦＫＬＡＦＨＯＬＤ＝１のときは、直ちに本処理を終了し、ＦＫＬＡＦＨＯＬＤ＝０のときは、ＫＬＡＦリセットフラグＦＫＬＡＦＲＥＳＥＴが「１」か否かを判別する（ステップＳ３０２）。その結果、ＦＫＬＡＦＲＥＳＥＴ＝１のときは、ステップＳ３０３に進み、ＰＩＤ補正係数ＫＬＡＦを１．０に設定するとともに、積分制御ゲインＫＩ及び目標当量比ＫＣＭＤと検出当量比ＫＡＣＴとの偏差ＤＫＡＦを「０」に設定して、本処理を終了する。
【００６３】
ステップＳ３０２でＦＫＬＡＦＲＥＳＥＴ＝０のときは、ステップＳ３０４に進み、比例制御ゲインＫＰ、積分制御ゲインＫＩ及び微分制御ゲインＫＤをエンジン回転数ＮＥ及び吸気管内絶対圧ＰＢＡに応じて設定されたマップから検索する。ただし、アイドル状態のときはアイドル用のゲインを採用する。次いで、目標当量比ＫＣＭＤと検出当量比ＫＡＣＴとの偏差ＤＫＡＦ（ｋ）（＝ＫＣＭＤ（ｋ）−ＫＡＣＴ（ｋ））を算出し（ステップＳ３０５）、偏差ＤＫＡＦ（ｋ）及び各制御ゲインＫＰ，ＫＩ，ＫＤを下記式に適用して、比例項ＫＬＡＦＰ（ｋ）、積分項ＫＬＡＦＩ（ｋ）及び微分項ＫＬＡＦＤ（ｋ）を算出する（ステップＳ３０６）。
【００６４】
ＫＬＡＦＰ（ｋ）＝ＤＫＡＦ（ｋ）×ＫＰ
ＫＬＡＦＩ（ｋ）＝ＤＫＡＦ（ｋ）×ＫＩ＋ＫＬＡＦＩ（ｋ−１）
ＫＬＡＦＤ（ｋ）＝（ＤＫＡＦ（ｋ）−ＤＫＡＦ（ｋ−１））×ＫＤ
続くステップＳ３０７〜Ｓ３１０では、積分項ＫＬＡＦＩ（ｋ）のリミット処理を行う。すなわち、ＫＬＡＦＩ（ｋ）値が所定上下限値ＫＬＡＦＩＬＭＴＨ，ＫＬＡＦＩＬＭＴＬの範囲内にあるか否かを判別し（ステップＳ３０７、Ｓ３０８）、ＫＬＡＦＩ（ｋ）＞ＫＬＡＦＩＬＭＴＨであるときは、ＫＬＡＦＩ（ｋ）＝ＫＬＡＦＬＭＴＨとし（ステップＳ３１０）、ＫＬＡＦＩ（ｋ）＜ＫＬＡＦＩＬＭＴＬであるときは、ＫＬＡＦＩ（ｋ）＝ＫＬＡＦＩＬＭＴＬとする（ステップＳ３０９）。
【００６５】
続くステップＳ３１１では、下記式によりＰＩＤ補正係数ＫＬＡＦ（ｋ）を算出する。
【００６６】
0003683363.tif 000002
次いで、ＫＬＡＦ（ｋ）値が所定上限値ＫＬＡＦＬＭＴＨより大きいか否かを判別し（ステップＳ３１２）、ＫＬＡＦ（ｋ）＞ＫＬＡＦＬＭＴＨであるときは、ＫＬＡＦ（ｋ）＝ＫＬＡＦＬＭＴＨとして（ステップＳ３１６）、本処理を終了する。
【００６７】
ステップＳ３１２で、ＫＬＡＦ（ｋ）≦ＫＬＡＦＬＭＴＨであるときは、ＫＬＡＦ（ｋ）値が所定下限値ＫＬＡＦＬＭＴＬより小さいか否かを判別し（ステップＳ３１４）、ＫＬＡＦ（ｋ）≧ＫＬＡＦＬＭＴＬであれば直ちに本処理を終了する一方、ＫＬＡＦ（ｋ）＜ＫＬＡＦＬＭＴＬであるときは、ＫＬＡＦ（ｋ）＝ＫＬＡＦＬＭＴＬとして（ステップＳ３１５）、本処理を終了する。
【００６８】
本処理により、検出当量比ＫＡＣＴが目標当量比ＫＣＭＤに一致するように、ＰＩＤ制御によりＰＩＤ補正係数ＫＬＡＦが算出される。
【００６９】
次に適応補正係数ＫＳＴＲ算出処理について、図８を参照して説明する。
【００７０】
図８は、図２のブロックＢ１９、すなわち適応制御（ＳＴＲ（Self Tuning Regulator））ブロックにおける演算処理を説明するための図であり、このＳＴＲブロックは、目標空燃比係数（目標当量比）ＫＣＭＤ（ｋ）と検出当量比ＫＡＣＴ（ｋ）とが一致するように適応補正係数ＫＳＴＲを設定するＳＴＲコントローラと、該ＳＴＲコントローラで使用するパラメータを設定するパラメータ調整機構とからなる。
【００７１】
本実施の形態における適応制御の調整則の一つに、ランダウらが提案したパラメータ調整則がある。この手法は、適応システムを線形ブロックと非線形ブロックとから構成される等価フィードバック系に変換し、非線形ブロックについては入出力に関するポポフの積分不等式が成立し、線形ブロックは強正実となるように調整則を決めることによって、適応システムの安定を保証する手法である。この手法は、例えば「コンピュートロール」（コロナ社刊）Ｎｏ．２７，２８頁〜４１頁、ないしは「自動制御ハンドブック」（オーム社刊）７０３頁〜７０７頁に記載されているように、公知技術である。
【００７２】
本実施の形態では、このランダウらの調整則を用いた。以下説明すると、ランダウらの調整則では、離散系の制御対象の伝達関数Ａ（Ｚ-1）／Ｂ（Ｚ-1）の分母分子の多項式を数式２のようにおいたとき、適応パラメータθハット（ｋ）及び適応パラメータ調整機構への入力ζ（ｋ）は、数式３、４のように定められる。数式３、４では、ｍ＝１、ｎ＝１、ｄ＝３の場合、即ち１次系で３制御サイクル分の無駄時間を持つプラントを例にとった。ここで、ｋは時刻、より具体的には制御サイクルを示す。また、数式４において、ｕ（ｋ）及びｙ（ｋ）は、本実施形態では、それぞれ適応補正係数ＫＳＴＲ（ｋ）及び検出当量比ＫＡＣＴ（ｋ）に対応する。
【００７３】
【数２】
0003683363.tif 000003
【００７４】
【数３】
0003683363.tif 000004
【００７５】
【数４】
0003683363.tif 000005
ここで、適応パラメータθハット（ｋ）は、数式５で表される。また、数式５中のΓ（ｋ）及びｅアスタリスク（ｋ）は、それぞれゲイン行列及び同定誤差信号であり、数式６及び数式７のような漸化式で表される。
【００７６】
【数５】
0003683363.tif 000006
【００７７】
【数６】
0003683363.tif 000007
【００７８】
【数７】
0003683363.tif 000008
また数式６中のλ１（ｋ）、λ２（ｋ）の選び方により、種々の具体的なアルゴリズムが与えられる。λ１（ｋ）＝１，λ２（ｋ）＝λ（０＜λ＜２）とすると漸減ゲインアルゴリズム（λ＝１の場合、最小自乗法）、λ１（ｋ）＝λ１（０＜λ１＜１）、λ２（ｋ）＝λ２（０＜λ２＜２）とすると、可変ゲインアルゴリズム（λ２＝１の場合、重み付き最小自乗法）、λ１（ｋ）／λ２（ｋ）＝σとおき、λ３が数式８のように表されるとき、λ１（ｋ）＝λ３とおくと固定トレースアルゴリズムとなる。また、λ１（ｋ）＝１，λ２（ｋ）＝０のとき固定ゲインアルゴリズムとなる。この場合は数式６から明らかなように、Γ（ｋ）＝Γ（ｋ−１）となり、よってΓ（ｋ）＝Γの固定値となる。
【００７９】
【数８】
0003683363.tif 000009
ここで、図８にあっては、前記ＳＴＲコントローラ（適応制御器）と適応パラメータ調整機構とは燃料噴射量演算系の外におかれ、検出当量比ＫＡＣＴ（ｋ）が目標当量比ＫＣＭＤ（ｋ−ｄ’）（ここでｄ’はＫＣＭＤがＫＡＣＴに反映されるまでの無駄時間である）に適応的に一致するように動作して適応補正係数ＫＳＴＲ（ｋ）を演算する。
【００８０】
このように、適応補正係数ＫＳＴＲ（ｋ）及び検出当量比ＫＡＣＴ（ｋ）が適応パラメータ調整機構に入力され、そこで適応パラメータθハット（ｋ）が算出されてＳＴＲコントローラに入力される。ＳＴＲコントローラには入力として目標当量比ＫＣＭＤ（ｋ）が与えられ、検出当量比ＫＡＣＴ（ｋ）が目標当量比ＫＣＭＤ（ｋ）に一致するように漸化式を用いて適応補正係数ＫＳＴＲ（ｋ）が算出される。
【００８１】
適応補正係数ＫＳＴＲ（ｋ）は、具体的には数式９に示すように求められる。
【００８２】
【数９】
0003683363.tif 000010
以上の説明は、制御サイクルと制御周期（ＴＤＣ信号パルスの発生周期）とを一致させ、全気筒について共通の適応補正係数ＫＳＴＲを使用する場合のものであるが、本実施形態では、制御サイクルを気筒数と対応させて４ＴＤＣとすることにより、気筒毎に適応補正係数ＫＳＴＲを決定するようにしている。具体的には、上記数式４〜９をそれぞれ数式１０〜１５に置き換えて、適応補正係数ＫＳＴＲを決定することにより、気筒別の適応補正係数ＫＳＴＲを算出して適応制御を行っている。
【００８３】
【数１０】
0003683363.tif 000011
【００８４】
【数１１】
0003683363.tif 000012
【００８５】
【数１２】
0003683363.tif 000013
【００８６】
【数１３】
0003683363.tif 000014
【００８７】
【数１４】
0003683363.tif 000015
【００８８】
【数１５】
0003683363.tif 000016
なお、上記数式１５におけるｄ’は、例えば「２」とする。
【００８９】
次に上述のようにして算出するＰＩＤ補正係数ＫＬＡＦと適応補正係数ＫＳＴＲとを切り換えて、すなわちＰＩＤ制御と適応制御とを切り換えて、フィードバック補正係数ＫＦＢを算出する手法を説明する。
【００９０】
図９は、図３のステップＳ１０におけるフィードバック補正係数ＫＦＢの算出処理のフローチャートである。
【００９１】
先ずステップＳ４０１では、図３の処理の前回実行時がオープンループ制御であったか（ＦＫＬＡＦＲＥＳＥＴ＝１であったか）否かを判別し、オープンループ制御でなかったときは、目標当量比ＫＣＭＤの変化量ＤＫＣＭＤ（＝｜ＫＣＭＤ（ｋ）−ＫＣＭＤ（ｋ−１）｜）が基準値ＤＫＣＭＤＲＥＦより大きいか否かを判別する（ステップＳ４０２）。そして、前回がオープンループ制御だったとき又は、前回がフィードバック制御であり且つ変化量ＤＫＣＭＤが基準値ＤＫＣＭＤＲＥＦより大きいときは、低応答のフィードバック制御を実行すべき領域（以下「低応答Ｆ／Ｂ領域」という）と判定し、カウンタＣを「０」にリセットするとともに（ステップＳ４０３）、低応答のフィードバック制御処理（後述）を行い（ステップＳ４１１）、本処理を終了する。
【００９２】
なお、前回がオープンループ制御であったときに、低応答Ｆ／Ｂ領域と判定するのは、例えばフュエルカット状態からの復帰時のような場合には、ＬＡＦセンサの検出遅れなどから、必ずしも検出値が真の値を示すとは限らないため、制御が不安定となる可能性があるからである。また、同様の理由で、目標当量比ＫＣＭＤの変化量ＤＫＣＭＤが大きいとき、例えばスロットル全開増量状態から復帰したとき、リーンバーン制御から理論空燃比制御に復帰したとき等においても低応答Ｆ／Ｂ領域と判定している。
【００９３】
ステップＳ４０１及びＳ４０２の答がともに否定（ＮＯ）のとき、すなわち前回もフィードバック制御であり、かつ目標当量比ＫＣＭＤの変化量ＤＫＣＭＤが基準値ＤＫＣＭＤＲＥＦ以下のときは、カウンタＣを「１」だけインクリメントして（ステップＳ４０４）、カウンタＣの値が所定値ＣＲＥＦ（例えば５）以下か否かを判別し（ステップＳ４０５）、Ｃ≦ＣＲＥＦであるときは前記ステップＳ４１１を実行し、一方Ｃ＞ＣＲＥＦであるときはステップＳ４０６へ進む。ステップＳ４０６ではＦ／Ｂ判別処理、すなわち高応答のフィードバック制御を実行すべき領域（以下「高応答Ｆ／Ｂ領域」という）であるか、低応答Ｆ／Ｂ領域であるかを、後述の処理により判別する。次にステップＳ４０７では、ステップＳ４０６で判別された制御領域が、高応答Ｆ／Ｂ領域であるか否かを判別し、高応答Ｆ／Ｂ領域でないときは前記ステップＳ４１１を実行し、一方高応答フィードバック制御領域であるときは高応答のフィードバック制御処理（後述）を行って適応補正係数ＫＳＴＲを算出し（ステップＳ４０８）、フィードバック補正係数ＫＦＢをＫＳＴＲ値に設定して（ステップＳ４１０）、本処理を終了する。
【００９４】
また、カウンタＣの値がＣＲＥＦ値以下のときに低応答Ｆ／Ｂ領域であるとするのは、オープンループ制御からの復帰直後や目標当量比ＫＣＭＤが大きく変化した直後は、燃料の燃焼が完了するまでの遅れやＬＡＦセンサの検出遅れの影響を吸収できないからである。
【００９５】
次に図９のステップＳ４０６における、空燃比フィードバック制御の応答速度を選択するための処理を説明する。図１０及び１１はこのフィードバック処理の判別処理のフローチャートである。
【００９６】
まずステップＳ５０１で、ＬＡＦセンサ１７の応答が劣化したか否かを判別し、劣化していないときはステップＳ５０２へ進む。
【００９７】
次にステップＳ５０２でＬＡＦセンサ１７の異常が検出されたか否かを判別し、異常が検出されていないときはクランク角度位置センサ１４（気筒判別センサ、ＴＤＣセンサ、ＣＲＫセンサ）の異常が検出されているか否かを判別し（ステップＳ５０３）、いずれのセンサの異常も検出されていないときは弁開度θＴＨセンサ４の異常が検出されているか否かを判別し（ステップＳ５０４）、異常が検出されていないときはバルブタイミング機構の異常が検出されているか否かを判別する（ステップＳ５０５）。
【００９８】
その結果、ステップＳ５０１〜Ｓ５０５で劣化または異常が検出されていないときはステップＳ５０６へ進み、いずれか１つでも劣化または異常が検出されたときは低応答Ｆ／Ｂ領域であると判定して（ステップＳ５２０）、本処理を終了する。
【００９９】
このように、各センサの異常時に低応答のフィードバック制御を選択するのは、空燃比制御性の悪化を防止するためである。
【０１００】
次いでステップＳ５０６では、エンジン水温ＴＷが所定水温ＴＷＳＴＲＯＮより低いか否かを判別し（ステップＳ５０４）、ＴＷ≧ＴＷＳＴＲＯＮであるときはエンジン水温ＴＷが所定水温ＴＷＳＴＲＯＦＦ（例えば１００℃）以上であるか否かを判別し（ステップＳ５０７）、ＴＷ≧ＴＷＳＴＲＯＦＦであるときは吸気温ＴＡが所定温度ＴＡＳＴＲＯＦＦ以上であるか否かを判別する（ステップＳ５０８）。その結果、ステップＳ５０７でＴＷ＜ＴＷＳＴＲＯＦＦであるとき、及びステップＳ５０７でＴＷ≧ＴＷＳＴＲＯＦＦであり、かつステップＳ５０８でＴＡ＜ＴＡＳＴＲＯＦＦであるときは、いずれもステップＳ５０９へ進んでエンジン回転数ＮＥが所定回転数ＮＥＳＴＲＬＭＴ以上であるか否かを判別し、ＮＥ＜ＮＥＳＴＲＬＭＴであるときは、エンジンがアイドル状態か否かを判別し（ステップＳ５１０）、アイドル状態でないときは、トラクションコントロールシステム（ＴＣＳ）の作動復帰（トラクション制御の実行終了）後の時間を計測するタイマが作動中か否かを判別する（ステップＳ５１１）。なお、このタイマはダウンカウントタイマで構成され、ＴＣＳ作動中にセットされて、ＴＣＳ作動から復帰した時点からカウントダウンが開始される。
【０１０１】
ステップＳ５１１で判別の結果、ＴＣＳ作動復帰後のタイマが作動中でないときは、エンジンのフューエルカット状態から復帰した（フューエルカットを終了した）後のタイマが作動中か否かを判別する（ステップＳ５１２）。ここで、エンジンのフューエルカットは、エンジンの所定減速状態で実行され、その実行中はフューエルカットフラグＦＦＣが「１」に設定される。なお、このタイマもダウンカウントタイマで構成され、エンジンのフューエルカット中にセットされて、フューエルカット状態から復帰した時点でカウントダウンが開始される。
【０１０２】
以上の判別の結果、ステップＳ５０６若しくはステップＳ５０９〜Ｓ５１２のいずれかの答が肯定（ＹＥＳ）のとき、及びステップＳ５０７とＳ５０８の答が共に肯定（ＹＥＳ）のときは、低応答Ｆ／Ｂ領域であると判定して（ステップＳ５２０）、本処理を終了する。また、ステップＳ５１２の答えが否定（ＮＯ）のときはステップＳ５５０に進む。
【０１０３】
ステップＳ５５０では、エンジンが失火しているか否かの判断を行う。失火の判断の方法としては、例えば、本出願人により出願されている特開平６−１４６９９８などにより公知である、エンジンの回転変動が所定値を越えた場合にエンジンに失火が発生していると判断する方法がある。ステップＳ５５０でエンジンが失火しているときは前記ステップＳ５２０へ進む一方、失火していないときはステップＳ５１３へ進む。
【０１０４】
ステップＳ５１３では、バルブタイミングの高速用／低速用の切換指示があったか否かを判別し、切換指示がないときは、エンジンの点火時期を大量に遅角（リタード）させる制御を実行したか否かを判別し（ステップＳ５１４）、実行していないときはステップＳ５１６へ進む。前記ステップＳ５１３，Ｓ５１４のいずれかで、その答えが肯定（ＹＥＳ）であるときはダウンカウントタイマｔｍＫＣＭＤＣＨＮＧに所定期間ＴＣＨＮＧをセットしてスタートさせ（ステップＳ５１５）、低応答Ｆ／Ｂ領域と判定する。ここで所定期間ＴＣＨＮＧは、バルブタイミング切換指令が有った後、あるいは大量の点火時期遅角制御を実行した後に、燃焼状態が安定するのに十分な期間に設定する。
【０１０５】
ステップＳ５１６ではこのダウンカウントタイマｔｍＫＣＭＤＣＨＮＧの値が０に達していないか否かを判別し、未だ０に達していないときは低応答Ｆ／Ｂ領域であると判定し（ステップＳ５２０）、一方、０に達しているときは検出当量比ＫＡＣＴが所定上下限値ＫＡＣＴＬＭＴＨ（例えば１．０１）、ＫＡＣＴＬＭＴＬ（例えば０．９９）の範囲内にあるか否かを判別し（ステップＳ５１７，Ｓ５１８）、ＫＡＣＴ＜ＫＡＣＴＬＭＴＬ又はＫＡＣＴ＞ＫＡＣＴＬＭＴＨであるときは、前記ステップＳ５２０に進み、一方、ＫＡＣＴＬＭＴＬ≦ＫＡＣＴ≦ＫＡＣＴＬＭＴＨであるときは、高応答Ｆ／Ｂ領域と判定して（ステップＳ５１９）、本処理を終了する。
【０１０６】
ステップＳ５１７，Ｓ５１８により、低応答フィードバック制御から高応答フィードバック制御への切換は、検出当量比ＫＡＣＴが１．０付近の値のときに行われ、切換を滑らかに行うことができ、制御の安定性を確保することができる。ここで、ステップＳ５０６〜Ｓ５１６の各判別の結果によっては、低応答フィードバック制御を選択することとした理由は、以下の通りである。
【０１０７】
まず、低水温時（ＴＷ＜ＴＷＳＴＲＯＮ）は、燃料の霧化悪化や機関のフリクション増大により燃焼が安定せず、失火などを生じるおそれがあり、安定した検出当量比ＫＡＣＴを得られないからである。また、エンジン水温が高温（ＴＷ≧ＴＷＳＴＲＯＦＦ）で、かつ高吸気温時（ＴＡ≧ＴＡＳＴＲＯＦＦ）は、燃料供給ライン中のベーパロック発生により、燃料噴射弁６による実噴射量が減少するおそれがあるからである。さらに、高回転時（ＮＥ≧ＮＥＳＴＲＬＭＴ）は、ＥＣＵの演算時間が不足しがちであるとともに、燃焼も安定しないからである。
【０１０８】
また、エンジンのアイドル時は、運転状態がほぼ安定しており、高応答のフィードバック制御を必要としないからである。さらに、駆動輪スリップ回避のためのトルク減少を目的としたトラクション制御の実行による一時的な点火時期の遅角制御又はフューエルカット制御から復帰した後、所定期間は一時的に燃焼状態が不安定になり、高応答のフィードバック制御ではかえって空燃比変動を大きくしてしまうおそれがあるからである。なお、フューエルカット復帰後所定期間も同様の理由により、低応答のフィードバック制御を選択する。同様にエンジンが失火している場合には明らかに燃焼状態が不安定であるため、低応答のフィードバック制御を選択する。さらに、バルブタイミング切換後所定期間ＴＣＨＮＧ内はバルブタイミング切換による吸排気弁の開弁時間の変化によって燃焼状態が急激に変化するからである。また、大量に点火時期が遅角された後所定期間ＴＣＨＮＧ内は、燃焼状態が安定せず、安定した検出当量比ＫＡＣＴを期待できないからである。
【０１０９】
ここで大量の点火時期の遅角制御を実行する場合として、上記トラクション制御以外に、自動変速機の変速時のトルクショック低減制御、エンジン高負荷時のノッキング回避制御、エンジン始動後の触媒温度の早期上昇等を目的とした点火時期制御を実行する場合等が挙げられる。
【０１１０】
次に本実施形態に係る高応答／低応答フィードバック制御について説明する。
【０１１１】
図１２は、図９のステップＳ４０８における高応答フィードバック制御処理のフローチャートである。まずステップＳ６０１で、適応補正係数ＫＳＴＲによるフィードバック制御を実行すべき領域（以下「適応制御領域」という）であることを「１」で示すフラグＦＫＳＴＲが前回「０」であったか否かを判別する。その結果、前回がＦＫＳＴＲ＝１であるときは直ちにステップＳ６０３に進み、図１４に示す処理により適応補正係数ＫＳＴＲを算出してフラグＦＫＳＴＲを「１」にセットし、本処理を終了する。
【０１１２】
一方、前回がＦＫＳＴＲ＝０であったときは、適応パラメータ（ゲインを決定するスカラ量）ｂ０を、ＰＩＤ補正係数の前回値ＫＬＡＦ（ｋ−１）で除算した値に置き換えて（ステップＳ６０２）、ステップＳ６０３以下を実行する。
【０１１３】
ステップＳ６０２で、適応パラメータｂ０をｂ０／ＫＬＡＦ（ｋ−１）に置き換えることにより、ＰＩＤ制御から適応制御への切換をより滑らかに行うことができ、制御の安定性を確保することができる。これは、以下のような理由による。前記数式１５のｂ０をｂ０／ＫＬＡＦ（ｋ−１）に置き換えると、数式１６の第１式に示すようになるが、第１式の第１項はＰＩＤ制御実行中はＫＳＴＲ（ｋ）＝１としているので、１となる。従って、適応制御開始当初のＫＳＴＲ（ｋ）値は、ＫＬＡＦ（ｋ−１）に等しくなり、補正係数値が滑らかに切り換えられることになる。
【０１１４】
【数１６】
0003683363.tif 000017
図１３は、図９のステップＳ４１１における低応答フィードバック制御処理のフローチャートである。ステップＳ６２１で前回フラグＦＫＳＴＲが「１」にセットされているか否かを判別する。その結果、前回がＦＫＳＴＲ＝０であったときは、直ちに前述した図７の処理によりＰＩＤ補正係数ＫＬＡＦを算出し（ステップＳ６２３）、フラグＦＫＳＴＲを「０」にセットして（ステップＳ６２４）、フィードバック補正係数ＫＦＢをステップＳ６２３で算出したＰＩＤ補正係数ＫＬＡＦ（ｋ）に設定して（ステップＳ６２５）、本処理を終了する。
【０１１５】
一方、前回はＦＫＳＴＲ＝１であったときは、ＰＩＤ制御の積分項の前回値ｋＡＬＦＩ（ｋ−１）を、適応補正係数の前回値ＫＳＴＲ（ｋ−１）に設定して（ステップＳ６２２）、ステップＳ６２３以下を実行する。
【０１１６】
ここで、適応制御からＰＩＤ制御への切換時（前回ＦＫＳＴＲ＝１で今回が低応答Ｆ／Ｂ領域であるとき）は、ＰＩＤ制御の積分項ＫＬＡＦＩが急変する可能性があるため、ステップＳ６２２により、ＫＬＡＦ（ｋ−１）＝ＫＳＴＲ（ｋ−１）としている。これにより、適応補正係数ＫＳＴＲ（ｋ−１）とＰＩＤ補正係数ＫＬＡＦ（ｋ）との差を小さくとどめ、切換を滑らかにして制御の安定性を確保することができる。
【０１１７】
図１４は、図１２のステップＳ６０３におけるＫＳＴＲ演算処理のフローチャートである。
【０１１８】
先ずステップＳ７０１及びＳ７０２では、下記数式１７により目標空燃比係数ＫＣＭＤ及び検出当量比ＫＡＣＴの移動平均値ＫＣＭＤＳＴＲ及びＫＡＣＴＳＴＲを算出するとともに下記数式１８により、平均検出当量比ＫＡＣＴＳＴＲを平均目標当量比ＫＣＭＤＳＴＲで正規化する。
【０１１９】
【数１７】
0003683363.tif 000018
【０１２０】
【数１８】
0003683363.tif 000019
上記式１８による正規化により、前記数式１５の目標当量比は常に「１．０」となり下記数式１９のように変形される。
【０１２１】
【数１９】
0003683363.tif 000020
そして、前記数式１０及び１３のｙ（ｋ）として、ＫＡＣＴＳＴＲ（ｋ）を適用して、後述する図１５の処理により適応パラメータを算出する（ステップＳ７０３）とともに、数式１９に数式１８で算出したＫＡＣＴＳＴＲ（ｋ）を適用して、適応補正係数ＫＳＴＲ（ｋ）を算出し（ステップＳ７０４）、ステップＳ７０５に進む。
【０１２２】
ステップＳ７０５及びＳ７０６では、後述する図１６及び１７に示すＣＳＴＲＲＥＦ算出処理及びＫＳＴＲ決定処理を実行し、続くステップＳ７０７〜Ｓ７１０ではステップＳ７０６で算出した適応補正係数ＫＳＴＲ（ｋ）のリミット処理を行う。すなわち、ＫＳＴＲ（ｋ）値が所定上限値ＫＳＴＲＬＭＴＨより大きいときは、ＫＳＴＲ（ｋ）＝ＫＳＴＲＬＭＴＨとし、ＫＳＴＲ（ｋ）値が所定下限値ＫＳＴＲＬＭＴＬより小さいときは、ＫＳＴＲ（ｋ）＝ＫＳＴＲＬＭＴＬとする。リミット処理実行後、本処理を終了する。
【０１２３】
図１５は、図１４のステップＳ７０３における適応パラメータ算出処理のフローチャートである。
【０１２４】
ステップＳ７１１では、前記数式１１によりθハット（ｋ）の各要素である適応パラメータｂ０（ｋ），ｒ１（ｋ），ｒ２（ｋ），ｒ３（ｋ）及びｓ０（ｋ）の算出を行う。次いで下記数式２０にこれらのパラメータを適用して、適応補正係数ＫＳＴＲの積分項相当パラメータＫＳＴＲＣＨＫを算出する（ステップＳ７１２）。
【０１２５】
【数２０】
0003683363.tif 000021
そして、ＫＳＴＲＣＨＫ値が所定上限値ＫＳＴＲＣＬＭＨより大きいか否か、及び所定下限値ＫＳＴＲＣＬＭＬより小さいか否かを判別し（ステップＳ７１３、Ｓ７１４）、いずれの答も否定（ＮＯ）のときは直ちに本処理を終了する一方、ＫＳＴＲＣＨＫ＞ＫＳＴＲＣＬＭＨ又はＫＳＴＲＣＨＫ＜ＫＳＴＲＣＬＭＬであるときは、各適応パラメータ及び数式１２で算出するゲイン行列Γを同一気筒に対応する前回値（本実施形態では４気筒のエンジンであるとので、４回前の値）に保持して（ステップＳ７１５、Ｓ７１６）、本処理を終了する。
【０１２６】
ここで、数式２０により算出されるＫＳＴＲＣＨＫ値が積分項相当パラメータとして用いることができる理由を説明する。適応補正係数ＫＳＴＲは、数式１９により算出されるが、この式に含まれる適応パラメータｓ０，ｒ１〜ｒ３，ｂ０は、すべてフィードバック制御の偏差の積分値に比例するため（数式１１参照）、数式１９から単純に積分項を分離することはできない。そこで、数式１９において、ＫＳＴＲ（ｋ−４）＝ＫＳＴＲ（ｋ−８）＝ＫＳＴＲ（ｋ−１２）＝ＫＳＴＲ０と近似し、偏差ＤＫＡＣＴ＝ＫＡＣＴＳＴＲ−１．０と定義すると、数式２１が得られる。
【０１２７】
【数２１】
0003683363.tif 000022
数式２１の右辺第２項（−ｓ０×ＤＫＡＣＴ／ｂ０）は比例項とみなすことができるので、数式２１の右辺から比例項を除いたものが積分項に相当するもの、すなわち積分項相当パラメータＫＳＴＲＣＨＫとし、さらにＫＳＴＲ０＝ＫＳＴＲＣＨＫと近似すると、数式２２が得られる。
【０１２８】
【数２２】
0003683363.tif 000023
これをＫＳＴＲＣＨＫについて解くと、数式２０が得られる。
【０１２９】
図１８は、このようして数式２０により算出される積分項相当パラメータＫＳＴＲＣＨＫを用いて、図１５のステップＳ７１３〜Ｓ７１６のリミット処理を行うことによる効果を説明するための図であり、時刻ｔ１からｔ２の間に外乱が加わった場合を示す。同図（ａ）はステップＳ７１３〜Ｓ７１６のリミット処理を行わない場合を示し、同図（ｂ）は行った場合を示す。この図から明らかなように、本実施形態によれば、適応補正係数ＫＳＴＲの積分項相当パラメータＫＳＴＲＣＨＫについてもリミット処理が行われるので、外乱が無くなった後において空燃比（ＫＡＣＴＳＴＲ）を元の状態に迅速に収束させることができる。
【０１３０】
図１６は、図１７で適応補正係数ＫＳＴＲのなまし式（数式２４）に適用するなまし係数ＣＳＴＲＲＥＦを算出する処理のフローチャートである。
【０１３１】
ステップＳ７２１では、下記数式によりなまし係数ＣＳＴＲＲＥＦを算出する。
【０１３２】
【数２３】
ＣＳＴＲＲＥＦ＝ＣＳＴＲＲＥＦ−ＤＣＲＥＦ
ここでＤＣＲＥＦは、所定減算値である。なまし係数ＣＳＴＲＲＥＦは、エンジンが空燃比フィードバック領域以外にあるとき、所定値に初期化されており、適応フィードバック制御開始当初は上記数式１８により、以下に述べる下限値ＣＳＴＲＬに達するまで漸減される。
【０１３３】
続くステップＳ７２２では、フュエルカット中であることを「１」で示すフュエルカットフラグＦＦＣが「１」か否かを判別し、ＦＦＣ＝１であるときは、下限値ＣＳＴＲＬをフュエルカット時用の所定値ＣＦＣＲＥＦＬに設定して（ステップＳ７２４）、ステップＳ７２７に進む。ＦＦＣ＝０であるときは、アイドル状態であることを「１」で示すアイドルフラグＦＩＤＬＥが「１」か否かを判別し（ステップＳ７２３）、ＦＩＬＤＬＥ＝１であるときは、下限値ＣＳＴＲＬをアイドル用の所定値ＣＩＤＬＲＥＦＬに設定して（ステップＳ７２６）、ステップＳ７２７に進む。ここで、フュエルカット時用の所定値ＣＦＣＲＥＦＬとアイドル用の所定値ＣＩＤＬＲＥＦＬとは、ＣＦＣＲＥＦＬ＞ＣＩＤＬＲＥＦＬなる関係を有する。
【０１３４】
ステップＳ７２３でＦＩＬＤＬＥ＝０であるときは、エンジン回転数ＮＥに応じてＣＳＴＲＬＴＢＬテーブルを検索して、所定値ＣＳＴＲＴＢＬを算出し、下限値ＣＳＴＲＬを該所定値ＣＳＴＲＴＢＬに設定して（ステップＳ７２５）、ステップＳ７２７に進む。
【０１３５】
ステップＳ７２７では、なまし係数ＣＳＴＲＲＥＦが下限値ＣＳＴＲＬ以上か否かを判別し、ＣＳＴＲＲＥＦ≧ＣＳＴＲＬであるときは直ちに、またＣＳＴＲＲＥＦ＜ＣＳＴＲＬであるときは、ＣＳＴＲＲＥＦ＝ＣＳＴＲＬとして（ステップＳ７２８）、本処理を終了する。
【０１３６】
図１７は、ＫＳＴＲ（ｋ）値のなまし値ＫＳＴＲＤＬＹを算出し、スロットル弁開度θＴＨに応じて、ＫＳＴＲ（ｋ）値又はＫＳＴＲＤＬＹ値のいずれかを選択する処理のフローチャートである。
【０１３７】
ステップＳ７４１では、下記数式１９によりなまし値ＫＳＴＲＤＬＹを算出する。
【０１３８】
【数２４】
0003683363.tif 000024
ここで、ＡはＣＳＴＲＲＥＦ値より大なる所定値、右辺のＫＳＴＲＤＬＹは、前回算出値である。
【０１３９】
続くステップＳ７４２では、スロットル弁開度θＴＨが所定開度θＴＨＦＣ以上か否かを判別し、θＴＨ≧θＴＨＦＣであるときは、ＫＳＴＲ＝ＫＳＴＲ（ｋ）とする一方（ステップＳ７４４）、θＴＨ＜θＴＨＦＣであるときは、ＫＳＴＲ＝ＫＳＴＲＤＬＹとして（ステップＳ７４３）、本処理を終了する。
【０１４０】
図９〜１３の処理によれば、少なくともエンジンの燃焼状態が非定常状態である期間は、適応制御からＰＩＤ制御に空燃比フィードバック制御が切換わるので、燃焼非定常状態においても、空燃比制御の十分な正確性及び安定性を確保し、良好な運転性及び排気ガス特性を維持することができる。
【０１４１】
【発明の効果】
以上詳述したように本発明によれば、適応制御器を用いて算出される空燃比制御量の積分項に相当する積分項相当パラメータが適応パラメータに基づいて算出され、該積分項相当パラメータの値が所定リミット範囲内となるようにリミット処理が行われるので、一時的に大きな外乱が加わった場合でもその外乱が無くなった後の制御の収束性を向上させることができる。
【図面の簡単な説明】
【図１】本発明の実施の一形態にかかる内燃機関及びその制御装置の構成を示す図である。
【図２】本実施形態における空燃比制御手法を説明するための機能ブロック図である。
【図３】ＬＡＦセンサ出力に基づいて空燃比補正係数を算出する処理のフローチャートである。
【図４】最終目標空燃比係数（ＫＣＭＤＭ）算出処理のフローチャートである。
【図５】目標空燃比係数（ＫＣＭＤ）算出処理のフローチャートである。
【図６】ＬＡＦフィードバック領域判別処理のフローチャートである。
【図７】ＰＩＤ補正係数（ＫＬＡＦ）算出処理のフローチャートである。
【図８】適応補正係数（ＫＳＴＲ）の算出処理を説明するためのブロック図である。
【図９】フィードバック補正係数（ＫＦＢ）の算出処理のフローチャートである。
【図１０】フィードバック処理判別処理のフローチャートである。
【図１１】フィードバック処理判別処理のフローチャートである。
【図１２】高応答フィードバック制御処理を示すフローチャートである。
【図１３】低応答フィードバック制御処理を示すフローチャートである。
【図１４】ＫＳＴＲ演算処理のフローチャートである。
【図１５】適応パラメータの算出処理のフローチャートである。
【図１６】図１７の処理で用いるなまし係数（ＣＳＴＲＲＥＦ）を算出する処理のフローチャートである。
【図１７】適応補正係数（ＫＳＴＲ）のなまし演算等を行う処理のフローチャートである。
【図１８】一時的に大きな外乱が加わった場合の制御パラメータの推移を示す図である。
【図１９】従来技術の問題点を説明するための図である。
【符号の説明】
１  内燃機関（本体）
２  吸気管
５  電子コントロールユニット（ＥＣＵ）
１２  燃料噴射弁
１６  排気管
１７  広域空燃比センサ
【図１】
0003683363.tif 000025
【図２】
0003683363.tif 000026
【図３】
0003683363.tif 000027
【図４】
0003683363.tif 000028
【図５】
0003683363.tif 000029
【図６】
0003683363.tif 000030
【図７】
0003683363.tif 000031
【図８】
0003683363.tif 000032
【図９】
0003683363.tif 000033
【図１０】
0003683363.tif 000034
【図１１】
0003683363.tif 000035
【図１２】
0003683363.tif 000036
【図１３】
0003683363.tif 000037
【図１４】
0003683363.tif 000038
【図１５】
0003683363.tif 000039
【図１６】
0003683363.tif 000040
【図１７】
0003683363.tif 000041
【図１８】
0003683363.tif 000042
【図１９】
0003683363.tif 000043