(57)【特許請求の範囲】
【請求項１】
内燃機関の振動の強度を、複数の点火サイクルにおいて検出するための手段と、
前記強度の中央値を表わす第１の値を、前記強度に応じて更新することにより算出するための第１の算出手段と、
前記強度の標準偏差を表わす第２の値を、前記強度に応じて更新することにより算出するための第２の算出手段と、
前記第１の値および前記第２の値に応じた第３の値を算出するための第３の算出手段と、
前記強度および前記第３の値に応じた第４の値を算出するための第４の算出手段と、
予め定められる複数の判定値の中から選択された判定値および前記第４の値を比較した結果に応じて、前記内燃機関の点火時期を制御するための制御手段と、
前記第４の値と比較される判定値を変更するか否かを判定するための手段と、
前記第４の値と比較される判定値を変更すると判定された場合、変更前の判定値と変更後の判定値との相対的な大きさに応じたタイミングで、前記第４の値と比較される判定値を変更するための変更手段とを備え、
前記第１の算出手段は、前記第４の値と比較される判定値を変更すると判定された場合、前記第１の値がより速く変化するように更新するための更新手段を含み、
前記第２の算出手段は、前記第４の値と比較される判定値を変更すると判定された場合、前記第２の値の更新を停止するための停止手段とを含む、内燃機関の点火時期制御装置。
【請求項２】
前記更新手段は、予め定められた回数だけ前記第１の値がより速く変化するように更新するための手段を有し、
前記停止手段は、前記予め定められた回数だけ前記第２の値の更新を停止するための手段を有する、請求項１に記載の内燃機関の点火時期制御装置。
【請求項３】
前記内燃機関には、吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量を変更する機構が設けられ、
前記判定値は、前記吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量に応じて複数定められる、請求項１に記載の内燃機関の点火時期制御装置。
【請求項４】
前記判定値は、前記内燃機関の負荷および出力軸回転数に応じて複数定められる、請求項１に記載の内燃機関の点火時期制御装置。
【請求項５】
前記検出手段は、予め定められたクランク角の区間における前記内燃機関の振動の強度を検出するための手段を含み、
前記クランク角の区間の長さは、前記内燃機関の出力軸回転数に応じて複数定められ、
前記判定値は、前記クランク角の区間の長さに応じて複数定められる、請求項１に記載の内燃機関の点火時期制御装置。
【請求項６】
前記検出手段は、予め定められたクランク角の区間における前記内燃機関の振動の強度を検出するための手段を含み、
前記クランク角の区間は、前記内燃機関の出力軸回転数に応じて複数定められ、
前記判定値は、前記クランク角の区間に応じて複数定められる、請求項１に記載の内燃機関の点火時期制御装置。
【請求項７】
前記制御手段は、前記判定値よりも前記第４の値が大きいと、点火時期を遅角するための手段を含み、
前記変更手段は、
変更前の判定値が変更後の判定値に比べて大きい場合、前記第４の値と比較される判定値を変更すると判定されてから予め定められた時間が経過した後に前記第４の値と比較される判定値を変更するための手段と、
変更前の判定値が変更後の判定値に比べて小さい場合、前記第４の値と比較される判定値を変更すると判定されてから前記予め定められた時間が経過する前に前記第４の値と比較される判定値を変更するための手段とを含む、請求項１に記載の内燃機関の点火時期制御装置。
【請求項８】
内燃機関の振動の強度を、複数の点火サイクルにおいて検出するための手段と、
前記強度の中央値を表わす第１の値を、前記強度に応じて更新することにより算出するための第１の算出手段と、
前記強度の標準偏差を表わす第２の値を、前記強度に応じて更新することにより算出するための第２の算出手段と、
前記第１の値および前記第２の値に応じた第３の値を算出するための第３の算出手段と、
前記強度および前記第３の値に応じた第４の値を算出するための第４の算出手段と、
予め定められる複数の判定値の中から選択された判定値および前記第４の値を比較した結果に応じて、前記内燃機関の点火時期を制御するための制御手段と、
前記第４の値と比較される判定値を変更するか否かを判定するための手段と、
前記第４の値と比較される判定値を変更すると判定された場合、変更前の判定値と変更後の判定値との相対的な大きさに応じたタイミングで、前記第４の値と比較される判定値を変更するための変更手段とを備え、
前記第１の算出手段は、前記第４の値と比較される判定値を変更すると判定された場合、前記第１の値がより速く変化するように更新するための更新手段を含む、内燃機関の点火時期制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の点火時期制御装置に関し、特に、内燃機関の振動の強度から算出される値と判定値とを比較した結果に応じて点火時期を制御する技術に関する。
【背景技術】
【０００２】
従来より、ノッキング（ノック）の有無を判定する様々な方法が提案されている。たとえば、内燃機関より検出される振動の強度が、ノック判定値より大きいか否かによりノッキングの発生を判定する技術がある。しかしながら、内燃機関において検出される振動の強度は、内燃機関およびノックセンサなどの経年変化により変化し得る。また、内燃機関において検出される振動の強度は、内燃機関の個体毎に異なり得る。そのため、ノッキングの有無を精度よく判定するには、内燃機関において実際に検出される強度に応じてノック判定値を補正することが望ましい。
【０００３】
特開２００７−２５５１９５号公報（特許文献１）は、内燃機関で発生する振動の強度を複数回検出するための検出部と、検出部により検出された各強度に応じて、ノッキングに起因する振動の強度に関するノック強度を算出するための第１の算出部と、ノック強度と第１の判定値とを比較した結果に基づいて、内燃機関の点火時期を制御するための制御部と、検出部により検出された強度の中央値および標準偏差を算出するための第２の算出部と、標準偏差および予め定められた係数の積を中央値に加算して算出される第２の判定値が第１の判定値よりも大きい場合、制御部により点火時期が遅角される度合が大きくなるように、第１の判定値を補正するための補正部とを含む、内燃機関の点火時期制御装置を開示する。ノック強度は、振動の強度をＢＧＬ（Back Ground Level）で除算することにより算出される。ＢＧＬは、標準偏差と係数との積を中央値から減算することにより算出される。第１の判定値は、エンジン回転数と吸入空気量（負荷）とをパラメータとした運転状態により区分される領域毎に、マップとして記憶される。
【０００４】
この公報に記載の点火時期制御装置によると、内燃機関で発生する振動の強度が複数回検出される。検出された各強度に応じて、ノッキングに起因する振動の強度に関するノック強度が算出される。このノック強度と予め定められた判定値とを比較した結果に基づいて、内燃機関の点火時期が制御される。たとえば、ノック強度が判定値よりも大きいと点火時期が遅角され、ノック強度が判定値よりも小さいと点火時期が進角される。標準偏差および予め定められた係数の積を中央値に加算して算出される第２の判定値が第１の判定値よりも大きい場合、制御部により点火時期が遅角される度合が大きくなるように、第１の判定値が補正される。これにより、ノッキングが頻発したといえる状態において、振動の強度と比較される判定値が、内燃機関で発生する振動に対して過大になることを抑制することができる。そのため、点火時期の遅角を行ない易くすることができる。その結果、ノッキングの発生を抑制することができる。
【特許文献１】特開２００７−２５５１９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、特開２００７−２５５１９５号公報に記載の点火時期制御装置においては、ノック強度と比較される判定値が運転状態の変化に伴なってステップ的に変更され得る。したがって、たとえば判定値がステップ的に小さくなり得る。一方、ノック強度を算出するために用いられるＢＧＬは、実際の内燃機関の振動の強度に遅れて追従し得る。実際の内燃機関の振動の強度に対してＢＧＬの追従が遅れていると、算出されるノック強度が過大であったり過小であったりし得る。この場合、ノッキングが発生していないにもかかわらず点火時期が誤って遅角されたり、ノッキングが発生しているにもかからわらず点火時期が誤って進角されたりし得る。そのため、点火時期の精度が悪化し得る。
【０００６】
本発明は、上述の課題を解決するためになされたものであって、その目的は、点火時期を精度よく制御することができる内燃機関の点火時期制御装置を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明に係る内燃機関の点火時期制御装置は、内燃機関の振動の強度を、複数の点火サイクルにおいて検出するための手段と、強度の中央値を表わす第１の値を、強度に応じて更新することにより算出するための第１の算出手段と、強度の標準偏差を表わす第２の値を、強度に応じて更新することにより算出するための第２の算出手段と、第１の値および第２の値に応じた第３の値を算出するための第３の算出手段と、強度および第３の値に応じた第４の値を算出するための第４の算出手段と、予め定められる複数の判定値の中から選択された判定値および第４の値を比較した結果に応じて、内燃機関の点火時期を制御するための制御手段と、第４の値と比較される判定値を変更するか否かを判定するための手段とを備える。第１の算出手段は、第４の値と比較される判定値を変更すると判定された場合、第１の値がより速く変化するように更新するための更新手段を含む。第２の算出手段は、第４の値と比較される判定値を変更すると判定された場合、第２の値の更新を停止するための停止手段とを含む。
【０００８】
この構成によると、内燃機関の振動の強度が、複数の点火サイクルにおいて検出される。検出された強度の中央値を表わす第１の値および標準偏差を表わす第２の値が算出される。第１の値および第２の値は、強度に応じて更新されることにより算出される。第１の値および第２の値に応じた第３の値が算出される。これにより、振動の強度の基準となるＢＧＬを得ることができる。強度および第３の値に応じた第４の値が算出される。たとえば、強度を第３の値で除算することにより第４の値が算出される。これにより、検出された強度と振動の強度の基準との相対的な大きさを示す第４の値を得ることができる。第４の値および判定値を比較した結果に応じて、内燃機関の点火時期が制御される。たとえば、第４の値が判定値よりも大きい場合、ノッキングが発生した可能性が高い。そのため、点火時期が遅角される。一方、第４の値が判定値よりも小さい場合、点火時期が進角される。第４の値と比較される判定値は、予め定められる複数の判定値の中から選択される。第４の値と比較される判定値を変更すると判定された場合、中央値を表わす第１の値がより速く変化するように更新されるとともに、標準偏差を表わす第２の値の更新が停止される。これにより、中央値を表わす第１の値を、内燃機関において実際に発生する強度に速やかに追従させることができる。また、検出される強度の急変に伴なって突発的に大きくなり得る標準偏差を表わす第２の値が変化しないようにすることができる。そのため、実際に内燃機関で発生する振動に対する第３の値の追従遅れを軽減することができる。そのため、実際に内燃機関で発生する振動に精度よく対応した第４の値を得ることができる。その結果、点火時期が誤って進角もしくは遅角される頻度を低減し、点火時期を精度よく制御することができる内燃機関の点火時期制御装置を提供することができる。
【０００９】
第２の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加え、更新手段は、予め定められた回数だけ第１の値がより速く変化するように更新するための手段を有する。停止手段は、予め定められた回数だけ第２の値の更新を停止するための手段を有する。
【００１０】
この構成によると、予め定められた回数だけ中央値を表わす第１の値がより速く変化するように更新されるとともに、標準偏差を表わす第２の値の更新が停止される。これにより、第１の値の更新を速くするとともに第２の値の更新を停止する期間を制限することができる。そのため、実際に内燃機関で発生する振動に精度よく対応した第４の値を得るために必要な時間だけ、第１の値の更新を速くするとともに第２の値の更新を停止することができる。
【００１１】
第３の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加え、内燃機関には、吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量を変更する機構が設けられる。判定値は、吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量に応じて複数定められる。
【００１２】
この構成によると、内燃機関で発生する振動の強度は吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量に応じて変化するため、判定値は、吸気バルブおよび排気バルブのうちの少なくともいずれか一方のリフト量に応じて複数定められる。これにより、ノッキングが発生したか否かを精度よく判定し、点火時期を精度よく判定することができる。
【００１３】
第４の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加え、判定値は、内燃機関の負荷および出力軸回転数に応じて複数定められる。
【００１４】
この構成によると、内燃機関で発生する振動の強度は内燃機関の負荷および出力軸回転数に応じて変化するため、判定値は、内燃機関で発生する振動の強度は内燃機関の負荷および出力軸回転数に応じて複数定められる。これにより、ノッキングが発生したか否かを精度よく判定し、点火時期を精度よく判定することができる。
【００１５】
第５の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加え、検出手段は、予め定められたクランク角の区間における内燃機関の振動の強度を検出するための手段を含む。クランク角の区間の長さは、内燃機関の出力軸回転数に応じて複数定められる。判定値は、クランク角の区間の長さに応じて複数定められる。
【００１６】
この構成によると、予め定められたクランク角の区間において、内燃機関の振動の強度が検出される。クランク角の区間の長さは、内燃機関の出力軸回転数に応じて複数定められる。内燃機関で発生する振動の強度は、強度が検出されるクランク角の区間の長さに応じて変化し得るため、判定値は、クランク角の区間の長さに応じて複数定められる。これにより、ノッキングが発生したか否かを精度よく判定し、点火時期を精度よく判定することができる。
【００１７】
第６の発明に係る内燃機関の点火時期制御装置においては、第１の発明の構成に加え、検出手段は、予め定められたクランク角の区間における内燃機関の振動の強度を検出するための手段を含む。クランク角の区間は、内燃機関の出力軸回転数に応じて複数定められる。判定値は、クランク角の区間に応じて複数定められる。
【００１８】
この構成によると、予め定められたクランク角の区間において、内燃機関の振動の強度が検出される。クランク角の区間は、内燃機関の出力軸回転数に応じて複数定められる。内燃機関で発生する振動の強度は、強度が検出されるクランク角の区間に応じて変化し得るため、判定値は、クランク角の区間に応じて複数定められる。これにより、ノッキングが発生したか否かを精度よく判定し、点火時期を精度よく判定することができる。
【００１９】
第７の発明に係る内燃機関の点火時期制御装置は、第１〜６のいずれかの発明の構成に加え、第４の値と比較される判定値を変更すると判定された場合、変更前の判定値と変更後の判定値との相対的な大きさに応じたタイミングで、第４の値と比較される判定値を変更するための変更手段をさらに備える。
【００２０】
この構成によると、第４の値と比較される判定値を変更すると判定された場合、変更前の判定値と変更後の判定値との相対的な大きさに応じたタイミングで、第４の値と比較される判定値が変更される。これにより、たとえば、判定値と比較される第４の値が実際の内燃機関の振動の強度に対して一時的に大きく算出され得る場合には、大きい判定値がより長く用いられるようにすることができる。そのため、点火時期を誤って遅角する頻度を低減することができる。
【００２１】
第８の発明に係る内燃機関の点火時期制御装置においては、第７の発明の構成に加え、制御手段は、判定値よりも第４の値が大きいと、点火時期を遅角するための手段を含む。変更手段は、変更前の判定値が変更後の判定値に比べて大きい場合、第４の値と比較される判定値を変更すると判定されてから予め定められた時間が経過した後に第４の値と比較される判定値を変更するための手段と、変更前の判定値が変更後の判定値に比べて小さい場合、第４の値と比較される判定値を変更すると判定されてから予め定められた時間が経過する前に第４の値と比較される判定値を変更するための手段とを含む。
【００２２】
この構成によると、変更前の判定値が変更後の判定値に比べて大きい場合、判定値を変更するタイミングが遅延される。変更前の判定値が変更後の判定値に比べて小さい場合、判定値が速やかに変更される。これにより、判定値と比較される第４の値が実際の内燃機関の振動の強度に対して一時的に大きく算出され得る場合には、大きい判定値がより長く用いられるようにすることができる。そのため、点火時期を誤って遅角する頻度を低減することができる。
【００２３】
第９の発明に係る内燃機関の点火時期制御装置は、内燃機関の振動の強度を、複数の点火サイクルにおいて検出するための手段と、強度の中央値を表わす第１の値を、強度に応じて更新することにより算出するための第１の算出手段と、強度の標準偏差を表わす第２の値を、強度に応じて更新することにより算出するための第２の算出手段と、第１の値および第２の値に応じた第３の値を算出するための第３の算出手段と、強度および第３の値に応じた第４の値を算出するための第４の算出手段と、予め定められる複数の判定値の中から選択された判定値および第４の値を比較した結果に応じて、内燃機関の点火時期を制御するための制御手段と、第４の値と比較される判定値を変更するか否かを判定するための手段とを備える。第１の算出手段は、第４の値と比較される判定値を変更すると判定された場合、第１の値がより速く変化するように更新するための更新手段を含む。
【００２４】
この構成によると、内燃機関の振動の強度が、複数の点火サイクルにおいて検出される。検出された強度の中央値を表わす第１の値および標準偏差を表わす第２の値が算出される。第１の値および第２の値は、強度に応じて更新されることにより算出される。第１の値および第２の値に応じた第３の値が算出される。これにより、振動の強度の基準となるＢＧＬを得ることができる。強度および第３の値に応じた第４の値が算出される。たとえば、強度を第３の値で除算することにより第４の値が算出される。これにより、検出された強度と振動の強度の基準との相対的な大きさを示す第４の値を得ることができる。第４の値および判定値を比較した結果に応じて、内燃機関の点火時期が制御される。たとえば、第４の値が判定値よりも大きい場合、ノッキングが発生した可能性が高い。そのため、点火時期が遅角される。一方、第４の値が判定値よりも小さい場合、点火時期が進角される。第４の値と比較される判定値は、予め定められる複数の判定値の中から選択される。第４の値と比較される判定値を変更すると判定された場合、中央値を表わす第１の値がより速く変化するように更新される。これにより、中央値を表わす第１の値を、内燃機関において実際に発生する強度に速やかに追従させることができる。そのため、実際に内燃機関で発生する振動に対する第３の値の追従遅れを軽減することができる。そのため、実際に内燃機関で発生する振動に精度よく対応した第４の値を得ることができる。その結果、点火時期が誤って進角もしくは遅角される頻度を低減し、点火時期を精度よく制御することができる内燃機関の点火時期制御装置を提供することができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰返さない。
【００２６】
図１を参照して、本発明の実施の形態に係る点火時期制御装置を搭載した車両のエンジン１００について説明する。このエンジン１００には複数の気筒が設けられる。本実施の形態に係る点火時期制御装置は、たとえばエンジンＥＣＵ（Electronic Control Unit）２００が実行するプログラムにより実現される。なお、エンジンＥＣＵ２００により実行されるプログラムをＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）などの記録媒体に記録して市場に流通させてもよい。
【００２７】
エンジン１００は、エアクリーナ１０２から吸入された空気とインジェクタ１０４から噴射される燃料との混合気を、燃焼室内で点火プラグ１０６により点火して燃焼させる内燃機関である。
【００２８】
点火時期は、エンジン１００の運転状態に応じて設定される。以下、エンジン１００の運転状態に応じて設定される点火時期を基本点火時期とも記載する。ノッキングが発生した場合などには、点火時期は基本点火時期から遅角される。
【００２９】
混合気が燃焼すると、燃焼圧によりピストン１０８が押し下げられ、クランクシャフト１１０が回転する。燃焼後の混合気（排気ガス）は、三元触媒１１２により浄化された後、車外に排出される。エンジン１００に吸入される空気の量は、スロットルバルブ１１４により調整される。吸気バルブ１１６が開いた際に燃焼室に混合気が導入される。排気バルブ１１８が開いた際に燃焼室から排気ガスが排出される。
【００３０】
吸気バルブ１１６のリフト量は、ＶＶＬ（Variable Valve Lift）機構１２０により変更される。リフト量は、たとえば負荷（負荷率）をパラメータに有するマップに従って決定される。また、たとえばエンジン１００の冷却水の温度がしきい値より低い場合には、予め定められた値がリフト量に定められる。なお、リフト量の決定方法はこれらに限らず、その他、周知の技術を利用すればよい。
【００３１】
また、リフト量に加えて吸気バルブ１１６の開閉タイミング（位相）を変更するようにしてもよい。吸気バルブ１１６の他、排気バルブ１１８のリフト量もしくは開閉タイミングを変更するようにしてもよい。
【００３２】
エンジン１００は、エンジンＥＣＵ２００により制御される。エンジンＥＣＵ２００には、ノックセンサ３００と、水温センサ３０２と、タイミングロータ３０４に対向して設けられたクランクポジションセンサ３０６と、スロットル開度センサ３０８と、車速センサ３１０と、イグニッションスイッチ３１２と、エアフローメータ３１４とが接続されている。
【００３３】
ノックセンサ３００は、エンジン１００のシリンダブロックに設けられる。ノックセンサ３００は、圧電素子により構成されている。ノックセンサ３００は、エンジン１００の振動により電圧を発生する。電圧の大きさは、振動の大きさと対応した大きさとなる。ノックセンサ３００は、電圧を表わす信号をエンジンＥＣＵ２００に送信する。水温センサ３０２は、エンジン１００のウォータージャケット内の冷却水の温度を検出し、検出結果を表わす信号を、エンジンＥＣＵ２００に送信する。
【００３４】
タイミングロータ３０４は、クランクシャフト１１０に設けられており、クランクシャフト１１０と共に回転する。タイミングロータ３０４の外周には、予め定められた間隔で複数の突起が設けられている。クランクポジションセンサ３０６は、タイミングロータ３０４の突起に対向して設けられている。タイミングロータ３０４が回転すると、タイミングロータ３０４の突起と、クランクポジションセンサ３０６とのエアギャップが変化するため、クランクポジションセンサ３０６のコイル部を通過する磁束が増減し、コイル部に起電力が発生する。クランクポジションセンサ３０６は、起電力を表わす信号を、エンジンＥＣＵ２００に送信する。エンジンＥＣＵ２００は、クランクポジションセンサ３０６から送信された信号に基づいて、クランク角およびクランクシャフト１１０の回転数（エンジン回転数ＮＥ）を検出する。
【００３５】
スロットル開度センサ３０８は、スロットル開度を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。車速センサ３１０は、車輪（図示せず）の回転数を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。エンジンＥＣＵ２００は、車輪の回転数から、車速を算出する。イグニッションスイッチ３１２は、エンジン１００を始動させる際に、運転者によりオン操作される。エアフローメータ３１４は、エンジン１００に吸入される空気量を検出し、検出結果を表わす信号をエンジンＥＣＵ２００に送信する。エンジン１００に吸入される空気量から、エンジン１００の負荷が算出される。なお、負荷を算出する方法は、周知の一般的な技術を利用すればよいため、ここではその詳細な説明は繰り返さない。
【００３６】
エンジンＥＣＵ２００は、電源である補機バッテリ３２０から供給された電力により作動する。エンジンＥＣＵ２００は、各センサおよびイグニッションスイッチ３１２から送信された信号、ＲＯＭ（Read Only Memory）２０２に記憶されたマップおよびプログラムに基づいて演算処理を行ない、エンジン１００が所望の運転状態となるように、機器類を制御する。
【００３７】
本実施の形態において、エンジンＥＣＵ２００は、ノックセンサ３００から送信された信号およびクランク角に基づいて、予め定められたノック検出ゲート（予め定められた第１クランク角から予め定められた第２クランク角までの区間）におけるエンジン１００の振動の波形（以下、振動波形と記載する）を検出し、検出された振動波形に基づいて、エンジン１００にノッキングが発生したか否かを判定する。
【００３８】
図２に示すように、ノック検出ゲートは、エンジン回転数ＮＥに応じて定められる。本実施の形態においては、エンジン回転数ＮＥがＮＥ１より低い場合、ノック検出ゲートはＡＴＤＣ（After Top Dead of Center）５°ＣＡ（Crank Angle）〜ＡＴＤＣ８０°ＣＡであり、ノック検出ゲートの長さは７５°ＣＡである。
【００３９】
エンジン回転数ＮＥがＮＥ１以上であって、ＮＥ２未満である場合、ノック検出ゲートはＡＴＤＣ１０°ＣＡ〜ＡＴＤＣ８５°ＣＡであり、ノック検出ゲートの長さは７５°ＣＡである。
【００４０】
エンジン回転数ＮＥがＮＥ２以上である場合、ノック検出ゲートはＡＴＤＣ１５°ＣＡ〜ＡＴＤＣ７５°ＣＡであり、ノック検出ゲートの長さは６０°ＣＡである。なお、図２に示すノック検出ゲートは一例であって、これに限らない。
【００４１】
ノッキングが発生した場合、図３に示すように、エンジン１００には、周波数帯Ａ〜Ｃに含まれるの周波数の振動が発生する。そこで、本実施の形態においては、周波数帯Ａ〜Ｃを含む広域の周波数帯Ｄにおける振動が検出される。
【００４２】
図４に示すように、エンジンＥＣＵ２００は、Ａ／Ｄ（アナログ／デジタル）変換部４００と、バンドパスフィルタ４１０と、積算部４２０とを含む。
【００４３】
Ａ／Ｄ変換部４００は、アナログ信号をデジタル信号に変換する。バンドパスフィルタ４１０は、ノックセンサ３００から送信された信号のうち、周波数帯Ｄの信号のみを通過させる。すなわち、バンドパスフィルタ４１０により、ノックセンサ３００が検出した振動から、周波数帯Ｄの振動のみが抽出される。
【００４４】
積算部４２０は、バンドパスフィルタ４１０により選別された信号、すなわち振動の強度を、クランク角度で５°ＣＡ分づつ積算した積算値（以下、５°ＣＡ積算値とも記載する）を算出する。これにより、図５に示すように、周波数帯Ｄの振動波形が検出される。
【００４５】
検出された振動波形は、振動波形がノック波形モデルに類似する度合を表わす（振動波形の形状とノック波形モデルの形状との差を表わす）相関係数Ｋを算出するために用いられる。図６に示すように、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角、すなわち強度がピークになるクランク角以降のクランク角の範囲において、検出された振動波形とノック波形モデルとを比較することにより、相関係数Ｋが算出される。
【００４６】
ノック波形モデルは、ノッキングが発生した場合のエンジン１００の振動波形の基準として定められる。本実施の形態において、ノック波形モデルの強度は、振動波形と比較する度に設定される。より具体的には、ノック波形モデルにおける強度の最大値が、振動波形において、隣接する強度に比べて大きい強度（強度のピーク値）と同じになるように設定される。
【００４７】
一方、最大値以外の強度は、エンジン回転数ＮＥおよびエンジン１００の負荷に応じて設定される。より具体的には、隣接するクランク角における強度の減衰率が、エンジン回転数ＮＥおよびエンジン１００の負荷をパラメータに有するマップに従って設定される。
【００４８】
たとえば、２５％の減衰率で、クランク角で２０度分の強度を設定する場合、図７に示すように、２５％ずつ強度が減少する。なお、ノック波形モデルの強度を設定する方法はこれに限らない。
【００４９】
振動波形における強度とノック波形モデルにおける強度との差の絶対値（ズレ量）をクランク角ごと（５°ＣＡごと）に算出することにより、相関係数Ｋが算出される。なお、５°ＣＡ以外のクランク角ごとに振動波形における強度とノック波形モデルにおける強度との差の絶対値を算出するようにしてもよい。
【００５０】
振動波形における強度とノック波形モデルにおける強度とのクランク角ごとの差の絶対値をΔＳ（Ｉ）（Ｉは自然数）とおく。図８において斜線で示すように、ノック波形モデルの振動の強度を合計した値、すなわち、ノック波形モデルの面積をＳとおく。相関係数Ｋは、下記の式１を用いて算出される。
【００５１】
Ｋ＝（Ｓ−ΣΔＳ（Ｉ））／Ｓ・・・（１）
ΣΔＳ（Ｉ）は、ΔＳ（Ｉ）の総和である。なお、相関係数Ｋの算出方法はこれに限らない。
【００５２】
本実施の形態においては、相関係数Ｋの他、ノック強度Ｎが算出される。ノック強度Ｎは、図９において斜線で示すように、ノック検出ゲート分の強度（５°ＣＡ積算値）を合計した積算値ｌｐｋｋｎｋを用いて算出される。なお、積算値ｌｐｋｋｎｋの代わりに、振動波形における最大の強度を用いるようにしてもよい。
【００５３】
エンジン１００にノッキングが発生していない状態におけるエンジン１００の振動の強度を表わす値をＢＧＬ（Back Ground Level）と表わす。ノック強度Ｎは、下記の式２を用いて算出される。
【００５４】
Ｎ＝ｌｐｋｋｎｋ／ＢＧＬ・・・（２）
なお、ノック強度Ｎの算出方法はこれに限らない。ＢＧＬは、各積算値ｌｐｋｋｎｋが検出された頻度（回数、確率ともいう）を表わす頻度分布において、標準偏差σと正の係数（たとえば「１」）との積を、中央値ＶＭから減算した値として算出される。なお、ＢＧＬの算出方法はこれに限らず、ＢＧＬをＲＯＭ２０２に記憶しておくようにしてもよい。また、頻度分布を作成する際、積算値ｌｐｋｋｎｋの対数変換値が用いられる。
【００５５】
したがって、図１０に示すようように、ノック強度Ｎは、積算値ｌｐｋｋｎｋの頻度分布において、積算値ｌｐｋｋｎｋとＢＧＬとの差として表わされる。
【００５６】
本実施の形態においては、振動波形の形状に基づいて算出される相関係数Ｋおよび振動波形の強度に基づいて算出されるノック強度Ｎを用いて、ノッキングが発生したか否かが１点火毎に判定される。ノッキングが発生したか否かは気筒毎に判定される。相関係数Ｋがしきい値Ｋ１以上であり、かつノック強度Ｎが判定値ＶＪ以上であると、ノッキングが発生したと判定される。もしそうでないと、ノッキングが発生していないと判定される。
【００５７】
ノッキングが発生したと判定された場合、予め定められた量だけ点火時期が遅角される。ノッキングが発生していないと判定された場合、予め定められた量だけ点火時期が進角される。
【００５８】
図１１に示すように、判定値ＶＪは、エンジン回転数ＮＥと負荷ＫＬとにより区分される領域毎に定められる。本実施の形態においては、低回転（ＮＥ＜ＮＥ１）、中回転（ＮＥ１≦ＮＥ＜ＮＥ２）、高回転（ＮＥ２≦ＮＥ）、低負荷（ＫＬ＜ＫＬ１）、中負荷（ＫＬ１≦ＫＬ＜ＫＬ２）、高負荷（ＫＬ２≦ＫＬ）で区分することにより、気筒毎に９つの領域が設けられる。したがって、エンジン回転数ＮＥと負荷ＫＬとに応じて、ＶＪ１１〜ＶＪ３３の９つの判定値ＶＪが定められる。
【００５９】
なお、本実施の形態においては、ノック検出ゲートが定められる領域の境界に用いられるエンジン回転数ＮＥ１およびＮＥ２が、判定値ＶＪが定められる領域の境界として用いられる。したがって、ノック検出ゲートに応じて、判定値ＶＪが定められるといえる。ノック検出ゲートが定められる領域を区分するエンジン回転数ＮＥと判定値ＶＪが定められる領域を区分するエンジン回転数ＮＥとが異なっていてもよい。
【００６０】
また、本実施の形態においては、エンジン１００の冷却水の温度がしきい値より低い状態において予め定められた値がリフト量に定められると、予め定められた判定値ＶＪが用いられる。なお、判定値ＶＪの設定方法はこれらに限らない。エンジン回転数ＮＥおよび負荷ＫＬ以外のパラメータを用いて、判定値ＶＪが定められる領域を区分するようにしてもよい。
【００６１】
エンジン１００もしくは車両の出荷時において、ＲＯＭ２０２に記憶される判定値ＶＪ（出荷時における判定値ＶＪの初期値）には、予め実験などにより定められる値が用いられる。ところが、ノックセンサ３００の出力値のばらつきや劣化などにより、エンジン１００で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値ＶＪを補正し、実際に検出される強度に応じた判定値ＶＪを用いてノッキングが発生したか否かを判定する必要がある。そこで、本実施の形態においては、予め定められた回数ＩＧＮ１（たとえば２００回）の点火サイクル毎に判定値ＶＪが補正（学習）される。判定値ＶＪは、各領域において補正される。
【００６２】
図１２を参照して、エンジンＥＣＵ２００の機能について説明する。なお、以下に説明する機能はソフトウェアにより実現するようにしてもよく、ハードウェアにより実現するようにしてもよい。
【００６３】
エンジンＥＣＵ２００は、点火時期設定部５００と、クランク角検出部６００と、強度検出部６０２と、波形検出部６０４と、相関係数算出部６０６と、積算値算出部６０８と、ノック強度算出部６１０と、ノッキング判定部６１２と、点火時期制御部６１４と、変更判定部６１６と、変更部６１８と、フィードバック部７００とを備える。
【００６４】
点火時期設定部５００は、エンジン１００の運転状態に応じて基本点火時期を設定する。基本点火時期は、エンジン回転数ＮＥおよび負荷ＫＬをパラメータとして有するマップに従って設定される。
【００６５】
クランク角検出部６００は、クランクポジションセンサ３０６から送信された信号に基づいて、クランク角を検出する。
【００６６】
強度検出部６０２は、ノックセンサ３００から送信された信号に基づいて、ノック検出ゲートにおける振動の強度を検出する。振動の強度は、クランク角に対応させて検出される。また、振動の強度は、ノックセンサ３００の出力電圧値で表される。なお、ノックセンサ３００の出力電圧値と対応した値で振動の強度を表してもよい。
【００６７】
波形検出部６０４は、振動の強度をクランク角で５°ＣＡ分づつ積算することにより、ノック検出ゲートにおける振動波形を検出する。
【００６８】
相関係数算出部６０６は、振動波形がノック波形モデルに類似する度合を表わす（振動波形の形状とノック波形モデルの形状との差を表わす）相関係数Ｋを算出する。
【００６９】
積算値算出部６０８は、振動波形における強度（５°ＣＡ積算値）をノック検出ゲート分だけ合計した積算値ｌｐｋｋｎｋを算出する。
【００７０】
ノック強度算出部６１０は、積算値ｌｐｋｋｎｋを用いて、ノック強度Ｎを算出する。ノッキング判定部６１２は、相関係数Ｋおよびノック強度Ｎを用いて、ノッキングが発生したか否かを１点火毎に判定する。相関係数Ｋがしきい値Ｋ１以上であり、かつノック強度Ｎが判定値ＶＪ以上であると、ノッキングが発生したと判定される。もしそうでないと、ノッキングが発生していないと判定される。
【００７１】
点火時期制御部６１４は、ノッキングが発生したか否かに応じて点火時期を補正することにより制御する。ノッキングが発生したと判定された場合、予め定められた量だけ点火時期が遅角される。ノッキングが発生していないと判定された場合、予め定められた量だけ点火時期が進角される。
【００７２】
変更判定部６１６は、ノック強度Ｎと比較される判定値ＶＪを変更するか否かを判定する。判定値ＶＪを変更するか否かは、エンジン１００の運転状態、すなわちエンジン回転数ＮＥ、負荷ＫＬおよび吸気バルブ１１６のリフト量などに基づいて判定される。
【００７３】
変更部６１８は、ノック強度Ｎと比較される判定値ＶＪを変更すると判定された場合、変更前の判定値ＶＪと変更後の判定値ＶＪＴの相対的な大きさに応じたタイミングで判定値ＶＪを変更する。
【００７４】
変更前の判定値ＶＪが変更後の判定値ＶＪに比べて大きい場合、図１３に示すように、時間Ｔ１において判定値ＶＪを変更すると判定されてから、予め定められた回数ＩＧＮ２（例えば１０回）の点火サイクル（予め定められた時間）が経過した時間Ｔ２に判定値ＶＪが変更される。一方、変更前の判定値ＶＪが変更後の判定値ＶＪに比べて小さい場合、時間Ｔ３において判定値ＶＪを変更すると判定された直後に判定値ＶＪが変更される。すなわち、予め定められた回数ＩＧＮ２の点火サイクルが経過する前に判定値ＶＪが変更される。なお、判定値ＶＪを変更するタイミングはこれらに限らない。
【００７５】
フィードバック部７００は、ノック強度Ｎと比較される判定値ＶＪを設定する。フィードバック部７００は、図１２に示すように、頻度分布作成部７０２と、中央値算出部７０４と、標準偏差算出部７０６と、ＢＧＬ算出部７０８と、ノック判定レベル算出部７１０と、カウント部７１２と、補正部７１４とを含む。
【００７６】
頻度分布作成部７０２は、図１４に示すように、各点火サイクルにおいて算出された積算値ｌｐｋｋｎｋの頻度分布を作成する。頻度分布を作成する際には、積算値ｌｐｋｋｎｋの対数変換値が用いられる。
【００７７】
中央値算出部７０４は、積算値ｌｐｋｋｎｋの中央値ＶＭを算出する。中央値ＶＭは、下記の式３を用いて１点火サイクル毎に算出される。
【００７８】
ＶＭ（ｉ）＝ＶＭ（ｉ−１）＋（ｌｐｋｋｎｋ−ＶＭ（ｉ−１））／Ｘ・・・（３）
式３においてＶＭ（ｉ）は今回値を示す。ＶＭ（ｉ−１）は前回値を示す。Ｘは正の値である。すなわち、中央値ＶＭは、積算値ｌｐｋｋｎｋに応じて定められる更新量（ｌｐｋｋｎｋ−ＶＭ（ｉ−１））／Ｘだけ更新することにより算出される。Ｘが小さくなることにより、中央値ＶＭの更新量が大きくなる。
【００７９】
なお、式３を用いて算出される中央値ＶＭは、複数（たとえば２００点火サイクル）の積算値ｌｐｋｋｎｋに基づいて算出される中央値を表わす近似値である。したがって、式３を用いて算出される中央値ＶＭは、実際の中央値とは異なり得る。
【００８０】
さらに、中央値算出部７０４は、ノック強度Ｎと比較される判定値ＶＪを変更すると判定された場合、予め定められた回数ＩＧＮ３（たとえばＩＧＮ３＝ＩＧＮ２＜ＩＧＮ１）の点火サイクルの間、中央値ＶＭの更新量を大きくする。すなわち、より速く中央値ＶＭが変化するように更新する。なお、更新量を大きくする代わりにもしくは加えて、更新する回数および頻度を増やすようにしてもよい。
【００８１】
標準偏差算出部７０６は、積算値ｌｐｋｋｎｋの標準偏差σを算出する。標準偏差σは、下記の式４を用いて１点火サイクル毎に算出される。
【００８２】
σ（ｉ）＝σ（ｉ−１）＋（ｌｐｋｋｎｋ−σ（ｉ−１））／Ｙ・・・（４）
式４においてσ（ｉ）は今回値を示す。σ（ｉ−１）は前回値を示す。Ｙは正の値である。すなわち、標準偏差σは、積算値ｌｐｋｋｎｋに応じて定められる更新量（ｌｐｋｋｎｋ−σ（ｉ−１））／Ｙだけ更新することにより算出される。
【００８３】
なお、式４を用いて算出される標準偏差σは、複数（たとえば２００点火サイクル）の積算値ｌｐｋｋｎｋに基づいて算出される標準偏差を表わす近似値である。したがって、式４を用いて算出される標準偏差σは、実際の標準偏差とは異なり得る。
【００８４】
さらに、標準偏差算出部７０６は、ノック強度Ｎと比較される判定値ＶＪを変更すると判定された場合、予め定められた回数ＩＧＮ３の点火サイクルの間、標準偏差σの更新を停止する。
【００８５】
なお、式３および式４を用いて中央値ＶＭおよび標準偏差σを算出する代わりに、以下の算出方法を用いるようにしてもよい。
【００８６】
今回算出された積算値ｌｐｋｋｎｋが前回算出された中央値ＶＭよりも大きい場合、前回算出された中央値ＶＭに予め定められた値Ｃ１を加算した値が、今回の中央値ＶＭとして算出される。逆に、今回算出された積算値ｌｐｋｋｎｋが前回算出された中央値ＶＭよりも小さい場合、前回算出された中央値ＶＭから予め定められた値Ｃ２（たとえばＣ２はＣ１と同じ値）を減算した値が、今回の中央値ＶＭとして算出される。
【００８７】
今回算出された積算値ｌｐｋｋｎｋが、前回算出された中央値ＶＭよりも小さく、かつ前回算出された中央値ＶＭから前回算出された標準偏差σを減算した値よりも大きい場合、前回算出された標準偏差σから予め定められた値Ｃ３を２倍した値を減算した値が、今回の標準偏差σとして算出される。逆に、今回算出された積算値ｌｐｋｋｎｋが、前回算出された中央値ＶＭよりも大きい場合、または前回算出された中央値ＶＭから前回算出された標準偏差σを減算した値よりも小さい場合、前回算出された標準偏差σに予め定められた値Ｃ４（たとえばＣ４はＣ３と同じ値）を加算した値が、今回の標準偏差σとして算出される。中央値ＶＭおよび標準偏差σの初期値は、予め設定された値であってもよいし、「０」であってもよい。
【００８８】
ＢＧＬ算出部７０８は、図１４に示すように、標準偏差σを中央値ＶＭから減算することによりＢＧＬを算出する。
【００８９】
ノック判定レベル算出部７１０は、中央値ＶＭおよび標準偏差σを用いて、ノック判定レベルＶＫＤを算出（設定）する。図１４に示すように、中央値ＶＭに正の係数Ｕ（Ｕは定数で、たとえばＵ＝３）と標準偏差σとの積を加算した値が、ノック判定レベルＶＫＤとなる。なお、ノック判定レベルＶＫＤの算出方法はこれに限らない。
【００９０】
係数Ｕは、実験などより得られたデータや知見から求められた係数である。Ｕ＝３とした場合のノック判定レベルＶＫＤよりも大きい積算値ｌｐｋｋｎｋが、実際にノッキングが発生した点火サイクルにおける積算値ｌｐｋｋｎｋと略一致する。なお、係数Ｕに「３」以外の値を用いるようにしてもよい。
【００９１】
カウント部７１２は、予め定められた回数ＩＧＮ１の点火サイクル（たとえば２００点火サイクル）中の、ノック判定レベルＶＫＤ以上の積算値ｌｐｋｋｎｋの頻度を、ノックカウント値ＫＣとしてカウントする。なお、ノック判定レベルＶＫＤ以上の積算値ｌｐｋｋｎｋの割合をカウントするようにしてもよい。
【００９２】
補正部７１４は、ノックカウント値ＫＣがしきい値ＫＣ１以上である場合、予め定められた補正量Ａ１だけ小さくなるように、判定値ＶＪを補正する。また、補正部７１４は、ノックカウント値ＫＣがしきい値ＫＣ１よりも小さい場合、予め定められた補正量Ａだけ大きくなるように判定値ＶＪを補正する。
【００９３】
図１５〜図１７を参照して、エンジンＥＣＵ２００が実行するプログラムの制御構造について説明する。
【００９４】
ステップ（以下、ステップをＳと略す）１００にて、エンジンＥＣＵ２００は、クランクポジションセンサ３０６から送信された信号に基づいて、クランク角を検出する。Ｓ１０２にて、エンジンＥＣＵ２００は、ノックセンサ３００から送信された信号に基づいて、クランク角に対応させて、エンジン１００の振動の強度を検出する。
【００９５】
Ｓ１０４にて、エンジンＥＣＵ２００は、ノックセンサ３００の出力電圧値（振動の強度を表わす値）を、クランク角で５°ＣＡごとに（５°ＣＡ分だけ）積算した５°ＣＡ積算値を算出することにより、エンジン１００の振動波形を検出する。
【００９６】
Ｓ１０６にて、エンジンＥＣＵ２００は、相関係数Ｋを算出する。Ｓ１０８にて、エンジンＥＣＵ２００は、積算値ｌｐｋｋｎｋを算出する。Ｓ１１０にて、エンジンＥＣＵ２００は、ノック強度Ｎを算出する。
【００９７】
Ｓ１２０にて、エンジンＥＣＵ２００は、相関係数Ｋがしきい値Ｋ１以上であり、かつノック強度Ｎが判定値ＶＪ以上であるか否かを判定する。相関係数Ｋがしきい値Ｋ１以上であり、かつノック強度Ｎが判定値ＶＪ以上であると（Ｓ１２０にてＹＥＳ）、処理はＳ１２２に移される。もしそうでないと（Ｓ１２０にてＮＯ）、処理はＳ１２６に移される。
【００９８】
Ｓ１２２にて、エンジンＥＣＵ２００は、エンジン１００にノッキングが発生したと判定する。Ｓ１２４にて、エンジンＥＣＵ２００は、点火時期を遅角する。Ｓ１２６にて、エンジンＥＣＵ２００は、エンジン１００にノッキングが発生していないと判定する。Ｓ１２８にて、エンジンＥＣＵ２００は、点火時期を進角する。
【００９９】
図１６を参照して、Ｓ２００にて、エンジンＥＣＵ２００は、ノック強度Ｎと比較される判定値ＶＪを変更すると判定されてからの点火サイクルの回数が、予め定められた回数ＩＧＮ３以上であるか否かを判定する。
【０１００】
判定値ＶＪを変更すると判定されてからの点火サイクルの回数が、予め定められた回数ＩＧＮ３以上であると（Ｓ２００にてＹＥＳ）、処理はＳ３００に移される。もしそうでないと（Ｓ２００にてＮＯ）、処理はＳ２０２に移される。
【０１０１】
Ｓ２０２にて、エンジンＥＣＵ２００は、標準偏差σの更新を停止する。Ｓ２０４にて、エンジンＥＣＵ２００は、中央値ＶＭの更新量を大きくして中央値ＶＭを更新する。Ｓ２０６にて、エンジンＥＣＵ２００は、ノック判定レベルＶＫＤおよびＢＧＬを更新（設定）する。
【０１０２】
Ｓ２０８にて、エンジンＥＣＵ２００は、判定値ＶＪを補正した後の点火サイクル数のカウントを１回分低減する。すなわち、中央値ＶＭの更新量を大きくするとともに標準偏差σの更新が停止されている間は、判定値ＶＪを補正した後の点火サイクル数のカウントが停止される。その後、処理はＳ１００に戻される。
【０１０３】
Ｓ３００にて、エンジンＥＣＵ２００は、標準偏差σを更新する。Ｓ３０２にて、エンジンＥＣＵ２００は、通常の更新量を用いて中央値ＶＭを更新する。すなわち、判定値ＶＪを変更すると判定されてからの点火サイクルの回数が、予め定められた回数ＩＧＮ３より少ない間に用いられる更新量よりも小さい更新量を用いて中央値ＶＭが更新される。Ｓ３０４にて、エンジンＥＣＵ２００は、ノック判定レベルＶＫＤおよびＢＧＬを更新する。
【０１０４】
Ｓ４００にて、エンジンＥＣＵ２００は、ノックカウント値ＫＣをカウントする。Ｓ４０２にて、エンジンＥＣＵ２００は、前回判定値ＶＪを補正してからの点火サイクルの回数が、予め定められた回数ＩＧＮ１以上であるか否かを判定する。前回判定値ＶＪを補正してからの点火サイクルの回数が、予め定められた回数ＩＧＮ１以上であると（Ｓ４０２にてＹＥＳ）、処理はＳ４０４に移される。もしそうでないと（Ｓ４０２にてＮＯ）、処理はＳ１００に戻される。
【０１０５】
Ｓ４０４にて、エンジンＥＣＵ２００は、ノックカウント値ＫＣに応じて判定値ＶＪを補正する。ノックカウント値ＫＣがしきい値ＫＣ１以上である場合、予め定められた補正量Ａ１だけ小さくなるように、判定値ＶＪが補正される。ノックカウント値ＫＣがしきい値ＫＣ１よりも小さい場合、予め定められた補正量Ａ２だけ大きくなるように判定値ＶＪが補正される。
【０１０６】
なお、Ｓ１００〜Ｓ４０４の処理を行なう順序は、図１５および図１６に示す順序に限らない。Ｓ１００〜Ｓ４０４の処理を、図１５および図１６に示す順序とは異なる順序で実行するようにしてもよい。
【０１０７】
図１７を参照して、Ｓ５００にて、エンジンＥＣＵ２００は、ノック強度Ｎと比較する判定値ＶＪを変更するか否かを判定する。判定値ＶＪを変更すると判定された場合（Ｓ５００にてＹＥＳ）、処理はＳ５０２に移される。もしそうでないと（Ｓ５００にてＮＯ）、処理はＳ５００に戻される。
【０１０８】
Ｓ５０２にて、エンジンＥＣＵ２００は、変更前の判定値ＶＪが変更後の判定値ＶＪよりも大きいか否かを判定する。変更前の判定値ＶＪが変更後の判定値ＶＪよりも大きいと（Ｓ５０２にてＹＥＳ）、処理はＳ５０４に移される。もしそうでないと（Ｓ５０２にてＮＯ）、処理はＳ５０６に移される。
【０１０９】
Ｓ５０４にて、エンジンＥＣＵ２００は、判定値ＶＪを変更すると判定されてからの点火サイクルの回数が、予め定められた回数ＩＧＮ２以上であるか否かを判定する。判定値ＶＪを変更すると判定されてからの点火サイクルの回数が予め定められた回数ＩＧＮ２以上であると（Ｓ５０４にてＹＥＳ）、処理はＳ５０６に移される。もしそうでないと（Ｓ５０４にてＮＯ）、処理はＳ５０４に戻される。
【０１１０】
Ｓ５０６にて、エンジンＥＣＵ２００は、ノック強度Ｎと比較される判定値ＶＪを変更する。
【０１１１】
以上のような構造およびフローチャートに基づく、本実施の形態におけるエンジンＥＣＵ２００の動作について説明する。
【０１１２】
エンジン１００の運転中、クランクポジションセンサ３０６から送信された信号に基づいて、クランク角が検出される（Ｓ１００）。ノックセンサ３００から送信された信号に基づいて、クランク角に対応させて、エンジン１００の振動の強度が検出される（Ｓ１０２）。ノックセンサ３００の出力電圧値をクランク角で５°ＣＡごとに積算した５°ＣＡ積算値を算出することにより、エンジン１００の振動波形が検出される（Ｓ１０４）。
【０１１３】
ノッキングが発生したか否かを波形の形状に基づいて判定するため、ノック波形モデルを用いて相関係数Ｋが算出される（Ｓ１０６）。さらに、ノッキングに起因して発生した振動が振動波形に含まれるか否かを強度に基づいて判定するため、積算値ｌｐｋｋｎｋが算出される（Ｓ１０８）。積算値ｌｐｋｋｎｋをＢＧＬで除算することにより、ノック強度Ｎが算出される（Ｓ１１０）。
【０１１４】
相関係数Ｋがしきい値Ｋ１以上であり、かつノック強度Ｎが判定値ＶＪ以上である場合（Ｓ１２０にてＹＥＳ）、検出された波形の形状がノッキングによる波形の形状に類似しており、かつ振動の強度が大きいといえる。すなわち、ノッキングが発生した可能性が非常に高いといえる。この場合、エンジン１００にノッキングが発生したと判定される（Ｓ１２２）。ノッキングを抑制するために、点火時期が遅角される（Ｓ１２４）。
【０１１５】
一方、相関係数Ｋがしきい値Ｋ１よりも小さい場合、またはノック強度Ｎが判定値ＶＪよりも小さい場合、エンジン１００にノッキングが発生していないと判定される（Ｓ１２６）。この場合、点火時期が進角される（Ｓ１２８）。
【０１１６】
ノック強度Ｎと比較される判定値ＶＪを変更すると判定されてからの点火サイクルの回数が予め定められた回数ＩＧＮ３以上であると（Ｓ２００にてＹＥＳ）、標準偏差σが更新される（Ｓ３００）。さらに、通常の更新量を用いて中央値ＶＭが更新される（Ｓ３０２）。更新された中央値ＶＭおよび標準偏差σを用いて、ノック判定レベルＶＫＤおよびＢＧＬが更新される（Ｓ３０４）。
【０１１７】
判定値ＶＪを補正するために、ノック判定レベルＶＫＤを用いてノックカウント値ＫＣがカウントされる（Ｓ４００）。前回に判定値ＶＪを補正してからの点火サイクルの回数が、予め定められた回数ＩＧＮ１以上であると（Ｓ４０２にてＹＥＳ）、ノックカウント値ＫＣに応じて判定値ＶＪが補正される（Ｓ４０４）。
【０１１８】
ノックカウント値ＫＣがしきい値ＫＣ１以上である場合、補正量Ａ１だけ小さくなるように、判定値ＶＪが補正される。これにより、ノッキングが発生したと判定し易くすることができる。そのため、点火時期を遅角する頻度を多くすることができる。その結果、ノッキングが発生する回数を低減することができる。
【０１１９】
ノックカウント値ＫＣがしきい値ＫＣ１よりも小さい場合、補正量Ａ２だけ大きくなるように判定値ＶＪが補正される。これにより、ノッキングが発生したと判定され難くすることができる。そのため、点火時期を進角する頻度を多くすることができる。その結果、エンジン１００の出力を高めることができる。
【０１２０】
ところで、ノッキングがほとんど発生しておらず、かつ運転状態が安定していると、図１８に示すように、積算値ｌｐｋｋｎｋの頻度分布は正規分布になる。この頻度分布においては、標準偏差σが小さい。
【０１２１】
しかしながら、エンジン１００の運転状態、すなわち、エンジン回転数ＮＥ、負荷ＫＬおよび吸気バルブ１１６のリフト量などが変化すると、ノッキングに関係なく、エンジン１００自体の機械振動の大きさが変化する。そのため、積算値ｌｐｋｋｎｋの頻度分布が大きく変化し得る。その結果、標準偏差σが大きくなり得る。標準偏差σが大きくなると、ＢＧＬが小さくなる。したがって、積算値ｌｐｋｋｎｋをＢＧＬで除算することにより算出されるノック強度Ｎが突発的に大きくなり得る。
【０１２２】
さらに、本実施の形態においては、ノッキングが発生したか否かを精度よく判定するために、エンジン１００の運転状態に応じた複数の判定値ＶＪが設定されている。そのため、エンジン１００の運転状態が変化し、ノック強度Ｎが突発的に大きくなり得る状態において、判定値ＶＪが小さくなるように変更され得る。よって、判定値ＶＪを変更する際には、ノッキングが発生していなくても、ノック強度Ｎが判定値ＶＪより大きくなり易い。すなわち、点火時期が誤って遅角され易い。
【０１２３】
また、エンジンＥＣＵ２００における演算処理には時間が必要であるため、エンジン１００自体の機械振動が変化した後、中央値ＶＭなどは、実際に検出される積算値ｌｐｋｋｎｋに対して遅れて更新され得る。
【０１２４】
そこで、本実施の形態においては、エンジン１００の運転状態が変化する際、すなわち判定値ＶＪが変更される際、標準偏差σの更新が停止されるとともに中央値ＶＭの更新量が大きくされる。
【０１２５】
ノック強度Ｎと比較される判定値ＶＪを変更すると判定されてからの点火サイクルの回数が、予め定められた回数ＩＧＮ３より少ないと（Ｓ２００にてＮＯ）、標準偏差σの更新が停止されるとともに（Ｓ２０２）、更新量が大きくされて中央値ＶＭが更新される（Ｓ２０４）。更新された中央値ＶＭおよび更新されなかった標準偏差σを用いて、ノック判定レベルＶＫＤおよびＢＧＬが更新される（Ｓ２０６）。
【０１２６】
これにより、判定値ＶＪが変更されるときのように、エンジン１００の運転状態が変化する場合は、標準偏差σの突発的な増大を防止するとともに、中央値ＶＭを実際に検出される積算値ｌｐｋｋｎｋに応じて速やかに更新することができる。そのため、中央値ＶＭから標準偏差σを減算することにより算出されるＢＧＬの突発的な増大を防止するとともに、実際に検出される積算値ｌｐｋｋｎｋに適したＢＧＬを得ることができる。そのため、積算値ｌｐｋｋｎｋをＢＧＬで除算してノック強度Ｎを算出する際に、ノッキングとは異なる要因によるノック強度Ｎの乱れを低減することができる。その結果、ノッキングが発生したか否かを精度よく判定して、点火時期を精度よく制御することができる。
【０１２７】
なお、大きい更新量で中央値ＶＭを更新した後は、判定値ＶＪを補正した後の点火サイクル数のカウントが１回分低減される（Ｓ２０８）。よって、大きい更新量で中央値ＶＭを更新した回数分だけ、判定値ＶＪを補正した後の点火サイクル数のカウントが低減される。
【０１２８】
さらに、ノック強度Ｎと比較する判定値ＶＪを変更すると判定された場合（Ｓ５００にてＹＥＳ）、変更前の判定値ＶＪが変更後の判定値ＶＪよりも大きいと（Ｓ５０２にてＹＥＳ）、判定値ＶＪを変更すると判定されてからの点火サイクルの回数が予め定められた回数ＩＧＮ２以上になってから（Ｓ５０４にてＹＥＳ）、判定値ＶＪが変更される（Ｓ５０６）。変更前の判定値ＶＪが変更後の判定値ＶＪよりも小さいと（Ｓ５０２にてＮＯ）、速やかに判定値ＶＪが変更される（Ｓ５０６）。
【０１２９】
これにより、実際に検出される積算値ｌｐｋｋｎｋに対するＢＧＬの追従が遅れることによりノック強度Ｎが突発的に大きくなり得る状態下においては、判定値ＶＪが大きい状態を維持することができる。そのため、点火時期が誤って遅角される頻度を低減することができる。
【０１３０】
以上のように、本実施の形態に係る点火時期制御装置によれば、積算値ｌｐｋｋｎｋをＢＧＬで除算することにより、ノック強度Ｎが算出される。ノック強度Ｎが判定値ＶＪ以上であるか否かに応じて点火時期が制御される。ＢＧＬは、積算値ｌｐｋｋｎｋの中央値ＶＭから標準偏差σを減算した値である。ノック強度Ｎと比較される判定値ＶＪを変更すると判定されると、標準偏差σの更新が停止されるとともに、更新量が大きくされて中央値ＶＭが更新される。これにより、標準偏差σの突発的な増大を防止するとともに、中央値ＶＭを実際に検出される積算値ｌｐｋｋｎｋに応じて速やかに更新することができる。そのため、中央値ＶＭから標準偏差σを減算することにより算出されるＢＧＬの突発的な増大を防止するとともに、実際に検出される積算値ｌｐｋｋｎｋに適したＢＧＬを得ることができる。そのため、積算値ｌｐｋｋｎｋをＢＧＬで除算することにより算出されるノック強度Ｎの、ノッキングとは異なる要因による乱れを低減することができる。その結果、ノッキングが発生したか否かを精度よく判定して、点火時期を精度よく制御することができる。
【０１３１】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１３２】
【図１】エンジンを示す概略構成図である。
【図２】ノック検出ゲートを定めるマップを示す図である。
【図３】ノッキング時にエンジンで発生する振動の周波数帯を示す図である。
【図４】エンジンＥＣＵを示す制御ブロック図である。
【図５】エンジンの振動波形を示す図である。
【図６】振動波形とノック波形モデルとを比較した図である。
【図７】ノック波形モデルを示す図である。
【図８】ノック波形モデルの面積Ｓを示す図である。
【図９】積算値ｌｐｋｋｎｋを示す図である。
【図１０】ノック強度Ｎを示す図である。
【図１１】判定値ＶＪを定める領域を示す図である。
【図１２】エンジンＥＣＵの機能ブロック図である。
【図１３】判定値ＶＪが変更されるタイミングを示すタイミングチャートである。
【図１４】積算値ｌｐｋｋｎｋの頻度分布を示す図（その１）である。
【図１５】エンジンＥＣＵが実行するプログラムの制御構造を示す図（その１）である。
【図１６】エンジンＥＣＵが実行するプログラムの制御構造を示す図（その２）である。
【図１７】エンジンＥＣＵが実行するプログラムの制御構造を示す図（その３）である。
【図１８】積算値ｌｐｋｋｎｋの頻度分布を示す図（その２）である。
【符号の説明】
【０１３３】
１００  エンジン、１０４  インジェクタ、１０６  点火プラグ、１１０  クランクシャフト、１１６  吸気バルブ、１１８  排気バルブ、２００  エンジンＥＣＵ、２０２  ＲＯＭ、３００  ノックセンサ、３０２  水温センサ、３０４  タイミングロータ、３０６  クランクポジションセンサ、３０８  スロットル開度センサ、３１０  車速センサ、３１２  イグニッションスイッチ、３１４  エアフローメータ、３２０  補機バッテリ、４００  Ａ／Ｄ変換部、４１０  バンドパスフィルタ、４２０  積算部、５００  点火時期設定部、６００  クランク角検出部、６０２  強度検出部、６０４  波形検出部、６０６  相関係数算出部、６０８  積算値算出部、６１０  ノック強度算出部、６１２  ノッキング判定部、６１４  点火時期制御部、６１６  変更判定部、６１８  変更部、７００  フィードバック部、７０２  頻度分布作成部、７０４  中央値算出部、７０６  標準偏差算出部、７０８  ＢＧＬ算出部、７１０  ノック判定レベル算出部、７１２  カウント部、７１４  補正部。
【図１】
0004980956.tif 000002
【図２】
0004980956.tif 000003
【図３】
0004980956.tif 000004
【図４】
0004980956.tif 000005
【図５】
0004980956.tif 000006
【図６】
0004980956.tif 000007
【図７】
0004980956.tif 000008
【図８】
0004980956.tif 000009
【図９】
0004980956.tif 000010
【図１０】
0004980956.tif 000011
【図１１】
0004980956.tif 000012
【図１２】
0004980956.tif 000013
【図１３】
0004980956.tif 000014
【図１４】
0004980956.tif 000015
【図１５】
0004980956.tif 000016
【図１６】
0004980956.tif 000017
【図１７】
0004980956.tif 000018
【図１８】
0004980956.tif 000019