JPH03246638A - プログラム暴走検出方式 - Google Patents

プログラム暴走検出方式

Info

Publication number
JPH03246638A
JPH03246638A JP2043778A JP4377890A JPH03246638A JP H03246638 A JPH03246638 A JP H03246638A JP 2043778 A JP2043778 A JP 2043778A JP 4377890 A JP4377890 A JP 4377890A JP H03246638 A JPH03246638 A JP H03246638A
Authority
JP
Japan
Prior art keywords
module
running
program
time
measuring means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2043778A
Other languages
English (en)
Inventor
Hideji Masuda
増田 秀二
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2043778A priority Critical patent/JPH03246638A/ja
Publication of JPH03246638A publication Critical patent/JPH03246638A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概 要〕 プロセス制御等のリアルタイムシステムにおいて、プロ
グラムの暴走を検出するプログラム暴走検出方式に関し
、 モジュール単位で最長走行時間と実際の走行時間の比較
(最大走行ステップ数と実際の走行ステップ数の比較)
を行うことができることを目的とし、 モジュールごとに、最長走行時間あるいは最大走行ステ
ップ数に対応する最大処理量を示す情報ヲ有シ、各モジ
ュールの走行に応じて、その走行時間あるいは走行ステ
ップ数に対応する処理量を計測する計測手段と、モジュ
ールの走行開始に応じて、計測手段の初期設定を行い、
制御転送時に計測手段が示す計測値を退避し、また制御
復帰時に退避した計測値を計測手段に設定する制御回路
と、計測手段の計測値が、走行モジュールの最大処理量
を越えるときにプログラムの暴走を検出する検出回路と
を備えて構成される。
〔産業上の利用分野〕
本発明は、プロセス制御等のリアルタイムシステムにお
いて、プログラムの暴走を検出するプログラム暴走検出
方式に関する。
プロセス制御を行うリアルタイムシステムでは、外部か
らの入力条件に応じて処理の実行順序を変更したり、外
部出力の制御量(時間)を変化させる必要があり、外部
入力条件に応じてソフトウェア処理が影響を受ける。複
雑なプロセス制御では、全ての外部入力条件に対応した
試験を実施することが不可能であるため、プログラムの
暴走を検出する機構を組み込み、不測の事態によりプロ
グラムが暴走したときの安全対策を講しる必要がある。
〔従来の技術〕
プログラムの実行時間を監視し、プログラム暴走を検出
する方式として、ウォッチ・ドッグ・タイマを用いた方
式が広く用いられている。この方式では、ウォッチ・ド
ッグ・タイマをリセットする処理を設け、本処理をウォ
ッチ・ドッグ・タイマの設定時間より短い時間周期で起
動する。他の処理が実行権を放棄しないために、この処
理が起動されず、ウォッチ・ドッグ・タイマの時間が設
定時間を経過するときには、割り込み等により、CPU
にプログラム暴走が通知される。
〔発明が解決しようとする課題〕
ところで、リアルタイム・システムでは、優先処理によ
るタスク管理が一般的によく使用されている。この優先
処理によるタスク管理を行うシステムでは、低レベルの
プログラムが暴走中のときでも、高レベルのプログラム
が割込んで動作することが起こり得る。
このようなとき、上述したウォッチ・ドッグ・タイマに
よる方式では、異常検出割込みが異常のあるプログラム
の走行中に発生するとは限らず、異常のあるプログラム
を特定することができない。
したがって、プログラム暴走発生時には、異常な制御が
継続して実行されることを回避するため□に、システム
全体を停止させていた。また、異常発生後の原因調査に
おいても、異常が発生した直接の原因となるプログラム
を見つけるための情報が残らず、原因調査に手間取って
いた。
一方、プログラムの暴走を検出する手段とじては、監視
対象となるプログラムが正常に動作した場合の最長走行
時間と実際の走行時間とを比較する方法、あるいは監視
対象となるプログラムが正常に動作した場合の最大走行
ステップ数と実際の走行ステップ数とを比較する方法が
ある。この方法をプログラム単位で行うときには、最長
走行時間あるいは最大走行ステップ数の設定にプログラ
ムの構造を考慮する必要があり、その設定方法が容易で
はない。
したがって、何れか一方の比較を制御転送の単位となる
モジュール単位で行うことができれば、上述した問題点
を解決することができる。
本発明は、モジュール単位で最長走行時間と実際の走行
時間の比較、あるいは最大走行ステップ数と実際の走行
ステップ数の比較を行うことができるプログラム暴走検
出方式を提供することを目的としている。
〔課題を解決するための手段〕
第1図は、本発明の原理ブロック図である。
請求項(1)に記載の発明では、モジュールごとに、最
長走行時間あるいは最大走行ステップ数に対応する最大
処理量を示す情報を有する。
計測手段11は、各モジュールの走行に応じて、その走
行時間あるいは走行ステップ数に対応する処理量を計測
する。
制御回路13は、モジュールの走行開始に応じて、計測
手段11の初期設定を行い、制御転送時に計測手段11
が示す計測値を退避し、また制御復帰時に退避した計測
値を計測手段11に設定する。
検出回路15は、計測手段11の計測値が、走行モジュ
ールの最大処理量を越えるときにプログラムの暴走を特
徴する 請求項(2)に記載の発明では、請求項(1)に記載の
発明の制御回路13は、モジュールの走行開始に応じて
計測手段11に初期設定する値をそのモジュールの最大
処理量に対応する値とする。
計測手段11は、モジュールの走行に応じて初期設定さ
れた値を減算する構成とする。
検出回路15は、計測手段11の計測値が「1」から「
0」に変化したときにプログラムの暴走を検出する構成
とする。
請求項(2)に記載の発明では、以上の構成において、
制御回路13は、プログラムの異常の監視不要時には、
計測手段11に初期設定する値を「0」とする。
〔作 用〕
請求項(1)に記載の発明では、モジュールの走行開始
時に、走行時間あるいは走行ステップ数に応じた処理量
を計測する計測手段11に初期設定し、モジュールの走
行に並行してこれを更新する。制御転送時には、制御転
送元モジュールの処理量に対応する計測値は、復帰アド
レスとともに退避される。
計測手段11は、制御転送先モジュールの走行開始時に
初期設定され、その処理量が計測される。
制御転送先モジュールの処理が終了し、制御転送元モジ
ュールへ制御が復帰するときには、退避されていた計測
値が計測手段11に設定され、制御転送前の計測値から
更新が再開される。この計測手段11の計測値は、走行
中のモジュールの他のモジュールの呼び出し処理および
割込み処理等を含まない実際の処理量に対応する。
検出回路15は、計測手段11を監視し、計測値が走行
モジュールの最大処理量を越えるときにプログラム暴走
を検出する。
すなわち、最大処理量(最大走行時間、最大走行ステッ
プ数)と実際の処理量(走行時間、走行ステップ数)と
の比較をモジュール単位で行うことができる。
請求項(2)に記載の発明では、モジュールの走行開始
に応じて計測手段11に最大処理量に応じた値を設定し
、モジュールの走行に応じて減算を行い、計測値がrl
Jから「0」に変化するときにプログラムの暴走を検出
する。プログラムの監視不要時には、計測手段11を「
0」で初期設定することにより、プログラム暴走検出処
理を停止することが可能になる。
〔実施例〕
以下、図面に基づいて本発明の実施例について詳細に説
明する。
第2図は、本発明の実施例構成を示すブロック図である
なお、本実施例のプログラム暴走検出は、プログラムが
正常に動作した場合の最長走行時間と実際の走行時間と
を比較する方法に対応する。
図において、制御回路(MPU)13には、カウンタ2
1が接続される。すなわち、制御回路13は、モジュー
ルの走行開始に応じて、カウンタ初期値をカウンタ21
に設定し、制御転送時には、復帰アドレスとともに、カ
ウンタ21の計測値をスタックに退避する構成とする。
カウンタ21およびクロック発生回路23は、計測手段
11として設けられ、カウンタ21に設定される値をク
ロック発生回路23から出力されるクロック信号に応じ
て、カウント・ダウンする構成とする。ここで、カウン
タ21は、計測値が「0」になったときには、計測値の
更新を行わなず、クロック発生回路23は、走行時間を
計測するために、1msの時間周期でクロック信号をカ
ウンタ21に出力するものとする。
カウンタ21には、検出回路15が接続される。
検出回路15は、カウンタ21の計測値が「1」から「
0」に変化したときに、制御回路13にNM I (N
on  Maskable Interrupt)割込
みをかける構成とする。
ここで、実施例の説明に用いるモジュールAはモジュー
ルBを呼び出す構成であり、各モジュールの最初の命令
の直前のアドレスにはカウンタ初期値A1、B1が設定
される。例えば、モジュールAは、いかなる条件でも1
50m5未満の時間内に処理を終了し、モジュールBは
、いかなる条件でも50m5未満の時間内に処理を終了
するとき、各モジュールA、Bに対し、走行時間が15
0m5.50m5に達するときにプログラム暴走を検出
するには、各モジュールA、Bのカウンタ初期値Al、
 Blとしてr150J、「50」が設定される。
