(57)【要約】【課題】複数気筒の全ての吸気バルブのバルブ可変量を一括して１つの可変バルブ機構で可変するシステムにおいて、同一気筒の２つの吸気バルブ間の吸入空気量ばらつきによる気筒間のトルクばらつきを補正できるようにする。【解決手段】通常は、気筒間の吸入空気量ばらつき率を算出して気筒間の吸入空気量ばらつき率に基づいて可変バルブリフト機構を所定タイミング毎に高速駆動してリフト量を気筒別に制御することで、吸入空気量を気筒別に制御して気筒間の吸入空気量ばらつきを補正する。このような気筒間の吸入空気量ばらつきを補正する制御中に、気筒間のトルクばらつきが許容範囲を越えた場合には、気筒間のトルクばらつき率を算出して、気筒間のトルクばらつき率に基づいて可変バルブリフト機構を所定タイミング毎に高速駆動してリフト量を気筒別に制御することで、トルクを気筒別に制御して気筒間のトルクばらつきを補正する。【選択図】  図１３
2004316613.tif 000002
【特許請求の範囲】
【請求項１】
各気筒に複数の吸気バルブを備えた内燃機関に適用され、該内燃機関の複数気筒の全ての吸気バルブのバルブ可変量を一括して１つの可変バルブ機構で可変する内燃機関の可変バルブ制御装置において、
各気筒の吸入空気量を検出又は推定する吸入空気量検出手段と、
前記吸入空気量検出手段の検出結果又は推定結果に基づいて気筒間の吸入空気量ばらつきの情報（以下「気筒間吸入空気量ばらつき情報」という）を算出する気筒間吸入空気量ばらつき算出手段と、
前記気筒間吸入空気量ばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に前記可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで気筒間の吸入空気量ばらつきを補正する気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を行う気筒別可変バルブ制御手段と、
気筒間のトルクばらつきの情報（以下「気筒間トルクばらつき情報」という）を算出する気筒間トルクばらつき算出手段とを備え、
前記気筒別可変バルブ制御手段は、前記気筒間トルクばらつき情報が所定の許容範囲を越えるときに、前記気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を禁止し、前記気筒間トルクばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に前記可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで気筒間のトルクばらつきを補正する気筒間トルクばらつき補正用の気筒別可変バルブ制御を行うことを特徴とする内燃機関の可変バルブ制御装置。
【請求項２】
前記気筒別可変バルブ制御手段による気筒別可変バルブ制御が正常か異常かを診断する診断手段と、
前記診断手段により前記気筒別可変バルブ制御手段による気筒別可変バルブ制御が異常であると診断されたときに、前記気筒別可変バルブ制御手段による気筒別可変バルブ制御を禁止して、内燃機関のスロットルバルブを制御して吸入空気量を制御するスロットル制御手段と
を備えていることを特徴とする請求項１に記載の内燃機関の可変バルブ制御装置。
【請求項３】
前記診断手段は、前記吸入空気量検出手段が正常であり、且つ、前記可変バルブ機構の応答時間と制御誤差のいずれか一方又は両方が所定の許容範囲内であれば、前記気筒別可変バルブ制御手段による気筒別可変バルブ制御が正常に行われていると判定することを特徴とする請求項２に記載の内燃機関の可変バルブ制御装置。
【請求項４】
前記気筒間トルクばらつき算出手段は、内燃機関の回転変動及び／又は燃焼圧変動に基づいて前記気筒間トルクばらつき情報を算出することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の可変バルブ制御装  置。
【請求項５】
各気筒に複数の吸気バルブを備えた内燃機関に適用され、該内燃機関の複数気筒の一方の吸気バルブのバルブ可変量を一括して可変する第１の可変バルブ機構と、前記複数気筒の他方の吸気バルブのバルブ可変量を一括して可変する第２の可変バルブ機構と備えた内燃機関の可変バルブ制御装置において、
各気筒の吸入空気量を検出又は推定する吸入空気量検出手段と、
前記吸入空気量検出手段の検出結果又は推定結果に基づいて気筒間の吸入空気量ばらつきの情報（以下「気筒間吸入空気量ばらつき情報」という）を算出する気筒間吸入空気量ばらつき算出手段と、
前記気筒間吸入空気量ばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に前記第１及び第２の可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで気筒間の吸入空気量ばらつきを補正する気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を行う気筒別可変バルブ制御手段と、
気筒間のトルクばらつきの情報（以下「気筒間トルクばらつき情報」という）を算出する気筒間トルクばらつき算出手段とを備え、
前記気筒別可変バルブ制御手段は、前記気筒間トルクばらつき情報が所定の許容範囲を越えるときに、前記気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を禁止し、前記気筒間トルクばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に前記第１及び第２の可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで気筒間のトルクばらつきを補正する気筒間トルクばらつき補正用の気筒別可変バルブ制御を行うことを特徴とする内燃機関の可変バルブ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の吸気バルブ又は排気バルブのバルブ可変量（リフト量、作用角、バルブタイミング等）を制御する内燃機関の可変バルブ制御装置に関するものである。
【０００２】
【従来の技術】
一般に、内燃機関の吸入空気量の制御はスロットルバルブによって行われるが、最近では、吸気バルブのリフト量を可変する可変バルブ機構を設け、アクセル開度やエンジン運転状態等に応じて吸気バルブのリフト量を可変することで吸入空気量を制御する技術が開発されている。この可変吸気バルブ制御による吸入空気量制御は、吸気バルブのリフト量を小さくすることによって、吸気通路をスロットルバルブで絞ることなく吸入空気量を少なくすることができるので、ポンピングロスを低減することができると共に、吸気バルブのリフト量を小さくすることによって、カム軸の駆動力も低減することができて、燃費を向上させることができるという利点がある。
【０００３】
このような可変バルブリフト制御システムにおいては、特許文献１（特開２００１−２６３１１０号公報）に示すように、各気筒毎に吸気バルブを駆動する電磁アクチュエータを設けたものがあるが、この構成では、気筒数と同数の電磁アクチュエータが必要になるため、システム構成が複雑化して高コストになる欠点がある。
【０００４】
そこで、複数気筒の吸気バルブのリフト量を一括して１つの可変バルブ機構で制御するシステムが開発されている。
【０００５】
しかし、この可変吸気バルブ制御による吸入空気量制御では、低負荷時に吸気バルブのリフト量が小さくなるため、各気筒で目標リフト量に対する実リフト量のばらつき（各気筒の部品公差や組付公差によるばらつき）の割合が大きくなって、気筒間の吸入空気量ばらつきが大きくなる傾向がある。このため、気筒間の吸入空気量ばらつきの影響を受けて各気筒のトルクや空燃比が変動し易く、気筒間のトルクばらつきや空燃比ばらつきが大きくなる傾向がある。
【０００６】
このような気筒間のトルクばらつきや空燃比ばらつきを補正する方法が幾つか提案されている。例えば、特許文献２（特開昭６２−１７３４２号公報）に示すように、クランク軸に設けたトルクセンサで各気筒毎にトルクを検出して、各気筒のトルクが全気筒の平均トルクになるように各気筒毎に燃料噴射量を補正するようにしたものがある。
【０００７】
或は、特許文献３（特開２０００−２２０４８９号公報）に示すように、排気管に設置した空燃比センサの出力に基づいて各気筒の空燃比を推定し、気筒間の空燃比ばらつきが小さくなるように各気筒毎に燃料噴射量を補正するようにしたものがある。
【０００８】
【特許文献１】
特開２００１−２６３１１０号公報（第３頁〜第６頁等）
【特許文献２】
特開昭６２−１７３４２号公報（第２頁等）
【特許文献３】
特開２０００−２２０４８９号公報（第２頁〜第３頁等）
【０００９】
【発明が解決しようとする課題】
ところで、上記特許文献２、３では、各気筒毎にトルクや空燃比を検出して、その検出結果に基づいて各気筒毎に燃料噴射量を補正することで、各気筒のトルクばらつきや空燃比ばらつきを補正するようにしている。しかし、気筒間の吸入空気量ばらつきが大きくなると、単に燃料噴射量を補正するだけでは、各気筒のトルクばらつきや空燃比ばらつきを十分な精度で補正することは困難である。しかも、気筒間の吸入空気量ばらつきや吸入燃料量ばらつき等の複数の要因が絡み合って気筒間のトルクばらつきや空燃比ばらつきが発生している場合も、十分な精度で補正することは困難である。
【００１０】
この対策として、各気筒の部品公差や組付公差を小さくして（つまり気筒間の吸気バルブリフト量のばらつきを小さくして）、気筒間の吸入空気量のばらつきを小さくすることが考えられるが、これを実現するには、部品の加工精度を向上させたり、部品を選択して組み付けたりする必要があり、部品コストや製造コストが高くなってしまうという欠点がある。
【００１１】
そこで、本発明者らは、複数気筒の吸気バルブのリフト量を一括して１つの可変バルブ機構で制御するシステムにおいて、各気筒の吸気行程毎（４気筒エンジンであれば１８０℃Ａ毎）に可変バルブ機構を高速駆動することで、気筒間の吸気バルブリフト量のばらつき（又は吸入空気量のばらつき）を補正する“気筒別可変バルブ制御”を研究している。
【００１２】
ところで、近年の内燃機関は、吸気効率を高めるために各気筒に２つの吸気バルブを備えた内燃機関が主流になってきている。このような内燃機関では、気筒間の吸気バルブリフト量のばらつきが生じる他に、同一気筒の２つの吸気バルブ間でもリフト量のばらつきが生じることは避けられない。この場合、１つの気筒の２つの吸気バルブ間でリフト量のばらつきが大きくなると、１つの気筒の２つの吸気バルブ間でも空気の吸入量に大きなばらつきが生じて、それによって、筒内ガスの流動状態（スワール流強度等）が変化するため、燃焼状態が変化してトルクが変化する。従って、１気筒当りの吸入空気量（２つの吸気バルブの合計吸入空気量）が気筒間でほぼ同じであっても、いずれかの気筒で２つの吸気バルブ間の吸入空気量のばらつき（以下「気筒内バルブ間吸入空気量ばらつき」という）が大きくなると、気筒間のトルクばらつきが大きくなってしまう。
【００１３】
このように、気筒内バルブ間吸入空気量ばらつきによって気筒間のトルクばらつきが発生している場合には、前述した気筒別可変バルブ制御によって気筒間の吸入空気量ばらつきを補正しても、気筒内バルブ間吸入空気量ばらつきを補正することは不可能であるため、気筒間のトルクばらつきを十分に補正することができず、ドライバビリティに悪影響を及ぼす懸念がある。
【００１４】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、気筒内バルブ間吸入空気量ばらつきによって気筒間のトルクばらつきが発生した場合でも、気筒間のトルクばらつきを補正することができ、ドライバビリティを向上させることができる内燃機関の可変バルブ制御装置を提供することにある。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、請求項１に係る発明は、各気筒に複数の吸気バルブを備えた内燃機関に適用され、複数気筒の全ての吸気バルブのバルブ可変量を一括して１つの可変バルブ機構で制御するシステムにおいて、各気筒の吸入空気量を検出又は推定する吸入空気量検出手段の検出結果又は推定結果に基づいて気筒間の吸入空気量ばらつきの情報（以下「気筒間吸入空気量ばらつき情報」という）を気筒間吸入空気量ばらつき算出手段により算出し、その気筒間吸入空気量ばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで気筒間の吸入空気量ばらつきを補正する気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を気筒別可変バルブ制御手段により行う。更に、気筒間のトルクばらつきの情報（以下「気筒間トルクばらつき情報」という）を気筒間トルクばらつき算出手段により算出し、その気筒間トルクばらつき情報が所定の許容範囲を越えるときには、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を禁止し、気筒間トルクばらつき情報を考慮して各気筒毎に目標バルブ可変量を設定して、所定タイミング毎に可変バルブ機構を次に吸気バルブが開かれる気筒の目標バルブ可変量に相当する位置まで駆動することで、気筒間のトルクばらつきを補正する気筒間トルクばらつき補正用の気筒別可変バルブ制御を行う。
【００１６】
この構成では、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を実行することで、気筒間吸入空気量ばらつき情報に基づいてバルブ可変量を気筒別に制御して、気筒間の吸入空気量ばらつきを補正することができる。これにより、気筒間の吸入空気量ばらつきによって発生する気筒間のトルクばらつきを補正することができる。
【００１７】
そして、この気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御によって気筒間の吸入空気量ばらつきを補正しているにも拘らず、気筒間のトルクばらつきが許容範囲を越える場合には、気筒内バルブ間吸入空気量ばらつき（同一気筒の複数の吸気バルブ間の吸入空気量ばらつき）によって気筒間のトルクばらつきが大きくなったと判断して、気筒間トルクばらつき補正用の気筒別可変バルブ制御に切り換える。この気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行することで、気筒間トルクばらつき情報に基づいて吸気バルブのバルブ可変量を気筒別に制御して、気筒間のトルクばらつきを補正することができる。これにより、気筒内バルブ間吸入空気量ばらつきによって気筒間のトルクばらつきが発生している場合でも、気筒間のトルクばらつきを補正することができ、ドライバビリティを向上させることができる。
【００１８】
また、気筒間トルクばらつき補正用の気筒別可変バルブ制御では、気筒間の吸入空気量ばらつき、気筒内バルブ間吸入空気量ばらつき、気筒間の燃料量ばらつき等の複数の要因が絡み合って発生した気筒間のトルクばらつきを小さくするように各気筒の吸気バルブのバルブ可変量を制御するため、必ずしも、気筒間の吸入空気量ばらつきが減少する方向に制御されるとは限らず、場合によっては、気筒間の吸入空気量ばらつきが増大して、気筒間の空燃比ばらつきが増大してしまう可能性がある。もし、気筒間の空燃比ばらつきが大きくなりすぎると、排出ガス空燃比の変動幅が触媒の浄化ウインドからはみ出して排気エミッションが悪化する可能性がある。
【００１９】
その点、本発明は、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を優先的に実行して、気筒間のトルクばらつきが許容範囲を越えた場合にのみ、気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行するようにしているため、気筒間トルクばらつき補正用の気筒別可変バルブ制御による排気エミッションへの影響を最小限に抑えることができる。
【００２０】
また、請求項２のように、気筒別可変バルブ制御手段による気筒別可変バルブ制御が正常か異常かを診断手段により診断し、その結果、気筒別可変バルブ制御が異常であると診断されたときには、気筒別可変バルブ制御を禁止して、スロットル制御手段により内燃機関のスロットルバルブを制御して吸入空気量を制御するようにすると良い。このようにすれば、気筒別可変バルブ制御を正常に行うことができない状態になった場合でも、スロットルバルブ制御による吸入空気量制御によって、ドライバビリティや排気エミッションを悪化させないように内燃機関を運転することができる。
【００２１】
この場合、請求項３のように、吸入空気量検出手段が正常であり、且つ、可変バルブ機構の応答時間と制御誤差のいずれか一方又は両方が所定の許容範囲内であれば、気筒別可変バルブ制御手段による気筒別可変バルブ制御が正常に行われていると判定するようにしても良い。例えば、吸入空気量検出手段が異常になれば、気筒間吸入空気量ばらつき情報の算出結果が異常となり、気筒別可変バルブ制御が異常となる。また、可変バルブ機構の応答時間が長くなれば、可変バルブ機構を高速駆動することができないため、可変バルブ機構の駆動途中（リフト可変動作の途中）で吸気バルブの開弁タイミングを迎えてしまい、目標リフト量に対応した適正なバルブプロフィールで吸気バルブを開弁することができなくなり、気筒別可変バルブ制御を正常に行うことができない。また、可変バルブ機構の制御誤差が異常に大きくなれば、気筒別可変バルブ制御を正常に行うことができない。従って、吸入空気量検出手段が異常の場合や、可変バルブ機構の応答時間、制御誤差が許容範囲を越えている場合は、気筒別可変バルブ制御が異常であると判定することができる。
【００２２】
また、請求項４のように、内燃機関の回転変動及び／又は燃焼圧変動に基づいて気筒間トルクばらつき情報を算出するようにしても良い。内燃機関のトルクと回転変動・燃焼圧変動との間には相関関係があるため、内燃機関の回転変動や燃焼圧変動に基づいて気筒間トルクばらつき情報を算出すれば、気筒間のトルクばらつきを精度良く反映した気筒間トルクばらつき情報を算出することができる。
【００２３】
尚、本発明は、請求項５のように、各気筒に複数の吸気バルブを備えた内燃機関において、複数気筒の一方の吸気バルブのバルブ可変量を一括して可変する第１の可変バルブ機構と、前記複数気筒の他方の吸気バルブのバルブ可変量を一括して可変する第２の可変バルブ機構と備えたシステムに適用しても良い。この場合でも、本発明の所期の目的を達成することができる。
【００２４】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関である例えば直列４気筒のエンジン１１は、第１気筒＃１〜第４気筒＃４の４つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４（吸入空気量検出手段）が設けられている。このエアフローメータ１４の下流側には、ＤＣモータ等によって開度調節されるスロットルバルブ１５とスロットル開度を検出するスロットル開度センサ１６とが設けられている。
【００２５】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７には、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２１が取り付けられ、各点火プラグ２１の火花放電によって筒内の混合気に着火される。
【００２６】
また、エンジン１１の吸気バルブ２８と排気バルブ２９には、それぞれリフト量を可変する可変バルブリフト機構３０，３１（可変バルブ機構）が設けられている。更に、吸気バルブ２８と排気バルブ２９に、それぞれバルブタイミング（開閉タイミング）を可変する可変バルブタイミング機構を設けるようにしても良い。
【００２７】
図２に示すように、エンジン１１は、各気筒に４つのバルブを有する４バルブエンジンであり、エンジン１１の各気筒には、２つの吸気ポート４５と２つの排気ポート４６が設けられ、各吸気ポート４５にそれぞれ吸気バルブ２８が設けられていると共に、各排気ポート４６にそれぞれ排気バルブ２９が設けられている。各気筒の２つの吸気バルブ２８のリフト量は一括して１つの可変バルブリフト機構３０で制御され、各気筒の２つの排気バルブ２９のリフト量は一括して１つの可変バルブリフト機構３１で制御されるようになっている。
【００２８】
一方、図１に示すように、エンジン１１の排気管２２には、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒２３が設けられ、この触媒２３の上流側に、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２５や、エンジン１１のクランク軸が一定クランク角（例えば３０℃Ａ）回転する毎にパルス信号を出力するクランク角センサ２６が取り付けられている。このクランク角センサ２６の出力信号に基づいてクランク角やエンジン回転速度が検出される。
【００２９】
これら各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）２７に入力される。このＥＣＵ２７は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２０の燃料噴射量や点火プラグ２１の点火時期を制御する。
【００３０】
次に、図３に基づいて吸気バルブ２８の可変バルブリフト機構３０の構成を説明する。尚、排気バルブ２９の可変バルブリフト機構３１は、吸気バルブ２８の可変バルブリフト機構３０と実質的に同一構成であるため、説明を省略する。
【００３１】
図３に示すように、吸気バルブ２８を駆動するためのカムシャフト３２とロッカーアーム３３との間に、リンクアーム３４が設けられ、このリンクアーム３４の上方に、ステッピングモータ等のモータ４１で回動駆動されるコントロールシャフト３５が設けられている。モータ４１の回動軸４１ａに連結されたウォーム４２と、コントロールシャフト３５と一体的に回動するように設けられたウォームホイール４３とが噛み合うことで、モータ４１の回転力がコントロールシャフト３５に伝達されるようになっている。また、モータ４１には、モータ４１の回転角度（回動軸４１ａの回転角度）を検出するエンコーダ等のモータ回転角度センサ４４（図１参照）が設けられている。
【００３２】
コントロールシャフト３５には、偏心カム３６が一体的に回動可能に設けられ、この偏心カム３６の軸心に対して偏心した位置に、リンクアーム３４が支持軸（図示せず）を介して揺動可能に支持されている。このリンクアーム３４の中央部には、揺動カム３８が設けられ、この揺動カム３８の側面が、カムシャフト３２に設けられたカム３７の外周面に当接している。また、リンクアーム３４の下端部には、押圧カム３９が設けられ、この押圧カム３９の下端面が、ロッカーアーム３３の中央部に設けられたローラ４０の上端面に当接している。
【００３３】
これにより、カムシャフト３２の回転によってカム３７が回転すると、そのカム３７の外周面形状に追従してリンクアーム３４の揺動カム３８が左右に移動して、リンクアーム３４が左右に揺動する。リンクアーム３４が左右に揺動すると、押圧カム３９が左右に移動するため、押圧カム３９の下端面形状に応じてロッカーアーム３３のローラ４０が上下に移動して、ロッカーアーム３３が上下に揺動する。このロッカーアーム３３の上下動によって吸気バブル２８が上下動するようになっている。
【００３４】
一方、コントロールシャフト３５の回転によって偏心カム３６が回転すると、リンクアーム３４の支持軸の位置が移動して、リンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置が変化する。また、リンクアーム３４の押圧カム３９の下端面は、左側部分にロッカーアーム３３の押圧量が０（吸気バルブ２８のリフト量が０）となるような曲率でベース曲面３９ａが形成され、このベース曲面３９ａから右方に向かうに従ってロッカーアーム３３の押圧量が大きくなる（吸気バルブ２８のリフト量が大きくなる）ような曲率で押圧曲面３９ｂが形成されている。
【００３５】
吸気バルブ２８の最大リフト量を大きくする高リフトモードの場合には、コントロールシャフト３５の回転によってリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を右方に移動させる。これにより、カム３７の回転によって押圧カム３９が左右に移動したときに押圧カム３９の下端面のうちローラ４０に接触する区間が右方に移動するため、ロッカーアーム３３の最大押圧量が大きくなって吸気バルブ２８の最大リフト量が大きくなると共に、ロッカーアーム３３が押圧される期間が長くなって吸気バブル２８の開弁期間が長くなる。
【００３６】
一方、吸気バルブ２８の最大リフト量を小さくする低リフトモードの場合には、コントロールシャフト３５の回転によってリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を左方に移動させる。これにより、カム３７の回転によって押圧カム３９が左右に移動したときに押圧カム３９の下端面のうちローラ４０に接触する区間が左方に移動するため、ロッカーアーム３３の最大押圧量が小さくなって吸気バルブ２８の最大リフト量が小さくなると共に、ロッカーアーム３３が押圧される期間が短くなって吸気バブル２８の開弁期間が短くなる。
【００３７】
以上説明した可変バルブリフト機構３０では、モータ４１でコントロールシャフト３５を回転させてリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を連続的に移動させれば、例えば図４に示すように、直列４気筒エンジン１１の全ての気筒（＃１〜＃４）の吸気バルブ２８の最大リフト量と開弁期間（以下単に「リフト量」という）を一括して連続的に可変することができる。
【００３８】
ＥＣＵ２７は、ＲＯＭに記憶された可変バルブ制御ルーチン（図示せず）を実行することで、アクセル開度やエンジン運転状態等に基づいて吸気バルブ２８の可変バルブリフト機構３０を制御して、吸気バルブ２８のリフト量を連続的に可変して吸入空気量を制御する。尚、可変バルブリフト機構３０と可変バルブタイミング機構を併用したシステムの場合には、リフト量とバルブタイミングの両方を連続的に可変して吸入空気量を制御するようにしても良い。
【００３９】
また、ＥＣＵ２７は、後述する気筒別可変バルブ制御用の各ルーチンを実行することで、通常は、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を実行する。この気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御では、エアフローメータ１４の出力信号に基づいて各気筒の気筒間吸入空気量ばらつき率ＤＥＶＡＩＲを算出し、この気筒間吸入空気量ばらつき率ＤＥＶＡＩＲに基づいて気筒間の吸入空気量ばらつきが小さくなるように各気筒毎に吸気バルブ２８の目標リフト量ＶＶＬＭを設定する。そして、図１４に示すように、全気筒の吸気バルブ２８が閉弁している全吸気バルブ閉弁期間になる毎に、可変バルブリフト機構３０のモータ４１を次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで高速駆動して吸気バルブ２８のリフト量を気筒別に制御することで、吸入空気量を気筒別に制御して気筒間の吸入空気量ばらつきを補正する。これにより、気筒間の吸入空気量ばらつきによって発生する気筒間のトルクばらつきを補正する。
【００４０】
更に、ＥＣＵ２７は、クランク角センサ２６の出力信号に基づいて算出した各気筒の回転変動ΔＴ３０に基づいて各気筒の気筒間トルクばらつき率ＤＥＶＴＲＱと気筒間トルクばらつき幅ΔＤＥＶＴＲＱ（気筒間トルクばらつき率ＤＥＶＴＲＱの最大値と最小値との差）を算出する。
【００４１】
そして、前述した気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御によって気筒間の吸入空気量ばらつきを補正しているにも拘らず、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが所定の許容範囲を越える場合には、図１５に示すように、同一気筒の２つの吸気バルブ２８間のリフト量のばらつき（以下「気筒内バルブ間リフト量ばらつき」という）が大きくなって、同一気筒の２つの吸気バルブ２８間の吸入空気量のばらつき（以下「気筒内バルブ間吸入空気量ばらつき」という）が大きくなったことによって、気筒間のトルクばらつきが大きくなったと判断して、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を禁止して、気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行する。
【００４２】
この気筒間トルクばらつき補正用の気筒別可変バルブ制御では、気筒間トルクばらつき率ＤＥＶＴＲＱに基づいて気筒間のトルクばらつきが小さくなるように各気筒毎に吸気バルブ２８の目標リフト量ＶＶＬＭを設定して、全吸気バルブ閉弁期間になる毎に、可変バルブリフト機構３０のモータ４１を次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで高速駆動して吸気バルブ２８のリフト量を気筒別に制御することで、トルクを気筒別に制御して気筒間のトルクばらつきを補正する。これにより、気筒内バルブ間吸入空気量ばらつきによって発生した気筒間のトルクばらつきを補正する。
【００４３】
以下、本実施形態でＥＣＵ２７が実行する気筒別可変バルブ制御用の各ルーチンの処理内容を説明する。
【００４４】
［気筒別可変バルブ制御切換判定ルーチン］
図５に示す気筒別可変バルブ制御切換判定ルーチンは、例えばイグニッションスイッチ（図示せず）のオン後に所定周期で実行される。本ルーチンが起動されると、まず、ステップ１０１で、後述する図６の気筒別モータ制御の異常診断ルーチンを実行して、気筒別モータ制御の異常診断フラグＸＡＣＴＤを、気筒別モータ制御の異常を意味する「ＯＮ」にセットするか又は気筒別モータ制御の正常を意味する「ＯＦＦ」にリセットする。
【００４５】
この後、ステップ１０２に進み、後述する図７の気筒別吸入空気量検出の異常診断ルーチンを実行して、気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤを気筒別吸入空気量検出の異常を意味する「ＯＮ」にセットするか又は気筒別吸入空気量検出の正常を意味する「ＯＦＦ」にリセットする。
【００４６】
この後、ステップ１０３に進み、気筒別モータ制御が正常（ＸＡＣＴＤ＝ＯＦＦ）であり、且つ、気筒別吸入空気量検出が正常（ＸＡＩＲＤ＝ＯＦＦ）であるか否かを判定することで、気筒別可変バルブ制御が正常に行われているか否かを判定する。このステップ１０３の処理が、特許請求の範囲でいう診断手段としての役割を果たす。
【００４７】
その結果、気筒別モータ制御が正常（ＸＡＣＴＤ＝ＯＦＦ）であり、且つ、気筒別吸入空気量検出が正常（ＸＡＩＲＤ＝ＯＦＦ）であると判定された場合には、気筒別可変バルブ制御が正常に行われていると判断して、ステップ１０４に進み、後述する図１２の気筒間トルクばらつき率算出ルーチンで算出した気筒間トルクばらつき幅ΔＤＥＶＴＲＱを読み込む。
【００４８】
この後、ステップ１０５に進み、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが所定の判定値Ｄ１以下であるか否かを判定する。この判定値Ｄ１  は、気筒間トルクばらつき幅ΔＤＥＶＴＲＱの許容範囲の限界値を設定する値であり、気筒間トルクばらつき幅ΔＤＥＶＴＲＱの許容範囲がドライバビリティに悪影響を及ぼさない範囲となるように判定値Ｄ１  が設定されている。
【００４９】
このステップ１０５で、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが判定値Ｄ１  以下であると判定された場合には、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが許容範囲内であるため、気筒間トルクばらつき補正用の気筒別可変バルブ制御に切り換える必要はないと判断して、ステップ１０６に進み、気筒別可変バルブ制御切換フラグＸＴＲＱＡＣＴを、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御の実行を意味する「ＯＦＦ」に維持（又はリセット）し、本ルーチンを終了する。
【００５０】
これに対して、上記ステップ１０５で、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが判定値Ｄ１  よりも大きいと判定された場合、つまり、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御によって気筒間の吸入空気量ばらつきを補正しているにも拘らず、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが許容範囲を越えた場合には、気筒内バルブ間吸入空気量ばらつきによって気筒間のトルクばらつきが大きくなったと判断して、ステップ１０７に進み、気筒別可変バルブ制御切換フラグＸＴＲＱＡＣＴを、気筒間トルクばらつき補正用の気筒別可変バルブ制御の実行を意味する「ＯＮ」にセットして、本ルーチンを終了する。
【００５１】
一方、上記ステップ１０３で、気筒別モータ制御が異常（ＸＡＣＴＤ＝ＯＮ）であると判定された場合、又は、気筒別吸入空気量検出が異常（ＸＡＩＲＤ＝ＯＮ）であると判定された場合には、気筒別可変バルブ制御を正常に行うことができないと判断して、ステップ１０８に進み、気筒別可変バルブ制御を禁止して、ステップ１０９に進み、アクセル開度やエンジン運転状態等に基づいてスロットルバルブ１５を制御して吸入空気量を制御する。このステップ１０９の処理が特許請求の範囲でいうスロットル制御手段としての役割を果たす。
【００５２】
このステップ１０９で、スロットルバルブ制御による吸入空気量制御のみを実行するようにしても良いが、各気筒共通の目標リフト量を所定の下限リフト量以上に制限して可変バルブ制御による吸入空気量制御を実行しながら、スロットルバルブ制御による吸入空気量制御を実行するようにしても良い。
【００５３】
［気筒別モータ制御の異常診断ルーチン］
図５のステップ１０１で、図６に示す気筒別モータ制御の異常診断ルーチンが起動されると、まず、ステップ２０１で、モータ回転角度センサ４４の出力信号に基づいて、可変バルブリフト機構３０のモータ４１を現在の位置から次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで駆動するのに要するモータ駆動時間ＴＡＣＴを算出する。このモータ駆動時間ＴＡＣＴは、可変バルブリフト機構３０の応答時間を評価する情報となる。
【００５４】
この後、ステップ２０２に進み、モータ駆動時間ＴＡＣＴをなまし処理して、最終的なモータ駆動時間ＴＡＣＴＳＭ（なまし値）を求める。
ＴＡＣＴＳＭ＝ＴＡＣＴＳＭ（ｏｌｄ）  ＋Ｋ×｛ＴＡＣＴ−ＴＡＣＴＳＭ（ｏｌｄ）  ｝
ここで、ＴＡＣＴＳＭ（ｏｌｄ）  は、前回のモータ駆動時間ＴＡＣＴＳＭ（なまし値）であり、Ｋは、なまし係数である。
【００５５】
この後、ステップ２０３でモータ回転角度センサ４４により検出した可変バルブリフト機構３０の実モータ回転角度ＶＶＬＡＣＴを読み込んだ後、ステップ２０４に進み、可変バルブリフト機構３０の目標モータ回転角度ＴＧＶＶＬＡＣＴ（後述する気筒別目標リフト量ＶＶＬＭに相当する回転角度）を読み込む。
【００５６】
この後、ステップ２０５に進み、クランク角カウンタＣＣＲＮＫのカウント値を読み込む。このクランク角カウンタＣＣＲＮＫは、クランク角センサ２６の出力信号に基づいて例えば３０℃Ａ毎に「１」ずつインクリメントされるため、クランク角カウンタＣＣＲＮＫの２４カウントが１サイクル（７２０℃Ａ）に相当する。尚、クランク角カウンタＣＣＲＮＫは、「２４」になった時点で「０」にリセットされる。また、クランク角カウンタＣＣＲＮＫ＝０のクランク回転位置が、第１気筒＃１の圧縮上死点（圧縮ＴＤＣ）に相当し、クランク角カウンタＣＣＲＮＫ＝６、１２、１８のクランク回転位置が、それぞれ第３気筒＃３、第４気筒＃４、第２気筒＃２の圧縮ＴＤＣに相当するように設定されている。
【００５７】
この後、ステップ２０６に進み、各気筒の気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）を算出する。ここで、（＃ｉ）は気筒番号であり、（＃１）〜（＃４）のいずれかを意味する。この気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）は、可変バルブリフト機構３０の制御誤差を評価する情報となる。
【００５８】
この場合、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間（つまり第１気筒＃１の吸気行程に対応する期間）は、その期間の１点又は複数点で検出した実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差を積算して、第１気筒＃１の吸気行程の実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差の積算値を更新し、その積算値を第１気筒＃１の気筒別制御精度値ＡＣＣＵＲＡ（＃１）とする。
【００５９】
クランク角カウンタＣＣＲＮＫ＝６〜１１の期間（つまり第２気筒＃２の吸気行程に対応する期間）は、その期間の１点又は複数点で検出した実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差を積算して、第２気筒＃２の吸気行程の実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差の積算値を更新し、その積算値を第２気筒＃２の気筒別制御精度値ＡＣＣＵＲＡ（＃２）とする。
【００６０】
クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間（つまり第３気筒＃３の吸気行程に対応する期間）は、その期間の１点又は複数点で検出した実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差を積算して、第３気筒＃３の吸気行程の実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差の積算値を更新し、その積算値を第３気筒＃３の気筒別制御精度値ＡＣＣＵＲＡ（＃３）とする。
【００６１】
クランク角カウンタＣＣＲＮＫ＝０〜５の期間（つまり第４気筒＃４の吸気行程に対応する期間）は、その期間の１点又は複数点で検出した実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差を積算して、第４気筒＃４の吸気行程の実モータ回転角度ＶＶＬＡＣＴと目標モータ回転角度ＴＧＶＶＬＡＣＴとの偏差の積算値を更新し、その積算値を第４気筒＃４の気筒別制御精度値ＡＣＣＵＲＡ（＃４）とする。
【００６２】
この後、ステップ２０７に進み、モータ駆動時間ＴＡＣＴＳＭが所定の判定値Ｔ１  以下であるか否かを判定すると共に、全気筒の気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）が所定の判定値Ａ１  以下であるか否かを判定する。
【００６３】
ここで、モータ駆動時間ＴＡＣＴＳＭの判定値Ｔ１  は、モータ駆動時間ＴＡＣＴＳＭの許容範囲の限界値を設定する値であり、モータ駆動時間ＴＡＣＴＳＭの許容範囲がドライバビリティに悪影響を及ぼさない範囲となるように判定値Ｔ１  が設定されている。
【００６４】
また、気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）の判定値Ａ１  は、気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）の許容範囲の限界値を設定する値であり、気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）の許容範囲がドライバビリティに悪影響を及ぼさない範囲となるように判定値Ａ１  が設定されている。
【００６５】
このステップ２０７で、モータ駆動時間ＴＡＣＴＳＭが判定値Ｔ１  以下であると判定され、且つ、全気筒の気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）が判定値Ａ１  以下であると判定された場合には、ステップ２０８に進み、気筒別モータ制御の異常診断フラグＸＡＣＴＤを、気筒別モータ制御の正常を意味する「ＯＦＦ」に維持（又はリセット）し、本ルーチンを終了する。
【００６６】
これに対して、上記ステップ２０７で、モータ駆動時間ＴＡＣＴＳＭが判定値Ｔ１  よりも大きいと判定された場合、又は、少なくとも１つの気筒の気筒別制御精度値ＡＣＣＵＲＡ（＃ｉ）が判定値Ａ１  よりも大きいと判定された場合には、ステップ２０９に進み、気筒別モータ制御の異常診断フラグＸＡＣＴＤを、気筒別モータ制御の異常を意味する「ＯＮ」にセットして、本ルーチンを終了する。
【００６７】
［気筒別吸入空気量検出の異常診断ルーチン］
図５のステップ１０２で、図７に示す気筒別吸入空気量検出の異常診断ルーチンが起動されると、まず、ステップ３０１で、エアフローメータ１４が正常であるか否かを、例えばエアフローメータ異常診断ルーチン（図示せず）の診断結果に基づいて判定する。例えば、エアフローメータ１４の信号線の断線や電源電圧異常等が発生すれば、エアフローメータ１４の出力電圧が異常な電圧となるため、エアフローメータ１４の出力電圧が正常な電圧範囲内であるか否かによりエアフローメータ１４の正常／異常を判定するようにしても良い。
【００６８】
このステップ３０１で、エアフローメータ１４が正常であると判定された場合には、ステップ３０２に進み、気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤを、気筒別吸入空気量検出の正常を意味する「ＯＦＦ」に維持（又はリセット）し、本ルーチンを終了する。
【００６９】
これに対して、上記ステップ３０１で、エアフローメータ１４が異常であると判定された場合には、ステップ３０３に進み、気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤを、気筒別吸入空気量検出の異常を意味する「ＯＮ」にセットして、本ルーチンを終了する。
【００７０】
尚、吸気管圧力センサ１８の出力信号に基づいて吸入空気量を検出する場合には、吸気管圧力センサ１８の異常／正常に応じて気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤのＯＮ／ＯＦＦを切り換えるようにすれば良い。
【００７１】
［気筒別可変バルブ制御ルーチン］
図８に示す気筒別可変バルブ制御ルーチンは、エアフローメータ１４の出力電圧のＡ／Ｄ変換タイミング（例えば４ｍｓ周期）で起動され、特許請求の範囲でいう気筒別可変バルブ制御手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ４０１で、気筒別可変バルブ制御実行条件が成立しているか否かを判定する。ここで、気筒別可変バルブ制御実行条件は、例えば、次の２つの条件▲１▼、▲２▼を両方とも満たすことである。
▲１▼始動後所定時間以上が経過していること（つまり始動直後の不安定な運転状態でないこと）
▲２▼過渡運転状態でないこと（つまり定常運転状態であること）
【００７２】
これら２つの条件▲１▼、▲２▼を両方とも満たせば、気筒別可変バルブ制御実行条件が成立するが、いずれか一方でも満たさない条件があれば、気筒別可変バルブ制御実行条件が不成立となる。もし、気筒別可変バルブ制御実行条件が不成立と判定されれば、ステップ４０２以降の気筒別可変バルブ制御に関する処理を実行することなく、本ルーチンを終了する。
【００７３】
一方、上記ステップ４０１で、気筒別可変バルブ制御実行条件が成立していると判定された場合には、ステップ４０２以降の気筒別可変バルブ制御に関する処理を次のようにして実行する。まず、ステップ４０２で、後述する図１０の気筒間ばらつき率算出ルーチンを実行して、各気筒の気筒間吸入空気量ばらつき率ＤＥＶ（＃ｉ）＝ＤＥＶＡＩＲ（＃ｉ）を算出する。又は各気筒の気筒間トルクばらつき率ＤＥＶ（＃ｉ）＝ＤＥＶＴＲＱ（＃ｉ）を算出する。
【００７４】
この後、ステップ４０３に進み、各気筒毎に気筒間ばらつき率ＤＥＶ（＃ｉ）に応じたリフト補正量ＦＶＶＬ（＃ｉ）を図９のマップを用いて算出する。図９のマップは、気筒間ばらつき率ＤＥＶ（＃ｉ）が１よりも大きい領域では、リフト補正量ＦＶＶＬ（＃ｉ）が減量値（マイナス値）となり、気筒間ばらつき率ＤＥＶ（＃ｉ）が１よりも小さい領域では、リフト補正量ＦＶＶＬ（＃ｉ）が増量値（プラス値）となる。つまり、ある気筒の吸入空気量（又はトルク）が全気筒の平均吸入空気量（又は平均トルク）よりも多くなるほど、リフト補正量ＦＶＶＬ（＃ｉ）による減量補正量が大きくなり、反対に、ある気筒の吸入空気量（又はトルク）が全気筒の平均吸入空気量（又は平均トルク）よりも少なくなるほど、リフト補正量ＦＶＶＬ（＃ｉ）による増量補正量が大きくなって、気筒間の実吸入空気量のばらつき（実トルクのばらつき）が小さくなるようにしている。尚、気筒間ばらつき率ＤＥＶ（＃ｉ）が１付近の所定領域では、リフト補正量ＦＶＶＬ（＃ｉ）＝０に設定され、吸気バルブリフト量ＶＶＬが補正されない。
【００７５】
リフト補正量ＦＶＶＬ（＃ｉ）の算出後、ステップ４０４に進み、全気筒の吸気バルブ２８が閉弁しているか否かを判定し、少なくとも１つの吸気バルブ２８が開弁していると判定されれば、そのまま本ルーチンを終了する。
【００７６】
その後、ステップ４０４で、全気筒の吸気バルブ２８が閉弁していると判定されたときに、ステップ４０５に進み、補正前の全気筒の平均リフト量ＶＶＬに次の吸気気筒のリフト補正量ＦＶＶＬ（＃ｉ）を加算して、気筒別目標リフト量ＶＶＬＭを求める。
【００７７】
次の吸気気筒が第１気筒＃１のとき（つまり第１気筒＃１の吸気行程前）には、第１気筒＃１のリフト補正量ＦＶＶＬ（＃１）を全気筒の平均リフト量ＶＶＬに加算して気筒別目標リフト量ＶＶＬＭを求める。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ（＃１）
【００７８】
次の吸気気筒が第２気筒＃２のとき（つまり第２気筒＃２の吸気行程前）には、第２気筒＃２のリフト補正量ＦＶＶＬ（＃２）を全気筒の平均リフト量ＶＶＬに加算して気筒別目標リフト量ＶＶＬＭを求める。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ（＃２）
【００７９】
次の吸気気筒が第３気筒＃３のとき（つまり第３気筒＃３の吸気行程前）には、第３気筒＃３のリフト補正量ＦＶＶＬ（＃３）を全気筒の平均リフト量ＶＶＬに加算して気筒別目標リフト量ＶＶＬＭを求める。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ（＃３）
【００８０】
次の吸気気筒が第４気筒＃４のとき（つまり第４気筒＃４の吸気行程前）には、第４気筒＃４のリフト補正量ＦＶＶＬ（＃４）を全気筒の平均リフト量ＶＶＬに加算して気筒別目標リフト量ＶＶＬＭを求める。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ（＃４）
【００８１】
このようにして、全気筒の吸気バルブ２８が閉弁している全吸気バルブ閉弁期間になる毎に、次の吸気気筒のリフト補正量ＦＶＶＬ（＃ｉ）を用いて、次の吸気気筒の目標リフト量ＶＶＬＭを設定する。
【００８２】
この後、ステップ４０６に進み、全吸気バルブ閉弁期間になる毎に、気筒別目標リフト量ＶＶＬＭに応じて可変バルブリフト機構３０のモータ４１を高速駆動して、全吸気バルブ閉弁期間内に可変バルブリフト機構３０のモータ４１を次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで高速駆動する。
【００８３】
これにより、各気筒の気筒間吸入空気量ばらつき率ＤＥＶ（＃ｉ）＝ＤＥＶＡＩＲ（＃ｉ）に基づいて気筒別目標リフト量ＶＶＬＭを設定した場合には、その気筒別目標リフト量ＶＶＬＭに基づいて吸気バルブ２８のリフト量を気筒別に制御することで、吸入空気量を気筒別に制御して気筒間の吸入空気量ばらつきを補正する“気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御”を実行する。
【００８４】
一方、各気筒の気筒間トルクばらつき率ＤＥＶ（＃ｉ）＝ＤＥＶＴＲＱ（＃ｉ）に基づいて気筒別目標リフト量ＶＶＬＭを設定した場合には、その気筒別目標リフト量ＶＶＬＭに基づいて吸気バルブ２８のリフト量を気筒別に制御することで、トルクを気筒別に制御して気筒間のトルクばらつきを補正する“気筒間トルクばらつき補正用の気筒別可変バルブ制御”を実行する。
【００８５】
［気筒間ばらつき率算出ルーチン］
図８のステップ４０２で、図１０に示す気筒間ばらつき率算出ルーチンが起動されると、まず、ステップ５０１で、後述する図１１の気筒間吸入空気量ばらつき率算出ルーチンを実行して、エアフローメータ１４の出力電圧に基づいて各気筒の気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を算出する。
【００８６】
この後、ステップ５０２に進み、後述する図１２の気筒間トルクばらつき率算出ルーチンを実行して、クランク角センサ２６の出力信号に基づいて算出した各気筒の回転変動ΔＴ３０（＃ｉ）に基づいて各気筒の気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）を算出する。
【００８７】
この後、ステップ５０３に進み、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御の実行指令が有るか否かを、気筒別可変バルブ制御切換フラグＸＴＲＱＡＣＴが「ＯＦＦ」にリセットされているか否かによって判定する。
【００８８】
その結果、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御の実行指令有り（ＸＴＲＱＡＣＴ＝ＯＦＦ）と判定された場合には、ステップ５０４に進み、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を実行するために、気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を気筒間ばらつき率ＤＥＶ（＃ｉ）として採用し（ＤＥＶ（＃ｉ）＝ＤＥＶＡＩＲ（＃ｉ））、本ルーチンを終了する。
【００８９】
一方、上記ステップ５０３で、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御の実行指令無しと判定された場合には、ステップ５０５に進み、気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行するために、気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）を気筒間ばらつき率ＤＥＶ（＃ｉ）として採用し（ＤＥＶ（＃ｉ）＝ＤＥＶＴＲＱ（＃ｉ））、本ルーチンを終了する。
【００９０】
［気筒間吸入空気量ばらつき率算出ルーチン］
図１１に示す気筒間吸入空気量ばらつき率算出ルーチンは、図１０のステップ５０１で起動され、特許請求の範囲でいう気筒間吸入空気量ばらつき算出手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ６０１で、エアフローメータ１４で検出した瞬時空気流量ＧＡを読み込んだ後、ステップ６０２に進み、クランク角カウンタＣＣＲＮＫのカウント値を読み込む。
【００９１】
この後、ステップ６０３に進み、各気筒の吸入空気量平均値ＧＡａｖｅ（＃ｉ）  を算出する。
この場合、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間（つまり第１気筒＃１の吸気行程に対応する期間）は、その期間の瞬時空気流量ＧＡの平均値を第１気筒＃１の吸入空気流量平均値ＧＡａｖｅ（＃１）  とする。
【００９２】
クランク角カウンタＣＣＲＮＫ＝６〜１１の期間（つまり第２気筒＃２の吸気行程に対応する期間）は、その期間の瞬時空気流量ＧＡの平均値を、第２気筒＃２の吸入空気流量平均値ＧＡａｖｅ（＃２）  とする。
【００９３】
クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間（つまり第３気筒＃３の吸気行程に対応する期間）は、その期間の瞬時空気流量ＧＡの平均値を、第３気筒＃３の吸入空気流量平均値ＧＡａｖｅ（＃３）  とする。
【００９４】
クランク角カウンタＣＣＲＮＫ＝０〜５の期間（つまり第４気筒＃４の吸気行程に対応する期間）は、その期間の瞬時空気流量ＧＡの平均値を、第４気筒＃４の吸入空気流量平均値ＧＡａｖｅ（＃４）  とする。
この後、ステップ６０４で、各気筒の気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を次式により算出する。
【００９５】
【数１】
2004316613.tif 000003
【００９６】
上式の分母は、全気筒の吸入空気流量平均値ＧＡａｖｅ（＃１）  〜ＧＡａｖｅ（＃４）  の平均値である。
尚、図１１の気筒間吸入空気量ばらつき率算出ルーチンでは、各気筒の吸入空気流量平均値ＧＡａｖｅ（＃ｉ）  を用いて気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を算出したが、各気筒の吸入空気流量極大値や吸入空気量積算値を用いて気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を算出するようにしても良い。また、各気筒の吸入空気量に応じて発生する吸気脈動がエアフローメータ１４で検出されるまでの時間遅れ等を考慮して、各気筒の吸入空気流量平均値の算出期間を適宜変更しても良い。
【００９７】
また、吸気管圧力センサ１８の出力に基づいて気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を算出するようにしても良い。また、各気筒の筒内圧を検出する筒内圧センサや各気筒のバルブリフト量を検出するリフトセンサを備えたシステムでは、筒内圧センサの出力やリフトセンサの出力に基づいて気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）を算出するようにしても良い。
【００９８】
［気筒間トルクばらつき率算出ルーチン］
図１２に示す気筒間トルクばらつき率算出ルーチンは、図１０のステップ５０２で起動され、特許請求の範囲でいう気筒間トルクばらつき算出手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ７０１で、クランク角カウンタＣＣＲＮＫのカウント値を読み込む。前述したように、このクランク角カウンタＣＣＲＮＫは、クランク角センサ２６の出力信号に基づいて例えば３０℃Ａ毎に「１」ずつインクリメントされる。
【００９９】
この後、ステップ７０２に進み、クランク軸が３０℃Ａ回転するのに要した時間Ｔ３０（クランク角カウンタＣＣＲＮＫの前回のインクリメントタイミングから今回のインクリメントタイミングまでの時間）を読み込む。
【０１００】
そして、次のステップ７０３で、各気筒の燃焼行程に対応する期間のＴ３０の最小値Ｔ３０ＭＩＮ（＃ｉ）と最大値Ｔ３０ＭＡＸ（＃ｉ）を算出する。
第１気筒＃１の最小値Ｔ３０ＭＩＮ（＃１）と最大値Ｔ３０ＭＡＸ（＃１）を算出する場合は、クランク角カウンタＣＣＲＮＫ＝０〜５の期間、つまり、第１気筒＃１の燃焼行程に対応する期間のＴ３０の最小値と最大値を算出する。
【０１０１】
第２気筒＃２の最小値Ｔ３０ＭＩＮ（＃２）と最大値Ｔ３０ＭＡＸ（＃２）を算出する場合は、クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間、つまり、第２気筒＃２の燃焼行程に対応する期間のＴ３０の最小値と最大値を算出する。
【０１０２】
第３気筒＃３の最小値Ｔ３０ＭＩＮ（＃３）と最大値Ｔ３０ＭＡＸ（＃３）を算出する場合は、クランク角カウンタＣＣＲＮＫ＝６〜１１の期間、つまり、第３気筒＃３の燃焼行程に対応する期間のＴ３０の最小値と最大値を算出する。
【０１０３】
第４気筒＃４の最小値Ｔ３０ＭＩＮ（＃４）と最大値Ｔ３０ＭＡＸ（＃４）を算出する場合は、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間、つまり、第４気筒＃４の燃焼行程に対応する期間のＴ３０の最小値と最大値を算出する。
【０１０４】
この後、ステップ７０４に進み、各気筒の回転変動ΔＴ３０（＃ｉ）を次式により算出する。
ΔＴ３０（＃ｉ）＝Ｔ３０ＭＡＸ（＃ｉ）−Ｔ３０ＭＩＮ（＃ｉ）
【０１０５】
この後、ステップ７０５に進み、全気筒の回転変動ΔＴ３０（＃１）〜ΔＴ３０（＃４）の平均値ΔＴ３０（ａｖｅ）  を算出した後、ステップ７０６に進み、各気筒の気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）を次式により算出する。
ＤＥＶＴＲＱ（＃ｉ）＝ΔＴ３０（＃ｉ）／ΔＴ３０（ａｖｅ）
【０１０６】
この後、ステップ７０７に進み、気筒間トルクばらつき幅ΔＤＥＶＴＲＱを次式により算出する。
ΔＤＥＶＴＲＱ＝ＤＥＶＴＲＱ（＃ｉ）の最大値−ＤＥＶＴＲＱ（＃ｉ）の最小値
尚、図１２の気筒間トルクばらつき率算出ルーチンでは、各気筒の回転変動ΔＴ３０（＃ｉ）を用いて気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）を算出したが、燃焼圧変動を用いて気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）を算出するようにしても良い。
【０１０７】
以上説明した本実施形態の実行例を図１３乃至図１５に示すタイムチャートを用いて説明する。図１３に示すように、通常（気筒別可変バルブ制御切換フラグＸＴＲＱＡＣＴがＯＦＦされている期間）は、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を実行する。この気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御では、各気筒の気筒間吸入空気量ばらつき率ＤＥＶＡＩＲ（＃ｉ）に基づいて気筒間の吸入空気量ばらつきが小さくなるように各気筒の目標リフト量ＶＶＬＭを設定する。そして、図１４に示すように、全気筒の吸気バルブ２８が閉弁している全吸気バルブ閉弁期間になる毎に、可変バルブリフト機構３０のモータ４１を次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで高速駆動して吸気バルブ２８のリフト量を気筒別に制御することで、吸入空気量を気筒別に制御して気筒間の吸入空気量ばらつきを補正する。これにより、気筒間の吸入空気量ばらつきによって発生する気筒間のトルクばらつきを補正することができる。
【０１０８】
その後、気筒別モータ制御が正常（気筒別モータ制御の異常診断フラグＸＡＣＴＤ＝ＯＦＦ）で、且つ、気筒別吸入空気量検出が正常（気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤ＝ＯＦＦ）の状態、つまり、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御が正常に行われている状態で、気筒間トルクばらつき幅ΔＤＥＶＴＲＱ（気筒間トルクばらつき率ＤＥＶＴＲＱの最大値と最小値との差）が判定値Ｄ１  を越えると、その時点ｔ１  で、気筒内バルブ間リフト量ばらつき（つまり気筒内バルブ間吸入空気量ばらつき）が大きいと判断して、気筒別可変バルブ制御切換フラグＸＴＲＱＡＣＴをＯＮにセットする。これにより、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を禁止して、気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行する。
【０１０９】
この気筒間トルクばらつき補正用の気筒別可変バルブ制御では、各気筒の気筒間トルクばらつき率ＤＥＶＴＲＱ（＃ｉ）に基づいて気筒間のトルクばらつきが小さくなるように各気筒の目標リフト量ＶＶＬＭを設定し、全吸気バルブ閉弁期間になる毎に、可変バルブリフト機構３０のモータ４１を次の吸気気筒の目標リフト量ＶＶＬＭに相当する位置まで高速駆動して吸気バルブ２８のリフト量を気筒別に制御することで、トルクを気筒別に制御して気筒間のトルクばらつきを補正する。これにより、気筒内バルブ間吸入空気量ばらつきによって気筒間のトルクばらつきが発生している場合でも、気筒間のトルクばらつきを補正することができ、ドライバビリティを向上させることができる。
【０１１０】
また、気筒間トルクばらつき補正用の気筒別可変バルブ制御では、気筒間の吸入空気量ばらつき、気筒内バルブ間吸入空気量ばらつき、気筒間の燃料量ばらつき等の複数の要因が絡み合って発生した気筒間のトルクばらつきを小さくするように各気筒のリフト量を制御するため、必ずしも、気筒間の吸入空気量ばらつきが減少するとは限らず、場合によっては、気筒間の吸入空気量ばらつきが増大して、気筒間の空燃比ばらつきが増大してしまう可能性がある。気筒間の空燃比ばらつきが大きくなると、排出ガス空燃比の変動幅が触媒２３の浄化ウインドからはみ出して排気エミッションが悪化する懸念がある。
【０１１１】
その点、本実施形態では、気筒間吸入空気量ばらつき補正用の気筒別可変バルブ制御を優先的に実行して、気筒間トルクばらつき幅ΔＤＥＶＴＲＱが判定値Ｄ１  を越えた場合にのみ、気筒間トルクばらつき補正用の気筒別可変バルブ制御を実行するようにしたので、気筒間トルクばらつき補正用の気筒別可変バルブ制御による排気エミッションへの悪影響を最小限に抑えることができる。
【０１１２】
また、本実施形態では、気筒別モータ制御が異常（気筒別モータ制御の異常診断フラグＸＡＣＴＤ＝ＯＮ）、又は、気筒別吸入空気量検出が異常（気筒別吸入空気量検出の異常診断フラグＸＡＩＲＤ＝ＯＮ）の場合は、気筒別可変バルブ制御を正常に行うことができないと判断して、スロットルバルブ制御による吸入空気量制御に切り換えるようにしたので、気筒別可変バルブ制御を正常に行うことができない状態になった場合でも、スロットルバルブ制御による吸入空気量制御によって、ドライバビリティや排気エミッションを悪化させないようにエンジン１１を運転することができる。
【０１１３】
尚、本実施形態では、エンジン１１の複数気筒の全ての吸気バルブ２８のリフト量を一括して１つの可変バルブリフト機構３０で制御するようにしたが、複数気筒の一方の吸気バルブのバルブ可変量を一括して可変する第１の可変バルブ機構と、前記複数気筒の他方の吸気バルブのバルブ可変量を一括して可変する第２の可変バルブ機構と備えたシステムに本発明を適用しても良い。
【０１１４】
また、本発明の適用範囲は、吸気バルブのリフト量を可変する可変バルブ制御システムに限定されず、吸気バルブのリフト量、作用角、バルブタイミングの少なくとも１つを可変する可変バルブ制御システムに広く適用することができる。
【０１１５】
その他、本発明は、直列エンジンに限定されず、Ｖ型エンジン、水平対向エンジン等、種々の複数気筒エンジンに適用でき、気筒数も適宜変更しても良いことは言うまでもない。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるエンジン制御システム全体の概略構成図
【図２】吸気バルブ及び排気バルブとその周辺部の平面図
【図３】可変バルブリフト機構の正面図
【図４】可変バルブリフト機構によるバルブリフト量の連続可変動作を説明するためのバルブリフト特性図
【図５】気筒別可変バルブ制御切換判定ルーチンの処理の流れを示すフローチャート
【図６】気筒別モータ制御の異常診断ルーチンの処理の流れを示すフローチャート
【図７】気筒別吸入空気量検出の異常診断ルーチンの処理の流れを示すフローチャート
【図８】気筒別可変バルブ制御ルーチンの処理の流れを示すフローチャート
【図９】リフト補正量ＦＶＶＬのマップを概念的
【図１０】気筒間ばらつき率算出ルーチンの処理の流れを示すフローチャート
【図１１】気筒間吸入空気量ばらつき率算出ルーチンの処理の流れを示すフローチャート
【図１２】気筒間トルクばらつき率算出ルーチンの処理の流れを示すフローチャート
【図１３】気筒間ばらつき補正の実行例を示すタイムチャート
【図１４】気筒内バルブ間リフト量ばらつきが小さい時の気筒別可変バルブ制御の実行例を示すタイムチャート
【図１５】気筒内バルブ間リフト量ばらつきが大きい時の気筒別可変バルブ制御の実行例を示すタイムチャート
【符号の説明】
１１…エンジン（内燃機関）、１２…吸気管、１４…エアフローメータ（吸入空気量検出手段）、１５…スロットルバルブ、２０…燃料噴射弁、２１…点火プラグ、２２…排気管、２６…クランク角センサ、２７…ＥＣＵ（気筒間吸入空気量ばらつき算出手段，気筒別可変バルブ制御手段，気筒間トルクばらつき算出手段，診断手段，スロットル制御手段）、２８…吸気バルブ、２９…排気バルブ、３０，３１…可変バルブリフト機構（可変バルブ機構）、４１…モータ、４４…モータ回転角度センサ、４５…吸気ポート、４６…排気ポート。
【図１】
2004316613.tif 000004
【図２】
2004316613.tif 000005
【図３】
2004316613.tif 000006
【図４】
2004316613.tif 000007
【図５】
2004316613.tif 000008
【図６】
2004316613.tif 000009
【図７】
2004316613.tif 000010
【図８】
2004316613.tif 000011
【図９】
2004316613.tif 000012
【図１０】
2004316613.tif 000013
【図１１】
2004316613.tif 000014
【図１２】
2004316613.tif 000015
【図１３】
2004316613.tif 000016
【図１４】
2004316613.tif 000017
【図１５】
2004316613.tif 000018