(57)【要約】【課題】演算処理が停止した場合におけるそれまでの演算処理の再現性の向上を図る。【解決手段】制御装置のデータ管理部１７２は、モード選択部１７４が通常運転モードを選択している間、受信された入力データを、その入力順を特定可能にバックアップメモリ１５６に記憶し、モード選択部が再現運転モードを選択すると、入力データを受信する代わりにバックアップメモリに記憶された入力データを読み出し、演算部１７０に、読み出した入力データを入力順に参照させ、実行プログラムに基づいて状態変数および出力データを更新させる。【選択図】図３
2016224600.tif 000002
【特許請求の範囲】
【請求項１】
外部から入力データを受信する入力部と、
受信した前記入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
データを記憶するバックアップメモリと、
前記バックアップメモリに記憶されるデータを管理するデータ管理部と、
通常運転モードと、該通常運転モードを再現するための再現運転モードとを含む複数の運転モードから１の運転モードを選択するモード選択部と、
を備え、
前記データ管理部は、
前記モード選択部が前記通常運転モードを選択している間、受信された入力データを、その入力順を特定可能に前記バックアップメモリに記憶し、
前記モード選択部が前記再現運転モードを選択すると、入力データを受信する代わりに前記バックアップメモリに記憶された入力データを読み出し、前記演算部に、読み出した該入力データを前記入力順に参照させ、前記実行プログラムに基づいて前記状態変数および前記出力データを更新させることを特徴とする制御装置。
【請求項２】
外部から入力データを受信する入力部と、
受信した前記入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
データを記憶するバックアップメモリと、
受信された入力データを、その入力順を特定可能にバックアップメモリに記憶するデータ管理部と、
を備えることを特徴とする記憶装置。
【請求項３】
入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
複数の入力データを、その入力順を特定可能に記憶するバックアップメモリと、
前記バックアップメモリに記憶された入力データを読み出し、前記演算部に、読み出した該入力データを前記入力順に参照させ、前記実行プログラムに基づいて前記状態変数および前記出力データを更新させるデータ管理部と、
を備えることを特徴とする再現装置。
【請求項４】
外部から入力データを受信する入力部と、
受信した前記入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
データを記憶するバックアップメモリと、
前記バックアップメモリに記憶されるデータを管理するデータ管理部と、
通常運転モードと、該通常運転モードを再現するための再現運転モードとを含む複数の運転モードから１の運転モードを選択するモード選択部と、
を備え、
前記データ管理部は、
前記モード選択部が前記通常運転モードを選択している間、受信された入力データを、その入力順を特定可能に前記バックアップメモリに記憶するとともに、所定の記憶タイミングで、更新された状態変数を前記バックアップメモリに記憶し、
前記モード選択部が前記再現運転モードを選択すると、前記バックアップメモリに記憶された任意の記憶タイミングの状態変数を前記演算部に設定し、入力データを受信する代わりに前記バックアップメモリに記憶された該任意の記憶タイミング以降の入力データを読み出し、前記演算部に、読み出した該入力データを前記入力順に参照させ、前記実行プログラムに基づいて前記状態変数および前記出力データを更新させることを特徴とする制御装置。
【請求項５】
前記データ管理部は、前記状態変数を前記入力データより低頻度で前記バックアップメモリに記憶することを特徴とする請求項４に記載の制御装置。
【請求項６】
外部から入力データを受信する入力部と、
受信した前記入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
データを記憶するバックアップメモリと、
受信された入力データを、その入力順を特定可能にバックアップメモリに記憶するとともに、所定の記憶タイミングで、更新された状態変数を前記バックアップメモリに記憶するデータ管理部と、
を備えることを特徴とする記憶装置。
【請求項７】
入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、
更新された出力データを外部に送信する出力部と、
複数の入力データを、その入力順を特定可能に記憶するとともに、状態変数を記憶するバックアップメモリと、
前記バックアップメモリに記憶された任意の記憶タイミングの状態変数を前記演算部に設定し、前記バックアップメモリに記憶された該任意の記憶タイミング以降の入力データを読み出し、前記演算部に、読み出した該入力データを前記入力順に参照させ、前記実行プログラムに基づいて前記状態変数および前記出力データを更新させるデータ管理部と、
を備えることを特徴とする再現装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、過去の動作状態を再現するための制御装置、記憶装置、および、再現装置に関する。
【背景技術】
【０００２】
大規模な制御システムでは、システムの構築やメンテナンスの容易性の観点から、必要な機能を複数のモジュールに分散させたプログラマブルコントローラを採用することがある。プログラマブルコントローラは、例えば、ＣＰＵモジュール、通信モジュール、入出力モジュール、電源モジュールといった複数種類のモジュールで構成され、それぞれのモジュール数を調整可能とすることで、メンテナンスやシステムの拡張性を高めている。
【０００３】
プログラマブルコントローラでは、例えば、通信モジュールを通じてアプリケーションの実行プログラムがＣＰＵモジュールにダウンロードされ、ＣＰＵモジュールが、入出力モジュールから入力データを受信し、ダウンロードされた実行プログラムを用いて演算処理を実行し、その演算結果を、入出力モジュールを通じて下位の被制御機器に伝達する。
【０００４】
このようなプログラマブルコントローラにおいて、故障等、何らかの原因で演算処理が停止した場合、再度の停止を回避すべく、その原因が究明される。例えば、プログラマブルコントローラの出力データを順次記憶し、その出力データの変化をモニタリングして原因を解明する技術が開示されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２８２３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上述した特許文献１の技術では、過去の出力データの変動履歴は確認できるものの、内部状態の変動履歴までは確認できない。また、ユーザの操作等、入力データの内容や変動タイミングが不明瞭な場合に、演算処理が停止したときの状況を的確に再現することができなかった。
【０００７】
そこで、本発明は、このような課題に鑑み、演算処理が停止した場合におけるそれまでの演算処理の再現性の向上を図ることが可能な制御装置、記憶装置、および、再現装置を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の制御装置は、外部から入力データを受信する入力部と、受信した入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、データを記憶するバックアップメモリと、バックアップメモリに記憶されるデータを管理するデータ管理部と、通常運転モードと、通常運転モードを再現するための再現運転モードとを含む複数の運転モードから１の運転モードを選択するモード選択部と、を備え、データ管理部は、モード選択部が通常運転モードを選択している間、受信された入力データを、その入力順を特定可能にバックアップメモリに記憶し、モード選択部が再現運転モードを選択すると、入力データを受信する代わりにバックアップメモリに記憶された入力データを読み出し、演算部に、読み出した入力データを入力順に参照させ、実行プログラムに基づいて状態変数および出力データを更新させることを特徴とする。
【０００９】
上記課題を解決するために、本発明の記憶装置は、外部から入力データを受信する入力部と、受信した入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、データを記憶するバックアップメモリと、受信された入力データを、その入力順を特定可能にバックアップメモリに記憶するデータ管理部と、を備えることを特徴とする。
【００１０】
上記課題を解決するために、本発明の再現装置は、入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、複数の入力データを、その入力順を特定可能に記憶するバックアップメモリと、バックアップメモリに記憶された入力データを読み出し、演算部に、読み出した入力データを入力順に参照させ、実行プログラムに基づいて状態変数および出力データを更新させるデータ管理部と、を備えることを特徴とする。
【００１１】
上記課題を解決するために、本発明の他の制御装置は、外部から入力データを受信する入力部と、受信した入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、データを記憶するバックアップメモリと、バックアップメモリに記憶されるデータを管理するデータ管理部と、通常運転モードと、通常運転モードを再現するための再現運転モードとを含む複数の運転モードから１の運転モードを選択するモード選択部と、を備え、データ管理部は、モード選択部が通常運転モードを選択している間、受信された入力データを、その入力順を特定可能にバックアップメモリに記憶するとともに、所定の記憶タイミングで、更新された状態変数をバックアップメモリに記憶し、モード選択部が再現運転モードを選択すると、バックアップメモリに記憶された任意の記憶タイミングの状態変数を演算部に設定し、入力データを受信する代わりにバックアップメモリに記憶された任意の記憶タイミング以降の入力データを読み出し、演算部に、読み出した入力データを入力順に参照させ、実行プログラムに基づいて状態変数および出力データを更新させることを特徴とする。
【００１２】
データ管理部は、状態変数を入力データより低頻度でバックアップメモリに記憶するとしてもよい。
【００１３】
上記課題を解決するために、本発明の他の記憶装置は、外部から入力データを受信する入力部と、受信した入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、データを記憶するバックアップメモリと、受信された入力データを、その入力順を特定可能にバックアップメモリに記憶するとともに、所定の記憶タイミングで、更新された状態変数をバックアップメモリに記憶するデータ管理部と、を備えることを特徴とする。
【００１４】
上記課題を解決するために、本発明の他の再現装置は、入力データを参照し、所定の実行プログラムに基づいて状態変数および出力データを更新する演算部と、更新された出力データを外部に送信する出力部と、複数の入力データを、その入力順を特定可能に記憶するとともに、状態変数を記憶するバックアップメモリと、バックアップメモリに記憶された任意の記憶タイミングの状態変数を演算部に設定し、バックアップメモリに記憶された任意の記憶タイミング以降の入力データを読み出し、演算部に、読み出した入力データを入力順に参照させ、実行プログラムに基づいて状態変数および出力データを更新させるデータ管理部と、を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、演算処理が停止した場合におけるそれまでの演算処理の再現性の向上を図ることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】制御システムを構成する各装置の概略的な関係を示した外観図である。
【図２】制御システムの概略的な構成を示した説明図である。
【図３】ＣＰＵモジュールのハードウェア構成の一例を示す図である。
【図４】第１の実施形態の通常運転モードにおけるデータの流れを説明するタイミングチャートである。
【図５】データ管理部によって記憶されるデータを説明するための説明図である。
【図６】第１の実施形態の再現運転モードにおけるデータの流れを説明するタイミングチャートである。
【図７】第２の実施形態の通常運転モードにおけるデータの流れを説明するタイミングチャートである。
【図８】データ管理部によって記憶されるデータを説明するための説明図である。
【図９】第２の実施形態の再現運転モードにおけるデータの流れを説明するタイミングチャートである。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００１８】
（第１の実施形態：制御システム１００）
図１は、制御システム１００を構成する各装置の概略的な関係を示した外観図であり、図２は、制御システム１００の概略的な構成を示した説明図である。制御システム１００は、管理装置１１０と、プログラマブルコントローラ１２０と、被制御機器１３０とを含んで構成される。また、管理装置１１０とプログラマブルコントローラ１２０とは、例えば、ギガ（Ｇ）ベース等のＥｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０によって互いに接続される。さらに、プログラマブルコントローラ１２０と被制御機器１３０とは、例えば、専用の接続配線１４２を通じて通信可能に接続されている。
【００１９】
管理装置１１０は、制御システム１００全体がアプリケーションに定められた工程の流れに沿って動作するように、複数のプログラマブルコントローラ１２０を一括して制御する。例えば、管理装置１１０は、個々のプログラマブルコントローラ１２０からステータス情報や制御結果を収集したり、その収集した内容に応じて、個々のプログラマブルコントローラ１２０に各種制御指令を出力したりする。
【００２０】
プログラマブルコントローラ１２０は、ＰＬＣ（Programmable Logic Controller）とも呼ばれ、図２に示すように、ＣＰＵモジュール（制御装置）１２２、通信モジュール１２４、入出力（Ｉ／Ｏ）モジュール１２６、電源モジュール１２８等の複数のモジュールを含んで構成される。また、電源モジュール１２８を除く各モジュール同士は、管理装置１１０との接続同様、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０によって互いに接続される。
【００２１】
ここで、ＣＰＵモジュール１２２は、制御システム１００に定められたアプリケーションを実現するために、それぞれのプログラマブルコントローラ１２０用に分割された実行プログラムを管理装置１１０からダウンロードし、その実行プログラムを遂行したり、プログラマブルコントローラ１２０の動作状況を不図示のモニタに表示したりする。その際、管理装置１１０から受信した制御指令、入出力モジュール１２６を通じて入力された被制御機器１３０のセンサ検出結果等に基づいて被制御機器１３０を制御する。
【００２２】
通信モジュール１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）を通じて、管理装置１１０、他のプログラマブルコントローラ１２０、および、他のモジュールに接続され、それぞれと通信を確立することができる。
【００２３】
入出力モジュール１２６は、被制御機器１３０に対して入出力の管理を行う。例えば、被制御機器１３０がセンサであれば、センサ検出結果を収集し、電動機であれば、ディスクリートで表される制御指令を送信するとともに、その制御結果を収集する。電源モジュール１２８は、ＣＰＵモジュール１２２、通信モジュール１２４、入出力モジュール１２６等の各モジュールに電力を供給する。
【００２４】
被制御機器１３０は、ＦＡ（Factory Automation）における様々な状態を検知するセンサ、そのセンサの検知結果に応じて動作する電動機、エンコーダ等の電気機器で構成される。
【００２５】
このような制御システム１００は、様々な制御対象に適用できる。例えば、生産実行システム（ＭＥＳ：Manufacturing Execution System）に制御システム１００を適用した場合、被制御機器１３０としての、モーションコントロールユニット、センタシーラユニット（Center Sealer Unit）、および、フィルムユニット(Film Unit)等の生産機器にプログラマブルコントローラ１２０を接続する。そして、プログラマブルコントローラ１２０のＣＰＵモジュール１２２は、入出力モジュール１２６から生産機器の動作状態を入力データとして取り込み、実行プログラムを用いて入力データを処理した後、入出力モジュール１２６を通じて生産機器への指令を行う。以下、ＣＰＵモジュール１２２における実行プログラムの処理について詳述する。
【００２６】
（ＣＰＵモジュール１２２）
図３は、ＣＰＵモジュール１２２のハードウェア構成の一例を示す図である。図３に示すＣＰＵモジュール１２２は、外部入出力部１５０と、通信部１５２と、作業用メモリ１５４と、バックアップメモリ１５６と、制御部１５８とを含んで構成される。また、外部入出力部１５０と、通信部１５２と、作業用メモリ１５４と、バックアップメモリ１５６と、制御部１５８とは、共通バス１６０によりデータ移動可能に接続されている。
【００２７】
外部入出力部１５０は、キーボードや、マウス、タッチパネル等のポインティングデバイス、音声入力デバイス等に接続され、例えば、ユーザによる各種操作を受け付ける。また、液晶ディスプレイ、有機ＥＬ(Electro Luminescence)ディスプレイ等に接続することもでき、ＣＰＵモジュール１２２を操作するのに必要な各種ウィンドウ、データ、制御プログラムの進行状況や制御結果等を出力する。
【００２８】
通信部１５２は、Ｅｔｈｅｒｎｅｔ（登録商標）を通じて、通信モジュール１２４と通信を確立し、その通信モジュール１２４を通じて、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６と通信することができる。また、本実施形態において、通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６から入力データを受信し、受信した入力データを一時的に作業用メモリ１５４に記憶する入力部、および、作業用メモリ１５４に記憶された出力データを、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６の要求に応じて送信する出力部としても機能する。
【００２９】
作業用メモリ１５４は、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、不揮発性ＲＡＭ、フラッシュメモリ、ＨＤＤ（Hard Disk Drive）等の記憶媒体で構成され、入力データや、制御部１５８が実行プログラムを遂行することにより更新される出力データを記憶する。バックアップメモリ１５６は、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、不揮発性ＲＡＭ、フラッシュメモリ、ＨＤＤ（Hard Disk Drive）等で構成され、後述する再現処理に必要な入力データや状態変数等を記憶する。
【００３０】
制御部１５８は、中央処理装置（ＣＰＵ）、プログラム等が格納されたＲＯＭ、ワークエリアとしてのＲＡＭ等を含む半導体集積回路で構成され、共通バス１６０を通じてＣＰＵモジュール１２２全体を制御する。また、制御部１５８は、ＲＯＭに格納された実行プログラムを遂行し、演算部１７０、データ管理部１７２、モード選択部１７４といった機能部としても機能する。
【００３１】
演算部１７０は、周期的な所定のタイミング（入力データの更新タイミング）で作業用メモリ１５４から入力データを参照し、実行プログラムに基づいて、演算部１７０内で管理されている状態変数および出力データを更新する。データ管理部１７２は、バックアップメモリ１５６に記憶されるデータを管理する。モード選択部１７４は、通常運転モードと、再現運転モードとを含む複数の運転モードから１の運転モードを選択する（切り換える）。
【００３２】
ここで、通常運転モードは、ＣＰＵモジュール１２２が正常な状態で動作する通常の運転モードであり、再現運転モードは、ＣＰＵモジュール１２２が何らかの原因で演算処理を停止した場合に、その原因を解明すべく再現処理を行うための運転モードである。本実施形態では、通常、運転モードを通常運転モードとし、ＣＰＵモジュール１２２を動作させ、ＣＰＵモジュール１２２の演算処理が停止した場合に、運転モードを通常運転モードから再現運転モードに切り換えることで、演算処理が停止するまでの処理を再現（再現処理）することができる。なお、ここでは、演算処理が停止した場合に再現運転モードに切り換える例を挙げて説明するが、再現運転モードへの切り換えタイミングに制限はなく、演算処理を再現したい任意のタイミングで再現運転モードに切り換えることができる。
【００３３】
このような再現処理は、例えば、ＣＰＵモジュール１２２での演算結果である出力データを予め記憶しておき、その記憶された出力データを遡ることで実現することができる。しかし、出力結果のみを記憶、参照するだけでは、内部状態の変動履歴までは確認できない。また、ユーザの操作等、入力データの内容や変動タイミングが不明瞭な場合に、演算処理が停止したときの状況を的確に再現することができない。そこで、本実施形態では、出力データの代わりに入力データを記憶し、再現処理を実行する再現運転モードにおいて、実際の実行プログラムをそのまま利用し、改めて状態変数や出力データを更新することで、再現性の向上を図ることを目的としている。以下、通常運転モードと、再現運転モードにおける各機能部の動作を説明する。
【００３４】
（通常運転モード）
図４は、第１の実施形態の通常運転モードにおけるデータの流れを説明するタイミングチャートである。通常運転モードでは、実行プログラムの実行周期であるタクト時間（タスク、実行スキャンとも言う）が定められている。したがって、タクト時間が経過する毎に割込が発生し、その都度、実行プログラムが実行される。図４では、このようなタクト時間内の１回の演算処理の流れが表され、通常運転モードにおいて、かかる処理が繰り返される。
【００３５】
タクト時間による割込が発生すると、通信部１５２は、演算に必要な全ての入力データを、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６から受信し（Ｓ２００）、作業用メモリ１５４に記憶する（Ｓ２０２）。制御部１５８の演算部１７０は、作業用メモリ１５４から入力データを読み出すとともに（Ｓ２０４）、前回更新した内部の状態変数を参照し、実行プログラムを遂行して状態変数および出力データを更新する（Ｓ２０６）。
【００３６】
例えば、現在（今回タクト）の状態変数をｘｎ、入力データをＩｎｎとすると、次回の状態変数ｘｎ＋１および出力データＯｕｔｎは以下の関数１、関数２で示すことができる。
ｘｎ＋１＝ｆ（ｘｎ，Ｉｎｎ）…（関数１）
Ｏｕｔｎ＝ｇ（ｘｎ，Ｉｎｎ）…（関数２）
ただし、状態変数ｘｎ、入力データＩｎｎ、出力データＯｕｔｎは全て１または複数の値からなる。また、出力結果が次回の演算処理に用いられる場合、その出力結果を状態変数として保持することとなる。
【００３７】
制御部１５８の演算部１７０は、このようにして更新された状態変数を制御部１５８内のＲＡＭに保持するとともに、更新された出力データを作業用メモリ１５４に記憶する（Ｓ２０８）。通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６からの要求に応じて、出力データを作業用メモリ１５４から読み出し（Ｓ２１０）、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６に送信する（Ｓ２１２）。また、演算部１７０が出力データを作業用メモリ１５４に記憶するのに並行して、制御部１５８のデータ管理部１７２は、入力データを、その入力順を特定可能にバックアップメモリ１５６に記憶する（Ｓ２１４）。
【００３８】
図５は、データ管理部１７２によって記憶されるデータを説明するための説明図である。データ管理部１７２は、バックアップメモリ１５６に記憶領域を確保し、図５に示すように、先頭に総レコード数（例えば３０００）を記憶し、以降、入力データ数、入力データをその順に繰り返して記憶する。ここで、総レコード数は、実行プログラムを実行した総数を示し、実行プログラムが実行される度にデータ管理部１７２によって１ずつインクリメントされる。入力データ数は、記憶される入力データの数（例えば８０）を示す。そして、その後に、今回受信した全ての入力データが記憶される。
【００３９】
ここでは、１の入力データのサイズが決まっているので、データ管理部１７２は、入力データ数に基づいて、入力データが記憶されることにより占有するレコードのメモリ容量を導出でき、そのメモリ容量は、次回の入力データの記憶開始位置を特定するためのポインタとして用いられる。ただし、このような記憶フォーマットは、図５の記憶フォーマットに限らず、入力データと、その入力順を特定できれば、様々なフォーマットで記憶することができる。
【００４０】
本実施形態においては、上述したように、少なくとも入力データを記憶すれば、再現処理を実行できる。したがって、出力データの記憶を要さない。ただし、出力データの記憶を拒むものではない。また、上述した関数１、関数２では、再現運転モードにおいて出力データを得るため、タクト時間毎の入力データに加え、ＣＰＵモジュール１２２の動作開始時の初期状態変数が必要であるが、初期状態変数がデフォルト値（例えば０）として決定されていれば初期状態変数は特定可能なので、敢えて動作開始時に毎回記憶する必要はない。
【００４１】
（再現運転モード）
上記のような通常運転モードが実行されている間に、故障等、何らかの原因で演算処理が停止すると、停止している処理がリセットされてＣＰＵモジュール１２２が再度動作可能となり、モード選択部１７４は、ユーザの操作に応じて、運転モードを通常運転モードから再現運転モードに切り換える。
【００４２】
図６は、第１の実施形態の再現運転モードにおけるデータの流れを説明するタイミングチャートである。図６では、１回のタクト時間に相当する入力データに対する１回の演算処理の流れが表され、再現運転モードにおいて、かかる処理が繰り返される。
【００４３】
再現運転モードでは、通信部１５２が入力データを受信する代わりに、制御部１５８のデータ管理部１７２が、バックアップメモリ１５６に記憶された入力データを読み出す（Ｓ２５０）。具体的に、データ管理部１７２は、バックアップメモリ１５６から入力データの読み出しを開始したアドレスに、導出した入力データのレコードのメモリ容量を加算して、入力データの読み出し位置を順次特定し、バックアップメモリ１５６に記憶された総レコード数に到達するまで読み出しを繰り返す（図５参照）。そして、データ管理部１７２は、その読み出した入力データを、作業用メモリ１５４における、本来入力データが存在すべき位置に記憶する（Ｓ２５２）。
【００４４】
制御部１５８の演算部１７０は、作業用メモリ１５４から、データ管理部１７２が記憶した入力データを読み出すとともに（Ｓ２５４）、前回更新した状態変数を参照し、通常運転モードと同一の実行プログラムを遂行して状態変数および出力データを更新する（Ｓ２５６）。したがって、このとき用いる関数は、通常運転モード同様、関数１および関数２である。
【００４５】
演算部１７０は、このようにして更新された状態変数を制御部１５８内のＲＡＭに保持するとともに、更新された出力データを作業用メモリ１５４に記憶する（Ｓ２５８）。通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６からの要求に応じて、出力データを作業用メモリ１５４から読み出し（Ｓ２６０）、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６に送信する（Ｓ２６２）。
【００４６】
ここでは、データ管理部１７２が、通常運転モードにおいて、入力データをバックアップメモリ１５６に蓄積し、再現運転モードにおいて、入力データを受信する代わりにバックアップメモリ１５６に記憶された入力データを読み出し、演算部１７０に、読み出した入力データを入力順に参照させて状態変数および出力データを更新させる。したがって、演算部１７０は、通常運転モードにおいて利用した実際の実行プログラムをそのまま用い、また、通常運転モードにおいて入力された実際の入力データに基づいて、状態変数や出力データを更新することができる。このため、演算処理の停止後に、その状況（入力データ、状態変数、出力データ）を確実に再現することが可能となる。
【００４７】
また、通常運転モードでは、演算処理の実行時間が、入力データの入力間隔、すなわち、タクト時間によって制限されていた。しかし、再現運転モードにおいては、既に、全ての入力データが存在するので、時間間隔を設けることなく、次々に演算処理を遂行でき、短時間で演算処理を再現することが可能となる。
【００４８】
（第２の実施形態）
上述した第１の実施形態では、ＣＰＵモジュール１２２の動作開始時から全ての入力データをバックアップメモリ１５６に記憶する例を挙げて説明した。しかし、ＣＰＵモジュール１２２の動作時間が長時間に亘る場合、再現運転モードにおいて、全ての入力データを参照すると、演算処理の停止直前まで再現するのに長時間を要してしまう。そこで、第２の実施形態では、バックアップメモリ１５６に記憶するデータを工夫することで、演算処理の再現に要する時間を短縮する。
【００４９】
（通常運転モード）
図７は、第２の実施形態の通常運転モードにおけるデータの流れを説明するタイミングチャートである。通常運転モードにおいて、通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６から入力データを受信し（Ｓ３００）、作業用メモリ１５４に記憶する（Ｓ３０２）。制御部１５８の演算部１７０は、作業用メモリ１５４から入力データを読み出すとともに（Ｓ３０４）、前回更新した状態変数を参照し、実行プログラムを遂行して状態変数および出力データを更新する（Ｓ３０６）。このとき用いる関数は、第１の実施形態同様、関数１および関数２である。
【００５０】
制御部１５８の演算部１７０は、このようにして更新された状態変数を制御部１５８内のＲＡＭに保持するとともに、更新された出力データを作業用メモリ１５４に記憶する（Ｓ３０８）。通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６からの要求に応じて、出力データを作業用メモリ１５４から読み出し（Ｓ３１０）、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６に送信する（Ｓ３１２）。また、演算部１７０が出力データを作業用メモリ１５４に記憶するのに並行して、制御部１５８のデータ管理部１７２は、入力データに加え、更新された状態変数をバックアップメモリ１５６に記憶する（Ｓ３１４）。
【００５１】
図８は、データ管理部１７２によって記憶されるデータを説明するための説明図である。データ管理部１７２は、バックアップメモリ１５６に記憶領域を確保し、図８に示すように、先頭に総レコード数、開始時刻を記憶し、以降、実行プログラムの実行タイミングのうち所定の記憶タイミング毎に、状態データ数、状態変数を記憶し、実行プログラムの実行毎に入力データ数、入力データを繰り返して記憶する。
【００５２】
ここで、総レコード数は、第１の実施形態同様、実行プログラムを実行した総数を示し、実行プログラムが実行される度にデータ管理部１７２によって１ずつインクリメントされる。開始時刻は、ＣＰＵモジュール１２２の動作開始時を示す。状態データ数は、記憶される状態変数の数を示す。そして、その後に、所定の記憶タイミングに更新された全ての状態変数が記憶される。入力データ数は、記憶される入力データの数を示す。そして、その後に、今回受信した全ての入力データが記憶される。
【００５３】
ここでは、１の状態変数および１の入力データのサイズが決まっているので、データ管理部１７２は、状態データ数および入力データ数に基づいて、占有するレコードのメモリ容量を導出でき、そのメモリ容量は、次回の状態変数や入力データの記憶開始位置を特定するためのポインタとして用いられる。ただし、このような記憶フォーマットは、図８の記憶フォーマットに限らず、入力データや状態変数を特定できれば、様々なフォーマットで記憶することができる。
【００５４】
上述したように、入力データは、入力順を特定可能に毎回記憶されるのに対し、状態変数は、予め定められた所定の記憶タイミング（入力データより低頻度）で記憶される。かかる状態変数の記憶頻度は、入力データに対する相対的頻度（例えば、入力データ１００００回記憶毎に、入力データと記憶タイミングを等しくして状態変数を１回記憶する）として設定されている。このように、状態変数の記憶タイミングが定められている場合、開始時刻と、記憶タイミングとによって、それぞれ状態変数が記憶された時刻（記憶時刻）を特定することができる。かかる状態変数の記憶タイミング（記憶頻度）は、外部入出力部１５０や管理装置１１０からユーザが任意に設定することができる。
【００５５】
第２の実施形態では、ＣＰＵモジュール１２２が動作開始してから演算処理が停止するまでの途中の１の状態変数と、それ以降の入力データとを特定できれば足りる。したがって、状態変数を記憶する頻度を、高頻度とする必要はなく、入力データを記憶する頻度より低く抑えることができる。こうして、バックアップメモリ１５６における状態変数が占有するメモリ容量を削減することが可能となる。
【００５６】
状態変数は、それ以前の全ての入力データを演算処理しなければ正確に再現することができない。裏を返せば、状態変数さえあれば、それ以前の入力データがなくても、状態変数や出力データを再現することができる。本実施形態においては、入力データに加え、状態変数も記憶して、ＣＰＵモジュール１２２の動作開始後の途中の状態変数を用いることで、演算処理の再現に要する時間を短縮する。
【００５７】
（再現運転モード）
上記のような通常運転モードが実行されている間に、故障等、何らかの原因で演算処理が停止すると、停止している処理がリセットされてＣＰＵモジュール１２２が再度動作可能となり、モード選択部１７４は、ユーザの操作に応じて、運転モードを通常運転モードから再現運転モードに切り換える。
【００５８】
図９は、第２の実施形態の再現運転モードにおけるデータの流れを説明するタイミングチャートである。再現運転モードでは、まず、外部入出力部１５０を通じ、再現処理の開始時刻である再現開始時刻が設定される（Ｓ３５０）。すると、制御部１５８のデータ管理部１７２は、記憶された開始時刻と、予め定められた記憶タイミングとによって、複数の状態変数が記憶された記憶時刻を特定し、設定された再現開始時刻に対応する記憶時刻に記憶された状態変数をバックアップメモリ１５６から読み出し（Ｓ３５２）、演算部１７０が用いる状態変数として設定する（Ｓ３５４）。ただし、再現開始時刻と時刻が等しい状態変数が存在しない場合、それより過去であって、時刻が再現開始時刻に最も近い記憶時刻の状態変数が読み出される。
【００５９】
続いて、制御部１５８のデータ管理部１７２が、バックアップメモリ１５６に記憶された入力データを読み出す（Ｓ３５６）。具体的に、データ管理部１７２は、記憶タイミング以降の入力データを対象にすべく、設定された状態変数のアドレスに、状態変数のレコードのメモリ容量を加算して、入力データの読み出し位置を特定し、バックアップメモリ１５６に記憶された総レコード数に到達するまで読み出しを繰り返す（図８参照）。そして、データ管理部１７２は、その読み出した入力データを、作業用メモリ１５４における、本来入力データが存在すべき位置に記憶する（Ｓ３５８）。
【００６０】
制御部１５８の演算部１７０は、作業用メモリ１５４から、データ管理部１７２が記憶した入力データを読み出すとともに（Ｓ３６０）、前回更新した状態変数を参照し、通常運転モードと同一の実行プログラムを遂行して状態変数および出力データを更新する（Ｓ３６２）。したがって、このとき用いる関数は、通常運転モード同様、関数１および関数２である。
【００６１】
制御部１５８の演算部１７０は、このようにして更新された状態変数を制御部１５８内のＲＡＭに保持するとともに、更新された出力データを作業用メモリ１５４に記憶する（Ｓ３６４）。通信部１５２は、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６からの要求に応じて、出力データを作業用メモリ１５４から読み出し（Ｓ３６６）、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６に送信する（Ｓ３６８）。第２の実施形態においては、ステップＳ３５２、Ｓ３５４の処理で状態変数を設定すると、その後は、ステップＳ３５６〜Ｓ３６８の処理を繰り返すこととなる。
【００６２】
ここでは、データ管理部１７２が、通常運転モードにおいて、入力データに加え状態変数をバックアップメモリ１５６に蓄積し、再現運転モードにおいて、所定の再現開始時刻の状態変数を演算部１７０に設定し、入力データを受信する代わりにバックアップメモリ１５６に記憶された入力データを読み出し、演算部１７０に、読み出した入力データを入力順に参照させて状態変数および出力データを更新させる。
【００６３】
したがって、演算部１７０は、通常運転モードにおいて利用した実際の実行プログラムを用い、また、通常運転モードにおいて再現開始時刻以降に入力された実際の入力データに基づいて、状態変数や出力データを短時間で更新することができる。このため、演算処理の停止後に、その状況（入力データ、状態変数、出力データ）を確実かつ短時間に再現することが可能となる。
【００６４】
また、第１の実施形態同様、通常運転モードでは、演算処理の実行時間が、入力データの入力間隔、すなわち、タクト時間によって制限されていた。しかし、再現運転モードにおいては、既に、全ての入力データが存在するので、時間間隔を設けることなく、次々に演算処理を遂行でき、短時間で演算処理を再現することが可能となる。
【００６５】
また、コンピュータを制御装置であるＣＰＵモジュール１２２として機能させるプログラムや、当該プログラムを記録した、コンピュータで読み取り可能なフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ、ＤＶＤ、ＢＤ等の記憶媒体も提供される。ここで、プログラムは、任意の言語や記述方法にて記述されたデータ処理手段をいう。また、ＣＰＵモジュール（制御装置）１２２のうち、通常運転モードを担う記憶装置や、再現運転モードを担う再現装置も提供される。
【００６６】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００６７】
例えば、上述した実施形態においては、制御装置としてＣＰＵモジュール１２２を例に挙げて説明したが、分散型制御装置（ＤＣＳ）等、様々な機器に適用することができる。
【００６８】
また、上述した実施形態においては、演算処理が停止するまでの処理を再現する例を挙げて説明したが、所定の終了時刻を設定することで、演算処理が停止する前の所定の終了時刻までの処理を再現することもできる。特に、第２の実施形態では、再現開始時刻を任意に設定することができるので、再現開始時刻と終了時刻の両時刻を任意に設定することが可能となる。
【００６９】
また、上述した第２の実施形態においては、入力データの記憶タイミングのうち、所定の記憶タイミングにのみ状態変数を記憶（入力データより低頻度で記憶）する例を挙げて説明したが、かかる場合に限らず、入力タイミングと同記憶タイミングで状態変数を記憶（入力データと同頻度で記憶）してもよい。
【００７０】
また、上述した実施形態の通常運転モードにおいては、入力データを受信する毎に演算部１７０が所定の実行プログラムに基づいて状態変数および出力データを更新する例を挙げて説明したが、入力データとその入力順さえ特定できれば、状態変数および出力データを更新するタイミングは制限されない。例えば、入力データが１０個蓄積されてから、一度に演算を行うことで１０個の出力データを生成し、その一部または全部を順次送信するとしてもよい。
【産業上の利用可能性】
【００７１】
本発明は、過去の動作状態を再現することが可能な制御装置、記憶装置、および、再現装置に利用することができる。
【符号の説明】
【００７２】
１２２  ＣＰＵモジュール（制御装置、記憶装置、再現装置）
１５０  外部入出力部
１５２  通信部（入力部、出力部）
１５６  バックアップメモリ
１７０  演算部
１７２  データ管理部
１７４  モード選択部
【図１】
2016224600.tif 000003
【図２】
2016224600.tif 000004
【図３】
2016224600.tif 000005
【図４】
2016224600.tif 000006
【図５】
2016224600.tif 000007
【図６】
2016224600.tif 000008
【図７】
2016224600.tif 000009
【図８】
2016224600.tif 000010
【図９】
2016224600.tif 000011