(57)【要約】【課題】  エンジン制御装置においてクランク位置を簡単な処理で正確に特定する。【解決手段】  １０°ＣＡ毎に立ち上がりエッジが生じるクランク軸センサからのＮＥ信号と、カム軸の回転に応じてレベル変化するカム軸センサからのＧ信号とに基づいて、クランク位置を特定するエンジン制御装置において、Ｇ信号の１サイクル分のレベル変化パターンは、「６０°ＣＡ分：ハイ→１２０°ＣＡ分：ロー→１８０°ＣＡ分：ハイ→６０°ＣＡ分：ロー→１２０°ＣＡ分：ハイ→１８０°ＣＡ分：ロー」というように、同じレベルで同じクランク角度分の幅を持つ部分が複数存在しないようになっている。そして、このエンジン制御装置では、Ｇ信号が前回レベル変化してから今回レベル変化するまでの該Ｇ信号の１パルス期間中（Ｇ信号のエッジ間）にＮＥ信号に生じた立ち上がりエッジの数と、その１パルス期間におけるＧ信号のレベルとから、クランク位置を特定する。【選択図】  図２
2005264862.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸の回転に応じて、該クランク軸が所定角度回転する毎にパルスエッジ（以下、有効エッジという）が発生するクランク軸回転信号を出力する第１の信号発生手段と、
前記クランク軸の回転に対し１／２の比率で回転するカム軸の回転に応じて、ハイレベルとローレベルとに変化するカム軸回転信号を出力する第２の信号発生手段と、
を備え、前記クランク軸回転信号と前記カム軸回転信号とに基づいて、前記エンジンの１サイクルにおける前記クランク軸の回転位置であるクランク位置を特定するエンジン制御装置であって、
前記第２の信号発生手段から出力される前記カム軸回転信号は、前記カム軸が１回転する１サイクル分のレベル変化パターンにおいて、同じレベルで且つ同じクランク角度分の幅を持つ部分が複数存在しないようになっており、
当該エンジン制御装置は、前記カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中に前記クランク軸回転信号に発生した前記有効エッジの数と、その１パルス期間における前記カム軸回転信号のレベルとに基づいて、クランク位置を特定するクランク位置特定手段を備えていること、
を特徴とするエンジン制御装置。
【請求項２】
エンジンのクランク軸の回転に応じて、該クランク軸が所定角度回転する毎にパルスエッジ（以下、有効エッジという）が発生するクランク軸回転信号を出力する第１の信号発生手段と、
前記クランク軸の回転に対し１／２の比率で回転するカム軸の回転に応じて、ハイレベルとローレベルとに変化するカム軸回転信号を出力する第２の信号発生手段と、
を備え、前記クランク軸回転信号と前記カム軸回転信号とに基づいて、前記エンジンの１サイクルにおける前記クランク軸の回転位置であるクランク位置を特定するエンジン制御装置であって、
前記第２の信号発生手段から出力される前記カム軸回転信号は、前記カム軸が１回転する１サイクル分のレベル変化パターンにおいて、同じクランク角度分の幅を持つ部分が複数存在しないようになっており、
当該エンジン制御装置は、前記カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中に前記クランク軸回転信号に発生した前記有効エッジの数に基づいて、クランク位置を特定するクランク位置特定手段を備えていること、
を特徴とするエンジン制御装置。
【請求項３】
請求項１又は請求項２に記載のエンジン制御装置において、
前記第１の信号発生手段から出力される前記クランク軸回転信号には、前記クランク軸の回転位置が基準位置に来た時に、前記有効エッジが所定数欠落した欠歯部が現れるようになっていると共に、
前記第２の信号発生手段から出力される前記カム軸回転信号は、前記クランク軸回転信号に前記欠歯部が現れるタイミングでは、その各タイミング毎に交互に異なったレベルとなり、
更に、当該エンジン制御装置は、
前記クランク軸回転信号に発生する前記有効エッジの間隔（以下、パルス間隔という）を計測するパルス間隔計測手段と、
該パルス間隔計測手段により計測されるパルス間隔に基づいて、前記クランク軸回転信号に前記欠歯部が現れたか否かを判定する欠歯判定手段と、
該欠歯判定手段により前記欠歯部が現れたと判定されると、そのときの前記カム軸回転信号のレベルに基づいてクランク位置を特定する欠歯判定時特定手段と、
を備えていることを特徴とするエンジン制御装置。
【請求項４】
請求項３に記載のエンジン制御装置において、
前記クランク軸回転信号の欠歯部は、該欠歯部が現れる直前の前記カム軸回転信号のレベル変化タイミングからみて前記クランク軸回転信号に一定数目の有効エッジが発生する時点からその次の有効エッジが発生するまでの期間となっており、
更に、当該エンジン制御装置は、
前記カム軸回転信号がレベル変化してから前記クランク軸回転信号に発生した前記有効エッジの数を計数する計数手段と、
前記欠歯判定手段により前記欠歯部が現れたと判定されると、その判定時の前に前記カム軸回転信号にレベル変化が生じていたか否かを判定するレベル変化有無判定手段と、
該レベル変化有無判定手段により肯定判定されると、その時点で前記計数手段により計数されている前記有効エッジの数に基づいて、前記欠歯判定手段の判定結果が正しいか否かを判定し、正しくないと判定したならば前記欠歯判定時特定手段が作動するのを禁止する誤作動防止手段と、
を備えていることを特徴とするエンジン制御装置。
【請求項５】
請求項３又は請求項４に記載のエンジン制御装置において、
前記クランク位置特定手段によってクランク位置が特定された後は、前記欠歯判定時特定手段を作動させないように構成されていること、
を特徴とするエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンを制御するエンジン制御装置に関し、特に、エンジンの１サイクルにおけるクランク軸の回転位置であるクランク位置を特定する技術に関するものである。
【背景技術】
【０００２】
従来より、エンジン制御装置では、エンジンのクランク軸の回転に応じてクランク軸センサから出力されるクランク軸回転信号（一般にＮＥ信号とも呼ばれる）と、クランク軸の回転に対し１／２の比率で回転するエンジンのカム軸の回転に応じてカム軸センサから出力されるカム軸回転信号（一般にＧ信号とも呼ばれる）とから、クランク位置を特定して、エンジンに対する点火や燃料噴射などを制御している（例えば、特許文献１参照）。
【０００３】
具体例を挙げて説明すると、まず、クランク軸センサから出力されるクランク軸回転信号には、クランク軸が所定角度回転する毎にパルスエッジが発生すると共に、クランク軸の回転位置が予め設定された基準位置に来た時には、パルスエッジが所定数（例えば２個）欠落した欠歯部が現れるようになっている。
【０００４】
また、カム軸センサから出力されるカム軸回転信号は、カム軸の回転に応じてハイレベルとローレベルとに変化すると共に、クランク軸回転信号に欠歯部が現れるタイミングでは、その各タイミング毎に交互に異なったレベルとなる。尚、この例では、カム軸センサが、磁気抵抗素子（ＭＲＥ）式のセンサであるものとしている。
【０００５】
そして、エンジン制御装置では、クランク軸回転信号に欠歯部が現れたか否かを判定する欠歯判定を行い、その欠歯判定で欠歯部が現れたと判定したときのカム軸回転信号のレベルから、クランク位置を特定する。例えば、カム軸回転信号がハイレベルならば、現在のクランク位置が特定のクランク位置（ここではＸ°ＣＡとする）であると認識し、カム軸回転信号がローレベルならば、現在のクランク位置がＸ°ＣＡから３６０°ＣＡだけ進んだクランク位置であると認識する。尚、「ＣＡ」はクランクアングル（クランク角度）を意味している。
【０００６】
また一般に、この種のエンジン制御装置では、クランク軸回転信号のパルス間隔（即ち、クランク軸回転信号に上記所定角度毎のパルスエッジが発生する間隔）を計測すると共に、今回測定したパルス間隔Ｔ１と前回計測したパルス間隔Ｔ０とを比較して、例えば、Ｔ１とＴ０との比（＝Ｔ１／Ｔ０）が所定の判定比以上である、といった判定条件が成立したならば、クランク軸回転信号に欠歯部が現れたと判定する。
【特許文献１】特開２００１−９０６００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記従来のエンジン制御装置では、例えば下記の（１）や（２）の原因により、本当はクランク軸回転信号に欠歯部が現れていないのに、欠歯部が現れたと誤判定してしまう可能性がある。そして、欠歯部が現れたと誤判定すると、正しいクランク位置を認識することができなくなるため、適切でないタイミングで点火や燃料噴射を実施してしまうこととなる。
【０００８】
（１）エンジンの何れかの気筒が圧縮行程の上死点（いわゆるＴＤＣ）付近になったことなどによりクランク軸の回転速度が一時的に変動して、クランク軸回転信号の各パルス間隔のうちの何れかが間延びし、その結果、クランク軸回転信号に欠歯部が現れるタイミングではないのに上記の判定条件が成立して、欠歯部が現れたと誤判定してしまう。
【０００９】
（２）エンジン回転数（クランク軸の回転速度）が非常に低くて、クランク軸回転信号のパルス間隔の計測値がオーバーフローし（即ち、計測値のビット数が予め想定されたビット数をオーバーし）、その結果、パルス間隔の計測値自体が不正確なものになって、欠歯部が現れたと誤判定してしまう。
【００１０】
特に、上記（１）や（２）の原因による欠歯部の誤判定は、エンジンの始動時に連続して起こり易く、また、従来のエンジン制御装置では、欠歯部が現れたか否かの判定結果のみに依存してクランク位置を特定するようにしている。よって、従来のエンジン制御装置では、エンジンの始動時において、正確なクランク位置を認識するまでに時間がかかってしまう可能性がある。
【００１１】
そこで、上記（１）の原因による誤判定を回避するために、欠歯判定で比較するパルス間隔の数を２つから例えば５つといった具合に増やすことも考えられるが、そのようにすると、処理が複雑になってしまう上に、欠歯部が現れたか否かを判定するための判定比などの設定も難しくなる。また、上記（２）の原因による誤判定を回避するために、エンジン回転数が所定値以下の場合には、欠歯判定を行わないようにしたり、欠歯判定による判定結果を無効にしたりすることが考えられるが、そのようにすると、エンジンの低回転時にクランク位置を特定することができなくなってしまう。
【００１２】
本発明は、こうした問題に鑑みなされたものであり、エンジン制御装置においてクランク位置を簡単な処理で正確に特定できるようにすることを目的としている。
【課題を解決するための手段】
【００１３】
上記目的を達成するためになされた請求項１のエンジン制御装置では、第１の信号発生手段が、エンジンのクランク軸の回転に応じてクランク軸回転信号を出力する。そして、そのクランク軸回転信号には、クランク軸が所定角度回転する毎にパルスエッジ（以下、この所定角度毎のパルスエッジを有効エッジという）が発生する。
【００１４】
また、第２の信号発生手段が、クランク軸の回転に対し１／２の比率で回転するエンジンのカム軸の回転に応じて、ハイレベルとローレベルとに変化するカム軸回転信号を出力する。そして特に、そのカム軸回転信号は、カム軸が１回転する１サイクル分のレベル変化パターンにおいて、同じレベルで且つ同じクランク角度分の幅を持つ部分が複数存在しないようになっている。
【００１５】
このため、カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中に、クランク軸回転信号に有効エッジが何回発生したかと、その１パルス期間におけるカム軸回転信号のレベルがハイ又はローの何れであるかとにより、カム軸の回転位置が分かり、エンジンの１サイクルにおけるクランク軸の回転位置であるクランク位置が分かる。
【００１６】
そこで、このエンジン制御装置では、クランク位置特定手段が、カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中にクランク軸回転信号に発生した有効エッジの数と、その１パルス期間におけるカム軸回転信号のレベルとに基づいて、クランク位置を特定するようになっている。
【００１７】
このような請求項１のエンジン制御装置によれば、エンジンの回転変動や回転数に拘わらず、クランク位置を簡単な処理で正確に特定することができる。
つまり、従来の装置で必須であったクランク軸回転信号の欠歯判定を特に行わなくても、エンジン始動時においてクランキングが開始されてからカム軸回転信号が２回レベル変化すれば、クランク位置特定手段によりクランク位置を特定することができ、前述した（１）や（２）の原因によって正しいクランク位置が認識できなくなることを回避することができるからである。
【００１８】
次に、請求項２のエンジン制御装置では、請求項１のエンジン制御装置と同様の第１及び第２の信号発生手段を備えているが、第２の信号発生手段から出力されるカム軸回転信号は、カム軸が１回転する１サイクル分のレベル変化パターンにおいて、同じクランク角度分の幅を持つ部分がレベルに拘わらず複数存在しないようになっている。
【００１９】
このため、カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中に、クランク軸回転信号に有効エッジが何回発生したかにより、カム軸の回転位置が分かり、クランク位置が分かる。
【００２０】
そこで、請求項２のエンジン制御装置では、クランク位置特定手段が、カム軸回転信号が前回レベル変化してから今回レベル変化するまでの該カム軸回転信号の１パルス期間中にクランク軸回転信号に発生した有効エッジの数に基づいて、クランク位置を特定するようになっている。
【００２１】
そして、このような請求項２のエンジン制御装置によっても、請求項１のエンジン制御装置と同様の効果を得ることができる。
尚、請求項１のエンジン制御装置では、カム軸回転信号の１サイクル分のレベル変化パターンとして、レベルが異なりさえすれば、同じクランク角度分の幅を持つ部分が２つあっても良いため（つまり、同じクランク角度分の幅を持つハイの部分とローの部分があっても良いため）、そのカム軸回転信号のレベル変化パターン（延いては、第２の信号発生手段の構成）を、請求項２のエンジン制御装置よりも単純なものにし易い。よって、その点においては、請求項２のエンジン制御装置よりも請求項１のエンジン制御装置の方が有利である。
【００２２】
次に、請求項３のエンジン制御装置では、請求項１又は２のエンジン制御装置において、第１の信号発生手段から出力されるクランク軸回転信号には、クランク軸の回転位置が基準位置に来た時に、前記有効エッジが所定数欠落した欠歯部が現れるようになっている。また、第２の信号発生手段から出力されるカム軸回転信号は、クランク軸回転信号に欠歯部が現れるタイミングでは、その各タイミング毎に交互に異なったレベルとなる。
【００２３】
そして、このエンジン制御装置では、パルス間隔計測手段が、クランク軸回転信号に発生する前記有効エッジの間隔（以下、パルス間隔という）を計測し、欠歯判定手段が、パルス間隔計測手段により計測されるパルス間隔に基づいて、クランク軸回転信号に欠歯部が現れたか否かを判定し、その欠歯判定手段によって欠歯部が現れたと判定されると、欠歯判定時特定手段が、そのときのカム軸回転信号のレベルに基づいてクランク位置を特定する。
【００２４】
このような請求項３のエンジン制御装置によれば、エンジンが始動のためにクランキングされるエンジン始動時において、もし、カム軸回転信号が２回レベル変化するよりも先に、クランク軸回転信号に欠歯部が現れたならば、その時点で欠歯判定時特定手段によりクランク位置が特定されることとなる。
【００２５】
よって、エンジン始動時にクランク位置を早期に特定し易くなり、エンジンの始動性を向上させることができる。クランク位置を早く特定できるほど、点火や燃料噴射などの制御を早期に開始することができるからである。
【００２６】
尚、欠歯判定手段は、前述した（１）や（２）の原因により、本当はクランク軸回転信号に欠歯部が現れていないのに欠歯部が現れたと誤判定してしまう可能性があり、もし、そのような誤判定が生じると、欠歯判定時特定手段によって特定されるクランク位置は正しいものとはならないが、カム軸回転信号が２回レベル変化しさえすれば、クランク位置特定手段の方で確実に正しいクランク位置が特定されることとなり、大きな問題とはならない。
【００２７】
次に、請求項４のエンジン制御装置では、請求項３のエンジン制御装置において、クランク軸回転信号の欠歯部は、該欠歯部が現れる直前のカム軸回転信号のレベル変化タイミングからみてクランク軸回転信号に一定数目の有効エッジが発生する時点からその次の有効エッジが発生するまでの期間となっている。
【００２８】
更に、このエンジン制御装置では、カム軸回転信号がレベル変化してからクランク軸回転信号に発生した有効エッジの数を計数手段が計数し、また、レベル変化有無判定手段が、欠歯判定手段によりクランク軸回転信号に欠歯部が現れたと判定されると、その判定時の前にカム軸回転信号にレベル変化が生じていたか否かを判定する。
【００２９】
そして、レベル変化有無判定手段により肯定判定されると（つまり、欠歯判定手段により欠歯部が現れたと判定された時点の前にカム軸回転信号にレベル変化が生じていたと判定されると）、誤動作防止手段が、その時点で計数手段により計数されている前記有効エッジの数に基づいて、欠歯判定手段の判定結果が正しいか否かを判定し、正しくないと判定したならば欠歯判定時特定手段が作動するのを禁止する。
【００３０】
具体的には、カム軸回転信号にレベル変化が生じてから、クランク軸回転信号に欠歯部が現れて、該欠歯部が現れたことを欠歯判定手段が正しく判定した場合に、その判定時点で計数手段により計数されているべき有効エッジの数を、正常数とすると、誤動作防止手段は、計数手段により計数されている有効エッジの数が上記正常数でなければ、欠歯判定手段の判定結果が正しくない（欠歯判定手段が誤判定した）と判定するように構成することができる。
【００３１】
つまり、請求項４のエンジン制御装置では、欠歯判定手段によってクランク軸回転信号に欠歯部が現れたと判定されても、その判定タイミングが、それの直前のカム軸回転信号のレベル変化タイミングからみて正常なタイミングでなければ、今回の欠歯判定手段による判定結果は誤判定であるとして、欠歯判定時特定手段がクランク位置を特定するのを禁止するようにしている。
【００３２】
このような請求項４のエンジン制御装置によれば、エンジン始動時にクランク位置を早期に特定することと、クランク位置を正確に特定することとを、高い次元で両立させることができる。
【００３３】
次に、請求項５のエンジン制御装置では、請求項３又は４のエンジン制御装置において、クランク位置特定手段によってクランク位置が特定された後は、欠歯判定時特定手段を作動させないようになっている。
【００３４】
このようなエンジン制御装置では、エンジン始動時において、カム軸回転信号が２回レベル変化するよりも先に、クランク軸回転信号に欠歯部が現れた場合にだけ、欠歯判定時特定手段によりクランク位置が特定され、それ以外の場合には、クランク位置特定手段によってクランク位置が特定されることとなる。よって、欠歯判定手段による判定結果を利用してクランク位置を特定する機会を最小限にすることができ、延いては、クランク位置を誤認識してしまう可能性を最小限することができる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明が適用された実施形態のエンジン制御装置について、図面を用いて説明する。尚、本実施形態のエンジン制御装置は、例えばＶ型８気筒の４ストローク１サイクルエンジン（いわゆる４サイクルエンジン）を制御するものである。
【００３６】
まず、図１は、実施形態のエンジン制御装置の構成を表す構成図であり、図２は、クランク位置を特定するための信号及び動作を表すタイムチャートである。
図１に示すように、本実施形態のエンジン制御装置は、マイコン（マイクロコンピュータ）１、入力回路３，５，７、Ａ／Ｄ変換器９、及び出力回路１１等を備えた電子制御ユニット（以下、ＥＣＵという）１３を中心に構成されている。
【００３７】
そして、エンジンに取り付けられたクランク軸センサ１５からのクランク軸回転信号（以下、ＮＥ信号という）が、入力回路３を介してマイコン１に入力され、また、エンジンに取り付けられたカム軸センサ１７からのカム軸回転信号（以下、Ｇ信号という）が、入力回路５を介してマイコン１に入力される。
【００３８】
ここで、クランク軸センサ１５は、第１の信号発生手段に相当するものであり、エンジンのクランク軸１９に固定されたロータ１５ａと、そのロータ１５ａの外周に対向して設けられ、該ロータ１５ａの外周に所定角度（本実施形態では１０°）毎の間隔で形成された歯２１を検出してパルスを出力する電磁ピックアップ式やホールＩＣ式等の信号出力部１５ｂとからなる。そして、上記ロータ１５ａの外周には、歯２１が２個欠損した歯欠損部２３が１つ設けられている。
【００３９】
このため、クランク軸センサ１５（詳しくは、その信号出力部１５ｂ）から入力回路３を介してマイコン１に入力されるＮＥ信号は、図２に示すように、クランク軸１９が１０°回転する毎（１０°ＣＡ毎）にローレベル→ハイレベル→ローレベルといった具合にパルス状に変化すると共に、クランク軸１９の回転位置が、上記ロータ１５ａの歯欠損部２３が信号出力部１５ｂに対向することとなる基準位置に来た時には、立ち上がりエッジの間隔が３倍長くなる。よって、ＮＥ信号には、１０°ＣＡ毎に有効エッジとしての立ち上がりエッジが発生すると共に、クランク軸１９の回転位置が基準位置に来ると、立ち上がりエッジが２個欠落した欠歯部（図２において「欠歯」と記した部分）が現れることとなる。尚、一般には、ロータ１５ａの歯欠損部２３も、“欠歯部”或いは単に“欠歯”と呼ばれることがある。また、ＮＥ信号の欠歯部は、“欠歯信号”或いは単に“欠歯”と呼ばれることもある。
【００４０】
また、カム軸センサ１７は、第２の信号発生手段に相当するものであり、クランク軸１９の回転に対し１／２の比率で回転するエンジンのカム軸２５に固定されたロータ１７ａと、そのロータ１７ａの外周に対向して設けられ、該ロータ１７ａの外周に形成された歯２７による凹凸に応じて、ハイレベルとローレベルとに変化するＧ信号を出力する磁気抵抗素子（ＭＲＥ）式の信号出力部１７ｂとからなる。
【００４１】
そして、上記ロータ１７ａの外周には、その外周の形状が図１における反時計回り方向の順に「３０°分：凸→６０°分：凹→９０°分：凸→３０°分：凹→６０°分：凸→９０°分：凹」となるように、歯２７が形成されている。
【００４２】
そして更に、信号出力部１７ｂは、該信号出力部１７ｂに対向するロータ１７ａの外周が凸の場合に、Ｇ信号をハイレベルで出力し、逆にロータ１７ａの外周が凹の場合に、Ｇ信号をローレベルで出力する。また、カム軸２５及びロータ１７ａは、図１における時計回り方向に回転するようになっている。
【００４３】
このため、カム軸センサ１７（詳しくは、その信号出力部１７ｂ）から入力回路５を介してマイコン１に入力されるＧ信号の１サイクル分（カム軸２５の１回転分であり、クランク軸１９の２回転分）のレベル変化パターンは、図２に示すように、「６０°ＣＡ分：ハイ→１２０°ＣＡ分：ロー→１８０°ＣＡ分：ハイ→６０°ＣＡ分：ロー→１２０°ＣＡ分：ハイ→１８０°ＣＡ分：ロー」というように、同じレベルで且つ同じクランク角度分の幅を持つ部分が複数存在しないパターンとなる。
【００４４】
また、クランク軸センサ１５とカム軸センサ１７は、図２に示すように、Ｇ信号が、ＮＥ信号に欠歯部が現れるタイミングにて、その各タイミング毎に交互に異なったレベルとなるように構成されている。そして更に、ＮＥ信号の欠歯部は、該欠歯部が現れる直前のＧ信号のレベル変化タイミングからみてＮＥ信号に６発目の立ち上がりエッジが発生する時点からその次の立ち上がりエッジが発生するまでの３０°ＣＡ分の期間となっている。
【００４５】
具体的には、図２に示すように、ＮＥ信号には、０〜７２０°ＣＡの１サイクル分のクランク位置のうち、２１０°ＣＡ〜２４０°ＣＡの期間であって、Ｇ信号が「１８０°ＣＡ分：ハイ」の状態になっている時と、５７０°ＣＡ〜６００°ＣＡの期間であって、Ｇ信号が「１８０°ＣＡ分：ロー」の状態になっている時に、欠歯部が現れるようになっている。そして更に、その欠歯部は、Ｇ信号が「１２０°ＣＡ分：ロー」の状態から「１８０°ＣＡ分：ハイ」の状態にレベル変化する立ち上がりタイミングと、Ｇ信号が「１２０°ＣＡ分：ハイ」の状態から「１８０°ＣＡ分：ロー」の状態にレベル変化する立ち下がりタイミングとの各々からみて、ＮＥ信号の６回目の立ち上がりエッジから７回目の立ち上がりエッジまでの期間となっている。
【００４６】
一方、ＥＣＵ１３内のマイコン１には、エンジンを始動させる際にオンされるスタータスイッチや、アクセルペダルが全閉の時にオンされるアイドルスイッチなどからの各種スイッチ信号が、入力回路７を介して入力される。また、マイコン１には、吸入空気量を検出するエアフロメータや、エンジンの冷却水温を検出する水温センサなどからの各種センサ信号が、Ａ／Ｄ変換器９を介して入力される。
【００４７】
そして、マイコン１は、上記ＮＥ信号とＧ信号とに基づいて、クランク位置を特定して認識し、その認識したクランク位置と、上記各種スイッチ信号及び各種センサ信号から取得する情報とに基づいて、エンジンの最適な点火時期や燃料噴射時期及び噴射量などを演算する。そして更に、その演算結果に基づき、出力回路１１を介して各気筒の燃料噴射弁や点火コイルなどを駆動する。
【００４８】
次に、ＥＣＵ１３のマイコン１がＮＥ信号とＧ信号とからクランク位置を特定して認識するために実行する処理について、図３及び図４を用いて説明する。
まず図３は、ＮＥ信号に立ち上がりエッジが発生する毎に実行される割り込み処理を表すフローチャートである。
【００４９】
そして、マイコン１が図３の割り込み処理の実行を開始すると、まずＳ１１０にて、当該割り込み処理を前回開始した時刻から今回開始した時刻までの時間を算出し、その算出した時間を、ＮＥ信号のパルス間隔Ｔ１として記憶する。
【００５０】
尚、車両のイグニッションスイッチがオンされてＥＣＵ１３が動作を開始してからマイコン１が始めて本割り込み処理を実行した場合、即ち、スタータスイッチのオンに伴いクランキングが開始されてＮＥ信号に始めて立ち上がりエッジが発生した場合、Ｔ１は初期値としての最大値に設定される。
【００５１】
次に、Ｓ１２０にて、当該割り込み処理を前回実行してから今回開始するまでの間にＧ信号にエッジが発生したか否かと発生したエッジの種類とを表す内部レジスタ内のＧ信号エッジ情報を、ＧＥＤＧという記憶部に記憶する。尚、マイコン１には、Ｇ信号に立ち上がりエッジが生じると、上記Ｇ信号エッジ情報を“１”にし、Ｇ信号に立ち下がりエッジが生じると、上記Ｇ信号エッジ情報を“２”にし、Ｇ信号にエッジが生じなければ、上記Ｇ信号エッジ情報を初期値である“０”のままにする、といったエッジ検出ハードウェアが備えられており、Ｓ１２０では、そのエッジ検出ハードウェアによって設定されているＧ信号エッジ情報をＧＥＤＧに記憶する。また、Ｇ信号エッジ情報は、当該割り込み処理を終了する直前の後述するＳ２６０にて、エッジ無しを示す“０”に初期化される。
【００５２】
次に、Ｓ１３０にて、Ｇ信号にエッジが生じてから（換言すれば、Ｇ信号がレベル変化してから）ＮＥ信号に発生した立ち上がりエッジの数を計数するためのカウンタＮＥＣＮＴを、１カウントアップさせる。尚、カウンタＮＥＣＮＴの初期値は０である。
【００５３】
次に、Ｓ１４０にて、当該割り込み処理を前回実行してから今回開始するまでの間にＧ信号にエッジが発生したか否かを、ＧＥＤＧの値に基づき判定する。
そして、Ｇ信号にエッジが発生していなければ（即ち、ＧＥＤＧの値＝“０”であれば）、そのままＳ１９０へ移行するが、Ｇ信号にエッジが発生していたならば（即ち、ＧＥＤＧの値＝“１”又は“２”であれば）、Ｓ１５０に進み、Ｇ信号に発生したエッジの回数（Ｇ信号のレベル変化回数）を計数するためのカウンタＧＣＮＴを１カウントアップさせる。尚、カウンタＧＣＮＴの初期値も０である。また、このＳ１５０では、カウンタＧＣＮＴの値を最大値（例えば１６進数表示でＦＦ）でガードする処理（即ち、ＧＣＮＴの値が最大値から０に戻ってしまうラップラウンドを防止する処理）も行う。
【００５４】
そして、次のＳ１６０にて、カウンタＧＣＮＴの値が２以上であるか否かを判定し、２以上でなければ、そのままＳ１８０へ移行して、カウンタＮＥＣＮＴの値を０にクリアした後、Ｓ１９０へ進む。
【００５５】
これに対し、上記Ｓ１６０にて、カウンタＧＣＮＴの値が２以上であると判定した場合には、Ｓ１７０に進んで、ＧＥＤＧの値とカウンタＮＥＣＮＴの値とから、現在のクランク位置（詳しくは、今回のＮＥ信号の立ち上がりタイミングでのクランク位置）を特定し、その特定したクランク位置をＣＲＮＫという記憶部に記憶する。そして、続くＳ１８０でカウンタＮＥＣＮＴの値を０にクリアした後、Ｓ１９０へ進む。
【００５６】
つまり、カウンタＧＣＮＴの値が２以上であるということは、Ｇ信号が既に２回以上レベル変化したということである。そして、本実施形態では、前述したように、Ｇ信号の１サイクル分（７２０°ＣＡ分）のレベル変化パターンには、同じレベルで且つ同じクランク角度分の幅を持つ部分が複数存在しないため、Ｇ信号が前回レベル変化してから今回レベル変化するまでの１パルス期間中（換言すれば、Ｇ信号のエッジ間）に、ＮＥ信号に立ち上がりエッジが何回発生したかと、その１パルス期間におけるＧ信号のレベルとにより、クランク位置を特定することができる。また、Ｇ信号のレベルは、ＧＥＤＧの値によって分かる。つまり、ＧＥＤＧの値が“２”であれば、レベル変化前のＧ信号はハイであり、ＧＥＤＧの値が“１”であれば、レベル変化前のＧ信号はローであるからである。
【００５７】
そこで、Ｓ１７０では、下記（ａ）〜（ｆ）の手順でクランク位置を特定している。
（ａ）：カウンタＮＥＣＮＴの値が６で、且つ、ＧＥＤＧの値が“２”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「６０°ＣＡ分：ハイ」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が４０°ＣＡであると特定して、ＣＲＮＫに４０［°ＣＡ］を記憶する。
【００５８】
（ｂ）：カウンタＮＥＣＮＴの値が１２で、且つ、ＧＥＤＧの値が“１”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「１２０°ＣＡ分：ロー」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が１６０°ＣＡであると特定して、ＣＲＮＫに１６０［°ＣＡ］を記憶する。
【００５９】
（ｃ）：カウンタＮＥＣＮＴの値が１６で、且つ、ＧＥＤＧの値が“２”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「１８０°ＣＡ分：ハイ」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が３４０°ＣＡであると特定して、ＣＲＮＫに３４０［°ＣＡ］を記憶する。
【００６０】
（ｄ）：カウンタＮＥＣＮＴの値が６で、且つ、ＧＥＤＧの値が“１”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「６０°ＣＡ分：ロー」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が４００°ＣＡであると特定して、ＣＲＮＫに４００［°ＣＡ］を記憶する。
【００６１】
（ｅ）：カウンタＮＥＣＮＴの値が１２で、且つ、ＧＥＤＧの値が“２”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「１２０°ＣＡ分：ハイ」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が５２０°ＣＡであると特定して、ＣＲＮＫに５２０［°ＣＡ］を記憶する。
【００６２】
（ｆ）：カウンタＮＥＣＮＴの値が１６で、且つ、ＧＥＤＧの値が“１”であれば、今回のＮＥ信号の立ち上がりタイミングが、図２におけるＧ信号の「１８０°ＣＡ分：ロー」の期間が終わった直後であることから、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が７００°ＣＡであると特定して、ＣＲＮＫに７００［°ＣＡ］を記憶する。
【００６３】
次に、Ｓ１９０では、今回のＳ１１０で記憶されたＮＥ信号のパルス間隔（即ち、ＮＥ信号の今回のパルス間隔）Ｔ１と、前回のＳ１１０で記憶されたＮＥ信号のパルス間隔（即ち、ＮＥ信号の前回のパルス間隔）Ｔ０とを比較して、Ｔ１とＴ０との比（＝Ｔ１／Ｔ０）が所定の判定比Ｋ（例えばＫ＝２．４）以上である、という欠歯判定条件が成立しているか否かを判定し、その欠歯判定条件が成立していないと判定した場合には、Ｓ２５０に移行する。
【００６４】
そして、このＳ２５０にて、ＮＥ信号の今回のパルス間隔Ｔ１を前回のパルス間隔Ｔ０として記憶し、続くＳ２６０にて、前述したＧ信号エッジ情報を、エッジ無しを示す“０”に初期化する。そして、その後、当該割り込み処理を終了する。
【００６５】
尚、車両のイグニッションスイッチがオンされてＥＣＵ１３が動作を開始してからマイコン１が始めて本割り込み処理を実行した場合、Ｔ０は初期値としての最大値に設定されている。よって、その場合、Ｓ１９０では、必ず上記欠歯判定条件が成立していないと判定することとなる。
【００６６】
一方、Ｓ１９０にて、上記欠歯判定条件が成立していると判定した場合には、ＮＥ信号に欠歯部が現れた（詳しくは、今回のＮＥ信号の立ち上がりエッジが欠歯部の終了タイミングであった）と判断してＳ２００に進む。
【００６７】
Ｓ２００では、カウンタＧＣＮＴの値が２以上であるか否かを判定し、２以上でなければ、Ｓ２１０に進んで、今度はカウンタＧＣＮＴの値が１以上であるか否かを判定する。そして、カウンタＧＣＮＴの値が１以上であると判定した場合（即ち、ＧＣＮＴの値が１である場合には）、Ｓ２２０に進んで、カウンタＮＥＣＮＴの値が６であるか否かを判定し、カウンタＮＥＣＮＴの値が６でなければ（Ｓ２２０：ＮＯ）、本当はＮＥ信号に欠歯部が現れていない（つまり、Ｓ１９０の判定結果は正しくない）と判断して、そのまま前述したＳ２５０及びＳ２６０の処理を行った後、当該割り込み処理を終了する。
【００６８】
また、上記Ｓ２１０でカウンタＧＣＮＴの値が１以上ではないと判定した場合（即ち、ＧＣＮＴの値が０である場合）、或いは、上記Ｓ２２０でカウンタＮＥＣＮＴの値が６であると判定した場合には、Ｓ２２５に移行して、図４に示す欠歯検出時のクランク位置特定処理を実行する。
【００６９】
この欠歯検出時のクランク位置特定処理の実行が開始されると、まずＳ３１０にて、現在のＧ信号のレベルを検出して、その検出したレベルがハイであるか否かを判定する。
そして、Ｇ信号のレベルがハイであったならば（Ｓ３１０：ＹＥＳ）、今回の欠歯部が、クランク軸１９の１回転目の欠歯部であって、エンジンの１サイクルにおける２１０°ＣＡ〜２４０°ＣＡの期間で生じる欠歯部であると判断することができることから、Ｓ３２０に進んで、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が２４０°ＣＡであると特定し、ＣＲＮＫとカウンタＮＥＣＮＴとの各々に、クランク位置が２４０°ＣＡであることを示す値をセットする。そして、その後、当該欠歯検出時のクランク位置特定処理を終了する。
【００７０】
また、上記Ｓ３１０にて、現在のＧ信号のレベルがハイではない（ローである）と判定した場合には（Ｓ３１０：ＮＯ）、今回の欠歯部が、クランク軸１９の２回転目の欠歯部であって、エンジンの１サイクルにおける５７０°ＣＡ〜６００°ＣＡの期間で生じる欠歯部であると判断することができることから、Ｓ３３０に移行して、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が６００°ＣＡであると特定し、ＣＲＮＫとカウンタＮＥＣＮＴとの各々に、クランク位置が６００°ＣＡであることを示す値をセットする。そして、その後、当該欠歯検出時のクランク位置特定処理を終了する。
【００７１】
尚、本実施形態では、ＣＲＮＫの値にカウンタＮＥＣＮＴの値×１０の値を加えた値（＝「ＣＲＮＫ＋ＮＥＣＮＴ×１０」）がクランク位置を示すようになっているが、ＮＥ信号における欠歯部の終了タイミングから次にＧ信号がレベル変化するまでの間については、「ＣＲＮＫ＋ＮＥＣＮＴ×１０」が、実際のクランク位置よりも２０°ＣＡ分だけ小さい値となる。これは、ＮＥ信号の立ち上がりエッジが欠歯部で２回欠落し、その分、カウンタＮＥＣＮＴの値が２だけ小さくなるからである。このため、上記Ｓ３２０では、クランク位置＝２４０°ＣＡを示す値として、ＣＲＮＫに１６０［°ＣＡ］をセットすると共に、カウンタＮＥＣＮＴには本来の８よりも２小さい６をセットし、同様に、上記Ｓ３３０では、クランク位置＝６００°ＣＡを示す値として、ＣＲＮＫに５２０［°ＣＡ］をセットすると共に、カウンタＮＥＣＮＴには本来の８よりも２小さい６をセットする。
【００７２】
このようにして欠歯検出時のクランク位置特定処理が終了すると、図３のＳ２３０へ進み、ＮＥ信号における欠歯部の終了タイミングで行うべき欠歯検出時の処理を実行する。そして、その次に、前述したＳ２５０及びＳ２６０の処理を行った後、当該割り込み処理を終了する。
【００７３】
また、上記Ｓ２００にて、カウンタＧＣＮＴの値が２以上であると判定した場合には、Ｓ２４０に移行する。
ここで、この場合には、前述したＳ１７０の処理によってクランク位置が既に特定／把握されているため、Ｓ２４０では、現在のＣＲＮＫの値にカウンタＮＥＣＮＴの値×１０の値を加えた値（＝「ＣＲＮＫ＋ＮＥＣＮＴ×１０」）が、欠歯部の終了タイミングである２４０°ＣＡ又は６００°ＣＡに該当する２２０又は５８０であるか否かを判定する。
【００７４】
そして、「ＣＲＮＫ＋ＮＥＣＮＴ×１０」が２２０又は５８０であれば（Ｓ２４０：ＹＥＳ）、前述したＳ２３０へ移行するが、「ＣＲＮＫ＋ＮＥＣＮＴ×１０」が２２０又は５８０でなければ（Ｓ２４０：ＮＯ）、本当はＮＥ信号に欠歯部が現れていないのに上記欠歯判定条件が成立した（つまり、Ｓ１９０でＮＥ信号に欠歯部が現れたと誤判定した）と判断して、そのまま前述したＳ２５０及びＳ２６０の処理を行った後、当該割り込み処理を終了する。
【００７５】
次に、以上のような図３の割り込み処理の作用について具体例を挙げて説明する。
例えば、クランク軸１９が図２におけるＳＡの位置（即ち、６８０°ＣＡと６９０°ＣＡとの間の位置）で停止している状態で、エンジンが始動のためにクランキングされたとする。
【００７６】
この場合、まず、最初にＮＥ信号が立ち上がる６９０°ＣＡのタイミングでは、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されることとなる。
【００７７】
次に、２回目にＮＥ信号が立ち上がる７００°ＣＡのタイミングでは、その前にＧ信号にエッジが発生し、しかも、そのＧ信号のエッジは１回目であることから、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＹＥＳ→Ｓ１５０→Ｓ１６０：ＮＯ→Ｓ１８０→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＧＣＮＴの値が１になると共に、カウンタＮＥＣＮＴの値が０にクリアされる。
【００７８】
その後、クランク軸１９が４０°ＣＡの位置に来るまでは、ＮＥ信号が立ち上がる毎に、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＮＥＣＮＴが１ずつカウントアップされていく。
【００７９】
そして、クランク軸１９が４０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングでは、その前にＧ信号にエッジが発生し、しかも、そのＧ信号のエッジは２回目であることから、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＹＥＳ→Ｓ１５０→Ｓ１６０：ＹＥＳ→Ｓ１７０，Ｓ１８０→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されることとなる。
【００８０】
このとき、図３のＳ１２０でＧＥＤＧに記憶されるＧ信号エッジ情報は、立ち下がりを示す“２”であり、Ｓ１３０でカウントアップされた時点のカウンタＮＥＣＮＴの値は６であるため、Ｓ１７０にて、クランク位置が４０°ＣＡであると特定される。つまり、このタイミングで、「ＣＲＮＫの値＝４０」且つ「カウンタＮＥＣＮＴの値＝０」となり、マイコン１にてクランク位置が初めて認識されることとなる。
【００８１】
そして、その後、クランク軸１９が１６０°ＣＡの位置に来るまでは、ＮＥ信号が立ち上がる毎に、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＮＥＣＮＴが１ずつカウントアップされていく。
【００８２】
そして、クランク軸１９が１６０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングでは、その前にＧ信号にエッジが発生し、しかも、そのＧ信号のエッジは２回目以降（３回目）であることから、図３の割り込み処理が、再び「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＹＥＳ→Ｓ１５０→Ｓ１６０：ＹＥＳ→Ｓ１７０，Ｓ１８０→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されることとなる。
【００８３】
尚、この場合にも、Ｓ１７０でクランク位置を特定する処理が行われるが、この場合には、既にクランク位置を特定し認識しているので、Ｓ１７０の処理は、実際には「クランク位置の確認」という意味合いになる。また、この１６０°ＣＡのタイミングでは、図３のＳ１２０でＧＥＤＧに記憶されるＧ信号エッジ情報が、立ち上がりを示す“１”となり、Ｓ１３０でカウントアップされた時点のカウンタＮＥＣＮＴの値は１２となるため、Ｓ１７０では、クランク位置が１６０°ＣＡであると特定することとなる。そして、このＳ１７０とＳ１８０の処理により、「ＣＲＮＫの値＝１６０」且つ「カウンタＮＥＣＮＴの値＝０」となる。
【００８４】
その後、ＮＥ信号が立ち上がる毎に、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＮＥＣＮＴが１ずつカウントアップされていく。
【００８５】
そして、クランク軸１９が２４０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングでは、そのタイミングが欠歯部の終了タイミングであるため、図３の割り込み処理において、Ｓ１９０により、欠歯判定条件が成立した（つまり、ＮＥ信号に欠歯部が現れた）と肯定判定される。そして更に、このとき、カウンタＧＣＮＴの値は２以上になっているため、Ｓ１９０から進むＳ２００では肯定判定される。よって、この回の割り込み処理では、「Ｓ１９０：ＹＥＳ→Ｓ２００：ＹＥＳ→Ｓ２４０：ＹＥＳ→Ｓ２３０→Ｓ２５０，Ｓ２６０」の順に処理が進むこととなる。
【００８６】
尚、Ｇ信号にエッジが２回発生してＳ１７０の処理によりクランク位置が特定された後、本当はＮＥ信号に欠歯部が現れていないのに上記Ｓ１９０で欠歯判定条件が成立したと誤判定した場合には、Ｓ２００から移行するＳ２４０にて、「ＣＲＮＫ＋ＮＥＣＮＴ×１０」が欠歯部の終了タイミングを示す２２０又は５８０ではないと否定判定されることとなる。よって、このような欠歯部の誤判定が生じても、Ｓ２３０で欠歯検出時の処理を行ってしまうことが防止される。
【００８７】
一方、例えば、クランク軸１９が図２における１６０°ＣＡより後で２００°ＣＡより前の何れかの位置で停止している状態で、エンジンが始動のためにクランキングされたとする。
【００８８】
この場合にも、クランク軸１９が２４０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングにて、図３の割り込み処理では、Ｓ１９０で欠歯判定条件が成立したと肯定判定してＳ２００へ進むこととなる。
【００８９】
しかし、この場合には、Ｇ信号に１回もエッジが発生していないため、その回の割り込み処理では、「Ｓ１９０：ＹＥＳ→Ｓ２００：ＮＯ→Ｓ２１０：ＮＯ→Ｓ２２５→Ｓ２３０→Ｓ２５０，Ｓ２６０」の順に処理が進むこととなり、Ｓ２２５の処理（図４）によって、クランク位置が２４０°ＣＡであると特定される。つまり、Ｇ信号に１回もエッジが発生していないのにＮＥ信号に欠歯部が現れた場合には、Ｓ２２５の処理により、その欠歯部が現れたときのＧ信号のレベルからクランク位置が特定される。
【００９０】
また、例えば、クランク軸１９が図２における４０°ＣＡより後で１５０°ＣＡより前の何れかの位置で停止している状態で、エンジンが始動のためにクランキングされたとする。
【００９１】
この場合、クランク軸１９が１６０°ＣＡの位置に来るまでは、ＮＥ信号が立ち上がる毎に、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＮＥＣＮＴが１ずつカウントアップされていく。
【００９２】
そして、クランク軸１９が１６０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングでは、その前にＧ信号にエッジが発生し、しかも、そのＧ信号のエッジは１回目であることから、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＹＥＳ→Ｓ１５０→Ｓ１６０：ＮＯ→Ｓ１８０→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＧＣＮＴの値が１になると共に、カウンタＮＥＣＮＴの値が０にクリアされる。
【００９３】
その後、ＮＥ信号が立ち上がる毎に、図３の割り込み処理が「Ｓ１１０〜Ｓ１３０→Ｓ１４０：ＮＯ→Ｓ１９０：ＮＯ→Ｓ２５０，Ｓ２６０」の順に実行されて、カウンタＮＥＣＮＴが１ずつカウントアップされていく。
【００９４】
そして、クランク軸１９が２４０°ＣＡの位置に来たときのＮＥ信号の立ち上がりタイミングでは、そのタイミングが欠歯部の終了タイミングであるため、図３の割り込み処理において、Ｓ１９０により、欠歯判定条件が成立したと肯定判定される。
【００９５】
そして更に、この回の割り込み処理では、カウンタＧＣＮＴの値が１になっていると共に、カウンタＮＥＣＮＴの値が今回のＳ１３０で６になっているため、「Ｓ１９０：ＹＥＳ→Ｓ２００：ＮＯ→Ｓ２１０：ＹＥＳ→Ｓ２２０：ＹＥＳ→Ｓ２２５→Ｓ２３０→Ｓ２５０，Ｓ２６０」の順に処理が進むこととなり、Ｓ２２５の処理（図４）によって、クランク位置が２４０°ＣＡであると特定される。つまり、Ｇ信号に１回だけエッジが発生した後にＮＥ信号に欠歯部が現れた場合も、Ｓ２２５の処理により、その欠歯部が現れたときのＧ信号のレベルからクランク位置が特定される。
【００９６】
尚、Ｇ信号にエッジが１回発生している状態で、本当はＮＥ信号に欠歯部が現れていないのにＳ１９０で欠歯判定条件が成立したと誤判定した場合には、Ｓ２１０から進むＳ２２０にて、カウンタＮＥＣＮＴの値が６ではないと判定され、Ｓ２２５とＳ２３０の処理を行うことなく、Ｓ２５０へ進むこととなる。つまり、前述したように、ＮＥ信号の欠歯部は、該欠歯部が現れる直前のＧ信号のレベル変化タイミングからみてＮＥ信号に６発目の立ち上がりエッジが発生する時点から７発目の立ち上がりエッジが発生するまでの期間となっているため、本当に欠歯部の終了タイミングに該当するＮＥ信号の立ち上がりタイミングであれば、カウンタＮＥＣＮＴの値は必ず６になるからである。よって、このような欠歯部の誤判定が生じた場合に、Ｓ２２５の処理によってクランク位置を誤って特定してしまうことと、Ｓ２３０で欠歯検出時の処理を行ってしまうこととが防止される。
【００９７】
以上のような本実施形態のエンジン制御装置によれば、エンジンの始動時において、クランキングが開始されてからＧ信号が２回レベル変化すれば（２回エッジが生じれば）、図３におけるＳ１７０の処理により、そのＧ信号の今回のエッジ間にＮＥ信号の立ち上がりエッジが何回発生したかと、そのＧ信号のエッジ間のレベルとにより、クランク位置が正確に特定され、前述した（１）や（２）の原因によって正しいクランク位置が認識できなくなることを回避することができる。このため、エンジンの回転変動や回転数に拘わらず、クランク位置を簡単な処理で正確に特定することができる。
【００９８】
また、本実施形態のエンジン制御装置によれば、エンジンの始動時において、もし、Ｇ信号が２回レベル変化するよりも先に、ＮＥ信号に欠歯部が現れたならば、図３におけるＳ２２５（図４）の処理により、その欠歯部が発生した時のＧ信号のレベルからクランク位置が特定される。よって、エンジン始動時にクランク位置を早期に特定し易くなり、エンジンの始動性を向上させることができる。
【００９９】
尚、図３におけるＳ１９０の処理では、前述した（１）や（２）の原因により、本当はＮＥ信号に欠歯部が現れていないのに欠歯判定条件が成立したと判定（つまり、欠歯部が現れたと誤判定）してしまう可能性があり、もし、そのような誤判定が生じると、図３におけるＳ２２５の処理で特定されるクランク位置は正しいものとはならないが、Ｇ信号が２回レベル変化しさえすれば、図３におけるＳ１７０の処理の方で確実に正しいクランク位置が特定されることとなり、大きな問題とはならない。
【０１００】
特に、本実施形態においては、図３におけるＳ１７０の処理によってクランク位置が特定された後は、図３におけるＳ２００からＳ２４０へ移行することとなり、Ｓ２２５の処理は行われないようになっている。
【０１０１】
このため、エンジン始動時において、Ｇ信号が２回レベル変化するよりも先に、ＮＥ信号に欠歯部が現れた場合にだけ、図３におけるＳ２２５の処理によってクランク位置が特定され、それ以外の場合には、図３におけるＳ１７０の処理によってクランク位置が特定されることとなる。よって、図３におけるＳ１９０の判定結果（ＮＥ信号に欠歯部が現れたか否かの判定結果）を利用してクランク位置を特定する機会を最小限にすることができ、延いては、クランク位置を誤認識してしまう可能性を最小限することができる。
【０１０２】
そして更に、本実施形態において、ＮＥ信号の欠歯部は、該欠歯部が現れる直前のＧ信号のレベル変化タイミングからみてＮＥ信号に６発目の立ち上がりエッジが発生する時点から７発目の立ち上がりエッジが発生するまでの期間となっており、更に、図３におけるＳ２１０及びＳ２２０の判定を設けているため、前述したように、Ｇ信号にエッジが１回発生している状態で、本当はＮＥ信号に欠歯部が現れていないのにＳ１９０で欠歯判定条件が成立したと誤判定した場合には、Ｓ２１０から進むＳ２２０にて、カウンタＮＥＣＮＴの値が６ではないと判定されて、Ｓ２２５とＳ２３０の処理を行うことなく、Ｓ２５０へ進むこととなる。
【０１０３】
このため、本実施形態によれば、Ｇ信号にエッジが１回発生してから、Ｓ１９０の判定処理によってＮＥ信号に欠歯部が現れたと誤判定しても、Ｓ２２５の処理でクランク位置を誤って特定してしまうことが防止され、エンジン始動時にクランク位置を早期に特定することと、クランク位置を正確に特定することとを、より高い次元で両立させることができる。
【０１０４】
尚、本実施形態では、図３における各ステップの処理のうち、Ｓ１７０の処理がクランク位置特定手段に相当し、Ｓ１１０の処理がパルス間隔計測手段に相当し、Ｓ１９０の処理が欠歯判定手段に相当し、Ｓ２２５の処理が欠歯判定時特定手段に相当している。また、Ｓ１２０〜Ｓ１４０，Ｓ１８０，及びＳ２６０の処理が計数手段に相当し、Ｓ２１０の処理がレベル変化有無判定手段に相当し、Ｓ２２０の処理が誤作動防止手段に相当している。
【０１０５】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１０６】
例えば、図３の割り込み処理において、Ｓ１７０の処理によりクランク位置が特定された後は、Ｓ１９０（或いは更にＳ２００）の判定処理がスキップされるようにしても良い。つまり、Ｓ１７０の処理によってクランク位置が特定された後は、Ｓ１８０から、又はＳ１４０にてＧ信号にエッジが発生していないと否定判定した場合に、Ｓ２４０へ直接移行するようにしても良い。Ｇ信号に２回エッジが発生してクランク位置を特定できたならば、その後は、Ｓ１９０の判定処理を行わなくても、Ｓ２４０の判定処理により、ＮＥ信号についての欠歯検出（上記実施形態では、今回のＮＥ信号の立ち上がりタイミングが欠歯部の終了タイミングであるか否かを判定すること）ができるからである。
【０１０７】
また、エンジン停止状態でのクランク位置によってはクランク位置の特定が若干遅れる場合が生じるが、上記実施形態において、図３におけるＳ１９０の判定処理を始めから行わないように構成しても良い。具体的には、図３において、Ｓ１１０，Ｓ１９０，Ｓ２１０〜Ｓ２２５，及びＳ２５０の処理を削除すると共に、Ｓ２００にてカウンタＧＣＮＴの値が２以上ではないと否定判定した場合には、Ｓ２６０へ移行するようにしても良い。
【０１０８】
また、上記実施形態では、カム軸センサ１７におけるロータ１７ａの外周形状（即ち、凹凸パターン）を、Ｇ信号の１サイクル分のレベル変化パターンに同じレベルで且つ同じクランク角度分の幅を持つ部分が複数存在しないように設定したが、ロータ１７ａの外周形状は、Ｇ信号の１サイクル分のレベル変化パターンに同じクランク角度分の幅を持つ部分が複数存在しないように設定しても良い。
【０１０９】
例えば、図２におけるＧ信号のレベル変化パターンにおいて、「６０°ＣＡ分：ハイ」の部分と「１２０°ＣＡ分：ハイ」の部分とが、それぞれ１０°ＣＡ分だけ前のタイミングからハイレベルとなるようにすれば、Ｇ信号のレベル変化パターンは、「７０°ＣＡ分：ハイ→１２０°ＣＡ分：ロー→１８０°ＣＡ分：ハイ→５０°ＣＡ分：ロー→１３０°ＣＡ分：ハイ→１７０°ＣＡ分：ロー」というように、同じクランク角度分の幅を持つ部分が複数存在しないパターンとなる。
【０１１０】
そして、この例の場合、図３のＳ１７０では、下記（ａ’）〜（ｆ’）の手順でクランク位置を特定すれば良い。
（ａ’）：カウンタＮＥＣＮＴの値が７であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が図２における４０°ＣＡであると特定して、ＣＲＮＫに４０［°ＣＡ］を記憶する。
【０１１１】
（ｂ’）：カウンタＮＥＣＮＴの値が１２であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が図２における１６０°ＣＡであると特定して、ＣＲＮＫに１６０［°ＣＡ］を記憶する。
【０１１２】
（ｃ’）：カウンタＮＥＣＮＴの値が１６であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が図２における３４０°ＣＡであると特定して、ＣＲＮＫに３４０［°ＣＡ］を記憶する。
【０１１３】
（ｄ’）：カウンタＮＥＣＮＴの値が５であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が図２における３９０°ＣＡであると特定して、ＣＲＮＫに３９０［°ＣＡ］を記憶する。
【０１１４】
（ｅ’）：カウンタＮＥＣＮＴの値が１３であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が図２における５２０°ＣＡであると特定して、ＣＲＮＫに５２０［°ＣＡ］を記憶する。
【０１１５】
（ｆ’）：カウンタＮＥＣＮＴの値が１５であれば、今回のＮＥ信号の立ち上がりタイミングでのクランク位置が６９０°ＣＡであると特定して、ＣＲＮＫに６９０［°ＣＡ］を記憶する。
【０１１６】
そして、上記のように変形しても、前述した実施形態のエンジン制御装置と同様の効果を得ることができる。
一方、Ｇ信号のレベル変化は、エッジではなく、そのＧ信号のレベルを比較的短い一定時間毎にモニタすることで検出するようにしても良い。但し、エッジを検出するように構成した方が、処理負荷が小さくて済むという面で有利である。
【図面の簡単な説明】
【０１１７】
【図１】実施形態のエンジン制御装置の構成を表す構成図である。
【図２】クランク位置を特定するための信号及び動作を表すタイムチャートである。
【図３】ＮＥ信号に立ち上がりエッジが発生する毎に実行される割り込み処理を表すフローチャートである。
【図４】欠歯検出時のクランク位置特定処理を表すフローチャートである。
【符号の説明】
【０１１８】
１…マイコン、３，５，７…入力回路、９…Ａ／Ｄ変換器、１１…出力回路、１３…ＥＣＵ（電子制御ユニット）、１５…クランク軸センサ、１７…カム軸センサ、１５ａ，１７ａ…ロータ、１５ｂ，１７ｂ…信号出力部、１９…クランク軸、２１，２７…歯、２３…歯欠損部、２５…カム軸
【図１】
2005264862.tif 000003
【図２】
2005264862.tif 000004
【図３】
2005264862.tif 000005
【図４】
2005264862.tif 000006