(57)【特許請求の範囲】
【請求項１】
第１の信号出力手段からエンジンのクランク軸の回転に応じて出力され、前記クランク軸の回転位置が予め設定された１つの特定位置でない時には、前記クランク軸が所定の単位角度回転する期間を１周期としたパルス信号となり、前記クランク軸の回転位置が前記特定位置に来た時には、前記クランク軸が前記単位角度よりも大きい所定角度回転する期間を１周期とした欠歯信号となるクランク角信号と、
第２の信号出力手段から前記クランク軸の回転に対し１／２の比率で回転する回転軸の回転に応じて出力され、前記クランク角信号がパルス信号となっている期間中に論理レベルが変化することにより、前記クランク角信号が欠歯信号となるタイミングでは、その各タイミング毎に交互に異なった論理レベルとなる気筒判別用信号とを入力すると共に、
カウント値が前記クランク軸の２回転分の累積回転角度であるクランク角を示すカウンタと、
前記エンジンの始動を検知すると共に、該エンジンの始動を検知してから最初に前記クランク角信号が欠歯信号になったことを検出すると、前記カウンタのカウント値を、その時の前記気筒判別用信号の論理レベルに応じた所定の計数開始値であって、前記検出した欠歯信号の発生タイミングでのクランク角に対応する計数開始値に初期設定する始動時用処理を行い、その後は、前記カウンタのカウント値を、前記クランク角信号に基づき更新して前記クランク軸の２回転分に相当する値の範囲で周回させるカウント制御手段とを備え、
前記カウンタのカウント値に基づき前記エンジンの気筒判別を行う処理を、前記カウント制御手段が前記カウント値を前記計数開始値に初期設定した時点から開始するように構成されているエンジン制御装置であり、
更に、当該装置は、前記エンジンの各気筒に関する該各気筒毎の制御処理を、前記カウンタのカウント値に応じて択一的に切り替えて実行するように構成されていると共に、前記クランク角信号が欠歯信号になってから前記クランク軸が所定の一定角度だけ回転した基準タイミングが、何れかの気筒に関する制御処理を実行する期間から他の気筒に関する制御処理を実行する期間への切り替わりタイミングとなっており、
前記カウント制御手段は、前記カウンタのカウント値を前記計数開始値に初期設定した後は、前記クランク角信号に基づき前記基準タイミングが到来したことを検知した時に、前記カウンタのカウント値を、その基準タイミングに対応した正常値に設定するための正常化処理を行うこと、
を特徴とするエンジン制御装置。
【請求項２】
請求項１に記載のエンジン制御装置において、
前記カウント制御手段は、
前記始動時用処理として、前記エンジンの始動を検知してから最初に前記クランク角信号が欠歯信号になったことを検出した時の、前記気筒判別用信号の論理レベル（以下、始動直後検出レベルという）がローレベルの場合には、前記カウンタのカウント値を第１の計数開始値に初期設定し、前記始動直後検出レベルがハイレベルの場合には、前記カウンタのカウント値を、前記第１の計数開始値とは前記クランク軸の１回転分に相当する値だけ異なった第２の計数開始値に初期設定すること、
を特徴とするエンジン制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、４サイクルエンジンを制御するエンジン制御装置に関し、特にエンジンの気筒判別に関するものである。
【０００２】
【従来の技術】
一般に、エンジンを制御するエンジン制御装置においては、図１０に示す如く、エンジンのクランク軸の回転に応じてクランク角センサ１から出力されるクランク角信号（回転信号とも呼ばれる）ＮＥと、クランク軸の回転に対し１／２の比率で回転するエンジンのカム軸の回転に応じてカム角センサ２から出力される気筒判別用信号Ｇとが入力される。そして、信号処理回路３が、上記両信号ＮＥ，Ｇから気筒判別用の各種信号ＮＥ２，ＴＤＣ，Ｇ２を生成してマイクロコンピュータ（以下、ＣＰＵという）４に出力し、ＣＰＵ４は、その信号処理回路３からの信号ＮＥ２，ＴＤＣ，Ｇ２に基づき気筒判別を行ってエンジンを制御するようにしている。
【０００３】
ここで、カム角センサとして、電磁ピックアップ（ＭＰＵ）式のセンサを用いた場合の気筒判別方法の従来例について、図１１を用いて説明する。
まず、この例において、クランク角センサから出力されるクランク角信号ＮＥは、クランク軸の回転位置が予め設定された１つの特定位置でない時には、クランク軸が１０°回転する期間を１周期としたパルス信号となり、クランク軸の回転位置が特定位置に来た時には、クランク軸が３０°回転する期間を１周期とした欠歯信号Ｋとなる。つまり、クランク角信号ＮＥは、クランク軸が１０°回転する毎（１０°ＣＡ毎）にローレベル→ハイレベル→ローレベルといった具合にパルス状に変化すると共に、クランク軸の回転位置が特定位置に来た時には、立ち上がりの間隔が３倍長くなり、その３倍長くなった期間が欠歯信号Ｋとなる。そして、この欠歯信号Ｋは、クランク軸が１回転する毎（３６０°ＣＡ毎）に発生する。
【０００４】
また、この例において、ＭＰＵ式のカム角センサから出力される気筒判別用信号Ｇは、カム軸が１回転する毎（即ちクランク軸が２回転する毎）に、且つ、クランク角信号ＮＥが欠歯信号Ｋとなって１０°ＣＡ毎のパルス信号に戻るタイミングからクランク軸が１２０°回転するまでの期間（１２０°ＣＡ分の期間）内に、ローレベル→ハイレベル→ローレベルといった具合にパルス状に変化する。
【０００５】
次に、エンジン制御装置においては、信号処理回路が、上記クランク角信号ＮＥ及び気筒判別用信号Ｇと、エンジンを始動させるためのスタータスイッチがオンされた時にハイレベルとなるスタータ信号ＳＴＡとに基づいて、下記の［Ｓ１−１］〜［Ｓ１−４］の動作を行う。
【０００６】
［Ｓ１−１］：まず、信号処理回路は、図１１の時刻ｔ１に示すように、スタータ信号ＳＴＡがハイレベルになると（スタータスイッチがオンされると）、クランク角信号ＮＥ中における欠歯信号Ｋの検出動作（即ち、クランク角信号ＮＥが欠歯信号Ｋになったことを検出する動作）を開始する。
【０００７】
［Ｓ１−２］：そして、時刻ｔ２以降に示すように、クランク角信号ＮＥが欠歯信号Ｋになったことを最初に検出すると、以後、クランク角信号ＮＥを分周して、クランク軸が３０°回転する期間を１周期とした（換言すれば、クランク軸が３０°回転する毎（３０°ＣＡ毎）に立ち上がる）第２パルス信号としての３０°ＣＡ信号ＮＥ２を生成し、その３０°ＣＡ信号ＮＥ２をＣＰＵへ出力すると共に、欠歯信号Ｋを検出してから３０°ＣＡ信号ＮＥ２の所定周期分の期間（この例では、４周期分の期間であり１２０°ＣＡ分の期間）を、カム角センサからの気筒判別用信号Ｇが立ち上がるか否かの判定区間ＨＫとして設定する。
【０００８】
尚、このような判定区間ＨＫを設けているのは、欠歯信号Ｋが発生するタイミングと気筒判別用信号Ｇが立ち上がるタイミングとの時間差が、センサの個体差や経時変化、或いは更に、カム軸を操作して吸排気バルブの開閉タイミングを可変にする制御などによって、常に一定とはならないためである。
【０００９】
［Ｓ１−３］：また、信号処理回路は、図１１の時刻ｔ２’，ｔ３’ｔ４’，…，ｔ７’に示すように、上記判定区間ＨＫの終了タイミング毎に３０°ＣＡ分だけアクティブレベル（この例ではローレベル）となる基準位置信号ＴＤＣを生成して、その基準位置信号ＴＤＣをＣＰＵに出力する。よって、この基準位置信号ＴＤＣは、クランク軸の回転位置が欠歯信号Ｋの発生する特定位置から１２０°進んだ基準位置に来た時に、３０°ＣＡ分だけローレベルとなる。
【００１０】
［Ｓ１−４］：そして更に、信号処理回路は、上記基準位置信号ＴＤＣがアクティブレベルとなる毎にレベルが反転する第２気筒判別用信号Ｇ２を、以下の手順で生成してＣＰＵへ出力する。
即ち、信号処理回路は、初期状態では第２気筒判別用信号Ｇ２をローレベルにしており、上記判定区間ＨＫ内で気筒判別用信号Ｇが立ち上がった場合には、その判定区間ＨＫの終了時の基準位置信号ＴＤＣの立ち下がりタイミングにて、第２気筒判別用信号Ｇ２をハイレベルに設定し（図１１の時刻ｔ２’，ｔ４’，ｔ６’参照）、逆に、判定区間ＨＫ内で気筒判別用信号Ｇが立ち上がらなかった場合には、その判定区間ＨＫの終了時の基準位置信号ＴＤＣの立ち下がりタイミングにて、第２気筒判別用信号Ｇ２をローレベルに設定する（図１１の時刻ｔ３’，ｔ５’，ｔ７’参照）。
【００１１】
一方、エンジン制御装置において、ＣＰＵは、図１１の時刻ｔ１に示すように、スタータ信号ＳＴＡがハイレベルになると、内部のクランクカウンタの値（カウント値）ＣＮＴを−１に設定し、以後、信号処理回路からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に起動される処理により、下記の［Ｃ１−１］〜［Ｃ１−４］の手順でクランクカウンタの値ＣＮＴを更新する。尚、クランクカウンタの値ＣＮＴは、クランク軸の２回転分の累積回転角度であるクランク角を、３０°ＣＡ信号ＮＥ２の周期に相当する３０°を分解能として示すものであり、この例では０から２３までの値となる。
【００１２】
［Ｃ１−１］：信号処理回路からの基準位置信号ＴＤＣがハイレベルであり、且つ、現在のクランクカウンタの値ＣＮＴが０よりも小さければ（即ち−１であれば）、クランクカウンタの値ＣＮＴを変えずに、そのまま処理を終了する。
［Ｃ１−２］：信号処理回路からの基準位置信号ＴＤＣがハイレベルであり、且つ、現在のクランクカウンタの値ＣＮＴが０以上であれば、クランクカウンタの値ＣＮＴを１つカウントアップ（＋１）させる。
【００１３】
［Ｃ１−３］：これに対して、信号処理回路からの基準位置信号ＴＤＣがローレベルであれば、信号処理回路からの第２気筒判別用信号Ｇ２の論理レベルを読み取り、その読み取った第２気筒判別用信号Ｇ２の論理レベルがハイレベルであれば、クランクカウンタの値ＣＮＴを強制的に０へと初期化する。
【００１４】
［Ｃ１−４］：また、信号処理回路からの基準位置信号ＴＤＣがローレベルであり、且つ、第２気筒判別用信号Ｇ２の論理レベルもローレベルであれば、現在のクランクカウンタの値ＣＮＴ（現在値）が０〜２３の中間値である１２以上か否かを判定して、現在値が１２よりも小さければ、クランクカウンタの値ＣＮＴを１２にし、逆に現在値が１２以上であれば、クランクカウンタの値ＣＮＴを０にする、といった補正処理を行う。
【００１５】
即ち、ＣＰＵは、信号処理回路からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に、下記の表１の規則でクランクカウンタの値ＣＮＴを更新している。尚、表１及び後述する他の表において、ＣＮＴ(n-1) は、今回の処理で更新する前のクランクカウンタの値（現在値）を示しており、ＣＮＴ(n) は、今回の処理で更新する新たなクランクカウンタの値（今回値）を示している。また、「Ｌ」はローレベルを示し、「Ｈ」はハイレベルを示している。
【００１６】
【表１】
0004399997.tif 000002
【００１７】
このため、図１１の時刻ｔ２〜ｔ２’に示すように、スタータ信号ＳＴＡがハイレベルになってからの最初の判定区間ＨＫで気筒判別用信号Ｇが立ち上がったならば、その判定区間ＨＫが終了する時刻ｔ２’にて、信号処理回路からＣＰＵへの基準位置信号ＴＤＣがローレベルになると共に、第２気筒判別用信号Ｇ２がハイレベルとなり、ＣＰＵでは、クランクカウンタの値ＣＮＴが０に初期化される。
【００１８】
そして以後、ＣＰＵにおいては、クランクカウンタの値ＣＮＴが、０→１→２→３…とカウントアップされていき、時刻ｔ３’に示すように、次の欠歯信号Ｋの発生に伴う判定区間ＨＫの終了タイミングでは、信号処理回路からの第２気筒判別用信号Ｇ２が時刻ｔ２’とは反対のローレベルとなるため、その時刻ｔ３’では、クランクカウンタの値ＣＮＴを１２にする補正処理が行われる。
【００１９】
そして更に、時刻ｔ４’に示すように、次の欠歯信号Ｋの発生に伴う判定区間ＨＫの終了タイミングでは、第２気筒判別用信号Ｇ２が時刻ｔ３’とは反対のハイレベルとなるため、その時刻ｔ４’では、クランクカウンタの値ＣＮＴが０に初期化され、その後は、図１１の時刻ｔ４’以降に示すように、時刻ｔ２’〜時刻ｔ４’と同様の動作が繰り返される。
【００２０】
そして、ＣＰＵは、このように周回されるクランクカウンタの値ＣＮＴの値に基づいて、点火すべき気筒を判別する。具体例を挙げると、エンジンが直列４気筒エンジンであるとすると、例えば、クランクカウンタの値ＣＮＴが０の時に、第１気筒＃１の上死点前（ＢＴＤＣ）３０°ＣＡと判断し、クランクカウンタの値ＣＮＴが６の時に、第２気筒＃２のＢＴＤＣ３０°ＣＡと判断し、クランクカウンタの値ＣＮＴが１２の時に、第３気筒＃３のＢＴＤＣ３０°ＣＡと判断し、クランクカウンタの値ＣＮＴが１８の時に、第４気筒＃４のＢＴＤＣ３０°ＣＡと判断する。
【００２１】
尚、ＣＰＵが最初に基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ハイであることを検出した時だけでなく、その後も、同じ条件が成立する毎にクランクカウンタの値ＣＮＴを０に初期化するようにしているのは、万一、クランクカウンタの値ＣＮＴがノイズ等の影響によって正常値から増減しても、それを速やかに正常値へと戻せるようにするためである。また、ＣＰＵが基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ローであることを検出した時に、クランクカウンタの値ＣＮＴを、その時の値に応じて（詳しくは１２以上か否かに応じて）０又は１２に補正するようにしているのは、ノイズ等の影響によって信号処理回路からＣＰＵへの３０°ＣＡ信号ＮＥ２が数発欠落したとしても、クランクカウンタの値ＣＮＴを正常値へと復帰させることができるようにするためである。
【００２２】
一方、近年では、カム角センサとして、カム軸の回転位置に応じて出力レベルがハイレベルとローレベルとに変化する磁気抵抗素子（ＭＲＥ）式のセンサを採用する方向に移行している。
そこで次に、カム角センサとして、ＭＲＥ式のセンサを用いた場合の気筒判別方法の従来例について、図１２を用いて説明する。
【００２３】
まず、図１２の例において、クランク角センサから出力されるクランク角信号ＮＥは、図１１の場合と同じであるが、ＭＲＥ式のカム角センサから出力される気筒判別用信号Ｇは、カム軸の回転位置に応じて、クランク角センサからのクランク角信号ＮＥがパルス信号となっている期間中に論理レベルが１回反転するようになっている。このため、気筒判別用信号Ｇは、クランク軸が２回転する期間（７２０°ＣＡの期間）を１周期とし、クランク角信号ＮＥが欠歯信号Ｋとなるタイミングでは、その各タイミング毎に交互に異なった論理レベルとなる。
【００２４】
次に、エンジン制御装置においては、信号処理回路が、上記クランク角信号ＮＥ及び気筒判別用信号Ｇと、スタータ信号ＳＴＡとに基づいて、下記の［Ｓ２−１］〜［Ｓ２−４］の動作を行う。
［Ｓ２−１］：まず、ＭＲＥ式のカム角センサを用いた場合でも、信号処理回路は、図１２の時刻ｔ１に示す如くスタータ信号ＳＴＡに立ち上がりが生じると、クランク角信号ＮＥ中における欠歯信号Ｋの検出動作を開始する。
【００２５】
［Ｓ２−２］：そして、この場合でも、信号処理回路は、図１２の時刻ｔ２以降に示すように、クランク角信号ＮＥが欠歯信号Ｋになったことを最初に検出すると、以後、クランク角信号ＮＥを分周して、３０°ＣＡ毎に立ち上がる第２パルス信号としての３０°ＣＡ信号ＮＥ２を生成し、その３０°ＣＡ信号ＮＥ２をＣＰＵへ出力する。
【００２６】
［Ｓ２−３］：また、信号処理回路は、図１２の時刻ｔ２’，ｔ３’ｔ４’，…，ｔ７’に示す如く、欠歯信号Ｋを検出してから３０°ＣＡ信号ＮＥ２の所定周期分の期間（この例では、４周期分の期間であり１２０°ＣＡ分の期間）が経過する毎に、３０°ＣＡ分だけアクティブレベル（この例ではローレベル）となる基準位置信号ＴＤＣを生成して、その基準位置信号ＴＤＣをＣＰＵに出力する。よって、この場合でも、ＣＰＵへの基準位置信号ＴＤＣは、クランク軸の回転位置が欠歯信号Ｋの発生する特定位置から１２０°進んだ基準位置に来た時に、３０°ＣＡ分だけローレベルとなる。
【００２７】
［Ｓ２−４］：そして更に、信号処理回路は、上記基準位置信号ＴＤＣがアクティブレベルとなる毎にレベルが反転する第２気筒判別用信号Ｇ２を、以下の手順で生成してＣＰＵへ出力する。
即ち、まず、信号処理回路は、初期状態では第２気筒判別用信号Ｇ２をローレベルにしており、また、図１２にて「○」印で示すように、クランク角信号ＮＥが欠歯信号Ｋになったことを検出する毎に気筒判別用信号Ｇの論理レベルを読み取る。そして、信号処理回路は、図１２の時刻ｔ２’，ｔ３’，ｔ４’，…，ｔ７’に示す如く、基準位置信号ＴＤＣの立ち下がりタイミング毎に、第２気筒判別用信号Ｇ２を、そのタイミングの直前の欠歯信号Ｋの検出時に読み取った気筒判別用信号Ｇの論理レベルとは反対のレベルに設定する（図１２における斜めの点線矢印参照）。
【００２８】
このため、図１２の例において、信号処理回路からＣＰＵに出力される基準位置信号ＴＤＣと第２気筒判別用信号Ｇ２は、ＭＰＵ式のカム角センサを用いた場合（図１１）と同様に変化することとなる。
そして、エンジン制御装置において、ＣＰＵは、図１２の時刻ｔ１に示すように、スタータ信号ＳＴＡに立ち上がりが生じると、内部のクランクカウンタの値（カウント値）ＣＮＴを−１に設定し、以後、信号処理回路からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に起動される処理により、ＭＰＵ式のカム角センサを用いた場合の前述した［Ｃ１−１］〜［Ｃ１−４］と同じ手順（即ち表１の規則）でクランクカウンタの値ＣＮＴを更新する。尚、この場合においても、クランクカウンタの値ＣＮＴは、クランク角を、３０°ＣＡ信号ＮＥ２の周期に相当する３０°を分解能として示すものであり、０から２３までの値となる。
【００２９】
このため、図１２の時刻ｔ２に示すように、スタータ信号ＳＴＡがハイレベルになってから最初の欠歯信号Ｋの発生タイミングで、気筒判別用信号Ｇがローレベルであったならば、その時点の１２０°ＣＡ後である時刻ｔ２’にて、信号処理回路からＣＰＵへの基準位置信号ＴＤＣがローレベルになると共に、第２気筒判別用信号Ｇ２がハイレベルとなり、ＣＰＵでは、上記［Ｃ１−３］の処理によりクランクカウンタの値ＣＮＴが０に初期化される。
【００３０】
そして以後、ＣＰＵにおいては、クランクカウンタの値ＣＮＴが、信号処理回路からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に０→１→２…とカウントアップされていき、時刻ｔ３’に示す如く基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ローになった時には、上記［Ｃ１−４］の処理により、クランクカウンタの値ＣＮＴが、その時の現在値に応じて１２又は０（図１２の例では１２）に補正され、その後、時刻ｔ４’に示す如く、再び基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ハイになると、クランクカウンタの値ＣＮＴは上記［Ｃ１−３］の処理により０に初期化される。
【００３１】
その後は、図１２の時刻ｔ４’以降に示すように、時刻ｔ２’〜時刻ｔ４’と同様の動作が繰り返される。そして、ＣＰＵは、ＭＰＵ式のカム角センサを用いた場合と同様に、クランクカウンタの値ＣＮＴの値に基づいて、点火すべき気筒を判別する。
【００３２】
【発明が解決しようとする課題】
ところで、図１１，図１２を用いて説明した従来の各エンジン制御装置では、エンジンの始動検知時から早期に気筒判別を行うことができないという欠点がある。
【００３３】
つまり、スタータスイッチがオンされてスタータ信号ＳＴＡに立ち上がりが生じた後、クランク角信号ＮＥに最初に欠歯信号Ｋが発生しても、その時点から基準位置信号ＴＤＣが立ち下がる１２０°ＣＡ後のタイミングまでは、クランクカウンタの値ＣＮＴが確定されず、その分、クランクカウンタのカウント動作の開始が遅れると共に、気筒判別の開始が遅れてしまう。
【００３４】
このため、従来のエンジン制御装置では、エンジンの制御性（特に、始動制御の性能）を向上させるのに限界が生じていた。
そこで、本発明は、エンジンの始動検知時から早期に気筒判別を行うことができるエンジン制御装置を提供することを目的としている。
【００３５】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項１に記載の本発明のエンジン制御装置には、エンジンのクランク軸の回転に応じて第１の信号出力手段から出力されるクランク角信号と、クランク軸の回転に対し１／２の比率で回転する回転軸の回転に応じて第２の信号出力手段から出力される気筒判別用信号とが入力される。
【００３６】
そして、第１の信号出力手段から出力されるクランク角信号は、クランク軸の回転位置が予め設定された１つの特定位置でない時には、クランク軸が所定の単位角度回転する期間を１周期としたパルス信号となり、クランク軸の回転位置が前記特定位置に来た時には、クランク軸が前記単位角度よりも大きい所定角度回転する期間を１周期とした欠歯信号となる。また、第２の信号出力手段から出力される気筒判別用信号は、上記クランク角信号がパルス信号となっている期間中に論理レベルが変化することにより、クランク角信号が欠歯信号となるタイミングでは、その各タイミング毎に交互に異なった論理レベルとなる。
【００３７】
また更に、本発明のエンジン制御装置は、カウント値がクランク軸の２回転分の累積回転角度であるクランク角を示すカウンタ（所謂クランクカウンタ）と、そのカウンタのカウント値を繰り返し周回させるカウント制御手段とを備えている。
そして、カウント制御手段は、エンジンの始動を検知すると共に、該エンジンの始動を検知してから最初にクランク角信号が欠歯信号になったことを検出すると、カウンタのカウント値を、その時の気筒判別用信号の論理レベル（即ち、エンジンの始動を検知してから最初にクランク角信号が欠歯信号になったことを検出した時に読み取った気筒判別用信号の論理レベルであり、以下、始動直後検出レベルという）に応じた所定の計数開始値であって、検出した欠歯信号の発生タイミングでのクランク角に対応する計数開始値に初期設定する始動時用処理を行う。
【００３８】
具体的には、請求項２に記載の如く、カウント制御手段は、始動時用処理として、始動直後検出レベルがローレベルの場合には、カウンタのカウント値を第１の計数開始値に初期設定し、逆に、始動直後検出レベルがハイレベルの場合には、カウンタのカウント値を、上記第１の計数開始値とはクランク軸の１回転分（３６０°ＣＡ分）に相当する値だけ異なった第２の計数開始値に初期設定する。
【００３９】
そして更に、カウント制御手段は、カウンタのカウント値を計数開始値に初期設定した後は、カウンタのカウント値を、上記クランク角信号に基づき更新してクランク軸の２回転分に相当する値の範囲で周回させる。具体的には、クランク角信号に基づいて、クランク軸がカウンタのカウント値の分解能に相当する角度回転したことを検出すると共に、その検出時毎に、カウンタのカウント値をカウントアップ或いはカウントダウンさせる。
【００４０】
そして、本発明のエンジン制御装置は、上記カウンタのカウント値に基づいてエンジンの気筒判別を行うが、その気筒判別用の処理を、カウント制御手段がカウンタのカウント値を計数開始値に初期設定した時点（即ち、カウント制御手段によりエンジンの始動が検知されて最初にクランク角信号が欠歯信号になった時）から開始する。
【００４１】
つまり、第２の信号出力手段から出力される気筒判別用信号は、図１２に例示した気筒判別用信号Ｇと同様のものであり、クランク角信号が欠歯信号となる３６０°ＣＡ毎のタイミングでは、その各タイミング毎に交互に異なった論理レベルとなるため、クランク角信号が欠歯信号になった時の気筒判別用信号の論理レベルを見れば、クランク角を特定することができる。
【００４２】
そこで、本発明のエンジン制御装置では、エンジンの始動を検知してから最初にクランク角信号が欠歯信号になったことを検出した時（図１２の時刻ｔ２に相当する時）に、その時の気筒判別用信号の論理レベルに応じて、その論理レベルから特定されるクランク角に応じた値を、カウンタに計数開始値としてセットし、更に、そのセット時から、カウンタのカウント値に基づく気筒判別用の処理を行うようにしている。
【００４３】
このため、本発明のエンジン制御装置によれば、エンジンの始動を検知してから最初にクランク角信号が欠歯信号となるタイミングから、カウンタのカウント値を確定させて気筒判別を開始することができる。よって、エンジンの始動を検知した時から従来装置よりも早期に気筒判別を行うことができ、その結果、エンジンの制御性（特に、始動制御の性能）を向上させることができる。
【００４４】
ところで、この種のエンジン制御装置では、一般に、エンジンの各気筒に関する該各気筒毎の制御処理を、本発明でのカウンタに相当するクランクカウンタのカウント値に応じて択一的に切り替えて実行するように構成される。そして、この場合、何れかの気筒に関する制御処理の実行期間から他の気筒に関する制御処理の実行期間への切り替わりタイミングは、クランク角信号が欠歯信号となるタイミング（以下、欠歯タイミングともいう）ではなく、その欠歯タイミングからクランク軸が所定の一定角度だけ回転したタイミングを基準にして設定されることが多い。
【００４５】
また、本発明のエンジン制御装置においても、図１２を用いて説明した従来装置のように、クランク角信号に基づき特定のクランク角になったことを検知する毎に、カウンタのカウント値を、その特定のクランク角に対応した正常値に設定するための正常化処理（前述の初期化或いは補正処理に相当）を実施することが好ましい。つまり、万一、カウンタのカウント値がノイズ等の影響によって正常な値から外れても、それを正常値へと戻せるからである。
【００４６】
ここで、各気筒毎の制御処理をクランクカウンタのカウント値に応じて択一的に切り替えて実行すると共に、その各制御処理の実行期間の切り替わりタイミングが、欠歯タイミングとは異なるタイミングを基準にして設定されている場合に、各欠歯タイミングで上記正常化処理を行うように構成すると、クランクカウンタのカウント値がノイズ等の影響によってずれてしまった場合に、各気筒毎の制御処理を正常に実行できなくなる期間が比較的長くなってしまうという欠点がある。
【００４７】
具体例を挙げて説明すると、まず、例えば図１２を用いて説明したエンジン制御装置において、ＣＰＵは、図１３に示すように、クランクカウンタの値ＣＮＴが０〜５の期間に、第１気筒＃１の点火に関する学習処理（例えば、各気筒毎に設けられたノックセンサのうち、該当する気筒のノックセンサから信号を読み取って、その気筒の点火時期の補正値等を学習演算する制御処理）を実行し、クランクカウンタの値ＣＮＴが６〜１１の期間に、第２気筒＃２の点火に関する学習処理を実行し、クランクカウンタの値ＣＮＴが１２〜１７の期間に、第３気筒＃３の点火に関する学習処理を実行し、クランクカウンタの値ＣＮＴが１８〜２３の期間に、第４気筒＃４の点火に関する学習処理を実行するものとする。
【００４８】
つまり、この例では、各気筒毎の制御処理の実行期間の切り替わりタイミングが、欠歯タイミングから１２０°ＣＡ後のタイミング（基準位置信号ＴＤＣがローレベルとなるタイミング）を基準にして設定されている。尚、図１３は、図１２の下段と同じ状況を表している。
【００４９】
ここで、この例において、図１４に例示するように、図１２の時刻ｔ５に相当する欠歯タイミングの時刻ｔｎで、気筒判別用信号Ｇにローレベルのノイズが発生したとする。
すると、その時刻ｔｎから１２０°ＣＡ後の基準位置信号ＴＤＣの立ち下がりりタイミングでは、前述した［Ｓ２−４］の作用により、第２気筒判別用信号Ｇ２がハイレベルのままとなり、その結果、クランクカウンタの値ＣＮＴが、前述した［Ｃ１−３］の初期化により、誤って０に設定されてしまう。そして、クランクカウンタの値ＣＮＴは、本来１２，１３，…，２３とカウントアップされるはずが、０，１，…１１とカウントアップされていき、基準位置信号ＴＤＣの次の立ち下がりタイミングで、上記［Ｃ１−３］の初期化により、正しい値の０に戻されることとなる。
【００５０】
よって、この場合には、図１４の時刻ｔｎから１２０°ＣＡ後の基準位置信号ＴＤＣの立ち下がりタイミングから、その基準位置信号ＴＤＣが次に立ち下がるまでの３６０°ＣＡ分の期間（図１４にて「誤学習」と記した期間）であって、本来は第３気筒＃３に関する学習処理と第４気筒＃４に関する学習処理とが順次行われるべき期間に、第１気筒＃１に関する学習処理と第２気筒＃２に関する学習処理とが誤って実施されることとなる。
【００５１】
一方、クランクカウンタの値ＣＮＴに対する正常化処理として、前述した［Ｃ１−３］の初期化及び［Ｃ１−４］の補正処理に代えて、例えば、クランク角信号ＮＥが欠歯信号になったことを検出した時に、その時の気筒判別用信号Ｇの論理レベルに応じて、その論理レベルがローであったならば、クランクカウンタの値ＣＮＴを強制的に２０に設定し、逆に上記論理レベルがハイであったならば、クランクカウンタの値ＣＮＴを強制的に８に設定する、といった処理を行うようにしても、図１３と同様の動作が得られる。
【００５２】
但し、このように構成した場合、図１５に例示するように、図１２の時刻ｔ５に相当する欠歯タイミングの時刻ｔｎで、気筒判別用信号Ｇにローレベルのノイズが発生したとすると、クランクカウンタの値ＣＮＴは、その時刻ｔｎで誤って２０に設定され、その後、次の欠歯タイミングで２０に設定されるまで、正常な値から外れた状態でカウントアップされることとなる。
【００５３】
そして、この場合には、図１５の時刻ｔｎから次の欠歯タイミングまでの３６０°ＣＡ分の期間（図１５にて「誤学習」と記した期間）に、第４気筒＃４に関する学習処理と第１気筒＃１に関する学習処理と第２気筒＃２に関する学習処理とが誤って実施されてしまうだけでなく、時刻ｔｎの直前に正常に実施されていた第２気筒＃２に関する学習処理が中途半端に終了されてしまうと共に、時刻ｔｎの次の欠歯タイミングで第４気筒＃４に関する学習制御が中途半端に開始されてしまう。
【００５４】
つまり、通常時において、欠歯タイミング毎にカウント値に対する正常化処理を実施するように構成すると、図１４と図１５との比較からも分かるように、各気筒毎の制御処理を適切に行うことができない期間が長くなってしまうのである。
【００５５】
そこで、請求項１のエンジン制御装置では、エンジンの各気筒に関する該各気筒毎の制御処理を、前記カウンタのカウント値に応じて択一的に切り替えて実行するように構成されていると共に、クランク角信号が欠歯信号になってからクランク軸が所定の一定角度だけ回転した基準タイミングが、何れかの気筒に関する制御処理を実行する期間から他の気筒に関する制御処理を実行する期間への切り替わりタイミングとなっている。
【００５６】
そして更に、カウント制御手段は、カウンタのカウント値を計数開始値に初期設定した後は、欠歯タイミングではなく、クランク角信号に基づき前記基準タイミング（クランク角信号が欠歯信号になってからクランク軸が所定の一定角度だけ回転したタイミング）が到来したことを検知した時に、カウンタのカウント値を、その基準タイミングに対応した正常値に設定するための正常化処理を行うようになっている。
【００５７】
このため、カウンタのカウント値がノイズ等の影響によって正常な値から外れてしまった場合に、各気筒毎の制御処理の実行状態（実行順序や実行期間）に与える影響を最小限に抑えつつ、そのカウンタのカウント値を正常値へと戻すことができる。
【００５８】
尚、正常化処理としては、前述した［Ｃ１−３］のように、カウンタのカウント値を無条件に設定するものでも良いし、前述した［Ｃ１−４］のように、カウンタの値を、その現在値に応じて設定するものでも良い。つまり、正常化処理は、カウンタのカウント値を、通常のカウントとは別に、正常値と思われる値に設定し直す処理であれば良い。
【００５９】
【発明の実施の形態】
以下、本発明が適用された実施形態のエンジン制御装置について、図面を用いて説明する。
まず図１は、第１実施形態のエンジン制御装置（以下、ＥＣＵという）１０の構成を表す構成図である。尚、このＥＣＵ１０は、例えば直列４気筒の４サイクルエンジンを制御対象としており、４個の気筒に夫々対応した燃料噴射弁１１〜１４及び点火コイル２１〜２４を駆動してエンジンを制御する。そして、このＥＣＵ１０は、前述した図１２とほぼ同様の要領で気筒判別を行うものである。
【００６０】
図１に示すように、ＥＣＵ１０は、エンジンを制御するための各種処理を行うＣＰＵ（マイクロコンピュータ）３１と、入力バッファ３３，３５，３７と、Ａ／Ｄ変換器３９と、出力バッファ４１と、信号処理回路４３とを備えている。
そして、エンジンに取り付けられたクランク角センサ４７から出力されるクランク角信号ＮＥが、入力バッファ３３を介して信号処理回路４３に入力され、また、エンジンに取り付けられたカム角センサ４９から出力される気筒判別用信号Ｇが、入力バッファ３５を介して信号処理回路４３に入力される。
【００６１】
ここで、クランク角センサ４７は、第１の信号出力手段に相当するものであり、エンジンのクランク軸に固定されたロータ４７ａと、そのロータ４７ａの外周に対向して設けられ、該ロータ４７ａの外周に１０°ＣＡの間隔で形成された歯を検出してパルス信号を出力する光電式やホールＩＣ式の信号出力部４７ｂとからなる。そして、上記ロータ４７ａの外周には、歯が２個欠損した欠歯部が設けられている。
【００６２】
このため、クランク角センサ４７から入力バッファ３３を介して信号処理回路４３に入力されるクランク角信号ＮＥは、前述の図１２に示したように、クランク軸が１０°回転する毎（１０°ＣＡ毎）にローレベル→ハイレベル→ローレベルといった具合にパルス状に変化すると共に、クランク軸の回転位置が上記ロータ４７ａの欠歯部に対応する１つの特定位置（即ち、ロータ４７ａの欠歯部が信号出力部４７ｂに対向する位置）に来た時には、立ち上がりの間隔が３倍長くなる。そして、１０°ＣＡ毎にパルス状に変化する部分がパルス信号となり、また、立ち上がりの間隔が３倍長くなる（即ちパルス信号が２回欠落する）期間が３６０°ＣＡ毎に発生して、この期間が欠歯信号Ｋとなっている（図２及び図４参照）。
【００６３】
また、カム角センサ４９は、第２の信号出力手段に相当するものであり、クランク軸の回転に対し１／２の比率で回転するエンジンのカム軸に固定されたロータ４９ａと、そのロータ４９ａの回転に応じて、該ロータ４９ａが１／２回転する毎（即ち３６０°ＣＡ毎）に論理レベルが反転する気筒判別用信号Ｇを出力する磁気抵抗素子（ＭＲＥ）を有した信号出力部４９ｂとからなる。
【００６４】
そして、カム角センサ４９から入力バッファ３５を介して信号処理回路４３に入力される気筒判別用信号Ｇは、前述の図１２に示したように、クランク角センサ４７からパルス信号が出力されている期間中に論理レベルが１回反転して、クランク角センサ４７から上記欠歯信号Ｋが出力されるタイミングでは、その各タイミング毎に交互に異なった論理レベルとなる。
【００６５】
一方、ＥＣＵ１０内のＣＰＵ３１には、エンジンを始動させるためのスタータスイッチ５１がオンされた時にハイレベルとなるスタータ信号ＳＴＡや、アクセルペダルが全閉の時にオンされるアイドルスイッチ５３からの信号など、エンジンの運転状態を示す各種スイッチ信号が、入力バッファ３７を介して入力される。
【００６６】
そして更に、ＣＰＵ３１には、吸入空気量を検出するエアフロメータ５５，スロットル操作量を検出するスロットルセンサ５７，及び冷却水温を検出する水温センサ５９などの各種センサからの信号が、Ａ／Ｄ変換器３９を介して入力される。
【００６７】
また、信号処理回路４３には、入力バッファ３７からスタータ信号ＳＴＡも入力されており、この信号処理回路４３は、そのスタータ信号ＳＴＡと上記クランク角信号ＮＥ及び気筒判別用信号Ｇとに基づいて、後述する手順により、３０°ＣＡ毎に立ち上がる第２パルス信号としての３０°ＣＡ信号ＮＥ２と、クランク軸の回転位置が欠歯信号Ｋの発生する特定位置から１２０°進んだ基準位置に来た時に３０°ＣＡ分だけアクティブレベル（本実施形態ではローレベル）となる基準位置信号ＴＤＣと、その基準位置信号ＴＤＣがアクティブレベルとなる毎にレベルが反転する第２気筒判別用信号Ｇ２とを生成して、ＣＰＵ３１へ出力する。
【００６８】
そして、ＣＰＵ３１は、信号処理回路４３から出力される上記信号ＮＥ２，ＴＤＣ，Ｇ２に基づいて気筒判別を行うと共に、その判別結果と上記各種スイッチ信号及び上記各種センサからの信号とに基づいて、エンジンの最適な点火時期や燃料噴射時期及び噴射量等を演算し、その演算結果に基づき、出力バッファ４１を介して、各気筒の燃料噴射弁１１〜１４を駆動すると共に、イグナイタ６１を駆動して所定の気筒の点火コイル２１〜２４に通電する。
【００６９】
次に、信号処理回路４３は、クランク角センサ４７から欠歯信号Ｋが出力されたこと（即ち、クランク角信号ＮＥが欠歯信号Ｋになったこと）を検出する欠歯検出部６３と、この欠歯検出部６３により上記欠歯信号Ｋの発生が検出された時に、カム角センサ４９からの気筒判別用信号Ｇの論理レベルを読み取るレベル読取部６５と、クランク角信号ＮＥから３０°ＣＡ信号ＮＥ２を生成する３０°ＣＡ信号生成部６７と、それら各部６３，６５，６７と連携して上記基準位置信号ＴＤＣ及び第２気筒判別用信号Ｇ２を生成する判別用信号生成部６９とを備えている。
【００７０】
尚、前述したように、クランク角センサ４７からは、クランク軸の回転に伴いロータ４７ａの欠歯部が信号出力部４７ｂに対向する位置に来た時に、欠歯信号Ｋが出力されるため、本実施形態では、その欠歯信号Ｋの検出を“欠歯検出”ともいっている。
【００７１】
そして、欠歯検出部６３は、スタータ信号ＳＴＡに立ち上がりが生じると（スタータスイッチがオンされると）、エンジンが始動されたと判断して、以後、図２に示す手順により、クランク角信号ＮＥ中における欠歯信号Ｋの検出を行う。即ち、図２に示すように、まず欠歯検出部６３は、クランク角信号ＮＥがローレベルからハイレベルへと立ち上がる毎に、計時用のタイマ値Ｔ２を０にリセットすると共に、そのリセットする直前のタイマ値Ｔ２から、クランク角信号ＮＥの最新の立ち上がり間隔Ｔ１を計測している。そして更に、図２における一点鎖線に示す如く、上記計測した立ち上がり間隔Ｔ１をＮ倍して、欠歯信号検出用のしきい値時間（Ｎ×Ｔ１）を設定する。
【００７２】
ここで、本実施形態では、前述したように、クランク角センサ４７のロータ４７ａに設けられた欠歯部が、歯を２個欠損させたものであり、欠歯信号Ｋは、１０°ＣＡ毎のパルス信号が２回欠落する期間であるため、上記Ｎは、２〜３の間の例えば２．５に設定されている。
【００７３】
そして、欠歯検出部６３は、上記タイマ値Ｔ２がしきい値時間（Ｎ×Ｔ１）を越えた時、即ち、図２の例では時刻ｔａであり、クランク角信号ＮＥの前回の立ち上がりタイミングから、その時に設定しているしきい値時間（Ｎ×Ｔ１）が経過しても、クランク角信号ＮＥが立ち上がらないことを検出した時に、クランク角センサ４７から欠歯信号Ｋが出力されたと判断して、欠歯検出信号ＦＫを一定の期間だけハイレベルにする。
【００７４】
尚、欠歯検出信号ＦＫは、例えばクランク角信号ＮＥが次に立ち下がったタイミングで、ローレベルに戻される。また、この欠歯検出信号ＦＫのハイレベルへの立ち上がりにより、レベル読取部６５、３０°ＣＡ信号生成部６７、及び判別用信号生成部６９が、欠歯信号Ｋの発生を知ることとなる。
【００７５】
そして、レベル読取部６５は、図２に示すように、上記欠歯検出信号ＦＫが立ち上がると、そのタイミングで、カム角センサ４９からの気筒判別用信号Ｇの論理レベルを読み取り、その読み取った気筒判別用信号Ｇの論理レベル（以下、読取レベルともいう）Ｇｒを記憶する。尚、この読取レベルＧｒは、後述するように、判別用信号生成部６９によって参照される。
【００７６】
次に、３０°ＣＡ信号生成部６７は、スタータ信号ＳＴＡがハイレベルになってから上記欠歯検出信号ＦＫが最初に立ち上がると、内部カウンタの値を０にリセットして、以後、クランク角信号ＮＥが立ち上がる毎に図３のフローチャートで示す動作を行うことにより、３０°ＣＡ信号ＮＥ２を生成する。
【００７７】
即ち、図３に示すように、３０°ＣＡ信号生成部６７は、クランク角信号ＮＥが立ち上がると、まず、上記内部カウンタの値を１インクリメントし（Ｓ１１０）、次に、その内部カウンタの値が３４になったか否かを判定する（Ｓ１２０）。
【００７８】
そして、内部カウンタの値が３４になっていなければ（Ｓ１２０：ＮＯ）、内部カウンタの値を３で割った余りが１であるか否かを判定して（Ｓ１３０）、１であれば（Ｓ１３０：ＹＥＳ）、３０°ＣＡ信号ＮＥ２をハイレベルにする（Ｓ１４０）。また、内部カウンタの値を３で割った余りが１でなければ（Ｓ１３０：ＮＯ）、内部カウンタの値を３で割った余りが０であるか否かを判定して（Ｓ１５０）、０であれば（Ｓ１５０：ＹＥＳ）、３０°ＣＡ信号ＮＥ２をローレベルにし（Ｓ１６０）、０でなければ（Ｓ１５０：ＮＯ）、３０°ＣＡ信号ＮＥ２の論理レベルを変えることなく、クランク角信号ＮＥの次の立ち上がりを待つ。
【００７９】
一方、内部カウンタの値が３４になった場合には（Ｓ１２０：ＹＥＳ）、その時点から一定時間後に３０°ＣＡ信号ＮＥ２がローレベルとなるように内部タイマをセットすると共に（Ｓ１７０）、内部カウンタの値を０に戻し（Ｓ１８０）、更に、３０°ＣＡ信号ＮＥ２をハイレベルにする（Ｓ１４０）。このため、内部カウンタの値が３４から０に戻された場合、３０°ＣＡ信号ＮＥ２は、ローレベルからハイレベルになると共に、上記内部タイマによる一定時間後にローレベルへ戻ることとなる。
【００８０】
つまり、３０°ＣＡ信号生成部６７は、図４に示すように、欠歯信号Ｋの発生時を起点として、クランク角信号ＮＥが立ち上がる毎に、内部カウンタの値を１ずつカウントアップさせると共に、その値が３４になると０に戻すようにしている。そして更に、内部カウンタの値が１〜３３の場合には、その内部タイマの値を３で割った余りが１と２の場合に３０°ＣＡ信号ＮＥ２をハイレベルにし、内部タイマの値を３で割った余りが０の場合に３０°ＣＡ信号ＮＥ２をローレベルにし、また、内部カウンタの値を３４から０に戻した時には、３０°ＣＡ信号ＮＥ２を上記内部タイマによる一定時間だけハイレベルにするようにしている。
【００８１】
そして、３０°ＣＡ信号生成部６７は、こうした動作により、クランク角信号ＮＥを分周して、そのクランク角信号ＮＥに同期し且つ３０°ＣＡ毎に立ち上がる３０°ＣＡ信号ＮＥ２を生成している。
次に、判別用信号生成部６９は、スタータ信号ＳＴＡが立ち上がると、ＣＰＵ３１への基準位置信号ＴＤＣをハイレベルに初期設定すると共に、ＣＰＵ３１への第２気筒判別用信号Ｇ２をローレベルに初期設定する（図７，図８参照）。
【００８２】
そして、判別用信号生成部６９は、以後、３０°ＣＡ信号生成部６７で生成される３０°ＣＡ信号ＮＥ２の立ち上がりタイミング毎に図５のフローチャートで示す処理を行うことにより、基準位置信号ＴＤＣ及び第２気筒判別用信号Ｇ２のレベルを変化させる。尚、図５において、Ｇ(n) は、レベル読取部６５によって今回読み取られた気筒判別用信号Ｇの最新の読取レベルＧｒを格納するための１ビットの記憶部である。
【００８３】
図５に示すように、判別用信号生成部６９は、３０°ＣＡ信号ＮＥ２が立ち上がると、まずＳ２１０にて、欠歯検出部６３からの欠歯検出信号ＦＫがハイレベルであるか否かを判定することにより、欠歯検出部６３によってクランク角信号ＮＥ中の欠歯信号Ｋが検出された欠歯検出タイミングであるか否かを判断する。
【００８４】
ここで、欠歯検出タイミングであると判断した場合には、今回３０°ＣＡ信号ＮＥ２が立ち上がる直前に、レベル読取部６５によって気筒判別用信号Ｇの論理レベルが読み取られているため、続くＳ２２０にて、レベル読取部６５により今回読み取られた気筒判別用信号Ｇの読取レベルＧｒをＧ(n) に格納し、その後、Ｓ２３０に進む。また、上記Ｓ２１０にて欠歯検出タイミングではないと判断した場合には、そのままＳ２３０に移行する。
【００８５】
次に、判別用信号生成部６９は、Ｓ２３０にて、スタータ信号ＳＴＡが立ち上がってから３０°ＣＡ信号ＮＥ２が最初に立ち上がったタイミング（即ち、スタータ信号ＳＴＡに基づきエンジンの始動を検知してから、欠歯検出部６３により最初にクランク角信号ＮＥが欠歯信号Ｋになったと検出されたタイミング）であるか否かを判定し、肯定判定した場合には、クランク角信号ＮＥ中に欠歯信号Ｋが最初に発生したエンジンの始動直後であると判断して、Ｓ２４０に進む。そして、このＳ２４０にて、ＣＰＵ３１への第２気筒判別用信号Ｇ２の出力レベルを、Ｇ(n) 内の論理レベルに設定して、処理を終了する。
【００８６】
一方、判別用信号生成部６９は、上記Ｓ２３０にて、エンジンの始動直後ではないと否定判定した場合には、Ｓ２５０に移行して、基準位置信号ＴＤＣをローレベルにするタイミング（以下、ＴＤＣ出力タイミングという）であるか否かを判定する。尚、ＴＤＣ出力タイミングであるか否かは、上記Ｓ２１０で欠歯検出タイミングであると判断した時から、３０°ＣＡ信号ＮＥ２が４回立ち上がったタイミングであるか否かによって判定する。
【００８７】
そして、ＴＤＣ出力タイミングではないと判定した場合には、そのまま処理を終了するが、ＴＤＣ出力タイミングであると判定した場合には、Ｓ２６０に進んで、ＣＰＵ３１への基準位置信号ＴＤＣを、３０°ＣＡ信号ＮＥ２が次に立ち上がるまでの間（即ち、次回の処理開始時までの間）、ローレベルにする。そして更に、続くＳ２７０にて、ＣＰＵ３１への第２気筒判別用信号Ｇ２の出力レベルを、Ｇ(n) 内の論理レベルとは反対のレベルに設定して、処理を終了する。
【００８８】
このような図５の処理により、基準位置信号ＴＤＣの論理レベルは、クランク軸の回転位置が欠歯信号Ｋの発生する特定位置から１２０°進んだ基準位置に来た時に、３０°ＣＡ分だけローレベルとなる。また、第２気筒判別用信号Ｇ２の論理レベルは、スタータ信号ＳＴＡが立ち上がってからクランク角信号ＮＥ中に欠歯信号Ｋが最初に発生すると、その時の気筒判別用信号Ｇの論理レベルと同じレベルに設定され、それ以後は、基準位置信号ＴＤＣがローレベルとなるタイミング（以下、基準タイミングともいう）毎に、その基準タイミングの直前の欠歯検出時に読み取った気筒判別用信号Ｇの論理レベルとは反対のレベルに設定される。
【００８９】
つまり、信号処理回路４３は、前述した［Ｓ２−１］〜［Ｓ２−４］の動作に加えて、「スタータ信号ＳＴＡに基づきエンジンの始動を検知してから、クランク角信号ＮＥが欠歯信号Ｋになったことを最初に検出した時に、第２気筒判別用信号Ｇ２を、その時に読み取った気筒判別用信号Ｇの論理レベルと同じレベルに設定する」という図５のＳ２４０の動作を追加して行うことにより、基準位置信号ＴＤＣと第２気筒判別用信号Ｇ２とを生成してＣＰＵ３１に出力している。
【００９０】
このため、本実施形態のＥＣＵ１０において、スタータ信号ＳＴＡが立ち上がってから最初の欠歯タイミング（クランク角信号ＮＥが欠歯信号Ｋとなるタイミング）で、気筒判別用信号Ｇがローレベルならば、図７の時刻ｔ２のように、その時点で第２気筒判別用信号Ｇ２がローレベルに設定され、また、スタータ信号ＳＴＡが立ち上がってから最初の欠歯タイミングで、気筒判別用信号Ｇがハイレベルならば、図８の時刻ｔ２のように、その時点で第２気筒判別用信号Ｇ２がハイレベルに設定されることとなる。尚、図７では、時刻ｔ２で気筒判別用信号Ｇがローレベルであるため、第２気筒判別用信号Ｇ２は、基準位置信号ＴＤＣが最初に立ち下がる時刻ｔ２’までローレベルのままとなっている。
【００９１】
一方、本第１実施形態のＥＣＵ１０において、ＣＰＵ３１は、スタータ信号ＳＴＡに立ち上がりが生じると、エンジンが始動されたと判断して、内部のクランクカウンタの値（詳しくはカウント値）ＣＮＴを−１に設定し、以後、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に図６の処理を行って、クランクカウンタの値ＣＮＴを更新していく。
【００９２】
尚、本実施形態において、クランクカウンタは、実際には、ＣＰＵ３１のＲＡＭ（図示省略）にてカウント値ＣＮＴを格納するために設定された記憶領域である。そして、このクランクカウンタが、本発明におけるカウンタに相当している。また、本実施形態においても、クランクカウンタの値ＣＮＴは、クランク軸の２回転分の累積回転角度であるクランク角を、３０°ＣＡ信号ＮＥ２の周期に相当する３０°を分解能として示すものであり、０から２３までの値となる。
【００９３】
図６に示すように、ＣＰＵ３１は、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がると、まずＳ３００にて、現在のクランクカウンタの値ＣＮＴが０よりも小さいか否かを判定し、０よりも小さければ（即ち−１ならば）、エンジンの始動時から最初の欠歯タイミングであると判断して、Ｓ３０５に進む。尚、この状態において、信号処理回路４３からの基準位置信号ＴＤＣはハイレベルになっている。
【００９４】
そして、Ｓ３０５では、信号処理回路４３からの第２気筒判別用信号Ｇ２の論理レベルを読み取って、その読み取った論理レベルがハイレベルであるか否かを判定し、ハイレベルでなければ（即ちローレベルであれば）、Ｓ３１０に進んで、クランクカウンタの値ＣＮＴを第の１計数開始値としての２０に初期設定し、その後、処理を終了する。また、上記Ｓ３０５にて、読み取った第２気筒判別用信号Ｇ２の論理レベルがハイレベルであると判定した場合には、Ｓ３１５に移行して、クランクカウンタの値ＣＮＴを第２の計数開始値としての８に初期設定し、その後、処理を終了する。尚、Ｓ３０５で読み取られる第２気筒判別用信号Ｇ２の論理レベルは、前述した信号処理回路４３の動作から明らかなように、スタータ信号ＳＴＡに基づきエンジンの始動が検知されてから、最初に欠歯検出部６３により欠歯信号Ｋの発生が検出された時に、レベル読取部６５により読み取られた気筒判別用信号Ｇの論理レベル（始動直後検出レベルに相当）である。
【００９５】
一方、上記Ｓ３００にて、現在のクランクカウンタの値ＣＮＴが０より小さくない（即ち０以上である）と判定した場合には、Ｓ３２０に移行して、信号処理回路４３からの基準位置信号ＴＤＣがローレベルであるか否かを判定する。
ここで、基準位置信号ＴＤＣがローレベルではない（即ちハイレベルである）と判定した場合には、欠歯タイミングから１２０°ＣＡだけ進んだ基準タイミングではないことから、Ｓ３２５に進んで、クランクカウンタの値ＣＮＴを１つカウントアップし、続くＳ３３０にて、クランクカウンタの値ＣＮＴが２４以上になったか否かを判定する。そして、クランクカウンタの値ＣＮＴが２４以上であれば、続くＳ３３５にて、クランクカウンタの値ＣＮＴを０に戻してから処理を終了し、また、上記Ｓ３３０でクランクカウンタの値ＣＮＴが２４以上でないと判定した場合には、そのまま処理を終了する。
【００９６】
また、上記Ｓ３２０にて、基準位置信号ＴＤＣがローレベルであると判定した場合には、基準タイミングであることから、Ｓ３４０に移行して、信号処理回路４３からの第２気筒判別用信号Ｇ２の論理レベルを読み取る。
そして、続くＳ３４５にて、上記Ｓ３４０で今回読み取られた第２気筒判別用信号Ｇ２の論理レベルＧ２(n) がローレベルであるか否かを判定し、ローレベルではない（ハイレベルである）と判定した場合には、Ｓ３５０に進んで、クランクカウンタの値ＣＮＴを強制的に０へと初期化した後、処理を終了する。
【００９７】
これに対し、Ｓ３４５にて、上記Ｓ３４０で今回読み取られた論理レベルＧ２(n) がローレベルであると判定した場合には、Ｓ３６０に進み、クランクカウンタの値ＣＮＴに対する以下のＳ３６０〜Ｓ３７０の補正処理を行った後、処理を終了する。
【００９８】
この補正処理では、まずＳ３６０にて、現在のクランクカウンタの値ＣＮＴ（現在値）が０〜２３の中間値である１２以上か否かを判定し、現在値が１２よりも小さければ、Ｓ３６５にて、クランクカウンタの値ＣＮＴを１２にし、逆に現在値が１２以上であれば、Ｓ３７０にて、クランクカウンタの値ＣＮＴを０にする。
【００９９】
つまり、ＣＰＵ３１は、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に、下記の表２の規則でクランクカウンタの値ＣＮＴを更新している。
【０１００】
【表２】
0004399997.tif 000003
【０１０１】
具体的には、Ｓ３００，及びＳ３２０〜Ｓ３３５の処理により、前述した［Ｃ１−２］と同じ［Ｃ２−２］の処理を行い、Ｓ３２０，Ｓ３４０，Ｓ３４５，及びＳ３５０の処理により、前述した［Ｃ１−３］と同じ［Ｃ２−３］の処理を行い、Ｓ３２０，Ｓ３４０，Ｓ３４５，及びＳ３６０〜Ｓ３７０処理により、前述した［Ｃ１−４］と同じ［Ｃ２−４］の処理を行っている。尚、Ｓ３３０及びＳ３３５の処理は、クランクカウンタの値ＣＮＴを必ず０〜２３の値にするガード用の処理である。
【０１０２】
そして特に、本第１実施形態のＣＰＵ３１では、Ｓ３００〜Ｓ３１５の処理により、前述した［Ｃ１−１］の処理に代えて、表２にて「※」印を付した下記の［Ｃ２−１］の始動時用処理を行っている。
［Ｃ２−１］：現在のクランクカウンタの値ＣＮＴが０よりも小さければ（即ち、ＣＮＴ＝−１であり、この場合には、信号処理回路４３からの基準位置信号ＴＤＣが常にハイレベルである）、エンジンの始動時から最初の欠歯タイミングであると判断して、第２気筒判別用信号Ｇ２の論理レベルを読み取り、その読み取った第２気筒判別用信号Ｇ２の論理レベルがローレベルであれば、クランクカウンタの値ＣＮＴを第１の計数開始値としての２０に初期設定し、逆に、第２気筒判別用信号Ｇ２の論理レベルがハイレベルであれば、クランクカウンタの値ＣＮＴを第２の計数開始値としての８に初期設定する。
【０１０３】
尚、この［Ｃ２−１］の始動時用処理で初期設定される計数開始値としての２０と８は、欠歯タイミングでのクランク角に対応する値であり、クランク軸の１回転分（３６０°ＣＡ分）に相当する値だけ互いに異なった値である。このため、上記［Ｃ２−１］の処理によってクランクカウンタの値ＣＮＴの連続性が損なわれることはない。
【０１０４】
このような第１実施形態のＥＣＵ１０においては、例えば図７の時刻ｔ２に示すように、スタータ信号ＳＴＡがハイレベルになってから最初の欠歯タイミング（欠歯信号Ｋの発生タイミング）で、気筒判別用信号Ｇがローレベルであったならば、信号処理回路４３からＣＰＵ３１への第２気筒判別用信号Ｇ２もローレベルとなるため、信号処理回路４３による３０°ＣＡ信号ＮＥ２の出力開始に伴い、ＣＰＵ３１では、上記［Ｃ２−１］の処理によりクランクカウンタの値ＣＮＴが２０に初期設定される。
【０１０５】
そして以後、ＣＰＵ３１においては、図７に示すように、クランクカウンタの値ＣＮＴが、上記［Ｃ２−２］の処理により、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に２０→２１→２２…とカウントアップされていき、時刻ｔ２’に示す如く基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ハイになった時には、上記［Ｃ２−３］の処理によりクランクカウンタの値ＣＮＴが０に初期化される。また、時刻ｔ３’に示す如く基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ローになった時には、上記［Ｃ２−４］の処理により、クランクカウンタの値ＣＮＴが、その時の現在値に応じて１２又は０（図７の時刻ｔ３’では１２）に補正され、その後、時刻ｔ４’に示す如く、再び基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ハイになると、クランクカウンタの値ＣＮＴは上記［Ｃ２−３］の処理により０に初期化される。以後は、図７の時刻ｔ４’以降に示すように、時刻ｔ２’〜時刻ｔ４’と同様の動作が繰り返されることにより、クランクカウンタの値ＣＮＴが０〜２３の範囲で周回される。
【０１０６】
また例えば、図８の時刻ｔ２に示すように、スタータ信号ＳＴＡがハイレベルになってから最初の欠歯タイミングで、気筒判別用信号Ｇがハイレベルであったならば、信号処理回路４３からＣＰＵ３１への第２気筒判別用信号Ｇ２もハイレベルとなるため、信号処理回路４３による３０°ＣＡ信号ＮＥ２の出力開始に伴い、ＣＰＵ３１では、上記［Ｃ２−１］の処理によりクランクカウンタの値ＣＮＴが８に初期設定される。
【０１０７】
そして以後、ＣＰＵ３１においては、図８に示すように、クランクカウンタの値ＣＮＴが、上記［Ｃ２−２］の処理により、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に８→９→１０…とカウントアップされていき、時刻ｔ２’に示す如く基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ローになった時には、上記［Ｃ２−４］の処理により、クランクカウンタの値ＣＮＴが、その時の現在値に応じて１２又は０（図８の時刻ｔ２’では１２）に補正される。また、時刻ｔ３’に示す如く基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ハイになった時には、上記［Ｃ２−３］の処理によりクランクカウンタの値ＣＮＴが０に初期化され、その後、時刻ｔ４’に示す如く、再び基準位置信号ＴＤＣ＝ロー且つ第２気筒判別用信号Ｇ２＝ローになると、クランクカウンタの値ＣＮＴは上記［Ｃ２−４］の処理により、その時の現在値に応じて１２又は０（図８の時刻ｔ４’では１２）に補正される。以後は、図８の時刻ｔ４’以降に示すように、時刻ｔ２’〜時刻ｔ４’と同様の動作が繰り返されることにより、クランクカウンタの値ＣＮＴが０〜２３の範囲で周回される。
【０１０８】
そして、ＣＰＵ３１は、このように周回されるクランクカウンタの値ＣＮＴに基づいて、点火すべき気筒を判別するが、その気筒判別用の処理を、図６のＳ３１０又はＳ３１５でクランクカウンタの値ＣＮＴを２０又は８に初期設定した時点（即ち、スタータ信号ＳＴＡの立ち上がりによりエンジンの始動を検知した時から最初の欠歯タイミング）から開始する。尚、この気筒判別用処理では、「従来の技術」の欄で説明したような要領で点火すべき気筒を判別する。例えば、ＣＮＴ＝０の時に第１気筒＃１のＢＴＤＣ３０°ＣＡと判断し、ＣＮＴ＝６の時に第２気筒＃２のＢＴＤＣ３０°ＣＡと判断し、ＣＮＴ＝１２の時に第３気筒＃３のＢＴＤＣ３０°ＣＡと判断し、ＣＮＴ＝１８の時に第４気筒＃４のＢＴＤＣ３０°ＣＡと判断する。
【０１０９】
そして更に、ＣＰＵ３１は、各気筒毎の制御処理として、図１３を用いて説明した従来例と同様に、クランクカウンタの値ＣＮＴが０〜５の期間に、第１気筒＃１の点火に関する学習処理（本実施形態では、各気筒毎に設けられたノックセンサのうち、該当する気筒のノックセンサから信号を読み取って、その気筒の点火時期の補正値等を学習演算する制御処理）を実行し、クランクカウンタの値ＣＮＴが６〜１１の期間に、第２気筒＃２の点火に関する学習処理を実行し、クランクカウンタの値ＣＮＴが１２〜１７の期間に、第３気筒＃３の点火に関する学習処理を実行し、クランクカウンタの値ＣＮＴが１８〜２３の期間に、第４気筒＃４の点火に関する学習処理を実行している。つまり、ＥＣＵ１０では、各気筒毎の制御処理の実行期間の切り替わりタイミングが、欠歯タイミングでははく、欠歯タイミングから１２０°ＣＡ後のタイミング（基準位置信号ＴＤＣがローレベルとなる基準タイミング）を基準にして設定されている。
【０１１０】
以上のような本実施形態のＥＣＵ１０では、カム角センサ４９からの気筒判別用信号Ｇが各欠歯タイミング毎に交互に異なった論理レベルとなり、その欠歯タイミングでの気筒判別用信号Ｇの論理レベルを見ればクランク角を特定することができる、という点に着目して、スタータ信号ＳＴＡの立ち上がりによりエンジンの始動を検知してから、最初にクランク角信号ＮＥが欠歯信号Ｋになったことを検出した時（図７，８の時刻ｔ２に相当する時）に、その時の気筒判別用信号Ｇの論理レベルから特定されるクランク角に対応した計数開始値（本実施形態では２０又は８）をクランクカウンタにセットし、更に、そのセット時から、クランクカウンタのカウント値ＣＮＴに基づく気筒判別用処理を開始するようにしている。
【０１１１】
このため、本実施形態のＥＣＵ１０によれば、スタータ信号ＳＴＡの立ち上がりによりエンジンの始動を検知してから最初の欠歯タイミングで、クランクカウンタの値ＣＮＴを確定させて、その時点から気筒判別を開始することができる。よって、エンジンの始動を検知した時から従来装置よりも早期に気筒判別を行うことができ、エンジンの制御性（特に、始動制御の性能）を向上させることができる。
【０１１２】
また更に、本実施形態のＥＣＵ１０では、各気筒毎の制御処理の実行期間の切り替わりタイミングが、欠歯タイミングでははく、欠歯タイミングから１２０°ＣＡ後の基準タイミングを基準にして設定されているため、図６のＳ３１０又はＳ３１５により、クランクカウンタの値ＣＮＴを２０又は８の計数開始値に初期設定した後は、クランクカウンタの値ＣＮＴを正常値に設定するための正常化処理（本実施形態では、上記［Ｃ２−３］の初期化と上記［Ｃ２−４］の補正処理）を、欠歯タイミングではなく、クランク角信号ＮＥに基づき上記基準タイミングが到来したことを検知した時毎に行うようにしている。
【０１１３】
このため、クランクカウンタの値ＣＮＴがノイズ等の影響によって正常な値から外れてしまった場合には、図１５を用いて説明したような中途半端な制御処理が発生してしまうことを防止でき、各気筒毎の制御処理の実行状態（実行順序や実行期間）に与える影響を前述した図１４の如く最小限に抑えつつ、クランクカウンタの値ＣＮＴを正常値へと戻すことができるようになる。
【０１１４】
尚、本第１実施形態では、ＣＰＵ３１が、図６の処理により、信号処理回路４３からの３０°ＣＡ信号ＮＥ２と第２気筒判別用信号Ｇ２とに基づいて、クランクカウンタの値ＣＮＴの設定と更新とを実施しているが、３０°ＣＡ信号ＮＥ２と第２気筒判別用信号Ｇ２は、クランク角信号ＮＥと気筒判別用信号Ｇとから生成される信号であるため、結局、クランクカウンタの値ＣＮＴの設定と更新は、クランク角信号ＮＥと気筒判別用信号Ｇとに基づいて行われていることになる。そして、本第１実施形態では、信号処理回路４３とＣＰＵ３１（特に図６の処理を行う部分）とが、カウント制御手段に相当している。
【０１１５】
次に、第２実施形態のエンジン制御装置（ＥＣＵ）について説明する。尚、本第２実施形態のＥＣＵも、図１に示した第１実施形態のＥＣＵ１０と同様の構成要素からなるため、ここでは、それら構成要素及び各信号について、第１実施形態の場合と同じ符号を用いる。
【０１１６】
本第２実施形態のＥＣＵ１０は、前述した第１実施形態と比較して、ＣＰＵ３１が、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に、図６の処理に代えて図９の処理を行う、という点だけが異なっている。
そして、図９の処理では、図６の処理と比較すると、Ｓ３６０とＳ３７０の処理が削除されている。具体的に説明すると、ＣＰＵ３１は、Ｓ３４５にて、Ｓ３４０で今回読み取られた第２気筒判別用信号Ｇ２の論理レベルＧ２(n) がローレベルであると判定すると、そのままＳ３６５に移行して、クランクカウンタの値ＣＮＴを強制的に１２へと初期化する。尚、図９において、他の部分については、図６と同じステップ番号を付しているため、説明を省略する。
【０１１７】
つまり、本第２実施形態において、ＣＰＵ３１は、下記の表３における「初期化」の欄に示す如く、信号処理回路４３からの基準位置信号ＴＤＣがローレベルとなった時に、第２気筒判別用信号Ｇ２がハイレベルならばクランクカウンタの値ＣＮＴを強制的に０へと初期化し（Ｓ３４５：ＮＯ，Ｓ３５０）、逆に第２気筒判別用信号Ｇ２がローレベルならばクランクカウンタの値ＣＮＴを強制的に１２へと初期化するようにしている（Ｓ３４５：ＹＥＳ，Ｓ３６５）。
【０１１８】
【表３】
0004399997.tif 000004
【０１１９】
そして、このような本第２実施形態のＥＣＵ１０によっても、前述した第１実施形態のＥＣＵ１０と同じ効果を得ることができる。
また、本第２実施形態のＥＣＵ１０によれば、クランクカウンタの値ＣＮＴがノイズ等の影響で正常値から外れた場合には、最悪でも３６０°ＣＡ分の期間内に、そのクランクカウンタの値ＣＮＴを正常値へと確実に戻すことができ、有利である。これは、図７の時刻ｔ３’，ｔ５’，ｔ７’，…に相当する各タイミング、或いは、図８のｔ２’，ｔ４’，ｔ６’，…に相当する各タイミングにて、クランクカウンタの値ＣＮＴが、それの現在値に拘わらず、１２へと強制的に初期化されるようになるからである。
【０１２０】
尚、本第２実施形態においても、信号処理回路４３とＣＰＵ３１（特に図９の処理を行う部分）とが、カウント制御手段に相当している。
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
【０１２１】
例えば、本発明は、電磁ピックアップ（ＭＰＵ）式のカム角センサを用いた場合の図１１に例示した判定区間ＨＫの考え方を残したまま、適用することもできる。
具体的には、エンジンの始動を検知してから最初に欠歯信号Ｋを検出した時に、クランクカウンタの値ＣＮＴを、その時の気筒判別用信号Ｇの論理レベルに応じた計数開始値（２０又は８）に初期設定し、その後は、図１１の場合と同様に、欠歯タイミングから１２０°ＣＡ後の基準タイミングが到来する毎に、欠歯タイミングからその基準タイミングまでの判定区間ＨＫ内で気筒判別用信号Ｇが立ち上がったか否かに応じて、気筒判別用信号Ｇが立ち上がった場合には、クランクカウンタの値ＣＮＴを強制的に０へと初期化し、気筒判別用信号Ｇが立ち上がらなかった場合には、クランクカウンタの値ＣＮＴを現在値に従い１２又は０にする補正処理を行うようにしても良い。
【０１２２】
また、上記各実施形態では、欠歯信号Ｋの発生から基準位置信号ＴＤＣがアクティブレベルとなるまでの期間が、１２０°ＣＡ分の期間であるものを例に挙げたが、その期間は、１２０°ＣＡ以外のクランク角度に相当する期間でも良い。また更に、上記各実施形態では、制御対象が４気筒エンジンである場合を例に挙げたが、それに限るものではなく、例えば６気筒エンジンや８気筒エンジンでも良い。
【０１２３】
一方、上記各実施形態では、カム角センサ４９から出力される気筒判別用信号Ｇが、３６０°ＣＡ毎に１回だけレベル反転するものであったが、気筒判別用信号Ｇは、クランク角センサ４７から欠歯信号Ｋが出力される各タイミング毎に交互に異なった論理レベルとなっていれば良く、クランク角センサ４７からパルス信号が出力されている期間中に複数回レベル反転する信号であっても良い。
【０１２４】
また、信号処理回路４３において、レベル読取部６５は、欠歯検出部６３からの欠歯検出信号ＦＫが立ち上がってからクランク角信号ＮＥが最初に立ち上がったタイミング、即ち図２の時刻ｔｂにて、気筒判別用信号Ｇの論理レベルを読み取るように構成しても良い。
【０１２５】
また更に、上記各実施形態のＥＣＵ１０では、スタータ信号ＳＴＡの立ち上がりによってエンジンの始動を検知するようにしたが、エンジンの始動は、スタータ信号ＳＴＡ以外の情報から検知するように構成しても良い。
例えば、クランク角信号ＮＥの周期から求められるエンジン回転数が所定の始動判定値を上回った時に、エンジンが始動されたと判定することができる。そして、この例の場合、より具体的には、信号処理回路４３が、クランク角信号ＮＥの周期からエンジンの始動を検知すると、前述の各実施形態にてスタータ信号ＳＴＡが立ち上がった時と同様に、最初から動作すると共に、エンジンの始動を示す指示信号をＣＰＵ３１へ出力し、ＣＰＵ３１は、その信号処理回路４３からの指示信号を受けると、クランクカウンタの値ＣＮＴを−１に設定して、以後は、信号処理回路４３からの３０°ＣＡ信号ＮＥ２が立ち上がる毎に図６又は図９の処理を行えば良い。
【０１２６】
また、上記各実施形態では、クランクカウンタの値ＣＮＴをカウントアップさせたが、クランクカウンタの値ＣＮＴをカウントダウンさせるようにしても良い。
また更に、クランクカウンタの値ＣＮＴを周回させる範囲は、０〜２３に限るものではなく、例えば５〜２８や１０〜３３等、適宜設定することができる。そして、計数開始値も、２０と８に限るものではなく、クランクカウンタの値ＣＮＴを周回させる範囲等に応じて適宜決定すれば良い。
【図面の簡単な説明】
【図１】  第１実施形態のエンジン制御装置の構成を表す構成図である。
【図２】  第１実施形態の信号処理回路における欠歯検出部及びレベル読取部の動作を表すタイムチャートである。
【図３】  第１実施形態の信号処理回路における３０°ＣＡ信号生成部の動作を表すフローチャートである。
【図４】  第１実施形態の信号処理回路における３０°ＣＡ信号生成部の動作を表すタイムチャートである。
【図５】  第１実施形態の信号処理回路における判別用信号生成部の動作を表すフローチャートである。
【図６】  第１実施形態のＣＰＵで実行される処理を表すフローチャートである。
【図７】  第１実施形態の作用を説明するタイムチャートの、その１である。
【図８】  第１実施形態の作用を説明するタイムチャートの、その２である。
【図９】  第２実施形態のＣＰＵで実行される処理を表すフローチャートである。
【図１０】  エンジン制御装置の一般的なハードウエア構成を表すブロック図である。
【図１１】  電磁ピックアップ（ＭＰＵ）式のカム角センサを用いた従来のエンジン制御装置で行われる気筒判別用の動作を表すタイムチャートである。
【図１２】  磁気抵抗素子（ＭＲＥ）式のカム角センサを用いた従来のエンジン制御装置で行われる気筒判別用の動作を表すタイムチャートである。
【図１３】  各気筒毎の制御処理の実行順序及び実行期間の一例を説明する説明図である。
【図１４】  クランクカウンタのカウント値に対する正常化処理を欠歯タイミング毎に実施した場合の問題を説明するための図の、その１である。
【図１５】  クランクカウンタのカウント値に対する正常化処理を欠歯タイミング毎に実施した場合の問題を説明するための図の、その２である。
【符号の説明】
１０…エンジン制御装置（ＥＣＵ）、１１〜１４…燃料噴射弁、２１〜２４…点火コイル、３１…マイクロコンピュータ（ＣＰＵ）、３３，３５，３７…入力バッファ、３９…Ａ／Ｄ変換器、４１…出力バッファ、４３…信号処理回路、４７…クランク角センサ、４９…カム角センサ、５１…スタータスイッチ、５３…アイドルスイッチ、５５…エアフロメータ、５７…スロットルセンサ、５９…水温センサ、６１…イグナイタ、６３…欠歯検出部、６５…レベル読取部、６７…３０°ＣＡ信号生成部、６９…判別用信号生成部
【図１】
0004399997.tif 000005
【図２】
0004399997.tif 000006
【図３】
0004399997.tif 000007
【図４】
0004399997.tif 000008
【図５】
0004399997.tif 000009
【図６】
0004399997.tif 000010
【図７】
0004399997.tif 000011
【図８】
0004399997.tif 000012
【図９】
0004399997.tif 000013
【図１０】
0004399997.tif 000014
【図１１】
0004399997.tif 000015
【図１２】
0004399997.tif 000016
【図１３】
0004399997.tif 000017
【図１４】
0004399997.tif 000018
【図１５】
0004399997.tif 000019