(57)【要約】【課題】エンジン制御装置において、従来よりも高精度のアングルクロックを生成すること。【解決手段】クランク信号において不規則領域の開始時に発生すべき信号レベルの変化が発生した以降、逓倍クロックを生成する基となる逓倍クロック基準時間が、その発生時において計測された信号レベルが変化する間隔に固定され（基準時間選択→固定時間）、この値に基づいてアングルクロックが生成される。その後、不規則領域の終了時に発生すべき信号レベルの変化が発生することにより、逓倍クロックを生成する基となる逓倍クロック基準時間が、クランク信号において信号レベルが変化する間隔を計測したエッジ間時間（エッジ間時間）に戻り（基準時間選択→エッジ間時間）、このエッジ間時間に基づいてアングルクロックが生成されるようになる。【選択図】図９
2008190344.tif 000002
【特許請求の範囲】
【請求項１】
エンジンの動作に伴って信号レベルが変化する信号であって、エンジンの動作する１サイクル中における所定の規則動作量毎に信号レベルが所定方向へと変化する規則領域，および，エンジンが前記規則動作量とは異なる不規則動作量だけ動作した際に信号レベルが所定方向へと変化する不規則領域，が繰り返されてなる動作信号に基づき、該動作信号の信号レベルが特定方向に変化してから次に信号レベルが特定方向に変化するまでの間隔を随時計測する間隔計測手段と、
該間隔計測手段により計測された計測値を基準間隔とし、該基準間隔を所定の逓倍数で割ってなる値を１周期とする逓倍クロックを生成する逓倍クロック生成手段と、
該逓倍クロック生成手段により生成された逓倍クロックをカウントするカウンタとして機能し、前記規則動作量を前記所定の逓倍数で割ってなる分解能で、エンジンが動作する１サイクル中の動作状態を示した場合における各動作状態に、そのカウント値それぞれが対応づけられた動作カウント手段と、
前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域の開始時に発生する変化であることを検出する不規則開始検出手段と、
前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域の終了時に発生する変化であることを検出する不規則終了検出手段と、
前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、所定の値に固定する基準固定手段と、
前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出された際に、前記基準固定手段により所定の値に固定された基準間隔を、前記間隔計測手段により随時計測された計測値に戻す基準復帰手段と、を備えており、
前記動作カウント手段におけるカウント値で特定されるエンジンの動作状態に基づいて、該エンジンの動作を制御するように構成されている
ことを特徴とするエンジン制御装置。
【請求項２】
前記基準固定手段は、前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、その検出時点において前記間隔計測手段により計測された計測値に固定する
ことを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、その検出時点において前記間隔計測手段により計測された計測値を、所定の補正規則に基づいて補正する基準補正手段を備えており、
前記基準固定手段は、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、その時点において前記基準補正手段により補正された基準間隔に固定する
ことを特徴とする請求項２に記載のエンジン制御装置。
【請求項４】
前記基準補正手段は、前記不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、該計測値と所定の係数との積算値が加算された値に修正する
ことを特徴とする請求項３に記載のエンジン制御装置。
【請求項５】
前記基準補正手段は、前記不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、その検出前に前記間隔計測手段により計測された計測値に基づいて補正する
ことを特徴とする請求項３または請求項４のいずれかに記載のエンジン制御装置。
【請求項６】
エンジンのクランク軸が所定の規則角度だけ回転する際におけるエンジンの動作量を前記規則動作量とし、前記クランク軸が前記規則角度とは異なる不規則角度だけ回転する際におけるエンジンの動作量を前記不規則動作量とした場合において、
前記クランク軸が前記規則角度だけ回転する毎に信号レベルが所定方向へと変化する規則領域，および，前記クランク軸が前記不規則角度だけ回転した際に信号レベルが所定方向へと変化する不規則領域，からなるクランク信号を、前記動作信号として前記間隔計測手段に供給する信号供給手段を備えており、
前記逓倍クロック生成手段は、前記基準間隔を所定の第１逓倍数で割ってなる値を１周期とする逓倍クロックを生成して、
前記動作カウント手段は、前記規則動作量を前記第１逓倍数で割ってなる分解能で、エンジンが動作する１サイクル中の動作状態を示した場合におけるクランク軸の回転位置それぞれに、そのカウント値それぞれが対応づけられており、
前記動作カウント手段におけるカウント値で特定されるクランク軸の回転位置に基づいて、該エンジンの動作を制御するように構成されている
ことを特徴とする請求項１から５のいずれかに記載のエンジン制御装置。
【請求項７】
前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出されたことに伴って前記基準復帰手段が前記基準間隔を計測値に戻した際に、その検出時点において前記間隔計測手段により計測された計測値を、前記不規則領域の期間に基づいて修正する第１計測値修正手段を備えており、
前記逓倍クロック生成手段は、前記不規則終了検出手段により前記不規則領域の終了時に発生する変化であることが検出された場合、その時点において前記第１計測値修正手段により修正された計測値を前記第１逓倍数で割ってなる値が１周期となる逓倍クロックを生成する
ことを特徴とする請求項６に記載のエンジン制御装置。
【請求項８】
前記信号供給手段により前記間隔計測手段により供給されるクランク信号に基づいて、該クランク信号が異常であるか否かを判定する異常判定手段を備えており、
前記信号供給手段は、エンジンのカム軸が所定の規則角度だけ回転する際におけるエンジンの動作量を前記規則動作量とし、前記カム軸が前記規則角度とは異なる不規則角度だけ回転する際におけるエンジンの動作量を前記不規則動作量とした場合に、前記カム軸が前記規則角度だけ回転する毎に信号レベルが所定方向へと変化する規則領域，および，前記カム軸が前記不規則角度だけ回転した際に信号レベルが所定方向へと変化する不規則領域，からなるカム信号を、前記異常判定手段によりクランク信号が異常であると判定されている間、前記動作信号として前記間隔計測手段に供給して、
前記逓倍クロック生成手段は、前記基準間隔を、式「（前記カム軸における前記規則角度×前記第１逓倍数）／前記クランク軸における前記規則角度」により求められる第２逓倍数で割ってなる値を１周期とする逓倍クロックを生成する
ことを特徴とする請求項６または請求項７に記載のエンジン制御装置。
【請求項９】
前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域中に発生する変化であることを検出する不規則中検出手段を備えており、
前記基準固定手段は、前記不規則中検出手段により不規則領域中に発生する変化であることが検出された際に、その不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、その不規則領域中に発生する変化の該不規則領域全体における発生時期に応じた値で割ってなる値に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を固定する
ことを特徴とする請求項８に記載のエンジン制御装置。
【請求項１０】
前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出されたことに伴って前記基準復帰手段が前記基準間隔を計測値に戻した際に、その検出時点において前記間隔計測手段により計測された計測値を、その不規則領域中に発生する変化であることが検出されてから該不規則領域の終了時に発生する変化であることが検出されるまでの期間に基づいて修正する第２計測値修正手段を備えており、
前記逓倍クロック生成手段は、前記不規則終了検出手段により前記不規則領域の終了時に発生する変化であることが検出された場合、その時点において前記第２計測値修正手段により修正された計測値を前記第２逓倍数で割ってなる値が１周期となる逓倍クロックを生成する
ことを特徴とする請求項８または請求項９に記載のエンジン制御装置。
【請求項１１】
請求項１から１０のいずれかに記載の全ての手段として機能させるための各種処理手順をコンピュータシステムに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンを制御するエンジン制御装置に関する。
【背景技術】
【０００２】
従来から、車両などのエンジンを制御するエンジン制御装置においては、クランク軸の回転に応じて所定角度毎に信号レベルが特定方向に変化するクランク信号をクランク軸センサから入力し、このクランク信号に基づいて特定されるクランク軸の回転位置（クランク位置）を、その変化の間隔よりも高い分解能で特定するようにしている。
【０００３】
具体的には、クランク信号の信号レベルが特定方向に変化してから次に信号レベルが特定方向に変化するまでの間隔を計測し、その計測値を所定の逓倍数で割ってなる値を１周期とするアングルクロックを生成する。このアングルクロックは、クランク信号の信号レベルが変化する間隔を上記逓倍数で割った値が１周期となっているため、その周期毎に、クランク信号の信号レベルが変化する間隔を逓倍数で割った分解能にて示される角度だけクランク位置が変位することになる。
【０００４】
そして、このアングルクロック（の立ち上がりエッジ）を、エンジンが１サイクル動作するまでのカウント値を上限として繰り返しカウントすることにより、そのカウント値それぞれに対応するクランク位置を高い分解能で特定することができる。
【０００５】
ただ、上述したクランク信号は、クランク軸が所定角度だけ回転する毎に信号レベルが特定方向へと変化する規則的な領域だけでなく、その角度より大きな角度だけ回転しなければ信号レベルが特定方向へと変化しない不規則な領域（いわゆる欠け歯）が存在する。
【０００６】
そのため、このような不規則な領域に対して、そのまま上記計測値を逓倍数で割った値を１周期とするアングルクロックを生成してしまうと、規則的な領域と同様にクランク位置が変位していたとしても、その計測値が規則的な領域に比べて大きくなるために、アングルクロックとしての周期が長くなってしまう。
【０００７】
そうすると、このような不規則な領域では、エンジンの動作に伴って規則的な領域と同様にクランク位置が変位しているにも拘らず、規則的な領域に比べてアングルクロックのカウントが遅れてしまう結果、そのカウント値に対応するクランク位置と、実際のクランク位置とがズレたものとなってしまう。
【０００８】
このような事態は、燃料噴射や点火などのイベントを異常なタイミングで発生させて、エンジンの制御が正常に行えなくなる要因となるため、望ましいことではない。
このような事態に対応するためには、上述した不規則な領域につき、クランク信号において信号レベルが変化する間隔の計測値を、不規則な領域に対する規則的な領域の比（不規則な領域の期間/規則的な領域の期間）で割り、こうして修正した値に基づいて、アングルクロックを生成する，という技術が提案されている（例えば、特許文献１参照）。
【０００９】
この場合、アングルクロックは、上記計測値をそのまま用いるのではなく、これを不規則な領域の期間に応じて修正してから逓倍数で割り、こうして得られた値が１周期となる。そのため、このアングルクロックをカウントすれば、そのカウントが規則的な領域に比べて遅れてしまうことがなくなり、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【特許文献１】特開２００１−２００７４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した技術では、クランク信号において信号レベルが変化する間隔の計測値をその都度修正したうえで、その計測値に基づいてアングルクロックを生成しているが、装置構成上、クランク信号において信号レベルが変化する間隔が計測されると、その修正がなされる前であっても、その時点における計測値に基づいてアングルクロックが生成される。
【００１１】
そのため、その計測値が修正されるまでの短期間とはいえ、その修正前の大きな計測値に基づいてアングルクロックが生成されてしまう時間帯が生じ、これがアングルクロックの精度を低下させ、エンジンの制御についての精度を低下させてしまう恐れがあった。
【００１２】
本発明は、このような課題を解決するためになされたものであり、その目的は、従来よりも高精度のアングルクロックを生成するための技術を提供することである。
【課題を解決するための手段】
【００１３】
上記課題を解決するため請求項１に記載のエンジン制御装置は、間隔計測手段と、逓倍クロック生成手段と、動作カウント手段と、不規則開始検出手段と、不規則終了検出手段と、基準固定手段と、基準復帰手段と、を備えており、前記動作カウント手段におけるカウント値で特定されるエンジンの動作状態に基づいて、該エンジンの動作を制御するように構成されている。
【００１４】
まず、間隔計測手段は、エンジンの動作に伴って信号レベルが変化する信号であって、エンジンの動作する１サイクル中における所定の規則動作量毎に信号レベルが所定方向へと変化する規則領域，および，エンジンが前記規則動作量とは異なる不規則動作量だけ動作した際に信号レベルが所定方向へと変化する不規則領域，が繰り返されてなる動作信号に基づき、該動作信号の信号レベルが特定方向に変化してから次に信号レベルが特定方向に変化するまでの間隔を随時計測する。
【００１５】
また、逓倍クロック生成手段は、間隔計測手段により計測された計測値を基準間隔とし、該基準間隔を所定の逓倍数で割ってなる値を１周期とする逓倍クロックを生成する。
また、動作カウント手段は、逓倍クロック生成手段により生成された逓倍クロックをカウントするカウンタとして機能し、前記規則動作量を前記所定の逓倍数で割ってなる分解能で、エンジンが動作する１サイクル中の動作状態を示した場合における各動作状態に、そのカウント値それぞれが対応づけられている。
【００１６】
また、不規則開始検出手段は、前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域の開始時に発生する変化であることを検出し、また、不規則終了検出手段は、前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域の終了時に発生する変化であることを検出する。
【００１７】
また、基準固定手段は、前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、所定の値に固定する。
【００１８】
そして、基準復帰手段は、前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出された際に、前記基準固定手段により所定の値に固定された基準間隔を、前記間隔計測手段により計測される計測値に戻す。
【００１９】
このように構成されたエンジン制御装置によれば、動作信号において不規則領域の開始時に発生すべき信号レベルの変化が発生した以降、逓倍クロックを生成する基となる基準間隔が所定の値に固定され、この所定の値に基づいてアングルクロックが生成される。
【００２０】
その後、動作信号において不規則領域の終了時に発生すべき信号レベルの変化が発生することにより、逓倍クロックを生成する基となる基準間隔が、動作信号において信号レベルが変化する間隔を計測した計測値に戻り、この計測値に基づいてアングルクロックが生成される。
【００２１】
このように、動作信号において不規則領域が開始された以降、この領域が終了して逓倍クロックを生成する基となる基準間隔が戻されるまでの間には、「所定の値」に基づいてアングルクロックが生成されることとなる。つまり、動作信号において不規則領域が終了して基準間隔が戻されるまでは、その時点における計測値が規則領域における計測値に比べて相違していたとしても、そのような相違する計測値に基づくアングルクロックが生成されることはない。
【００２２】
そのため、この「所定の値」を、不規則領域の終了時において想定される適切な値に設定しておくことにより、不規則領域が終了して基準間隔が戻されるまでの期間においても、所定の値に基づいて適切なアングルクロックを生成できるようになる。
【００２３】
このようなアングルクロックであれば、規則領域における正規の計測値に基づいて生成したアングルクロックをカウントする場合に比べてそのカウントが遅れてしまうこともないため、そのカウント値に基づいてエンジンの動作状態を適切に特定できる結果、エンジンの制御を精度よく実施できるようになる。
【００２４】
なお、この構成において基準固定手段が基準間隔として固定する「所定の値」は、不規則領域の終了時において想定される適切な値であればよく、あらかじめ実験的または論理的に求めた値としたり、随時不規則領域におけるパラメータに基づいて求めた値とすればよい。
【００２５】
このように、不規則領域におけるパラメータに基づいて求める「所定の値」としては、例えば、不規則領域の開始時において間隔計測手段により計測された計測値を採用することが望ましい。それは、不規則領域の開始時において間隔計測手段により計測された計測値が、その領域直前の規則領域における計測値であって、それ以前に間隔計測手段により計測された計測値の中で最も不規則領域に近く、その不規則領域における信号レベルの変化を反映したものといえるからである。
【００２６】
このような「所定の値」を基準間隔として固定するためには、上述した構成を、請求項２に記載のエンジン制御装置のように構成するとよい。このエンジン制御装置において、前記基準固定手段は、前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、その検出時点において前記間隔計測手段により計測された計測値に固定する、ように構成されている。
【００２７】
このように構成すれば、不規則領域の開始時における計測値を基準間隔として固定することができる。
上述したように、不規則領域の開始時における計測値は、その不規則領域における信号レベルの変化が反映されたものといえる。そのため、上述のように、不規則領域の開始時における計測値を基準間隔として固定することにより、不規則領域の終了時には、この不規則領域における信号レベルの変化が反映されたアングルクロックを生成できる。
【００２８】
ただ、このように基準間隔を不規則領域の開始時における計測値に固定する場合であっても、エンジンの動作状態が急激に変位していく過程においては、不規則領域の開始前後でも信号レベルの変化状況が大きく異なり、その開始時または終了時における計測値が、その不規則領域における信号レベルの変化を充分に反映しているとはいえなくなることも考えられる。このようなことを考慮すると、単に、基準間隔を不規則領域の開始時における計測値に固定するのではなく、この計測値をあらかじめ修正したものに固定することとしてもよい。
【００２９】
このためには、上記構成を、請求項２に記載の構成を請求項３に記載のエンジン制御装置のように構成することが考えられる。このエンジン制御装置は、前記不規則開始検出手段により不規則領域の開始時に発生する変化であることが検出された際に、その検出時点において前記間隔計測手段により計測された計測値を、所定の補正規則に基づいて補正する基準補正手段を備えている。そして、前記基準固定手段は、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を、その時点において前記基準補正手段により補正された基準間隔に固定する、ように構成されている。
【００３０】
このように構成すれば、不規則領域の開始時における計測値を所定の補正規則に基づいて修正し、この値に、逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を固定することができる。
【００３１】
また、この構成における「補正規則」については、不規則領域の開始時における計測値を適切なものに補正できるのであれば、どのような規則であってもよい。
例えば、請求項４に記載のように、前記不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、該計測値と所定の係数との積算値が加算された値に修正する、ことが考えられる。
【００３２】
このように構成すれば、不規則領域の開始時における計測値を、この計測値と所定の係数との積算値が加算された値に修正し、この値に、逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔とすることができる。
【００３３】
なお、この構成において、不規則領域の開始時における計測値に積算する「所定の係数」とは、例えば、実験的または論理的に求めた係数や、不規則領域の開始時におけるパラメータに基づいて求められる係数とすればよい。
【００３４】
また、上述した「補正規則」としては、例えば、不規則領域の開始時よりも前における計測値に基づいて補正することが考えられる。
具体的には、請求項５に記載のように、前記不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、その検出前に前記間隔計測手段により計測された計測値に基づいて補正する、というものである。
【００３５】
このように構成すれば、不規則領域の開始時における計測値をその開始前における計測値に基づいて補正し、この値に、逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔とすることができる。
【００３６】
エンジンの動作状態が急激に変化していく過程においては、動作信号が不規則領域に至る以前の規則領域においても信号レベルの変化が急なものとなっているはずであり、この傾向は、不規則領域の開始前または終了時における計測値にも現れているといえる。
【００３７】
そのため、不規則領域の開始時における計測値を、その前における計測値に基づいて補正すれば、エンジンの動作状態が急激に変化していく過程においても、その影響を考慮した適切なアングルクロックを生成することができるようになる。
【００３８】
なお、この構成において、不規則領域の開始時における計測値をその前における計測値に基づいて補正するに際しては、例えば、その直前における計測値に１未満の係数を積算した値に補正することも考えられる。
【００３９】
また、上述した各構成において、間隔計測手段により間隔が計測される動作信号としては、エンジンの動作に伴って信号レベルが変化する信号であれば、どのような信号を用いてもよい。
【００４０】
例えば、エンジンにおけるクランク軸の回転に伴って信号レベルが変化するクランク信号を、動作信号として用いることが考えられる。このクランク信号とは、クランク軸が規則角度だけ回転する毎に信号レベルが所定方向へと変化する規則領域，および，クランク軸が不規則角度だけ回転した際に信号レベルが所定方向へと変化する不規則領域，からなる信号であって、この場合、クランク軸が所定の規則角度だけ回転する際におけるエンジンの動作量が規則動作量であり、クランク軸が規則角度とは異なる不規則角度だけ回転する際におけるエンジンの動作量が不規則動作量となる。
【００４１】
このように、クランク信号を動作信号として用いるためには、上述した各構成を請求項６に記載のエンジン制御装置のように構成するとよい。このエンジン制御装置においては、前記クランク軸が前記規則角度だけ回転する毎に信号レベルが所定方向へと変化する規則領域，および，前記クランク軸が前記不規則角度だけ回転した際に信号レベルが所定方向へと変化する不規則領域，からなるクランク信号を、前記動作信号として前記間隔計測手段に供給する信号供給手段を備えており、前記動作カウント手段におけるカウント値で特定されるクランク軸の回転位置に基づいて、該エンジンの動作を制御するように構成されている。
【００４２】
そして、前記逓倍クロック生成手段は、前記基準間隔を所定の第１逓倍数で割ってなる値を１周期とする逓倍クロックを生成して、前記動作カウント手段は、前記規則動作量を前記第１逓倍数で割ってなる分解能で、エンジンが動作する１サイクル中の動作状態を示した場合におけるクランク軸の回転位置それぞれに、そのカウント値それぞれが対応づけられている。
【００４３】
このように構成すれば、クランク信号を動作信号としてアングルクロックを生成し、このアングルクロックのカウント値で特定されるクランク軸の回転位置に基づいて、エンジンの動作を制御することができる。
【００４４】
この構成において、不規則領域の終了時に発生すべき信号レベルの変化が発生して基準間隔が戻された直後は、不規則領域における計測値に基づいてアングルクロックが生成されることとなるが、その計測値は、不規則領域において信号レベルが変化する間隔を計測したものであり、規則領域における計測値とは異なるものとなっている恐れがある。
【００４５】
この場合、基準間隔が計測値に戻された直後においては、そのまま上記計測値を第１逓倍数で割った値を１周期とするアングルクロックを生成してしまうと、規則領域における場合と同様にクランク軸が回転していても、その計測値が規則領域におけるものとは異なっているために、アングルクロックとしての周期も異なったものとなってしまう。
【００４６】
この場合、規則領域における場合と同様にクランク軸が回転しているにも拘らず、アングルクロックのカウントが、規則的な領域における場合に比べて遅れてしまう結果、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまう。
【００４７】
このような事態を防止するためには、上記構成を、請求項７に記載のエンジン制御装置のように構成するとよい。このエンジン制御装置は、前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出されたことに伴って前記基準復帰手段が前記基準間隔を計測値に戻した際に、その検出時点において前記間隔計測手段により計測された計測値を、前記不規則領域の期間に基づいて修正する第１計測値修正手段を備えている。そして、前記逓倍クロック生成手段は、前記不規則終了検出手段により前記不規則領域の終了時に発生する変化であることが検出された場合、その時点において前記第１計測値修正手段により修正された計測値を前記第１逓倍数で割ってなる値が１周期となる逓倍クロックを生成する、ように構成されている。
【００４８】
このように構成すれば、不規則領域における計測値をそのまま用いるのではなく、これを不規則領域の期間に応じて修正してから第１逓倍数で割り、こうして得られた値が１周期となるアングルクロックを生成することができる。
【００４９】
この場合、アングルクロックは、不規則領域における計測値をそのまま用いるのではなく、これを不規則領域の期間に応じて修正してから第１逓倍数で割り、こうして得られた値が１周期となる。そのため、このアングルクロックをカウントすれば、そのカウントが規則領域に比べて遅れてしまうことがなくなり、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【００５０】
この構成において、第１計測値修正手段が計測値を修正するための具体的な構成については特に限定されないが、例えば、不規則領域における計測値に、規則領域の期間と不規則領域の期間との比（規則領域の期間／不規則領域の期間）を積算する、といった構成が考えられる。
【００５１】
このように、不規則領域における計測値，および，規則領域の期間と不規則領域の期間との比を積算した値は、「不規則領域における計測値／規則領域における計測値＝不規則領域の期間／規則領域の期間」を満たすような「規則領域における計測値」を求めたものである。これは、不規則領域において規則領域と同じ期間だけ計測を継続した場合における計測値といえるため、このような修正を行うことにより、その計測値を規則領域におけるものと近似させることができる。
【００５２】
なお、間隔計測手段により間隔が計測される動作信号としては、後述するカム信号を用いることも考えられる。
ところで、上述のようにクランク信号に基づいてエンジンの動作を制御するエンジン制御装置においては、例えば、信号線の断線などのトラブルによりクランク信号が正常に入力されなくなると、クランク軸の回転位置が特定できなくなり、適切なエンジンの制御が継続できなくなってしまう。そのため、そのような異常が発生した場合に、他の信号を動作信号として用いてエンジンの制御を継続できるようにしておくことが望ましい。
【００５３】
この場合に用いる動作信号としては、エンジンにおけるカム軸の回転に伴って信号レベルが変化するカム信号を用いることが考えられる。このカム信号とは、カム軸が規則角度だけ回転する毎に信号レベルが所定方向へと変化する規則領域，および，カム軸が不規則角度だけ回転した際に信号レベルが所定方向へと変化する不規則領域，からなる信号であり、この場合、カム軸が所定の規則角度だけ回転する際におけるエンジンの動作量が規則動作量であり、カム軸が規則角度とは異なる不規則角度だけ回転する際におけるエンジンの動作量が不規則動作量となる。
【００５４】
このようにクランク信号の異常時にカム信号に基づいてエンジンの制御を継続できるようにするためには、クランク信号を動作信号として用いる構成を、請求項８に記載のエンジン制御装置のように構成するとよい。
【００５５】
このエンジン制御装置は、前記信号供給手段により前記間隔計測手段により供給されるクランク信号に基づいて、該クランク信号が異常であるか否かを判定する異常判定手段を備えている。
【００５６】
そして、前記信号供給手段は、カム信号を、前記異常判定手段によりクランク信号が異常であると判定されている間、前記動作信号として前記間隔計測手段に供給して、前記逓倍クロック生成手段は、前記基準間隔を、式「（前記カム軸における前記規則角度×前記第１逓倍数）／前記クランク軸における前記規則角度」により求められる第２逓倍数で割ってなる値を１周期とする逓倍クロックを生成する、ように構成されている。
【００５７】
この構成では、クランク信号が異常になると、動作信号として間隔計測手段に供給される動作信号がクランク信号からカム信号に切り替えられると共に、逓倍クロックを生成するために用いられる逓倍数が第１逓倍数から第２逓倍数に変更される。
【００５８】
これにより、間隔計測手段に計測される計測値は、クランク信号において信号レベルが特定方向に変化するまでに要するクランク軸の回転角度（規則角度）に応じた値から、カム信号において信号レベルが特定方向に変化するまでに要するカム軸の回転角度（規則角度）に応じた値に変更される。そして、逓倍クロック生成手段により生成される逓倍クロックの周期についても、計測値を第１逓倍数で割った値から、第２逓倍数で割った値に変更される。
【００５９】
ここで、「第２逓倍数」は、式「（カム軸における規則角度×第１逓倍数）／クランク軸における規則角度」から求められた値である。この式は、「カム軸における規則角度／第２逓倍数＝クランク軸における規則角度／第１逓倍数」が成立するような第２逓倍数を求める式といえ、このことは、間隔計測手段に供給される信号および逓倍数の変化前後で、規則角度と逓倍数との比が変化しないことを意味する。
【００６０】
つまり、逓倍クロック生成手段により生成される逓倍クロックの周期を、カム軸における規則角度に応じた計測値を第２逓倍数で割った値に変更しても、角度と逓倍数との比が変わらないため、実際の周期もその変更前後で変化しないことになる。逆にいえば、逓倍数を第２逓倍数に変更しても、逓倍クロック生成手段により生成される逓倍クロックの周期が変わらないようにしているということができる。
【００６１】
このように、アングルカウンタを動作させるための逓倍クロックの周期が、動作信号および逓倍数の変更前後で変化しないため、その変更前後において処理手順に大幅な変更を加えることなく、カム信号に基づいてエンジンの制御を継続することができる。
【００６２】
なお、この構成において用いられるカム信号は、不規則領域中においても、特定方向への信号レベルの変化が発生することが一般的である。そのため、不規則領域の開始および終了だけでなく、その不規則領域中における計測値であることを考慮したアングルクロックを生成できるように構成することが望ましい。
【００６３】
それは、カム信号においては、不規則領域中に信号レベルの変化が発生した時点における上記計測値が、規則領域における計測値と近似した値になるとは限らず、この場合、上述したのと同様に、アングルクロックのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまう恐れがあるからである。
【００６４】
このように、不規則領域中における計測値であることを考慮したアングルクロックを生成するためには、上記構成を請求項９に記載のエンジン制御装置のように構成することが考えられる。このエンジン制御装置は、前記動作信号に基づいて、該動作信号における特定方向への信号レベルの変化が、前記不規則領域中に発生する変化であることを検出する不規則中検出手段を備えている。そして、前記基準固定手段は、前記不規則中検出手段により不規則領域中に発生する変化であることが検出された際に、その不規則領域の開始時に発生する変化であることが検出された時点において前記間隔計測手段により計測された計測値を、その不規則領域中に発生する変化の該不規則領域全体における発生時期に応じた値で割ってなる値に、前記逓倍クロック生成手段が逓倍クロックを生成する際に参照する基準間隔を固定する、ように構成されている。
【００６５】
このように構成すれば、不規則領域中において特定方向への信号レベルの変化が発生した場合、逓倍クロックを生成する際に参照される基準間隔が、その時点において間隔計測手段により計測された計測値を、その不規則領域中に発生する変化の該不規則領域全体における発生時期に応じた値で割ってなる値に固定される。
【００６６】
ここで、不規則領域中で信号レベルが変化する時期は、カム信号の構成により一意に決まるため、「発生時期に応じた値」として、不規則領域における計測値が規則領域における計測値に近似した値となるような値を設定すれば、この不規則領域中におけるアングルクロックの周期を規則領域における周期と近似させることができる。これにより、不規則領域中においてアングルクロックのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【００６７】
この構成において、不規則領域の終了時に発生すべき信号レベルの変化が発生して基準間隔が戻された直後は、その時点における計測値に基づいてアングルクロックが生成されることとなるが、その計測値は、不規則領域中に信号レベルの変化が発生してから不規則領域が終了するまでの計測値であり、規則領域における計測値とは異なるものとなっている恐れがある。
【００６８】
この場合、基準間隔が計測値に戻された直後においては、そのまま上記計測値を第２逓倍数で割った値を１周期とするアングルクロックを生成してしまうと、上述したのと同様に、アングルクロックのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまう。
【００６９】
このような事態を防止するためには、上記構成を、請求項１０に記載のエンジン制御装置のように構成するとよい。このエンジン制御装置は、前記不規則終了検出手段により不規則領域の終了時に発生する変化であることが検出されたことに伴って前記基準復帰手段が前記基準間隔を計測値に戻した際に、その検出時点において前記間隔計測手段により計測された計測値を、その不規則領域中に発生する変化であることが検出されてから該不規則領域の終了時に発生する変化であることが検出されるまでの期間に基づいて修正する第２計測値修正手段を備えている。そして、前記逓倍クロック生成手段は、前記不規則終了検出手段により前記不規則領域の終了時に発生する変化であることが検出された場合、その時点において前記第２計測値修正手段により修正された計測値を前記第２逓倍数で割ってなる値が１周期となる逓倍クロックを生成する、ように構成されている。
【００７０】
このように構成すれば、不規則領域の終了時における計測値をそのまま用いるのではなく、これを、不規則領域中に発生する変化であることが検出されてからその領域の終了時に発生する変化であることが検出されるまでの期間に基づいて修正してから、第２逓倍数で割り、こうして得られた値が１周期となるアングルクロックを生成することができる。
【００７１】
この場合、アングルクロックは、不規則領域の終了時における計測値をそのまま用いるのではなく、これを修正してから第２逓倍数で割り、こうして得られた値が１周期となる。そのため、このアングルクロックをカウントすれば、そのカウントが規則領域に比べて遅れてしまうことがなくなり、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【００７２】
なお、上記構成において、第２計測値修正手段が計測値を修正するための具体的な構成については特に限定されないが、例えば、不規則領域中における計測値を、不規則領域において信号レベルの変化が発生するまでの期間と規則領域の期間との比（不規則領域において信号レベルの変化が発生するまでの期間／規則領域の期間）で割る、といった構成が考えられる。
【００７３】
このような比で割った値は、「不規則領域において信号レベルの変化が発生するまでの計測値／規則領域における計測値＝不規則領域において信号レベルの変化が発生するまでの期間／規則領域の期間」を満たすような「規則領域における計測値」を求めたものである。これは、不規則領域において信号レベルの変化が発生した以降、規則領域と同じ期間だけ計測を継続した場合における計測値といえるため、このような修正を行うことにより、その計測値を規則領域におけるものと近似させることができる。
【００７４】
また、上述した各構成における不規則中検出手段が、不規則領域中に発生する変化であることを検出するための構成については、特に限定されない。例えば、前記動作カウント手段によるカウント値が、前記不規則領域中において発生する変化に対応する値となっていることをもって、その変化が不規則領域中に発生する変化であることを検出する、といった構成が考えられる。
【００７５】
この場合、動作カウント手段によるカウント値に基づいて、不規則領域中に発生する変化であることを検出することができる。
また、カム信号が、それぞれ信号レベルが特定方向へと変化するタイミングを異ならせた複数の信号に基づいて生成されたものである場合であれば、そのカム信号の基となった複数の信号における信号レベルそれぞれの組合せが、不規則領域中に発生する変化に対応する組み合わせとなっていることをもって、その変化が不規則領域中に発生する変化であることを検出する、といった構成を考えることもできる。
【００７６】
この場合、カム信号の基となった複数の信号における信号レベルそれぞれの組合せに基づいて、不規則領域中に発生する変化であることを検出することができる。
また、上述した各構成における不規則開始検出手段が、不規則領域の開始時に発生する変化であることを検出するための構成は特に限定されない。
【００７７】
例えば、前記動作カウント手段によるカウント値が、前記不規則領域の開始時に発生する変化に対応する値となっていることをもって、その変化が前記不規則領域の開始時に発生する変化であることを検出する、ように構成することが考えられる。
【００７８】
このように構成すれば、動作カウント手段によるカウント値に基づいて、不規則領域の開始時に発生する変化であることを検出することができる。
また、前記動作信号が、それぞれ信号レベルが特定方向へと変化するタイミングを異ならせた複数の信号に基づいて生成されたものである場合であれば、前記動作信号の基となった複数の信号における信号レベルそれぞれの組合せが、前記不規則領域の開始時に発生する変化に対応する組み合わせとなっていることをもって、その変化が前記不規則領域の開始時に発生する変化であることを検出する、ように構成することが考えられる。
【００７９】
このように構成すれば、動作信号の基となった複数の信号における信号レベルそれぞれの組合せに基づいて、不規則領域の開始時に発生する変化であることを検出することができる。
【００８０】
また、上述した各構成における不規則終了検出手段が、不規則領域の終了時に発生する変化であることを検出するための構成は特に限定されない。
例えば、前記動作信号の信号レベルが特定方向に変化してから次に信号レベルが特定方向に変化するまでの間隔を監視しており、該間隔が前記規則領域における間隔として想定される値を超えたことをもって、その次の変化が前記不規則領域の終了時に発生する変化であることを検出する、ように構成することが考えられる。
【００８１】
このように構成すれば、動作信号の信号レベルが特定方向に変化してから次に信号レベルが特定方向に変化するまでの間隔に基づいて、不規則領域の終了時に発生する変化であることを検出することができる。
【００８２】
また、前記動作カウント手段によるカウント値が、前記不規則領域の終了時に発生する変化に対応する値となっていることをもって、その変化が前記不規則領域の終了時に発生する変化であることを検出する、ように構成することも考えられる。
【００８３】
このように構成すれば、動作カウント手段によるカウント値に基づいて、不規則領域の終了時に発生する変化であることを検出することができる。
また、前記動作信号が、それぞれ信号レベルが特定方向へと変化するタイミングを異ならせた複数の信号に基づいて生成されたものである場合であれば、前記動作信号の基となった複数の信号における信号レベルそれぞれの組合せが、前記不規則領域の終了時に発生する変化に対応する組み合わせとなっていることをもって、その変化が前記不規則領域の終了時に発生する変化であることを検出する、ように構成することが考えられる。
【００８４】
このように構成すれば、動作信号の基となった複数の信号における信号レベルそれぞれの組合せに基づいて、不規則領域の終了時に発生する変化であることを検出することができる。
【００８５】
また、請求項１１に記載のプログラムは、請求項１から１０のいずれかに記載の全ての手段として機能させるための各種処理手順をコンピュータシステムに実行させるためのプログラムである。
【００８６】
このプログラムにより制御されるコンピュータシステムは、請求項１から１０のいずれかに記載のエンジン制御装置の一部を構成することができる。
なお、このプログラムは、コンピュータシステムによる処理に適した命令の順番付けられた列からなるものであって、各種記録媒体や通信回線を介してエンジン制御装置やこれを利用するユーザに提供されるものである。
【発明を実施するための最良の形態】
【００８７】
以下に本発明の実施形態を図面と共に説明する。
（１）全体構成
（１−１）装置構成
エンジン制御装置１は、エンジン（本実施形態においては６気筒からなるエンジン）を制御するためのＥＣＵからなるものであって、図１に示すように、エンジン制御装置１外部から各種信号（クランク信号，第１カム信号および第２カム信号など）を入力する入力回路１０，エンジン制御装置１外部へ各種信号（制御信号）を出力する出力回路２０，入力回路１０から入力される信号に基づいてエンジンの動作を制御するマイクロコンピュータ（以降、「マイコン」という）３０などで構成される。
【００８８】
入力回路１０は、エンジンにおけるクランク軸の回転に伴って信号レベルが変化するクランク信号と、第１，第２カム軸の回転に伴って信号レベルが変化する第１，第２カム信号と、が入力され、これら信号を波形成形したうえでマイコン３０へと出力する。
【００８９】
出力回路２０は、マイコン３０から出力される信号（イベント信号）に基づいてエンジンにおけるアクチュエータ（例えば、インジェクタ，イグナイタなど）を制御するための制御信号を生成し、これによりアクチュエータの動作を制御する。
【００９０】
マイコン３０は、マイコン３０全体の動作を制御するＣＰＵ１００，入力回路１０から入力される信号に基づいて後述するアングルクロックを生成するアングルクロック生成部２００，アングルクロック生成部２００により生成されるアングルクロックと同期させたイベント信号をＣＰＵ１００からの指令に基づいて出力回路２０へ出力するタイマ出力部３００，ＣＰＵ１００による処理手順などを記憶するフラッシュＲＯＭ４００，ＣＰＵ１００による処理結果などを記憶するＲＡＭ５００などを備えている。
【００９１】
このマイコン３０の備えるアングルクロック生成部２００は、図２に示すように、入力選択部２１０，エッジ間計測部２２０，基準時間選択部２３０，逓倍クロック生成部２４０，エッジ後経過角度計測部２５０，アングルクロック部２６０などからなる。
【００９２】
これらのうち、入力選択部２１０は、入力回路１０から入力される第１，第２カム信号それぞれの信号レベルが変化するタイミングで信号レベルがパルス状に変化（有効エッジが発生）する信号（以降、単に「カム信号」という）を生成すると共に（図３参照）、入力回路１０から入力されるクランク信号またはそのカム信号を、ＣＰＵ１０からの指令に基づいて選択的にアングルクロック生成部２００の各部へと出力する。また、この入力選択部２１０は、入力回路１０から入力される第１，第２カム信号およびクランク信号それぞれを、そのままＣＰＵ１０に対しても出力する。
【００９３】
また、エッジ間計測部２２０は、入力選択部２１０から入力される入力信号に有効エッジが発生する毎に、次に入力信号に有効エッジが発生するまでの間隔をカウントするエッジ間時間計測カウンタを内蔵している。
【００９４】
このエッジ間時間計測カウンタは、図４に示すように、入力信号に有効エッジが発生した際にリセットされ、その後、次に有効エッジが発生するまでシステムクロック（の立ち上がりまたは立ち下がりエッジ）をカウントする。これにより、入力信号に有効エッジが発生する間隔が計測される。そして、エッジ間計測部２２０は、エッジ間時間計測カウンタによる計測値（エッジ間時間；図４「エッジ間時間計測カウンタ」のＴ０〜Ｔ６参照）を、次の有効エッジが発生したタイミング（エッジ間時間計測カウンタをリセットする直前）で基準時間選択部２３０へと出力する。
【００９５】
また、基準時間選択部２３０は、エッジ間計測部２２０から出力されるエッジ間時間，または，内蔵するレジスタにセットされた固定時間を、逓倍クロック基準時間として、ＣＰＵ１００からの指令に基づいて選択的に逓倍クロック生成部２４０へと転送する（図４「基準時間選択」参照；ここでは、エッジ間時間が選択されている）。
【００９６】
また、逓倍クロック生成部２４０は、逓倍クロック基準時間をセットするための第１レジスタと、逓倍クロックを生成する際に用いる逓倍数ｆをセットするための第２レジスタと、を内蔵している。そして、基準時間選択部２３０から転送される逓倍クロック基準時間を第１レジスタにセットし、この逓倍クロック基準時間を第２レジスタにセットされた逓倍数ｆで割ってなる値を１周期とする逓倍クロックを生成した後（図４「逓倍クロック」参照）、この逓倍クロックをエッジ後経過角度計測部２５０およびアングルクロック部２６０へと出力する。
【００９７】
また、エッジ後経過角度計測部２５０は、逓倍クロック生成部２４０から入力される逓倍クロックに基づき、この信号の信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する回数をカウントする経過角度計測カウンタを内蔵している。この経過角度計測カウンタは、入力選択部２１０から有効エッジが入力された際にリセットされ、次に有効エッジが入力されるまでの間、逓倍クロックの立ち上がりエッジをカウントする（図４「経過角度計測カウンタ」参照）。
【００９８】
また、このエッジ後経過角度計測部２５０は、所定のしきい値がエッジ後経過角度計測としてセットされたレジスタを内蔵しており、経過角度計測カウンタがそのエッジ後経過角度計測以上となった際に、その旨を通知するための割込信号をＣＰＵ１００に対して出力するように構成されている。ここで「エッジ後経過角度計測」とは、初期値として、クランク信号が後述する規則領域のときに到達しうるカウント値よりも大きな値である（本実施形態では、このカウント値Δθの２．５倍）。
【００９９】
なお、エッジ後経過角度計測部２５０に入力される信号は、クランク軸またはカム軸の回転に伴って信号レベルが変化する信号であり、経過角度計測カウンタは、その信号レベルが変化するまでの間における逓倍クロックの立ち上がりエッジをカウントしている。
【０１００】
ここで、逓倍クロックは、これら信号の信号レベルが特定方向に変化する時間間隔を逓倍したクロックであるため、この経過角度計測カウンタは、入力選択部２１０から有効エッジが入力された以降における軸の回転角度（経過角度：０°ＣＡ〜Δθ°ＣＡ）を、入力信号に有効エッジが発生する間隔よりも高い分解能（具体的には、ｆ倍の分解能）で仮想的に計測していることになる。
【０１０１】
そして、アングルクロック部２６０は、逓倍クロック生成部２４０から入力される逓倍クロックにつき、この逓倍クロックの信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する回数をカウントする基準カウンタと、入力選択部２１０から入力される入力信号の信号レベルが特定方向（本実施形態においては、ＬレベルからＨレベル）に変化する毎に上記逓倍数ｆづつカウントアップするガードカウンタと、基準カウンタのカウント値がシステムクロックに同期してセットされるアングルカウンタと、を内蔵している。
【０１０２】
これらカウンタのうち、基準カウンタは、逓倍クロック生成部２４０から入力される逓倍クロックの立ち上がりエッジを、内蔵する第１レジスタにセットされた上限値（後述のように、ＣＰＵ１００からの指令に応じてセットされる値）までカウントした後、次の逓倍クロックにおける立ち上がりエッジで初期化（カウント値が「０」にクリア）される。また、この基準カウンタは、内蔵する第２レジスタにセットされたモード値で示されるモードによりカウントを行うように構成されている。ここでいうモードには、ガードカウンタにセットされた値以上のカウントアップが禁止される禁止モード，ガードカウンタにセットされた値以上のカウントが許可される許可モードがある。
【０１０３】
また、アングルカウンタは、そのカウント値それぞれに、クランク軸の１回転における各回転位置が対応づけられており、このアングルカウンタのカウント値によってクランク軸の回転位置が特定可能となる。ここで、そのカウント値に対応する回転位置とは、クランク軸の１回転における回転角度を、上述した規則角度Δθ°ＣＡ（６°ＣＡ）を上述した逓倍数ｆ（初期値の６０）で割ってなる値（６／６０＝０．１°ＣＡ）毎に分解した場合における各回転角度に対応する位置のことである。
【０１０４】
このアングルカウンタのカウント値は、クランク軸の回転位置を特定可能なアングルクロックとしてタイマ出力部３００へと出力され、このアングルクロックを入力したタイマ出力部３００が、アングルクロックと同期したイベント信号を出力回路２０へと出力する。こうして、イベント信号を入力した出力回路２０は、イベント信号に基づいてエンジンの制御対象を動作させ、これにより、クランク軸の回転位置と同期したアクチュエータの制御（例えば、点火制御，噴射制御など）が実施されることとなる。
【０１０５】
なお、ここでは、アングルカウンタのカウント値であるアングルクロックからイベント信号を生成し、これに基づいてエンジンの制御対象を動作させる場合を例示したが、基準カウンタのカウント値をアングルクロックとしてイベント信号を生成し、これに基づいてエンジンの制御対象を動作させるように構成してもよい。
（１−２）各種信号
次に、上述した入力回路１０に入力される各種信号を図３に基づいて説明する。
【０１０６】
まず、クランク信号は、エンジンにおけるクランク軸が規則角度Δθ°ＣＡ（クランクアングル；本実施形態においては６°ＣＡ）だけ回転する毎に信号レベルがパルス状に変化する規則領域，および，クランク軸が不規則角度ｋΔθ°（本実施形態では、ｋ＝３）だけ回転した際に信号レベルがパルス状に変化する不規則領域（いわゆる「欠け歯」），からなる信号である。そして、このクランク信号は、図示されないクランク軸センサから入力される。
【０１０７】
本実施形態において、不規則領域は、クランク軸の回転位置が３６０°ＣＡ毎に設定された特定位置に到達してから、規則角度Δθ°ＣＡのｋ倍だけ回転位置が変位するまでの領域となっている。つまり、クランク信号には、クランク軸の回転位置が特定位置以外であれば、クランク軸が規則角度Δθ°ＣＡ回転する毎に、パルス状に信号レベルが変化する有効なエッジ（以降、「有効エッジ」という）が発生する。そして、クランク軸の回転位置が特定位置となったら、規則角度Δθ毎の有効エッジがｋ―１個だけ発生しなくなる。これにより、クランク軸の回転位置が特定位置となった場合には、有効エッジの発生間隔がｋ倍の長さとなる。
【０１０８】
また、このクランク信号においては、所定のクランク角度（本実施形態においては、７２０°ＣＡ／気筒数６＝１２０°ＣＡ）毎に発生する有効エッジが、それぞれエンジンにおける気筒の上死点に対応づけられている（＃１，＃５，＃３，＃６，＃２，＃４ＴＤＣ）。これら上死点のうち、第１気筒の上死点（＃１ＴＤＣ）に対応する有効エッジから、所定のクランク角度（本実施形態においては１８°ＣＡ）だけ前に発生する有効エッジが、クランク信号の基準位置（図３における「０」の位置）に対応づけられている。
【０１０９】
なお、本実施形態においては、基準位置に対応する有効エッジから９６°ＣＡだけ後に発生する有効エッジ，および，この有効エッジから更に３６０°ＣＡだけ後に発生する有効エッジそれぞれが上述した「特定位置」として対応づけられている。つまり、これら有効エッジそれぞれから規則角度のｋ倍となる領域それぞれが不規則領域となっている。
【０１１０】
また、第１，第２カム信号は、エンジンの備える第１，第２カム軸の回転に伴ってそれぞれ信号レベルがＨレベルまたはＬレベルに変化する信号であって、図示されない第１，第２カム軸センサから入力される。
【０１１１】
これらのうち、第１カム信号は、図３に示すように、クランク信号の基準位置より所定のクランク角度（本実施形態では１０５°ＣＡ）だけ前のクランク位置で信号レベルがＨレベルとなった以降、そのＨレベルとなった時点を基準として、第１カム軸が２４０°ＣＡ，２４０°ＣＡ，２１０°ＣＡ，３０°ＣＡと回転する毎に、その信号レベルがＨレベルからＬレベルまたはＬレベルからＨレベルへと変化する。一方、第２カム信号は、クランク信号の基準位置より所定のクランク角度（本実施形態では１５°ＣＡ）だけ後のクランク位置で信号レベルがＨレベルとなった以降、そのＨレベルとなった時点を基準として、第２カム軸が２１０°ＣＡ，３０°ＣＡ，２４０°ＣＡ，２４０°ＣＡと回転する毎に、その信号レベルがＨレベルからＬレベルまたはＬレベルからＨレベルへと変化する。
【０１１２】
そして、入力選択部２１０がマイコン３０へと出力するカム信号は、第１，第２カム信号それぞれの信号レベルが変化するタイミングで信号レベルがパルス状に変化（有効エッジが発生）する信号である。
【０１１３】
本実施形態においては、第１，第２カム信号の信号レベルが変化するタイミングに基づき、カム軸それぞれが規則角度（本実施形態においては１２０°ＣＡ）回転する毎の規則的な変化点Ｐ，および，所定の変化点Ｐから不規則角度（本実施形態においては９０°ＣＡ）だけ回転した際に到来する不規則な変化点Ｑそれぞれにおいて、その信号レベルがパルス状に変化する信号となる。このカム信号においては、規則的な変化点Ｐのみの発生する領域が規則領域であり、規則的な変化点Ｐの間に不規則な変化点Ｑの発生する領域が不規則領域である。
（２）マイコン３０による処理
続いて、マイコン３０（のＣＰＵ１００）により実行される処理について説明する。
（２−１）入力信号診断処理
以下に、マイコン３０が起動された以降、一定時間Ｔｃ毎に繰り返し実行される入力信号診断処理の処理手順を、図５に基づいて説明する。
【０１１４】
この入力信号診断処理が起動されると、まず、エンジン回転数が所定値Ｎａ（入力信号の異常判定に適した回転数として定められた値）以上か否かがチェックされ（Ｓ１１０）、エンジン回転数が所定値Ｎａ以上でないと判定されたら（Ｓ１１０：ＮＯ）、直ちに本入力信号診断処理が終了する。ここで、所定値Ｎａは、正常なクランク信号において立ち下がりが発生する時間間隔が、本入力信号診断処理が繰り返される一定時間Ｔｃよりも充分に短くなるようなエンジン回転数として定められたものである。
【０１１５】
このような所定値Ｎａが定められたのは、上記立ち下がりが発生する時間間隔が上記一定時間Ｔｃより長いと、クランク信号が正常であるにも拘わらず、一定時間Ｔｃが経過する間に立ち下がりが発生しないために、以降の処理でクランク信号の診断結果が異常であると判定されてしまうからである。
エンジン回転数は、エンジン回転数を算出するための周知の処理（図示省略）により、クランク信号に基づき計測される所定クランク角度分の時間から算出される。
【０１１６】
一方、上述したＳ１１０でエンジン回転数が所定値Ｎａ以上であると判定されたら（Ｓ１１０：ＹＥＳ）、本入力信号診断処理の前回の実行開始時から今回の実行開始時までの一定時間Ｔｃの間に、クランク信号の立ち下がりが検出されたか否かがチェックされる（Ｓ１２０）。
【０１１７】
このＳ１２０で、クランク信号の立ち下がりが検出された（クランクエッジ有り）と判定された場合には（Ｓ１２０：ＹＥＳ）、クランク信号の診断結果が正常であることを示す情報がマイコンの内蔵メモリに記憶される（Ｓ１３０）。
【０１１８】
そして、無エッジ期間計測カウンタの値が初期化（０にクリア）された後（Ｓ１４０）、本入力信号診断処理が終了する。この無エッジ期間計測カウンタは、マイコン３０が起動される毎に初期化され、以降の処理においてクランク信号に立ち上がりエッジが無かったと判定された回数が積算されるカウンタである。
【０１１９】
また、上述したＳ１２０で、クランク信号の立ち下がりが検出されなかった（クランクエッジ無し）と判定された場合には（Ｓ１２０：ＮＯ）、無エッジ期間計測カウンタの値が所定値Ｎｂ（例えば１０）よりも大きくなったか否かがチェックされる（Ｓ１５０）。
【０１２０】
このＳ１５０で、無エッジ期間計測カウンタの値が所定値Ｎｂよりも大きくないと判定されたら（Ｓ１５０：ＮＯ）、無エッジ期間計測カウンタの値がインクリメント（「１」を加算）された後（Ｓ１６０）、本入力信号診断処理が終了する。
【０１２１】
一方、上述したＳ１５０で、無エッジ期間計測カウンタの値が所定値Ｎｂよりも大きいと判定されたら（Ｓ１５０：ＹＥＳ）、クランク信号の診断結果が異常であることを示す情報が内蔵メモリに記憶された後（ｓ１７０）、本入力信号診断処理が終了する。
【０１２２】
このように、本入力信号診断処理においては、エンジン回転数が所定値Ｎａ以上の場合において（Ｓ１１０で「ＹＥＳ」）、クランク信号に本来ならば少なくとも１回は立ち下がりエッジが発生するはずの一定期間（Ｔｃ×Ｎｂ）が経過しても、クランク信号に立ち下がりエッジが１回も発生しなければ、クランク信号が異常（正常に入力されていない）であると診断している（Ｓ１２０「ＮＯ」→Ｓ１５０「ＹＥＳ」→Ｓ１７０）。
【０１２３】
なお、マイコン３０は、第１カム信号および第２カム信号それぞれに対しても、上述したのと同様の入力信号診断処理を実行しており、これにより、各信号における異常の有無を診断するように構成されているが、詳細な処理手順は省略する。
（２−２）時間同期タスク
以下に、マイコン３０が起動された以降、入力信号診断処理と並行して、一定時間毎に繰り返し実行される時間同期タスクの処理手順を、図６に基づいて説明する。
【０１２４】
この時間同期タスクが起動されると、まず、入力信号診断処理（図５のＳ１３０，Ｓ１７０）において内蔵メモリに記憶されたクランク信号の診断結果（正常または異常）に基づき、クランク信号が異常であるか否かがチェックされる（Ｓ２１０）。
【０１２５】
このＳ２１０で、クランク信号が異常でない（つまり正常である）と判定されたら（Ｓ２１０：ＮＯ）、入力選択部２１０によりアングルクロック生成部２００の各部に供給される信号としてクランク信号が選択された後（Ｓ２２０）、本時間同期タスクが終了する。このＳ２２０では、クランク信号を選択すべき旨の指令が、ＣＰＵ１００からアングルクロック生成部２００の各部へと出力される。
【０１２６】
アングルクロック生成部２００における入力選択部２１０は、この指令を受けた以降、入力回路１０から入力される信号のうち、クランク信号をアングルクロック生成部２００の各部へと出力するように内部経路を切り替える。また、上記指令を受けた際、逓倍クロック生成部２４０は、内蔵する第２レジスタに、逓倍数ｆとしてクランク信号用の値（本実施形態においては、６０）をセットする。また、そして、上記指令を受けたアングルクロック部２６０は、内蔵する第１レジスタに、基準カウンタ，アングルカウンタそれぞれの上限値としてクランク信号用の値をセットする。ここでいう「クランク信号用の上限値」とは、クランク軸の１回転（３６０°ＣＡ）を、アングルカウンタにおける分解能（０．１°ＣＡ）で割った値（３６０÷０．１＝３６００）である。
【０１２７】
また、上述したＳ２１０で、クランク信号が異常であると判定されたら（Ｓ２１０：ＹＥＳ）、内蔵メモリに記憶されるカム信号それぞれの診断結果に基づき、第１カム信号および第２カム信号のいずれかが異常であるか否かがチェックされる（Ｓ２３０）。
【０１２８】
このＳ２３０で、第１カム信号および第２カム信号の両方が異常でない（つまり正常である）と判定されたら（Ｓ２３０：ＮＯ）、入力選択部２１０によりアングルクロック生成部２００の各部に出力される信号としてカム信号が選択された後（Ｓ２４０）、本時間同期タスクが終了する。このＳ２４０では、カム信号を選択すべき旨の指令が、ＣＰＵ１００からアングルクロック生成部２００の各部へと出力される。
【０１２９】
アングルクロック生成部２００における入力選択部２１０は、この指令を受けた以降、入力回路１０から入力される信号のうち、カム信号をアングルクロック生成部２００の各部へと出力するように内部経路を切り替える。また、上記指令を受けた逓倍クロック生成部２４０は、内蔵する第２レジスタに、逓倍数ｆとしてカム信号用の値をセットする。ここでいう「カム信号用の逓倍数ｆ」とは、カム信号における規則的な変化点Ｐの間隔（１２０°ＣＡ）と、クランク信号用の逓倍数ｆ（６０）とを積算した値を、更にクランク信号の規則角度（６°ＣＡ）で割った値（（１２０×６０）／６）＝１２００）である。そして、上記指令を受けたアングルクロック部２６０は、内蔵する第１レジスタに、基準カウンタ，アングルカウンタそれぞれの上限値としてカム信号用の値をセットする。ここでいう「カム信号用の上限値」とは、カム軸の１回転（７２０°ＣＡ）に、アングルカウンタにおける分解能（０．１°ＣＡ）を積算した値（７２０÷０．１＝７２００）である。
【０１３０】
また、上述したＳ２３０で、第１カム信号および第２カム信号のいずれか一方または両方が異常であると判定されたら（Ｓ２３０：ＹＥＳ）、そのまま本時間同期タスクが終了する。
（２−３）クランクエッジ割込処理
以下に、マイコン３０が起動された以降、時間同期タスクでクランク信号が選択されている（図６のＳ２２０が行われた）状況において、入力選択部２１０から出力される信号に有効エッジが発生する毎に、ＣＰＵ１００が繰り返し実行するクランクエッジ割込処理の処理手順を、図７に基づいて説明する。
【０１３１】
このクランクエッジ割込処理が起動されると、まず、その契機となった有効エッジが、クランク信号における不規則領域の終了時に発生したものであるか否かがチェックされる（Ｓ３１０）。
【０１３２】
有効エッジが、クランク信号において不規則領域の終了時に発生したものであるときには、それ以外の領域を構成するときよりも有効エッジの間隔が大きくなることから、図８に示すように、エッジ後経過角度計測部２５０に内蔵された経過角度計測カウンタのカウント値が、規則領域であるときよりも大きな値に到達することになる（図８における「Δθ×３」参照）。そうすると、経過角度計測カウンタのカウント値は、しきい値であるエッジ後経過角度計測（Δθ×２．５）よりも大きくなる結果、エッジ後経過角度計測部２５０が、割込信号をＣＰＵ１００に対して出力することになる。
【０１３３】
そのため、このＳ３１０では、エッジ後経過角度計測部２５０から割込信号の入力があった場合に、その有効エッジが不規則領域の終了時に発生したものであると判定される。
このＳ３１０で、有効エッジが不規則領域の終了時に発生したものであると判定された場合（Ｓ３１０：ＹＥＳ）、クランク位置確定フラグに「ＯＦＦ」がセットされているか否かがチェックされる（Ｓ３２０）。このクランク位置確定フラグは、マイコン３０が起動される毎にソフトウェア的に設定されるフラグであって、初期値として「ＯＦＦ」がセットされたものである。
【０１３４】
このＳ３２０で、クランク位置確定フラグが「ＯＦＦ」になっていると判定された場合（Ｓ３２０：ＹＥＳ）、アングルクロック部２６０に内蔵された基準カウンタおよびアングルカウンタそれぞれに、「５９」と逓倍クロック生成部２４０のレジスタにセットされた逓倍数ｆ（ここでは、６０）とを積算した値「５９×ｆ」がセットされる（Ｓ３３０，Ｓ３４０）。
【０１３５】
次に、クランク位置確定フラグに「ＯＮ」がセットされる（Ｓ３５０）。
こうして、Ｓ３５０を終えた後、または、上述したＳ３２０でクランク位置確定フラグが「ＯＮ」になっていると判定された場合（Ｓ３２０：ＮＯ）、アングルクロック部２６０に内蔵されたガードカウンタに「０」がセットされる（Ｓ３６０）。
【０１３６】
次に、アングルクロック部２６０に内蔵された基準カウンタのカウントが、許可モードにより行われるように設定される（Ｓ３７０）。ここでは、ＣＰＵ１００からアングルクロック部２６０に対して、許可モードにより基準カウンタのカウントを行うべき旨が指令される。この指令を受けたアングルクロック部２６０は、第２レジスタに許可モードを示すモード値をセットする。これにより、以降、基準カウンタが、許可モードによりカウントを行うようになる。
【０１３７】
次に、基準時間選択部２３０から逓倍クロック生成部２４０へと転送するパラメータとして、エッジ間時間が選択される（Ｓ３７２）。ここでは、ＣＰＵ１００から基準時間選択部２３０に対し、逓倍クロック生成部２４０に転送するパラメータとしてエッジ間時間を選択すべき旨が指令される。この指令を受けた基準時間選択部２３０は、以降、ＣＰＵ１００から同種の指令（後述のＳ４１４による指令）を受けるまでの間、エッジ間計測部２２０から出力されるエッジ間時間を、逓倍クロック基準時間として逓倍クロック生成部２４０へと転送するようになる。
【０１３８】
そして、逓倍クロック生成部２４０のレジスタにセットされる逓倍クロック基準時間が修正された後（Ｓ３８０）、本クランクエッジ割込処理が終了する。このＳ３８０では、ＣＰＵ１００から逓倍クロック生成部２４０に対して、レジスタにセットされる逓倍クロック基準時間を、このクロック基準時間と、クランク信号の規則領域における有効エッジの間隔と不規則領域における有効エッジの間隔との比を示す値（本実施形態においては「１／３」）と、の積算値に修正すべき旨が指令される。この指令を受けた逓倍クロック生成部２４０は、次のタイミングでエッジ間計測部２２０から転送されてくる計測値を上述のように修正し、こうして得られた値を逓倍クロック基準時間としてレジスタにセットする。
【０１３９】
また、上述したＳ３１０で、有効エッジが不規則領域の終了時に発生したものでないと判定された場合（Ｓ３１０：ＮＯ）、その有効エッジが不規則領域の開始時に発生したものであるか否かがチェックされる（Ｓ４００）。上述したように、アングルクロック部２６０に内蔵されたアングルカウンタのカウント値それぞれには、クランク軸の一回転における各回転位置が対応づけられている。そのため、このＳ４００では、そのカウント値が、クランク軸の回転位置が不規則領域になる直前（有効エッジ一つ分前）の位置に対応づけられた値である場合に、有効エッジが不規則領域の開始時に発生したものであると判定される。
【０１４０】
このＳ４００で、有効エッジが不規則領域の開始時に発生したものであると判定された場合（Ｓ４００：ＹＥＳ）、アングルクロック部２６０に内蔵されたガードカウンタに、「５９」と、逓倍クロック生成部２４０のレジスタにセットされた逓倍数ｆ（＝６０）と、を積算した値「５９×ｆ」がセットされる（Ｓ４１０）。
【０１４１】
次に、クランクエッジ割込処理を起動する契機となった有効エッジに基づいてエッジ間計測部２２０から出力されたエッジ間時間が、基準時間選択部２３０に内蔵されたレジスタに「固定時間」としてセットされる（Ｓ４１２）。ここでは、ＣＰＵ１００から基準時間選択部２３０に対し、エッジ間計測部２２０から出力されるエッジ間時間を「固定時間」として内蔵するレジスタにセットすべき旨が指令される。この指令を受けた基準時間選択部２３０は、内蔵するレジスタに固定時間として上記エッジ間時間をセットする。
【０１４２】
次に、基準時間選択部２３０から逓倍クロック生成部２４０へと転送するパラメータとして、固定時間が選択される（Ｓ４１４）。ここでは、ＣＰＵ１００から基準時間選択部２３０に対し、逓倍クロック生成部２４０に転送するパラメータとして固定時間を選択すべき旨が指令される。この指令を受けた基準時間選択部２３０は、以降、ＣＰＵ１００から同種の指令（後述のＳ３７２による指令）を受けるまでの間、内蔵するレジスタにセットされた固定時間を、逓倍クロック基準時間として逓倍クロック生成部２４０へと転送するようになる。
【０１４３】
こうして、Ｓ４１４を終えた後、または、上述したＳ４００で有効エッジが不規則領域の開始時に発生したものでないと判定された場合（Ｓ４００：ＹＥＳ）、アングルクロック部２６０に内蔵された基準カウンタのカウントが、禁止モードにより行われるように設定された後（Ｓ４２０）、本クランクエッジ割込処理が終了する。
【０１４４】
このＳ４２０では、ＣＰＵ１００からアングルクロック部２６０に対して、禁止モードにより基準カウンタのカウントを行うべき旨が指令される。この指令を受けたアングルクロック部２６０は、第２レジスタに禁止モードを示すモード値をセットする。これにより、以降、基準カウンタが、禁止モードによりカウントを行う，つまりガードカウンタにセットされた値を上限とするカウントを行うようになる。
【０１４５】
ここまで説明したクランクエッジ割込処理によれば、マイコン３０が起動した以降、カウンタのカウント値などのパラメータが、図８，図９に示すように変化する。
まず、マイコン３０が起動した直後は（図８におけるｅ０の区間参照）、経過角度計測カウンタが正常に動作しておらず、また、アングルカウンタによるカウントもなされていないことから、Ｓ３１０，Ｓ４００それぞれで「ＮＯ」と判定され、Ｓ４２０を経てクランクエッジ割込処理が終了する。
【０１４６】
その後、有効エッジが発生する毎に上述した手順（Ｓ３１０→Ｓ４００→Ｓ４２０）が繰り返される（図８におけるｅ１の区間参照）。なお、この時点では、アングルカウンタによるカウントが充分になされておらず、そのカウント値は不規則領域になる直前の位置に対応づけられた値に到達することはないため、実際に不規則領域開始時の有効エッジが発生したとしても、Ｓ４００で有効エッジが不規則領域の開始時に発生したものであると判定されることはない。
【０１４７】
その後、有効エッジがクランク信号における不規則領域の開始時に発生したものになるまでに（図８のＥ２参照）、経過角度計測カウンタのカウント値がエッジ後経過角度計測を超える。そのため、エッジ後経過角度計測部２５０からの割込信号を受けて、Ｓ３１０で「ＹＥＳ」と判定されることとなり、プロセスがＳ３２０以降へ移行する。
【０１４８】
この時、クランク位置確定フラグは、初期値「ＯＦＦ」であることから、Ｓ３３０，Ｓ３４０へ移行して基準カウンタ，アングルカウンタそれぞれに「５９×逓倍数ｆ（６０）」がセットされた後、Ｓ３５０にてクランク位置確定フラグに「ＯＮ」がセットされる。こうして、マイコン３０が起動した以降は、有効エッジがクランク信号における不規則領域の開始時に発生したものになることにより、基準カウンタ，アングルカウンタそれぞれが初期化される。
【０１４９】
続いて、Ｓ３６０にてガードカウンタに「０」がセットされ、Ｓ３７０にて基準カウンタが許可モードに設定される。このＳ３６０では、ガードカウンタに「０」がセットされるが、Ｓ３７０にて基準カウンタが許可モードに設定され、ガードカウンタにセットされた値以上にカウントアップできるようになるため、基準カウンタによる上限値までのカウントは継続されることとなる（図８におけるｅ３の区間参照）。
【０１５０】
続いて、Ｓ３７２にてエッジ間時間が選択され、Ｓ３８０にて逓倍クロック基準時間が修正された後（図８における逓倍クロック基準時間「Ｔ２／３」参照）、クランクエッジ割込処理が終了する。このＳ３７２で逓倍クロック基準時間としてエッジ間時間が選択されるため、逓倍クロック生成部２４０は、それ以降、Ｓ４１４で固定時間が選択されるまでの間、エッジ間計測部２２０から出力されるエッジ間時間に基づいて逓倍クロックを生成することとなる。
【０１５１】
こうして、マイコン３０が起動して、最初に有効エッジが不規則領域の開始時に発生したものであると判定された以降は、次に有効エッジが不規則領域の開始時に発生したものとなるまで、Ｓ３１０→Ｓ４００→Ｓ４２０が繰り返される（図９におけるｅ４の区間参照）。
【０１５２】
そして、有効エッジが不規則領域の開始時に発生したもの（欠け歯の直前）となったら、その時点におけるアングルカウンタの値（図９の点Ｑ参照）に基づいてＳ４００にて「ＹＥＳ」と判定される。そうすると、Ｓ４１０にてガードカウンタに「５９×逓倍数ｆ（６０）」がセットされると共に、Ｓ４１２で基準時間選択部２３０における固定時間としてエッジ間時間がセットされ、Ｓ４１４でその固定時間が逓倍クロック基準時間として選択される（図９におけるｅ５の区間参照）。
【０１５３】
このＳ４１４で逓倍クロック基準時間として固定時間が選択されるため、逓倍クロック生成部２４０は、それ以降、Ｓ３７２でエッジ間時間が選択されるまでの間、エッジ間時間に拘わらずその固定時間に基づいて逓倍クロックを生成することとなる。
【０１５４】
この次にクランク信号に有効エッジが発生した際には、その有効エッジは不規則領域の終了時に発生したものであるため、Ｓ３１０で「ＹＥＳ」と判定され、この時点でクランク位置確定フラグは「ＯＮ」であるためにＳ３２０で「ＮＯ」と判定されて、プロセスがＳ３６０へ移行する。
【０１５５】
続いて、Ｓ３６０でガードカウンタに「０」がセットされ、Ｓ３７２でエッジ間時間が逓倍クロック基準時間として選択される。このＳ３７２で逓倍クロック基準時間としてエッジ間時間が選択されるため、逓倍クロック生成部２４０は、それ以降、Ｓ４１４で固定時間が選択されるまでの間、エッジ間計測部２２０から出力されるエッジ間時間に基づいて逓倍クロックを生成することとなる。
【０１５６】
そして、Ｓ３７２で逓倍クロック基準時間としてエッジ時間が選択され、Ｓ３８０で逓倍クロック基準時間が修正された後、こうして修正されたエッジ間時間に基づいて逓倍クロックが生成されることとなる（図９におけるｅ６の区間参照）。
【０１５７】
これ以降は、上述したのと同様、次に有効エッジが不規則領域の開始時に発生したものとなるまで、Ｓ３１０→Ｓ４００→Ｓ４２０が繰り返されることとなる（図９におけるｅ７の区間参照）。
（２−４）カムエッジ割込処理
以下に、マイコン３０が起動された以降、時間同期タスクでカム信号が選択されている（図６のＳ２４０が行われた）状況において、入力選択部２１０から出力される信号に有効エッジが発生する毎に、ＣＰＵ１００が繰り返し実行するカムエッジ割込処理の処理手順を、図１０に基づいて説明する。
【０１５８】
このカムエッジ割込処理が起動されると、まず、カム位置確定フラグに「ＯＦＦ」がセットされているか否かがチェックされる（Ｓ５１０）。このカム位置確定フラグは、マイコン３０が起動される毎にソフトウェア的に設定されるフラグであって、初期値として「ＯＦＦ」がセットされたものである。
【０１５９】
このＳ５１０で、カム位置確定フラグが「ＯＦＦ」になっていると判定された場合（Ｓ５１０：ＹＥＳ）、アングルクロック部２６０に内蔵されたガードカウンタのカウント値が、逓倍クロック生成部２４０のレジスタにセットされた逓倍数ｆ（ここでは、１２００）を２倍にした値（２×１２００＝２４００）以上となっているか否かがチェックされる（Ｓ５２０）。ガードカウンタは、入力信号の信号レベルが特定方向に変化する毎に、初期値「０」から逓倍数ｆずつカウントアップするカウンタであり、このＳ５２０では、入力信号の信号レベルが特定方向へと２回変化したか否かをチェックしていることになる。  
【０１６０】
このＳ５２０で、ガードカウンタのカウント値が逓倍数ｆを２倍にした値以上になっていると判定された場合（Ｓ５２０：ＹＥＳ）、アングルクロック部２６０に内蔵された基準カウンタ，ガードカウンタおよびアングルカウンタそれぞれに初期値がセットされる（Ｓ５３０）。こうして、Ｓ５２０にて逓倍数ｆを２倍にした値以上となった，つまり入力信号の信号レベルが特定方向へと２回変化したと判定された場合に、基準カウンタ，ガードカウンタおよびアングルカウンタそれぞれに初期値がセットされる。
【０１６１】
本カムエッジ割込処理が最初に起動された時点では、それ以前のカウント期間が不明確なエッジ間時間に基づいて逓倍クロックが生成されているため（図１２におけるｅ１の区間参照）、この時点で上記各カウンタそれぞれに初期値をセットして以降の処理を行ってしまうと、不適切なエッジ間時間に基づいて生成された不適切な逓倍クロックを基本としてその後の処理が進行してしまう。
【０１６２】
上記Ｓ５２０〜Ｓ５３０では、入力信号の信号レベルが特定方向へと２回変化し、その変化の間にカウントされたことが明らかな適切なエッジ間時間により逓倍クロックが生成されるようになったと推定される場合にのみ（同図ｅ２の区間参照）、基準カウンタ，ガードカウンタおよびアングルカウンタそれぞれへの初期値のセットを行うことにより、適切な逓倍クロックを基本としてその後の処理が進行するようにしている。  本実施形態においては、入力回路１０に入力される第１，第２カム信号のうち、一方の信号における信号レベルと他方の信号における信号レベルの変化状態（エッジの方向）との組み合わせそれぞれに対して、各カウンタにセットすべき初期値が定められている（図１１参照）。そのため、このＳ５３０では、入力回路１０に入力される第１，第２カム信号の信号レベルおよび変化状態に基づいて、その定めに従った初期値が各カウンタにセットされる。なお、上述した「定め」は、例えば、上記組み合わせと初期値との対応関係をフラッシュＲＯＭ３７などにデータテーブルとして記憶した構成とすればよく、この場合、Ｓ５３０において、そのデータテーブルを参照して該当する初期値を特定するようにすればよい。
【０１６３】
次に、カム位置確定フラグに「ＯＮ」がセットされた後（Ｓ５４０）、次の処理（Ｓ５７０）へ移行する。
一方、上述したＳ５２０で、ガードカウンタのカウント値が逓倍数ｆを２倍にした値以上になっていないと判定された場合（Ｓ５２０：ＮＯ）、Ｓ５３０，Ｓ５４０が行われることなく、プロセスが次の処理（Ｓ５７０）へ移行する。
【０１６４】
また、上述したＳ５１０で、カム位置確定フラグが「ＯＮ」になっていると判定された場合（Ｓ５１０：ＮＯ）、アングルクロック部２６０に内蔵されたガードカウンタのカウント値が、逓倍クロック生成部２４０のレジスタにセットされた逓倍数ｆ（１２００）に、エンジンの気筒数（本実施形態では６）を積算した値（１２００×６＝７２００）以上となっているか否かがチェックされる（Ｓ５５０）。
【０１６５】
このＳ５５０で、ガードカウンタのカウント値が逓倍数ｆにエンジンの気筒数を積算した値以上となっていると判定された場合（Ｓ５５０：ＹＥＳ）、ガードカウンタに「０」がセットされた後（Ｓ５６０）、プロセスが次の処理（Ｓ５７０）へ移行する。一方、ガードカウンタの値が逓倍数ｆにエンジンの気筒数を積算した値以上になっていないと判定された場合（Ｓ５５０：ＮＯ）、Ｓ５６０が行われることなく、プロセスが次の処理（Ｓ５７０）へ移行する。
【０１６６】
次に、アングルクロック部２６０に内蔵されたガードカウンタのカウント値が「０」であるか否かがチェックされ（Ｓ５７０）、「０」であれば（Ｓ５７０：ＹＥＳ）、図７のＳ３７０と同様、アングルクロック部２６０に内蔵された基準カウンタのカウントが、許可モードにより行われるように設定される（Ｓ５８０）。一方、ガードカウンタのカウント値が「０」でなければ（Ｓ５７０：ＮＯ）、図７のＳ４２０と同様、基準カウンタのカウントが、禁止モードにより行われるように設定される（Ｓ５９０）。
【０１６７】
こうして、Ｓ５８０，Ｓ５９０にて基準カウンタの設定がなされたら、本カムエッジ割込処理が起動される契機となった有効エッジが、不規則領域を構成する有効エッジであること、つまり変化点Ｑ前後の変化点Ｐ，変化点Ｑのいずれかであるか否かがチェックされる（Ｓ６００）。ここでは、入力回路１０に入力される第１，第２カム信号それぞれの信号レベルの組合せに基づいて、不規則領域を構成する有効エッジであることがチェックされる。
【０１６８】
本実施形態における変化点Ｑ直前の変化点Ｐは、第１，第２カム信号のいずれか一方がＨレベルのときに他方がＨレベルからＬレベルへと変化する点であり、変化点Ｑは、第１，第２カム信号のいずれか一方がＬレベルのときに他方がＨレベルからＬレベルへと変化する点であり、変化点Ｑ直後の変化点は、第１，第２カム信号のいずれか一方がＬレベルのときに他方がＬレベルからＨレベルへと変化する点である（図３，図１１参照）。
【０１６９】
そして、このＳ６００では、第１，第２カム信号のいずれか一方がＨレベルのときに他方がＨレベルからＬレベルへと変化する状態であれば、変化点Ｑ直前の変化点Ｐであると判定され、第１，第２カム信号のいずれか一方がＬレベルのときに他方がＨレベルからＬレベルへと変化する状態であれば、変化点Ｑであると判定され、第１，第２カム信号のいずれか一方がＬレベルのときに他方がＬレベルからＨレベルへと変化する状態であれば、変化点Ｑ直後の変化点Ｐであると判定される。
【０１７０】
このＳ６００によるチェックで、有効エッジがカム信号における変化点Ｑ直前の変化点Ｐであると判定された場合（Ｓ６１０：ＹＥＳ）、図７のＳ４１２と同様、その有効エッジに基づいてエッジ間計測部２２０から出力されたエッジ間時間が、基準時間選択部２３０に内蔵されたレジスタに「固定時間」としてセットされる（Ｓ６１２）。
【０１７１】
次に、図７のＳ４１４と同様、基準時間選択部２３０から逓倍クロック生成部２４０へと転送するパラメータとして、固定時間が選択される（Ｓ６１４）。
そして、アングルクロック部２６０に内蔵されたガードカウンタに、Ｓ６００によるチェック結果に応じた値がセットされた後（Ｓ６１６）、本カムエッジ割込処理が終了する。このＳ６１６では、Ｓ６００によるチェック結果が、第１カム信号がＨレベルのときに第２カム信号がＨレベルからＬレベルへと変化する変化点Ｐであると判定された場合であれば、４．７５×逓倍数ｆ（＝（４＋３／４）×ｆ）がガードカウンタにセットされるのに対し、第２カム信号がＨレベルのときに第１カム信号がＨレベルからＬレベルへと変化する変化点Ｐであると判定された場合であれば、１．７５×逓倍数ｆ（＝（１＋３／４）×ｆ）がガードカウンタにセットされる。
【０１７２】
また、上記Ｓ６００によるチェックで、有効エッジがカム信号における変化点Ｑであると判定された場合（Ｓ６１０：ＮＯ，Ｓ６２０：ＹＥＳ）、その有効エッジに基づいてエッジ間計測部２２０から出力されたエッジ間時間を、不規則領域中における変化点Ｑの発生時期に応じて補正してなる値が、基準時間選択部２３０に内蔵されたレジスタに「固定時間」としてセットされる（Ｓ６２２）。
【０１７３】
ここでは、ＣＰＵ１００から基準時間選択部２３０に対し、エッジ間計測部２２０から出力されるエッジ間時間を補正してなる値を「固定時間」として内蔵するレジスタにセットすべき旨が指令される。この指令を受けた基準時間選択部２３０は、内蔵するレジスタに、エッジ間時間を変化点Ｐ同士の間隔に対する上記変化点Ｐ−Ｑの間隔の割合（３／４）で割ってなる値を、固定時間としてセットする。
【０１７４】
次に、図７のＳ４１４と同様、基準時間選択部２３０から逓倍クロック生成部２４０へと転送するパラメータとして、固定時間が選択される（Ｓ６２４）。
そして、アングルクロック部２６０に内蔵されたガードカウンタに、Ｓ６００によるチェック結果に応じた値がセットされた後（Ｓ６２６）、本カムエッジ割込処理が終了する。このＳ６２６では、Ｓ６００によるチェック結果が、第２カム信号がＬレベルのときに第１カム信号がＨレベルからＬレベルへと変化する変化点Ｑであると判定された場合であれば、５×逓倍数ｆがガードカウンタにセットされるのに対し、第１カム信号がＬレベルのときに第２カム信号がＨレベルからＬレベルへと変化する変化点Ｑであると判定された場合であれば、２×逓倍数ｆがガードカウンタにセットされる。
【０１７５】
また、上記Ｓ６００によるチェックで、有効エッジがカム信号における変化点Ｑ直後の変化点Ｐであると判定された場合（Ｓ６２０：ＮＯ，Ｓ６３０：ＹＥＳ）、逓倍クロック生成部２４０のレジスタにセットされる逓倍クロック基準時間が修正される（Ｓ６３２）。
【０１７６】
このＳ６３２では、ＣＰＵ１００から逓倍クロック生成部２４０に対して、レジスタにセットされる逓倍クロック基準時間を修正すべき旨が指令される。この指令を受けた逓倍クロック生成部２４０は、先にエッジ間計測部２２０から転送されてきたエッジ間時間と、次のタイミングでエッジ間計測部２２０から転送されてくるエッジ間時間と、を加算し、こうして得られた値を逓倍クロック基準時間としてレジスタにセットする。
【０１７７】
そして、図７のＳ３７２と同様、基準時間選択部２３０から逓倍クロック生成部２４０へと転送するパラメータとして、エッジ間時間が選択された後（Ｓ６３４）、本カムエッジ割込処理が終了する。
【０１７８】
また、上記Ｓ６００によるチェックで、有効エッジがカム信号における変化点Ｑ前後の変化点Ｐ，および，変化点Ｑのいずれでもないと判定された場合（Ｓ６３０：ＮＯ）、上記Ｓ６１２〜Ｓ６３２が行われることなく、本カムエッジ割込処理が終了する。
【０１７９】
ここまで説明したカムエッジ割込処理によれば、カウンタのカウント値などのパラメータが、図１２に示すように変化する。
まず、本カムエッジ割込処理が最初に起動されたとき、カム位置確定フラグは初期値「ＯＦＦ」であり、ガードカウンタのカウント値がカウントアップして「１×逓倍数ｆ」となることから（図１２におけるｅ０，ｅ１の区間参照）、Ｓ５１０で「ＹＥＳ」，Ｓ５２０で「ＮＯ」と判定され、Ｓ５７０へ移行する。ここで、ガードカウンタは「１×逓倍数ｆ」となっているため、Ｓ５７０で「ＮＯ」と判定され、プロセスがＳ５９０を経てＳ６００へ移行する。
【０１８０】
ここでの有効エッジは、第１カム信号がＬレベルであるときに第２カム信号がＬレベルからＨレベルへと変化する状態であるため、Ｓ６１０〜Ｓ６３０全てで「ＮＯ」と判定されて、本カムエッジ割込処理が終了する。
【０１８１】
この後、次の有効エッジが発生した際には（図１２のＥ２参照）、カム位置確定フラグは初期値「ＯＦＦ」であり、ガードカウンタがカウントアップして「２×逓倍数ｆ」となることから（図１２におけるｅ２の区間参照）、Ｓ５２０で「ＹＥＳ」と判定される。こうして、Ｓ５２０で「ＹＥＳ」と判定された場合、Ｓ５３０でガードカウンタ，基準カウンタおよびアングルカウンタそれぞれに初期値がセットされた後、Ｓ５４０でカム位置確定フラグに「ＯＮ」がセットされる。
【０１８２】
続いて、上記と同様、Ｓ５７０，Ｓ５９０，Ｓ６００を経た後、まだ今回の有効エッジは変化点Ｑ直前の変化点Ｐでないことから、Ｓ６１０〜Ｓ６３０全てで「ＮＯ」と判定されて、本カムエッジ割込処理が終了する。
【０１８３】
これ以降、有効エッジが変化点Ｑ直前の変化点Ｐとなるまで、Ｓ５１０〜Ｓ６３０が繰り返された後、有効エッジが変化点Ｑ直前の変化点Ｐとなったら（図１２のＥ３参照）、Ｓ６１０で「ＹＥＳ」と判定される。そうすると、Ｓ６１２でエッジ間時間が固定時間としてセットされ、Ｓ６１４でその固定時間が逓倍クロック基準時間として選択された後、Ｓ６００でのチェック結果に応じた値（４．７５×ｆ）がガードカウンタにセットされて（図１２におけるｅ３の区間参照）、本カムエッジ割込処理が終了する。
【０１８４】
このＳ６１４で逓倍クロック基準時間として固定時間が選択されるため、逓倍クロック生成部２４０は、それ以降、Ｓ６３４で固定時間が選択されるまでの間、固定時間に基づいて逓倍クロックを生成することとなる。
【０１８５】
この次に有効エッジが発生すると、その有効エッジは変化点Ｑであるため、Ｓ６２０にて「ＹＥＳ」と判定される。そうすると、Ｓ６２２でエッジ間時間を補正してなる値（エッジ間時間／（３／４）））が固定時間としてセットされ、Ｓ６２４でその固定時間が逓倍クロック基準時間として選択された後、Ｓ６００でのチェック結果に応じた値（５ｆ）がガードカウンタにセットされて（図１２におけるｅ３の区間参照）、本カムエッジ割込処理が終了する。
【０１８６】
そして、この次に有効エッジが発生すると、その有効エッジは変化点Ｑ直後の変化点Ｐであるため、Ｓ６３０で「ＹＥＳ」と判定される。そうすると、Ｓ６３２で逓倍クロック基準時間が修正され（図１２における逓倍クロック基準時間「Ｔ３＋Ｔ４」参照）、Ｓ６３４でエッジ間時間が逓倍クロック基準時間として選択された後（図１２におけるｅ４，ｅ５の区間参照）、本カムエッジ割込処理が終了する。
【０１８７】
このＳ６３４で逓倍クロック基準時間としてエッジ間時間が選択されるため、逓倍クロック生成部２４０は、それ以降、Ｓ６１４，Ｓ６２４で固定時間が選択されるまでの間、エッジ間計測部２２０から出力されるエッジ間時間に基づいて逓倍クロックを生成することとなる。
【０１８８】
その後、有効エッジが発生する毎に、上述と同様に各処理が行われた後、ガードカウンタが「気筒数×逓倍数ｆ（＝６×１２００＝７２００）」以上のカウント値となったら、Ｓ５５０で「ＹＥＳ」と判定され、Ｓ５６０でガードカウンタに「０」がセットされる。
【０１８９】
続いて、Ｓ５７０で「ＹＥＳ」と判定されて、Ｓ５８０で基準カウンタが許可モードに設定されるため、ｓ５６０でガードカウンタに「０」がセットされていても、基準カウンタによる上限値までのカウントが継続される（図１２におけるｅ５の区間参照）。
【０１９０】
この後は、上述したのと同様、ガードカウンタ「０」の状態で基準カウンタのカウントが継続され、その基準カウンタがクリアされた後（図１３におけるｅ５の区間参照）、変化点Ｑとなる直前の有効エッジが発生するまで、Ｓ５５０→Ｓ５７０→Ｓ５９０→Ｓ６００→Ｓ６１０→Ｓ６２０→Ｓ６３０が繰り返される（図１２におけるｅ６の区間参照）。
【０１９１】
これ以降、上述したのと同様に、Ｓ５５０でガードカウンタが「気筒数×ｆ」以上のカウント値となるまで、上述した処理が繰り返されることとなる（図１２におけるｅ７〜ｅ９の区間参照）。
（３）作用，効果
このように構成されたエンジン制御装置１によれば、クランク信号またはカム信号に基づいてアングルクロックを生成し、このアングルクロックのカウント値で特定されるクランク軸の回転位置に基づいて、エンジンの動作を制御することができる。
【０１９２】
また、この構成では、クランク信号またはカム信号において不規則領域の開始時に発生すべき信号レベルの変化が発生した以降（図７のＳ４００「ＹＥＳ」，図１０のＳ６１０「ＹＥＳ」）、逓倍クロックを生成する基となる逓倍クロック基準時間が「固定時間」に固定され（図７のＳ４１４，図１０のＳ６１４）、この所定の値に基づいてアングルクロックが生成されるようになる。
【０１９３】
その後、クランク信号またはカム信号において不規則領域の終了時に発生すべき信号レベルの変化が発生することにより（図７のＳ３１０「ＹＥＳ」，図１０のＳ６３０「ＹＥＳ」）、逓倍クロックを生成する基となる逓倍クロック基準時間が、クランク信号またはカム信号において信号レベルが変化する間隔を計測したエッジ間時間（計測値）に戻り（図７のＳ３７２，図１０のＳ６３４）、このエッジ間時間に基づいてアングルクロックが生成されるようになる。
【０１９４】
このように、クランク信号またはカム信号において不規則領域が開始された以降、この領域が終了して逓倍クロックを生成する基となる逓倍クロック基準時間が戻されるまでの間には、「固定時間」に基づいてアングルクロックが生成されることとなる。つまり、クランク信号またはカム信号において不規則領域が終了して逓倍クロック基準時間が戻されるまでは、その時点におけるエッジ間時間が規則領域におけるエッジ間時間に比べて相違していたとしても、そのような相違するエッジ間時間に基づくアングルクロックが生成されることはない。
【０１９５】
そのため、この「固定時間」を、不規則領域の終了時において想定される適切な値に設定しておくことにより、不規則領域が終了して逓倍クロック基準時間が戻されるまでの期間においても、所定の値に基づいて適切なアングルクロックを生成できるようになる。
【０１９６】
このようなアングルクロックであれば、規則領域における正規のエッジ間時間に基づいて生成したアングルクロックをカウントする場合に比べてそのカウントが遅れてしまうこともないため、そのカウント値に基づいてエンジンの動作状態を適切に特定できる結果、エンジンの制御を精度よく実施できるようになる。
【０１９７】
また、上記実施形態においては、図７のＳ４１４，図１０のＳ６１４，Ｓ６３４にて選択される固定時間として、図７のＳ４１４，図１０のＳ６１２，Ｓ６２２にて所定タイミングにおけるエッジ間計測部２２０によるエッジ間時間がセットされる。
【０１９８】
このとき固定時間としてセットされるエッジ間時間は、クランクエッジ割込処理を起動する契機となった有効エッジに基づいてエッジ間計測部２２０から出力されたエッジ間時間であり、これは、不規則領域の開始時におけるエッジ間時間である。
【０１９９】
不規則領域の開始時においてエッジ間計測部２２０により計測されたエッジ間時間は、その領域直前の規則領域での信号レベルの変化の間隔を計測したエッジ間時間であって、それ以前のエッジ間時間の中で最も不規則領域に近く、その不規則領域における信号レベルの変化を反映したものといえる。
【０２００】
そのため、上述のように、不規則領域の開始時においてエッジ間計測部２２０により計測されたエッジ間時間を固定時間としてセットすれば、この固定時間に基づいて、不規則領域における信号レベルの変化が反映されたアングルクロックを生成することができる。
【０２０１】
また、上記実施形態では、不規則領域の終了時に発生する変化であることが検出されたことに伴って逓倍クロック基準時間をエッジ間時間（計測値）に戻した際（図７のＳ３７２，図１０のＳ６３４）、そのエッジ間時間である逓倍クロック基準時間を不規則領域の期間に基づいて修正している（図７のＳ３８０，図１０のＳ６３４）。
【０２０２】
不規則領域の終了時に発生すべき信号レベルの変化が発生して逓倍クロック基準時間が戻された直後、逓倍クロック生成部２４０は、不規則領域におけるエッジ間時間に基づいてアングルクロックを生成することとなるが、そのエッジ間時間は、不規則領域において信号レベルが変化する間隔を計測したものであるため、規則領域におけるエッジ間時間とは異なっている恐れがある。
【０２０３】
この場合、逓倍クロック基準時間が戻された直後においては、そのまま上記エッジ間時間を逓倍数で割った値が１周期となるアングルクロックを生成してしまうと、規則領域における場合と同様にクランク軸が回転していても、そのエッジ間時間が規則領域におけるものとは異なっているために、アングルクロックとしての周期も異なったものとなってしまう。
【０２０４】
この場合、規則領域における場合と同様にクランク軸が回転しているにも拘らず、アングルクロックのカウントが、規則的な領域における場合に比べて遅れてしまう結果、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまう。
【０２０５】
ところが、上記実施形態では、不規則領域におけるエッジ間時間をそのまま用いるのではなく、これを不規則領域の期間に応じて修正してから逓倍数で割り、こうして得られた値が１周期となるアングルクロックを生成している。
【０２０６】
この場合、アングルクロックは、不規則領域におけるエッジ間時間をそのまま用いるのではなく、これを不規則領域の期間に応じて修正してから逓倍数で割り、こうして得られた値が１周期となる。そのため、このアングルクロックをカウントすれば、そのカウントが規則領域に比べて遅れてしまうことがなくなり、そのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【０２０７】
また、上記実施形態において、図７のＳ３８０では、不規則期間におけるエッジ間時間を、このエッジ間時間と、クランク信号の規則領域における有効エッジの間隔と不規則領域における有効エッジの間隔との比を示す値（１／３）と、の積算値に修正したうえ、これを逓倍クロック基準時間としてレジスタにセットしている。
【０２０８】
このように、不規則領域におけるエッジ間時間，および，規則領域の期間と不規則領域の期間との比（規則領域の期間／不規則領域の期間）を積算した値は、「不規則領域におけるエッジ間時間／規則期間におけるエッジ間時間＝不規則領域の期間／規則領域の期間」を満たすような「規則期間におけるエッジ間時間」を求めたものである。これは、不規則領域において規則領域と同じ期間だけ計測を継続した場合におけるエッジ間時間となるため、このような修正を行うことにより、そのエッジ間時間を規則領域におけるものと近似させることができる。
【０２０９】
また、上記実施形態においては、クランク信号が異常になると、アングルクロック生成部２００における各部に供給される信号がクランク信号からカム信号に切り替えられると共に（図６のＳ２４０）、逓倍クロックを生成するために用いられる逓倍数がカム信号用のものへとに変更される。
【０２１０】
これにより、エッジ間計測部２２０に計測されるエッジ間時間は、クランク信号において信号レベルが特定方向に変化するまでに要するクランク軸の回転角度（規則角度）に応じた値から、カム信号において信号レベルが特定方向に変化するまでに要するカム軸の回転角度（規則角度）に応じた値に変更される。そして、逓倍クロック生成部２４０により生成される逓倍クロックの周期についても、エッジ間時間をクランク信号用の逓倍数で割った値（以降、「第１逓倍数」という）からカム信号用の逓倍数（以降、「第２逓倍数」という）で割った値に変更される。
【０２１１】
ここで、「第２逓倍数」は、式「（カム軸における規則角度×第１逓倍数）／クランク軸における規則角度」から求められる値である。この式は、「カム軸における規則角度／第２逓倍数＝クランク軸における規則角度／第１逓倍数」が成立するような第２逓倍数を求める式といえ、このことは、アングルクロック生成部２００における各部に供給される信号および逓倍数の変化前後で、規則角度と逓倍数との比が変化しないことを意味する。
【０２１２】
つまり、逓倍クロック生成部２４０により生成される逓倍クロックの周期を、カム軸における規則角度に応じたエッジ間時間を第２逓倍数で割った値に変更しても、角度と逓倍数との比が変わらないため、実際の周期もその変更前後で変化しないことになる。逆にいえば、逓倍数を第２逓倍数に変更しても、逓倍クロック生成手段により生成される逓倍クロックの周期が変わらないようにしているということができる。
【０２１３】
このように、アングルカウンタを動作させるための逓倍クロックの周期が、動作信号および逓倍数の変更前後で変化しないため、その変更前後において処理手順に大幅な変更を加えることなく、カム信号に基づいてエンジンの制御を継続することができる。
【０２１４】
これにより、例えば、信号線の断線などのトラブルによりクランク信号からクランク軸の回転位置が特定できなくなり、適切なエンジンの制御が継続できなくなってしまうような異常が発生したとしても、カム信号を用いることでエンジンの制御を継続することができる。
【０２１５】
また、上記実施形態においては、カム信号の不規則領域中において特定方向への信号レベルの変化（変化点Ｑ）が発生した場合（図１０のＳ６２０）、逓倍クロックを生成する際に参照される逓倍クロック基準時間が、その時点において間隔計測手段により計測されたエッジ間時間を、その不規則領域中に発生する変化の該不規則領域全体における発生時期に応じた値で割ってなる値に固定される（図１０のＳ６２２）。
【０２１６】
ここで、「発生時期に応じた値」は、不規則領域中におけるエッジ間時間を、不規則領域において信号レベルの変化が発生するまでの期間と規則領域の期間との比（不規則領域において信号レベルの変化が発生するまでの期間／規則領域の期間）で割ったものである。
【０２１７】
このような比で割った値は、「不規則領域において信号レベルの変化が発生するまでのエッジ間時間／規則期間におけるエッジ間時間＝不規則領域において信号レベルの変化が発生するまでの期間／規則領域の期間」を満たすような「規則期間におけるエッジ間時間」を求めたものである。これは、不規則領域において信号レベルの変化が発生した以降、規則領域と同じ期間だけ計測を継続した場合におけるエッジ間時間となるため、このような補正を行うことにより、そのエッジ間時間を規則領域におけるものと近似させることができる。
【０２１８】
このように、不規則期間中におけるエッジ間時間であることを考慮したアングルクロックを生成できる結果、アングルクロックのカウント値に対応するクランク位置と、実際のクランク位置とが大きくズレてしまうことを防止することができる。
【０２１９】
また、図７のＳ３１０では、エッジ後経過角度計測部２５０から割込信号の入力があったことをもって、不規則領域の終了時に発生した有効エッジであると判定することができる。
【０２２０】
また、図７の４Ｓ４００では、アングルカウンタのカウント値に基づいて、不規則領域の開始時に発生した有効エッジであると判定することができる。
また、図１０のＳ６００では、第１，第２カム信号それぞれの信号レベルの組合せに基づいて、不規則領域を構成する有効エッジであることを判定することができる。
（４）変形例
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０２２１】
例えば、上記実施形態においては、図７のＳ４１４，図１０のＳ６１４，Ｓ６３４にて選択される固定時間として、図７のＳ４１４，図１０のＳ６１２，Ｓ６２２にて所定タイミングにおけるエッジ間時間がセットされるように構成されたものを例示した。しかし、ここで固定時間としてセットされる値については、このように都度求められた値でなくてもよく、不規則領域の終了時において想定される適切な値としてあらかじめ実験的または論理的に求めた値としてもよい。
【０２２２】
また、上記実施形態においては、正常時にクランク信号を用いてエンジンの動作を制御するように構成されたものを例示した。しかし、エンジンの動作を制御するに際しては、規則領域および不規則領域からなる信号であれば、クランク信号以外の信号を用いるように構成してもよい。
【０２２３】
また、上記実施形態では、図７のＳ３１０にて、エッジ後経過角度計測部２５０から割込信号の入力があったことをもって、不規則領域の終了時に発生した有効エッジであると判定するように構成されたものを例示した。しかし、不規則領域の終了時に発生した有効エッジを判定するための構成としては、別の構成を採用してもよい。例えば、アングルカウンタのカウント値が、不規則領域の終了時に発生する有効エッジに対応する値となっていることをもって、不規則領域の終了時に発生した有効エッジであると判定するように構成することが考えられる。
【０２２４】
また、上記実施形態においては、図７のＳ４００にて、アングルカウンタのカウント値に基づいて不規則領域の開始時に発生した有効エッジであると判定するように構成されたものを例示した。しかし、不規則領域の開始時に発生した有効エッジであると判定するための構成としては、別の構成を採用してもよい。
【０２２５】
また、上記実施形態においては、図１０のＳ６００にて、第１，第２カム信号それぞれの信号レベルの組合せに基づいて、不規則領域を構成する有効エッジであることを判定するように構成されたものを例示した。しかし、不規則領域を構成する有効エッジであることを判定するための構成としては、別の構成を採用してもよい。例えば、アングルカウンタのカウント値が、不規則領域中において発生する有効エッジに対応する値となっていることをもって、その変化が不規則領域を構成する有効エッジであると判定するように構成することが考えられる。
【０２２６】
また、上記実施形態においては、不規則領域の開始時におけるエッジ間時間を逓倍クロック基準時間として固定することにより（図７のＳ４１４，図１０のＳ６３４）、不規則領域の終了時に、この不規則領域におけるエッジ間時間に基づいてアングルクロックを生成するように構成されたものを例示した。
【０２２７】
ただ、このように逓倍クロック基準時間を不規則領域の開始時におけるエッジ間時間に固定する場合であっても、エンジンの動作状態が急激に変位していく過程においては、不規則領域の開始前後でも信号レベルの変化状況が大きく異なり、その開始時におけるエッジ間時間が、その不規則領域における信号レベルの変化を充分に反映しているとはいえなくなることも考えられる。
【０２２８】
このようなことを考慮すると、単に、逓倍クロック基準時間を不規則領域の開始時におけるエッジ間時間に固定するのではなく、このエッジ間時間をあらかじめ補正したものに固定することとしてもよい。
【０２２９】
具体的には、図７のＳ４００，図１０のＳ６１０，Ｓ６２０にて、不規則領域の開始時または不規則領域中の変化であることが検出された際に、同図Ｓ４１２，同図Ｓ６１２，Ｓ６２２により、その検出時点におけるエッジ間時間を所定の補正規則に基づいて補正し、こうして補正したエッジ間時間を逓倍クロック基準時間として固定する、といった構成が考えられる。なお、このような補正は、図７のＳ３８０，図１０のＳ６３２においても、不規則領域の終了時におけるエッジ間時間に基づいて同様に行うことが望ましい。
【０２３０】
この場合における「補正規則」については、不規則領域の開始時または不規則領域中におけるエッジ間時間を適切なものに補正できるのであれば、どのような規則であってもよい。
【０２３１】
例えば、不規則領域の開始時または不規則領域中の変化であることが検出された時点におけるエッジ間時間を、このエッジ間時間に所定の係数を積算した値に補正することが考えられる。
【０２３２】
このように構成すれば、不規則領域の開始時または不規則領域中におけるエッジ間時間を所定の係数が積算された値に補正し、この値を、逓倍クロック基準時間として固定することができる。
【０２３３】
この構成において、不規則領域の開始時または不規則期間中におけるエッジ間時間に積算する「所定の係数」としては、例えば、実験的または論理的に求めた係数や、不規則領域の開始時または不規則領域中の変化であることが検出された時点におけるパラメータに基づいて求められる係数とすればよい。
【０２３４】
また、上述した「補正規則」については、例えば、不規則領域の開始時または不規則領域よりも前におけるエッジ間時間に基づいて補正することが考えられる。具体的には、不規則領域の開始時または不規則領域中の変化であることが検出された時点におけるエッジ間時間を、その検出前におけるエッジ間時間に基づいて補正する、といった構成である。
【０２３５】
このように構成すれば、不規則領域の開始時または終了時におけるエッジ間時間をその開始前におけるエッジ間時間に基づいて補正し、この値に、逓倍クロック生成手段が逓倍クロックを生成する際に参照する逓倍クロック基準時間とすることができる。
【０２３６】
この構成における具体的な補正方法としては、例えば、不規則領域の開始時におけるエッジ間時間を、そのエッジ間時間に、その直前におけるエッジ間時間に１未満の係数を積算した値が加算された値に補正することが考えられる。
【０２３７】
エンジンの動作状態が急激に変化していく過程においては、クランク信号，カム信号が不規則領域に至る以前の規則領域においても信号レベルの変化が急なものとなっているはずであり、この傾向は、不規則領域の開始前におけるエッジ間時間にも現れているといえる。
【０２３８】
そのため、上述のように、不規則領域の開始時におけるエッジ間時間を、その前におけるエッジ間時間に基づいて補正すれば、エンジンの動作状態が急激に変化していく過程においても、その影響を考慮した適切なアングルクロックを生成することができるようになる。
【０２３９】
ここで、図７のＳ４１２において、不規則領域の開始時におけるエッジ間時間（ｉ）を１５０とし、その直前におけるエッジ間時間（ｉ―１）を１００として、エッジ間時間（ｉ）を、この両エッジ間時間との関係で定めた下記の式１で求められる値（１７５）に補正した場合におけるタイミングチャートを図１３に示す。
【０２４０】
なお、このタイミングチャートでは、図７のＳ３８０において、不規則領域の終了時におけるエッジ間時間（ｊ）を６００とし、その直前におけるエッジ間時間（ｊ−１）を１５０とした場合に、逓倍クロック基準時間を下記の式２で求められる値（２２５）に補正した状態となっている。
【０２４１】
・エッジ間時間（ｉ）×（エッジ間時間（ｉ）−エッジ間時間（ｉ−１））／２  …  （式１）
・（エッジ間時間（ｊ）／ｋ）＋（エッジ間時間（ｊ）／ｋ−エッジ間時間（ｊ−１））／２  …（式２）
また、図１０のＳ６１２において、不規則領域の開始時におけるエッジ間時間（ｉ）を５００とし、その直前におけるエッジ間時間（ｉ−１）を４００とし、更にその直前におけるエッジ間時間（ｉ−２）を３００として、エッジ間時間（ｉ）を、これらエッジ間時間の関係で定めた下記の式３で求められる値（５２０）に補正すると共に、図１０のＳ６２２において、不規則領域中におけるエッジ間時間（ｊ）を４２０とし、その直前におけるエッジ間時間（ｊ−１）を５００として、エッジ間時間（ｊ）を、両エッジ間時間の関係，および，不規則領域中に発生する変化の該不規則領域全体における発生時期に基づいて定めた下記の式４で求められる値（５７２）に補正した場合のタイミングチャートを図１４に示す。
【０２４２】
なお、このタイミングチャートでは、図１０のＳ６３２において、不規則領域の終了時におけるエッジ間時間（ｋ）を１９０とし、その直前におけるエッジ間時間（ｋ−１）を４２０とし、更にその直前におけるエッジ間時間（ｋ−２）を５００として、逓倍クロック基準時間を、これらエッジ間時間の関係で定めた下記の式５で求められる値（６６５）に補正した状態となっている。
【０２４３】
・エッジ間時間（ｉ）＋（エッジ間時間（ｉ−１）−エッジ間時間（ｉ−２））／５  …  （式３）
・（エッジ間時間（ｊ）／（３／４））＋（（エッジ間時間（ｊ）／（３／４））−エッジ間時間（ｊ−１））／５  …（式４）
・（エッジ間時間（ｋ）＋エッジ間時間（ｋ−１））＋（（エッジ間時間（ｋ）＋エッジ間時間（ｋ−１））−エッジ間時間（ｋ−２））／５  …（式５）
（５）本発明との対応関係
以上説明した実施形態において、エッジ間計測部２２０が本発明における間隔計測手段であり、逓倍クロック生成部２４０が本発明における逓倍クロック生成手段であり、アングルクロック部２６０が本発明における動作カウント手段である。
【０２４４】
また、クランク信号およびカム信号が本発明における動作信号であり、クランク信号用の逓倍数ｆが本発明における第１逓倍数であり、逓倍クロック基準時間が本発明における逓倍クロック基準時間である。
【０２４５】
また、図５のＳ１１０〜Ｓ１７０が本発明における異常判定手段であり、図６のＳ２２０，Ｓ２４０が本発明における信号供給手段である。
また、図７のＳ４００が本発明における不規則開始検出手段であり、同図Ｓ３１０が本発明における不規則終了検出手段であり、同図Ｓ４１４が本発明における基準固定手段であり、同図Ｓ３７２が本発明における基準復帰手段であり、同図Ｓ３８０が本発明における第１エッジ間時間修正手段であり、同図Ｓ４１２（図１３の変形例に対応する処理）が本発明における基準補正手段である。
【０２４６】
また、図１０の６１０が本発明における不規則開始検出手段であり、同図Ｓ６３０が本発明における不規則終了検出手段であり、同図Ｓ６１４，Ｓ６２４が本発明における基準固定手段であり、同図Ｓ６３４が本発明における基準復帰手段であり、同図Ｓ６３２が本発明における第２エッジ間時間修正手段であり、同図Ｓ６２０が本発明における不規則中検出手段であり、同図Ｓ６１２，Ｓ６２２（図１３，図１４に対応する変形例）が本発明における基準補正手段である。
【図面の簡単な説明】
【０２４７】
【図１】エンジン制御装置の概略構成を表す構成図
【図２】アングルクロック生成部の構成を示すブロック図
【図３】エンジンの制御に利用される各信号の波形を示す図
【図４】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート
【図５】入力信号診断処理を示すフローチャート
【図６】時間同期タスクを示すフローチャート
【図７】クランクエッジ割込処理を示すフローチャート
【図８】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート（クランクエッジ割込処理その１）
【図９】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート（クランクエッジ割込処理その２）
【図１０】カムエッジ割込処理を示すフローチャート
【図１１】第１，第２カム信号における信号レベルの組み合わせと、各カウンタにセットすべき初期値との関係を示す表
【図１２】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート（カムエッジ割込処理）
【図１３】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート（クランクエッジ割込処理の変形例）
【図１４】入力信号に有効エッジが発生することに伴う各パラメータの変化状態を示すタイミングチャート（カムエッジ割込処理の変形例）
【符号の説明】
【０２４８】
１…エンジン制御装置、１０…入力回路、２０…出力回路、３０…マイコン、１００…ＣＰＵ、２００…アングルクロック生成部、２１０…入力選択部、２２０…エッジ間計測部、２３０…基準時間選択部、２４０…逓倍クロック生成部、２５０…エッジ後経過角度計測部、２６０…アングルクロック部、３００…タイマ出力部、４００…フラッシュＲＯＭ、５００…ＲＡＭ。
【図１】
2008190344.tif 000003
【図２】
2008190344.tif 000004
【図３】
2008190344.tif 000005
【図４】
2008190344.tif 000006
【図５】
2008190344.tif 000007
【図６】
2008190344.tif 000008
【図７】
2008190344.tif 000009
【図８】
2008190344.tif 000010
【図９】
2008190344.tif 000011
【図１０】
2008190344.tif 000012
【図１１】
2008190344.tif 000013
【図１２】
2008190344.tif 000014
【図１３】
2008190344.tif 000015
【図１４】
2008190344.tif 000016