(57)【要約】【課題】  エンジン停止時に推定した停止位置を利用してエンジン制御を開始するエンジン制御装置において、エンジンの回転位置を検出するのに用いられるカム軸センサやクランク軸センサが故障しても、エンジン制御を適正に開始できるようにする。【解決手段】  カム信号割り込み処理において、エンジン停止時には、その停止位置を推定する処理（４００）を実行し、エンジン始動時には、停止位置推定値とカム信号とからクランク位置を特定する処理（３６０）を実行する。また、この処理では、カム信号に異常が生じるとクランク位置を特定できず、クランク位置に応じたエンジン制御を開始できなくなるので、クランク信号の欠歯を利用してクランク位置を特定するクランク信号割り込み処理を別途実行し、カム信号異常時にはその割り込み処理で特定されたクランク位置を用いてエンジン制御を開始する。また、クランク信号の異常時には、カム信号だけでクランク位置を特定する処理（３８０）を行い、エンジン制御を開始できるようにする。【選択図】  図４
2005351211.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのカム軸に設けられ、該カム軸の回転位置に応じて変化するカム軸回転信号を発生するカム軸センサと、
エンジンのクランク軸に設けられ、該クランク軸の所定の回転角度毎にクランク軸回転信号を発生するクランク軸センサと、
エンジンが運転状態から停止する際に、前記カム軸回転信号及び前記クランク軸回転信号の少なくとも一方に基づき、エンジンの回転停止位置を推定する停止位置推定手段と、
エンジンの始動時に、前記停止位置推定手段にて推定された停止位置と前記カム軸回転信号とに基づき、エンジン１サイクル当たりの回転位置を特定する第１の回転位置特定手段と、
該回転位置特定手段にてエンジンの回転位置が特定されると、その後、前記クランク軸回転信号に基づき前記回転位置を更新する回転位置更新手段と、
を備え、エンジンの始動時、前記回転位置特定手段にてエンジンの回転位置が特定されると、該回転位置に基づくエンジン制御を開始し、その後、前記回転位置更新手段にて更新される回転位置に基づきエンジン制御を実行するよう構成されたエンジン制御装置であって、
前記クランク軸センサを、前記クランク軸の特定の回転角度位置にて前記クランク軸回転信号が前記クランク軸の回転に対して不連続になるよう構成すると共に、
前記カム軸センサの異常を検出する第１の異常検出手段と、
少なくとも該第１の異常検出手段にてカム軸センサの異常が検出されているときに、前記クランク軸センサから出力されるクランク軸回転信号に基づき前記クランク軸の特定の回転角度位置を検出し、前記エンジンの回転位置を特定する第２の回転位置特定手段と、
を設け、前記カム軸センサに異常が生じて前記第１の回転位置特定手段にてエンジンの回転位置を特定できないときには、前記第２の回転位置特定手段にて特定された回転位置に基づき、エンジン制御を開始するよう構成してなることを特徴とするエンジン制御装置。
【請求項２】
前記第２の回転位置特定手段は、前記クランク軸回転信号に基づき前記クランク軸の特定の回転角度位置を検出した際、そのときのクランク軸回転信号の変化状態からエンジンの回転位置を特定することを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
前記カム軸センサとして、エンジンの吸気バルブを作動させる吸気カム軸に設けられた吸気カム軸センサと、エンジンの排気バルブを作動させる排気カム軸に設けられた排気カム軸センサとを備え、
前記第１の異常検出手段は、前記吸気カム軸センサ及び前記排気カム軸センサの異常をそれぞれ検出し、
前記第１の回転位置特定手段は、前記停止位置推定手段にて推定された停止位置と、前記吸気カム軸センサ及び前記排気カム軸センサからそれぞれ出力されるカム軸回転信号とに基づき、エンジンの回転位置を特定し、
前記第２の回転位置特定手段は、前記クランク軸回転信号に基づき前記クランク軸の特定の回転角度位置を検出した際、前記第１の異常検出手段にて前記吸気カム軸センサ及び前記排気カム軸センサの内の一方の異常が検出されているときには、前記第１の異常検出手段にて異常が検出されていない他方のカム軸センサからのカム軸回転信号に基づきエンジンの回転位置を特定することを特徴とする請求項１に記載のエンジン制御装置。
【請求項４】
前記クランク軸センサの異常を検出する第２の異常検出手段と、
少なくとも該第２の異常検出手段にてクランク軸センサの異常が検出されているときに、前記カム軸センサから出力されるカム軸回転信号の変化波形に基づき、前記エンジンの回転位置を順次特定する第３の回転位置特定手段と、
を備え、前記クランク軸センサに異常が生じて前記回転位置更新手段にて前記エンジンの回転位置を更新できないときには、前記第３の回転位置特定手段にて順次特定される回転位置に基づき、エンジン制御を実行するよう構成してなることを特徴とする請求項１〜請求項３の何れかに記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンを制御するエンジン制御装置に関し、特に、エンジンの停止時にクランク軸の停止位置を推定しておき、その推定した停止位置を次のエンジン始動時に利用するエンジン制御装置に関する。
【背景技術】
【０００２】
従来より、エンジン制御装置では、エンジンのクランク軸の回転に応じてクランク軸センサから出力されるクランク軸回転信号と、クランク軸の回転に対し１／２の比率で回転するエンジンのカム軸の回転に応じてカム軸センサから出力されるカム軸回転信号とから、エンジン１サイクル当たりエンジンの回転位置を特定し、その特定後に、エンジンに対する点火や燃料噴射を開始している（例えば、特許文献１参照）。
【０００３】
具体例を挙げて説明すると、まず、クランク軸センサから出力されるクランク軸回転信号には、クランク軸が所定角度回転する毎にパルスエッジが発生すると共に、クランク軸の回転位置が予め設定された基準位置に来た時には、そのパルスエッジが所定数（例えば２個）欠落した欠歯部が現れるようになっている。また、カム軸センサから出力されるカム軸回転信号は、カム軸の回転に応じてハイレベルとローレベルとに変化すると共に、クランク軸回転信号に欠歯部が現れるタイミングでは、その各タイミング毎に交互に異なったレベルとなる。
【０００４】
そして、エンジン制御装置では、クランク軸回転信号に欠歯部が現れたか否かを判定する欠歯判定を行い、その欠歯判定で欠歯部が現れたと判定したときのカム軸回転信号のレベルから、エンジンの回転位置を特定する。例えば、欠歯判定時にカム軸回転信号がハイレベルであれば、現在の回転位置は予め設定された特定の回転位置「Ｘ°ＣＡ」であると特定し、欠歯判定時にカム軸回転信号がローレベルならば、現在の回転位置は「Ｘ°ＣＡ」から３６０°ＣＡだけ進んだ回転位置であると特定する。
【０００５】
尚、「°ＣＡ」はクランクアングル（クランク角度）を表しており、エンジンの回転位置は、クランク軸２回転分のクランク角度（０°ＣＡ〜７２０°ＣＡ）にて特定される。また、この種のエンジン制御装置では、クランク軸回転信号のパルス間隔（即ち、クランク軸回転信号に上記所定角度毎のパルスエッジが発生する間隔）を計測すると共に、今回測定したパルス間隔Ｔ１と前回計測したパルス間隔Ｔ０とを比較して、例えば、Ｔ１とＴ０との比（＝Ｔ１／Ｔ０）が所定の判定比以上である、といった欠歯判定条件が成立した際に、クランク軸回転信号に欠歯部が現れたと判定する。
【０００６】
しかし、上記技術では、エンジンの始動時において、スタータによるクランキングが開始されてからクランク軸回転信号における欠歯部等の基準位置が検出されてクランク位置が最初に特定されるまでには、一般にクランク軸の数回転分が必要となる。
【０００７】
このため、スタータによるエンジン始動時に、エンジンに対する点火及び噴射の制御を速やかに開始することができず、始動前にインジェクタ（燃料噴射弁）から漏れ落ちた燃料や吸気管内に残っていた未燃焼ガスがそのまま排気されてエミッションの悪化を招くといった問題がある。特に、近年益々強化される排気ガスの規制を満足させるためには、スタータ始動とほぼ同時に燃料を燃やしきり、未燃焼ガスや生ガスが排気管へ送られないようにすることが重要となってくるが、上記従来のエンジン制御装置では、こうした要求に応えることができない。
【０００８】
そこで、スタータによるエンジンの始動時に、エンジン制御を速やかに開始して、エミッションを向上させるために、エンジンが停止する際に、クランク軸回転信号やカム軸回転信号を評価してエンジンの停止位置を推定し、次のエンジン始動時には、その推定した停止位置に基づいてエンジン制御を開始することが提案されている（例えば、特許文献２参照）。
【特許文献１】特開２００１−９０６００号公報
【特許文献２】特表平８−５０６３９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記提案のエンジン制御装置によれば、エンジン始動時には、エンジン停止時に推定したエンジンの停止位置に基づきエンジン制御を開始するため、エンジン始動直後から燃料を燃焼させて、未燃焼ガスや生ガスが排気管へ送られるのを防止できる。
【００１０】
しかし、エンジン停止時に推定した停止位置が誤っていたり、エンジンが停止されてから次に始動されるまでの間に停止位置が変化すると、エンジン制御開始時の制御タイミングが適正タイミングから外れてしまい、エンジンを始動できなくなったり、エンジン始動時のエミッションが悪くなるという問題が生じる。
【００１１】
そこで、本願出願人は、こうした問題を防止するために、カム軸センサを、エンジンの回転位置に応じて変化するカム軸回転信号を出力するように構成し、エンジン始動時には、エンジン停止時に推定した停止位置と、エンジンの始動時にカム軸センサから出力されるカム軸回転信号の変化（立上がりエッジ、立ち下がりエッジ等）とからエンジンの回転位置を特定して、エンジン制御を開始することを考えた。
【００１２】
つまり、エンジン始動時には、エンジン停止時に推定した停止位置とカム軸回転信号とを用いてエンジンの回転位置を特定することで、エンジン制御を、実際のエンジンの回転位置に応じて適正に実行できるようにするのである。
【００１３】
しかし、このようにすると、エンジン始動時には、エンジン停止時に推定した停止位置を用いて、エンジン制御を適正な制御タイミングで開始することはできるものの、例えば、エンジンの停止後、次に始動する迄の間に、カム軸センサが故障して、エンジン始動時に、エンジン制御装置にカム軸回転信号が入力されなくなったような場合には、エンジンの回転位置を特定して、エンジン制御を開始することができなくなってしまう、という問題が生じる。
【００１４】
本発明は、こうした問題に鑑みなされたもので、エンジン停止時に推定した停止位置を利用してエンジン制御を開始するエンジン制御装置であって、エンジンの回転位置を検出するのに用いられるカム軸センサやクランク軸センサが故障しても、エンジン制御を、エンジンの実際の回転位置に応じた適正タイミングで開始できるようにすることを目的とする。
【課題を解決するための手段】
【００１５】
係る目的を達成するためになされた請求項１に記載のエンジン制御装置においては、エンジンのカム軸の回転位置に応じて変化するカム軸回転信号を発生するカム軸センサと、エンジンのクランク軸の所定の回転角度毎にクランク軸回転信号を発生するクランク軸センサとを備え、エンジンが運転状態から停止する際には、停止位置推定手段が、カム軸回転信号及びクランク軸回転信号の少なくとも一方に基づき、エンジンの回転停止位置を推定する。
【００１６】
また、エンジンの始動時には、第１の回転位置特定手段が、停止位置推定手段にて推定された停止位置とカム軸回転信号とに基づき、エンジン１サイクル当たりの回転位置を特定し、その後は、回転位置更新手段が、クランク軸回転信号に基づき回転位置を更新する。
【００１７】
そして、本発明のエンジン制御装置は、エンジンの始動時に、第１の回転位置特定手段にてエンジンの回転位置が特定されると、その回転位置に基づくエンジン制御を開始し、その後は、回転位置更新手段にて更新される回転位置に基づきエンジン制御を実行する。
【００１８】
ところで、第１の回転位置特定手段は、前回エンジンを停止した際に停止位置推定手段にて推定された停止位置と、エンジン始動時のエンジンの回転に伴いカム軸センサから出力されるカム軸回転信号とから、エンジンの回転位置を特定するものであるため、カム軸センサの故障等によって、第１の回転位置特定手段にカム軸回転信号が入力されなくなると、エンジンの回転位置を特定して、エンジン制御を開始させることができなくなる。
【００１９】
そこで、本発明のエンジン制御装置には、更に、カム軸センサの異常を検出する第１の異常検出手段が設けられており、少なくとも、この第１の異常検出手段にてカム軸センサの異常が検出されているときには、第２の回転位置特定手段が、クランク軸センサから出力されるクランク軸回転信号に基づき前記クランク軸の特定の回転角度位置を検出することにより、エンジンの回転位置を特定する。
【００２０】
この結果、本発明のエンジン制御装置によれば、カム軸センサに異常が生じて第１の回転位置特定手段にてエンジンの回転位置を特定できないときには、第２の回転位置特定手段にて特定された回転位置に基づきエンジン制御を開始することができるようになり、エンジン制御装置の信頼性を向上することが可能となる。
【００２１】
特に、制御対象となるエンジンが自動車用のエンジンである場合、エンジン制御を開始できなくなると、自動車を所望の場所まで退避走行させることもできなくなるが、本発明のエンジン制御装置によれば、カム軸センサが故障してもエンジン制御を開始できることから、自動車を確実に退避走行させることができるようになり、延いては、自動車の信頼性及び安全性を向上させることが可能となる。
【００２２】
尚、第２の回転位置特定手段において、クランク軸センサから出力されるクランク軸信号だけでエンジンの回転位置を特定するには、請求項２に記載のように、クランク軸回転信号に基づきクランク軸の特定の回転角度位置を検出した際、そのときのクランク軸回転信号の変化状態からエンジンの回転位置を特定するようにするとよい。
【００２３】
つまり、クランク軸は、エンジン１サイクル当たりに２回転するため、クランク軸回転信号だけで確実に特定できるのは、クランク軸１回転分の位相差を有する２つの回転位置である。従って、第２の回転位置特定手段において、エンジンの回転位置を正確に特定するには、クランク軸の回転が２回転のうちの何れであるかを識別する必要があるが、請求項２に記載のように、その識別をクランク軸回転信号の変化状態に基づき行うようにすれば、クランク軸信号だけでエンジンの回転位置を正確に特定することができるようになる。
【００２４】
ところで、本発明のエンジン制御装置の信頼性を更に向上させる方法としては、エンジンに吸気カム軸と排気カム軸とが備えられている場合には、これら各カム軸にカム軸センサ（請求項３に記載の吸気カム軸センサと排気カム軸センサ）を設け、第１の回転位置特定手段にてエンジンの回転位置を特定する際には、その２つのカム軸センサの一方を利用するようにするとよい。
【００２５】
つまり、このようにすれば、２つのカム軸センサの一方が故障しても、他方のカム軸センサを用いてエンジンの回転位置を特定できるようになるため、第２の回転位置特定手段がエンジンの回転位置を特定するのに使用するクランク軸センサが故障したとしても、エンジン制御を開始することができるようになる。
【００２６】
また、第１の回転位置特定手段において、エンジンの停止位置とカム軸回転信号とに基づきエンジンの回転位置を特定する際、エンジン１サイクル当たりに特定可能な回転位置の個数を多くして、エンジン制御をより早く開始できるようにするには、カム軸の回転に対するカム軸回転信号の変化パターンを複雑にし、しかも、カム軸に対してカム軸センサを高精度に組み付ける必要があるが、このようにすると、エンジン制御装置のコストアップを招くことが考えられる。
【００２７】
そこで、上記のように、吸気カム軸と排気カム軸とにそれぞれカム軸センサを設ける場合には、請求項３に記載のように、第１の回転位置特定手段において、停止位置推定手段にて推定された停止位置と、吸気カム軸センサ及び前記排気カム軸センサからそれぞれ出力されるカム軸回転信号とに基づき、エンジンの回転位置を特定するようにしてもよい。
【００２８】
そして、第１の回転位置特定手段をこのように構成した場合には、請求項３に記載のように、第１の異常検出手段では、吸気カム軸センサの異常と排気カム軸センサの異常とをそれぞれ検出するようにし、第２の回転位置特定手段では、クランク軸回転信号に基づきクランク軸の特定の回転角度位置を検出した際に、第１の異常検出手段にて吸気カム軸センサ及び排気カム軸センサの内の一方の異常が検出されているときには、第１の異常検出手段にて異常が検出されていない他方のカム軸センサからのカム軸回転信号に基づきエンジンの回転位置を特定し、第１の異常検出手段にて吸気カム軸センサ及び排気カム軸センサの両方の異常が検出されているときにだけ、クランク軸回転信号の変化状態からエンジンの回転位置を特定するようにするとよい。
【００２９】
つまり、第１の回転位置特定手段において、停止位置推定手段にて推定された停止位置と、吸気カム軸センサ及び排気カム軸センサからそれぞれ出力されるカム軸回転信号とに基づき、エンジンの回転位置を特定するようにした場合、吸気カム軸センサと排気カム軸センサとの何れかに異常が生じると、第１の回転位置特定手段にてエンジンの回転位置を特定することができなくなるが、このとき、第２の回転位置特定手段において、クランク軸回転信号だけでエンジンの回転位置を特定するようにすると、第２の回転位置特定手段を請求項２に記載のように構成したとしても、エンジンの回転位置を２分の１の確率でしか特定できないことがある。
【００３０】
具体的には、クランク軸の１回転毎にクランク軸回転信号の変化状態が異なるのは、エンジンの気筒数が奇数である場合であり、偶数気筒のエンジンでは、クランク軸１回転当たりの回転変動が常時同一パターンで生じることから、第２の回転位置特定手段を請求項２に記載のように構成しても、偶数気筒のエンジンでは、クランク軸回転信号の変化状態からエンジンの回転位置を正確に特定することはできない。このため、偶数気筒のエンジンでは、クランク軸回転信号だけで特定し得る２つの回転位置の内の一方を選択して燃料噴射等のエンジン制御を開始し、その制御の結果、エンジンを良好に制御できないときに、エンジンの回転位置を特定し直すことになる。
【００３１】
これに対して、第２の回転位置特定手段を請求項３に記載のように構成すれば、クランク軸回転信号に基づきクランク軸の特定の回転角度位置を検出した際に、吸気カム軸センサ及び排気カム軸センサの内の一方の出力を利用してエンジンの回転位置を特定することができることから、第２の回転位置特定手段においてエンジンの回転位置をより正確に特定することができるようになり、延いては、エンジン制御装置の信頼性をより向上することができるようになる。
【００３２】
一方、請求項１〜請求項３の何れかに記載のエンジン制御装置において、カム軸センサが故障したときには、第２の回転位置特定手段にてエンジンの回転位置を特定して、エンジン制御を開始することができるが、クランク軸センサが故障したときには、第１の回転位置特定手段にてエンジンの回転位置を特定してエンジン制御を開始できたとしても、その後、回転位置更新手段にてエンジンの回転位置を更新しつつ、最適なエンジン制御を継続することができなくなってしまう。
【００３３】
そこで、この問題を防止するには、請求項４に記載のように、クランク軸センサの異常を検出する第２の異常検出手段を設け、少なくともこの第２の異常検出手段にてクランク軸センサの異常が検出されているときには、第３の回転位置特定手段にて、カム軸センサから出力されるカム軸回転信号の変化波形に基づき、エンジンの回転位置を順次特定するようにし、エンジン制御は、この第３の回転位置特定手段にて順次特定される回転位置に基づき実行するようにするとよい。
【００３４】
つまり、このようにすれば、クランク軸センサが故障しても、カム軸回転信号の変化波形に基づき特定されるエンジンの回転位置に基づき、エンジン制御を実行できることになり、エンジン制御装置の信頼性をより向上することが可能となる。また、上記のように、制御対象となるエンジンが自動車用のエンジンである場合には、自動車の信頼性及び安全性を向上させることもできる。
【発明を実施するための最良の形態】
【００３５】
以下に、本発明が適用された実施形態のエンジン制御装置について説明する。尚、本実施形態のエンジン制御装置は、自動車の動力源として使用されるＤＯＨＣ型直列５気筒の４ストローク１サイクルエンジン（いわゆる４サイクルエンジン）を制御するものである。
【００３６】
図１に示すように、本実施形態のエンジン制御装置は、エンジン３を制御するための処理を実行するマイコン（マイクロコンピュータ）５と、マイコン５からの制御信号に従って各種アクチュエータを作動させる駆動回路７と、各種信号をマイコン５に入力させる入力回路９とを備えた電子制御装置（以下、エンジンＥＣＵという）１を中心に構成されている。
【００３７】
そして、エンジンＥＣＵ１のマイコン５には、エンジン３の吸気管１１に設けられた吸入空気量センサ１３からの信号、吸気管１１に設けられたスロットル弁１５の開度を検出するスロットル開度センサ１７からの信号、吸気管１１内の圧力を検出する吸気管圧力センサ１９からの信号、運転者によって操作されるアクセルペダル２１の操作位置を検出するペダル位置センサ２３からの信号、エンジン３の冷却水温を検出する水温センサ２５からの信号、エンジン３のノッキングを検出するためのノックセンサ２７からの信号、エンジン３の排気管２９に設けられた酸素濃度センサ３１からの信号、クランク軸３３の回転に応じてクランク軸センサ３５から出力されるクランク軸回転信号（以下、クランク信号という）、吸気バルブを作動させるカム軸（以下、吸気カム軸という）３７の回転に応じて吸気カム軸センサ３９から出力される吸気カム軸回転信号（以下、吸気カム信号という）、排気バルブを作動させるカム軸（以下、排気カム軸という）４１の回転に応じて排気カム軸センサ４３から出力される排気カム軸回転信号（以下、排気カム信号という）、及び車両のイグニッションスイッチ４５やスタータスイッチ（図示省略）といった各種スイッチのオン／オフ状態を表すスイッチ信号などが、入力回路９を介して入力される。
【００３８】
また、マイコン５は、入力回路９を介して入力される上記各信号に基づいてエンジン３や車両の状態を検出すると共に、その検出結果に基づいて駆動回路７に制御信号を出力することにより、スロットル弁１５の開度を変えるスロットルモータ４９、クランク軸３３に対する吸気カム軸３７の回転位相差（即ち、吸気バルブの開閉タイミング）や吸気バルブのリフト量を変化させる吸気側可変バルブタイミング機構５１を油圧によって作動させるための吸気側オイルコントロールバルブ５３、クランク軸３３に対する排気カム軸４１の回転位相差（即ち、排気バルブの開閉タイミング）や排気バルブのリフト量を変化させる排気側可変バルブタイミング機構５５を油圧によって作動させるための排気側オイルコントロールバルブ５７、各気筒の点火プラグに通電して着火させるための点火コイル５９、及び各気筒のインジェクタ６１、といった各種アクチュエータを制御してエンジン３を作動させる。
【００３９】
一方、エンジンＥＣＵ１の外部には、給電用のメインリレー６３が設けられており、イグニッションスイッチ４５がオンされると、そのメインリレー６３がオンして、当該エンジンＥＣＵ１の電源ライン６５にバッテリ電圧（車載バッテリ６７のプラス端子の電圧）ＶＢが供給される。そして、エンジンＥＣＵ１では、その電源ライン６５に供給されるバッテリ電圧ＶＢをもとにして、マイコン５や駆動回路７及び入力回路９等の各部が動作する。
【００４０】
また、メインリレー６３は、マイコン５が駆動回路７を介してオン／オフさせることもできるようになっている。そして、マイコン５は、イグニッションスイッチ４５のオンに伴いメインリレー６３がオンして動作を開始すると、自らもメインリレー６３をオンさせることで、その後、イグニッションスイッチ４５がオフされても動作を継続し、必要な処理を全て終了したならば、上記メインリレー６３をオフさせて、動作を停止する。尚、こうしたメインリレー６３による給電技術は、例えば特開平１１−２５９３７５号公報等に記載されているように周知である。
【００４１】
ここで、クランク軸センサ３５は、クランク軸３３に固定されたロータ６９の外周に対向して設けられ、該ロータ６９の外周に所定角度（本実施形態では６°）毎の間隔で形成された歯７１を検出して、該歯７１が通過する毎に立ち下がるパルスを出力する電磁ピックアップ式やホールＩＣ式等の回転センサである。そして、そのクランク軸センサ３５からのパルス列であるクランク信号は、入力回路９によりハイとローとの矩形波に波形整形されてマイコン５に入力される。また、上記ロータ６９の外周には、歯７１が２個欠損した歯欠損部が１つ設けられている。
【００４２】
このため、クランク軸センサ３５から入力回路９を介してマイコン５に入力されるクランク信号には、図２に示すように、６°ＣＡ毎（クランク軸３３が６°回転する毎）に有効エッジとしての立下がりエッジが発生すると共に、クランク軸３３の回転位置が、上記ロータ６９の歯欠損部が当該クランク軸センサ３５に対向することとなる基準位置に来ると、立下がりエッジの間隔が３倍の長さ（即ち、１８°ＣＡ分の長さ）になった欠歯部Ｋが現れることとなる。尚、ロータ６９の歯欠損部も“欠歯部”或いは単に“欠歯”と呼ばれることがあり、クランク信号の欠歯部Ｋも単に“欠歯”と呼ばれることがある。
【００４３】
また、本実施形態では、図２に示すように、エンジン３の各気筒が第１気筒＃１→第２気筒＃２→第４気筒＃４→第５気筒＃５→第３気筒＃３の順に、圧縮行程から爆発行程への移行時のＴＤＣ（上死点）となり、クランク信号の欠歯部Ｋは、第４気筒＃４のＢＴＤＣ３０°ＣＡ〜ＢＴＤＣ１２°ＣＡの期間と、第３気筒＃３のＡＴＤＣ４２°ＣＡ〜ＡＴＤＣ６０°ＣＡの期間とに、現れるようになっている。尚、「ＢＴＤＣ」は「上死点前」を意味し、「ＡＴＤＣ」は「上死点後」を意味している。
【００４４】
一方、吸気カム軸センサ３９は、吸気カム軸３７に固定されたロータ（図示省略）の外周に対向して設けられ、そのロータの外周に形成された凹凸に応じて、出力信号のレベルがハイとローとに変化する磁気抵抗素子（ＭＲＥ）式の回転センサであり、この吸気カム軸センサ３９から出力される吸気カム信号も、入力回路９により波形整形されてマイコン５に入力される。
【００４５】
そして、吸気カム軸センサ３９から入力回路９を介してマイコン５に入力される吸気カム信号の１サイクル分（吸気カム軸３７の１回転分であり、クランク軸３３の２回転分）のレベル変化パターンは、図２に示すように、例えば第４気筒＃４のＴＤＣ直前の立下がりエッジを起点にして述べると、「１２０°ＣＡ分：ロー→２４°ＣＡ分：ハイ→９０°ＣＡ分：ロー→５４°ＣＡ分：ハイ→６０°ＣＡ分：ロー→８４°ＣＡ分：ハイ→４８°ＣＡ分：ロー→９６°ＣＡ分：ハイ→１８°ＣＡ分：ロー→１２６°ＣＡ分：ハイ」というように、同じクランク角度分の幅を持つ部分が複数存在しないパターンになっている。また、吸気カム信号の各立下がりエッジは、各気筒のＢＴＤＣ３３°ＣＡのタイミングで生じるようになっている。そして更に、吸気カム信号は、クランク信号における欠歯部Ｋの終了タイミングでは、その各タイミング毎に交互に異なったレベルとなる。具体的には、第４気筒＃４のＢＴＤＣ１２°ＣＡのタイミングではローレベルとなり、第３気筒＃３のＡＴＤＣ６０°ＣＡのタイミングではハイレベルとなる。
【００４６】
また同様に、排気カム軸センサ４３も、排気カム軸４１に固定されたロータ（図示省略）の外周に対向して設けられ、そのロータの外周に形成された凹凸に応じて、出力信号のレベルがハイとローとに変化する磁気抵抗素子式の回転センサであり、この排気カム軸センサ４３から出力される排気カム信号も、入力回路９により波形整形されてマイコン５に入力される。
【００４７】
そして、排気カム軸センサ４３から入力回路９を介してマイコン５に入力される排気カム信号の１サイクル分（排気カム軸４１の１回転分であり、クランク軸３３の２回転分）のレベル変化パターンは、図２に示すように、例えば第４気筒＃４のＴＤＣ直前の立上がりエッジを起点にして述べると、「１０２°ＣＡ分：ハイ→１８°ＣＡ分：ロー→１４４°ＣＡ分：ハイ→１２０°ＣＡ分：ロー→１８°ＣＡ分：ハイ→６０°ＣＡ分：ロー→７２°ＣＡ分：ハイ→７２°ＣＡ分：ロー→１０２°ＣＡ分：ハイ→４２°ＣＡ分：ロー」というパターンになっている。また、排気カム信号の各エッジのうち、第４気筒＃４のＴＤＣ直前の立上がりエッジ（「４２°ＣＡ分：ロー」から「１０２°ＣＡ分：ハイ」へ遷移する立上がりエッジ）は、第４気筒＃４のＢＴＤＣ７８°ＣＡのタイミングで生じるようになっている。
【００４８】
尚、図２において、吸気カム信号と排気カム信号との各波形に付された各矢印の上部に記載されている数字は、その矢印の期間のクランク角度を示している。また、図１では、入力回路９を１つにまとめて記載しているが、入力回路９は、実際には、マイコン５に入力させる入力信号毎に存在しており、その各入力信号の種類に応じた信号処理を行う。例えば、入力信号が、クランク信号、吸気カム信号、排気カム信号や、スイッチ信号であれば、その信号を波形整形してマイコン５に入力させ、吸入空気量センサ１３からの信号や水温センサ２５からの信号といったアナログ信号であれば、その信号から高周波ノイズを除去してマイコン５のＡ／Ｄ変換器用の入力ポートに入力させる。また同様に、駆動回路７も、実際には各アクチュエータ毎に存在している。
【００４９】
以上のようなハードウェア構成のエンジンＥＣＵ１において、マイコン５は、上記のクランク信号、吸気カム信号、及び排気カム信号に基づいて、エンジン３の１サイクル当たりの回転位置を、０°ＣＡ〜７２０°ＣＡのクランク位置として特定すると共に、当該マイコン５内でクランク位置を認識するために参照するクランクカウンタの値を図２の如く更新する。
【００５０】
尚、クランクカウンタの値は、図２における実線では、分解能が３６°ＣＡで且つ０〜１９の範囲でラップラウンドするように示しているが、実際には、点線の楕円内に示すように、クランクカウンタの分解能は６°ＣＡである。つまり、クランクカウンタの値は、分解能が６°ＣＡで且つ０〜１１９の範囲でラップラウンドされる。また、クランクカウンタの値が最大の１１９から最小の０へ戻るタイミングのクランク位置は、第４気筒＃４のＢＴＤＣ６°ＣＡとなっている。そして、マイコン５は、そのクランクカウンタの値に基づいて、エンジン３に対する点火や燃料噴射のタイミングを設定している。
【００５１】
次に、マイコン５がクランク位置を特定するために実行する処理について、図３〜図８に示すフローチャートを用いて説明する。尚、マイコン５は、データを記憶するためのメモリとして、通常のＲＡＭ以外に、上記電源ライン６５にバッテリ電圧ＶＢが供給されない本エンジンＥＣＵ１の動作停止時にもデータを継続的に保持可能なメモリ６（本実施形態では電源バックアップされたＲＡＭであるが、例えば、フラッシュＲＯＭやＥＥＰＲＯＭ等のデータ書き換え可能な不揮発性メモリでも良い）を備えているが、以下の各処理に関する説明において、特に明記していなければ、情報の記憶先は通常のＲＡＭである。また、その通常のＲＡＭに記憶された情報は、イグニッションスイッチ４５のオンに伴い当該マイコン５が動作を開始する際のＲＡＭに対する初期化処理によってクリアされるか或いは他の初期値に設定される。
【００５２】
まず図３は、クランク信号に有効エッジとしての立下がりエッジが発生する毎に実行されるクランク信号割り込み処理を表すフローチャートである。但し、このクランク信号割り込み処理は、スタータスイッチがオンされてスタータによるエンジン３のクランキングが開始されてから一定時間が経過するまでのスタータマスク期間は、クランク信号にスタータの作動による大きなノイズが乗っている可能性が高いため、実行が禁止されるようになっている。
【００５３】
図３に示すように、マイコン５がクランク信号割り込み処理を開始すると、まずＳ１００（Ｓはステップを表す）にて、当該クランク信号割り込み処理を前回開始した時刻から今回開始した時刻までの時間を算出し、その算出した時間をクランク信号のパルス間隔として記憶する。尚、イグニッションスイッチ４５がオンされてマイコン５が動作を開始してから始めて本処理を実行した場合、パルス間隔としては、初期値としての最大値が記憶される。
【００５４】
次にＳ１１０では、Ｓ１００にて今回記憶したパルス間隔（即ち、クランク信号の今回のパルス間隔）Ｔ１と、Ｓ１００にて前回記憶したパルス間隔（即ち、クランク信号の前回のパルス間隔）Ｔ０とを比較して、Ｔ１とＴ０との比（＝Ｔ１／Ｔ０）が所定の判定比Ｈ（例えばＨ＝２．４）以上である、という欠歯判定条件が成立しているか否かを判定し、欠歯判定条件が成立している場合には、クランク信号に欠歯部Ｋが現れた（詳しくは、今回のクランク信号の立下がりエッジが欠歯部Ｋの終了タイミングである）と判定して、続くＳ１２０に移行し、逆に、欠歯判定条件が成立していなければ、Ｓ１８０に移行する。
【００５５】
尚、イグニッションスイッチ４５がオンされてマイコン５が動作を開始してから始めて本処理を実行した場合、Ｔ０は初期値としての最大値に設定されていることから、この場合には、Ｓ１１０にて、必ず欠歯判定条件が成立していないと判定されることになる。
【００５６】
次に、欠歯判定条件が成立した際に実行されるＳ１２０では、吸気カム軸センサ３９から吸気カム信号が正常に入力されているか否かを判断することにより、吸気カム軸センサ３９が正常であるか否かを判定する。そして、吸気カム軸センサ３９が正常であれば、Ｓ１３０に移行して、現在の吸気カム信号のレベルをチェックし、続くＳ１４０にて、クランクカウンタに、上記Ｓ１３０でチェックした吸気カム信号のレベルに応じた値をセットする。
【００５７】
具体的には、吸気カム信号がローレベルであれば、現在のクランク位置が第４気筒＃４のＢＴＤＣ１２°ＣＡであると判断できることから、クランクカウンタに１１９（即ち、０に戻る１つ前の値）をセットし、吸気カム信号がハイレベルであれば、現在のクランク位置が第３気筒＃３のＡＴＤＣ６０°ＣＡであると判断できることから、クランクカウンタに５９（即ち、１１９から３６０°ＣＡ分である６０だけずれた値）をセットする。
【００５８】
一方、Ｓ１２０にて、吸気カム信号（つまり吸気カム軸センサ３９）に異常があると判断された場合には、Ｓ１５０に移行し、排気カム軸センサ４３から排気カム信号が正常に入力されているか否かを判断することにより、排気カム軸センサ４３が正常であるか否かを判定する。そして、排気カム軸センサ４３が正常であれば、Ｓ１６０に移行して、現在の排気カム信号のレベルをチェックし、続くＳ１４０にて、クランクカウンタに、上記Ｓ１６０でチェックした排気カム信号のレベルに応じた値をセットする。
【００５９】
具体的には、排気カム信号がハイレベルであれば、現在のクランク位置が第４気筒＃４のＢＴＤＣ１２°ＣＡであると判断できることから、クランクカウンタに１１９（即ち、０に戻る１つ前の値）をセットし、排気カム信号がローレベルであれば、現在のクランク位置が第３気筒＃３のＡＴＤＣ６０°ＣＡであると判断できることから、クランクカウンタに５９をセットする。
【００６０】
また、Ｓ１２０及びＳ１５０にて、カム軸センサ３９、４３がそれぞれ異常であると判断された場合には、Ｓ１７０に移行して、Ｓ１００にて記憶されたパルス間隔の変化の履歴から、パルス間隔が短くなる傾向にあるか、長くなる傾向にあるかを判断し、その判断結果に従い、現在のクランク位置が第４気筒＃４のＢＴＤＣ１２°ＣＡであるか、第３気筒＃３のＡＴＤＣ６０°ＣＡであるかを判断する。
【００６１】
つまり、クランク位置が第４気筒＃４のＢＴＤＣ１２°ＣＡである場合には、第４気筒＃４内での燃料混合気の圧縮により反力によりパルス間隔が長くなる傾向にあり、逆に、第３気筒＃３のＡＴＤＣ６０°ＣＡでは、第３気筒＃３内での燃料混合気の燃料によりパルス間隔が短くなる傾向にあることから、Ｓ１７０では、こうしたクランク信号の変化状態から現在のクランク位置を特定するのである。
【００６２】
そして、このようにＳ１７０にてクランク位置が特定されると、続くＳ１４０にて、その特定されたクランク位置に応じた値（５９又は１１９）をクランクカウンタにセットする。また、Ｓ１４０にて、クランクカウンタに値１１９若しくは値５９をセットした後は、続くＳ１８０に移行する。
【００６３】
次に、Ｓ１８０では、クランク位置を特定済みか否かを判定し、クランク位置を特定済みであれば、続くＳ１９０に移行し、逆に、クランク位置を特定済みでなければ、そのまま当該クランク信号割り込み処理を終了する。
【００６４】
尚、クランク位置を特定済みとは、イグニッションスイッチ４５のオンに伴い当該マイコン５が動作を開始してから既にクランク位置を特定しているということであり、更に詳しくは、その特定したクランク位置に該当する値をクランクカウンタにセットできており、既にクランクカウンタの値がクランク位置を示す値になっているということである。そして、本実施形態では、マイコン５が動作を開始してから、上述したＳ１４０の処理、若しくは、後述する図４のＳ３４０又はＳ３６０の処理にて、クランクカウンタに値がセットされれば、その時点でクランク位置を特定済みとなる。
【００６５】
次に、Ｓ１９０では、Ｓ１１０での判定結果を参照することにより、クランク信号に欠歯部Ｋが現れか否かを判定し、クランク信号に欠歯部Ｋが現れた場合にはＳ２１０に移行し、逆に、クランク信号に欠歯部Ｋが現れていなければ、Ｓ２００にて、クランクカウンタのカウント処理を行った後、Ｓ２１０に移行する。尚、Ｓ２００では、基本的には、クランクカウンタの値を１増加させるインクリメント処理を行うが、増加前の値が１１９である場合には、値を０に戻すラップラウンドの処理を行う。
【００６６】
Ｓ２１０では、現在のクランク位置が、第４気筒＃４のＢＴＤＣ６°ＣＡを基準にした３６°ＣＡ毎のクランク位置であるか否か（即ち、現在のクランクカウンタの値が６の整数倍の値（＝０，６，１２，…，１０８，１１４）であるか否か）を判定し、３６°ＣＡ毎のクランク位置でなければ、そのまま当該クランク信号割り込み処理を終了し、３６°ＣＡ毎のクランク位置であれば、続くＳ２２０及びＳ２３０の処理を実行した後、当該クランク信号割り込み処理を終了する。
【００６７】
尚、Ｓ２２０では、各気筒の点火と燃料噴射を制御するための制御処理を起動し、続くＳ２３０では、３６°ＣＡ毎に実行すべき他の角度同期制御処理を起動する。この結果、エンジン３の点火時期、燃料噴射量、噴射時期、といった各種制御量の演算、並びに、点火や燃料噴射を実施するためのタイマセット等が行われる。
【００６８】
次に、図４は、吸気カム信号と排気カム信号との何れかにエッジが発生する毎に実行されるカム信号割り込み処理を表すフローチャートである。
図４に示すように、マイコン５がカム信号割り込み処理を開始すると、まずＳ３００にて、当該割り込み処理の起動に今回用いられたカム信号の種類とそのエッジ方向（立上がり若しくは立下がり）を記憶し、続くＳ３１０にて、イグニッションスイッチ（ＩＧＳＷ）４５がオンされているか否かを判定する。そして、Ｓ３１０にて、イグニッションスイッチ４５がオンされていると判定した場合には、Ｓ３２０に移行して、エンジン回転数が所定値ＴＨ１以下であるか否かを判定する。
【００６９】
尚、この所定値ＴＨ１は、エンジン３が本エンジンＥＣＵ１の制御によって作動していると見なされる回転数であり、本実施形態では、アイドル回転数よりも若干低い例えば５００ｒｐｍに設定されている。また、エンジン回転数は、図３のＳ１１０で逐次更新記憶されるクランク信号のパルス間隔に基づいて算出される。
【００７０】
次に、Ｓ３２０にて、エンジン回転数が所定値ＴＨ１以下であると判定された場合、つまり、現在、エンジン３の始動直後である場合には、Ｓ３３０に移行し、逆に、Ｓ３２０にて、エンジン回転数が所定値ＴＨ１を越えていると判定された場合には、Ｓ３９０にて、クランク軸３３の停止位置の推定値である停止位置推定値をメモリ６から消去する初期化を行った後、Ｓ３７０に移行する。尚、停止位置推定値は、後述する４００の停止位置推定処理によってエンジン３の停止時に算出され、メモリ６に記憶されるデータである。
【００７１】
次に、Ｓ３３０では、図３のＳ１８０と同様に、現在、クランク位置を特定済みか否かを判定する。そして、Ｓ３３０にて、クランク位置を特定済みでないと判断されると、続くＳ３４０にて、カム信号に基づく気筒判別処理（図６参照）を実行した後、Ｓ３５０に移行し、逆に、Ｓ３３０にて、クランク位置を特定済みであると判断されると、そのままＳ３５０に移行する。
【００７２】
また、Ｓ３５０では、Ｓ３３０や図３のＳ１５０と同様に、現在、クランク位置を特定済みか否かを判定する。そして、Ｓ３５０にて、クランク位置を特定済みでないと判断されると、続くＳ３６０にて、停止位置推定値に基づくクランク位置の特定処理（図７参照）を実行した後、Ｓ３７０に移行し、逆に、Ｓ３５０にて、クランク位置を特定済みであると判断されると、そのままＳ３７０に移行する。
【００７３】
また、Ｓ３７０では、クランク軸センサ３５からクランク信号が正常に入力されているか否かを判断することにより、クランク軸センサ３５が正常であるか否かを判定する。そして、クランク軸センサ３５が正常であれば、そのまま当該カム信号割り込み処理を終了し、クランク軸センサ３５に異常があれば、続くＳ３８０にて、クランク軸センサ３５を用いることなくクランク位置を更新しつつエンジン制御を行うためのクランクリンプホーム処理を実行し、当該カム信号割り込み処理を終了する。
【００７４】
また、Ｓ３１０にて、イグニッションスイッチ（ＩＧＳＷ）４５がオンされていないと判断された場合、つまり、イグニッションスイッチ（ＩＧＳＷ）４５がオフされて、現在エンジン３が運転状態から停止状態への移行中である場合には、Ｓ４００に移行して、エンジン３の停止位置を推定する停止位置推定処理（図５参照）を実行し、当該カム信号割り込み処理を終了する。
【００７５】
尚、マイコン５は、イグニッションスイッチ（ＩＧＳＷ）４５がオンされることにより起動すると、上記各割り込み処理を繰り返し実行するが、起動後、イグニッションスイッチ（ＩＧＳＷ）４５がオフされ、その後、クランク信号と吸気カム信号と排気カム信号との全てが一定時間以上継続してレベル変化しない、という状態を検出すると、エンジン３が完全に停止したと判断して、メインリレー６３をオフさせ、自らの動作を停止する。
【００７６】
次に、エンジン３の停止時に図４のＳ４００にて実行される停止位置推定処理について説明する。
図５に示す如く、この停止位置推定処理では、まずＳ５００にて、マイコン５の起動時にリセット（＝０）され、後述のＳ６５０の処理にてセット（＝１）される推定禁止フラグＦが、セット（＝１）されているか否かを判断する。そして、推定禁止フラグＦがセットされていれば、そのまま当該停止位置推定処理を終了し、逆に、推定禁止フラグＦがセットされていなければ、Ｓ５１０に移行して、エンジン回転数が所定値ＴＨ０以下であるか否かを判定する。
【００７７】
尚、エンジン回転数は、上述したＳ１１０で逐次更新記憶されるクランク信号のパルス間隔に基づいて算出される。また、所定値ＴＨ０には、アイドル回転数よりも低いエンジン回転数、例えば、上述した所定値ＴＨ１と同じ５００ｒｐｍが設定される。
【００７８】
次に、Ｓ５１０にて、エンジン回転数が所定値ＴＨ０以下ではないと判断された場合には、そのまま当該停止位置推定処理を終了し、Ｓ５１０にて、エンジン回転数が所定値ＴＨ０以下であると判断された場合には、Ｓ５１５にて、クランク信号と吸気カム信号と排気カム信号とが共に正常であるか否かを判断する。そして、Ｓ５１５にて、これら各センサ信号の少なくとも一つが異常であると判断された場合には、そのまま当該停止位置推定処理を終了し、逆に、上記各センサ信号が全て正常であると判断された場合には、Ｓ５２０に移行して、メモリ６に停止位置推定値が記憶されているか否かを判断する。
【００７９】
そして、Ｓ５２０にて、メモリ６に停止位置推定値が記憶されていないと判断された際には、Ｓ５３０に移行して、図３のクランク信号割り込み処理にて更新されるクランクカウンタの値に基づき、停止位置推定値の初期値を設定し、その値をメモリ６に記憶した後、当該停止位置推定処理を終了する。
【００８０】
尚、停止位置推定値は、エンジン３の停止時のクランク位置を表すものであり、本実施形態では、カム信号割り込み処理を起動するのに今回用いられた吸気カム信号若しくは排気カム信号のエッジが、図２に示すＥ１〜Ｅ２０までの２０通りの番号を付したエッジの何れであるかを判別して、そのエッジ番号を停止位置推定値としてメモリ６に記憶するようにされている。
【００８１】
一方、Ｓ５２０にて、メモリ６に停止位置推定値が記憶されていると判断された場合には、Ｓ５４０に移行して、その停止位置推定値を更新する。尚、この更新処理は、基本的には、エッジ番号をインクリメント（＋１）することにより行われ、エッジ番号がＥ２０であるときには、エッジ番号を最小値Ｅ１に戻すことによって、停止位置推定値が更新される。また、後述のＳ５９０の処理にて停止位置推定値の更新方向が通常時とは逆方向に設定されている場合には、Ｓ５４０では、エッジ番号をデクリメント（−１）することにより、停止位置推定値を更新し、また、この更新動作時にエッジ番号がＥ１になっているときには、エッジ番号を最大値Ｅ２０に戻すことによって、停止位置推定値を更新する。
【００８２】
こうして、Ｓ５４０にて停止位置推定値が更新されると、今度は、Ｓ５５０にて、図４のＳ３００にて今回記憶したカム信号のエッジ方向と前回記憶したカム信号のエッジ方向とを比較することにより、エンジン３の回転方向がエンジン運転時の回転方向である正回転方向であるか、或いは、それとは逆の逆回転方向であるかを判定する。
【００８３】
つまり、図２から明らかな如く、エンジン３の正回転時にマイコン５に入力されるカム信号のエッジは、その入力順序とエッジ方向とが決まっており、エンジン３が逆回転した際には、エッジの入力順序やエッジ方向が、エンジン３の正回転時とは異なることから、Ｓ５５０では、カム信号割り込み処理を起動するのに今回用いられたカム信号の種類及びエッジ方向と、前回のカム信号の種類及びエッジ方向とを比較することにより、エンジン３は正回転しているか逆回転しているかを判定するのである。
【００８４】
また、例えば、エンジン３の正回転によってクランク位置が図２のエッジ番号Ｅ５とＥ６との間に入り、停止位置推定値がエッジ番号Ｅ５として記憶されている状態で、吸気カム信号の立上がりエッジが入力されてカム信号割り込み処理が起動されたときのように、カム信号割り込み処理の起動に用いられたカム信号のエッジだけでは、エンジン３の回転方向を識別できない領域があるので、続くＳ５６０では、Ｓ５５０の判定処理にてエンジン３の回転方向を識別できたか否かを判定する。
【００８５】
そして、Ｓ５６０にて、エンジン３の回転方向を識別できたと判断された場合には、Ｓ５７０に移行して、Ｓ５５０による判定結果に基づき、エンジン３の回転方向が反転したか否か（つまり、エンジン３が逆回転したか否か）を判定し、Ｓ５７０にて、エンジン３の回転方向が反転したと判定された場合には、Ｓ５８０に移行して、そのときの回転方向に従いメモリ６に記憶されている停止位置推定値を修正し、続くＳ５９０にて、Ｓ５４０の停止位置推定値の更新処理における停止位置推定値の更新方向を今までとは逆方向に反転させた後、当該停止位置推定処理を終了する。尚、Ｓ５７０にてエンジン３の回転方向は反転していないと判断された場合には、そのまま当該停止位置推定処理を終了する。
【００８６】
また、Ｓ５６０にて、エンジン３の回転方向を識別できなかったと判断された場合には、Ｓ５９５に移行し、Ｓ５４０にて更新された停止位置推定値に加えて、エンジン３が現在想定している回転方向とは逆方向に回転した際の停止位置推定値を所謂候補として追加する。つまり、例えばＳ５４０にて、エンジン３が正回転方向に回転しているとして停止位置推定値を更新した際には、Ｓ５９５では、エンジン３が逆回転方向に回転しているものとして更新した停止位置推定値を、停止位置推定値の新たな候補として追加するのである。そして、このようにＳ５９５にて停止位置推定値を追加した後は、そのまま当該停止位置推定処理を終了する。
【００８７】
次に、エンジン３の始動時にクランク位置が特定されていないときに、図４のＳ３４０にて実行される気筒判別処理について説明する。
図６に示すように、この気筒判別処理では、まずＳ６０５にて、クランク信号と吸気カム信号と排気カム信号とが共に正常であるか否かを判断する。そして、Ｓ６０５にて、これら各センサ信号の少なくとも一つが異常であると判断された場合には、そのまま当該気筒判別処理を終了し、逆に、上記各センサ信号が全て正常であると判断された場合には、Ｓ６１０に移行して、Ｓ３００にて記憶したカム信号の種類及びエッジ方向に基づき、今回のカム信号割り込み処理の起動は、吸気カム信号の立上がりエッジによるものであるか否かを判断する。
【００８８】
そして、Ｓ６１０にて、今回のカム信号割り込み処理の起動は、吸気カム信号の立上がりエッジによるものであると判断されると、Ｓ６１５に移行して、前述のスタータマスク期間が過ぎた（以下、「スタータマスクが解除された」という）か否かを判断し、スタータマスクが解除されていれば、Ｓ６２０にて、クランク軸センサ３５から入力されるクランク信号の立上がり（又は立下がり）エッジをカウントする図示しないカウント処理を開始した後、当該気筒判別処理を終了し、逆に、スタータマスクが解除されていなければ、そのまま当該気筒判別処理を終了する。
【００８９】
一方、Ｓ６１０にて、今回のカム信号割り込み処理の起動は、吸気カム信号の立上がりエッジによるものでないと判断された場合には、Ｓ６３０に移行して、今度は、今回のカム信号割り込み処理の起動は、吸気カム信号の立下がりエッジによるものであるか否かを判断する。
【００９０】
Ｓ６３０にて、今回のカム信号割り込み処理の起動は、吸気カム信号の立下がりエッジによるものでないと判断されると、そのまま当該気筒判別処理を終了し、そうでなければ、Ｓ６３５に移行して、Ｓ６２０の処理により、現在、クランク信号のカウント処理が実行されているか否かを判断する。
【００９１】
そして、クランク信号のカウント処理は未だ実行されていなければ、そのまま当該気筒判別処理を終了し、逆に、クランク信号のカウント処理が実行されていれば、Ｓ６４０に移行して、吸気カム信号の立上がりエッジの入力時にＳ６２０にてカウントを開始したクランク信号の立上がり（又は立下がり）エッジのカウント値から、エンジン３の回転位置（クランク位置）を特定する。
【００９２】
つまり、本実施形態では、吸気カム信号の立下がりエッジは、各気筒のＢＴＤＣ３３°ＣＡのタイミングで生じるようになっており、しかも、吸気カム信号の立上がり後、次に立ち下がるまでの期間（クランク角度）は、各気筒毎に異なる期間（クランク角度）に設定されていることから、この気筒判別処理では、吸気カム信号が一端立ち上がって、その後立ち下がるまでの期間を、クランク信号のエッジをカウントすることにより計測し、そのカウント値に基づき、エンジン３のクランク位置を特定するようにされているのである。
【００９３】
そして、このように、Ｓ６４０にて、エンジンのクランク位置が特定されると、続くＳ６５０に移行して、クランクカウンタに、Ｓ６４０にて特定したクランク位置に対応する値をセットして、当該気筒判別処理を終了する。尚、Ｓ６５０にて、クランクカウンタに値がセットされると、その後は、クランク位置特定済みとして、当該気筒判別処理や後述のクランク位置特定処理は禁止される。
【００９４】
次に、エンジン３の始動時にクランク位置が特定されていないときに、図４のＳ３６０にて実行されるクランク位置特定処理について説明する。
図７に示すように、このクランク位置特定処理では、まずＳ７００にて、クランク信号と吸気カム信号と排気カム信号とが共に正常であるか否かを判断する。そして、Ｓ７００にて、これら各センサ信号の少なくとも一つが異常であると判断された場合には、Ｓ７３０に移行し、逆に、上記各センサ信号が全て正常であると判断された場合には、Ｓ７１０に移行して、メモリ６に停止位置推定値が記憶されているか否かを判断する。
【００９５】
また、Ｓ７１０にて、メモリ６に停止位置推定値が記憶されていないと判断された場合には、Ｓ７３０に移行し、逆に、Ｓ７１０にて、メモリ６に停止位置推定値が記憶されていると判断された場合には、Ｓ７２０に移行して、カム信号割り込み処理を今回起動するのに用いられたカム信号及びそのエッジ方向は、メモリ６に記憶されている停止位置推定値に対応しているか否かを判断する。
【００９６】
つまり、停止位置推定値は、エンジン３の正回転での停止時に最後に通過したカム信号のエッジを表すエッジ番号であり、そのエッジ番号からは、エンジン始動時に次に入力されるべきカム信号及びそのエッジ方向を特定できることから、Ｓ７２０では、メモリ６に記憶されている停止位置推定値と今回入力されたカム信号のエッジとが対応しているか否かを判断することにより、メモリ６に記憶されている停止位置推定値（複数記憶されている場合にはその内の少なくとも一つ）が、エンジン３の実際の回転位置と一致しているか否かを判断するのである。
【００９７】
そして、Ｓ７２０にて、メモリ６に記憶された停止位置推定値（複数記憶されている場合には、その内の全て）が、エンジン３の実際の回転位置と一致していないと判断された場合には、Ｓ７３０に移行し、逆に、Ｓ７２０にて、メモリ６に記憶された停止位置推定値（複数記憶されている場合には、その内の少なくとも一つ）が、エンジン３の実際の回転位置と一致していると判断された場合には、Ｓ７４０にて、メモリ６には複数の停止位置推定値が記憶されており、その内の一つでもエンジン３の実際の回転位置と一致していないものがあるか否かを判断する。
【００９８】
尚、Ｓ７３０では、メモリ６に記憶された全ての停止位置推定値を消去することにより、メモリ６を初期化する。そして、この初期化処理終了後は、そのまま当該クランク位置特定処理を終了する。
【００９９】
次に、Ｓ７４０にて、メモリ６にエンジン３の実際の回転位置と一致しない停止位置推定値が記憶されていると判断された場合には、Ｓ７５０に移行して、その停止位置推定値をメモリ６から消去する初期化の処理を実行した後、Ｓ７６０に移行し、逆に、Ｓ７４０にて、メモリ６にはエンジン３の実際の回転位置と一致しない停止位置推定値が記憶されていないと判断された場合には、そのままＳ７６０に移行する。
【０１００】
そして、Ｓ７６０では、前述のスタータマスク期間が過ぎた（以下、「スタータマスクが解除された」という）か否かを判断し、スタータマスクが解除されていれば、Ｓ７７０に移行して、現在メモリ６に記憶されている停止位置推定値は一つであるか否かを判断する。
【０１０１】
次に、Ｓ７７０にて、メモリ６に記憶されている停止位置推定値は一つではない（つまり複数である）と判断されるか、或いは、Ｓ７６０にて、スタータマスクは解除されていないと判断された場合には、Ｓ７８０にて、メモリ６に記憶されている停止位置推定値をエンジン３の正回転方向に沿って値１だけ更新した後、当該クランク位置特定処理を終了する。
【０１０２】
一方、Ｓ７７０にて、メモリ６に記憶されている停止位置推定値は一つであると判断された場合には、Ｓ７９０に移行して、メモリ６に記憶された停止位置推定値に基づき、クランクカウンタに現在のクランク位置を表す値をセットし、当該クランク位置特定処理を終了する。
【０１０３】
例えば、メモリ６に停止位置推定値として、エッジ番号Ｅ１が記憶されている場合、今回のカム信号割り込み処理は、次のエッジ番号Ｅ２のエッジにより起動されたものであることから、クランクカウンタには、エッジ番号Ｅ２のエッジに対応したクランク位置を表す値がセットされ、これにより、エンジン始動時最初のクランク位置が特定されることになる。尚、Ｓ７９０にて、クランクカウンタに値がセットされると、その後は、クランク位置特定済みとして、当該クランク位置特定処理や気筒判別処理は禁止される。
【０１０４】
次に、カム信号割り込み処理において、クランク軸センサ３５が故障し、クランク信号が正常に入力されないときに実行されるクランクリンプホーム処理について説明する。
図８に示すように、このクランクリンプホーム処理では、まずＳ８００にて、今回のカム信号割り込み処理の起動は、吸気カム信号のエッジ入力によるものか否かを判断し、吸気カム信号のエッジ入力によるものではない（つまり、排気カム信号のエッジ入力によるものである）場合には、そのまま当該クランクリンプホーム処理を終了する。
【０１０５】
一方、Ｓ８００にて、今回のカム信号割り込み処理の起動は、吸気カム信号のエッジ入力によるものであると判断されると、Ｓ８１０に移行して、その吸気カム信号の入力エッジは、立下がりエッジであるか否かを判断し、入力エッジが立下がりエッジであれば、Ｓ８２０に移行し、逆に、入力エッジが立下がりエッジでなければ（つまり、立上がりエッジであれば）、Ｓ８６０に移行する。
【０１０６】
そして、Ｓ８２０では、現在、クランク位置を特定済みか否かを判定し、クランク位置を特定済みであれば、Ｓ８２５にて、クランクカウンタの値を更新した後、Ｓ９５０に移行し、逆に、クランク位置を特定済みでなければ、Ｓ８３０に移行して、Ｈパルス時間計時フラグＦ２がセット（＝１）されているか否かを判断する。尚、このＨパルス時間計時フラグＦ２と後述のＬパルス時間計時フラグＦ１は、エンジンＥＣＵ１の起動時にマイコン５の初期化処理によってリセット（＝０）状態に初期化される。
【０１０７】
次に、Ｓ８３０にて、Ｈパルス時間計時フラグＦ２がセットされていると判断されると、Ｓ８４０に移行して、吸気カム信号立下がり後の経過時間を表すＬパルス時間の計時処理を起動し、Ｓ８５０にて、Ｌパルス時間計時フラグＦ１をセット（＝１）した後、当該クランクリンプホーム処理を終了する。
【０１０８】
次にＳ８１０にて、今回入力された吸気カム信号のエッジは、立上がりエッジであると判断された場合に実行されるＳ８６０では、上記Ｓ８２０と同様に、現在、クランク位置を特定済みか否かを判定し、クランク位置を特定済みであれば、そのまま当該クランクリンプホーム処理を終了し、逆に、クランク位置を特定済みでなければ、Ｓ８７０に移行して、Ｌパルス時間計時フラグＦ１がセット（＝１）されているか否かを判断する。
【０１０９】
そして、Ｌパルス時間計時フラグＦ１がセットされていなければ、そのまま当該クランクリンプホーム処理を終了し、逆に、Ｌパルス時間計時フラグＦ１がセットされていれば、Ｓ８８０に移行して、Ｓ８４０にて起動した計時処理によるＬパルス時間の計時結果を読み込み、計時処理を終了させると共に、その読み込んだＬパルス時間を記憶する。尚、このＬパルス時間は、吸気カム信号が今までローレベルとなっていた時間である。
【０１１０】
また、このようにＳ８８０にて、Ｌパルス時間を記憶すると、今度は、Ｓ８９０に移行して、吸気カム信号立上がり後の経過時間を表すＨパルス時間の計時処理を起動し、続くＳ９００にて、Ｌパルス時間計時フラグＦ１をリセット（＝０）すると共に、Ｈパルス時間計時フラグＦ２をセット（＝１）した後、当該クランクリンプホーム処理を終了する。
【０１１１】
また次に、Ｓ８３０にて、Ｈパルス時間計時フラグＦ２がセットされていると判断された場合には、Ｓ９１０に移行して、Ｓ８８０にて起動した計時処理によるＨパルス時間の計時結果を読み込み、計時処理を終了させると共に、その読み込んだＨパルス時間を記憶する。尚、このＨパルス時間は、吸気カム信号が今までハイレベルとなっていた時間である。
【０１１２】
そして、このようにＳ９１０にて、Ｈパルス時間を記憶すると、Ｓ９２０にて、Ｈパルス時間計時フラグＦ２をリセット（＝０）した後、Ｓ９３０に移行し、Ｓ８８０で記憶したＬパルス時間とＳ９１０で記憶したＨパルス時間との比に基づき、現在の吸気カム信号の立下がりエッジにおけるエンジン３の回転位置（クランク位置）を特定する。
【０１１３】
つまり、このクランクリンプホーム処理では、エンジンＥＣＵ１の起動時にリセットされる２つの計時フラグＦ１、Ｆ２を用いることで、まず、吸気カム信号の立下がり後、Ｓ８４０及びＳ８８０の処理によって、吸気カム信号が次に立ち上がる迄のＬパルス時間を計時し、吸気カム信号の立上がり後は、Ｓ８９０及びＳ９１０の処理によって、吸気カム信号が再度立下がる迄のＨパルス時間を計時するようにしている。
【０１１４】
従って、Ｓ９１０にて、Ｈパルス時間の計時を終了したときには、今回吸気カム信号の立下がりエッジが入力される迄の吸気カム信号一周期分のＬパルス時間とＨパルス時間とが計時されていることになる。
【０１１５】
そして、本実施形態では、吸気カム信号の立下がりエッジは、全ての気筒＃１〜＃５のＢＴＤＣ３３°ＣＡのタイミングで生じるようになっており、吸気カム信号の立上がりエッジから立下がりエッジまでの変化パターン（Ｌパルス時間とＨパルス時間）は、各気筒毎に異なるように設定されている。
【０１１６】
そこで、本実施形態では、上記Ｓ９３０において、吸気カム信号の前回の立下がりエッジから今回の立下がりエッジまでの吸気カム信号のＬパルス時間とＨパルス時間との比から、吸気カム信号の変化パターンを認識し、現在のクランク位置を特定するようにしているのである。
【０１１７】
例えば、図９に示すように、時点ｔ０でエンジン３が始動され、吸気カム信号が入力されるようになると、最初の立下がりエッジから次の立下がりエッジまでの間、吸気カム信号がローレベルとなるＬパルス時間と、吸気カム信号がハイレベルとなるＨパルス時間とを計時し、その計時が完了した時点ｔ１で、Ｌパルス時間とＨパルス時間との比（図では、１８：１２６）に基づき、クランク位置を特定する。
【０１１８】
そして、このように、Ｓ９３０にてクランク位置が特定されると、Ｓ９４０にて、その特定されたクランク位置に基づきクランクカウンタをセットし、その後、Ｓ９５０に移行する。尚、この処理により、クランク位置は特定済みとなり、その後、当該クランクリンプホーム処理では、吸気カム信号の立下がりエッジ毎に、Ｓ９５０の処理が実行される。
【０１１９】
また次に、Ｓ９５０においては、例えば、図９に示す如く、次の立下がりエッジの入力時に、クランクカウンタが本来の値となるように、クランクカウンタの値を一定時間△ｔ（例えば１ｍsec.）毎に更新すると共に、吸気カム信号の入力周期（本実施形態では、１４４°ＣＡ）に同期してエンジン制御を行うための同期制御処理を起動し、当該クランクリンプホーム処理を終了する。
【０１２０】
以上説明したように、本実施形態では、カム信号割り込み処理において、停止位置推定値と吸気カム信号及び排気カム信号とからクランク位置を特定するクランク位置特定処理（Ｓ３６０）と、吸気カム信号とクランク信号とに基づきクランク位置を特定する気筒判別処理（Ｓ３４０）と、を実行することにより、クランク位置特定処理にてクランク位置を特定できない場合でも、気筒判別処理にてクランク位置を特定できれば、その特定されたクランク位置に基づき、クランクカウンタに値をセットするようにされている。
【０１２１】
このため、本実施形態のエンジン制御装置によれば、エンジン３の停止時に停止位置推定処理（Ｓ４００）にて停止位置を推定することができなかったとしても、次のエンジン始動時には、気筒判別処理にて特定されたクランク位置を利用して、エンジン制御を開始することができる。
【０１２２】
ところで、クランク位置特定処理（Ｓ３６０）や気筒判別処理（Ｓ３４０）では、エンジン始動時のクランク位置を特定するために、吸気カム信号と排気カム信号、或いは、吸気カム信号とクランク信号、を利用するため、吸気カム軸センサ３９や排気カム軸センサ４３が故障すると、エンジン始動時にクランク位置を特定できなくなる。
【０１２３】
しかし、本実施形態では、クランク信号割り込み処理においても、クランク信号の欠歯部を利用してクランク位置を特定するようにしており（Ｓ１１０〜Ｓ１７０）、しかも、そのクランク位置の特定には、吸気カム軸センサ３９及び排気カム軸センサ４３の一方が故障した際には、故障していない他方のセンサを使用し（Ｓ１３０、Ｓ１６０）、吸気カム軸センサ３９及び排気カム軸センサ４３の両方が故障した際には、クランク信号のパルス幅の変化を利用する（Ｓ１７０）ようにされている。
【０１２４】
従って、本実施形態のエンジン制御装置によれば、吸気カム軸センサ３９や排気カム軸センサ４３が故障し、クランク位置特定処理（Ｓ３６０）及び気筒判別処理（Ｓ３４０）にてエンジン始動時のクランク位置を特定できなくなったとしても、クランク信号割り込み処理にてクランク位置を特定して、エンジン制御を開始することができるようになり、装置の信頼性を向上できる。
【０１２５】
また、本実施形態のエンジン制御装置においては、クランク軸センサ３５が故障すると、クランク信号割り込み処理を正常に実行できなくなるので、クランク信号割り込み処理によってエンジン始動時のクランク位置を特定したり、そのクランク位置を表すクランクカウンタの値を更新することができなくなるが、本実施形態では、クランク軸センサ３５の故障時には、カム信号割り込み処理においてクランクリンプホーム処理を実行し、このクランクリンプホーム処理にて、吸気カム軸センサ３９から入力される吸気カム信号を利用して、エンジン始動時のクランク位置の特定及びその更新を行うようにしている。
【０１２６】
このため、本実施形態のエンジン制御装置によれば、クランク軸センサ３５が故障しても、吸気カム軸センサ３９が故障していなければ、エンジン制御を実行することができることになり、これによっても、装置の信頼性を向上できる。
【０１２７】
尚、本実施形態においては、カム信号割り込み処理における停止位置推定処理（図５）が本発明の停止位置推定手段に相当し、同じくクランク位置特定処理（図７）が本発明の第１の回転位置特定手段に相当し、クランク信号割り込み処理において実行されるＳ２００の処理が本発明の回転位置更新手段に相当する。
【０１２８】
また、クランク信号割り込み処理において実行されるＳ１１０〜Ｓ１７０の処理は、本発明の第２の回転位置特定手段に相当し、その内、特に、Ｓ１２０及びＳ１５０の処理は、本発明の第１の異常検出手段に相当し、更に、カム信号割り込み処理において実行されるＳ３７０の処理は、本発明の第２の異常検出手段に相当し、同じくＳ３８０のクランクリンプホーム処理（図８）は、本発明の第３の回転位置特定手段に相当する。
【０１２９】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に限定されるものではなく、本発明の技術範囲内にて、種々の態様を採ることができる。
例えば、上記実施形態において、クランク軸センサ３５の故障時に実行されるクランクリンプホーム処理では、吸気カム軸センサ３９からの吸気カム信号を利用してクランク位置の特定及び更新を行うものとして説明したが、排気カム軸センサ４３からの排気カム信号を利用してクランク位置の特定及び更新を行うようにしてもよく、或いは、この２つのカム軸センサ３９，４３の内の一方を利用してクランク位置の特定及び更新を行い、そのセンサが故障した際には、他方のセンサを利用してクランク位置の特定及び更新を行うようにしてもよい。
【０１３０】
また、上記実施形態では、エンジン停止時の停止位置は、カム信号割り込み処理において、吸気カム信号と排気カム信号とのエッジに基づき推定するものとして説明したが、吸気カム信号若しくは排気カム信号の一方のエッジを用いて推定するようにしてもよく、或いは、クランク信号割り込み処理において更新されるクランクカウンタの値に基づき停止位置を推定するようにしてもよい。
【０１３１】
また、上記実施形態のように、エンジン停止時の停止位置を吸気カム信号や排気カム信号のエッジに基づき推定するようにした場合、エンジン３の気筒数が増えると、カム信号のエッジを増加させ、そのエッジ間隔を短くする必要があるが、このためには、カム軸センサの形状を複雑にし、しかも、カム軸に対するカム軸センサの組み付け精度を高める必要があることから、装置のコストアップを招いてしまう。
【０１３２】
そこで、こうした問題を防止し、カム軸センサの形状をより簡単にし、しかも、カム軸への組み付け精度も要求されないようにするには、エンジン停止時の停止位置を、カム信号とクランク信号とを利用して推定するようにしてもよい。つまり、例えば、上記実施形態において、エンジン停止時には、吸気カム信号のエッジを利用して、停止位置を大まかに推定し、その推定後のエンジン停止位置を、クランク信号をカウントすることにより推定するようにすれば、カム軸センサの形状を複雑にしたり、カム軸センサのカム軸への組み付け精度を高めることなく、エンジン３の停止位置を精度よく推定することができるようになる。
【０１３３】
また上記実施形態では、エンジン３の停止位置を推定する際には、図５のＳ５５０〜Ｓ５９５の処理において、カム信号のエッジ方向の変化に基づきエンジン３の回転方向を判定し、エンジン３が逆回転したときには、その回転方向に応じて停止位置推定値を修正し、更に、回転方向を正確に判定できないときには、各回転方向に応じて停止位置推定値の候補を追加するものとして説明したが、エンジン３が停止する直前で逆回転しても、カム信号のエッジが発生することのないようにカム軸センサを形成すれば、こうした処理を不要にすることができる。
【０１３４】
つまり、上記実施形態において、エンジン３が逆回転したときにカム信号のエッジが入力されるのは、カム軸センサ３９、４３が、エンジン３の各気筒の上死点の直前でカム信号のエッジを発生するように構成されているためであることから、例えば、エンジン３の各気筒の上死点若しくは上死点を過ぎた位置でカム信号のエッジが発生するように、カム軸センサを形成すれば、図５におけるＳ５５０〜Ｓ５９５の処理を不要にすることができる。
【０１３５】
また、上記実施形態では、クランク信号にノイズが乗ると予想されるスタータマスク期間が過ぎるまではエンジンの制御を開始しないようにしていたが、そのスタータマスク期間中は時間タイマで燃料噴射などを実施するように構成すれば、スタータマスク期間中であっても、クランク位置特定処理若しくは気筒判別処理にてエンジン３の回転位置（クランク位置）が特定された時点からエンジン制御を開始することができる。
【０１３６】
また、上記実施形態では、吸気カム信号と排気カム信号との２つのカム軸回転信号を利用して、エンジン３の停止位置を推定したり、エンジン３の回転位置（クランク位置）を特定するようにしたが、本発明は、クランク信号の他にカム軸回転信号が１つだけ入力されるものであっても適用することができる。
【０１３７】
また、上記実施形態では、クランク軸３３のロータ６９に欠歯（歯欠損部）を設けることで基準位置を検出しているが、基準位置を検出するためのロータ６９の構成としては、そのような欠歯を設ける構成に限定されるものではなく、他の歯形状構成（例えば、いわゆる足し歯や余分歯を設ける構成、欠歯の逆で１箇所だけ突起部（歯）が他より長い等の不連続部を設ける構成など）でも良い。
【図面の簡単な説明】
【０１３８】
【図１】実施形態のエンジン制御装置全体の構成を表す構成図である。
【図２】クランク信号と吸気カム信号と排気カム信号とクランクカウンタとの関係を表すタイムチャートである。
【図３】クランク信号割り込み処理を表すフローチャートである。
【図４】カム信号割り込み処理を表すフローチャートである。
【図５】停止位置推定処理を表すフローチャートである。
【図６】カム信号に基づく気筒判別処理を表すフローチャートである。
【図７】停止位置推定値に基づくクランク位置特定処理を表すフローチャートである。
【図８】クランク軸センサの故障時に実行されるクランクリンプホーム処理を表すフローチャートである。
【図９】クランクリンプホーム処理の動作を説明するタイムチャートである。
【符号の説明】
【０１３９】
１…エンジンＥＣＵ、３…エンジン、５…マイコン、６…メモリ、７…駆動回路、９…入力回路、１１…吸気管、１３…吸入空気量センサ、１５…スロットル弁、１７…スロットル開度センサ、１９…吸気管圧力センサ、２１…アクセルペダル、２３…ペダル位置センサ、２５…水温センサ、２７…ノックセンサ、２９…排気管、３１…酸素濃度センサ、３３…クランク軸、３５…クランク軸センサ、３７…吸気カム軸、３９…吸気カム軸センサ、４１…排気カム軸、４３…排気カム軸センサ、４５…イグニッションスイッチ、４９…スロットルモータ、５１…吸気側可変バルブタイミング機構、５３…吸気側オイルコントロールバルブ、５５…排気側可変バルブタイミング機構、５７…排気側オイルコントロールバルブ、５９…点火コイル、６１…インジェクタ、６３…メインリレー、６５…電源ライン、６７…車載バッテリ、６９…ロータ、７１…歯、Ｋ…欠歯部。
【図１】
2005351211.tif 000003
【図２】
2005351211.tif 000004
【図３】
2005351211.tif 000005
【図４】
2005351211.tif 000006
【図５】
2005351211.tif 000007
【図６】
2005351211.tif 000008
【図７】
2005351211.tif 000009
【図８】
2005351211.tif 000010
【図９】
2005351211.tif 000011