Some content of this application is unavailable at the moment.
If this situation persist, please contact us atFeedback&Contact
1. (WO2017037863) COMPUTER DEVICE, CONTROL METHOD, AND CONTROL PROGRAM
Document

明 細 書

発明の名称 計算機装置及び制御方法及び制御プログラム

技術分野

0001  

背景技術

0002  

先行技術文献

特許文献

0003  

発明の概要

発明が解決しようとする課題

0004   0005  

課題を解決するための手段

0006  

発明の効果

0007  

図面の簡単な説明

0008  

発明を実施するための形態

0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037  

符号の説明

0038  

請求の範囲

1   2   3   4   5  

図面

1   2   3   4   5   6   7  

明 細 書

発明の名称 : 計算機装置及び制御方法及び制御プログラム

技術分野

[0001]
 本発明は、計算機装置における異常の検出に関する。

背景技術

[0002]
 計算機装置における異常の検出方法として、特許文献1には、1つのウォッチドッグタイマを用いて各タスクの異常を検出する方法が開示されている。
 特許文献1の方法では、各タスクにおいて正常に処理が終了したときに各タスクに対応するウォッチドッグフラグがセットされる。
 また、特許文献1の方法では、タスクの管理処理が行われる度に、ウォッチドッグフラグがすべてセットさせている場合にウォッチドッグタイマがクリアされ、ウォッチドッグフラグが1つでもセットされていない場合にはウォッチドッグタイマがクリアされない。
 このようにすることで、特許文献1の方法は、各タスクの処理時間を監視し、計算機装置の異常を検出している。

先行技術文献

特許文献

[0003]
特許文献1 : 特開平05-346878号公報

発明の概要

発明が解決しようとする課題

[0004]
 特許文献1の計算機システムでは、各タスクに対応するウォッチドッグフラグをもとにタスクの異常を検出している。
 しかしながら、家電製品などの小規模な組込み機器においては、プロセッサの処理性能が低い、RAM(Random Access Memory)容量が少ないなどの理由から、1つのタスクで複数のソフトウェアモジュール(以下、S/Wモジュールとも表記する)が実行される場合がある。
 しかしながら、特許文献1の方法は、1つのタスクで複数のソフトウェアモジュールが実行されるような実行環境に対応していない。
 従って、特許文献1の方法では、ソフトウェアモジュールの単位で異常を検出することはできないという課題がある。
[0005]
 本発明は、上記のような課題を解決することを主な目的としており、ソフトウェアモジュールにおける異常を検出することを主な目的とする。
 なお、ソフトウェアモジュールは、アプリケーションプログラムの構成要素であり、複数のプログラムをまとめたひとまとまりの機能である。
 また、ソフトウェアモジュールは、ソフトウェア部品やソフトウェアコンポーネントとも呼ばれる。

課題を解決するための手段

[0006]
 本発明に係る計算機装置は、
 一定の時間間隔でカウンタ値を更新するWDT(WatchDog Timer)と、
 ソフトウェアモジュールが処理の実行を開始してからの経過時間を計測し、前記ソフトウェアモジュールが前記処理を実行しており、前記ソフトウェアモジュールが前記処理の実行を開始してからの経過時間が規定の上限時間に達していないという状態が継続している間、前記カウンタ値のリセットを繰り返し要求する時間監視部と、
 前記時間監視部から前記カウンタ値のリセットが要求される度に、前記カウンタ値をリセットするWDTクリア部とを有する。

発明の効果

[0007]
 本発明では、ソフトウェアモジュールが処理の実行を開始してからの経過時間が上限時間に達した場合はWDTがクリアされずにWDTがオーバーフローするため、ソフトウェアモジュールにおける異常を検出することができる。

図面の簡単な説明

[0008]
[図1] 実施の形態1に係る計算機システムのハードウェア構成例を示す図。
[図2] 実施の形態1に係る計算機装置の機能構成例を示す図。
[図3] 実施の形態1に係る時間監視テーブルの例を示す図。
[図4] 実施の形態1に係る計算機装置の動作例を示すフローチャート図。
[図5] 実施の形態1に係る計算機装置の動作例を示すフローチャート図。
[図6] 実施の形態1に係る時間監視部の動作例を示すフローチャート図。
[図7] 実施の形態1に係るWDTクリア部の動作例を示すフローチャート図。

発明を実施するための形態

[0009]
 実施の形態1.
***構成の説明***
 図1は、実施の形態1に係る計算機システム1のハードウェア構成例を示す。
 つまり、図1は、計算機システム1を動作させるための物理ハードウェアを示す。
