(57)【要約】【課題】  イニシャル処理の追加、変更、移動が生じても簡単に対応でき、プログラム暴走検出のための特別な回路を設けることなく、プログラムの暴走を検出し、暴走によるメモリ破壊等の不具合に至る前にすみやかにプログラムを再スタートあるいは停止可能とする制御装置およびそのプログラム暴走監視方法を提供する。【解決手段】  汎用タイマ１２がタイムアウトしたとき割り込み処理を起動する割り込み起動部７と、割り込み処理を実行する割り込み処理部８とを備え、ウォッチドッグ処理部６は、汎用タイマ１２のタイマ時間と、ウォッチドッグタイマ１１をリセットする回数を設定し、イニシャル処理実行中は汎用タイマ１２からの割り込みを許可し、割り込み処理でウォッチドッグタイマ１１を設定した回数だけリセットする。【選択図】  図１
2008225807.tif 000002
【特許請求の範囲】
【請求項１】
リセット信号によりリセット可能なタイマで、一定時間内にリセットされずタイムアウトした場合タイムアウト信号を出力するウォッチドッグタイマと、
装置全体の制御を行う中央制御部とから成り、
前記中央制御部に、ＣＰＵと、
電源投入時のイニシャル処理を行うイニシャル処理部と、
前記イニシャル処理後の通常時の処理を行う通常処理部と、
ウォッチドッグタイマのリセット処理を行うウォッチドッグ処理部と、を有する制御装置において、
前記制御装置内に汎用タイマを備え、
前記中央処理部に、前記汎用タイマがタイムアウトしたとき割り込み処理を起動する割り込み起動部と、
前記割り込み処理を実行する割り込み処理部とを備え、
前記ウォッチドッグ処理部は、前記汎用タイマのタイマ時間と、前記ウォッチドッグタイマをリセットする回数を設定し、
前記イニシャル処理実行中は汎用タイマからの割り込みを許可し、
前記割り込み処理で前記ウォッチドッグタイマを設定した回数だけリセットすることを特徴とする制御装置。
【請求項２】
前記ウォッチドッグ処理部は、前記汎用タイマのタイマ時間を前記ウォッチドッグタイマのタイマ時間より短く設定することを特徴とする請求項１記載の制御装置。
【請求項３】
前記ウォッチドッグ処理部は、前記ウォッチドッグタイマをリセットする回数Ｎを、イニシャル処理時間をｔ１、汎用タイマのタイマ時間をｔ４としたとき、ｔ４＊Ｎ＞ｔ１となるような数で設定することを特徴とする請求項１記載の制御装置。
【請求項４】
前記ウォッチドッグ処理部は、前記イニシャル処理終了後、前記汎用タイマの割り込みを禁止し、前記汎用タイマを他用途として使用するための設定をすることを特徴とする請求項１記載の制御装置。
【請求項５】
リセット信号によりリセット可能なタイマで、一定時間内にリセットされずタイムアウトした場合タイムアウト信号を出力するウォッチドッグタイマと、
装置全体の制御を行う中央制御部とから成り、
前記中央制御部に、ＣＰＵと、
電源投入時のイニシャル処理を行うイニシャル処理部と、
前記イニシャル処理後の通常時の処理を行う通常処理部と、
ウォッチドッグタイマのリセット処理を行うウォッチドッグ処理部と、を有する制御装置のプログラム暴走監視方法において、
前記制御装置内に汎用タイマを備え、
前記中央処理部に、前記汎用タイマがタイムアウトしたとき割り込み処理を起動する割り込み起動部と、
前記割り込み処理を実行する割り込み処理部とを備え、
前記汎用タイマのタイマ時間と、前記ウォッチドッグタイマをリセットする回数を設定し、
前記イニシャル処理実行中は汎用タイマからの割り込みを許可し、
前記割り込み処理で前記ウォッチドッグタイマを設定した回数だけリセットすることを特徴とする制御装置のプログラム暴走監視方法。
【請求項６】
前記汎用タイマのタイマ時間を前記ウォッチドッグタイマのタイマ時間より短く設定することを特徴とする請求項５記載の制御装置のプログラム暴走監視方法。
【請求項７】
前記ウォッチドッグタイマをリセットする回数Ｎを、イニシャル処理時間をｔ１、汎用タイマのタイマ時間をｔ４としたとき、ｔ４＊Ｎ＞ｔ１となるような数で設定することを特徴とする請求項５記載の制御装置のプログラム暴走監視方法。
【請求項８】
前記イニシャル処理終了後、前記汎用タイマの割り込みを禁止し、前記汎用タイマを他用途として使用するための設定をすることを特徴とする請求項５記載の制御装置のプログラム暴走監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵを搭載し、ソフトウェアのプログラムにより各種の制御を行う制御装置およびそのプログラム暴走を監視する方法に関する。  
【背景技術】
【０００２】
従来、制御装置のソフトウェアのプログラム暴走を監視する手段として、ウォッチドッグタイマと呼ばれる、プログラムによってリセット可能なタイマを設け、設定された一定時間内にプログラムによるリセットがなされずタイムアウトした場合は、プログラム暴走と判定し、制御装置の強制停止あるいはプログラムの再スタートを行うという方法が多くとられている。その際、ウォッチドッグタイマに設定する時間は制御装置として許容しうる最大時間に設定しておくのが一般的である。
【０００３】
図４は、従来のウォッチドッグタイマを使用する制御装置の構成例を示すブロック図である。
図４において、１Ａは制御装置であり、中央制御部２Ａとウォッチドッグタイマ１１から成る。ウォッチドッグタイマ１１は、一定の設定時間を有するタイマからなる。ａはウォッチドッグタイマのリセット信号であって、プログラムにてウォッチドッグタイマ１１に入力されることでタイマをリセットし、かつ、タイマを再起動する。以降プログラムで信号ａを出力する毎に、ウォッチドッグタイマ１１のリセットと再起動を繰り返す。ｂはウォッチドッグタイマ１１のタイムアウト信号で、プログラムがウォッチドッグタイマ１１に設定している時間以内に信号ａを出力しない場合に出力され、以降、プログラム再起動あるいは強制停止条件等に使用される。
ここで、プログラムの処理を考えてみると、処理内容は一般にイニシャル処理と通常処理に分かれている。
図４では、中央処理部２Ａの中に、イニシャル処理を行うイニシャル処理部４と通常処理を行う通常処理部５がある。また、ウォッチドッグタイマ１１にリセット信号ａを出力するウォッチドッグ処理部６Ａがある。
【０００４】
図５は、従来の制御装置のプログラムの処理手順を示すフローチャートである。スタート後、まず時間ｔ１をかけてイニシャル処理を行い（Ｓ２２）、次に時間ｔ２で通常処理が行われる（Ｓ２４）。一般的に、イニシャル処理と通常処理を比較した場合、メモリ領域への各種初期設定処理等から、イニシャル処理時間が通常処理時間より著しく長くなる場合が多い（ｔ１＞＞ｔ２）。この場合、図５のフローチャートのように、Ｓ２１とＳ２３でウォッチドッグタイマをリセットする場合、ウォッチドッグタイマにはｔ１とｔ２の長い方、すなわちｔ１を基準に時間を設定する必要があるが、ウォッチドッグタイマに設定できる時間の上限を超える場合が多く、ｔ１を基準に時間を設定できないという問題があった。
このような場合、すなわちｔ１を基準にウォッチドッグタイマの時間を設定できない場合に、ウォッチドッグタイマの設定時間をｔ２より少しだけ長く設定する方法がとられていた。
【０００５】
図６は、ウォッチドッグタイマの設定時間をｔ２より少しだけ長く設定した場合のプログラム暴走監視方法の処理手順を示すフローチャートである。イニシャル処理において、時間ｔ２ごとにウォッチドッグタイマをリセットするようにしたものである。こうすることで、イニシャル処理時に発生するプログラム暴走を検出することができ、暴走によるメモリ破壊等の不具合に至る前にすみやかにプログラムを再スタートあるいは停止可能にすることができる。
【０００６】
また、ウォッチドッグタイマを２個使用してイニシャル処理と通常処理で監視時間を切り替えるようにし、それぞれのウォッチドッグタイマのタイムアウト信号をオアゲートに入力し、オアゲートからの出力信号によりプログラムの暴走を検出する方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開 昭６０−１６４８５２号公報（第３図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の方法で、イニシャル処理において、時間ｔ２ごとにウォッチドッグタイマをリセットする方法では、イニシャル処理の追加、変更、移動のたびに時間ｔ２ごとにウォッチドッグタイマをリセットするようにプログラムを変更する手間がかかるという問題がある。また、ウォッチドッグタイマを２個使用してイニシャル処理と通常処理で監視時間を切り替える方法では、特別なハードウェア回路を必要とし、回路が複雑になると共に、コストも高くなるという問題がある。
【０００８】
本発明はこのような問題点に鑑みてなされたものであり、イニシャル処理の追加、変更、移動が生じても簡単に対応でき、プログラム暴走検出のための特別な回路を設けることなく、プログラムの暴走を検出し、暴走によるメモリ破壊等の不具合に至る前にすみやかにプログラムを再スタートあるいは停止可能とする制御装置およびそのプログラム暴走監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記問題を解決するため、本発明は、次のようにしたのである。
請求項１に記載の発明は、リセット信号によりリセット可能なタイマで、一定時間内にリセットされずタイムアウトした場合タイムアウト信号を出力するウォッチドッグタイマと、装置全体の制御を行う中央制御部とから成り、前記中央制御部に、ＣＰＵと、電源投入時のイニシャル処理を行うイニシャル処理部と、前記イニシャル処理後の通常時の処理を行う通常処理部と、ウォッチドッグタイマのリセット処理を行うウォッチドッグ処理部と、を有する制御装置において、前記制御装置内に汎用タイマを備え、前記中央処理部に、前記汎用タイマがタイムアウトしたとき割り込み処理を起動する割り込み起動部と、前記割り込み処理を実行する割り込み処理部とを備え、前記ウォッチドッグ処理部は、前記汎用タイマのタイマ時間と、前記ウォッチドッグタイマをリセットする回数を設定し、前記イニシャル処理実行中は汎用タイマからの割り込みを許可し、前記割り込み処理で前記ウォッチドッグタイマを設定した回数だけリセットすることを特徴とするものである。
また、請求項２に記載の発明は、請求項１記載の制御装置において、前記ウォッチドッグ処理部は、前記汎用タイマのタイマ時間を前記ウォッチドッグタイマのタイマ時間より短く設定することを特徴とするものである。
また、請求項３に記載の発明は、請求項１記載の制御装置において、前記ウォッチドッグ処理部は、前記ウォッチドッグタイマをリセットする回数Ｎを、イニシャル処理時間をｔ１、汎用タイマのタイマ時間をｔ４としたとき、ｔ４＊Ｎ＞ｔ１となるような数で設定することを特徴とするものである。
また、請求項４に記載の発明は、請求項１記載の制御装置において、前記ウォッチドッグ処理部は、前記イニシャル処理終了後、前記汎用タイマの割り込みを禁止し、前記汎用タイマを他用途として使用するための設定をすることを特徴とするものである。
【００１０】
また、請求項５に記載の発明は、リセット信号によりリセット可能なタイマで、一定時間内にリセットされずタイムアウトした場合タイムアウト信号を出力するウォッチドッグタイマと、装置全体の制御を行う中央制御部とから成り、前記中央制御部に、ＣＰＵと、電源投入時のイニシャル処理を行うイニシャル処理部と、前記イニシャル処理後の通常時の処理を行う通常処理部と、ウォッチドッグタイマのリセット処理を行うウォッチドッグ処理部と、を有する制御装置のプログラム暴走監視方法において、前記制御装置内に汎用タイマを備え、前記中央処理部に、前記汎用タイマがタイムアウトしたとき割り込み処理を起動する割り込み起動部と、前記割り込み処理を実行する割り込み処理部とを備え、前記汎用タイマのタイマ時間と、前記ウォッチドッグタイマをリセットする回数を設定し、前記イニシャル処理実行中は汎用タイマからの割り込みを許可し、前記割り込み処理で前記ウォッチドッグタイマを設定した回数だけリセットすることを特徴とするものである。
また、請求項６に記載の発明は、請求項５記載の制御装置のプログラム暴走監視方法において、前記汎用タイマのタイマ時間を前記ウォッチドッグタイマのタイマ時間より短く設定することを特徴とするものである。
また、請求項７に記載の発明は、請求項５記載の制御装置のプログラム暴走監視方法において、前記ウォッチドッグタイマをリセットする回数Ｎを、イニシャル処理時間をｔ１、汎用タイマのタイマ時間をｔ４としたとき、ｔ４＊Ｎ＞ｔ１となるような数で設定することを特徴とするものである。
また、請求項８に記載の発明は、請求項５記載の制御装置のプログラム暴走監視方法において、前記イニシャル処理終了後、前記汎用タイマの割り込みを禁止し、前記汎用タイマを他用途として使用するための設定をすることを特徴とするものである。
【発明の効果】
【００１１】
本発明によれば、汎用タイマを備え、汎用タイマがタイムアウトしたとき割り込み処理を起動し、汎用タイマのタイマ時間と、ウォッチドッグタイマをリセットする回数を設定し、イニシャル処理実行中は汎用タイマからの割り込みを許可し、割り込み処理で前記ウォッチドッグタイマを設定した回数だけリセットするので、イニシャル処理の追加、変更、移動が生じた場合はウォッチドッグタイマをリセットする回数を変更するだけで簡単に対応でき、かつ制御装置に一般的に装備されている汎用タイマを有効に活用することによりプログラム暴走検出のための特別な回路を設けることなく、プログラムの暴走を検出し、暴走によるメモリ破壊等の不具合に至る前にすみやかにプログラムを再スタートあるいは停止可能とすることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【００１３】
図１は本発明の制御装置の構成を示すブロック図である。
図１において、1は制御装置であり、中央制御部２とウォッチドッグタイマ１１、汎用タイマ１２から成る。ウォッチドッグタイマ１１は、一定の設定時間を有するタイマからなる。ａはウォッチドッグタイマのリセット信号であって、プログラムにてウォッチドッグタイマ１１に入力されることでタイマをリセットし、かつ、タイマを再起動する。以降プログラムで信号ａを出力する毎に、ウォッチドッグタイマ２のリセットと再起動を繰り返す。ｂはウォッチドッグタイマのタイムアウト信号で、プログラムがウォッチドッグタイマ１１に設定している時間以内に信号ａを出力しない場合に出力され、以降、プログラム再起動あるいは強制停止条件等に使用される。
ウォッチドッグタイマ中央制御部２には、ＣＰＵ３と、ソフトウェアのイニシャル処理のプログラムから成るイニシャル処理部４、通常処理のプログラムから成る通常処理部５、ウォッチドッグタイマ１１に関連した処理を行うウォッチドッグ処理部６、汎用タイマがタイムアウトすると出力される割り込み信号を受けて割り込み処理８を起動する割り込み起動部７、割り込み起動部７から起動される割込み処理部８がある。
本発明が従来と異なる点は、中央制御部２に汎用タイマ１２のタイムアウトで起動する割り込み処理部８とそれを起動する割り込み起動部７を備えた点である。
なお、一般に制御装置には、経過時間を算出するためのフリーランタイマや定周期信号を発生させるためのタイマ等、種々の用途に使用できる汎用タイマが１個以上装備されており、特に本発明のために新規に装備する必要はない。ｃは汎用タイマ１２に設定された時間がタイムアウトするごとに生成される割り込み信号であり、中央制御部２に入力され、割り込み処理部８にある割り込み処理プログラムが起動される。
【００１４】
図２は本発明のプログラム暴走監視方法の処理手順を示すフローチャートである。なお、このフローチャートのＳ１〜Ｓ４、Ｓ６〜Ｓ８はウォッチドック処理部６で処理され、Ｓ５はイニシャル処理部４、Ｓ９は通常処理部５で処理される。まず、ウォッチドッグタイマ１１にタイマ時間ｔ３をセットする（Ｓ１）。なお、ウォッチドッグタイマ２に設定する時間がハードウェアで固定化され、プログラムで設定できない場合は本処理は不要であり、ｔ３はハードウェアで固定化された時間となる。次に、汎用タイマ１２にタイマ時間ｔ４をセットする（Ｓ２）。なお、ここでｔ４はｔ３より短くなるように設定する。
【００１５】
次に、汎用タイマ１２によって起動される割込処理プログラムの中でウォッチドッグタイマ１１をリセットする回数Ｎを変数ｉにセットする（Ｓ３）。なお、Ｎは、ｔ４*Ｎがイニシャル処理時間ｔ１より大きくなるように選択する。例えば、ｔ１＝５００ｍｓ、ｔ４＝１０ｍｓとすると、ｔ４＊Ｎ＞ｔ１であるため、Ｎ＞５００ｍｓ／１０ｍｓ＝５０となり、Ｎは５０より大きい値、すなわち５１を変数ｉに設定する。同じように、イニシャル処理の追加、変更、移動が生じ、イニシャル処理時間ｔ１が変わった場合も変数ｉに設定する値Ｎを変更すればよい。仮に、ｔ１＝１ｓに変わった場合は、Ｎ＞１０００ｍｓ／１０ｍｓ＝１００となり、Ｎは１００より大きい値、すなわち１０１を変数ｉに設定する。このように、イニシャル処理の追加、変更、移動が生じた場合はウォッチドッグタイマ２をリセットする回数Ｎを変更するだけで簡単に対応できる。
【００１６】
次に、汎用タイマ３の割込を許可する（Ｓ４）。
これにより、汎用タイマ１２はｔ４ごとに割り込み信号ｃを図１の中央制御部２に出力する。中央制御部２の割り込み起動部７は割り込み処理部８の割り込み処理プログラムを起動する。
図３は割り込みプログラムの処理手順を示すフローチャートである。まず変数ｉが０以外かをチェックし（Ｓ１１）、０以外ならウォッチドッグタイマをリセットし（Ｓ１２）、変数ｉを１減算する（Ｓ１３）。
図２の説明に戻ると、イニシャル処理を実行している間（Ｓ５）は、図３のＳ１２の処理により、ｔ４の間隔でウォッチドッグタイマ１１はリセットされる。この処理は、処理回数がＮ回に達するまで繰り返される。ｔ４*Ｎがイニシャル処理時間ｔ１より大きくなるように選択しているので、イニシャル処理（Ｓ５）でウォッチドッグタイマ２がタイムアウトになることはない。もし、プログラムの暴走でイニシャル処理時間ｔ１が延びた場合、すなわち処理回数がＮ回に達してもイニシャル処理が実行され続けていれば、ウォッチドッグタイマ１１のリセットが行われないため、ウォッチドッグタイマ１１のタイムアウトが発生し、プログラム暴走を検出することができる。
【００１７】
イニシャル処理（Ｓ５）の終了後は、汎用タイマ１２の割り込みを禁止する（Ｓ６）。次に、汎用タイマ１２を他用途として使用するための設定を行う（Ｓ７）。例えば、汎用タイマ１２を経過時間を算出するためのフリーランタイマとして使用するように設定する。以降、通常処理の一巡毎にウォッチドッグタイマ１１のリセットを繰り返す（Ｓ８、Ｓ９）。なお、ｔ１期間とｔ２期間でウォッチドッグタイマ１１に設定する時間は異なっていてもよい。その場合は、ｔ２期間での設定時間をｔ５とすると、ｔ５のセットはＳ７の直後に行う。
【００１８】
このように、本発明によれば、制御装置に一般的に装備されている汎用タイマと１個のウォッチドッグタイマを使用することにより、プログラムの暴走を検出し、暴走によるメモリ破壊等の不具合に至る前にすみやかにプログラムを再スタートあるいは停止可能とすることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の制御装置の構成を示すブロック図
【図２】本発明のプログラム暴走監視方法の処理手順を示すフローチャート
【図３】割り込みプログラムの処理手順を示すフローチャート
【図４】従来のウォッチドッグタイマを使用する制御装置の構成例を示すブロック図
【図５】従来のプログラムの処理手順を示すフローチャート
【図６】従来のプログラム暴走監視方法の処理手順を示すフローチャート
【符号の説明】
【００２０】
１、１Ａ  制御装置
２、２Ａ  中央制御部
３  ＣＰＵ
４  イニシャル処理部
５  通常処理部
６、６Ａ  ウォッチドッグ処理部
７  割り込み起動部
８  割り込み処理部
１１  ウォッチドッグタイマ
１２  汎用タイマ
【図１】
2008225807.tif 000003
【図２】
2008225807.tif 000004
【図３】
2008225807.tif 000005
【図４】
2008225807.tif 000006
【図５】
2008225807.tif 000007
【図６】
2008225807.tif 000008