(57)【特許請求の範囲】
【請求項１】
内燃機関の点火時期等を自動適合する装置に適用され、各気筒の筒内圧センサ出力を任意サイクル分高周波サンプリングした筒内圧データに基づき気筒毎およびサイクル毎にノックかノイズの判定をするノック判定手段を備える自動適合用ノック自動検出装置であって、
前記各気筒の筒内圧センサ出力と同時計測する各気筒のブロック振動センサ出力を、前記ノック判定手段によりノック有りと判定されたノックサイクルとノック無しと判定されたノイズサイクルに分けて抽出する振動センサ出力抽出手段を備えることを特徴とする自動適合用ノック自動検出装置。
【請求項２】
前記ノックサイクルと前記ノイズサイクルに分けて抽出した前記各気筒のブロック振動センサ出力をそれぞれＦＦＴ処理して１ノックサイクル毎のＦＦＴ結果（ａ）と１ノイズサイクル毎のＦＦＴ結果（ｔ-ｂ）を算出するＦＦＴ処理手段と、前記ノイズサイクル全ての前記ＦＦＴ結果（ｔ-ｂ）を加算平均したＦＦＴ加算平均値（ｂ）を算出する加算平均値算出手段とを備え、前記ＦＦＴ結果（ａ）と前記ＦＦＴ加算平均値（ｂ）の周波数毎の差分（ａ−ｂ）に基づき、任意サイクル中のノックサイクル毎にノック強度を算出することを特徴とする請求項１に記載の自動適合用ノック自動検出装置。
【請求項３】
前記ＦＦＴ結果（ａ）と前記ＦＦＴ加算平均値（ｂ）との差分（ａ−ｂ）がａ−ｂ≧０となる各周波数区間での前記差分の積分値（Ｃｎ）と前記ＦＦＴ加算平均値ｂの積分値（Ｂｎ）との割合（Ｃｎ／Ｂｎ）を求め、この割合に前記ＦＦＴ結果（ａ）の積分値（Ａｎ）を掛けて前記各周波数区間での強度を得、これらの強度を足し合わせてノックサイクル毎のノック強度を算出するノック強度算出手段を備えることを特徴とする請求項２に記載の自動適合用ノック自動検出装置。
【請求項４】
前記ノック強度算出手段により算出したノック強度毎に任意サイクル中のノック頻度を算出するノック頻度算出手段と、前記ノック強度と前記ノック頻度から任意サイクルでのノックレベルを算出するノックレベル算出手段とを備えることを特徴とする請求項３に記載の自動適合用ノック自動検出装置。
【請求項５】
前記ノック頻度算出手段は、前記ノック強度を任意の強度段階に分けて各段階の頻度を算出し、前記ノックレベル算出手段は、前記ノック頻度算出手段により算出した頻度が最も高い強度段階のノック強度を現在の運転条件でのノックレベルと決定することを特徴とする請求項４に記載の自動適合用ノック自動検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の点火時期等を自動適合する装置に適用される自動適合用ノック自動検出装置に関する。
【０００２】
【従来の技術】
一般に、内燃機関としてのエンジンで発生するノック波形の周波数（ノック周波数）は、エンジン毎に異なり、シリンダのボア径で決まる。そのため、筒内圧センサの出力或いはブロック振動センサの出力からノック波形を抽出するのにバンドパスフィルタ等のフィルタを使う方法が主流である。
【０００３】
【発明が解決しようとする課題】
ところで、（１）エンジンのシリンダブロックに直接取り付けるタイプの非共振或いは共振型ブロック振動センサでノックを検出する場合、機械ノイズ等のノック以外の振動成分とノックによる振動発生成分とを分離しなければならない。このため、事前に、ノック周波数の選定と、その周波数に応じたフィルタ中心波長をもつバンドパスフィルタの設定（共振型のセンサはセンサそのものの設定）と、センサ出力と比較されるノック判定のしきい値の設定とを行なう必要がある。なぜなら、ブロック振動センサでは、シリンダブロックに伝わるあらゆる振動を拾ってしまうため、ノック振動のみを分離する必要があるが、ノック周波数はエンジン毎に異なるとともに、機械ノイズの発生周波数も異なるからである。
【０００４】
ノック周波数に応じたバンドパスフィルタの設定や前記しきい値の設定をする際には、まずはそのエンジンで実際に聴覚で聞えるノックを発生させて、その時のセンサ出力のＦＦＴ解析によりノック共振周波数がどこに有るのかを特定する必要がある。しかし、ノック共振周波数には機械ノイズ周波数のピークが重なることも有り得るため、必ずしもＳ／Ｎが良いとは限らない。したがって、ノック判定のためのしきい値も一義的には決まらず、エンジン毎の適合が必要となる。
【０００５】
（２）一方、筒内圧センサ、例えば点火プラグ一体型の筒内圧センサでノックを検出する場合、筒内圧最大値の直後に発生するノック特有の圧力振動を捕らえることにより、機械ノイズ等とは無縁でノック検出が可能になる。しかし、あくまでも筒内で発生しているノック起因の異常燃焼を捕らえてしまうため、ノックによる圧力振動がシリンダブロックやシリンダヘッドを伝わって外部へ振動音を伝えているとは限らず、聴感で捕らえるノックとは強度、頻度共に合わない。これは、筒内圧では逆にエンジンの機械振動を取り込まないため、ノックがこれらバックグラウンドノイズにかき消される分まで検出してしまっているからである。これをしきい値等を設定して聴感と合わせようとすると、結局人間による合わせ込みが必要となってしまう。
【０００６】
すなわち、エンジンの点火時期、燃料増量値、ＶＶＴ進角等を自動適合化する場合、そのエンジンでの最適燃費、最適出力、最適エミッション性能を求めたい。このため、狙いの点火時期は、ＭＢＴ（Minimum advance for the Best Torque）かＭＢＴより近く側でノックが発生する場合は、聴感上許容可能なノックレベルとなる。前記各適合を自動的に求めようとした場合、ノック検出を自動で行なうことが必須となるが、現状のノック制御（ＫＣＳ制御）では、ノックを検出させるために人間による合わせ込みが必須である。
【０００７】
したがって、点火時期等を自動適合化しようとした際に、エンジン損傷防止も含めて狙いのノックレベルを検出しようとした場合には、ブロック振動センサ、筒内圧センサ共に、各々単体では完全自動化は不可能である。
【０００８】
本発明は、このような従来の問題点に着目してなされたもので、その目的は、内燃機関の点火時期等を自動適合する際に、狙いのノックレベルを自動検出可能にして、自動適合を可能にした自動適合用ノック自動検出装置を提供することにある。
【０００９】
【課題を解決するための手段】
以下、上記目的を達成するための手段及びその作用効果について記載する。
請求項１に係る発明は、内燃機関の点火時期等を自動適合する装置に適用され、各気筒の筒内圧センサ出力を任意サイクル分高周波サンプリングした筒内圧データに基づき気筒毎およびサイクル毎にノックかノイズの判定をするノック判定手段を備える自動適合用ノック自動検出装置であって、前記各気筒の筒内圧センサ出力と同時計測する各気筒のブロック振動センサ出力を、前記ノック判定手段によりノック有りと判定されたノックサイクルとノック無しと判定されたノイズサイクルに分けて抽出する振動センサ出力抽出手段を備えることを要旨とする。
【００１０】
ブロック振動センサは、シリンダブロックに伝わるあらわゆる振動を拾うため、ノック振動を抽出するには、人間が、強制的にノックを発生させたときの同センサ出力と、ノックが絶対に発生していないときの同センサ出力とを比較し、しきい値等の各種設定を行なう必要がある。この構成によれば、各気筒の筒内圧センサ出力と同時計測する各気筒のブロック振動センサ出力を、ノック有りと判定されたノックサイクルとノック無しと判定されたノイズサイクルに分けて抽出する。これにより、筒内圧を利用して１サイクル毎に、絶対にノックの発生していないサイクルと、少なくとも筒内ではノックが発生しているサイクルとに層別できる。このため、各気筒の筒内圧センサ出力と同時に各気筒のブロック振動センサ出力を計測することで、筒内圧情報をもとにノック有り無しの層別を人間の手を借りることなく自動的に行なうことができる。したがって、内燃機関の点火時期等を自動適合する際に、狙いのノックレベルを自動検出可能になり、点火時期等の自動適合が可能になる。
【００１１】
請求項２に係る発明は、請求項１に記載の自動適合用ノック自動検出装置において、前記ノックサイクルと前記ノイズサイクルに分けて抽出した前記各気筒のブロック振動センサ出力をそれぞれＦＦＴ処理して１ノックサイクル毎のＦＦＴ結果（ａ）と１ノイズサイクル毎のＦＦＴ結果（ｔ-ｂ）を算出するＦＦＴ処理手段と、前記ノイズサイクル全ての前記ＦＦＴ結果（ｔ-ｂ）を加算平均したＦＦＴ加算平均値（ｂ）を算出する加算平均値算出手段とを備え、前記ＦＦＴ結果（ａ）と前記ＦＦＴ加算平均値（ｂ）の周波数毎の差分（ａ−ｂ）に基づき、任意サイクル中のノックサイクル毎にノック強度を算出することを要旨とする。
【００１２】
筒内圧を利用することで筒内に発生しているノックは検出できるが、そのノックが必ずしもシリンダヘッド、シリンダブロックを通して外部へノック音として伝わっているとは限らない。この構成によれば、各ブロック振動センサ出力にバックグラウンドノイズ以上の振動が含まれていれば、間違いなく音としてノックが発生していることになる。このようなノックの強度を、ＦＦＴ結果ａとＦＦＴ加算平均値ｂの周波数毎の差分に基づき、ノックサイクル毎に算出することができる。
【００１３】
請求項３に係る発明は、請求項２に記載の自動適合用ノック自動検出装置において、前記ＦＦＴ結果（ａ）と前記ＦＦＴ加算平均値（ｂ）との差分（ａ−ｂ）がａ−ｂ≧０となる各周波数区間での前記差分の積分値（Ｃｎ）と前記ＦＦＴ加算平均値ｂの積分値（Ｂｎ）との割合（Ｃｎ／Ｂｎ）を求め、この割合に前記ＦＦＴ結果（ａ）の積分値（Ａｎ）を掛けて前記各周波数区間での強度を得、これらの強度を足し合わせてノックサイクル毎のノック強度を算出するノック強度算出手段を備えることを要旨とする。
【００１４】
自動適合時にノックを自動検出する狙いのノックレベルは聴感上許容可能なノックレベルであり、このような狙いのノックレベルを自動検出するためには、ノックレベルを定量的に扱う必要がある。聴感上許容可能なノックレベルは、１回当たりに聞えるノック強度とその頻度により決まる。この構成によれば、そのうちのノック強度を算出できる。つまり、ノックサイクル毎のノック強度を算出するのに、前記差分の積分値Ｃｎとバックグラウンドレベルを表すＦＦＴ加算平均値ｂの積分値Ｂｎとの割合Ｃｎ／Ｂｎを求める。これにより、ノック強度自体のバックグラウンド補正を行うことができる。また、その割合Ｃｎ／ＢｎにＦＦＴ結果ａの積分値Ａｎを掛けて各周波数区間での強度を得、これらの強度を足し合わせてノックサイクル毎のノック強度を算出する。これにより、ノックサイクル毎のノック強度を、ノック共振周波数１次，２次，・・・の全体を集約して表すことができる。このため、人間によりしきい値を設定することなく、ノック強度を算出することができる。
【００１５】
請求項４に係る発明は、請求項３に記載の自動適合用ノック自動検出装置において、前記ノック強度算出手段により算出したノック強度毎に任意サイクル中のノック頻度を算出するノック頻度算出手段と、前記ノック強度と前記ノック頻度から任意サイクルでのノックレベルを算出するノックレベル算出手段とを備えることを要旨とする。
【００１６】
この構成によれば、ノック強度に加えてノック頻度を算出し、ノック強度とその頻度からノックレベルを算出することで、任意サイクルでのノックレベルを自動的に検出することができる。
【００１７】
請求項５に係る発明は、請求項４に記載の自動適合用ノック自動検出装置において、前記ノック頻度算出手段は、前記ノック強度を任意の強度段階に分けて各段階の頻度を算出し、前記ノックレベル算出手段は、前記ノック頻度算出手段により算出した頻度が最も高い強度段階のノック強度を現在の運転条件でのノックレベルと決定することを要旨とする。
【００１８】
この構成によれば、ノックレベルを定量的に扱うことができ、聴感上許容可能なノックレベルを自動的に検出することができる。
【００１９】
【発明の実施の形態】
以下、本発明に係る自動適合用ノック自動検出装置を具体化した一実施形態を図面に基づいて説明する。
【００２０】
[一実施形態]
図１は、一実施形態に係る自動適合用ノック自動検出装置の全体構成を模式的に示している。この自動適合用ノック自動検出装置は、エンジンの点火時期、燃料増量値、ＶＶＴ進角等を自動適合化するための装置であり、筒内圧を利用してノックを自動検出するものである。ここにいう「ＶＶＴ」とは、エンジン２１の吸気カムシャフト（図示略）のクランクシャフト（図示略）に対する相対角を連続的に変化させるための可変バルブタイミング機構をいう。
【００２１】
エンジン２１には、クランク角センサ２２、ブロック振動センサ２３、および筒内圧センサ２４が取り付けられている。筒内圧センサ２４は、４気筒エンジン２１の各気筒に設けられている。クランク角センサ２２は、クランクシャフトの１回転につき所定角度毎（例えば１５度毎）にパルス状の信号（クランク角信号）を出力する。このクランク角信号は、各気筒の圧縮上死点位置ＴＤＣを算出するのに用いられる。ブロック振動センサ２３は、各気筒のシリンダブロック（図示略）に取り付けられており、各シリンダブロックに伝わる振動を検出し、図１６（ａ），（ｂ）に示すブロック振動センサ信号を出力する。そして、各筒内圧センサ２４は、気筒毎の筒内圧（燃焼圧）をそれぞれ検出し、筒内圧信号を出力する。図１２は、各気筒の筒内圧センサ２４の出力（筒内圧センサ出力）が表す１／２サイクル分の筒内圧波形（指圧線）を示している。この指圧線には、筒内圧が最大値Ｐｍａｘとなる位置付近（破線６５で囲んだ領域）に、ノック波形が含まれている。
【００２２】
自動適合用ノック自動検出装置（以下、単に「ノック自動検出装置」という。）は、増幅回路２５と、高速データ収録手段としての高速データロガー２６と、筒内圧解析用パソコン（パーソナルコンピュータ）２７とを備える。増幅回路２５は、４つの気筒の各筒内圧センサ２４からそれぞれ出力される筒内圧センサ出力を増幅して高速データロガー２６に出力する。
【００２３】
高速データロガー２６は、増幅回路２５により増幅された各筒内圧センサ出力を高周波サンプリングして、気筒毎およびサイクル毎に単位期間毎の筒内圧データＰｄａｔａ［ｉ］を収録する。なお、高速データロガー２６による高周波サンプリングは、時間ベースまたはクランク角ベースのいずれでも良い。本実施形態では、高速データロガー２６は、各筒内圧センサ出力（各気筒の筒内圧波形）に含まれるノック波形（振動周波数が１２〜１４ＫＨｚ程度の振動成分）を精度良く解析して抽出するのに十分高い周波数、例えば２００ＫＨｚで各気筒の筒内圧センサ出力をサンプリングする。
【００２４】
また、高速データロガー２６には、各筒内圧センサ出力の他に、クランク角センサ２２から出力されるクランク角信号と、各気筒のブロック振動センサ２３から出力されるブロック振動センサ信号（ブロック振動センサ出力）とがそれぞれ入力されている。これにより、高速データロガー２６は、デジタル信号にそれぞれ変換したクランク角信号および各気筒のブロック振動センサ信号と、各気筒の筒内圧データＰｄａｔａ［ｉ］とを同期して筒内圧解析用パソコン２７へ出力するようになっている。
【００２５】
また、筒内圧解析用パソコン２７は、高速データロガー２６にデータ計測指示を与えて、同データロガーから各気筒の筒内圧データＰｄａｔａ［ｉ］、各気筒のブロック振動センサ信号、およびクランク角信号のデータを任意サイクル分（例えば、１００サイクル分）一括して取り込むようになっている。
【００２６】
また、筒内圧解析用パソコン２７には、「ノックレベル算出処理」用のプログラムが組み込まれている。このノックレベル算出処理では、各気筒の筒内圧データとクランク角信号とに基づき、各筒内圧センサ出力に含まれるノック波形等の振動成分の振幅相当量Ａｍｐ［ｉ］（図１３に示す振動波形）を気筒毎およびサイクル毎に算出し、気筒毎およびサイクル毎にノック判定を行なう。そして、各筒内圧センサ出力と同時計測の各ブロック振動センサ出力に基づき、ノック強度とノック頻度を算出して現在の運転条件でのノックレベルを自動的に検出する。
【００２７】
次に、この「ノックレベル算出処理」について図２〜図１９を参照して説明する。
まず、図２に示すフローチャートのステップＳ１０で、エンジン２１の運転状態を定常状態に設定し、所定の運転条件および所定の点火時期にてエンジン２１を運転する。つまり、エンジン２１を、エンジン回転数、吸入空気量および空燃比をそれぞれ一定に設定するとともに、点火時期を一定値に設定して運転する。
【００２８】
次に、ステップＳ１００に進み、高速データロガー２６により気筒毎にそれぞれ収録された筒内圧データＰｄａｔａ［ｉ］とクランク角信号を、上記任意サイクル分取り込む。ここで、高速データロガー２６による１サイクル当たりの筒内圧データのサンプリングデータ数をｓｉｚｅとすると、筒内圧データＰｄａｔａ［ｉ］は、ｉ＝０（吸気工程下死点付近の基準点で、クランク角０度）〜ｉ＝ｓｉｚｅ（クランク角７２０度）である。また、筒内圧解析用パソコン２７は、取り込んだクランク角信号に基づき、各気筒の圧縮上死点位置ＴＤＣを算出する。
【００２９】
次に、ステップＳ２００に進み、ステップＳ１００で取り込んだ各気筒の筒内圧データに基づき、気筒毎およびサイクル毎に筒内圧最大値Ｐｍａｘとその位置ｉｍａｘを算出する。このステップＳ２００が最大値算出手段に相当する。
【００３０】
次に、ステップＳ３００に進み、気筒毎およびサイクル毎に、筒内圧波形（指圧線）の形から点火時期の大遅角状態を検出する。具体的には、気筒毎およびサイクル毎に、ステップＳ２００で算出した筒内圧最大値Ｐｍａｘと圧縮上死点位置での筒内圧Ｐ［ｉ＝ＴＤＣ］との差が所定のしきい値を超えているか否かを判定する。その差がしきい値を超えている場合には大遅角状態ではないと判定されてステップＳ４００に進み、その差がしきい値以下の場合には、大遅角状態であると判定されてステップＳ３１０に進み、分析を終了する。
【００３１】
大遅角状態ではないと判定されてステップＳ４００に進むと、筒内圧データに基づき気筒毎およびサイクル毎に筒内圧最小値Ｐｍｉｎとその位置ｉｍｉｎを算出する。
【００３２】
次に、ステップＳ５００に進み、気筒毎およびサイクル毎に指圧線全体の変曲点の数を算出する。ここにいう、「指圧線全体」とは、１サイクルの指圧線をいう。このステップＳ５００では、図５に示すように、ステップＳ４００で算出した筒内圧最小値ＰｍｉｎとステップＳ１００で算出した圧縮上死点位置での筒内圧Ｐ［ｉ＝ＴＤＣ］を比較し、両者が等しい場合には指圧線全体の変曲点が１つであると判定し、そうでない場合には変曲点が３つであると判定する。つまり、筒内圧が圧縮上死点位置ＴＤＣの前後で上昇し続けて筒内圧最大値Ｐｍａｘに達し、この位置ｉｍａｘから筒内圧が下降し続ける場合には、指圧線全体の変曲点が１つであると判定される。この判定がなされると、ステップＳ５１０に進み、１つの変曲点の位置をｉｍａｘとして設定する。
【００３３】
一方、圧縮上死点位置ＴＤＣの近傍に極大値を持つ場合には、指圧線全体の変曲点が３つであると判定される。この判定がなされると、ステップＳ５２０に進み、３つの変曲点の位置をそれぞれＴＤＣ、ｉｍｉｎおよびｉｍａｘとして設定する。なお、指圧線の圧縮上死点位置ＴＤＣ近傍に極大値（変曲点）ができる場合には、その変曲点はＴＤＣの近傍にできるので、ＴＤＣをその変曲点に代えて１つの変曲点に設定している。これにより、圧縮上死点位置ＴＤＣ近傍の変曲点を算出する処理を省略でき、処理速度を早くすることができる。
【００３４】
こうして気筒毎およびサイクル毎に指圧線全体の変曲点の数を算出した後、図２のステップＳ６００に進む。このステップＳ６００では、気筒毎およびサイクル毎に、筒内圧データＰｄａｔａ［ｉ］に基づき筒内圧波形（指圧線）に含まれる振動波形を抽出し、その振動成分の振幅相当量Ａｍｐ［ｉ］を算出する。
【００３５】
次に、変曲点の数が１と判定された場合にステップＳ６００で実行される振幅相当量Ａｍｐ［ｉ］の計算処理を図６および図７に基づいて説明する。上記ステップＳ５００で変曲点が１つと判定された場合、気筒毎およびサイクル毎に、筒内圧Ｐの上昇中（０＜ｉ＜ｉｍａｘ）と、筒内圧Ｐの下降中（ｉｍａｘ＜ｉ＜ｓｉｚｅ）とに分けて振幅相当量Ａｍｐ［ｉ］を計算する。
【００３６】
まず、筒内圧データＰｄａｔａ［ｉ］のデータ数ｉが０〜ｉｍａｘまでの筒内圧上昇中（０＜ｉ＜ｉｍａｘ）、すなわち図１２で筒内圧ＰがＰｍａｘに達するまでのクランク角区間では、上記ステップＳ５１０から図６のステップＳ６１０に進み、同図に示す計算処理を実行する。
【００３７】
このステップＳ６１０は、データ数ｉが０〜ｉｍａｘまでのクランク角区間で計算処理がなされるように、ゲートをかけている。すなわち、このステップＳ６１０では、最初にｉを０に設定し、ｉがｉｍａｘになるまでの間、ステップＳ６１４以下の処理を繰り返しつつ、データ数ｉを１ずつインクリメント（ｉ←ｉ＋１）する。
【００３８】
ｉがｉｍａｘになるまでの間はステップＳ６１０の判定結果はＹＥＳになり、ステップＳ６１４に進む。このステップＳ６１４では、筒内圧データの単位期間当たりの変化量ＤＬＰ［ｉ］（ＤＬＰ［ｉ］＝Ｐｄａｔａ［ｉ］−Ｐｄａｔａ［ｉ−１］）を算出し、ＤＬＰ［ｉ］が負または０であるか否かを判定する。ＤＬＰ［ｉ］が正の場合、すなわち筒内圧データの今回値Ｐｄａｔａ［ｉ］がその前回値Ｐｄａｔａ［ｉ−１］より大きい場合、ステップＳ６１４の判定結果はＮＯになり、ステップＳ６１６に進み、振幅相当量Ａｍｐ［ｉ］およびｔ-ａｍｐを共に０に設定する。
【００３９】
この後、ステップＳ６１０に戻り、筒内圧データのデータ数ｉを１だけインクリメントし（ｉ←ｉ＋１）、ｉがｉｍａｘより小さいか否かを判定する。ｉ＜ｉｍａｘでかつＤＬＰ［ｉ］が正の間は、ステップＳ６１０の判定結果はＹＥＳでかつステップＳ６１４の判定結果はＮＯであるので、ステップＳ６１０，Ｓ６１４およびＳ６１６が繰り返し実行される。その間、ステップＳ６１０でデータ数ｉが１ずつインクリメントされていくとともに、Ａｍｐ［ｉ］およびｔ-ａｍｐは共に０のままに維持される。
【００４０】
こうして、ステップＳ６１０，Ｓ６１４およびＳ６１６が繰り返される間に、図１０の符号９０で示すように筒内圧が低下すると、筒内圧データの今回値ＤＬＰ［ｉ］がその前回値Ｐｄａｔａ［ｉ−１］より小さくなり、ＤＬＰ［ｉ］が負になるので、ステップＳ６１４からステップＳ６１８に進む。
【００４１】
このステップＳ６１８では、ｔ-ａｍｐとＤＬＰ［ｉ］の加算値をｔ-ａｍｐとして設定する。このとき、ｔ-ａｍｐは上記ステップＳ６１６で０に設定されているので、このステップＳ６１８で設定されるｔ-ａｍｐはＤＬＰ［ｉ］に等しい。
【００４２】
この後、ステップＳ６２０に進み、筒内圧データの今回値と次回値の変化量ＤＬＰ［ｉ＋１］（ＤＬＰ［ｉ＋１］＝Ｐｄａｔａ［ｉ＋１］−Ｐｄａｔａ［ｉ］）が正であるか否かを判定する。図１０の区間９０で示すようにその変化量ＤＬＰ［ｉ＋１］が負の場合には、ステップＳ６２２に進み、振幅相当量Ａｍｐ［ｉ］を０に維持する。
【００４３】
この後、ステップＳ６１０に戻り、ステップＳ６１４に進む。このとき、ステップＳ６１４では、前回算出した変化量ＤＬＰ［ｉ］よりデータ数が１つ増えたデータ数ｉの筒内圧データ（今回値）とその前回値の変化量ＤＬＰ［ｉ］を算出し、その変化量が負または０であるか否かについて判定する。つまり、図１０の区間９０で、ＤＬＰ［ｉ＋１］が負または０であるか否かを判定する。ＤＬＰ［ｉ＋１］は負であるので、ステップＳ６１４の判定結果はＹＥＳになり、ステップＳ６１８に進む。このとき、ｔ-ａｍｐ＝ＤＬＰ［ｉ］であるので、ステップＳ６１８で設定されるｔ-ａｍｐはＤＬＰ［ｉ］にＤＬＰ［ｉ＋１］を加算した値に設定される。
【００４４】
この後、ステップＳ６２０に進み、筒内圧データの今回値と次回値の変化量ＤＬＰ［ｉ＋１］が正であるか否かを判定する。ここでは、図１０の場合でいうと、その今回値に相当する区間９０のｉ＋１位置の筒内圧と、その次回値であるｉ＋２位置の筒内圧の変化量が正であるか否かを判定する。同図の場合、筒内圧はｉ＋１位置からｉ＋２位置の間で上昇に転じているので、ステップＳ６２０の判定結果がＹＥＳになり、ステップＳ６２４に進む。
【００４５】
このステップＳ６２４では、ステップＳ６１８で設定したｔ-ａｍｐ（負の値）の絶対値を振幅相当量Ａｍｐ［ｉ］として設定する。こうして、筒内圧上昇中には（データ数ｉが０〜ｉｍａｘまでのクランク角区間では）、図１０の区間９０、９１、９２のように筒内圧データの変化量ＤＬＰ［ｉ］が負である各区間内での同変化量の総和の絶対値を振幅相当量Ａｍｐ［ｉ］として算出する。
【００４６】
そして、データ数ｉがｉｍａｘに達すると、ステップＳ６１０の判定結果がＮＯになるので、ステップＳ６１２に進み、図６の計算処理を終了する。また、ｉ＝ｉｍａｘの位置では、変化量ＤＬＰ［ｉ］は０に設定される。
【００４７】
次に、変曲点が１つと判定された場合、気筒毎およびサイクル毎に、筒内圧Ｐの下降中（ｉｍａｘ＜ｉ＜ｓｉｚｅ）に、図７の計算処理が実行される。筒内圧データＰｄａｔａ［ｉ］のデータ数ｉがｉｍａｘ〜ｓｉｚｅまでの筒内圧下降中、すなわち図１２で筒内圧ＰがＰｍａｘから低下し続けるクランク角区間では、上記ステップＳ５１０から図７のステップＳ６３０に進み、図７に示す計算処理を実行する。
【００４８】
このステップＳ６３０は、データ数ｉがｉｍａｘ〜ｓｉｚｅまでのクランク角区間で計算処理がなされるように、ゲートをかけている。すなわち、このステップＳ６３０では、最初にｉをｉｍａｘ＋１に設定し、ｉがｓｉｚｅになるまでの間、ステップＳ６３４以下の処理を繰り返しつつ、データ数ｉを１ずつインクリメント（ｉ←ｉ＋１）する。
【００４９】
ｉがｓｉｚｅになるまでの間はステップＳ６３０の判定結果はＹＥＳになり、ステップＳ６３４に進む。このステップＳ６３４では、筒内圧データの単位期間当たりの変化量ＤＬＰ［ｉ］を算出し、ＤＬＰ［ｉ］が正または０であるか否かを判定する。ＤＬＰ［ｉ］が負の場合、ステップＳ６３４の判定結果はＮＯになり、ステップＳ６３６に進み、振幅相当量Ａｍｐ［ｉ］およびｔ-ａｍｐを共に０に設定する。
【００５０】
この後、ステップＳ６３０に戻り、筒内圧データのデータ数ｉを１だけインクリメントし（ｉ←ｉ＋１）、ｉがｓｉｚｅより小さいか否かを判定する。ｉ＜ｓｉｚｅでかつＤＬＰ［ｉ］が負の間は、ステップＳ６３０の判定結果はＹＥＳでかつステップＳ６３４の判定結果はＮＯであるので、ステップＳ６３０，Ｓ６３４およびＳ６３６が繰り返し実行される。その間、ステップＳ６３０でデータ数ｉが１ずつインクリメントされていくとともに、Ａｍｐ［ｉ］およびｔ-ａｍｐは共に０のままに維持される。
【００５１】
こうして、ステップＳ６３０，Ｓ６３４およびＳ６３６が繰り返される間に、図１１の符号９５で示すように筒内圧が上昇すると、筒内圧データの今回値Ｐｄａｔａ［ｉ］がその前回値Ｐｄａｔａ［ｉ−１］より大きくなり、ＤＬＰ［ｉ］が正になるので、ステップＳ６３４からステップＳ６３８に進む。
【００５２】
このステップＳ６３８では、ｔ-ａｍｐとＤＬＰ［ｉ］の加算値をｔ-ａｍｐとして設定する。このとき、ｔ-ａｍｐは上記ステップＳ６３６で０に設定されているので、このステップＳ６３８で設定されるｔ-ａｍｐはＤＬＰ［ｉ］に等しい。
【００５３】
この後、ステップＳ６４０に進み、筒内圧データの今回値と次回値の変化量ＤＬＰ［ｉ＋１］（ＤＬＰ［ｉ＋１］＝Ｐｄａｔａ［ｉ＋１］−Ｐｄａｔａ［ｉ］）が負であるか否かを判定する。図１１の区間９５で示すようにその変化量ＤＬＰ［ｉ＋１］が正の場合には、ステップＳ６４２に進み、振幅相当量Ａｍｐ［ｉ］を０に維持する。
【００５４】
この後、ステップＳ６３０に戻り、ステップＳ６３４に進む。このとき、ステップＳ６３４では、前回算出した変化量ＤＬＰ［ｉ］よりデータ数が１つ増えたデータ数ｉの筒内圧データ（今回値）とその前回値の変化量ＤＬＰ［ｉ］を算出し、その変化量が正または０であるか否かについて判定する。つまり、図１１の区間９５で、ＤＬＰ［ｉ＋１］が正または０であるか否かを判定する。ＤＬＰ［ｉ＋１］は正であるので、ステップＳ６３４の判定結果はＹＥＳになり、ステップＳ６３８に進む。このとき、ｔ-ａｍｐ＝ＤＬＰ［ｉ］であるので、ステップＳ６３８で設定されるｔ-ａｍｐはＤＬＰ［ｉ］にＤＬＰ［ｉ＋１］を加算した値に設定される。
【００５５】
この後、ステップＳ６４０に進み、筒内圧データの今回値と次回値の変化量ＤＬＰ［ｉ＋１］が負であるか否かを判定する。ここでは、図１１の場合でいうと、その今回値に相当する区間９５のｉ＋１位置の筒内圧と、その次回値であるｉ＋２位置の筒内圧の変化量が負であるか否かを判定する。同図の場合、筒内圧はｉ＋１位置からｉ＋２位置の間で下降に転じているので、ステップＳ６４０の判定結果がＹＥＳになり、ステップＳ６４４に進む。
【００５６】
このステップＳ６４４では、ステップＳ６３８で設定したｔ-ａｍｐ( 正の値)を振幅相当量Ａｍｐ［ｉ］として設定する。こうして、筒内圧下降中には（データ数ｉがｉ〜ｓｉｚｅまでのクランク角区間では）、図１１の区間９４、９５、９６のように筒内圧データの変化量ＤＬＰ［ｉ］が正である各区間内での同変化量の総和を振幅相当量Ａｍｐ［ｉ］として算出する。そして、データ数ｉがｓｉｚｅに達すると、ステップＳ６３０の判定結果がＮＯになるので、ステップＳ６３２に進み、図７の計算処理を終了する。
【００５７】
このようにして、指圧線全体の変曲点が１つの場合、気筒毎およびサイクル毎に、筒内圧データＰｄａｔａ［ｉ］に基づき筒内圧波形（指圧線）に含まれる振動波形を抽出し、その振動成分の振幅相当量Ａｍｐ［ｉ］を算出することができる。こうして気筒毎およびサイクル毎に算出される振幅相当量Ａｍｐ［ｉ］を、図１３で示してある。
【００５８】
次に、上記ステップＳ５００で変曲点の数が３と判定された場合に、ステップＳ６００で実行される振幅相当量Ａｍｐ［ｉ］の計算処理について説明する。
（１）まず、筒内圧Ｐ上昇中のクランク角区間（０＜ｉ＜ＴＤＣ）では、気筒毎およびサイクル毎に、筒内圧データの変化量ＤＬＰ［ｉ］が負である各区間内での同変化量の総和の絶対値を振幅相当量Ａｍｐ［ｉ］として算出する。
【００５９】
（２）次に、圧縮上死点位置（ｉ＝ＴＤＣ）では、振幅相当量Ａｍｐ［ｉ］を０に設定する。
（３）次に、筒内圧Ｐ下降中のクランク角区間（ＴＤＣ＜ｉ＜ｉｍｉｎ）では、気筒毎およびサイクル毎に、筒内圧データの変化量ＤＬＰ［ｉ］が正である各区間内での同変化量の総和を振幅相当量Ａｍｐ［ｉ］として算出する。
【００６０】
（４）次に、筒内圧最小値Ｐｍｉｎの位置（ｉ＝ｉｍｉｎ）では、振幅相当量Ａｍｐ［ｉ］を０に設定する。
（５）次に、筒内圧Ｐ上昇中のクランク角区間（ｉｍｉｎ＜ｉ＜ｉｍａｘ）では、気筒毎およびサイクル毎に、筒内圧データの変化量ＤＬＰ［ｉ］が負である各区間内での同変化量の総和の絶対値を振幅相当量Ａｍｐ［ｉ］として算出する。
【００６１】
（６）次に、筒内圧最大値Ｐｍａｘの位置（ｉ＝ｉｍａｘ）では、振幅相当量Ａｍｐ［ｉ］を０に設定する。
（７）そして、筒内圧Ｐ下降中のクランク角区間（ｉｍａｘ＜ｉ＜ｓｉｚｅ）では、気筒毎およびサイクル毎に、筒内圧データの変化量ＤＬＰ［ｉ］が正である各区間内での同変化量の総和を振幅相当量Ａｍｐ［ｉ］として算出する。
【００６２】
このようにして、指圧線全体の変曲点が３つの場合、気筒毎およびサイクル毎に、筒内圧データＰｄａｔａ［ｉ］に基づき筒内圧波形（指圧線）に含まれる振動波形を抽出し、図１３で示すその振動成分の振幅相当量Ａｍｐ［ｉ］を算出することができる。上記ステップＳ６００が振動成分抽出手段に相当する。
【００６３】
このようにして上記ステップＳ６００で振幅相当量Ａｍｐ［ｉ］を計算した後、図２のステップＳ７００に進む。このステップＳ７００では、気筒毎およびサイクル毎に、１サイクル中の第１ゲート区間内での振幅相当量Ａｍｐ［ｉ］の最大値Ａｍｐｍａｘを算出する。その第１ゲート区間は、図１２で示すように、上記ステップＳ２００で算出したｉｍａｘ前後のα＋βのクランク角区間である。
【００６４】
ステップＳ７００の処理を図８のフローチャートに基づいて説明する。
まず、ステップＳ７１０では、データ数ｉがｉｍａｘ−αからｉｍａｘ−βまでの第１ゲート区間で計算処理がなされるように、ゲートをかけている。すなわち、このステップＳ７１０では、最初にｉをｉｍａｘ−αに設定し、ｉがｉｍａｘ−βになるまでの間、ステップＳ７１０、Ｓ７２０およびＳ７３０の処理を繰り返しつつ、データ数ｉを１ずつインクリメント（ｉ←ｉ＋１）する。
【００６５】
ｉがｉｍａｘ−βになるまでの間はステップＳ７１０の判定結果はＹＥＳになり、ステップＳ７２０に進む。このステップＳ７２０では、振幅相当量Ａｍｐ［ｉ］の今回値が最大値Ａｍｐｍａｘを超えているか否かを判定する。その今回値がＡｍｐｍａｘ以下の場合には、ステップＳ７１０に戻る。一方、その今回値がＡｍｐｍａｘを超えている場合には、ステップＳ７２０に進み、振幅相当量Ａｍｐ［ｉ］の今回値をＡｍｐｍａｘとして設定する。この後、ステップＳ７１０に戻る。
【００６６】
こうして、データ数ｉがｉｍａｘ−αからｉｍａｘ−βまでの第１ゲート区間において、振幅相当量Ａｍｐ［ｉ］の今回値が最大値Ａｍｐｍａｘを超える度にその今回値でＡｍｐｍａｘを更新していくことで、第１ゲート区間内での最大値Ａｍｐｍａｘを算出する。なお、上記ステップＳ７００が、振幅最大値算出手段に相当する。
【００６７】
この後、図２のステップＳ８００に進み、気筒毎に、しきい値１としきい値２を設定する（図１４参照）。このステップＳ８００では、ステップＳ７００で算出した最大値Ａｍｐｍａｘの任意サイクル（例えば１００サイクル）分の加算平均値と、その標準偏差σを３倍した値との加算値（任意サイクル平均値＋３σ）をしきい値１として算出する。また、最大値Ａｍｐｍａｘの任意サイクル分の加算平均値（任意サイクル平均値）をしきい値２として算出する。なお、このステップＳ８００が、しきい値算出手段に相当する。
【００６８】
この後、図３のステップＳ９００に進み、気筒毎およびサイクル毎にノック判定を行なう。このステップＳ９００では、上記ステップＳ７００で算出した振幅相当量Ａｍｐ［ｉ］の最大値Ａｍｐｍａｘと、振動成分の繰り返し性の有無とに基づき、気筒毎およびサイクル毎にノック判定を行なう。
【００６９】
ステップＳ９００の処理（「ノックＯＲノイズ判定処理」）を図９のフローチャートに基づいて説明する。
まず、ステップＳ９１０では、ステップＳ７００で算出した振幅相当量Ａｍｐ［ｉ］の最大値ＡｍｐｍａｘがステップＳ８００で設定したしきい値１を超えているか否かについて判定する。この判定結果がＮＯの場合、すなわち最大値Ａｍｐｍａｘがしきい値１以下の場合、ステップＳ９６０に進み、「ノイズ」と判定される。こうして、気筒毎に最大値Ａｍｐｍａｘがしきい値１以下のサイクルについては、「ノイズ」と判定される。
【００７０】
また、ステップＳ９１０の判定結果がＹＥＳの場合、すなわち最大値Ａｍｐｍａｘがしきい値１を超えている場合には、振動が大きくノックである可能性が高いので、次のステップ９２０に進む。このステップＳ９２０では、データ数ｉが最大値Ａｍｐｍａｘの位置であるｉａｍｐｍａｘからｉａｍｐｍａｘ＋γまでの第２ゲート区間（図１４参照）で計算処理がなされるように、ゲートをかけている。すなわち、このステップＳ９２０では、最初にｉをｉａｍｐｍａｘに設定し、ｉがｉａｍｐｍａｘ＋γになるまでの間、ステップＳ９２０〜Ｓ９７０の処理を繰り返しつつ、データ数ｉを１ずつインクリメント（ｉ←ｉ＋１）する。
【００７１】
ｉがｉａｍｐｍａｘ＋γになるまでの間はステップＳ９２０の判定結果はＹＥＳになり、ステップＳ９３０に進む。このステップＳ９３０では、振幅相当量Ａｍｐ［ｉ］の今回値がステップＳ８００で設定したしきい値２を超えているか否かを判定する。この判定結果がＮＯの場合にはステップＳ９２０に戻る。一方、その判定結果がＹＥＳの場合にはステップＳ９４０に進む。
【００７２】
このステップＳ９４０では、振幅相当量Ａｍｐ［ｉ］がしきい値２を超える回数である振幅繰り返し数Ｎを１だけインクリメントする。なお、ステップＳ９４０では、ｉａｍｐｍａｘでの最大値Ａｍｐｍａｘを含めて振幅繰り返し数Ｎをカウントする。つまり、図９の処理が開始されたときのｉａｍｐｍａｘの位置で、ステップＳ９４０において振幅繰り返し数Ｎが１に設定されるようになっている。この後、ステップＳ９２０に戻る。
【００７３】
こうしてｉがｉａｍｐｍａｘ＋γになるまでの第２ゲート区間内に、最大値Ａｍｐｍａｘを含めて振幅相当量Ａｍｐ［ｉ］がしきい値２を超えた振幅繰り返し数Ｎをカウントする。
【００７４】
そして、ｉがｉａｍｐｍａｘ＋γになると、ステップＳ９２０の判定結果がＮＯになり、ステップＳ９５０に進む。このステップＳ９５０では、ステップＳ９４０で設定した振幅繰り返し数Ｎがしきい値３を超えているか否かを判定する。振幅繰り返し数Ｎがしきい値３以下の場合には、ステップＳ９５０の判定結果がＮＯになり、上記ステップＳ９６０に進み、「ノイズ」と判定される。すなわち、ノック無しサイクルであるノイズサイクルと判定される。一方、振幅繰り返し数Ｎがしきい値３を超えている場合には、ステップＳ９５０の判定結果がＹＥＳになり、ステップＳ９７０に進み、「ノック」と判定される。すなわち、ノック有りサイクルであるノックサイクルと判定される。
【００７５】
このようにして、気筒毎に、次の２つの条件が成立したサイクルについては、「ノック」と判定される（ステップＳ９７０）。（条件１）図１４で示すように、第１ゲート区間内での最大値Ａｍｐｍａｘがしきい値１を超えている（ステップＳ９１０でＹＥＳ）。（条件２）第２ゲート区間内での振幅繰り返し数Ｎがしきい値３を超えている（ステップＳ９５０でＹＥＳ）。すなわち、振動成分の繰り返し性が有ると判定される。
【００７６】
これに対して、最大値Ａｍｐｍａｘがしきい値１以下（ステップＳ９１０でＮＯ）となる各気筒のサイクル、或いは振幅繰り返し数Ｎがしきい値３以下（ステップＳ９５０でＮＯ）となる各気筒のサイクルは、いずれもノック無し、すなわち「ノイズ」（ノイズサイクル）と判定される。なお、上記ステップＳ９００が、ノック判定手段に相当する。
【００７７】
そして、図３に示す上記ステップＳ９６０に進み、「ノイズ」と判定された場合には、図３のステップＳ１０００に進む。このステップＳ１０００では、図２の上記ステップＳ８００で算出したしきい値１，しきい値２を再計算する。すなわち、任意サイクルのうちステップＳ９００でノック無しと判定されたノイズサイクルだけの最大値Ａｍｐｍａｘの加算平均値と、その標準偏差σを３倍した値との加算値（ノイズサイクルのＡｍｐｍａｘの平均値＋３σ）をしきい値１として算出する。また、ノイズサイクルだけの最大値Ａｍｐｍａｘの加算平均値（ノイズサイクルのＡｍｐｍａｘの平均値）をしきい値２として算出する。このステップＳ１０００も、しきい値設定手段に相当する。
【００７８】
この後、ステップＳ１１００に進み、しきい値の収束判定を行なう。すなわち、ステップＳ１０００で再計算したしきい値２の今回値が前回のしきい値２（しきい値２の前回値）と同じになったか否かを判定する。しきい値２の今回値がその前回値と同じになるまでは、ステップＳ９００、Ｓ９６０およびＳ１０００が繰り返されるので、しきい値１，しきい値２がそれぞれ徐々に下がっていく（図１２参照）。また、その間にステップＳ９００の判定結果がＹＥＳになる場合には、ステップＳ９７０に進み「ノック」と判定される。こうして、しきい値２の今回値がその前回値と同じになるまでは、「ノック」と判定されるサイクルを除外しながら（図１５参照）、ノック無しと判定されたノイズサイクルだけの最大値Ａｍｐｍａｘの加算平均値とその標準偏差σとに基づき両しきい値１，２が再計算される。
【００７９】
そして、しきい値２の今回値がその前回値と同じになり、ステップＳ１１００の判定結果がＹＥＳになると、ステップＳ１２００に進み、ステップＳ９００〜Ｓ１１００の繰り返し判定を終了する。これにより、気筒毎およびサイクル毎に「ノック」か「ノイズ」の判定結果（ｋ，ｃｙｃｌｅ）＝「ノック」ＯＲ「ノイズ」が得られる。ここで、ｋは気筒番号であり、ｃｙｃｌｅはサイクル番号である。例えば、気筒＃１の４サイクル目が「ノック」の場合には、（１，４）＝「ノック」という判定結果が得られる。こうして、ステップＳ１１００の判定結果がＹＥＳになった時点でノック無しと判定されていたサイクルが最終的に「ノイズ」となり、それ以外のサイクルは「ノック」となる。
【００８０】
この後、図４に示すステップＳ１３００に進む。このステップＳ１３００では、高速データロガー２６から取り込んだ各気筒のブロック振動センサ出力（任意サイクル分のブロック振動データ）を、気筒毎にノックサイクルとノイズサイクルに分けて抽出する。つまり、このステップＳ１３００では、上記ステップＳ１２００で得られた気筒毎およびサイクル毎の「ノック」か「ノイズ」の判定結果に基づき、任意サイクル分の各ブロック振動センサ出力をノックサイクルとノイズサイクルとに層別する。例えば、任意サイクルの２サイクル目では、気筒＃１，＃３，＃２の各ブロック振動センサ出力はそれぞれノイズサイクル、気筒＃４のブロック振動センサ出力はノックサイクル、というように任意サイクル分のブロック振動データを層別する。なお、図１６（ａ）は、「ノック」と判定されるような大きな振動成分を含む各ブロック振動センサ２３の生の出力信号（各ブロック振動センサ出力）を示している。また、図１６（ｂ）は「ノイズ」と判定されるような小さな振動成分を含む各ブロック振動センサ２３の生の出力信号を示している。なお、このステップＳ１３００が、振動センサ出力抽出手段に相当する。
【００８１】
この後、ステップＳ１４００に進む。このステップＳ１４００では、ノックサイクルとノイズサイクルに分けて抽出した任意サイクル分の各ブロック振動センサ出力をそれぞれＦＦＴ処理する。これにより、１ノックサイクル毎のパワースペクトル（ＦＦＴ結果ａ）と１ノイズサイクル毎のパワースペクトル（ＦＦＴ結果ｔ-ｂ）とが算出される。図１７（ａ），（ｂ）は、図１６（ａ），（ｂ）の信号をそれぞれＦＦＴ処理して得られるパワースペクトルを示している。この図１７（ａ），（ｂ）の横軸は周波数を、縦軸は強度ｄｂをそれぞれ示している。なお、このステップＳ１４００がＦＦＴ処理手段に相当する。
【００８２】
この後、ステップＳ１５００に進む。このステップＳ１５００では、任意サイクルのうちのノイズサイクル全てのＦＦＴ結果（ｔ-ｂ）を加算平均したノイズサイクルのパワースペクトル加算平均（ＦＦＴ加算平均値ｂ）を、次の式で算出する。
【００８３】
ｂ＝ノイズサイクル全ての（ｔ-ｂ）の和／ノイズサイクル数
こうして計算されるＦＦＴ加算平均値ｂは、任意サイクルのうちの全てのノイズサイクルのパワースペクトルを加算平均したバックグランドレベルを表している。なお、このステップＳ１５００が加算平均値算出手段に相当する。
【００８４】
この後、ステップＳ１６００に進む。このステップＳ１６００では、各ノックサイクルのパワースペクトル（ＦＦＴ結果ａ）とノイズサイクルのパワースペクトル加算平均（ＦＦＴ加算平均値ｂ）を比較し、差のある周波数区間ｎで、以下の各積分値Ａｎ，Ｂｎ，Ｃｎを算出する。
【００８５】
すなわち、ＦＦＴ結果ａとＦＦＴ加算平均値ｂとの差分（ａ−ｂ）がａ−ｂ≧０となる各周波数区間ｎでの、ＦＦＴ結果ａの積分値Ａｎを算出する。また、各周波数区間ｎでの、ＦＦＴ加算平均値ｂの積分値Ｂｎを算出する。そして、各周波数区間ｎでの、差分（ａ−ｂ）の積分値（Ｃｎ）を算出する。図１８のグラフは、ある１つのノックサイクルにおいて、差分（ａ−ｂ）がａ−ｂ≧０となる２つの周波数区間ｎ１，ｎ２での積分により得られる各積分値を示している。なお、図１８の横軸は周波数を、その縦軸は強度ｄｂをそれぞれ示している。
【００８６】
この後、ステップＳ１７００に進む。このステップＳ１７００では、ステップＳ１６００で算出した各積分値を使って、任意サイクル中のノックサイクル毎にノック強度を算出する。すなわち、上記周波数区間ｎ毎の積分値ＣｎとＢｎの割合Ｃｎ／Ｂｎを求め、この割合に周波数区間ｎ毎の積分値Ａｎを掛けて１ノックサイクルにおける各周波数区間ｎ１，ｎ２，・・・での強度を得、これらの強度を足し合わせる。つまり、各ノックサイクルのノック強度を、次の式により算出する。
【００８７】
ノック強度＝（Ｃ１／Ｂ１×Ａ１）＋（Ｃ２／Ｂ２×Ａ２）＋（Ｃ３／Ｂ３×Ａ３）＋・・・＋（Ｃｎ／Ｂｎ×Ａｎ）
ここで、Ｃ１，Ｂ１，Ａ１は、１ノックサイクル中での周波数区間ｎ１の各積分値である。同様に、Ｃ２，Ｂ２，Ａ２およびＣ３，Ｂ３，Ａ３は、同じ１ノックサイクル中での周波数区間ｎ２，ｎ３の各積分値である。なお、ステップＳ１７００がノック強度算出手段に相当する。
【００８８】
この後、ステップＳ１８００に進む。このステップＳ１８００では、ステップＳ１７００で算出した各ノックサイクルのノック強度を任意の強度段階（例えば、３段階）に分け、各段階の頻度を算出する。図１９のグラフは、ノック強度とノック頻度の関係を示している。本実施形態では、図１９に示すように、ノック強度に対して３つのしきい値を設けてＴＫ（トレースノック），小ノック，中ノック，大ノックの４つの領域に分けている。すなわち、ノック強度を小ノック，中ノック，大ノックの３段階に分けている。そして、図１９では、棒グラフ１は中ノックの頻度を、棒グラフ２は小ノックの頻度を、棒グラフ３はＴＫの頻度をそれぞれ示している。このような頻度をステップＳ１８００で算出する。このステップＳ１８００がノック頻度算出手段に相当する。
【００８９】
この後、ステップＳ１９００に進む。このステップＳ１９００では、ステップＳ１７００，１８００でそれぞれ算出したノック強度とノック頻度の関係から、任意サイクル分サンプリングした定常データのノックレベルを決定する。すなわち、頻度が最も高い強度段階のノック強度を現在の運転条件でのノックレベルと決定する。例えば、図１９に示すような場合には、中ノックの頻度が最も高いので、現在のノックレベルは中ノックと決定される。なお、ここにいう「定常データ」とは、ステップＳ１０で設定した定常状態（エンジン回転数、吸入空気量、空燃比一定）と点火時期（一定値）でエンジン２１を任意サイクル運転して得たデータをいう。
【００９０】
以上説明したように、エンジン２１の点火時期等を自動適合するには、ステップＳ１０で定常状態と点火時期の設定を変えながら、各設定条件でエンジン２１を任意サイクル運転して得たデータに基づき、上記ノックレベル算出処理を行う。これにより、各設定条件でのノックレベルをそれぞれ自動的に検出することができる。
【００９１】
以上のように構成された一実施形態によれば、以下の作用効果を奏する。
（イ）各気筒のブロック振動センサ２３の出力を、ノック有りと判定されたノックサイクルとノック無しと判定されたノイズサイクルに分けて抽出する（ステップＳＳ１３００）。これにより、筒内圧を利用して１サイクル毎に、絶対にノックの発生していないサイクルと、少なくとも筒内ではノックが発生しているサイクルとに層別できる。このため、各筒内圧センサ出力と同時に各ブロック振動センサ出力を計測することで、筒内圧情報をもとにノック有り無しの層別を人間の手を借りることなく自動的に行なうことができる。したがって、エンジン２１の点火時期等を自動適合する際に、狙いのノックレベルを自動検出可能になり、点火時期等の自動適合が可能になる。
【００９２】
（ロ）ステップＳ１６００で、各ノックサイクルのパワースペクトル（ＦＦＴ結果ａ）とノイズサイクルのパワースペクトル加算平均（ＦＦＴ加算平均値ｂ）を比較し、差のある周波数区間ｎで積分値Ａｎ，Ｂｎ，Ｃｎを算出する。そして、ステップＳ１７００で、算出した各積分値を使って任意サイクル中のノックサイクル毎にノック強度を算出する。つまり、任意サイクル中のノックサイクル毎にノック強度を算出するのに、ＦＦＴ結果ａとＦＦＴ加算平均値ｂの周波数毎の差分（ａ−ｂ）をノックとしている。これにより、各ブロック振動センサ出力にバックグラウンドノイズ以上の振動が含まれていれば、間違いなく音としてノックが発生していることになる。このようなシリンダヘッド、シリンダブロックを通して外部へノック音として伝わるノックを、ＦＦＴ結果ａとＦＦＴ加算平均値ｂの周波数毎の差分で表すことができる。
【００９３】
（ハ）自動適合時にノックを自動検出する狙いのノックレベルは聴感上許容可能なノックレベルであり、このような狙いのノックレベルを自動検出するためには、ノックレベルを定量的に扱う必要がある。聴感上許容可能なノックレベルは、１回当たりに聞えるノック強度とその頻度により決まる。そのうちのノック強度を算出できる。つまり、ノックサイクル毎のノック強度を算出するのに、差分（ａ−ｂ）の積分値Ｃｎとバックグラウンドレベルを表すＦＦＴ加算平均値ｂの積分値Ｂｎとの割合（Ｃｎ／Ｂｎ）を求める（ステップＳ１７００）。これにより、ノック強度自体のバックグラウンド補正を行うことができる。
【００９４】
また、その割合（Ｃｎ／Ｂｎ）にＦＦＴ結果ａの積分値Ａｎを掛けて各周波数区間ｎでの強度を得、これらの強度を足し合わせてノックサイクル毎のノック強度を算出する（ステップＳ１７００）。これにより、ノックサイクル毎のノック強度を、ノック共振周波数１次，２次，・・・の全体を集約して表すことができる。このため、人間によりしきい値を設定することなく、ノック強度を算出することができる。
【００９５】
（ニ）ステップＳ１７００で算出したノック強度毎に任意サイクル中のノック頻度を算出する（ステップＳ１８００）。こうして求めたノック強度とノック頻度からノックレベルを算出する（ステップＳ１９００）。このように、ノック強度に加えてノック頻度を算出し、ノック強度とその頻度からノックレベルを算出することで、現在の運転条件でのノックレベルを自動検出することができる。
【００９６】
（ホ）ノック強度を任意の強度段階に分け、各段階の頻度を算出し（ステップＳ１８００）、算出した頻度が最も高い強度段階のノック強度を現在のノックレベルと決定する（ステップＳ１９００）。これにより、ノックレベルを定量的に扱うことができ、聴感上許容可能なノックレベルを自動的に検出することができる。
【００９７】
（ト）ステップＳ１５００で算出するノイズサイクルのパワースペクトル加算平均（ＦＦＴ加算平均値ｂ）は、任意サイクル全体のバックグラウンドレベルを表している。このバックグラウンドレベルと各ノックサイクルのパワースペクトル（ＦＦＴ結果ａ）とを比較し、各周波数区間ｎでの差分（ａ−ｂ）の積分値Ｃｎに基づきノック強度を算出する（ステップＳ１７００）。このため、各ノックサイクルで安定したノック強度を得ることができる。これにより、ステップＳ１９００でより正確なノックレベルを決定することができる。
【００９８】
[ 変形例]
なお、この発明は以下のように変更して具体化することもできる。
・上記一実施形態では、ステップＳ１４００，１５００で算出したノックサイクルのパワースペクトルａと、ノイズサイクルのパワースペクトル加算平均ｂをそのままステップＳ１６００及びＳ１７００での計算に使用しているが、本発明はこれに限定されない。例えば、ノック強度を求めるのに、各ブロック振動センサ出力のＦＦＴ結果にデジタルフィルタ処理によりバンドパスフィルタをかけて各周波数区間での差分（ａ−ｂ）を抽出し、これを積分するようにしてもよい。
【００９９】
・上記一実施形態において、しきい値１を、最大値Ａｍｐｍａｘの任意サイクル分の加算平均値と、その標準偏差σを３以外の整数倍した値との加算値としてもよい。
【０１００】
・上記一実施形態では、本発明を４気筒のエンジン２１に適用した例を示したが、本発明は多気筒の内燃機関に広く適用可能である。
・上記一実施形態では、指圧線の圧縮上死点位置ＴＤＣ近傍に極大値（変曲点）ができる場合には、その変曲点はＴＤＣの近傍にできるので、ＴＤＣをその変曲点に代えて１つの変曲点に設定しているが、その変曲点の位置を算出して、この変曲点を１つの変曲点として設定するようにしても良い。
【０１０１】
・上記一実施形態では、高速データロガー２６は、各筒内圧センサ出力を例えば２００ＫＨｚでサンプリングしているが、そのサンプリング周波数は適宜変更可能である。
【０１０２】
・上記一実施形態において、図１２に示す第１ゲート区間を図１４に示す第２ゲート区間と同じにしても良い。
以下、上記一実施形態から把握できる技術思想について説明する。
【０１０３】
（１）各気筒の筒内圧を検出する複数の筒内圧センサを備えた自動適合用ノック自動検出装置において、
前記複数の筒内圧センサからそれぞれ出力される各筒内圧センサ出力を高周波サンプリングして、気筒毎およびサイクル毎に筒内圧データを収録する高速データ収録手段と、
前記筒内圧データに基づき、前記各筒内圧センサ出力に含まれる振動成分の振幅相当量を気筒毎およびサイクル毎に算出する振動成分抽出手段と、
気筒毎およびサイクル毎に、前記振幅相当量の最大値を算出する振幅最大値算出手段と、
前記最大値の任意サイクル分の加算平均値と標準偏差とからしきい値を算出するしきい値算出手段と、
前記最大値と前記振動成分の繰り返し性の有無とに基づくノック判定を気筒毎およびサイクル毎に行い、同最大値がしきい値を超えかつ前記繰り返し性が有る場合にノックと判定するノック判定手段と、
前記各気筒の筒内圧センサ出力と同時計測する各気筒のブロック振動センサ出力を、前記判定結果に基づきノックサイクルとノイズサイクルに分けて抽出する振動センサ出力抽出手段と
を備えることを特徴とする自動適合用自動ノック検出装置。
【０１０４】
（２）上記（１）に記載の自動適合用ノック自動検出装置において、
前記各ノックサイクルのブロック振動センサ出力をＦＦＴ処理した１ノックサイクル毎のＦＦＴ結果（ａ）と、前記ノイズサイクル全てのブロック振動センサ出力をそれぞれＦＦＴ処理してそのＦＦＴ結果（ｔ-ｂ）を加算平均したＦＦＴ加算平均値（ｂ）との差に基づき、任意サイクル中のノックサイクル毎にノック強度を算出するノック強度算出手段を備えることを特徴とする自動適合用自動ノック検出装置。
【０１０５】
（３）上記（２）に記載の自動適合用自動ノック検出装置において、
前記ノック強度算出手段により算出したノック強度毎に任意サイクル中のノック頻度を算出するノック頻度算出手段を備えることを特徴とする自動適合用自動ノック検出装置。
【０１０６】
（４）上記（３）に記載の自動適合用自動ノック検出装置において、
前記ノック強度と前記ノック頻度からノックレベルを算出するノックレベル算出手段とを備えることを特徴とする自動適合用ノック自動検出装置。
【０１０７】
（５）上記（４）に記載の自動適合用自動ノック検出装置において、
前記ノック頻度算出手段は、前記ノック強度を任意の強度段階に分けて各段階の頻度を算出し、前記ノックレベル算出手段は、前記ノック頻度算出手段により算出した頻度が最も高い強度段階のノック強度を現在のノックレベルと決定することを特徴とする自動適合用ノック自動検出装置。
【０１０８】
（６）内燃機関の点火時期等を自動適合する装置に適用され、各気筒の筒内圧センサ出力を任意サイクル分高周波サンプリングした筒内圧データに基づき気筒毎およびサイクル毎にノックかノイズの判定をするノック判定手段を備えた自動適合用ノック自動検出装置であって、
前記各気筒の筒内圧センサ出力と同時計測する各気筒のブロック振動センサ出力を、前記判定結果に基づきノックサイクルとノイズサイクルに分けして抽出する振動センサ出力抽出手段と、
前記各ノックサイクルのブロック振動センサ出力をＦＦＴ処理した１ノックサイクル毎のＦＦＴ結果（ａ）と、前記ノイズサイクル全てのブロック振動センサ出力をそれぞれＦＦＴ処理してそのＦＦＴ結果（ｔ-ｂ）を加算平均したＦＦＴ加算平均値（ｂ）との差に基づき、任意サイクル中のノックサイクル毎にノック強度を算出するノック強度算出手段と、
算出したノック強度毎に任意サイクル中のノック頻度を算出するノック頻度算出手段と、
前記ノック強度とノック頻度からノックレベルを算出するノックレベル算出手段とを備えることを特徴とする自動適合用ノック自動検出装置。
【図面の簡単な説明】
【図１】  一実施形態に係る自動適合用ノック自動検出装置の全体を模式的に示す構成図。
【図２】  ノックレベル算出処理を示すフローチャート。
【図３】  図２のノックレベル算出処理の続きを示すフローチャート。
【図４】  図３のノックレベル算出処理の続きを示すフローチャート
【図５】  図２のステップＳ５００の処理内容を示すフローチャート。
【図６】  図２のステップＳ６００における変曲点１つの場合で筒内圧上昇中の振幅相当量の計算処理を示すフローチャート。
【図７】  図２のステップＳ６００における変曲点１つの場合で筒内圧下降中の振幅相当量の計算処理を示すフローチャート。
【図８】  図２のステップＳ７００の処理内容を示すフローチャート。
【図９】  図３のステップＳ９００の処理内容を示すフローチャート。
【図１０】  変曲点１つの場合で筒内圧上昇中の振幅相当量の計算処理を示す説明図。
【図１１】  変曲点１つの場合で筒内圧下降中の振幅相当量の計算処理を示す説明図。
【図１２】  筒内圧波形を示すグラフ。
【図１３】  図１２の筒内圧波形から抽出した振動波形を示すグラフ。
【図１４】  しきい値と振動成分の関係を示す説明図。
【図１５】  しきい値の再計算についての説明図。
【図１６】  （ａ）、（ｂ）はそれぞれブロック振動センサの出力信号を示す説明図。
【図１７】  （ａ）、（ｂ）は図１６（ａ）、（ｂ）の出力信号をそれぞれＦＦＴ処理したパワースペクトルを示すグラフ。
【図１８】  図１７で得たパワースペクトルの比較および積分を示す説明図。
【図１９】  ノック強度とノック頻度を示すグラフ。
【符号の説明】
２１…内燃機関としてのエンジン、２３…ブロック振動センサ、２４…筒内圧センサ、２５…増幅回路、２６…高速データ収録手段としての高速データロガー、２７…筒内圧解析用パソコン。
【図１】
0003821033.tif 000002
【図２】
0003821033.tif 000003
【図３】
0003821033.tif 000004
【図４】
0003821033.tif 000005
【図５】
0003821033.tif 000006
【図６】
0003821033.tif 000007
【図７】
0003821033.tif 000008
【図８】
0003821033.tif 000009
【図９】
0003821033.tif 000010
【図１０】
0003821033.tif 000011
【図１１】
0003821033.tif 000012
【図１２】
0003821033.tif 000013
【図１３】
0003821033.tif 000014
【図１４】
0003821033.tif 000015
【図１５】
0003821033.tif 000016
【図１６】
0003821033.tif 000017
【図１７】
0003821033.tif 000018
【図１８】
0003821033.tif 000019
【図１９】
0003821033.tif 000020