(57)【要約】【課題】複数のＰＬＣと複数のＩ／Ｏ装置間の接続が固定されたシステムであっても、複数のコントローラ及びＩ／Ｏ装置間の協調制御を可能にする。【解決手段】  同一バス上で接続した各々が異なる処理内容を実行する複数のコントローラと、該コントローラの制御対象と当該コントローラとを接続し、制御対象とコントローラ間で必要な情報を伝送する複数のＩ／Ｏ装置と、任意のコントローラ及びＩ／Ｏ装置間で情報の伝送を実現するネットワーク回線網と、記バス上に接続した共有サーバと、を備えたマルチコントローラシステムを構成する。  上記共有サーバは、コントローラの異常を検知した場合に、異常の生じたコントローラのプログラムを他の正常なコントローラへ追記し、当該異常の生じたコントローラがネットワーク回線網を介して接続していたＩ／Ｏ装置と、他の正常なコントローラとを接続するための情報を当該他の正常なコントローラへ通知する。【選択図】図７
2013168090.tif 000002
【特許請求の範囲】
【請求項１】
同一バス上で接続した各々が異なる処理内容を実行する複数のコントローラと、
前記コントローラの制御対象と前記コントローラとを接続し、前記制御対象と前記コントローラ間で必要な情報を伝送する複数のＩ／Ｏ装置と、
任意の前記コントローラ及び前記Ｉ／Ｏ装置間で情報の伝送を実現するネットワーク回線網と、
前記コントローラの異常を検知した場合に、異常の生じたコントローラのプログラムを他の正常なコントローラへ追記する処理と、前記異常の生じたコントローラが前記ネットワーク回線網を介して接続していた前記Ｉ／Ｏ装置と、前記他の正常なコントローラとを接続するための情報を前記他の正常なコントローラへ通知する処理を行う、前記バス上に接続した共有サーバと、を備える
マルチコントローラシステム。
【請求項２】
前記共有サーバは、前記バスで接続した前記コントローラとの通信処理用のプログラムを格納した共有サーバ通信情報格納部と、
前記共有サーバ通信情報格納部における前記通信処理用のプログラムを参照し、前記コントローラへ情報を伝送する共有サーバ通信処理部と、
前記コントローラとの伝送情報を格納する共有サーバ内部メモリと、
前記複数のコントローラのプログラムを全て格納するコントローラ全プログラム格納部と、
前記コントローラとの間の通信の異常を監視する異常検出処理部と、を備え、
前記共有サーバ内部メモリは、少なくとも前記コントローラの生存信号と、前記コントローラの追記可能なプログラムステップ数と、接続済みの前記Ｉ／Ｏ装置のアドレス情報を含み、
前記異常検出処理部は、前記異常の生じたコントローラの前記生存信号から異常判定を行い、前記追記可能なプログラムステップ数を参照して前記他の正常なコントローラの中から１つを決定し、
前記共有サーバ通信処理部は、前記コントローラ全プログラム格納部から前記異常の生じたコントローラのプログラムと、前記接続済みの前記Ｉ／Ｏ装置のアドレス情報を、決定した前記他の正常なコントローラへ送信する
請求項１に記載のマルチコントローラシステム。
【請求項３】
前記共有サーバ内部メモリは、前記コントローラの異常又は前記ネットワーク回線網の異常についてのエラー情報、を更に含み、
前記異常検出処理部は、前記コントローラの生存信号、並びに前記コントローラ又は前記ネットワーク回線網についてのエラー情報から異常判定を行い、前記追記可能なプログラムステップ数を参照して前記他の正常なコントローラの中から１つを決定する
請求項２に記載のマルチコントローラシステム。
【請求項４】
前記共有サーバ内部メモリは、前記コントローラの演算処理装置の負荷率、を更に含み、
前記異常検出処理部は、前記コントローラの生存信号、並びに前記コントローラ又は前記ネットワーク回線網についてのエラー情報に加えて、前記コントローラの演算処理装置の負荷率を反映して異常判定を行い、前記追記可能なプログラムステップ数を参照して前記他の正常なコントローラの中から１つを決定する
請求項３に記載のマルチコントローラシステム。
【請求項５】
前記コントローラは、前記バスで接続した前記共有サーバとの通信処理用のプログラムと、前記ネットワーク回線網を介して接続する前記Ｉ／Ｏ装置との通信処理用のプログラムを格納したコントローラ通信情報格納部と、
前記コントローラ通信情報格納部における前記通信処理用のプログラムを参照し、前記共有サーバもしくは前記Ｉ／Ｏ装置へ情報を伝送するコントローラ通信処理部と、
前記Ｉ／Ｏ装置との伝送情報を格納するコントローラ内部メモリと、
前記制御対象を制御するためのプログラムを格納したコントローラプログラム格納部と、
前記コントローラプログラム格納部のプログラムを参照して、前記コントローラ内部メモリ内の情報をサイクリックに読み書きする演算処理部と、を備え、
前記共有サーバから、前記異常の生じたコントローラのプログラム及び前記Ｉ／Ｏ装置のアドレス情報を受信した場合、前記異常の生じたコントローラのプログラムを前記コントローラプログラム格納部に追記し、前記Ｉ／Ｏ装置のアドレス情報を前記コントローラ通信情報格納部に登録し、前記異常の生じたコントローラのプログラムを演算実行している間のみ、前記コントローラ通信処理部は前記Ｉ／Ｏ装置のとの接続を切り替える
請求項２に記載のマルチコントローラシステム。
【請求項６】
前記共有サーバ内部メモリは、手動切換要求情報を更に含み、
前記コントローラ通信処理部は、前記ネットワーク回線網の異常もしくは前記コントローラの異常が生じていない場合でも、前記共有サーバ内部メモリに前記手動切換要求情報が登録されている場合には、前記手動切換要求情報を前記共有サーバに送信し、前記他のコントローラで切り替え前のコントローラと同一の処理を行わせる
請求項５に記載のマルチコントローラシステム。
【請求項７】
同一バス上で接続した各々が異なる処理内容を実行する複数のコントローラと、前記コントローラの制御対象と前記コントローラとを接続し、前記制御対象と前記コントローラ間で必要な情報を伝送する複数のＩ／Ｏ装置と、任意の前記コントローラ及び前記Ｉ／Ｏ装置間で情報の伝送を実現するネットワーク回線網と、前記バス上に接続した共有サーバと、を備えたマルチコントローラシステムの制御方法であって、
前記共有サーバは、前記コントローラの異常を検知した場合に、異常の生じたコントローラのプログラムを他の正常なコントローラへ追記する処理と、
前記異常の生じたコントローラが前記ネットワーク回線網を介して接続していた前記Ｉ／Ｏ装置と、前記他の正常なコントローラとを接続するための情報を前記他の正常なコントローラへ通知する処理を有する
制御方法。
【請求項８】
同一バス上で接続した各々が異なる処理内容を実行する複数のコントローラと、前記コントローラの制御対象と前記コントローラとを接続し、前記制御対象と前記コントローラ間で必要な情報を伝送する複数のＩ／Ｏ装置と、任意の前記コントローラ及び前記Ｉ／Ｏ装置間で情報の伝送を実現するネットワーク回線網と、前記バス上に接続した共有サーバと、を備えたマルチコントローラシステムの前記共有サーバが備えるコンピュータに、
前記コントローラの異常を検知した場合に、異常の生じたコントローラのプログラムを他の正常なコントローラへ追記する手順と、
前記異常の生じたコントローラが前記ネットワーク回線網を介して接続していた前記Ｉ／Ｏ装置と、前記他の正常なコントローラとを接続するための情報を前記他の正常なコントローラへ通知する手順を、
実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば上下水道プラント等の監視制御を行なうプラント監視制御システムに用いるマルチコントローラシステム、制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
近年、プラント監視制御システムとして用いられる計算機は、ＩＣの高密度化やメモリの大容量化によって単位時間当たりの計算量は増加している。故に、監視制御対象の多様なニーズに対応する結果、ＰＬＣ（プログラマブル・ロジック・コントローラ）をはじめとした制御装置（コントローラ）の制御演算に用いる、入出力情報の処理点数も増加している。
【０００３】
上記ＰＬＣは、各々が異なるプログラムを格納し、別々の場所に設置することが一般的であるが、連動制御や上位監視を行う場合は、ＰＬＣ間を光ケーブル等の伝送用信号ケーブルで接続し、閉ループのネットワークを構築することで、情報共有が可能となる。
【０００４】
中でも、同一バス系に設置されたＰＬＣのＣＰＵ(Central Processing Unit)負荷を、各ＰＬＣが共有メモリにサイクリックに書き込むことで、各々の負荷情報を共有し、ＣＰＵ負荷が閾値以上となったＰＬＣは、閾値以下のＣＰＵ負荷であった他ＰＬＣに自らの制御演算プログラム（一部）を渡して演算を行わせる協調方法をとることで、負荷効率を向上させた制御方式も提案されている（例えば、特許文献１を参照）。
【０００５】
また、一般的には１対１でＰＬＣと接続するリモートＩ／Ｏ装置も、ネットワーク回線網を介して複数のＰＬＣと接続することによってＮ対Ｎ通信を可能としたリモートＩ／Ｏシステムも提案されている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−７９３５５号公報
【特許文献２】特許第４６３４０２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載された協調方法では、他ＰＬＣへプログラムを移行した場合の演算方法他、ＰＬＣと対象Ｉ／Ｏ装置との接続方法を明記していない。同一バスにて接続された他ＰＬＣにプログラムを移行させたとしても、Ｉ／Ｏ装置自体は元のＰＬＣとしか接続できていない構成であるため、Ｉ／Ｏ装置は他ＰＬＣとデータの送受信ができない。よって、実際にＰＬＣから他ＰＬＣへプログラムをコピーして演算を行ったとしてもその処理結果の信頼性は低いと考えられる。
【０００８】
また、各ＰＬＣのＣＰＵ負荷率からプログラムコピー処理の実行判定を行っている。そのために、故障以外の原因でシステムが停止時、例えば回線障害やＰＬＣに対する保守作業の発生時は、プログラムコピー処理が行われず、結果として該当するプログラムの処理がどのＰＬＣにおいても実行されなかったということ象が発生してしまう。
【０００９】
特許文献２に記載されたリモートＩ／Ｏシステムの構成では、予めＰＬＣとＩ／Ｏ装置間の接続を定義している。そのため回線障害やＰＬＣに対する保守作業といった運用開始後に発生する事象に対して、ＰＬＣ間でプログラムの共有ができないことに加え、ＰＬＣとＩ／Ｏ装置間の接続切換が行えない。それゆえ、その事象の対象となるＰＬＣのプログラム演算処理やＩ／Ｏ装置との入出力データの伝送が不可能となる。
【００１０】
本発明は、上記の状況を考慮してなされたものであり、複数のＰＬＣと複数のＩ／Ｏ装置間の接続が固定されたシステムであっても、複数のコントローラ及びＩ／Ｏ装置間の協調制御を可能にすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面のマルチコントローラシステムは、同一バス上で接続した各々が異なる処理内容を実行する複数のコントローラと、このコントローラの制御対象と該コントローラとを接続し、制御対象とコントローラ間で必要な情報を伝送する複数のＩ／Ｏ装置と、任意のコントローラ及びＩ／Ｏ装置間で情報の伝送を実現するネットワーク回線網と、同一バス上に接続した共有サーバと、を有する。
上記共有サーバは、上記コントローラの異常を検知した場合は、異常が生じたコントローラのプログラムを他の正常なコントローラへ追記する処理と、上記異常が生じたコントローラがネットワーク回線網を介して接続していたＩ／Ｏ装置と、上記他の正常なコントローラとを接続するための情報を上記他の正常なコントローラへ通知する処理を制御する。
【００１２】
本発明の一側面によれば、コントローラ間でのプログラムの共有化を実現し、かつ共有するプログラムで使用するＩ／Ｏ装置の接続先を、アドレス情報を元に現在のコントローラからプログラム送信先のコントローラへ切り換えることができる。
【発明の効果】
【００１３】
本発明によれば、複数のＰＬＣと複数のＩ／Ｏ装置間の接続が固定されたシステムであっても、複数のコントローラ及びＩ／Ｏ装置間の協調制御を可能にし、コントローラによる演算処理の冗長化を可能とする。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係るプラント監視制御システムにおける、マルチコントローラシステムの全体構成例を示すブロック図である。
【図２】共有サーバ、ＰＬＣ及びＩ／Ｏ装置の機能ブロック図である。
【図３】共有サーバ、ＰＬＣ及びＩ／Ｏ装置における各格納部のテーブル構成を示した説明図である。
【図４】ＰＬＣもしくはＩ／Ｏ装置において異常が発生した場合の、共有サーバに異常を報告する処理を示したフローチャートである。
【図５】ＰＬＣにおいて、共有サーバに対して異常検出ではなく任意に他の正常なＰＬＣに切換を要求する処理を示したフローチャートである。
【図６】共有サーバにおける、ＰＬＣもしくはＩ／Ｏ装置の異常検出を行う処理を示したフローチャートである。
【図７】共有サーバにおける、異常状態のＰＬＣを発見した場合に、正常なＰＬＣを探索し、異常となったＰＬＣの代替処理を行わせる処理を示したフローチャートである。
【図８】図７で示した代替処理に至るまでの、共有サーバとＰＬＣとＩ／Ｏ装置間のやり取りを示したシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態の例について、添付図面を参照しながら説明する。なお、各図において共通の構成要素には、同一の符号を付して重複する説明を省略する。
【００１６】
＜１．第１の実施形態＞
［マルチコントローラシステムの全体構成例］
図１は、本発明の一実施形態であるプラント監視制御システムにおける、マルチコントローラシステムの全体構成例を示したブロック図である。
本実施形態に係るマルチコントローラシステムは主に、共有サーバ１と、複数のＰＬＣ３（コントローラの一例）と、複数のＩ／Ｏ装置５と、ネットワーク回線網４を備えて構成される。
【００１７】
共有サーバ１は、バス２のネットワークを介して複数のＰＬＣ３と接続されている。また、複数のＰＬＣ３と複数のＩ／Ｏ装置５は、ネットワーク回線網４とルータ７を介して接続されている。複数のＰＬＣ３及び複数のＩ／Ｏ装置５は、例えばＴＣＰ／ＩＰもしくはＵＤＰ／ＩＰネットワーク機器として構築が可能である。ネットワーク回線網４を利用することで任意のＰＬＣ３と任意のＩ／Ｏ装置５で接続が可能であり、Ｎ対Ｎ通信が可能である。
【００１８】
なお、本実施形態では、ＩＰネットワーク回線網、いわゆるインターネット網を例示したが、回線網や通信プロトコルはこの例に限らない。
【００１９】
図１では、ＰＬＣ３について、一番目のＰＬＣ３である第一ＰＬＣ３ａと、二番目のＰＬＣ３である第二ＰＬＣ３ｂと、ｎ番目のＰＬＣ３である第ｎＰＬＣ３ｎを図示している。同様にＩ／Ｏ装置５について、一番目のＩ／Ｏ装置５である第一Ｉ／Ｏ装置５ａと、二番目のＩ／Ｏ装置である第二Ｉ／Ｏ装置５ｂ、ｍ番目のＩ／Ｏ装置５である第ｍＩ／Ｏ装置５ｍを図示している。
【００２０】
複数のＩ／Ｏ装置５は、有線にて制御対象６（ポンプやモータ、計器などを含む制御対象群）と接続されている。図１では一番目の制御対象６を第一制御対象６ａ、二番目の制御対象６を第二制御対象６ｂ、ｍ番目の制御対象６である第ｍ制御対象６ｍを図示している。
【００２１】
また、本実施形態では、バス２に監視端末９が接続され、監視端末９にモニタ１０が接続されている。監視端末９は、バス２からマルチコントローラシステムの各ブロックに関する情報を受信し、液晶表示パネル等を備えるモニタ１０に表示する。
【００２２】
監視端末９には、コンピュータが用いられ、例えばＣＰＵ等の演算処理装置と、該ＣＰＵが実行する制御プログラムを記憶したＲＯＭ、制御プログラムの実行時にワーキングエリアとして利用されるＲＡＭなどを有する。
【００２３】
図２は、共有サーバ１、ＰＬＣ３及びＩ／Ｏ装置５の内部構成例を示す機能ブロック図である。ＰＬＣ３及びI／Ｏ装置５の内部構成は同じであるので、図２では一つのＰＬＣ３及びI／Ｏ装置５を示している。
【００２４】
（共有サーバ１）
共有サーバ１は、コンピュータが用いられ、例えばＣＰＵ等の演算処理装置と、該ＣＰＵが実行する制御プログラムを記憶したＲＯＭ（図示略）、制御プログラムの実行時にワーキングエリアとして利用されるＲＡＭ（図示略）、大容量記録装置(図示)略などを有する。ＣＰＵは、ＲＯＭに記憶されている各種の制御プログラムやアプリケーションプログラムの実行及びそれに付随する各種データ処理を行う。
【００２５】
共有サーバ１を機能面から説明すると、図２に示すように、共有サーバ内部メモリ１００と、共有サーバ通信情報格納部１０１と、ＰＬＣ全プログラム格納部１０２と、共有サーバ通信処理部１０３と、異常検出処理部１０４とを備える。
【００２６】
共有サーバ１とバス２との接続において、共有サーバ１側のインターフェースは共有サーバ通信処理部１０３が担っている。この共有サーバ通信処理部１０３は、共有サーバ１内部において、共有サーバ内部メモリ１００と、共有サーバ通信情報格納部１０１と、ＰＬＣ全プログラム格納部１０２と接続して処理を行う。
【００２７】
共有サーバ１内部のもう一つの処理部として異常検出処理部１０４があり、異常検出処理部１０４は共有サーバ内部メモリ１００と接続して処理を行う。
【００２８】
（ＰＬＣ３）
ＰＬＣ３は、ＰＬＣ通信情報格納部１０５と、ＰＬＣ内部メモリ１０６と、ＰＬＣプログラム格納部１０７と、ＰＬＣ通信処理部１０８と、演算処理部１０９とを備えて構成される。
【００２９】
ＰＬＣ３のバス２との接続インターフェースは、ＰＬＣ通信処理部１０８が担う。ＰＬＣ通信処理部１０８は、ＰＬＣ３内部において、ＰＬＣ通信情報格納部１０５と、ＰＬＣ内部メモリ１０６と、ＰＬＣプログラム格納部１０７と接続して処理を行う。また、ＰＬＣ通信処理部１０８は、ルータ７と接続し、ネットワーク回線網４を介してＩ／Ｏ装置５と接続している。
【００３０】
ＰＬＣ３内部のもう一つの処理部である演算処理部１０９は、ＰＬＣ内部メモリ１０６及びＰＬＣプログラム格納部１０７と接続して処理を行う。
【００３１】
（Ｉ／Ｏ装置５）
Ｉ／Ｏ装置５は、Ｉ／Ｏ装置通信処理部１１０と、Ｉ／Ｏ装置通信情報格納部１１１と、Ｉ／Ｏ装置内部メモリ１１２とを備えて構成される。
【００３２】
Ｉ／Ｏ装置５とルータ７の接続インターフェースは、Ｉ／Ｏ装置５内部のＩ／Ｏ装置通信処理部１１０が担っている。Ｉ／Ｏ装置通信処理部１１０は、Ｉ／Ｏ装置通信情報格納部１１１及びＩ／Ｏ装置内部メモリ１１２と接続して処理を行う。
【００３３】
制御対象６は、直接Ｉ／Ｏ装置内部メモリ１１２と接続して入出力信号の送受信を行う。
【００３４】
［各格納部のテーブル構成］
図３は、共有サーバ１、ＰＬＣ３及びＩ／Ｏ装置５における各格納部のテーブル構成例を示した図である。
【００３５】
（共有サーバ１の格納部）
共有サーバ内部メモリ１００では、ＰＬＣ生存信号２００と、追記可能なプログラムステップ数２０１と、ＣＰＵ負荷率２０２と、エラー情報２０３と、接続Ｉ／Ｏ装置ＩＰアドレス２０４と、手動切換要求情報２０５を登録している。
【００３６】
「ＰＬＣ生存信号２００」は、ＰＬＣ３の夫々が管理する情報として、ＰＬＣ３の状態を表し、ＰＬＣ３が正常に稼動している間中、発信され続ける。
「追記可能なプログラムステップ数２０１」は、ＰＬＣ３のＰＬＣプログラム格納部１０７の空き容量を示す追記可能なプログラムステップの数を表す。
「ＣＰＵ負荷率２０２」は、ＰＬＣ３のＣＰＵ（演算処理部）のリアルタイムな実行演算による負荷率を表す。
「エラー情報２０３」は、ＰＬＣ３がＩ／Ｏ装置５から受信するエラー信号や、ネットワーク回線網８における回線異常信号、ＰＬＣ３自身で発生するエラー信号を包含する。
「接続Ｉ／Ｏ装置ＩＰアドレス２０４」は、ＰＬＣ３が現在接続しているＩ／Ｏ装置５のＩＰアドレスを包含する。
「手動切換要求情報２０５」は、非異常時に異常時と同様の動作、すなわちＰＬＣの切り替えを発生させることができるようなＰＬＣ３からの要求信号を包含する。
【００３７】
共有サーバ通信情報格納部１０１では、通信プログラム２１０と、通信プロトコル２１１と、プロトコルスタック２１２と、通信構築情報２１３を登録している。
【００３８】
「通信プログラム２１０」は、共有サーバ通信処理部１０３の処理内容が記述されている。
「通信プロトコル２１１」は、バス２を介してＰＬＣ３と情報を伝送するための伝送形式が定められている。
「プロトコルスタック２１２」は、通信プロトコルに従って伝送情報が構築されている。
「通信構築情報２１３」は、ＰＬＣ３との接続状況が登録されている。
【００３９】
ＰＬＣ全プログラム格納部１０２では、ＰＬＣ１プログラム２２０〜ＰＬＣｎプログラム２２１と、ＰＬＣ１プログラム実行場所２２２〜ＰＬＣｎプログラム実行場所２２３を格納している。
【００４０】
「ＰＬＣ１プログラム２２０〜ＰＬＣｎプログラム２２１」は、バス２を介して接続された第一ＰＬＣ３ａのＰＬＣ１プログラム２２０から第ｎＰＬＣ３ｎのＰＬＣｎプログラム２２１までの全てのプログラムである。
「ＰＬＣ１プログラム実行場所２２２〜ＰＬＣｎプログラム実行場所２２３」は、ＰＬＣ３のプログラムが実際にどのＰＬＣ３で実行されているかを記述した、ＰＬＣ１プログラム２２０の実行場所を登録しているＰＬＣ１プログラム実行場所２２２からＰＬＣｎプログラム２２１の実行場所を登録しているＰＬＣｎプログラム実行場所２２３までの情報を包含している。
【００４１】
（ＰＬＣ３の格納部）
ＰＬＣ通信情報格納部１０５では、通信プログラム２３０と、通信プロトコル２３１と、プロトコルスタック２３２と、通信構築情報２３３を格納している。
【００４２】
「通信プログラム２３０」は、ＰＬＣ通信処理部１０８の処理内容が記述されている。
「通信プロトコル２３１」は、バス２を介して共有サーバ１と情報を伝送するための伝送形式と、ルータ７及びネットワーク回線網８を介してＩ／Ｏ装置５との伝送形式が定められている。
「プロトコルスタック２３２」は、通信プロトコルに従って伝送情報が構築されている。
「通信構築情報２３３」は、共有サーバ１とＩ／Ｏ装置５との接続状況が登録されている。
【００４３】
ＰＬＣ内部メモリ１０６では、プログラム使用レジスタ２４０と、システム情報レジスタ２４１を格納している。
「プログラム使用レジスタ２４０」は、ＰＬＣ３の演算処理部１０９による演算結果を格納する。
「システム情報レジスタ２４１」は、ＰＬＣ３とその接続下にあるＩ／Ｏ装置５のエラー信号やネットワーク回線網８における回線異常信号、ＰＬＣ３自身で発生するエラー信号（異常情報）が登録されている。
【００４４】
ＰＬＣプログラム格納部１０７では、ＰＬＣ３が自身の演算処理部１０９で実行する処理を記述した「プログラム２５０」を格納している。
【００４５】
（Ｉ／Ｏ装置５の格納部）
Ｉ／Ｏ装置通信情報格納部１１１では、通信プログラム２６０と、通信プロトコル２６１と、プロトコルスタック２６２と、通信構築情報２６３を格納している。
【００４６】
「通信プログラム２６０」は、Ｉ／Ｏ装置通信処理部１１０の処理内容が記述されている。
「通信プロトコル２６１」は、ルータ７及びネットワーク回線網８を介してＰＬＣ３と情報を伝送するための伝送形式が定められている。
「プロトコルスタック２６２」は、通信プロトコルに従って伝送情報が構築されている。
「通信構築情報２６３」は、ＰＬＣ３との接続情報が登録されている。
【００４７】
Ｉ／Ｏ装置内部メモリ１１２では、入出力情報登録レジスタ２７０と、システムレジスタ２７１を格納している。
【００４８】
「入出力情報登録レジスタ２７０」は、マルチコントローラシステムとの情報の送受信結果が登録されている。
「システムレジスタ２７１」は、Ｉ／Ｏ装置５や制御対象６のエラー信号（異常情報）が登録されている。
【００４９】
（ＰＬＣ３の動作例）
図４は、ＰＬＣ３における、演算処理部１０９による異常検出処理を示すフローチャートである。
まず、ステップＳ３００では、ＰＬＣ３において通常の制御処理が不可能となる事象が生じた場合、演算処理部１０９は、ＰＬＣ内部メモリ１０６のシステム情報レジスタ２４１に異常情報を登録する。演算処理部１０９は、システム情報レジスタ２４１を参照して異常情報（エラー信号）を検出した場合は、処理をステップＳ３０２に移行する。システム情報レジスタ２４１にて異常情報が検出されなかった場合は、処理をステップＳ３０１に移行する。
【００５０】
ステップＳ３０１では、ＰＬＣ３とＩ／Ｏ装置５との間で、通信異常（回線異常）が生じた場合に、演算処理部１０９は、ＰＬＣ通信情報格納部１０５の通信構築情報２３３に異常情報を登録する。また、演算処理部１０９は、通信構築情報２３３にて異常情報を検出した場合は、処理をステップＳ３０２に移行する。通信構築情報２３３にて異常情報が検出されなかった場合は、処理を終了する。
【００５１】
ステップＳ３０２では、システム情報レジスタ２４１の異常情報もしくは通信構築情報２３３の異常情報を、共有サーバ内部メモリ１００のエラー情報２０３に登録することで異常検出処理を終了する。
【００５２】
図５は、ＰＬＣ３において、共有サーバ１に対して異常検出ではなく任意に他の正常なＰＬＣ３に切換を要求する処理を示すフローチャートである。
まず、ステップＳ４００では、演算処理部１０９が、ＰＬＣ内部メモリ１０６のシステム情報レジスタ２４１内に手動切換要求の有無を登録し、処理をステップＳ４０１に移行する。
【００５３】
ステップＳ４０１では、演算処理部１０９が、システム情報レジスタ２４１の手動切換要求の有無を参照し、手動切換要求があった場合はステップＳ４０２に移行する。手動切換要求が無かった場合は処理を終了する。
【００５４】
ステップＳ４０２では、演算処理部１０９は、ＰＬＣ通信処理部１０８を用いて手動切換要求を共有サーバ内部メモリ１００の手動切換要求情報２０５に登録し、処理を終了する。
【００５５】
（共有サーバ１の動作例）
図６は、共有サーバ１における異常検出処理部１０４の異常検出処理を示すフローチャートである。以下では、第一ＰＬＣ３ａについて異常検出処理を実施した例を説明する。
まず、ステップＳ５００では、異常検出処理部１０４は、共有サーバ内部メモリ１００のＰＬＣ生存信号２００に登録された各ＰＬＣ３のＰＬＣ生存信号を参照し、ＰＬＣの正常動作可否を判別する。ＰＬＣ生存信号２００を参照した結果、例えば第一ＰＬＣ３ａの生存が確認できた場合はステップＳ５０１へ移行し、確認できなかった場合は処理をステップＳ５０４に移行する。
【００５６】
ステップＳ５０１では、異常検出処理部１０４は、共有サーバ内部メモリ１００のＣＰＵ負荷率２０２に登録された、各ＰＬＣ３（この例では第一ＰＬＣ３ａ）のＣＰＵ負荷率を参照し、予め設定したＣＰＵ負荷率の閾値と比較する。比較の結果、閾値以上のＣＰＵ負荷率となったＰＬＣ３（例えば第一ＰＬＣ３ａ）があった場合は処理をステップＳ５０４に移行する。ＣＰＵ負荷率が閾値以上のＰＬＣ３がなかった場合は処理をステップＳ５０２に移行する。
【００５７】
ステップＳ５０２では、異常検出処理部１０４は、共有サーバ内部メモリ１００のエラー情報２０３に登録された、各ＰＬＣ３（この例では第一ＰＬＣ３ａ）において発生したエラーを参照し、各ＰＬＣ３のエラーの有無を判別する。エラー情報２０３を参照した結果、いずれかのＰＬＣ３（例えば第一ＰＬＣ３ａ）においてエラーがあった場合は処理をステップＳ５０４に移行する。エラーが無かった場合は処理を終了する。
【００５８】
ステップＳ５０３では、異常検出処理部１０４は、共有サーバ内部メモリ１００の手動切換要求情報２０５に登録された、各ＰＬＣ３（この例では第一ＰＬＣ３ａ）からの手動切換要求の有無を参照し判別する。いずれかのＰＬＣ３（例えば第一ＰＬＣ３ａ）から手動切換要求があった場合は、処理をステップＳ５０４に移行する。全てのＰＬＣ３において手動切換要求が無かった場合は処理を終了する。
【００５９】
ステップＳ５０４では、ステップＳ５００〜Ｓ５０３の判別処理の結果、他の正常なＰＬＣ３に処理を代行させる必要があると判断し、他のＰＬＣの状態を探索する処理を開始し、異常検出処理を終了する。
【００６０】
図７は、図６のステップＳ５０４の他の正常なＰＬＣ３を探索し、異常となったＰＬＣ３の代替処理を行う場合の処理を示したフローチャートである。ここでは、処理フローを説明する上で、異常となったＰＬＣ３を図１の第一ＰＬＣ３ａ、他の正常なＰＬＣ３を第二ＰＬＣ３ｂとして述べる。
【００６１】
まず、ステップＳ６００では、共有サーバ通信処理部１０３が、第二ＰＬＣ３ｂのＰＬＣ生存信号２００を参照する。参照した結果、ＰＬＣ生存信号があった場合はステップＳ６０１へ処理を移行し、ＰＬＣ生存信号が無かった場合はステップＳ６０７に処理を移行する。
【００６２】
ステップＳ６０１では、第二ＰＬＣ３ｂにおいて、ステップＳ５０１と同様に、共有サーバ通信処理部１０３が、ＣＰＵ負荷率２０２を参照する。参照した結果、閾値以下であった場合は処理をステップＳ６０２に移行し、閾値以上のＣＰＵ負荷率であった場合は処理をステップＳ６０７に移行する。
【００６３】
ステップＳ６０２では、共有サーバ通信処理部１０３が、第二ＰＬＣ３ｂのエラー情報２０３を参照し、エラー情報が無かった場合は処理をステップＳ６０３に移行し、エラー情報があった場合は処理をステップＳ６０７に移行する。
【００６４】
ステップＳ６０３では、共有サーバ通信処理部１０３が、第二ＰＬＣ３ｂの追記可能なプログラムステップ数２０１と、第一ＰＬＣ３ａのプログラムステップ数を比較する。比較した結果、第二ＰＬＣ３ｂの追記可能なプログラムステップ数２０１の方が第一ＰＬＣ３ａよりも多かった場合は、処理をステップＳ６０４に移行する。第一ＰＬＣ３ａのプログラムステップ数の方が大きかった場合は、処理をステップＳ６０７に移行する。
【００６５】
ステップＳ６０４では、共有サーバ通信処理部１０３が、第二ＰＬＣ３ｂのＰＬＣプログラム格納部１０７内のプログラム２５０に対して第一ＰＬＣ３ａのプログラムを送信する。そして、第二ＰＬＣ３ｂにおいて、演算処理部１０９が、ＰＬＣプログラム格納部１０７内のプログラム２５０に、送信された第一ＰＬＣ３ａのプログラムを追記する処理を行う。処理の完了後、ステップＳ６０５に移行する。
【００６６】
ステップＳ６０５では、共有サーバ通信処理部１０３が、第二ＰＬＣ３ｂのＰＬＣ通信情報格納部１０５内の通信プログラム２３０に対して、第一ＰＬＣ３ａと接続している第一Ｉ／Ｏ装置５ａのＩＰアドレスを送信する。そして、第二ＰＬＣ３ｂにおいて、演算処理部１０９が、通信プログラム２３０に当該第一Ｉ／Ｏ装置５ａのＩＰアドレスを追加登録する処理を行い、処理をステップＳ６０６に移行する。
【００６７】
ステップＳ６０６では、共有サーバ通信処理部１０３が、ＰＬＣ全プログラム格納部１０２に登録されたＰＬＣ１プログラム実行場所２２２に対して、実行場所を第二ＰＬＣ３ｂに変更（書き換え）を行うことで、全体の処理フローを終了する。
【００６８】
ステップＳ６０７では、共有サーバ通信処理部１０３が、第一ＰＬＣ３ａ及び第二ＰＬＣ３ｂ以外のＰＬＣ３の探索を開始し、処理をステップＳ６０８に移行する。すなわち、ｎ＝ｎ＋１にインクリメントし、次の第（ｎ＋１）ＰＬＣの探索を開始する。この例では、第二ＰＬＣ３ｂのｎ＝２をインクリメントしてｎ＝３とし、次のＰＬＣとして第三ＰＬＣ３ｃを探索する。
【００６９】
ステップＳ６０８では、共有サーバ通信処理部１０３が、全ＰＬＣ３の探索が完了したかどうかの判定を行う。例えばｎ＝ｎ＋１にインクリメントしたとき、ｎ＋１が複数のＰＬＣ３の上限値であれば探索完了である。全ＰＬＣ３の探索が終了した場合は、処理をステップＳ６０９に移行する。まだ未探索のＰＬＣ３が存在する場合は処理をステップＳ６００に移行する。
【００７０】
ステップＳ６０９では、共有サーバ通信処理部１０３が、全ＰＬＣ３を探索した結果、第一ＰＬＣ３ａの代替処理が可能な他の正常なＰＬＣ３がなかったことを示す情報を、共有サーバ内部メモリ１００内のエラー情報２０３に登録し、処理フローを終了する。
【００７１】
ステップＳ６０９における共有サーバ内部メモリ１００内のエラー情報２０３に登録した内容を、監視端末９を利用してモニタ１０に表示してもよい。このようにした場合、監視員がマルチコントローラシステムのエラー情報を速やかに把握できる。
【００７２】
図６及び図７の例では、第一ＰＬＣ３ａ（ｎ＝１）から状態探索を開始しているが、第一ＰＬＣ３ａからではなく別のＰＬＣから開始してもよい。その場合、インクリメント後のＰＬＣのｎ（＝ｎ＋１）が上限値となることがあるが、その場合は、他の未探索のＰＬＣを探索する。
【００７３】
図８は、図７のステップＳ６０４及びＳ６０５の処理における、共有サーバ通信情報格納部１０１内の通信構築情報２１３と、ＰＬＣ通信情報格納部１０５内の通信構築情報２３３と、Ｉ／Ｏ装置通信情報格納部１１１内の通信構築情報２６３間のやり取りを示すシーケンス図である。
【００７４】
まず、共有サーバ１の通信構築情報２１３内のＰＬＣプログラム追記要求コマンドが、共有サーバ通信処理部１０３によってＰＬＣ３の通信構築情報２３３に送信される（ステップＳ７００）。
【００７５】
ＰＬＣ通信処理部１０８は、ＰＬＣプログラム追記要求コマンドを受信すると、共有サーバ１の通信構築情報２１３に対してＰＬＣプログラム追記要求受付完了コマンドを送信する（ステップＳ７０１）。これにより共有サーバ１とＰＬＣ３の間でネゴシエーション処理が完了する。
【００７６】
次に、共有サーバ通信処理部１０３は、ＰＬＣプログラム追記要求受付完了コマンドを受信すると、ＰＬＣプログラム送信開始コマンドをＰＬＣ３の通信構築情報２３３に対して送信し、実際に追記するプログラムを送信する（ステップＳ７０２）。
【００７７】
ＰＬＣ３側では、通信構築情報２３３がＰＬＣプログラム送信開始コマンドを受信した後、ＰＬＣプログラム格納部１０７に受信したプログラムを格納する。プログラムの受信が完了すると、ＰＬＣ通信処理部１０８は、共有サーバ１の通信構築情報２１３に対して、ＰＬＣプログラム受信完了コマンドを送信する（ステップＳ７０３）。
【００７８】
共有サーバ通信処理部１０３は、ＰＬＣプログラム受信完了コマンドを受信すると、ＰＬＣ３の通信構築情報２３３に対してＩ／Ｏ装置ＩＰアドレス登録要求コマンドを送信する（ステップＳ７１０）。
【００７９】
ＰＬＣ通信処理部１０８は、Ｉ／Ｏ装置ＩＰアドレス登録要求コマンドを受信すると、共有サーバ１の通信構築情報２１３に対してＩ／Ｏ装置ＩＰアドレス登録要求受付完了コマンドを送信する（ステップＳ７１１）。
【００８０】
共有サーバ通信処理部１０３は、Ｉ／Ｏ装置ＩＰアドレス登録要求受付完了コマンドを受信すると、実際に登録するＩ／Ｏ装置のＩＰアドレスをＰＬＣ通信情報格納部１０５内の通信プログラム２３０に送信、書き込みを行う。
【００８１】
ＰＬＣ通信処理部１０８は、通信プログラム２３０に新たに書き込まれたＩＰアドレスを参照して、該当するＩ／Ｏ装置５の通信構築情報２６３に対してＩ／Ｏ装置接続要求コマンドを送信する（ステップＳ７１２）。
【００８２】
Ｉ／Ｏ装置通信処理部１１０は、Ｉ／Ｏ装置接続要求コマンドを受信すると、ＰＬＣ３の通信構築情報２３３に対してＩ／Ｏ装置接続完了コマンドを送信し、ＰＬＣ３とＩ／Ｏ装置５との間で接続が完了となる（ステップＳ７１３）。
【００８３】
ＰＬＣ通信処理部１０８は、Ｉ／Ｏ装置接続完了コマンドを受信すると、共有サーバ１の通信構築情報２１３に対してＩ／Ｏ装置接続完了コマンドを送信する。
【００８４】
共有サーバ通信処理部１０３は、Ｉ／Ｏ装置接続完了コマンドを受信すると、ＰＬＣ３の通信構築情報２３３に対して演算開始要求コマンドを送信する（ステップＳ７１４）。
【００８５】
そして、ＰＬＣ通信処理部１０８は、演算開始要求コマンドを受信すると、それまで処理していた自身のプログラムに加えて、新たに追加されたプログラム部分の処理を新たに接続したＩ／Ｏ装置５を用いて開始する。
【００８６】
上述した本開示の一実施形態は、複数のＰＬＣ（コントローラの一例）及びＩ／Ｏ装置を備えて構成されているマルチコントローラシステムにおいて、バスで接続されたＰＬＣのプログラムを一元管理する共有サーバを設置することを一つの特徴とする。それにより、ＰＬＣ間でのプログラムの共有化を実現し、かつ共有するプログラムで使用するＩ／Ｏ装置の接続先を、アドレス情報を元に現在のＰＬＣからプログラム送信先のＰＬＣへ切り換えることができる。
【００８７】
共有サーバは、上述のとおり、同一バスにて接続されたＰＬＣの全プログラムを格納しており、各ＰＬＣの生存信号やエラー情報、接続回線の断線情報、受信可能なプログラムのステップ数、ＣＰＵ負荷率を監視することで、ＰＬＣの異常検知処理を行う。そして、異常検知した場合は、他のＰＬＣに対して異常検知したＰＬＣに該当するプログラムを送信する。プログラム送信後、プログラムの受信側のＰＬＣは、そのプログラムで使用するＩ／Ｏ装置を検索して接続を確立させ、追加となったプログラムも含めて演算処理（例えばプラント監視制御）を開始する。
【００８８】
上述した構成により、複数のＰＬＣと複数のＩ／Ｏ装置間の接続が固定された多重化構成のＰＬＣでは回避できない回線障害や、ＰＬＣのメンテナンス時に他のＰＬＣにて代理演算及びＩ／Ｏ装置との代理伝送機能を備えたフォールトトレラントシステムを提供できる。
【００８９】
このように、本実施形態に係るマルチコントローラシステムは、故障以外の原因でシステムが停止しても、複数のコントローラ及びＩ／Ｏ装置間の協調制御が行える。すなわち、システム停止の原因に関係なく、ＰＬＣ演算処理の冗長化を可能とする。
【００９０】
また、ネットワーク回線網の異常もしくはＰＬＣ異常が生じていない場合でも、ＰＬＣから手動切換要求情報を共有サーバに送信することにより、他の（正常な）ＰＬＣで切り替え前のＰＬＣと同一の処理を行わせることが可能である。
【００９１】
なお、ＰＬＣのＰＬＣ通信処理部は、異常の生じたＰＬＣのプログラムを他のＰＬＣで演算実行している間のみ、Ｉ／Ｏ装置とＰＬＣとの接続を切り替えるとよい。異常の原因が除去され異常の生じていたＰＬＣが復帰した場合、復帰を受けて、ＰＬＣとＩ／Ｏ装置の切り替えを自動的に元に戻すようにしてもよい。
【００９２】
＜２．その他＞
なお、図８の説明において、ＰＬＣ３とＩ／Ｏ装置５の接続が完了後、ＰＬＣ３は、共有サーバ１からの演算開始コマンドを受信してから新たに追加されたプログラム部分の処理を開始すると説明したが、この例に限られない。例えば、ＰＬＣ３は、Ｉ／Ｏ装置５との接続が完了後、共有サーバ１へＩ／Ｏ装置接続完了コマンドを送信すると同時に、新たに追加されたプログラム部分の処理を開始するようにしてもよい。
このようにした場合、ＰＬＣ３がＩ／Ｏ装置５と接続完了後、新たに追加されたプログラム部分の処理を直ちに開始できるので、マルチコントローラシステムの動作に空白が生じない。
【００９３】
図６の例では、ＰＬＣ生存信号の有無、ＣＰＵ負荷率と閾値との比較、エラー情報の有無を判定したが、少なくともＰＬＣ生存信号がない場合に、他のＰＬＣを検索すればよい。また、ＰＬＣ生存信号がある場合であっても、エラー情報があるときには、他のＰＬＣを検索する。さらに、ＰＬＣ生存信号があってエラー情報がない場合でも、ＣＰＵ負荷率が閾値を超える場合には、他のＰＬＣを検索することが望ましい。
【００９４】
上述した一実施形態例における一連の処理は、ハードウェアにより実行することができるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種の機能を実行するためのプログラムをインストールしたコンピュータにより、実行可能である。例えば汎用のパーソナルコンピュータなどに所望のソフトウェアを構成するプログラムをインストールして実行させればよい。
【００９５】
また、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給してもよい。また、そのシステムあるいは装置のコンピュータ（またはＣＰＵ等の制御装置）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、機能が実現されることは言うまでもない。
【００９６】
この場合のプログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００９７】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現される。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００９８】
また、本明細書において、時系列的な処理を記述する処理ステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）をも含むものである。
【００９９】
以上、本発明は上述した各実施の形態に限定されるものではなく、特許請求の範囲に記載された要旨を逸脱しない限りにおいて、その他種々の変形例、応用例を取り得ることは勿論である。
【符号の説明】
【０１００】
１…共有サーバ
２…バス
３…ＰＬＣ
４…ネットワーク回線網
５…Ｉ／Ｏ装置
６…制御対象
７…ルータ
８…ネットワーク回線
１００…共有サーバ内部メモリ
１０１…共有サーバ通信情報格納部
１０２…ＰＬＣ全プログラム格納部
１０３…共有サーバ通信処理部
１０４…異常検出処理部
１０５…ＰＬＣ通信情報格納部
１０６…ＰＬＣ内部メモリ
１０７…ＰＬＣプログラム格納部
１０８…ＰＬＣ通信処理部
１０９…演算処理部
１１０…Ｉ／Ｏ装置通信処理部
１１１…Ｉ／Ｏ装置通信情報格納部
１１２…Ｉ／Ｏ装置内部メモリ
２００…ＰＬＣ生存信号
２０１…追記可能なプログラムステップ数
２０２…ＣＰＵ負荷率
２０３…エラー情報
２０４…接続Ｉ／Ｏ装置ＩＰアドレス
２０５…手動切換要求情報
２１０…通信プログラム（共有サーバ）
２１１…通信プロトコル（共有サーバ）
２１２…プロトコルスタック（共有サーバ）
２１３…通信構築情報（共有サーバ）
２２０…ＰＬＣ１プログラム
２２１…ＰＬＣｎプログラム
２２２…ＰＬＣ１プログラム実行場所
２２３…ＰＬＣｎプログラム実行場所
２３０…通信プログラム（ＰＬＣ）
２３１…通信プロトコル（ＰＬＣ）
２３２…プロトコルスタック（ＰＬＣ）
２３３…通信構築情報（ＰＬＣ）
２４０…プログラム使用レジスタ
２４１…システム情報レジスタ
２５０…プログラム
２６０…通信プログラム（Ｉ／Ｏ装置）
２６１…通信プロトコル（Ｉ／Ｏ装置）
２６２…プロトコルスタック（Ｉ／Ｏ装置）
２６３…通信構築情報（Ｉ／Ｏ装置）
２７０…入出力情報登録レジスタ
２７１…システムレジスタ
【図１】
2013168090.tif 000003
【図２】
2013168090.tif 000004
【図３】
2013168090.tif 000005
【図４】
2013168090.tif 000006
【図５】
2013168090.tif 000007
【図６】
2013168090.tif 000008
【図７】
2013168090.tif 000009
【図８】
2013168090.tif 000010