(57)【要約】【課題】省エネ・省電力稼動を実現することが可能なプラント制御装置を提供する。【解決手段】コントローラ１１１〜１１４を有するプラント監視制御装置本体１１０と、コントローラ１１１〜１１４とプラント機器１２１〜１２４を接続するプロセス入出力装置１３０と、コントローラ１１１〜１１４が実行するプログラムが格納されたデータベース１０３を有し、コントローラ１１１〜１１４と接続されるコントローラ管理装置１００とを備える。コントローラ管理装置１００は、第１のコントローラの負荷率と、第１のコントローラが実行中のプログラムの重要度と使用中のデータの重要度とに従い、第１のコントローラが実行している処理を、負荷率に従って決定する第２のコントローラに移すか否かを決定し、第２のコントローラに、第１のコントローラが実行しているプログラムをデータベース１０３からインストールして実行させ、第１のコントローラを休止させる。【選択図】図１
2013109694.tif 000002
【特許請求の範囲】
【請求項１】
複数のコントローラを有するプラント監視制御装置本体と、
複数の前記コントローラと複数のプラント機器とを接続する１台のプロセス入出力装置と、
複数の前記コントローラのそれぞれが実行する複数のプログラムが格納されたデータベースを有し、複数の前記コントローラと接続されるコントローラ管理装置と、を備え、
前記コントローラ管理装置は、
複数の前記コントローラのうちの第１のコントローラの負荷率と、前記第１のコントローラが実行しているプログラムの重要度と、前記第１のコントローラが使用しているデータの重要度とに従い、前記第１のコントローラが実行している処理を、複数の前記コントローラのうちの第２のコントローラに移すか否かを決定し、前記第２のコントローラは前記第２のコントローラの負荷率に従って決定され、
前記第２のコントローラに、前記第１のコントローラが実行しているのと同じプログラムを前記データベースからインストールし、インストールしたプログラムを実行させ、
前記第１のコントローラを休止させる、
ことを特徴とするプラント省エネ制御装置。
【請求項２】
請求項１記載のプラント省エネ制御装置において、
前記コントローラ管理装置は、
前記第１のコントローラが実行しているプログラムが前記第２のコントローラに既にインストールされているかどうかを調べ、
前記プログラムが前記第２のコントローラに既にインストールされている場合には、前記プログラムを前記データベースからインストールせず、既にインストールされている前記プログラムを前記第２のコントローラに実行させるプラント省エネ制御装置。
【請求項３】
請求項１記載のプラント省エネ制御装置において、
前記１台のプロセス入出力装置は、複数の前記コントローラと複数の前記プラント機器とに対して、情報を送受信するプラント省エネ制御装置。
【請求項４】
請求項１記載のプラント省エネ制御装置において、
前記コントローラ管理装置は、
前記第１のコントローラが実行しているプログラムの重要度と、前記第１のコントローラが使用しているデータの重要度とから最終重要度を定め、
複数の前記コントローラのうちの第１のコントローラの負荷率と前記最終重要度とに従い、前記第１のコントローラが実行している処理を、前記第２のコントローラに移すか否かを決定するプラント省エネ制御装置。
【請求項５】
複数のコントローラを有するプラント監視制御装置本体と、
複数の前記コントローラと複数のプラント機器とを接続する１台のプロセス入出力装置と、
複数の前記コントローラのそれぞれが実行する複数のプログラムが格納されたデータベースを有し、複数の前記コントローラと接続されるコントローラ管理装置と、を備え、
前記コントローラ管理装置は、
複数の前記コントローラのうちの第１のコントローラの負荷率に従い、前記第１のコントローラが実行している処理の一部を、複数の前記コントローラのうちの第２のコントローラに移すか否かを決定し、前記第２のコントローラは前記第２のコントローラの負荷率に従って決定され、
前記第２のコントローラが休止している場合には、前記第２のコントローラを起動させ、
前記第２のコントローラに、前記第１のコントローラが実行しているのと同じプログラムを前記データベースからインストールし、インストールしたプログラムを実行させ、
前記第１のコントローラと前記第２のコントローラで処理を実行させる、
ことを特徴とするプラント省エネ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プラント制御装置に関し、詳細には、消費電力の低減が可能なプラント省エネ制御装置に関する。
【背景技術】
【０００２】
プラント制御装置は、アクチュエーターやセンサなどのプラントのフィールド装置（プラント機器）とケーブルで接続され、プラントを監視制御する。通常、プラント制御装置は、複数台のコントローラを有しており、各コントローラに配置された制御用プログラムによって、フィールド装置に制御信号を出力し、かつフィールド装置が出力したプラントデータを受信する。プラント制御装置では、消費電力を低減するために、省エネ・省電力稼動を実現することが望まれている。
【０００３】
省エネ・省電力に関する一般的な従来技術として、特許文献１には、監視制御システムにおいて、装置の未使用時間が設定値を超えると、ディスプレイやＰＣが自動的に省電力モードになる技術が開示されている。また、特許文献２には、上下水道プラントの監視制御装置において、センサが一定時間操作員を感知しないと、装置の表示器を消灯する技術が開示されている。
【０００４】
実行中のＣＰＵの負荷分散に関する一般的な従来技術として、特許文献３には、マルチＣＰＵシステムにおいて、すべてのＣＰＵの負荷率を均等化するように制御する装置（ロードバランサー）が開示されている。
【０００５】
また、特許文献４には、マルチ計算機システムにおいて、計算機間でプログラムを移動させ、負荷がゼロになった計算機は電源を停止させる技術が開示されている。
【０００６】
特許文献５には、２台以上の計算機を使用した計算機システムにおいて、ポリシ情報に従い、サービスを最適な計算機に割り当てる技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−１２５６２５号公報
【特許文献２】特開２０１１−６０１０８号公報
【特許文献３】特開２０００−３３０９５８号公報
【特許文献４】特開昭５９−７２５５７号公報
【特許文献５】特開２００５−１００３８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のプラント制御装置では、プラント制御装置が有する複数台のコントローラのそれぞれに、制御用プログラムが割り当てられている。このため、プラントを監視制御するために、常にすべてのコントローラを稼動させており、電源を切ってコントローラを休止させることは困難である。このため、プラント制御装置は、消費する電力が大きくなっており、省エネ・省電力稼動を実現することが望まれている。
【０００９】
また、省エネ・省電力稼動のために、コントローラ間でプログラムを移動させてそれぞれのコントローラの負荷を分散させると、どのコントローラでどの処理を実行するかという制御や管理が難しくなる。
【００１０】
本発明は、各コントローラで実行するプログラムの制御や管理が容易であり、省エネ・省電力稼動を実現することが可能なプラント制御装置（プラント省エネ制御装置）を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明によるプラント省エネ制御装置は、次のような特徴を持つ。
【００１２】
複数のコントローラを有するプラント監視制御装置本体と、複数の前記コントローラと複数のプラント機器とを接続する１台のプロセス入出力装置と、複数の前記コントローラのそれぞれが実行する複数のプログラムが格納されたデータベースを有し、複数の前記コントローラと接続されるコントローラ管理装置とを備える。
【００１３】
前記コントローラ管理装置は、複数の前記コントローラのうちの第１のコントローラの負荷率と、前記第１のコントローラが実行しているプログラムの重要度と、前記第１のコントローラが使用しているデータの重要度とに従い、前記第１のコントローラが実行している処理を、複数の前記コントローラのうちの第２のコントローラに移すか否かを決定する。前記第２のコントローラは、前記コントローラ管理装置により、前記第２のコントローラの負荷率に従って決定される。前記コントローラ管理装置は、前記第２のコントローラに、前記第１のコントローラが実行しているのと同じプログラムを前記データベースからインストールし、インストールしたプログラムを実行させ、前記第１のコントローラを休止させる。
【発明の効果】
【００１４】
本発明によれば、各コントローラで実行するプログラムの制御や管理が容易であり、省エネ・省電力稼動を実現することが可能なプラント省エネ制御装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例によるプラント省エネ制御装置の概略を示す図。
【図２】制御用プログラムの重要度とデータの重要度とからコントローラの最終重要度を定める方法を示す表。
【図３】あるコントローラで実行中の制御を他のコントローラへ移動させる処理方法を示すフロー図。
【図４】従来のプラント制御装置の概略を示す図。
【発明を実施するための形態】
【００１６】
本発明によるプラント省エネ制御装置は、プラント監視制御装置本体とコントローラ管理装置を備える。プラント監視制御装置本体は、複数台のコントローラを備え、コントローラに配置された制御用プログラムによって、プラントのフィールド装置（プラント機器）を監視制御する。コントローラ管理装置は、プラント監視制御装置本体に接続され、プラント監視制御装置本体の各コントローラの負荷率と各コントローラで実行中の制御用プログラムや使用中のデータの重要度とを、あらかじめ定めた一定時間ごとに求める。そして、負荷率が低く、重要度の低い処理を実行しているコントローラに対しては、そのコントローラが実行中の制御を自動的に他のコントローラへ移動させた後、電源を切って休止させる。
【００１７】
動作させる必要のないコントローラを休止させることにより、消費電力を低減し、省エネ・省電力稼動が可能なプラント省エネ制御装置を実現することができる。また、コントローラ管理装置により、コントローラを常時監視し、必要な制御用プログラムを各コントローラにインストールするので、各コントローラで実行する制御用プログラムの制御や管理が容易である。
【００１８】
なお、本実施例での「制御用プログラム」とは、プラントのフィールド装置を監視制御するための動作を実行させる機能を記述するプログラムのことである。すなわち、制御用プログラムは、例えばバルブの開閉、配管の温度や流量の制御などという機能ごとに、記述されているものとする。コントローラで使用するデータとは、フィールド装置が出力したプラントデータのことであり、例えば計測データやプラントの異常を知らせるためのデータが含まれる。また、本実施例において、「コントローラを休止させる」とは、単にコントローラの動作を停止させることや電源が供給されているスタンバイ状態にさせることではなく、コントローラの電源を切ること（コントローラに電源を供給しないこと）を指す。
【００１９】
上記の処理を実現するため、本発明によるプラント省エネ制御装置では、制御用プログラムは、特定のコントローラに固定して配置せず、コントローラ管理装置から各コントローラへオンラインでシームレスに柔軟に配置可能とする。さらに、各コントローラの負荷率だけでなく、実行中のプログラムや使用中のデータの重要度に従い、各コントローラの制御を他のコントローラに移すことの可否を判断する。制御の移動先となるコントローラは、そのコントローラの負荷率に従って定める。また、必要に応じて休止中のコントローラを起動させて、制御を移動して実行させる。
【００２０】
従来のプラント制御装置において、複数台のＣＰＵ間で負荷を分散・平準化する技術は知られている。しかし、あらかじめ各コントローラに制御用プログラムを固定的に割り当てず、各コントローラの負荷率と各コントローラで実行中のプログラムや使用中のデータの重要度とを監視し、どのコントローラにどの制御を行わせるかを上位のコンピュータ（コントローラ管理装置）で判断した後、必要な制御用プログラムを適切なコントローラにコントローラ管理装置からシームレスに再配置（インストール）することにより、動作させる必要のないコントローラの電源を切って休止させ、消費電力の削減へつなげるという発想はなかった。
【００２１】
本発明は、単にプラント制御装置の消費電力量の低減に寄与するだけでなく、コントローラの台数の削減や、コントローラの故障時におけるバックアップの対応容易性など、システムの可用性と堅牢性の向上にも寄与すると考えられる。
【００２２】
図１を用いて、本発明の実施例によるプラント省エネ制御装置の概略を説明する。プラント省エネ制御装置は、プラント監視制御装置本体１１０と、コントローラ管理装置１００と、統合されたプロセス入出力装置１３０とを備える。
【００２３】
プラント監視制御装置本体１１０は、統合されたプロセス入出力装置１３０とケーブルで接続される。統合されたプロセス入出力装置１３０は、プラントのフィールド装置（プラント機器）１２１、１２２、１２３、１２４とケーブルで接続され、プラントデータを受信する。フィールド装置１２１〜１２４の例としては、アクチュエーターやセンサを挙げることができる。
【００２４】
プラント監視制御装置本体１１０は、複数台のコントローラ１１１、１１２、１１３、１１４を備え、コントローラ１１１〜１１４を用い、統合されたプロセス入出力装置１３０を介して、フィールド装置１２１〜１２４を監視制御する。コントローラ１１１〜１１４には、初期設定として、あらかじめ制御用プログラムが配置（インストール）されている。初期設定では、各コントローラ１１１〜１１４に対して、任意に制御用プログラムを配置することができる。コントローラ１１１〜１１４は、それぞれに配置された制御用プログラムを実行して、統合されたプロセス入出力装置１３０を介して、フィールド装置１２１〜１２４に対して制御信号を出力し、かつフィールド装置１２１〜１２４が出力したプラントデータを受信する。
【００２５】
統合されたプロセス入出力装置１３０は、コントローラ１１１〜１１４からの制御信号を受信してフィールド装置１２１〜１２４に出力し、フィールド装置１２１〜１２４からのプラントデータを受信してコントローラ１１１〜１１４に出力する。すなわち、統合されたプロセス入出力装置１３０は、１台のプロセス入出力装置で、複数台のコントローラと複数台のフィールド装置とに対して情報を送受信する。
【００２６】
図４は、従来のプラント制御装置の概略を示す図である。図４に示すように、従来のプラント制御装置では、コントローラ１１１〜１１４は、それぞれに接続されたプロセス入出力装置１３１、１３２、１３３、１３４を介して、フィールド装置１２１〜１２４とそれぞれ接続され、フィールド装置１２１〜１２４をそれぞれ監視制御する。従って、従来のプラント制御装置では、コントローラ１１１〜１１４のそれぞれには、プロセス入出力装置１３１〜１３４を介して接続されるフィールド装置１２１〜１２４に応じた制御用プログラムや制御機能が配置されている。
【００２７】
しかし、本実施例のプラント省エネ制御装置では、コントローラ１１１〜１１４のすべては、１台の統合されたプロセス入出力装置１３０を介して、すべてのフィールド装置１２１〜１２４と接続可能である。これにより、どのコントローラ１１１〜１１４でも、フィールド装置１２１〜１２４のうち任意のフィールド装置の監視制御が可能である。
【００２８】
統合されたプロセス入出力装置１３０の、各コントローラ１１１〜１１４とフィールド装置１２１〜１２４に対する入出力処理は、従来のプロセス入出力装置がコントローラやフィールド装置に対して行う入出力処理と同じである。
【００２９】
図１に示すように、コントローラ管理装置１００は、コントローラ管理装置１００を司る本体装置１０２と、コントローラ１１１〜１１４のそれぞれが実行する複数の制御用プログラムを格納した制御用プログラムデータベース１０３と、ディスプレイ１０１、キーボード、及びマウス等の入出力装置とを備える。また、コントローラ管理装置１００は、プラントデータのデータベース１０４に、フィールド装置１２１〜１２４が出力してプラント監視制御装置本体１１０が受信したプラントデータを格納することができる。
【００３０】
本体装置１０２は、後述する重要度を登録するためのテーブルを保存することができ、プラント監視制御装置本体１１０と接続されていて、コントローラ省エネ運転制御プログラムを実行する。コントローラ省エネ運転制御プログラムにより、本体装置１０２は、プラント監視制御装置本体１１０が受信したプラントデータを基にして、制御情報の計算・解析を行って最適な制御指令をプラント監視制御装置本体１１０に送信したり、プラント情報をディスプレイ１０１に表示したりすることができる。
【００３１】
本実施例では、コントローラ１１１〜１１４が実行する制御用プログラムは、コントローラ１１１〜１１４のそれぞれに固定的に割り当てるのではない。制御用プログラムは、コントローラ管理装置１００内にある制御用プログラムデータベース１０３に、すべてを集約させて格納しておく。そして、本体装置１０２は、プラント監視制御装置本体１１０のコントローラ１１１〜１１４の負荷率とコントローラ１１１〜１１４で実行中のプログラムと使用中のデータの重要度とに応じて、どのコントローラにどの制御を行わせるかを判断し、必要な制御用プログラムを制御用プログラムデータベース１０３から適切なコントローラに配置（インストール）する。そして、負荷率が低く、重要度の低い処理を実行しているコントローラを休止させる。
【００３２】
以下、コントローラに制御用プログラムを最適に配置し、負荷率が低く重要度の低い処理を実行しているコントローラを休止させるための具体的な方法について説明する。
【００３３】
コントローラ管理装置１００の本体装置１０２には、制御用プログラムごとに、その制御の重要度（すなわち、プログラムに記述された機能の重要度）をあらかじめテーブルに登録しておく。また、各コントローラ１１１〜１１４が使用するデータごとに、その重要度を別のテーブルにあらかじめ登録しておく。重要度は任意に定めて表してよいが、本実施例では一例として、重要度の高い順に「高」「中」「低」の３段階で表す。
【００３４】
本体装置１０２は、プラント監視制御装置本体１１０が備える各コントローラ１１１〜１１４の負荷率を、あらかじめ定めた一定時間ごとに求める。負荷率は、任意の既知の方法で求めることができる。さらに、本体装置１０２は、負荷率を求めるのと並行して、各コントローラ１１１〜１１４が実行している制御用プログラムと使用しているデータの重要度を一定時間ごとに求める。このとき、本体装置１０２は、次に実行する制御用プログラムや次に使用するデータを知ることができるので、各コントローラ１１１〜１１４が現在実行している制御用プログラムや現在使用しているデータの重要度だけでなく、次に実行する制御用プログラムや次に使用するデータの重要度も求めることができる。そして、本体装置１０２は、求めた負荷率と重要度に応じて、各コントローラ１１１〜１１４を休止するか否かを判断する。
【００３５】
本実施例では、本体装置１０２は、各コントローラ１１１〜１１４が実行している制御用プログラムと使用しているデータの重要度とから、各コントローラ１１１〜１１４の最終重要度を求め、この最終重要度と負荷率に応じて、各コントローラ１１１〜１１４を休止するか否かを判断する。
【００３６】
図２は、制御用プログラムの重要度とデータの重要度とからコントローラの最終重要度を定める方法を示す表である。各コントローラ１１１〜１１４の最終重要度は、図２に示すように、制御用プログラムの重要度とデータの重要度に応じて「Ａ」または「Ｂ」と定める。すなわち、制御用プログラムの重要度が「高」の場合は、データの重要度に依らず最終重要度を「Ａ」とし、データの重要度が「高」の場合は、制御用プログラムの重要度に依らず最終重要度を「Ａ」とし、制御用プログラムの重要度とデータの重要度の両方が「中」または「低」の場合は、最終重要度を「Ｂ」とする。最終重要度が「Ａ」のコントローラが実行している制御は、他のコントローラへ移さず、最終重要度が「Ｂ」のコントローラが実行している制御は、他のコントローラへ移すものとする。
【００３７】
図３は、あるコントローラで実行中の制御を他のコントローラへ移動させる処理方法を示すフロー図である。本体装置１０２は、あらかじめ定めた一定時間ごとに図３に示す処理を行い、負荷率が低く最終重要度が「Ｂ」であるコントローラに対し、実行中の制御を他のコントローラへ移動させた後、電源を切って休止させる。
【００３８】
本処理は、コントローラの数だけ行う（Ｓ３０１）。プラント監視制御装置本体１１０は、図１に示したようにＮ台のコントローラを有するものとする。また、各コントローラは、コントローラｉやコントローラｊやコントローラｋなどと、アルファベットの添え字をつけて区別する（１≦ｉ，ｊ，ｋ≦Ｎ）。
【００３９】
Ｓ３０２では、コントローラｉについて負荷率Ｌｉを求める。
【００４０】
Ｓ３０３で、コントローラｉの負荷率Ｌｉと負荷率のしきい値Ｘを比較する。負荷率のしきい値Ｘは、任意の値とすることができ、あらかじめ定めておく。例えば、Ｘ＝３０％とする。負荷率Ｌｉがしきい値Ｘより小さい場合は、Ｓ３０４に進み、負荷率Ｌｉがしきい値Ｘ以上の場合は、Ｓ３２１に進む。
【００４１】
Ｓ３０４では、コントローラｉについて最終重要度を定める。最終重要度は、前述したように、コントローラｉが実行している制御用プログラムと使用しているデータの重要度とを求め、図２に従ってこれらの重要度から定める。
【００４２】
Ｓ３０５の判定処理において、最終重要度が「Ｂ」の場合は、コントローラｉが実行している制御を他のコントローラへ移動させるものとし、制御の移動先のコントローラを探す処理（Ｓ３０６〜Ｓ３１０）を行う。最終重要度が「Ｂ」でない場合（すなわち、最終重要度が「Ａ」の場合）は、コントローラｉが実行している制御を他のコントローラへ移さない。
【００４３】
Ｓ３０６〜Ｓ３１０は、コントローラｉが実行している制御を移動するコントローラを探す処理である。この処理は、コントローラｉ以外のコントローラに対して行う（Ｓ３０６）。
【００４４】
Ｓ３０７では、コントローラｊ（ただしｉ≠ｊ）について負荷率Ｌｊを求める。
【００４５】
Ｓ３０８で、コントローラｊの負荷率Ｌｊと負荷率のしきい値Ｙを比較する。負荷率のしきい値Ｙは、任意の値とすることができ、あらかじめ定めておく。負荷率のしきい値Ｙは、Ｓ３０３で用いた負荷率のしきい値Ｘと同じ値でも異なる値でもよい。負荷率Ｌｊがしきい値Ｙ以上の場合、コントローラｊは、負荷率の高い制御を実行しており、コントローラｉが実行している制御の移動先として適当ではない。この場合は、Ｓ３１０に進む。一方、負荷率Ｌｊがしきい値Ｙより小さい場合、コントローラｊは、負荷率の低い制御を実行しているか休止中であるので、コントローラｊをコントローラｉが実行している制御の移動先の候補とする。この場合は、Ｓ３０９に進む。
【００４６】
Ｓ３０９では、制御の移動先の候補であるコントローラｊが休止中かどうか判定する。コントローラｊが休止中の場合は、Ｓ３１０に進み、コントローラｉが実行している制御をコントローラｊに移動させない。コントローラｊが休止中でない場合は、Ｓ３１１に進み、コントローラｊをコントローラｉが実行している制御の移動先とする。
【００４７】
Ｓ３１０は、コントローラｊに、コントローラｉが実行している制御を移動させない場合の処理である。コントローラｉ以外のすべてのコントローラについてＳ３０７〜Ｓ３０９の処理を行ったかどうか調べる（すなわち、Ｓ３０７〜Ｓ３０９の処理をＮ−１回行ったかどうか調べる）。コントローラｉ以外のすべてのコントローラについてＳ３０７〜Ｓ３０９の処理を行っていない場合（Ｓ３０７〜Ｓ３０９の処理をＮ−１回行っていない場合）は、Ｓ３０６に戻る。コントローラｉ以外のすべてのコントローラについてＳ３０７〜Ｓ３０９の処理を行った場合（Ｓ３０７〜Ｓ３０９の処理をＮ−１回行った場合）は、Ｓ３１１〜Ｓ３１３の処理を行わず、Ｓ３０１に戻って、次のコントローラ（コントローラ（ｉ＋１））に対してＳ３０２以下の処理を行う。
【００４８】
Ｓ３１１では、コントローラｉが実行しているのと同じ制御用プログラムを、コントローラ管理装置１００の制御用プログラムデータベース１０３からダウンロードし、コントローラｊにインストールする。このとき、コントローラｊは、コントローラｊで実行中の制御と並行して、制御用プログラムのインストールが可能であるものとする。
【００４９】
Ｓ３１２では、コントローラｊに、インストールした制御用プログラムを実行させて、コントローラｉの制御を移動させる。このとき、制御用プログラムのダウンロードとインストールが完全にできていて、コントローラｊが制御用プログラムを実行したときに支障がないかを確認する。さらに、コントローラｊへ処理を切り替えるタイミングのスケジューリングを行い、コントローラｉを安全に休止させるための処理を行う。
【００５０】
Ｓ３１３では、コントローラｉを休止させる。
【００５１】
Ｓ３２１は、Ｓ３０３でコントローラｉの負荷率Ｌｉが負荷率のしきい値Ｘ以上の場合の処理である。Ｓ３２１では、負荷率Ｌｉと負荷率のしきい値Ｚを比較する。負荷率のしきい値Ｚは、任意の値とすることができ、あらかじめ定めておく。ただし、しきい値Ｚは、しきい値Ｘより大きい値とする。例えば、Ｚ＝５０％とする。負荷率Ｌｉがしきい値Ｚより大きい場合は、コントローラｉではこれ以上の処理ができないと判断する。そこで、コントローラｉの負荷率を低減するために、コントローラｉが実行している制御の一部を他のコントローラへ移動させるものとし、制御の移動先のコントローラを探す処理（Ｓ３２２〜Ｓ３２４）を行う。
【００５２】
Ｓ３２２〜Ｓ３２４は、コントローラｉが実行している制御を移動するコントローラを探す処理である。この処理は、コントローラｉ以外のコントローラに対して行う（Ｓ３２２）。
【００５３】
Ｓ３２３では、コントローラｋ（ただしｉ≠ｋ）について負荷率Ｌｋを求める。
【００５４】
Ｓ３２４で、コントローラｋの負荷率Ｌｋと負荷率のしきい値Ｙを比較する。負荷率Ｌｋがしきい値Ｙ以上の場合、コントローラｋは、負荷率の高い制御を実行しており、コントローラｉが実行している制御の移動先として適当ではない。この場合は、Ｓ３２２〜Ｓ３２４の処理を続行する。一方、負荷率Ｌｋがしきい値Ｙより小さい場合、コントローラｋは、負荷率の低い制御を実行しているか休止中であるので、コントローラｉが実行している制御の移動先とする。この場合は、Ｓ３２２〜Ｓ３２４の処理をやめて、Ｓ３２５に進む。
【００５５】
Ｓ３２５では、制御の移動先であるコントローラｋが休止中かどうか判定する。コントローラｋが休止中の場合は、Ｓ３２６で、コントローラｋを起動させる。
【００５６】
Ｓ３２７では、コントローラｉが実行しているのと同じ制御用プログラムを、コントローラ管理装置１００の制御用プログラムデータベース１０３からダウンロードし、コントローラｋにインストールする。このとき、コントローラｋは、コントローラｋで実行中の制御と並行して、制御用プログラムのインストールが可能であるものとする。
【００５７】
Ｓ３２８では、コントローラｋに、インストールした制御用プログラムを実行させて、コントローラｉの制御の一部を移動させる。すなわち、コントローラｉが実行している制御を、コントローラｉとコントローラｋで分担して実行させる。コントローラｉとコントローラｋは、互いに異なった処理を行う。このとき、制御用プログラムのダウンロードとインストールが完全にできていて、コントローラｋが制御用プログラムを実行したときに支障がないかを確認する。さらに、コントローラｋに処理を実行させるタイミングのスケジューリングを行う。
【００５８】
コントローラ管理装置１００の本体装置１０２は、以上の一連の処理を、コントローラ１からコントローラＮのそれぞれに対して、あらかじめ定めた一定時間ごとに実行する。
【００５９】
なお、Ｓ３２４において、すべてのコントローラｋ（ただしｋ≠ｊ）について負荷率Ｌｋがしきい値Ｙ以上の場合は、負荷率の低い制御を実行しているコントローラがない場合である。この場合は、コントローラｉが実行している制御を移動するコントローラがないので、Ｓ３０１に戻って、次のコントローラ（コントローラ（ｉ＋１））に対してＳ３０２以下の処理を行う。
【００６０】
Ｓ３１１とＳ３２７において、コントローラｊやコントローラｋに制御用プログラムをインストールするとき、既にコントローラｊやコントローラｋにインストールされている制御用プログラムは、削除してもよいし、削除せずにコントローラｊやコントローラｋが保持したままにしておいてもよい。既にインストールされている制御用プログラムを削除しない場合には、各コントローラは、複数の制御用プログラムを保持する。すなわち、各コントローラは、複数の制御用プログラムを格納することができる。
【００６１】
各コントローラが複数の制御用プログラムを格納することができる場合には、Ｓ３１１とＳ３２７において、本体装置１０２は、インストールしようとしている制御用プログラムが既にコントローラｊやコントローラｋにインストールされているかどうかを調べる。調べる方法は任意であるが、例えば、本体装置１０２がインストールログを記録して保存しておき、このインストールログを参照する方法や、コントローラが休止していない場合には、コントローラに格納されているプログラムを検索する方法がある。
【００６２】
インストールしようとしている制御用プログラムが既にコントローラｊやコントローラｋにインストールされている場合は、この制御用プログラムをインストールしないものとする。コントローラｊやコントローラｋは、Ｓ３１２やＳ３２８では、既にインストールされている制御用プログラムを実行する。このようにすると、制御用プログラムのインストール処理を省略できるので、コントローラが実行する制御の移動処理にかかる時間を短縮することができる。
【００６３】
Ｓ３２６において、休止中のコントローラｋを起動させる。一般に、休止中のコントローラを起動させる（再起動させる）のには、時間がかかる。これに対処するためには、休止中のコントローラｋを起動させるのに必要な時間を考慮に入れた上で、十分に時間に余裕を持たせてＳ３０２、Ｓ３０３、Ｓ３２１〜Ｓ３２５の処理を行う。これにより、制御用プログラムをシームレスにコントローラｋにインストールすることができる。
【００６４】
制御用プログラムをシームレスに適切なコントローラにインストールするために、各コントローラのＯＳ（基本ソフト）やミドルウェアは、各コントローラが最適の効率で制御用プログラムを実行できるようにスケジューリングを独自に行う。そして、各コントローラは、制御用プログラムのインストールとプラントの監視制御とを両立して実行する。
【符号の説明】
【００６５】
１００…コントローラ管理装置、１０１…ディスプレイ、１０２…本体装置、１０３…制御用プログラムデータベース、１０４…プラントデータのデータベース、１１０…プラント監視制御装置本体、１１１，１１２，１１３，１１４…コントローラ、１２１，１２２，１２３，１２４…フィールド装置、１３０…統合されたプロセス入出力装置、１３１，１３２，１３３，１３４…プロセス入出力装置。
【図１】
2013109694.tif 000003
【図２】
2013109694.tif 000004
【図３】
2013109694.tif 000005
【図４】
2013109694.tif 000006