(57)【要約】【課題】  各気筒の所定クランク角位置毎に特定方向のエッジが生じる気筒数パルス式の回転信号から、小さい一定クランク角度毎のタイミングを精度良く生成する。【解決手段】  各気筒のＴＤＣ毎（ここでは２４０°ＣＡ毎）に立ち下がりエッジであるＴＤＣエッジが生じると共に、そのＴＤＣエッジの前の立ち上がりエッジであるＢＴＤＣエッジが発生するクランク角度位置は機関回転速度によって遷移する回転信号から、３０°ＣＡ毎の割り込みを発生させるエンジン制御装置は、ＴＤＣエッジが発生する毎に、そのＴＤＣエッジから次のＢＴＤＣエッジが発生するまでのクランク角度Ｃを予想する。そして、ＢＴＤＣエッジが発生してからＴＤＣエッジが発生するまでの期間では、直前のＴＤＣエッジから今回のＢＴＤＣエッジまでの時間ＴＬを上記予想した角度Ｃで割った時間を、１°ＣＡ分の時間として、３０°ＣＡ毎の割り込みの発生タイミングを設定する。【選択図】  図７
2005330933.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸の回転に対し１／２の比率で回転するシグナルロータに等しい間隔で気筒数だけ設けられたクランク角検出用被検出体の通過を検出する電磁ピックアップ式回転センサからの信号を波形整形することにより、前記エンジンの各気筒の所定クランク角位置毎に特定方向のエッジ（以下、この各気筒の所定クランク角位置毎のエッジを特定エッジという）が発生すると共に、該特定エッジの前には該特定エッジとは反対方向のエッジ（以下、この特定エッジとは反対方向で且つ該特定エッジの直前のエッジを非特定エッジという）が発生する回転信号を出力する波形整形回路を備え、
前記回転信号に基づいて、該回転信号に前記特定エッジが発生するクランク角度間隔よりも小さい一定クランク角度毎のタイミングを設定し、その設定したタイミング毎に特定の処理を実行するエンジン制御装置において、
前記回転信号に前記特定エッジが発生する毎に、該特定エッジが前回発生してから今回発生するまでの時間を算出する特定エッジ間隔時間算出手段と、
前記回転信号に前記特定エッジが発生する毎に、前記特定エッジ間隔時間算出手段により今回算出された時間と、前記特定エッジが前回発生してから今回の特定エッジの直前の前記非特定エッジが発生した時までの時間との比に基づいて、前記特定エッジが前回発生してから前記非特定エッジが発生した時までのクランク角度（以下、非特定エッジ発生所要角度という）を算出すると共に、その算出した非特定エッジ発生所要角度に基づいて、前記特定エッジの今回の発生時から前記非特定エッジが次に発生するまでのクランク角度を予想するクランク角度予想手段と、
前記回転信号に前記非特定エッジが発生する毎に、前記特定エッジが前回発生してから当該非特定エッジが今回発生した時までの時間を算出する非特定エッジ発生所要時間算出手段とを備え、
前記回転信号に前記特定エッジが発生してから前記非特定エッジが発生するまでの期間は、前記特定エッジ間隔時間算出手段により算出された時間を前記特定エッジが発生するクランク角度間隔で割った第１の時間が、前記クランク軸が１°ＣＡ回転するのに要する時間であるとして、前記一定クランク角度毎のタイミングを設定し、
前記回転信号に前記非特定エッジが発生してから前記特定エッジが発生するまでの期間は、前記非特定エッジ発生所要時間算出手段により算出された時間を前記クランク角度予想手段により予想されたクランク角度で割った第２の時間が、前記クランク軸が１°ＣＡ回転するのに要する時間であるとして、前記一定クランク角度毎のタイミングを設定するように構成されていること、
を特徴とするエンジン制御装置。
【請求項２】
請求項１に記載のエンジン制御装置において、
前記回転信号に前記特定エッジが発生する毎に、前記第１の時間に前記一定クランク角度を乗じた時間を、前記一定クランク角度分の時間として算出する第１の一定クランク角度時間算出手段と、
前記回転信号に前記非特定エッジが発生する毎に、前記第２の時間に前記一定クランク角度を乗じた時間を、前記一定クランク角度分の時間として算出する第２の一定クランク角度時間算出手段とを備え、
前記回転信号に前記特定エッジが発生してから前記非特定エッジが発生するまでの間は、前記特定エッジの発生タイミングから前記第１の一定クランク角度時間算出手段により算出された時間毎のタイミングを、前記一定クランク角度毎のタイミングとして設定し、
前記回転信号に前記非特定エッジが発生したときから１回目の前記一定クランク角度毎のタイミング（以下、非特定エッジ発生後の１回目タイミングという）は、前記回転信号に前記非特定エッジが発生したときから下記の式１における時間Ｔａが経過した時となるように設定し、
前記非特定エッジ発生後の１回目タイミングから前記回転信号に次の前記特定エッジが発生するまでの間は、前記非特定エッジ発生後の１回目タイミングから前記第２の一定クランク角度時間算出手段により算出された時間毎のタイミングを、前記一定クランク角度毎のタイミングとして設定するように構成されていること、
を特徴とするエンジン制御装置。
[数１]
Ｔａ＝（（Ｄ＋１）×Ｃａ−Ｃｂ）×Ｔｂ…式１
但し、
Ｄは、前記回転信号に前記特定エッジが前回発生してから前記非特定エッジが今回発生したときまでに前記特定の処理が既に実行された回数であり、
Ｃａは、前記一定クランク角度であり、
Ｃｂは、前記回転信号に前記特定エッジが前回発生したときに、前記クランク角度予想手段により予想されたクランク角度であり、
Ｔｂは、前記第２の時間である。
【請求項３】
請求項１又は請求項２に記載のエンジン制御装置において、
前記回転信号に前記特定エッジが発生してから該特定エッジが次に発生するまでの間に前記特定の処理が実行された回数を計数する計数手段と、
前記回転信号に前記特定エッジが発生する毎に、前記クランク角度予想手段により今回予想されたクランク角度に基づいて、前記回転信号に前記特定エッジが今回発生してから前記非特定エッジが次に発生するまでの間に前記特定の処理が実行されるべき目標回数を設定する中間目標回数設定手段とを備え、
前記回転信号に前記特定エッジが発生してから前記非特定エッジが発生するまでの間に、前記計数手段によって計数された回数が前記中間目標回数設定手段によって設定された目標回数に達したらば、前記回転信号に前記非特定エッジが発生するまで、前記一定クランク角度毎のタイミングを新たに設定しないように構成されていること、
を特徴とするエンジン制御装置。
【請求項４】
請求項１又は請求項２に記載のエンジン制御装置において、
前記回転信号に前記特定エッジが発生してから該特定エッジが次に発生するまでの間に前記特定の処理が実行された回数を計数する計数手段と、
前記回転信号に前記特定エッジが発生する毎に、前記クランク角度予想手段により今回予想されたクランク角度に基づいて、前記回転信号に前記特定エッジが今回発生してから前記非特定エッジが次に発生するまでの間に前記特定の処理が実行されるべき目標回数を設定する中間目標回数設定手段とを備え、
前記回転信号に前記非特定エッジが発生したときに、前記計数手段によって計数されている回数が前記中間目標回数設定手段によって設定された目標回数に達していなければ、前記特定の処理を、前記計数手段によって計数される回数が前記目標回数に達するまで繰り返し実行するように構成されていること、
を特徴とするエンジン制御装置。
【請求項５】
請求項３又は請求項４に記載のエンジン制御装置において、
前記回転信号に前記非特定エッジが発生してから前記特定エッジが発生するまでの間に、前記計数手段によって計数された回数が制限値に達したらば、前記回転信号に前記特定エッジが発生するまで前記特定の処理を実行しないように構成されていること、
を特徴とするエンジン制御装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載のエンジン制御装置において、
前記クランク角度予想手段は、
前記非特定エッジ発生所要角度の平均値を算出し、その算出した平均値を、前記特定エッジの今回の発生時から前記非特定エッジが次に発生するまでのクランク角度の予想値とすること、
を特徴とするエンジン制御装置。
【請求項７】
請求項１ないし請求項５の何れか１項に記載のエンジン制御装置において、
前記クランク角度予想手段は、
前記非特定エッジ発生所要角度の平均値を算出すると共に、
今回算出した非特定エッジ発生所要角度から前記平均値を減じた差分値を、前記回転信号に今回発生した前記特定エッジに対応する気筒についての差分値として記憶する差分値記憶処理を行い、
更に、今回算出した前記平均値に、前記差分値記憶処理によって記憶している各気筒毎の差分値のうち、前記回転信号に次に発生する前記特定エッジに対応した気筒についての差分値を加算して、その加算後の値を、前記特定エッジの今回の発生時から前記非特定エッジが次に発生するまでのクランク角度の予想値とすること、
を特徴とするエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジン制御装置に関し、特に、各気筒の所定クランク角位置毎に特定方向のエッジが生じる気筒数パルス式の回転信号を用いたエンジン制御装置に関するものである。
【背景技術】
【０００２】
従来より、エンジン（内燃機関）の制御システムとして、クランク軸センサからの回転信号と、カム軸センサから出力される気筒判別用の信号とに基づいて、クランク角位置の特定（いわゆる気筒判別）と機関回転速度（エンジン回転数）の検出とを行うものが知られている（例えば、特許文献１，２参照）。
【０００３】
これに対して、クランク軸センサを備えずに、カム軸センサからの信号のみを用いてクランク角位置の特定及び機関回転速度の検出を行うようにしたクランク軸センサレスの制御システムもある（例えば、特許文献３，４，５，６参照）。
【０００４】
そして、こうしたクランク軸センサレスシステムでは、クランク軸の回転に対し１／２の比率で回転するカム軸に固定されたシグナルロータの外周面に、等しい間隔で気筒数だけクランク角検出用被検出体が設けられると共に、所定の一個のクランク角検出用被検出体に後続する一つの前記間隔を不等間隔に分割するように基準位置検出用被検出体が設けられる。そして更に、これら被検出体の通過位置近傍に、電磁ピックアップ式の回転センサであるカム軸センサが配置される。尚、シグナルロータの各被検出体は、磁性体性の突起で構成される。
【０００５】
よって、そのカム軸センサから出力される回転信号には、図９に示すように、各気筒の所定クランク角位置毎（この例では、各気筒のＴＤＣ（上死点）毎）に有効エッジとしての立ち下がりエッジが発生すると共に、何れか１つの気筒のＴＤＣからあるクランク角度後のクランク角位置であって、上記シグナルロータにおける基準位置検出用被検出体の位置に対応したクランク角位置（図９にて「Ｒ」を付した位置）でも立ち下がりエッジが発生する。
【０００６】
尚、図９は、３気筒エンジンの場合を例示している。また、こうした回転信号は、基準位置検出用被検出体の通過に伴う基準位置検出用の立ち下がりエッジを除けば、各気筒間の位相差相当のクランク角度毎（３気筒であれば２４０°ＣＡ（＝７２０°ＣＡ／３）毎）に立ち下がりエッジが発生することとなり、その発生回数は気筒数と同じであるため、気筒数パルス式の回転信号と呼ばれる。そして、こうした回転信号を制御に用いるエンジン制御装置は、例えば、回転信号にて連続する３つの立ち下がりエッジ間隔時間（Ｔi-2，Ｔi-1，Ｔi）を常時測定して、「Ｔi-2×Ｔi／（Ｔi-1×Ｔi-1）＞定数ｋ」の関係が成立したか否かにより気筒判別を行い、また、回転信号の立ち下がりエッジ間隔時間によって機関回転速度を算出している。
【０００７】
一方、こうした電磁ピックアップ式のカム軸センサからの回転信号は、実際には、エンジン制御装置に設けられた波形整形回路により、図９の如く所定の閾値Ｖｒｅｆと大小比較されて二値化され、その波形整形後の回転信号がエンジンの制御に用いられることとなるが、波形整形後の回転信号における立ち上がりエッジの方は、従来より制御には使用されていない。これは、図９に示すように、回転信号のエッジのうち、有効エッジでない方の立ち上がりエッジが発生するクランク角位置は、機関（エンジン）の低回転時には遅目になり、高回転時には早目になるといった具合に、機関回転速度に応じて遷移してしまうからである。
【０００８】
ところで、クランク軸センサとカム軸センサとを用いる２センサ式の制御システムでは、クランク軸センサから出力される回転信号が、例えば１０°ＣＡ毎といった比較的細かいクランク角度毎に立ち下がりエッジが生じるような信号とされる。このため、エンジン制御装置は、その回転信号を分周することで、例えば３０°ＣＡ毎といった一定クランク角度毎のタイミングを生成し、その生成したタイミング毎に点火や燃料噴射に関する特定のタスク（ソフトウェアの処理）を実行している。
【０００９】
ここで、例えば、このような２センサ式システムのエンジン制御装置で用いられるソフトウェアを、クランク軸センサレスシステムのエンジン制御装置に流用しようとした場合、そのクランク軸センサレスシステムのエンジン制御装置においても、例えば３０°ＣＡ毎といったタイミングであって、気筒数パルス式の回転信号に有効エッジが発生するクランク角度間隔（＝７２０°ＣＡ／気筒数Ｎ）よりも小さい一定クランク角度毎のタイミングを生成する必要が生じる。
【００１０】
そして、気筒数パルス式の回転信号から、例えば３０°ＣＡ毎といった短いクランク角度毎のタイミングを生成して、そのタイミング毎に特定のタスクを実行するための手法としては、回転信号に有効エッジが発生する毎に、その有効エッジが前回発生してから今回発生するまでの有効エッジ間隔時間を算出すると共に、その有効エッジ間隔時間から３０°ＣＡ分の時間（クランク軸が３０度回転するのに要する時間）を算出し、その算出した時間毎に、マイコンのタイマ機能によりタイマ割り込みを発生させて、そのタイマ割り込み処理として特定のタスクを実行する、といった手法が考えられる。つまり、前回の有効エッジ間隔時間を、有効エッジが発生するクランク角度間隔（３気筒ならば２４０°ＣＡ）で割った時間が、次回の有効エッジ間隔における１°ＣＡ分の時間であると見なして、３０°ＣＡ分の時間を算出し、その時間毎にタイマ割り込みを発生させるのである。
【特許文献１】特開２００１−９０６００号公報
【特許文献２】特開２００２−２７６４５３号公報
【特許文献３】特開平５−１８７２９１号公報
【特許文献４】特開平５−２２２９８１号公報
【特許文献５】特開平３−２５３７６６号公報
【特許文献６】特開平３−１１５７５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記手法では、回転信号に有効エッジが発生したタイミングでしか上記タスクの実行間隔（即ち、設定される上記一定クランク角度毎のタイミングの時間間隔）が更新されないため、機関回転速度の急激な増減（加速、減速）に対する追従性が悪いという問題がある。
【００１２】
つまり、一定クランク角度が３０°ＣＡであるとして説明すると、減速時には、タスクの実行間隔（即ち、前回の有効エッジ間隔時間から算出した３０°ＣＡ分の時間）が実際の３０°ＣＡ分の時間よりも短くなってしまい、また加速時には、タスクの実行間隔が実際の３０°ＣＡ分の時間よりも長くなってしまい、最悪の場合はタスクの起床抜けが発生することとなる。
【００１３】
そして、回転信号に有効エッジが発生するクランク角度間隔が長くなればなるほど、上記問題点が浮き彫りとなり、気筒数パルス式の回転信号では、各気筒の所定クランク角位置毎にしか有効エッジが発生しないため、機関の加減速による影響が生じ易いのである。
【００１４】
また特に、気筒数パルス式の回転信号において、有効エッジの発生タイミングが各気筒のＴＤＣに当たる場合には、ＴＤＣ前の３０°ＣＡタスクで点火や噴射の制御を行うこととなるため、タスク抜けはもちろんのこと、その有効エッジ発生前周辺でのタスク間隔がばらつくことは、好ましくない。
【００１５】
本発明は、こうした問題に鑑みなされたものであり、各気筒の所定クランク角位置毎に特定方向のエッジが生じる気筒数パルス式の回転信号を用いたエンジン制御装置において、その特定方向のエッジが発生するクランク角度間隔よりも小さい一定クランク角度毎のタイミングを精度良く生成して制御精度を向上させることを目的としている。
【課題を解決するための手段】
【００１６】
上記目的を達成するためになされた請求項１のエンジン制御装置では、波形整形回路が、エンジンのクランク軸の回転に対し１／２の比率で回転するシグナルロータに等しい間隔で気筒数だけ設けられたクランク角検出用被検出体の通過を検出する電磁ピックアップ式回転センサからの信号を波形整形することにより、エンジンの各気筒の所定クランク角位置毎に特定方向のエッジ（以下、この各気筒の所定クランク角位置毎のエッジを特定エッジという）が発生すると共に、その特定エッジの前には該特定エッジとは反対方向のエッジ（以下、この特定エッジとは反対方向で且つ該特定エッジの直前のエッジを非特定エッジという）が発生する回転信号を出力する。
【００１７】
そして、このエンジン制御装置では、上記波形整形回路から出力される回転信号に基づいて、該回転信号に特定エッジが発生するクランク角度間隔（＝７２０°ＣＡ／気筒数Ｎ）よりも小さい一定クランク角度毎のタイミングを設定し、その設定したタイミング毎に特定の処理を実行する。
【００１８】
ここで特に、請求項１のエンジン制御装置では、回転信号に特定エッジが発生する毎に、特定エッジ間隔時間算出手段が、該特定エッジが前回発生してから今回発生するまでの時間を算出し、クランク角度予想手段が、その特定エッジ間隔時間算出手段により今回算出された時間と、特定エッジが前回発生してから今回の特定エッジの直前の非特定エッジが発生した時までの時間との比に基づいて、特定エッジが前回発生してから非特定エッジが発生した時までのクランク角度（以下、非特定エッジ発生所要角度という）を算出すると共に、その算出した非特定エッジ発生所要角度に基づいて、特定エッジの今回の発生時から非特定エッジが次に発生するまでのクランク角度を予想する。
【００１９】
尚、特定エッジ間隔時間算出手段が算出した時間（特定エッジが前回発生してから今回発生するまでの時間）をＴＳとし、特定エッジが前回発生してから今回の特定エッジの直前の非特定エッジが発生した時までの時間をＴＬとし、気筒数をＮとすると、非特定エッジ発生所要角度Ｉは、「Ｉ＝ＴＬ／ＴＳ×（７２０°ＣＡ／Ｎ）」の式によって算出することができる。
【００２０】
また、請求項１のエンジン制御装置では、回転信号に非特定エッジが発生する毎に、非特定エッジ発生所要時間算出手段が、特定エッジが前回発生してから当該非特定エッジが今回発生した時までの時間を算出する。
【００２１】
そして、このエンジン制御装置では、回転信号に特定エッジが発生してから非特定エッジが発生するまでの期間は、特定エッジ間隔時間算出手段により算出された時間を特定エッジが発生するクランク角度間隔で割った第１の時間が、１°ＣＡ分の時間（即ち、クランク軸が１°ＣＡ回転するのに要する時間）であるとして、上記一定クランク角度毎のタイミングを設定し、回転信号に非特定エッジが発生してから特定エッジが発生するまでの期間は、非特定エッジ発生所要時間算出手段により算出された時間をクランク角度予想手段により予想されたクランク角度で割った第２の時間が、１°ＣＡ分の時間であるとして、上記一定クランク角度毎のタイミングを設定するように構成されている。
【００２２】
つまり、このエンジン制御装置では、回転信号に特定エッジが発生してから非特定エッジが発生するまでの期間は、前述した従来の手法と同様に、上記第１の時間が１°ＣＡ分の時間であるとして、一定クランク角度毎のタイミングを設定している（換言すれば、第１の時間に一定クランク角度を乗じた時間を、一定クランク角度分の時間としている）が、特に、回転信号に特定エッジが発生する毎に、その時点から非特定エッジが次に発生するまでのクランク角度を、過去の非特定エッジ発生所要角度（換言すれば、過去の上記ＴＳとＴＬとの比率）から予想し、回転信号に非特定エッジが発生してから特定エッジが発生するまでの期間については、その予想したクランク角度Ｃｂと、その予想したクランク角度分の実際の時間（即ち、前回の特定エッジから今回の非特定エッジまでの実際の時間）ＴＬとを用い、「ＴＬ／Ｃｂ」を１°ＣＡ分の時間として、一定クランク角度毎のタイミングを設定するようにしている。
【００２３】
このような請求項１のエンジン制御装置によれば、回転信号に特定エッジが発生したタイミングだけでなく、回転信号に非特定エッジが発生したタイミングでも、特定の処理の実行間隔（即ち、設定する一定クランク角度毎のタイミングの間隔）を、実際の機関回転速度に即した時間間隔に更新することができる。よって、特定の処理を実行する一定クランク角度毎のタイミングを精度良く設定して、制御精度を向上させることができる。
【００２４】
尚、上記第１の時間は、前回の特定エッジ間隔時間に基づくため、今回の特定エッジ間隔での機関回転速度が前回の特定エッジ間隔での機関回転速度のａ倍になったとすると、実際の１°ＣＡ相当時間のａ倍になる。
【００２５】
これに対して、上記第２の時間については、機関回転速度が上昇すると、図９に示した回転信号の特徴から、非特定エッジの発生タイミングが早まって、今回の特定エッジから次の非特定エッジまでの実際のクランク角度が、予想したクランク角度よりも小さくなるため、実際の１°ＣＡ相当時間よりも小さくなるが、今回の特定エッジ間隔での機関回転速度が前回の特定エッジ間隔での機関回転速度のａ倍になったとしても、実際の１°ＣＡ相当時間の１／ａにまで小さくなる訳ではない。
【００２６】
つまり、第１の時間は、連続する特定エッジ間隔同士での機関回転速度の変動率と同じだけの誤差を持つこととなるが、特定エッジから次の非特定エッジまでのクランク角度は、機関回転速度の変動率ほどは変動しないため、第２の時間は、第１の時間ほど機関回転速度の変動に影響を受けないと言える。
【００２７】
よって、請求項１のエンジン制御装置によれば、回転信号に特定エッジが発生するクランク角度間隔よりも小さい一定クランク角度毎のタイミングを、従来の手法よりも精度良く生成することができるのである。
【００２８】
ところで、一定クランク角度毎のタイミングは、具体的には請求項２に記載の如く設定するように構成するのが好ましい。
即ち、請求項２のエンジン制御装置では、回転信号に特定エッジが発生する毎に、第１の一定クランク角度時間算出手段が、前記第１の時間（即ち、特定エッジ間隔時間算出手段により今回算出された時間を特定エッジが発生するクランク角度間隔で割った時間）に前記一定クランク角度を乗じた時間を、一定クランク角度分の時間（クランク軸が一定クランク角度だけ回転するのに要する時間）として算出する。
【００２９】
また、回転信号に非特定エッジが発生する毎に、第２の一定クランク角度時間算出手段が、前記第２の時間（即ち、非特定エッジ発生所要時間算出手段により今回算出された時間をクランク角度予想手段により予想されたクランク角度で割った時間）に前記一定クランク角度を乗じた時間を、一定クランク角度分の時間として算出する。
【００３０】
そして、このエンジン制御装置では、下記（１）〜（３）の手順で一定クランク角度毎のタイミングを設定する。
（１）まず、回転信号に特定エッジが発生してから非特定エッジが発生するまでの間は、今回の特定エッジの発生タイミングから前記第１の一定クランク角度時間算出手段により算出された時間毎のタイミングを、一定クランク角度毎のタイミングとして設定する。
【００３１】
（２）また、回転信号に非特定エッジが発生したときから１回目の一定クランク角度毎のタイミング（以下、非特定エッジ発生後の１回目タイミングという）は、回転信号に非特定エッジが発生したときから下記の式１における時間Ｔａが経過した時となるように設定する。
【００３２】
［数１］
Ｔａ＝（（Ｄ＋１）×Ｃａ−Ｃｂ）×Ｔｂ…式１
但し、Ｄは、回転信号に特定エッジが前回発生してから非特定エッジが今回発生したときまでに前記特定の処理が既に実行された回数であり、Ｃａは、一定クランク角度であり、Ｃｂは、回転信号に特定エッジが前回発生したときに、クランク角度予想手段により予想されたクランク角度であり、Ｔｂは、前記第２の時間である。
【００３３】
（３）そして、上記非特定エッジ発生後の１回目タイミングから回転信号に次の特定エッジが発生するまでの間は、その非特定エッジ発生後の１回目タイミングから前記第２の一定クランク角度時間算出手段により算出された時間毎のタイミングを、一定クランク角度毎のタイミングとして設定する。
【００３４】
このような請求項２のエンジン制御装置によれば、特に上記（２）の手順により、非特定エッジ発生後の１回目タイミングは、クランク角度予想手段により予想されたクランク角度を基にして、回転信号に特定エッジが前回発生したクランク角位置から一定クランク角度の整数倍のクランク角位置となるように、且つ、第２の時間を１°ＣＡ分の時間として設定されることとなり、一定クランク角度毎のタイミングを設定するのに最新の機関回転速度情報を含んだ第２の時間を反映させることを、回転信号に非特定エッジが発生した時点からいち早く行うことができる。よって、一定クランク角度毎のタイミングを一層精度良く設定することができる。
【００３５】
次に、請求項３のエンジン制御装置では、請求項１，２のエンジン制御装置において、計数手段が、回転信号に特定エッジが発生してから該特定エッジが次に発生するまでの間に前記特定の処理が実行された回数を計数する。
【００３６】
また、回転信号に特定エッジが発生する毎に、中間目標回数設定手段が、クランク角度予想手段により今回予想されたクランク角度に基づいて、回転信号に特定エッジが今回発生してから非特定エッジが次に発生するまでの間に前記特定の処理が実行されるべき目標回数を設定する。尚、一定クランク角度をＣａとし、クランク角度予想手段により予想されたクランク角度をＣｂとすると、「Ｃｂ／Ｃａ」の値を、そのまま目標回数として設定しても良いし、その「Ｃｂ／Ｃａ」の値を、四捨五入や切り捨て又は切り上げといった整数化処理により整数化した値を、目標回数として設定するようにしても良い。
【００３７】
そして、このエンジン制御装置では、回転信号に特定エッジが発生してから非特定エッジが発生するまでの間に、計数手段によって計数された回数が中間目標回数設定手段によって設定された目標回数に達したらば、回転信号に非特定エッジが発生するまで、一定クランク角度毎のタイミングを新たに設定しないように構成されている。
【００３８】
このようなエンジン制御装置によれば、機関の急減速時に、特定の処理の実行回数が必要以上に多くなってしまうことを、回転信号に特定エッジが発生するよりも早い非特定エッジの発生時点で防止することでき、制御精度を向上させることができる。
【００３９】
一方、請求項４のエンジン制御装置も、請求項１，２のエンジン制御装置において、請求項３のエンジン制御装置と同様の計数手段及び中間目標回数設定手段を備えている。
そして、このエンジン制御装置では、回転信号に非特定エッジが発生したときに、計数手段によって計数されている回数が中間目標回数設定手段によって設定された目標回数に達していなければ、前記特定の処理を、計数手段によって計数される回数が前記目標回数に達するまで繰り返し実行するように構成されている。
【００４０】
このようなエンジン制御装置によれば、機関の急加速時に、特定の処理の実行回数が不足してしまうこと（タスク抜け）を、回転信号に特定エッジが発生するよりも早い非特定エッジの発生時点で防止することでき、制御精度を向上させることができる。
【００４１】
次に、請求項５のエンジン制御装置では、請求項３，４のエンジン制御装置において、回転信号に非特定エッジが発生してから特定エッジが発生するまでの間に、計数手段によって計数された回数が制限値に達したらば、回転信号に特定エッジが発生するまで前記特定の処理を実行しないように構成されている。
【００４２】
このようなエンジン制御装置によれば、回転信号に特定エッジが発生するクランク角度間隔当たりの特定の処理の実行回数が、機関の急減速時に制限値を超えてしまうことを防止することでき、制御精度を向上させることができる。
【００４３】
尚、制限値は、回転信号に特定エッジが発生するクランク角度間隔において特定の処理が実行されるべき回数に応じた値に設定しておけば良い。
また、請求項５のエンジン制御装置において、回転信号に特定エッジが発生したときに、その時点で計数手段により計数されている回数が制限値に達していなければ、前記特定の処理を、前回に特定エッジが発生してからの実行回数がその制限値に達するまで、繰り返し実行するように構成しても良い。そして、このように構成すれば、機関の急加速時に、特定の処理の実行回数が不足してしまうことを確実に防止することができる。
【００４４】
ところで、クランク角度予想手段は、今回算出した非特定エッジ発生所要角度を、そのまま、特定エッジの今回の発生時から非特定エッジが次に発生するまでのクランク角度の予想値とするように構成することができる。
【００４５】
また、クランク角度予想手段は、請求項６に記載の如く、前記非特定エッジ発生所要角度の平均値を更に算出し、その算出した平均値を、特定エッジの今回の発生時から非特定エッジが次に発生するまでのクランク角度の予想値とするように構成すれば、その予想値の精度を高めることができる。
【００４６】
また更に、クランク角度予想手段は、請求項７に記載の如く、前記非特定エッジ発生所要角度の平均値を算出すると共に、今回算出した非特定エッジ発生所要角度から前記平均値を減じた差分値を、回転信号に今回発生した特定エッジに対応する気筒についての差分値として記憶する差分値記憶処理を行い、更に、今回算出した前記平均値に、前記差分値記憶処理によって記憶している各気筒毎の差分値のうち、回転信号に次に発生する特定エッジに対応した気筒についての差分値を加算して、その加算後の値を、特定エッジの今回の発生時から非特定エッジが次に発生するまでのクランク角度の予想値とするように構成すれば、その予想値の精度を一層高めることができる。
【００４７】
回転信号にエッジが発生するタイミングは、シグナルロータや回転センサの特性ばらつきに起因して、気筒毎に若干のばらつきが生じる可能性があるが、そのようなハードウェア特性に起因した気筒毎のエッジ発生タイミングばらつきを踏まえた角度予測が可能となるからである。
【発明を実施するための最良の形態】
【００４８】
以下、本発明が適用された実施形態のエンジン制御装置について、図面を用いて説明する。尚、本実施形態のエンジン制御装置は、例えば３気筒の４ストローク１サイクルエンジン（いわゆる４サイクルエンジン）を、クランク軸センサレスのシステム形態で制御するものである。
【００４９】
まず図１に示すように、本実施形態のエンジン制御装置１は、マイコン（マイクロコンピュータ）３、波形整形回路５、入力回路７、Ａ／Ｄ変換器９、及び出力回路１１等を備えている。そして、エンジン側に取り付けられた電磁ピックアップ式回転センサであるカム軸センサ１９からの回転信号が、波形整形回路５により波形整形されてマイコン３に入力される。
【００５０】
ここで、エンジンのクランク軸の回転に対し１／２の比率で回転するカム軸には、シグナルロータ１３が固定されている。
そして、シグナルロータ１３の外周面には、エンジンの気筒数と同じ３つのクランク角検出用突起（クランク角検出用被検出体に相当）１５ａ，１５ｂ，１５ｃが１２０°毎に等間隔に設けられている。このクランク角検出用突起１５ａ，１５ｂ，１５ｃは、各気筒のＴＤＣ（上死点）より少し前の所定クランク角位置に対応する位置にそれぞれ設けられており、突起１５ａが第１気筒＃１に対応し、突起１５ｂが第２気筒＃２に対応し、突起１５ｃが第３気筒＃３に対応するものとなっている。
【００５１】
また、シグナルロータ１３の外周面には、気筒判別用突起１７が設けられており、この気筒判別用突起１７は、所定の一個のクランク角検出用突起１５ｃに後続して、そのクランク角検出用突起１５ｃとクランク角検出用突起１５ａとの間隔を不等間隔に分割する位置（この例では、クランク角検出用突起１５ｃから１５°を隔てた位置）に配置されている。
【００５２】
それら各突起１５ａ，１５ｂ，１５ｃ，１７は磁性体からなり、その各突起１５ａ，１５ｂ，１５ｃ，１７の通過位置近傍に、カム軸センサ１９が配置されている。
そして、カム軸センサ１９は、各突起１５ａ，１５ｂ，１５ｃ，１７の通過を検出して、図９に示したような回転信号を出力する。そして更に、そのカム軸センサ１９から出力される回転信号が、波形整形回路５により、図９に示したように所定の閾値Ｖｒｅｆと大小比較されて矩形波に波形整形され、その波形整形後の回転信号が、マイコン３に入力されるのである。
【００５３】
尚、以下の説明において、回転信号とは、特に断らない限り、波形整形回路５によって波形整形された後の回転信号を指すものとする。
また、本実施形態において、回転信号には、図２に示すように、各気筒のＴＤＣのクランク角位置（各気筒がＴＤＣとなる２４０°ＣＡ毎のクランク角位置）で、上記各クランク角検出用突起１５ａ，１５ｂ，１５ｃの通過による有効エッジとしての立ち下がりエッジが発生すると共に、第３気筒＃３のＴＤＣから３０°ＣＡ後のクランク角位置でも、上記気筒判別用突起１７の通過による立ち下がりエッジが発生するようになっている。
【００５４】
そして、以下の説明において、回転信号のエッジのうち、各気筒のＴＤＣ毎の立ち下がりエッジを、ＴＤＣエッジ（特定エッジに相当）といい、そのＴＤＣエッジの直前の立ち上がりエッジを、ＢＴＤＣエッジ（非特定エッジに相当）という。尚、ＢＴＤＣエッジが発生するクランク角位置は、図９を用いて説明したように、低回転時には遅目になり、高回転時には早目になるといった具合に、機関回転速度に応じて若干遷移する。
【００５５】
一方、本エンジン制御装置１のマイコン３には、エンジンを始動させる際にオンされるスタータスイッチや、アクセルペダルが全閉の時にオンされるアイドルスイッチなどからの各種スイッチ信号が、入力回路７を介して入力される。また、マイコン３には、吸入空気量を検出するエアフロメータや、エンジンの冷却水温を検出する水温センサなどからの各種センサ信号が、Ａ／Ｄ変換器９を介して入力される。
【００５６】
そして、マイコン３は、上記各種スイッチ信号及び各種センサ信号に基づいて、エンジンの運転状態を検出すると共に、波形整形回路５からの回転信号に基づいて、気筒判別と機関回転数の検出とを行うが、特に、その回転信号から３０°ＣＡ毎のタイミング（一定クランク角度毎のタイミングに相当）を生成して、そのタイミング毎に点火や燃料噴射を制御するための３０°ＣＡタスク（特定の処理に相当）を実行するようになっている。
【００５７】
そこで次に、マイコン３が回転信号から３０°ＣＡ毎のタイミングを生成して３０°ＣＡタスクを起床するために実行する処理について、図３〜図６のフローチャートを用いて説明する。
【００５８】
マイコン３は、回転信号に立ち下がりエッジが発生する毎に、前回の立ち下がりエッジから今回の立ち下がりエッジまでの立ち下がりエッジ間隔時間を算出すると共に、例えば、３つ連続の立ち下がりエッジ間隔時間（Ｔi-2，Ｔi-1，Ｔi）が、前述した「Ｔi-2×Ｔi／（Ｔi-1×Ｔi-1）＞定数ｋ：ｋは例えば５」の関係を満たしたならば、そのときの立ち下がりエッジが第１気筒＃１のＴＤＣエッジ（即ち、第１気筒＃１のＴＤＣタイミングで発生する立ち下がりエッジ）であると認識する（図２参照）。尚、こうした気筒判別の手法は、特許文献３，４等に記載されている。そして、マイコン３は、このような気筒判別により、第１気筒＃１のＴＤＣエッジを検知できたならば、その第１気筒＃１のＴＤＣエッジを基準にした３回目の立ち下がりエッジ（即ち、気筒判別用突起１７による立ち下がりエッジ）以外の各立ち下がりエッジを、ＴＤＣエッジと認識して、その各ＴＤＣエッジの発生タイミング毎に、図３に示すＴＤＣイベント処理を実行する。
【００５９】
そして、図３に示すように、マイコン３がＴＤＣイベント処理の実行を開始すると、まずＳ１１０にて、今回のＴＤＣエッジが発生した時刻（図２のＦを参照）をＴＤＣ時刻として記憶する。尚、マイコン３では、回転信号にエッジが発生すると、その時のフリーランタイマの値がキャプチャレジスタに格納されるようになっており、このＳ１１０では、上記キャプチャレジスタに格納されたフリーランタイマの値をＴＤＣ時刻としてＲＡＭに記憶する。
【００６０】
次に、Ｓ１２０にて、上記Ｓ１１０で今回記憶したＴＤＣ時刻（今回のＴＤＣ時刻）から前回記憶したＴＤＣ時刻（前回のＴＤＣ時刻）を引いた時間を、ＴＤＣエッジが前回発生してから今回発生するまでの２４０°ＣＡ分の時間であるＴＤＣ間隔時間ＴＳとして算出する（図２のＴＳを参照）。
【００６１】
次に、Ｓ１３０にて、ＴＤＣエッジが発生してから次にＴＤＣエッジが発生するまでの間に３０°ＣＡタスクが実行された回数を表す起床回数Ｄが、所定のガード値よりも小さいか否かを判定する。尚、起床回数Ｄと大小比較されるガード値は、本ＴＤＣイベント処理における後述のＳ１８０と、後述する図５のＳ４６０との、何れかによって設定されるが、このＳ１３０が実行される時点のガード値は、後述する図５のＳ４６０により、ＴＤＣ間角度（ＴＤＣエッジが発生するクランク角度間隔のことであり、本実施形態では２４０°ＣＡ）を３０°ＣＡで割った値から１を引いた値Ｂ（Ｂ＝ＴＤＣ間角度／３０°ＣＡ−１＝７）に設定されている。
【００６２】
そして、上記Ｓ１３０にて、起床回数Ｄがガード値Ｂ（＝７）よりも小さいと判定した場合には、Ｓ１４０に進んで、３０°ＣＡタスクを起床する。すると、マイコン３は、３０°ＣＡタスクを実行することとなり、その後、Ｓ１５０にて、起床回数Ｄをインクリメント（１加算）し、Ｓ１３０へ戻る。このため、Ｓ１３０で「起床回数Ｄ＜ガード値Ｂ」と判定された場合には、Ｓ１４０及びＳ１５０により、「起床回数Ｄ＝ガード値Ｂ」となるまで、３０°ＣＡタスクが繰り返し起床されることとなる。
【００６３】
一方、上記Ｓ１３０にて、起床回数Ｄがガード値Ｂよりも小さくないと判定した場合（即ち、起床回数Ｄがガード値Ｂに達している場合）には、Ｓ１６０に移行して、３０°ＣＡタスクを起床する。そして、このＳ１６０で起床する３０°ＣＡタスクが、ＴＤＣエッジの発生時に起床されるべき本来の３０°ＣＡタスクである。
【００６４】
次に、Ｓ１７０にて、今回のＴＤＣエッジの発生時から次のＢＴＤＣエッジ（次のＴＤＣエッジ前のＢＴＤＣエッジ）が発生するまでのクランク角度を予想する処理として、図４の予想角度算出処理を実行する。
【００６５】
図４に示すように、マイコン３が予想角度算出処理の実行を開始すると、まずＳ３１０にて、上記Ｓ１１０で今回記憶したＴＤＣ時刻（今回のＴＤＣ時刻）から、前回のＢＴＤＣエッジが発生した時に後述する図５のＳ４１０で記憶されたＢＴＤＣエッジの発生時刻（ＢＴＤＣ時刻）を引いた時間を、前回のＢＴＤＣエッジから今回のＴＤＣエッジまでの時間であるハイレベル時間ＴＨとして算出する（図２のＴＨを参照）。
【００６６】
そして、続くＳ３２０にて、上記Ｓ１２０で算出したＴＤＣ間隔時間ＴＳと、上記Ｓ３１０で算出したハイレベル時間ＴＨと、ＴＤＣ間角度（＝２４０°ＣＡ）とから、下記の式２により、ＴＤＣエッジが前回発生してから今回のＴＤＣエッジの直前のＢＴＤＣエッジが発生した時までのクランク角度であるＢＴＤＣ角度Ｉ（非特定エッジ発生所要角度に相当）を算出する（図２のＩを参照）。
【００６７】
［数２］
Ｉ＝（ＴＳ−ＴＨ）／ＴＳ×ＴＤＣ間角度…式２
つまり、式２における「ＴＳ−ＴＨ」は、ＴＤＣエッジが前回発生してから今回のＴＤＣエッジの直前のＢＴＤＣエッジが発生した時までの時間ＴＬ（図２のＴＬを参照）であり、このＳ３２０では、ＴＤＣ間隔時間ＴＳとその時間ＴＬとの比（ＴＬ／ＴＳ）をＴＤＣ間角度に乗じることで、ＢＴＤＣ角度Ｉを算出している。尚、上記時間ＴＬは、回転信号がローレベルになっている時間でもあるため、以下、その時間ＴＬのことを、ローレベル時間ＴＬともいう。
【００６８】
次に、Ｓ３３０にて、上記Ｓ３２０で算出されたＢＴＤＣ角度Ｉの平均値Ｊを、下記の式３に基づき算出する。
【００６９】
［数３］
Ｊ＝（Ｉ＋Ｊn-1）／２…式３
尚、式３は、いわゆるなまし演算（特に、１／２なましの演算）であり、その式３における「Ｊn-1」は、前回までの平均値である。
【００７０】
次に、Ｓ３４０にて、後述するＳ３６０で前々回に算出したものであるが前回値として現在記憶しているデルタ値Ｋn-1を、前々回に算出したデルタ値Ｋn-2として記憶し直し、続くＳ３５０にて、後述するＳ３６０で前回に算出したものであるが今回値として現在記憶しているデルタ値Ｋnを、前回に算出したデルタ値Ｋn-1として記憶し直す。
【００７１】
そして、続くＳ３６０にて、上記Ｓ３２０で今回算出したＢＴＤＣ角度Ｉから上記Ｓ３３０で今回算出した平均値Ｊを減じた差分値（＝Ｉ−Ｊ）を、今回のデルタ値Ｋnとして記憶する。
【００７２】
次に、Ｓ３７０にて、上記Ｓ３３０で今回算出した平均値Ｊに、上記Ｓ３４０で記憶し直したデルタ値Ｋn-2を加算して、その加算後の値（＝Ｊ＋Ｋn-2）を、今回のＴＤＣエッジの発生時から次のＢＴＤＣエッジが発生するまでのクランク角度の予想値（以下、予想角度という）Ｃとして記憶し、その後、当該予想角度算出処理を終了する。
【００７３】
尚、各気筒の点火順序が「第１気筒＃１→第２気筒＃２→第３気＃３」であり、今回発生したＴＤＣエッジが第１気筒＃１のＴＤＣエッジであるとすると、デルタ値Ｋnは、第１気筒＃１についてのデルタ値（即ち、第１気筒＃１の前の気筒である第３気筒＃３のＴＤＣエッジが発生してから今回の第１気筒＃１のＢＴＤＣエッジが発生した時までのＢＴＤＣ角度Ｉから、平均値Ｊを引いた値）となり、デルタ値Ｋn-1は、第３気筒＃３についてのデルタ値となり、デルタ値Ｋn-2は、第２気筒＃２についてのデルタ値となる。そして、この場合、上記Ｓ３７０では、今回算出した平均値Ｊに、次のＴＤＣエッジに対応する第２気筒＃２についてのデルタ値を加算した値が、予想角度Ｃとして算出されることとなる。
【００７４】
図３のＳ１７０にて、このような図４の予想角度算出処理が終わると、図３のＳ１８０に進んで、起床回数Ｄと大小比較されるガード値を、上記Ｓ３７０で今回算出した予想角度Ｃを３０°ＣＡで割った値Ａ（Ａ＝予想角度Ｃ／３０°ＣＡ）に設定する。
【００７５】
そして、次のＳ１９０にて、起床回数Ｄを０にクリアし、続くＳ２００にて、上記Ｓ１２０で算出したＴＤＣ間隔時間ＴＳと、ＴＤＣ間角度（＝２４０°ＣＡ）とから、下記の式４により、３０°ＣＡ分の時間（クランク軸が３０度回転するのに要する時間）である３０°ＣＡ時間Ｔ２を算出する。
【００７６】
［数４］
Ｔ２＝（ＴＳ／ＴＤＣ間角度）×３０°ＣＡ…式４
つまり、Ｓ２００では、第１の時間に相当する「ＴＳ／ＴＤＣ間角度」を、１°ＣＡ分の時間であるとし、その１°ＣＡ分の時間を３０倍することで、３０°ＣＡ時間Ｔ２を算出している。
【００７７】
次に、Ｓ２１０にて、３０°ＣＡタスクを起床するタイマ割り込みである疑似３０°ＣＡイベント割り込みの発生間隔（以下、疑似３０°ＣＡイベント間隔という）Ｔｉｖに、上記Ｓ２００で算出した３０°ＣＡ時間Ｔ２を代入する。尚、発生間隔Ｔｉｖは、後述する図６の疑似３０°ＣＡイベント割り込み処理の中で参照される。
【００７８】
そして、次のＳ２２０では、上記Ｓ２００で算出した３０°ＣＡ時間Ｔ２から、ＴＤＣエッジの発生時から後述するＳ２３０の処理が実行されるまでの遅れ時間を引いた時間Ｔ１を算出する。
【００７９】
そして、続くＳ２３０にて、当該マイコン３内の割り込み発生用タイマに上記Ｓ２２０で算出した時間Ｔ１をセットして、その時間Ｔ１後に疑似３０°ＣＡイベント割り込みが発生するようにし、その後、当該ＴＤＣイベント処理を終了する。
【００８０】
尚、上記Ｓ２３０では、実際には、フリーランタイマの現在値に上記時間Ｔ１に相当する値を加算した値を、フリーランタイマの値と比較されるタイマ割り込み用のコンペアレジスタにセットする。すると、上記時間Ｔ１が経過した時（即ち、今回のＴＤＣエッジの発生時から３０°ＣＡ時間Ｔ２が経過した時）に、疑似３０°ＣＡイベント割り込みとしてのタイマ割り込みが発生して、後述する図６の疑似３０°ＣＡイベント割り込み処理が実行されることとなる。
【００８１】
次に、マイコン３は、回転信号にＢＴＤＣエッジが発生する毎に、図５のＢＴＤＣイベント処理を実行する。尚、マイコン３は、回転信号に第１気筒＃１のＴＤＣエッジが発生した次の立ち上がりエッジを第２気筒のＢＴＤＣエッジとして認識し、第２気筒＃２のＴＤＣエッジが発生した次の立ち上がりエッジを第３気筒のＢＴＤＣエッジとして認識し、第３気筒＃３のＴＤＣエッジが発生した後の２回目の立ち上がりエッジを第１気筒のＢＴＤＣエッジとして認識している。
【００８２】
そして、図５に示すように、マイコン３がＢＴＤＣイベント処理の実行を開始すると、まずＳ４１０にて、今回のＢＴＤＣエッジが発生した時刻（図２のＥを参照）をＢＴＤＣ時刻として記憶する。尚、このＳ４１０においても、図３のＳ１１０と同様に、今回のＢＴＤＣエッジの発生時に上記キャプチャレジスタに格納されたフリーランタイマの値を、ＢＴＤＣ時刻としてＲＡＭに記憶する。
【００８３】
次に、Ｓ４２０にて、上記Ｓ４１０で今回記憶したＢＴＤＣ時刻から、前回のＴＤＣエッジ発生時に図３のＳ１１０で記憶されたＴＤＣ時刻を引いた時間を、前回のＴＤＣエッジから今回のＢＴＤＣエッジまでのローレベル時間ＴＬとして算出する（図２のＴＬを参照）。
【００８４】
そして、次のＳ４３０にて、起床回数Ｄがガード値よりも小さいか否かを判定するが、この時点でのガード値は、前述したＴＤＣイベント処理のＳ１８０で設定されたガード値Ａ（＝予想角度Ｃ／３０°ＣＡ）である。
【００８５】
そして、このＳ４３０にて、起床回数Ｄがガード値Ａよりも小さいと判定した場合には、Ｓ４４０に進んで、３０°ＣＡタスクを起床する。すると、マイコン３は、３０°ＣＡタスクを実行することとなり、その後、Ｓ４５０にて、起床回数Ｄをインクリメントし、Ｓ４３０へ戻る。このため、Ｓ４３０で「起床回数Ｄ＜ガード値Ａ」と判定された場合には、Ｓ４４０及びＳ４５０により、「起床回数Ｄ＝ガード値Ａ」となるまで、３０°ＣＡタスクが繰り返し起床されることとなる。
【００８６】
一方、上記Ｓ４３０にて、起床回数Ｄがガード値Ａよりも小さくないと判定した場合（即ち、起床回数Ｄがガード値Ａに達している場合）には、Ｓ４６０に移行して、起床回数Ｄと大小比較されるガード値を、前述したガード値Ｂに設定し直す。即ち、ガード値を、ＴＤＣ間角度を３０°ＣＡで割った値から１を引いた値Ｂ（Ｂ＝ＴＤＣ間角度／３０°ＣＡ−１＝７）に設定する。
【００８７】
そして、続くＳ４７０にて、起床回数Ｄが上記Ｓ４６０で設定し直したガード値Ｂよりも小さいか否かを判定し、起床回数Ｄがガード値Ｂよりも小さくないと判定した場合（即ち、起床回数Ｄがガード値Ｂに達している場合）には、そのまま当該ＢＴＤＣイベント処理を終了する。
【００８８】
また、上記Ｓ４７０にて、起床回数Ｄがガード値Ｂよりも小さいと判定した場合には、Ｓ４８０に進み、上記Ｓ４２０で今回算出したローレベル時間ＴＬと、前回のＴＤＣエッジ発生時に図３のＳ１７０（図４のＳ３７０）で算出した予想角度Ｃとから、下記の式５により、１°ＣＡ分の時間である１°ＣＡ時間Ｔｕを算出する。
【００８９】
［数５］
Ｔｕ＝ＴＬ／Ｃ…式５
そして、続くＳ４９０にて、上記Ｓ４８０で算出した１°ＣＡ時間Ｔｕから、下記の式６により、３０°ＣＡ分の時間である３０°ＣＡ時間Ｔ４を算出する。
【００９０】
［数６］
Ｔ４＝Ｔｕ×３０°ＣＡ…式６
つまり、Ｓ４８０及びＳ４９０では、第２の時間に相当する「ＴＬ／Ｃ」を１°ＣＡ分の時間であるとし、その１°ＣＡ分の時間（Ｔｕ）を３０倍することで、３０°ＣＡ時間Ｔ４を算出している。
【００９１】
次に、Ｓ５００にて、疑似３０°ＣＡイベント間隔Ｔｉｖに、上記Ｓ４９０で算出した３０°ＣＡ時間Ｔ４を代入する。
次に、Ｓ５１０にて、今回のＢＴＤＣエッジが発生した時点から１回目の疑似３０°ＣＡイベント割り込みを発生させるまでの時間Ｔ３を、現在の起床回数Ｄと、予想角度Ｃと、上記Ｓ４８０で算出した１°ＣＡ時間Ｔｕとから、下記の式７により算出する。尚、式７は、前述した式１に相当するものである。
【００９２】
［数７］
Ｔ３＝（（Ｄ＋１）×３０°ＣＡ−Ｃ）×Ｔｕ…式７
そして、続くＳ５２０にて、当該マイコン３内の割り込み発生用タイマに上記Ｓ５１０で算出した時間Ｔ３をセットして、その時間Ｔ３後に疑似３０°ＣＡイベント割り込みが発生するようにし、その後、当該ＢＴＤＣイベント処理を終了する。
【００９３】
尚、上記Ｓ５２０では、前述したＳ２３０と同様に、実際には、フリーランタイマの現在値に上記時間Ｔ３に相当する値を加算した値を、タイマ割り込み用のコンペアレジスタにセットする。すると、上記時間Ｔ３が経過した時に、疑似３０°ＣＡイベント割り込みとしてのタイマ割り込みが発生して、後述する図６の疑似３０°ＣＡイベント割り込み処理が実行されることとなる。
【００９４】
次に、図６は、疑似３０°ＣＡイベント割り込みとしてのタイマ割り込みが発生した時に実行される疑似３０°ＣＡイベント割り込み処理を表すフローチャートである。
図６に示すように、マイコン３が、疑似３０°ＣＡイベント割り込み処理の実行を開始すると、まずＳ６１０にて、３０°ＣＡタスクを起床する。つまり、３０°ＣＡタスクを実行する。
【００９５】
そして、次のＳ６２０にて、起床回数Ｄをインクリメントし、続くＳ６３０にて、起床回数Ｄが、現在設定されているガード値よりも小さいか否かを判定する。
このＳ６３０で起床回数Ｄがガード値よりも小さくないと判定した場合には（Ｓ６３０：ＮＯ）、そのまま当該割り込み処理を終了するが、起床回数Ｄがガード値よりも小さいと判定した場合には（Ｓ６３０：ＹＥＳ）、Ｓ６４０に進む。
【００９６】
そして、このＳ６４０にて、当該マイコン３内の割り込み発生用タイマに、現在設定されている疑似３０°ＣＡイベント間隔Ｔｉｖの時間をセットして、その時間後に再び疑似３０°ＣＡイベント割り込みが発生するようにし、その後、当該割り込み処理を終了する。
【００９７】
尚、回転信号にＴＤＣエッジが発生してから次のＢＴＤＣエッジが発生するまでの期間においては、上記Ｓ６３０で起床回数Ｄと大小比較されるガード値は、図３のＴＤＣイベント処理におけるＳ１８０で設定されたガード値Ａ（＝予想角度Ｃ／３０°ＣＡ）であり、上記Ｓ６４０で割り込み発生用タイマにセットされる疑似３０°ＣＡイベント間隔Ｔｉｖの時間は、図３のＴＤＣイベント処理におけるＳ２１０で当該Ｔｉｖに代入された３０°ＣＡ時間Ｔ２（＝（ＴＳ／ＴＤＣ間角度）×３０°ＣＡ）である。
【００９８】
また、回転信号にＢＴＤＣエッジが発生してからＴＤＣエッジが発生するまでの期間においては、上記Ｓ６３０で起床回数Ｄと大小比較されるガード値は、図５のＢＴＤＣイベント処理におけるＳ４６０で設定されたガード値Ｂ（＝７）であり、上記Ｓ６４０で割り込み発生用タイマにセットされる疑似３０°ＣＡイベント間隔Ｔｉｖの時間は、図５のＢＴＤＣイベント処理におけるＳ５００で当該Ｔｉｖに代入された３０°ＣＡ時間Ｔ４（＝（ＴＬ／予想角度）×３０°ＣＡ）である。
【００９９】
以上のような本実施形態のエンジン制御装置１では、図７に示すように、回転信号にＴＤＣエッジが発生する毎に、図３のＴＤＣイベント処理が実行されて、ＴＤＣエッジが前回発生してから今回発生するまでのＴＤＣ間隔時間ＴＳが算出され（Ｓ１２０）、更に、そのＴＤＣ間隔時間ＴＳと、ＴＤＣエッジが前回発生してから今回のＴＤＣエッジの直前のＢＴＤＣエッジが発生した時までのローレベル時間ＴＬ（＝ＴＳ−ＴＨ）とを基にして、今回のＴＤＣエッジの発生時から次のＢＴＤＣエッジが発生するまでのクランク角度の予想値である予想角度Ｃが算出される（Ｓ１７０，Ｓ３１０〜Ｓ３７０）。また、このＴＤＣイベント処理にて、ＴＤＣエッジ発生時の３０°ＣＡタスク（０回目の３０°ＣＡタスク）が起床されると共に（Ｓ１６０）、３０°ＣＡタスクの実行回数を計数する起床回数Ｄが０に初期化される（Ｓ１９０）。
【０１００】
そして更に、ＴＤＣイベント処理におけるＳ２００〜Ｓ２３０と、図６のＳ６４０とにより、ＴＤＣエッジが発生した時点から次のＢＴＤＣエッジが発生するまでの間は、「ＴＤＣ間隔時間ＴＳ／ＴＤＣ間角度」を１°ＣＡ分の時間として算出された３０°ＣＡ分の時間である３０°ＣＡ時間Ｔ２が経過する毎に、疑似３０°ＣＡイベント割り込みが発生して、図６のＳ６１０により３０°ＣＡタスクが起床されると共に、図６のＳ６２０により起床回数Ｄが１ずつ増加することとなる。
【０１０１】
尚、図７において「疑似３０°ＣＡイベント割り込み起床用のタイマ設定イメージ」と記載した段は、マイコン３内の割り込み発生用タイマにセットされる時間を示している。そして、その段からも分かるように、ＴＤＣエッジが発生してから１回目だけは、割り込み発生用タイマに時間Ｔ２ではなく時間Ｔ１がセットされるが、これは、図３のＳ２２０及びＳ２３０によるものであり、ＴＤＣエッジが発生してから割り込み発生用タイマに時間がセットされるまでの遅れ時間を考慮しているためである。つまり、１回目だけは、その遅れ時間を３０°ＣＡ時間Ｔ２から引いた時間Ｔ１を、割り込み発生用タイマにセットすることで、ＴＤＣエッジの発生時から３０°ＣＡ時間Ｔ２が経過した時に、疑似３０°ＣＡイベント割り込みが正確に発生するようにしているのである。このため、もし、上記遅れ時間を考慮しなくても良いのであれば、図３のＳ２２０を削除すると共に、図３のＳ２３０では、割り込み発生用タイマにＳ２００で算出した３０°ＣＡ時間Ｔ２をそのままセットするようにしても良い。
【０１０２】
また、本実施形態のエンジン制御装置１では、図７に示すように、回転信号にＢＴＤＣエッジが発生する毎に、図５のＢＴＤＣイベント処理が実行されて、ＴＤＣエッジが前回発生してからＢＴＤＣエッジが今回発生した時までのローレベル時間ＴＬが算出され（Ｓ４２０）、更に、そのローレベル時間ＴＬを、前回のＴＤＣエッジの発生時に算出した予想角度Ｃで割ることにより、１°ＣＡ時間Ｔｕ（＝ＴＬ／Ｃ）が算出される（Ｓ４８０）。
【０１０３】
そして、ＢＴＤＣイベント処理におけるＳ５１０及びＳ５２０により、ＢＴＤＣエッジが発生した時点から、式７により１°ＣＡ時間Ｔｕを用いて算出される時間Ｔ３が経過した時に、ＢＴＤＣエッジ発生後の１回目の疑似３０°ＣＡイベント割り込みが発生して、図６のＳ６１０により３０°ＣＡタスクが起床されると共に、図６のＳ６２０により起床回数Ｄが１つ増加することとなる。
【０１０４】
そして更に、そのＢＴＤＣエッジ発生後の１回目の疑似３０°ＣＡイベント割り込みが発生してから次のＴＤＣエッジが発生するまでの間は、ＢＴＤＣイベント処理におけるＳ４９０，Ｓ５００と図６のＳ６４０との作用により、上記１°ＣＡ時間Ｔｕを基にして算出された３０°ＣＡ分の時間である３０°ＣＡ時間Ｔ４が経過する毎に、疑似３０°ＣＡイベント割り込みが発生して、図６のＳ６１０により３０°ＣＡタスクが起床されると共に、図６のＳ６２０により起床回数Ｄが１ずつ増加することとなる。
【０１０５】
つまり、本実施形態のエンジン制御装置１では、回転信号にＴＤＣエッジが発生してからＢＴＤＣエッジが発生するまでの期間は、前回のＴＤＣ間隔時間ＴＳをＴＤＣ間角度で割った時間（ＴＳ／ＴＤＣ間角度）を１°ＣＡ分の時間として算出した３０°ＣＡ時間Ｔ２毎のタイミングを、疑似３０°ＣＡイベント割り込みを発生させる３０°ＣＡ毎のタイミングとして設定しているが、特に、回転信号にＴＤＣエッジが発生する毎に、その時点から次のＢＴＤＣエッジが発生するまでのクランク角度を、過去のＴＤＣ間隔時間ＴＳとローレベル時間ＴＬとの比率（換言すれば、過去のＢＴＤＣ角度Ｉ）から予想し、回転信号にＢＴＤＣエッジが発生してからＴＤＣエッジが発生するまでの期間については、その予想したクランク角度である予想角度Ｃと、その予想角度Ｃ分の実際の時間（即ち、前回のＴＤＣエッジから今回のＢＴＤＣエッジまでの実際の時間）ＴＬとを用い、「ＴＬ／Ｃ」を１°ＣＡ分の時間として、疑似３０°ＣＡイベント割り込みの発生タイミング（３０°ＣＡ毎のタイミング）を設定している。
【０１０６】
このため、回転信号にＴＤＣエッジが発生したタイミングだけでなく、回転信号にＢＴＤＣエッジが発生したタイミングでも、疑似３０°ＣＡイベント割り込みの発生間隔及び発生タイミングを、実際の機関回転速度に即した３０°ＣＡ毎の間隔及びタイミングに更新することができる。よって、３０°ＣＡタスクを実行する３０°ＣＡ毎のタイミングを精度良く設定して、点火や燃料噴射などの制御精度を向上させることができる。
【０１０７】
特に、本実施形態では、ＢＴＤＣエッジ発生後の１回目の疑似３０°ＣＡイベント割り込みの発生タイミングを、ＢＴＤＣエッジの発生時から上記式７の時間Ｔ３が経過した時となるように設定している。つまり、ＢＴＤＣエッジ発生後の１回目の疑似３０°ＣＡイベント割り込みの発生タイミングは、予想角度Ｃを基にして、ＴＤＣが前回発生したクランク角位置から３０°ＣＡの整数倍のクランク角位置となるように、且つ、上記１°ＣＡ時間Ｔｕ（＝ＴＬ／Ｃ）を用いて設定するようにしている。そして、そのＢＴＤＣエッジ発生後の１回目の疑似３０°ＣＡイベント割り込みが発生してから次のＴＤＣエッジが発生するまでの間は、その１回目の疑似３０°ＣＡイベント割り込みが発生したタイミングから上記１°ＣＡ時間Ｔｕ（＝ＴＬ／Ｃ）を基にした３０°ＣＡ時間Ｔ４毎のタイミングを、疑似３０°ＣＡイベント割り込みを発生させる３０°ＣＡ毎のタイミングとして設定している。
【０１０８】
このため、３０°ＣＡ毎のタイミングを設定するのに最新の機関回転速度情報を含んだ上記１°ＣＡ時間Ｔｕを反映させることを、ＢＴＤＣエッジが発生した時点からいち早く行うことができ、３０°ＣＡ毎のタイミングを一層精度良く設定することができる。
【０１０９】
また、本実施形態のエンジン制御装置１では、図７に示すように、回転信号にＴＤＣエッジが発生してからＢＴＤＣエッジが発生するまでの期間は、３０°ＣＡタスクの実行回数を制限するためのガード値が、予想角度Ｃを３０°ＣＡで割ったガード値Ａ（図７の例では５）に設定される。尚、これは、ＴＤＣイベント処理（図３）のＳ１８０によるものである。また、ガード値Ａは、今回のＴＤＣエッジの発生時から次のＢＴＤＣエッジが発生するまでの間に３０°ＣＡタスクが実行されるべき目標回数であり、今回のＴＤＣエッジの発生時から次のＢＴＤＣエッジが発生するまでの間に３０°ＣＡタスクが実行される回数の予想値（予想回数）であるとも言える。
【０１１０】
そして、回転信号にＴＤＣエッジが発生してからＢＴＤＣエッジが発生するまでの間に、もし、３０°ＣＡタスクの起床回数Ｄがガード値Ａに達したならば（「起床回数Ｄ＝ガード値Ａ」になったならば）、図７に示すように、回転信号にＢＴＤＣエッジが発生するまでは、割り込み発生用タイマへの新たな時間セット（つまり、次の疑似３０°ＣＡイベント割り込みの発生タイミングの設定）が行われなくなる。これは、「起床回数Ｄ＝ガード値Ａ」になると、図６のＳ６３０で否定判定されて、図６のＳ６４０がスキップされるからであり、その後、回転信号にＢＴＤＣエッジが発生して、ＢＴＤＣイベント処理（図５）のＳ５２０が実行されるまでは、割り込み発生用タイマに時間がセットされなくなるからである。
【０１１１】
このため、機関の急減速時に、３０°ＣＡタスクの実行回数が必要以上に多くなってしまうことを、回転信号にＴＤＣエッジが発生するよりも早いＢＴＤＣエッジの発生時点で防止することでき、制御精度を向上させることができる。
【０１１２】
更に、本実施形態のエンジン制御装置１では、図７に示すように、回転信号にＢＴＤＣエッジが発生してからＴＤＣエッジが発生するまでの期間は、３０°ＣＡタスクの実行回数を制限するためのガード値が、ガード値Ｂ（＝ＴＤＣ間角度／３０°ＣＡ−１＝７）に設定される。尚、これは、ＢＴＤＣイベント処理（図５）のＳ４６０によるものである。
【０１１３】
そして、回転信号にＢＴＤＣエッジが発生してからＴＤＣエッジが発生するまでの間に、もし、３０°ＣＡタスクの起床回数Ｄがガード値Ｂに達したならば（「起床回数Ｄ＝ガード値Ｂ」になったならば）、図７に示すように、回転信号に次のＴＤＣエッジが発生するまで３０°ＣＡタスクは実行されなくなる。これも、「起床回数Ｄ＝ガード値Ｂ」になると、図６のＳ６３０で否定判定されて、図６のＳ６４０がスキップされるからであり、その後、回転信号にＴＤＣエッジが発生すると、ＴＤＣイベント処理（図３）のＳ１６０により、０回目の３０°ＣＡタスクが起床されることとなる。
【０１１４】
このため、回転信号にＴＤＣエッジが発生する２４０°ＣＡ当たりの３０°ＣＡタスクの実行回数が、機関の急減速時に制限値（＝８＝２４０°ＣＡ／３０°ＣＡ）を超えてしまうことを防止することでき、制御精度を向上させることができる。尚、本実施形態では、ＴＤＣエッジ発生時の３０°ＣＡタスクを０回目としているため、ガード値Ｂは、８よりも１小さい７となっている。
【０１１５】
また、本実施形態のエンジン制御装置１では、図８における二点鎖線の２つの楕円のうち、左側の楕円内に示すように、回転信号にＢＴＤＣエッジが発生したときに、３０°ＣＡタスクの起床回数Ｄがガード値Ａに達していなければ（「起床回数Ｄ＜ガード値Ａ」ならば）、図５のＳ４３０で肯定判定されて、図５のＳ４４０及びＳ４５０により、起床回数Ｄがガード値Ａに達するまで３０°ＣＡタスクが実行される。
【０１１６】
このため、機関の急加速時に、３０°ＣＡタスクの実行回数が不足してしまうことを、回転信号にＢＴＤＣエッジが発生した時点で防止することができる。
そして更に、本実施形態のエンジン制御装置１では、図８における二点鎖線の２つの楕円のうち、右側の楕円内に示すように、回転信号にＴＤＣエッジが発生したときに、３０°ＣＡタスクの起床回数Ｄがガード値Ｂに達していなければ（「起床回数Ｄ＜ガード値Ｂ」ならば）、図３のＳ１３０で肯定判定されて、図３のＳ１４０及びＳ１５０により、起床回数Ｄがガード値Ｂに達するまで３０°ＣＡタスクが実行される。
【０１１７】
このため、機関の急加速時に、２４０°ＣＡ当たりの３０°ＣＡタスクの実行回数が８回未満になってしまうことを確実に防止することができる。
一方また、本実施形態のエンジン制御装置１において、回転信号にＴＤＣエッジが発生した時毎に実行される予想角度算出処理（図４）では、ＢＴＤＣ角度Ｉと、そのＢＴＤＣ角度Ｉの平均値Ｊとを算出すると共に（Ｓ３２０，Ｓ３３０）、各気筒ついて、ＢＴＤＣ角度Ｉから平均値Ｊを引いたデルタ値Ｋを記憶するようにし（Ｓ３４０〜Ｓ３６０）、更に、今回算出した平均値Ｊに、次のＴＤＣエッジに対応する気筒についてのデルタ値を加算した値を、予想角度Ｃとして算出する（Ｓ３７０）ようにしているため、その予想角度Ｃの精度を高めることができる。回転信号にエッジが発生するタイミングは、シグナルロータ１３やセンサ１９の特性ばらつきに起因して、気筒毎に若干のばらつきが生じる可能性があるが、そのようなハードウェア特性に起因した気筒毎のエッジ発生タイミングばらつきを踏まえた角度予測が可能となるからである。
【０１１８】
尚、上記実施形態では、図３のＳ１２０が特定エッジ間隔時間算出手段に相当し、図３のＳ１７０（図４のＳ３１０〜Ｓ３７０）がクランク角度予想手段に相当し、図５のＳ４２０が非特定エッジ発生所要時間算出手段に相当している。また、図４のＳ３１０〜Ｓ３７０のうち、Ｓ３４０〜Ｓ３６０が差分値記憶処理に相当している。そして、図３のＳ２００が第１の一定クランク角度時間算出手段に相当し、図５のＳ４８０及びＳ４９０が第２の一定クランク角度時間算出手段に相当している。そして更に、図３のＳ１５０，Ｓ１９０と図５のＳ４５０と図６のＳ６２０とが計数手段に相当し、図３のＳ１８０が中間目標回数設定手段に相当している。
【０１１９】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１２０】
例えば、図４の予想角度算出処理からＳ３４０〜Ｓ３６０を削除して、その予想角度算出処理のＳ３７０では、Ｓ３３０で算出した平均値Ｊを予想角度Ｃとして記憶するようにしても良い。また更に、図４の予想角度算出処理からＳ３３０をも削除して、Ｓ３７０では、Ｓ３２０で算出したＢＴＤＣ角度Ｉを予想角度Ｃとして記憶するようにしても良い。但し、前述した実施形態のように平均値Ｊとデルタ値Ｋとを用いて予想角度Ｃを算出するように構成する方が、その予想角度Ｃの精度を高めることができ好ましい。
【０１２１】
一方、上記実施形態では、エンジンが３気筒であったが、気筒数は３以外であっても良い。
【図面の簡単な説明】
【０１２２】
【図１】実施形態のエンジン制御装置の構成図である。
【図２】回転信号にエッジが発生するタイミングなどを表すタイムチャートである。
【図３】ＴＤＣイベント処理を表すフローチャートである。
【図４】予想角度算出処理を表すフローチャートである。
【図５】ＢＴＤＣイベント処理を表すフローチャートである。
【図６】疑似３０°ＣＡイベント割り込み処理を表すフローチャートである。
【図７】実施形態のエンジン制御装置の作用を表す第１のタイムチャートである。
【図８】実施形態のエンジン制御装置の作用を表す第２のタイムチャートである。
【図９】カム軸センサから出力される気筒数パルス式の回転信号を説明する説明図である。
【符号の説明】
【０１２３】
１…エンジン制御装置、３…マイコン、５…波形整形回路、７…入力回路、９…Ａ／Ｄ変換器、１１…出力回路、１３…シグナルロータ、１５ａ〜１５ｃ…クランク角検出用突起、１７…気筒判別用突起、１９…カム軸センサ
【図１】
2005330933.tif 000003
【図２】
2005330933.tif 000004
【図３】
2005330933.tif 000005
【図４】
2005330933.tif 000006
【図５】
2005330933.tif 000007
【図６】
2005330933.tif 000008
【図７】
2005330933.tif 000009
【図８】
2005330933.tif 000010
【図９】
2005330933.tif 000011