(57)【要約】【課題】過渡運転時にノッキング検出精度を向上し、誤判定を抑制する。【解決手段】ＣＰＵ９は、振動センサ１５１が検出した振動からフィルタ３９を介して複数の周波数成分を抽出する周波数分析部と、運転状態に応じて抽出する周波数帯を切替える周波数切替え部と、運転状態に基づき各周波数成分のバックグラウンドレベル推定値を取得するバックグラウンドレベル推定部と、各周波数成分からバックグラウンドレベル推定値を減算後の各周波数成分を平滑化した各周波数成分に各周波数成分のバックグランド推定値を合算してバックグラウンドレベルＢＧＬｉを算出する平滑化部と、周波数切替え部が周波数帯を切替えたときに平滑化部における平滑化処理を変更する補正部と、各周波数成分と各周波数成分のバックグラウンドレベルとに基づきノッキング指標を算出するノッキング指標算出部と、ノッキング指標を判定閾値と比較してノッキングを判定する判定部とを備える。【選択図】図１０
2018159332.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の振動センサが検出した振動からフィルタを介して複数の周波数成分を抽出する周波数分析部と、
前記内燃機関の運転状態に応じて前記周波数分析部が抽出する周波数帯を切替える周波数切替え部と、
前記内燃機関の運転状態に基づき前記内燃機関の振動の各周波数成分のバックグラウンドレベル推定値を取得するバックグラウンドレベル推定部と、
前記各周波数成分から当該各周波数成分の前記バックグラウンドレベル推定値を減算した後にその減算後の各周波数成分を平滑化し、該平滑化した各周波数成分に前記各周波数成分の前記バックグラウンド推定値を合算することによって前記内燃機関の振動の各周波数成分のバックグラウンドレベルを算出する平滑化部と、
前記周波数切替え部が前記周波数帯を切替えたときに、前記平滑化部における平滑化処理を変更する補正部と、
前記各周波数成分と当該各周波数成分のバックグラウンドレベルとに基づき前記内燃機関のノッキング指標を算出するノッキング指標算出部と、
前記ノッキング指標を判定閾値と比較することによって前記内燃機関にノッキングが生じているか否かを判定する判定部とを備える内燃機関のノッキング検出装置。
【請求項２】
前記補正部は、前記周波数切替え部が前記周波数帯を切替える毎に、前記平滑化部における平滑化処理を変更する、
請求項１に記載のノッキング検出装置。
【請求項３】
前記補正部は、前記周波数帯の切替え前に平滑化される各周波数成分を、前記周波数帯の切替え後に平滑化される各周波数成分に置き換える、
請求項１記載のノッキング検出装置。
【請求項４】
前記補正部は、前記周波数帯の切替え前に平滑化される各周波数成分よりも前記周波数帯の切替え後に平滑化される各周波数成分の重みを所定時間が経過するまで軽くして、前記平滑化部における前記平滑化処理を実行する、
請求項１記載のノッキング検出装置。
【請求項５】
前記バックグラウンドレベル推定値は、前記複数の周波数成分から成るマップに基づいて算出される、
請求項１記載のノッキング検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の異常燃焼によって発生する振動からノッキングの発生を判定する内燃機関のノッキング検出装置に関する。
【背景技術】
【０００２】
ノッキングは、内燃機関の燃焼室内の端末部の未燃ガスが自己発火することによって燃焼室内のガスが振動を起こし、その振動が機関本体に伝わる現象である。ノッキングは、例えば、機関の発生エネルギの損失（出力低下）や機関各部への衝撃、さらには燃費の低下を招来するので、可能な限り回避することが望ましい。そのため、ノッキングの発生を正確に検出することが不可欠である。
【０００３】
従来、特許文献１に記載のように、振動センサの出力信号の中から基本振動周波数および高調波成分だけをバンドパスフィルタを用いて分離し、その出力がバックグラウンドレベルより大きくなったか否かによって、ノッキングの発生を検出していた。なお、バックグラウンドレベルとは、振動センサの信号自体の過去の値を加重平均して平均化したものである。
【０００４】
特許文献１のノッキング検出装置は、基本振動周波数および高調波成分だけに基づいて、ノッキングの発生を検出する。したがって、エンジンの高速回転時にバックグラウンドレベルが大きくなり過ぎると、正確なノッキング発生の検出ができなかったり、機関の諸元が変化すると、ノッキングの共鳴周波数も変化して、正確なノッキング発生の検出ができなかった。
【０００５】
そこで、特許文献２には、エンジンに発生する振動を検出する振動センサと、当該振動センサに接続され、ノッキング周波数帯において互いに異なる周波数帯域のフィルタ特性を有する複数のフィルタとを備えるノッキング検出装置が開示されている。
【０００６】
エンジンに発生するノッキングの共鳴周波数は、エンジンの運転状態によって異なる。例えば、エンジンの回転数が高回転または低回転であるかによって、ノッキングの共鳴周波数も異なる。そのため、それらノッキングの共鳴周波数に対して、互いに異なる周波数帯域のフィルタ特性を有する複数のフィルタを有するフィルタ回路を設け、エンジンの運転状態に応じてフィルタ回路からの出力を選択すれば、信頼性の高いノッキング検出を行うことが可能となる。
【０００７】
近年、フィルタ回路は、マイクロコンピュータに実装するソフトウェアによるデジタルフィルタで実現することも知られており、さらにはマイクロコンピュータの機能としてデジタルフィルタを構成する方法も知られている。
【０００８】
特許文献３には、バックグラウンドレベルを検出するために用いる遅れフィルタに起因する応答遅れを解決する方法が記載されている。同文献のノッキング検出装置は、エンジンの回転数の変化に基づきエンジンの運転状態を検出し、その運転状態に基づきノッキングを判定する閾値を補正する。
【０００９】
さらに、従来、エンジンの運転状態によって異なるノッキングの特徴周波数に対し、フィルタする周波数帯を切替えた場合に、切替えた後の周波数帯に適したバックグラウンドレベルになるまでは平滑化処理を繰り返す必要があった。
【００１０】
その問題に対し、特許文献４には、切替え後の周波数帯に適したバックグラウンドレベルを短時間で算出することのできる手法が記載されている。同文献においては、ノッキングの特徴周波数をフィルタする周波数帯を切替えた場合、切替え前のバックグラウンドレベルを学習し、再度切替え前のフィルタ設定に戻ったタイミングで学習した値をバックグラウンドレベルとして反映している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開昭５８−４５５２０号公報
【特許文献２】特開昭５６−０００６３７号公報
【特許文献３】特開昭６３−２９５８６４号公報
【特許文献４】特開２００３−０３５１９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
例えば、燃費の向上や排気浄化性能の向上等の要求に対して、エンジンの圧縮比を上げる試みがなされている。一方、圧縮比を上げると、ノッキングが発生しやすくなるので、ノッキングの検出精度をさらに向上することが期待されている。
【００１３】
特許文献２に記載のように、複数の共鳴周波数成分を取り出してノッキングを検出する方法において、さらにノッキングの検出精度を高める場合、以下に述べるような課題を解決する必要がある。すなわち、ノッキングが発生していないときの振動センサへの入力の平均値を正確に算出する必要がある。例えば、遅れフィルタを用いて平均値を算出する場合は、遅れフィルタをより強くかける必要がある。一方、遅れフィルタは、エンジンの運転状態変動時に、応答性が遅れる特性を有している。この応答遅れが大きいと、エンジンの負荷変動時に、ノッキングの発生の誤検出による点火時期の誤差が発生し、特に、動力性能、排気浄化性能、燃料消費性能等に悪影響を及ぼすことがあった。
【００１４】
特許文献３に記載のように、複数の共鳴周波数の平均値と補正した閾値とを比較して検出精度を向上させた場合、エンジンの回転数の増加に応じて増大する振動センサの出力も、高精度に検出してしまう。そのため、スロットル開度の急変によって上記と同様の誤検出の危険性が増大する可能性がある。
【００１５】
特許文献４に記載のように、エンジンの回転数の変化に応じて変化するノッキングの特徴周波数に対し、フィルタする周波数帯を切替える前後でバックグラウンドレベルを学習する場合、エンジンの負荷状態や水温に依存したノッキングの特徴周波数の変化は考慮されない。したがって、エンジンの回転変動に加え、エンジンの負荷状態や水温に依存してフィルタする周波数帯を切替えると、記憶するバックグラウンドレベルが膨大となり、誤ったバックグラウンドレベルを記憶する可能性がある。そのため、特許文献４の装置では、特許文献２，３と同様の誤検出の可能性がある。
【００１６】
本発明は、上記のような課題に鑑みてなされたものであり、その目的は、過渡運転時におけるノッキングの検出精度を向上させて、誤判定を抑制することができる内燃機関のノッキング検出装置を提供することである。
【課題を解決するための手段】
【００１７】
本発明に係る内燃機関のノッキング検出装置は、内燃機関の振動センサが検出した振動からフィルタを介して複数の周波数成分を抽出する周波数分析部と、前記内燃機関の運転状態に応じて周波数分析部が抽出する周波数帯を切替える周波数切替え部と、前記内燃機関の運転状態に基づき前記内燃機関の振動の各周波数成分のバックグラウンドレベル推定値を取得するバックグラウンドレベル推定部と、前記各周波数成分から当該周波数成分の前記バックグラウンドレベル推定値を減算した後にその減算後の各周波数成分を平滑化し、該平滑化した各周波数成分に前記各周波数成分の前記バックグラウンドレベル推定値を合算することによって前記内燃機関の振動の各周波数成分のバックグラウンドレベルを算出する平滑化部と、前記周波数切替え部が前記周波数帯を切替えたときに、前記平滑化部における平滑化処理を変更する補正部と、前記周波数帯が切替えられた各周波数成分、および前記バックグラウンドレベルに基づき前記内燃機関のノッキング判定指標を算出するノッキング指標算出部と、前記ノッキング指標を判定閾値と比較することによって前記内燃機関にノッキングが生じているか否かを判定する判定部とを備える。
【発明の効果】
【００１８】
本発明によれば、過渡運転時においてバックグラウンドレベルを算出する際の追従性が高まり、平滑化処理を強くかけることができる。これにより、過渡運転時におけるノッキングの誤判定を抑制するとともに、エンジンの運転状態を問わずにノッキング検出精度を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】実施例１に係るノッキング非発生時の周波数成分の解析結果。
【図２】実施例１に係るノッキング発生時の周波数成分の解析結果。
【図３】実施例１に係るノッキングの発生を判定する一般原理の説明図。
【図４】実施例１に係る過渡運転時におけるスロットル開度、エンジンの回転数、周波数のバックグラウンドレベル、ノック指標、およびノック判定信号の経時変化。
【図５】実施例１に係るフィルタの周波数帯切替前後のバックグラウンドレベルの径時変化。
【図６】実施例１に係るエンジン点火装置のシステム構成図。
【図７】実施例１に係るコントロールユニットの構成のブロック図。
【図８】実施例１に係るノッキングの有無を判定する手順を説明する流れ。
【図９】従来技術のノッキングの有無を判定する手順を説明する演算チャート。
【図１０】実施例１に係るノッキングの有無を判定する手順を説明する演算チャート。
【図１１】実施例１に係るバックグラウンドレベルの推定値を記述したマップデータ。
【図１２】実施例１に係るマップデータのエンジンの回転数と負荷との図。
【図１３】実施例１に係るフィルタの周波数帯切替後の平滑化処理の補正の流れ。
【図１４】実施例１に係るフィルタの周波数帯切替前後のバックグラウンドレベルの径時変化の比較図。
【図１５】実施例１に係るＣＰＵ２０が点火時期を演算する手順を説明する流れ。
【図１６】実施例２に係るフィルタの周波数帯切替後の平滑化処理の補正の流れ。
【発明を実施するための形態】
【００２０】
以下、幾つかの実施例を、図面を参照して詳細に説明する。
【実施例１】
【００２１】
まず、一般的なノッキング検出の原理について説明する。
【００２２】
＜ノッキング検出の一般的原理＞
エンジンの振動には、例えば、ピストンの摩擦、クランク軸の回転、弁の作動等によって生じる多くの振動成分が含まれている。しかも、これらの振動成分は、エンジンの運転状態によって変化する。エンジンにノッキングが発生すると、ノッキングに特有な振動が発生する。ノッキングの発生の有無は、振動センサが検出するエンジン全体の振動からノッキングに特有な振動を分離することによって判定される。
【００２３】
図１は、本実施例に係るノッキングが発生していない時の振動センサからの出力の周波数成分の解析結果を表わした図である。
【００２４】
ここでは、略２０ＫＨｚまでの範囲内における解析結果を例示した。しかし、本実施例の対象は、これに限らない。以下の図面においても同様である。
【００２５】
図２は、ノッキングが発生した時の振動センサからの出力の周波数成分のエンジンの回転数毎の解析結果ｆ，ｇを示した図である。
【００２６】
図１と図２とを比較すれば分かるように、ノッキングが発生している場合は、ノッキングが発生していない場合に比べ、各々の共鳴周波数成分が大きくなっている。図２に示すように、例えば、周波数ｆ１０，ｆ０１，ｆ１１近傍においてノッキングが発生している。
【００２７】
さらに、図２の解析結果ｆと解析結果ｇとを比較すれば分かるように、エンジンの運転状態（ここでは、エンジンの回転数）の違いに応じて、ノッキングの特徴周波数が変化している。例えば、ノッキングは、解析結果ｆではｆ１０、ｆ０１、ｆ１１近傍で発生し、解析結果ｇではｇ１０，ｇ０１，ｇ３０，ｇ１１近傍で発生している。
【００２８】
ここで、ノッキングの特徴周波数を検出可能なフィルタの周波数の設定を、エンジンの運転状態に応じて切替えることによって、信頼性の高いノッキング判定が可能となる。フィルタは、ハイパスフィルタ、ローパスフィルタ、またはバンドパスフィルタの何れでもよい。
【００２９】
図３は、ノッキング判定指標Ｉを用いて、ノッキングの発生の有無を判定する一般的原理について説明する図である。
【００３０】
以下の原理説明においては、便宜上、図２で示した共鳴周波数ｆ１０（６．３ＫＨｚ）の共鳴周波数成分ω１０Ｐ（ｆ１０）と、共鳴周波数ｆ０１（１８．０ＫＨｚ）の共鳴周波数成分ω０１Ｐ（ｆ０１）とを用いて、ノッキング判定指標Ｉを算出する例を説明する。しかし、これに拘束されるものではなく、任意の２以上の共鳴周波数成分を用いて、ノッキングの発生の有無を判定してもよい。
【００３１】
振動センサは、ノッキングの発生による振動と、バックグラウンド振動（ノッキング以外の要因によって発生する振動）とを合成して検出する。したがって、ノッキング判定指標Ｉは、ノッキングが発生していないときは、バックグラウンド振動に対応する指標Ｉｂであり、ノッキングが発生したときは、バックグラウンド振動に対応する指標Ｉｂとノッキングに対応する指標Ｉｋとを合成することによって求められる。
【００３２】
ノッキング判定指標Ｉは、主要な共鳴周波数成分を用いて、下記式１によって表すことができる。ここで、ωは、エンジンの回転数によって定まる実数値である。さらに、ωは、１か０かの２値をとってもよい。Ｐは、各共鳴周波数成分の振動強度（パワースペクトル）である。
【００３３】
Ｉ＝ω１０Ｐ（ｆ１０）＋ω２０Ｐ（ｆ２０）＋ω０１Ｐ（ｆ０１）＋ω３０Ｐ（ｆ３０）＋ω１１Ｐ（ｆ１１）・・・（式１）
【００３４】
図３に示すように、バックグラウンド振動の共鳴周波数成分によって示されるノッキング判定指標Ｉｂと、ノッキングによる振動の共鳴周波数成分によって示される指標Ｉｋとは、方向と大きさを異にしている。これは人間による聴覚試験でも明らかなように、ノッキングが無しの場合は、エンジン音のみであるのに対し、ノッキングが有りの場合は、例えば、カリカリ等という音である。したがって、ノッキングの有無は、音色によって聴き分けられる。
【００３５】
バックグラウンド振動に対して、ノッキングの発生による振動が加わると、ノッキング判定指標Ｉは、閾値Ｉ０２を超過する。これにより、ノッキングが発生していることを判定することができる。以下、本明細書において、式１の右辺の５つの項に限らず、振動センサからの出力に含まれる複数の共鳴周波数成分を組み合わせることによって算出される指標は、全てノッキング判定指標（以下、ノック指標という）Ｉと定義する。
【００３６】
このように、バックグラウンド振動に加えて、ノッキングの発生による特有な周波数成分を考慮してノック指標を算出するので、バックグラウンド振動が大きくなっても、ノッキングの発生の有無を判定することができる。
【００３７】
＜本実施例におけるノッキング検出の基本的考え方＞
本実施例においては、ノック指標Ｉを算出する際に、従来と同様に、振動センサが検出した振動を周波数成分毎に平均化することによって、バックグラウンドレベルを算出する。ノッキングが発生していない場合でも、例えば、エンジンの振動や燃焼振動の増大によって振動強度が急変すると、バックグラウンドレベルの算出結果が最新状態に追従することができず、以下の図４，５で説明するように、ノッキングを誤検出する可能性がある。
【００３８】
図４は、過渡運転時におけるスロットル開度ＴＶＯ、エンジンの回転数Ｎｅ、各周波数ｆｉのバックグラウンドレベルＢＧＬｉ、ノック指標Ｉ、ノック判定信号（ノックの有無を表す信号）の経時変化を示す例である。
【００３９】
図４において、スロットル開度ＴＶＯを全閉から全開にした場合、実際にエンジンの回転数Ｎｅが立ち上がるのは、遅れ時間が経過してからである。バックグラウンドレベル（ＢＧＬｉ）は、本来破線で示したような動きである。しかし、平均化処理によってＢＧＬｉを算出すると、実線で示したような遅れが生じてしまう。ノック指標Ｉは、Ｓ／Ｎ比（ＢＧＬｉに対する各周波数成分の比）の計算によって求めている。
【００４０】
図４に示す例によれば、ＢＧＬｉが遅れることによって、ノッキングが発生していないにもかかわらず、実際のノック指標Ｉは、理論的なノック指標Ｉを超過し、その結果としてノッキングを誤判定していることが分かる。この理由について、さらに説明する。
【００４１】
バックグラウンドレベルＢＧＬｉが急増したとき、平均化処理をすることによって求めるバックグラウンドレベルＢＧＬｉの算出結果が、実際の値に対して遅れることになる。ノック指標ＩとしてバックグラウンドレベルＢＧＬｉに対するノイズの比を用いる場合、バックグランドレベルＢＧＬｉの算出遅れは、ノック指標Ｉの分母が実際の値よりも小さくなることに繋がる。したがって、ノック指標Ｉが、本来の値よりも大きく算出されることになる。その場合、過渡運転状態においては、ノック指標Ｉとノック判定閾値Ｉ０２との間のクリアランスが小さくなり、ノッキングが発生していないにもかかわらず、ノッキング有りと判定される可能性がある。図４に示す例は、このような状態を示している。
【００４２】
図５は、フィルタの周波数帯の切替え前後におけるバックグラウンドレベルＢＧＬｉの径時変化を示す例である。
【００４３】
図５に示す例によれば、エンジンの運転状態に応じてノッキング検出用フィルタの周波数帯を切替えると、平滑化処理をしているため、切替え前の周波数帯のバックグラウンドレベルＢＧＬｉを参照する。したがって、切替え後の周波数帯に応じた実際のバックグラウンドレベルＢＧＬｉになるまで遅れるため、ノッキングを誤検出する可能性がある。
【００４４】
本実施例は、図４に例示するように、バックグラウンドレベルＢＧＬｉの算出結果が、実際のバックグラウンドレベルＢＧＬｉに対して追従できずに遅れることに起因する過渡運転時におけるノッキングの誤判定を抑制する。さらに、本実施例は、さらに、図５に例示するように、エンジンの運転状態の違いに応じてフィルタする周波数帯を切替えた直後のバックグラウンドレベルＢＧＬｉの精度を向上する。これらによって、過渡運転時におけるノッキングの誤検出を防止する。その結果、過渡および定常問わずに、ノッキングの検出精度が向上する。
【００４５】
＜装置構成＞
図６は、エンジン点火装置のシステム構成図である。
【００４６】
空気は、エアクリーナ１の入口より流入し、ダクト３、絞弁を有するスロットルボディ５、および吸気管６を通り、「内燃機関」としてのエンジン７のシリンダ内に吸入される。ダクト３には、熱線式空気流量計２が設けられている。熱線式空気流量計２は、吸入空気量を検出し、その検出結果を表す検出信号をコントロールユニット（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）９に出力する。
【００４７】
燃料は、図示していない燃料タンクからインジェクタ１６を経て噴射され、吸気管６内で吸入空気と混合され、エンジン７のシリンダ内に供給される。混合気は、エンジン７のシリンダ内で圧縮され、点火プラグ１５によって着火される。爆発後の混合気は、排気管８から排出される。排気管８には、排気センサ１１が設けられており、排気センサ１１による検出結果を表す検出信号は、コントロールユニット９に入力される。
【００４８】
点火コイル１３から発生した高電圧は、分配器１４によって各気筒に分配され、点火プラグ１５に供給される。クランク角センサ１２は、エンジン７の回転状態を検出する。クランク角センサ１２は、１回転毎の絶対位置を示すＲｅｆ信号および当該絶対位置から所定角度移動した位置を示すＰＯＳ信号を出力する。Ｒｅｆ信号およびＰＯＳ信号は、コントロールユニット９に入力される。エンジン７には、振動を検出する振動センサ（燃焼状態センサ）１５１が取り付けられ、振動センサ１５１の検出結果を表す検出信号は、コントロールユニット９に入力される。
【００４９】
図７は、コントロールユニット９の構成のブロック図である。
【００５０】
コントロールユニット９は、各センサからの信号に基づいて燃料供給量および点火時期等を演算し、インジェクタ１６と点火コイル１３とに制御信号を出力する。コントロールユニット９は、制御ブロック３４とノッキング検出ブロック３５とに大別される。
【００５１】
制御ブロック３４は、ＣＰＵ２０と、Ａ／Ｄ変換器２１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２２と、入力Ｉ／Ｏ２３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２４と、ＤＰＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ）２５と、出力Ｉ／Ｏ２６と、バス３７とを備える。
【００５２】
ノッキング検出ブロック３５は、ＣＰＵ２９と、ポート２７と、タイミング回路２８と、Ａ／Ｄ変換器３０と、ＲＯＭ３１と、ＲＡＭ３２と、クロック３３と、オペレーショナル回路３８と、バス３６とを備える。ＣＰＵ２０とＣＰＵ２９との間のデータの交換は、例えば、ＤＰＲＡＭ２５を介してなされる。
【００５３】
熱線式空気流量計２によって検出された吸入空気量Ｑａは、Ａ／Ｄ変換器２１によってデジタル値に変換され、ＣＰＵ２０に取り込まれる。クランク角センサ１２によって検出されるＲｅｆ信号およびＰＯＳ信号は、入力Ｉ／Ｏ２３を通じてＣＰＵ２０に取り込まれる。ＣＰＵ２０は、ＲＯＭ２２が格納しているプログラムにしたがって演算し、演算結果を出力Ｉ／Ｏ２６を介して、燃料噴射量を指示する燃料噴射時間信号Ｔｉと、点火時期を指示する点火時期信号θｉｇｎとを各アクチュエータに出力する。ＲＡＭ２４は、演算処理中の必要なデータを格納する。
【００５４】
タイミング回路２８は、オペレーショナル回路３８が上死点（ＴＤＣ：Ｔｏｐ  Ｄｅａｄ  Ｃｅｎｔｅｒ）信号を発生すると、ＣＰＵ２０がポート２７に入力した内容にしたがって、クロック３３が発生する周期信号を分周することによってサンプリング信号を発生する。Ａ／Ｄ変換器３０は、サンプリング信号が発生すると、振動センサ１５１の出力信号Ｐをデジタル値に変換する。
【００５５】
ＣＰＵ２９は、ＲＯＭ３１に格納されているプログラムにしたがって、サンプリングされたデジタル値をＲＡＭ３２に格納するとともに、後述の図８で説明するフローチャートにしたがって、ノッキング発生の有無を判定する。さらに、振動センサ１５１のデジタル値に変換された出力信号Ｐは、ノッキング検出用のフィルタ３９に入力され、フィルタ３９の出力がＣＰＵ２９に入力される。フィルタ３９は、ＣＰＵ２９によって任意の周波数帯を設定でき、ＣＰＵ２９によって設定された周波数帯の周波数成分を抽出することができる。ノッキング発生の有無の判定結果は、ＤＰＲＡＭ２５を介してＣＰＵ２０に通知される。
【００５６】
＜ノッキング判定手順＞
図８は、ノッキングの有無を判定する手順を説明するフローチャートである。
【００５７】
本フローチャートは、ＣＰＵ２９がＣＰＵ２９に割り込みをかけることによって、エンジン７の爆発サイクル毎に実行される。以下、図８の各ステップについて説明する。
【００５８】
（図８：ステップＳ１００）
ＣＰＵ２９は、クランク角センサ１２から検出するＲｅｆ信号およびＰＯＳ信号に基づいてエンジン７の運転状態を判定し、フィルタ３９の周波数帯を設定する。
【００５９】
（図８：ステップＳ１０１，Ｓ１０２）
ＣＰＵ２９は、振動センサ１５１からの検出信号ＰがＡ／Ｄ変換器３０によって変換されたＡ／Ｄ変換値を取り込む（Ｓ１０１）。ＣＰＵ２９は、取り込んだＡ／Ｄ変換値のノッキングの特徴周波数を分析する（Ｓ１０２）。この周波数の分析は、例えば、高速フーリエ変換やウォルシュフーリエ変換等の手法によって実行される。
【００６０】
（図８：ステップＳ１０３）
ＣＰＵ２９は、ステップＳ１０２で分析した周波数成分のうち、共鳴周波数を含むものを複数個選択する。例えば、８個の共鳴周波数を選択する。本ステップで選択する周波数成分は、ステップ１００のフィルタ３９に応じて決定される。しかし、例えば、エンジン７の仕様に応じて予め定めてもよい。
【００６１】
（図８：ステップＳ１０４）
ＣＰＵ２９は、振動強度を表わすＳ／Ｎ比を、ステップＳ１０３で選択した周波数成分毎に求める。具体的には、選択した周波数成分（ｆ１，・・・，ｆｉ）に対応するバックグラウンドレベル（ＢＧＬ１，・・・，ＢＧＬｉ）を平滑化処理によって求め、周波数毎のＳ／Ｎ比となるＳＬｉ＝ｆｉ／ＢＧＬｉを求める。ステップＳ１０３で、８個の周波数成分を選択した場合は、ＳＬ１〜ＳＬ８を求める。
【００６２】
（図８：ステップＳ１０４：補足）
本ステップでのバックグラウンドレベルＢＧＬｉの算出は、振動センサ１５１が検出した信号成分をそのまま用いるのではなく、バックグラウンドレベルＢＧＬｉの推定値を予め減算した上で、加重平均を算出後、バックグラウンドレベルＢＧＬｉの推定値を加算し直す。その結果に対するｆｉの比率が、本ステップにおけるＳＬｉとして算出される。
【００６３】
また、ステップＳ１００で、フィルタ３９の周波数帯を切替えた場合、加重平均の補正を本ステップで実行する。具体的な手順は、後述の図１０、図１４、図１５で説明する。
【００６４】
（図８：ステップＳ１０５）
ＣＰＵ２９は、ステップＳ１０３で選択した周波数成分のうち、ステップＳ１０４で求めたＳ／Ｎ比が大きい順にｍ個を抽出し、これらを合算することによってノック指標Ｉを求める。例えば、上位５個の周波数成分のＳ／Ｎ比を抽出して加算することができる。
【００６５】
（図８：ステップＳ１０６）
ＣＰＵ２９は、判定閾値Ｉ０２と、ステップＳ１０５で求めたノック指標Ｉとを比較する（Ｓ１０６）。ノック指標Ｉが判定閾値Ｉ０２よりも大きい場合（Ｓ１０６：ＹＥＳ）、ステップＳ１０７へ進み、それ以外の場合（Ｓ１０６：ＮＯ）、ステップＳ１０９へ進む。
【００６６】
（図８：ステップＳ１０６：補足）
本ステップで用いる判定閾値Ｉ０２は、予め定めておいてもよいし、例えば、エンジン７の回転数等の運転状態に基づき算出してもよい。算出手法としては、例えば、運転状態と判定閾値Ｉ０２との間の対応関係を予め定義したデータマップ等を用いてもよい。
【００６７】
（図８：ステップＳ１０７，Ｓ１０８）
ＣＰＵ２９は、ノッキングが発生したと判断し（Ｓ１０７）、ノッキングの発生を示すノックフラグに“１”をセットする（Ｓ１０８）。このノックフラグは、別に起動される点火制御タスクで用いられる。
【００６８】
（図８：ステップＳ１０９）
ＣＰＵ２９は、ノックフラグを“０”にセットする。
【００６９】
以上、本実施例におけるノッキングの有無を判定する手順を説明した。以下では、従来技術におけるノッキングの有無を判定する手順と本実施例とを比較しながら、本実施例における手順の詳細について、図９、図１０、図１２〜図１４を用いて説明する。
【００７０】
図９は、従来技術におけるノッキングの有無を判定する手順を説明する演算チャートである。
【００７１】
各ステップは、ＣＰＵ２９が実行する。以下、図９における各演算ブロックの処理について説明する。
【００７２】
振動センサ１５１は、エンジン７の振動を検出し（Ｓ３０１）、ＡＤ変換器３０は、その検出結果をデジタル信号に変換する（Ｓ３０２）。ＣＰＵ２９は、エンジン７の回転数や負荷等の運転状態に応じて、ノッキング検出用フィルタ３９で検出する周波数帯を設定する（Ｓ５０１）。ＣＰＵ２９は、振動信号に対し、例えば、バンドパスフィルタ（ＢＰＦ：Ｂａｎｄ−ｐａｓｓ  ｆｉｌｔｅｒ）を適用することによって、ノック指標Ｉを算出するために用いる周波数成分（ここでは、３つの周波数成分を例示した）を抽出する（Ｓ３０３）。
【００７３】
ＣＰＵ２９は、周波数成分毎に加重平均を算出する（Ｓ３０４）。ＣＰＵ２９は、算出した加重平均を適当な指標（例えば、ステップＳ１０４で説明したバックグラウンドレベルＢＧＬｉに対する比率）に変換する（Ｓ３０５）。ＣＰＵ２９は、各周波数成分の指標を加算することによってノック指標Ｉを求める（Ｓ３０６）。ノック判定閾値Ｉ０２は、ステップＳ１０６と同様に求めることができる（Ｓ３０７）。ＣＰＵ２９は、ノック指標Ｉとノック判定閾値Ｉ０２とを比較することによって、ノッキングの有無を判定する（Ｓ３０８）。
【００７４】
図９の各演算ブロックには、過渡運転時における算出結果を模式的に示す図を併記している。過渡運転時においては、周波数成分が時間とともに増加する。Ｓ３０４で加重平均によってバックグラウンドレベルＢＧＬｉを算出すると、バックグラウンドレベルＢＧＬｉが実際よりも小さい値として得られるので、結果としてノック指標Ｉが大きくなり、誤判定が生じる可能性がある。さらに、ノッキング時、或いはノッキングが検出されないような小さなレベルのノイズや小さなノッキングが発生すると、その検出値がバックグラウンドレベルＢＧＬｉに反映されてしまう。これにより、バックグラウンドレベルＢＧＬｉが増大し、ノック検出精度が低下してしまう可能性がある。
【００７５】
図１０は、本実施例におけるノッキングの有無を判定する手順を説明する演算チャートである。
【００７６】
各ステップは、ＣＰＵ２９が実行する。以下、図１０における各演算ブロックの処理について説明する。
【００７７】
ステップＳ３０１〜Ｓ３０３は、従来技術と同様である。これらは、図８におけるＳ１０１〜Ｓ１０３に対応する。
【００７８】
ステップＳ４０１において、ＣＰＵ２９は、例えば、エンジン７の回転数や負荷等に基づきエンジン７の運転状態を推定する。ＲＯＭ３１は、エンジン７の運転状態とその運転常態における標準的なバックグラウンドレベルＢＧＬｉとの間の対応関係を記述したマップデータを予め格納している。ＣＰＵ２９は、推定した運転状態に基づきマップデータを参照することによって、現在の運転状態におけるバックグラウンドレベルＢＧＬｉの推定値を算出する。
【００７９】
図１１および図１２にステップＳ４０１の一実施例を示す。
【００８０】
図１１は、バックグラウンドレベルＢＧＬｉの推定値を記述したマップデータのイメージ図である。
【００８１】
マップデータは、エンジン７の回転数（または変化率）と、エンジン７の負荷（または変化率）と、バックグラウンドレベルＢＧＬｉ（または規定レベルに対する補正値）との対応関係を記述している。図１１に示す例においては、高回転側および高負荷側においてバックグラウンドレベルＢＧＬｉが上がる傾向がある。
【００８２】
図１２は、図１１をエンジン７の回転数とエンジン７の負荷との軸で見た図である。
【００８３】
エンジン７の運転状態に応じてノッキングの特徴周波数が変化するため、予め運転状態に応じて、異なる周波数帯のバックグラウンドレベル推定値を１つに纏めている。（ここでは、３つの周波数成分を例示した）予め１つのマップにすることによって、ノッキングの特徴周波数毎にバックグラウンドレベル推定値を有する場合に比して、ＲＯＭ３１の容量を抑えることが可能である。算出したバックグラウンドレベル推定値をステップＳ３０３のフィルタ３９と連動させ、後述するステップＳ４０２で同じ周波数成分同士で減算する。
【００８４】
バックグラウンドレベルＢＧＬｉを推定するその他手法として、ＣＰＵ２９は、スロットルセンサ信号（スロットル開度を表す信号）、吸入空気量信号（エンジン７に対する吸入空気量を表す信号）、燃料噴射パルス信号（燃料噴射を指示するパルス信号）、および吸気管圧力信号（吸気管６の内部の圧力を表す信号）などの負荷状態を表すセンサ信号を取得し、これら信号に基づき運転状態を推定してもよい。これら信号と運転状態との間の対応関係は、例えば、図１１および図１２と同様のマップデータによって記述することもできるし、その他適当な手法によって運転状態を算出することもできる。さらに、図１１に例示するエンジン７の回転数と負荷とのマップデータを組み合わせてもよい。なお、本ステップは、「Ｓ１０４：補足」で説明した処理に対応する。
【００８５】
ステップＳ４０２において、ＣＰＵ２９は、Ｓ３０３で抽出した各周波数成分から、対応する周波数成分のバックグラウンドレベルＢＧＬｉの推定値を減算する。これにより、回転数や負荷の変化によるバックグラウンドレベルＢＧＬｉの変動が、後続の加重平均に対して入力されないので、加重平均処理に伴う追従遅れを抑制することができる。ただし、本ステップにおいて減算したバックグラウンドレベルＢＧＬｉの推定値は、加重平均後のステップＳ４０３において周波数成分毎に足し戻す。本ステップは、「ステップＳ１０４：補足」で説明した処理に対応する。
【００８６】
ステップＳ３０４において、Ｓ４０２で各周波数成分から予めバックグラウンドレベルＢＧＬｉの推定値が減算された後に、改めて各周波数成分の加重平均を算出する。ステップＳ４０３において、ＣＰＵ２９は、各周波数成分の加重平均の結果に対して、ステップＳ４０２で減算したバックグラウンドレベルＢＧＬｉの推定値を各周波数成分に足し戻す。これにより、信号レベルは、減算前の水準まで戻される。
【００８７】
さらに、過渡運転時において、ノッキングの特徴周波数が変化する。ノッキングの特徴周波数成分を加重平均し、バックグラウンドレベルＢＧＬｉを算出すると、周波数帯が切替わった後でも前回値を参照するため、バックグラウンドレベルＢＧＬｉが実際と異なる値になり、ノック指標Ｉの誤差で誤判定が生じる可能性がある。そこで、Ｓ５０１において、ノッキング検出用フィルタ３９で検出する周波数帯を切替えたときは、Ｓ３０４の加重平均の値を補正する。加重平均の補正処理について、図１３を用いて説明する。
【００８８】
図１３は、フィルタ３９の周波数帯の切替え後の平滑化処理の補正の流れを示した図である。
【００８９】
（図１３：ステップＳ６００）
ＣＰＵ２９は、Ｓ４０１のバックグラウンドレベル推定値（基本ＢＧＬ）を予め振動センサ１５１が検出した信号成分から差し引くことによって、加重平均演算用ＢＧＬｉ（今回値）を算出する。
【００９０】
（図１３：ステップＳ６０１）
ＣＰＵ２９は、エンジン７の運転状態に応じ、Ｓ５０１でバンドパスフィルタで抽出する周波数帯を切替えたかを判定する。
【００９１】
（図１３：ステップＳ６０２）
ＣＰＵ２９は、Ｓ６０１で周波数帯が切替わったと判定された場合（Ｓ６０１：ＹＥＳ）、Ｓ６０１で選択した周波数成分に対応するバックグラウンドレベルＢＧＬｉ(前回値)を、Ｓ６００で算出したＢＧＬｉ(今回値)に更新する。さらに、運転状態に応じたフィルタ周波数帯毎のバックグラウンドレベルＢＧＬｉを記憶しておき、記憶した値で加重平均の値を更新してもよい。
【００９２】
（図１３：ステップＳ６０３）
ＣＰＵ２９は、次式で示す加重平均処理を行う。
ＢＧＬｉ＝（ＢＧＬｉ（前回値）×Ｗｐ＋ＢＧＬｉ（今回値）×Ｗｃ）
このとき、Ｗｐ＋Ｗｃ＝１、Ｗｐ＞＝０、Ｗｃ＞＝０とする。
【００９３】
以下、図１４を用いて、図１３で説明した加重平均処理の補正の効果について説明する。
【００９４】
図１４は、加重平均処理の補正を表したタイミングチャートである。
【００９５】
図１４上図は、補正をしていない場合であり、周波数を切替えた後に実際のバックグラウンドレベルＢＧＬｉになるまで追従遅れが発生する。
【００９６】
図１４下図は、加重平均の補正をした場合である。図１３記載の加重平均の補正処理を実施した結果、周波数帯を切替えた後のバックグラウンドレベルＢＧＬｉに適した値になるため、過渡時にノッキングの特徴周波数帯が切替わった後のノッキング誤検出を防止することができる。なお、これらステップは、「ステップＳ１０４：補足」で説明した処理に対応する。
【００９７】
図１０に戻る。ステップＳ３０５は、従来技術と同様であり、ステップＳ１０４に対応する。ただし、Ｓ／Ｎ比であるＳＬｉを算出する際の分母は、ステップＳ４０３の結果であり、分子は、ステップＳ３０３で抽出した周波数成分である。本ステップに到達する前に、ステップＳ３０４とステップＳ４０３とを介して、バックグラウンドレベルＢＧＬｉの過渡変動が除去されているので、従来技術とは異なり、過渡変動に伴う誤判定を抑制することができる。ステップＳ３０６以降は、従来技術と同様であり、ステップＳ１０５以降に対応する。
【００９８】
図１５は、ＣＰＵ２０が点火時期を演算する手順を説明するフローチャートである。
【００９９】
ＣＰＵ２０は、周期的（例えば１０ｍｓｅｃ毎）に起動される。以下、図１５の各ステップについて説明する。
【０１００】
（図１５：ステップＳ２０１）
ＣＰＵ２０は、ＲＡＭ２４内に設定された所定のレジスタからエンジン７の回転数Ｎと吸入空気量Ｑとを読みこむ。
【０１０１】
（図１５：ステップＳ２０２）
ＣＰＵ２０は、単位回転数当たりの吸入空気量Ｑ／Ｎ（基本燃料噴射量）を演算し、さらに吸入空気量Ｑ／Ｎから燃料噴射時間幅Ｔｉを求める。ＣＰＵ２０は、ＲＯＭ２２内に格納されている基本点火時期マップに基づいて基本点火時期θｂａｓｅを求める。基本点火時期マップは、吸入空気量Ｑ／Ｎと、回転数Ｎと、基本点火時期θｂａｓｅとの対応関係を記述したデータマップである。
【０１０２】
（図１５：ステップＳ２０３）
ＣＰＵ２０は、ノックフラグ（ＣＰＵ２９が図８にしたがって求めたもの）の内容にしたがってノッキング発生の有無を判定する。ＣＰＵ２０は、ノッキングが発生していれば（Ｓ２０３：ＹＥＳ）、ステップＳ２１３へ進み、発生していなければ（Ｓ２０３：ＮＯ）、ステップＳ２０４へ進む。
【０１０３】
（図１５：ステップＳ２１３）
ＣＰＵ２０は、点火時期θａｄｖから所定の遅角量Δθｒｅｔを減算する。この減算によって、点火時期が遅角（リタード）される。
【０１０４】
（図１５：ステップＳ２１４）
ＣＰＵ２０は、カウント値Ａを初期化して、ステップＳ２０８に進む。カウント値Ａは、ノッキング発生回数をカウントするための変数である。カウント値Ａは、ノッキングの発生によって遅角された点火時期θａｄｖを進角量Δθａｄｖだけリカバーする時間になったかを判定するために用いられる。カウント値Ａの用い方については、後述のステップで説明する。
【０１０５】
（図１５：ステップＳ２０４，Ｓ２０５）
ＣＰＵ２０は、カウント値Ａを１つカウントアップする（Ｓ２０４）。ＣＰＵ２０は、カウント値Ａが所定値（例えば、５０）に到達したか否かを判断する（Ｓ２０５）。ＣＰＵ２０は、到達している場合（Ｓ２０５：ＹＥＳ）、ステップＳ２０６へ進み、到達していない場合（Ｓ２０５：ＮＯ）、ステップＳ２０８へスキップする。
【０１０６】
（図１５：ステップＳ２０６，Ｓ２０７）
ＣＰＵ２０は、進角値θａｄｖに所定の進角量Δθａｄｖを加算する（Ｓ２０６）。この加算によって、ステップＳ２１３で遅角された点火時期がリカバーされる。本フローチャートを１０ｍｓｅｃ毎に起動する場合、カウント値Ａが５０に到達した時点に、カウント値Ａが初期化されてから０.５秒が経過している。すなわち、本ステップは、ノッキングの発生によって点火時期を遅角させてから０.５秒が経過する毎に、点火時期をリカバーする。ＣＰＵ２０は、カウント値Ａを初期化する（Ｓ２０７）。
【０１０７】
（図１５：ステップＳ２０８）
ＣＰＵ２０は、基本点火時期θｂａｓｅに進角値θａｄｖを加えることによって、点火時期θｉｇｎを演算する。
【０１０８】
（図１５：ステップＳ２０９）
ＣＰＵ２０は、ＲＯＭ２２内に格納されている最大進角値マップから最大進角値θｒｅｓを読み出す。最大進角値マップは、吸入空気量Ｑ／Ｎと、回転数Ｎと、基本点火時期θｒｅｓとの対応関係を記述したデータマップである。
【０１０９】
（図１５：ステップＳ２１０，Ｓ２１１）
ＣＰＵ２０は、点火時期θｉｇｎが最大進角値θｒｅｓを超えたかを判断する（Ｓ２１０）。超えていなければ（Ｓ２１０：ＮＯ）、ＣＰＵ２０は、ステップＳ２１２へスキップする。超えている場合（Ｓ２１０：ＹＥＳ）、θｉｇｎは進角し過ぎているので、ＣＰＵ２０は、ステップＳ２１１で点火時期θｉｇｎを最大進角値θｒｅｓにセットする（Ｓ２１１）。
【０１１０】
（図１５：ステップＳ２１２）
ＣＰＵ２０は、エンジン７の状態に応じて、ディレイ時間ｔｄと、分周比ｔｓと、サンプリング点数ｎｓとをポート２７に出力する。分周比ｔｓは、振動センサ１５１からの出力のデジタル値のサンプリング周期を決め、サンプリング点数ｎｓは、サンプリング点数を決める。
【０１１１】
＜まとめ＞
本実施例に係るＣＰＵ（ノッキング検出装置）９は、周波数分析器と、周波数切替え部と、バックグラウンドレベル推定部と、平滑化部と、補正部と、ノッキング指標算出部と、判定部とを備える。周波数分析器は、エンジン７の振動センサ１５１が検出した振動からフィルタ３９を介して複数の周波数成分を抽出する。周波数切替え部は、エンジン７の運転状態に応じて周波数分析器が抽出する周波数帯を切替える。バックグラウンドレベル推定部は、エンジン７の運転状態に基づきエンジン７の振動の各周波数成分のバックグラウンドレベル推定値を取得する。平滑化部は、各周波数成分から当該各周波数成分のバックグラウンドレベル推定値を減算した後にその減算後の各周波数成分を平滑化し、該平滑化した各周波数成分に各周波数成分の前記バックグランド推定値を合算することによってエンジン７の振動のバックグラウンドレベルを算出する。補正部は、周波数切替え部が周波数帯を切替えたときに、平滑化部における平滑化処理を変更する。ノッキング指標算出部は、各周波数成分と当該各周波数成分のバックグラウンドレベルとに基づきエンジン７のノッキング判定指標を算出する。判定部は、ノッキング指標を判定閾値と比較することによってエンジン７にノッキングが生じている否かを判定する。
【０１１２】
これにより、過渡運転時においてバックグラウンドレベルを算出する際の追従性が高まり、平滑化処理を強くかけることができる。これにより、過渡運転時におけるノッキングの誤判定を抑制すると共に、エンジンの定常運転または過渡運転を問わずに正確なバックグラウンドレベルを算出することができ、ノッキングの検出精度を向上させて、誤判定を抑制することができる。
【０１１３】
特に、振動センサ１５１の周波数成分からバックグラウンドレベル推定値を予め減算した上で加重平均し、その後にバックグラウンドレベル推定値を足し戻す。これにより、加重平均処理では、バックグラウンドレベルＢＧＬｉの過渡変動が除外されるので、その過渡変動に伴う算出遅れと、これを原因とするノッキング誤検出とを抑制することができる。周波数帯の切替え後の加重平均の値を更新してバックグラウンドレベルＢＧＬｉを算出することによって、バックグラウンドレベルＢＧＬｉの精度が向上し、ノック検出の精度を高めることができる。したがって、全ての運転状態で点火時期を最適に制御することが可能となる。
【０１１４】
さらに、補正部は、周波数切替え部が周波数帯を切替える毎に、平滑化部における平滑化処理を変更するので、周波数の変化に対するバックグラウンドレベルＢＧＬｉの追従性が高まり、平滑化処理を強くかけることができ、過渡運転時におけるノッキングの誤判定を抑制することができる。
【０１１５】
さらに、補正部は、周波数帯の切替え前に変化塚される各周波数成分を、周波数帯の切替え後に平滑化される各周波数成分に置き換えるので、過渡運転時でもバックグラウンドレベルＢＧＬｉを更新することができ、周波数の変化にバックグラウンドレベルＢＧＬｉを追従させることができる。
【０１１６】
さらに、バックグラウンドレベル推定値は、複数の周波数成分から成るマップに基づいて算出されるので、マップを参照するだけでバックグラウンドレベルＢＧＬｉの推定値を容易に算出することができる。
【実施例２】
【０１１７】
実施例２に係るＣＰＵ（ノッキング検出装置）９について、実施例１との相違を中心に説明する。
【０１１８】
図１６は、実施例２に係るフィルタ３９の周波数帯の切替え後の平滑化処理の補正の流れを示す図である。
【０１１９】
（図１６：ステップＳ７００）
ＣＰＵ２９は、Ｓ４０１のバックグラウンドレベル推定値（基本ＢＧＬ）を予め振動センサ１５１が検出した信号成分から差し引くことによって、加重平均演算用のＢＧＬｉ（今回値）を算出する。
【０１２０】
（図１６：ステップＳ７０１）
ＣＰＵ２９は、エンジン７の運転状態に応じ、Ｓ５０１においてバンドパスフィルタで抽出する周波数帯を切替えたかを判定する。
【０１２１】
（図１６：ステップＳ７０２）
ＣＰＵ２９は、Ｓ７０１において周波数帯が切替わったと判定された場合（Ｓ７０１：ＹＥＳ）、Ｓ７０１で選択した周波数成分に対応するバックグラウンドレベルＢＧＬｉ(前回値)を０に更新する。さらに、更新する加重平均の値は、周波数切替え後にバックグラウンドレベルＢＧＬｉが収束する収束時間が更新する前の値よりも短い値とする。
【０１２２】
（図１６：ステップＳ７０３）
ＣＰＵ２９は、周波数の切替え後に所定時間が経過したか否か判定する。所定時間は、エンジン７の運転状態に応じて予め定めておいてもよく、また、加重平均の重みに応じた値でもよい。
【０１２３】
（図１６：ステップＳ７０４）
ＣＰＵ２９は、Ｓ７０３で所定時間が経過していないと判定された場合（Ｓ７０３：ＮＯ）、ＢＧＬｉ（前回値）の重みＷｐをＷheavyに、ＢＧＬｉ（今回値）ＷｃをＷlightに代入する。このとき、Ｗheavy＞Ｗlightとし、Ｗｐ＋Ｗｃ＝１、Ｗｐ＞＝０、Ｗｃ＞＝０とする。
【０１２４】
（図１６：ステップＳ７０５）
ＣＰＵ２９は、Ｓ７０３で所定時間が経過したと判定された場合（Ｓ７０３：ＹＥＳ）、ＢＧＬｉ（前回値）の重みＷｐをＷlightに、ＢＧＬｉ（今回値）ＷｃをＷheavyに更新する。
Ｓ７０４およびＳ７０５で加重平均の重みを設定する際は、重みを経時変化させてもよい。
【０１２５】
（図１６：ステップＳ７０６）
ＣＰＵ２９は、次式で示す加重平均処理を行う。
ＢＧＬｉ＝（ＢＧＬｉ（前回値）×Ｗｐ＋ＢＧＬｉ（今回値）×Ｗｃ）
【０１２６】
本実施例によれば、補正部は、周波数帯の切替え前に平滑化される各周波数成分よりも周波数帯の切替え後に平滑化される各周波数成分の重みを所定時間が経過するまで軽くして平滑化部における平滑化処理を実行するので、ノイズを抑制することができ、ノッキングの検出精度を向上させることができる。
【０１２７】
＜変形例＞
なお、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。さらに、ある実施例の構成の一部を他の実施例の構成に置き換える事が可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。さらに、各実施例の構成の一部について他の構成の追加・削除・置換をすることができる。
【０１２８】
以上の実施例において、ＣＰＵ２９（周波数分析部、周波数切替え部、バックグラウンドレベル推定部、平滑化部、ノッキング指標算出部、判定部に相当）がソフトウェアを実行することによってノッキング検出のための各ステップを実施することを説明した。しかし、同等の機能を回路デバイス等のハードウェアに実装してもよい。例えば、周波数分析と、平滑化と、マップデータから推定値を取得する処理と、ノック指標Ｉの算出と、閾値Ｉ０２の判定とのうち、いずれか１以上を、回路デバイスに実装してもよい。
【０１２９】
シリンダブロックに取り付けられた振動センサ１５１からの出力は、例えば、エンジン７の回転数や負荷の上昇によって増大する特性を持っている。これは、エンジン７内でのピストンスラッジ等のメカニカルノイズや燃焼モード変化に起因する。したがって、ステップＳ１０３において、シリンダ毎に異なる周波数成分を選択することもできる。
【０１３０】
振動センサ１５１は、インジェクタ１６が動作することに起因するインジェクタノイズを取得するため、インジェクタ１６を作動させる期間をサンプリングウインドウとしてセットし、そのウインドウ内でインジェクタノイズを取得する。このインジェクタノイズは、ノック指標を算出する際に不要であるので、除去することが望ましい。そこで、想定されるインジェクタノイズを記述したデータを予めＲＯＭ２２等に格納しておき、ＣＰＵ２９は、サンプリングウインドウ内における振動センサ１５１の検出結果からそのインジェクタノイズを減算してもよい。これにより、ＣＰＵ２９は、インジェクタノイズに影響されることなく、ノック指標を正確に算出することができる。
【０１３１】
バックグラウンドレベルの推定値を記述したマップデータには、標準的なバックグラウンドレベルが記述されているので、バックグラウンドレベルの過渡的な変動については、同マップデータ内に記述しないことが望ましい。例えば、エンジン７の回転数やエンジン負荷が急増したときに、バックグラウンドレベルも急増することが想定される。しかし、そのような急変するバックグラウンドレベルＢＧＬｉについては、マップデータ内に記述しないこととする。具体的には、バックグラウンドレベルＢＧＬｉの変動率が、ある範囲以内のもののみマップデータ内に記述することが望ましい。
【０１３２】
振動センサ１５１の検出結果から抽出した周波数成分は、必ずしも全て抽出する必要はなく、例えば、代表的な周波数成分のみ抽出し、他の周波数成分は、補間処理によって補うこともできる。補間処理のための演算式は、例えば、試験結果等に基づき予め定めておくことができる。これにより、周波数成分を抽出するための演算負荷を抑制することができる。
【０１３３】
以上の実施例においては、バックグラウンドレベルＢＧＬｉに対する周波数成分の比率（Ｓ／Ｎ比）を、その周波数成分のノック指標として算出している。しかし、比率に代えてバックグラウンドレベルに対する差分をノック指標として用いてもよい。
【０１３４】
ＣＰＵ９は、複数のＣＰＵ２０，２９を備えている必要はなく、一方のＣＰＵが他方のＣＰＵを兼ねた単一のＣＰＵでもよい。
【符号の説明】
【０１３５】
７：エンジン、９：コントロールユニット、３９：フィルタ、１５１：振動センサ
【図１】
2018159332.tif 000003
【図２】
2018159332.tif 000004
【図３】
2018159332.tif 000005
【図４】
2018159332.tif 000006
【図５】
2018159332.tif 000007
【図６】
2018159332.tif 000008
【図７】
2018159332.tif 000009
【図８】
2018159332.tif 000010
【図９】
2018159332.tif 000011
【図１０】
2018159332.tif 000012
【図１１】
2018159332.tif 000013
【図１２】
2018159332.tif 000014
【図１３】
2018159332.tif 000015
【図１４】
2018159332.tif 000016
【図１５】
2018159332.tif 000017
【図１６】
2018159332.tif 000018