以下、図面を参照しながら、本発明の好ましい実施形態について説明する。図1は、本発明の制御装置1を適用した内燃機関(以下「エンジン」という)3の概略構成を示している。図1および図3に示すように、エンジン3は、車両(図示せず)に搭載された、4つの気筒3aおよびピストン3b(いずれも1つのみ図示)を有する直列4気筒DOHC型のガソリンエンジンである。また、エンジン3は、各気筒3aの吸気ポートおよび排気ポートをそれぞれ開閉する吸気弁4および排気弁7と、吸気弁4を駆動するための、吸気カムシャフト5および吸気カム6を有する可変式吸気動弁機構40と、排気弁7を駆動するための、排気カムシャフト8および排気カム9を有する排気動弁機構30を備えている。
吸気弁4のステム4aは、ガイド4bに摺動自在に嵌合しており、このガイド4bは、シリンダヘッド3cに固定されている。吸気弁4には、上下のスプリングシート4c,4dと、これらの間に配置されたバルブスプリング4eが設けられており(図4参照)、吸気弁4は、このバルブスプリング4eによって、閉弁方向に付勢されている。
吸気カムシャフト5および排気カムシャフト8はそれぞれ、図示しないホルダを介して、シリンダヘッド3cに回転自在に取り付けられている。また、吸気カムシャフト5は、その一端部に吸気スプロケットが同軸に固定されており、この吸気スプロケットおよびタイミングベルト(いずれも図示せず)を介して、クランクシャフト3dに連結されている。これにより、吸気カムシャフト5は、クランクシャフト3dが2回転するごとに1回転する。吸気カム6は、気筒3aごとに、吸気カムシャフト5と一体に設けられている。
可変式吸気動弁機構40は、吸気カム6の回転に伴って、各気筒3aの吸気弁4を開閉するとともに、吸気弁4のリフトを無段階に変更する。その詳細については後述する。なお、本実施形態では、吸気弁4のリフト(以下「バルブリフト」という)Liftinは、吸気弁4の最大ストロークを表すものとする。
排気弁7のステム7aは、ガイド7bに摺動自在に嵌合しており、このガイド7bは、シリンダヘッド3cに固定されている。また、排気弁7には、上下のスプリングシート7c,7dと、これらの間に配置されたバルブスプリング7eが設けられている。排気弁7は、このバルブスプリング7eにより、閉弁方向に付勢されている。
排気カムシャフト8は、その一端部に排気スプロケット(図示せず)が同軸に固定されており、この排気スプロケットおよび前記タイミングベルトを介して、クランクシャフト3dに連結されており、それにより、クランクシャフト3dが2回転するごとに1回転する。排気カム9は、気筒3aごとに、排気カムシャフト8と一体に設けられている。
排気動弁機構30は、ロッカアーム31を有しており、このロッカアーム31が排気カム9の回転に伴って回動することによって、バルブスプリング7eの付勢力に抗しながら、排気弁7を開閉する。
エンジン3には、クランク角センサ20(運転状態検出手段)および水温センサ21(運転状態検出手段)が設けられている。このクランク角センサ20は、マグネットロータおよびMREピックアップで構成されており、クランクシャフト3dの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号を、制御装置1の後述するECU2に出力する。
CRK信号は、所定クランク角(例えば10゜)ごとに出力され、ECU2は、このCRK信号に基づき、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。TDC信号は、各気筒3aのピストン3bが吸気行程の開始時のTDC位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、4気筒タイプの本例では、クランク角180゜ごとに出力される。
水温センサ21は、例えばサーミスタなどで構成されており、エンジン水温TWを表す検出信号をECU2に出力する。このエンジン水温TWは、エンジン3のシリンダブロック3e内を循環する冷却水の温度を表すものである。
また、エンジン3の吸気管10には、上流側から順に、エアーフローセンサ22、スロットル弁機構11(可変吸気量機構)、スロットル弁開度センサ23、吸気管内絶対圧センサ24、吸気温センサ25、および燃料噴射弁12が設けられている。
エアーフローセンサ22は、熱線式エアフローメータで構成されており、スロットル弁機構11のスロットル弁11aを通過する吸入空気量(以下「TH通過吸入空気量」という)Gthを検出し、それを表す検出信号をECU2に出力する。
スロットル弁機構11は、スロットル弁11aおよびこれを開閉させるTHアクチュエータ11bを有している。スロットル弁11aは、吸気管10に回動自在に設けられており、この回動の変化により吸入空気量を変化させる。THアクチュエータ11bは、モータにギヤ機構(いずれも図示せず)を組み合わせたものであり、後述するスロットル制御入力Uthに応じた駆動信号がECU2から入力されることにより駆動され、それにより、スロットル弁11aの開度(以下「スロットル弁開度」という)THが制御される。スロットル弁開度センサ23は、スロットル弁開度THを検出し、それを表す検出信号をECU2に出力する。
また、スロットル弁機構11には、ロック機構(図示せず)が設けられており、このロック機構により、スロットル制御入力Uthが、後述する故障時用値Uth_fsに設定されているときや、断線などによりスロットルアクチュエータ11bに入力されないときには、スロットル弁機構11の動作がロックされる。すなわち、スロットル弁機構11によるスロットル弁開度THの変更が禁止され、スロットル弁開度THが最小値TH_Lに保持される。なお、この最小値TH_Lは、バルブリフトLiftinが後述する最小値Liftin_L(所定の限界リフト)に保持されている場合において、所定の故障時用吸入空気量が確保されるように設定されている。この故障時用吸入空気量は、停車中ではアイドル運転やエンジン始動を適切に行うことができるとともに、走行中では低速走行状態を維持できるように設定されている。
吸気管10のスロットル弁11aよりも下流側の部分は、サージタンク10aになっており、このサージタンク10aに、吸気管内絶対圧センサ24および吸気温センサ25が設けられている。吸気管内絶対圧センサ24は、例えば半導体圧力センサなどで構成され、吸気管10内の絶対圧(以下「吸気管内絶対圧」という)PBAを検出し、それを表す検出信号をECU2に出力する。吸気温センサ25は、サーミスタで構成されており、吸気管10内の温度(以下「吸気温」という)TAを検出して、その検出信号をECU2に出力する。
燃料噴射弁12は、燃料を吸気管10内に噴射するものであり、その燃料噴射タイミングおよび噴射量は、ECU2からの駆動信号によって制御される。
また、エンジン3のシリンダヘッド3cには、点火プラグ13が取り付けられており、この点火プラグ13の点火時期もまた、ECU2によって制御される(図2参照)。
次に、図4〜図7を参照しながら、前述した可変式吸気動弁機構40について説明する。この可変式吸気動弁機構40は、吸気カムシャフト5、吸気カム6、可変バルブリフト機構50などで構成されている。
この可変バルブリフト機構50は、吸気カム6の回転に伴って吸気弁4を開閉するとともに、バルブリフトLiftinを所定の最大値Liftin_Hと最小値Liftin_Lとの間で無段階に変更するものであり、気筒3aごとに設けられた四節リンク式のロッカアーム機構51と、これらのロッカアーム機構51を同時に駆動するリフトアクチュエータ60を有している。
各ロッカアーム機構51は、ロッカアーム52および上下のリンク53,54などで構成されている。この上リンク53の一端部は、シリンダヘッド3cに固定されたロッカアームシャフト56に回動自在に取り付けられるとともに、他端部は、上ピン55を介して、ロッカアーム52の上端部に回動自在に取り付けられている。
また、ロッカアーム52の上ピン55には、ローラ57が回動自在に設けられている。このローラ57は、吸気カム6のカム面に当接しており、吸気カム6が回転する際、そのカム面に案内されながら吸気カム6上を転動する。これにより、ロッカアーム52は上下方向に駆動されるとともに、上リンク53が、ロッカアームシャフト56を中心として回動する。
さらに、ロッカアーム52の吸気弁4側の端部には、アジャストボルト52aが取り付けられている。このアジャストボルト52aは、吸気弁4のステム4aに当接しており、吸気カム6の回転に伴ってロッカアーム52が上下方向に移動すると、バルブスプリング4eの付勢力に抗しながら、ステム4aを上下方向に駆動し、吸気弁4を開閉する。
また、下リンク54の一端部は、下ピン58を介して、ロッカアーム52の下端部に回動自在に取り付けられており、下リンク54の他端部には、連結軸59が回動自在に取り付けられている。下リンク54は、この連結軸59を介して、リフトアクチュエータ60の後述する短アーム65(可動部)に連結されている。
リフトアクチュエータ60は、ECU2により駆動されるものであり、図5に示すように、モータ61、ナット62、リンク63、長アーム64および短アーム65を有している。このモータ61は、ECU2に接続され、エンジン3のヘッドカバー3fの外側に配置されている。モータ61の回転軸は、雄ねじが形成されたねじ軸61aになっており、このねじ軸61aに、ナット62が螺合している。リンク63の一端部は、ピン63aを介してナット62に回動自在に取り付けられ、他端部は、ピン63bを介して長アーム64の一端部に回動自在に取り付けられている。また、長アーム64の他端部は、回動軸66を介して短アーム65の一端部に固定されている。この回動軸66は、断面円形に形成され、エンジン3のヘッドカバー3fに回動自在に支持されている。長アーム64および短アーム65は、回動軸66を中心として、これと一体に回動する。
さらに、短アーム65の回転軸66と逆側の端部には、前述した連結軸59が回動自在に取り付けられており、これにより、短アーム65は、連結軸59を介して、下リンク54に連結されている。また、短アーム65の付近には、最小リフトストッパ67a(規制部)および最大リフトストッパ67bが互いに間隔を存して設けられており、これらの2つのストッパ67a,67bにより、短アーム65の回動範囲が後述するように規制される。
次に、以上のように構成された可変バルブリフト機構50の動作について説明する。この可変バルブリフト機構50では、ECU2からの後述するリフト制御入力Uliftin(制御入力)がリフトアクチュエータ60に入力されると、モータ61のねじ軸61aが回転し、それに伴うナット62の移動により、長アーム64および短アーム65が回動軸66を中心として回動するとともに、この短アーム65の回動に伴う連結軸59の移動により、ロッカアーム機構51の下リンク54が、下ピン58を中心として回動する。すなわち、リフトアクチュエータ60により、下リンク54が駆動される。
図5(a)に示すように、短アーム65が同図の反時計回りに回動すると、短アーム65は、最大リフトストッパ67bに当接し、係止される。それにより、下リンク54も、図4に実線で示す最大リフト位置に係止される。一方、図5(b)に示すように、短アーム65が同図の時計回りに回動すると、短アーム65は、最小リフトストッパ67aに当接し、係止される。それにより、下リンク54も、図4に2点鎖線で示す最小リフト位置に係止される。
以上のように、短アーム65の回動範囲は、2つのストッパ67a,67bにより、図5(a)に示す最大リフト位置と図5(b)に示す最小リフト位置との間に規制され、それにより、下リンク54の回動範囲も、図4に実線で示す最大リフト位置と、2点鎖線で示す最小リフト位置との間に規制される。
下リンク54が最大リフト位置にある場合、ロッカアーム機構51では、上ピン55および下ピン58の中心間の距離が、ロッカアームシャフト56および連結軸59の中心間の距離よりも長くなるように構成されており、それにより、図6(a)に示すように、吸気カム6が回転すると、これとローラ57との当接点の移動量よりも、アジャストボルト52aの移動量の方が大きくなる。
一方、下リンク54が最小リフト位置にある場合、ロッカアーム機構51では、上ピン55および下ピン58の中心間の距離が、ロッカアームシャフト56および連結軸59の中心間の距離よりも短くなるように構成されており、それにより、図6(b)に示すように、吸気カム6が回転すると、これとローラ57との当接点の移動量よりも、アジャストボルト52aの移動量の方が小さくなる。
以上により、吸気弁4は、下リンク54が最大リフト位置にあるときには、最小リフト位置にあるときよりも大きなバルブリフトLiftinで開弁する。具体的には、吸気カム6の回転中、吸気弁4は、下リンク54が最大リフト位置にあるときには、図7の実線で示すバルブリフト曲線に従って開弁し、バルブリフトLiftinは、その最大値Liftin_Hを示す。一方、下リンク54が最小リフト位置にあるときには、図7の2点鎖線で示すバルブリフト曲線に従って開弁し、バルブリフトLiftinは、その最小値Liftin_Lを示す。
以上のように、この可変バルブリフト機構50では、アクチュエータ60を介して、下リンク54を最大リフト位置と最小リフト位置との間で回動させることにより、バルブリフトLiftinを、最大値Liftin_Hと最小値Liftin_Lとの間で無段階に変更することができる。
また、この可変バルブリフト機構50には、ロック機構(図示せず)が設けられており、このロック機構により、リフト制御入力Uliftinが、後述する故障時用値Uliftin_fsに設定されているときや、断線などによりリフトアクチュエータ60に入力されないときには、可変バルブリフト機構50の動作がロックされる。すなわち、可変バルブリフト機構50によるバルブリフトLiftinの変更が禁止され、バルブリフトLiftinが最小値Liftin_Lに保持される。なお、この最小値Liftin_Lは、スロットル弁開度THが前述した最小値TH_Lに保持されている場合において、前述した故障時用吸入空気量が確保されるように設定されている。
さらに、エンジン3には、回動角センサ26(バルブリフト検出手段)が設けられており(図2参照)、この回動角センサ26は、短アーム65の回動角θliftを検出し、それを表す検出信号をECU2に出力する。この短アーム65の回動角θliftは、短アーム65が最大リフト位置と最小リフト位置との間のどの位置にあるかを表すものであり、ECU2は、この回動角θliftに基づき、バルブリフトLiftinを算出する。
また、図2に示すように、ECU2には、アクセル開度センサ27(運転状態検出手段)からアクセルペダル(図示せず)の踏み込み量(以下「アクセル開度」という)APを表す検出信号が、電流センサ28からリフトアクチュエータ60のモータ61を実際に流れる電流の値(以下「電流値」という)Imotを表す検出信号が、それぞれ出力される。
さらに、車両には、イグニッション・スイッチ(以下「IG・SW」という)29が設けられている。このIG・SW29は、イグニッションキー(図示せず)の操作に応じ、そのON/OFF状態を表す信号をECU2に出力する。
ECU2は、CPU、RAM、ROMおよびI/Oインターフェース(いずれも図示せず)などからなるマイクロコンピュータで構成されており、このRAMは、バックアップ電源によって、記憶したデータをIG・SW29のOFF時にも保持するようになっている。また、ECU2は、前述した各種のセンサおよびスイッチ20〜29の検出信号などに応じて、エンジン3の運転状態を判別し、バルブリフトLiftinおよびスロットル弁開度THを制御することによって、吸入空気量を制御する。なお、本実施形態では、ECU2によって、運転状態検出手段、加速度パラメータ算出手段、当接判定手段、制御手段、バルブリフト検出手段、目標バルブリフト決定手段、制御入力算出手段、減速状態判定手段、外乱抑制パラメータ設定手段および保持判定手段が構成されている。
なお、上記の吸入空気量の制御は、エンジン3の低〜高負荷運転時には、主としてバルブリフトLiftinによって行われる。また、極低〜低負荷運転時には、吸入空気量がもともと小さく、これをきめ細かく制御することが要求されるため、バルブリフトLiftinを最小値Liftin_Lに保持した状態でスロットル弁開度THを制御することによって、吸入空気量の制御が行われる。
次に、図8を参照しながら、ECU2で行われる上述した吸入空気量の制御を含む処理について説明する。本処理は、所定の制御周期ΔT(例えば5msec)ごとに実行される。まず、ステップ1では、過電流判定処理を実行する。本処理は、可変バルブリフト機構50における可動部品の固着や故障などに起因して、リフトアクチュエータ60のモータ61が過電流状態、すなわち過負荷状態にあるか否かを判定するものである。次いで、過電流判定処理の結果に応じ、吸入空気量制御処理を実行し(ステップ2)、本処理を終了する。
次に、上記の過電流判定処理について、図9を参照しながら説明する。まず、ステップ10では、第2過電流判定フラグF_Imot_emg2が「1」であるか否かを判別する。この答がNOのときには、電流値Imotが所定の上限値Imot_max以上であるか否かを判別する(ステップ11)。
この答がNOで、Imot<Imot_maxのときには、リフトアクチュエータ60が過電流・過負荷状態にないとして、積算値SImotを値0に設定した(ステップ12)後、本処理を終了する。
一方、ステップ11の答がYESで、Imot≧Imot_maxのときには、積算値SImotを次式(1)により算出し(ステップ13)、RAM内に記憶する。
SImot(k)=SImot(k−1)
+Imot(k)・Stime ……(1)
上記式(1)において、Stimeは、サンプリング周期であり、この場合、前述した制御周期ΔTに等しい。また、記号(k)付きのデータは、制御周期ΔTに同期してサンプリング(または算出)された離散データであることを示しており、記号kは各離散データのサンプリングサイクルの順番を表している。例えば、記号kは今回の制御タイミングでサンプリングされた値であることを、記号k−1は前回の制御タイミングでサンプリングされた値であることをそれぞれ示している。この点は、以下の離散データにおいても同様である。なお、以下の説明では、各離散データにおける記号(k)などを適宜、省略する。
上記式(1)に示すように、積算値SImotは、電流値Imotとサンプリング周期Stimeとの積を積算することにより算出される。この場合、電流値Imotは、リフトアクチュエータ60のモータ61のトルクすなわち負荷と比例関係にあるので、積算値SImotは、リフトアクチュエータ60における負荷の大きさとその継続時間を表す。
次いで、積算値SImotが所定の第1判定値SImot_J1以上であるか否かを判別する(ステップ14)。この第1判定値SImot_J1は、リフトアクチュエータ60が過電流・過負荷状態に近い状況にあるか否かを判定するためのしきい値である。この答がNOのときには、本処理を終了する。一方、ステップ14の答がYESで、SImot≧SImot_J1のときには、リフトアクチュエータ60が過電流・過負荷状態に近い状況にあるとして、そのことを表すために、第1過電流判定フラグF_Imot_emg1を「1」にセットし(ステップ15)、RAM内に記憶する。
次に、積算値SImotが所定の第2判定値SImot_J2以上であるか否かを判別する(ステップ16)。この第2判定値SImot_J2は、リフトアクチュエータ60の過電流・過負荷状態にあるか否か、すなわち可変バルブリフト機構50が故障しているか否かを判定するためのしきい値であり、上記第1判定値SImot_J1よりも大きな値に設定されている。
上記ステップ16の答がNOのときには、本処理を終了する。一方、上記ステップ16の答がYESで、SImot≧SImot_J2のときには、リフトアクチュエータ60が過電流・過負荷状態にあり、可変バルブリフト機構50が故障しているとして、そのことを表すために、第2過電流判定フラグF_Imot_emg2を「1」にセットし(ステップ17)、RAM内に記憶する。次いで、本処理を終了する。
上記のように、ステップ17で第2過電流判定フラグF_Imot_emg2が「1」にセットされると、前記ステップ10の答がYESとなり、その場合には、リセットフラグF_RESETが「1」であるか否かを判別する(ステップ18)。このリセットフラグF_RESETは、所定の判定処理において、所定のリセット条件が成立したときに「1」にセットされる。より具体的には、メンテナンス時において、外部診断機によるリセット動作が実行されたとき、またはバッテリキャンセル動作が実行されたときには、所定のリセット条件が成立したと判定され、リセットフラグF_RESETが「1」にセットされる。
このステップ18の答がNOのときは、そのまま本処理を終了する。一方、ステップ18の答がYESのときには、積算値SImotを値0に、2つのフラグF_Imot_emg1,F_Imot_emg2をいずれも「0」にそれぞれリセットした(ステップ19)後、前記ステップ11以降を実行する。
次いで、図8のステップ2の吸入空気量制御処理について、図10を参照しながら説明する。本処理は、吸入空気量を制御するために、リフト制御入力Uliftinおよびスロットル制御入力Uthを算出するものである。まず、ステップ30では、エンジン始動フラグF_ENGSTARTが「1」であるか否かを判別する。このエンジン始動フラグF_ENGSTARTは、図示しない判定処理において、エンジン回転数NEおよびIG・SW29の出力状態に応じて、エンジン始動中すなわちクランキング中と判定されたときに「1」にセットされる。
上記ステップ30の答がYESで、エンジン始動中のときには、エンジン水温TWに応じ、図11に示すテーブルを検索することによって、目標吸入空気量の始動時用値Gcyl_cmd_crkを算出する(ステップ31)。同図に示すように、このテーブルでは、目標吸入空気量の始動時用値Gcyl_cmd_crkは、エンジン水温TWが低いほど、大きな値に設定されている。これは、エンジン水温TWが低いほど、エンジン3のフリクションが大きく、その始動がしにくいので、吸入空気量を大きくする必要があるためである。
次いで、目標吸入空気量Gcyl_cmdを上記始動時用値Gcyl_cmd_crkに設定する(ステップ32)。次に、後述するように、バルブリフト制御処理を実行する(ステップ33)とともに、スロットル制御処理を実行した(ステップ34)後、本処理を終了する。
一方、前記ステップ30の答がNOで、エンジン始動中でないときには、アクセル開度APが所定値APREFよりも小さいか否かを判別する(ステップ35)。この答がYESで、アクセルペダルが踏み込まれていないときには、触媒暖機タイマの計時値Tcatが所定値Tcatlmtよりも小さいか否かを判別する(ステップ36)。この触媒暖機タイマは、触媒暖機制御処理の実行時間を計時するものであり、アップカウント式のタイマで構成されている。なお、触媒暖機制御処理は、エンジン3の排気管に設けられた排ガス浄化用の触媒(いずれも図示せず)を活性化するために行われるものである。
このステップ36の答がYESで、Tcat<Tcatlmtのとき、すなわち、触媒暖機制御の実行中のときには、触媒暖機タイマの計時値Tcatおよびエンジン水温TWに応じ、図12に示すマップを検索することによって、目標吸入空気量の触媒暖機用値Gcyl_cmd_astを算出する(ステップ37)。同図において、TW1〜TW3は、エンジン水温TWの第1〜第3の所定値(TW1<TW2<TW3)である。なお、目標吸入空気量の触媒暖機用値Gcyl_cmd_astは、エンジン水温Tが第1〜第3の所定値TW1〜TW3以外のときには、補間演算によって算出される。
また、目標吸入空気量の触媒暖機用値Gcyl_cmd_astは、エンジン水温TWが低いほど、より大きな値に設定されている。これは、エンジン水温TWが低いほど、触媒の活性化に要する時間が本来的に長くなるので、排気ガスボリュームを大きくすることによって、触媒の活性化に要する時間をより短縮するためである。さらに、このマップでは、目標吸入空気量の触媒暖機用値Gcyl_cmd_astは、触媒暖機タイマの計時値Tcatが小さい領域では、計時値Tcatが大きいほど、より大きな値に設定され、計時値Tcatが大きい領域では、計時値Tcatが大きいほど、より小さな値に設定されている。これは、触媒暖機制御の実行時間が長くなるのに伴い、エンジン3の暖機が進むことで、フリクションが低下するので、その場合には、目標吸入空気量Gcyl_cmdを低減しないと、エンジン回転数NEを目標値に維持するために点火時期が過剰にリタード制御された状態となり、燃焼状態が不安定になるためである。
次いで、目標吸入空気量Gcyl_cmdを上記触媒暖機用値Gcyl_cmd_astに設定した(ステップ38)後、前記ステップ33以降を実行する。
一方、前記ステップ35または36の答がNOのとき、すなわちアクセルペダルが踏み込まれているとき、またはTcat≧Tcatlmtであるときには、目標吸入空気量の通常運転用値Gcyl_cmd_drvを、エンジン回転数NEおよびアクセル開度APに応じ、図13に示すマップを検索することによって算出する(ステップ39)。同図において、AP1〜AP3は、アクセル開度APの第1〜第3の所定値(AP1>AP2>AP3)である。なお、目標吸入空気量の通常運転用値Gcyl_cmd_drvは、アクセル開度APが第1〜第3の所定値AP1〜AP3以外のときには、補間演算によって算出される。
このマップでは、目標吸入空気量の通常運転用値Gcyl_cmd_drvは、エンジン回転数NEが高いほど、またはアクセル開度APが大きいほど、より大きな値に設定されている。これは、エンジン回転数NEが高いほど、またはアクセル開度APが大きいほど、エンジン3の負荷が高いことで、より大きな吸入空気量が要求されるためである。
次いで、目標吸入空気量Gcyl_cmdを上記通常運転値Gcyl_cmd_drvに設定した(ステップ40)後、前記ステップ33以降を実行する。
次に、図10のステップ33のバルブリフト制御処理について、図14を参照しながら説明する。本処理は、可変バルブリフト機構50を制御するための前述したリフト制御入力Uliftinを算出するものである。まず、ステップ50では、エンジン回転数NE、および前記ステップ32、38または40で設定した目標吸入空気量Gcyl_cmdに応じ、図15に示すマップを検索することによって、バルブリフトLiftinの目標値である目標バルブリフトLiftin_cmdを算出する。同マップにおいて、Gcyl_cmd1〜Gcyl_cmd3は、目標吸入空気量Gcyl_cmdの第1〜第3の所定値(Gcyl_cmd1<Gcyl_cmd2<Gcyl_cmd3)である。なお、目標バルブリフトLiftin_cmdは、目標吸入空気量Gcyl_cmdが第1〜第3の所定値Gcyl_cmd1〜Gcyl_cmd3以外のときには、補間演算によって求められる。
また、上記のマップでは、目標バルブリフトLiftin_cmdは、エンジン回転数NEが高いほど、または目標吸入空気量Gcyl_cmdが大きいほど、より大きな値に設定されている。これは、エンジン回転数NEが高いほど、または目標吸入空気量Gcyl_cmdが大きいほど、エンジン3に対する要求出力が大きいことで、より大きな吸入空気量が要求されるためである。さらに、目標吸入空気量Gcyl_cmdが第1所定値Gcyl_cmd1で、かつエンジン回転数NEが所定値NEREF(例えば1100rpm)のときには、目標バルブリフトLiftin_cmdは、前述したバルブリフトLiftinの最小値Liftin_Lよりも若干大きな所定値Liftin_stbに設定されている。さらに、Gcyl_cmd=Gcyl_cmd1かつNE<NEREFのとき、すなわちエンジン3の極低〜低負荷運転状態のときには、目標バルブリフトLiftin_cmdは、最小値Liftin_Lよりも小さな値に設定されている。これは、短アーム65や最小リフトストッパ67aの量産による個体差や経年変化にかかわらず、上記のような極低〜低負荷運転状態のときに、短アーム65を最小リフトストッパ67aに確実に当接させることによって、バルブリフトLiftinを最小値Liftin_Lに確実に保持するためである。
次いで、前述した第2過電流判定フラグF_Imot_emg2が「1」であるか否かを判別する(ステップ51)。この答がYESで、可変バルブリフト機構50が故障しているときには、リフト制御入力U_Liftinを所定の故障時用値U_Liftin_fsに設定した(ステップ52)後、本処理を終了する。これにより、前述したように、バルブリフトLiftinが最小値Liftin_Lに保持され、それにより、停車中はアイドル運転やエンジン始動を適切に実行できると同時に、走行中は低速走行状態を維持することができる。
一方、ステップ51の答がNOで、F_Imot_emg2=0、すなわち可変バルブリフト機構50が正常であるときには、後述する当接判定処理を実行する(ステップ53)とともに、リフト制御入力Uliftinを算出した(ステップ54)後、本処理を終了する。
このリフト制御入力Uliftinの算出は、バルブリフトLiftin、および前記ステップ50で算出した目標バルブリフトLiftin_cmdに基づき、次の式(2)〜(8)に示す目標値フィルタ型2自由度スライディングモード制御アルゴリズムによって行われる。すなわち、リフト制御入力Uliftinは、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従・収束させるための値として算出される。
この制御アルゴリズムでは、まず、式(2)に示す目標値フィルタアルゴリズムすなわち一次遅れフィルタアルゴリズムにより、目標バルブリフトのフィルタ値Liftin_cmd_fが算出される。同式(2)において、POLE_f_lfは、目標値フィルタ設定パラメータであり、上記ステップ53の当接判定処理において、−1<POLE_f_lf<0の関係が成立する値に設定される。
次いで、式(3)〜(8)に示すスライディングモード制御アルゴリズムにより、リフト制御入力Uliftinが算出される。すなわち、式(3)に示すように、リフト制御入力Uliftinは、等価制御入力Ueq_lf、到達則入力Urch_lfおよび適応則入力Uadp_lfの総和として算出される。
等価制御入力Ueq_lfは、式(4)により算出される。同式(4)において、a1_lf,a2_lf,b1_lf,b2_lfは、後述する式(9)のプラントモデルのモデルパラメータを示しており、所定値にそれぞれ設定されている。また、POLE_lfは、切換関数設定パラメータ(外乱抑制パラメータ)であり、当接判定処理において、−1<POLE_lf<0の関係が成立する値に設定される。
また、到達則入力Urch_lfは、式(5)により算出される。同式(5)において、Krch_lfは、所定の到達則ゲインを表しており、σ_lfは、式(6)のように定義される切換関数である。同式(6)のE_lfは、式(7)により算出される追従誤差である。さらに、適応則入力Uadp_lfは、式(8)により算出される。同式において、Kadp_lfは、所定の適応則ゲインを表している。
以上の式(2)〜(8)は次のようにして導出される。すなわち、プラントを、リフト制御入力Uliftinを入力とし、バルブリフトLiftinを制御量とする系として定義するとともに、離散時間系モデルとしてモデル化すると、次式(9)が得られる。この式(9)のモデルに基づき、バルブリフトLiftinが目標バルブリフトLiftin_cmdに追従・収束するように、目標値フィルタ型2自由度スライディングモード制御理論を適用すると、前述した式(2)〜(8)が導出される。
以上の目標値フィルタ型2自由度スライディングモード制御アルゴリズムは、次のような特性を有している。すなわち、目標値フィルタ設定パラメータPOLE_f_lfを−1<POLE_f_lf<0の範囲内で変更することによって、目標バルブリフトLiftin_cmdに対する目標バルブリフトのフィルタ値Liftin_cmd_fの追従速度、すなわち目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従速度が変化する。具体的には、この追従速度は、目標値フィルタ設定パラメータPOLE_f_lfが値−1に近いほど、より低くなる。このため、目標値フィルタ設定パラメータPOLE_f_lfを値−1により近い値に設定することによって、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従させる際のリフト制御入力Uliftinが小さくなり、その結果、電流値Imotがより小さくなるとともに、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従させるための短アーム65の駆動力がより小さくなる。
また、切換関数設定パラメータPOLE_lfを−1<POLE_lf<0の範囲内で変更することによって、値0への追従誤差E_lfの収束速度および収束挙動、すなわち目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従速度および追従挙動が変化する。言い換えれば、リフトアクチュエータ60に加えられる外乱の影響の抑制度合(以下、単に「外乱抑制度合」という)が変化する。具体的には、切換関数設定パラメータPOLE_lfが値−1に近いほど、より大きな追従誤差E_lfの発生が許容され、外乱抑制度合がより低くなる。このため、切換関数設定パラメータPOLE_lfを値−1により近い値に設定することによって、追従誤差E_lfが発生した際のリフト制御入力Uliftinが小さくなり、その結果、電流値Imotがより小さくなるとともに、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従させるための短アーム65の駆動力がより小さくなる。
次に、図16を参照しながら、図14の前記ステップ53の当接判定処理について説明する。本処理は、可変バルブリフト機構50の短アーム65が最小リフトストッパ67aに当接しているか否かを判定するとともに、その判定結果に応じて、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfを設定するものである。
まず、ステップ60では、判定パラメータWVliftin(加速度パラメータ)を算出する。この判定パラメータWVliftinは、最小リフトストッパ67aへの短アーム65の当接の有無を判定するのに用いられるものであり、リフト偏差DL(k)に基づき、図17に示す判定パラメータ算出部70(加速度パラメータ算出手段)によって算出される。このリフト偏差DL(k)は、バルブリフトの今回値Liftin(k)と前回値Liftin(k−1)との偏差(=Liftin(k)−Liftin(k−1))である。なお、上記の判定パラメータ算出部70は、ECU2で構成されている。
判定パラメータ算出部70は、第1フィルタ71、第1ダウンサンプラ72、第2フィルタ73、および第2ダウンサンプラ74を有している。
第1フィルタ71は、ローパスフィルタであり、図18に示すようなゲイン特性および位相特性を有しており、前述した制御周期ΔTごとに、上記のリフト偏差DL(k)をサンプリングし、フィルタリングすることによって、第1フィルタ値DLf(k)を生成し、第1ダウンサンプラ72に出力する。具体的には、リフト偏差DL(k)のうち、リフト偏差DL(k)のサンプリング周波数の1/2の周波数に相当する所定の第1周波数ω以上の周波数域の成分を除去する。また、リフト偏差DL(k)のうちの第1周波数ωよりも低い所定周波数ωref以下の低周波数域LωAの成分に対するゲインは、値1よりも大きな所定値GREFに設定されており、それにより、この低周波数域LωAの成分が増幅される。なお、第1フィルタ値DLf(k)は次式(10)によって算出(生成)される。
DLf(k)=α・DL(k)+α・DL(k−1) …… (10)
ここで、αは所定値(例えば0.7071)である。
第1ダウンサンプラ72は、制御周期ΔTごとに入力された第1フィルタ値DLf(k)を1つおきにサンプリングすることによって間引き、サンプリングした第1フィルタ値DLf(m)を、第2フィルタ73に出力する。
第2フィルタ73は、第1フィルタ70とほぼ同様に構成されており、入力された第1フィルタ値DLf(m)をフィルタリングすることによって、第2フィルタ値DLf’(m)を生成し、第2ダウンサンプラ74に出力する。具体的には、第2フィルタ73は、第1フィルタ値DLf(m)のうちの、第1フィルタ値DLf(m)の入力の周期に対応する周波数の1/2の周波数、すなわち上記の第1周波数ωの1/2の周波数である所定の第2周波数ω/2以上の周波数域の成分を除去する。また、第1フィルタ値DLf(m)のうちの、第2周波数ω/2よりも低い所定周波数以下の低周波数域に対するゲインは、値1よりも大きな所定値に設定されており、それにより、この低周波数域の成分が増幅される。なお、第2フィルタ値DLf’(m)は、次式(11)によって算出(生成)される。
DLf’(m)=α・DLf(m)+α・DLf(m−1) ……(11)
第2ダウンサンプラ74は、入力された第2フィルタ値DLf’(m)を1つおきにサンプリングすることによって間引き、判定パラメータWVliftin(k)として出力する。
以上のように、リフト偏差DLに、上述したフィルタリング処理および間引き処理を繰り返し施すことによって、判定パラメータWVliftinが算出(生成)される。これにより、図19に示すように、判定パラメータWVliftinは、高周波数域の成分に含まれるノイズが除去されるとともにリフト偏差DLの低周波数域の成分が増幅されるように算出され、それにより、リフト偏差DLのSN比を改善した値として得られる。また、上述したフィルタリング処理は、微分的機能を有しているため、以上のようにして算出された判定パラメータWVliftinは、バルブリフトLiftinの変化率の微分値、すなわち回動する短アーム65の加速度を表す。
図16に戻り、前記ステップ60に続くステップ61では、バルブリフトLiftin、および図14の前記ステップ50で算出した目標バルブリフトLiftin_cmdがいずれも、前述した所定値Liftin_stb以下であるか否かを判別する。
この答がNOのときには、ステップ62、63および64において、低リフトフラグF_lowlift、保持フラグF_pressmod、および当接開始フラグF_contmodを、それぞれ「0」にリセットする。次に、図9の前記ステップ15でセットされた第1過電流判定フラグF_Imot_emg1が「1」であるか否かを判別する(ステップ65)。
この答がNOのときには、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfを、所定の通常時用値POLE_baseおよびPOLE_f_base(例えばそれぞれ−0.4、−0.9)にそれぞれ設定した(ステップ66)後、本処理を終了する。
一方、ステップ65の答がYESで、F_Imot_emg1=1、すなわち、リフトアクチュエータ60が過電流・過負荷状態に近い状況にあるときには、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfを、所定の過電流時用値POLE_imotおよびPOLE_f_imotにそれぞれ設定した(ステップ67)後、本処理を終了する。
この過電流時用値POLE_imotは、上記の通常時用値POLE_baseよりも値−1に近い値(−1<POLE_imot<POLE_base)に設定されており、例えば−0.8である。また、目標値フィルタ設定パラメータの過電流時用値POLE_f_imotは、上記の通常時用値POLE_f_baseよりも値−1に近い値(−1<POLE_f_imot<POLE_f_base)に設定されており、例えば−0.95である。このように設定するのは、前述したように、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfが値−1に近いほど、電流値Imotがより小さくなるので、このことを利用することによって、リフトアクチュエータ60が過電流・過負荷状態に至るのを回避するためである。
一方、前記ステップ61の答がYESで、バルブリフトLiftinおよび目標バルブリフトLiftin_cmdがいずれも、所定値Liftin_stb以下で非常に小さいときには、次のステップ68以降において、最小リフトストッパ67aへの短アーム65の当接の有無を判定する。まず、ステップ68では、バルブリフトLiftinが低リフト側に制御されているとして、そのことを表すために、低リフトフラグF_lowliftを「1」にセットする。
次いで、ステップ69および70において、保持フラグF_pressmodおよび当接開始フラグF_contmodが「1」であるか否かをそれぞれ判別する。これらの答がいずれもNOのときには、前記ステップ60で算出した判定パラメータWVliftinが、所定の第1判定値WVcol1(例えば−3)以下であるか否かを判別する(ステップ71)。
この答がNOのときには、前記ステップ63以降を実行する。一方、ステップ71の答がYESで、判定パラメータWVliftinが第1判定値WVcol1以下になったときには、短アーム65が最小リフトストッパ67aに当接し始めたと判定する。このように判定するのは、前述したように判定パラメータWVliftinは、回動する短アーム65の加速度を表すので、WVliftin≦WVcol1の成立によって、短アーム65が最小リフトストッパ67aに当接し始めることで短アーム65の速度が減少し始めたと推定できるためである。次に、短アーム65が最小リフトストッパ67aに当接し始めたことを表すために、当接開始フラグF_contmodを「1」にセットする(ステップ72)。次に、この判定を受けて、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfを、所定の当接開始時用値POLE_lowおよびPOLE_f_lowにそれぞれ設定した(ステップ73)後、本処理を終了する。
この当接開始時用値POLE_lowは、前述した過電流時用値POLE_imotよりも値−1に近い値(−1<POLE_low<POLE_imot<POLE_base)に設定されており、例えば−0.99である。また、目標値フィルタ設定パラメータの当接開始時用値POLE_f_lowは、前述した過電流時用値POLE_f_imotよりも値−1に近い値(−1<POLE_f_low<POLE_f_imot<POLE_f_base)に設定されており、例えば−0.97である。
上記ステップ72により当接開始フラグF_contmodが「1」にセットされると、前記ステップ70の答がYESとなり、その場合には、判定パラメータWVliftinが第2判定値WVcol2(例えば−3)以上であるか否かを判別する(ステップ74)。
この答がNOのときには、前記ステップ72以降を実行する。一方、この答がYESで、判定パラメータWVliftinが第2判定値WVcol2以上になったとき、すなわち第1判定値WVcol1以下に低下していた判定パラメータWVliftinが第2判定値WVcol2以上に増加したときには、短アーム65の速度が減少のピークを過ぎていて、最小リフトストッパ67aへの短アーム65の当接が終了し、バルブリフトLiftinが最小値Liftin_Lに保持されたと判定する。次に、そのことを表すために、保持フラグF_pressmodを「1」にセットする(ステップ75)。次いで、前記ステップ64以降を実行する。また、このステップ75により保持フラグF_pressmodが「1」にセットされると、前記ステップ69の答がYESとなり、その場合には、前記ステップ64以降を実行する。
図20は、上述した当接判定処理を行った場合の動作例を示している。なお、この動作例は、前述した第1および第2の判定値WVcol1,WVcol2を互いに同じ値に設定するとともに、バルブリフトLiftinが目標バルブリフトLiftin_cmdに収束している状態から、目標バルブリフトLiftin_cmdの減少に伴って最小値Liftin_LまでバルブリフトLiftinを制御する場合の動作を示している。
同図に示すように、目標バルブリフトLiftin_cmdが減少し始めると(時点t1)、バルブリフトLiftinは、目標バルブリフトLiftin_cmdに収束するように減少する。そして、バルブリフトLiftinが最小値Liftin_Lに近い値になると、判定パラメータWVliftinは急激に減少し始める。さらに、バルブリフトLiftinが最小値Liftin_Lまで減少し、短アーム65が最小リフトストッパ67aに当接し始めた時に、判定パラメータWVliftinが、第1判定値WVcol1を下回る(時点t2)。したがって、WVliftin≦WVcol1になったとき(ステップ71:YES)に、短アーム65が最小リフトストッパ67aに当接し始めたと判定することができる。また、これに伴って、それまで通常時用値POLE_baseに設定されていた切換関数設定パラメータPOLE_lfが、値−1により近い当接開始時用値POLE_lowに設定される(ステップ73)。
さらに、その後、最小リフトストッパ67aへの短アーム65の当接が終了し、バルブリフトLiftinが最小値Liftin_Lに保持された時に、判定パラメータWVliftinは、減少した状態から増加し、第2判定値WVcol2を上回る(時点t3)。したがって、判定パラメータWVliftinが、第1判定値WVcol1以下になった後、第2判定値WVcol2以上になったとき(ステップ74:YES)に、バルブリフトLiftinが最小値Liftin_Lに保持されたと判定することができる。また、これに伴って、当接開始時用値POLE_lowに設定されていた切換関数設定パラメータPOLE_lfが、通常時用値POLE_baseに設定される(ステップ66)。
以上のように、上述した当接判定処理によれば、バルブリフトLiftinが所定値Liftin_stbよりも大きいとき(ステップ61:NO)、すなわち、バルブリフトLiftinを最小値Liftin_Lに保持せずに、バルブリフトLiftinを主体として吸入空気量を制御する場合には、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfが、値0に近い通常時用値POLE_baseおよびPOLE_f_baseにそれぞれ設定される(ステップ66)。これにより、目標バルブリフトLiftin_cmdへのバルブリフトLiftinの良好な追従性が確保される。
また、短アーム65が最小リフトストッパ67aに当接し始めたと判定されたとき(ステップ71:YES)には、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfがそれぞれ、当接開始時用値POLE_lowおよびPOLE_f_lowに設定される(ステップ73)。
前述したように、これらの当接開始時用値POLE_lowおよびPOLE_f_lowは、通常時用値POLE_baseおよびPOLE_f_baseよりもそれぞれ値−1に近い値に設定されている。これにより、短アーム65が最小リフトストッパ67aに当接し始めたときに、前述した目標値フィルタ型2自由度スライディングモード制御アルゴリズムの特性から明らかなように、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従させるための短アーム65の駆動力を低減することができる。その結果、短アーム65が最小リフトストッパ67aに当接する際の衝撃力を低減できるので、短アーム65や最小リフトストッパ67aの変形を回避でき、したがって、可変バルブリフト機構50の寿命を延ばすことができる。
また、短アーム65が最小リフトストッパ67aに当接するまでの間は、短アーム65の駆動力が確保されるので、目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従速度を低下させることなく、吸入空気量を適切な値に迅速に制御することができる。その結果、安定したエンジン3の運転状態を確保できることによって、良好なドライバビリティーを確保することができる。さらに、短アーム65や最小リフトストッパ67aに緩衝材を付加する必要がないので、緩衝材を設けた場合と異なり、最小値Liftin_LにおけるバルブリフトLiftinのばらつきによる吸入空気量のばらつきを回避することができるとともに、緩衝材の付加による製造コストの上昇や設計の自由度の低下を回避することができる。
また、短アーム65が最小リフトストッパ67aに当接したと判定された後、バルブリフトLiftinが最小値Liftin_Lに保持されたと判定されたとき(ステップ74:YES)には、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfが、通常時用値POLE_baseおよびPOLE_f_baseにそれぞれ設定される(ステップ66)。これにより、バルブリフトLiftinを目標バルブリフトLiftin_cmdに追従させるための短アーム65の駆動力、すなわちバルブリフトLiftinを最小値Liftin_Lに保持する力が増大する。その結果、最小リフトストッパ67aに当接した後、短アーム65を、エンジン3の振動などで最小リフトストッパ67aから乖離させることなく、最小リフトストッパ67aに当接した状態に確実に保持できる。
さらに、最小リフトストッパ67aへの短アーム65の当接の開始後、その終了までの間に、目標バルブリフトLiftin_cmdが所定値Liftin_stbよりも大きな値に設定され、バルブリフトLiftinを増大させるように制御するときには、前記ステップ61の答がNOとなり、前記ステップ66が実行される。その結果、切換関数設定パラメータPOLE_lfおよび目標値フィルタ設定パラメータPOLE_f_lfが、通常時用値POLE_baseおよびPOLE_f_baseにそれぞれ設定される。
これにより、前述したように、短アーム65が最小リフトストッパ67aに当接し始めた直後に、運転者の加速要求などによりバルブリフトLiftinを増加させる場合に、短アーム65の駆動力をそれまでの低減している状態から、即座に増大させることができる。その結果、目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従性を向上させることができるので、吸入空気量を適切な値に迅速に増加させることができ、したがって、良好なドライバビリティーを確保することができる。
また、最小リフトストッパ67aへの短アーム65の実際の当接状況に応じて変化する短アーム65の加速度を表す判定パラメータWVliftinを用いて当接判定を行うので、この判定を、センサなどで直接検出した短アーム65の位置に基づいて行う場合と異なり、短アーム65や最小リフトストッパ67aの量産による個体差や経年変化による摩耗の影響を受けることなく、精度良く行うことができる。さらに、前述したように、判定パラメータWVliftinが、リフト偏差DLのSN比を改善した値として得られるので、リフト偏差DLに含まれるノイズの影響を抑制しながら、当接判定をさらに精度良く行うことができる。
次に、図21を参照しながら、図10の前記ステップ34のスロットル制御処理について説明する。まず、ステップ80では、前述した当接開始フラグF_contmod、保持フラグF_pressmod、および第2過電流判定フラグF_Imot_emg2のいずれかが「1」であるか否かを判別する。
この答がNOで、当接開始フラグF_contmod、保持フラグF_pressmod、および第2過電流判定フラグF_Imot_emg2がいずれも「0」のとき、すなわち、短アーム65が最小リフトストッパ67aに当接しておらず、バルブリフトLiftinを主体とする吸入空気量制御を実行しているときには、バルブリフトLiftinおよびエンジン回転数NEに応じ、図22に示すマップを検索することによって、目標スロットル弁開度の通常時用値TH_cmd_opを算出する(ステップ81)。同図において、NE1〜NE3は、エンジン回転数NEの第1〜第3の所定値(NE1>NE2>NE3)である。なお、通常時用値TH_cmd_opは、エンジン回転数NEが第1〜第3の所定値NE1〜NE3以外のときには、補間演算によって算出される。
また、上記のマップでは、通常時用値TH_cmd_opは、バルブリフトLiftinが大きいほど、またはエンジン回転数NEが高いほど、より大きな値に設定されている。これは、バルブリフトLiftinが大きいほど、またはエンジン回転数NEが高いほど、エンジン3の負荷が高いことで、より大きな吸入空気量が要求されるためである。
次いで、目標スロットル弁開度TH_cmdを、上記通常時用値TH_cmd_opに設定する(ステップ82)。次に、スロットル故障フラグF_THNGが「1」であるか否かを判別する(ステップ83)。このスロットル故障フラグF_THNGは、故障判定処理(図示せず)において、スロットル弁機構11が故障していると判定されたときに「1」にセットされるものである。
このステップ83の答がNOで、スロットル弁機構11が正常であるときには、次式(12)〜(15)に示す目標値フィルタ型2自由度スライディングモード制御アルゴリズムによって、スロットル弁開度THが目標スロットル弁開度TH_cmdに追従・収束するように、スロットル制御入力Uthを算出した(ステップ84)後、本処理を終了する。
この式(12)において、Krch_thは所定の到達則ゲインを、Kadp_thは所定の適応則ゲインを表しており、σ_thは、式(13)のように定義される切換関数である。また、式(13)において、E_thは、式(14)により算出される追従誤差である。さらに、式(14)において、TH_cmd_fは、目標スロットル弁開度TH_cmdのフィルタ値であり、式(15)に示す目標値フィルタアルゴリズム(一次遅れフィルタアルゴリズム)により算出される。
一方、前記ステップ83の答がYESで、F_THNG=1のとき、すなわちスロットル弁機構11が故障しているときには、スロットル制御入力Uthを、前述した故障時用値Uth_fsに設定した(ステップ85)後、本処理を終了する。これにより、前述したように、スロットル弁開度THが最小値TH_Lに保持され、それにより、停車中はアイドル運転やエンジン始動を適切に実行できると同時に、走行中は低速走行状態を維持することができる。
一方、前記ステップ80の答がYESで、当接開始フラグF_contmod、保持フラグF_pressmod、および第2過電流判定フラグF_Imot_emg2のいずれかが「1」であるとき、すなわち、短アーム65が最小リフトストッパ67aに当接し始めたとき、またはバルブリフトLiftinが最小値Liftin_Lに保持されているときには、アクセル開度APおよびエンジン回転数NEが、アイドル判定用の所定値AP_IDLEおよび所定値NE_IDLEよりもそれぞれ小さいか否かを判別する(ステップ86)。
この答がNOで、エンジン3がアイドル以外の運転状態にあるときには、次式(16)〜(19)に示す目標値フィルタ型2自由度スライディングモード制御アルゴリズムによって、実吸入空気量Gcylが図10の前記ステップ32、38または40で設定した目標吸入空気量Gcyl_cmdに追従・収束するように、目標スロットル弁開度のリフト保持時用値TH_cmd_gcを算出する(ステップ87)。次いで、目標スロットル弁開度TH_cmdを、このリフト保持時用値TH_cmd_gcに設定する(ステップ88)した後、前記ステップ83以降を実行する。なお、実吸入空気量Gcylは、前述したTH通過吸入空気量Gth、吸気管内絶対圧PBA、および吸気温TAを用いて、次式(20)により算出される。
この式(20)において、VBは吸気管内体積を表し、Rは所定の気体定数を表している。また、上記式(16)において、Krch_gcは所定の到達則ゲインを、Kadp_gcは所定の適応則ゲインを表しており、σ_gcは、式(17)のように定義される切換関数である。また、式(17)において、E_gcは、式(18)により算出される追従誤差である。さらに、式(18)において、Gcyl_cmd_fは、目標吸入空気量Gcyl_cmdのフィルタ値であり、式(19)に示す目標値フィルタアルゴリズム(一次遅れフィルタアルゴリズム)により算出される。
一方、前記ステップ86の答がYESで、エンジン3がアイドル運転状態にあるときには、次式(21)〜(24)に示す目標値フィルタ型2自由度スライディングモード制御アルゴリズムによって、エンジン回転数NEが所定の目標エンジン回転数NE_cmd(例えば650rpm)に追従・収束するように、目標スロットル弁開度のアイドル時用値TH_cmd_neを算出する(ステップ89)。次いで、目標スロットル弁開度TH_cmdを、このアイドル時用値TH_cmd_neに設定した後(ステップ90)、前記ステップ83以降を実行する。
この式(21)において、Krch_neは所定の到達則ゲインを、Kadp_neは所定の適応則ゲインを表しており、σ_neは、式(22)のように定義される切換関数である。また、式(22)において、E_neは、式(23)により算出される追従誤差である。さらに、式(23)において、NE_cmd_fは、目標エンジン回転数NE_cmdのフィルタ値であり、式(24)に示す目標値フィルタアルゴリズム(一次遅れフィルタアルゴリズム)により算出される。
以上のように、バルブリフトLiftinが最小値Liftin_Lになっているときには(ステップ80:YES)、エンジン回転数NEやアクセル開度APに代表されるエンジン3の運転状態に応じて算出した目標吸入空気量Gcyl_cmdに応じて、スロットル弁開度THが制御され(ステップ87,88および84)、スロットル弁開度THを主体とする吸入空気量の制御が実行される。また、この吸入空気量の制御は、短アーム65が最小リフトストッパ67aに当接し始めたと判定された直後(ステップ80:YES)に、開始される。したがって、バルブリフトLiftinを主体とする吸入空気量の制御から、スロットル弁開度THを主体とする吸入空気量の制御への移行を、その制御の中断を伴うことなく、円滑に行うことができる。
さらに、バルブリフトLiftinを主体とする吸入空気量制御の実行中には(ステップ80:NO)、これと並行して、スロットル弁開度THが、バルブリフトLiftinに応じて制御される(ステップ81,82および84)。このように、スロットル弁開度THを主体とする吸入空気量の制御を開始した時点では、スロットル弁開度THがバルブリフトLiftinに適した値にすでに制御されているので、この開始の際に、スロットル弁開度THを急激に大きく変化させることなく、その適正値に迅速に変化させることができる。これにより、吸入空気量を滑らかに変化させることができるので、エンジン回転数NEやエンジン3のトルクを段差なく滑らかに変化させることができる。
以上のように、本実施形態によれば、リフト制御入力ULiftinが、目標値フィルタ型2自由度スライディングモード制御アルゴリズムにより算出されるので、目標値フィルタアルゴリズムにより、目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従速度を適切に設定することができるとともに、フィードバック制御アルゴリズムにより、目標バルブリフトLiftin_cmdへのバルブリフトLiftinの追従挙動を適切に設定することができる。それにより、バルブリフトLiftinを、オーバーシュートの発生を回避しながら、目標バルブリフトLiftin_cmdに精度良く追従させることができる。その結果、短アーム65が最小リフトストッパ67aに当接する際の衝撃力を確実に低減することができる。
なお、本発明は、説明した実施形態に限定されることなく、種々の態様で実施することができる。例えば、実施形態は、本発明を最小リフトストッパ67aに適用した例であるが、最大リフトストッパ67bに適用してもよい。また、本発明を、規制部を最大側または最小側に1つ、あるいは3つ以上有するタイプの可変バルブリフト機構に適用してもよく、例えば、短アーム65の移動範囲における最小リフトストッパ67aと最大リフトストッパ67bとの中間位置に、出没可能なストッパを設けたものに適用してもよい。
さらに、実施形態では、可変吸気量機構として、スロットル弁機構11を用いたが、吸入空気量を変更できるものであれば、他の適当な機構を用いることもまた本発明の範囲内である。また、実施形態は、バルブリフトLiftinが目標バルブリフトLiftin_cmdに追従するように、リフト制御入力ULiftinを算出する所定の制御アルゴリズムとして、目標値フィルタ型2自由度スライディングモード制御アルゴリズムを用いた例であるが、所定の制御アルゴリズムはこれに限らず、バルブリフトLiftinが目標バルブリフトLiftin_cmdに追従するようにリフト制御入力ULiftinを算出できるものであればよい。例えば、PID制御アルゴリズムなどの一般的なフィードバック制御アルゴリズムを用いてもよい。
さらに、実施形態は、2自由度制御アルゴリズムとして、目標値フィルタ型2自由度スライディングモード制御アルゴリズムを用いた例であるが、2自由度制御アルゴリズムはこれに限らないことは言うまでもない。例えば、2自由度制御アルゴリズムとして、1次遅れフィルタアルゴリズムなどの目標値フィルタアルゴリズムに、PID制御アルゴリズムなどのフィードバック制御アルゴリズムを組み合わせたものを用いてもよい。
また、実施形態では、バルブリフトLiftinが最小値Liftin_Lに保持されたと判定された場合と、バルブリフトLiftinまたは目標バルブリフトLiftin_cmdが所定値Liftin_stbよりも大きい場合のいずれにおいても、切換関数設定パラメータPOLE_lfを通常時用値POLE_baseに設定したが、これに代えて、これを異なる値に設定してもよい。例えば、前者の場合には、バルブリフトLiftinを最小値Liftin_Lに保持するための駆動力はそれほど必要としないので、後者の場合よりも、切換関数設定パラメータPOLE_lfを外乱抑制度合が小さくなるように設定してもよい。
さらに、短アーム65が最小リフトストッパ67aに当接したと判定された後に、切換関数設定パラメータPOLE_lfを外乱抑制度合が増大するように設定するために、バルブリフトLiftinまたは目標バルブリフトLiftin_cmdと比較する判定値として所定値Liftin_stbを用いたが、これに代えて、最小値Liftin_Lを用いてもよい。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。