(57)【特許請求の範囲】
【請求項１】
実行系ユニットと待機系ユニットとを具備し、
前記実行系ユニットは、
一次記憶部と、
制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部と、
制御対象の状況を示す状況情報を取得する状況情報取得部と、
前記状況情報取得部が取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する制御データ転送部と、
前記制御データ転送部が前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信部と、
を具備し、
前記待機系ユニットは、
一次記憶部と、
制御対象の制御に用いる制御データを状況情報と対応付けて記憶する二次記憶部と、
前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する制御データ転送部と、
を具備することを特徴とする記憶システム。
【請求項２】
前記実行系ユニットは、
データ書込指示を取得する書込指示取得部と、
前記書込指示取得部がデータ書込指示を取得すると、当該データ書込指示に従って、前記一次記憶部にデータを書き込む書込実行部と、
データ読出指示を取得する読出指示取得部と、
前記読出指示取得部がデータ読出指示を取得すると、当該データ読出指示に従って、前記一次記憶部と前記二次記憶部とからデータを読み出し、前記一次記憶部と前記二次記憶部とで値が異なるデータについては前記一次記憶部の記憶するデータを用いて前記データ読出指示に対する応答を生成する読出実行部と、
を具備することを特徴とする請求項１に記載の記憶システム。
【請求項３】
前記実行系ユニットは、
前記一次記憶部の空き容量が空き容量基準値より小さくなると、当該一次記憶部の記憶するデータを前記二次記憶部に移動させて前記一次記憶部の空き容量を増大させる空き容量生成部と、
前記二次記憶部の余寿命を判定する余寿命判定部と、
前記二次記憶部の余寿命が所定の余寿命より短いと前記余寿命判定部が判定すると、前記空き容量基準値をより小さな値に設定する空き容量基準値設定部と、
を具備することを特徴とする請求項１または請求項２に記載の記憶システム。
【請求項４】
前記実行系ユニットと、前記待機系ユニットとは、それぞれ、
前記一次記憶部の空き容量が空き容量基準値より小さくなると、当該一次記憶部の記憶するデータを前記二次記憶部に移動させて前記一次記憶部の空き容量を増大させる空き容量生成部を具備し、
前記実行系ユニットの前記空き容量基準値と、前記待機系ユニットの前記空き容量基準値とは、互いに異なる値であることを特徴とする請求項１または請求項２に記載の記憶システム。
【請求項５】
一次記憶部と制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部とを具備する実行系ユニットと、
一次記憶部と制御対象の制御に用いる制御データを制御対象の状況を示す状況情報と対応付けて記憶する二次記憶部とを具備する待機系ユニットと、
を有する記憶システムのデータ管理方法であって、
前記実行系ユニットが、状況情報を取得する状況情報取得ステップと、
前記実行系ユニットが、前記状況情報取得ステップにて取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する実行系ユニット制御データ転送ステップと、
前記実行系ユニットが、前記実行系ユニット制御データ転送ステップにて前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信ステップと、
前記待機系ユニットが、前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する待機系ユニット制御データ転送ステップと、
を具備することを特徴とするデータ管理方法。
【請求項６】
一次記憶部と制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部とを具備する実行系ユニットと、
一次記憶部と制御対象の制御に用いる制御データを制御対象の状況を示す状況情報と対応付けて記憶する二次記憶部とを具備する待機系ユニットと、
を有する記憶システムとしてのコンピュータシステムに、
前記実行系ユニットが、状況情報を取得する状況情報取得ステップと、
前記実行系ユニットが、前記状況情報取得ステップにて取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する実行系ユニット制御データ転送ステップと、
前記実行系ユニットが、前記実行系ユニット制御データ転送ステップにて前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信ステップと、
前記待機系ユニットが、前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する待機系ユニット制御データ転送ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶システム、データ管理方法およびプログラムに関する。
【背景技術】
【０００２】
プラント設備や機械装置などの制御において、記憶手段の多重化によって信頼性の向上を図るための幾つかの技術が提案されている。例えば、特許文献１に記載の高速二重系制御装置では、主系および従系の制御ユニットが、それぞれデュアルポートメモリを有する。このデュアルポートメモリは、それぞれ自系メモリエリアと他系メモリエリアを有し、一方の自系メモリエリアと他方の他系メモリエリアとは光ケーブルで接続され、自系メモリエリアのデータを制御サイクルより短い間隔で他系メモリエリアに上書きする。
これにより、従系の他系メモリエリアの制御データを常に主系の制御データに保持でき、実質的にリアルタイムで制御データを共有できる、とされている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−５００８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御に用いられるデータ量が多い場合、この制御に用いられるデータを、比較的安価な記憶装置であるハードディスクドライブ（Hard Disk Drive；ＨＤＤ）に記憶させることが考えられる。
しかしながら、ハードディスクドライブは、可動部分の磨耗などにより比較的短期間で故障するおそれがある。ハードディスクドライブが故障すると、制御対象となっているプラント設備や機械装置などの稼働率低下を招く要因となってしまう。
【０００５】
ここで、特許文献１に記載の高速二重系制御装置における記憶手段の二重化のように、ハードディスクドライブを多重化することで、信頼性の向上、ひいては制御対象の稼働率低下防止を図ることができる。しかしながら、ハードディスクドライブを多重化した構成においても、ハードディスクドライブが同時期に故障するおそれがある。すなわち、個々のハードディスクドライブは、アクセス回数の増加に伴って故障するおそれがあり、さらに、各ハードディスクドライブの故障時期が一致するおそれがある。
【０００６】
一方、記憶装置として、フラッシュメモリを用いた不揮発性大容量記憶装置であるソリッドステートドライブ（Solid State Drive；ＳＳＤ）を用いることも考えられる。しかしながら、ソリッドステートドライブは、データ書込の際に当該部分の劣化を招き、やがて故障に至る。ハードディスクドライブの場合と同様、ソリッドステートドライブが故障すると、制御対象となっているプラント設備や機械装置などの稼働率低下を招く要因となってしまう。
また、ソリッドステートドライブを多重化する場合も、ハードディスクドライブの場合と同様、多重化されたソリッドステートドライブが同時期に故障するおそれがある。
【０００７】
本発明は、このような事情を考慮してなされたものであり、その目的は、より信頼性の高い記憶システム、データ管理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
この発明は上述した課題を解決するためになされたもので、本発明の一態様による記憶システムは、実行系ユニットと待機系ユニットとを具備し、前記実行系ユニットは、一次記憶部と、制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部と、制御対象の状況を示す状況情報を取得する状況情報取得部と、前記状況情報取得部が取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する制御データ転送部と、前記制御データ転送部が前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信部と、を具備し、前記待機系ユニットは、一次記憶部と、制御対象の制御に用いる制御データを状況情報と対応付けて記憶する二次記憶部と、前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する制御データ転送部と、を具備することを特徴とする。
【０００９】
また、本発明の一態様による記憶システムは、上述の記憶システムであって、前記実行系ユニットは、データ書込指示を取得する書込指示取得部と、前記書込指示取得部がデータ書込指示を取得すると、当該データ書込指示に従って、前記一次記憶部にデータを書き込む書込実行部と、データ読出指示を取得する読出指示取得部と、前記読出指示取得部がデータ読出指示を取得すると、当該データ読出指示に従って、前記一次記憶部と前記二次記憶部とからデータを読み出し、前記一次記憶部と前記二次記憶部とで値が異なるデータについては前記一次記憶部の記憶するデータを用いて前記データ読出指示に対する応答を生成する読出実行部と、を具備することを特徴とする。
【００１０】
また、本発明の一態様による記憶システムは、上述の記憶システムであって、前記実行系ユニットは、前記一次記憶部の空き容量が空き容量基準値より小さくなると、当該一次記憶部の記憶するデータを前記二次記憶部に移動させて前記一次記憶部の空き容量を増大させる空き容量生成部と、前記二次記憶部の余寿命を判定する余寿命判定部と、前記二次記憶部の余寿命が所定の余寿命より短いと前記余寿命判定部が判定すると、前記空き容量基準値をより小さな値に設定する空き容量基準値設定部と、を具備することを特徴とする。
【００１１】
また、本発明の一態様による記憶システムは、上述の記憶システムであって、前記実行系ユニットと、前記待機系ユニットとは、それぞれ、前記一次記憶部の空き容量が空き容量基準値より小さくなると、当該一次記憶部の記憶するデータを前記二次記憶部に移動させて前記一次記憶部の空き容量を増大させる空き容量生成部を具備し、前記実行系ユニットの前記空き容量基準値と、前記待機系ユニットの前記空き容量基準値とは、互いに異なる値であることを特徴とする。
【００１２】
また、本発明の一態様によるデータ管理方法は、一次記憶部と制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部とを具備する実行系ユニットと、一次記憶部と制御対象の制御に用いる制御データを制御対象の状況を示す状況情報と対応付けて記憶する二次記憶部とを具備する待機系ユニットと、を有する記憶システムのデータ管理方法であって、前記実行系ユニットが、状況情報を取得する状況情報取得ステップと、前記実行系ユニットが、前記状況情報取得ステップにて取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する実行系ユニット制御データ転送ステップと、前記実行系ユニットが、前記実行系ユニット制御データ転送ステップにて前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信ステップと、前記待機系ユニットが、前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する待機系ユニット制御データ転送ステップと、を具備することを特徴とする。
【００１３】
また、本発明の一態様によるプログラムは、一次記憶部と制御対象の制御に用いる制御データを検索キーと対応付けて記憶する二次記憶部とを具備する実行系ユニットと、一次記憶部と制御対象の制御に用いる制御データを制御対象の状況を示す状況情報と対応付けて記憶する二次記憶部とを具備する待機系ユニットと、を有する記憶システムとしてのコンピュータシステムに、前記実行系ユニットが、状況情報を取得する状況情報取得ステップと、前記実行系ユニットが、前記状況情報取得ステップにて取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている前記制御データを読み出して、前記一次記憶部に転送する実行系ユニット制御データ転送ステップと、前記実行系ユニットが、前記実行系ユニット制御データ転送ステップにて前記制御データの転送を行うと、当該転送を指示する指示情報を待機系ユニットに送信する指示情報送信ステップと、前記待機系ユニットが、前記指示情報に従って前記二次記憶部から前記制御データを読み出して、前記一次記憶部に転送する待機系ユニット制御データ転送ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、記憶システムの信頼性をより高めることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態における制御システムの機能構成を示す概略ブロック図である。
【図２】同実施形態において、データ管理部１５０が行う処理の手順を示すフローチャートである。
【図３】同実施形態において、データ管理部１５０が、処理部１２０からのデータ書込指示に対する処理を行う手順を示すフローチャートである。
【図４】同実施形態において、データ管理部１５０が、処理部１２０からのデータ読出指示に対する処理を行う手順を示すフローチャートである。
【図５】同実施形態において、データ管理部１５０が、二次記憶部１４０から一次記憶部１３０への制御データ集合の転送に関する処理を行う手順を示すフローチャートである。
【図６】同実施形態おいて、データ管理部１５０が、一次記憶部１３０の空き容量の確保に関する処理を行う手順を示すフローチャートである。
【図７】同実施形態において、データ管理部２５０が行う処理の手順を示すフローチャートである。
【図８】同実施形態おいて、二次記憶部１４０に対するデータの書込回数を低減させる場合に、データ管理部１５０が行う処理の手順を示すフローチャートである。
【図９】同実施形態おいて、データ管理部１５０が、処理部１２０からのデータ読出指示に対する処理を行う手順を示すフローチャートである。
【図１０】同実施形態おいて、データ管理部１５０が、二次記憶部１４０から一次記憶部１３０への制御データ集合の移動に関する処理を行う手順を示すフローチャートである。
【図１１】同実施形態おいて、二次記憶部の余寿命に応じて一次記憶部に記憶させるデータ量を変化させる場合の、制御システムの機能構成を示す概略ブロック図である。
【図１２】同実施形態おいて、二次記憶部の余寿命に応じて一次記憶部に記憶させるデータ量を変化させる場合に、データ管理部１５０が行う処理の手順を示すフローチャートである。
【図１３】同実施形態おいて、データ管理部１５０が、二次記憶部１４０の余寿命の管理に関する処理を行う手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本発明の一実施形態における制御システムの機能構成を示す概略ブロック図である。同図において、制御システム（記憶システム）１は、実行系ユニット１００と、待機系ユニット２００と、ネットワーク３００とを具備し、制御対象９００の制御に必要なデータを記憶して、制御対象９００を制御する。実行系ユニット１００は、通信部（指示情報送信部）１１０と、処理部１２０と、一次記憶部１３０と、二次記憶部１４０と、データ管理部１５０とを具備する。データ管理部１５０は、入出力部（状況情報取得部、書込指示取得部、読出指示取得部）１５１と、読出書込実行部（制御データ転送部、空き容量生成部、書込実行部、読出実行部）１５２とを具備する。待機系ユニット２００は、通信部２１０と、処理部２２０と、一次記憶部２３０と、二次記憶部２４０と、データ管理部２５０とを具備する。データ管理部２５０は、入出力部２５１と、読出書込実行部（制御データ転送部、空き容量生成部、書込実行部、読出実行部）２５２とを具備する。
【００１７】
制御対象９００は、制御システム１において制御対象となっているプラントまたは装置である。なお、以下では制御対象９００がガスタービンである場合について説明するが、本発明の適用範囲は制御対象がガスタービンである場合に限らない。本発明は、データの記憶を伴う様々な制御に適用可能であり、制御対象は様々な装置であってもよいし、さらには単体の装置に限らず様々なプラントであってもよい。
【００１８】
ネットワーク３００は、制御対象９００と実行系ユニット１００と待機系ユニット２００とを接続して通信信号を伝送する通信ネットワークである。このネットワーク３００として、様々な形態の通信ネットワークを用いることができる。例えば、ネットワーク３００は、無線通信ネットワークであってもよいし、有線のネットワークであってもよい。また、ネットワーク３００は、ＬＡＮ（Local Area Network）であってもよいし、インターネット（Internet）であってもよい。また、本構成では制御対象９００とネットワーク３００とを直接接続しているが、図示しないＩＯ処理装置を経由して制御対象９００とネットワーク３００とを接続してもよい。
【００１９】
実行系ユニット１００は、制御データを記憶して制御対象９００の制御を行うユニットである。なお、ここでいう制御データとは、制御対象９００の制御に用いられるデータである。例えば、制御データには、気温やガスタービン各部の温度や圧力などの状態量と、弁開度指令など実行系ユニット１００（処理部１２０）が制御対象９００に出力する信号または当該信号を生成するためのパラメータ値とが含まれる。そして、実行系ユニット１００（処理部１２０）は、制御データに含まれる目標値と制御対象９００における実測値との差を算出し、差に応じた制御指令値を取得（算出、あるいは、制御データの中から読出）して、制御対象９００に出力する。
【００２０】
通信部１１０は、ネットワーク３００を介して制御対象９００や待機系ユニット２００（通信部２１０）と通信を行う。特に、後述するように、読出書込実行部１５２が二次記憶部１４０から一次記憶部１３０への制御データの転送（ここではコピー）を行うと、通信部１１０は、当該転送を指示する指示情報を待機系ユニット２００に送信する。
【００２１】
処理部１２０は、制御対象９００を制御する。具体的には、処理部１２０は、実行系ユニット１００（一次記憶部１３０および二次記憶部１４０）の記憶する制御データと、制御対象９００における状態量の測定値とに基づいて、制御対象９００に対する制御指令を求める（算出する、あるいは、実行系ユニット１００の記憶する制御データの中から読み出す）。そして、処理部１２０は、求めた制御指令を、通信部１１０およびネットワーク３００を介して制御対象９００に送信することにより、制御対象９００を制御する。
また、処理部１２０は、制御対象９００の制御に必要な制御データを要求するデータ読出指示や、制御対象９００の制御に際して取得した制御データの保存を指示するデータ書込指示を、データ管理部１５０（入出力部１５１）に出力する。なお、以降、本装置でいう書込には、制御データの追加書込と更新がある。
【００２２】
二次記憶部１４０は、例えばハードディスクドライブなど、少なくともデータの書込または読出のいずれかを行うことで故障の可能性が高まる（寿命を迎える）記憶媒体を用いて構成され、制御データを検索キーと対応付けて記憶する。具体的には、二次記憶部１４０の記憶領域が、予めブロックに区分されており、例えば検索キーとしての発電機出力および気温が各ブロックに対応付けられている。そして、二次記憶部１４０は、ある発電機出力およびある気温に対する制御データ（当該発電機出力および当該気温のときに、処理部１２０が制御対象９００を制御するために必要となる一連のデータ。以下では、ある検索キーに対応付けられる一連の制御データを「制御データ集合」と称する）を、当該発電機出力および気温に対応付けられたブロックに記憶する。
【００２３】
ここで、検索キーとブロックとの対応付けは、例えば、読出書込実行部１５２がテーブル（表）形式で記憶しておく。具体的には、読出書込実行部１５２が、発電機出力と気温とブロックのアドレス（例えば先頭アドレス）が対応付けられたテーブルを記憶しておく。あるいは、読出書込実行部１５２が、発電機出力および気温を入力としてブロックのアドレスを出力する関数を予め記憶しておくなど、テーブル以外の方法で記憶するようにしてもよい。
【００２４】
なお、制御データ集合と検索キーとを対応付ける方法は、上述した二次記憶部１４０の記憶領域のブロックと検索キーとを対応付ける方法に限らず、様々な方法を用いることができる。例えば、二次記憶部１４０の記憶領域にフォルダ（ディレクトリ）が設けられ、各フォルダに発電機出力と気温とが対応付けられていてもよい。この場合、二次記憶部１４０は、ある発電機出力およびある気温に対する制御データ集合を、当該発電機出力および気温に対応付けられたフォルダに記憶することで、制御データ集合と検索キーとを対応付けて記憶する。
【００２５】
一次記憶部１３０は、例えばＤＲＡＭ（Dynamic Random Access Memory）またはＳＲＡＭ（Static Random Access Memory）など、データの読込や書出の故障可能性に対する影響が小さい記憶媒体を用いて構成され、制御データ集合を記憶する。ここで、一次記憶部１３０は、二次記憶部１４０に対する上位記憶部に該当し、二次記憶部１４０よりも高速にアクセス（読出および書込）し得る。
【００２６】
データ管理部１５０は、一次記憶部１３０と二次記憶部１４０に対するデータの書込や読出を行う。
読出書込実行部１５２は、一次記憶部１３０と二次記憶部１４０に対するデータの書込や読出を実行する。特に、読出書込実行部１５２は、入出力部１５１がデータ書込指示を取得すると、当該データ書込指示に従って、一次記憶部１３０にデータを書き込む。また、読出書込実行部１５２は、入出力部１５１がデータ読出指示を取得すると、当該データ読出指示に従って、一次記憶部１３０または二次記憶部１４０から該当するデータを読み出し、データ読出指示に対する応答を生成する。
【００２７】
より具体的には、読出書込実行部１５２は、処理部１２０から出力されたデータ書込指示を、入出力部１５１を介して取得すると、当該データ書込指示に含まれる制御データ集合と検索キーとを対応付けて一次記憶部１３０に記憶させる（書き込む）。読出書込実行部１５２が、制御データ集合を一次記憶部１３０に記憶させることで、二次記憶部１４０に対する制御データ集合の書込回数や読出回数を低減させることができる。
【００２８】
また、読出書込実行部１５２は、入出力部１５１が取得した状況情報に基づいて、当該状況情報に応じた検索キーに対応付けられている制御データ集合を、二次記憶部１４０から読み出して一次記憶部１３０に転送する。ここで、状況情報には、制御対象の状態情報、または、制御対象の周囲環境を示す情報が含まれる。また、読出書込実行部１５２は、処理部１２０から要求（読出指示）される制御データ集合の、一次記憶部１３０におけるヒット率を高めるために、二次記憶部１４０から一次記憶部１３０への制御データ集合の転送を行う。
【００２９】
ここで、制御対象９００の制御にどのような制御データ集合が必要かは、制御データ集合の検索キーとして用いられている発電機出力および気温によって特定される。そこで、読出書込実行部１５２は、状況情報として発電機出力の最新データと気温の最新データとを取得する。そして、読出書込実行部１５２は、得られた発電機出力および気温に対応付けられている制御データ集合を、二次記憶部１４０から一次記憶部１３０に転送する（すなわち、二次記憶部１４０から読み出して一次記憶部１３０に書き込む）。
【００３０】
このように、読出書込実行部１５２は、状況情報に基づいて二次記憶部１４０から一次記憶部１３０に制御データ集合を転送することで、適切な制御データ集合（すなわち、処理部１２０が必要とする可能性の高い制御データ集合）を一次記憶部１３０に予め（処理部１２０から指示される前に）記憶させることができる。
これにより、読出書込実行部１５２は、処理部１２０から制御データ集合を要求された際に、一次記憶部１３０を参照して当該制御データ集合を取得することができる可能性が高く、二次記憶部１４０へのアクセス回数（ここでは、二次記憶部１４０からの制御データ集合の読出回数）を低減させることができる。二次記憶部１４０へのアクセス回数を低減させることで、二次記憶部１４０を構成するハードディスクドライブの可動部分の磨耗を抑制することができ、当該ハードディスクドライブの寿命を延ばすことができる。この点で、制御システム１の信頼性を高めることができ、ひいては、制御対象９００や制御システム１の稼働率を向上させることができる。
また、読出書込実行部１５２は、制御データ集合を一次記憶部１３０に予め記憶させておくことで、処理部１２０から制御データ集合を要求された際に、速やか制御データ集合を読み出して出力（返送）することができる。
【００３１】
また、読出書込実行部１５２は、一次記憶部１３０の空き容量を検出し、一次記憶部１３０の空き容量が空き容量基準値より小さくなると、一次記憶部１３０の記憶するデータを二次記憶部１４０に移動させて一次記憶部１３０の空き容量を増大させる（すなわち、一次記憶部１３０から制御データ集合を読み出して二次記憶部１４０の該当ブロックに書き込み、また、制御データ集合を読み出した一次記憶部１３０の記憶領域を解放する（新たなデータを書込可能とする））。無論、既に二次記憶部１４０上に同じ制御データが存在する場合、即ち二次記憶部１４０から一次記憶部１３０に移された後更新されていない制御データは、二次記憶部に書き込まずに廃棄してもよい。
【００３２】
ここで、読出書込実行部１５２は、空き容量基準値として、例えば、一次記憶部１３０の全記憶容量の１０％（パーセント）などの定数値を予め記憶している。そして、読出書込実行部１５２は、一次記憶部１３０の空き容量が空き容量基準値より小さくなると、処理部１２０から要求される可能性の低い制御データ集合を判定し、当該制御データ集合を二次記憶部１４０に移動させて一次記憶部１３０の空き容量を増大させる。
【００３３】
その際、読出書込実行部１５２は、一次記憶部１３０に書き込まれてからの経過時間の長い制御データ集合ほど、処理部１２０から要求される可能性の低い制御データ集合と判定する。あるいは、読出書込実行部１５２が、制御データ集合に対応付けて一次記憶部１３０が記憶している検索キー（発電機出力および気温）の各々と、発電機出力および気温の最新データとの距離（例えばユークリッド距離、すなわち、発電機出力の差の２乗と気温の差の２乗との合計の平方根の値）を算出し、距離の大きい検索キーに対応付けられている制御データ集合ほど、処理部１２０から要求される可能性の低い制御データ集合と判定するなど、書込からの経過時間以外の基準に基づいて判定を行うようにしてもよい。
【００３４】
また、読出書込実行部１５２は、読出書込実行部１５２自らが行った書込を示すデータ書込指示を、処理部１２０や通信部１１０やネットワーク３００を介して待機系ユニット２００に送信する。また、読出書込実行部１５２は、二次記憶部１４０の記憶する制御データ集合を一次記憶部１３０に転送する際や、一次記憶部１３０の記憶する制御データ集合を二次記憶部１４０に移動させる際に、読出書込実行部１５２自らが行った読出を示すデータ読出指示を、処理部１２０や通信部１１０やネットワーク３００を介して待機系ユニット２００に送信する。読出書込実行部１５２は、これらデータ書込指示やデータ読出指示を待機系ユニット２００に送信することで、実行系ユニット１００の記憶する制御データ集合と、待機系ユニット２００の記憶する制御データ集合とを同期（トラッキング）させる。
【００３５】
ここで、読出書込実行部１５２は、読出書込実行部１５２自らが書込を行った制御データ集合をデータ書込指示に含めて待機系ユニット２００に送信する。これにより、実行系ユニット１００が制御データ集合を記憶するタイミングと、待機系ユニット２００が制御データ集合を記憶するタイミングとのずれにかかわらず、待機系ユニット２００が実行系ユニット１００と同じ制御データ集合を記憶するようにできる。
【００３６】
なお、以下では、読出書込実行部１５２が、データの読出や書込を行う毎にデータ読出指示やデータ書込指示を送信する場合について説明するが、読出書込実行部１５２がデータ読出指示やデータ書込指示を送信するタイミングはこれに限らない。例えば、読出書込実行部１５２が、一定周期毎にデータ読出指示やデータ書込指示を送信するなど、送信タイミングの時間管理を行うようにしてもよい。
【００３７】
入出力部１５１は、処理部１２０との間でデータの入出力を行う。
特に、入出力部１５１は、制御データ集合と検索キーとを含むデータ書込指示を処理部１２０から取得すると、取得したデータ書込指示を読出書込実行部１５２に出力する。ここで、入出力部１５１が、制御データ集合に検索キーを含めて取得するようにしてもよいし、制御データ集合と検索キーとを別々に取得するようにしてもよい。
また、入出力部１５１は、制御データ集合の読出を指示するデータ読出指示を処理部１２０から取得すると、取得したデータ読出指示を読出書込実行部１５２に出力する。
【００３８】
また、入出力部１５１は、一次記憶部１３０と二次記憶部１４０との間で制御データ集合の転送を行うか否かを、読出書込実行部１５２が判定するためのデータとして、制御対象９００の状況を示す状況情報を処理部１２０から取得し、読出書込実行部１５２に出力する。
また、入出力部１５１は、読出書込実行部１５２から出力されるデータ読出指示やデータ書込指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
【００３９】
待機系ユニット２００は、実行系ユニット１００と同様の構成を有し、実行系ユニット１００（読出書込実行部１５２）からのデータ読出指示やデータ書込指示に従って、実行系ユニット１００が記憶する制御データ集合と同じ制御データ集合を記憶している。そして、実行系ユニット１００に障害が発生すると、待機系ユニット２００が制御対象９００の制御を引き継ぐ。この場合、実行系ユニットと待機系ユニットとが入れ替わる。すなわち、待機系ユニット２００が新たに実行系ユニットとなり、実行系ユニット１００は待機系ユニットとなる。
【００４０】
なお、待機系ユニット２００における通信部２１０と、処理部２２０と、一次記憶部２３０と、二次記憶部２４０と、データ管理部２５０と、入出力部２５１と、読出書込実行部２５２とは、それぞれ、実行系ユニット１００における通信部１１０と、処理部１２０と、一次記憶部１３０と、二次記憶部１４０と、データ管理部１５０と、入出力部１５１と、読出書込実行部１５２とに対応する。そして、実行系ユニットと待機系ユニットとが入れ替わると、待機系ユニット２００の各部は、実行系ユニット１００の対応する各部について上述した機能を有して処理を行い、また、実行系ユニット１００の各部は、待機系ユニット２００の対応する各部について以下に説明する機能を有して処理を行う。
【００４１】
通信部２１０は、ネットワーク３００を介して制御対象９００や実行系ユニット１００（通信部１１０）と通信を行う。特に、通信部２１０は、制御データ集合の転送を指示する指示情報を受信すると、当該指示情報を、処理部２２０を介してデータ管理部２５０に出力する。
【００４２】
処理部２２０は、処理部１２０から制御対象９００の制御を引き継ぐ。例えば、実行系ユニット１００が正常に動作している状態では、処理部２２０は休止している。そして、実行系ユニット１００に障害が発生し、実行系ユニットと待機系ユニットとが入れ替わると、処理部２２０が、処理部１２０に代わって制御対象９００の制御を行う。
【００４３】
二次記憶部２４０は、二次記憶部１４０と同様、例えばハードディスクドライブなど、少なくともデータの書込または読出のいずれかを行うことで故障の可能性が高まる（寿命を迎える）記憶媒体を用いて構成され、制御データ集合を検索キーと対応付けて記憶する。
一次記憶部２３０は、一次記憶部１３０と同様、例えばＤＲＡＭまたはＳＲＡＭなど、データの読込や書出の故障可能性に対する影響が小さい記憶媒体を用いて構成され、制御データ集合を記憶する。ここで、一次記憶部２３０は、二次記憶部２４０に対する上位記憶部に該当し、二次記憶部２４０よりも高速にアクセス（読出および書込）し得る。
【００４４】
データ管理部２５０は、一次記憶部２３０と二次記憶部２４０に対するデータの書込や読出を行う。
読出書込実行部２５２は、一次記憶部２３０と二次記憶部２４０に対するデータの書込や読出を実行する。具体的には、読出書込実行部２５２は、読出書込実行部１５２から出力されるデータ読出指示やデータ書込指示に従って、一次記憶部２３０や二次記憶部２４０に対するデータの読出や書込を行う。読出書込実行部２５２が当該データの読出や書込を行うことで、実行系ユニット１００の記憶する制御データ集合と、待機系ユニット２００の記憶する制御データ集合との同期が取られ、待機系ユニット２００は、実行系ユニット１００と同じ制御データ集合を記憶するようになる。
【００４５】
なお、読出書込実行部２５２が、読出書込実行部２５２自らの判定に基づいて一次記憶部２３０の空き容量を確保するようにしてもよい。この場合、読出書込実行部１５２は、一次記憶部１３０の記憶するデータを二次記憶部１４０に移動させて一次記憶部１３０の空き容量を増大させた際のデータ読出指示やデータ書込指示を送信しない。そして、読出書込実行部２５２は、読出書込実行部１５２と同様に、一次記憶部２３０の空き容量を検出し、一次記憶部２３０の空き容量が空き容量基準値より小さくなると、一次記憶部２３０の記憶するデータを二次記憶部２４０に移動させて一次記憶部２３０の空き容量を増大させる。
【００４６】
読出書込実行部２５２が、読出書込実行部２５２自らの判定に基づいて一次記憶部２３０の空き容量を確保することで、後述するように、実行系ユニット１００（読出書込実行部１５２）と、待機系ユニット２００（読出書込実行部２５２）とが、互いに異なる値の空き容量基準値を用いて、それぞれ、一次記憶部（一次記憶部１３０または２３０）の空き容量を確保する処理を行うか否かを判定することができる。
【００４７】
入出力部２５１は、処理部２２０との間でデータの入出力を行う。
特に、入出力部２５１は、実行系ユニット１００（読出書込実行部１５２）が送信したデータ読出指示やデータ書込指示を、ネットワーク３００や通信部２１０や処理部２２０を介して受信すると、当該データ読出指示やデータ書込指示を読出書込実行部２５２に出力する。
【００４８】
なお、制御システム１における各部の構成は、図１に示すものに限らず、様々な構成とすることができる。例えば、制御システム１が具備するユニットの数は図１に示す２つ（実行系ユニット１００および待機系ユニット２００）に限らず、３つ以上であってよい。この場合、いずれか１つのユニットが実行系ユニットとなり、他のユニットが待機系ユニットとなる。
また、制御システム１の具備する各ユニットは、同一の筐体に格納されていてもよいし、互いに異なる筐体に格納されていてもよい。
【００４９】
また、処理部１２０とデータ管理部１５０とが、同一の筐体に格納されていてもよいし、互いに異なる筐体に格納されていてもよい。さらには、処理部１２０とデータ管理部１５０とが、同一のＣＰＵ（Central Processing Unit、中央処理装置）を用いて実現されていてもよい。同様に、処理部２２０とデータ管理部２５０とが、同一の筐体に格納されていてもよいし、互いに異なる筐体に格納されていてもよい。さらには、処理部２２０とデータ管理部２５０とが、同一のＣＰＵを用いて実現されていてもよい。
【００５０】
次に、図２〜図７を参照して制御システム１の動作について説明する。
図２は、データ管理部１５０が行う処理の手順を示すフローチャートである。データ管理部１５０は、制御システム１が起動して動作状態となると、同図の処理を開始する。
同図の処理において、読出書込実行部１５２は、まず、処理部１２０からのデータ書込指示に対する処理を行う（ステップＳ１０１）。次に、読出書込実行部１５２は、処理部１２０からのデータ読出指示に対する処理を行う（ステップＳ１０２）。そして、読出書込実行部１５２は、二次記憶部１４０から一次記憶部１３０への制御データ集合の転送に関する処理を行う（ステップＳ１０３）。次に、読出書込実行部１５２は、一次記憶部１３０の空き容量の確保に関する処理を行う（ステップＳ１０４）。その後、ステップＳ１０１に戻る。
【００５１】
なお、データ管理部１５０（読出書込実行部１５２）が、ステップＳ１０１〜Ｓ１０４の各処理を行う順序は、図２に示す順序に限らず、様々な順序とすることができる。例えば、データ管理部１５０がステップＳ１０１〜Ｓ１０４の各処理を並列に実行するようにしてもよい。
【００５２】
図３は、データ管理部１５０が、処理部１２０からのデータ書込指示に対する処理を行う手順を示すフローチャートである。データ管理部１５０は、図２のステップＳ１０１において、図３の処理を行う。
図３の処理において、読出書込実行部１５２は、入出力部１５１が処理部１２０からのデータ書込指示を取得したか否か（すなわち、処理部１２０から出力されたデータ書込指示の有無）を判定する（ステップＳ１２１）。データ書込指示を取得していないと判定した場合（ステップＳ１２１：ＮＯ）、同図の処理を終了する。
【００５３】
一方、ステップＳ１２１においてデータ書込指示を取得していると判定した場合（ステップＳ１２１：ＹＥＳ）、読出書込実行部１５２は、当該データ書込指示に従って、一次記憶部１３０に制御データ集合を書き込む（ステップＳ１２２）。具体的には、読出書込実行部１５２は、当該データ書込指示に含まれる検索キーに対応した制御データ集合を一次記憶部１３０が既に記憶している場合は、当該制御データ集合を更新し、記憶していない場合は、新たに制御データ集合を書き込む。
【００５４】
そして、読出書込実行部１５２は、読出書込実行部１５２自らが行った制御データ集合の書込と同じ書込を行うよう指示するデータ書込指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる（ステップＳ１２３）。ここで、読出書込実行部１５２は、一次記憶部１３０に書き込んだ制御データ集合および当該制御データ集合に対応する検索キーを含むデータ書込指示を、待機系ユニット２００へ送信させる。
その後、ステップＳ１２１に戻る。
【００５５】
このように、読出書込実行部１５２は、書込を指示された制御データ集合を、まず、一次記憶部１３０に書き込む。従って、一次記憶部１３０が記憶している制御データ集合は有効なデータ（適切に更新されている一連のデータ）となっている。
【００５６】
図４は、データ管理部１５０が、処理部１２０からのデータ読出指示に対する処理を行う手順を示すフローチャートである。データ管理部１５０は、図２のステップＳ１０２において、図４の処理を行う。
図４の処理において、読出書込実行部１５２は、入出力部１５１が処理部１２０からのデータ読出指示を取得したか否か（すなわち、処理部１２０から出力されたデータ読出指示の有無）を判定する（ステップＳ１４１）。データ読出指示を取得していないと判定した場合（ステップＳ１４１：ＮＯ）、同図の処理を終了する。
【００５７】
一方、ステップＳ１４１においてデータ読出指示を取得していると判定した場合（ステップＳ１４１：ＹＥＳ）、読出書込実行部１５２は、当該データ読出指示に含まれる検索キーを用いて、一次記憶部１３０に対して制御データ集合の検索を行い（ステップＳ１４２）、要求された制御データ集合を一次記憶部１３０が記憶しているか否かを判定する（ステップＳ１４３）。
【００５８】
一次記憶部１３０が記憶していると判定した場合（ステップＳ１４３：ＹＥＳ）、読出書込実行部１５２は、当該制御データ集合を、一次記憶部１３０から読み出す（ステップＳ１４４）。そして、読出書込実行部１５２は、得られた制御データ集合を、データ読出指示に対する応答として、入出力部１５１に出力する（ステップＳ１４５）。入出力部１５１は、当該制御データ集合を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
その後、同図の処理を終了する。
【００５９】
一方、ステップＳ１４３において、一次記憶部１３０が当該制御データ集合を記憶していないと判定した場合（ステップＳ１４３：ＮＯ）、読出書込実行部１５２は、データ読出指示に含まれる検索キーに対応する制御データ集合を、二次記憶部１４０から読み出す（ステップＳ１５１）。
そして、読出書込実行部１５２は、ステップＳ１５１で二次記憶部１４０から読み出した制御データ集合を、一次記憶部１３０に書き込む（ステップＳ１５２）。この場合、ステップＳ１４３における判定結果が示すように、一次記憶部１３０は、データ読出指示に含まれる検索キーに対応する制御データ集合を記憶していない。そこで、読出書込実行部１５２は、二次記憶部１４０から読み出した制御データ集合を、新たな制御データ集合として一次記憶部１３０に書き込む。
【００６０】
次に、読出書込実行部１５２は、ステップＳ１５１〜Ｓ１５２において読出書込実行部１５２自らが行った制御データ集合のコピーと同じコピーを行わせる指示を入出力部１５１に出力する（ステップＳ１５３）。入出力部１５１は、当該指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
例えば、読出書込実行部１５２は、読出書込実行部１５２自らが行った制御データ集合のコピーと同じコピーを行わせる指示として、ステップＳ１５２において一次記憶部１３０に書き込んだ制御データ集合を一次記憶部２３０に書き込むよう指示するデータ書込指示を、入出力部１５１に出力する。その際、読出書込実行部１５２は、制御データ集合および検索キーを含むデータ書込指示を入出力部１５１に出力する。
あるいは、読出書込実行部１５２が、ステップＳ１５１において二次記憶部１４０から読み出した制御データ集合と同一の制御データ集合を二次記憶部２４０から読み出すよう指示するデータ読出指示と、読み出した制御データ集合を一次記憶部２３０に書き込むよう指示するデータ書込指示とを入出力部１５１に出力するようにしてもよい。
ステップＳ１５３の後、ステップＳ１４５に進む。
【００６１】
図５は、データ管理部１５０が、二次記憶部１４０から一次記憶部１３０への制御データ集合の転送に関する処理を行う手順を示すフローチャートである。データ管理部１５０は、図２のステップＳ１０３において、図５の処理を行う。
図５の処理において、読出書込実行部１５２は、制御対象９００からの状況情報を取得し、制御対象９００における状況の変化量を算出する（ステップＳ１６１）。例えば、読出書込実行部１５２は、発電機出力の最新データおよび気温の最新データを取得し、前回、二次記憶部１４０から制御データ集合を読み出して一次記憶部１３０に書き込んだ際の発電機出力および気温とのユークリッド距離を、変化量として算出する。
【００６２】
そして、読出書込実行部１５２は、ステップＳ１６１で算出した変化量が、所定の閾値以上か否かを判定する（ステップＳ１６２）。変化量が閾値未満であると判定した場合（ステップＳ１６２：ＮＯ）、同図の処理を終了する。
一方、変化量が閾値以上であると判定した場合（ステップＳ１６２：ＹＥＳ）、読出書込実行部１５２は、ステップＳ１６１で取得した状況情報（発電機出力の最新データおよび気温の最新データ）を検索キーとして、一次記憶部１３０に対して制御データ集合の検索を行い（ステップＳ１６３）、該当する制御データ集合を一次記憶部１３０が既に記憶しているか否かを判定する（ステップＳ１６４）。
【００６３】
一次記憶部１３０が既に記憶していると判定した場合（ステップＳ１６４：ＹＥＳ）、同図の処理を終了する。
一方、一次記憶部１３０が、該当する制御データを未だ記憶していないと判定した場合（ステップＳ１６４：ＮＯ）、読出書込実行部１５２は、一次記憶部１３０から二次記憶部１４０へ移動させる制御データ集合を選択する（ステップＳ１６５）。例えば、上述したように、読出書込実行部１５２は、制御データ集合が一次記憶部１３０に書き込まれてからの経過時間に基づいて、経過時間の最も長い制御データ集合を選択する。
【００６４】
そして、読出書込実行部１５２は、ステップＳ１６５で選択した制御データ集合を、対応付けられている検索キーと共に一次記憶部１３０から読み出し、これら制御データ集合や検索キーを記憶していた記憶領域を解放する（ステップＳ１６６）。
そして、読出書込実行部１５２は、ステップＳ１６６で読み出した制御データ集合を、二次記憶部１４０の記憶領域のブロックのうち、ステップＳ１６６で読み出した検索キーに対応するブロックに書き込む（ステップＳ１６７）。
【００６５】
次に、読出書込実行部１５２は、ステップＳ１６１で取得した状況情報（発電機出力の最新データおよび気温の最新データ）に対応付けられている制御データ集合を、二次記憶部１４０から読み出す（ステップＳ１６８）。
そして、読出書込実行部１５２は、ステップＳ１６８で読み出した制御データ集合を、新たな制御データ集合として一次記憶部１３０に書き込む（ステップＳ１６９）。
【００６６】
次に、読出書込実行部１５２は、図５の処理において読出書込実行部１５２自らが行った制御データ集合の転送と同じ転送を行わせる指示を入出力部１５１に出力する（ステップＳ１７０）。入出力部１５１は、当該指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
例えば、読出書込実行部１５２は、読出書込実行部１５２自らが行った制御データ集合の転送と同じ転送を行わせる指示として、ステップＳ１６６において行った一次記憶部１３０の記憶領域の解放と同様に、一次記憶部２３０の記憶領域を解放するよう指示する解放指示と、ステップＳ１６７において二次記憶部１４０に書き込んだ制御データ集合を二次記憶部２４０に書き込むよう指示するデータ書込指示と、ステップＳ１６９において一次記憶部１３０に書き込んだ制御データ集合を一次記憶部２３０に書き込むよう指示するデータ書込指示とを、入出力部１５１に出力する。
ステップＳ１７０の後、図５の処理を終了する。
【００６７】
なお、読出書込実行部１５２が、複数の制御データ集合を二次記憶部１４０から一次記憶部１３０に転送するようにしてもよい。例えば、読出書込実行部１５２が、ステップＳ１６８において、二次記憶部１４０の記憶する制御データ集合のうち、検索キーとして対応付けられている発電機出力および気温と、発電機出力の最新データおよび気温の最新データとの距離が近い順に所定個の制御データ集合を選択し、選択した制御データ集合をステップＳ１６９において一次記憶部１３０に書き込むようにしてもよい。
読出書込実行部１５２が、複数の制御データ集合を一次記憶部１３０に転送しておくことで、処理部１２０から制御データ集合を要求された際の、一次記憶部１３０におけるヒット率を高めることができる。
【００６８】
図６は、データ管理部１５０が、一次記憶部１３０の空き容量の確保に関する処理を行う手順を示すフローチャートである。データ管理部１５０は、図２のステップＳ１０４において、図６の処理を行う。
図６の処理において、読出書込実行部１５２は、一次記憶部１３０の空き容量を検出する（ステップＳ１８１）。そして、読出書込実行部１５２は、検出した空き容量と、予め記憶する空き容量基準値とを比較して、空き容量が不足しているか否か（検出した空き容量が空き容量基準値未満か否か）を判定する（ステップＳ１８２）。
【００６９】
空き容量が不足していないと判定した場合（ステップＳ１８２：ＮＯ）、同図の処理を終了する。
一方、空き容量が不足していると判定した場合（ステップＳ１８２：ＹＥＳ）、読出書込実行部１５２は、一次記憶部１３０から二次記憶部１４０へ移動させる制御データ集合を選択する（ステップＳ１８３）。例えば、上述したように、読出書込実行部１５２は、制御データ集合が一次記憶部１３０に書き込まれてからの経過時間に基づいて、経過時間の長い順に、空き容量不足分（空き容量検出値と空き容量基準値との差）に相当する個数の制御データ集合を選択する。
【００７０】
そして、読出書込実行部１５２は、ステップＳ１８３で選択した制御データ集合の各々を、検索キーと共に一次記憶部１３０から読み出し、これら制御データ集合や検索キーを記憶していた記憶領域を解放する（ステップＳ１８４）。
そして、読出書込実行部１５２は、ステップＳ１８４で読み出した制御データ集合の各々を、二次記憶部１４０の記憶領域のブロックのうち、ステップＳ１８４で読み出した検索キーに対応するブロックに書き込む（ステップＳ１８５）。
【００７１】
次に、読出書込実行部１５２は、ステップＳ１８３〜Ｓ１８５において読出書込実行部１５２自らが行った制御データ集合の移動および記憶領域の解放と同じ処理を行わせる指示を入出力部１５１に出力する（ステップＳ１８６）。入出力部１５１は、当該指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
例えば、読出書込実行部１５２は、読出書込実行部１５２自らが行った処理と同じ処理を行わせる指示として、ステップＳ１８４において行った一次記憶部１３０の記憶領域の解放と同様に、一次記憶部２３０の記憶領域を解放するよう指示する解放指示と、ステップＳ１８５において二次記憶部１４０に書き込んだ制御データ集合を二次記憶部２４０に書き込むよう指示するデータ書込指示とを、入出力部１５１に出力する。
ステップＳ１８６の後、図６の処理を終了する。
【００７２】
図７は、データ管理部２５０が行う処理の手順を示すフローチャートである。データ管理部２５０は、制御システム１が起動して動作状態となると、同図の処理を開始する。なお、データ管理部２５０は、データ管理部１５０（読出書込実行部１５２）からの指示をバッファに一時保存し、指示が発せられた順に処理する。
【００７３】
図７の処理において、読出書込実行部２５２は、入出力部２５１が、読出書込実行部１５２から出力された、一次記憶部２３０へのデータ書込指示を取得したか否かを判定する（ステップＳ２０１）。データ書込指示を取得していると判定した場合（ステップＳ２０１：ＹＥＳ）、読出書込実行部２５２は、当該データ書込指示に従って、一次記憶部２３０に制御データ集合を書き込む（ステップＳ２０２）。
【００７４】
次に、読出書込実行部２５２は、入出力部２５１が、読出書込実行部１５２から出力された、二次記憶部２４０へのデータ書込指示を取得したか否かを判定する（ステップＳ２１１）。データ書込指示を取得していると判定した場合（ステップＳ２１１：ＹＥＳ）、読出書込実行部２５２は、当該データ書込指示に従って、二次記憶部２４０に制御データ集合を書き込む（ステップＳ２１２）。
【００７５】
次に、読出書込実行部２５２は、入出力部２５１が、読出書込実行部１５２から出力された、一次記憶部２３０からのデータ読出指示を取得したか否かを判定する（ステップＳ２２１）。データ読出指示を取得していると判定した場合（ステップＳ２２１：ＹＥＳ）、読出書込実行部２５２は、当該データ読出指示に従って、一次記憶部２３０から制御データ集合を読み出す（ステップＳ２２２）。
【００７６】
次に、読出書込実行部２５２は、入出力部２５１が、読出書込実行部１５２から出力された、二次記憶部２４０からのデータ読出指示を取得したか否かを判定する（ステップＳ２３１）。データ読出指示を取得していると判定した場合（ステップＳ２３１：ＹＥＳ）、読出書込実行部２５２は、当該データ読出指示に従って、二次記憶部２４０から制御データ集合を読み出す（ステップＳ２３２）。
【００７７】
次に、読出書込実行部２５２は、入出力部２５１が、読出書込実行部１５２から出力された、一次記憶部２３０の記憶領域の解放指示を取得したか否かを判定する（ステップＳ２４１）。解放指示を取得していると判定した場合（ステップＳ２４１：ＹＥＳ）、読出書込実行部２５２は、当該解放指示に従って、一次記憶部２３０の記憶領域を解放する（ステップＳ２４２）。
その後、ステップＳ２０１に戻る。
【００７８】
一方、ステップＳ２０１において、入出力部２５１が、該当するデータ書込指示を取得していないと判定した場合（ステップＳ２０１：ＮＯ）、ステップＳ２１１に進む。
また、ステップＳ２１１において、入出力部２５１が、該当するデータ書込指示を取得していないと判定した場合（ステップＳ２１１：ＮＯ）、ステップＳ２２１に進む。
また、ステップＳ２２１において、入出力部２５１が、該当するデータ読出指示を取得していないと判定した場合（ステップＳ２２１：ＮＯ）、ステップＳ２３１に進む。
また、ステップＳ２３１において、入出力部２５１が、該当するデータ読出指示を取得していないと判定した場合（ステップＳ２３１：ＮＯ）、ステップＳ２４１に進む。
また、ステップＳ２４１において、入出力部２５１が、解放指示を取得していないと判定した場合（ステップＳ２４１：ＮＯ）、ステップＳ２０１に戻る。
【００７９】
以上のように、読出書込実行部１５２は、制御対象９００の状況を示す状況情報に基づいて、一次記憶部１３０に対するデータの書込や読出を行う。これにより、二次記憶部１４０に対するデータの書込や読出の回数を低減させることができ、二次記憶部１４０の寿命を延ばすことができる。この点で、制御システム１の信頼性を高めることができ、ひいては、故障による制御対象９００の停止を低減することができ、制御対象９００および制御システム１の稼働率を向上させることができる。
【００８０】
なお、二次記憶部１４０や二次記憶部２４０が、ハードディスクドライブに代えてソリッドステートドライブを具備するようにしてもよい。この場合、上述したように、二次記憶部１４０の記憶する制御データ集合の一部を一次記憶部１３０に記憶させて二次記憶部１４０に対するデータの書込および読出の回数を低減させるようにしてもよいし、あるいは、二次記憶部１４０に対するデータの書込回数を低減させるようにしてもよい。ソリッドステートドライブは、特に、データを書き込む際に状態劣化を起こし、やがて寿命に至る。従って、ソリッドステートドライブへの書込回数を低減させることで、当該ソリッドステートドライブの寿命を延ばすことができる。
以下、図８〜１０を参照して、二次記憶部１４０に対するデータの書込回数を低減させる場合に、データ管理部１５０が行う処理について説明する。
【００８１】
図８は、二次記憶部１４０に対するデータの書込回数を低減させる場合に、データ管理部１５０が行う処理の手順を示すフローチャートである。データ管理部１５０は、図２の処理に代えて、図８の処理を行う。
図８の処理において、ステップＳ３０１は、図２のステップＳ１０１と同様である。
ステップＳ３０１の後、読出書込実行部１５２は、処理部１２０からのデータ読出指示に対する処理を行う（ステップＳ３０２）。そして、読出書込実行部１５２は、二次記憶部１４０から一次記憶部１３０への制御データ集合の移動に関する処理を行う（ステップＳ３０３）。ステップＳ３０４は、図２のステップＳ１０４と同様である。ステップＳ３０４の後、ステップＳ３０１に戻る。
【００８２】
なお、データ管理部１５０（読出書込実行部１５２）が、ステップＳ３０１〜Ｓ３０４の各処理を行う順序は、図８に示す順序に限らず、様々な順序とすることができる。例えば、データ管理部１５０がステップＳ３０１〜Ｓ３０４の各処理を並列に実行するようにしてもよい。
【００８３】
図９は、データ管理部１５０が、処理部１２０からのデータ読出指示に対する処理を行う手順を示すフローチャートである。データ管理部１５０は、図８のステップＳ２０２において、図９の処理を行う。
図９の処理において、読出書込実行部１５２は、入出力部１５１が処理部１２０からのデータ読出指示を取得したか否か（すなわち、処理部１２０から出力されたデータ読出指示の有無）を判定する（ステップＳ３２１）。データ読出指示を取得していないと判定した場合（ステップＳ３２１：ＮＯ）、同図の処理を終了する。
【００８４】
一方、ステップＳ３２１においてデータ読出指示を取得していると判定した場合（ステップＳ３２１：ＹＥＳ）、読出書込実行部１５２は、当該データ読出指示に含まれる検索キーに対応付けられている制御データ集合を、二次記憶部１４０から読み出す（ステップＳ３２２）。
【００８５】
次に、読出書込実行部１５２は、データ読出指示に含まれる検索キーを用いて、一次記憶部１３０に対して制御データの検索を行い、該当するデータを一次記憶部１３０が記憶していれば、当該データを読み出す（ステップＳ３２３）。
ここで、一次記憶部１３０が、上記と同様に、制御データ集合を一纏まりとして記憶するようにしてもよいが、より小さい単位で制御データを記憶するようにしてもよい。例えば、一次記憶部１３０が、１つの制御データ集合を、複数のページに分割して記憶するようにしてもよい。そして、例えば制御データ毎にサンプリング周期が異なる場合に、読出書込実行部１５２が、制御データ毎のデータ書込指示を取得し、ステップＳ１２２（図３）において、一次記憶部１３０の記憶領域の各ページのうち、取得した制御データの記憶されているページを書き換えるようにしてもよい。
【００８６】
次に、読出書込実行部１５２は、ステップＳ３２２で二次記憶部１４０から読み出した制御データ（制御データ集合）と、ステップＳ３２３で一次記憶部１３０から読み出した制御データとをマージする（ステップＳ３２４）。具体的には、読出書込実行部１５２は、一次記憶部１３０と二次記憶部１４０とで値が異なるデータについては、一次記憶部１３０の記憶するデータを用いて、データ読出指示に対する応答としての制御データ集合を生成する。また、二次記憶部１４０のみが記憶しているデータについては、二次記憶部１４０の記憶するデータを用いる。一方、一次記憶部１３０と二次記憶部１４０とが同じ値を記憶している制御データについては、いずれを用いるようにしてもよい。例えば、読出書込実行部１５２は、一次記憶部１３０から読み出したデータをページ単位で使用し、読み出したページに含まれるデータについては、一次記憶部１３０から読み出したデータを用いる。
【００８７】
次に、読出書込実行部１５２は、ステップＳ３２５で生成した制御データ集合を、データ読出指示に対する応答として、入出力部１５１を介して処理部１２０に出力する（ステップＳ３２５）。
その後、図９の処理を終了する。
【００８８】
図１０は、データ管理部１５０が、二次記憶部１４０から一次記憶部１３０への制御データ集合の移動に関する処理を行う手順を示すフローチャートである。データ管理部１５０は、図８のステップＳ２０３において、図１０の処理を行う。
図１０の処理において、ステップＳ３４１〜Ｓ３４７は、図５のステップＳ１６１〜Ｓ１６７と同様である。ただし、読出書込実行部１５２が、一次記憶部１３０の記憶領域におけるページ単位など、制御データ集合より細かい単位で処理を行うようにしてもよい。
【００８９】
また、ステップＳ３４７の後、読出書込実行部１５２は、図１０の処理において読出書込実行部１５２自らが行った制御データの移動と同じ移動を行わせる指示を入出力部１５１に出力する（ステップＳ３４８）。入出力部１５１は、当該指示を、処理部１２０を介して通信部１１０に出力し、待機系ユニット２００へ送信させる。
例えば、読出書込実行部１５２は、読出書込実行部１５２自らが行った制御データ集合の移動と同じ転送を行わせる指示として、ステップＳ３４６において行った一次記憶部１３０の記憶領域の解放と同様に、一次記憶部２３０の記憶領域を解放するよう指示する解放指示と、ステップＳ３４７において二次記憶部１４０に書き込んだ制御データを二次記憶部２４０に書き込むよう指示するデータ書込指示を、入出力部１５１に出力する。
ステップＳ３４８の後、図５の処理を終了する。
【００９０】
ここで、図１０の処理と図５の処理とを比較すると、図１０では、二次記憶部１４０の記憶する制御データを一次記憶部１３０にコピーする処理（図５のステップＳ１６８〜Ｓ１６９）が行われていない。これは、図１０の処理では、二次記憶部１４０へのデータの書込回数を低減させることを目的としており、二次記憶部１４０からデータの読出回数については、特に低減を意図していないためである。
なお、待機系ユニット２００が行う処理の手順は、図７で説明したとおりである。
【００９１】
以上のように、読出書込実行部１５２は、データ書込指示にて書込を指示された制御データを一次記憶部１３０に書き込み、二次記憶部１４０へのデータ書込回数を低減させる。これにより、二次記憶部１４０の寿命を延ばすことができる。この点で、制御システム１の信頼性を高めることができ、ひいては、故障による制御対象９００の停止を低減することができ、制御対象９００および制御システム１の稼働率を向上させることができる。
【００９２】
また、読出書込実行部１５２は、制御対象９００の状況が大きく変化した場合（具体的には、図１０のステップＳ３４２において、変化量が閾値以上であると判定した場合）、処理部１２０から要求される可能性の低い制御データを二次記憶部１４０に移動させて一次記憶部１３０の記憶領域を解放し、一方、二次記憶部１４０から一次記憶部１３０への制御データのコピーを行わない。
二次記憶部１４０から一次記憶部１３０への制御データのコピーを抑制することで、一次記憶部１３０と二次記憶部１４０との間でのデータ転送量や、実行系ユニット１００と待機系ユニット２００とのデータ通信量を削減することができる。これにより、実行系ユニット１００や待機系ユニット２００の負荷を軽減されることができ、制御システム１の信頼性を一層向上させ得る。
【００９３】
なお、実行系ユニット１００（読出書込実行部１５２）と、待機系ユニット２００（読出書込実行部２５２）とが、それぞれ、一次記憶部の空き領域を確保する処理（図６で説明した処理）を行うようにし、実行系ユニット１００と、待機系ユニット２００とが、互いに異なる値の空き容量基準値を用いて、それぞれ、一次記憶部（一次記憶部１３０または一次記憶部２３０）の空き容量を確保する処理を行うか否かの判定（図６のステップＳ１８２）を行うようにしてもよい。
実行系ユニット１００と待機系ユニット２００とで、互いに異なる空き容量基準値を用いることで、二次記憶部１４０に対するデータの書込回数や読出回数が異なり、二次記憶部１４０と二次記憶部２４０とが互いに異なるタイミングで寿命を迎えることが期待される。従って、二次記憶部１４０と２４０とが同時期に故障するおそれを低減させることができ、制御システム１の信頼性をさらに向上させることができる。
【００９４】
なお、二次記憶部の余寿命に応じて、データ管理部が、一次記憶部に記憶させるデータ量を変化させるようにしてもよい。
図１１は、二次記憶部の余寿命に応じて一次記憶部に記憶させるデータ量を変化させる場合の、制御システムの機能構成を示す概略ブロック図である。同図において、制御システム１は、実行系ユニット１００と、待機系ユニット２００と、ネットワーク３００と、制御対象９００とを具備する。実行系ユニット１００は、通信部１１０と、処理部１２０と、一次記憶部１３０と、二次記憶部１４０と、データ管理部１５０とを具備する。データ管理部１５０は、入出力部１５１と、読出書込実行部１５２と、余寿命判定部１５３と、空き容量基準値設定部１５４とを具備する。待機系ユニット２００は、通信部２１０と、処理部２２０と、一次記憶部２３０と、二次記憶部２４０と、データ管理部２５０とを具備する。データ管理部２５０は、入出力部２５１と、読出書込実行部２５２と、余寿命判定部２５３と、空き容量基準値設定部２５４とを具備する。
【００９５】
同図において、図１の各部に対応して同様の機能を有する部分には、同一の符号（１、１００、１１０、１２０、１３０、１４０、１５０〜１５２、２００、２１０、２２０、２３０、２４０、２５０〜２５２、３００、９００）を付して説明を省略する。図１１では、図１に示される各部に加えて、データ管理部１５０が、余寿命判定部１５３と空き容量基準値設定部１５４とをさらに具備し、データ管理部２５０が、余寿命判定部２５３と空き容量基準値設定部２５４とをさらに具備している。
【００９６】
余寿命判定部１５３は、二次記憶部１４０の余寿命を判定する。例えば、二次記憶部１４０が、二次記憶部１４０自らに対して行われたデータの書込回数および読出回数をカウントし記憶しておく。そして、余寿命判定部１５３は、当該カウント値と、二次記憶部１４０に対して可能なデータ読込回数および書込回数として予め設定されている回数との差に基づいて、二次記憶部１４０の余寿命を検出（算出）する。そして、余寿命判定部１５３は、検出した余寿命が、所定の余寿命（余寿命基準値）より短いか否かを判定する。
空き容量基準値設定部１５４は、二次記憶部１４０の余寿命が所定の余寿命より短いと余寿命判定部１５３が判定すると、空き容量基準値をより小さな値に設定する。
【００９７】
余寿命判定部２５３は、二次記憶部２４０の余寿命を判定する。例えば、二次記憶部２４０が、二次記憶部２４０自らに対して行われたデータの書込回数および読出回数をカウントし記憶しておく。そして、余寿命判定部２５３は、当該カウント値と、二次記憶部２４０に対して可能なデータ読込回数および書込回数として予め設定されている回数との差に基づいて、二次記憶部２４０の余寿命を検出（算出）する。そして、余寿命判定部２５３は、検出した余寿命が、所定の余寿命（余寿命基準値）より短いか否かを判定する。
空き容量基準値設定部２５４は、二次記憶部２４０の余寿命が所定の余寿命より短いと余寿命判定部２５３が判定すると、空き容量基準値をより小さな値に設定する。
【００９８】
次に図１２および図１３を参照して、制御システム１の動作について説明する。
図１２は、二次記憶部の余寿命に応じて一次記憶部に記憶させるデータ量を変化させる場合に、データ管理部１５０が行う処理の手順を示すフローチャートである。データ管理部１５０は、制御システム１が起動して動作状態となると、同図の処理を開始する。
同図の処理において、データ管理部１５０は、二次記憶部１４０の余寿命の管理に関する処理を行う（ステップＳ５０１）。また、ステップＳ５０２〜Ｓ５０５は、図２のステップＳ１０１〜Ｓ１０４と同様である。ステップＳ５０５の後、ステップＳ５０１に戻る。
【００９９】
なお、データ管理部１５０が、ステップＳ５０１〜Ｓ５０５の各処理を行う順序は、図１２に示す順序に限らず、様々な順序とすることができる。例えば、データ管理部１５０がステップＳ５０１〜Ｓ５０５の各処理を並列に実行するようにしてもよい。
【０１００】
図１３は、データ管理部１５０が、二次記憶部１４０の余寿命の管理に関する処理を行う手順を示すフローチャートである。データ管理部１５０は、図１２のステップＳ５０１において、図１３の処理を行う。
図１３の処理において、余寿命判定部１５３は、二次記憶部１４０の余寿命を検出（例えば、上記のように算出）する（ステップＳ５２１）。
【０１０１】
次に、余寿命判定部１５３は、ステップＳ５２１で検出した二次記憶部１４０の余寿命が、予め記憶する余寿命基準値以上か否かを判定する（ステップＳ５２１）。
余寿命基準値以上であると判定した場合（ステップＳ５２１：ＹＥＳ）、空き容量基準値設定部１５４は、一次記憶部１３０に対する空き容量基準値を、通常時の空き容量とする基準値（例えば、一次記憶部１３０の記憶容量全体の１０％以上を空き容量として確保する基準値）に設定する（ステップＳ５２３）。
その後、同図の処理を終了する。
【０１０２】
一方、ステップＳ５２１において、二次記憶部１４０の余寿命が余寿命基準値未満であると判定した場合（ステップＳ５２１：ＮＯ）、空き容量基準値設定部１５４は、一次記憶部１３０に対する空き容量基準値を、通常時よりも小さい容量とする基準値（例えば、一次記憶部１３０の記憶容量全体の５％以上を空き容量として確保する基準値）に設定する（ステップＳ５３１）。
【０１０３】
また、余寿命判定部１５３は、二次記憶部１４０の余寿命が余寿命基準より短くなったことを警告する警報を、入出力部１５１に出力する（ステップＳ５３２）。例えば、入出力部１５１は、当該警報を、処理部１２０、通信部１１０およびネットワーク３００を介して、制御システム１の具備する警報盤に出力し、警報盤が当該警報を表示する。
ステップＳ５３２の後、図１３の処理を終了する。
【０１０４】
以上のように、二次記憶部１４０の余寿命が短いと余寿命判定部１５３が判定すると、空き容量基準値設定部１５４は、一次記憶部１３０の空き容量基準値を、通常時よりも小さい値に設定する。これにより、二次記憶部１４０に対するデータの書込回数や読出回数をさらに低減させることができ、二次記憶部１４０の寿命をさらに延ばすことができる。この点で、制御システム１の信頼性を高めることができ、ひいては、故障による制御対象９００の停止を低減することができ、制御対象９００および制御システム１の稼働率を向上させることができる。
【０１０５】
なお、二次記憶部１４０の余寿命が余寿命基準値未満であると余寿命判定部１５３が判定した場合、処理部１２０がデータ書込要求やデータ読出要求を出力する頻度を低減させるようにしてもよい。これにより、二次記憶部１４０の寿命をさらに延ばすことができる。
また、図１１に示す構成においても、実行系ユニット１００（読出書込実行部１５２）と、待機系ユニット２００（読出書込実行部２５２）とが、それぞれ、一次記憶部の空き領域を確保する処理を行うようにし、実行系ユニット１００と、待機系ユニット２００とが、互いに異なる値の空き容量基準値を用いて、それぞれ、一次記憶部（一次記憶部１３０または一次記憶部２３０）の空き容量を確保する処理を行うか否かの判定を行うようにしてもよい。
【０１０６】
なお、データ管理部１５０および２５０の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【０１０７】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１０８】
１  制御システム
１００  実行系ユニット
１１０、２１０  通信部
１２０、２２０  処理部
１３０、１２０  一次記憶部
１４０、２４０  二次記憶部
１５０、２５０  データ管理部
１５１、２５１  入出力部
１５２、２５２  読出書込実行部
１５３、２５３  余寿命判定部
１５４、２５４  空き容量基準値設定部
２００  待機系ユニット
３００  ネットワーク
９００  制御対象
【図１】
0005881429.tif 000002
【図２】
0005881429.tif 000003
【図３】
0005881429.tif 000004
【図４】
0005881429.tif 000005
【図５】
0005881429.tif 000006
【図６】
0005881429.tif 000007
【図７】
0005881429.tif 000008
【図８】
0005881429.tif 000009
【図９】
0005881429.tif 000010
【図１０】
0005881429.tif 000011
【図１１】
0005881429.tif 000012
【図１２】
0005881429.tif 000013
【図１３】
0005881429.tif 000014