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