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