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