エンジンのクランク軸の回転に伴い所定の角度間隔で発生する信号列中に所定の角度位置を表わす基準位置信号を有するクランク角信号と、前記エンジンのカム軸の回転に伴って前記基準位置信号に対応した位置で発生する信号数と前記基準位置信号との組合せが1燃焼サイクルにおいて前記基準位置信号毎に異なるカム角信号とに基づいて気筒判別を行い、前記クランク角信号に基づいて1燃焼サイクルにおけるエンジン回転位置を順次更新するエンジン制御装置において、前記基準位置信号と前記カム角信号との組合せの前回と今回との発生パターンが、所定回数連続する前記組合せについて今回の前記組合せまで正常であるか否かを判定するパターン判定手段と、前記パターン判定手段による判定結果が正常である場合、今回の前記組合せに基づいて1燃焼サイクルにおける前記エンジン回転位置を設定し、前記判定結果が正常ではない場合、前記エンジン回転位置を設定しない回転位置設定手段と、を備えることを特徴とするエンジン制御装置。エンジン始動時に気筒判別が完了してから前記判定結果が正常になるまでに前記発生パターンが異常であると前記パターン判定手段が判定すると、気筒判別を未完了状態にして気筒判別を再開する気筒判別手段をさらに備えることを特徴とする請求項1に記載のエンジン制御装置。前記気筒判別手段は、気筒判別を未完了状態にしてから、前記判定結果が正常になると気筒判別を再開することを特徴とする請求項2に記載のエンジン制御装置。前記回転位置設定手段は、エンジン始動時に気筒判別が完了してから前記判定結果が正常になるまで、各回の前記組合せに基づいて前記エンジン回転位置を設定することを特徴とする請求項1に記載のエンジン制御装置。前記回転位置設定手段は、エンジン始動時に気筒判別が完了してから前記エンジンの回転数が所定回転数以上になるまで、各回の前記組合せに基づいて前記エンジン回転位置を設定することを特徴とする請求1に記載のエンジン制御装置。前記パターン判定手段は、前記発生パターンが複数回連続して正常であるか否かを判定することを特徴とする請求項1から5のいずれか一項に記載のエンジン制御装置。しかしながら、特許文献1では、基準位置信号毎にロウレベルまたはハイレベルのカム角信号を交互に出力するので、同じレベルのカム角信号が発生している時間が長い。その結果、例えば正常な角度位置とは異なる位置で基準位置信号が発生すると、カム角信号が同じハイレベルのときに正常な角度位置の前で基準位置信号が発生する可能性が高い。この場合、異常位置で発生した基準位置信号に対応するカム角信号はハイレベルであり正常位置で発生した前回の基準位置信号に対応するカム角信号はロウレベルであるから、カム角信号のレベルは異なっており正常である。その結果、異常位置で発生した基準位置信号に対応するカム角信号がハイレベルであることに基づいて、異常位置でエンジン回転位置が誤設定される可能性が高いという問題がある。また、特許文献1のように、基準位置信号に対応する前回と今回のカム角信号を比較すればカム角信号の異常は検出できる。しかしながら、例えばクランク角信号中の異なる角度位置に異なる基準位置信号を有する場合、前回と今回のカム角信号を比較する方式では、所定の角度位置で本来とは異なる基準位置信号が発生しても基準位置信号の異常を検出できない。本発明は、上記課題を解決するためになされたものであり、エンジン回転位置を誤設定する可能性を低減し、基準位置信号およびカム角信号の異常を検出できるエンジン制御装置を提供することを目的とする。請求項1から6に記載の発明によると、エンジンのクランク軸の回転に伴い所定の角度間隔で発生する信号列中に所定の角度位置を表わす基準位置信号を有するクランク角信号と、エンジンのカム軸の回転に伴って基準位置信号に対応した位置で発生する信号数と基準位置信号との組合せが1燃焼サイクルにおいて基準位置信号毎に異なるカム角信号とに基づいて気筒判別を行い、クランク角信号に基づいて1燃焼サイクルにおけるエンジン回転位置を順次更新するエンジン制御装置において、パターン判定手段は、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが、所定回数連続する組合せについて今回の組合せまで正常であるか否かを判定し、回転位置設定手段は、パターン判定手段による判定結果が正常である場合、今回の組合せに基づいて1燃焼サイクルにおけるエンジン回転位置を設定し、判定結果が正常ではない場合、エンジン回転位置を設定しない。尚、1燃焼サイクルは、吸入行程、圧縮行程、膨張行程、排気行程からなり、クランク軸の2回転、カム軸の1回転の角度に相当する。そして、エンジン回転位置は、1燃焼サイクルの回転角度におけるエンジンの回転位置を表わしており、エンジン回転位置に基づいて各気筒の行程の位置を判定する。このように請求項1から6に記載の発明では、基準位置信号とカム角信号の信号数との組合せが1燃焼サイクルにおいて基準位置信号毎に異なっている構成において、基準位置信号とカム角信号の信号数との組合せの前回と今回との発生パターンについて正常であるか否かを判定するので、正常な発生位置とは異なる異常位置で基準位置信号が発生しても、この異常位置に対応するカム角信号は発生していない。その結果、異常位置で発生した基準位置信号に対応するカム角信号の信号数は0のように限定された数になる可能性が高く、信号数が1以上になる可能性は低い。その結果、異常位置で発生した基準位置信号と異常位置に対応するカム角信号の信号数との組合せと、前回の正常位置で発生した組合せとの発生パターンは異常になる可能性が高い。したがって、正常な発生位置とは異なる位置で基準位置信号が発生しても、エンジン回転位置を誤設定する可能性は低い。また、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが正常であるか否かを判定するので、基準位置信号が複数種類あり異なる角度位置で異なる基準位置信号が発生する場合には、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが正常とは異なるパターンになると、基準位置信号またはカム角信号のどちらかに異常が発生したと判定できる。そして、発生パターンが異常であればエンジン回転位置を設定しないので、基準位置信号またはカム角信号のどちらかに異常が発生した場合に、エンジン回転位置を誤って設定することを防止できる。請求項2に記載の発明によると、気筒判別手段は、エンジン始動時に気筒判別が完了してからパターン判定手段による判定結果が正常になるまでに発生パターンが異常であるとパターン判定手段が判定すると、気筒判別を未完了状態にして気筒判別を再開する。この構成によれば、エンジン始動時において、基準位置信号またはカム角信号が異常であるにも関わらず、例えば基準位置信号とカム角信号との組合せが偶然正常な組合せと一致して気筒判別が完了しても、発生パターンが異常の場合には気筒判別を未完了状態にして気筒判別を再開する。これにより、エンジン始動時に誤って気筒判別を完了しても気筒判別を再開できる。したがって、誤った気筒判別結果により設定されたエンジン回転位置に基づいて、燃料制御が継続されることを防止できる。ここで、例えば断線やセンサ異常によりカム角信号が固定値になっており、エンジン始動時に基準位置信号と固定値のカム角信号との組合せが正常な組合せと一致して気筒判別が完了する場合、発生パターンが異常の場合に気筒判別を未完了状態にして気筒判別を再開しても、基準位置信号と固定値のカム角信号との組合せが正常な組合せと一致するので、再び気筒判別が完了することになる。そこで、請求項3に記載の発明によると、気筒判別手段は、気筒判別を未完了状態にしてからパターン判定手段による判定結果が正常になると気筒判別を再開する。これにより、気筒判別を未完了状態にして燃料噴射を停止すると、パターン判定手段による判定結果が正常になってから気筒判別を再開するので、気筒判別を誤る可能性が低下する。これにより、気筒判別の精度が向上する。請求項4に記載の発明によると、回転位置設定手段は、エンジン始動時に気筒判別が完了してからパターン判定手段による判定結果が正常になるまで、各回の基準位置信号とカム角信号との組合せに基づいてエンジン回転位置を設定する。この構成によれば、各回の基準位置信号とカム角信号との組合せが正常であれば、適切な気筒で燃料を燃焼させ速やかにエンジンを始動できる。ここで、各回の基準位置信号とカム角信号との組合せに基づいてエンジン回転位置を設定する場合、適切な組合せに基づいて設定されたエンジン回転位置に基づいて適切な気筒で燃料が燃焼すれば、エンジンの回転数は速やかに所定回転数以上に上昇する。そこで、請求項5に記載の発明によると、回転位置設定手段は、エンジン始動時に気筒判別が完了してからエンジンの回転数が所定回転数以上になるまで、各回の基準位置信号とカム角信号との組合せに基づいてエンジン回転位置を設定する。この構成によれば、各回の基準位置信号とカム角信号との組合せが正常であれば、適切な気筒で燃料を燃焼させ速やかにエンジンを始動できる。請求項6に記載の発明によると、パターン判定手段は、基準位置信号とカム角信号との発生パターンが複数回連続して正常であるか否かを判定する。このように、基準位置信号とカム角信号との発生パターンが複数回連続して正常であるか否かを判定するので、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが1回だけ正常であるか否かを判定する場合よりも、エンジン回転位置を誤って設定する可能性を低減できる。尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組合せにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。以下、本発明の実施形態を図に基づいて説明する。図1に、車両に搭載される本実施形態の電子制御装置ECU:ElectronicControlUnit10を示す。ECU10は、例えば、ガソリンエンジン用のインジェクタの噴射制御および点火プラグの点火制御を行うエンジンECUであり、CPU12、ROM14、RAM16、SRAMスタンバイRAM28、EEPROM20、入力回路30および出力回路32等から構成されている。ECU10は、ROM14に記憶されている制御プログラムをCPU12が実行することにより、各種センサが検出するアクセル開度、スロットル開度、車速、クランク角、カム角、イグニションスイッチ等の各種信号を入力回路30を介して入力する。そして、これらセンサの検出信号に基づいて、図示しないインジェクタの噴射制御、点火プラグの点火制御等の制御信号を出力回路32を介して出力する。ECU10の制御プログラムが作業用に使用し、イグニションスイッチがオフされると電力供給が遮断されて記憶データが消失するRAM16と異なり、イグニションスイッチのオン、オフに関わらず、SRAM18にはバッテリから電力が供給される。したがって、SRAM18は、バッテリの交換等により電力供給が遮断されない限り、記憶しているデータを保存する記憶部である。EEPROM20は、書き換え可能な不揮発性の記憶部である。バッテリから電力供給が遮断されても、EEPROM20に記憶されているデータは保存される。ECU10は、イグニションスイッチをオフして車両の運転を停止しても記憶する必要のあるデータを、SRAM18またはEEPROM20に記憶する。図2に示すクランク角センサ40は、クランク軸に固定されたクランクロータ50の外周にクランクロータ50と向き合って設けられている。クランクロータ50の外周には、所定角度例えば10°間隔で歯が形成されている。尚、クランクロータ50の外周に形成される歯の間隔は10°に限るものではなく、10°より小さくてもよいし、大きくてもよい。クランク角センサ40は、クランク軸が10°回転する毎10°CA毎にパルス状の信号列であるクランク角信号を出力する。クランクロータ50の歯列の途中には、1個の歯を挟んで2個の歯が2箇所で連続して欠損した連欠けの欠歯部52と、2個の歯が1箇所で欠損した単欠けの欠歯部54とが180°反対側に形成されている。クランク角センサ40が連欠けの欠歯部52、単欠けの欠歯部54を検出するときのクランク角信号は、気筒判別および1燃焼サイクルにおけるエンジン回転位置の設定を行うときの基準位置信号になる。ECU10は、クランク角信号に基づいて1回転中におけるクランク軸の角度位置を検出するとともに、単位時間当たりのクランク角信号のパルス数を算出することにより、エンジン回転数を検出する。カム角センサ60は、カム軸に固定されたカムロータ70の外周にカムロータ70に向き合って設けられている。カム軸は、クランク軸に対して1/2の比率で回転するので、クランク軸が2回転720°CAする間に1回転する。カムロータ70の外周には、クランク角度で180°CAに相当する位置、つまりカム軸の回転方向に90°離れた位置に、2個の歯72が2箇所、1個の歯74が2箇所、この順で形成されている。2個の歯72は、例えば、それぞれ1気筒および3気筒の圧縮上死点に対応して形成され、1個の歯74は、例えば、それぞれ2気筒および4気筒の圧縮上死点に対応して形成されている。カム角センサ60は、カムロータの歯72、74と向き合う位置に達したときにパルス状のカム角信号を出力する。カム角信号の信号数は、歯72、74の数に応じて2個、1個となる。クランクロータ50とカムロータ70とは、図3に示すように、欠歯部52、54と歯72、74とが対応するようにクランク軸、カム軸にそれぞれ組み付けられている。基準位置信号とカム角信号との組合せ、および組合せの発生パターン図3に示すように、クランク角信号の連欠けの欠歯部52、単欠けの欠歯部54の位置を表わす基準位置信号と、2個の歯72、1個の歯74の位置を表わし基準位置信号に対応して発生するカム角信号の信号数との組合せは、1燃焼サイクルの角度範囲である720°CAにおいて連欠けと2歯、単欠けと2歯、連欠けと1歯、単欠けと1歯の4通りであり、基準位置信号毎に異なっている。そして、基準位置信号とカム角信号の信号数との組合せは、連欠けと2歯、単欠けと2歯、連欠けと1歯、単欠けと1歯の順番で発生が繰り返される。したがって、クランク角センサ40が欠歯部52、54を正常に検出し、カム角センサ60が歯72、74を正常に検出すれば、1燃焼サイクルにおいて180°CA毎に検出される基準位置信号とカム角信号との組合せはそれぞれ異なっている筈である。そして、前回検出された組合せから、今回検出されると期待される組合せを予測できる。例えば、連欠けと1歯の組合せの次には、単欠けと1歯の組合せの信号が検出されると期待できる。したがって、図3のAに示すカム角信号のように、連欠けと1歯の組合せの次には単欠けと1歯の組合せの信号が検出されると期待しているときに、単欠けとノイズのために2歯の組合せの信号が検出されたり、図3のBに示すように、連欠けと2歯の組合せの次には単欠けと2歯の組合せの信号が検出されると期待しているときに、クランク角信号の信号抜けのために連欠けと2歯の組合せの信号が検出されたりすると、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが異常になるので、基準位置信号またはカム角信号のいずれかが異常であると判定できる。また、クランクロータの欠歯の構成は図2のAと同じであるが、カムロータの歯の構成が図2のBに示す2歯、2歯、1歯、1歯ではなく、1歯、1歯、0歯、0歯であってもよい。この場合も、1燃焼サイクルにおける基準位置信号とカム角信号との組合せは4通りであり、基準位置信号毎に異なっている。このカムロータの構成においては、基準位置信号とカム角信号との組合せは、連欠けと1歯、単欠けと1歯、連欠けと0歯、単欠けと0歯の順番で発生が繰り返される。したがって、前回検出された基準位置信号とカム角信号との組合せから、今回検出されると期待される組合せを予測できる。例えば、連欠けと1歯の組合せの次には単欠けと1歯の組合せの信号が検出されると期待できる。したがって、図4に示すように、連欠けと1歯の組合せの次には単欠けと1歯の組合せの信号が検出されると期待しているときに、クランク角信号の信号抜けのために正常な位置とは異なる位置で単欠けの基準位置信号が発生し単欠けと0歯の組合せの信号が検出されると、発生パターンが異常であるから、基準位置信号またはカム角信号のいずれかが異常であると判定できる。尚、基準位置信号として連欠け、単欠け以外に、例えば3連続の欠歯部が検出されると基準位置信号の異常であると判定でき、図3の例ではカム角信号として1歯、2歯以外に、0歯または3歯以上、図4の例ではカム角信号として2歯以上が検出されるとカム角信号が異常であると判定できる。エンジン回転位置ECU10は、10°CA毎に検出されるクランク角信号を分周し、エンジン回転位置をカウントする回転位置カウンタを0から順に30°CA毎に1カウントアップする回転位置更新処理を実行する。回転位置更新処理では、回転位置カウンタの値が24になるときには、角度の合計が720°CAとなるので、回転位置カウンタの値を0に戻す。ECU10は、回転位置カウンタのカウンタ値によって、1燃焼サイクルにおけるエンジン回転位置を判定することにより、燃料を噴射して点火する気筒を特定する。また、ECU10は、エンジン始動時に基準位置信号とカム角信号との組合せが正常であれば、この組合せに基づいて回転位置カウンタの値を設定し、気筒判別を完了する。回転位置設定処理1、気筒判別処理1次に、ROM14等に記憶されている制御プログラムをCPU12が実行することにより、ECU10が実行する回転位置設定処理1図5と気筒判別処理1図6について説明する。図5のフローチャートは、180°CA毎にクランク角信号の基準位置信号が検出されると実行される。尚、図5以降のフローチャートにおいてSはステップを表わしている。図5のS400において、ECU10は気筒判別が完了しているか否かを判定する。気筒判別が完了していない場合S400:No、ECU10はS402において気筒判別処理1を実行する。図5のS402で実行される気筒判別処理1を図6に示す。図6のS420において、ECU10は、基準位置信号とカム角信号との組合せが、例えば図3のタイムチャートに示す、単欠けと2歯、連欠けと1歯、単欠けと1歯、連欠けと2歯のいずれか一つの正常な所定の組合せであるか否かを判定する。基準位置信号とカム角信号との組合せが所定の組合せでなければS420:No、ECU10は気筒判別完了とはせず本処理を終了する。したがって、基準位置信号とカム角信号との組合せが所定の組合せになるまで気筒判別は完了しない。基準位置信号とカム角信号との組合せが所定の組合せであればS420:Yes、今回の基準位置信号とカム角信号との組合せに基づいて回転位置カウンタを0、6、12、18のいずれかに設定しS422、気筒判別状態を完了に設定しS424、正常カウンタを1に設定するS426。図6の気筒判別処理が終了すると、ECU10は図5の処理を終了する。正常カウンタは、図5の回転位置設定処理1において、今回の基準位置信号とカム角信号との組合せが正常であり、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが正常の場合にインクリメント1される。つまり、正常カウンタが1の場合には、今回の組合せは正常であるが前回と今回との発生パターンはまだ正常ではない。正常カウンタが2になると、組合せの前回と今回との発生パターンは1回正常になり、正常カウンタが3になると、組合せの前回と今回との発生パターンは2回連続して正常になる。正常カウンタの値は、上限値までカウントされて初期値に戻らないように、上限値または所定値でガードされインクリメントが中止される。図5のS400において気筒判別が完了している場合S400:Yes、ECU10は、基準位置信号とカム角信号とが正常な所定の組合せであるか否かを判定するS404。基準位置信号とカム角信号とが所定の組合せではない場合S404:No、ECU10は、今回の基準位置信号またはカム角信号のいずれかが異常であると判断し、正常カウンタを0に設定しS406、S414に処理を移行する。基準位置信号とカム角信号とが所定の組合せであればS404:Yes、ECU10は前回の基準位置信号とカム角信号との組合せから、今回期待される組合せを算出するS408。例えば、前回が連欠けと1歯の組合せであれば、今回期待される組合せは単欠けと1歯の組合せであると算出する。尚、前回の組合せ、または発生パターンが異常であった場合には、ECU10は、S408において、前回の組合せから今回期待される組合せとして今回検出した組合せを設定する。この処理は、図5以外の他のフローチャートでも同様である。正常カウンタが0であれば、前回の組合せ、または発生パターンが異常であったと判断できる。そして、今回検出した組合せと前回の組合せから今回期待される組合せとが一致する場合S410:Yes、ECU10は正常カウンタをインクリメント1しS412、S414に処理を移行する。今回検出した組合せと前回の組合せから今回期待される組合せとが一致しない、つまり基準位置信号とカム角信号との組合せの前回と今回との発生パターンが異常である場合S410:No、ECU10は、今回の基準位置信号またはカム角信号のいずれかが異常であると判断し、正常カウンタを0に設定しS406、S414に処理を移行する。ECU10は、S414において正常カウンタが所定回数以上であればS414:Yes、今回検出した基準位置信号とカム角信号との組合せに基づき、回転位置カウンタの値を設定するS416。例えば図3に示すタイムチャートであれば、単欠けと2歯、連欠けと1歯、単欠けと1歯、連欠けと2歯の組合せを検出すると、回転位置カウンタを0、6、12、18に設定する。これは、何らかの原因で回転位置カウンタのカウント値がずれた場合に、正常なカウント値に設定し直すためである。図5の回転位置設定処理1では、S414において所定回数を2に設定している。これにより、気筒判別が完了したときも含め、気筒判別完了後に、基準位置信号とカム角信号との前回と今回との組合せがそれぞれ所定の組合せであり、前回と今回とで2回連続して発生する組合せの発生パターンが正常であれば、つまり発生パターンが1回正常であれば、S416においてECU10は、今回の基準位置信号とカム角信号との組合せに基づいて回転位置カウンタの値を回転位置更新処理に関わらず設定する。尚、所定回数の値は2に限る必要はない。所定回数を3以上に設定すれば、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが、3回以上連続する組合せについて今回の組合せまで正常であるか否か、つまり発生パターンが複数回連続して正常であるか否かを判定することになる。正常カウンタが所定回数未満であればS414:No、ECU10は、回転位置カウンタの値を設定せずに本処理を終了する。図5の処理で回転位置カウンタの値を設定しないと、回転位置更新処理により回転位置カウンタの値の更新が継続される。ここで、図3のAに示すように、基準位置信号が単欠けのときにカム角信号がノイズのために2歯と誤検出されると、基準位置信号とカム角信号との組合せとしては単欠けと2歯であり所定の組合せのため、基準位置信号とカム角信号との組合せの前回と今回との発生パターンを判定せず今回の基準位置信号とカム角信号との組合せだけを判定する場合には、単欠けとノイズによる2歯の組合せに基づいて、点線200に示すように回転位置カウンタは0に誤設定される。しかし、誤検出する前の連欠けと1歯の組合せから期待される今回の組合せは単欠けと1歯であるから、基準位置信号とカム角信号との組合せの前回と今回との発生パターンを判定することにより、S410の判定はNoとなり正常カウンタは0に設定される。これにより、ノイズの発生によりカム角信号の1歯を2歯と誤検出しても、回転位置カウンタの値は単欠けと2歯に対応する0に設定されず、回転位置更新処理による更新が正常に継続される。また、図3のBに点線で示すように、クランク角信号の信号抜けのために基準位置信号の単欠けが連欠けと検出されると、基準位置信号とカム角信号との組合せとしては連欠けと2歯であり所定の組合せのため、基準位置信号とカム角信号との組合せの前回と今回との発生パターンを判定せず今回の基準位置信号とカム角信号との組合せだけを判定する場合には、信号抜けによる連欠けと2歯の組合せに基づいて、点線210に示すように回転位置カウンタは18に誤設定される。しかし、誤検出する前の連欠けと2歯の組合せから期待される今回の組合せは単欠けと2歯であるから、基準位置信号とカム角信号との前回と今回との発生パターンを判定することにより、S410の判定はNoとなり、正常カウンタは0に設定される。これにより、信号抜けにより基準位置信号の単欠けを連欠けと誤検出しても、回転位置カウンタの値は連欠けと2歯に対応する18に設定されず、回転位置更新処理による更新が正常に継続される。図4に示すタイムチャートの場合には、クランク角信号の信号抜けのために正常な位置とは異なる位置で単欠けの基準位置信号が発生し単欠けと0歯の組合せの信号が検出されると、基準位置信号とカム角信号との組合せとしては単欠けと0歯であり所定の組合せのため、基準位置信号とカム角信号との組合せの前回と今回との発生パターンを判定せず今回の基準位置信号とカム角信号との組合せだけを判定する場合には、信号抜けによる単欠けと0歯の組合せに基づいて、点線220に示すように、所定位置とは異なる角度位置で回転位置カウンタは12に誤設定される。しかし、誤検出する前の連欠けと1歯の組合せから期待される今回の組合せは単欠けと1歯であるから、基準位置信号とカム角信号との前回と今回との組合せの発生パターンを判定することにより、S410の判定はNoとなり、正常カウンタは0に設定される。これにより、クランク角信号の信号抜けのために正常な位置とは異なる位置で単欠けの基準位置信号を誤検出しても、回転位置カウンタの値は単欠けと0歯に対応する12に設定されず、回転位置更新処理による更新が正常に継続される。このように、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが正常であるか否かを判定するので、基準位置信号とカム角信号との組合せは正常であっても、基準位置信号またはカム角信号のいずれかに異常がある場合に、その異常を検出できる。そして、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが異常である場合に回転位置カウンタの値を設定しないことにより、回転位置更新処理により回転位置カウンタの更新が継続されるので、適切な気筒で燃料を燃焼できる。図5の回転位置設定処理1では、S404~S414の処理が本発明のパターン判定手段が実行する機能に相当し、S416の処理が本発明の回転位置設定手段が実行する機能に相当する。また、ECU10は、本発明のエンジン制御装置に相当し、本発明のパターン判定手段および回転位置設定手段が実行する機能を実現する。回転位置設定処理2、気筒判別処理2図7に他の回転位置設定処理2のフローチャートを示し、図8に他の気筒判別処理2のフローチャートを示す。図9に示すタイムチャートは、図4のタイムチャートにおいて、クランク角信号の抜けはないが、断線またはカム角センサ60の異常によりカム角信号の出力レベルがロウに固定されている例である。図9の点線に示すように、カム角信号が本来1歯で検出される位置で断線等により0歯と検出されても、連欠けと0歯または単欠けと0歯の組合せは正常な所定の組合せであるから、エンジン始動時に例えば誤検出で連欠けと0歯の組合せを検出すると、気筒判別は完了したと誤判定される次の単欠けと0歯の組合せも所定組合せであり、連欠けと0歯、単欠けと0歯の発生パターンも正常であるから燃料は噴射される。しかし、次の連欠けと0歯の組合せを検出すると、前回の単欠けと断線による誤検出の0歯と、今回の連欠けと0歯との発生パターンは異常である。このように、エンジン始動時に気筒判別が一旦完了してから発生パターンの異常を検出すると、図7および図8のフローチャートでは、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが、所定回数連続する基準位置信号とカム角信号との組合せについて今回の組合せまで正常であると判定されるまで気筒判別を再開しない。以下、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが、所定回数連続する基準位置信号とカム角信号との組合せについて今回の組合せまで正常を、単に連続する組合せについて発生パターンが正常とも言う。これにより、エンジン始動時に気筒判別が完了してから発生パターンの異常を検出すると、連続する組合せについて発生パターンが正常になるまで、燃料の誤噴射を防止する。以下に、図7および図8の具体的な処理について説明する。図7において、S440、S444~S452の処理は図5のS400、S404~S412の処理と実質的に同一である。図7のS440において、ECU10は気筒判別が完了しているか否かを判定する。気筒判別が完了していない場合S440:No、ECU10はS442において、図8の気筒判別処理2を実行する。図8の気筒判別処理2のS470において、ECU10は、気筒判別停止フラグがオンであるか否かを判定する。気筒判別停止フラグの初期値はオフに設定されている。そして、図7の回転位置設定処理2において、気筒判別完了後に、連続する組合せについて発生パターンが正常になる前に、基準位置信号とカム角信号との組合せ、あるいは基準位置信号とカム角信号との前回と今回との発生パターンが異常であれば、気筒判別停止フラグはオンに設定される。気筒判別停止フラグがオフの場合S470:No、ECU10は基準位置信号とカム角信号との組合せが所定の組合せであるか否かを判定するS472。所定の組合せでなければS472:No、ECU10は気筒判別処理2を終了する。図8の気筒判別処理2が終了すると、ECU10は図7の処理を終了する。所定の組合せであればS472:Yes、ECU10は、S486に処理を移行して回転位置カウンタを0、6、12、18のいずれかに設定しS486、気筒判別状態を完了に設定しS488、気筒判別停止フラグをオフに設定しS490、正常カウンタを1に設定するS492。S472の判定において、図9の点線で示すように、カム角信号が本来1歯で検出される位置で断線等により0歯と検出されても、連欠けと0歯、単欠けと0歯の組合せはそれぞれ正常な所定の組合せであるから、エンジン始動時に誤検出で連欠けと0歯の組合せを検出しても、基準位置信号とカム角信号の組合せは所定の組合せであると判定される。その結果、断線等がなければ連欠けと1歯の組合せが検出されることにより、本来であれば実線に示すように回転位置カウンタに正常な18が設定されるところ、点線230に示すように、回転位置カウンタに誤った6が設定される。そして、気筒判別は完了したと誤判定されるので燃料が誤噴射される。そして、基準位置信号が連欠けで、断線等によりカム角信号が0歯と検出されることにより気筒判別が完了すると、図7の回転位置設定処理2において、次の単欠けと断線等により誤検出された0歯とが所定の組合せでありS444:Yes、前回の連欠けと誤検出の0歯と、今回の単欠けと誤検出の0歯との発生パターンが正常と誤判定されるのでS450:Yes、気筒判別完了状態は完了のままである。しかし、単欠けと誤検出の0歯の次に検出される連欠けと0歯の組合せは正常であるがS444:Yes、前回の単欠けと誤検出の0歯、今回の連欠けと0歯の発生パターンは異常であるからS450:No、正常カウンタは0に設定されるS446。図7の回転位置設定処理2では、S454において所定回数を3に設定している。したがって、気筒判別を誤判定したときの連欠けと誤検出の0歯と、その次の単欠けと誤検出の0歯との発生パターンが正常と誤判定されて正常カウンタが2になってもS454の判定はNoとなるので、S458において回転位置状態は確定に設定されない。回転位置状態の初期値は未確定に設定されているので、S458が実行されるまで未確定のままである。したがって、前回の単欠けと誤検出の0歯と、今回の連欠けと0歯との発生パターンが異常でありS450:No、正常カウンタが0に設定されS446、正常カウンタが所定回数未満になるとS454:No、エンジン回転位置は未確定でありS460:No、正常カウンタは0であるからS462:Yes、気筒判別状態は未完了に設定されS464、気筒判別停止フラグはオンに設定されるS466。これにより、次回の回転位置設定処理2のS440で気筒判別が未完了と判定されるのでS440:No、図8の気筒判別処理2が実行される。気筒判別が未完了であり、気筒判別停止フラグがオンに設定されている状態では、図9のタイムチャートに示すようにカム角信号が断線によりロウレベルに固定されていると、図9に示す発生パターンの異常を判定してから後、図8のS474~S482を実行しても、図8のS484において正常カウンタが所定回数の2以上になることはない。したがって、S484の所定回数を2に設定しておけば、気筒判別は未完了のままである。これにより、図9の発生パターンの異常を判定してから後、燃料は誤噴射されない。尚、図8のS484の所定回数は2ではなく、図7のS454と同じ3であってもよい。図7の回転位置設定処理2および図8の気筒判別処理2では、図7のS444~S454、図8のS474~S484の処理が本発明のパターン判定手段が実行する機能に相当し、図7のS456の処理が本発明の回転位置設定手段が実行する機能に相当し、図7のS464およびS466、図8のS470、S472、S486~S492の処理が本発明の気筒判別手段が実行する機能に相当する。回転位置設定処理3図10に他の回転位置設定処理3のフローチャートを示す。図10のS502で実行する気筒判別処理1は図6の気筒判別処理1と同じである。図10において、S500~S512の処理は図5のS400~S412の処理と実質的に同一である。図10のS514において正常カウンタが所定回数以上であればS514:Yes、つまり連続する組合せについて発生パターンが正常であれば、ECU10は、回転位置状態を確定に設定しS516、今回の基準位置信号とカム角信号との組合せに基づきエンジン回転位置を設定するS518。ただし、S504の判定がNoの場合にS518が実行される可能性があるので、今回の基準位置信号とカム角信号との組合せが所定の組合せでない場合はエンジン回転位置を設定しない。正常カウンタが所定回数未満であればS514:No、ECU10は、エンジン回転位置が確定しているか否かを判定するS520。エンジン回転位置が確定している場合S520:Yes、ECU10は本処理を終了する。これにより、ECU10は、回転位置更新処理により回転位置カウンタの更新を継続する。エンジン回転位置が確定していない場合S520:No、ECU10は、今回の基準位置信号とカム角信号との組合せに基づきエンジン回転位置を設定するS518。つまり、エンジン始動時に、連続する組合せについて発生パターンが正常になるまで、ECU10は、今回の基準位置信号とカム角信号との組合せに基づいてエンジン回転位置を設定する。これにより、今回の基準位置信号とカム角信号との組合せが正常であれば、エンジン始動時に、連続する組合せについて発生パターンが正常になるまで燃料を噴射して適切な気筒で燃焼できる。その結果、エンジンを速やかに始動できる。図10の回転位置設定処理3では、S500~S514の処理が本発明のパターン判定手段が実行する機能に相当し、S518の処理が本発明の回転位置設定手段が実行する機能に相当する。回転位置設定処理4図11に他の回転位置設定処理4のフローチャートを示す。図11のS532で実行する気筒判別処理1は図6の気筒判別処理1と同じである。図11において、S530~S542、S546およびS548の処理は図5のS400~S416の処理と実質的に同一である。図11のS544においてECU10は、エンジン回転数が所定回転数以上であるか否かを判定する。所定回転数はアイドル回転数よりも低い値に設定されている。エンジン回転数が所定回転数未満であればS544:No、ECU10は、S546において正常カウンタが所定回数以上であるか否かを判定せず、すなわち基準位置信号とカム角信号との組合せの前回と今回との発生パターンが正常であるか否かに関わらず、今回の基準位置信号とカム角信号との組合せに基づき、エンジン回転位置を設定するS548。ただし、S534の判定がNoの場合にS548が実行される可能性があるので、今回の基準位置信号とカム角信号との組合せが所定の組合せでない場合はエンジン回転位置を設定しない。これにより、今回の基準位置信号とカム角信号との組合せが正常であれば、エンジン始動時にエンジン回転数が所定回転数以上に上昇するまでに燃料を噴射して適切な気筒で燃焼できる。その結果、エンジンを速やかに始動できる。エンジン回転数が所定回転数以上であればS544:Yes、ECU10は、エンジン始動時に適切な気筒で燃料が燃焼されエンジン回転数が所定回転数以上に上昇したと判断し、正常カウンタが所定回数以上であるか否かを判定するS546。正常カウンタが所定回数以上であればS546:Yes、今回の基準位置信号とカム角信号との組合せに基づいてエンジン回転位置を設定する。正常カウンタが所定回数未満であればS546:No、ECU10はエンジン回転位置を設定せずに本処理を終了する。図11の回転位置設定処理4では、S530~S542、およびS546の処理が本発明のパターン判定手段が実行する機能に相当し、S544およびS548の処理が本発明の回転位置設定手段が実行する機能に相当する。[他の実施形態]上記実施形態の回転位置設定処理および気筒判別処理において正常カウンタと比較する所定回数は、基準位置信号およびカム角信号の構成に応じて適宜設定すればよい。また、本実施形態では、図7に示す回転位置設定処理2において、気筒判別状態を未完了に設定してから図8の気筒判別処理2において、基準位置信号とカム角信号との組合せの前回と今回との発生パターンが、所定回数連続する基準位置信号とカム角信号との組合せについて今回の組合せまで正常と判断されるまで気筒判別を再開しない。これに対し、図7に示す回転位置設定処理2において、気筒判別状態を未完了に設定してから図6の気筒判別処理1を実行し、基準位置信号とカム角信号との組合せが正常であれば気筒判別をすぐに再開してもよい。本発明は、ガソリンエンジンに限らず、ディーゼルエンジン等の内燃機関を駆動源とする車両に適用できる。また、上記実施形態では、パターン判定手段、回転位置設定手段および気筒判別手段の機能を、制御プログラムにより機能が特定されるECU10により実現している。これに対し、上記複数の手段の機能の少なくとも一部を、回路構成自体で機能が特定されるハードウェアで実現してもよい。このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。