(57)【要約】  内燃機関のノックセンサの異常を適切に判定する。そのため、内燃機関１０のノッキングを検出するためのノックセンサ１５１の異常判定装置であって、内燃機関１０の実際の振動強度を取得する振動強度取得部（ノックセンサ１５１により取得した内燃機関１０の振動に基づいて、ＣＰＵ２９が実施するＳ４０１の処理）と、内燃機関１０の運転状態に基づいて理論振動強度を算出する理論振動強度算出部（ノッキングセンサ１５１により取得した内燃機関１０の正常状態の振動に基づいて、ＣＰＵ２９が実施するＳ４１０の処理）と、を有し、振動強度取得部で取得した実際の振動強度と、前記理論振動強度算出部で算出した理論振動強度と、に基づいて、ノックセンサ１５１の異常を判定するノックセンサ異常判定部（ＣＰＵ２９が実施するＳ４１２の処理）を有する構成とした。
2019102805.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関のノッキングを検出するためのノックセンサの異常判定装置であって、
前記内燃機関の実際の振動強度を取得する振動強度取得部と、
前記内燃機関の運転状態に基づいて理論振動強度を算出する理論振動強度算出部と、を有し、
前記振動強度取得部で取得した実際の振動強度と、前記理論振動強度算出部で算出した理論振動強度とに基づいて、前記ノックセンサの異常を判定するノックセンサ異常判定部を有するノックセンサの異常判定装置。
【請求項２】
前記振動強度取得部は、前記内燃機関の複数の周波数成分の実際の振動強度を取得すると共に、
前記内燃機関を構成するアクチュエータの発生ノイズの周波数特性を記憶するノイズ記憶部を有し、
前記ノックセンサ異常判定部は、前記振動強度取得部で取得した前記複数の周波数成分の振動強度と、前記ノイズ記憶部に記憶された前記アクチュエータの発生ノイズとに基づいて、前記ノックセンサの異常を判定する請求項１に記載のノックセンサの異常判定装置。
【請求項３】
前記ノックセンサ異常判定部は、前記内燃機関の運転中に前記ノックセンサの異常を判定する請求項２に記載のノックセンサの異常判定装置。
【請求項４】
前記ノックセンサ異常判定部は、前記振動強度取得部で取得した実際の振動強度と、前記理論振動強度算出部で算出した理論振動強度との差分が、所定の範囲を超えた場合、前記ノックセンサの異常を判定する請求項１に記載のノックセンサの異常判定装置。
【請求項５】
前記アクチュエータは、前記内燃機関に燃料を噴射する燃料噴射装置、吸排気バルブまたは前記吸排気バルブを駆動する吸排気カムの少なくとも何れか１つである請求項２に記載のノックセンサの異常判定装置。
【請求項６】
前記ノックセンサ異常判定部は、前記振動強度取得部で取得した実際の振動強度が、所定の第１閾値よりも低い場合、前記ノックセンサに断線またはショートが発生したと判定する請求項１に記載のノックセンサの異常判定装置。
【請求項７】
前記ノックセンサ異常判定部は、前記振動強度取得部で取得した実際の振動強度が、所定の第２閾値よりも高い場合、前記ノックセンサの出力設定に異常があると判定する請求項１に記載のノックセンサの異常判定装置。
【請求項８】
前記ノックセンサ異常判定部は、前記振動強度取得部で取得した複数の周波数成分の実際の振動強度の積算値と、前記理論振動強度算出部で算出された前記理論振動強度との差分の加重平均値に基づいて、前記ノックセンサの異常を判定する請求項２に記載のノックセンサの異常判定装置。
【請求項９】
前記ノックセンサ異常判定部により前記ノックセンサの異常を判定した場合、点火プラグの点火タイミングを遅らせるように制御する点火タイミング制御部を有する請求項１または請求項２に記載のノックセンサの異常判定装置。
【請求項１０】
内燃機関のノッキングを検出するためのノックセンサの異常判定方法であって、
前記内燃機関の実際の振動強度を取得する振動強度取得ステップと、
前記内燃機関の運転状態に基づいて理論振動強度を算出する理論振動強度算出ステップと、を有し、
前記振動強度取得ステップで取得した実際の振動強度と、前記理論振動強度算出ステップで算出した理論振動強度とに基づいて、前記ノックセンサの異常を判定するノックセンサ異常判定ステップを有するノックセンサの異常判定方法。
【請求項１１】
前記振動強度取得ステップは、前記内燃機関の複数の周波数成分の実際の振動強度を取得すると共に、
前記内燃機関を構成するアクチュエータの発生ノイズの周波数特性を記憶するノイズ記憶ステップを有し、
前記ノックセンサ異常判定ステップは、前記振動強度取得ステップで取得した前記複数の周波数成分の振動強度と、前記ノイズ記憶ステップで記憶した前記アクチュエータの発生ノイズとに基づいて、前記ノックセンサの異常を判定する請求項１０に記載のノックセンサの異常判定方法。
【請求項１２】
前記ノックセンサ異常判定ステップは、前記振動強度取得ステップで取得した実際の振動強度と、前記理論振動強度算出ステップで算出した理論振動強度との差分が、所定の範囲を超えた場合、前記ノックセンサの異常を判定する請求項１０に記載のノックセンサの異常判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノックセンサの異常判定装置およびノックセンサの異常判定方法に関する。
【背景技術】
【０００２】
従来、内燃機関では、ノックセンサによりノッキングの発生を検出した場合、点火プラグの点火時期を遅角制御（リタード）することでノッキングを回避する制御が行われている。【０００３】
内燃機関では、ノックセンサに断線やショートなどの異常が発生すると、ノッキングを正確に検出できなくなり、ノッキングの回避を適切に行うことができない。そのため、ノックセンサの異常を正確に検出する必要がある。【０００４】
特許文献１には、ノックセンサの異常を判定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２６５７５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された技術は、動弁機構の吸気バルブの着座による振動をノックセンサで検出し、その検出結果に基づいて、ノックセンサの異常を判定するものである。【０００７】
この技術では、ノック制御領域か否かを判定し、ノック制御領域であると判定した場合、吸気バルブの着座タイミングと重なる区間である故障判定用のノックセンサ信号検出区間を算出する。そして、算出したノックセンサ信号検出区間において、ノックセンサにより検出された信号から所定の周波数成分を取得し、その周波数成分に基づいてノックセンサの異常を判定する。【０００８】
その結果、特許文献１に開示された技術では、ノックセンサが異常か否かの判定を行える範囲が、ノック制御領域という狭い判定領域に限定されてしまうという問題がある。【０００９】
したがって、本発明は、上記の課題に着目してなされたもので、内燃機関のノックセンサの異常を適切に判定することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、内燃機関のノッキングを検出するためのノックセンサの異常判定装置であって、内燃機関の実際の振動強度を取得する振動強度取得部と、内燃機関の運転状態に基づいて理論振動強度を算出する理論振動強度算出部と、を有し、振動強度取得部で取得した実際の振動強度と、理論振動強度算出部で算出した理論振動強度とに基づいて、ノックセンサの異常を判定するノックセンサ異常判定部を有するする構成とした。
【発明の効果】
【００１１】
本発明によれば、内燃機関のノックセンサの異常を適切に判定することができる。
【図面の簡単な説明】
【００１２】
【図１】ノッキングが発生していない場合の振動センサの出力の周波数成分の解析結果の一例を説明する図である。
【図２】ノッキングが発生した場合の振動センサの出力の周波数成分の解析結果の一例を説明する図である。
【図３】ノッキング判定指標を用いたノッキングの判定方法の一例を説明する図である。
【図４】ノッキングの発生の有無による振動強度（パワースペクトル）の違いを周波数成分ごとに表した一例を説明する図である。
【図５】内燃機関の過渡運転時のスロットルの開度、内燃機関（エンジン）の回転数、各周波数における振動のバックグラウンドレベル、ノック指標、ノック判定信号の経時変化の一例を表す図である。
【図６】内燃機関の点火装置のシステム構成を説明する図である。
【図７】ＥＣＵの構成を説明するブロック図である。
【図８】ノッキング検出ユニットによる内燃機関のノッキングの検出方法のフローチャートである。
【図９】従来のノッキング判定指標の算出処理を説明するチャートである。
【図１０】実施の形態のノックセンサの異常判定方法を説明する図である。
【図１１】バックグラウンドレベルＢＧＬＩの推定値を決めるマップデータの一例を説明する図である。
【図１２】ノックセンサの正常、異常の判定方法を説明する図である。
【図１３】ＣＰＵによる点火プラグの点火時期の演算処理を説明するフローチャートである。
【図１４】他の実施の形態にかかるノックセンサの異常判定方法を説明する図である。
【図１５】ノックセンサの異常判定方法を説明するフローチャートである。
【図１６】ノックセンサの異常判定基準を説明する図である。
【図１７】ノックセンサの異常判定基準を説明する図である。
【図１８】ノックセンサの異常判定基準を説明する図である。
【図１９】ノックセンサの異常判定基準を説明する図である。
【図２０】ノックセンサの異常判定時の点火時期の制御を説明する図である。
【発明を実施するための形態】
【００１３】
以下、本発明を、内燃機関（エンジン）に設けられたノックセンサの異常を判定する場合を例示して説明する。
【００１４】
以下、ノックセンサの異常判定装置を説明するが、その前に、内燃機関１０（図６参照）のノッキング発生の判定方法を説明する。
【００１５】
図１は、ノッキングが発生していない場合の振動センサの出力の周波数成分ｆの解析結果の一例を説明する図である。
【００１６】
図２は、ノッキングが発生した場合の振動センサの出力の周波数成分ｆの解析結果の一例を説明する図である。
【００１７】
図１に示すように、実施の形態において、内燃機関１０にノッキングが発生していない場合、周波数成分ｆは、内燃機関１０の振動に応じて複数のピーク値が現れる。実施の形態では、特に１５〜２０ＫＨｚで大きなピーク値が表れている。
【００１８】
図２に示すように、実施の形態において、内燃機関１０にノッキングが発生した場合、ノッキングが発生していない場合（図１参照）と比較して、周波数成分ｆ１０（約６．３ＫＨｚ）、ｆ０１（約１３ＫＨｚ）、ｆ１１（約２１ＫＨｚ）近傍で大きなピーク値が表れており、この周波数成分ｆ１０、ｆ０１、ｆ１１近傍でノッキングが発生し、異常な振動が生じていることが分かる。このピーク値が現れた周波数成分ｆを、共鳴周波数とも言う。
【００１９】
内燃機関１０の振動の周波数成分ｆの解析は、ノッキングの特徴周波数を検出可能なフィルタを内燃機関１０の運転状態に応じて切り替えることで、ノッキングの周波数特性を適切に取得することができる。このフィルタとして、ハイパスフィルタ（Ｈｉｇｈ−Ｐａｓｓ  Ｆｉｌｔｅｒ:ＨＰＦ）、ローパスフィルタ（Ｌｏｗ−Ｐａｓｓ  Ｆｉｌｔｅｒ：ＬＰＦ）、バンドパスフィルタ（Ｂａｎｄ−Ｐａｓｓ  Ｆｉｌｔｅｒ：ＢＰＦ）などを適宜適用することができる。
【００２０】
次に、ノッキング判定指標を用いたノッキングの判定方法を説明する。
【００２１】
図３は、ノッキング判定指標を用いたノッキングの判定方法の一例を説明する図である。
【００２２】
図３では、内燃機関１０の振動の周波数成分ｆ１０の共鳴周波数成分ω１０Ｐ（ｆ１０）と、周波数成分ｆ０１の共鳴周波数成分ω０１Ｐ（ｆ０１）とに基づいて、ノッキングの発生を判断する場合を例示して説明する。もちろん、ノッキングの発生を判断する際に用いられる周波数成分ｆは、これに限定されるものではなく、任意の２以上の共鳴周波数成分を用いてノッキングの発生を判定できる。
【００２３】
実施の形態では、前述したように、周波数成分ｆ１０は約６．３ＫＨｚであり、ｆ０１は約１３ＫＨｚの場合を例示している。
【００２４】
図３に示すように、ノックセンサは、バックグラウンド振動Ｉｂ（図３の白抜き矢印）と、ノッキング振動Ｉｋ（図３の細線矢印）とを検出し、バックグラウンド振動Ｉｂとノッキング振動Ｉｋとの合成信号で表される指標Ｉ（図３の太線矢印）を取得する。
【００２５】
ノッキング振動Ｉｋは、ノッキングが発生した場合の振動の周波数成分ｆであり、バックグラウンド振動Ｉｂは、ノッキング以外の要因に起因して発生する振動である。具体的には、バックグラウンド振動Ｉｂは、内燃機関１０の運転時の振動及びノイズに基づいてノックセンサで検出された振動であり、内燃機関１０の運転状態により変動する。
【００２６】
ここで、ノッキングの有無を判定するためのノッキング判定指標Ｉは、ノッキングが発生していない場合は、バックグラウンド振動Ｉｂとなり、ノッキングが発生した場合は、バックグラウンド振動Ｉｂとノッキング振動Ｉｋとを含んで定められるノッキング判定指標Ｉとなる。
【００２７】
ノッキング判定指標Ｉを、主な共鳴周波数成分を用いて数式化すると、以下の数式（１）となる。
【００２８】
Ｉ＝ω１０Ｐ（ｆ１０）＋ω２０Ｐ（ｆ２０）＋ω０１Ｐ（ｆ０１）＋ω３０Ｐ（ｆ３０）＋ω１１Ｐ（ｆ１１）＋・・・（１）
【００２９】
ここで、ωは内燃機関１０の回転数Ｎｅで決まる実数値を取る。また、ωは１又は０（ゼロ）の２値を取ることもできる。また、Ｐは各共鳴周波数成分の振動強度（パワースペクトル）である。
【００３０】
図３に示すように、バックグラウンド振動の共鳴周波数成分によって表される指標Ｉｂと、ノッキングの発生による振動の共鳴周波成分によって表される指標Ｉｋは、方向と大きさを異にしている。これは、人間による聴覚試験でも明らかなように、ノッキングの発生がない場合の内燃機関１０の音に対して、ノッキングの発生がある場合の内燃機関１０の音は、カリカリ等という音で聞き分けられるものであり、ノッキングの発生の有無によって音色が異なるためである。
【００３１】
バックグラウンド振動Ｉｂに、ノッキング振動Ｉｋが加わると、ノックセンサの出力に含まれる周波数成分ｆ０１、ｆ１０によるノッキング判定指標Ｉは、予め設定された閾値Ｉ０２を越える。これにより、内燃機関１０において、ノッキングが発生していることを判定することができる。
【００３２】
前述した通り、ノックセンサでは、バックグラウンド振動Ｉｂに加えて、ノッキングの発生に特有な周波数成分Ｉｋを考慮して、ノッキング指標Ｉを算出しているので、バックグラウンド振動Ｉｂが大きくなってもノッキングの発生の有無を正確に判定することができる。
【００３３】
次に、ノッキングの発生の有無による振動強度（パワースペクトル）の違いを説明する。
【００３４】
図４は、ノッキングの発生の有無による振動強度（パワースペクトル）の違いを周波数成分ごとに表した一例を説明する図である。
【００３５】
図４では、ノッキングが発生している場合の振動強度を実線で表し、ノッキングが発生していない場合の振動強度を破線で表している。ノッキングの発生（実線）によって、各共鳴周波数帯での振動強度が大きくなっていることが分かる。このようにノッキングの有無による振動強度の差がある周波数帯において、ノッキングの検出を適切に行うことができる。
【００３６】
ここで、従来、ノッキング指標Ｉは、ノッキングの有無における信号／ノイズ（バックグラウンドレベル）の振動強度比（＝Ｓ／Ｎ比）に基づいて算出している。具体的には、ノッキング指標Ｉは、周波数成分ごとにノッキングの発生していない時の振動強度（バックグラウンドレベル）を、過去に検出した対応する周波数成分の振動強度に基づいて平滑化処理されて作成されている。そのため、ノッキングの発生がない場合でも、例えば、内燃機関１０の過渡運転時などのように、燃焼時の振動の短時間での増大により振動強度（バックグラウンドレベル）が急変すると、振動強度の算出結果が最新の状態に追従できず、その結果として、ノッキングを誤検出する可能性がある。
【００３７】
次に、内燃機関１０の過渡運転時において、バックグラウンドレベルの変化によりノッキングを誤検出する場合の一例を説明する。
【００３８】
図５は、上段から、内燃機関１０の過渡運転時のスロットル開度ＴＶＯ、内燃機関１０の回転数Ｎｅ、各周波数成分ｆにおける振動のバックグラウンドレベルＢＧＬＩ、算出されたノッキング判定指標Ｉ、ノック判定信号の経時変化の一例を表す図である。ノック判定信号は、ノッキングの有無を表す信号である。
【００３９】
図５に示すように、スロットル開度ＴＶＯを全閉から全開にした場合（過渡運転状態の場合）、内燃機関１０の回転数Ｎｅは、スロットル開度ＴＶＯの変化にすぐに追従できず、内燃機関１０の回転数Ｎｅが、実際に立ち上がるのは、所定の遅れ時間ｔｅが経過した後である。
【００４０】
この場合、バックグラウンドレベルＢＧＬｉは、実際には破線で示す振動強度（バックグラウンドレベルＢＧＬｉｔ）となるが、平滑化処理を行うことにより実線で示す振動強度（バックグラウンドレベルＢＧＬｉｈ）となる。つまり、バックグラウンドレベルＢＧＬｉは、平滑化処理を行うことで、実際の値よりも、所定の遅れ時間ｔｉだけ遅れることが分かる。
【００４１】
ノッキング判定指標Ｉは、Ｓ（信号）／Ｎ（ノイズ）比として演算により求められる。つまり、ノッキング判定指標Ｉは、ノイズの振動強度であるバックグラウンドレベルＢＧＬＩに対する周波数成分の比として演算により求めることができる。
【００４２】
よって、バックグラウンドレベルＢＧＬｉが遅れることにより、ノッキングが発生していないにもかかわらず、実際のノッキング判定指標Ｉは、理論的なノッキング判定指標Ｉｔよりも高くなる可能性がある。この場合、ノックセンサは、ノッキングの発生を誤判定する。
【００４３】
具体的には、内燃機関１０が過渡運転状態である場合、内燃機関１０の回転数Ｎｅの増加に伴って、バックグラウンドレベルＢＧＬｉが急激に増加する。その結果、平滑化処理を行ったバックグラウンドレベルＢＧＬｉｈ（図中の実線）が、実際のバックグラウンドレベルＢＧＬｉｔ（図中の破線）よりも遅れることとなる。
【００４４】
平滑化処理を行ったバックグラウンドレベルＢＧＬｉｈが、実際のバックグラウンドレベルＢＧＬｉｔよりも遅れる領域（過渡運転状態の領域）において、前述したノッキング判定指標Ｉ（Ｓ（信号）／Ｎ（バックグラウンドレベル））の分母である平滑化処理を行ったバックグラウンドレベルＢＧＬｉｈが、実際のバックグラウンドレベルＢＧＬｉｔよりも小さくなる。よって、ノッキング判定指標Ｉは、実際のバックグラウンドレベルＢＧＬｉｔを分母とした理論的なノッキング判定指標Ｉｔよりも大きく算出されることとなる。
【００４５】
その結果、内燃機関１０の過渡運転状態の領域において、平滑化処理を行ったノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈを越える恐れがあり、平滑化処理を行ったノッキング指標Ｉが、ノック判定閾値Ｉｔｈを越えた場合、ノッキングが発生していないにもかかわらず、ノッキングが発生したと誤判定される可能性がある（図５のノッキング判定指標Ｉ及びノック判定信号参照）。
【００４６】
［内燃機関の点火装置］
次に、内燃機関１０（エンジン）の点火装置のシステム構成を説明する。
【００４７】
図６は、内燃機関１０の点火装置のシステム構成を説明する図である。
【００４８】
図６に示すように、内燃機関１０では、空気は、エアクリーナ１から吸入され、ダクト３と、スロットル弁（図示せず）を有するスロットルボディ５と、吸気配管６とを通流し、内燃機関１０のシリンダ（気筒）７に吸入される。
【００４９】
エアクリーナ１から吸入された空気量（吸入空気量Ｑａ）は、ダクト３に設けられた熱線式の空気流量計２により計測される。空気流量計２で計測された空気量（吸入空気量Ｑａ）の検出信号は、ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）９に出力される。
【００５０】
内燃機関１０では、燃料タンク（図示せず）から供給された燃料は、燃料噴射弁（インジェクタ）１６から吸気配管６内に噴射される。内燃機関１０では、スロットルボディ５で空気量が調整された吸入空気と、燃料噴射弁１６から噴射された燃料とが、吸気配管６で混合されシリンダ７内に供給される。
【００５１】
シリンダ７内の混合気は、シリンダ７内で圧縮され、点火装置である点火プラグ１５により点火される。シリンダ７内では、点火プラグ１５の点火により混合気が爆発し、爆発後の排気ガスは、排気配管８から排出される。
【００５２】
排気配管８には、排気センサ１１が設けられており、この排気センサ１１により排気ガスの空燃比などを検出する。排気センサ１１で計測した排気ガスの空燃比などの検出信号は、ＥＣＵ９に出力される。
【００５３】
前述した点火プラグ１５は、点火コイル１３で生成された高電圧により点火する。点火コイル１３で生成された高電圧は、分配器１４により、シリンダ７毎に設けられた各点火プラグ１５に分配及び供給される。
【００５４】
内燃機関１０の回転数Ｎｅは、クランク角センサ１２により検出される。クランク角センサ１２は、クランクシャフト（図示せず）の回転数を検出し、クランクシャフトの１回転毎の絶対位置を示すＲｅｆ信号、及び絶対位置から所定角度回転した位置を示すＰｏｓ信号を出力する。クランク角センサ１２から出力されたＲｅｆ信号及びＰｏｓ信号は、ＥＣＵ９に入力される。
【００５５】
内燃機関１０には、この内燃機関１０の振動を検出する振動センサ１５１（ノックセンサ）が設けられている。振動センサ１５１は、内燃機関１０の振動を検出し、検出した振動に応じた出力値ＰｏをＥＣＵ９に出力する。以下、振動センサ１５１をノックセンサ１５１とも言う。
【００５６】
実施の形態では、このノックセンサ１５１により、内燃機関１０のノッキングの有無を検出する。従来は、ノックセンサ１５１として、１３ＫＨｚ付近で共振するものを用いていたが、実施の形態のノックセンサ１５１は、少なくとも１８〜２０ＫＨｚまでの共鳴周波数成分を検出するために、１８ＫＨｚ以上で共振するものを用いている。
【００５７】
次に、ＥＣＵ９の構成を説明する。
【００５８】
図７は、ＥＣＵ９の構成を説明するブロック図である。
【００５９】
［ＥＣＵ］
図７に示すように、ＥＣＵ９は、前述した各センサからの検出信号に基づいて、燃料供給量及び点火時期等を演算し、燃料噴射弁１６と点火コイル１３とに制御信号を出力する。
【００６０】
ＥＣＵ９は、内燃機関１０の全体の制御を行う制御ユニット３４と、ノッキングを検出するノッキング検出ユニット３５とを有する。
【００６１】
［制御ユニット］
制御ユニット３４は、ＣＰＵ２０と、Ａ／Ｄ変換器２１と、ＲＯＭ２２と、入力Ｉ／Ｏ２３と、ＲＡＭ２４と、ＤＲＡＭ２５と、出力Ｉ／Ｏ２６と、バス３７とを有する。
【００６２】
制御ユニット３４では、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０が、ＲＯＭ（Ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）２２に記憶された制御プログラムを実行することで、制御ユニット３４の各機能が実現される。
【００６３】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２４及びＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２５は、ＣＰＵ２０の演算処理で生成された演算結果（データ）や内燃機関１０に設けられた各センサから出力された検出信号を一時的に記憶する。
【００６４】
Ａ／Ｄ変換器（Ａｎａｌｏｇ  ｔｏ−Ｄｉｇｉｔａｌ  ｃｏｎｖｅｒｔｅr）２１は、空気流量計２により検出された吸入空気量Ｑａをデジタル値に変換し、バス３７を介してＣＰＵ２０に送信する。
【００６５】
入力Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕt）２３には、クランク角センサ１２から出力されたＲｅｆ信号及びＰｏｓ信号が入力され、入力Ｉ／Ｏ２３に入力されたＲｅｆ信号及びＰｏｓ信号は、バス３７を介してＣＰＵ２０に送信される。
【００６６】
ＣＰＵ２０での演算処理で生成された演算結果は、出力Ｉ／Ｏ２６を介して各々のアクチュエータ（図示せず）に出力される。実施の形態では、ＣＰＵ２０は、燃料噴射量を示す燃料噴射時間信号Ｔｉを演算し、この燃料噴射時間信号Ｔｉを、燃料噴射弁１６に出力する。また、ＣＰＵ２０は、点火プラグ１５の点火時期を示す点火時期信号θｉｎｇを演算し、この点火時期信号θｉｎｇを、点火コイル１３に出力する。
【００６７】
［ノッキング検出ユニット］
ノッキング検出ユニット３５は、ＣＰＵ２９と、ポート２７と、タイミング回路２８と、Ａ／Ｄ変換器３０と、ＲＯＭ３１と、ＲＡＭ３２と、クロック３３と、オペレーショナル回路３８と、バス３６とを有する。
【００６８】
制御ユニット３４のＣＰＵ２０とノッキング検出ユニット３５のＣＰＵ２９との間のデータ通信は、ＤＲＡＭ２５を介して行われる。
【００６９】
制御ユニット３４では、ＣＰＵ２９が、ＲＯＭ３１に記憶された制御プログラムを実行することで、ノッキング検出ユニット３５の各機能が実現される。
【００７０】
ＲＡＭ３２は、ＣＰＵ２９の演算処理で生成された演算結果（データ）を一時的に記憶する。
【００７１】
オペレーショナル回路３８には、クランク角センサ１２から出力されたＲｅｆ信号及びＰｏｓ信号が入力されるようになっており、オペレーショナル回路３８では、このＲｅｆ信号及びＰｏｓ信号に基づいて、シリンダ７内のピストン（図示せず）の位置を検出する。
【００７２】
オペレーショナル回路３８は、ピストン（図示せず）の位置が上死点ＴＤＣ（Ｔｏｐ  Ｄｅａｄ  Ｃｅｎｔｅｒ）にあることを検出した場合、上死点を表すＴＤＣ信号を生成すると共に、このＴＤＣ信号をタイミング回路２８に出力する。
【００７３】
タイミング回路２８は、制御ユニット３４のＣＰＵ２０がポート２７に設定した内容に従って、クロック３３の発生する周期信号を分周してサンプリング信号を生成し、このサンプリング信号をＡ／Ｄ変換器３０に出力する。
【００７４】
Ａ／Ｄ変換器３０では、タイミング回路２８で生成されたサンプリング信号に基づいて、ノックセンサ１５１の出力値Ｐｏをデジタル値に変換する。
【００７５】
ＣＰＵ２９は、ＲＯＭ３１に記憶された制御プログラムにしたがって、サンプリングされたノックセンサ１５１の出力値Ｐｏのデジタル値をＲＡＭ３２に記憶する。ＣＰＵ２９は、このノックセンサ１５１の出力値Ｐｏ（周波数成分の振動強度）を、周波数分析し、内燃機関１０のノッキングの発生の有無を判定する。
【００７６】
ＣＰＵ２９による内燃機関１０のノッキングの有無の判定結果は、バス３６及びＤＲＡＭ２５を介してＣＰＵ２０に送信される。
【００７７】
［ノッキングの検出方法］
次に、ノッキング検出ユニット３５による内燃機関１０のノッキングの検出方法を説明する。
【００７８】
図８は、ノッキング検出ユニット３５による内燃機関１０のノッキングの検出方法のフローチャートである。
【００７９】
図８に示すフローチャートに基づく内燃機関１０のノッキングの検出処理は、内燃機関１０の１燃焼サイクル毎に実行されるものであり、ＣＰＵ２９に対して割り込みを行うことにより、ＣＰＵ２９により実施される処理である。
【００８０】
ステップＳ１０１において、ＣＰＵ２９は、ノックセンサ１５１から出力された出力値Ｐｏの変換結果を取り込む。
【００８１】
ステップＳ１０２において、ＣＰＵ２９は、ステップＳ１０１で取り込んだ出力値Ｐｏを周波数分析する。ＣＰＵ２９による周波数分析は、高速フーリエ変換（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ：ＦＦＴ）やウォルシュフーリエ変換を用いて演算される。
【００８２】
ステップＳ１０３において、ＣＰＵ２９は、ステップＳ１０２で周波数分析した周波数成分のうち、共鳴周波数を含む周波数成分（周波数帯域）を複数選択し、選択した各周波数成分の振動強度（バックグラウンドレベルＢＧＬｉ）を算出する。
【００８３】
実施の形態では、ＣＰＵ２９は、共鳴周波数を含む周波数成分を３個選択する。ステップＳ１０３において、ＣＰＵ２９が選択する周波数成分は、内燃機関１０の運転状態に応じて予め決められたフィルタ（例えば、ハイパスフィルタ、ローパスフィルタ、バンドパスフィルタ）を用いて決めてもよく、内燃機関１０の仕様などに基づいて予め設定してもよい。
【００８４】
ステップＳ１０４において、ＣＰＵ２９は、ステップＳ１０３で算出した周波数成分の振動強度（バックグラウンドレベルＢＧＬｉ）の各々を加算した振動強度と、後述するバックグラウンドレベルＢＧＬの推定値（理論値ＢＧＬｉｍ）とに基づいて、ノッキング判定指標Ｉを算出する。
【００８５】
ステップＳ１０５において、ＣＰＵ２９は、ステップＳ１０４で算出したノッキング判定指標Ｉと、所定のノック判定閾値Ｉｔｈとを比較し、ノッキング判定指標Ｉが、所定のノック判定閾値Ｉｔｈを越えている（Ｉ＞Ｉｔｈ）か否かを判定する。ＣＰＵ２９は、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈを越えていると判定した場合（ステップＳ１０５：Ｙｅｓ）、ステップＳ１０７に進み、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈ以下であると判定した場合（ステップＳ１０５：Ｎｏ）、ステップＳ１１１に進む。
【００８６】
ＣＰＵ２９は、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈを越えていると判定した場合（ステップＳ１０５：Ｙｅｓ）、ステップＳ１０７において、内燃機関１０にノッキングが発生したと判定する。
【００８７】
ステップＳ１０８において、ＣＰＵ２９は、ノッキングの発生を示すノックフラグに１をセットして処理を終了する。なお、ノックフラグは、ＥＣＵ９で別に制御される点火制御タスクにおいて用いられる。
【００８８】
ＣＰＵ２９は、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈ以下であると判定した場合（ステップＳ１０５：Ｎｏ）、ステップＳ１１１において、バックグラウンドレベルＢＧＬＩのマップデータ（後述）を最新のマップデータに更新する。
【００８９】
ステップＳ１１２において、ＣＰＵ２９は、ノックフラグに０（ゼロ）をセットして処理を終了する。これにより、内燃機関１０にノッキングが発生していないことが示される。
【００９０】
ＣＰＵ２９によるバックグラウンドレベルＢＧＬｉの更新は、選択された周波数成分の振動強度をフィルタ処理して行われる。具体的には、ＣＰＵ２９は、選択された周波数成分ごとに、以下の数式（２）により求められる。
ＢＧＬｉ＝ＢＧＬｉ×（１−α）＋ｆ×α      （２）
【００９１】
前述したステップＳ１０１〜Ｓ１１２の処理により、ノッキング検出ユニット３５によるノッキングの検出処理が行われる。この処理のステップＳ１０８又はＳ１１２でセットされたノックフラグ（１又は０）は、点火装置（点火プラグ１５及び点火コイル１３）の制御処理で使用される。
【００９２】
［ノッキング判定指標の算出処理］
次に、ノッキング判定指標Ｉの算出処理（前述したステップＳ１０４）を、従来のノッキング判定指標の算出処理と比較して説明する。
【００９３】
初めに、図９を用いて従来のノッキング判定指標Ｉの算出処理を説明する。
【００９４】
図９は、従来のノッキング判定指標の算出処理を説明するチャートである。
【００９５】
［従来のノッキング判定指標の算出処理］
初めに図９に示すように、ノックセンサ１５１は、内燃機関１０の振動を検出し（Ｓ３０１）、検出した振動に応じた出力値Ｐｏ（ノックセンサ１５１から出力された所定時間間隔ごとの電圧：アナログ信号）をＡ／Ｄ変換器３０に送信する。
【００９６】
Ａ／Ｄ変換器３０は、ノックセンサ１５１から送信された出力値Ｐｏを、アナログ信号からデジタル信号に変換する（Ｓ３０２）。
【００９７】
ＣＰＵ２９は、デジタル信号に変換された出力値Ｐｏに対して、任意のフィルタを適用して所定の周波数成分を抽出し、抽出した周波数成分ごとの振動強度を演算する（Ｓ３０３）。実施の形態では、ＣＰＵ２９は、バンドパスフィルタ（ＢＰＦ）を適用することにより、ノックセンサ１５１から出力された出力値Ｐｏの中から、７ＫＨｚ、９ＫＨｚ、１２ＫＨｚの３つの周波数成分（特徴周波数）を抽出し、それぞれの周波数成分の実際のバックグラウンドレベルＢＧＬｉ（振動強度）を演算する。
【００９８】
次に、ＣＰＵ２９は、周波数成分（実施の形態では、７ＫＨｚ、９ＫＨｚ、１２ＫＨｚ）ごとにバックグラウンドレベルＢＧＬＩの加重平均値ＢＧＬｉｈを演算する（Ｓ３０４）。
【００９９】
ＣＰＵ２９は、周波数成分ごとのバックグラウンドレベルＢＧＬｉの加重平均値ＢＧＬｉｈを、所定の指標に変換する（Ｓ３０５）。実施の形態では、ＣＰＵ２９は、所定の周波数成分（実施の形態では、１２ｋＨｚ）の実際のバックグラウンドレベルＢＧＬｉｔと、対応する同じ周波数成分（実施の形態では、１２ｋＨｚ）のバックグラウンドレベルの加重平均値ＢＧＬｉｈとの差分に変換する。この処理を、抽出した他の全ての周波数成分
（実施の形態では、９ｋＨｚ、７ｋＨｚ）についても同様に行う。
【０１００】
ＣＰＵ２９は、全ての周波数成分の実際のバックグラウンドレベルＢＧＬｉｔと、バックグラウンドレベルの加重平均値ＢＧＬｉｈとの差分を加算してノッキング判定指標Ｉを算出する（Ｓ３０６）。実施の形態では、ＣＰＵ２９は、周波数成分が７ｋＨｚ、９ｋＨｚ、１２ｋＨｚにおける実際のバックグラウンドレベルＢＧＬｉｔと、バックグラウンドレベルの加重平均値ＢＧＬｉｈとの差分を加算してノッキング判定指標Ｉを算出する。
【０１０１】
ＣＰＵ２９は、内燃機関１０の回転数Ｎｅに基づいてノック判定閾値Ｉｔｈを求める（Ｓ３０７）。具体的には、ＣＰＵ２９は、内燃機関１０の回転数Ｎｅ（内燃機関の運転状態）とノック判定閾値Ｉｔｈとを予め関連付けたマップデータ（データテーブル）を参照して、内燃機関１０の回転数Ｎｅからノック判定閾値Ｉｔｈを求める。なお、ＣＰＵ２９は、内燃機関１０の運転状態に基づいてノック判定閾値Ｉｔｈを求められるものであれば、内燃機関１０の回転数Ｎｅとノック判定閾値Ｉｔｈを関連付けたマップデータを用いる方法に限定されるものではない。例えば、所定のノック判定閾値Ｉｔｈを予め設定しておいてもよい。
【０１０２】
そして、ＣＰＵ２９は、Ｓ３０６で算出したノッキング判定指標Ｉと、Ｓ３０７で求めたノック判定閾値Ｉｔｈとに基づいて、内燃機関１０でノッキングが発生しているか否かの判定を行う（Ｓ３０８）。ＣＰＵ２９は、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈを超えていると判定した場合、内燃機関１０にノッキングが発生していると判定し、超えていない場合、ノッキングが発生していないと判定する。
【０１０３】
ここで、内燃機関１０の過渡運転時において、周波数成分（周波数強度）が時間の経過と共に増加する。前述したＳ３０４において、ＣＰＵ２９は、バックグラウンドレベルＢＧＬｉの加重平均値ＢＧＬｉｈは、実際のバックグラウンドレベルＢＧＬｉｔよりも小さい値として得られる。その結果、算出されたノッキング判定指標Ｉが大きくなり、誤判定を生じる可能性がある（図５参照）。
【０１０４】
また、内燃機関１０にノッキングが発生した場合、又はノッキングが検出されないような小さなレベルの振動ノイズやノッキングなどが発生すると、その時の検出値がバックグラウンドレベルＢＧＬｉに反映されてしまう。その結果、バックグラウンドレベルＢＧＬｉは増加し、ノッキングの検出精度が低下してしまう。
【０１０５】
［本発明にかかるノックセンサの異常判定方法］
次に、図１０及び図１１を用いて、本発明にかかるノックセンサ１５１の異常判定方法を説明する。
【０１０６】
図１０は、実施の形態のノックセンサ１５１の異常判定方法を説明する図である。
【０１０７】
図１１は、バックグラウンドレベルＢＧＬの推定値を決めるマップデータの一例を説明する図である。
【０１０８】
図１０に示すように、ノックセンサ１５１は、内燃機関１０の振動を検出し（Ｓ４０１）、検出した振動に応じた出力値Ｐｏ（ノックセンサ１５１から出力された所定時間間隔ごとの電圧：アナログ信号）をＡ／Ｄ変換器３０に送信する。
【０１０９】
Ａ／Ｄ変換器３０は、ノックセンサ１５１から送信された出力値Ｐｏを、アナログ信号からデジタル信号に変換する（Ｓ４０２）。
【０１１０】
ＣＰＵ２９は、デジタル信号に変換された出力値Ｐｏに対して、任意のフィルタを適用して所定の周波数成分を抽出し、抽出した周波数成分ごとの振動強度を演算する（Ｓ４０３）。実施の形態では、ＣＰＵ２９は、バンドパスフィルタ（ＢＰＦ）を適用することにより、ノックセンサ１５１から出力された出力値Ｐｏの中から、７ＫＨｚ、９ＫＨｚ、１２ＫＨｚの３つの周波数成分（特徴周波数）を抽出し、それぞれの周波数成分の実際のバックグラウンドレベルＢＧＬｉ（振動強度）を演算する。
【０１１１】
ＣＰＵ２９は、Ｓ４０３で抽出した周波数成分ごとの振動強度を全て積算して、全ての周波数成分の振動強度を合算した振動強度を算出する（Ｓ４０４）。
【０１１２】
ＣＰＵ２９は、内燃機関１０の回転数Ｎｅ及び内燃機関１０の負荷から推測した内燃機関１０の運転状態に基づいて、現在の内燃機関１０の運転状態における基本バックグラウンドレベルＢＧＬｍを求める（Ｓ４１０）。ＲＯＭ３１には、内燃機関１０の運転状態と、その運転状態における基本バックグラウンドレベルＢＧＬｍとを関連づけたマップデータ（データテーブル）が予め記憶されている。
【０１１３】
ＣＰＵ２９は、推定した運転状態に基づいてマップデータを参照することにより、現在の運転状態における基本バックグラウンドレベルＢＧＬｍを算出する。
【０１１４】
図１１に示すように、ＲＯＭ３１に記憶されたマップデータは、内燃機関１０の回転数Ｎｅと、内燃機関１０の負荷と、基本バックグラウンドレベルＢＧＬｍとが、実測などにより、予め関連付けて記憶されている。実施の形態では、内燃機関１０の回転数Ｎｅと負荷の増加と共に、基本バックグラウンドレベルＢＧＬｍも増加する傾向となっている。
【０１１５】
なお、マップデータは、内燃機関１０の回転数Ｎｅではなく、回転数Ｎｅの単位時間当たりの変化率と、基本バックグラウンドレベルＢＧＬｍとを関連付けてもよい。このようにしても、内燃機関１０の回転数Ｎｅの変化率と負荷とから基本バックグラウンドレベルＢＧＬｍを算出することができる。
【０１１６】
なお、基本バックグラウンドレベルＢＧＬｍを算出する他の方法として、ＣＰＵ２９は、吸入空気量Ｑａを調整するスロットル弁（図示せず）のスロットル開度ＴＶＯを表す信号、吸入空気量Ｑａを表す信号（内燃機関１０での吸入空気量）、燃料噴射弁１６による燃料の噴射を指示するパルス信号、吸気配管６の圧力信号（吸気配管６内部の圧力）、などの内燃機関１０の負荷状態を表すセンサ信号を取得し、これらの信号に基づいて内燃機関１０の運転状態を推定してもよい。
【０１１７】
これらの信号と、内燃機関１０の運転状態との関連付けは、前述したマップデータ（図１１参照）と同様のマップデータにより行うことができる。さらに、内燃機関１０の運転状態の算出は、前述した各信号と、前述した内燃機関１０の回転数Ｎｅと負荷とを関連付けたマップデータ（図１１参照）とを組み合わせてもよい。
【０１１８】
ＣＰＵ２９は、抽出した周波数成分の振動強度の積算値ｋ（Ｓ４０４）から、基本バックグラウンドレベルＢＧＬｍを減算する（Ｓ４０５）。ＣＰＵ２９は、振動強度の積算値ｋと基本バックグラウンドレベルＢＧＬｍの差分を算出することにより、内燃機関１０の回転数Ｎｅ及び負荷の変化によるバックグラウンドレベルＢＧＬｉの変動が、バックグラウンドレベルＢＧＬｉの加重平均ＢＧＬｉｈの演算に影響を与えないようにしている。
【０１１９】
そして、ＣＰＵ２９は、周波数成分の振動強度の積算値ｋと基本バックグラウンドレベルＢＧＬｍとの差分の加重平均値を算出する（Ｓ４０６）。例えば、ＣＰＵ２９は、内燃機関１０のノッキングが発生していない時の周波数成分の振動強度の積算値と基本バックグラウンドレベルＢＧＬｍとの差分の過去の値を用いて、現在の差分の加重平均値を算出する場合、ノッキングの発生がない過去の差分に対する重み付けを重くする。
【０１２０】
これにより、ＣＰＵ２９は、内燃機関１０の回転数Ｎｅや負荷の変化によるバックグラウンドレベルＢＧＬの変動が、加重平均値の算出に影響を与えることを防止し、精度の高い加重平均値を算出することができる。よって、ＣＰＵ２９は、前述したような加重平均の追従遅れ（図５参照）を抑制することができる。
【０１２１】
ここで、ＣＰＵ２９は、ノックセンサ１５１に異常があるか否かの判定を行う（Ｓ４１２）。ＣＰＵ２９は、ノックセンサ１５１が正常の時の周波数成分の振動強度の積算値ｋと、基本バックグラウンドレベルＢＧＬｍとの差分の加重平均値をＲＯＭ３１に記憶しておき、その差分の加重平均値と、現在の周波数成分の振動強度の積算値ｋと、基本バックグラウンドレベルＢＧＬｍとの差分の加重平均値とを比較する。
【０１２２】
図１２の実線で示すように、ＣＰＵ２９は、ノックセンサ１５１が正常の時の差分の加重平均値Ｈａと、現在の差分の加重平均値Ｈｂ１との差の加重平均値Ｈｃ１が、所定の範囲Ｋ以内である場合、ノックセンサ１５１が正常であると判定する。
【０１２３】
一方、図１２の破線で示すように、ＣＰＵ２９は、ノックセンサ１５１が正常の時の差分の加重平均値とＨａ、現在の差分の加重平均値Ｈｂ２との差の加重平均値Ｈｃ２が、所定の範囲Ｋを越えている場合、ノックセンサ１５１が異常であると判定する。
【０１２４】
なお、断線やショートなどによりノックセンサ１５１に異常がある場合、ノックセンサ１５１の出力値はほぼ０（ゼロ）となる。この結果、周波数成分の振動強度の積算値と基本バックグラウンドレベルＢＧＬｍとの差分Ｈｂ２もまた、ほぼ０（ゼロ）となる。
【０１２５】
このように、ＣＰＵ２９は、ノックセンサ１５１の出力値が０（ゼロ）となる場合、又は周波数成分の振動強度の積算値と基本バックグラウンドレベルＢＧＬｍとの差分Ｈｂ２が０（ゼロ）となる場合、ノックセンサ１５１に異常があると判定するようにしてもよい。
【０１２６】
図１０に戻って、ＣＰＵ２９は、周波数成分の振動強度の積算値と、基本バックグラウンドレベルＢＧＬｍのとの差分の加重平均値（Ｓ４０６）に、基本バックグラウンドレベルＢＧＬｍを加算する（Ｓ４０７）。これにより、バックグラウンドレベルＢＧＬｉの信号レベルを基に戻している。
【０１２７】
ＣＰＵ２９は、Ｓ４０４で算出した周波数成分の振動強度の積算値ｋと、Ｓ４０７で算出したバックグラウンドレベルＢＧＬｉとに基づいて、ノッキング判定指標Ｉを算出する（Ｓ４０８）。
【０１２８】
ノッキング判定指標Ｉは、バックグラウンドレベルＢＧＬｉに対する各周波数成分の振動強度の積算値ｋの比率（Ｉ＝Ｓ／Ｎ比（＝ｋ／ＢＧＬｉ））として算出される。なお、ノッキング判定指標Ｉは、バックグラウンドレベルＢＧＬｉと周波数成分の振動強度の積算値ｋとの差分（Ｉ＝ＢＧＬ−ｋ）として算出してもよい。このようにして算出された値も、ノッキング判定指標Ｉとしての機能を有する。
【０１２９】
ＣＰＵ２９は、前述したＳ３０７と同様の方法で、内燃機関１０の回転数Ｎｅに基づいてノック判定閾値Ｉｔｈを求める（Ｓ４１１）。
【０１３０】
そして、ＣＰＵ２９は、Ｓ４０８で算出したノッキング判定指標Ｉと、Ｓ４１１で求めた内燃機関１０の運転状態に基づくノック判定閾値Ｉｔｈとに基づいて、内燃機関１０でノッキングが発生しているか否かの判定を行う（Ｓ４０９）。ＣＰＵ２９は、ノッキング判定指標Ｉが、ノック判定閾値Ｉｔｈを超えていると判定した場合、内燃機関１０にノッキングが発生していると判定し、超えていない場合、ノッキングが発生していないと判定する。
【０１３１】
前述したように、本発明にかかるノッキング判定指標Ｉの算出処理では、ノッキング判定指標Ｉの算出にあたり、周波数成分の振動強度の積算値ｋと基本バックグラウンドレベルＢＧＬｍとの差分を加重平均して求めている。これにより、内燃機関１０の過渡運転時のバックグラウンドレベルＢＧＬＩの変動を除去することができ、過渡運転時のノッキングの誤判定を抑制することができる。
【０１３２】
［点火プラグの動作処理］
次に、制御ブロック３０のＣＰＵ２０（図７参照）による、点火プラグ１５の点火時期の演算動作を説明する。
【０１３３】
図１３は、ＣＰＵ２０による点火プラグ１５の点火時期の演算処理を説明するフローチャートである。
【０１３４】
点火プラグ１５の点火時期の演算処理は、制御ブロック３０のＣＰＵ２０により実行され、ＣＰＵ２０は、この演算処理を一定の時間間隔（周期）で実行している。例えば、ＣＰＵ２０は、約１０ｍｓｅｃごとに、この点火時期の演算処理を実行する。
【０１３５】
ステップＳ２０１において、ＣＰＵ２０は、ＲＡＭ２４に設定された所定のレジスタから、内燃機関１０の回転数Ｎｅと吸入空気量Ｑａを取得する。
【０１３６】
ステップＳ２０２において、ＣＰＵ２０は、単位回転数あたりの吸入空気量Ｑａ／Ｎｅ（基本燃料噴射量とも言う）を算出する。また、このステップＳ２０２において、ＣＰＵ２０は、単位回転数当たりの吸入空気量Ｑａ／Ｎｅに基づいて、燃料噴射時間幅ＴＩを算出する。そして、ステップＳ２０２において、ＣＰＵ２０は、ＲＯＭ２２に記憶された基本点火時期マップデータに基づいて、基本点火時期θｂａｓｅを算出する。基本点火時期マップデータは、単位回転数当たりの吸入空気量Ｑａ／Ｎｅと、回転数Ｎｅと、及び基本点火時期θｂａｓｅとを関連付けたマップデータである。
【０１３７】
ステップＳ２０３において、ＣＰＵ２０は、ノックフラグ（図８参照）に、１と０（ゼロ）の何れがセットされているか判定し、ノックフラグに１がセットされていると判定した場合（ステップＳ２０３：ＹＥＳ）、ノッキングが発生していると判定し、ステップＳ２１３に進む。また、ＣＰＵ２０は、ノックフラグに０（ゼロ）がセットされていると判定した場合（ステップＳ２０３：ＮＯ）、ノッキングが発生していないと判定し、ステップＳ２０４に進む。
【０１３８】
ステップ２１３において、ＣＰＵ２０は、点火プラグ１５の点火時期θａｄｖから所定の遅角量Δθｒｅｔを減算する。点火時期θａｄｖから所定の遅角量Δθｒｅｔを減算することで、点火プラグ１５の点火時期の遅角制御（リタード）が行われる。
【０１３９】
ステップＳ２１４において、ＣＰＵ２０は、カウント値Ａを初期化（カウント値Ａに０（ゼロ）をセット）して、ステップＳ２０８に進む。ここで、カウント値Ａは、内燃機関１０におけるノッキングの発生回数をカウントするための変数である。カウント値Ａは、ノッキングの発生により遅角された点火時期θａｄｖを進角量Δθａｄｖだけ進角させるタイミングになったか否かの判定に用いられる。カウント値Ａの用い方については後述のステップで説明する。
【０１４０】
ステップＳ２０４において、ＣＰＵ２０は、内燃機関１０のノッキングが発生していないと判定した場合（ステップＳ２０３：ＮＯ）、カウント値Ａを１加算（Ａ＝Ａ＋１）する。
【０１４１】
ステップＳ２０５において、ＣＰＵ２０は、カウント値Ａが所定の値（実施の形態では５０）に達したか否かを判定する。ＣＰＵ２０は、カウント値Ａが所定の値（実施の形態では５０）に達していると判定した場合（ステップＳ２０５：ＹＥＳ）、ステップＳ２０６に進む。ＣＰＵ２０は、カウント値Ａが所定の値（実施の形態では５０）に達していないと判定した場合（ステップＳ２０５：ＮＯ）、ステップＳ２０８に進む。
【０１４２】
ステップＳ２０６において、ＣＰＵ２０は、点火時期θａｄｖに所定の進角値Δθａｄｖを加算する（θａｄｖ＝θａｄｖ＋Δθａｄｖ）。これにより、ステップＳ２１３で遅角制御（リタード）された点火時期が、進角値Δθａｄｖだけ進角する。
【０１４３】
ＣＰＵ２０は、本フローチャートで示す処理を１０ｍｓｅｃごとに実行するので、カウント値Ａが５０に到達した時点において、カウント値Ａが初期化されてから０．５秒（５００ｍｓｅｃ）が経過したこととなる。すなわち、ステップＳ２０６は、内燃機関１０でのノッキングの発生により点火時期を遅角させた後、０．５秒が経過するごとに、点火時期を進角（リカバー）する処理である。
【０１４４】
ステップＳ２０７において、ＣＰＵ２０は、カウント値Ａを初期化（カウント値Ａに０（ゼロ）をセット）する。
【０１４５】
ステップＳ２０８において、ＣＰＵ２０は、基本点火時期θｂａｓｅに対して進角値θａｄｖを加算することにより、点火時期θｉｇｎを算出する（θｉｇｎ＝θｂａｓｅ＋θａｄｖ）。
【０１４６】
ステップＳ２０９において、ＣＰＵ２０は、ＲＯＭ２２に記憶された最大進角値マップデータに基づいて、最大進角値θｒｅｓを取得する。この最大進角値マップデータは、単位回転数当たりの吸入空気量Ｑａ／Ｎｅと、回転数Ｎｅと、基本点火時期θｒｅｓとが関係付けられている。
【０１４７】
ステップＳ２１０において、ＣＰＵ２０は、ステップＳ２０８で算出した点火時期θｉｎｇが、ステップＳ２０９で算出した最大進角値θｒｅｓを越えたか否かを判定する。ＣＰＵ２０は、点火時期θｉｎｇが、最大進角値θｒｅｓを越えたと判定した場合（ステップＳ２１０：ＹＥＳ）、ステップＳ２１１に進み、点火時期θｉｎｇは、進角し過ぎているので、点火時期θｉｎｇを最大進角値θｒｅｓにセットする。
【０１４８】
ステップＳ２１０において、ＣＰＵ２０は、点火時期θＩｎｇが最大進角値θｒｅｓを越えていないと判定した場合（ステップＳ２１０：ＮＯ）、ステップＳ２１２に進み、内燃機関１０の運転状態に応じて、ディレイ時間ｔｄ、サンプリング点ｎｓ、分周比ｔｓをＩ／Ｏポート２７（図７参照）に対して出力する。
【０１４９】
Ｉ／Ｏポート２７にセットされた分周比ｔｓに基づいて、振動センサ１５１の出力のデジタル値のサンプリング周期が決定され、サンプリング点数ｎｓによりサンプリング点数が決定される。
【０１５０】
前述したように、本実施の形態にかかる内燃機関１０のＥＣＵ９によれば、抽出された所定の周波数成分の振動強度の積算値ｋと、内燃機関１０の運転状態に基づいて算出された基本バックグラウンドレベルＢＧＬｍと、積算値ｋから基本バックグラウンドレベルＢＧＬｍを減算したした後の積算値を加重平均（平準化）した値ＢＧＬｉｈとに基づいて、ノッキングの程度を表すノッキング判定指標Ｉを算出し、このノッキング判定指標Ｉに基づいてノッキングの発生を判定している。
【０１５１】
これにより、内燃機関１０の過渡運転時において、バックグラウンドレベルＢＧＬｉの運転状態の変化に基づく変動をキャンセルし、バックグラウンドレベルＢＧＬｉの加重平均の追従遅れを抑制することができる。よって、内燃機関１０のバックグラウンドレベルＢＧＬＩの変動に影響されず、精度の良いノッキング検出を行うことができる。
【０１５２】
よって、ＥＣＵ９では、このノッキング判定指標Ｉを用いることで、例えば、断線などのノッキングセンサの異常を精度よく適切に判定することができる。
【０１５３】
前述した、ノッキング検出ユニット３５（ＣＰＵ２９）によるノックセンサ１５１の異常の判定は、本発明のノックセンサの異常判定装置に相当する。また、ＣＰＵ２９がノックセンサ１５１により内燃機関１０の実際の振動強度（バックグラウンドレベルＢＧＬｉ）を取得する構成は、本発明の振動強度取得部に相当し、ＣＰＵ２９が内燃機関１０の運転状態に基づいて理論振動強度（基本バックグラウンドレベルＢＧＬｍ）を算出する構成は、本発明の理論振動強度算出部に相当する。
【０１５４】
また、ＣＰＵ２９が、前述した実際の振動強度（ＢＧＬｉ）と理論振動強度（ＢＧＬｍ）とに基づいて、ノックセンサ１５１の異常を判定する構成（Ｓ４１２の処理）は、本発明のノックセンサ異常判定部に相当する。
【０１５５】
なお、前述したＥＣＵ９では、ＣＰＵ２９が制御ソフトウェアを実行することで、ノッキング判定指標Ｉの算出や、ノックセンサ１５１の異常検出の機能を実現する場合を例示して説明したが、同等の機能を電気回路などのハードウェアにより実装してもよい。例えば、振動検出、周波数分析、平準化（加重平均処理）、マップデータに基づいて基本バックグラウンドレベルＢＧＬｍを取得する処理、ノッキング判定指標Ｉの算出、ノック判定閾値Ｉｔｈの算出のうち、少なくとも何れか１つを電気回路により実装してもよい。
【０１５６】
このように構成しても、前述した実施の形態と同様の機能が発揮され、同様の効果が奏される。
【０１５７】
また、前述したＥＣＵ９では、制御ユニット３４とノッキング検出ユニット３５とに区分けされている場合を例示して説明したが、制御ユニット３４とノッキング検出ユニット３５とは、共通の制御ユニット内に構成してもよい。
【０１５８】
このように構成すると、ＣＰＵやＲＯＭ、ＲＡＭなどを共通のハードウェアとすることができ、複数のＣＰＵやＲＯＭ、ＲＡＭを設ける場合よりも簡略化でき、ＥＣＵの製造コストを抑えることができる。
【０１５９】
また、前述したノックセンサ１５１は、燃料噴射弁１６が動作することに起因するソレノイド等のノイズを取得するため、燃料噴射弁１６を作動させる期間をサンプリングウインドウとしてセットして、そのサンプリングウインドウ内で燃料噴射弁１６のノイズを取得するようにしてもよい。この燃料噴射弁１６のノイズはノッキング判定指標Ｉを算出する際に不要であるので、除去することが望ましい。
【０１６０】
そのため、図１４に示すように、ＥＣＵ９では、想定される燃料噴射弁１６のノイズ（例えば、ソレノイドノイズ）を記述したノイズマップデータＳ４１３をあらかじめＲＯＭ２２などに格納しておく。
【０１６１】
ノイズマップデータＳ４１３は、内燃機関１０の運転状態（運転のタイミング）と燃料噴射弁１６で発生するノイズ（例えば、ソレノイドノイズ）とが関連付けて記憶されている。
【０１６２】
ＣＰＵ２９は、ノイズマップデータＳ４１３を参照して、内燃機関１０の運転状態に基づいて、燃料噴射弁１６のノイズを取得し、サンプリングウインドウ内におけるノックセンサ１５１の検出結果からその燃料噴射弁１６のノイズを減算してもよい。
【０１６３】
また、ＣＰＵ２９は、燃料噴射弁１６のノイズを検出した場合、所定値をバックグラウンドレベルＢＧＬＩの推定値（基本バックグラウンドレベルＢＧＬｍ）に加算してもよい。これにより、燃料噴射弁１６のノイズに影響されることなくノッキング判定指標Ｉを正確に算出することができる。
【０１６４】
なお、ノイズマップデータ（Ｓ４１３）には、燃料噴射弁１６のノイズ、吸排気バルブの動作ノイズ、吸排気カムの動作ノイズの何れか１つ、または組み合わせ情報を記憶しておいてもよく、全てのノイズを記憶しておいてもよい。
【０１６５】
バックグラウンドレベルＢＧＬｉの推定値（基本バックグラウンドレベルＢＧＬｍ）を記述したマップデータは、標準的なバックグラウンドレベルＢＧＬｉを記述するものであるので、バックグラウンドレベルＢＧＬｉの過渡的な変動については同マップデータ内に記述しないことが望ましい。例えば、内燃機関１０の回転数Ｎｅや内燃機関１０の負荷が急増したときは、バックグラウンドレベルＢＧＬｉも急増することが想定されるが、そのような急変するバックグラウンドレベルＢＧＬｉについてはマップデータ内に記述しないこととする。具体的には、バックグラウンドレベルＢＧＬｉの変動率がある範囲以内のもののみマップデータ内に記述することが望ましい。
【０１６６】
ノックセンサ１５１の検出結果から抽出した周波数成分は、必ずしも全て抽出する必要はなく、例えば代表的な周波数成分のみ抽出して他の周波数成分は補間処理により補うこともできる。補間処理のための演算式は、例えば試験結果などに基づきあらかじめ定めておくことができる。これにより周波数成分を抽出するための演算負荷を抑制することができる。
【０１６７】
なお、前述した実施の形態のノックセンサの異常判定は、内燃機関１０の運転中に行うのが好ましい。
【０１６８】
つまり、図１５に示すように、ＣＰＵ２９は、ステップＳ５０１において、内燃機関１０が運転停止状態か否かを判定し、運転停止状態と判定した場合（ステップＳ５０１：ＹＥＳ）、そのまま異常判定処理を終了する。一方、ＣＰＵ２９は、内燃機関１０が運転停止状態でないと判定した場合（ステップＳ５０１：ＮＯ）、ステップＳ５０２に進み、前述したノックセンサの異常判定処理（例えば、図１０に示すＳ４０１〜Ｓ４１２の処理）を行う。
【０１６９】
このように構成すると、内燃機関１０の運転状態において、本発明にかかるノックセンサの異常判定を行うので、内燃機関１０の振動やノイズを確実に取得することができ、ノックセンサの異常判定を適切に行うことができる。
【０１７０】
また、ノッキング検出ユニット３５のＣＰＵ２９は、実際のバックグラウンドレベルＢＧＬＩと、基本バックグラウンドレベルＢＧＬｍとの差分Ｈｃが所定の範囲Ｋを越えた場合、ノックセンサの異常があると判定する場合を例示して説明した。しかし、ノックセンサの異常の判定方法はこれに限定されるものではない。
【０１７１】
例えば、図１６に示すように、ＣＰＵ２９は、ノックセンサ１５１の基本バックグラウンドレベルＢＧＬｍが、所定の許容誤差よりも低い場合、ノックセンサ１５１の断線やショートなどの異常があると判定してもよい。
【０１７２】
このように構成すると、ノックセンサ１５１の断線やショートに起因するノックセンサ１５１の異常を適切の判定できる。
【０１７３】
また、図１７に示すように、ＣＰＵ２９は、ノックセンサ１５１の基本バックグラウンドレベルＢＧＬｍが、所定の許容誤差を越える場合、ノックセンサ１５１のずれなどの異常があると判定してもよい。
【０１７４】
このように構成すると、ノックセンサ１５１のゲイン調整不良に基づく出力ずれに起因するノックセンサ１５１の異常を適切の判定できる。
【０１７５】
また、図１８に示すように、ＣＰＵ２９は、ノックセンサ１５１の出力値Ｐｏの周波数成分の振動強度（周波数強度）が、所定の許容誤差よりも低い場合、ノックセンサ１５１の断線やショートなどの異常があると判定してもよい。
【０１７６】
このように構成すると、ノックセンサ１５１の断線やショートに起因するノックセンサ１５１の異常を適切の判定できる。
【０１７７】
また、図１９に示すように、ＣＰＵ２９は、ノックセンサ１５１の出力値Ｐｏの周波数成分の振動強度（周波数強度）が、所定の許容誤差を越える場合、ノックセンサ１５１のずれなどの異常があると判定してもよい。
【０１７８】
このように構成すると、ノックセンサ１５１のゲイン調整不良に基づく出力ずれに起因するノックセンサ１５１の異常を適切の判定できる。
【０１７９】
また、図２０に示すように、ＣＰＵ２９は、ノックセンサ１５１の異常を検出した場合、点火プラグ１５の点火時期を遅らせる制御（リタード）を行うようにしてもよい。実施の形態では、図１９に示すように、ＣＰＵ２９は、ノックセンサ１５１の異常を検出した場合、点火時期の補正量を−１０に設定し、点火タイミングを遅らせている。
【０１８０】
このように構成すると、ＣＰＵ２９は、ノックセンサ１５１の異常のため、ノッキングの発生を検出することができない。そのため、ＣＰＵ２９は、ノックセンサ１５１の異常の検出に基づいて、いち早く遅角制御することで、実際にノッキングが発生した場合（ノックセンサ１５１による検出不可）に事前に備えることができる。
【０１８１】
以上、本発明の実施の形態の一例を説明したが、本発明は、前述した実施の形態を全て組み合わせてもよく、何れか２つ以上の実施の形態を任意に組み合わせても好適である。
【０１８２】
また、本発明は、前述した実施の形態の全ての構成を備えているものに限定されるものではなく、前述した実施の形態の構成の一部を、他の実施の形態の構成に置き換えてもよく、また、前述した実施の形態の構成を、他の実施の形態の構成に置き換えてもよい。
【０１８３】
また、前述した実施の形態の一部の構成について、他の実施の形態の構成に追加、削除、置換をしてもよい。
【符号の説明】
【０１８４】
１：エアクリーナ、２：空気流量計、３：ダクト、５：スロットルボディ、６：吸気配管、７：気筒（シリンダ）、８：排気配管、９：ＥＣＵ、１０：内燃機関、１１：排気センサ、１２：クランク角センサ、１３：点火コイル、１４：分配器、１５：点火プラグ、１５１：ノックセンサ、１６：燃料噴射弁、２０：ＣＰＵ、２１：Ａ／Ｄ変換器、２２：ＲＯＭ、２３：入力Ｉ／Ｏ、２４：ＲＡＭ、２５：ＤＲＡＭ、２６：出力Ｉ／Ｏ、２７：ポート、２８：タイミング回路、２９：ＣＰＵ、３０：Ａ／Ｄ変換器、３１：ＲＯＭ、３２：ＲＡＭ、３３：クロック、３４：制御ユニット、３５：ノッキング検出ユニット、３６：バス、３７：バス、３８：オペレーショナル回路 
【図１】
2019102805.tif 000003
【図２】
2019102805.tif 000004
【図３】
2019102805.tif 000005
【図４】
2019102805.tif 000006
【図５】
2019102805.tif 000007
【図６】
2019102805.tif 000008
【図７】
2019102805.tif 000009
【図８】
2019102805.tif 000010
【図９】
2019102805.tif 000011
【図１０】
2019102805.tif 000012
【図１１】
2019102805.tif 000013
【図１２】
2019102805.tif 000014
【図１３】
2019102805.tif 000015
【図１４】
2019102805.tif 000016
【図１５】
2019102805.tif 000017
【図１６】
2019102805.tif 000018
【図１７】
2019102805.tif 000019
【図１８】
2019102805.tif 000020
【図１９】
2019102805.tif 000021
【図２０】
2019102805.tif 000022
【国際調査報告】
2019102805.tif 000023
2019102805.tif 000024
2019102805.tif 000025
2019102805.tif 000026