(57)【要約】【課題】  解決しようとする課題は、短時間でＷＤＴタイムアウトするＷＤＴ搭載のＣＰＵで所望のＷＤＴ機能を実現させることで、つまり優先度の高い割り込みレベルにてＷＤＴリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題を解決することである。【解決手段】  プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することで実現した。【選択図】図１
2006252388.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、前記ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、当該タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することを特徴とする制御装置のソフトウェア異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、短時間でタイムアウトしてしまうウォッチ・ドッグ・タイマ（以下、ＷＤＴ）を搭載した制御装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ：以下、ＣＰＵ）でのソフトウエア異常時の監視・検出方法に関する。
【背景技術】
【０００２】
ＷＤＴは、本来プログラムの暴走や異常動作を検出するための機能である。ソフトウェアは実行処理中、定期的にＷＤＴリセット処理をおこなうことでＣＰＵや外部に装備されたＷＤＴ−ＩＣにソフトウェアが正常に動作している通知制御をおこなう。ここでハードウェア・ブロック図を図２に示す。ここで問題となるのは、ＷＤＴタイムアウトの時間が短いＷＤＴの機能の場合、ＷＤＴリセット制御箇所によってはＷＤＴ本来の適切な検出ができない。例えば、ＷＤＴリセット処理を割り込み処理部へ埋め込んだ場合の問題点を示す。
ＷＤＴタイムアウト時間が数十ミリ秒、数百ミリ秒と短時間の場合、定期的に入る割り込み処理（例えばタイマ割り込み等）にＷＤＴリセット処理を埋め込む。そうすることにより、マルチタスクのタスクレベルあるいは、ラウンドロビン方式の何処かで無限ループ等に陥った場合でもタスクレベルよりも優先度の高い割り込みレベルにて定期的にＷＤＴリセット制御を行ってしまう。当然ではあるが、これではＷＤＴタイムアウトを正常に検出できない。つまり優先度の高い割り込みレベルにてＷＤＴリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
解決しようとする課題は、短時間でＷＤＴタイムアウトするＷＤＴ搭載のＣＰＵで所望のＷＤＴ機能を実現させることで、つまり優先度の高い割り込みレベルにてＷＤＴリセット制御を定期的に行っているためにタスクレベルで発生しているソフトウェアの異常検出が行えないという課題を解決することである。
【課題を解決するための手段】
【０００４】
本発明は、上記課題を鑑みて為されたものであり、プログラムの暴走または異常動作を検出するためウォッチ・ドッグ・タイマを備えた制御装置のソフトウェア異常検出方法であって、ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することを特徴とする。
【発明の効果】
【０００５】
本発明のソフトウェア異常検出方法は、短時間でタイムアウトしてしまうハードウェア構成（ＷＤＴ）でもソフトウェアの異常を監視及び検出が可能となり、また、ＷＤＴタイムアウト時間が短時間であることを理由に、外部に別途ＷＤＴリセット時間の長いＷＤＴ−ＩＣを付加する必要性が無いため装置としての構成の追加が不要となる点である。
【発明を実施するための最良の形態】
【０００６】
ウォッチ・ドッグ・タイマのタイムアウト回数を検出し、タイムアウト回数が予め定められた回数に達した場合に、プログラムの暴走または異常動作と判断することで実現した。
【実施例１】
【０００７】
以下に本発明の実施の形態について図を用いて一実施例を説明する。
図１は、本発明の実施の形態におけるＷＤＴ制御のフロー図である。ＷＤＴは、あらかじめ設定した時間毎に発生する割込処理としてソフト制御をおこなう（Ｓ１）。通常、ＷＤＴは一度スタートを行うとソフトウェアでは停止が不可能である。従って設定している周期毎にＷＤＴタ イムアウトでの割り込みハンドラのエントリポイントへジャンプしてくる。割り込みハンドラではＷＤＴタ イムアウトの回数を記憶するカウンタＡを＋１する加算制御を行う（Ｓ２）。ハードウェアの接続構成は図示しないが、ＷＤＴタイムアウトがＮ回（固定値Ａ）発生したら（Ｓ３、Ｓ４）、ハードリセット端子を制御し自己リセット（Ｓ６）を行えるようなマニュアルリセット制御といった仕組みとする。
例えば、ＷＤＴタイムアウト（割り込み間隔）の時間が１００ｍｓｅｃの場合、ラウンドロビン方式では、割り込み等の外部イベントが発生後にユーザタスクが一回りする時間を算出し、その時間をＷＤＴタイムアウト時間と設定し、ユーザタスクの何れかのメイン処理部でＷＤＴリセット処理をおこなうこととするユーザタスク一回りが１ｓｅｃとした場合は、ＷＤＴの割り込みが１０回以上（１００ｍｓｅｃ×１０回＝１ｓｅｃ）発生した場合（この回数値を固定値Ａとする）にＷＤＴリセット制御としてハードリセット端子を制御し自己リセットをおこなう。また、イベントドリブン・マルチタスク方式では、最低位優先順位のタスクをエントリして、その他のユーザタスクの処理時間を合算した時間をＷＤＴタイムアウト時間と設定し、最低位のタスクにてＷＤＴリセット処理をおこなうこととする。ユーザタスク処理の合算が１ｓｅｃとした場合は、ＷＤＴの割り込みが１０回以上（１００ｍｓｅｃ×１０回＝１ｓｅｃ）発生した場合（この回数値を固定値Ａとする）にＷＤＴリセット制御としてハードリセット端子を制御し自己リセットをおこなう。
上記により、ＷＤＴリセット処理を１ヶ所に集約できる。この１ヵ所でカウンタＡをクリアすることで、ラウンドロビン方式では同一優先度のタスクが一回り、イベントドリブン・マルチタスク方式では何らかのイベント発生後の処理後に最低位のタスクへ戻ることで、ソフトウェアが正常に動作していることを監視できる。
【０００８】
ＷＤＴ割り込みは通常の割込処理のイメージで、割り込み処理内ではＷＤＴタイムアウト時間として設定した固定値Ａ、またＷＤＴタイムアウト割り込みが発生した回数をカウンタＡとして持ち、ＷＤＴタイムアウト割り込みが入るたびにカウンタＡの回数を+１加算し、固定値ＡとカウンタＡを比較する。
カウンタＡは、ラウンドロビン方式、イベントドリブン・マルチタスク方式のそれぞれで記載したＷＤＴリセット時にゼロにクリアする。カウンタＡが 固定値Ａより大きい場合は、プログラムが異常状態に陥った可能性があるため、ハードリセット端子を制御し、ハードウェアリセット制御をおこなう。カウンタＡより 固定値Ａが大きい場合は、ＷＤＴタイムアウトに設定した時間（回数）に未達のためＷＤＴ割り込み前処理へのリターン（Ｓ５）を行う。上記に記載した構成および制御方法にて、短時間でタイムアウトしてしまうハードウェア構成であってもソフトウェアの異常検出が可能となる。
【図面の簡単な説明】
【０００９】
【図１】ＷＤＴ制御フロー（ＷＤＴ割込み発生時の制御）の一実施例
【図２】従来技術におけるハードウエアブロック図の例
【符号の説明】
【００１０】
１０１…ＣＰＵ、１０２…ＲＯＭ及びＲＡＭ、１０３…リセット端子
【図１】
2006252388.tif 000003
【図２】
2006252388.tif 000004