(57)【特許請求の範囲】
【請求項１】
プラントの状態を表すデータを前記プラントに設けられた被制御対象から取り込み、前記プラントに対する操作指令に基づいて、前記被制御対象に対する制御指令を出力する制御装置と、
前記操作指令を前記制御装置に出力し、前記データに基づいて前記プラントの状態を表示するプラント監視装置と、を備え、
前記制御装置は、
前記操作指令に基づいて生成された前記制御指令を出力する複数の制御モジュールと、
前記制御モジュールから受信した前記制御指令を前記被制御対象に出力し、前記被制御対象から入力したデータを前記制御モジュールに入力する複数の入出力モジュールと、を備え、
前記制御モジュール及び前記入出力モジュールは、識別情報によって一意に識別され、
前記制御モジュールは、アクセス可能な他の前記制御モジュール及び前記入出力モジュールが規定されるアクセス管理テーブルに従い、他の前記制御モジュール及び前記入出力モジュールにアクセスし、
出力用の前記入出力モジュールは、最初に初期化を実施した前記制御モジュールの前記識別情報を記憶し、前記識別情報によって識別した前記制御モジュールのアクセスを許可し、他の前記制御モジュールからのアクセスを不許可とする
プラント監視制御システム。
【請求項２】
入力用の前記入出力モジュールは、データの送信要求をした前記制御モジュールに対して、前記被制御対象の入力値と、前記入出力モジュールに設定されているレンジ設定値とを送信し、
前記制御モジュールは、入力用の前記入出力モジュールから受信した前記レンジ設定値が、前記制御モジュールが有するレンジ設定値と一致していた場合に、入力用の前記入出力モジュールから受信した前記被制御対象の入力値を演算に用いる
請求項１に記載のプラント監視制御システム。
【請求項３】
プラントの状態を表すデータを前記プラントに設けられた被制御対象から取り込み、前記プラントに対する操作指令に基づいて、前記被制御対象に対する制御指令を出力する制御装置と、
前記操作指令を前記制御装置に出力し、前記データに基づいて前記プラントの状態を表示するプラント監視装置と、を備え、
前記制御装置は、
前記操作指令に基づいて生成された前記制御指令を出力する複数の制御モジュールと、
前記制御モジュールから受信した前記制御指令を前記被制御対象に出力し、前記被制御対象から入力したデータを前記制御モジュールに入力する複数の入出力モジュールと、を備え、
前記制御モジュールは、アクセス可能な他の前記制御モジュール及び前記入出力モジュールが規定されるアクセス管理テーブルに従い、他の前記制御モジュール及び前記入出力モジュールにアクセスし、前記アクセス管理テーブルに従ってアクセスした他の前記制御モジュールから取得するマスタ状態及びハートビート値の更新状況に基づいて、時刻マスタとなる他の前記制御モジュールを認識し、他の前記制御モジュールとの接続状態を認識する
プラント監視制御システム。
【請求項４】
前記制御モジュールは、他の前記制御モジュールから前記マスタ状態を取得できなくなった場合に、前記制御モジュール毎に設定された待ち時間を経過した後に時刻マスタへ昇格する
請求項３に記載のプラント監視制御システム。
【請求項５】
プラントに対する操作指令に基づいて生成された、被制御対象に対する制御指令を出力する複数の制御モジュールと、前記制御モジュールから受信した前記制御指令を、前記プラントに設けられた前記被制御対象に出力し、前記被制御対象から入力したデータを前記制御モジュールに入力する複数の入出力モジュールと、を備え、前記制御モジュール及び前記入出力モジュールは、識別情報によって一意に識別される制御装置の前記制御モジュールのアクセス管理方法であって、
前記制御モジュールは、アクセス可能な他の前記制御モジュール及び前記入出力モジュールが規定されるアクセス管理テーブルに従い、他の前記制御モジュール及び前記入出力モジュールにアクセスし、
出力用の前記入出力モジュールは、最初に初期化を実施した前記制御モジュールの前記識別情報を記憶し、前記識別情報によって識別した前記制御モジュールのアクセスを許可し、他の前記制御モジュールからのアクセスを不許可とする
アクセス管理方法。
【請求項６】
プラントに対する操作指令に基づいて生成された、被制御対象に対する制御指令を出力する複数の制御モジュールと、前記制御モジュールから受信した前記制御指令を、前記プラントに設けられた前記被制御対象に出力し、前記被制御対象から入力したデータを前記制御モジュールに入力する複数の入出力モジュールと、を備える制御装置の前記制御モジュールのアクセス管理方法であって、
前記制御モジュールは、アクセス可能な他の前記制御モジュール及び前記入出力モジュールが規定されるアクセス管理テーブルに従い、他の前記制御モジュール及び前記入出力モジュールにアクセスし、前記アクセス管理テーブルに従ってアクセスした他の前記制御モジュールから取得するマスタ状態及びハートビート値の更新状況に基づいて、時刻マスタとなる他の前記制御モジュールを認識し、他の前記制御モジュールとの接続状態を認識する
アクセス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、発電プラントを監視し、制御するプラント監視制御システム及びアクセス管理方法に関する。
【背景技術】
【０００２】
一般に、発電プラントにおいては、中央制御室にプラント監視装置や保守ツールなどの電子計算機が配置されたプラント監視制御システムが構築される。プラント監視装置や保守ツールは、ネットワークを介して、ボイラ制御装置やタービン制御装置などの制御装置と接続される。そして、プラント監視装置からの操作指令あるいは制御装置からの制御指令に基づいて各種の被制御対象（バルブ、ポンプ等）が動作される。従来の制御装置は、１つのＣＰＵ（Central Processing Unit：中央処理装置）モジュールに対して、１つのＩ／Ｏ（Input/Output）モジュールが設けられ、このＩ／Ｏモジュールを介して複数の被制御対象（例えば、センサ、ポンプ）がＣＰＵモジュールに接続されていた。被制御対象は、Ｉ／Ｏネットワークに接続されたＣＰＵモジュールによって動作が制御されていたため、このＩ／Ｏネットワークに接続されていない他のＣＰＵモジュールによって動作が制御されることはなかった。
【０００３】
このようなプラント制御装置として、例えば、特許文献１に開示された技術が知られている。特許文献１には、「制御装置は、操作監視装置からの指令がネットワークを介して入力され、ＣＰＵがこの指令や計測機器から入力される計測値を基に制御指令を演算し、制御機器に対して制御指令を出力する。」と開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２４４４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した特許文献１には、ＣＰＵ毎に制御を行う制御機器又は計測機器が決まっていることが記載されている。しかし、制御機器又は計測機器の動作を単一のＣＰＵだけが制御していた場合、このＣＰＵが停止すると、制御機器又は計測機器のデータをプラント監視装置が取得できない。そこで、近年はネットワークの信頼性が高まり、高速通信も可能となっていること、ＣＰＵモジュールの演算性能を活用する必要があることから、複数のＣＰＵモジュールを用いて、制御機器又は計測機器を制御する技術が検討されてきた。
【０００６】
しかし、複数のＣＰＵモジュールがＩ／Ｏモジュールを共有するようにネットワーク化して接続するためには、各ＣＰＵモジュールがＩ／Ｏモジュールにアクセスする時の処理を規定しておかなければならない。
【０００７】
本発明はこのような状況に鑑みて成されたものであり、複数のＣＰＵモジュールを用いて行われるＩ／Ｏモジュールへのアクセス運用を規定することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るプラント監視制御システムは、プラントの状態を表すデータをプラントに設けられた被制御対象から取り込み、プラントに対する操作指令に基づいて、被制御対象に対する制御指令を出力する制御装置と、操作指令を制御装置に出力し、データに基づいてプラントの状態を表示するプラント監視装置と、を備える。
そして、本発明に係る制御装置は、操作指令に基づいて生成された制御指令を出力する複数の制御モジュールと、制御モジュールから受信した制御指令を、プラントに設けられた被制御対象に出力し、被制御対象から入力したデータを制御モジュールに入力する複数の入出力モジュールと、を備える。制御モジュール及び入出力モジュールは、識別情報によって一意に識別される。そして、制御モジュールは、アクセス可能な他の制御モジュール及び入出力モジュールが規定されるアクセス管理テーブルに従い、他の制御モジュール及び入出力モジュールにアクセスする。出力用の入出力モジュールは、最初に初期化を実施した制御モジュールの識別情報を記憶し、識別情報によって識別した制御モジュールのアクセスを許可し、他の制御モジュールからのアクセスを不許可とする。
また、本発明に係る制御装置は、操作指令に基づいて生成された制御指令を出力する複数の制御モジュールと、制御モジュールから受信した制御指令を、プラントに設けられた被制御対象に出力し、被制御対象から入力したデータを制御モジュールに入力する複数の入出力モジュールと、を備える。制御モジュールは、アクセス可能な他の制御モジュール及び入出力モジュールが規定されるアクセス管理テーブルに従い、他の制御モジュール及び入出力モジュールにアクセスし、アクセス管理テーブルに従ってアクセスした他の制御モジュールから取得するマスタ状態及びハートビート値の更新状況に基づいて、時刻マスタとなる他の制御モジュールを認識し、他の制御モジュールとの接続状態を認識する。
【発明の効果】
【０００９】
本発明によれば、例えば、一つの制御モジュールが停止しても他の制御モジュールが入出力モジュールにアクセスすることができるため、プラント監視制御システムの冗長性を高めることができる。
上記した以外の課題、構成及び効果は、以下の実施の形態例の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施の形態例に係るプラント監視制御システムの構成例を示すブロック図である。
【図２】本発明の一実施の形態例に係る計算機のハードウェア構成例を示すブロック図である。
【図３】本発明の一実施の形態例に係るアクセス管理テーブルの構成例を示す説明図である。
【図４】本発明の一実施の形態例に係るＣＰＵモジュール、Ｉ／Ｏモジュールが行う処理の一例を示すシーケンス図である。
【図５】本発明の一実施の形態例に係る時刻マスタに異常が発生した場合に、時刻マスタを切り替える論理を示す説明図である。図５Ａは、第１ＣＰＵが時刻マスタであり、各ＣＰＵモジュールが正常動作している状態を表す。図５Ｂは、第１ＣＰＵが停止してから３演算周期後の状態を表す。図５Ｃは、第２ＣＰＵが時刻マスタに昇格した時の状態を表す。
【図６】本発明の一実施の形態例に係る時刻マスタの切り替え処理の例を示すシーケンス図である。
【図７】本発明の一実施の形態の変形例に係るプラント監視制御システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施の形態例に係るプラント監視制御システムについて、添付図面を参照して説明する。本明細書及び図面において、実質的に同一の機能又は構成を有する構成要素については、同一の符号を付することにより重複する説明を省略する。
【００１２】
図１は、プラント監視制御システム１の構成例を示すブロック図である。
プラント監視制御システム１は、プラント監視装置３、保守ツール４、ＣＰＵネットワーク５、複数のＣＰＵモジュール６（制御モジュールの一例）、Ｉ／Ｏネットワーク７、複数のＩ／Ｏモジュール８（入出力モジュールの一例）を備える。以下の説明で、複数のＣＰＵモジュール６を「ＣＰＵモジュール群」と呼び、複数のＩ／Ｏモジュール８を「Ｉ／Ｏモジュール群」と呼ぶ。そして、ＣＰＵモジュール群とＩ／Ｏモジュール群をまとめて「制御装置」と呼び、制御装置が制御指令を出力する対象を「被制御対象」と呼ぶ。
【００１３】
中央制御室２には、プラント監視装置３、保守ツール４が設置される。プラント監視装置３、保守ツール４は、それぞれＣＰＵネットワーク５を介してＣＰＵモジュール群に接続されている。また、ＣＰＵモジュール群とＩ／Ｏモジュール群は、Ｉ／Ｏネットワーク７を介して接続されている。
【００１４】
プラント監視装置３は、プラントの運転に必要な操作・監視機能を備えたヒューマンマシンインタフェース装置である。プラント監視装置３は、運転員の操作に基づき被制御対象への操作指令を制御装置のＣＰＵモジュール群に出力する。また、プラント監視装置３は、ＣＲＴ（Cathode Ray Tube）、液晶ディスプレイ等からなる表示装置に、制御装置からのデータに基づいてプラントの状態（プラント情報）を表示することで、運転員に各種の制御情報を提供したり、ガイダンスを出力したりする。
【００１５】
保守ツール４は、制御装置に対して保守作業を実施する為に用いられる。保守ツール４は、プラントを制御する論理を作成し、これらの論理を制御装置にロードする。また、保守ツール４は、制御装置の各種設定、ロジック編集、制御装置の演算過程や演算素子のパラメータをモニターしたり、演算素子のパラメータをチューニングしたりする等の保守動作を行う。
【００１６】
制御装置は、プラントの状態を表すデータをプラントに設けられた被制御対象から取り込み、プラントに対する操作指令に基づいて、被制御対象に対する制御指令を出力する。
ここで、ＣＰＵモジュール群の各ＣＰＵモジュール６は、プラント監視装置３から受信した操作指令に基づいて発電プラントの被制御対象に対する制御指令を演算し、生成した制御指令を特定のＩ／Ｏモジュール８に出力する。制御指令の演算及び生成は、例えば、Ｉ／Ｏモジュール８が被制御対象から取り込んだ、発電プラントの状態を表す電気信号をＡ／Ｄコンバータにて変換したデジタルデータ（計測値）や、プラント監視装置３からの操作指令に基づいて行われる。ＣＰＵモジュール群に設けられる複数のＣＰＵモジュール６は、第１ＣＰＵ、第２ＣＰＵ、第３ＣＰＵ、…のように識別される。第１ＣＰＵ、第２ＣＰＵ、第３ＣＰＵ、…は、Ｉ／Ｏネットワーク７を介してＩ／Ｏモジュール８に接続される。
【００１７】
Ｉ／Ｏモジュール群の各Ｉ／Ｏモジュール８は、ＣＰＵモジュール６が演算した制御指令をＤ／Ａコンバータにより電気信号に変換して、被制御対象に出力し、被制御対象を動作させる。また、Ｉ／Ｏモジュール８は、被制御対象から入力したデータをＣＰＵモジュール６に入力する。発電プラントでは、ＣＰＵモジュール６とＩ／Ｏモジュール８は、ボイラやタービン等の被制御対象に応じて、複数用意される。
【００１８】
Ｉ／Ｏモジュール８は、第１ＤＩ、第２ＤＩ、第１ＡＩ、第２ＡＩ、…のように識別される。図１では、ディジタルデータが入力されるＩ／Ｏモジュール８を「ＤＩ」と記載し、ディジタルデータを出力するＩ／Ｏモジュール８を「ＤＯ」と記載する。また、アナログデータが入力されるＩ／Ｏモジュール８を「ＡＩ」と記載し、アナログデータを出力するＩ／Ｏモジュール８を「ＡＯ」と記載する。
【００１９】
全てのＣＰＵモジュール６とＩ／Ｏモジュール８には、一意に識別可能なステーションナンバー（識別情報の一例）が設定されている。例えば、第１ＣＰＵには＃８００が割り振られ、第２ＣＰＵには＃８０１が設定される。また、第１ＤＩには＃０００が割り振られ、第２ＤＩには＃００１が設定される。ステーションナンバーは、それぞれのＣＰＵモジュール６やＩ／Ｏモジュール８に実装されるトグルスイッチ等により設定される。なお、不図示のＤＨＣＰ（Dynamic Host Configuration Protocol）サーバにより識別情報として各モジュールに割り振られるＩＰ（Internet Protocol）アドレスがステーションナンバーの代わりに用いられてもよい。
【００２０】
被制御対象には、例えば、スイッチ９ａ、センサ９ｂ、ポンプ９ｃ、バルブ９ｄがある。被制御対象は、特定のＩ／Ｏモジュール８に接続される。例えば、第１ＤＩにはスイッチ９ａが接続され、第２ＡＩにはセンサ９ｂが接続され、第１ＤＯにはポンプ９ｃが接続され、第１ＡＯにはバルブ９ｄが接続される。
【００２１】
＜計算機のハードウェア構成例＞
次に、プラント監視装置３、保守ツール４を構成する計算機１０のハードウェア構成を説明する。
図２は、計算機１０のハードウェア構成例を示すブロック図である。
【００２２】
計算機１０は、いわゆるコンピュータとして用いられるハードウェアである。計算機１０は、バス１４にそれぞれ接続されたＣＰＵ１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３を備える。さらに、計算機１０は、表示部１５、操作部１６、不揮発性ストレージ１７、ネットワークインタフェース１８とを備える。
【００２３】
ＣＰＵ１１は、本実施の形態例に係る各機能を実現するソフトウェアのプログラムコードをＲＯＭ１２から読み出して実行する。ＲＡＭ１３には、演算処理の途中に発生した変数やパラメータ等が一時的に書き込まれる。表示部１５は、例えば、液晶ディスプレイモニタであり、計算機１０で行われる処理の結果等を運転員に表示する。操作部１６には、例えば、キーボード、マウス等が用いられ、運転員が所定の操作入力、指示を行うことが可能である。
【００２４】
不揮発性ストレージ１７としては、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、フレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード等が用いられる。この不揮発性ストレージ１７には、ＯＳ（Operating System）、各種のパラメータの他に、計算機１０を機能させるためのプログラムが記録されている。ネットワークインタフェース１８には、例えば、ＮＩＣ（Network Interface Card）等が用いられ、端子が接続されたＣＰＵネットワーク５を介して各種のデータを送受信することが可能である。
【００２５】
図３は、アクセス管理テーブル２１〜２３のテーブル構成図である。図３では、ＣＰＵモジュール群が第１ＣＰＵ〜第３ＣＰＵのＣＰＵモジュール６によって構成される例を示す。
【００２６】
各ＣＰＵモジュール６は、アクセス可能な他のＣＰＵモジュール６及びＩ／Ｏモジュール８が規定されるアクセス管理テーブルを備え、このアクセス管理テーブルに従い、他のＣＰＵモジュール６及びＩ／Ｏモジュール８にアクセスする。例えば、第１ＣＰＵはアクセス管理テーブル２１を備え、第２ＣＰＵはアクセス管理テーブル２２を備え、第３ＣＰＵはアクセス管理テーブル２３を備える。アクセス管理テーブル２１〜２３は、第１ＣＰＵ〜第３ＣＰＵの内蔵メモリに格納されている。
【００２７】
アクセス管理テーブル２１には、第１ＣＰＵがアクセス可能なＣＰＵモジュール６（第２ＣＰＵ、第３ＣＰＵ）のステーションナンバーと、Ｉ／Ｏモジュール８のステーションナンバーとが格納されている。このため、第１ＣＰＵは、アクセス管理テーブル２１に格納されているステーションナンバーに該当するＣＰＵモジュール６、Ｉ／Ｏモジュール８にアクセス可能である。例えば、第１ＣＰＵは、アクセス管理テーブル２１に格納されている、ステーションナンバーが＃８０１である第２ＣＰＵに対してデータを要求して第２ＣＰＵからデータを受信する。次に、第１ＣＰＵは、ステーションナンバーが＃８０２である第３ＣＰＵに対してデータを要求して第３ＣＰＵからデータを受信する。同様に、第１ＣＰＵは、ステーションナンバーが＃０００である第１ＤＩから入力データを受信し、ステーションナンバーが＃００２である第１ＡＩから入力データを受信する。また、第１ＣＰＵは、ステーションナンバーが＃００４である第１ＤＯに出力データを送信し、ステーションナンバーが＃００７である第１ＡＯに出力データを送信する。
【００２８】
また、第２ＣＰＵは、アクセス管理テーブル２２に格納されたステーションナンバーに基づいて、他のＣＰＵモジュール６、Ｉ／Ｏモジュール８にアクセス可能である。第３ＣＰＵは、アクセス管理テーブル２３に格納されたステーションナンバーに基づいて、他のＣＰＵモジュール６、Ｉ／Ｏモジュール８にアクセス可能である。各ＣＰＵモジュール６が他のＣＰＵモジュール６やＩ／Ｏモジュール８に行うアクセスは、周期的に繰り返される。
【００２９】
ここで、ＣＰＵモジュール６、Ｉ／Ｏモジュール８が行う処理について説明する。
図４は、ＣＰＵモジュール６、Ｉ／Ｏモジュール８が行う処理の一例を示すシーケンス図である。
【００３０】
始めに、異なるＣＰＵモジュール６のアクセス管理テーブルに、同じステーションナンバーである出力用のＩ／Ｏモジュール８が格納されていた場合の処理について説明する。この場合、異なるＣＰＵモジュール６が同一の出力用のＩ／Ｏモジュール８に異なる制御指令を送信してしまう。例えば、第２ＣＰＵのアクセス管理テーブル２２と、第３ＣＰＵのアクセス管理テーブル２３には、ステーションナンバーが＃００８である第２ＡＯが制御指令の送信先として格納されている。この場合、第２ＣＰＵが第２ＡＯにデータを送信した後、第３ＣＰＵが第２ＡＯにデータを送信すると、被制御対象が意図しない動作をしかねない。
【００３１】
そこで、Ｉ／Ｏモジュール８は、最初に自身の初期化を実施してきたＣＰＵモジュール６のステーションナンバーを内蔵メモリに記憶しておく。そして、Ｉ／Ｏモジュール８は、内蔵メモリに記憶したステーションナンバーによって識別されるＣＰＵモジュール６からのアクセスを許可し、他のステーションナンバーが割り振られた他のＣＰＵモジュール６からのアクセスを不許可とするように処理を規定する。
【００３２】
第２ＡＯは、例えば、第２ＣＰＵが最初に第２ＡＯを初期化した際に、第２ＣＰＵのステーションナンバーである＃８０１を記憶しておく。その後、第２ＣＰＵが第２ＡＯにアクセスする（Ｓ１）。このとき、第２ＡＯは、第２ＣＰＵが最初に初期化したＣＰＵモジュール６であるかどうか判断する（Ｓ３）。第２ＣＰＵのステーションナンバーが＃８０１であるので、第２ＡＯは、第２ＣＰＵが最初に初期化したＣＰＵモジュール６であると判断し（Ｓ３のＹＥＳ）、第２ＣＰＵに対するアクセスを許可する（Ｓ４）。
【００３３】
ここで、第３ＣＰＵが第２ＡＯにアクセスした場合（Ｓ２）、第２ＡＯは、第３ＣＰＵのステーションナンバーが＃８０２であるので、第３ＣＰＵは最初に初期化したモジュールでないと判断し（Ｓ３のＮＯ）、第３ＣＰＵに対するアクセスを不許可とする（Ｓ５）。これにより、複数のＣＰＵモジュール６が一つのＩ／Ｏモジュール８に異なる制御指令を送信しても、Ｉ／Ｏモジュール８が異なる制御指令を一つの被制御対象に送信する事態を避けることができる。
【００３４】
このように出力用のＩ／Ｏモジュール８にアクセスが許可されるＣＰＵモジュール６が設定されると、以降の処理では他のＣＰＵモジュール６がＩ／Ｏモジュール８にアクセスできない。一方、入力用のＩ／Ｏモジュール８には、複数のＣＰＵモジュール６がアクセスし、入力値を取得できる。そこで、Ｉ／Ｏモジュール８の初期起動時に、ＣＰＵモジュール６からＩ／Ｏモジュール８に対して設定される情報が、複数のＣＰＵモジュール６で異なった場合の処理を規定する。
【００３５】
例えば、入力用のＩ／Ｏモジュール８が−５Ｖ（０％）〜＋５Ｖ（１００％）のレンジ設定で動作し、このＩ／Ｏモジュール８にレンジ設定を行ったＣＰＵモジュール６が−５Ｖ（０％）〜＋５Ｖ（１００％）の設定で演算を実施する場合を想定する。そして、他のＣＰＵモジュール６が−１０Ｖ（０％）〜＋１０Ｖ（１００％）の設定で演算を実施することを想定する。このとき、被制御対象から入力用のＩ／Ｏモジュール８に入力した値が＋５Ｖであれば、このＩ／Ｏモジュール８は、＋５Ｖを示す１００％の値をＣＰＵモジュール６に送信する。しかし、他のＣＰＵモジュール６がＩ／Ｏモジュール８から１００％の値を受信すると、他のＣＰＵモジュール６は、Ｉ／Ｏモジュール８に＋１０Ｖが入力されたとして演算を実施してしまう。このようにＩ／Ｏモジュール８からＣＰＵモジュール６に送信される被制御対象のデータを、他のＣＰＵモジュール６が誤って演算することがある。
【００３６】
図３に示すように、ステーションナンバーが＃００３である第２ＡＩの入力値を第２ＣＰＵ及び第３ＣＰＵが使用する設定となっている。しかし、第２ＣＰＵと第３ＣＰＵで第２ＡＩのレンジ設定値が異なっていた場合は、次にアクセスしたＣＰＵモジュール６は正しい入力値を取り込むことができない。このため、１つのＩ／Ｏモジュール８に対して、複数のＣＰＵモジュール６がアクセス可能であれば、Ｉ／Ｏモジュール８は、アクセスしてきたＣＰＵモジュール６に対して、入力値と、Ｉ／Ｏモジュール８に設定されているレンジ設定値とを送信する。
【００３７】
具体的には、第２ＡＩに対するレンジ設定は、第２ＣＰＵと第３ＣＰＵのうち最初にアクセスしたＣＰＵモジュール６が実施する。そして、入力用のＩ／Ｏモジュール８は、第２ＣＰＵと第３ＣＰＵからのデータ要求（Ｓ１、Ｓ２）に対して、入力用の被制御対象から取得した入力値と、入力用のＩ／Ｏモジュール８に設定されているレンジ設定値の両方をユニキャストにより送信する（Ｓ６）。
【００３８】
ＣＰＵモジュール６は、Ｉ／Ｏモジュール８から受信したレンジ設定値と、ＣＰＵモジュール６自身が有するレンジ設定値とを比較する（Ｓ７）。ＣＰＵモジュール６は、レンジ設定値が一致していた場合に（Ｓ７のＹＥＳ）、Ｉ／Ｏモジュール８から受信した被制御対象の入力値を演算に用いる（Ｓ８）。一方、レンジ設定値が不一致であれば（Ｓ７のＮＯ）、ＣＰＵモジュール６は、レンジ設定値を送信してきた入力用のＩ／Ｏモジュール８を異常と判定し、この入力用のＩ／Ｏモジュール８から受信した入力値を演算に用いないようにする（Ｓ９）。なお、第３ＣＰＵについても、記載を省略するがステップＳ７〜Ｓ９と同様の処理を行っている。
【００３９】
次に、時刻マスタの切り替えについて説明する。
図５は、時刻マスタとなるＣＰＵモジュール６に異常が発生した場合に、時刻マスタを切り替える論理を示す説明図である。
図６は、時刻マスタの切り替え処理の例を示すシーケンス図である。
【００４０】
従来、複数のＩ／Ｏモジュール８に接続されるＣＰＵモジュール６は１つだけであった。このＣＰＵモジュール６が時刻マスタとなり、接続されているＩ／Ｏモジュール８に対してブロードキャストにより時刻データを送信すればＣＰＵモジュール６とＩ／Ｏモジュール８の時刻同期が取れていた。しかし、複数のＣＰＵモジュール６と、複数のＩ／Ｏモジュール８とをネットワーク化する場合には、時刻マスタとなるＣＰＵモジュール６を決定する処理を規定する必要がある。
【００４１】
そこで、各ＣＰＵモジュール６は、アクセス管理テーブル２１〜２３に従い、他のＣＰＵモジュール６から、マスタ状態及びハートビート値を取得する。マスタ状態は“１”ならばＣＰＵモジュール６が時刻マスタであり、“０”ならばＣＰＵモジュール６が時刻マスタでないことを表す。また、ハートビート値とは、ＣＰＵモジュール６内で１演算周期毎に“１”ずつ加算される管理値である。ＣＰＵモジュール６は、他のＣＰＵモジュール６から要求があった場合にハートビート値を応答する。各ＣＰＵモジュール６は、アクセス管理テーブルに従ってアクセスした他のＣＰＵモジュール６から取得するマスタ状態及びハートビート値の更新状況に基づいて、時刻マスタとなる他のＣＰＵモジュール６を認識し、他のＣＰＵモジュール６との接続状態を認識する。すなわち、ハートビート値が一定周期更新されなければ、ハートビート値が更新されないＣＰＵモジュール６に異常が発生した状態、又は、このＣＰＵモジュール６とのＩ／Ｏネットワーク７が切断された状態であることを示す。
【００４２】
図５Ａは、第１ＣＰＵが時刻マスタであり、各ＣＰＵモジュール６が正常動作している状態を表す。
第１ＣＰＵは、第２ＣＰＵ及び第３ＣＰＵに時刻マスタの情報を送信し、第２ＣＰＵ及び第３ＣＰＵとハートビート値を送受信する（Ｓ１１）。第２ＣＰＵ及び第３ＣＰＵは、第１ＣＰＵから時刻マスタを受信し、第１ＣＰＵとハートビート値を送受信する（Ｓ１２）。
【００４３】
第２ＣＰＵ及び第３ＣＰＵは、第１ＣＰＵのマスタ状態が“１”であることから、第１ＣＰＵが時刻マスタであることを認識している。そして、第１ＣＰＵは、第２ＣＰＵ及び第３ＣＰＵのハートビート値が更新されていることを認識する。同様に、第２ＣＰＵは、第１ＣＰＵ及び第３ＣＰＵのハートビート値が更新され、第３ＣＰＵは、第１ＣＰＵ及び第２ＣＰＵのハートビート値が更新されていることを認識する。
【００４４】
図５Ｂは、第１ＣＰＵが停止してから３演算周期後の状態を表す。
第１ＣＰＵに異常が発生すると（Ｓ１３）、第１ＣＰＵが停止する。第１ＣＰＵが停止すると、第１ＣＰＵが管理する第２ＣＰＵと第３ＣＰＵのハートビート値の更新も停止する。そして、第２ＣＰＵ及び第３ＣＰＵは共に、第１ＣＰＵからマスタ状態を取得できず、かつ、第１ＣＰＵのハートビート値が更新されていない状態となる。このため、第２ＣＰＵ及び第３ＣＰＵは、第１ＣＰＵに異常が発生したことを認識する（Ｓ１４）。
【００４５】
ここで、複数のＣＰＵモジュール６が同時に時刻マスタとなるのを防ぐために、各ＣＰＵモジュール６は、時刻マスタのＣＰＵモジュール６が存在しないと判断してから、時刻マスタに昇格するまでの待ち時間を予め設定しておく。例えば、待ち時間として、第１ＣＰＵは０秒、第２ＣＰＵは１秒、第３ＣＰＵは２秒待つと設定しておけば、ＣＰＵモジュール６毎に設定された待ち時間を経過した後に時刻マスタへ昇格する（Ｓ１５）。図５Ｂでは、ステーションナンバーの小さい順に時刻マスタに昇格するＣＰＵモジュール６が決まるため、第２ＣＰＵと第３ＣＰＵのうちステーションナンバーが小さい第２ＣＰＵが時刻マスタに昇格する。
【００４６】
図５Ｃは、第２ＣＰＵが時刻マスタに昇格した時の状態を表す。第３ＣＰＵは、第２ＣＰＵが時刻マスタへ昇格したことを認識している為、自身が時刻マスタへ昇格することはない。また、第１ＣＰＵが再起動すると、第２ＣＰＵからマスタ状態を取得する。このため、第１ＣＰＵは、第２ＣＰＵが時刻マスタであることを認識することができる。
【００４７】
以上説明した一実施の形態例に係るプラント監視制御システム１によれば、各ＣＰＵモジュール６は、アクセス管理テーブルを参照することで、自身がアクセス可能な他のＣＰＵモジュール６及びＩ／Ｏモジュール８を把握することができる。これにより、例えば、一つのＣＰＵモジュール６が停止しても他のＣＰＵモジュール６がＩ／Ｏモジュール８にアクセスすることができるため、プラント監視制御システム１の冗長性を高めることができる。
【００４８】
また、出力用のＩ／Ｏモジュール８の場合、最初に出力用のＩ／Ｏモジュール８を初期化したＣＰＵモジュール６のステーションナンバーを記憶する。そして、出力用のＩ／Ｏモジュール８は、記憶したステーションナンバーのＣＰＵモジュール６だけにアクセスを許可し、他のステーションナンバーのＣＰＵモジュール６からのアクセスを不許可とする。このため、出力用のＩ／Ｏモジュール８は、異なるＣＰＵモジュール６から異なるデータを受信することがない。また、入力用のＩ／Ｏモジュール８は、ＣＰＵモジュール６にユニキャストでデータを送信する。このため、ＣＰＵモジュール６は、アクセス管理テーブルに格納されていない入力用のＩ／Ｏモジュール８から異なるデータを受信することがない。
【００４９】
また、入力用のＩ／Ｏモジュール８は被制御対象からの入力値をＣＰＵモジュール６に送信する際に、自身のレンジ設定値についてもＣＰＵモジュール６に送信する。そして、ＣＰＵモジュール６は、演算処理の中で、Ｉ／Ｏモジュール８から受信したレンジ設定値と自身のもつレンジ設定値とを比較し、不一致ならば当該Ｉ／Ｏモジュール８を異常と判定し、受信した入力値を演算に用いない。これによりＣＰＵモジュール６が管理しているレンジ設定値とは異なる入力値を受信しても、誤って演算処理を行わなくなる。
【００５０】
また、ＣＰＵモジュール６は、他のＣＰＵモジュール６との間で、時刻マスタ状態とハートビート信号（１演算周期毎に１ずつ加算される値）を送受信することで、お互いの時刻マスタ状態及び生存を監視可能である。そして、時刻マスタが存在しないことを検出した他のＣＰＵモジュール６は、ステーションナンバーが一番小さいＣＰＵモジュール６を時刻マスタとする。これによりＣＰＵモジュール６は、演算処理を継続することができる。
【００５１】
また、プラント監視制御システム１では、従来のようにＣＰＵモジュール６毎にＩ／Ｏモジュール８を設けなくてもよい。このため、Ｉ／Ｏモジュール８の設置数を減らすことができ、運用コストを減らすこともできる。
【００５２】
［第１の実施形態の変形例］
なお、ＣＰＵモジュール６（第１ＣＰＵ〜第３ＣＰＵ）を二重化構成としてもよい。
図７は、プラント監視制御システム１Ａの構成例を示す。
プラント監視制御システム１Ａが備えるＣＰＵモジュール６Ａには、第１ＣＰＵ〜第３ＣＰＵが二重に設けられている。このように第１ＣＰＵ〜第３ＣＰＵが二重化されていれば、一方を運用系、他方を待機系としてＣＰＵモジュール６Ａを稼働させることができる。これにより、プラント監視制御システム１Ａの耐障害性を高めることができる。
【００５３】
また、上述した実施の形態例において、制御モジュールの一例としてＣＰＵモジュール６、６Ａを挙げ、入出力モジュールの一例としてＩ／Ｏモジュール８を挙げたが、他のモジュールを用いてもよい。
【００５４】
また、本発明は上述した実施の形態例に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
例えば、上述した実施の形態例は本発明を分かりやすく説明するために装置及びシステムの構成を詳細且つ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態例の構成の一部を他の実施の形態例の構成に置き換えることは可能であり、さらにはある実施の形態例の構成に他の実施の形態例の構成を加えることも可能である。また、各実施の形態例の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００５５】
１…プラント監視制御システム、２…中央制御室、３…プラント監視装置、４…保守ツール、５…ＣＰＵネットワーク、６…ＣＰＵモジュール、７…Ｉ／Ｏネットワーク、８…Ｉ／Ｏモジュール、２０〜２２…アクセス管理テーブル
【図１】
0006401114.tif 000002
【図２】
0006401114.tif 000003
【図３】
0006401114.tif 000004
【図４】
0006401114.tif 000005
【図５】
0006401114.tif 000006
【図６】
0006401114.tif 000007
【図７】
0006401114.tif 000008