(57)【特許請求の範囲】
【請求項１】
内燃機関の各気筒の燃焼室内で混合気の燃焼に伴って発生するイオン電流を点火プラグの電極を介して検出するイオン電流検出手段を備え、前記点火プラグとして、急激な電流変化（以下「スパイクノイズ」という）に対応する点火プラグを用いるようにした内燃機関のイオン電流検出装置において、
気筒毎に燃焼行程を含む所定のスパイクノイズ検出区間内で前記イオン電流検出手段で検出したイオン電流の変化パターンを解析してスパイクノイズの発生回数をカウントするスパイクノイズカウント手段と、
前記スパイクノイズカウント手段によってカウントされた各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定するスパイクノイズ異常サイクル判定手段と、
各気筒毎に点火回数と前記スパイクノイズ異常サイクルの発生回数をカウントして当該スパイクノイズ異常サイクルの発生頻度を求めて当該スパイクノイズ異常サイクルの発生頻度が判定しきい値以上になった気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒若しくは点火プラグ故障気筒と判定する点火プラグ異常検出手段と
を備え、
前記スパイクノイズカウント手段は、前記イオン電流検出手段で検出したイオン電流の変化パターンのピーク点及び／又はボトム点を検出し、前記ピーク点からの電流下降率及び／又は前記ボトム点からの電流上昇率が所定値以上であるか否かでスパイクノイズであるか否かを判定する手段と、前記イオン電流検出手段で検出したイオン電流がサチュレートしてほとんど変化しないサチュレート区間を検出する手段と、前記サチュレート区間で前記ピーク点及びボトム点の検出処理を禁止する手段とを有することを特徴とする内燃機関のイオン電流検出装置。
【請求項２】
前記スパイクノイズカウント手段は、前記燃焼行程を含むスパイクノイズ検出区間の他に、燃焼行程を含まないバックグラウンドノイズ検出区間を設定して前記スパイクノイズ検出区間と前記バックグラウンドノイズ検出区間でそれぞれスパイクノイズの発生回数をカウントし、
前記スパイクノイズ異常サイクル判定手段は、前記スパイクノイズカウント手段で各気筒毎にカウントした前記スパイクノイズ検出区間のスパイクノイズの発生回数を前記バックグラウンドノイズ検出区間のスパイクノイズの発生回数で減算補正した値が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定することを特徴とする請求項１に記載の内燃機関のイオン電流検出装置。
【請求項３】
前記スパイクノイズ異常サイクル判定手段は、内燃機関の各気筒の燃焼状態が緩慢になる運転状態のときに前記スパイクノイズ異常サイクルの判定を禁止する手段を有することを特徴とする請求項１又は２に記載の内燃機関のイオン電流検出装置。
【請求項４】
前記スパイクノイズ異常サイクル判定手段は、各気筒で排気行程毎に前記イオン電流検出手段で検出したイオン電流信号の平均値が所定値以上のときに内燃機関の各気筒の燃焼状態が緩慢になる緩慢燃焼状態であると判断して前記スパイクノイズ異常サイクルの判定を禁止する手段を有することを特徴とする請求項１又は２に記載の内燃機関のイオン電流検出装置。
【請求項５】
前記スパイクノイズ異常サイクル判定手段は、内燃機関の各気筒の燃焼安定性が低下する制御状態のときと、内燃機関の運転状態が所定の低負荷領域のときと、前記点火プラグのくすぶり状態が所定以上のときのうちの少なくとも１つで前記スパイクノイズ異常サイクルの判定を禁止する手段を有することを特徴とする請求項１又は２に記載の内燃機関のイオン電流検出装置。
【請求項６】
前記スパイクノイズ異常サイクル判定手段は、点火系に電源電圧を供給するバッテリが過負荷状態になっているときに前記スパイクノイズ異常サイクルの判定を禁止する手段を有することを特徴とする請求項１乃至５のいずれかに記載の内燃機関のイオン電流検出装置。
【請求項７】
前記スパイクノイズ異常サイクル判定手段は、前記スパイクノイズ異常サイクルを検出したときに当該スパイクノイズ異常サイクルを失火サイクルと判定する手段を有することを特徴とする請求項１乃至６のいずれかに記載の内燃機関のイオン電流検出装置。
【請求項８】
前記スパイクノイズ異常サイクル判定手段は、前記各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上で且つ前記イオン電流検出手段のイオン電流出力時間が所定時間以下であるか否かで、各気筒毎にスパイクノイズ異常サイクル、失火サイクルであるか否かを判定することを特徴とする請求項７に記載の内燃機関のイオン電流検出装置。
【請求項９】
前記スパイクノイズカウント手段は、前記スパイクノイズ検出区間の開始タイミングを点火タイミングから所定時間経過後と上死点後の所定クランク角のうちのいずれか遅い方に設定する手段を有することを特徴とする請求項１乃至８のいずれかに記載の内燃機関のイオン電流検出装置。
【請求項１０】
前記スパイクノイズカウント手段は、スパイクノイズ検出のためのイオン電流検出値のＡ／Ｄ変換周期を燃焼状態検出のためのイオン電流検出値のＡ／Ｄ変換周期と同じ周期とし、且つ該Ａ／Ｄ変換周期を点火コイルの二次インダクタンスと二次浮遊容量とから決定されるスパイクノイズの幅の１／４以下に設定する手段を有することを特徴とする請求項１乃至９のいずれかに記載の内燃機関のイオン電流検出装置。
【請求項１１】
前記イオン電流検出手段によるイオン電流の検出範囲を５〜５０μＡに制限するようにイオン電流の検出ゲインが設定されていることを特徴とする請求項１乃至１０のいずれかに記載の内燃機関のイオン電流検出装置。
【請求項１２】
前記スパイクノイズ異常サイクル判定手段は、前記スパイクノイズ異常サイクルを検出するための第１の判定しきい値を設定すると共に、前記イオン電流検出手段の故障を検出するための第２の判定しきい値を前記第１の判定しきい値よりも大きい値に設定し、前記スパイクノイズカウント手段によってカウントされたスパイクノイズの発生回数が、前記第１の判定しきい値以上で前記第２の判定しきい値以下のときに前記スパイクノイズ異常サイクルと判定し、前記第２の判定しきい値を越えるときに前記イオン電流検出手段の故障と判定することを特徴とする請求項１乃至１１のいずれかに記載の内燃機関のイオン電流検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の各気筒の燃焼室内で混合気の燃焼に伴って発生するイオン電流を点火プラグの電極を介して検出する内燃機関のイオン電流検出装置に関する発明である。
【背景技術】
【０００２】
近年、この種の内燃機関のイオン電流検出装置においては、失火時に点火プラグの碍子帯電電荷により発生するスパイクノイズ（スパイク状のコロナ放電）を燃焼イオンと誤判定するのを防止するために、スパイクノイズ対策を施したイオン電流検出用点火プラグを用いるようにしたものがある（例えば特許文献１〜４参照）。
【特許文献１】特開平１０−８９２２１号公報
【特許文献２】特開２００５−１２９３９８号公報
【特許文献３】特開２００５−１２９３９９号公報
【特許文献４】特開平１１−２１９７７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のように、スパイクノイズ対策を施したイオン電流検出用点火プラグを用いる仕様の内燃機関であっても、ユーザー側で点火プラグを交換する際に、スパイクノイズ未対策の異種点火プラグ（汎用の点火プラグ）が装着されてしまう可能性がある。
【０００４】
しかし、従来のイオン電流検出装置では、スパイクノイズ未対策の異種点火プラグが装着された場合でも、その異種点火プラグの装着を検出できないため、失火時に異種点火プラグの碍子帯電電荷により発生するスパイクノイズを燃焼イオンと誤判定する可能性があり、失火中であるにも拘らず燃焼と誤判定する可能性がある。また、点火プラグ故障気筒においても、燃焼と失火を誤判定する可能性がある。
【０００５】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、スパイクノイズに対応する点火プラグを用いる仕様のイオン電流検出装置において、スパイクノイズ未対策の異種点火プラグが装着された気筒若しくは点火プラグ故障気筒を検出することができる内燃機関のイオン電流検出装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明は、内燃機関の各気筒の燃焼室内で混合気の燃焼に伴って発生するイオン電流を点火プラグの電極を介して検出するイオン電流検出手段を備え、前記点火プラグとして、急激な電流変化（以下「スパイクノイズ」という）に対応する点火プラグを用いるようにした内燃機関のイオン電流検出装置において、気筒毎に燃焼行程を含む所定のスパイクノイズ検出区間内で前記イオン電流検出手段で検出したイオン電流の変化パターンを解析してスパイクノイズの発生回数をカウントするスパイクノイズカウント手段と、このスパイクノイズカウント手段によってカウントされた各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定するスパイクノイズ異常サイクル判定手段と、各気筒毎に点火回数と前記スパイクノイズ異常サイクルの発生回数をカウントして当該スパイクノイズ異常サイクルの発生頻度（所定点火回数当たりのスパイクノイズ異常サイクルの発生回数）を求めて当該スパイクノイズ異常サイクルの発生頻度が判定しきい値以上になった気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒若しくは点火プラグ故障気筒と判定する点火プラグ異常検出手段とを備え、前記スパイクノイズカウント手段は、前記イオン電流検出手段で検出したイオン電流の変化パターンのピーク点及び／又はボトム点を検出し、前記ピーク点からの電流下降率及び／又は前記ボトム点からの電流上昇率が所定値以上であるか否かでスパイクノイズであるか否かを判定する手段と、前記イオン電流検出手段で検出したイオン電流がサチュレートしてほとんど変化しないサチュレート区間を検出する手段と、前記サチュレート区間で前記ピーク点及びボトム点の検出処理を禁止する手段とを有することを特徴とするものである。
【０００７】
ここで、スパイクノイズに対応する点火プラグとは、例えば、スパイクノイズ対策済みの点火プラグや予め指定された型式の点火プラグのことである。
【０００８】
本発明は、スパイクノイズ未対策の異種点火プラグが装着された場合や、点火プラグ故障の場合に、失火時に異種点火プラグの碍子帯電電荷によりスパイクノイズが頻発する傾向があることに着目して、スパイクノイズが頻発する気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒若しくは点火プラグ故障気筒と判定する技術思想であり、これにより、スパイクノイズ未対策の異種点火プラグの装着時若しくは点火プラグ故障時にスパイクノイズを燃焼イオンと誤判定することを未然に防止することができる。
【０００９】
この場合、イオン電流検出手段で検出したイオン電流の変化パターンを解析してスパイクノイズを検出する際に、請求項１のように、イオン電流検出手段で検出したイオン電流の変化パターンのピーク点及び／又はボトム点を検出し、前記ピーク点からの電流下降率及び／又は前記ボトム点からの電流上昇率が所定値以上であるか否かでスパイクノイズであるか否かを判定するようにすれば良い。このようにすれば、イオン電流の変化パターンからピーク点やボトム点を精度良く検出することができる。
【００１０】
更に、請求項１のように、イオン電流検出手段で検出したイオン電流がサチュレートしてほとんど変化しないサチュレート区間を検出し、このサチュレート区間でピーク点及びボトム点の検出処理を禁止するようにすると良い。このようにすれば、イオン電流のサチュレート状態からの電流変化をスパイクノイズと誤判定することを未然に防止することができる。
【００１１】
また、請求項２のように、燃焼行程を含むスパイクノイズ検出区間の他に、燃焼行程を含まないバックグラウンドノイズ検出区間を設定して、前記スパイクノイズ検出区間と前記バックグラウンドノイズ検出区間でそれぞれスパイクノイズの発生回数をカウントし、各気筒毎にカウントした前記スパイクノイズ検出区間のスパイクノイズの発生回数を前記バックグラウンドノイズ検出区間のスパイクノイズの発生回数で減算補正した値が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定するようにしても良い。
【００１２】
一般に、スパイクノイズは、燃焼行程を含むスパイクノイズ検出区間で発生しやすく、燃焼行程を含まないバックグラウンドノイズ検出区間では、スパイクノイズが発生しにくいため、バックグラウンドノイズ検出区間では、スパイクノイズとして検出されるバックグラウンドノイズの発生回数を検出することになる。従って、スパイクノイズ検出区間のスパイクノイズの発生回数をバックグラウンドノイズ検出区間のスパイクノイズ（バックグラウンドノイズ）の発生回数で減算補正すれば、スパイクノイズ検出区間で発生するバックグラウンドノイズを除外した正味のスパイクノイズの発生回数を検出することができる。
【００１３】
ところで、各気筒の燃焼状態が緩慢になる運転状態のときには、スパイクノイズ検出区間内で燃焼イオンが比較的大きく変動して、この燃焼イオンの変動がスパイクノイズと誤判定される可能性があり、それによって、スパイクノイズの発生回数の検出精度が低下してスパイクノイズ異常サイクルを誤判定する可能性がある。
【００１４】
この対策として、請求項３のように、各気筒の燃焼状態が緩慢になる運転状態のときにスパイクノイズ異常サイクルの判定を禁止するようにすると良い。このようにすれば、各気筒の燃焼状態が緩慢になる運転状態のときの燃焼イオンの変動によってスパイクノイズ異常サイクルを誤判定することを未然に防止することができる。ここで、燃焼状態が緩慢になる運転状態は、例えば、点火時期遅角時、ＥＧＲ率増加時、空燃比リーン制御時、燃焼速度が遅くなる特定の運転領域等である。
【００１５】
或は、各気筒の燃焼状態が緩慢になると、排気行程中に燃焼イオンが比較的大きく変動することに着目して、請求項４のように、各気筒で排気行程毎にイオン電流検出手段で検出したイオン電流信号の平均値が所定値以上のときに内燃機関の各気筒の燃焼状態が緩慢になる緩慢燃焼状態であると判断してスパイクノイズ異常サイクルの判定を禁止するようにしても良い。このようにすれば、緩慢燃焼状態になったときの燃焼イオンの変動によってスパイクノイズ異常サイクルを誤判定することを未然に防止することができる。しかも、排気行程に検出したイオン電流信号に基づいて緩慢燃焼状態である否かを判断することができるため、内燃機関毎に燃焼状態が緩慢になる運転条件（例えば点火時期遅角量等）を適合するといった煩雑な作業を行う必要がないという利点もある。
【００１６】
また、請求項５のように、内燃機関の各気筒の燃焼安定性が低下する制御状態のときと、内燃機関の運転状態が所定の低負荷領域のときと、点火プラグのくすぶり状態が所定以上のときのうちの少なくとも１つでスパイクノイズ異常サイクルの判定を禁止するようにしても良い。このようにすれば、内燃機関の各気筒の燃焼安定性が低下して緩慢燃焼状態になったときの燃焼イオンの変動や、内燃機関の運転状態が低負荷領域（例えば減速領域）になったときの燃焼イオンの不安定化や、点火プラグのくすぶり状態が進行したときのイオン電流検出精度の低下によってスパイクノイズ異常サイクルを誤判定することを確実に防止することができる。ここで、燃焼安定性が低下する制御状態は、例えば、バルブオーバーラップ増大制御時、点火時期遅角制御時、空燃比リーン制御時等である。
【００１７】
また、点火系に電源電圧を供給するバッテリが過負荷状態になっているときには、オルタネータの電圧変動の影響が相対的に大きく現れて、このオルタネータの電圧変動によって発生するノイズをスパイクノイズと誤判定する可能性があり、それによって、スパイクノイズの発生回数の検出精度が低下してスパイクノイズ異常サイクルを誤判定する可能性がある。
【００１８】
この対策として、請求項６のように、バッテリが過負荷状態になっているときにスパイクノイズ異常サイクルの判定を禁止するするようにすると良い。このようにすれば、オルタネータの電圧変動ノイズによってスパイクノイズ異常サイクルを誤判定することを未然に防止することができる。
【００１９】
一般に、スパイクノイズ未対策の異種点火プラグでは、失火時に碍子帯電電荷を中和する効果が得られないため、失火時に点火プラグの碍子帯電電荷によりスパイクノイズが頻発しやすいという特性がある。このような特性から、スパイクノイズ未対策の異種点火プラグでは、スパイクノイズが頻発する場合は、失火である可能性が高い。
【００２０】
このような観点から、請求項７のように、スパイクノイズ異常サイクルを検出したときに、当該スパイクノイズ異常サイクルを失火サイクルと判定するようにしても良い。このようにすれば、スパイクノイズ未対策の異種点火プラグ装着時でも失火を検出することが可能となる。
【００２１】
この場合、スパイクノイズ未対策の異種点火プラグ装着時でも、失火時のイオン電流検出手段のイオン電流出力時間が着火時よりも短くなるという特性を考慮して、請求項８のように、各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上で且つイオン電流検出手段のイオン電流出力時間が所定時間以下であるか否かで、各気筒毎にスパイクノイズ異常サイクル、失火サイクルであるか否かを判定するようにしても良い。このようにすれば、スパイクノイズ未対策の異種点火プラグ装着時の失火検出精度を向上させることができる。
【００２２】
また、点火タイミング直後（放電終了直後）に点火コイルの二次側の残留磁気エネルギによってＬＣ共振のノイズ波形が発生する。この点を考慮して、請求項９のように、スパイクノイズ検出区間の開始タイミングを、点火タイミングから所定時間経過後と上死点後の所定クランク角のうちのいずれか遅い方に設定するようにすると良い。このようにすれば、点火タイミング直後（放電終了直後）に点火コイルの二次側の残留磁気エネルギによって発生するＬＣ共振のノイズ波形をスパイクノイズと誤判定することを未然に防止することができ、スパイクノイズの検出精度を向上させることができる。
【００２３】
一般に、スパイクノイズの幅は、点火コイルの二次インダクタンスと二次浮遊容量とから決定される。このような特性を考慮して、請求項１０のように、スパイクノイズ検出のためのイオン電流検出値のＡ／Ｄ変換周期を失火等の燃焼状態検出のためのイオン電流検出値のＡ／Ｄ変換周期と同じ周期とし、且つ該Ａ／Ｄ変換周期を点火コイルの二次インダクタンスと二次浮遊容量とから決定されるスパイクノイズの幅の１／４以下に設定するようにしても良い。このようにすれば、スパイクノイズ検出のためのイオン電流検出値のＡ／Ｄ変換と燃焼状態検出のためのイオン電流検出値のＡ／Ｄ変換とを共通化して回路構成やＡ／Ｄ変換処理を簡略化することが可能となり、低コスト化・処理負荷軽減の要求を満たしながら、スパイクノイズの検出精度を確保することができる。
【００２４】
また、請求項１１のように、イオン電流検出手段によるイオン電流の検出範囲を、５〜５０μＡに制限するようにイオン電流の検出ゲインを設定するようにしても良い。このようにすれば、一般的に発生する５〜２０μＡのスパイクノイズを他のノイズと区別して検出するのに必要なスパイクノイズの検出感度を確保しながら、燃焼イオンの検出感度を高めることができる。
【００２５】
また、イオン電流検出手段を構成する回路が故障すると、その回路が発振動作して、その発振波形がスパイクノイズとして誤検出される故障モードがあるため、この故障モードでは、検出されるスパイクノイズの発生回数が実際のスパイクノイズの発生回数と比べて著しく大きくなる傾向がある。
【００２６】
このような特性を考慮して、請求項１２のように、スパイクノイズ異常サイクルを検出するための第１の判定しきい値を設定すると共に、イオン電流検出手段の故障を検出するための第２の判定しきい値を前記第１の判定しきい値よりも大きい値に設定し、スパイクノイズカウント手段によってカウントされたスパイクノイズの発生回数が前記第１の判定しきい値以上で前記第２の判定しきい値以下のときにスパイクノイズ異常サイクルと判定し、前記第２の判定しきい値を越えるときには前記イオン電流検出手段の故障と判定するようにしても良い。このようにすれば、スパイクノイズ異常サイクルとイオン電流検出手段の故障とを区別して検出することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を実施するための最良の形態を具体化した幾つかの実施例を説明する。
【実施例１】
【００２８】
本発明の実施例１を図１乃至図１１に基づいて説明する。
まず、図１に基づいて点火制御系の回路構成を説明する。
点火コイル２１の一次コイル２２の一端はバッテリ２３に接続され、該一次コイル２２の他端は、イグナイタ２４に内蔵されたパワートランジスタ２５のコレクタに接続されている。二次コイル２６の一端は点火プラグ２７に接続され、該二次コイル２６の他端は、２つのツェナーダイオード２８，２９を介してグランドに接続されている。
【００２９】
２つのツェナーダイオード２８，２９は互いに逆向きに直列接続され、一方のツェナーダイオード２８にコンデンサ３０が並列に接続され、他方のツェナーダイオード２９にイオン電流検出抵抗３１が並列に接続されている。コンデンサ３０とイオン電流検出抵抗３１との間の電位Ｖinが抵抗３２を介して反転増幅回路３３の反転入力端子（−）に入力されて反転増幅され、この反転増幅回路３３の出力電圧Ｖがイオン電流信号としてエンジン制御回路３４に入力される。イオン電流検出回路３５（イオン電流検出手段）は、ツェナーダイオード２８，２９、コンデンサ３０、イオン電流検出抵抗３１、反転増幅回路３３等から構成され、このイオン電流検出回路３５とエンジン制御回路３４とによってイオン電流検出装置が構成されている。
【００３０】
本実施例１のイオン電流検出装置は、点火プラグ２７として、スパイクノイズ対策（コロナ放電対策）を施したイオン電流検出用点火プラグを用いる仕様となっている。スパイクノイズ対策を施したイオン電流検出用点火プラグは、例えば、特開平１０−８９２２１号公報、特開２００５−１２９３９８号公報、特開２００５−１２９３９９号公報、特開平１１−２１９７７２号公報等に記載された点火プラグを用いても良いし、３極プラグを用いても良く、要は、スパイクノイズの発生を抑制する機能を備えた点火プラグを用いれば良い。
【００３１】
エンジン制御回路３４は、エンジン制御用の各種プログラムを実行するエンジン制御用マイコン４１と、イオン電流検出回路３５からのイオン電流信号を所定のサンプリング周期でＡ／Ｄ変換してエンジン制御用マイコン４１に取り込むためのイオン電流信号処理回路４２と、クランク角センサ４３、カム角センサ４４等のエンジン運転状態を検出するための各種センサ信号を処理してエンジン制御用マイコン４１に取り込むためのセンサ信号処理回路４５等を備えた構成となっている。イオン電流信号処理回路４２は、Ａ／Ｄ変換機能付きのマイコンを用いても良いし、Ａ／Ｄ変換機能付き信号処理用ＩＣで構成しても良い。
【００３２】
エンジン運転中は、エンジン制御用マイコン４１からイグナイタ２４に送信される点火信号の立ち上がり／立ち下がりでパワートランジスタ２５がオン／オフする。パワートランジスタ２５がオンすると、バッテリ２３から一次コイル２２に一次電流が流れ、その後、パワートランジスタ２５がオフすると、一次コイル２２の一次電流が遮断されて、二次コイル２６に高電圧が電磁誘導され、この高電圧によって点火プラグ２７の電極３６，３７間に火花放電が発生する。この火花放電電流は、点火プラグ２７の接地電極３７から中心電極３６へ流れ、二次コイル２６を経てコンデンサ３０に充電されると共に、ツェナーダイオード２８，２９を経てグランド側に流れる。コンデンサ３０の充電後は、ツェナーダイオード２８のツェナー電圧によって規制されるコンデンサ３０の充電電圧を電源としてイオン電流検出回路３５が駆動され、後述するようにしてイオン電流が検出される。
【００３３】
これに対して、イオン電流は、火花放電電流とは反対方向に流れる。つまり、点火終了後は、コンデンサ３０の充電電圧によって点火プラグ２７の電極３６，３７間に電圧が印加されるため、気筒内で混合気が燃焼する際に発生するイオンによって電極３６，３７間にイオン電流が流れるが、このイオン電流は、中心電極３６から接地電極３７へ流れ、更に、グランド側からイオン電流検出抵抗３１を通ってコンデンサ３０に流れる。この際、イオン電流検出抵抗３１に流れるイオン電流の変化に応じて反転増幅回路３３の入力電位Ｖinが変化し、反転増幅回路３３の出力端子からイオン電流に応じた電圧Ｖのイオン電流信号がイオン電流信号処理回路４２でＡ／Ｄ変換されてエンジン制御用マイコン４１に取り込まれる。
【００３４】
エンジン制御用マイコン４１は、クランク角センサ４３、カム角センサ４４、吸入空気量センサ（図示せず）等により検出したエンジン運転状態に応じて燃料噴射制御や点火時期制御を行うと共に、イオン電流検出回路３５から出力されるイオン電流信号を利用して、所定の燃焼イオン検出区間におけるイオン電流のピーク値、積分値、イオン出力時間ＴＭＦ等を検出して燃焼状態（失火、プレイグニッション、ノッキング、燃焼変動状態等）を判定する。
【００３５】
前述したように、本実施例１のイオン電流検出装置は、スパイクノイズ対策を施したイオン電流検出用点火プラグ２７を用いる仕様となっているが、ユーザー側で点火プラグ２７を交換する際に、スパイクノイズ未対策の異種点火プラグ（汎用の点火プラグ）が装着されてしまう可能性がある。スパイクノイズ未対策の異種点火プラグが装着された場合は、失火時に碍子帯電電荷を中和する効果が得られないため、失火時に燃焼行程後半の筒内圧力が低下する時期に点火プラグの碍子帯電電荷によりスパイクノイズが頻発しやすいという特性がある。
【００３６】
ここで、図２を用いて、スパイクノイズ対策を施したイオン電流検出用点火プラグ２７の装着時のイオン電流検出波形とスパイクノイズ未対策の異種点火プラグ装着時のイオン電流検出波形について説明する。
【００３７】
どの様な点火プラグであっても、点火コイル２１の一次側巻線２２への通電開始直後（点火信号ＯＦＦ→ＯＮ切換直後）に、短い時間幅のパルス状のノイズ電流が誘起され、点火タイミング直後（点火信号ＯＮ→ＯＦＦ切換直後）に、点火コイル２１の二次側の残留磁気エネルギによってＬＣ共振ノイズが発生し、その後、正常燃焼時には燃焼により発生したイオン（燃焼イオン）の電流波形が検出されるが、失火時には燃焼イオンが発生しないため、燃焼イオンの電流波形は検出されない。
【００３８】
スパイクノイズ対策を施したイオン電流検出用点火プラグ２７では、碍子帯電電荷によるスパイクノイズの発生が抑えられるため、図２（ｅ）に示すように、失火時にスパイクノイズによるイオン電流波形が検出されないが、スパイクノイズ未対策の異種点火プラグでは、失火時に碍子帯電電荷を中和する効果が得られないため、図２（ｆ）に示すように、失火時には、燃焼行程後半の筒内圧力が低下する時期に点火プラグの碍子帯電電荷によりスパイクノイズが頻発しやすい。
【００３９】
従来のイオン電流検出装置では、スパイクノイズ未対策の異種点火プラグが装着された場合でも、その異種点火プラグの装着を検出できないため、失火時に異種点火プラグの碍子帯電電荷により発生するスパイクノイズを燃焼イオンと誤判定する可能性があり、失火中であるにも拘らず燃焼と誤判定する可能性がある。
【００４０】
この対策として、エンジン制御用マイコン４１は、後述する図５乃至図１１のプログラムを実行することで、各気筒毎に燃焼行程を含む所定のスパイクノイズ検出区間内でイオン電流検出回路３５で検出したイオン電流の変化パターンを解析してスパイクノイズ状の急激な電流変化（以下単に「スパイクノイズ」という）の発生回数をカウントし、各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定すると共に、各気筒毎に点火回数と前記スパイクノイズ異常サイクルの発生回数をカウントして当該スパイクノイズ異常サイクルの発生頻度（所定点火回数当たりのスパイクノイズ異常サイクルの発生回数）を求めて、当該スパイクノイズ異常サイクルの発生頻度が判定しきい値以上になった気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒若しくは点火プラグ故障気筒と判定するようにしている。
【００４１】
ここで、本実施例１のスパイクノイズ未対策の異種点火プラグが装着されているか否かを判定する方法を具体的に説明する。
一般に、スパイクノイズの幅ｔo は、点火コイル２１の二次インダクタンスＬ2 と二次浮遊容量Ｃ2 によって図３に示す（１）式により算出され、例えば１００〜１５０μｓとなる。また、スパイクノイズのピーク電流ｉp は、点火プラグの碍子帯電容量ΔＣと帯電電圧Ｖt によって図３に示す（２）式により算出され、例えば５〜２０μＡとなる。
【００４２】
イオン電流の検出ゲインをイオン電流信号のサチュレートが発生するように設定したシステムでは、スパイクノイズのピーク電流ｉp が一般に５〜２０μＡとなることを考慮して、イオン電流の検出範囲を、５〜５０μＡに制限するようにイオン電流の検出ゲインを設定するようにすると良い。このようにすれば、一般的に発生する５〜２０μＡのスパイクノイズを他のノイズと区別して検出するのに必要なスパイクノイズの検出感度を確保しながら、燃焼イオンの検出感度を高めることができる。
【００４３】
また、イオン電流の変化パターンを解析してスパイクノイズ状の急激な電流変化を検出するには、イオン電流検出回路３５から出力されるイオン電流信号のＡ／Ｄ変換周期（サンプリング周期）をスパイクノイズの幅ｔo の１／４以下に設定すれば良い。この観点から、本実施例では、イオン電流信号のＡ／Ｄ変換周期を例えば１６μｓに設定している。更に、スパイクノイズ検出のためのイオン電流信号のＡ／Ｄ変換周期を失火等の燃焼状態検出のためのイオン電流信号のＡ／Ｄ変換周期と同じ周期としている。これにより、スパイクノイズ検出のためのイオン電流信号のＡ／Ｄ変換と燃焼状態検出のためのイオン電流信号のＡ／Ｄ変換とを共通化してイオン電流信号処理回路４２の構成やＡ／Ｄ変換処理を簡略化することが可能となり、低コスト化・処理負荷軽減の要求を満たしながら、スパイクノイズの検出精度を確保することができる。
【００４４】
図４に示すように、スパイクノイズ検出区間内で、所定のＡ／Ｄ変換周期（例えば１６μｓ）で取り込んだイオン電流検出値からイオン電流の変化パターンを解析して、イオン電流の変化パターンのピーク点とボトム点を検出する。この際、イオン電流検出値を取り込む毎（イオン電流信号をＡ／Ｄ変換する毎）にイオン電流の前回の検出値（ピークホールド値やボトムホールド値）と今回の検出値とを比較してイオン電流検出値が上昇方向／下降方向のいずれの方向に変化しているかを判別し、イオン電流検出値が上昇方向に変化しているときには、今回のイオン電流検出値を新たなピーク点としてピークホールドし、イオン電流検出値が下降方向に変化しているときには、今回のイオン電流検出値を新たなボトム点としてボトムホールドする。
【００４５】
この際、イオン電流の前回の検出値（ピークホールド値やボトムホールド値）と今回の検出値との変化幅が小さくてイオン電流検出値がサチュレートしてほとんど変化しないと判断されれば、そのサチュレート区間では、イオン電流変化方向の判定結果をサチュレート区間直前の状態に維持する。このようにすれば、イオン電流検出値のサチュレート状態からの電流変化をスパイクノイズと誤判定することを未然に防止することができる。
【００４６】
本実施例１では、所定時間内に所定値以上の電流変化があった場合にスパイクノイズが発生したと判断する。具体的には、ピーク点／ボトム点からの所定時間ΔＴ（例えば５０〜１００μｓ）以内のイオン電流検出値の上昇量／下降量がスパイクノイズ判定値（例えば５μＡ）を越えたか否かでスパイクノイズであるか否かを判定し、ピーク点／ボトム点からの所定時間ΔＴ以内のイオン電流検出値の上昇量／下降量がスパイクノイズ判定値を越える毎に、スパイクノイズと判断してスパイクノイズカウンタをカウントアップすることで、スパイクノイズ検出区間内のスパイクノイズの発生回数をカウントする。
【００４７】
そして、各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定すると共に、各気筒毎に点火回数と前記スパイクノイズ異常サイクルの発生回数をカウントして当該スパイクノイズ異常サイクルの発生頻度（所定点火回数当たりのスパイクノイズ異常サイクルの発生回数）を求めて、当該スパイクノイズ異常サイクルの発生頻度が判定しきい値以上になった気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒と判定する。      
【００４８】
ところで、イオン電流検出回路３５がショート等により故障すると、イオン電流検出回路３５が発振動作して、その発振波形がスパイクノイズとして誤検出される故障モードがあるため、この故障モードでは、検出されるスパイクノイズの発生回数が実際のスパイクノイズの発生回数と比べて著しく大きくなる傾向がある。
【００４９】
このような特性を考慮して、本実施例１では、スパイクノイズ異常サイクルを検出するための第１の判定しきい値を設定すると共に、イオン電流検出回路３５の故障を検出するための第２の判定しきい値を前記第１の判定しきい値よりも大きい値に設定し、スパイクノイズカウンタによってカウントされたスパイクノイズの発生回数が前記第１の判定しきい値以上で前記第２の判定しきい値以下のときにスパイクノイズ異常サイクルと判定し、前記第２の判定しきい値を越えるときにはイオン電流検出回路３５の故障と判定するようにしている。このようにすれば、スパイクノイズ異常サイクルとイオン電流検出回路３５の故障とを区別して検出することができる。
【００５０】
一般に、スパイクノイズ未対策の異種点火プラグでは、失火時に碍子帯電電荷を中和する効果が得られないため、失火時に点火プラグの碍子帯電電荷によりスパイクノイズが頻発しやすいという特性がある。このような特性から、スパイクノイズ未対策の異種点火プラグでは、スパイクノイズが頻発する場合は、失火である可能性が高い。
【００５１】
このような観点から、本実施例１では、スパイクノイズ異常サイクルを検出したときに、当該スパイクノイズ異常サイクルを失火サイクルと判定するようにしている。このようにすれば、スパイクノイズ未対策の異種点火プラグ装着時でも失火を検出することが可能となる。
【００５２】
この場合、スパイクノイズ未対策の異種点火プラグ装着時でも、失火時のイオン電流出力時間ＴＭＦが着火時よりも短くなるという特性を考慮して、本実施例１では、各気筒のスパイクノイズ検出区間内のスパイクノイズの発生回数が所定値以上で且つイオン電流出力時間ＴＭＦが所定時間以下であるか否かで、各気筒毎にスパイクノイズ異常サイクル、失火サイクルであるか否かを判定するようにしている。このようにすれば、スパイクノイズ未対策の異種点火プラグ装着時の失火検出精度を向上させることができる。
【００５３】
また、図２に示すように、点火タイミング直後（放電終了直後）に点火コイル２１の二次側の残留磁気エネルギによってＬＣ共振のノイズ波形が発生する。この点を考慮して、本実施例では、スパイクノイズ検出区間の開始タイミングを、点火タイミングから所定時間経過後（例えば２ｍｓ経過後）と上死点後の所定クランク角（例えばＡＴＤＣ３０℃Ａ）のうちのいずれか遅い方に設定するようにしている。このようにすれば、点火タイミング直後（放電終了直後）に点火コイル２１の二次側の残留磁気エネルギによって発生するＬＣ共振のノイズ波形をスパイクノイズと誤判定することを未然に防止することができ、スパイクノイズの検出精度を向上させることができる。
【００５４】
以上説明した本実施例１の異種点火プラグ検出処理は、エンジン制御用マイコン４１及びイオン電流信号処理回路４２によって図５乃至図１１に示す各プログラムに従って実行される。以下、これら各プログラムの処理内容を説明する。
【００５５】
［イオン電流信号処理］
図５のイオン電流信号処理プログラムは、イオン電流信号処理回路４２によってイオン電流信号のＡ／Ｄ変換周期で繰り返し実行される。本プログラムが起動されると、まずステップ１０１で、センサ信号処理回路４５から出力されるクランク角信号を読み込むと共に、エンジン制御用マイコン４１から出力される点火信号、失火検出区間とスパイクノイズ検出区間の指示値を読み込む。
【００５６】
この後、ステップ１０２に進み、イオン電流検出回路３５から出力されるイオン電流信号をＡ／Ｄ変換して取り込み、次のステップ１０３で、失火検出区間内であるか否かを判定し、失火検出区間内であれば、ステップ１０４に進み、失火判定処理に用いるイオン電流ピーク値とイオン電流出力時間ＴＭＦ（図２参照）等を検出する処理を実行してステップ１０５に進む。上記ステップ１０３で、失火検出区間内でないと判定されれば、上記ステップ１０４の処理を行わずにステップ１０５に進む。
【００５７】
このステップ１０５では、後述する図６乃至図８のスパイクノイズカウント処理プログラムを実行して、スパイクノイズ検出区間内のスパイクノイズの発生回数をスパイクノイズカウンタＣＳＰＮでカウントし、次のステップ１０６で、スパイクノイズカウンタＣＳＰＮのカウント値、イオン電流ピーク値、イオン電流出力時間ＴＭＦ等の各データをエンジン制御用マイコン４１に送信する。
【００５８】
［スパイクノイズカウント処理］
図６乃至図８のスパイクノイズカウント処理プログラムは、図５のイオン電流信号処理プログラムのステップ１０６で実行されるサブルーチンであり、特許請求の範囲でいうスパイクノイズカウント手段としての役割を果たす。本プログラムは、イオン電流信号処理回路４２によって実行されるが、エンジン制御用マイコン４１によって実行するようにしても良い。本プログラムは、各気筒毎にそれぞれ実行され、各気筒毎にスパイクノイズ検出区間内のスパイクノイズの発生回数がスパイクノイズカウンタＣＳＰＮでカウントされる。
【００５９】
本プログラムが起動されると、まずステップ２０１で、イオン電流信号をＡ／Ｄ変換して得られたイオン電流検出値を読み込む。そして、次のステップ２０２〜２０４で、スパイクノイズ検出区間内であるか否かを次の３つの条件(1) 〜(3) を全て満たすか否かで判定する。
【００６０】
(1) 点火タイミングから所定時間経過後（例えば２ｍｓ経過後）であること《ステップ２０２》
(2) 上死点後の所定クランク角以後（例えばＡＴＤＣ３０℃Ａ以後）であること《ステップ２０３》
(3) スパイクノイズ検出区間終了設定値（例えばＡＴＤＣ１２０℃Ａ）以前であること《ステップ２０４》
【００６１】
ここで、上記条件(1) ，(2) は、スパイクノイズ検出区間の開始タイミング以後であるか否かを判定するための条件であり、スパイクノイズ検出区間の開始タイミングは、点火タイミングから所定時間経過後（例えば２ｍｓ経過後）と上死点後の所定クランク角（例えばＡＴＤＣ３０℃Ａ）のうちのいずれか遅い方に設定されている。これにより、点火タイミング直後（放電終了直後）に点火コイル２１の二次側の残留磁気エネルギによって発生するＬＣ共振のノイズ波形をスパイクノイズと誤判定することを未然に防止することができる。本実施例１では、スパイクノイズ検出区間の開始タイミングを失火検出区間の開始タイミングよりも少し遅いタイミングに設定し、スパイクノイズ検出区間の終了タイミングを失火検出区間の終了タイミングと同一に設定しているが、必ずしもこのように設定する必要はない。
【００６２】
上記３つの条件(1) 〜(3) の中でいずれか１つでも満たさない条件がある場合（ステップ２０２〜２０４のいずれかで「Ｎｏ」と判定された場合）には、ステップ２０６に進み、スパイクノイズ検出区間外と判定して、以降の処理を行うことなく、本プログラムを終了する。
【００６３】
これに対して、上記３つの条件(1) 〜(3) を全て満たす場合（ステップ２０２〜２０４で全て「Ｙｅｓ」と判定された場合）には、ステップ２０５に進み、スパイクノイズ検出区間内と判定して、ステップ２０７に進み、スパイクノイズ検出区間内のイオン電流信号のＡ／Ｄ変換回数（イオン電流検出値の読み込み回数）が２回目以降であるか否かを判定する。その結果、１回目のＡ／Ｄ変換と判定されれば、ステップ２０８に進み、初期化処理を実行して、スパイクノイズカウンタＣＳＰＮのカウント値を初期値「０」にリセットすると共に、イオン電流変化方向判定フラグＸＵＤを上昇方向を意味する「１」にセットし、今回のイオン電流検出値を前回のイオン電流検出値の記憶データとして記憶して本プログラムを終了する。
【００６４】
一方、上記ステップ２０７で、スパイクノイズ検出区間内のイオン電流信号のＡ／Ｄ変換回数が２回目以降であると判定されれば、ステップ２０９に進み、イオン電流変化方向判定フラグＸＵＤが上昇方向を意味する「１」にセットされているか否かを判定する。その結果、イオン電流変化方向判定フラグＸＵＤ＝１（上昇方向）と判定されれば、ステップ２１０に進み、今回のイオン電流検出値が前回のピークホールド値ＶＰよりも大きいか否かを判定し、今回のイオン電流検出値が前回のピークホールド値ＶＰよりも大きければ、ステップ２１１に進み、今回のイオン電流検出値を新たなピークホールド値ＶＰとして更新記憶すると共に、今回のＡ／Ｄ変換タイミングを新たなピークタイミングＴＰとして更新記憶する。
【００６５】
また、上記ステップ２０９で、イオン電流変化方向判定フラグＸＵＤ＝０（下降方向）と判定されれば、ステップ２１２に進み、今回のイオン電流検出値が前回のボトムホールド値ＶＢよりも小さいか否かを判定し、今回のイオン電流検出値が前回のボトムホールド値ＶＢよりも小さければ、ステップ２１３に進み、今回のイオン電流検出値を新たなボトムホールド値ＶＢとして更新記憶すると共に、今回のＡ／Ｄ変換タイミングを新たなボトムタイミングＴＢして更新記憶する。
【００６６】
この後、図７のステップ２１４に進み、イオン電流変化方向判定フラグＸＵＤが上昇方向を意味する「１」にセットされているか否かを判定し、イオン電流変化方向判定フラグＸＵＤ＝１（上昇方向）であれば、ステップ２１５に進み、ピークホールド値ＶＰ（ピーク点）と今回のイオン電流検出値との差が所定値Ｃ１（例えば２μＡ）よりも大きいか否かで、イオン電流検出値の変化方向がピーク点から下降方向に反転したか否かを判定する。
【００６７】
その結果、ピークホールド値ＶＰと今回のイオン電流検出値との差が所定値Ｃ１よりも大きいと判定されれば、イオン電流検出値の変化方向がピーク点から下降方向に反転したと判断して、ステップ２１６に進み、イオン電流変化方向判定フラグＸＵＤを下降方向を意味する「０」にセットし、次のステップ２１７で、勾配カウント経歴フラグを勾配カウント経歴なしを意味する「０」にリセットする。
【００６８】
一方、上記ステップ２１５で、ピークホールド値ＶＰと今回のイオン電流検出値との差が所定値Ｃ１以下と判定されれば、イオン電流検出値の変化方向が上昇方向又はサチュレート状態と判断して、ステップ２１８に進み、イオン電流変化方向判定フラグＸＵＤを上昇方向を意味する「１」に維持する。
【００６９】
また、前述したステップ２１４で、イオン電流変化方向判定フラグＸＵＤ＝０（下降方向）と判定されれば、ステップ２１９に進み、今回のイオン電流検出値とボトムホールド値ＶＢ（ボトム点）との差が所定値Ｃ１（例えば２μＡ）よりも大きいか否かで、イオン電流検出値の変化方向がボトム点から上昇方向に反転したか否かを判定する。
【００７０】
その結果、今回のイオン電流検出値とボトムホールド値ＶＢとの差が所定値Ｃ１よりも大きいと判定されれば、イオン電流検出値の変化方向がボトム点から上昇方向に反転したと判断して、ステップ２２０に進み、イオン電流変化方向判定フラグＸＵＤを上昇方向を意味する「１」にセットし、次のステップ２２１で、勾配カウント経歴フラグを勾配カウント経歴なしを意味する「０」にリセットする。
【００７１】
一方、上記ステップ２１９で、今回のイオン電流検出値とボトムホールド値ＶＢとの差が所定値Ｃ１以下と判定されれば、イオン電流検出値の変化方向が下降方向又はサチュレート状態と判断して、ステップ２２２に進み、イオン電流変化方向判定フラグＸＵＤを下降方向を意味する「０」に維持する。
【００７２】
以上の処理により、イオン電流検出値の変化がサチュレート状態（±２μＡ以内）となっているサチュレート区間では、イオン電流変化方向判定フラグＸＵＤ（イオン電流変化方向判定結果）がサチュレート区間直前の状態に維持される。
【００７３】
この後、図８のステップ２２３に進み、イオン電流変化方向判定フラグＸＵＤが上昇方向を意味する「１」にセットされているか否かを判定し、イオン電流変化方向判定フラグＸＵＤ＝１（上昇方向）であれば、ステップ２２４に進み、ボトムホールド値ＶＢ（ボトム点）から今回のイオン電流検出値までのイオン電流上昇量ΔＶｎを算出すると共に、ボトムタイミングＴＢから今回のＡ／Ｄ変換タイミングまでの経過時間ΔＴｎを算出する。      
【００７４】
この後、ステップ２２５〜２２７で、今回のイオン電流検出値の上昇勾配がスパイクノイズであるか否かを次のようにして判定する。まず、ステップ２２５で、ボトムタイミングＴＢからの経過時間ΔＴｎが所定時間ＣＴＨ以内（例えば９６μｓ以内）であるか否かを判定し、この経過時間ΔＴｎが所定時間ＣＴＨ以内であれば、ステップ２２６に進み、勾配カウント経歴フラグが勾配カウント経歴なしを意味する「０」であるか否かを判定する。ここで、「勾配カウント経歴なし」とは、ボトムタイミングＴＢからのイオン電流検出値の上昇勾配がスパイクノイズと判定されずにスパイクノイズカウンタＣＳＰＮがまだカウントアップされていないことを意味する。
【００７５】
勾配カウント経歴フラグ＝０（勾配カウント経歴なし）であれば、ステップ２２７に進み、ボトムホールド値ＶＢから今回のイオン電流検出値までの電流上昇量ΔＶｎが所定値ＣＶＨ以上（例えば５μＡ以上）であるか否かを判定する。これらのステップ２２５〜２２７で全て「Ｙｅｓ」と判定されれば、スパイクノイズと判断して、ステップ２２８に進み、スパイクノイズカウンタＣＳＰＮをカウントアップすると共に、勾配カウント経歴フラグを勾配カウント経歴ありを意味する「１」にセットしてステップ２３４に進む。
【００７６】
以上の処理により、ボトムタイミングＴＢからの経過時間ΔＴｎが所定時間ＣＴＨ以内で、ボトムホールド値ＶＢからのイオン電流上昇量ΔＶｎが所定値ＣＶＨ以上になれば、スパイクノイズと判断してスパイクノイズカウンタＣＳＰＮを１回だけカウントアップする。
上記ステップ２２５〜２２７のいずれかで「Ｎｏ」と判定された場合は、スパイクノイズではない又は勾配カウント経歴ありと判断して、ステップ２３４に進む。
【００７７】
一方、前述したステップ２２３で、イオン電流変化方向判定フラグＸＵＤ＝０（下降方向）と判定されれば、ステップ２２９に進み、ピークホールド値ＶＰ（ピーク点）から今回のイオン電流検出値までのイオン電流下降量ΔＶｎを算出すると共に、ピークタイミングＴＰから今回のＡ／Ｄ変換タイミングまでの経過時間ΔＴｎを算出する。
【００７８】
この後、ステップ２３０〜２３２で、今回のイオン電流検出値の下降勾配がスパイクノイズであるか否かを次のようにして判定する。まず、ステップ２３０で、ピークタイミングＴＰからの経過時間ΔＴｎが所定時間ＣＴＨ以内（例えば９６μｓ以内）であるか否かを判定し、この経過時間ΔＴｎが所定時間ＣＴＨ以内であれば、ステップ２３１に進み、勾配カウント経歴フラグが勾配カウント経歴なしを意味する「０」であるか否かを判定する。ここで、「勾配カウント経歴なし」とは、ピークタイミングＴＰからのイオン電流検出値の下降勾配がスパイクノイズと判定されずにスパイクノイズカウンタＣＳＰＮがまだカウントアップされていないことを意味する。
【００７９】
勾配カウント経歴フラグ＝０（勾配カウント経歴なし）であれば、ステップ２３２に進み、ボトムホールド値ＶＢから今回のイオン電流検出値までの電流上昇量ΔＶｎが所定値ＣＶＨ以上（例えば５μＡ以上）であるか否かを判定する。これらのステップ２３０〜２３２で全て「Ｙｅｓ」と判定されれば、スパイクノイズと判断して、ステップ２３３に進み、スパイクノイズカウンタＣＳＰＮをカウントアップすると共に、勾配カウント経歴フラグを勾配カウント経歴ありを意味する「１」にセットしてステップ２３４に進む。
【００８０】
以上の処理により、ピークタイミングＴＰからの経過時間ΔＴｎが所定時間ＣＴＨ以内で、ピークホールド値ＶＰからのイオン電流下降量ΔＶｎが所定値ＣＶＨ以上になれば、スパイクノイズと判断してスパイクノイズカウンタＣＳＰＮを１回だけカウントアップする。
上記ステップ２３０〜２３２のいずれかで「Ｎｏ」と判定された場合は、スパイクノイズではない又は勾配カウント経歴ありと判断して、ステップ２３４に進む。
【００８１】
このステップ２３４では、スパイクノイズ検出区間終了（例えばＡＴＤＣ１２０℃Ａ以後）であるか否かを判定し、スパイクノイズ検出区間内と判定されれば、そのまま本プログラムを終了し、スパイクノイズ検出区間終了と判定されれば、ステップ２３５に進み、スパイクノイズ検出区間終了時のスパイクノイズカウンタＣＳＰＮのカウント値をエンジン制御用マイコン４１のメモリに更新記憶する。このスパイクノイズ検出区間終了時のスパイクノイズカウンタＣＳＰＮのカウント値は、スパイクノイズ検出区間内のスパイクノイズの発生回数を評価する情報として用いられる。
【００８２】
［異常診断］
図９及び図１０の異常診断プログラムは、エンジン制御用マイコン４１によって所定周期で実行され、特許請求の範囲でいうスパイクノイズ異常サイクル判定手段及び点火プラグ異常検出手段としての役割を果たす。本プログラムは、各気筒毎にそれぞれ実行され、各気筒毎に後述する異常診断が実行される。
【００８３】
本プログラムが起動されると、まずステップ３０１で、スパイクノイズ検出区間終了時のスパイクノイズカウンタＣＳＰＮのカウント値のデータが更新されたか否かを判定し、更新されていなければ、以降の処理を行うことなく本プログラムを終了する。
【００８４】
一方、上記ステップ３０１で、スパイクノイズ検出区間終了時のスパイクノイズカウンタＣＳＰＮのカウント値のデータが更新されたと判定されれば、ステップ３０２に進み、後述する図１１の異常診断実行条件判定プログラムの処理結果に基づいて異常診断実行条件が成立しているか否かを判定し、異常診断実行条件が成立していなければ、以降の処理を行うことなく本プログラムを終了し、異常診断実行条件が成立していれば、ステップ３０３に進み、スパイクノイズカウンタＣＳＰＮのカウント値の更新回数をカウントすると共に、点火回数をカウントする。
【００８５】
この後、ステップ３０４に進み、スパイクノイズカウンタＣＳＰＮのカウント値がスパイクノイズ異常サイクルを検出するための第１の判定しきい値ＶＣＨ１よりも大きいか否かを判定し、スパイクノイズカウンタＣＳＰＮのカウント値が第１の判定しきい値ＶＣＨ１以下であれば、スパイクノイズ異常サイクルではないと判断して、後述するステップ３１０に進む。
【００８６】
これに対して、上記ステップ３０４で、スパイクノイズカウンタＣＳＰＮのカウント値が第１の判定しきい値ＶＣＨ１よりも大きいと判定されれば、ステップ３０５に進み、スパイクノイズカウンタＣＳＰＮのカウント値がイオン電流検出回路３５の故障（発振異常）を検出するための第２の判定しきい値ＶＣＨ２よりも大きいか否かを判定する。ここで、第２の判定しきい値ＶＣＨ２は、第１の判定しきい値ＶＣＨ１よりも大きい値に設定されている。
【００８７】
このステップ３０５で、スパイクノイズカウンタＣＳＰＮのカウント値が第２の判定しきい値ＶＣＨ２よりも大きいと判定されれば、ステップ３０６に進み、イオン電流検出回路３５の発振異常サイクル（以下「回路発振異常サイクル」という）と判定して、回路発振異常サイクルの発生回数をカウントする回路発振異常サイクルカウンタＮＨＳＮをカウントアップして、後述するステップ３１０に進む。
【００８８】
また、上記ステップ３０４で「Ｙｅｓ」と判定され、且つ上記ステップ３０５で「Ｎｏ」と判定された場合、つまり、ＶＣＨ１≦ＣＳＰＮ＜ＶＣＨ２の場合は、ステップ３０７に進み、イオン電流出力時間ＴＭＦ（図２参照）が所定時間ＶＣＴ１よりも小さいか否かを判定し、イオン電流出力時間ＴＭＦが所定時間ＶＣＴ１以上であれば、着火時の燃焼イオン変動サイクル（燃焼イオンの変動をスパイクノイズと誤判定したサイクル）と判断して、後述するステップ３１０に進む。
【００８９】
これに対して、上記ステップ３０７に進み、イオン電流出力時間ＴＭＦ（図２参照）が所定時間ＶＣＴ１よりも小さいと判定されれば、ステップ３０８に進み、スパイクノイズ異常サイクルと判定すると共に、スパイクノイズ異常サイクルの発生回数をカウントするスパイクノイズ異常サイクルカウンタＮＳＰＮをカウントアップし、次のステップ３０９で、失火サイクルと判定する。
【００９０】
この後、ステップ３１０に進み、点火回数が所定回数（例えば１０００回）を越えたか否かを判定し、点火回数が所定回数以下であれば、そのまま本プログラムを終了し、点火回数が所定回数を越えていれば、ステップ３１１に進み、スパイクノイズ異常サイクルの発生回数ＮＳＰＮを所定点火回数（１０００回）で割り算することで、スパイクノイズ異常サイクルの発生頻度を算出すると共に、回路発振異常サイクルの発生回数ＮＨＳＮを所定点火回数（１０００回）で割り算することで、回路発振異常サイクルの発生頻度を算出する。
【００９１】
この後、図１０のステップ３１２に進み、スパイクノイズ異常サイクルの発生頻度が判定しきい値Ｋ１よりも大きいか否かを判定し、スパイクノイズ異常サイクルの発生頻度が判定しきい値Ｋ１よりも大きければ、ステップ３１３に進み、スパイクノイズ未対策の異種点火プラグが装着されていると判定する。スパイクノイズ異常サイクルの発生頻度が判定しきい値Ｋ１以下であれば、異種点火プラグ装着とは判定されない。
【００９２】
この後、ステップ３１４に進み、回路発振異常サイクルの発生頻度が判定しきい値Ｋ２よりも大きいか否かを判定し、回路発振異常サイクルの発生頻度が判定しきい値Ｋ２よりも大きければ、ステップ３１５に進み、回路発振故障と判定する。回路発振異常サイクルの発生頻度が判定しきい値Ｋ２以下であれば、回路発振故障とは判定されない。
以上のようにして異常診断を行った後、ステップ３１６に進み、点火回数をリセットして本プログラムを終了する。
【００９３】
［異常診断実行条件判定］
図１１の異常診断実行条件判定プログラムは、エンジン制御用マイコン４１によって所定周期で実行され、異常診断実行条件が不成立しているか否かを次のようにして判定する。本プログラムが起動されると、まずステップ４０１で、点火系の電源電圧となるバッテリ電圧が所定電圧ＣＢＨよりも高いか否かを判定し、バッテリ電圧が所定電圧ＣＢＨ以下であれば、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。バッテリ電圧が低くなると、オルタネータ（図示せず）の電圧変動の影響が相対的に大きく現れて、このオルタネータの電圧変動によって発生するノイズをスパイクノイズと誤判定する可能性があるためである。
【００９４】
上記ステップ４０１で、バッテリ電圧が所定電圧ＣＢＨよりも高いと判定されれば、ステップ４０２に進み、バッテリ電圧変動量が所定値ＣＤＢＨよりも小さいか否かを判定し、バッテリ電圧変動量が所定値ＣＤＢＨ以上であれば、バッテリが過負荷状態になっていて、オルタネータの電圧変動によって発生するノイズをスパイクノイズと誤判定する可能性があると判断して、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。
【００９５】
上記ステップ４０２で、バッテリ電圧変動量が所定値ＣＤＢＨよりも小さいと判定されれば、ステップ４０３に進み、他の異常診断機能によって点火系部品が故障状態でないと判定されているか否かを、点火系部品故障フラグ＝０であるか否かで判定し、点火系部品故障フラグ＝１（点火系部品故障状態）であれば、スパイクノイズを正常に検出できない回路状態になっているため、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。
【００９６】
上記ステップ４０３で、点火系部品故障フラグ＝０（点火系部品故障状態でない）と判定されていれば、ステップ４０４に進み、点火時期が所定値（例えばＴＤＣ）よりも進角されているか否かを判定し、点火時期が所定値（例えばＴＤＣ）よりも遅角されていれば、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。点火時期遅角時は、燃焼状態が緩慢になるため、燃焼イオンの変動によってスパイクノイズを誤検出する可能性があるためである。
【００９７】
上記ステップ４０４で、点火時期が所定値（例えばＴＤＣ）よりも進角されていると判定されれば、ステップ４０５に進み、空燃比リーン制御フラグ＝０（空燃比リーン制御中でない）か否かを判定し、空燃比リーン制御フラグ＝１（空燃比リーン制御中）であれば、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。空燃比リーン制御中は、燃焼状態が緩慢になってスパイクノイズを誤検出する可能性があるためである。
【００９８】
上記ステップ４０５で、空燃比リーン制御フラグ＝０（空燃比リーン制御中でない）と判定されれば、ステップ４０６に進み、燃焼状態が緩慢にならない異常診断許可運転領域内であるか否かを判定し、異常診断許可運転領域内でなければ、ステップ４０８に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。
これに対して、上記ステップ４０１〜４０６で全て「Ｙｅｓ」と判定されれば、ステップ４０７に進み、異常診断実行条件が成立していると判定して本プログラムを終了する。      
【００９９】
以上説明した本実施例１によれば、スパイクノイズ未対策の異種点火プラグが装着された場合に、失火時に異種点火プラグの碍子帯電電荷によりスパイクノイズが頻発する傾向があることに着目して、スパイクノイズが頻発する気筒をスパイクノイズ未対策の異種点火プラグが装着された気筒と判定することが可能となり、これにより、スパイクノイズ未対策の異種点火プラグの装着時にスパイクノイズを燃焼イオンと誤判定することを未然に防止することができる。
【実施例２】
【０１００】
図１２及び図１３に示す本発明の実施例２では、燃焼行程を含むスパイクノイズ検出区間の後に、燃焼行程を含まないバックグラウンドノイズ検出区間を設定して、前記スパイクノイズ検出区間と前記バックグラウンドノイズ検出区間でそれぞれスパイクノイズの発生回数をカウントし、各気筒毎にカウントした前記スパイクノイズ検出区間のスパイクノイズの発生回数を前記バックグラウンドノイズ検出区間のスパイクノイズの発生回数で減算補正して有効スパイクノイズ発生回数を求めて、この有効スパイクノイズ発生回数が所定値以上であるか否かで各気筒毎にスパイクノイズ異常サイクルであるか否かを判定するようにしている。
【０１０１】
一般に、スパイクノイズは、燃焼行程を含むスパイクノイズ検出区間で発生しやすく、燃焼行程を含まないバックグラウンドノイズ検出区間では、スパイクノイズが発生しにくいため、バックグラウンドノイズ検出区間では、スパイクノイズとして検出されるバックグラウンドノイズの発生回数を検出することになる。従って、スパイクノイズ検出区間のスパイクノイズの発生回数をバックグラウンドノイズ検出区間のスパイクノイズ（バックグラウンドノイズ）の発生回数で減算補正すれば、スパイクノイズ検出区間で発生するバックグラウンドノイズを除外した正味のスパイクノイズの発生回数（有効スパイクノイズ発生回数）を検出することができる。
【０１０２】
以上説明した本実施例２のスパイクノイズ異常サイクルの判定は、イオン電流信号処理回路４２（又はエンジン制御用マイコン４１）によって図１３のスパイクノイズ異常サイクル判定プログラムに従ってイオン電流信号のＡ／Ｄ変換周期で実行される。本プログラムは、各気筒毎にそれぞれ実行され、各気筒毎にスパイクノイズ異常サイクルが検出される。
【０１０３】
本プログラムが起動されると、まずステップ５０１で、燃焼行程を含むスパイクノイズ検出区間内であるか否かを判定する。このスパイクノイズ検出区間は、前記実施例１と同様の方法で設定しても良いし、予め一定のスパイクノイズ検出区間を設定しておいても良い。
【０１０４】
このステップ５０１で、スパイクノイズ検出区間内であると判定されれば、ステップ５０２に進み、前記実施例１と同様の方法で、スパイクノイズ検出区間内のスパイクノイズの発生回数ＣＳＰＮ１をカウントする。スパイクノイズ検出区間内でなければ、スパイクノイズの発生回数ＣＳＰＮ１のカウント処理は行われない。
【０１０５】
この後、ステップ５０３に進み、燃焼行程を含まないバックグラウンドノイズ検出区間内であるか否かを判定する。このバックグラウンドノイズ検出区間は、例えば、ＡＴＤＣ１８０℃ＡからＡＴＤＣ３６０℃Ａの区間に設定すれば良く、これ以外の区間に設定しても良いことは言うまでもない。
【０１０６】
このステップ５０３で、バックグラウンドノイズ検出区間内であると判定されれば、ステップ５０４に進み、スパイクノイズ検出区間と同様の方法で、バックグラウンドノイズ検出区間内のスパイクノイズ（バックグラウンドノイズ）の発生回数ＣＳＰＮ２をカウントする。バックグラウンドノイズ検出区間内でなければ、スパイクノイズの発生回数ＣＳＰＮ２のカウント処理は行われない。
【０１０７】
この後、ステップ５０５に進み、バックグラウンドノイズ検出区間が終了したか否かを判定し、バックグラウンドノイズ検出区間が終了していなければ、以降の処理を行うことなく、本プログラムを終了する。
【０１０８】
その後、バックグラウンドノイズ検出区間が終了した時点で、上記ステップ５０５の判定結果が「Ｙｅｓ」となって、ステップ５０６に進み、スパイクノイズ検出区間内のスパイクノイズの発生回数ＣＳＰＮ１からバックグラウンドノイズ検出区間内のスパイクノイズ（バックグラウンドノイズ）の発生回数ＣＳＰＮ２を減算補正して有効スパイクノイズ発生回数を求める。
有効スパイクノイズ発生回数＝ＣＳＰＮ１−ＣＳＰＮ２
【０１０９】
この後、ステップ５０７に進み、有効スパイクノイズ発生回数がスパイクノイズ異常サイクルを検出するための判定しきい値ＶＨＣＳＰ１よりも大きいか否かを判定し、有効スパイクノイズ発生回数が判定しきい値ＶＨＣＳＰ１よりも大きければ、スパイクノイズ異常サイクルと判定し（ステップ５０８）、有効スパイクノイズ発生回数が判定しきい値ＶＨＣＳＰ１以下であれば、正常サイクルと判定する（ステップ５０９）。
【０１１０】
この後、ステップ５１０に進み、バックグラウンドノイズ検出区間内のバックグラウンドノイズの発生回数ＣＳＰＮ２が判定しきい値ＶＨＣＳＰ２よりも大きいか否かを判定し、バックグラウンドノイズの発生回数ＣＳＰＮ２が判定しきい値ＶＨＣＳＰ２よりも大きければ、ステップ５１１に進み、燃焼変動検出値（後燃えによって発生する燃焼イオンの出力時間ＳＭＦ）を無効にする。バックグラウンドノイズの発生回数ＣＳＰＮ２が多いと、バックグラウンドノイズを後燃えによる燃焼イオンと誤検出する可能性があるためである。上記ステップ５１０で、バックグラウンドノイズの発生回数ＣＳＰＮ２が判定しきい値ＶＨＣＳＰ２以下であると判定されれば、ステップ５１２に進み、燃焼変動検出値を有効とする。
【０１１１】
以上説明した本実施例２によれば、スパイクノイズ検出区間のスパイクノイズの発生回数をバックグラウンドノイズ検出区間のスパイクノイズ（バックグラウンドノイズ）の発生回数で減算補正して、スパイクノイズ検出区間で発生する正味のスパイクノイズの発生回数（有効スパイクノイズ発生回数）を検出するようにしたので、スパイクノイズ異常サイクルの判定精度を向上させることができる。
【実施例３】
【０１１２】
次に、図１４及び図１５を用いて本発明の実施例３を説明する。
本実施例３では、各気筒の燃焼状態が緩慢になると、排気行程中に燃焼イオンが比較的大きく変動することに着目して、図１４の緩慢燃焼状態判定プログラム及び図１５の異常診断実行条件判定プログラムを実行することで、各気筒で排気行程毎にイオン電流検出回路３５でイオン電流信号を検出し、そのイオン電流信号の平均値が所定値以上のときに各気筒の燃焼状態が緩慢になる緩慢燃焼状態であると判断して、スパイクノイズ異常サイクルの判定を禁止して、緩慢燃焼状態になったときの燃焼イオンの変動によってスパイクノイズ異常サイクルを誤判定することを未然に防止するようにしている。
【０１１３】
以下、本実施例３でエンジン制御回路３４（イオン電流信号処理回路４２又はエンジン制御用マイコン４１）が実行する図１４の緩慢燃焼状態判定プログラム及び図１５の異常診断実行条件判定プログラムの処理内容を説明する。
【０１１４】
図１４に示す緩慢燃焼状態判定プログラムは、イオン電流信号処理回路４２（又はエンジン制御用マイコン４１）によってイオン電流信号のＡ／Ｄ変換周期で繰り返し実行される。本プログラムが起動されると、まず、ステップ６０１で、所定の燃焼イオン変動検出区間内であるか否かを判定する。ここで、燃焼イオン変動検出区間は、各気筒の排気行程に相当する区間全体（例えばＡＴＤＣ１８０℃ＡからＡＴＤＣ３６０℃Ａまでの区間）に設定されている。或は、排気行程の一部に相当する区間に設定しても良い。
【０１１５】
このステップ６０１で、燃焼イオン変動検出区間内であると判定されれば、ステップ６０２に進み、各気筒毎にイオン電流検出回路３５で検出したイオン電流信号Ｂi （例えば燃焼イオン変動検出区間内のイオン電流信号の最大値）を読み込んだ後、ステップ６０３に進み、排気行程毎（燃焼イオン変動検出区間毎）に検出したイオン電流信号Ｂi のなまし平均値Ｂave を次式により算出する。
Ｂave ＝（７／８）×Ｂave(old)＋（１／８）×Ｂi
ここで、Ｂave(old)は前回のなまし平均値である。
【０１１６】
この後、ステップ６０４に進み、排気行程毎に検出したイオン電流信号Ｂi のなまし平均値Ｂave が所定の判定値Ｃb 以上であるか否かによって、排気行程中の燃焼イオンの変動が比較的大きいか否かを判定する。
【０１１７】
このステップ６０４で排気行程毎に検出したイオン電流信号Ｂi のなまし平均値Ｂave が判定値Ｃb 以上であると判定された場合には、排気行程中の燃焼イオンの変動が比較的大きいと判断して、ステップ６０５に進み、緩慢燃焼状態であると判定して、緩慢燃焼フラグを「１」にセットする。
【０１１８】
一方、上記ステップ６０４で排気行程毎に検出したイオン電流信号Ｂi のなまし平均値Ｂave が判定値Ｃb よりも小さいと判定された場合には、ステップ６０６に進み、緩慢燃焼状態ではないと判定して、緩慢燃焼フラグを「０」にリセットする。
【０１１９】
図１５に示す異常診断実行条件判定プログラムは、エンジン制御用マイコン４１によって所定周期で繰り返し実行される。本プログラムでは、前記実施例１で説明した図１１のステップ４０１〜４０３と同じように、ステップ７０１でバッテリ電圧が所定電圧ＣＢＨよりも高いか否かを判定し、次のステップ７０２でバッテリ電圧変動量が所定値ＣＤＢＨよりも小さいか否かを判定し、続くステップ７０３で点火系部品故障フラグ＝０（点火系部品故障状態でない）か否かを判定し、これらのステップ７０１〜７０３のいずれか１つで「Ｎｏ」と判定されれば、ステップ７０６に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２０】
一方、上記ステップ７０１〜７０３で全て「Ｙｅｓ」と判定されれば、ステップ７０４に進み、緩慢燃焼状態であるか否かを、緩慢燃焼フラグ＝１であるか否かによって判定し、緩慢燃焼フラグ＝１（緩慢燃焼状態である）と判定されれば、燃焼イオンの変動によってスパイクノイズを誤検出する可能性があるため、ステップ７０６に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２１】
これに対して、上記ステップ７０４で、緩慢燃焼フラグ＝０（緩慢燃焼状態ではない）と判定されれば、ステップ７０５に進み、異常診断実行条件が成立していると判定して本プログラムを終了する。
【０１２２】
以上説明した本実施例３では、排気行程毎に検出したイオン電流信号Ｂi のなまし平均値Ｂave が判定値Ｃb 以上のときに、緩慢燃焼状態であると判定してスパイクノイズ異常サイクルの判定を禁止するようにしたので、緩慢燃焼状態になったときの燃焼イオンの変動によってスパイクノイズ異常サイクルを誤判定することを未然に防止することができる。しかも、排気行程毎に検出したイオン電流信号に基づいて緩慢燃焼状態である否かを判断することができるため、エンジン毎に燃焼状態が緩慢になる運転条件（例えば点火時期遅角量等）を適合するといった煩雑な作業を行う必要がないという利点もある。
【実施例４】
【０１２３】
次に、図１６を用いて本発明の実施例４を説明する。
本実施例４では、図１６の異常診断実行条件判定プログラムを実行することで、各気筒の燃焼安定性が低下する制御状態のとき（例えば、点火時期遅角制御中、空燃比リーン制御中、バルブオーバーラップ増大制御中）と、エンジン運転状態が所定の低負荷領域（例えば減速領域）のときと、点火プラグ２７のくすぶり状態が所定以上のときに、スパイクノイズ異常サイクルの判定を禁止して、スパイクノイズ異常サイクルの誤判定を確実に防止するようにしている。
【０１２４】
以下、本実施例４でエンジン制御用マイコン４１が実行する図１６の異常診断実行条件判定プログラムの処理内容を説明する。
図１６に示す異常診断実行条件判定プログラムは、エンジン制御用マイコン４１によって所定周期で繰り返し実行される。本プログラムでは、前記実施例１で説明した図１１のステップ４０１〜４０３と同じように、ステップ８０１でバッテリ電圧が所定電圧ＣＢＨよりも高いか否かを判定し、次のステップ８０２でバッテリ電圧変動量が所定値ＣＤＢＨよりも小さいか否かを判定し、続くステップ８０３で点火系部品故障フラグ＝０（点火系部品故障状態でない）か否かを判定し、これらのステップ８０１〜８０３のいずれか１つで「Ｎｏ」と判定されれば、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２５】
一方、上記ステップ８０１〜８０３で全て「Ｙｅｓ」と判定されれば、ステップ８０４に進み、点火時期が所定値（例えばＴＤＣ）よりも進角されているか否かを判定し、点火時期が所定値（例えばＴＤＣ）よりも遅角されている点火時期遅角制御中であれば、各気筒の燃焼安定性が低下して緩慢燃焼状態になるため、燃焼イオンの変動によってスパイクノイズを誤検出する可能性があると判断して、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２６】
上記ステップ８０４で、点火時期が所定値（例えばＴＤＣ）よりも進角されていると判定されれば、ステップ８０５に進み、空燃比リーン制御フラグ＝０（空燃比リーン制御中でない）か否かを判定し、空燃比リーン制御フラグ＝１（空燃比リーン制御中）であれば、各気筒の燃焼安定性が低下して緩慢燃焼状態になるため、燃焼イオンの変動によってスパイクノイズを誤検出する可能性があると判断して、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２７】
上記ステップ８０５で、空燃比リーン制御フラグ＝０（空燃比リーン制御中でない）と判定されれば、ステップ８０６に進み、吸気バルブのバルブタイミング進角量が所定値（例えば４０℃Ａ）よりも大きいか否かを判定し、吸気バルブのバルブタイミング進角量が所定値（例えば４０℃Ａ）よりも大きいか否かによって、バルブオーバーラップ増大制御中であるか否かを判定し、バルブオーバーラップ増大制御中であれば、各気筒の燃焼安定性が低下して緩慢燃焼状態になるため、燃焼イオンの変動によってスパイクノイズを誤検出する可能性があると判断して、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２８】
上記ステップ８０６で、吸気バルブのバルブタイミング進角量が所定値（例えば４０℃Ａ）以下であると判定されれば、ステップ８０７に進み、エンジン運転状態が減速領域であるか否かを、例えばエンジン負荷が所定値以下であるか否かによって判定し、エンジン運転状態が減速領域であれば、燃焼イオンが不安定になってスパイクノイズを誤検出する可能性があると判断して、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１２９】
上記ステップ８０７で、エンジン運転状態が減速領域ではないと判定されれば、ステップ８０８に進み、点火プラグ２７のくすぶり抵抗値（点火プラグ２７の電極間の絶縁抵抗値）が所定値（例えば５０ＭΩ）以下であるか否かによって、点火プラグ２７のくすぶり状態が所定以上に進行しているか否かを判定し、点火プラグ２７のくすぶり抵抗値が所定値以下（点火プラグ２７のくすぶり状態が所定以上）であれば、イオン電流検出精度が低下してスパイクノイズ異常サイクルを誤判定する可能性があると判断して、ステップ８１０に進み、異常診断実行条件が不成立であると判定して本プログラムを終了する。これにより、スパイクノイズ異常サイクルの判定が禁止される。
【０１３０】
これに対して、上記ステップ８０８で、点火プラグ２７のくすぶり抵抗値が所定値よりも大きければ、ステップ８０９に進み、異常診断実行条件が成立していると判定して本プログラムを終了する。
【０１３１】
以上説明した本実施例４では、各気筒の燃焼安定性が低下する制御状態のとき（例えば、点火時期遅角制御中、空燃比リーン制御中、バルブオーバーラップ増大制御時中）や、エンジン運転状態が減速領域のときや、点火プラグ２７のくすぶり状態が所定以上のときに、スパイクノイズ異常サイクルの判定を禁止するようにしたので、各気筒の燃焼安定性が低下して緩慢燃焼状態になったときの燃焼イオンの変動や、エンジン運転状態が減速領域になったときの燃焼イオンの不安定化や、点火プラグ２７のくすぶり状態が進行したときのイオン電流検出精度の低下によってスパイクノイズ異常サイクルを誤判定することを確実に防止することができる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の実施例１における点火制御系とイオン電流検出回路の構成を示す回路図である。
【図２】本発明の実施例１における点火信号、筒内圧力、スパイクノイズ検出区間、スパイクノイズ対策点火プラグの正常燃焼時の検出電流波形、失火時の検出電流波形、異種点火プラグの失火時の検出電流波形との関係を説明するタイムチャートである。
【図３】スパイクノイズのピーク値ｉp とノイズ幅ｔo の算出方法を説明する図である。
【図４】スパイクノイズの検出方法を説明するタイムチャートである。
【図５】本発明の実施例１のイオン電流信号処理プログラムの処理の流れを示すフローチャートである。
【図６】本発明の実施例１のスパイクノイズカウント処理プログラムの処理の流れを示すフローチャートである（その１）。
【図７】本発明の実施例１のスパイクノイズカウント処理プログラムの処理の流れを示すフローチャートである（その２）。
【図８】本発明の実施例１のスパイクノイズカウント処理プログラムの処理の流れを示すフローチャートである（その３）。
【図９】本発明の実施例１の異常診断プログラムの処理の流れを示すフローチャートである（その１）。
【図１０】本発明の実施例１の異常診断プログラムの処理の流れを示すフローチャートである（その２）。
【図１１】本発明の実施例１の異常診断実行条件判定プログラムの処理の流れを示すフローチャートである。
【図１２】本発明の実施例２における点火信号、スパイクノイズ検出区間、バックグラウンドノイズ検出区間、スパイクノイズ対策点火プラグの正常燃焼時の検出電流波形、燃焼悪化時の検出電流波形、失火時の検出電流波形、異種点火プラグの失火時の検出電流波形との関係を説明するタイムチャートである。
【図１３】本発明の実施例２のスパイクノイズ異常サイクル判定プログラムの処理の流れを示すフローチャートである。
【図１４】本発明の実施例３の緩慢燃焼状態判定プログラムの処理の流れを示すフローチャートである。
【図１５】本発明の実施例３の異常診断実行条件判定プログラムの処理の流れを示すフローチャートである。
【図１６】本発明の実施例４の異常診断実行条件判定プログラムの処理の流れを示すフローチャートである。
【符号の説明】
【０１３３】
２１…点火コイル、２２…一次コイル、２３…バッテリ、２４…イグナイタ、２５…パワートランジスタ、２６…二次コイル、２７…点火プラグ、３１…イオン電流検出抵抗、３３…反転増幅回路、３４…エンジン制御回路、３５…イオン電流検出回路（イオン電流検出手段）、３６…中心電極、３７…接地電極、４１…エンジン制御用マイコン（スパイクノイズ異常サイクル判定手段，点火プラグ異常検出手段）、４２…イオン電流信号処理回路（スパイクノイズカウント手段）
【図１】
0005142087.tif 000002
【図２】
0005142087.tif 000003
【図３】
0005142087.tif 000004
【図４】
0005142087.tif 000005
【図５】
0005142087.tif 000006
【図６】
0005142087.tif 000007
【図７】
0005142087.tif 000008
【図８】
0005142087.tif 000009
【図９】
0005142087.tif 000010
【図１０】
0005142087.tif 000011
【図１１】
0005142087.tif 000012
【図１２】
0005142087.tif 000013
【図１３】
0005142087.tif 000014
【図１４】
0005142087.tif 000015
【図１５】
0005142087.tif 000016
【図１６】
0005142087.tif 000017