(57)【要約】【課題】  燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報を作成可能な燃焼圧信号処理装置を提供する。【解決手段】  燃焼圧センサからの燃焼圧信号をエンジン制御に用いる装置は、クランクセンサからの回転信号ＮＥの立ち上がり毎（ここでは１０°ＣＡ毎）に、その時の時刻を示すフリーランタイマ値を、それがどのクランク角度での値であるかを識別可能にメモリＭ１に順次記憶していく。また、点火時期を含む処理対象区間において、回転信号の立ち上がりエッジ間隔より短い一定時間毎に、燃焼圧信号をＡ／Ｄ変換し、該Ａ／Ｄ変換値とその時のフリーランタイマ値とを対応させてメモリＭ２に順次記憶していく。そして、処理対象区間が終了すると、メモリＭ２内の各フリーランタイマ値と、メモリＭ１の記憶内容とを用いて、メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度（角度値）を算出する。【選択図】  図１９
2005220796.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔毎に、該１パルス間隔を計測して、該計測値に基づき前記クランク軸が前記所定角度よりも小さい一定の微小角度回転する時間間隔を算出し、カウント値がクランク角度を表す角度カウンタを、前記算出した時間間隔でカウントアップさせるカウンタ処理手段と、
前記回転信号の１パルス間隔時間の最小値よりも短い一定時間毎にタイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、該回転信号の今回の１パルス間隔時間が把握可能な時間情報を、その時間情報がどのクランク角度からどのクランク角度までの１パルス間隔時間に該当するものであるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その時点での前記角度カウンタのカウント値と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく第２記憶処理手段と、
前記第２メモリに前記信号値と対応して記憶された前記各カウント値であって、その各信号値が取り込まれたときのクランク角度をそれぞれ表す各カウント値を、前記第１メモリ内の各時間情報を用いて補正する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項２】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その取り込み時の時刻と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく第２記憶処理手段と、
前記第２メモリに記憶された各時刻と、前記第１メモリに記憶された前記特定エッジ発生時の各時刻とから、前記第２メモリ内の前記各信号値が取り込まれたときのクランク角度を算出する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項３】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込み、該取り込んだ信号値を第２メモリに順次記憶していく第２記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が最初に出力された時刻を開始時刻記憶メモリに記憶する開始時刻記憶処理手段と、
前記開始時刻記憶メモリに記憶された時刻と、前記タイミング出力手段が前記タイミング信号を出力する時間間隔とから、前記処理対象区間において前記タイミング信号が出力された各時刻を算出する時刻算出手段と、
該時刻算出手段により算出された各時刻と、前記第１メモリに記憶された前記特定エッジ発生時の各時刻とから、前記第２メモリ内の前記各信号値が取り込まれたときのクランク角度を算出する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項４】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔毎に、該１パルス間隔を計測して、該計測値に基づき前記クランク軸が前記所定角度よりも小さい一定の微小角度回転する時間間隔を算出し、カウント値がクランク角度を表す角度カウンタを、前記算出した時間間隔でカウントアップさせるカウンタ処理手段と、
前記回転信号の１パルス間隔時間の最小値よりも短い一定時間毎にタイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、該回転信号の今回の１パルス間隔時間が把握可能な時間情報を、その時間情報がどのクランク角度からどのクランク角度までの１パルス間隔時間に該当するものであるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その時点での前記角度カウンタのカウント値と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく第２記憶処理手段と、
前記第２メモリに記憶された前記各カウント値及び信号値と、前記第１メモリ内の各時間情報とから、前記クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の前記燃焼圧信号の信号値を算出する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項５】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その取り込み時の時刻と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく第２記憶処理手段と、
前記第２メモリに記憶された前記各時刻及び信号値と、前記第１メモリに記憶された前記特定エッジ発生時の各時刻とから、前記クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の前記燃焼圧信号の信号値を算出する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項６】
エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力するタイミング出力手段と、
少なくとも前記クランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、前記回転信号に前記特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく第１記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力される毎に、前記エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込み、該取り込んだ信号値を第２メモリに順次記憶していく第２記憶処理手段と、
前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が最初に出力された時刻を開始時刻記憶メモリに記憶する開始時刻記憶処理手段と、
前記開始時刻記憶メモリに記憶された時刻と、前記タイミング出力手段が前記タイミング信号を出力する時間間隔とから、前記処理対象区間において前記タイミング信号が出力された各時刻を算出する時刻算出手段と、
該時刻算出手段により算出された各時刻及び前記第２メモリに記憶された各信号値と、前記第１メモリに記憶された前記特定エッジ発生時の各時刻とから、前記クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の前記燃焼圧信号の信号値を算出する演算処理を行う演算処理手段と、
を備えていることを特徴とする燃焼圧信号処理装置。
【請求項７】
請求項２又は請求項５に記載の燃焼圧信号処理装置において、
前記第２記憶処理手段が複数の燃焼圧信号の信号値を取り込むための手段として、前記タイミング出力手段から前記タイミング信号が出力されると、前記複数の燃焼圧信号を順次切り替えてＡ／Ｄ変換するＡ／Ｄ変換手段を備え、
前記第２記憶処理手段は、前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力されると、前記Ａ／Ｄ変換手段による前記各燃焼圧信号のＡ／Ｄ変換値を該各燃焼圧信号の信号値として取り込むと共に、前記タイミング信号出力時の時刻を前記取り込み時の時刻として、該時刻と今回取り込んだ各燃焼圧信号の信号値とを対応させて前記第２メモリに記憶し、
前記演算処理手段は、前記各燃焼圧信号について前記演算処理を行うと共に、前記Ａ／Ｄ変換手段がＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の燃焼圧信号については、前記Ａ／Ｄ変換手段が１つの燃焼圧信号をＡ／Ｄ変換するのに要する時間をＴａｄとすると、前記タイミング信号が出力された時毎に前記第２メモリに記憶された各時刻に代えて、その各時刻に「Ｔａｄ×（ｎ−１）」を加えた各時刻を用いて前記演算処理を行うこと、
を特徴とする燃焼圧信号処理装置。
【請求項８】
請求項３又は請求項６に記載の燃焼圧信号処理装置において、
前記第２記憶処理手段が複数の燃焼圧信号の信号値を取り込むための手段として、前記タイミング出力手段から前記タイミング信号が出力されると、前記複数の燃焼圧信号を順次切り替えてＡ／Ｄ変換するＡ／Ｄ変換手段を備え、
前記第２記憶処理手段は、前記処理対象区間において、前記タイミング出力手段から前記タイミング信号が出力されると、前記Ａ／Ｄ変換手段による前記各燃焼圧信号のＡ／Ｄ変換値を該各燃焼圧信号の信号値として取り込んで、その各燃焼圧信号の信号値を同じタイミングでのデータとして前記第２メモリに記憶し、
前記演算処理手段は、前記各燃焼圧信号について前記演算処理を行うと共に、前記Ａ／Ｄ変換手段がＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の燃焼圧信号については、前記Ａ／Ｄ変換手段が１つの燃焼圧信号をＡ／Ｄ変換するのに要する時間をＴａｄとすると、前記時刻算出手段により算出された各時刻に代えて、その各時刻に「Ｔａｄ×（ｎ−１）」を加えた各時刻を用いて前記演算処理を行うこと、
を特徴とする燃焼圧信号処理装置。
【請求項９】
請求項１ないし請求項８の何れか１項に記載の燃焼圧信号処理装置において、
前記タイミング出力手段が前記タイミング信号を出力する時間間隔は、前記クランク軸の回転速度に反比例して設定されると共に、前記処理対象区間中は変更されないこと、
を特徴とする燃焼圧信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンを制御する技術に関し、特にエンジンのシリンダ内の圧力を検出するための燃焼圧センサから出力される燃焼圧信号を処理する技術に関するものである。
【背景技術】
【０００２】
従来より、エンジン制御の分野においては、エンジンのシリンダヘッド側に燃焼室（シリンダ）内の圧力を検出するための燃焼圧センサ（燃焼室圧センサとも呼ばれる）を設け、そのセンサからの燃焼圧信号を燃焼１サイクル中の所定の複数点で取り込こんで、燃焼割合（燃焼１サイクルで燃焼する燃料に対するあるクランク角度までに燃焼した燃料の割合）を算出し、その算出した燃焼割合を用いて点火時期や空燃比を制御することが知られている（例えば、特許文献１参照）。
【０００３】
しかし、燃焼圧センサからの燃焼圧信号は、燃焼割合の他にも、失火検出、ノック検出、吸入空気量検出、点火した気筒の判別など、色々な情報検出のために用いることができる。例えば、点火後の燃焼圧信号のクランク角度に応じた立ち上がり状態によって、正常に点火したか失火しかたを判定することができ、また、燃焼圧信号に対してデジタルフィルタ処理を行うことで、ノッキングの有無を判定することができる。
【０００４】
その際、燃焼圧信号を、上記燃焼割合を算出するのに必要なまばらなタイミングだけでなく、波形をトレースするようなもっと細かいタイミングでＡ／Ｄ変換して信号値を得ることが望ましい。
【０００５】
そこで、例えば、１°ＣＡ毎（エンジンのクランク軸が１°回転する毎）程度の細かいタイミングで燃焼圧信号の信号値を取り込むようにすることが考えられる。尚、「ＣＡ」とは、クランクアングルを意味している。
【０００６】
一方、エンジン制御装置では、エンジンのクランク軸の回転に同期して燃料噴射弁や点火装置等を作動させるが、例えば特許文献２に記載されているように、クランクセンサより出力されてクランク軸が所定角度回転する毎（一般には１０°ＣＡ毎）にパルスエッジが発生する回転信号（クランク信号とも呼ばれる）から、その回転信号を逓倍した逓倍クロック（詳しくは、周期が回転信号の周期の逓倍数分の１であるクロック）を生成すると共に、その逓倍クロックの時間間隔で、カウント値がクランク角度を表す角度カウンタをカウントアップさせ、その角度カウンタのカウント値に基づきエンジン回転に同期した制御を行うようにしたものがある。このようにすることで、元の回転信号よりも細かい「１／逓倍数」の分解能でクランク角度を把握できるようにしているのである。
【０００７】
そして、上記逓倍クロックを生成するための手段は、回転信号に上記所定角度毎のパルスエッジ（以下、特定エッジという）が発生してから該特定エッジが次に発生するまでの１パルス間隔（つまり、所定角度間隔）毎に、その１パルス間隔を計測するエッジ時間計測カウンタと、回転信号に特定エッジが発生すると上記エッジ時間計測カウンタによる今回の計測値を逓倍数Ｎで除算した値がセットされるエッジ時間記憶レジスタと、そのエッジ時間記憶レジスタに記憶された時間毎に、逓倍クロックとしてのパルスを発生させる逓倍カウンタとから構成される。つまり、今回計測した回転信号の１パルス間隔時間に基づいて、回転信号に次の特定エッジが発生するまでの逓倍クロックの周期を決定している。
【０００８】
そして更に、この種のエンジン制御装置では、回転信号の特定エッジ毎に、次の特定エッジのタイミングで角度カウンタがとるべき値の１つ前の値をガード値として設定し、エンジンが急に加減速した場合でも、回転信号の次の特定エッジで角度カウンタの値が正しい値となるようにしている。
【０００９】
例えば、回転信号を３２逓倍した逓倍クロックで角度カウンタをカウントアップする場合（逓倍数が３２である場合）を例に挙げると、図２９において、回転信号ＮＥの今回のパルス間隔「Ｔｎ」では、前回のパルス間隔「Ｔｎ-1」を３２分の１にした時間毎に角度カウンタが１ずつカウントアップされることとなる。
【００１０】
よって、エンジン回転が一定ならば、回転信号のどのパルス間でも、角度カウンタは一定の時間間隔でカウントアップされることとなる。例えば、回転信号の特定エッジ（この例では立ち上がりエッジ）が１０°ＣＡ毎に発生する場合、３２逓倍しているため、角度カウンタは０．３１２５°ＣＡを分解能（ＬＳＢ）としてカウントアップされることになる。
【００１１】
ここで、エンジンが急に加速して回転信号のパルス間隔が短くなった場合には、角度カウンタが３２カウントする前（カウント値が３２だけ増加する前）に、回転信号の次の特定エッジが発生してしまうため、何も処置をしないとカウント値が小さめにずれてしまう。また、エンジンが急に減速して回転信号のパルス間隔が長くなった場合においても、何ら処置をしないと、カウント値が大きめにずれてしまう。
【００１２】
そこで、従来のエンジン制御装置では、図３０に示す如く、回転信号ＮＥの特定エッジ毎に、角度カウンタのカウント値に対するガード値を設定し、「Ｔｎ」の期間のような急加速時には、次の特定エッジタイミング（「Ｔｎ+1」の開始タイミング）で、角度カウンタを逓倍クロックよりも周期が非常に短い内部クロックである最速クロックで強制的にカウントアップさせることにより、その角度カウンタの値を正しいガード値へと瞬時に変化させるようにしている。また、「Ｔｎ-1」の期間のような急減速時には、角度カウンタがガード値に到達すると、回転信号に次の特定エッジが発生するまでカウントアップを止めるようにしている。
【００１３】
以上のことから、燃焼圧センサからの燃焼圧信号を例えば１°ＣＡ毎といった細かいタイミングで取り込んでエンジンの制御に用いようとした場合、その燃焼圧信号の取り込みタイミングは、上記のように回転信号を逓倍した逓倍クロックでカウントアップされる角度カウンタのカウント値に基づいて発生させることが考えられる。例えば、角度カウンタの値が１°ＣＡに相当する値だけ進む毎に、燃焼圧信号をＡ／Ｄ変換してそのＡ／Ｄ変換値を取り込む、といった処理を行えば良い。
【特許文献１】特開平９−２７３４３７号公報
【特許文献２】特開２００１−２００７４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ところが、燃焼圧信号の取り込みタイミングを逓倍クロックでカウントアップされる角度カウンタのカウント値から発生させる手法では、次のような問題が発生する。
尚、ここでは、図３１に示すように、回転信号ＮＥには１０°ＣＡ毎に立ち上がりエッジが発生すると共に、その回転信号ＮＥを逓倍した逓倍クロックによってカウントアップされる角度カウンタのカウント値が１°ＣＡに相当する値だけ進む毎に、燃焼圧信号をＡ／Ｄ変換してそのＡ／Ｄ変換値を取り込む場合を例に挙げる。また、図３１における「角度カウンタ上位」とは、角度カウンタにおいて１０°ＣＡの位のビットよりも上位のビット（即ち、ＬＳＢが１０°ＣＡであるカウンタ部分）であり、図３１における「角度カウンタ下位」とは、角度カウンタにおいて角度カウンタ上位よりも下位のビットであって、ＬＳＢが「１０°ＣＡ／逓倍数」であるカウンタ部分である。そして、図３１における「波形Ａ」は、角度カウンタの値が１°ＣＡに相当する値だけ進む毎に、燃焼圧信号をＡ／Ｄ変換してそのＡ／Ｄ変換値を取り込んだ場合の、その各Ａ／Ｄ変換値を示している。一方、この図３１では、見やすさを優先して、逓倍数が１０（つまり、角度カウンタのＬＳＢが１°ＣＡ）であるものとして図示しているが、逓倍数は、実際には２５６や１０２４等、もっと大きい値に設定される。
【００１５】
まず、図３１にて角度カウンタ上位の値が２００になっている期間（つまり、２００°ＣＡ〜２１０°ＣＡの１０°ＣＡ分の期間）に示すように、エンジンが急に加速して回転信号ＮＥのパルス間隔が前回よりも短くなった場合には、本来ならばその１０°ＣＡ分の期間内に１°ＣＡ毎のタイミングが１０回発生しなければならないのに、その発生回数が１０回よりも少なくなってしまう。このため、燃焼圧信号の取り込み回数が少なくなってしまい、図３１における「波形Ｂ」に示す如く、取り込んだ燃焼圧信号のＡ／Ｄ変換値を一定のクランク角度毎（この例では１°ＣＡ毎）にプロットした場合に、データが無い領域が生じてしまう。
【００１６】
また、図３１にて角度カウンタ上位の値が２１０になっている期間（つまり、２１０°ＣＡ〜２２０°ＣＡの１０°ＣＡ分の期間）に示すように、エンジンが急に減速して回転信号ＮＥのパルス間隔が前回よりも長くなった場合には、回転信号ＮＥが立ち上がってから１°ＣＡ毎のタイミングが９回発生した後、次に回転信号ＮＥが立ち上がるまで、１°ＣＡ毎のタイミングが発生しなくなる。このため、燃焼圧信号の取り込みが休止される期間が発生してしまい、図３１における「波形Ｂ」に示す如く、取り込んだ燃焼圧信号のＡ／Ｄ変換値を一定のクランク角度毎（この例では１°ＣＡ毎）にプロットした場合に、データ値が急に飛んでしまうところが生じてしまう。
【００１７】
このように、回転信号を逓倍した逓倍クロックでカウントアップされる角度カウンタの値に基づいて燃焼圧信号の取り込みタイミングを発生させる手法では、エンジンの加減速により、燃焼圧信号値のデータ抜けやデータ飛びが生じてしまうのである。
【００１８】
そして、そもそも、上記の手法では、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできるデータを得ることができなかった。
つまり、上記の手法でも、角度カウンタの値が常に正確にクランク角度を表すのであれば、取り込まれる燃焼圧信号の各Ａ／Ｄ変換値は、クランク軸が一定の微小角度（図３１の例では１°）回転したとき毎の本当のデータとなる（換言すれば、各Ａ／Ｄ変換値がどのクランク角度でのデータかが正確なものとなる）。
【００１９】
しかし、実際には、角度カウンタをカウントアップさせる逓倍クロックの周期は回転信号の前回の１パルス間隔から予測算出されるものであるため、エンジンの回転速度が急に変化した場合には、角度カウンタの値に誤差が生じることとなり、その結果、取り込まれる燃焼圧信号の各Ａ／Ｄ変換値は、クランク軸が一定の微小角度回転したとき毎の本当のデータとはならない。これは、図３１の「波形Ａ」からも分かる。このため、そのようなデータからでは、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することができなくなってしまうのである。
【００２０】
また、上記の手法では、取得される各Ａ／Ｄ変換値が一定時間毎のデータでは無いため、ノック検出（ノッキングの有無の判定）用のデジタルフィルタ処理を実施することができないという欠点もある。
【００２１】
本発明は、以上のような問題に鑑みなされたものであり、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報を作成可能な燃焼圧信号処理装置の提供を目的としている。
【課題を解決するための手段】
【００２２】
上記目的を達成するためになされた請求項１の燃焼圧信号処理装置では、カウンタ処理手段が、エンジンのクランク軸が所定角度回転する毎にパルスエッジが発生する回転信号に前記所定角度毎のパルスエッジである特定エッジが発生してから該特定エッジが次に発生するまでの１パルス間隔毎に、該１パルス間隔を計測して、その計測値に基づきクランク軸が前記所定角度よりも小さい一定の微小角度回転する時間間隔を算出し、カウント値がクランク角度を表す角度カウンタを、その算出した時間間隔でカウントアップさせる。
【００２３】
また、タイミング出力手段が、回転信号の１パルス間隔時間の最小値よりも短い一定時間毎にタイミング信号を出力する。
そして、第１記憶処理手段が、少なくともクランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、回転信号に特定エッジが発生する毎に、該回転信号の今回の１パルス間隔時間が把握可能な時間情報を、その時間情報がどのクランク角度からどのクランク角度までの１パルス間隔時間に該当するものであるかを識別可能となるように第１メモリに順次記憶していく。
【００２４】
また、第２記憶処理手段が、前記処理対象区間において、タイミング出力手段からタイミング信号が出力される毎に、エンジンのシリンダ内圧力を検出する燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その時点での角度カウンタのカウント値と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく。
【００２５】
そして、演算処理手段が、第２メモリに燃焼圧信号の各信号値と対応して記憶された各カウント値であって、その各信号値が取り込まれたときのクランク角度をそれぞれ表す角度カウンタの各カウント値を、第１メモリ内の各時間情報を用いて補正する演算処理を行う。
【００２６】
つまり、カウンタ処理手段が角度カウンタをカウントアップさせる周期は、回転信号の前回の１パルス間隔から算出されるものであるため、エンジンの回転速度が急に変化した場合には、角度カウンタのカウント値に誤差が生じてしまう。一方、第１記憶処理手段によって第１メモリに記憶された各時間情報を見れば、処理対象区間において回転信号に特定エッジが発生した時の所定角度毎の各クランク角度タイミングについて、どのクランク角度からどのクランク角度までの時間がどれだけであったかを知ることができる。そこで、本装置では、第２記憶処理手段によって第２メモリに記憶された角度カウンタの各カウント値を、処理対象区間が終了した後に、第１メモリに記憶しておいた各時間情報を用いて正しい値に補正するようにしている。
【００２７】
このような請求項１の燃焼圧信号処理装置によれば、下記（１）〜（５）の効果が得られる。
（１）演算処理手段によって補正された後の各カウント値は、第２メモリ内の各信号値が取り込まれたときのクランク角度を、回転速度の変動に影響されることなく正確に表すものとなる。このため、第２メモリ内の各信号値と補正後の各カウント値とからなる情報は、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報となる。
【００２８】
（２）第２メモリ内の各信号値を、補正後の各カウント値に基づいて、例えば横軸をクランク角度としてプロットした場合、図３１の「波形Ｂ」に示したように、データが横軸の広い範囲で無くなってしまったり、データ値が急に変化するデータ飛びが生じたりすることがない。このため、そのデータをエンジン制御に用いた場合に、制御状態の急変を招く心配がない。
【００２９】
（３）演算処理手段による演算処理は、処理対象区間が終了してから１回行うだけで良く、例えばエンジンの気筒の１行程当たりに１回行えば良いため、ＣＰＵなどの処理負荷を軽減することができる。
【００３０】
（４）第２メモリに記憶される燃焼圧信号の各信号値は、一定時間毎に取り込んだデータであるため、ノック検出用のデジタルフィルタ処理にも使用することができる。
つまり、本燃焼圧信号処理装置をエンジン制御装置に適用した場合、第２メモリに記憶された燃焼圧信号の各信号値は、クランク角度に依存する失火検出などの処理（即ち、どのクランク角度でのデータであるかが分かることが必要な処理）と、時間に依存するノック検出用デジタルフィルタなどの処理（即ち、一定時間毎のデータであることが必要な処理）との、両方に使用することができる。
【００３１】
（５）本燃焼圧信号処理装置をエンジン制御装置に設けた場合、次のように構成することで、制御精度を向上させることができる。
まず、複数通りのクランク角度毎についてエンジン制御に使用する制御係数を記憶したデータマップを用意しておく。
【００３２】
そして、そのデータマップから、演算処理手段によって補正された後の各カウント値が表すクランク角度に対応する制御係数を算出し、その各制御係数と第２メモリに記憶された燃焼圧信号の各信号値とを用いて、エンジン制御を行う。
【００３３】
つまり、前述したように、演算処理手段によって補正された後の各カウント値は、第２メモリ内の各信号値が取り込まれたときのクランク角度を正確に表すものとなるため、上記の手順で算出される制御係数は、第２メモリに記憶された各信号値に正確に対応したものとなり、そのような制御係数と各信号値とを用いてエンジン制御を行うことで、制御精度が向上するのである。
【００３４】
例えば、制御係数が燃焼圧信号の信号値に対する補正値であるならば、第２メモリに記憶された各信号値に対する正しい補正値をデータマップから算出して、その各信号値を精度良く補正することができるようになる。
【００３５】
また例えば、制御係数が燃焼圧信号の信号値と大小比較される目標値であるならば、第２メモリに記憶された各信号値に対する正しい目標値をデータマップから算出して、その各信号値と目標値との大小関係を正しく判定できるようになる。
【００３６】
次に、請求項２の燃焼圧信号処理装置においても、タイミング出力手段が、回転信号に所定角度毎のパルスエッジである特定エッジが発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力する。
【００３７】
そして、この燃焼圧信号処理装置では、第１記憶処理手段が、少なくともクランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、回転信号に特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく。
【００３８】
また、第２記憶処理手段が、前記処理対象区間において、タイミング出力手段からタイミング信号が出力される毎に、燃焼圧センサからの燃焼圧信号の信号値を取り込むと共に、その取り込み時の時刻と該取り込んだ信号値とを対応させて第２メモリに順次記憶していく。
【００３９】
そして、演算処理手段が、第２メモリに記憶された各時刻と、第１メモリに記憶された特定エッジ発生時の各時刻とから、第２メモリ内の各信号値が取り込まれたときのクランク角度を算出する。
【００４０】
つまり、第１記憶処理手段によって第１メモリに記憶された各時刻を見れば、処理対象区間において回転信号に特定エッジが発生した時の時刻とクランク角度とを知ることができる。そこで、本装置では、第２メモリに記憶された各時刻に該当するクランク角度を、第１メモリの記憶内容から把握される特定エッジ発生時の時刻及びクランク角度から算出するようにしている。換言すれば、第２メモリに記憶された各時刻を、第１メモリの記憶内容を用いてクランク角度に換算している。
【００４１】
このような請求項２の燃焼圧信号処理装置によっても、演算処理手段によって算出される各カウント値は、第２メモリ内の各信号値が取り込まれたときのクランク角度を、回転速度の変動に影響されることなく正確に表すものとなる。このため、第２メモリ内の各信号値と算出された各カウント値とからなる情報は、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報となる。つまり、上記（１）と同じ効果が得られる。
【００４２】
そして更に、この請求項２の燃焼圧信号処理装置によっても、請求項１の装置について述べた（２）〜（５）と同じ効果を得ることができる。
尚、上記（２）については、第２メモリ内の各信号値を、演算処理手段によって算出された各カウント値に基づいてプロットしたイメージとなる。また、上記（５）については、前述のデータマップから、演算処理手段によって算出された各カウント値が表すクランク角度に対応する制御係数を算出して、その各制御係数と第２メモリに記憶された燃焼圧信号の各信号値とを用いて、エンジン制御を行うようにすれば良い。
【００４３】
しかも、この請求項２の燃焼圧信号処理装置によれば、カウンタ処理手段が無くても、請求項１の装置と同様の効果を得ることができ有利である。
次に、請求項３の燃焼圧信号処理装置においても、タイミング出力手段が、回転信号に所定角度毎の特定エッジが発生してから該特定エッジが次に発生するまでの１パルス間隔時間の最小値よりも短い一定時間毎に、タイミング信号を出力し、第１記憶処理手段が、少なくともクランク軸が所定の情報収集開始角度からある角度回転するまでの処理対象区間において、回転信号に特定エッジが発生する毎に、その時の時刻を、該時刻がどのクランク角度での時刻であるかを識別可能に第１メモリに順次記憶していく。
【００４４】
そして、請求項３の燃焼圧信号処理装置では、第２記憶処理手段が、前記処理対象区間において、タイミング出力手段からタイミング信号が出力される毎に、燃焼圧センサからの燃焼圧信号の信号値を取り込み、その取り込んだ信号値を第２メモリに順次記憶していく。
【００４５】
また、開始時刻記憶処理手段が、処理対象区間において、タイミング出力手段からタイミング信号が最初に出力された時刻を開始時刻記憶メモリに記憶する。
そして、時刻算出手段が、開始時刻記憶メモリに記憶された時刻と、タイミング出力手段がタイミング信号を出力する時間間隔とから、処理対象区間においてタイミング出力手段によりタイミング信号が出力された各時刻を算出し、演算処理手段が、その時刻算出手段により算出された各時刻と、第１メモリに記憶された特定エッジ発生時の各時刻とから、第２メモリ内の各信号値が取り込まれたときのクランク角度を算出する。
【００４６】
つまり、請求項３の燃焼圧信号処理装置は、請求項２の装置と比較すると、処理対象区間において燃焼圧信号の信号値を取り込んだ各時刻を、第２メモリに信号値とセットで記憶させていくのではなく、処理対象区間にてタイミング出力手段からタイミング信号が最初に出力された時刻と、タイミング出力手段がタイミング信号を出力する時間間隔とから、算出するようにしている。
【００４７】
このため、請求項３の燃焼圧信号処理装置によれば、処理対象区間中に第２メモリへ各時刻を記憶していかなくても、請求項２の装置と同じ効果を得ることができる。
一方、請求項４の燃焼圧信号処理装置では、請求項１の燃焼圧信号処理装置と比較して、演算処理手段のみ異なっており、その演算処理手段は、第２メモリに記憶された各カウント値及び信号値と、第１メモリ内の各時間情報とから、クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の燃焼圧信号の信号値を算出する。
【００４８】
また、請求項５の燃焼圧信号処理装置では、請求項２の燃焼圧信号処理装置と比較して、演算処理手段のみ異なっており、その演算処理手段は、第２メモリに記憶された各時刻及び信号値と、第１メモリに記憶された特定エッジ発生時の各時刻とから、クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の燃焼圧信号の信号値を算出する。
【００４９】
同様に、請求項６の燃焼圧信号処理装置では、請求項３の燃焼圧信号処理装置と比較して、演算処理手段のみ異なっており、その演算処理手段は、時刻算出手段により算出された各時刻及び第２メモリに記憶された各信号値と、第１メモリに記憶された特定エッジ発生時の各時刻とから、クランク軸が前記所定角度よりも小さい一定角度回転したとき毎の燃焼圧信号の信号値を算出する。
【００５０】
このような請求項４〜６の燃焼圧信号処理装置によれば、回転信号に特定エッジが発生する角度間隔よりも小さい一定クランク角度毎の燃焼圧信号の各信号値が正確に得られる。よって、そのような一定クランク角度毎の燃焼圧信号値が必要なエンジン制御の精度を向上させることができる。また、請求項４の装置における演算処理手段を請求項１の装置に、請求項５の装置における演算処理手段を請求項２の装置に、請求項６の装置における演算処理手段を請求項３の装置に、それぞれ追加するようにしても良い。
【００５１】
次に、請求項７の燃焼圧信号処理装置では、請求項２又は５の燃焼圧信号処理装置において、第２記憶処理手段が複数の燃焼圧信号の信号値を取り込むための手段として、Ａ／Ｄ変換手段を備えており、そのＡ／Ｄ変換手段は、タイミング出力手段からタイミング信号が出力されると、複数の燃焼圧信号を順次切り替えてＡ／Ｄ変換する。
【００５２】
そして、第２記憶処理手段は、処理対象区間において、タイミング出力手段からタイミング信号が出力されると、Ａ／Ｄ変換手段による各燃焼圧信号のＡ／Ｄ変換値を該各燃焼圧信号の信号値として取り込むと共に、タイミング信号出力時の時刻を信号値取り込み時の時刻として、その時刻と今回取り込んだ各燃焼圧信号の信号値とを対応させて第２メモリに記憶するようになっている。
【００５３】
そして更に、演算処理手段は、複数の各燃焼圧信号について前記演算処理を行うが、特に、Ａ／Ｄ変換手段がＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の燃焼圧信号については、Ａ／Ｄ変換手段が１つの燃焼圧信号をＡ／Ｄ変換するのに要する時間をＴａｄとすると、タイミング信号が出力された時毎に第２メモリに記憶された各時刻に代えて、その各時刻に「Ｔａｄ×（ｎ−１）」を加えた各時刻を用いて前記演算処理を行う。
【００５４】
このような請求項７の燃焼圧信号処理装置によれば、１つのＡ／Ｄ変換手段を使用して複数の燃焼圧信号を取り込む構成でありながら、その各燃焼圧信号についての演算処理結果を正確なものにすることができる。
【００５５】
つまり、請求項２又は５の燃焼圧信号処理装置における演算処理は、第２メモリに記憶された各時刻が燃焼圧信号の取り込み時刻であるとして行われるものであるが、複数の燃焼圧信号を１つのＡ／Ｄ変換手段により順次切り替えてＡ／Ｄ変換する場合、Ａ／Ｄ変換される順番が最初ではないｎ（ｎ≧２）番目の燃焼圧信号については、それのＡ／Ｄ変換タイミング（即ち、実際の信号値の取り込みタイミング）が、第２メモリに記憶される時刻よりも「Ｔａｄ×（ｎ−１）」だけ遅れたものとなってしまう。
【００５６】
そこで、請求項７の装置では、そのｎ番目の燃焼圧信号については、第２メモリに記憶された各時刻に代えて、その各時刻に「Ｔａｄ×（ｎ−１）」を加えた各時刻を用いて演算処理を行うことにより、より正確な演算処理結果（請求項２ではクランク角度であり、請求項５では信号値）が得られるようにしているのである。
【００５７】
同様に、請求項８の燃焼圧信号処理装置では、請求項３又は６の燃焼圧信号処理装置において、第２記憶処理手段が複数の燃焼圧信号の信号値を取り込むための手段として、Ａ／Ｄ変換手段を備えており、そのＡ／Ｄ変換手段は、タイミング出力手段からタイミング信号が出力されると、複数の燃焼圧信号を順次切り替えてＡ／Ｄ変換する。
【００５８】
そして、第２記憶処理手段は、処理対象区間において、タイミング出力手段からタイミング信号が出力されると、Ａ／Ｄ変換手段による各燃焼圧信号のＡ／Ｄ変換値を該各燃焼圧信号の信号値として取り込んで、その各燃焼圧信号の信号値を同じタイミングでのデータとして第２メモリに記憶するようになっている。
【００５９】
そして更に、演算処理手段は、複数の各燃焼圧信号について前記演算処理を行うが、特に、Ａ／Ｄ変換手段がＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の燃焼圧信号については、Ａ／Ｄ変換手段が１つの燃焼圧信号をＡ／Ｄ変換するのに要する時間をＴａｄとすると、時刻算出手段により算出された各時刻に代えて、その各時刻に「Ｔａｄ×（ｎ−１）」を加えた各時刻を用いて前記演算処理を行う。
【００６０】
このような請求項８の燃焼圧信号処理装置によれば、請求項７の装置について述べた効果と同じ効果が得られる。
次に、請求項９の燃焼圧信号処理装置では、請求項１〜８の燃焼圧信号処理装置において、タイミング出力手段がタイミング信号を出力する時間間隔が、クランク軸の回転速度（エンジンの回転速度）に反比例して設定されると共に、処理対象区間中は変更されないようになっている。
【００６１】
この構成によれば、燃焼圧信号値の取り込み間隔がエンジンの低回転時には長く、高回転時には短く設定されることとなる。つまり、エンジン回転数に拘わらず、一定のクランク角度相当の時間毎に燃焼圧信号値を取り込むことができ、エンジンの運転状態を検出し易いデータが常に得られることとなる。
【発明を実施するための最良の形態】
【００６２】
以下に、本発明の燃焼圧信号処理装置が適用された実施形態のエンジン制御装置について説明する。尚、ここでは、４気筒エンジンを制御するものとする。
まず図１に示すように、第１本実施形態のエンジン制御装置１１には、周知のＣＰＵ１３と、一定周波数の内部クロックによって常時カウントアップされるフリーランタイマ１５と、ＣＰＵ１３によって設定される一定時間毎にタイミング信号を出力するタイミング発生器１７と、第１メモリＭ１、第２メモリＭ２、及び第３メモリＭ３と、各気筒＃１〜＃４のシリンダ内圧力を検出する燃焼圧センサＰ１〜Ｐ４からの燃焼圧信号をＡ／Ｄ変換するＡ／Ｄ変換器１９と、そのＡ／Ｄ変換器１９に各気筒＃１〜＃４の燃焼圧信号を択一的に切り替えて入力させるマルチプレクサ（ＭＰＸ）２１と、クランクセンサ２３からの回転信号ＮＥが入力されるカウンタ処理部２５及びエッジ時刻キャプチャ部２７とが備えられている。
【００６３】
また、このエンジン制御装置１１では、水温信号、吸気（吸入空気）温度情報信号、吸気量情報信号、スロットル開度信号等といった燃焼圧信号以外の各種アナログセンサ信号が、マルチプレクサ３１を介してＡ／Ｄ変換器３３に択一的に入力され、スタータスイッチ信号（ＳＴＡ）やシフト位置を示す変速スイッチ信号等といった各種スイッチ信号が、マルチプレクサ３５を介してスイッチ判定部３７に択一的に入力される。そして、Ａ／Ｄ変換器３３によってＡ／Ｄ変換された各種アナログセンサ信号のＡ／Ｄ変換値と、スイッチ判定部３７によって判定された各種スイッチ信号の論理レベル（ハイかローか）が、ＣＰＵ１３に取り込まれるようになっている。更に、このエンジン制御装置１１では、出力回路３９が、ＣＰＵ１３からの指令に基づいて、点火装置、燃料噴射弁、リレー、及びランプ等といった各種アクチュエータを駆動するようになっている。また、このエンジン制御装置１１には、ＣＰＵ１３が他の装置とデータ通信するための通信回路４１も備えられている。
【００６４】
ここで、クランクセンサ２３から出力される回転信号ＮＥは、エンジンのクランク軸が所定角度（本実施形態では１０°）回転する毎に有効エッジとしての立ち上がりエッジ（特定エッジに相当）が発生すると共に、クランク軸の回転位置が基準位置に来たときには、立ち上がりエッジが２回分連続して抜けることで立ち上がりエッジ間隔が３０°ＣＡ分の長さになる欠歯部が発生する信号である（図７及び図１５の１段目参照）。
【００６５】
そして、エッジ時刻キャプチャ部２７には、回転信号ＮＥに立ち上がりエッジが発生すると、その時のフリーランタイマ１５の値（以下、フリーランタイマ値ともいう）が更新記憶される。尚、本実施形態では、フリーランタイマ１５のクロックが例えば１ＭＨｚであり、フリーランタイマ値は、時刻を１μｓ単位で表すものとなっている。
【００６６】
また、カウンタ処理部２５は、下記（ａ）〜（ｃ）の機能を有している。
（ａ）回転信号ＮＥの立ち上がりエッジ間隔（以下、パルス間隔ともいう）を計測すると共に、今回計測中のパルス間隔が、前回計測したパルス間隔を所定の欠歯判定比倍した長さ以上になると、その今回計測中のパルス間隔が欠歯部であると判定する。これは、一般に“欠歯判定”と呼ばれる機能である。
【００６７】
（ｂ）回転信号ＮＥの各パルス間隔を計測すると共に、回転信号ＮＥに立ち上がりエッジが発生する毎に、今回計測したパルス間隔の計測値を逓倍数Ｎで割った値（即ち、クランク軸が「１０°／Ｎ」だけ回転すると見なされる時間間隔）を求め、その値を１周期とした逓倍クロックを生成する。但し、上記（ａ）の欠歯判定で欠歯部であると判定したパルス間隔の直後では、その欠歯部のパルス間隔の計測値を更に３で割った値（即ち、計測値を「Ｎ×３」で割った値）を、逓倍クロックの１周期とする。欠歯部のパルス間隔は通常の３倍であるためである。
【００６８】
（ｃ）そして、上記（ｂ）の手順で生成される逓倍クロックの時間間隔で、角度カウンタ２６をカウントアップさせる処理を行う。
詳しく説明すると、まず、カウンタ処理部２５に備えられた角度カウンタ２６は、そのカウント値がエンジンの１行程におけるクランク角度を表すものであり、０から７２０の１つ前の値になると次に０へ戻る、といった具合にラップラウンドを繰り返すようにカウントアップされる。尚、本実施形態では、第１気筒＃１の圧縮行程上死点（以下、ＴＤＣという）のタイミングをエンジン１行程における０°ＣＡとしており（図７の１段目参照）、その０°ＣＡのタイミングで角度カウンタ２６の値が０となるようになっている。
【００６９】
また、本実施形態において、この角度カウンタ２６は、図１５の２段目及び３段目に示すように、ＬＳＢが１０°ＣＡであるカウンタ部分の角度カウンタ上位と、その角度カウンタ上位よりも下位のビットであって、ＬＳＢが「１０°ＣＡ／Ｎ」であるカウンタ部分の角度カウンタ下位とからなっている。尚、本実施形態では、逓倍数Ｎが２のｎ乗であり、角度カウンタ下位のビット数はｎであるが、図１５では、前述した図３１と同様に、見やすさを優先して、逓倍数Ｎが１０（つまり、角度カウンタ２６のＬＳＢが１°ＣＡ）であるものとして図示している。
【００７０】
そして、角度カウンタ上位は、回転信号ＮＥの立ち上がりエッジでカウントアップされ、角度カウンタ下位は、上記逓倍クロックでカウントアップされると共に、回転信号ＮＥの立ち上がりエッジで０にクリアされる。
【００７１】
また、回転信号ＮＥが欠歯部とならない通常の１０°ＣＡ毎の期間では、角度カウンタ下位は、ラップラウンド（オーバーフロー）が禁止され、その値は、最大値（２のｎ乗−１）でガードされる（止まる）ようになっている。
【００７２】
これに対して、回転信号ＮＥが欠歯部となる３０°ＣＡ分の期間では、角度カウンタ下位のラップラウンドが２回だけ許可されると共に、角度カウンタ上位は、角度カウンタ下位がラップラウンドして該角度カウンタ下位の値が０に戻る毎にカウントアップされる。よって、ＬＳＢが１０°ＣＡである角度カウンタ上位は、回転信号ＮＥの欠歯部においても最大で３回カウントアップされることとなる。
【００７３】
以上のようなカウンタ処理部２５の構成及び動作により、角度カウンタ２６は、前述した図３０及び図３１に示したのと同様にカウントアップされることとなる。
つまり、図１５にて角度カウンタ上位の値が２００になっている期間（つまり、２００°ＣＡ〜２１０°ＣＡの１０°ＣＡ分の期間）Ｔ２００に示すように、急加速が起こった場合には、回転信号ＮＥの次の立ち上がりエッジタイミングで、角度カウンタ２６の値は、強制的にそのタイミングで取るべき値（ここでは２１０）に設定されることとなり、また、図１５にて角度カウンタ上位の値が２１０になっている期間（つまり、２１０°ＣＡ〜２２０°ＣＡの１０°ＣＡ分の期間）Ｔ２１０に示すように、急減速が起こった場合には、角度カウンタ２６の値が、回転信号ＮＥの次の立ち上がりエッジタイミングでとるべき値の１つ前の値（ここでは２２０の１つ前の２１９）でガードされる（即ち、角度カウンタ下位の値が最大値で止まる）こととなり、その後、回転信号ＮＥに立ち上がりエッジが生じると、角度カウンタ２６の値は、そのタイミングで取るべき値に設定されることとなる。
【００７４】
尚、こうした角度カウンタのカウント手法については、本願出願人が先に出願した特願２００３−３６９３６５号に詳しく記載されている。
一方、第１メモリＭ１には、図２（Ａ）における左側の「ＮＥタイミング」の欄に示すように、エンジンの１行程（７２０°ＣＡの期間）において回転信号ＮＥに立ち上がりエッジが発生する各クランク角度（ＮＥタイミングクランク角度）にそれぞれ対応して、アドレス設けられている。そして、この第１メモリＭ１には、回転信号ＮＥに立ち上がりエッジが発生する毎に、図２（Ａ）に示す如く、その時のフリーランタイマ値が、その時の時刻として、その時のクランク角度（即ち、その時の角度カウンタ上位の値）に対応したアドレスへとエッジ時刻キャプチャ部２７から転送されて記憶される。
【００７５】
よって、第１メモリＭ１にて隣接する２つのアドレスに記憶された両フリーランタイマ値の差を求めれば、その２つのアドレスに対応するクランク角度間での回転信号ＮＥのパルス間隔時間が分かる。このため、回転信号ＮＥが立ち上がる毎に第１メモリＭ１の各アドレスに記憶されるフリーランタイマ値は、回転信号ＮＥに立ち上がりエッジが発生する各クランク角度間の時間間隔を表す時間情報であると言える。
【００７６】
尚、第１メモリＭ１の先頭アドレスは、角度カウンタ２６の値が０になるときの０°ＣＡのＮＥタイミングクランク角度に対応している。また、図２にて第１メモリＭ１のアドレスを示す「ＮＥタイミング」の欄において、１２０°ＣＡの次に１５０°ＣＡになっているのは、本実施形態では、その間のクランク角度（１２０°ＣＡ〜１５０°ＣＡ）で回転信号ＮＥが欠歯部となるからである。
【００７７】
次に、第２メモリＭ２には、図３に示すように、タイミング発生器１７からタイミング信号が発生される毎に、その時点での角度カウンタ２６のカウント値（以下、角度カウンタ値ともいう）と、その時のＡ／Ｄ変換器１９による燃焼圧信号のＡ／Ｄ変換値とが、ペアで順次記憶される。
【００７８】
尚、角度カウンタ値とＡ／Ｄ変換値とがペアで記憶されるとは、角度カウンタ値とＡ／Ｄ変換値とが対応付けされて記憶されるというということであり、どの角度カウンタ値がどのＡ／Ｄ変換値に対応するのかが識別可能に記憶されるということである。そして、本第１実施形態では、図３の左側列に示す第２メモリＭ２の角度カウンタ値記憶領域と、図３の右側列に示す第２メモリＭ２のＡ／Ｄ変換値記憶領域との各々に、その各領域の先頭アドレスから順に、互いに対応した角度カウンタ値とＡ／Ｄ変換値とを記憶するようにしているため、互いに対応した角度カウンタ値とＡ／Ｄ変換値とは、それらが記憶される各領域の先頭からのアドレスが同じとなり、これによって対応付けされる。
【００７９】
また、第３メモリＭ３には、図４に示すように、０°ＣＡ〜７２０°ＣＡまでの１０°ＣＡ毎の各クランク角度について、エンジン制御に使用する制御係数（ここでは、検出した燃焼圧信号の検出値を補正するための補正値）を記憶したデータマップが格納されている。
【００８０】
例えば、図５に示すように、エンジンのシリンダに取り込まれた空気が逃げない密閉の状態を考えた場合、点火による爆発が起こらなくても、シリンダ内の圧力はピストンの上下動作により変化する。
【００８１】
このため、燃焼圧センサＰ１〜Ｐ４から出力される燃焼圧信号は図６のような波形となるが、その燃焼圧信号から点火制御にのみ起因する圧力値を得るためには、燃焼圧信号の検出値を、図５の如く変化する圧力をオフセット圧力として補正してやる必要がある。
【００８２】
そこで、第３メモリＭ３には、図５のオフセット電圧の符号を正負反対にした値が、補正値として、各気筒＃１〜＃４毎に格納されており、その補正値を燃焼圧信号の検出値に加算することで、点火制御にのみ起因するシリンダ内圧力の値が得られるようにしている。
【００８３】
尚、図５、図６及び以下の説明において、例えば、「ＢＴＤＣ９０°ＣＡ」とは、ＴＤＣより９０°ＣＡ前のことであり、「ＡＴＤＣ１８０°ＣＡ」とは、ＴＤＣより１８０°ＣＡ後のことである。また、図５の圧力波形は、図４における第３気筒＃３用の補正値に該当するものであり、他の各気筒＃４，＃２，＃１用の補正値は、その第３気筒の補正値を１８０°ＣＡ分ずつずらした値となっている。一方、図４の「ＮＥタイミング」の欄において、７２０°ＣＡというクランク角度は、０°ＣＡと同じである。また、第３メモリＭ３に記憶しておく制御係数は、補正値に限らず、例えば燃焼圧センサ出力の目標値などであってもよい。また更に、制御係数は、１０°ＣＡ毎の値に限らず、５°ＣＡ毎や２０°ＣＡ毎の値でもよいし、不等間隔毎の値でもよい。
【００８４】
次に、エンジン制御装置１１のＣＰＵ１３が実行する処理の内容について説明する。
まず図７は、ＣＰＵ１３の処理タイミングを、各気筒＃１〜＃４の燃焼圧信号（但し、図５で述べたオフセット圧力分だけ補正したもの）と共に表すタイムチャートである。
【００８５】
ＣＰＵ１３は、回転信号ＮＥに図７の１段目に示す如く立ち上がりエッジが発生する毎に、図８の割り込み処理を実行する。
そして、ＣＰＵ１３は、図８の割り込み処理を開始すると、Ｓ１１０にて、その時のフリーランタイマ値（ＦＲＴ）を、エッジ時刻キャプチャ部２７から読み出して、前述した第１メモリＭ１のアドレスのうち、その時の角度カウンタ上位の値で示されるアドレスへ記憶する。そして、その後、当該割り込み処理を終了する。
【００８６】
このため、図２（Ａ）に示したように、第１メモリＭ１には、回転信号ＮＥに立ち上がりエッジが発生する毎に、その時のフリーランタイマ値が順次記憶されていくと共に、その記憶先アドレスは、その記憶時のクランク角度に対応したアドレスとなる。
【００８７】
尚、第１メモリＭ１には、図２（Ｂ）に示すように、回転信号ＮＥに立ち上がりエッジが発生する毎に、その時のフリーランタイマ値から前回の回転信号ＮＥの立ち上がりエッジタイミングでのフリーランタイマ値を引いた値（つまり、回転信号ＮＥの今回のパルス間隔時間）を順次記憶していくようにしても良い。
【００８８】
また、図７に示すように、ＣＰＵ１３は、各気筒＃１〜＃４のＡＴＤＣ８０°ＣＡのタイミング（第１気筒＃１のＴＤＣを０°ＣＡとした場合の、８０°ＣＡ、２６０°ＣＡ、４４０°ＣＡ、６２０°ＣＡの各タイミング）になったことを角度カウンタ値に基づき検知する毎に、マルチプレクサ２１を切り替えて、次にＴＤＣとなる点火予定の気筒の燃焼圧信号がＡ／Ｄ変換器１９に入力されてＡ／Ｄ変換されるようにする。
【００８９】
また更に、ＣＰＵ１３は、各気筒＃１〜＃４のＢＴＤＣ８０°ＣＡのタイミング（即ち、マルチプレクサ２１を切り替えてから２０°ＣＡ後のタイミング）になったことを角度カウンタ値に基づき検知する毎に、図９の処理を実行する。
【００９０】
そして、ＣＰＵ１３が図９の処理を開始すると、まずＳ２１０にて、タイミング発生器１７がタイミング信号を出力する時間間隔を算出して設定する。
このタイミング信号の出力間隔は、エンジンが最大回転数であるときの回転信号ＮＥのパルス間隔時間（即ち、回転信号ＮＥのパルス間隔時間の最小値）よりも短い一定時間に設定されるが、本実施形態では、エンジンの回転速度に反比例した値となるように、１０°ＣＡよりも小さい所定クランク角度（具体的には１°ＣＡ）相当の時間の平均値を算出して、その平均値に設定している。例えば、最新の１８０°ＣＡ分の時間を１８０で割った値を、タイミング信号の出力間隔として設定している。尚、タイミング信号の出力間隔は、例えば前回のＢＴＤＣ８０°ＣＡ〜ＡＴＤＣ８０°ＣＡの１６０°ＣＡ分の時間を１６０で割って求めたり、直前の１０°ＣＡ分の時間などから求めても良い。また、タイミング信号の出力間隔は、Ｓ２１０とは別のタイミングで予め算出しておいても良い。
【００９１】
次にＳ２２０にて、第２メモリＭ２にて角度カウンタ値が順次記憶される角度カウンタ値記憶領域のアドレスを示す変数であるポインタＭｅｍ２Ａと、第２メモリＭ２にて燃焼圧信号のＡ／Ｄ変換値が順次記憶されるＡ／Ｄ変換値記憶領域のアドレスを示す変数であるポインタＭｅｍ２Ｂとを、先頭アドレスを示す０に初期化する。
【００９２】
そして、続くＳ２３０にて、タイミング発生器１７を起動し、その後、当該図９の処理を終了する。
尚、タイミング発生器１７は、上記Ｓ２３０で起動されると、その時点で一発目のタイミング信号を出力し、以後は、上記Ｓ２１０で設定された時間間隔毎にタイミング信号を出力する。そして、タイミング発生器１７は、その後、今回点火される気筒のＡＴＤＣ８０°ＣＡのタイミングが到来して、ＣＰＵ１３が後述する図１２の処理におけるＳ４１０で当該タイミング発生器１７の動作を停止させると、タイミング信号の出力を止める。
【００９３】
次に、ＣＰＵ１３は、タイミング発生器１７からタイミング信号が出力される毎に、図１０の処理を実行する。
ＣＰＵ１３が図１０の処理を開始すると、まずＳ３１０にて、その時点での角度カウンタ値を、ポインタＭｅｍ２Ａで示される第２メモリＭ２のアドレスに記憶し、続くＳ３２０にて、Ａ／Ｄ変換器１９から燃焼圧信号のＡ／Ｄ変換値を読み込むと共に、その読み込んだＡ／Ｄ変換値を、ポインタＭｅｍ２Ｂで示される第２メモリＭ２のアドレスに記憶する。そして、続くＳ３３０にて、ポインタＭｅｍ２Ａを１インクリメントし、更に続くＳ３４０にて、ポインタＭｅｍ２Ｂを１インクリメントした後、当該図１０の処理を終了する。
【００９４】
このため、本実施形態では、図７の如く各気筒＃１〜＃４の点火時期を含むＢＴＤＣ８０°ＣＡ〜ＡＴＤＣ８０°ＣＡまでの１６０°ＣＡ分の期間が処理対象区間となり、その処理対象区間において、タイミング発生器１７からタイミング信号が出力される一定時間毎に、該当する気筒の燃焼圧信号のＡ／Ｄ変換値と角度カウンタ値とが、第２メモリＭ２に図３の如くペアで順次記憶されていくこととなる。
【００９５】
尚、図１０のＳ３２０で第２メモリＭ２にＡ／Ｄ変換値を記憶するためのＡ／Ｄ変換器１９の使用方法としては、次の２通りの方法がある。
＜方法１＞
図１１（Ａ）に示すように、タイミング信号が発生したタイミングでＡ／Ｄ変換器１９に燃焼圧信号をＡ／Ｄ変換させ、Ａ／Ｄ変換が終了したら、そのＡ／Ｄ変換値を読み込む。また、タイミング信号が発生するタイミングよりもＡ／Ｄ変換に必要な時間だけ早いタイミングで、Ａ／Ｄ変換器１９に燃焼圧信号をＡ／Ｄ変換させるようにしても良い。
【００９６】
＜方法２＞
図１１（Ｂ）に示すように、Ａ／Ｄ変換器１９がタイミング信号の出力間隔よりも短い間隔（例えば５μｓ）でＡ／Ｄ変換を常時実施するようにし、Ｓ３２０では、その時点での最新のＡ／Ｄ変換値を読み込む。
【００９７】
そして、方法１によればＡ／Ｄ変換回数を低減でき、方法２によればＣＰＵ１３側の処理が簡単になる。尚、図１１は、マルチプレクサ２１によって第３気筒＃３の燃料圧信号が選択されている場合を例示している。
【００９８】
次に、ＣＰＵ１３は、各気筒＃１〜＃４のＡＴＤＣ８０°ＣＡのタイミング（即ち、処理対象区間の終了タイミング）になったことを角度カウンタ値に基づき検知する毎に、図１２の処理を実行する。
【００９９】
ＣＰＵ１３が図１２の処理を開始すると、まずＳ４１０にて、タイミング発生器１７の動作を停止させる。これにより、１つの気筒についての処理対象区間が終了することとなる。
【０１００】
そして、続くＳ４２０にて、今回終了した処理対象区間（以下、今回の処理対象区間という）において第２メモリＭ２にペアで順次記憶された各角度カウンタ値及びＡ／Ｄ変換値と、その時点で第１メモリＭ１に記憶されている各フリーランタイマ値とを用いて、演算処理を行う。
【０１０１】
この第１実施形態における演算処理は、第２メモリＭ２に図３の如くＡ／Ｄ変換値と対応して記憶された各角度カウンタ値であて、第２メモリＭ２内の各Ａ／Ｄ変換値がＡ／Ｄ変換されたときのクランク角度をそれぞれ表す各角度カウンタ値を、第１メモリＭ１内の各フリーランタイマ値を用いて正しい値に補正するものであり、詳細は後で説明する。
【０１０２】
そして、続くＳ４３０にて、上記演算処理で補正された後の各角度カウンタ値と、それらに対応する第２メモリＭ２内の各Ａ／Ｄ変換値とからなる情報を、第２メモリＭ２とは別の結果保存用メモリ（図示省略）に退避させる。そして更に、その結果保存用メモリに退避させた情報を、第３メモリＭ３に記憶されている各制御係数を使ってエンジン制御に反映させる。
【０１０３】
ここでは、図４に示したように、第３メモリＭ３には、１０°ＣＡ毎の各クランク角度について、燃焼圧信号の検出値（即ちＡ／Ｄ変換値）を補正するための補正値が制御係数として記憶されているため、その第３メモリＭ３から、上記演算処理によって補正された後の各角度カウンタ値が表すクランク角度に対応した補正値を補間演算によって算出すると共に、その算出した各補正値を用いて、対応する燃焼圧信号のＡ／Ｄ変換値を補正することにより、その各Ａ／Ｄ変換値を、点火制御にのみ起因したシリンダ内圧力を表す値にすることができる。そして、その補正後のＡ／Ｄ変換値をエンジン制御のための処理に用いるのである。
【０１０４】
そして更に、続くＳ４４０にて、マルチプレクサ２１を切り替えて、次にＴＤＣとなる点火予定の気筒の燃焼圧信号がＡ／Ｄ変換器１９に入力されるようにする。つまり、今回の処理起動時の角度カウンタ値が８０であれば第３気筒＃３の燃焼圧信号がＡ／Ｄ変換器１９に入力されるようにし、今回の処理起動時の角度カウンタ値が２６０であれば第４気筒＃４の燃焼圧信号がＡ／Ｄ変換器１９に入力されるようにし、今回の処理起動時の角度カウンタ値が４４０であれば第２気筒＃２の燃焼圧信号がＡ／Ｄ変換器１９に入力されるようにし、今回の処理起動時の角度カウンタ値が６２０であれば第１気筒＃１の燃焼圧信号がＡ／Ｄ変換器１９に入力されるようにする。そして、その後、当該図１２の処理を終了する。
【０１０５】
次に、図１２のＳ４２０で実行される演算処理の詳しい内容について、図１３を用いて説明する。
図１３に示すように、ＣＰＵ１３が演算処理の実行を開始すると、まずＳ５１０にて、第２メモリＭ２の角度カウンタ値記憶領域（即ち、図１０のＳ３１０で角度カウンタ値が順次記憶された領域）の先頭アドレスを、ポインタＭ２Ａｄにセットする。
【０１０６】
そして、続くＳ５２０にて、ポインタＭ２Ａｄが示す第２メモリＭ２のアドレス（以下、アドレス「Ｍ２Ａｄ」という）に記憶されている角度カウンタ値を読み出すと共に、その読み出した角度カウンタ値に関連する情報を第１メモリＭ１からサーチして、上記読み出した角度カウンタ値を補正し、補正後の角度カウンタ値をアドレス「Ｍ２Ａｄ」に記憶し直す。
【０１０７】
その後、次のＳ５３０にて、ポインタＭ２Ａｄを１インクリメントし、続くＳ５４０にて、ポインタＭ２Ａｄの値が第２メモリＭ２における角度カウンタ値記憶領域の最終アドレスを超えたか否かを判定する。そして、最終アドレスを超えていなければ、次のアドレスの角度カウンタ値を補正するべくＳ５２０に戻り、最終アドレスを超えていれば、第２メモリＭ２内の全ての角度カウンタ値を補正し終えたということになるため、当該演算処理を終了する。
【０１０８】
ここで、Ｓ５２０の処理を更に詳しく説明すると、その処理は、下記［１−１］〜［１−５］の手順で行われる。
［１−１］
まず、アドレス「Ｍ２Ａｄ」から今回の補正対象となる角度カウンタ値（以下、ＣＴと記す）を読み出す。
【０１０９】
［１−２］
次に、回転信号ＮＥに立ち上がりエッジが発生する各クランク角度（以下、ＮＥタイミングクランク角度という）のうち、ＣＴ（詳しくは、ＣＴが表すクランク角度）を挟む２つのＮＥタイミングクランク角度（即ち、ＣＴの直前と直後との両ＮＥタイミングクランク角度）を特定し、その特定した両ＮＥタイミングクランク角度間の時間間隔Ｔａを、第１メモリＭ１から算出する。
【０１１０】
つまり、第１メモリＭ１には、図２（Ａ）に示したように、ＮＥタイミングクランク角度のそれぞれに対応して、その時の時刻としてのフリーランタイマ値が記憶されているため、ＣＴを挟む２つのＮＥタイミングクランク角度の各時刻の差を、時間間隔Ｔａとして求める。よって、Ｔａは、ＣＴが第２メモリＭ２に記憶された時点での、回転信号ＮＥの今回のパルス間隔時間であると言える。また、図２（Ｂ）の如く第１メモリＭ１に、ＮＥタイミングクランク角度間の各時間を記憶していった場合には、その第１メモリＭ１から該当する時間を読み出してＴａとすれば良い。
【０１１１】
但し、ＣＴを挟む２つのＮＥタイミングクランク角度が、回転信号ＮＥにおける欠歯部に該当するクランク角度であったならば、上記の手順で算出したＴａを更に３で割った値を、改めてＴａとする。
【０１１２】
一方、もし、ＣＴが何れかのＮＥタイミングクランク角度と同じ値であったならば、そのＣＴは補正する必要がないため、そのままＳ５３０に進む。
［１−３］
そして更に、ＣＴを挟む２つのＮＥタイミングクランク角度よりも回転信号ＮＥの１パルス間隔分だけ前の２つのＮＥタイミングクランク角度（即ち、ＣＴの直前のＮＥタイミングクランク角度と、その１つ前のＮＥタイミングクランク角度）を特定し、その特定した両ＮＥタイミングクランク角度間の時間間隔Ｔｂを、上記Ｔａと同様の手順で第１メモリＭ１から算出する。よって、Ｔｂは、ＣＴが第２メモリＭ２に記憶された時点での、回転信号ＮＥの前回のパルス間隔時間であると言える。
【０１１３】
但し、ここで特定した２つのＮＥタイミングクランク角度が、回転信号ＮＥにおける欠歯部に該当するクランク角度であったならば、上記の手順で算出したＴｂを更に３で割った値を、改めてＴｂとする。
【０１１４】
［１−４］
そして、ＣＴを、下記の式１で補正し、その補正後の角度カウンタ値ＣＴｄをアドレス「Ｍ２Ａｄ」に記憶し直す。
【０１１５】
ＣＴｄ＝ＣＴＨ＋ＣＴＬ×（Ｔｂ／Ｔａ）…式１
尚、ＣＴＬは、ＣＴの下位ｎビットの値（即ち、角度カウンタ下位に相当する部分の値）である。また、ＣＴＨは、ＣＴにおけるＣＴＬよりも上位のビットで表される値（即ち、角度カウンタ上位に相当する値であり、換言すれば、ＣＴにおけるＣＴＬの全ビットを０にした場合の値）である。
【０１１６】
［１−５］
但し、ＣＴにおけるＣＴＬの値が、最大値である「２のｎ乗−１」であった場合（即ち、ＣＴＬの全ビットが１であった場合）には、ＣＴを、上記式１ではなく、下記の式２で補正する。
【０１１７】
ＣＴｄ＝ＣＴｄｅ＋ΔＣＴ×（Ｔｂ／Ｔａ）×Ｊ…式２
尚、ＣＴｄｅは、その時点で式１により算出された最新の補正後のクランク角度である。また、ΔＣＴは、１サンプリング当たりのクランク角度であって、詳しくは、第２メモリＭ２に記憶されているクランク角度のうち、ＣＴ（今回の補正対象）の直前のＮＥタイミングクランク角度以降で、且つ、ＣＴｄｅの補正前のクランク角度までの、各クランク角度同士の差である。そして、Ｊは、今回の補正対象であるＣＴが、第２メモリＭ２内において、ＣＴＬの値が連続して最大値となっているもののうちの何番目であるかを示す番号値である。
【０１１８】
次に、以上のような演算処理が、図７における第３気筒＃３のＡＴＤＣ８０°ＣＡのタイミングで実施された場合を例に挙げて説明する。
まず、第２メモリＭ２には、図１４の「補正前」の欄に示すような値の角度カウンタ値が記憶されているものとする。そして、第１メモリＭ１には、各ＮＥタイミングクランク角度の時刻（フリーランタイマ値）として、図１５の最上段に示すように、１８０°ＣＡ〜１９０°ＣＡの時間Ｔ１８０が１．６６６ｍｓで、１９０°ＣＡ〜２００°ＣＡの時間Ｔ１９０が１．６６６ｍｓで、２００°ＣＡ〜２１０°ＣＡの時間Ｔ２００が１．０００ｍｓで、２１０°ＣＡ〜２２０°ＣＡの時間Ｔ２１０が２．０００ｍｓである、といったことを表す値が記憶されているものとする。尚、図１５は、図７におけるＨ１の範囲を拡大して表している。
【０１１９】
この場合、図１４の領域Ｒ１における補正前の各角度カウンタ値（即ち、２００°ＣＡから２１０°ＣＡまでの各角度カウンタ値）は、図１５から分かるように、回転信号ＮＥのパルス間隔が前回のＴ１９０よりも短くなったＴ２００の期間でのデータ（即ち、加速時のデータ）であり、その各角度カウンタ値の下位ｎビットは最大値にはならない。
【０１２０】
このため、その領域Ｒ１の各角度カウンタ値は、式１により、Ｔａ＝Ｔ２００＝１．０００ｍｓ、Ｔｂ＝Ｔ１９０＝１．６６６ｍｓとして補正される。例えば、図１４における補正前の「２０３．００°ＣＡ」に関しては、式１から、「ＣＴｄ＝２００＋３．００×（１．６６６／１．０００）＝２０５．００°ＣＡ」となる。
【０１２１】
また、図１４の領域Ｒ２における補正前の各角度カウンタ値（即ち、２１０°ＣＡから２２０°ＣＡまでの各角度カウンタ値）は、図１５から分かるように、回転信号ＮＥのパルス間隔が前回のＴ２００よりも長くなったＴ２１０の期間でのデータ（即ち、減速時のデータ）であるため、それらのうち、図１４の領域Ｒ２ａに示すように、前半のものは、下位ｎビットが最大値にならず、後半のものは、下位ｎビットが最大値になる。尚、図１４では、逓倍数Ｎが１０２４で、角度カウンタ下位が１０ビットであるものとしており、下位ｎ（＝１０）ビットの最大値は９．９９となっている。
【０１２２】
そして、領域Ｒ２ａの各角度カウンタ値は、式１により、Ｔａ＝Ｔ２１０＝２．０００ｍｓ、Ｔｂ＝Ｔ２００＝１．０００ｍｓとして補正される。例えば、図１４における補正前の「２１８．３３°ＣＡ」に関しては、式１から、「ＣＴｄ＝２１０＋８．３３×（１．０００／２．０００）＝２１４．１７°ＣＡ」となる。
【０１２３】
また、領域Ｒ２ｂの各角度カウンタ値（＝２１９．９９°ＣＡ）は、式２により、Ｔａ＝Ｔ２１０＝２．０００ｍｓ、Ｔｂ＝Ｔ２００＝１．０００ｍｓとして補正されるが、この場合、図１４の右側における直線矢印に示すように、ＣＴｄｅとしては２１４．１７°ＣＡが用いられ、また、図１４の左側における曲線矢印に示すように、ΔＣＴとしては１．６７°ＣＡ（例えば「２１６．６７°ＣＡ−２１５．００°ＣＡ」）が用いられる。そして例えば、領域Ｒ２ｂの角度カウンタ値のうち、３番目の角度カウンタ値に関しては、Ｊ＝３となり、式２から、「ＣＴｄ＝２１４．１７＋１．６７×（１．０００／２．０００）×３＝２１６．６７°ＣＡ」となる。
【０１２４】
尚、式２におけるΔＣＴの代わりに、図１４の右側における曲線矢印に示すように、下位ｎビットが最大値でなかった角度カウンタ値の補正後の値同士の差を求め、その値を、式２における「ΔＣＴ×（Ｔｂ／Ｔａ）」として用いるようにしても同じことである。また、その「ΔＣＴ×（Ｔｂ／Ｔａ）」やΔＣＴとしては、複数の値の平均値を用いても良い。
【０１２５】
一方、本第１実施形態では、カウンタ処理部２５がカウンタ処理手段に相当し、タイミング発生器１７がタイミング出力手段に相当し、図８の処理が第１記憶処理手段に相当している。そして、図１０の処理が請求項１の第２記憶処理手段に相当し、図１２のＳ４２０で実行される図１３の処理が、請求項１の演算処理手段に相当している。また、各気筒＃１〜＃４のＢＴＤＣ８０°ＣＡというクランク角度が、処理対象区間の開始タイミングとしての情報収集開始角度に相当している。
【０１２６】
以上のように、本第１実施形態のエンジン制御装置１１では、図１５における「波形Ａ」に示すように、まず、角度カウンタ値には同期せずに、タイミング発生器１７からタイミング信号が出力される一定時間毎に、燃焼圧信号のＡ／Ｄ変換値を角度カウンタ値とペアで第２メモリＭ２に記憶していき、その後、図１３の演算処理を実施して、第２メモリＭ２に記憶された角度カウンタ値を、第１メモリＭ１に記憶しておいた各時間情報を用いて正しい値に補正するようにしている。
【０１２７】
このため、補正された後の各角度カウンタ値は、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度を、回転速度の変動に影響されることなく正確に表すものとなる。よって、第２メモリＭ２に記憶された各Ａ／Ｄ変換値と補正後の各角度カウンタ値とからなる情報は、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報となる。
【０１２８】
そして、第２メモリＭ２に記憶された各Ａ／Ｄ変換値を、補正後の各角度カウンタ値に基づいて、例えば横軸をクランク角度としてプロットしたならば、図１５の「波形Ｂ」に示すように、データ抜けやデータ飛びの無い連続した波形が再現される。このため、第２メモリＭ２に記憶されたデータをエンジン制御に用いた場合に、制御状態の急変を招く心配がない。尚、図１５では、分かりやすいように１８０°ＣＡのタイミングなどでは、１°ＣＡ毎のタイミングと燃焼圧信号の取り込みタイミングとが同期しているが、同期しなくても良い。また、加速時には信号の取り込み間隔が本来の１°ＣＡ毎よりも粗くなるが、例えば、タイミング発生器１７からタイミング信号が出力される間隔を０．５°ＣＡ相当の時間などにすれば良い。
【０１２９】
また更に、図１３の演算処理は、処理対象区間が終了してから１回行うだけで良いため、ＣＰＵ１３の処理負荷を軽減することができる。
しかも、第２メモリＭ２に記憶される燃焼圧信号の各Ａ／Ｄ変換値は、一定時間毎に取り込んだデータであるため、クランク角度に依存する失火検出などの処理と、時間に依存するノック検出用デジタルフィルタ処理との、両方に使用することができる。
【０１３０】
そして更に、本第１実施形態のエンジン制御装置１１によれば、第３メモリＭ３のデータマップ（図４）から、演算処理によって補正した後の各角度カウンタ値に対応する制御係数を算出し、その各制御係数と燃焼圧信号の各Ａ／Ｄ変換値とを用いてエンジン制御を行うようにしているため、制御精度を向上させることができる。
【０１３１】
また、本第１実施形態では、タイミング発生器１７からタイミング信号が出力される時間間隔を、図９のＳ２１０にてエンジンの回転速度に応じて設定するようにしているため、エンジン回転数に拘わらず一定のクランク角度相当の時間毎に燃焼圧信号値を取り込むことができる。
【０１３２】
尚、上記第１実施形態では、各気筒＃１〜＃４毎の処理対象区間を互いに重複しないように設定したが、それらを重複して設定するのであれば、第２メモリＭ２を各気筒＃１〜＃４毎に設けて同様の処理を行えば良い。
【０１３３】
次に、第２実施形態のエンジン制御装置について説明する。尚、本第２実施形態を始め、以下に説明する他の実施形態においても、ハードウェア構成は第１実施形態と同じであるため、各部の符号は第１実施形態と同じものを用いる。
【０１３４】
第２実施形態のエンジン制御装置１１は、第１実施形態のエンジン制御装置１１と比較すると、下記の２点が異なっている。
第１の点として、第２メモリＭ２には、図１６に示す如く、角度カウンタ値に代えて、フリーランタイマ値が記憶される。
【０１３５】
つまり、ＣＰＵ１３は、タイミング発生器１７からタイミング信号が出力される毎に、図１０の処理に代えて、図１７の処理を実行する。そして、図１０のＳ３１０に代わるＳ３１５にて、その時点でのフリーランタイマ値（ＦＲＴ）を、ポインタＭｅｍ２Ａで示される第２メモリＭ２のアドレスに記憶するのである。尚、図１７において、ポインタＭｅｍ２Ａは、第２メモリＭ２にてフリーランタイマ値が順次記憶されるフリーランタイマ値記憶領域（図１６の左側列の領域）のアドレスを示す変数である。また、図１７において、Ｓ３２０〜Ｓ３４０の処理は、図１０と同じである。
【０１３６】
このため、第２メモリＭ２には、各気筒＃１〜＃４のＢＴＤＣ８０°ＣＡ〜ＡＴＤＣ８０°ＣＡまでの処理対象区間においてタイミング発生器１７からタイミング信号が発生される一定時間毎に、該当する気筒の燃焼圧信号のＡ／Ｄ変換値と、その時の時刻としてのフリーランタイマ値とが、ペアで順次記憶されることとなる。
【０１３７】
第２の点として、本第２実施形態では、ＣＰＵ１３が、図１２のＳ４２０にて、図１３の演算処理に代えて、図１８の演算処理を実行する。
そして、ＣＰＵ１３が図１８の演算処理の実行を開始すると、まずＳ６１０にて、第１メモリＭ１の先頭アドレスをポインタＭ１Ａｄにセットし、また、作業用メモリＭ１ｓ（図１９参照）の先頭アドレスをポインタＭ１ｓＡｄにセットする。
【０１３８】
次に、Ｓ６２０にて、ポインタＭ１Ａｄが示す第１メモリＭ１のアドレス（以下、アドレス「Ｍ１Ａｄ」という）に記憶されているフリーランタイマ値と、その次のアドレス「Ｍ１Ａｄ＋１」に記憶されているフリーランタイマ値との差から、その各アドレス「Ｍ１Ａｄ」，「Ｍ１Ａｄ＋１」にそれぞれに対応する両ＮＥタイミングクランク角度間での１°ＣＡ当たりの時間を算出し、その算出値を、ポインタＭ１ｓＡｄが示す作業用メモリＭ１ｓのアドレス（アドレス「Ｍ１ｓＡｄ」）に記憶する。
【０１３９】
尚、１°ＣＡ当たりの時間は、アドレス「Ｍ１Ａｄ」に記憶されているフリーランタイマ値をＦＴ１とし、アドレス「Ｍ１Ａｄ＋１」に記憶されているフリーランタイマ値をＦＴ２とし、アドレス「Ｍ１Ａｄ」に対応するＮＥタイミングクランク角度をＣＡ１とし、アドレス「Ｍ１Ａｄ＋１」に対応するＮＥタイミングクランク角度をＣＡ２とすると、下記の式３によって算出する。
【０１４０】
１°ＣＡ当たりの時間＝（ＦＴ２−ＦＴ１）／（ＣＡ２−ＣＡ１）…式３
そして、続くＳ６３０にて、ポインタＭ１ＡｄとポインタＭ１ｓＡｄとをそれぞれ１インクリメントし、続くＳ６４０にて、ポインタＭ１Ａｄの値が第１メモリＭ１の最終アドレスになったか否かを判定する。そして、最終アドレスでなければ（Ｓ６４０：ＮＯ）、次のＮＥタイミングクランク角度間での１°ＣＡ当たりの時間を算出するべくＳ６２０に戻り、最終アドレスであれば（Ｓ６４０：ＹＥＳ）、全てのＮＥタイミングクランク角度間での１°ＣＡ当たりの時間を算出し終えたということになるため、Ｓ６５０に進む。
【０１４１】
こうしたＳ６１０〜Ｓ６４０の処理により、図１９に例示するように、第１メモリＭ１に記憶されている各ＮＥタイミングクランク角度でのフリーランタイマ値から、各ＮＥタイミングクランク角度間での１°ＣＡ当たりの時間がそれぞれ算出され、その算出された各時間が、作業用メモリＭ１ｓに先頭アドレスから順に記憶されることとなる。例えば、２００°ＣＡ〜２１０°ＣＡ間での１°ＣＡ当たりの時間は、１００．０μｓ＝「（４４３３３−４３３３３）／１０°ＣＡ」と算出され、２１０°ＣＡ〜２２０°ＣＡ間での１°ＣＡ当たりの時間は、２００．０μｓ＝「（４６３３３−４４３３３）／１０°ＣＡ」と算出される。また、作業用メモリＭ１ｓ各アドレスも、第１メモリＭ１のアドレスと同様に、各ＮＥタイミングクランク角度に対応することとなるため、その作業用メモリＭ１ｓから、所望のＮＥタイミングクランク角度間での１°ＣＡ当たりの時間を検索することができる。
【０１４２】
次に、上記Ｓ６４０からＳ６５０に進むと、第２メモリＭ２のフリーランタイマ値記憶領域（即ち、図１７のＳ３１５でフリーランタイマ値が順次記憶された領域）の先頭アドレスを、ポインタＭ２Ａｄにセットする。
【０１４３】
そして、続くＳ６６０にて、ポインタＭ２Ａｄが示す第２メモリＭ２のアドレス（アドレス「Ｍ２Ａｄ」）に記憶されているフリーランタイマ値を読み出すと共に、その読み出したフリーランタイマ値に関連する情報を第１メモリＭ１及び作業用メモリＭ１ｓからサーチして補間計算を行うことにより、上記読み出したフリーランタイマ値に該当するクランク角度を算出し、その算出したクランク角度の値（角度値）を、図１９の右側に例示する如く第２メモリＭ２のアドレス「Ｍ２Ａｄ」に記憶し直す。
【０１４４】
その後、次のＳ６７０にて、ポインタＭ２Ａｄを１インクリメントし、続くＳ６８０にて、ポインタＭ２Ａｄの値が第２メモリＭ２におけるフリーランタイマ値記憶領域の最終アドレスを超えたか否かを判定する。そして、最終アドレスを超えていなければ、次のアドレスのフリーランタイマ値をクランク角度に変換するべくＳ６６０に戻り、最終アドレスを超えていれば、第２メモリＭ２におけるフリーランタイマ値記憶領域内の全てのフリーランタイマ値をクランク角度に変換し終えたということになるため、当該演算処理を終了する。
【０１４５】
ここで、Ｓ６６０の処理を更に詳しく説明すると、その処理は、下記［２−１］〜［２−３］の手順で行われる。
［２−１］
まず、第２メモリＭ２（詳しくは、フリーランタイマ値記憶領域）のアドレス「Ｍ２Ａｄ」から今回の演算対象となるフリーランタイマ値（以下、ＦＴｔと記す）を読み出す。
【０１４６】
［２−２］
次に、第１メモリＭ１から、各ＮＥタイミングクランク角度でのフリーランタイマ値のうち、ＦＴｔの直前のフリーランタイマ値ＦＴｋをサーチして読み出すと共に、そのＦＴｋに対応するＮＥタイミングクランク角度ＣＡｋを特定する。
【０１４７】
そして更に、作業用メモリＭ１ｓから、ＣＡｋと該ＣＡｋの次のＮＥタイミングクランク角度との間での１°ＣＡ当たりの時間Ｔｓをサーチして読み出す。尚、Ｔｓは、ＦＴｔの時刻が含まれた回転信号ＮＥのパルス間隔における１°ＣＡ当たりの時間である。
【０１４８】
［２−３］
そして、ＦＴｔに該当するクランク角度（即ち、第２メモリＭ２にて、そのＦＴｔとペアで記憶されているＡ／Ｄ変換値が取り込まれたときのクランク角度）ＣＡｔを、下記の式４で算出し、その算出したＣＡｔを第２メモリＭ２のアドレス「Ｍ２Ａｄ」に記憶し直す。
【０１４９】
ＣＡｔ＝ＣＡｋ＋（ＦＴｔ−ＦＴｋ）／Ｔｓ…式４
例えば、図１９の例において、第２メモリＭ２に記憶されたフリーランタイマ値のうち、４３９９９が演算対象のＦＴｔとされた場合、第１メモリＭ１からは、ＦＴｋとして４３３３３が読み出されると共に、ＣＡｋは２００°ＣＡであると特定される。また、作業用メモリＭ１ｓからは、Ｔｓとして、２００°ＣＡ〜２１０°ＣＡ間での１°ＣＡ当たりの時間である１００μｓが読み出されることとなる。そして、算出されるＣＡｔは、「ＣＡｔ＝２００°ＣＡ＋（４３９９９−４３３３３）／１００＝２０６．６６°ＣＡ」となる（図１９における［＊１］印参照）。
【０１５０】
また、第２メモリＭ２に記憶されたフリーランタイマ値のうち、４５６６６が演算対象のＦＴｔとされた場合、第１メモリＭ１からは、ＦＴｋとして４４３３３が読み出されると共に、ＣＡｋは２１０°ＣＡであると特定される。また、作業用メモリＭ１ｓからは、Ｔｓとして、２１０°ＣＡ〜２２０°ＣＡ間での１°ＣＡ当たりの時間である２００μｓが読み出されることとなる。そして、算出されるＣＡｔは、「ＣＡｔ＝２１０°ＣＡ＋（４５６６６−４４３３３）／２００＝２１６．６７°ＣＡ」となる（図１９における［＊２］印参照）。
【０１５１】
尚、本第２実施形態において、図１２のＳ４３０では、図１８の演算処理で算出された各クランク角度の値と、それらに対応する第２メモリＭ２内の各Ａ／Ｄ変換値とからなる情報を、第２メモリＭ２とは別の結果保存用メモリに退避させる。そして、第１実施形態と同様に、その結果保存用メモリに退避させた情報を、第３メモリＭ３内の制御係数を使ってエンジン制御に反映させる。
【０１５２】
また、本第２実施形態では、図１７の処理が請求項２の第２記憶処理手段に相当し、図１２のＳ４２０で実行される図１８の処理が、請求項２の演算処理手段に相当している。
以上のように、本第２実施形態のエンジン制御装置１１では、図２０における「波形Ａ」に示すように、まず、タイミング発生器１７からタイミング信号が出力される一定時間毎に、燃焼圧信号のＡ／Ｄ変換値を、そのときのフリーランタイマ値と対応させて第２メモリＭ２に記憶していき、その後、図１８の演算処理を実施して、第２メモリＭ２に記憶された各フリーランタイマ値と、第１メモリＭ１に記憶された各ＮＥタイミングクランク角度でのフリーランタイマ値とから、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度を算出している。つまり、第２メモリＭ２に記憶されたＡ／Ｄ変換値とペアの各フリーランタイマ値は、そのＡ／Ｄ変換値が取り込まれた時刻を表すものであるが、その各フリーランタイマ値を、第１メモリＭ１の情報を用いて、そのフリーランタイマ値が表す時刻に該当するクランク角度に換算するようにしている。
【０１５３】
そして、本第２実施形態によっても、図１８の演算処理で算出される各クランク角度の値は、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度を、回転速度の変動に影響されることなく正確に表すものとなる。よって、第２メモリＭ２に記憶された各Ａ／Ｄ変換値と、算出された各クランク角度とからなる情報は、燃焼圧信号の値がどのクランク角度でどういう値かを細かく正確に把握することのできる情報となる。また、第２メモリＭ２に記憶された各Ａ／Ｄ変換値を、図１８の演算処理で算出された各クランク角度の値に基づいて、例えば横軸をクランク角度としてプロットしたならば、図２０の「波形Ｂ」に示す如く、第１実施形態と同様にデータ抜けやデータ飛びの無い連続した波形が再現される。
【０１５４】
よって、本第２実施形態のエンジン制御装置１１によっても、第１実施形態のエンジン制御装置１１と同様の効果を得ることができる。
しかも、本第２実施形態によれば、カウンタ処理部２５に逓倍クロックを生成する機能がなく、角度カウンタ２６を回転信号ＮＥの有効エッジだけでカウントアップさせる簡素な装置構成であっても適用でき、また、演算処理が第１実施形態のものよりも簡単であるという２つの点で有利である。
【０１５５】
次に、第３実施形態のエンジン制御装置について説明する。
第３実施形態のエンジン制御装置１１は、第２実施形態のエンジン制御装置１１と比較すると、下記の３点が異なっている。
【０１５６】
第１の点として、タイミング発生器１７からタイミング信号が出力される毎に実行される図１７の処理では、Ｓ３１５の処理を行わない。
このため、第２メモリＭ２には、各気筒＃１〜＃４のＢＴＤＣ８０°ＣＡ〜ＡＴＤＣ８０°ＣＡまでの処理対象区間において、タイミング発生器１７からタイミング信号が発生される一定時間毎に、該当する気筒の燃焼圧信号のＡ／Ｄ変換値だけが順次記憶されることとなる。但し、第２メモリＭ２には、第２実施形態と同様に、Ａ／Ｄ変換値を順次記憶するためのＡ／Ｄ変換値記憶領域だけでなく、その第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのフリーランタイマ値を、そのＡ／Ｄ変換値と対応付けて記憶するためのフリーランタイマ値記憶領域も設けられている。
【０１５７】
第２の点として、ＣＰＵ１３は、処理対象区間の開始タイミングに相当する各気筒＃１〜＃４のＢＴＤＣ８０°ＣＡのタイミング毎に、図９の処理に代えて、図２１の処理を実行する。
【０１５８】
そして、図２１の処理では、Ｓ２３０に続くＳ２４０にて、上記Ｓ２３０でタイミング発生器１７を起動させたときのフリーランタイマ値を、処理対象区間においてタイミング発生器１７からタイミング信号が最初に出力された時刻として、開始時刻記憶メモリＭｓｔ（図２３参照）に記憶する。尚、図２１において、Ｓ２１０〜Ｓ２３０の処理は、図９と同じであるため説明は省略する。
【０１５９】
第３の点として、ＣＰＵ１３は、処理対象区間の終了時に実行される図１２の処理のＳ４２０にて、図１８の演算処理に代えて、図２２の演算処理を実行する。
そして、ＣＰＵ１３が図２２の演算処理の実行を開始すると、まずＳ７１０にて、変数Ｑを１に初期化する。
【０１６０】
次にＳ７２０にて、Ｑの値と、タイミング発生器１７が起動された時のフリーランタイマ値（即ち、図２１のＳ２４０で開始時刻記憶メモリＭｓｔに記憶されたフリーランタイマ値）ＦＴｓｔと、今回の処理対象区間においてタイミング発生器１７がタイミング信号を出力した時間間隔（即ち、図２１のＳ２１０で設定した時間間隔）Ｔｏとから、下記の式５に基づき、今回の処理対象区間においてタイミング発生器１７がＱ番目のタイミング信号を出力したときのフリーランタイマ値（即ち、第２メモリＭ２内のＱ番目のＡ／Ｄ変換値が取り込まれたときのフリーランタイマ値）ＦＴｑを算出し、その算出したＦＴｑを、第２メモリＭ２におけるフリーランタイマ値記憶領域のアドレスのうち、Ｑ番目のアドレスに記憶する。尚、Ｑ番目とは、最初のものを１番目とした場合のＱ番目ということである。
【０１６１】
ＦＴｑ＝ＦＴｓｔ＋Ｔｏ×（Ｑ−１）…式５
そして、続くＳ７３０にて、変数Ｑを１インクリメントし、更に続くＳ７４０にて、変数Ｑの値が第２メモリＭ２におけるフリーランタイマ値記憶領域のアドレス数（＝Ａ／Ｄ変換値記憶領域のアドレス数）を超えたか否かを判定する。そして、アドレス数を超えていなければ（Ｓ７４０：ＮＯ）、次のフリーランタイマ値を算出するべくＳ７２０に戻り、アドレス数を超えていれば（Ｓ７４０：ＹＥＳ）、第２メモリＭ２内の全てのＡ／Ｄ変換値が取り込まれたときの各フリーランタイマ値を算出し終えたということになるため、Ｓ６１０へ進む。
【０１６２】
ここで、図２２において、上記Ｓ７４０から進むＳ６１０以降の処理（Ｓ６１０〜Ｓ６８０）は、図１８と同じである。つまり、本第３実施形態では、図１８の演算処理におけるＳ６１０の前に、Ｓ７１０〜Ｓ７４０の処理を実行している。
【０１６３】
このため、本第３実施形態では、上記Ｓ７１０〜Ｓ７４０の処理で算出された各フリーランタイマ値が、前述したＳ６５０〜Ｓ６８０の処理により、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度に変換されて第２メモリＭ２のフリーランタイマ値記憶領域に記憶し直されることとなる。
【０１６４】
例えば、図２３に示すように、開始時刻記憶メモリＭｓｔに記憶されたフリーランタイマ値）ＦＴｓｔが２６６６６であり、タイミング発生器１７によるタイミング信号の出力間隔Ｔｏが１６６．６６７［μｓ］であったとすると、第２メモリＭ２内の１０５番目のＡ／Ｄ変換値が取り込まれたときのフリーランタイマ値は、Ｓ７２０の処理（式５）により、４３９９９（＝２６６６６＋１６６．６６７×（１０５−１））と算出される。そして、その４３９９９は、前述したＳ６６０の処理（式４）でＦＴｔとされることにより、２０６．６６°ＣＡというクランク角度に変換される。また、第２メモリＭ２内の１１５番目のＡ／Ｄ変換値が取り込まれたときのフリーランタイマ値は、Ｓ７２０の処理（式５）により、４５６６６（＝２６６６６＋１６６．６６７×（１１５−１））と算出される。そして、その４５６６６は、前述したＳ６６０の処理（式４）でＦＴｔとされることにより、２１６．６７°ＣＡというクランク角度に変換される。
【０１６５】
以上のように本第３実施形態では、第２実施形態と比較すると、処理対象区間において燃焼圧信号のＡ／Ｄ変換値を取り込んだときの各フリーランタイマ値を、第２メモリＭ２にＡ／Ｄ変換値とペアで記憶させていくのではなく、処理対象区間にてタイミング発生器１７からタイミング信号が最初に出力されたときのフリーランタイマ値ＦＴｓｔと、タイミング発生器１７がタイミング信号を出力する時間間隔Ｔｏとから、算出するようにしている。
【０１６６】
このため、処理対象区間中に第２メモリＭ２へフリーランタイマ値を記憶していかなくても、第２実施形態のエンジン制御装置１１と同じ効果を得ることができる。
尚、本第３実施形態では、Ｓ３１５を削除した図１７の処理が請求項３の第２記憶処理手段に相当し、図２１におけるＳ２４０の処理が開始時刻記憶処理手段に相当し、図２２におけるＳ７１０〜Ｓ７４０の処理が時刻算出手段に相当し、図２２におけるＳ６１０〜Ｓ６８０の処理が請求項３の演算処理手段に相当している。
【０１６７】
一方、上記第３実施形態では、Ｓ６１０〜Ｓ６８０の処理を行う前に、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのフリーランタイマ値を全て算出するようにしたが、その各フリーランタイマ値は、図２２のＳ６６０にて、第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度を算出する際毎に、１つずつ算出するようにしても良い。
【０１６８】
つまり、この場合、まず、第２メモリＭ２のフリーランタイマ値記憶領域には、実際にはフリーランタイマ値が記憶されず、図２２のＳ６６０で算出されるクランク角度（第２メモリＭ２内の各Ａ／Ｄ変換値が取り込まれたときのクランク角度）だけが順次記憶されることとなるため、その記憶領域は、クランク角度記憶領域と呼ぶことにする。そして、図２２からＳ７１０〜Ｓ７４０を削除すると共に、図２２のＳ６５０では、上記クランク角度記憶領域の先頭アドレス（１番目のアドレス）を、ポインタＭ２Ａｄにセットする。
【０１６９】
次に、図２２のＳ６６０では、アドレス「Ｍ２Ａｄ」から演算対象のフリーランタイマ値（ＦＴｔ）を読み出すのではなく、アドレス「Ｍ２Ａｄ」がクランク角度記憶領域のＱ番目のアドレスであるとすると、第２メモリＭ２におけるＡ／Ｄ変換値記憶領域のＱ番目のアドレスに記憶されているＡ／Ｄ変換値（以下、Ｑ番目のＡ／Ｄ変換値という）が取り込まれたときのフリーランタイマ値を、前述した式５から算出し、更に、その算出したフリーランタイマ値を前述した手順［２−１］〜［２−３］でのＦＴｔとして、Ｑ番目のＡ／Ｄ変換値が取り込まれたときのクランク角度を算出し、その算出したクランク角度をクランク角度記憶領域のアドレス「Ｍ２Ａｄ」に記憶すれば良い。尚、この場合、式５におけるＱには、クランク角度記憶領域の先頭アドレスを１番目とした場合のアドレス「Ｍ２Ａｄ」の順番値を代入すれば良い。
【０１７０】
このようにすれば、各Ａ／Ｄ変換値に対応する全てのフリーランタイマ値を一度に記憶しておく必要がないため、メモリ容量の節約が可能となる。
次に、第４実施形態のエンジン制御装置について説明する。
【０１７１】
第４実施形態のエンジン制御装置１１は、第２実施形態のエンジン制御装置１１と比較すると、図１２のＳ４２０にて、図１８の演算処理に代えて、下記［４−１］及び［４−２］の手順の演算処理を実行する点が異なっている。
【０１７２】
［４−１］
まず、図２４の右側に示すように、今回の処理対象区間における１°ＣＡ毎の各クランク角度（角度値）と、その各クランク角度でのフリーランタイマ値と、その各クランク角度での燃焼圧信号のＡ／Ｄ変換値とを対応付けて記憶するための第４メモリＭ４を用意する。尚、この場合の「用意する」とは、ＲＡＭなどのメモリ内に第４メモリＭ４としての領域を確保するということである。また、１°ＣＡ毎のクランク角度については、特に記憶するのではなく、第４メモリＭ４の先頭アドレスからの各アドレスが、その各クランク角度に対応するようにしておいても良い。
【０１７３】
そして、第１メモリＭ１に記憶されている各フリーランタイマ値から、今回の処理対象区間における１°ＣＡ毎の各クランク角度でのフリーランタイマ値を算出して、その算出した各フリーランタイマ値を、該当する１°ＣＡ毎のクランク角度と対応するように第４メモリＭ４に記憶する。
【０１７４】
ここで、ある１°ＣＡ毎のクランク角度ＣＡｍでのフリーランタイマ値ＦＴｍの算出方法について具体的に説明する。
まず、ＣＡｍの直前のＮＥタイミングクランク角度をＣＡａとし、ＣＡｍの直後のＮＥタイミングクランク角度をＣＡｂとすると、第１メモリＭ１から、ＣＡａに対応するフリーランタイマ値ＦＴａと、ＣＡｂに対応するフリーランタイマ値ＦＴｂとを読み出す。
【０１７５】
そして、ＣＡｍが、ＣＡａを１番目として数えた場合のｍ番目のクランク角度であるとすると、ＦＴｍを、下記の式６で算出する。
ＦＴｍ＝ＦＴａ＋（ｍ−１）×（ＦＴｂ−ＦＴａ）／（ＣＡｂ−ＣＡａ）…式６
例えば、図２４の例において、２００°ＣＡ〜２１０°ＣＡまでの１°ＣＡ毎の各クランク角度については、式６において、ＣＡａ＝２００，ＣＡｂ＝２１０，ＦＴａ＝４３３３３，ＦＴｂ＝４４３３３となるため、その各クランク角度でのフリーランタイマ値は、４３３３３から４４３３３まで１００［μｓ］ずつ増加する各値となる。また、２１０°ＣＡ〜２２０°ＣＡまでの１°ＣＡ毎の各クランク角度については、式６において、ＣＡａ＝２１０，ＣＡｂ＝２２０，ＦＴａ＝４４３３３，ＦＴｂ＝４６３３３となるため、その各クランク角度でのフリーランタイマ値は、４４３３３から４６３３３まで２００［μｓ］ずつ増加する各値となる。
【０１７６】
［４−２］
次に、上記［４−１］で第４メモリＭ４に記憶した各フリーランタイマ値をもとにして、第２メモリＭ２の記憶内容を補間することにより、今回の処理対象区間における１°ＣＡ毎の各クランク角度での燃焼圧信号のＡ／Ｄ変換値を算出し、その算出した各Ａ／Ｄ変換値を、該当する１°ＣＡ毎のクランク角度と対応するように第４メモリＭ４に記憶する。
【０１７７】
具体的に説明すると、ある１°ＣＡ毎のクランク角度ＣＡｍでのＡ／Ｄ変換値ＡＤｍは、次のように算出される。
まず、第４メモリＭ４から、クランク角度ＣＡｍでのフリーランタイマ値ＦＴｍを読み出す。そして、第２メモリＭ２から、ＦＴｍの直前のフリーランタイマ値ＦＴｃと、そのＦＴｃに対応して記憶されているＡ／Ｄ変換値ＡＤｃと、ＦＴｍの直後のフリーランタイマ値ＦＴｄと、そのＦＴｄに対応して記憶されているＡ／Ｄ変換値ＡＤｄとを読み出す。
【０１７８】
そして、ＡＤｍを下記の式７から算出する。
ＡＤｍ＝ＡＤｃ＋（ＦＴｍ−ＦＴｃ）×（ＡＤｄ−ＡＤｃ）／（ＦＴｄ−ＦＴｃ）…式７
例えば、図２４の例において、ＣＡｍ＝２０７°ＣＡについては、式７において、ＦＴｍ＝４４０３３、ＦＴｃ＝４３９９９、ＡＤｃ＝１０３６、ＦＴｄ＝４４１６６、ＡＤｄ＝１０３９となるため、その２０７°ＣＡでのＡ／Ｄ変換値は１０３６．６と算出される（図２４における［＊１］印参照）。
【０１７９】
また、ＣＡｍ＝２１７°ＣＡについては、式７において、ＦＴｍ＝４５７３３、ＦＴｃ＝４５６６６、ＡＤｃ＝１０８２、ＦＴｄ＝４５８３３、ＡＤｄ＝１０８７となるため、その２１７°ＣＡでのＡ／Ｄ変換値は１０８４．０と算出される（図２４における［＊２］印参照）。
【０１８０】
以上のように、本第４実施形態のエンジン制御装置１１では、処理対象区間において第２メモリＭ２に一定時間毎に順次記憶したＡ／Ｄ変換値を補間して、図２５の波形Ｃに示すような１°ＣＡ毎のＡ／Ｄ変換値を算出するようにしている。尚、図２５の「波形Ｂ」は、比較のために、図２０の「波形Ｂ」と同じ波形を記載したものである。
【０１８１】
よって、回転信号ＮＥに立ち上がりエッジが発生する角度間隔よりも小さい１°ＣＡ毎の燃焼圧信号のＡ／Ｄ変換値が正確に得られ、そのような１°ＣＡ毎のＡ／Ｄ変換値が必要なエンジン制御の精度を向上させることができる。
【０１８２】
尚、上記説明では、処理対象区間における１°ＣＡ毎の各フリーランタイマ値を先に全部算出して第４メモリＭ４に記憶しておくようにしたが、その各フリーランタイマ値は、上記式７により１°ＣＡ毎の各Ａ／Ｄ変換値を算出するとき毎に、その都度算出するようにしても良い。つまり、上記［４−１］及び［４−２］の演算処理では、１°ＣＡ毎の各クランク角度について、式６の計算に続き式７の計算を行うようにしても良く、このようにすれば、第４メモリＭ４の記憶容量を削減することができる。
【０１８３】
また、本第４実施形態において、上記［４−１］及び［４−２］の演算処理と共に、前述した図１８の演算処理（即ち第２実施形態の演算処理）も実行するようにしても良い。
また更に、上記第４実施形態では１°ＣＡ毎のＡ／Ｄ変換値を算出したが、例えば０．５°ＣＡ毎や０．２°ＣＡ毎など、他の一定角度毎のＡ／Ｄ変換値を算出するようにしても良い。
【０１８４】
また、上記第４実施形態では、図１７の処理が請求項５の第２記憶処理手段に相当し、図１２のＳ４２０で実行される上記［４−１］及び［４−２］の演算処理が、請求項５の演算処理手段に相当している。
【０１８５】
一方、変形例１として、第３実施形態のエンジン制御装置１１においても、例えば図２２のＳ７１０〜Ｓ７４０の処理が終わった時点（即ち、第２メモリＭ２内の各Ａ／Ｄ変換値に対応するフリーランタイマ値を全て算出して第２メモリＭ２のフリーランタイマ値記憶領域に記憶し終えた時点）で、上記［４−１］及び［４−２］の演算処理を行い、その後、図２２のＳ６１０〜Ｓ６８０の処理を行うようにしても良い。また、この場合、Ｓ６１０〜Ｓ６８０の処理は行わずに、１°ＣＡ毎のＡ／Ｄ変換値のみ算出するようにしても良い。
【０１８６】
そして、この変形例１の場合には、Ｓ３１５を削除した図１７の処理が請求項６の第２記憶処理手段にも相当し、上記［４−１］及び［４−２］の演算処理が、請求項６の演算処理手段に相当することとなる。
【０１８７】
また、変形例２として、上記第１実施形態のエンジン制御装置においても、第１メモリＭ１に記憶した情報と、第２メモリＭ２に順次記憶した角度カウンタ値及びＡ／Ｄ変換値とから、例えば１°ＣＡ毎のＡ／Ｄ変換値を算出するようにしても良い。
【０１８８】
例えば、図１３の演算処理によって角度カウンタ値が補正された後の第２メモリＭ２（以下、補正後の第２メモリＭ２ともいう）の記憶内容を補間して、１°ＣＡ毎のＡ／Ｄ変換値を算出するように構成すれば良い。
【０１８９】
つまり、ある１°ＣＡ毎のクランク角度ＣＡｍでのＡ／Ｄ変換値ＡＤｍは、まず、補正後の第２メモリＭ２から、ＣＡｍの直前のクランク角度を示す角度カウンタ値ＣＴ１と、そのＣＴ１に対応して記憶されているＡ／Ｄ変換値ＡＤ１と、ＣＡｍの直後のクランク角度を示す角度カウンタ値ＣＴ２と、そのＣＴ２に対応して記憶されているＡ／Ｄ変換値ＡＤ２とを読み出し、それらを用いて下記の式８から算出することができる。
【０１９０】
ＡＤｍ＝ＡＤ１＋（ＣＡｍ−ＣＴ１）×（ＡＤ２−ＡＤ１）／（ＣＴ２−ＣＴ１）…式８
例えば、図１４に示された補正後の第２メモリＭ２において、Ａ／Ｄ変換値の図示は省略されているが、仮に、補正後の２０６．６７°ＣＡに対応するＡ／Ｄ変換値が１０３６であるとし、補正後の２０８．３３°ＣＡに対応するＡ／Ｄ変換値が１０３９であるとすると、ＣＡｍ＝２０７°ＣＡについては、式８において、ＣＴ１＝２０６．６７、ＡＤ１＝１０３６、ＣＴ２＝２０８．３３、ＡＤ２＝１０３９となり、その２０７°ＣＡでのＡ／Ｄ変換値は１０３６．６と算出されることとなる。
【０１９１】
そして、この変形例２の場合には、図１０の処理が請求項４の第２記憶処理手段にも相当し、図１３の処理と上記式８の処理とが、請求項４の演算処理手段に相当することとなる。
【０１９２】
ところで、上記各実施形態及び変形例において、Ａ／Ｄ変換器１９により燃焼圧信号以外の各種アナログ信号も切り替えてＡ／Ｄ変換する場合（つまり、図１のＡ／Ｄ変換器３３をＡ／Ｄ変換器１９に統合した場合）には、Ａ／Ｄ変換器１９の使用方法として、次の２通りの方法が考えられる。
【０１９３】
＜方法Ａ＞
図２６（Ａ）に示すように、タイミング発生器１７によるタイミング信号が発生したタイミング（タイミング信号の立ち上がりタイミング）で、Ａ／Ｄ変換器１９に、まず現在の処理対象区間に該当する気筒（この例では第３気筒＃３）の燃焼圧信号をＡ／Ｄ変換させる。そして、燃焼圧信号のＡ／Ｄ変換が終了したら、そのＡ／Ｄ変換値を読み込み、その後、次にタイミング信号が立ち上がるまでの間に、他のアナログ信号を順次切り替えてＡ／Ｄ変換器１９にＡ／Ｄ変換させる。
【０１９４】
より具体的に説明すると、図２６（Ａ）の例では、タイミング信号のハイレベル期間が８．３μｓ、ローレベル期間が２５μｓであると共に、タイミング信号の立ち上がりタイミングで何れかの気筒の燃焼圧信号をＡ／Ｄ変換し、タイミング信号の立ち下がりタイミングから次の立ち上がりタイミングまでのローレベル期間中に、他のアナログ信号を順次切り替えてＡ／Ｄ変換していくようにしている。
【０１９５】
尚、図２６において、ｃｈ０，ｃｈ１，ｃｈ２，ｃｈ３，ｃｈ４…は、燃焼圧信号以外の各アナログ信号を選択してＡ／Ｄ変換している期間を示している。また、上記例において、１つの信号（チャンネル）のＡ／Ｄ変換時間が５μｓであるとすると、タイミング信号のローレベル期間中には最大で５回のＡ／Ｄ変換が可能である。一方、上記例では、５０００ｒｐｍの場合（つまり、１°ＣＡ分の時間が３３．３μｓである場合）を示しているが、例えば１０００ｒｐｍならば、１°ＣＡ分の時間は５倍の１６６．６６μｓとなり、タイミング信号のローレベル期間が長くなるため、その分、他のアナログ信号のＡ／Ｄ変換回数を多くすることができる。
【０１９６】
＜方法Ｂ＞
図２６（Ｂ）に示すように、Ａ／Ｄ変換器１９にタイミング信号の出力間隔よりも短い間隔（この例では５μｓ）で燃焼圧信号以外のアナログ信号を順次切り替えてＡ／Ｄ変換させると共に、タイミング信号が立ち上がると、そのとき選択されていた信号のＡ／Ｄ変換を中止させて、現在の処理対象区間に該当する気筒（この例では第３気筒＃３）の燃焼圧信号をＡ／Ｄ変換させ、その燃焼圧信号のＡ／Ｄ変換が終了した後、先ほど中止した信号のＡ／Ｄ変換を再度実行させる。尚、Ａ／Ｄ変換速度が速い場合や燃焼圧信号のＡ／Ｄ変換が多少遅れても良い場合には、上記中止をせずに、現在Ａ／Ｄ変換中の信号のＡ／Ｄ変換が終わってから、Ａ／Ｄ変換対象を燃焼圧信号に切り替えるようにしてもよい。
【０１９７】
次に、第５実施形態のエンジン制御装置について説明する。
第５実施形態のエンジン制御装置１１は、第２実施形態又は第４実施形態のエンジン制御装置１１と比較すると、次の点が異なっている。
【０１９８】
まず、本第５実施形態では、図２７に示すように、各気筒＃１〜＃４の処理対象区間（即ち、燃焼圧信号の値を検出する期間）がオーバーラップするように設定されている。具体的には、各気筒＃１〜＃４について、ＢＴＤＣ１７０°ＣＡのタイミングから７００°ＣＡ分の期間が、その気筒の処理対象区間となっている。よって、タイミング発生器１７は常時動作させている。
【０１９９】
そして、本第５実施形態では、図２８（Ａ）に示すように、タイミング発生器１７からタイミング信号が出力されると（タイミング信号が立ち上がると）、Ａ／Ｄ変換器１９が、各気筒＃１〜＃４の燃焼圧信号を「＃１→＃２→＃３→＃４」の順に切り替えてＡ／Ｄ変換するようになっている。
【０２００】
また、本第５実施形態では、各気筒＃１〜＃４毎に第２メモリＭ２が設けられている。
そして、本第５実施形態では、各気筒＃１〜＃４のそれぞれについて、該当する気筒＃Ｘ（Ｘは１〜４の何れか）の処理対象区間の開始タイミングで、該当する気筒＃Ｘ用の第２メモリＭ２を対象とした図９のＳ２２０の処理（即ち、ポインタＭｅｍ２Ａ，Ｍｅｍ２Ｂの初期化）を行うと共に、処理対象区間においてタイミング発生器１７からタイミング信号が出力される毎に、図１７の処理を行って、Ａ／Ｄ変換器１９から各気筒＃１〜＃４の燃焼圧信号のＡ／Ｄ変換値を読み込むと共に、その読み込んだＡ／Ｄ変換値のうち、該当する気筒＃ＸのＡ／Ｄ変換値と、タイミング信号が出力されたときのフリーランタイマ値とを、対応付けて該当する気筒＃Ｘ用の第２メモリＭ２に記憶する。
【０２０１】
このため、結局、各気筒＃１〜＃４用の第２メモリＭ２を１つの第２メモリＭ２としてみれば、その第２メモリＭ２には、図２８（Ｂ）の左側に示すように、タイミング発生器１７からタイミング信号が出力されたとき毎の各フリーランタイマ値と、そのフリーランタイマ値が示す時刻にＡ／Ｄ変換器１９により順次Ａ／Ｄ変換された各気筒＃１〜＃４の燃焼圧信号のＡ／Ｄ変換値とが、対応付けて記憶されることとなる。つまり、タイミング信号が出力される毎にＡ／Ｄ変換器１９から取り込んだ各気筒＃１〜＃４の燃焼圧信号のＡ／Ｄ変換値が、同じタイミングでのデータとして第２メモリＭ２に記憶されることとなる。
【０２０２】
尚、図２８（Ａ）では、前述した＜方法Ａ＞と同様に、Ａ／Ｄ変換器１９によって燃焼圧信号以外の他のアナログ信号も切り替えてＡ／Ｄ変換する場合を示しているが、図１に示したように他のアナログ信号を別のＡ／Ｄ変換器３３でＡ／Ｄ変換する場合には、各気筒＃１〜＃４の燃焼圧信号のＡ／Ｄ変換が終了してから次にタイミング信号が立ち上がるまでの間に、Ａ／Ｄ変換器１９に他のアナログ信号を順次切り替えてＡ／Ｄ変換させる必要はない。また、図２８（Ｂ）は、図２７におけるＨ２の範囲での状態を例示している。
【０２０３】
そして更に、本第５実施形態では、各気筒＃１〜＃４のそれぞれについて、該当する気筒＃Ｘの処理対象区間の終了タイミングで、該当する気筒＃Ｘ用の第２メモリＭ２内の記憶内容を対象として、図１２のＳ４２０の演算処理（詳しくは、図１８の演算処理、又は上記［４−１］，［４−２］の演算処理）とＳ４３０の処理とを行うが、特に、Ａ／Ｄ変換器１９が燃焼圧信号をＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の気筒については、Ａ／Ｄ変換器１９が１つの燃焼圧信号をＡ／Ｄ変換するのに要する時間をＴａｄ（図２８の例では５μｓ）とすると、図２８（Ｂ）の左側に示すように、第２メモリＭ２に記憶された各フリーランタイマ値に代えて、その各フリーランタイマ値に「Ｔａｄ×（ｎ−１）」を加えた各フリータイマ値を用いて演算処理を行う。
【０２０４】
例えば、図２８の例では、第１気筒＃１の燃焼圧信号に関する演算処理では、第２メモリＭ２に記憶された各フリーランタイマ値をそのまま使用するが、Ａ／Ｄ変換順序が２番目である第２気筒＃２の燃焼圧信号に関する演算処理では、第２メモリＭ２に記憶された各フリーランタイマ値に５μｓを加えて使用する。そして、Ａ／Ｄ変換順序が３番目である第３気筒＃３の燃焼圧信号に関する演算処理では、第２メモリＭ２に記憶された各フリーランタイマ値に１０μｓを加えて使用し、同様に、Ａ／Ｄ変換順序が４番目である第４気筒＃４の燃焼圧信号に関する演算処理では、第２メモリＭ２に記憶された各フリーランタイマ値に１５μｓを加えて使用する。
【０２０５】
そして、このような第５実施形態によれば、各気筒＃１〜＃４の燃焼圧信号を１つのＡ／Ｄ変換器１９により順次切り替えてＡ／Ｄ変換する構成でありながら、その各燃焼圧信号についての演算処理結果を正確なものにすることができる。演算処理を、燃焼圧信号のＡ／Ｄ変換タイミングをより正確に示すフリーランタイマ値を用いて行うことができるからである。
【０２０６】
一方、上記第５実施形態の手法は、第３実施形態及び変形例１に対しても同様に適用することができる。この場合、前述した演算処理を各気筒＃１〜＃４のそれぞれについて行う場合に、Ａ／Ｄ変換器１９が燃焼圧信号をＡ／Ｄ変換する順番がｎ番目（ｎは２以上の整数）の気筒については、図２２のＳ７１０〜Ｓ７４０の処理で第２メモリＭ２に記憶した各フリーランタイマ値を、上記第５実施形態で述べたように補正して（＋「Ｔａｄ×（ｎ−１）」して）使用すれば良い。
【０２０７】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０２０８】
例えば、第１メモリＭ１への時刻（フリーランタイマ値）の記憶は、処理対象区間だけ行うようにしても良い。
また、前述した各メモリＭ１〜Ｍ４，Ｍｓｔとしては、物理的に別々のメモリ（ＲＡＭなど）を使用しても良いし、１つのメモリの異なる記憶領域を使用しても良い。
【０２０９】
また、第１メモリＭ１と第２メモリＭ２とに記憶する時刻の情報としては、共通のフリーランタイマ１５の値に限らず、互いに同期した異なるタイマの値であっても良い。つまり、第１メモリＭ１に記憶される時刻の情報と、第２メモリＭ２に記憶される時刻の情報とに、常に一定の相関関係があれば良いからである。
【０２１０】
また、回転信号ＮＥの有効エッジ（所定クランク角度毎に発生するエッジ）は、立ち下がりエッジであっても、立ち上がりと立ち下がりとの両方のエッジでも良い。
また、エンジンとしては、ディーゼルエンジンでも、ガソリンエンジンでも良い。
【０２１１】
また、燃焼圧センサＰ１〜Ｐ４からの燃焼圧信号を本装置の外部でデジタル値に変換し、その変換されたデジタル値が通信にて本装置へ送信される構成でも良い。
一方、例えば第１実施形態において、図９のＳ２１０では、タイミング発生器１７がタイミング信号を出力する時間間隔を、エンジンの回転速度に応じて設定したが、その時間間隔を固定としてＡ／Ｄ変換するようにしても良い。
【０２１２】
また更に、その時間間隔を固定（例えば１０μｓ）としてＡ／Ｄ変換を実施し、その変換結果を間引いて図１３の演算処理を実施するようにしても良い。つまり、Ｓ５３０では、「Ｍ２Ａｄ＋ｙ→Ｍ２Ａｄ」となり、そのｙを、エンジンの回転速度に応じて、高回転時なら小さく、低回転時なら大きくするのである。理由としては、デジタルフィルタ処理を行うことを考えた場合、そのデジタルフィルタのサンプリング間隔（即ち、Ａ／Ｄ変換間隔）を変えると、フィルタ係数が変わるため、サンプリング間隔は一定の方が有利であるが、細かすぎると図１３の処理が増えてしまうため、Ａ／Ｄ変換値を間引いて使用するのである。
【０２１３】
そして、ここで述べた第１実施形態に対する変形例は、前述した第２実施形態以降の他の実施形態及び変形例についても同様に適用することができる。
また、前述した各実施形態及び変形例では、演算処理（図１３や図１８等）を、処理対象区間終了後にまとめて実施するようにしたが、ＣＰＵ１３の処理負荷を分散させるのであれば、回転信号ＮＥの有効エッジ毎に実施するようにしても良い。
【図面の簡単な説明】
【０２１４】
【図１】第１実施形態のエンジン制御装置の構成を表すブロック図である。
【図２】第１メモリに記憶される内容を説明する説明図である。
【図３】第１実施形態の第２メモリに記憶される内容を説明する説明図である。
【図４】第３メモリに記憶された内容を説明する説明図である。
【図５】ピストンの上下動に起因するシリンダ内圧力の変化を説明する図である。
【図６】燃焼圧信号の波形の一例を表す図である。
【図７】第１実施形態におけるＣＰＵの処理実行タイミングを、各気筒＃１〜＃４の燃焼圧信号と共に表すタイムチャートである。
【図８】回転信号の立ち上がり毎に実行される割り込み処理を表すフローチャートである。
【図９】第１実施形態において各気筒のＢＴＤＣ８０°ＣＡのタイミングで実行される処理を表すフローチャートである。
【図１０】第１実施形態においてタイミング発生器からタイミング信号が出力される毎に実行される処理を表すフローチャートである。
【図１１】Ａ／Ｄ変換器のＡ／Ｄ変換タイミングを説明する説明図である。
【図１２】第１実施形態において各気筒のＡＴＤＣ８０°ＣＡのタイミングで実行される処理を表すフローチャートである。
【図１３】第１実施形態の演算処理を表すフローチャートである。
【図１４】図１３の演算処理の内容を説明するための説明図である。
【図１５】第１実施形態の作用を表すタイムチャートである。
【図１６】第２実施形態の第２メモリに記憶される内容を説明する説明図である。
【図１７】第２実施形態においてタイミング発生器からタイミング信号が出力される毎に実行される処理を表すフローチャートである。
【図１８】第２実施形態の演算処理を表すフローチャートである。
【図１９】図１８の演算処理の内容を説明するための説明図である。
【図２０】第２実施形態の作用を表すタイムチャートである。
【図２１】第３実施形態において各気筒のＢＴＤＣ８０°ＣＡのタイミングで実行される処理を表すフローチャートである。
【図２２】第３実施形態の演算処理を表すフローチャートである。
【図２３】図２２の演算処理の内容を説明するための説明図である。
【図２４】第４実施形態の演算処理の内容を説明するための説明図である。
【図２５】第４実施形態の作用を表すタイムチャートである。
【図２６】燃焼圧信号と他のアナログ信号とを切り替えてＡ／Ｄ変換する場合のＡ／Ｄ変換タイミングを説明する説明図である。
【図２７】第５実施形態におけるＣＰＵの処理実行タイミングを、各気筒＃１〜＃４の燃焼圧信号と共に表すタイムチャートである。
【図２８】第５実施形態の作用を説明する説明図である。
【図２９】従来技術を説明する第１の説明図である。
【図３０】従来技術を説明する第２の説明図である。
【図３１】問題を説明する説明図である。
【符号の説明】
【０２１５】
１１…エンジン制御装置、１３…ＣＰＵ、１５…フリーランタイマ、１７…タイミング発生器、１９，３３…Ａ／Ｄ変換器、２１，３１，３５…マルチプレクサ、Ｐ１〜Ｐ４…燃焼圧センサ、２３…クランクセンサ、２５…カウンタ処理部、２６…角度カウンタ、２７…エッジ時刻キャプチャ部、３７…スイッチ判定部、３９…出力回路、４１…通信回路、Ｍ１…第１メモリ、Ｍ１ｓ…作業用メモリ、Ｍ２…第２メモリ、Ｍ３…第３メモリ、Ｍ４…第４メモリ、Ｍｓｔ…開始時刻記憶メモリ
【図２】
2005220796.tif 000003
【図３】
2005220796.tif 000004
【図４】
2005220796.tif 000005
【図６】
2005220796.tif 000006
【図７】
2005220796.tif 000007
【図８】
2005220796.tif 000008
【図９】
2005220796.tif 000009
【図１０】
2005220796.tif 000010
【図１１】
2005220796.tif 000011
【図１２】
2005220796.tif 000012
【図１３】
2005220796.tif 000013
【図１４】
2005220796.tif 000014
【図１５】
2005220796.tif 000015
【図１６】
2005220796.tif 000016
【図１７】
2005220796.tif 000017
【図１８】
2005220796.tif 000018
【図１９】
2005220796.tif 000019
【図２０】
2005220796.tif 000020
【図２１】
2005220796.tif 000021
【図２２】
2005220796.tif 000022
【図２３】
2005220796.tif 000023
【図２４】
2005220796.tif 000024
【図２５】
2005220796.tif 000025
【図２６】
2005220796.tif 000026
【図２７】
2005220796.tif 000027
【図２８】
2005220796.tif 000028
【図２９】
2005220796.tif 000029
【図３０】
2005220796.tif 000030
【図３１】
2005220796.tif 000031
【図１】
2005220796.tif 000032
【図５】
2005220796.tif 000033