[0010]
 図1の例では、計算機装置100にセンサ5、モータ6などのデバイスが接続されている。
 計算機装置100は、例えば、MPU(Micro-Processing Unit)2、メモリ3、WDT(WatchDog Timer)4で構成される。
[0011]
 WDT4は、プログラムの暴走を検出するために使用されるタイマである。
 WDT4は、一定の時間間隔でカウンタ値を更新する。
 そして、WDT4のカウンタ値がオーバーフローした場合に、WDT4がMPU2に割込みやリセットを発生させる。
 この結果、MPU2は、プログラムの暴走が発生したと判断することができる。
 プログラムは、WDT4のカウンタ値がオーバーフローしないようにカウンタ値をゼロにリセットする必要がある。
 WDT4のカウンタ値をゼロにリセットすることを「WDTをクリアする」、もしくは「WDTのクリア」という。
[0012]
 メモリ3は、例えば、RAMである。
 メモリ3には、図2を参照して後述するアプリケーションプログラム7(以下、単にアプリケーション7という)が格納されている。
 アプリケーション7には、図2を参照して後述するS/Wモジュール10が複数含まれている。
 また、アプリケーション7には、図2を参照して後述する処理要求部11及び処理受付部12も含まれている。
 また、メモリ3には、図2を参照して後述する時間監視部16及びWDTクリア部19が格納されている。
 更に、メモリ3には、図2及び図3を参照して後述する時間監視テーブル17が格納されている。
 また、メモリ3には、図2を参照して後述するOS(Operating System)13も格納されている。
[0013]
 プロセッサであるMPU2は、OS13の少なくとも一部をメモリ3から読み出して実行する。
 また、MPU2は、アプリケーション7の複数のS/Wモジュール10をメモリ3から読み出して実行する。
 また、MPU2は、処理要求部11、処理受付部12、時間監視部16及びWDTクリア部19をメモリ3から読み出して実行する。
[0014]
 時間監視部16及びWDTクリア部19は、「サーキットリー」で提供してもよい。
 「サーキットリー」は、MPU2だけでなく、ロジックIC又はGA(Gate Array)又はASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array)といった他の種類の処理回路をも包含する概念である。
 また、時間監視部16及びWDTクリア部19を「回路」又は「工程」又は「手順」又は「処理」として捉えることも可能である。
[0015]
 また、計算機装置100に、ハードディスク装置等の二次記憶装置、マウス、キーボード等の入力装置、ディスプレイ装置等の出力装置、NIC(Network Interface Card)等の通信装置が含まれていてもよい。
[0016]
 図2は、実施の形態1に係る計算機装置100の機能構成例を示す。
[0017]
 図2において、OS13は計算機装置100内でタスクの実行管理を行う。
 また、OS13は、タスク間のデータ通信機能として例えばメッセージバッファを提供する。
[0018]
 アプリケーション7は、計算機システム1が提供する機能を実現するソフトウェアであり、単一もしくは複数のタスク(OSの実行単位)で構成される。
 更に、タスクは単一もしくは複数のS/Wモジュール10で構成される。
 アプリケーション7では、複数のS/Wモジュール10がお互いの処理を呼び出しあいながら、計算機システム1が提供する機能を実現する。
[0019]
 処理要求側タスク8は、S/Wモジュール10が他のS/Wモジュール10を呼び出す、つまり、処理を要求する側のタスクである。
 処理受付側タスク9は、他のS/Wモジュール10から呼び出される、つまり、要求された処理を実行する側のタスクである。
 処理要求側タスク8と処理受付側タスク9は、後述する最高優先度タスク14と最低優先度タスク15の中間の優先度を持つタスクである。
 処理要求側タスク8と処理受付側タスク9は、それぞれ複数存在していてもよい。
[0020]
 処理要求部11は、S/Wモジュール10からの処理要求を内容とするメッセージを生成する。
 そして、処理要求部11は、生成したメッセージを、OS13の提供機能であるメッセージバッファを介して、処理受付側タスク9に通知する。
[0021]
 処理受付部12は、処理要求部11から通知されたメッセージの内容に基づき、要求された処理を実行する。
[0022]
 最高優先度タスク14は、計算機装置100内で最も優先度の高いタスクである。
 最低優先度タスク15は、計算機装置100内で最も優先度の低いタスクである。
