"内燃機関の回転変動に基づき気筒間の空燃比のばらつき異常を検出するばらつき異常検出手段と、前記内燃機関の回転変動を抑制するように点火時期を気筒別にフィードバック補正する点火時期フィードバック制御手段と、を備えた、多気筒内燃機関の気筒間空燃比ばらつき異常検出装置であって、前記ばらつき異常検出手段は、前記点火時期のフィードバック補正における補正量を考慮してばらつき異常を検出することを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。請求項1に記載の多気筒内燃機関の気筒間空燃比ばらつき異常検出装置であって、前記ばらつき異常検出手段は、検出した回転変動の量を所定の基準値と比較することで気筒間空燃比ばらつき異常を検出し、且つ、前記フィードバック補正の補正量に基づいて、前記検出した回転変動の量を補正することを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。請求項1または2に記載の多気筒内燃機関の気筒間空燃比ばらつき異常検出装置であって、前記ばらつき異常検出手段は、検出した回転変動の量を所定の基準値と比較することで気筒間空燃比ばらつき異常を検出し、且つ、前記フィードバック補正の補正量に基づいて、前記所定の基準値を補正することを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。特許文献1に示されるように、多気筒内燃機関において、各気筒への燃料噴射量を強制的に変える噴射量変更制御を実行することで、気筒間空燃比ばらつき異常、つまり気筒間の空燃比がインバランス状態になっていることの検出を容易にすることが可能である。しかし、そのような噴射量変更制御の実行と並行して、内燃機関のトルクの気筒間ばらつきを抑制するように点火時期を気筒別にフィードバック補正する点火時期フィードバック制御が実行され得る。この場合、点火時期フィードバック制御の実行により、特定の気筒の点火時期が進角されてトルクが増大される結果、回転変動の一部又は全部が解消されて、気筒間空燃比ばらつき異常の検出を妨げる可能性がある。そこで本発明は、以上の事情に鑑みて創案され、その目的は、多気筒内燃機関において、点火時期フィードバック制御を実行しながらも、気筒間空燃比ばらつき異常を適切に検出することにある。本発明の一の態様は、内燃機関の回転変動に基づき気筒間の空燃比のばらつき異常を検出するばらつき異常検出手段と、前記内燃機関の回転変動を抑制するように点火時期を気筒別にフィードバック補正する点火時期フィードバック制御手段と、を備えた、多気筒内燃機関の気筒間空燃比ばらつき異常検出装置であって、前記ばらつき異常検出手段は、前記点火時期のフィードバック補正における補正量を考慮してばらつき異常を検出することを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置である。好ましくは、前記ばらつき異常検出手段は、検出した回転変動の量を所定の基準値と比較することで気筒間空燃比ばらつき異常を検出し、かつ、前記フィードバック補正の補正量に基づいて、前記所定の基準値、及び前記検出した回転変動の量のうち、少なくとも一方を補正する。以下、本発明の実施形態について添付図面に基づき説明する。図1は、本発明の実施形態に係る内燃機関エンジン10の概略図である。図示されるように、エンジン10は、シリンダブロック12を含むエンジン10内に形成された燃焼室14で燃料および空気の混合気を燃焼させ、燃焼室14内でピストンを往復移動させることにより動力を発生する。エンジン10は、1サイクル4ストロークエンジンである。エンジン10は自動車用の多気筒内燃機関であり、より具体的には直列4気筒の火花点火式内燃機関すなわちガソリンエンジンである。ここではエンジン10は車両に搭載されている。ただし本発明が適用可能な内燃機関はこのようなものに限られず、2気筒以上を有する多気筒内燃機関であれば気筒数及び形式は特に限定されない。図示しないが、エンジン10のシリンダヘッドには、吸気ポートを開閉する吸気弁と、排気ポートを開閉する排気弁とが気筒ごとに配設されている。各吸気弁および各排気弁は、カムシャフトによって開閉させられる。シリンダヘッドの頂部には、燃焼室14内の混合気または燃料に点火するための点火プラグ16が気筒ごとに取り付けられている。各気筒の吸気ポートは、気筒毎の枝管18を介して、吸気集合室であるサージタンク20に接続されている。サージタンク20の上流側には、吸気管22が接続されており、吸気管22の上流端にはエアクリーナ24が設けられている。そして吸気管22には、上流側から順に、吸入空気量を検出するためのエアフローメータ26と、電子制御式のスロットルバルブ28とが組み込まれている。吸気ポート、枝管18、サージタンク20および吸気管22により吸気通路30が実質的に形成される。吸気通路、特に吸気ポート内に燃料を噴射する燃料噴射弁インジェクタ32が気筒ごとに配設される。インジェクタ32から噴射された燃料は、吸入空気と混合されて混合気をなし、この混合気が吸気弁の開弁時に燃焼室14に吸入され、ピストンで圧縮され、点火プラグ16で点火燃焼させられる。一方、各気筒の排気ポートは排気マニホールド34に接続される。排気マニホールド34は、その上流部をなす気筒毎の枝管34aと、その下流部をなす排気集合部34bとからなる。排気集合部34bの下流側には排気管36が接続されている。排気ポート、排気マニホールド34および排気管36により、排気通路38が形成される。排気管36には、三元触媒を含む触媒コンバータ40が取り付けられている。この触媒コンバータ40が排気浄化装置をなしている。なお、触媒コンバータ40は、流入する排気の空燃比排気空燃比A/Fが理論空燃比ストイキ、例えばA/F=14.6近傍のときに、排気中の有害成分であるNOx、HCおよびCOを同時に浄化するように機能する。触媒コンバータ40の上流側および下流側に、それぞれ排気空燃比を検出するための触媒前センサ42および触媒後センサ44が設置されている。これら触媒前センサ42および触媒後センサ44は、触媒コンバータ40の直前および直後の位置の排気通路に設置され、排気中の酸素濃度に基づく信号を出力する。なお、触媒後センサ44は設けられなくてもよい。上述の点火プラグ16、スロットルバルブ28およびインジェクタ32を含む各種のアクチュエータは、電子制御ユニットECU50に電気的に接続されている。ECU50は、エンジン10における各種制御手段制御装置および各種検出手段検出部としての各機能を実質的に担うように構成されている。ECU50は、何れも図示されないCPU、ROMおよびRAMを含む記憶装置、並びに入出力ポートを含むものである。またECU50には、図示されるように、前述のエアフローメータ26、触媒前センサ42、触媒後センサ44のほか、内燃機関10のクランク角を検出するためのクランク角センサ52、アクセル開度を検出するためのアクセル開度センサ54、及びエンジン冷却水温を検出するための水温センサ56を含む各種のセンサが、図示されないA/D変換器等を介して電気的に接続されている。ECU50は、各種センサによる出力および/または検出値に基づいて、所望の出力が得られるように、点火プラグ16、スロットルバルブ28、インジェクタ32を含む各種アクチュエータを制御し、点火時期、燃料噴射量、燃料噴射時期、スロットル開度等を制御する。エンジン10には、後で詳述するように気筒間空燃比ばらつき異常検出装置が実装されていて、ECU50は、点火時期フィードバック制御手段、及びばらつき異常検出手段の各機能を実質的に担う。なお、本実施形態におけるばらつき異常検出手段は、エンジン10における回転変動を表す値回転変動量を検出するための回転変動量検出手段と、該回転変動量検出手段により検出された出力変動量と所定値との比較を行う比較手段とのそれぞれを含む。またスロットルバルブ28には、スロットル開度センサ図示せずが設けられ、スロットル開度センサからの出力信号がECU50に送られる。ECU50は、通常、アクセル開度に応じて定まる開度に、スロットルバルブ28の開度スロットル開度をフィードバック制御する。またECU50は、エアフローメータ26からの出力信号に基づき、単位時間当たりの吸入空気の量すなわち吸入空気量を検出する。そしてECU50は、検出したアクセル開度、スロットル開度および吸入空気量のうちの少なくとも一つに基づき、エンジン10の負荷を検出する。ECU50は、クランク角センサ52からのクランクパルス信号に基づき、クランク角自体を検出すると共にエンジン10の回転数を検出する。ここで回転数とは単位時間当たりの回転数のことをいい、回転速度と同義である。本実施形態では回転数とは1分間当たりの回転数rpmのことをいう。通常、ECU50は、吸入空気量およびエンジン回転速度つまりエンジン運転状態に基づいて、予め記憶装置に記憶されているプログラム、マップ又は関数を含むデータを用いて、燃料噴射量または燃料噴射時間を設定する。そして、その燃料噴射量に基づいて、インジェクタ32からの燃料の噴射が制御される。触媒コンバータ40は三元触媒を備え、そこに流入する排気ガスの空燃比A/Fがストイキ近傍のときに、排気中の有害成分であるNOx、HCおよびCOを同時に浄化する機能を有する。エンジン10の通常運転時、エンジン10のトルクの気筒間ばらつきを抑制するように点火時期を気筒別にフィードバック補正する点火時期フィードバック制御が、ECU50によって実行される。この点火時期フィードバック制御は、ある気筒のトルクが他の気筒のトルクよりも小さいときに、当該気筒の点火時期を進角補正するものである。具体的には、図6に示されるように、ECU50は、クランク角センサ52からのクランクパルス信号に基づき、気筒別に所定クランク角における角加速度を算出しS601、また、当該角加速度の全気筒の平均値を算出するS603。所定クランク角は圧縮上死点や膨張行程中の単一の点でもよく、また複数の異なる角度でもよい。後者の場合には各クランク角における角加速度の平均値を当該気筒の角加速度として用いてもよい。そして、最も角加速度が小さい気筒異常気筒の角加速度と、他の全気筒の角加速度の平均値との偏差を算出しS605、この偏差に基づいて、当該気筒異常気筒のための進角量を所定のマップ又は関数により算出するS607。そして、算出した進角量だけ、当該気筒異常気筒の点火時期を進角側に補正するS609。ここで用いられた進角量の値、すなわち補正量は、ECU50の不揮発性メモリに記憶され更新されるS611。進角量の値は、偏差が大きいほど大きくされる。なお、一般に回転速度が上がるほど回転変動は慣性により小さくなるので、進角量の値は、回転速度が大きいほど小さくされてもよい。さて、例えば全気筒のうちの一部の気筒特に1気筒において、インジェクタ32の故障等が発生し、気筒間に空燃比のばらつきインバランス:imbalanceが発生することがある。例えばインジェクタ32の閉弁不良により1気筒の燃料噴射量が他の2,3,4気筒の燃料噴射量よりも多くなり、1気筒の空燃比が他の2,3,4気筒の空燃比よりも大きくリッチ側にずれる場合である。このときでも、前述の気筒別の点火時期フィードバック制御を実行することによって、気筒間の回転変動を抑制することができる。しかし、このようにして吸気系または燃料供給系の動作の不健全さを点火時期の制御によって補償することは、吸気系または燃料供給系の動作の不健全さ例えば、インジェクタ32の開固着や閉固着及びこれらの兆候を放置し温存する傾向を助長することになる。したがって、このような動作の不健全さを、通常の運転動作を維持しながら、気筒間空燃比ばらつき異常として検出できることが好ましい。そこで本実施形態では、気筒別の点火時期フィードバック制御の制御量を考慮して、空燃比ばらつき異常を検出する処理が実装されている。本実施形態における空燃比ばらつき異常の検出処理では、気筒間空燃比のばらつき度合いを表す指標値としてインバランス率なる値を用いる。インバランス率とは、複数の気筒のうちある1気筒のみが燃料噴射量ズレを起こしている場合に、その燃料噴射量ズレを起こしている気筒インバランス気筒の燃料噴射量がどれくらいの割合で、燃料噴射量ズレを起こしていない気筒バランス気筒の燃料噴射量すなわち基準噴射量からズレているかを示す値である。インバランス率をIB、インバランス気筒の燃料噴射量をα、バランス気筒の燃料噴射量すなわち基準噴射量をβとすると、IB=α-β/β×100で表される。インバランス率IBが大きいほど、インバランス気筒のバランス気筒に対する燃料噴射量ズレが大きく、空燃比ばらつき度合いは大きい。他方、本実施形態においては、所定の対象気筒の燃料噴射量をアクティブにまたは強制的に増量または減量し、少なくとも燃料噴射量の増量または減量後の対象気筒の出力変動としての回転変動に基づき、ばらつき異常を検出する。まず、回転変動について説明する。回転変動とは、エンジン回転速度あるいはクランクシャフト回転速度の変化をいう。そして本明細書では、上記したように回転変動を表す値つまり回転変動の程度を表した値を回転変動量と称する。例えば、クランクシャフトが所定角度回転するのに要する時間を計測し、その計測値を演算処理することで求められる値量が回転変動量として用いられることができる。以下の図2および図3を用いた説明で、種々の値を回転変動量として用いることができることが理解されるだろう。図2には回転変動を説明するための一例としてのタイムチャートを示す。図示例はエンジン10と同様に直列4気筒エンジンの例であるが、他の形式および気筒配列のエンジンにも同様に適用可能であることが理解されよう。なお、図2の例での点火順序は1,3,4,2気筒の順である。図2において、Aはエンジンのクランク角°CAを示す。1エンジンサイクルは720°CAであり、図には逐次的に検出される複数サイクル分のクランク角が鋸歯状に示されている。図2Bは、クランクシャフトが所定角度だけ回転するのに要した時間、すなわち回転時間Tsを示す。ここでは所定角度が30°CAであるが、他の値例えば10°CAとしてもよい。回転時間Tが長いほど図中上側に至るほどエンジン回転速度は遅く、逆に回転時間Tが短いほどエンジン回転速度は速い。この回転時間Tはクランク角センサ52の出力に基づきECU50により検出される。図2Cは、後に説明する回転時間差ΔTを示す。図中、正常とは、いずれの気筒にも空燃比ずれが生じていない正常な場合を示し、リーンずれ異常とは、1気筒のみにインバランス率IB=-30のリーンずれが生じている異常な場合を示す。リーンずれ異常は例えばインジェクタの噴孔詰まりや開弁不良により生じ得る。まず、各気筒の同一タイミングにおける回転時間TがECUにより検出される。ここでは各気筒の圧縮上死点TDCのタイミングにおける回転時間Tが検出される。この回転時間Tが検出されるタイミングを検出タイミングという。次いで、検出タイミング毎に、当該検出タイミングにおける回転時間T2と、直前の検出タイミングにおける回転時間T1との差T2-T1がECUにより算出される。この差が図2Cに示す回転時間差ΔTであり、ΔT=T2-T1である。通常、クランク角がTDCを超えた後の燃焼行程では回転速度が上昇するため回転時間Tが低下し、その後の圧縮行程では回転速度が低下するため回転時間Tが増大する。しかしながら、図2Bに示すように1気筒がリーンずれ異常の場合、1気筒を点火させても十分なトルク出力が得られず、回転速度が上昇しづらいので、その影響で3気筒TDCにおける回転時間Tは大きくなっている。それ故、3気筒TDCにおける回転時間差ΔTは、図2Cに示すように大きな正の値となる。この3気筒TDCにおける回転時間および回転時間差をそれぞれ1気筒の回転時間および回転時間差とし、それぞれT1およびΔT1で表す。他の気筒についても同様である。次に、3気筒は正常であるので、3気筒を点火させたときには回転速度が急峻に上昇する。これにより次の4気筒TDCのタイミングでは、3気筒TDCのときに比べ回転時間Tが若干低下しているに過ぎない。それ故、4気筒TDCにおいて検出された3気筒の回転時間差ΔT3は、図2Cに示すように小さな負の値となる。このようにある気筒の回転時間差ΔTが、点火気筒TDC毎に検出される。以降の2気筒TDCおよび1気筒TDCにおいても4気筒TDCのときと同様の傾向が見られ、両タイミングにおいて検出された4気筒の回転時間差ΔT4および2気筒の回転時間差ΔT2はともに小さな負の値となっている。以上の特性が1エンジンサイクル毎に繰り返される。このように、各気筒の回転時間差ΔTは、各気筒の回転変動を表す値であり、各気筒の空燃比ずれ量に相関した値であることが分かる。そこで各気筒の回転時間差ΔTを各気筒の回転変動の指標値つまり回転変動量として用いることができる。各気筒の空燃比ずれ量が大きいほど、各気筒の回転変動は大きくなり、各気筒の回転時間差ΔTは大きくなる。他方、図2Cに示すように、正常の場合には回転時間差ΔTが常時ゼロ付近である。図2の例ではリーンずれ異常の場合を示したが、逆のリッチずれ異常、すなわち1気筒のみに大きなリッチずれが生じている場合にも、同様の傾向がある。大きなリッチずれが生じた場合、点火しても燃料過多のため燃焼が不十分となり、十分なトルクが得られず、回転変動が大きくなるからである。次に、図3を参照して、回転変動を表す別の値つまり別の回転変動量の例を説明する。図3Aは図2Aと同様にエンジンのクランク角°CAを示す。図3Bは、前記回転時間Tの逆数である角速度ωrad/sを示す。ω=1/Tである。当然ながら、角速度ωが大きいほどエンジン回転速度は速く、角速度ωが小さいほどエンジン回転速度は遅い。角速度ωの波形は、回転時間Tの波形を上下反転した形となる。図3Cは、前記回転時間差ΔTと同様、角速度ωの差である角速度差Δωを示す。角速度差Δωの波形も、回転時間差ΔTの波形を上下反転した形となる。図中の正常およびリーンずれ異常については図2と同様である。まず、各気筒の同一タイミングにおける角速度ωがECUにより検出される。ここでも各気筒の圧縮上死点TDCのタイミングにおける角速度ωが検出される。角速度ωは、1を前記回転時間Tで除することにより算出される。次いで、検出タイミング毎に、当該検出タイミングにおける角速度ω2と、直前の検出タイミングにおける角速度ω1との差ω2-ω1がECUにより算出される。この差が図3Cに示す角速度差Δωであり、Δω=ω2-ω1である。通常、クランク角がTDCを超えた後の燃焼行程では回転速度が上昇するため角速度ωが上昇し、その後の圧縮行程では回転速度が低下するため角速度ωが低下する。しかしながら、図3Bに示すように1気筒がリーンずれ異常の場合、1気筒を点火させても十分なトルクが得られず、回転速度が上昇しづらいので、その影響で3気筒TDCにおける角速度ωは小さくなっている。それ故、3気筒TDCにおける角速度差Δωは、図3Cに示すように大きな負の値となる。この3気筒TDCにおける角速度および角速度差をそれぞれ1気筒の角速度および角速度差とし、それぞれω1およびΔω1で表す。他の気筒についても同様である。次に、3気筒は正常であるので、3気筒を点火させたときには回転速度が急峻に上昇する。これにより次の4気筒TDCのタイミングでは、3気筒TDCのときに比べ角速度ωが若干上昇するに過ぎない。それ故、4気筒TDCにおいて検出された3気筒の角速度差Δω3は、図3Cに示すように小さな正の値となる。このようにある気筒の角速度差Δωが、次点火気筒TDC毎に検出される。以降の2気筒TDCおよび1気筒TDCにおいても4気筒TDCのときと同様の傾向が見られ、両タイミングにおいて検出された4気筒の角速度差Δω4および2気筒の角速度差Δω2はともに小さな正の値となっている。以上の特性が1エンジンサイクル毎に繰り返される。このように、各気筒の角速度差Δωは、各気筒の回転変動を表す値であり、各気筒の空燃比ずれ量に相関した値であることが分かる。そこで各気筒の角速度差Δωを各気筒の回転変動の指標値として用いることができる。各気筒の空燃比ずれ量が大きいほど、各気筒の回転変動は大きくなり、各気筒の角速度差Δωは小さくなるマイナス方向に大きくなる。他方、図3Cに示すように、正常の場合には角速度差Δωが常時ゼロ付近である。逆のリッチずれ異常の場合にも同様の傾向がある点は上述した通りである。次に、ある1気筒の燃料噴射量をアクティブにつまり強制的に増量または減量して当該気筒での空燃比を変化させたときの回転変動量の変化を、図4の概念図を参照して説明する。ただし、この場合、燃料噴射量をアクティブに増量または減量するとき、吸入空気量は変化しないようにスロットルバルブ28等の作動は制御される。図4において、横軸はインバランス率IBを示し、縦軸は回転変動量を示す。ここでは、全4気筒のうちのある1気筒のみのインバランス率IBを燃料噴射量を増減させることで変化させ、このときの当該1気筒のインバランス率IBと当該1気筒の回転変動量との関係を線L1に従って示す。当該1気筒をアクティブ対象気筒という。他の気筒は全てバランス気筒であり、基準噴射量としてストイキ相当量を噴射しているものとする。なお、図4では横軸にインバランス率が用いられるが、インバランス率に代えて空燃比が用いられることができる。図4では左側に至るほどインバランス率がプラス方向に大きくなるが、これに対応して、インバランス率の代わりに空燃比が用いられる場合には、図中左側に至るほど空燃比はリッチになる。図4の横軸には、インバランス率IBがとられている。図4中、アクティブ対象気筒の燃料噴射量がストイキ相当量であるときに相当するインバランス率が0の線Sから左側に移動するほど、インバランス率IBがプラス方向に増加し、燃料噴射量としては過多すなわちリッチな状態となる。逆に、図4中、インバランス率IBが0の線Sから右側に移動するほど、インバランス率IBがマイナス方向に増加し減少し、燃料噴射量としては過少すなわちリーンな状態となる。また、図4中、上側に移動するほど、回転変動量が大きくなる。特性線L1から理解され得るように、アクティブ対象気筒のインバランス率IBが0からプラス方向に増加してもマイナス方向に増加しても、アクティブ対象気筒の回転変動量は大きくなる傾向にある。そして、インバランス率IBが0から離れるほど、特性線L1の傾きが急になり、インバランス率IBの変化量または変化割合に対する回転変動量の変化量または変化割合は大きくなる傾向にある。ここで、インバランス率IBがプラスの範囲の図4の一部領域が取り出されて、図5に示される。なお、図5の線L2は図4の線L1の一部に相当する。図5には、アクティブ対象気筒における2つのインバランス率IBの例が線A、Bで表されている。線Aにおけるインバランス率IBaは、ストイキ相当値である0のインバランス率図4の線S参照からプラス方向にずれているが許容範囲内のものの一例である。これに対して、線Bにおけるインバランス率IBbは、線Aにおけるインバランス率IBaよりも燃料噴射量がさらに多い方向にずれていて、許容範囲外のものの一例である。ここで、通常運転時にストイキ制御を行っているときのアクティブ対象気筒の状態が線A上の状態である場合を考える。このときに、矢印F1で示すように、アクティブ対象気筒の燃料噴射量を、所定量Δf1、強制的に増量変更したとする。所定量Δf1は任意に設定されることができるが、例えば、燃料噴射量はインバランス率で約45相当の増量が図られる。IB=0の近辺図5中右端側では特性線L2の傾きが緩やかであることから、ストイキ制御を行っているときのアクティブ対象気筒の状態が線A上の状態である場合、燃料噴射量を増量変更したときの線A ́上の状態における回転変動量Va ́は増量前の回転変動量Vaと大きく変わらない。他方、ストイキ制御を行っているときのアクティブ対象気筒の状態が線B上の状態である場合を考える。このとき、アクティブ対象気筒において既に許容範囲を超えるリッチずれが生じており、そのインバランス率IBbが比較的大きなプラス側の値になっている。例えば、線Bでのインバランス率IBbは、インバランス率で約60のリッチずれに相当する。この状態から矢印F2で示すように、アクティブ対象気筒の燃料噴射量を同一所定量Δf1、強制的に増量したとすると、燃料噴射量を増量変更したときの線B ́を含む領域では特性線L2の傾きが急であることから、増量後の回転変動量Vb ́は増量前の回転変動量Vbよりかなり大きく、増量前後の回転変動量の差Vb ́-Vbは大きくなる。すなわちこのような燃料噴射量の増量により、アクティブ対象気筒の回転変動は十分大きくなる。よって、アクティブ対象気筒の燃料噴射量を強制的に所定量増量変更したときの少なくとも増量後のアクティブ対象気筒の回転変動量に基づき、ばらつき異常を検出することが可能である。例えば、増量後の回転変動量の大きさ例えば|Vb ́|が所定量よりも大きいときにばらつき異常があると判断することができる。さらに、複数サイクルに関してアクティブ対象気筒に関して求めた回転変動量の平均値または統計処理して求めた値を、回転変動量として、所定量と比較することで、気筒間空然比ばらつき異常があるか否かが判断されてもよい。このように、燃料噴射量の増量により、気筒間空然比ばらつき異常があるときにはそれを顕著に燃焼室での燃料つまり混合気の燃焼状態に反映させて、その結果を回転変動量として検出して、該回転変動量に基づいて気筒間空然比ばらつき異常を検出することができる。なお、上記説明では、燃料噴射量を所定量分だけ強制的に増量変更させる制御燃料噴射量増量制御を行って、気筒間空然比ばらつき異常を検出した。これは、インバランス気筒で燃料噴射量が多い側にずれているときに有効である。逆に、インバランス気筒で燃料噴射量が少ない側にずれているときには、燃料噴射量を所定量Δf2分だけ強制的に減量変更させる制御燃料噴射量減量制御を行って、ばらつき異常を検出することが有効である。このインバランス率が負の領域で強制減量を行う場合も、上記の場合から理解できるので、その説明は省略される。ただし、燃料噴射量減量制御における減量量大きさΔf2は燃料噴射量増量制御における増量量大きさΔf1よりも少ないとよい。これは、リーンずれ異常気筒に対しあまりに多くの減量を行ってしまうと失火の虞があるからである。ただし、燃料噴射量の減量または増量により失火を生じさせ、そのときの出力変動に基づいてばらつき異常を検出することを本発明は排除しない。所定量Δf2は任意に設定されることができるが、例えば、燃料噴射量はインバランス率で約15相当の減量がなされ得る。なお、燃料噴射量増量制御を実行して気筒間空然比ばらつき異常を検出するための閾値である上記所定値と、燃料噴射量減量制御を実行して気筒間空然比ばらつき異常を検出するための閾値である所定値は同じであっても異なってもよい。本実施形態では、噴射量変更制御は、全気筒一律且つ同時に適用されるのではなく、一部の気筒である所定の対象気筒のみに一時に適用され、順次、噴射量変更制御が適用される対象気筒は他の気筒に移行する。つまり、噴射量変更制御の適用方法は、全気筒同時に行う方法の他、任意数の気筒ずつ順番に且つ交互に行う方法がある。例えば1気筒ずつ増量したり、2気筒ずつ増量したり、4気筒ずつ増量したりする方法がある。燃料噴射量を強制的に増量または減量する対象気筒の数および気筒番号は任意に設定できる。他方、燃料噴射量増量制御や燃料噴射量減量制御は、全気筒一律且つ同時に適用されることも可能であり、この場合、所定の対象気筒は全気筒である。この場合であっても、インバランス気筒における回転変動量は他の気筒に比して大きくなるものと考えられるから、気筒間空燃比ばらつき異常を好適に検出することができる。以上が気筒間空燃比ばらつき異常検出の原理及び基本的な動作である。ただし、本実施形態では気筒別の点火時期フィードバック制御を実行した後に空燃比ばらつき異常を検出する処理が生じうるため、気筒別の点火時期フィードバック制御が実行された結果として、気筒間空燃比ばらつきの一部又は全部が見かけ上なくなる場面が生じうる。しかしながら、その場合であっても、本実施形態では気筒別の点火時期フィードバック制御の制御量を考慮して空燃比ばらつき異常を検出する処理が、以下のとおり実行され、且つ空燃比ばらつき異常を好適に検出することができる。以下、気筒別の点火時期フィードバック制御の制御量を考慮して空燃比ばらつき異常を検出する制御につき、図7のフローチャートに従って説明する。図7の処理ルーチンは、空燃比ばらつき診断制御を実行するための所定の実行条件が成立している場合に実行される。ここでは、実行条件として、エンジン始動後の所定の運転状態であることという条件が定められている。実行条件は種々定められることができる。例えば、エンジン冷却水温が所定温度例えば70°C以上であること、負荷が所定範囲内にあること例えば吸入空気量が所定吸入空気量範囲例えば15~50g/sにあること、エンジン回転速度が所定エンジン回転速度域例えば1500rpm~2000rpmにあることの全てを満たすことが実行条件として定められることができる。条件となるエンジン回転速度はアイドリング相当値でもよい。まず、ステップS701で対象気筒カウンタCa、実施カウンタCcおよび変更カウンタCfがそれぞれゼロにされる。対象気筒カウンタCaは、上記したような空燃比診断用制御の実施対象となる気筒つまりアクティブ対象気筒の気筒を指し示すカウンタである。本実施形態では、2気筒ずつ燃料量が増減変更され、1、4気筒を対象気筒とする場合と、2、3気筒を対象気筒とする場合とがある。次に、ステップS703で、変更カウンタCfがゼロであるか否かが判定される。初期状態では、変更カウンタCfはゼロであるので肯定判定される。ステップS703の判定で肯定判定されると、ステップS705で、増量変更した燃料噴射量が算出される。ここではまず燃料噴射量を増やすための所定量としての変更量が算出される。この変更量の算出は、エンジン回転速度およびエンジン負荷に基づいて予め記憶装置に記憶する燃料噴射量増量用のデータを検索することで実行される。所定の演算式に基づいて所定の演算が行われてもよい。例えば、変更量として40、45などの増量用変更量が算出される。なお、この変更量はそのように可変とされずに一定とされてもよい。そして、対象気筒カウンタCaに適合した気筒の燃料噴射量がその変更量に基づいて変更される。例えば対象気筒カウンタCaがゼロのときの対象気筒は1、4気筒であるので、それらの気筒の基本制御用につまり通常制御用に算出された燃料噴射量つまり通常時燃料噴射量に、算出された変更量が加えられて、これにより噴射量変更制御における燃料噴射量が定められる。例えば、変更量として40が定められたとき、変更後の燃料噴射量は通常時燃料噴射量の140になる。なお、ここでは、通常時燃料噴射量は、ストイキ相当量である。そして、ステップS707で、ステップS705で算出された量の燃料が対象気筒である1、4気筒のそれぞれにおけるインジェクタ32から噴射される。このように噴射量変更制御が行われているときの回転変動量が、ステップS709で、上記したようにクランク角センサ52からの出力に基づいて算出される。そして、このようにして算出された回転変動量、および先に気筒別点火時期フィードバック制御において記憶されている気筒別点火時期フィードバック補正量に基づき、ステップS711において、換算回転変動量が算出される。この換算回転変動量は、仮に気筒別点火時期フィードバック補正が行われていなかったとした場合に検出されたと推定される仮想的な回転変動量である。具体的には、例えば図5に示されるように、ステップS709で算出された現在の回転変動量がVa ́であった場合には、この回転変動量Va ́に基づいて当該気筒の状態が線A ́上の状態にあると推定できる。この場合には、その時点における当該気筒の気筒別点火時期フィードバック補正量例えば5°に応じたインバランス率F1cだけ、インバランス率を仮想的にシフトさせて、その状態における回転変動量Va ́ ́を、換算回転変動量として読み出す。なお、気筒別点火時期フィードバック補正量と、仮想的にシフトさせるインバランス率との関係は、予めマップとしてECU50に記憶されており、ここではこのマップが用いられる。このようにしてステップS711で算出された換算回転変動量につき、次にステップS713で、それが第1所定値以下か否かが判定される。第1所定値は、気筒間空然比ばらつき異常を検出するために定められており、エンジン10では、第1所定値までの回転変動量が許容され、第1所定値を超えた場合に異常と判断される。ステップS713で回転変動量が第1所定値以下であるので肯定判定されると、ステップS715で実施カウンタCcに1が加算される。そして、ステップS717で、実施カウンタCcが第2所定値であるか否かが判定される。この第2所定値は1以上の任意の整数に定められることができる。なお、実施カウンタCcは、上記ステップS705により算出された量の燃料を噴射する噴射量変更制御ステップS707の期間を定めるように定められている。例えば、実施カウンタCcは、1サイクルの期間であってもよく、複数サイクル、例えば数十サイクルの期間であってもよい。ステップS717で、実施カウンタCcが第2所定値でないので否定判定されると、ステップS703以下の上記各ステップが繰り返し実行される。これに対して、ステップS717で実施カウンタCcが第2所定値であるので肯定判定されると、ステップS719で対象気筒カウンタCaが1だけ増やされて、次ぐステップS721で対象気筒カウンタCaが第3所定値であるか否かが判定される。ここでは第3所定値は、上記したように1、4気筒を対象気筒とする場合と、2、3気筒を対象気筒とする場合との2つのグループがあることに基づいて2に定められている。ステップS721で対象気筒カウンタCaが第3所定値でないので否定判定されると、ステップS703に戻り、2、3気筒を対象気筒としてさらに上記ステップに基づく制御が繰り返し実行される。ステップS721で対象気筒カウンタCaが第3所定値であるので肯定判定されると、ステップS723で対象気筒カウンタCaがゼロにされて、次ぐステップS725で変更カウンタCfが1だけ増やされる。そして、ステップS727で変更カウンタCfが第4所定値であるか否かが判定される。第4所定値は、噴射量変更制御において燃料噴射量を増やす場合と減らす場合との2通りがあるので2と定められている。ステップS725で変更カウンタCfが1にされると、ステップS727で否定判定されて、ステップS703に戻る。ステップS703では上記したように変更カウンタCfがゼロであるか否かが判定される。変更カウンタCfが1であるのでステップS703で否定判定されると、ステップS729で、減量変更した燃料噴射量が算出される。ここではまず燃料噴射量を減らすための所定量としての変更量が算出される。この変更量の算出は、上記したのと同様に、エンジン回転速度およびエンジン負荷に基づいて予め記憶装置に記憶する燃料噴射量減量用のデータを検索することで実行される。所定の演算式に基づいて所定の演算を行うことが行われてもよい。例えば、変更量として10、15などの減量用変更量が算出される。そして、対象気筒カウンタCaに適合した気筒の基本制御用につまり通常制御用に算出された燃料噴射量つまり上記通常時燃料噴射量に、算出された変更量が加えられて、これにより噴射量変更制御における燃料噴射量が定められる。例えば、変更量として10が定められたとき、変更後の燃料噴射量は通常時燃料噴射量の90になる。なお、ここでは、通常時燃料噴射量は、ストイキ相当量である。そして、ステップS729を経ると上記ステップS707に進み、以下ステップS707~S721の上記演算および制御が実行される。ただし、ステップS711で算出された換算回転変動量については、上記したようにステップS713で第1所定値以下か否かが判定されるが、ステップS705を経て燃料噴射量が増やされる場合と、ステップS729を経て燃料噴射量が減らされる場合とで、第1所定値が変えられてもよい。ステップS721で肯定判定されると、ステップS723で対象気筒カウンタCaがゼロにされて、次ぐステップS725で変更カウンタCfが1だけ増やされる。そして、ステップS727で変更カウンタCfが第4所定値であるか否かが判定される。そして、ステップS727で変更カウンタCfが第4所定値であるので肯定判定されると、ばらつき異常検出制御が終了される。なお、ここでは、エンジン10の始動後、たった一度のみ、図7のばらつき異常検出制御が実行される。しかし、適宜の時期に、この異常検出制御が実行されてもよい。例えば、エンジン10の作動時間またはエンジン10を搭載した車両の走行距離が所定値になったときに、異常検出制御が実行されることができる。他方、ステップS713で、回転変動量が第1所定値を超えて否定判定されると、ステップS731で運転者に気筒間空然比ばらつき異常が検出されたことを知らせるべく、例えば運転席のフロントパネルに備えられた警告ランプが点灯される。これにより図7のばらつき異常検出制御は終了される。なお、このように、本実施形態では、任意の1つの気筒群または任意の1つの気筒に上記ばらつき異常が検出された場合に、図7のばらつき異常検出制御は終了されるが、気筒間空然比ばらつき異常がある気筒を特定するべく、全ての気筒の各々に対して個別に上記ばらつき異常検出制御が必ず行われることも可能である。以上のとおり、本実施形態では、燃料噴射量を変更S705,S729したときの回転変動に基づき気筒間空燃比ばらつき異常を検出S713するばらつき異常検出処理と、回転変動を抑制するように点火時期を気筒別にフィードバック補正する点火時期フィードバック制御処理とを実行するようにした装置において、ばらつき異常検出処理では、フィードバック補正の補正量を考慮してばらつき異常を検出することとしたS711。したがって本実施形態では、吸気系または燃料供給系の動作の不健全さ例えば、インジェクタ32の開固着や閉固着及びこれらの兆候を放置し温存する傾向を助長することなく、通常の運転動作を維持しながら、気筒間空燃比ばらつき異常として検出することができ、気筒間空燃比ばらつき異常をより適切に検出することができる。以上、本発明を実施形態に基づいて説明したが、本発明は他の実施形態を許容する。例えば、上記実施形態では、ばらつき異常検出手段は、フィードバック補正の補正量に基づいて、検出した回転変動量を補正S711したが、フィードバック補正の補正量をばらつき異常の検出に仮想的に反映できるような他の構成を採ることも可能であり、例えばフィードバック補正の補正量に基づいて、基準値第1所定値を補正してもよい。その場合には、ある気筒の気筒別点火時期フィードバック補正量がトルク増大側の値である場合に、この補正量に応じて、基準値第1所定値を減少させることができ、これによって、フィードバック補正の補正量をばらつき異常の検出に反映させることができる。フィードバック補正の補正量をばらつき異常の検出に仮想的に反映するように、回転変動量と基準値との両者を補正してもよい。また、本発明は、種々の形式の2つ以上の気筒を有する多気筒エンジンに適用され得、ポート噴射形式のエンジンのみならず、筒内噴射形式のエンジン、ガスを燃料として用いるエンジンなどにも適用され得る。また、上記実施形態では、出力変動を判断または評価するために回転変動量を用いた。しかし、他の出力の値または量、例えば空燃比の変動量を、気筒間空燃比ばらつき異常の検出のために用いることができる。本発明の実施形態は前述の実施形態のみに限らず、特許請求の範囲によって規定される本発明の思想に包含されるあらゆる変形例や応用例、均等物が本発明に含まれる。従って本発明は、限定的に解釈されるべきではなく、本発明の思想の範囲内に帰属する他の任意の技術にも適用することが可能である。"