(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】動作監視装置および方法
(51)【国際特許分類】
G06F 11/07 20060101AFI20240806BHJP
G06F 11/14 20060101ALI20240806BHJP
【FI】
G06F11/07 157
G06F11/14 679
(21)【出願番号】P 2020152559
(22)【出願日】2020-09-11
【審査請求日】2023-06-26
(73)【特許権者】
【識別番号】000006666
【氏名又は名称】アズビル株式会社
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】星加 一幸
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開平02-208738(JP,A)
【文献】特開昭63-271545(JP,A)
【文献】特開平05-158749(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
プログラムに基づき複数の処理を実行することにより一連のプログラム動作を行う監視対象デバイスと接続されて、一定の監視時間を計時する監視タイマを有し、前記監視タイマがタイムアップした場合、前記プログラム動作に異常が発生したと判定し、前記プログラム内に分散配置されているクリア処理の実行に応じて、当該クリア処理を識別するためのIDを含むクリア指示を前記監視対象デバイスから受信した場合、前記監視タイマを再起動して前記プログラム動作を継続させるように構成された制御回路と、
前記監視対象デバイスから受信した前記クリア指示に関する受信状況を記憶するように構成された記憶回路とを備え、
前記制御回路は、前記クリア指示に基づいて前記受信状況を更新し、前記監視対象デバイスから新たなクリア指示を受信した場合、前記受信状況に含まれる当該新たなクリア指示の新たなIDに関する受信状況に基づいて、前記監視タイマを用いた前記プログラム動作の監視を行う
ことを特徴とする動作監視装置。
【請求項2】
請求項1に記載の動作監視装置において、
前記受信状況は、最後に受信したクリア指示のIDを示す前回IDを含み、
前記制御回路は、前記新たなクリア指示を受信した場合、当該新たなクリア指示の新たなIDを、前記受信状況に含まれる前回IDと比較し、得られた比較結果に基づいて前記監視タイマの再起動に関する要否を判定することを特徴とする動作監視装置。
【請求項3】
請求項2に記載の動作監視装置において、
前記制御回路は、前記新たなIDが前記前回IDと不一致である場合、前記新たなクリア指示に応じた前記監視タイマの再起動を実施し、前記新たなIDが前記前回IDと一致した場合、前記新たなクリア指示に応じた前記監視タイマの再起動を回避することを特徴とする動作監視装置。
【請求項4】
請求項1に記載の動作監視装置において、
前記受信状況は、受信したクリア指示のIDが継続して同一である回数を示す継続回数を含み、
前記制御回路は、前記新たなクリア指示を受信した場合、前記受信状況が示す、当該新たなクリア指示の新たなIDに関する継続回数を、当該継続回数の上限を示す継続しきい値と比較し、得られた比較結果に基づいて前記プログラム動作における異常発生の有無を判定することを特徴とする動作監視装置。
【請求項5】
請求項4に記載の動作監視装置において、
前記制御回路は、前記継続回数が前記継続しきい値を上回った場合、前記プログラム動作において異常発生ありと判定し、前記継続回数が前記継続しきい値以下である場合、前記プログラム動作において異常発生なしと判定することを特徴とする動作監視装置。
【請求項6】
請求項1に記載の動作監視装置において、
前記受信状況は、受信したクリア指示からそれぞれのIDが一定の許容時間内に検出された回数を示す検出回数を含み、
前記制御回路は、前記新たなクリア指示を受信した場合、前記受信状況が示す、当該新たなクリア指示の新たなIDに関する検出回数を、当該検出回数の上限を示す検出しきい値と比較し、得られた比較結果に基づいて前記プログラム動作における異常発生の有無を判定することを特徴とする動作監視装置。
【請求項7】
請求項6に記載の動作監視装置において、
前記制御回路は、前記検出回数が前記検出しきい値を上回った場合、前記プログラム動作において異常発生ありと判定し、前記検出回数が前記検出しきい値以下である場合、前記プログラム動作において異常発生なしと判定することを特徴とする動作監視装置。
【請求項8】
プログラムに基づき複数の処理を実行することにより一連のプログラム動作を行う監視対象デバイスと接続されて、一定の監視時間を計時する監視タイマを有し、前記監視タイマがタイムアップした場合、前記プログラム動作に異常が発生したと判定し、前記プログラム内に分散配置されているクリア処理の実行に応じて、当該クリア処理を識別するためのIDを含むクリア指示を前記監視対象デバイスから受信した場合、前記監視タイマを再起動して前記プログラム動作を継続させるように構成された制御回路と、前記監視対象デバイスから受信した前記クリア指示に関する受信状況を記憶するように構成された記憶回路と、を備える動作監視装置で用いられる動作監視方法であって、
前記制御回路が、前記クリア指示に基づいて前記受信状況を更新するステップと、
前記制御回路が、前記監視対象デバイスから新たなクリア指示を受信した場合、前記受信状況に含まれる当該新たなクリア指示の新たなIDに関する受信状況に基づいて、前記監視タイマを用いた前記プログラム動作の監視を行うステップと
を備えることを特徴とする動作監視方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、監視対象デバイスで行われるプログラム動作を監視するための動作監視技術に関する。
【背景技術】
【0002】
従来、コンピュータシステムにおいて、電子機器やCPUなどの監視対象デバイスでのプログラム動作を監視する際、WDT(Watch Dog Timer:ウォッチドッグタイマ)が広く用いられている(例えば、特許文献1など参照)。WDTは、一定の監視時間が経過するとタイムアップするタイマである。動作監視装置は、このようなWDTを搭載するとともに、通信回線を介して監視対象デバイスと接続し、監視対象デバイスからのクリア指示に応じてWDTを再起動し、WDTのタイムアップに応じてリセット指示を監視対象デバイスに出力する。
【0003】
監視対象デバイスでのプログラム動作が正常である場合、WDTがタイムアップする前にプログラムに配置されたクリア処理に応じて、監視対象デバイスからクリア指示が出力されて、動作監視装置でWDTが再起動される。これにより、WDTのタイムアップに応じた動作監視装置からのリセット指示の出力が回避されるため、監視対象デバイスのプログラム動作が継続される。一方、プログラム動作で暴走または停止などの異常が発生した場合、プログラムに配置されたクリア処理が実行されなくなって、監視対象デバイスからクリア指示が出力されなくなる。このため、WDTがタイムアップして動作監視装置からリセット指示が出力されて、監視対象デバイスのプログラム動作が初期化されることになる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
動作監視装置において、WDTの監視時間を短くすれば、監視対象デバイスでのプログラム動作の暴走や停止などの異常発生を早期に検出できるが、そのためにはプログラム動作でクリア指示を頻繁に出力する必要がある。具体的には、周期的に処理を繰り返す周期処理を実行するプログラムにおいて、周期処理の周期がWDTの監視時間よりも長い場合、プログラムの周期処理内に、クリア指示を出力するためのクリア処理を分散して複数配置する必要がある。しかし、プログラム内に多くのクリア処理を分散して配置することは、監視対象デバイスでのプログラム動作を正確に監視できなくなるという問題点がある。
【0006】
例えば、プログラム動作において、クリア処理を含む範囲で暴走が発生すると、クリア処理の実行間隔が監視時間より短い場合、正常動作時と同様に、WDTがタイムアップする前にリセットされるため、プログラム動作の暴走を検出できなくなる。このため、プログラム内に多くのクリア処理を分散して配置した場合、暴走を検出できなくなる確率が増加し、結果として監視対象デバイスでのプログラム動作に関する監視精度を低下させてしまうことになる。本来、コンピュータシステムの安全性を高めるために用いる動作監視技術において、監視精度が低下する可能性がある構成は望ましくない。
【0007】
一方、このような安全性の低下を回避する方法として、プログラム内に配置するクリア処理の配置数を制限する方法がある。このためには、クリア処理を含む範囲で暴走が発生しないよう十分考慮して、クリア処理を配置する箇所を検討する必要がある。しかしながら、このような方法は、プログラムの柔軟な設計の妨げとなり、結果として、プログラム設計に要する作業負担やコストが増加するという問題点がある。
【0008】
本発明はこのような課題を解決するためのものであり、監視対象デバイスでのプログラム動作を正確に監視できる動作監視技術を提供することを目的としている。
【課題を解決するための手段】
【0009】
このような目的を達成するために、本発明にかかる動作監視装置は、プログラムに基づき複数の処理を実行することにより一連のプログラム動作を行う監視対象デバイスと接続されて、一定の監視時間を計時する監視タイマを有し、前記監視タイマがタイムアップした場合、前記プログラム動作に異常が発生したと判定し、前記プログラム内に分散配置されているクリア処理の実行に応じて、当該クリア処理を識別するためのIDを含むクリア指示を前記監視対象デバイスから受信した場合、前記監視タイマを再起動して前記プログラム動作を継続させるように構成された制御回路と、前記監視対象デバイスから受信した前記クリア指示に関する受信状況を記憶するように構成された記憶回路とを備え、前記制御回路は、前記クリア指示に基づいて前記受信状況を更新し、前記監視対象デバイスから新たなクリア指示を受信した場合、前記受信状況に含まれる当該新たなクリア指示の新たなIDに関する受信状況に基づいて、前記監視タイマを用いた前記プログラム動作の監視を行うようにしたものである。
【0010】
また、本発明にかかる上記動作監視装置の一構成例は、前記受信状況が、最後に受信したクリア指示のIDを示す前回IDを含み、前記制御回路は、前記新たなクリア指示を受信した場合、当該新たなクリア指示の新たなIDを、前記受信状況に含まれる前回IDと比較し、得られた比較結果に基づいて前記監視タイマの再起動に関する要否を判定するようにしたものである。
【0011】
また、本発明にかかる上記動作監視装置の一構成例は、前記制御回路が、前記新たなIDが前記前回IDと不一致である場合、前記新たなクリア指示に応じた前記監視タイマの再起動を実施し、前記新たなIDが前記前回IDと一致した場合、前記新たなクリア指示に応じた前記監視タイマの再起動を回避するようにしたものである。
【0012】
また、本発明にかかる上記動作監視装置の一構成例は、前記受信状況が、受信したクリア指示のIDが継続して同一である回数を示す継続回数を含み、前記制御回路は、前記新たなクリア指示を受信した場合、前記受信状況が示す、当該新たなクリア指示の新たなIDに関する継続回数を、当該継続回数の上限を示す継続しきい値と比較し、得られた比較結果に基づいて前記プログラム動作における異常発生の有無を判定するようにしたものである。
【0013】
また、本発明にかかる上記動作監視装置の一構成例は、前記制御回路が、前記継続回数が前記継続しきい値を上回った場合、前記プログラム動作において異常発生ありと判定し、前記継続回数が前記継続しきい値以下である場合、前記プログラム動作において異常発生なしと判定するようにしたものである。
【0014】
また、本発明にかかる上記動作監視装置の一構成例は、前記受信状況が、受信したクリア指示からそれぞれのIDが一定の許容時間内に検出された回数を示す検出回数を含み、前記制御回路は、前記新たなクリア指示を受信した場合、前記受信状況が示す、当該新たなクリア指示の新たなIDに関する検出回数を、当該検出回数の上限を示す検出しきい値と比較し、得られた比較結果に基づいて前記プログラム動作における異常発生の有無を判定するようにしたものである。
【0015】
また、本発明にかかる上記動作監視装置の一構成例は、前記制御回路が、前記検出回数が前記検出しきい値を上回った場合、前記プログラム動作において異常発生ありと判定し、前記検出回数が前記検出しきい値以下である場合、前記プログラム動作において異常発生なしと判定するようにしたものである。
【0016】
また、本発明にかかる動作監視方法は、プログラムに基づき複数の処理を実行することにより一連のプログラム動作を行う監視対象デバイスと接続されて、一定の監視時間を計時する監視タイマを有し、前記監視タイマがタイムアップした場合、前記プログラム動作に異常が発生したと判定し、前記プログラム内に分散配置されているクリア処理の実行に応じて、当該クリア処理を識別するためのIDを含むクリア指示を前記監視対象デバイスから受信した場合、前記監視タイマを再起動して前記プログラム動作を継続させるように構成された制御回路と、前記監視対象デバイスから受信した前記クリア指示に関する受信状況を記憶するように構成された記憶回路と、を備える動作監視装置で用いられる動作監視方法であって、前記制御回路が、前記クリア指示に基づいて前記受信状況を更新するステップと、前記制御回路が、前記監視対象デバイスから新たなクリア指示を受信した場合、前記受信状況に含まれる当該新たなクリア指示の新たなIDに関する受信状況に基づいて、前記監視タイマを用いた前記プログラム動作の監視を行うステップとを備えている。
【発明の効果】
【0017】
本発明によれば、監視対象デバイスでのプログラム動作を正確に監視することが可能となる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、動作監視装置の構成を示すブロック図である。
【
図2】
図2は、プログラムの処理例(周期処理)を示す説明図である。
【
図3】
図3は、第1の実施の形態にかかる動作監視処理を示すフローチャートである。
【
図4】
図4は、第1の実施の形態にかかる動作監視例(正常動作時)を示すシーケンス図である。
【
図5】
図5は、第1の実施の形態にかかる動作監視例(暴走発生時)を示すシーケンス図である。
【
図6】
図6は、プログラムの処理例(周期処理+繰り返し処理)を示す説明図である。
【
図7】
図7は、第2の実施の形態にかかる動作監視処理を示すフローチャートである。
【
図8】
図8は、第2の実施の形態にかかる動作監視例(正常動作時)を示すシーケンス図である。
【
図9】
図9は、第2の実施の形態にかかる動作監視例(暴走発生時)を示すシーケンス図である。
【発明を実施するための形態】
【0019】
次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、
図1を参照して、本発明の第1の実施の形態にかかる動作監視装置10について説明する。
図1は、動作監視装置の構成を示すブロック図である。
この動作監視装置10は、プログラム動作を行う監視対象デバイス20と通信回線L1を介して接続されて、一定の監視時間を計時する監視タイマWDT(Watch Dog Timer:ウォッチドッグタイマ)を用いることにより、監視対象デバイス20でのプログラム動作を監視するように構成されている。以下では、監視タイマをWDTと云うことがある。
【0020】
監視対象デバイス20は、産業用のコントローラやPCなどの情報処理装置、あるいはこれら情報処理装置に登載されたCPUからなり、プログラムに基づいて複数の処理を実行することにより一連のプログラム動作を行うように構成されている。
以下では、これら動作監視装置10と監視対象デバイス20を含むシステムを、動作監視システム1という。なお、動作監視装置10で監視する監視対象デバイス20は、1つに限定されるものではない。監視対象デバイス20のそれぞれと対応してWDTを複数設けることにより、1つの動作監視装置10で、複数の監視対象デバイス20でのプログラム動作を監視することも可能である。
【0021】
一般に、WDTを用いて情報処理デバイスでのプログラム動作を外部から監視する場合、情報処理デバイスで実行するプログラムに、WDTを再起動するためのクリア指示を送信するクリア処理が、予め分散して配置されている。
【0022】
本発明は、上記と同様に、監視対象デバイス20のプログラムに、WDTを再起動するためのクリア指示を送信するクリア処理が、予め分散して配置されているものとする。またこれに加えて、監視対象デバイス20から送信されるクリア指示に、そのクリア指示を送信したクリア処理を識別するための識別情報としてIDが含まれているものとする。本発明は、このIDに基づいて、監視対象デバイス20から受信したクリア指示の受信状況を動作監視装置10で確認することにより、プログラム動作を正確に監視するようにしたものである。
【0023】
プラントやビル建物などの大規模な施設では、産業用のコントローラなどの制御装置を用いて、施設に設置されている機器を自動制御する比較的大規模なコンピュータシステムが運用されている。この際、コンピュータシステムの安全性を担保する仕組みとして、例えば2つのコントローラを用意しておき、一方の運用側のコントローラで異常が発生した場合、他方の待機側のコントローラに切り替えて、新たな運用側とする冗長システムが用いられている。
【0024】
このような冗長システムでは、コントローラの切り替え中は、機器の自動制御が一時停止するため、異常発生から切替完了までの所要時間を短縮するには、なるべく早期に異常を検知する必要がある。その1つとして、冗長構成をなすこれらコントローラでのプログラム動作を、これらコントローラとは別個の監視装置で遠隔監視する場合がある。このような場合、これらコントローラが本発明にかかる監視対象デバイス20に相当し、監視装置として本発明にかかる動作監視装置10を用いればよい。
【0025】
また、PCなどの情報処理装置では、CPUとは別個のチップからなる動作監視回路を用いて、CPUでのプログラム動作を常時監視する、比較的小規模なコンピュータシステムが運用されている。このようなシステムでは、CPUでのプログラム動作で異常が検出された場合、動作監視回路からCPUをリセットすることになる。このような場合、CPUが本発明にかかる監視対象デバイス20に相当し、動作監視回路として本発明にかかる動作監視装置10を用いればよい。
【0026】
[動作監視装置]
次に、
図1を参照して、本実施の形態にかかる動作監視装置10の構成について詳細に説明する。
図1に示すように、動作監視装置10は、主な回路構成として、入出力I/F11、記憶回路12、および制御回路13を備えている。
【0027】
[入出力I/F]
入出力I/F11は、通信回線L1を介して監視対象デバイス20と接続されて、クリア指示やリセット指示などの各種指示を送受信するように構成されている。また、入出力I/F11は、通信回線L2を介して、サーバやPCなどの上位装置30と接続されて、監視開始/終了などの各種指示や監視結果を送受信するように構成されている。
【0028】
[記憶回路]
記憶回路12は、半導体メモリからなり、制御回路13での監視動作で用いる各種処理情報を記憶するように構成されている。記憶回路12で記憶する主な処理情報として、受信状況12Aがある。受信状況12Aは、監視対象デバイス20から送信されたリセット指示に関する受信状況を示す処理情報であり、制御回路13で生成されて記憶回路12に保存される。本実施の形態では、受信状況12Aは、最後に受信したクリア指示のIDを示す前回IDを含んでいるものとする。
【0029】
[制御回路]
制御回路13は、主な構成として、一定の監視時間を計時する監視タイマWDT(13A)と、WDTを制御することにより、監視対象デバイス20でのプログラム動作を監視するための監視動作を行うように構成された監視制御部13Bとを備えている。
制御回路13は、CPUとその周辺回路からなり、CPUとプログラムとを協働させることにより、WDT(13A)や監視制御部13Bを実現する。プログラムは、CPUの内部メモリ(図示せず)に格納しておいてもよく、記憶回路12に格納しておいてもよい。このプログラムは、動作監視装置10に通信回線L1,L2を介して接続された外部装置や記録媒体から、予め内部メモリや記憶回路12に格納される。
【0030】
[監視タイマWDT]
WDT(13A)は、一定長の監視時間Twを計時する一般的なタイマである。計時開始から監視時間Twが経過した場合、すなわちタイムアップした場合には計時を終了し、計時中に再起動された場合、その時点から再び計時を開始するように構成されている。
【0031】
[監視制御部]
監視制御部13Bは、入出力I/F11で受信した、上位装置30からの監視開始時や、監視対象デバイス20からの監視開始要求に応じて、WDTを起動することにより監視動作を開始し、WDTがタイムアップした場合、監視対象デバイス20でのプログラム動作に異常が発生したと判定し、クリア処理を識別するためのIDを含むクリア指示を監視対象デバイス20から受信した場合、WDTを再起動してプログラム動作を継続させるように構成されている。
【0032】
また、監視制御部13Bは、入出力I/F11で受信した監視対象デバイス20からのクリア指示に基づいて、受信状況12Aを生成して記憶回路12に保存し、監視対象デバイス20から新たなクリア指示を受信した場合、記憶回路12の受信状況12Aに基づいて、WDTを用いたプログラム動作の監視、具体的にはWDTの再起動の制御を行うように構成されている。
また、監視制御部13Bは、監視対象デバイス20でのプログラム動作に異常が発生したと判定された場合、上位装置30にプログラム動作の異常を通知し、あるいは、監視対象デバイス20に対してプログラム動作をリセットするリセット指示を送信するように構成されている。
【0033】
具体的には、受信状況12Aは、最後に受信したクリア指示のIDを示す前回IDを含み、監視制御部13Bは、新たなクリア指示を受信した場合、当該新たなクリア指示の新たなIDを、受信状況12Aに含まれる前回IDと比較し、得られた比較結果に基づいてWDTの再起動に関する要否を判定し、この際、新たなIDが前回IDと不一致である場合、新たなクリア指示に応じたWDTの再起動を実施し、新たなIDが前回IDと一致した場合、新たなクリア指示に応じたWDTの再起動を回避するように構成されている。
【0034】
[監視対象デバイス]
次に、
図1を参照して、本実施の形態にかかる監視対象デバイス20の構成について説明する。
前述したように、監視対象デバイス20は、産業用のコントローラやPCなどの情報処理装置、あるいはこれら情報処理装置に登載されたCPUからなり、プログラムに基づいて複数の処理を実行することにより一連のプログラム動作を行うように構成されている。
図1に示すように、監視対象デバイス20は、主な回路構成として、入出力I/F21、記憶回路22、および処理回路23を備えている。
【0035】
[入出力I/F]
入出力I/F21は、通信回線L1を介して動作監視装置10と接続されて、クリア指示やリセット指示などの各種指示を送受信するように構成されている。
【0036】
[記憶回路]
記憶回路22は、半導体メモリからなり、処理回路23での処理動作で用いる各種処理情報やプログラム22Pを記憶するように構成されている。プログラム22Pは、処理回路23のCPUと協働することにより、処理回路23での処理動作を実現するアプリケーションプログラムである。例えば、監視対象デバイス20が、産業用のコントローラである場合、配下に接続された各機器を自動制御するためのプログラムに相当する。
【0037】
図2は、プログラムの処理例(周期処理)を示す説明図である。
図2には、一定周期で繰り返し実行される周期処理を含むプログラム22Pが示されている。例えば、コントローラで各機器を自動制御する場合、一定周期で各機器から検出データを取得したり、操作量データを指示したりする。
図2の周期処理において、「処理A」と「処理B」の間に「クリア処理(ID=1)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「1」を含むクリア指示が動作監視装置10に送信される。
【0038】
また、
図2の周期処理において、「処理B」と「処理C」の間に「クリア処理(ID=2)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「2」を含むクリア指示が動作監視装置10に送信される。
さらに、
図2の周期処理において、「処理C」と「処理D」の間に「クリア処理(ID=3)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「3」を含むクリア指示が動作監視装置10に送信される。
【0039】
監視時間Twとクリア指示の送信間隔との関係について説明する。WDTを用いた動作監視において、監視時間Twが経過してWDTがタイムアップすると異常発生と判定される。このため、正常動作時には、監視時間Twより短い間隔で、監視対象デバイス20から動作監視装置10へクリア指示を送信する必要がある。したがって、監視対象デバイス20のプログラム22P内には、正常動作時に、監視時間Twより短い間隔でクリア指示が送信されるように、前述した各クリア処理が分散配置されている。これは、WDTを用いた動作監視の基本条件である。
【0040】
[処理回路]
処理回路23は、CPUとその周辺回路からなり、CPUと記憶回路22のプログラム22Pとを協働させることにより、例えば、コントローラで各機器を自動制御するなどの一連のプログラム動作を行うように構成されている。また、処理回路23は、動作監視装置10からリセット指示を受信した場合、CPUをリセットしてプログラム動作を停止あるいは再起動するように構成されている。
【0041】
[第1の実施の形態の動作]
次に、
図3を参照して、本実施の形態にかかる動作監視装置10の動作について説明する。
図3は、第1の実施の形態にかかる動作監視処理を示すフローチャートである。
動作監視装置10の制御回路13は、入力された監視開始要求に応じて、
図3の動作監視処理を実行することにより、監視対象デバイス20でのプログラム動作の監視を行う。
【0042】
まず、制御回路13において、監視制御部13Bは、WDT(13A)を起動し(ステップS100)、記憶回路12の受信状況12Aに含まれる前回IDを初期化する(ステップS101)。
次に、監視制御部13Bは、監視対象デバイス20から新たなクリア指示を受信したか確認し(ステップS102)、受信していない場合(ステップS102:NO)、後述するステップS110へ移行する。
【0043】
一方、ステップS102において、新たなクリア指示を受信した場合(ステップS102:YES)、監視制御部13Bは、新たなクリア指示に含まれる新たなIDを、受信状況12Aに含まれている前回IDと比較する(ステップS103)。
【0044】
ここで、新たなIDが前回IDと不一致である場合(ステップS103:YES)、監視制御部13Bは、WDTをクリアして再起動し(ステップS104)、新たなIDを前回IDとして受信状況12Aに保存した後(ステップS105)、後述するステップS110へ移行する。一方、ステップS103において、新たなIDが前回IDと一致している場合(ステップS103:NO)、後述するステップS110へ移行する。
【0045】
ステップS110において、監視制御部13Bは、WDTがタイムアップしたか確認し(ステップS110)、タイムアップしていない場合(ステップS110:NO)、前述したステップS102へ戻る。
一方、WDTがタイムアップした場合(ステップS110:YES)、監視対象デバイス20のプログラム動作に異常が発生したと判定し(ステップS111)、監視対象デバイス20に対してリセット指示を出力した後(ステップS112)、一連の動作監視処理を終了する。
【0046】
[第1の実施の形態の動作例]
次に、本実施の形態にかかる動作監視装置10の動作例について説明する。以下では、前述の
図2のプログラム22Pに基づいて、監視対象デバイス20がプログラム動作を行う場合を例とし、周期処理が正常に実行された場合と、周期処理で暴走が発生した場合について、それぞれ説明する。
【0047】
[正常動作時]
まず、
図4を参照して、監視対象デバイス20のプログラム動作のうち、周期処理が正常である正常動作時について説明する。
図4は、第1の実施の形態にかかる動作監視例(正常動作時)を示すシーケンス図である。
監視動作の開始時点において、動作監視装置10は、受信状況12Aの前回IDを「0」(ゼロ)に初期化し、WDTを起動する。また、監視対象デバイス20は、前述の
図2に示したプログラム22Pの周期処理に基づいて、プログラム動作を開始する。
【0048】
図4に示すように、時刻T1において、周期処理内に配置されているクリア処理(ID=1)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「1」で前回ID「0」とは不一致であるため、動作監視装置10は、WDTを再起動するとともに、新たなID「1」を前回IDとして受信状況12Aに保存する。これにより、WDTの計時がリセットされて、時刻T1から監視時間Twの計時が新たに開始される。
【0049】
続く時刻T2において、周期処理内に配置されているクリア処理(ID=2)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「1」とは不一致であるため、動作監視装置10は、WDTを再起動するとともに、新たなID「2」を前回IDとして受信状況12Aに保存する。これにより、WDTの計時がリセットされて、時刻T2から監視時間Twの計時が新たに開始される。
【0050】
続く時刻T3において、周期処理内に配置されているクリア処理(ID=3)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「3」で前回ID「2」とは不一致であるため、動作監視装置10は、WDTを再起動するとともに、新たなID「3」を前回IDとして受信状況12Aに保存する。これにより、WDTの計時がリセットされて、時刻T2から監視時間Twの計時が新たに開始される。この後、一連の周期処理が終了し、新たな周期の到来に応じて、繰り返し実行される。
【0051】
[暴走発生時]
次に、
図5を参照して、監視対象デバイス20のプログラム動作のうち、周期処理で暴走が発生した暴走発生時について説明する。
図5は、第1の実施の形態にかかる動作監視例(暴走発生時)を示すシーケンス図である。
監視動作の開始時点において、動作監視装置10は、受信状況12Aの前回IDを「0」(ゼロ)に初期化し、WDTを起動する。また、監視対象デバイス20は、前述の
図2に示したプログラム22Pの周期処理に基づいて、プログラム動作を開始する。
【0052】
図5に示すように、時刻T1において、周期処理内に配置されているクリア処理(ID=1)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「1」で前回ID「0」とは不一致であるため、動作監視装置10は、WDTを再起動するとともに、新たなID「1」を前回IDとして受信状況12Aに保存する。これにより、WDTの計時がリセットされて、時刻T1から監視時間Twの計時が新たに開始される。
【0053】
続く時刻T2において、周期処理内に配置されているクリア処理(ID=2)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「1」とは不一致であるため、動作監視装置10は、WDTを再起動するとともに、新たなID「2」を前回IDとして受信状況12Aに保存する。これにより、WDTの計時がリセットされて、時刻T2から監視時間Twの計時が新たに開始される。
【0054】
この後、時刻T21において、監視対象デバイス20のプログラム動作のうち、クリア処理(ID=2)を含む範囲で暴走が発生したものとする。これにより、クリア処理(ID=2)が繰り返し実行されて、正常動作時と同様に、クリア指示が送信されることになる。
【0055】
このため、続く時刻T3において、クリア処理(ID=2)により送信されたクリア指示を、監視対象デバイス20から受信した場合、動作監視装置10は、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、WDTを再起動せず、前回ID「2」の更新もしない。これにより、WDTがリセットされず、時刻T2からの監視時間Twの計時が継続される。
【0056】
したがって、この後、時刻T4において、時刻T2から監視時間Twが経過したため、WDTがタイムアップする。これに応じて動作監視装置10は、監視対象デバイス20のプログラム動作で異常が発生したことを検出する。これにより、動作監視装置10が、リセット指示を監視対象デバイス20に送信した場合、監視対象デバイス20のプログラム動作がリセットされて、再起動または停止されるため、暴走による不具合を回避または抑制できる。
【0057】
[第1の実施の形態の効果]
このように、本実施の形態は、記憶回路12で、監視対象デバイス20から受信したクリア指示に関する受信状況12Aを記憶しておき、制御回路13が、監視対象デバイス20からのクリア指示に基づき受信状況12Aを生成して記憶回路12に保存し、監視対象デバイス20から新たなクリア指示を受信した場合、記憶回路12の受信状況12Aに含まれる新たなクリア指示の新たなIDに関する受信状況に基づいて、WDTを用いたプログラム動作の監視を行うようにしたものである。
【0058】
一般に、WDTを用いて監視対象デバイス20でのプログラム動作を監視する場合、プログラム動作に用いるプログラム22P内に多数のクリア処理を分散配置して、監視時間Twより短い間隔でクリア指示を動作監視装置10へ送信して、WDTを再起動する必要がある。正常動作時には、クリア指示は、異なるクリア処理に基づいて送信されるため、同一IDのクリア指示が継続して送信されることはない。一方、いずれかのクリア処理を含む範囲で暴走が発生した場合、同一IDのクリア指示が継続して送信されることになる。
【0059】
本発明は、このような正常動作時と暴走発生時における、クリア指示の受信状況の違いに着目し、新たなクリア指示を受信した場合、記憶回路12の受信状況12Aに含まれる新たなクリア指示の新たなIDに関する受信状況に基づいて、WDTの再起動を制御(実施または回避)するようにしたものである。
【0060】
具体的には、受信状況12Aは、最後に受信したクリア指示のIDを示す前回IDを含み、制御回路13は、新たなクリア指示を受信した場合、当該新たなクリア指示の新たなIDを、記憶回路12の受信状況12Aが示す前回IDと比較し、得られた比較結果に基づいてWDTの再起動に関する要否を判定するようにしたものである。この際、制御回路13は、新たなIDが前回IDと不一致である場合、新たなクリア指示に応じたWDTの再起動を実施し、新たなIDが前回IDと一致した場合、新たなクリア指示に応じたWDTの再起動を回避するようにしたものである。
【0061】
これにより、従来のようなIDでクリア指示を識別しない場合には、新たなクリア指示が前回のクリア指示と同じクリア処理で送信されたものであっても、WDTが再起動されてしまうため、プログラム動作の異常発生が検出される。一方、本発明によれば、新たなクリア指示が前回のクリア指示と同じクリア処理で送信されたものであれば、新たなIDが前回IDと一致するため、新たなクリア指示に応じたWDTの再起動が回避される。したがって、WDTがタイムアップするため、プログラム動作の異常発生を検出することができ、結果として、監視対象デバイス20でのプログラム動作を正確に監視することが可能となる。
【0062】
[第2の実施の形態]
次に、本発明の第2の実施の形態にかかる動作監視装置10について説明する。
監視対象デバイス20で実行されるプログラム22Pには、周期処理内に繰り返し処理を含む場合がある。
図6は、プログラムの処理例(周期処理+繰り返し処理)を示す説明図である。
図6の周期処理において、「処理A」と「処理B」の間に「クリア処理(ID=1)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「1」を含むクリア指示が動作監視装置10に送信される。
【0063】
また、
図6の周期処理において、「処理B」と「処理D」の間に「繰り返し処理」が設けられている。「繰り返し処理」は、指定された条件が成立するまで、同じ処理を繰り返し実行する処理である。この「繰り返し処理」には、処理Cの後に「クリア処理(ID=2)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「2」を含むクリア指示が動作監視装置10に送信される。
また、
図6の周期処理において、「処理D」の後ろに「クリア処理(ID=3)」が配置されており、このクリア処理により、クリア指示を識別するためのIDとして「3」を含むクリア指示が動作監視装置10に送信される。
【0064】
図6に示すように、繰り返し処理内にクリア処理(ID=2)を配置した場合、正常動作時においても、IDが「2」であるクリア指示が監視対象デバイス20から動作監視装置10へ送信される。一方、プログラム動作のうち、クリア処理(ID=2)を含む範囲で暴走が発生した場合、上記と同様にIDが「2」であるクリア指示が監視対象デバイス20から動作監視装置10へ送信される。したがって、単に、新たなIDと前回IDとの一致・不一致を確認するだけでは、正常動作時と異常発生時とを区別することができない。
【0065】
この際、正常動作時において、最初にクリア処理(ID=2)を実行した時点から、繰り返し処理を終了して、次のクリア処理(ID=3)を実行する時点までの時間長が、監視時間Twより短い場合、前述した第1の実施の形態を用いれば、正常動作と異常発生を区別することができる。これは、最初にクリア処理(ID=2)を実行した後、繰り返し処理内で実行されるクリア処理(ID=2)によるWDTの再起動を回避しても、繰り返し処理中にWDTがタイムアップすることはなく、その後のクリア処理(ID=3)が実行されない場合、WDTがタイムアップして異常発生が検出されるからである。
【0066】
しかし、正常動作時において、最初にクリア処理(ID=2)を実行した時点から、繰り返し処理を終了して、次のクリア処理(ID=3)を実行する時点までの時間長が、監視時間Twより長い場合、前述した第1の実施の形態を用いても、正常動作と異常発生を区別することはできない。これは、最初にクリア処理(ID=2)を実行した後、繰り返し処理内で実行されるクリア処理(ID=2)によるWDTの再起動を回避した場合、繰り返し処理中にWDTがタイムアップするからである。
【0067】
ここで、プログラム動作自体が一定周期で繰り返される場合、正常動作時であれば、繰り返し処理が実行される回数は、ある上限の範囲内となる。一方、暴走発生時、繰り返し処理は、上限の範囲を超えて実行される。本実施の形態は、このような正常動作時と暴走発生時における、繰り返し処理の実行回数の違いに着目し、同一IDのクリア指示が継続して受信された回数を示す継続回数に基づいて、異常発生の有無を判定するようにしたものである。
【0068】
すなわち、本実施の形態において、記憶回路12の受信状況12Aは、受信したクリア指示のIDが継続して同一である回数を示す継続回数を含んでいる。
また、制御回路13は、新たなクリア指示を受信した場合、受信状況12Aが示す、当該新たなクリア指示の新たなIDに関する継続回数を、当該継続回数の上限を示す継続しきい値と比較し、得られた比較結果に基づいて前記プログラム動作における異常発生の有無を判定するように構成されている。
【0069】
具体的には、制御回路13の監視制御部13Bは、前記継続回数が前記継続しきい値を上回った場合、前記プログラム動作において異常発生ありと判定し、前記継続回数が前記継続しきい値以下である場合、前記プログラム動作において異常発生ありと判定するように構成されている。
この際、継続しきい値は、正常動作時に繰り返し実行されるクリア指示が許可されている回数、すなわちクリア指示の上限回数であり、アプリケーションに合わせて予め設定すればよい。また、継続回数を用いた異常発生有無判定を適用するIDは、繰り返し処理内に配置したクリア指示のIDに限定してもよい。
なお、本実施の形態にかかる動作監視装置10および監視対象デバイス20における、その他の構成については、第1の実施の形態と同様であり、ここでの詳細な説明は省略する。
【0070】
[第2の実施の形態の動作]
次に、
図7を参照して、本実施の形態にかかる動作監視装置10の動作について説明する。
図7は、第2の実施の形態にかかる動作監視処理を示すフローチャートである。
動作監視装置10の制御回路13は、入力された監視開始要求に応じて、
図7の動作監視処理を実行することにより、監視対象デバイス20でのプログラム動作の監視を行う。
【0071】
まず、制御回路13において、監視制御部13Bは、WDT(13A)を起動し(ステップS200)、記憶回路12の受信状況12Aに含まれる前回IDと継続回数を初期化する(ステップS201)。
次に、監視制御部13Bは、監視対象デバイス20から新たなクリア指示を受信したか確認し(ステップS202)、受信していない場合(ステップS202:NO)、後述するステップS210へ移行する。
【0072】
一方、ステップS202において、新たなクリア指示を受信した場合(ステップS202:YES)、監視制御部13Bは、新たなクリア指示に含まれる新たなIDを、受信状況12Aに含まれている前回IDと比較する(ステップS203)。
ここで、新たなIDが前回IDと不一致である場合(ステップS203:YES)、監視制御部13Bは、新たなIDを前回IDとして受信状況12Aに保存するとともに(ステップS204)、受信状況12Aの継続回数を初期化した後(ステップS205)、WDTをクリアして再起動し(ステップS206)、後述するステップS210へ移行する。
【0073】
一方、ステップS203において、新たなIDが前回IDと一致している場合(ステップS203:NO)、監視制御部13Bは、受信状況12Aの継続回数をインクリメント(+1)した後(ステップS207)、その継続回数と、継続回数の上限を示す継続しきい値とを比較する(ステップS208)。
ここで、継続回数が継続しきい値以下である場合(ステップS208:NO)、正常動作の範囲内であるため、ステップS206へ移行する。一方、継続回数が継続しきい値を超えている場合(ステップS208:YES)、正常動作の範囲外であるため、後述するステップS210へ移行する。
【0074】
ステップS210において、監視制御部13Bは、WDTがタイムアップしたか確認し(ステップS210)、タイムアップしていない場合(ステップS210:NO)、前述したステップS202へ戻る。
【0075】
一方、WDTがタイムアップした場合(ステップS210:YES)、監視対象デバイス20のプログラム動作に異常が発生したと判定し、監視対象デバイス20に対してリセット指示を出力した後(ステップS211)、一連の動作監視処理を終了する。
【0076】
[第2の実施の形態の動作例]
次に、本実施の形態にかかる動作監視装置10の動作例について説明する。以下では、前述の
図6のプログラム22Pに基づいて、監視対象デバイス20がプログラム動作を行う場合を例とし、繰り返し処理が正常に実行された場合と、繰り返し処理で暴走が発生した場合について、それぞれ説明する。
【0077】
[正常動作時]
まず、
図8を参照して、監視対象デバイス20のプログラム動作のうち、繰り返し処理が正常である正常動作時について説明する。
図8は、第2の実施の形態にかかる動作監視例(正常動作時)を示すシーケンス図である。
監視動作の開始時点において、動作監視装置10は、受信状況12Aの前回IDを「0」(ゼロ)に初期化し、WDTを起動する。また、監視対象デバイス20は、前述の
図6に示したプログラム22Pの周期処理に基づいて、プログラム動作を開始する。なお、継続しきい値THは「3」に設定されているものとする。
【0078】
図8に示すように、時刻T1において、監視対象デバイス20のプログラム動作が周期処理を実行している。この時点で、周期処理内に配置されているクリア処理により送信されたクリア指示(ID=1)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「1」で前回ID「0」とは不一致であるため、動作監視装置10は、新たなID「1」を前回IDとして受信状況12Aに保存し、受信状況12Aの継続回数CNTを「1」に更新する。これにより、時刻T1から継続回数CNTの計数が新たに開始される。
【0079】
続く時刻T2において、監視対象デバイス20のプログラム動作が繰り返し処理に移行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「1」とは不一致であるため、動作監視装置10は、新たなID「1」を前回IDとして受信状況12Aに保存し、受信状況12Aの継続回数CNTを「1」に更新する。これにより、時刻T1から継続回数CNTの計数が新たに開始される。
【0080】
次の時刻T3において、監視対象デバイス20のプログラム動作が繰り返し処理を実行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、受信状況12Aの継続回数CNTをインクリメントして「2」に更新する。この後、動作監視装置10は、継続回数CNT「2」を確認し、継続しきい値TH「3」以下であるため、プログラム動作は正常と判定する。これにより、時刻T2から継続回数CNTの計数が継続される。
【0081】
続く時刻T4において、監視対象デバイス20のプログラム動作が繰り返し処理を実行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=3)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、受信状況12Aの継続回数CNTをインクリメントして「3」に更新する。この後、動作監視装置10は、継続回数CNT「3」を確認し、継続しきい値TH「3」以下であるため、プログラム動作は正常と判定する。これにより、時刻T2から継続回数CNTの計数が継続される。
【0082】
続く時刻T5において、監視対象デバイス20のプログラム動作が繰り返し処理を終了して周期処理に移行している。この時点で、周期処理内に配置されているクリア処理により送信されたクリア指示(ID=3)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「3」で前回ID「2」とは不一致であるため、動作監視装置10は、新たなID「3」を前回IDとして受信状況12Aに保存し、受信状況12Aの継続回数CNTを「1」に更新する。これにより、時刻T5から継続回数CNTの計数が新たに開始される。この後、一連の周期処理が終了し、新たな周期の到来に応じて、繰り返し実行される。
【0083】
[暴走発生時]
次に、
図9を参照して、監視対象デバイス20のプログラム動作のうち、繰り返し処理で暴走が発生した暴走発生時について説明する。
図9は、第2の実施の形態にかかる動作監視例(暴走発生時)を示すシーケンス図である。
監視動作の開始時点において、動作監視装置10は、受信状況12Aの前回IDを「0」(ゼロ)に初期化し、WDTを起動する。また、監視対象デバイス20は、前述の
図6に示したプログラム22Pの周期処理に基づいて、プログラム動作を開始する。なお、継続しきい値THは「3」に設定されているものとする。
【0084】
図9に示すように、時刻T1において、監視対象デバイス20のプログラム動作が周期処理を実行している。この時点で、周期処理内に配置されているクリア処理により送信されたクリア指示(ID=1)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「1」で前回ID「0」と不一致であるため、動作監視装置10は、新たなID「1」を前回IDとして受信状況12Aに保存し、受信状況12Aの継続回数CNTを「1」に更新する。これにより、時刻T1から継続回数CNTの計数が新たに開始される。
【0085】
続く時刻T2において、監視対象デバイス20のプログラム動作が繰り返し処理に移行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「1」とは不一致であるため、動作監視装置10は、新たなID「1」を前回IDとして受信状況12Aに保存し、受信状況12Aの継続回数CNTを「1」に更新する。これにより、時刻T2から継続回数CNTの計数が新たに開始される。
【0086】
続く時刻T3において、監視対象デバイス20のプログラム動作が繰り返し処理に移行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、受信状況12Aの継続回数CNTをインクリメントして「2」に更新する。この後、動作監視装置10は、継続回数CNT「2」を確認し、継続しきい値TH「3」以下であるため、プログラム動作は正常と判定する。これにより、時刻T2からの継続回数CNTの計数が継続される。
【0087】
この後、時刻T31において、監視対象デバイス20のプログラム動作で、例えば繰り返し処理の終了判定に用いるパラメータが異常となるなどの原因により、繰り返し処理で暴走が発生したものとする。これにより、繰り返し処理内に配置されたクリア処理が繰り返し実行されて、正常動作時と同様に、クリア指示が送信されることになる。
【0088】
すなわち、続く時刻T4において、監視対象デバイス20のプログラム動作が暴走して繰り返し処理を実行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、受信状況12Aの継続回数CNTをインクリメントして「3」に更新する。この後、動作監視装置10は、継続回数CNT「3」を確認し、継続しきい値TH「3」以下であるため、プログラム動作は正常と判定する。これにより、時刻T2からの継続回数CNTの計数が継続される。
【0089】
この後、時刻T5においても、監視対象デバイス20のプログラム動作が暴走して繰り返し処理を実行している。この時点で、繰り返し処理内に配置されているクリア処理により送信されたクリア指示(ID=2)を、監視対象デバイス20から受信した場合、動作監視装置10は、WDTを再起動するとともに、クリア指示の新たなIDを受信状況12Aの前回IDと比較する。この場合、新たなIDが「2」で前回ID「2」と一致するため、動作監視装置10は、受信状況12Aの継続回数CNTをインクリメントして「4」に更新する。この後、動作監視装置10は、継続回数CNT「4」を確認し、継続しきい値TH「3」を超えているため、プログラム動作で異常が発生したことを検出する。これにより、動作監視装置10が、リセット指示を監視対象デバイス20に送信した場合、監視対象デバイス20のプログラム動作がリセットされて、再起動または停止されるため、暴走による不具合を回避または抑制できる。
【0090】
[第2の実施の形態の効果]
このように、本実施の形態は、受信状況12Aに、受信したクリア指示のIDが継続して同一である回数を示す継続回数を含み、制御回路13が、新たなクリア指示を受信した場合、受信状況12Aが示す、当該新たなクリア指示の新たなIDに関する継続回数を、当該継続回数の上限を示す継続しきい値と比較し、得られた比較結果に基づいてプログラム動作における異常発生の有無を判定するようにしたものである。
具体的には、制御回路13が、継続回数が継続しきい値を上回った場合、プログラム動作において異常発生ありと判定し、継続回数が継続しきい値以下である場合、プログラム動作において異常発生なしと判定するようにしたものである。
【0091】
これにより、プログラム22Pに繰り返し処理が含まれている場合でも、プログラム動作の異常発生を検出することができ、結果として、監視対象デバイスでのプログラム動作を正確に監視することが可能となる。なお、繰り返し処理内に複数のクリア指示を配置する場合には、これらクリア指示で同一のIDを用いれば、本実施の形態で監視対象デバイス20でのプログラム動作を監視することもできる。
【0092】
[第3の実施の形態]
次に、本発明の第3の実施の形態にかかる動作監視装置10について説明する。
前述した第2の実施の形態では、
図6に示したように、周期処理内に繰り返し処理が含まれている場合について説明した。この際、繰り返し処理内には、同一IDを持つクリア処理だけを配置した場合を例として説明した。
【0093】
しかし、繰り返し処理の処理時間が監視時間Twより長い場合、複数のクリア処理を繰り返し処理内に配置する必要がある。この際、これらクリア処理に異なるIDを付与しておく必要がある場合もある。このようなケースでは、例えば繰り返し処理の終了判定に用いるパラメータが異常となるなどの原因により、繰り返し処理単位で暴走が発生した場合、クリア指示のIDが継続せず、第2の実施の形態では、プログラム動作の異常を検出できない。
【0094】
本実施の形態は、受信状況12Aに、受信したクリア指示からそれぞれのIDが一定の許容時間内に検出された回数を示す検出回数を含み、制御回路13が、新たなクリア指示を受信した場合、受信状況12Aが示す、当該新たなクリア指示の新たなIDに関する検出回数を、当該検出回数の上限を示す検出しきい値と比較し、得られた比較結果に基づいてプログラム動作における異常発生の有無を判定するように構成されている。
【0095】
具体的には、制御回路13は、検出回数が検出しきい値を上回った場合、プログラム動作において異常発生ありと判定し、検出回数が検出しきい値以下である場合、プログラム動作において異常発生なしと判定するように構成されている。
この際、許容時間の時間長については、例えば監視時間Twを用いるなど、アプリケーションに合わせて予め設定すればよい。また、最後に受信したクリア指示から許容時間だけ遡って、当該クリア指示と同一IDのクリア指示を受信した数を検出回数として計数すればよい。
【0096】
また、検出しきい値は、正常動作時において許容時間内に繰り返し実行されるクリア指示が許可されている回数、すなわちクリア指示の上限回数であり、アプリケーションに合わせて予め設定すればよい。また、検出回数を用いた異常発生有無判定を適用するIDは、繰り返し処理内に配置したクリア指示のIDに限定してもよい。
なお、本実施の形態にかかる動作監視装置10および監視対象デバイス20における、その他の構成については第1の実施の形態と同様であり、ここでの詳細な説明は省略する。また、第2の実施の形態の継続回数および継続しきい値を、検出回数および検出しきい値に置換すれば、両者の処理動作はほぼ同様であり、ここでの詳細な説明は省略する。
【0097】
これにより、繰り返し処理の処理時間が監視時間Twより長く、複数のクリア処理が繰り返し処理内に配置したプログラムにおいて、繰り返し処理単位で暴走が発生した場合でも、IDごとの検出回数を検出しきい値と比較することにより、プログラム動作の異常発生を検出することができ、結果として、監視対象デバイス20でのプログラム動作を正確に監視することが可能となる。
【0098】
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【符号の説明】
【0099】
1…動作監視システム、10…動作監視装置、11…入出力I/F、12…記憶回路、12A…受信状況、13…制御回路、13A…監視タイマ(WDT)、13B…監視制御部、20…監視対象デバイス、21…入出力I/F、22…記憶回路、22P…プログラム、23…処理回路、30…上位装置、L1,L2…通信回線。