[0023]
 時間監視部16は、最高優先度タスク14内で動作する。
 時間監視部16は、S/Wモジュール10が処理の実行を開始してからの経過時間を計測する。
 そして、時間監視部16は、S/Wモジュール10が処理を実行しており、処理の実行開始からの経過時間が規定の上限時間に達していないという状態が継続している間、カウンタ値のリセットをWDTクリア部19に繰り返し要求する。
 S/Wモジュール10が処理の実行を開始してからの経過時間を処理時間ともいう。
 また、時間監視部16は、S/Wモジュール10が周期処理の実行を開始してからの経過時間を計測する。
 そして、時間監視部16は、S/Wモジュール10が周期処理の実行を停止しており、周期処理の実行開始からの経過時間が周期処理の処理周期に相当する時間に達していないという状態が継続している間、カウンタ値のリセットをWDTクリア部19に繰り返し要求する。
 S/Wモジュール10が周期処理の実行を開始してからの経過時間を周期時間ともいう。
 なお、時間監視部16により行われる処理は、時間監視処理に相当する
[0024]
 時間監視テーブル17には、S/Wモジュール10ごとに最大処理時間、処理周期等が登録されており、時間監視部16から読み書きされる。
 時間監視テーブル17の詳細は後述する。
[0025]
 WDTフラグ18は、1と0のうちのいずれかの値をとる。
 WDTフラグ18の値が1の場合は、WDT4のクリアを意味する。
 つまり、時間監視部16がWDT4のカウンタ値のリセットを要求する場合は、時間監視部16によりWDTフラグ18の値が1にセットされる。
[0026]
 WDTクリア部19は、WDTフラグ18の値が1である場合、すなわち、時間監視部からWDT4のカウンタ値のリセットが要求された場合に、WDT4のクリアを実施する。
 WDTクリア部19は、WDT4ごとに決められた方法でWDT4のクリアを実施する。
 WDT4のクリア方法としては、WDTクリア用のI/O(Input/Output)アドレスに既定の値を書き込むという方法がある。
[0027]
 次に、時間監視テーブル17の例を図3に示す。
[0028]
 時間監視テーブル17は、S/Wモジュール10ごとに用意される。
 そして、各時間監視テーブル17では、対応するS/Wモジュール10で実行される周期処理ごとに、最大処理時間と処理周期が定義される。
 図3の例では、周期処理として、処理X及び処理Yが記述されている。
 最大処理時間は、処理時間として許容される上限時間であり、他の優先度の高いタスクの処理時間も含まれている。
 処理周期は、周期処理が実行されてから当該周期処理が再度実行されるまでの時間である。
 また、時間監視テーブル17には、S/Wモジュール10内の処理ごとに実行状態フラグと処理時間カウンタと周期時間カウンタを保持することができる。
 実行状態フラグは、当該S/Wモジュール10内の処理が実行中であるか停止中であるかを示すフラグである。
 実行状態フラグは、「実行中」及び「停止中」のうちのいずれかの値をとる。
 処理が実行中であれば、実行状態フラグは「実行中」の値をとり、処理が停止中であれば、実行状態フラグは「停止中」の値をとる。
 処理時間カウンタは、処理時間を計測するためのカウンタである。
 つまり、処理時間カウンタは、S/Wモジュールが周期処理を開始してからの経過時間を計測する。
 周期時間カウンタは、周期時間を計測するためのカウンタである。
 つまり、周期時間カウンタは、S/Wモジュールが周期処理を開始してからの経過時間を計測する。
 図3の例では、処理時間カウンタ及び周期時間カウンタという2つのカウンタを設けているが、いずれか一方のみを設けるようにしてもよい。
[0029]
***動作の説明***
 次に、図4~図7を参照して、本実施の形態に係る計算機装置100の動作例を説明する。
 図4及び図5は、計算機装置100の動作例を示すフローチャート図である。
 図6は、時間監視部16の動作例を示すフローチャート図である。
 図7は、WDTクリア部19の動作例を示すフローチャート図である。
 なお、以下の説明において(1)~(11)は、図2に示す(1)~(11)を指す。
 また、図4~図7に示す手順は、制御方法及び制御プログラムの例に相当する。
[0030]
 まず、処理要求側タスク8のS/WモジュールAが処理要求部11に対して(1)処理要求(S/WモジュールB、処理Y)を行う(S101)。
 処理要求部11は、S/WモジュールAにより指定されたS/WモジュールBから、処理受付側タスク9を特定する(S102)。
 更に、処理要求部11は、当該処理受付側タスク9が使用するメッセージバッファを特定し(S103)、特定したメッセージバッファを介して(2)処理要求(処理Y)のメッセージを処理受付部12に送信する(S104)。
