(57)【要約】【課題】燃料噴射量の算出から遅れたタイミングで点火時期を算出する場合でも、トルク制御の安定性を優先するモードでは、安定したトルク制御を行うことができるようにする。【解決手段】トルク制御の応答性を優先するレスポンスモードでは、燃料噴射量算出タイミングで最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングで最新の指示トルクに基づいて点火時期を算出することでトルク制御の応答性を向上させる。一方、トルク制御の安定性を優先するスタビリティモードでは、燃料噴射量算出タイミングで最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングで過去の指示トルク（例えば直前の燃料噴射量算出タイミングにおける指示トルク）に基づいて点火時期を算出することでトルク制御の安定性を向上させる。【選択図】　図４
2004003397.tif 000002
【特許請求の範囲】
【請求項１】
所定の指示トルク算出タイミング毎に指示トルクを算出する指示トルク算出手段と、
所定の燃料噴射量算出タイミング毎に前記指示トルクに基づいて燃料噴射量を算出する燃料噴射量算出手段と、
前記燃料噴射量算出タイミングよりも遅れた所定の点火時期算出タイミング毎に前記指示トルクに基づいて点火時期を算出する点火時期算出手段とを備え、
前記点火時期算出手段は、トルク制御の安定性を優先するスタビリティモード運転中に点火時期を算出する際に、その点火時期算出タイミングにおける指示トルクよりも前に算出された過去の指示トルクに基づいて点火時期を算出することを特徴とする内燃機関のトルク制御装置。
【請求項２】
前記点火時期算出手段は、前記スタビリティモード運転中に点火時期を算出する際に、前記過去の指示トルクとして直前の燃料噴射量算出タイミングにおける指示トルクを用いることを特徴とする請求項１に記載の内燃機関のトルク制御装置。
【請求項３】
内燃機関の将来の回転速度を予測する将来回転速度予測手段を備え、
前記指示トルク算出手段は、前記スタビリティモード運転中に前記将来回転速度予測手段で予測した将来回転速度に基づいて指示トルクを算出することを特徴とする請求項１又は２に記載の内燃機関のトルク制御装置。
【請求項４】
内燃機関の回転速度を検出する回転速度検出手段と、
内燃機関の吸入空気量に基づいて軸トルクを算出する軸トルク算出手段とを備え、
前記将来回転速度予測手段は、前記回転速度検出手段で検出した回転速度と前記軸トルク算出手段で算出した軸トルクとに基づいて前記将来回転速度を算出することを特徴とする請求項３に記載の内燃機関のトルク制御装置。
【請求項５】
前記点火時期算出手段は、トルク制御の応答性を優先するレスポンスモード運転中に点火時期を算出する際に、その点火時期算出タイミングにおける指示トルクに基づいて点火時期を算出することを特徴とする請求項１乃至４のいずれかに記載の内燃機関のトルク制御装置。
【請求項６】
前記レスポンスモード運転と前記スタビリティモード運転とを切り換える際に、前記点火時期算出手段が点火時期を算出する際に用いる指示トルクを徐々に変化させる指示トルク徐変手段を備えていることを特徴とする請求項５に記載の内燃機関のトルク制御装置。
【請求項７】
内燃機関の燃料カット気筒数を増加させる際に各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射をカットしていくシーケンシャルカットと、内燃機関の燃料カット気筒数を減少させる際に各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射を再開していくシーケンシャル復帰とのうちの少なくとも一方を実行するシーケンシャル制御手段を備え、
前記シーケンシャル制御手段は、全気筒で燃料噴射した場合の出力トルクに対する指示トルクの割合であるトルク発生率を所定周期で所定変化量ずつ変化させ、そのトルク発生率に応じて燃料カット気筒数を変化させることで前記シーケンシャルカット又は前記シーケンシャル復帰を実行することを特徴とする請求項１乃至６のいずれかに記載の内燃機関のトルク制御装置。
【請求項８】
内燃機関の燃料カット気筒数を増加させる際に各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射をカットしていくシーケンシャルカットと、内燃機関の燃料カット気筒数を減少させる際に各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射を再開していくシーケンシャル復帰とのうちの少なくとも一方を実行するシーケンシャル制御手段を備えた内燃機関のトルク制御装置において、
前記シーケンシャル制御手段は、全気筒で燃料噴射した場合の出力トルクに対する指示トルクの割合であるトルク発生率を所定周期で所定変化量ずつ変化させ、そのトルク発生率に応じて燃料カット気筒数を変化させることで前記シーケンシャルカット又は前記シーケンシャル復帰を実行することを特徴とする内燃機関のトルク制御装置。
【請求項９】
全気筒数がＹ気筒（但しＹは３以上の整数）の内燃機関で各気筒の通常の燃料噴射順序に対してｎサイクル（但しｎは０以上の整数）おきにＸ気筒（但しＸは１以上の整数）ずつ飛ばした順序で前記シーケンシャルカット又は前記シーケンシャル復帰を実行する場合に、
前記トルク発生率を変化させる際の前記所定周期を内燃機関の通常の点火間隔に設定し、前記所定変化量を１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）に設定することを特徴とする請求項７又は８に記載の内燃機関のトルク制御装置。
【請求項１０】
前記シーケンシャルカット及び／又は前記シーケンシャル復帰の実行中に燃料噴射量算出タイミングと燃料噴射時期を固定することを特徴とする請求項７乃至９のいずれかに記載の内燃機関のトルク制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の指示トルクに基づいて燃料噴射量（例えば燃料カットの有無）や点火時期を制御する内燃機関のトルク制御装置に関するものである。
【０００２】
【従来の技術】
近年の自動車においては、例えば特許第３２１１５１２号公報に示すように、駆動輪の空転（スリップ）を防止するトラクション制御等を行う際に、エンジンの出力トルクが指示トルクになるように各気筒の燃料噴射量（例えば燃料カットの有無）や点火時期を制御する「トルク制御」を行うようにしたものがある。
【０００３】
【発明が解決しようとする課題】
今日の最も一般的な内燃機関である吸気ポート噴射式のエンジンでは、燃料噴射弁から噴射した燃料を吸気行程終了までに筒内に吸入させるために、図３に示すように、遅くとも吸気行程前半までに燃料噴射を終了し（通常はバルブオーバーラップ期間での吹き抜けを防止するために排気行程以前に燃料噴射を終了し）、圧縮行程で点火プラグの通電を開始して圧縮上死点付近で点火することで混合気を燃焼（爆発）させるようにしている。このため、燃料噴射開始から点火プラグ通電開始までには、例えば３６０〜７２０°ＣＡ程度の遅れが生じる。
【０００４】
従って、指示トルクの変化に対して応答性の良いトルク制御を行うためには、燃料噴射量算出タイミングと点火時期算出タイミングを、それぞれ燃料噴射開始時期と点火プラグ通電開始時期の直前に設定し、図４（ａ）に示すように、燃料噴射量算出タイミングで、その時点の最新の指示トルクに基づいて燃料噴射量を算出し、その後（例えば３６０〜７２０°ＣＡ経過後）の点火時期算出タイミングで、その時点の最新の指示トルクに基づいて点火時期を算出することが考えられる。
【０００５】
しかし、このトルク制御方法では、図４（ａ）に示すように、指示トルクが変化していると、燃料噴射量算出に用いる指示トルク値と点火時期算出に用いる指示トルク値とが異なってくるため、その変化量が大きいと、以下に説明する例のように指示トルクに対する出力トルクの変動が大きくなって不安定なトルク制御になってしまうおそれがある。
【０００６】
例えば、図４（ａ）に実線で示すように、ある気筒において燃料噴射量算出タイミングでの指示トルクでは燃料カットが不要であったが、その後の点火時期算出タイミングでは指示トルクが低下していて、点火遅角では実現できないほど低い指示トルクになっていると、この気筒の爆発行程で得られるトルクは点火時期算出タイミングにおける指示トルクより大きくなってしまう。また、図４（ａ）に二点鎖線で示すように、燃料カット中の気筒において燃料噴射量算出タイミングでの指示トルクでは燃料復帰（燃料噴射の再開）が不要であったが、その後の点火時期算出タイミングでは指示トルクが上昇していて、指示トルク実現のために燃料復帰が必要になっていても、既に手遅れとなって燃料復帰が行えず、この気筒の爆発行程で得られるトルクが点火時期算出タイミングにおける指示トルクより小さくなってしまう。
【０００７】
また、内燃機関の燃料カットや燃料復帰（燃料噴射の再開）の際のトルクショックを低減するために、内燃機関の燃料カット気筒数を増加させる際に各気筒の通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で燃料噴射をカットしていくシーケンシャルカットや、内燃機関の燃料カット気筒数を減少させる際に各気筒の通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で燃料噴射を再開していくシーケンシャル復帰を行うようにしたものがある。
【０００８】
従来、このようなシーケンシャルカット（又はシーケンシャル復帰）を行う場合に、初回の燃料カット気筒（又は燃料復帰気筒）に応じてマップ等により以降の燃料カット気筒（又は燃料復帰気筒）を設定したり、或は、クランク角を積算して次の燃料カット気筒（又は燃料復帰気筒）を判定したりするようにしたものがある。しかし、このような制御方法では、指示トルクに応じて燃料カット気筒（又は燃料復帰気筒）を制御しているわけではないため、指示トルクを精度良く反映したシーケンシャルカット（又はシーケンシャル復帰）を行うことができない。
【０００９】
本発明はこれらの事情を考慮してなされたものであり、第１の目的は、燃料噴射量の算出から遅れたタイミングで点火時期を算出する場合でも、安定したトルク制御を行うことができるようにすることであり、また、第２の目的は、指示トルクを精度良く反映したシーケンシャルカット又はシーケンシャル復帰を行うことができるようにすることである。
【００１０】
【課題を解決するための手段】
上記第１の目的を達成するために、本発明の請求項１の内燃機関のトルク制御装置は、所定の指示トルク算出タイミング毎に指示トルクを指示トルク算出手段で算出して、所定の燃料噴射量算出タイミング毎に指示トルクに基づいて燃料噴射量を燃料噴射量算出手段で算出し、その燃料噴射量算出タイミングよりも遅れた所定の点火時期算出タイミング毎に指示トルクに基づいて点火時期を点火時期算出手段で算出する。そして、トルク制御の安定性を優先するスタビリティモード運転中に点火時期を算出する際には、その点火時期算出タイミングにおける指示トルクよりも前に算出された過去の指示トルクに基づいて点火時期を算出するようにしたものである。
【００１１】
燃料噴射量算出タイミングよりも遅れた点火時期算出タイミングで点火時期を算出する際に、過去の指示トルクを用いれば、燃料噴射量算出に用いる指示トルクと点火時期算出に用いる指示トルクとの偏差を小さくすることができるため、指示トルクに対する出力トルクの変動を小さくすることができ、トルク制御の安定性を向上させることができる。従って、トルク制御の安定性を優先するスタビリティモード運転中に、過去の指示トルクに基づいて点火時期を算出するようにすれば、燃料噴射量算出タイミングよりも遅れた点火時期算出タイミングで点火時期を算出する場合でも、安定したトルク制御を実現することができる。
【００１２】
この場合、請求項２のように、スタビリティモード運転中に点火時期を算出する際に、過去の指示トルクとして直前の燃料噴射量算出タイミングにおける指示トルクを用いるようにすると良い。このようにすれば、同じ指示トルク（燃料噴射量算出タイミングにおける指示トルク）に基づいて燃料噴射量と点火時期を算出することができるので、より安定したトルク制御を実現することができる。
【００１３】
ところで、過去の指示トルクに基づいて点火時期を算出すると、トルク制御の応答性が低下するおそれがある。この対策として、請求項３のように、スタビリティモード運転中に将来回転速度予測手段で予測した将来回転速度に基づいて指示トルクを算出するようにしても良い。このようにすれば、内燃機関の将来の回転速度の挙動を考慮に入れた指示トルクを算出することができるので、過去の指示トルクに基づいて点火時期を算出する場合でも、トルク制御の応答性を向上することができる。
【００１４】
この場合、将来回転速度は、内燃機関の軸トルクを積分して求めることができるが、積分を用いると、制御装置の演算負荷が大きくなる。
【００１５】
そこで、請求項４のように、内燃機関の回転速度を回転速度検出手段で検出すると共に、内燃機関の吸入空気量に基づいて軸トルクを軸トルク算出手段で算出し、回転速度検出手段で検出した回転速度と、軸トルク算出手段で算出した軸トルクとに基づいて将来回転速度を算出するようにしても良い。軸トルクの挙動によって回転速度のその後の挙動が決まってくるため、回転速度検出手段で検出した回転速度と軸トルクとを用いれば、最新の回転速度を基にして将来回転速度を精度良く算出することができると共に、積分が不要になり、制御装置の演算負荷を小さくすることができる。
【００１６】
一方、請求項５のように、トルク制御の応答性を優先するレスポンスモード運転中に点火時期を算出する際には、その点火時期算出タイミングにおける指示トルクに基づいて点火時期を算出するようにすると良い。このようにすれば、トルク制御の応答性を優先するレスポンスモードでは、点火時期を算出する際に、最新の指示トルクに基づいて点火時期を算出することができ、応答性の良いトルク制御を行うことができる。
【００１７】
ここで、レスポンスモードとスタビリティモードとを切り換える際に、それに伴って点火時期算出に用いる指示トルクを、最新の指示トルクと過去の指示トルクとの間で瞬時に切り換えると、その変化量が大きい場合には、点火時期算出に用いる指示トルクが急変するため、出力トルクが急変してドライバビリティに悪影響を及ぼす可能性がある。
【００１８】
この対策として、請求項６のように、レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクを指示トルク徐変手段により徐々に変化させるようにしても良い。このようにすれば、レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクが急変することを防止することができ、出力トルクの急変を防止してドライバビリティの悪化を防止することができる。
【００１９】
また、各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射をカット又は再開していくシーケンシャルカット又はシーケンシャル復帰を行う場合には、請求項７、８のように、シーケンシャル制御手段によって、全気筒で燃料噴射した場合の出力トルクに対する指示トルクの割合であるトルク発生率を所定周期で所定変化量ずつ変化させ、そのトルク発生率に応じて燃料カット気筒数を変化させることでシーケンシャルカット又はシーケンシャル復帰を実行するようにすると良い。
【００２０】
トルク発生率は、直接、燃料カット気筒数と対応させることができる。例えば、全気筒数が５気筒の内燃機関では、トルク発生率が０．８（＝４／５）の場合は１気筒だけ燃料カットすれば良い。この点に着目して、トルク発生率を所定周期で所定変化量ずつ減少（又は増加）させれば、シーケンシャルカット（又はシーケンシャル復帰）となるような割合でトルク発生率を減少（又は増加）させることができ、このように変化させたトルク発生率に応じて燃料カット気筒数を増加（又は減少）させれば、シーケンシャルカット（又はシーケンシャル復帰）を行うことができる。これにより、指示トルク（トルク発生率）を精度良く反映したシーケンシャルカットやシーケンシャル復帰を実現することができる。
【００２１】
この場合、請求項９のように、全気筒数がＹ気筒（但しＹは３以上の整数）の内燃機関で各気筒の通常の燃料噴射順序に対してｎサイクル（但しｎは０以上の整数）おきにＸ気筒（但しＸは１以上の整数）ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、トルク発生率を変化させる際の所定周期を内燃機関の通常の点火間隔（＝７２０℃Ａ／Ｙ）に設定し、所定変化量を１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）に設定すると良い。
【００２２】
例えば、全気筒数が５気筒の内燃機関で各気筒の通常の燃料噴射順序に対して０サイクルおきに（１サイクル毎に）１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、Ｙ＝５、ｎ＝０、Ｘ＝１を１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）に代入して、所定変化量を１／５／（１＋１＋０×５）＝０．１に設定する。この場合、１点火毎にトルク発生率を０．１ずつ減少又は増加させることができるので、２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）、トルク発生率を０．２（つまり、５気筒の内燃機関の１気筒分の燃料カット又は燃料復帰に相当するトルク発生率）ずつ減少又は増加させることができる。これにより、５気筒の内燃機関で各気筒の通常の燃料噴射順序に対して１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行することができる。
【００２３】
ところで、シーケンシャルカット又はシーケンシャル復帰となるようにトルク発生率を定率で（所定周期で所定変化量づつ）変化させても、燃料噴射量算出タイミング（つまり、トルク発生率に応じて燃料カット又は燃料復帰を決定するタイミング）が変化すると、燃料噴射量算出タイミング毎に受信するトルク発生率の変化が定率でなくなる場合があるため、燃料カット順序や燃料復帰順序が乱れてしまうおそれがある。また、燃料噴射時期が固定されていないと、事前に燃料カット又は燃料復帰が間に合うか否かを判定するのが困難になり、次に燃料カット又は燃料復帰する気筒を特定しにくくなる。
【００２４】
この対策として、請求項１０のように、シーケンシャルカット及び／又はシーケンシャル復帰の実行中に燃料噴射量算出タイミングと燃料噴射時期を固定するようにしても良い。燃料噴射量算出タイミングを固定すれば、燃料噴射量算出タイミング毎に受信するトルク発生率の変化を定率にすることができるので、燃料カット順序や燃料復帰順序の乱れを防止することができ、所定通りの順序でシーケンシャルカットやシーケンシャル復帰を実行することができる。また、燃料噴射時期を固定すれば、事前に燃料カット又は燃料復帰が間に合う気筒を容易に判定することができ、次に燃料カット又は燃料復帰する気筒を容易に特定することができる。
【００２５】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。内燃機関である例えば５気筒のエンジン１１は、第１気筒（＃１）〜第５気筒（＃５）の５つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、スロットルバルブ１５が設けられ、このスロットルバルブ１５の開度（スロットル開度）がスロットル開度センサ１６によって検出される。
【００２６】
また、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７に、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。
【００２７】
エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２１が取り付けられ、各点火プラグ２１の火花放電によって筒内の混合気に着火される。更に、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２２や、エンジン回転速度を検出するクランク角センサ２３（回転速度検出手段）が取り付けられている。
【００２８】
一方、エンジン１１の排気管２４には、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒２５が設けられ、この触媒２５の上流側に、排出ガスの空燃比又はリーン／リッチ等を検出する排出ガスセンサ２６（空燃比センサ、酸素センサ等）が設けられている。
【００２９】
前述した各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）２７に入力される。このＥＣＵ２７は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２０の燃料噴射量や点火プラグ２１の点火時期を制御する。
【００３０】
また、ＥＣＵ２７は、駆動輪の空転（スリップ）を防止するトラクション制御や減速時燃料カット等を行う際に、後述する図１２乃至図２５のトルク制御用の各プログラムを実行することで、エンジン１１の出力トルクが指示トルクになるように、各気筒の燃料カットや燃料復帰（燃料噴射の再開）を制御すると共に、各気筒の点火時期を制御する「トルク制御」を行う。
【００３１】
以下、ＥＣＵ２７が実行するトルク制御の概要を説明する。
ＥＣＵ２７は、トルク制御を行う際には、運転条件に基づいてシーケンシャルカットモード、シーケンシャル復帰モード、全気筒カットモード、全気筒復帰モードの中から１つのモードを選択する。
【００３２】
図２に示すように、シーケンシャルカットモードでは、エンジン１１の燃料カット気筒数を増加させる際に各気筒の通常の燃料噴射順序（＃１→＃２→＃４→＃５→＃３）に対して所定気筒数（例えば１気筒）ずつ飛ばした順序（図２では＃３→＃２→＃５→＃１→＃４）で燃料噴射をカットしていくシーケンシャルカットを実行する。また、シーケンシャル復帰モードでは、エンジン１１の燃料カット気筒数を減少させる際に各気筒の通常の燃料噴射順序に対して所定気筒数（例えば１気筒）ずつ飛ばした順序（図２では＃５→＃１→＃４→＃３→＃２）で燃料噴射を再開していくシーケンシャル復帰を実行する。本実施形態では、このシーケンシャルカットモードとシーケンシャル復帰モードを、トルク制御の安定性を優先するスタビリティモードとする。
【００３３】
一方、全気筒カットモードでは、各気筒の通常の燃料噴射順序で燃料噴射をカットして全気筒の燃料噴射をカットする全気筒カットを実行する。また、全気筒復帰モードでは、各気筒の通常の燃料噴射順序で燃料噴射を再開して全気筒の燃料噴射を再開する全気筒復帰を実行する。本実施形態では、この全気筒カットモードと全気筒復帰モードを、トルク制御の応答性を優先するレスポンスモードとする。
【００３４】
図３に示すように、一般に、燃料噴射開始から点火プラグ通電開始までには、例えば３６０〜７２０°ＣＡの遅れがある。従って、ＥＣＵ２７は、レスポンスモード（全気筒カットモードと全気筒復帰モード）運転中に、指示トルクの変化に対して応答性の良いトルク制御を行うために、燃料噴射量算出タイミングと点火時期算出タイミングを、それぞれ燃料噴射開始時期と点火プラグ通電開始時期の直前に設定し、図４（ａ）に示すように、燃料噴射量算出タイミングで、その時点の最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングで、その時点の最新の指示トルクに基づいて点火時期を算出する。
【００３５】
しかし、このレスポンスモード運転中のトルク制御方法では、図４（ａ）に示すように、指示トルクが変化していると、燃料噴射量算出に用いる指示トルク値と点火時期算出に用いる指示トルク値とが異なってくるため、その変化量が大きいと、指示トルクに対する出力トルクの変動が大きくなって不安定なトルク制御になるおそれがある。従って、スタビリティモード（シーケンシャルカットモードとシーケンシャル復帰モード）運転中に、レスポンスモードと同じように、燃料噴射量の算出時と点火時期の算出時に、それぞれ最新の指示トルクを用いるようにすると、トルク制御の安定性を優先するスタビリティモードであるにも拘らず、不安定なトルク制御になってしまうおそれがある。
【００３６】
そこで、ＥＣＵ２７は、スタビリティモード運転中には、図４（ｂ）に示すように、燃料噴射量算出タイミングで、その時点の最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングでは、その点火時期算出タイミングにおける指示トルクよりも前に算出された過去の指示トルク（例えば、直前の燃料噴射量算出タイミングにおける指示トルク）に基づいて点火時期を算出する。これにより、燃料噴射量算出に用いる指示トルクと点火時期算出に用いる指示トルクとの偏差を小さく（又は０に）して、指示トルクに対する出力トルクの変動を小さくし、トルク制御の安定性を向上させる。
【００３７】
ところで、上述したように、スタビリティモード運転中は、過去の指示トルクに基づいて点火時期を算出するため、トルク制御の応答性が低下するおそれがある。この対策として、ＥＣＵ２７は、スタビリティモード運転中に、エンジン１１の将来の回転速度を予測し、その将来回転速度に基づいて指示トルクを算出することで、過去の指示トルクに基づいて点火時期を算出する場合でも、トルク制御の応答性を向上させる。
【００３８】
将来回転速度は、次のようにして求める。図５に示すように、所定周期（例えば３６０℃Ａ周期）でクランク角センサ２３によりエンジン回転速度Ｎｅを検出すると共に、気筒別推定軸トルクＴを算出する。この気筒別推定軸トルクＴの算出方法は、エアフローメータ１４で検出した実吸入空気量に基づいて推定軸トルクＴ０を算出し、この推定軸トルクＴ０に点火時期効率と燃料噴射の有無（１又は０）とを乗算して気筒別推定軸トルクＴを求める。
Ｔ＝Ｔ０×点火時期効率×燃料噴射の有無（１又は０）
【００３９】
スタビリティモード（シーケンシャルカットモードとシーケンシャル復帰モード）は、エンジン１１に連結されている駆動伝達系（ギアやクラッチ）の状態が安定しているとき（例えば減速時燃料カット運転）で選択されるため、気筒別推定軸トルクＴの挙動によってその後の回転速度Ｎｅの挙動がほぼ決まってくる。このため、気筒別推定軸トルクＴの変動量と回転速度Ｎｅの変動量との関係を次式のように表すことができる。
｛Ｎｅ（ｉ）−Ｎｅ（ｉ−１）｝／｛Ｔ（ｉ−１）−Ｔ（ｉ−２）｝＝｛ＥＮｅ−Ｎｅ（ｉ）｝／｛Ｔ（ｉ）−Ｔ（ｉ−１）｝
【００４０】
ここで、Ｎｅ（ｉ−１）は１回前（例えば３６０℃Ａ前）の回転速度、Ｎｅ（ｉ）は今回の回転速度、ＥＮｅは次回（例えば３６０℃Ａ後）の将来回転速度であり、Ｔ（ｉ−２）は２回前（例えば７２０℃Ａ前）の気筒別推定軸トルク、Ｔ（ｉ−１）は１回前（例えば３６０℃Ａ前）の気筒別推定軸トルク、Ｔ（ｉ）は今回の気筒別推定軸トルクである。
【００４１】
上式を将来回転速度ＥＮｅについて解くことで、次の（１）式を得ることができる。
ＥＮｅ＝｛Ｔ（ｉ）−Ｔ（ｉ−１）｝／｛Ｔ（ｉ−１）−Ｔ（ｉ−２）｝×｛Ｎｅ（ｉ）−Ｎｅ（ｉ−１）｝＋Ｎｅ（ｉ）……（１）
【００４２】
ＥＣＵ２７は、上記（１）式によりエンジン回転速度Ｎｅと気筒別推定軸トルクＴを用いて将来回転速度ＥＮｅを算出し、スタビリティモード運転中に、その将来回転速度ＥＮｅに基づいて指示トルクを算出する。
【００４３】
また、上述したように、レスポンスモードでは、最新の指示トルクに基づいて点火時期を算出するが、スタビリティモードでは、過去の指示トルクに基づいて点火時期を算出する。このため、図６に示すように、レスポンスモードとスタビリティモードとを切り換える際に、それに伴って点火時期算出に用いる指示トルクを、最新の指示トルクと過去の指示トルク（例えば３点火前の指示トルク）との間で瞬時に切り換えると、その変化量が大きい場合には、点火時期算出に用いる指示トルクが急変するため、出力トルクが急変してドライバビリティに悪影響を及ぼす可能性がある。
【００４４】
この対策として、ＥＣＵ２７は、図７に示すように、レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクを徐々に変化させるスムージング処理を実行することで、点火時期算出に用いる指示トルクの急変を防止して、出力トルクの急変を防止する。
【００４５】
以下、レスポンスモードでは、最新の指示トルクＲＴ（ｉ）に基づいて点火時期を算出し、スタビリティモードでは、そのｎ点火前（例えば３点火前）の指示トルクＲＴ（ｉ−ｎ）に基づいて点火時期を算出する場合について説明する。
【００４６】
図７に示すように、レスポンスモードでは、スムージングカウンタのカウンタ値Ｓを最大値Ｓｍａｘ（例えば４）に維持し、レスポンスモードからスタビリティモードに切り換える際には、通常の点火間隔毎にスムージングカウンタのカウンタ値Ｓを「１」ずつデクリメントして、最大値Ｓｍａｘから０まで減少させる。一方、スタビリティモードでは、スムージングカウンタのカウンタ値Ｓを０に維持し、スタビリティモードからレスポンスモードに切り換える際には、通常の点火間隔毎にスムージングカウンタのカウンタ値Ｓを「１」ずつインクリメントして、０から最大値Ｓｍａｘまで増加させる。
【００４７】
そして、点火時期算出に用いる指示トルク　ｒＲＴを次式により算出する。
ｒＲＴ＝ＲＴ（ｉ−ｎ）＋｛ＲＴ（ｉ）−ＲＴ（ｉ−ｎ）｝×Ｓ／Ｓｍａｘ……（２）
レスポンスモードでは、スムージングカウンタのカウンタ値Ｓを最大値Ｓｍａｘに維持するため、上記（２）式により、点火時期算出に用いる指示トルク　ｒＲＴが最新の指示トルクＲＴ（ｉ）に維持される。
【００４８】
また、レスポンスモードからスタビリティモードに切り換える際には、スムージングカウンタのカウンタ値Ｓを最大値Ｓｍａｘから０まで「１」ずつデクリメントするため、上記（２）式により、点火時期算出に用いる指示トルク　ｒＲＴが、最新の指示トルクＲＴ（ｉ）からｎ点火前の指示トルクＲＴ（ｉ−ｎ）まで徐々に変化する。
【００４９】
一方、スタビリティモードでは、スムージングカウンタのカウンタ値Ｓを０に維持するため、上記（２）式により、点火時期算出に用いる指示トルク　ｒＲＴがｎ点火前の指示トルクＲＴ（ｉ−ｎ）に維持される。
【００５０】
また、スタビリティモードからレスポンスモードに切り換える際には、スムージングカウンタのカウンタ値Ｓを０から最大値Ｓｍａｘまで「１」ずつインクリメントするため、上記（２）式により、点火時期算出に用いる指示トルク　ｒＲＴがｎ点火前の指示トルクＲＴ（ｉ−ｎ）から最新の指示トルクＲＴ（ｉ）まで徐々に変化する。
【００５１】
尚、上記（２）式は必ずしも全モードで用いる必要はなく、レスポンスモードからスタビリティモードに切り換える際と、スタビリティモードからレスポンスモードに切り換える際のうちの少なくとも一方で用いるようにしても良い。
【００５２】
次に、各気筒の通常の燃料噴射順序に対して所定気筒数ずつ飛ばした順序で燃料噴射をカット又は再開していくシーケンシャルカット又はシーケンシャル復帰について説明する。
【００５３】
指示トルクそのものではなく、トルク発生率（全気筒で燃料噴射した場合の出力トルクに対する指示トルクの割合）であれば、直接、燃料カット気筒数と対応させることができる。例えば、全気筒数が５気筒のエンジン１１では、トルク発生率が０．８（＝４／５）の場合は１気筒だけ燃料カットすれば良い。
【００５４】
そこで、ＥＣＵ２７は、トルク発生率を定率で（所定周期で所定変化量ずつ）減少又は増加させ、そのトルク発生率に応じて燃料カット気筒数を増加又は減少させることで、指示トルク（トルク発生率）を精度良く反映したシーケンシャルカット又はシーケンシャル復帰を実現する。
【００５５】
トルク発生率を定率で変化させる際の所定周期と所定変化量（以下「トルク発生率変化量」という）は、次のようにして設定する。全気筒数がＹ気筒（但しＹは３以上の整数）のエンジン１１で各気筒の通常の燃料噴射順序に対してｎサイクル（但しｎは０以上の整数）おきにＸ気筒（但しＸは１以上の整数）ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、トルク発生率を変化させる際の所定周期を、エンジン１１の通常の点火間隔（＝７２０℃Ａ／Ｙ）に設定し、トルク発生率変化量ΔＴＣＲを次の（３）式により設定する。
ΔＴＣＲ＝１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）……（３）
【００５６】
従って、シーケンシャルカットモードでは、通常の点火間隔毎にトルク発生率ＴＣＲａｔｅを次式によりトルク発生率変化量ΔＴＣＲ＝１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）ずつ減少させる。
ＴＣＲａｔｅ（ｉ）＝ＴＣＲａｔｅ（ｉ−１）−１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）
【００５７】
一方、シーケンシャル復帰モードでは、通常の点火間隔毎にトルク発生率ＴＣＲａｔｅを次式によりトルク発生率変化量ΔＴＣＲ＝１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）ずつ増加させる。
ＴＣＲａｔｅ（ｉ）＝ＴＣＲａｔｅ（ｉ−１）＋１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）
【００５８】
以下、全気筒数が５気筒のエンジン１１の場合について説明する。
５気筒のエンジン１１では、燃料カット気筒数が１気筒だけ増加する毎に出力トルクが２０％ずつ減少するので、図８（ａ）に示すように、シーケンシャルカットモードでは、トルク発生率ＴＣＲａｔｅの判定値が０．２間隔（例えば、０．８→０．６→０．４→０．２→０）で設定され、トルク発生率ＴＣＲａｔｅが０．２だけ減少する毎に燃料カット気筒数が１気筒ずつ増加するようにしている。
【００５９】
また、５気筒のエンジン１１では、燃料復帰気筒数（５−燃料カット気筒数）が１気筒だけ増加する毎に出力トルクが２０％ずつ増加するので、図８（ｂ）に示すように、シーケンシャル復帰モードでは、トルク発生率ＴＣＲａｔｅの判定値が０．２間隔（例えば、０→０．２→０．４→０．６→０．８）で設定され、トルク発生率ＴＣＲａｔｅが０．２だけ増加する毎に燃料復帰気筒数が１気筒ずつ増加するようにしている。
【００６０】
尚、各モードのトルク発生率ＴＣＲａｔｅの判定値は適合要素であり、例えば、０＜ＴＣＲａｔｅ≦０．２のときには、点火遅角でトルク調整する際に、その調整範囲を越えて失火してしまう場合や排気温度上昇の懸念があるので、シーケンシャルカットモードでは、ＴＣＲａｔｅ≦０．１の範囲で燃料カット気筒数を５とするようにしても良い。
【００６１】
全気筒数が５気筒のエンジン１１で各気筒の通常の燃料噴射順序に対して０サイクルおきに（つまり１サイクル毎に）、１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、上記（３）式にＹ＝５、ｎ＝０、Ｘ＝１を代入して、トルク発生率変化量ΔＴＣＲを求める。
ΔＴＣＲ＝１／５／（１＋１＋０×５）＝０．１
【００６２】
このようにトルク発生率変化量ΔＴＣＲを設定すれば、図９に示すように、１点火毎にトルク発生率ＴＣＲａｔｅを０．１ずつ減少又は増加させることができるので、２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）、トルク発生率を０．２（つまり、５気筒のエンジン１１の１気筒分の燃料カット又は燃料復帰に相当するトルク発生率）ずつ減少又は増加させることができる。これにより、５気筒のエンジン１１で各気筒の通常の燃料噴射順序に対して１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行することができる。
【００６３】
ところで、トルク発生率変化量ΔＴＣＲを上記（３）式により算出する場合には、全気筒数が３気筒や６気筒のときのように、トルク発生率変化量ΔＴＣＲの算出結果が無限小数になることもある。例えば、全気筒数が６気筒のエンジン１１で各気筒の通常の燃料噴射順序に対して０サイクルおきに（つまり、１サイクル毎に）１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、上記（３）式にＹ＝６、ｎ＝０、Ｘ＝１を代入して、トルク発生率変化量ΔＴＣＲを算出すると、トルク発生率変化量ΔＴＣＲが次のように無限小数になる。
ΔＴＣＲ＝１／６／（１＋１＋０×６）＝０．０８３３３・・・・
【００６４】
そこで、図１０（ａ）に示すように、まず、トルク発生率ＴＣＲａｔｅの判定値の小数点以下の桁数を制御上、問題のないように設定し、次に、トルク発生率変化量ΔＴＣＲの小数点以下の桁数が判定値と同じになるように、切り捨て方式でトルク発生率変化量ΔＴＣＲを例えば０．０８３３に設定する。しかし、切り捨て方式でトルク発生率変化量ΔＴＣＲを設定すると、シーケンシャルカットを行うために、トルク発生率ＴＣＲａｔｅをトルク発生率変化量ΔＴＣＲ（例えば０．０８３３）ずつ減少させたときに、トルク発生率ＴＣＲａｔｅの減少量が不足して、燃料カット気筒数を増加させるタイミングがずれてしまう。
【００６５】
そこで、図１０（ｂ）に示すように、トルク発生率変化量ΔＴＣＲの小数点以下の桁数が判定値と同じになるように、切り上げ方式でトルク発生率変化量ΔＴＣＲを例えば０．０８３４に設定することが必要になる。このように切り上げ方式でトルク発生率変化量ΔＴＣＲを設定すると、シーケンシャルカットを行うために、トルク発生率ＴＣＲａｔｅをトルク発生率変化量ΔＴＣＲ（例えば０．０８３４）ずつ減少させたときに、トルク発生率ＴＣＲａｔｅの最小値がマイナス値になる。そこで、トルク発生率ＴＣＲａｔｅがマイナス値になるのを防止するために、トルク発生率ＴＣＲａｔｅの最小値を０でガード処理することが考えられる。
【００６６】
しかし、トルク発生率ＴＣＲａｔｅの最小値を０でガード処理すると、その後、シーケンシャル復帰を行うために、そのガード処理された最小値（０）からトルク発生率ＴＣＲａｔｅをトルク発生率変化量ΔＴＣＲ（例えば０．０８３４）ずつ増加させたときに、燃料復帰気筒数を増加させるタイミングがずれてしまう可能性がある。また、このようにトルク発生率ＴＣＲａｔｅがガード処理された場合と、ガード処理されなかった場合（運転条件の変化等によりトルク発生率ＴＣＲａｔｅが最小値まで減少する前に、増加に移った場合）とで、トルク発生率が異なる値になってしまうという問題もある。
【００６７】
この対策として、図１０（ｃ）に示すように、燃料カット気筒数や燃料復帰気筒数の判定に用いるトルク発生率ＴＣＲａｔｅは、ガード処理を行わず、マイナス値になってもそのまま使用し、トルク制御値に変換する段階で０として扱うようにすると良い。このようにすれば、燃料カット気筒数や燃料復帰気筒数を増加させるタイミングがずれることなく、シーケンシャルカットやシーケンシャル復帰を行うことができる。また、トルク発生率ＴＣＲａｔｅの判定値の桁数よりトルク発生率変化量ΔＴＣＲの桁数を多くすることで積算時の精度悪化も防止することができる。
【００６８】
ところで、シーケンシャルカット又はシーケンシャル復帰となるようにトルク発生率ＴＣＲａｔｅを定率で（所定周期で所定変化量づつ）変化させても、燃料噴射量算出タイミング（つまり、トルク発生率ＴＣＲａｔｅに応じて燃料カットや燃料復帰を決定するタイミング）が変化すると、燃料噴射量算出タイミング毎に受信するトルク発生率ＴＣＲａｔｅの変化が定率でなくなる場合があるため、燃料カット順序や燃料復帰順序が乱れてしまうおそれがある。また、燃料噴射時期が固定されていないと、事前に燃料カット又は燃料復帰が間に合うか否かを判定するのが困難になり、次に燃料カット又は燃料復帰する気筒を特定しにくくなる。
【００６９】
この対策として、ＥＣＵ２７は、スタビリティモード（シーケンシャルカットモードとシーケンシャル復帰モード）では、燃料噴射量算出タイミングと燃料噴射時期を固定する。例えば、図１１（ａ）に示すように、シーケンシャルカット時は、点火時期算出タイミングの２点火前に燃料噴射量算出タイミングを固定し、シーケンシャル復帰時は、点火時期算出タイミングの３点火前に燃料噴射量算出タイミングを固定する。燃料噴射時期は、それぞれの燃料噴射量算出タイミングの直後に固定される。
【００７０】
この場合、エンジン回転速度やエンジン温度、負荷等のエンジン運転状態によって要求燃料噴射量が変わるので、燃料噴射量算出タイミングと燃料噴射時期は、ある程度余裕を持って噴射できるタイミングにするべきである。ポイントは、一旦、スタビリティモードに入ったら、そのスタビリティモード運転中に、燃料噴射量算出タイミングと燃料噴射時期を変えなくて済むように固定することであり、スタビリティモードに入った直後の最初の燃料噴射量算出タイミングと燃料噴射時期は、以後のエンジン運転状態変化を想定して設定するようにしても良い。以後のエンジン運転状態変化を想定してと言ってもスタビリティモードを継続すべき運転状態を考えれば良いので、アクセルを踏んだり、急激な回転速度降下がある場合は、スムージング処理もバイパスしてレスポンスモードに切り換えるべきなので、これらの場合は考えなくて良い。
【００７１】
以上説明したＥＣＵ２７によるトルク制御は、図１２乃至図２５に示すトルク制御用のプログラムに従って実行される。以下、これら各プログラムの処理内容を説明する。
【００７２】
［将来回転速度算出］
図１２に示す将来回転速度算出プログラムは、所定周期（例えば３６０℃Ａ周期）で実行される。本プログラムが起動されると、まず、ステップ１０１で、クランク角センサ２３で検出したエンジン回転速度Ｎｅを読み込む。
【００７３】
この後、ステップ１０２に進み、エアフローメータ１４で検出した吸入空気量に基づいて推定軸トルクＴ０を算出し、この推定軸トルクＴ０に点火時期効率と燃料噴射の有無（１又は０）とを乗算して気筒別推定軸トルクＴを求める。このステップ１０２の処理が特許請求の範囲でいう軸トルク算出手段としての役割を果たす。
【００７４】
この後、ステップ１０３に進み、将来回転速度ＥＮｅを次式により算出する。
ＥＮｅ＝｛Ｔ（ｉ）−Ｔ（ｉ−１）｝／｛Ｔ（ｉ−１）−Ｔ（ｉ−２）｝×｛Ｎｅ（ｉ）−Ｎｅ（ｉ−１）｝＋Ｎｅ（ｉ）
このステップ１０３の処理が特許請求の範囲でいう将来回転速度予測出手段としての役割を果たす。
【００７５】
［トルク発生率算出］
図１３に示すトルク発生率算出プログラムは、通常の点火間隔毎（例えば５気筒エンジンの場合は１４４℃Ａ毎）に実行される。本プログラムが起動されると、まず、ステップ２０１で、トルクカットモードＴＣＭｏｄｅが「１」にセットされているか否かを判定する。
【００７６】
このトルクカットモードＴＣＭｏｄｅは、トルクカットモード判定プログラム（図示せず）によって、「１」、「２」、「３」、「０」のうちのいずれかにセットされる。トルクカットモードＴＣＭｏｄｅ＝１はシーケンシャルカットモードを意味し、トルクカットモードＴＣＭｏｄｅ＝２は全気筒カットモードを意味する。また、トルクカットモードＴＣＭｏｄｅ＝３はシーケンシャル復帰モードを意味し、トルクカットモードＴＣＭｏｄｅ＝０は全気筒復帰モードを意味する。
【００７７】
例えば、アイドリング状態であること、ギアがニュートラルでないこと、エンジン回転速度Ｎｅが所定回転速度よりも高いこと等の減速時燃料カット・復帰条件が全て成立したときには、トルク制御の安定性を優先すべき状態であると判断して、トルクカットモードＴＣＭｏｄｅ＝１にセットしてシーケンシャルカットモードを選択する。または、トルクカットモードＴＣＭｏｄｅ＝３にセットしてシーケンシャル復帰モードを選択する。
【００７８】
一方、減速時燃料カット・復帰条件が不成立のときには、トルク制御の応答性を優先すべき状態であると判断して、トルクカットモードＴＣＭｏｄｅ＝２にセットして全気筒カットモードを選択する。または、トルクカットモードＴＣＭｏｄｅ＝０にセットして全気筒復帰モードを選択する。
【００７９】
上記ステップ２０１で、トルクカットモードＴＣＭｏｄｅが「１」にセットされているか否かによって、シーケンシャルカットモードが選択されているか否かを判定し、シーケンシャルカットモードが選択されている（トルクカットモードＴＣＭｏｄｅ＝１）と判定されれば、ステップ２０２に進み、前回もシーケンシャルカットモードであったか否かを判定する。
【００８０】
前回がシーケンシャルカットモードではないと判定された場合、つまり、シーケンシャルカットモードに切り換え後の最初の処理の場合には、ステップ２０２からステップ２０３に進み、トルク発生率ＴＣＲａｔｅを「１」に設定した後、ステップ２０４に進む。
【００８１】
一方、上記ステップ２０２で前回もシーケンシャルカットモードであると判定された場合、つまり、シーケンシャルカットモードに切り換え後の２回目以降は、ステップ２０２からステップ２０４に進む。
【００８２】
このステップ２０４では、次式によりトルク発生率ＴＣＲａｔｅをトルク発生率ＴＣＲａｔｅの変化量ΔＴＣＲだけ減少させる。但し、トルク発生率ＴＣＲａｔｅの最小値は０とする。
ＴＣＲａｔｅ＝ＴＣＲａｔｅ−ΔＴＣＲ
【００８３】
ここで、全気筒数が５気筒のエンジン１１で各気筒の通常の燃料噴射順序に対して０サイクルおきに（つまり、１サイクル毎に）、１気筒ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合には、次式にＹ＝５、ｎ＝０、Ｘ＝１を代入して、トルク発生率変化量ΔＴＣＲを設定する。
ΔＴＣＲ＝１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）
＝１／５／（１＋１＋０×５）＝０．１
【００８４】
これにより、シーケンシャルカットモードでは、１点火毎にトルク発生率ＴＣＲａｔｅを０．１ずつ減少させて、２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）トルク発生率ＴＣＲａｔｅを０．２（つまり、５気筒のエンジン１１の１気筒分の燃料カットに相当するトルク発生率）ずつ減少させる。
【００８５】
一方、上記ステップ２０１で、シーケンシャルカットモードが選択されていない（トルクカットモードＴＣＭｏｄｅ≠１）と判定された場合には、ステップ２０５に進み、トルクカットモードＴＣＭｏｄｅが「２」にセットされているか否かによって、全気筒カットモードが選択されているか否かを判定する。
【００８６】
このステップ２０５で、全気筒カットモードが選択されている（トルクカットモードＴＣＭｏｄｅ＝２）と判定されれば、ステップ２０６に進み、トルク発生率ＴＣＲａｔｅを「０」に設定する。
ＴＣＲａｔｅ＝０
【００８７】
また、上記ステップ２０５で、全気筒カットモードが選択されていない（トルクカットモードＴＣＭｏｄｅ≠２）と判定された場合には、ステップ２０７に進み、トルクカットモードＴＣＭｏｄｅが「３」にセットされているか否かによって、シーケンシャル復帰モードが選択されているか否かを判定する。
【００８８】
このステップ２０７で、シーケンシャル復帰モードが選択されている（トルクカットモードＴＣＭｏｄｅ＝３）と判定されれば、ステップ２０８に進み、次式によりトルク発生率ＴＣＲａｔｅをトルク発生率変化量ΔＴＣＲだけ増加させる。但し、トルク発生率ＴＣＲａｔｅの最大値は１とする。
ＴＣＲａｔｅ＝ＴＣＲａｔｅ＋ΔＴＣＲ
【００８９】
これにより、シーケンシャル復帰モードでは、１点火毎にトルク発生率ＴＣＲａｔｅを０．１ずつ増加させて、２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）トルク発生率ＴＣＲａｔｅを０．２（つまり、５気筒のエンジン１１の１気筒分の燃料復帰に相当するトルク発生率）ずつ増加させる。
【００９０】
また、上記ステップ２０７で、シーケンシャル復帰モードが選択されていない（トルクカットモードＴＣＭｏｄｅ≠３）と判定された場合には、全気筒復帰モードが選択されている（トルクカットモードＴＣＭｏｄｅ＝０）と判断して、ステップ２０９に進み、トルク発生率ＴＣＲａｔｅを「１」に設定する。
ＴＣＲａｔｅ＝１
【００９１】
［指示図示トルク算出］
図１４に示す指示図示トルク算出プログラムは、通常の点火間隔毎に実行され、特許請求の範囲でいう指示トルク算出手段としての役割を果たす。本プログラムが起動されると、まず、ステップ３０１で、トルク発生率ＴＣＲａｔｅが「１」であるか否かを判定する。
【００９２】
トルク発生率ＴＣＲａｔｅが「１」の場合、つまり、全気筒復帰モードの場合には、ステップ３０２に進み、ドライバ指示軸トルクにロストルク（外部補機類等の負荷に応じたトルク）を加算して指示図示トルクＲＩＴｒｑを求める。
ＲＩＴｒｑ＝ドライバ指示軸トルク＋ロストルク
【００９３】
一方、トルク発生率ＴＣＲａｔｅが「１」でない場合、つまり、シーケンシャルカットモード、シーケンシャル復帰モード、全気筒カットモードの場合には、ステップ３０３に進み、将来回転速度ＥＮｅと吸入空気量とに基づいてマップ等により全気筒で燃料噴射した場合の推定図示トルクＥＩＴｒｑを算出した後、ステップ３０４に進み、推定図示トルクＥＩＴｒｑにトルク発生率ＴＣＲａｔｅを乗算して指示図示トルクＲＩＴｒｑを求める。
ＲＩＴｒｑ＝ＥＩＴｒｑ×ＴＣＲａｔｅ
【００９４】
［燃料カット・復帰決定］
図１５及び図１６に示す燃料カット・復帰決定プログラムは、通常の点火間隔毎に実行され、特許請求の範囲でいう燃料噴射量算出手段としての役割を果たす。本プログラムが起動されると、まず、ステップ４０１で、推定図示トルクＥＩＴｒｑ≠０であるか否かを判定し、もし、推定図示トルクＥＩＴｒｑ＝０と判定されれば、０割り防止のために、ステップ４０２に進み、トルク比　ｒＴＲａｔｅを「１」に設定する。
【００９５】
一方、上記ステップ４０１で、推定図示トルクＥＩＴｒｑ≠０であると判定されれば、ステップ４０３に進み、指示図示トルクＲＩＴｒｑを推定図示トルクＥＩＴｒｑで除算してトルク比　ｒＴＲａｔｅ（＝トルク発生率ＴＣＲａｔｅ）を求める。
ｒＴＲａｔｅ＝ＲＩＴｒｑ／ＥＩＴｒｑ
【００９６】
この後、ステップ４０４に進み、トルクカットモードＴＣＭｏｄｅ＝１（シーケンシャルカットモード）であるか否かを判定し、シーケンシャルカットモードであれば、ステップ４０５に進み、後述する図１７に示す燃料カット気筒順序設定プログラムを実行する。
【００９７】
この後、ステップ４０６に進み、トルクカットモードＴＣＭｏｄｅ＝３（シーケンシャル復帰モード）であるか否かを判定し、シーケンシャル復帰モードであれば、ステップ４０７に進み、後述する図１８に示す燃料復帰気筒順序設定プログラムを実行する。
【００９８】
この後、図１６のステップ４０８に進み、全気筒数Ｙ（例えば５）と現在の燃料カット気筒数ＦＣＬとを用いて噴射率　ｒＩＲａｔｅを次式により算出する。
ｒＩＲａｔｅ＝（５−ＦＣＬ）／５
【００９９】
そして、次のステップ４０９で、トルクカットモードＴＣＭｏｄｅ＝１（シーケンシャルカットモード）であるか否かを判定し、シーケンシャルカットモードであれば、ステップ４１０に進み、後述する図１９に示すシーケンシャル燃料カット処理プログラムを実行して、各気筒の通常の燃料噴射順序に対して所定気筒数（例えば１気筒）ずつ飛ばした順序で燃料噴射をカットしていくシーケンシャルカットを行う。
【０１００】
この後、ステップ４１１に進み、トルクカットモードＴＣＭｏｄｅ＝３（シーケンシャル復帰モード）であるか否かを判定し、シーケンシャル復帰モードであれば、ステップ４１２に進み、後述する図２０に示すシーケンシャル燃料復帰処理プログラムを実行して、各気筒の通常の燃料噴射順序に対して所定気筒数（例えば１気筒）ずつ飛ばした順序で燃料噴射を再開していくシーケンシャル復帰を行う。
【０１０１】
そして、次のステップ４１３で、トルクカットモードＴＣＭｏｄｅ＝２（全気筒カットモード）であるか否かを判定し、全気筒カットモードであれば、ステップ４１４に進み、全気筒燃料カット処理を実行して、各気筒の通常の燃料噴射順序で燃料噴射をカットして全気筒の燃料噴射をカットする。
【０１０２】
この後、ステップ４１５に進み、トルクカットモードＴＣＭｏｄｅ＝０（全気筒復帰モード）であるか否かを判定し、全気筒復帰モードであれば、ステップ４１６に進み、全気筒燃料復帰処理を実行して、各気筒の通常の燃料噴射順序で燃料噴射を再開して全気筒の燃料噴射を再開する。
【０１０３】
そして、最後のステップ４１７で、現在の燃料カット気筒数ＦＣＬを算出した後、本プログラムを終了する。
【０１０４】
［燃料カット気筒順序設定］
図１７に示す燃料カット気筒順序設定プログラム（図１５のステップ４０５）が起動されると、まず、ステップ５０１で、クランクカウンタＣＣｕｎｔのカウント値（クランク回転位置）を読み込む。図１１（ｂ）に示すように、このクランクカウンタＣＣｕｎｔは、３６℃Ａ毎に「１」ずつインクリメントされるため、クランクカウンタＣＣｕｎｔの４カウントが通常の点火間隔（１４４℃Ａ）に相当し、クランクカウンタＣＣｕｎｔの２０カウントが１サイクル（７２０℃Ａ）に相当する。尚、クランクカウンタＣＣｕｎｔは、「２０」になった時点で「０」にリセットされる。
【０１０５】
また、クランクカウンタＣＣｕｎｔ＝０のクランク回転位置が、＃５の点火時期算出タイミングに相当し、クランクカウンタＣＣｕｎｔ＝４、８、１２、１６のクランク回転位置が、それぞれ＃３、＃１、＃２、＃４の点火時期算出タイミングに相当するように設定されている。
【０１０６】
まず、ステップ５０１で、クランクカウンタＣＣｕｎｔのカウント値（クランク回転位置）を読み込んだ後、ステップ５０２で、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）であると判定されれば、ステップ５０３に進み、　ｒＣｙｌｏｒｄ（１）＝３、　ｒＣｙｌｏｒｄ（２）＝１、　ｒＣｙｌｏｒｄ（３）＝２、　ｒＣｙｌｏｒｄ（４）＝４、　ｒＣｙｌｏｒｄ（５）＝５に設定することで、燃料カットする気筒の優先順位を＃３、＃１、＃２、＃４、＃５の順に設定する。
【０１０７】
一方、上記ステップ５０２で、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）ではないと判定された場合には、ステップ５０４に進み、クランクカウンタＣＣｕｎｔ＝４（＃３の点火時期算出タイミング）であるか否かを判定する。クランクカウンタＣＣｕｎｔ＝４（＃３の点火時期算出タイミング）であると判定されれば、ステップ５０５に進み、　ｒＣｙｌｏｒｄ（１）＝１、　ｒＣｙｌｏｒｄ（２）＝２、　ｒＣｙｌｏｒｄ（３）＝４、　ｒＣｙｌｏｒｄ（４）＝５、　ｒＣｙｌｏｒｄ（５）＝３に設定することで、燃料カットする気筒の優先順位を＃１、＃２、＃４、＃５、＃３の順に設定する。
【０１０８】
また、上記ステップ５０４で、クランクカウンタＣＣｕｎｔ＝４（＃３の点火時期算出タイミング）ではないと判定された場合には、ステップ５０６に進み、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）であると判定されれば、ステップ５０７に進み、　ｒＣｙｌｏｒｄ（１）＝２、　ｒＣｙｌｏｒｄ（２）＝４、　ｒＣｙｌｏｒｄ（３）＝５、　ｒＣｙｌｏｒｄ（４）＝３、　ｒＣｙｌｏｒｄ（５）＝１に設定することで、燃料カットする気筒の優先順位を＃２、＃４、＃５、＃３、＃１の順に設定する。
【０１０９】
また、上記ステップ５０６で、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）ではないと判定された場合には、ステップ５０８に進み、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）であると判定されれば、ステップ５０９に進み、　ｒＣｙｌｏｒｄ（１）＝４、　ｒＣｙｌｏｒｄ（２）＝５、　ｒＣｙｌｏｒｄ（３）＝３、　ｒＣｙｌｏｒｄ（４）＝１、　ｒＣｙｌｏｒｄ（５）＝２に設定することで、燃料カットする気筒の優先順位を＃４、＃５、＃３、＃１、＃２の順に設定する。
【０１１０】
また、上記ステップ５０８で、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）ではないと判定された場合には、クランクカウンタＣＣｕｎｔ＝１６（＃４の点火時期算出タイミング）と判断して、ステップ５１０に進み、　ｒＣｙｌｏｒｄ（１）＝５、　ｒＣｙｌｏｒｄ（２）＝３、　ｒＣｙｌｏｒｄ（３）＝１、　ｒＣｙｌｏｒｄ（４）＝２、　ｒＣｙｌｏｒｄ（５）＝４に設定することで、燃料カットする気筒の優先順位を＃５、＃３、＃１、＃２、＃４の順に設定する。
【０１１１】
［燃料復帰気筒順序設定］
図１８に示す燃料復帰気筒順序設定プログラム（図１５のステップ４０７）が起動されると、まず、ステップ６０１で、クランクカウンタＣＣｕｎｔのカウント値（クランク回転位置）を読み込んだ後、ステップ６０２に進み、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）であると判定されれば、ステップ６０３に進み、　ｒＣｙｌｏｒｄ（１）＝４、　ｒＣｙｌｏｒｄ（２）＝５、　ｒＣｙｌｏｒｄ（３）＝３、　ｒＣｙｌｏｒｄ（４）＝１、　ｒＣｙｌｏｒｄ（５）＝２に設定することで、燃料復帰する気筒の優先順位を＃４、＃５、＃３、＃１、＃２の順に設定する。
【０１１２】
一方、上記ステップ６０２で、クランクカウンタＣＣｕｎｔ＝８（＃１の点火時期算出タイミング）ではないと判定された場合には、ステップ６０４に進み、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）であると判定されれば、ステップ６０５に進み、　ｒＣｙｌｏｒｄ（１）＝５、　ｒＣｙｌｏｒｄ（２）＝３、　ｒＣｙｌｏｒｄ（３）＝１、　ｒＣｙｌｏｒｄ（４）＝２、　ｒＣｙｌｏｒｄ（５）＝４に設定することで、燃料復帰する気筒の優先順位を＃５、＃３、＃１、＃２、＃４の順に設定する。
【０１１３】
また、上記ステップ６０４で、クランクカウンタＣＣｕｎｔ＝１２（＃２の点火時期算出タイミング）ではないと判定されれば、ステップ６０６に進み、クランクカウンタＣＣｕｎｔ＝１６（＃４の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝１６（＃４の点火時期算出タイミング）であると判定された場合には、ステップ６０７に進み、　ｒＣｙｌｏｒｄ（１）＝３、　ｒＣｙｌｏｒｄ（２）＝１、　ｒＣｙｌｏｒｄ（３）＝２、　ｒＣｙｌｏｒｄ（４）＝４、　ｒＣｙｌｏｒｄ（５）＝５に設定することで、燃料復帰する気筒の優先順位を＃３、＃１、＃２、＃４、＃５の順に設定する。
【０１１４】
また、上記ステップ６０６で、クランクカウンタＣＣｕｎｔ＝１６（＃４の点火時期算出タイミング）ではないと判定されれば、ステップ６０８に進み、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）であるか否かを判定する。その結果、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）であると判定された場合には、ステップ６０９に進み、　ｒＣｙｌｏｒｄ（１）＝１、ｒＣｙｌｏｒｄ（２）＝２、　ｒＣｙｌｏｒｄ（３）＝４、　ｒＣｙｌｏｒｄ（４）＝５、　ｒＣｙｌｏｒｄ（５）＝３に設定することで、燃料復帰する気筒の優先順位を＃１、＃２、＃４、＃５、＃３の順に設定する。
【０１１５】
また、上記ステップ６０８で、クランクカウンタＣＣｕｎｔ＝０（＃５の点火時期算出タイミング）ではないと判定されれば、クランクカウンタＣＣｕｎｔ＝４（＃３の点火時期算出タイミング）と判断して、ステップ６１０に進み、　ｒＣｙｌｏｒｄ（１）＝２、　ｒＣｙｌｏｒｄ（２）＝４、　ｒＣｙｌｏｒｄ（３）＝５、　ｒＣｙｌｏｒｄ（４）＝３、　ｒＣｙｌｏｒｄ（５）＝１に設定することで、燃料復帰する気筒の優先順位を＃２、＃４、＃５、＃３、＃１の順に設定する。
【０１１６】
［シーケンシャル燃料カット処理］
図１９に示すシーケンシャル燃料カット処理プログラム（図１６のステップ４１０）が起動されると、まず、ステップ７０１で、噴射率　ｒＩＲａｔｅから０．２だけ減算した値がトルク比　ｒＴＲａｔｅ以上（　ｒＩＲａｔｅ−０．２≧　ｒＴＲａｔｅ）であるか否かを判定する。もし、　ｒＩＲａｔｅ−０．２＜　ｒＴＲａｔｅと判定されれば、そのまま本プログラムを終了する。
【０１１７】
その後、　ｒＩＲａｔｅ−０．２≧　ｒＴＲａｔｅであると判定されたときに、ステップ７０２に進み、気筒別燃料カット要求　ｒＣＣＲｅｑ｛ｒＣｙｌｏｒｄ（ｎ）｝が燃料復帰を意味する「０」にセットされ、且つ、気筒別吸入燃料量　ｒＩＦｅｌ｛ｒＣｙｌｏｒｄ（ｎ）｝が０となっている　ｒＣｙｌｏｒｄ（ｎ）のうち優先順位の高いものを燃料カット気筒として選択する。これ以降のスタビリティモード（シーケンシャルカットモード）運転中は、燃料噴射量算出タイミングと燃料噴射時期を固定する。
【０１１８】
この後、ステップ７０３に進み、上記ステップ７０２で選択した　ｒＣｙｌｏｒｄ（ｎ）について、気筒別燃料カット要求　ｒＣＣＲｅｑ｛ｒＣｙｌｏｒｄ（ｎ）｝を燃料カットを意味する「１」にセットした後、ステップ７０４に進み、噴射率　ｒＩＲａｔｅを０．２だけ減少させる。
【０１１９】
シーケンシャルカットモードでは、１点火毎にトルク比　ｒＴＲａｔｅ（＝トルク発生率ＴＣＲａｔｅ）を０．１ずつ減少させて、２点火毎にトルク比　ｒＴＲａｔｅを０．２ずつ減少させるので、以上の処理により２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）、燃料カット気筒を１つずつ増加していくシーケンシャルカットを実行することができる。
【０１２０】
［シーケンシャル燃料復帰処理］
図２０に示すシーケンシャル燃料復帰処理プログラム（図１６のステップ４１２）が起動されると、まず、ステップ８０１で、トルク比　ｒＴＲａｔｅが噴射率　ｒＩＲａｔｅ以上（　ｒＴＲａｔｅ≧　ｒＩＲａｔｅ）であるか否かを判定する。その結果、ｒＴＲａｔｅ＜　ｒＩＲａｔｅと判定されれば、そのまま本プログラムを終了する。
【０１２１】
その後、　ｒＴＲａｔｅ≧　ｒＩＲａｔｅであると判定されたときに、ステップ８０２に進み、気筒別燃料カット要求　ｒＣＣＲｅｑ｛ｒＣｙｌｏｒｄ（ｎ）｝が、燃料カットを意味する「１」にセットされている　ｒＣｙｌｏｒｄ（ｎ）のうち優先順位の高いものを燃料復帰気筒として選択する。これ以降のスタビリティモード（シーケンシャル復帰モード）運転中は、燃料噴射量算出タイミングと燃料噴射時期を固定する。
【０１２２】
この後、ステップ８０３に進み、上記ステップ８０２で選択した　ｒＣｙｌｏｒｄ（ｎ）について、気筒別燃料カット要求　ｒＣＣＲｅｑ｛ｒＣｙｌｏｒｄ（ｎ）｝を燃料復帰を意味する「０」にセットした後、ステップ８０４に進み、噴射率　ｒＩＲａｔｅを０．２だけ増加させる。
【０１２３】
シーケンシャル復帰モードでは、１点火毎にトルク比　ｒＴＲａｔｅ（＝トルク発生率ＴＣＲａｔｅ）を０．１ずつ増加させて、２点火毎にトルク比　ｒＴＲａｔｅを０．２ずつ増加させるので、以上の処理により２点火毎に（つまり、通常の燃料噴射順序に対して１気筒ずつ飛ばした順序で）、燃料復帰気筒を１つずつ増加していくシーケンシャル復帰を実行することができる。
【０１２４】
図１７に示す燃料カット気筒順序設定プログラムと、図１８に示す燃料復帰気筒順序設定プログラムと、図１９に示すシーケンシャル燃料カットプログラムと、図２０に示すシーケンシャル燃料復帰プログラムが、特許請求の範囲でいうシーケンシャル制御手段としての役割を果たす。
【０１２５】
［点火時期遅角量算出］
図２１に示す点火時期遅角量算出プログラムは、通常の点火間隔毎に実行され、特許請求の範囲でいう点火時期算出手段としての役割を果たす。本プログラムが起動されると、まず、ステップ９０１で、トルクカットモードＴＣＭｏｄｅ＝１（シーケンシャルカットモード）であるか否かを判定し、シーケンシャルカットモードであれば、ステップ９０２に進み、後述する図２２に示すシーケンシャルカット処理プログラムを実行する。
【０１２６】
この後、ステップ９０３に進み、トルクカットモードＴＣＭｏｄｅ＝３（シーケンシャル復帰モード）であるか否かを判定し、シーケンシャル復帰モードであれば、ステップ９０４に進み、後述する図２３に示すシーケンシャル復帰処理プログラムを実行する。
【０１２７】
そして、次のステップ９０５で、トルクカットモードＴＣＭｏｄｅ＝０又は２（全気筒復帰モード又は全気筒カットモード）であるか否かを判定し、全気筒復帰モード又は全気筒カットモードであれば、ステップ９０６に進み、後述する図２４に示す全気筒復帰又は全気筒カット処理プログラムを実行する。
【０１２８】
この後、ステップ９０７に進み、　ｒＴＣＭｏｄｅ（ｏｌｄ）の値を現在のＴＣＭｏｄｅで更新した後、ステップ９０８に進み、後述する指示トルク　ｒＲＴｒｑと推定トルクｒＥＴｒｑと燃料カット気筒数　ｒＣＬとを用いて、点火時期遅角量を算出するためのトルク比　ｒＴＲａｔｅを次式により算出する。
ｒＴＲａｔｅ＝　ｒＲＴｒｑ／｛　ｒＥＴｒｑ×（５−　ｒＣＬ）／５｝
【０１２９】
そして、次のステップ９０９で、図２５に示す前回値更新処理プログラムを実行した後、ステップ９１０に進み、図２６に示す点火時期遅角量ＴＣＲｅｔｒｄのマップを検索して、トルク比　ｒＴＲａｔｅに応じた点火時期遅角量ＴＣＲｅｔｒｄを求める。
【０１３０】
［シーケンシャルカット処理］
図２２に示すシーケンシャルカット処理プログラム（図２１のステップ９０２）が起動されると、まず、ステップ１００１で、　ｒＴＣＭｏｄｅ（Ｏｌｄ）＝０（前回が全気筒復帰モード）であるか否かを判定する。前回が全気筒復帰モードと判定された場合、つまり、シーケンシャルカットモードに切り換え後の初回の場合には、ステップ１００２に進み、スムージングカウンタＳＣｎｔのカウンタ値を最大値Ｓｍａｘ（例えば３）にセットする。
【０１３１】
この後、ステップ１００３に進み、３点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ３）の初期値、２点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ２）の初期値及び１点火前の指示トルクｒＲＴｒｑ（ｏｌｄ）の初期値として、全て現在の指示図示トルクＲＩＴｒｑをセットする。これら　ｒＲＴｒｑ（ｏｌｄ３）、　ｒＲＴｒｑ（ｏｌｄ２）及び　ｒＲＴｒｑ（ｏｌｄ）の値は、後述する図２５に示す前回値更新処理プログラムで更新される。
【０１３２】
この後、ステップ１００４に進み、３点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ３）の初期値、２点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ２）の初期値及び１点火前の推定トルクｒＥＴｒｑ（ｏｌｄ）の初期値として、全て現在の推定図示トルクＥＩＴｒｑをセットする。これら　ｒＥＴｒｑ（ｏｌｄ３）、　ｒＥＴｒｑ（ｏｌｄ２）及び　ｒＥＴｒｑ（ｏｌｄ）の値は、後述する図２５に示す前回値更新処理プログラムで更新される。
【０１３３】
一方、上記ステップ１００１で前回が全気筒復帰モードではないと判定された場合、つまり、シーケンシャルカットモードに切り換え後の２回目以降は、ステップ１００５に進み、スムージングカウンタＳＣｎｔのカウンタ値を「１」だけデクリメントする（但し、ＳＣｎｔ＝０を最小値とする）。
【０１３４】
この後、ステップ１００６に進み、例えばシーケンシャルカット時の燃料噴射量算出タイミングが点火時期算出タイミングの２点火前の場合は、点火時期遅角量の算出に用いる指示トルク　ｒＲＴｒｑを次式により算出する。
ｒＲＴｒｑ＝　ｒＲＴｒｑ（ｏｌｄ２）＋｛　ｒＲＩＴｒｑ−　ｒＲＴｒｑ（ｏｌｄ２）｝×ＳＣｎｔ／３
【０１３５】
これにより、全気筒復帰モード（レスポンスモード）からシーケンシャルカットモード（スタビリティモード）に切り換わる際には、スムージングカウンタＳＣｎｔのカウンタ値を最大値Ｓｍａｘ（例えば３）から０まで「１」ずつデクリメントするため、上式により点火時期遅角量の算出に用いる指示トルク　ｒＲＴｒｑが、最新の指示図示トルク　ｒＲＩＴｒｑから２点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ２）まで徐々に変化し、その後、スタビリティモード中は、スムージングカウンタＳＣｎｔのカウンタ値を０に維持するため、上式により点火時期遅角量の算出に用いる指示トルク　ｒＲＴｒｑが２点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ２）、つまり、燃料噴射量算出に用いた指示トルクに維持される。このステップ１００６の処理が特許請求の範囲でいう指示トルク徐変手段としての役割を果たす。
【０１３６】
この後、ステップ１００７に進み、点火時期遅角量の算出に用いる推定トルクｒＥＴｒｑを２点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ２）にセットした後、ステップ１００８に進み、点火時期遅角量の算出に用いる燃料カット気筒数　ｒＣＬを１点火前の燃料カット気筒数　ｒＣＬ（ｏｌｄ）にセットする。
【０１３７】
［シーケンシャル復帰処理］
図２３に示すシーケンシャル復帰処理プログラム（図２１のステップ９０４）が起動されると、ステップ１１０１で、例えばシーケンシャル復帰時の燃料噴射量算出タイミングが点火時期算出タイミングの３点火前の場合は、点火時期遅角量の算出に用いる指示トルク　ｒＲＴｒｑを３点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ３）、つまり燃料噴射量算出に用いた指示トルクにセットし、点火時期遅角量の算出に用いる推定トルク　ｒＥＴｒｑを３点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ３）にセットすると共に、点火時期遅角量の算出に用いる燃料カット気筒数　ｒＣＬを１点火前の燃料カット気筒数　ｒＣＬ（ｏｌｄ）にセットする。
【０１３８】
［全気筒復帰又は全気筒カット処理］
図２４に示す全気筒復帰又は全気筒カット処理プログラム（図２１のステップ９０６）が起動されると、ステップ１２０１で、点火時期遅角量の算出に用いる指示トルク　ｒＲＴｒｑを現在の指示図示トルクＲＩＴｒｑにセットし、点火時期遅角量の算出に用いる推定トルク　ｒＥＴｒｑを現在の推定図示トルクＥＩＴｒｑにセットすると共に、点火時期遅角量の算出に用いる燃料カット気筒数　ｒＣＬを現在の燃料カット気筒数ＦＣＬにセットする。
【０１３９】
［前回値更新処理］
図２５に示す前回値更新処理プログラム（図２１のステップ９０９）が起動されると、まず、ステップ１３０１で、３点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ３）を２点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ２）で更新し、２点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ２）を１点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ）で更新すると共に、１点火前の指示トルク　ｒＲＴｒｑ（ｏｌｄ）を現在の指示図示トルクＲＩＴｒｑで更新する。
【０１４０】
この後、ステップ１３０２に進み、３点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ３）を２点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ２）で更新し、２点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ２）を１点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ）で更新すると共に、１点火前の推定トルク　ｒＥＴｒｑ（ｏｌｄ１）を現在の推定図示トルクＥＩＴｒｑで更新する。
【０１４１】
この後、ステップ１３０３に進み、燃料カット気筒数　ｒＣＬを現在の燃料カット気筒数ＦＣＬで更新した後、本プログラムを終了する。
【０１４２】
以上説明した本実施形態によれば、トルク制御の応答性を優先するレスポンスモード（全気筒カットモードと全気筒復帰モード）では、燃料噴射量算出タイミングで、その時点の最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングで、その時点の最新の指示トルクに基づいて点火時期を算出するようにしたので、指示トルクの変化に対して応答性の良いトルク制御を行うことができる。
【０１４３】
しかし、トルク制御の安定性を優先するスタビリティモード（シーケンシャルカットモードとシーケンシャル復帰モード）で、レスポンスモードと同じように、燃料噴射量の算出時と点火時期の算出時に、それぞれ最新の指示トルクを用いるようにすると、燃料噴射量算出に用いる指示トルク値と点火時期算出に用いる指示トルク値とが異なってくるため、図２７のシミュレーション結果に示すように、指示トルクに対して気筒別総合推定トルク（出力トルク）がばらついて、不安定なトルク制御になってしまうおそれがある。
【０１４４】
そこで、本実施形態では、スタビリティモードでは、燃料噴射量算出タイミングで、その時点の最新の指示トルクに基づいて燃料噴射量を算出し、その後の点火時期算出タイミングでは、その点火時期算出タイミングにおける指示トルクよりも前に算出された過去の指示トルク（例えば、直前の燃料噴射量算出タイミングにおける指示トルク）に基づいて点火時期を算出するようにしたので、燃料噴射量算出に用いる指示トルクと点火時期算出に用いる指示トルクとの偏差を小さく（又は０に）することができ、図２８のシミュレーション結果に示すように、指示トルクに対して気筒別総合推定トルク（出力トルク）のばらつきを小さくすることができ、安定したトルク制御を実現することができる。
【０１４５】
尚、点火時期の算出に用いる指示トルクは、燃料噴射量算出タイミングにおける指示トルクに限定されず、点火時期算出タイミングにおける指示トルクよりも前に算出された過去の指示トルクであれば、燃料噴射量算出タイミングにおける指示トルクの前後の指示トルクを用いるようにしても良い。
【０１４６】
スタビリティモードでは、過去の指示トルクに基づいて点火時期を算出するため、図２８に示すように、指示トルクに対して気筒別総合推定トルク（出力トルク）の応答性が低下するおそれがあるが、本実施形態では、スタビリティモード運転中に、エンジン１１の将来の回転速度を予測し、その将来回転速度に基づいて指示トルクを算出するようにしたので、エンジン１１の将来の回転速度の挙動を考慮に入れた指示トルクを算出することができ、過去の指示トルクに基づいて点火時期を算出する場合でも、トルク制御の応答性を向上することができる。
【０１４７】
また、将来回転速度は、エンジン１１の軸トルクを積分して求めることができるが、積分を用いると、ＥＣＵ１７の演算負荷が大きくなる。その点、本実施形態では、クランク角センサ２３で検出した回転速度と、吸入空気量に基づいて算出した軸トルクとを用いて将来回転速度を算出するようにしたので、最新の回転速度を基に将来回転速度を精度良く算出することができると共に、積分が不要になり、ＥＣＵ２７の演算負荷を小さくすることができる。
【０１４８】
しかしながら、将来回転速度の算出方法は、適宜変更しても良く、エンジン１１の軸トルクを積分して将来回転速度を求めるようにしても良い。
また、必ずしも将来回転速度に基づいて指示トルクを算出する必要はなく、現在の回転速度に基づいて指示トルクを算出しても良い等、指示トルクの算出方法を適宜変更しても良い。
【０１４９】
更に、本実施形態では、レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクを徐々に変化させるようにしたので、レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクが急変することを防止することができ、出力トルクの急変を防止してドライバビリティの悪化を防止することができる。
【０１５０】
また、本実施形態では、全気筒数がＹ気筒（但しＹは３以上の整数）のエンジン１１で各気筒の通常の燃料噴射順序に対してｎサイクル（但しｎは０以上の整数）おきにＸ気筒（但しＸは１以上の整数）ずつ飛ばした順序でシーケンシャルカット又はシーケンシャル復帰を実行する場合に、トルク発生率を変化させる際の所定周期を通常の点火間隔（＝７２０℃Ａ／Ｙ）に設定し、所定変化量を１／Ｙ／（Ｘ＋１＋ｎ×Ｙ）に設定するようにしたので、所望のシーケンシャルカット（又はシーケンシャル復帰）となるような割合でトルク発生率を減少（又は増加）させることができ、このように変化させたトルク発生率に応じて燃料カット気筒数を増加（又は減少）させれることで、指示トルク（トルク発生率）を精度良く反映したシーケンシャルカットやシーケンシャル復帰を実現することができる。
【０１５１】
また、本実施形態では、シーケンシャルカットやシーケンシャル復帰の実行中に燃料噴射量算出タイミングと燃料噴射時期を固定するようにしたので、燃料カット順序や燃料復帰順序の乱れてを防止することができ、所定通りの順序でシーケンシャルカットやシーケンシャル復帰を確実に実行することができると共に、事前に燃料カット又は燃料復帰が間に合う気筒を容易に判定することができ、次に燃料カット又は燃料復帰する気筒を容易に特定することができる。
【０１５２】
尚、本発明の適用範囲は５気筒のエンジンに限定されず、４気筒以下又は６気筒以上の気筒数のエンジンに本発明を適用しても良い。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるエンジン制御システム全体の概略構成図
【図２】シーケンシャルカット及びシーケンシャル復帰を説明するためのタイムチャート
【図３】燃料噴射時期と点火時期との関係を説明するためのタイムチャート
【図４】（ａ）はレスポンスモードにおいて燃料噴射量算出に用いる指示トルクと点火時期算出に用いる指示トルクとの関係を説明するためのタイムチャート、（ｂ）はスタビリティモードにおいて燃料噴射量算出に用いる指示トルクと点火時期算出に用いる指示トルクとの関係を説明するためのタイムチャート
【図５】将来回転速度の算出方法を説明するためのタイムチャート
【図６】レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクを最新の指示トルクと過去の指示トルクとの間で瞬時に切り換える場合を示すタイムチャート
【図７】レスポンスモードとスタビリティモードとを切り換える際に、点火時期算出に用いる指示トルクを徐々に変化させる場合を示すタイムチャート
【図８】
（ａ）はシーケンシャルカットモード時のトルク発生率と燃料カット気筒数との関係を示す図、（ｂ）はシーケンシャル復帰モード時のトルク発生率と燃料復帰気筒数との関係を示す図
【図９】
トルク発生率に応じたシーケンシャルカット及びシーケンシャル復帰を説明するためのタイムチャート
【図１０】
（ａ）〜（ｃ）はトルク発生率変化量の算出結果が無限小数になる場合の対処方法を説明するための図
【図１１】
（ａ）は燃料噴射量算出タイミングと点火時期算出タイミングとの関係の一例を示す図、（ｂ）はクランクカウンタのカウント値と各気筒の各行程との関係を示す図
【図１２】
将来回転速度算出プログラムの処理の流れを示すフローチャート
【図１３】
トルク発生率算出プログラムの処理の流れを示すフローチャート
【図１４】
指示図示トルク算出プログラムの処理の流れを示すフローチャート
【図１５】
燃料カット・復帰決定プログラムの処理の流れを示すフローチャート（その１）
【図１６】
燃料カット・復帰決定プログラムの処理の流れを示すフローチャート（その２）
【図１７】
燃料カット気筒順序設定プログラムの処理の流れを示すフローチャート
【図１８】燃料復帰気筒順序設定プログラムの処理の流れを示すフローチャート
【図１９】シーケンシャル燃料カット処理プログラムの処理の流れを示すフローチャート
【図２０】シーケンシャル燃料復帰処理プログラムの処理の流れを示すフローチャート
【図２１】点火時期遅角量算出プログラムの処理の流れを示すフローチャート
【図２２】シーケンシャルカット処理プログラムの処理の流れを示すフローチャート
【図２３】シーケンシャル復帰処理プログラムの処理の流れを示すフローチャート
【図２４】全気筒復帰又は全気筒カット処理プログラムの処理の流れを示すフローチャート
【図２５】前回値更新処理プログラムの処理の流れを示すフローチャート
【図２６】点火時期遅角量のマップを概念的に示す図
【図２７】最新の指示トルクに基づいて点火時期を算出した場合のシミュレーション結果を示すタイムチャート
【図２８】過去の指示トルクに基づいて点火時期を算出した場合のシミュレーション結果を示すタイムチャート
【符号の説明】
１１…エンジン（内燃機関）、１２…吸気管、１４…エアフローメータ、１５…スロットルバルブ、２０…燃料噴射弁、２１…点火プラグ、２３…クランク角センサ２３（回転速度検出手段）、２４…排気管、２７…ＥＣＵ（指示トルク算出手段，燃料噴射量算出手段，点火時期算出手段，将来回転速度予測手段，軸トルク算出手段，指示トルク徐変手段，シーケンシャル制御手段）。
【図１】
2004003397.tif 000003
【図２】
2004003397.tif 000004
【図３】
2004003397.tif 000005
【図４】
2004003397.tif 000006
【図５】
2004003397.tif 000007
【図６】
2004003397.tif 000008
【図７】
2004003397.tif 000009
【図８】
2004003397.tif 000010
【図９】
2004003397.tif 000011
【図１０】
2004003397.tif 000012
【図１１】
2004003397.tif 000013
【図１２】
2004003397.tif 000014
【図１３】
2004003397.tif 000015
【図１４】
2004003397.tif 000016
【図１５】
2004003397.tif 000017
【図１６】
2004003397.tif 000018
【図１７】
2004003397.tif 000019
【図１８】
2004003397.tif 000020
【図１９】
2004003397.tif 000021
【図２０】
2004003397.tif 000022
【図２１】
2004003397.tif 000023
【図２２】
2004003397.tif 000024
【図２３】
2004003397.tif 000025
【図２４】
2004003397.tif 000026
【図２５】
2004003397.tif 000027
【図２６】
2004003397.tif 000028
【図２７】
2004003397.tif 000029
【図２８】
2004003397.tif 000030