(57)【特許請求の範囲】
【請求項１】
複数の気筒からなり、排気通路に排気ガス浄化用の触媒を備えるとともに、該触媒が未活性状態にある時に、点火時期を遅角させることにより排気温度を上昇させて上記触媒の活性化を促進するようにしたエンジンの制御装置であって、
上記エンジンの燃焼状態を制御する燃焼制御手段と、
上記エンジンの燃焼変動を検出する燃焼変動検出手段と、
上記触媒が未活性状態にあって、点火時期を遅角させることにより排気温度を上昇させて上記触媒の活性化を促進している時に、上記エンジンの燃焼変動が所定値以下となるよう、上記燃焼制御手段による燃焼制御の制御量に対し変動抑制補正量を設定する燃焼変動抑制補正手段と、
特定気筒の連続失火を検出する特定気筒異常検出手段と、
該特定気筒異常検出手段により特定気筒の連続失火が検出された時、上記燃焼変動抑制補正手段の作動を停止する停止手段とを備えたことを特徴とするエンジンの制御装置。
【請求項２】
上記特定気筒異常検出手段は、１気筒の連続失火を検出する請求項１記載のエンジンの制御装置。
【請求項３】
上記特定気筒異常検出手段は、共通の点火コイルにより点火プラグが通電制御される複数の気筒の連続失火を検出する請求項１または２記載のエンジンの制御装置。
【請求項４】
上記燃焼変動抑制補正手段は、点火時期制御手段および空燃比制御手段の内の少なくとも一つである請求項１，２または３記載のエンジンの制御装置。
【請求項５】
上記燃焼変動検出手段は、気筒毎に燃焼変動を検出し、上記燃焼変動抑制補正手段は、気筒毎に検出された燃焼変動に基づき、全気筒について上記変動抑制補正量を設定する請求項１，２，３または４記載のエンジンの制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、排気通路に排気ガス浄化用の触媒を備え、冷間始動時に例えば点火時期を大幅に遅角させて、後燃えによる排気温度上昇によって触媒の活性化を促進するとともに、その間、ラフネス制御によって燃焼変動を抑制するようにしたエンジンの制御装置に関するものである。
【０００２】
【従来の技術】
自動車用エンジンは、一般に、排気通路に排気ガス浄化用の触媒を備えている。そして、その触媒は、冷間始動時等、触媒温度が低い時には、触媒活性が低く、排気ガス浄化性能を十分には発揮することができない。したがって、排気通路に排気ガス浄化用の触媒を備えたエンジンにおいては、冷間始動時すなわちエンジンが冷機状態から始動する時に、点火時期を大幅に遅角させて、後燃えにより排気温度を急速上昇させ、触媒の活性化を促進する必要がある。しかしながら、冷間始動時にそのように触媒活性化促進のため点火時期を大幅に遅角させると、エンジンの燃焼性が低下し、燃料であるガソリンの性状によっては、特に、重質成分の多い場合等、燃焼状態が極端に不安定となる。そこで、従来から、例えば特開平８−２１８９９５号公報に記載されているように、アイドル時等所定の低出力領域では、触媒温度が低い時、点火時期を遅角補正して燃焼性を低下させるとともに、エンジンのトルク変動が所定の範囲を越えた場合に、その遅角補正の補正量を小さめに修正して、エンジンの燃焼変動（ラフネス）を抑制するといった制御（ラフネス制御）を行うことが知られている。
【０００３】
【発明が解決しようとする課題】
上記のように冷間始動時に触媒活性化促進のため点火時期を大幅に遅角させる等の燃焼低下制御を行うとともに、アイドル時等の所定の低出力領域で、エンジンの燃焼変動を抑制するよう点火時期等の補正によるラフネス制御を行う場合に、ハイテンションコード抜けや点火コイルの断線等の点火系の故障により、特定気筒が連続的に失火している状態で、ラフネス制御により点火時期等が燃焼性低下側に補正されると、失火によってもともと生ガスが多量に排出されている状況で、他の失火していない気筒まで燃焼性が低下することになるため、エンストしたり、後燃えによる排気温度の上昇が過大となり、触媒が過熱状態となってしまう可能性がある。
【０００４】
そこで、ハイテンションコード抜けや点火コイルの断線等により特定気筒が連続的に失火している状態でラフネス制御を行うことによるエンストや触媒の過熱を防止することが課題であり、この課題を解決することが本発明の目的である。
【０００５】
【課題を解決するための手段】
本発明は、ハイテンションコード抜けや点火コイルの断線等により特定気筒が連続的に失火し、もともと生ガスが多量に排出されている状況で、ラフネス制御が実行され、点火時期等が燃焼性低下側に補正されると、上述のようにエンストしたり、触媒が過熱状態となる可能性があるとの知見を得たことによるものであって、そのような状況におけるエンストや触媒の過熱を防止することを課題として、次のとおりエンジンの制御装置を構成したものである。
【０００６】
すなわち、請求項１に係る発明は、複数の気筒からなり、排気通路に排気ガス浄化用の触媒を備えるとともに、該触媒が未活性状態にある時に、点火時期を遅角させることにより排気温度を上昇させて上記触媒の活性化を促進するようにしたエンジンの制御装置であって、上記エンジンの燃焼状態を制御する燃焼制御手段と、上記エンジンの燃焼変動を検出する燃焼変動検出手段と、上記触媒が未活性状態にあって、点火時期を遅角させることにより排気温度を上昇させて上記触媒の活性化を促進している時に、上記エンジンの燃焼変動が所定値以下となるよう、上記燃焼制御手段による燃焼制御の制御量に対し変動抑制補正量を設定する燃焼変動抑制補正手段と、特定気筒の連続失火を検出する特定気筒異常検出手段と、該特定気筒異常検出手段により特定気筒の連続失火が検出された時、上記燃焼変動抑制補正手段の作動を停止する停止手段とを備えたことを特徴とする。この場合、冷間始動時等、排気浄化用の触媒が未活性状態にある時に、エンジンの燃焼性が低下し、後燃えによって排気温度が上昇し、触媒の活性化が促進される。そして、その間、エンジンの燃焼変動が所定値以下となるよう変動抑制補正量を設定して燃焼制御の制御量が補正するラフネス制御が行われ、それによって燃焼変動（ラフネス）が抑制されるとともに、吸入空気量の増量補正によってエンジン出力の低下が抑制される。また、特定気筒の連続失火が検出されると、ラフネス制御が停止され、それにより、失火により生ガスが多量に排出されている状況で、燃焼性低下側のラフネス制御が実行されることによるエンストや触媒が過熱が防止される。
【０００７】
また、請求項２に係る発明は、上記請求項１に係るエンジンの制御装置において、上記特定気筒異常検出手段が、１気筒の連続失火を検出するというものである。この場合、１気筒の連続失火によりが検出されると、ラフネス制御が停止され、それにより、エンストや触媒が過熱が防止される。
【０００８】
また、請求項３に係る発明は、上記請求項１または２に係るエンジンの制御装置において、上記特定気筒異常検出手段が、共通の点火コイルにより点火プラグが通電制御される複数の気筒の連続失火を検出するというものである。この場合、点火コイルを共有する複数の気筒の失火（対向失火）が検出されると、ラフネス制御が停止され、それにより、エンストや触媒が過熱が防止される。
【０００９】
また、請求項４に係る発明は、上記請求項１，２または３に係るエンジンの制御装置において、上記燃焼変動抑制補正手段が、点火時期制御手段および空燃比制御手段の内の少なくとも一つであるというものである。燃焼変動抑制のための補正は、このようにして点火時期制御あるいは空燃比制御のいずれかによって行うことができ、また、点火時期制御手段および空燃比制御手段を併用して行うこともできる。
【００１０】
また、請求項５に係る発明は、上記請求項１，２，３または４に係るエンジンの制御装置において、上記燃焼変動検出手段が、気筒毎に燃焼変動を検出し、上記燃焼変動抑制補正手段が、気筒毎に検出された燃焼変動に基づき、全気筒について上記変動抑制補正量を設定するというものである。このようにして燃焼変動の検出は気筒毎に行い、変動抑制のために補正は全気筒に一律に行うことにより、気筒間の出力トルクの差を小さくでき、トルク差に起因する回転変動によって点火時期等が発散状態となり制御不能となるのを防止できる。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１２】
図１〜図１８は、実施の形態の一例に係るもので、図１はエンジンの全体システム図、図２〜図７はラフネス制御（点火時期演算）のフローチャート、図８はＯＢＤ失火検出値演算のフローチャート、図９はラフネス制御に係るラフネス補正値リセットフラグ設定のフローチャート、図１０はラフネス制御に係るシャッタバルブ開閉判定のフローチャート、図１１はラフネス制御に係る始動直後禁止タイマ設定のフローチャート、図１２はラフネス制御に係るマスターバッグ負圧リカバリー制御のタイムチャート、図１３はラフネス制御に係るブレーキ負圧確保フラグ設定のフローチャート、図１４はラフネス制御に係るブレーキ負圧確保制御実行タイマ設定のフローチャート、図１５はラフネス制御に係るブレーキ負圧確保制御実行タイマ設定フラグ設定のフローチャート、図１６はラフネス制御に係る空燃比フィードバック制御の制御ゲイン変更のフローチャート、図１７はラフネス制御に係る水温補正進角値設定のマップ、図１８はラフネス制御に係るＩＳＣ流量制御のフローチャートである。
【００１３】
図１に示すエンジン１は、ガソリンを燃料とする直列４気筒型の４サイクルエンジンである。このエンジン１は、詳細な構造は図示していないが、４つの気筒２（１つのみ図示）を備えたシリンダブロック３および該シリンダブロック３の上面に組付けられたシリンダヘッド４を有している。そして、各気筒２内にはそれぞれ、往復動可能にピストン５が嵌入され、ピストン５とシリンダヘッド４とによって燃焼室６が画成されている。また、各燃料室６の天井部にはそれぞれ点火プラグ７が臨設され、これら点火プラグ７は、点火時期の電子制御が可能なイグナイタ等を含む点火回路８に接続されている。
【００１４】
また、エンジン１には、各気筒２の燃焼室６にエア（吸気）を供給するために、大気中からエアを取り入れる単一の共通吸気通路９と、該共通吸気通路９からエアを受け入れる各気筒２毎の独立吸気通路１０とが設けられている。そして、共通吸気通路９の上流端は、エア中のダストを除去するエアクリーナ１１に接続され、下流端はエアの流れを安定させるサージタンク１５に接続されている。また、各独立吸気通路１０の上流端はそれぞれサージタンク１５に接続され、下流端はそれぞれ吸気弁１２を介して燃焼室６に連通されている。
【００１５】
そして、共通吸気通路９には、エア流れ方向の上流側（図１における右端側）から順に、エアの流量（エンジン１に実際に吸入される吸入空気量）を検出するホットワイヤ式のエアフローセンサ１３と、アクセルペダル（図示せず）の踏み込み量に応じて開閉されて共通吸気通路９を絞るスロットル弁１４とが設けられている。また、各独立吸気通路１０にはそれぞれ、後述するＥＣＵ（エンジン・コントロール・ユニット）３５からの燃料噴射信号（噴射パルス）を受けて燃料を噴射するインジェクタ（燃料噴射弁）１６が設けられている。また、エアクリーナ１１には、吸気温（エアの温度）を検出する吸気温センサ１７が付設されている。
【００１６】
各独立吸気通路１０は、それぞれの下流端近傍で図示しない第１吸気通路（吸気ポート）と第２吸気通路１０ａ（吸気ポート）とに分岐され、各独立吸気通路１０のこれら第１吸気通路と第２吸気通路１０ａの分岐部の上流で、インジェクタ１６の直上流には、アクチュエータ１８ａによって開閉駆動される吸気流動強化のための開閉弁（シャッタバルブ）１８が配設されている。この開閉弁１８は、閉弁時にインジェクタ１６側に吸気を流通させる間隙部が形成されるよう、閉弁時における上端部側が切欠かれている。開閉弁１８が閉じられると、エアは実質的にこの切欠かれた切欠き部から燃焼室６に供給されて、燃焼室６内に強いタンブルが生成され、混合気の燃焼性が高められる。
【００１７】
共通吸気通路９の、スロットル弁１４より上流側の部分と下流側の部分とは、ＩＳＣ（Idle Speed Control）バイパス通路２０により接続され、該ＩＳＣバイパス通路２０には、アクチュエータ２１ａにより開閉駆動されて該ＩＳＣバイパス通路２０を開閉するＩＳＣバルブ２１が設けられている。このＩＳＣバルブ２１は、エンジン１のアイドル回転数が制御されるよう開度を制御するものである。また、共通吸気通路９には、スロットル弁１４の近傍に、スロットル弁１４の全閉状態を検出するアイドルスイッチ２２と、スロットル弁１４の開度（スロットル開度）を検出するスロットル開度センサ２３が設けられている。
【００１８】
さらに、エンジン１には、排気ガスを大気中に排出する排気通路２５が設けられ、この排気通路２５は、排気ガスの流れ方向の上流端側（図１における右端側）が４つの通路部分に分岐され、それら分岐された通路部分が、各対応する気筒の燃焼室６にそれぞれ排気弁２４を介して連通されている。そして、分岐部下流の排気通路２５には、排気ガスの流れ方向上流側から順に、排気ガス中の酸素濃度を検出するＯ２センサ２６と、排気ガスを浄化する触媒コンバータ２７が配設されている。Ｏ２センサ２６は、排気ガス中の酸素濃度に基づいて燃焼室６内の空燃比を検出するもので、λＯ２センサ，リニアＯ２センサ等が使用される。λＯ２センサは、理論空燃比（λ＝１）付近で出力が急変することにより、実質的に空燃比が理論空燃比より高いか低いかを検出できるＯ２センサであり、リニアＯ２センサは、基本的にはＯ２濃度をリニアに検出でき、とくに理論空燃比付近でＯ２濃度の検出精度が高くなる（すなわち、Ｏ２濃度の変化に対する出力変化が大きい）Ｏ２センサである。また、触媒コンバータ２７は、排気ガス中の炭化水素（ＨＣ）と一酸化炭素（ＣＯ）と窒素酸化物（ＮＯｘ）とを同時に浄化することができる三元触媒を排気ガス浄化用の触媒として用いたものであり、リーン状態でもＮＯｘを浄化する性能を有するものが用いられる。
【００１９】
また、エンジン１には、電磁ピックアップ等からなるクランク角センサ３０が設けられている。このクランク角センサ３０は、図示されていないクランク軸の端部に取り付けられた被検出用プレート３１の外周に対応する位置に配置され、クランク軸の回転に伴って被検出用プレート３１が回転した時に、その外周部の４個の突起部３１ａの通過に伴ってパルス信号を出力するものである。また、エンジン１には、ウォータジャケット内に冷却水の温度（エンジン水温）を検出する水温センサ３２が設けられている。
【００２０】
そして、エンジン１には、各種制御を行うため、マイクロコンピュータ等からなるＥＣＵ（エンジン・コントロール・ユニット）３５が設けられている。このＥＣＵ３５は、エアフローセンサ１３，吸気温センサ１７，アイドルスイッチ２２，スロットル開度センサ２３，Ｏ２センサ２６，クランク角センサ３０，水温センサ３２等の各種出力信号が入力される。他方、ＥＣＵ３５からは、インジェクタ１６に対して燃料噴射制御のための信号（パルス信号）が出力され、点火回路８に対して点火時期制御のための信号が出力され、ＩＳＣバルブ２１のアクチュエータ２１ａに対しＩＳＣ制御のための信号（デューティー信号）が出力され、シャッタバルブ１８のアクチュエータ１８ａに対しタンブル制御のための信号が出力される。
【００２１】
ＥＣＵ３５によって行う制御の概要は次のとおりである。
【００２２】
すなわち、タンブル制御では、所定の低出力領域（低負荷・低回転領域）において各気筒２毎のシャッタバルブ１８をそれぞれのアクチュエータ１８ａを制御することにより閉弁させる。シャッタバルブ１８が閉じられると、エアが実質的に切欠き部を介して燃焼室６に供給され、燃焼室６内に強いタンブルが形成されて、吸気流動が強化され、それにより混合気の燃焼性が大幅に向上する。また、シャッタバルブ１８の切欠き部を介して燃焼室６に流入する高速のエアによって、インジェクタ１６から噴射された燃料の気化・霧化が促進され、それによっても混合気の燃焼性が向上する。他方、エンジン１の運転状態が上記所定の低出力領域に入っていない時は、シャッタバルブ１８は開かれ、燃焼室６に十分な量のエアが供給され、吸気充填効率ひいてはエンジン出力が高められる。
【００２３】
また、燃料噴射の制御では、基本的には、エアフローセンサ１３によって検出される吸入空気量に基づいて、各燃焼室６に供給される混合気の空燃比が所定の目標空燃比（例えば、λ＝１、Ａ／Ｆ＝１４.７）となるようインジェクタ１６から噴射する燃料噴射量を制御する。そして、所定の運転領域では、Ｏ２センサ２６によって検出される排気ガス中のＯ２濃度すなわち実際の空燃比の、目標空燃比に対する偏差に基づく燃料噴射量の補正によって、空燃比のフィードバック制御を行う。なお、後述のように、ラフネス制御の実行中は、空燃比フィードバック制御の制御ゲインが小さくされる。
【００２４】
ＩＳＣ制御では、基本的には、アイドル時等所定の低出力領域において、水温センサ３２によって検出されるエンジン水温に基づいてベース流量を設定し、また、エンジン水温に基づいて目標回転数を設定し、クランク角センサ３０の出力より算出したエンジン回転数の、目標回転数に対する偏差に基づくフィードバック補正を行って、エンジン回転数が目標回転数に収束するよう、ＩＳＣバルブ２１をデューティー制御して、ＩＳＣバイパス通路２０を流れるバイパスエアの流量を制御する。
【００２５】
点火時期の制御では、基本的には、各気筒毎に、エンジン回転数と吸気充填効率とのマップを用いて、ＭＢＴ、すなわちエンジン１が最大トルクを出力する点火時期（例えば、上死点前１０゜）よりも若干遅角側に基本点火時期を設定する。この基本点火時期は、アイドル時と非アイドル時（オフアイドル時）とで、それぞれの運転状態に適するように個別に設定されるものである。そして、アイドル時には、エンジン回転数（アイドル回転数）を目標アイドル回転数に収束させるよう、点火時期のフィードバック制御が行われる。すなわち、エンジン水温（エンジン温度）に応じて、エンジン温度の上昇に伴いリニアに低下する特性で目標アイドル回転数が設定され、アイドル時には、エンジン回転数（アイドル回転数）の目標アイドル回転数に対する偏差に応じて、遅角方向あるいは進角方向のフィードバック補正量が設定される。
【００２６】
そして、冷機状態からの始動時、すなわち冷間始動時には、燃焼性を低下させ、後燃えにより排気温度を上昇させて、触媒コンバータ２７の触媒の活性化を促進するよう、点火時期を大幅に（例えば、１５゜ＣＡ）遅角させる補正量（水温進角補正量）を設定し、また、その際、ガソリンの性状によっては、特に、重質成分の多い場合等、燃焼状態が不安定になり、燃焼変動（トルク変動）すなわちラフネスが生じ、エンジン１の円滑な運転が損なわれる場合があるため、このラフネスを抑制するための制御（ラフネス制御）として、上記触媒活性化促進のための遅角量をトルク変動を抑制する方向に補正したラフネス補正量を設定する。なお、この場合のエンジンのトルク変動の判定には、後述のように、ＯＢＤ失火検出値（角加速度変動値）を利用している。
【００２７】
かくして、クランク角センサ３０からの信号に基づいて、各気筒毎に点火時期になったか否かを判定し、点火時期になった時点で、点火回路８をして点火プラグ７に通電させ、各気筒毎に混合気を着火・燃焼させる。
【００２８】
以下、図２〜図１１，図１３〜図１６および図１８に示すフローチャートに基づき、また、図１２および図１７を参照して、上記ラフネス制御の具体的な制御方法を説明する。
【００２９】
（点火時期演算）
上記ラフネス制御は点火時期の制御によるもので、その処理フローは図２〜図７に示すとおりであり、スタートすると、まず、ステップＳ１０１で、ＯＢＤの間欠／連続失火用の失火検出値ｄａｃ（i）および対向失火用の失火検出値ｄａｃ７ｃ（ｉ）を入力する。これらＯＢＤ失火検出値ｄａｃ（i），ｄａｃ７ｃ（ｉ）は、後述するように図８に示す公知のフローによって算出されるものである。
【００３０】
そして、ＯＢＤ連続／間欠あるいは対向の完全失火と判定した場合はラフネス制御を禁止するので、そのために、ステップＳ１０２で、Ｃｅ（吸気充填効率）とＮｅ（エンジン回転数）のマップから、間欠／連続失火用のＯＢＤ失火判定しいき値をサーチし、ステップＳ１０３で、同じく、ＣｅとＮｅのマップから、対向失火用のＯＢＤ失火判定しきい値をサーチする。
【００３１】
次に、ラフネス判定のしきい値ということで、ステップＳ１０４で、まず、ＣｅとＮｅのマップから、安定燃焼限界に相当するアドバンス側のしきい値（上限しきい値）をサーチし、次いで、ステップＳ１０５でリタード側のしきい値（下限しきい値）として、０（ゼロ）を入れる。
【００３２】
次に、失火判定およびラフネス判定を行うが、始動直後の例えば１秒ぐらいの間は、エンジンが立ち上がり途中で、正常に燃焼していても大きな角速度が出るため、その間は、ＯＢＤ失火判定をすることができない。そこで、ステップＳ１０６で、始動後時間タイマが０（ゼロ）かどうかによって、始動後所定時間（例えば１秒）経過したかどうかを見る。そして、所定時間経っている時は、ステップＳ１０７へ進み、間欠／連続失火用の失火検出値ｄａｃ（i）がしきい値を越えているかどうか、あるいは、対向失火用の失火検出値ｄａｃ７ｃ（ｉ）がしきい値を越えているかどうかを見る。そして、ｄａｃ（i），ｄａｃ７ｃ（ｉ）のいずれかが、しきい値を越えていれば、ＯＢＤの完全失火状態と判定し、この時はＯＢＤ失火のためラフネス制御を禁止するということで、ステップＳ１０８で、ラフネス禁止（ＯＢＤ）Ｆ（フラグ）を１とし、次のステップＳ１０９へ進む。そして、ｄａｃ（i）あるいはｄａｃ７ｃ（ｉ）が、しきい値を越えていなければ、ＯＢＤ失火ではないので、そのままステップＳ１０９へ進む。また、ステップＳ１０６の判定で始動後所定時間経過していない時は、なにもせず、そのまま次のステップＳ１０９へ進む。
【００３３】
ステップＳ１０９〜１１３では、間欠／連続失火用の失火検出値ｄａｃ（i）を、しきい値と比較して、ラフネスを判定する。
【００３４】
すなわち、ステップＳ１０９で、ｄａｃ（i）が、ステップＳ１０４でサーチした上限しきい値以上かどうかを見て、上限しきい以上であれば、ステップＳ１１０で、ラフネス大判定Ｆ（フラグ）を１とし、ラフネス小判定Ｆ（フラグ）を０として、ステップＳ１１４へ進む。また、ｄａｃ（i）が上限しきい値より小さい時は、ステップＳ１１１で、ｄａｃ（i）が下限しきい値（０）以下かどうかを見て、下限しきい値以下であれば、ステップＳ１１２で、ラフネス大判定Ｆ（フラグ）を０とし、ラフネス小判定Ｆ（フラグ）を１として、ステップＳ１１４へ進む。そして、ｄａｃ（i）が下限しきい値（０）以下でない時、つまり、上限しきい値より小さく、下限しきい値より大きい時は、ステップＳ１１３で、ラフネス大判定Ｆ（フラグ）およびラフネス小判定Ｆ（フラグ）をいずれも０として、ステップＳ１１４へ進む。
【００３５】
ステップＳ１１４〜１１９では、所定時間毎に、ｄａｃ（i）が、ラフネス判定の上限しきい値より所定量（例えば３倍）を越える大きい値となっているかどうかによって、ラフネス制御によるリタード側への補正の禁止を継続するためのフラグ（リタード禁止継続Ｆ）の設定を行う。つまり、アイドル放置時の点火プラグのくすぶり等によって燃焼状態が悪化している時にラフネス制御により点火時期がリタード側に補正されると、完全失火し、エミッションが悪化するということから、そのような点火プラグのくすぶり等による異常を、ラフネス判定上限しきい値の例えば３倍（ＯＢＤ失火のしきい値（間欠／連続失火用）とラフネス判定のしきい値（上限しきい値）との中間ぐらいに相当する）を越える大きな燃焼変動（ｄａｃ（i））が出たことによって検出し、後段のステップにおいて、点火時期のリタードを所定時間禁止し、所定時間内に再度異常を検出した場合は、次の所定時間もリタードを禁止するのである。
【００３６】
すなわち、ステップＳ１１４で、リタード禁止タイマ（時間同期でダウンカウントされるタイマ）が０（ゼロ）かどうかを見て、リタード禁止タイマが０であれば、ステップＳ１１５で、ｄａｃ（i）がラフネス判定上限しきい値の例えば３倍を越えているかどうかを見て、越えていれば、ステップＳ１１６で、リタード禁止タイマを所定時間（例えば５秒）にセットし、ステップＳ１２３へ進む。また、ｄａｃ（i）がラフネス判定上限しきい値の例えば３倍を越えないときは、ステップＳ１１７で、リタード禁止継続Ｆが１かどうかを見て、リタード禁止継続Ｆが１であれば、次の所定時間はリタード禁止を継続するということで、ステップＳ１１８で、リタード禁止タイマを所定時間（例えば５秒）にセットする。そして、ステップＳ１１９で、リタード禁止継続Ｆを０にし、ステップＳ１２３へ進む。また、ステップＳ１１７でリタード禁止継続Ｆが１でなければ、次はもうリタード禁止を継続しないということで、ステップＳ１２０で、リタード禁止タイマを０にする。
【００３７】
また、ステップＳ１１４でリタード禁止タイマが０でない（タイマが動いている）ときは、ステップＳ１２１で、ｄａｃ（i）が上限しきい値の例えば３倍を越えているかどうかを見て、越えていれば、ステップＳ１２２で、リタード禁止継続Ｆを１にする。そして、ステップＳ１２３へ進む。また、ｄａｃ（i）が上限しきい値の例えば３倍を越えないときは、何もせず、そのままステップＳ１２３へ進む。
【００３８】
ステップＳ１２３では、点火時期の補正によるラフネス制御の実行条件が成立しているかどうかを、ラフネス補正値リセットＦ（フラグ），Ｓ／Ｖ（シャッタバルブ）閉Ｆ（フラグ），アイドルＦ（フラグ），車速０（ゼロ）Ｆ（フラグ），ギアインＦ（フラグ），始動直後禁止タイマ，Ｂｒ．（ブレーキ）負圧確保Ｆ（フラグ）およびラフネス禁止（ＯＢＤ）Ｆによって判定する。
【００３９】
ラフネス補正値リセットＦは、後述するように、図９に示すフローによりエンジン水温に基づいて設定されるものである。ラフネス制御を実行する温度条件は、エンジン水温が２０゜Ｃ〜６０゜Ｃであって、この時、ラフネス補正値リセットＦは０であり、エンジン水温が６０゜Ｃを越える時、あるいは、２０゜Ｃを下まわる時は、ラフネス補正値リセットＦが１で、この時はラフネス制御は行わない。
【００４０】
また、Ｓ／Ｖ閉Ｆは、後述するように、図１０に示すフローにより設定されるものである。ラフネス制御は、アイドル時のエンジン水温が所定値（６０゜Ｃ）以上の時に行うものであり、この時、Ｓ／Ｖ閉Ｆは１で、エンジン水温が所定値（６０゜Ｃ）を下まわる時、Ｓ／閉Ｆは０である。
【００４１】
また、ラフネス制御はアイドル時（アイドルＦ＝１）に実行し、車速が０の時（車速０Ｆ＝１）に実行し、ギアオフ時（ギアインＦ＝０）に実行するものである。
【００４２】
また、始動直後禁止タイマは、後述するように、図１１に示すフローにより設定されるもので、始動直後、エンジン回転数が所定値（例えば５００ｒｐｍ）より低い時に所定値（例えば１秒）に設定され、５００ｒｐｍ以上になればダウンカウトするもので、このタイマ値が０であることがラフネス制御実行の条件である。
【００４３】
また、Ｂｒ．負圧確保Ｆは、後述するように、図１２に示すフローにより設定されるものである。負圧確保Ｆは、ブレーキ用マスターバッグ（真空倍力装置）の負圧が低下し、負圧確保を必要とする状態に至った時に、１に設定されるもので、このＢｒ．負圧確保Ｆが０であることがラフネス制御実行の条件である。
【００４４】
また、ラフネス禁止（ＯＢＤ）Ｆは、上述のステップＳ１０８で１に設定されるもので、これが０であることがラフネス制御の条件である。
【００４５】
そして、ラフネス補正値リセットＦ＝０，Ｓ／Ｖ閉Ｆ＝１，アイドルＦ＝１，車速０Ｆ＝１，ギアインＦ＝０，始動直後禁止タイマ＝０，Ｂｒ．負圧確保Ｆ＝０およびラフネス禁止（ＯＢＤ）Ｆ＝０の条件が全て成立した時は、ラフネス制御を実行するということで、ステップＳ１２４で、ラフネス実行Ｆ（フラグ）を１とした後、ステップＳ１２５で、ラフネス大判定Ｆが１かどうかを見て、１であれば、後述のように、ステップＳ１２８〜１３３で、ラフネス制御としての点火アドバンス処理を行う。すなわち、点火時期の変動抑制補正量（ラフネスＩＧ補正値）をアドバンス側に設定する。また、ラフネス大判定Ｆが１でなければ、ステップＳ１２６で、ラフネス小判定Ｆが１で、かつ、リタード禁止タイマが０であるかどうかを見て、ラフネス小判定Ｆが１で、かつ、リタード禁止タイマ（ステップＳ１１４〜１２２で設定される）が０の時は、ステップＳ１３４〜１３６で、ラフネス制御としての点火リタード処理を行い、ラフネスＩＧ補正値をリタード側に設定する。また、ラフネス小判定Ｆが１でない時、または、リタード禁止タイマが０でない時は、後述のステップＳ１３７に進む。また、ステップＳ１２３で、ラフネス補正値リセットＦ＝０，Ｓ／Ｖ閉Ｆ＝１，アイドルＦ＝１，車速０Ｆ＝１，ギアインＦ＝０，始動直後禁止タイマ＝０，Ｂｒ．負圧確保Ｆ＝０およびラフネス禁止（ＯＢＤ）Ｆ＝０の条件のいずれかが成立しない時は、ラフネス制御を実行しないということで、ステップＳ１２７で、ラフネス実行Ｆを０とした後、後述のステップＳ１３８〜１４７の処理を行う。
【００４６】
ラフネス大判定Ｆが１で、ステップＳ１２８〜１３３の処理に入ると、まずステップＳ１２８で、ラフネス判定の上限しきい値に対するＯＢＤ失火検出値ｄａｃ（ｉ）の偏差に、比例定数Ｋｐを掛けて、基本アドバンス量ΔＩＧＡＤを算出する。そして、基本アドバンス量リミッター処理として、ステップＳ１２９で、ΔＩＧＡＤが所定値（例えばクランク角の１゜）を越えるかどうかを見て、越える時は、ステップＳ１３０で、ΔＩＧＡＤを所定値（例えばクランク角１゜）にクリップして、ステップＳ１３１へ進み、越えない時はそのままステップＳ１３１へ進む。そして、ステップＳ１３１で、前回のラフネスＩＧ補正値（i−１）にΔＩＧＡＤを足して、新たなラフネス補正値（i）を設定し、ステップＳ１３２で、新たなラフネスＩＧ補正値（i）が所定量（例えばクランク角２０゜）を越えるかどうかを見て、越える時は、ステップＳ１３３で、ラフネスＩＧ補正値（i）を所定値（例えばクランク角の２０゜）にクリップして、後述のステップＳ１４８〜１５２の処理に進み、越えない時はそのままステップＳ１４８〜１５２の処理に進む。
【００４７】
また、ラフネス小判定Ｆが１、かつ、リタード禁止タイマが０で、ステップＳ１３４〜１３６の処理に入ると、ステップＳ１３４で、前回のラフネスＩＧ補正値（i−１）から所定値（例えばクランク角の０．１゜）を引いて、新たなラフネスＩＧ補正値（i）を設定し、ステップＳ１３５で、新たなラフネスＩＧ補正値（i）が所定値（例えばクランク角の−２０゜）を下まわるかどうかを見て、下まわる時は、ステップＳ１３６で、ラフネスＩＧ補正値（i）を所定値（例えばクランク角の−２０゜）にクリップして、やはりステップＳ１４８〜１５２の処理に進み、越えない時はそのままステップＳ１４８〜１５２の処理に進む。
【００４８】
ステップＳ１２６で、ラフネス小判定Ｆが１でない時、あるいは、リタード禁止タイマが０でない時は、ステップＳ１３７で、ラフネスＩＧ補正値（i）を前回のラフネスＩＧ補正値（i−１）に固定する。
【００４９】
また、ラフネス制御の実行条件が成立せず、ステップＳ１３８〜１４７の処理に入ると、まず、ステップＳ１３８で、ラフネス補正値リセットＦ（図９に示すフローによりエンジン水温に基づいて設定される）が０であるか、あるいは、ラフネス禁止（ＯＢＤ）Ｆ（ステップＳ１０８で設定される）が０であるかを見て、ラフネス補正値リセットＦが０であるか、あるいは、ラフネス禁止（ＯＢＤ）Ｆが０であるかのいずれかの場合は、ステップＳ１３９で、ラフネスＩＧ補正値（i）を前回のラフネスＩＧ補正値（i−１）に固定し、ステップＳ１４８〜１５２の処理に進む。
【００５０】
そして、ステップＳ１３８の判定がＮＯで、ラフネス補正値リセットＦおよびラフネス禁止（ＯＢＤ）Ｆがいずれも０でない場合は、ステップＳ１４０で、前回のラフネスＩＧ補正値（i−１）が正値（＞０）であるかどうかを見て、正値であれば、ステップＳ１４１で、前回のラフネスＩＧ補正値（i−１）から所定値（例えばクランク角の０．０１゜）を引いて、新たなラフネスＩＧ補正値（i）を設定し、ステップＳ１４２で、新たなラフネスＩＧ補正値（i）が０を下まわるかどうかを見て、０を下まわる時は、ステップＳ１４３で、ラフネスＩＧ補正値（i）を０にクリップして、やはりステップＳ１４８〜１５２の処理に進み、負値でない時はそのままステップＳ１４８〜１５２の処理に進む。
【００５１】
また、ステップＳ１４０で、前回のラフネスＩＧ補正値（i−１）が正値（＞０）でない時は、ステップＳ１４４で、前回のラフネスＩＧ補正値（i−１）が負値（＜０）かどうかを見て、負値であれば、ステップＳ１４５で、前回のラフネスＩＧ補正値（i−１）に所定値（例えばクランク角の０．０１゜）を足して、新たなラフネスＩＧ補正値（i）を設定し、ステップＳ１４６で、新たなラフネスＩＧ補正値（i）が０を上まわるかどうかを見て、０を上まわる時は、ステップＳ１４７で、ラフネスＩＧ補正値（i）を０にクリップして、やはりステップＳ１４８〜１５２の処理に進み、負値でない時はそのままステップＳ１４８〜１５２の処理に進む。
【００５２】
また、前回のラフネスＩＧ補正値（i−１）が正値でなく、負値でもない、つまり、０であるという場合は、そのままステップＳ１４８〜１５２の処理に進む。
【００５３】
ステップＳ１４８〜１５２では、マップにより、アイドル時の基本点火時期を設定する。基本点火時期は、シャッタバルブ（Ｓ／Ｖ）１８の開状態と、シャッタバルブ１８の閉状態とで、また、シャッタバルブ１８の閉状態でも、ラフネス制御を行っている時と、行っていない時とで、それぞれ設定が異なる。そして、まず、ステップＳ１４８で、Ｓ／Ｖ閉Ｆが１かどうかを見て（Ｓ／Ｖ閉Ｆは、図１０に示すフローにより設定される）、Ｓ／Ｖ閉Ｆが１であれば、ステップＳ１４９で、エンジン水温によるラフネス補正値リセットＦ（図９に示すフローにより設定される）が１かどうかを見て、ラフネス補正値リセットＦが１であれば、ステップＳ１５０で、吸気充填効率（Ｃｅ）とエンジン回転数（Ｎｅ）で設定されたアイドル・Ｓ／Ｖ閉・ラフネス非作動時用基本ＩＧマップのサーチにより、アイドル時の基本点火時期（アイドル基本進角（ｉ））を設定し、最終的な点火時期を設定するためのステップＳ１５３に進む。また、ラフネス補正値リセットＦが１でない時、すなわち、ラフネス制御実行中は、ステップＳ１５１で、エンジン回転数（Ｎｅ）および吸気充填効率（Ｃｅ）の変化に拘わらず設定が一定のアイドル・Ｓ／Ｖ閉・ラフネス作動時用基本ＩＧマップを用い、アイドル基本進角（ｉ）を一定値として、ステップＳ１５３に進む。また、ステップＳ１４８で、Ｓ／Ｖ閉Ｆが１でなければ、ステップＳ１５２で、アイドル・Ｓ／Ｖ開時用基本ＩＧマップにより、アイドル基本進角（ｉ）を設定して、ステップＳ１５３に進む。
【００５４】
そして、ステップＳ１５３で、アイドル基本進角（i）に、ラフネスＩＧ補正値（i）と、Ｂｒ．負圧確保補正値（i）と、水温進角補正値（i）と、その他の通常のアイドル時の各種進角補正値（ｅ.ｔ.ｃ.）を足し込んで、最終的な点火時期であるアイドル進角（i）を設定し、リターンする。水温進角補正値（i）は、後述するように、図１７に示すマップにより設定するものである。
【００５５】
（ＯＢＤ失火検出値演算）
図８は、公知のＯＢＤ失火検出値演算のフローチャートで、スタートすると、Ｓ２０１で、膨張行程後半から排気行程前半のクランク角１８０゜の範囲に相当する、ＡＴＤＣ８０゜からＡＴＤＣ２６０゜のクランク角パルス時間の計測値Ｔ（i）を入力する。そして、ステップＳ２０２で、１８０゜（３６０゜／２）を、Ｔ（i）で割った値に、公差補正係数ｍｓｃｆを掛けて、角速度ａｖ（i）を演算し、次いで、ステップＳ２０３で、今回の角速度ａｖ（i）と前回の角速度ａｖ（i−１）の差をＴ（i）で割って、角加速度ｃａ（i）を演算する。
【００５６】
そして、次のステップＳ２０４で、今回を含め点火順に前後５点の角加速度（計測値）ｃａ（i）〜ｃａ（i−４）の中央値ｃａｍｄ５（i）と、今回を含め点火順に前後７点の角加速度（計測値）ｃａ（i）〜ｃａ（i−６）の中央値ｃａｍｄ７（i）を算出し、次いで、ステップＳ２０５で、上記５点の角加速度ｃａ（i）〜ｃａ（i−４）の真ん中の計測点における角加速度ｃａ（i−２）の、中央値ｃａｍｄ５（i）に対する偏差ｄａｃ（i）を算出して、それを、今回を含め前後５回の内の点火順序が真ん中の気筒についての、連続／間欠失火用のＯＢＤ失火検出値とし、また、上記７点の角加速度ｃａ（i）〜ｃａ（i−６）の真ん中の計測点における角加速度ｃａ（i−３）の、中央値ｃａｍｄ７（i）に対する偏差ｄａｃ７（i）を算出して、それを、今回を含め前後７回の内の点火順序が真ん中の気筒についての、対向失火用のＯＢＤ失火検出値として算出する。ここで、連続失火とは、特定気筒が連続的に失火する場合をいい、間欠失火とは、不特定の気筒が間欠的に失火する場合をいう。また、対向失火とは、共通の点火コイルにより点火コイルが通電制御される複数の気筒の失火をいう。
【００５７】
そして、リターンし、上記処理を繰り返して、全気筒につき、気筒毎に、連続／間欠失火用のＯＢＤ失火検出値ｄａｃ（i）および対向失火用のＯＢＤ失火検出値ｄａｃ７（i）を算出する。
【００５８】
（ラフネス補正値リセットフラグ設定）
図９は、ラフネス補正値リセットフラグ設定のフローチャートで、スタートすると、Ｓ３０１で、エンジン水温が６０゜Ｃより高いか、あるいは、２０゜Ｃより低いかの、いずれかであるかどうかを見る。そして、エンジン水温が６０゜Ｃより高いか、あるいは、２０゜Ｃより低いかの、いずれかであれば、ステップＳ３０２で、ラフネス補正値リセットＦ（フラグ）を１にする。また、エンジン水温が６０゜Ｃより高いか、あるいは、２０゜Ｃより低いかの、いずれでもなければ、ステップＳ３０３で、ラフネス補正値リセットＦを０にする。
【００５９】
（シャッタバルブ開閉判定）
図１０は、シャッタバルブ開閉判定のフローチャートで、スタートすると、ステップＳ４０１で、アイドルＦ（フラグ）が１であるかどうかを見る。そして、アイドルＦが１の時（アイドル時）は、ステップ４０２で、エンジン水温が所定値（例えば６０゜Ｃ）より低いかどうかを見て、エンジン水温が所定値（例えば６０゜Ｃ）より低い時は、Ｓ／Ｖ（シャッタバルブ）閉フラグを１にし、エンジン水温が所定値（例えば６０゜Ｃ）以上の時は、Ｓ／Ｖ閉フラグを０にする。
【００６０】
また、アイドルＦが１でな時（オフアイドル時）は、ステップＳ４０５で、吸気充填効率（Ｃｅ）とエンジン回転数（Ｎｅ）とエンジン水温とでシャッタバルブ（Ｓ／Ｖ）閉領域を設定するマップ（Ｓ／Ｖ閉Ｃｅマップ）により、エンジン水温に応じたＳ／Ｖ閉領域（エンジン水温が高くなる程狭くなる）のしきい値としてのＣｅ（Ｓ／Ｖ閉Ｃｅ）をサーチし、ステップＳ４０６で、計測されたＣｅがＳ／Ｖ閉Ｃｅより小さいかどうかを見て、ＣｅがＳ／Ｖ閉Ｃｅより小さい時は、ステップＳ４０７で、Ｓ／Ｖ閉フラグを１にし、また、ＣｅがＳ／Ｖ閉Ｃｅ以上の時は、ステップＳ４０８で、Ｓ／Ｖ閉フラグを０にする。
【００６１】
（始動直後禁止タイマ設定）
図１１は、始動直後禁止タイマ設定のフローチャートで、スタートすると、Ｓ５０１で、エンジン始動直後、エンジン回転数（Ｎｅ）が例えば５００ｒｐｍより低いかどうかを見て、Ｎｅが例えば５００ｒｐｍより低い時は、始動直後禁止タイマを所定値（例えば１秒）に設定し、Ｎｅが例えば５００ｒｐｍ以上になれば、始動直後禁止タイマをダウンカウントし、０でクリップする。
【００６２】
（マスターバッグ負圧リカバリー制御）
図１２は、マスターバッグ負圧リカバリー制御のタイムチャートで、実行タイマ（Ｂｒ．負圧確保制御実行タイマ）は、エンジン始動後、所定時間（例えば１〜２０秒）は初期設定値（例えば２０秒）に保たれ、その所定時間が経過した後、ダウンカウントされる。その間、Ｂｒ．負圧確保補正値は０で、実行タイマが０になると、実行タイマは０にクリップされ、Ｂｒ．負圧確保補正値が漸増される。そして、Ｂｒ．負圧確保補正値が、ラフネスＩＧ補正値を相殺する値になると、実行タイマ設定Ｆ（フラグ）が１になって、実行タイマが再び設定値（例えば２０秒）にセットされ、Ｂｒ．負圧確保補正値が０まで漸減される。ラフネス制御を停止するためのＢｒ．負圧確保Ｆ（フラグ）は、実行タイマが０になったら、１が立ち、Ｂｒ．負圧確保補正値が０を越えている間、１のままで、Ｂｒ．負圧確保補正値が０になると、０に戻る。
【００６３】
図１３はブレーキ負圧確保フラグ設定のフローチャートで、スタートすると、ステップＳ６０１で、Ｂｒ．負圧確保制御実行タイマが０かどうかを見る。そして、Ｂｒ．負圧確保制御実行タイマが０であれば、ステップＳ６０２で、前回のＢｒ．負圧確保補正値（i−1）に所定量（例えばクランク角の０．３゜）を足し込んで、新たなＢｒ．負圧確保補正値（i）とし、ステップＳ６０３で、Ｂｒ．負圧確保補正値（i）が０を越えたかどうかを見て、Ｂｒ．負圧確保補正値（i）が０を越えたら、ステップＳ６０４で、Ｂｒ．負圧確保Ｆ（フラグ）を１とし、Ｂｒ．負圧確保補正値（i）が０を越えていなかったら、ステップＳ６０５で、Ｂｒ．負圧確保Ｆ（フラグ）を０にする。
【００６４】
また、ステップＳ６０１で、Ｂｒ．負圧確保制御実行タイマが０でない時は、ステップＳ６０６で、前回のＢｒ．負圧確保補正値（i−1）から所定量（例えばクランク角の０．３゜）を引いて、新たなＢｒ．負圧確保補正値（i）とし、ステップＳ６０７で、Ｂｒ．負圧確保補正値（i）が０を下まわったかどうかを見て、Ｂｒ．負圧確保補正値（i）が０を下まわったら、ステップＳ６０８で、Ｂｒ．負圧確保補正値（i）を０にクリップする。そして、ステップＳ６０３で、Ｂｒ．負圧確保補正値（i）が０を越えているかどうかを見て、Ｂｒ．負圧確保補正値（i）が０を越えていたら、ステップＳ６０４で、Ｂｒ．負圧確保Ｆ（フラグ）を１とし、Ｂｒ．負圧確保補正値（i）が０を越えていなかったら、ステップＳ６０５で、Ｂｒ．負圧確保Ｆ（フラグ）を０にする。
【００６５】
図１４は、ブレーキ負圧確保制御実行タイマ設定のフローチャートで、スタートすると、スタートＳ７０１で、Ｂｒ．負圧確保補正値（i）がラフネスＩＧ補正値（i）に定数Ｋｃ（例えば−０．８）を掛けた値（ラフネスＩＧ補正値をほぼ相殺する値）以上かどうかを見て、負圧確保補正値（i）がラフネスＩＧ補正値（i）に定数Ｋｃ（例えば−０．８）を掛けた値以上であれば、ステップＳ７０２で、Ｂｒ．負圧確保制御実行タイマ設定Ｆ（フラグ）を１とする。また、負圧確保補正値（i）がラフネスＩＧ補正値（i）に定数Ｋｃ（例えば−０．８）を掛けた値以上でなければ、ステップＳ７０３で、Ｂｒ．負圧確保制御実行タイマ（i）が０を越えた値であるかどうかを見て、０を越えていれば、ステップＳ７０４で、Ｂｒ．負圧確保制御実行タイマ設定Ｆを０とし、０を越えていなければ、そのままリターンする。
【００６６】
図１５は、ブレーキ負圧確保制御実行タイマ設定フラグ設定のフローチャートで、スタートすると、スタートＳ８０１で、Ｂｒ．負圧確保制御実行タイマ設定Ｆが１，始動後禁止タイマが０以上，ラフネス補正値リセットＦが１，アイドルＦが０，車速０Ｆが１，ギアインＦが１の、いずれかの条件が成立するかどうかを見て、上記条件のいずれかが成立する時は、スタートＳ８０２で、Ｂｒ．負圧確保制御実行タイマを所定値（例えば２０秒）に設定する。また、上記条件のいずれも成立しない時は、スタートＳ８０３で、Ｂｒ．負圧確保制御実行タイマをダウンカウトし、０でクリップする。
【００６７】
（空燃比フィードバック制御ゲイン変更）
図１６は、空燃比フィードバック制御の制御ゲイン変更のフローチャートで、スタートすると、ステップＳ９０１で、アイドルＦが１かどうかを見る。そして、アイドルＦが１の時（アイドル時）は、ステップＳ９０２で、ラフネス実行Ｆが１かどうかを見て、ラフネス実行Ｆが１の時は、ステップＳ９０３で、比例項ＯＫＰ，積分項ＯＫＩその他（微分項等）の制御ゲインを、ラフネス制御時専用の制御ゲインとし、ラフネス実行Ｆが１でない時は、ステップＳ９０４で、上記制御ゲインをアイドル時の通常制御ゲインとする。また、アイドルＦが１でない時（非アイドル時）は、ステップＳ９０５で、上記制御ゲインを、走行時の制御ゲインに設定する。これらラフネス制御時専用の制御ゲイン，アイドル時の通常制御ゲインおよび、走行時の制御ゲインは、ラフネス制御時専用の制御ゲイン，アイドル時の通常制御ゲイン，走行時の制御ゲインの順に大きな値となる。
【００６８】
（水温進角補正値設定）
水温補正進角値は、図１７に示すマップにより設定するもので、エンジン水温が２０゜Ｃ〜４０゜Ｃの時は、リタード側に設定し、エンジン水温が２０゜Ｃを下まわると、徐々にアドバンスさせ、また、４０゜Ｃを上まわると、６０゜Ｃまでの間、徐々にアドバンスさせる。
【００６９】
（ＩＳＣ流量制御）
図１８は、ＩＳＣ流量制御のフローチャートで、スタートすると、ステップＳ１００１で、エンジン水温と点火進角のマップによって、ベース流量Ｃｅｂを設定する。この場合の、ベース流量Ｃｅｂは、エンジン水温が高い程小さくなり、進角がアドバンス側程小さくなるものである。
【００７０】
次に、ステップＳ１００２で、エンジン水温のマップによって、目標回転数Ｎｏ（i）を設定する。この場合、目標回転数Ｎｏ（i）は、エンジン水温が低い程高い値に設定されるものである。
【００７１】
そして、ステップＳ１００３で、今回のエンジン回転数Ｎｅ（i）の目標回転数Ｎｏ（i）に対する偏差ΔＮｅ（i）を算出し、次いで、ステップＳ１００４で、上記偏差ΔＮｅ（i）に積分定数Ｋ１を掛けて、前回のフィードバック補正値Ｃｅｆｂ（i−１）に足し込むことより、今回のフィードバック補正値Ｃｅｆｂ（i）を算出する。
【００７２】
そして、ステップＳ１００５で、今回のベース流量Ｃｅｂ（ｉ）にフィードバック補正値Ｃｅｆｂ（i）を足して、トータルの流量Ｃｅｔｏｔａｌを算出し、ステップＳ１００６で、デューティー変換して、出力する。
【００７３】
図１９は、実施の形態の他の例に示すラフネス制御のための点火時期演算のフローの一部（先の実施の形態のラフネス制御における点火時期演算のフローのステップＳ１１４〜１２７に相当する部分）を示している。先の実施の形態のラフネス制御における点火時期演算では、ＯＢＤ失火検出値ｄａｃ（i）が、ラフネス判定の上限しきい値より所定量（例えば３倍）を越える大きい値となった後のラフネス制御によるリタード禁止の時間管理を、タイマ（リタード禁止タイマ）の設定によって行っているが、図１９のフローでは、ＯＢＤ失火検出値ｄａｃ（i）が、ラフネス判定の上限しきい値より所定量（例えば３倍）を越える大きい値となって、ラフネス制御を禁止した後、高負荷運転に移行し、その高負荷運転の状態が所定期間継続した時に、ラフネス禁止を解除するようになっている。
【００７４】
すなわち、図１９のステップＳ１１０１は、上記図３のステップＳ１１５に相当する処理であって、リタード禁止Ｆ（フラグ）が１であるかどうかを見る。そして、リタード禁止Ｆが１でない時は、ステップＳ１１０２で、ｄａｃ（i）がラフネス判定上限しきい値の例えば３倍を越えているかどうかを見て、越えていれば、ステップＳ１１０３で、リタード禁止Ｆを１にし、ステップＳ１１１０へ進む。また、ｄａｃ（i）がラフネス判定上限しきい値の例えば３倍を越えないときは、そのままステップＳ１１１０へ進む。
【００７５】
次に、ステップＳ１１０１で、リタード禁止Ｆが１であれば、ステップＳ１１０４で、高負荷運転状態（高負荷使用中）かどうかを見て、高負荷使用中であれば、ステップＳ１１０５で、高負荷タイマを１だけアップカウントする。そして、ステップＳ１１０６で、高負荷タイマが所定時間を越えたかどうかを見て、所定時間を越えたら、ラフネス禁止を解除するということで、ステップＳ１１０７で、リタード禁止Ｆを０にリセットし、ステップＳ１１０８で、高負荷タイマを０にリセットする。そして、ステップＳ１１１０へ進む。また、ステップＳ１１０４で、高負荷使用中でない時は、ステップＳ１１０９で、高負荷タイマを０にし、ステップＳ１１１０に進む。
【００７６】
そして、ステップＳ１１１０に進むと、点火時期の補正によるラフネス制御の実行条件が成立しているかどうかを、ラフネス補正値リセットＦ，Ｓ／Ｖ閉Ｆ，アイドルＦ，車速０Ｆ，ギアインＦ，始動直後禁止タイマ，Ｂｒ．負圧確保Ｆおよびラフネス禁止（ＯＢＤ）Ｆによって判定する。すなわち、ラフネス補正値リセットＦ＝０，Ｓ／Ｖ閉Ｆ＝１，アイドルＦ＝１，車速０Ｆ＝１，ギアインＦ＝０，始動直後禁止タイマ＝０，Ｂｒ．負圧確保Ｆ＝０およびラフネス禁止（ＯＢＤ）Ｆ＝０の条件が全て成立した時は、ラフネス制御を実行するということで、ステップＳ１１１１で、ラフネス実行Ｆを１とした後、ステップＳ１１１２で、ラフネス大判定Ｆが１かどうかを見て、１であれば、図５のステップステップＳ１２８へ進む。また、ラフネス大判定Ｆが１でなければ、ステップＳ１１１３で、ラフネス小判定Ｆが１で、かつ、リタード禁止Ｆが０であるかどうかを見て、ラフネス小判定Ｆが１で、かつ、リタード禁止Ｆが０でない時は、図５のステップＳ１３４へ進む。また、ラフネス小判定Ｆが１でない時、あるいは、リタード禁止Ｆが０でない時は、図５のステップＳ１３７へ進む。また、ステップＳ１１１０で、ラフネス補正値リセットＦ＝０，Ｓ／Ｖ閉Ｆ＝１，アイドルＦ＝１，車速０Ｆ＝１，ギアインＦ＝０，始動直後禁止タイマ＝０，Ｂｒ．負圧確保Ｆ＝０およびラフネス禁止（ＯＢＤ）Ｆ＝０の条件のいずれかが成立しない時は、ラフネス制御を実行しないということで、ステップＳ１１１４で、ラフネス実行Ｆを０とした後、図６のステップＳ１３８へ進む。
【００７７】
【発明の効果】
本発明によれば、ハイテンションコード抜けや点火コイルの断線等により特定気筒が連続的に失火している状態でラフネス制御を行うことによるエンストや触媒の過熱を防止することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態の一例に係るエンジンの全体システム図である。
【図２】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その１）である。
【図３】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その２）である。
【図４】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その３）である。
【図５】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その４）である。
【図６】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その５）である。
【図７】上記実施の形態のラフネス制御における点火時期演算のフローチャートの一部（その６）である。
【図８】上記実施の形態に係るＯＢＤ失火検出値演算のフローチャートである。
【図９】上記実施の形態のラフネス制御に係るラフネス補正値リセットフラグ設定のフローチャートである。
【図１０】上記実施の形態のラフネス制御に係るシャッタバルブ開閉判定のフローチャートである。
【図１１】上記実施の形態のラフネス制御に係る始動直後禁止タイマ設定のフローチャートである。
【図１２】上記実施の形態のラフネス制御に係るマスターバッグ負圧リカバリー制御のタイムチャートである。
【図１３】上記実施の形態のラフネス制御に係るブレーキ負圧確保フラグ設定のフローチャートである。
【図１４】上記実施の形態のラフネス制御に係るブレーキ負圧確保制御実行タイマ設定のフローチャートである。
【図１５】上記実施の形態のラフネス制御に係るブレーキ負圧確保制御実行タイマ設定フラグ設定のフローチャートである。
【図１６】上記実施の形態のラフネス制御に係る空燃比フィードバック制御の制御ゲイン変更のフローチャートである。
【図１７】上記実施の形態のラフネス制御に係る水温進角補正値設定のマップである。
【図１８】上記実施の形態のラフネス制御に係るＩＳＣ流量制御のフローチャートである。
【図１９】本発明の実施の形態のラフネス制御の他の例を示す点火時期演算のフローチャートの一部である。
【符号の説明】
１  エンジン
７  点火プラグ
８  点火回路
１３  エアフローセンサ
１６  インジェクタ
１８  開閉弁（シャッタバルブ）
２０  ＩＳＣバイパス通路
２１  ＩＳＣバルブ
２２  アイドルスイッチ
２６  Ｏ２センサ
２７  触媒コンバータ
３０  クランク角センサ
３５  ＥＣＵ
【図１】
0004306004.tif 000002
【図２】
0004306004.tif 000003
【図３】
0004306004.tif 000004
【図４】
0004306004.tif 000005
【図５】
0004306004.tif 000006
【図６】
0004306004.tif 000007
【図７】
0004306004.tif 000008
【図８】
0004306004.tif 000009
【図９】
0004306004.tif 000010
【図１０】
0004306004.tif 000011
【図１１】
0004306004.tif 000012
【図１２】
0004306004.tif 000013
【図１３】
0004306004.tif 000014
【図１４】
0004306004.tif 000015
【図１５】
0004306004.tif 000016
【図１６】
0004306004.tif 000017
【図１７】
0004306004.tif 000018
【図１８】
0004306004.tif 000019
【図１９】
0004306004.tif 000020