[0031]
 処理受付部12は、時間監視部16に(3)メッセージバッファを介して処理開始通知を送信する(S105)。
 また、処理受付部12は、S/WモジュールBに、要求された処理である処理Yの実行を指示し(S107)、S/WモジュールBが処理Yを実行する(S108)。
 処理Yの(5)処理完了後、処理受付部12は、メッセージバッファを介して時間監視部16に(6)処理完了通知を送信する(S109)。
[0032]
 時間監視部16は、(3)処理開始通知を受信した場合に、実行状態フラグを「実行中」にする(S106)。
 また、時間監視部16は、(6)処理完了通知を受信した場合に、実行状態フラグを「停止中」にする(S110)。
 また、時間監視部16は、(7)周期タイマ割込みにて起動される(図6のS201)。
 本実施の形態では、時間監視部16は10msごとに起動される。
 そして、時間監視部16は、周期時間カウンタを加算する(S202)。
 すなわち、時間監視部16は10msごとに周期時間カウンタを加算する。
 また、実行状態フラグの値が「実行中」である場合は(S203でYES)、時間監視部16は処理時間カウンタも加算する(S204)。
 すなわち、時間監視部16は10msごとに処理時間カウンタを加算する。
[0033]
 次に、時間監視部16は、(8)時間監視テーブル17を参照して、WDTクリアを要求するか否かを判定する(S205)。
 より具体的には、時間監視部16は、時間監視テーブル17に登録されている処理のすべてについて、実行状態フラグの値が「実行中」かつ処理時間カウンタで計測されている処理時間が最大処理時間を超えていない場合、もしくは実行状態フラグの値が「停止中」かつ周期時間カウンタで計測されている周期時間が処理周期に相当する時間を超えていない場合にのみ(S205でYES)、(9)WDTクリア要求を行う。
 時間監視部16は、WDTフラグ18の値を1にすることによって、WDTクリア要求を行う(S206)。
 つまり、時間監視部16は、S/Wモジュール10が周期処理の実行を開始してからの経過時間を計測し、S/Wモジュール10が周期処理を実行しており、周期処理の実行開始からの経過時間が最大処理時間に達していないという状態が継続している間、WDT4のカウンタ値のリセットを繰り返し要求する。
 また、時間監視部16は、S/Wモジュール10が周期処理の実行を停止しており、周期処理の実行開始からの経過時間が周期処理の処理周期に相当する時間に達していないという状態が継続している間、WDT4のカウンタ値のリセットを繰り返し要求する。
 なお、処理時間カウンタ及び周期時間カウンタは、(3)処理開始通知時にゼロにクリアされる(S111、S112)。
[0034]
 このように、時間監視部16は、起動後に処理受付部12から処理開始通知を受信した場合に、実行状態フラグの値を「実行中」にする。
 そして、時間監視部16は、処理時間カウンタ及び周期時間カウンタをリセットする。
 そして、次に周期タイマ割込みにて起動された際に、時間監視部16は、周期時間カウンタを10ms分加算する。
 更に、時間監視部16は、実行状態フラグの値を参照し、実行状態フラグの値が「実行中」であれば、時間監視部16は、処理時間カウンタを10ms分加算する。
 また、時間監視部16は、起動後に処理受付部12から処理完了通知を受信した場合に、実行状態フラグの値を「停止中」にする。
 実行状態フラグの値が「実行中」になってから「停止中」になるまでの間は、処理時間が最大処理時間を超えていなければ、時間監視部16は、WDTフラグ18の値を1にすることによって、WDTクリア要求を行う。
 実行状態フラグの値が「実行中」であって、処理時間が最大処理時間を超えている場合は、時間監視部16は、WDTフラグ18の値を1に変更しないので、WDTフラグ18の値は0のままであり、WDTオーバーフローが発生して、S/Wモジュール10の異常が検出される。
 一方、実行状態フラグの値が「停止中」になった後は、周期時間が処理周期に相当する時間を超えていなければ、時間監視部16は、WDTフラグ18の値を1にすることによって、WDTクリア要求を行う。
 実行状態フラグの値が「停止中」であって、周期時間が処理周期に相当する時間を超えている場合は、時間監視部16は、WDTフラグ18の値を1に変更しないので、WDTフラグ18の値は0のままであり、WDTオーバーフローが発生して、S/Wモジュール10の異常が検出される。
