(57)【要約】【課題】  エンジン始動時のバックグランドの収束性を高める。【解決手段】  ピーク値取得手段１ａは、内燃機関２の振動のピーク値を取得する。バックグランド算出手段１ｂは、ピーク値を前回のバックグランド（ピーク値の平均値）で減算して所定の係数を積算し、その値を前回のバックグランドに加算して、今回のバックグランドを算出する。ノック判定手段１ｃは、ピーク値とバックグランドとに基づいてノッキングの判定を行う。バックグランド設定手段１ｄは、内燃機関２の始動時、バックグランド算出手段１ｂがバックグランドを算出するのに用いる前回のバックグランドに、バックグランド記憶手段１ｅが記憶している、前回内燃機関２が稼動していたときのバックグランドを設定する。バックグランド記憶手段１ｅは、内燃機関２が稼動しているときのバックグランド算出手段１ｂが算出するバックグランドを記憶する。【選択図】  図１
2006220115.tif 000002
【特許請求の範囲】
【請求項１】
検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、
複数個のノック信号に基づいてしきい値を算出するしきい値算出手段と、
前記しきい値算出手段が算出したしきい値に基づいてしきい値を学習記憶するしきい値学習記憶手段と、
前記内燃機関の始動時、前記しきい値学習手段が学習記憶していたしきい値に基づいてしきい値を設定するしきい値設定手段と、
を有することを特徴とするノック検出装置。
【請求項２】
前記しきい値学習記憶手段は、複数個のしきい値を移動平均して算出したしきい値に基づいて学習記憶することを特徴とする請求項１記載のノック検出装置。
【請求項３】
前記しきい値学習記憶手段は、前記内燃機関の所定の温度ごとにしきい値を学習記憶することを特徴とする請求項１記載のノック検出装置。
【請求項４】
前記しきい値学習記憶手段は、前記内燃機関の気筒ごとにしきい値を学習記憶することを特徴とする請求項１記載のノック検出装置。
【請求項５】
前記しきい値学習記憶手段は、しきい値とノック信号との差が所定範囲内であるとき、しきい値を学習記憶することを特徴とする請求項１記載のノック検出装置。
【請求項６】
検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、
複数個のノック信号に基づいて前回のしきい値を更新して新たな算出をするしきい値算出手段と、
前記しきい値算出手段によるしきい値の更新量に上限値を設けるしきい値更新制限手段と、
前記上限値を前記内燃機関の燃料の噴射量に応じて変更する上限値変更手段と、
を有することを特徴とするノック検出装置。
【請求項７】
前記上限値変更手段は、エンジン回転数および吸気管圧力にも応じて前記上限値を算出し、前記噴射量、前記エンジン回転数、および前記吸気管圧力による前記上限値の最大値を採用することを特徴とする請求項６記載のノック検出装置。
【請求項８】
検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、
複数個のノック信号に基づいて前回のしきい値を更新して新たな算出をするしきい値算出手段と、
前記しきい値算出手段によるしきい値の更新量に上限値を設けるしきい値更新制限手段と、
前記上限値を前記内燃機関のスロットル開度に応じて変更する上限値変更手段と、
を有することを特徴とするノック検出装置。
【請求項９】
前記上限値変更手段は、エンジン回転数および吸気管圧力にも応じて前記上限値を算出し、前記スロットル開度、前記エンジン回転数、および前記吸気管圧力による前記上限値の最大値を採用することを特徴とする請求項８記載のノック検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はノック検出装置に関し、特に検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置に関する。
【背景技術】
【０００２】
エンジンに発生するノッキングを検出し、ノッキングの検出状態に応じて点火時期を制御するノッキング制御方法がある（例えば、特許文献１参照）。このノッキング制御方法は、エンジンのノッキングによる振動を検出するノックセンサからの出力のうち、ノッキングによる振動が含まれる可能性のある周波数成分のみをバンドパスフィルタ（ＢＰＦ）によって濾波し、そのピーク値をＴＤＣ（上死点）ごとにサンプリングしている。そして、サンプリングしたピーク値を平均化した値（以下、バックグランドと呼ぶ）に対し、サンプリングされたピーク値が所定のレベルを超えているか否かに基づいて、ノッキングの有無を判定し、点火進角量をフィードバック制御している。判定によりノッキングが発生していなければ、点火時期を進角していき、ノッキングが発生すれば、点火時期を遅角するようにフィードバック制御している。
【０００３】
ところでバックグランドは、上述したようにピーク値を平均化したもの（具体的には、ピーク値を前回のバックグランドで減算して所定の係数を積算し、その値を前回のバックグランドに加算する形で算出している。この値（更新値）には、ノイズによる急変を防止するための更新ガード値が設けられる。）であるため、エンジン始動時には、一定の値に収束するまでに時間を要する。
【０００４】
図２２は、エンジン始動時のバックグランドの収束を説明する図である。図に示すようにエンジン始動とともにピーク値がサンプリングされるが、バックグランドは、ピーク値を平均化したものであるためＴＤＣ毎に更新され、徐々にピーク値に収束していく。バックグランドがピーク値に収束しきる前（図中の期間Ｄ）にノッキング判定を行うと、ピーク値がバックグランドに対し、所定のレベルを超えていると判定する恐れがあり、ノッキングが発生したと誤判定してしまう。そのため、バックグランドが収束する時間が経過するまではノッキング判定が行えない。
【０００５】
また、バックグランドの算出では、上述したようにノイズによるバックグランドの急変を防止するための更新ガード値を設けている。しかし、ピーク値の急変がノイズによらない適正なものである場合、更新ガード値によってバックグランドの収束が遅れてしまう。そこで、従来、エンジン回転数と吸気管圧力のそれぞれに応じて、更新ガード値を変化させ、バックグランドの収束遅れを回避していた。例えば、エンジン回転数または吸気管圧力が急激に上昇した場合、ピーク値の絶対値も急激に大きくなる。この場合のピーク値の変化はノイズによるものではないので、バックグランドが速やかにピーク値に収束するように更新ガード値を大きくする。これによって、バックグランドは、速やかに所定の値に収束する。
【特許文献１】特開平８−２１８９９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように従来では、エンジン始動時、バックグランド（しきい値）の収束に時間を要し、その間はノッキング判定を行えないという問題点があった。
また、従来では、エンジン回転数と吸気管圧力とにのみ応じて更新ガード値（上限値）を変更し、ノイズを除く他の要素においてピーク値が急変しても上限値を変更しないため
、その場合はしきい値の収束が遅いという問題点があった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、内燃機関の始動時、前回内燃機関が稼動していたときに記憶していたしきい値を用いて、今回のしきい値を算出することにより、しきい値の収束性を高めたノック検出装置を提供することを目的とする。
【０００８】
また、本発明は、燃料の噴射量にも応じて上限値を変更することにより、しきい値の収束性を高めたノック検出装置を提供することを目的とする。
さらに、本発明は、スロットル開度にも応じて上限値を変更することにより、しきい値の収束性を高めたノック検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では上記問題を解決するために、検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、複数個のノック信号に基づいてしきい値を算出するしきい値算出手段と、前記しきい値算出手段が算出したしきい値に基づいてしきい値を学習記憶するしきい値学習記憶手段と、前記内燃機関の始動時、前記しきい値学習手段が学習記憶していたしきい値に基づいてしきい値を設定するしきい値設定手段と、を有することを特徴とするノック検出装置が提供される。
【００１０】
このようなノック検出装置によれば、内燃機関を始動するとき、しきい値学習記憶手段が学習記憶していたしきい値に基づいてしきい値を設定する。これにより、エンジン始動時のしきい値の収束性を高めることができる。
【００１１】
また、本発明では、検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、複数個のノック信号に基づいて前回のしきい値を更新して新たな算出をするしきい値算出手段と、前記しきい値算出手段によるしきい値の更新量に上限値を設けるしきい値更新制限手段と、前記上限値を前記内燃機関の燃料の噴射量に応じて変更する上限値変更手段と、を有することを特徴とするノック検出装置が提供される。
【００１２】
このようなノック検出装置によれば、内燃機関の燃料の噴射量にも応じてしきい値の変化量の上限値が変更され、しきい値の収束性を高めることができる。
さらに、本発明では、検出した内燃機関のノック信号に基づいてノック判定のためのしきい値を算出するノック検出装置であって、複数個のノック信号に基づいて前回のしきい値を更新して新たな算出をするしきい値算出手段と、前記しきい値算出手段によるしきい値の更新量に上限値を設けるしきい値更新制限手段と、前記上限値を前記内燃機関のスロットル開度に応じて変更する上限値変更手段と、を有することを特徴とするノック検出装置が提供される。
【００１３】
このようなノック検出装置によれば、内燃機関のスロットル開度にも応じてしきい値の変化量の上限値が変更され、しきい値の収束性を高めることができる。
【発明の効果】
【００１４】
本発明のノック検出装置では、内燃機関を始動するとき、しきい値学習記憶手段が学習記憶していたしきい値に基づいてしきい値を設定するようにしたので、エンジン始動時のしきい値の収束性を高めることができる。
【００１５】
また、本発明のノック検出装置では、内燃機関の燃料の噴射量にも応じてしきい値の変化量の上限値を変更するようにしたので、しきい値の収束性を高めることができる。
さらに、本発明のノック検出装置では、内燃機関のスロットル開度にも応じてしきい値
の変化量の上限値を変更するようにしたので、しきい値の収束性を高めることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の原理を、図面を参照して詳細に説明する。
図１は、ノック検出装置の概要を示した図である。図に示すようにノック検出装置１は、ピーク値取得手段１ａ、バックグランド算出手段１ｂ、ノック判定手段１ｃ、バックグランド設定手段１ｄ、およびバックグランド記憶手段１ｅを有している。ノック検出装置１は、内燃機関２の点火時期を制御してノッキングのフィードバック制御を行っている。
【００１７】
ピーク値取得手段１ａは、内燃機関２の、クランク軸の回転周期の所定期間において、内燃機関２の振動のピーク値（ノック信号）を取得する。内燃機関２には、例えば、振動を検出するノックセンサが固定されており、このノックセンサから内燃機関２の振動を取得する。
【００１８】
バックグランド算出手段１ｂは、ピーク値取得手段１ａによって取得されたピーク値を平均化してバックグランド（しきい値）を算出する。具体的には、ピーク値取得手段１ａによって取得されたピーク値を前回算出したバックグランドで減算して所定の係数を積算し、その値を前回算出したバックグランドに加算する形で算出している。この加算値（更新値）には、例えば、更新ガード値が設けられる。
【００１９】
ノック判定手段１ｃは、ピーク値取得手段１ａによって取得されたピーク値が、バックグランドに対して所定のレベルを超えているか否かに基づきノッキングの判定を行う。そして、ノッキングの判定に応じて、内燃機関２のノッキングをフィードバック制御する。例えば、ピーク値がバックグランドに対し、所定のレベルを超えていなければ、ノッキングが発生していないと判定し、内燃機関２の点火時期を進角していく。ピーク値がバックグランドに対し、所定のレベルを超えていれば、ノッキングが発生したと判定し、内燃機関２の点火時期を遅角するようにする。
【００２０】
バックグランド設定手段１ｄは、内燃機関２の始動時、バックグランド算出手段１ｂが今回のバックグランドを算出するのに用いる前回のバックグランドに、バックグランド記憶手段１ｅが記憶している、前回内燃機関２が稼動していたときのバックグランドを設定する。つまり、エンジン始動時、前回のバックグランドに、前回内燃機関２が稼動していたときに記憶していたバックグランドを設定して、今回のバックグランドを算出する。
【００２１】
バックグランド記憶手段１ｅは、内燃機関２が稼動しているとき、バックグランド算出手段１ｂが算出するバックグランドを記憶装置に記憶する。
このように、内燃機関２を始動するとき、バックグランド算出手段１ｂがバックグランドを算出するのに用いる前回のバックグランドに、前回内燃機関２が稼動していたときに記憶していたバックグランドを設定するようにしたので、エンジン始動時のバックグランドの収束性を高めることができる。
【００２２】
次に、第１の実施の形態に係るノック検出装置を、図面を参照して詳細に説明する。
図２は、ノック検出装置のブロック構成図である。図に示すようにノック検出装置１０は、ＣＰＵ１１、ＢＰＦ１２、ピークホールドアンプ１３、入力インターフェース１４、ＲＡＭ１５、ＲＯＭ１６、および出力インターフェース１７を有している。ノック検出装置１０には、ノックセンサ２１、水温センサ２２、油温センサ２３、および吸気温センサ２４が接続されている。また、点火プラグ３２が接続されたイグナイタ３１が接続されている。
【００２３】
ノックセンサ２１は、エンジンの振動を電気信号に変換する振動センサである。ノック
センサ２１は、例えば、圧電素子であり、エンジンのシリンダブロックなどに固定されている。
【００２４】
ＢＰＦ１２には、ノックセンサ２１から出力される電気信号が入力される。ＢＰＦ１２は、ノッキングによる信号成分の現れる可能性のある周波数帯域の信号のみを濾波する。ＢＰＦ１２の中心周波数は、例えば、４ｋＨであり、帯域幅は、１ｋＨ〜１００ｋＨである。
【００２５】
ピークホールドアンプ１３には、ＢＰＦ１２によって濾波された信号が入力される。また、ピークホールドアンプ１３には、ＣＰＵ１１の制御（ＣＮＴ）端子から出力されるゲート制御信号と、ＣＰＵ１１のピークホールドリセット（ＰＨＲ）端子から出力されるピークホールドリセット信号が入力される。ピークホールドアンプ１３は、ＣＰＵ１１のＣＮＴ端子からゲート制御信号が出力されている間、ＢＰＦ１２から出力される信号のピーク値を更新しながら、その値を保持する。そして、ＣＰＵ１１のＰＨＲ端子からピークホールドリセット信号が出力されると、保持していたピーク値をリセットする。保持されたピーク値は、ＣＰＵ１１のアナログ／デジタル変換（Ａ／Ｄ１）端子に入力される。
【００２６】
水温センサ２２、油温センサ２３、および吸気温センサ２４は、エンジンの水温、油温、および吸気温を電気信号に変換して出力するセンサである。水温センサ２２、油温センサ２３、および吸気温センサ２４の信号は、入力インターフェース１４を介して、ＣＰＵ１１のアナログ／デジタル変換（Ａ／Ｄ２）端子に入力される。
【００２７】
ＲＡＭ１５およびＲＯＭ１６は、バスを介してＣＰＵ１１に接続されている。ＲＡＭ１５には、ＣＰＵ１１に実行させるＯＳのプログラムや、ノッキングのフィードバック制御を行うためのアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１５には、ＣＰＵ１１による処理に必要な各種データが保存される。ＲＯＭ１６には、上記のＯＳやアプリケーションプログラム、各種データなどが格納される。なお、ＲＡＭ１５、ＲＯＭ１６は、ＣＰＵ１１が内蔵していてもよい。また、ＲＯＭ１６は、書換え可能なＦＡＬＳＨメモリなどであってもよい。
【００２８】
イグナイタ３１は、点火プラグ３２と接続され、出力インターフェース１７を介してＣＰＵ１１と接続されている。イグナイタ３１は、ＣＰＵ１１からの指示に従って、点火プラグ３２の点火タイミングを駆動制御している。
【００２９】
ＣＰＵ１１は、Ａ／Ｄ１端子に入力されるピーク値をアナログ−デジタル変換し、エンジンのノッキング判定を行う。そして、判定結果に基づいて、点火プラグ３２の点火タイミングをフィードバック制御している。具体的には、ＣＰＵ１１は、判定によりノッキングが発生していなければ、点火プラグ３２の点火時期を進角していき、ノッキングが発生すれば、点火プラグ３２の点火時期を遅角するようにノッキングのフィードバック制御をしている。
【００３０】
ＣＰＵ１１は、エンジンが稼動しているとき、エンジンの水温、吸気温、および油温の各温度における各気筒のバックグランドの移動平均をとり、バックグランドの学習（記憶）をする。ＣＰＵ１１は、次にエンジン始動が行われるとき、エンジンの水温、吸気温、および油温に応じて、前回エンジンが稼動していたときに学習したバックグランドを用いて今回のバックグランドを算出する。これによって、バックグランドは、適正な値に速やかに収束することができる。なお、バックグランドの学習は、例えば、バックアップされたＲＡＭ１５やＦＬＡＳＨメモリなどの記憶が維持される記憶装置に行われる。
【００３１】
次に、ノッキングのフィードバック制御について説明する。
図３は、ノッキング判定を説明するための波形図である。図の（ａ）は、ピークホールドアンプ１３に入力される波形を示している。図の（ｂ）は、図２では示してないが、エンジンのクランク角センサから出力される波形を示している。クランク角センサから出力されるパルスは、点火行程に入ろうとする気筒のピストンがＴＤＣに到達するたびに出力され、例えば、４気筒４サイクルエンジンであるときには、図の（ｂ）に示すように、１８０°ＣＡ（クランク角）ごとに出力される。図の（ｃ）は、ＣＰＵ１１のＣＮＴ端子から出力されるゲート制御信号の波形を示している。
【００３２】
ピークホールドアンプ１３は、ＣＰＵ１１から出力されるゲート制御信号により、１０°ＣＡから７５°ＣＡの間をノッキング観測期間として、ＢＰＦ１２から出力される信号のピーク値を更新して、その値を保持する。ピークホールドアンプ１３で保持されたピーク値は、ＣＰＵ１１のＡ／Ｄ１端子に入力される。ピークホールドアンプ１３で保持されたピーク値は、ＣＰＵ１１のＰＨＲ端子から出力されるピークホールドリセット信号によってリセットされる。
【００３３】
ＣＰＵ１１は、アナログ−デジタル変換されたピーク値より、バックグランドを算出する。バックグランドを算出する式は、例えば、次の式（１）で示される。式（１）のＢＧは、バックグランドを示し、なまし値は、１より大きい値である。なお、バックグランドには、所定以上の変化をしないように更新ガード値を設けるようにしてもよい。
【００３４】
ＢＧ＝前回のＢＧ＋（今回のピーク値−前回のＢＧ）×（１／なまし値）…（１）
バックグランドは、式（１）に示すようにピーク値を平均化したものである。ＣＰＵ１１は、今回アナログ−デジタル変換されたピーク値が、式（１）で求まるバックグランドに対して所定のレベルを超えているか否かを判断し、ノッキングの有無を判定する。ノッキングの有無を判定する式は、例えば、次の式（２）で示される。式（２）のＫは、エンジンの回転数や負荷に応じて変更される値である。
【００３５】
Ｙ＝ＢＧ×Ｋ  …（２）
ＣＰＵ１１は、今回アナログ−デジタル変換されたピーク値がバックグランドをＫ倍した値Ｙを超えている場合、ノッキングが発生したと判断する。そして、進角させていた点火プラグ３２の点火タイミングを遅角するようにフィードバック制御する。このようにして、ノッキングのフィードバック制御を行っている。
【００３６】
次に、エンジン始動時のバックグランドの収束について説明する。
図４は、エンジン始動時のバッグランドの収束を説明する図である。図にはエンジン始動時のバックグランドとピーク値が示してある。ＣＰＵ１１は、エンジンが始動されたとき、前回エンジンが稼動していたときに学習したバックグランドを、式（１）に示す前回のＢＧにセットする。これにより、バックグランドは速やかにピーク値に収束することができる。図４を図２２と比較すると、エンジン始動時において、ピーク値とバックグランドの差は小さく、バックグランドの収束を速くすることができる。
【００３７】
次に、バックグランドの学習テーブルについて説明する。バックグランドは、エンジンの各気筒において、エンジンの水温、吸気温、および油温のそれぞれの、所定の温度ごとに学習される。
【００３８】
図５は、水温におけるバックグランドの学習テーブル例を示した図である。図に示す水温学習テーブル４１は、例えば、前述したような記憶が保持される記憶装置で実現される。図に示す水温学習テーブル４１の水温学習値［Ａ１］には、エンジンの水温が０℃未満において算出されたバックグランドが記憶される。水温学習値［Ａ２］には、エンジンの水温が０℃以上から３０℃未満において算出されたバックグランドが記憶される。水温学
習値［Ａ３］には、エンジンの水温が３０℃以上から６０℃未満において算出されたバックグランドが記憶される。水温学習値［Ａ４］には、エンジンの水温が６０℃以上から９０℃未満において算出されたバックグランドが記憶される。水温学習値［Ａ５］には、エンジンの水温が９０℃以上において算出されたバックグランドが記憶される。
【００３９】
図６は、吸気温におけるバックグランドの学習テーブル例を示した図である。図に示す吸気温学習テーブル４２は、例えば、前述したような記憶が保持される記憶装置で実現される。図に示す吸気温学習テーブル４２の吸気温学習値［Ｂ１］〜吸気温学習値［Ｂ５］には、図５の水温学習テーブル４１の説明と同様に、各温度において算出されたバックグランドが記憶される。
【００４０】
図７は、油温におけるバックグランドの学習テーブル例を示した図である。図に示す油温学習テーブル４３は、例えば、前述したような記憶が保持される記憶装置で実現される。図に示す油温学習テーブル４３の油温学習値［Ｃ１］〜油温学習値［Ｃ５］には、図５の水温学習テーブル４１の説明と同様に、各温度において算出されたバックグランドが記憶される。
【００４１】
次に、バックグランドの学習について説明する。バックグランドは、移動平均したものを学習する。ただし、バックグランドとピーク値との差が所定値内である場合にのみ学習する。バックグランドの学習は、エンジンの気筒ごと、かつエンジンの水温、吸気温、および油温の各温度において行われる。
【００４２】
図８は、バックグランドの学習について説明する図である。図の波形Ｗ１はピーク値の波形、波形Ｗ２はバックグランドの波形、波形Ｗ３はカウンタの値を示した波形である。
バックグランドは、ピーク値を平均化したものであるので、エンジン始動後、ピーク値に収束していく。図に示すようにピーク値とバックグランドの差が所定値内になったとき、バックグランドの学習の処理を開始する。
【００４３】
ＣＰＵ１１は、波形Ｗ３に示すようにカウンタを動作させ、カウンタの値が所定値になると、バックグランドを取得する。例えば、図に示すようにα１，α２，α４，α５，α６，…においてバックグランドを取得する。ＣＰＵ１１は、バックグランドを取得するたびにカウンタの値をリセットする。なお、α３のとき、バックグランドを取得してないが、これについては後述詳細する。
【００４４】
ＣＰＵ１１は、バックグランドを数点取得し移動平均をとる。そして、エンジンの水温に従って、水温学習テーブル４１に移動平均をとったバックグランドを記憶していく。なお、同じ水温が続けば、移動平均をとったバックグランドは上書きされていく。同様に、エンジンの吸気温、油温においてもそれぞれの温度に応じて、吸気温学習テーブル４２、油温学習テーブル４３にバックグランドの移動平均を記憶していく。
【００４５】
ＣＰＵ１１は、バックグランドとピーク値との差が所定値内である場合に、上記のバックグランドの学習（各テーブルへの書き込み）を行う。つまり、ピーク値が、ノッキングにより大きな値をとり、バックグランドとの差が所定値以上になったときは、バックグランドを取得せず、移動平均を算出しない。例えば、図に示すα３のときは、バックグランドを取得しない。すなわち、定常時のバックグランドを移動平均し、学習するようにする。なお、ピーク値とバックグランドとの差が所定値以上になったときは、カウンタの値を０にし、移動平均も最初から算出し直す。
【００４６】
次に、ＣＰＵ１１の動作についてフローチャートを用いて説明する。
図９は、バックグランドの設定の処理の流れを示したフローチャートである。ＣＰＵ１
１は、例えば、イニシャルルーチンにおいて以下のステップに従った処理を実行する。なお、フローチャート中のｎは、エンジンの気筒数を表し、そのフローの処理は各気筒において行われることを示す。
【００４７】
ステップＳ１においてＣＰＵ１１は、学習フラグがオンであるか否か判断する。学習フラグがオンであればステップＳ２へ進む。学習フラグがオンでなければ処理を終了する。
ステップＳ２においてＣＰＵ１１は、エンジン始動時に、式（１）で示した前回のＢＧに、水温学習値（水温において学習したバックグランド）をセットするか否か判断する。この判断は、例えば、プログラムにおいて水温学習値を用いるか否か設定され、その設定に基づいて判断される。水温学習値を前回のＢＧにセットすると判断した場合、ＣＰＵ１１はステップＳ３において、現在のエンジンの水温を水温センサ２２で検出し、この水温に対応する水温学習値を、図５で示した水温学習テーブル４１を参照して取得する。そして、前回のＢＧに取得した水温学習値をセットする。これによって、バックグランドは速やかに適正なピーク値に収束することができる。なお、ステップＳ２において前回のＢＧに水温学習値をセットしないと判断した場合、ステップＳ４へ進む。
【００４８】
ステップＳ４においてＣＰＵ１１は、エンジン始動時に、式（１）で示した前回のＢＧに、吸気温学習値（吸気温において学習したバックグランド）をセットするか否か判断する。この判断は、例えば、プログラムにおいて吸気温学習値を用いるか否か設定され、その設定に基づいて判断される。吸気温学習値を前回のＢＧにセットすると判断した場合、ＣＰＵ１１はステップＳ５において、現在のエンジンの吸気温を吸気温センサ２４で検出し、この吸気温に対応する吸気温学習値を、図６で示した吸気温学習テーブル４２を参照して取得する。そして、前回のＢＧに取得した吸気温学習値をセットする。これによって、バックグランドは速やかに適正なピーク値に収束することができる。なお、ステップＳ４において前回のＢＧに吸気温学習値をセットしないと判断した場合、ステップＳ６へ進む。
【００４９】
ステップＳ６においてＣＰＵ１１は、エンジン始動時に、式（１）で示した前回のＢＧに、油温学習値（油温において学習したバックグランド）をセットするか否か判断する。この判断は、例えば、プログラムにおいて油温学習値を用いるか否か設定され、その設定に基づいて判断される。油温学習値を前回のＢＧにセットすると判断した場合、ＣＰＵ１１はステップＳ７において、現在のエンジンの油温を油温センサ２３で検出し、この油温に対応する油温学習値を、図７で示した油温学習テーブル４３を参照して取得する。そして、前回のＢＧに取得した油温学習値をセットする。これによって、バックグランドは速やかに適正なピーク値に収束することができる。なお、ステップＳ２，Ｓ４，Ｓ６において、水温学習値、吸気温学習値、および油温学習値の何れを採用するか判断せず、全ての学習値の最大値を算出し、それを式（１）で示した前回のＢＧにセットするようにしてもよい。
【００５０】
次に、バックグランドの学習の処理について説明する。
図１０は、バックグランドの学習の処理の流れを示したフローチャートである。ＣＰＵ１１は、所定の周期ごとに以下のステップに従った処理を実行する。なお、フローチャート中のｎは、エンジンの気筒数を表し、そのフローの処理は各気筒において行われることを示す。
【００５１】
ステップＳ１１においてＣＰＵ１１は、ノッキングのフィードバック制御を実施する期間（ノッキング観測期間）であるか否か判断する。ノッキングのフィードバック制御を実施する期間であると判断した場合は、ステップＳ１４へ進む。ノッキングのフィードバック制御を実施する期間でないと判断した場合は、ステップＳ１２へ進む。
【００５２】
ステップＳ１２においてＣＰＵ１１は、バックグランドを取得するタイミングをカウントするカウンタをクリアする。次いで、ステップＳ１３においてＣＰＵ１１は、移動平均を算出するのに必要なバックグランドのサンプル数をカウントする変数（学習回数ｎ）を０にする。ステップＳ１２，Ｓ１３では、次のノッキング観測期間で行う学習のためにカウンタおよび学習回数をクリアしている。
【００５３】
ステップＳ１４においてＣＰＵ１１は、ピークホールドアンプ１３によって保持されているピーク値を取得する。ステップＳ１５においてＣＰＵ１１は、前述した式（１）によってバックグランドを更新する。
【００５４】
ステップＳ１６においてＣＰＵ１１は、前述した式（２）で算出される値とピーク値とを比較し、ノッキングの有無を判断する。ノッキングが発生していると判断した場合、ステップＳ１７においてＣＰＵ１１はカウンタをクリアする。次いで、ステップＳ１８においてＣＰＵ１１は学習回数ｎを０にする。つまり、ステップＳ１７，Ｓ１８では、ノッキングが発生した場合は、移動平均が算出されないように、カウンタおよび学習回数をクリアする。ステップＳ１６においてノッキングが発生していないと判断した場合、ステップＳ１９へ進む。
【００５５】
ステップＳ１９においてＣＰＵ１１は、カウンタを参照し、一定時間経過したか（カウンタの値が所定の値になったか）否か判断する。すなわち、移動平均をとるためのバックグランドを取得するタイミングであるか判断する。バックグランドを取得するタイミングでない場合、処理を終了する。バックグランドを取得するタイミングであればステップＳ２０へ進む。
【００５６】
ステップＳ２０においてＣＰＵ１１は、バックグランドを、移動平均を算出する変数（学習値）に順次保存していく。変数学習値の数は、移動平均を算出するのに必要なバックグランドのサンプル数分存在する。ステップＳ２１においてＣＰＵ１１は、学習回数に１を加算する。ステップＳ２２においてＣＰＵ１１は、カウンタをクリアする。ステップＳ２３においてＣＰＵ１１は、学習回数が規定回数以上になったか判断する。つまり、バックグランドを、移動平均を算出するのに必要なサンプル数分取得できたか判断する。移動平均を算出するのに必要なバックグランドが取得できたと判断した場合、ステップＳ２４においてＣＰＵ１１は、学習値に保存されているバックグランドを用いてバックグランドの移動平均値を算出する。そして、ＣＰＵ１１は、水温センサ２２、油温センサ２３、および吸気温センサ２４から現在のエンジンの水温、油音、および吸気温を取得し、水温学習テーブル４１、吸気温学習テーブル４２、および油温学習テーブル４３の対応する温度の欄に、算出したバックグランドを記憶する。次いで、ステップＳ２５においてＣＰＵ１１は、学習フラグをオンにする。これによって、次回エンジンが始動されるときは、図９のステップＳ１の判断においてＣＰＵ１１はステップＳ２へ進み、式（１）の前回のＢＧに、学習したバックグランドを設定することができる。
【００５７】
なお、ステップＳ２３においてＣＰＵ１１は、移動平均を算出するのに必要なバックグランドを取得できていないと判断した場合、処理を終了する。そして、ノッキング観測期間において図１０の処理が所定の周期ごとに繰り返し行われ、移動平均を算出するのに必要なバックグランドを取得できると、ステップＳ２４へ進み、移動平均値が算出される。
【００５８】
このように、エンジンを始動するとき、今回のバックグランドを算出するのに用いられる前回のバックグランドに、前回エンジンを始動していたときに記憶していたバックグランドを設定し、算出するようにしたので、エンジン始動時のバックグランドの収束性を高めることができる。
【００５９】
また、エンジン始動時のバックグランドの収束性を高めたことにより、ノッキングの判定を速やかに開始することが可能になり、ノッキングの制御範囲を広めることができる。
次に、本発明の第２の実施の形態について説明する。第１の実施の形態で説明した式（１）は、ノイズによるバックグランドの急変を防止するため、更新ガード値を設けることができる。つまり、バックグランドを更新ガード値以上更新しないようにすることができる。例えば、更新ガード値を２とすると、バックグランドの値が式（１）に従って５変化しても、この場合は、バックグランドは２しか更新されない。
【００６０】
しかし、ピーク値の急変は、ノイズによらない場合もある。例えば、エンジン回転数や吸気管圧力の変化によって急変する場合もある。この場合、バックグランドは、速やかにピーク値に収束するのが望ましいが、更新ガード値によって、収束が遅くなる。そこで、従来は、エンジン回転数と吸気管圧力のそれぞれの変化に応じて、更新ガード値を変更し、バックグランドの収束性を高めていたが、第２の実施の形態では、さらに燃料の噴射量およびスロットルの開度の変化に応じても、更新ガード値を変更する。
【００６１】
なお、第２の実施の形態におけるノック検出装置のブロック構成図は、図２のノック検出装置１０とほぼ同様であるが、入力インターフェース１４にスロットルの開度を検出するセンサ、燃料の噴射量を検出するセンサ、および吸気管圧力を検出するセンサが接続される。また、ＣＰＵ１１は、タイマ端子を有し、エンジン回転数を検出するセンサが接続される。エンジン回転数を検出するセンサは、パルス信号としてエンジン回転数を検出し、ＣＰＵ１１は、そのパルス信号のパルス間隔をカウントしてエンジン回転数を算出する。その他の部分は、図２と同様であり、その詳細な説明は省略する。
【００６２】
図１１は、エンジン回転数、吸気管圧力、噴射量、およびスロットル開度の変化例を示した図である。例えば、車両が平坦から上り坂を一定の速度で上るとすると、負荷が大きくなるため燃焼状態が変化し、燃料の噴射量およびスロットル開度の変化は大きくなる。一方、吸気管圧力およびエンジン回転数の変化は、一定の速度で上るという条件により小さい。すると、図に示すように噴射量およびスロットル開度の変化は大きく、エンジン回転数、吸気管圧力の変化は小さくなる。
【００６３】
この場合、従来であれば、燃焼状態が変化してピーク値が急変しても、吸気管圧力およびエンジン回転数の変化が小さいため、更新ガード値は変更されず、バックグランドの収束が遅かった。しかし、本実施の形態では、噴射量およびスロットル開度のそれぞれの変化にも応じて更新ガード値を変更するので、バックグランドの収束性がよくなる。なお、噴射量およびスロットル開度の変化が大きい場合、更新ガード値は大きくなるように変更される。
【００６４】
図１２は、バックグランドの収束を説明する図である。図の（ａ）は吸気管圧力およびエンジン回転数のそれぞれの変化に応じて更新ガード値を変更する場合のバックグランドの収束を、図の（ｂ）は吸気管圧力、エンジン回転数、噴射量、およびスロットル開度のそれぞれの変化に応じて更新ガード値を変更する場合のバックグランドの収束を説明している。
【００６５】
例えば、図１１で示したように、エンジン回転数および吸気管圧力の変化量は小さく、噴射量およびスロットル開度の変化量は大きい場合、従来であれば、ピーク値が大きく変化しても更新ガード値は変更されないため、図の（ａ）に示すようにバックグランドの収束が遅い。しかし、本実施の形態では、噴射量および吸気管圧力の変化量にも応じて更新ガード値を変更するので、エンジン回転数および吸気管圧力の変化が小さくても、更新ガード値を変更するので、バックグランドの収束性を高めることができる。なお、ノイズによってピーク値が大きく変化した場合でも、噴射量および吸気管圧力の変化が小さければ
更新ガード値は変更されず、バックグランドがノイズに反応することを抑制できる。
【００６６】
次に、ＣＰＵ１１の動作についてフローチャートを用いて説明する。
図１３は、更新ガード値の算出の流れを示したフローチャートである。ＣＰＵ１１は、以下のステップに従って処理を実行する。
【００６７】
ステップＳ３１においてＣＰＵ１１は、吸気管圧力を検出するセンサから吸気管圧力を取得する。ＣＰＵ１１は、取得した吸気管圧力の変化量に応じて、更新ガード値を算出する。ステップＳ３２においてＣＰＵ１１は、エンジン回転数を検出するセンサからエンジン回転数を取得する。ＣＰＵ１１は、取得したエンジン回転数の変化量に応じて、更新ガード値を算出する。ステップＳ３３においてＣＰＵ１１は、燃料の噴射量を検出するセンサから燃料の噴射量を取得する。ＣＰＵ１１は、取得した噴射量の変化量に応じて、更新ガード値を算出する。ステップＳ３４においてＣＰＵ１１は、スロットル開度を検出するセンサからスロットル開度を取得する。ＣＰＵ１１は、取得したスロットル開度の変化量に応じて、更新ガード値を算出する。
【００６８】
ステップＳ３５においてＣＰＵ１１は、ステップＳ３１〜ステップＳ３４で算出した更新ガード値の最大値を算出する。
ステップＳ３６においてＣＰＵ１１は、バックグランドの更新量をステップＳ３５で算出した最大の更新ガード値でガードする。すなわち、ＣＰＵ１１は、バックグランドの更新量が更新ガード値を超える場合、更新ガード値分だけバックグランドを更新するようにする。
【００６９】
このように、エンジンの燃料の噴射量にも応じてバックグランドの変化量の更新ガード値を変更するようにしたので、バックグランドの収束性を高めることができる。また、内燃機関のスロットル開度にも応じてバックグランドの変化量の更新ガード値を変更するようにしたので、バックグランドの収束性を高めることができる。
【００７０】
また、バックグランドの収束性を高めたことにより、適正なノッキング判定が可能となり、エンジンの誤遅角を防止することができる。
次に、本発明の第３の実施の形態について説明する。前述したようにバックグランドは、ピーク値を平均化したものであるため、エンジン始動時には、一定の値に収束するまでに時間を要する。そのため、バックグランドがピーク値に収束しきる前にノッキング判定を行うと、ピーク値がバックグランドに対し、所定のレベルを超えていると判定する恐れがあり、ノッキングが発生したと誤判定してしまう。よって、従来では、バックグランドが収束する時間を考慮して、一定時間経過してから、ノッキングのフィードバック制御を開始し、ノッキングの制御範囲を狭めていた。そこで、第３の実施の形態では、ノッキングの誤判定をしないようにノック判定の開始時期を適正に変化させ、ノッキングの制御範囲を広める。なお、ノック検出装置のブロック構成図は、図２と同様であり、その詳細な説明は省略する。
【００７１】
まず、バックグランドの収束について図面を用いて説明する。
図１４は、バックグランドの収束時間を説明する図である。図の（ａ），（ｂ）には、バックグランドとピーク値が示してある。図の（ａ）のピーク値は、図の（ｂ）のピーク値より大きい値となっている。
【００７２】
エンジンを始動すると、ピークホールドアンプ１３からピーク値が出力される。ＣＰＵ１１は、前述した式（１）に従ってバックグランドを算出する。バックグランドは、ピーク値を平均化したものであるので、図の（ａ），（ｂ）に示すように、徐々に、ピーク値に収束していく。
【００７３】
バックグランドとピーク値の差が大きいとバックグランドの収束する時間も長くなる。図の（ａ）に示すピーク値は、図の（ｂ）のピーク値より大きいので、図の（ａ）のバックグランドの収束時間は、図の（ｂ）のバックグランドの収束時間より長くなる。そこで、ＣＰＵ１１は、エンジン始動後、ノッキングの誤判定によって誤ったフィードバック制御を行わないように、バックグランドの収束時間に応じて、ノッキングのフィードバック制御の開始時間を変化させる。例えば、図の（ａ）の場合、矢印Ａ１においてノッキングのフィードバック制御を開始するようにする。図の（ｂ）の場合、矢印Ａ２においてノッキングのフィードバック制御を開始するようにする。
【００７４】
次に、エンジンの水温、油温、および吸気温と、ノッキングのフィードバック制御の、開始時間の関係について説明する。図１４でも説明したように、エンジン始動後のバックグランドの収束時間は、ピーク値の大きさに依存する。このピーク値の大きさは、エンジンの状態によって様々な値をとり、例えば、前記した水温、油温、および吸気温に依存する。そこで、ＣＰＵ１１は、各センサからエンジンの水温、油温、および吸気温を取得し、ＲＯＭ１６に記憶されている、エンジンのある水温、油温、および吸気温に対するノッキングのフィードバック制御の開始時間を参照して、制御を開始する時間を算出する。
【００７５】
図１５は、水温に対するフィードバック制御開始時間の関係を示したテーブルである。図に示すように水温テーブル５１は、水温および開始時間の欄を有し、各水温に対するノッキングのフィードバック制御の開始時間が記憶されている。水温の欄に示される値の単位は℃、開始時間の欄に示される値の単位は秒である。水温テーブル５１は、例えば、図２で示したＲＯＭ１６などの記憶装置に構築される。
【００７６】
ＣＰＵ１１は、エンジンのある水温に対する開始時間を、水温テーブル５１を参照して算出する。水温センサ２２から取得した水温が、水温テーブル５１に示されている水温の欄の間にある場合は、その両側の欄の水温を基に補間して開始時間を算出する。例えば、水温センサ２２から取得した水温が１０℃から３０℃の間にあるときは、ＣＰＵ１１は、１０℃のときの開始時間５．１秒と、３０℃のときの開始時間３．１秒とを取得し、これらの開始時間を補間して、水温センサ２２から取得した水温に対する開始時間を算出する。
【００７７】
図１６は、油温に対するフィードバック制御開始時間の関係を示したテーブルである。図に示すように油温テーブル５２は、油温および開始時間の欄を有し、各油温に対するノッキングのフィードバック制御の開始時間が記憶されている。油温の欄に示される値の単位は℃、開始時間の欄に示される値の単位は秒である。油温テーブル５２は、例えば、図２で示したＲＯＭ１６などの記憶装置に構築される。
【００７８】
ＣＰＵ１１は、エンジンのある油温に対する開始時間を、油温テーブル５２を参照して算出する。なお、油温に対する開始時間の算出方法は、図１５で説明した水温の開始時間の算出方法と同じであり、その詳細な説明は省略する。
【００７９】
図１７は、吸気温に対するフィードバック制御開始時間の関係を示したテーブルである。図に示すように吸気温テーブル５３は、吸気温および開始時間の欄を有し、各吸気温に対するノッキングのフィードバック制御の開始時間が記憶されている。吸気温の欄に示される値の単位は℃、開始時間の欄に示される値の単位は秒である。吸気温テーブル５３は、例えば、図２で示したＲＯＭ１６などの記憶装置に構築される。
【００８０】
ＣＰＵ１１は、エンジンのある吸気温に対する開始時間を、吸気温テーブル５３を参照して算出する。なお、吸気温に対する開始時間の算出方法は、図１５で説明した水温の開
始時間の算出方法と同じであり、その詳細な説明は省略する。
【００８１】
このように、ＣＰＵ１１は、エンジン始動時に各センサからエンジンの水温、油温、および吸気温を取得し、取得した水温、油温、および吸気温に対するノッキングのフィードバック制御の開始時間を算出する。
【００８２】
次に、ＣＰＵ１１の動作を、フローチャートを用いて説明する。
図１８は、フィードバック制御開始時間を算出する処理を示したフローチャートである。ＣＰＵ１１は、以下のステップに従って処理を実行する。
【００８３】
ステップＳ４１においてＣＰＵ１１は、エンジン始動時におけるエンジンの水温、油温、および吸気温を取り込むため、スタータがオフからオンに切替わったか判断する。スタータがオフからオンに切替わった場合、ステップＳ４２へ進む。スタータがオフからオンに切替わらない場合は、ステップＳ４７へ進む。
【００８４】
ステップＳ４２においてＣＰＵ１１は、水温センサ２２、油温センサ２３、および吸気温センサ２４からエンジンの水温、油温、および吸気温を取得する。
ステップＳ４３においてＣＰＵ１１は、水温テーブル５１を参照し、ステップＳ４２で取得した水温に対するノッキングのフィードバック制御（Ｆ／Ｂ）の開始時間ａを算出する。ステップＳ４４においてＣＰＵ１１は、油温テーブル５２を参照し、ステップＳ４２で取得した油温に対するノッキングのフィードバック制御の開始時間ｂを算出する。ステップＳ４５においてＣＰＵ１１は、吸気温テーブル５３を参照し、ステップＳ４２で取得した吸気温に対するノッキングのフィードバック制御の開始時間ｃを算出する。ステップＳ４６においてＣＰＵ１１は、ステップＳ４３〜Ｓ４５で算出した開始時間ａ〜ｃの最大値ｄを算出する。
【００８５】
ステップＳ４７においてＣＰＵ１１は、エンジン始動後、時間がステップＳ４６で算出した最大値ｄを経過したか判断する。ＣＰＵ１１は、時間が最大値ｄを経過すると、ステップＳ４８へ進む。時間が最大値ｄ未満であれば、フローチャートの処理を終了し、次の割り込みで開始からフローチャートの処理を繰り返す。
【００８６】
ステップＳ４８においてＣＰＵ１１は、ノッキングのフィードバック制御を開始する。つまり、ノッキング判定によりノッキングが発生していなければ、点火プラグ３２の点火時期を進角していき、ノッキングが発生すれば、点火プラグ３２の点火時期を遅角するようにノッキングのフィードバック制御を開始する。
【００８７】
次に、ＣＰＵ１１の動作を、制御チャートを用いて説明する。
図１９は、フィードバック制御開始時間を算出する制御チャートを示した図である。図の（ａ）にはスタータのオン・オフタイミングを示した波形が示してある。図の（ｂ）にはスタータがオンされた後、ノッキングのフィードバック制御の開始時間をカウントするためのタイミングを示した波形が示してある。図の（ｃ）にはバックグランドの波形が示してある。図の（ｄ）には水温、油温、および吸気温に基づいて算出された、ノッキングのフィードバック制御を開始するカウント値が示されている。図の（ｅ）には、時間をカウントするカウンタ値が示してある。
【００８８】
図の点線Ｃ１に示すように、スタータがオフからオンに切替わると、ＣＰＵ１１は、バックグランドの算出を開始する。バックグランドは、ピーク値を平均化したものであるため、エンジン始動後、図の（ｃ）に示すように徐々に、ピーク値に収束していく。また、ＣＰＵ１１は、各センサからエンジンの水温、油温、および吸気温を取得し、水温テーブル５１、油温テーブル５２、および吸気温テーブル５３を参照して、取得した水温、油温
、および吸気温に対するノッキングのフィードバック制御の開始時間（カウント値）を算出する。なお、水温、油温、および吸気温に対するノッキングのフィードバック制御を開始するためのカウント値は、図の（ｄ）に示すように水温＞油温＞吸気温の関係を有し、水温が最大値であるとする。
【００８９】
ＣＰＵ１１は、ノッキングのフィードバック制御を開始するためのカウント値を算出すると、図の（ｂ）に示すようにノッキングのフィードバック制御を開始する時間のカウントを開始する。すると、図の（ｅ）に示すように時間をカウントするカウンタ値は、点線Ｃ２のタイミングからカウントアップが開始される。
【００９０】
カウンタ値がカウントアップされ、矢印Ｃ３に示すように吸気温に基づいたノッキングのフィードバック制御を開始するカウント値に達したとする。しかし、図１９の例では、吸気温のカウント値は、ノッキングのフィードバック制御を開始するカウント値の最大値ではないので、ＣＰＵ１１は、ノッキングのフィードバック制御を開始しない。
【００９１】
カウンタ値がさらにカウントアップされ、矢印Ｃ４に示すように油温に基づいたノッキングのフィードバック制御を開始するカウント値に達したとする。しかし、図１９の例では、油温のカウント値は、ノッキングのフィードバック制御を開始するカウント値の最大値ではないので、ＣＰＵ１１は、ノッキングのフィードバック制御を開始しない。
【００９２】
カウンタ値がさらにカウントアップされ、矢印Ｃ５に示すように水温に基づいたノッキングのフィードバック制御を開始するカウント値に達したとする。図１９の例では、水温のカウント値は、ノッキングのフィードバック制御を開始するカウント値の最大値であるので、ＣＰＵ１１は、ノッキングのフィードバック制御を開始する。なお、点線Ｃ６に示すように、バックグランドがピーク値に収束した後にノッキングのフィードバック制御が開始されている。このように、水温、油温、および吸気温に基づいて算出された開始時間の最大開始時間により、ノッキングのフィードバック制御を開始することにより、例えば、バックグランドが収束していない収束時間がいくつか算出されても、安全にノッキングのフィードバック制御開始時間を変化させ、制御範囲を広めることができる。
【００９３】
このように、エンジンの始動時にバックグランドがピーク値に収束するであろう収束時間を決定するための水温、油温、および吸気温を取得し、取得した水温、油温、および吸気温に基づいてバックグランドの収束時間を算出するようにした。これによって、ノッキングの誤判定をしないように適正にノッキングの制御開始時間を変化させることができ、ノッキングの制御範囲を広めることができる。
【００９４】
また、エンジンの始動後、ノッキングの誤判定をしないようにノッキングの制御開始時間を変化させるので、エンジンの誤遅角を防止することができる。
さらに、水温、油温、および吸気温で求まった収束時間の最大値を使用することにより、より安全にノッキングのフィードバック処理を開始して、誤遅角を防止することができる。
【００９５】
なお、上記では、水温、油温、および吸気温のパラメータに基づく収束時間の最大値で、ノッキングのフィードバック制御を開始するようにしたが、１つのパラメータに基づく収束時間で、または、１以上のパラメータに基づく収束時間の最大値で、ノッキングのフィードバック制御を開始するようにしてもよい。例えば、水温による収束時間のみを算出して、ノッキングのフィードバック制御を開始してもよく、水温と油温による収束時間のみを算出して、ノッキングのフィードバック制御を開始してもよい。
【００９６】
次に、第４の実施の形態に係るノック検出装置を、図面を参照して詳細に説明する。第
４の実施の形態では、適正なバックグランドに収束するために必要なピーク値のサンプル数を、エンジン始動後のピーク値に基づいて算出し、ピーク値を、算出したサンプル数取得してから、ノッキングのフィードバック制御を開始する。
【００９７】
式（１）で示したようにバックグランドは、ピーク値を平均化したものであるため、エンジン始動時には、所定のピーク値のサンプル数が揃うまでは、適正な値に収束しない。バックグランドが適正な値に収束するピーク値のサンプル数は、ピーク値の大きさによって異なり、バックグランドとピーク値の差が大きければ、適正なバックグランドに収束するピーク値のサンプル数も多く必要とする。また、ピーク値のなまし率（なまし値の逆数）によっても、バックグランドが適正な値に収束するピーク値のサンプル数が異なる。そこで、図２で示したＣＰＵ１１は、適正なバックグランドを算出するのに必要なピーク値のサンプル数を算出し、ピーク値を、算出されたサンプル数取得してからノッキングのフィードバック制御を開始する。例えば、ＣＰＵ１１は、エンジン始動後に初めて取得したピーク値をなまし率で除算した値を、ノッキングのフィードバック開始のサンプル数とする。
【００９８】
ピーク値のサンプル数とエンジンの回転数の関係について説明する。ピーク値がサンプル数揃う時間は、エンジンの回転数に比例する。エンジンの回転数が高ければピーク値のサンプル数揃う時間は早く、エンジンの回転数が低ければピーク値のサンプル数揃う時間は遅くなる。
【００９９】
図２０は、バックグランドとエンジン回転数を示した図である。図の（ａ）には、ピーク値とバックグランドが示されている。図の（ｂ）には、エンジン回転数が示してある。ピーク値は、エンジンの回転数に比例してサンプリングされる。ＣＰＵ１１は、バックグランドの算出に必要なピーク値のサンプル数を算出し、エンジンの回転数が高ければ早くノッキングのフィードバック制御を開始し、エンジンの回転数が低ければ遅くノッキングのフィードバック制御を開始することになる。
【０１００】
次に、ＣＰＵ１１の動作を、フローチャートを用いて説明する。
図２１は、フィードバック制御を開始するためのピーク値のサンプル数を算出する処理を示したフローチャートである。ＣＰＵ１１は、所定の周期にごとに以下のステップに従った処理を実行する。
【０１０１】
ステップＳ５１においてＣＰＵ１１は、エンジン始動時に以下で説明する変数α、βを初期化するため、スタータがオフからオンに切替わったか判断する。スタータがオフからオンに切替わった場合、ステップＳ５２の処理へ進む。スタータがオフからオンに切替わらない場合は、ステップＳ５４へ進む。
【０１０２】
ステップＳ５２においてＣＰＵ１１は、ピーク値のサンプル数をカウントするための変数αを、例えば、０の最小値に初期化する。ステップＳ５３においてＣＰＵ１１は、ノッキングのフィードバック処理を開始するためのサンプル数を示す変数βを、例えば、０ｘＦＦＦＦの最大値に初期化する。
【０１０３】
ステップＳ５４においてＣＰＵ１１は、ノッキングのフィードバック処理がゲートオープン中（ノッキング観測期間）であるか判断する。すなわち、図２で説明したゲート制御信号をピークホールドアンプ１３に出力しているか判断する。ゲートオープン中であれば、ステップＳ５５へ進む。ゲートオープン中でなければ、ステップＳ６０へ進む。
【０１０４】
ステップＳ５５においてＣＰＵ１１は、ピーク値を更新する。すなわち、ピークホールドアンプ１３から新たなピーク値を取得する。ステップＳ５６においてＣＰＵ１１は、取
得したピーク値によりバックグランドを更新する。ステップＳ５７においてＣＰＵ１１は、変数αに１を加算する。
【０１０５】
ステップＳ５８においてＣＰＵ１１は、ステップＳ５５〜Ｓ５７の処理が初めてであるか判断する。初めてであればステップＳ５９へ進む。初めてでなければステップＳ６０へ進む。
【０１０６】
ステップＳ５９においてＣＰＵ１１は、ノッキングのフィードバック制御を開始するためのサンプル数を示す変数βを算出する。変数βは、次の式（３）で示される。式（３）のなまし率は、なまし値の逆数である。
【０１０７】
β＝ピーク値／なまし率  …（３）
すなわち、ノッキングのフィードバック制御を開始するためのサンプル数は、ピーク値に比例する。ピーク値が大きいほど、ノッキングのフィードバック制御を開始するためのサンプル数が多くなる。また、ノッキングのフィードバック制御を開始するためのサンプル数は、なまし率に逆比例する。なまし率が小さければ、バックグランドのピーク値に収束するためのサンプル数も多く必要となるからである。
【０１０８】
ステップＳ６０においてＣＰＵ１１は、ピーク値のサンプル数をカウントするための変数αが、ノッキングのフィードバック制御を開始するためのサンプル数である変数β以上になったか判断する。変数αが変数β以上であれば、ステップＳ６１へ進む。変数αが変数βより小さければ、図２１のフローチャートの処理を終了し、次の割り込みで開始からフローチャートの処理を繰り返す。
【０１０９】
ステップＳ６１においてＣＰＵ１１は、ノッキングのフィードバック制御を開始する。
このように、バックグランドを算出するためのピーク値の必要なサンプル数をピーク値の大きさに基づいて算出し、エンジン始動後、ピーク値を、算出したサンプル数取得してから、ノッキングのフィードバック制御を開始するようにした。これによって、ノッキングの誤判定をしないように適正にノッキングの制御開始時間を変化させることができ、ノッキングの制御範囲を広めることができる。
【０１１０】
また、エンジンの始動後、ノッキングの誤判定をしないようにピーク値のサンプル数を変化させるので、エンジンの誤遅角を防止することができる。
なお、上記で説明した第１〜第４の実施の形態は、組み合わせて実施することができる。例えば、エンジン始動時には、第１の実施の形態により、前回のバックグランドに学習したバックグランドを設定し、エンジン始動後においては、第２の実施の形態により、更新ガード値を変更することができる。同様に、エンジン始動時には、第３、第４の実施の形態により、ノッキングの制御開始時間を変化させ、エンジン始動後においては、第２の実施の形態により、更新ガード値を変更することができる。また、エンジン始動時、第１の実施の形態により、前回のバックグランドに学習したバックグランドを設定し、第３、第４の実施の形態により、ノッキングの制御開始時間を変化させることができる。この場合、ノッキングの制御開始時間は、前回のバックグランドに学習したバックグランドを設定した場合を考慮し、決定する。
【０１１１】
また、第３の実施の形態と第４の実施の形態を組み合わせることもできる。例えば、第４の実施の形態で説明したように、ノッキングのフィードバック制御を開始するためのサンプル数を算出する。そして、ピーク値を算出されたサンプル数取得してから、第３の実施の形態で説明した水温、油温、および吸気温に基づく開始時間を算出し、算出した開始時間後にノッキングのフィードバック制御を開始する。具体的には、図２１で示したフローチャートのステップＳ６０で変数αが変数β以上になったとき、図１８で示したフロー
チャートのステップＳ４２以下の処理を実行する。
【図面の簡単な説明】
【０１１２】
【図１】ノック検出装置の概要を示した図である。
【図２】ノック検出装置のブロック構成図である。
【図３】ノッキング判定を説明するための波形図である。
【図４】エンジン始動時のバッグランドの収束を説明する図である。
【図５】水温におけるバックグランドの学習テーブル例を示した図である。
【図６】吸気温におけるバックグランドの学習テーブル例を示した図である。
【図７】油温におけるバックグランドの学習テーブル例を示した図である。
【図８】バックグランドの学習について説明する図である。
【図９】バックグランドの設定の処理の流れを示したフローチャートである。
【図１０】バックグランドの学習の処理の流れを示したフローチャートである。
【図１１】エンジン回転数、吸気管圧力、噴射量、およびスロットル開度の変化例を示した図である。
【図１２】バックグランドの収束を説明する図である。
【図１３】更新ガード値の算出の流れを示したフローチャートである。
【図１４】バックグランドの収束時間を説明する図である。
【図１５】水温に対するフィードバック制御開始時間の関係を示したテーブルである。
【図１６】油温に対するフィードバック制御開始時間の関係を示したテーブルである。
【図１７】吸気温に対するフィードバック制御開始時間の関係を示したテーブルである。
【図１８】フィードバック制御開始時間を算出する処理を示したフローチャートである。
【図１９】フィードバック制御開始時間を算出する制御チャートを示した図である。
【図２０】バックグランドとエンジン回転数を示した図である。
【図２１】フィードバック制御を開始するためのピーク値のサンプル数を算出する処理を示したフローチャートである。
【図２２】エンジン始動時のバックグランドの収束を説明する図である。
【符号の説明】
【０１１３】
１  ノック検出装置
１ａ  ピーク値取得手段
１ｂ  バックグランド算出手段
１ｃ  ノック判定手段
１ｄ  バックグランド設定手段
１ｅ  バックグランド記憶手段
２  内燃機関
【図１】
2006220115.tif 000003
【図２】
2006220115.tif 000004
【図３】
2006220115.tif 000005
【図４】
2006220115.tif 000006
【図５】
2006220115.tif 000007
【図６】
2006220115.tif 000008
【図７】
2006220115.tif 000009
【図８】
2006220115.tif 000010
【図９】
2006220115.tif 000011
【図１０】
2006220115.tif 000012
【図１１】
2006220115.tif 000013
【図１２】
2006220115.tif 000014
【図１３】
2006220115.tif 000015
【図１４】
2006220115.tif 000016
【図１５】
2006220115.tif 000017
【図１６】
2006220115.tif 000018
【図１７】
2006220115.tif 000019
【図１８】
2006220115.tif 000020
【図１９】
2006220115.tif 000021
【図２０】
2006220115.tif 000022
【図２１】
2006220115.tif 000023
【図２２】
2006220115.tif 000024