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