以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
図1を参照して、本発明の実施の形態に係る点火時期制御装置を搭載した車両のエンジン100について説明する。本実施の形態に係る点火時期制御装置は、たとえばエンジンECU(Electronic Control Unit)200が実行するプログラムにより実現される。
エンジン100は、エアクリーナ102から吸入された空気とインジェクタ104から噴射される燃料との混合気を、燃焼室内で点火プラグ106により点火して燃焼させる内燃機関である。点火時期は、出力トルクが最大になるMBT(Minimum advance for Best Torque)になるように制御されるが、ノッキングが発生した場合など、エンジン100の運転状態に応じて遅角されたり、進角されたりする。
混合気が燃焼すると、燃焼圧によりピストン108が押し下げられ、クランクシャフト110が回転する。燃焼後の混合気(排気ガス)は、三元触媒112により浄化された後、車外に排出される。エンジン100に吸入される空気の量は、スロットルバルブ114により調整される。
エンジン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は、各センサおよびイグニッションスイッチ312から送信された信号、メモリ202に記憶されたマップおよびプログラムに基づいて演算処理を行ない、エンジン100が所望の運転状態となるように、機器類を制御する。
本実施の形態において、エンジンECU200は、ノックセンサ300から送信された信号およびクランク角に基づいて、予め定められたノック検出ゲート(予め定められた第1クランク角から予め定められた第2クランク角までの区間)におけるエンジン100の振動の波形(以下、振動波形と記載する)を検出し、検出された振動波形に基づいて、エンジン100にノッキングが発生したか否かを判定する。本実施の形態におけるノック検出ゲートは、燃焼行程において上死点(0度)から90度までである。なお、ノック検出ゲートはこれに限らない。
ノッキングが発生した場合、エンジン100には、図2において実線で示す周波数付近の周波数の振動が発生する。ノッキングに起因して発生する振動の周波数は一定ではなく、所定の帯域幅を有する。そのため、本実施の形態においては、図2に示すように、第1の周波数帯A、第2の周波数帯Bおよび第3の周波数帯Cに含まれる振動を検出する。なお、図2におけるCAは、クランク角(Crank Angle)を示す。なお、ノッキングに起因して発生する振動の周波数帯は3つに限られない。
図3を参照して、エンジンECU200についてさらに説明する。エンジンECU200は、A/D(アナログ/デジタル)変換部400と、バンドパスフィルタ(1)410と、バンドパスフィルタ(2)420と、バンドパスフィルタ(3)430と、積算部450とを含む。
A/D変換部400は、ノックセンサ300から送信されたアナログ信号をデジタル信号に変換する。バンドパスフィルタ(1)410は、ノックセンサ300から送信された信号のうち、第1の周波数帯Aの信号のみを通過させる。すなわち、バンドパスフィルタ(1)410により、ノックセンサ300が検出した振動から、第1の周波数帯Aの振動のみが抽出される。
バンドパスフィルタ(2)420は、ノックセンサ300から送信された信号のうち、第2の周波数帯Bの信号のみを通過させる。すなわち、バンドパスフィルタ(2)420により、ノックセンサ300が検出した振動から、第2の周波数帯Bの振動のみが抽出される。
バンドパスフィルタ(3)430は、ノックセンサ300から送信された信号のうち、第3の周波数帯Cの信号のみを通過させる。すなわち、バンドパスフィルタ(3)430により、ノックセンサ300が検出した振動から、第3の周波数帯Cの振動のみが抽出される。
積算部450は、バンドパスフィルタ(1)410〜バンドパスフィルタ(3)430により選別された信号、すなわち振動の強度を、クランク角度で5度分づつ積算する。以下、積算された値を積算値と表わす。積算値の算出は、周波数帯ごとに行なわれる。この積算値の算出により、各周波数帯における振動波形が検出される。
さらに、算出された第1の周波数帯A〜第3の周波数帯Cの積算値は、クランク角度に対応して加算される。すなわち、第1の周波数帯A〜第3の周波数帯Cの振動波形が合成される。
これにより、図4に示すように、エンジン100の振動波形が検出される。すなわち、第1の周波数帯A〜第3の周波数帯Cの合成波形が、エンジン100の振動波形として用いられる。
検出された振動波形は、図5に示すようにエンジンECU200のメモリ202に記憶されたノック波形モデルと比較される。ノック波形モデルは、エンジン100にノッキングが発生した場合の振動波形のモデルとして予め作成される。
ノック波形モデルにおいて、振動の強度は0〜1の無次元数として表され、振動の強度はクランク角と一義的には対応していない。すなわち、本実施の形態のノック波形モデルにおいては、振動の強度のピーク値以降、クランク角が大きくなるにつれ振動の強度が低減することが定められているが、振動の強度がピーク値となるクランク角は定められていない。
本実施の形態におけるノック波形モデルは、ノッキングにより発生した振動の強度のピーク値以降の振動に対応している。なお、ノッキングに起因した振動の立ち上がり以降の振動に対応したノック波形モデルを記憶してもよい。
ノック波形モデルは、実験などにより、強制的にノッキングを発生させた場合におけるエンジン100の振動波形を検出し、この振動波形に基づいて予め作成されて記憶される。
ノック波形モデルは、エンジン100の寸法やノックセンサ300の出力値が、寸法公差やノックセンサ300の出力値の公差の中央値であるエンジン100(以下、特性中央エンジンと記載する)を用いて作成される。すなわち、ノック波形モデルは、特性中央エンジンに強制的にノッキングを発生させた場合における振動波形である。なお、ノック波形モデルを作成する方法は、これに限られず、その他、シミュレーションにより作成してもよい。
検出された波形とノック波形モデルとの比較においては、図6に示すように、正規化された波形とノック波形モデルとが比較される。ここで、正規化とは、たとえば、検出された振動波形における積算値の最大値で各積算値で除算することにより、振動の強度を0〜1の無次元数で表わすことである。なお、正規化の方法はこれに限らない。
本実施の形態において、エンジンECU200は、正規化された振動波形とノック波形モデルとの偏差に関する値である相関係数Kを算出する。正規化後の振動波形において振動の強度が最大になるタイミングとノック波形モデルにおいて振動の強度が最大になるタイミングとを一致させた状態で、正規化後の振動波形とノック波形モデルとの偏差の絶対値(ズレ量)をクランク角ごと(5度ごと)に算出することにより、相関係数Kが算出される。
正規化後の振動波形とノック波形モデルとのクランク角ごとの偏差の絶対値をΔS(I)(Iは自然数)とし、ノック波形モデルにおける振動の強度をクランク角で積分した値(ノック波形モデルの面積)をSとおくと、相関係数Kは、K=(S−ΣΔS(I))/Sという方程式により算出される。ここで、ΣΔS(I)は、上死点から90度までのΔS(I)の総和である。本実施の形態において、相関係数Kは、振動波形の形状がノック波形モデルの形状に近いほど、大きな値として算出される。したがって、振動波形にノッキング以外の要因による振動の波形が含まれた場合、相関係数Kは小さく算出される。なお、相関係数Kの算出方法はこれに限らない。
さらに、エンジンECU200は、積算値の最大値(ピーク値)に基づいて、ノック強度Nを算出する。積算値の最大値をPとし、エンジン100にノッキングが発生していない状態におけるエンジン100の振動の強度を表わす値をBGL(Back Ground Level)とおくと、ノック強度Nは、N=P/BGLという方程式で算出される。BGLはメモリ202に記憶されている。なお、ノック強度Nの算出方法はこれに限らない。
本実施の形態において、エンジンECU200は、算出されたノック強度Nとメモリ202に記憶された判定値V(KX)とを比較し、さらに検出された波形と記憶されたノック波形モデルとを比較して、エンジン100にノッキングが発生したか否かを1点火サイクルごとに判定する。
図7に示すように、判定値V(KX)は、エンジン回転数NEと吸入空気量KLとをパラメータとするマップとして記憶される。
判定値V(KX)の初期値には、予め実験などにより定められる値が用いられる。ところが、ノックセンサ300の出力値のばらつきや劣化などにより、エンジン100で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値V(KX)を補正し、実際に検出される強度に応じた判定値V(KX)を用いてノッキングが発生したか否かを判定する必要がある。
そこで、本実施の形態においては、強度Vを対数変換した値である強度値LOG(V)と、各強度値LOG(V)が検出された頻度(回数、確率ともいう)との関係を示す頻度分布に基づいて、ノック判定レベルV(KD)が算出される。
エンジン回転数NEと吸入空気量KLとをパラメータとする領域ごとに強度値LOG(V)が算出される。強度値LOG(V)を算出するために用いられる強度Vは、予め定められたクランク角の間における強度のピーク値(5度ごとの積算値のピーク値)である。算出される強度LOG(V)に基づいて、強度値LOG(V)の頻度を最小値から累積して50%になる中央値V(50)が算出される。また、中央値V(50)以下の強度値LOG(V)における標準偏差σが算出される。たとえば、本実施の形態においては、複数(たとえば200サイクル)の強度値LOG(V)に基づいて算出される中央値および標準偏差と近似した中央値V(50)および標準偏差σが、以下の算出方法により1点火サイクルごとに算出される。
今回検出された強度値LOG(V)が前回算出された中央値V(50)よりも大きい場合、前回算出された中央値V(50)に予め定められた値C(1)を加算した値が、今回の中央値V(50)として算出される。逆に、今回検出された強度値LOG(V)が前回算出された中央値V(50)よりも小さい場合、前回算出された中央値V(50)から予め定められた値C(2)(たとえばC(2)はC(1)と同じ値)を減算した値が、今回の中央値V(50)として算出される。
今回検出された強度値LOG(V)が、前回算出された中央値V(50)よりも小さく、かつ前回算出された中央値V(50)から前回算出された標準偏差σを減算した値よりも大きい場合、前回算出された標準偏差σから予め定められた値C(3)を2倍した値を減算した値が、今回の標準偏差σとして算出される。逆に、今回検出された強度値LOG(V)が、前回算出された中央値V(50)よりも大きい場合、または前回算出された中央値V(50)から前回算出された標準偏差σを減算した値よりも小さい場合、前回算出された標準偏差σに予め定められた値C(4)(たとえばC(4)はC(3)と同じ値)を加算した値が、今回の標準偏差σとして算出される。なお、中央値V(50)および標準偏差σの算出方法はこれに限定されない。また、中央値V(50)および標準偏差σの初期値は、予め設定された値であってもよいし、「0」であってもよい。
中央値V(50)および標準偏差σを用いて、ノック判定レベルV(KD)が算出される。図8に示すように、中央値V(50)に係数U(1)(U(1)は定数で、たとえばU(1)=3)と標準偏差σとの積を加算した値が、ノック判定レベルV(KD)となる。なお、ノック判定レベルV(KD)の算出方法はこれに限らない。ノック判定レベルV(KD)よりも大きい強度値LOG(V)の頻度が、ノッキングが発生した頻度として判定され、ノッキングが発生した頻度に基づいて判定値V(KX)が補正される。
係数U(1)は、実験などより得られたデータや知見から求められた係数である。U(1)=3とした場合のノック判定レベルV(KD)よりも大きい強度値LOG(V)が、実際にノッキングが発生した点火サイクルにおける強度値LOG(V)と略一致する。なお、係数U(1)に「3」以外の値を用いるようにしてもよい。
強度値LOG(V)の頻度分布においては、エンジン100においてノッキングが発生していなければ、図9に示すように正規分布となり、強度値LOG(V)の最大値V(MAX)とノック判定レベルV(KD)とが一致する。一方、ノッキングが発生することにより、検出される強度Vが大きくなり、大きい強度値LOG(V)が算出されると、図10に示すように、ノック判定レベルV(KD)よりも最大値V(MAX)が大きくなる。
さらにノッキングが発生する頻度が大きくなると、図11に示すように最大値V(MAX)はさらに大きくなる。このとき、頻度分布における中央値V(50)および標準偏差σは、最大値V(MAX)とともに大きくなる。そのため、ノック判定レベルV(KD)が大きくなる。
ノック判定レベルV(KD)よりも小さい強度値LOG(V)は、ノッキングが発生したサイクルにおける強度値LOG(V)とは判定されないため、ノック判定レベルV(KD)が大きくなると、それだけ、ノッキングが発生していても、ノッキングが発生していないと判定される頻度が高くなる。
そこで、本実施の形態においては、図12で示すように、破線で囲まれる領域内の強度値LOG(V)を用いることで、しきい値V(1)よりも大きい強度値LOG(V)を除外して中央値V(50)および標準偏差σが算出される。図12は、算出された強度値LOG(V)を、その強度値LOG(V)が得られたサイクルにおける相関係数Kごとにプロットした図である。
しきい値V(1)は、強度値LOG(V)の頻度分布の中央値に、中央値以下の強度値LOG(V)における標準偏差と係数U(2)(U(2)は定数で、たとえばU(2)=3)との積を加算した値である。
しきい値V(1)より小さい強度値LOG(V)のみを抽出して中央値V(50)および標準偏差σを算出することにより、中央値V(50)および標準偏差σが過大にならず、安定した値となる。これにより、ノック判定レベルV(KD)が過大になることを抑制することができる。そのため、ノッキングが発生していても、ノッキングが発生していないと判定される頻度が高くなることを抑制することができる。
なお、中央値V(50)および標準偏差σを算出するために用いられる強度値LOG(V)の抽出方法は、これに限らない。たとえば、図13に示すように、前述のしきい値V(1)よりも小さい強度値LOG(V)のうち、相関係数Kがしきい値K(1)より大きい点火サイクルにおいて算出された強度値LOG(V)を抽出するようにしてもよい。
相関係数Kがしきい値K(1)より大きい強度値LOG(V)を抽出することにより、ノイズ成分の振動に起因する振動の波形と同じ波形や近い波形が検出された点火サイクルにおける強度値を抽出せずに、それら以外の強度値LOG(V)を抽出することができる。すなわち、ノイズ成分の振動に起因する振動の強度値LOG(V)を取除くことができる。このような強度値LOG(V)に基づいて中央値V(50)および標準偏差σを算出することにより、ノック判定レベルV(KD)が算出される。そのため、ノイズ成分の影響が抑制された過去の点火サイクルにおける振動の状況に基づいて、ノッキングの発生頻度を判定することができる。
図14を参照して、本実施の形態に係る点火時期制御装置であるエンジンECU200が、ノッキングが発生したか否かを1点火サイクルごとに判定して点火時期を制御するために実行するプログラムの制御構造について説明する。
ステップ(以下、ステップをSと略す)100にて、エンジンECU200は、クランクポジションセンサ306から送信された信号に基づいて、エンジン回転数NEを検出するとともに、エアフローメータ314から送信された信号に基づいて、吸入空気量KLを検出する。
S102にて、エンジンECU200は、ノックセンサ300から送信された信号に基づいて、エンジン100の振動の強度を検出する。振動の強度は、ノックセンサ300の出力電圧値で表される。なお、ノックセンサ300の出力電圧値と対応した値で振動の強度を表してもよい。強度の検出は、燃焼行程において上死点から90度(クランク角で90度)までの間で行なわれる。
S104にて、エンジンECU200は、ノックセンサ300の出力電圧値(振動の強度を表わす値)を、クランク角で5度ごとに(5度分だけ)積算した値(積算値)を算出する。積算値の算出は、第1の周波数帯A〜第3の周波数帯Cの振動ごとに行なわれる。さらに第1の周波数帯A〜第3の周波数帯Cの積算値が、クランク角度に対応して加算されて、エンジン100の振動波形が検出される。
S106にて、エンジンECU200は、第1の周波数帯A〜第3の周波数帯Cの合成波形(エンジン100の振動波形)における積算値のうち、最も大きい積算値(ピーク値P)を算出する。
S108にて、エンジンECU200は、エンジン100の振動波形を正規化する。ここで、正規化とは、算出されたピーク値で、各積算値を除算することにより、振動の強度を0〜1の無次元数で表わすことをいう。
S110にて、エンジンECU200は、正規化された振動波形とノック波形モデルとの偏差に関する値である相関係数Kを算出する。S112にて、エンジンECU200は、ノック強度Nを算出する。
S114にて、エンジンECU200は、相関係数Kが予め定められた値よりも大きく、かつノック強度Nが判定値V(KX)よりも大きいか否かを判別する。相関係数Kが予め定められた値よりも大きく、かつノック強度Nが判定値V(KX)よりも大きい場合(S114にてYES)、処理はS116に移される。そうでない場合(S114にてNO)、処理はS120に移される。
S116にて、エンジンECU200は、エンジン100にノッキングが発生したと判定する。S118にて、エンジンECU200は、点火時期を遅角する。S120にて、エンジンECU200は、エンジン100にノッキングが発生していないと判定する。S122にて、エンジンECU200は、点火時期を進角する。
図15を参照して、本実施の形態に係る点火時期制御装置であるエンジンECU200が、判定値V(KX)の補正量を設定するとともに、判定値V(KX)を補正するために実行するプログラムの制御構造について説明する。
S200にて、エンジンECU200は、ノックセンサ300から送信された信号に基づいて検出される強度Vから、強度値LOG(V)を算出する。ここで、強度Vは、予め定められたクランク角の間におけるピーク値(5度ごとの積算値のピーク値)である。
S202にて、エンジンECU200は、強度値LOG(V)が前述のしきい値V(1)より小さいか否かを判別する。強度値LOG(V)が前述のしきい値V(1)より小さい場合(S202にてYES)、処理はS204に移される。そうでない場合(S202にてNO)、処理はS200に戻される。
S204にて、エンジンECU200は、抽出された強度値LOG(V)について、中央値V(50)および標準偏差σを算出する。なお、中央値V(50)および標準偏差σの算出は、M(Mは自然数で、たとえばM=200)サイクル分の強度値LOG(V)が抽出されるごとに行なうようにしてもよい。
S206にて、エンジンECU200は、中央値V(50)および標準偏差σに基づいて、ノック判定レベルV(KD)を算出する。
S208にて、エンジンECU200は、抽出された強度値LOG(V)のうちの、ノック判定レベルV(KD)よりも大きい強度値LOG(V)の割合を、ノック占有率KCとしてカウントする。
S210にて、エンジンECU200は、N(1)(N(1)は自然数で、たとえばN(1)=150)サイクル分以上の強度値LOG(V)が抽出されているか否かを判別する。N(1)サイクル分以上の強度値LOG(V)が抽出されている場合(S210にてYES)、処理はS212に移される。そうでない場合(S210にてNO)、処理はS200に戻される。
S212にて、エンジンECU200は、エンジン100の回転数が、低回転領域であるか、中回転領域であるか、高回転領域であるかを判断する。エンジンECU200は、エンジン100の現在の回転数が、予め定められた回転数R(1)よりも小さい場合に、低回転領域と、予め定められた回転数R(1)よりも大きく、予め定められた回転数R(2)(R(2)>R(1))よりも小さい場合に、中回転領域と、予め定められた回転数R(2)よりも大きい場合に、高回転領域と、それぞれ判断する。なお、エンジン100の回転数は、現在の回転数であってもよいし、判定値V(KX)が前回補正されてから現在までの経過時間における平均回転数であってもよい。低回転領域であると判断される場合(S212にて低)、処理はS214に移される。中回転領域であると判断される場合(S212にて中)、処理はS216に移される。高回転領域であると判断される場合(S212にて高)、処理はS218に移される。
S214にて、エンジンECU200は、判定値V(KX)の補正量Hを大きくなるように設定する。設定後の判定値V(KX)の補正量H(1)は、予め定められた時間をAと、前回の判定値V(KX)の補正が行なわれてから経過した時間(補正が行なわれていない場合、エンジン100の始動時から経過した時間)をBと、設定前の判定値V(KX)の補正量(補正量の初期値)をH(0)とすると、H(1)=(B/A)×H(0)で表わされる方程式で算出される。予め定められた時間Aは、予め定められた回転数R(1)で、N(1)サイクル分の強度値LOG(V)を算出するのにかかる時間である。なお、判定値V(KX)の補正量Hの設定方法はこれに限定されない。また、予め定められた時間Aは、これに限定されない。
S216にて、エンジンECU200は、前回の判定値V(KX)の補正が行なわれてから、予め定められた時間Aが経過したか否かを判断する。予め定められた時間Aが経過した場合(S216にてYES)、処理はS220に移される。そうでない場合(S216にてNO)、処理はS200に戻される。
S218にて、エンジンECU200は、N(2)(N(2)はN(1)より大きい自然数で、たとえばN(2)=200)サイクル分以上の強度値LOG(V)が抽出されているか否かを判別する。N(2)サイクル分以上の強度値LOG(V)が抽出されている場合(S218にてYES)、処理はS220に移される。そうでない場合(S218にてNO)、処理はS200に戻される。
S220にて、エンジンECU200は、ノック占有率KCがしきい値KC(0)よりも大きいか否かを判定する。ノック占有率KCがしきい値KC(0)よりも大きい場合(S220にてYES)、処理はS222に移される。そうでない場合(S220にてNO)、処理はS224に移される。
S222にて、エンジンECU200は、判定値V(KX)を小さくする。S224にて、エンジンECU200は、判定値V(KX)を大きくする。S226にて、エンジンECUは、タイマのカウントを開始する。
以上のような構造およびフローチャートに基づく、本実施の形態に係る点火時期制御装置であるエンジンECU200の動作について説明する。
エンジン100の運転中において、クランクポジションセンサ306から送信された信号に基づいて、エンジン回転数NEが検出されるとともに、エアフローメータ314から送信された信号に基づいて、吸入空気量KLが検出される(S100)。また、ノックセンサ300から送信された信号に基づいて、エンジン100の振動の強度が検出される(S102)。
燃焼行程における上死点から90度までの間において、5度ごとの積算値が第1の周波数帯Aから第3の周波数帯Cの振動ごとに算出される(S104)。算出された第1の周波数帯A〜第3の周波数帯Cの積算値がクランク角度に対応して加算され、前述した図4に示すようなエンジン100の振動波形が検出される。
5度ごとの積算値により振動波形を検出することにより、振動の強度が細かく変化する複雑な形状の振動波形が検出されることを抑制することができる。そのため、検出された振動波形とノック波形モデルとの比較を容易にすることができる。
算出された積算値に基づいて、第1の周波数帯A〜第3の周波数帯Cの合成波形(エンジン100の振動波形)における積算値のピーク値Pが算出される(S106)。
算出されたピーク値Pでエンジン100の振動波形における積算値が除算されて、振動波形が正規化される(S108)。正規化により、振動波形における振動の強度が0〜1の無次元数で表される。これにより、振動の強度に関係なく検出された振動波形とノック波形モデルとの比較を行なうことができる。そのため、振動の強度に対応した多数のノック波形モデルを記憶しておく必要がなく、ノック波形モデルの作成を容易にすることができる。
正規化後の振動波形において振動の強度が最大になるタイミングとノック波形モデルにおいて振動の強度が最大になるタイミングとを一致させ(図6参照)、この状態で、正規化後の振動波形とノック波形モデルとのクランク角ごとの偏差の絶対値ΔS(I)が算出される。このΔS(I)の総和ΣΔS(I)およびノック波形モデルにおいて振動の強度をクランク角で積分した値Sに基づいて、K=(S−ΣΔS(I))/Sにより相関係数Kが算出される(S110)。これにより、検出された振動波形とノック波形モデルとの一致度合を数値化して客観的に判定することができる。また、振動波形とノック波形モデルとを比較することで、振動の減衰傾向など、振動の挙動からノッキング時の振動であるか否かを分析することができる。
さらに、ピーク値PをBGLで除算することにより、ノック強度Nが算出される(S112)。これにより、振動の強度に基づいて、エンジン100の振動がノッキングに起因した振動であるか否かをより詳細に分析することができる。
相関係数Kが予め定められた値よりも大きく、かつノック強度Nが判定値V(KX)よりも大きい場合(S114にてYES)、ノッキングが発生したと判定され(S116)、点火時期が遅角される(S118)。これにより、ノッキングの発生が抑制される。相関係数Kが予め定められた値よりも大きく、かつノック強度Nが判定値V(KX)よりも大きい状態ではない場合(S114にてNO)、ノッキングが発生していないと判定され(S120)、点火時期が進角される(S122)。このようにして、ノック強度Nと判定値V(KX)とを比較することにより1点火サイクルごとにノッキングが発生したか否かが判定され、点火時期が遅角されたり、進角されたりする。
ところで、ノックセンサ300の出力値のばらつきや劣化などにより、エンジン100で同じ振動が生じた場合であっても、検出される強度が変化し得る。この場合、判定値V(KX)を補正し、実際に検出される強度に応じた判定値V(KX)を用いてノッキングが発生したか否かを判定する必要がある。このように判定値V(KX)を補正するために、実際に検出される強度におけるノッキングの発生頻度を求める必要がある。
そこで、本実施の形態に係る点火時期制御装置であるエンジンECU200においては、強度値LOG(V)が算出される(S200)。算出された強度値LOG(V)が、前述のしきい値V(1)より小さい場合(S202にてYES)、中央値V(50)および標準偏差σが算出される(S204)。このような中央値V(50)および標準偏差σに基づいて、ノック判定レベルV(KD)が算出される(S206)。そのため、ノック判定レベルV(KD)が過大になることを抑制することができる。ノック判定レベルV(KD)よりも大きい強度値LOG(V)の割合が、ノック占有率KCとしてカウントされる(S208)。これにより、実際に検出される強度におけるノッキングの発生頻度を、ノック占有率KCとして求めることができる。
ところで、中央値V(50)および標準偏差σを算出するために用いられた強度値LOG(V)の数量が少ない場合、中央値V(50)および標準偏差σの精度が十分に確保されないため、ノック占有率KCの精度が悪くなることが考えられる。
そこで、中央値V(50)および標準偏差σを算出するために用いられた強度値LOG(V)の数量が、N(1)サイクル分以上の強度値LOG(V)が抽出されていない場合(S210にてNO)、N(1)サイクル分以上の強度値LOG(V)が抽出されるまで、強度値LOG(V)の算出(S200)からの処理が繰り返される。すなわち、中央値V(50)および標準偏差σを算出するために用いられた強度値LOG(V)の数量が、N(1)サイクル分より少なくなることが禁止される。N(1)は、たとえば、図16に示すように、強度値LOG(V)における標準偏差σが理想とする標準偏差に収束する最少の点火数を実験的に予め求めた値である。これにより、中央値V(50)および標準偏差σの精度を最低限確保して、ノック占有率KCの精度が悪くなることを抑制することができる。
ところで、N(1)サイクル分の強度値LOG(V)を抽出するためにかかる時間は、図17に示すように、エンジン100の回転数とほぼ反比例する関係にある。そのため、エンジン100の回転数が低い場合、N(1)サイクル分の強度値LOG(V)が抽出されるのに時間がかかる。これにより、後述する判定値V(KX)の1回の補正に時間がかかる。そのため、判定値V(KX)を補正して点火時期を適切に制御できる状態にするのにかかる時間が長くなる。
そこで、エンジン100の回転数が低回転領域と判断された場合(S212にて低)、判定値V(KX)の補正量Hが大きくなるように設定される(S214)。図18に示すように、エンジン100の回転数が予め定められた回転数R(1)より小さいほど、補正量Hが大きくされる。そのため、点火時期を適切に制御できる状態にするのにかかる時間が長くなるのを抑制することができる。また、このとき、図19に示すように、低回転領域では、N(1)サイクルの強度値LOG(V)が抽出されている。そのため、前述のように、中央値V(50)および標準偏差σの精度を最低限確保して、ノック占有率KCの精度が悪くなることを抑制することができる。
なお、エンジン100の回転数が中回転領域や高回転領域と判断された場合(S212にて中、高)、補正量Hは初期値H(0)のままである。そのため、判定値V(KX)の補正量Hが初期値H(0)より小さくなることはなく、点火時期を適切に制御できる状態にするのにかかる時間が長くなるのが抑制される。
エンジン100の回転数が予め定められた回転数R(1)より大きい場合、エンジン100の回転数が中回転領域と判断される(S212にて中)。そのため、N(1)サイクル分の強度値LOG(V)が抽出された時間T(1)は、予め定められた時間Aより短い時間であると考えられる。このような場合、抽出される強度値LOG(V)の数量をN(1)サイクル分より多くして、標準偏差σの精度をより向上させることが望ましい。そこで、エンジン100の回転数が中回転領域と判断された場合(S220にて中)、予め定められた時間Aが経過していない場合(S216にてNO)には、強度値LOG(V)の算出(S200)からの処理が繰り返される。そのため、中回転領域では、抽出される強度値LOG(V)をN(1)サイクル分より多くして標準偏差σの精度をより向上させることにより、ノック占有率KCの精度を、低回転領域と比べて向上させることができる。
エンジン100の回転数が高い場合、短い時間で多くのの強度値LOG(V)を抽出することができる。そこで、エンジン100の回転数が、高回転領域と判断された場合(S212にて高)、N(2)サイクル分の強度値LOG(V)が抽出された時点(S218にてYES)で、後述する判定値V(KX)の補正が行なわれる。N(2)は、強度値LOG(V)における標準偏差σが理想とする標準偏差に収束するのに十分な点火数を実験的に予め求めた値である。そのため、高回転領域では、早期に標準偏差σの精度を十分に向上させることができる。これにより、ノック占有率KCの判定に用いる強度値LOG(V)の数量が多くなり過ぎて、ノック占有率KCの判定にかかる時間が長くなり過ぎることを抑制することができる。
低回転領域にて、判定値V(KX)の補正量Hが変更された場合(S214)、中回転領域にて、予め定められた時間Aが経過した場合(S216にてYES)、および高回転領域にて、N(2)サイクル分の強度値LOG(V)が抽出された場合(S218にてYES)、ノック占有率KCがしきい値KC(0)よりも大きいか否かが判断される(S220)。ノック占有率KCがしきい値KC(0)よりも大きい場合(S220にてYES)、点火時期の遅角制御(S118)が行なわれる頻度が高くなるように判定値V(KX)が小さくされる(S222)。ノック占有率KCがしきい値KC(0)よりも小さい場合(S220にてNO)、点火時期の進角制御(S122)が行なわれる頻度が高くなるように判定値V(KX)が大きくされる(S224)。これにより、1点火サイクルごとのノッキング判定における判定値を適切に補正し、点火時期を適切に制御することができる。
以上のように、本実施の形態に係る点火時期制御装置であるエンジンECU200によれば、エンジンの回転数が低い場合、判定値V(KX)の補正量が大きくなるように設定される。そのため、1回の判定値V(KX)の補正に時間がかかる場合でも、1回の判定値V(KX)の補正で、点火時期を適切に制御できる状態の判定値により大きく近づかせることができる。そのため、点火時期を適切に制御できる状態にするのにかかる時間が長くなるのを抑制することができる。さらに、エンジンの回転数が低い場合、ノッキングの発生頻度の判定に用いられる強度値LOG(V)の数量が、ノッキングの発生頻度の判定精度を最低限確保することできる最少の点火数とされる。これにより、ノッキングの発生頻度の判定を早期に行ない、1回の判定値V(KX)の補正にかかる時間を短くすることができる。そのため、点火時期を適切に制御できる状態にするのにかかる時間が長くなるのを抑制することができる。その結果、点火時期を適切に制御することができる内燃機関の点火時期制御装置を提供することができる。
なお、図20に示すように、ノイズによる振動の強度が大きい場合は、ノッキング時の積算値の最大値とノイズによる積算値の最大値との差が小さく、ノック強度Nからはノッキングとノイズとを区別し難くなるおそれがある。そのため、積算値のピーク値Pの代わりに、図21に示すように、振動波形における積算値の総合計(ノック検出ゲートにおけるノックセンサ300の出力電圧値をすべて積算した値)を用いてノック強度Nを算出するようにしてもよい。すなわち、振動波形における積算値の総合計をBGLにより除算して、ノック強度Nを算出するようにしてもよい。
図21に示すように、ノイズによる振動の発生期間は、ノッキングによる振動の発生期間よりも短いので、ノッキングとノイズとでは、積算値の総合計は大きく異なり得る。したがって、積算値の総合計に基づいてノック強度Nを算出することにより、ノッキング時に算出されるノック強度Nと、ノイズにより算出されるノック強度Nとの差を大きくすることができる。これにより、ノッキングによる振動とノイズによる振動とを明確に区別することができる。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 エンジン、104 インジェクタ、106 点火プラグ、110 クランクシャフト、116 吸気バルブ、118 排気バルブ、120 ポンプ、200 エンジンECU、300 ノックセンサ、302 水温センサ、304 タイミングロータ、306 クランクポジションセンサ、308 スロットル開度センサ、314 エアフローメータ。