[0035]
 WDTクリア部19は、最低優先度のタスクにて実行される(図7のS301)。
 WDTクリア部19は、(10)WDTフラグ18を参照し、WDTフラグ18の値が1の場合のみ(S302でYES)、(11)WDT4をクリアし(S303)、WDTフラグ18の値を0にする(S304)。
[0036]
***実施の形態の効果***
 以上のように、本実施の形態によれば、複数のS/Wモジュールが単一もしくは複数のタスクで実行された場合に、最大処理時間までに全ての処理を完了できなかったS/Wモジュールが存在すれば、WDT割込みやリセットが発生するので、S/Wモジュールの異常を検出することができる。
 また、本実施の形態によれば、周期処理を行うS/Wモジュールが周期処理を処理周期に従って実行できていないことを検出することができる。
 さらに、S/Wの誤動作により、割込みが発生しなくなったり、最高優先度タスクが動作できないようになったり、最低優先度タスクが動作できないような高負荷になったりした場合も検出することができる。
[0037]
***付記***
  なお、最高優先度タスク14は計算機装置100内で最も優先度の高いタスクでなくてもよい。
  最高優先度タスク14が処理要求側タスク8と処理受付側タスク9よりも高い優先度であれば、上記の効果が得られる。
  また、最低優先度タスク15は計算機装置100内で最も優先度の低いタスクでなくてもよい。
  最低優先度タスク15が処理要求側タスク8と処理受付側タスク9よりも低い優先度であれば、上記の効果が得られる。

符号の説明

[0038]
 1 計算機システム、2 MPU、3 メモリ、4 WDT、5 センサ、6 モータ、7 アプリケーション、8 処理要求側タスク、9 処理受付側タスク、10 S/Wモジュール、11 処理要求部、12 処理受付部、13 OS、14 最高優先度タスク、15 最低優先度タスク、16 時間監視部、17 時間監視テーブル、18 WDTフラグ、19 WDTクリア部、100 計算機装置。

請求の範囲

[請求項1]
 一定の時間間隔でカウンタ値を更新するWDT(WatchDog Timer)と、
 ソフトウェアモジュールが処理の実行を開始してからの経過時間を計測し、前記ソフトウェアモジュールが前記処理を実行しており、前記ソフトウェアモジュールが前記処理の実行を開始してからの経過時間が規定の上限時間に達していないという状態が継続している間、前記カウンタ値のリセットを繰り返し要求する時間監視部と、
 前記時間監視部から前記カウンタ値のリセットが要求される度に、前記カウンタ値をリセットするWDTクリア部とを有する計算機装置。
[請求項2]
 前記時間監視部は、
 前記ソフトウェアモジュールが周期処理の実行を開始してからの経過時間を計測し、前記ソフトウェアモジュールが前記周期処理を実行しており、前記ソフトウェアモジュールが前記周期処理の実行を開始してからの経過時間が前記上限時間に達していないという状態が継続している間、前記カウンタ値のリセットを繰り返し要求する請求項1に記載の計算機装置。
[請求項3]
 前記時間監視部は、
 前記ソフトウェアモジュールが前記周期処理の実行を停止しており、前記ソフトウェアモジュールが前記周期処理の実行を開始してからの経過時間が前記周期処理の処理周期に相当する時間に達していないという状態が継続している間、前記カウンタ値のリセットを繰り返し要求する請求項2に記載の計算機装置。
[請求項4]
 一定の時間間隔でカウンタ値を更新するWDT(WatchDog Timer)を有する計算機装置が、
 ソフトウェアモジュールが処理の実行を開始してからの経過時間を計測し、前記ソフトウェアモジュールが前記処理を実行しており、前記ソフトウェアモジュールが前記処理の実行を開始してからの経過時間が規定の上限時間に達していないという状態が継続している間、前記カウンタ値をリセットし続ける制御方法。
[請求項5]
 一定の時間間隔でカウンタ値を更新するWDT(WatchDog Timer)を有する計算機装置に、
 ソフトウェアモジュールが処理の実行を開始してからの経過時間を計測し、前記ソフトウェアモジュールが前記処理を実行しており、前記ソフトウェアモジュールが前記処理の実行を開始してからの経過時間が規定の上限時間に達していないという状態が継続している間、前記カウンタ値のリセットを繰り返し要求する時間監視処理と、
 前記時間監視処理から前記カウンタ値のリセットが要求される度に、前記カウンタ値をリセットするWDTクリア処理とを実行させる制御プログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]