第3図は、計測値の設定を説明する図である。
第4図は、実施例の動作の流れを説明する図である。第
5図は、検出回路の動作の流れを説明する図である。
以下、第2図〜第5図を参照して、実施例の動作につい
て説明する。
制御回路13は、上位のモジュールからモジュールAに
制御転送を行い、モジュールAの最初の命令の直前のア
ドレスに設定されるカウンタ初期値r 1504を読み
出し、カウンタ21に書き込む。
この後、モジュールAの最初の命令が実行される(第3
図(a))。
このモジュールAの走行と並行して、カウンタ21は、
クロック発生回路23から供給されるクロック信号に基
づいて計測値r1501からカウント・ダウンを行う。
モジュールA内のrCALLJ命令によりモジュールB
が呼び出される。
このとき、カウンタ21は、カウント・ダウンされて計
測値A2、例えば「80」になっているものとする。モ
ジュールBへの制御転送に先立って、モジュールBを実
行した後のモジュールA内の復帰アドレスaがスタック
に退避されるとともに、カウンタ21のその時点の計測
値「80」が、スタックに退避される(第3図(b)の
■)。
モジュールBに制御転送され、その最初の命令の直前の
アドレスに設定されるカウンタ初期値「50」がカウン
タ21に書き込まれる(第3図(b)の■) モジュールBの走行が開始され、これと並行して、カウ
ンタ21は、計測値r50」からカウント・ダウンを行
う。
モジュールBの処理が終了し、モジュールBのrRET
、命令によりモジュールAに制御転送が行われるとき、
制御回路13は、スタックに退避されている制御転送発
生時点の計測値「80」をカウンタ21に書き込み、復
帰アドレスaからモジュールAの処理を再開する(第3
図(C))。モジュールAの走行と並行して、カウンタ
21は、計測値「80」からカウント・ダウンを再開す
る。
モジュールAの処理が終了すれば、モジュールAを呼び
出したさらに上位のモジュールに制御転送が行われる。
上述した処理の間、検出回路15は、カウンタ21の計
測値を監視し、計測値が「1」から「0」に変化したと
きに、最長走行時間を越えたとして、プログラムの暴走
を検出し、制御回路13にNM■割込みをかける。この
割込み処理で、割込み復帰アドレスを手掛かりに異常の
発生したモジュールを特定することができる。
ここで、カウンタ21は、計測値「0」以降はカウント
・ダウンを行わず、検出回路15は、計測値が「1」か
ら「0」に変化したときにプログラムの暴走を検出する
構成であることから、各モジュールに設定するカウンタ
初期値を「0」にすることにより、プログラム暴走検出
処理を停止させることができる。
なお、上述した実施例は、rCALL、命令により制御
転送が行われる場合であったが、モジュール間の制御転
送が行われる他の場合、例えば、rRETJ命令、外部
割込み、内部割込み、割込みr RE T、 J命令等
による処理でも、各処理の最初の命令の直前のアドレス
にカウンタ初期値を設定しておけば、同様にしてプログ
ラム暴走検出を行うことができる。
したがって、他のモジュールの呼び出しや、割込みによ
る走行時間の増加を考慮することなく、監視対象のモジ
ュールの走行時間を考慮するだけでプログラム暴走検出
の判定基準を設定することができるので、プログラム構
造の変更に柔軟に対処することができる。
なお、プログラム暴走検出を走行時間ではなく走行ステ
ップ数で行うときには、最大走行ステップ数に応じたカ
ウンタ初期値を設定し、一定時間間隔ではなく、命令の
フェッチ信号に応じてクロック発生回路23からクロッ
ク信号を出力する構成にすればよい。
〔発明の効果〕
本発明によれば、制御転送が行われるときには、そのと
きの計測値を退避し、制御復帰時に退避した計測値を計
測手段に戻して制御転送前の計測値から引き続いて計測
を行い、モジュール単位で実際の走行時間(走行ステッ
プ数)を計測することができる。
したがって、モジュール単位で最長走行時間(最大走行
ステップ数)と実際の走行時間(走行ステップ数)とを
比較し、モジュール単位でプログラムの暴走を検出する
ことができるので、異常検出割込み発生のタイミングを
異常のあるプログラムの走行中とすることができる。
これにより、単一のCPUで行うリアルタイム・システ
ムにおいて、プログラム暴走発生時に、上述した異常の
発生したタスクのみを停止させ、全面的なシステムダウ
ンとはならないシステムを構成することが可能となる。
また、モジュール単位でプログラム異常検出の処理時間
を決定すればよいので、その決定が容易であり、プログ
ラム構造の変更に対する影響もほとんど考慮する必要が
なくなり、汎用的なシステムにも適用できる。
さらに、本方式では、異常発生のモジュールを特定する
ことができるので、障害解析の所要時間を短縮すること
ができる。
【図面の簡単な説明】
第1図は本発明の原理ブロック図、 第2図は実施例構成を示すブロック図、第3図は計測値
の設定を説明する図 案4図は実施例の動作の流れを説明する図、第5図は検
出回路の動作の流れを説明する図である。 図において、 11は計測手段、 13は制御回路、 15は検出回路 21はカウンタ、 23はクロック発生回路である。 本発明の原理ブロック図 第 図 [−11 81?Ilり手段 一−□] 5 実施例の構成ブロック図 第2図 検出回路の動作の流れを説明する図 (C) 計測値の設定を説明する図

