(57)【要約】【課題】信頼性を向上することができる冗長化システム及び冗長化方法を提供する。【解決手段】複数の演算装置のそれぞれは、データ生成部、通信部を備える。データ生成部は、前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成する。通信部は、現時点のブロックデータを前記複数の演算装置間で交換する。複数の演算装置の少なくとも１台は、検出対象の障害が検出されるとき、検出対象の機能を補うための機能制御部を備える。【選択図】図２
2018142077.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算装置を備える冗長化システムであって、
前記複数の演算装置のそれぞれは、
前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成するデータ生成部と、
前記現時点のブロックデータを前記複数の演算装置間で同報する通信部と、
を備え、
前記複数の演算装置の少なくとも１台は、
前記検出対象の障害が検出されるとき、前記検出対象の機能を補うための機能制御部、
を備える
冗長化システム。
【請求項２】
前記複数の演算装置のそれぞれは、
入力装置から入力データを取得する第２通信部と、
前記検出対象として、現時点の入力データに基づいて所定の演算を行って出力データを算出する制御演算部と、
前記出力データを算出する過程で得られる中間値データを記憶する記憶部と、
を備え、
前記データ生成部は、
前記検証値と、前記履歴情報に現時点の入力データ又は中間値データを追加してなる現時点の履歴情報と、を含むブロックデータを生成し、
前記機能制御部は、現時点の前記入力データの前記複数の演算装置間の出現頻度に基づいて前記通信部が取得した入力データの正誤を判定し、誤りと判定された入力データを正しいと判定された入力データに更新し、
前記中間値データの前記複数の演算装置間の出現頻度に基づいて前記制御演算部から得られた中間値データの正誤を判定し、誤りと判定された中間値データを正しいと判定された演算データに更新する
請求項１に記載の冗長化システム。
【請求項３】
前記複数の制御装置のそれぞれと入出力ネットワークを介して接続される通信部と、
前記出力データの前記複数の演算装置間の出現頻度に基づいて前記出力データの正誤を判定し、正しいと判定された出力データを選定するデータ選定部と、
前記検証値と、前時点までの出力データからなる出力履歴情報に現時点の前記出力データの選択結果を示す情報を追加した現時点の出力履歴情報と、を含む出力ブロックデータを生成するデータ生成部と、
を有する出力装置を備え、
前記通信部は、前記出力ブロックデータを前記入出力ネットワークに送出する
請求項２に記載の冗長化システム。
【請求項４】
前記複数の演算装置のそれぞれは、
前記検出対象として、所定のアプリケーションプログラムに基づく処理を実行する実行部、
を備え、
前記複数の演算装置のうち前記実行部が前記処理を実行する第１演算装置において、
前記処理の障害が検出されるとき、前記データ生成部は、前記検証値と、現時点の稼働状態の情報として前記障害に関する情報に基づいて第１ブロックデータを生成し、
前記通信部は、前記第１ブロックデータを前記複数の演算装置のうち前記第１演算装置とは異なる他の演算装置に送信し、
前記複数の演算装置のうち前記第１ブロックデータを取得した第２演算装置において、
前記機能制御部は、前記アプリケーションプログラムに基づく処理を起動し、
前記データ生成部は、前記第１ブロックデータに基づく検証値と、現時点の稼働状態の情報として前記起動に関する情報に基づいて第２ブロックデータを生成し、
前記通信部は、前記第２ブロックデータを前記複数の演算装置のうち前記第２演算装置とは異なる他の演算装置に送信する、
請求項１に記載の冗長化システム。
【請求項５】
前記複数の演算装置の少なくとも１台は、
検出対象の障害を検出する検出部を備え、
前記障害が検出されるとき、前記データ生成部は、前記検証値と、現時点の稼働状態の情報として前記障害に関する情報に基づいて第１ブロックデータを生成し、
前記通信部は、前記第１ブロックデータを前記複数の演算装置のうち前記少なくとも１台の演算装置とは異なる他の演算装置に送信し、
前記複数の演算装置のうち前記第１ブロックデータを取得した第２演算装置において、
前記検出対象の機能が補われるとき、前記データ生成部は、前記第１ブロックデータに基づく検証値と、前記現時点の稼働状態の情報として前記機能への対応に関する情報に基づいて第２ブロックデータを生成し、
前記通信部は、前記第２ブロックデータを前記複数の演算装置のうち前記第２演算装置とは異なる他の演算装置に送信する
請求項１から請求項４のいずれか一項に記載の冗長化システム。
【請求項６】
複数の演算装置を備える冗長化システムにおける冗長化方法であって、
前記複数の演算装置のそれぞれは、
前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成するデータ生成過程と、
前記現時点のブロックデータを前記複数の演算装置間で同報する通信過程と、
前記複数の演算装置の少なくとも１台は、
前記検出対象の障害が検出されるとき、前記検出対象の機能を補うための機能制御過程と、
を有する
冗長化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長化システム及び冗長化方法に関する。
【背景技術】
【０００２】
発電プラント、鉄道システム、船舶、自動車、工場のオートメーション等においては、それらの運転を制御するために分散制御システムが使用されることがある。分散制御システムは、冗長化構成を有する。冗長化構成とは、多重化構成とも呼ばれ、２つ又はそれ以上（例えば、４つ）のサブシステムを備え、サブシステム間で同一の処理を並列に行わせる構成である。このとき、各サブシステムの制御装置は、ネットワーク通信を介してデータ交換を行い、各制御装置が動作していること（ｋｅｅｐ  ａｌｉｖｅ）の確認、同一の演算を行っていることの確認を行う。また、各サブシステムの入出力コントローラ（以下、ＩＯコントローラ、と呼ぶ）、各制御装置から受信した指示値に対して多数決処理（ｖｏｔｉｎｇ）を行い、圧力調整弁や流量調整弁などのフィールド機器への指令値を決定する。
【０００３】
また、データセンタ、クラスタサーバでは、分散制御システムと同様に、分散型サーバシステムが使用されることがある。分散型サーバシステムには、中央サーバと複数の分散サーバから構成され、分散サーバが複数のアプリケーションプログラム（以下、単にアプリケーション又はアプリ、と呼ぶことがある）の処理を実行するシステムがある。中央サーバは、システム全体の処理の実行状態を監視し、分散サーバの障害発生時において、障害が発生した分散サーバが実行していた処理に係るアプリケーションと同一のアプリケーションの処理を起動する。これにより、分散サーバ間で実行していた処理が分散される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５７４６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、冗長化構成をとる場合、各制御装置が他の全制御装置に自装置で生成したデータを送信する。そのため、冗長化台数が増えると、システム全体の信頼性が向上する一方で、制御装置間で送受信されるデータの通信量が著しく増える。冗長化台数とは、冗長化構成におけるサブシステムの数である。冗長化台数は、多重度と呼ばれることもある。例えば、サブシステム、即ち制御装置の個数がｎ（ｎは、１より大きい整数）個である場合には、制御装置間における通信量は、冗長化構成をとらない場合のｎ（ｎ−１）／２倍となる。この点で、冗長化台数を容易に増やすことができないという課題があった。
また、分散型サーバシステムでは、分散サーバによるリソースの有効活用、信頼性向上のためにアプリケーションの配置管理が行われることがある。その場合、個々の分散サーバの稼働状態を監視するための中央サーバを必要とする。中央サーバの障害は、分散型サーバシステム全体の稼働に影響を及ぼしうるという課題があった。
【０００６】
本発明は、上述の課題を鑑みてなされたものであり、信頼性を向上することができる冗長化システム及び冗長化方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本実施形態の一態様は、複数の演算装置を備える冗長化システムであって、前記複数の演算装置のそれぞれは、前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成するデータ生成部と、前記現時点のブロックデータを前記複数の演算装置間で同報する通信部と、を備え、前記複数の演算装置の少なくとも１台は、前記検出対象の障害が検出されるとき、前記検出対象の機能を補うための機能制御部、を備える冗長化システムである。
【０００８】
本実施形態の他の態様は、上述の冗長化システムであって、前記複数の演算装置のそれぞれは、入力装置から入力データを取得する第２通信部と、前記検出対象として、現時点の入力データに基づいて所定の演算を行って出力データを算出する制御演算部と、前記出力データを算出する過程で得られる中間値データを記憶する記憶部と、を備え、前記データ生成部は、前記検証値と、前記履歴情報に現時点の入力データ又は中間値データを追加してなる現時点の履歴情報と、を含むブロックデータを生成し、前記機能制御部は、現時点の前記入力データの前記複数の演算装置間の出現頻度に基づいて前記通信部が取得した入力データの正誤を判定し、誤りと判定された入力データを正しいと判定された入力データに更新し、前記中間値データの前記複数の演算装置間の出現頻度に基づいて前記制御演算部から得られた中間値データの正誤を判定し、誤りと判定された中間値データを正しいと判定された演算データに更新する。
【０００９】
本実施形態の他の態様は、上述の冗長化システムであって、前記複数の制御装置のそれぞれと入出力ネットワークを介して接続される通信部と、前記出力データの前記複数の演算装置間の出現頻度に基づいて前記出力データの正誤を判定し、正しいと判定された出力データを選定するデータ選定部と、前記検証値と、前時点までの出力データからなる出力履歴情報に現時点の前記出力データの選択結果を示す情報を追加した現時点の出力履歴情報と、を含む出力ブロックデータを生成するデータ生成部と、を有する出力装置を備え、前記通信部は、前記出力ブロックデータを前記入出力ネットワークに送出する。
【００１０】
本発明の他の態様は、上述の冗長化システムであって、前記複数の演算装置のそれぞれは、前記検出対象として、所定のアプリケーションプログラムに基づく処理を実行する実行部、を備え、前記複数の演算装置のうち前記実行部が前記処理を実行する第１演算装置において、前記処理の障害が検出されるとき、前記データ生成部は、前記検証値と、現時点の稼働状態の情報として前記障害に関する情報に基づいて第１ブロックデータを生成し、前記通信部は、前記第１ブロックデータを前記複数の演算装置のうち前記第１演算装置とは異なる他の演算装置に送信し、前記複数の演算装置のうち前記第１ブロックデータを取得した第２演算装置において、前記機能制御部は、前記アプリケーションプログラムに基づく処理を起動し、前記データ生成部は、前記第１ブロックデータに基づく検証値と、現時点の稼働状態の情報として前記起動に関する情報に基づいて第２ブロックデータを生成し、前記通信部は、前記第２ブロックデータを前記複数の演算装置のうち前記第２演算装置とは異なる他の演算装置に送信する。
【００１１】
本発明の他の態様は、上述の冗長化システムであって、前記複数の演算装置の少なくとも１台は、検出対象の障害を検出する検出部を備え、前記障害が検出されるとき、前記データ生成部は、前記検証値と、現時点の稼働状態の情報として前記障害に関する情報に基づいて第１ブロックデータを生成し、前記通信部は、前記第１ブロックデータを前記複数の演算装置のうち前記少なくとも１台の演算装置とは異なる他の演算装置に送信し、前記複数の演算装置のうち前記第１ブロックデータを取得した第２演算装置において、前記検出対象の機能が補われるとき、前記データ生成部は、前記第１ブロックデータに基づく検証値と、前記現時点の稼働状態の情報として前記機能への対応に関する情報に基づいて第２ブロックデータを生成し、前記通信部は、前記第２ブロックデータを前記複数の演算装置のうち前記第２演算装置とは異なる他の演算装置に送信する。
【００１２】
本発明の他の態様は、複数の演算装置を備える冗長化システムにおける冗長化方法であって、前記複数の演算装置のそれぞれは、前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成するデータ生成過程と、前記現時点のブロックデータを前記複数の演算装置間で同報する通信過程と、前記複数の演算装置の少なくとも１台は、前記検出対象の障害が検出されるとき、前記検出対象の機能を補うための機能制御過程と、を有する冗長化方法。
【発明の効果】
【００１３】
本発明によれば、前記中央サーバのような演算装置の稼働状態を監視するための機器を設置しなくても、冗長化された個々の演算装置の分散処理を維持し、障害対応を行うためのデータを共有することができる。そのため、通信量の増大を抑えつつ演算装置を増やすことができるようになり冗長化システムの信頼性を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】第一実施形態に係る冗長化システムの一構成例を示すブロック図である。
【図２】第一実施形態に係る演算装置の機能構成の一例を示すブロック図である。
【図３】第一実施形態に係るブロックデータの例を示す図である。
【図４】第一実施形態に係る稼働管理処理の一例を示すフローチャートである。
【図５】第二実施形態に係る冗長化システムの一構成例を示すブロック図である。
【図６】第二実施形態に係る演算装置の機能構成の一例を示すブロック図である。
【図７】第二実施形態に係るブロックデータの例を示す図である。
【図８】第二実施形態に係るブロックデータの他の例を示す図である。
【図９】第二実施形態に係る比較採用処理の一例を示すフローチャートである。
【図１０】第三実施形態に係る冗長化システムの一構成例を示すブロック図である。
【図１１】第三実施形態に係る演算装置の機能構成の一例を示すブロック図である。
【図１２】第三実施形態に係るブロックデータの例を示す図である。
【図１３】第三実施形態の一変形例に係るブロックデータの例を示す図である。
【図１４】第四実施形態に係る冗長化システムの一構成例を示すブロック図である。
【図１５】第四実施形態に係る出力装置の機能構成の一例を示すブロック図である。
【図１６】第四実施形態に係るブロックデータの例を示す図である。
【発明を実施するための形態】
【００１５】
＜第一実施形態＞
以下、本発明の第一実施形態に係る冗長化システムについて、図１〜図４を参照して説明する。
図１は、本実施形態に係る冗長化システム１の一構成例を示すブロック図である。
冗長化システム１は、複数の演算装置１０を含んで構成される。複数の演算装置１０は、互いに共通の構成を備える。演算装置１０ａ等のａ等の符号は、個々の演算装置を区別するための符号である。演算装置１０ａ−１０ｄは、それぞれ情報ネットワークＮＷで通信可能に接続され、相互に各種のデータを送受信できる。図１に示す例では、演算装置１０の台数は、４個であるが、３個以上であればよい。また、台数の上限は特に設けられない。本実施形態では、演算装置１０は、例えば、サーバ装置として実現されるが、これには限られない。演算装置１０は、後述する制御装置、出力装置として実現されてもよい。
【００１６】
次に、本実施形態に係る演算装置１０の構成について説明する。図２は、本実施形態に係る演算装置１０の機能構成の一例を示すブロック図である。
演算装置１０は、制御演算部（実行部）１１、検出部１２、機能制御部１３、ブロックデータ処理部１４、通信部１６及び記憶部１８を備える。演算装置１０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の演算処理を実行する演算デバイスから構成される。演算デバイスは、記憶部１８に記憶された所定の制御プログラムを読み出し、読み出した制御プログラムに記述された命令が示す処理を実行する。プログラムに記述された命令が示す処理を実行することを、単に「プログラムを実行する」と呼ぶことがある。また、プログラムには、アプリケーションプログラムが含まれる。以下の説明では、アプリケーションプログラムを単に「アプリケーション」又は「アプリ」と呼ぶことがある。また、機能部間でその処理を実行する演算デバイスが共通であってもよいし、異なっていてもよい。
【００１７】
制御演算部１１は、制御演算部１１は、記憶部１８に記憶された所定のアプリケーションを読み出し、読み出したアプリケーションに記述された命令が示す処理を実行する。実行対象のアプリケーションは、例えば、ユーザの操作により指示されたアプリケーションである。
【００１８】
検出部１２は、制御演算部１１におけるアプリケーションの実行状態を所定時間毎に検出する。検出部１２は、アプリケーションの実行状態として、例えば、起動状態と障害発生状態を検出する。起動状態は、例えば、起動済み（実行中）、起動中、停止（未起動）のいずれかの状態である。障害発生状態は、障害の発生の有無を示す状態である。障害には、例えば、アプリケーションの実行の停止が指示されていないにも関わらず、その実行が停止した状態（異常終了）が含まれる。検出部１２は、検出したアプリケーションの障害発生状態を示す障害発生情報を記憶部１８に記憶する。
【００１９】
機能制御部１３は、ブロックデータ処理部１４の受信データ解析部１４２が判定した各演算装置１０におけるアプリケーションの実行状態に基づいて、制御演算部１１にアプリケーションの起動を制御する。より具体的には、いずれかの演算装置１０の機能制御部１３のアプリケーションの実行に障害が発生しているとき、自装置の制御演算部１１にアプリケーションの起動を指示する。いずれかの演算装置１０には、自装置も含まれる。制御演算部１１において正常にアプリケーションが起動したとき、機能制御部１３は、そのアプリケーションの起動を示す起動情報を記憶部１８に記憶する。
また、制御演算部１１にアプリケーションの起動を指示した後、他の演算装置１０の機能制御部１３がアプリケーションを起動したとき、自装置の制御演算部１１に起動を指示したアプリケーションの実行を停止させる。その場合には、機能制御部１３は、そのアプリケーションの実行の停止を示す起動情報を示す起動情報を記憶部１８に記憶する。そのため、複数の演算装置１０間でのアプリケーションの二重起動が防止される。
【００２０】
ブロックデータ処理部１４は、ブロックデータに係る処理を実行する。ブロックデータ処理部１４は、ブロックデータ保存部１４１、受信データ解析部１４２、及び送信データ生成部１４３を含んで構成される。
【００２１】
ブロックデータ保存部１４１は、他の演算装置１０から通信部１６を介して受信したブロックデータと自装置の送信データ生成部１４３が生成したブロックデータを一時的に保存する。
【００２２】
受信データ解析部１４２は、ブロックデータ保存部１４１から、他の演算装置１０の送信データ生成部１４３から受信したブロックデータと自装置の送信データ生成部１４３が生成したブロックデータを読み出す。受信データ解析部１４２は、各演算装置１０のブロックデータに記述された最新の時点の障害アプリケーション情報から各演算装置１０におけるアプリケーションの実行状態を解析する。受信データ解析部１４２は、最新の障害アプリケーション情報に、そのアプリケーションを起動した演算装置１０を示す再起動情報が含まれていない場合、その演算装置１０の機能制御部１３におけるアプリケーションの実行に障害が発生していると判定する。受信データ解析部１４２は、障害の発生を判定したアプリケーションに係る障害アプリケーション情報に、そのアプリケーションを起動した演算装置１０を示す再起動情報が含まれている場合、その再起動情報が示す演算装置１０の機能制御部１３が、そのアプリケーションと同一のアプリケーションの起動を判定する。
【００２３】
送信データ生成部１４３は、自装置の稼働状態を示す情報として、記憶部１８に記憶された最新の自装置における障害発生情報又は起動情報に基づいて障害アプリケーション情報を生成する。障害アプリケーション情報は、障害が発生したアプリケーションを示す情報であり、そのアプリケーションを起動した演算装置１０を示す再起動情報が付随される。再起動情報は、アプリケーションの起動の有無を示す情報である。アプリケーションが起動していないことは、例えば、いずれの演算装置１０も示さない値（例えば、ヌル値）で表される。アプリケーションの起動は、そのアプリケーションを起動した機能制御部１３を備える演算装置１０を示す値で表される。
【００２４】
送信データ生成部１４３は、ブロックデータ保存部１４１に保存されたブロックデータのうち最新のブロックデータを読み出し、読み出したブロックデータと、生成した障害アプリケーション情報とに基づいて現時点のブロックデータを生成する。現時点のブロックデータは、最新のブロックデータ、つまり前時点のブロックデータに基づく検証値と、その履歴情報に新たに生成された障害アプリケーションの情報を追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部１４３は、検証値として、例えば、前時点のブロックデータに含まれるブロックヘッダ、現時点の履歴情報のそれぞれについて所定の一方向関数を用いてハッシュ値を算出する。ブロックデータの具体例については、後述する。送信データ生成部１４３は、通信部１６を介して他の演算装置１０に送信し、自装置のブロックデータ保存部１４１に保存する。これにより、自装置を含む複数の演算装置１０間で送信データ生成部１４３が生成したブロックデータが同報（ブロードキャスト）され、相互間で共有される。
【００２５】
通信部１６は、情報ネットワークＮＷと通信可能に接続され、情報ネットワークＮＷに接続された他の機器との間で各種のデータを送受信する。通信部１６は、例えば、他の演算装置１０からブロックデータを受信し、自装置の送信データ生成部１４３が生成したブロックデータを他の演算装置１０に同報する。
記憶部１８は、自装置の各部が取得した各種のデータ、自装置の各部の処理に用いるデータを記憶する。記憶部１８、ブロックデータ保存部１４１は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶媒体を含んで構成される。
【００２６】
（ブロックデータ）
次に、本実施形態に係るブロックデータの例について説明する。
図３は、本実施形態に係るブロックデータの例を示す図である。
ＢＤ０１、ＢＤ０２、ＢＤ０３は、ある時点におけるブロックデータ、その次の時点におけるブロックデータ、さらに次の時点におけるブロックデータをそれぞれ示す。
ブロックデータは、ブロックヘッダとその時点における履歴情報とを含んで構成される。ブロックヘッダには、前ブロックデータの検証値（図３に示す例では、前ブロックのハッシュ値）、装置ＩＤ、演算回数、検証用データ及び履歴情報の検証値（図３に示す例では、全障害アプリデータのハッシュ値）が含まれる。図３に示す例では、履歴情報として開始時点から現時点までの障害アプリケーション情報が時刻順に累積されて構成される情報が用いられる。但し、開始時点のブロックデータでは、前ブロックデータの検証値に代えて所定の初期値（例えば、０）が設定される。
【００２７】
前ブロックデータの検証値は、前時点におけるブロックデータのブロックヘッダから一方向関数を用いて導出される。この検証値は、現時点における履歴情報に含まれる前時点における履歴情報から得られる検証値に基づいても算出される。従って、双方の検証値が一致するか否かにより、現時点において生成されるブロックデータが正当であるか否かが検証される。
【００２８】
装置ＩＤは、そのブロックデータを生成する演算装置１０を示す識別情報である。
演算回数は、演算装置１０が実行する演算処理を示す番号である。つまり、演算回数は、演算処理がどの段階まで進行したかを示す稼働タイミングを示す情報である。
検証用データは、演算装置１０間で稼働タイミングを調整するために任意に設定されるデータである。他の演算装置１０よりも稼働タイミングが先行している演算装置１０は、その検証用データを用いて他の機能に影響を及ぼさない所定の処理を行う。その処理が行われる時間は、他の演算装置１０よりも稼働タイミングが先行している時間差に相当する。所定の処理は、継続的な演算を含むことで一定の時間を要するアルゴリズムに基づく処理、例えば、円周率の計算、マイニング用ハッシュ値の計算である。検証用データには、例えば、処理開始時刻、カウンタタイマー値などが含まれる。検証用データには、その他、実行する処理の初期値、処理により得られる中間値などが含まれてもよい。
履歴情報の検証値は、現時点までの履歴情報の一方向関数として算出される検証値である。この検証値はブロックヘッダに含まれ、次の時点における前ブロックデータの検証値の導出に用いられる。従って、前ブロックデータが正当ではないと判定されるとき、現ブロックデータも正当ではないと判定される。
【００２９】
障害アプリケーション情報は、処理に障害が発生したアプリケーションを示す情報である。各時点の障害アプリケーション情報には、装置ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）と再起動装置ＩＤとが付随される。装置ＩＤは、障害が発生した機能制御部１３を備える演算装置１０を示す識別情報である。再起動装置ＩＤは、上述した再起動情報に相当する。再起動装置ＩＤとして、そのアプリケーションを起動した機能制御部１３を備える演算装置１０の識別情報が用いられる。アプリケーションが起動していないことを示す情報として、例えば、所定のヌル値が再起動装置ＩＤに設定される。
【００３０】
（稼働管理）
次に、本実施形態に係る稼働管理処理について説明する。
図４は、本実施形態に係る稼働管理処理の一例を示すフローチャートである。
（ステップＳ１０２）ある演算装置１０の検出部１２は、制御演算部１１が実行するアプリケーションに基づく処理について障害を検出する。その後、ステップＳ１０４の処理に進む。
（ステップＳ１０４）検出部１２は、そのアプリケーションに基づく処理について障害の発生を示す障害発生情報を記憶部１８に記憶する。送信データ生成部１４３は、記憶部１８に新たに記憶された障害発生状態に基づいて現時点の障害アプリケーション情報を生成する。送信データ生成部１４３は、生成した障害アプリケーション情報を前時点のブロックデータに含まれる履歴情報に追加して現時点の履歴情報を生成する。そして、送信データ生成部１４３は、生成した履歴情報と、その履歴情報の検証値をブロックヘッダに含む現時点のブロックデータとしてブロックデータ１を生成する。その後、ステップＳ１０６の処理に進む。
【００３１】
（ステップＳ１０６）送信データ生成部１４３は、通信部１６を介してブロックデータ１を他の演算装置１０に送信し、自装置のブロックデータ保存部１４１に記憶する。その後、ステップＳ１０８の処理に進む。
（ステップＳ１０８）他の演算装置１０のブロックデータ保存部１４１は、他の演算装置１０から通信部１６を介して受信したブロックデータ１を記憶する。その後、ステップＳ１１０の処理に進む。
【００３２】
（ステップＳ１１０）各演算装置１０の受信データ解析部１４２は、各演算装置１０において生成されたブロックデータ１に基づいて、いずれかの演算装置１０の機能制御部１３のアプリケーションの実行に障害が発生しているか否かを判定する。障害が発生していると判定するとき（ステップＳ１１０  ＹＥＳ）、ステップＳ１１２の処理に進む。障害が発生していないと判定するとき（ステップＳ１１０  ＮＯ）、図４に示す処理を終了する。
【００３３】
（ステップＳ１１２）機能制御部１３は、制御演算部１１にそのアプリケーションの起動を指示する。その後、ステップＳ１１４の処理に進む。
（ステップＳ１１４）検出部１２は、制御演算部１１におけるアプリケーションの実行状態として、そのアプリケーションが正常に起動したか否かを判定する。正常に起動したと判定するとき（ステップＳ１１４  ＹＥＳ）、ステップＳ１１６の処理に進む。正常に起動していないと判定するとき（ステップＳ１１４  ＮＯ）、ステップＳ１１２の処理に戻る。
（ステップＳ１１６）機能制御部１３は、起動指示したアプリケーションの起動を示す起動情報を記憶部１８に記憶する。その後、ステップＳ１１８の処理に進む。
【００３４】
（ステップＳ１１８）送信データ生成部１４３は、記憶部１８に新たに記憶された起動情報に基づいて現時点の障害アプリケーション情報を生成する。送信データ生成部１４３は、生成した障害アプリケーション情報を前時点のブロックデータとしてブロックデータ１に含まれる履歴情報に追加して現時点の履歴情報を生成する。そして、送信データ生成部１４３は、生成した履歴情報と、その履歴情報の検証値をブロックヘッダとして含む現時点のブロックデータとしてブロックデータ２を生成する。送信データ生成部１４３は、生成したブロックデータ２を他の演算装置１０に通信部１６を介して送信し、自装置のブロックデータ保存部１４１に記憶する。その後、ステップＳ１２０の処理に進む。
【００３５】
（ステップＳ１２０）ブロックデータ保存部１４１は、アプリケーションを起動した他の演算装置１０から通信部１６を介して受信したブロックデータ２を記憶する。その後、ステップＳ１２２の処理に進む。
（ステップＳ１２２）受信データ解析部１４２は、ブロックデータ２に含まれる履歴情報に基づいて、他の演算装置１０の機能制御部１３がそのアプリケーションを起動させたか否かを判定する。起動したと判定するとき（ステップＳ１２２  ＹＥＳ）、ステップＳ１２４の処理に進む。起動していないと判定するとき（ステップＳ１２２  ＮＯ）、図４に示す処理を終了する。
（ステップＳ１２４）機能制御部１３は、自装置の制御演算部１１にそのアプリケーションの実行を停止させる。図４に示す処理を終了する。
【００３６】
このように、障害アプリケーション情報をブロックデータに格納し、開始時点の履歴情報の検証値と共に次のブロックデータ内に反映させることにより、データの誤り検出が外部からも容易になる。つまりデータ通信量を抑えつつ演算装置を増加させることで、従来よりも物理的に広範囲の分散処理システムが構築可能となる。この場合、電磁的なノイズレベルが高い地域など通信環境が悪い地域では、通信上データ誤りが発生しやすい。誤ったデータの使用は、発電プラントなどでは事故原因となりうる。しかし、本手法では、開始時点からのすべてのブロックデータが前ブロックデータの検証値として反映されていくため、ある時点でのデータ誤りが検出しやすい特徴がある。このため、大規模化した冗長化システムでも、データの信頼性を向上することができる。
【００３７】
以上に説明したように、本実施形態に係る冗長化システム１は、複数の演算装置１０を備える冗長化システムであって、複数の演算装置１０のそれぞれは、送信データ生成部１４３と通信部１６を備える。送信データ生成部１４３は、前時点のブロックデータに基づく検証値と、前時点の履歴情報に現時点の所定の検出対象の稼働状態の情報を追加してなる現時点の履歴情報と、を含む現時点のブロックデータを生成する。通信部１６は、現時点のブロックデータを複数の演算装置間で同報する。複数の演算装置の少なくとも１台は、検出対象の障害が検出されるとき、前記検出対象の機能を補うための機能制御部１３、を備える。
【００３８】
そのため、冗長化システム１は、複数の演算装置１０からなる分散システムとして構成され、演算装置１０間で検出対象の稼働状態の情報を累積した履歴情報を含むブロックデータが同報される。そのため、演算装置１０の稼働状態を監視するための中央装置などの機器を設置しなくても、冗長化された個々の演算装置の分散処理を維持し、障害対応を行うためのデータを効率よく共有することができる。併せて、冗長化システムの信頼性が向上する。
【００３９】
また、複数の演算装置１０のそれぞれは、検出対象として、所定のアプリケーションプログラムに基づく処理を実行する実行部として制御演算部１１を備える。複数の演算装置１０のうち実行部がその処理を実行する第１演算装置１０において、その処理の障害が検出されるとき、送信データ生成部１４３は、検証値と、現時点の稼働状態の情報として障害に関する情報に基づいて第１ブロックデータを生成する。通信部１６は、第１ブロックデータを複数の演算装置のうち第１演算装置とは異なる他の演算装置に送信する。複数の演算装置のうち第１ブロックデータを取得した第２演算装置１０において、機能制御部１３は、そのアプリケーションプログラムに基づく処理を起動し、送信データ生成部１４３は、第１ブロックデータに基づく検証値と、現時点の稼働状態の情報として起動に関する情報に基づいて第２ブロックデータを生成する。通信部１６は、第２ブロックデータを複数の演算装置のうち第２演算装置とは異なる他の演算装置に送信する。
【００４０】
この構成によれば、各演算装置１０における所定のアプリケーションプログラムの処理に係る障害の発生と起動の履歴情報を含むブロックデータが共有される。そのため、処理状態の監視や復旧を監視するための中央装置などの他の機器を設ける必要がなくなる。そのため、演算装置１０間におけるデータ共有が容易になるとともに、システム全体の信頼性が向上する。
【００４１】
＜第二実施形態＞
以下、本発明の第二実施形態に係る冗長化システムについて、図５〜図９を参照して説明する。以下の説明では、本実施形態に係る演算装置２４が主に図５に示す制御装置（ＬＳ：Ｌｏｇｉｃ  Ｓｏｌｖｅｒ；制御演算装置）である場合を例にするが、これには限られない。演算装置２４は、サーバ装置として実現されてもよい。複数の演算装置２４は、互いに共通の構成を有し、共通の処理を行う。図５に示す例では、演算装置２４の台数は、４個であるが、３個以上であればよい。
【００４２】
図５は、本実施形態に係る冗長化システム２の一構成例を示すブロック図である。
冗長化システム２は、ＯＰＳ（Ｏｐｅｒａｔｏｒ  Ｓｔａｔｉｏｎ；監視装置）２１、ＥＭＳ（Ｅｎｇｉｎｅｅｒｉｎｇ  ａｎｄ  Ｍａｉｎｔｅｎａｎｃｅ  Ｓｔａｔｉｏｎ；管理装置）２２、ＮＡ（Ｎｅｔｗｏｒｋ  Ａｄａｐｔｏｒ；ネットワークアダプタ）２３、複数の演算装置２４ａ〜２４ｄ、ＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ；入出力）スキャナ２５、ＩＯネットワーク２６、ＩＯアダプタ２７ａ、２７ｂ、及びＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪを含んで構成される制御システムである。
【００４３】
ＯＰＳ２１は、制御対象となるプラントの制御状態をユーザであるエンジニアが操作及び監視するための装置である。ＯＰＳ２１は、例えば、各演算装置２４の起動、停止などの動作状態の指示、パラメータの設定を行うため、プラントの状態を示す入力データとプラントを操作するための出力データを、ＮＡ２３を介していずれかの演算装置２４から取得する通信部を備える。また、ＯＰＳ２１は、ユーザの操作を受け付ける操作入力部と、ユーザの操作に応じて、取得したデータのいずれかを表示する表示部を備える。
【００４４】
ＥＭＳ２２は、ユーザであるエンジニアが演算装置に組み込むアプリケーションプログラムの製作・管理・配信するための装置である。ＥＭＳ２２は、ユーザの操作を受け付ける操作入力部と、操作対象の演算装置や各種の情報を表示するための表示部と、操作により指示される指示情報、設定情報などを適用対象の演算装置２４に送信するための通信部を備える。
【００４５】
ＮＡ２３は、ＯＰＳ２１、ＥＭＳ２２、ＮＡ２３及び演算装置２４とそれぞれ通信可能に接続され、相互間で各種のデータを送受信できる情報ネットワークを形成する。
演算装置２４ａ〜２４ｄには、それぞれＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪのいずれか又はその所定の組み合わせからＩＯアダプタ２７ａ、２７ｂのいずれか、ＩＯネットワーク２６及びＩＯスキャナ２５を介して入力データが入力される。
演算装置２４ａ〜２４ｄは、それぞれ入力データに基づいて所定の演算処理を行って出力データを算出し、算出した出力データをＩＯスキャナ２５、ＩＯネットワーク２６、及びＩＯアダプタ２７ａ、２７ｂのいずれかを介してＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪのいずれか又はその所定の組み合わせに出力する。
【００４６】
演算処理の内容、入力データの種別ならびに入力元となるＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪ、及び出力データの種別ならびに出力先となるＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪは、制御ループに応じて異なる。演算装置２４の構成を説明するうえでは、これらについて特に区別せず、単に入力データ、出力データ、ＩＯモジュール２８と総称する。
【００４７】
ＩＯスキャナ２５は、演算装置２４ａ〜２４ｄとＩＯネットワーク２６に通信可能に接続する。ＩＯスキャナ２５は、演算装置２４ａ〜２４ｄから受信する出力データをＩＯネットワーク２６に送信し、ＩＯネットワーク２６から受信する入力データを演算装置２４ａ〜２４ｄに送信する。
【００４８】
ＩＯネットワーク２６は、ＩＯスキャナ２５とＩＯアダプタ２７ａ、２７ｂとを通信可能に接続するネットワークである。
ＩＯアダプタ２７ａは、ＩＯネットワーク２６とＩＯモジュール２８ａａ〜２８ａＩに通信可能に接続する。ＩＯアダプタ２７ａは、ＩＯモジュール２８ａａ〜２８ａＩから受信する入力データをＩＯネットワーク２６に送信し、ＩＯネットワーク２６から受信する出力データをＩＯモジュール２８ａａ〜２８ａＩに出力する。
ＩＯアダプタ２７ｂは、ＩＯネットワーク２６とＩＯモジュール２８ｂａ〜２８ｂJに通信可能に接続する。ＩＯアダプタ２７ｂは、ＩＯモジュール２８ｂａ〜２８ｂJから受信する入力データをＩＯネットワーク２６に送信し、ＩＯネットワーク２６から受信する出力データをＩＯモジュール２８ｂａ〜２８ｂJに出力する。
【００４９】
ＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂJは、それぞれフィールド機器に接続される。各ＩＯモジュール２８は、それぞれ入力装置（入力モジュール）と出力装置（出力モジュール）を備える入出力装置である。入力装置は、自装置に接続されたフィールド機器から入力される入力値を示す入力データをＩＯアダプタ２７ａ、２７ｂのいずれか、ＩＯネットワーク２６及びＩＯスキャナ２５を介して演算装置２４ａ〜２４ｄに送信する。出力装置は、少なくとも演算装置２４ａ〜２４ｄのいずれかから送信される出力データをＩＯスキャナ２５、ＩＯネットワーク２６及びＩＯアダプタ２７ａ、２７ｂのいずれかを介して受信する。出力装置は、受信した出力データが示す出力値を自装置に接続されたフィールド機器に出力する。
【００５０】
各ＩＯモジュール２８に接続されるフィールド機器は、センサ、アクチュエータのいずれか又は両方である。センサは、プラントの状態を示す物理量を測定するための機器である。例えば、プラントが発電設備である場合には、測定される物理量は、電力、出力率などがある。センサは、測定した物理量を入力値としてＩＯモジュール２８の入力装置に出力する。アクチュエータは、ＩＯモジュール２８の出力装置から出力される出力値に基づいてプラントを操作するための機器である。例えば、プラントが発電設備である場合には、圧力調整弁の開度などがある。
【００５１】
次に、本実施形態に係る演算装置２４の構成について説明する。図６は、本実施形態に係る演算装置２４の機能構成の一例を示すブロック図である。
演算装置２４は、制御演算部２４１、データ選定部（機能制御部）２４３、ブロックデータ処理部２４４、第１通信部２４６、記憶部２４８、及び第２通信部２４９を備える。
以下の説明では、主に第一実施形態との差異点を主とする。また、演算装置２４ａに注目し、その処理において扱われる各種のデータの符号にその子番号である符号aを付し、他の演算装置で扱われるデータと区別する。
【００５２】
制御演算部２４１は、記憶部２４８に格納された入力データＤａと前回の演算時に格納された中間値データ群Ｃａとを読み出し、読み出した入力データＤａと中間値データ群Ｃａとに基づいて所定の演算を行う。制御演算部２４１は、演算結果から得られる出力データＹａと今回の演算によって更新された中間値データ群Ｃａを記憶部２４８に格納する。
所定の演算により出力データＹａを得る過程の途中段階で得られる結果のデータを中間値データとし、入力データＤａに基づいて出力データＹａを得るまでの単一又は一連の複数の中間値データを中間値データ群Ｃａとする。中間値データ群Ｃａには、例えば、過去のデータを累積して使用する積分値、又は移動平均値等が含まれる。
【００５３】
データ選定部２４３は、入力データ、中間値データ群それぞれについて多数決処理を行う。
データ選定部２４３は、第２通信部２４９を介して受信した自装置宛の入力データ、第１通信部２４６を介して受信した他の演算装置から送信されたブロックデータに含まれる入力データのうち、少なくとも１つが一致していない場合、最も出現頻度の高い値を変更後の入力データとして選定する。具体的には、データ選定部２４３は、記憶部２４８に格納されている入力データＤａ，Ｄｂ，Ｄｃ及びＤｄを読み出して比較し、これら値の出現頻度によって正しい入力データを選定する。
【００５４】
例えば、入力データＤａ，Ｄｂ，Ｄｃが互いに等しい値であり、入力データＤｄがそれらの値と異なる値である場合には、出現頻度が最も高い入力データＤａ，Ｄｂ，Ｄｃがそれぞれ正しい入力データであると選定される。また、例えば、演算装置２４ａにおいて、第１通信部２４６から受信された入力データＤｂ、Ｄｃ及びＤｄが等しい値であり、入力データＤａが他の入力データと異なる値である場合には、データ選定部２４３は、入力データＤｂ，Ｄｃ及びＤｄが正しい入力データであると選定し、誤りである入力データＤａの値を、入力データＤｂ（等しい値であることから、Ｄｃ又はＤｄであってもよい）と置き換える。
【００５５】
このように、演算装置２４ａの第１通信部２４６及び第２通信部２４９によって取得される入力データのうち、出現頻度の高い入力データが正しい値として選定される。また、第１通信部２４６を介して入力された入力データＤａが、正しい値として選定されなかった場合には、入力データＤａは正しい入力データに置き換えられる。これにより、例えば、ＩＯモジュール２８と第１通信部２４６との通信路において不具合等が生じ、第１通信部２４６から取得される入力データＤａが正しくなかった場合であっても、入力データＤａは、他の演算装置１０ｂ，１０ｃ，及び１０ｄから取得した入力データＤｂ，Ｄｃ，及びＤｄに基づいて、正しい入力データに置き換えられる。なお、第１通信部２４６を介して入力された入力データＤａが、正しい値として選定されていた場合には、データ選定部２４３は、そのままの値を入力データＤａとして記憶部２４８に記憶させる機能制御部として機能する。
【００５６】
また、データ選定部２４３は、記憶部２４８に格納される中間値データ群Ｃａ，Ｃｂ，Ｃｃ及びＣｄのうち、少なくとも１つが一致していない場合に、最も出現頻度の高い値を選定し、選定した値を正しい中間値データ群とする。さらに、データ選定部２４３は、正しいとされた中間値データ群と入力データＤａに基づく中間値データ群Ｃａとを比較し、比較の結果、一致しない場合には、入力データＤａに基づいて算出された出力データＹａが正しくないと判定する。これは、中間値データ群Ｃａが誤っていれば、その中間値データを用いて求められる出力データは誤りであるといえるからである。また、この場合、データ選定部２４３は、中間値データ群Ｃａを正しい中間値データ群に変更し、変更後の中間値データ群を記憶部２４８に記憶させる機能制御部として機能する。このように、中間値データ群Ｃａが他の演算装置２４から受信した正しい中間値データ群に書き換えられることで、以降の処理によりこの中間値データが使用される場合に、正しい中間値データを使用して処理を実行することが可能となる。
【００５７】
なお、本実施形態においてデータ選定部２４３は、中間値データ群の各中間値データのそれぞれを比較し、対応するそれぞれの中間値データが全て一致する場合、「中間値データ群が一致した」と判定することとしている。
【００５８】
ブロックデータ処理部２４４は、ブロックデータに係る処理を実行する。本実施形態では、入力データに係るブロックデータを入力ブロックデータと呼び、中間値データに係るブロックデータを中間値ブロックデータと呼ぶ。
ブロックデータ処理部２４４は、ブロックデータ保存部２４４１、受信データ解析部２４４２、及び送信データ生成部２４４３を含んで構成される。
【００５９】
ブロックデータ保存部２４４１は、他の演算装置２４から第１通信部２４６を介して受信したブロックデータを一時的に保存する。
受信データ解析部２４４２は、ブロックデータ保存部２４４１から他の演算装置２４から受信した入力ブロックデータを読み出す。受信データ解析部２４４２は、各演算装置２４の入力ブロックデータに記述された最新の時点の入力データＤｂ，Ｄｃ，Ｄｄを抽出し、記憶部２４８に記憶する。
受信データ解析部２４４２は、ブロックデータ保存部２４４１から、他の演算装置２４のから受信した中間値ブロックデータと自装置の送信データ生成部２４４３が生成した入力ブロックデータを読み出す。受信データ解析部２４４２は、各演算装置２４のブロックデータに記述された最新の時点の中間値データ群Ｃｂ，Ｃｃ，Ｃｄを抽出し、記憶部２４８に記憶する。
【００６０】
送信データ生成部２４４３は、記憶部２４８に記憶された最新の入力データＤａを現時点の入力データとして読み出し、ブロックデータ保存部２４４１に保存された自装置の入力ブロックデータのうち最新の入力ブロックデータを前時点の入力ブロックデータとして読み出す。送信データ生成部２４４３は、読み出した入力ブロックデータと、現時点の入力データに基づいて現時点の入力ブロックデータを生成する。現時点の入力ブロックデータは、前時点の入力ブロックデータに基づく検証値と、その履歴情報に新たに読み出した入力データを追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部２４４３は、検証値として、例えば、前時点までの入力ブロックデータに含まれるブロックヘッダのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ；巡回冗長検査）加算値、現時点の履歴情報のＣＲＣ値を算出する。ＣＲＣ値の算出に係る演算負荷は、ハッシュ値よりも軽減される。送信データ生成部２４４３は、第１通信部２４６を介して生成した入力ブロックデータを他の演算装置２４に送信し、自装置のブロックデータ保存部２４４１に保存する。
【００６１】
また、送信データ生成部２４４３は、記憶部２４８に記憶された最新の中間値データ群Ｃａを現時点の中間値データ群として読み出し、ブロックデータ保存部２４４１に保存された自装置の中間値ブロックデータのうち最新の中間値ブロックデータを前時点の中間値ブロックデータとして読み出す。送信データ生成部２４４３は、読み出した中間値ブロックデータと、現時点の中間値データ群に基づいて現時点の中間値ブロックデータを生成する。現時点の中間値ブロックデータは、前時点の中間値ブロックデータに基づく検証値と、その履歴情報に新たに読み出した中間値データ群を追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部２４４３は、検証値として、例えば、前時点までの中間ブロックデータに含まれるブロックヘッダのＣＲＣ加算値、現時点の履歴情報のＣＲＣ値を算出する。送信データ生成部２４４３は、第１通信部２４６を介して生成した中間値ブロックデータを他の演算装置２４に送信し、自装置のブロックデータ保存部２４４１に保存する。
【００６２】
（ブロックデータ）
次に、本実施形態に係るブロックデータの例について説明する。
図７は、本実施形態に係るブロックデータの例を示す図である。
ＢＤ１１、ＢＤ１２、ＢＤ１３は、それぞれ、ある時点における入力ブロックデータ、その次の時点における入力ブロックデータ、さらに次の時点における入力ブロックデータを示す。
図７に示す例では、入力ブロックデータには、履歴情報として、開始時点から現時点までの入力データが累積されて構成される履歴情報が含まれる。ブロックヘッダに含まれる検証値として、履歴情報を構成する全入力データのＣＲＣ値と、前時点までのブロックデータのＣＲＣ加算値とが含まれる。このＣＲＣ加算値は、各時点のブロックデータに含まれるブロックヘッダについて算出されるＣＲＣ値の開始時点から前時点までの総和である。ＣＲＣ値ならびにＣＲＣ加算値によれば、データの改ざん検知の効果はハッシュ値よりも低いが、制御装置の処理負荷を低下させ、処理時間を低減させることができる。かかる構成により、伝送路上のノイズ、その他の原因によるブロックデータの改変を検知することができる。但し、開始時点のブロックデータでは、前時点のブロックデータのブロックヘッダのＣＲＣ加算値に代えて所定の初期値（例えば、０）が設定される。
【００６３】
図８は、本実施形態に係るブロックデータの他の例を示す図である。
ＢＤ３１、ＢＤ３２、ＢＤ３３は、それぞれ、ある時点における中間値ブロックデータ、その次の時点における中間値ブロックデータ、さらに次の時点における中間値ブロックデータを示す。
図８に示す例では、中間値ブロックデータには、履歴情報として、開始時点から現時点までの中間値データ群が累積されて構成される履歴情報が含まれる。ブロックヘッダに含まれる検証値として、履歴情報を構成する全中間値データ群のＣＲＣ値と、前時点までのブロックデータのブロックヘッダのＣＲＣ加算値とが含まれる。但し、開始時点のブロックデータでは、前時点までのブロックデータのブロックヘッダのＣＲＣ加算値に代えて所定の初期値（例えば、０）が設定される。
なお、全中間値データ群のＣＲＣ値と、前時点までのブロックデータに含まれるブロックヘッダのＣＲＣ加算値に代えて、それぞれのハッシュ値が用いられてもよい。
【００６４】
（比較採用処理）
次に、本実施形態に係る入力データ、中間値データ群の比較採用処理について説明する。
図９は、本実施形態に係る入力データ、中間値データ群の比較採用処理の一例を示すフローチャートである。
（ステップＳ２０２）制御対象に取り付けられたセンサによって計測された計測値が入力値としてＩＯモジュール２８の入力装置に入力される。その後、ステップＳ２０４の処理に進む。
（ステップＳ２０４）ＩＯモジュール２８の入力装置は、入力値を示す入力データを、各演算装置２４ａ，２４ｂ，２４ｃ，及び２４ｄのそれぞれの第２通信部２４９に送信する。その後、ステップＳ２０６の処理に進む。
（ステップＳ２０６）各演算装置２４の第２通信部２４９は、ＩＯモジュール２８の入力装置から入力データを受信し、受信した入力データＤａを記憶部２４８に格納する。
そして、送信データ生成部２４４３は、記憶部２４８に記憶された現時点の入力データを読み出し、ブロックデータ保存部２４４１に保存された前時点の入力ブロックデータを読み出す。送信データ生成部２４４３は、読み出した入力ブロックデータと、現時点の入力データに基づいて現時点の入力ブロックデータを生成する。その後、ステップＳ２０８の処理に進む。
【００６５】
（ステップＳ２０８）各演算装置２４の送信データ生成部２４４３は、ブロックデータ保存部２４４１に格納し、生成した入力ブロックデータを他の演算装置２４に第１通信部２４６を介して送信する。その後、ステップＳ２１０の処理に進む。
（ステップＳ２１０）各演算装置２４のブロックデータ保存部２４４１は、第１通信部２４６を介して他の演算装置２４から受信した入力ブロックデータを保存する。受信データ解析部２４４２は、ブロックデータ保存部２４４１に保存された他の演算装置２４のそれぞれからの入力ブロックデータから現時点の入力データ抽出し、記憶部２４８に格納する。その後、ステップＳ２１２の処理に進む。
【００６６】
（ステップＳ２１２）各演算装置２４のデータ選定部２４３は、記憶部２４８に格納された演算装置２４毎の入力データＤａ，Ｄｂ，Ｄｃ及びＤｄを読み出し、読み出した入力データＤａ，Ｄｂ，Ｄｃ，及びＤｄの値を演算装置２４間で比較する。入力データＤａ，Ｄｂ，Ｄｃ及びＤｄのうち、一つでも異なる値がある場合には、データ選定部２４３は、出現頻度の高い値を正しい入力データとして選定する。その後、ステップＳ２１４の処理に進む。
（ステップＳ２１４）各演算装置２４のデータ選定部２４３は、正しい値として選定した入力データが、第２通信部２４９を介して取得した入力データと一致するか否かを判定する。一致すると判定するとき（ステップＳ２１４  ＹＥＳ）、ステップＳ２１８の処理に進む。一致しないと判定するとき（ステップＳ２１４  ＮＯ）、ステップＳ２１６の処理に進む。
（ステップＳ２１６）データ選定部２４３は、記憶部２４８に格納されている入力データを正しい入力データに置き換える。従って、全ての入力データＤａ，Ｄｂ，Ｄｃ，Ｄｄが一致していた場合には、入力データの置き換えは行われない。その後、ステップＳ２１８の処理に進む。
【００６７】
（ステップＳ２１８）各演算装置２４の制御演算部２４１は、記憶部２４８に格納されている入力データを使用して所定の演算を実行し、出力データを算出する。制御演算部２４１は、この出力データを算出する過程において算出された演算途中の段階での一連の値及び出力データを中間値データ群として、記憶部２４８に格納する。その後、ステップＳ２２０の処理に進む。
（ステップＳ２２０）各演算装置２４の送信データ生成部２４４３は、記憶部２４８に記憶された現時点の中間値データ群を読み出し、ブロックデータ保存部２４４１に保存された前時点の中間値ブロックデータを読み出す。送信データ生成部２４４３は、読み出した中間値ブロックデータと、現時点の中間値データ群に基づいて現時点の中間値ブロックデータを生成する。送信データ生成部２４４３は、生成した中間値ブロックデータを記憶部２４８に記憶し、第１通信部２４６を介して他の演算装置２４に送信する。その後、ステップＳ２２２の処理に進む。
（ステップＳ２２２）各演算装置２４のブロックデータ保存部２４４１は、第１通信部２４６を介して他の演算装置２４から受信した中間値ブロックデータを保存する。受信データ解析部２４４２は、ブロックデータ保存部２４４１に保存された他の演算装置２４のそれぞれからの中間値ブロックデータから現時点の中間値データ群を抽出し、記憶部２４８に格納する。その後、ステップＳ２２４の処理に進む。
【００６８】
（ステップＳ２２４）各演算装置２４のデータ選定部２４３は、記憶部２４８に格納された演算装置２４毎の中間値データ群Ｃａ，Ｃｂ，Ｃｃ及びＣｄを読み出し、読み出した中間値データ群Ｃａ，Ｃｂ，Ｃｃ及びＣｄの値を演算装置２４間で比較する。中間値データ群Ｃａ，Ｃｂ，Ｃｃ及びＣｄのうち、一つでも異なる値がある場合には、データ選定部２４３は、出現頻度の高い値を正しい中間値データ群として選定する。その後、ステップＳ２２６の処理に進む。
（ステップＳ２２６）各演算装置２４のデータ選定部２４３は、正しい値として選定した中間値データ群が、自装置の制御演算部２４１が算出した中間値データ群と一致するか否かを判定する。一致すると判定するとき（ステップＳ２２６  ＹＥＳ）、ステップＳ２２８の処理に進む。一致しないと判定するとき（ステップＳ２２６  ＮＯ）、ステップＳ２３２の処理に進む。
【００６９】
（ステップＳ２２８）データ選定部２４３は、正しい出力データが得られなかった旨を示す通知情報をＩＯモジュール２８の出力装置に第２通信部２４９を介して送信する。従って、出力装置には、その通知情報によりその旨が予告される。その後、ステップＳ２３０の処理に進む。
（ステップＳ２３０）データ選定部２４３は、記憶部２４８に格納されている中間値データ群を正しい中間値データ群に置き換える。従って、全ての中間値データ群Ｃａ，Ｃｂ，Ｃｃ，Ｃｄが一致していた場合には、中間値データ群の置き換えは行われない。その後、ステップＳ２３２の処理に進む。
（ステップＳ２３２）第２通信部２４９は、記憶部２４８に格納されている中間値データ群のうち出力データを読み出し、読み出した出力データをＩＯモジュール２８の出力装置に送信する。出力装置は、各演算装置２４から受信した出力データのいずれかを採用し、採用した出力データが示す出力値を接続されたアクチュエータに出力する。なお、出力装置は、通知情報を受信した直後に受信した出力データを採用しなくてもよい。その後、図９に示す処理を終了する。
【００７０】
上述した例では、入力ブロックデータの履歴情報に中間値群データを含まず入力データが含まれ、中間値ブロックデータの履歴情報に入力データが含まず中間値群データを含む場合を例にしたが、これには限られない。送信データ生成部２４４３は、最新の入力データ又は中間値群データが逐次に累積して構成される履歴情報を含む共通ブロックデータを生成してもよい。その場合には、履歴情報に入力データと中間値群データが混在することになる。共通ブロックデータが、複数の演算装置２４間で共有されることで、入力データの管理と中間値群データの管理が一元化される。
【００７１】
以上に説明したように、本実施形態に係る冗長化システム１において、複数の演算装置のそれぞれは、入力装置から入力データを取得する第２通信部２４９と、検出対象として、現時点の入力データに基づいて所定の演算を行って出力データを算出する制御演算部２４１と、出力データを算出する過程で得られる中間値データを記憶する記憶部２４８を備える。また、送信データ生成部２４４３は、検証値と、履歴情報に現時点の入力データ又は中間値データを追加してなる現時点の履歴情報と、を含むブロックデータを生成する。データ選定部２４３は、機能制御部として現時点の入力データの複数の演算装置２４間の出現頻度に基づいて第１通信部２４６が取得した入力データの正誤を判定し、誤りと判定された入力データを正しいと判定された入力データに更新する。また、データ選定部２４３は、中間値データの複数の演算装置間の出現頻度に基づいて制御演算部２４１から得られた中間値データの正誤を判定し、誤りと判定された中間値データを正しいと判定された演算データに更新する。
【００７２】
この構成によれば、個々の演算装置２４が取得した入力データや演算処理による中間値データが複数の演算装置２４間で共有され、それらの出現頻度に基づいて、自装置が取得した入力データや中間値データが是正される。そのため、本実施形態では、従来の分散システムのように演算装置２４間で同期をとり、入力データや中間値データ群を是正するための中央装置などの装置を設定することを要しない。そのため、演算装置間でデータの不一致が検出されても個々の制御装置が処理を継続できるのでシステム全体の信頼性が向上し、演算装置２４間のデータ共有が容易になる。
【００７３】
＜第三実施形態＞
以下、本発明の第三実施形態に係る冗長化システムについて、図１０〜図１３を参照して説明する。
図１０は、本実施形態に係る冗長化システム３の一構成例を示すブロック図である。
本実施形態に係る冗長化システム３は、複数系統のサブシステムを含んで構成される。図１０に示す例では、サブシステムの数は、２個である。以下の２個のサブシステムを、それぞれサブシステム３ｓ、３ｓ’と呼んで両者を区別する。サブシステム３ｓ、３ｓ’間で、装置構成は共通である。各サブシステムの装置構成は、図５に示す冗長化システム２と同様の構成を含む。サブシステム３ｓ’の構成要素となる機器は、それぞれ対応する機器と同一の構成を備える。例えば、演算装置３４ａ’〜３４ｄ’は、それぞれ演算装置３４ａ〜３４ｄと同一の構成を備える。但し、サブシステム３ｓは、演算装置２４ａ〜２４ｄに代え、演算装置３４ａ〜３４ｄを備える。また、互いに同一の構成を備える演算装置３４ａ〜３４ｄ、演算装置３４ａ’〜３４ｄ’を演算装置３４と総称する。その他の同一の構成を備える機器についても、同様に総称する。なお、第二実施形態と同一の構成については、同一の符号を付してその説明を援用する。以下の説明では、主に第二実施形態との差異点について説明する。
【００７４】
サブシステム３ｓ、３ｓ’間で、制御対象となるプラントは互いに同種であり、負荷分散がなされる。サブシステム３ｓのＮＡ２３とサブシステム３ｓ’のＮＡ２３’の間は、通信可能に接続され、演算装置３４ａ〜３４ｄ、演算装置３４ａ’〜３４ｄ’間で相互に各種のデータを送受信することができる。サブシステム３ｓ、３ｓ’、制御対象のプラントが発電システムである場合を例にするが、これには限られない。また、サブシステム３ｓ、３ｓ’を、それぞれ１号機、２号機と呼ぶことがある。
【００７５】
次に、本実施形態に係る演算装置３４の構成について説明する。図１１は、本実施形態に係る演算装置３４の機能構成の一例を示すブロック図である。
演算装置３４は、制御演算部２４１、検出部３４２、データ選定部２４３、ブロックデータ処理部２４４、第１通信部２４６、機能制御部３４５、記憶部２４８、及び第２通信部２４９を備える。
制御演算部２４１、ブロックデータ処理部２４４、第１通信部２４６及び記憶部２４８は、それぞれ演算装置１０の制御演算部１１、ブロックデータ処理部１４、通信部１６及び記憶部１８と共通の構成を備えるため、それらの説明を援用する。
【００７６】
検出部３４２は、記憶部２４８に記憶された入力データに基づいて演算装置３４の制御演算部２４１（自装置も含む）又は制御演算部２４１の制御対象となるプラントの稼働状態を検出する。検出部３４２は、入力データの値が所定の許容範囲を超えるときその稼働に障害の発生を判定する。入力データは、例えば、制御対象となる発電システムの出力電力と出力率の一方又は両方が、それぞれの下限よりも小さいとき障害の発生を判定し、出力電力と出力率の両方が、それぞれの下限以上であるとき、障害が発生していないと判定する。出力率は、発電機効率とも呼ばれ、発電機への入力となるタービンの出力に対する出力電力の割合である。検出部３４２は、障害の発生を判定したとき、その障害を示す障害ＩＤ、出力電力、出力率、不足電力を示す障害発生データを記憶部２４８に記憶する。検出部３４２は、出力電力の下限からその時点の出力電力の差を不足電力として定める。
【００７７】
機能制御部３４５は、記憶部２４８に記憶された演算装置３４毎の障害発生データが障害の発生を示すとき、自装置が制御対象とする発電システムがその機能を補うことができるか否かを判定する。機能制御部３４５は、自装置が制御対象とする発電システムが障害の発生に係る発電システムではなく、かつ記憶部１８に記憶された入力データが示す出力電力がその上限よりも小さいとき、その機能を補うことができると判定し、それ以外の場合、補うことができないと判定する。
機能制御部３４５は、補うことができると判定するとき、出力電力の目標値として、その時点における出力電力よりも大きく、出力電力の上限以下となる値に定める。機能制御部３４５は、出力電力の増加量と制御対象の発電システムを示す障害対応データを記憶部２４８に記憶する。出力電力の増加量は、出力電力の目標値からその時点における出力電力の差分である。この出力電力の増加量は、不足電力を補うために用いられる。
【００７８】
なお、さらに他の発電システムにおいて、不足電力が補われたが、他の発電システムによる出力電力の増加量が不足電力に満たない場合が生じ得る。その場合には、機能制御部３４５は、不足電力から他の発電システムによる増加量の差と、制御対象の出力電力の上限からその時点の出力電力の差のいずれか小さい値以下となるように、制御対象の出力電力の増加量を定める。ここで、機能制御部３４５は、記憶部２４８にその障害に係る障害発生データと、他の演算装置３４からの障害対応データを参照して、他の発電システムによる増加量を知得することができる。よって、障害が発生していない複数の発電システム間で、不足電力を補うことができる。
【００７９】
制御演算部２４１は、記憶部２４８に記憶された障害対応データが示す制御対象の増加量をその時点の目標値に加算して得られる値に、制御対象の目標値を更新する。制御演算部２４１は、所定の演算として、入力データとその目標値に基づいて出力データを得る。ここで、制御演算部２４１は、入力データが目標値に近づくように制御対象となる発電システムによる出力データを算出する。これにより、制御対象の発電システムは、出力電力が更新された目標値となるように動作する。
【００８０】
ブロックデータ処理部２４４は、上述したブロックデータに代えて、またはそのブロックデータとともに、制御対象の障害及びその機能への対応に関するブロックデータを処理する。以下の説明では、制御対象の障害及びその機能への対応に関するブロックデータを障害対応ブロックデータと呼んで、他の種類のブロックデータと区別する。
【００８１】
ブロックデータ保存部２４４１は、他の演算装置３４から第１通信部２４６を介して受信した障害対応ブロックデータを一時的に保存する。
受信データ解析部２４４２は、ブロックデータ保存部２４４１から他の演算装置２４から受信した障害対応ブロックデータを読み出す。受信データ解析部２４４２は、各演算装置２４の障害対応ブロックデータに記述された最新の時点の障害発生データ又は障害対応データを抽出し、記憶部２４８に記憶する。
【００８２】
送信データ生成部２４４３は、新たに取得された障害発生データ又は障害対応データを追加して構成される履歴情報を含むように、障害対応ブロックデータを生成する。
記憶部２４８に記憶された最新の障害発生データと障害対応データのうち、障害発生データの方が新しい場合には、送信データ生成部２４４３は、その障害発生データを現時点の障害発生データとして読み出し、ブロックデータ保存部２４４１に保存された障害対応ブロックデータのうち最新の障害対応ブロックデータを前時点の障害対応ブロックデータとして読み出す。送信データ生成部２４４３は、読み出した障害対応ブロックデータと、現時点の障害発生データに基づいて現時点の障害対応ブロックデータを生成する。現時点の障害対応ブロックデータは、前時点の障害対応ブロックデータに基づく検証値と、その履歴情報に新たに読み出した障害発生データを追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部２４４３は、第１通信部２４６を介して生成した障害対応ブロックデータを他の演算装置３４に送信し、自装置のブロックデータ保存部２４４１に保存する。
【００８３】
記憶部２４８に記憶された最新の障害発生データと障害対応データのうち、障害対応データの方が新しい場合には、送信データ生成部２４４３は、その障害対応データを現時点の障害対応データとして読み出し、ブロックデータ保存部２４４１に保存された障害対応ブロックデータのうち最新の障害対応ブロックデータを前時点の障害対応ブロックデータとして読み出す。送信データ生成部２４４３は、読み出した障害対応ブロックデータと、現時点の障害対応データに基づいて現時点の障害対応ブロックデータを生成する。現時点の障害対応ブロックデータは、前時点の障害対応ブロックデータに基づく検証値と、その履歴情報に新たに読み出した障害対応データを追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部２４４３は、第１通信部２４６を介して生成した障害対応ブロックデータを他の演算装置３４に送信し、自装置のブロックデータ保存部２４４１に保存する。
【００８４】
（ブロックデータ）
次に、本実施形態に係るブロックデータの例について説明する。
図１２は、本実施形態に係るブロックデータの例を示す図である。
ＢＤ３１、ＢＤ３２、ＢＤ３３は、それぞれ、ある時点における障害対応ブロックデータ、その次の時点における障害対応ブロックデータ、さらに次の時点における障害対応ブロックデータを示す。
【００８５】
図１２に示す例では、障害対応ブロックデータには、履歴情報として、開始時点から現時点までの障害発生データに基づく検証値と、障害対応データが累積されて構成される履歴情報が含まれる。障害発生データは、障害対応ブロックデータの末尾の３行に示されるように、個々の障害を示す警報ＩＤ、障害が生じた発電システムの出力電力、出力率及びその不足電力を示す。障害発生データでは、対応した発電システムが存在しないため、その旨を示す情報（例えば、ヌル値）が対応号機の項目に設定される。
【００８６】
障害対応データは、障害対応ブロックデータの末尾の３行に示されるように、対応した障害を示す警報ＩＤ、障害が生じた発電システムの出力電力、出力率、出力電力の増加量及び対応した発電システムを示す。出力電力の増加量、対応した発電システムが、それぞれ不足電力、対応号機の項目に設定される。従って、各１つの障害発生データについて、対応する障害対応データの個数は、０個、１個、２個以上のいずれにもなりうる。なお、図１２は、各障害対応ブロックデータにおいて１個の障害発生データ又は障害対応データを示すが、一般には各１個の障害対応ブロックデータには複数の障害発生データと障害対応データが含まれる。
【００８７】
障害対応ブロックデータのブロックヘッダに含まれる検証値として、上述の入力ブロックデータ、中間値ブロックデータと同様に、履歴情報を構成する全障害発生データ又は障害対応データのＣＲＣ値と、前時点までのブロックデータのＣＲＣ加算値とが含まれる。
なお、全障害発生データ又は障害対応データのＣＲＣ値と、前時点までのブロックデータに含まれるブロックヘッダのＣＲＣ加算値に代えて、それぞれのハッシュ値が用いられてもよい。
【００８８】
なお、本実施形態では、冗長化システム３において、演算装置３４の数が複数個あれば、各サブシステムにおいて少なくとも１個の演算装置３４が備えられていればよい。また、冗長化システム３は、さらにＮＡ２３に接続された別個の演算装置３４を備えてよい。その別個の演算装置３４は、検出部３４２とブロックデータ処理部２４４を備えていれば、制御演算部２４１が省略されていなくでもよい。また、その別個の演算装置３４は、サーバ装置として構成されてもよい。
【００８９】
（変形例）
上述した例では、発電機の障害対応を例にしたが、ガスタービンの燃焼器のマッピングにも適用できるように変形することができる。
燃焼器のマッピングとは、個々のガスタービンエンジンについて、個々のガスタービンエンジンについての作動限界を計測し、計測により得られるデータを当該ガスタービンエンジンのコントローラとなる演算装置がそれらの動作を制御するための制御スケジュールに変換する方法である。制御スケジュールは、燃焼による音圧とエミッションレベルが所定の範囲内に収まり、かつリング火炎温度に他の作動境界（例えば、希薄失火及びガスタービンエンジンが備えるライナもしくはドームの金属温度）に対して所定の範囲以上のマージンが与えられるように制御するために用いられる。制御スケジュールは、バーナ・モードと抽気設定の組み合わせに対応する。バーナ・モードとは、燃焼器の動作モードである。抽気設定とは、圧縮器により燃焼器に吸入される空気の流量（吸入空気流量）に係る設定である。
【００９０】
制御スケジュールに変換する処理として、次の過程を含む処理を行う。
（Ｓ１）バルクリング火炎温度をエミッション及び音響の必要条件に適合させる。
（Ｓ２）ドームリング火炎温度を調節し、最高及び最低リング火炎境界温度を求める。
（Ｓ３）（Ｓ１）、（Ｓ２）の双方において、エミッションレベルと音圧が所定の仕様限界内にあるか否かを判定する。仕様限界外にあると判定する場合には、仕様限界内に収まるようにバルクリング火炎温度を調節する。これらの処理を、抽気設定及びバーナ・モードの各組み合わせについて繰り返す。
仕様限界内にあると判定する場合には、異なる抽気設定及びバーナ・モードについて、パワーを増大させ、上記の処理を繰り返す。これらの各過程において得られるマッピングデータを記憶部２４８に記憶する。
マッピングデータには、例えば、最高及び最低リング火炎境界温度のいずれかを制御するための入力データとして、例えば、エミッションレベルと音圧が記録される。エミッションレベルとは、窒素酸化物、一酸化炭素などの有害ガスの排出量である。また、目標値として、バルクリング火炎温度と、最高及び最低リング火炎境界温度が用いられる。
【００９１】
また、上記の過程は、それぞれ複数の演算装置３４間で分担して行われる。従って、複数の演算装置３４間で、要素データとして、その時点で最新のバルクリング火炎温度と、最高及び最低リング火炎境界温度、エミッションレベル及び音圧レベルを含む燃焼器データを共有する必要がある。
そこで、本変形例では、ブロックデータ処理部２４４は、障害対応ブロックデータに代えて、燃焼器データを累積して構成される履歴情報を含むブロックデータである、燃焼器ブロックデータを処理する。
【００９２】
ブロックデータ保存部２４４１は、他の演算装置３４から第１通信部２４６を介して受信した燃焼器ブロックデータを一時的に保存する。
受信データ解析部２４４２は、ブロックデータ保存部２４４１から他の演算装置２４から受信した燃焼器ブロックデータを読み出す。受信データ解析部２４４２は、各演算装置２４の燃焼器ブロックデータに記述された最新の時点の燃焼器データを抽出し、記憶部２４８に記憶する。
【００９３】
送信データ生成部２４４３は、新たに記憶部２４８に記憶された最新の要素データを読み出し、前時点の燃焼器データの要素データを、最新の要素データに置き換えることで現時点の燃焼器データを生成する。送信データ生成部２４４３は、新たに生成された燃焼器データを追加して構成される履歴情報を含むように、燃焼器ブロックデータを生成する。ここで、送信データ生成部２４４３は、ブロックデータ保存部２４４１に保存された燃焼器ブロックデータのうち最新の燃焼器ブロックデータを前時点の燃焼器ブロックデータとして読み出す。送信データ生成部２４４３は、読み出した燃焼器ブロックデータと、現時点の燃焼器データに基づいて現時点の燃焼器ブロックデータを生成する。現時点の燃焼器ブロックデータは、前時点の燃焼器ブロックデータに基づく検証値と、その履歴情報に新たに生成した燃焼器データを追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部２４４３は、第１通信部２４６を介して生成した燃焼器ブロックデータを他の演算装置３４に送信し、自装置のブロックデータ保存部２４４１に保存する。
【００９４】
（ブロックデータ）
次に、本変形例に係るブロックデータの例について説明する。
図１３は、本変形例に係るブロックデータの例を示す図である。
ＢＤ４１、ＢＤ４２、ＢＤ４３は、それぞれ、ある時点における燃焼器ブロックデータ、その次の時点における燃焼器ブロックデータ、さらに次の時点における燃焼器ブロックデータを示す。
【００９５】
図１３に示す例では、燃焼器ブロックデータには、履歴情報として、開始時点から現時点までの燃焼器データに基づく検証値と、燃焼器データが累積されて構成される履歴情報が含まれる。燃焼器データは、燃焼器ブロックデータの末尾の４行に示されるように、要素データとしてバルクリング火炎温度、最高及び最低リング火炎温度、エミッションレベル及び音圧を示す。なお、図１３は、各燃焼器ブロックデータにおいて１個の燃焼器ブロックデータを示すが、一般には各１個の燃焼器ブロックデータには複数の燃焼器ブロックデータが累積される。
燃焼器ブロックデータのブロックヘッダに含まれる検証値として、上述の入力ブロックデータ、中間値ブロックデータ、障害対応ブロックデータと同様に、履歴情報を構成する全燃焼器データのＣＲＣ値と、前時点までのブロックデータのＣＲＣ加算値とが含まれる。
なお、全燃焼器データのＣＲＣ値と、前時点までのブロックデータに含まれるブロックヘッダのＣＲＣ加算値に代えて、それぞれのハッシュ値が用いられてもよい。
【００９６】
以上に説明したように、本実施形態に係る冗長化システム３において、複数の演算装置３４の少なくとも１台は、検出対象の障害を検出する検出部３４２を備える。送信データ生成部２４４３は、障害が検出されるとき、検証値と、現時点の稼働状態の情報として障害に関する情報に基づいて第１ブロックデータを生成し、第１通信部２４６は、第１ブロックデータを複数の演算装置３４のうちその少なくとも１台の演算装置３４とは異なる他の演算装置３４に送信する。複数の演算装置３４のうち第１ブロックデータを取得した第２演算装置３４において、検出対象の機能が補われるとき、送信データ生成部２４４３は、第１ブロックデータに基づく検証値と、現時点の稼働状態の情報として機能への対応に関する情報に基づいて第２ブロックデータを生成する。第１通信部２４６は、第２ブロックデータを複数の演算装置３４のうち第２演算装置３４とは異なる他の演算装置３４に送信する。
【００９７】
この構成によれば、各演算装置１０の検出対象における障害の発生とその機能への対応を示す履歴情報を含むブロックデータが共有される。そのため、検出対象となる稼働状態の監視や復旧を監視するための中央装置などの他の機器を設ける必要がなくなる。そのため、演算装置３４間においてシステム全体として容易に機能を維持することができるので、システム全体の信頼性が向上する。例えば、検出対象が演算装置１０の機能とその制御対象が冗長化された発電システムである場合には、従来、エンジニア（運転監視員）が各号機の状態を監視し、その操作に基づいて障害が発生した号機とは異なる別個の号機の発電システムを起動し、それぞれの出力配分を決定していた。上述した例によれば、障害発生データと障害対応データを含むブロックデータが、演算装置３４間で共有される。例えば、サブシステム３ｓにおいて障害が検知された場合、サブシステム３ｓ’を起動させ発電プラント全体として要求されている発電量を維持することができる。より具体的には、サブシステム３ｓの演算装置３４又はその制御対象の機器（例えば、ガスタービン、補機）の故障による発電出力が低下し、その不足電力をサブシステム３ｓ’により補われる。そのため、エンジニアによる操作に頼らずに発電システム間でその発電出力を補うための出力制御が実現する。
【００９８】
＜第四実施形態＞
以下、本発明の第四実施形態に係る冗長化システムについて、図１４〜図１６を参照して説明する。
図１４は、本実施形態に係る冗長化システム４の一構成例を示すブロック図である。
本実施形態に係る冗長化システム４は、図５に示す冗長化システム２と同様の構成を含む。第二実施形態と同一の構成については、同一の符号を付してその説明を援用する。以下の説明では、主に第二実施形態との差異点について説明する。
冗長化システム４は、ＩＯモジュール２８ａａ〜２８ａＩ、２８ｂａ〜２８ｂＪに代え、ＩＯモジュール４８ａａ〜４８ａＩ、４８ｂａ〜４８ｂＪを備える。ＩＯモジュール４８ａａ〜４８ａＩ、４８ｂａ〜４８ｂＪは、互いに同一の構成を備え、これらをＩＯモジュール４８と総称する。ＩＯモジュール４８を構成する出力装置４８ｏ（図１５）は、各演算装置３４から受信した出力データについて選定処理を行い、その処理結果で更新された出力データを含むブロックデータをＩＯネットワーク２６に送出する。
【００９９】
次に、本実施形態に係る出力装置４８ｏの構成について説明する。図１５は、本実施形態に係る出力装置４８ｏの機能構成の一例を示すブロック図である。
出力装置４８ｏは、データ選定部４８３、ブロックデータ処理部４８４、通信部４８６、出力部４８７、記憶部４８８及び検出部４８９を備える。
【０１００】
データ選定部４８３は、記憶部４８８に格納されている最新の出力データＹａ，Ｙｂ，Ｙｃ及びＹｄを読み出し、これら出力データＹａ，Ｙｂ，Ｙｃ及びＹｄから、データ選定部２４３と同様の手法を用いて、正しい出力データを選定する。ここで、データ選定部４８３は、出力データＹａ，Ｙｂ，Ｙｃ及びＹｄを比較し、これらの値の出現頻度が最も高い出力データを、正しい出力データとして選択する。
データ選定部４８３は、正しい出力データは複数存在するので、その複数の出力データのいずれか１つを選択する。データ選定部４８３は、選択した出力データとその出力元である演算装置２４の情報を含む選定データを記憶部４８８に記憶し、その出力データを出力部４８７に出力する。
【０１０１】
ブロックデータ処理部４８４は、演算装置２４から送信される出力データに基づくブロックデータを処理する。以下の説明では、出力データに基づくブロックデータを出力ブロックデータと呼んで、他の種類のブロックデータと区別する。ブロックデータ処理部４８４は、ブロックデータ保存部４８４１と送信データ生成部４８４３を含んで構成される。ブロックデータ処理部４８４では、受信データ解析部が省略されてもよい。
ブロックデータ保存部４８４１は、送信データ生成部４８４３が生成した出力ブロックデータを保存する。
【０１０２】
送信データ生成部４８４３は、新たに記憶部４８８に記憶された最新の選定データを読み出し、読み出した選定データを追加して構成される履歴情報を含むように、出力ブロックデータを生成する。ここで、送信データ生成部４８４３は、ブロックデータ保存部４８４１に保存された出力ブロックデータのうち最新の出力ブロックデータを前時点の出力ブロックデータとして読み出す。送信データ生成部４８４３は、読み出した出力ブロックデータと、現時点の選定データに基づいて現時点の出力ブロックデータを生成する。現時点の出力ブロックデータは、前時点の出力ブロックデータに基づく検証値と、その履歴情報に新たに生成した選定データを追加して構成される現時点の履歴情報とを含むデータである。送信データ生成部４８４３は、通信部４８６を介して生成した出力ブロックデータをＩＯネットワークに送出し、自装置のブロックデータ保存部４８４１に保存する。
【０１０３】
通信部４８６は、ＩＯアダプタ２７に通信可能に接続され、ＩＯネットワーク２６に接続された各機器との間で、各種のデータを送受信可能とする。
通信部４８６は、各演算装置２４ａ，２４ｂ，２４ｃ及び２４ｄからそれぞれ出力データＹａ，Ｙｂ，Ｙｃ及びＹｄを取得するとともに、これら出力データＹａ，Ｙｂ，Ｙｃ及びＹｄを記憶部４８８に格納する。記憶部４８８には、通信部４８６から出力された出力データＹａ，Ｙｂ，Ｙｃ及びＹｄが格納される。
通信部４８６は、送信データ生成部４８４３から入力された出力ブロックデータをＩＯネットワーク２６に送出する。従って、ＯＰＳ２１、各演算装置２４は、ＩＯネットワーク２６を介して、出力装置４８ｏから送出される出力ブロックデータを取得することができる。
【０１０４】
出力部４８７は、記憶部４８８に記憶された選定出力データに含まれる出力データが示す出力値を、自部に接続されたフィールド機器に出力する。出力部４８７は、例えば、ディジタルの出力データをアナログの出力値として電圧値、電流値などに変換するディジタルアナログ変換器を備える。
記憶部４８８は、各部で取得された各種のデータ、各部における処理に用いられる各種のデータを記憶する。
検出部４８９は、出力部４８７から出力される出力値が、出力部４８７に出力される出力データに相当する正しい出力値であるか否かを判定する自己チェック回路を含んで構成される。検出部４８９は、その判定結果を示す障害情報を、判定対象の出力データと対応付けて記憶部４８８に記憶する。記憶部４８８に記憶される選定データには、演算装置２４の情報と出力データに、さらに障害情報が含まれてもよい。
【０１０５】
（ブロックデータ）
次に、本変形例に係るブロックデータの例について説明する。
図１６は、本実施形態に係るブロックデータの例を示す図である。
ＢＤ５１、ＢＤ５２、ＢＤ５３は、それぞれ、ある時点における出力ブロックデータ、その次の時点における出力ブロックデータ、さらに次の時点における出力ブロックデータを示す。
【０１０６】
図１６に示す例では、出力ブロックデータには、履歴情報として、開始時点から現時点までの選定データに基づく検証値と、選定器データが累積されて構成される履歴情報が含まれる。選定器データは、選択結果、出力データ及び障害情報が含まれる。選択結果として、選定された出力データの出力元である演算装置２４の番号（ＬＳ番号）が用いられる。出力データには、ディジタルの出力データ（ＤＯ）と、その出力データに基づくアナログの出力値（ＡＯ）が含まれる。障害情報として、出力される出力値が正しいか否かを示す情報が含まれる。
出力ブロックデータのブロックヘッダに含まれる検証値として、上述の入力ブロックデータ、中間値ブロックデータ、障害対応ブロックデータ、出力ブロックデータと同様に、履歴情報を構成する全選定データのＣＲＣ値と、前時点までのブロックデータのＣＲＣ加算値とが含まれる。
なお、全選定データのＣＲＣ値と、前時点までのブロックデータに含まれるブロックヘッダのＣＲＣ加算値に代えて、それぞれのハッシュ値が用いられてもよい。
【０１０７】
以上に説明したように、本実施形態に係る冗長化システム４は、出力装置４８ｏを備える。出力装置４８ｏは、複数の演算装置２４のそれぞれとＩＯネットワーク２６を介して接続される通信部４８６と、出力データの複数の演算装置２４間の出現頻度に基づいて出力データの正誤を判定し、正しいと判定された出力データを選定するデータ選定部４８３を備える。また、出力装置４８ｏは、検証値と、前時点までの出力データからなる出力履歴情報に現時点の前記出力データの選択結果を示す情報を追加した現時点の出力履歴情報と、を含む出力ブロックデータを生成する送信データ生成部４８４３を備える。通信部４８６は、出力ブロックデータをＩＯネットワーク２６に送出する。
【０１０８】
この構成によれば、ＩＯネットワーク２６に接続された機器、例えば、ＯＰＳ２１、演算装置２４において出力ブロックデータが共有されるので、出力ブロックデータに含まれる出力データをモニタすることが可能となる。
従来は、出力装置からフィールド機器に出力された電圧値、電流値などの出力値をモニタするために、出力装置が出力値を演算装置にフィードバックし、演算装置２４がＯＰＳ２１にその出力値の情報を送信する処理を行っていた。もしくは、出力装置が出力された出力値を入力装置に還流するための計装を備えていた。本実施形態では、その処理や計装を要しないため、出力装置において処理負荷が低減し、ハードウェア規模の増加を抑えることができる。また、処理負荷を低減したことに応じて、出力装置の出力にかかる処理能力を向上することができる。
【０１０９】
以上、本発明の実施形態及び変形例について、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【０１１０】
例えば、第二実施形態、第四実施形態に示す演算装置２４、第三実施形態に示す演算装置３４は、第一実施形態に示す演算装置１０の検出部１２、機能制御部１３ならびにブロックデータ処理部１４、又はそれらの機能を実現する構成部を備えてもよい。
第四実施形態に示す出力装置４８ｏは、第三実施形態に示すＩＯモジュール２８に備えられてもよい。
また、ブロックデータ処理部１４、２４４、４８４は、自部で扱われる最新のブロックデータに含まれる履歴情報の情報量が、所定の情報量を超えたか否かを判定してもよい。所定の情報量を超えたと判定するとき、ブロックデータ処理部１４、２４４、４８４は、その履歴情報を記憶部１８、２４８、４８８に記憶し、新たに開始時点におけるブロックデータを生成してもよい。
【０１１１】
なお上述の演算装置１０、２４、３４、出力装置４８ｏは、内部にコンピュータシステムを有してもよい。そして、上述した演算装置１０等における各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
【０１１２】
また、演算装置２４、３４において、制御演算部２４１で実行されるアプリケーション、又は制御演算部２４１もしくはその他の構成部の機能を実現するために実行されるアプリケーションの実行状態について、図４に示す処理が行われてもよい。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１１３】
１、２、３、４…冗長化システム、１０、２４、３４…演算装置、１１、２４１…制御演算部、１２、３４２、４８９…検出部、１３、３４５…機能制御部、１４、２４４、４８４…ブロックデータ処理部、１６、４８６…通信部、１８、２４８、４８８…記憶部、
２１…ＯＰＳ、２２…ＥＭＳ、２３…ＮＡ、２４…演算装置、２５…ＩＯスキャナ、２６…ＩＯネットワーク、２７…ＩＯアダプタ、２８…ＩＯモジュール、
１４１、２４４１、４８４１…ブロックデータ保存部、１４２、２４４２…受信データ解析部、１４３、２４４３、４８４３…送信データ生成部、２４３、４８３…データ選定部、２４６…第１通信部、２４８…記憶部、２４９…第２通信部、４８７…出力部
【図１】
2018142077.tif 000003
【図２】
2018142077.tif 000004
【図３】
2018142077.tif 000005
【図４】
2018142077.tif 000006
【図５】
2018142077.tif 000007
【図６】
2018142077.tif 000008
【図７】
2018142077.tif 000009
【図８】
2018142077.tif 000010
【図９】
2018142077.tif 000011
【図１０】
2018142077.tif 000012
【図１１】
2018142077.tif 000013
【図１２】
2018142077.tif 000014
【図１３】
2018142077.tif 000015
【図１４】
2018142077.tif 000016
【図１５】
2018142077.tif 000017
【図１６】
2018142077.tif 000018