(57)【要約】【課題】内燃機関のほぼ全ての運転領域で気筒間の吸入空気量ばらつきを精度良く検出できるようにする。【解決手段】１サイクル毎にエアフローメータの出力に基づいて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出し、所定のばらつき学習実行条件が成立して気筒間吸入空気量ばらつき率ＤＥＶ(#i)の算出精度を確保できる運転状態のときに算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習し、そのときの平均吸気バルブリフト量ＶＬＬを基準吸気バルブリフト量ＧＶＶＬとして学習する。その後、ばらつき学習実行条件が不成立となる運転状態のときには、気筒間ばらつき学習値ＧＤＥＶ(#i)と基準吸気バルブリフト量ＧＶＶＬと現在の平均吸気バルブリフト量ＶＬＬとに基づいて、現在の平均吸気バルブリフト量ＶＬＬに応じた気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。【選択図】  図１１
2004190593.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を有する内燃機関の吸気管を流れる吸入空気量、吸気管圧力、筒内圧の少なくとも１つを検出する検出手段と、
所定のばらつき学習実行条件が成立する運転領域のときに、前記検出手段の出力に基づいて気筒間の吸入空気量ばらつき率又は気筒別吸入空気量を算出してその算出値を気筒間ばらつき学習値として学習する気筒間ばらつき学習手段と、
前記ばらつき学習実行条件が成立しない運転領域のときに、前記気筒間ばらつき学習値を用いてその時点の運転領域に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を推定する気筒間ばらつき推定手段と
を備えていることを特徴とする内燃機関の気筒間ばらつき検出装置。
【請求項２】
前記ばらつき学習実行条件は、燃料カット時及び／又はクランクキング時に成立することを特徴とする請求項１に記載の内燃機関の気筒間ばらつき検出装置。
【請求項３】
前記ばらつき学習実行条件は、減速運転時に成立することを特徴とする請求項１又は２に記載の内燃機関の気筒間ばらつき検出装置。
【請求項４】
前記ばらつき学習実行条件は、機関回転速度が所定回転速度以下で且つ吸入空気量が所定量以上のときに成立することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の気筒間ばらつき検出装置。
【請求項５】
前記気筒間ばらつき学習手段は、前記ばらつき学習実行条件が成立する運転領域のときに、吸気バルブ、排気バルブ、スロットルバルブのうちの少なくとも１つのバルブ動作条件を所定の学習時バルブ動作条件に変更して前記気筒間ばらつき学習値を学習することを特徴とする請求項１乃至４のいずれかに記載の内燃機関の気筒間ばらつき検出装置。
【請求項６】
前記気筒間ばらつき学習手段は、前記ばらつき学習実行条件が成立する運転領域のときに、前記スロットルバルブの開度を全開又は吸気管圧力が大気圧付近となる開度に変更して前記気筒間ばらつき学習値を学習することを特徴とする請求項５に記載の内燃機関の気筒間ばらつき検出装置。
【請求項７】
前記気筒間ばらつき学習手段は、前記ばらつき学習実行条件が成立する運転領域のときに、前記吸気バルブのリフト量を所定リフト量以下又は最小値に変更して前記気筒間ばらつき学習値を学習することを特徴とする請求項５又は６に記載の内燃機関の気筒間ばらつき検出装置。
【請求項８】
前記気筒間ばらつき学習手段は、前記ばらつき学習実行条件が成立する運転領域のときに、吸排気バルブのバルブタイミングをバルブオーバーラップがなく且つ吸気バルブの開弁期間が上死点から下死点までの間に収まるように変更して前記気筒間ばらつき学習値を学習することを特徴とする請求項５乃至７のいずれかに記載の内燃機関の気筒間ばらつき検出装置。
【請求項９】
可変吸気バルブ機構を制御して吸気バルブのリフト量を可変することで吸入空気量を制御する手段を備えていることを特徴とする請求項１乃至８のいずれかに記載の内燃機関の気筒間ばらつき検出装置。
【請求項１０】
前記気筒間ばらつき推定手段は、前記気筒間ばらつき学習手段により学習した気筒間ばらつき学習値と、該気筒間ばらつき学習値を学習したときの吸気バルブのリフト量と、現在の吸気バルブのリフト量とを用いて、現在の吸気バルブのリフト量に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を推定することを特徴とする請求項９に記載の内燃機関の気筒間ばらつき検出装置。
【請求項１１】
前記気筒間ばらつき学習手段による気筒間ばらつき学習値の学習が完了するまで前記可変吸気バルブ機構による吸入空気量制御を禁止してスロットルバルブにより吸入空気量を制御し、前記気筒間ばらつき学習値の学習が完了した後に前記可変吸気バルブ機構による吸入空気量制御を実行する手段を備えていることを特徴とする請求項９又は１０に記載の内燃機関の気筒間ばらつき検出装置。
【請求項１２】
可変吸気バルブ機構を制御して吸気バルブのリフト量を可変することで吸入空気量を制御する手段と、
複数の気筒を有する内燃機関の吸気管を流れる吸入空気量、吸気管圧力、筒内圧の少なくとも１つを検出する検出手段と、
前記検出手段の出力に基づいて気筒間の吸入空気量ばらつき率又は気筒別吸入空気量を算出してその算出値を気筒間ばらつき学習値として学習する気筒間ばらつき学習手段と、
前記気筒間ばらつき学習手段による気筒間ばらつき学習値の学習が完了するまで前記可変吸気バルブ機構による吸入空気量制御を禁止してスロットルバルブにより吸入空気量を制御し、前記気筒間ばらつき学習値の学習が完了した後に前記可変吸気バルブ機構による吸入空気量制御を実行する手段と
を備えていることを特徴とする内燃機関の気筒間ばらつき検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、気筒間の吸入空気量ばらつき率や気筒別吸入空気量を検出する内燃機関の気筒間ばらつき検出装置に関するものである。
【０００２】
【従来の技術】
一般に、複数気筒の内燃機関では、各気筒の吸気マニホールド形状の違いや、吸気バルブのバルブクリアランスのばらつき等によって各気筒の吸入空気量（筒内充填空気量）にばらつきが生じる。このような気筒間の吸入空気量ばらつきは、各気筒のトルクや空燃比にばらつきを生じさせる原因となる。気筒間のトルクばらつきが大きくなると、エンジントルクのサイクル内変動が大きくなって、運転者に不快な振動が発生するおそれがある。また、気筒間の空燃比ばらつきが大きくなると、触媒に流入する排出ガスの空燃比のサイクル内変動が大きくなるため、排出ガスの空燃比の変動幅が触媒の浄化ウインドからはみ出して排出ガス浄化率が低下するおそれがある。
【０００３】
これらの対策として、気筒間のトルクばらつきや空燃比ばらつきを補正する方法が幾つか提案されている。例えば、特許文献１（特開昭６２−１７３４２号公報）に示すように、クランク軸に設けたトルクセンサで各気筒毎にトルクを検出して、各気筒のトルクが全気筒の平均トルクになるように各気筒毎に燃料噴射量を補正するようにしたものがある。
【０００４】
また、特許文献２（特開２０００−２２０４８９号公報）に示すように、排気管に設置した空燃比センサの出力に基づいて各気筒の空燃比を推定し、気筒間の空燃比ばらつきが小さくなるように各気筒毎に燃料噴射量を補正するようにしたものがある。
【０００５】
一般に、吸入空気量の制御はスロットルバルブによって行われるが、最近では、吸気バルブのリフト量を可変する可変吸気バルブ機構を設け、アクセル開度やエンジン運転状態等に応じて吸気バルブのリフト量を可変することで吸入空気量を制御する技術が開発されている。この可変吸気バルブ制御による吸入空気量制御は、吸気バルブのリフト量を小さくすることによって、吸気通路をスロットルバルブで絞ることなく吸入空気量を少なくすることができるので、ポンピングロスを低減して燃費を向上させることができるという利点がある。
【０００６】
しかし、可変吸気バルブ制御による吸入空気量制御では、低負荷時に吸気バルブのリフト量が小さくなるため、各気筒で目標リフト量に対する実リフト量のばらつき（各気筒の部品公差や組付公差によるばらつき）の割合が大きくなって、気筒間の吸入空気量ばらつきが大きくなる傾向がある。このため、気筒間の吸入空気量ばらつきの影響を受けて各気筒のトルクや空燃比が変動し易く、気筒間のトルクばらつきや空燃比ばらつきが大きくなる傾向がある。
【０００７】
【特許文献１】
特開昭６２−１７３４２号公報（第２頁等）
【特許文献２】
特開２０００−２２０４８９号公報（第２頁〜第３頁等）
【０００８】
【発明が解決しようとする課題】
ところで、上記特許文献１、２では、各気筒毎にトルクや空燃比を検出して、その検出結果に基づいて各気筒毎に燃料噴射量を補正することで、各気筒のトルクばらつきや空燃比ばらつきを補正するようにしている。しかし、気筒間の吸入空気量ばらつきが大きくなると、単に燃料噴射量を補正するだけでは、各気筒のトルクばらつきや空燃比ばらつきを十分な精度で補正することは困難である。しかも、気筒間の吸入空気量ばらつきや吸入燃料量ばらつき等の複数の要因が絡み合って気筒間のトルクばらつきや空燃比ばらつきが発生している場合も、十分な精度で補正することは困難である。
【０００９】
従って、気筒間のトルクばらつきや空燃比ばらつきを十分な精度で補正するためには、気筒間の吸入空気量ばらつきを補正する機能を持たせることが望ましいが、これを実現するためには、気筒間の吸入空気量ばらつきを精度良く検出する技術を開発する必要がある。
【００１０】
そこで、本発明者らは、吸気管を流れる吸入空気量を検出するエアフローメータや、吸気管圧力を検出する吸気管圧力センサの出力を用いて気筒間の吸入空気量ばらつきを検出する技術を研究しているが、エアフローメータや吸気管圧力センサは、吸気脈動の反射波や他気筒の吸気干渉の影響を受ける吸気管集合部に設置されているため、エアフローメータや吸気管圧力センサの出力波形には、吸気脈動の反射波や他気筒の吸気干渉によるノイズ成分が含まれる。このため、運転領域によっては、反射波や吸気干渉の影響等でエアフローメータや吸気管圧力センサの出力波形が各気筒の吸入空気量のばらつきを精度良く反映した脈動波形とならず、気筒間の吸入空気量ばらつきを精度良く検出することができないことがあるという問題がある。
【００１１】
また、実際の車両走行時には、運転状態が刻々と変化するため、運転領域によては、エアフローメータや吸気管圧力センサの出力をサンプリングする時間（又はサンプリング回数）を十分に確保できないことがあり、これも、気筒間の吸入空気量ばらつきを精度良く検出できない原因となる。
【００１２】
本発明はこれらの事情を考慮してなされたものであり、従ってその目的は、エアフローメータ等の検出手段の出力から各気筒の吸入空気量のばらつきを精度良く反映した情報を検出しにくいような運転領域に対しても、気筒間の吸入空気量ばらつき（気筒間ばらつき）を精度良く検出することができ、ほぼ全ての運転領域で気筒間ばらつきの検出精度を向上させることができる内燃機関の気筒間ばらつき検出装置を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１の内燃機関の気筒間ばらつき検出装置は、複数の気筒を有する内燃機関の吸気管を流れる吸入空気量、吸気管圧力、筒内圧の少なくとも１つを検出する検出手段を備え、所定のばらつき学習実行条件が成立する運転領域のときに、気筒間ばらつき学習手段によって、前記検出手段の出力に基づいて気筒間の吸入空気量ばらつき率又は気筒別吸入空気量を算出してその算出値を気筒間ばらつき学習値として学習し、ばらつき学習実行条件が成立しない運転領域のときには、気筒間ばらつき推定手段によって、前記気筒間ばらつき学習値を用いてその時点の運転領域に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を推定するようにしたものである。
【００１４】
このようにすれば、ばらつき学習実行条件が成立してエアフローメータ等の検出手段の出力から各気筒の吸入空気量ばらつきを精度良く反映した情報が得られる運転領域のときに、気筒間ばらつき学習値を精度良く学習し、それ以外の運転領域では、上記精度の良い気筒間ばらつき学習値を用いてその時点の運転領域に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を推定するので、検出手段の出力波形が各気筒の吸入空気量のばらつきを精度良く反映した脈動波形にならない運転領域や、検出手段の出力をサンプリングする時間（又はサンプリング回数）を十分に確保できない運転領域に対しても、気筒間吸入空気量ばらつき率又は気筒別吸入空気量を比較的精度良く算出することができる。これにより、ほぼ全ての運転領域で気筒間ばらつきの検出精度を向上させることができる。
【００１５】
この場合、請求項２のように、ばらつき学習実行条件は、燃料カット時及び／又はクランクキング時に成立するようにしても良い。燃料カット時やクランクキング時には、筒内で燃焼が発生しておらず、燃焼による回転変動の影響を受けないため、エアフローメータ等の検出手段の出力波形が各気筒の吸入空気量のばらつきを精度良く反映した脈動波形となり、気筒間ばらつき学習値を精度良く学習することができる。
【００１６】
或は、請求項３のように、ばらつき学習実行条件は、減速運転時に成立するようにしても良い。例えば、吸気バルブのリフト量を可変して吸入空気量を制御するシステムでは、減速運転時に、吸気バルブのリフト量が小さくなって、各気筒で目標リフト量に対する実リフト量のばらつきの割合が大きくなり、各気筒の吸入空気量のばらつきが大きくなるため、減速運転時には、気筒間ばらつき学習値を精度良く学習できる状態となる。しかも、減速運転時には、吸気バルブ、排気バルブ、スロットルバルブ等のバルブ動作条件を気筒間ばらつき学習に適したバルブ動作条件に変更しても、それに伴って発生するトルク変動等が運転者に気付かれ難いという利点もある。
【００１７】
更に、請求項４のように、ばらつき学習実行条件は、機関回転速度が所定回転速度以下で且つ吸入空気量が所定量以上のときに成立するようにしても良い。機関回転速度が低くなるほど、１サイクルの時間が長くなって、検出手段の出力をサンプリングする時間（又はサンプリング回数）を増やすことができる。また、吸入空気量が多いときには、吸気脈動の振幅が大きくなって、気筒間ばらつき学習に用いる吸気脈動の特性値（極大値、極小値、面積等）を判別し易くなる。これらの理由から、機関回転速度が低く且つ吸入空気量が多い運転領域では、気筒間ばらつき学習値を精度良く学習できる状態となる。
【００１８】
ところで、ばらつき学習実行条件が成立したときに、吸気バルブ、排気バルブ、スロットルバルブのバルブ動作条件が、必ずしも、気筒間ばらつき学習に適した動作条件になっているとは限らない。
【００１９】
そこで、請求項５のように、ばらつき学習実行条件が成立する運転領域のときに、吸気バルブ、排気バルブ、スロットルバルブのうちの少なくとも１つのバルブ動作条件を所定の学習時バルブ動作条件に変更して気筒間ばらつき学習値を学習するようにしても良い。このようにすれば、吸気バルブ、排気バルブ、スロットルバルブのバルブ動作条件を気筒間ばらつき学習値の学習に適した学習時バルブ動作条件に変更した状態で、気筒間ばらつき学習値を学習することができ、気筒間ばらつき学習値の学習精度を高めることができる。
【００２０】
具体的には、請求項６のように、ばらつき学習実行条件が成立する運転領域のときに、スロットルバルブの開度を全開又は吸気管圧力が大気圧付近となる開度に変更して気筒間ばらつき学習値を学習するようにしても良い。このようにすれば、気筒間ばらつき学習の実行中に、スロットルバルブの上流側に配置されたエアフローメータや吸気管圧力センサ等の検出手段で検出する吸気脈動の振幅を大きくすることができ、気筒間ばらつき学習に用いる吸気脈動の特性値（極大値、極小値、面積等）を判別し易くなるため、気筒間ばらつき学習値の学習精度を高めることができる。
【００２１】
また、請求項７のように、ばらつき学習実行条件が成立する運転領域のときに、吸気バルブのリフト量を所定リフト量以下又は最小値に変更して気筒間ばらつき学習値を学習するようにしても良い。このようにすれば、気筒間ばらつき学習の実行中に、吸気バルブのリフト量が小さくなって、各気筒で目標リフト量に対する実リフト量のばらつきの割合が大きくなるため、各気筒の吸入空気量ばらつきが大きくなって、気筒間ばらつき学習値の学習精度を高めることができる。
【００２２】
一般に、吸排気バルブのバルブオーバーラップ（吸排気バルブが両方とも開いている期間）が存在すると、気筒内の燃焼ガスが吸気管へ吹き返す現象が発生する。また、吸気バルブが上死点よりも前（排気行程の途中）に開いたり、下死点よりも後（圧縮行程の途中）に閉じたりすると、吸気バルブが開いた状態でピストンが上昇するため、燃焼ガスや吸入空気の吹き返しが発生する。このような燃焼ガスや吸入空気の吹き返しが発生すると、その影響で吸気脈動に乱れが生じるため、気筒間ばらつき学習値の学習精度が低下するおそれがある。
【００２３】
この対策として、請求項８のように、ばらつき学習実行条件が成立する運転領域のときに、吸排気バルブのバルブタイミングをバルブオーバーラップがなく且つ吸気バルブの開弁期間が上死点から下死点までの間に収まるように変更して気筒間ばらつき学習値を学習するようにしても良い。このようにすれば、気筒間ばらつき学習の実行中に、燃焼ガスや吸入空気の吹き返しを無くすことができて、燃焼ガスや吸入空気の吹き返しによる吸気脈動の乱れを防止することができ、気筒間ばらつき学習値の学習精度を高めることができる。
【００２４】
また、本発明は、請求項９のように、可変吸気バルブ機構を制御して吸気バルブのリフト量を可変することで吸入空気量を制御するシステムに適用すると、大きな効果が得られる。つまり、可変吸気バルブ機構による吸入空気量制御では、気筒間の吸入空気量ばらつきが大きくなる傾向があり、気筒間の吸入空気量ばらつきを補正する機能を持たせることが望ましく、これを実現するために、気筒間の吸入空気量ばらつきを精度良く検出する必要があるため、本発明を適用する効果が大きい。
【００２５】
この場合、請求項１０のように、学習した気筒間ばらつき学習値と、該気筒間ばらつき学習値を学習したときの吸気バルブのリフト量と、現在の吸気バルブのリフト量とを用いて、現在の運転領域に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を推定するようにすると良い。可変吸気バルブ機構により吸入空気量制御を行うシステムでは、吸気バルブのリフト量に応じて、目標リフト量に対する実リフト量のばらつきの割合が変化して、気筒間の吸入空気量ばらつきが変化するため、吸気バルブのリフト量に応じて気筒間の吸入空気量ばらつきが変化する。従って、気筒間ばらつき学習値と、該気筒間ばらつき学習値を学習したときの吸気バルブのリフト量と、現在の吸気バルブのリフト量とを用いれば、現在の吸気バルブのリフト量に応じた気筒間吸入空気量ばらつき率又は気筒別吸入空気量を精度良く推定することができる。
【００２６】
また、請求項１１，１２のように、気筒間ばらつき学習値の学習が完了するまで可変吸気バルブ機構による吸入空気量制御を禁止してスロットルバルブにより吸入空気量を制御し、気筒間ばらつき学習値の学習が完了した後に可変吸気バルブ機構による吸入空気量制御を実行するようにしても良い。このようにすれば、気筒間ばらつき学習値の学習が完了するまでは、スロットルバルブによる吸入空気量制御によって吸入空気量の制御精度を確保することができ、気筒間ばらつき学習値の未学習によるドライバビリティ悪化や排気エミッション悪化を回避することができる。
【００２７】
【発明の実施の形態】
《実施形態（１）》
以下、本発明の実施形態（１）を図１乃至図１２に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関である例えば４気筒のエンジン１１は、第１気筒＃１〜第４気筒＃４の４つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４（検出手段）が設けられている。このエアフローメータ１４は、吸入空気の逆流も検出可能なエアフローメータが用いられている。エアフローメータ１４の下流側には、ＤＣモータ等によって開度調節されるスロットルバルブ１５とスロットル開度を検出するスロットル開度センサ１６とが設けられている。
【００２８】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７には、吸気管圧力を検出する吸気管圧力センサ１８（検出手段）が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２１が取り付けられ、各点火プラグ２１の火花放電によって筒内の混合気に着火される。
【００２９】
また、エンジン１１の吸気バルブ２８と排気バルブ２９には、それぞれバルブリフト量を可変する可変バルブリフト機構３０，３１が設けられている。更に、吸気バルブ２８と排気バルブ２９に、それぞれバルブタイミング（開閉タイミング）を可変する可変バルブタイミング機構を設けるようにしても良い。尚、排気バルブ２９には、可変バルブリフト機構３１を設けずに、可変バルブタイミング機構のみを設けるようにしても良い。
【００３０】
一方、エンジン１１の排気管２２には、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒２３が設けられ、この触媒２３の上流側に、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２５や、エンジン１１のクランク軸が一定クランク角（例えば３０℃Ａ）回転する毎にパルス信号を出力するクランク角センサ２６が取り付けられている。このクランク角センサ２６の出力信号に基づいてクランク角やエンジン回転速度が検出される。
【００３１】
これら各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）２７に入力される。このＥＣＵ２７は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２０の燃料噴射量や点火プラグ２１の点火時期を制御する。
【００３２】
次に、図２に基づいて吸気バルブ２８の可変バルブリフト機構３０の構成を説明する。尚、排気バルブ２９の可変バルブリフト機構３１は、吸気バルブ２８の可変バルブリフト機構３０と実質的に同一構成であるため、説明を省略する。
【００３３】
図２に示すように、吸気バルブ２８を駆動するためのカムシャフト３２とロッカーアーム３３との間に、リンクアーム３４が設けられ、このリンクアーム３４の上方に、ステッピングモータ等のモータ４１で回動駆動されるコントロールシャフト３５が設けられている。コントロールシャフト３５には、偏心カム３６が一体的に回動可能に設けられ、この偏心カム３６の軸心に対して偏心した位置に、リンクアーム３４が支持軸（図示せず）を介して揺動可能に支持されている。このリンクアーム３４の中央部には、揺動カム３８が設けられ、この揺動カム３８の側面が、カムシャフト３２に設けられたカム３７の外周面に当接している。また、リンクアーム３４の下端部には、押圧カム３９が設けられ、この押圧カム３９の下端面が、ロッカーアーム３３の中央部に設けられたローラ４０の上端面に当接している。
【００３４】
これにより、カムシャフト３２の回転によってカム３７が回転すると、そのカム３７の外周面形状に追従してリンクアーム３４の揺動カム３８が左右に移動して、リンクアーム３４が左右に揺動する。リンクアーム３４が左右に揺動すると、押圧カム３９が左右に移動するため、押圧カム３９の下端面形状に応じてロッカーアーム３３のローラ４０が上下に移動して、ロッカーアーム３３が上下に揺動する。このロッカーアーム３３の上下動によって吸気バブル２８が上下動するようになっている。
【００３５】
一方、コントロールシャフト３５の回転によって偏心カム３６が回転すると、リンクアーム３４の支持軸の位置が移動して、リンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置が変化する。また、リンクアーム３４の押圧カム３９の下端面は、左側部分にロッカーアーム３３の押圧量が０（吸気バルブ２８のバルブリフト量が０）となるような曲率でベース曲面３９ａが形成され、このベース曲面３９ａから右方に向かうに従ってロッカーアーム３３の押圧量が大きくなる（吸気バルブ２８のバルブリフト量が大きくなる）ような曲率で押圧曲面３９ｂが形成されている。
【００３６】
吸気バルブ２８のバルブリフト量を大きくする高リフトモードの場合には、コントロールシャフト３５の回転によってリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を右方に移動させる。これにより、カム３７の回転によって押圧カム３９が左右に移動したときに押圧カム３９の下端面のうちローラ４０に接触する区間が右方に移動するため、ロッカーアーム３３の最大押圧量が大きくなって吸気バルブ２８の最大バルブリフト量が大きくなると共に、ロッカーアーム３３が押圧される期間が長くなって吸気バブル２８の開弁期間が長くなる。
【００３７】
一方、吸気バルブ２８のバルブリフト量を小さくする低リフトモードの場合には、コントロールシャフト３５の回転によってリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を左方に移動させる。これにより、カム３７の回転によって押圧カム３９が左右に移動したときに押圧カム３９の下端面のうちローラ４０に接触する区間が左方に移動するため、ロッカーアーム３３の最大押圧量が小さくなって吸気バルブ２８の最大バルブリフト量が小さくなると共に、ロッカーアーム３３が押圧される期間が短くなって吸気バブル２８の開弁期間が短くなる。
【００３８】
以上説明した可変バルブリフト機構３０では、モータ４１でコントロールシャフト３５を回転させてリンクアーム３４の押圧カム３９とロッカーアーム３３のローラ４０との初期の接触点位置を連続的に移動させれば、全気筒（＃１〜＃４）の吸気バルブ２８の最大バルブリフト量と開弁期間（以下単に「吸気バルブリフト量」という）を一括して連続的に可変することができる。
【００３９】
ＥＣＵ２７は、ＲＯＭに記憶された可変バルブ制御プログラム（図示せず）を実行することで、アクセル開度やエンジン運転状態等に基づいて吸気バルブ２８の可変バルブリフト機構３０を制御して、吸気バルブ２８のバルブリフト量を連続的に可変して吸入空気量を制御する。尚、可変バルブリフト機構３０と可変バルブタイミング機構を併用したシステムの場合には、バルブリフト量とバルブタイミングの両方を連続的に可変して吸入空気量を制御するようにしても良い。
【００４０】
また、ＥＣＵ２７は、後述する気筒間ばらつき補正用の各ルーチンを実行することで、エアフローメータ１４の出力に基づいて気筒間の吸入空気量ばらつき率ＤＥＶを算出し、所定のばらつき学習実行条件が成立する運転領域のときに算出した気筒間吸入空気量ばらつき率ＤＥＶを気筒間ばらつき学習値ＧＤＥＶとして学習する。そして、ばらつき学習実行条件が成立しない運転領域のときに、上記気筒間ばらつき学習値ＧＤＥＶを用いてその時点の運転領域に応じた気筒間吸入空気量ばらつき率ＤＥＶを算出し、この気筒間吸入空気量ばらつき率ＤＥＶに基づいて吸気バルブリフト量ＶＶＬを補正して、気筒間の吸入空気量のばらつきを補正する。
【００４１】
以下、本実施形態（１）でＥＣＵ２７が実行する気筒間ばらつき補正用の各ルーチンの処理内容を説明する。
【００４２】
［気筒間ばらつき算出ベースルーチン］
図３に示す気筒間ばらつき算出ベースルーチンは、エアフローメータ１４の出力電圧のＡ／Ｄ変換タイミング（例えば４ｍｓ周期）で起動される。本ルーチンが起動されると、まず、ステップ１０１で、エアフローメータ１４のフィルタ処理後の出力電圧ＶＡＦＭを読み込んだ後、ステップ１０２に進み、図４の瞬時空気流量ＧＡＦＭマップを用いて、エアフローメータ１４の出力電圧ＶＡＦＭを、エアフローメータ１４を通過する瞬時空気流量ＧＡＦＭに変換する。尚、図４の瞬時空気流量ＧＡＦＭマップは、エアフローメータ１４が逆流も検出できる場合のマップであり、逆流の場合は、瞬時空気流量ＧＡＦＭがマイナス値となる。
【００４３】
この後、ステップ１０３に進み、クランク角カウンタＣＣＲＮＫのカウント値を読み込む。このクランク角カウンタＣＣＲＮＫは、クランク角センサ２６の出力信号に基づいて例えば３０℃Ａ毎に「１」ずつインクリメントされるため、クランク角カウンタＣＣＲＮＫの２４カウントが１サイクル（７２０℃Ａ）に相当する。尚、クランク角カウンタＣＣＲＮＫは、「２４」になった時点で「０」にリセットされる。また、クランク角カウンタＣＣＲＮＫ＝０のクランク回転位置が、第１気筒＃１の圧縮上死点（圧縮ＴＤＣ）に相当し、クランク角カウンタＣＣＲＮＫ＝６、１２、１８のクランク回転位置が、それぞれ第３気筒＃３、第４気筒＃４、第２気筒＃２の圧縮ＴＤＣに相当するように設定されている。
【００４４】
そして、次のステップ１０４で、図６に示す各気筒の瞬時空気流量極大値算出ルーチンを実行して、各気筒の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値ＧＡＰＥＡＫ(#i)を算出する。ここで、(#i)は気筒番号であり、(#1)〜(#4)のいずれかを意味する。
【００４５】
この後、ステップ１０５に進み、図７に示す気筒間吸入空気量ばらつき率算出ルーチンを実行して、各気筒の瞬時空気流量極大値ＧＡＰＥＡＫ(#i)に基づいて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。
【００４６】
この後、ステップ１０６に進み、ばらつき学習実行条件が成立しているか否かを判定する。ここで、ばらつき学習実行条件は、例えば、次の▲１▼と▲２▼の条件を両方とも満たすことである。
▲１▼燃料カット時、クランキング時、減速運転時（例えばブレーキ作動時又はアクセルオフ時）のいずれかであること
▲２▼エンジン回転速度ＮＥが所定回転速度（例えば２０００ｒｐｍ）以下で、且つ、吸入空気量ＧＡが所定量（例えばアイドル運転時の吸入空気量相当値）以上であること
【００４７】
この場合、上記▲１▼の条件は、次のような理由で設定されている。燃料カット時やクランクキング時には、筒内で燃焼が発生しておらず、燃焼による回転変動の影響を受けないため、エアフローメータ１４の出力波形が各気筒の吸入空気量のばらつきを精度良く反映した脈動波形となり、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く算出して学習することができる。また、吸気バルブリフト量を可変して吸入空気量を制御するシステムでは、減速運転時に、吸気バルブリフト量が小さくなって、各気筒で目標リフト量に対する実リフト量のばらつきの割合が大きくなるため、各気筒の吸入空気量のばらつきが大きくなって、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く算出して学習することができる。
【００４８】
また、上記▲２▼の条件は、次のような理由で設定されている。エンジン回転速度ＮＥが低くなるほど、１サイクルの時間が長くなって、エアフローメータ１４の出力をサンプリングする時間（又はサンプリング回数）を増やすことができる。また、吸入空気量ＧＡが多いときには、吸気脈動の振幅が大きくなって、気筒間吸入空気量ばらつき率ＤＥＶ(#i)の算出に用いる吸気脈動の特性値（極大値、極小値、面積等）を判別し易くなる。これらの理由から、エンジン回転速度ＮＥが低く、且つ、吸入空気量ＧＡが多い運転領域では、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く学習できる状態となる。
【００４９】
上記▲１▼と▲２▼の条件を両方とも満たせば、ばらつき学習実行条件が成立するが、上記▲１▼と▲２▼の条件のうちいずれか１つでも満たさない条件があれば、ばらつき学習実行条件が不成立となる。
【００５０】
ばらつき学習実行条件が成立していると判定された場合には、ステップ１０７に進み、ばらつき学習実行条件が成立する運転領域のときに算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習（記憶）する。以上説明したステップ１０５〜１０７の処理が特許請求の範囲でいう気筒間ばらつき学習手段としての役割を果たす。
【００５１】
この後、ステップ１０８に進み、気筒間ばらつき学習値ＧＤＥＶ(#i)を学習したときの平均吸気バルブリフト量ＶＬＬを基準吸気バルブリフト量ＧＶＶＬとして学習する。この場合、平均吸気バルブリフト量ＶＬＬは、例えば、可変バルブリフト機構３０の駆動モータ４１の回転位置等から算出すれば良い。
【００５２】
この後、ステップ１０９に進み、気筒間ばらつき学習完了フラグＧＸＶＶＬを、気筒間ばらつき学習完了を意味する「ＯＮ」にセットして、本ルーチンを終了する。
【００５３】
一方、上記ステップ１０６で、ばらつき学習実行条件が不成立である判定された場合には、ステップ１１０に進み、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了しているか否か（気筒間ばらつき学習完了フラグＧＸＶＶＬ＝ＯＮか否か）を判定する。もし、気筒間ばらつき学習が完了していなければ、そのまま本ルーチンを終了する。
【００５４】
一方、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了したと判定された場合には、ステップ１１１に進み、図５に示す気筒間吸入空気量ばらつき率ＤＥＶ(#i)のマップを用いて、気筒間ばらつき学習値ＧＤＥＶ(#i)と、現在の平均吸気バルブリフト量ＶＬＬと基準吸気バルブリフト量ＧＶＶＬとの比（ＶＶＬ／ＧＶＶＬ）を用いて、現在の平均吸気バルブリフト量ＶＬＬに応じた気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。この場合は、前記ステップ１０５で算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)の記憶値がステップ１１１で算出した推定値に書き替えられる。このステップ１１１の処理が特許請求の範囲でいう気筒間ばらつき推定手段としての役割を果たす。
【００５５】
尚、気筒間吸入空気量ばらつき率ＤＥＶ(#i)に、エアフローメータ１４で検出した吸入空気量ＧＡ（平均空気流量）を乗算すれば、気筒別吸入空気量を求めることができる。
【００５６】
以上説明した本ルーチンでは、ステップ１０５で、全ての運転領域で気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出するようにしたが、このステップ１０５の処理をステップ１０６で「Ｙｅｓ」と判定されたときに実行するように変更しても良い。この場合は、ばらつき学習実行条件が成立する運転領域のときのみ、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出し、その算出値を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習する。
【００５７】
［各気筒の瞬時空気流量極大値算出ルーチン］
図３のステップ１０４で図６の各気筒の瞬時空気流量極大値算出ルーチンが起動されると、まず、ステップ２０１で、エアフローメータ１４で検出した瞬時空気流量ＧＡＦＭが極大値であるか否かを判定する。この極大値の判定方法は、例えば瞬時空気流量ＧＡＦＭの今回値を前回値と比較して、瞬時空気流量ＧＡＦＭの変化方向が増加から減少に反転したか否かによって判定すれば良い。
【００５８】
このステップ２０１で、瞬時空気流量ＧＡＦＭが極大値でないと判定されれば、以降の処理を行うことなく、本ルーチンを終了する。その後、瞬時空気流量ＧＡＦＭが極大値になった時点で、ステップ２０２に進み、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間（つまり第１気筒＃１の吸気行程に対応する期間）であるか否かを判定し、ＣＣＲＮＫ＝１２〜１７であれば、ステップ２０３に進み、第１気筒＃１の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値を、第１気筒＃１の瞬時空気流量極大値ＧＡＰＥＡＫ(#1)とする。
【００５９】
上記ステップ２０２で「Ｎｏ」と判定されて、ステップ２０４で、クランク角カウンタＣＣＲＮＫ＝６〜１１の期間（つまり第２気筒＃２の吸気行程に対応する期間）であると判定されれば、ステップ２０５に進み、第２気筒＃２の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値を、第２気筒＃２の瞬時空気流量極大値ＧＡＰＥＡＫ(#2)とする。
【００６０】
上記ステップ２０２、２０４で「Ｎｏ」と判定されて、ステップ２０６で、クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間（つまり第３気筒＃３の吸気行程に対応する期間）であると判定されれば、ステップ２０７に進み、第３気筒＃３の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値を、第３気筒＃３の瞬時空気流量極大値ＧＡＰＥＡＫ(#3)とする。
【００６１】
上記ステップ２０２、２０４、２０６で全て「Ｎｏ」と判定された場合、つまり、クランク角カウンタＣＣＲＮＫ＝０〜５の期間（第４気筒＃４の吸気行程に対応する期間）である場合は、ステップ２０８に進み、第４気筒＃４の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値を、第４気筒＃４の瞬時空気流量極大値ＧＡＰＥＡＫ(#4)とする。
【００６２】
図１２に示すように、エアフローメータ１４の出力（瞬時空気流量ＧＡＦＭ）は、各気筒の吸入空気量を反映した脈動波形となる。従って、各気筒の吸気行程に対応する期間毎にエアフローメータ１４で検出した瞬時空気流量ＧＡＦＭの特性値（極大値、極小値、平均値、振幅値、面積、軌跡長等）を算出すれば、各気筒の吸入空気量を反映した脈動波形の特性値を算出することができるので、この特性値を用いれば、各気筒の吸入空気量のばらつきを反映した気筒間の吸入空気量ばらつき率を算出することができる。
【００６３】
［気筒間吸入空気量ばらつき率算出ルーチン］
図７に示す気筒間吸入空気量ばらつき率算出ルーチン（図３のステップ１０５）は、行程毎（４気筒エンジンの場合は１８０℃Ａ毎）に実行される。本ルーチンが起動されると、まず、ステップ３０１で、各気筒の瞬時空気流量極大値ＧＡＰＥＡＫ(#i)を読み込み、次のステップ３０２で、各気筒の瞬時空気流量極大値ＧＡＰＥＡＫ(#i)を気筒間でなまし処理して、各気筒の瞬時空気流量極大値のなまし値ＧＡＰＥＡＫＳＭ(#i)を求める。
ＧＡＰＥＡＫＳＭ(#i)＝ＧＡＰＥＡＫＳＭ(#i-1)＋Ｋ１×｛ＧＡＰＥＡＫ(#i)−ＧＡＰＥＡＫＳＭ(#i-1)｝
【００６４】
ここで、Ｋ１は、なまし係数であり、ＧＡＰＥＡＫＳＭ(#i-1)は、(#i-1)番の気筒の瞬時空気流量極大値のなまし値である。
この後、ステップ３０３に進み、各気筒の気筒間吸入空気量ばらつき率ＤＥＶ(#i)を次式により算出する。
【００６５】
【数１】
2004190593.tif 000003
【００６６】
上式の分母は、全気筒の瞬時空気流量極大値のなまし値ＧＡＰＥＡＫＳＭ(#i)の平均値であり、Ｋ２は、瞬時空気流量極大値のばらつきを吸入空気量のばらつきに変換するための補正係数である。
【００６７】
上記［数１］式から明らかなように、各気筒の気筒間吸入空気量ばらつき率ＤＥＶ(#i)は、各気筒の気筒間吸入空気量ばらつき率なまし値ＧＡＰＥＡＫＳＭ(#i)を全気筒の気筒間吸入空気量ばらつき率なまし値の平均値で割り算して、それに補正係数Ｋ２を乗算した値である。
【００６８】
［気筒間ばらつき補正ルーチン］
図８に示す気筒間ばらつき補正ルーチンは、エンジン運転中に所定周期で実行される。本ルーチンが起動されると、まず、ステップ４０１で、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了しているか否か（気筒間ばらつき学習完了フラグＧＸＶＶＬ＝ＯＮか否か）を判定する。もし、気筒間ばらつき学習が完了していなければ、ステップ４０２以降の気筒間ばらつき補正に関する処理を実行することなく、本ルーチンを終了する。
【００６９】
一方、上記ステップ４０１で、気筒間ばらつき学習が完了していると判定された場合には、ステップ４０２以降の気筒間ばらつき補正に関する処理を次のようにして実行する。まず、ステップ４０２で、図３の気筒間ばらつき算出ベースルーチンよって最終的に決定された気筒間吸入空気量ばらつき率ＤＥＶ(#i)を読み込む。
【００７０】
この後、ステップ４０３に進み、各気筒毎に気筒間吸入空気量ばらつき率ＤＥＶ(#i)に応じた基本リフト補正量ＦＶＶＬ１(#i)を図９のマップを用いて算出する。図９のマップは、気筒間吸入空気量ばらつき率ＤＥＶ(#i)がプラス値となる領域では、基本リフト補正量ＦＶＶＬ１(#i)が減量値（マイナス値）となり、気筒間吸入空気量ばらつき率ＤＥＶ(#i)がマイナス値となる領域では、基本リフト補正量ＦＶＶＬ１(#i)が増量値（プラス値）となる。つまり、ある気筒の吸入空気量が全気筒の平均吸入空気量よりも多くなるほど、基本リフト補正量ＦＶＶＬ１(#i)による減量補正量が大きくなり、反対に、ある気筒の吸入空気量が全気筒の平均吸入空気量よりも少なくなるほど、基本リフト補正量ＦＶＶＬ１(#i)による増量補正量が大きくなる。尚、気筒間吸入空気量ばらつき率ＤＥＶ(#i)が０付近の所定領域では、基本リフト補正量ＦＶＶＬ１(#i)＝０に設定され、吸気バルブリフト量ＶＶＬが補正されない。
【００７１】
そして、次のステップ４０４で、エンジン回転速度ＮＥとエアフローメータ１４で検出した吸入空気量ＧＡ（平均空気流量）を読み込んだ後、ステップ４０５に進み、図１０に示す補正係数ＦＶＶＬ２のマップを検索して、各気筒毎に現在のエンジン運転条件（例えばエンジン回転速度ＮＥと吸入空気量ＧＡ）に応じた補正係数ＦＶＶＬ２(#i)を算出する。
【００７２】
一般に、吸入空気量ＧＡが少なくなると（吸気バルブリフト量が小さくなると）、吸気バルブリフト量補正の影響を受けやすくなるため、図１０の補正係数ＦＶＶＬ２のマップは、吸入空気量ＧＡが少なくなるほど、補正係数ＦＶＶＬ２が小さくなるように設定されている。
【００７３】
この後、ステップ４０６に進み、各気筒の基本リフト補正量ＦＶＶＬ１(#i)に補正係数ＦＶＶＬ２(#i)を乗算して、各気筒のリフト補正量ＦＶＶＬ(#i)を求める。
ＦＶＶＬ(#i)＝ＦＶＶＬ１(#i)×ＦＶＶＬ２(#i)
この後、ステップ４０７に進み、補正前の全気筒の平均バルブリフト量ＶＶＬに各気筒のリフト補正量ＦＶＶＬ(#i)を加算して、最終目標バルブリフト量ＶＶＬＭを求める。
【００７４】
この場合、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間（つまり第１気筒＃１の吸気行程に対応する期間）は、第１気筒＃１のバルブリフト補正量ＦＶＶＬ(#1)を用いて、最終目標バルブリフト量ＶＶＬＭを次式により算出する。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ(#1)
【００７５】
クランク角カウンタＣＣＲＮＫ＝６〜１１の期間（つまり第２気筒＃２の吸気行程に対応する期間）は、第２気筒＃２のバルブリフト補正量ＦＶＶＬ(#2)を用いて、最終目標バルブリフト量ＶＶＬＭを次式により算出する。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ(#2)
【００７６】
クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間（つまり第３気筒＃３の吸気行程に対応する期間）は、第３気筒＃３のバルブリフト補正量ＦＶＶＬ(#3)を用いて、最終目標バルブリフト量ＶＶＬＭを次式により算出する。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ(#3)
【００７７】
クランク角カウンタＣＣＲＮＫ＝０〜５の期間（つまり第４気筒＃４の吸気行程に対応する期間）は、第４気筒＃４のバルブリフト補正量ＦＶＶＬ(#4)を用いて、最終目標バルブリフト量ＶＶＬＭを次式により算出する。
ＶＶＬＭ＝ＶＶＬ＋ＦＶＶＬ(#4)
【００７８】
この後、ステップ４０８に進み、各気筒の吸気行程に対応して変化する各気筒の最終目標バルブリフト量ＶＶＬＭに応じて吸気バルブ２８の可変バルブリフト機構３０のモータ４１を高速駆動して、各気筒の吸気行程毎に吸気バルブリフト量を補正して各気筒の吸入空気量を補正する。これにより、気筒間の吸入空気量ばらつきを補正する。
【００７９】
以上説明した気筒間ばらつき補正ルーチンでは、気筒間ばらつき学習が完了する前は、気筒間ばらつき補正を実行しないようにしたが、気筒間ばらつき学習が完了する前は、図３のステップ１０５で算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を用いて気筒間ばらつき補正を実行するようにしても良い。
【００８０】
尚、各気筒の吸気バルブ２８を電磁アクチュエータで駆動する構成の可変バルブ機構に本発明を適用する場合には、各気筒の最終目標バルブリフト量ＶＶＬＭに応じて各気筒の電磁アクチュエータの制御量を補正することで、各気筒の吸気バルブリフト量を補正して各気筒の吸入空気量を補正するようにすれば良い。
【００８１】
以上説明した本実施形態（１）の実行例を図１１に示すタイムチャートを用いて説明する。気筒間ばらつき補正実行条件が成立して気筒間ばらつき補正実行フラグがＯＮされている期間は、１サイクル毎にエアフローメータ１４の出力（瞬時空気流量ＧＡＦＭ）に基づいて各気筒の気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出し、ばらつき学習実行条件が成立してばらつき学習実行フラグがＯＮされているときに算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習すると共に、この気筒間ばらつき学習値ＧＤＥＶ(#i)を学習したときの平均吸気バルブリフト量ＶＬＬを基準吸気バルブリフト量ＧＶＶＬとして学習する。
【００８２】
そして、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了して気筒間ばらつき学習完了フラグＧＸＶＶＬがＯＮされた後、ばらつき学習実行条件が不成立となって気筒間ばらつき学習実行フラグがＯＦＦされている期間は、気筒間ばらつき学習値ＧＤＥＶ(#i)と、現在の平均吸気バルブリフト量ＶＬＬと基準吸気バルブリフト量ＧＶＶＬとの比（ＶＶＬ／ＧＶＶＬ）を用いて、最終的な気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。
【００８３】
以上説明した本実施形態（１）によれば、ばらつき学習実行条件が成立して気筒間吸入空気量ばらつき率ＤＥＶ(#i)の算出精度を確保できる運転領域のときに算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習するようにしたので、気筒間ばらつき学習値ＧＤＥＶ(#i)を精度良く学習することができる。そして、ばらつき学習実行条件が成立しない運転領域のときには、上記精度の良い気筒間ばらつき学習値ＧＤＥＶ(#i)を用いてその時点の運転領域に応じた気筒間吸入空気量ばらつき率ＤＥＶ(#i)を推定するので、エアフローメータ１４の出力波形が各気筒の吸入空気量のばらつきを精度良く反映した脈動波形にならない運転領域や、エアフローメータ１４の出力をサンプリングする時間（又はサンプリング回数）を十分に確保できない運転領域に対しても、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を比較的精度良く算出することができる。これにより、ほぼ全ての運転領域で気筒間ばらつきの検出精度を向上させることができるので、ほぼ全ての運転領域で気筒間の吸入空気量ばらつきを精度良く補正することができ、気筒間のトルクばらつきや空燃比ばらつきを両方とも低減することができる。
【００８４】
《実施形態（２）》
ところで、ばらつき学習実行条件が成立したときに、吸気バルブ２８、排気バルブ２９、スロットルバルブ１５のバルブ動作条件が、必ずしも、気筒間吸入空気量ばらつき率ＤＥＶの算出に適した動作条件になっているとは限らない。
【００８５】
そこで、図１３乃至図１５に示す本発明の実施形態（２）では、ばらつき学習実行条件が成立する運転領域のときに、吸気バルブ２８、排気バルブ２９、スロットルバルブ１５のバルブ動作条件を学習時バルブ動作条件に変更して、気筒間吸入空気量ばらつき率ＤＥＶを算出し、その算出値を気筒間ばらつき学習値ＧＤＥＶとして学習するようにしている。
【００８６】
以下、この処理を実行する図１３の気筒間ばらつき算出ベースルーチンの処理内容を説明する。本ルーチンが起動されると、前記実施形態（１）で説明した図３のステップ１０１〜１０４と同じ処理により、各気筒の吸気行程に対応する期間の瞬時空気流量ＧＡＦＭの極大値ＧＡＰＥＡＫ(#i)を算出した後、ステップ１０６に進み、前記実施形態（１）と同じ方法で、ばらつき学習実行条件が成立しているか否かを判定する。
【００８７】
その結果、ばらつき学習実行条件が成立していると判定されれば、ステップ１０６ａに進み、スロットル開度ＴＡを学習時のスロットル開度ＫＴＡに変更する。この学習時のスロットル開度ＫＴＡは、全開又は吸気管圧力が大気圧付近となる開度に設定されている。これにより、スロットルバルブ１５の上流側に配置されたエアフローメータ１４で検出する吸気脈動の振幅を大きくすることができ、気筒間吸入空気量ばらつき率ＤＥＶ(#i)の算出に用いる吸気脈動の特性値（例えば極大値）を判別し易くなるため、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習に適した状態となる。
【００８８】
この後、ステップ１０６ｂに進み、吸気バルブリフト量ＶＶＬを学習時の吸気バルブリフト量ＫＶＶＬに変更する。この学習時の吸気バルブリフト量ＫＶＶＬは、所定リフト量以下又は最小値に設定されている。これにより、吸気バルブリフト量ＶＶＬが小さくなって、各気筒で目標リフト量に対する実リフト量のばらつきの割合が大きくなるため、各気筒の吸入空気量ばらつきが大きくなって、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習に適した状態となる。
【００８９】
この後、ステップ１０６ｃに進み、吸気バルブタイミングＩＮＶＶＴを学習時の吸気バルブタイミングＫＩＮＶＶＴに変更すると共に、排気バルブタイミングＥＸＶＶＴを学習時の排気バルブタイミングＫＥＸＶＶＴに変更する。図１４に示すように、学習時の吸気バルブタイミングＫＩＮＶＶＴと学習時の排気バルブタイミングＥＸＶＶＴは、吸気バルブ２８と排気バルブ２９のバルブオーバーラップがなく且つ吸気バルブ２８の開弁期間が上死点（ＴＤＣ）から下死点（ＢＤＣ）までの間に収まるように設定されている。これにより、燃焼ガスや吸入空気の吹き返しを無くすことができるので、燃焼ガスや吸入空気の吹き返しによる吸気脈動の乱れを防止することができ、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習に適した状態となる。
【００９０】
以上のようにしてスロットルバルブ１５、吸気バルブ２８、排気バルブ２９のバルブ動作条件を学習時バルブ動作条件に変更した後、ステップ１０６ｄに進み、前記実施形態（１）で説明した図７の気筒間吸入空気量ばらつき率算出ルーチンを実行して、各気筒の瞬時空気流量極大値ＧＡＰＥＡＫ(#i)に基づいて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。この後、ステップ１０７に進み、上記ステップ１０６ｄで算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習（記憶）する。その他の処理は、前記実施形態（１）で説明した図３の各ステップの処理と同じである。
【００９１】
以上説明した本実施形態（２）では、図１５のタイムチャートに示すように、ばらつき学習実行条件が成立してばらつき学習実行フラグがＯＮされている期間は、スロットル開度ＴＡ、吸気バルブリフト量ＶＶＬ、吸気バルブタイミングＩＮＶＶＴ、排気バルブタイミングＥＸＶＶＴを、それぞれ気筒間ばらつき学習に適した学習時バルブ動作条件（ＫＴＡ、ＫＶＶＬ、ＫＩＮＶＶＴ、ＫＥＸＶＶＴ）に変更し、その状態のときに算出した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を気筒間ばらつき学習値ＧＤＥＶ(#i)として学習する。これにより、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習精度を高めることができる。
【００９２】
《実施形態（３）》
次に、図１６及び図１７を用いて本発明の実施形態（３）を説明する。本実施形態（３）では、図１６に示す吸入空気量制御方式切換ルーチンを実行することで、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了するまで可変吸気バルブ制御による吸入空気量制御を禁止して、スロットルバルブ制御により吸入空気量を制御し、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了した後に可変吸気バルブ制御による吸入空気量制御を実行するようにしている。
【００９３】
この処理を実行する図１６の吸入空気量制御方式切換ルーチンは、所定周期（例えば４ｍｓ周期）で起動される。本ルーチンが起動されると、まず、ステップ５０１で、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了しているか否か（気筒間ばらつき学習完了フラグＧＸＶＶＬ＝ＯＮか否か）を判定する。もし、気筒間ばらつき学習が完了していなければ、ステップ５０２に進み、可変吸気バルブ制御による吸入空気量制御を禁止して、スロットルバルブ制御による吸入空気量制御を実行する。このスロットルバルブ制御による吸入空気量制御では、アクセル開度やエンジン運転状態等に基づいてスロットル開度ＴＡを可変して吸入空気量を制御する。この場合、吸気バルブリフト量ＶＶＬは、所定値、例えば最大値（例えば１０ｍｍ）に固定する。
【００９４】
その後、上記ステップ５０１で、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了していると判定されたときに、ステップ５０３に進み、可変吸気バルブ制御による吸入空気量制御を実行する。この可変吸気バルブ制御による吸入空気量制御中は、気筒間ばらつき学習値ＧＤＥＶ(#i)を用いて推定した気筒間吸入空気量ばらつき率ＤＥＶ(#i)に基づいて気筒間の吸入空気量ばらつきを補正しながら、アクセル開度やエンジン運転状態等に基づいて吸気バルブリフト量ＶＶＬを可変して吸入空気量を制御する。この場合、スロットル開度ＴＡは、吸気脈動騒音低減等のために吸気管圧力ＰＭを所定負圧（例えば−５ｋＰａ）に維持するように制御する。
【００９５】
以上説明した本実施形態（３）では、図１７のタイムチャートに示すように、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了する前（気筒間ばらつき学習完了フラグＧＸＶＶＬがＯＦＦのとき）は、可変吸気バルブ制御による吸入空気量制御を禁止して、スロットルバルブ制御により吸入空気量を制御する。このようにすれば、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了するまでは、スロットルバルブ制御による吸入空気量制御によって吸入空気量の制御精度を確保することができ、気筒間ばらつき学習値ＧＤＥＶ(#i)の未学習によるドライバビリティ悪化や排気エミッション悪化を回避することができる。
【００９６】
その後、気筒間ばらつき学習値ＧＤＥＶ(#i)の学習が完了して気筒間ばらつき学習完了フラグＧＸＶＶＬがＯＮされた後に、可変吸気バルブ制御による吸入空気量制御を開始する。このようにすれば、気筒間ばらつき学習値ＧＤＥＶ(#i)を用いてほぼ全運転領域の気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く推定できる状態になった後に、推定した気筒間吸入空気量ばらつき率ＤＥＶ(#i)を用いて気筒間の吸入空気量ばらつきを精度良く補正しながら、可変吸気バルブ制御による吸入空気量制御を実行することができ、可変吸気バルブ制御による吸入空気量制御を精度良く実行することができる。
【００９７】
《実施形態（４）》
上記実施形態（１）〜（３）では、エアフローメータ１４で検出した瞬時空気流量ＧＡＦＭを用いて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出するようにしたが、図１８及び図１９に示す本発明の実施形態（４）では、吸気管圧力センサ１８（検出手段）で検出した瞬時吸気管圧力ＰＭＡＰを用いて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出するようにしている。
【００９８】
エンジン運転中は、図１９に示すように、エアフローメータ１４の出力（瞬時空気流量ＧＡＦＭ）の脈動に同期して吸気管圧力センサ１８の出力（瞬時吸気管圧力ＰＭＡＰ）が脈動し、エアフローメータ１４の出力（瞬時空気流量ＧＡＦＭ）が極大になるときに吸気管圧力センサ１８の出力（瞬時吸気管圧力ＰＭＡＰ）が極小となる。
【００９９】
そこで、本実施形態（４）では、図１８に示す各気筒の瞬時吸気管圧力極小値算出ルーチンを実行して、各気筒の吸気行程に対応する期間の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#i)を求め、この瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#i)を用いて気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。
【０１００】
図１８に示す各気筒の瞬時吸気管圧力極小値算出ルーチンは、吸気管圧力センサ１８の出力のＡ／Ｄ変換タイミング（例えば４ｍｓ周期）で起動される。本ルーチンが起動されると、まず、ステップ６０１で、吸気管圧力センサ１８で検出した瞬時吸気管圧力ＰＭＡＰが極小値であるか否かを判定する。この極小値の判定方法は、例えば瞬時吸気管圧力ＰＭＡＰの今回値を前回値と比較して、瞬時吸気管圧力ＰＭＡＰの変化方向が減少から増加に反転したか否かによって判定すれば良い。
【０１０１】
このステップ６０１で、瞬時吸気管圧力ＰＭＡＰが極小値であると判定されたときに、ステップ６０２に進み、クランク角カウンタＣＣＲＮＫ＝１２〜１７の期間（つまり第１気筒＃１の吸気行程に対応する期間）であるか否かを判定し、ＣＣＲＮＫ＝１２〜１７であれば、ステップ６０３に進み、第１気筒＃１の吸気行程に対応する期間の瞬時吸気管圧力ＰＭＡＰの極小値を、第１気筒＃１の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#1)とする。
【０１０２】
上記ステップ６０２で「Ｎｏ」と判定されて、ステップ６０４で、クランク角カウンタＣＣＲＮＫ＝６〜１１の期間（つまり第２気筒＃２の吸気行程に対応する期間）であると判定されれば、ステップ６０５に進み、第２気筒＃２の吸気行程に対応する期間の瞬時吸気管圧力ＰＭＡＰの極小値を、第２気筒＃２の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#2)とする。
【０１０３】
上記ステップ６０２、６０４で「Ｎｏ」と判定されて、ステップ６０６で、クランク角カウンタＣＣＲＮＫ＝１８〜２３の期間（つまり第３気筒＃３の吸気行程に対応する期間）であると判定されれば、ステップ６０７に進み、第３気筒＃３の吸気行程に対応する期間の瞬時吸気管圧力ＰＭＡＰの極小値を、第３気筒＃３の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#3)とする。
【０１０４】
上記ステップ６０２、６０４、６０６で全て「Ｎｏ」と判定された場合、つまり、クランク角カウンタＣＣＲＮＫ＝０〜５の期間（第４気筒＃４の吸気行程に対応する期間）である場合は、ステップ６０８に進み、第４気筒＃４の吸気行程に対応する期間の瞬時吸気管圧力ＰＭＡＰの極小値を、第４気筒＃４の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#4)とする。
【０１０５】
このようにして求めた各気筒の瞬時吸気管圧力極小値ＰＭＰＥＡＫ(#i)を用いて、前記実施形態（１）で説明した気筒間吸入空気量ばらつき率の算出方法（図７参照）と同じ方法で各気筒の気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。
以上説明した本実施形態（４）でも、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く算出することができる。
【０１０６】
《実施形態（５）》
図２０に示す本発明の実施形態（５）では、気筒内に吸入される吸入空気量が多くなるほど、筒内圧が大きくなるという特性に着目して、各気筒の筒内圧を検出して、各気筒の圧縮ＴＤＣ前後の期間の筒内圧の極大値を求めるようにしている。これを実現するために、本実施形態（５）では、各気筒毎に、筒内圧を検出する筒内圧センサ（検出手段）が設けられている。尚、筒内圧センサは、点火プラグ２１に組み込まれたものを用いても良いし、点火プラグ２１とは別に設けても良い。
【０１０７】
本実施形態（７）では、図２０に示す各気筒の筒内圧極大値算出ルーチンを筒内圧センサのＡ／Ｄ変換タイミング（例えば４ｍｓ周期）で実行する。本ルーチンが起動されると、まず、ステップ７０１で、筒内圧センサで検出した筒内圧ＣＰＳが極大値であるか否かを判定する。この極大値の判定方法は、例えば筒内圧ＣＰＳの今回値を前回値と比較して、筒内圧ＣＰＳの変化方向が増加から減少に反転したか否かによって判定すれば良い。
【０１０８】
このステップ７０１で、筒内圧ＣＰＳが極大値であると判定されたときに、ステップ７０２に進み、クランク角カウンタＣＣＲＮＫ＝２２〜３の期間（つまり第１気筒＃１の圧縮ＴＤＣの前後９０℃Ａ以内の期間）であるか否かを判定し、ＣＣＲＮＫ＝２２〜３であれば、ステップ７０３に進み、第１気筒＃１の圧縮ＴＤＣの前後９０℃Ａ以内の期間の筒内圧ＣＰＳの極大値を、第１気筒＃１の筒内圧極大値ＣＰＳＰＥＡＫ(#1)とする。
【０１０９】
上記ステップ７０２で「Ｎｏ」と判定されて、ステップ７０４で、クランク角カウンタＣＣＲＮＫ＝１６〜２１の期間（つまり第２気筒＃２の圧縮ＴＤＣの前後９０℃Ａ以内の期間）であると判定されれば、ステップ７０５に進み、第２気筒＃２の圧縮ＴＤＣの前後９０℃Ａ以内の期間の筒内圧ＣＰＳの極大値を、第２気筒＃２の筒内圧極大値ＣＰＳＰＥＡＫ(#2)とする。
【０１１０】
上記ステップ７０２、７０４で「Ｎｏ」と判定されて、ステップ７０６で、クランク角カウンタＣＣＲＮＫ＝４〜９の期間（つまり第３気筒＃３の圧縮ＴＤＣの前後９０℃Ａ以内の期間）であると判定されれば、ステップ７０７に進み、第３気筒＃３の圧縮ＴＤＣの前後９０℃Ａ以内の期間の筒内圧ＣＰＳの極大値を、第３気筒＃３の筒内圧極大値ＣＰＳＰＥＡＫ(#3)とする。
【０１１１】
上記ステップ７０２、７０４、７０６で全て「Ｎｏ」と判定された場合、つまり、クランク角カウンタＣＣＲＮＫ＝１０〜１５の期間（第４気筒＃４の圧縮ＴＤＣの前後９０℃Ａ以内の期間）である場合は、ステップ７０８に進み、第４気筒＃４の圧縮ＴＤＣの前後９０℃Ａ以内の期間の筒内圧ＣＰＳの極大値を、第４気筒＃４の筒内圧極大値ＣＰＳＰＥＡＫ(#4)とする。
【０１１２】
このようにして求めた各気筒の筒内圧極大値ＣＰＳＰＥＡＫ(#i)を用いて、前記実施形態（１）で説明した気筒間吸入空気量ばらつき率の算出方法（図７参照）と同じ方法で各気筒の気筒間吸入空気量ばらつき率ＤＥＶ(#i)を算出する。
【０１１３】
以上説明した本実施形態（５）でも、気筒間吸入空気量ばらつき率ＤＥＶ(#i)を精度良く算出することができる。
尚、気筒間ばらつき率の算出方法は適宜変更しても良く、要は、吸入空気量、吸気管圧力、筒内圧力の所定期間毎の極大値、極小値、平均値、振幅値、面積、軌跡長等のうちの少なくとも１つに基づいて気筒間ばらつき値を算出するようにしても良い。
【０１１４】
また、上記各実施形態（１）〜（５）では、可変吸気バルブ制御による吸入空気量制御を行うシステムに本発明を適用したが、スロットルバルブ制御による吸入空気量制御のみを行うシステムに本発明を適用しても良い。スロットルバルブ制御による吸入空気量制御のみを行うシステムでは、スロットルバルブを全開又は大きく開いた高負荷領域で、吸気脈動の振幅が大きくなって、吸気脈動の特性値（極大値、極小値、面積等）を判別し易くなるため、この高負荷領域で、気筒間ばらつき学習値を学習するようにすると良い。
【０１１５】
また、本発明の適用範囲は４気筒のエンジンに限定されず、５気筒以上又は３気筒以下の複数気筒エンジンに本発明を適用しても良い。
【図面の簡単な説明】
【図１】本発明の実施形態（１）におけるエンジン制御システム全体の概略構成図
【図２】可変バルブリフト機構の正面図
【図３】実施形態（１）の気筒間ばらつき算出ベースルーチンの処理の流れを示すフローチャート
【図４】エアフローメータの出力電圧ＶＡＦＭを瞬時空気流量ＧＡＦＭに変換するマップを概念的に示す図
【図５】気筒間吸入空気量ばらつき率ＤＥＶのマップを概念的に示す図
【図６】実施形態（１）の各気筒の瞬時空気流量極大値算出ルーチンの処理の流れを示すフローチャート
【図７】実施形態（１）の気筒間吸入空気量ばらつき率算出ルーチンの処理の流れを示すフローチャート
【図８】実施形態（１）の気筒間ばらつき補正ルーチンの処理の流れを示すフローチャート
【図９】基本リフト補正量ＦＶＶＬ１のマップを概念的に示す図
【図１０】補正係数ＦＶＶＬ２のマップを概念的に示す図
【図１１】実施形態（１）の実行例を示すタイムチャート
【図１２】エアフローメータの出力の挙動を示すタイムチャート
【図１３】実施形態（２）の気筒間ばらつき算出ベースルーチンの処理の流れの一部を示すフローチャート
【図１４】学習時の吸気バルブタイミング進角位置と学習時の排気バルブタイミング進角位置を説明するためのバルブ特性図
【図１５】実施形態（２）の実行例を示すタイムチャート
【図１６】実施形態（３）の吸入空気量制御方式切換ルーチンの処理の流れを示すフローチャート
【図１７】実施形態（３）の実行例を示すタイムチャート
【図１８】実施形態（４）の各気筒の瞬時吸気管圧力極小値算出ルーチンの処理の流れを示すフローチャート
【図１９】エアフローメータの出力と吸気管圧力センサの出力との相関関係を説明するタイムチャート
【図２０】実施形態（５）の各気筒の筒内圧極大値算出ルーチンの処理の流れを示すフローチャート
【符号の説明】
１１…エンジン（内燃機関）、１２…吸気管、１４…エアフローメータ（検出手段）、１５…スロットルバルブ、１８…吸気管圧力センサ（検出手段）、２０…燃料噴射弁、２１…点火プラグ、２２…排気管、２４…排出ガスセンサ、２６…クランク角センサ、２７…ＥＣＵ（気筒間ばらつき学習手段，気筒間ばらつき推定手段）、２８…吸気バルブ、２９…排気バルブ、３０，３１…可変バルブリフト機構。
【図１】
2004190593.tif 000004
【図２】
2004190593.tif 000005
【図３】
2004190593.tif 000006
【図４】
2004190593.tif 000007
【図５】
2004190593.tif 000008
【図６】
2004190593.tif 000009
【図７】
2004190593.tif 000010
【図８】
2004190593.tif 000011
【図９】
2004190593.tif 000012
【図１０】
2004190593.tif 000013
【図１１】
2004190593.tif 000014
【図１２】
2004190593.tif 000015
【図１３】
2004190593.tif 000016
【図１４】
2004190593.tif 000017
【図１５】
2004190593.tif 000018
【図１６】
2004190593.tif 000019
【図１７】
2004190593.tif 000020
【図１８】
2004190593.tif 000021
【図１９】
2004190593.tif 000022
【図２０】
2004190593.tif 000023