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