以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰返さない。
図1を参照して、本発明の実施の形態に係るノッキング判定装置を搭載した車両のエンジン100について説明する。このエンジン100には複数の気筒が設けられる。本実施の形態に係るノッキング判定装置は、たとえばエンジンECU(Electronic Control Unit)200が実行するプログラムにより実現される。なお、エンジンECU200により実行されるプログラムをCD(Compact Disc)、DVD(Digital Versatile Disc)などの記録媒体に記録して市場に流通させてもよい。
エンジン100は、エアクリーナ102から吸入された空気とインジェクタ104から噴射される燃料との混合気を、燃焼室内で点火プラグ106により点火して燃焼させる内燃機関である。点火時期は、出力トルクが最大になるMBT(Minimum advance for Best Torque)になるように制御されるが、ノッキングが発生した場合など、エンジン100の運転状態に応じて遅角されたり、進角されたりする。
混合気が燃焼すると、燃焼圧によりピストン108が押し下げられ、クランクシャフト110が回転する。燃焼後の混合気(排気ガス)は、三元触媒112により浄化された後、車外に排出される。エンジン100に吸入される空気の量は、スロットルバルブ114により調整される。吸気バルブ116が開いた際に燃焼室に混合気が導入される。排気バルブ118が開いた際に燃焼室から排気ガスが排出される。
エンジン100は、エンジンECU200により制御される。エンジンECU200には、ノックセンサ300と、水温センサ302と、タイミングロータ304に対向して設けられたクランクポジションセンサ306と、スロットル開度センサ308と、車速センサ310と、イグニッションスイッチ312と、エアフローメータ314とが接続されている。
ノックセンサ300は、エンジン100のシリンダブロックに設けられる。ノックセンサ300は、圧電素子により構成されている。ノックセンサ300は、エンジン100の振動により電圧を発生する。電圧の大きさは、振動の大きさと対応した大きさとなる。ノックセンサ300は、電圧を表わす信号をエンジンECU200に送信する。水温センサ302は、エンジン100のウォータージャケット内の冷却水の温度を検出し、検出結果を表わす信号を、エンジンECU200に送信する。
タイミングロータ304は、クランクシャフト110に設けられており、クランクシャフト110と共に回転する。タイミングロータ304の外周には、予め定められた間隔で複数の突起が設けられている。クランクポジションセンサ306は、タイミングロータ304の突起に対向して設けられている。タイミングロータ304が回転すると、タイミングロータ304の突起と、クランクポジションセンサ306とのエアギャップが変化するため、クランクポジションセンサ306のコイル部を通過する磁束が増減し、コイル部に起電力が発生する。クランクポジションセンサ306は、起電力を表わす信号を、エンジンECU200に送信する。エンジンECU200は、クランクポジションセンサ306から送信された信号に基づいて、クランク角およびクランクシャフト110の回転数を検出する。
スロットル開度センサ308は、スロットル開度を検出し、検出結果を表わす信号をエンジンECU200に送信する。車速センサ310は、車輪(図示せず)の回転数を検出し、検出結果を表わす信号をエンジンECU200に送信する。エンジンECU200は、車輪の回転数から、車速を算出する。イグニッションスイッチ312は、エンジン100を始動させる際に、運転者によりオン操作される。エアフローメータ314は、エンジン100に吸入される空気量を検出し、検出結果を表わす信号をエンジンECU200に送信する。
エンジンECU200は、電源である補機バッテリ320から供給された電力により作動する。エンジンECU200は、各センサおよびイグニッションスイッチ312から送信された信号、ROM(Read Only Memory)202に記憶されたマップおよびプログラムに基づいて演算処理を行ない、エンジン100が所望の運転状態となるように、機器類を制御する。
本実施の形態において、エンジンECU200は、ノックセンサ300から送信された信号およびクランク角に基づいて、予め定められたノック検出ゲート(予め定められた第1クランク角から予め定められた第2クランク角までの区間)におけるエンジン100の振動の波形(以下、振動波形と記載する)を検出し、検出された振動波形に基づいて、エンジン100にノッキングが発生したか否かを判定する。本実施の形態におけるノック検出ゲートは、燃焼行程において上死点(0度)から90度までである。なお、ノック検出ゲートはこれに限らない。
ノッキングが発生した場合、図2に示すように、エンジン100には、周波数帯A〜Cに含まれるの周波数の振動が発生する。そこで、本実施の形態においては、周波数帯A〜Cを含む広域の周波数帯Dにおける振動が検出される。
図3に示すように、エンジンECU200は、A/D(アナログ/デジタル)変換部400と、バンドパスフィルタ410と、積算部420とを含む。
A/D変換部400は、アナログ信号をデジタル信号に変換する。バンドパスフィルタ410は、ノックセンサ300から送信された信号のうち、周波数帯Dの信号のみを通過させる。すなわち、バンドパスフィルタ410により、ノックセンサ300が検出した振動から、周波数帯Dの振動のみが抽出される。
積算部420は、バンドパスフィルタ410により選別された信号、すなわち振動の強度を、クランク角度で5度分づつ積算した積算値(以下、5度積算値とも記載する)を算出する。5度積算値の算出は、周波数帯ごとに行なわれる。これにより、図4に示すように、周波数帯Dの振動波形が検出される。
本実施の形態においては、振動波形の形状に基づいて算出される相関係数Kおよび振動波形の強度に基づいて算出されるノック強度Nを用いて、ノッキングが発生したか否かが1点火毎に判定される。たとえば、相関係数Kがしきい値K(1)以上であり、かつノック強度Nが判定値VJ以上であると、ノッキングが発生したと判定される。
図5に示すように、判定値VJは、エンジン回転数NEと吸入空気量KLとをパラメータとした運転状態により区分される領域毎に、マップとして記憶される。本実施の形態においては、低回転(NE<NE(1))、中回転(NE(1)≦NE<NE(2))、高回転(NE(2)≦NE)、低負荷(KL<KL(1))、中負荷(KL(1)≦KL<KL(2))、高負荷(KL(2)≦KL)で区分することにより、気筒毎に9つの領域が設けられる。なお、領域の数はこれに限らない。また、エンジン回転数NEおよび吸入空気量KL以外のパラメータを用いて領域を区分するようにしてもよい。
エンジン100もしくは車両の出荷時において、ROM202に記憶される判定値VJ(出荷時における判定値VJの初期値)には、予め実験などにより定められる値が用いられる。ところが、ノックセンサ300の出力値のばらつきや劣化などにより、エンジン100で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値VJを補正し、実際に検出される強度に応じた判定値VJを用いてノッキングが発生したか否かを判定する必要がある。そこで、本実施の形態においては、予め定められた点火サイクル毎、たとえば200点火サイクル毎に、判定値VJが補正される。
図6を参照して、エンジンECU200の機能について説明する。なお、以下に説明する機能はソフトウェアにより実現するようにしてもよく、ハードウェアにより実現するようにしてもよい。
エンジンECU200は、クランク角検出部500と、強度検出部502と、波形検出部504と、15度積算値算出部510と、第1変化量算出部512と、領域特定部514と、クランク角特定部516と、相関係数算出部518と、90度積算値算出部520と、算出部600と、判定部602と、フィードバック補正部700とを備える。
クランク角検出部500は、クランクポジションセンサ306から送信された信号に基づいて、クランク角を検出する。
強度検出部502は、ノックセンサ300から送信された信号に基づいて、ノック検出ゲートにおける振動の強度を検出する。振動の強度は、クランク角に対応させて検出される。また、振動の強度は、ノックセンサ300の出力電圧値で表される。なお、ノックセンサ300の出力電圧値と対応した値で振動の強度を表してもよい。
波形検出部504は、振動の強度をクランク角で5度分づつ積算することにより、ノック検出ゲートにおける振動波形を検出する。
15度積算値算出部510は、図7に示すように、ノック検出ゲートを6等分した領域ごとに、クランク角で15度分だけ強度(3つの5度積算値)を積算した15度積算値を算出する。15度積算値は、複数の点火サイクルごとに算出される。なお、領域の数は6つに限らず、その他、複数であればいくつでもよい。
第1変化量算出部512は、ノック検出ゲートを6等分した領域ごとに、点火サイクル間の15度積算値の変化量ΔV(1)〜ΔV(6)を算出する。今回の点火サイクルの15度積算値と前回(1つ前)の点火サイクルの15度積算値との差より、図7において斜線で示す15度積算値の変化量ΔV(1)〜ΔV(6)が算出される。すなわち、今回の点火サイクルの15度積算値lpkknkから前回の点火サイクルの15度積算値lpkknkを減算することにより変化量が算出される。
なお、5度積算値の点火サイクル間での変化量を検出するようにしてもよい。クランク角で1度ごとに強度の変化量を検出するようにしてもよい。また、今回の点火サイクルの15度積算値と、指数平滑法と呼ばれる平滑化手法を用いて過去の15度積算値から算出される演算値、すなわち15度積算値が平滑化された演算値との差より、15度積算値の変化量ΔV(1)〜ΔV(6)を検出するようにしてもよい。
演算値(平滑化された15度積算値)VNは、下記の式(1)を用いて算出される。下記の式(1)において、VN(i)は、今回の点火サイクルにおいて算出される演算値VNを示す。VN(i−1)は、前回の点火サイクルにおいて算出された演算値VNを示す。V15(i−1)は、前回の点火サイクルにおける15度積算値を示す。Zは定数である。
VN(i)=VN(i−1)+Z×(V15(i−1)−VN(i−1))…(1)
演算値VNは、複数のクランク角の領域ごとに算出される。
領域特定部514は、6つの領域のうち、15度積算値の変化量がより大きいクランク角の領域を特定する。本実施の形態においては、15度積算値の変化量がより大きい領域が2つ特定される。
クランク角特定部516は、図8に示すように、特定された領域と同じ領域に定められた探索領域内において、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角を特定する。すなわち、強度がピークになるクランク角が特定される。なお、図9に示すように、15度積算値の変化量がより大きい領域として特定された領域を含み、かつ特定された領域よりも広い領域を探索領域として定めるようにしてもよい。
相関係数算出部518は、振動波形がノック波形モデルに類似する度合を表わす(振動波形の形状とノック波形モデルの形状との差を表わす)相関係数Kを算出する。図10に示すように、強度がピークになるクランク角以降のクランク角の範囲において、検出された振動波形とノック波形モデルとを比較することにより、相関係数Kが算出される。
ノック波形モデルは、ノッキングが発生した場合のエンジン100の振動波形の基準として定められる。本実施の形態において、ノック波形モデルの強度は、振動波形と比較する度に設定される。より具体的には、ノック波形モデルにおける強度の最大値が、振動波形において、隣接する強度に比べて大きい強度(強度のピーク値)と同じになるように設定される。
一方、最大値以外の強度は、エンジン回転数NEおよびエンジン100の負荷に応じて設定される。より具体的には、隣接するクランク角における強度の減衰率が、エンジン回転数NEおよびエンジン100の負荷をパラメータに有するマップに従って設定される。
たとえば、25%の減衰率で、クランク角で20度分の強度を設定する場合、図11に示すように、25%ずつ強度が減少する。なお、ノック波形モデルの強度を設定する方法はこれに限らない。
振動波形における強度とノック波形モデルにおける強度との差の絶対値(ズレ量)をクランク角ごと(5度ごと)に算出することにより、相関係数Kが算出される。なお、5度以外のクランク角ごとに振動波形における強度とノック波形モデルにおける強度との差の絶対値を算出するようにしてもよい。
振動波形における強度とノック波形モデルにおける強度とのクランク角ごとの差の絶対値をΔS(I)(Iは自然数)とおく。図12において斜線で示すように、ノック波形モデルの振動の強度を合計した値、すなわち、ノック波形モデルの面積をSとおく。相関係数Kは、下記の式(2)を用いて算出される。
K=(S−ΣΔS(I))/S・・・(2)
ΣΔS(I)は、ΔS(I)の総和である。なお、相関係数Kの算出方法はこれに限らない。
90度積算値算出部520は、図13において斜線で示すように、振動波形における強度(5度積算値)を合計した90度積算値lpkknkを算出する。
算出部600は、90度積算値lpkknkを用いて、ノック強度Nを算出する。エンジン100にノッキングが発生していない状態におけるエンジン100の振動の強度を表わす値をBGL(Back Ground Level)と表わす。ノック強度Nは、下記の式(3)を用いて算出される。
N=lpkknk/BGL・・・(3)
なお、ノック強度Nの算出方法はこれに限らない。ノック強度Nを算出する際、90度積算値lpkknkの対数変換値が用いられる。BGLは、各90度積算値lpkknkが検出された頻度(回数、確率ともいう)を表わす頻度分布において、標準偏差σと係数(たとえば「1」)との積を、中央値VMEDから減算した値として算出される。なお、BGLの算出方法はこれに限らず、BGLをROM202に記憶しておくようにしてもよい。また、頻度分布を作成する際、90度積算値lpkknkの対数変換値が用いられる。
判定部602は、相関係数Kおよびノック強度Nを用いて、ノッキングが発生したか否かが1点火毎に判定する。相関係数Kがしきい値K(1)以上であり、かつノック強度Nが判定値VJ以上であると、ノッキングが発生したと判定される。もしそうでないと、ノッキングが発生していないと判定される。
フィードバック補正部700は、相関係数判定部702と、第1ノッキング判定部704と、第2変化量算出部706と、変化量判定部708と、第2ノッキング判定部710と、波形補正部712と、90度積算値算出部714と、頻度分布作成部716と、90度積算値判定部718と、第3ノッキング判定部720と、補正部722とを備える。
相関係数判定部702は、相関係数Kがしきい値K(2)以上であるか否かを判定する。たとえば、しきい値K(2)は、前述したしきい値K(1)よりも小さい値である。
第1ノッキング判定部704は、相関係数Kがしきい値K(2)以上である場合、ノッキングが発生した可能性があると判定する。一方、相関係数Kがしきい値K(2)よりも小さい場合、第1ノッキング判定部704は、振動波形に、ノッキングとは異なる要因により発生する振動(ノイズ)のみが含まれると判定する。すなわち、ノッキングが発生していないと判定される。
第2変化量算出部706は、相関係数Kがしきい値K(2)以上である場合、点火サイクル間の90度積算値lpkknkの変化量を算出する。今回の点火サイクルの90度積算値lpkknkと前回(1つ前)の点火サイクルの90度積算値lpkknkとの差より、90度積算値lpkknkの変化量が算出される。すなわち、今回の点火サイクルの90度積算値lpkknkから前回の点火サイクルの90度積算値lpkknkを減算することにより変化量が算出される。
変化量判定部708は、90度積算値lpkknkの変化量がしきい値Δknk以上であるか否かを判定する。しきい値Δknkは、たとえば、90度積算値lpkknkの変化量の頻度分布における標準偏差と係数との積である。なお、しきい値デルタknkはこれに限らない。
第2ノッキング判定部710は、90度積算値lpkknkの変化量がしきい値Δknk以上である場合、ノッキングが発生した可能性があると判定する。一方、90度積算値lpkknkの変化量がしきい値Δknkより小さい場合、第2ノッキング判定部710は、振動波形に、ノッキングとは異なる要因により発生する振動(ノイズ)のみが含まれると判定する。すなわち、ノッキングが発生していないと判定される。
波形補正部712は、90度積算値lpkknkの変化量がしきい値Δknkより小さい場合、振動波形における強度が小さくなるように、振動波形を補正する。図14に示すように、検出された振動波形において、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角の前後X度の範囲で、振動波形が補正される。
なお、各クランク角における強度が正値になるように振動波形を補正するようにしてもよい。すなわち、補正後の強度が下限値以上になるように補正を制限してもよい。たとえば、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度(強度のピーク)の3分の1が下限値に定められる。振動波形における強度の最小値と正の係数との積を下限値に定めるようにしてもよい。なお、下限値はこれに限らない。
図15に示すように、吸気バルブ116もしくは排気バルブ118が閉じるクランク角の前後Y度の範囲内にいて、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角を基準にして、振動波形を補正するようにしてもよい。
90度積算値算出部714は、補正された振動波形の90度積算値lpkknkを算出する。
頻度分布作成部716は、図16に示すように、各点火サイクルにおいて算出された90度積算値lpkknkの頻度分布を作成する。振動波形が補正された場合には、補正前の振動波形の90度積算値lpkknkの代わりに、補正後の振動波形の90度積算値lpkknkが用いられる。頻度分布を作成する際には、90度積算値lpkknkの対数変換値が用いられる。
頻度分布においては、図16に示すように、90度積算値lpkknkの中央値VMEDおよび標準偏差σが算出される。本実施の形態においては、複数(たとえば200サイクル)の90度積算値lpkknkに基づいて算出される中央値および標準偏差と近似した中央値VMEDおよび標準偏差σが、以下の算出方法により1点火サイクルごとに算出される。
今回算出された90度積算値lpkknkが前回算出された中央値VMEDよりも大きい場合、前回算出された中央値VMEDに予め定められた値C(1)を加算した値が、今回の中央値VMEDとして算出される。逆に、今回算出された90度積算値lpkknkが前回算出された中央値VMEDよりも小さい場合、前回算出された中央値VMEDから予め定められた値C(2)(たとえばC(2)はC(1)と同じ値)を減算した値が、今回の中央値VMEDとして算出される。
今回算出された90度積算値lpkknkが、前回算出された中央値VMEDよりも小さく、かつ前回算出された中央値VMEDから前回算出された標準偏差σを減算した値よりも大きい場合、前回算出された標準偏差σから予め定められた値C(3)を2倍した値を減算した値が、今回の標準偏差σとして算出される。逆に、今回算出された90度積算値lpkknkが、前回算出された中央値VMEDよりも大きい場合、または前回算出された中央値VMEDから前回算出された標準偏差σを減算した値よりも小さい場合、前回算出された標準偏差σに予め定められた値C(4)(たとえばC(4)はC(3)と同じ値)を加算した値が、今回の標準偏差σとして算出される。なお、中央値VMEDおよび標準偏差σの算出方法はこれに限定されない。また、中央値VMEDおよび標準偏差σの初期値は、予め設定された値であってもよいし、「0」であってもよい。
中央値VMEDおよび標準偏差σを用いて、ノック判定レベルVKDが算出される。図16に示すように、中央値VMEDに係数U(Uは定数で、たとえばU=3)と標準偏差σとの積を加算した値が、ノック判定レベルVKDとなる。なお、ノック判定レベルVKDの算出方法はこれに限らない。
係数Uは、実験などより得られたデータや知見から求められた係数である。U=3とした場合のノック判定レベルVKDよりも大きい90度積算値lpkknkが、実際にノッキングが発生した点火サイクルにおける90度積算値lpkknkと略一致する。なお、係数Uに「3」以外の値を用いるようにしてもよい。
90度積算値判定部718は、各点火サイクルにおいて算出された90度積算値lpkknkがノック判定レベルVKD以上であるか否かを判定する。
第3ノッキング判定部720は、ノック判定レベルVKD以上の90度積算値lpkknkが得られた点火サイクルにおいて、ノッキングが発生したと判定する。ノック判定レベルVKDよりも大きい90度積算値lpkknkの割合(頻度)は、ノック占有率KCとしてカウントされる。たとえば、200点火サイクル分の90積算値lpkknkのうち、ノック判定レベルVKDよりも大きい90度積算値lpkknkの割合(頻度)が、ノック占有率KCとしてカウントされる。
また、第3ノッキング判定部720は、ノック判定レベルVKDよりも小さい90度積算値lpkknkが得られた点火サイクルにおいて、ノッキングが発生していないと判定する。すなわち、振動波形にはノイズのみが含まれると判定される。
補正部722は、ノック占有率KCがしきい値KC(0)以上である場合、予め定められた補正量A(1)だけ小さくなるように、判定値VJを補正する。また、補正部722は、ノック占有率KCがしきい値KC(0)よりも小さい場合、予め定められた補正量A(2)だけ大きくなるように判定値VJを補正する。
図17および図18を参照して、エンジンECU200が実行するプログラムの制御構造について説明する。なお、以下に説明するプログラムは、予め定められた周期で(たとえば1点火サイクル毎に)繰り返し実行される。
ステップ(以下、ステップをSと略す)100にて、エンジンECU200は、クランクポジションセンサ306から送信された信号に基づいて、クランク角を検出する。S102にて、エンジンECU200は、ノックセンサ300から送信された信号に基づいて、クランク角に対応させて、エンジン100の振動の強度を検出する。
S104にて、エンジンECU200は、ノックセンサ300の出力電圧値(振動の強度を表わす値)を、クランク角で5度ごとに(5度分だけ)積算した5度積算値を算出することにより、エンジン100の振動波形を検出する。
S106にて、エンジンECU200は、ノック検出ゲートを6等分した領域ごとに15度積算値を算出する。S108にて、エンジンECU200は、ノック検出ゲートを6等分した領域ごとに、点火サイクル間の15度積算値の変化量ΔV(1)〜ΔV(6)を算出する。
S110にて、エンジンECU200は、6つの領域のうち、15度積算値の変化量がより大きいクランク角の領域を2つ特定する。S112にて、エンジンECU200は、探索領域内において、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角を特定する。すなわち、強度がピークになるクランク角が特定される。
S114にて、エンジンECU200は、相関係数Kを算出する。S116にて、エンジンECU200は、90度積算値lpkknkを算出する。S118にて、エンジンECU200は、ノック強度Nを算出する。
S120にて、エンジンECU200は、相関係数Kがしきい値K(1)以上であり、かつノック強度Nが判定値VJ以上であるかを判定する。相関係数Kがしきい値K(1)以上であり、かつノック強度Nが判定値VJ以上であると(S120にてYES)、処理はS122に移される。もしそうでないと(S120にてNO)、処理はS126に移される。
S122にて、エンジンECU200は、エンジン100にノッキングが発生したと判定する。S124にて、エンジンECU200は、点火時期を遅角する。S126にて、エンジンECU200は、エンジン100にノッキングが発生していないと判定する。S128にて、エンジンECU200は、点火時期を進角する。
図18を参照して、S200にて、エンジンECU200は、相関係数Kがしきい値K(2)以上であるか否かを判定する。相関係数Kがしきい値K(2)以上であると(S200にてYES)、処理はS202に移される。もしそうでないと(S200にてNO)、処理はS204に移される。
S202にて、エンジンECU200は、ノッキングが発生した可能性があると判定する。S204にて、エンジンECU200は、振動波形にノイズのみが含まれると判定する。すなわち、ノッキングが発生していないと判定される。
S206にて、エンジンECU200は、振動波形における強度が小さくなるように補正する。たとえば、15度積算値の変化量がより大きい領域として特定された領域における15度積算値が前回の点火サイクルにおいて算出された15度積算値と同じ値にされる。
S208にて、エンジンECU200は、補正された振動波形の90度積算値lpkknkを算出する。
S210にて、エンジンECU200は、点火サイクル間の90度積算値lpkknkの変化量を算出する。S212にて、エンジンECU200は、90度積算値lpkknkの変化量がしきい値Δknk以上であるか否かを判定する。90度積算値lpkknkの変化量がしきい値Δknk以上であると(S212にてYES)、処理はS214に移される。もしそうでないと(S212にてNO)、処理はS216に移される。
S214にて、エンジンECU200は、ノッキングが発生した可能性があると判定する。S216にて、エンジンECU200は、振動波形にノイズのみが含まれると判定する。すなわち、ノッキングが発生していないと判定される。
S220にて、エンジンECU200は、算出された90度積算値lpkknkがノック判定レベルVKD以上であるか否かを判定する。90度積算値lpkknkがノック判定レベルVKD以上であると(S220にてYES)、処理はS222に移される。もしそうでないと(S220にてNO)、処理はS226に移される。
S222にて、エンジンECU200は、ノッキングが発生したと判定する。S224にて、エンジンECU200は、ノック占有率KCを予め定められた増大量だけ大きくする。S226にて、エンジンECU200は、振動波形にノイズのみが含まれると判定する。すなわち、ノッキングが発生していないと判定される。
S228にて、エンジンECU200は、判定値VJを補正する。たとえば200点火サイクル毎に、判定値VJが補正される。すなわち、前回判定値VJが補正された後の点火サイクルが200未満である場合、S228を実行せずに、処理はS240に移される。
ノック占有率KCがしきい値KC(0)以上である場合、予め定められた補正量A(1)だけ小さくなるように、判定値VJが補正される。ノック占有率KCがしきい値KC(0)よりも小さい場合、予め定められた補正量A(2)だけ大きくなるように判定値VJが補正される。
S230にて、エンジンECU200は、振動波形における強度が小さくなるように、振動波形を補正する。S232にて、エンジンECU200は、補正された振動波形の90度積算値lpkknkを算出する。
S240にて、エンジンECU200は、90度積算値lpkknkの頻度分布を作成(更新)する。すなわち、中央値VMED、標準偏差σおよびノック判定レベルVKDが設定(更新)される。その後、処理はS100に戻される。
なお、S100〜S240の処理を行なう順序は、図17および図18に示す順序に限らない。S100〜S240の処理を、図17および図18に示す順序とは異なる順序で実行するようにしてもよい。たとえば、S214の後にS118〜S128の処理を行なうようにしてもよい。
以上のような構造およびフローチャートに基づく、本実施の形態におけるエンジンECU200の動作について説明する。
エンジン100の運転中、クランクポジションセンサ306から送信された信号に基づいて、クランク角が検出される(S100)。ノックセンサ300から送信された信号に基づいて、クランク角に対応させて、エンジン100の振動の強度が検出される(S102)。ノックセンサ300の出力電圧値をクランク角で5度ごとに積算した5度積算値を算出することにより、エンジン100の振動波形が検出される(S104)。
さらに、ノック検出ゲートを6等分した領域ごとに15度積算値が算出される(S106)。この15度積算値の点火サイクル間の変化量が、ノック検出ゲートを6等分した領域ごとに算出される(S108)。
一般的に、ノッキングは突発的に発生する。したがって、ノッキングが発生した場合、15度積算値の変化量が大きくなる。この特性を利用して、ノッキングが発生したと考えられるクランク角を特定するために、6つの領域のうち、検出された15度積算値の変化量がより大きいクランク角の領域が2つ特定される(S110)。さらに、探索領域内において、隣接するクランク角の強度に比べて大きく、かつそのような強度の中で最大の強度のクランク角が特定される(S112)。
このクランク角における振動がノッキングに起因して発生した振動であるかを、波形の形状に基づいて判定するため、ノック波形モデルを用いて相関係数Kが算出される(S114)。さらに、ノッキングに起因して発生した振動が振動波形に含まれるか否かを強度に基づいて判定するため、90度積算値lpkknkが算出される(S116)。90度積算値lpkknkをBGLで除算することにより、ノック強度Nが算出される(S118)。
相関係数Kがしきい値K(1)以上であり、かつノック強度Nが判定値VJ以上である場合(S120にてYES)、検出された波形の形状がノッキングによる波形の形状に類似しており、かつ振動の強度が大きいといえる。すなわち、ノッキングが発生した可能性が非常に高いといえる。この場合、エンジン100にノッキングが発生したと判定される(S122)。ノッキングを抑制するために、点火時期が遅角される(S124)。
一方、相関係数Kがしきい値K(1)よりも小さい場合、またはノック強度Nが判定値VJよりも小さい場合、エンジン100にノッキングが発生していないと判定される(S126)。この場合、点火時期が進角される(S128)。
ところで、エンジン100もしくは車両の出荷時において、ROM202に記憶される判定値VJ(出荷時における判定値VJの初期値)には、予め実験などにより定められる値が用いられる。ところが、ノックセンサ300の出力値のばらつきや劣化などにより、エンジン100で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値VJを補正し、実際に検出される強度に応じた判定値VJを用いてノッキングが発生したか否かを判定する必要がある。
そこで、本実施の形態においては、90度積算値lpkknkの頻度分布を用いて判定値VJが補正される。ところで、検出される振動波形には、吸気バルブ116が閉じる際に発生する振動等のノイズが含まれ得る。ノイズの強度と、ノッキングに起因する振動の強度との差は小さい場合がある。したがって、ノイズを振動波形から取り除く必要がある。
検出された振動波形にノイズが含まれるか否かを判定するために、相関係数Kがしきい値K(2)以上であるか否かが判定される(S200)。相関係数Kがしきい値K(2)以上であると(S200にてYES)、ノッキングが発生した可能性があると判定される(S202)。
その後、点火サイクル間の90度積算値lpkknkの変化量が算出される(S210)。ノッキングは突発的に発生する。したがって、90度積算値lpkknkの変化量がしきい値Δknk以上であると(S212にてYES)、ノッキングが発生した可能性があると判定される(S214)。
この場合、算出された90度積算値lpkknkがノック判定レベルVKD以上であるか否かが判定される(S220)。90度積算値lpkknkがノック判定レベルVKD以上であると(S220にてYES)、ノッキングが発生したと判定される(S222)。また、ノック占有率KCが予め定められた増大量だけ大きくされる(S224)。90度積算値lpkknkがノック判定レベルVKDより小さいと(S220にてNO)、振動波形にノイズのみが含まれると判定される(S226)。その後、ノック占有率KCがしきい値KC(0)以上であるか否かに応じて、判定値VJが補正される(S228)。
さらに、算出された90度積算値lpkknkを用いて、90度積算値lpkknkの頻度分布が作成される(S240)。その結果、中央値VMED、標準偏差σおよびノック判定レベルVKDが設定される。
一方、相関係数Kがしきい値K(2)より小さいと(S200にてNO)、振動波形にノイズのみが含まれると判定される(S204)。すなわち、ノッキングが発生していないと判定される。
この場合、振動波形に含まれるノイズを除去するために、振動波形における強度が小さくなるように補正される(S206)。本実施の形態においては、15度積算値の変化量がより大きい領域として特定された領域における15度積算値が前回の点火サイクルにおいて算出された15度積算値と同じ値にされる。振動波形を補正した後、補正された振動波形の90度積算値lpkknkが算出される(S208)。
この90度積算値lpkknkを用いて、90度積算値lpkknkの頻度分布が作成される(S240)。その結果、中央値VMED、標準偏差σおよびノック判定レベルVKDが設定される。
これにより、突発的に発生したノイズを検出された振動波形から除去した90度積算値lpkknkに基づいて、ノック判定レベルVKDを設定することができる。そのため、ノック判定レベルVKDの設定時におけるノイズの影響を小さくすることができる。その結果、変動量が小さいノック判定レベルVKDを得ることができる。
ところで、15度積算値の変化量に基づいてノック波形モデルと比較するクランク角を決定しているため、振動波形に定常的に含まれるノイズを検出し難い。また、たとえば、エンジン回転数が小さい場合には、ノッキングに起因する振動の波形とノイズの波形とが類似し得る。そのため、相関係数Kを用いても、ノッキングに起因する振動とノイズとを区別し難い場合がある。そこで、本実施の形態においては、90度積算値lpkknkの変化量に基づいて、定常的に発生するノイズを検出する。
相関係数Kがしきい値K(2)以上であっても(S200にてYES)、90度積算値lpkknkの変化量がしきい値Δknkより小さいと(S212にてNO)、ノッキングが発生した可能性が低いといえる。
この場合、検出された振動波形には、定常的に発生するノイズが含まれるといえる。よって、振動波形にノイズのみが含まれると判定される(S216)。すなわち、ノッキングが発生していないと判定される。
その後、振動波形における強度が小さくなるように、振動波形が補正される(S230)。本実施の形態においては、前述した図14に示すように、強度のピークの前後X度の範囲で、振動波形が補正される。
振動波形が補正された後、補正された振動波形の90度積算値lpkknkが算出される(S232)。この90度積算値lpkknkを用いて、90度積算値lpkknkの頻度分布が作成される(S240)。その結果、中央値VMED、標準偏差σおよびノック判定レベルVKDが設定される。
これにより、定常的に発生するノイズを検出された振動波形から除去した90度積算値lpkknkに基づいて、ノック判定レベルVKDを設定することができる。そのため、ノック判定レベルVKDの設定時におけるノイズの影響を小さくすることができる。その結果、ノイズに起因する変動量が小さいノック判定レベルVKDを得ることができる。
以上のように、本実施の形態に係るノッキング判定装置によれば、点火サイクル間の90度積算値lpkknkの変化量がしきい値Δknk以上であると、ノッキングが発生したと判定される。点火サイクル間の90度積算値の変化量がしきい値Δknkより小さいと、ノッキングが発生していないと判定される。これにより、ノッキングとは異なる要因により大きな強度の振動が定常的に発生した場合、たとえば、吸気バルブが閉じる際に発生する振動が定常的に検出された場合に、ノッキングが発生していないと正しく判定することができる。そのため、ノッキングの有無を精度よく判定することができる。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 エンジン、104 インジェクタ、106 点火プラグ、110 クランクシャフト、116 吸気バルブ、118 排気バルブ、200 エンジンECU、202 ROM、300 ノックセンサ、302 水温センサ、304 タイミングロータ、306 クランクポジションセンサ、308 スロットル開度センサ、310 車速センサ、312 イグニッションスイッチ、314 エアフローメータ、320 補機バッテリ、400 A/D変換部、410 バンドパスフィルタ、420 積算部、500 クランク角検出部、502 強度検出部、504 波形検出部、510 15度積算値算出部、512 第1変化量算出部、514 領域特定部、516 クランク角特定部、518 相関係数算出部、520 90度積算値算出部、600 算出部、602 判定部、700 フィードバック補正部、702 相関係数判定部、704 ノッキング判定部、706 第2変化量算出部、708 変化量判定部、710 ノッキング判定部、712 波形補正部、714 90度積算値算出部、716 頻度分布作成部、718 90度積算値判定部、720 ノッキング判定部、722 補正部。