(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、本発明の実施形態について図面を用いて詳細に説明するが、本発明は以下の実施形態に限定されることなく、本発明の技術的な概念の中で種々の変形例や応用例をもその範囲に含むものである。
【0016】
本発明の実施形態を説明する前に、先ずノッキングを検出する一般的な方法について説明し、その後に本発明の実施形態について説明する。
【0017】
内燃機関の振動には、例えば、ピストンの摩擦、クランク軸の回転、吸気/排気弁の作動等による多くの振動成分が含まれている。しかも、これらの振動成分は内燃機関の作動状態によって大きく変化する。内燃機関にノッキングが発生するとノッキングに特有な振動が発生し、ノッキングの発生の有無の判定は、振動センサが検出する内燃機関の全体の振動からノッキングに特有な振動を分離することによって行うことができる。
【0018】
図1は、ノッキングが発生していない時の振動センサの出力信号の周波数成分の解析結果を示したものである。ここでは、略20KHzまでの周波数範囲内における解析結果を示しているが、これに限らず他の周波数範囲であっても差し支えないものであり、以下の説明においても同様である。
【0019】
図2は、ノッキングが発生した時の振動センサの出力信号の周波数成分の解析結果を示したものである。
図1の周波数特性と
図2の周波数特性を比較すれば分かるように、ノッキングが発生していない場合に比べて、ノッキングが発生していると各々の共鳴周波数成分が大きくなっていることがわかる。例えば、周波数f
10、f
01、f
11の近傍においてノッキングが発生していることがわかる。
【0020】
図3は、ノック指標を用いてノッキングの発生の有無を判定する方法について示している。以下の説明においては、便宜上、
図2で示した共鳴周波数f
10(6.3KHz)とf
01(13.0KHz)の共鳴周波数成分ω
10P(f
10)、ω
01P(f
01)を用いてノック指標を算出する例を説明する。ただし本実施形態はこれらの周波数に限定されるものではなく、任意の2つ以上の共鳴周波数成分を用いてノッキングの発生の有無を判定することができる。
【0021】
振動センサは、ノッキングの発生による振動とバックグラウンド振動(ノッキング以外の要因によって発生する振動)を合成して検出する。したがってノック指標Iは、ノッキングが発生していないときはバックグラウンド振動に対応する指標I
bであり、ノッキングが発生したときはバックグラウンド振動に対応する指標I
bとノッキングに対応する指標I
kの合成により求められる。
【0022】
ノック指標Iは、
図2に示す主要な共鳴周波数成分を用いて以下の(式1)により表すことができる。「ω」は内燃機関の回転数により定まる実数値であり、「ω」は「1」、或いは「0」の2値をとることもできる。「P」は各共鳴周波数成分の振動強度(パワースペクトル)である。
【0023】
I=ω
10P(f
10)+ω
20P(f
20)+ω
01P(f
01)+ω
30P(f
30)+ω
11P(f
11)……(式1)
図3に示すように、バックグラウンド振動の共鳴周波数成分によって示される指標I
bと、ノッキングの発生による振動の共鳴周波数成分によって示される指標I
kとは、方向と大きさを異にしている。これは人間による聴覚試験でも明らかなように、「ノック無し」の場合の内燃機関の発生音に対し、「ノック有り」の場合の発生音は、例えばカリカリ等という音で聴き分けられることに対応している。
【0024】
そして、バックグラウンド振動による指標I
bに対してノッキングの発生による振動が加わると、ノック指標Iはノック判定閾値I
02を超過する。これによりノッキングが発生していることを判定することができる。このように、バックグラウンド振動に加えてノッキング発生による特有な周波数成分を考慮してノック指標Iを算出するので、バックグラウンド振動が大きくなってもノッキング発生の有無を判定することができる。尚、以下において(式1)の右辺の5つの項に限らず、振動センサの出力に含まれる複数の共鳴周波数成分を組み合わせることにより算出する指標は、すべてノック指標と定義する。
【0025】
次に、本実施形態におけるノッキングの検出方法の基本的な考え方を説明する。本実施形態においては、ノック指標を算出する際に、振動センサが検出した振動信号を周波数成分毎に平均化することにより、バックグラウンドレベルを算出する。この場合、ノッキングが発生していないとしても、例えば内燃機関の運転状態変化や燃焼振動の増大により振動強度が急変すると、バックグラウンドレベルの演算結果が最新の状態に追従することができず、以下の
図4で説明するようにノッキングを誤検出する恐れがある。
【0026】
図4は、加速運転のような過渡運転時における、スロットル開度、内燃機関の回転数、周波数f
iのバックグラウンドレベルBGL
i、ノック指標I
i、ノック判定信号(ノックの有無を表す信号)の経時変化を示している。
図4において、スロットル開度TVOを全閉から全開にした場合、実際に内燃機関の回転数Neが立ち上がるのは所定の遅れ時間tdを経過してからである。実際のバックグランドレベルBGL
iは、本来は破線で示したような変化をおこなうものであるが、平均化処理を行なっているのでバックグランドレベルBGL
iを演算すると、実線で示したような遅れを生じて変化する。ここで、ノック指標I
iはS/N比(BGL
iに対する各周波数成分の比)の計算により求めている。
【0027】
したがって、
図4に示す例によれば、バックグランドレベルBGL
iの変化が遅れることにより、ノッキングが発生していないにもかかわらず、ノック指標I
iは理論的なノック指標を超過して大きくなり、その結果としてノッキングが発生したと誤判定することになる。
【0028】
すなわち、振動センサが検出した振動信号が急増したとき、平均化処理を実施することにより求められるバックグラウンドレベルBGL
iの演算結果が、実際のバックグラウンドレベルの値に対して遅れることになる。ノック指標I
iとしてバックグラウンドレベルBGL
iに対する周波数成分の比(S/N比)を用いる場合、バックグランドレベルBGL
iの遅れは、ノック指標I
i(=S/N比)の分母が実際の値よりも小さくなることにつながる。したがってノック指標I
iが本来の値よりも大きく算出されることになり、過渡運転状態においては、実際のノック指標がノック判定閾値を超えてしまい、ノッキングが発生していないにもかかわらず、ノッキングが発生したと判定される恐れがある。
【0029】
また、ノッキングの発生時や突発的な振動ノイズが発生すると、そのときの大きな振動信号がバックグラウンドレベルBGL
iに反映されるので、バックグラウンドレベルBGL
iの値を増大させることになる。そして、大きくなったバックグラウンドレベルBGL
iを使用すると、ノック指標I
iであるS/N比が小さくなり、通常では検出可能なノッキングが検出できなくなってしまう恐れがある。
【0030】
このため、ノッキングや突発的な振動ノイズを検出した場合には、バックグラウンドレベルBGL
iの更新を禁止することで、バックグラウンドレベルBGL
iの演算精度を高める方法が考えられる。しかしながら、突発的で且つノッキングが検出されないような小さな値の振動ノイズやノッキングによってバックグラウンドレベルBGL
iが増大している期間に、通常では検出可能なノッキングが発生してもノッキングを検出できない恐れがある。
【0031】
本発明は、上述した課題に対応すべく過渡時におけるノッキングの誤判定を抑制すると共に、内燃機関の定常運転/過渡運転を問わず正確なバックグラウンドレベルを算出することにより、ノッキングの検出精度を向上させることができる内燃機関のノッキング制御装置を提案するものであり、以下にその具体的な実施形態を説明する。
【0032】
本実施形態は、過渡状態でバックグラウンドレベルBGL
iの平均化処理の演算結果が、実際のバックグラウンドレベルBGL
iに対して追従できずに遅れることに起因するノッキング発生の有無の誤判定を抑制し、かつ、ノッキングの発生や突発的な振動ノイズがバックグラウンドレベルBGL
iの演算に反映されることによるノッキングの検出精度の低下を抑制してノッキングの検出精度を向上させる方法を提案するものである。以下、本実施形態の具体的な構成とその動作について説明する。
【0033】
図5において、筒内噴射型の内燃機関ESは、例えば、第1気筒〜第4気筒の4つの気筒を有する直列4気筒の内燃機関であって、シリンダヘッド11と、シリンダブロック12と、このシリンダブロック12内に摺動自在に嵌挿されたピストン13とを有し、ピストン13の上方には燃焼室14が形成されている。
【0034】
燃焼室14には、点火コイル27から高電圧が印加される点火プラグ28及び燃焼室14内に直接的に燃料を噴射するインジェクタ26が臨設されている。なお、図において、点火プラグ28及びインジェクタ26は、便宜上、燃焼室14の天井部の左右に並設されているが、それらの配設位置は適宜に設定可能である。
【0035】
各シリンダに導入されて燃料の燃焼に供せられる空気は、吸気通路17の始端部に設けられたエアクリーナ18の入口部18aから取り入れられ、空気流量計(エアフロセンサ)20を通り、電制スロットル弁21が収容されたスロットルボディ22を通ってコレクタ2に入る。コレクタ2に入った空気は、コレクタ2から吸気通路の下流部分を形成する分岐通路部(吸気管、吸気ポート)及びその下流端に配在された、吸気カムシャフト2により開閉駆動される吸気弁2を介して各気筒の燃焼室1に導かれる。
【0036】
燃焼室1に吸入された空気とインジェクタから噴射された燃料との混合気は、点火プラグ28により点火されて爆発、燃焼せしめられ、その燃焼排気ガスは、排気カムシャフト34により開閉駆動される排気弁33を介して排気通路31に排出され、排気通路31に配備された触媒コンバータ32で浄化された後、外部に排出される。
【0037】
また、エアフロセンサ20からは、吸気流量を表す信号がコントロールユニット10に出力されている。さらに、スロットルボディ22には、電制スロットル弁21の開度を検出するスロットルセンサ19が取り付けられており、その信号もコントロールユニット10に出力されるようになっている。
【0038】
一方、インジェクタ26から噴射されるガソリン等の燃料は、燃料タンク35から低圧燃料ポンプ36により一次加圧されて燃圧レギュレータ37により一定の圧力(例えば3kg/cm2)に調圧される。調圧された燃料は、さらに、排気カムシャフト34に設けられたポンプ駆動カムにより駆動される高圧燃料ポンプ41において、より高い圧力(例えば50kg/cm2)に2次加圧されてコモンレール(蓄圧室)38へ圧送される。
【0039】
コモンレール38に、圧送された燃料は、各気筒に設けられているインジェクタ26に供給され、インジェクタ26から各気筒の燃焼室14に噴射される。燃焼室14に噴射された燃料は、点火コイル27で高電圧化された点火信号により点火プラグ28で着火される。尚、インジェクタ26に供給される燃料の圧力(燃圧)は、燃圧セン40により検出され、その信号はコントロールユニット10に出力されるようになっている。
【0040】
シリンダブロック12には、振動センサ43が設けられており、シリンダブロック12の機械振動からノッキングを検出している。振動センサの出力信号はコントロールユニット10に入力され、ノッキングが発生すると点火時期を所定量だけ遅角させてノックを抑制するようにしている。
【0041】
内燃機関ESのクランク軸15に取り付けられたクランク角センサ30は、クランク軸15の回転位置を検出し、検出された信号はコントロールユニット10に出力されるようになっている。
【0042】
さらに、クランク軸15からのトルクは変速機42に伝達され、変速機42は、コントロールユニット10からの制御信号により、所望の変速段数に変更され、変更された変速段数は、ポジションセンサ29により検出され、この検出信号は、コントロールユニット10に出力される。
【0043】
図6は、コントロールユニット10のブロック図である。コントロールユニット10は、各センサからの信号に基づいて燃料供給量や点火時期などを演算し、インジェクタ26と点火コイル27に対して制御信号を出力する。コントロールユニット10は、制御ブロック45とノッキング検出ブロック46に大別される。
【0044】
制御ブロック45は、CPU(Central Control Unit)47、A/D変換器48、ROM(Read Only Memory)49、入力I/O50、RAM(Random Access Memory)51、DPRAM(Dual Port RAM)52、出力I/O53、バス54を備える。
【0045】
ノッキング検出ブロック46は、CPU55、I/Oポート56、タイミング回路57、A/D変換器58、ROM59、RAM60、クロック61、オペレーショナル回路62、バス63を備える。制御ブロック45のCPU47とノッキング検出ブロック46のCPU55の間のデータの交換は、例えばDPRAM52を介してなされる。
【0046】
熱線式空気流量計2によって検出された吸入空気量Qaは、A/D変換器48によってデジタル値に変換され、CPU47に取り込まれる。クランク角センサ12によって検出されるRef信号及びPOS信号は、入力I/Oポート50を介してCPU47に取り込まれる。CPU47は、ROM49が格納しているプログラムにしたがって演算を実施し、演算結果は出力I/O53を介して、燃料噴射量を指示する燃料噴射時間信号T
i、点火時期を指示する点火時期信号θ
ignとして各アクチュエータに対して出力される。RAM53は演算処理中の必要なデータを格納する。
【0047】
クランク角センサ12によって検出されるRef信号及びPOS信号はオペレーショナル回路62に入力され、オペレーショナル回路62が上死点(Top Dead Center)を示すTDC信号を発生すると、タイミング回路57は、CPU47がI/Oポート56に対して入力した情報にしたがって、クロック61の発生する周期信号を分周することによりサンプリング信号を発生する。A/D変換器58は、サンプリング信号が発生すると、振動センサ43の出力信号Kpをデジタル値に変換する。
【0048】
ノッキングを検出するための従来の振動センサは、13KHz付近で共振するが、本実施形態においては少なくとも18〜20KHzまでの共鳴周波数成分を得るために、18KHz以上で共振するものを用いる。CPU55は、ROM59が格納しているプログラムにしたがって、サンプリングされたデジタル値をRAM60に格納するとともに、後述する
図7で説明するフローチャートにしたがってノッキングの発生の有無を判定する。
【0049】
ノッキングの発生の有無の判定結果は、DPRAM52を介してCPU47に対して通知される。CPU47は、ノッキングが発生していると点火時期を所定量だけ遅角してノッキングの発生を抑制し、その後に徐々に進角していき再びノッキングを検出すると所定量だけ遅角するという動作を繰り返すものである。
【0050】
図7は、ノッキングの発生の有無を判定する制御ステップの手順を説明するフローチャートである。この制御フローは、内燃機関の爆発サイクル毎に実行されるものであり、CPU55に対して角度割り込みをかけて起動することにより、CPU55によって実行されるものである。以下、
図7の各制御ステップについて説明する。
【0051】
≪ステップS101≫
ステップS101においては、振動センサ43からの検出信号KpがA/D変換器58によってA/D変換されたA/D変換値を取り込む。この検出信号KpのA/D変換値の取り込みが完了すると次のステップS102に移行する。
【0052】
≪ステップS102≫
ステップS102においては、振動センサ43の検出信号Kpを周波数分析する。この周波数分析は、例えば高速フーリエ変換(FFT)やウォルシュフーリエ変換などによって実施することができる。周波数分析が完了すると次のステップS103に移行する。
【0053】
≪ステップS103≫
ステップS103においては、先のステップS102において分析した周波数成分のうち、共鳴周波数を含むものを複数個だけ選択する。本実施形態では例えば8個の共鳴周波数を選択している。本ステップにおいて選択する周波数成分は、例えば内燃機関の仕様などに応じて予め定めておくことができる。周波数帯域の選択が完了すると次のステップS104に移行する。
【0054】
≪ステップS104≫
ステップS104においては、振動強度SLを表わすS/N比を、ステップS103において選択した周波数成分毎に求める。具体的には、選択した周波数成分(f
1、………、f
i)に対応するバックグラウンドレベル(BGL
1、………、BGL
i)を平均化処理(例えば、加重平均)により求め、周波数毎の振動強度SLをSL
i=f
i/BGL
iの計算よって求める。尚、本実施形態では、ステップS103において8個の周波数成分を選択しているので、振動強度SL
1〜SL
8を求めることになる。
【0055】
ここで、本実施形態ではこの振動強度の求め方に特徴を有するものである。バックグラウンドレベルBGL
iを算出する際には、振動センサ43が検出した周波数毎の信号成分をそのまま用いるのではなく、まず信号成分から、実験やシミュレーション等によって予め求めたバックグラウンドレベルBGL
iの推定基準値を減算し、この減算された差分値を用いて振動ノイズの発生の有無を判定している。
【0056】
そして、減算して得られた差分値に振動ノイズが有る場合、差分値に第1の平均化処理の演算を行なって求めた第1の補正差分値に、更に第2の平均化処理の演算を行って第2の補正差分値を求め、また、差分値に振動ノイズが無い場合は、実際の差分値に第2の平均化処理の演算を行って第2の補正差分値を求め、その後に第2の平均化処理の演算を行なった第2の補正差分値をバックグラウンドレベルBGL
iの推定基準値に加算して最終的な修正バックグラウンドレベルBGL
iとするものである。
【0057】
この演算によって得られた修正バックグラウンドレベルBGL
iに対する信号成分f
iの比率を、本ステップにおける振動強度SL
iとして算出する。このステップS104の具体的な構成は、後述の
図8で詳細に説明する。周波数毎の振動強度SL
iの演算が完了すると次のステップS105に移行する。
【0058】
≪ステップS105≫
ステップS105においては、ステップS103において選択した周波数成分のうち、ステップS104において求めた振動強度SL(S/N比)が大きい順にm個を抽出し、これらを合算することにより最終的な振動強度Sを求めることができる。この最終的な振動強度Sは最終ノック指標Iに対応するものである。本実施形態では、例えば上位5個の周波数成分の振動強度SLを抽出して加算している。最終的な振動強度S(=最終ノック指標I)の演算が完了すると次のステップS106に移行する。
【0059】
≪ステップS106≫
ステップS106においては、ノック判定閾値とステップS105において求めた振動強度S(=最終ノック指標I)を比較する。振動強度Sのほうが大きい場合はステップS107へ移行し、それ以外であればステップS109へ移行する。
【0060】
本ステップにおいて用いるノック判定閾値は、予め定めておくこともできるし、例えば、内燃機関の回転数などの運転状態に基づき算出することもできる。算出方法としては、例えば運転状態とノック判定閾値との間の対応関係をあらかじめ定義したテーブルやマップなどを用いることができるが、これに限られるものではない。
【0061】
≪ステップS107、S108≫
ステップS106で振動強度Sがノック判定閾値を超えていると判断されているので、ステップS107においては、ノッキングが発生したと判断し、ステップS108においては、ノッキング発生を示すノックフラグに「1」をセットする。このノックフラグは、別に起動される点火制御タスクにおいて用いられる。つまり、このノックフラグによって、ノッキングが発生したとして点火時期が遅角されるものである。
【0062】
≪ステップS109≫
ステップS106で振動強度Sがノック判定閾値を超えていないと判断されているので、ステップS109においては、ノックフラグを「0」にセットする。
【0063】
以上の説明は、ノッキングの発生の有無を判定する制御ステップ手順を説明した。次に本実施形態の特徴的な構成であるステップS104の詳細な説明を行なうこととする。
【0064】
従来技術におけるノッキングの発生の有無を判定する方法はおおむね次の通りである。振動センサは内燃機関の振動を検出し、AD変換器はその検出結果をデジタル信号に変換する。振動信号に対して、例えばバンドパスフィルタを適用することにより、ノック指標を算出するために用いる周波数成分(ここでは3つの周波数成分を例示した)を抽出する。
【0065】
CPUは、周波数成分毎に加重平均を算出し、算出した加重平均を適当な指標(例えば、ステップS104で説明した振動強度SL)に変換する。CPUは、各周波数成分の指標を合算することによりノック指標を求め、ノック指標とノック判定閾値を比較することにより、ノッキングの発生の有無を判定するものである。
【0066】
ところで、過渡運転時においては振動センサが検出した振動信号が急増するので、平均化処理を実施することにより求められるバックグラウンドレベルBGL
iの演算結果が、実際のバックグラウンドレベルBGL
iの値に対して遅れることになる。
【0067】
ノック指標としてバックグランドレベルBGL
iに対する周波数成分の比(S/N比)を用いる場合、バックグランドレベルBGL
iの遅れは、ノック指標(S/N比)の分母が実際の値よりも小さくなる。したがって、ノック指標が本来の値よりも大きく算出されることになり、過渡運転状態においては、実際のノック指標がノック判定閾値を超えてしない、ノッキングが発生していないにもかかわらず、ノッキングが発生したと判定される恐れがある。
【0068】
また、ノッキングの発生時や突発的な振動ノイズが発生すると、そのときの大きな振動信号がバックグラウンドレベルBGL
iに反映されるので、バックグラウンドレベルBGL
iの値を増大させることになる。そして、大きくなったバックグラウンドレベルBGL
iを使用すると、ノック指標であるS/N比が小さくなり、通常では検出可能なノッキングが検出できなくなってしまう恐れがある。
【0069】
そこで、本実施形態では、
図8に示すような構成を提案することで、過渡時におけるノッキングの誤判定を抑制すると共に、内燃機関の定常運転/過渡運転を問わず正確なバックグラウンドレベルを算出することにより、ノッキングの検出精度を向上させるようにしたものである。尚、以下では特定周波数として、7kHz、9kHz、12kHzの周波数を使用してノッキングの発生を検出するものとしている。
【0070】
図8は、本実施形態におけるノッキングの発生の有無を判定するための演算ブロックである。各演算ブロックはCPU55によって実施される演算機能である。尚、演算ブロックB101〜B103は、
図7におけるステップS101〜S103に対応するものであるので説明は省略する。
【0071】
演算ブロックB105において、例えば内燃機関の回転数や負荷などに基づき内燃機関の運転状態を推定する。
図6に示すROM59には、内燃機関の運転状態と、その運転状態における標準的なバックグラウンドレベルの推定基準値との間の対応関係を記述したマップデータが予め格納されている。このバックグラウンドレベルの推定基準値は周波数成分毎に記述されている。演算ブロックB104は、推定した運転状態に基づきマップデータを参照することにより、現在の運転状態におけるバックグラウンドレベルの推定基準値を求める。以下、このバックグラウンドレベルの推定基準値を「基準バックグランドレベル」と表記する。
【0072】
演算ブロックB105においては、演算ブロック103において抽出した周波数成分毎に、演算ブロックB104で対応する基準バックグラウンドレベルを読み出して減算することで差分値を演算する。これにより、回転数や負荷の変化によるバックグラウンドレベルの変動が後続の加重平均に対して入力されないことになるので、加重平均処理にともなう追従遅れを抑制することができる。ただし本演算ブロックにおいて減算した基準バックグラウンドレベルは、後続の演算ブロックB110において周波数成分毎に足し戻されて「修正バックグラウンドレベル」とされる。
【0073】
演算ブロックB106において、演算ブロックB105により周波数成分毎に対応する周波数成分の基準バックグラウンドレベルを減算した差分値と、所定の振動ノイズ判定閾値を比較し、少なくとも1つ以上の差分値がノイズ判定閾値を超えているかどうかを判定して振動ノイズの有無を判定する。この振動ノイズの判定結果により、演算ブロック108は、演算ブロックB109への入力値を切り替える。
【0074】
ここで、演算ブロック108には、演算ブロック105で求めた差分値と、演算ブロック107で第1の平均化処理の演算を行なった第1の補正差分値が入力されている。つまり、演算ブロックB108では、演算ブロックB105で求めた実際の差分値と、この実際の差分値を第1の平均化処理による加重平均演算した第1の補正差分値を切り替えるものである。
【0075】
そして、演算ブロックB108によって選択された、実際の差分値、或いは加重平均された第1の補正差分値は、演算ブロックB109に送られる。演算ブロックB109は、実際の差分値、或いは第1の補正差分値を第2の平均化処理による加重平均演算を行なって、第2の補正差分値を求めている。
【0076】
ここで、演算ブロックB107の第1の平均化処理の演算に使用する「重み係数」は、演算ブロックB109の第2の平均化処理の演算に使用する「重み係数」と異なる重み係数を設定することができ、自動車、或いは、内燃機関の運転環境に合わせて調整可能なものとされている。
【0077】
本実施形態によれば、基準バックグラウンドレベルによって過渡期のバックグラウンドレベルの変動を抑えることができるものである。また、演算ブロックB107は、ノッキングの発生時や突発的な振動ノイズが発生した時のバックグラウンドレベルの変動を抑制することができる。尚、バックグラウンドレベルの変動を抑制する(バックグランドレベルをほぼ一定に維持する)ため、演算ブロックB107の第1の平均化処理の演算に使用する「重み係数」は、演算ブロックB109の第2の平均化処理の演算に使用する「重み係数」よりも大きくするのが良いものである。
【0078】
ここで、本実施例では、演算ブロックB107の入力として演算ブロックB105で算出した差分値を用いているが、固定値を入力としてバックグラウンドレベルを固定値へ収束させる、または演算ブロックB109で算出した値を入力としてバックグラウンドレベルの更新を禁止させる構成としてもよい。これによって、ノッキングが検出されないような小さなレベルの振動ノイズ等のバックグラウンドレベルへの影響を軽減または無くすことができる。このため、バックグラウンドレベルの検出精度を高め、ノッキングの発生の有無の判断精度を向上することができる。
【0079】
次に、演算ブロックB110において、演算ブロックB109で求められた周波数成分毎の加重平均された第2の補正差分値に対して、演算ブロックB104で求められた基準バックグラウンドレベルを周波数成分毎に足し戻すようにしている。これにより、信号成分は減算前の水準まで戻されることになる。これまでの処理によって、修正バックグランドレベルが求められることになる。
【0080】
次に、演算ブロックB111では、夫々の周波数成分毎に演算ブロックB110で求めた修正バックグランドレベルと、演算ブロックB103からの各周波数成分とから各周波数成分の振動強度SL(S/N比)が求められる。ここで、振動強度SL(S/N比)を算出する際の分母は、演算ブロックB110の演算結果であり、分子は演算ブロックB103において抽出した周波数成分である。
【0081】
したがって、演算ブロックB111に到達する前に演算ブロックB107と演算ブロックB109で平均化処理演算を行なっているため、バックグラウンドレベルの過渡状態での変動が抑制されているので、過渡状態でのノッキングの誤判定を抑制することができる。
【0082】
演算ブロックB112は、演算ブロック111で求めた各周波数の振動強度を合算して最終ノック指標を演算するもので、
図7のステップS105に対応している。また、演算ブロックB113は内燃機関の回転数に基づいてノック判定閾値を求めるものであり、
図7のステップS106で使用されるノック判定閾値を求めている。更に、演算ブロックB114は、演算ブロック112で求めた振動強度と、演算ブロック113で求めたノック判定閾値を比較してノッキングの発生の有無を判定するもので、
図7のステップS106〜S109に対応している。
【0083】
そして、
図8に示すような構成において、ノッキングが検出されると点火時期を遅角してノッキングを抑制するために点火時期を補正する。次にこの点火時期の補正方法について
図9を用いて説明する。
【0084】
図9は、
図6に示すCPU47によって点火時期を演算する手順を説明するフローチャートである。このフローチャートは、周期的に(例えば10msec毎)起動されて実行されるものである。
【0085】
≪ステップS201≫
ステップS201においては、
図6に示すRAM51内に設定された所定のレジスタから内燃機関の回転数Nと吸入空気量Qを読みこむ。これらの回転数Nや空気量Qは、CPU47によって実行されるプログラムによって演算されており、演算が終了するたびに、RAM51に記憶されていくものである。内燃機関の回転数Nと吸入空気量Qの読み込みが完了するとステップS202に移行する。
【0086】
≪ステップS202≫
ステップS202においては、単位回転数当たりの吸入空気量Q/N(基本燃料噴射量)を演算し、更に吸入空気量Q/Nから燃料噴射時間幅T
iを求める。また、ROM49内に格納されている基本点火時期マップから基本点火時期θ
baseを求める。基本点火時期マップは、吸入空気量Q/Nと回転数N、および基本点火時期θ
baseの対応関係を記述したデータマップである。基本点火時期が求まるとステップS203に移行する。
【0087】
≪ステップS203≫
ステップS203においては、ノックフラグ(CPU55が
図7のステップS108、S109で求めたもの)にしたがってノッキングの発生の有無を判定する。ノックフラグが「1」であれば、ノッキングが発生しているのでステップS204へ進み、ノックフラグが「0」であれば、ノッキングが発生していないのでステップS206へ進む。
【0088】
≪ステップS204≫
ステップS203においてノッキングが発生したと判断されているので、ステップS204においては、進角補正値θ
advから所定の遅角値Δθ
retを減算する。この減算によって後述する最終点火時期が遅角(リタード)される。進角補正値θ
advは内燃機関の状態(機関温度、バッテリ電圧、負荷変動等)に基づいて演算されている。進角補正値θ
advが求まるとステップS205に移行する。
【0089】
≪ステップS205≫
ステップS205においては、カウント値Aを初期化してステップS210に進む。このカウント値Aは、ノッキングの発生を抑制するために遅角した点火時期を、進角側にリカバーする時期を決めるための変数である。カウント値Aの用い方については後述のステップで説明する。カウント値AがリセットされるとステップS210に移行する。
【0090】
≪ステップS206≫
ステップS203でノッキングが発生していないと判断されているので、ステップS206においては、カウント値Aを1つカウントアップする。カウント値Aが「+1」だけインクリメントされるとステップS207に移行する。
【0091】
≪ステップS207≫
ステップS207においては、カウント値Aが所定値(例えば「50」)に到達したか否かを判断する。到達している場合はステップS208へ進み、到達していない場合はステップS210へスキップする。
【0092】
≪ステップS208≫
ステップS208においては、ステップS204で求めた進角補正値θ
advに対して所定の補正値Δθ
adv(一定値)を加算して進角補正を行なう。この加算により、ステップS204において遅角された進角補正値θ
advが所定の補正値Δθ
advだけ進角側に補正されることになる。本実施形態のように10msec毎に起動されている場合、カウント値Aが「50」に到達した時点において、カウント値Aが初期化されてから0. 5秒が経過したことになる。すなわち、ステップS208は、ノッキングの発生により点火時期を遅角値Δθ
retだけ遅角させてから0. 5秒が経過する毎に、点火時期を補正値Δθ
advだけ進角側にリカバーするものである。点火時期のリカバーが完了するとステップS209に移行する。
【0093】
≪ステップS209≫
ステップS208においては、カウント値Aを「0」に初期化する。したがって、以下に示す制御ステップを実行して次の起動タイミングが到来してノッキングが検出されないと、ステップS206〜S209を繰り返すことになる。これによって、ノッキングが発生するまで点火時期は段階的に進角されていくことになる。カウント値AがリセットされるとステップS210に移行する。
【0094】
≪ステップS210≫
ステップS210においては、ステップS202で求めた基本点火時期θ
baseに対して、進角補正値θ
advを加えることにより、最終点火時期θ
ignを演算する。最終点火時期θ
ignが求まると、ステップS211に移行する。
【0095】
≪ステップS211≫
ステップS211においては、ROM49内に格納されている最大進角値マップから最大進角値θ
resを読み出す。最大進角値マップは、吸入空気量Q/N、回転数N、および最大進角値θ
resの対応関係を記述したデータマップである。最大進角値θ
resが求まるとステップS212に移行する。
【0096】
≪ステップS212≫
ステップS212においては、最終点火時期θ
ignが最大進角値θ
resを超えたかをどうかを判断する。最終点火時期θ
ignが最大進角値θ
resを超えていなければステップS214へスキップする。最終点火時期θ
ignが最大進角値θ
resを超えている場合はステップS213に移行する。
【0097】
≪ステップS213≫
ステップS212で最終点火時期θ
ignが最大進角値θ
resを超えていると判断されているので、ステップS213においては、最終点火時期θ
ignが進角しすぎているとして最終点火時期θ
ignを最大進角値θ
resに置き換えてセットする。最終点火時期θ
ignを最大進角値θ
resに置き換えるとステップS214に移行する。これまでの処理で最終点火時期θ
ignが求まり、これに基づいて点火コイルへの通電が制御されることになる。ステップS212,S213が完了するとステップS214に移行する。
【0098】
≪ステップS214≫
ステップS214においては、振動センサ43の振動信号の取り込みの設定をおこなうもので、内燃機関の運転状態に応じて、ディレイ時間、サンプリング点数、分周比をI/Oポート56に対して出力する。尚、分周比によって振動センサ43の出力のデジタル値のサンプリング周期が決まり、サンプリング点数によってサンプリング点数が決まるようになっている。
【0099】
以上のステップS201〜S214の制御ステップが完了するとリターンに抜けて、次の起動タイミングの到来を待つことになる。
【0100】
このように、本実施形態においては、振動センサの周波数成分から予め求めた基準バックグラウンドレベルを減算した差分値を平均化処理し、その後にバックグラウンドレベルを足し戻すようにしている。差分値の平均化処理においてはバックグラウンドレベルの過渡変動が抑制されるので、その過渡変動にともなう算出遅れとこれを原因とするノッキング誤検出を抑制することができる。
【0101】
また、平均化処理を行う前に差分値を用いて振動ノイズ判定を行うことで、バックグラウンドレベルの精度を向上することができ、ノッキング検出の精度を高めることができる。したがって、広い範囲の運転状態において点火時期を最適に制御することが可能となる。
【0102】
図10は、基準バックグラウンドレベルを記述したマップデータを示している。マップデータは、内燃機関の回転数(または変化率)、内燃機関の負荷(または変化率)、基準バックグラウンドレベル(または、規定レベルに対する補正値)の対応関係を記述している。
図10に示す例においては、高回転側/高負荷側で基準バックグラウンドレベルが大きくなる傾向に設定されている。
【0103】
基準バックグラウンドレベルを推定する方法として、CPU55は、スロットルセンサ信号(スロットル開度を表す信号)、吸入空気量信号(内燃機関に対する吸入空気量を表す信号)、燃料噴射パルス信号(燃料噴射弁を駆動するパルス信号)、吸気管圧力信号(吸気管6の内部の圧力を表す信号)などの負荷状態を表すセンサ信号を取得し、これら信号に基づき運転状態を推定してもよい。
【0104】
これら信号と運転状態との間の対応関係は、例えば
図10と同様のマップデータなどによって記述することもできるし、その他適当な方法により運転状態を算出することもできる。さらには、
図10に例示する内燃機関の回転数と内燃機関の負荷のマップデータを組み合わせてもよいものである。
【0105】
上述の実施形態においては、CPU55がソフトウェア(制御プログラム)を実行することにより、周波数分析、平均化処理、基準バックグラウンドレベルの推定、ノック指標算出、ノック判定等のノッキング検出のための演算を実施することを説明した。
【0106】
しかしながら、同等の機能を回路デバイスなどのハードウェアを実装して実行することも可能である。例えば、周波数分析、平均化処理、基準バックグラウンドレベルの推定、ノック指標算出、ノック判定等のうちいずれか1つ以上を、回路デバイスによって実装しても良いものである。
【0107】
また、シリンダブロックに取り付けられた振動センサ43からの出力は、内燃機関の回転数や負荷の上昇により増大する特性を持っている。これは、内燃機関内でのピストンスラッジなどのメカニカル振動ノイズや燃焼モード変化によるものである。したがって、
図7のステップS103において、シリンダ毎に異なる周波数成分を選択することも可能である。
【0108】
また、振動センサ43は、インジェクタ26が動作することに起因するインジェクタ振動ノイズを取り込むことがある。つまり、インジェクタ26を作動させる期間をサンプリングウインドウとして設定すると、そのサンプリングウインドウ内でインジェクタ振動ノイズが取り込まれるようになる。
【0109】
このインジェクタ振動ノイズは、ノック指標を算出する際に不要で、しかも悪影響を及ぼすので、除去することが望ましい。そこで、想定されるインジェクタ振動ノイズを記述したデータをあらかじめROM49などに格納しておき、CPU55はサンプリングウインドウ内における振動センサ43の検出結果から、そのインジェクタ振動ノイズを減算してもよい。これにより、インジェクタ振動ノイズに影響されることなくノック指標を正確に算出することができる。
【0110】
また、予め定めた基準バックグラウンドレベルを記述したマップデータは、標準的なバックグラウンドレベルを記述するものであるので、バックグラウンドレベルの過渡的な変動については同マップデータ内に記述しないことが望ましい。例えば、回転数や負荷が急変したときにバックグラウンドレベルも急変することが想定されるが、そのような急変するバックグラウンドレベルについては、マップデータ内に記述しないようにしている。具体的には、バックグラウンドレベルの変動率がある範囲以内のものだけマップデータ内に記述することが望ましい。
【0111】
振動センサ43の検出結果から抽出した周波数成分は、必ずしも全て抽出する必要はなく、例えば代表的な周波数成分のみ抽出して他の周波数成分は補間処理により補うこともできる。補間処理のための演算式は、例えば、試験結果などに基づき予め定めておくことができる。これにより周波数成分を抽出するための演算負荷を抑制することができる。
【0112】
以上の実施形態においては、バックグラウンドレベルに対する周波数成分の比率(S/N比)をその周波数成分のノック指標として算出しているが、比率に代えてバックグラウンドレベルに対する差分をノック指標として用いても良いものである。
【0113】
また、振動センサ43の周波数成分から基準バックグラウンドレベルを減算した差分値を用いて振動ノイズの判定を行っている(演算ブロックB106)が、これに限ることなく、ノック判定(演算ブロックB114)の結果を演算ブロックB106の代用として使用することができる。また、演算ブロックB114で使用する最終ノック指標を、演算ブロックB114で使用するノック判定閾値とは異なる別の振動ノイズ判定閾値で判定した結果を演算ブロックB106の代用として使用しても良いものである。
【0114】
以上述べた通り、本発明は、振動センサが検出した周波数毎の信号成分から、予め求められていた基準バックグラウンドレベルを減算して差分値を求め、この差分値に平均化処理の演算を行なって求めた補正差分値を基準バックグラウンドレベルに加算して最終的な修正バックグラウンドレベルとする、構成とした。
【0115】
また、振動センサが検出した周波数毎の信号成分から、予め求めていた基準バックグラウンドレベルを減算して差分値を求め、この差分値に振動ノイズが有る場合、差分値に第1の平均化処理の演算を行なって求めた第1の補正差分値に、更に第2の平均化処理の演算を行って第2の補正差分値を求め、また、差分値に振動ノイズが無い場合は、実際の差分値に第2の平均化処理の演算を行って第2の補正差分値を求め、第2の平均化処理の演算を行なった第2の補正差分値を基準バックグラウンドレベルに加算して最終的な修正バックグラウンドレベルとする、構成とした。
【0116】
これによれば、過渡運転時においてバックグラウンドレベルを算出する際の追従性が高まるので、平滑化処理を強くかけることができる。また、同時にノイズ発生時にバックグラウンドレベルを補正することにより過渡時におけるノッキングの誤判定を抑制するとともに、内燃機関の定常運転/過渡運転を問わずノック検出精度を向上させることができる。
【0117】
尚、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。