(57)【要約】【課題】ハードウェアによるクランク角カウンタの異常を検出することが可能なエンジン制御装置を提供すること。【解決手段】エンジンに搭載されたクランク角センサからのクランク信号のパルスを検出し、パルス間隔を計測するパルス検出部と、前記パルス間隔を所定の逓倍値で逓倍することにより角度クロックを生成する角度クロック生成部と、前記角度クロックに基づいて動作するカウンタ部とを備えるハードウェアによる第１クランク角カウンタと、ＣＰＵ上において、前記パルス検出部による前記パルスの検出に基づいて動作するソフトウェアによる第２クランク角カウンタと、前記第１クランク角カウンタの値と、前記第２クランク角カウンタの値との比較により前記第１クランク角カウンタの異常を検出する異常検出部と、を備えることを特徴とする。【選択図】図１
2015151945.tif 000002
【特許請求の範囲】
【請求項１】
エンジンに搭載されたクランク角センサからのクランク信号のパルスを検出し、パルス間隔を計測するパルス検出部と、前記パルス間隔を所定の逓倍値で逓倍することにより角度クロックを生成する角度クロック生成部と、前記角度クロックに基づいて動作するカウンタ部とを備えるハードウェアによる第１クランク角カウンタと、
ＣＰＵ上において、前記パルス検出部による前記パルスの検出に基づいて動作するソフトウェアによる第２クランク角カウンタと、
前記第１クランク角カウンタの値と、前記第２クランク角カウンタの値との比較により前記第１クランク角カウンタの異常を検出する異常検出部と、を備えることを特徴とする、
エンジン制御装置。
【請求項２】
前記第２クランク角カウンタは、
前記パルス検出部による前記パルスの検出毎に値を更新することを特徴とする、
請求項１に記載のエンジン制御装置。
【請求項３】
前記所定の逓倍値は、２のべき乗であることを特徴とする、
請求項１又は２に記載のエンジン制御装置。
【請求項４】
前記異常検出部により前記第１クランク角カウンタに異常が検出されなかった場合、前記第１クランク角カウンタの値に基づいて、前記エンジンの制御を行い、前記異常検出部により前記第１クランク角カウンタの異常が検出された場合、前記第２クランク角カウンタの値に基づいて、前記エンジンの制御を行う制御部を備えることを特徴とする、
請求項１乃至３のいずれか一項に記載のエンジン制御装置。
【請求項５】
前記制御部は、
前記異常検出部により前記第１クランク角カウンタに異常が検出された場合、前記角度クロック生成部による角度クロックの生成を停止させ、前記第２クランク角カウンタの値を前記カウンタ部にロードすることを特徴とする、
請求項４に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア（電子回路）によるクランク角カウンタを備えるエンジン制御装置に関する。
【背景技術】
【０００２】
従来、クランク角センサからのクランク信号のパルスを検出し、パルス間隔を逓倍した角度クロックに基づき動作するクランク角カウンタを備えるエンジン制御装置が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１０８３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記エンジン制御装置は、クランク角カウンタの異常や故障を検出する機能を備えていない。そのため、クランク角カウンタに異常（故障）が発生した場合、エンジン制御装置は、エンジンの点火時期、燃料噴射時期等の制御を適切に行うことができない場合がありうる。
【０００５】
そこで、上記課題に鑑み、ハードウェアによるクランク角カウンタの異常を検出することが可能なエンジン制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、一実施形態において、エンジン制御装置は、
エンジンに搭載されたクランク角センサからのクランク信号のパルスを検出し、パルス間隔を計測するパルス検出部と、前記パルス間隔を所定の逓倍値で逓倍することにより角度クロックを生成する角度クロック生成部と、前記角度クロックに基づいて動作するカウンタ部とを備えるハードウェアによる第１クランク角カウンタと、
ＣＰＵ上において、前記パルス検出部による前記パルスの検出に基づいて動作するソフトウェアによる第２クランク角カウンタと、
前記第１クランク角カウンタの値と、前記第２クランク角カウンタの値との比較により前記第１クランク角カウンタの異常を検出する異常検出部と、を備えることを特徴とする。
【発明の効果】
【０００７】
本実施の形態によれば、ハードウェアによるクランク角カウンタの異常を検出することが可能なエンジン制御装置を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係るエンジン制御装置の要部構成の一例を示すブロック図である。
【図２】エンジン制御装置（クランク角カウンタ監視部、クランク角カウンタ制御部）による第１クランク角カウンタの異常検出処理の一例を示すフローチャートである。
【図３】エンジン制御装置（クランク角カウンタ監視部）による第１クランク角カウンタの異常検出処理における異常検出手法を説明する図である。
【図４】第１クランク角カウンタの異常時におけるエンジン制御装置によるフェールセーフ制御処理の一例を示すフローチャートである。
【図５】第１クランク角カウンタの正常時におけるエンジン制御装置の動作の一例を示す図である。
【図６】第１クランク角カウンタの異常時におけるエンジン制御装置の動作の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して発明を実施するための形態について説明する。
【００１０】
図１は、本実施形態に係るエンジン制御装置１の要部構成の一例を示すブロック図である。エンジン制御装置１は、車両の駆動力源の一つであるエンジン（不図示）の制御、具体的には、点火時期、燃料噴射時期、バルブ開閉時期等の制御を行う装置である。
【００１１】
エンジン制御装置１は、第１クランク角カウンタ１０とＣＰＵ２０等を含む。なお、第１クランク角カウンタ１０、ＣＰＵ２０は、例えば、エンジンの制御を司る電子制御ユニットであるエンジンＥＣＵ（不図示）内に含まれてよい。
【００１２】
第１クランク角カウンタ１０は、電子回路（ハードウェア）として構成され、パルス検出部１１、角度クロック生成部１２、カウンタ部１３、コンペア出力部１４等を含む。
【００１３】
パルス検出部１１は、エンジンに搭載されたクランク角センサ（不図示）から入力されるクランク信号のパルス（エッジ）を検出し、パルス間隔（今回検出されたパルスと前回検出されたパルスの間隔）を計測する。また、パルス検出部１１は、パルス（エッジ）を検出した場合、後述するＣＰＵ２０（第２クランク角カウンタ２１）にパルス検出に対応した割込み通知を出力する。なお、パルス間隔は、各パルスのエッジ（パルスの立ち上がり、又は立ち下がり）の間隔であってよい。クランク信号は、クランク軸の角度位置を表す信号であり、所定のクランク角（例えば、６°ＣＡ、１０°ＣＡ）毎にパルスが発生する信号（パルス列）であってよい。また、クランク軸の角度位置を示すためにクランクロータの基準位置として欠歯が設定されている。従って、クランク信号は、そのパルス列の途中に所定パルス分（例えば、２パルス分）のパルスが欠落する欠歯イベント（以下、単に、「欠歯」と呼ぶ）が現れる。欠歯が現れる間隔は、３６０°ＣＡ間隔である。なお、ＣＡは、クランクアングルを指す。
【００１４】
角度クロック生成部１２は、クランク信号のパルス間隔を所定の逓倍値で逓倍することにより角度クロックを生成する。即ち、角度クロック生成部１２は、クランク信号のパルス間隔に同期した角度クロックであって、クランク信号よりも逓倍値の倍率だけ分解能が高い角度クロックを生成する。例えば、クランク信号が１０°ＣＡ毎のパルス列を発生し、逓倍値が１０である場合、角度クロックは、クランク信号と同期した１°ＣＡ毎のパルス列を形成する。また、逓倍値が１６（＝２４）である場合、角度クロックは、クランク信号と同期した０．６２５°ＣＡ毎のパルス列を形成する。
【００１５】
カウンタ部１３は、角度クロック生成部により生成された角度クロックをソースとして動作するフリーランカウンタ、即ち、角度クロックでカウントアップするフリーランカウンタを含む。カウンタ部１３は、カウンタ値をコンペア出力部１４に出力すると共に、後述するクランク角カウンタ監視部２２に出力する。
【００１６】
コンペア出力部１４は、カウンタ部１３のカウンタ値に基づくコンペアマッチ機能を有する。例えば、カウンタ部１３のカウンタ値が、所定のクランク角イベント（点火、燃料噴射等）に対応した所定の設定値と一致した場合（具体的には、所定の設定値以上となった場合）、所定のクランク角イベントに対応した各種信号（点火信号、噴射信号等）を出力する。これにより、点火タイミングや燃料噴射タイミング等がクランク角に同期され、点火や燃料の噴射が適切に実行される。
【００１７】
ＣＰＵ２０は、第２クランク角カウンタ２１、クランク角カウンタ監視部２２、クランク角カウンタ制御部２３を含む。なお、第２クランク角カウンタ２１、クランク角カウンタ監視部２２、クランク角カウンタ制御部２３の機能は、ＲＯＭ（不図示）に格納された対応するプログラムをＣＰＵ２０上で実行（ソフトウェア処理）することにより実現される。
【００１８】
第２クランク角カウンタ２１は、パルス検出部１１から受信したパルス検出に対応した割込み通知に対応して動作するソフトウェアによるカウンタである。即ち、パルス検出部１１によるクランク信号のパルス検出毎にカウントアップするソフトウェアによるカウンタである。例えば、クランク信号が６°ＣＡ毎のパルス列を形成する場合、第２クランク角カウンタ２１は、６°ＣＡ毎にカウント値を更新（カウントアップ）する。
【００１９】
クランク角カウンタ監視部２２は、第１クランク角カウンタ１０（角度クロック生成部１２、カウンタ部１３）の異常（故障）を検出する異常検出手段である。具体的には、第１クランク角カウンタ１０（カウンタ部１３）から入力されたカウンタ値と第２クランク角カウンタ２１から入力されたカウンタ値との比較に基づいて、第１クランク角カウンタ１０の異常を検出する。クランク角カウンタ監視部２２による第１クランク角カウンタ１０の異常検出処理の詳細については、後述する。
【００２０】
クランク角カウンタ制御部２３は、クランク角カウンタ監視部２２により第１クランク角カウンタ１０の異常が検出された場合に、フェールセーフ制御を行う制御手段である。具体的には、クランク角カウンタ監視部２２による第１クランク角カウンタ１０の異常検出を受信した場合、角度クロック生成部１２による角度クロックの生成を停止させる。また、クランク角カウンタ制御部２３は、第１クランク角カウンタ１０の異常時において、第２クランク角カウンタ２１のカウンタ値が更新（カウントアップ）される度に当該カウント値をカウンタ部１３にロードする。これにより、第１クランク角カウンタ１０の異常時であっても、クランク信号のパルス検出に対応して動作するソフトウェアによる第２クランク角カウンタ２１（のカウンタ値）に基づく、フェールセーフ機能としてのエンジン制御を継続することができる。また、フェールセーフ機能としてのエンジン制御を継続することができるため、第１クランク角カウンタ１０の異常により突然車両が走行不能になることがなく、エンジンの縮退動作により最寄のディーラーまで走行する等の退避走行が可能となる。
【００２１】
次に、エンジン制御装置１による第１クランク角カウンタ１０の異常検出処理について説明する。
【００２２】
図２は、エンジン制御装置１（クランク角カウンタ監視部２２、クランク角カウンタ制御部２３）による第１クランク角カウンタ１０の異常検出処理の一例を示すフローチャートである。当該処理フローは、第１クランク角カウンタ１０のカウンタ部１３のカウンタ値が更新される度（更新された値が入力される度）に実行される。なお、本例では、角度クロック生成部１２がクランク信号のパルス間隔を逓倍値として２のべき乗（例えば、４（＝２２）、８（＝２３）、１６（＝２４）等）で逓倍することにより角度クロックを生成することを前提とする。以下、逓倍値としての２のべき乗の乗数部分を単に「乗数」と呼ぶ場合がある。
【００２３】
図２を参照するに、ステップＳ１０１では、クランク角カウンタ監視部２２が第１クランク角カウンタ１０（カウンタ部１３）のカウンタ値と第２クランク角カウンタ２１のカウンタ値との比較により第１クランク角カウンタ１０が正常か否かを判定する。具体的には、第１クランク角カウンタ１０（カウンタ部１３）のカウンタ値（２進数）の下位ビット（ＬＳＢｓ）を乗数分（例えば、逓倍値が４（＝２２）の場合、２ビット分）マスクした値（以下、単に「カウンタマスク値」と呼ぶ）と、第２クランク角カウンタ２１のカウンタ値（２進数）が一致するかを判定する。
【００２４】
ここで、ステップＳ１０１の処理について、図３を用いて、具体的に説明をする。
【００２５】
図３は、エンジン制御装置１（クランク角カウンタ監視部２２）による第１クランク角カウンタ１０の異常検出処理における異常検出手法を説明する図である。図３（ａ）は、第２クランク角カウンタ２１によるカウンタ値の更新（カウントアップ）の様子を模式的に表現した図であり、左から右に向かって、カウンタ値の更新を階段状に表現している。同様に、図３（ｂ）は、第１クランク角カウンタ１０（カウンタ部１３）のカウンタ値の更新（カウントアップ）の様子を模式的に表現した図であり、左から右に向かって、カウンタ値の更新を階段状に表現している。また、図３（ａ）、（ｂ）共に、階段部分に１０進数のカウンタ値を示し、階段状に表現した図の下に２進数のカウンタ値を示している。なお、本図に示す例では、角度クロック生成部１２がクランク信号のパルス間隔を４（＝２２）で逓倍した角度クロックを生成し、当該角度クロックによりカウンタ部１３がカウントアップする。即ち、クランク信号のパルス検出毎に更新される第２クランク角カウンタ２１がカウンタ値を１回更新する間に、第１クランク角カウンタ１０は、４回カウンタ値を更新する。また、説明の便宜上、図３（ａ）に示す第２クランク角カウンタ２１の２進数のカウンタ値は２桁（２ビット）、図３（ｂ）に示す第１クランク角カウンタ１０の２進数のカウンタ値は４桁（４ビット）でそれぞれ表示している。
【００２６】
クランク信号と同期する第１クランク角カウンタ１０が正常である場合、そのカウンタ値と同じくクランク信号と同期する第２クランク角カウンタ２１のカウンタ値は、所定の一致性を示す。但し、第１クランク角カウンタ１０と第２クランク角カウンタ２１の更新周期が異なるため、カウンタ値そのものの一致では、正常か否かの判断をすることができない。例えば、図３を参照するに、第１クランク角カウンタ１０の正常時において、第２クランク角カウンタ２１のカウンタ値が「０」の場合、第１クランク角カウンタ１０のカウンタ値は、「０」〜「３」の間である。よって、第２クランク角カウンタ２１のカウンタ値が「０」の場合であって、第１クランク角カウンタ１０のカウンタ値が「０」〜「３」の場合、第１クランク角カウンタ１０は正常であるといえる。一方、第２クランク角カウンタ２１のカウンタ値が「０」の場合であって、第１クランク角カウンタ１０のカウンタ値が「０」〜「３」以外の場合、第１クランク角カウンタ１０に異常が発生している可能性があるといえる。
【００２７】
ここで、図３を参照するに、第１クランク角カウンタ１０の正常時において、第１クランク角カウンタ１０のカウンタマスク値は、第２クランク角カウンタ２１のカウンタ値と一致する。例えば、第１クランク角カウンタ１０のカウンタ値「０」、「１」、「２」、「３」は、２進数で「００００」、「０００１」、「００１０」、「００１１」と表され、下位ビットを乗数分（２ビット分）マスクすると、「００」となる。即ち、第２クランク角カウンタ２１の対応するカウンタ値「０」の２進数表示「００」と一致する。同様に、第１クランク角カウンタ１０のカウンタ値が「４」〜「７」の場合、カウンタマスク値は、「０１」となり、第２クランク角カウンタ２１の対応するカウンタ値「１」の２進数表示「０１」と一致する。また、同様に、第１クランク角カウンタ１０のカウンタ値が「８」〜「１１」の場合、カウンタマスク値は、「１０」となり、第２クランク角カウンタ２１の対応するカウンタ値「２」の２進数表示「１０」と一致する。また、同様に、第１クランク角カウンタ１０のカウンタ値が「１２」〜「１５」の場合、カウンタマスク値は、「１１」となり、第２クランク角カウンタ２１の対応するカウンタ値「３」の２進数表示「１１」と一致する。
【００２８】
このように、第１クランク角カウンタ１０のカウンタマスク値と第２クランク角カウンタ２１のカウンタ値（２進数）とが一致するか否かを判定することで、第１クランク角カウンタ１０が正常か否かを判定することができる。
【００２９】
なお、本例では、角度クロック生成部１２によりパルス間隔を逓倍する場合の所定の逓倍値を２のべき乗にする場合について説明をしたが、所定の逓倍値が２のべき乗以外の場合でも、同様に第１クランク角カウンタ１０が正常か否かを判定することが可能である。即ち、ステップＳ１０１にて、第１クランク角カウンタ１０のカウンタ値と第２クランク角カウンタ２１の値が対応しているか否かを判定するとよい。例えば、所定の逓倍値が「１０」の場合、第２クランク角カウンタ２１のカウンタ値「０」に対応する第１クランク角カウンタ１０のカウンタ値は「０」〜「９」であるので、対応している場合には、正常であり、対応していない場合は異常と判定すればよい。
【００３０】
図２に戻り、ステップＳ１０１にて、第１クランク角カウンタ１０のカウンタマスク値と第２クランク角カウンタ２１のカウンタ値（２進数）とが一致する場合、ステップＳ１０６に進み、一致しない場合、ステップＳ１０２に進む。
【００３１】
ステップＳ１０２では、クランク角カウンタ監視部２２が異常フラグＦの値をインクリメントする（値に１を加える）。なお、異常フラグＦは、第１クランク角カウンタ１０の異常度合いを示すフラグ値である。即ち、本例では、ステップＳ１０１の条件を満足しない状況が一定期間継続した場合に第１クランク角カウンタ１０の異常を検出するため、異常フラグＦを設定し、ステップＳ１０１の条件を満足しない場合に値をインクリメントする。なお、ステップＳ１０１の条件を満足しない場合、即座に、第１クランク角カウンタ１０の異常を検出してもよい。
【００３２】
ステップＳ１０３では、クランク角カウンタ監視部２２が、異常フラグＦは閾値Ｆｔｈ以上であるか否かを判定する。例えば、７２０°ＣＡ以上の期間、ステップＳ１０１の条件を満足しない状況が継続した時点で第１クランク角カウンタ１０の異常を検出する場合、閾値Ｆｔｈは、角度クロックの逓倍値に欠歯分も含めたクランクロータの歯数を乗じた値に設定するとよい。異常フラグＦが閾値Ｆｔｈ以上である場合、ステップＳ１０４に進み、異常フラグＦが閾値Ｆｔｈ以上でない（閾値Ｆｔｈより小さい）場合、今回の処理を終了する。
【００３３】
ステップＳ１０４では、クランク角カウンタ監視部２２が第１クランク角カウンタ１０の異常を検出し、クランク角カウンタ制御部２３に異常検出した旨を通知する。
【００３４】
ステップＳ１０５では、クランク角カウンタ制御部２３が第１クランク角カウンタ１０の異常検出の通知を受けて、上述したとおり、角度クロック生成部１２による角度クロック生成を停止し、今回の処理を終了する。
【００３５】
一方、ステップＳ１０６では、ステップＳ１０１の条件を満足しているため、異常フラグＦの値を０にして、今回の処理を終了する。
【００３６】
このように、エンジン制御装置１（クランク角カウンタ監視部２２）は、ハードウェアによる第１クランク角カウンタ１０の値とソフトウェアによる第２クランク角カウンタ２１の値との比較することにより、第１クランク角カウンタ１０の故障を検出することができる。また、第１クランク角カウンタ１０の値（２進数）の下位ビットをマスク（換言すれば、上位ビットを右シフト）して、第２クランク角カウンタ２１の値（２進数）と比較するのみで異常判定が可能であるため、ＣＰＵの処理負荷を軽減できる。また、第２クランク角カウンタ２１の更新（カウントアップ）処理は、上述したとおり、クランク信号のパルス検出毎（例えば、６°ＣＡ毎、１０°ＣＡ毎）に行われるため、ＣＰＵ処理負荷が必要以上に高まり、通常のエンジン制御に影響が出ることもない。
【００３７】
なお、クランク角カウンタ監視部２２により第１クランク角カウンタ１０の異常検出がされた場合、例えば、コンビネーションメータにインジケータランプを点灯させる等により、車両の運転者に異常検出がされた旨を通知してよい。これにより、運転者は、エンジン制御装置１（第１クランク角カウンタ１０）の故障を認知し、その後の対応（路側への退避、ディーラーへの持ち込み）等を図ることができる。
【００３８】
次に、第１クランク角カウンタ１０の異常時におけるエンジン制御装置１（クランク角カウンタ制御部２３）によるフェールセーフ制御処理について説明をする。具体的には、第１クランク角カウンタ１０のカウンタ値の代わりに第２クランク角カウンタ２１のカウンタ値に基づいて、エンジン制御を継続する処理について説明する。
【００３９】
図４は、第１クランク角カウンタ１０の異常時におけるエンジン制御装置１によるフェールセーフ制御処理の一例を示すフローチャートである。当該フローは、クランク角カウンタ監視部２２により第１クランク角カウンタ１０の異常検出がされた後において、パルス検出部１１によりクランク信号のパルス（エッジ）が検出される毎に実行される。
【００４０】
図４を参照するに、ステップＳ２０１では、パルス検出部１１がクランク信号のパルス検出による割込み通知をＣＰＵ２０（第２クランク角カウンタ２１）に出力する。
【００４１】
続いて、ステップＳ２０２では、第２クランク角カウンタ２１が今回のパルス間隔τｎと前回のパルス間隔τｎ−１に基づき、カウンタ値を更新（カウントアップ）する。上述したとおり、クランク信号には、欠歯があるため、今回のパルス間隔τｎと前回のパルス間隔τｎ−１から欠歯であるか否かを判断して、カウンタ値を更新する。
【００４２】
続いて、ステップＳ２０３では、クランク角カウンタ制御部２３が第１クランク角カウンタ１０（カウンタ部１３）に第２クランク角カウンタ２１のカウンタ値をロードする。
【００４３】
続いて、ステップＳ２０４では、コンペア出力部１４がカウンタ部１３のカウンタ値が所定のクランク角イベント（燃料噴射、点火等）に対応する設定値以上か否かを判定する。カウンタ値が設定値以上である場合、ステップＳ２０５に進み、カウンタ値が設定値以上でない（設定値より小さい）場合、今回の処理を終了する。なお、クランク角の２回転中、すでに完了した所定のクランク角イベントに関しては、当該判定処理は行われない。
【００４４】
ステップＳ２０５では、コンペア出力部１４が所定のクランク角イベントに対応する信号（噴射信号、点火信号等）を出力する。
【００４５】
このように、第１クランク角カウンタ１０の異常検出により角度クロック生成部１２による角度クロック生成が停止されても、第２クランク角カウンタ２１のカウンタ値によりコンペア出力部１４のコンペアマッチ機能に基づくエンジン制御を継続することができる。
【００４６】
次に、第１クランク角カウンタ１０の正常時と異常時におけるエンジン制御装置１によるエンジン制御処理動作について、図５、６の具体例を用いて説明をする。
【００４７】
図５は、第１クランク角カウンタ１０の正常時におけるエンジン制御装置１の動作の一例を示す図であり、図６は、第１クランク角カウンタ１０の異常時におけるエンジン制御装置１の動作の一例を示す図である。図５、６共に、２１２．５°ＣＡで燃料噴射を開始するクランク角イベントが発生する際のタイミングチャートを示しており、上からクランク信号のパルス列、角度クロックのパルス列、カウンタ値の更新、コンペア出力部１４からの出力（コンペア出力）を示す。なお、クランク信号は、１０°ＣＡ毎にパルスを発生し、角度クロックは、クランク信号のパルス間隔を１６（＝２４）逓倍したパルス列を発生する（即ち、０．６２５°ＣＡ毎にパルスを発生する）。また、図６では、角度クロック生成部１２による角度クロック生成が停止されているため、角度クロックは点線表示されている。
【００４８】
まず、図５を参照するに、第１クランク角カウンタ１０の正常時には、角度クロック生成部１２が角度クロックとして０．６２５°ＣＡ毎のパルス列を生成する。そのため、カウンタ部１３のカウンタ値が２１２、５°ＣＡに対応する値（図中矢印の位置）になると、コンペア出力部１４がコンペアマッチ機能によりクランク角イベント（燃料噴射）に対応する信号（噴射信号）を出力している。
【００４９】
一方、図６を参照するに、第１クランク角カウンタ１０の異常時には、第２クランク角カウンタ２１のカウンタ値がカウンタ部１３にロードされるため、カウンタ部１３のカウンタ値は、クランク信号と同期して１０°ＣＡ毎に更新される。そのため、２１２．５°ＣＡで燃料噴射するクランク角イベントに対して、カウンタ部１３のカウンタ値が２２０°ＣＡに対応する値になったときにコンペア出力部１４による燃料噴射信号が出力される。また、第２クランク角カウンタ２１は、パルス検出部１１からの割込み通知を受信して、ソフトウェア処理によりカウンタ値を更新する。そのため、第２クランク角カウンタ２１によるカウンタ値の更新自体に、パルス検出部１１によるクランク信号のパルス（エッジ）検出時点に対するソフトウェア処理による処理遅延αが生じる。例えば、エンジン回転数が３０００ｒｐｍの場合、第１クランク角カウンタ１０の正常時に対して、２１２．５°ＣＡと２２０°ＣＡのずれ量７．５°ＣＡ分に対応する４１６．７μｓｅｃに処理遅延αを加えた程度の遅れで燃料噴射信号が出力される。
【００５０】
このように、第１クランク角カウンタ１０の異常時においても、所定のクランク角イベントに対する制御の遅れは生じるものの、ソフトウェアによる第２クランク角カウンタ２１によりフェールセーフ機能としてのエンジン制御を継続することができる。
【００５１】
以上、本発明を実施するための形態について詳述したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５２】
１  エンジン制御装置
１０  第１クランク角カウンタ
１１  パルス検出部
１２  角度クロック生成部
１３  カウンタ部
１４  コンペア出力部
２０  ＣＰＵ
２１  第２クランク角カウンタ
２２  クランク角カウンタ監視部（異常検出部）
２３  クランク角カウンタ制御部（制御部）
【図１】
2015151945.tif 000003
【図２】
2015151945.tif 000004
【図３】
2015151945.tif 000005
【図４】
2015151945.tif 000006
【図５】
2015151945.tif 000007
【図６】
2015151945.tif 000008