(57)【要約】【課題】優先順位の高いタスクの割込みの多い高制御負荷状態であっても、優先順位の低いタスクである異常継続時間の計測誤差を低減することのできる異常検出装置を提供する。【解決手段】入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する異常検出装置であって、異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定部（タスク抜け判定部）１２と、処理抜け判定部１２により異常検出処理の実行が妨げられたと判定されると異常継続時間の補正値を算出する継続時間補正値算出部（継続時間補正処理部）１３を備え、異常検出処理は、継続時間補正値算出部１３で算出された補正値に基づいて異常継続時間を補正して計測するように構成されている。【選択図】図３
2009116816.tif 000002
【特許請求の範囲】
【請求項１】
入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する制御部を備えた異常検出装置であって、
前記異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定部と、
前記処理抜け判定部により前記異常検出処理の実行が妨げられたと判定されると前記異常継続時間の補正値を算出する継続時間補正値算出部を備え、
前記異常検出処理は、前記継続時間補正値算出部で算出された補正値に基づいて前記異常継続時間を補正して計測するように構成されている異常検出装置。
【請求項２】
前記異常検出処理より優先度が高い処理の実行時に所定の異常判定時間間隔で計測される高タスクカウンタと、前記異常検出処理の実行時に前記異常判定時間間隔で計測される低タスクカウンタを備え、前記処理抜け判定部は前記高タスクカウンタと前記低タスクカウンタの計測値に基づいて前記異常検出処理の実行が妨げられたか否かを判定する請求項１記載の異常検出装置。
【請求項３】
前記継続時間補正値算出部は前記高タスクカウンタと前記低タスクカウンタの計測値の差分または比率に基づいて前記異常継続時間の補正値を算出する請求項２記載の異常検出装置。
【請求項４】
前記処理抜け判定部はエンジン回転数または車速情報を含む車両情報に基づいて高制御負荷状態であると判断されるときに前記異常検出処理の実行が妨げられたと判定する請求項１記載の異常検出装置。
【請求項５】
前記処理抜け判定部はエンジン回転数または車速情報を含む車両情報に基づいて高制御負荷状態が所定時間継続したと判断されるときに前記異常検出処理の実行が妨げられたと判定する請求項４記載の異常検出装置。
【請求項６】
前記継続時間補正値算出部はエンジン回転数または車速情報を含む車両情報と対応付けられた補正情報に基づいて前記異常継続時間の補正値を算出する請求項４または５記載の異常検出装置。
【請求項７】
前記処理抜け判定部は所定の処理抜け判定時間間隔で処理抜け判定を実行し、前記継続時間補正値算出部は前記処理抜け判定部により前記異常検出処理の実行が妨げられたと判定されると前記処理抜け判定時間間隔よりも短い補正時間間隔で前記異常継続時間の補正値を算出する請求項１から６の何れかに記載の異常検出装置。
【請求項８】
前記処理抜け判定部による判定結果に基づいて前記継続時間補正値算出部が実行されるモードと、前記処理抜け判定部による判定結果にかかわらず前記継続時間補正値算出部が実行されるモードに切替可能なモード切替部を備えている請求項１から７の何れかに記載の異常検出装置。
【請求項９】
入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する異常検出方法であって、
前記異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定ステップと、前記処理抜け判定ステップで前記異常検出処理の実行が妨げられたと判定されると前記継続時間の補正値を算出する継続時間補正値算出ステップを備え、前記異常検出処理は、前記継続時間補正値算出ステップで算出された補正値に基づいて異常継続時間を補正して計測する異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常を検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する制御部を備えた異常検出装置に関する。
【背景技術】
【０００２】
近年、車両のエンジン等を制御する電子制御装置は高機能化しており、一台の電子制御装置によって実行される燃料噴射量の演算処理や異常診断処理等の一纏りの処理（以下、「タスク」とも記す。）の数は従来に比べて増加している。そのため、一台の電子制御装置によって実行される全てのタスクを、短期間のインタバルで実行するのは困難となっている。
【０００３】
そこで、高機能化された電子制御装置では、各タスクに優先順位を設定して、高優先度のタスクが所定のインタバルで確実に実行できるようにする一方、低優先度のタスクが前記所定のインタバルで実行されないことが許容される場合もあった。
【０００４】
例えば、エンジン制御用の電子制御装置では、車両の動作上及び乗員の安全上重要なタスク（クランク角パルス等に基づく燃料噴射タイミングや燃料噴射量の演算等）を高優先度に設定し、それ以外のタスク（異常診断処理等）の優先順位を低優先度に設定して、高優先度のタスクを確実に実行することで、良好なエンジン制御を可能としていた。
【０００５】
尚、高優先度のタスクを確実に実行できるようにした構成として、特許文献１には、車速等の車両の状態に応じて変化するエンジン制御のソフトの負荷の大きさを判定し、判定結果に応じてダイアグの通信のインタバル時間を制御することで、エンジン制御の処理遅れを生じさせないようにするダイアグ通信方法が開示されている。
【特許文献１】特開平１０−１７７４９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上述したとおり、エンジン制御用の電子制御装置における異常診断処理は、通常、比較的低い優先度に設定されている。
【０００７】
よって、エンジン制御用の電子制御装置のＣＰＵは、あるタイミングで高優先度のタスクの割込みが入った場合、そのタイミングが異常診断処理の実行タイミングであっても高優先度のタスクを優先して実行するので、当該実行タイミングでは異常診断処理が中断され或は実行されない、つまり、当該実行タイミングで異常診断処理が抜け落ちてしまう。
【０００８】
エンジン制御用の電子制御装置における高優先度のタスクとしては、上述したとおり、クランク角パルス等に基づく燃料噴射タイミングや燃料噴射量の演算処理がある。そして、前記演算処理は、エンジン回転数の上昇に比例して割込みのインタバルが短くなって、前記ＣＰＵの負荷を増加させる。
【０００９】
つまり、上述した異常診断処理の抜け落ちは、前記ＣＰＵの負荷が増加した状態（高制御負荷状態）においてより多く発生し、異常診断処理の抜け落ちが多発すると異常継続時間が正しく算出されなくなってしまうのである。
【００１０】
詳述すると、図１に示すように、電子制御装置が、異常診断処理で異常が検出される度にカウントアップするカウンタのカウント値が所定の異常検出閾値に達したときに、異常情報を出力する構成である場合、前記ＣＰＵの負荷が増加していない状態（通常状態）では、異常診断処理の抜け落ちの発生がなく（または、発生が少なく）、時間ｔ１で異常情報が出力される。
【００１１】
一方、高制御負荷状態では、異常診断処理の抜け落ちによって、前記カウンタのカウントアップが実行されないタイミングが発生し、異常診断処理の抜け落ち回数分の時間だけ異常情報の出力が遅れてしまう。
【００１２】
本発明の目的は、上述した従来の問題点に鑑み、優先順位の高いタスクの割込みの多い高制御負荷状態であっても、優先順位の低いタスクである異常継続時間の計測誤差を低減することのできる異常検出装置、及び、異常検出方法を提供する点にある。
【課題を解決するための手段】
【００１３】
上述の目的を達成するため、本発明による異常検出装置の特徴構成は、入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する制御部を備えた異常検出装置であって、前記異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定部と、前記処理抜け判定部により前記異常検出処理の実行が妨げられたと判定されると前記異常継続時間の補正値を算出する継続時間補正値算出部を備え、前記異常検出処理は、前記継続時間補正値算出部で算出された補正値に基づいて前記異常継続時間を補正して計測するように構成されている点にある。
【００１４】
上述の構成によれば、異常検出処理の実行が他の処理の実行により妨げられて、異常継続時間の計測が実行されなかった場合でも、前記継続時間補正値算出部が、計測されなかった分の時間を補うための補正値を算出して、算出された補正値が異常検出処理によって補正して計測されるので、異常継続時間の計測の誤差を低減することができる。
【発明の効果】
【００１５】
以上説明した通り、本発明によれば、優先順位の高いタスクの割込みの多い高制御負荷状態であっても、優先順位の低いタスクである異常継続時間の計測誤差を低減することのできる異常検出装置、及び、異常検出方法を提供することができるようになった。
【発明を実施するための最良の形態】
【００１６】
以下、本発明による異常検出装置が、車両のエンジン制御用の電子制御装置に組み込まれて実現されている実施形態について説明する。
【００１７】
図２に示すように、エンジン制御用の電子制御装置１は、マイクロコンピュータ２と、各種センサ等からのアナログ信号やデジタル信号を入力する入力インタフェース回路３と、前記アナログ信号をデジタル信号に変換するＡ／Ｄコンバータ４と、入力された信号に基づいてマイクロコンピュータ２で演算された結果としての信号を各種アクチュエータへ出力する出力インタフェース回路５等のハードウェアを備えて構成されている。
【００１８】
マイクロコンピュータ２は、ＣＰＵ２１と、ＣＰＵ２１で実行される制御プログラムが格納されたＲＯＭ２２と、及びワーキングエリアとして使用されるＲＡＭ２３と、給電停止時でも保存する必要のある設定情報等を記憶しておくＥＥＰＲＯＭ２４と、タイマ回路２５等を備えている。
【００１９】
ＣＰＵ２１は、ＲＯＭ２２に格納された制御プログラムに従って、入力インタフェース回路３やＡ／Ｄコンバータ４を介して、クランクパルスや車速パルス等のパルス信号、バキュームセンサ、吸気温センサ、水温センサ、酸素センサ、スロットルポジションセンサ等の各種のセンサ出力を取り込み、それらの値に基づいてエンジンを所定状態に駆動制御するための制御信号を生成して、出力インタフェース回路５を介して、イジェクタ、イグナイタ、ＩＳＣＶ、変速ソレノイド等に制御信号を出力する。
【００２０】
ＣＰＵ２１は、例えば、スロットルポジションセンサの入力値に対応した回転数にエンジンを制御するために、必要な燃料噴射量を演算導出してインジェクタを制御し、クランクパルス及び車速パルスに応じて適切な変速比に制御すべく変速ソレノイドを駆動する。
【００２１】
上述の制御プログラムは、燃料噴射量の演算、燃料噴射タイミングの演算等、エンジンを所定状態に駆動制御するための各種の制御処理を実行するプログラムと、各種のセンサの検出信号に基づいてエンジンまたはセンサに異常が生じているか否かを検出する異常検出処理を実行するプログラム等で構成され、図３に示すように、ＣＰＵ２１によって燃料噴射量の演算、インジェクタの駆動制御、各種の異常検出処理等の夫々一纏りの処理（以下、「タスク」とも記す。）を以下に説明する割込み制御部の制御下でシーケンシャルに実行するイベント実行型の制御部１１が構成されている。
【００２２】
割込み制御部は、クランクパルスや車速パルスの入力エッジで起動される外部パルス割込み、Ａ／Ｄコンバータ４によるＡＤ変換時に起動されるＡ／Ｄ変換割込み、複数の時間間隔で起動されるタイマ割込み等が発生すると夫々に対応するタスクを起動するための割込み要求フラグがセットされる割込みレジスタと、割込みレジスタに同時に複数の割込みフラグがセットされたときに優先的に処理すべきタスクを起動するように優先順位を設定する優先順位設定レジスタと、任意の割込み処理を禁止する割込みマスクレジスタ等を備えて構成されている。
【００２３】
割込みレジスタに同時に複数の割込み要求フラグがセットされると、優先順位設定レジスタで設定された優先順位の高い割込み処理が起動される。また、任意の割込み処理に対応したタスクで他の割込みマスクレジスタのマスクフラグがセットされると、当該タスクの実行中にマスクフラグがセットされた割込み処理は割込み要求フラグがセットされても実行されずに待機するように制御される。
【００２４】
電子制御装置１には、さらに、異常検出処理である異常診断処理タスクをタイマ割込み処理として実行した結果、あるセンサに異常が発生したと診断されると、当該異常情報を異常表示部へ出力するためのシリアルインタフェース回路６を備えている。尚、異常表示部は、異常情報に基づいてウォーニングランプを点灯駆動するように構成されており、例えば、車両のダッシュボード等に設けられている。
【００２５】
以下、制御部の処理について詳述する。電子制御装置１に電源が投入され、ＣＰＵ２１が起動されると、制御プログラムに基づいてＣＰＵ２１の内部レジスタや上述の割込みレジスタ、優先順位設定レジスタ、割込みマスクレジスタ等が初期化処理され、ＲＡＭ２３等のメモリの初期化処理（例えば、メモリの各アドレスに「０」等の初期データを格納する処理）が実行され、初期化処理の終了後に、割込み要求を待つ待機状態に入る。そして、割込み要求があると、当該割込み要求に対応したタスクを実行し、タスクの実行が終了すると再び待機状態に戻って次の割込み要求を待つ。
【００２６】
マイクロコンピュータ２に備えられたタイマ回路２５によって計時されたカウント値が、マイクロコンピュータ２のタイマレジスタに設定された所定のカウント閾値を超えたときにタイマ割込フラグがセットされて、タイマ割込みが起動される。前記カウント値が前記カウント閾値を超えると、ＣＰＵ２１は前記カウント閾値に対応するタスクを実行するとともに、タイマ回路２５をリセットする。そして、タイマ回路２５によって計時されたカウント値が、再び前記カウント閾値を超えると、ＣＰＵ２１は前記カウント閾値に対応するタスクを再び実行するとともに、タイマ回路２５をリセットする。このような処理が繰り返される。
【００２７】
上述の異常診断処理タスクは、タイマ割込み処理で実行され、異常検出対象とする入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出するタスクで、当該タスクを実行するマイクロコンピュータ２及び周辺回路によって本発明による異常検出装置が構成されている。
【００２８】
詳述すると、異常検出装置は、図３に示すように、入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理である異常診断処理タスクと他の処理を含む複数の処理を、処理実行要求があった場合、つまり割込み要求時に実行管理する制御部１１を備え、異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定部としてのタスク抜け判定部１２と、タスク抜け判定部１２により異常検出処理の実行が妨げられたと判定されると異常継続時間の補正値を算出する継続時間補正値算出部としての継続時間補正処理部１３を備えている。
【００２９】
そして、異常診断処理タスクでは、継続時間補正処理部１３で算出された補正値に基づいて異常継続時間が補正されて計測される。
【００３０】
尚、タスク抜け判定部１２及び継続時間補正処理部１３の機能も制御部１１と同様、ＣＰＵ２１がＲＯＭ２２に記憶された制御プログラムを実行することで実現されている。
【００３１】
異常診断処理タスクについて詳述する。異常診断処理タスクは、入力信号の異常継続時間をカウントして所定時間継続したときに異常と診断するタスクであり、優先順位の高い割込み処理である高優先度タスクの実行時に実行される高優先異常診断処理と、優先順位の低い割込み処理である低優先度タスクの実行時に実行される低優先異常診断処理と、異常表示部への異常情報の出力判定を実行するモニタ処理とで構成されている。
【００３２】
異常継続時間のカウントは、具体的には、異常診断を行なう各種センサ等からの入力信号の夫々について設定された異常カウンタをカウントアップさせることで異常診断を行なう。尚、異常カウンタは、高優先異常診断処理でカウントアップされるカウンタと、低優先異常診断処理でカウントアップされるカウンタとが設けられている。
【００３３】
つまり、異常診断処理タスクは、所定のタイマ割込（例えば１（ｍｓ））毎に、各入力信号の値が対応するセンサ等の異常を示すものであるか否かを調べる。そして、異常診断処理タスクは、各入力信号の値が異常を示す値である場合には、当該センサ等に対応する異常カウンタをカウントアップし、異常を示す値でない場合には、当該センサ等に対応する異常カウンタをリセットする。
【００３４】
また、異常診断処理タスクは、各異常カウンタ（各センサ）に夫々異なる異常判断閾値を予め設定している。そして、モニタ処理は、各異常カウンタのうちの何れかの異常カウンタのカウント値が、当該異常カウンタについて予め設定された所定の異常判断閾値に達した場合、当該異常カウンタに対応するセンサ等が異常であると判断して、当該センサ等が異常である旨の異常情報を異常表示部に出力する処理を行なう。
【００３５】
タスク抜け判定部１２ではタスク抜け判定処理が、例えば、以下のようにして実行される。つまり、異常検出装置は、機能ブロックとして、異常診断処理タスクより優先度が高い処理としての高優先度タスクの実行時に所定の異常判定時間間隔で計測としてのカウントが実行される高タスクカウンタ１４と、異常診断処理タスクの実行時に前記異常判定時間間隔でカウントが実行される低タスクカウンタ１５を備え、タスク抜け判定部１２は高タスクカウンタ１４と低タスクカウンタ１５の計測値としてのカウント値に基づいて異常診断処理タスクの実行が妨げられたか否かを判定する。
【００３６】
詳述すると、高優先度タスクが１（ｍｓ）の間隔で実行され、高優先度タスクよりも優先度を低く設定されている異常診断処理タスクが８（ｍｓ）の間隔で実行される場合、高タスクカウンタ１４は、高優先度タスクが８回実行される度にカウントされ、低タスクカウンタ１５は、異常診断処理タスクが毎回実行される度にカウントされる。それによって、両タスクカウンタ１４、１５の異常判定時間間隔は同一となるように構成される。
【００３７】
そして、タスク抜け判定部１２は、所定の処理抜け判定時間間隔としてのタスク抜け判定時間間隔でタスク抜け判定を実行する。つまり、タスク抜け判定部１２は、高タスクカウンタ１４が所定回数（例えば１０回）カウントされると、継続時間補正処理部１３において両タスクカウンタ１４、１５のカウント値の差分として算出される補正値を参照して、補正値が「０」の場合は異常診断処理マスクの実行は妨げられていないと判断し、補正値が「０」より大きい場合は異常診断処理マスクの実行が妨げられたと判断する。
【００３８】
継続時間補正処理部１３は異常継続時間の補正値の算出を行なう。異常継続時間の補正値の算出は、例えば、上述のように高タスクカウンタ１４と低タスクカウンタ１５のカウント値の差分をとることで行なわれる。
【００３９】
つまり、タスク抜け判定部１２は、高タスクカウンタ１４が所定回数カウントされたにもかかわらず、低タスクカウンタ１５が所定回数カウントされていない場合に、異常診断処理マスクの実行が妨げられたと判断するのである。
【００４０】
また、継続時間補正処理部１３は、タスク抜け判定部１２により異常診断処理タスクの実行が妨げられたと判定されると、前記タスク抜け判定時間間隔よりも短い補正時間間隔で前記異常継続時間の補正値を算出する。
【００４１】
例えば、タスク抜け判定部１２が、高タスクカウンタ１４の１０回のカウントの度に、異常診断処理マスクの実行が妨げられているか否かの判断を行なっている場合、継続時間補正処理部１３は、タスク抜け判定部１２によって異常診断処理タスクの実行が妨げられていないと判定されている間は、高タスクカウンタ１４の１０回のカウントの度に、高タスクカウンタ１５から低タスクカウンタ１４を減じた値を算出する。
【００４２】
一方、継続時間補正処理部１３は、タスク抜け判定部１２によって異常診断処理タスクの実行が妨げられていると判定されると、より短い間隔で、高タスクカウンタ１５から低タスクカウンタ１４を減じた値を算出する。つまり、継続時間補正処理部１３は、高タスクカウンタ１４の１０回より少ないカウント数（例えば４回）の度に、高タスクカウンタ１５から低タスクカウンタ１４を減じた値を算出するのである。
【００４３】
継続時間補正処理部１３にて算出された補正値は、異常診断処理タスク（低優先異常診断処理）において異常継続時間が算出されるときに、現在算出されている異常継続時間に加算される。
【００４４】
上述の構成によれば、継続時間補正処理部１３は、異常診断処理タスクの実行が妨げられた場合に、より短い補正時間間隔で異常継続時間の補正値を算出するので、低優先度タスクにおいて検出される異常継続時間の実際の異常継続時間に対する誤差を小さくすることができる。
【００４５】
以下、図４〜図１０に示すフローチャートに基づいて、異常検出装置の処理の流れ及び各機能ブロックについて説明する。
【００４６】
尚、図４〜図１０に示すフローチャートでの説明では、異常検出装置における処理が、以下に示す前提に従って行なわれるものとして説明するが、実際には、異常検出装置の各機能ブロックの機能を実現するものであれば、当該前提に示される数値等に限定されるものではない。
【００４７】
フローチャートでの説明に当たっての前提を以下に示す。即ち、異常診断されるセンサは、高優先度タスクでは「Ｍ」個、低優先度タスクでは「Ｎ」個である。各タスクに設定される優先順位は二段階（高優先度及び低優先度の何れか）である。高優先度タスクは１（ｍｓ）毎のタイマ割込で実行される。低優先度タスクは低タスク実行可能フラグが「１」である場合に実行される。尚、低タスク実行可能フラグは、少なくとも一つの高優先度タスクによって「０」または「１」に切替設定されるが、本例では、高優先度タスクが８回実行される度に、つまり８（ｍｓ）に１回だけ「１」に設定される。
【００４８】
電子制御装置１によって実行されるメイン処理の流れについて、図４に示すフローチャートに基づいて説明する。
【００４９】
電子制御装置１が起動されると、制御部１１は、ＣＰＵ２１の初期化処理（ＳＡ１）、及び、メモリ（ＲＡＭ２３等）の初期化処理（ＳＡ２）を実行する。
【００５０】
また、制御部１１は、電子制御装置１の各機能ブロックで用いられるカウンタやフラグ等に初期値を設定する（ＳＡ３〜ＳＡ８）。具体的には、高タスクカウンタ１４と低タスクカウンタ１５に初期値「０」を設定し（ＳＡ３、ＳＡ４）、低タスク抜け状態フラグに初期値「ＯＦＦ」を設定し（ＳＡ５）、モード状態に初期値「通常」を設定し（ＳＡ６）、補正値に初期値「０」を設定し（ＳＡ７）、各異常カウンタに初期値「０」を設定する（ＳＡ８）。
【００５１】
ここで、低タスク抜け状態フラグは、継続時間補正処理部１３で算出される補正値に基づいて「ＯＦＦ」または「ＯＮ」の何れかに設定されるフラグである。また、モード状態は、ＣＰＵ２１の実行負荷に基づいて「通常」または「高負荷」の何れかのモードに設定されるが、本例では、低タスク抜け状態フラグの設定に基づいて設定される。
【００５２】
制御部１１は、各機能ブロックの初期設定を終えると、タイマ割込を開始するタイミング設定のための割込タイマ値、つまり上述したカウント閾値を、マイクロコンピュータ２に設けられているタイマレジスタに設定する（ＳＡ９）。具体的には、高優先度タスクの実施サイクルである１（ｍｓ）がタイマレジスタに設定される。
【００５３】
以上の設定を終えると、制御部１１は、ＣＰＵ２１に対する外部割込（例えば、上述した外部パルス割込み及びＡ／Ｄ変換割込み）及びタイマ割込を許可する（ＳＡ１０、ＳＡ１１）。以後、制御部１１は、外部割込またはタイマ割込を待つ待機状態に入る（ＳＡ１２）。
【００５４】
外部割込またはタイマ割込が生じた場合の異常検出装置の処理について、図５に示すフローチャートに基づいて説明する。
【００５５】
制御部１１は、１（ｍｓ）毎にタイマ割込が生じる度に、「ｐ」個の高優先度タスクを実行する（ＳＢ１−１〜ＳＢ１−ｐ）。
【００５６】
制御部１１は、１（ｍｓ）毎のタイマ割込が８回生じる度に（ＳＢ２）、異常診断処理タスク（高優先異常診断処理）を実行する（ＳＢ３）。尚、高優先異常診断処理の流れについては、図６にて説明する。
【００５７】
制御部１１は、１（ｍｓ）毎のタイマ割込が６５回生じる度に（ＳＢ４）、モニタ処理を実行する（ＳＢ５）。尚、モニタ処理の流れについては、図１０にて説明する。
【００５８】
継続時間補正処理部１３及びタスク抜け判定部１２は夫々、１（ｍｓ）毎のタイマ割込が８０回生じる度に（ＳＢ６）、補正値の算出処理及びタスク抜け判定処理を実行する（ＳＢ７、ＳＢ８）。尚、継続時間補正処理部１３の処理の流れについては、図７にて説明し、タスク抜け判定部１２の処理の流れについては、図８にて説明する。
【００５９】
また、継続時間補正処理部１３は、１（ｍｓ）毎のタイマ割込が３２回生じ（ＳＢ９）、且つ、モード状態が「高負荷」である場合にも（ＳＢ１０）、補正値の算出処理を実行する（ＳＢ１１）。
【００６０】
制御部１１は、低タスク実行可能フラグが「１」に設定されている場合には（ＳＢ１２）、「ｑ」個の低優先度タスクを実行し（ＳＢ１３−１〜ＳＢ１３−ｑ）、その後、異常診断処理タスク（低優先異常診断処理）を実行する（ＳＢ１４）。尚、低優先異常診断処理の流れについては、図９にて説明する。
【００６１】
図５のステップＳＢ３において電子制御装置１の制御部１１によって実行される高優先異常診断処理の流れについて、図６に示すフローチャートに基づいて説明する。
【００６２】
高優先異常診断処理が開始されると、高タスクカウンタ１４がインクリメントされ（ＳＣ１）、センサを識別するためのカウンタ係数「ｉ」に「０」を格納する（ＳＣ２）。
【００６３】
その後、各センサからの入力信号に基づいて各センサの状態が異常であるか否かを判定する（ＳＣ４）。判定の結果、異常である場合は当該センサの異常カウンタをインクリメントして（ＳＣ５）、また、異常でない場合は当該センサの異常カウンタをリセットして（ＳＣ６）、次のセンサの異常診断を行なうためにカウンタ係数「ｉ」をインクリメントする（ＳＣ７）。
【００６４】
以上の処理を、カウンタ係数「ｉ」が「Ｍ」以上となるまで（ＳＣ３）、つまりＭ個のセンサの全てについての判定が完了するまで繰り返す。
【００６５】
図５のステップＳＢ７、ＳＢ１１において実行される継続時間補正処理部１３の処理の流れについて、図７に示すフローチャートに基づいて説明する。
【００６６】
継続時間補正処理部１３は処理を開始すると、現在の高タスクカウンタ１４のカウント値と低タスクカウンタ１５のカウント値の差分を現在の補正値に加算して（ＳＤ１）、両タスクカウンタ１４、１５に「０」を格納、つまりリセットする（ＳＤ２）。
【００６７】
図５のステップＳＢ８において実行されるタスク抜け判定部１２の処理の流れについて、図８に示すフローチャートに基づいて説明する。
【００６８】
タスク抜け判定部１２は処理を開始すると、低タスク抜け状態フラグを参照して、低タスク抜け状態フラグが「ＯＦＦ」であって（ＳＥ１）、現在の補正値が「０」より大きい場合は（ＳＥ２）、低タスク抜け状態フラグを「ＯＮ」に設定して（ＳＥ３）、モード状態を「高負荷」に設定する（ＳＥ４）。その後、現在の補正値を補正値バックアップレジスタに格納しておく（ＳＥ８）。
【００６９】
つまり、タスク抜け判定部１２は、現在のモード状態が「高負荷」でない場合に補正値が「０」より大きいと、低優先異常診断処理の実行が高優先度タスクの実行によって妨げられたために異常継続時間が適正にカウントされていないと判断して、継続時間補正処理部１３による補正値の算出処理の実行インタバルを短くするために、モード状態を「高負荷」に設定するのである。
【００７０】
一方、低タスク抜け状態フラグが「ＯＦＦ」でない場合であって（ＳＥ１）、補正値バックアップレジスタに格納されている値及び現在の補正値の双方が「０」である場合には（ＳＥ５）、低タスク抜け状態フラグを「ＯＦＦ」に設定して（ＳＥ６）、モード状態を「通常」に設定する（ＳＥ７）。その後、現在の補正値を補正値バックアップレジスタに格納する（ＳＥ８）。また、ステップＳＥ５において、補正値バックアップレジスタに格納されている値及び現在の補正値の何れかが「０」でない場合には（ＳＥ５）、ステップＳＥ６、ＳＥ７の処理を実行しない。
【００７１】
つまり、タスク抜け判定部１２は、現在のモード状態が「高負荷」である場合に、前回のタスク抜け判定時の補正値である補正値バックアップレジスタの格納値、及び、今回のタスク抜け判定時の補正値である現在の補正値の双方が「０」であると、つまりタスク抜け判定において２回連続で異常継続時間が適正にカウントされていると判断されると、継続時間補正処理部１３による補正値の算出処理の実行インタバルを長くするために、モード状態を「通常」に設定するのである。
【００７２】
図５のステップＳＢ１４において電子制御装置１の制御部１１によって実行される低優先異常診断処理の流れについて、図９に示すフローチャートに基づいて説明する。
【００７３】
低優先異常診断処理が開始されると、低タスクカウンタ１５がインクリメントされ（ＳＦ１）、カウンタ係数「ｉ」に「０」を格納する（ＳＦ２）。
【００７４】
その後、各センサからの入力信号に基づいて各センサの状態が異常であるか否かを判定する（ＳＦ４）。判定の結果、異常である場合は当該センサの異常カウンタをインクリメントして（ＳＦ５）、更に、現在のモード状態が「高負荷」である場合は（ＳＦ６）、当該センサの異常カウンタに現在の補正値を加算する（ＳＦ７）。そして、次のセンサの異常診断を行なうためにカウンタ係数「ｉ」をインクリメントする（ＳＦ９）。
【００７５】
一方、ステップＳＦ４の判定の結果、異常でない場合は当該センサの異常カウンタをリセットして（ＳＦ８）、次のセンサの異常診断を行なうためにカウンタ係数「ｉ」をインクリメントする（ＳＦ９）。ステップＳＦ７によって、低優先異常診断処理が高優先度タスクによって妨げられてカウントアップを実行できなかったために生じた誤差を是正している。
【００７６】
以上の処理を、カウンタ係数「ｉ」が「Ｎ」以上となるまで（ＳＦ３）、つまりＮ個のセンサの全てについての判定が完了するまで繰り返す。
【００７７】
Ｎ個のセンサの全てについての判定が完了すると、現在のモード状態が「高負荷」である場合は（ＳＦ１０）、補正値をリセット、つまり補正値を「０」に置き換えて処理を終了し（ＳＦ１１）、現在のモード状態が「通常」である場合は（ＳＦ１０）、補正値はそのままで処理を終了する。
【００７８】
図５のステップＳＢ５において電子制御装置１の制御部１１によって実行されるモニタ処理の流れについて、図１０に示すフローチャートに基づいて説明する。
【００７９】
モニタ処理が開始されると、カウンタ係数「ｉ」に「０」が格納され（ＳＧ１）、各センサについての異常カウンタのカウント値が、各センサについて設定された異常判断閾値より大きいか否かを判定する（ＳＧ３）。
【００８０】
そして、カウント値が異常判断閾値より大きい場合は、当該異常カウンタに対応するセンサが異常である旨の情報を異常表示部に出力して（ＳＧ４）、また、カウント値が異常判断閾値以下の場合は、異常表示部への異常である旨の情報の出力を行なうことなく、次の異常カウンタのカウント値の判定を行なうためにカウンタ係数「ｉ」をインクリメントする（ＳＧ５）。
【００８１】
以上の処理を、カウンタ係数「ｉ」が「Ｍ＋Ｎ」以上となるまで（ＳＣ３）、つまりＭ＋Ｎ個の異常カウンタの全てについての判定が完了するまで繰り返す。
【００８２】
図４〜図１０において説明した処理の具体例を、図１１に示すタイムチャートに基づいて説明する。尚、初期状態における補正値バックアップレジスタの格納値及び現在の補正値は共に「０」であるとする。
【００８３】
図５のステップＳＢ６に相当する時刻Ｔ１では、以下の処理が実行される。即ち、継続時間補正処理部１４の処理（図５のＳＢ７）において、高タスクカウンタ１４と低タスクカウンタ１５が共に「２」であるので差分「０」が算出され、現在の補正値「０」に加算される（図７のＳＤ１）。当該演算によって現在の補正値は「０」となる。両タスクカウンタ１４、１５がリセットされる（図７のＳＤ２）。
【００８４】
そして、タスク抜け判定部１３の処理（図５のＳＢ８）において、補正値バックアップレジスタの格納値と現在の補正値が共に「０」であるので、低タスク抜け状態フラグが「ＯＦＦ」に設定され（図８のＳＥ６）、モード状態が「通常」に設定され（図８のＳＥ７）、補正値バックアップレジスタに「０」が格納される(図８のＳＥ８)。モード状態が「通常」に設定されたので、以後、継続時間補正処理部１４による補正値の算出処理の実行インタバルは「８０（ｍｓ）」である。
【００８５】
８（ｍｓ）毎に高優先異常診断処理が１０回実行されることで（図５のＳＢ３）、高タスクカウンタ１４が１０回カウントされて（図６のＳＣ１）、図５のステップＳＢ６に相当する時刻Ｔ２となり、以下の処理が実行される。
【００８６】
即ち、継続時間補正処理部１４の処理（図５のＳＢ７）において、高タスクカウンタ１４が「１０」で低タスクカウンタ１５が「８」であるので差分「２」が算出され、現在の補正値「０」に加算される（図７のＳＤ１）。当該演算によって現在の補正値は「２」となる。両タスクカウンタ１４、１５がリセットされる（図７のＳＤ２）。
【００８７】
そして、タスク抜け判定部１３の処理（図５のＳＢ８）において、現在の補正値が「２」であるので、低タスク抜け状態フラグが「ＯＮ」に設定され（図８のＳＥ３）、モード状態が「高負荷」に設定され（図８のＳＥ４）、補正値バックアップレジスタに「２」が格納される（図８のＳＥ８）。モード状態が「高負荷」に設定されたので、以後、継続時間補正処理部１４による補正値の算出処理の実行インタバルが「８０（ｍｓ）」から「３２（ｍｓ）」に短くなる。
【００８８】
高優先異常診断処理が１０回実行されるまでに、何れかの高優先度タスクによって低タスク実行可能フラグが「１」に設定されると、低優先異常診断処理が実行される（図５のＳＢ１４）。低優先異常診断処理が実行されると、低タスクカウンタ１５がカウントされ（図９のＳＦ１）、異常状態のセンサに対応する異常カウンタに現在の補正値「２」が加算される（図９のＳＦ７）。モード状態が「高負荷」であるので、補正値が「０」にリセットされる（図９のＳＦ１１）。つまり、最初に低優先異常診断処理が実行されたときにのみ補正値「２」が加算されて、２回目以降の低優先異常診断処理の実行時にはリセットされた補正値「０」が加算される。尚、図１１では、高タスクカウンタ１４が４回カウントされるまでに、低優先異常診断処理は３回実行されている。
【００８９】
高優先異常診断処理が４回実行されることで（図５のＳＢ３）、高タスクカウンタ１４が４回カウントされて（図６のＳＣ１）、図５のステップＳＢ９に相当する時刻Ｔ３となり、以下の処理が実行される。
【００９０】
即ち、モード状態が「高負荷」であるので（図５のＳＢ１０）、継続時間補正処理部１４が実行される（図５のＳＢ１１）。継続時間補正処理部１４の処理において、高タスクカウンタ１４が「４」で低タスクカウンタ１５が「３」であるので差分「１」が算出され、現在の補正値「０」に加算される（図７のＳＤ１）。当該演算によって現在の補正値は「１」となる。両タスクカウンタ１４、１５がリセットされる（図７のＳＤ２）。
【００９１】
高優先異常診断処理が４回実行されるまでに、何れかの高優先度タスクによって低タスク実行可能フラグが「１」に設定されると、低優先異常診断処理が実行される（図５のＳＢ１４）。低優先異常診断処理の実行については上述した処理と同様である。尚、図１１では、高タスクカウンタ１４が４回カウントされるまでに、低優先異常診断処理は４回実行されている。
【００９２】
高優先異常診断処理が４回実行されることで（図５のＳＢ３）、高タスクカウンタ１４が４回カウントされて（図６のＳＣ１）、図５のステップＳＢ９に相当する時刻Ｔ４となり、以下の処理が実行される。
【００９３】
即ち、モード状態が「高負荷」であるので（図５のＳＢ１０）、継続時間補正処理部１４が実行される（図５のＳＢ１１）。継続時間補正処理部１４の処理（図７）において、両タスクカウンタ１４、１５共に「４」であるので差分「０」が算出され、現在の補正値「０」に加算される（図７のＳＤ１）。当該演算によって現在の補正値は「０」となる。両タスクカウンタ１４、１５がリセットされる（図７のＳＤ２）。
【００９４】
高優先異常診断処理が２回実行されるまでに、何れかの高優先度タスクによって低タスク実行可能フラグが「１」に設定されると、低優先異常診断処理が実行される（図５のＳＢ１４）。低優先異常診断処理の実行については上述した処理と同様である。尚、図１１では、高タスクカウンタ１４が２回カウントされるまでに、低優先異常診断処理は１回実行されている。
【００９５】
高優先異常診断処理が２回実行されることで（図５のＳＢ３）、高タスクカウンタ１４が２回カウントされて（図６のＳＣ１）、図５のステップＳＢ６に相当する時刻Ｔ５となり、以下の処理が実行される。
【００９６】
即ち、継続時間補正処理部１４の処理（図５のＳＢ７）において、高タスクカウンタ１４が「２」で低タスクカウンタ１５が「１」であるので差分「１」が算出され、現在の補正値「０」に加算される（図７のＳＤ１）。当該演算によって現在の補正値は「１」となる。両タスクカウンタ１４、１５がリセットされる（図７のＳＤ２）。
【００９７】
そして、タスク抜け判定部１３の処理（図５のＳＢ８）において、低タスク抜け状態フラグが「ＯＮ」に設定されているので（図８のＳＥ１）、補正値バックアップレジスタの格納値と現在の補正値が参照される（図８のＳＥ５）。補正値バックアップレジスタの格納値は「０」で、現在の補正値は「１」であるので、補正値バックアップレジスタに「１」を格納する（図８のＳＥ８）。以下、図４〜図１０に示すフローチャートに従って処理を続行する。
【００９８】
以上説明したとおり、本発明による異常検出方法は、入力信号の異常継続時間を計測して計測時間が所定時間以上の場合に異常と検出する異常検出処理と他の処理を含む複数の処理を、処理実行要求があった場合に実行する異常検出方法であって、前記異常検出処理の実行が他の処理の実行により妨げられたか否かを検出する処理抜け判定ステップ（図５におけるステップＳＢ８）と、前記処理抜け判定ステップで前記異常検出処理の実行が妨げられたと判定されると前記継続時間の補正値を算出する継続時間補正値算出ステップ（図５におけるステップＳＢ７、ＳＢ１１）を備え、前記異常検出処理は、前記継続時間補正値算出ステップで算出された補正値に基づいて異常継続時間を補正して計測する。
【００９９】
以下、別実施形態について説明する。上述の実施形態では、継続時間補正処理部１３による補正値の算出は、高タスクカウンタ１４と低タスクカウンタ１５のカウント値の差分に基づいて行なわれる構成について説明したが、高タスクカウンタ１４と低タスクカウンタ１５のカウント値の比率に基づいて行なわれる構成であってもよい。
【０１００】
この場合は、図７のステップＳＤ１で、両タスクカウンタ１４、１５のカウント値の差分を現在の補正値に加算する代わりに、高タスクカウンタ１４のカウント値を低タスクカウンタ１５のカウント値で除算した値を現在の補正値と乗算して新たな補正値を算出する構成とすることで、差分に基づいて行なわれる構成と同様の効果を得ることができる。
【０１０１】
同様に、図９のステップＳＦ７で、両タスクカウンタ１４、１５のカウント値の差分に基づいて算出した補正値を異常カウンタに加算する代わりに、両タスクカウンタ１４、１５のカウント値の比率に基づいて算出した補正値を異常カウンタに乗算する構成とすることで、差分に基づいて行なわれる構成と同様の効果を得ることができる。
【０１０２】
また、上述の実施形態では、両タスクカウンタ１４、１５の異常判定時間間隔が同一となる構成について説明したが、異常判定時間間隔が同一とならないように構成されている場合に、両タスクカウンタ１４、１５のカウント値の差分に基づいて補正値を算出する構成と、上述した両タスクカウンタ１４、１５のカウント値の比率に基づいて補正値を算出する構成とを組み合わせることができる。
【０１０３】
つまり、異常判定時間間隔が同一とならない構成の場合は、図７のステップＳＤ１で、両タスクカウンタ１４、１５のカウント値の差分を算出する際に、何れかのタスクカウンタ１４、１５に両タスクカウンタ１４、１５のカウント値の比率を乗算してから、両タスクカウンタ１４、１５のカウント値の差分を算出する構成とすることで、異常判定時間間隔が同一である構成と同様の効果を得ることができる。
【０１０４】
上述の実施形態では、タスク抜け判定部１２は高タスクカウンタ１４と低タスクカウンタ１５のカウント値に基づいて異常診断処理タスクの実行が妨げられたか否かを判定する構成について説明したが、タスク抜け判定部１２は、エンジン回転数または車速情報を含む車両情報に基づいて高制御負荷状態であると判断されるときに異常診断処理タスクの実行が妨げられたと判定する構成であってもよい。
【０１０５】
つまり、タスク抜け判定部１２は、図８のフローチャートに示した処理を実行する代わりに、以下に例示するような処理を実行する。
【０１０６】
即ち、タスク抜け判定部１２は、エンジン回転数が所定値（例えば４０００（ｒｐｍ））以上であるか否かの判定、及び／または、車速が所定値（例えば１２０（ｋｍ／ｈ））以上であるか否かの判定を実行し、何れかまたは両方の条件を満たす場合にモード状態を「高負荷」に設定し、満たさない場合にモード状態を「通常」に設定するのである。
【０１０７】
また、タスク抜け判定部１２はエンジン回転数または車速情報を含む車両情報に基づいて高制御負荷状態が所定時間継続したと判断されるときに異常診断処理タスクの実行が妨げられたと判定する構成であってもよい。
【０１０８】
この場合も上述と同様である。即ち、タスク抜け判定部１２は、エンジン回転数が所定値以上の状態が所定時間（例えば３０分）以上であるか否かの判定、及び／または、車速が所定値以上の状態が所定時間（例えば３０分）以上であるか否かの判定を実行し、何れかまたは両方の条件を満たす場合にモード状態を「高負荷」に設定し、満たさない場合にモード状態を「通常」に設定するのである。
【０１０９】
以上のような構成によれば、タスク抜け判定部１２は、高制御負荷状態であるか否かによってタスク抜け判定を実行するので、実際に低優先度タスクの抜け落ちが発生する前にモード状態を「高負荷」に設定して異常継続時間のカウントの誤差を小さくすることができる。
【０１１０】
また、タスク抜け判定部１２が車両情報に基づいて異常診断処理タスクの実行が妨げられた否かを判定する構成である場合に、継続時間補正処理部１３はエンジン回転数または車速情報を含む車両情報と対応付けられた補正情報に基づいて異常継続時間の補正値を算出する構成であってもよい。
【０１１１】
例えば、エンジン回転数や車速の各値に対して夫々異なる補正値を設定したテーブルデータを、マイクロコンピュータ２のＲＯＭ２２またはＥＥＰＲＯＭ２４に記憶しておき、継続時間補正処理部１３は、図７のフローチャートに示した処理を実行する代わりに、前記テーブルデータを参照することで補正値を算出する。尚、前記テーブルデータの極簡単な具体例としては、エンジン回転数＜４０００の場合に補正値（比率）が１．１であり、エンジン回転数≧４０００の場合に補正値（比率）が１．０であるようなデータがある。
【０１１２】
上述の構成によれば、実際に低優先度タスクの抜け落ちが発生する前に、車両情報に基づいて低優先度タスクの抜け落ちの発生頻度を予測して補正値を算出するので、異常継続時間を迅速に補正することができる。
【０１１３】
異常検出装置は、上述の実施形態の機能ブロックに加えて、タスク抜け判定部１２による判定結果に基づいて継続時間補正処理部１３が実行されるモードと、タスク抜け判定部１２による判定結果にかかわらず継続時間補正処理部１３が実行されるモードに切替可能な、図３に破線で示すような、モード切替部１６を備えた構成であってもよい。
【０１１４】
タスク抜け判定部１２による判定結果にかかわらず継続時間補正処理部１３が実行されるモード（以下、第一モードと記す。）の場合、継続時間補正処理部１３の処理は、タスク抜け判定部１２による判定結果に基づいて継続時間補正処理部１３が実行されるモード（以下、第二モードと記す。）の場合よりも頻繁に実行されることになる。例えば、図４〜図１０で説明した例の場合、第二モードではタイマ割込みが８０回生じる度に継続時間補正処理部１３の処理が実行されるが（図５のＳＢ７）、第一モードではタイマ割込みが３２回生じる度に継続時間補正処理部１３の処理が実行される（図５のＳＢ１１）。
【０１１５】
その結果、第二モードでは、異常継続時間の補正が第一モードのときよりも頻繁に実行され（図５のＳＢ１４、図９のＳＦ７）、異常継続時間の計測の誤差が低減される。
【０１１６】
モード切替部１６のモード切替機能は、例えば、電子制御装置１の入力インタフェースに接続可能な外部ツールによる操作や、電子制御装置１に搭載されたモード切替用のディップスイッチ等によって実現される。
【０１１７】
上述の構成によれば、モード切替部１６によって、判定結果にかかわらず継続時間補正処理部１３が実行されるモードに切り替える構成とすることで、異常診断の正確性が通常よりも重要視される場合にも対応することができる。
【０１１８】
上述の実施形態では、異常検出装置を車両に適用した例について説明したが、本発明の適用対象は車両を対象とするものに限るものではなく、航空機、空調システム、又は化学プラント等の様々な電子機器に対する制御装置の異常診断に適用するものであってもよい。
【０１１９】
尚、上述の実施形態は、本発明の一例に過ぎず、本発明の作用効果を奏する範囲において各ブロックの具体的構成等は適宜変更設計できることは言うまでもない。
【図面の簡単な説明】
【０１２０】
【図１】異常診断処理の抜け落ちについての説明するためのタイムチャート
【図２】電子制御装置のハードウェア構成図
【図３】異常検出装置の機能ブロック構成図
【図４】異常検出装置のメイン処理について説明するためのフローチャート
【図５】異常検出装置の割込み処理について説明するためのフローチャート
【図６】高優先異常診断処理について説明するためのフローチャート
【図７】継続時間補正処理部の処理について説明するためのフローチャート
【図８】タスク抜け判定部の処理について説明するためのフローチャート
【図９】低優先異常診断処理について説明するためのフローチャート
【図１０】モニタ処理について説明するためのフローチャート
【図１１】異常検出装置の処理について説明するためのタイムチャート
【符号の説明】
【０１２１】
１：電子制御装置
１１：制御部
１２：タスク抜け判定部（処理抜け判定部）
１３：継続時間補正処理部（継続時間補正値算出部）
１４：高タスクカウンタ
１５：低タスクカウンタ
１６：モード切替部
【図１】
2009116816.tif 000003
【図２】
2009116816.tif 000004
【図３】
2009116816.tif 000005
【図４】
2009116816.tif 000006
【図５】
2009116816.tif 000007
【図６】
2009116816.tif 000008
【図７】
2009116816.tif 000009
【図８】
2009116816.tif 000010
【図９】
2009116816.tif 000011
【図１０】
2009116816.tif 000012
【図１１】
2009116816.tif 000013