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