(57)【要約】【課題】エンジン内の燃焼状態の異常を精度よく検出可能な異常検出装置を提供する。【解決手段】電子制御装置は、ＡＤ変換器３９にて、イオン電流検出回路を含むイグナイタから入力される各気筒のイオン電流検出信号ＩＯＮ＃１〜＃４をＡＤ変換する。また、前処理部４１にて、ＡＤ変換器３９から得られるＡＤ変換値を補間処理し、ＡＤ変換器３９から得られる各ＡＤ変換値の間に、推定したＡＤ変換値を内挿する。そして、補間処理後の各気筒のＡＤ変換値を、解析部４３にて信号処理し、燻り検出区間、プレイグ検出区間、燃焼区間、排気区間の各区間において、ＡＤ変換値が、基準値Ｖｔｈ以上である時間を求める。そして、例えば、燃焼区間における基準値Ｖｔｈ以上の時間Ｓｔが、予め定められた閾値以下であると、失火であると判定し、基準値Ｖｔｈ以上の時間Ｓｔが、閾値より大きい場合には、正常燃焼であると判定する。【選択図】図３
2007154662.tif 000002
【特許請求の範囲】
【請求項１】
エンジン内部の燃焼状態を表す物理量を計測する計測装置から入力される前記物理量の計測結果を表すアナログ信号を、逐次、アナログ−ディジタル変換するＡＤ変換手段と、
前記ＡＤ変換手段から出力される前記アナログ信号のＡＤ変換値であって、点火後の特定時点から所定期間の計測結果を表すＡＤ変換値の夫々を、基準値Ｖｔｈと比較し、この期間において、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を算出する時間計測手段と、
前記ＡＤ変換手段から出力される前記アナログ信号のＡＤ変換値であって、前記期間におけるＡＤ変換値のピーク値、又は、積分値を算出する特徴量算出手段と、
前記特徴量算出手段及び前記時間計測手段の算出結果に基づき、エンジン内部の燃焼状態の異常として、失火を検出する異常検出手段と、
を備えることを特徴とする異常検出装置。
【請求項２】
前記特徴量算出手段は、前記期間において、基準値Ｖｔｈ以上のＡＤ変換値を積算した値、又は、基準値Ｖｔｈ以下のＡＤ変換値を積算した値を、前記積分値として算出する構成にされていることを特徴とする請求項１記載の異常検出装置。
【請求項３】
エンジン内部の燃焼状態を表す物理量を計測する計測装置から入力される前記物理量の計測結果を表すアナログ信号を、逐次、アナログ−ディジタル変換するＡＤ変換手段と、
前記ＡＤ変換手段から出力される前記アナログ信号の各ＡＤ変換値の間に、推定したＡＤ変換値を内挿することによって、前記ＡＤ変換手段から出力される前記アナログ信号のＡＤ変換値の一群を補間処理する補間処理手段と、
前記補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって、予め定められた期間の計測結果を表すＡＤ変換値の夫々を、基準値Ｖｔｈと比較し、この期間において、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を算出する時間計測手段と、
前記時間計測手段の算出結果に基づき、エンジン内部の燃焼状態の異常を検出する異常検出手段と、
を備えることを特徴とする異常検出装置。
【請求項４】
前記ＡＤ変換手段から出力される前記アナログ信号のＡＤ変換値であって予め定められた前記期間の計測結果を表すＡＤ変換値の一群、又は、前記補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって前記期間の計測結果を表す補間処理後のＡＤ変換値の一群に基づき、この期間におけるＡＤ変換値が示す特徴量を算出する特徴量算出手段
を備え、
前記特徴量算出手段は、前記特徴量として、前記期間におけるＡＤ変換値のピーク値、又は、積分値を算出する構成にされ、
前記異常検出手段は、前記特徴量算出手段及び前記時間計測手段の算出結果に基づき、エンジン内部の燃焼状態の異常を検出する構成にされていることを特徴とする請求項３記載の異常検出装置。
【請求項５】
エンジンの運転状態に基づき、前記時間計測手段に対して設定されている基準値Ｖｔｈを更新する基準値更新手段
を備えることを特徴とする請求項１〜請求項４のいずれかに記載の異常検出装置。
【請求項６】
前記基準値Ｖｔｈは、第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］の組合せからなり、
前記時間計測手段は、前記期間の計測結果を表すＡＤ変換値の一群に基づき、ＡＤ変換値が、前記第一の基準値Ｖｔｈ［１］以上となった時点から前記第二の基準値Ｖｔｈ［２］未満となる時点までの時間、又は、ＡＤ変換値が、前記第一の基準値Ｖｔｈ［１］以下となった時点から前記第二の基準値Ｖｔｈ［２］より大きい値となる時点までの時間、を算出する構成にされていることを特徴する請求項１〜請求項４のいずれかに記載の異常検出装置。
【請求項７】
前記時間計測手段は、前記期間の計測結果を表すＡＤ変換値の一群に基づき、ＡＤ変換値が、前記第一の基準値Ｖｔｈ［１］以上となった時点から前記第一の基準値Ｖｔｈ［１］よりも小さい第二の基準値Ｖｔｈ［２］未満となる時点までの時間、又は、ＡＤ変換値が、前記第一の基準値Ｖｔｈ［１］以下となった時点から前記第一の基準値Ｖｔｈ［１］よりも大きい第二の基準値Ｖｔｈ［２］より大きい値となる時点までの時間、を算出する構成にされていることを特徴する請求項６記載の異常検出装置。
【請求項８】
エンジンの運転状態に基づき、前記時間計測手段に対して設定されている前記第一の基準値Ｖｔｈ［１］及び前記第二の基準値Ｖｔｈ［２］を更新する基準値更新手段
を備えることを特徴とする請求項６又は請求項７記載の異常検出装置。
【請求項９】
前記時間計測手段は、複数設けられ、
前記各時間計測手段は、他の時間計測手段と同一の前記期間を対象として時間計測を行う構成にされ、
前記各時間計測手段には、前記基準値Ｖｔｈとして、他の時間計測手段に設定された基準値Ｖｔｈとは、異なる値が設定されていることを特徴とする請求項１〜請求項８のいずれかに記載の異常検出装置。
【請求項１０】
エンジン内部の燃焼状態を表す物理量を計測する計測装置から入力される前記物理量の計測結果を表すアナログ信号を、逐次、アナログ−ディジタル変換するＡＤ変換手段と、
前記ＡＤ変換手段から出力される前記アナログ信号の各ＡＤ変換値の間に、推定したＡＤ変換値を内挿することによって、前記ＡＤ変換手段から出力される前記アナログ信号のＡＤ変換値の一群を補間処理する補間処理手段と、
前記補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって、予め定められた期間の計測結果を表す前記補間処理後のＡＤ変換値の一群に基づき、この期間におけるＡＤ変換値の積分値を算出する特徴量算出手段と、
前記特徴量算出手段の算出結果に基づき、エンジン内部の燃焼状態の異常を検出する異常検出手段と、
を備えることを特徴とする異常検出装置。
【請求項１１】
前記特徴量算出手段は、前記補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって、予め定められた期間の計測結果を表す前記補間処理後のＡＤ変換値の一群に基づき、この期間において、基準値Ｖｔｈ以上のＡＤ変換値を積算した値、又は、基準値Ｖｔｈ以下のＡＤ変換値を積算した値を、前記積分値として求める構成にされていることを特徴とする請求項１０記載の異常検出装置。
【請求項１２】
前記計測装置は、エンジン内部の燃焼室に設置された点火プラグとグランドとの間を流れるイオン電流を計測する装置であることを特徴とする請求項１〜請求項１１のいずれかに記載の異常検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジン内部の燃焼状態の異常を検出する異常検出装置に関する。
【背景技術】
【０００２】
従来より、エンジン内部の燃焼状態の異常を検出する異常検出装置としては、エンジン内部の燃焼室に設置された点火プラグとグランドとの間を流れるイオン電流を計測する計測装置からの入力信号を処理し、燃焼状態の異常を検出する異常検出装置が知られている（例えば、特許文献１〜４参照）。
【０００３】
また、この種の異常検出装置としては、燃焼状態の異常として、失火、点火プラグの燻り、プレイグニッションを検出するものが知られている。例えば、失火を検出する装置としては、点火後のイオン電流を表す信号を、ＡＤ（アナログ−ディジタル）変換し、このＡＤ変換値を用いて、イオン電流のピーク値や積分値を算出し、これを、基準値と比較することにより、失火を検出するものが知られている（例えば、特許文献１，２参照）。
【０００４】
その他、燻りを検出する装置としては、イオン電流を表す信号を、コンパレータにて基準値と比較し、このコンパレータからの出力信号に基づき、イオン電流を表す信号が基準値を超えている時間を計測し、燻りを検出するものが知られている（例えば、特許文献３参照）。
【特許文献１】特開２００３−１８４６３７号公報
【特許文献２】特開２００５−１２７２４２号公報
【特許文献３】特開２００４−２３９０８５号公報
【特許文献４】特開平１１−０１３５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の異常検出装置では、次のような問題があった。
例えば、失火を検出する従来装置では、上述したように、イオン電流を表す信号を、ＡＤ変換し、このＡＤ変換値を用いて、イオン電流の積分値を算出するが、イオン電流を表すアナログ信号のＡＤ変換値を単に用いて、イオン電流の積分値を算出する程度であると、ＡＤ変換の周期（サンプリング周期）によっては、ＡＤ変換後のイオン電流の計測値（ＡＤ変換値）の時間分解能が不足し、真のイオン電流の積分値と、ＡＤ変換値の積分値との間で、大きな誤差が生じる可能性があった。
【０００６】
また、上記誤差を小さくするためには、ＡＤ変換の周期を小さくすればよいが、ＡＤ変換の周期を小さくするには、高性能なＡＤ変換器を用いる必要があり、高性能なＡＤ変換器を用いると、製品の製造コストが高くなるといった問題があった。
【０００７】
その他、燻りを検出する従来装置では、コンパレータにてイオン電流が基準値を超えているか否かを判定するため、その基準値を自由に変更することができないといった問題があった。また、コンパレータを用いたハード回路にて、イオン電流が基準値を超えているか否かを判定する手法では、基準値を決定付ける抵抗値が、周囲温度と共に変化し、これに伴って、基準値が、設定値から大きくずれる可能性があった。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、エンジン内部の燃焼状態を表す物理量を計測する計測装置から入力される物理量の計測結果を表す信号を処理し、エンジン内部の燃焼状態の異常を検出する異常検出装置において、従来よりも、高精度に、燃焼状態の異常を検出することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた本発明（請求項１）の異常検出装置は、エンジン内部の燃焼状態を表す物理量を計測する計測装置から入力される物理量の計測結果を表すアナログ信号を、ＡＤ変換手段にて、逐次、アナログ−ディジタル変換する。
【００１０】
そして、ＡＤ変換手段から出力される上記アナログ信号についてのＡＤ変換値に基づき、予め定められた期間において、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を、時間計測手段にて算出する。具体的には、点火後の特定時点から所定期間の計測結果を表すＡＤ変換値の夫々を、基準値Ｖｔｈと比較し、この期間において、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を算出する。
【００１１】
また、この異常検出装置は、ＡＤ変換手段から出力される上記アナログ信号についてのＡＤ変換値であって、上記期間におけるＡＤ変換値のピーク値（上記期間におけるＡＤ変換値の最大値／最小値）、又は、積分値を、特徴量算出手段にて算出し、この特徴量算出手段及び時間計測手段の算出結果に基づき、異常検出手段にて、失火を検出する。
【００１２】
このように本発明（請求項１）の異常検出装置では、ＡＤ変換手段から出力される計測した物理量のＡＤ変換値に基づき、物理量（ＡＤ変換値）が、基準値Ｖｔｈ以上（以下）の時間を計測すると共に、同一期間における物理量（ＡＤ変換値）のピーク値又は積分値を求めることで、物理量の波形（時間変化）を解析し、失火を検出するため、単に、ＡＤ変換値のピーク値又は積分値を求め、失火を検出する従来装置よりも、高精度に、失火を検出することができる。また、本発明によれば、点火後の特定時点からの所定期間を、失火の検出区間として、時間計測等を行うので、点火時に発生するノイズの影響を受けることなく、時間計測等を実行することができ、精度よく失火を検出することができる。
【００１３】
また、本発明によれば、従来装置のように、コンパレータを用いて、物理量が基準値以上（以下）である時間を計測するのではなく、ＡＤ変換値にて、物理量が基準値以上（以下）である時間を計測するので、基準値Ｖｔｈの設定自由度が高く、基準値Ｖｔｈを、エンジン運転状態（エンジン回転数等）に対応した最適な値に設定することができる。また、ディジタル処理にて、物理量が基準値Ｖｔｈ以上（以下）である時間を計測するので、設定した基準値Ｖｔｈ等が、周囲温度等に応じて揺動することがなく、物理量が基準値Ｖｔｈ以上（以下）である時間を、正確に計測することができる。そして、この発明によれば、上記の時間計測からピーク値又は積分値の算出までを全てディジタル処理にて実現するので、コンパレータ等を用いる場合よりも、回路構成を簡素化することができる。
【００１４】
尚、特徴量算出手段は、積分値を算出する際、時間計測手段が時間計測する実期間（即ち、ＡＤ変換値が基準値Ｖｔｈ以上（以下）の期間）での積分値を算出する構成にされると、一層好ましい。このように特徴量算出手段を構成した請求項２記載の異常検出装置によれば、時間計測手段と同様に、基準値Ｖｔｈ以上のＡＤ変換値を積算した値、又は、基準値Ｖｔｈ以下のＡＤ変換値を積算した値を、上記積分値として算出するので、時間計測手段の計測結果と合わせて、基準値Ｖｔｈ以上（以下）の期間の計測信号の波形を正確に把握することができ、精度よく失火を検出することができる。
【００１５】
また、ＡＤ変換値を用いて、物理量が基準値Ｖｔｈ以上の期間の時間計測を行う場合には、ＡＤ変換値を補間処理することで、ＡＤ変換のサンプリング周期を短くすることなく、高精度に、上記時間計測を行うことが可能である。
【００１６】
請求項３記載の異常検出装置は、ＡＤ変換手段から出力される上記物理量の計測結果を表すアナログ信号の各ＡＤ変換値の間に、推定したＡＤ変換値を内挿することによって、ＡＤ変換手段から出力される上記アナログ信号のＡＤ変換値の一群を補間処理する補間処理手段を備えるものである。
【００１７】
この異常検出装置では、時間計測手段が、補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって、予め定められた期間（例えば、失火検出区間、燻り検出区間、プレイグニッション検出区間等）の計測結果を表すＡＤ変換値の夫々を、基準値Ｖｔｈと比較し、この期間において、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を算出する。そして、異常検出手段は、この時間計測手段の算出結果に基づき、エンジン内部の燃焼状態の異常（失火、燻り、プレイグニッション等）を検出する。
【００１８】
この異常検出装置によれば、補間処理後のＡＤ変換値において、補間処理前のＡＤ変換値よりも時間分解能を高めることができ、補間処理後のＡＤ変換値を用いて、物理量（ＡＤ変換値）が基準値Ｖｔｈ以上（以下）である時間を計測するので、計測時間の真値に対する誤差を小さくすることができる。従って、この発明によれば、同一性能のＡＤ変換器（ＡＤ変換手段）を用いて異常検出装置を構成した場合、補間処理をしない装置よりも、高精度に、エンジン内部の燃焼状態の異常を検出することができる。
【００１９】
また、上記異常検出装置には、更に、物理量（ＡＤ変換値）のピーク値又は積分値を算出する特徴量算出手段を設けると良い。
請求項４記載の異常検出装置では、特徴量算出手段が、ＡＤ変換手段から出力されるアナログ信号のＡＤ変換値であって予め定められた上記期間の計測結果を表すＡＤ変換値の一群、又は、補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって上記期間の計測結果を表す補間処理後のＡＤ変換値の一群に基づき、この期間におけるＡＤ変換値が示す特徴量を算出する。尚、特徴量としては、上記期間におけるＡＤ変換値のピーク値、又は、積分値を挙げることができる。また、異常検出手段は、この特徴量算出手段及び時間計測手段の算出結果に基づき、エンジン内部の燃焼状態の異常を検出する。
【００２０】
この異常検出装置では、上記時間計測に加えて、同一期間のピーク値又は積分値を算出するので、物理量の時間変化の特徴を精度よく抽出することができ、エンジン内部の燃焼状態の異常を、高精度に検出することができる。特に、補間処理後のＡＤ変換値を用いて、物理量（ＡＤ変換値）の積分値を算出する際には、真値と算出値との誤差を小さくすることができ、高精度に、物理量の積分値を算出することができるので、エンジン内部の燃焼状態の異常を、更に高精度に検出することができる。
【００２１】
また、上述したように、本発明によれば、基準値Ｖｔｈを簡単に変更することができるので、上記異常検出装置には、エンジンの運転状態に基づき、時間計測手段に対して設定されている基準値Ｖｔｈを更新する基準値更新手段を設けると良い。
【００２２】
このように構成された異常検出装置（請求項５）によれば、エンジンの運転状態（例えば、エンジン回転数）に基づき、最適な基準値Ｖｔｈを時間計測手段に対して設定することができ、エンジンの運転状態によるノイズ等の変化によって、燃焼状態の異常を誤検出したり、看過してしまうのを十分抑制することができる。
【００２３】
また、時間計測手段は、ＡＤ変換値が、基準値Ｖｔｈ以上となった時点から、それと同一の基準値Ｖｔｈ未満となる時点までの時間、又は、ＡＤ変換値が、基準値Ｖｔｈ以下となった時点から、それと同一の基準値Ｖｔｈより大きい値となる時点までの時間、を算出する構成にされてもよいが、請求項６記載のように構成されると、一層好ましい。
【００２４】
即ち、基準値Ｖｔｈは、第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］の組合せで構成され、時間計測手段は、上記期間の計測結果を表すＡＤ変換値の一群に基づき、ＡＤ変換値が、第一の基準値Ｖｔｈ［１］以上となった時点から第二の基準値Ｖｔｈ［２］未満となる時点までの時間、又は、ＡＤ変換値が、第一の基準値Ｖｔｈ［１］以下となった時点から第二の基準値Ｖｔｈ［２］より大きい値となる時点までの時間、を算出する構成にされると良い。
【００２５】
このように時間計測手段が構成された異常検出装置（請求項６）によれば、時間計測の開始条件と、時間計測の終了条件とを、異なる基準値Ｖｔｈ［１］，Ｖｔｈ［２］にて定義できるので、ノイズを考慮して、第一及び第二の基準値Ｖｔｈ［１］，Ｖｔｈ［２］を設定することで、ノイズの影響を抑えて、適切に時間計測を行うことができる。
【００２６】
尚、具体的に、上記時間計測手段は、請求項７記載のように、上記期間の計測結果を表すＡＤ変換値の一群に基づき、ＡＤ変換値が、第一の基準値Ｖｔｈ［１］以上となった時点から第一の基準値Ｖｔｈ［１］よりも小さい第二の基準値Ｖｔｈ［２］未満となる時点までの時間、又は、ＡＤ変換値が、第一の基準値Ｖｔｈ［１］以下となった時点から第一の基準値Ｖｔｈ［１］よりも大きい第二の基準値Ｖｔｈ［２］より大きい値となる時点までの時間、を算出する構成にされると良い。
【００２７】
このように異常検出装置を構成すれば、時間計測を開始した直後に、ノイズ等の影響で、一旦ＡＤ変換値が元の値に戻ってしまう場合でも、時間計測を終了することなく、適切に時間計測を継続することができる。
【００２８】
また、基準値Ｖｔｈが、第一及び第二の基準値Ｖｔｈ［１］，Ｖｔｈ［２］の組合せからなる異常検出装置には、請求項８記載のように、エンジンの運転状態に基づき、時間計測手段に対して設定されている第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］を更新する基準値更新手段を設けると良い。この異常検出装置によれば、エンジンの運転状態（例えば、エンジン回転数）に基づき、最適な基準値Ｖｔｈ［１］，Ｖｔｈ［２］を時間計測手段に対して設定することができ、エンジンの運転状態によるノイズ等の変化によって、燃焼状態の異常を誤検出したり、看過してしまうのを十分抑制することができる。
【００２９】
また、上記異常検出装置には、請求項９記載のように、時間計測手段を複数設けると良い。請求項９記載の異常検出装置は、複数の時間計測手段を備え、各時間計測手段が、他の時間計測手段と同一期間を対象として、その期間内で、ＡＤ変換値が基準値Ｖｔｈ以上である時間、又は、ＡＤ変換値が基準値Ｖｔｈ以下である時間を計測する構成にされ、各時間計測手段に対しては、基準値Ｖｔｈとして、他の時間計測手段に設定された基準値Ｖｔｈとは、異なる値が設定されたものである。
【００３０】
尚、基準値Ｖｔｈが、第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］の組合せからなる場合、「基準値Ｖｔｈが異なる」とは、第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］の組合せが、比較対象の基準値Ｖｔｈにおける第一の基準値Ｖｔｈ［１］及び第二の基準値Ｖｔｈ［２］の組合せと異なることを意味する。
【００３１】
このように構成された異常検出装置によれば、複数の基準値Ｖｔｈを用いて時間計測を行うので、計測信号の波形を、正確に把握することができ、燃焼状態の異常を精度よく検出することができる。
【００３２】
また、請求項１０記載の異常検出装置は、上記ＡＤ変換手段と、上記補間処理手段と、補間処理後のＡＤ変換値を用いて、ＡＤ変換値の積分値を算出する上記特徴量算出手段と、この特徴量算出手段の算出結果に基づき、エンジン内部の燃焼状態の異常を検出する異常検出手段と、を設けたものである。
【００３３】
この異常検出装置によれば、補間処理後のＡＤ変換値を用いて、物理量（ＡＤ変換値）の積分値を算出するので、真値と算出値との誤差を小さくすることができ、高精度に、物理量の積分値を算出することができて、燃焼状態の異常を、高精度に検出することができる。
【００３４】
また、請求項１１記載の異常検出装置は、特徴量算出手段が、補間処理手段によって内挿されたＡＤ変換値を含む補間処理後のＡＤ変換値であって、予め定められた期間の計測結果を表す上記補間処理後のＡＤ変換値の一群に基づき、この期間において、基準値Ｖｔｈ以上のＡＤ変換値を積算した値、又は、基準値Ｖｔｈ以下のＡＤ変換値を積算した値を、積分値として求める構成にされたものである。
【００３５】
基準値Ｖｔｈ以上（以下）のＡＤ変換値を積算して、積分値を求める場合には、ＡＤ変換値の時間分解能が低いと、物理量が基準値Ｖｔｈ付近の値をとる期間の積分値の誤差が大きくなる。従って、上記積分値を求める場合に、補間処理後のＡＤ変換値を積算するように、異常検出装置を構成すれば、積分値を高精度に求めることができ、燃焼状態の異常を、精度よく検出することができる。
【００３６】
また、上述した異常検出装置において、計測装置としては、エンジン内部の燃焼室に設置された点火プラグとグランドとの間を流れるイオン電流を計測する装置を挙げることができる。イオン電流の計測結果を表すアナログ信号を取扱う本発明の異常検出装置（請求項１２）によれば、従来よりも精度よく、燃焼状態の異常として、失火、燻り、プレイグニッション等を検出することができる。その他、計測装置としては、エンジンのシリンダ内圧力を検出する筒内圧センサを用いても、同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３７】
以下、本発明の実施例について、図面と共に説明する。
図１は、本発明の異常検出装置としての機能が搭載されたエンジン制御用の電子制御装置１の構成を表すブロック図である。本実施例では、４気筒ガソリンエンジンを制御対象とした電子制御装置１の構成について説明する。尚、図及び以下の説明において用いる添え字「＃１」〜「＃４」は、それらが、第一〜第四気筒＃１〜＃４のうちのいずれに対応したものであるかを表す。
【００３８】
図１に示すように、本実施例の電子制御装置１は、気筒毎のイグナイタ１０に接続されたマイコン３０と、各イグナイタ１０から入力されるイオン電流検出信号（アナログ信号）ＩＯＮ＃１〜＃４を濾波する気筒毎のフィルタ回路（ローパスフィルタ）６０と、を備える。
【００３９】
マイコン３０は、各イグナイタ１０の入力端子ＩＮに接続されたインタフェース３１と、各種プログラム実行用のＣＰＵ３３と、プログラム等を記憶するＲＯＭ３５と、作業用メモリとしてのＲＡＭ３７と、各フィルタ回路６０を介して伝送されてくる気筒毎のイオン電流検出信号ＩＯＮ＃１〜＃４を切り替えてＡＤ変換器（ＡＤＣ）３９に入力するマルチプレクサ（ＭＰＸ）３８と、マルチプレクサ３８を介して入力される気筒毎のイオン電流検出信号ＩＯＮ＃１〜＃４を、逐次ＡＤ変換して、ＡＤ変換値（ＡＤ変換後のディジタル信号）を出力するＡＤ変換器３９と、ＡＤ変換器３９から出力されるイオン電流を表すＡＤ変換値に基づき各種演算を行う信号処理部４０と、を備える。
【００４０】
また、各フィルタ回路６０は、夫々、対応するイグナイタ１０の出力端子ＯＵＴに接続され、イグナイタ１０から出力されるイオン電流検出信号ＩＯＮ＃１〜＃４から、高周波数帯域のノイズを除去する構成にされている。
【００４１】
その他、イグナイタ１０は、点火プラグ２７に高電圧を印加して点火を実現するものであり、マイコン３０からの点火信号ＩＧＴに従ったタイミングにて、点火プラグ２７に高電圧を印加する構成にされている。そして、図示しないエンジンは、この点火プラグ２７により、吸入空気及びインジェクタから噴射される燃料からなる混合気を燃焼室内で爆発させる。
【００４２】
図２は、イグナイタ１０の構成を表す回路図である。図２に示すように、本実施例のイグナイタ１０は、イグニションコイル１１、イグナイタ回路１５、及び、イオン電流を検出（計測）するイオン電流検出回路２０によって構成されている。イグニションコイル１１は、一次巻線１２及び二次巻線１３を備え、イグナイタ回路１５は、ドライブ回路１６及びパワートランジスタ１７を備え、イオン電流検出回路２０は、コンデンサ２１、ツェナーダイオード２２，２３、抵抗器２４、反転増幅器２５、Ｖ／Ｉ（電圧／電流）変換器２６を備える。
【００４３】
イグニションコイル１１の一次巻線１２の一端は、電源１４に接続されており、他端は、パワートランジスタ１７に接続されている。また、ドライブ回路１６は、一端が、点火信号ＩＧＴ入力用の入力端子ＩＮに接続され、他端が、パワートランジスタ１７の制御電極に接続された構成にされている。
【００４４】
一方、イグニションコイル１１の二次巻線１３の一端は、点火プラグ２７に接続されており、点火プラグ２７は、二次巻線１３の上記一端に接続された放電用電極２８、及び、放電用電極２８に対向配置されたグランド電極２９によって構成されている。尚、点火プラグ２７は、各気筒の燃焼室内に露出して設けられ、グランド電極２９は、燃焼室壁を介して、接地されている。
【００４５】
また、二次巻線１３の他端は、イオン電流検出回路２０のツェナーダイオード２２，２３を介して接地されており、ツェナーダイオード２２，２３には、夫々、コンデンサ２１及びイオン電流検出用の抵抗器２４が並列接続されている。そして、コンデンサ２１と抵抗器２４との接続点は、反転増幅器２５及びＶ／Ｉ変換器２６を介し、イオン電流検出回路２０の出力端子ＯＵＴに接続されている。
【００４６】
ここで、イグナイタ１０の動作について説明する。電子制御装置１からインタフェース３１を通じて入力される点火信号ＩＧＴにより、イグナイタ１０では、ドライブ回路１６を介してパワートランジスタ１７がオン／オフ制御され、一次巻線１２への一次電流の通電・遮断が行われる。そして、一次電流の遮断時に、二次巻線１３では、負の二次電圧が誘起され、これによって、点火プラグ２７のグランド電極２９から放電用電極２８に向けて放電火花が生じ、燃焼室内では、混合気が燃焼される。また、この時に流れる二次電流によってコンデンサが充電される。
【００４７】
また、正常に燃焼が行われると、燃焼室内には大量の陽イオンが発生する。そして、この陽イオンは、イオン電流となって、抵抗器２４、コンデンサ２１、二次巻線１３、放電用電極２８、及び、グランド電極２９を介した経路で流れる。そして、このイオン電流によって、抵抗器２４の両端間に発生する電圧は、順方向のイオン電流が正値で得られるように反転増幅器２５によって反転増幅され、Ｖ／Ｉ変換器２６により電流に変換された後、イオン電流検出信号ＩＯＮとして、出力端子ＯＵＴから出力される。
【００４８】
尚、燃焼室内で、プレイグニッションが発生した場合には、放電火花による点火前に燃焼が生じることになるので、点火前に、出力端子ＯＵＴから、イオン電流検出信号ＩＯＮが出力される。その他、点火プラグ２７では、絶縁碍子の表面にカーボンなどの物質が付着して、点火プラグ２７の電極２８，２９間の抵抗値（絶縁抵抗）が低下する現象、所謂、燻りが発生することがあるが、このような燻りが発生している場合には、抵抗値の低下に伴う漏洩電流が、イオン電流検出信号ＩＯＮとして、出力端子ＯＵＴから出力される。
【００４９】
続いて、ＡＤ変換器３９から出力されるイオン電流検出信号ＩＯＮのＡＤ変換値を受け付け、これを用いた各種演算処理を行う信号処理部４０の詳細について説明する。図３は、信号処理部４０が有する各機能を示したブロック図であり、図４は、信号処理部４０に入力される信号を示すタイムチャートである。
【００５０】
本実施例の信号処理部４０は、専用ＩＣにて構成されており、図３に示すように、前処理部４１と、気筒毎の解析部４３と、を備えた構成にされている。前処理部４１は、ＡＤ変換器３９から出力されるＡＤ変換値を取得し、このＡＤ変換値の一群を補間処理する構成にされており、解析部４３は、補間処理後のＡＤ変換値を用いて、各種演算処理を行う構成にされている。
【００５１】
具体的に、各解析部４３は、燻り・プレイグ区間処理部４５と、燃焼・排気区間処理部５０と、ドリフト検出処理部５５とを備える。尚、ここで言う「プレイグ」とは、「プレイグニッション」のことである。
【００５２】
燻り・プレイグ区間処理部４５は、燻り・プレイグ区間時間計測処理部４６と、レジスタ４７とを備え、予め定められた燻り検出区間、及び、プレイグ検出区間を、点火信号ＩＧＴ、タイマー値ＴＩＭＥＲ等によって判別する。そして、燻り・プレイグ区間時間計測処理部４６では、これら各区間において、補間処理後のＡＤ変換値が、レジスタ４７に設定された基準値以上である時間を算出し、この算出値を出力して、ＲＡＭ３７に書き込む。
【００５３】
一方、燃焼・排気区間処理部５０は、燃焼・排気区間時間計測処理部５１、積算Ｐ／Ｈ（ピークホールド）処理部５２、及び、レジスタ５３を備え、予め定められた燃焼区間、及び、排気区間を、点火信号ＩＧＴ、クランク角度が所定角度（３０度）進む度に出力される回転数信号ＮＥ、基準信号、タイマー値ＴＩＭＥＲ等によって判別する。そして、燃焼・排気区間時間計測処理部５１では、補間処理後のＡＤ変換値の一群に基づき、各区間におけるＡＤ変換値がレジスタ５３に設定された基準値以上である時間を算出し、積算Ｐ／Ｈ（ピークホールド）処理部５２では、各区間でのＡＤ変換値の最大値、及び、各区間でのＡＤ変換値の積算値を算出し、これら算出値を出力して、ＲＡＭ３７に書き込む。
【００５４】
その他、ドリフト検出処理部５５は、燻り等で発生するイオン電流検出信号ＩＯＮのドリフト量（イオン電流の検出誤差）を、予め定められたドリフト検出区間におけるＡＤ変換値の一群に基づき算出し、この算出値を出力して、ＲＡＭ３７に書き込む構成にされている。
【００５５】
続いて、前処理部４１が実行する処理について、図５を用いて説明する。図５は、前処理部４１が実行する処理を表すフローチャートである。
前処理部４１は、図５に示す処理を開始すると、ＡＤ変換の周期（サンプリング周期）Ｔｓを、所定値（本実施例ではＴｓ＝５μ秒）に設定して、ＡＤ変換器３９を起動すると共に（Ｓ１１０）、補間数ｎを所定値（本実施例ではｎ＝４）に設定し（Ｓ１２０）、更に、パラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の各値を、ゼロに初期化する（Ｓ１３０）。
【００５６】
尚、ここで用いるパラメータｍは、気筒番号を示すものである。本実施例では、４気筒ガソリンエンジンを前提としているため、パラメータａｄ［１，０］〜ａｄ［１，ｎ］，ａｄ［２，０］〜ａｄ［２，ｎ］，ａｄ［３，０］〜ａｄ［３，ｎ］，ａｄ［４，０］〜ａｄ［４，ｎ］の各値を、ゼロに初期化する。
【００５７】
また、この処理を終えると、前処理部４１は、ＡＤ変換器３９から出力されるＡＤ変換値Ｙを取得すると共に（Ｓ１４０）、取得したＡＤ変換値Ｙに対応する気筒番号を判別し、この気筒番号を、パラメータｍに設定する（Ｓ１５０）。即ち、取得したＡＤ変換値Ｙが、いずれの気筒に対応するイグナイタ１０から伝送されてきたイオン電流検出信号ＩＯＮについてのＡＤ変換値Ｙであるかを判別し、このＡＤ変換値Ｙに対応する気筒番号を、パラメータｍに設定する。尚、本実施例では、サンプリング周期Ｔｓ＝５μ秒に設定するので、ＡＤ変換値Ｙとしては、５μ秒毎に、第一気筒の値、第三気筒の値、第四気筒の値、第二気筒の値が、順に得られることになり、同一気筒のＡＤ変換値については、２０μ秒毎に得られることになる。
【００５８】
また、このようにして気筒判別を終了すると、前処理部４１は、図６に示す補間処理を実行し、取得したＡＤ変換値Ｙの直線補間を行う（Ｓ１６０）。尚、図６は、前処理部４１が実行する補間処理を表すフローチャートであり、図７は、この前処理部４１にて生成される補間処理後のＡＤ変換値の時系列データ（同一気筒についての時系列データ）を表す図である。
【００５９】
補間処理を開始すると、前処理部４１は、Ｓ１６１にて、Ｓ１５０で判別した気筒番号ｍに対応するパラメータａｄ［ｍ，０］に、この気筒に対応する現在のパラメータａｄ［ｍ，ｎ］の値を設定する（ａｄ［ｍ，０］←ａｄ［ｍ，ｎ］）。即ち、この動作により、ａｄ［ｍ，０］に対し、前回の補間処理にて更新したａｄ［ｍ，ｎ］の値を設定する。
【００６０】
また、この処理を終えると、前処理部４１は、Ｓ１６３に移行し、上記判別した気筒に対応するパラメータａｄ［ｍ，ｎ］に、Ｓ１４０で取得したＡＤ変換値Ｙを設定する（ａｄ［ｍ，ｎ］←Ｙ）。そして、パラメータｉを値ｎ−１（ｎ＝４の場合には、ｉ＝３）に設定して（Ｓ１６５）、上記判別した気筒に対応するパラメータａｄ［ｍ，ｉ］に、値（ａｄ［ｍ，ｎ］−ａｄ［ｍ，０］）×ｉ／ｎ＋ａｄ［ｍ，０］を設定する（Ｓ１６６）。
【００６１】
また、この処理を終えると、前処理部４１は、Ｓ１６７にて、パラメータｉの値を１引いて更新し（ｉ←ｉ−１）、更新したパラメータｉの値がゼロ（ｉ＝０）であるか否かを判断する（Ｓ１６９）。そして、ｉ＝０ではないと判断すると（Ｓ１６９でＮｏ）、Ｓ１６６に移行し、更新したパラメータｉの値を用いて、パラメータａｄ［ｍ，ｉ］の値を設定し、Ｓ１６７にて、パラメータｉの値を１減算する。そして、ｉ＝０となると（Ｓ１６９でＹｅｓ）、当該補間処理を終了する。
【００６２】
また、Ｓ１６０で上記補間処理を終了すると、前処理部４１は、Ｓ１７０に移行し、時間Ｔｓ間隔で到来する次のＡＤ変換タイミングが到来するまで待機する。そして、ＡＤ変換の終了指令が外部から入力されていなければ（Ｓ１８０でＮｏ）、上記タイミングが到来した時点で、新規にＡＤ変換器３９から出力されたＡＤ変換値Ｙを取得し（Ｓ１４０）、Ｓ１５０以降の処理を実行する。一方、ＡＤ変換の終了指令が外部から入力されている場合には（Ｓ１８０でＹｅｓ）、当該処理を終了する。
【００６３】
このような前処理部４１の動作により、ＡＤ変換器３９から入力される各気筒のイオン電流検出信号ＩＯＮ＃１〜＃４のＡＤ変換値の間には、ｎ−１個の推定したＡＤ変換値が内挿されることになる。即ち、補間処理前の各気筒のＡＤ変換値の一群は、時間間隔がＭ・Ｔｓの時系列データとして構成されるが（Ｍは気筒数であって本実施例ではＭ＝４）、前処理部４１にて生成される各気筒の補間処理後のＡＤ変換値の一群は、時間間隔がＭ・Ｔｓ／ｎの時系列データとして構成される。
【００６４】
続いて、燻り・プレイグ区間時間計測処理部４６が実行する処理について説明する。図８は、燻り・プレイグ区間時間計測処理部４６が繰返し実行する処理を表すフローチャートである。また、以下において、各解析部４３で実行される処理の説明の際に用いるパラメータｍは、処理を実行する主体（処理部）に割り当てられた気筒（自気筒）の気筒番号を値に採るものとする。
【００６５】
図８に示す処理を開始すると、燻り・プレイグ区間時間計測処理部４６は、まず、自身に割り当てられた気筒（自気筒）の行程が、燻り検出区間にあるか否かを判断する（Ｓ２１０）。尚、本実施例では、自気筒の点火信号ＩＧＴがオンにされた時点から、所定時間経過後までの期間が、燻り検出区間として定義されているものとする。
【００６６】
そして、自気筒の行程が燻り検出区間であると判断すると（Ｓ２１０でＹｅｓ）、燻り・プレイグ区間時間計測処理部４６は、各種パラメータを初期化する（Ｓ２２０）。具体的に、ここでは、パラメータＣＮＴ，Ｔをゼロに初期化する。
【００６７】
また、この処理を終えると、燻り・プレイグ区間時間計測処理部４６は、パラメータＶｔｈに、レジスタ４７に設定された燻り検出用基準値を、設定する（Ｓ２３０）。但し、この燻り・プレイグ区間時間計測処理部４６で用いられるパラメータＣＮＴ，Ｔ，Ｖｔｈは、他の処理部５１，５２で用いられるパラメータＣＮＴ，Ｔ，Ｖｔｈとは独立したパラメータであるものとする。
【００６８】
そして、Ｓ２３０での処理を終えると、燻り・プレイグ区間時間計測処理部４６は、燻り検出区間における自気筒の補間処理後のＡＤ変換値が基準値Ｖｔｈ以上である時間を計測するために、Ｓ２４０にて図９に示す時間計測処理を実行する。尚、図９は、時間計測処理を表すフローチャートである。
【００６９】
図９に示す時間計測処理を開始すると、燻り・プレイグ区間時間計測処理部４６は、パラメータｉを値１に初期化した後（Ｓ４１０）、Ｓ４２０に移行し、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ以上であるかを判断する。但し、この燻り・プレイグ区間時間計測処理部４６で用いられるパラメータｉは、他の処理部４１，５１，５２で用いられるパラメータｉとは独立したパラメータであるものとする。
【００７０】
そして、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ以上であると判断すると（Ｓ４２０でＹｅｓ）、Ｓ４３０において、パラメータＣＮＴの値を１を足して更新し（ＣＮＴ←ＣＮＴ＋１）、その後、Ｓ４４０に移行する。
【００７１】
また、Ｓ４４０に移行すると、燻り・プレイグ区間時間計測処理部４６は、パラメータｉの値を１足して更新し、その後、パラメータｉが、値ｎ（本実施例ではｎ＝４）より大きいか否かを判断する（Ｓ４５０）。そして、パラメータｉが、値ｎ以下であると判断すると（Ｓ４５０でＮｏ）、Ｓ４２０に移行し、更新後のパラメータｉの値を用いて、ａｄ［ｍ，ｉ］≧Ｖｔｈであるか否かを判断する。一方、パラメータｉが、値ｎより大きいと判断すると（Ｓ４５０でＹｅｓ）、当該時間計測処理を終了する。
【００７２】
その他、燻り・プレイグ区間時間計測処理部４６は、Ｓ４２０にて、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ未満であると判断すると（Ｓ４２０でＮｏ）、パラメータＣＮＴの値がゼロであるか否かを判断し（Ｓ４６０）、パラメータＣＮＴの値がゼロであると判断すると（Ｓ４６０でＹｅｓ）、Ｓ４４０に移行する。
【００７３】
一方、パラメータＣＮＴの値がゼロではないと判断すると（Ｓ４６０でＮｏ）、燻り・プレイグ区間時間計測処理部４６は、Ｓ４７０に移行し、計測時間を表すパラメータＴを、値（ＣＮＴ×Ｔｓ×Ｍ／ｎ）を足した値に更新する（Ｔ←Ｔ＋ＣＮＴ×Ｔｓ×Ｍ／ｎ）。そして、この処理を終えると、パラメータＣＮＴの値を、ゼロに初期化した後（Ｓ４８０）、当該時間計測処理を終了する。
【００７４】
また、燻り・プレイグ区間時間計測処理部４６は、Ｓ２４０での時間計測処理を終えると、Ｍ×Ｔｓ時間毎（本実施例では２０μ秒毎）に行われる自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ２５０）、上記パラメータが更新されると、その時点で、燻り検出区間が終了しているか否かを判断する（Ｓ２６０）。尚、Ｓ２６０では、予め定義された上記の燻り検出区間が終了した時点で、燻り検出区間が終了していると判断してもよいし、上記定義された燻り検出区間が終了していなくとも、パラメータＴの値が更新された時点で（Ｓ４７０の処理が実行された時点で）、燻り検出区間が終了していると判断してもよい。
【００７５】
燻り・プレイグ区間時間計測処理部４６は、ここで、燻り検出区間が終了していないと判断すると（Ｓ２６０でＮｏ）、Ｓ２４０に移行し、燻り検出区間が終了していると判断すると（Ｓ２６０でＹｅｓ）、その時点でのパラメータＴの値を、燻り区間時間Ｋｔ［ｍ］として出力する（Ｓ２７０）。この動作により、燻り区間時間Ｋｔ［ｍ］は、ＲＡＭ３７に書き込まれる。
【００７６】
尚、出力される燻り区間時間Ｋｔ［ｍ］は、上述の処理により、燻り検出区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間を表す。具体的に、予め定義された上記燻り検出区間の終了時点まで、Ｓ２４０〜Ｓ２６０の処理を繰り返す場合、燻り区間時間Ｋｔ［ｍ］は、燻り検出区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間の積算値を示し、上記定義された燻り検出区間が終了していなくとも、パラメータＴの値が更新された時点で、燻り検出区間が終了していると判断する場合、燻り区間時間Ｋｔ［ｍ］は、ＡＤ変換値が基準値Ｖｔｈ未満となった時点までの時間を示す。また、Ｓ２７０での処理を終了すると、燻り・プレイグ区間時間計測処理部４６は、Ｓ２１０に移行する。
【００７７】
その他、燻り・プレイグ区間時間計測処理部４６は、Ｓ２１０において、自気筒の行程が、燻り検出区間にないと判断すると（Ｓ２１０でＮｏ）、Ｓ３１０に移行し、自気筒の行程が、プレイグ検出区間にあるか否かを判断する（Ｓ３１０）。尚、本実施例では、自気筒の点火信号ＩＧＴがオンにされた時点を基点として、所定時間経過後（但し、燻り検出区間の終了点よりも後の時点）から、点火信号ＩＧＴがオフにされた時点までの期間が、プレイグ検出区間として定義されている。
【００７８】
そして、自気筒の行程がプレイグ検出区間にはないと判断すると（Ｓ３１０でＮｏ）、Ｓ２１０に移行し、自気筒の行程がプレイグ検出区間にあると判断すると（Ｓ３１０でＹｅｓ）、各種パラメータを初期化する（Ｓ３２０）。具体的に、ここでは、パラメータＣＮＴ，Ｔをゼロに初期化する。また、この初期化と共に、パラメータＶｔｈに、レジスタ４７に設定されたプレイグ検出用基準値を設定する（Ｓ３３０）。
【００７９】
そして、Ｓ３３０での処理を終えると、燻り・プレイグ区間時間計測処理部４６は、プレイグ検出区間における自気筒の補間処理後のＡＤ変換値が基準値Ｖｔｈ以上である時間を計測するために、Ｓ３４０にて図９に示す時間計測処理を実行する。
【００８０】
また、燻り・プレイグ区間時間計測処理部４６は、Ｓ３４０での時間計測処理を終えると、自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ３５０）、上記パラメータが更新されると、その時点で、プレイグ検出区間が終了しているか否かを判断する（Ｓ３６０）。尚、Ｓ３６０では、予め定義された上記のプレイグ検出区間が終了した時点で、プレイグ検出区間が終了していると判断してもよいし、上記定義されたプレイグ検出区間が終了していなくとも、パラメータＴの値が更新された時点で（Ｓ４７０の処理が実行された時点で）、プレイグ検出区間が終了していると判断してもよい。
【００８１】
燻り・プレイグ区間時間計測処理部４６は、ここで、プレイグ検出区間が終了していないと判断すると（Ｓ３６０でＮｏ）、Ｓ３４０に移行し、プレイグ検出区間が終了していると判断すると（Ｓ３６０でＹｅｓ）、その時点でのパラメータＴの値を、プレイグ区間時間Ｐｔ［ｍ］として出力する（Ｓ３７０）。この動作により、プレイグ区間時間Ｐｔ［ｍ］は、ＲＡＭ３７に書き込まれる。
【００８２】
尚、出力されるプレイグ区間時間Ｐｔ［ｍ］は、上述の処理により、プレイグ検出区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間を表す。具体的に、予め定義された上記プレイグ検出区間の終了時点まで、Ｓ３４０〜Ｓ３６０の処理を繰り返す場合、上記プレイグ区間時間Ｐｔ［ｍ］は、プレイグ検出区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間の積算値を表す。一方、上記定義されたプレイグ検出区間が終了していなくとも、パラメータＴの値が更新された時点で、プレイグ検出区間が終了していると判断する場合、プレイグ区間時間Ｐｔ［ｍ］は、ＡＤ変換値が基準値Ｖｔｈ未満となった時点までの時間を示す。また、Ｓ３７０の処理を終了すると、燻り・プレイグ区間時間計測処理部４６は、Ｓ２１０に移行する。
【００８３】
続いて、燃焼・排気区間時間計測処理部５１が実行する処理について説明する。図１０は、燃焼・排気区間時間計測処理部５１が繰返し実行する処理を表すフローチャートである。
【００８４】
燃焼・排気区間時間計測処理部５１は、図１０に示す処理を開始すると、まず、自気筒の行程が燃焼区間にあるか否かを判断する（Ｓ５１０）。尚、本実施例では、自気筒の点火信号ＩＧＴがオフにされた時点（点火開始時）を基点として、その所定時間経過後（例えば、０．５ミリ秒後）から、クランク角度が所定角度（例えば、６０°ＣＡや下死点に対応する角度）となる時点までの期間が、燃焼区間として定義されているものとする。
【００８５】
そして、自気筒の行程が燃焼区間であると判断すると（Ｓ５１０でＹｅｓ）、燃焼・排気区間時間計測処理部５１は、各種パラメータを初期化する（Ｓ５２０）。具体的に、ここでは、パラメータＣＮＴ，Ｔをゼロに初期化する。また、この初期化と共に、パラメータＶｔｈに、レジスタ５３に設定された燃焼区間用基準値を設定する（Ｓ５３０）。但し、この燃焼・排気区間時間計測処理部５１で用いられるパラメータＣＮＴ，Ｔ，Ｖｔｈは、他の処理部４６，５２で用いられるパラメータＣＮＴ，Ｔ，Ｖｔｈとは独立したパラメータであるものとする。
【００８６】
そして、Ｓ５３０での処理を終えると、燃焼・排気区間時間計測処理部５１は、燃焼区間における自気筒の補間処理後のＡＤ変換値が基準値Ｖｔｈ以上である時間を計測するために、Ｓ５４０にて図９に示す時間計測処理を実行する。尚、燃焼・排気区間時間計測処理部５１で用いられるパラメータｉは、他の処理部４１，４６，５２で用いられるパラメータｉとは独立したパラメータである。
【００８７】
また、燃焼・排気区間時間計測処理部５１は、Ｓ５４０での時間計測処理を終えると、自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ５５０）、上記パラメータが更新されると、その時点で、燃焼区間が終了しているか否かを判断する（Ｓ５６０）。尚、Ｓ５６０では、予め定義された上記燃焼区間が終了した時点で、燃焼区間が終了していると判断してもよいし、上記定義された燃焼区間が終了していなくとも、パラメータＴの値が更新された時点で（Ｓ４７０の処理が実行された時点で）、燃焼区間が終了していると判断してもよい。
【００８８】
燃焼・排気区間時間計測処理部５１は、ここで、燃焼区間が終了していないと判断すると（Ｓ５６０でＮｏ）、Ｓ５４０に移行し、燃焼区間が終了していると判断すると（Ｓ５６０でＹｅｓ）、その時点でのパラメータＴの値を、燃焼区間時間Ｓｔ［ｍ］として出力する（Ｓ５７０）。この動作により、燃焼区間時間Ｓｔ［ｍ］は、ＲＡＭ３７に書き込まれる。
【００８９】
尚、出力される燃焼区間時間Ｓｔ［ｍ］は、上述の処理により、燃焼区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間を表す。具体的に、予め定義された上記燃焼区間の終了時点まで、Ｓ５４０〜Ｓ５６０の処理を繰り返す場合、燃焼区間時間Ｓｔ［ｍ］は、燃焼区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間の積算値を示す。また、上記定義された燃焼区間が終了していなくとも、パラメータＴの値が更新された時点で、燃焼区間が終了していると判断する場合、燃焼区間時間Ｓｔ［ｍ］は、ＡＤ変換値が基準値Ｖｔｈ未満となった時点までの時間を示す。また、Ｓ５７０の処理を終了すると、燃焼・排気区間時間計測処理部５１は、Ｓ５１０に移行する。
【００９０】
その他、燃焼・排気区間時間計測処理部５１は、Ｓ５１０において、自気筒の行程が燃焼区間にないと判断すると（Ｓ５１０でＮｏ）、Ｓ６１０に移行し、自気筒の行程が排気区間にあるか否かを判断する（Ｓ６１０）。尚、本実施例では、自気筒の点火信号ＩＧＴがオンにされた時点を基点として、クランク角度が所定角度（例えば、下死点に対応する角度）となった時点から、クランク角度が上記角度よりも先の所定角度（例えば、上死点に対応する角度又は、それより若干手前の角度）となる時点までの期間が、排気区間として定義されているものとする。
【００９１】
そして、自気筒の行程が排気区間にはないと判断すると（Ｓ６１０でＮｏ）、燃焼・排気区間時間計測処理部５１は、Ｓ５１０に移行し、自気筒の行程が排気区間にあると判断すると（Ｓ６１０でＹｅｓ）、各種パラメータを初期化する（Ｓ６２０）。具体的に、ここでは、パラメータＣＮＴ，Ｔをゼロに初期化する。また、この初期化と共に、パラメータＶｔｈに、レジスタ５３に設定された排気区間用基準値を、設定する（Ｓ６３０）。
【００９２】
そして、Ｓ６３０での処理を終えると、燃焼・排気区間時間計測処理部５１は、排気区間における自気筒の補間処理後のＡＤ変換値が基準値Ｖｔｈ以上である時間を計測するために、Ｓ６４０にて図９に示す時間計測処理を実行する。
【００９３】
また、Ｓ６４０での時間計測処理を終えると、燃焼・排気区間時間計測処理部５１は、自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ６５０）、上記パラメータが更新されると、その時点で、排気区間が終了しているか否かを判断する（Ｓ６６０）。尚、Ｓ６６０では、予め定義された上記排気区間が終了した時点で、排気区間が終了していると判断してもよいし、上記定義された燃焼区間が終了していなくとも、パラメータＴの値が更新された時点で（Ｓ４７０の処理が実行された時点で）、排気区間が終了していると判断してもよい。
【００９４】
燃焼・排気区間時間計測処理部５１は、ここで、排気区間が終了していないと判断すると（Ｓ６６０でＮｏ）、Ｓ６４０に移行し、燃焼区間が終了していると判断すると（Ｓ６６０でＹｅｓ）、その時点でのパラメータＴの値を、排気区間時間Ｈｔ［ｍ］として出力する（Ｓ６７０）。この動作により、排気区間時間Ｈｔ［ｍ］は、ＲＡＭ３７に書き込まれる。
【００９５】
尚、出力される排気区間時間Ｈｔ［ｍ］は、上述の処理により、排気区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間を表す。具体的に、予め定義された上記排気区間の終了時点まで、Ｓ６４０〜Ｓ６６０の処理を繰り返す場合、上記排気区間時間Ｈｔ［ｍ］は、排気区間における補間処理後のＡＤ変換値が基準値Ｖｔｈ以上であった時間の積算値を表す。一方、上記定義された排気区間が終了していなくとも、パラメータＴの値が更新された時点で、排気区間が終了していると判断する場合、排気区間時間Ｈｔ［ｍ］は、ＡＤ変換値が基準値Ｖｔｈ未満となった時点までの時間を示す。また、Ｓ６７０での処理を終了すると、燃焼・排気区間時間計測処理部５１は、Ｓ５１０に移行する。
【００９６】
続いて、積算Ｐ／Ｈ処理部５２が実行する処理について説明する。図１１は、積算Ｐ／Ｈ処理部５２が繰返し実行する処理を表すフローチャートである。
図１１に示す処理を開始すると、積算Ｐ／Ｈ処理部５２は、まず、自気筒の行程が上記燃焼区間にあるか否かを判断する（Ｓ７１０）。そして、自気筒の行程が燃焼区間であると判断すると（Ｓ７１０でＹｅｓ）、各種パラメータを初期化する（Ｓ７２０）。具体的に、ここでは、パラメータｐｅａｋ，ｓｉｇｍａ，Ｚａｄｄ，Ｚｍａｘ，ＤＺ，ＤＺａｄｄ，ＤＺｍａｘをゼロに初期化する。また、この初期化と共に、パラメータＶｔｈに、レジスタ５３に設定された燃焼区間用基準値を設定する（Ｓ７３０）。但し、この積算Ｐ／Ｈ処理部５２で用いられるパラメータＶｔｈは、他の処理部４６，５１で用いられるパラメータＶｔｈとは独立したパラメータである。
【００９７】
そして、Ｓ７３０での処理を終えると、積算Ｐ／Ｈ処理部５２は、燃焼区間における自気筒の補間処理後のＡＤ変換値のピーク値を取得するために、Ｓ７４０にて図１２に示すＰ／Ｈ処理を実行する。尚、図１２は、積算Ｐ／Ｈ処理部５２が実行するＰ／Ｈ処理を表すフローチャートである。
【００９８】
図１２に示すＰ／Ｈ処理を開始すると、積算Ｐ／Ｈ処理部５２は、パラメータｉを値１に初期化した後（Ｓ９１０）、Ｓ９２０に移行し、自気筒に対応するパラメータａｄ［ｍ，ｉ］が、現在までのピーク値を表すパラメータｐｅａｋより大きい値であるかを判断する。但し、この積算Ｐ／Ｈ処理部５２で用いられるパラメータｉは、他の処理部４１，４６，５１で用いられるパラメータｉとは独立したパラメータである。
【００９９】
そして、パラメータａｄ［ｍ，ｉ］が、パラメータｐｅａｋより大きい値であると判断すると（Ｓ９２０でＹｅｓ）、積算Ｐ／Ｈ処理部５２は、Ｓ９３０にて、パラメータｐｅａｋに、パラメータａｄ［ｍ，ｉ］の値を設定し、パラメータｐｅａｋの値を、最新のピーク値に更新する。その後、Ｓ９４０に移行する。一方、パラメータａｄ［ｍ，ｉ］がパラメータｐｅａｋの値以下であると判断すると（Ｓ９２０でＮｏ）、Ｓ９３０の処理を実行することなく、Ｓ９４０に移行する。
【０１００】
また、Ｓ９４０に移行すると、積算Ｐ／Ｈ処理部５２は、この燃焼区間における基準値Ｖｔｈ以上のＡＤ変換値の積算値を求めるために、図１３に示す積算処理を実行する。図１３は、積算Ｐ／Ｈ処理部５２が実行する積算処理を表すフローチャートである。
【０１０１】
図１３に示す積算処理を開始すると、積算Ｐ／Ｈ処理部５２は、パラメータａｄ［ｍ，ｉ］が、基準値Ｖｔｈ以上であるか否かを判断し（Ｓ１０１０）、パラメータａｄ［ｍ，ｉ］が、基準値Ｖｔｈ以上であると判断すると（Ｓ１０１０でＹｅｓ）、ＡＤ変換値の積算値を表すパラメータｓｉｇｍａの値に、パラメータａｄ［ｍ，ｉ］の値を加えて、パラメータｓｉｇｍａの値を更新する（Ｓ１０２０）と共に、積算した区間の時間を表すパラメータＤＺの値を、１足した値に更新する（Ｓ１０２５）。その後、当該積算処理を終了する。
【０１０２】
一方、積算Ｐ／Ｈ処理部５２は、パラメータａｄ［ｍ，ｉ］が、基準値Ｖｔｈ未満であると判断すると（Ｓ１０１０でＮｏ）、Ｓ１０３０に移行し、パラメータｓｉｇｍａが値ゼロであるか否かを判断する。そして、パラメータｓｉｇｍａの値が値ゼロであると判断すると（Ｓ１０３０でＹｅｓ）、当該積算処理を終了する。
【０１０３】
これに対し、パラメータｓｉｇｍａが値ゼロではないと判断すると（Ｓ１０３０でＮｏ）、積算Ｐ／Ｈ処理部５２は、パラメータｓｉｇｍａの合計値を表すパラメータＺａｄｄの値に、パラメータｓｉｇｍａの値を加えて、パラメータＺａｄｄの値を更新する（Ｓ１０４０）。また、この処理を終えると、積算Ｐ／Ｈ処理部５２は、Ｓ１０４５に移行し、パラメータＤＺの合計値を表すパラメータＤＺａｄｄの値に、パラメータＤＺの値を加えて、パラメータＤＺａｄｄの値を更新する。
【０１０４】
そして、この処理を終えると、Ｓ１０５０に移行し、パラメータｓｉｇｍａの値が、前回までのパラメータｓｉｇｍａの最大値を表すパラメータＺｍａｘよりも大きいか否かを判断する。そして、パラメータｓｉｇｍａの値が、パラメータＺｍａｘよりも大きいと判断すると（Ｓ１０５０でＹｅｓ）、パラメータＺｍａｘを、パラメータｓｉｇｍａの値に更新すると共に（Ｓ１０６０）、Ｚｍａｘに対応する積算区間の時間を表すパラメータＤＺｍａｘを、パラメータＤＺの値に更新した後（Ｓ１０６５）、Ｓ１０７０に移行する。
【０１０５】
一方、Ｓ１０５０において、パラメータｓｉｇｍａが、パラメータＺｍａｘの値以下であると判断すると（Ｓ１０５０でＮｏ）、Ｓ１０６０〜Ｓ１０６５の処理を実行することなく、Ｓ１０７０に移行する。
【０１０６】
また、Ｓ１０７０に移行すると、積算Ｐ／Ｈ処理部５２は、パラメータｓｉｇｍａを値ゼロに初期化すると共に、パラメータＤＺを値ゼロに初期化する（Ｓ１０８０）。その後、当該積算処理を終了する。
【０１０７】
このようにしてＳ９４０での積算処理を終了すると、積算Ｐ／Ｈ処理部５２は、Ｓ９５０に移行し、パラメータｉの値を、１足した値に更新した後（Ｓ９５０）、更新後のパラメータｉが、値ｎより大きいか否かを判断し（Ｓ９６０）、パラメータｉが、値ｎ以下であると判断すると（Ｓ９６０でＮｏ）、Ｓ９２０に移行し、パラメータｉが、値ｎより大きいと判断すると（Ｓ９６０でＹｅｓ）、当該Ｐ／Ｈ処理を終了する。
【０１０８】
その他、Ｓ７４０でのＰ／Ｈ処理を終了すると、積算Ｐ／Ｈ処理部５２は、Ｓ７５０に移行し、自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ７５０）、上記パラメータが更新されると、その時点で、燃焼区間が終了しているか否かを判断する（Ｓ７６０）。尚、この積算Ｐ／Ｈ処理部５２は、燃焼・排気区間時間計測処理部５１が行うＳ５６０での判断と同様の手法で、Ｓ７６０での判断を下す。即ち、積算Ｐ／Ｈ処理部５２は、Ｓ５６０でＹｅｓと判断される場合には、Ｓ７６０でＹｅｓと判断し、Ｓ５６０でＮｏと判断される場合には、Ｓ７６０でＮｏと判断する。
【０１０９】
そして、燃焼区間が終了していないと判断すると（Ｓ７６０でＮｏ）、積算Ｐ／Ｈ処理部５２は、Ｓ７４０に移行し、燃焼区間が終了していると判断すると（Ｓ７６０でＹｅｓ）、Ｓ７７０に移行する。
【０１１０】
また、Ｓ７７０では、その時点でのパラメータｐｅａｋの値を、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］として出力し、パラメータＺａｄｄの値を、燃焼区間積算値Ｓａｄｄ［ｍ］として出力し、パラメータＺｍａｘの値を、燃焼区間積算値Ｓｍａｘ［ｍ］として出力し、パラメータＤＺａｄｄの値を、積算区間時間ＳＤＺａｄｄ［ｍ］として出力し、パラメータＤＺｍａｘの値を、積算区間時間ＳＤＺｍａｘ［ｍ］として出力する。この動作により、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］、燃焼区間積算値Ｓａｄｄ［ｍ］、燃焼区間積算値Ｓｍａｘ［ｍ］、積算区間時間ＳＤＺａｄｄ［ｍ］、積算区間時間ＳＤＺｍａｘ［ｍ］は、ＲＡＭ３７に書き込まれる。また、Ｓ７７０の処理を終了すると、積算Ｐ／Ｈ処理部５２は、Ｓ７１０に移行する。
【０１１１】
その他、積算Ｐ／Ｈ処理部５２は、Ｓ７１０において、自気筒の行程が燃焼区間にないと判断すると（Ｓ７１０でＮｏ）、Ｓ８１０に移行し、自気筒の行程が排気区間にあるか否かを判断する（Ｓ８１０）。そして、自気筒の行程が排気区間にはないと判断すると（Ｓ８１０でＮｏ）、Ｓ７１０に移行し、自気筒の行程が排気区間にあると判断すると（Ｓ８１０でＹｅｓ）、各種パラメータを初期化する（Ｓ８２０）。具体的に、ここでは、パラメータｐｅａｋ，ｓｉｇｍａ，Ｚａｄｄ，Ｚｍａｘ，ＤＺ，ＤＺａｄｄ，ＤＺｍａｘをゼロに初期化する。また、この初期化と共に、基準値Ｖｔｈに、レジスタ５３に設定された排気区間用基準値を、設定する（Ｓ８３０）。
【０１１２】
そして、Ｓ８３０での処理を終えると、積算Ｐ／Ｈ処理部５２は、排気区間における補間処理後のＡＤ変換値のピーク値及び、基準値Ｖｔｈ以上のＡＤ変換値の積算値を取得するために、Ｓ８４０にて図１２に示すＰ／Ｈ処理を実行する。
【０１１３】
その他、Ｓ８４０でのＰ／Ｈ処理を終了すると、積算Ｐ／Ｈ処理部５２は、Ｓ８５０に移行し、自気筒のパラメータａｄ［ｍ，０］〜ａｄ［ｍ，ｎ］の更新が前処理部４１にて実行されるまで待機し（Ｓ８５０）、上記パラメータが更新されると、その時点で、排気区間が終了しているか否かを判断する（Ｓ８６０）。尚、積算Ｐ／Ｈ処理部５２は、燃焼・排気区間時間計測処理部５１が行うＳ６６０での判断と同様の手法で、Ｓ８６０での判断を下す。即ち、積算Ｐ／Ｈ処理部５２は、Ｓ６６０でＹｅｓと判断される場合には、Ｓ８６０でＹｅｓと判断し、Ｓ６６０でＮｏと判断される場合には、Ｓ８６０でＮｏと判断する。
【０１１４】
そして、排気区間が終了していないと判断すると（Ｓ８６０でＮｏ）、８４０に移行し、排気区間が終了していると判断すると（Ｓ８６０でＹｅｓ）、Ｓ８７０に移行する。
また、Ｓ８７０に移行すると、積算Ｐ／Ｈ処理部５２は、その時点でのパラメータｐｅａｋの値を、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］として出力し、パラメータＺａｄｄの値を、排気区間積算値Ｈａｄｄ［ｍ］として出力し、パラメータＺｍａｘの値を、排気区間積算値Ｈｍａｘ［ｍ］として出力し、パラメータＤＺａｄｄの値を、積算区間時間ＨＤＺａｄｄ［ｍ］として出力し、パラメータＤＺｍａｘの値を、積算区間時間ＨＤＺｍａｘ［ｍ］として出力する。この動作により、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］、排気区間積算値Ｈａｄｄ［ｍ］、排気区間積算値Ｈｍａｘ［ｍ］、積算区間時間ＨＤＺａｄｄ［ｍ］、積算区間時間ＨＤＺｍａｘ［ｍ］は、ＲＡＭ３７に書き込まれる。また、Ｓ８７０の処理を終了すると、積算Ｐ／Ｈ処理部５２は、Ｓ７１０に移行する。
【０１１５】
続いて、ドリフト検出処理部５５が実行する処理について説明する。図１４は、自気筒のＡＤ変換値Ｙが前処理部４１にて取得されたタイミングで、ドリフト検出処理部５５が繰返し実行する処理を表すフローチャートである。
【０１１６】
図１４に示す処理を開始すると、ドリフト検出処理部５５は、排気区間終了後、クランク角度が、ドリフト検出区間の開始点として定義された所定角度を超えたか否かを判断し（Ｓ１１１０）、所定角度を超えていないと判断すると（Ｓ１１１０でＮｏ）、パラメータｊ，ＤＲＦをゼロに初期化した後（Ｓ１１２０）、当該処理を一旦終了し、自気筒のＡＤ変換値が前処理部４１にて新たに取得されると、Ｓ１１１０に移行する。
【０１１７】
一方、所定角度を越えていると判断すると（Ｓ１１１０でＹｅｓ）、ドリフト検出処理部５５は、自気筒の点火信号ＩＧＴがオンにされて通電が開始されているか否かを判断し（Ｓ１１３０）、通電が開始されていないと判断すると（Ｓ１１３０でＮｏ）、パラメータｊの値を、１足した値に更新する（Ｓ１１４０）と共に、パラメータＤＲＦを、自気筒の最新のＡＤ変換値Ｙを足した値に更新する（Ｓ１１５０）。その後、自気筒のＡＤ変換値Ｙが前処理部４１にて新たに取得されるまで待機し（Ｓ１１６０）、取得されると、Ｓ１１３０に移行する。
【０１１８】
また、Ｓ１１３０において、自気筒の通電が開始されていると判断すると（Ｓ１１３０でＹｅｓ）、ドリフト検出処理部５５は、パラメータＤＲＦの値を、値ｊで除算して、その除算結果（ＤＲＦ／ｊ）を、ドリフト値Ｄｆ［ｍ］として出力する（Ｓ１１７０）。この動作により、ドリフト値Ｄｆ［ｍ］は、ＲＡＭ３７に書き込まれる。また、Ｓ１１７０での処理を終えると、ドリフト検出処理部５５は、Ｓ１１２０に移行して、パラメータｊ，ＤＲＦをゼロに初期化する。
【０１１９】
以上、信号処理部４０の処理動作について説明したが、続いて、信号処理部４０の演算結果を用いてＣＰＵ３３が繰返し実行する異常判定処理について説明する。図１５は、気筒の点火周期に合わせて（例えば、通電が開始される度に）ＣＰＵ３３が繰返し実行する異常判定処理を表すフローチャートである。ＣＰＵ３３は、気筒毎に、この異常判定処理を実行する。また、以下で、異常判定処理の説明の際に用いるパラメータｍは、該当異常判定処理に割り当てられた気筒（対応気筒）の気筒番号を値に採るものとする。
【０１２０】
異常判定処理を開始すると、ＣＰＵ３３は、対応気筒の燻り区間時間Ｋｔ［ｍ］を、ＲＡＭ３７にて参照し、この燻り区間時間Ｋｔ［ｍ］が、予め定められた閾値Ｋｔｈより大きいか否かを判断する（Ｓ１２１０）。そして、燻り区間時間Ｋｔ［ｍ］が閾値Ｋｔｈより大きいと判断すると（Ｓ１２１０でＹｅｓ）、燻りが発生していると判定して、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を、値（Ｓｐ［ｍ］−Ｄｆ［ｍ］）に更新すると共に（Ｓ１２２０）、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］を、値（Ｈｐ［ｍ］−Ｄｆ［ｍ］）に更新する（Ｓ１２３０）。その後、Ｓ１２４０に移行する。
【０１２１】
これに対し、ＣＰＵ３３は、燻り区間時間Ｋｔ［ｍ］が、閾値Ｋｔｈ以下であると判断すると（Ｓ１２１０でＮｏ）、Ｓ１２２０，Ｓ１２３０の処理を実行することなく、Ｓ１２４０に移行する。
【０１２２】
また、Ｓ１２４０に移行すると、ＣＰＵ３３は、燃焼区間時間Ｓｔ［ｍ］が、予め定められた閾値ＳＴｔｈより大きいか否かを判断し、燃焼区間時間Ｓｔ［ｍ］が、閾値ＳＴｔｈ以下であると判断すると（Ｓ１２４０でＮｏ）、Ｓ１２５０に移行し、燃焼区間時間Ｓｔ［ｍ］が、閾値ＳＴｔｈより大きいと判断すると（Ｓ１２４０でＹｅｓ）、Ｓ１２４５に移行する。
【０１２３】
また、Ｓ１２４５では、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］が、予め定められた閾値ＳＰｔｈより大きいか否かを判断し、燃焼区間Ｐ／Ｈ値Ｓｐ値が、閾値ＳＰｔｈより大きいと判断すると（Ｓ１２４５でＹｅｓ）、Ｓ１２６０に移行し、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］が、閾値ＳＰｔｈ未満であると判断すると（Ｓ１２４５でＮｏ）、Ｓ１２５０に移行する。
【０１２４】
そして、Ｓ１２５０では、該当気筒において失火が生じたと判定して、失火対応処理を実行する。尚、失火対応処理では、該当気筒のフェールカットを実行したり、インストルパネル内の警告ランプを点灯させたりする。また、このようにして、Ｓ１２５０での処理を終えると、ＣＰＵ３３は、Ｓ１２６０に移行する。
【０１２５】
また、Ｓ１２６０に移行すると、ＣＰＵ３３は、排気区間時間Ｈｔ［ｍ］が、予め定められた閾値ＨＴｔｈより大きいか否かを判断し、排気区間時間Ｈｔ［ｍ］が、閾値ＨＴｔｈ以下であると判断すると（Ｓ１２６０でＮｏ）、Ｓ１２７０に移行し、排気区間時間Ｈｔ［ｍ］が、閾値ＨＴｔｈより大きいと判断すると（Ｓ１２６０でＹｅｓ）、Ｓ１２６５に移行する。
【０１２６】
また、Ｓ１２６５に移行すると、ＣＰＵ３３は、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］が、予め定められた閾値ＨＰｔｈより大きいか否かを判断し、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］が、閾値ＨＰｔｈより大きいと判断すると（Ｓ１２６５でＹｅｓ）、Ｓ１２８０に移行し、排気区間Ｐ／Ｈ値Ｈｐ［ｍ］が、閾値ＨＰｔｈ以下であると判断すると（Ｓ１２６５でＮｏ）、Ｓ１２７０に移行する。
【０１２７】
そして、Ｓ１２７０では、該当気筒においての点火時期が遅いと判定し、点火時期を早めるように点火時期制御を行う。また、このようにして、Ｓ１２７０での処理を終えると、Ｓ１２８０に移行する。
【０１２８】
また、Ｓ１２８０に移行すると、ＣＰＵ３３は、プレイグ区間時間Ｐｔ［ｍ］が、予め定められた閾値Ｐｔｈよりも大きいか否かを判断し、プレイグ区間時間Ｐｔ［ｍ］が、閾値Ｐｔｈよりも大きいと判断すると（Ｓ１２８０でＹｅｓ）、Ｓ１２９０に移行する。そして、Ｓ１２９０では、プレイグニッションが生じたと判定して、プレイグニッションを解消する方向に、点火時期制御を行う。また、このようにして、Ｓ１２９０での処理を終えるか、Ｓ１２８０でＮｏと判断すると、当該異常判定処理を終了し、再び、Ｓ１２１０〜Ｓ１２９０までの処理を行う。
【０１２９】
以上、本実施例の電子制御装置１の構成について説明したが、この電子制御装置１によれば、前処理部４１にて、ＡＤ変換器３９から出力されるイオン電流検出信号ＩＯＮのＡＤ変換値の間に、推定したＡＤ変換値を内挿することによって、ＡＤ変換器３９から出力されるＡＤ変換値の一群を補間処理する。即ち、本実施例では、図７に示すように、Ｍ・Ｔｓ（μ秒）間隔で、ＡＤ変換器３９から出力される補間前のＡＤ変換値の一群を、補間処理によって、Ｍ・Ｔｓ／ｎ（μ秒）間隔の時系列データに変換する。従って、本実施例によれば、ＡＤ変換器３９として、高性能なＡＤ変換器を用いることなく、イオン電流検出信号ＩＯＮのＡＤ変換値として、時間分解能の高い時系列データを得ることができる。
【０１３０】
そして、本実施例によれば、エンジン内部の燃焼状態の異常として、燻りやプレイグニッション・失火等を検出する際、上記各区間において、イオン電流が基準値Ｖｔｈ以上である時間Ｋｔ［ｍ］，Ｐｔ［ｍ］，Ｓｔ［ｍ］，Ｈｔ［ｍ］を、補間処理後のＡＤ変換値に基づいて算出する。このため、本実施例によれば、ＡＤ変換による真値との誤差を抑えつつ上記時間を求めることができ、結果として、高精度に、燃焼状態の異常を検出することができる。
【０１３１】
その他、本実施例によれば、失火を検出するために、燃焼区間時間Ｓｔ［ｍ］を算出すると共に、この燃焼区間におけるＡＤ変換値のピーク値としての燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を算出し、この燃焼区間時間Ｓｔ［ｍ］及び燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］に基づいて、失火を検出する（Ｓ１２４０〜Ｓ１２５０）ので、燃焼区間時間Ｓｔ［ｍ］のみで失火を検出する手法や、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］のみで失火を検出する手法よりも、高精度に失火を検出することができる。
【０１３２】
また、本実施例によれば、点火時（点火信号ＩＧＴがオフとなった時点）から所定間隔空けた区間を燃焼区間として定義し、燃焼区間時間Ｓｔ［ｍ］や燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を算出しているので、点火時に発生するノイズの影響を受けることなく、時間計測等を実行することができ、精度よく失火を検出することができる。
【０１３３】
また、本実施例によれば、従来装置のように、コンパレータを用いて、イオン電流が基準値Ｖｔｈ以上である時間を計測せず、ディジタル処理にて時間計測するので、レジスタ４７を操作して、基準値Ｖｔｈを簡単に変更することができ、基準値Ｖｔｈを、エンジン運転状態（エンジン回転数等）に対応した最適な値に設定して、時間計測をすることができる。また、本実施例によれば、ディジタル処理にて、イオン電流が基準値Ｖｔｈ以上である時間を計測するので、コンパレータを用いる場合のように、設定した基準値Ｖｔｈが、周囲温度等に応じて揺動することがなく、イオン電流が基準値以上である時間を、正確に計測することができる。
【０１３４】
ところで、上記実施例の異常判定処理では、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］や排気区間Ｐ／Ｈ値Ｈｐ［ｍ］を用いて、燃焼状態の異常（失火等）を検出するようにしたが、燃焼状態の異常は、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］や排気区間Ｐ／Ｈ値Ｈｐ［ｍ］に代えて、燃焼区間積算値Ｓａｄｄ［ｍ］，Ｓｍａｘ［ｍ］や排気区間積算値Ｈａｄｄ［ｍ］，Ｈｍａｘ［ｍ］を用いて、検出されてもよい。
【０１３５】
（第一変形例）
図１６は、第一変形例の異常判定処理を表したフローチャートである。第一変形例の電子制御装置１は、上述した実施例に対し、ＣＰＵ３３で実行する異常判定処理が、図１６の内容に変更された程度のものであるので、以下では、第一変形例として、図１６に示す異常判定処理を説明するに留める。
【０１３６】
第一変形例の異常判定処理を開始すると、ＣＰＵ３３は、対応気筒の燻り区間時間Ｋｔ［ｍ］が、予め定められた閾値Ｋｔｈより大きいか否かを判断し（Ｓ１３１０）、燻り区間時間Ｋｔ［ｍ］が閾値Ｋｔｈより大きいと判断すると（Ｓ１３１０でＹｅｓ）、燻りが発生していると判定して、燃焼区間積算値Ｓａｄｄ［ｍ］を、値（Ｓａｄｄ［ｍ］−Ｄｆ［ｍ］×ＳＤＺａｄｄ［ｍ］）に更新すると共に（Ｓ１３２０）、排気区間積算値Ｈａｄｄ［ｍ］を、値（Ｈａｄｄ［ｍ］−Ｄｆ［ｍ］×ＨＤＺａｄｄ［ｍ］）に更新する（Ｓ１３３０）。その後、Ｓ１３４０に移行する。
【０１３７】
一方、ＣＰＵ３３は、燻り区間時間Ｋｔ［ｍ］が、閾値Ｋｔｈ以下であると判断すると（Ｓ１３１０でＮｏ）、Ｓ１３２０，Ｓ１３３０の処理を実行することなく、Ｓ１３４０に移行する。
【０１３８】
また、Ｓ１３４０に移行すると、ＣＰＵ３３は、燃焼区間時間Ｓｔ［ｍ］が、予め定められた閾値ＳＴｔｈより大きいか否かを判断し、燃焼区間時間Ｓｔ［ｍ］が、閾値ＳＴｔｈ以下であると判断すると（Ｓ１３４０でＮｏ）、Ｓ１３５０に移行し、燃焼区間時間Ｓｔ［ｍ］が、閾値ＳＴｔｈより大きいと判断すると（Ｓ１３４０でＹｅｓ）、Ｓ１３４５に移行する。
【０１３９】
そして、Ｓ１３４５では、燃焼区間積算値Ｓａｄｄ［ｍ］が、予め定められた閾値ＳＺｔｈより大きいか否かを判断し、燃焼区間積算値Ｓａｄｄ値が、閾値ＳＺｔｈより大きいと判断すると（Ｓ１３４５でＹｅｓ）、Ｓ１３６０に移行し、燃焼区間積算値Ｓａｄｄ［ｍ］が、閾値ＳＺｔｈ未満であると判断すると（Ｓ１３４５でＮｏ）、Ｓ１３５０に移行する。また、Ｓ１３５０に移行すると、ＣＰＵ３３は、該当気筒において失火が生じたと判定して、Ｓ１２５０と同様の失火対応処理を実行し、この処理を終えると、Ｓ１３６０に移行する。
【０１４０】
また、Ｓ１３６０に移行すると、ＣＰＵ３３は、排気区間時間Ｈｔ［ｍ］が、予め定められた閾値ＨＴｔｈより大きいか否かを判断し、排気区間時間Ｈｔ［ｍ］が、閾値ＨＴｔｈ以下であると判断すると（Ｓ１３６０でＮｏ）、Ｓ１３７０に移行し、排気区間時間Ｈｔ［ｍ］が、閾値ＨＴｔｈより大きいと判断すると（Ｓ１３６０でＹｅｓ）、Ｓ１３６５に移行する。
【０１４１】
そして、Ｓ１３６５では、排気区間積算値Ｈａｄｄ［ｍ］が、予め定められた閾値ＨＺｔｈより大きいか否かを判断し、排気区間積算値Ｈａｄｄ［ｍ］が、閾値ＨＺｔｈより大きいと判断すると（Ｓ１３６５でＹｅｓ）、Ｓ１３８０に移行し、排気区間積算値Ｈａｄｄ［ｍ］が、閾値ＨＺｔｈ以下であると判断すると（Ｓ１３６５でＮｏ）、Ｓ１３７０に移行する。
【０１４２】
また、Ｓ１３７０に移行すると、ＣＰＵ３３は、点火時期を早めるように点火時期制御を行い、この処理を終えると、Ｓ１３８０に移行する。また、Ｓ１３８０に移行すると、ＣＰＵ３３は、プレイグ区間時間Ｐｔ［ｍ］が、予め定められた閾値Ｐｔｈよりも大きいか否かを判断し、プレイグ区間時間Ｐｔ［ｍ］が、閾値Ｐｔｈよりも大きいと判断すると（Ｓ１３８０でＹｅｓ）、Ｓ１３９０にて、プレイグニッションが生じたと判定して、プレイグニッションを解消する方向に、点火時期制御を行う。また、この処理を終えるか、Ｓ１３８０でＮｏと判断すると、当該異常判定処理を終了し、次タイミングが到来すると、再びＳ１３１０〜Ｓ１３９０までの処理を行う。
【０１４３】
以上、第一変形例について述べたが、第一変形例によれば、補間処理後のＡＤ変換値を用いて、燃焼区間時間Ｓｔ［ｍ］を算出すると共に、この燃焼区間における基準値Ｖｔｈ以上のＡＤ変換値の積算値である燃焼区間積算値Ｓａｄｄ［ｍ］を算出するので、ＡＤ変換による真値との誤差を抑えつつ、高精度に、上記時間や積算値を求めることができる。そして、第一変形例によれば、この燃焼区間時間Ｓｔ［ｍ］及び燃焼区間積算値Ｓａｄｄ［ｍ］に基づいて、失火を検出する（Ｓ１３４０〜Ｓ１３５０）と共に、排気区間においても同様の手法で、異常を検出するので、従来より高精度に失火等の燃焼状態の異常を検出することができる。
【０１４４】
尚、第一変形例では、異常判定処理において、燃焼区間積算値及び排気区間積算値として、Ｓａｄｄ［ｍ］及びＨａｄｄ［ｍ］の値を用いるようにしたが、Ｓａｄｄ［ｍ］及びＨａｄｄ［ｍ］に代えて、Ｓｍａｘ［ｍ］及びＨｍａｘ［ｍ］の値を用いるようにしても良い。
【０１４５】
また、上記実施例では、時間計測処理にて、ＡＤ変換値が、基準値Ｖｔｈ以上となった時点から、それと同一の基準値Ｖｔｈ未満となる時点までの時間Ｔを算出するようにしたが、時間計測の開始条件と終了条件とを同一の基準値Ｖｔｈで定義すると、時間計測を開始した直後に、ノイズ等の影響で、一旦ＡＤ変換値が元の値に戻ってしまう場合などに、正確な時間計測をできない可能性があるため、時間計測処理では、第一及び第二の基準値を用いて、時間計測を行うと良い。
【０１４６】
（第二変形例）
図１７は、第二変形例における基準値の設定手法を示した図であり、図１８は、第二変形例の電子制御装置１における信号処理部４０（具体的には、燻り・プレイグ区間時間計測処理部４６又は燃焼・排気区間時間計測処理部５１）が、図９に示す時間計測処理に代えて実行する時間計測処理を表すフローチャートである。第二変形例の電子制御装置１は、上記実施例に対し、時間計測処理の内容とレジスタ４７，５３の設定内容が異なる程度であるので、以下では、第二変形例として、レジスタ４７，５３の設定内容と、時間計測処理の内容とを主に説明する。
【０１４７】
まず、第二変形例では、上記実施例と異なる点として、レジスタ４７に、燻り検出用基準値として、燻り検出用第一基準値及び燻り検出用第二基準値が設定され、プレイグ検出用基準値として、プレイグ検出用第一基準値及びプレイグ検出用第二基準値が設定されている。また、レジスタ５３に、燃焼区間用基準値として、燃焼区間用第一基準値及び燃焼区間用第二基準値が設定され、排気区間用基準値として、排気区間用第一基準値及び排気区間陽第二基準値が設定されている。そして、各第二基準値は、図１７に示すように、対となる第一基準値よりも小さい値に設定されている（第二基準値＜第一基準値）。
【０１４８】
また、第二変形例では、Ｓ２３０において、パラメータＶｔｈに代わるパラメータＶｔｈ［１］に、燻り検出用第一基準値を設定し、パラメータＶｔｈ［２］に、燻り検出用第二基準値を設定する。また、同様に、Ｓ３３０では、パラメータＶｔｈ［１］に、プレイグ検出用第一基準値を設定し、パラメータＶｔｈ［２］に、プレイグ検出用第二基準値を設定する。その他、Ｓ５３０では、パラメータＶｔｈ［１］に、燃焼区間用第一基準値を設定し、パラメータＶｔｈ［２］に、燃焼区間用第二基準値を設定し、Ｓ６３０では、パラメータＶｔｈ［１］に、排気区間用第一基準値を設定し、パラメータＶｔｈ［２］に、排気区間用第二基準値を設定する。
【０１４９】
そして、Ｓ２４０，Ｓ３４０，Ｓ５４０，Ｓ６４０で実行する時間計測処理では、図１８に示すように、パラメータｉを値１に初期化した後（Ｓ１４１０）、Ｓ１４２０に移行し、パラメータＣＮＴがゼロであるか否かを判断する。そして、パラメータＣＮＴがゼロであると判断すると（Ｓ１４２０でＹｅｓ）、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［１］以上であるかを判断する（Ｓ１４３０）。
【０１５０】
そして、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［１］以上であると判断すると（Ｓ１４３０でＹｅｓ）、Ｓ１４４０にて、パラメータＣＮＴの値を１に更新し（ＣＮＴ←１）、その後、Ｓ１４７０に移行する。一方、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［１］未満であると判断すると（Ｓ１４３０でＮｏ）、Ｓ１４４０での処理を実行することなく、Ｓ１４７０に移行する。
【０１５１】
また、Ｓ１４７０では、パラメータｉの値を１足して更新し、その後、パラメータｉが、値ｎより大きいか否かを判断する（Ｓ１４８０）。そして、パラメータｉが、値ｎより大きいと判断すると（Ｓ１４８０でＹｅｓ）、当該時間計測処理を終了し、パラメータｉが値ｎ以下であると判断すると（Ｓ１４８０でＮｏ）、Ｓ１４２０に移行して、再び、パラメータＣＮＴの値が、ゼロであるか否かを判断する。
【０１５２】
また、パラメータＣＮＴの値がゼロではないと判断すると（Ｓ１４２０でＮｏ）、Ｓ１４５０に移行し、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［２］以上であるかを判断する。そして、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［２］以上であると判断すると（Ｓ１４５０でＹｅｓ）、Ｓ１４６０にて、パラメータＣＮＴの値を、１足した値に更新し（ＣＮＴ←ＣＮＴ＋１）、その後、Ｓ１４７０に移行する。
【０１５３】
一方、Ｓ１４５０において、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ［２］未満であると判断すると（Ｓ１４５０でＮｏ）、Ｓ１４９０に移行し、計測時間を表すパラメータＴの値を、値（ＣＮＴ×Ｔｓ×Ｍ／ｎ）を足した値に更新する（Ｔ←Ｔ＋ＣＮＴ×Ｔｓ×Ｍ／ｎ）。そして、この処理を終えると、パラメータＣＮＴを値ゼロに初期化した後（Ｓ１４９５）、当該時間計測処理を終了する。
【０１５４】
このような時間計測処理を、燻り検出区間、プレイグ検出区間、燃焼区間、及び、排気区間の夫々で実行することにより、第二変形例において、各区間では、ＡＤ変換値が、基準値Ｖｔｈ［１］以上となった時点から基準値Ｖｔｈ［１］よりも小さい基準値Ｖｔｈ［２］未満となる時点までの時間を算出する。
【０１５５】
以上、第二変形例について説明したが、この第二変形例によれば、ＡＤ変換値が、基準値Ｖｔｈ［１］以上となった時点から基準値Ｖｔｈ［１］よりも小さい基準値Ｖｔｈ［２］未満となる時点までの時間を算出するので、時間計測を開始した直後に、ノイズ等の影響で、一旦ＡＤ変換値が元の値に戻ってしまう場合でも、時間計測を終了することなく、適切に時間計測を継続することができる。
【０１５６】
尚、上述しなかったが、第二変形例の電子制御装置１における積算処理は、ＡＤ変換値が、基準値Ｖｔｈ［１］以上となった時点から基準値Ｖｔｈ［１］よりも小さい基準値Ｖｔｈ［２］未満となる時点までの期間、Ｓ１０１０でＹｅｓと判断し、それ以外の期間には、Ｓ１０１０でＮｏと判断する構成にされると良い。
【０１５７】
その他、イオン電流の時間変化を正確に捉えるために、時間計測処理では、同一期間において、第一及び第二の基準値を用い、複数種の時間計測を行うようにしてもよい。
（第三変形例）
図１９は、第三変形例における基準値の設定手法を示した図であり、図２０は、第三変形例の電子制御装置１における燃焼・排気区間時間計測処理部５１が、Ｓ５４０にて実行する時間計測処理を表すフローチャート（ａ）、及び、この燃焼・排気区間時間計測処理部５１が出力するパラメータを示した説明図（ｂ）である。また、図２１は、第三変形例の電子制御装置１におけるＣＰＵ３３が、図１５に示す異常判定処理に代えて実行する異常判定処理を表すフローチャートである。
【０１５８】
第三変形例の電子制御装置１は、上記実施例に対し、燃焼・排気区間時間計測処理部５１がＳ５４０で実行する時間計測処理の内容、レジスタ５３の設定内容、及び、ＣＰＵ３３で実行される異常判定処理の内容が異なる程度であるので、以下では、第三変形例におけるレジスタ５３の設定内容と、時間計測処理の内容と、異常判定処理の内容とを主に説明する。
【０１５９】
第三変形例では、レジスタ５３に、燃焼区間用基準値として、燃焼区間用第一基準値、及び、この燃焼区間用第一基準値より大きな値を採る燃焼区間用第二基準値（図１９参照）が設定されている。この第三変形例では、上記燃焼区間用第一基準値及び燃焼区間用第二基準値を用いることにより、図１９に示すように、ＡＤ変換値が燃焼区間用第一基準値以上となった時点から第一基準値未満となるまでの時間Ｔ［０］と共に、ＡＤ変換値が燃焼区間用第一基準値以上となった時点から、燃焼区間用第二基準値未満となるまでの時間Ｔ［１］、ＡＤ変換値が燃焼区間用第二基準値以上となった時点から、燃焼区間用第二基準値未満となるまでの時間Ｔ［２］、及び、ＡＤ変換値が燃焼区間用第二基準値以下となった時点から、燃焼区間用第一基準値未満となるまでの時間Ｔ［３］を計測する。即ち、第三変形例では、各時間Ｔ［０］〜Ｔ［３］を計測することによって、燃焼区間でのイオン電流の時間変化の特徴を抽出し、失火を高精度に検出する。
【０１６０】
第三変形例では、Ｓ５２０において、パラメータの初期化として、パラメータＣＮＴ１，ＣＮＴ２，ｆｌａｇ１，ｆｌａｇ２，Ｔ［０］〜Ｔ［３］をゼロに初期化すると共に、Ｓ５３０において、パラメータＶｔｈに代わるパラメータＶｔｈ１に、燃焼区間用第一基準値を設定し、パラメータＶｔｈ２に、燃焼区間用第一基準値より大きい燃焼区間用第二基準値を設定する。
【０１６１】
そして、Ｓ５４０で実行する時間計測処理では、図２０（ａ）に示すように、パラメータｉを値１に初期化した後（Ｓ１５１０）、Ｓ１５２０に移行し、ｆｌａｇ２＝０であるか否かを判断する。そして、ｆｌａｇ２＝０であると判断すると（Ｓ１５２０でＹｅｓ）、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２以上であるかを判断する（Ｓ１５２５）。
【０１６２】
そして、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２以上であると判断すると（Ｓ１５２５でＹｅｓ）、Ｓ１５３０に移行し、パラメータＣＮＴ２の値を、１足した値に更新した後（ＣＮＴ２←ＣＮＴ２＋１）、Ｓ１５５０に移行する。一方、Ｓ１５２５において、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２未満であると判断すると（Ｓ１５２５でＮｏ）、Ｓ１５４０に移行する。
【０１６３】
また、Ｓ１５４０では、パラメータＣＮＴ２の値がゼロであるか否かを判断し、パラメータＣＮＴ２の値がゼロであると判断すると、Ｓ１５５０に移行し、パラメータＣＮＴ２の値がゼロではないと判断すると（Ｓ１５４０でＮｏ）、計測時間Ｔ［２］を表すパラメータＴ［２］を、値（ＣＮＴ２×Ｔｓ×Ｍ／ｎ）に設定すると共に（Ｓ１５４１）、ｆｌａｇ２＝１に設定する（Ｓ１５４５）。その後、Ｓ１５５０に移行する。尚、ｆｌａｇ２＝１に設定すると、次回のＳ１５２０ではＮｏと判断して、Ｓ１５２５〜Ｓ１５４５での処理を実行することなく、Ｓ１５５０に移行する。
【０１６４】
また、Ｓ１５５０に移行すると、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ１以上であるかを判断し、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ１以上であると判断すると、Ｓ１５５５にて、ｆｌａｇ１＝０であるか否かを判断する。そして、ｆｌａｇ１＝０であると判断すると、Ｓ１５６０にて、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２以上であるか否かを判断し、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２以上であると判断すると（Ｓ１５６０でＹｅｓ）、計測時間Ｔ［１］を表すパラメータＴ［１］を、値（ＣＮＴ１×Ｔｓ×Ｍ／ｎ）に設定すると共に（Ｓ１５６１）、ｆｌａｇ１＝１に設定した後（Ｓ１５６５）、Ｓ１５７０に移行する。
【０１６５】
一方、Ｓ１５６０にて、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ２未満であると判断すると（Ｓ１５６０でＮｏ）、Ｓ１５６１〜Ｓ１５６５の処理を実行することなく、Ｓ１５７０に移行する。その他、Ｓ１５５５にて、ｆｌａｇ１＝０ではないと判断すると（Ｓ１５５５でＮｏ）、Ｓ１５６０〜Ｓ１５６５の処理を実行することなく、Ｓ１５７０に移行する。
【０１６６】
また、Ｓ１５７０に移行すると、パラメータＣＮＴ１の値を、１足した値に更新し（ＣＮＴ１←ＣＮＴ１＋１）、その後、Ｓ１５９０に移行して、パラメータｉの値を１足して更新する。また、この処理を終えると、パラメータｉが、値ｎより大きいか否かを判断し（Ｓ１５９５）、パラメータｉが、値ｎより大きいと判断すると（Ｓ１５９５でＹｅｓ）、当該時間計測処理を終了し、パラメータｉが値ｎ以下であると判断すると（Ｓ１５９５でＮｏ）、Ｓ１５２０に移行する。
【０１６７】
また、Ｓ１５５０にて、自気筒に対応するパラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ１未満であると判断すると（Ｓ１５５０でＮｏ）、Ｓ１５８０に移行して、パラメータＣＮＴ１の値がゼロであるかを判断し、パラメータＣＮＴ１の値がゼロであると判断すると（Ｓ１５８０でＹｅｓ）、Ｓ１５９０に移行し、パラメータＣＮＴ１の値がゼロではないと判断すると（Ｓ１５８０でＮｏ）、計測時間Ｔ［０］を表すパラメータＴ［０］を、値（ＣＮＴ１×Ｔｓ×Ｍ／ｎ）に設定すると共に（Ｓ１５８１）、パラメータＴ［３］を、値（Ｔ［０］−Ｔ［１］−Ｔ［２］）に設定する（Ｓ１５８５）。その後、当該時間計測処理を終了する。
【０１６８】
尚、第三変形例では、パラメータＴ［０］〜Ｔ［３］の算出が全て終了した時点で（即ち、Ｓ１５８０でＮｏと判断してＳ１５８１及びＳ１５８５の処理を実行した時点で）、燃焼区間が終了したと判断し（Ｓ５６０でＹｅｓ）、Ｓ５７０に移行する。そして、Ｓ５７０では、上記時間計測処理にて算出したＴ［０］の値を、燃焼区間時間Ｓｔ［ｍ，０］として出力し、Ｔ［１］の値を、燃焼区間時間Ｓｔ［ｍ，１］として出力し、Ｔ［２］の値を、燃焼区間時間Ｓｔ［ｍ，２］として出力し、Ｔ［３］の値を、燃焼区間時間Ｓｔ［ｍ，３］として出力する（図２０（ｂ）参照）。
【０１６９】
その他、第三変形例における異常判定処理では、図２１に示すように、図１５に示すＳ１２４０〜Ｓ１２５０の処理に代えて、Ｓ１６１０〜Ｓ１６４０の処理を実行する。即ち、Ｓ１２３０での処理を終えるか、Ｓ１２１０でＮｏと判断すると、ＣＰＵ３３は、Ｓ１６１０に移行し、燃焼区間時間Ｓｔ［ｍ，０］が、予め定められた閾値ＳＴｔｈより大きいか否かを判断する。そして、燃焼区間時間Ｓｔ［ｍ，０］が閾値ＳＴｔｈ以下であると判断すると（Ｓ１６１０でＮｏ）、失火であると判定し、失火対応処理を実行する（Ｓ１６４０）。
【０１７０】
一方、燃焼区間時間Ｓｔ［ｍ，０］が閾値ＳＴｔｈより大きいと判断すると（Ｓ１６１０でＹｅｓ）、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］が、予め定められた閾値ＳＰｔｈより大きいか否かを判断し（Ｓ１６２０）、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］が閾値ＳＰｔｈ以下であると判断すると（Ｓ１６２０でＮｏ）、Ｓ１６４０に移行し、失火対応処理を実行する。
【０１７１】
また、Ｓ１６２０において、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］が閾値ＳＰｔｈより大きいと判断すると（Ｓ１６２０でＹｅｓ）、Ｓ１６３０に移行し、燃焼区間時間Ｓｔ［ｍ，１］が、燃焼区間時間Ｓｔ［ｍ，３］よりも小さいか否かを判断する。そして、燃焼区間時間Ｓｔ［ｍ，１］が、燃焼区間時間Ｓｔ［ｍ，３］よりも小さいと判断すると、Ｓ１２６０に移行し、燃焼区間時間Ｓｔ［ｍ，１］が、燃焼区間時間Ｓｔ［ｍ，３］以上であると判断すると（Ｓ１６３０でＮｏ）、Ｓ１６４０に移行して、失火対応処理を実行する。その後、Ｓ１２６０に移行する。また、Ｓ１２６０に移行すると、第三変形例においても、上記実施例と同様に、Ｓ１２６０〜Ｓ１２９０の処理を実行し、その後、当該異常判定処理を終了する。
【０１７２】
以上、第三変形例について説明したが、第三変形例によれば、上記各時間Ｔ［０］〜Ｔ［３］を計測するので、図１９下段に示すような異常燃焼をも検出することができ、結果として、時間Ｔ［０］のみを計測する場合よりも、高精度に失火を検出することができる。
【０１７３】
尚、第三変形例では、上述したように、Ｓ５４０における時間計測処理においてＴ［０］〜Ｔ［３］の算出が全て終了した時点で、燃焼区間が終了したと判断し（Ｓ５６０でＹｅｓ）、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］を出力することを前提としているが、このような処理では、真の燃焼区間（定義された燃焼区間）が終了していない場合、再び、Ｓ５１０でＹｅｓと判断して、Ｓ５２０以降の処理を実行することが考えられる。
【０１７４】
そして、このような手順で、定義された燃焼区間内において、繰返し、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］を出力する場合には、燃焼区間時間Ｓｔ［ｍ，０］が最も長い値を示す出力結果Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］及びそれに対応する燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を用いて、上述の異常判定処理を行うことが考えられる。尚、この点の取扱いについては、第一変形例及び第二変形例並びに、最初に説明した実施例に対しても、同様のことが言える。
【０１７５】
その他、第三変形例では、燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］に代えて、燃焼区間積算値Ｓａｄｄ［ｍ］を用いて、失火判定してもよい。この場合には、積算処理のＳ１０１０において、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ１以上であるか否かを判断することにより、燃焼区間における基準値Ｖｔｈ１以上のパラメータａｄ［ｍ，ｉ］の値を積算して、燃焼区間積算値Ｓａｄｄ［ｍ］を得ると共に、燃焼区間時間Ｓｔ［ｍ，０］が最も長い値を示す燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］の組と同時期に計測された燃焼区間積算値Ｓａｄｄ［ｍ］を用いて、失火判定すればよい。
【０１７６】
即ち、燃焼区間積算値Ｓａｄｄ［ｍ］を用いて、失火判定する場合には、図２１におけるＳ１２２０の処理に代替して、上記燃焼区間積算値Ｓａｄｄ［ｍ］及びそれに対応するＳＤＺａｄｄ［ｍ］を用い、Ｓ１３２０に対応する処理を実行すると共に、Ｓ１６２０では、上記燃焼区間積算値Ｓａｄｄ［ｍ］が閾値ＳＺｔｈより大きいか否かを判断し、上記燃焼区間積算値Ｓａｄｄ［ｍ］が閾値ＳＺｔｈより大きい場合には、Ｓ１６３０に移行し、上記燃焼区間積算値Ｓａｄｄ［ｍ］が閾値ＳＺｔｈ以下である場合には、Ｓ１６４０に移行するように、異常判定処理の内容を変更すればよい。その他、図２１におけるＳ１２１０〜Ｓ１２３０の処理を、Ｓ１３１０〜Ｓ１３３０の処理に置換し、Ｓ１２６０以降の処理を、Ｓ１３６０〜Ｓ１３９０の処理に置き換えてもよいことは言うまでもない。
【０１７７】
また、異常判定処理は、図２２に示す内容に変更されてもよい。
（第四変形例）
図２２は、第四変形例の電子制御装置１におけるＣＰＵ３３が、図２１に示す異常判定処理に代えて実行する異常判定処理を表すフローチャートである。第四変形例の電子制御装置１は、第三変形例の電子制御装置１に対し、異常判定処理の内容が異なる程度であるので、ここでは、第三変形例との相違点についてのみ説明する。
【０１７８】
まず、第四変形例では、Ｓ５４０の時間計測処理において、Ｔ［０］〜Ｔ［３］の算出が全て終了した時点で（即ち、Ｓ１５８０でＮｏと判断してＳ１５８１及びＳ１５８５の処理を実行した時点で）、燃焼区間が終了したと判断し（Ｓ５６０でＹｅｓ）、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］を出力する（Ｓ５７０）と共に、真の燃焼区間（定義された燃焼区間）が終了していない場合、再び、Ｓ５１０でＹｅｓと判断して、Ｓ５２０の処理を実行することにより、定義された燃焼区間内で、繰返し、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］を出力する。
【０１７９】
そして、第四変形例の異常判定処理では、複数組の燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］が出力された場合、各組について、Ｓｔ［ｍ，０］とＳｔ［ｍ，２］との値の差を求め、Ｓｔ［ｍ，０］≒Ｓｔ［ｍ，２］である出力結果を除いた出力結果（燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］）を用い、失火判定を行うことにより、図２３下段に示すようなノイズ等により歪んだ信号波形による影響を受けることなく、失火を検出する。尚、図２３上段は、燃焼区間における正常燃焼時のイオン電流検出信号の波形の例を表す図であり、図２３下段は、燃焼区間における失火時のイオン電流検出信号の波形であって、ノイズ等により歪んだ波形の例を表す図である。
【０１８０】
図２２に示す第四変形例の異常判定処理を実行すると、ＣＰＵ３３は、上述したＳ１２１０〜Ｓ１２３０までの処理を実行した後、Ｓ１７１０に移行する。また、Ｓ１７１０では、燃焼・排気区間処理部５０から、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］の組が、複数出力されたか否かを判断し、複数出力されたと判断すると（Ｓ１７１０でＹｅｓ）、Ｓ１７２０に移行する。
【０１８１】
また、Ｓ１７２０に移行すると、値（Ｓｔ［ｍ，０］−Ｓｔ［ｍ，２］）が予め定られた値ε（εは正の微小値）未満である燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］の組を識別し、これに該当する組以外の燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］の各組におけるＳｔ［ｍ，０］の値を合計して、合計値ΣＳｔ［ｍ，０］を求める。
【０１８２】
また、この処理を終えると、Ｓ１７２５にて、燃焼・排気区間処理部５０から燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］と共に出力された複数の燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］の内、値（Ｓｔ［ｍ，０］−Ｓｔ［ｍ，２］）が予め定られた値ε未満である燃焼区間時間の組と同時期に計測された燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］以外の燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］であって、最大値を採る燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を求め、これをパラメータＳｐｍａｘ［ｍ］に設定する。また、この処理を終えると、Ｓ１７３０に移行する。
【０１８３】
一方、Ｓ１７１０にて、燃焼・排気区間処理部５０から、燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］の組が、複数出力されなかったと判断すると（Ｓ１７１０でＮｏ）、ＣＰＵ３３は、Ｓ１７１５に移行し、ΣＳｐ［ｍ，０］として、燃焼・排気区間処理部５０から出力された燃焼区間時間Ｓｔ［ｍ，０］の値を設定し、パラメータＳｐｍａｘ［ｍ］に、燃焼・排気区間処理部５０から出力された燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を設定する。そして、この処理を終えると、Ｓ１７３０に移行する。
【０１８４】
また、Ｓ１７３０に移行すると、ＣＰＵ３３は、ΣＳｔ［ｍ，０］の値が、予め定められた閾値ＳＴｔｈより大きいか否かを判断し、ΣＳｔ［ｍ，０］の値が、閾値ＳＴｔｈより大きいと判断すると（Ｓ１７３０でＹｅｓ）、Ｓ１７４０に移行し、ΣＳｔ［ｍ，０］の値が、閾値ＳＴｔｈ以下であると判断すると（Ｓ１７３０でＮｏ）、Ｓ１７５０に移行して、失火対応処理を実行する。
【０１８５】
その他、Ｓ１７４０に移行すると、ＣＰＵ３３は、Ｓｐｍａｘ［ｍ］の値が、予め定められた閾値ＳＰｔｈより大きいか否かを判断し、Ｓｐｍａｘ［ｍ］の値が、閾値ＳＰｔｈより大きいと判断すると（Ｓ１７４０でＹｅｓ）、Ｓ１２６０に移行し、Ｓｐｍａｘ［ｍ］の値が、閾値ＳＰｔｈ以下であると判断すると（Ｓ１７４０でＮｏ）、Ｓ１７５０に移行して、失火対応処理を実行する。そして、Ｓ１７５０での失火対応処理を終えると、Ｓ１２６０に移行する。また、Ｓ１２６０に移行すると、上記実施例と同様に、その後、Ｓ１２６０〜Ｓ１２９０の処理を実行し、当該異常判定処理を終了する。
【０１８６】
以上、第四変形例について説明したが、この第四変形例によれば、複数の基準値Ｖｔｈ１，Ｖｔｈ２を用いて信号波形の特徴を抽出し、ノイズと推定される信号波形に対応するＳｔ［ｍ，０］，Ｓｐ［ｍ］の値を無視して、失火判定するので、ノイズ等により図２３下段に示すように信号波形が歪んだ場合においても、ノイズより突出した信号波形を、真のイオン電流と錯誤することなく、失火判定することができる。従って、第四変形例によれば、高精度に失火を検出することができる。
【０１８７】
尚、第四変形例においても、第三変形例と同様、燃焼区間積算値Ｓａｄｄ［ｍ］を用いて、失火判定してもよい。この場合には、積算処理のＳ１０１０において、パラメータａｄ［ｍ，ｉ］が基準値Ｖｔｈ１以上であるか否かを判断することにより、燃焼区間における基準値Ｖｔｈ１以上のパラメータａｄ［ｍ，ｉ］の値を積算して、燃焼区間積算値Ｓａｄｄ［ｍ］を得ると共に、図２２におけるＳ１２２０の処理に代替して、Ｓ１３２０に対応する処理を実行する。尚、この際には、複数出力された各燃焼区間積算値Ｓａｄｄ［ｍ］を、上述したＳ１３２０の手順に従って更新する。
【０１８８】
また、Ｓ１７２５では、燃焼・排気区間処理部５０から燃焼区間時間Ｓｔ［ｍ，０］〜Ｓｔ［ｍ，３］と共に出力された複数の燃焼区間積算値Ｓａｄｄ［ｍ］の内、値（Ｓｔ［ｍ，０］−Ｓｔ［ｍ，２］）が予め定られた値ε未満である燃焼区間時間の組と同時期に計測された燃焼区間積算値Ｓａｄｄ［ｍ］以外の燃焼区間積算値Ｓａｄｄ［ｍ］の合計値ΣＳａｄｄ［ｍ］を求める。但し、Ｓ１３２０による更新後の値を用いて、合計値ΣＳａｄｄ［ｍ］を求める。
【０１８９】
そして、Ｓ１７４０では、上記ΣＳａｄｄ［ｍ］が閾値ＳＺｔｈより大きいか否かを判断し、ΣＳａｄｄ［ｍ］が閾値ＳＺｔｈより大きい場合には、Ｓ１２６０に移行し、ΣＳａｄｄ［ｍ］が閾値ＳＺｔｈ以下である場合には、Ｓ１７５０に移行する。
【０１９０】
その他、第一〜第四変形例においては、エンジン回転数に応じ、レジスタ４７，５３に、エンジン回転数に適した燻り検出用基準値、プレイグ検出用基準値、燃焼区間用基準値、排気区間陽基準値を設定するように、電子制御装置１を構成すると、一層、高精度に燃焼状態の異常を検出することができる。
（第五変形例）
図２４（ａ）は、第五変形例の電子制御装置１におけるＣＰＵ３３が、点火周期に合わせて（例えば、通電が開始される直前に）、繰返し実行する基準値設定処理を表すフローチャートである。ＣＰＵ３３は、気筒毎に、この基準値設定処理を独立して実行する。
【０１９１】
また、図２４（ｂ）（ｃ）は、エンジン回転数と設定すべき基準値との対応関係を示す基準値マップの概念図である。特に、図２４（ｃ）は、第一基準値及び第二基準値を設定する第二変形例〜第四変形例に対応した基準値マップの概念図である。第五変形例の電子制御装置１におけるＲＯＭ３５には、基準値マップとして、燻り検出用基準値を設定するための燻り検出用基準値マップ、プレイグ検出用基準値を設定するためのプレイグ検出用基準値マップ、燃焼区間用基準値を設定するための燃焼区間用基準値マップ、排気区間用基準値を設定するための排気区間用基準値マップ、が記憶されている。
【０１９２】
ＣＰＵ３３は、これら基準値マップに基づいて、基準値設定処理により、レジスタ４７，５３に各基準値を設定する。具体的に、基準値設定処理を開始すると、ＣＰＵ３３は、まず、エンジン回転数を識別し（Ｓ１８１０）、その後、基準値マップに基づき、レジスタ４７，５３に設定する基準値として、エンジン回転数に応じた基準値を決定する（Ｓ１８２０）。具体的には、燻り検出用基準値マップに基づき、レジスタ４７に設定する燻り検出用基準値（燻り検出用第一基準値及び燻り検出用第二基準値）を決定し、プレイグ検出用基準値マップに基づき、レジスタ４７に設定するプレイグ検出用基準値（プレイグ検出用第一基準値及びプレイグ検出用第二基準値）を決定し、燃焼区間用基準値マップに基づき、レジスタ５３に設定する燃焼区間用基準値（燃焼区間用第一基準値及び燃焼区間用第二基準値）を決定し、排気区間用基準値マップに基づき、レジスタ５３に設定する排気区間用基準値（排気区間用第一基準値及び排気区間用第二基準値）を決定する。
【０１９３】
そして、Ｓ１８２０での処理を終えると、上記決定内容に従って、信号処理部４０のレジスタ４７，５３に、各基準値を設定する（Ｓ１８３０）。また、この処理を終えると、当該基準値設定処理を終了する。
【０１９４】
以上、第五変形例について説明したが、第五変形例によれば、エンジンの運転状態（エンジン回転数）に基づき、最適な基準値を、信号処理部４０に設定することができるので、エンジンの運転状態によるノイズ等の変化によって、燃焼状態の異常を誤検出したり、看過してしまうのを十分抑制することができる。
【０１９５】
尚、本発明のＡＤ変換手段は、ＡＤ変換器３９に相当し、補間処理手段は、前処理部４１に相当し、時間計測手段は、燻り・プレイグ区間時間計測処理部４６及び燃焼・排気区間時間計測処理部５１に相当し、特徴量算出手段は、積算Ｐ／Ｈ処理部５２に相当する。その他、異常検出手段は、ＣＰＵ３３が実行する異常判定処理にて実現され、基準値更新手段は、ＣＰＵ３３が実行する基準値設定処理にて実現されている。
【０１９６】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、ＡＤ変換値が基準値Ｖｔｈ以上である時間を求めるようにしたが、ＡＤ変換値が基準値Ｖｔｈ以下である時間を求めるようにして、上記実施例と等価な異常判定処理を実行するようにしてもよい。
【０１９７】
その他、上記実施例では、順方向のイオン電流が正値で得られる電子制御装置１について説明したが、順方向のイオン電流が、ＡＤ変換値において負値で得られる電子制御装置１においては、Ｓ４２０，Ｓ９２０，Ｓ１０１０，Ｓ１０５０，Ｓ１２４５，Ｓ１２６５，Ｓ１３４５，Ｓ１３６５，Ｓ１４３０，Ｓ１４５０，Ｓ１５２５，Ｓ１５５０，Ｓ１５６０，Ｓ１６２０，Ｓ１７４０での不等号を反転して各処理を行うことで、上記実施例と等価な処理を実現することができる。尚、この場合には、第二変形例において、第一基準値＜第二基準値に設定し、第四変形例のＳ１７２５においては、最小値を採る燃焼区間Ｐ／Ｈ値Ｓｐ［ｍ］を求め、これをパラメータＳｐｍａｘ［ｍ］に設定する。
【０１９８】
また、上記実施例では、直線補間により補間処理する方法について説明したが、補間方法は、直線補間に限定されることなく、種々の方法を採用することができる。
【図面の簡単な説明】
【０１９９】
【図１】本実施例の電子制御装置１の構成を表すブロック図である。
【図２】イグナイタ１０の詳細構成を表す回路図である。
【図３】信号処理部４０が有する各機能を示したブロック図である。
【図４】信号処理部４０への入力信号を示すタイムチャートである。
【図５】前処理部４１が行う処理を表すフローチャートである。
【図６】前処理部４１が行う補間処理を表すフローチャートである。
【図７】補間処理後のＡＤ変換値の時系列データを表す図である。
【図８】燻り・プレイグ区間時間計測処理部４６が行う処理を表すフローチャートである。
【図９】時間計測処理を表すフローチャートである。
【図１０】燃焼・排気区間時間計測処理部５１が行う処理を表すフローチャートである。
【図１１】積算Ｐ／Ｈ処理部５２が行う処理を表すフローチャートである。
【図１２】積算Ｐ／Ｈ処理部５２が行うＰ／Ｈ処理を表すフローチャートである。
【図１３】積算Ｐ／Ｈ処理部５２が行う積算処理を表すフローチャートである。
【図１４】ドリフト検出処理部５５が行う処理を表すフローチャートである。
【図１５】ＣＰＵ３３が行う異常判定処理を表すフローチャートである。
【図１６】第一変形例の異常判定処理を表すフローチャートである。
【図１７】第二変形例における基準値の設定手法を示した図である。
【図１８】第二変形例の時間計測処理を表すフローチャートである。
【図１９】第三変形例における基準値の設定手法を示した図である。
【図２０】第三変形例の燃焼・排気区間時間計測処理部５１が、Ｓ５４０にて実行する時間計測処理を表すフローチャート（ａ）、及び、燃焼・排気区間時間計測処理部５１が出力するパラメータを示す説明図（ｂ）である。
【図２１】第三変形例の異常判定処理を表すフローチャートである。
【図２２】第四変形例の異常判定処理を表すフローチャートである。
【図２３】燃焼区間におけるイオン電流検出信号の波形例を表す図である。
【図２４】第五変形例のＣＰＵ３３が行う基準値設定処理を表すフローチャート（ａ）及びエンジン回転数と設定すべき基準値との対応関係を示す基準値マップの概念図（ｂ）（ｃ）である。
【符号の説明】
【０２００】
１…電子制御装置、１０…イグナイタ、１１…イグニションコイル、１２…一次巻線、１３…二次巻線、１４…電源、１５…イグナイタ回路、１６…ドライブ回路、１７…パワートランジスタ、２０…イオン電流検出回路、２１…コンデンサ、２２，２３…ツェナーダイオード、２４…抵抗器、２５…反転増幅器、２６…Ｖ／Ｉ変換器、２７…点火プラグ、２８…放電用電極、２９…グランド電極、３０…マイコン、３１…インタフェース、３３…ＣＰＵ、３５…ＲＯＭ、３７…ＲＡＭ、３８…マルチプレクサ、３９…ＡＤ変換器、４０…信号処理部、４１…前処理部、４３…解析部、４５…燻り・プレイグ区間処理部、４６…燻り・プレイグ区間時間計測処理部、４７，５３…レジスタ、５０…燃焼・排気区間処理部、５１…燃焼・排気区間時間計測処理部、５２…積算Ｐ／Ｈ処理部、５５…ドリフト検出処理部、６０…フィルタ回路
【図１】
2007154662.tif 000003
【図２】
2007154662.tif 000004
【図３】
2007154662.tif 000005
【図４】
2007154662.tif 000006
【図５】
2007154662.tif 000007
【図６】
2007154662.tif 000008
【図８】
2007154662.tif 000009
【図９】
2007154662.tif 000010
【図１０】
2007154662.tif 000011
【図１１】
2007154662.tif 000012
【図１２】
2007154662.tif 000013
【図１３】
2007154662.tif 000014
【図１４】
2007154662.tif 000015
【図１５】
2007154662.tif 000016
【図１６】
2007154662.tif 000017
【図１８】
2007154662.tif 000018
【図１９】
2007154662.tif 000019
【図２０】
2007154662.tif 000020
【図２１】
2007154662.tif 000021
【図２２】
2007154662.tif 000022
【図２３】
2007154662.tif 000023
【図２４】
2007154662.tif 000024
【図７】
2007154662.tif 000025
【図１７】
2007154662.tif 000026