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