以下本発明の実施の形態を図面を参照して説明する。
[第1の実施形態]
図1は、本発明の一実施形態にかかる内燃機関(以下「エンジン」という)及びその制御装置の全体構成図であり、例えばV型6気筒のエンジン1の吸気管2の途中にはスロットル弁3が配されている。スロットル弁3にはスロットル弁開度THを検出するスロットル弁開度センサ4が連結されており、センサ4の検出信号は、電子制御ユニット(以下「ECU」という)5に供給される。
燃料噴射弁6はエンジン1とスロットル弁3との間かつ吸気管2の図示しない吸気弁の少し上流側に各気筒毎に設けられており、各噴射弁は図示しない燃料ポンプに接続されていると共にECU5に電気的に接続されて当該ECU5からの信号により燃料噴射弁6の開弁時間が制御される。エンジン1の各気筒には、点火プラグ7が設けられており、点火プラグ7はECU5に接続されている。ECU5は、点火プラグ7に点火信号を供給する。
スロットル弁3の下流側には吸気圧PBAを検出する吸気圧センサ8、及び吸気温TAを検出する吸気温センサ9が設けられている。エンジン1の本体には、エンジン冷却水温TWを検出する冷却水温センサ10及び非共振型の2つのノックセンサ11a,11bが装着されている。センサ8〜11bの検出信号は、ECU5に供給される。第1及び第2ノックセンサ11a,11bとしては、例えば5kHzから25kHzまでの周波数帯域の振動を検出可能なものが使用される。
吸気管2のスロットル弁3の上流側には、吸入空気流量GAを検出する吸入空気流量センサ13が設けられており、その検出信号はECU5に供給される。
ECU5には、エンジン1のクランク軸(図示せず)の回転角度を検出するクランク角度位置センサ12が接続されており、クランク軸の回転角度に応じた信号がECU5に供給される。クランク角度位置センサ12は、エンジン1の特定の気筒の所定クランク角度位置でパルス(以下「CYLパルス」という)を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点(TDC)に関し所定クランク角度前のクランク角度位置で(4気筒エンジンではクランク角180度毎に)TDCパルスを出力するTDCセンサ及びTDCパルスより短い一定クランク角周期(例えば6度周期)で1パルス(以下「CRKパルス」という)を発生するCRKセンサから成り、CYLパルス、TDCパルス及びCRKパルスがECU5に供給される。これらのパルスは、燃料噴射時期、点火時期等の各種タイミング制御、エンジン回転数(エンジン回転速度)NEの検出に使用される。
エンジン1は、吸気弁(図示せず)の弁リフト量及び開角(開弁期間)を連続的に変更する第1弁作動特性可変機構と、吸気弁を駆動するカムの、クランク軸回転角度を基準とした作動位相を連続的に変更する第2弁作動特性可変機構とを有する弁作動特性可変装置20を備えている。ECU5は、弁作動特性可変装置20にリフト量制御信号及び作動位相制御信号を供給し、吸気弁の作動制御を行う。第1及び第2弁作動特性可変機構の構成は、それぞれ例えば特開2008−25418号公報及び特開2000−227013号公報に示されている。
ECU5は、各種センサからの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理ユニット(以下「CPU」という)、該CPUで実行される各種演算プログラム及び演算結果等を記憶する記憶回路(メモリ)、燃料噴射弁6及び点火プラグ7に駆動信号を供給する出力回路等から構成される。
エンジン1は、図2(a)に示すように配置された#1〜#6気筒を有し、第1ノックセンサ11aは、#1〜#3気筒からなる第1気筒群に対応して設けられ、第2ノックセンサ11bは、#4〜#6気筒からなる第2気筒群に対応して設けられている。
図2(b)は、ECU5の入力回路に含まれるノックセンサ信号入力部の構成、及び該ノックセンサ信号入力部と第1及び第2ノックセンサ11a,11bとの接続を示す回路図である。この図において、ノックセンサ11a,11bは、それぞれコンデンサと抵抗からなる等価回路で示されている。第1ノックセンサ11aは、一対の出力端子111,112を有し、出力端子111,112はそれぞれ入力端子PI1,PI2に接続されている。第2ノックセンサ11bは、一対の出力端子113,114を有し、出力端子113,114も、それぞれ入力端子PI1,PI2に接続されている。すなわち、本実施形態では、2つのノックセンサ11a,11bが並列に入力端子PI1,PI2に接続されている。
入力端子PI2はアースに接続されている。入力端子PI1は、コンデンサC1を介してアースに接続され、抵抗R1を介して電源VCCに接続されるとともに、抵抗R2とコンデンサC2の直列回路を介して増幅回路121の入力端子122に接続されている。
増幅回路121は、差動増幅器123と、ダイオードD1と、抵抗R3〜R6と、コンデンサC3とからなる。ダイオードD1は入力端子122とアースとの間に接続されている。差動増幅器123の非反転入力は、抵抗R3を介して電源VCCに接続されるとともに、抵抗R4を介してアースに接続されている。差動増幅器123の反転入力は、抵抗R5を介して入力端子122に接続され、差動増幅器123の出力と入力端子122との間に、抵抗R6とコンデンサC3の並列回路が接続されている。増幅回路121は、25kHzより高い周波数成分を減衰させつつ入力信号を増幅する。増幅回路121の出力信号が、センサ出力信号VSとして後段のA/D変換回路に入力される。
図3は、センサ出力信号VSの信号波形の一例を示す波形図である。図3に示す気筒番号は燃焼行程にある気筒を示し、「CAS」は後述するノッキング判定のためにサンプリングを行う角度期間を示している。センサ出力信号VSは、第1及び第2ノックセンサ11a,11bのそれぞれの出力信号が加算された信号となる。そのため、主として第1ノックセンサ11aによって検出される#1〜#3気筒に対応する検出信号には、第2ノックセンサ11bの出力信号がノイズとして重畳され、主として第2ノックセンサ11bによって検出される#4〜#6気筒に対応する検出信号には、第1ノックセンサ11aの出力信号がノイズとして重畳されている。
本実施形態では、図2(b)に示すように2つのノックセンサ11a,11bのそれぞれ出力端子を一対の入力端子PI1,PI2に接続し、増幅回路121及びその周辺回路を1つのノックセンサに対応するもので構成するようにしたので、入力回路の構成を簡略化することができる。そして、重畳される他方のノックセンサの出力信号の影響を後述するノイズ除去処理によって除くことにより、判定精度を確保することが可能となる。
次に本実施形態におけるノッキング判定手法の概要を説明する。図4(a)は、ノックセンサ11の出力信号波形を示し、図4(b)は、同図(a)の期間TSの波形を拡大して示す図である。本実施形態では、サンプリング周期20マクロ秒で検出される50個のデータを対象として、高速フーリエ変換による周波数成分分析を行う。その周波数成分分析の結果が図4(c)に示されている。図4(c)の縦軸はエネルギ強度PSであり、本実施形態では、5kHzから25kHzまでの周波数帯域における1kHz毎の周波数(5,6,7,…,24,25kHz)に対応するエネルギ強度PSが、クランク角度6度毎に算出される。
これにより、周波数成分の時系列データが図5(a)に示すように2次元マトリクス(以下「スペクトル時系列マップ」という)として算出される。スペクトル時系列マップは縦方向が周波数f[kHz]であり、横方向がクランク角度(燃焼行程が開始する上死点後のクランク角度)CA[deg]である。ここで、縦方向及び横方向のインデクスとしてそれぞれ「j」(j=0〜20)及び「i」(i=0〜14)を用い、スペクトル時系列マップの要素を強度パラメータKMAP(j,i)と表示する。例えば強度パラメータKMAP(0,0)は、左下端の「34」、強度パラメータKMAP(0,14)は右下端の「31」、強度パラメータKMAP(20,0)は左上端の「56」、強度パラメータKMAP(20,14)は右上端の「30」に相当する。なお強度パラメータKMAPは相対強度を示す無次元量である。
図5(a)のスペクトル時系列マップを二値化すると図5(b)の二値化スペクトル時系列マップが得られる。図5(b)のマップの要素である二値化強度パラメータNKMAP(j,i)は、強度パラメータKMAP(j,i)が「50」以上であるとき「1」、「50」未満であるとき「0」をとる。
図5(b)に示す二値化スペクトル時系列マップは、図27に破線で示すノッキング発生が発生したときに得られるマップである。一方図27に実線で示す着座ノイズの二値化スペクトル時系列マップは、図6に示すようになり、図5(b)に示すノッキング発生時のマップと明確に相違するため、着座ノイズをノッキング発生と誤判定することがなく、正確なノッキング判定を行うことができる。
本実施形態ではさらに、ノッキングが発生していないと判定されたときの二値化スペクトル時系列マップに基づいて、ノイズに対応する二値化スペクトル時系列マップ(以下単に「ノイズマップ」という)を学習演算により生成し、ノイズマップ上のノイズ学習値を、検出データから算出される二値化スペクトル時系列マップ上の対応する値から差し引くことにより、ノイズの影響を除去するようにしている。
図7(a)は、学習演算により得られたノイズマップの一例を示す図であり、クランク角度6度のタイミングで6〜25kHzの帯域でノイズ成分が表れている。図7(b)は、図5(b)に示す二値化スペクトル時系列マップから図7(a)に示すノイズ成分を減算することによりノイズ除去処理を行った後の二値化スペクトル時系列マップを示す。このようにノイズ除去処理を行うことにより、ノイズの影響を除き、より正確な判定が可能となる。
また本実施形態では、検出データから得られる二値化スペクトル時系列マップを、図8(a)に示すマスタパターンマップと比較することにより、ノッキングが発生したか否かを判定するようにしている。マスタパターンマップは、ノッキングが発生したときに得られる典型的な二値化スペクトル時系列マップに相当するものである。
上記比較は具体的には以下のように行われる。二値化スペクトル時系列マップ上の二値化強度パラメータNKMAP(j,i)と、マスタパターンマップ上のマスタパラメータMMAP(j,i)との積を積算することにより、強度積算値SUMKを算出し、マスタパラメータMMAP(j,i)そのものの積算値である基準積算値SUMMを算出し、基準積算値SUMMに対する強度積算値SUMKの比率として適合率PFIT(=SUMK/SUMM)を算出する。そして、適合率PFITが判定閾値SLVLを超えるとノッキングが発生したと判定する。
図8(b)は、図7(b)に示す強度パラメータKMAP(j,i)と、図8(a)に示すマスタパターンマップ上のマスタパラメータMMAP(j,i)との積(KMAP(j,i)×MMAP(j,i))のマップを示す。この例では、図8(b)の積マップは、図7(b)に示すもとのマップと全く同一となり、適合率PFITは、「0.863」となる。
なお、後述する実際のノッキング判定処理においては、上記強度積算値SUMK及び基準積算値SUMMを算出する際にエンジン運転状態に応じた重み付けを行うようにしている。この重み付けを行うための重み付けパラメータWMAP(j,i)が設定されている重み付けマップの一例を図9に示す。図9に示す重み付けマップは、周波数6kHzの成分についてクランク角12度から72度までのパラメータ値、周波数10kHzの成分についてクランク角36度から66度までのパラメータ値、並びに周波数11kHz、13kHz、15kHz、及び20kHzの成分についてクランク角12度から30度までのパラメータ値に対して重みが付けられるように設定されている。
図9に示すような重み付けマップによる重み付けは、エンジン運転状態に依存して二値化スペクトル時系列マップの周波数に対する特性が変化することを補償するために行われるものである。エンジン運転状態に応じて重み付けを行うことにより、エンジン運転状態の変化に拘わらず正確な判定を行うことが可能となる。
本実施形態におけるノックセンサ出力信号VSのサンプリング周期は20マイクロ秒とし、50個のサンプリング値を用いて周波数成分分析を行う。これにより、25kHzまでの周波数成分を1kHz間隔で算出することが可能となる。なお、クランク軸が6度回転するのに要する時間TD6は、エンジン回転数NEが1000rpmのとき1ミリ秒であり50個のサンプリング値が得られる。また例えばエンジン回転数NEが2000rpmのときは時間TD6が500マイクロ秒となり、サンプリングデータの数は25となるので、周波数成分分析は、直前に検出された、クランク角12度分のサンプリング値を用いてクランク角6度毎に行われる。
周波数成分分析(高速フーリエ変換)は、図示しない処理において実行され、クランク角度6度毎に、演算の結果得られる周波数毎の強度値STFT(k)(k=0〜(KN−1))がECU5の記憶回路(RAM)に格納される。KNは、上死点後6度から90度までのクランク角度範囲で得られる強度値の数であり、本実施形態では315(図5〜図8に示すマップ上のデータ数)である。
図10は、上述した手法によりノッキング判定を行う処理のフローチャートであり、この処理はECU5のCPUでTDCパルスの発生に同期して実行される。
ステップS11では、図12に示す二値化データマップ算出処理を実行し、上述した二値化スペクトル時系列マップの算出を行う。ステップS12では、図15に示すノイズ除去処理を実行し、図7(a)に例示するような二値化ノイズマップを用いてノイズ成分を除去する処理を行う。
ステップS13では、図16に示す適合率算出処理を実行し、ノイズ成分が除去された二値化スペクトル時系列マップと、マスタパターンマップとを用いて適合率PFITを算出する。
ステップS14では、エンジン回転数NE及び吸気圧PBAに応じて例えば図11に示すように設定されたSLVLマップを検索し、判定閾値SLVLを算出する。SLVLマップに設定されている格子点以外のエンジン回転数NE及び吸気圧PBAについては、補間演算により判定閾値SLVLを算出する。
ステップS15では、ステップS13で算出される適合率PFITが判定閾値SLVLより大きいか否かを判別し、その答が肯定(YES)であるときは、ノッキングが発生したと判定し、ノッキングフラグFKNOCKを「1」に設定する(ステップS16)。
ステップS15でPFIT≦SLVLであるときは、ノッキングは発生していないと判定し、ノッキングフラグFKNOCKを「0」に設定する(ステップS17)。次いで図18に示すノイズ学習処理を実行し、二値化ノイズマップ(図7(a)参照)の更新を行う。
図12は、図10のステップS11で実行される二値化データマップ算出処理のフローチャートである。
ステップS21では、クランク角インデクスi,周波数インデクスj,及びメモリアドレスインデクスkをいずれも「0」に初期化する。ステップS22では、周波数インデクスjが周波数データ数JN(本実施形態では21)から「1」を減算した値より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS23に進み、クランク角インデクスiがクランク角データ数IN(本実施形態では15)から「1」を減算した値より大きいか否かを判別する。
最初はステップS23の答も否定(NO)であるので、メモリアドレスインデクスkを下記式(1)により算出する(ステップS24)。したがって、メモリアドレスインデクスkは、クランク角インデクスi及び周波数インデクスjの増加に伴って、0から(JN×IN−1)まで変化する。
k=i+j×IN (1)
ステップS25では、強度パラメータKMAP(j,i)を、メモリに格納されている強度値STFT[k]に設定し、ステップS26では、図13に示す二値化処理を実行する。次いでクランク角インデクスiを「1」だけインクリメントする(ステップS27)。
図13のステップS31では、エンジン回転数NE及び吸気圧PBAに応じて図14に示すBLVLマップを検索し、二値化閾値BLVLを算出する。BLVLマップは、エンジン回転数NEが増加するほど二値化閾値BLVLが増加し、かつ吸気圧PBAが増加するほど二値化閾値BLVLが増加するように設定されている。ラインL1で示される設定値は、第1所定吸気圧PBA1(例えば53kPa(400mmHg))から第2所定吸気圧PBA2(例えば80kPa(600mmHg))の範囲で適用される。ラインL2及びL3は、それぞれ第3所定吸気圧PBA3(例えば93kPa(700mmHg))及び第4所定吸気圧PBA4(例えば107kPa(800mmHg))に対応する。
ステップS32では、強度パラメータKMAP(j,i)が二値化閾値BLVLより大きいか否かを判別し、その答が肯定(YES)であるときは、二値化強度パラメータNKMAP(j,i)を「1」に設定する(ステップS33)。一方、ステップS32でKMAP(j,i)≦BLVLであるときは、二値化強度パラメータNKMAP(j,i)を「0」に設定する(ステップS34)。
図12に戻り、ステップS23の答が否定(NO)である間はステップS24〜S27を繰り返し実行し、クランク角インデクスiが(IN−1)を超えると、ステップS28に進み、クランク角インデクスiを「0」に戻すとともに、周波数インデクスjを「1」だけインクリメントし、ステップS22に戻る。
ステップS22の答が否定(NO)である間は、ステップS23〜S28を繰り返し実行し、周波数インデクスjが(JN−1)を超えると、本処理を終了する。
図12の処理により、メモリに格納されている、周波数成分分析の結果として得られた強度値STFT[k]が、図5(a)に示すスペクトル時系列マップの形式に変換されるとともに、強度パラメータKMAP(j,i)の二値化が行われ、二値化強度パラメータNKMAP(j,i)が算出される。すなわち、図5(b)に示す二値化スペクトル時系列マップが生成される。
図15は、図10のステップS12で実行されるノイズ除去処理のフローチャートである。
ステップS41では、クランク角インデクスi及び周波数インデクスjをともに「0」に初期化する。ステップS42では、周波数インデクスjが周波数データ数JNから「1」を減算した値より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS43に進み、クランク角インデクスiがクランク角データ数INから「1」を減算した値より大きいか否かを判別する。
最初はステップS43の答も否定(NO)であるので、下記式(2)により二値化強度パラメータNKMAP(j,i)を補正し、補正二値化強度パラメータJKMAP(j,i)を算出する。式(2)のNNMAP(j,i)は、学習処理により更新される二値化ノイズマップ上の二値化ノイズパラメータである。
JKMAP(j,i)=NKMAP(j,i)−NNMAP(j,i) (2)
ステップS45では、補正二値化強度パラメータJKMAP(j,i)が負の値であるか否かを判別し、その答が否定(NO)であるときは直ちにステップS47に進む。JKMAP(j,i)<0であるときは、JKMAP(j,i)を「0」に設定し(ステップS46)、ステップS47に進む。
ステップS47ではクランク角インデクスiを「1」だけインクリメントし、ステップS43に戻る。ステップS43の答が否定(NO)である間はステップS44〜S47を繰り返し実行し、クランク角インデクスiが(IN−1)を超えると、ステップS48に進み、クランク角インデクスiを「0」に戻すとともに、周波数インデクスjを「1」だけインクリメントし、ステップS42に戻る。ステップS42の答が否定(NO)である間は、ステップS43〜S48を繰り返し実行し、周波数インデクスjが(JN−1)を超えると、本処理を終了する。
図15の処理により、ノイズが除去された補正二値化強度パラメータJKMAP(j,i)が得られる(図7(b)参照)。
図16は、図10のステップS13で実行される適合率算出処理のフローチャートである。
ステップS51では、エンジン回転数NE及び吸気圧PBAに応じてマスタパターンマップを選択し、ステップS52では、エンジン回転数NE及び吸気圧PBAに応じて重み付けマップを選択する。重み付けマップは、エンジン運転状態に依存して二値化スペクトル時系列マップの周波数に対する特性が変化することを補償するために設けられている。エンジン回転数NEまたは吸気圧PBA(エンジン負荷)が変化すると、燃焼室内の温度が変化し、二値化スペクトル時系列マップが変化する。したがって、エンジン回転数NE及び吸気圧PBAに応じてマスタパターンマップ及び重み付けマップを選択することにより、エンジン運転状態の変化に拘わらず正確な判定を行うことが可能となる。
本実施形態では、図17に示すようにエンジン回転数NE及び吸気圧PBAにより定義される9個のエンジン運転領域に対応して、9個のマスタパターンマップ及び9個の重み付けマップが予め設定されており、ステップS51では9個のマスタパターンマップうちの1つが選択され、ステップS52では、9個の重み付けマップのうちの1つが選択される。図17において低回転領域は例えばエンジン回転数NEが2000rpm以下の領域とされ、中回転領域は2000rpmから4000rpmまでの領域とされ、高回転領域は4000rpmを超える領域とされる。また低負荷領域は例えば吸気圧PBAが67kPa(500mmHg)以下の領域とされ、中負荷領域は67kPaから93kPa(700mmHg)までの領域とされ、高負荷領域は93kPaを超える領域とされる。
ステップS53では、クランク角インデクスi及び周波数インデクスjをともに「0」に初期化するとともに、強度積算値SUMK及び基準積算値SUMMを「0」に初期化する。強度積算値SUMK及び基準積算値SUMMは、後述するステップS57で更新され、ステップS60で適合率PFITの算出に適用される。
ステップS54では、周波数インデクスjが周波数データ数JNから「1」を減算した値より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS55に進み、クランク角インデクスiがクランク角データ数INから「1」を減算した値より大きいか否かを判別する。
最初はステップS55の答も否定(NO)であるので、ステップS56に進み、下記式(3)及び(4)により、重み付けマスタパラメータMMW及び重み付け積パラメータKMWを算出する。下記式のWMAP(j,i)は、重み付けマップに設定されている重み付けパラメータである。重み付け積パラメータKMWは、マスタパラメータMMAP(j,i)と補正二値化強度パラメータJKMAP(j,i)との積を、重み付けパラメータWMAP(j,i)によって重み付けしたものである。
MMW=MMAP(j,i)×WMAP(j,i) (3)
KMW=MMAP(j,i)×JKMAP(j,i)×WMAP(j,i) (4)
ステップS57では、下記式(5)及び(6)により、重み付けマスタパラメータMMW及び重み付け積パラメータKMWを積算し、基準積算値SUMM及び強度積算値SUMKを算出する。
SUMM=SUMM+MMW (5)
SUMK=SUMK+KMW (6)
ステップS58では、クランク角インデクスiを「1」だけインクリメントし、ステップS55に戻る。ステップS55の答が否定(NO)である間はステップS56〜S58を繰り返し実行し、クランク角インデクスiが(IN−1)を超えると、ステップS59に進み、クランク角インデクスiを「0」に戻すとともに、周波数インデクスjを「1」だけインクリメントし、ステップS54に戻る。ステップS54の答が否定(NO)である間は、ステップS55〜S59を繰り返し実行し、周波数インデクスjが(JN−1)を超えると、ステップS60に進み、下記式(7)により適合率PFITを算出する。
PFIT=SUMK/SUMM (7)
図18は、図10のステップS18で実行されるノイズ学習処理のフローチャートである。
ステップS71では、クランク角インデクスi、周波数インデクスj、加算学習パラメータLK、及び減算学習パラメータLMをいずれも「0」に初期化する。ステップS72では、周波数インデクスjが周波数データ数JNから「1」を減算した値より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS73に進み、クランク角インデクスiがクランク角データ数INから「1」を減算した値より大きいか否かを判別する。
最初はステップS73の答も否定(NO)であるので、ステップS74に進み、二値化強度パラメータNKMAP(j,i)が二値化ノイズパラメータNNMAP(j,i)と等しいか否かを判別する。この答が肯定(YES)であるときは、直ちにステップS80に進む。
ステップS74の答が否定(NO)であって、二値化強度パラメータNKMAP(j,i)が二値化ノイズパラメータNNMAP(j,i)と異なるときは、二値化強度パラメータNKMAP(j,i)が二値化ノイズパラメータNNMAP(j,i)より大きいか否かを判別する(ステップS75)。この答が肯定(YES)であるときは、加算学習パラメータLKを「1」に設定し、減算学習パラメータLMを「0」に設定する(ステップS76)。一方、NKMAP(j,i)<NNMAP(j,i)であるときは、加算学習パラメータLKを「0」に設定し、減算学習パラメータLMを「1」に設定する(ステップS77)。
ステップS78では、下記式(8)及び(9)により、加算学習パラメータLK及び減算学習パラメータLMを修正する。式(8)、(9)のDSNOISEは、例えば0.1に設定されるノイズ学習係数である。
LK=DSNOISE×LK (8)
LM=DSNOISE×LM (9)
ステップS79では、下記式(10)に加算学習パラメータLK及び減算学習パラメータLMを適用し、ノイズパラメータNMAP(j,i)を更新する。次に説明する図19の処理で、ノイズパラメータNMAP(j,i)を二値化することにより、二値化ノイズパラメータNNMAP(j,i)が算出される。
NMAP(j,i)=NMAP(j,i)+LK−LM (10)
ステップS80ではクランク角インデクスiを「1」だけインクリメントし、ステップS73に戻る。ステップS73の答が否定(NO)である間はステップS74〜S80を繰り返し実行し、クランク角インデクスiが(IN−1)を超えると、ステップS81に進み、クランク角インデクスiを「0」に戻すとともに、周波数インデクスjを「1」だけインクリメントし、ステップS72に戻る。ステップS72の答が否定(NO)である間は、ステップS73〜S81を繰り返し実行し、周波数インデクスjが(JN−1)を超えると、ステップS82に進み、図19に示すノイズマップ更新処理を実行する。
図19のステップS91では、クランク角インデクスi及び周波数インデクスjをともに「0」に初期化する。ステップS92では、周波数インデクスjが周波数データ数JNから「1」を減算した値より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS93に進み、クランク角インデクスiがクランク角データ数INから「1」を減算した値より大きいか否かを判別する。
最初はステップS93の答も否定(NO)であるので、ステップS94に進み、ノイズパラメータNMAP(j,i)がノイズ二値化閾値NLVL(例えば0.8)より大きいか否かを判別する。この答が肯定(YES)であるときは、二値化ノイズパラメータNNMAP(j,i)を「1」に設定する(ステップS95)。一方、NMAP(j,i)≦NLVLであるときは、二値化ノイズパラメータNNMAP(j,i)を「0」に設定する(ステップS96)。
ステップS97ではクランク角インデクスiを「1」だけインクリメントし、ステップS93に戻る。ステップS93の答が否定(NO)である間はステップS94〜S97を繰り返し実行し、クランク角インデクスiが(IN−1)を超えると、ステップS98に進み、クランク角インデクスiを「0」に戻すとともに、周波数インデクスjを「1」だけインクリメントし、ステップS92に戻る。ステップS92の答が否定(NO)である間は、ステップS93〜S98を繰り返し実行し、周波数インデクスjが(JN−1)を超えると、本処理を終了する。
図18のステップS75でNKMAP(j,i)>NNMAP(j,i)であるときは、ステップS78でLK=0.1,LM=0となり、式(10)により、ノイズパラメータNMAP(j,i)が「0.1」だけインクリメントされる。一方、ステップS75でNKMAP(j,i)<NNMAP(j,i)であるときは、ステップS78でLK=0,LM=0.1となり、式(10)により、ノイズパラメータNMAP(j,i)が「0.1」だけデクリメントされる。そして、図19の処理でノイズパラメータNMAP(j,i)がノイズ二値化閾値NLVLより大きいとき、二値化ノイズパラメータNNMAP(j,i)が「1」に設定される一方、ノイズパラメータNMAP(j,i)がノイズ二値化閾値NLVL以下であるときは、二値化ノイズパラメータNNMAP(j,i)が「0」に設定される。
図18及び図19の処理により、ノッキングが発生していないと判定されたときの二値化強度パラメータNKMAP(j,i)に応じて二値化ノイズマップが更新され、例えば吸気弁の着座ノイズのように定常的に発生するノイズが二値化ノイズマップに反映される。また2つのノックセンサ11a及び11bの出力信号を単一の入力回路に入力することに起因して、一つのノックセンサ出力信号が他のノックセンサ出力信号に混合されてノイズ成分となるおそれがあるが、そのようなノイズ成分も二値化ノイズマップに反映される。その結果、ノイズの影響を除いて高精度の判定を行うことが可能となる。
なお、ノイズ除去処理(図10,ステップS12)を行わずに、二値化強度パラメータNKMAPをそのまま用いて適合率PFITの算出を行うようにしてよい。ノイズ除去処理を行わない場合には、ノイズの影響を受ける可能性が高くなるが、図27を参照して説明したようにノイズと区別してノッキングの判定を行うことができるからである。
以上詳述したように本実施形態では、クランク角6度間隔でノックセンサ11の出力信号の高速フーリエ変換演算(周波数成分分析)が行われ、その結果得られる、5kHz〜25kHzの周波数成分の強度の時系列データであるスペクトル時系列マップが生成される。すなわち、スペクトル時系列マップの要素が二次元配列データである強度パラメータKMAP(j,i)としてメモリに格納される。そして、強度パラメータKMAP(j,i)を二値化することにより、二値化強度パラメータNKMAP(j,i)が算出され、該二値化強度パラメータNKMAP(j,i)に基づいてノッキングが発生したか否かが判定される。二値化強度パラメータNKMAP(j,i)には、エンジンの回転に伴う周波数成分分布の変化が反映されるので、二値化強度パラメータNKMAP(j,i)と、ノッキング発生時に特有の変化パターンに対応するマスタパターンマップ上のマスタパラメータMMAP(j,i)とを比較することにより、ノッキングの発生を正確に判定することができる。また周波数成分分析の結果得られる強度パラメータKMAP(j,i)を二値化することにより、データ量が減少するとともに時系列データの変化パターンが単純化されるので、メモリ容量を低減するとともに演算速度を高めることができる。
また二値化強度パラメータNKMAP(j,i)(JKMAP(j,i))が、マスタパラメータMMAP(j,i)に近い変化パターンを示すときに、ノッキングが発生している可能性が高いので、二値化強度パラメータNKMAP(j,i)(JKMAP(j,i))とマスタパラメータMMAP(j,i)との類似性(相関性)を示すパラメータを算出することにより、正確な判定を行うことができる。
本実施形態ではこの類似性(相関性)を示すパラメータとして適合率PFITを用い、適合率PFITが判定閾値SLVLを超えたときにノッキングが発生したと判定される。適合率PFITを用いることにより、二値化強度パラメータNKMAP(j,i)(JKMAP(j,i))とマスタパラメータMMAP(j,i)との類似性(相関性)を比較的簡単な演算で的確に評価し、正確な判定を行うことができる。
また二値化強度パラメータNKMAP(j,i)に基づいて、ノイズ成分の時系列データNNMAP(j,i)が算出され、二値化強度パラメータNKMAP(j,i)がノイズ成分の時系列データであるノイズパラメータNNMAP(j,i)により補正され、補正二値化強度パラメータJKMAP(j,i)に基づいてノッキング判定が行われる。したがって、上述した着座ノイズのように定常的に表れるノイズ成分や重畳される他のノックセンサ出力信号の影響を除去して、より正確な判定を行うことが可能となる。
また二値化強度パラメータNKMAP(j,i)(JNKMAP(j,i))及びマスタパラメータMMAP(j,i)に対して、周波数に応じて設定された重み付けパラメータWMAP(j,i)を乗算して、適合率PFITが算出される。ノッキングが発生したときに大きくなる周波数成分は予め判明しているので、その周波数の近傍の周波数に対応するパラメータに大きな重みを付けることにより、判定精度を高めることができる。
本実施形態では、ECU5がノッキング判定手段、周波数成分分析手段、データ格納手段、二値化手段、ノイズ成分算出手段、及びノイズ補正手段を構成する。具体的には、図10のステップS12〜S18がノッキング判定手段に相当し、ステップS11(図12の処理)がデータ格納手段及び二値化手段に相当する。またステップS18がノイズ成分算出手段に相当し、ステップS12がノイズ補正手段に相当する。
[第2の実施形態]
本実施形態は、第1の実施形態におけるノッキング判定処理(図10)を、図20に示す処理に変更したものである。以下に説明する点以外は、第1の実施形態と同一である。
図20に示す処理では、先ず二値化する前の強度パラメータKMAPについて、ノイズ除去処理を実行して、補正強度パラメータJKMAPIを算出し(ステップS12a)、補正強度パラメータJKMAPIを二値化して、補正二値化強度パラメータJKMAPを算出する(ステップS11b)。
図21(a)は、本実施形態におけるスペクトル時系列マップの一例を示し、図21(b)は、本実施形態におけるノイズマップの一例を示す図であり、二値化されていないノイズ学習値が設定されている。ノイズ除去処理は、図21(a)のスペクトル時系列マップの各マップ値から図21(b)のノイズマップ値を減算することにより行われ、図22(a)に示す補正スペクトル時系列マップが得られる。そして、図22(a)の補正スペクトル時系列マップを二値化することにより、図22(b)に示す補正二値化強度パラメータマップが得られる。
図23は、図20のステップS11aで実行されるデータマップ算出処理のフローチャートである。この処理は、図12に示す二値化データマップ算出処理のステップS26を削除したものである。すなわち、強度値STFT(k)をスペクトル時系列マップの形式に変換する処理のみ行われる。
図24は、図20のステップS12aで実行されるノイズ除去処理のフローチャートである。この処理は、図15に示す処理のステップS44〜S46をそれぞれステップS44a〜S46aに変更したものである。
ステップS44aでは、下記式(2a)により、補正強度パラメータJKMAPIを算出する。式(2a)のNLMAP(j,i)は、学習処理により更新されるノイズマップ(図21(b))上のノイズパラメータである。
JKMAPI(j,i)=KMAP(j,i)−NLMAP(j,i) (2a)
ステップS45aでは、補正強度パラメータJKMAPI(j,i)が負の値であるか否かを判別し、その答が否定(NO)であるときは直ちにステップS47に進む。JKMAPI(j,i)<0であるときは、JKMAPI(j,i)を「0」に設定し(ステップS46a)、ステップS47に進む。
図24の処理により図22(a)に示す補正スペクトル時系列マップが得られる。
図25は、図20のステップS11bで実行される二値化処理のフローチャートである。この処理は図13に示す二値化処理のステップS32〜S34をそれぞれステップS32a〜34aに変更し、さらにすべてのマップ値について二値化を行うためのステップS41〜S43,S47及びS48(図24に示すステップと同じ処理を行うステップ)を追加したものである。
ステップS32aでは、補正強度パラメータJKMAPI(j,i)が二値化閾値BLVLより大きいか否かを判別し、その答が肯定(YES)であるときは、補正二値化強度パラメータJKMAP(j,i)を「1」に設定する(ステップS33a)。一方、ステップS32aでJKMAPI(j,i)≦BLVLであるときは、補正二値化強度パラメータJKMAP(j,i)を「0」に設定する(ステップS34a)。
図25の処理により、図22(a)に示すマップから図22(b)に示す補正二値化強度パラメータマップが得られる。
図26は、図20のステップS18aで実行されるノイズ学習処理のフローチャートである。この処理は、図18に示す処理のステップS74〜S78,及びS82を削除し、ステップS79をステップS79aに変更したものである。
ステップS79aでは、ノイズパラメータNLMAP(j,i)の更新を行う。具体的には、ノッキングが検出されないときに得られた強度パラメータKMAP(j,i)を下記式(31)に適用し、ノイズパラメータNLMAP(j,i)を更新する。右辺のノイズパラメータNLMAP(j,i)は、更新前のマップ値であり、DSNOISEaは例えば「0.5」に設定されるなまし係数である。
NLMAP(j,i)=NLMAP(j,i)×DSNOSEa
+KMAP(j,i)×(1−DSNOSEa) (31)
なお、式(31)のなまし係数DSNOISEaは、以下に説明するようにエンジン運転状態に応じて0から1の範囲で変更するようにしてもよい。
1)エンジン回転数NEが急激に上昇したとき(例えばエンジン回転数の今回値NE(m)と前回値NE(m-1)との差(NE(m)−NE(m-1))が200rpm以上であるとき)は、なまし係数DSNOISEaをより小さい値に変更する。これにより、強度パラメータの今回値KMAP(j,i)の重みを増加させ、ノイズパラメータNLMAP(j,i)の学習速度が高められる。上記「m」は、図20の処理の実行周期で離散化した離散化時刻である。
2)吸気弁の開弁時期CAIが急激に変化したとき(例えば開弁時期の今回値CAI(m)と前回値CAI(m-1)との差の絶対値が5度以上であるとき)は、なまし係数DSNOISEaをより小さい値に変更する。
3)吸気弁のリフト量LFTが急激に変化したとき(例えばリフト量の今回値LFT(m)と前回値LFT(m-1)との差の絶対値が0.5mm以上であるとき)は、なまし係数DSNOISEaをより小さい値に変更する。
本実施形態によれば、ノイズマップのマップ値(NLMAP)が、二値化前の強度パラメータKMAPを用いて更新されるので、第1の実施形態と比べて、より精度の高いノイズパラメータNLMAP(j,i)が得られる。2つのノックセンサ11a及び11bの出力信号を単一の入力回路に入力することに起因して、一つのノックセンサ出力信号が他のノックセンサ出力信号に混合されてノイズ成分となるおそれがあるが、そのようなノイズ成分を除去してより正確な判定を行うことが可能となる。
本実施形態では、図20のステップS11aがデータ格納手段に相当し、ステップS12aがノイズ補正手段に相当し、ステップS18aがノイズ成分算出手段に相当し、ステップS11bが二値化手段に相当し、ステップS13〜S17がノッキング判定手段に相当する。
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、ノックセンサ出力のサンプリング周期や周波数成分分析を行うクランク角度間隔は上述したもの(20マイクロ秒、6度)に限るものではなく、本発明の目的が達成される範囲内において変更可能である。また、二値化スペクトル時系列マップ(上述した実施形態では21行×15列のマトリクスで構成)も同様に変更可能である。
また上述した実施形態では、二値化強度パラメータNKMAP(j,i)及びマスタパラメータMMAP(j,i)に重み付けパラメータWMAP(j,i)を乗算して、適合率PFITを算出したが、重み付けパラメータWMAP(j,i)を乗算せずに、すなわち重み付けを行わずに算出するようにしてもよい。
また上述した実施形態では、判定閾値SLVL、二値化閾値BLVL、マスタパターンマップ、及び重み付けマップをエンジン回転数NE及び吸気圧PBAに応じて、算出または選択するようにしたが、予め設定された値または1つのマップに固定しておいてもよい。
また本発明は、クランク軸を鉛直方向とした船外機などのような船舶推進機用エンジンなどのノッキング検出にも適用が可能である。