JP3777963B2 - エンジン制御装置 - Google Patents
エンジン制御装置 Download PDFInfo
- Publication number
- JP3777963B2 JP3777963B2 JP2000281906A JP2000281906A JP3777963B2 JP 3777963 B2 JP3777963 B2 JP 3777963B2 JP 2000281906 A JP2000281906 A JP 2000281906A JP 2000281906 A JP2000281906 A JP 2000281906A JP 3777963 B2 JP3777963 B2 JP 3777963B2
- Authority
- JP
- Japan
- Prior art keywords
- time
- crank angle
- value
- angle
- timing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
Description
【発明の属する技術分野】
本発明は、エンジン制御装置に関するものである。
【0002】
【従来の技術及び発明が解決しようとする課題】
従来より、車両用のエンジン制御装置では、エンジンに取り付けられたクランク角センサから、エンジンのクランク軸が所定角度回転する毎に特定方向のパルスエッジ(一般には、立ち上がりエッジ)が生じるクランク角信号を入力し、そのクランク角信号に基づいて、クランク軸の回転角度(以下、クランク角という)を把握するようにしている。そして更に、エンジンの状態を検出するための他のセンサから出力されるアナログ信号の値(以下、センサ値という)を、A/Dコンバータによりデジタル値へとA/D変換して、エンジンの制御に使用している。
【0003】
ここで、この種のエンジン制御装置において、アナログ信号を出力するセンサが、例えば気筒の燃焼圧力を検出するための圧力センサ(燃焼圧センサ)のように、クランク角に密接に関連した物理量を検出するためのセンサである場合には、クランク角が特定の角度(以下、指令角度という)となった時のセンサ値を、A/D変換して検出する必要がある。
【0004】
そして、従来のエンジン制御装置では、クランク角が指令角度となった時のセンサ値を、以下の手法で検出するようにしていた。
まず、この種のエンジン制御装置においては、クランク角信号に上記特定方向のパルスエッジ(以下の説明では、立ち上がりエッジとする)が生じた時間間隔を計測することにより、クランク軸の回転速度(エンジン回転数)を算出しているが、従来のエンジン制御装置では、その計測した時間間隔(即ち、クランク角信号の1周期時間)から、クランク軸が単位角度(例えば1°CA)だけ回転するのに要する時間(以下、単位角度相当の時間という)を算出する。尚、“CA”は、クランク角を意味する添え字である。
【0005】
そして、クランク角信号に立ち上がりエッジが生じる各タイミングのうち、例えばクランク角が指令角度になる直前のタイミングにて、その時点で算出している最新の単位角度相当の時間から、クランク角が指令角度になると思われる時刻を算出すると共に、その算出した時刻にタイマ割り込み処理が起動されるように、内部タイマをセットする。
【0006】
そして更に、そのタイマ割り込み処理により、A/Dコンバータを起動して該A/Dコンバータにセンサ値をA/D変換させ、そのA/D変換によるデジタル値を、クランク角が指令角度となった時のセンサ値として取得する。
つまり、従来のエンジン制御装置では、過去のクランク角信号の周期時間に基づき、クランク角が指令角度になると思われる時刻を算出して、その時刻にA/Dコンバータを起動し、その時にA/D変換されたデジタル値を、クランク角が指令角度となった時のセンサ値として取得するようにしている。
【0007】
しかしながら、この手法では、エンジン特有の回転変動の影響により、実際にA/Dコンバータが起動される時のクランク角が、本当の指令角度からずれ易いため、クランク角が指令角度となった時のセンサ値を正確に検出することができない。つまり、各気筒での燃焼の度に発生する回転変動の影響を直接受けてしまい、本当に希望される指令角度とは異なったクランク角でのセンサ値を求めてしまう。
【0008】
一方また、この種のエンジン制御装置において、アナログ信号を出力するセンサが、上記燃焼圧センサ等、クランク角に密接に関連した物理量を検出するためのセンサである場合には、クランク角が第1の角度になってから第2の角度になるまでの監視期間において、センサ値が特定の値(例えば最大値や最小値)となった時のクランク角を検出するように構成される場合もある。
【0009】
そして、従来の技術により、監視期間においてセンサ値が特定の値となった時のクランク角を検出するには、以下の手法を採ることが考えられる。
まず、前述したように、この種のエンジン制御装置においては、クランク角信号の1周期時間を計測しているが、この場合も、その計測した1周期時間から、単位角度相当の時間(クランク軸が単位角度(例えば1°CA)だけ回転するのに要する時間)を算出する。
【0010】
また、監視期間は、クランク角が第1の角度になってクランク角信号に立ち上がりエッジが生じたタイミング(以下、監視開始タイミングという)から、クランク角が第2の角度になってクランク角信号に立ち上がりエッジが生じたタイミング(以下、監視終了タイミングという)までの期間として設定する。
【0011】
そして、クランク角信号に立ち上がりエッジが生じる各タイミングのうちの上記監視開始タイミングになると、その時点から上記監視終了タイミングが到来するまでの間、監視開始タイミングの時点で算出している最新の単位角度相当の時間毎に、A/Dコンバータを起動して該A/Dコンバータにセンサ値をA/D変換させる。
【0012】
そして更に、上記各A/D変換で得られるデジタル値の中から、特定の値(例えば最大値や最小値)となったデジタル値を選択し、その選択したデジタル値がA/D変換された順番から、センサ値が特定の値となった時のクランク角を求める。例えば、上記単位角度を「1°CA」とし、上記順番が「N」であったとすると、監視開始タイミングでのクランク角から「(N−1)×1°CA」だけ進んだ角度が、センサ値が特定の値となったクランク角として求められることとなる。
【0013】
しかしながら、この手法においても、エンジン特有の回転変動の影響により、センサ値が特定の値となった時のクランク角を正確に検出することができない。つまり、監視期間においてA/D変換の実施周期として用いられる単位角度相当の時間は、過去のクランク角信号の周期時間に基づいて算出されるものであるため、実際の単位角度相当の時間とは異なった値となり易く(即ち、誤差を持ち易く)、その結果、目的のクランク角を正確に検出することが難しくなる。
【0014】
本発明は、エンジン制御装置において、エンジンの回転変動の影響を受けずに検出対象値を正確に検出できるようにすることを目的としており、特に、クランク角が所定の指令角度となった時のセンサ値を正確に検出できるようにすることを第1の目的とし、センサ値が特定の値となった時のクランク角を正確に検出できるようにすることを第2の目的としている。
【0015】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項1に記載のエンジン制御装置は、従来の装置と同様に、所定のセンサから出力されるアナログ信号の値(以下、センサ値という)をデジタル値へとA/D変換するためのA/D変換手段を備えると共に、エンジンのクランク軸が所定角度回転する毎に特定方向のパルスエッジが生じるクランク角信号に基づいて、クランク軸の回転角度(以下、クランク角という)を把握するが、特に、クランク角が所定の指令角度になった時のセンサ値を検出するための手段として、サンプリング手段と、計時手段と、センサ値算出手段とを備えている。
【0016】
そして、サンプリング手段は、クランク角が指令角度となる前にクランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、検出開始タイミングという)から、クランク角が指令角度を過ぎた後にクランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、検出終了タイミングという)までのサンプリング期間の間、A/D変換手段にセンサ値を一定時間毎にA/D変換させて、そのA/D変換で得られた各デジタル値を所定の記憶手段に記憶させる。
【0017】
また、計時手段は、前記検出開始タイミングの時刻と前記検出終了タイミングの時刻とを夫々計測する。
そして、センサ値算出手段は、計時手段によって計測された両時刻(即ち、サンプリング期間の開始時刻及び終了時刻)と、検出開始タイミングでのクランク角から指令角度までの角度と、前記所定角度(即ち、クランク角信号の1周期分のクランク角)とから、前記サンプリング期間内にてクランク角が指令角度になった時刻(以下、指令角度時刻という)を算出して、前記記憶手段に記憶されているサンプリング期間分デジタル値から、前記算出した指令角度時刻のセンサ値を求める。
【0018】
尚、センサ値算出手段は、記憶手段に記憶されている各デジタル値の中から、前記算出した指令角度時刻に最も近いタイミングでA/D変換されたと見なされるデジタル値を1つ選択して、その選択したデジタル値を、指令角度時刻のセンサ値として求めるように構成することができる。また例えば、センサ値算出手段は、記憶手段に記憶されている各デジタル値の中から、前記算出した指令角度時刻の直前にA/D変換されたデジタル値と、前記算出した指令角度時刻の直後にA/D変換されたデジタル値とを選択して、その選択した2つのデジタル値から、補間処理によって、指令角度時刻でのセンサ値を算出するように構成することもできる。
【0019】
この請求項1のエンジン制御装置では、クランク角信号の各周期(即ち、クランク角信号に特定方向のパルスエッジが生じてから次に同方向のパルスエッジが生じるまでの各期間)のうちで、クランク角が指令角度となる時点を含んだ周期を、サンプリング期間としているため、そのサンプリング期間の開始時及び終了時におけるクランク角は、エンジンの回転変動に拘わらず正確に把握され、また、そのサンプリング期間の開始と終了との各々の時刻は、計時手段によって正確に計測される。
【0020】
このため、センサ値算出手段で算出される指令角度時刻は、エンジンの回転変動の影響を殆ど受けない正確な値となる。つまり、サンプリング期間の開始と終了との各時刻は計時手段によって正確に計測され、また、検出開始タイミング(サンプリング期間の開始時)でのクランク角は正確に把握される値であるため、そのクランク角から指令角度までの角度も正確な値であり、更に、クランク角信号の1周期分のクランク角である上記所定角度は既知の固定値であるため、それらの正確な情報から算出される指定角度時間は、エンジンの回転変動に殆ど影響されない正確な値となる。
【0021】
そして、センサ値算出手段により、そのような正確な指令角度時刻に基づいて、サンプリング期間中の一定時間毎のA/D変換値(センサ値をA/D変換したデジタル値)から算出される目的のセンサ値も、エンジンの回転変動の影響を殆ど受けることなく、クランク角が実際に指令角度になった時のセンサ値により近い値となる。
【0022】
よって、請求項1のエンジン制御装置によれば、クランク角が指令角度となった時のセンサ値を、従来よりも格段に高い精度で検出できるようになる。
一方、クランク角が第1の角度になってから第2の角度になるまでの監視期間において、センサからのセンサ値が特定の値となった時のクランク角を検出するためには、請求項2に記載の構成が適している。尚、特定の値としては、例えば、最大値,最小値,極大値,極小値や、予め定められた基準値、といった値が考えられる。
【0023】
即ち、請求項2に記載のエンジン制御装置も、従来の装置と同様に、所定のセンサからのセンサ値をデジタル値へとA/D変換するためのA/D変換手段を備えると共に、エンジンのクランク軸が所定角度回転する毎に特定方向のパルスエッジが生じるクランク角信号に基づいてクランク角を把握するが、特に、クランク角が第1の角度になってクランク角信号に特定方向のパルスエッジが生じるタイミング(以下、監視開始タイミングという)から、クランク角が第2の角度になってクランク角信号に特定方向のパルスエッジが生じるタイミング(以下、監視終了タイミングという)までの監視期間の中で、センサ値が特定の値となった時のクランク角を検出するための手段として、サンプリング手段と、計時手段と、特定値発生時刻検出手段と、クランク角算出手段とを備えている。
【0024】
そして、サンプリング手段は、前記監視期間の間、A/D変換手段にセンサ値を一定時間毎にA/D変換させる。
また、計時手段は、前記監視期間において、クランク角信号に前記特定方向のパルスエッジが生じた各タイミングであって、前記監視開始タイミングと前記監視終了タイミングとを含む各タイミングの時刻を夫々計測する。
【0025】
また更に、特定値発生時刻検出手段は、A/D変換手段によってA/D変換された各デジタル値の中から、前記特定の値となったデジタル値を選択すると共に、その選択したデジタル値がA/D変換された時刻である特定値発生時刻を検出する。
【0026】
そして、クランク角算出手段は、前記監視期間におけるクランク角信号の各周期のうちで、前記特定値発生時刻を含んだ周期を特定して、その特定した周期の開始時刻と終了時刻とを前記計時手段の計測結果から取得し、更に、その取得した開始時刻及び終了時刻と、前記特定値発生時刻と、前記開始時刻でのクランク角と、前記所定角度(即ち、クランク角信号の1周期分のクランク角)とから、前記特定値発生時刻でのクランク角を、センサ値が特定の値となった時のクランク角として算出する。
【0027】
つまり、この請求項2のエンジン制御装置では、従来装置のように、過去のクランク角信号の周期時間を利用して目的のクランク角を求めるのではなく、センサ値を一定時間毎にA/D変換して得た各デジタル値の中から、特定の値となったものを選択して、その選択したデジタル値のA/D変換時刻である特定値発生時刻を求めると共に、監視期間において、その特定値発生時刻を含んだクランク角信号の周期を特定して、その特定した周期の開始時刻及び終了時刻と、特定値発生時刻と、上記開始時刻でのクランク角と、クランク角信号の1周期分のクランク角である上記所定角度とから、センサ値が特定の値となった時のクランク角を算出するようにしている。
【0028】
このため、請求項2のエンジン制御装置によれば、センサ値が特定の値となった時のクランク角を、エンジンの回転変動の影響を殆ど受けずに、従来よりも格段に高い精度で検出できるようになる。
尚、監視期間が、クランク角信号の複数周期分ではなく1周期分だけである場合には、クランク角算出手段は、その監視期間自体を、特定値発生時刻を含んだクランク角信号の周期として特定することとなり、監視開始タイミングと監視終了タイミングとの各時刻を、特定値発生時刻を含んだクランク角信号の周期の開始時刻及び終了時刻として取得することとなる。
【0029】
一方、請求項1,2のエンジン制御装置において、センサ値をA/D変換する周期としての上記一定時間(以下、サンプリング周期ともいう)は、短い時間に設定するほど、検出精度の面で有利であるが、サンプリング周期を極端に短い時間に設定すると、A/D変換のための処理負荷やA/D変換値を記憶するための記憶手段の必要容量を大幅に増加させてしまうため、サンプリング周期は、処理負荷やハードウエア上の制約と、検出精度との兼ね合い応じて適宜設定すれば良い。このため、サンプリング周期は、エンジンが最高許容回転数で運転される場合でも、ある程度小さい値のクランク角(例えば1°CA)毎にA/D変換が行われるような値に設定することが好ましい。
【0030】
【発明の実施の形態】
以下、本発明が適用された実施形態の車両用エンジン制御装置について、図面を用いて説明する。
まず図1は、本実施形態のエンジン制御装置(以下、ECUという)1の構成を制御対象のエンジン3と共に表すブロック図である。
【0031】
図1に示すように、ECU1には、エンジン3に取り付けられたクランク角センサ5と、エンジン3の各気筒7に1つずつ装備された燃焼圧センサ9と、上記各気筒7に燃料を噴射供給するためのインジェクタ11とが接続されている。
尚、クランク角センサ5は、エンジン3のクランク軸と一緒に回転するパルサーと、そのパルサーの外周に所定角度間隔で設けられている多数の歯の通過を検出する毎に、クランク角信号としてのパルス信号を出力する検出部と、からなる周知のものである。そして、このクランク角センサ5(詳しくは、上記検出部)から出力されるクランク角信号は、クランク軸が所定角度(本実施形態では、10°)回転する毎に立ち上がりエッジ(即ち、ローレベルからハイレベルへの方向のパルスエッジ)が生じるものとなる。また、以下の説明において、このようなクランク角信号の立ち上がりエッジを、特に「NEパルス」ともいう。一方、燃焼圧センサ9は、各気筒7の燃焼圧力を表すアナログ信号(以下、燃焼圧信号ともいう)を出力するセンサである。
【0032】
そして、ECU1は、CPU13,ROM15,RAM17,A/Dコンバータ19,及びそれらを接続する内部バス21等からなる周知のマイクロコンピュータ(以下、マイコンという)23と、クランク角センサ5からのクランク角信号及び各燃焼圧センサ9からの燃焼圧信号をマイコン23に入力させる入力回路25と、マイコン23からの制御信号に従って上記インジェクタ11等の各種アクチュエータを動作させる出力回路27とを備えている。
【0033】
ここで、クランク角センサ5からのクランク角信号は、入力回路25で波形整形されて、マイコン23のCPU13に入力されるようになっている。また、各燃焼圧センサ9からの燃焼圧信号は、入力回路25を介してマイコン23のA/Dコンバータ19に入力されるようになっており、その燃焼圧信号の値(センサ値)は、A/Dコンバータ19によりデジタル値へとA/D変換される。
【0034】
そして、CPU13は、ROM15に格納されたプログラムに従って、エンジン制御用の各種処理を行う。例えば、CPU13は、クランク角信号に基づいて、周知の手法により、現在のクランク角(クランク軸の回転角度)やエンジン回転数を把握する。具体的には、クランク角が基準位置となった時からのNEパルスの発生回数を計数することにより、現在のクランク角を検出し、NEパルスの時間間隔を計測することにより、現在のエンジン回転数を検出する。また、CPU13は、A/D変換手段としてのA/Dコンバータ19を制御して、燃焼圧センサ9のセンサ値を検出する。そして更に、CPU13は、それらの検出結果に基づき出力回路27へ制御信号を出力して、インジェクタ11等を適切に動作させることにより、エンジン3の運転状態を制御する。
【0035】
次に、このようなECU1において、燃焼圧センサ9のセンサ値に関して行われる2種類の処理(処理1及び処理2)について説明する。尚、これらの処理は、各気筒7の燃焼圧センサ9について行われるものであるが、処理内容は共通であるため、1つの気筒(ここでは、複数の気筒7のうちの第1気筒#1とする)の燃焼圧センサ9についてのみ説明する。また、以下に説明する処理は、マイコン23のCPU13が実行するものである。
[処理1:クランク角が指令角度となった時のセンサ値を検出する処理]
まず、図2〜図5を参照して、クランク角が所定の指令角度となった時のセンサ値を検出するための処理1について説明する。
【0036】
尚、本実施形態においては、クランク角が第1気筒#1の圧縮行程上死点(以下、TDCと記す)の角度位置になったタイミングを含む10°CA毎の各タイミングで、クランク角信号に立ち上がりエッジ(NEパルス)が生じるものとする。また、センサ値を検出したい希望の指令角度は、第1気筒#1のTDCから15°CA進んだクランク角(ATDC15°CA)であるものとする。
【0037】
図2は、CPU13が処理1のために実行するNE割り込み処理を表すフローチャートであり、このNE割り込み処理は、クランク角信号に立ち上がりエッジが生じる毎(NEパルスが発生する毎)に実行される。
図2に示すように、CPU13がNE割り込み処理の実行を開始すると、まずステップ(以下、単に「S」と記す)110にて、今回のNEパルスの発生タイミングが、クランク角が指令角度となる直前のNEパルスの発生タイミングであって、燃焼圧信号に対するサンプリングを開始すべき検出開始タイミングとしてのAD起動タイミングであるか否かを判定する。尚、この例において、AD起動タイミングは、第1気筒#1のTDCから10°CA進んだクランク角(ATDC10°CA)のタイミングである(図5参照)。
【0038】
そして、上記S110にてAD起動タイミングであると判定したならば、S120に進んで、A/Dコンバータ19を起動して該A/Dコンバータ19に燃焼圧信号の値であるセンサ値をA/D変換させ、次のS130にて、その時点から一定時間Tint 後にマイコン23内でコンペア割り込み要求(いわゆるタイマ割り込み要求)が発生するように、コンペア割り込み要求発生時刻をセットし、続くS140にて、そのコンペア割り込み要求に対応する図3のコンペア割り込み処理が起動されるのを許可する。そして更に、続くS150にて、今回のNE割り込み処理の起動時刻であって、今回のAD起動タイミングの時刻(図5における時刻T1)を、RAM17に格納して、本NE割り込み処理を終了する。
【0039】
尚、CPU13は、マイコン23内で常時カウントアップされているフリーランニングカウンタの値を時刻として扱っている。このため、図5の時刻T1でAD起動タイミングに該当するNEパルスが発生したとすると、CPU13は、上記S150にて、時刻T1でのフリーランニングカウンタの値を、時刻T1としてRAM17に格納することとなる。
【0040】
一方、CPU13は、上記S110にてAD起動タイミングではないと判定したならば、S160に移行して、今回のNEパルスの発生タイミングが、クランク角が指令角度を過ぎた直後のNEパルスの発生タイミングであって、燃焼圧信号に対するサンプリングを終了すべき検出終了タイミングとしてのAD終了タイミングであるか否かを判定する。尚、この例において、AD終了タイミングは、第1気筒#1のTDCから20°CA進んだクランク角(ATDC20°CA)のタイミングである(図5参照)。
【0041】
そして、上記S160にてAD終了タイミングであると判定したならば、S170に進んで、前述したS150の場合と同様に、今回のNE割り込み処理の起動時刻であって、今回のAD終了タイミングの時刻(図5における時刻T2)を、RAM17に格納する。そして更に、続くS180にて、後述する図3のコンペア割り込み処理に対するAD終了要求をセットし、本NE割り込み処理を終了する。尚、AD終了要求は、実際には、図3のコンペア割り込み処理で参照されるフラグであり、S180では、そのAD終了要求用のフラグをセットする。
【0042】
また、CPU13は、上記S160にてAD終了タイミングではないと判定したならば、S190に移行して、AD処理終了通知の有無を判定する。尚、このAD処理終了通知は、後述する図3のコンペア割り込み処理のS360でセットされるフラグであり、S190では、このAD処理終了通知用のフラグを参照して、そのフラグがセットされている場合に、AD処理終了通知が有ったと判定する。
【0043】
そして、AD処理終了通知が有ったならば、S200に進んで、そのAD処理終了通知と上記S180でセットしたAD終了要求との各フラグをクリアする。そして更に、続くS210にて、後述する図4のセンサ値算出処理に対するセンサ値算出処理要求をセットし、本NE割り込み処理を終了する。尚、センサ値算出処理要求も、実際には、図4のセンサ値算出処理で参照されるフラグであり、S210では、そのセンサ値算出処理要求用のフラグをセットする。
【0044】
一方また、CPU13は、上記S190にてAD処理終了通知が無い(AD処理終了通知用のフラグがセットされていない)と判定したならば、そのまま、本NE割り込み処理を終了する。
次に、図2のNE割り込み処理におけるS130でコンペア割り込み要求発生時刻がセットされてから、一定時間Tint が経過すると、マイコン23内でコンペア割り込み要求が発生し、CPU13は、図3のコンペア割り込み処理の実行を開始することとなる。
【0045】
そして、図3に示すように、CPU13がコンペア割り込み処理の実行を開始すると、まずS310にて、A/Dコンバータ19から、その時にA/D変換されているデジタル値(燃焼圧信号のA/D変換値であり、以下、AD値ともいう)を読み出して、そのAD値をRAM17の所定領域に格納する。
【0046】
尚、このS310では、図2のS130でコンペア割り込み要求発生時刻がセットされたことに伴い当該コンペア割り込み処理が起動された場合には、A/Dコンバータ19からのAD値(この場合には、図2のS120で起動されたA/Dコンバータ19のAD値)を、0番目のAD値(AD[0])としてRAM17に記憶する。そして、その後は、図2のS180でAD終了要求がセットされるまで(即ち、AD終了タイミングが到来するまで)の間、当該S310の実行タイミング毎に、A/Dコンバータ19からのAD値を、1番目のAD値(AD[1]),2番目のAD値(AD[2]),3番目のAD値(AD[3])…といった具合に、1ずつ増加する番号と対応させてRAM17に記憶する。
【0047】
そして、CPU13は、続くS320にて、前述のAD終了要求がセットされているか否かを判定し、AD終了要求がセットされていなければ(S320:無し)、S330に進んで、A/Dコンバータ19を起動して該A/Dコンバータ19にセンサ値(燃焼圧信号の値)をA/D変換させる。そして更に、続くS340にて、今回のコンペア割り込み処理の起動時刻から一定時間Tint 後に再びコンペア割り込み要求が発生するように、コンペア割り込み要求発生時刻をセットし、本コンペア割り込み処理を終了する。このため、S320でAD終了要求がセットされていないと判定された場合には、A/Dコンバータ19が再び起動されると共に、一定時間Tint 後に本コンペア割り込み処理が再度起動されることとなる。
【0048】
尚、本実施形態において、上記一定時間Tint は、A/Dコンバータ19にセンサ値を繰り返しA/D変換させる周期(サンプリング周期)である。そして、この一定時間Tint は、エンジン3が最高許容回転数で運転される場合でも、例えば1°CAといった程度の小さいクランク角毎に、A/D変換が行われるような値に設定されている。例えば、本実施形態において、エンジン3の最高許容回転数は5000rpmであり、一定時間Tint は30μsに設定されている。よって仮に、エンジン3が最高許容回転数よりも高い5600rpmで運転されたとしても、約1°CA相当の時間毎にセンサ値のA/D変換が実施されることとなる。そして更に、このことは、後述する処理2についても同じである。
【0049】
一方、上記S320でAD終了要求がセットされていると判定した場合には(S320:有り)、S350に移行して、本コンペア割り込み処理が起動されるのを禁止し、続くS360にて、図2のNE割り込み処理に対しAD処理終了通知を行う。つまり、AD処理終了通知用のフラグをセットして、図2のNE割り込み処理に対し、検出開始タイミングとしてのAD起動タイミングから検出終了タイミングとしてのAD終了タイミングまでのサンプリング期間におけるセンサ値のA/D変換を、全て終えたことを通知する。そして、その後、本コンペア割り込み処理を終了する。
【0050】
以上のような図2のNE割り込み処理と図3のコンペア割り込み処理とにより、本ECU1では、図5に示すように、時刻T1で検出開始タイミングとしてのAD起動タイミングが到来すると(AD起動タイミングに該当するNEパルスが発生すると)、その時点から、時刻T2で検出終了タイミングとしてのAD終了タイミングが到来するまで(AD終了タイミングに該当するNEパルスが発生するまで)のサンプリング期間の間、A/Dコンバータ19が一定時間Tint 毎に起動されて、その一定時間Tint 毎のAD値がRAM17に順次記憶されることとなる。尚、図5において、A/Dコンバータ19の起動タイミングは、△印で示されている。
【0051】
つまり、図5の時刻T1で検出開始タイミングとしてのAD起動タイミングが到来すると、その時点で、図2のS120により、A/Dコンバータ19が最初に起動され、その際にA/D変換されたAD値は、図2のS130から一定時間Tint 後に実行される最初のコンペア割り込み処理(図3)のS310で、RAM17に格納される。そして更に、その回のコンペア割り込み処理のS330で、A/Dコンバータ19が再び起動され、その際にA/D変換されたAD値は、その回のコンペア割り込み処理から一定時間Tint 後に実行される次回のコンペア割り込み処理(図3)のS310で、RAM17に格納ることとなる。そして、以後は、図5の時刻T2で検出終了タイミングとしてのAD終了タイミングが到来して、図2のS180でAD終了要求がセットされるまで(即ち、図3のS320でAD終了要求がセットされていると判定されるまで)、コンペア割り込み処理が一定時間Tint 毎に実行され、そのコンペア割り込み処理のS330とS310とにより、A/Dコンバータ19の起動とAD値のRAM17への格納とが繰り返し行われることとなる。
【0052】
また、検出開始タイミングとしてのAD起動タイミングの時刻T1と、検出終了タイミングとしてのAD終了タイミングの時刻T2とが、図2のS150とS170との各々により、RAM17に格納される。
そして、本ECU1においては、検出終了タイミングとしてのAD終了タイミングが到来して、図2のS180によりAD終了要求がセットされ、それに伴い、図3のS360でAD処理終了通知用のフラグがセットされると、次のNEパルスが発生した時(即ち、図5における時刻T2の次にクランク角信号が立ち上がった時)のNE割り込み処理にて、S110とS160との両方で否定判定され、S190でAD処理終了通知が有ったと判定されることとなる。そして更に、その回のNE割り込み処理のS210にて、センサ値算出処理要求がセットされることとなる。
【0053】
すると、そのセンサ値算出処理要求に応じて、図4のセンサ値算出処理が実質的に実行され、目的のセンサ値(つまり、クランク角が指令角度となった時のセンサ値)が算出されることとなる。
即ち、図4のセンサ値算出処理は定期的に実行される処理であり、CPU13がこのセンサ値算出処理の実行を開始すると、まず最初のS410にて、センサ値算出処理要求(詳しくは、センサ値算出処理要求用のフラグ)がセットされているか否かを判定する。
【0054】
そして、S410でセンサ値算出処理要求がセットされていないと判定した場合には、そのまま何もせずに本センサ値算出処理を終了するが、S410でセンサ値算出処理要求がセットされていると判定した場合には、S420に進む。
S420では、センサ値算出処理要求のフラグをクリアし、続くS430にて、図2のS150とS170とでRAM17に格納されたAD起動タイミングの時刻T1とAD終了タイミングの時刻T2とを読み出し、下記の式1により、指令角度が含まれているNEパルス間の間隔時間(つまり、サンプリング期間の間隔時間)Tkを求める。
【0055】
Tk=T2−T1 …式1
そして更に、続くS440にて、上記S430で求めた間隔時間Tkと、検出開始タイミングとしてのAD起動タイミングでのクランク角(即ち、図5の時刻T1でのクランク角であり、本実施形態ではATDC10°CA)から指令角度(本実施形態ではATDC15°CA)までの角度β(図5参照)と、クランク角信号の1周期分のクランク角である所定角度α(本実施形態では10°CA)とから、下記の式2により、指令角度時刻(即ち、クランク角が指令角度になった時刻)Ttargetを算出する。
【0056】
Ttarget=(Tk÷α)×β …式2
尚、ここで算出される指令角度時刻Ttargetの値は、検出開始タイミングとしてのAD起動タイミング(図5の時刻T1)を基準にした値である。
そして、続くS450にて、まず、周期指標iを0に初期化する。
【0057】
次に、S460にて、周期指標iと、サンプリング周期である一定時間Tint との積「i×Tint 」が、S440で算出した指令角度時刻Ttargetよりも小さいか否かを判定し、肯定判定したならば、S470で周期指標iを1インクリメントしてから、再びS460の判定を行う。
【0058】
そして、S460で、積「i×Tint 」が指令角度時刻Ttargetよりも小さくないと否定判定したならば、S480に移行して、図2及び図3の処理でRAM17に記憶した今回のサンプリング期間分のAD値のうちで、その時の周期指標iによって特定されるi番目のAD値(AD値[i])を、指令角度時刻Ttargetでのセンサ値(即ち、クランク角が指令角度となった時のセンサ値)ANSとして取得し、その後、本センサ値算出処理を終了する。
【0059】
つまり、S450〜S480の処理により、記憶手段としてのRAM17に記憶されている各AD値の中から、S440で算出した指令角度時刻Ttargetを越えた直後のタイミングでA/D変換されたAD値(図5においては、「ANS」なる符号を付した△印のタイミングでA/D変換されたAD値)を、指令角度時刻Ttargetに最も近いタイミングでのAD値と見なして選択し、その選択したAD値を、クランク角が指令角度となった時の目的のセンサ値ANSとして扱うようにしている。
【0060】
以上のような本実施形態のECU1では、クランク角信号の各周期のうちで、クランク角が指令角度となる時点を含んだ周期を、サンプリング期間としているため、そのサンプリング期間の開始時及び終了時におけるクランク角は、エンジン3の回転変動に拘わらず正確に把握され、また、そのサンプリング期間の開始と終了との各々の時刻T1,T2は、図2のNE割り込み処理のS150及びS170によって正確に計測される。
【0061】
このため、図4のセンサ値算出処理で算出される指令角度時刻Ttargetは、エンジン3の回転変動の影響を殆ど受けない正確な値となる。つまり、サンプリング期間の開始と終了との各時刻T1,T2は正確に計測され、また、検出開始タイミング(サンプリング期間の開始時)T1でのクランク角は正確に把握される値であるため、そのクランク角から指令角度までの角度βも正確な値であり、更に、クランク角信号の1周期分のクランク角である所定角度αは既知の固定値であるため、それらの正確な情報から式1,2により算出される指定角度時間Ttargetは、エンジン3の回転変動に殆ど影響されない正確な値となる。
【0062】
そして、図4のセンサ値算出処理により、そのような正確な指令角度時刻Ttargetに基づいて、サンプリング期間中の一定時間Tint 毎のAD値から選択される目的のセンサ値ANSも、エンジン3の回転変動の影響を殆ど受けることなく、クランク角が実際に指令角度になった時のセンサ値により近い値となる。
【0063】
よって、本実施形態のECU1によれば、クランク角が指令角度となった時のセンサ値を、従来よりも格段に高い精度で検出できるようになる。
尚、本実施形態では、図2のNE割り込み処理におけるS110〜S140,S160,及びS180〜S210と図3のコンペア割り込み処理とが、請求項1のサンプリング手段に相当し、図2のNE割り込み処理におけるS150及びS170が、請求項1の計時手段に相当している。そして、図4のセンサ値算出処理が、センサ値算出手段に相当している。
【0064】
一方、図4のS450〜S480では、例えば、RAM17に記憶されているサンプリング期間分のAD値の中から、S440で算出した指令角度時刻Ttargetの直前のタイミングでA/D変換されたAD値と、その指令角度時刻Ttargetの直後のタイミングでA/D変換されたAD値とを選択して、その選択した2つのAD値から、補間処理によって、指令角度時刻Ttargetでのセンサ値を算出するようにしても良い。このようにすれば、検出精度を一層向上させることができる。
[処理2:センサ値が最大値となった時のクランク角を検出する処理]
次に、図6〜図9を参照して、センサ値が最大値となった時のクランク角を検出するための処理2について説明する。
【0065】
尚、以下の説明においては、NEパルスが発生する各タイミングのうちで、第1気筒#1のATDC10°CAのタイミングから第1気筒#1のATDC30°CAのタイミングまでの20°CA分の期間が、センサ値が最大値となった時のクランク角を検出すべき監視期間として設定されているものとする。つまり、ここでは、ATDC10°CAが監視開始タイミング(即ち、監視期間の開始タイミング)に対応する第1の角度であり、ATDC30°CAが監視終了タイミング(即ち、監視期間の終了タイミング)に対応する第2の角度であるものとする。
【0066】
まず図6は、CPU13が処理2のために実行するNE割り込み処理を表すフローチャートであり、このNE割り込み処理は、クランク角信号の立ち上がりエッジであるNEパルスが発生する毎に実行される。
図6に示すように、CPU13がNE割り込み処理の実行を開始すると、まずS510にて、今回のNEパルスの発生タイミングが、監視開始タイミング(監視期間の開始タイミング)としてのAD起動タイミング(この例では、第1気筒#1のATDC10°CAのタイミング)であるか否かを判定する。
【0067】
そして、上記S510にてAD起動タイミングであると判定したならば、S520に進んで、A/Dコンバータ19を起動して該A/Dコンバータ19に燃焼圧信号の値であるセンサ値をA/D変換させ、次のS530にて、その時点から一定時間Tint (本処理2においても30μs)後にマイコン23内でコンペア割り込み要求が発生するように、コンペア割り込み要求発生時刻をセットし、続くS540にて、そのコンペア割り込み要求に対応する図7のコンペア割り込み処理が起動されるのを許可する。そして更に、続くS550にて、今回のNE割り込み処理の起動時刻であって、今回のAD起動タイミングの時刻を、RAM17に格納して、本NE割り込み処理を終了する。
【0068】
一方、CPU13は、上記S510にてAD起動タイミングではないと判定したならば、S560に移行して、今回のNEパルスの発生タイミングが、監視終了タイミング(監視期間の終了タイミング)としてのAD終了タイミング(この例では、第1気筒#1のATDC30°CAのタイミング)であるか否かを判定する。
【0069】
そして、上記S560にてAD終了タイミングであると判定したならば、S570に進んで、今回のNE割り込み処理の起動時刻であって、今回のAD終了タイミングの時刻をRAM17に格納する。そして更に、続くS580にて、後述する図7のコンペア割り込み処理に対するAD終了要求をセットし、本NE割り込み処理を終了する。尚、AD終了要求は、実際には、図7のコンペア割り込み処理で参照されるフラグであり、S580では、そのAD終了要求用のフラグをセットする。
【0070】
また、CPU13は、上記S560にてAD終了タイミングではないと判定したならば、S590に移行して、AD処理実施中(即ち、監視期間中)であるか否かを判定する。尚、このS590では、今回発生したNEパルスが、AD起動タイミングからAD終了タイミングまでの間に発生するNEパルスであった場合に、AD処理実施中であると判定する。
【0071】
そして、S590にてAD処理実施中であると判定した場合には、S600に進んで、今回のNE割り込み処理の起動時刻であって、今回のNEパルスの発生時刻をRAM17に格納し、本NE割り込み処理を終了する。
一方、CPU13は、上記S590にてAD処理実施中ではないと判定したならば、S610に移行して、AD処理終了通知の有無を判定する。尚、このAD処理終了通知は、後述する図7のコンペア割り込み処理のS760でセットされるフラグであり、S610では、このAD処理終了通知用のフラグを参照して、そのフラグがセットされている場合に、AD処理終了通知が有ったと判定する。
【0072】
そして、AD処理終了通知が有ったならば、S620に進んで、そのAD処理終了通知と上記S580でセットしたAD終了要求との各フラグをクリアする。そして更に、続くS630にて、後述する図8の最大値発生角度算出処理に対する最大値発生角度算出処理要求をセットし、本NE割り込み処理を終了する。尚、最大値発生角度算出処理要求も、実際には、図8の最大値発生角度算出処理で参照されるフラグであり、S630では、その最大値発生角度算出処理要求用のフラグをセットする。
【0073】
また、CPU13は、上記S610にてAD処理終了通知が無い(AD処理終了通知用のフラグがセットされていない)と判定したならば、そのまま、本NE割り込み処理を終了する。
尚、本処理2においても、CPU13は、マイコン23内で常時カウントアップされているフリーランニングカウンタの値を時刻として扱っている。
【0074】
そして、特にS550では、今回のNE割り込み処理の起動時刻(AD起動タイミングの時刻)を、1番目の時刻T[1]としてRAM17に格納する。このため、図9の時刻TaでAD起動タイミングに該当するATDC10°CAのNEパルスが発生したとすると、CPU13は、上記S550にて、時刻Taでのフリーランニングカウンタの値を、1番目の時刻T[1]としてRAM17に格納することとなる。
【0075】
また、S600では、S510でAD起動タイミングであると判定された次の回の実行時ならば、今回のNEパルスの発生時刻を2番目の時刻T[2]としてRAM17に格納する。そして、その後は、S560でAD終了タイミングであると判定されるまで、当該S600の実行タイミング毎に、その回のNEパルスの発生時刻を、3番目の時刻T[3],4番目の時刻T[4],…といった具合に、1ずつ増加する番号と対応させてRAM17に記憶する。
【0076】
そして更に、S570では、今回のNE割り込み処理の起動時刻(AD終了タイミングの時刻)を、上記S600で最後に記憶された時刻の番号の次の番号の時刻として、RAM17に格納する。
但し、この例では、図9に示すように、AD起動タイミングが第1気筒#1のATDC10°CAのタイミングであり、AD終了タイミングが第1気筒#1のATDC30°CAのタイミングであるため、S600の処理は、第1気筒#1のATDC20°CAのタイミングでのみ実行されることなる。
【0077】
よって、この例では、図9の時刻TbでATDC20°CAのNEパルスが発生したとすると、CPU13は、S600にて、時刻Tbでのフリーランニングカウンタの値を、2番目の時刻T[2]としてRAM17に格納することとなり、その後、図9の時刻TcでAD終了タイミングに該当するATDC30°CAのNEパルスが発生したとすると、CPU13は、上記S570にて、時刻Tcでのフリーランニングカウンタの値を、3番目の時刻T[3]としてRAM17に格納することとなる。
【0078】
次に、図6のNE割り込み処理におけるS530でコンペア割り込み要求発生時刻がセットされてから、一定時間Tint (=30μs)が経過すると、マイコン23内でコンペア割り込み要求が発生し、CPU13は、図7のコンペア割り込み処理の実行を開始することとなる。
【0079】
そして、図7に示すように、CPU13がコンペア割り込み処理の実行を開始すると、まずS710にて、A/Dコンバータ19から、その時にA/D変換されているデジタル値(AD値)を読み出して、そのAD値をRAM17の所定領域に格納する。
【0080】
次に、CPU13は、続くS715にて、上記S710の処理でそれまでにA/Dコンバータ19から取得したAD値のうちの最大値と、その最大値がA/D変換された時刻(特定値発生時刻に相当し、以下、最大値発生時刻という)Tとを検出して、その検出した最大値及び最大値発生時刻TをRAM17に格納する処理を行う。尚、最大値及び最大値発生時刻Tを求めるS715の処理は、図6のS530でコンペア割り込み要求発生時刻がセットされたことに伴い当該コンペア割り込み処理が実行された場合を起点として実施される。
【0081】
そして、CPU13は、続くS720にて、前述のAD終了要求がセットされているか否かを判定し、AD終了要求がセットされていなければ(S720:無し)、S730に進んで、A/Dコンバータ19を起動して該A/Dコンバータ19にセンサ値(燃焼圧信号の値)をA/D変換させる。そして更に、続くS740にて、今回のコンペア割り込み処理の起動時刻から一定時間Tint (=30μs)後に再びコンペア割り込み要求が発生するように、コンペア割り込み要求発生時刻をセットし、本コンペア割り込み処理を終了する。このため、S720でAD終了要求がセットされていないと判定された場合には、A/Dコンバータ19が再び起動されると共に、上記一定時間Tint 後に本コンペア割り込み処理が再度起動されることとなる。
【0082】
一方、上記S720でAD終了要求がセットされていると判定した場合には(S720:有り)、S750に移行して、本コンペア割り込み処理が起動されるのを禁止し、続くS760にて、図6のNE割り込み処理に対しAD処理終了通知を行う。つまり、AD処理終了通知用のフラグをセットして、図6のNE割り込み処理に対し、監視開始タイミングとしてのAD起動タイミングから監視終了タイミングとしてのAD終了タイミングまでの監視期間におけるセンサ値のA/D変換を、全て終えたことを通知する。そして、その後、本コンペア割り込み処理を終了する。
【0083】
以上のような図6のNE割り込み処理と図7のコンペア割り込み処理とにより、本ECU1の処理2においては、図9に示すように、時刻Taで監視開始タイミングとしてのAD起動タイミングが到来すると(AD起動タイミングに該当するNEパルスが発生すると)、その時点から、時刻Tcで監視終了タイミングとしてのAD終了タイミングが到来するまで(AD終了タイミングに該当するNEパルスが発生するまで)の監視期間の間、A/Dコンバータ19が一定時間Tint 毎に起動され、CPU13は、その一定時間Tint 毎のAD値を順次取得することとなる。尚、図9においても、図5と同様に、A/Dコンバータ19の起動タイミングは、△印で示されている。
【0084】
つまり、図9の時刻Taで監視開始タイミングとしてのAD起動タイミングが到来すると、その時点で、図6のS520により、A/Dコンバータ19が最初に起動され、その際にA/D変換されたAD値は、図6のS530から一定時間Tint 後に実行される最初のコンペア割り込み処理(図7)のS710で、A/Dコンバータ19からCPU13へと読み込まれる。そして更に、その回のコンペア割り込み処理のS730で、A/Dコンバータ19が再び起動され、その際にA/D変換されたAD値は、その回のコンペア割り込み処理から一定時間Tint 後に実行される次回のコンペア割り込み処理(図7)のS710で、A/Dコンバータ19からCPU13へと読み込まれることとなる。そして、以後は、図9の時刻Tcで監視終了タイミングとしてのAD終了タイミングが到来して、図6のS580でAD終了要求がセットされるまで(即ち、図7のS720でAD終了要求がセットされていると判定されるまで)、コンペア割り込み処理が一定時間Tint 毎に実行され、そのコンペア割り込み処理のS730とS710とにより、A/Dコンバータ19の起動とA/Dコンバータ19からのAD値の読み込みとが繰り返し行われることとなる。
【0085】
そして更に、CPU13は、図7のS715の処理により、上記監視期間分の多数のAD値の中から、特定値としての最大値になったAD値(以下、単に「最大値」ともいう)を選択すると共に、その最大値のA/D変換時刻である最大値発生時刻Tを検出することとなる。
【0086】
具体的に説明すると、S715での最大値の選択は、S710で今回取得したAD値と、それまでの最大値とを比較して、大きい方を最新の最大値として記憶する、といった手順で行われる。また、S715での最大値発生時刻Tの検出は、上記の選択で最大値としたAD値をA/Dコンバータ19から取得した回の当該コンペア割り込み処理の起動時刻よりも一定時間Tint だけ前の時刻を、最大値発生時刻Tとする、といった手順で行われる。
【0087】
尚、S710で監視期間内に取得した多数のAD値を全てRAM17内に記憶しておいて、その監視期間の終了後に、それらAD値の中から最大値を選択し、更に、その最大値がAD起動タイミングから何番目のサンプリング周期でA/D変換されたかと、AD起動タイミングの時刻とから、最大値発生時刻Tを求めるようにしても良い。
【0088】
また、本ECU1の処理2においては、図6のS550とS570とS600との各々により、監視期間におけるNEパルスの各発生タイミングであって、監視開始タイミングとしてのAD起動タイミングと、監視終了タイミングとしてのAD終了タイミングとを含む各タイミングの時刻が計測されると共に、その各時刻が、早いものから順に、T[1],T[2],…といった具合に番号付けされて、RAM17に格納される。
【0089】
そして、本ECU1の処理2においては、監視終了タイミングとしてのAD終了タイミングが到来して、図6のS580によりAD終了要求がセットされ、それに伴い、図7のS760でAD処理終了通知用のフラグがセットされると、次のNEパルスが発生した時(即ち、図9における時刻Tcの次にクランク角信号が立ち上がった時)のNE割り込み処理にて、S510,S560,及びS590の全てで否定判定され、S610でAD処理終了通知が有ったと判定されることとなる。そして更に、その回のNE割り込み処理のS630にて、最大値発生角度算出処理要求がセットされることとなる。
【0090】
すると、その最大値発生角度算出処理要求に応じて、図8の最大値発生角度算出処理が実質的に実行され、目的のクランク角(つまり、センサ値が最大値となった時のクランク角)が算出されることとなる。
即ち、図8の最大値発生角度算出処理は定期的に実行される処理であり、CPU13がこの処理の実行を開始すると、まず最初のS810にて、最大値発生角度算出処理要求(詳しくは、最大値発生角度算出処理要求用のフラグ)がセットされているか否かを判定する。
【0091】
そして、S810で最大値発生角度算出処理要求がセットされていないと判定した場合には、そのまま何もせずに本処理を終了するが、S810で最大値発生角度算出処理要求がセットされていると判定した場合には、S820に進む。
S820では、最大値発生角度算出処理要求のフラグをクリアし、続くS830にて、まず、時刻指標mを0に初期化する。
【0092】
次に、S840にて、図6のS550,S570,及びS600によりRAM17に格納された各番号の時刻のうちで、その時の時刻指標mに1を加えた番号(m+1)の時刻T[m+1]が、図7のS715で求められた最大値発生時刻Tよりも大きいか否か(つまり、最大値発生時刻Tが時刻T[m]と時刻T[m+1]との間になっているか否か)を判定し、否定判定したならば、S850で時刻指標mを1インクリメントしてから、再びS840の判定を行う。
【0093】
そして、S840で、時刻T[m+1]が最大値発生時刻Tよりも大きいと肯定判定したならば、S860に進む。つまり、S830〜S850の処理により、監視期間における各NEパルス間(即ち、クランク角信号の各周期)のうちで、最大値発生時刻Tを含んだNEパルス間を特定するようにしており、上記S840で肯定判定された時点では、図6のS550,S570,及びS600によりRAM17に格納された各番号の時刻のうちで、その時の時刻指標mの番号の時刻T[m]から、その時の時刻指標mに1を加えた番号の時刻T[m+1]までのNEパルス間が、最大値発生時刻Tを含んだNEパルス間であると特定されることとなる。
【0094】
S860では、RAM17から、最大値発生時刻Tを含んだNEパルス間の開始時刻である時刻T[m]と、そのNEパルス間の終了時刻T[m+1]とを読み出して、下記の式3により、最大値発生時刻Tを含んだNEパルス間の間隔時間と、そのNEパルス間の開始時刻から最大値発生時刻Tまでの時間との比Rを算出する。
【0095】
R=(T−T[m])÷(T[m+1]−T[m]) …式3
そして更に、続くS870にて、上記S860で求めた比Rと、時刻T[m]でのクランク角CAmと、1NEパルス間分(クランク角信号の1周期分)のクランク角である所定角度α(本実施形態では10°CA)とから、下記の式4により、最大値発生時刻Tでのクランク角γを算出し、そのクランク角γを、センサ値が最大値となった時のクランク角としてRAM17に記憶する。そして、その後、本最大値発生角度算出処理を終了する。
【0096】
γ=α×R+CAm …式4
つまり、S860及びS870の処理では、最大値発生時刻Tを含んだNEパルス間の開始時刻及び終了時刻(T[m],T[m+1])と、図7のS715で求めた最大値発生時刻Tと、上記開始時刻でのクランク角CAmと、1NEパルス間分のクランク角αとから、最大値発生時刻Tでのクランク角γを、センサ値が最大値となった時のクランク角として算出するようにしている。
【0097】
このような最大値発生角度算出処理により、図9に例示する如く、図7のS715で求められた最大値発生時刻Tが監視開始タイミングとしてのAD起動タイミングから1つ目のNEパルス間に含まれていた場合には、RAM17に格納された時刻T[1]〜T[3]のうちのT[1],T[2]と、最大値発生時刻Tと、AD起動タイミングでのクランク角(ATDC10°CA)と、1NEパルス間分のクランク角αとから、最大値発生時刻Tでのクランク角γが求められ、そのクランク角γが、センサ値が最大値となった時のクランク角としてRAM17に格納されて、エンジン3の制御に用いられることとなる。
【0098】
以上のように本実施形態のECU1では、従来装置のように、過去のクランク角信号の周期時間を利用して目的のクランク角を求めるのではなく、センサ値を一定時間Tint 毎にA/D変換した各AD値の中から、最大値となったものを選択して、その選択したAD値のA/D変換時刻である最大値発生時刻Tを求めると共に、監視期間において、その最大値発生時刻Tを含んだNEパルス間を特定して、その特定したNEパルス間の開始時刻及び終了時刻と、最大値発生時刻Tと、上記開始時刻でのクランク角と、クランク角信号の1周期分のクランク角αとから、センサ値が最大値となった時のクランク角を算出するようにしている。
【0099】
このため、センサ値が最大値となった時のクランク角を、エンジン3の回転変動の影響を殆ど受けずに、従来よりも格段に高い精度で検出できるようになる。尚、本実施形態では、図6のNE割り込み処理におけるS510〜S540,S560,S580,S590,及びS610〜S630と図7のコンペア割り込み処理におけるS710,及びS720〜S760とが、請求項2のサンプリング手段に相当し、図6のNE割り込み処理におけるS550,S570,及びS600が、請求項2の計時手段に相当している。そして、図7のコンペア割り込み処理におけるS715が、特定値発生時刻検出手段に相当し、図8の最大値発生角度算出処理が、クランク角算出手段に相当している。
【0100】
一方、上記処理2の例では、センサ値が最大値となった時のクランク角を求めたが、例えば、センサ値が、最小値となった時、予め定められた基準値になった(超えた又は下回った)時、極大値になった時、極小値になった時など、他の特定の値になった時のクランク角も、同様の手順で求めることができる。
【0101】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態では、エンジン3の各気筒7に燃焼圧センサ9を配しているが、1つの気筒(例えば第1気筒#1)の燃焼圧だけを測定する構成としても良い。
【0102】
また、上記実施形態では、燃焼圧センサ9からの燃焼圧信号を検出対象としたが、検出対象のアナログ信号は、他のセンサからの信号であっても良い。
一方、上記実施形態では、A/D変換の周期(サンプリング周期)である一定時間Tint が、常に一定値(30μs)であったが、例えば、その一定時間Tint は、エンジン回転数に応じて、エンジン回転数が低い場合には大きな値に設定し、エンジン回転数が高い場合には小さい値に設定するようにしても良い。このようにすれば、特に上記処理1において、エンジン回転数が低い場合にAD値を格納するためのメモリ領域を小さくすることができる。
【図面の簡単な説明】
【図1】 実施形態のエンジン制御装置(ECU)の構成を制御対象のエンジンと共に表すブロック図である。
【図2】 CPUが処理1のために実行するNE割り込み処理を表すフローチャートである。
【図3】 CPUが処理1のために実行するコンペア割り込み処理を表すフローチャートである。
【図4】 CPUが処理1のために実行するセンサ値算出処理を表すフローチャートである。
【図5】 図2〜図4の処理の作用を表すタイムチャートである。
【図6】 CPUが処理2のために実行するNE割り込み処理を表すフローチャートである。
【図7】 CPUが処理2のために実行するコンペア割り込み処理を表すフローチャートである。
【図8】 CPUが処理2のために実行する最大値発生角度算出処理を表すフローチャートである。
【図9】 図6〜図8の処理の作用を表すタイムチャートである。
【符号の説明】
1…エンジン制御装置(ECU)、3…エンジン、5…クランク角センサ、7…気筒、9…燃焼圧センサ、11…インジェクタ、13…CPU、15…ROM、17…RAM、19…A/Dコンバータ、21…内部バス、23…マイクロコンピュータ(マイコン)、25…入力回路、27…出力回路
Claims (2)
- 所定のセンサから出力されるアナログ信号の値(以下、センサ値という)をデジタル値へとA/D変換するためのA/D変換手段を備えると共に、エンジンのクランク軸が所定角度回転する毎に特定方向のパルスエッジが生じるクランク角信号に基づいて、前記クランク軸の回転角度(以下、クランク角という)を把握するエンジン制御装置において、
クランク角が所定の指令角度になった時の前記センサ値を検出するための手段として、
クランク角が前記指令角度となる前に前記クランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、検出開始タイミングという)から、クランク角が前記指令角度を過ぎた後に前記クランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、検出終了タイミングという)までのサンプリング期間の間、前記A/D変換手段に前記センサ値を一定時間毎にA/D変換させて、そのA/D変換で得られた各デジタル値を所定の記憶手段に記憶させるサンプリング手段と、
前記検出開始タイミングの時刻と前記検出終了タイミングの時刻とを夫々計測する計時手段と、
該計時手段により計測された両時刻と、前記検出開始タイミングでのクランク角から前記指令角度までの角度と、前記所定角度とから、前記サンプリング期間内にてクランク角が前記指令角度になった時刻(以下、指令角度時刻という)を算出して、前記記憶手段に記憶されている前記サンプリング期間分のデジタル値から、前記算出した指令角度時刻のセンサ値を求めるセンサ値算出手段と、
を備えていることを特徴とするエンジン制御装置。 - 所定のセンサから出力されるアナログ信号の値(以下、センサ値という)をデジタル値へとA/D変換するためのA/D変換手段を備えると共に、エンジンのクランク軸が所定角度回転する毎に特定方向のパルスエッジが生じるクランク角信号に基づいて、前記クランク軸の回転角度(以下、クランク角という)を把握するエンジン制御装置において、
クランク角が第1の角度になって前記クランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、監視開始タイミングという)から、クランク角が第2の角度になって前記クランク角信号に前記特定方向のパルスエッジが生じるタイミング(以下、監視終了タイミングという)までの監視期間の中で、前記センサ値が特定の値となった時のクランク角を検出するための手段として、
前記監視期間の間、前記A/D変換手段に前記センサ値を一定時間毎にA/D変換させるサンプリング手段と、
前記監視期間において、前記クランク角信号に前記特定方向のパルスエッジが生じた各タイミングであって、前記監視開始タイミングと前記監視終了タイミングとを含む各タイミングの時刻を夫々計測する計時手段と、
前記A/D変換手段によりA/D変換された各デジタル値の中から、前記特定の値となったデジタル値を選択すると共に、その選択したデジタル値がA/D変換された時刻(以下、特定値発生時刻という)を検出する特定値発生時刻検出手段と、
前記監視期間における前記クランク角信号の各周期のうちで、前記特定値発生時刻を含んだ周期を特定して、該周期の開始時刻と終了時刻とを前記計時手段の計測結果から取得し、その開始時刻及び終了時刻と、前記特定値発生時刻と、前記開始時刻でのクランク角と、前記所定角度とから、前記特定値発生時刻でのクランク角を、前記センサ値が前記特定の値となった時のクランク角として算出するクランク角算出手段と、
を備えていることを特徴とするエンジン制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000281906A JP3777963B2 (ja) | 2000-09-18 | 2000-09-18 | エンジン制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000281906A JP3777963B2 (ja) | 2000-09-18 | 2000-09-18 | エンジン制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002089346A JP2002089346A (ja) | 2002-03-27 |
JP3777963B2 true JP3777963B2 (ja) | 2006-05-24 |
Family
ID=18766496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000281906A Expired - Fee Related JP3777963B2 (ja) | 2000-09-18 | 2000-09-18 | エンジン制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3777963B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5163475B2 (ja) * | 2008-12-18 | 2013-03-13 | 株式会社デンソー | 信号処理装置 |
JP5516622B2 (ja) | 2012-03-14 | 2014-06-11 | 株式会社デンソー | センサ信号の処理装置 |
JP5991180B2 (ja) * | 2012-12-10 | 2016-09-14 | トヨタ自動車株式会社 | 内燃機関の制御装置 |
-
2000
- 2000-09-18 JP JP2000281906A patent/JP3777963B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002089346A (ja) | 2002-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4033138B2 (ja) | 燃焼圧信号処理装置 | |
JP4375331B2 (ja) | ノックセンサ信号処理装置 | |
JP4532450B2 (ja) | エンジン制御用データの処理装置及びエンジン制御装置 | |
JP4420348B2 (ja) | 4サイクルエンジンの行程判別装置 | |
US10378468B2 (en) | Misfire detecting apparatus for internal combustion engine | |
JP3777963B2 (ja) | エンジン制御装置 | |
JP2000352347A (ja) | エンジン制御装置 | |
JP2749181B2 (ja) | 内燃機関の運転制御方法及びその電子制御装置 | |
JPH0660619B2 (ja) | 内燃機関用点火時期制御装置 | |
JP3304763B2 (ja) | 内燃機関の空燃比検出装置 | |
JPH0735773B2 (ja) | 内燃機関用ノツキング制御装置 | |
JP2007040208A (ja) | 内燃機関の制御装置 | |
JPH1193760A (ja) | エンジン制御装置およびその制御方法 | |
US5546909A (en) | Method and system for generating a fuel pulse waveform | |
JPH0765556B2 (ja) | 内燃機関の点火制御装置 | |
JP5279644B2 (ja) | 内燃機関の制御装置 | |
JP4243600B2 (ja) | 内燃機関の燃焼状態判定装置 | |
JP2010251842A (ja) | 制御装置および制御方法 | |
JPS5968543A (ja) | 内燃機関の制御方法 | |
JP2000352348A (ja) | 内燃機関の気筒判別装置 | |
JP2005315169A (ja) | クランク軸回転同期の処理装置及びエンジン制御装置 | |
JP2508635B2 (ja) | 内燃機関用点火時期制御装置 | |
JP2020056367A (ja) | 内燃機関の燃焼状態検出装置および燃焼状態検出方法 | |
JPH0791309A (ja) | 筒内圧最大時期検出装置 | |
JPS6314766B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050308 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060220 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140310 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |