(57)【要約】【課題】コンピュータの異常を精度よく診断する。【解決手段】ＣＰＵ（３１）は、イベントログをイベントログ部５１に書き込む。ＣＰＵ（３１）の異常をＷＤＴ（４１）が検知すると、バックアップ部（４２）がバックアップデータをバックアップデータ部（５４）に書き込む。バックアップ部（４２）は、イベントログとバックアップデータとを対応付ける、ＣＰＵ（３１）の起動回数をバックアップデータに追加する。【選択図】図３
2019152995.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ部および不揮発性記憶部を備えるコンピュータであって、
前記プロセッサ部の異常を検知する異常検知部と、
該異常検知部が異常を検知すると、前記コンピュータが有する情報の少なくとも一部をバックアップ情報として前記不揮発性記憶部に書き込むバックアップ部とを備えており、
前記プロセッサ部は、該プロセッサ部にて発生するイベント情報を時系列で含むログ情報を前記不揮発性記憶部に書き込んでおり、
前記バックアップ部は、前記ログ情報と前記バックアップ情報とを対応付けるための情報である対応付け用情報を前記バックアップ情報に追加することを特徴とするコンピュータ。
【請求項２】
前記対応付け用情報は、前記プロセッサ部が起動した回数を示す起動回数情報であることを特徴とする請求項１に記載のコンピュータ。
【請求項３】
前記プロセッサ部は、起動時に前記起動回数情報を前記不揮発性記憶部に記憶しており、
前記バックアップ部は、前記異常検知部が異常を検知すると、前記不揮発性記憶部から前記起動回数情報を読み出して前記バックアップ情報に追加することを特徴とする請求項２に記載のコンピュータ。
【請求項４】
前記対応付け用情報は、前記異常を検知した日時を示すタイムスタンプであることを特徴とする請求項１に記載のコンピュータ。
【請求項５】
前記異常検知部が異常を検知すると、前記プロセッサ部を再起動させるリセット部をさらに備えることを特徴とする請求項１から４までの何れか１項に記載のコンピュータ。
【請求項６】
前記不揮発性記憶部には、前記異常検知部が最近検知した複数回の異常にそれぞれ対応する複数のバックアップ情報が書き込まれていることを特徴とする請求項１から５までの何れか１項に記載のコンピュータ。
【請求項７】
前記バックアップ部は、前記不揮発性記憶部へのアクセス権をリセットした後に、前記バックアップ情報を前記不揮発性記憶部に書き込むことを特徴とする請求項１から６までの何れか１項に記載のコンピュータ。
【請求項８】
プロセッサ部および不揮発性記憶部を備えるコンピュータの制御方法であって、
前記プロセッサ部にて発生するイベント情報を時系列で含むログ情報を前記不揮発性記憶部に書き込むステップと、
前記プロセッサ部の異常を検知する異常検知ステップと、
該異常検知ステップにて異常が検知されると、前記コンピュータが有する情報の少なくとも一部をバックアップ情報として前記不揮発性記憶部に書き込むバックアップステップとを含んでおり、
前記バックアップステップは、前記ログ情報と前記バックアップ情報とを対応付けるための情報である対応付け用情報を前記バックアップ情報に追加することを特徴とするコンピュータの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータおよびその制御方法に関する。
【背景技術】
【０００２】
コンピュータの異常を、ハードウェア構成のウォッチドックタイマ（WatchDog Timer、以下「ＷＤＴ」と略称する。）で監視することが知られている（例えば特許文献１を参照）。また、前記コンピュータのプロセッサの異常を前記ＷＤＴにより検知した時に、各種のデータを揮発性メモリから不揮発性メモリにバックアップすることが知られている（例えば特許文献２を参照）。バックアップされたデータは、復元のために不揮発性メモリから揮発性メモリに書き込まれたり、異常の分析のために上位の管理装置に送信されたりする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−０４０６９８号公報
【特許文献２】特開２０１４−０８１７００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
異常の原因となる事象には、異常を検知する前には発生しているが、異常を検知した時には既に消滅している場合もあり得る。このような場合、前記バックアップされたデータのみでは、異常を診断するには十分とは言い難い。
【０００５】
本開示の一態様は、前記課題を解決するためになされたものであり、その目的は、コンピュータの異常を精度よく診断することにある。
【課題を解決するための手段】
【０００６】
前記の課題を解決するために、本開示のさらに別の態様に係るコンピュータは、プロセッサ部および不揮発性記憶部を備えるコンピュータであって、前記プロセッサ部の異常を検知する異常検知部と、該異常検知部が異常を検知すると、前記コンピュータが有する情報の少なくとも一部をバックアップ情報として前記不揮発性記憶部に書き込むバックアップ部とを備えており、前記プロセッサ部は、該プロセッサ部にて発生するイベント情報を時系列で含むログ情報を前記不揮発性記憶部に書き込んでおり、前記バックアップ部は、前記ログ情報と前記バックアップ情報とを対応付けるための情報である対応付け用情報を前記バックアップ情報に追加するものである。
【０００７】
また、前記の課題を解決するために、本開示の他の態様に係るコンピュータの制御方法は、プロセッサ部および不揮発性記憶部を備えるコンピュータの制御方法であって、前記プロセッサ部にて発生するイベント情報を時系列で含むログ情報を前記不揮発性記憶部に書き込むステップと、前記プロセッサ部の異常を検知する異常検知ステップと、該異常検知ステップにて異常が検知されると、前記コンピュータが有する情報の少なくとも一部をバックアップ情報として前記不揮発性記憶部に書き込むバックアップステップとを含んでおり、前記バックアップステップは、前記ログ情報と前記バックアップ情報とを対応付けるための情報である対応付け用情報を前記バックアップ情報に追加する方法である。
【０００８】
前記の構成および方法によると、ログ情報とバックアップ情報とを対応付けるための情報である対応付け用情報が前記バックアップ情報に追加される。従って、前記コンピュータを診断する場合、プロセッサ部の異常を検知した時の情報であるバックアップ情報だけでなく、プロセッサ部にて発生するイベント情報を時系列で含むログ情報とを利用することができる。その結果、前記コンピュータの異常を精度よく診断することができる。
【０００９】
なお、前記バックアップ情報は、前記コンピュータの動作状態を示す情報など、前記コンピュータを診断するのに必要な情報であることが好ましい。
【００１０】
前記コンピュータでは、前記対応付け用情報は、前記プロセッサ部が起動した回数を示す起動回数情報であってもよい。前記起動回数情報は、通常、前記プロセッサ部の起動時に前記ログ情報に含まれる。従って、前記起動回数にて前記コンピュータが起動した時点以降の前記ログ情報を前記バックアップ情報に対応付けることができる。
【００１１】
ところで、前記起動回数情報は、前記プロセッサ部が有する情報である。このため、前記プロセッサ部に異常が発生した場合、前記起動回数情報を取得できない虞がある。そこで、前記プロセッサ部は、起動時に前記起動回数情報を前記不揮発性記憶部に記憶しており、前記バックアップ部は、前記異常検知部が異常を検知すると、前記不揮発性記憶部から前記起動回数情報を読み出して前記バックアップ情報に追加することが好ましい。これにより、前記起動回数情報を前記バックアップ情報に確実に追加することができる。
【００１２】
前記コンピュータでは、前記異常を検知した日時を示すタイムスタンプであってもよい。前記ログ情報には、通常、前記イベントが発生した日時が含まれている。従って、前記タイムスタンプが示す日時以前の前記ログ情報を前記バックアップ情報に対応付けることができる。
【００１３】
ところで、前記プロセッサ部は、前記異常により再起動できないことがあり得る。そこで、前記コンピュータは、前記異常検知部が異常を検知すると、前記プロセッサ部を再起動させるリセット部をさらに備えてもよい。この場合、前記プロセッサ部を確実に再起動することができる。
【００１４】
前記コンピュータでは、前記不揮発性記憶部には、前記異常検知部が最近検知した複数回の異常にそれぞれ対応する複数のバックアップ情報が書き込まれていてもよい。この場合、前記複数のバックアップ情報のそれぞれを、前記ログ情報に対応付けることができる。従って、前記ログ情報と前記複数のバックアップ情報とを用いてコンピュータを診断できるので、前記コンピュータの異常をさらに精度よく診断することができる。
【００１５】
ところで、前記プロセッサ部が前記不揮発性記憶部にアクセスしている時に前記プロセッサ部に異常が発生する場合があり得る。この場合、前記バックアップ部が前記バックアップ情報を前記不揮発性記憶部に書き込めない可能性がある。
【００１６】
そこで、前記バックアップ部は、前記不揮発性記憶部へのアクセス権をリセットした後に、前記バックアップ情報を前記不揮発性記憶部に書き込んでもよい。この場合、前記バックアップ部が前記バックアップ情報を前記不揮発性記憶部に確実に書き込むことができる。
【００１７】
なお、前記不揮発性記憶部へのアクセス権をリセットする方法としては、前記プロセッサを再起動する、前記プロセッサ部および前記バックアップ部と前記不揮発性記憶部との間に設けられたバスをリセットする、前記不揮発性記憶部の動作をリセットする、等が挙げられる。
【発明の効果】
【００１８】
本開示の一態様によれば、コンピュータの異常を精度よく診断できるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係るプログラマブルコントローラの診断システムの適用場面の一例を示す概略のブロック図である。
【図２】前記プログラマブルコントローラのハードウェア構成の一例を示す回路図である。
【図３】前記プログラマブルコントローラの詳細な構成の一例を示すブロック図である。
【図４】前記プログラマブルコントローラにおいて、ＣＰＵがフラッシュメモリに書き込まれるイベントログの一例をテキスト形式で示す図である。
【図５】前記プログラマブルコントローラにおけるＥＥＰＲＯＭのフォーマットの一例を示す図である。
【図６】前記プログラマブルコントローラにおける動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、詳細に説明する。
【００２１】
§１  適用例
図１は、本実施形態に係るプログラマブルコントローラ（Programmable Logic Controller、以下「ＰＬＣ」と略称する。）診断システムの適用場面の一例を示す概略のブロック図である。図１に示すように、ＰＬＣ診断システム１は、ＰＬＣ２（コンピュータ）と解析用デバイス３とを備えている。ＰＬＣ診断システム１において、ユーザは、ＰＬＣ２に異常が発生した場合に、各種データを解析用デバイス３によって解析することにより、ＰＬＣ２の上記異常を診断する。前記診断の例としては、異常の発生原因の特定、異常の発生確率の分析、などが挙げられる。
【００２２】
ＰＬＣ２にて異常が発生すると、ユーザは、ＰＬＣ２を再起動し、ＰＬＣ２に解析用デバイス３を、ＵＳＢ（Universal Serial Bus）ケーブル、ＬＡＮ（Local Area Network）ケーブル等のケーブルを介して接続する。そして、解析用デバイス３においてＰＬＣ２から必要なデータを取得し解析して、ＰＬＣ２の診断を行う。
【００２３】
図１に示すように、ＰＬＣ２は、イベントログ（ログ情報）とバックアップデータ（バックアップ情報）とを記憶している。前記イベントログは、ＰＬＣ２のＣＰＵ３１（図３を参照）にて発生するイベント情報を時系列で含むものである。また、前記バックアップデータは、ＰＬＣ２のＣＰＵ３１の異常を検知した時に前記診断に必要な情報をバックアップしたデータである。なお、ＰＬＣ２の詳細については後述する。
【００２４】
解析用デバイス３は、通常のＰＣ（Personal Computer）によって構成され、制御部４および入出力部５を備える。制御部４は、解析用デバイス３内の各種構成の動作を統括的に制御するものであり、例えばＣＰＵ（Central Processing Unit）およびメモリを含むコンピュータによって構成される。そして、各種構成の動作制御は、制御プログラムをコンピュータに実行させることによって行われる。
【００２５】
入出力部５は、ユーザと情報の入出力を行うものである。入出力部５は、タッチパネル、ディスプレイなどの入出力デバイスを備えている。
【００２６】
図１に示すように、制御部４は、ＰＬＣ２から前記イベントログおよび前記バックアップデータを取得する。ユーザは、前記イベントログおよび前記バックアップデータを適宜対応付けて、ＰＬＣ２において発生した異常の原因を診断する。
【００２７】
前記したように、ＰＬＣ２は、前記イベントログと前記バックアップデータとを対応付けるための情報である対応付け用情報を前記バックアップデータに追加している。これにより、ユーザは、前記対応付け用情報を用いて、前記イベントログと前記バックアップデータとを対応付けることができる。すなわち、ユーザは、前記異常を検知した時のデータであるバックアップデータだけでなく、ＣＰＵ３１にて発生するイベント情報を時系列で含むイベントログを用いてＰＬＣ２を診断することができる。その結果、ＰＬＣ２を精度よく診断することができる。
【００２８】
本実施形態では、ＰＬＣ２は、ＣＰＵ３１が起動した回数である起動回数（対応付け用情報、起動回数情報）を前記バックアップデータに追加している。前記起動回数は、通常、前記イベントログにも含まれている。従って、制御部４は、前記バックアップデータに含まれる起動回数にてＣＰＵ３１が起動した時点以降の前記イベントログを当該バックアップデータに対応付けることができる。
【００２９】
なお、ＰＬＣ２は、起動回数の代わりに、前記異常を検知した日時を示すタイムスタンプを前記バックアップデータに追加してもよい。前記イベントログには、通常、前記イベントが発生した日時が含まれている。従って、制御部４は、前記タイムスタンプが示す日時以前の前記イベントログを当該バックアップデータに対応付けることができる。その結果、ＰＬＣ２を精度よく診断することができる。
【００３０】
なお、ＰＬＣ２は、最近検知した複数回の前記異常にそれぞれ対応する複数のバックアップデータを記憶していてもよい。この場合、制御部４は、前記複数のバックアップデータをＰＬＣ２から取得し、前記複数のバックアップデータのそれぞれと前記イベントログとを対応付けることができる。その結果、ＰＬＣ２をさらに精度よく診断することができる。
【００３１】
§２  構成例
図２は、ＰＬＣ２のハードウェア構成の一例を示す回路図である。ＰＬＣ２は、マイクロプロセッサを内蔵し、ユーザが変更可能なプログラムによって機器を制御するものである。図２に示すように、ＰＬＣ２は、ＦＰＧＡ（Field-Programmable Gate Array）１１、フラッシュメモリ（登録商標）１２（不揮発性記憶部）、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory、登録商標）１３（不揮発性記憶部）、およびバス１４を備えている。
【００３２】
ＦＰＧＡ１１は、製造後にユーザが構成を設定できる集積回路である。本実施形態では、ＦＰＧＡ１１は、ＰＬＣ２の機能を１つのチップに集約したＳｏＣ（System on a Chip）型のＦＰＧＡである。ＦＰＧＡ１１は、ＦＰＧＡとして機能するＦＰＧＡ部２１と、プロセッサを備え、ＦＰＧＡ部２１を制御するＨＰＳ（Hard Processer System）部２２（プロセッサ部）とを備えている。
【００３３】
フラッシュメモリ１２およびＥＥＰＲＯＭ１３は、書き換え可能な不揮発性メモリの一種である。フラッシュメモリ１２に対しては、ＨＰＳ部２２がアクセス可能である。ＥＥＰＲＯＭ１３に対しては、ＦＰＧＡ部２１およびＨＰＳ部２２がバス１４を介してアクセス可能である。
【００３４】
図３は、ＰＬＣ２の詳細な構成の一例を示すブロック図である。図３に示すように、ＨＰＳ部２２は、ＣＰＵ３１、ＲＡＭ（Random Access Memory）３２、およびＩ／Ｏ（Input/Output）レジスタ３３を備えている。ＦＰＧＡ部２１は、ＷＤＴ４１（異常検知部）、バックアップ部４２、およびリセット指示部４３（リセット部）を備えている。
【００３５】
ところで、フラッシュメモリ１２は、ブロック単位で消去を行う必要があるが、ＥＥＰＲＯＭ１３に比べてメモリ容量を大きくすることができる。一方、ＥＥＰＲＯＭ１３は、新しいデータを書き込むだけで古いデータを書き換えることができる。従って、フラッシュメモリ１２は、比較的大きなデータ量のデータを書き込むために利用され、ＥＥＰＲＯＭ１３には、比較的小さなデータ量のデータを高速で書き込むために利用される。
【００３６】
そこで、本実施形態では、フラッシュメモリ１２は、比較的大きなデータ量であるイベントログが書き込まれるイベントログ部５１を備える。前記イベントログは、ＨＰＳ部２２にて発生するイベント情報を時系列で含むものである。また、ＥＥＰＲＯＭ１３は、比較的小さなデータ量である前記起動回数、バックアップ書込み回数、およびバックアップデータがそれぞれ書き込まれる起動回数部５２、書込み回数部５３、およびバックアップデータ部５４を備える。前記バックアップ書込み回数は、前記バックアップデータを書き込んだ回数である。なお、バックアップデータの詳細については後述する。
【００３７】
次に、ＨＰＳ部２２の各構成について説明する。ＣＰＵ３１は、ＨＰＳ部２２内の各種構成の動作を統括的に制御するものである。ＣＰＵ３１は、ＲＯＭ（図示せず）に記憶された制御プログラムを実行することにより前記制御を行う。ＲＡＭ３２は、揮発性メモリであり、作業用ファイル、テンポラリファイルなど、ＣＰＵ３１にて一時的に利用されるデータが記憶される。
【００３８】
図４は、ＣＰＵ３１が起動を開始してからフラッシュメモリ１２のイベントログ部５１に書き込まれるイベントログの一例をテキスト形式で示す図である。図４に示されるように、前記イベントログは、ログインデックスの情報（LogIndex）を含む。該ログインデックスの情報は、上記対応付け用情報であり、図４の例では、起動回数（00000016）である。ＣＰＵ３１は、起動時に起動回数を増分し、フラッシュメモリ１２のイベントログ部５１に書き込む。さらに、本実施形態では、ＣＰＵ３１は、前記起動回数をＥＥＰＲＯＭ１３にも書き込む。
【００３９】
また、前記イベントログは、記録開始時刻を示す情報（Start Time Data）を含む。図４の例では、上記記録開始時刻を示す情報として、図示しないＲＴＣ（Real Time Clock）、ＨＰＳ部２２、およびＦＰＧＡ部２１のそれぞれがカウントする時刻情報が含まれている。
【００４０】
また、前記イベントログには、ＣＰＵカウント（CPU count）とイベントＩＤ（ID name）とが対応付けられている。前記ＣＰＵカウントはイベントの発生時刻に対応し、前記イベントＩＤは、イベントを識別するものである。従って、ユーザは、前記イベントログを参照することにより、或る時刻にどのようなイベントが発生したかを把握することができる。
【００４１】
Ｉ／Ｏレジスタ３３は、ＨＰＳ部２２およびＦＰＧＡ部２１の双方がアクセス可能なレジスタである。なお、Ｉ／Ｏレジスタ３３は、ＦＰＧＡ部２１に設けてもよい。
【００４２】
次に、ＦＰＧＡ部２１の各構成について説明する。ＷＤＴ４１は、ＣＰＵ３１が正常に動作しているか否かを監視するデバイスである。ＷＤＴ４１は、ＣＰＵ３１から定期的に送信される信号（ＷＤＴクリア信号）を受信しており、所定の期間を経過してもＷＤＴクリア信号を受信しないことにより、ＣＰＵ３１に何らかの異常（プログラムハングアップなど）が発生していることを検知する。ＷＤＴ４１は、前記異常の発生を検知した旨をバックアップ部４２およびリセット指示部４３に通知する。
【００４３】
バックアップ部４２は、ＷＤＴ４１からの前記通知を受け取ると、バックアップデータを作成するものである。バックアップ部４２は、作成したバックアップデータをＥＥＰＲＯＭ１３のバックアップデータ部５４に書き込む。
【００４４】
リセット指示部４３は、ＷＤＴ４１からの前記通知を受け取ると、ＨＰＳ部２２をリセットするように或るデバイスに指示するものである。前記デバイスの例としては、電源デバイスのリセットＩＣが挙げられる。これにより、ＣＰＵ３１の異常によりＨＰＳ部２２を再起動できない場合でも、リセット指示部４３によりＨＰＳ部２２を確実に再起動することができる。
【００４５】
図５は、ＥＥＰＲＯＭ１３のフォーマットの一例を示す図である。図５の例では、ＥＥＰＲＯＭ１３は、起動回数部５２と、書込み回数部５３と、４つのバックアップデータ部５４とを備えている。起動回数部５２に記憶される起動回数は、２バイトのデータであり、上述のようにＣＰＵ３１から書き込まれる。
【００４６】
書込み回数部５３に記憶されるバックアップ書込み回数は、１バイトのデータである。バックアップ部４２は、バックアップデータを作成する場合に書込み回数部５３からバックアップ書込み回数を読み出す。また、バックアップ部４２は、作成したバックアップデータをＥＥＰＲＯＭ１３のバックアップデータ部５４に書き込むときに、前記バックアップ書込み回数を増分してＥＥＰＲＯＭ１３の書込み回数部５３に書き込む。
【００４７】
また、バックアップ部４２は、ＥＥＰＲＯＭ１３から読み出したバックアップ書込み回数に基づいて、バックアップデータを書き込むバックアップデータ部５４を変更している。具体的には、バックアップ部４２は、バックアップ書込み回数の下位２ビットが「００」、「０１」、「１０」、および「１１」である場合、それぞれ、１番目〜４番目のバックアップデータ部５４ａ〜５４ｄにバックアップデータを書き込む。これにより、最新（最近）の４つのバックアップデータをＥＥＰＲＯＭ１３に記憶することができる。
【００４８】
また、図５に示すように、各バックアップデータ部５４に記憶されるバックアップデータは、前記起動回数、ＦＰＧＡ部診断用情報、およびＨＰＳ部診断用情報を含んでいる。
【００４９】
ＦＰＧＡ部診断用情報は、所定サイズのデータであり、ＣＰＵ３１の異常を検知した場合に、解析用デバイス３がＰＬＣ２を診断するのに必要な情報であって、ＦＰＧＡ部２１にて収集可能な情報である。ＦＰＧＡ部診断用情報の例としては、ＦＰＧＡ部２１の内部モジュールの動作状態、外部信号の状態などが挙げられる。
【００５０】
ＨＰＳ部診断用情報は、所定サイズのデータであり、ＣＰＵ３１の異常を検知した場合に、解析用デバイス３が前記異常を診断するのに必要な情報であって、ＨＰＳ部２２にて収集可能な情報である。すなわち、ＨＰＳ部診断用情報は、ＨＰＳ部２２が有する情報の少なくとも一部である。ＨＰＳ部診断用情報は、ＣＰＵ３１にて実行されるソフトウェアが定義し、Ｉ／Ｏレジスタ３３に格納する。これにより、ＨＰＳ部診断用情報をＦＰＧＡ制御部３３のバックアップ部４２が取得することができる。
【００５１】
§３  動作例
図６は、ＰＬＣ２における動作の一例を示すシーケンス図である。まず、ＣＰＵ３１が起動すると（Ｔ１１）、起動回数をＥＥＰＲＯＭ１３の起動回数部５２に書き込む。次に、ＷＤＴ４１がＣＰＵ３１の監視を開始する（Ｔ２１）。すなわち、ＷＤＴ４１は、前記ＷＤＴクリア信号を受信してから所定の期間内に前記ＷＤＴクリア信号を再受信した場合、ＣＰＵ３１に異常が発生していないと判断する（Ｔ２２）。一方、ＷＤＴ４１は、前記ＷＤＴクリア信号を受信してから所定の期間内に前記ＷＤＴクリア信号を再受信しなかった場合、ＣＰＵ３１に異常が発生していると判断する（Ｔ２４）。これにより、バックアップ部４２は、ＨＰＳ部２２におけるＩ／Ｏレジスタ３３にアクセスしてＨＰＳ部診断用情報を取得する（Ｔ２５）。また、バックアップ部４２は、ＦＰＧＡ部診断用情報をＦＰＧＡ部２１から収集する。
【００５２】
次に、リセット指示部４３は、リセットを指示するリセット信号を電源部（Power Supply）のリセットＩＣ（Reset IC）に送信する（Ｔ２６）。これにより、ＨＰＳ部２２はリセットされる。
【００５３】
次に、バックアップ部４２は、バス１４（図２参照）を介してＥＥＰＲＯＭ１３をソフトウェアリセットする（Ｔ２７）。これは下記の理由による。
【００５４】
すなわち、ＣＰＵ３１がＥＥＰＲＯＭ１３にアクセスしている時にＣＰＵ３１に異常が発生する場合があり得る。この場合、バックアップ部４２が上記バックアップデータをＥＥＰＲＯＭ１３に書き込めないという問題点が発生する可能性がある。
【００５５】
そこで、バックアップ部４２は、ＣＰＵ３１に異常が発生していると判断した場合に、ＥＥＰＲＯＭ１３をソフトウェアリセットしている。これにより、ＥＥＰＲＯＭ１３へのアクセス権がリセットされ、バックアップ部４２は、後述のように、上記バックアップデータをＥＥＰＲＯＭ１３に確実に書き込むことができる。
【００５６】
なお、上記ステップＴ２７の代わりに、バックアップ部４２は、バス１４をリセットするように、バス１４のコントローラ（図示せず）に指示してもよい。また、上記ステップＴ２７は省略してもよい。この場合でも、上記ステップＴ２６によりＨＰＳ部２２がリセットされるので、いずれは上記問題点が解消されるからである。
【００５７】
次に、バックアップ部４２は、ＥＥＰＲＯＭ１３から起動回数およびバックアップ書込み回数を読み出し（Ｔ２８）、前記起動回数、前記ＦＰＧＡ部診断用情報、および前記ＨＰＳ部診断用情報を含むバックアップデータを作成する。次に、バックアップ部４２は、作成したバックアップデータを前記バックアップ書込み回数に基づくＥＥＰＲＯＭ１３のバックアップデータ部５４における領域に書き込む（Ｔ２９）。そして、バックアップ部４２は、前記バックアップ書込み回数をインクリメントして、ＥＥＰＲＯＭ１３の書込み回数部５３に書き込む（Ｔ３０）。
【００５８】
上述のように、ＣＰＵ３１は、起動時（Ｔ１１）に、起動回数をＥＥＰＲＯＭ１３の起動回数部５２に書き込み、バックアップ部４２は、ＣＰＵ３１に異常が発生したときにＥＥＰＲＯＭ１３から起動回数を読み出して（Ｔ２８）、該起動回数をバックアップデータに追加している。これにより、ＣＰＵ３１に異常が発生したとしても、ＣＰＵ３１が有する起動回数の情報をバックアップ部４２が取得することができる。従って、上記起動回数をバックアップデータに確実に追加することができる。
【００５９】
§４  変形例
なお、本実施形態では、バックアップ部４２は、起動回数の代わりに異常を検知した日時を示すタイムスタンプをバックアップデータに含めてもよい。この場合、ＣＰＵ３１がＥＥＰＲＯＭ１３に起動回数を書き込む必要がなくなる。一方、起動回数のデータ量は、図５の例のように、２バイトであるが、前記タイムスタンプは、通常、４バイトである。従って、バックアップデータ部５４のデータ量を増やす必要がある。
【００６０】
また、本実施形態では、解析用デバイス３の診断対象をＰＬＣ２としたが、これに限定されるものではない。例えばＥｔｈｅｒＣＡＴ（Ethernet（登録商標） for Control Automation Technology）用カプラなど、ＣＰＵを備える任意の電子機器に本発明を適用することができる。
【００６１】
また、本実施形態では、ＰＬＣ２は、上記イベントログおよび上記バックアップデータを、解析用デバイス３からの要求に基づき送信しているが、インターネット等の通信ネットワークを介してサーバに自動的に送信してもよい。この場合、解析用デバイス３は、上記イベントログおよび上記バックアップデータを上記サーバから取得すればよく、ＰＬＣ２にケーブルを介して接続しなくてもよい。
【００６２】
〔ソフトウェアによる実現例〕
ＰＬＣ２および解析用デバイス３の制御ブロック（特に制御部４、ＣＰＵ３１、およびバックアップ部４２）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【００６３】
後者の場合、ＰＬＣ２および解析用デバイス３は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、前記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、前記コンピュータにおいて、前記プロセッサが前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記プロセッサとしては、例えばＣＰＵを用いることができる。前記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、前記プログラムを展開するＲＡＭなどをさらに備えていてもよい。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して前記コンピュータに供給されてもよい。なお、本発明の一態様は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００６４】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００６５】
１  ＰＬＣ診断システム
２  ＰＬＣ（コンピュータ）
３  解析用デバイス
４  制御部
５  入出力部
１１  ＦＰＧＡ
１２  フラッシュメモリ（不揮発性記憶部）
１３  ＥＥＰＲＯＭ（不揮発性記憶部）
１４  バス
２１  ＦＰＧＡ部
２２  ＨＰＳ部（プロセッサ部）
３１  ＣＰＵ
３２  ＲＡＭ
３３  Ｉ／Ｏレジスタ
４１  ＷＤＴ（異常検知部）
４２  バックアップ部
４３  リセット指示部（リセット部）
５１  イベントログ部
５２  起動回数部
５３  回数部
５４、５４ａ〜５４ｄ  バックアップデータ部
【図１】
2019152995.tif 000003
【図２】
2019152995.tif 000004
【図３】
2019152995.tif 000005
【図４】
2019152995.tif 000006
【図５】
2019152995.tif 000007
【図６】
2019152995.tif 000008