(57)【要約】【課題】プログラム入替えの適切な時期を自動的に判別し、プログラムの自動入替えを行えるようにする。【解決手段】プログラム管理端末装置１は、プラント監視制御システムを構成する端末装置上で動作するプログラムと、プラントの制御との関係性を利用し、プログラム入替えのタイミングを導出する。具体的には、例えばプラントの稼動状態とプログラムの不具合情報、不具合の影響度合い、端末装置のハードウェアスペックを管理し、それらの情報から対応すべき時期を決定する。また、ある特定の操作又は制御が行われる場合にのみ動作するプログラムに関しては、一定の判断基準の下、プログラムの自動入替えを行う。【選択図】図１１
2016012186.tif 000002
【特許請求の範囲】
【請求項１】
プラントの監視及び制御を行うプラント監視制御システムを構成する端末装置上で動作するプログラムのうち入替え対象プログラムと、該プログラムを実装した端末装置を判別する入替え対象判別部と、
前記入替え対象プログラムは、常時実行されているか、入替えプログラムへ入れ替え後に当該入替え対象プログラムが実装された端末装置の再起動が必要か、及び、当該入替え対象プログラムに関連する操作の頻度が規定頻度よりも高いかどうかのいずれかの条件に該当するかを少なくとも判別し、前記入替え対象プログラムが前記条件のいずれにも該当しない場合には、前記入替え対象プログラムを前記入替えプログラムに入替え可能であると設定する処理を行い、前記入替え対象プログラムと入替えの可否とを対応づけて入替え情報テーブルに格納する入替え判別部と、
前記入替え情報テーブル内の入替え可能な前記入替え対象プログラムが実装された端末装置に対し、前記入替え対象プログラムを前記入替えプログラムに入れ替える処理を実行する入替え実行部と、
を備えるプログラム管理端末装置。
【請求項２】
前記入替え判別部は、まず常時実行されているか、次に前記入替えプログラムへ入れ替え後に当該入替え対象プログラムが実装された端末装置の再起動が必要か、次に当該入替え対象プログラムに関連する操作の頻度が規定頻度よりも高いかどうかの順番で、前記入替えの可否を判別する
請求項１に記載のプログラム管理端末装置。
【請求項３】
前記入替え判別部は、前記入替え対象プログラムに関連する操作の頻度が規定頻度以下である場合には更にアラームの発生の有無を確認し、前記アラームが発生している場合に、前記入替え対象プログラムが前記アラームに対処するための操作に関連しないプログラムであるとき、前記入替え対象プログラムを前記入替えプログラムに入替え可能であると設定する
請求項２に記載のプログラム管理端末装置。
【請求項４】
前記入替え情報テーブル内の入替え否の前記入替え対象プログラムの不具合がリークである場合には、前記端末装置の記憶部の使用量及び容量から求められる前記記憶部の残容量と、前記入替え対象プログラムが動作する頻度と、前記入替え対象プログラムが動作したときの影響度とに基づいて、前記入替え対象プログラムを入れ替えるべき時期を導出する入替え時期判別部、を更に備える
請求項１乃至３のいずれかに記載のプログラム管理端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プラントのプロセスの監視や制御を行うプラント監視制御システムに用いられる電子計算機等に実装されたプログラムの保守を行うプログラム管理端末装置に関する。
【背景技術】
【０００２】
従来、製造工場、発電所、下水処理場などのプラントでは、電子計算機を用いて構成されるプラント監視制御システムにより、プラントプロセスの監視や制御が行なわれる。プラント監視制御システムは、一般にシステム構築用端末（例えばENGS（ENGineering Station）と呼ばれる）に電子計算機を利用して構築される。システム構築用端末により構築されたプラント監視制御システムは、例えばオペレータが監視及び操作を行うためのオペレータ端末（例えばPOC（Process Operator's Console）と呼ばれる）、並びにフィールド機器からプロセスＩ／Ｏ装置（Process Input/Output）を経由して供給される各種情報の処理を行うコントローラ（例えばPCS（Process Control Station）と呼ばれる）を備える。オペレータ端末およびコントローラは、プラント監視制御システムの一構成要素であり、このオペレータ端末およびコントローラ上ではプラントプロセスを制御するための各種プログラムが動作している。
【０００３】
ところで、プラント監視制御システムにおいて、オペレータ端末およびコントローラ上で動作するプログラムに不具合が見つかった場合には、修正等の対策を行う必要がある。
【０００４】
例えば、電力系統監視制御システムにおいて、複数の計算機の連携動作を妨げることなくソフトウェアを更新することができるソフトウェア管理装置が提案されている（例えば、特許文献１参照。）。
このソフトウェア管理装置は、ソフトウェアの稼働状況を検出する稼働状況検出部（４）と、入力されたソフトウェアの更新動作を制御する更新動作制御部（５）と、を備える。更新動作制御部（５）は、入力されたソフトウェアが更新すべきものであると判断すると、入力されたソフトウェアの更新対象となる計算機群を検出する更新対象検出部（５１）と、検出した更新対象となる計算機群のそれぞれに対し、予備機を先に更新し、予備機と稼働機の役目を入れ替えるように更新手順を生成する更新手順生成部（５２）と、稼働状況に基づき、予備機となっている計算機が起動状態での待機から解除可能であるか否かを判断し、解除可能と判断すると、生成した更新手順に基づいて更新動作を実行するよう指令する更新動作指令部（５３）を備える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１４１８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載のソフトウェア管理装置は、予め電力系統監視制御システムに予備機を用意しておく必要があり、予備機を設けていない電力系統監視制御システムには適用することができない。
【０００７】
プラントは連続稼動であることが多く、安易にプラント稼動を停止して、プログラムの入替えを行うことは難しい。例えば、プラントの稼動に支障が出るレベルの不具合であれば、プラントの一部機能を制限して対応を行う必要があるが、軽微な不具合であれば、プラントの定期修理期間の間に対応が行われることがある。ところが、不具合が見つかった場合にどのタイミングで対応するかということは、人間が、不具合の発生頻度やプラントプロセスへの影響の度合いから判断しているのが現状である。この判断を誤ると、プラントの稼動が停止することが考えられる。
【０００８】
一方、オペレータ端末およびコントローラ上で動作するプログラムの中にはある特定の操作、あるいは制御が行われていない場合には動作しないものもあり、そのようなプログラムはオンライン稼動中でも入替えが可能である。しかし、実行されるプログラムはプラントの稼動と密接に関係しているため、入替えのタイミングを誤ると、事故を招く恐れがある。
【０００９】
本発明は、上記の状況を考慮してなされたものであり、プログラム入替えの適切な時期を自動的に判別し、プログラムの自動入替えを行うようにするものである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明では、プラント監視制御システムを構成する端末装置上で動作するプログラムと、プラントの制御との関係性を利用し、プログラム入替えのタイミングを導出する。
【００１１】
本発明の一態様として、例えば以下のような形態を採ることができる。
本発明の一態様に係るプログラム管理端末装置は、入替え対象判別部と、入替え判別部と、入替え実行部とを備える。
入替え対象判別部は、プラントの監視及び制御を行うプラント監視制御システムを構成する端末装置上で動作するプログラムのうち入替え対象プログラムと、該プログラムを実装した端末装置を判別する。
入替え判別部は、入替え対象プログラムが、常時実行されているか、入替えプログラムへ入れ替え後に当該入替え対象プログラムが実装された端末装置の再起動が必要か、及び、当該入替え対象プログラムに関連する操作の頻度が規定頻度よりも高いかどうかのいずれかの条件に該当するかを少なくとも判別する。そして、入替え対象プログラムがこれらの条件のいずれにも該当しない場合には、入替え対象プログラムを入替えプログラムに入替え可能であると設定する処理を行い、入替え対象プログラムと入替えの可否とを対応づけて入替え情報テーブルに格納する。
入替え実行部は、入替え情報テーブル内の入替え可能な入替え対象プログラムが実装された端末装置に対し、入替え対象プログラムを入替えプログラムに入れ替える処理を実行する。
具体的には、例えばプラントの稼動状態とプログラムの不具合情報、不具合の影響度合い、端末装置のハードウェアスペックを管理し、それらの情報から対応すべき時期を決定する。
また、ある特定の操作又は制御が行われる場合にのみ動作するプログラムに関しては、一定の判断基準の下、プログラムの自動入替えを行う。
【発明の効果】
【００１２】
本発明の少なくとも一つの実施の形態によれば、プログラム入替えの適切な時期を自動的に判別し、プログラムの自動入替えを行うことができる。それにより、プログラム入替えによる事故を防止することができる。また、システム管理者の負担を軽減することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施の形態に係るプラント監視制御システムの構成例を示した概略図である。
【図２】本発明の一実施の形態に係るプラント監視制御システムに用いられる電子計算機のハードウェア構成例を示したブロック図である。
【図３】本発明の一実施の形態に係るハードウェア情報テーブルの構成例を示した図である。
【図４】本発明の一実施の形態に係るプログラム管理テーブルの構成例を示した図である。
【図５】本発明の一実施の形態に係る操作・制御−プログラムテーブルの構成例を示した図である。
【図６】本発明の一実施の形態に係る操作情報テーブルの構成例を示した図である。
【図７】本発明の一実施の形態に係るアラーム対処操作情報テーブルの構成例を示した図である。
【図８】本発明の一実施の形態に係るプログラム不具合情報テーブルの構成例を示した図である。
【図９】本発明の一実施の形態に係るアラーム情報テーブルの構成例を示した図である。
【図１０】本発明の一実施の形態に係る各種テーブルの作成処理例を示す説明図である。
【図１１】本発明の一実施の形態に係るプログラム入替え判別処理を実現するブロック図である。
【図１２】本発明の一実施の形態に係る不具合−端末情報テーブルの構成例を示した図である。
【図１３】本発明の一実施の形態に係るプログラム入替え時期情報テーブルの構成例を示した図である。
【図１４】本発明の一実施の形態に係る定期修理情報テーブルの構成例を示した図である。
【図１５】本発明の一実施の形態に係るプログラム入替え判別部の処理例を示したフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態の例について、添付図面を参照しながら説明する。なお、各図において実質的に同一の機能又は構成を有する構成要素については、同一の符号を付して重複する説明を省略する。
【００１５】
［プラント監視制御システムの全体構成例］
以下に、本発明の一実施の形態に係るプラント監視制御システムについて説明する。
図１は、本発明の一実施の形態に係るプラント監視制御システムの全体構成例を示す。
【００１６】
図１に示すプラント監視制御システム１０は、システム構築用端末３、オペレータ端末４及びコントローラ６を有する。システム構築用端末３とオペレータ端末４は、制御ＬＡＮ５（Local Area Network）を経由してコントローラ６に接続される。コントローラ６は、制御に特化した電子計算機である。弁８ａ、ポンプ８ｂ等のプラント機器８の状態監視や操作のための制御信号の入出力を行うプロセスＩ／Ｏ装置７が、コントローラ６に接続されており、コントローラ６がプラント機器８の制御を行う。システム構築用端末３、オペレータ端末４、コントローラ６及びプロセスＩ／Ｏ装置７は、分散制御システム（DCS：Distributed Control System）を構成している。
【００１７】
また、この分散制御システムには、上位のネットワークである情報ＬＡＮ２を介して、プログラムの起動、監視及び自動入替えを行うプログラム管理端末１が接続される。なお、このプログラム管理端末１は、プログラム管理用の専用端末とせずに、計測データの制御及び監視を行う監視制御システム（例えばＳＣＡＤＡ（Supervisory Control And Data Acquisition））や、製造実行システム（例えばＭＥＳ（Manufacturing Execution System））など、分散制御システムの上位にあたるシステムと併用してもよい。このプログラム管理端末１により、システム構築用端末３、オペレータ端末４及びコントローラ６において動作する各種プログラムの入替えを行う。プログラム管理端末１は、プログラム入替え処理を実現するために、各種テーブルを有する。各種テーブルの詳細について後述する。
なお、以降の説明において、プログラム管理端末１、システム構築用端末３、オペレータ端末４及びコントローラ６を総称する場合もしくは区別しない場合には、端末（端末装置の一例）と称する。
【００１８】
［電子計算機のハードウェア構成例］
次に、プログラム管理端末１、システム構築用端末３、オペレータ端末４及びコントローラ６の構成を説明する。
図２は、プログラム管理端末１、システム構築用端末３、オペレータ端末４及びコントローラ６を構成する電子計算機のハードウェア構成例を示す。ただし、各装置の機能、使用目的に合わせて図２に示す電子計算機２０の各部は取捨選択される。
【００１９】
電子計算機２０は、いわゆるコンピュータとして用いられるハードウェアである。電子計算機２０は、バス２４にそれぞれ接続されたＣＰＵ（Central Processing Unit）２１、ＲＯＭ（Read Only Memory）２２、ＲＡＭ（Random Access Memory）２３を備える。さらに、電子計算機２０は、表示部２５、操作部２６、不揮発性ストレージ２７、ネットワークインターフェース２８を備える。
【００２０】
ＣＰＵ２１は、本実施の形態に係る各機能を実現するソフトウェアのプログラムコードをＲＯＭ２２から読み出して実行する。ＣＰＵ２１は、データを分割してデータパケットを生成したり、データパケットの送信順序を入れ替えて送信したり、受信したデータパケットの送信順序を入れ替えて元のデータを復元したり、データパケットを中継したりすることが可能である。なお、ＣＰＵ２１の代わりに、ＭＰＵ（Micro-Processing Unit）等の処理装置を備えるようにしてもよい。
【００２１】
ＲＡＭ２３には、演算処理の過程で発生した変数やパラメータ、受信又は送信するデータパケット等が一時的に書き込まれる。表示部２５には、例えば、液晶ディスプレイモニタが用いられ、電子計算機２０で行われる処理の結果等をユーザに表示する。操作部２６には、例えば、キーボード、マウス等が用いられ、ユーザが所定の操作入力を行うことが可能である。
【００２２】
不揮発性ストレージ２７には、例えば、ハードディスク（HDD：Hard disk drive）等が用いられる。この不揮発性ストレージ２７には、ＯＳ（Operating System）、各種のパラメータの他に、電子計算機２０を機能させるためのプログラムが記録されている。ネットワークインターフェース２８には、例えば、ＮＩＣ（Network Interface Card）等が用いられ、制御ＬＡＮ５又は情報ＬＡＮ２を通じて各種のデータを送受信することが可能である。制御ＬＡＮ５又は情報ＬＡＮ２を通じた各端末間のデータの送受信は、独自の通信プロトコル又はＩＰ（Internet Protocol）プロトコルの通信規格を用いて行われる。
【００２３】
［各種テーブルの構成］
次に、プログラム管理端末１が備える各種テーブルを説明する。各種テーブルは、例えばプログラム管理端末１（電子計算機２０）の不揮発性ストレージ２７に格納される。
【００２４】
図３は、ハードウェア情報テーブル３３の構成例を示す。
ハードウェア情報テーブル３３は、システム構築用端末３、オペレータ端末４及びコントローラ６のハードウェアスペック（仕様）を格納する。図３に示すようにハードウェア情報テーブル３３は、「電子計算機名フィールド」と、「メモリ使用量／容量フィールド」と、「ＨＤＤ使用量／容量フィールド」とを有する。
・電子計算機名フィールドは、システム構築用端末３、オペレータ端末４及びコントローラ６といった電子計算機の名称を示すフィールドである。
・メモリ使用量／容量フィールドは、当該電子計算機におけるメモリの使用量と容量（合計容量）を示すフィールドである。ここでメモリは、メインメモリであり、ＲＡＭ２３に相当する。
・ＨＤＤ使用量／容量フィールドは、当該電子計算機におけるハードディスク（不揮発性ストレージ２７に対応）の使用量と容量（合計容量）を示すフィールドである。
【００２５】
図４は、プログラム管理テーブル３４の構成例を示す。
プログラム管理テーブル３４は、システム構築用端末３、オペレータ端末４及びコントローラ６に実装されているプログラムの情報を格納する。図４に示すようにプログラム管理テーブル３４は、「電子計算機名フィールド」と、「動作プログラムフィールド」とを有する。
・電子計算機名フィールドは、ハードウェア情報テーブル３３のものと同様に、電子計算機の名称を示すフィールドである。
・動作プログラムフィールドは、電子計算機に実装されているプログラムの名称を示すフィールドである。なお、図４に示す動作プログラムにおいて、ドット以降の英文字はプログラムファイルの拡張子を示している。
【００２６】
図５は、操作・制御−プログラムテーブル４４の構成例を示す。
操作・制御−プログラムテーブル４４は、プラント監視制御システム１０の各端末において実行される操作及び制御と、各プログラムとの関係性を格納する。図５に示すように操作・制御−プログラムテーブル４４は、「プログラム名フィールド」と、「プログラム動作環境フィールド」と、「実行時の実行形態フィールド」と、「入替え方法フィールド」と、「システム再起動要否フィールド」とを有する。
・プログラム名フィールドは、プログラムの名称を示すフィールドである。
・プログラム動作環境フィールドと、当該プログラムが動作する環境すなわち当該プログラムの動作対象である電子計算機を示すフィールドである。
・実行時の実行形態フィールドは、当該プログラムを実行するときの形態（常時起動か特定の操作時のみ起動か）を示すフィールドである。例えば、実行形態として「常時」、「シーケンス定義作成時」、フィードバック制御の一種であるＰＩＤ（Proportional Integral Derivative）制御を実行する「ＰＩＤ制御実行時」などがある。
・入替え方法フィールドは、プログラムを入れ替える際の方法を示すフィールドである。例えば、入替え方法としてプログラムを構成する一部のファイルを更新するだけの「ファイル入替え」、当該プログラムに対応する設定情報の書き替えが必要となる「インストーラ」がある。マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムの場合には、レジストリに設定情報のデータベースが格納されている。
・システム再起動要否フィールドは、プログラムを入替え後に当該電子計算機もしくはプラント監視制御システム１０の再起動が必要か否かを示すフィールドである。
【００２７】
図６は、操作情報テーブル３５の構成例を示す。
操作情報テーブル３５は、操作又は制御の頻度を格納する。図６に示すように操作情報テーブル３５は、「操作内容フィールド」と、「操作頻度フィールド」と、「動作プログラムフィールド」とを有する。
・操作内容フィールドは、監視員による操作、又は制御の内容を示すフィールドである。例えば、図６では、操作内容として「ＬＶＴＡＧ  ＯＮ−ＯＦＦ切替え」、「シーケンス定義書替え」、「シーケンス実行」、「計器展開」が挙げられている。この計器展開とは、プラントに設置された対象計器の指示値等を取得し、プログラム管理端末１等の表示部２５に表示することである。
・操作頻度フィールドは、上記の操作、又は制御が行われる頻度を示すフィールドである。
・動作プログラムフィールドは、上記の操作又は制御が行われるときに動作するプログラムを示すフィールドである。
【００２８】
図７は、アラーム対処操作情報テーブル３６の構成例を示す。
アラーム対処操作情報テーブル３６は、アラーム内容に対してオペレータが行った対処を格納する。図７に示すようにアラーム対処操作情報テーブル３６は、「アラーム内容フィールド」と、「対処操作フィールド」とを有する。
・アラーム内容フィールドは、アラームの内容を示すフィールドである。例えば、アラームとしては「機器Ａ停止」、「シーケンスＢ停止」などである。
・対処操作フィールドは、当該アラームに対処する際にオペレータが行った操作を示すフィールドである。例えば、図７では、対処操作の例として「計器展開」、「ＬＶＴＡＧ  ＯＮ−ＯＦＦ切替」、「シーケンスＣ実行」が挙げられている。例えばシーケンスＢに続くシーケンスＣを実行することで、シーケンスＢ停止のアラームが解消される。
【００２９】
図８は、プログラム不具合情報テーブル４２の構成例を示す。
プログラム不具合情報テーブル４２は、各プログラムの不具合情報を格納する。図８に示すようにプログラム不具合情報テーブル４２は、「プログラム名フィールド」と、「不具合内容フィールド」と、「条件フィールド」と、「影響度フィールド」とを有する。
・プログラム名フィールドは、不具合を有するプログラムの名称を示すフィールドである。
・不具合内容フィールドは、不具合の内容を示すフィールドである。例えば、不具合の内容としては「メモリリーク」、「ハンドルリーク」などがある。これらリーク不具合はリソースを減少させる。メモリリークは、ＯＳやプログラムの動作中に使用可能なメモリ容量が減少していく現象である。また、ハンドルリークは、例えばＷｉｎｄｏｗｓ（登録商標）等のＯＳにおいてハンドルの閉じ忘れによる無駄なリソースが蓄積する現象である。
・条件フィールドは、不具合が発生する条件を示すフィールドである。例えば、条件としては「画面Ａ展開時」、「定義ローディング時」などである。
・影響度フィールドは、その不具合が発生した際に、メモリやＨＤＤといったリソースに対する影響の程度を示すフィールドである。例えば、影響度は「１ｂｙｔｅ／１回」、「２ハンドル／１回」などのように示される。
【００３０】
図９は、アラーム情報テーブル３７の構成例を示す。
アラーム情報テーブル３７は、アラームの内容と発生時刻を格納する。図９に示すようにアラーム情報テーブル３７は、「アラーム内容フィールド」と、「発生時刻フィールド」とを有する。
・アラーム内容フィールドは、アラーム対処操作情報テーブル３６のものと同様に、アラームの内容を示すフィールドである。
・発生時刻フィールドは、当該アラームが発生したときの時刻を示すフィールドである。
【００３１】
次に、各種テーブルの生成方法を説明する。
図１０は、各種テーブルの作成処理例を示す説明図である。
【００３２】
プログラム管理端末１は、各テーブルの作成部である、ハードウェア監視部１１、プログラム判別部１２、操作内容判別部１３及びアラーム情報判別部１４を備える。ＣＰＵ２１が、ソフトウェアのプログラムコードをＲＯＭ２２から読み出して実行することにより、これらの各部の機能が実現される。ハードウェア監視部１１、プログラム判別部１２、操作内容判別部１３及びアラーム情報判別部１４は、プログラム管理端末１のネットワークインターフェース２８と情報ＬＡＮ２を経由して、システム構築用端末３，オペレータ端末４及びコントローラ６と接続し、各種の情報を得る。
【００３３】
なお、操作・制御−プログラムテーブル４４、プログラム不具合情報テーブル４２及び定期修理情報テーブル４７（後述する図１４）に関しては、電子計算機による判別ができないため、人手によるテーブル作成およびメンテナンスが必要である。例えば、プログラム不具合情報テーブル４２は、プログラムに不具合が発見されたときにその都度、更新される。操作・制御−プログラムテーブル４４は、頻繁なメンテナンスは必要ないが、例えば１回／１年のペースでメンテナンスされる。
【００３４】
ハードウェア情報テーブル３３は、プログラム管理端末１に実装されたハードウェア監視部１１が、各端末（システム構築用端末３、オペレータ端末４及びコントローラ６）のハードウェアに関する情報をリアルタイムで監視することで、作成及び更新される。具体的には、ハードウェア監視部１１は、情報ＬＡＮ２及び制御ＬＡＮ５を経由して、各端末からプログラム入替えの判断基準となるＨＤＤ使用量／容量と、メモリ使用量／容量の情報とを取得し、ハードウェア情報テーブル３３に格納する。
【００３５】
同様に、プログラム管理端末１に実装されたプログラム判別部１２は、各端末からプログラムに関する情報を取得して各端末に実装されているプログラムを判別し、プログラム管理テーブル３４を作成及び更新する。
【００３６】
また同様に、プログラム管理端末１に実装された操作内容判別部１３は、各端末からオペレータの操作に関する情報を取得して各端末に対するオペレータの操作内容を判別し、操作情報テーブル３５を作成及び更新する。
【００３７】
最後に、プログラム管理端末１に実装されたアラーム情報判別部１４は、アラームが発生した際に、各端末からアラーム発生情報と対処操作情報とを取得してオペレータが対処した操作内容を判別し、その操作内容をアラーム対処操作情報テーブル３６に格納する。また、アラーム情報判別部１４は、現在発生しているアラームをアラーム情報テーブル３７に格納する。アラーム情報判別部１４は、アラームの内容が解消されると、アラーム情報テーブル３７から該当するレコードを消去する。
【００３８】
プログラム管理端末１は、これらのテーブルを利用して、プログラムの入替え及び入替え時期の導出を行う。また、プログラム入替えの事前準備として、プログラム管理端末１が備える不揮発性ストレージ２７の指定ディレクトリに、不具合を修正したバージョンの各種プログラムを格納しておく必要がある。
【００３９】
［プログラム入替え処理］
次に、プログラム管理端末１によるプログラム入替え処理について説明する。
図１１は、プログラム入替え判別処理を実現するブロック図である。プログラム管理端末１は、プログラム不具合情報判別部３８、プログラム入替え判別部３９、プログラム入替え時期判別部４０、及びプログラム入替え実行部４１を備える。各部は、各テーブルを適宜参照して必要な処理を実行する。なお、各部の処理は、ＣＰＵ２１がＲＯＭ２２からソフトウェアのプログラムコードを読み出して実行することにより実現される。
【００４０】
プログラム不具合情報判別部３８（入替え対象判別部の一例）は、プログラム不具合情報テーブル４２及びプログラム管理テーブル３４を参照し、プラント監視制御システム１０を構成する端末上で動作するプログラムのうち入替え対象プログラムとして不具合のあるプログラムと、該プログラムを実装した端末を判別する。そして、プログラム不具合情報判別部３８は、不具合を有するプログラムが実装されている端末の情報を格納する不具合−端末情報テーブル４３を生成する。
【００４１】
図１２は、不具合−端末情報テーブル４３の構成例を示す。
不具合−端末情報テーブル４３は、図１２に示すように「不具合プログラム名フィールド」と、「電子計算機名フィールド」とを有する。
・不具合プログラム名フィールドは、不具合があるプログラムの名称を示すフィールドである。
・電子計算機名フィールドは、不具合があるプログラムが実装されている端末（電子計算機）の名称を示すフィールドである。
【００４２】
プログラム入替え判別部３９（入替え判別部の一例）は、プログラム不具合情報判別部３８が作成した不具合−端末情報テーブル４３に格納された、不具合があるプログラムについて入替え可否の判定を行う。すなわち、プログラム入替え判別部３９は、不具合−端末情報テーブル４３、操作・制御−プログラムテーブル４４及び操作情報テーブル３５を参照し、入替え対象となるプログラムの情報を格納するプログラム入替え情報テーブル４５（入替え情報テーブルの一例）を生成する。
【００４３】
プログラム入替え情報テーブル４５は、図示しないが入替え対象となるプログラムの名称を示した「入替え対象プログラムフィールド」と、当該プログラムの入替えの可否を示す「入替え可否フィールド」とを有する。なお、プログラム入替え情報テーブル４５の「入替え対象プログラムフィールド」と「入替え可否フィールド」の情報として、プログラム入替え時期情報テーブル４６（詳細は後述する図１３）の対応する「プログラム名フィールド」と「入替え可否フィールド」の情報を利用する構成としてもよい。
【００４４】
また、プログラム入替え判別部３９は、上記の各テーブルに続いて更にアラーム情報テーブル３７、アラーム対処操作情報テーブル３６、及び操作・制御−プログラムテーブル４４を参照し、入替え対象となるプログラムを判別することもできる。このプログラム入替え判別部３９の処理の詳細は、図１５を参照して後述する。
【００４５】
なお、本実施の形態では、不具合があるプログラムを対象に入替え可否の判定を行うようにしているが、この構成に限られない。例えば、入替え対象となるプログラムは、過去のデータから不具合が発生する確率が高いプログラム、ＣＰＵ２１への負荷率が高いプログラム、あるいは既存製品の性能強化や機能追加がなされたエンハンスドプログラムなどでもよい。また、本実施の形態では、入替えプログラム４８を用いて、入替え対象となるプログラムの全部又は一部を入れ替えるものとする。
【００４６】
プログラム入替え時期判別部４０（入替え時期判別部の一例）は、プログラム入替え情報テーブル４５内の入替え否に設定されている入替え対象のプログラムについて、ハードウェア情報テーブル３３及び操作情報テーブル３５を参照し、入れ替えるべき時期を導出する。そして、プログラム入替え時期判別部４０は、その結果をプログラム入替え時期情報テーブル４６に格納する。
【００４７】
図１３は、プログラム入替え時期情報テーブル４６の構成例を示す。
プログラム入替え時期情報テーブル４６は、図１３に示すように「プログラム名フィールド」と、「入替え可否フィールド」と、「電子計算機名フィールド」と、「入替え時期フィールド」とを有する。
・プログラム名フィールドは、入替え対象となるプログラムの名称を示すフィールドである。
・入替え可否フィールドは、プログラム入替え情報テーブル４５のものと同様に、入替え対象となるプログラムについての入替えの可否を示すフィードである。
・電子計算機名フィールドは、不具合があるプログラムが実装されている端末（電子計算機）の名称を示すフィールドである。
・入替え時期フィールドは、入替え否に設定された入替え対象となるプログラムを入れ替えるべき時期を示すフィールドである。
【００４８】
プログラム入替え実行部４１（入替え実行部の一例）は、プログラム入替え情報テーブル４５内の入替え可に設定されている入替え対象のプログラムについて、入替えプログラム４８を使用して、プログラムの入替えを行う。また、プログラム入替え実行部４１は、定期修理情報テーブル４７を参照し、後述するアラームを出力する。
【００４９】
システム監理者は、予めプログラム管理端末１の不揮発性ストレージ２７に入替えプログラム４８を保存しておく。あるいは、ネットワークインターフェース２８を介して、外部のサーバから入替えプログラム４８を適宜ダウンロードし、不揮発性ストレージ２７に格納するようにしてもよい。
【００５０】
図１４は、定期修理情報テーブル４７の構成例を示す。
定期修理情報テーブル４７は、定期修理の実施時期と、定期修理の対象となる電子計算機とを格納する。図１４に示すように、定期修理情報テーブル４７は、「時期フィールド」と、「電子計算機名フィールド」とを有する。
・「時期フィールド」は、定期修理の時期もしくは期間を示すフィールドである。
・「電子計算機名フィールド」は、定期修理の対象となる電子計算機の名称を示すフィールドである。
【００５１】
（プログラム入替え判別部の処理の詳細）
次に、プログラム入替え判別部３９の処理について詳細に説明する。
図１５は、プログラム入替え判別部３９の処理例を示したフローチャートである。
【００５２】
まず、プログラム入替え判別部３９は、プログラム不具合情報判別部３８が作成した不具合−端末情報テーブル４３を参照し、不具合があるプログラムを抽出する。例えば、画面表示プログラムのように、常時実行（起動）されているプログラムは入れ替えることができない。そのため、プログラム入替え判別部３９は、操作・制御−プログラムテーブル４４を参照し、抽出したプログラムが常時実行プログラムであるか否かの判別を行う（ステップＳ１）。抽出したプログラムが常時実行プログラムである場合には、プログラム入替え判別部３９は、そのプログラムを入替え否に設定し、設定した内容をプログラム入替え情報テーブル４５に格納する（ステップＳ８）。
【００５３】
次に、プログラム入替え判別部３９は、常時実行プログラムでないプログラムに関して、操作・制御−プログラムテーブル４４を参照し、プログラムの入替え後にシステム即ち端末の再起動が必要であるか否かの判別を行う（ステップＳ２）。端末の再起動が必要である場合には、システム稼動中は端末の再起動を行うことができない。そのため、プログラムの入替え後に端末の再起動が必要である場合には、プログラム入替え判別部３９は、そのプログラムを入替え否に設定し、設定した内容をプログラム入替え情報テーブル４５に格納する（ステップＳ８）。
【００５４】
次に、プログラム入替え判別部３９は、プログラムの入替え後に端末の再起動が必要でないプログラムに関して、操作情報テーブル３５を参照し、当該プログラムに関係する操作の頻度が規定頻度よりも高いか否かの判別を行う（ステップＳ３）。操作頻度が規定頻度よりも高いプログラムは、プログラムの入替え中に操作が行われる可能性が高いため、プログラム入替え判別部３９は、そのプログラムを入替え否に設定し、設定した内容をプログラム入替え情報テーブル４５に格納する（ステップＳ８）。なお、規定頻度は予め設定されており、各端末に適用される電子計算機２０のＲＯＭ２２又は不揮発性ストレージ２７に格納される。
【００５５】
次に、プログラム入替え判別部３９は、操作頻度が規定頻度以下であるプログラムに関して、アラーム情報テーブル３７を参照し、現時点におけるアラームの発生の有無を判別する（ステップＳ４）。
【００５６】
アラームが発生している場合には、プログラム入替え判別部３９は、アラーム対処操作情報テーブル３６及び操作情報テーブル３５を確認し、そのプログラムがアラーム対処操作に関係するプログラムであるか否かを判定する(ステップＳ５)。アラーム対処操作に関係するプログラムが入替え対象になっている場合には、その対処操作によりプログラムが動作する可能性があるためプログラム入替えによる事故を防止する観点から、そのプログラムを入替え否に設定する。そして、設定した内容をプログラム入替え情報テーブル４５に格納する（ステップＳ８）。
【００５７】
ステップＳ４の判定処理においてアラームが発生していない場合には、プログラム入替え判別部３９は、そのプログラムを入替え可に設定し、設定した内容をプログラム入替え情報テーブル４５に格納する（ステップＳ６）。すなわち、プログラム入替え判別部３９は、上記ステップＳ１〜Ｓ５のいずれの条件も満たさないプログラムを、入替え可に設定する。
【００５８】
なお、ステップＳ１〜Ｓ３の条件は、プラントの動作に支障が出ないために必要な条件である。特にステップＳ１とステップＳ２の条件は、プログラムの実行を停止する可能性があるため、プラントの動作に支障が出ないためのより重要な条件である。よって、ステップＳ４，Ｓ５のアラームに関する条件を除いて、ステップＳ１〜ステップＳ３の条件に基づいてプログラムの入替え可否を判別するようにしてもよい。
【００５９】
次に、プログラム入替え判別部３９は、不具合−端末情報テーブル４３に格納された不具合があるすべてのプログラムについて、入替え可否の判別を実施したか否かを判断する（ステップＳ７）。そして、プログラム入替え判別部３９は、不具合があるすべてのプログラムについて入替え可否の判別を実施していない場合には、ステップＳ１に戻り、不具合があるすべてのプログラムについて入替え可否の判定が完了するまで、一連の処理を繰り返す。一方、不具合があるすべてのプログラムについて入替え可否の判別を実施した場合には、プログラムの入替え判別処理を終了する。
【００６０】
（プログラム入替え時期判別部の処理の詳細）
プログラム入替え判別部３９による不具合があるプログラムに対する入替え可否の判定が終了すると、プログラム入替え時期判別部４０は、入替え否と判別されたプログラムに関し、入れ替えるべき時期の判別を行う。具体的には、各種リーク（メモリリーク，ハンドルリーク，ファイルリークなど）が起きているプログラムに関しては、ハードウェア情報テーブル３３のハードウェアスペック、及び操作情報テーブル３５の操作頻度、及びプログラム不具合情報テーブル４２の影響度から、入替え時期を導出することができる。
【００６１】
すなわち、ハードウェア情報テーブル３３より、電子計算機のメモリ及びＨＤＤ等（これらは記憶部の一例）の使用量及び容量から記憶部の残容量（例えば、容量に対する残容量のパーセンテージ）が求められる。この記憶部の残容量と、操作情報テーブル３５から得られる不具合のあるプログラムが動作する頻度と、プログラム不具合情報テーブル４２から得られる不具合のあるプログラムが動作したときの影響度に基づいて、記憶部の残容量がなくなる時期が求められる。それにより、不具合のあるプログラムを入れ替えるべき時期が導出される。プログラム入替え時期判別部４０は、入替え時期を導出すると、その結果をプログラム入替え時期情報テーブル４６に格納する。
【００６２】
（プログラム入替え実行部の処理の詳細）
最後に、プログラム入替え判別部３９による不具合があるプログラムに対する入替え可否の判定、又はプログラム入替え時期判別部４０による入替え時期の導出が終了すると、プログラム入替え実行部４１は、プログラムの入替えを実行する。すなわち、プログラム入替え実行部４１は、プログラム入替え情報テーブル４５を参照し、入替え可に設定されているプログラムを、対応する入替えプログラム４８に入れ替える（ファイル置き換え、又はインストーラを使用しての入替え）。すなわち、プログラム入替え実行部４１は、入替え可に設定されたプログラムに関して、直ちに入替え処理を行うことが可能である。また、プログラム入替え実行部４１は、入替え否に設定されたプログラムに関して、プログラム入替え時期判別部４０により導出された入替え時期に入替え処理を行う。このように、端末（電子計算機）上で動作するプログラムとプラント監視制御システム１０との関係性を利用して、適切なタイミングで入替え処理が行われる。
【００６３】
また、プログラム入替え実行部４１は、プログラム入替え時期情報テーブル４６と、定期修理情報テーブル４７を参照し、プログラムの入替え時期が定期修理の時期よりも前になるものに関しては、アラームを発生させ、システム管理者又は監視員に通知する。例えば、表示部２５にアラームとしての警告メッセージを表示したり、音声で知らせたりする。
【００６４】
（本実施の形態による効果）
上述したように、本実施の形態では、不具合があると判別された入替え対象となるプログラム（入替え対象プログラム）は、常時実行されているか（第１の条件）、第２に入替えプログラムへ入れ替え後に当該入替え対象プログラムが実装された端末（電子計算機）の再起動が必要か（第２の条件）、及び、当該入替え対象プログラムに関連する操作の頻度が規定頻度よりも高いか（第３の条件）のいずれかの条件に該当するかを少なくとも判別する。入替え対象プログラムがこれらの第１〜第３の条件のいずれにも該当しない場合には、入替え対象プログラムを入替えプログラムに入替え可能であると設定する。そして、入替え対象プログラムと入替えの可否とを対応づけてプログラム入替え情報テーブル４５に格納する。
このように構成された本実施の形態は、端末（電子計算機）上で動作するプログラムとプラント監視制御システム１０との関係性を利用して、プログラム入替えの適切なタイミングを判別し、プログラムの自動入替えを行うことができる。また、ある特定の操作又は制御が行われる場合にのみ動作するプログラムに関しては、一定の判断基準の下でプログラムの自動入替えを行うことができる。それゆえ、プログラム入替えによる事故を防止できる。また、プラント監視制御システムや各端末を管理するシステム管理者の負担を軽減することができる。
【００６５】
また、上述した第１〜第３の条件は、第１の条件、第２の条件、そして第３の条件の順で優先度（重要度）が高い。したがって、この順番で入替え可否を判別し、入替え対象プログラムが条件に該当した場合には直ちに入替え否に設定し、以降の処理を行わないことで入替え判別処理を効率化し、ＣＰＵ２１の処理負荷を軽減できる。
【００６６】
また、プログラム入替え判別部３９は、入替え対象プログラムに関連する操作の頻度が規定頻度以下である場合には更にアラームの発生の有無を確認する。そして、アラームが発生している場合に、入替え対象プログラムがアラームに対処するための操作に関連しないプログラムであるとき、入替え対象プログラムを入替え可に設定する。このように、アラームの発生の有無を確認することにより、アラームが発生しても軽度又は緊急度の低いアラームであればプラント（プラント監視制御システム１０）を停止させないプラント特有の事情を反映させてプログラム入替えの可否を判別できる。
【００６７】
上術した本発明の一実施の形態において、プログラム管理端末１が各端末のプログラムの起動、監視及び自動入替えを行う構成としたが、このような機能をプログラム管理端末１ではなく、システム構築用端末３又はオペレータ端末４に搭載するようにしてもよい。あるいは、これらの機能を複数の端末に分散してもよい。
【００６８】
さらに、本発明は上述した各実施の形態例に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、その他種々の応用例、変形例を取り得ることは勿論である。
【００６９】
例えば、上述した実施の形態例は本発明を分かりやすく説明するために装置及びシステムの構成を詳細且つ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることは可能であり、更にはある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、置換をすることも可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【００７０】
また、本明細書において、時系列的な処理を記述する処理ステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）をも含むものである。
【符号の説明】
【００７１】
１…プログラム管理端末，  ３…システム構築用端末（ＥＮＧＳ），  ４…オペレータ端末（ＰＯＣ），  ６…コントローラ（ＰＣＳ），  １０…プラント監視制御システム  ３８…プログラム不具合情報判別部，  ３９…プログラム入替え判別部，  ４０…プログラム入替え時期判別部，  ４１…プログラム入替え実行部，  ４５…プログラム入替え情報テーブル，  ４８…入替えプログラム
【図１】
2016012186.tif 000003
【図２】
2016012186.tif 000004
【図３】
2016012186.tif 000005
【図４】
2016012186.tif 000006
【図５】
2016012186.tif 000007
【図６】
2016012186.tif 000008
【図７】
2016012186.tif 000009
【図８】
2016012186.tif 000010
【図９】
2016012186.tif 000011
【図１０】
2016012186.tif 000012
【図１１】
2016012186.tif 000013
【図１２】
2016012186.tif 000014
【図１３】
2016012186.tif 000015
【図１４】
2016012186.tif 000016
【図１５】
2016012186.tif 000017