(57)【要約】【課題】エンジンの噴射／点火を司るマイコン回路の異常を少オーバヘッドとなる方式で検出すること。【解決手段】本発明によるエンジン制御装置１は、クランク信号のエッジ間隔に基づいて、逓倍の角度クロックを生成する角度クロック生成部と、角度クロックに基づいて動作し、欠歯検出タイミングでリセットする角度カウンタと、欠歯検出タイミングでの角度カウンタのカウンタ値であって、リセットされる前のカウンタ値が、所定範囲内にないとき、角度カウンタのカウンタ値の異常を検出する監視部とを含む。【選択図】図１
2013108478.tif 000002
【特許請求の範囲】
【請求項１】
クランク信号のエッジ間隔に基づいて、逓倍の角度クロックを生成する角度クロック生成部と、
前記角度クロックに基づいて動作し、欠歯検出タイミングでリセットする角度カウンタと、
欠歯検出タイミングでの前記角度カウンタのカウンタ値であって、リセットされる前のカウンタ値が、所定範囲内にないとき、前記角度カウンタのカウンタ値の異常を検出する監視部とを含むことを特徴とする、エンジン制御装置。
【請求項２】
クランク信号のエッジ間隔に基づいて、逓倍の角度クロックを生成する角度クロック生成部と、
前記角度クロックに基づいて動作し、欠歯検出タイミングでリセットする角度カウンタと、
前記角度カウンタのカウンタ値に基づいて立ち上がりエッジ及び立下りエッジのタイミングが決定される信号を出力する出力部と、
欠歯検出タイミングを基準とした所定期間における前記信号の立ち上がりエッジ及び立下りエッジの発生状態に基づいて、前記角度カウンタのカウンタ値の異常を検出する監視部とを含むことを特徴とする、エンジン制御装置。
【請求項３】
前記監視部の機能は、エンジンの回転数が所定回転数以下である場合に無効化される、請求項１又は２に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、角度カウンタのカウンタ値の異常を検出する監視部を備えるエンジン制御装置に関する。
【背景技術】
【０００２】
従来から、マイコンが、ソフトウェアにより、クランク信号とカム信号のそれぞれについて、ＥＣＵへ正常に入力されているか否かを診断すると共に、その診断結果に応じて、入力制御回路から角度クロック生成回路に入力される信号を切り替える技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２９３６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一般的なエンジン制御装置では、エンジンのクランク軸センサからの出力信号とエンジンのカム軸センサからの出力信号からの出力信号とに基づいて、クランク軸の回転角度を逐次計測し、角度カウンタを稼動させることによって、燃料噴射制御や点火時期制御などのタイミング生成を行っており、角度カウンタの動作安定性がエンジン制御における重要な要素である。
【０００５】
ここで、エンジンの噴射／点火を司るマイコン回路の異常検出方法としては、クランク信号からの噴射／点火信号をソフトウェア処理又は外部ＩＣで監視する方法が考えられる。通常の４サイクルエンジン制御としては、クランク軸２回転の７２０クランクアングル（以下、単にＣＡとする）のあるタイミングで、噴射／点火が行われており、この７２０ＣＡに一度の割合で噴射／点火が行われていることを確認する必要があるが、この７２０ＣＡはエンジンの回転数によって単位時間が変動する。従って、クランク軸の回転速度を考慮した監視が必要となるので、ソフトウェア処理又は外部ＩＣでの監視では構成が非常に複雑となるという問題がある。例えば、ソフトウェア処理による監視の対象としては、マイコン機能として角度カウンタ部、タイマ部、汎用出力部等があり、ソフトウェアでのポーリング監視が考えられるが、監視イベントをクランク信号の受信イベントとすると、３６歯の場合は１０ＣＡとなり、エンジン回転数が１０ｋｒｐｍとすると約１５０μｓ毎に監視ソフトウェアが起動されることになり、ソフトウェア処理のＣＰＵ負荷に大きな影響を与える。また、外部ＩＣの場合、クランク信号からの角度算出が必要となるため、非常に大きな回路規模となってしまう。
【０００６】
そこで、本発明は、エンジンの噴射／点火を司るマイコン回路の異常を少オーバヘッドとなる方式で検出することができるエンジン制御装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一局面によれば、クランク信号のエッジ間隔に基づいて、逓倍の角度クロックを生成する角度クロック生成部と、
前記角度クロックに基づいて動作し、欠歯検出タイミングでリセットする角度カウンタと、
欠歯検出タイミングでの前記角度カウンタのカウンタ値であって、リセットされる前のカウンタ値が、所定範囲内にないとき、前記角度カウンタのカウンタ値の異常を検出する監視部とを含むことを特徴とする、エンジン制御装置が提供される。
【発明の効果】
【０００８】
本発明によれば、エンジンの噴射／点火を司るマイコン回路の異常を少オーバヘッドとなる方式で検出することができるエンジン制御装置が得られる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施例によるエンジン制御装置１の要部構成の一例を示すである。
【図２】マイコン１００におけるクランク信号処理の一例（実施例１）を示すブロック図である。
【図３】監視トリガ生成部３０及び角度カウンタ判定部３２の動作を説明するためのタイムチャートである。
【図４】監視トリガ生成部３０の内部機能の一例を示す図である。
【図５】図４に示す監視トリガ生成部３０の動作例を示すタイミングチャートである。
【図６】マイコン１００におけるクランク信号処理の他の一例（実施例２）を示すブロック図である。
【図７】マイコン１００におけるクランク信号処理の他の一例（実施例３）を示すブロック図である。
【図８】ポート出力判定部３８によるポート出力監視に関連した各種信号のタイミングチャートである。
【図９】ポート出力判定部３８の動作を説明するブロック図であり、正常時の状態を示す図である。
【図１０】ポート出力判定部３８の動作を説明するブロック図であり、異常時の状態を示す図である。
【図１１】ポート出力判定部３８による異常検出処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１１】
図１は、本発明の一実施例によるエンジン制御装置１の要部構成の一例を示すである。
【００１２】
エンジン制御装置１は、図１に示すように、入力回路２００と、統合ＩＣ２０２と、マイコン（マイクロコンピューター）１００とを含む。統合ＩＣ２０２の波形整形部２０２ａは、入力回路２００を介して入力されるクランク軸センサ（図示せず）からの出力信号を整形して、クランク信号としてマイコン１００に入力する。尚、マイコン１００には、他の信号（例えばカム軸センサからの出力信号）が同様に入力されてよい。
【００１３】
マイコン１００は、図１に示すように、主に、クランク信号を処理し、噴射／点火信号を出力するように構成される。マイコン１００は、汎用出力部２０と、ＣＰＵ２６と、クランクタイマ２８とを含む。
【００１４】
図２は、マイコン１００におけるクランク信号処理の一例（実施例１）を示すブロック図である。
【００１５】
クランクタイマ２８は、運用系１０２と、監視系１０４とを含む。運用系１０２は、エッジ検出部１０と、角度クロック生成部１２と、欠歯検出部１４と、角度カウンタ部１６と、タイマ部１８とを含む。監視系１０４は、監視トリガ生成部３０と、角度カウンタ判定部３２とを含む。
【００１６】
エッジ検出部１０は、入力されるクランク信号のエッジを検出し、エッジ間隔を計測する。クランク信号は、クランク軸の角度位置を表す信号であり、例えば、所定のクランク角度（例えば、６ＣＡ，１０ＣＡ）毎にエッジが発生する信号（パルス列）であってよい。尚、クランク軸の角度位置を示すためにクランクロータ（パルサロータ）の基準位置として数歯分（例えば２歯分）の欠歯が設定されている。従って、クランク信号は、そのパルス列の途中に所定パルス分（例えば２パルス分）のパルスが欠落する欠歯イベント（以下、単に、「欠歯」ともいう）が現れる。欠歯が現れる間隔は３６０°ＣＡ間隔である。
【００１７】
角度クロック生成部１２は、クランク信号のエッジ間隔に従い、所定の逓倍値の角度クロックを生成する。即ち、角度クロック生成部１２は、クランク信号のエッジ間隔に同期した角度クロックであって、クランク信号よりも逓倍値の倍率だけ分解能が高い角度クロックを生成する。例えば、クランク信号が１０ＣＡ毎のパルス列を発生し、逓倍値が１０である場合は、角度クロックは、クランク信号と同期した１ＣＡ毎のパルス列を形成する。
【００１８】
欠歯検出部１４は、クランク信号のエッジ間隔に基づいて、欠歯を検出する。欠歯の検出方法は、多種多様であり、任意の方法が使用されてもよい。例えば、今回のエッジ間隔τｂと前回のエッジ間隔τａとの比（τｂ／τａ）が所定閾値Ｎｔｈより大きい場合に、欠歯を検出してもよい。例えば、欠歯区間で２パルスが欠落される構成の場合、所定閾値Ｎｔｈは、２付近の値（例えば２．５）であってよい。
【００１９】
角度カウンタ部１６は、角度クロックをソースとして動作するフリーランカウンタを含む。角度カウンタ部１６は、角度クロックでカウントアップし、欠歯検出部１４により欠歯が検出された場合に、リセット（クリア）する。尚、角度カウンタ部１６は、３６０ＣＡ毎リセットするものであってもよいし、気筒情報に基づいて、７２０ＣＡ毎リセットするものであってもよい。
【００２０】
タイマ部１８は、角度カウンタ部１６のカウンタ値（角度カウンタ値ともいう）に基づくコンペアマッチタイマ機能を有する。例えば、タイマ部１８は、角度カウンタ部１６のカウンタ値が、所定の設定値と一致した場合（コンペアマッチ）に、割り込みを発生する。これにより、燃料の噴射タイミングや点火タイミング等がクランク角度に同期される。
【００２１】
汎用出力部２０は、タイマ部１８からのコンペアマッチ時の割り込みやＣＰＵ２６からの指示に基づいて、各種信号（噴射／点火信号等）を発生する。これにより、燃料の噴射や点火等が実行される。
【００２２】
ＣＰＵ２６は、各種ソフトウェアに基づいて、欠歯検出時やコンペアマッチ時の割り込み等での各種処理を行う。
【００２３】
監視トリガ生成部３０及び角度カウンタ判定部３２の動作については、図３を参照して説明する。
【００２４】
図３は、監視トリガ生成部３０及び角度カウンタ判定部３２の動作を説明するためのタイムチャートである。図３には、上から順に、クランク信号、角度クロック、角度カウンタ値、監視トリガ、角度カウンタ値ラッチの状態が示される。
【００２５】
監視トリガ生成部３０は、角度クロック生成部１２及び角度カウンタ部１６を監視する監視トリガを発生する。監視トリガ生成部３０は、図３に示すように、欠歯検出部１４により欠歯が検出されたタイミングで監視トリガを発生する。即ち、監視トリガ生成部３０は、欠歯検出イベントに応答して監視トリガを発生する。
【００２６】
角度カウンタ判定部３２は、監視トリガ生成部３０からの監視トリガの発生時に、角度カウンタ部１６のカウンタ値をラッチし、そのカウンタ値が所定範囲内であるか否かを判定する。尚、監視トリガの発生時にラッチされる角度カウンタ部１６のカウンタ値は、監視トリガをもたらす欠歯検出イベントによりリセットされる前の角度カウンタ部１６のカウンタ値である。角度カウンタ判定部３２の判定結果は、角度クロック生成部１２及び角度カウンタ部１６の状態を表す。具体的には、角度カウンタ部１６のカウンタ値が所定範囲内である場合には、角度クロック生成部１２及び角度カウンタ部１６に異常が無いことになり、角度カウンタ部１６のカウンタ値が所定範囲外である場合には、角度クロック生成部１２及び／又は角度カウンタ部１６に異常があることになる（又は異常の可能性があることになる）。この場合、ＣＰＵ割り込み通知などの異常処理が実行されてもよい。尚、所定範囲は、1点（１つ値）のみで規定されてもよいが、クランク信号へのノイズ重畳やパルス抜けを考慮して、ある範囲で規定される。角度カウンタ部１６が各欠歯検出イベント発生時にリセットする構成の場合（即ち、３６０ＣＡ毎にリセットする構成の場合）、クランク軸１周分の角度カウンタ値は３６０が正しい値であるが、所定範囲は、ノイズ重畳やパルス抜けを考慮して、３５５〜３６４といった幅を有する範囲であってよい。角度カウンタ部１６が１回おきの欠歯検出イベント発生時にリセットする構成の場合（即ち、７２０ＣＡ毎にリセットする構成の場合）、クランク軸２周分の角度カウンタ値は７２０が正しい値であるが、所定範囲は、ノイズ重畳やパルス抜けを考慮して、７１５〜７２４といった幅を有する範囲であってよい。
【００２７】
このように本実施例によれば、外部ＩＣによるコスト増加やＣＰＵの処理負荷の増加を回避しつつ、マイコン簡易回路だけの低コストとなる構成で、角度カウンタ部１６のカウンタ値の異常を検出することができる。
【００２８】
図４は、監視トリガ生成部３０の内部機能の一例を示す図である。図５は、図４に示す監視トリガ生成部３０の動作例を示すタイミングチャートである。
【００２９】
監視トリガ生成部３０は、図４に示すように、エンジン回転数保護部３０ａと、監視トリガ出力部３０ｂとを含む。
【００３０】
エンジン回転数保護部３０ａは、エンジンが低回転域にある場合（例えば、１０００ｒｐｍ未満である場合）、監視イネーブルを無効状態とする。監視トリガ出力部３０ｂは、監視イネーブルが無効状態（Ｌｏレベル）とされると、監視トリガを出力させない（図５のＹ部参照）。即ち、監視トリガが本来発生すべき場合（欠歯検出イベント）でも、監視イネーブルが無効状態である場合には、監視トリガが角度カウンタ判定部３２へと入力されない。このようにして、エンジン数が低回転域にある場合に、角度カウンタ判定部３２による監視機能が無効化され、エンジン数が低回転域を越えた場合のみ、監視イネーブルが有効とされて、欠歯検出イベントに応じて監視トリガが生成・出力される（図５参照）。これは、エンジンの低回転域は、回転数の変動が激しいため、ハードウェア回路での欠歯検出の簡易的なアルゴリズムでは、欠歯を誤検出してしまう可能性が高くなるためである。
【００３１】
ここで、クランク信号のエッジ間のクロック数＝［クランク信号のエッジ間隔］／［マクロクロック周期］＝［１／｛エンジン回転数｝／｛クランク軸ロータ歯数｝］／［１／｛マクロ動作周波数｝］の関係が成り立つ。この関係に基づいて、例えばエンジン回転数が低回転域にある場合のエッジ間のクロック数の範囲を導出（換算）しておき、ドラバソフトウェアによりクランク信号のエッジ間隔から算出されたエッジ間のクロック数に基づいて、エンジン回転数が低回転域にあるか否かが判定されてもよい。尚、クランク軸ロータ歯数は、エンジン構造から既知であり、マクロ動作周波数（マクロクロック周期）はマイコン１００の構成から既知である。
【００３２】
図６は、マイコン１００におけるクランク信号処理の他の一例（実施例２）を示すブロック図である。図６に示す例では、図２に示した例に対して、角度カウンタ判定部３２に代えて角度クロック判定部３４を有し、クランクタイマ２８Ａにおいて、角度クロック生成部１２により生成される角度クロックが、角度クロック判定部３４に入力される点が主に異なる。
【００３３】
角度クロック判定部３４は、角度クロックをソースとして動作するフリーランカウンタ（角度カウンタ）を含む。角度カウンタ部１６は、角度クロックでカウントアップし、欠歯検出部１４により欠歯が検出された場合に、リセット（クリア）する。
【００３４】
角度クロック判定部３４は、角度カウンタ判定部３２と同様、監視トリガ生成部３０からの監視トリガの発生時に、角度カウンタ部１６のカウンタ値をラッチし、そのカウンタ値が所定範囲内であるか否かを判定する。角度クロック判定部３４は、更に、監視トリガ生成部３０からの監視トリガの発生時に、自身の角度カウンタのカウンタ値が、所定範囲内であるか否かを判定する。これらの所定範囲は、互いに同じであってよく、それぞれ、１つ値のみで規定されてもよいが、クランク信号へのノイズ重畳やパルス抜けを考慮して、ある範囲で規定される。例えば、同様に、角度カウンタ部１６が各欠歯検出イベント発生時にリセットする構成の場合（即ち、３６０ＣＡ毎にリセットする構成の場合）、クランク軸１周分の角度カウンタ値は３６０が正しい値であるが、所定範囲は、ノイズ重畳やパルス抜けを考慮して、３５５〜３６４といった幅を有する範囲であってよい。角度カウンタ部１６が１回おきの欠歯検出イベント発生時にリセットする構成の場合（即ち、７２０ＣＡ毎にリセットする構成の場合）、クランク軸２周分の角度カウンタ値は７２０が正しい値であるが、所定範囲は、ノイズ重畳やパルス抜けを考慮して、７１５〜７２４といった幅を有する範囲であってよい。
【００３５】
図６に示す例によれば、監視系１０４Ａにおいても角度カウンタを実装して監視を行うことで、角度カウンタ部１６のカウンタ値の異常発生時の要因が、角度クロック生成部１２にあるのか、又は、角度カウンタ部１６にあるのかを特定することが可能となる。具体的には、角度カウンタ部１６のカウンタ値が所定範囲外であり、且つ、角度クロック判定部３４の角度カウンタのカウンタ値が所定範囲外である場合には、角度クロック生成部１２の逓倍機能に異常がある可能性が高いと判断することができる。この場合、ＣＰＵ割り込み通知などの異常処理が実行されてもよい。例えば、角度クロック生成部１２の逓倍機能に異常がある場合、逓倍率を変更することで最低限の噴射／点火の動作を継続させることが可能である。また、角度カウンタ部１６のカウンタ値が所定範囲外であり、且つ、角度クロック判定部３４の角度カウンタのカウンタ値が所定範囲内である場合には、角度カウンタ部１６に異常がある可能性が高いと判断することができる。この場合、ＣＰＵ割り込み通知などの異常処理が実行されてもよい。例えば、角度カウンタ部１６の角度カウンタに代えて、監視系１０４Ａの角度カウンタを運用系に切り替えることで、噴射／点火の動作を継続させることが可能である。
【００３６】
このように図６に示す例では、監視系１０４Ａはマイコンの完全二重系ではなく、実質的に角度カウンタのみを実装するので、回路規模を増大させることなく、低コストでの機能安全対応が可能となる。
【００３７】
尚、図６に示す例においても、監視トリガ生成部３０は、図４に示した構成（エンジン回転数保護機能）を有してもよい。この場合、角度クロック判定部３４による監視機能は、エンジンが低回転域にある場合に無効化され、エンジンが低回転域を超えた場合のみ、有効化される。
【００３８】
図７は、マイコン１００におけるクランク信号処理の他の一例（実施例３）を示すブロック図である。図７に示す例では、図２に示した例に対して、監視系１０４Ｂにおいて角度カウンタ判定部３２に代えてポート出力判定部３８を有し、クランクタイマ２８Ｂにおいて、角度カウンタ部１６のカウンタ値がポート出力判定部３８に入力されず、汎用出力部２０の出力がポート出力判定部３８に入力される点が主に異なる。
【００３９】
図８は、ポート出力判定部３８によるポート出力監視に関連した各種信号のタイミングチャートである。図８には、上から順に、クランク信号、欠歯イベント、角度カウンタ、４気筒エンジンの場合の噴射信号、点火信号及び基準信号の波形が示される。尚、クランク信号は、概略的に示されており、パルスは１本の縦線で表されている。また、図８に示す例では、角度カウンタは、７２０ＣＡ毎リセットする態様で示されている。尚、クランク信号における欠歯イベント間のパルスの数は、実際とは異なりうる適当な数で図示されている。
【００４０】
噴射信号、点火信号及び基準信号は、汎用出力部２０のポート出力として出力される。基準信号は、噴射信号及び点火信号と同様、角度カウンタ部１６のカウンタ値が、それぞれの所定の設定値と一致した場合（ライズエッジコンペアマッチ）に、立ち上がり、角度カウンタ部１６のカウンタ値が、それぞれの所定の設定値と一致した場合（フォールエッジコンペアマッチ）に、立ち下がるパルス出力である。尚、基準信号は、他の制御装置（ＥＣＵ）で使用されるクランク回転の基準位置（例えば上死点：TDC（Top  Dead  Center））を表す信号等であってよい。図８に示すように、各気筒の噴射／点火信号は、角度カウンタ部１６のカウンタ値に基づいて、７２０ＣＡ毎に一度のハルス出力であり、基準信号は、角度カウンタ部１６のカウンタ値に基づいて、３６０ＣＡ毎に一度のハルス出力である。ポート出力判定部３８は、以下で詳説するように、このクランク軸の角度回転周期をベースとして、ポート出力の監視を行う。
【００４１】
ポート出力判定部３８は、汎用出力部２０のポート出力を監視し、噴射信号等が、クランク軸の角度回転周期毎に、正常に出力されているか否かを判定する。ここで、上述の如く、噴射信号等は、クランク軸の所定角度回転周期毎（７２０ＣＡ毎又は３６０ＣＡ毎）に、１度出力されるが、これは、角度カウンタ部１６のカウンタ値が正常であることが前提である。角度カウンタ部１６のカウンタ値に異常がある場合には、例えば汎用出力部２０から噴射信号が出力されなかったり、立ち上がりだけして立ち下がらないパルスとして出力されうる。従って、ポート出力判定部３８は、汎用出力部２０のポート出力を監視することで、角度カウンタ部１６のカウンタ値の異常を検出することができる。
【００４２】
図９は、ポート出力判定部３８の動作を説明するブロック図であり、正常時の状態を示す図である。図１０は、ポート出力判定部３８の動作を説明するブロック図であり、異常時の状態を示す図である。図１１は、ポート出力判定部３８による異常検出処理の流れを示すフローチャートである。図９及び図１０には、上から順に、クランク信号、角度クロック、角度カウンタ、監視対象のポート出力、監視フラグ（ライズ）、監視フラグ（フォール）、監視トリガ及び監視周期の波形が示される。ここでは、一例として、角度カウンタは、３６０ＣＡ毎リセットする態様で示されている。監視周期は、監視対象のポート出力の周期（７２０ＣＡ毎又は３６０ＣＡ毎）に応じて設定される。例えば、３６０ＣＡ毎１度出力されるポート出力に対しては、３６０ＣＡ毎に監視を行う必要があり、監視周期は、３６０ＣＡ毎に毎回設定される。他方、７２０ＣＡ毎１度出力されるポート出力に対しては、７２０ＣＡ毎に監視を行う必要があり、監視周期は、３６０ＣＡ毎に一回おきに設定される。尚、図９及び図１０に示す例では、７２０ＣＡ毎１度出力されるポート出力に対する監視が想定されており、監視周期は、３６０ＣＡ毎に一回おきに設定されている（即ち、３６０ＣＡ毎に、監視対象周期と、監視非対称周期とを交互に繰り返す）。この場合、監視対象周期は、７２０ＣＡの前半区間と後半区間（０ＣＡから３６０ＣＡまでを前半区間、３６０ＣＡから７２０ＣＡまでを後半区間）のうちの監視対象となるポート出力が発生する区間に設定される。監視周期は、ソフトウェアにより設定されてよい。また、監視対象のポート出力は、噴射信号、点火信号及び基準信号等のいずれかであってもよいし、いずれか複数（全てを含む）のそれぞれであってもよい。
【００４３】
ポート出力判定部３８は、汎用出力部２０のポート出力の変化点（立ち上がりエッジ及び立下りエッジの両エッジ）を履歴保持するフラグを有する。具体的には、ポート出力判定部３８は、汎用出力部２０のポート出力の立ち上がりエッジを履歴保持する監視フラグ（ライズ）と、汎用出力部２０の同ポート出力の立下りエッジを履歴保持する監視フラグ（フォール）とを有する。監視フラグ（ライズ）は、図９に示すように、汎用出力部２０のポート出力の立ち上がりエッジの発生時、即ち角度カウンタ部１６のカウンタ値が、当該ポート出力に対応した所定の設定値（オン用の設定値）と一致した場合（ライズエッジコンペアマッチ）に、オンとなり、監視トリガの立下り時にオフとなる。また、監視フラグ（フォール）は、図９に示すように、汎用出力部２０のポート出力の立下りエッジの発生時、即ち角度カウンタ部１６のカウンタ値が、当該ポート出力に対応した所定の設定値（オフ用の設定値）と一致した場合（フォールエッジコンペアマッチ）に、オンとなり、監視トリガの立下り時にオフとなる。
【００４４】
図１１に示すように、ポート出力判定部３８は、監視トリガの立ち上がり時（図１１のステップ１１００）に、監視フラグの状態をチェックする（図１１のステップ１１０２）。監視フラグ（ライズ）と監視フラグ（フォール）とが、（０，０）である場合、即ち双方のフラグがゼロである場合は、ステップ１１０４に進み、（０，１）である場合、ステップ１１０６に進み、（１，０）である場合、ステップ１１０８に進み、（１，１）である場合、ステップ１１１０に進む。
【００４５】
ここで、角度カウンタ部１６のカウンタ値が正常である場合、図９に示すように、ライズエッジコンペアマッチ及びフォールエッジコンペアマッチが順次発生し、汎用出力部２０のポート出力が正常に出力されるので、監視トリガの発生時は、監視フラグ（ライズ）と監視フラグ（フォール）とが共にオンとなる（即ち、（１，１）となる）。
【００４６】
従って、図１１のステップ１１１０では、ポート出力判定部３８は、正常動作であると判定する。尚、その後、監視トリガの立下がり時に監視フラグがクリアされる。
【００４７】
他方、角度カウンタ部１６のカウンタ値が異常である場合、監視トリガの発生時は、監視フラグ（ライズ）と監視フラグ（フォール）の少なくともいずれかがオフとなる。例えば、図１０に示す例では、角度カウンタ部１６のカウンタ値は、ライズエッジコンペアマッチとなった後に、図１０でＸ１にて示すように、異常により飛び上がっている。これにより、図１０でＸ２にて示すように、正常時にはその後に生じるはずのフォールエッジコンペアマッチが発生せず（非マッチ）、監視フラグ（フォール）がオフのまま、監視トリガが発生する。即ち、この場合、監視トリガの発生時は、監視フラグ（ライズ）がオンとなり、監視フラグ（フォール）がオフとなる（即ち、（１，０）となる）。
【００４８】
従って、図１１のステップ１１０８では、ポート出力判定部３８は、異常動作であると判定する。この場合、異常処理として、ポート出力が強制的にネゲートされる（図１０のＸ３参照）。これにより、フォールエッジコンペアマッチとならず、ポート出力がオン状態を維持するのを防止することができる。
【００４９】
また、図１１のステップ１１０４及び１１０６では、ポート出力判定部３８は、監視機能に異常の可能性があると判断して、監視機能の初期化を行う。但し、監視機能を初期化しても依然としてステップ１１０４に至る場合には、ポート出力判定部３８は、運用系１０２の異常（角度カウンタ部１６のカウンタ値の異常を含む）の可能性があると判断してもよい。
【００５０】
尚、図７以降に示す例（実施例３）では、コンペアマッチの条件は、角度カウンタ部１６のカウンタ値が、所定の設定値と一致することであるが、角度カウンタ部１６のカウンタ値が、所定の設定値以上であることであってもよい。この場合、監視周期を適切に設定することで、角度カウンタ部１６のカウンタ値の異常を同様に検出することができる。
【００５１】
また、図７以降に示す例（実施例３）においても、監視トリガ生成部３０は、図４に示した構成（エンジン回転数保護機能）を有してもよい。この場合、ポート出力判定部３８による監視機能は、エンジンが低回転域にある場合に無効化され、エンジンが低回転域を超えた場合のみ、有効化される。
【００５２】
ところで、上述した実施例３においては、監視対象周期毎に、監視対象のポート出力が少なくとも１回は正常に出力されていることを監視できるものの、監視対象のポート出力が角度カウンタ部１６のカウンタ値の異常に起因して複数回出力されている場合を検出することができない。例えば、本来、３６０ＣＡ毎に１回出力されるはずのポート出力が、３６０ＣＡ毎に２回出力される場合でも、監視トリガの発生時は、監視フラグ（ライズ）と監視フラグ（フォール）とが共にオンとなり、正常とみなされる。そこで、かかる異常を検出するための構成が追加されてもよい。具体的には、監視フラグ（ライズ）がオンであるときに、ポート出力がオンとなった場合に、角度カウンタ部１６のカウンタ値の異常の可能性を検出することとしてもよい。
【００５３】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００５４】
例えば、上述した実施例では、エンジンが低回転域にある場合に、監視トリガを出力しないように構成されているが、かかる機能（図４に示したエンジン回転数保護部３０ａ）は省略されてもよい。即ち、エンジンの回転数に無関係に、監視トリガが生成・出力されてもよい。例えば、ソフトウェアで欠歯判定を行う場合や、ハードウェア回路として複雑な欠歯判定のアルゴリズムに対応する場合等であって、エンジンが低回転域においても精度良く欠歯を検出できる構成であれば、図４に示したエンジン回転数保護部３０ａが省略されてもよい。
【００５５】
また、上述した実施例では、ポート出力のアウトプットコンペア動作については、角度カウンタが例示されているが、時間カウンタが使用されてもよい。カウンタの動作ソース自体は任意であってよい。
【符号の説明】
【００５６】
１    エンジン制御装置
１０    エッジ検出部
１２    角度クロック生成部
１４    欠歯検出部
１６    角度カウンタ部
１８    タイマ部
２０    汎用出力部
２６    ＣＰＵ
２８，２８Ａ，２８Ｂ    クランクタイマ
３０    監視トリガ生成部
３０ａ    エンジン回転数保護部
３０ｂ    監視トリガ出力部
３２    角度カウンタ判定部
３４    角度クロック判定部
３８    ポート出力判定部
１００    マイコン
１０２    運用系
１０４，１０４Ａ，１０４Ｂ    監視系
２００    入力回路
２０２ａ    波形整形部
２０２    統合ＩＣ
【図１】
2013108478.tif 000003
【図２】
2013108478.tif 000004
【図３】
2013108478.tif 000005
【図４】
2013108478.tif 000006
【図５】
2013108478.tif 000007
【図６】
2013108478.tif 000008
【図７】
2013108478.tif 000009
【図８】
2013108478.tif 000010
【図９】
2013108478.tif 000011
【図１０】
2013108478.tif 000012
【図１１】
2013108478.tif 000013