"多気筒内燃機関の気筒毎に設けられた複数の分岐吸気通路にそれぞれEGRガスを分配供給するための複数の分岐EGR通路を有するEGR装置と、前記内燃機関の点火時期を気筒毎に変更可能な点火時期変更手段と、前記内燃機関のノッキングを検出するノック検出手段と、EGR実行時に、いずれかの気筒の前記分岐EGR通路が閉塞する閉塞異常を検出する異常検出手段と、EGR実行時に、前記閉塞異常が発生した異常気筒を特定する特定手段と、を備え、前記特定手段は、前記点火時期を所定数の気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出された複数のノッキング減少量に基づき、ノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする内燃機関の診断装置。前記特定手段は、前記点火時期を1気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出された全気筒数と同数のノッキング減少量に基づき、ノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする請求項1に記載の内燃機関の診断装置。前記特定手段は、前記点火時期を、全気筒を2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群の中から、ノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする請求項1に記載の内燃機関の診断装置。前記内燃機関は4つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を2気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において1気筒の前記点火時期を遅角し、この遅角前後のノッキング減少量を算出し、算出されたノッキング減少量と所定値との比較結果に応じてノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする請求項3に記載の内燃機関の診断装置。前記内燃機関は6つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を3気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において前記点火時期を1気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量を所定値と比較し、ノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする請求項3に記載の内燃機関の診断装置。前記内燃機関は8つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を4気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において前記点火時期を、4気筒を2気筒ずつの2群に分けたうちの1群のみ遅角し、ノッキング減少量が所定値を超える1群を選択し、この選択された1群において1気筒の前記点火時期を遅角し、この遅角前後のノッキング減少量を算出し、算出されたノッキング減少量と所定値との比較結果に応じてノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする請求項3に記載の内燃機関の診断装置。前記点火時期変更手段は、EGR実行時に全気筒の点火時期をEGR非実行時よりも一律に進角することを特徴とする請求項1~6のいずれか一項に記載の内燃機関の診断装置。吸気圧を検出する吸気圧検出手段をさらに備え、前記異常検出手段は、EGR実行時に前記吸気圧検出手段によって検出された吸気圧が所定の目標吸気圧より所定値以上低下し、且つ前記ノック検出手段によってノッキングが検出されたときに閉塞異常を検出することを特徴とする請求項1~7のいずれか一項に記載の内燃機関の診断装置。閉塞異常が発生した場合、この閉塞異常が起こっている異常気筒を特定するのが好ましい。後の迅速な修理等に資するからである。特許文献1に記載の装置においては、ノックセンサにより気筒毎にノッキングの発生の有無を判断し、ノッキングが発生している気筒を異常気筒と特定している。そして特定された異常気筒に対してのみ点火時期を遅角している段落0028,0052,0053参照。しかし、ノックセンサを用いてもノッキングの発生を気筒単位で検出できないシステムもある。このようなシステムの場合、異常気筒を特定することができない。そこで本発明の目的は、ノッキングの発生を気筒単位で検出できない場合であっても、閉塞異常が起こっている異常気筒を特定することが可能な内燃機関の診断装置を提供することにある。本発明の一の態様によれば、多気筒内燃機関の気筒毎に設けられた複数の分岐吸気通路にそれぞれEGRガスを分配供給するための複数の分岐EGR通路を有するEGR装置と、前記内燃機関の点火時期を気筒毎に変更可能な点火時期変更手段と、前記内燃機関のノッキングを検出するノック検出手段と、EGR実行時に、いずれかの気筒の前記分岐EGR通路が閉塞する閉塞異常を検出する異常検出手段と、EGR実行時に、前記閉塞異常が発生した異常気筒を特定する特定手段と、を備え、前記特定手段は、前記点火時期を所定数の気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出された複数のノッキング減少量に基づき、ノッキング減少量が所定値を超える1気筒を異常気筒と特定することを特徴とする内燃機関の診断装置が提供される。好ましくは、前記特定手段は、前記点火時期を1気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出された全気筒数と同数のノッキング減少量に基づき、ノッキング減少量が所定値を超える1気筒を異常気筒と特定する。好ましくは、前記特定手段は、前記点火時期を、全気筒を2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群の中から、ノッキング減少量が所定値を超える1気筒を異常気筒と特定する。好ましくは、前記内燃機関は4つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を2気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において1気筒の前記点火時期を遅角し、この遅角前後のノッキング減少量を算出し、算出されたノッキング減少量と所定値との比較結果に応じてノッキング減少量が所定値を超える1気筒を異常気筒と特定する。好ましくは、前記内燃機関は6つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を3気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において前記点火時期を1気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量を所定値と比較し、ノッキング減少量が所定値を超える1気筒を異常気筒と特定する。好ましくは、前記内燃機関は8つの気筒を含み、前記特定手段は、前記点火時期を、全気筒を4気筒ずつの2群に分けたうちの1群ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出し、算出されたノッキング減少量が大きい方の1群を選択し、この選択された1群において前記点火時期を、4気筒を2気筒ずつの2群に分けたうちの1群のみ遅角し、ノッキング減少量が所定値を超える1群を選択し、この選択された1群において1気筒の前記点火時期を遅角し、この遅角前後のノッキング減少量を算出し、算出されたノッキング減少量と所定値との比較結果に応じてノッキング減少量が所定値を超える1気筒を異常気筒と特定する。好ましくは、前記点火時期変更手段は、EGR実行時に全気筒の点火時期をEGR非実行時よりも一律に進角する。好ましくは、前記診断装置は、吸気圧を検出する吸気圧検出手段をさらに備え、前記異常検出手段は、EGR実行時に前記吸気圧検出手段によって検出された吸気圧が所定の目標吸気圧より所定値以上低下し、且つ前記ノック検出手段によってノッキングが検出されたときに閉塞異常を検出する。本発明によれば、ノッキングの発生を気筒単位で検出できない場合であっても、閉塞異常が起こっている異常気筒を特定することができるという、優れた効果が発揮される。以下、本発明の実施形態を添付図面に基づき説明する。図1に本実施形態に係る内燃機関を概略的に示す。図示される内燃機関エンジン1は自動車用の直列4気筒火花点火式内燃機関ガソリンエンジンである。エンジン1は1,2,3,4の4つの気筒を含む。ここで述べるエンジンは直列4気筒エンジンであるが、V型4気筒エンジンや水平対向4気筒エンジン等、他の形式であってもよい。各気筒に、燃料を噴射するためのインジェクタ燃料噴射弁2が設けられている。インジェクタ2は、対応気筒の吸気通路特に吸気ポート図示せず内に向けて燃料を噴射する。吸気を導入するための吸気通路7は、前記吸気ポートの他、集合部としてのサージタンク8と、各気筒の吸気ポートおよびサージタンク8を結ぶ複数4つの吸気マニホールド9と、サージタンク8の上流側の吸気管10とを含む。各気筒の吸気マニホールド9および吸気ポートがそれぞれ分岐吸気通路をなす。サージタンク8に集合された吸気は分岐吸気通路を介して各気筒に分配される。吸気管10には、上流側から順にエアフローメータ11と電子制御式スロットルバルブ12と吸気圧センサ25とが設けられている。エアフローメータ11は吸気流量に応じた大きさの信号を出力する。吸気圧センサ25は吸気圧に応じた大きさの信号を出力する。各気筒には、筒内の混合気に点火するための点火プラグ13が設けられる。排気ガスを排出するための排気通路14は、各気筒の排気ポート図示せずと、これら排気ポートの排気ガスを集合させる排気マニホールド16と、排気マニホールド16の下流側に設置された排気管17とを含む。そして排気管17にはそれぞれ三元触媒からなる上流触媒18と下流触媒19が設けられている。上流触媒18の上流側及び下流側直前及び直後にそれぞれ排気ガスの空燃比を検出するための空燃比センサ、即ち触媒前センサ20及び触媒後センサ21が設置されている。これらセンサは排気ガスの酸素濃度に基づいて空燃比を検出する。エンジン1にはEGR装置30が設けられる。EGR装置30は、排気通路17から取り出した排気ガスであるEGRガスを各気筒の分岐吸気通路に分配供給する気筒別EGRを実行するためのものである。EGR装置30は、排気管17と各気筒の吸気マニホールド9を結ぶEGR通路31を有する。EGR通路31は、排気管17から延びるメインEGR通路32と、メインEGR通路32から分岐して各気筒の吸気マニホールド9に接続する複数4つの分岐EGR通路33とを有する。EGRガス流れ方向最上流側に位置する1気筒用分岐EGR通路33の上流側のメインEGR通路32に、EGRガス流量を調節するためのEGRバルブ34が設けられる。なおメインEGR通路32にEGRクーラを設けてもよい。エンジン1には制御手段としての電子制御ユニット以下ECUと称す100が設けられている。ECU100は、何れも図示されないCPU、ROM、RAM、入出力ポート、および記憶装置等を含むものである。ECU100には、前述のエアフローメータ11、吸気圧センサ25、触媒前センサ20、触媒後センサ21のほか、エンジン1のクランク角を検出するクランク角センサ22、エンジン1のノッキングを検出するためのノックセンサ26、アクセル開度を検出するアクセル開度センサ23、エンジン冷却水の温度を検出する水温センサ24、その他の各種センサが図示されないA/D変換器等を介して電気的に接続されている。ECU100は、各種センサの検出値等に基づき、所望の出力が得られるように、インジェクタ2、点火プラグ13、スロットルバルブ12、EGRバルブ34等を制御し、燃料噴射量、燃料噴射時期、点火時期、スロットル開度、EGR率またはEGRガス流量等を制御する。なおスロットル開度は通常アクセル開度に応じた開度に制御される。ECU100は、クランク角センサ22からのクランクパルス信号に基づき、クランク角自体を検出すると共にエンジン1の回転数を検出する。ここで回転数とは単位時間当たりの回転数のことをいい、回転速度と同義である。本実施形態では1分間当たりの回転数rpmのことをいう。またECU100は、エアフローメータ11からの信号に基づき、単位時間当たりの吸入空気の量すなわち吸入空気量を検出する。そしてECU100は、検出した吸入空気量およびアクセル開度の少なくとも一方に基づき、エンジン1の負荷を検出する。触媒前センサ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内で変化する。排気空燃比がストイキよりリーンのとき、触媒後センサの出力電圧はストイキ相当値Vrefrより低くなり、排気空燃比がストイキよりリッチのとき、触媒後センサの出力電圧はストイキ相当値Vrefrより高くなる。上流触媒18及び下流触媒19は、それぞれに流入する排気ガスの空燃比A/Fがストイキ近傍のときに排気中の有害成分であるNOx、HCおよびCOを同時に浄化する。この三者を同時に高効率で浄化できる空燃比の幅ウィンドウは比較的狭い。そこで、上流触媒18に流入する排気ガスの空燃比をストイキ近傍に制御するための空燃比制御ストイキ制御がECU100により実行される。この空燃比制御は、触媒前センサ20によって検出された排気空燃比を所定の目標空燃比であるストイキに一致させるような主空燃比制御主空燃比フィードバック制御と、触媒後センサ21によって検出された排気空燃比をストイキに一致させるような補助空燃比制御補助空燃比フィードバック制御とからなる。またEGR制御がECU100によって実行される。ECU100は、検出した実際のエンジンパラメータ例えば回転数と負荷に基づき、図3に示すようなマップを参照して、EGRの実行可否を判断する。検出した実際のエンジンパラメータがEGR実行領域Iにあるとき、ECU100はEGRを実行すべきと判断し、EGRバルブ34を開弁する。するとEGRガスがメインEGR通路32および分岐EGR通路33を通じて各気筒の吸気マニホールド9に分配供給される。他方、実際のエンジンパラメータがEGR非実行領域IIにあるとき、ECU100はEGRを実行すべきでないと判断し、EGRバルブ34を全閉とする。EGRを実行すべきと判断したとき、ECU100は、エンジンパラメータおよび目標吸気圧の関係を予め定めたマップ図示せずに従い、目標吸気圧を決定する。そしてこの決定した目標吸気圧に、吸気圧センサ25で検出された実際の吸気圧が等しくなるように、EGRバルブ34の開度を制御する。これにより実際のエンジンパラメータの値に適したEGR率ないしEGR流量を実現することができる。他方、点火時期制御がECU100によって実行される。ECU100は、図4に示すように、EGR非実行時には全気筒の点火時期をθ1に制御し、EGR実行時には全気筒の点火時期を、θ1より進角側のθ2に制御する。これによりEGRが非実行無しの状態から実行有りの状態に変化すると、点火時期は全気筒一律にθ1-θ2だけ進角される。ECU100は点火時期を気筒毎に変更可能である。但しここで述べたEGRの有無に応じた進角遅角制御は全気筒一律に行う。なおECU100は、併せて、ノックセンサ26の信号に基づきノック制御を行う。このノック制御は、エンジン個体毎に異なるMBT最大トルク点火時期に実際の点火時期を近づける制御である。さて、このような気筒別EGRを行うエンジン1においては、いずれかの気筒特にいずれか1気筒の分岐EGR通路33において、デポジット等が堆積し、当該通路が閉塞するあるいは詰まることがある。かかる閉塞異常が発生すると、気筒間のEGRガス量がばらつき、これに起因して気筒間の空燃比がばらつき、排気エミッションが悪化する虞がある。すなわち、閉塞異常が発生している異常気筒のEGRガス流量は、他の正常気筒のEGRガス流量より相対的に少なくなる。すると異常気筒においてはEGRガス流量が少なくなった分新気の量が増し、その空燃比が正常気筒の空燃比よりリーンとなる。これにより気筒間の空燃比ばらつきが発生する。この閉塞異常状態をできるだけ早期に解消するため、閉塞異常が発生した場合には、閉塞異常が起こっている異常気筒をできるだけ早期に特定するのが好ましい。後の迅速な修理等に資するからである。ところで本実施形態のエンジン1においては、特許文献1に記載の装置と異なり、ノックセンサ26によってもノッキングの発生を気筒単位で検出することができない。本実施形態のエンジン1においては、ノックセンサ26が設けられているシリンダブロックあるいはこのシリンダブロックに含まれている気筒群単位でしかノッキングの発生を検出できない。本実施形態のような直列4気筒エンジンの場合だと、全気筒単位でしかノッキングの発生を検出できない。そこで本実施形態ではECU100が以下の手順によって異常気筒を特定する。まず概略を述べると、EGR実行時に閉塞異常を検出したときに異常気筒を特定する。そしてこの異常気筒特定に際し、点火時期を所定数の気筒ずつ順番に且つ交互に遅角し、この遅角毎に遅角前後のノッキング減少量を算出する。算出された複数のノッキング減少量に基づき、ノッキング減少量が所定値を超える1気筒を異常気筒と特定する。[第1実施例]以下に異常気筒特定の第1実施例を説明する。図5は第1実施例の異常気筒特定ルーチンを示し、このルーチンはECU100により実行される。ステップS101ではEGR実行中か否かが判断される。EGR実行中でなければ待機状態となり、EGR実行中であればステップS102に進む。ステップS102では、閉塞異常が検出されたか否かが判断される。検出されてなければ待機状態となり、検出されていればステップS103に進む。ここで、閉塞異常の検出はECU100により次の方法で行われる。前述したように、EGR実行中には、点火時期がEGR非実行時よりも進角されると共に、吸気圧センサ25で検出された実際の吸気圧が目標吸気圧に等しくなるようにEGRバルブ34が制御される。しかし、閉塞異常が生じていると、異常気筒において新気割合が増えることからノッキングが発生する。またこの新気割合の増加分、気筒全体での新気量も増え、実際の吸気圧が目標吸気圧よりも低下する。そこで、EGR実行中に吸気圧センサ25で検出された実際の吸気圧が目標吸気圧より所定値以上低下し、且つ、ノックセンサ26によってノッキングが検出されたとき、閉塞異常が検出され、すなわち閉塞異常が発生したと判断される。他方、それ以外の場合には閉塞異常は検出されず、すなわち閉塞異常が発生してないと判断される。次に、ステップS103においては、遅角量Δθが初期値であるAに設定される。この遅角量Δθ=Aは、例えば、図4に示したようなEGRの非実行時と実行時の点火時期の差θ2―θ1よりも小さい値に設定され、例えばその差の半分の値に設定される。次に、ステップS104において、気筒番号nが1に設定されると共に、最大低下量ΔKmax詳しくは後述が、所定の最小の初期値であるΔKminに設定される。次いでステップS105では、遅角前ノック判定値K1nが算出される。ノック判定値Kとは、ノックセンサ26により検出されるノッキングの大きさを表す値である。ノック判定値Kは、例えば次のような値とすることができる。すなわち、1エンジンサイクル=720°CA間のノックセンサ出力信号に対する平均値μと、標準偏差δおよび所定の係数Hの積との和をノック判定値KとすることができるK=μδ×H。ノッキングが発生すると、ノックセンサ出力信号の変動量が大きくなるので、その平均値μおよび標準偏差δばらつきが大きくなる。よって、ノッキングが発生した場合にはノック判定値Kが大きくなり、ノッキングが発生してない場合にはノック判定値Kが小さくなる。ECU100は、少なくとも1エンジンサイクル分のノックセンサ出力信号を取得し、これに対し信号解析を行って、ノック判定値Kを算出する。なお複数エンジンサイクル分のノック判定値の平均値をここでいうノック判定値Kとしてもよい。次に、ステップS106において、n気筒のみの点火時期がΔθだけ遅角される。次いでステップS107において、遅角後ノック判定値K2nが算出される。算出方法は遅角前ノック判定値K1nと同様である。なお遅角後ノック判定値K2nの算出が終了したら、遅角されたn気筒の点火時期が遅角前の点火時期に戻される。ステップS108ではノック判定値低下量ΔKnが式:ΔKn=K1n-K2nから算出される。このノック判定値低下量ΔKnは、n気筒の点火時期遅角前後のノッキング減少量に相当する。もし仮にノッキングが発生している異常気筒において点火遅角を実行し、その結果異常気筒のノッキングが抑制された場合、遅角後ノック判定値K2は遅角前ノック判定値K1よりも減少し、ノック判定値低下量ΔKはゼロより大きい値となる。逆に、ノッキングが発生してない正常気筒において点火遅角を実行した場合、異常気筒のノッキングは相変わらず抑制されないので、遅角後ノック判定値K2は遅角前ノック判定値K1とほぼ同等の値となり、ノック判定値低下量ΔKはほぼゼロとなる。よって点火遅角を行った1気筒のノック判定値低下量が正の所定値を超えた場合、当該1気筒を異常気筒と特定することができる。同一のエンジンにおいて点火遅角前後のノック判定値の差をノック判定値低下量として算出するため、機差ばらつきの影響を低減し、精度良く異常気筒を特定することが可能である。ステップS109では、ステップS108で算出されたノック判定値低下量ΔKnが最大低下量ΔKmaxより大きいか否かが判断される。ノック判定値低下量ΔKnが最大低下量ΔKmaxより大きい場合、ステップS110で最大低下量ΔKmaxが更新される。すなわち、ノック判定値低下量ΔKnが既存の値と置き換えられて新たな最大低下量ΔKmaxに設定される。またこのステップS110で、最大値対応気筒番号iも更新される。すなわち、当該ノック判定値低下量ΔKnに対応する気筒番号nが既存の値と置き換えられて新たな最大値対応気筒番号iに設定される。ここで分かるように、最大低下量ΔKmaxは、既に算出済みの1ないし複数のノック判定値低下量ΔKnのうちの最大値を表す値である。次いでステップS111では、気筒番号nが、エンジンの気筒数であるNここでは4に等しいか否かが判断される。気筒番号nが気筒数Nに等しくない場合、すなわちn<Nの場合、ステップS114に進んで気筒番号が1つ増加され、ステップS105~S111が繰り返し実行される。こうして、点火時期は1気筒から4気筒まで1気筒ずつ順番に且つ交互に遅角され、この遅角毎に、遅角前後のノッキング減少量に対応するノック判定値低下量ΔKnが算出される。そしてノック判定値低下量ΔKnが最大低下量ΔKmaxを超える度に、最大低下量ΔKmaxと最大値対応気筒番号iが更新される。算出された気筒数Nと同数のノック判定値低下量ΔKnの中から、最大値である最大低下量ΔKmaxが設定され、且つこの最大値に対応する最大値対応気筒番号iが設定される。他方、ステップS111で気筒番号nが気筒数Nに等しい場合、ステップS112に進んで、最大低下量ΔKmaxが所定値αより大きいか否かが判断される。最大低下量ΔKmaxが所定値αより大きい場合、ステップS113に進み、最大値対応気筒番号iに対応するi気筒が異常気筒と特定される。すなわちこの場合にはi気筒の点火遅角前後のノッキング減少量が所定値を超えた場合に該当するので、当該i気筒1気筒が異常気筒として特定される。他方、最大低下量ΔKmaxが所定値α以下の場合、最大低下量ΔKmaxは得られているものの、点火遅角によってノッキングが十分に抑制されていないと考えられる。この理由として一つに遅角量不足が考えられるので、最大低下量ΔKmaxが所定値α以下の場合にはまず遅角量を増やす処理が行われる。すなわち、ステップS115において、遅角量Δθが所定の最大遅角量Cより大きいか否かが判断される。最大遅角量Cは遅角量の上限を定める値である。遅角量Δθが最大遅角量C以下の場合、ステップS117に進んで、現在の遅角量Δθに所定遅角量Bを加えた値が新たな遅角量Δθに設定される。これにより遅角量Δθは増加される。所定遅角量Bは比較的小さな値である。この後、ステップS104~S111が繰り返し実行される。そしてステップS112において最大低下量ΔKmaxが所定値αより大きいか否かが判断される。最大低下量ΔKmaxが所定値αより大きければステップS113でi気筒が異常気筒と特定されるが、最大低下量ΔKmaxが所定値α以下であれば再度、ステップS115で遅角量Δθが最大遅角量Cより大きいか否かが判断され、遅角量Δθが最大遅角量C以下の場合、ステップS117で遅角量Δθがさらに所定遅角量Bだけ増加される。こうして、遅角量Δθが最大遅角量Cを超えるまで、遅角量Δθが所定遅角量Bずつ徐々に増加され、この増加毎に最大低下量ΔKmaxと所定値αとの比較がなされる。遅角量Δθが最大遅角量Cを超えた場合、ステップS115からステップS116に進んで、全気筒が異常気筒と特定される。すなわち、最大遅角量C付近の十分大きい点火遅角を行っても所定値αを超える最大低下量ΔKmaxが得られない場合、1気筒用分岐EGR通路33の上流側のメインEGR通路32EGRバルブ34を含むで閉塞が発生し、全気筒でノッキングが発生している可能性が高い。よってこの場合には全気筒を異常気筒と特定し、気筒別分岐EGR通路33の閉塞異常と区別して特定する。これにより診断機能を高めることが可能である。ところで、この第1実施例の場合だと、点火遅角が1気筒ずつ順番に且つ交互に行われ、合計で全気筒数と同数の4回行われる。これだと異常気筒特定に要する時間すなわち特定時間が長くなってしまう。異常気筒特定中ないしはフローチャート実行中のエンジン運転条件はほぼ同じであるのが好ましいが、特定時間が長くなると特定中にエンジン運転条件が変わる可能性が高くなり、この結果、特定精度が低下する虞がある。また特定中に前提条件EGR実行中等を満たさなくなって特定が途中で中止される可能性も高くなり、診断頻度が減少する虞もある。そこで特定時間の短縮、具体的には点火遅角回数の減少を図るため、以下に述べる実施例では複数の気筒ずつ点火遅角を実行する。そして徐々に異常気筒を絞っていき、最終的に異常な1気筒を特定する。具体的には、全気筒を2群に分け、点火時期を1群ずつ順番に且つ交互に遅角し、この遅角毎にノック判定値低下量を算出し、算出されたノック判定値低下量が大きい方の1群を選択する。そしてこの選択された1群の中から、ノック判定値低下量が所定値を超える1気筒を異常気筒と特定する。[第2実施例]図6および図7は第2実施例の異常気筒特定ルーチンを示し、このルーチンはECU100により実行される。この第2実施例においては、全4気筒を2気筒ずつの2群に分け、点火時期を1群ずつ順番に且つ交互に遅角する。この遅角毎にノック判定値低下量を算出し、算出されたノック判定値低下量が大きい方の1群を選択する。選択された1群において、1気筒の点火時期を遅角し、この遅角時のノック判定値低下量を算出し、算出されたノック判定値低下量と所定値との比較結果に応じて、ノック判定値低下量が所定値を超える1気筒を異常気筒と特定する。ステップS201,S202は前記ステップS101,S102と同様である。ステップS202で閉塞異常が検出された場合、ステップS203~S206において、第1群としての1,2気筒の点火遅角を実行したときのノック判定値低下量ΔK1,2が算出される。すなわち、ステップS203では、遅角前ノック判定値K11,2が算出される。そしてステップS204において、1,2気筒のみの点火時期がΔθだけ遅角される。3,4気筒の点火時期は遅角されない。遅角量Δθは、例えばEGR非実行状態からEGR実行状態に変化したときの進角量図4のθ1-θ2と等しくすることができる。次いでステップS205において、遅角後ノック判定値K21,2が算出される。遅角後ノック判定値K21,2の算出が終了したら、遅角された1,2気筒の点火時期が遅角前の点火時期に戻される。ステップS206ではノック判定値低下量ΔK1,2が式:ΔK1,2=K11,2-K21,2から算出される。次いで、ステップS207~S210において、第2群としての3,4気筒の点火遅角を実行したときのノック判定値低下量ΔK3,4が算出される。すなわち、ステップS207では、遅角前ノック判定値K13,4が算出される。そしてステップS208において、3,4気筒のみの点火時期がΔθだけ遅角される。1,2気筒の点火時期は遅角されない。次いでステップS209において、遅角後ノック判定値K23,4が算出される。遅角後ノック判定値K23,4の算出が終了したら、遅角された3,4気筒の点火時期が遅角前の点火時期に戻される。ステップS210ではノック判定値低下量ΔK3,4が式:ΔK3,4=K13,4-K23,4から算出される。次いで、ステップS211において、1,2気筒遅角時のノック判定値低下量ΔK1,2が3,4気筒遅角時のノック判定値低下量ΔK3,4と比較される。ΔK1,2>ΔK3,4の場合、第1群としての1,2気筒が選択され、ステップS212に進む。またΔK1,2≦ΔK3,4の場合、第2群としての3,4気筒が選択され、ステップS219に進む。前者の場合、第1群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、1気筒と2気筒のいずれかが異常気筒である可能性が高い。また後者の場合、第2群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、3気筒と4気筒のいずれかが異常気筒である可能性が高い。よってこのような気筒群毎の選択、絞り込みあるいはふるい分けを行うことにより、1気筒ずつ点火遅角を実行する場合に比べ特定時間を短縮することが出来る。ステップS212~S215においては、1気筒の点火遅角を実行したときのノック判定値低下量ΔK1が算出される。すなわち、ステップS212では遅角前ノック判定値K11が算出される。そしてステップS213において1気筒のみの点火時期がΔθだけ遅角される。ステップS214において遅角後ノック判定値K21が算出される。この算出終了後1気筒の点火時期が遅角前の点火時期に戻される。ステップS215ではノック判定値低下量ΔK1が式:ΔK1=K11-K21から算出される。次いでステップS216において、ノック判定値低下量ΔK1が所定値αより大きいか否かが判断される。所定値αは、ステップS206で算出されたノック判定値低下量ΔK1,2より僅かに小さい値ばらつきに対する余裕分を差し引いた値とすることができる。ノック判定値低下量ΔK1が所定値αより大きい場合、ステップS217において1気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK1が所定値α以下の場合、ステップS218において2気筒が異常気筒と特定される。ステップS219~S225においても、第2群に対し同様の処理が行われる。まずステップS219で、3気筒に対する遅角前ノック判定値K13が算出される。そしてステップS220において3気筒のみの点火時期がΔθだけ遅角される。ステップS221において遅角後ノック判定値K23が算出される。この算出終了後3気筒の点火時期が遅角前の点火時期に戻される。ステップS222ではノック判定値低下量ΔK3が式:ΔK3=K13-K23から算出される。次いでステップS223において、ノック判定値低下量ΔK3が所定値αと比較される。所定値αは、ステップS210で算出されたノック判定値低下量ΔK3,4より僅かに小さい値とすることができる。ノック判定値低下量ΔK3が所定値αより大きい場合、ステップS224において3気筒が異常気筒と特定され、ノック判定値低下量ΔK3が所定値α以下の場合、ステップS225において4気筒が異常気筒と特定される。この第2実施例の場合、合計で3回の点火遅角で済むため、第1実施例の場合4回より点火遅角回数を少なくすることができ、特定時間を短縮することが出来る。[第3実施例]次に第3実施例を説明する。この第3実施例は6つの気筒を含む6気筒エンジンに適用される。図8に第3実施例に係るエンジンを示す。ここで述べるエンジンはV型6気筒エンジンであるが、直列6気筒エンジンや水平対向6気筒エンジン等、他の形式であってもよい。以下、図1に示した直列4気筒エンジンとの相違点を中心に説明し、同一の構成要素には図中同一符号を付し説明を省略する。図8に示すように、エンジン101は第1のバンクB1と第2のバンクB2とを有し、第1のバンクB1には奇数番気筒すなわち1,3,5気筒が設けられ、第2のバンクB2には偶数番気筒すなわち2,4,6気筒が設けられている。吸気系は両バンク共通であり、排気系とEGR系は各バンク毎に独立している。吸気系に関しては、バンク間に配置されたサージタンク8から、各気筒に対する複数の吸気マニホールド9がそれぞれ延出している。第1のバンクB1に対して第1の排気通路14Aが設けられ、第2のバンクB2に対して第2の排気通路14Bが設けられる。これら第1および第2の排気通路14A,14Bは下流触媒19の上流側で合流している。この合流位置より上流側の排気系の構成は両バンクで同一なので、ここでは第1のバンクB1側についてのみ説明し、第2のバンクB2側については図中同一符号を付して説明を省略する。第1の排気通路14Aは、1,3,5の各気筒の排気ポート図示せずと、これら排気ポートの排気ガスを集合させる排気マニホールド16と、排気マニホールド16の下流側に設置された排気管17とを含む。そして排気管17には上流触媒18が設けられている。上流触媒18の上流側及び下流側直前及び直後にそれぞれ触媒前センサ20及び触媒後センサ21が設置されている。このように、一方のバンクに属する複数の気筒あるいは気筒群に対して、上流触媒18、触媒前センサ20及び触媒後センサ21が各一つずつ設けられている。なお、第1および第2の排気通路14A,14Bを合流させないで、これらに個別に下流触媒19を設けることも可能である。EGR装置30も各バンクに対して一つずつ、計2つあり、例えば第1のバンクB1側については、第1の排気通路14Aをなす排気管17からEGR通路31が延びている。EGR通路31は、メインEGR通路32から分岐して1,3,5の各気筒の吸気マニホールド9に接続する複数3つの分岐EGR通路33を有する。第2のバンクB2側についても同様の構成がなされているので、結局、各バンク毎に独立した計2つのメインEGR通路32から、それぞれ、1,3,5気筒に接続する3つの分岐EGR通路33と、2,4,6気筒に接続する3つの分岐EGR通路33とが延びていることとなる。各バンクにそれぞれノックセンサ26が設けられる。このエンジン101においては、ノックセンサ26が設けられているシリンダブロックあるいはこのシリンダブロックに含まれている気筒群単位でしか、つまりバンク単位でしか、ノッキングの発生を検出できない。図示例の場合、第1のバンクB1のノックセンサ26は、第1のバンクB1の1,3,5気筒のいずれかで発生したノッキングしか検出できず、第2のバンクB2のノックセンサ26は、第2のバンクB2の2,4,6気筒のいずれかで発生したノッキングしか検出できない。気筒単位でノッキングを検出することはできない。図9~図11は第3実施例の異常気筒特定ルーチンを示し、このルーチンはECU100により実行される。この第3実施例の異常気筒特定ルーチンは、図6,7に示した4気筒エンジンの異常気筒特定ルーチンに類似する。この第3実施例においては、全6気筒を3気筒ずつの2群に分け、点火時期を1群ずつ順番に且つ交互に遅角する。この遅角毎にノック判定値低下量を算出し、算出されたノック判定値低下量が大きい方の1群を選択する。選択された1群において、点火時期を1気筒ずつ順番に且つ交互に遅角し、この遅角毎にノック判定値低下量を算出し、算出されたノック判定値低下量を所定値と比較し、ノック判定値低下量が所定値を超える1気筒を異常気筒と特定する。ステップS301,S302は前記ステップS101,S102と同様である。ステップS302で閉塞異常が検出された場合、ステップS303~S306において、第1群としての1,2,3気筒の点火遅角を実行したときのノック判定値低下量ΔK1,2,3が算出される。すなわち、ステップS303では、遅角前ノック判定値K11,2,3が算出される。そしてステップS304において、1,2,3気筒のみの点火時期がΔθだけ遅角される。4,5,6気筒の点火時期は遅角されない。遅角量Δθは、例えばEGR非実行状態からEGR実行状態に変化したときの進角量図4のθ1-θ2と等しくすることができる。次いでステップS305において、遅角後ノック判定値K21,2,3が算出される。遅角後ノック判定値K21,2,3の算出が終了したら、遅角された1,2,3気筒の点火時期が遅角前の点火時期に戻される。ステップS306ではノック判定値低下量ΔK1,2,3が式:ΔK1,2,3=K11,2,3-K21,2,3から算出される。このように、ノック判定値低下量ΔK1,2,3の算出方法は第2実施例のノック判定値低下量ΔK1,2の算出方法と同様である。次いで、ステップS307~S310において、第2群としての4,5,6気筒の点火遅角を実行したときのノック判定値低下量ΔK4,5,6が、ノック判定値低下量ΔK1,2,3と同様の方法で算出される。この算出を終えたら、次に、ステップS311において、1,2,3気筒遅角時のノック判定値低下量ΔK1,2,3が4,5,6気筒遅角時のノック判定値低下量ΔK4,5,6と比較される。ΔK1,2,3>ΔK4,5,6の場合、第1群としての1,2,3気筒が選択され、ステップS312に進む。またΔK1,2,3≦ΔK4,5,6の場合、第2群としての4,5,6気筒が選択され、ステップS325に進む。前者の場合、第1群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、1~3気筒のいずれかが異常気筒である可能性が高い。また後者の場合、第2群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、4~6気筒のいずれかが異常気筒である可能性が高い。よってこのような気筒群毎の選択、絞り込みあるいはふるい分けを行うことにより、1気筒ずつ点火遅角を実行する場合に比べ特定時間を短縮することが出来る。ステップS312~S315においては、1気筒の点火遅角を実行したときのノック判定値低下量ΔK1が算出される。その方法は第2実施例のS212~S215と同じである。次いでステップS316において、ノック判定値低下量ΔK1が所定値αより大きいか否かが判断される。所定値αは、ステップS306で算出されたノック判定値低下量ΔK1,2,3より僅かに小さい値とすることができる。ノック判定値低下量ΔK1が所定値αより大きい場合、ステップS317において1気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK1が所定値α以下の場合、ステップS318に進む。ステップS318~S321においては、2気筒の点火遅角を実行したときのノック判定値低下量ΔK2が算出される。その方法は1気筒に対するS312~S315と同じである。次いでステップS322において、ノック判定値低下量ΔK2が所定値αより大きいか否かが判断される。所定値αは、ステップS306で算出されたノック判定値低下量ΔK1,2,3より僅かに小さい値とすることができる。ノック判定値低下量ΔK2が所定値αより大きい場合、ステップS323において2気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK2が所定値α以下の場合、ステップS324において3気筒が異常気筒と特定される。他方、ステップS311で第2群としての4,5,6気筒が選択された場合、ステップS325~S337において、第2群に対し同様の処理が行われる。ステップS325~S328においては、4気筒の点火遅角を実行したときのノック判定値低下量ΔK4が算出される。その方法は1気筒に対するS312~S315と同じである。次いでステップS329において、ノック判定値低下量ΔK4が所定値αより大きいか否かが判断される。所定値αは、ステップS310で算出されたノック判定値低下量ΔK4,5,6より僅かに小さい値とすることができる。ノック判定値低下量ΔK4が所定値αより大きい場合、ステップS330において4気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK4が所定値α以下の場合、ステップS331に進む。ステップS331~S334においては、5気筒の点火遅角を実行したときのノック判定値低下量ΔK5が算出される。その方法は1気筒に対するS312~S315と同じである。次いでステップS335において、ノック判定値低下量ΔK5が所定値αより大きいか否かが判断される。所定値αは、ステップS310で算出されたノック判定値低下量ΔK4,5,6より僅かに小さい値とすることができる。ノック判定値低下量ΔK5が所定値αより大きい場合、ステップS336において5気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK5が所定値α以下の場合、ステップS337において6気筒が異常気筒と特定される。6気筒エンジンの場合、1気筒ずつ点火遅角を行うと合計で6回の点火遅角が必要である。しかしこの第3実施例の場合、最大で4回、最小で3回の点火遅角で済むため、1気筒ずつ点火遅角を行う場合に比べて点火遅角回数を大幅に少なくすることができ、特定時間を短縮することが出来る。なお第3実施例の理論上の平均遅角回数は3.67回である21/3×12/3×2=11/3=3.67。[第4実施例]次に第4実施例を説明する。この第4実施例は8つの気筒を含む8気筒エンジンに適用される。図12に第4実施例に係るエンジンを示す。ここで述べるエンジンはV型8気筒エンジンであるが、直列8気筒エンジンや水平対向8気筒エンジン等、他の形式であってもよい。以下、図8に示したV型6気筒エンジンとの相違点を中心に説明し、同一の構成要素には図中同一符号を付し説明を省略する。図12に示すように、エンジン102は第1のバンクB1と第2のバンクB2とを有し、第1のバンクB1には奇数番気筒すなわち1,3,5,7気筒が設けられ、第2のバンクB2には偶数番気筒すなわち2,4,6,8気筒が設けられている。つまり各バンクに1気筒ずつ追加されている点が図8に示したV型6気筒エンジンとの主な相違点である。V型6気筒エンジンと同様、吸気系は両バンク共通であり、排気系とEGR系は各バンク毎に独立している。第1のバンクB1に対して第1の排気通路14Aが設けられ、第2のバンクB2に対して第2の排気通路14Bが設けられる。これら第1および第2の排気通路14A,14Bは下流触媒19の上流側で合流している。この合流位置より上流側の排気系の構成は両バンクで同一である。EGR装置30に関し、例えば第1のバンクB1側については、第1の排気通路14Aをなす排気管17からEGR通路31が延びている。EGR通路31は、メインEGR通路32から分岐して1,3,5,7の各気筒の吸気マニホールド9に接続する複数4つの分岐EGR通路33を有する。第2のバンクB2側についても同様の構成がなされているので、結局、バンク毎に独立した計2つのメインEGR通路32から、それぞれ、1,3,5,7気筒に接続する4つの分岐EGR通路33と、2,4,6,8気筒に接続する4つの分岐EGR通路33とが延びていることとなる。第1のバンクB1のノックセンサ26は、第1のバンクB1の1,3,5,7気筒のいずれかで発生したノッキングしか検出できず、第2のバンクB2のノックセンサ26は、第2のバンクB2の2,4,6,8気筒のいずれかで発生したノッキングしか検出できない。気筒単位でノッキングを検出することはできない。図13~図15は第4実施例の異常気筒特定ルーチンを示し、このルーチンはECU100により実行される。この第4実施例の異常気筒特定ルーチンは、図9~11に示した6気筒エンジンの異常気筒特定ルーチンに類似する。この第4実施例においては、全8気筒を4気筒ずつの2群に分け、点火時期を1群ずつ順番に且つ交互に遅角する。この遅角毎にノック判定値低下量を算出し、算出されたノック判定値低下量が大きい方の1群を選択する。選択された1群において、4気筒を2気筒ずつの2群に分け、点火時期を1群のみ遅角し、ノック判定値低下量が所定値を超える1群を選択する。選択された1群において、1気筒の点火時期を遅角し、ノック判定値低下量を算出し、算出されたノック判定値低下量と所定値との比較結果に応じてノック判定値低下量が所定値を超える1気筒を異常気筒と特定する。ステップS401,S402は前記ステップS101,S102と同様である。ステップS402で閉塞異常が検出された場合、ステップS403~S406において、第1群としての1,2,3,4気筒の点火遅角を実行したときのノック判定値低下量ΔK1,2,3,4が算出される。すなわち、ステップS403では、遅角前ノック判定値K11,2,3,4が算出される。そしてステップS404において、1,2,3,4気筒のみの点火時期がΔθだけ遅角される。5,6,7,8気筒の点火時期は遅角されない。遅角量Δθは、例えばEGR非実行状態からEGR実行状態に変化したときの進角量図4のθ1-θ2と等しくすることができる。次いでステップS405において、遅角後ノック判定値K21,2,3,4が算出される。遅角後ノック判定値K21,2,3,4の算出が終了したら、遅角された1,2,3,4気筒の点火時期が遅角前の点火時期に戻される。ステップS406ではノック判定値低下量ΔK1,2,3,4が式:ΔK1,2,3,4=K11,2,3,4-K21,2,3,4から算出される。このように、ノック判定値低下量ΔK1,2,3,4の算出方法は第3実施例のノック判定値低下量ΔK1,2,3の算出方法と同様である。次いで、ステップS407~S410において、第2群としての5,6,7,8気筒の点火遅角を実行したときのノック判定値低下量ΔK5,6,7,8が、ノック判定値低下量ΔK1,2,3,4と同様の方法で算出される。この算出を終えたら、次に、ステップS411において、1,2,3,4気筒遅角時のノック判定値低下量ΔK1,2,3,4が5,6,7,8気筒遅角時のノック判定値低下量ΔK5,6,7,8と比較される。ΔK1,2,3,4>ΔK5,6,7,8の場合、第1群としての1,2,3,4気筒が選択され、ステップS412に進む。またΔK1,2,3,4≦ΔK5,6,7,8の場合、第2群としての5,6,7,8気筒が選択され、ステップS431に進む。前者の場合、第1群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、1~4気筒のいずれかが異常気筒である可能性が高い。また後者の場合、第2群にノック判定値低下量の大なる異常気筒が含まれている可能性が高く、5~8気筒のいずれかが異常気筒である可能性が高い。よってこのような気筒群毎の選択、絞り込みあるいはふるい分けを行うことにより、1気筒ずつ点火遅角を実行する場合に比べ特定時間を短縮することが出来る。このように第1群と第2群のいずれかが選択されたら、次に、選択された1群がさらに2気筒ずつの2群に分けられる。第1群が選択された場合、第1群は1,2気筒を含む第3群と、3,4気筒を含む第4群とに分けられる。ステップS412~S415においては、第3群すなわち1,2気筒の点火遅角を実行したときのノック判定値低下量ΔK1,2が算出される。次いでステップS416において、ノック判定値低下量ΔK1,2が所定値αより大きいか否かが判断される。所定値αは、ステップS406で算出されたノック判定値低下量ΔK1,2,3,4より僅かに小さい値とすることができる。ノック判定値低下量ΔK1,2が所定値αより大きい場合、第3群に異常気筒が含まれている可能性が高いため、第3群の1気筒、ここでは1気筒に対し、点火遅角を実行する。すなわち、ステップS417~S420においては、1気筒の点火遅角を実行したときのノック判定値低下量ΔK1が算出される。次いでステップS421において、ノック判定値低下量ΔK1が所定値αより大きいか否かが判断される。所定値αは、ステップS406で算出されたノック判定値低下量ΔK1,2,3,4より僅かに小さい値とすることができる。ノック判定値低下量ΔK1が所定値αより大きい場合、ステップS422において1気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK1が所定値α以下の場合、ステップS423において2気筒が異常気筒と特定される。他方、ステップS416においてノック判定値低下量ΔK1,2が所定値α以下の場合、第4群に異常気筒が含まれている可能性が高いため、第4群の1気筒、ここでは3気筒に対し、点火遅角を実行する。すなわち、ステップS424~S427においては、3気筒の点火遅角を実行したときのノック判定値低下量ΔK3が算出される。次いでステップS428において、ノック判定値低下量ΔK3が所定値αより大きいか否かが判断される。所定値αは、ステップS406で算出されたノック判定値低下量ΔK1,2,3,4より僅かに小さい値とすることができる。ノック判定値低下量ΔK3が所定値αより大きい場合、ステップS429において3気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK3が所定値α以下の場合、ステップS430において4気筒が異常気筒と特定される。次に、ステップS411において第2群としての5,6,7,8気筒が選択された場合、ステップS431以降で、第1群のときと同様の処理が行われる。第2群が選択された場合、第2群は5,6気筒を含む第5群と、7,8気筒を含む第6群とに分けられる。ステップS431~S434においては、第5群すなわち5,6気筒の点火遅角を実行したときのノック判定値低下量ΔK5,6が算出される。次いでステップS435において、ノック判定値低下量ΔK5,6が所定値αより大きいか否かが判断される。所定値αは、ステップS410で算出されたノック判定値低下量ΔK5,6,7,8より僅かに小さい値とすることができる。ノック判定値低下量ΔK5,6が所定値αより大きい場合、第5群に異常気筒が含まれている可能性が高いため、第5群の1気筒、ここでは5気筒に対し、点火遅角を実行する。すなわち、ステップS436~S439においては、5気筒の点火遅角を実行したときのノック判定値低下量ΔK5が算出される。次いでステップS440において、ノック判定値低下量ΔK5が所定値αより大きいか否かが判断される。所定値αは、ステップS410で算出されたノック判定値低下量ΔK5,6,7,8より僅かに小さい値とすることができる。ノック判定値低下量ΔK5が所定値αより大きい場合、ステップS441において5気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK5が所定値α以下の場合、ステップS442において6気筒が異常気筒と特定される。他方、ステップS435においてノック判定値低下量ΔK5,6が所定値α以下の場合、第6群に異常気筒が含まれている可能性が高いため、第6群の1気筒、ここでは7気筒に対し、点火遅角を実行する。すなわち、ステップS443~S446においては、7気筒の点火遅角を実行したときのノック判定値低下量ΔK7が算出される。次いでステップS447において、ノック判定値低下量ΔK7が所定値αより大きいか否かが判断される。所定値αは、ステップS410で算出されたノック判定値低下量ΔK5,6,7,8より僅かに小さい値とすることができる。ノック判定値低下量ΔK7が所定値αより大きい場合、ステップS448において7気筒が異常気筒と特定される。他方、ノック判定値低下量ΔK7が所定値α以下の場合、ステップS449において8気筒が異常気筒と特定される。8気筒エンジンの場合、1気筒ずつ点火遅角を行うと合計で8回の点火遅角が必要である。しかしこの第4実施例の場合、4回の点火遅角で済むため、1気筒ずつ点火遅角を行う場合に比べて点火遅角回数を大幅に少なくすることができ、特定時間を短縮することが出来る。以上、本発明の好適な実施形態を詳細に述べたが、本発明の実施形態は他にも様々なものが考えられる。例えば1群に含まれる気筒の番号は任意であり、例えば第2実施例において1,3気筒により第1群を構成し、2,4気筒により第2群を構成してもよい。V型エンジンにおいてバンク毎に気筒群を分けてもよく、例えば第3実施例において1,3,5気筒により第1群を構成し、2,4,6気筒により第2群を構成してもよい。前記第2~第4実施例では全気筒数を等しく2分割して2群に分けたが、必ずしもそうする必要はない。例えば第2実施例において、所定の1気筒のみにより第1群を構成し、他の3気筒により第2群を構成してもよい。このように1群は1気筒のみからなってもよい。また例えば第3実施例において、所定の2気筒により第1群を構成し、残りの4気筒により第2群を構成してもよい。上記の各数値は例示であり適宜変更可能である。上記各実施例の各特徴は可能な限りにおいて組み合わせ、置換及び省略が可能である。例えば第2~4実施例に、第1実施例で述べたような遅角量を徐々に増加する制御や、全気筒を異常気筒と特定する処理を組み合わせても良い。本発明の実施形態は前述の実施形態のみに限らず、特許請求の範囲によって規定される本発明の思想に包含されるあらゆる変形例や応用例、均等物が本発明に含まれる。従って本発明は、限定的に解釈されるべきではなく、本発明の思想の範囲内に帰属する他の任意の技術にも適用することが可能である。"