(57)【要約】【課題】点火時期を適切に制御する。【解決手段】エンジンＥＣＵは、ノック判定の停止条件が成立しているか否かを判別するステップ（Ｓ２００）と、判定値Ｖ（ＫＸ）の補正停止フラグを「ＯＮ」にするステップ（Ｓ２０４）と、抽出した強度値ＬＯＧ（Ｖ）に基づいて、ノック判定レベルＶ（ＫＤ）を算出するステップ（Ｓ２１２）と、補正停止フラグが「ＯＮ」ではいない場合（Ｓ２１４にＮＯ）、ノック判定レベルＶ（ＫＤ）よりも大きい強度値ＬＯＧ（Ｖ）の割合であるノック占有率ＫＣに応じて、判定値Ｖ（ＫＸ）を小さくしたり、大きくしたりするステップ（Ｓ２２０、Ｓ２２２）とを含むプログラムを実行する。補正停止フラグが「ＯＮ」である場合（Ｓ２１４にてＹＥＳ）でも、ノック判定レベルＶ（ＫＤ）は算出される。【選択図】図１４
2007198318.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の点火時期制御装置であって、
前記内燃機関で発生する振動の強度に基づいて、ノッキングに起因する振動の強度に関するノック強度を算出するためのノック強度算出手段と、
前記ノック強度と予め定められた判定値とを比較した結果に基づいて、前記内燃機関の点火時期を制御するための制御手段と、
前記内燃機関で発生する振動の強度に関する強度値を検出するための検出手段と、
前記強度値に基づいて、ノッキングの発生状態を判定するために用いられる演算を行なうための演算手段と、
前記演算手段による演算結果に基づいて、ノッキングの発生状態を判定するための判定手段と、
前記判定手段による判定結果に基づいて、前記判定値を補正するための補正手段と、
予め定められた条件が満たされると、前記判定値の補正を停止するための停止手段とを含み、
前記演算手段は、前記停止手段により前記判定値の補正が停止された状態において、前記演算を継続して行なうための手段を含む、内燃機関の点火時期制御装置。
【請求項２】
前記演算は、前記強度値に基づいて、ノック判定レベルを算出するという演算であって、
前記判定手段は、前記強度値と前記ノック判定レベルとを比較した結果に基づいて、ノッキングの発生状態を判定するための手段を含む、請求項１に記載の内燃機関の点火時期制御装置。
【請求項３】
前記ノック判定レベルは、前記強度値における標準偏差と予め定められた係数との積を、前記強度値における中央値に加算することにより算出される、請求項２に記載の内燃機関の点火時期制御装置。
【請求項４】
前記予め定められた条件は、前記内燃機関が予め定められた運転状態であるという条件、前記点火時期制御装置の電源の電圧が予め定められた電圧より低いという条件および前記検出手段が異常な状態であるという条件のうちの少なくともいずれか一つの条件である、請求項１〜３のいずれかに記載の内燃機関の点火時期制御装置。
【請求項５】
前記予め定められた運転状態は、アイドリング状態および前記内燃機関の冷却水の温度が予め定められた温度より低い状態の少なくともいずれかの条件である、請求項４に記載の内燃機関の点火時期制御装置。
【請求項６】
前記判定手段は、ノッキングが発生した頻度を判定するための手段を含み、
前記補正手段は、前記ノッキングが発生した頻度に基づいて、前記判定値を補正するための手段を含む、請求項１〜５のいずれかに記載の内燃機関の点火時期制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の点火時期制御装置に関し、特に、ノッキングの有無に応じて点火時期を制御する技術に関する。
【背景技術】
【０００２】
従来より、ノッキング（ノック）の有無を判定する様々な方法が提案されている。特開２００３−２１０３２号公報（特許文献１）に記載の内燃機関のノック制御装置は、内燃機関のノックを検出するためのノックセンサと、ノックセンサにより検出される出力信号を統計処理する統計処理部と、統計処理部による処理結果に基づいてノックの発生を判定する第１の仮判定部と、ノックセンサにより検出される出力信号の波形形状に基づいてノックの発生を判定する第２の仮判定部と、第１の仮判定部によるノック仮判定と第２の仮判定部によるノック仮判定との結果に基づいて最終的にノックの発生を判定する最終ノック判定部とを含む。最終ノック判定手段は、前記第１の仮判定手段と前記第２の仮判定手段との両方がノックが発生したと判定したときに最終的にノックが発生したと判定する。
【０００３】
この公報に記載のノック制御装置によると、統計処理プログラムによるノック仮判定と、波形形状プログラムによるノック仮判定とを用いて、それぞれの仮判定にてノッキングが発生したと判定された場合にのみ、最終的にノッキングが発生したと判定される。これにより、統計処理プログラムや波形形状プログラムのみを用いたノック判定（ノッキングの有無の判定）ではノッキングの誤検出をしていた出力信号に対しても精度良くノッキングの発生を判定することができる。
【特許文献１】特開２００３−２１０３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特開２００３−２１０３２号公報に記載のノック制御装置においては、統計処理によるノッキング判定と、波形形状によるノッキング判定とが独立して行なわれる。そのため、各判定方法自体の精度が向上するものではなく、各判定方法において、ノイズ成分による精度の悪化は解消されていない。したがって、ノッキングの有無を精度よく判定し、ノッキング時における点火時期の遅角制御などを適切に実行するためには更なる改善の余地があった。
【０００５】
本発明は、上述の課題を解決するためになされたものであって、その目的は、点火時期を適切に制御することができる内燃機関の点火時期制御装置を提供することである。
【課題を解決するための手段】
【０００６】
第１の発明に係る内燃機関の点火時期制御装置は、内燃機関で発生する振動の強度に基づいて、ノッキングに起因する振動の強度に関するノック強度を算出するためのノック強度算出手段と、ノック強度と予め定められた判定値とを比較した結果に基づいて、内燃機関の点火時期を制御するための制御手段と、内燃機関で発生する振動の強度に関する強度値を検出するための検出手段と、強度値に基づいて、ノッキングの発生状態を判定するために用いられる演算を行なうための演算手段と、演算手段による演算結果に基づいて、ノッキングの発生状態を判定するための判定手段と、判定手段による判定結果に基づいて、判定値を補正するための補正手段と、予め定められた条件が満たされると、判定値の補正を停止するための停止手段とを含む。演算手段は、停止手段により判定値の補正が停止された状態において、演算を継続して行なうための手段を含む。
【０００７】
第１の発明によると、内燃機関で発生する振動の強度に基づいて、ノッキングに起因する振動の強度に関するノック強度が算出される。このノック強度と予め定められた判定値とを比較した結果に基づいて、内燃機関の点火時期が制御される。ところで、たとえばノックセンサの出力値のばらつきや劣化などにより、内燃機関で同じ振動が生じた場合であっても、ノックセンサにより検出される強度が変化し、算出されるノック強度が変化し得る。この場合、内燃機関の初期状態において適切に制御されていた点火時期が、不適切になり得る。そのため、たとえばノッキングの発生頻度が高いといえる場合においては、点火時期の遅角制御が行なわれる頻度が高くなるように、内燃機関で発生する振動の状態に応じて判定値を補正する必要がある。そこで、内燃機関で発生する振動の強度に関する強度値が検出され、検出された強度値に基づいて、ノッキングの発生状態を判定するために用いられる演算が行なわれる（たとえば、強度値に基づいて、ノック判定レベルを算出するという演算が行なわれる）。演算結果に基づいて、ノッキングの発生状態が判定される。ノッキングの発生状態の判定結果（たとえばノッキングが発生した頻度）に基づいて、ノック強度と比較される判定値が補正される。これにより、過去の点火サイクルにおける振動の状況からノッキングの発生頻度が高いといえる場合には、ノッキング発生時における点火時期の遅角をより多く行なうことができるように、判定値を補正して、１点火サイクルごとのノッキング判定においてノッキングが発生していると判定し易くすることができる。逆に、過去の点火サイクルにおける振動の状況からノッキングの発生頻度が低いといえる場合には、ノッキング不発生時における点火時期の進角をより多く行なうことができるように、判定値を補正して、１点火サイクルごとのノッキング判定においてノッキングが発生していると判定し難くすることができる。そのため、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切にすることができる。ところで、内燃機関の状態がたとえばアイドリング状態である場合、ノッキングが発生し難い状態であるため、ノッキングの有無を判定して点火時期を制御する必要はない。したがって、内燃機関の状態が予め定められた条件（たとえばアイドリング状態）である場合、ノッキングの判定とともに判定値の補正も停止される。このとき、判定値の補正が停止された状態において、ノッキングの発生状態を判定するために用いられる演算（たとえばノック判定レベルの算出）まで停止すると、判定値の補正が再開される場合に、補正が停止される直前の演算結果に基づいてノッキングの発生状態が判定されて、判定値の補正が行なわれることになる。補正が停止される直前の演算結果には、判定値の補正を停止している間の内燃機関の運転状態などの変化の影響が反映されていない。そのため、補正が停止される直前の演算結果は、補正再開後において適切な演算結果ではない場合がある。そこで、判定値の補正が停止された状態において、ノッキングの発生状態を判定するために用いられる演算が継続して行なわれる。これにより、判定値の補正を再開した直後から、適切な演算結果を用いてノッキングの発生状態を判定し、ノック強度と比較される判定値を補正することができる。そのため、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切に制御することができる内燃機関の点火時期制御装置を提供することができる。
【０００８】
第２の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加えて、演算は、強度値に基づいて、ノック判定レベルを算出するという演算である。判定手段は、強度値とノック判定レベルとを比較した結果に基づいて、ノッキングの発生状態を判定するための手段を含む。
【０００９】
第２の発明によると、検出された強度値に基づいて、ノック判定レベルが算出される。これにより、過去の点火サイクルにおける強度値が反映されたノック判定レベルを得ることができる。そのため、内燃機関の運転状態や個体差が強度値に与える影響を考慮したノック判定レベルを得ることができる。このノック判定レベルと強度値とを比較した結果に基づいて、ノッキングの発生状態が判定される。たとえば、検出された強度値のうち、ノック判定レベルよりも大きい強度値が検出された頻度がノッキングの発生頻度とされ、ノッキングの発生頻度に基づいて判定値が補正される。これにより、内燃機関の運転状態や個体差に応じて、ノッキングの発生状態を精度よく判定することができ、判定値を適切な値にして、点火時期を適切に制御することができる。
【００１０】
第３の発明に係る内燃機関の点火時期制御装置においては、第２の発明の構成に加えて、ノック判定レベルは、強度値における標準偏差と予め定められた係数との積を、強度値における中央値に加算することにより算出される。
【００１１】
第３の発明によると、強度値における標準偏差と予め定められた係数との積を、強度値における中央値に加算することにより、ノック判定レベルが算出される。これにより、過去の点火サイクルにおける強度値が反映されたノック判定レベルを得ることができる。そのため、内燃機関の運転状態や個体差が強度値に与える影響を考慮したノック判定レベルを得ることができる。このノック判定レベルと抽出された強度値とを比較した結果に基づいて、ノッキングの発生状態が判定される。これにより、内燃機関の運転状態や個体差に応じて、ノッキングの発生状態を精度よく判定することができる。
【００１２】
第４の発明に係る内燃機関の点火時期制御装置においては、第１〜第３のいずれかの発明の構成に加えて、内燃機関が予め定められた運転状態であるという条件、点火時期制御装置の電源の電圧が予め定められた電圧より低いという条件および検出手段が異常な状態であるという条件のうちの少なくともいずれか一つの条件である。
【００１３】
第４の発明によると、たとえば、内燃機関が低負荷である運転状態では、ノッキングが発生する可能性が低い。内燃機関が高負荷である運転状態では、判定値が補正されて、点火時期が遅角されることにより、内燃機関の出力が低下し、必要な出力を得ることができない場合がある。また、内燃機関が低温である場合には、ノッキングが発生する可能性が低い。さらに、点火時期制御装置の電源の電圧が予め定められた電圧より低い場合、安定したノッキングの判定や判定値の補正ができない場合がある。さらに、検出手段が異常な状態（たとえば故障している状態）である場合、適正な値に判定値を補正することができない場合がある。そのため、内燃機関が予め定められた運転状態であるという条件、点火時期制御装置の電源の電圧が予め定められた電圧より低いという条件および検出手段が異常な状態であるという条件のうちの少なくともいずれか一つの条件が満たされると、ノッキングの判定とともに判定値の補正が停止される。このような場合、ノッキングの発生状態を判定するために用いられる演算が継続して行なわれる。これにより、判定値の補正を再開した直後から適切な演算結果を用いてノッキングの発生状態を判定し、ノック強度と比較される判定値を補正することができる。そのため、判定値の補正を再開した直後から、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切に制御することができる。
【００１４】
第５の発明に係る内燃機関の点火時期制御装置においては、第４の発明の構成に加えて、予め定められた運転状態は、アイドリング状態および内燃機関の冷却水の温度が予め定められた温度より低い状態の少なくともいずれかの条件である。
【００１５】
第５の発明によると、ノッキングが発生し難いため、ノッキングの有無を判定して点火時期を制御する必要がないアイドリング時や内燃機関の冷却水の温度が予め定められた温度より低い場合に、ノッキングの判定とともに判定値の補正が停止された状態において、ノッキングの発生状態を判定するために用いられる演算が継続して行なわれる。これにより、アイドリング状態でなくなったり、内燃機関の冷却水の温度が予め定められた温度より高くなったりして、判定値の補正を再開した直後から適切な演算結果を用いてノッキングの発生状態を判定し、ノック強度と比較される判定値を補正することができる。そのため、アイドリング状態でなくなったり、内燃機関の冷却水の温度が予め定められた温度より高くなったりした直後から、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切に制御することができる。
【００１６】
第６の発明に係る内燃機関の点火時期制御装置においては、第１〜第５のいずれかの発明の構成に加えて、判定手段は、ノッキングが発生した頻度を判定するための手段を含む。補正手段は、ノッキングが発生した頻度に基づいて、判定値を補正するための手段を含む。
【００１７】
第６の発明によると、ノック強度を用いて内燃機関にノッキングが発生したと判定された頻度に基づいて、ノッキングが発生したか否かを各点火サイクルについて判定するために用いられる判定値が補正される。これにより、ノッキングの発生頻度が高いといえる場合には、ノッキング発生時における点火時期の遅角をより多く行なうことができるように、判定値を補正して、１点火サイクルごとのノッキング判定においてノッキングが発生していると判定し易くすることができる。逆に、ノッキングの発生頻度が低いといえる場合には、ノッキング不発生時における点火時期の進角をより多く行なうことができるように、判定値を補正して、１点火サイクルごとのノッキング判定においてノッキングが発生していると判定し難くすることができる。そのため、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切にすることができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００１９】
図１を参照して、本発明の実施の形態に係る点火時期制御装置を搭載した車両のエンジン１００について説明する。本実施の形態に係る点火時期制御装置は、たとえばエンジンＥＣＵ（Electronic Control Unit）２００が実行するプログラムにより実現される。
【００２０】
エンジン１００は、エアクリーナ１０２から吸入された空気とインジェクタ１０４から噴射される燃料との混合気を、燃焼室内で点火プラグ１０６により点火して燃焼させる内燃機関である。点火時期は、出力トルクが最大になるＭＢＴ（Minimum advance for Best Torque）になるように制御されるが、ノッキングが発生した場合など、エンジン１００の運転状態に応じて遅角されたり、進角されたりする。
【００２１】
混合気が燃焼すると、燃焼圧によりピストン１０８が押し下げられ、クランクシャフト１１０が回転する。燃焼後の混合気（排気ガス）は、三元触媒１１２により浄化された後、車外に排出される。エンジン１００に吸入される空気の量は、スロットルバルブ１１４により調整される。
【００２２】
エンジン１００は、エンジンＥＣＵ２００により制御される。エンジンＥＣＵ２００には、ノックセンサ３００と、水温センサ３０２と、タイミングロータ３０４に対向して設けられたクランクポジションセンサ３０６と、スロットル開度センサ３０８と、車速センサ３１０と、イグニッションスイッチ３１２と、エアフローメータ３１４とが接続されている。
【００２３】
ノックセンサ３００は、エンジン１００のシリンダブロックに設けられる。ノックセンサ３００は、圧電素子により構成されている。ノックセンサ３００は、エンジン１００の振動により電圧を発生する。電圧の大きさは、振動の大きさと対応した大きさとなる。ノックセンサ３００は、電圧を表わす信号をエンジンＥＣＵ２００に送信する。水温センサ３０２は、エンジン１００のウォータージャケット内の冷却水の温度を検出し、検出結果を表わす信号を、エンジンＥＣＵ２００に送信する。
【００２４】
タイミングロータ３０４は、クランクシャフト１１０に設けられており、クランクシャフト１１０と共に回転する。タイミングロータ３０４の外周には、予め定められた間隔で複数の突起が設けられている。クランクポジションセンサ３０６は、タイミングロータ３０４の突起に対向して設けられている。タイミングロータ３０４が回転すると、タイミングロータ３０４の突起と、クランクポジションセンサ３０６とのエアギャップが変化するため、クランプポジションセンサ３０６のコイル部を通過する磁束が増減し、コイル部に起電力が発生する。クランクポジションセンサ３０６は、起電力を表わす信号を、エンジンＥＣＵ２００に送信する。エンジンＥＣＵ２００は、クランクポジションセンサ３０６から送信された信号に基づいて、クランク角およびクランクシャフト１１０の回転数を検出する。
【００２５】
スロットル開度センサ３０８は、スロットル開度を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。車速センサ３１０は、車輪（図示せず）の回転数を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。エンジンＥＣＵ２００は、車輪の回転数から、車速を算出する。イグニッションスイッチ３１２は、エンジン１００を始動させる際に、運転者によりオン操作される。エアフローメータ３１４は、エンジン１００に吸入される空気量を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。
【００２６】
エンジンＥＣＵ２００は、各センサおよびイグニッションスイッチ３１２から送信された信号、メモリ２０２に記憶されたマップおよびプログラムに基づいて演算処理を行ない、エンジン１００が所望の運転状態となるように、機器類を制御する。
【００２７】
本実施の形態において、エンジンＥＣＵ２００は、ノックセンサ３００から送信された信号およびクランク角に基づいて、予め定められたノック検出ゲート（予め定められた第１クランク角から予め定められた第２クランク角までの区間）におけるエンジン１００の振動の波形（以下、振動波形と記載する）を検出し、検出された振動波形に基づいて、エンジン１００にノッキングが発生したか否かを判定する。本実施の形態におけるノック検出ゲートは、燃焼行程において上死点（０度）から９０度までである。なお、ノック検出ゲートはこれに限らない。
【００２８】
ノッキングが発生した場合、エンジン１００には、図２において実線で示す周波数付近の周波数の振動が発生する。ノッキングに起因して発生する振動の周波数は一定ではなく、所定の帯域幅を有する。そのため、本実施の形態においては、図２に示すように、第１の周波数帯Ａ、第２の周波数帯Ｂおよび第３の周波数帯Ｃに含まれる振動を検出する。なお、図２におけるＣＡは、クランク角（Crank Angle）を示す。なお、ノッキングに起因して発生する振動の周波数帯は３つに限られない。
【００２９】
図３を参照して、エンジンＥＣＵ２００についてさらに説明する。エンジンＥＣＵ２００は、Ａ／Ｄ（アナログ／デジタル）変換部４００と、バンドパスフィルタ（１）４１０と、バンドパスフィルタ（２）４２０と、バンドパスフィルタ（３）４３０と、積算部４５０とを含む。
【００３０】
Ａ／Ｄ変換部４００は、ノックセンサ３００から送信されたアナログ信号をデジタル信号に変換する。バンドパスフィルタ（１）４１０は、ノックセンサ３００から送信された信号のうち、第１の周波数帯Ａの信号のみを通過させる。すなわち、バンドパスフィルタ（１）４１０により、ノックセンサ３００が検出した振動から、第１の周波数帯Ａの振動のみが抽出される。
【００３１】
バンドパスフィルタ（２）４２０は、ノックセンサ３００から送信された信号のうち、第２の周波数帯Ｂの信号のみを通過させる。すなわち、バンドパスフィルタ（２）４２０により、ノックセンサ３００が検出した振動から、第２の周波数帯Ｂの振動のみが抽出される。
【００３２】
バンドパスフィルタ（３）４３０は、ノックセンサ３００から送信された信号のうち、第３の周波数帯Ｃの信号のみを通過させる。すなわち、バンドパスフィルタ（３）４３０により、ノックセンサ３００が検出した振動から、第３の周波数帯Ｃの振動のみが抽出される。
【００３３】
積算部４５０は、バンドパスフィルタ（１）４１０〜バンドパスフィルタ（３）４３０により選別された信号、すなわち振動の強度を、クランク角度で５度分づつ積算する。以下、積算された値を積算値と表わす。積算値の算出は、周波数帯ごとに行なわれる。この積算値の算出により、各周波数帯における振動波形が検出される。
【００３４】
さらに、算出された第１の周波数帯Ａ〜第３の周波数帯Ｃの積算値は、クランク角度に対応して加算される。すなわち、第１の周波数帯Ａ〜第３の周波数帯Ｃの振動波形が合成される。
【００３５】
これにより、図４に示すように、エンジン１００の振動波形が検出される。すなわち、第１の周波数帯Ａ〜第３の周波数帯Ｃの合成波形が、エンジン１００の振動波形として用いられる。
【００３６】
検出された振動波形は、図５に示すようにエンジンＥＣＵ２００のメモリ２０２に記憶されたノック波形モデルと比較される。ノック波形モデルは、エンジン１００にノッキングが発生した場合の振動波形のモデルとして予め作成される。
【００３７】
ノック波形モデルにおいて、振動の強度は０〜１の無次元数として表され、振動の強度はクランク角と一義的には対応していない。すなわち、本実施の形態のノック波形モデルにおいては、振動の強度のピーク値以降、クランク角が大きくなるにつれ振動の強度が低減することが定められているが、振動の強度がピーク値となるクランク角は定められていない。
【００３８】
本実施の形態におけるノック波形モデルは、ノッキングにより発生した振動の強度のピーク値以降の振動に対応している。なお、ノッキングに起因した振動の立ち上がり以降の振動に対応したノック波形モデルを記憶してもよい。
【００３９】
ノック波形モデルは、実験などにより、強制的にノッキングを発生させた場合におけるエンジン１００の振動波形を検出し、この振動波形に基づいて予め作成されて記憶される。
【００４０】
ノック波形モデルは、エンジン１００の寸法やノックセンサ３００の出力値が、寸法公差やノックセンサ３００の出力値の公差の中央値であるエンジン１００（以下、特性中央エンジンと記載する）を用いて作成される。すなわち、ノック波形モデルは、特性中央エンジンに強制的にノッキングを発生させた場合における振動波形である。なお、ノック波形モデルを作成する方法は、これに限られず、その他、シミュレーションにより作成してもよい。
【００４１】
検出された波形とノック波形モデルとの比較においては、図６に示すように、正規化された波形とノック波形モデルとが比較される。ここで、正規化とは、たとえば、検出された振動波形における積算値の最大値で各積算値で除算することにより、振動の強度を０〜１の無次元数で表わすことである。なお、正規化の方法はこれに限らない。
【００４２】
本実施の形態において、エンジンＥＣＵ２００は、正規化された振動波形とノック波形モデルとの偏差に関する値である相関係数Ｋを算出する。正規化後の振動波形において振動の強度が最大になるタイミングとノック波形モデルにおいて振動の強度が最大になるタイミングとを一致させた状態で、正規化後の振動波形とノック波形モデルとの偏差の絶対値（ズレ量）をクランク角ごと（５度ごと）に算出することにより、相関係数Ｋが算出される。
【００４３】
正規化後の振動波形とノック波形モデルとのクランク角ごとの偏差の絶対値をΔＳ（Ｉ）（Ｉは自然数）とし、ノック波形モデルにおける振動の強度をクランク角で積分した値（ノック波形モデルの面積）をＳとおくと、相関係数Ｋは、Ｋ＝（Ｓ−ΣΔＳ（Ｉ））／Ｓという方程式により算出される。ここで、ΣΔＳ（Ｉ）は、上死点から９０度までのΔＳ（Ｉ）の総和である。本実施の形態において、相関係数Ｋは、振動波形の形状がノック波形モデルの形状に近いほど、大きな値として算出される。したがって、振動波形にノッキング以外の要因による振動の波形が含まれた場合、相関係数Ｋは小さく算出される。なお、相関係数Ｋの算出方法はこれに限らない。
【００４４】
さらに、エンジンＥＣＵ２００は、積算値の最大値（ピーク値）に基づいて、ノック強度Ｎを算出する。積算値の最大値をＰとし、エンジン１００にノッキングが発生していない状態におけるエンジン１００の振動の強度を表わす値をＢＧＬ（Back Ground Level）とおくと、ノック強度Ｎは、Ｎ＝Ｐ／ＢＧＬという方程式で算出される。ＢＧＬはメモリ２０２に記憶されている。なお、ノック強度Ｎの算出方法はこれに限らない。
【００４５】
本実施の形態において、エンジンＥＣＵ２００は、算出されたノック強度Ｎとメモリ２０２に記憶された判定値Ｖ（ＫＸ）とを比較し、さらに検出された波形と記憶されたノック波形モデルとを比較して、エンジン１００にノッキングが発生したか否かを１点火サイクルごとに判定する。
【００４６】
図７に示すように、判定値Ｖ（ＫＸ）は、エンジン回転数ＮＥと吸入空気量ＫＬとをパラメータとするマップとして記憶される。
【００４７】
判定値Ｖ（ＫＸ）の初期値には、予め実験などにより定められる値が用いられる。ところが、ノックセンサ３００の出力値のばらつきや劣化などにより、エンジン１００で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値Ｖ（ＫＸ）を補正し、実際に検出される強度に応じた判定値Ｖ（ＫＸ）を用いてノッキングが発生したか否かを判定する必要がある。
【００４８】
そのため、本実施の形態においては、図８に示すように、強度Ｖを対数変換した値である強度値ＬＯＧ（Ｖ）と、各強度値ＬＯＧ（Ｖ）が検出された頻度（回数、確率ともいう）との関係を示す頻度分布を用いて、各判定値Ｖ（ＫＸ）が補正される。
【００４９】
エンジン回転数ＮＥと吸入空気量ＫＬとをパラメータとする領域ごとに強度値ＬＯＧ（Ｖ）の頻度分布に基づいて、対応する判定値Ｖ（ＫＸ）が補正される。強度値ＬＯＧ（Ｖ）を算出するために用いられる強度Ｖは、予め定められたクランク角の間における強度のピーク値（５度ごとの積算値のピーク値）である。
【００５０】
頻度分布においては、強度値ＬＯＧ（Ｖ）の頻度を最小値から累積して５０％になる中央値Ｖ（５０）および中央値Ｖ（５０）以下の強度値ＬＯＧ（Ｖ）における標準偏差σが算出される。たとえば、本実施の形態においては、複数（たとえば２００サイクル）の強度値ＬＯＧ（Ｖ）に基づいて算出される中央値および標準偏差と近似した中央値Ｖ（５０）および標準偏差σが、以下の算出方法により１点火サイクルごとに算出される。
【００５１】
今回検出された強度値ＬＯＧ（Ｖ）が前回算出された中央値Ｖ（５０）よりも大きい場合、前回算出された中央値Ｖ（５０）に予め定められた値Ｃ（１）を加算した値が、今回の中央値Ｖ（５０）として算出される。逆に、今回検出された強度値ＬＯＧ（Ｖ）が前回算出された中央値Ｖ（５０）よりも小さい場合、前回算出された中央値Ｖ（５０）から予め定められた値Ｃ（２）（たとえばＣ（２）はＣ（１）と同じ値）を減算した値が、今回の中央値Ｖ（５０）として算出される。
【００５２】
今回検出された強度値ＬＯＧ（Ｖ）が、前回算出された中央値Ｖ（５０）よりも小さく、かつ前回算出された中央値Ｖ（５０）から前回算出された標準偏差σを減算した値よりも大きい場合、前回算出された標準偏差σから予め定められた値Ｃ（３）を２倍した値を減算した値が、今回の標準偏差σとして算出される。逆に、今回検出された強度値ＬＯＧ（Ｖ）が、前回算出された中央値Ｖ（５０）よりも大きい場合、または前回算出された中央値Ｖ（５０）から前回算出された標準偏差σを減算した値よりも小さい場合、前回算出された標準偏差σに予め定められた値Ｃ（４）（たとえばＣ（４）はＣ（３）と同じ値）を加算した値が、今回の標準偏差σとして算出される。なお、中央値Ｖ（５０）および標準偏差σの算出方法はこれに限定されない。また、中央値Ｖ（５０）および標準偏差σの初期値は、予め設定された値であってもよいし、「０」であってもよい。
【００５３】
中央値Ｖ（５０）に係数Ｕ（１）（Ｕ（１）は定数で、たとえばＵ（１）＝３）と標準偏差σとの積を加算した値が、ノック判定レベルＶ（ＫＤ）となる。なお、ノック判定レベルＶ（ＫＤ）の算出方法はこれに限らない。ノック判定レベルＶ（ＫＤ）よりも大きい強度値ＬＯＧ（Ｖ）の頻度が、ノッキングが発生した頻度として判定される。
【００５４】
係数Ｕ（１）は、実験などより得られたデータや知見から求められた係数である。Ｕ（１）＝３とした場合のノック判定レベルＶ（ＫＤ）よりも大きい強度値ＬＯＧ（Ｖ）が、実際にノッキングが発生した点火サイクルにおける強度値ＬＯＧ（Ｖ）と略一致する。なお、係数Ｕ（１）に「３」以外の値を用いるようにしてもよい。
【００５５】
強度値ＬＯＧ（Ｖ）の頻度分布においては、エンジン１００においてノッキングが発生していなければ、図９に示すように正規分布となり、強度値ＬＯＧ（Ｖ）の最大値Ｖ（ＭＡＸ）とノック判定レベルＶ（ＫＤ）とが一致する。一方、ノッキングが発生することにより、検出される強度Ｖが大きくなり、大きい強度値ＬＯＧ（Ｖ）が算出されると、図１０に示すように、ノック判定レベルＶ（ＫＤ）よりも最大値Ｖ（ＭＡＸ）が大きくなる。
【００５６】
さらにノッキングが発生する頻度が大きくなったり、エンジン１００自体の機械振動が大きくなったりすると、図１１に示すように最大値Ｖ（ＭＡＸ）はさらに大きくなる。このとき、頻度分布における中央値Ｖ（５０）および標準偏差σは、最大値Ｖ（ＭＡＸ）とともに大きくなる。そのため、ノック判定レベルＶ（ＫＤ）が大きくなる。
【００５７】
ノック判定レベルＶ（ＫＤ）よりも小さい強度値ＬＯＧ（Ｖ）は、ノッキングが発生したサイクルにおける強度値ＬＯＧ（Ｖ）とは判定されないため、ノック判定レベルＶ（ＫＤ）が大きくなると、それだけ、ノッキングが発生していても、ノッキングが発生していないと判定される頻度が高くなる。
【００５８】
そこで、本実施の形態においては、図１２で示すように、破線で囲まれる領域内の強度値ＬＯＧ（Ｖ）を用いることで、しきい値Ｖ（１）よりも大きい強度値ＬＯＧ（Ｖ）を除外して中央値Ｖ（５０）および標準偏差σが算出される。図１２は、算出された強度値ＬＯＧ（Ｖ）を、その強度値ＬＯＧ（Ｖ）が得られたサイクルにおける相関係数Ｋごとにプロットした図である。
【００５９】
しきい値Ｖ（１）は、強度値ＬＯＧ（Ｖ）の頻度分布の中央値に、中央値以下の強度値ＬＯＧ（Ｖ）における標準偏差と係数Ｕ（２）（Ｕ（２）は定数で、たとえばＵ（２）＝３）との積を加算した値である。
【００６０】
しきい値Ｖ（１）より小さい強度値ＬＯＧ（Ｖ）のみを抽出して中央値Ｖ（５０）および標準偏差σを算出することにより、中央値Ｖ（５０）および標準偏差σが過大にならず、安定した値となる。これにより、ノック判定レベルＶ（ＫＤ）が過大になることを抑制することができる。そのため、ノッキングが発生していても、ノッキングが発生していないと判定される頻度が高くなることを抑制することができる。
【００６１】
なお、中央値Ｖ（５０）および標準偏差σを算出するために用いられる強度値ＬＯＧ（Ｖ）の抽出方法は、これに限らない。たとえば、前述のしきい値Ｖ（１）よりも小さい強度値ＬＯＧ（Ｖ）のうち、相関係数Ｋがしきい値Ｋ（１）より大きい点火サイクルにおいて算出された強度値ＬＯＧ（Ｖ）を抽出するようにしてもよい。
【００６２】
図１３を参照して、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵ２００が、ノッキングが発生したか否かを１点火サイクルごとに判定して点火時期を制御するために実行するプログラムの制御構造について説明する。
【００６３】
ステップ（以下、ステップをＳと略す）１００にて、エンジンＥＣＵ２００は、ノッキング判定の停止条件が成立しているか否かを判別する。たとえば、エンジン１００がアイドリング状態である場合、ノッキング判定の停止条件が成立していると判別される。ノッキング判定の停止条件が成立している場合（Ｓ１００にてＹＥＳ）、処理は終了する。そうでない場合（Ｓ１００にてＮＯ）、処理はＳ１０２に移される。
【００６４】
Ｓ１０２にて、エンジンＥＣＵ２００は、クランクポジションセンサ３０６から送信された信号に基づいて、エンジン回転数ＮＥを検出するとともに、エアフローメータ３１４から送信された信号に基づいて、吸入空気量ＫＬを検出する。
【００６５】
Ｓ１０４にて、エンジンＥＣＵ２００は、ノックセンサ３００から送信された信号に基づいて、エンジン１００の振動の強度を検出する。振動の強度は、ノックセンサ３００の出力電圧値で表される。なお、ノックセンサ３００の出力電圧値と対応した値で振動の強度を表してもよい。強度の検出は、燃焼行程において上死点から９０度（クランク角で９０度）までの間で行なわれる。
【００６６】
Ｓ１０６にて、エンジンＥＣＵ２００は、ノックセンサ３００の出力電圧値（振動の強度を表わす値）を、クランク角で５度ごとに（５度分だけ）積算した値（積算値）を算出する。積算値の算出は、第１の周波数帯Ａ〜第３の周波数帯Ｃの振動ごとに行なわれる。さらに第１の周波数帯Ａ〜第３の周波数帯Ｃの積算値が、クランク角度に対応して加算されて、エンジン１００の振動波形が検出される。
【００６７】
Ｓ１０８にて、エンジンＥＣＵ２００は、第１の周波数帯Ａ〜第３の周波数帯Ｃの合成波形（エンジン１００の振動波形）における積算値のうち、最も大きい積算値（ピーク値）を算出する。
【００６８】
Ｓ１１０にて、エンジンＥＣＵ２００は、エンジン１００の振動波形を正規化する。ここで、正規化とは、算出されたピーク値で、各積算値を除算することにより、振動の強度を０〜１の無次元数で表わすことをいう。
【００６９】
Ｓ１１２にて、エンジンＥＣＵ２００は、正規化された振動波形とノック波形モデルとの偏差に関する値である相関係数Ｋを算出する。
【００７０】
Ｓ１１４にて、エンジンＥＣＵ２００は、ノック強度Ｎを算出する。Ｓ１１６にて、エンジンＥＣＵ２００は、相関係数Ｋが予め定められた値よりも大きく、かつノック強度Ｎが判定値Ｖ（ＫＸ）よりも大きいか否かを判別する。相関係数Ｋが予め定められた値よりも大きく、かつノック強度Ｎが判定値Ｖ（ＫＸ）よりも大きい場合（Ｓ１１６にてＹＥＳ）、処理はＳ１１８に移される。そうでない場合（Ｓ１１６にてＮＯ）、処理はＳ１２２に移される。
【００７１】
Ｓ１１８にて、エンジンＥＣＵ２００は、エンジン１００にノッキングが発生したと判定する。Ｓ１２０にて、エンジンＥＣＵ２００は、点火時期を遅角する。Ｓ１２２にて、エンジンＥＣＵ２００は、エンジン１００にノッキングが発生していないと判定する。Ｓ１２４にて、エンジンＥＣＵ２００は、点火時期を進角する。
【００７２】
なお、Ｓ１００にて記載したノッキング判定の停止条件はこれに限られない。たとえば、エンジン１００が予め定められた運転状態である場合（たとえば、エンジン１００の負荷が予め定められた負荷よりも高い領域でエンジン１００が運転されている場合）、水温センサ３０２により検出される冷却水の温度が予め定められた温度より低い場合、エンジンＥＣＵ２００の電源の電圧が予め定められた電圧より低い場合、およびノックセンサ３００が故障した場合の少なくともいずれかである場合、ノッキング判定の停止条件が成立していると判別するようにしてもよい。
【００７３】
図１４を参照して、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵ２００が、判定値Ｖ（ＫＸ）を補正するために実行するプログラムの制御構造について説明する。
【００７４】
Ｓ２００にて、エンジンＥＣＵ２００は、ノック判定の停止条件が成立しているか否かを判別する。たとえば、エンジン１００がアイドリング状態である場合、ノッキング判定の停止条件が成立していると判別される。ノッキング判定の停止条件が成立していると（Ｓ２００にてＹＥＳ）、処理はＳ２０２に移される。そうでない場合（Ｓ２００にてＮＯ）、処理はＳ２０６に移される。
【００７５】
Ｓ２０２にて、エンジンＥＣＵ２００は、判定値Ｖ（ＫＸ）の補正を停止する。Ｓ２０４にて、エンジンＥＣＵ２００は、補正停止フラグを「ＯＮ」にする。なお、この補正停止フラグは、ノッキング判定の停止条件が成立していない場合（Ｓ２００にてＮＯ）、自動的に「ＯＦＦ」にされる。
【００７６】
Ｓ２０６にて、エンジンＥＣＵ２００は、ノックセンサ３００から送信された信号に基づいて検出される強度Ｖから、強度値ＬＯＧ（Ｖ）を算出する。ここで、強度Ｖは、予め定められたクランク角の間におけるピーク値（５度ごとの積算値のピーク値）である。
【００７７】
Ｓ２０８にて、エンジンＥＣＵ２００は、強度値ＬＯＧ（Ｖ）が前述のしきい値Ｖ（１）より小さいか否かを判別する。強度値ＬＯＧ（Ｖ）が前述のしきい値Ｖ（１）より小さい場合（Ｓ２０８にてＹＥＳ）、処理はＳ２１０に移される。そうでない場合（Ｓ２０８にてＮＯ）、処理はＳ２００に戻される。
Ｓ２１０にて、エンジンＥＣＵ２００は、抽出された強度値ＬＯＧ（Ｖ）について、中央値Ｖ（５０）および標準偏差σを算出する。Ｓ２１２にて、エンジンＥＣＵ２００は、中央値Ｖ（５０）および標準偏差σに基づいて、ノック判定レベルＶ（ＫＤ）を算出する。
【００７８】
Ｓ２１４にて、エンジンＥＣＵ２００は、補正停止フラグが「ＯＮ」であるか否かを判別する。補正停止フラグが「ＯＮ」である場合（Ｓ２１４にてＹＥＳ）、処理は終了する。そうでない場合（Ｓ２１４にてＮＯ）、処理はＳ２１６に移される。
【００７９】
Ｓ２１６にて、エンジンＥＣＵ２００は、算出された強度値ＬＯＧ（Ｖ）のうち、ノック判定レベルＶ（ＫＤ）よりも大きい強度値ＬＯＧ（Ｖ）の割合を、ノック占有率ＫＣとしてカウントする。
【００８０】
Ｓ２１８にて、エンジンＥＣＵ２００は、ノック占有率ＫＣがしきい値ＫＣ（０）よりも大きいか否かを判定する。ノック占有率ＫＣがしきい値ＫＣ（０）よりも大きい場合（Ｓ２１８にてＹＥＳ）、処理はＳ２２０に移される。そうでない場合（Ｓ２１８にてＮＯ）、処理はＳ２２２に移される。
【００８１】
Ｓ２２０にて、エンジンＥＣＵ２００は、判定値Ｖ（ＫＸ）を小さくする。Ｓ２２２にて、エンジンＥＣＵ２００は、判定値Ｖ（ＫＸ）を大きくする。
【００８２】
なお、Ｓ２００にて記載したノッキング判定の停止条件はこれに限られない。たとえば、エンジン１００が予め定められた運転状態である場合（たとえば、エンジン１００の負荷が予め定められた負荷よりも高い領域でエンジン１００が運転されている場合）、水温センサ３０２により検出される冷却水の温度が予め定められた温度より低い場合、エンジンＥＣＵ２００の電源の電圧が予め定められた電圧より低い場合、およびノックセンサ３００が故障した場合の少なくともいずれかである場合、ノッキング判定の停止条件が成立していると判別するようにしてもよい。
【００８３】
以上のような構造およびフローチャートに基づく、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵ２００の動作について説明する。
【００８４】
エンジン１００の運転中において、ノッキング判定の停止条件が成立していない場合（Ｓ１００にてＮＯ）、クランクポジションセンサ３０６から送信された信号に基づいて、エンジン回転数ＮＥが検出されるとともに、エアフローメータ３１４から送信された信号に基づいて、吸入空気量ＫＬが検出される（Ｓ１０２）。また、ノックセンサ３００から送信された信号に基づいて、エンジン１００の振動の強度が検出される（Ｓ１０４）。燃焼行程における上死点から９０度までの間において、５度ごとの積算値が第１の周波数帯Ａから第３の周波数帯Ｃの振動ごとに算出される（Ｓ１０６）。算出された第１の周波数帯Ａ〜第３の周波数帯Ｃの積算値がクランク角度に対応して加算され、前述した図４に示すようなエンジン１００の振動波形が検出される。
【００８５】
５度ごとの積算値により振動波形を検出することにより、振動の強度が細かく変化する複雑な形状の振動波形が検出されることを抑制することができる。そのため、検出された振動波形とノック波形モデルとの比較を容易にすることができる。算出された積算値に基づいて、第１の周波数帯Ａ〜第３の周波数帯Ｃの合成波形（エンジン１００の振動波形）における積算値のピーク値Ｐが算出される（Ｓ１０８）。
【００８６】
算出されたピーク値Ｐでエンジン１００の振動波形における積算値が除算されて、振動波形が正規化される（Ｓ１１０）。正規化により、振動波形における振動の強度が０〜１の無次元数で表される。これにより、振動の強度に関係なく検出された振動波形とノック波形モデルとの比較を行なうことができる。そのため、振動の強度に対応した多数のノック波形モデルを記憶しておく必要がなく、ノック波形モデルの作成を容易にすることができる。
【００８７】
正規化後の振動波形において振動の強度が最大になるタイミングとノック波形モデルにおいて振動の強度が最大になるタイミングとを一致させ（図６参照）、この状態で、正規化後の振動波形とノック波形モデルとのクランク角ごとの偏差の絶対値ΔＳ（Ｉ）が算出される。このΔＳ（Ｉ）の総和ΣΔＳ（Ｉ）およびノック波形モデルにおいて振動の強度をクランク角で積分した値Ｓに基づいて、Ｋ＝（Ｓ−ΣΔＳ（Ｉ））／Ｓにより相関係数Ｋが算出される（Ｓ１１２）。これにより、検出された振動波形とノック波形モデルとの一致度合を数値化して客観的に判定することができる。また、振動波形とノック波形モデルとを比較することで、振動の減衰傾向など、振動の挙動からノッキング時の振動であるか否かを分析することができる。
【００８８】
ピーク値ＰをＢＧＬで除算することにより、ノック強度Ｎが算出される（Ｓ１１４）。これにより、振動の強度に基づいて、エンジン１００の振動がノッキングに起因した振動であるか否かをより詳細に分析することができる。
【００８９】
相関係数Ｋが予め定められた値よりも大きく、かつノック強度Ｎが判定値Ｖ（ＫＸ）よりも大きい場合（Ｓ１１６にてＹＥＳ）、ノッキングが発生したと判定され（Ｓ１１８）、点火時期が遅角される（Ｓ１２０）。これにより、ノッキングの発生が抑制される。相関係数Ｋが予め定められた値よりも大きく、かつノック強度Ｎが判定値Ｖ（ＫＸ）よりも大きい状態ではない場合（Ｓ１１６にてＮＯ）、ノッキングが発生していないと判定され（Ｓ１２２）、点火時期が進角される（Ｓ１２４）。
【００９０】
このようにして、ノック強度Ｎと判定値Ｖ（ＫＸ）とを比較することにより１点火サイクルごとにノッキングが発生したか否かが判定され、点火時期が遅角されたり、進角されたりする。
【００９１】
ところで、上述したように、ノックセンサ３００の出力値のばらつきや劣化などにより、エンジン１００で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値Ｖ（ＫＸ）を補正し、実際に検出される強度に応じた判定値Ｖ（ＫＸ）を用いてノッキングが発生したか否かを判定する必要がある。
【００９２】
そこで、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵ２００においては、ノッキング判定の停止条件が成立していない場合（Ｓ２００にてＮＯ）、強度値ＬＯＧ（Ｖ）が算出される（Ｓ２０６）。算出された強度値ＬＯＧ（Ｖ）が、前述のしきい値Ｖ（１）より小さい場合（Ｓ２０８にてＹＥＳ）、中央値Ｖ（５０）および標準偏差σが算出される（Ｓ２１０）。このように、しきい値Ｖ（１）より小さい強度値ＬＯＧ（Ｖ）のみを抽出して中央値Ｖ（５０）および標準偏差σを算出することにより、中央値Ｖ（５０）および標準偏差σが過大にならず、安定した値となる。このような中央値Ｖ（５０）および標準偏差σに基づいて、ノック判定レベルＶ（ＫＤ）が算出される（Ｓ２１２）。そのため、ノック判定レベルＶ（ＫＤ）が過大になることを抑制することができる。補正停止フラグが「ＯＮ」でない場合（Ｓ２１４にてＮＯ）、ノック占有率ＫＣ（ノッキングの発生した頻度）がカウントされる（Ｓ２１６）。ノック占有率ＫＣがしきい値ＫＣ（０）よりも大きい場合（Ｓ２１８にてＹＥＳ）、判定値Ｖ（ＫＸ）が小さくされる（Ｓ２２０）。ノック占有率ＫＣがしきい値ＫＣ（０）よりも小さい場合（Ｓ２１８にてＮＯ）、判定値Ｖ（ＫＸ）が大きくされる（Ｓ２２２）。そのため、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切にすることができる。
【００９３】
ところで、内燃機関の状態がたとえばアイドリング状態である場合、ノッキングが発生し難い状態であるため、ノッキングの有無を判定して点火時期を制御する必要はない。したがって、ノッキング判定の停止条件が成立している（たとえばアイドリング状態である）場合（Ｓ１００にてＹＥＳ）、ノッキング判定がなされない。また、判定値Ｖ（ＫＸ）の補正も停止される（Ｓ２０２）。すなわち、ノック占有率ＫＣ（ノッキングの発生した頻度）がカウントされ、ノック占有率ＫＣがしきい値ＫＣ（０）と比較された結果に応じて判定値Ｖ（ＫＸ）が小さくされたり（Ｓ２２０）、大きくされたり（Ｓ２２２）することはない。
【００９４】
このとき、図１５に示すように、判定値Ｖ（ＫＸ）の補正が停止された状態において、ノック判定レベルＶ（ＫＤ）の算出まで停止すると、判定値Ｖ（ＫＸ）の補正が再開される場合に、補正が停止される直前のノック判定レベルＶ（ＫＤ）に基づいて、ノック占有率ＫＣがカウントされる。このノック占有率ＫＣに基づいて、判定値Ｖ（ＫＸ）の補正が行なわれることになる。補正が停止される直前のノック判定レベルＶ（ＫＤ）には、判定値Ｖ（ＫＸ）の補正が停止されている間のエンジンの運転状態などの変化の影響が反映されていない。そのため、補正が停止される直前のノック判定レベルＶ（ＫＤ）は、判定値Ｖ（ＫＸ）の補正と、理想とするノック判定レベルとの間に差異が生じ、補正の再開後において、適切な値ではない場合がある。そのため、ノック判定レベルＶ（ＫＤ）が理想とするノック判定レベル付近の適切な値に収束するまでは、判定値Ｖ（ＫＸ）が適切に補正されない場合がある。
【００９５】
そこで、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵ２００においては、ノッキング判定の停止条件が成立し（Ｓ２００にてＹＥＳ）、判定値の補正が停止されて（Ｓ２０２）、補正停止フラグが「ＯＮ」にされた（Ｓ２０４）後であっても、ノッキング判定の停止条件が成立していない場合（Ｓ２００にてＮＯ）と同様に、強度値ＬＯＧ（Ｖ）が算出される（Ｓ２０６）。算出された強度値ＬＯＧ（Ｖ）がしきい値Ｖ（１）より小さい場合（Ｓ２０８にてＹＥＳ）は、中央値Ｖ（５０）および標準偏差σが算出され（Ｓ２１０）、中央値Ｖ（５０）および標準偏差σに基づいて、ノック判定レベルＶ（ＫＤ）が算出される（Ｓ２１２）。
【００９６】
すなわち、図１６に示すように、判定値Ｖ（ＫＸ）の補正が停止された状態において、ノック判定レベルＶ（ＫＤ）の算出が継続して行なわれる。そのため、ノック判定レベルＶ（ＫＤ）は、理想とするノック判定レベルとほぼ同じレベルである適切な値となる。これにより、判定値Ｖ（ＫＸ）の補正が再開される直後から、適切なノック判定レベルＶ（ＫＤ）に基づいて、判定値Ｖ（ＫＸ）が適切に補正される。そのため、１点火サイクルごとのノッキング判定における判定値を早期に適切な値にして、点火時期を適切にすることができる。
【００９７】
以上のように、本実施の形態に係る点火時期制御装置であるエンジンＥＣＵによれば、ノッキング判定の停止条件が成立していない場合、強度値ＬＯＧ（Ｖ）に基づいて、中央値Ｖ（５０）および標準偏差σが算出され、中央値Ｖ（５０）および標準偏差σに基づいて、ノック判定レベルＶ（ＫＤ）が算出される。ノック判定レベルＶ（ＫＤ）に基づいて、ノック占有率ＫＣ（ノッキングの発生した頻度）がカウントされて、ノック占有率ＫＣがしきい値ＫＣ（０）と比較された結果で、判定値Ｖ（ＫＸ）が補正される。そのため、１点火サイクルごとのノッキング判定における判定値を適切な値にして、点火時期を適切にすることができる。
なお、図１７に示すように、ノイズによる振動の強度が大きい場合は、ノッキング時の積算値の最大値とノイズによる積算値の最大値との差が小さく、ノック強度Ｎからはノッキングとノイズとを区別し難くなるおそれがある。そのため、積算値のピーク値Ｐの代わりに、図１８に示すように、振動波形における積算値の総合計（ノック検出ゲートにおけるノックセンサ３００の出力電圧値をすべて積算した値）を用いてノック強度Ｎを算出するようにしてもよい。すなわち、振動波形における積算値の総合計をＢＧＬにより除算して、ノック強度Ｎを算出するようにしてもよい。
【００９８】
図１８に示すように、ノイズによる振動の発生期間は、ノッキングによる振動の発生期間よりも短いので、ノッキングとノイズとでは、積算値の総合計は大きく異なり得る。したがって、積算値の総合計に基づいてノック強度Ｎを算出することにより、ノッキング時に算出されるノック強度Ｎと、ノイズにより算出されるノック強度Ｎとの差を大きくすることができる。これにより、ノッキングによる振動とノイズによる振動とを明確に区別することができる。
【００９９】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１００】
【図１】本発明の実施の形態に係る点火時期制御装置であるエンジンＥＣＵにより制御されるエンジンを示す概略構成図である。
【図２】ノッキング時にエンジンで発生する振動の周波数帯を示す図である。
【図３】図１のエンジンＥＣＵを示す制御ブロック図である。
【図４】エンジンの振動波形を示す図である。
【図５】エンジンＥＣＵのメモリに記憶されたノック波形モデルを示す図である。
【図６】振動波形とノック波形モデルとを比較した図である。
【図７】エンジンＥＣＵのメモリに記憶された判定値Ｖ（ＫＸ）のマップを示す図である。
【図８】強度値ＬＯＧ（Ｖ）の頻度分布を示す図（その１）である。
【図９】強度値ＬＯＧ（Ｖ）の頻度分布を示す図（その２）である。
【図１０】強度値ＬＯＧ（Ｖ）の頻度分布を示す図（その３）である。
【図１１】強度値ＬＯＧ（Ｖ）の頻度分布を示す図（その４）である。
【図１２】強度値ＬＯＧ（Ｖ）の頻度分布を作成するために用いられる強度値ＬＯＧ（Ｖ）を示す図である。
【図１３】図１のエンジンＥＣＵが実行するプログラムの制御構造を示すフローチャート（その１）である。
【図１４】図１のエンジンＥＣＵが実行するプログラムの制御構造を示すフローチャート（その２）である。
【図１５】ノック判定レベルＶ（ＫＤ）のタイミングチャート（その１）である。
【図１６】ノック判定レベルＶ（ＫＤ）のタイミングチャート（その２）である。
【図１７】ノッキング時の積算値とノイズによる積算値とを示す図（その１）である。
【図１８】ノッキング時の積算値とノイズによる積算値とを示す図（その２）である。
【符号の説明】
【０１０１】
１００  エンジン、１０４  インジェクタ、１０６  点火プラグ、１１０  クランクシャフト、１１６  吸気バルブ、１１８  排気バルブ、１２０  ポンプ、２００  エンジンＥＣＵ、３００  ノックセンサ、３０２  水温センサ、３０４  タイミングロータ、３０６  クランクポジションセンサ、３０８  スロットル開度センサ、３１４  エアフローメータ。
【図１】
2007198318.tif 000003
【図２】
2007198318.tif 000004
【図３】
2007198318.tif 000005
【図４】
2007198318.tif 000006
【図５】
2007198318.tif 000007
【図６】
2007198318.tif 000008
【図７】
2007198318.tif 000009
【図８】
2007198318.tif 000010
【図９】
2007198318.tif 000011
【図１０】
2007198318.tif 000012
【図１１】
2007198318.tif 000013
【図１２】
2007198318.tif 000014
【図１３】
2007198318.tif 000015
【図１４】
2007198318.tif 000016
【図１５】
2007198318.tif 000017
【図１６】
2007198318.tif 000018
【図１７】
2007198318.tif 000019
【図１８】
2007198318.tif 000020