"所定の対象気筒の燃料噴射量を減量し、少なくとも当該減量後の前記対象気筒の回転変動またはその相関値に基づき、気筒間空燃比ばらつき異常を検出する異常検出手段と、前記異常検出手段による燃料噴射量の減量時に前記対象気筒の点火時期を進角する進角手段と、を備えることを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。前記進角手段は、前記内燃機関の運転状態を表すパラメータに応じて点火時期の進角量を変更することを特徴とする請求項1に記載の多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。前記異常検出手段は、前記内燃機関の運転状態を表すパラメータに応じて燃料噴射量の減量量を変更することを特徴とする請求項1または2に記載の多気筒内燃機関の気筒間空燃比ばらつき異常検出装置。ところで、いずれかの気筒に空燃比異常が生じている場合、当該気筒の燃料噴射量を強制的に減量すると、当該気筒の回転変動が顕著に大きくなることがある。よってこの回転変動の増大を検出することで、空燃比ばらつき異常を検出することが可能である。しかし、空燃比異常が生じていない正常気筒に対し燃料噴射量を減量したとき、回転変動は許容レベル外に至らないものの、振動が許容レベル外に至ることがある。異常検出のための燃料噴射量減量は異常気筒よりも正常気筒に対して行われることの方が圧倒的に多い。このため、燃料噴射量減量を行ったときの振動を許容レベル内に抑えることが重要である。そこで本発明は以上の事情に鑑みて創案され、その目的は、異常検出のための燃料噴射量減量を行ったときの振動を許容レベル内に抑えることができる多気筒内燃機関の気筒間空燃比ばらつき異常検出装置を提供することにある。本発明の一の態様によれば、所定の対象気筒の燃料噴射量を減量し、少なくとも当該減量後の前記対象気筒の回転変動またはその相関値に基づき、気筒間空燃比ばらつき異常を検出する異常検出手段と、前記異常検出手段による燃料噴射量の減量時に前記対象気筒の点火時期を進角する進角手段と、を備えることを特徴とする多気筒内燃機関の気筒間空燃比ばらつき異常検出装置が提供される。好ましくは、前記進角手段は、前記内燃機関の運転状態を表すパラメータに応じて点火時期の進角量を変更する。好ましくは、前記異常検出手段は、前記内燃機関の運転状態を表すパラメータに応じて燃料噴射量の減量量を変更する。本発明によれば、異常検出のための燃料噴射量減量を行ったときの振動を許容レベル内に抑えることができるという、優れた効果が発揮される。以下、本発明の実施形態を添付図面に基づき説明する。図1に本実施形態に係る内燃機関を概略的に示す。図示される内燃機関エンジン1は自動車に搭載されたV型8気筒火花点火式内燃機関ガソリンエンジンである。エンジン1は第1のバンクB1と第2のバンクB2とを有し、第1のバンクB1には奇数番気筒すなわち1,3,5,7気筒が設けられ、第2のバンクB2には偶数番気筒すなわち2,4,6,8気筒が設けられている。1,3,5,7気筒が第1の気筒群をなし、2,4,6,8気筒が第2の気筒群をなす。各気筒にインジェクタ燃料噴射弁2が設けられる。インジェクタ2は、対応気筒の吸気通路特に吸気ポート図示せず内に向けて燃料を噴射する。また各気筒には、筒内の混合気に点火するための点火プラグ13が設けられる。吸気を導入するための吸気通路7は、前記吸気ポートの他、集合部としてのサージタンク8と、各気筒の吸気ポートおよびサージタンク8を結ぶ複数の吸気マニホールド9と、サージタンク8の上流側の吸気管10とを含む。吸気管10には、上流側から順にエアフローメータ11と電子制御式スロットルバルブ12とが設けられている。エアフローメータ11は吸気流量に応じた大きさの信号を出力する。第1のバンクB1に対して第1の排気通路14Aが設けられ、第2のバンクB2に対して第2の排気通路14Bが設けられる。これら第1および第2の排気通路14A,14Bは下流触媒19の上流側で合流されている。この合流位置より上流側の排気系の構成は両バンクで同一なので、ここでは第1のバンクB1側についてのみ説明し、第2のバンクB2側については図中同一符号を付して説明を省略する。第1の排気通路14Aは、1,3,5,7の各気筒の排気ポート図示せずと、これら排気ポートの排気ガスを集合させる排気マニホールド16と、排気マニホールド16の下流側に設置された排気管17とを含む。そして排気管17には上流触媒18が設けられている。上流触媒18の上流側及び下流側直前及び直後にそれぞれ、排気ガスの空燃比を検出するための空燃比センサである触媒前センサ20及び触媒後センサ21が設置されている。このように、一方のバンクに属する複数の気筒あるいは一の気筒群に対して、上流触媒18、触媒前センサ20及び触媒後センサ21が各一つずつ設けられている。なお、第1および第2の排気通路14A,14Bを合流させないで、これらに個別に下流触媒19を設けることも可能である。エンジン1には制御手段としての電子制御ユニット以下ECUと称す100が設けられている。ECU100は、何れも図示されないCPU、ROM、RAM、入出力ポート、および記憶装置等を含むものである。ECU100には、前述のエアフローメータ11、触媒前センサ20、触媒後センサ21のほか、エンジン1のクランク角を検出するためのクランク角センサ22、アクセル開度を検出するためのアクセル開度センサ23、エンジン冷却水の温度を検出するための水温センサ24、その他の各種センサが図示されないA/D変換器等を介して電気的に接続されている。ECU100は、各種センサの検出値等に基づき、所望の出力が得られるように、インジェクタ2、点火プラグ13、スロットルバルブ12等を制御し、燃料噴射量、燃料噴射時期、点火時期、スロットル開度等を制御する。スロットルバルブ12にはスロットル開度センサ図示せずが設けられ、スロットル開度センサからの信号がECU100に送られる。ECU100は、通常、アクセル開度に応じて定まる開度に、スロットルバルブ12の開度スロットル開度をフィードバック制御する。またECU100は、エアフローメータ11からの信号に基づき、単位時間当たりの吸入空気の量すなわち吸入空気量を検出する。そしてECU100は、検出したアクセル開度、スロットル開度および吸入空気量の少なくとも一つに基づき、エンジン1の負荷を検出する。なお吸気圧に基づき負荷を検出してもよい。ECU100は、クランク角センサ22からのクランクパルス信号に基づき、クランク角自体を検出すると共にエンジン1の回転数を検出する。ここで回転数とは単位時間当たりの回転数のことをいい、回転速度と同義である。本実施形態では1分間当たりの回転数rpmのことをいう。触媒前センサ20は所謂広域空燃比センサからなり、比較的広範囲に亘る空燃比を連続的に検出可能である。図2に触媒前センサ20の出力特性を示す。図示するように、触媒前センサ20は、検出した排気空燃比触媒前空燃比A/Ffに比例した大きさの電圧信号Vfを出力する。排気空燃比がストイキ理論空燃比、例えばA/F=14.5であるときの出力電圧はVreff例えば約3.3Vである。他方、触媒後センサ21は所謂O2センサからなり、ストイキを境に出力値が急変する特性を持つ。図2に触媒後センサ21の出力特性を示す。図示するように、排気空燃比触媒後空燃比A/Frがストイキであるときの出力電圧、すなわちストイキ相当値はVrefr例えば0.45Vである。触媒後センサ21の出力電圧は所定の範囲例えば0~1V内で変化する。概して排気空燃比がストイキよりリーンのとき、触媒後センサの出力電圧Vrはストイキ相当値Vrefrより低くなり、排気空燃比がストイキよりリッチのとき、触媒後センサの出力電圧Vrはストイキ相当値Vrefrより高くなる。上流触媒18及び下流触媒19は三元触媒からなり、それぞれに流入する排気ガスの空燃比A/Fがストイキ近傍のときに排気中の有害成分であるNOx、HCおよびCOを同時に浄化する。この三者を同時に高効率で浄化できる空燃比の幅ウィンドウは比較的狭い。そこで、エンジンの通常運転時、上流触媒18に流入する排気ガスの空燃比をストイキ近傍に制御するための空燃比制御ストイキ制御がECU100により実行される。この空燃比制御は、触媒前センサ20によって検出された排気空燃比が所定の目標空燃比であるストイキになるように混合気の空燃比具体的には燃料噴射量をフィードバック制御する主空燃比制御主空燃比フィードバック制御と、触媒後センサ21によって検出された排気空燃比がストイキになるように混合気の空燃比具体的には燃料噴射量をフィードバック制御する補助空燃比制御補助空燃比フィードバック制御とからなる。このように本実施形態において、空燃比の基準値はストイキであり、このストイキに相当する燃料噴射量ストイキ相当量というが燃料噴射量の基準値である。但し、空燃比および燃料噴射量の基準値は他の値とすることもできる。空燃比制御はバンク単位で若しくはバンク毎に行われる。例えば第1のバンクB1側の触媒前センサ20および触媒後センサ21の検出値は、第1のバンクB1に属する1,3,5,7気筒の空燃比フィードバック制御にのみ用いられ、第2のバンクB2に属する2,4,6,8気筒の空燃比フィードバック制御には用いられない。逆も同様である。あたかも独立した直列4気筒エンジンが二つあるように、空燃比制御が実行される。また空燃比制御においては、同一バンクに属する各気筒に対し同一の制御量が一律に用いられる。さて、例えば全気筒のうちの一部の気筒特に1気筒において、インジェクタ2の故障等が発生し、気筒間に空燃比のばらつきインバランス:imbalanceが発生することがある。例えば第1のバンクB1について、インジェクタ2の閉弁不良により1気筒の燃料噴射量が他の3,5,7気筒の燃料噴射量よりも多くなり、1気筒の空燃比が他の3,5,7気筒の空燃比よりも大きくリッチ側にずれる場合である。このときでも、前述の空燃比フィードバック制御により比較的大きな補正量を与えれば、触媒前センサ20に供給されるトータルガス合流後の排気ガスの空燃比をストイキに制御できる場合がある。しかし、気筒別に見ると、1気筒がストイキより大きくリッチ、3,5,7気筒がストイキよりリーンであり、全体のバランスとしてストイキとなっているに過ぎず、エミッション上好ましくないことは明らかである。そこで本実施形態では、かかる気筒間空燃比ばらつき異常を検出する装置が装備されている。ここで、気筒間空燃比のばらつき度合いを表す指標値としてインバランス率なる値を用いる。インバランス率とは、複数の気筒のうちある1気筒のみが燃料噴射量ズレを起こしている場合に、その燃料噴射量ズレを起こしている気筒インバランス気筒の燃料噴射量がどれくらいの割合で、燃料噴射量ズレを起こしていない気筒バランス気筒の燃料噴射量即ち基準噴射量からズレているかを示す値である。インバランス率をIB、インバランス気筒の燃料噴射量をQib、バランス気筒の燃料噴射量即ち基準噴射量をQsとすると、IB=Qib-Qs/Qs×100で表される。インバランス率IBが大きいほど、インバランス気筒のバランス気筒に対する燃料噴射量ズレが大きく、空燃比ばらつき度合いは大きい。他方、本実施形態においては、所定の対象気筒の燃料噴射量をアクティブに若しくは強制的に変更増量または減量し、少なくとも変更増量または減量後の対象気筒の回転変動に基づき、ばらつき異常を検出する。まず、回転変動について説明する。回転変動とは、エンジン回転速度あるいはクランクシャフト回転速度の変化をいい、例えば次に述べるような値で表すことができる。本実施形態においては気筒毎の回転変動が検出可能である。図3には回転変動を説明するためのタイムチャートを示す。図示例は直列4気筒エンジンの例であるが、本実施形態のようなV型8気筒エンジンにも適用可能であることが理解されよう。点火順序は1,3,4,2気筒の順である。図3において、Aはエンジンのクランク角°CAを示す。1エンジンサイクルは720°CAであり、図には逐次的に検出される複数サイクル分のクランク角が鋸歯状に示されている。Bは、クランクシャフトが所定角度だけ回転するのに要した時間、すなわち回転時間Tsを示す。ここでは所定角度が30°CAであるが、他の値例えば10°CAとしてもよい。回転時間Tが長いほどエンジン回転速度は遅く、逆に回転時間Tが短いほどエンジン回転速度は速い。この回転時間Tはクランク角センサ22の出力に基づきECU100により検出される。Cは、後に説明する回転時間差ΔTを示す。図中、正常とは、いずれの気筒にも空燃比ずれが生じていない正常な場合を示し、リーンずれ異常とは、1気筒のみに例えばインバランス率IB=-30のリーンずれが生じている異常な場合を示す。リーンずれ異常は例えばインジェクタの噴孔詰まりや開弁不良により生じ得る。まず、各気筒の同一タイミングにおける回転時間TがECUにより検出される。ここでは各気筒の圧縮上死点TDCのタイミングにおける回転時間Tが検出される。この回転時間Tが検出されるタイミングを検出タイミングという。次いで、検出タイミング毎に、当該検出タイミングにおける回転時間T2と、直前の検出タイミングにおける回転時間T1との差T2-T1がECUにより算出される。この差がCに示す回転時間差ΔTであり、ΔT=T2-T1である。通常、ある気筒のクランク角がTDCを超えた後の燃焼行程では回転速度が上昇するため回転時間Tが低下し、その後の次気筒の圧縮行程では回転速度が低下するため回転時間Tが増大する。しかしながら、Bに示すように1気筒がリーンずれ異常の場合、1気筒を点火させても十分なトルクが得られず、回転速度が上昇しづらいので、その影響で3気筒TDCにおける回転時間Tは大きくなっている。それ故、3気筒TDCにおける回転時間差ΔTは、Cに示すように大きな正の値となる。この3気筒TDCにおける回転時間および回転時間差をそれぞれ1気筒の回転時間および回転時間差とし、それぞれT1およびΔT1で表す。他の気筒についても同様である。次に、3気筒は正常であるので、3気筒を点火させたときには回転速度が急峻に上昇する。これにより次の4気筒TDCのタイミングでは、3気筒TDCのときに比べ回転時間Tが若干低下しているに過ぎない。それ故、4気筒TDCにおいて検出された3気筒の回転時間差ΔT3は、Cに示すように小さな負の値となる。このようにある気筒の回転時間差ΔTが、次点火気筒TDC毎に検出される。以降の2気筒TDCおよび1気筒TDCにおいても4気筒TDCのときと同様の傾向が見られ、両タイミングにおいて検出された4気筒の回転時間差ΔT4および2気筒の回転時間差ΔT2はともに小さな負の値となっている。以上の特性が1エンジンサイクル毎に繰り返される。このように、各気筒の回転時間差ΔTは、各気筒の回転変動を表す値であり、各気筒の空燃比ずれ量に相関した値であることが分かる。そこで各気筒の回転時間差ΔTを各気筒の回転変動の指標値として用いることができる。各気筒の空燃比ずれ量が大きいほど、各気筒の回転変動は大きくなり、各気筒の回転時間差ΔTは大きくなる。他方、図3Cに示すように、正常の場合には回転時間差ΔTが常時ゼロ付近である。図3の例ではリーンずれ異常の場合を示したが、逆のリッチずれ異常、すなわち1気筒のみに大きなリッチずれが生じている場合にも、同様の傾向がある。大きなリッチずれが生じた場合、点火しても燃料過多のため燃焼が不十分となり、十分なトルクが得られず、回転変動が大きくなるからである。次に、図4を参照して、回転変動を表す別の値を説明する。Aは図3Aと同様にエンジンのクランク角°CAを示す。Bは、前記回転時間Tの逆数である角速度ωrad/sを示す。ω=1/Tである。当然ながら、角速度ωが大きいほどエンジン回転速度は速く、角速度ωが小さいほどエンジン回転速度は遅い。角速度ωの波形は、回転時間Tの波形を上下反転した形となる。Cは、前記回転時間差ΔTと同様、角速度ωの差である角速度差Δωを示す。角速度差Δωの波形も、回転時間差ΔTの波形を上下反転した形となる。図中の正常およびリーンずれ異常については図3と同様である。まず、各気筒の同一タイミングにおける角速度ωがECUにより検出される。ここでも各気筒の圧縮上死点TDCのタイミングにおける角速度ωが検出される。角速度ωは、1を前記回転時間Tで除することにより算出される。次いで、検出タイミング毎に、当該検出タイミングにおける角速度ω2と、直前の検出タイミングにおける角速度ω1との差ω2-ω1がECUにより算出される。この差がCに示す角速度差Δωであり、Δω=ω2-ω1である。通常、ある気筒のクランク角がTDCを超えた後の燃焼行程では回転速度が上昇するため角速度ωが上昇し、その後の次気筒の圧縮行程では回転速度が低下するため角速度ωが低下する。しかしながら、Bに示すように1気筒がリーンずれ異常の場合、1気筒を点火させても十分なトルクが得られず、回転速度が上昇しづらいので、その影響で3気筒TDCにおける角速度ωは小さくなっている。それ故、3気筒TDCにおける角速度差Δωは、Cに示すように大きな負の値となる。この3気筒TDCにおける角速度および角速度差をそれぞれ1気筒の角速度および角速度差とし、それぞれω1およびΔω1で表す。他の気筒についても同様である。次に、3気筒は正常であるので、3気筒を点火させたときには回転速度が急峻に上昇する。これにより次の4気筒TDCのタイミングでは、3気筒TDCのときに比べ角速度ωが若干上昇するに過ぎない。それ故、4気筒TDCにおいて検出された3気筒の角速度差Δω3は、Cに示すように小さな正の値となる。このようにある気筒の角速度差Δωが、次点火気筒TDC毎に検出される。以降の2気筒TDCおよび1気筒TDCにおいても4気筒TDCのときと同様の傾向が見られ、両タイミングにおいて検出された4気筒の角速度差Δω4および2気筒の角速度差Δω2はともに小さな正の値となっている。以上の特性が1エンジンサイクル毎に繰り返される。このように、各気筒の角速度差Δωは、各気筒の回転変動を表す値であり、各気筒の空燃比ずれ量に相関した値であることが分かる。そこで各気筒の角速度差Δωを各気筒の回転変動の指標値として用いることができる。各気筒の空燃比ずれ量が大きいほど、各気筒の回転変動は大きくなり、各気筒の角速度差Δωは小さくなるマイナス方向に大きくなる。他方、図4Cに示すように、正常の場合には角速度差Δωが常時ゼロ付近である。逆のリッチずれ異常の場合にも同様の傾向がある点は上述した通りである。次に、ある1気筒の燃料噴射量をアクティブに増量または減量したときの回転変動の変化を、図5を参照して説明する。図5において、横軸はインバランス率IBを示し、縦軸は回転変動の指標値としての角速度差Δωを示す。ここでは、全8気筒のうちある1気筒のみのインバランス率IBを変化させ、このときの当該1気筒のインバランス率IBと、当該1気筒の角速度差Δωとの関係を線aで示す。当該1気筒をアクティブ対象気筒という。他の気筒は全てバランス気筒であり、基準噴射量Qsとしてストイキ相当量を噴射しているものとする。横軸において、IB=0とは、アクティブ対象気筒のインバランス率IBが0で、アクティブ対象気筒がストイキ相当量を噴射している正常な場合を意味する。このときのデータが線a上のプロットbで示される。このIB=0の状態から図中左側に移動すると、インバランス率IBがプラス方向に増加し、燃料噴射量としては過多すなわちリッチな状態となる。逆に、IB=0から図中右側に移動すると、インバランス率IBがマイナス方向に増加し、燃料噴射量としては過少すなわちリーンな状態となる。特性線aから分かるように、アクティブ対象気筒のインバランス率IBが0からプラス方向に増加してもマイナス方向に増加しても、アクティブ対象気筒の回転変動は大きくなり、アクティブ対象気筒の角速度差Δωが0付近からマイナス方向に大きくなる傾向にある。そして、インバランス率IBが0から離れるほど、特性線aの傾きが急になり、インバランス率IBの変化に対する角速度差Δωの変化は大きくなる傾向にある。ここで、矢印cで示すように、アクティブ対象気筒の燃料噴射量を、ストイキ相当量IB=0から所定量、強制的に増量したとする。図示例ではインバランス率で約40相当の増量がなされている。このとき、IB=0の近辺では特性線aの傾きが緩やかであることから、増量後においても角速度差Δωは増量前とほぼ変わらず、増量前後の角速度差Δωの差は極小さい。他方、プロットdで示すように、アクティブ対象気筒において既にリッチずれが生じており、そのインバランス率IBが比較的大きなプラス側の値になっているときを考える。図示例ではインバランス率で約50のリッチずれが生じている。この状態から矢印eで示すように、アクティブ対象気筒の燃料噴射量を同一量、強制的に増量したとすると、この領域では特性線aの傾きが急であることから、増量後の角速度差Δωは増量前より大きくマイナス側に変化し、増量前後の角速度差Δωの差は大きくなる。すなわち燃料噴射量の増量により、アクティブ対象気筒の回転変動は大きくなる。よって、アクティブ対象気筒の燃料噴射量を強制的に所定量増量したときの少なくとも増量後のアクティブ対象気筒の角速度差Δωに基づき、ばらつき異常を検出することが可能である。すなわち、増量後の角速度差Δωが図示するように所定の負の異常判定値αより小さい場合Δω<αには、ばらつき異常有りと判定し、且つアクティブ対象気筒を異常気筒と特定することができる。逆に、増量後の角速度差Δωが異常判定値αより小さくない場合Δω≧αには、少なくともアクティブ対象気筒を正常と判定することができる。あるいは代替的に、図示するように、増量前後の角速度差Δωの差dΔωに基づき、ばらつき異常を検出することも可能である。この場合、増量前の角速度差をΔω1、増量後の角速度差をΔω2とすると、両者の差dΔωをdΔω=Δω1-Δω2と定義することができる。そして差dΔωが所定の正の異常判定値β1を超えた場合dΔω>β1、ばらつき異常有りと判定し、且つアクティブ対象気筒を異常気筒と特定することができる。逆に、差dΔωが異常判定値β1を超えない場合dΔω≦β1、少なくともアクティブ対象気筒を正常と判定することができる。インバランス率が負の領域で強制減量を行ったときも同様のことが言える。矢印fで示すように、アクティブ対象気筒の燃料噴射量をストイキ相当量IB=0から所定量、強制的に減量したとする。図示例ではインバランス率で約10相当の減量がなされている。増量量に比べ減量量が少ないのは、リーンずれ異常気筒に対しあまりに多くの減量を行ってしまうと失火してしまうからである。このとき、特性線aの傾きが比較的緩やかであることから、減量後の角速度差Δωは減量前より若干小さくなっているだけで、増量前後の角速度差Δωの差は小さい。他方、プロットgで示すように、アクティブ対象気筒において既にリーンずれが生じており、そのインバランス率IBが比較的大きなマイナス側の値になっているときを考える。図示例ではインバランス率で約-20のリーンずれが生じている。この状態から矢印hで示すように、アクティブ対象気筒の燃料噴射量を同一量、強制的に減量したとすると、この領域では特性線aの傾きが比較的急であることから、減量後の角速度差Δωは減量前より大きくマイナス側に変化し、減量前後の角速度差Δωの差は大きくなる。すなわち燃料噴射量の減量により、アクティブ対象気筒の回転変動は大きくなる。よって、アクティブ対象気筒の燃料噴射量を強制的に所定量減量したときの少なくとも減量後のアクティブ対象気筒の角速度差Δωに基づき、ばらつき異常を検出することが可能である。すなわち、減量後の角速度差Δωが図示するように所定の負の異常判定値αより小さい場合Δω<αには、ばらつき異常有りと判定し、且つアクティブ対象気筒を異常気筒と特定することができる。逆に、減量後の角速度差Δωが異常判定値αより小さくない場合Δω≧αには、少なくともアクティブ対象気筒を正常と判定することができる。あるいは代替的に、図示するように、減量前後の角速度差Δωの差dΔωに基づき、ばらつき異常を検出することも可能である。この場合も両者の差dΔωをdΔω=Δω1-Δω2と定義することができる。差dΔωが所定の正の異常判定値β2を超えた場合dΔω>β2、ばらつき異常有りと判定し、且つアクティブ対象気筒を異常気筒と特定することができる。逆に、差dΔωが異常判定値β2を超えない場合dΔω≦β2、少なくともアクティブ対象気筒を正常と判定することができる。ここでは増量量が減量量より顕著に多いため、増量時の異常判定値β1を減量時の異常判定値β2より大きくしている。しかしながら、両異常判定値は、特性線aの特性や増量量と減量量のバランス等を考慮して任意に定めることができる。両異常判定値を同じ値とすることも可能である。各気筒の回転変動の指標値として回転時間差ΔTを用いた場合にも、同様の方法で異常検出および異常気筒特定が可能であることが理解されるであろう。また、各気筒の回転変動の指標値としては、上述した以外の他の値を用いることも可能である。燃料噴射量の増量または減量の方法は、全気筒同時に行う方法や、所定数の気筒ずつ順番に且つ交互に行う方法がある。例えば1気筒ずつ増量したり、2気筒ずつ増量したり、4気筒ずつ増量したりする方法がある。増量を行う対象気筒の数および気筒番号は任意に設定できる。対象気筒数が多いほど、検出時間を短縮できるメリットがあり、排気エミッションが悪化するデメリットがある。逆に対象気筒数が少ないほど、排気エミッションの悪化を抑制できるメリットがあるが、検出時間が長期化するデメリットがある。以上が本実施形態におけるばらつき異常検出の概要である。ところで、正常気筒に対し燃料噴射量を減量したとき、回転変動は許容レベル外に至らないものの、振動が許容レベル外に至ることがある。異常検出のための燃料噴射量減量は異常気筒よりも正常気筒に対して行われることの方が圧倒的に多い。このため、燃料噴射量減量を行ったときの振動を許容レベル内に抑えることが重要である。この点を図6を参照して説明する。図6は、図5のうち、インバランス率が負の領域で強制減量を行ったときの様子を示す。図5と同様の部分については同一の符号を付す。前述したように、アクティブ対象気筒の燃料噴射量をストイキ相当量IB=0から矢印fの如く所定量、強制的に減量しても、減量後の角速度差Δωは異常判定値αを超えず、Δω<αとならない。また減量前後の角速度差の差dΔωもβ2を超えず、dΔω>β2とならない。これはすなわち、正常気筒に対して減量を行っても、回転変動の見地からは許容レベル外にならないことを意味する。プロットbはプロットlに変化するが、プロットlは、回転変動の許容レベルの限界値である異常判定値αを超えない。しかし、エンジン単体ひいては車両の振動の見地からすると、回転変動の許容レベルはより厳しくなる。この許容レベルの限界値は図示するγであり、先の異常判定値αよりも正常側にある。γを振動限界という。回転変動が振動限界γ以下である領域、すなわちΔω≧γの領域が振動の許容レベルである。しかし、回転変動が振動限界γを超えると、すなわちΔω<γの領域に至ると、振動は許容レベル外となる。プロットlは振動限界γを超えており、プロットlにおいてΔω<γである。よって振動は許容レベル外となってしまう。このような異常判定値αと振動限界γの相違は次の理由に基づく。異常判定値αが、排気エミッションの観点からOBD規制値等に基づき定められる値であるのに対し、振動限界γは、快適性の観点からエンジンおよび車両の振動騒音要件に基づき定められる値だからである。なお、図5に示すように、インバランス率の正の領域と負の領域を比較すると、特性線aの傾きは負の領域の方が正の領域より大きい。従って負の領域の方が正の領域より、燃料噴射量を一定量変更したときの回転変動悪化度合いが大きく、このことも相俟って、正常気筒を減量したときに振動限界γを超え易い。異常検出のための減量は異常気筒よりも正常気筒に対して行われることの方が圧倒的に多い。なぜなら多くの場合、新品時から長期に亘って全気筒正常であり、経年劣化等によりある1気筒が異常となったときにしか、異常気筒に対し減量が行われないからである。複数の気筒が同時に異常となることは希であり、通常は1気筒ずつ順番に異常となっていく。そして1気筒の異常が検出されれば、インジェクタの交換等必要な修理が行われるので、直ちに元の全気筒正常な状態に戻る。従って減量は再び、正常な全気筒に対し行われる。よって、減量は、所定頻度で行われる検出の度に正常気筒に対して頻繁に行われる。この頻繁に行われる減量の度に実際の振動が振動限界を超えることのないよう、対策を施すことが重要である。そこで、本実施形態ではかかる課題を克服するため、アクティブ対象気筒に対し燃料噴射量を減量する際に、併せて点火時期を進角することとしている。点火時期の進角を行うと、減量時の燃焼が改善され、回転変動の悪化が小さくなる。よって正常気筒に対し減量したときの振動を許容レベル内に抑えることが可能である。この点を図6を参照して説明する。点火時期の進角を行うと、特性線aが、仮想線で示す進角時特性線a’の如く変更され、インバランス率がゼロから小さい負の値までの所定領域における特性線の傾きがより緩やかになる。従って、正常気筒に対し減量したとき、プロットbはプロットl’に変化し、プロットl’は振動限界γを超えない。プロットl’においてΔω≧γであり、振動は許容レベル内に抑えられる。他方、インバランス率がかかる所定領域よりもマイナス側に離れると、進角時特性線a’は、その傾きが基準の特性線aより急となり、基準の特性線aに近づいていき、やがて一致する。異常気筒の減量前のインバランス率プロットgの付近では、進角時特性線a’は基準の特性線aに極近い。これは、異常気筒のように元々の空燃比が大きくリーンずれしている場合には、点火時期進角を行っても燃焼改善効果が殆ど無いことを意味する。従って異常気筒に対し減量且つ点火時期進角を行っても、減量前後の回転変動は点火時期進角を行わない場合とほぼ変わらない。以上の特性を利用し、本実施形態では次のようにばらつき異常検出を実行する。図7に、ばらつき異常検出ルーチンを示す。このルーチンはECU100により所定の演算周期毎に繰り返し実行される。ここでは、ECU100の内部値であるサイクルカウンタ値Ciおよび気筒カウンタ値Cjが用いられる。サイクルカウンタ値Ciの初期値は0、気筒カウンタ値Cjの初期値は1である。jは気筒番号でありj=1,2,,8である。まずステップS101では、異常検出を行うための所定の前提条件が成立したか否かが判断される。例えば、1エンジンが暖機状態にあり、2上流触媒18および下流触媒19が暖機状態にあり、3エンジンが定常運転状態にあり、4ストイキ制御実行中である場合に、前提条件が成立する。条件1の成否は水温センサ24の検出値に基づき判断され、例えば当該検出値が75°C以上だと条件成立となる。条件2の成否は別途検出または推定される上流触媒温度と下流触媒温度に基づき判断される。条件3の成否は、例えば吸入空気量Ga及びエンジン回転速度Neの所定期間内における変動幅が所定範囲内に収まっているか否かによって判断される。なお吸入空気量Gaはエアフローメータ5により検出され、エンジン回転速度Neはクランク角センサ14の出力から計算される。なお前提条件についてはこれ以外の例も可能である。前提条件が成立していない場合には処理が終了され、他方、前提条件が成立している場合にはステップS102に進む。ステップS102では、燃料噴射量減量に際しての燃料減量量ΔQ>0が算出される。この燃料減量量ΔQは、エンジンの運転状態を表すパラメータエンジンパラメータというに応じて変更される。例えば、エンジンパラメータは回転数と負荷からなり、予め定められたマップ関数でもよい。以下同様から、実際に検出された回転数と負荷に応じた燃料減量量ΔQが算出される。燃料減量量ΔQは回転数と負荷に応じて変更される。燃料減量量ΔQは、減量後の燃料噴射量QステップS104を所定の負のインバランス率相当とするような値を有する。次に、ステップS103において、燃料噴射量減量と同時に行われる点火時期進角に際しての点火時期進角量ΔIG>0が算出される。この点火時期進角量ΔIGもエンジンパラメータに応じて変更される。例えば前記同様、エンジンパラメータは回転数と負荷からなり、予め定められたマップから、実際に検出された回転数と負荷に応じた点火時期進角量ΔIGが算出される。点火時期進角量ΔIGは回転数と負荷に応じて変更される。ステップS104では、燃料噴射量減量に際しての減量後の燃料噴射量Qが算出される。この減量後燃料噴射量Qは式:Q=Qb-ΔQから算出される。Qbは基本噴射量であり、運転条件一定の時に筒内の混合気をストイキとするように予め定められた値である。基本噴射量Qbは、実際に検出されたエンジンパラメータ例えば回転数と負荷に基づき、予め定められたマップから算出される。基本噴射量Qbも当然にエンジンパラメータに応じて変更される。なお、本ルーチンの実行中つまりばらつき異常検出の実行中はストイキ制御が停止され、燃料噴射量はオープン制御によりアクティブに制御される。ステップS105では、進角後の点火時期IGが算出される。この進角後点火時期IGは式:IG=IGb-ΔIGから算出される。IGbは基本点火時期であり、運転条件一定の時にほぼMBT最適点火時期となるように予め定められた値である。基本点火時期IGbは、実際に検出されたエンジンパラメータ例えば回転数と負荷に基づき、予め定められたマップから算出される。基本点火時期IGbも当然にエンジンパラメータに応じて変更される。ステップS106では、減量後燃料噴射量Qの燃料が所定の燃料噴射時期において実際にインジェクタ2から噴射される。そしてステップS107では、進角後点火時期IGにおいて点火プラグ13による実際の点火が実行される。ステップS108では、回転変動の指標値たる減量後の角速度差Δωiが検出、記憶される。ステップS109では、サイクルカウンタ値Ciが1だけ増加インクリメントされる。ステップS110では、サイクルカウンタ値Ciが所定値I例えば100以上に達したか否かが判断される。達してなければ終了され、達したならばステップS111に進む。ステップS111では、既に記憶されたI個の角速度差Δωiの平均値が算出され、この平均値がj気筒の角速度差Δωjとして記憶される。ステップS112では、気筒カウンタ値Cjが1だけ増加インクリメントされる。ステップS113では、気筒カウンタ値Cjが、気筒数と同数の値Jここでは8以上に達したか否かが判断される。達してなければ終了され、達したならばステップS114に進む。以上の説明から分かるように、まず1気筒Cj=1に対し、燃料噴射量減量且つ点火時期進角が実行され、このときの角速度差ΔωiがI個取得される。そしてその平均値が1気筒の角速度差Δωjとして記憶される。次いで2気筒Cj=2について同様の処理が実行される。以下順次、3気筒、4気筒についても同様の処理が実行され、最終的に全8気筒の角速度差Δωjが検出、記憶される。ここでは1気筒から気筒番号順に減量したが、減量順序は気筒番号順と同じでなくてもよい。またここでは1気筒ずつ減量したが、複数気筒例えば2気筒または4気筒ずつ減量したり、全気筒同時に減量する方法も可能である。減量を行う対象気筒の数および気筒番号は任意に設定できる。次にステップS114では、各気筒の角速度差Δωjがそれぞれ負の異常判定値αと比較される。全気筒の角速度差Δωjが異常判定値α以上の場合、ステップS115にてばらつき異常無し、すなわち正常と判定され、ルーチンが終了される。他方、何れかの気筒便宜上j気筒とするの角速度差Δωjが異常判定値αより小さい場合、ステップS116においてばらつき異常有り、具体的には当該j気筒にリーンずれ異常ありと判定され、ルーチンが終了される。なお、上記ばらつき異常検出は比較的狭い運転領域例えばアイドル運転領域に限定して行うこともできる。この場合、エンジンパラメータがそのような所定運転領域内にあるという条件がステップS101の前提条件に含まれる。併せて、燃料減量量ΔQおよび点火時期進角量ΔIGを可変とせず、一定値とすることができる。これによってステップS102,S103を省略し簡素化を図ることができる。あるいは、図6に示すように、点火時期進角時に特性線がaからa’のように顕著に変化する運転領域のみで、ばらつき異常検出を行ってもよい。さらに、前記実施形態で述べたような回転変動の代わりに、回転変動の相関値を用いることも可能である。回転変動の相関値の第1例として筒内圧を用いることができる。この場合、各気筒に個別に設けられた筒内圧センサにより、各気筒の筒内圧が検出される。図8において、正常は正常時の筒内圧線図を示し、異常はリーンずれ異常時の筒内圧線図を示す。図示するように、ある1気筒において、空燃比ずれが生じていない正常時の筒内圧線図を基準として、リーンずれが大きくなるほど、燃焼が悪化するため、筒内圧線図は低圧側に移動し、筒内圧の最大ピーク正常時のみPで示すは低下する傾向にある。筒内圧の最大ピークは回転変動に相関し、その最大ピークが小さいほど回転変動は大きい。そこで例えば、アクティブ対象気筒の燃料噴射量を減量し、少なくとも当該減量後のアクティブ対象気筒の筒内圧またはその最大ピークに基づき、空燃比ずれ異常を検出することが可能である。すなわち、筒内圧またはその最大ピークが所定値以上になればアクティブ対象気筒を正常と判定し、筒内圧またはその最大ピークが所定値以上にならなければアクティブ対象気筒を異常と判定する。減量前後の最大ピーク低下量に基づき空燃比ずれ異常を検出することも可能である。あるいは、筒内圧の最大ピークの代わりに、最大ピーク前後の所定期間Δθ内における筒内圧積算値面積を用いることも可能である。筒内圧積算値が所定値以上になればアクティブ対象気筒を正常と判定し、筒内圧積算値が所定値以上にならなければアクティブ対象気筒を異常と判定する。減量前後の筒内圧積算値低下量に基づき空燃比ずれ異常を検出することも可能である。ここで図9に示すように、正常時の筒内圧線図は、燃料噴射量減量時に点火時期進角を行わないと線図bまで低下するが、燃料噴射量減量時に点火時期進角を行うと線図aまでの低下量に止まる。従って本実施形態の如く燃料噴射量減量時に点火時期進角を行うことで、正常気筒の減量時の回転変動悪化を抑制し、減量時の振動を許容レベル内に抑えることが可能である。なお、図9に示すように、異常時の筒内圧線図は、燃料噴射量減量と共に点火時期進角を行っても行わなくてもほぼ変化しない。次に、回転変動の相関値の第2例としてイオン電流を用いることができる。この場合、各気筒に個別に設けられたイオン電流センサにより、各気筒内のイオン電流が検出される。イオン電流は混合気の点火後に燃焼室内に発生するものであり、燃焼状態が良好であるほどその値は大きくなる。図10において、正常は正常時のイオン電流線図を示し、異常はリーンずれ異常時のイオン電流線図を示す。図示するように、ある1気筒において、空燃比ずれが生じていない正常なときのイオン電流線図を基準として、リーンずれが大きくなるほど、燃焼が悪化するため、イオン電流線図は減少側に移動し、イオン電流の最大ピーク正常時のみP’で示すは低下する傾向にある。イオン電流の最大ピークは回転変動に相関し、その最大ピークが小さいほど回転変動は大きい。そこで例えば、アクティブ対象気筒の燃料噴射量を減量し、少なくとも当該減量後のアクティブ対象気筒のイオン電流またはその最大ピークに基づき、空燃比ずれ異常を検出することが可能である。すなわち、イオン電流またはその最大ピークが所定値以上になればアクティブ対象気筒を正常と判定し、イオン電流またはその最大ピークが所定値以上にならなければアクティブ対象気筒を異常と判定する。減量前後の最大ピーク低下量に基づき空燃比ずれ異常を検出することも可能である。あるいは、イオン電流の最大ピークの代わりに、最大ピーク前後の所定期間Δθ内におけるイオン電流積算値面積を用いることも可能である。イオン電流積算値が所定値以上になればアクティブ対象気筒を正常と判定し、イオン電流積算値が所定値以上にならなければアクティブ対象気筒を異常と判定する。減量前後のイオン電流積算値低下量に基づき空燃比ずれ異常を検出することも可能である。ここで図11に示すように、正常時のイオン電流線図は、燃料噴射量減量時に点火時期進角を行わないと線図dまで大きく低下するが、燃料噴射量減量時に点火時期進角を行うと線図cまでの小さな低下量に止まる。従って本実施形態の如く燃料噴射量減量時に点火時期進角を行うことで、正常気筒の減量時の回転変動悪化を抑制し、減量時の振動を許容レベル内に抑えることが可能である。なお、図11に示すように、異常時のイオン電流線図は、燃料噴射量減量と共に点火時期進角を行っても行わなくてもほぼ変化しない。以上、本発明の好適な実施形態を詳細に述べたが、本発明の実施形態は他にも様々なものが考えられる。例えば、増量前の角速度差Δω1と増量後の角速度差Δω2との差dΔωを用いる代わりに、両者の比を用いることができる。この点、減量前後の角速度差の差dΔω、または増量もしくは減量前後の回転時間差ΔTの差についても同様のことが言える。本発明はV型8気筒エンジンに限らず、他の様々な形式および気筒数のエンジンに適用可能である。触媒後センサとして、触媒前センサと同様の広域空燃比センサを用いてもよい。本発明の実施形態は前述の実施形態のみに限らず、特許請求の範囲によって規定される本発明の思想に包含されるあらゆる変形例や応用例、均等物が本発明に含まれる。従って本発明は、限定的に解釈されるべきではなく、本発明の思想の範囲内に帰属する他の任意の技術にも適用することが可能である。"