Claims (2)

    【特許請求の範囲】
  1. (1)モジュールごとに、最長走行時間あるいは最大走
    行ステップ数に対応する最大処理量を示す情報を有し、 前記各モジュールの走行に応じて、その走行時間あるい
    は走行ステップ数に対応する処理量を計測する計測手段
    (11)と、 前記モジュールの走行開始に応じて、前記計測手段(1
    1)の初期設定を行い、制御転送時に前記計測手段(1
    1)が示す計測値を退避し、また制御復帰時に退避した
    計測値を前記計測手段(11)に設定する制御回路(1
    3)と、 前記計測手段(11)の計測値が、走行モジュールの最
    大処理量を越えるときにプログラムの暴走を検出する検
    出回路(15)と を備えたことを特徴とするプログラム暴走検出方式。
  2. (2)制御回路(13)は、モジュールの走行開始に応
    じて計測手段(11)に初期設定する値をそのモジュー
    ルの最大処理量に対応する値とし、計測手段(11)は
    、モジュールの走行に応じて初期設定された値を減算す
    る構成とし、 検出回路(15)は、前記計測手段(11)の計測値が
    「1」から「0」に変化したときにプログラムの暴走を
    検出する構成とする請求項(1)に記載のプログラム暴
    走検出方式において、 前記制御回路(13)は、プログラムの異常の監視不要
    時には、前記計測手段(11)に初期設定する値を「0
    」とする構成である ことを特徴とするプログラム暴走検出方式。
