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