(57)【要約】【課題】ノックセンサからのノック信号を解析してノッキングを検出する検出装置に用いられるデジタルフィルタ処理装置での計算負荷を低減する。【解決手段】ノック信号を周期ｔ毎にＡ／Ｄ変換したサンプリングデータが順次格納される第１メモリ５ａと、該メモリ５ａ内のデータに対して、フィルタ周波数ｆが１／（ｔ×ｎ）であって、各フィルタ係数が、周波数＝ｆの三角波３周期分である基準波形を該基準波形の端からｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算を行うフィルタ処理部とを備えた装置において、フィルタ処理部は、実際には、第１メモリ５ａ内のデータのうちで、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれた３個のデータ同士を加算して第２メモリ５ｂに格納し、その第２メモリ５ｂ内のデータに対して三角波１周期分のＦＩＲ型デジタルフィルタの計算を行う。【選択図】　図１０
2004117273.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関に取り付けられたノックセンサからのアナログ信号を一定のサンプリング周期ｔ毎にＡ／Ｄ変換するＡ／Ｄ変換器と、
該Ａ／Ｄ変換器によりＡ／Ｄ変換されたデータ（以下、サンプリングデータという）を順次格納するサンプリング用メモリと、
該サンプリング用メモリに順次格納されたサンプリングデータに対して、フィルタ周波数が「１／（ｔ×ｎ）：但しｎは自然数」のＦＩＲ型デジタルフィルタであって、その各フィルタ係数が、前記フィルタ周波数と同じ周波数の１周期分のベース波形をＭ個（但しＭは自然数）つなげた基準波形を、該基準波形の端から前記サンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算を行うフィルタ処理部と、
を備えたデジタルフィルタ処理装置であって、
前記フィルタ処理部は、
前記サンプリング用メモリに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個のサンプリングデータ同士を加算して、その加算結果のデータを計算対象用メモリに格納するデータ編集手段を備えると共に、
前記計算対象用メモリに格納されたデータに対して、各フィルタ係数が、前記１周期分のベース波形を該ベース波形の端から前記サンプリング周期ｔ毎に刻んだ場合の当該ベース波形上の各点の値と同じとなるように設定された１周期分のＦＩＲ型デジタルフィルタの計算を行い、その計算結果を前記フィルタ計算の計算結果とすること、
を特徴とするデジタルフィルタ処理装置。
【請求項２】
内燃機関に取り付けられたノックセンサからのアナログ信号を一定のサンプリング周期ｔ毎にＡ／Ｄ変換するＡ／Ｄ変換器と、
該Ａ／Ｄ変換器によりＡ／Ｄ変換されたデータ（以下、サンプリングデータという）を順次格納するサンプリング用メモリと、
該サンプリング用メモリに順次格納されたサンプリングデータに対して、フィルタ周波数が「１／（ｔ×ｎ）：但しｎは自然数」のＦＩＲ型デジタルフィルタであって、その各フィルタ係数が、前記フィルタ周波数と同じ周波数の１周期分の波形であると共に前半の半周期の波形と後半の半周期の波形とが正負反転した形のベース波形をＭ個（但しＭは自然数）つなげた基準波形を、該基準波形の端から前記サンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算を行うフィルタ処理部と、
を備えたデジタルフィルタ処理装置であって、
前記フィルタ処理部は、
前記サンプリング用メモリに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個のサンプリングデータ同士を加算して、その加算結果のデータを加算データ用メモリに格納し、更に、その加算データ用メモリに格納された各データについて、そのデータと、該データの元となった各サンプリングデータよりもＡ／Ｄ変換タイミングが「ｔ×ｎ／２」だけ前のサンプリングデータ同士を加算してなるデータとの差分を求めて、その差分値のデータを計算対象用メモリに格納するデータ編集手段を備えると共に、
前記計算対象用メモリに格納されたデータに対して、各フィルタ係数が、前記ベース波形の半周期の波形を該波形の端から前記サンプリング周期ｔ毎に刻んだ場合の当該波形上の各点の値と同じとなるように設定された半周期分のＦＩＲ型デジタルフィルタの計算を行い、その計算結果を前記フィルタ計算の計算結果とすること、
を特徴とするデジタルフィルタ処理装置。
【請求項３】
請求項１又は請求項２に記載のデジタルフィルタ処理装置において、
前記データ編集手段は、
前記計算対象用メモリ内のデータを、最新のサンプリングデータに関係するもののみ更新すること、
を特徴とするデジタルフィルタ処理装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載のデジタルフィルタ処理装置において、
前記フィルタ計算における各フィルタ係数の総和は０であること、
を特徴とするデジタルフィルタ処理装置。
【請求項５】
請求項４に記載のデジタルフィルタ処理装置において、
前記アナログ信号のＡ／Ｄ変換及び前記サンプリング用メモリへのサンプリングデータの格納と、前記データ編集手段による前記計算対象用メモリへのデータの格納とは、前記サンプリング周期ｔ毎に常時連続して行われ、
前記フィルタ処理部は、前記計算対象用メモリ内のデータに対する前記ＦＩＲ型デジタルフィルタの計算を、前記内燃機関の回転に同期して設定される特定の期間中にのみ実行すること、
を特徴とするデジタルフィルタ処理装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載のデジタルフィルタ処理装置において、
前記サンプリング用メモリのサイズは、前記サンプリングデータを｛ｎ×（Ｍ−１）＋１｝個以上格納可能に設定されていること、
を特徴とするデジタルフィルタ処理装置。
【請求項７】
請求項１ないし請求項５の何れか１項に記載のデジタルフィルタ処理装置において、
前記フィルタ処理部は、前記サンプリング用メモリに順次格納されたサンプリングデータに対して、複数通りのフィルタ周波数の各フィルタ計算を夫々行うようになっており、
前記サンプリング用メモリのサイズは、前記複数のフィルタ周波数のうちで最も低いフィルタ周波数についての前記ｎの値をｎｓとすると、前記サンプリングデータを｛ｎｓ×（Ｍ−１）＋１｝個以上格納可能に設定されていること、
を特徴とするデジタルフィルタ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関のノッキングを検出する技術に関し、特に、ノッキング検出のためにノックセンサからのアナログ信号（以下、ノック信号ともいう）をＡ／Ｄ変換してデジタルフィルタ処理するデジタルフィルタ処理装置に関するものである。
【０００２】
【従来の技術】
従来より、内燃機関のノッキング検出装置として、ノック信号を一定のサンプリング周期毎にＡ／Ｄ変換すると共に、そのＡ／Ｄ変換された時系列のデータ（サンプリングデータ）を、櫛形フィルタと共振器とから構成され且つ所定の基本ウェーブレット関数とインパルス応答の等しいデジタルフィルタに入力し、該デジタルフィルタの処理結果に基づいて、ノッキングの発生を検出するものが提案されている（例えば、特許文献１参照）。
【０００３】
しかし、そのような櫛形フィルタと共振器とから構成されたデジタルフィルタでは、フィルタ処理の計算負荷が大きくなってしまう。
そこで、本発明者は、ノッキング検出用のデジタルフィルタとして、ノック信号のサンプリング周期（即ち、Ａ／Ｄ変換の時間間隔）をｔとすると、フィルタ周波数ｆが「１／（ｔ×ｎ）：ｎは自然数」のＦＩＲ型デジタルフィルタであって、その各フィルタ係数が、フィルタ周波数ｆと同じ周波数の１周期分のベース波形をＭ個（Ｍは２以上の自然数）つなげた基準波形を、該基準波形の端からサンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように設定されたＦＩＲ型デジタルフィルタを用いることを考えた（特許文献２参照）。
【０００４】
具体例を図１４に示す。尚、図１４の例では、サンプリング周期ｔの逆数であるサンプリング周波数を１１２ｋＨｚとしており、フィルタ周波数ｆをサンプリング周波数の１／８である１４ｋＨｚとしている。また、図１４において、Ａ（ｉ−ｙ）は、ｉ番目のサンプリングデータＡ（ｉ）よりもｙ個前のサンプリングデータ（即ち、Ａ（ｉ）よりも「ｔ×ｙ」だけ前にＡ／Ｄ変換されたサンプリングデータ）である。
【０００５】
図１４に例示するＦＩＲ型デジタルフィルタでは、フィルタ周波数ｆと同じ１４ｋＨｚの１周期分の三角波をベース波形として用いると共に、その三角波を３個つなげたものを基準波形とし、更に、各フィルタ係数を、その基準波形を該基準波形の端（この例では右端）からサンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値（ｈ０〜ｈ２４）と同じとなるように設定している。
【０００６】
このため、フィルタ計算値Ｆを求めるための計算式は、図１４の下部に示すものとなるが、特に、各フィルタ係数ｈ０〜ｈ２４の値は、図１４の中段右部に示すように０，０．５，１，−０．５，−１の何れかとなるため、各サンプリングデータＡ（ｉ）〜Ａ（ｉ−２４）にフィルタ係数を乗ずる乗算処理をシフト処理で実施することができ、その結果、フィルタ計算を加減算とシフト処理だけで行うことができる。
【０００７】
【特許文献１】
特許第２７６４４９５号公報
【特許文献２】
特願２００２−１３５７２８
【０００８】
【発明が解決しようとする課題】
ここで、図１４のフィルタ計算式では、各サンプリングデータに対するフィルタ係数の乗算処理をシフト処理に置き換えることができても、基本的には、ｎ×Ｍ（＝８×３＝２４）個のサンプリングデータＡ（ｉ−１）〜Ａ（ｉ−２４）とフィルタ係数ｈ１〜ｈ２４との積和演算であって、ベース波形としての三角波のＭ（＝３）周期分の積和演算を行うこととなるため、未だ処理負荷を低減すべき余地がある。
【０００９】
そこで、本発明は、ノック信号を解析してノッキングの発生を検出するノッキング検出装置に用いられるデジタルフィルタ処理装置での計算負荷を低減することを目的としている。
【００１０】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項１に記載のデジタルフィルタ処理装置は、内燃機関に取り付けられたノックセンサからのアナログ信号（ノック信号）を一定のサンプリング周期ｔ毎にＡ／Ｄ変換するＡ／Ｄ変換器と、そのＡ／Ｄ変換器によりＡ／Ｄ変換されたデータ（サンプリングデータ）を順次格納するサンプリング用メモリと、該サンプリング用メモリに順次格納されたサンプリングデータに対して、フィルタ周波数ｆが「１／（ｔ×ｎ）：但しｎは自然数」のＦＩＲ型デジタルフィルタであって、その各フィルタ係数が、フィルタ周波数ｆと同じ周波数の１周期分のベース波形をＭ個（但しＭは自然数）つなげた基準波形を、該基準波形の端からサンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算（以下、本来のフィルタ計算Ｈａという）を行うフィルタ処理部とを備えている。
【００１１】
ここで特に、請求項１のデジタルフィルタ処理装置において、フィルタ処理部は、データ編集手段を備えており、そのデータ編集手段により、サンプリング用メモリに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個のサンプリングデータ同士を加算して、その加算結果のデータを計算対象用メモリに格納する。
【００１２】
そして更に、フィルタ処理部は、その計算対象用メモリに格納されたデータに対して、各フィルタ係数が、１周期分のベース波形を該ベース波形の端からサンプリング周期ｔ毎に刻んだ場合の当該ベース波形上の各点の値と同じとなるように設定された１周期分のＦＩＲ型デジタルフィルタの計算を行い、その計算結果を前記本来のフィルタ計算Ｈａの計算結果とするようになっている。
【００１３】
つまり、請求項１のデジタルフィルタ処理装置では、本来のフィルタ計算Ｈａ（基本的にはｎ×Ｍ個のサンプリングデータとフィルタ係数との積和演算）を行う場合には、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個の各サンプリングデータに対しては同じフィルタ係数を乗ずることとなる点に着目して、本来のフィルタ計算Ｈａをそのまま行うのではなく、同じフィルタ係数が乗ぜられるべきＭ個のサンプリングデータ同士を先に加算して計算対象用メモリに格納し、その計算対象用メモリ内のデータに対して、１周期分のフィルタ計算（基本的にはｎ個のデータとフィルタ係数との積和演算）を実施するようにしている。
【００１４】
このため、本請求項１のデジタルフィルタ処理装置によれば、フィルタ係数を乗ずるための乗算回数（乗算としてのシフト処理を含む）を基本的には１／Ｍに減少させることができ、フィルタ計算の負荷を大きく低減することができる。
次に、請求項２に記載のデジタルフィルタ処理装置は、ノック信号を一定のサンプリング周期ｔ毎にＡ／Ｄ変換するＡ／Ｄ変換器と、そのＡ／Ｄ変換器によりＡ／Ｄ変換されたサンプリングデータを順次格納するサンプリング用メモリと、該サンプリング用メモリに順次格納されたサンプリングデータに対して、フィルタ周波数ｆが「１／（ｔ×ｎ）：但しｎは自然数」のＦＩＲ型デジタルフィルタであって、その各フィルタ係数が、フィルタ周波数ｆと同じ周波数の１周期分の波形であると共に前半の半周期の波形と後半の半周期の波形とが正負反転した形のベース波形をＭ個（但しＭは自然数）つなげた基準波形を、該基準波形の端からサンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算（以下、本来のフィルタ計算Ｈｂという）を行うフィルタ処理部とを備えている。つまり、請求項２のデジタルフィルタ処理装置では、フィルタ係数を決めることとなる１周期分のベース波形として、前半の半周期の波形と後半の半周期の波形とが正負反転した形の波形（換言すれば、半周期分の波形に、その波形を正負逆にした波形をつなげた１周期分の波形）を用いている。
【００１５】
ここで特に、請求項２のデジタルフィルタ処理装置において、フィルタ処理部は、データ編集手段を備えており、そのデータ編集手段により、サンプリング用メモリに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個のサンプリングデータ同士を加算して、その加算結果のデータを加算データ用メモリに格納し、更に、その加算データ用メモリに格納された各データについて、そのデータと、該データの元となった各サンプリングデータよりもＡ／Ｄ変換タイミングが「ｔ×ｎ／２」だけ前のサンプリングデータ同士を加算してなるデータとの差分を求めて、その差分値のデータを計算対象用メモリに格納する。
【００１６】
そして更に、フィルタ処理部は、その計算対象用メモリに格納されたデータに対して、各フィルタ係数が、前記ベース波形の半周期の波形を該波形の端からサンプリング周期ｔ毎に刻んだ場合の当該波形上の各点の値と同じとなるように設定された半周期分のＦＩＲ型デジタルフィルタの計算を行い、その計算結果を本来のフィルタ計算Ｈｂの計算結果とするようになっている。
【００１７】
つまり、請求項２のデジタルフィルタ処理装置では、本来のフィルタ計算Ｈｂ（基本的にはｎ×Ｍ個のサンプリングデータとフィルタ係数との積和演算）を行う場合には、▲１▼：Ａ／Ｄ変換タイミングが「ｔ×ｎ」ずつずれたＭ個の各サンプリングデータに対しては同じフィルタ係数を乗ずることとなる点と、▲２▼：Ａ／Ｄ変換タイミングが「ｔ×ｎ／２」だけずれた２個の各サンプリングデータに対しては絶対値が同じで正負が逆のフィルタ係数を乗ずることとなる点とに着目して、本来のフィルタ計算Ｈｂをそのまま行うのではなく、まず、同じフィルタ係数が乗ぜられるべきＭ個のサンプリングデータ同士を加算して加算データ用メモリに格納し、更に、その加算データ用メモリ内のデータのうち、絶対値が同じで正負が逆のフィルタ係数が夫々乗ぜられるべき２個のデータ同士の差分を求めて計算対象用メモリに格納し、その計算対象用メモリ内のデータに対して、半周期分のフィルタ計算（基本的にはｎ／２個のデータとフィルタ係数との積和演算）を実施するようにしている。
【００１８】
このため、本請求項２のデジタルフィルタ処理装置によれば、フィルタ係数を乗ずるための乗算回数（乗算としてのシフト処理を含む）を基本的には１／（２×Ｍ）に減少させることができ、フィルタ計算の負荷を大きく低減することができる。
【００１９】
次に、請求項３に記載のデジタルフィルタ処理装置では、請求項１，２のデジタルフィルタ処理装置において、データ編集手段は、計算対象用メモリ内のデータを、最新のサンプリングデータに関係するもののみ更新するようにしている。
そして、このようなデジタルフィルタ処理装置によれば、加減算の回数を最小限にすることができ、フィルタ計算の負荷を更に大幅に低減することができる。
【００２０】
次に、請求項４に記載のデジタルフィルタ処理装置では、請求項１〜３のデジタルフィルタ処理装置において、フィルタ処理部が行う本来のフィルタ計算における各フィルタ係数の総和は０であることを特徴としている。つまり、ベース波形（又は基準波形）として、当該波形をそれの端からサンプリング周期ｔ毎に刻んだ場合の当該波形上の各点の値の総和が０となる波形を用いている。
【００２１】
そして、このようなデジタルフィルタ処理装置によれば、ノック信号のＤＣ（直流）成分をキャンセルするための特別な補正計算が不要であると共に、フィルタ計算をリアルタイムに行うことができる。
この理由について説明すると、まず、一般的に、Ａ／Ｄ変換器の入力電圧範囲は０〜５Ｖであり、ノック信号は、そのＡ／Ｄ変換器の入力電圧範囲の中心値である２．５Ｖを基準に振幅するように設定される。
【００２２】
そして、このような構成において、Ａ／Ｄ変換器によるサンプリングデータに対しフィルタ計算を行う場合、ＤＣ成分を削除しなければならず、そのためには、各サンプリングデータの値から基準電圧の値（この例では２．５Ｖ）を夫々引き、その減算後の各値を用いてフィルタ計算を行うこととなる。
【００２３】
しかし、回路誤差などにより、基準電圧である２．５Ｖを正確に作ることは難しい（つまり、実際の基準電圧は２．５Ｖからずれる場合がある）。
そのため、一般的には、ノッキング検出に用いる全サンプリングデータの平均値を求め、その平均値を前記基準電圧の値として代用することとなる。
【００２４】
ところが、各サンプリングデータの値から、サンプリングデータの平均値を引くようにしたのでは、ノッキング検出に必要な全てのサンプリングデータを取り込んでからしかフィルタ計算を行うことができず、膨大な容量のメモリが必要な上に、リアルタイムにフィルタ計算を行うことができないという問題が生じてしまう。
【００２５】
これに対して、請求項４のデジタルフィルタ処理装置によれば、本来のフィルタ計算における各フィルタ係数の総和が０になっているため、リアルタイムにフィルタ計算を行えば、各サンプリングデータに含まれるＤＣ成分が自ずと互いに相殺されるのである。尚、このことは、例えば図１４の下部に示した計算式において、各サンプリングデータＡ（ｉ）〜Ａ（ｉ−２４）に一定のＤＣ値（ノック信号におけるＤＣ成分の値）が含まれていても、フィルタ係数ｈ０〜ｈ２４の総和が０であるため、結局、その各サンプリングデータ中のＤＣ値は相殺されて、フィルタ計算値Ｆには関係しないことからも明らかである。
【００２６】
次に、請求項５に記載のデジタルフィルタ処理装置では、請求項４のデジタルフィルタ処理装置において、アナログ信号のＡ／Ｄ変換及びサンプリング用メモリへのサンプリングデータの格納と、データ編集手段による計算対象用メモリへのデータの格納とが、サンプリング周期ｔ毎に常時連続して行われるようにしている。そして、これに対し、フィルタ処理部は、計算対象用メモリ内のデータに対するＦＩＲ型デジタルフィルタの計算を、内燃機関の回転に同期して設定される特定の期間中にのみ実行するようになっている。
【００２７】
このような請求項５のデジタルフィルタ処理装置によれば、計算の処理負荷を一層低減することができると共に、ＦＩＲ型デジタルフィルタの計算を実施する前記特定の期間の開始時には、計算対象用メモリ内に、計算に必要な分のデータが既に格納されていることとなるため、各サンプリングデータに含まれているＤＣ値を確実にキャンセルすることもできる。つまり、計算処理負荷の軽減とＤＣ成分のキャンセルとを両立させることができる。
【００２８】
一方、請求項１〜５のデジタルフィルタ処理装置において、サンプリング用メモリのサイズは、請求項６に記載のように、サンプリングデータを｛ｎ×（Ｍ−１）＋１｝個以上格納可能に設定しておけば良い。つまり、サンプリング用メモリのサイズの最低値は、｛ｎ×（Ｍ−１）＋１｝である。
【００２９】
また、請求項１〜５のデジタルフィルタ処理装置において、フィルタ処理部が、サンプリング用メモリに順次格納されたサンプリングデータに対して、複数通りのフィルタ周波数の各フィルタ計算を夫々行うのであれば、請求項７に記載のように、サンプリング用メモリのサイズは、複数のフィルタ周波数のうちで最も低いフィルタ周波数についての前記ｎの値をｎｓとすると、サンプリングデータを｛ｎｓ×（Ｍ−１）＋１｝個以上格納可能に設定すれば良い。
【００３０】
【発明の実施の形態】
以下、本発明が適用された実施形態について、図面を用いて説明する。
まず図１は、第１実施形態のエンジン制御装置１０の構成を表すブロック図である。尚、このエンジン制御装置１０は、６気筒のガソリン式エンジンを制御するものである。
【００３１】
図１に示すように、本実施形態のエンジン制御装置１０は、エンジンの第１気筒＃１，第３気筒＃３，及び第５気筒＃５に関するノッキングを検出するためにエンジンに取り付けられたノックセンサＳＮ１からのアナログ信号（以下、ノック信号１という）と、エンジンの第２気筒＃２，第４気筒＃４，及び第６気筒＃６に関するノッキングを検出するためにエンジンに取り付けられたノックセンサＳＮ２からのアナログ信号（以下、ノック信号２という）とが入力され、そのノック信号１，２のうちの何れか一方を選択して出力するマルチプレクサ（ＭＰＸ）３と、マルチプレクサ３から出力されるノック信号を一定のサンプリング周期ｔ毎にＡ／Ｄ変換するＡ／Ｄ変換器４と、そのＡ／Ｄ変換器４によるＡ／Ｄ変換値（サンプリングデータ）を順次入力して処理するデジタルフィルタ処理部５と、そのデジタルフィルタ処理部５によるフィルタ計算結果（以下、フィルタ結果ともいう）が格納されるＲＡＭ６と、そのＲＡＭ６に格納されたフィルタ結果からノッキングの有無を判定するＣＰＵ７と、そのＣＰＵ７による判定結果とエンジンの回転数や冷却水温等の他の運転状態とに基づいて、エンジンの点火時期や燃料噴射料を制御するエンジン制御用のＣＰＵ８とを備えている。
【００３２】
尚、デジタルフィルタ処理部５は、ＲＡＭ等からなるメモリやＣＰＵを備えたマイコンによって構成されている。また、ＲＡＭ６には、フィルタ結果が格納されるフィルタ結果レジスタの領域が、各ノックセンサＳＮ１，ＳＮ２に夫々対応して設けられており、その各領域に、ノック信号１についてのフィルタ結果とノック信号２についてのフィルタ結果とが別々に格納される。
【００３３】
次に、本実施形態では、図２に示すように、各気筒＃１〜＃６の圧縮行程上死点（以下、ＴＤＣという）のタイミング（図２において「ＴＤＣ」と記した最上段の信号の立ち下がりタイミング）を基準にして、そのＴＤＣのタイミングからある時間が経過した時点（又はあるクランク角だけ進んだ時点）から、更にある時間が経過した時点（又はあるクランク角だけ進んだ時点）までが、ゲート区間として設定される。つまり、各気筒についてノッキングが発生すると予想される期間が、ゲート区間として設定される。
【００３４】
そして、マルチプレクサ３は、各ゲート区間の終了タイミング（ゲートクローズタイミング）にて、Ａ／Ｄ変換器４へ出力するノック信号１，２を切り替えるようになっている。例えば、第１気筒＃１のゲート区間が終了するタイミングで、Ａ／Ｄ変換器４へ出力するノック信号をノック信号１からノック信号２に切り替え、第２気筒＃２のゲート区間が終了するタイミングで、Ａ／Ｄ変換器４へ出力するノック信号をノック信号２からノック信号１に切り替える。また、デジタルフィルタ処理部５は、Ａ／Ｄ変換器４からのサンプリングデータ（Ａ／Ｄ変変換値）を常時収集するが、そのサンプリングデータに対するフィルタの計算は、ゲート区間中にのみ実行するようになっている。また更に、本実施形態では、デジタルフィルタ処理部５がゲート区間中に逐次求めたフィルタ計算値が積算される。そして、その積算値に基づいて、ＣＰＵ７が、そのゲート区間に対応する気筒についてのノッキング判定を行う。
【００３５】
次に、本実施形態の特徴部分であるデジタルフィルタ処理部５について、詳しく説明する。
最初に、デジタルフィルタ処理部５で実施しているフィルタ計算の内容について説明する。
【００３６】
まず、デジタルフィルタ処理部５は、Ａ／Ｄ変換器４からのサンプリングデータに対して、複数通りのフィルタ周波数のＦＩＲ型デジタルフィルタのフィルタ計算を夫々行うようになっている。
具体的には、ノッキングが発生した際のノック信号の波形の特徴を考慮して、ノック基本波（ノッキング発生時のノック信号の基本波）の周波数（ここでは７ｋＨｚ）をフィルタ周波数としたフィルタ計算（７ｋＨｚのフィルタ計算）と、その半分の周波数である３．５ｋＨｚをフィルタ周波数としたフィルタ計算（３．５ｋＨｚのフィルタ計算）と、ノック基本波の２次高調波の周波数である１４ｋＨｚをフィルタ周波数としたフィルタ計算（１４ｋＨｚのフィルタ計算）と、ノック基本波の１．５次相当の高調波の周波数である１１．２ｋＨｚ（厳密には、７ｋＨｚ×１．６）をフィルタ周波数としたフィルタ計算（１１．２ｋＨｚのフィルタ計算）と、その半分の周波数である５．６ｋＨｚをフィルタ周波数としたフィルタ計算（５．６ｋＨｚのフィルタ計算）との各々を行う。
【００３７】
また、Ａ／Ｄ変換器４がノック信号をＡ／Ｄ変換するサンプリング周波数（即ち、サンプリング周期ｔの逆数）は、全てのフィルタ周波数（３．５ｋＨｚ，５．６ｋＨｚ，７ｋＨｚ，１１．２ｋＨｚ，１４ｋＨｚ）の公倍数であって、特に、その各フィルタ周波数の最小公倍数（＝５６ｋＨｚ）の偶数倍に設定しており、ここでは、１１２ｋＨｚ（＝２×５６ｋＨｚ＝８×１４ｋＨｚ）に設定している。
【００３８】
そして、各フィルタ計算の内容は、以下の通りである。
即ち、図３（ａ）〜（ｅ）の各々に示すように、３．５ｋＨｚ，５．６ｋＨｚ，７ｋＨｚ，１１．２ｋＨｚ，１４ｋＨｚの各フィルタ計算は、各フィルタ係数が、フィルタ周波数と同じ周波数の１周期分の三角波（ベース波形に相当）を３個つなげた基準波形を、該基準波形の端からサンプリング周期ｔ毎に刻んだ場合の当該基準波形上の各点（黒丸（●）印の点）の値と同じとなるように決定されたＦＩＲ型デジタルフィルタのフィルタ計算である。このため、例えば１４ｋＨｚのフィルタ計算の各フィルタ係数と計算式は、前述した図１４の中段及び下部に示したものとなる。
【００３９】
尚、５．６ｋＨｚと１１．２ｋＨｚの各フィルタ計算に関しては、それの計算値を１／１．２５に補正するようにしている。これは、他の周波数のフィルタ計算では、フィルタ係数の最大値が１であるのに対して、この５．６ｋＨｚと１１．２ｋＨｚのフィルタ計算では、フィルタ係数の最大値が１．２５となっているからであり、他のフィルタ計算との計算値の重みを一致させるためである。また更に、５．６ｋＨｚと３．５ｋＨｚの各フィルタ計算については、実際には、１つおきのサンプリングデータを計算対象とすることで計算負荷を効率的に減らしている。
【００４０】
また、デジタルフィルタ処理部５は、図４に示すように、Ａ／Ｄ変換器４からのサンプリングデータを順次格納するリングバッファ形式の第１メモリ５ａ（サンプリング用メモリに相当）を有しており、その第１メモリ５ａに順次格納されたサンプリングデータに対して、各フィルタ周波数のフィルタ計算を実施する。
【００４１】
尚、図４では、「α」が最新のサンプリングデータを表し、「α−１」が１回前のサンプリングデータを表し、「α−２」が２回前のサンプリングデータを表している。また、本実施形態において、１つのサンプリングデータは２バイトであり、第１メモリ５ａは、図４に示すように、１アドレス当たり２バイトの合計Ｎ個のアドレス領域からなっている。そして、本実施形態において、第１メモリ５ａのアドレス数Ｎは、５種類のフィルタ周波数のうちで最も低い３．５ｋＨｚのフィルタ周波数について図３に示した三角波３周期分のフィルタ計算を実施可能な最低値である６５に設定されている。つまり、３．５ｋＨｚの周期はサンプリング周期ｔの３２倍（＝１１２／３．５＝ｎ）であり、三角波３周分のフィルタ計算を行うためには、三角波２（＝３−１）周期分＋１個のサンプリングデータが必要であるため、Ｎ＝３２×２＋１＝６５に設定している。一方、先の説明では省略したが、ＲＡＭ６内のフィルタ結果レジスタの領域は、各ノックセンサＳＮ１，ＳＮ２毎だけでなく、更に、各フィルタ周波数毎にも設けられており、各フィルタ周波数のフィルタ結果が該当する領域に夫々格納される。そして、その各フィルタ周波数毎のフィルタ結果が夫々積算されて、ＣＰＵ７によるノッキング判定に用いられる。
【００４２】
以上が、デジタルフィルタ処理部５で実施される本来のフィルタ計算の内容であるが、本実施形態では、実際には、以下に説明する手法により、フィルタ計算の負荷を大幅に減少させている。
そこで次に、デジタルフィルタ処理部５が実際に行っている処理についてフローチャートを用いて説明する。
【００４３】
まず、図５は、Ａ／Ｄ変換器４によってノック信号がＡ／Ｄ変換される毎にデジタルフィルタ処理部５で実行されるサンプリング処理を表すフローチャートである。
このサンプリング処理の実行が開始されると、最初のステップ（以下単にＳと記す）１１０にて、今回のサンプリングデータを格納すべき第１メモリ５ａのアドレス値を示す変数であるａｄを、１インクリメント（＋１）する。また更に、このＳ１１０では、ａｄの値が第１メモリ５ａのアドレス数Ｎ（＝６５）に達したら該ａｄの値を０に戻す、といったガード処理も実施しており、これにより、ａｄの値は０〜「Ｎ−１」の間で１ずつ繰り返し更新される。
【００４４】
次に、Ｓ１２０にて、今回のサンプリングデータ（Ａ／Ｄ変換値）を第１メモリ５ａのアドレスのうち、現在のａｄの値が示すアドレスに格納する。そして、このようなＳ１１０及びＳ１２０の処理により、第１メモリ５ａのアドレス０〜「Ｎ−１」にサンプリングデータが順次且つ最新のものからさかのぼって合計６５個格納されることとなる。
【００４５】
そして次に、Ｓ１３０にて、サンプリング周波数（＝１１２ｋＨｚ）とフィルタ周波数ｆとの比（＝１１２ｋＨｚ／ｆ）を表す変数ｎを、１４ｋＨｚのフィルタ周波数に該当する８に設定して、図６に示すデータ編集処理を実行する。
その後同様に、Ｓ１４０にて、変数ｎを１１．２ｋＨｚのフィルタ周波数に該当する１０に設定して図６のデータ編集処理を実行し、Ｓ１５０にて、変数ｎを７ｋＨｚのフィルタ周波数に該当する１６に設定して図６のデータ編集処理を実行し、Ｓ１６０にて、変数ｎを５．６ｋＨｚのフィルタ周波数に該当する２０に設定して図６のデータ編集処理を実行し、Ｓ１７０にて、変数ｎを３．５ｋＨｚのフィルタ周波数に該当する３２に設定して図６のデータ編集処理を実行する。そして、その後、当該サンプリング処理を終了する。
【００４６】
次に、図６に示すように、上記Ｓ１３０〜Ｓ１７０の各々で実行されるデータ編集処理では、まずＳ２１０にて、第１メモリ５ａに格納されたサンプリングデータのうち、現在のａｄの値が示すアドレスのサンプリングデータ（即ち、今回のサンプリングデータ［ａｄ］）と、現在のａｄの値よりもｎだけ前のアドレスのサンプリングデータ（即ち、今回のサンプリングデータよりもｎ回前にＡ／Ｄ変換されたサンプリングデータ［ａｄ−ｎ］）と、現在のａｄの値よりも２ｎだけ前のアドレスのサンプリングデータ（即ち、今回のサンプリングデータよりも２ｎ回前にＡ／Ｄ変換されたサンプリングデータ［ａｄ−２ｎ］）とを加算して、その加算値をＳｕｍとして記憶する。
【００４７】
ここで、デジタルフィルタ処理部５には、第１メモリ５ａとは別に且つ各フィルタ周波数毎に第２メモリ５ｂ（計算対象用メモリに相当）が設けられている。
そこで、続くＳ２２０にて、各フィルタ周波数毎に設けられた第２メモリ５ｂのうち、変数ｎの値に該当するフィルタ周波数用の第２メモリ５ｂについて、今回のデータを格納すべきアドレス値を示す変数であるｉを１インクリメント（＋１）する。尚、ｉは各フィルタ周波数毎に設けられている変数であり、このＳ２２０では、ｉの値がｎの値に達したら該ｉの値を０に戻す、といったガード処理も実施し、これにより、ｉの値は０〜「ｎ−１」の間で１ずつ更新される。
【００４８】
次に、Ｓ２３０にて、上記Ｓ２１０で記憶した加算値Ｓｕｍを、変数ｎの値に該当するフィルタ周波数用の第２メモリ５ｂのアドレスのうち、現在のｉの値が示すアドレスに格納する。尚、図６及び以下において、ｋ（ｉ）は、第２メモリ５ｂに今回格納されたデータであり、ｋ（ｉ−ｙ）は、第２メモリ５ｂに今回のデータｋ（ｉ）よりもｙ回前に格納されたデータを示している。
【００４９】
そして、続くＳ２４０にて、ゲート区間中であるか否かを示すゲートオープンフラグＦＧＯが１であるか否かを判定し、１でなければ（０であれば）、ゲート区間中ではないと判断して、そのまま当該データ編集処理を終了する。
これに対して、ゲートオープンフラグＦＧＯが１であったならば（Ｓ２４０：ＹＥＳ）、ゲート区間中であると判断して、Ｓ２５０に進み、変数ｎの値に該当するフィルタ周波数用のフィルタ計算処理を実行する。そして、その後、当該データ編集処理を終了する。
【００５０】
次に、図７に示すように、上記２５０で実行されるフィルタ計算処理では、まずＳ３１０にて、変数ｎの値に該当するフィルタ周波数用の第２メモリ５ｂに格納されたデータに対して、変数ｎの値に該当するフィルタ周波数のフィルタ計算値Ｆを求めるための計算を行う。
【００５１】
ここで、このＳ３１０において、ｎ＝８の場合（即ち、１４ｋＨｚのフィルタ計算値Ｆを求める場合）には、下記の式１の計算を行う。
【００５２】
【数１】
2004117273.tif 000003
【００５３】
また、ｎ＝１０の場合（即ち、１１．２ｋＨｚのフィルタ計算値Ｆを求める場合）には、下記の式２の計算を行い、ｎ＝１６の場合（即ち、７ｋＨｚのフィルタ計算値Ｆを求める場合）には、下記の式３の計算を行い、ｎ＝２０の場合（即ち、５．６ｋＨｚのフィルタ計算値Ｆを求める場合）には、下記の式４の計算を行い、ｎ＝３２の場合（即ち、３．５ｋＨｚのフィルタ計算値Ｆを求める場合）には、下記の式５の計算を行う。
【００５４】
【数２】
2004117273.tif 000004
【００５５】
【数３】
2004117273.tif 000005
【００５６】
【数４】
2004117273.tif 000006
【００５７】
【数５】
2004117273.tif 000007
【００５８】
尚、上記式１は、その式１におけるｋ（ｉ）が今回のサンプリングデータであり、ｋ（ｉ−ｙ）が今回のサンプリングデータよりもｙ個前のサンプリングデータであると見なすならば、図３（ａ）に示した１４ｋＨｚの三角波３周期分のフィルタ計算（本来のフィルタ計算）を１周期分だけにしたフィルタ計算の式と同じである。つまり、式１は、各フィルタ係数が、１４ｋＨｚである１周期分の三角波を該三角波の端からサンプリング周期ｔ毎に刻んだ場合の当該三角波上の８個の各点の値と同じとなるように設定された１周期分のＦＩＲ型デジタルフィルタの計算式である。そして、このことは、ｎ＝１０，１６，２０，３２の各場合に行われる上記式２〜５の計算についても同様である。また、式４が式２と同じ内容の演算となり、式５が式３とが同じ内容の演算となっているのは、前述したように、５．６ｋＨｚと３．５ｋＨｚの各フィルタ計算では、１つおきのサンプリングデータだけを計算対象にしているからである。
【００５９】
そして、Ｓ３１０の処理が終わると、続くＳ３２０にて、上記Ｓ３１０での計算結果であるフィルタ計算値Ｆを、ＲＡＭ６内のフィルタ結果レジスタのうちで、変数ｎの値に該当するフィルタ周波数に対応したフィルタ結果レジスタ（但し、そのときにマルチプレクサ３で選択されているノックセンサに対応する方）に格納し、その後、当該フィルタ計算処理を終了する。
【００６０】
一方、デジタルフィルタ処理部５では、各気筒＃１〜＃６のＴＤＣタイミング毎に、図８のＴＤＣ処理が実行される（図２の最上段参照）。
そして、このＴＤＣ処理が開始されると、まずＳ４１０にて、そのときのエンジン回転数に基づいてゲート区間（詳しくは、ゲート区間の開始時刻であるゲートオープン時刻と終了時刻であるゲートクローズ時刻）を算出する。
【００６１】
次に、続くＳ４２０とＳ４３０との各々にて、上記Ｓ４１０で算出したゲート区間のゲートオープン時刻とゲートクローズ時刻とを内部タイマにセットし、その後、当該ＴＤＣ処理を終了する。
そして、ゲートオープン時刻が到来すると、図９（ａ）に示すゲートオープン処理が実行される（図２の最上段参照）。このゲートオープン処理では、まずＳ５１０にて、前述したゲートオープンフラグＦＧＯを１にセットし、続くＳ５２０にて、ＲＡＭ６のフィルタ結果レジスタをクリアする。つまり、今回のゲート区間で新たに逐次算出する各フィルタ周波数のフィルタ計算値をＲＡＭ６に格納するための準備をする。そして、その後、当該ゲートオープン処理を終了する。
【００６２】
また、ゲートクローズ時刻が到来すると、図９（ｂ）に示すゲートクローズ処理が実行される（図２の最上段参照）。このゲートクローズ処理では、まずＳ６１０にて、ゲートオープンフラグＦＧＯを０にリセットする。そして、続くＳ６２０にて、ＣＰＵ７に、ＲＡＭ６に格納された各フィルタ周波数のフィルタ計算結果を用いてノッキング判定を行うように依頼し、その後、当該ゲートクローズ処理を終了する。
【００６３】
以上のような本実施形態のエンジン制御装置１０におけるデジタルフィルタ処理部５では、サンプリング周波数の１／ｎ（ｎ＝８，１０，１６，２０，３２）である５通りのフィルタ周波数の各々について、ノック信号のＡ／Ｄ変換タイミング毎に図６のデータ編集処理を実行し、そのデータ編集処理のＳ２１０〜Ｓ２３０により、図１０に示す如く、第１メモリ５ａに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「サンプリング周期ｔ×ｎ」ずつずれた３個のサンプリングデータ同士を加算して、該加算結果のデータを、そのフィルタ周波数用に設けられた第２メモリ５ｂに格納するようにしている。
【００６４】
そして更に、デジタルフィルタ処理部５では、その第２メモリ５ｂに格納されたデータに対して、前述の式１〜式５の何れかで示される１周期分のＦＩＲ型デジタルフィルタの計算を行い（Ｓ３１０）、その計算結果を、三角波３周期分の本来のフィルタ計算の計算結果として、ノック判定用のＲＡＭ６（フィルタ結果レジスタ）に格納するようにしている（Ｓ３２０）。尚、図１０は、５通りのフィルタ周波数のうち、１４ｋＨｚのフィルタ計算の場合を示している。また、図１０においても、図４と同様に、「α」が最新のサンプリングデータを表し、「α−１」が１回前のサンプリングデータを表し、「α−２」が２回前のサンプリングデータを表している。
【００６５】
つまり、三角波３周期分の本来のフィルタ計算を行う場合には、Ａ／Ｄ変換タイミングが「サンプリング周期ｔ×ｎ」ずつずれた３個の各サンプリングデータ（例えば図１０の左下部において、△印で示される３つのデータ同士や、□印で示される３つのデータ同士）に対しては同じフィルタ係数を乗ずることとなるため、本実施形態のデジタルフィルタ処理部５では、基本的にはｎ×３個のサンプリングデータとフィルタ係数との積和演算となる本来のフィルタ計算をそのまま行うのではなく、同じフィルタ係数が乗ぜられるべき３個のサンプリングデータ同士を先に加算して第２メモリ５ｂに格納し、その第２メモリ５ｂ内のデータに対して、１周期分のフィルタ計算（基本的にはｎ個のデータとフィルタ係数との積和演算）を実施するようにしている。
【００６６】
このことを、１４ｋＨｚのフィルタ計算を例に挙げて、図１１を用い数式的に説明する。
まず図１１（ａ）の式は、１４ｋＨｚの本来のフィルタ計算（三角波３周期分のフィルタ計算）を表す式であって、図１４の下部に示したものと同じである。
【００６７】
そして、図１１（ｂ）の式は、図１１（ａ）の式におけるフィルタ係数ｈ０〜ｈ２４に実際の値を代入し、更に、Ａ／Ｄ変換タイミングがフィルタ周波数の１周期分（＝サンプリング周期ｔ×８）ずつずれた３個のサンプリングデータ同士であって、同じフィルタ係数が乗ぜられるサンプリングデータ同士を｛｝内にまとめたものである。
【００６８】
ここで、図１１（ｂ）における｛｝内の３個のサンプリングデータ同士の和を、図１１（ｃ）に示す如く、新しいサンプリングデータに対応するもの順にＣ（ｉ）〜Ｃ（ｉ−７）とおくと、図１１（ｂ）の式は、図１１（ｄ）のようになる。そして、その図１１（ｄ）の式は、前述した式１と同じ意味を表している。
【００６９】
そこで、本実施形態では、図１１（ｃ）のように、Ａ／Ｄ変換タイミングがフィルタ周波数の１周期分ずつずれた３個の各サンプリングデータ同士を先に加算しておき、その加算値データＣ（ｉ）〜Ｃ（ｉ−７）に対して、図１１（ｄ）の如く、１周期分のフィルタ計算を実施するようにしているのである。
【００７０】
このため、本実施形態のデジタルフィルタ処理部５によれば、フィルタ係数を乗ずるための乗算回数（乗算としてのシフト処理を含む）を基本的には１／３に減少させることができ、フィルタ計算の負荷を、特別高速でない通常のＣＰＵ（マイコン）でも余裕を持って実施できる程度にまで大きく低減することができる。尚、図１１の例では、全フィルタ係数のうち、０以外のフィルタ係数が１８個であるため、係数乗算の回数は、基本的には１８回→６回に減少するが、実際には、上記１８個のフィルタ係数の絶対値が１又は０．５の何れかであるため、係数乗算のための処理は、１／２の処理を１回行うだけで済んでいる。
【００７１】
そして更に、本実施形態のデジタルフィルタ処理部５では、第２メモリ５ｂ内のデータを、最新のサンプリングデータに関係するもののみ更新するようにしている。つまり、新しいサンプリングデータが第１メモリ５ａに格納されたら、その最新のサンプリングデータと、該データに対してＡ／Ｄ変換タイミングがフィルタ周波数の１周期分ずつずれた他の２つのサンプリングデータとを加算して、第２メモリ５ｂに格納するが、他のサンプリングデータについては加算を実施しないようにしている。
【００７２】
このため、加減算の回数も最小限にすることができ、フィルタ計算の負荷を更に大幅に低減することができる。例えば、図１１の例では、０以外のフィルタ係数が１８個であるため、本来ならば１７回の加減算が必要となるが、本実施形態によれば、第２メモリ５ｂに格納する加算値データを求めるための２回の加減算（Ｓ２１０）と、式１の計算での５回の加減算（Ｓ３１０）との、合計７回の加減算で済むこととなる。
【００７３】
また、本実施形態では、前述した図３からも明らかなように、各フィルタ周波数の本来のフィルタ計算における全フィルタ係数の総和が０になっている。
このため、ノック信号１，２に含まれているＤＣ成分をキャンセルするための特別な補正計算が不要であると共に、フィルタ計算をリアルタイムに行うことができる。つまり、本来のフィルタ計算における各フィルタ係数の総和が０になっているため、リアルタイムにフィルタ計算を行えば、各サンプリングデータに含まれるＤＣ成分が自ずと互いに相殺されるからである。
【００７４】
そして更に、本実施形態では、第１メモリ５ａへのサンプリングデータの格納（Ｓ１１０，Ｓ１２０）と第２メモリ５ｂへの加算値データの格納（Ｓ２１０〜Ｓ２３０）は、サンプリング周期ｔ毎に常時連続して実行し、第２メモリ５ｂ内のデータに対するフィルタの計算（Ｓ２５０）は、ノッキングが発生すると予想されるゲート区間中にのみ実行するようにしている（Ｓ２４０：ＹＥＳ）。
【００７５】
このため、フィルタ計算の処理負荷を一層低減することができると共に、そのフィルタの計算を実施するゲート区間の開始時には、第２メモリ５ｂ内に、フィルタ計算に必要な分のデータが既に格納されていることとなるため、各サンプリングデータに含まれているＤＣ値を確実にキャンセルすることもできる。つまり、計算処理負荷の軽減とＤＣ成分のキャンセルとを両立させることができる。
【００７６】
尚、処理負荷を更に軽減させるためには、ノック信号のＡ／Ｄ変換と第１メモリ５ａ及び第２メモリ５ｂへのデータの格納とを、常時ではなく、ゲート区間の開始タイミングよりも所定時間だけ前のタイミングであって、最も低い３．５ｋＨｚのフィルタ周波数についてフィルタ計算を実施可能な最低値である６５個のサンプリングデータを第１メモリ５ａに格納可能な時間だけ前のタイミングで開始するようにしても良い。しかし、その開始タイミングを正確に設定することは難しいため、本実施形態では、ノック信号のＡ／Ｄ変換と第１メモリ５ａ及び第２メモリ５ｂへのデータの格納とを常時実施しているのであるが、それらの処理は比較的簡単であるため、マイコンの処理負荷を特に増大させてしまうことは無い。また、それらの処理は、単純な処理であるため、ハードウェア回路で実施するように構成することもできる。
【００７７】
また、本実施形態では、２つのノック信号１，２をマルチプレクサ３により切り替えてＡ／Ｄ変換器４へ択一的に入力させるようにしているが、特に、そのノック信号１，２の切り替えを、ゲート区間の終了タイミングで行うようにしているため、次のゲート区間の開始タイミングでは、ノック信号１，２の何れか一方について、フィルタ計算に必要な数（本実施形態では６５個）のサンプリングデータが第１メモリ５ａに既に格納されている状態にすることができる。
【００７８】
尚、エンジンの高回転時には、｛「前回のゲート区間の終了タイミングから今回のゲート区間の開始タイミングまでの時間」＜「最も低い３．５ｋＨｚのフィルタ周波数についてフィルタ計算を実施可能な最低値である６５個のサンプリングデータを第１メモリ５ａに格納可能な時間」｝となってしまう場合も考えられ、この場合には、フィルタ計算対象のノック信号が不連続となってしまう（即ち、途中で切り替えられてしまう）こととなる。しかし、そのような不連続部分のノック信号はゲート区間外の振動が小さい信号であるため（図２参照）、フィルタ計算値及びノック判定に大きな影響が生じることは無い。
【００７９】
一方、上記第１実施形態において、式２と式４との各々における「１／１．２５」の補正計算処理は、その各式におけるＦ’の値を積算した後に実施しても良く、このようにすれば、計算負荷を更に軽減することができる。
また、上記第１実施形態では、デジタルフィルタ処理部５がフィルタ処理部に相当している。そして、そのデジタルフィルタ処理部５で実施される処理のうち、図６のＳ２１０〜Ｓ２３０の処理が、データ編集手段としての処理に相当している。
【００８０】
次に、第２実施形態のエンジン制御装置について説明する。
第２実施形態のエンジン制御装置は、第１実施形態のエンジン制御装置１０に対して、デジタルフィルタ処理部５が、図５のＳ１３０〜Ｓ１７０の各々で、図６のデータ編集処理に代えて図１２のデータ編集処理を実行する点と、図７のＳ３１０で行う計算の内容とが異なっている。
【００８１】
そして、図１２に示すように、本第２実施形態のデータ編集処理では、まずＳ７１０にて、図６のＳ２１０と同様に、第１メモリ５ａに格納されたサンプリングデータのうち、今回のサンプリングデータ［ａｄ］と、今回のサンプリングデータよりもｎ回前にＡ／Ｄ変換されたサンプリングデータ［ａｄ−ｎ］と、今回のサンプリングデータよりも２ｎ回前にＡ／Ｄ変換されたサンプリングデータ［ａｄ−２ｎ］とを加算して、その加算値をＳｕｍとして記憶する。
【００８２】
ここで、本第２実施形態のデジタルフィルタ処理部５には、第１メモリ５ａ及び第２メモリ５ｂとは別に且つ各フィルタ周波数毎に、第３メモリ５ｃ（加算用メモリに相当）が設けられている。
そこで、続くＳ７２０にて、各フィルタ周波数毎に設けられた第３メモリ５ｃのうち、変数ｎの値に該当するフィルタ周波数用の第３メモリ５ｃについて、今回のデータを格納すべきアドレス値を示す変数であるｊを１インクリメントする。尚、ｊは各フィルタ周波数毎に設けられている変数であり、このＳ７２０では、ｊの値が「ｎ／２＋１」の値に達したら該ｊの値を０に戻す、といったガード処理も実施し、これにより、ｊの値は０〜「ｎ／２」の間で１ずつ更新される。
【００８３】
次に、Ｓ７３０にて、上記Ｓ７１０で記憶した加算値Ｓｕｍを、変数ｎの値に該当するフィルタ周波数用の第３メモリ５ｃのアドレスのうち、現在のｊの値が示すアドレスに格納する。尚、図１２及び以下において、ｂ（ｊ）は、第３メモリ５ｃに今回格納されたデータであり、ｂ（ｊ−ｙ）は、第３メモリ５ｃに今回のデータｂ（ｊ）よりもｙ回前に格納されたデータを示している。
【００８４】
また、続くＳ７４０にて、変数ｎの値に該当するフィルタ周波数用の第２メモリ５ｂについて、今回のデータを格納すべきアドレス値を示す変数であるｉを１インクリメントする。尚、ｉは各フィルタ周波数毎に設けられている変数であり、このＳ７４０では、ｉの値が「ｎ／２」の値に達したら該ｉの値を０に戻す、といったガード処理も実施し、これにより、ｉの値は０〜「ｎ／２−１」の間で１ずつ更新される。
【００８５】
そして、続くＳ７５０にて、変数ｎの値に該当するフィルタ周波数用の第３メモリ５ｃに格納されたデータのうち、今回格納されたデータｂ（ｊ）と、そのｂ（ｊ）よりもｎ／２回前に格納されたデータｂ（ｊ−ｎ／２）との差分を算出して、その差分値｛ｂ（ｊ）−ｂ（ｊ−ｎ／２）｝を、変数ｎの値に該当するフィルタ周波数用の第２メモリ５ｂのアドレスのうち、現在のｉの値が示すアドレスに格納する。
【００８６】
そして更に、続くＳ７６０にて、ゲートオープンフラグＦＧＯが１であるか否かを判定し、１でなければ、そのまま当該データ編集処理を終了する。
これに対して、ゲートオープンフラグＦＧＯが１であったならば（Ｓ７６０：ＹＥＳ）、ゲート区間中であることから、Ｓ７７０に進み、変数ｎの値に該当するフィルタ周波数用のフィルタ計算処理（図７）を実行してから、当該データ編集処理を終了するが、本第２実施形態では、そのフィルタ計算処理（図７）のＳ３１０にて、ｎ＝８の場合には、式１から減算（−）の項を削除した式の計算を行い、ｎ＝１０の場合には、式２から減算（−）の項を削除した式の計算を行い、ｎ＝１６の場合には、式３から減算（−）の項を削除した式の計算を行い、ｎ＝２０の場合には、式４から減算（−）の項を削除した式の計算を行い、ｎ＝３２の場合には、式５から減算（−）の項を削除した式の計算を行う。
【００８７】
尚、式１から減算の項を削除した式は、その式におけるｋ（ｉ）が今回のサンプリングデータであり、ｋ（ｉ−ｙ）が今回のサンプリングデータよりもｙ個前のサンプリングデータであると見なすならば、図３（ａ）に示した１４ｋＨｚの三角波３周期分のフィルタ計算（本来のフィルタ計算）を半周期分だけにしたフィルタ計算の式と同じである。つまり、式１から減算の項を削除した式は、各フィルタ係数が、１４ｋＨｚである三角波の半周期の波形を該波形の端からサンプリング周期ｔ毎に刻んだ場合の当該波形上の４個の各点の値と同じとなるように設定された半周期分のＦＩＲ型デジタルフィルタの計算式である。そして、このことは、式２〜式５の各々から減算の項を削除した式についても同様である。
【００８８】
以上のような本第２実施形態のデジタルフィルタ処理部５では、サンプリング周波数の１／ｎ（ｎ＝８，１０，１６，２０，３２）である５通りのフィルタ周波数の各々について、ノック信号のＡ／Ｄ変換タイミング毎に図１２のデータ編集処理を実行し、そのデータ編集処理のＳ７１０〜Ｓ７５０により、図１３に示す如く、第１メモリ５ａに格納されたサンプリングデータのうちで、Ａ／Ｄ変換タイミングが「サンプリング周期ｔ×ｎ」ずつずれた３個のサンプリングデータ同士を加算して、該加算結果のデータを、そのフィルタ周波数用に設けられた第３メモリ５ｃに格納するようにしている。そして更に、その第３メモリ５ｃに格納されたデータについて、今回の格納データｂ（ｊ）と、それよりもｎ／２回前の格納データｂ（ｊ−ｎ／２）であって、ｂ（ｊ）の元となった各サンプリングデータよりもＡ／Ｄ変換タイミングが夫々「サンプリング周期ｔ×ｎ／２」だけ前の各サンプリングデータ同士を加算してなるデータｂ（ｊ−ｎ／２）との差分を求め、該差分値｛ｂ（ｊ）−ｂ（ｊ−ｎ／２）｝を、そのフィルタ周波数用に設けられた第２メモリ５ｂに格納するようにしている。
【００８９】
そして、上記第２メモリ５ｂに格納されたデータに対して、式１〜式５の各々から減算の項を削除した式の何れかで示される半周期分のＦＩＲ型デジタルフィルタの計算を行い（Ｓ３１０）、その計算結果を、三角波３周期分の本来のフィルタ計算の計算結果として、ノック判定用のＲＡＭ６（フィルタ結果レジスタ）に格納するようにしている（Ｓ３２０）。尚、図１３は、５通りのフィルタ周波数のうち、１４ｋＨｚのフィルタ計算の場合を示している。また、図１３では、第３メモリ５ｃのアドレスとして、ｂ０〜ｂ７の８個を図示しているが、１４ｋＨｚのフィルタ計算の場合、実際には、ｂ０〜ｂ４までの５個で良い。一方、図１３においても、図４と同様に、「α」が最新のサンプリングデータを表し、「α−１」が１回前のサンプリングデータを表し、「α−２」が２回前のサンプリングデータを表している。
【００９０】
つまり、三角波３周期分の本来のフィルタ計算を行う場合には、Ａ／Ｄ変換タイミングが「サンプリング周期ｔ×ｎ」ずつずれた３個の各サンプリングデータに対しては同じフィルタ係数を乗ずることとなり、また、Ａ／Ｄ変換タイミングが「サンプリング周期ｔ×ｎ／２」だけずれた２個の各サンプリングデータに対しては絶対値が同じで正負が逆のフィルタ係数を乗ずることとなるため、本第２実施形態のデジタルフィルタ処理部５では、まず、同じフィルタ係数が乗ぜられるべき３個のサンプリングデータ同士を加算して第３メモリ５ｃに格納し、更に、その第３メモリ５ｃ内のデータのうち、絶対値が同じで正負が逆のフィルタ係数が夫々乗ぜられるべき２個のデータ同士の差分を求めて第２メモリ５ｂに格納し、その第２メモリ５ｂ内のデータに対して、半周期分のフィルタ計算（基本的にはｎ／２個のデータとフィルタ係数との積和演算）を実施するようにしている。
【００９１】
このため、本第２実施形態によれば、フィルタ係数を乗ずるための乗算回数（乗算としてのシフト処理を含む）を基本的には１／（２×３）に減少させることができ、フィルタ計算の負荷を更に大きく低減することができる。そして更に、本第２実施形態においても、第２メモリ５ｂ内のデータ（延いては、第１メモリ５ａ内のデータ及び第３メモリ５ｃ内のデータも）を、最新のサンプリングデータに関係するもののみ更新するようにしているため、加減算の回数も最小限にすることができる。
【００９２】
尚、本第２実施形態の手法は、３．５ｋＨｚのフィルタ計算など、１周期分のデータ数が多い場合ほど効果的である。また、本第２実施形態では、デジタルフィルタ処理部５がフィルタ処理部に相当している。そして、そのデジタルフィルタ処理部５で実施される処理のうち、図１２のＳ７１０〜Ｓ７５０の処理が、データ編集手段としての処理に相当している。
【００９３】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記各実施形態では、ＦＩＲ型デジタルフィルタのフィルタ係数を決定する基準波形として、三角波を３個つなげたものを用いたが、その連結数Ｍは、３個に限らず、２個や４個以上であっても良い。
【００９４】
また、上記各実施形態では、フィルタの基準波形の元となるベース波形として、三角波を用いたが、そのベース波形としては、三角波以外の波形（例えばｓｉｎ波など）でも良い。
また更に、フィルタ周波数は、前述した５通りに限るものではなく、例えば１種類であっても良い。
【００９５】
一方、上記各実施形態では、ノックセンサが２個であったが、ノックセンサの数は１個であっても、３個以上であっても良い。
【図面の簡単な説明】
【図１】第１実施形態のエンジン制御装置の構成を表すブロック図である。
【図２】ゲート区間、ノック信号の切り替えタイミング、及びフィルタ計算の実施タイミングを表すタイムチャートである。
【図３】第１実施形態のデジタルフィルタ処理部が実施する本来のフィルタ計算の内容を説明する説明図である。
【図４】Ａ／Ｄ変換器によるノック信号のサンプリングデータに対して、複数通りのフィルタ周波数のフィルタ計算が各々実施されることを表すイメージ図である。
【図５】第１実施形態のデジタルフィルタ処理部で実行されるサンプリング処理を表すフローチャートである。
【図６】第１実施形態のデジタルフィルタ処理部で実行されるデータ編集処理を表すフローチャートである。
【図７】第１実施形態のデジタルフィルタ処理部で実行されるフィルタ計算処理を表すフローチャートである。
【図８】第１実施形態のデジタルフィルタ処理部で実行されるＴＤＣ処理を表すフローチャートである。
【図９】第１実施形態のデジタルフィルタ処理部で実行されるゲートオープン処理とゲートクローズ処理を表すフローチャートである。
【図１０】第１実施形態のデジタルフィルタ処理部の作用を表すイメージ図である。
【図１１】第１実施形態のデジタルフィルタ処理部の作用を数式的に表す説明図である。
【図１２】第２実施形態のデジタルフィルタ処理部で実行されるデータ編集処理を表すフローチャートである。
【図１３】第２実施形態のデジタルフィルタ処理部の作用を表すイメージ図である。
【図１４】従来技術を説明する説明図である。
【符号の説明】
ＳＮ１，ＳＮ２…ノックセンサ、３…マルチプレクサ（ＭＰＸ）、４…Ａ／Ｄ変換器、５…デジタルフィルタ処理部、５ａ…第１メモリ、５ｂ…第２メモリ、５ｃ…第３メモリ、６…ＲＡＭ、７，８…ＣＰＵ、１０…エンジン制御装置
【図１】
2004117273.tif 000008
【図２】
2004117273.tif 000009
【図３】
2004117273.tif 000010
【図４】
2004117273.tif 000011
【図５】
2004117273.tif 000012
【図６】
2004117273.tif 000013
【図７】
2004117273.tif 000014
【図８】
2004117273.tif 000015
【図９】
2004117273.tif 000016
【図１０】
2004117273.tif 000017
【図１１】
2004117273.tif 000018
【図１２】
2004117273.tif 000019
【図１３】
2004117273.tif 000020
【図１４】
2004117273.tif 000021