以下、本発明の実施形態について図面を参照しながら詳述する。
(第1の実施の形態)
図1は本発明の第1の実施の形態にかかる内燃機関(以下「エンジン」という)及びその制御装置の構成を示す図である。同図中、1は各気筒に吸気弁及び排気弁(図示せず)を各1対ずつ設けたDOHC直列4気筒のエンジンである。
エンジン1の吸気管2は分岐部(吸気マニホルド)11を介してエンジン1の各気筒の燃焼室に連通する。吸気管2の途中にはスロットル弁3が配されている。スロットル弁3にはスロットル弁開度(θTH)センサ4が連結されており、スロットル弁開度θTHに応じた電気信号を出力して電子コントロールユニット(以下「ECU」という)5に供給する。吸気管2には、スロットル弁3をバイパスする補助空気通路6が設けられており、該通路6の途中には補助空気量制御弁7が配されている。補助空気量制御弁7は、ECU5に接続されており、ECU5によりその開弁量が制御される。
吸気管2のスロットル弁3の上流側には吸気温(TA)センサ8が装着されており、その検出信号がECU5に供給される。吸気管2のスロットル弁3と吸気マニホルド11の間には、チャンバ9が設けられており、チャンバ9には吸気管内絶対圧(PBA)センサ10が取り付けられている。PBAセンサ10の検出信号はECU5に供給される。
エンジン1の本体にはエンジン水温(TW)センサ13が装着されており、その検出信号がECU5に供給される。ECU5には、エンジン1のクランク軸(図示せず)の回転角度を検出するクランク角度位置センサ14が接続されており、クランク軸の回転角度に応じた信号がECU5に供給される。クランク角度位置センサ14は、エンジン1の特定の気筒の所定クランク角度位置で信号パルス(以下「CYL信号パルス」という)を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点(TDC)に関し所定クランク角度前のクランク角度位置で(4気筒エンジンではクランク角180度毎に)TDC信号パルスを出力するTDCセンサ及びTDC信号パルスより短い一定クランク角周期(例えば30度周期)で1パルス(以下「CRK信号パルス」という)を発生するCRKセンサから成り、CYL信号パルス、TDC信号パルス及びCRK信号パルスがECU5に供給される。これらの信号パルスは、燃料噴射時期、点火時期等の各種タイミング制御及びエンジン回転数NEの検出に使用される。
吸気マニホルド11の吸気弁の少し上流側には、各気筒毎に燃料噴射弁12が設けられており、各噴射弁は図示しない燃料ポンプに接続されているとともにECU5に電気的に接続されて、ECU5からの信号により燃料噴射時期及び燃料噴射時間(開弁時間)が制御される。エンジン1の点火プラグ(図示せず)もECU5に電気的に接続されており、ECU5により点火時期θIGが制御される。
排気管16は分岐部(排気マニホルド)15を介してエンジン1の燃焼室に接続されている。排気管16には分岐部15が集合する部分の直ぐ下流側に、広域空燃比センサ(以下「LAFセンサ」という)17が設けられている。さらにLAFセンサ17の下流側には直下三元触媒19及び床下三元触媒20が配されており、またこれらの三元触媒19及び20の間には酸素濃度センサ(以下「O2センサ」という)18が装着されている。三元触媒19、20は、排気ガス中のHC,CO,NOx等の浄化を行う。
LAFセンサ17は、ローパスフィルタ22を介してECU5に接続されており、排気ガス中の酸素濃度(空燃比)に略比例した電気信号を出力し、その電気信号をECU5に供給する。O2センサ18は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。O2センサ18は、ローパスフィルタ23を介してECU5に接続されており、その検出信号はECU5に供給される。
排気還流機構30は、吸気管2のチャンバ9と排気管16とを接続する排気還流路31と、排気還流路31の途中に設けられ、排気還流量を制御する排気還流弁(EGR弁)32と、EGR弁32の弁開度を検出し、その検出信号をECU5に供給するリフトセンサ33とから成る。EGR弁32は、ソレノイドを有する電磁弁であり、ソレノイドはECU5に接続され、その弁開度がECU5からの制御信号によりリニアに変化させることができるように構成されている。
エンジン1は、吸気弁及び排気弁のバルブタイミングを、エンジンの高速回転領域に適した高速バルブタイミングと、低速回転領域に適した低速バルブタイミングとの2段階に切換可能なバルブタイミング切換機構60を有する。このバルブタイミングの切換は、弁リフト量の切換も含み、さらに低速バルブタイミング選択時は2つの吸気弁のうちの一方を休止させて、空燃比を理論空燃比よりリーン化する場合においても安定した燃焼を確保するようにしている。
バルブタイミング切換機構60は、バルブタイミングの切換を油圧を介して行うものであり、この油圧切換を行う電磁弁及び油圧センサがECU5接続されている。油圧センサの検出信号はECU5に供給され、ECU5は電磁弁を制御してバルブタイミングの切換制御を行う。
また、ECU5には、大気圧を検出する大気圧(PA)センサ21が接続されており、その検出信号がECU5に供給される。
ECU5は、上述した各種センサからの入力信号波形を整形して電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変化する等の機能を有する入力回路と、中央処理回路(CPU)と、該CPUで実行される各種演算プログラムや後述する各種マップ及び演算結果等を記憶するROM及びRAMからなる記憶回路と、燃料噴射弁12等の各種電磁弁や点火プラグに駆動信号を出力する出力回路とを備えている。
ECU5は、上述の各種エンジン運転パラメータ信号に基づいて、LAFセンサ17及びO2センサ18の出力に応じたフィードバック制御運転領域やオープン制御運転領域等の種々のエンジン運転状態を判別するとともに、エンジン運転状態に応じ、下記数式1により燃料噴射弁12の燃料噴射時間TOUTを演算し、この演算結果に基づいて燃料噴射弁12を駆動する信号を出力する。
[数1]
TOUT=TIMF×KTOTAL×KCMDM×KFB
図2は上記数式1による燃料噴射時間TOUTの算出手法を説明するための機能ブロック図であり、これを参照して本実施の形態における燃料噴射時間TOUTの算出手法の概要を説明する。なお、本実施の形態ではエンジンへの燃料供給量は燃料噴射時間として算出されるが、これは噴射される燃料量に対応するので、TOUTを燃料噴射量若しくは燃料量とも呼んでいる。
図2においてブロックB1は、吸入空気量に対応した基本燃料量TIMFを算出する。この基本燃料量TIMFは、基本的にはエンジン回転数NE及び吸気管内絶対圧PBAに応じて設定されるが、スロットル弁3からエンジン1の燃焼室に至る吸気系をモデル化し、その吸気系モデルに基づいて吸入空気の遅れを考慮した補正を行うことが望ましい。その場合には、検出パラメータとしてスロットル弁開度θTH及び大気圧PAをさらに用いる。
ブロックB2〜B4は乗算ブロックであり、ブロックの入力パラメータを乗算して出力する。これらのブロックにより、上記数式1の演算が行われ、ブロックB4の出力として、燃料噴射量TOUTが得られる。
ブロックB9は、エンジン水温TWに応じて設定されるエンジン水温補正係数KTW,排気還流実行中に排気還流量に応じて設定されるEGR補正係数KEGR等のフィードフォワード系補正係数をすべて乗算することにより、補正係数KTOTALを算出し、ブロックB2に入力する。
ブロックB21は、エンジン回転数NE、吸気管内絶対圧PBA等に応じて目標空燃比係数KCMDを決定し、ブロックB22に入力する。目標空燃比係数KCMDは、空燃比A/Fの逆数、すなわち燃空比F/Aに比例し、理論空燃比のとき値1.0をとるので、目標当量比ともいう。ブロックB22は、ローパスフィルタ23を介して入力されるO2センサ出力VMO2に基づいて目標空燃比係数KCMDを修正し、ブロックB18及びB23に入力する。ブロックB23は、KCMD値に応じて燃料冷却補正を行い最終目標空燃比係数KCMDMを算出し、ブロックB3に入力する。
ブロックB10は、ローパスフィルタ22を介して入力されるLAFセンサ出力値を、CRK信号パルスの発生毎にサンプリングし、そのサンプル値をリングバッファメモリに順次記憶し、エンジン運転状態に応じて最適のタイミングでサンプリングしたサンプル値を選択し(LAFセンサ出力選択処理)、ローパスフィルタブロックB16及びB17を介してブロックB18及びB19に入力する。このLAFセンサ出力選択処理は、サンプリングのタイミングによっては変化する空燃比を正確に検出できないこと、燃焼室から排出される排気ガスがLAFセンサ17に到達するまでの時間やLAFセンサ自体の反応時間がエンジン運転状態によって変化することを考慮したものである。
ブロックB18は、検出空燃比と目標空燃比との偏差に応じてPID制御によりPID補正係数KLAFを算出してブロックB20に入力する。ブロックB19は、検出空燃比に基づいて適応制御(Self Tuning Regulation)により適応補正係数KSTRを算出してブロックB20に入力する。この適応制御は、目標空燃比係数KCMD(KCMDM)を基本燃料量TIMFに乗算するだけでは、エンジンの応答遅れがあるため目標空燃比がなまされた検出空燃比になってしまうため、これを動的に補償し、外乱に対するタフネス性を向上させるために導入したものである。
ブロックB20は、入力されるPID補正係数KLAF及び適応補正係数KSTRのいずれか一方をエンジン運転状態に応じて選択し、フィードバック補正係数KFBとしてブロックB4に入力する。これは、エンジン運転状態によっては、適応制御ではなく従来のPID制御によって算出したKLAF値を用いた方がよいことを考慮したものである。
以上のように本実施の形態では、LAFセンサ17の出力の応じて通常のPID制御により算出したPID補正係数KLAFと、適応制御により算出した適応補正係数KSTRとを切り換えて、補正係数KFBとして上記数式1に適用して、燃料噴射量TOUTを算出している。適応補正係数KSTRにより、目標空燃比を変更したときの追従性及び外乱に対するタフネス性を向上させて、触媒の浄化率を向上させ、種々のエンジン運転状態において良好な排気ガス特性を得ることができる。
本実施の形態では、上述した図2の各ブロックの機能は、ECU5のCPUによる演算処理により実現されるので、この処理のフローチャートを参照して処理の内容を具体的に説明する。
図3は、LAFセンサ17の出力に応じてPID補正係数KLAF及び適応補正係数KSTRを算出する処理のフローチャートである。本処理はTDC信号パルスの発生毎に実行される。
ステップS1では、始動モードか否か、すなわちクランキング中か否かを判別し、始動モードのときは始動モードの処理へ移行する。始動モードでなければ、目標空燃比係数(目標当量比)KCMD及び最終目標空燃比係数KCMDMの算出(ステップS2)及びLAFセンサ出力選択処理を行う(ステップS3)とともに検出当量比KACTの演算を行う(ステップS4)。検出当量比KACTは、LAFセンサ17の出力を当量比に変換したものである。
次いでLAFセンサ17の活性化が完了したか否かの活性判別を行う(ステップS5)。これは、例えばLAFセンサ17の出力電圧とその中心電圧との差を所定値(例えば0.4V)と比較し、該差が所定値より小さいとき活性化が完了したと判別するものである。
次にエンジン運転状態がLAFセンサ17の出力に基づくフィードバック制御を実行する運転領域(以下「LAFフィードバック領域」という)にあるか否かの判別を行う(ステップS6)。これは、例えばLAFセンサ17の活性化が完了し、且つフュエルカット中やスロットル全開運転中でないとき、LAFフィードバック領域と判定するものである。この判別の結果、LAFフィードバック領域にないときはリセットフラグFKLAFRESETを「1」に設定し、LAFフィードバック領域にあるときは「0」とする。
続くステップS7では、リセットフラグFKLAFRESETが「1」か否かを判別し、FKLAFRESET=1のときは、ステップS8に進んでPID補正係数KLAF、適応補正係数KSTR及びフィードバック補正係数KFBをいずれも「1.0」に設定するとともに、PID制御の積分項KLAFIを「0」に設定して、本処理を終了する。また、FKLAFRESET=0のときは、フィードバック補正係数KFBの演算を行って(ステップS9)、本処理を終了する。
図4は、図3のステップS2における最終目標空燃比係数KCMDMを算出する処理のフローチャートである。
ステップS23では、エンジン回転数NE及び吸気管内絶対圧PBAに応じてマップを検索し、基本値KBSを算出する。なお、そのマップにはアイドル時用の値も設定されている。
続くステップS24では、エンジン始動直後のリーンバーン制御を実行すべき条件が成立するか否かを判別し、条件が成立したときは始動後リーンフラグFASTLEANを「1」に設定する一方、条件不成立のときは「0」とする。このリーンバーン制御実行条件は、例えばエンジン始動後所定期間内であって、エンジン水温TW、エンジン回転数NE及び吸気管内絶対圧PBAが所定範囲内にあるとき成立する。なお、始動直後のリーンバーン制御は、エンジン始動直後の触媒が未活性の状態でHCの排出量が増加すること防止する目的で行うものである。
次いでステップS25では、スロットル弁が全開(WOT)の状態か否かを判別し、全開のときはWOTフラグFWOTを「1」に設定し、全開でなければ「0」とする。次いで、エンジン水温TWに応じて増量補正係数KWOTを算出する(ステップS26)。このとき高水温時の補正係数KXWOTも算出する。
続くステップS27では、目標空燃比係数KCMDを算出し、次いで算出したKCMD値のリミット処理(所定上下限値の範囲内に入るようにする処理)を行う(ステップS28)。このステップS27の処理は図5を参照して後述する。
続くステップS29では、O2センサ18の活性化が完了しているか否かの判別を行い、活性化が完了したときは、活性フラグFMO2を「1」に設定し、完了していないときは、「0」とする。例えばエンジン始動後所定期間経過したとき、活性化完了と判定する。次いで、O2センサ18の出力VMO2に応じて目標空燃比係数KCMDの補正項DKCMDO2を算出する(ステップS32)。この処理は、O2センサ出力VMO2と基準値VREFMとの偏差に応じてPID制御により、補正項DKCMDO2を算出するものである。
続くステップS33では、次式により目標空燃比係数KCMDの補正を行う。
KCMD=KCMD+DKCMDO2
これにより、LAFセンサ17の出力のずれを補償するように目標空燃比係数KCMDを設定することができる。
続くステップS34では、算出したKCMD値に応じてKCMD−KETCテーブルを検索して補正係数KETCを算出し、次式により最終目標空燃比係数KCMDMを算出する。
KCMDM=KCMD×KETC
補正係数KETCは、KCMD値が増加し、燃料噴射量が増加するほど、噴射による燃料冷却効果が大きくなることを考慮して、その影響を補正するものであり、KCMD値が増加するほど大きな値に設定される。
次いで、KCMDM値のリミット処理を行うとともに(ステップS35)、ステップS33で得られたKCMD値をリングバッファに格納して(ステップS36)、本処理を終了する。
図5は、図4のステップS27におけるKCMD算出処理のフローチャートである。
先ずステップS51では、図4のステップS24で設定した始動後リーンフラグFASTLEANが「1」か否かを判別し、FASTLEAN=1であるときは、KCMDASTLEANマップを検索して、リーン制御時の中心空燃比に相当するリーン目標値KCMDASTLEANを算出する(ステップS52)。ここで、KCMDASTLEANマップは、エンジン水温TW及び吸気管内絶対圧PBAに応じてリーン目標値KCMDASTLEANが設定されたマップである。そして、目標空燃比係数KCMDをリーン目標値KCMDASTLEANに設定して(ステップS53)、ステップS61に進む。
一方前記ステップS51でFASTLAEAN=0であって、始動後リーンバーン制御実行条件が成立しないときは、エンジン水温TWが所定水温TWCMD(例えば80℃)より高いか否かを判別する。そしてTW>TWCMDが成立するときは、KCMD値を図4のステップS23で算出した基本値KBSに設定して(ステップS57)、ステップS61に進む。また、TW≦TWCMDが成立するときは、エンジン水温TW及び吸気管内絶対圧PBAに応じて設定されたマップを検索して、低水温用目標値KTWCMDを算出し(ステップS55)、基本値KBSがこのKTWCMD値より大きいか否かを判別する(ステップS56)。その結果KBS>KTWCMDであるときは、前記ステップS57に進み、KBS≦KTWCMDであるときは、基本値KBSを低水温用目標値KTWCMDに置き換えて(ステップS58)、ステップS61に進む。
ステップS61では、下記式によりKCMD値を補正してステップS62に進む。調整用加算項KCMDOFFSETは、エンジンの排気系やLAFセンサの特性のばらつきや経時変化の影響を反映させて、目標空燃比係数KCMDを微調整し、三元触媒のウィンドウゾーンの最適な位置をとるようにするためのパラメータである。この調整用加算項KCMDOFFSETは、LAFセンサ17の特性等により設定されるが、O2センサ18等の出力に応じて学習させることが望ましい。
KCMD=KCMD+KCMDOFFSET
ステップS62では、図4のステップS25で設定したWOTフラグFWOTが「1」か否かを判別し、FWOT=0であれば直ちに本処理を終了し、FWOT=1のときは、高負荷用のKCMD値の設定処理を行い(ステップS63)、本処理を終了する。この処理は、KCMD値を図4のステップS26で算出した高負荷用増量補正係数KWOT,KXWOTと比較し、KCMD値がこれらの係数値より小さいときは、KCMD値に補正係数KWOT又はKXWOTを乗算して補正を行うものである。
次に図3のステップS3におけるLAFセンサ出力選択処理について説明する。
エンジンの排気ガスは排気行程で排出されることから、多気筒エンジンの排気系集合部において空燃比の挙動を見ると、明らかにTDC信号パルスに同期している。したがって、LAFセンサ17により空燃比を検出するときもTDC信号パルスに同期して行う必要がある。ところが、センサ出力のサンプルタイミングによっては空燃比の挙動を正確に把握できない場合が生じる。例えば、TDC信号パルスに対して排気系集合部の空燃比が図6のようであるとき、ECU5が認識する空燃比は図7に示すように、サンプルタイミングによって全く異なる値となる。この場合、実際のLAFセンサの出力変化を可能な限り正確に把握できるタイミングでサンプリングすることが望ましい。
さらに、空燃比の変化は排気ガスのセンサまでの到達時間やセンサの反応時間によっても相違する。そのうち、センサまでの到達時間は排気ガス圧力、排気ガスボリューム等に依存して変化する。さらに、TDC信号パルスに同期してサンプリングすることはクランク角度に基づいてサンプリングすることになるので、必然的にエンジン回転数NEの影響を受ける。このように、空燃比の検出の最適なタイミングは、エンジン運転状態に大きく依存する。
そこで、本実施の形態では図8に示すように、CRK信号パルス(クランク角度30度毎に発生する)の発生毎にサンプリングしたLAFセンサ出力をリングバッファ(本実施の形態では18個の格納場所を有する)に順次格納し、最適タイミングの出力値(17回前の値から今回値までの中の最適の値)を検出当量比KACTに変換してフィードバック制御に使用するようにしている。
図9は、図3のステップS3におけるLAFセンサ出力選択処理のフローチャートある。
先ずステップS81では、エンジン回転数NEが所定回転数NESELVより低いか否かを判別し、NE<NESELVであるときは、吸気管内絶対圧PBAが所定圧PBASELV1以上か否かを判別し(ステップS82)、PBA≧PBASELV1であるときは、さらに吸気管内絶対圧PBAが所定圧PBASELV2(>PBASELV1)より低いか否かを判別する(ステップS83)。その結果、ステップS81〜S83のいずれかの答が否定(NO)のときは、タイミングを固定値とし(ステップS85)、その固定値に応じてリングバッファに格納したLAFセンサ出力VLAFを選択して(ステップS88)、本処理を終了する。
一方ステップS81〜S83の答がすべて肯定(YES)のときは、排気還流実行中か否かを判別する(ステップS84)。その結果排気還流実行中のときは、検出したエンジン回転数NE及び吸気管内絶対圧PBAに応じて、EGRオン用のタイミングマップを検索し(ステップS87)、排気還流を実行していないときはEGRオフ用のタイミングマップを検索し(ステップS86)、その検索結果に応じてリングバッファに格納したLAFセンサ出力VLAFを選択して(ステップS88)、本処理を終了する。
上記タイミングマップは、図10に示すように、エンジン回転数NE及び吸気管内絶対圧PBAに応じて、エンジン回転数NEが低いほど、あるいは吸気管内絶対圧PBAが高いほど早いクランク角度位置でサンプリングした値を選択するように設定されている。ここで、「早い」とは、前のTDC位置により近い位置でサンプリングした値(換言すれば古い値)を意味する。このように設定したのは、LAFセンサ出力は、図7に示したように、実際の空燃比の極大値又は極小値(以下「極値」という)に可能な限り近い位置でサンプリングするのが最良であるが、その極値、例えば最初のピーク値は、センサの反応時間を一定と仮定すれば、図11に示すように、エンジン回転数NEが低下するほど早いクランク角度位置で生じ、また、負荷が高いほど排気ガス圧力や排気ガスボリュームが増加し、排気ガスの流速が増してセンサへの到達時間が早まるからである。
以上のように、図9の処理によれば、エンジン運転状態に応じて最適なタイミングでサンプリングしたセンサ出力VLAFが選択されるので、空燃比の検出精度を向上させることができる。
なお、CRKセンサの異常を検出したときは、TDC信号パルスの発生時のLAFセンサ出力を採用する。
次に図3のステップS4における検出当量比KACTの算出処理について説明する。図12は、このKACT算出処理のフローチャートである。
先ずステップS101では、上述した図9の処理により選択されたセンサ出力選択値VLAFSELからセンサ出力中心値VCENTを減算して、テンポラリ値VLAFTEMPを算出する。ここで、中心値VCENTは、混合気の空燃比が理論空燃比のときのLAFセンサ出力値である。
次いで、VLAFTEMP値が負の値か否かを判別し(ステップS102)、VLAFTEMP<0であって、空燃比が理論空燃比よりリーン側のときは、リーン補正係数KLBLLを乗算して、VLAFTEMP値を補正する(ステップS103)一方、VLAFTEMP≧0であって、空燃比が理論空燃比よりリッチ側のときは、リッチ補正係数KLBLRを乗算して、VLAFTEMP値を補正する(ステップS104)。ここで、リーン補正係数KLBLL及びリッチ補正係数KLBLRは、LAFセンサに装着されたラベル抵抗の値に応じて算出されるばらつき補正用の補正係数である。ラベル抵抗値は、予めLAFセンサの特性を測定して、その結果に応じて設定されており、ECU5がその値を読み取って補正係数KLBLL,KLBLRを決定する。
続くステップS105では、テンポラリ値VLAFTEMPにテーブル中心値VOUTCNTを加算して、修正出力値VLAFEを算出し、次いでVLAFE値に応じてKACTテーブルを検索して、検出当量比KACTを算出する(ステップS106)。ここで、KACTテーブルは、修正出力値VLAFEに応じて検出当量比KACTを算出するためのテーブルであり、テーブル中心値VOUTCNTは理論空燃比(KACT=1.0)に対応する格子点データ(修正出力値)である。
以上の処理により、LAFセンサの特性ばらつきの影響を排除した検出当量比KACTを得ることができる。
図13は、図3のステップS6におけるLAFフィードバック領域判別処理のフローチャートである。
先ずステップS121では、LAFセンサ17が不活性状態にあるか否かを判別し、活性状態にあるときはフュエルカット中であることを「1」で示すフラグFFCが「1」か否かを判別し(ステップS122)、FFC=0であるときは、スロットル弁全開中であることを「1」で示すフラグFWOTが「1」か否かを判別し(ステップS123)、FWOT=1でないときは、図示しないセンサによって検出したバッテリ電圧VBATが所定下限値VBLOWより低いか否かを判別し(ステップS124)、VBAT≧VBLOWであるときは、理論空燃比に対応するLAFセンサ出力のずれ(LAFセンサストイキずれ)があるか否かを判別する。そして、ステップS121〜S125のいずれかの答が肯定(YES)のときは、LAFセンサ出力に基づくフィードバックを停止すべき旨を「1」で示すKLAFリセットフラグFKLAFRESETを「1」に設定する(ステップS132)。
一方、ステップS121〜S125の答がすべて否定(NO)のときは、KLAFリセットフラグFKLAFRESETを「0」に設定する(ステップS131)。
続くステップS133では、O2センサ18が不活性状態にあるか否かを判別し、活性状態にあるときは、エンジン水温TWが所定下限水温TWLOW(例えば0℃)より低いか否かを判別する(ステップS134)。そして、O2センサ18が不活性状態のときまたはTW<TWLOWであるときは、PID補正係数KLAFを現在値に維持すべきことを「1」で示すホールドフラグFKLAFHOLDを「1」に設定して(ステップS136)、本処理を終了する。一方、O2センサ18が活性状態にあり且つTW≧TWLOWであるときは、FKLAFHOLD=0として(ステップS135)、本処理を終了する。
次に図3のステップS9におけるフィードバック補正係数KFBの算出処理を説明する。
フィードバック補正係数KFBは、前述したようにエンジン運転状態に応じてPID補正係数KLAF又は適応補正係数KSTRに設定される。そこで、先ず図14及び図15を参照して、これらの補正係数の算出手法を説明する。
図14は、PID補正係数KLAF算出処理のフローチャートである。
同図のステップS301では、ホールドフラグFKLAFHOLDが「1」か否かを判別し、FKLAFHOLD=1のときは、直ちに本処理を終了し、FKLAFHOLD=0のときは、KLAFリセットフラグFKLAFRESETが「1」か否かを判別する(ステップS302)。その結果、FKLAFRESET=1のときは、ステップS303に進み、PID補正係数KLAFを1.0に設定するとともに、積分制御ゲインKI及び目標当量比KCMDと検出当量比KACTとの偏差DKAFを「0」に設定して、本処理を終了する。
ステップS302でFKLAFRESET=0のときは、ステップS304に進み、比例制御ゲインKP、積分制御ゲインKI及び微分制御ゲインKDをエンジン回転数NE及び吸気管内絶対圧PBAに応じて設定されたマップから検索する。ただし、アイドル状態のときはアイドル用のゲインを採用する。次いで、目標当量比KCMDと検出当量比KACTとの偏差DKAF(k)(=KCMD(k)−KACT(k))を算出し(ステップS305)、偏差DKAF(k)及び各制御ゲインKP,KI,KDを下記式に適用して、比例項KLAFP(k)、積分項KLAFI(k)及び微分項KLAFD(k)を算出する(ステップS306)。
KLAFP(k)=DKAF(k)×KP
KLAFI(k)=DKAF(k)×KI+KLAF(k−1)
KLAFD(k)=(DKAF(k)−DKAF(k−1))×KD
続くステップS307〜S310では、積分項KLAFI(k)のリミット処理を行う。すなわち、KLAFI(k)値が所定上下限値KLAFILMTH,KLAFILMTLの範囲内にあるか否かを判別し(ステップS307、S308)、KLAFI(k)>KLAFILMTHであるときは、KLAFI(k)=KLAFLMTHとし(ステップS310)、KLAFI(k)<KLAFILMTLであるときは、KLAFI(k)=KLAFILMTLとする(ステップS309)。
続くステップS311では、下記式によりPID補正係数KLAF(k)を算出する。
KLAF(k)=KLAFP(k)+KLAFI(k)+KLAFD(k)
+1.0
次いで、KLAF(k)値が所定上限値KLAFLMTHより大きいか否かを判別し(ステップS312)、KLAF(k)>KLAFLMTHであるときは、KLAF(k)=KLAFLMTHとして(ステップS316)、本処理を終了する。
ステップS312で、KLAF(k)≦KLAFLMTHであるときは、KLAF(k)値が所定下限値KLAFLMTLより小さいか否かを判別し(ステップS314)、KLAF(k)≧KLAFLMTLであれば直ちに本処理を終了する一方、KLAF(k)<KLAFLMTLであるときは、KLAF(k)=KLAFLMTLとして(ステップS315)、本処理を終了する。
本処理により、検出当量比KACTが目標当量比KCMDに一致するように、PID制御によりPID補正係数KLAFが算出される。
次に適応補正係数KSTR算出処理について、図15を参照して説明する。
図15は、図2のブロックB19、すなわち適応制御(STR(Self Tuning Regulator))ブロックの構成を示すブロック図であり、このSTRブロックは、目標空燃比係数(目標当量比)KCMD(k)と検出当量比KACT(k)とが一致するように適応補正係数KSTRを設定するSTRコントローラと、該STRコントローラで使用するパラメータを設定するパラメータ調整機構とからなる。
本実施の形態における適応制御の調整則の一つに、ランダウらが提案したパラメータ調整則がある。この手法は、適応システムを線形ブロックと非線形ブロックとから構成される等価フィードバック系に変換し、非線形ブロックについては入出力に関するポポフの積分不等式が成立し、線形ブロックは強正実となるように調整則を決めることによって、適応システムの安定を保証する手法である。この手法は、例えば「コンピュートロール」(コロナ社刊)No.27,28頁〜41頁、ないしは「自動制御ハンドブック」(オーム社刊)703頁〜707頁に記載されているように、公知技術である。
本実施の形態では、このランダウらの調整則を用いた。以下説明すると、ランダウらの調整則では、離散系の制御対象の伝達関数A(Z−1)/B(Z−1)の分母分子の多項式を数式2で(1)、(2)のようにおいたとき、適応パラメータθTハット(k)及び適応パラメータ調整機構への入力ζT(k)は、数式2で(3)、(4)のように定められる。数式2では、m=1、n=1、d=2の場合、即ち1次系で2制御サイクル分の無駄時間を持つプラントを例にとった。ここで、kは時刻、より具体的には制御サイクルを示す。また、数式2において、u(k)及びy(k)は、本実施の形態では、それぞれKSTR(k)及びKACT(k)に対応する。
ここで、適応パラメータθハット(k)は、数式3で表される。また、数式3中のΓ(k)及びeアスタリスク(k)は、それぞれゲイン行列及び同定誤差信号であり、数式4及び数式5のような漸化式で表される。
また数式4中のλ1(k)、λ2(k)の選び方により、種々の具体的なアルゴリズムが与えられる。λ1(k)=1,λ2(k)=λ(0<λ<2)とすると漸減ゲインアルゴリズム(λ=1の場合、最小自乗法)、λ1(k)=λ1(0<λ1<1)、λ2(k)=λ2(0<λ2<2)とすると、可変ゲインアルゴリズム(λ2=1の場合、重み付き最小自乗法)、λ1(k)/λ2(k)=σとおき、λ3が数式6のように表されるとき、λ1(k)=λ3とおくと固定トレースアルゴリズムとなる。また、λ1(k)=1,λ2(k)=0のとき固定ゲインアルゴリズムとなる。この場合は数式4から明らかなように、Γ(k)=Γ(k−1)となり、よってΓ(k)=Γの固定値となる。
ここで、図15にあっては、前記STRコントローラ(適応制御器)と適応パラメータ調整機構とは燃料噴射量演算系の外におかれ、検出当量比KACT(k)が目標当量比KCMD(k−d’)(ここでd’はKCMDがKACTに反映されるまでの無駄時間)に適応的に一致するように動作して適応補正係数KSTR(k)を演算する。
このように、適応補正係数KSTR(k)及び検出当量比KACT(k)が求められて適応パラメータ調整機構に入力され、そこで適応パラメータθハット(k)が算出されてSTRコントローラに入力される。STRコントローラには入力として目標当量比KCMD(k)が与えられ、検出当量比KACT(k)が目標当量比KCMD(k)に一致するように漸化式を用いて適応補正係数KSTR(k)が算出される。適応補正係数KSTR(k)は、具体的には数式7に示すように求められる。
図16は、上述した手法により適応補正係数KSTRを算出する処理のフローチャートである。本実施の形態では、λ1=1、λ2=0として固定ゲインアルゴリズムを用いて説明を行う。この場合には、ゲイン行列Γは固定となり、数式8で表される。
先ずステップS141では、LAFセンサ17の応答特性が劣化したこと(応答遅れが増大したこと)を「0」で示す応答劣化フラグFSTRRSPが「1」か否かを判別し、FSTRRSP=1であって、応答特性が劣化していないときは、通常のゲイン行列Γを選択し(ステップS143)、FSTRRSP=0であって、応答特性が劣化したときは、応答劣化時用のゲイン行列Γを選択して(ステップS142)、ステップS144に進む。ここで、応答劣化時用のゲイン行列Γは、その構成要素の値が通常のゲイン行列Γの構成要素の値より小さな値に設定されている。具体的には、本実施の形態ではゲイン行列Γを数式8に示すように対角要素以外の要素がすべて0の正方行列としているので、応答劣化時用の対角要素G11〜G44が、通常のゲイン行列の対角要素より小さな値に設定されている。
このように、LAFセンサの応答劣化時は、通常時(応答劣化前)よりもゲインの小さいゲイン行列を用いることにより、パラメータ調整機構の適応速度が低下し、LAFセンサの応答遅れがあっても適応制御の安定性を確保することができる。
ステップS144では、前述したように適応パラメータ(θハット(k))の演算を行い、次いでLAFセンサ応答劣化判定(ステップS145)及び上記数式7による適応補正係数KSTRの演算を行って(ステップS146)、本処理を終了する。
図17は、上記ステップS145におけるLAFセンサ17の応答劣化の判定を行う処理のフローチャートであり、ステップS401では、適応パラメータr1が所定値r1RSPより小さいか否かを判別し、r1<r1RSPであるときは、さらに適応パラメータr2が所定値r2RSPより小さいか否かを判別する(ステップS402)。その結果、ステップS401又はS402の答が否定(NO)のときは、応答特性が劣化していないと判定して、応答劣化フラグFSTRRSPを「1」に設定する(ステップS404)一方、ステップS401及びS402の答がともに肯定(YES)のときは、劣化したと判定して、フラグFSTRRSPを「0」に設定して(ステップS403)、本処理を終了する。
適応パラメータr1,r2は、パラメータ調整機構の応答性を決定するパラメータであり、LAFセンサの応答特性が劣化すると、r1値及びr2値が低下する。したがって、これらのパラメータ値と所定値とを比較することにより、LAFセンサの応答特性の劣化を判定することができる。
次に上述のようにして算出するPID補正係数KLAFと適応補正係数KSTRとを切り換えて、すなわちPID制御と適応制御とを切り換えて、フィードバック補正係数KFBを算出する手法を説明する。
図18は、図3のステップS9におけるフィードバック補正係数KFBの算出処理のフローチャートである。
先ずステップS151では、図3の処理の前回実行時がオープンループ制御であったか(FKLAFRESET=1であったか)否かを判別し、オープンループ制御でなかったときは、目標当量比KCMDの変化量DKCMD(=|KCMD(k)−KCMD(k−1)|)が基準値DKCMDREFより大きいか否かを判別する。そして、前回がオープンループ制御だったとき又は、前回がフィードバック制御であり且つ変化量DKCMDが基準値DKCMDREFより大きいときは、PID補正係数KLAFによるフィードバック制御を実行すべき運転領域(以下「PID制御領域」という)と判定し、カウンタCを「0」にリセットするとともに(ステップS153)、ステップS164に進み、PID補正係数KLAF演算処理(図20(a))を実行する。
図20(a)のステップS201では、前回の制御でSTRフラグFKSTRが「1」であったか否かを判別する。このSTRフラグFKSTRは、適応補正係数KSTRによるフィードバック制御を実行すべき運転領域(以下「適応制御領域」という)であることを「1」で示し、フィードバック補正係数算出後に設定される(ステップS204、図20(b)、ステップS213)。
ステップS201で、前回はFKSTR=0であったときは直ちにステップS203に進み、前回はFKSTR=1であったときは、PID制御の積分項の前回値KALFI(k−1)を、適応補正係数の前回値KSTR(k−1)に設定して(ステップS202)、ステップS203に進む。ステップS203では、前述した図14の処理によりPID補正係数KLAFを算出し、次いでステップS204に進み、STRフラグFKSTRを「0」に設定して、図20(a)の処理を終了する。
ここで、適応制御からPID制御への切換時(前回FKSTR=1のとき)は、PID制御の積分項KLAFIが急変する可能性があるため、ステップS202により、KLAFI(k−1)=KSTR(k−1)としている。これにより、適応補正係数KSTR(k−1)とPID補正係数KLAF(k)との差を小さくとどめ、切換を滑らかにして制御の安定性を確保することができる。
図18にもどり、続くステップS165では、フィードバック補正係数KFBをステップS164で算出したPID補正係数KLAF(k)に設定して(ステップS165)、本処理を終了する。
なお、前回がオープンループ制御であったときは、PID制御領域と判定するのは、例えばフュエルカット状態からの復帰時のような場合には、LAFセンサの検出遅れなどから、必ずしも検出値が真の値を示すとは限らないため、制御が不安定となる可能性があるからである。また、同様の理由で、目標当量比KCMDの変化量DKCMDが大きいとき、例えばスロットル全開増量状態から復帰したとき、リーンバーン制御から理論空燃比制御に復帰したとき等においてもPID制御領域と判定している。
ステップS151及びS152の答がともに否定(NO)のとき、すなわち前回もフィードバック制御であり、かつ目標当量比KCMDの変化量DKCMDが基準値DKCMDREF以下のときは、カウンタCを「1」だけインクリメントして(ステップS154)、ステップS155でカウンタCの値を所定値CREF(例えば5)と比較する。ここで、カウンタCの値がCREF値以下の場合は前記ステップS164に進む。
カウンタCの値がCREF値以下のときPID制御領域とするのは、オープンループ制御からの復帰直後や目標当量比KCMDが大きく変化した直後は、燃料の燃焼が完了するまでの遅れやLAFセンサの検出遅れの影響を吸収できないからである。
次にステップS156に進み、適応制御領域か否かの判別処理(図19)を実行する。図19の処理は、現在のエンジン運転状態から、フィードバック補正係数KFBを、適応制御則にしたがって求めるか、PID制御則に従って求めるか判別するものである。
すなわち、エンジン水温TWが所定水温TWSTRONより低いか否かを判別し(ステップS170)、TW≧TWSTRONであるときは、エンジン回転数NEが所定回転数NESTRLMT以上であるか否かを判別し(ステップS171)、NE<NESTRLMTであるときは、エンジンがアイドル状態か否かを判別し(ステップS172)、アイドル状態でないときは、吸気管内絶対圧PBAが所定値以下の低負荷状態か否かを判別し(ステップS173)、低負荷状態でないときは、エンジンのバルブタイミングが高速バルブタイミングか否かを判別し(ステップS174)、高速バルブタイミングでないときは、検出当量比KACTが所定値aより小さいか否かを判別し(ステップS175)、所定値a以上のときは、検出当量比KACTが所定値b(>a)より大きいか否かを判別する(ステップS176)。
その結果、ステップS170〜S176のいずれかの答が肯定(YES)のときは、PID制御領域と判定して(ステップS178)、本処理を終了する。
ここで、PID制御領域と判定し、PID制御によりフィードバック補正係数KFBを算出することとした理由は以下の通りである。低水温時(TW<TWSTRON)は、燃焼が安定せず、失火などが生じるおそれがあり、安定した検出当量比KACTが得られないからである。なお、エンジン水温TWが異常に高いときも、同様の理由でPID制御によりフィードバック補正係数KFBを算出する。また、高回転時(NE≧NESTRLMT)は、ECUの演算時間が不足しがちであるとともに、燃焼も安定しないからである。また、高速バルブタイミング選択時は、吸排気弁がともに開弁しているオーバラップ期間が長いので、吸気がそのまま排気弁を通過して排出される、いわゆる吹き抜けが生じるおそれがあり、安定した検出当量比KACTを期待できないからである。また、エンジンのアイドル時は、運転状態がほぼ安定しており、適応制御のような高いゲインの制御は必要としないからである。
また、検出当量比KACTが所定値aより小さいとき若しくは所定値bより大きいときは、エンジンの空燃比がリーン又はリッチのときであり、適応制御のような高いゲインの制御は行わない方がよいからである。この判別は、本実施の形態においては、検出当量比KACTで行ったが、目標当量比KCMDを用いて行ってもよい。
一方ステップS170〜S176の答がすべて否定(NO)のときは、適応制御領域と判定して(ステップS177)、本処理を終了する。
図18に戻り、ステップS157では、図19の処理の結果から、フィードバック補正係数KFBを適応制御で算出するか否かを判別する。ステップS157の答が否定(NO)のときは、前記ステップS164に進み、ステップS157の答が肯定(YES)のときは、ステップS158に進み、前回STRフラグFKSTRが「0」であったか否かを判別する。
その結果前回FKSTR=1であったときは、直ちにステップS161に進み、前回はFKSTR=0であったときは、検出当量比KACTが所定上下限値KACTLMTH(例えば1.01),KACTLMTL(例えば0.99の範囲内にあるか否かを判別し(ステップS159、S160)、KACT<KACTLMTL又はKACT>KACTLMTHであるときは、前記ステップS164に進んで、PID補正係数KLAFを算出する。また、KACTLMTL≦KACT≦KACTLMTHであるときは、ステップS161に進み、KSTR演算処理(図20(b))を実行する。
ステップS158〜S160により、PID制御から適応制御への切換は、適応制御領域であって、且つ検出当量比KACTが1.0付近の値のときに行われる。これにより、PID制御から適応制御への切換を滑らかに行うことができ、制御の安定性を確保することができる。
図20(b)のステップS210では、前回フラグKSTRが「0」であったか否かを判別する。その結果、前回はFKSTR=1であったときは、直ちにステップS212に進み、前述した手法により適応補正係数KSTRを算出し、次いでフラグFKSTRを「1」に設定して、図20(b)の処理を終了する。
一方、前回はFKSTR=0であったときは、適応パラメータ(ゲインを決定するスカラ量)b0を、PID補正係数の前回値KLAF(k−1)で除算した値に置き換えて(ステップS211)、前記ステップS212に進む。
ステップS211で、適応パラメータb0をb0/KLAF(k−1)に置き換えることにより、PID制御から適応制御への切換をより滑らかに行うことができ、制御の安定性を確保することができる。これは、以下のような理由による。前記数式7のb0をb0/KLAF(k−1)に置き換えると、数式9の第1式に示すようになるが、第1式の第1項は、PID制御実行中はKSTR(k)=1としているので、1となる。従って、適応制御開始当初のKSTR(k)値は、KLAF(k−1)に等しくなり、補正係数値が滑らかに切り換えられることになる。
図18に戻り、ステップS161で求めた適応補正係数KSTRの値と1.0との差の絶対値|KSTR(k)−1.0|が基準値KSTRREFより大きいか否かを判別し(ステップS162)、|KSTR(k)−1.0|>KSTRREFであるときは、前記ステップS164に進む一方、|KSTR(k)−1.0|≦KSTRREFであるときは、フィードバック補正係数KFBをKSTR(k)値に設定して(ステップS163)、本処理を終了する。
ここで、適応補正係数KSTRと1.0との差の絶対値が基準値KSTRREFより大きいときは、PID制御領域とするのは、制御の安定性確保のためである。
(第2の実施の形態)
上述した第1の実施の形態では、LAFセンサ17の応答特性の劣化判定は、図17の処理により行ったが、本実施の形態ではこれに代えて、以下に述べる手法により応答特性の劣化度合いを判定する。これ以外の点は第1の実施の形態と同一である。
図21に示すように、目標空燃比が理論空燃比である状態からフュエルカット状態に移行するときにおいて、フュエルカット実行開始時点から、LAFセンサ出力が空燃比A/F=30に相当する値となるまでの検出時間TDETを、予めLAFセンサが正常な段階で実験的に求めておき、これを基準時間TDETREFとする。そして、実際のエンジン運転時に前記検出時間TDETを計測し、基準時間TDETREFからの遅れ時間τ(=TDET−TDETREF)を算出する。この遅れ時間τは、LAFセンサの応答特性が劣化するほど長くなるので、これによりセンサの応答特性の劣化度合いを判定することができる。
即ち本実施の形態では、遅れ時間τが所定時間τREF以下のときは、応答劣化フラグFSTRRSPを「1」とし、所定時間τREFを越えたとき、応答劣化フラグFSTRRSPを「0」に設定する。
本実施の形態によれば、遅れ時間τによりLAFセンサの応答特性の劣化度合いを検出することが可能となる。
(第3の実施の形態)
上述した第1又は第2の実施の形態では、LAFセンサ17の応答劣化検出時(FSTRRSP=0のとき)は、適応補正係数KSTR算出処理におけるゲイン行列Γを、応答劣化時用のものに変更するフェールセーフアクションを行うようにしたが、本実施の形態ではこれに代えて、若しくはこれに加えて、LAFセンサ出力選択処理において、よりサンプル時期の遅い出力値を選択するフェールセーフアクションを行う。
具体的には、図16のKSTR算出処理はステップS141〜S143を削除した構成とし、若しくはそのまま残し、さらに図9のLAFセンサ出力選択処理に代えて、図22の処理を用いる。その他の点は第2の実施の形態と同一である。
図22のステップS81〜S88の処理は、図9と同一である。
同図のステップS89では、応答劣化フラグFSTRRSPが「0」か否かを判別し、FSTRRSP=1であって、応答劣化を検出していないときは、直ちにステップS88に進む一方、FSTRRSP=0であって応答劣化を検出しているときは、応答特性、即ち遅れ時間τに応じて図23に示すように設定されたテーブルから、変数SELVCALを決定し(ステップS90)、次いで変数SELVCAL、エンジン回転数NE及び吸気管内絶対圧PBAに応じて、補正量SELVCRを算出する(ステップS91)。具体的には、エンジン回転数NE及び吸気管内絶対圧PBAに応じて設定された複数のマップをメモリに格納しておき、SELVCAL値に応じてそのうちの1つを選択する。そして、その選択したマップをエンジン回転数NE及び吸気管内絶対圧PBAに応じて検索し、補正量SELVCRを算出する。
次いで、前記ステップS85〜S87で決定した選択タイミングを、補正量SELVCRにより、より遅いタイミングに補正し(ステップS92)、ステップS88に進む。
本処理によれば、LAFセンサの応答特性の劣化度合いに応じて、より適切なLAFセンサ出力値を選択することができ、適応制御の安定性を確保することができる。
(第4の実施の形態)
本実施の形態では、LAFセンサの応答特性劣化を検出したときは、上述した第1又は第2の実施の形態におけるゲイン行列Γの変更に代えて、適応補正係数KSTRの算出タイミングを1TDC(TDC信号パルスの発生間隔に相当する期間)だけ遅らせるフェールセーフアクションを行う。これ以外の点は、第1又は第2の実施の形態と同一である。
具体的には、#N気筒(N=1〜4)に供給する燃料量の算出に用いる適応補正係数KSTRは、通常は#N気筒の膨張行程開始直後に演算するが、LAFセンサの応答劣化検出時は、該当気筒の排気行程開始直後に演算するようにする。
これにより、LAFセンサの応答特性劣化による適応制御の不安定化を防止することができる。このフェールセーフアクションは、応答遅れが大きく、LAFセンサ出力選択タイミングの変更(第3の実施の形態)で対処できない場合に特に有効である。
(第5の実施の形態)
本実施の形態では、LAFセンサの応答特性劣化を検出したときは、上述した第4の実施の形態における、適応補正係数KSTRの算出タイミングを1TDCだけ遅らせるフェールセーフアクションに加えて、さらに無駄時間のサイクル数d=2の適応制御を、d=3の適応制御の構成に切り換えるフェールセーフアクションを行う。これ以外の点は、第4の実施の形態と同一である。
具体的には、LAFセンサの応答特性劣化を検出したとき(FSTRRSP=0のとき)は、図15に示すSTRコントローラ及びパラメータ調整機構に代えて、図24に示すSTRコントローラ及びパラメータ調整機構の構成を用いて適応補正係数KSTRの算出を行う。この場合、適応パラメータθTハット(k)は、数式2の(3)に代えて数式10のようにおかれ、パラメータ調整機構への入力ζT(k)は数式2の(4)に代えて数式11のようにおかれる。さらに、適応補正係数KSTRの算出式は前記数式7に代えて、数式12を用いる。
これにより、LAFセンサの応答特性劣化時においても、良好な適応制御を行うことができる。
(第6の実施の形態)
本実施の形態では、LAFセンサの応答特性劣化を検出したときは、上述した第1又は第2の実施の形態におけるゲイン行列Γの変更に代えて、適応制御を禁止する、即ち空燃比フィードバック制御は、PID制御のみとするフェールセーフアクションを行う。これ以外の点は、第1又は第2の実施の形態と同一である。
具体的には、図19に示すSTR領域判別処理において、ステップS176とステップS177の間に、図25に示すようにステップS176aを挿入し、FSTRRSP=0であってLAFセンサの応答特性劣化を検出したときは、ステップS178に進むようにする。また、FSTRRSP=1であって、応答特性劣化が検出されていないときは、ステップS177に進む。
これにより、LAFセンサの応答特性劣化検出時は、適応制御が禁止され、制御の不安定化を防止することができる。