JP2043778A 1990-02-23 1990-02-23 プログラム暴走検出方式 Pending JPH03246638A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2043778A JPH03246638A (ja) 1990-02-23 1990-02-23 プログラム暴走検出方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2043778A JPH03246638A (ja) 1990-02-23 1990-02-23 プログラム暴走検出方式

Publications (1)

Publication Number Publication Date
JPH03246638A true JPH03246638A (ja) 1991-11-05

Family

ID=12673217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2043778A Pending JPH03246638A (ja) 1990-02-23 1990-02-23 プログラム暴走検出方式

Country Status (1)

Country Link
JP (1) JPH03246638A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107430A (ja) * 2004-09-30 2006-04-20 Microsoft Corp コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置
JP2007264997A (ja) * 2006-03-28 2007-10-11 Toyota Motor Corp 分散制御装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006107430A (ja) * 2004-09-30 2006-04-20 Microsoft Corp コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置
JP2007264997A (ja) * 2006-03-28 2007-10-11 Toyota Motor Corp 分散制御装置

Similar Documents

Publication Publication Date Title
JPH03246638A (ja) プログラム暴走検出方式
JPH01312638A (ja) マイクロプロセッサの異常監視リトライ制御装置
JP5733515B2 (ja) Ras機能を備える組み込み機器
JPS6115239A (ja) プロセツサ診断方式
JP2870250B2 (ja) マイクロプロセッサの暴走監視装置
JP3493287B2 (ja) エレベータ制御装置
CN115236497A (zh) 片上soc的时钟和定时器的诊断方法
JPH04195437A (ja) プログラム暴走監視装置
JPH0293738A (ja) 割込み処理方式
JPH01154258A (ja) ウォッチドッグタイマによる誤動作検出装置
JPH11250026A (ja) 並列マルチプロセッサシステムの障害リカバリ方法及び方式
JPH04148246A (ja) ウオツチドツグタイマ
JPH04182842A (ja) タイマ監視方式
JP2836084B2 (ja) 計算機の検査装置
JPS5827538B2 (ja) 相互監視方式
JPH06103467B2 (ja) 自動車用コンピュータの誤動作防止方法
JPS63280345A (ja) プログラム異常検出方法
JPH0469744A (ja) マイクロコンピュータの暴走検知装置
JPS59148961A (ja) プロセツサの動作監視方式
JPS60211550A (ja) 監視タイマ
JPH02214413A (ja) ディジタル形保護継電装置の監視方式
JPH02129755A (ja) マルチプロセッサシステム縮退方式
JPS6015749A (ja) インラインtmp方式
JPH04133162A (ja) プロセッサの動作監視装置
JPH04155543A (ja) マイコン誤動作自己検知方式