(57)【要約】【課題】  簡素な構成でありながらも、欠歯の誤検出に起因して、クランク軸の回転角度を示すカウント値に大きな誤差が生じてしまうことを防止可能なエンジン制御装置を提供する。【解決手段】  クランク処理部２０は、欠歯の検出タイミングにて、ｔＭＣｎｔＨの値が、ＮＥ１０信号においてノイズや本来発生しているべきパルスの欠落が１つ発生した場合に本来の欠歯の検出タイミングにて取り得る値である場合にのみ、表カウンタ２１のカウント値を本来の欠歯の検出タイミングにて本来取るべき値に補正する。【選択図】図６
2006125240.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸の回転角度を逐次計測し、この計測結果に基づいて該エンジンを制御するエンジン制御装置であって、
前記クランク軸の回転位置が予め設定された基準位置以外であるときには、前記クランク軸が所定角度回転する毎にパルスを生じ、前記基準位置であるときには、前記クランク軸が前記所定角度よりも大きい角度回転するまで前記パルスが欠落した欠歯を生じるクランク軸回転信号が入力され、該クランク軸回転信号における前記パルスの有効エッジにてカウント値をカウントアップし、該カウント値によって前記計測結果を示す第１のカウンタと、
前記有効エッジの発生間隔を逐次計測する発生間隔計測手段と、
該発生間隔計測手段の今回の計測結果と、前回の計測結果との比を逐次算出し、この算出比と、前記有効エッジ間に前記欠歯が生じたか否かを判定するために予め設定された判定比とに基づいて、前記欠歯を検出する欠歯検出手段と、
該欠歯検出手段の欠歯検出タイミングに基づいた補正タイミングにて前記第１のカウンタのカウント値が本来取るべき値である本来値に、前記第１のカウンタのカウント値を補正する補正手段と、
前記補正タイミングにて、前記第１のカウンタのカウント値が、予め指定された指定数以内のズレが生じた場合に取り得る値である場合に、前記補正手段を作動させる補正作動手段と、
を備えることを特徴とするエンジン制御装置。
【請求項２】
前記補正作動手段は、前記第１のカウンタのカウント値が、前記指定数を越えるズレが生じた場合に取り得る値である場合でも、今回の前記補正タイミングにおける前記第１のカウンタのカウント値と、前回の前記補正タイミングにおける前記第１のカウンタのカウント値との差を算出し、算出した差が前記欠歯の発生間隔に相当するカウント値と等しければ、前記補正手段を作動させることを特徴とする請求項１記載のエンジン制御装置。
【請求項３】
前記指定数以内のズレは、前記有効エッジの発生数１つ分であることを特徴とする請求項１又は請求項２記載のエンジン制御装置。
【請求項４】
前記エンジンのカム軸の回転位置に応じてレベルが変化する気筒判別信号のレベルを判別するレベル判別手段と、
該気筒判別信号のレベルに応じて予め設定された複数種類の前記本来値のうち、前記レベル判別手段の判別結果に応じたものを前記本来値に設定する第１の設定手段と、
を備えることを特徴とする請求項１乃至請求項３いずれか記載のエンジン制御装置。
【請求項５】
前記補正タイミングに応じて予め設定された複数種類の前記本来値のうち、前記第１のカウンタのカウント値に最も近いものを前記本来値に設定する第２の設定手段を備えることを特徴とする請求項１乃至請求項３いずれか記載のエンジン制御装置。
【請求項６】
前記クランク軸回転信号が入力され、前記有効エッジにてカウント値をカウントアップすると共に、前記欠歯検出タイミングにてカウント値を０にリセットする第２のカウンタを備え、
該第２のカウンタのカウント値が予め指定された指定カウント値に達したタイミングを前記補正タイミングに用いることを特徴とする請求項１乃至請求項５いずれか記載のエンジン制御装置。
【請求項７】
前記クランク軸回転信号が入力され、前記有効エッジにてカウント値をカウントアップすると共に、前記欠歯検出タイミングにてカウント値を０にリセットする第２のカウンタを備え、
前記補正タイミング間において、前記第１のカウンタのカウント値と、前記第２のカウンタのカウント値とを取得するカウント値取得手段と、
該カウント値取得手段により取得された前記第１のカウンタのカウント値と、前記第２のカウンタのカウント値とを比較し、これらカウント値同士が不整合な場合にのみ、前記補正作動手段の作動を許可する補正許可手段と、
を備えることを特徴とする請求項１乃至請求項６いずれか記載のエンジン制御装置。
【請求項８】
前記カウント値取得手段は、前記有効エッジの発生間隔の最小時間よりも短い時間間隔にて、前記第１のカウンタのカウント値と、前記第２のカウンタのカウント値とを少なくとも３つ交互に取得し、
前記補正許可手段は、前記第１のカウンタのカウント値と、前記第２のカウンタのカウント値とのうち、複数のカウント値を取得した一方のカウンタのカウント値同士が一致している場合にのみ作動することを特徴とする請求項７記載のエンジン制御装置。
【請求項９】
前記カウント値取得手段により取得された前記第１のカウンタのカウント値と、前記第２のカウンタのカウント値とのうち、複数のカウント値を取得した一方のカウンタのカウント値同士が不一致な場合に、前記カウント値取得手段を再作動させる再作動手段を備えることを特徴とする請求項８記載のエンジン制御装置。
【請求項１０】
前記発生間隔計測手段の前回の計測結果を予め設定された逓倍数で分割した時間を１周期とする逓倍クロック信号を生成する逓倍クロック生成手段と、
該逓倍クロック信号によりカウント値を前記逓倍数までカウントアップすると共に、前記有効エッジにて前記カウント値を０にリセットする第３のカウンタと、
を備えることを特徴とする請求項１乃至請求項９いずれか記載のエンジン制御装置。
【請求項１１】
前記第１のカウンタのカウント値が前記欠歯の開始時点に相当するカウント値に達した際に、前記欠歯における前記有効エッジの欠落数だけ前記第３のカウンタのラップラウンドを許可すると共に、前記第３のカウンタから前記第１のカウンタへの桁上がりを許可するキャリーアップ許可手段を備えることを特徴とする請求項１０記載のエンジン制御装置。
【請求項１２】
前記欠歯検出手段は、
ソフトウェアを用いて実現され、前記欠歯を検出する第１の欠歯検出手段と、
前記算出比と、予め設定された一定の判定比とに基づいて、前記欠歯を検出する第２の欠歯検出手段と、
単位時間当たりの前記クランク軸の回転数が予め指定された指定回転数に達するまでは、前記第１の欠歯検出手段を作動させ、該指定回転数に達したのちは、該第１の欠歯検出手段に代えて、前記第２の欠歯検出手段を作動させる切替手段と、
を備えることを特徴とする請求項１乃至請求項１１いずれか記載のエンジン制御装置。
【請求項１３】
前記第２の欠歯検出手段は、ハードウェアを用いて実現されていることを特徴とする請求項１２記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンのクランク軸の回転角度を逐次計測し、この計測結果に基づいてエンジンを制御するエンジン制御装置に関する。
【背景技術】
【０００２】
従来より、エンジン制御装置では、エンジンのクランク軸の回転に応じてクランク軸センサから出力されるクランク軸回転信号（ＮＥ信号）と、クランク軸の回転に対して１／２の比率で回転するエンジンのカム軸の回転に応じてカム軸センサから出力される気筒判別信号（Ｇ信号）とに基づいて、クランク軸の回転角度を逐次計測し、燃料噴射制御や点火時期制御などを行っている。
【０００３】
より具体的には、クランク軸回転信号では、クランク軸の回転位置が予め設定された基準位置以外であるときには、クランク軸が所定角度（例えば、１０°ＣＡ（クランクアングル））回転する毎にパルスを生じる。又、基準位置であるときには、クランク軸が所定角度よりも大きい角度（例えば、３０°ＣＡ）回転するまでパルスが欠落した欠歯を生じる。
【０００４】
又、気筒判別信号では、例えば、クランク軸回転信号における欠歯の発生間隔にて、論理レベルがハイレベルからローレベル、もしくはローレベルからハイレベルへと変化する。
【０００５】
そして、エンジン制御装置では、エンジン制御装置にて実行すべき各種処理を実行するＣＰＵが、クランク軸回転信号の有効エッジ（一般的には、立ち上がりエッジ）を検出する毎に、割込処理にて、クランク軸の回転角度を示すカウンタのカウント値をカウントアップすると共に、クランク軸回転信号の欠歯を検出する欠歯検出を行い、欠歯を検出した際に、気筒判別信号の論理レベルに応じたカウント値を設定することで、クランク軸の回転角度を逐次計測している。尚、クランク軸センサから出力されるクランク軸回転信号や、カム軸センサから出力される気筒判別信号は、アナログ信号からなり、エンジン制御装置では、これら信号の入力時に波形整形を施して、これら信号を二値化する。
【０００６】
ここで、一般的に、このようなエンジン制御装置では、クランク軸回転信号における有効エッジの発生間隔を逐次計測して、前回の計測結果との比を算出し、この算出比が所定の判定比以上であるといった欠歯判定条件が成立した際に、欠歯を検出したと判定している。
【０００７】
しかしながら、このようにカウンタのカウントアップや欠歯検出をＣＰＵに実行させていたのでは、燃料噴射制御や点火時期制御などを高い頻度で実行しなければならないエンジンの高回転時に、ＣＰＵが実行すべき処理の負荷が著しく増加してしまう。
【０００８】
そこで、これを解決するために、エンジンの回転が不安定で有効エッジの発生間隔が大きく変動し、一定の判定比による欠歯検出が困難なエンジンの始動時には、ＣＰＵが、複雑な処理による欠歯検出と、カウント値のカウントアップとを行う一方、エンジンの回転が安定し、有効エッジの発生間隔が一定の範囲内に収まるエンジンの高回転時には、ＣＰＵとは別個に設けられた処理回路が、一定の判定比を用いた簡易な欠歯検出と、カウント値のカウントアップとを行うエンジン制御装置が考案されている（例えば、特許文献１を参照）。
【特許文献１】特開２００４−３４５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、車両には、通常、搭載された電装品などから放射されるノイズや、電装品の作動などに起因する過渡的な電圧低下に対する様々な対策が施されているため、クランク軸センサから出力されるクランク軸回転信号に、エンジン制御装置における波形整形回路の閾値を越えるようなノイズが重畳したり、波形整形回路の閾値を越えられないような出力低下が生じることは希である。
【００１０】
又、エンジン制御装置では、上述したように、欠歯の検出時に、気筒判別信号の論理レベルに応じてカウンタが本来取るべきカウント値をカウンタにセットするため、たとえ上述のようなノイズや出力低下が生じて、カウント値に誤差が生じてしまっても、次回の欠歯検出時には、カウント値が本来のカウント値に補正される。
【００１１】
しかしながら、一定の判定比を用いた簡易な欠歯検出を行う場合には、図２０に示すように、欠歯が生じていない有効エッジの発生間隔中に、閾値を越えるノイズが重畳した場合に、欠歯判定条件が成立し易く、欠歯の誤検出が生じ易い。尚、図２０は、欠歯判定条件が成立するようなタイミングでクランク軸信号にノイズが重畳した場合の一例を示すタイミングチャートである。
【００１２】
又、図２１に示すように、車両の減速時などのようにエンジンの回転数が低下して、有効エッジの発生間隔が次第に大きくなる際に、クランク軸センサからの出力が波形整形回路の閾値を越えられずにパルスが欠落したり、又、エンジンの回転数が一定であってもパルスが連続して欠落した場合に、欠歯判定条件が成立し易く、欠歯の誤検出が生じ易い。尚、図２１は、欠歯判定条件が成立するようなクランク軸回転信号の出力低下が生じた場合の一例を示すタイミングチャートである。
【００１３】
そして、このように欠歯の誤検出が生じた場合には、欠歯の検出タイミングとは異なるタイミングであるにも関わらず、気筒判別信号の論理レベルに応じたカウント値がセットされてしまい、カウンタのカウント値が本来取るべきカウント値に対して大きな誤差を生じてしまうという問題が発生する。
【００１４】
尚、このような問題の解決策の１つとして、欠歯の誤検出を判別する論理回路などをエンジン制御装置に設けることが考えられるが、誤検出を確実に判別するためには、論理回路などが大掛かりなものとなり、その結果、エンジン制御装置の規模やコストが大掛かりなものになってしまうことが考えられる。
【００１５】
そこで、本発明は、簡素な構成でありながらも、欠歯の誤検出に起因して、クランク軸の回転角度を示すカウント値に大きな誤差が生じてしまうことを防止可能なエンジン制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するためになされた請求項１記載のエンジン制御装置では、エンジンのクランク軸の回転位置が予め設定された基準位置以外であるときには、クランク軸が所定角度回転する毎にパルスを生じ、基準位置であるときには、クランク軸が所定角度よりも大きい角度回転するまでパルスが欠落した欠歯を生じるクランク軸回転信号が第１のカウンタに入力され、この第１のカウンタが、クランク軸回転信号におけるパルスの有効エッジにてカウント値をカウントアップし、このカウント値によってクランク軸の回転角度の計測結果を示す。又、その一方で、発生間隔計測手段が、有効エッジの発生間隔を逐次計測し、欠歯検出手段が、発生間隔計測手段の今回の計測結果と、前回の計測結果との比を逐次算出し、この算出比と、有効エッジ間に欠歯が生じたか否かを判定するために予め設定された判定比とに基づいて欠歯を検出する。
【００１７】
そして、欠歯検出手段の欠歯検出タイミングに基づいた補正タイミングにて、第１のカウンタのカウント値が、予め指定された指定数以内のズレが生じた場合に取り得る値である場合に、補正作動手段が補正手段を作動させ、補正手段が、補正タイミングにて第１のカウンタのカウント値が本来取るべき値である本来値に、第１のカウンタのカウント値を補正する。
【００１８】
つまり、このエンジン制御装置では、クランク軸回転信号に生じ得るノイズの数や有効エッジの欠落数を予め測定し、指定数を設定しておけば、欠歯の誤検出に起因して、第１のカウンタのカウント値が大きな誤差を生じてしまうようなタイミングが補正タイミングとなってしまっても、カウント値を間違った本来値に補正してしまうことがない。
【００１９】
即ち、このエンジン制御装置によれば、第１のカウンタのカウント値が、指定数以内のズレが生じた場合に取り得る値である場合にのみ、カウント値を本来値に補正するという簡素な構成でありながらも、欠歯の誤検出に起因して、クランク軸の回転角度を示すカウント値に大きな誤差が生じてしまうことを防止できる。
【００２０】
尚、「第１のカウンタのカウント値」は、第１のカウンタに設定されたカウント値でも良いし、第１のカウンタに設定される直前のカウント値でも良い。
又、「指定数」は、第１のカウンタのカウント値がプラス側にずれる場合とマイナス側にずれる場合とで互いに異なっていても良い。
【００２１】
又、このエンジン制御装置では、クランク軸回転信号におけるパルスの立ち上がりエッジ及び立ち下がりエッジのうちのいずれか一方、もしくは、両方を有効エッジとしても良く、両方を有効エッジとした場合には、クランク軸の回転角度をより細かく計測できる（つまり、計測分解能を向上できる。）。
【００２２】
但し、上述のエンジン制御装置では、クランク軸回転信号に指定数よりも多くのノイズや有効エッジの欠落が生じた場合に、カウント値を補正することができず、実際のクランク軸の回転角度との間に大きな誤差が生じたままとなってしまう。
【００２３】
そこで、補正作動手段は、請求項２記載のように、第１のカウンタのカウント値が、指定数を越えるズレが生じた場合に取り得る値である場合でも、今回の補正タイミングにおける第１のカウンタのカウント値と、前回の補正タイミングにおける第１のカウンタのカウント値との差を算出し、算出した差が欠歯の発生間隔に相当するカウント値と等しければ、補正手段を作動させるように設定されていることが望ましい。
【００２４】
つまり、今回の補正タイミングもしくは前回の補正タイミングが欠歯の誤検出に起因するものであれば、今回の補正タイミングにおける第１のカウンタのカウント値と、前回の補正タイミングにおける第１のカウント値との差が欠歯の発生間隔に相当するカウント値と不等となる。一方、今回の補正タイミング及び前回の補正タイミングが本来の欠歯の検出に起因し、更に、その間に新たなノイズや有効エッジの欠落が生じていなければ、第１のカウンタのカウント値に指定数を越えるズレが発生した場合でも、今回の補正タイミングにおける第１のカウンタのカウント値と前回の補正タイミングにおける第１のカウンタのカウント値との差は、欠歯の発生間隔と等しくなる。
【００２５】
従って、上述のように補正作動手段を設定すれば、指定数を越えるズレが生じても、本来の欠歯の検出に起因する補正タイミングにてカウント値を本来値へと補正できる。
又、たとえ今回の補正タイミング及び前回の補正タイミングが本来の欠歯の検出に起因するものであるにも関わらず、新たなズレが生じてしまっても、次回の補正タイミング以降にて新たなズレが更に生じなければ、次回の補正タイミング以降にてカウント値を本来値へと補正できる。
【００２６】
ここで、指定数を第１のカウンタのカウント２つ分以上とした場合には、例えば、ノイズの発生数や有効エッジの欠落数が第１のカウンタのカウント１つ分であるにも関わらず、欠歯の誤検出によって、第１のカウンタのカウント値が、カウント２つ分以上のズレが生じた場合に取り得る値となっているタイミングが補正タイミングとなり、カウント値を本来値に補正してしまった際に、却って新たな誤差が生じてしまう。
【００２７】
そこで、指定数以内のズレは、請求項３記載のように、有効エッジの発生数１つ分であることが望ましい。
特に、これを請求項２記載のエンジン制御装置に適用すると、第１のカウンタのカウント値のズレが有効エッジの発生数１つ分である場合には、補正タイミングにて、第１のカウンタのカウント値を本来値に補正でき、又、第１のカウンタのカウント値のズレが有効エッジの発生数２つ分以上である場合には、次回以降の補正タイミングにて、第１のカウンタのカウント値を本来値に補正できる。つまり、新たな誤差を生じることなく、第１のカウンタのカウント値を本来値に補正できる。
【００２８】
ところで、上述したエンジン制御装置はいずれも、請求項４記載のように、エンジンのカム軸の回転位置に応じてレベルが変化する気筒判別信号のレベルを判別するレベル判別手段と、該気筒判別信号のレベルに応じて予め設定された複数種類の本来値のうち、レベル判別手段の判別結果に応じたものを本来値に設定する第１の設定手段とを備えると良い。
【００２９】
このようにエンジン制御装置を構成すれば、気筒判別信号のレベルに応じて本来値を設定できる。
又、これに対して、請求項５記載のように、補正タイミングに応じて予め設定された複数種類の本来値のうち、第１のカウンタのカウント値に最も近いものを本来値に設定する第２の設定手段を備えても良い。
【００３０】
このようにエンジン制御装置を構成すれば、上述のように気筒判別信号のレベルを判定せずとも、本来値を設定できる。
又、上述したエンジン制御装置はいずれも、請求項６記載のように、クランク軸回転信号が入力され、有効エッジにてカウント値をカウントアップすると共に、欠歯検出タイミングにてカウント値を０にリセットする第２のカウンタを備え、該第２のカウンタのカウント値が予め指定された指定カウント値に達したタイミングを補正タイミングに用いることが望ましい。
【００３１】
このように構成されたエンジン制御装置では、本来の欠歯の検出時だけでなく、欠歯の誤検出時にも第２のカウンタのカウント値が０にリセットされるため、指定カウント値を適切に設定すれば、欠歯の誤検出から本来の欠歯の検出に達するまでに第２のカウンタのカウント値が指定カウント値に達することがない。
【００３２】
つまり、第２のカウンタを備えていない上述のエンジン制御装置では、欠歯の誤検出に起因した補正タイミングであっても、第１のカウンタのカウント値が、指定数以内のズレが生じた場合に取り得る値である場合に、カウント値を本来値に補正する事態が発生するのに対し、本発明のエンジン制御装置では、本来の欠歯の検出に起因する補正タイミングでのみ、カウント値を本来値へと補正できる。
【００３３】
又、上述したエンジン制御装置はいずれも、請求項７記載のように、クランク軸回転信号が入力され、有効エッジにてカウント値をカウントアップすると共に、欠歯検出タイミングにてカウント値を０にリセットする第２のカウンタを備え、補正タイミング間において、第１のカウンタのカウント値と、第２のカウンタのカウント値とを取得するカウント値取得手段と、該カウント値取得手段により取得された第１のカウンタのカウント値と、第２のカウンタのカウント値とを比較し、これらカウント値同士が不整合な場合にのみ、補正作動手段の作動を許可する補正許可手段とを備えることが望ましい。
【００３４】
つまり、第１のカウンタ及び第２のカウンタは、同様の有効エッジにてそれぞれのカウント値をカウントアップするため、本来は互いのカウント値が整合しているはずであるものの、欠歯の誤検出が生じた場合には、第２のカウンタのカウント値がリセットされ、第１のカウンタのカウント値と不整合が生じる。
【００３５】
従って、上述のようにエンジン制御装置を構成すれば、欠歯の誤検出が生じた場合でも、第１のカウンタのカウント値を間違った値に補正してしまうことを防止できる。
尚、ここで、エンジンが２サイクルである場合には、第１のカウンタのカウント範囲及び第２のカウンタのカウント範囲は、同一であるため、これらのカウント値同士が不一致な場合を「不整合」とする。
【００３６】
又、エンジンが４サイクルである場合には、第１のカウンタのカウント範囲は、クランク軸の回転角度における０°ＣＡ〜７２０°ＣＡに相当するものとなる一方、第２のカウンタのカウント範囲は、０°ＣＡ〜３６０°ＣＡに相当するものとなる。従って、この場合、これらカウント値同士が３６０°ＣＡ以外に相当する誤差を生じている場合を「不整合」とする。
【００３７】
ここで、カウント値取得手段をＣＰＵによる逐次処理によって実現する場合（つまり、第１のカウンタのカウント値と第２のカウンタのカウント値とを同時ではなく順番に取得する場合）、取得タイミングのズレから、補正許可手段が、実際には第１のカウンタのカウント値と第２のカウンタのカウント値とが整合しているにも関わらず、これらカウント値が不整合であると誤判定したり（図１９（ａ）参照）、不整合であるにも関わらず、整合していると誤判定する（図１９（ｂ）参照）事態が発生することが考えられる。
【００３８】
そこで、この場合、請求項８記載のように、カウント値取得手段は、有効エッジの発生間隔の最小時間よりも短い時間間隔にて、第１のカウンタのカウント値と、第２のカウンタのカウント値とを少なくとも３つ交互に取得し、補正許可手段は、第１のカウンタのカウント値と、第２のカウンタのカウント値とのうち、複数のカウント値を取得した一方のカウンタのカウント値同士が一致している場合にのみ作動するように設定されていることが望ましい。
【００３９】
このようにカウント値取得手段及び補正許可手段が設定されていれば、実際には第１のカウンタのカウント値と第２のカウンタのカウント値とが整合しているにも関わらず、補正作動手段の作動を許可してしまうことを防止できる。
【００４０】
但し、有効エッジと取得タイミングとが互いに非同期であるが故、カウント値取得手段がカウント値を取得している最中に、有効エッジが発生し、これに起因して、同一のカウンタから取得した複数のカウント値同士が不一致となってしまう事態が発生することが考えられる。
【００４１】
そこで、上述のエンジン制御装置は、請求項９記載のように、カウント値取得手段により取得された第１のカウンタのカウント値と、第２のカウンタのカウント値とのうち、複数のカウント値を取得した一方のカウンタのカウント値同士が不一致な場合に、カウント値取得手段を再作動させる再作動手段を備えることが望ましい。
【００４２】
このようにエンジン制御装置が構成されていれば、複数のカウント値を取得した一方のカウンタのカウント値同士が一致するまでカウント値の取得を繰り返すことができ、ひいては、第１のカウンタのカウント値と第２のカウンタのカウント値とが整合しているか否かを確実に判定できる。
【００４３】
ところで、上述したエンジン制御装置はいずれも、請求項１０記載のように、発生間隔計測手段の前回の計測結果を予め設定された逓倍数で分割した時間を１周期とする逓倍クロック信号を生成する逓倍クロック生成手段と、該逓倍クロック信号によりカウント値を逓倍数までカウントアップすると共に、有効エッジにてカウント値を０にリセットする第３のカウンタとを備えると良い。
【００４４】
つまり、逓倍クロック生成手段と第３のカウンタとによって、有効エッジの発生間隔におけるクランク軸の回転角度を計測できるため、第１のカウンタのカウント値によってクランク軸の回転角度の上位を示し、第３のカウンタのカウント値をクランク軸の回転角度の下位を示すことにより、クランク軸の回転角度をより細かく示すことができる（つまり、計測分解能を向上できる。）。
【００４５】
尚、この場合、第３のカウンタのカウント値は、有効エッジにてクリアされるため、補正タイミングにて第３のカウンタのカウント値を本来値に応じたカウント値に補正する必要はない。
【００４６】
又、逓倍クロック生成手段は、欠歯検出手段が算出比を算出するのに用いる発生間隔計測手段と同一のものを用いても良いし、これとは別個のものを用いても良い。
そして、上述のエンジン制御装置は、請求項１１記載のように、第１のカウンタのカウント値が欠歯の開始時点に相当するカウント値に達した際に、欠歯における有効エッジの欠落数だけ第３のカウンタのラップラウンドを許可すると共に、第３のカウンタから第１のカウンタへの桁上がりを許可するキャリーアップ許可手段を備えると良い。
【００４７】
このようにエンジン制御装置が構成されていれば、欠歯によって有効エッジが欠落しても、第１のカウンタのカウント値をカウントアップすることができ、ひいては、欠歯の開始時点から終了時点までにおいてもクランク軸の回転角度を計測することができる。
【００４８】
ところで、欠歯検出手段は、請求項１２記載のように、ソフトウェアを用いて実現され、欠歯を検出する第１の欠歯検出手段と、算出比と、予め設定された一定の判定比とに基づいて、欠歯を検出する第２の欠歯検出手段と、単位時間当たりのクランク軸の回転数が予め指定された指定回転数に達するまでは、第１の欠歯検出手段を作動させ、該指定回転数に達したのちは、該第１の欠歯検出手段に代えて、第２の欠歯検出手段を作動させる切替手段とを備えると良い。
【００４９】
つまり、エンジンの回転（つまり、クランク軸の回転）が不安定で、有効エッジの発生間隔が大きく変動する回転数では、ソフトウェアによる複雑な処理によって速やかに欠歯を検出でき、又、エンジンの回転が安定し、有効エッジの発生間隔が一定の範囲内に収まる回転数では、簡易に欠歯を検出できる。
【００５０】
しかも、第１の欠歯検出手段をソフトウェアにより実現するため、エンジン制御装置の規模を大掛かりにすることがない。
尚、第２の欠歯検出手段も第１の欠歯検出手段と同様にソフトウェアを用いて実現されても良いが、燃料噴射制御や点火時期制御などを行うＣＰＵに実行させた場合には、これら制御を高い頻度で行わなければならないエンジンの高回転時にＣＰＵの処理の負荷が著しく増大してしまう。
【００５１】
そこで、第２の欠歯検出手段は、請求項１３記載のように、ハードウェアを用いて実現されていることが望ましい。
即ち、一定比を用いて欠歯検出を行うためハードウェアで簡素に実現できる上、エンジンの高回転時におけるＣＰＵの処理の負荷を増大させることがない。
【発明を実施するための最良の形態】
【００５２】
以下に本発明の実施形態を図面と共に説明する。
［第１実施形態］
まず、図１は、本実施形態におけるエンジン制御装置（以下、「エンジンＥＣＵ」という。）１の構成を示す構成ブロック図である。尚、本実施形態では、エンジンＥＣＵ１は、直列４気筒の４ストローク１サイクルエンジン（所謂４サイクルエンジン）を制御対象とするものである。
【００５３】
図１に示すように、エンジンＥＣＵ１は、エンジンを制御するための各種処理を実行するマイクロコンピュータ（以下、単に「マイコン」という。）２と、外部装置からの入力信号を受け、マイコン２へ入力する入力回路３，４，５，６と、マイコン２からの出力信号を受け、外部装置を作動させる出力回路７とを備える。
【００５４】
ここで、入力回路３は、クランク軸センサ８に接続され、クランク軸センサ８から入力されるクランク軸回転信号（ＮＥ信号）から一定周波数帯域のノイズを除去すると共に、このＮＥ信号を矩形波に波形整形してマイコン２へ入力するように構成されている。尚、クランク軸センサ８は、エンジンのクランク軸９に固定されたロータ１０の外周に対向して設けられ、ロータ１０の外周に所定角度（本実施形態では１０°ＣＡ）毎の間隔で形成された歯１０１を検出してパルスを発生する光電式もしくはホールＩＣ式のセンサとして構成されている。但し、ロータ１０の外周には、歯１０１が２個欠落した欠歯部１０２が１つ設けられている。
【００５５】
このため、入力回路３を介してマイコン２に入力されるＮＥ信号（ＮＥ１０信号）は、クランク軸９が１０°回転する毎（１０°ＣＡ毎）にパルスを生じると共に、ロータ１０の欠歯部１０２がクランク軸センサ８に対向する基準位置に来ると、パルスの有効エッジ（本実施形態では立ち上がりエッジ）の間隔が３倍の長さ（つまり、３０°ＣＡ分の長さ）となる分だけパルスが欠落した欠歯を生じる（例えば、図４参照）。尚、上述のようにロータ１０では、欠歯部１０２が１つだけ設けられているため、ＮＥ１０信号では、３６０°ＣＡ毎に欠歯を生じることとなる。
【００５６】
又、入力回路４は、カム軸センサ１１に接続され、カム軸センサ１１から入力される気筒判別信号（Ｇ信号）から一定周波数帯域のノイズを除去すると共に、このＧ信号を矩形波に波形整形してマイコン２へ入力するように構成されている。尚、カム軸センサ１１は、クランク軸９の回転に対して１／２の比率で回転するエンジンのカム軸１２に固定されたロータ１３の外周に対向して設けられ、ロータ１３の外周に形成された凹凸に応じて、Ｇ信号の論理レベルがハイレベルとローレベルとに変化する磁気抵抗素子（ＭＲＥ）式のセンサとして構成されている。但し、ロータ１３の外周には、６０°間隔毎に凹凸が交互に形成されている。
【００５７】
このため、入力回路４を介してマイコン２へ入力されるＧ信号は、ＮＥ１０信号のパルス発生期間中では、論理レベルが３回反転すると共に、ＮＥ１０信号の欠歯発生タイミングでは、そのタイミング毎に交互に異なった論理レベルとなる（図４参照）。但し、本実施形態では、Ｇ信号の論理レベルは、クランク軸９の回転角度が３６０°ＣＡであればローレベルとなり、７２０°ＣＡ（０°ＣＡ）であればハイレベルとなる。
【００５８】
又、入力回路５は、エンジンを始動させるためのスタータスイッチ１４や、アクセルペダルの全閉を検出するアイドルスイッチ１５などといったエンジン操作に関わるスイッチ類に接続され、これらスイッチからの入力信号から一定周波数帯域のノイズを除去して、これら入力信号をマイコン２へ入力するように構成されている。
【００５９】
又、入力回路６は、エンジンの吸入吸気量を検出するエアフローメータ１６や、エンジンのスロットル弁の開度を検出するスロットルセンサ１７、エンジンの冷却水の温度を検出する水温センサ１８などといったエンジンの状態を検出する各種センサに接続され、これらセンサからの入力信号から一定周波数帯域のノイズを除去して、これら入力信号をマイコン２へ入力するように構成されている。
【００６０】
又、出力回路７は、エンジンの各気筒に設けられた４つの点火コイル４１，４２，４３，４４をスイッチングするイグナイタ１９と、エンジンの各気筒に設けられた４つの燃料噴射弁５１，５２，５３，５４とに接続されており、マイコン２から出力される出力信号に応じて、イグナイタ１９と燃料噴射弁５１〜５４とをそれぞれ作動させるように構成されている。
【００６１】
そして、マイコン２は、入力回路３，４を介して入力されるＮＥ１０信号とＧ信号とに基づいて、クランク軸９の回転角度を計測するクランク処理部２０と、クランク軸９の回転角度を示す表カウンタ２１と、ＮＥ１０信号における欠歯からの有効エッジの発生数を示す裏カウンタ２２と、ＮＥ１０信号における有効エッジの発生間隔を予め設定された逓倍数（本実施形態では、３２逓倍）だけ分割した時間を１周期とする逓倍クロック信号を生成する逓倍回路２３とを備える。但し、クランク処理部２０は、各種論理回路などから構成されている。又、表カウンタ２１は、クランク軸９の回転角度の上位を示す上位カウンタ２１ａと、下位を示す下位カウンタ２１ｂとから構成されている。
【００６２】
又、マイコン２は、エンジンを制御するための各種処理を実行するＣＰＵ２４と、ＣＰＵ２４が実行すべき各種処理のプログラムや各種処理に用いるデータを記憶するＲＯＭ２５と、各種処理にて算出される各種データなどを一時記憶するＲＡＭ２６と、エンジンＥＣＵ１にて発生したエラーの履歴などを記憶するための不揮発性メモリであるＥＥＰＲＯＭ２７とを備える。
【００６３】
又、マイコン２は、表カウンタ２１のカウント値と燃料噴射制御や点火時期制御などを行うために予め設定された各種設定値とを比較し、表カウンタ２１のカウント値がこれら各種設定値と一致した際に、出力回路７に対する角度同期信号や、ＣＰＵ２４に対する割込信号を発生する比較器２８と、ＮＥ１０信号における有効エッジの発生間隔の最小時間よりも十分に短い周期の内部クロック信号によって常時カウントアップされるフリーランタイマ２９とを備える。
【００６４】
又、マイコン２は、入力回路６を介して入力されるエアフローメータ１６の信号とスロットルセンサ１７の信号と水温センサ１８の信号とをディジタル信号に変換し、ＣＰＵ２４へ入力するＡ／Ｄ変換器３０と、入力回路５を介して入力されるスタータスイッチ１４の信号とアイドルスイッチ１５の信号とをＣＰＵ２４へ入力する一方、ＣＰＵ２４からの出力信号や比較器２８からの角度同期信号を出力回路７へ出力するＩ／Ｏポート３１とを備える。
【００６５】
このように構成されたマイコン２では、ＣＰＵ２４が、周知のエンジンＥＣＵのＣＰＵと同様に、燃料噴射制御や点火時期制御などを行うと共に、エンジンの始動時から単位時間当たりのクランク軸９の回転数が予め指定された指定回転数（本実施形態では、５００ｒｐｍ）に達するまでは、ＮＥ１０信号の有効エッジに起因する割込処理にて、ＮＥ１０信号とＧ信号とに基づいて、欠歯検出や気筒検出、クランク軸９の回転角度の計測を行う。そして、クランク軸９の回転数が指定回転数に達したのち、欠歯を更に所定回数（本実施形態では２回）検出すると、クランク処理部２０によるクランク軸９の回転角度の計測を有効にし、この割込処理を停止する。尚、このようなＣＰＵ２４の割込処理は、上述の特許文献１に記載の内容とほぼ同様であるため、ここではこれ以上の説明を省略する。
【００６６】
以下、クランク処理部２０が行う各種処理について説明する。
まず、図２は、クランク処理部２０が行う回転角度計測処理の流れを示すフローチャートである。尚、本処理は、ＮＥ１０信号におけるパルスの有効エッジが発生する毎に実行される。
【００６７】
図２に示すように、本処理では、まず、フリーランタイマ２９のタイマ値を０にリセットすると共に、リセットする直前のタイマ値を今回の有効エッジの発生間隔Ｔ（ｎ）として、当該クランク処理部２０に設けられた記憶領域に設定する（Ｓ１００）。
【００６８】
そして、記憶領域にて、下位カウンタ２１ｂから上位カウンタ２１ａへの桁上がりを許可するキャリー許可フラグＦｃがＯＮに設定されているか否かを確認する（Ｓ１０５）。
ここで、キャリー許可フラグＦｃがＯＦＦに設定されている場合には（Ｎｏ：Ｓ１０５）、上位カウンタ２１ａのカウント値ＭＣｎｔＨとして今回設定すべきカウント値を一時記憶するために記憶領域に設定されたカウント値ｔＭＣｎｔＨに、ＭＣｎｔＨを１だけ加算したカウント値を設定すると共に、下位カウンタ２１ｂのカウント値ＭＣｎｔＬを０にリセットする（Ｓ１１０）。
【００６９】
そして、ｔＭＣｎｔＨが３３もしくは６９（つまり、欠歯の開始時点に相当するカウント値）であるか否かを確認し（Ｓ１１５）、３３でも６９でもなければ（Ｎｏ：Ｓ１１５）、キャリー許可フラグＦｃ＝ＯＮ時におけるＭＣｎｔＨを記憶するために記憶領域に設定されたカウント値ＭＣｎｔＭを０にリセットし（Ｓ１２０）、後述のＳ１５５へ移行する。
【００７０】
一方、ｔＭＣｎｔＨが３３もしくは６９であれば（Ｙｅｓ：Ｓ１１５）、今回設定すべきキャリー許可フラグＦｃの状態を一時記憶するために記憶領域に設定された一時許可フラグｔＦｃをＯＮに設定すると共に（Ｓ１２５）、ｔＭＣｎｔＨの値をＭＣｎｔＭに設定し（Ｓ１３０）、後述のＳ１５５へ移行する。
【００７１】
一方、Ｓ１０５にて、キャリー許可フラグＦｃがＯＮに設定されている場合には（Ｙｅｓ：Ｓ１０５）、一時許可フラグｔＦｃをＯＦＦに設定し（Ｓ１３５）、ＭＣｎｔＭが３３又は６９のどちらであるのか確認する（Ｓ１４０）。
【００７２】
ここで、ＭＣｎｔＭが３３であれば（ＭＣｎｔＭ＝３３：Ｓ１４０）、ｔＭＣｎｔＨを３６に設定すると共に、ＭＣｎｔＬを０にリセットし（Ｓ１４５）、後述のＳ１５５へ移行する。一方、ＭＣｎｔＭが６９であれば（ＭＣｎｔＭ＝６９：Ｓ１４０）、ｔＭＣｎｔＨ及びＭＣｎｔＬを共に０にリセットする（Ｓ１５０）。
【００７３】
そして、記憶領域に設定された、今回の有効エッジの発生間隔Ｔ（ｎ）と、前回の有効エッジの発生間隔Ｔ（ｎ−１）との比であるＴ（ｎ）／Ｔ（ｎ−１）を算出し、この算出比が欠歯を検出するために予め設定された一定の判定比Ｋ（本実施形態では、Ｋ＝２．４）以上であるか否かを判定する（Ｓ１５５）。
【００７４】
ここで、この算出比が判定比Ｋ以上であるという欠歯判定条件が満たされていない場合には（Ｎｏ：Ｓ１５５）、欠歯を検出していないものとして、裏カウンタ２２のカウント値ＳＣｎｔとして今回設定すべきカウント値を一時記憶するために記憶領域に設定されたカウント値ｔＳＣｎｔに、ＳＣｎｔを１だけ加算したカウント値を設定し（Ｓ１６０）、後述のＳ２００へ移行する。
【００７５】
一方、欠歯判定条件が満たされている場合には（Ｙｅｓ：Ｓ１５５）、欠歯を検出したものとして、ｔＳＣｎｔを０にリセットする（Ｓ１６５）。
そして、ｔＭＣｎｔＨが３３もしくは３７であるか否かを確認する（Ｓ１７０）。尚、ここにおける３３という値は、クランク軸９が０°〜３６０°回転する間（０°ＣＡ〜３６０°ＣＡ）に、ＮＥ１０信号において、本来発生しているべきパルスが１つ欠落した場合に、本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値である。又、３７という値は、クランク軸９が０°〜３６０°回転する間に、ＮＥ１０信号において、ノイズが１つ発生した場合に、本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値である。
【００７６】
ここで、ｔＭＣｎｔＨが３３もしくは３７である場合には（Ｙｅｓ：Ｓ１７０）、ｔＭＣｎｔＨを３６に設定すると共に、ＭＣｎｔＬを０にリセットし（Ｓ１７５）、後述のＳ１９５へ移行する。尚、この３６という値は、本来の欠歯の検出タイミングにおいて、ＭＣｎｔＨが本来取るべき値である本来値である。
【００７７】
一方、ｔＭＣｎｔＨが３３でも３７でもない場合には（Ｎｏ：Ｓ１７０）、ｔＭＣｎｔＨが６９もしくは１であるか否かを確認する（Ｓ１８０）。尚、ここにおける６９という値は、クランク軸９が３６０°〜７２０°回転する間（３６０°ＣＡ〜７２０°ＣＡ）に、ＮＥ１０信号において、本来発生しているべきパルスが１つ欠落した場合に、本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値である。又、１という値は、クランク軸９が３６０°〜７２０°回転する間に、ＮＥ１０信号において、ノイズが１つ発生した場合に、本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値である。
【００７８】
ここで、ｔＭＣｎｔＨが６９でも１でもない場合には（Ｎｏ：Ｓ１８０）、後述のＳ２００へ直ちに移行する。
一方、ｔＭＣｎｔＨが６９もしくは１である場合には（Ｙｅｓ：Ｓ１８０）、ｔＭＣｎｔＨ及びＭＣｎｔＬを共に０にリセットして（Ｓ１８５）、一時許可フラグｔＦｃをＯＦＦに設定する（Ｓ１９５）。尚、この０という値は、本来の欠歯の検出タイミングにおけるＭＣｎｔＨの本来値である。
【００７９】
そして、ｔＭＣｎｔＨの値と、ｔＳＣｎｔの値と、一時許可フラグｔＦｃの状態とをそれぞれ、ＭＣｎｔＨ、ＳＣｎｔ、キャリー許可フラグＦｃに設定し（Ｓ２００）、本処理を終了する。
【００８０】
次に、図３は、クランク処理部２０が行う下位カウンタ処理の流れを示すフローチャートである。尚、本処理は、逓倍クロック信号の有効エッジ（本実施形態では、立ち上がりエッジ）が発生する毎に実行される。
【００８１】
図３に示すように、本処理では、まず、ＭＣｎｔＬが最大値（ＭＡＸ）未満であるか否かを確認し（Ｓ３００）、最大値未満である場合には（Ｙｅｓ：Ｓ３００）、ＭＣｎｔＬに加算値ｎを加算したカウント値をＭＣｎｔＬに設定し（Ｓ３０５）、本処理を終了する。尚、本実施形態では、ＭＣｎｔＬは８ビットからなり、加算値ｎは、２５６／３２＝８に設定されている。又、最大値は、３１×ｎ＝２４８に設定されている。
【００８２】
一方、Ｓ３００にて、ＭＣｎｔＬが最大値に達している場合には（Ｎｏ：Ｓ３００）、キャリー許可フラグＦｃがＯＮに設定されているか否かを確認し（Ｓ３１０）、キャリー許可フラグＦｃがＯＦＦに設定されている場合には（Ｎｏ：Ｓ３１０）、本処理を直ちに終了する。
【００８３】
一方、キャリー許可フラグＦｃがＯＮに設定されている場合には（Ｙｅｓ：Ｓ３１０）、ＭＣｎｔＨが、ＭＣｎｔＭにＮＥ１０信号における欠歯区間のパルスの欠落数分（つまり、２つ分）を加算した値未満であるか否かを確認する（Ｓ３１５）。
【００８４】
ここで、ＭＣｎｔＨがＭＣｎｔＭ＋２に達している場合には（Ｎｏ：Ｓ３１５）、本処理を直ちに終了する一方、ＭＣｎｔＭ＋２未満である場合には（Ｙｅｓ：Ｓ３１５）、ＭＣｎｔＨに１だけ加算した値をＭＣｎｔＨに設定すると共に、ＭＣｎｔＬを０にリセットし（Ｓ３２０）、本処理を終了する。
【００８５】
以上のように構成された本実施形態のエンジンＥＣＵ１では、図４に示すように、エンジンの始動後、単位時間当たりのクランク軸９の回転数が指定回転数に達するまでは、ＣＰＵ２４が、ソフトウェアによる処理によって、欠歯検出や気筒検出、クランク軸９の回転角度の計測などを実行する。そして、クランク軸９の回転数が指定回転数に達したのち、欠歯を更に２回検出すると、クランク処理部２０による欠歯検出と、クランク軸９の回転角度の計測とを有効とする。尚、図４は、エンジン始動時における、エンジンＥＣＵ１の処理のタイミングを示すタイミングチャートである。但し、図４では、図を簡略化するために、ＮＥ１０信号については有効エッジのみを示す。
【００８６】
そして、図５に示すように、クランク処理部２０は、ＮＥ１０信号の有効エッジにて、上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとを共にカウントアップする。又、その一方で、逓倍クロック信号（図示せず）の有効エッジにて、下位カウンタ２１ｂのカウント値ＭＣｎｔＬをカウントアップすると共に、ＮＥ１０信号の有効エッジにてＭＣｎｔＬを０にリセットする。
【００８７】
このように各カウンタのカウント値をカウントアップしていき、上位カウンタ２１ａのカウント値ＭＣｎｔＨが欠歯の開始時点に相当する値（つまり、３３，６９）に達すると、キャリー許可フラグＦｃをＯＮし、欠歯区間におけるパルスの欠落数分だけ、下位カウンタ２１ｂのカウント値ＭＣｎｔＬをラップラウンドさせると共に、下位カウンタ２１ｂから上位カウンタ２１ａへの桁上がりを行う。
【００８８】
そして、欠歯の検出タイミングにて、キャリー許可フラグＦｃをＯＦＦに設定すると共に、裏カウンタ２２のカウント値ＳＣｎｔを０にリセットする。又、上位カウンタ２１ａのカウント値ＭＣｎｔＨが７１に達している場合には、０にリセットする。
【００８９】
ここで、図５の破線枠で囲まれた区間にて、ＮＥ１０信号にノイズや本来発生しているべきパルスの欠落が１つ生じた場合におけるクランク処理部２０の動作について説明する。
【００９０】
まず、図６に示すように、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来は２５→２６へとカウントアップすべき区間において、欠歯判定条件を満たすタイミングにてＮＥ１０信号にノイズが１つ発生すると（図中破線枠Ａ内）、クランク処理部２０は、欠歯を誤検出する。
【００９１】
ここで、クランク処理部２０は、裏カウンタ２２のカウント値ＳＣｎｔを０にリセットするものの、このタイミングにおけるｔＭＣｎｔＨの値（つまり、２８）が、ＮＥ１０信号においてノイズや本来発生しているべきパルスの欠落が１つ発生した場合に、本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値（つまり、３３，３７，６９，１）と異なるため、このタイミングでは、ＭＣｎｔＨを本来値に補正せずに２８とする（図中破線枠Ｂ内）。
【００９２】
そして、上位カウンタ２１ａのカウント値ＭＣｎｔＨが欠歯の開始時点に相当するカウント値（つまり、３３）に達すると、キャリー許可フラグＦｃをＯＮする。
ここで、上述のノイズに起因して、上位カウンタ２１ａのカウント値ＭＣｎｔＨが、本来の欠歯の開始時点前に３３に達してしまっているため、キャリー許可フラグＦｃがＯＮであるにも関わらず、有効エッジが発生する。
【００９３】
ここで、クランク処理部２０は、キャリー許可フラグＦｃを直ちにＯＦＦすると共に、ＭＣｎｔＨを３６に設定する。尚、これは、上述のノイズによって本来の欠歯の開始時点前にＭＣｎｔＨが３３に達してしまったことにより、本来の欠歯区間にて下位カウンタ２１ｂから上位カウンタ２１ａへの桁上がりが行われずに、ＭＣｎｔＨに誤差が生じてしまうことを防止するための処置である。
【００９４】
そして、再度欠歯を検出すると（つまり、本来の欠歯を検出すると）、この検出タイミングでは、ｔＭＣｎｔＨが３７となり、ＮＥ１０信号においてノイズが１つ発生した場合に本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値と一致するため、このタイミングにて、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値である３６に補正する（図中破線枠Ｃ内）。
【００９５】
次に、図７に示すように、図６と同様の区間にて、欠歯判定条件を満たさないタイミングにてＮＥ１０信号にノイズが１つ発生すると（図中破線枠内）、図６の場合と同様に、本来の欠歯の検出タイミングにて、ｔＭＣｎｔＨが３７となり、ＮＥ１０信号においてノイズが１つ発生した場合に本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値と一致するため、クランク処理部２０は、このタイミングにて、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値である３６に補正する。
【００９６】
次に、図８に示すように、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来は２４→２５→２６へとカウントアップすべき区間において、本来発生しているべきパルスが１つ欠落すると（図中破線枠内）、本来の欠歯の検出タイミングにて、ｔＭＣｎｔＨが３３となる。
【００９７】
そして、この値は、ＮＥ１０信号において本来発生しているべきパルスが１つ欠落した場合に本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値と一致するため、クランク処理部２０は、このタイミングにて、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値である３６に補正する。尚、図５〜図８はそれぞれ、クランク処理部２０の動作の一例を示すタイミングチャートである。
【００９８】
以上のように、本実施形態のエンジンＥＣＵ１では、表カウンタ２１のカウント値が大きな誤差を生じてしまうようなタイミングにて、ＮＥ１０信号にノイズや本来発生しているべきパルスが１つ欠落し、欠歯を誤検出しても、表カウンタ２１のカウント値を間違った本来値に補正してしまうことがない。
【００９９】
即ち、本実施形態のエンジンＥＣＵ１によれば、ｔＭＣｎｔＨの値が、ＮＥ１０信号においてノイズもしくは本来発生しているべきパルスの欠落が１つ生じた場合に取り得る値である場合にのみ、表カウンタ２１のカウント値を本来値に補正するという簡素な構成でありながらも、欠歯の誤検出に起因して、クランク軸９の回転角度を示すカウント値に大きな誤差が生じてしまうことを防止できる。
【０１００】
又、本実施形態のエンジンＥＣＵ１では、逓倍クロック信号と下位カウンタ２１ｂとによって、ＮＥ１０信号の有効エッジの発生間隔におけるクランク軸９の回転角度を計測でき、上位カウンタ２１ａのカウント値ＭＣｎｔＨでクランク軸９の回転角度の上位を示し、下位カウンタ２１ｂのカウント値ＭＣｎｔＬでクランク軸９の回転角度の下位を示すことで、クランク軸９の回転角度をより細かく示すことができる（つまり、計測分解能を向上できる。）。
【０１０１】
又、本実施形態のエンジンＥＣＵ１では、欠歯区間にて、上位カウンタ２１ａのカウント値ＭＣｎｔＨを下位カウンタ２１ｂからの桁上がりによってカウントアップするため、欠歯によってＮＥ１０信号のパルスが欠落しても、クランク軸９の回転角度を計測できる。
【０１０２】
又、本実施形態のエンジンＥＣＵ１では、エンジンの始動時には、ソフトウェアによる複雑な処理によって欠歯を検出するため、エンジンＥＣＵ１の規模を大掛かりにすることなく、エンジンの始動時に速やかに欠歯を検出できる。
【０１０３】
又、エンジンの回転が安定し、ＮＥ１０信号における有効エッジの発生間隔が一定の範囲内で収まる回転数では、一定の判定比を用いて欠歯を検出するため、クランク処理部２０を簡素に実現できる。更に、クランク処理部２０によって簡易に欠歯を検出するため、ＣＰＵ２４の処理負荷を増大させることがない。
【０１０４】
尚、本実施形態では、クランク処理部２０が行う回転角度計測処理のＳ１１０，２００と、上位カウンタ２１ａとが本発明における第１のカウンタに相当し、又、フリーランタイマ２９と、回転角度計測処理のＳ１００とが本発明における発生間隔計測手段に相当し、又、Ｓ１５５が本発明における第２の欠歯検出手段に相当する。
【０１０５】
又、本実施形態では、回転角度計測処理のＳ１７５，１８５，２００が本発明における補正手段に相当し、Ｓ１７０，１８０が本発明における補正作動手段に相当する。
又、本実施形態では、回転角度計測処理のＳ１６０，１６５，２００と、裏カウンタ２２とが本発明における第２のカウンタに相当し、又、逓倍回路２３が本発明における逓倍クロック生成手段に相当し、又、回転角度計測処理のＳ１１０と、下位カウンタ処理のＳ３００，３０５と、下位カウンタ２１ｂとが本発明における第３のカウンタに相当する。
【０１０６】
又、本実施形態では、回転角度計測処理のＳ１１５，１２５と、下位カウンタ処理のＳ３１０，３１５とが本発明におけるキャリーアップ許可手段に相当し、又、ＣＰＵ２４が行う欠歯検出が本発明における第１の欠歯検出手段に相当し、又、ＣＰＵ２４が本発明における切替手段と相当する。
【０１０７】
ところで、本実施形態のエンジンＥＣＵ１では、上述のように、ＮＥ１０信号において、ノイズや本来発生しているべきパルスの欠落が１つ（つまり、上位カウンタ２１ａのカウント１つ分）生じた場合を前提としていたが、ノイズや本来発生しているべきパルスの欠落を２つもしくは３つ以内としても良い。
【０１０８】
より具体的には、ノイズ及びパルスの欠落を２つ以内とする場合には、回転角度計測処理のＳ１７０において、ｔＭＣｎｔＨが３２，３３もしくは３７，３８であるか否かを判定し、更に、Ｓ１８０において、ｔＭＣｎｔＨが６８，６９もしくは１，２であるか否かを判定するようにクランク処理部２０を構成すれば良い。
【０１０９】
又、ノイズ及びパルスの欠落を３つ以内とする場合には、回転角度計測処理のＳ１７０において、ｔＭＣｎｔＨが３１〜３３もしくは３７〜３９であるか否かを判定し、更に、Ｓ１８０において、ｔＭＣｎｔＨが６７〜６９もしくは１〜３であるか否かを判定するようにクランク処理部２０を構成すれば良い。
【０１１０】
又、例えば、ノイズを１つ、パルスの欠落を２つ以内というように互いに数を異ならせても良い。
但し、上述のように、例えば、２つのノイズやパルスの欠落を前提とした場合、図９に示すように、欠歯区間中と、欠歯区間の終了直後とに欠歯の誤検出が生じるようなタイミングでノイズが１つ発生した際には、欠歯区間の終了直後における欠歯の誤検出タイミングにて、ｔＭＣｎｔＨが３８となり、上位カウンタ２１ａのカウント値ＭＣｎｔＨが３６に補正されてしまう。
【０１１１】
つまり、ノイズが１つしか発生していないにも関わらず、ノイズが２つ発生した場合に本来の欠歯の検出タイミングにてｔＭＣｎｔＨが取り得る値３８と一致してしまい、本来は３７でなければならないにも関わらず、却って新たな誤差−１が生じてしまう。尚、図９は、本実施形態のエンジンＥＣＵ１において、２つのノイズやパルスの欠落を前提とした場合における問題の一例を示すタイミングチャートである。
【０１１２】
そこで、次に、ＮＥ１０信号にノイズや本来発生しているべきパルスの欠落が２つ以上生じた場合であっても、上述の問題を生じることなく、上位カウンタ２１ａのカウント値ＭＣｎｔＨを補正可能な第２実施形態について説明する。
［第２実施形態］
まず、本実施形態のエンジンＥＣＵ１は、第１実施形態の回転角度計測処理中において新たに追加した処理を実行するようにクランク処理部２０を構成しただけである。
【０１１３】
従って、ここでは、第１実施形態と共通する処理のステップについては同一の符号を付してその説明を省略し、新たに追加した処理の各ステップについてのみ説明する。
ここで、図１０は、本実施形態におけるクランク処理部２０が行う回転角度計測処理の流れを示すフローチャートである。
【０１１４】
図１０に示すように、本処理では、上述のＳ１８０にて、ｔＭＣｎｔＨが６９でも１でもなければ（Ｎｏ：Ｓ１８０）、新たに追加した追加処理を実行したのち（Ｓ１９０）、上述のＳ２００を経て、本処理を終了する。
【０１１５】
次に、図１１は、追加処理（Ｓ１９０）の流れを示すフローチャートである。
図１１に示すように、本処理では、まず、記憶領域にて、前回の欠歯の検出タイミングにおけるｔＭＣｎｔＨが３３，３７，６９，１のいずれでもなかった旨を示すエラーフラグＦｅがＯＮに設定されているか否かを確認する（Ｓ４００）。
【０１１６】
ここで、エラーフラグＦｅがＯＦＦに設定されている場合には（Ｎｏ：Ｓ４００）、エラーフラグＦｅをＯＮに設定すると共に（Ｓ４０５）、この際のｔＭＣｎｔＨを記憶するために、記憶領域に設定されたカウント値ＭＣｎｔＥに、このｔＭＣｎｔＨを設定して（Ｓ４１０）、本処理を終了する。
【０１１７】
一方、エラーフラグＦｅがＯＮに設定されている場合には（Ｙｅｓ：Ｓ４００）、ｔＭＣｎｔＨと記憶領域に設定されたＭＣｎｔＥとの差の絶対値を算出し、この算出結果が欠歯の発生間隔に相当する値である３６であるか否かを判定する（Ｓ４１５）。
【０１１８】
ここで、差が３６以外である場合には（Ｎｏ：Ｓ４１５）、上述のＳ４１０へ移行する一方、３６である場合には（Ｙｅｓ：Ｓ４１５）、ｔＭＣｎｔＨが１７以上５３未満であるか否かを判定する（Ｓ４２０）。尚、ここで、１７≦ｔＭＣｎｔＨ＜５３という範囲は、ｔＭＣｎｔＨ＝３６を中心とした範囲であり、ｔＭＣｎｔＨがこの範囲内であるか否かを判定することにより、欠歯の検出タイミングが実際上ｔＭＣｎｔＨ＝３６に相当するものであるのか、ｔＭＣｎｔＨ＝０に相当するものであるのかを判定するのである。
【０１１９】
そして、ｔＭＣｎｔＨが１７未満もしくは５３以上である場合には（Ｎｏ：Ｓ４２０）、欠歯の検出タイミングがｔＭＣｎｔＨ＝０に相当するものとして、ｔＭＣｎｔＨ及びｔＭＣｎｔＬを０にリセットして（Ｓ４２５）、後述のＳ４３５に移行する。
【０１２０】
一方、ｔＭＣｎｔＨが１７以上５３未満である場合には（Ｙｅｓ：Ｓ４２０）、欠歯の検出タイミングがｔＭＣｎｔＨ＝３６に相当するものとして、ｔＭＣｎｔＨに３６を設定すると共に、ＭＣｎｔＬを０にリセットしたのち（Ｓ４３０）、エラーフラグＦｅをＯＦＦに設定し（Ｓ４３５）、本処理を終了する。
【０１２１】
このように構成された本実施形態のクランク処理部２０は、図１２に示すように、欠歯判定条件を満たさないタイミングにてＮＥ１０信号にノイズが２つ発生すると、欠歯の検出タイミングにてｔＭＣｎｔＨ＝３８となり、３３，３７，６９，１のいずれでもないため、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値の３６に補正せずに３８とする。
【０１２２】
そして、次回の欠歯の検出タイミングまでに新たなノイズやパルスの欠落が生じていなければ、今回の欠歯の検出タイミングにおけるｔＭＣｎｔＨ（ＭＣｎｔＥ）と次回の欠歯の検出タイミングにおけるｔＭＣｎｔＨとの差が欠歯の発生間隔に相当するため、次回の欠歯の検出タイミングにて、ＭＣｎｔＨを本来値の０に補正する。
【０１２３】
又、クランク処理部２０は、図１３に示すように、欠歯判定条件を満たさないように、ＮＥ１０信号にて、本来発生しているべきパルスが２つ欠落すると、欠歯の検出タイミングにて、ｔＭＣｎｔＨ＝３２となり、３３，３７，６９，１のいずれでもないため、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値の３６に補正せずに３２とする。
【０１２４】
そして、次回の欠歯の検出タイミングまでに新たなノイズやパルスの欠落が生じていなければ、今回の欠歯の検出タイミングにおけるｔＭＣｎｔＨ（ＭＣｎｔＥ）と次回の欠歯の検出タイミングにおけるｔＭＣｎｔＨとの差が欠歯の発生間隔に相当するため、次回の欠歯の検出タイミングにて、ＭＣｎｔＨを本来値の０に補正する。
【０１２５】
但し、クランク処理部２０は、図１４に示すように、欠歯判定条件を満たさないタイミングにてＮＥ１０信号にノイズが２つ発生すると、上述のように、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値の３６に補正せずに３８とするものの、次回の欠歯の検出タイミングまでに、欠歯判定条件を満たさないように新たにノイズが１つ発生してしまった場合には、今回の欠歯の検出タイミングにおけるｔＭＣｎｔＨ（ＭＣｎｔＥ）と次回の欠歯の検出タイミングにおけるｔＭＣｎｔＨとの差が欠歯の発生間隔とは異なってしまうため、次回の欠歯の検出タイミングでも、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値の０に補正しない。
【０１２６】
しかしながら、これ以降の欠歯の検出タイミングにて、新たにノイズやパルスの欠落が生じなければ、これ以降の欠歯の検出タイミングにて、ｔＭＣｎｔＥとｔＭＣｎｔＨとの差が欠歯の発生間隔に相当するため、その際に、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値に補正する。尚、図１２〜１４はそれぞれ、本実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【０１２７】
つまり、今回の欠歯の検出タイミングもしくは前回の欠歯の検出タイミングが欠歯の誤検出に起因するものであれば、今回の欠歯の検出タイミングにおけるｔＭＣｎｔＨと、前回の欠歯の検出タイミングにおけるｔＭＣｎｔＨとの差が欠歯の発生間隔に相当するカウント値と不等となる。一方、今回の欠歯の検出タイミング及び前回の欠歯の検出タイミングが本来の欠歯の検出に起因し、更に、その間に新たなノイズやパルスの欠落が生じていなければ、ＮＥ１０信号に２つ以上のノイズやパルスの欠落が発生した場合でも、今回の欠歯の検出タイミングにおけるｔＭＣｎｔと前回の欠歯の検出タイミングにおけるｔＭＣｎｔＨとの差は、欠歯の発生間隔と等しくなる。
【０１２８】
従って、本実施形態のエンジンＥＣＵ１によれば、２つ以上のノイズやパルスの欠落が生じても、本来の欠歯の検出タイミングにて上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値へと補正できる。
【０１２９】
又、たとえ今回の欠歯の検出タイミング及び前回の欠歯の検出タイミングが本来の欠歯の検出に起因するものであるにも関わらず、新たなノイズやパルスの欠落が生じてしまっても、次回の欠歯のタイミング以降にて新たなノイズやパルスの欠落が更に生じなければ、次回の欠歯の検出タイミング以降にて上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来値へと補正できる。
【０１３０】
尚、本実施形態では、クランク処理部２０が行う追加処理のＳ４００，４１５が本発明における請求項２記載の補正実行手段に相当し、Ｓ４２０〜Ｓ４３０、回転角度計測処理のＳ２００が本発明における第２の設定手段に相当する。
【０１３１】
ところで、本実施形態では、クランク処理部２０は、Ｓ４２０〜４３０にて、ｔＭＣｎｔＨを最も近い本来値に補正したが、Ｇ信号の論理レベルに応じた本来値を設定するように構成されていても良い。
【０１３２】
つまり、上述したように、Ｇ信号の論理レベルは、クランク軸９の回転角度が３６０°ＣＡであればローレベルとなり、７２０°ＣＡ（０°ＣＡ）であればハイレベルとなるため、Ｇ信号の論理レベルを判別することで、正しい本来値を設定できる。
【０１３３】
従って、上述の追加処理のＳ４２０にて、Ｇ信号の論理レベルを判定し、ハイレベルであれば、Ｓ４２５に移行し、ローレベルであれば、Ｓ４３０に移行するようにクランク処理部２０を構成すれば良い。尚、この場合、Ｓ４２０，４２５，４３０が本発明におけるレベル判別手段と第１の設定手段とに相当する。
［第３実施形態］
次に、第３実施形態について説明する。但し、本実施形態のエンジンＥＣＵ１は、第２実施形態のクランク処理部２０が行っていた処理の一部をＣＰＵ２４のソフトウェア処理で実現しただけであり、これに関わる部分以外については第２実施形態と全く同様である。従って、ここでは、第２実施形態と共通する部分についてはその説明を省略し、異なる部分についてのみ説明する。
【０１３４】
まず、本実施形態のエンジンＥＣＵ１では、クランク処理部２０は、表カウンタ２１及び裏カウンタ２２のカウントアップ及び欠歯検出のみを行うように構成され、ＣＰＵ２４は、上述の内部クロック信号の有効エッジ（本実施形態では立ち上がりエッジ）に同期して、表カウンタ２１及び裏カウンタ２２のカウント値の両方を読み込み、表カウンタ２１のカウント値を補正可能に構成されている（図示省略）。そして、ＣＰＵ２４は、上述の各種ソフトウェア処理の他、以下の異常判定処理を行うように設定されている。
【０１３５】
ここで、図１５は、ＣＰＵ２４が行う異常判定処理の流れを示すフローチャートである。尚、本処理は、一定周期毎に繰り返し実行される。
図１５に示すように、本処理では、まず、上位カウンタ２１ａのカウント値ＭＣｎｔＨを取得し、カウント値ＣｎｔＭ１としてＲＡＭ２６に設定する（Ｓ５００）。続いて、裏カウンタ２２のカウント値ＳＣｎｔを取得し、カウント値ＣｎｔＳとしてＲＡＭ２６に設定する（Ｓ５０５）。そして、再度、上位カウンタ２１ａのカウント値ＭＣｎｔＨを取得し、カウント値ＣｎｔＭ１とは別のカウント値ＣｎｔＭ２としてＲＡＭ２６に設定したのち（Ｓ５１０）、ＣｎｔＭ１とＣｎｔＭ２とが一致しているか否かを確認する（Ｓ５１５）。
【０１３６】
ここで、ＣｎｔＭ１とＣｎｔＭ２とが不一致な場合には（Ｎｏ：Ｓ５１５）、これらが一致するまでＳ５００〜Ｓ５１５の処理を繰り返す一方、ＣｎｔＭ１とＣｎｔＭ２とが一致している場合には（Ｙｅｓ：Ｓ５１５）、ＣｎｔＭ１とＣｎｔＳとが整合しているか否かを判定する（Ｓ５２０）。尚、ここでは、ＣｎｔＭ１とＣｎｔＳとが一致しているか、もしくはこれらの差の絶対値が３６である場合に、整合していると判定し、これら以外の場合には、不整合であると判定する。
【０１３７】
そして、ＣｎｔＭ１とＣｎｔＳとが整合していると判定した場合には（Ｙｅｓ：Ｓ５２０）、本処理を直ちに終了する一方、不整合であると判定した場合には（Ｎｏ：Ｓ５２０）、不整合が発生した旨をエラー履歴としてＥＥＰＲＯＭ２７に設定する（Ｓ５２５）。
【０１３８】
続いて、ＣｎｔＳが０であるか否か（つまり、クランク処理部２０が欠歯を検出したか否か）を確認し（Ｓ５３０）、０でない場合には（Ｎｏ：Ｓ５３０）、本処理を直ちに終了する。
【０１３９】
一方、ＣｎｔＳが０である場合には（Ｙｅｓ：Ｓ５３０）、第２実施形態のクランク処理部２０と同様の補正を行う補正処理を実行したのち（Ｓ５３５）、本処理を終了する。
ここで、図１６は、上述の補正処理（Ｓ５３５）の流れを示すフローチャートである。
【０１４０】
図１６に示すように、本処理では、まず、ＣｎｔＭ１が３３もしくは３７であるか否かを確認し（Ｓ６００）、ＣｎｔＭ１が３３もしくは３７である場合には（Ｙｅｓ：Ｓ６００）、後述のＳ６３５に直ちに移行する一方、３３でも３７でもない場合には（Ｎｏ：Ｓ６００）、ＣｎｔＭ１が６９もしくは１であるか否かを確認する（Ｓ６０５）。
【０１４１】
そして、ＣｎｔＭ１が６９もしくは１である場合には（Ｙｅｓ：Ｓ６０５）、後述のＳ６４０に直ちに移行する一方、６９でも１でもない場合には（Ｎｏ：Ｓ６０５）、ＲＡＭ２６にてエラーフラグＦｅがＯＮに設定されているか否かを確認する（Ｓ６１０）。
【０１４２】
ここで、エラーフラグＦｅがＯＦＦに設定されている場合には（Ｎｏ：Ｓ６１０）、エラーフラグＦｅをＯＮに設定したのち（Ｓ６１５）、ＣｎｔＭ１をＣｎｔＥ（第２実施形態におけるＭＣｎｔＥに相当）としてＲＡＭ２６に設定し（Ｓ６２０）、本処理を終了する。
【０１４３】
一方、エラーフラグＦｅがＯＮに設定されている場合には（Ｙｅｓ：Ｓ６１０）、ＣｎｔＭ１とＣｎｔＥとの差の絶対値を算出し、この算出結果が３６であるか否かを判定する（Ｓ６２５）。
【０１４４】
ここで、差が３６以外である場合には（Ｎｏ：Ｓ６２５）、上述のＳ６２０に移行する一方、差が３６である場合には（Ｙｅｓ：Ｓ６２５）、ＣｎｔＭ１が１７以上５３未満であるか否かを判定する（Ｓ６３０）。
【０１４５】
そして、ＣｎｔＭ１が１７以上５３未満である場合には（Ｙｅｓ：Ｓ６３０）、欠歯の検出タイミングがＭＣｎｔＨ＝３６に相当するものとして、ＭＣｎｔＨに３６を設定して（Ｓ６３５）、後述のＳ６４５に移行する。
【０１４６】
一方、ＣｎｔＭ１が１７未満もしくは５３以上である場合には（Ｎｏ：Ｓ６３０）、欠歯の検出タイミングがＭＣｎｔＨ＝０に相当するものとして、ＭＣｎｔＨを０にリセットしたのち（Ｓ６４０）、エラーフラグＦｅをＯＦＦに設定して（Ｓ６４５）、本処理を終了する。尚、Ｓ６３５，６４０において、ＣＰＵ２４が、上位カウンタ２１ａのカウント値ＭＣｎｔＨのみを補正して、下位カウンタ２１ｂのカウント値ＭＣｎｔＬの補正を行わないのは、クランク処理部２０がＮＥ１０信号の有効エッジにてＭＣｎｔＬを０にリセットするため、ＣＰＵ２４がわざわざこれを行う必要がないためである。
【０１４７】
以上のように構成された本実施形態のエンジンＥＣＵ１では、上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとが不整合な場合にのみ、ＣＰＵ２４が補正処理を行うため、欠歯の誤検出が生じた場合でも、上位カウンタ２１ａのカウント値ＭＣｎｔＨを間違った値に補正してしまうことを防止できる。
【０１４８】
又、本実施形態のエンジンＥＣＵ１では、第２実施形態のクランク処理部２０が行う処理の一部をＣＰＵ２４のソフトウェア処理で行っているため、クランク処理部２０の構成をその分簡素にすることができ、ひいては、エンジンＥＣＵ１自体の構成も簡素にできる。
【０１４９】
又、本実施形態のエンジンＥＣＵ１では、ＣＰＵ２４が上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとを同時ではなく、順番に取得するため、取得タイミングにズレが生じる。
【０１５０】
しかしながら、図１７（ａ），（ｂ）、図１８（ａ），（ｂ）における黒点に示すように、ＣＰＵ２４は、ＭＣｎｔＨとＳＣｎｔとを交互に取得し、２回取得したＭＣｎｔＨ同士が一致している場合にのみ、ＭＣｎｔＨとＳＣｎｔとが整合しているか否かを判定するため、実際には整合しているにも関わらず不整合であると判定したり、不整合であるにも関わらず整合していると判定してしまうことを防止できる。尚、図１７は、上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとが整合している場合における取得タイミングの一例を示す説明図である。又、図１８は、上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとが不整合な場合における取得タイミングの一例を示す説明図である。
【０１５１】
又、本実施形態のエンジンＥＣＵ１では、図１７（ｃ），（ｄ）、図１８（ｃ），（ｄ）における黒点に示すように、ＣＰＵ２４は、ＭＣｎｔＨを２つ取得する間にてＮＥ１０信号の有効エッジが発生して、取得したＭＣｎｔＨ同士が不一致であれば、ＭＣｎｔＨ同士が一致するまでＭＣｎｔＨ及びＳＣｎｔの取得を繰り返すため、ＭＣｎｔＨとＳＣｎｔとが整合しているか否かを確実に判定できる。
【０１５２】
尚、本実施形態では、補正処理のＳ６３５，６４０が本発明における補正手段に相当し、Ｓ６００，６０５，６１０，６２５が本発明における補正作動手段に相当する。
又、本実施形態では、補正処理のＳ６３０，６３５，６４０が本発明における第２の設定手段に相当し、異常判定処理のＳ５００，５０５，５１０が本発明におけるカウント値取得手段に相当する。
【０１５３】
又、本実施形態では、異常判定処理のＳ５１５，５２０が本発明における補正許可手段に相当し、Ｓ５１５が本発明における再作動手段に相当する。
ところで、本実施形態では、裏カウンタ２２のカウント値ＳＣｎｔが０である場合（つまり、欠歯の検出タイミング）に、補正処理を行うようにＣＰＵ２４が設定されていたが、０以外の指定値に達している場合に、補正処理を行うように設定されていても良い。
【０１５４】
つまり、裏カウンタ２２のカウント値ＳＣｎｔは、欠歯の誤検出時にも０にリセットされるため、指定カウント値を適切に設定すれば、欠歯の誤検出から本来の欠歯の検出に達するまでに裏カウンタ２２のカウント値ＳＣｎｔが指定カウント値に達することがなく、本来の欠歯の検出に起因するタイミングでのみ、上位カウンタ２１ａのカウント値ＭＣｎｔＨを本来の欠歯の検出タイミングにて取るべき本来値へと補正できる。これにより、ＣＰＵ２４の処理の負荷を軽減することができる。
【０１５５】
又、本実施形態では、ＣＰＵ２４は、補正処理のＳ５００〜Ｓ５１５にて、上位カウンタ２１ａのカウント値ＭＣｎｔＨを２回読み込み、これらが互いに一致しているか否かを判定していたが、これに代えて、裏カウンタ２２のカウント値ＳＣｎｔを２回読み込み、これらが互いに一致しているか否かを判定するように設定されていても良い。
【０１５６】
又、本実施形態では、Ｓ５２５にてエラー履歴を行ったが、これに代えて、車両を安全に走行させるためのフェイルセーフ処理を実行するように設定されていても良い。
又、本実施形態では、上位カウンタ２１ａのカウント値ＭＣｎｔＨを補正したのち、再度、ＭＣｎｔＨとＳＣｎｔとが整合しているか否かを判定し、正しく補正されていることを確認するようにＣＰＵ２４が設定されていても良い。
【０１５７】
又、本実施形態では、上位カウンタ２１ａのカウント値ＭＣｎｔＨが変わるタイミングにて、クランク処理部２０が補正を行うようにＣＰＵ２４が設定されていても良い。
以上、本発明の実施の形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
【０１５８】
例えば、上記いずれの実施形態でも、ＮＥ１０信号の立ち上がりエッジを有効エッジとしていたが、立ち下がりエッジを有効エッジとしても良いし、立ち上がりエッジ及び立ち下がりエッジの両方を有効エッジとしても良い。尚、両方を有効エッジとした場合には、クランク軸９の回転角度をより細かく計測できる（つまり、計測分解能を向上できる。）。
【０１５９】
又、上記いずれの実施形態でも、欠歯の検出タイミングで上位カウンタ２１ａのカウント値ＭＣｎｔＨを０や３６に設定しているが、０や３６以外の値（例えば、１５や５１）を設定しても良い。尚、この場合、ＭＣｎｔＨに１加算する処理にて、ガード値を設定する処理（ＭＣｎｔＨ＝７２→０）を追加すれば良い。
【０１６０】
又、上記いずれの実施形態でも、本発明を４サイクルの直列４気筒エンジンを制御するエンジンＥＣＵに適用したが、これとは異なる他の形態のエンジンを制御するエンジンＥＣＵに適用しても勿論良い。
【０１６１】
又、上記いずれの実施形態でも、ロータ１０は、欠歯部１０２が１つだけ設けられていたが、複数設けられていても勿論良い。尚、複数の場合には、欠歯１０２は、連続して設けられていても良い。
【０１６２】
又、上記いずれの実施形態でも、ロータ１０の歯１０１は、１０°ＣＡ毎の間隔で形成されていたが、他の回転角度（例えば、６°ＣＡ）毎の間隔で形成されていても勿論良い。
【図面の簡単な説明】
【０１６３】
【図１】第１実施形態におけるエンジンＥＣＵ１の構成を示す構成ブロック図である。
【図２】第１実施形態におけるクランク処理部２０が行う回転角度計測処理の流れを示すフローチャートである。
【図３】第１実施形態におけるクランク処理部２０が行う下位カウンタ処理の流れを示すフローチャートである。
【図４】エンジン始動時における、第１実施形態のエンジンＥＣＵ１の処理のタイミングを示すフローチャートである。
【図５】第１実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図６】第１実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図７】第１実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図８】第１実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図９】第１実施形態のエンジンＥＣＵ１において、２つのノイズやパルスの欠落を前提とした場合における問題の一例を示すタイミングチャートである。
【図１０】第２実施形態におけるクランク処理部２０が行う回転角度計測処理の流れを示すフローチャートである。
【図１１】第２実施形態におけるクランク処理部２０が行う追加処理の流れを示すフローチャートである。
【図１２】第２実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである
【図１３】第２実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図１４】第２実施形態におけるクランク処理部２０の動作の一例を示すタイミングチャートである。
【図１５】第３実施形態におけるＣＰＵ２４が行う異常判定処理の流れを示すフローチャートである。
【図１６】第３実施形態におけるＣＰＵ２４が行う補正処理の流れを示すフローチャートである。
【図１７】上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとが整合している場合における取得タイミングの一例を示す説明図である。
【図１８】上位カウンタ２１ａのカウント値ＭＣｎｔＨと裏カウンタ２２のカウント値ＳＣｎｔとが不整合な場合における取得タイミングの一例を示す説明図である。
【図１９】取得タイミングのズレの一例を示す説明図である。
【図２０】欠歯判定条件が成立するようなタイミングでクランク軸信号にノイズが重畳した場合の一例を示すタイミングチャートである。
【図２１】欠歯判定条件が成立するようなクランク軸回転信号の出力低下が生じた場合の一例を示すタイミングチャートである。
【符号の説明】
【０１６４】
１…エンジンＥＣＵ、２…マイコン、３，４，５，６…入力回路、７…出力回路、８…クランク軸センサ、９…クランク軸、１０，１３…ロータ、１１…カム軸センサ、１２…カム軸、１４…スタータスイッチ、１５…アイドルスイッチ、１６…エアフローメータ、１７…スロットルセンサ、１８…水温センサ、１９…イグナイタ、２０…クランク処理部、２１…表カウンタ、２１ａ…上位カウンタ、２１ｂ…下位カウンタ、２２…裏カウンタ、２３…逓倍回路、２４…ＣＰＵ、２５…ＲＯＭ、２６…ＲＡＭ、２７…ＥＥＰＲＯＭ、２８…比較器、２９…フリーランタイマ、３０…Ａ／Ｄ変換器、３１…Ｉ／Ｏポート、４１，４２，４３，４４…点火コイル、５１，５２，５３，５４…燃料噴射弁、１０１…歯、１０２…欠歯部。
【図１】
2006125240.tif 000003
【図２】
2006125240.tif 000004
【図３】
2006125240.tif 000005
【図４】
2006125240.tif 000006
【図５】
2006125240.tif 000007
【図６】
2006125240.tif 000008
【図７】
2006125240.tif 000009
【図８】
2006125240.tif 000010
【図９】
2006125240.tif 000011
【図１０】
2006125240.tif 000012
【図１１】
2006125240.tif 000013
【図１２】
2006125240.tif 000014
【図１３】
2006125240.tif 000015
【図１４】
2006125240.tif 000016
【図１５】
2006125240.tif 000017
【図１６】
2006125240.tif 000018
【図１７】
2006125240.tif 000019
【図１８】
2006125240.tif 000020
【図１９】
2006125240.tif 000021
【図２０】
2006125240.tif 000022
【図２１】
2006125240.tif 000023