(57)【要約】【課題】ノックセンサからの信号によりノッキング発生の有無を判定するものに対し、ノッキング発生に伴うノイズ以外の大きなノイズが発生した状況であっても、ノッキング判定の信頼性を十分に確保することができる内燃機関のノッキング判定装置を提供する。【解決手段】バックグランドレベルに対して所定の範囲内であるもののみを正常なバックグランド値として認識しながらバックグランドレベルを更新していく。これにより、ピストンの打音発生等の影響によってバックグランドレベルが過大に得られてしまうといった状況を回避でき、バックグランドレベルの適正化が図れて、その後のノッキング判定を正確に行うことが可能になる。【選択図】図１２
2008261299.tif 000002
【特許請求の範囲】
【請求項１】
ノックセンサからの出力信号の履歴に基づいてバックグランドレベルを更新し、この更新されたバックグランドレベルに基づいてノック判定値を算出すると共に、この算出されたノック判定値と上記ノックセンサの出力信号とを比較することによりノッキング発生の有無を判定する内燃機関のノッキング判定装置において、
現在の内燃機関運転状態におけるバックグランドレベルの基準レベル値と、今回のノックセンサの出力信号を使用して算出されるバックグランド値とを比較し、この算出されたバックグランド値の上記基準レベル値に対する乖離量に応じて、今回のノックセンサの出力信号を使用したバックグランドレベルの更新量に制限を与えるバックグランドレベル更新制限手段を備えていることを特徴とする内燃機関のノッキング判定装置。
【請求項２】
上記請求項１記載の内燃機関のノッキング判定装置において、
内燃機関の所定運転条件毎にバックグランドレベルを記憶する手段と、
現在の内燃機関の運転状態に対し、この運転状態に近似する上記所定運転条件毎のバックグランドレベルを使用した補間計算を行うことで現在の内燃機関の運転状態に対応した上記基準レベル値を求める現在バックグランド基準レベル値算出手段とを備えており、
上記バックグランドレベル更新制限手段は、今回のノックセンサの出力信号を使用して算出されるバックグランド値と、上記求められた現在バックグランドレベルの基準レベル値に対して設定された所定の許容範囲とを比較し、上記バックグランド値が上記許容範囲内にある場合に限り、このバックグランド値によるバックグランドレベルの更新を行うよう構成されていることを特徴とする内燃機関のノッキング判定装置。
【請求項３】
上記請求項１記載の内燃機関のノッキング判定装置において、
予め設定された初期バックグランドレベルの基準レベル値を、ノックセンサからの出力信号の履歴に基づいて求められるオフセット量だけオフセットすることによりバックグランドレベルの基準レベル値を設定するバックグランドレベル基準レベル値設定手段を備えており、
上記バックグランドレベル更新制限手段は、今回のノックセンサの出力信号を使用して算出されるバックグランド値と、上記設定されているバックグランドレベルの基準レベル値に基づいて設定された所定の許容範囲とを比較し、上記バックグランド値が上記許容範囲内にある場合に限り、このバックグランド値によるバックグランドレベルの更新を行うよう構成されていることを特徴とする内燃機関のノッキング判定装置。
【請求項４】
上記請求項３記載の内燃機関のノッキング判定装置において、
上記バックグランドレベル更新制限手段は、予め設定された初期バックグランドレベルの基準レベル値に対し、上記オフセット量だけオフセットするオフセット補正動作に加えて、内燃機関の運転状態毎のバックグランド値を上記オフセットされたバックグランドレベルの基準レベル値に対して反映させるようにバックグランドレベルを運転状態毎に変更する更新動作を行うよう構成されていることを特徴とする内燃機関のノッキング判定装置。
【請求項５】
上記請求項２または３記載の内燃機関のノッキング判定装置において、
上記バックグランドレベル更新制限手段は、上記バックグランド値が上記許容範囲内にない場合には、今回のノックセンサの出力信号に代えて上記許容範囲内における許容最大値をもってバックグランドレベルの更新を行うよう構成されていることを特徴とする内燃機関のノッキング判定装置。
【請求項６】
上記請求項２または３記載の内燃機関のノッキング判定装置において、
上記バックグランドレベル更新制限手段は、上記バックグランド値が上記許容範囲内にない場合には、今回のノックセンサの出力信号を使用したバックグランドレベルの更新を実行しないよう構成されていることを特徴とする内燃機関のノッキング判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば自動車用エンジンに代表される内燃機関（以下、エンジンと呼ぶ場合もある）に備えられたノッキング判定装置に係る。特に、本発明は、内燃機関のシリンダブロック等に取り付けられたノックセンサ（振動検出センサ）からの信号に基づいてノッキング発生の有無を判定するものにおいて、ノッキング判定の信頼性を向上するための対策に関する。
【背景技術】
【０００２】
従来より、ガソリンを燃料とするエンジン等では、燃焼行程において、点火プラグからの火花でシリンダ内の混合気を着火させて燃焼させるが、着火後の火炎伝播の途中でシリンダ内の圧力が異常に高くなった場合には、火炎伝播が終了する前に混合気の未燃焼部分が自己着火するノッキング現象が発生することがある。そして、このノッキング現象が発生する状況では、乗員に違和感を与えたり、エンジンに悪影響を与えてしまう。
【０００３】
そこで、従来から、ノッキングの発生時には、点火プラグの点火時期を遅角させることでノッキングを解消し、最適なトルクや燃費を実現するための制御であるノックコントロールシステム（ＫＣＳ）が提案されている（例えば下記の特許文献１を参照）。
【０００４】
このノックコントロールシステムでは、ノッキングの発生を検出するために、シリンダブロックにノックセンサと呼ばれる振動検出センサが取り付けられており、このノックセンサで検出したエンジンの振動波形を解析することでノッキングの有無を判定している。
【０００５】
このようにしてノックセンサで検出した信号を解析する場合、従来からエンジンの各燃焼行程毎に発生する振動検出信号のピーク値等を用いていた。例えば、このピーク値が大きい場合にノッキングが発生していると判定していた。
【０００６】
より具体的には、ノッキング発生の有無を判定する期間であるノック判定期間内において、ノックセンサからの出力信号をＡ／Ｄ変換し、過去のノックセンサの出力値の累積値（過去のノックセンサの出力値をなまし処理することにより得られた値：前回バックグランドレベル）を今回のノックセンサからの出力信号の値（例えば、今回の燃焼行程における出力信号のピーク値：以下、「ノックセンサ出力値」と呼ぶ）で更新することにより「バックグランドレベル」を算出する。また、この「バックグランドレベル」を所定倍（例えば２倍）するなどして「ノック判定値」を設定する。
【０００７】
そして、この「ノック判定値」と「ノックセンサ出力値（例えば上記ピーク値）」とを比較し、「ノックセンサ出力値」が「ノック判定値」を超えている場合にはノッキングが発生していると判定して、点火プラグの点火時期を遅角させる等のノッキング解消動作を行うようにしている。
【０００８】
このようなノッキング判定動作を行っているため、上記「バックグランドレベル」としては適正に求められている必要がある。例えば下記の特許文献２では、エンジン運転中にノックセンサの出力信号を点火毎になまし処理することで「バックグランドレベル」を更新するようにしている。
【特許文献１】特開平１１−２１７４号公報
【特許文献２】実公平６−４１１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、振動検出信号のピーク値の大小によってノッキング判定を行う上記手法では、ノッキング発生に伴うノイズ（振動）以外の大きなノイズがエンジンから発生した場合に、振動検出信号に大きなピーク値が現れ、このピーク値が「ノック判定値」を超えてしまって、実際にはノッキングが発生していないにも拘わらずノッキングが発生していると誤判定してしまうばかりでなく、上記バックグランドレベルが適切に算出できなくなってしまう場合がある。
【００１０】
例えば、エンジンの寸法バラツキ等が原因で、燃焼行程時にピストンがシリンダ内壁面に衝突して所謂打音が発生するような状況では、この打音によって上記ピーク値が大きく現れることになる。つまり、クランクシャフトの回転に伴ってコネクティングロッドは揺動することになるが、燃焼行程時にはピストンにその軸心に沿う方向に燃焼圧が作用しても、上記コネクティングロッドの揺動方向の動きが原因となってピストンが所謂首振り運動を行い、シリンダ内壁面に衝突するといった現象が発生することがある。特に、寸法バラツキ、エンジン回転数、エンジン負荷といった条件が、上記ピストンの首振り運動を助長する条件に一致した場合には上記打音が大きく発生することになる。
【００１１】
そして、このような状況では、点火プラグの点火時期が必要以上に遅角されてしまってエンジンの運転効率が低下してしまうばかりでなく、このピーク値が「バックグランドレベル」の更新に使用されることになるため、「バックグランドレベル」が過大な値として算出されてしまう可能性がある。上記「ノック判定値」は「バックグランドレベル」に基づいて設定されるため、このような状況では「ノック判定値」も過大となり、その後のエンジンの燃焼行程時においてノッキングが発生した場合に、このノッキングの発生に起因する比較的大きなピーク値が現れている状況であっても、このピーク値がノック判定値（誤って設定されたノック判定値）を超えなくなるといった状況を招き、ノッキング判定が正確に行えないといった状態に陥ってしまう可能性がある。
【００１２】
尚、ノッキング発生に伴うノイズ以外の大きなノイズが発生して上記「ノック判定値」を誤設定してしまう原因としては、バルブ着座音やインジェクタノイズ、更には電気ノイズ等も挙げられる。
【００１３】
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、ノックセンサからの信号によりノッキング発生の有無を判定するものに対し、ノッキング発生に伴うノイズ以外の大きなノイズが発生した状況であっても、ノッキング判定の信頼性を十分に確保することができる内燃機関のノッキング判定装置を提供することにある。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために講じられた本発明の解決手段は以下のとおりである。先ず、ノックセンサからの出力信号の履歴に基づいてバックグランドレベル（ノック判定レベルのベース値）を更新し、この更新されたバックグランドレベルに基づいてノック判定値を算出すると共に、この算出されたノック判定値と上記ノックセンサの出力信号とを比較することによりノッキング発生の有無を判定する内燃機関のノッキング判定装置を前提とする。このノッキング判定装置に対し、現在の内燃機関運転状態におけるバックグランドレベルの基準レベル値（バックグランドレベルの本来在るべき値：予測値）と、今回のノックセンサの出力信号を使用して算出されるバックグランド値（今回算出した仮の値）とを比較し、この算出されたバックグランド値の上記基準レベル値に対する乖離量に応じて、今回のノックセンサの出力信号を使用したバックグランドレベルの更新量に制限を与えるバックグランドレベル更新制限手段を備えさせている。
【００１５】
このバックグランドレベル更新制限手段の更新量制限動作を実現するための構成として具体的には以下のものが挙げられる。先ず、ノックセンサからの出力信号がピストンの打音等の影響を受けていない場合にバックグランドレベルの更新を行うための構成として、内燃機関の所定運転条件毎にバックグランドレベルを記憶する手段と、現在の内燃機関の運転状態に対し、この運転状態に近似する上記所定運転条件毎のバックグランドレベルを使用した補間計算を行うことで現在の内燃機関の運転状態に対応した上記基準レベル値を求める現在バックグランド基準レベル値算出手段とを備えさせる。そして、上記バックグランドレベル更新制限手段が、今回のノックセンサの出力信号を使用して算出されるバックグランド値と、上記求められた現在バックグランドレベルの基準レベル値に対して設定された所定の許容範囲とを比較し、上記バックグランド値が上記許容範囲内にある場合に限り、このバックグランド値によるバックグランドレベルの更新を行う構成としている。即ち、バックグランド値が上記許容範囲内にない場合にはバックグランドレベルの更新量に制限を与えるようにしている。
【００１６】
つまり、今回のノックセンサの出力信号を使用して算出されるバックグランド値が所定の範囲内（上記許容範囲内）にある場合には、ノックセンサからの出力信号としてはピストンの打音等の影響を受けていない可能性が高く、ノッキングの発生状況を反映した出力として得られている可能性が高い。このため、このノックセンサの出力信号を使用して算出されるバックグランド値によってバックグランドレベルの更新を行ったとしても、このバックグランドレベルが過大になるといった状況を招くことがなく（ノック判定条件が他のエンジン運転状態における判定条件に対して急変することがなく）、バックグランドレベルが適正に得られて、その後のノッキング判定を正確に行うことが可能になる。
【００１７】
また、バックグランドレベルの基準レベル値として予め初期値を与えおき、この初期バックグランドレベルの基準レベル値をオフセットさせることで新たなバックグランドレベルを設定するようにした構成として以下の構成が挙げられる。先ず、予め設定された初期バックグランドレベルの基準レベル値を、ノックセンサからの出力信号の履歴に基づいて求められるオフセット量だけオフセットすることによりバックグランドレベル基準レベル値を設定するバックグランドレベル基準レベル値設定手段を備えさせる。そして、上記バックグランドレベル更新制限手段が、今回のノックセンサの出力信号を使用して算出されるバックグランド値と、上記設定されているバックグランドレベルの基準レベル値に基づいて設定された所定の許容範囲とを比較し、上記バックグランド値が上記許容範囲内にある場合に限り、このバックグランド値によるバックグランドレベルの更新を行う構成としている。即ち、この場合にも、バックグランド値が上記許容範囲内にない場合にはバックグランドレベルの更新量に制限を与えるようにしている。
【００１８】
このバックグランドレベル更新制限手段の更新量制限動作を実現するための構成として具体的には以下のものが挙げられる。つまり、上記バックグランドレベル更新制限手段が、予め設定された初期バックグランドレベルの基準レベル値に対し、上記オフセット量だけオフセットするオフセット補正動作に加えて、内燃機関の運転状態毎のバックグランド値を上記オフセットされたバックグランドレベルの基準レベル値に対して反映させるようにバックグランドレベルを運転状態毎に変更する更新動作を行う構成としている。
【００１９】
これら解決手段としては、例えば上記初期バックグランドレベルの基準レベル値をＲＯＭに書き込んでおくことが可能である。このため、ＲＡＭに必要な記憶容量を削減化できる。また、上記オフセット量によってバックグランドレベルが更新されていくので、その更新に要する演算量も大幅に削減することができる。
【００２０】
また、バックグランドレベルを運転状態毎に変更する更新動作を行う構成の場合には、この運転状態毎のバックグランド値をＲＡＭに書き込んでいき、上記ＲＯＭに書き込まれている初期バックグランドレベルの基準レベル値に対して、上記オフセット量によるオフセットと運転状態毎のバックグランド値によるバックグランドレベルの補正を行うことになり、バックグランドレベルを高い精度で適正化することが可能になる。
【００２１】
また、ノックセンサからの出力信号がピストンの打音等の影響を受けている可能性がある場合にバックグランドレベルの更新量に制限を与えるための構成として具体的には以下のものが挙げられる。
【００２２】
先ず、上記バックグランド値が上記許容範囲内にない場合には、上記バックグランドレベル更新制限手段が、今回のノックセンサの出力信号に代えて上記許容範囲内における許容最大値をもってバックグランドレベルの更新を行う構成としている。
【００２３】
また、他の構成として、上記バックグランド値が上記許容範囲内にない場合には、上記バックグランドレベル更新制限手段が、今回のノックセンサの出力信号を使用したバックグランドレベルの更新を実行しない構成としている。
【００２４】
前者の構成の場合、上記許容範囲内の値を用いたバックグランドレベルの更新が行われることになる。このため、バックグランドレベルの更新が継続して行われないといった状況を回避することができる。例えば、上記ピストンの打音の発生とノッキングの発生とが共存している場合に、ピストンの打音の発生のみを考慮してバックグランドレベルの更新が行われない状況では、ノッキングが継続的に発生してしまう虞があるが、本解決手段の場合には、バックグランドレベルの更新をある程度まで許容することで、ノッキング解消動作を行うことが可能である。特に、ノッキングの発生による振動が上記ピストンの打音の発生に伴う振動に隠されてしまうような状況においては有効である。
【００２５】
一方、後者の構成の場合には、ノッキングが発生することなく上記ピストンの打音が発生している状況において、不必要にバックグランドレベルが更新されてしまうといった状況を回避することができる。
【発明の効果】
【００２６】
本発明では、現在の内燃機関運転状態におけるバックグランドレベルの基準レベル値と、今回のノックセンサの出力信号を使用して算出されるバックグランド値とを比較し、この算出されたバックグランド値の上記基準レベル値に対する乖離量に応じて、今回のノックセンサの出力信号を使用したバックグランドレベルの更新量に制限を与えるようにしている。このため、ノッキング発生に伴うノイズ（振動）以外の大きなノイズが発生した状況であっても、バックグランドレベルが適正に得られ、ノッキング判定の信頼性を十分に確保することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面に基づいて説明する。本実施形態では、本発明に係るノッキング判定装置を自動車用Ｖ型６気筒エンジン（内燃機関）に適用した場合について説明する。また、本発明に係るノッキング判定装置の複数の実施形態について説明する前に、エンジン全体構成及び制御ブロックについて説明する。
【００２８】
−エンジン全体構成の説明−
図１は、本実施形態に係るＶ型エンジンＥをクランクシャフトＣの軸心に沿った方向から見たエンジン内部の概略構成を示す図である。また、図２は、このエンジンＥ、吸排気系及び制御系の概略を示すシステム構成図である。
【００２９】
これら図に示すように、Ｖ型エンジンＥは、シリンダブロック１の上部にＶ型に突出した一対のバンク２Ｌ，２Ｒを有している。各バンク２Ｌ，２Ｒは、シリンダブロック１の上端部に設置されたシリンダヘッド３Ｌ，３Ｒと、その上端に取り付けられたヘッドカバー４Ｌ，４Ｒとをそれぞれ備えている。上記シリンダブロック１には複数のシリンダ５Ｌ，５Ｒ，…（例えば各バンク２Ｌ，２Ｒに３個ずつ）が所定の挟み角（例えば９０°）をもって配設されており、これらシリンダ５Ｌ，５Ｒ，…の内部にピストン５１Ｌ，５１Ｒ，…が往復移動可能に収容されている。また、各ピストン５１Ｌ，５１Ｒ，…はコネクティングロッド５２Ｌ，５２Ｒ，…を介してクランクシャフトＣに動力伝達可能に連結されている。更に、シリンダブロック１の下側にはクランクケース６が取り付けられており、上記シリンダブロック１内の下部からクランクケース６の内部に亘る空間がクランク室６１となっている。また、このクランクケース６の更に下側にはオイル溜まり部となるオイルパン６２が配設されている。
【００３０】
また、上記シリンダヘッド３Ｌ，３Ｒには吸気ポート３１Ｌ，３１Ｒを開閉するための吸気バルブ３２Ｌ，３２Ｒ及び排気ポート３３Ｌ，３３Ｒを開閉するための排気バルブ３４Ｌ，３４Ｒがそれぞれ組み付けられており、シリンダヘッド３Ｌ，３Ｒとヘッドカバー４Ｌ，４Ｒとの間に形成されているカム室４１Ｌ，４１Ｒに配置されたカムシャフト３５Ｌ，３５Ｒ，３６Ｌ，３６Ｒの回転によって各バルブ３２Ｌ，３２Ｒ，３４Ｌ，３４Ｒの開閉動作が行われるようになっている。
【００３１】
また、本実施形態に係るエンジンＥのシリンダヘッド３Ｌ，３Ｒは、分割構造となっている。詳しくは、シリンダブロック１の上面に取り付けられるシリンダヘッド本体３７Ｌ，３７Ｒと、このシリンダヘッド本体３７Ｌ，３７Ｒの上側に組み付けられるカムシャフトハウジング３８Ｌ，３８Ｒとによりシリンダヘッド３Ｌ，３Ｒが構成されている。
【００３２】
一方、上記各バンク２Ｌ，２Ｒの内側（バンク間側）の上部には各バンク２Ｌ，２Ｒに対応する吸気マニホールド７Ｌ，７Ｒが配設されており、各吸気マニホールド７Ｌ，７Ｒの下流端が各吸気ポート３１Ｌ，３１Ｒ，…に連通している。また、この吸気マニホールド７Ｌ，７Ｒは、各バンク共通のサージタンク７１（図２参照）及びスロットルバルブ７２を備えた吸気管７３に連通されており、この吸気管７３の上流側にはエアクリーナ７４が設けられている。これにより、上記エアクリーナ７４から吸気管７３内に導入された空気は、サージタンク７１を通じて各吸気マニホールド７Ｌ，７Ｒに導入される。
【００３３】
上記シリンダヘッド３Ｌ，３Ｒの吸気ポート３１Ｌ，３１Ｒにはインジェクタ７５Ｌ，７５Ｒがそれぞれ設けられており、このインジェクタ７５Ｌ，７５Ｒからの燃料噴射時にあっては、吸気マニホールド７Ｌ，７Ｒ内に導入された空気と、このインジェクタ７５Ｌ，７５Ｒから噴射された燃料とが混合されて混合気となり、吸気バルブ３２Ｌ，３２Ｒの開弁に伴って燃焼室７６Ｌ，７６Ｒへ導入されることになる。
【００３４】
燃焼室７６Ｌ，７６Ｒの頂部には点火プラグ７７Ｌ，７７Ｒが配設されている。上記燃焼室７６Ｌ，７６Ｒにおいて、点火プラグ７７Ｌ，７７Ｒの点火に伴う混合気の燃焼圧力はピストン５１Ｌ，５１Ｒに伝えられ、ピストン５１Ｌ，５１Ｒを往復運動させる。このピストン５１Ｌ，５１Ｒの往復運動はコネクティングロッド５２Ｌ，５２Ｒを介してクランクシャフトＣに伝えられ、回転運動に変換されてエンジンＥの出力として取り出されることになる。また、上記各カムシャフト３５Ｌ，３５Ｒ，３６Ｌ，３６Ｒは、クランクシャフトＣから取り出される動力がタイミングチェーンによって伝達されて回転駆動され、この回転によって上記各バルブ３２Ｌ，３２Ｒ，３４Ｌ，３４Ｒの開閉動作を行わせる。
【００３５】
上記燃焼後の混合気は排気ガスとなり、排気バルブ３４Ｌ，３４Ｒの開弁に伴い排気マニホールド８Ｌ，８Ｒに排出される。排気マニホールド８Ｌ，８Ｒには排気管８１Ｌ，８１Ｒがそれぞれ接続され、更に、排気管８１Ｌ，８１Ｒには三元触媒等を内蔵した触媒コンバータ８２Ｌ，８２Ｒが取り付けられている。この触媒コンバータ８２Ｌ，８２Ｒを排気ガスが通過することにより、排気ガス中に含まれる炭化水素（ＨＣ）、一酸化炭素（ＣＯ）、及び酸化窒素成分（ＮＯｘ）が浄化されるようになっている。また、上記排気管８１Ｌ，８１Ｒの下流端側は合流されてマフラ８３に接続されている。
【００３６】
−制御ブロックの説明−
以上のエンジンＥの運転状態はエンジンＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）９によって制御される。このエンジンＥＣＵ９は、図３に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９３及びバックアップＲＡＭ９４などを備えている。
【００３７】
ＲＯＭ９２は、各種制御プログラムや、それら各種制御プログラムを実行する際に参照されるマップ等が記憶されている。ＣＰＵ９１は、ＲＯＭ９２に記憶された各種制御プログラムやマップに基づいて演算処理を実行する。
【００３８】
ＲＡＭ９３は、ＣＰＵ９１での演算結果や各センサから入力されたデータ等を一時的に記憶するメモリであり、バックアップＲＡＭ９４は、エンジンＥの停止時にその保存すべきデータ等を記憶する不揮発性のメモリである。これらＲＯＭ９２、ＣＰＵ９１、ＲＡＭ９３及びバックアップＲＡＭ９４は、バス９７を介して互いに接続されるとともに、外部入力回路９５及び外部出力回路９６と接続されている。
【００３９】
外部入力回路９５には、水温センサ１０１、エアフローメータ１０２、吸気温センサ１０３、Ｏ2センサ１０４、スロットルポジションセンサ１０５、クランク角センサ１０６、カム角センサ１０７、ノックセンサ１０８、吸気圧センサ１０９、アクセル開度センサ１１０等が接続されている。一方、外部出力回路９６には、上記インジェクタ７５Ｌ，７５Ｒ、イグナイタ１１１及び、スロットルバルブ７２を駆動するスロットルモータ７２ａ等が接続されている。
【００４０】
上記水温センサ１０１は、シリンダブロック１に形成されているウォータジャケット１１内を流れる冷却水の温度を検出し、その冷却水温信号をエンジンＥＣＵ９に送信する。
【００４１】
エアフローメータ１０２は、吸入空気量を検出し、その吸入空気量信号をエンジンＥＣＵ９に送信する。
【００４２】
吸気温センサ１０３は、上記エアクリーナ７４の下流側に配設され、吸入空気温度を検出して、その吸気温信号をエンジンＥＣＵ９に送信する。
【００４３】
Ｏ2センサ１０４は、各触媒コンバータ８２Ｌ，８２Ｒの下流側に配設され、排気中の酸素濃度を検知するものであり、排気中の空燃比が理論空燃比にあるか否かを判定しその判定信号をエンジンＥＣＵ９に送信する。
【００４４】
スロットルポジションセンサ１０５は、スロットルバルブ７２の開度を検出するものであって、そのスロットル開度検出信号をエンジンＥＣＵ９に送信する。
【００４５】
クランク角センサ１０６は、クランクシャフトＣの近傍に配設されており、クランクシャフトＣの回転角（クランク角ＣＡ）及び回転速度（エンジン回転速度ＮＥ）を検出するものである。具体的に、このクランク角センサ１０６は、所定のクランク角（例えば３０°）毎にパルス信号を出力する。このクランク角センサ１０６によるクランク角の検出手法の一例としては、クランクシャフトＣと回転一体のロータ（ＮＥロータ）１０６ａの外周面の３０°おきに外歯を形成しておき、この外歯と対面して電磁ピックアップで成る上記クランク角センサ１０６を配置する。そして、クランクシャフトＣの回転に伴って外歯がクランク角センサ１０６の近傍を通過した際に、このクランク角センサ１０６が出力パルスを発生するようになっている。尚、このＮＥロータ１０６ａとしては、外周面に形成される外歯が１０°おきに形成されたものが適用される場合もある。この場合、エンジンＥＣＵ９内で分周して３０°ＣＡ毎の出力パルスを発生する。
【００４６】
カム角センサ１０７は、吸気カムシャフト３５Ｌ，３５Ｒの近傍に配設されており、例えば第１番気筒の圧縮上死点（ＴＤＣ）に対応してパルス信号を出力することにより気筒判別センサとして使用される。つまり、このカム角センサ１０７は、吸気カムシャフト３５Ｌ，３５Ｒの１回転毎にパルス信号を出力する。このカム角センサ１０７によるカム角の検出手法の一例としては、吸気カムシャフト３５Ｌ，３５Ｒと回転一体のロータの外周面の１箇所に外歯を形成しておき、この外歯と対面して電磁ピックアップで成る上記カム角センサ１０７を配置し、吸気カムシャフト３５Ｌ，３５Ｒの回転に伴って外歯がカム角センサ１０７の近傍を通過した際に、このカム角センサ１０７が出力パルスを発生するようになっている。上記ロータはクランクシャフトＣの１／２の回転速度で回転するため、クランクシャフトＣが７２０°回転する毎に出力パルスを発生する。言い換えると、ある特定の気筒が同一行程（例えば第１番気筒が圧縮上死点に達した時点）となる度に出力パルスを発生する構成である。
【００４７】
ノックセンサ１０８は、各バンク２Ｌ，２Ｒそれぞれに配設され、シリンダブロック１に伝わるエンジンの振動を圧電素子式（ピエゾ素子式）または電磁式（マグネット、コイル）などによって検出する振動式センサであり、シリンダブロック１の振動の大きさに応じた出力信号をエンジンＥＣＵ９に送信する。
【００４８】
吸気圧センサ１０９は、サージタンク７１に取り付けられており、吸気管７３内の圧力（吸気管内圧力）を検出し、その吸気圧信号をエンジンＥＣＵ９に送信する。
【００４９】
アクセル開度センサ１１０は、アクセルペダルの踏み込み量（アクセル開度）に応じた検出信号を出力するものであり、単位時間あたりのアクセル開度の変化量を認識することによってアクセルの操作速度を認識できるようになっている。
【００５０】
そして、エンジンＥＣＵ９は、上記各種センサ１０１〜１１０の出力信号に基づいて、イグナイタ１１１、インジェクタ７５Ｌ，７５Ｒ、スロットルモータ７２ａ等の各部を制御することにより、点火時期制御等を含むエンジンＥの各種制御を実行する。
【００５１】
その一例として、イグナイタ１１１，１１１による点火プラグ７７Ｌ，７７Ｒの点火タイミングの基本制御としては、点火タイミングがＭＢＴ（Ｍｉｎｉｍｕｍ  Ｓｐａｒｋ  Ａｄｖａｎｃｅ  ｆｏｒ  Ｂｅｓｔ  Ｔｏｒｑｕｅ：最適点火時期）に近付くように点火タイミングの進角補正を行っていきながら、ノックセンサ１０８，１０８によってノッキングが検知された場合には、点火タイミングの遅角補正を行ってノッキングを解消するといった制御が行われる（詳しくは後述する）。また、インジェクタ７５Ｌ，７５Ｒの燃料噴射の制御としては、エンジン負荷やエンジン回転数等に基づいて目標空燃比を算出し、エアフローメータ１０２によって検出された吸入空気量に基づき、上記目標空燃比が得られるように燃料噴射量の制御（インジェクタ７５Ｌ，７５Ｒの開弁時間の制御）が行われる。また、スロットルモータ７２ａの駆動制御としては、運転者により操作されるアクセルペダルの開度等に基づき、要求されたエンジン出力を得るための吸入空気量となるスロットルバルブ７２の開度が得られるようにスロットルモータ７２ａの駆動量が制御される。
【００５２】
−ノッキング判定装置の説明−
次に、ノッキング判定装置についての複数の実施形態について説明する。このノッキング判定装置は、エンジンＥにノッキングが発生した際に点火プラグ７７Ｌ，７７Ｒの点火時期を遅角させてノッキングを解消させるべく、ノッキング発生の有無を判定するものであって、上記ノックセンサ１０８からの信号に基づいてノッキング判定を行う。より具体的には、後述するように、ノッキング発生の有無を判定する期間であるノック判定期間内において、ノックセンサ１０８からの出力信号をＡ／Ｄ変換し、過去のバックグランドレベルを今回のノックセンサ１０８からの出力信号の値で更新することによりバックグランドレベルを新たに算出する。また、このバックグランドレベルを所定倍（例えば２倍）するなどして「ノック判定値」を設定する。そして、この「ノック判定値」と「ノックセンサ出力値（例えばピーク値）」とを比較し、「ノックセンサ出力値」が「ノック判定値」を超えている場合にはノッキングが発生していると判定するようになっている。以下、このノッキング判定装置におけるノッキング判定動作についての複数の実施形態について説明する。
【００５３】
（第１実施形態）
先ず、第１実施形態について説明する。ここでは、以下の（Ｉ）〜（VII）の順で説明する。
（Ｉ）  ノックセンサ１０８からの出力信号のピーク値取り込み動作
（II）  バックグランド値の算出動作
（III） 現在マップ値（バックグランドレベルの基準レベル値）の補間計算
（IV）  バックグランドガード値の算出動作
（Ｖ）  ガード処理動作
（VI）  バックグランド値の逆補間によるマップ更新（バックグランドレベルの更新）動作
（VII） 実行点火時期の算出動作
＜ノックセンサ１０８からの出力信号のピーク値取り込み動作＞
先ず、図４に基づいてノックセンサ１０８からの出力信号のピーク値取り込み動作について説明する。この動作は、各気筒の燃焼行程が行われる毎にノック判定期間内におけるノックセンサ１０８からの出力信号のピーク値を検知するものである。このピーク値は、後述するノック判定動作で使用される値である。尚、この図４に示すピーク値取り込みルーチンは、エンジンＥＣＵ９において所定時間（例えば数μｓｅｃ）毎に繰り返して実行される。または、クランクシャフトＣが所定のクランク角度（例えば５°ＣＡ：クランクアングル）だけ回転する毎に行われる。
【００５４】
先ず、ステップＳＴ１−１において、予め設定されているノック判定終了フラグが「１」であるか否かを判定する。このノック判定終了フラグは、燃焼行程を行う気筒がノック判定期間の開始となるタイミング（例えばクランク角度で圧縮上死点後（ＡＴＤＣ）１０°ＣＡ）に達すると「１」となり、その気筒がノック判定期間の終了となるタイミング（例えばクランク角度で圧縮上死点後（ＡＴＤＣ）７０°ＣＡ）に達すると「０」となる。このようにノック判定期間を比較的大きく設定している理由は、ノッキング発生状況のバラツキや、燃焼室７６Ｌ，７６Ｒ内で発生したノッキングに伴う振動がノックセンサ１０８の取り付け位置まで伝達されるのに要する時間を考慮したものである。
【００５５】
このステップＳＴ１−１において、ノック判定終了フラグが「０」であってＮｏに判定された場合には、ステップＳＴ１−２に移ってピーク値取り込み処理をリセットする。つまり、次に燃焼行程を迎える気筒がノック判定期間に達するまでピーク値取り込み動作の開始を待機することになる。
【００５６】
一方、ステップＳＴ１−１において、ノック判定終了フラグが「１」となっておりＹｅｓに判定された場合には、ステップＳＴ１−３に移って、燃焼行程を行う気筒がノック判定期間の開始となるタイミング（開始点）を通過しているか否かを判定する。本実施形態の場合には、燃焼行程を行う気筒がクランク角度で圧縮上死点後（ＡＴＤＣ）１０°ＣＡを通過しているか否かを判定する。
【００５７】
燃焼行程を行う気筒が未だノック判定期間の開始となるタイミングに達していない場合には、ステップＳＴ１−３でＮｏ判定され、本ルーチンを終了する。
【００５８】
一方、燃焼行程を行う気筒がノック判定期間の開始となるタイミングに達している場合には、ステップＳＴ１−３でＹｅｓ判定され、ステップＳＴ１−４に移って、燃焼行程を行う気筒がノック判定期間の終了となるタイミング（終了点）を通過したか否かを判定する。本実施形態の場合には、燃焼行程を行う気筒がクランク角度で圧縮上死点後（ＡＴＤＣ）７０°ＣＡを通過したか否かを判定する。
【００５９】
燃焼行程を行う気筒がノック判定期間の終了となるタイミングを通過している場合には、ステップＳＴ１−４でＹｅｓ判定され、ステップＳＴ１−５に移ってノック判定終了フラグを「０」に設定し、本ルーチンを終了する。つまり、次に燃焼行程を迎える気筒がノック判定期間に達するまで（ノック判定終了フラグが「１」となるまで）ピーク値取り込み動作の開始を待機することになる。
【００６０】
一方、燃焼行程を行う気筒がノック判定期間の終了となるタイミングを未だ通過していない場合には、ステップＳＴ１−４でＮｏ判定され、現在、ノック判定期間中にあるとして、ステップＳＴ１−６に移って、ノックセンサ１０８から出力されている信号の値を取り込む。この値は、ノックセンサ１０８からのアナログ信号をデジタル信号に変換したものであり、以下、ＡＤ値と呼ぶ。
【００６１】
このようにして、ＡＤ値を読み込んだ後、ステップＳＴ１−７に移り、今回のノック判定期間中（ＡＴＤＣ１０°ＣＡ〜ＡＴＤＣ７０°ＣＡの期間中）において最も高いＡＤ値（今回の燃焼行程において過去に取り込まれたＡＤ値：以下、ピーク値）と、今回のノックセンサ１０８からの信号がＡＤ変換されることにより読み込まれたＡＤ値とを比較し、今回読み込んだＡＤ値がピーク値よりも高いか否かを判定する。
【００６２】
今回読み込んだＡＤ値がピーク値以下である場合には、ステップＳＴ１−７でＮｏに判定され、本ルーチンを終了する。つまり、今回読み込んだＡＤ値については、ノック判定動作に使用するセンサ出力値としては採用しない。
【００６３】
一方、今回読み込んだＡＤ値がピーク値よりも高い場合には、ステップＳＴ１−７でＹｅｓに判定され、ステップＳＴ１−８に移って、このＡＤ値を新たなピーク値として更新する。つまり、今回の燃焼行程において、その後にこのピーク値よりも高いＡＤ値が取り込まれない限り、このピーク値を、ノック判定動作に使用するセンサ出力値として採用することになる。
【００６４】
このような動作をノック判定期間中に繰り返して行い、このノック判定期間中（ＡＴＤＣ１０°ＣＡ〜ＡＴＤＣ７０°ＣＡの期間中）で最も高いＡＤ値をピーク値として取得する。
【００６５】
図５は、ある気筒のノック判定期間中（ＡＴＤＣ１０°ＣＡ〜ＡＴＤＣ７０°ＣＡの期間中）におけるノックセンサ１０８の出力値の一例を示している。このようなセンサ出力値が取り込まれた場合、今回の燃焼行程におけるピーク値は、図中Ａとして得られることになる。
【００６６】
尚、上記ノック判定期間として設定されるクランクアングルは上述した値に限らず、任意に設定可能である。
【００６７】
＜バックグランド値の算出動作＞
次に、上述のピーク値取り込み動作によって得られたピーク値を使用したバックグランド値の算出動作について説明する。上述した如く、このバックグランド値は、ノッキング判定を行うための基準値となる「ノック判定値」を設定するための値である。そして、本実施形態では、以下の式（１）によってノックセンサ１０８からの出力信号を「１／１６なまし処理」することで「バックグランド値」ｂを算出するようにしている。
【００６８】
ｂ＝（１５×ＢＧ＋Ａ）／１６        …（１）
ここで、ｂは今回のバックグランド値、ＢＧは前回の（今回のピーク値が反映されていない）バックグランドレベル、Ａは上記ピーク値取り込み動作によって得られたピーク値である。
【００６９】
＜現在マップ値の補間計算＞
次に、現在のエンジン運転状態におけるバックグランドレベル上のマップ値（本発明で言う基準レベル値）を補間計算によって求めるための動作（現在バックグランド基準レベル値算出手段による現在バックグランド基準レベル値算出動作）について図６〜８に示す現在マップ値算出ルーチンに沿って説明する。また、図９はエンジン回転数とエンジン負荷とをパラメータとしてエンジンの運転状態を認識する学習マップ（バックグランドレベルを決定するマップ：以下、単にマップと呼ぶ）を示している。このマップにおいて、エンジン回転数として、例えば「Ｉ」は１０００ｒｐｍ、「ＩＩ」は２０００ｒｐｍ、「ＩＩＩ」は３０００ｒｐｍ、「ＩＶ」は４０００ｒｐｍ、「Ｖ」は５０００ｒｐｍである。また、エンジン負荷として、例えば「ｉ」は５０ｋＰａ、「ｉｉ」は７０ｋＰａ、「ｉｉｉ」は９０ｋＰａ、「ｉｖ」は１１０ｋＰａ、「ｖ」は１３０ｋＰａである。つまり、このマップ上に設定されているエンジン回転数及びエンジン負荷により得られる２５ポイント（ＲＡＭ９３に書き込まれているマップ値：この値はバックグランドレベルの更新（後述する逆補間によるマップ更新動作）に伴って書き換えられる）に対して、現エンジン運転状態の位置（現エンジン運転状態を囲む４ポイントに対する配分）を求め、それに基づいて現在のエンジン運転状態におけるマップ値の算出動作を行うようにしている。例えば、エンジン回転数が２５００ｒｐｍで且つエンジン負荷が８０ｋＰａである場合、現エンジン運転状態はマップ上の点Ｘにあり、この点Ｘを囲む４ポイントとしては、ポイント「６」「７」「１１」「１２」のＲＡＭ値となる。また、上記各値はこれに限るものではなく、任意に設定可能である。
【００７０】
図６〜図８に示す現在マップ値算出ルーチンにおいて、ステップＳＴ２−１〜ＳＴ２−１２は、エンジン回転数に基づいたマップ上の現エンジン運転状態を求めるための変数を算出する手順である。また、ステップＳＴ２−１３〜ＳＴ２−２４は、エンジン負荷に基づいたマップ上の現エンジン運転状態を求めるための変数を算出する手順である。また、ステップＳＴ２−２５〜ＳＴ２−２７では、これら求めた変数を利用した補間計算により現エンジン運転状態におけるマップ値を求めている。以下、具体的に説明する。
【００７１】
図６〜図８に示すように、現在マップ値の補間計算にあっては、先ず、ステップＳＴ２−１において、上記クランク角センサ１０６の出力信号に基づいてエンジン回転数を検出し、この値を「α」とする。そして、ステップＳＴ２−２において、このエンジン回転数が図９におけるマップの運転状態「Ｖ」（例えばエンジン回転数５０００ｒｐｍ）以下であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−３に移って、「α」に「Ｖ」を代入する。つまり、エンジン回転数が「Ｖ」を超えている場合には、以下の制御動作では、エンジン回転数を「Ｖ」として扱うこととする。
【００７２】
一方、ステップＳＴ２−４において、このエンジン回転数が図９におけるマップの運転状態「Ｉ」（例えばエンジン回転数１０００ｒｐｍ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−５に移って、「α」に「Ｉ」を代入する。つまり、エンジン回転数が「Ｉ」未満である場合には、以下の制御動作では、エンジン回転数を「Ｉ」として扱うこととする。
【００７３】
その後、ステップＳＴ２−６において、このエンジン回転数が図９におけるマップの運転状態「ＩＩ」（例えばエンジン回転数２０００ｒｐｍ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−７に移る。つまり、エンジン回転数が「Ｉ」以上で且つ「ＩＩ」未満である場合にはステップＳＴ２−７に移る。また、上記ステップＳＴ２−５で「α」が「Ｉ」に設定された場合にもステップＳＴ２−７に移ることになる。
【００７４】
また、ステップＳＴ２−６の判定がＹｅｓである場合にはステップＳＴ２−８に移る。このステップＳＴ２−８では、エンジン回転数が図９におけるマップの運転状態「ＩＩＩ」（例えばエンジン回転数３０００ｒｐｍ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−９に移る。つまり、エンジン回転数が「ＩＩ」以上で且つ「ＩＩＩ」未満である場合にはステップＳＴ２−９に移る。
【００７５】
更に、ステップＳＴ２−８の判定がＹｅｓである場合にはステップＳＴ２−１０に移る。このステップＳＴ２−１０では、エンジン回転数が図９におけるマップの運転状態「ＩＶ」（例えばエンジン回転数４０００ｒｐｍ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−１１に移る。また、この判定がＹｅｓである場合にはステップＳＴ２−１２に移る。つまり、エンジン回転数が「ＩＩＩ」以上で且つ「ＩＶ」未満である場合にはステップＳＴ２−１１に移り、エンジン回転数が「ＩＶ」以上で且つ「Ｖ」未満である場合にはステップＳＴ２−１２に移る。また、上記ステップＳＴ２−３で「α」が「Ｖ」に設定された場合にもステップＳＴ２−１２に移ることになる。
【００７６】
ステップＳＴ２−７、ＳＴ２−９、ＳＴ２−１１、ＳＴ２−１２においては、「α」、「β」、「γ」の値として以下のように設定される。
【００７７】
ステップＳＴ２−７では、「α」を「α−Ｉ」により求め、「β」を「Ｓ（マイコン内でのアドレス値：先頭アドレス）」とし、「γ」を「ＩＩ−Ｉ」により求める。上述した数値の場合には、「α」は、現エンジン回転数から「１０００」を減じた値となり、また、「γ」は「１０００」となる。ステップＳＴ２−９では、「α」を「α−ＩＩ」により求め、「β」を「Ｓ＋１」とし、「γ」を「ＩＩＩ−ＩＩ」により求める。上述した数値の場合には、「α」は、現エンジン回転数から「２０００」を減じた値となり、また、「γ」は「１０００」となる。ステップＳＴ２−１１では、「α」を「α−ＩＩＩ」により求め、「β」を「Ｓ＋２」とし、「γ」を「ＩＶ−ＩＩＩ」により求める。上述した数値の場合には、「α」は、現エンジン回転数から「３０００」を減じた値となり、また、「γ」は「１０００」となる。ステップＳＴ２−１２では、「α」を「α−ＩＶ」により求め、「β」を「Ｓ＋３」とし、「γ」を「Ｖ−ＩＶ」により求める。上述した数値の場合には、「α」は、現エンジン回転数から「４０００」を減じた値となり、また、「γ」は「１０００」となる。
【００７８】
以上のようにして、エンジン回転数に基づいた「α」、「β」、「γ」の各値を求める。
【００７９】
次に、エンジン負荷に基づいた「θ」、「δ」、「μ」の各値を求める。図７に示すように、先ず、ステップＳＴ２−１３において、上記エンジン回転数やアクセル開度センサ１１０により検出されるアクセル開度等からエンジン負荷を求め、この値を「θ」とする。そして、ステップＳＴ２−１４において、このエンジン負荷が図９におけるマップの運転状態「ｉ」（例えばエンジン負荷５０ｋＰａ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−１５に移って、「θ」に「ｉ」を代入する。つまり、エンジン負荷が「ｉ」未満である場合には、以下の制御動作では、エンジン負荷を「ｉ」として扱うこととする。
【００８０】
一方、ステップＳＴ２−１４でＹｅｓに判定されると、ステップＳＴ２−１６において、このエンジン負荷が図９におけるマップの運転状態「ｖ」（例えばエンジン負荷１３０ｋＰａ）以下であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−１７に移って、「θ」に「ｖ」を代入する。つまり、エンジン負荷が「ｖ」を超えている場合には、以下の制御動作では、エンジン負荷を「ｖ」として扱うこととする。
【００８１】
その後、ステップＳＴ２−１８において、このエンジン負荷が図９におけるマップの運転状態「ｉｉ」（例えばエンジン負荷７０ｋＰａ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−１９に移る。また、この判定がＹｅｓである場合にはステップＳＴ２−２０に移る。つまり、エンジン負荷が「ｉ」以上で且つ「ｉｉ」未満である場合にはステップＳＴ２−１９に移り、エンジン負荷が「ｉｉ」以上で且つ「ｖ」未満である場合にはステップＳＴ２−２０に移る。
【００８２】
その後、ステップＳＴ２−２０において、このエンジン負荷が図９におけるマップの運転状態「ｉｉｉ」（例えばエンジン負荷９０ｋＰａ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−２１に移る。また、この判定がＹｅｓである場合にはステップＳＴ２−２２に移る。つまり、エンジン負荷が「ｉｉ」以上で且つ「ｉｉｉ」未満である場合にはステップＳＴ２−２１に移り、エンジン負荷が「ｉｉｉ」以上で且つ「ｖ」未満である場合にはステップＳＴ２−２２に移る。
【００８３】
更に、その後、ステップＳＴ２−２２において、このエンジン負荷が図９におけるマップの運転状態「ｉｖ」（例えばエンジン負荷１１０ｋＰａ）以上であるか否かを判定する。この判定がＮｏである場合にはステップＳＴ２−２３に移る。また、この判定がＹｅｓである場合にはステップＳＴ２−２４に移る。つまり、エンジン負荷が「ｉｉｉ」以上で且つ「ｉｖ」未満である場合にはステップＳＴ２−２３に移り、エンジン負荷が「ｉｖ」以上で且つ「ｖ」未満である場合にはステップＳＴ２−２４に移る。また、上記ステップＳＴ２−１５で「θ」が「ｉ」に設定された場合にはステップＳＴ２−１９に移ることになる。
【００８４】
ステップＳＴ２−１９、ＳＴ２−２１、ＳＴ２−２３、ＳＴ２−２４においては、「θ」、「δ」、「μ」の値として以下のように設定される。
【００８５】
ステップＳＴ２−１９では、「θ」を「θ−ｉ」により求め、「δ」を「０」とし、「μ」を「ｉｉ−ｉ」により求める。上述した数値の場合には、「θ」は、現エンジン負荷から「５０」を減じた値となり、また、「μ」は「２０」となる。ステップＳＴ２−２１では、「θ」を「θ−ｉｉ」により求め、「δ」を「１」とし、「μ」を「ｉｉｉ−ｉｉ」により求める。上述した数値の場合には、「θ」は、現エンジン負荷から「７０」を減じた値となり、また、「μ」は「２０」となる。以下、同様にして、ステップＳＴ２−２３では、「θ」を「θ−ｉｉｉ」により求め、「δ」を「２」とし、「μ」を「ｉｖ−ｉｉｉ」により求め、ステップＳＴ２−２４では、「θ」を「θ−ｉｖ」により求め、「δ」を「３」とし、「μ」を「ｖ−ｉｖ」により求める。
【００８６】
以上のようにして、エンジン負荷に基づいた「θ」、「δ」、「μ」の各値を求める。
【００８７】
その後、ステップＳＴ２−２５（図８）において、以下の演算式（２）〜（５）により、「ε」、「φ」、「τ」、「η」を求める。
【００８８】
ε←β＋５δ        …（２）
φ←β＋５δ＋１    …（３）
τ←β＋５δ＋５    …（４）
η←β＋５δ＋６    …（５）
このようにして、「ε」、「φ」、「τ」、「η」を求めた後、ステップＳＴ２−２６において、以下の演算式（６）による補間計算により、「Ｂ」を求め、この「Ｂ」を現在マップ値として設定する（ステップＳＴ２−２７）。
【００８９】
Ｂ＝｛（η−τ）×α／γ＋τ−（φ−ε）×α／γ＋ε｝×θ／μ
＋（φ−ε）×α／γ＋ε      …（６）
＜バックグランドガード値の算出動作＞
次に、バックグランドガード値の算出動作について説明する。このバックグランドガード値は、上記現在マップ値の補間計算により得られた現在マップ値に対して補正を行うことで求められる値であって、上記バックグランド値の算出動作によって得られたバックグランド値ｂと比較するための値である。
【００９０】
具体的には、上記現在マップ値Ｂに対して、例えば±１０％の許容範囲（許容乖離量として±１０％）を与える値としてバックグランドガード値が求められる。つまり以下の式（７）によってバックグランドガード値が算出されることになる。
【００９１】
ｇ＝Ｂ×（±１．１）          …（７）
ここで、ｇはバックグランドガード値である。
【００９２】
尚、上記許容範囲としては±３％に設定するなど、任意に設定可能である。
【００９３】
＜ガード処理動作＞
次に、ガード処理動作について説明する。この動作は、上記算出動作によって求められたバックグランドガード値ｇと上記バックグランド値ｂと比較するための動作である。
【００９４】
具体的には、上記バックグランド値ｂがバックグランドガード値ｇの範囲内の値であるか否か、つまり、今回算出されたバックグランド値ｂは所定範囲内のものであるか否かを判定する。例えば上述したピストンの打音等のように極端に大きな振動が発生することで過大なピーク値Ａが得られてしまうような状況にあっては、このピーク値Ａの影響を受けてバックグランド値ｂも過大となる可能性があり、このようなバックグランド値ｂをその後のノッキング判定動作に使用することは好ましくないので、上記所定の範囲内であるもののみを正常なバックグランド値ｂとして認識するための動作である。
【００９５】
そして、上記バックグランド値ｂがバックグランドガード値ｇの範囲を超える値である場合には、今回のバックグランド値ｂとしてはバックグランドガード値ｇを採用する（ｂ←ｇ）。一方、上記バックグランド値ｂがバックグランドガード値ｇの範囲内の値である場合には、以下の式（８）によって「マップ更新量：ｋ」を算出する。このマップ更新量ｋは、後述するように、バックグランド値の逆補間によるマップ更新動作に利用される。
【００９６】
ｋ＝（ｂ−ＢＧ）／８        …（８）
＜バックグランド値の逆補間によるマップ更新動作＞
次に、上記マップ更新量ｋを使用したバックグランド値の逆補間によるマップ更新動作について図１０を用いて説明する。
【００９７】
先ず、ステップＳＴ３−１において、上記図６〜図８で示した動作（現在マップ値算出ルーチン）と同様にして現在マップ位置を算出する。
【００９８】
その後、ステップＳＴ３−２において以下の式（９）〜（１２）によって補正量ａ〜ｄを求める。この補正量は、現在のバックグランドレベルに対する更新量として得られるものである。
【００９９】
ａ←ｋ×｛（γ−α）／γ｝×｛（μ−θ）／μ｝        …（９）
ｂ←ｋ×（α／γ）×（θ／μ）                        …（１０）
ｃ←ｋ×｛（γ−α）／γ｝×｛（μ−θ）／μ｝        …（１１）
ｄ←ｋ×（α／γ）×（θ／μ）                        …（１２）
その後、ステップＳＴ３−３において、以下の演算式（１３）〜（１６）により、上記マップ上における「ε」、「φ」、「τ」、「η」の各データを更新する。
【０１００】
εのデータ←εのデータ＋ａ        …（１３）
φのデータ←φのデータ＋ｂ        …（１４）
τのデータ←τのデータ＋ｃ        …（１５）
ηのデータ←ηのデータ＋ｄ        …（１６）
このようにして、「ε」、「φ」、「τ」、「η」を求めることで図９に示すマップの値が更新されることになる。本実施形態の場合には、上記現エンジン運転状態におけるマップ上の点Ｘの周囲のデータ（ポイント「６」「７」「１１」「１２」のＲＡＭ値）が、上記各値「ε」「φ」「τ」「η」としてそれぞれ更新されることになる。
【０１０１】
図１１は、マップ上の各点を結ぶことで形成されるバックグランドレベルの形状を３次元マップとして示している。従って、このような図１１に示すマップにより設定されるバックグランドレベルに対して、上記ピストンの打音等のように極端に大きな振動が発生した場合には、図１１に破線で示すように、上記「バックグランド値の算出動作」で得られたバックグランド値ｂがバックグランドレベルの基準レベル値に対し大きく乖離することになる。本実施形態では、このような状況にあっては、今回取得されたピーク値Ａを使用したバックグランド値ｂに制限を与えることになる（バックグランドレベル更新制限手段による制御動作）。
【０１０２】
図１２は、以上の制御手順（出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの手順）の一連の流れを概略的に示すフローチャートである。
【０１０３】
この図１２におけるステップＳＴ−Ａが「出力信号のピーク値取り込み動作」及び「バックグランド値の算出動作」に対応し、ステップＳＴ−Ｂ〜ＳＴ−Ｃが「現在マップ値の補間計算」に対応し、ステップＳＴ−Ｄ〜ＳＴ−Ｆが「バックグランドガード値の算出動作」及び「ガード処理動作」に対応し、ステップＳＴ−Ｇ〜ＳＴ−Ｉが「逆補間によるマップ更新動作」に対応している。
【０１０４】
このフローチャートにおいて最も特徴的なところは、ステップＳＴ−Ｄ〜ＳＴ−Ｆの「バックグランドガード値の算出動作」及び「ガード処理動作」にある。つまり、上述した如く、現在マップ値に対して±１０％の許容範囲を与えてバックグランドガード値ｇを求め、上記バックグランド値の算出動作によって得られたバックグランド値ｂがバックグランドガード値ｇの範囲内にあるか否かを判定する。そして、この範囲内にある場合には、そのバックグランド値ｂをそのまま使用して「逆補間によるマップ更新動作」に移る一方、範囲内にない場合には、バックグランド値ｂをバックグランドガード値ｇに置き換え、このバックグランドガード値ｇ（上記許容範囲の最大値）を使用して「逆補間によるマップ更新動作」に移ることになる。
【０１０５】
＜実行点火時期の算出動作＞
次に、上記バックグランドレベルを使用してノッキング判定を行うと共に、ノッキング発生の有無に応じて実行点火時期を算出する動作について図１３〜図１６のフローチャートに沿って説明する。
【０１０６】
図１３は、実行点火時期の算出動作であり、図１４は、点火遅角量の減算処理動作であり、図１５は、ノッキング防止点火時期制御の実行条件を判定するための動作であり、図１６は、点火遅角量（上記図１３の動作で使用する点火遅角量）の更新動作である。以下、順に説明する。
【０１０７】
実行点火時期の算出動作（図１３）では、先ず、ステップＳＴ４−１でＭＢＴ（最適点火時期）の算出動作を行う。このＭＢＴはエンジン回転数等に応じて設定される値であって、その算出動作は公知であるため、ここでの説明は省略する。
【０１０８】
その後、ステップＳＴ４−２に移り、このＭＢＴ点火時期から後述の動作（図１４及び図１６における動作）により得られた点火遅角量だけ遅角した点火時期を実行点火時期として設定する。
【０１０９】
点火遅角量の減算処理動作（図１４）では、先ず、ステップＳＴ５−１において、予め備えられていたタイマのカウントアップ（インクリメント）を行う。このタイマは例えば０．１ｓｅｃ毎のカウントアップを行い１ｓｅｃをカウントするとリセットされるものである。
【０１１０】
その後、ステップＳＴ５−２において、このタイマのカウントが１ｓｅｃに達したか否かを判定する。未だ１ｓｅｃに達しておらず、Ｎｏ判定された場合にはリターンする。
【０１１１】
一方、タイマのカウントが１ｓｅｃに達して、ステップＳＴ５−２においてＹｅｓ判定されると、ステップＳＴ５−３でタイマをリセットした後、ステップＳＴ５−４で点火遅角量を「０．５°ＣＡ」分だけ減算、つまり、「０．５°ＣＡ」だけ点火時期が進角するように点火遅角量を設定する。このようにして、本ルーチンでは、１ｓｅｃ毎に点火遅角量を「０．５°ＣＡ」だけ減算していく。
【０１１２】
その後、ステップＳＴ５−５に移り、上記設定された点火遅角量が「０」以上の値であるか否かを判定し、Ｙｅｓ判定された場合には、現在の点火遅角量を維持したままリターンする。一方、設定された点火遅角量が０未満の値となり、ステップＳＴ５−５でＮｏ判定された場合には、ステップＳＴ５−６に移って点火遅角量を「０°ＣＡ」に設定する。つまり、点火遅角量が下限値に達したとして「０°ＣＡ」（遅角させない状態）に設定する。
【０１１３】
ノッキング防止点火時期制御の実行条件判定動作（図１５）では、先ず、ステップＳＴ６−１〜ステップＳＴ６−３において、エンジン回転数、吸気管内圧力、冷却水温が共に所定値（ＮＡ、ＰＡ、ＴＡ）以上であるか否かを判定する。これら値は実験的または経験的に設定される。そして、これら全ての値が所定値以上である場合にはステップＳＴ６−４に移って、制御条件フラグを「１」に設定する。一方、何れか一つでも所定値未満であった場合には、ステップＳＴ６−５に移り、点火遅角量として「０°ＣＡ」に設定する。また、ステップＳＴ６−６で制御条件フラグを「０」に設定する。つまり、エンジンＥの暖機運転が完了し、安定したエンジン運転状態に達した後に上記制御条件フラグを「１」に設定して、点火時期制御を実行するようにしている。
【０１１４】
点火遅角量の更新動作（図１６）では、先ず、ステップＳＴ７−１で、この更新動作の終了タイミングで「１」にセットされる判定終了フラグが「０」であるか否かを判定する。ここで、終了タイミングが「１」であってＮｏに判定された場合には本ルーチンを終了する。一方、未だ終了タイミングではなく、判定終了フラグが「０」であってＹｅｓに判定された場合には、ステップＳＴ７−２に移って、上述したバックグランドレベルの算出動作を行う。そして、ステップＳＴ７−３では、この算出されたバックグランドレベルに対して所定の定数（例えば「２」）を乗算することで「ノック判定値」を求める。この「ノック判定値」を求めるためのバックグランドレベルに対する補正動作はこれに限定されるものではない。
【０１１５】
そして、ステップＳＴ７−４において、上記「ピーク値」と「ノック判定値」とを比較し、「ノック判定値」よりも「ピーク値」の方が大きいＹｅｓに判定された場合には、ステップＳＴ７−５に移って、上記図１５（ノッキング防止点火時期制御の実行条件判定動作）において設定されている制御条件フラグが「１」であるか否かを判定する。この制御条件フラグが「１」であってＹｅｓに判定された場合には、ステップＳＴ７−６において点火遅角量を「０．５°ＣＡ」分だけ増加、つまり、「０．５°ＣＡ」だけ遅角するように点火遅角量を設定する。つまり、ノッキングが発生している状況であるので、点火遅角量を大きくしてノッキングを解消する動作を実行させる。
【０１１６】
一方、制御条件フラグが「０」である場合、または上記「ピーク値」が「ノック判定値」以下である場合（ステップＳＴ７−４でＮｏ判定された場合であってノッキングが発生していないと判定される場合）には、点火遅角量を増加させることなしにステップＳＴ７−７に移る。つまり、この場合には、上記図１４で示した点火遅角量の減算処理動作によって点火時期が進角されていくことになる。
【０１１７】
そして、ステップＳＴ７−７では、上記「ピーク値」をクリアする。また、ステップＳＴ７−８において上記判定終了フラグを「１」にセットして本ルーチンを終了する。
【０１１８】
以上説明したように、本実施形態では、ピストンの打音等のように極端に大きな振動が発生することで過大なピーク値Ａが得られてしまうような状況にあっては、このピーク値Ａの影響を受けてバックグランド値ｂも過大となる可能性があり、このようなバックグランド値ｂをその後のノッキング判定動作に使用することは好ましくないので、上記所定の範囲内であるもののみを正常なバックグランド値ｂとして認識しながらバックグランドレベルを更新していくようにしている。このため、バックグランドレベルが過大に得られてしまうといった状況を回避でき、バックグランドレベルの適正化が図れて、その後のノッキング判定を正確に行うことが可能になる。
【０１１９】
（第２実施形態）
次に、第２実施形態について説明する。上述した第１実施形態では、マップ上に設定されているエンジン回転数及びエンジン負荷により得られる２５ポイント（ＲＡＭ９３に書き込まれているマップ値）を個別に学習していくものであった。これに代えて、本実施形態のものは、図１７に示すように、予め初期バックグランドレベルを設定しておき、この初期バックグランドレベルを、ノックセンサ１０８からの出力信号に基づいてオフセット（図１７において上下にスライド移動）させることで、バックグランドレベルの更新を行うようにしたものである（バックグランドレベル基準レベル値設定手段による設定動作）。
【０１２０】
以下、本実施形態における出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの手順を図１８のフローチャート（上記第１実施形態における図１２に相当するフローチャート）に沿って説明する。尚、この図１８において図１２と共通するステップについては同ステップ番号を付し、その説明を省略する。つまり、図１８におけるステップＳＴ−Ａ〜ＳＴ−Ｃ、ＳＴ−Ｅ、ＳＴ−Ｆは図１２のものと同一ステップである。
【０１２１】
本実施形態の特徴として、ステップＳＴ−Ｃで現在マップ値を算出した後、ステップＳＴ−Ｊでは、上記予め設定されている初期バックグランドレベル上における現在マップ値（基準レベル値）を「ｍ」として設定し、ステップＳＴ−Ｋで、オフセット値「ｆ」を算出する。このオフセット値「ｆ」は、過去のノックセンサ１０８からの出力信号の履歴により算出される上記初期バックグランドレベルに対する補正量（オフセット量）として与えられる。例えば上記第１実施形態と同様のなまし処理等を使用してオフセット値「ｆ」は算出される。
【０１２２】
そして、ステップＳＴ−Ｌにおいて、この初期バックグランドレベルの現在マップ値「ｍ」に対して上記オフセット値「ｆ」だけオフセットさせた値に対して、更に、例えば±１０％の許容範囲を与える値としてバックグランドガード値「ｇ」が求められる。
【０１２３】
そして、ステップＳＴ−Ｅ、ＳＴＶ−Ｆによる「ガード処理動作」を行った後、ステップＳＴ−Ｍ、ＳＴ−Ｎにおいて「オフセット値格納動作」が行われる。ステップＳＴ−Ｍでは、以下の式（１７）によりオフセット値「ｆ」が更新され、ＳＴ−Ｎにおいて、この更新後のオフセット値「ｆ」がＲＡＭ９３に格納されることになる。
【０１２４】
ｆ＝｛１５ｆ＋（ｂ−ｍ）｝／１６        …（１７）
本実施形態によれば、上記初期バックグランドレベルをＲＯＭ９２に書き込んでおくことが可能である。このため、ＲＡＭ９３に必要な記憶容量を削減化できる。また、上記オフセット量によってバックグランドレベルが更新されていくので、その更新に要する演算量も大幅に削減することができる。また、第１実施形態にあっては、マップ上に設定されているエンジン回転数及びエンジン負荷により得られる２５ポイント（ＲＡＭ９３に書き込まれているマップ値）に高い信頼性が要求されるものであるが、本実施形態では、予め多数のエンジン運転状況での平均レベルの値として初期バックグランドレベルを設定することが可能であるので、常に高い信頼性が維持されることになる。
【０１２５】
（第３実施形態）
次に、第３実施形態について説明する。本実施形態における出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの手順を図１９のフローチャート（上記第１実施形態における図１２に相当するフローチャート）に沿って説明する。尚、この図１９において図１２と共通するステップについては同ステップ番号を付し、その説明を省略する。
【０１２６】
本実施形態における上記第１実施形態との相違点について以下に説明する。図１９に示すように、本実施形態にあっては、ステップＳＴ−Ｆの「ガード処理動作」において、今回のバックグランドレベルＢＧとしてはバックグランドガード値ｇが採用された場合、つまり、上記バックグランド値ｂがバックグランドガード値ｇ以上の値であるときには、上記「逆補間によるマップ更新動作」を実行することなしに制御を終了している。
【０１２７】
これにより、不必要にバックグランドレベルが更新されてしまうといった状況を回避することができる。例えば、ノッキングが発生することなく上記ピストンの打音が発生している状況においては、バックグランドレベルの更新がなされないので、このバックグランドレベルの適正化が維持されることになる。
【０１２８】
尚、本実施形態の如く上記バックグランド値ｂがバックグランドガード値ｇ以上の値であるときに、上記「逆補間によるマップ更新動作」を非実行とする制御は、上記第１実施形態及び第２実施形態の何れに対しても適用可能である。
【０１２９】
−その他の実施形態−
以上説明した各実施形態では、自動車用Ｖ型６気筒エンジンＥに本発明を適用した場合について説明した。本発明はこれに限らず、種々のエンジンに対して適用可能である。
【０１３０】
また、上述した第１実施形態の制御動作と第２実施形態の制御動作とを互いに組み合わせることも可能である。つまり、第２実施形態におけるオフセット値をエンジン回転数などに応じて変更可能とし、このオフセット値を使用してマップ値を算出するものである。また、この第１実施形態の制御動作と第２実施形態の制御動作とを互いに組み合わせる場合には、運転状態毎のバックグランドレベル（例えば上記２５ポイント）をＲＡＭ９３に書き込んでいき、ＲＯＭ９２に書き込まれている初期バックグランドレベルに対して、上記オフセット値によるオフセットと運転状態毎のバックグランド値によるバックグランドレベルの補正とを行うことにより、バックグランドレベルをより高い精度で適正化することが可能になる。
【図面の簡単な説明】
【０１３１】
【図１】実施形態に係るＶ型エンジンをクランクシャフトの軸心に沿った方向から見たエンジン内部の概略構成を示す図である。
【図２】エンジン、吸排気系及び制御系の概略を示すシステム構成図である。
【図３】エンジンの制御系を示すブロック図である。
【図４】ノックセンサ出力信号のピーク値取り込み動作を示すフローチャート図である。
【図５】ノックセンサのセンサ出力値の変化状態の一例を示す波形図である。
【図６】現在マップ値算出ルーチンにおいてエンジン回転数に基づいたマップ上の現エンジン運転状態を求めるための変数を算出する手順を示すフローチャート図である。
【図７】現在マップ値算出ルーチンにおいてエンジン負荷に基づいたマップ上の現エンジン運転状態を求めるための変数を算出する手順を示すフローチャート図である。
【図８】現在マップ値算出ルーチンにおいて補間計算により現エンジン運転状態におけるマップ値を求める手順を示すフローチャート図である。
【図９】マップを２次元表示した図である。
【図１０】バックグランド値の逆補間によるマップ更新動作の手順を示すフローチャート図である。
【図１１】バックグランドレベルを３次元表示した図である。
【図１２】第１実施形態における出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの一連の流れを概略的に示すフローチャート図である。
【図１３】実行点火時期の算出動作の手順を示すフローチャート図である。
【図１４】点火遅角量の減算処理動作の手順を示すフローチャート図である。
【図１５】ノッキング防止点火時期制御の実行条件を判定するための動作の手順を示すフローチャート図である。
【図１６】ノッキング判定動作及び点火遅角量の更新動作の手順を示すフローチャート図である。
【図１７】第２実施形態におけるマップを２次元表示した図である。
【図１８】第２実施形態における出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの一連の流れを概略的に示すフローチャート図である。
【図１９】第３実施形態における出力信号のピーク値取り込み動作から逆補間によるマップ更新動作までの一連の流れを概略的に示すフローチャート図である。
【符号の説明】
【０１３２】
１０８        ノックセンサ
Ｅ            エンジン（内燃機関）
ｂ            バックグランド値
ＢＧ          バックグランドレベル
Ｂ            現在マップ値
ｆ            オフセット値
【図１】
2008261299.tif 000003
【図２】
2008261299.tif 000004
【図３】
2008261299.tif 000005
【図４】
2008261299.tif 000006
【図５】
2008261299.tif 000007
【図６】
2008261299.tif 000008
【図７】
2008261299.tif 000009
【図８】
2008261299.tif 000010
【図９】
2008261299.tif 000011
【図１０】
2008261299.tif 000012
【図１１】
2008261299.tif 000013
【図１２】
2008261299.tif 000014
【図１３】
2008261299.tif 000015
【図１４】
2008261299.tif 000016
【図１５】
2008261299.tif 000017
【図１６】
2008261299.tif 000018
【図１７】
2008261299.tif 000019
【図１８】
2008261299.tif 000020
【図１９】
2008261299.tif 000021