(57)【特許請求の範囲】
【請求項１】
通信ネットワークと、
前記通信ネットワークを介して接続され、それぞれ自己が制御すべき被制御装置の制御を行う複数の制御装置と、を備えた分散制御システムであって、
前記制御装置は、前記分散制御システムで実行される制御プログラムの一部を構成する機能単位プログラムが予め割り振られ、当該割り振られた前記機能単位プログラムをシミュレートするシミュレート部と、
前記シミュレート部によりシミュレートされた前記機能単位プログラムのシミュレート結果を他の制御装置と共有すべく記憶する共有メモリ部と、備え、
前記制御装置のうち、少なくともいずれか一つは、予め設定された前記機能単位プログラムの前記複数の制御装置への割り振りに対応する前記機能単位プログラム毎の実行時間を格納可能に構成されたシミュレーションテーブルデータベースと、
前記共有メモリ部を参照し、前記シミュレート結果に対応する前記機能単位プログラム毎の実行時間を前記シミュレーションテーブルデータベースに格納するシミュレーション命令部と、を備えた、
分散制御システム。
【請求項２】
前記シミュレーションテーブルデータベースは、前記いずれかの制御装置が故障した場合の代替制御装置の情報を格納している、
請求項１記載の分散制御システム。
【請求項３】
前記通信ネットワークを介して、前記複数の制御装置と接続されるとともに、第２の通信ネットワークを介してサーバシステムと接続された通信モジュールを備え、
前記通信モジュールは、前記割り振られた前記機能単位プログラムの入力データを同じにして、前記サーバシステムにおいて求めた前記機能単位プログラム毎の実行結果と、前記制御装置が求めた前記機能単位プログラム毎の実行結果と、が一致しているか否かを判定する出力判定部と、
前記第２の通信ネットワークを介して入力された前記サーバシステムにおいて求めた前記機能単位プログラム毎の実行結果、前記通信ネットワークを介して入力された前記制御装置が求めた前記機能単位プログラム毎の実行結果及び前記判定の結果を対応づけて記憶する入出力データベースと、を備えた、
請求項１又は請求項２記載の分散制御システム。
【請求項４】
前記出力判定部は、スキャン周期の終了タイミングで、自己が属するローカル制御システムの前記制御装置の実行結果あるいは受信した他のローカル制御システムの前記制御装置の実行結果と、前記サーバシステムの実行結果とを前記機能単位プログラム単位で比較して判定し、
前記通信モジュールは、前記出力判定部の判定により、比較結果が不一致した場合にその旨を通知する通知部を備える、
請求項３記載の分散制御システム。
【請求項５】
通信ネットワークを介して他の制御装置と接続可能に設けられ、自己と共に分散制御システムを構築する前記他の制御装置と共働して自己が制御すべき被制御装置の制御を行う制御装置であって、
前記分散制御システムで実行される制御プログラムの一部を構成する機能単位プログラムが予め割り振られ、当該割り振られた前記機能単位プログラムをシミュレートするシミュレート部と、
前記シミュレート部によりシミュレートされた前記機能単位プログラムのシミュレート結果を他の制御装置と共有すべく記憶する共有メモリ部と、
予め設定された前記機能単位プログラムの前記他の制御装置への割り振りに対応する前記機能単位プログラム毎の実行時間を格納可能に構成されたシミュレーションテーブルデータベースと、
前記共有メモリ部を参照し、前記シミュレート結果に対応する前記機能単位プログラム毎の実行時間を前記シミュレーションテーブルデータベースに格納するシミュレーション命令部と、
を備えた制御装置。
【請求項６】
前記機能単位プログラムが予め割り振られた場合に、当該割り振られた前記機能単位プログラムを実行する実行部を備え、
前記共有メモリ部は、前記実行部により実行された前記機能単位プログラムの実行結果及び前記他の制御装置の実行部により実行された実行結果を記憶し、
自己の前記実行部の実行結果あるいは前記共有メモリ部を参照して得られた前記他の制御装置の実行部の実行結果に基づいて、前記被制御装置の制御を行う、
請求項５記載の制御装置。
【請求項７】
通信ネットワークを介して他の制御装置と接続され、自己と共に分散制御システムを構築する前記他の制御装置とデータを共有する共有メモリ部と、予め設定された機能単位プログラムの前記複数の制御装置への割り振りに対応する前記機能単位プログラム毎の実行時間を格納可能に構成されたシミュレーションテーブルデータベースと、を備え、前記他の制御装置と共働して自己が制御すべき被制御装置の制御を行う制御装置において実行される制御方法であって、
前記分散制御システムで実行される制御プログラムの一部を構成する機能単位プログラムが予め割り振られ、当該割り振られた前記機能単位プログラムをシミュレートする過程と、
前記機能単位プログラムのシミュレート結果を他の制御装置と共有すべく前記共有メモリ部に記憶する過程と、
前記共有メモリ部を参照し、前記シミュレート結果に対応する前記機能単位プログラム毎の実行時間を前記シミュレーションテーブルデータベースに格納する過程と、
を備えた制御方法。
【請求項８】
前記機能単位プログラムが予め割り振られた場合に、当該割り振られた前記機能単位プログラムを実行する過程と、
前記実行された前記機能単位プログラムの実行結果及び前記他の制御装置により実行された実行結果を前記共有メモリ部に記憶する過程と、
自己の前記実行結果あるいは前記共有メモリ部を参照して得られた前記他の制御装置の実行結果に基づいて、前記被制御装置の制御を行う過程と、
を備えた請求項７記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、分散制御システム、制御装置及び制御方法に関する。
【背景技術】
【０００２】
プラントなどの制御システムにおいて、分散配置された複数の通信モジュールのそれぞれにコントローラを接続し、通信ネットワークを介して、制御システム全体を連携して動作させる制御システムが知られている。
このような制御システムにおいては、通信ネットワークを介して予め定められた時間以内に制御コマンド及び制御データを含む通信フレームの送出が可能となるリアルタイム性が要求される。
一方、コンピュータ利用の一態様として、インターネット等の通信ネットワークを介して配置したサーバ等に実際の処理やデータ格納などを行わせ、ユーザはそれらをサービスとして利用するいわゆるクラウドコンピューティングが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１５４０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、プラントなどの制御システムにおいて、ローカルシステムにおける負荷を分散すべく、クラウドコンピューティングを導入しようとした場合、リアルタイム性の確保が困難となる虞があった。
【０００５】
ところで、従来のローカル制御システムにおいては、シーケンス制御が幅広く用いられており、その多くは、ＰＬＣ（Programmable  Logic  controller）上で動作するソフトウェアとして実現されている。
【０００６】
制御装置としてのＰＬＣは、小型のコンピュータとして構成されており、他のコンピュータと同様にマイクロプロセッサ上でソフトウェアが実行されることで処理を行うが、リレー回路を原型とするステートマシンを動作モデルとしている。
【０００７】
大規模な制御システムを構築する場合には、複数の制御装置（ＰＬＣ）が連携をとって動作する必要があるが、これらの複数のＰＬＣへの処理の割り振りは、当該制御システムを構築する設計者に委ねられており、必ずしも最適に割り振りがなされるとは限らない。
【０００８】
本発明は、上記に鑑みてなされたものであって、複数の制御装置が連携して動作するに際し、各制御装置への処理の割り振りを最適に行い、制御システム全体の信頼性を向上することができる分散制御システム、制御装置及び制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
実施形態の分散制御システムは、通信ネットワークと、通信ネットワークを介して接続され、それぞれ自己が制御すべき被制御装置の制御を行う複数の制御装置と、を備えた分散制御システムである。
制御装置のシミュレート部は、分散制御システムで実行される制御プログラムの一部を構成する機能単位プログラムが予め割り振られ、当該割り振られた機能単位プログラムをシミュレートする。
共有メモリ部は、シミュレート部によりシミュレートされた機能単位プログラムのシミュレート結果を他の制御装置と共有すべく記憶する。
そして、制御装置のうち、少なくともいずれか一つは、予め設定された機能単位プログラムの複数の制御装置への割り振りに対応する機能単位プログラム毎の実行時間を格納可能に構成されたシミュレーションテーブルデータベースを備え、シミュレーション命令部は、共有メモリ部を参照し、前記シミュレート結果に対応する前記機能単位プログラム毎の実行時間を前記シミュレーションテーブルデータベースに格納する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態の分散制御システムの概要構成ブロック図である。
【図２】図２は、ローカル制御システムの概要構成ブロック図である。
【図３】図３は、ＰＬＣの概要構成ブロック図である。
【図４】図４は、ローカル制御システムの概要機能ブロック図である。
【図５】図５は、シミュレータ命令部を設けたＰＬＣの機能構成ブロック図である。
【図６】図６は、シミュレーションテーブルデータベースの説明図である。
【図７】図７は、他のシミュレーションテーブルデータベースの説明図である。
【図８】図８は、第２実施形態の通信モジュールの概要機能構成図である。
【図９】図９は、入出力データベースの一例の説明図である。
【発明を実施するための形態】
【００１１】
次に実施形態について図面を参照して詳細に説明する。
［１］第１実施形態
図１は、実施形態の分散制御システムの概要構成ブロック図である。
分散制御システム１０は、大別するとサーバシステム１１と、サーバシステム１１に通信ネットワーク１２を介して接続された複数のローカル制御システム１３−１〜１３−ｎ（ｎは２以上の整数）と、を備えている。
【００１２】
ここで、ローカル制御システム１３−１〜１３−ｎの構成について説明する。
ローカル制御システム１３−１〜１３−ｎは、同様な構成となっているので、以下においては、ローカル制御システム１３−１を例として説明する。
【００１３】
図２は、ローカル制御システムの概要構成ブロック図である。
ローカル制御システム１３−１は、通信ネットワークとの間のインタフェース動作を行う通信モジュール２１と、通信モジュール２１にＬＡＮ２２を介して接続され、オペレータが各種操作を行うための複数のＨＭＩ（Human  Machine  Interface）２３−１〜２３−ｘ（ｘは２以上の整数）と、自己に接続された出力機器（被制御機器）を制御する複数のＰＬＣ２４−１〜２４−ｙ（ｙは２以上の整数）と、自己に接続された出力機器との間のインタフェース動作を行う複数のリモートＩ／Ｏ２５−１〜２５−ｚと、を備えている。
【００１４】
次にＰＬＣの構成について説明する。
ＰＬＣ２４−１〜２４−ｙは、同様の構成であるので、以下の説明においては、ＰＬＣ２４−１を例として説明する。
【００１５】
図３は、ＰＬＣの概要構成ブロック図である。
ＰＬＣ２４−１は、スイッチ、センサ、信号発生装置等の各種入力機器が接続される複数の入力端子を備えた入力端子部３１と、入力端子部３１に接続され入力インタフェース動作を行う入力インタフェース部３２と、バルブ、ランプ、ブザー、アクチュエータ等の各種出力機器（被制御機器）が接続される複数の出力端子を備えた出力端子部３３と、出力端子部３３に接続され出力インタフェース動作を行う出力インタフェース部３４と、入力インタフェース部３２及び出力インタフェース部３４が接続され、ＰＬＣ２４−１全体を制御する制御部３５と、を備えている。
【００１６】
上記構成において、制御部３５は、マイクロコンピュータとして構成されており、制御部３５全体を制御するＭＰＵ４１と、制御プログラムを含む各種データを不揮発的に記憶するＲＯＭ４２と、ワークエリアとしても用いられ、各種データを一時的に格納するＲＡＭ４３と、制御パラメータ等の各種データを不揮発的、かつ、更新可能に記憶するフラッシュＲＯＭ４４と、通信ネットワークを介して他のＰＬＣあるいはサーバと通信を行うための通信インタフェース部４５と、各部を通信可能に接続するバス４６と、を備えている。
【００１７】
次にローカル制御システム１３−１の機能構成について説明する。
図４は、ローカル制御システムの概要機能ブロック図である。
ローカル制御システム１３−１を構成する通信モジュール２１は、サーバシステム１１との間で通信（パケット通信）を行う通信部５１と、ＬＡＮ２２を介して接続されたＰＬＣ２４−１〜２４−ｙとの間で共有するデータを格納したネットワーク共有メモリ部５２と、ネットワーク共有メモリ部５２上に配置された入力情報を通信部５１に入力する入力部５３と、通信部５１を介して入力されるサーバシステム１１の演算実行結果とネットワーク共有メモリ部５２上に格納されたローカル制御システム１３−１の演算実行結果とを比較し、比較結果に基づいていずれかの演算実行結果を採用し、採用した演算実行結果を所定の演算実行結果格納領域に格納する出力判定部５４と、ローカル制御システム１３−１全体の処理を実行するためのプログラムを機能毎にモジュール化して作成された機能単位プログラムＰＯＵ（Program  Organization  Unit）を、ＬＡＮ２２を介して接続されたＰＬＣ２４−１〜２４−ｙのいずれに割り振るかを判別する分配サーバ部５５と、を備えている。
【００１８】
本実施形態において、機能単位プログラムは、ＰＬＣ２４−１〜ＰＬＣ２４−ｙから見れば、必ずしも自己の処理を実行するためのものとはなっていない。すなわち、ローカル制御システム１３−１において実施される機能を実現するための一部を担っているだけである。例えば、ＰＬＣ２４−１により実行された機能単位プログラムＰＯＵの実行結果は、当該ＰＬＣ２４−１では利用されず、ＰＬＣ２４−３においてその実行結果が利用されることもある。このため、分配サーバ部５５は、ローカル制御システム１３−１全体において、より実行効率が高くなるように、機能単位プログラムＰＯＵを割り振る。なお、割り振りの詳細については、追って説明する。
【００１９】
上記構成において、通信モジュール２１は、サーバシステム１１と通信を行って、当該ローカル制御システム１３−１で実行すべきタスク（後述するメインスキャンタスクＴＭあるいはハイスピードスキャンタスクＴＨ）の変更、更新がなされる度に当該タスクを取得し、ＬＡＮ２２を介して接続されたＰＬＣ２４−１〜２４−ｙに配信する。
【００２０】
また、ＰＬＣ２４−１〜ＰＬＣ２４−ｙは、それぞれ、ＬＡＮ２２を介して接続された他のＰＬＣ及び通信モジュール２１との間で共有するデータを格納したネットワーク共有メモリ部６１と、スキャン周期の開始タイミングで分配サーバ部５５により割り振られた実行優先度が低く、最大許容実行時間の長いメインスキャンタスク（ＭＳタスク）ＴＭあるいは実行優先度が高く、最大許容実行時間の短いハイスピードスキャンタスク（ＨＳタスク）ＴＨに対応する機能単位プログラムＰＯＵを実行して、演算結果をネットワーク共有メモリ部６１の所定の領域にローカル演算結果として書き込む（格納する）とともに、演算を行った旨を表す実行フラグをネットワーク共有メモリ部６１の所定の領域に書き込むシミュレータ部６２と、スキャン周期の終了タイミングで演算実行結果を出力情報として対応する出力機器に出力する入出力部６３と、を備えている。
ここで、ＰＬＣ２４−１〜ＰＬＣ２４−ｙへの機能単位プログラムＰＯＵの割り振りについて説明する。
一般に、ＭＰＵ、ＤＳＵ等のプロセッサには各演算（基数・補数・浮動小数点・シフト演算など）に対して得手不得手があり、また、使用できるリソース（メモリ、キャッシュなど）もハードウェア構成により異なっている。
【００２１】
すなわち、ＰＬＣ２４−１〜ＰＬＣ２４−ｙを構成するプロセッサであるＭＰＵ４１も同様に各演算（基数・補数・浮動小数点・シフト演算など）に対して得手不得手がある。また、同一のプロセッサであっても、割り込み処理の頻度（被制御装置数の多少）等により、演算速度は異なる。
このため、同一の機能単位プログラムＰＯＵを実行させたとしても、演算スピードがプロセッサ毎、ひいては、ＰＬＣ毎に異なることとなっている。
【００２２】
そこで、本実施形態においては、ローカル制御システム１３−１〜１３−ｎ毎にいずれか一つのＰＬＣにシミュレータ命令部を設け、当該ローカル制御システムに属しているＰＬＣに動作シミュレーションを行わせ、予め機能単位プログラムを割り振るための情報を収集し、割り振り基準を作成している。
【００２３】
具体的には、以下の説明においては、ＰＬＣ２４−３にシミュレータ命令部を設けるものとして説明する。
図５は、シミュレータ命令部を設けたＰＬＣの機能構成ブロック図である。
【００２４】
シミュレータ命令部６５が設けられたＰＬＣ２４−３は、通信モジュール２１（または他のローカル制御システム１３−２〜１３−ｎのＰＬＣ［ノード］）と通信し、タスクの変更・更新のたびにそれを取得する。シミュレータ命令部６５は、実制御ではなく、シミュレーションを行っていることを表す、シミュレーションフラグをネットワーク共有メモリ部６１上の所定のアドレスにセットする。
このネットワーク共有メモリ部６１の内容は、ローカル制御システム１３−１の通信モジュール２１のネットワーク共有メモリ部５２にも反映される。
【００２５】
この結果、ローカル制御システム１３−１の通信モジュール２１の分配サーバ部５５（図４参照）は、ネットワーク共有メモリ部５２上の所定のアドレスにシミュレーションフラグがセットされた場合、機能単位プログラムＰＯＵの割り振りを一時停止する。これにより、ＰＬＣ２４−３のシミュレータ命令部６５は、シミュレーション対象の機能単位プログラムをシミュレーションを指示するオペレータの指示に従って所定のＰＬＣに割り振るように、分配サーバ部５５に割り振り情報を、例えば、ネットワーク共有メモリ部５２を介して伝達する。この結果、分配サーバ部５５は、シミュレーション対象の機能単位プログラムをシミュレーションを指示するオペレータの指示に従って所定のＰＬＣに割り振ることが可能となる。
【００２６】
図６は、シミュレーションテーブルデータベースの説明図である。
実際には、オペレータの指示は、シミュレーションテーブルデータベース（ＤＢ）７０としてシミュレータ命令部６５が予め保有している。
【００２７】
すなわち、シミュレータ命令部６５は、ユーザが設計したシミュレーションテーブルデータベース（シミュレーション表）７０に基づきローカル制御システム１３−１を構成している各ＰＬＣ２４−１〜２４−ｙに所定の機能単位プログラムＰＯＵを割り振るべく、割振情報を上書きする。
【００２８】
この結果、ローカル制御システム１３−１を構成している各ＰＬＣ２４−１〜２４−ｙのシミュレータ部６２は、スキャン周期の開始タイミングで、割振情報に基づいて割り振られた機能単位プログラムの演算を開始し、演算結果をネットワーク共有メモリ部６１にローカル実行結果（演算実行結果）として記録する。
【００２９】
このとき、当該１３−１を構成している各ＰＬＣ２４−１〜２４−ｙの入出力部６３は、スキャン周期の終了タイミングにおいて、ネットワーク共有メモリ部６１の所定のアドレスにシミュレーションフラグがセットされている場合には、割り振られた機能単位プログラムＰＯＵの演算実行結果は、シミュレーションであるので、演算実行結果を出力情報として出力機器に出力しない。すなわち、シミュレーション結果が制御に用いられることは無い。
【００３０】
これにより、シミュレータ命令部６５としても機能しているＰＬＣ２４−３は、演算実行結果が出力されるネットワーク共有メモリ部６１を監視し、当該演算実行に要した時間（演算実行時間）をシミュレーション結果としてシミュレーションテーブルデータベース７０に保存する。
【００３１】
シミュレーションテーブルデータベース７０は、図６に示すように、ＰＬＣ２４−１〜２４−ｙ毎に、シミュレーションフラグを格納するシミュレーションモードデータと、シミュレーション対象のタスクの割り振りをタスクの優先度別に指定する割振情報データ７２−１〜７２−ｙと、シミュレーション対象のタスク毎の演算実行時間（シミュレーション実行時間）を格納する実行結果データ７３−１〜７３−ｙと、を備えている。
【００３２】
例えば、図６の例の場合、ＰＬＣ２４−１には、割振情報データ７２−１に示すように、実行優先度が低く、最大許容実行時間の長い（例えば、１０００ｍｓ）メインスキャンタスクＴＭとしての機能単位プログラムＰＯＵ１及び機能単位プログラムＰＯＵ２が割り振られ、それらの実行結果データ７３−１は、それぞれ、２００ｍｓ、３５０ｍｓとなっている。
【００３３】
また、ＰＬＣ２４−１には、割振情報データ７２−１に示すように、実行優先度が高く、最大許容実行時間の短い（例えば、１００ｍｓ）ハイスピードスキャンタスクＴＨとしての機能単位プログラムＰＯＵ４及び機能単位プログラムＰＯＵ７が割り振られ、その実行結果データ７３−１は、それぞれ、７０ｍｓ、５０ｍｓとなっている。
【００３４】
同様に、ＰＬＣ２４−２には、割振情報データ７２−２に示すように、メインスキャンタスクＴＭとしての機能単位プログラムＰＯＵ３が割り振られ、その実行結果データ７３−２は、１００ｍｓとなっている。
【００３５】
また、ＰＬＣ２４−２には、割振情報データ７２−２に示すように、ハイスピードスキャンタスクＴＨとしての機能単位プログラムＰＯＵ８が割り振られ、その実行結果は、実行結果データ７３−２に示すように、１２５ｍｓとなっている。
【００３６】
さらにＰＬＣ２４−ｙには、割振情報データ７２−ｙに示すように、メインスキャンタスクとしての機能単位プログラムＰＯＵ３７が割り振られ、その実行結果データは、１１５０ｍｓとなっている。
【００３７】
また、ＰＬＣ２４−ｙには、割振情報データ７２−２に示すように、ハイスピードスキャンタスクとしての機能単位プログラムＰＯＵ４２が割り振られ、その実行結果は、実行結果データ７３−ｙに示すように、８５ｍｓとなっている。
【００３８】
したがって、シミュレーション結果に基づいて、機能単位プログラムを割り振る場合には、上述の例の場合、ＰＬＣ２４−１については、機能単位プログラムＰＯＵ１及び機能単位プログラムＰＯＵ２の実行時間が、メインスキャンタスクの最大許容実行時間（例えば、１０００ｍｓ）以内であったので、メインスキャンタスクとしての機能単位プログラムＰＯＵ１及び機能単位プログラムＰＯＵ２をＰＬＣ２４−１に割り振っても良いとの判断がなされる。
【００３９】
同様にＰＬＣ２４−１については、機能単位プログラムＰＯＵ４の実行時間が、ハイスピードスキャンタスクの最大許容実行時間（例えば、１００ｍｓ）以内であったので、ハイスピードスキャンタスクとしての機能単位プログラムＰＯＵ４を割り振っても良いとの判断がなされる。
【００４０】
またＰＬＣ２４−２については、機能単位プログラムＰＯＵ３の実行時間が、メインスキャンタスクの最大許容実行時間（例えば、１０００ｍｓ）以内であったので、メインスキャンタスクとしての機能単位プログラムＰＯＵ３をＰＬＣ２４−２に割り振っても良いとの判断がなされる。
【００４１】
しかしながら、ＰＬＣ２４−２については、機能単位プログラムＰＯＵ８の実行時間が１２５ｍｓであり、ハイスピードスキャンタスクの最大許容実行時間（例えば、１００ｓ）を超えているので、ハイスピードスキャンタスクＴＨとしての機能単位プログラムＰＯＵ８については、ＰＬＣ２４−２に割り振ることはできないとの判断がなされる。
【００４２】
同様に、ＰＬＣ２４−ｙについては、機能単位プログラムＰＯＵ３７の実行時間が１１５０ｍｓであり、メインスキャンタスクの最大許容実行時間（例えば、１０００ｍｓ）を超えているので、メインスキャンタスクとしての機能単位プログラムＰＯＵ３７をＰＬＣ２４−ｙに割り振ることはできないとの判断がなされる。
【００４３】
また、ＰＬＣ２４−ｙについては、機能単位プログラムＰＯＵ４２の実行時間が、ハイスピードスキャンタスクＴＨの最大許容実行時間（例えば、１００ｍｓ）以内であったので、ハイスピードスキャンタスクＴＨとしての機能単位プログラムＰＯＵ４２を割り振っても良いとの判断がなされる。
【００４４】
以上の説明のように、ローカル制御システムの各ＰＬＣ２４−１〜ＰＬＣ２４−ｙの演算特性をより適切に把握し、負荷分散することが可能になる。また、ローカル側のＰＬＣ数（ノード数）を決定するための指標としてシミュレーション結果を用いることも可能である。すなわち、ＰＬＣに割り振られる機能単位プログラムの数が多すぎると判断される場合には、ＰＬＣの数を増加するようにすれば、最適なＰＬＣの数（＝ｙ）を設定することができる。
【００４５】
ところで、実際のシステム構築には、ＰＬＣの故障も想定する必要がある。
例えば、ＰＬＣの故障としては、入出力部とシミュレータの故障が想定できる。
これら入出力部とシミュレータの故障を検出するためには、ネットワーク共有メモリ上において、入出力部あるいはシミュレータが定周期的に入出力するエリア（アドレス）を監視すればよい。
【００４６】
この入出力部あるいはシミュレータ部６２が定周期的に入出力するエリア（アドレス）を監視は、例えば、分配サーバが行う。
より具体的には、分配サーバは、シミュレータが定周期的に入出力するエリア（アドレス）を監視していて、入出力が定周期的になされなかった場合には、対応するシミュレータが故障したものとして、分配サーバはそのシミュレータを備えたＰＬＣ（ノード）を除外して、機能単位プログラムを分配する（割り振る）。
【００４７】
また、予め故障したＰＬＣ（ノード）に代替可能な代替ＰＬＣ（代替ノード）を明示的に設定できるようにしてもよい。例えば、シミュレーションテーブルデータベース７０に代替ＰＬＣ（代替ノード）を特定するための代替ＰＬＣ特定データを格納するようにしてもよい。
【００４８】
図７は、他のシミュレーションテーブルデータベースの説明図である。
図７に示すように、代替ＰＬＣ特定データ７４を設けることにより、例えば、ＰＬＣ２４−２が故障した場合には、ＰＬＣ２４−１を代替ＰＬＣとして機能させる。
【００４９】
また、入出力部６３が故障した場合には、入力を参照している機能単位プログラムＰＯＵを実行しても、実行結果を取得できず、意味が無いため、分配サーバ部５５は、当該機能単位プログラムを除く他の機能単位プログラムのみを分配するように構成すればよい。ここで、入出力部が故障したＰＬＣに対し、上述した代替ＰＬＣが明示的に指定されていた場合には、これを無視するように動作すれば良い。
このような構成によれば、ローカル制御システムの各ＰＬＣ（ノード）の故障をより適切に把握し、負荷分散することが可能になる。
【００５０】
［２］第２実施形態
上述した実施形態においては、サーバシステム１１からの制御指示に基づいて、ローカル制御システムの複数のＰＬＣに機能単位プログラムを割り振って分散処理を行う構成について説明したが、本実施形態は、サーバシステム１１側でもローカル制御システム１３−１〜１３−ｎのそれぞれを構成する複数のＰＬＣに割り振った機能単位プログラムと同一の機能単位プログラムＰＯＵを動作させて、その結果が一致する場合には正常であると判断し、不一致の場合（相違した場合）には、ローカル制御システム１３−１〜１３−ｎの判断を優先して採用する構成を採っている。
【００５１】
図８は、第２実施形態の通信モジュールの概要機能構成図である。
ところで、通信モジュール２１の入力部５３に入力される入力情報と、出力判定部５４に入力されるローカル制御システム１３−１〜１３−ｎからの出力情報とは、同一のスキャン周期における同一の機能単位プログラムＰＯＵ同士において一対一に対応している。
そこで、本実施形態では、データ入出力の情報を記録し、保存する入出力データベース５６を備える構成を採り、サーバシステム１１及びローカル制御システム１３−１〜１３−ｎのそれぞれで実行した機能単位プログラムＰＯＵの実行結果を比較して、動作制御を行うようにしている。
【００５２】
図９は、入出力データベースの一例の説明図である。
入出力データベースは、入出力日時を格納した入出力日時データ８１と、機能単位プログラムＰＯＵを特定する機能単位プログラム特定データ８２と、入力データ８３と、サーバシステム１１による実行結果であるサーバ出力データ８４と、ＰＬＣによる実行結果であるローカル出力データ８５と、出力判定結果を格納する出力判定データ８６と、を備えている。
【００５３】
ところで、同一の機能単位プログラムＰＯＵを実行する場合、実際に実行するのがサーバシステム１１であろうと、ローカル制御システム１３−１〜１３−ｎを構成しているＰＬＣ２４−１〜２４−ｙであろうと、入力データ８３の値が同じである限り同一の結果が出るはずである。
【００５４】
したがって、同一の機能単位プログラムＰＯＵについて、同一の入力データ８３に対して、サーバシステム１１と対応するＰＬＣとで出力データに相違がある場合には、何らかの異常があったものと判断できることとなる。
【００５５】
例えば、図９の例の場合、入出力日時データ＝「２０１４／０６／２３  １６：１４：１０：０００」、機能単位プログラム特定データ＝「ＰＯＵ１」（スキャン周期５００ｍｓ）におけるサーバ出力データ８４＝「１」であり、ローカル出力データ８５＝「０」であり、サーバ出力データ８４とローカル出力データ８５とを比較することで、相違があることが分かる。
【００５６】
このように、サーバシステム１１と、ローカル制御システム１３−１〜１３−ｎとで、出力データに相違が生じた場合には、機器の故障を除くと、人為的によるものが強く疑われる。
このため、本第２実施形態では、サーバシステム１１及びローカル制御システム１３−１〜１３−ｎの演算結果を保管し、それぞれに相違がある場合のトラブルシューティングに役立たせている。例えば、悪意のある者にサーバシステムの演算結果を経路上でなりすまされた場合、その者がシステム・プラントの何（どこ）をいつ攻撃しようとしたかを特定することもできる。
【００５７】
さらに、人為的なデータの操作による相違が疑われる場合には、各工場・プラントにおいて定められた行動規範に基づく迅速な行動が求められると想定される。したがって、相違を迅速にオペレータに伝達することが必要となる。
【００５８】
そこで、入出力データベースを定期的に監視し、出力判定が相違「あり」となった場合に、予め指定された機器（ＨＭＩのＰＣやアラーム灯）に通信ネットワーク（ＬＡＮ等）を介して通知（伝達）するように構成すれば良い。
【００５９】
これにより、通知を受けた機器は、定められたアラーム（ピープ音）や出力してもよいし、文字情報をディスプレイに出力してもよい。
すなわち、情報を通知すべき、オペレータに適切な表現で伝達できればその手段は問わない。
この結果、人為的な行為による出力データの相違が検出されたことを迅速にオペレータに伝達でき、ひいては、その対処を迅速に行わせることが可能になる。ひいては分散制御システムの事業継続性を図るＢＣＰ（Business  Continuity  Plan）として機能することが可能となる。
【００６０】
以上説明したとおり、各実施形態によれば、複数の制御装置が連携して動作するに際し、各制御装置への処理の割り振りを最適に行うことができ、ひいては、制御システム全体の信頼性を向上することができる。
以上の説明においては、サーバシステム１１を一つの装置として説明してきたが、インターネット等の通信ネットワークの複数箇所にサーバ装置を配置するクラウドサーバシステムに適用することも可能である。
【００６１】
本実施形態の制御装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００６２】
また、本実施形態の制御装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の制御装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、本実施形態の制御装置のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６４】
１０    分散制御システム
１１    サーバシステム
１２    通信ネットワーク（第２の通信ネットワーク）
１３    ローカル制御システム
２１    通信モジュール
２２    ＬＡＮ（第１の通信ネットワーク）
２３−１〜２３−ｘ  ＨＭＩ
２４−１〜２４−ｙ    ＰＬＣ（制御装置）
２５−１〜２５−ｚ    リモートＩ／Ｏ
３５    制御部
４１    ＭＰＵ（実行部）
４２    ＲＯＭ
４３    ＲＡＭ
４４    フラッシュＲＯＭ
４５    通信インタフェース部
５１    通信部
５２    ネットワーク共有メモリ部
５３    入力部
５４    出力判定部
５５    分配サーバ部
５６    入出力データベース
６１    ネットワーク共有メモリ部
６２    シミュレータ部
６３    入出力部
６５    シミュレータ命令部
７０    シミュレーションテーブルデータベース
７２    割振情報データ
７３    実行結果データ
７４    代替ＰＬＣ特定データ
８１    入出力日時データ
８２    機能単位プログラム特定データ
８３    入力データ
８４    サーバ出力データ
８５    ローカル出力データ
８６    出力判定データ
【図１】
0006563187.tif 000002
【図２】
0006563187.tif 000003
【図３】
0006563187.tif 000004
【図４】
0006563187.tif 000005
【図５】
0006563187.tif 000006
【図６】
0006563187.tif 000007
【図７】
0006563187.tif 000008
【図８】
0006563187.tif 000009
【図９】
0006563187.tif 000010