(57)【特許請求の範囲】
【請求項１】
構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを保持し、保持した前記制御プログラムを実行することにより、制御対象プロセスを制御するコントローラと、
前記制御プログラムを改訂すると共に、改訂した前記制御プログラムを前記コントローラに設定する保守支援装置とを備えるプロセス制御システムであり、
前記保守支援装置は、
前記制御プログラムの改訂作業を実行すると共に、改訂作業が行われた際に、改訂された構成要素及びその改訂された構成要素が影響を与える上位となる構成要素に対して、既に使用された識別符号よりも値が増加する新たな識別符号を付与する制御プログラム改訂部と、
前記制御プログラム改訂部で改訂された制御プログラムの構成要素に付与された識別符号の中の最大の値を、改訂された制御プログラムの識別符号として、前記コントローラに配信する制御プログラム配信部とを備える
プロセス制御システム。
【請求項２】
前記制御プログラム改訂部は、改訂された構成要素及びその改訂された構成要素が影響を与える構成要素に対して新たな識別符号を付与する際に、所定値ずつ値が単調増加する識別符号とし、
前記制御プログラム配信部が付与した制御プログラムの識別符号と、改訂前の制御プログラムの識別符号との差分が、改訂された制御プログラムの改訂規模を示すようにした
請求項１に記載のプロセス制御システム。
【請求項３】
前記保守支援装置は、制御プログラムの承認部を備え、
前記承認部は、それぞれの構成要素の識別符号の一致又は不一致により改訂が行われた構成要素を判断し、その判断に基づいて構成要素の改訂の有無を前記コントローラに通知する
請求項１に記載のプロセス制御システム。
【請求項４】
前記コントローラは、前記制御プログラム配信部から配信された改訂された制御プログラムの識別符号と、改訂前の制御プログラムの識別符号との差分から判断される改訂規模に基づいて、改訂された制御プログラムの実行の管理を行う
請求項１に記載のプロセス制御システム。
【請求項５】
前記コントローラとして、制御対象プロセスを制御する主系コントローラと、前記主系コントローラに異常が生じた場合に、前記主系コントローラに代わって制御対象プロセスを制御する待機系コントローラとを備え、
前記主系コントローラが制御対象プロセスを制御中に、前記保守支援装置は、前記待機系コントローラの制御プログラムを改訂された制御プログラムに更新するオンライン保守を行うと共に、
前記待機系コントローラは、前記オンライン保守を行う際に、前記主系コントローラが実行中の制御プログラムの識別符号と、更新後の制御プログラムの識別符号との差分が、予め設定された閾値以内である場合に、前記オンライン保守を許可し、前記閾値を越える場合に、前記オンライン保守が行えないように制限する
請求項１に記載のプロセス制御システム。
【請求項６】
前記制御プログラム改訂部は、改訂された構成要素及びその改訂された構成要素が影響を与える構成要素に対して、既に使用された識別符号よりも値が増加する新たな識別符号を付与する際に、構成要素の種類又は改修の程度によって、識別符号の値を増加する際の増加値を可変に設定するようにした
請求項１〜５のいずれか１項に記載のプロセス制御システム。
【請求項７】
構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを改訂すると共に、改訂した前記制御プログラムを、制御対象プロセスを制御するコントローラに配信する保守支援装置であり、
前記制御プログラムの改訂作業を実行すると共に、改訂作業が行われた際に、改訂された構成要素及びその改訂された構成要素が影響を与える構成要素に対して、既に使用された識別符号よりも値が増加する新たな識別符号を付与する制御プログラム改訂部と、
前記制御プログラム改訂部で改訂された制御プログラムの構成要素に付与された識別符号の中の最大の値を、改訂された制御プログラムの識別符号として、前記コントローラに配信する制御プログラム配信部とを備える
保守支援装置。
【請求項８】
構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを記憶する制御プログラム記憶部と、
前記制御プログラム記憶部が記憶した制御プログラムにより、制御対象プロセスを制御する制御処理部と、
前記制御プログラム記憶部が記憶した制御プログラムが更新されたとき、更新前の制御プログラムの識別符号と、更新後の制御プログラムの識別符号との差分が、予め設定された閾値以内である場合に、制御プログラムの更新を許可し、前記閾値を越える場合に、更新された制御プログラムの実行を制限する実行プログラム管理部とを備える
コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プラント装置を制御するプロセス制御システム、及び、そのプロセス制御システムが備える保守支援装置及びコントローラに関する。
【背景技術】
【０００２】
発電所や工場などでは、各種のプラントの操業停止は、即、製品の生産量の低下、ひいては、売上高や収益の低下をもたらす。そのため、できる限りプラントの操業停止に至ることのない運用ができることが望まれている。
システムを停止させてしまうような異常を起こさないためには、プロセス制御を行う制御プログラムの適切な管理が重要である。このため、動作に影響を与えるような制御プログラムの改訂を確実に検出して、システムの運用者が、その改訂範囲が必要十分であることを確認でき、その改訂の内容が正しいかをクロスチェックできるようにすることが重要である。このようにシステムの運用者が制御プログラムの改訂を管理できるようにすることで、誤った制御プログラムの更新を防ぎ、システムの稼働率を高めることができる。
【０００３】
上述した制御プログラムの改訂の管理を行うために、従来は、制御プログラムごとにＩＤを付与し、改訂管理を実施するようにしている。例えば、特許文献１に開示されたバージョンチェック方式では管理対象のＩＤとして生成日の日付情報を用いている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２４２４９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プラント装置を制御するプロセス制御システムにおいて、大規模な制御プログラム改訂を実施する場合、更新作業手順が複雑になることは避けられない。このとき、更新プログラムの対象誤りや更新漏れを起こす可能性があり、また、影響を受ける可能性のある機能が広範囲にわたるため、制御プログラムの動作確認漏れが発生しやすい。このような制御プログラムの動作確認漏れが発生したとき、不具合を残したまま運用に至ってしまう恐れがある。
【０００６】
また、プログラム改訂が大規模になる場合、プログラムの改訂作業を複数の装置で分担することがある。このとき、特許文献１に記載されるような日付情報によるバージョン管理では、装置ごとの時刻設定のずれや時差により、改訂順の前後関係が崩れることがあり、最新プログラムを誤って判断してしまう可能性がある。また、ハッシュ値などによるＩＤ付けをした場合にも、プログラムファイルとしての更新しか検出できないため、プログラムの改訂がシステムの動作にどれほどの影響を与えるかを把握することができず、適切な作業計画を立てることができない。
【０００７】
本発明は、制御プログラムが改訂された際の、更新内容の確認や認証処理が容易かつ確実に行えるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプロセス制御システムは、構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを保持し、保持した制御プログラムを実行することにより、制御対象プロセスを制御するコントローラと、制御プログラムを改訂すると共に、改訂した制御プログラムをコントローラに設定する保守支援装置とを備えるプロセス制御システムである。
保守支援装置は、制御プログラムの改訂作業を実行すると共に、改訂作業が行われた際に、改訂された構成要素及びその改訂された構成要素の上位となる構成要素に対して、既に使用された識別符号よりも値が増加する新たな識別符号を付与する制御プログラム改訂部と、制御プログラム改訂部で改訂された制御プログラムの構成要素に付与された識別符号の中の最大の値を、改訂された制御プログラムの識別符号として、コントローラに配信する制御プログラム配信部とを備える。
【０００９】
本発明の保守支援装置は、構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを改訂すると共に、改訂した制御プログラムを、制御対象プロセスを制御するコントローラに配信する保守支援装置である。
そして、制御プログラムの改訂作業を実行すると共に、改訂作業が行われた際に、改訂された構成要素及びその改訂された構成要素が影響を与える構成要素に対して、既に使用された識別符号よりも値が増加する新たな識別符号を付与する制御プログラム改訂部と、
前記制御プログラム改訂部で改訂された制御プログラムの構成要素に付与された識別符号の中の最大の値を、改訂された制御プログラムの識別符号として、前記コントローラに配信する制御プログラム配信部とを備える。
【００１０】
本発明のコントローラは、構成要素毎に数値として判断できる個別の識別符号が付与された制御プログラムを記憶する制御プログラム記憶部と、制御プログラム記憶部が記憶した制御プログラムにより、制御対象プロセスを制御する制御処理部と、制御プログラム記憶部が記憶した制御プログラムが更新されたとき、更新前の制御プログラムの識別符号と、更新後の制御プログラムの識別符号との差分が、予め設定された閾値以内である場合に、制御プログラムの更新を許可し、閾値を越える場合に、更新された制御プログラムの実行を制限する実行プログラム管理部とを備える。
【発明の効果】
【００１１】
本発明によると、制御プログラムの更新を、誤り無く正確に実施することができる。また、更新作業を行う際に作業者の判断ミスを排除できると共に、作業計画の誤りを防ぐことができる。したがって、本発明によると制御プログラム更新時の不具合を排除できるので、稼働率の高いシステム運用を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施の形態例によるシステム全体の構成例を示すブロック図である。
【図２】本発明の一実施の形態例によるプログラム改訂手順の例を示すフローチャートである。
【図３】本発明の一実施の形態例による構成要素とプログラムにＩＤを付与する処理の例を示すフローチャートである。
【図４】本発明の一実施の形態例による制御プログラムの内部構成例とＩＤの付与例（例１）を示す図である。
【図５】本発明の一実施の形態例による制御プログラムの内部構成例とＩＤの付与例（例２）を示す図である。
【図６】本発明の一実施の形態例による制御プログラムの内部構成例とＩＤの付与例（例３）を示す図である。
【図７】本発明の一実施の形態例による制御プログラムの内部構成例とＩＤの付与例（例４）を示す図である。
【図８】本発明の一実施の形態例による保守支援装置による処理例を示すフローチャートである。
【図９】本発明の一実施の形態例による保守支援装置による処理例を示すフローチャート（図８の続き）である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施の形態例（以下、「本例」と称する。）を、添付図面を参照して説明する。
［１．システムの全体構成］
図１は、プロセス制御システム１００の全体構成例を示す。
プロセス制御システム１００は、２重化されたコントローラ１ａ，１ｂを備えた制御システムである。すなわち、プロセス制御システム１００は、プロセス入出力装置２を介して制御対象プロセス３を制御する２つのコントローラ１ａ，１ｂと、通信ネットワーク４を介して２つのコントローラ１ａ，１ｂに接続された保守支援装置５とを含んで構成される。２つのコントローラ１ａ，１ｂの内の一方のコントローラ１ａをＡ系と称し、他方のコントローラ１ｂをＢ系と称する。ここでは、Ａ系のコントローラ１ａは主系であり、Ｂ系のコントローラ１ｂは待機系である。但し、後述するように主系と待機系は制御状況により入れ替わる。
【００１４】
Ａ系のコントローラ１ａは、コントローラ記憶部１０ａと、コントローラ処理部１１ａとで構成される。コントローラ記憶部１０ａに記憶される情報には、承認ＩＤテーブル１２ａが含まれる。コントローラ処理部１１ａは、実行プログラム管理部１３ａと、状態制御部１４ａと、制御処理部１５ａとを備える。制御処理部１５ａには、実行用制御プログラム１６ａが記憶される。実行用制御プログラム１６ａは、制御処理部１５ａ内の制御プログラム記憶部（不図示）に記憶される。コントローラ１ａが主系であるとき、制御処理部１５ａは、この実行用制御プログラム１６ａの実行で、プロセス入出力装置２を介して制御対象プロセス３を制御する。
Ｂ系のコントローラ１ｂについても、Ａ系のコントローラ１ａと同じ構成である。すなわち、Ｂ系のコントローラ１ｂは、コントローラ記憶部１０ｂと、コントローラ処理部１１ｂとで構成される。コントローラ記憶部１０ｂに記憶される情報には、承認ＩＤテーブル１２ｂが含まれる。コントローラ処理部１１ｂは、実行プログラム管理部１３ｂと、状態制御部１４ｂと、制御処理部１５ｂとを備える。制御処理部１５ｂには、実行用制御プログラム１６ｂが記憶される。実行用制御プログラム１６ｂは、制御処理部１５ｂ内の制御プログラム記憶部（不図示）に記憶される。コントローラ１ａの代わりにコントローラ１ｂが主系となる場合には、制御処理部１５ｂは、この実行用制御プログラム１６ｂの実行で、プロセス入出力装置２を介して制御対象プロセス３を制御する。
【００１５】
制御処理部１５ａ，１５ｂは、例えば、汎用のマイクロプロセッサやＦＰＧＡ（Field-Programmable Gate Array）を用いた演算処理装置と半導体メモリによる記憶装置とによって構成される。そして、実行用制御プログラム１６ａ，１６ｂは、各制御処理部１５ａ，１５ｂの記憶装置に記憶された情報である。演算処理装置は、実行用制御プログラム１６ａ，１６ｂを実行することによって所定の制御動作を実現する。また、承認ＩＤテーブル１２ａ，１２ｂには、承認済制御データのＩＤが記憶される。
【００１６】
状態制御部１４ａ，１４ｂは、制御プログラム１６ａ，１６ｂの更新や保守のために保守支援装置５から送信される、コントローラ状態遷移要求を受信する。そして、その受信した内容により、状態制御部１４ａ，１４ｂがコントローラ１ａ，１ｂの停止及び運転の管理を行う。
実行プログラム管理部１３ａ，１３ｂは、コントローラ１ａ，１ｂが状態制御部１４ａ，１４ｂにより運転状態に遷移する際に、実行する制御プログラム１６ａ，１６ｂが実行可能かどうかをチェックする。
具体的には、実行プログラム管理部１３ａ，１３ｂは、まず実行用制御プログラム１６ａ，１６ｂが承認済みか否かを、承認ＩＤテーブル１２ａ，１２ｂを参照してチェックする。次に、実行プログラム管理部１３ａ，１３ｂは、これから実行しようとしている制御プログラム１６ａ，１６ｂが、もう一方の系の制御プログラムと機能が乖離していないかどうかをチェックする。チェックの結果、実行プログラム管理部１３ａ，１３ｂは実行用制御プログラム１６が実行不可と判断した場合には、状態制御部１４ａ，１４ｂにその旨を返し、状態遷移処理を中断させる。
【００１７】
制御処理部１５ａ，１５ｂは、制御プログラム１６ａ，１６ｂの指示に従って制御対象プロセス３からプロセス入出力装置２を介してプロセスデータを入力し、制御データを演算する。そして、制御処理部１５ａ，１５ｂは、演算した制御データの一部を、プロセス入出力装置２を介して制御対象プロセス３へ出力する。
【００１８】
保守支援装置５は、保守機能処理部５０と、保守データ記憶部５１とを備える。保守機能処理部５０は、制御プログラムエディタ部５２と、制御プログラムコンパイラ部５３と、制御プログラム配信部５４と、制御プログラム比較部５５と、制御プログラム承認部５６とを有する。制御プログラムエディタ部５２と制御プログラムコンパイラ部５３は、制御プログラムを改訂する制御プログラム改訂部として機能する。
保守データ記憶部５１に記憶されるデータには、制御プログラムソース５７、付与ＩＤデータ５８、及び配布用制御プログラム５９が含まれる。
この保守支援装置５は、演算処理装置と半導体メモリなどを備えたコンピュータ装置によって構成され、キーボードやマウスなどの入力装置６０や、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）などの表示装置６１が接続されている。
【００１９】
制御プログラムエディタ部５２は、表示装置６１などに対するグラフィカルなユーザインタフェースを有し、入力装置６０を介してユーザの操作入力を受け付けて、制御プログラムソース５７の新規作成や、既存の制御プログラムソース５７の改訂を行う。ここでの改訂には、制御プログラムソース５７の一部の構成要素を書き換える修正の他に、制御プログラムソース５７の構成要素の追加などの、制御プログラムソース５７の一部を変更する種々の処理が含まれる。
制御プログラムソース５７の改訂内容がプログラムの動作に影響がある場合、制御プログラムエディタ部５２は、制御プログラムソース５７の改訂した構成要素及び影響箇所に、新たにＩＤを付与する。このＩＤは、付与ＩＤデータ５８に記録されており、付与する毎に制御プログラムエディタ部５２が付与ＩＤデータ５８を元の値に加算した値で更新する。例えば、元の値に１つ加算した値に更新する。付与ＩＤデータ５８に記録されるＩＤは制御プログラムの構成要素毎に付与されるため、１つの制御プログラムは複数のＩＤを持つ。ＩＤの付与例については後述する。
【００２０】
制御プログラムコンパイラ部５３は、制御プログラムソース５７をコンピュータ装置が実行可能な形式のプログラムに変換するコンパイル処理を行い、コントローラ１ａ，１ｂにおける実行プログラムモジュールである配布用制御プログラム５９を作成する。このとき、ソース中に書き込まれていたＩＤを配布用制御プログラム５９に付与する。
こうして作成された制御プログラムソース５７と配布用制御プログラム５９は、いったん保守支援装置５の保守データ記憶部５１に記憶される。そして、配布用制御プログラム５９は制御プログラム配信部５４により、待機系であるＢ系コントローラ１ｂへ配信され、実行用制御プログラム１６ｂが改訂される。
【００２１】
また、制御プログラムソース５７の改訂があった際に承認を行う作業者は、制御プログラム比較部５５により、これから更新する配布用制御プログラム５９と、既に運用されている実行用制御プログラム１６ｂを比較し、その更新内容が正しいかを比較する。この比較で、更新内容が妥当であると承認作業者が判断した場合、制御プログラム承認部５６は、制御プログラムの構成要素毎の承認ＩＤを管理する承認ＩＤテーブル１２ｂに、承認ＩＤを設定する。
また、改訂された実行用制御プログラム１６ｂが承認され、作業者により動作の確認が行われた後、主系がＡ系コントローラ１ａからＢ系コントローラ１ｂに切り替えられる。そして、改訂された実行用制御プログラム１６ｂがセットされたＢ系コントローラ１ｂにより、制御対象プロセス３が制御される。その後、待機系となったＡ系コントローラ１ａへ、配布用制御プログラム５９が配信され、実行用制御プログラム１６ａについても改訂される。
【００２２】
［２．制御プログラム改訂時の処理の流れ］
図２は、ユーザが保守支援装置５の上でプログラムを改訂する手順と、それにより実行される処理の流れを示すフローチャートである。
まず、改訂作業者が、保守支援装置５を使用して、制御プログラムを改訂し、改訂された制御プログラムを保存する（ステップＳ１１）。このとき、制御プログラムエディタ部５２が、改訂された制御プログラムソース５７に付与ＩＤデータ５８で管理されているＩＤ５７１を付与して出力する。制御プログラムソース５７は複数出力可能で、それぞれにＩＤが付与される。例えば、図２に示すように、改訂された制御プログラムソース５７−１，５７−２，５７−３が存在するとき、それぞれにＩＤ５７１−１，５７１−２，５７１−３が付与される。
【００２３】
次に、改訂作業者がコンパイル操作を行うと（ステップＳ１２）、制御プログラムコンパイラ部５３が、制御プログラムソース５７を元に配布用制御プログラム５９を出力する。このとき、配布用制御プログラム５９には、ＩＤ５７１と同一のＩＤ５９１が付与される。配布用制御プログラム５９は複数出力可能で、それぞれにＩＤが付与される。例えば、図２に示すように、改訂された配布用制御プログラム５９−１，５９−２，５９−３が存在するとき、それぞれにＩＤ５９１−１，５９１−２，５９１−３が付与される。
【００２４】
次に、改訂作業者がダウンロード操作を行うと（ステップＳ１３）、制御プログラム配信部５４が、配布用制御プログラム５９を、待機系のコントローラ（Ａ系コントローラ１ａ又はＢ系コントローラ１ｂ）に配信する。配信された配布用制御プログラム５９は、制御処理部１５ａ又は１５ｂの実行用制御プログラム１６ａ又は１６ｂに上書きコピーされる。このとき、上書きコピーされた実行用制御プログラム１６ａ又は１６ｂのＩＤ１６１ａ又は１６１ｂについても、配布用制御プログラム５９のＩＤ５９１と同一のものに上書きされる。例えば、図２に示すように、改訂された実行用制御プログラム１６−１，１６−２，１６−３が存在するとき、それぞれのＩＤ１６１−１，１６１−２，１６１−３も書き換えられる。
【００２５】
その後、承認を行う作業者は、保守支援装置５上で、配布用制御プログラム５９と改訂前の実行用制御プログラム１６ａ又は１６ｂとの比較確認を行う（ステップＳ１４）。このとき、制御プログラム比較部５５が、配布用制御プログラム５９の改訂された構成要素などを表示装置６１に表示させる。そして、承認を行う作業者が、改訂された制御プログラムの承認操作を行うと（ステップＳ１５）、制御プログラム承認部５６は、承認対象となる制御プログラムのＩＤ値に承認ＩＤ１６１を設定する。すなわち、制御プログラム承認部５６は、承認ＩＤテーブル１２ａ又は１２ｂ上の該当ＩＤの値と、実行用制御プログラム１６ａ又は１６ｂのＩＤとを一致させる。
【００２６】
最後に、作業者は、コントローラ１ａ又は１ｂ上で制御処理部１５ａ又は１５ｂを実行させ、制御処理部１５ａ又は１５ｂにセットされた実行用制御プログラム１６ａ又は１６ｂを作動させ、実行結果を保守支援装置５に出力する。作業者は、出力内容を確認する。
【００２７】
［３．制御プログラム改訂時のＩＤ付与処理］
図３のフローチャートは、制御プログラム改訂時のＩＤ付与処理の例を示す。
制御プログラムエディタ部５２は、改訂された制御プログラムソース５７と改訂前の制御プログラムソース５７とを比較し、更新された構成要素を判断する（ステップＳ１０１）。ここでの更新された構成要素には、処理を示す構成要素の他に、関数を示す構成要素も含まれる。
【００２８】
さらに、ステップＳ１０１で判断した構成要素が変更されたとき、処理内容に影響を与える他の構成要素があるか否かを判断する（ステップＳ１０２）。ここで、処理内容に影響を与える他の構成要素がある場合（ステップＳ１０２のＹｅｓ）には、更新された構成要素と、影響を与える構成要素に付与されたＩＤを削除する（ステップＳ１０３）。また、処理内容に影響を与える他の構成要素がない場合（ステップＳ１０２のＮｏ）には、更新された構成要素に付与されたＩＤを削除する（ステップＳ１０４）。
【００２９】
次に、制御プログラムエディタ部５２は、ＩＤを削除した構成要素に対して、新たにＩＤを付与する（ステップＳ１０５）。このときには、制御プログラムエディタ部５２は、付与ＩＤデータ５８として既に付与されたＩＤの最も大きな値から、１つずつ値を加算したＩＤを、各構成要素に順に付与する。但し、値を１つ加算するのは１つの例であり、後述するように、１を越える値を加算する場合もある。
【００３０】
ステップＳ１０５でのＩＤの付与処理が終了すると、制御プログラムエディタ部５２は、ステップＳ１０５で各構成要素に付与したＩＤの中で最も大きな値を、改訂された制御プログラムソース５７のＩＤに設定する（ステップＳ１０６）。ステップＳ１０６で制御プログラムソース５７のＩＤが設定されると、保守データ記憶部５１に記憶された制御プログラムソース５７のＩＤ５７１が、設定された値に更新される。ＩＤ５７１が更新されることで、配布用制御プログラム５９のＩＤ５９１や実行用制御プログラム１６ａ，１６ｂのＩＤ１６１ａ，１６１ｂについても、改訂された制御プログラムの配布時などに更新される。
【００３１】
なお、保守支援装置５の制御プログラム承認部５６は、制御プログラムの改訂前と改訂後とで、それぞれの構成要素のＩＤの一致又は不一致により改訂が行われた構成要素を判断する。そして、制御プログラム承認部５６は、その判断に基づいて構成要素の改訂の有無をコントローラ１ａ，１ｂに通知する。
【００３２】
［４．ＩＤ付与処理の例（例１）］
図４は、制御プログラムの一部の構成要素が改訂されたときの、ＩＤの付与処理の例（例１）を示す。
ここでは、８個の構成要素の制御プログラムＡをツリー構造で示す。改訂前の初期状態Ｃ１１では、それぞれの構成要素に個別のＩＤが付与されている。すなわち、最も上位の要素ＣＰＵ−Ａの下に、タスク−Ｌとタスク−Ｍが存在し、タスク−Ｌの下位には処理−Ｐが存在する。また、処理−Ｐの下位には、関数−Ｖと関数−Ｗが存在する。さらに、処理−Ｑの下位には、関数−Ｘが存在する。このとき、図４に示すように、状態Ｃ１１のプログラムの８個の構成要素に、「１」から「８」のＩＤが個別に付与されている。図４のカッコ内の値がＩＤである。
この初期状態Ｃ１１では、構成要素のＩＤの最大値である「８」が、制御プログラムＡのＩＤである。
【００３３】
そして、初期状態Ｃ１１から、作業者による制御プログラムの改訂で、処理−Ｑを改訂した状態Ｃ１２に変化したとする。このとき、制御プログラムエディタ部５２は、処理−ＱのＩＤ（６）を削除する。図４では、カッコ内のＩＤ値を空欄として、ＩＤが削除された状態を示す。
また、処理−Ｑの改訂が、処理内容に影響を与える可能性がある他の構成要素のＩＤについても削除する。ここでは、処理−Ｑの構成要素よりも上位の構成要素である、タスク−Ｍと、タスク−Ｍのさらに上位の構成要素である、ＣＰＵ−Ａについても、ＩＤを削除する。
【００３４】
そして、改訂された制御プログラムの保存時の状態Ｃ１３では、処理−Ｑと、タスク−Ｍと、ＣＰＵ−Ａに、新たなＩＤが付与される。このときには、改訂前の構成要素のＩＤの最大値が「８」であり、次に付与されるＩＤは、「８」に１つ加算した値である「９」からになる。この例では、ＩＤが付与されていない要素の最下位は処理-Ｑであるため、処理−ＱのＩＤを「９」とする。以降下位の要素から順に、値を１つずつ加算して、タスク-Ｍに「１０」を、ＣＰＵ−Ａに「１１」を付与する。
そして、改訂された制御プログラムＡのＩＤは、これら要素のＩＤの最大値であるため、「１１」とする。
【００３５】
［５．ＩＤ付与処理の例（例２）］
図５は、制御プログラムの一部の構成要素が改訂されたときの、ＩＤの付与処理の例（例２）を示す。図５の例の初期状態Ｃ１１の制御プログラムＡは、図４の例の初期状態Ｃ１１の制御プログラムＡと同じである。
この初期状態Ｃ１１では、構成要素のＩＤの最大値である「８」が、制御プログラムＡのＩＤである。
【００３６】
そして、初期状態Ｃ１１から、作業者による制御プログラムの改訂で、タスク−Ｍを改訂した状態Ｃ１４に変化したとする。このとき、制御プログラムエディタ部５２は、タスク−ＭのＩＤ（７）を削除する。また、タスク−Ｍの改訂が、処理内容に影響を与える可能性がある他の構成要素のＩＤについても削除する。ここでは、タスク−Ｍの上位の構成要素である、ＣＰＵ−ＡのＩＤを削除する。カッコ内のＩＤ値が空欄のものが、ＩＤが削除された状態である。
【００３７】
そして、改訂された制御プログラムの保存時の状態Ｃ１５では、タスク−Ｍと、ＣＰＵ−Ａに、新たなＩＤが付与される。このときには、改訂前の構成要素のＩＤの最大値が「８」であり、タスク-Ｍを「９」とし、ＣＰＵ−Ａを「１０」とする。
そして、改訂された制御プログラムＡのＩＤは、これら要素のＩＤの最大値であるため、「１０」とする。
【００３８】
［６．ＩＤ付与処理の例（例３）］
図６は、制御プログラムの一部の構成要素が改訂されたときの、ＩＤの付与処理の例（例３）を示す。図６の例の初期状態Ｃ１１の制御プログラムＡは、図４の例の初期状態Ｃ１１の制御プログラムＡと同じである。
この初期状態Ｃ１１では、構成要素のＩＤの最大値である「８」が、制御プログラムＡのＩＤである。
【００３９】
そして、初期状態Ｃ１１から、作業者による制御プログラムの改訂で、関数−Ｘを改訂した状態Ｃ１６に変化したとする。このとき、制御プログラムエディタ部５２は、関数−ＸのＩＤ（３）を削除する。
また、関数−Ｘの改訂が、処理内容に影響を与える可能性がある他の構成要素のＩＤについても削除する。ここでは、タスク−Ｍの上位の構成要素である、処理−Ｑとタスク−ＭとＣＰＵ−ＡのＩＤを削除する。カッコ内のＩＤ値が空欄のものが、ＩＤが削除された状態である。
【００４０】
そして、改訂された制御プログラムの保存時の状態Ｃ１７では、関数−Ｘと、処理−Ｑと、タスク−Ｍと、ＣＰＵ−Ａに、新たなＩＤが付与される。このときには、改訂前の構成要素のＩＤの最大値が「８」であり、関数−Ｘを「９」とし、処理−Ｑを「１０」とし、タスク-Ｍを「１１」とし、ＣＰＵ−Ａを「１２」とする。
そして、改訂された制御プログラムＡのＩＤは、これら要素のＩＤの最大値であるため、「１２」とする。
【００４１】
［７．ＩＤ付与処理の例（例４）］
図７は、制御プログラムの一部の構成要素が改訂されたときの、ＩＤの付与処理の例（例３）を示す。図７の例の初期状態Ｃ１１の制御プログラムＡは、図４の例の初期状態Ｃ１１の制御プログラムＡと同じである。
この初期状態Ｃ１１では、構成要素のＩＤの最大値である「８」が、制御プログラムＡのＩＤである。
そして、初期状態Ｃ１１から、作業者による制御プログラムの改訂で、処理−Ｑを改訂した状態Ｃ１８に変化したとする。このとき、制御プログラムエディタ部５２は、処理−ＱのＩＤ（６）を削除する。
ここでは、処理−Ｑの改訂が、他の構成要素には影響を及ぼさないとする。あるいは、ＩＤを管理する上では、処理−Ｑの改訂が上位の構成要素であるタスク−ＭやＣＰＵ−Ａへの影響が無視できるとする。この場合、図７に示す状態Ｃ１８のように、タスク−ＭやＣＰＵ−ＡのＩＤは削除しない。
【００４２】
そして、改訂された制御プログラムの保存時の状態Ｃ１９では、処理−Ｑに、新たなＩＤが付与される。このときには、改訂前の構成要素のＩＤの最大値が「８」であり、次に付与されるＩＤは、「８」に１つ加算した値である「９」になる。そして、改訂された制御プログラムＡのＩＤは、付与したＩＤの最大値であるため、「９」になる。
なお、図４〜図７に示す各構成要素のＩＤ付与状態は一つの例であり、後述する変形例で説明するように、その他のＩＤ付与状態としてもよい。
【００４３】
［８．コントローラでの制御プログラムの更新例］
図８及び図９は、実行用制御プログラム１６ａ，１６ｂが更新された際に、コントローラ１ａ，１ｂでの切り替え処理を示すフローチャートである。
図８及び図９の左側は保守支援装置５における処理を示し、図８及び図９の右側はコントローラ１ａ，１ｂの状態を示す。図８に示すように、最初の状態Ｃ２１では、Ａ系コントローラ１ａが主系であり、Ｂ系コントローラ１ｂが待機系である。ここで、オンライン運転状態とは、主系の場合、制御対象プロセス３に対し制御データの出力動作を行っている状態、待機系の場合、主系と同じ制御プログラムを実行していつでも主系への切替えが可能な状態をいう。
【００４４】
まず保守支援装置５は、状態Ｃ２１のときに、待機系のＢ系コントローラ１ｂへ停止要求を送信する（ステップＳ２１）。Ｂ系コントローラ１ｂの状態制御部１４ｂは、その停止要求を受信すると、自装置を停止状態にする（状態Ｃ２２）。ここでの停止状態とは、制御プログラム１６ｂの実行を停止した状態をいう。したがって、状態Ｃ２２では、Ｂ系コントローラ１ｂは、いわゆるホットスタンバイが解除された状態になる。
この状態で、保守支援装置５は、状態Ｃ２２の待機系のＢ系コントローラ１ｂに、改訂された制御プログラム５９を送信する（ステップＳ２２）。Ｂ系コントローラ１ｂは、その制御プログラム５９を受信して、制御プログラム１６ｂを、改訂された制御プログラム５９に更新する。
【００４５】
次に保守支援装置５は、待機系のＢ系コントローラ１ｂに、オフライン運転要求を送信する（ステップＳ２３）。Ｂ系コントローラ１ｂの状態制御部１４ｂは、そのオフライン運転要求を受信すると、自装置を待機系オフライン運転状態にする（状態Ｃ２３）。ここで、オフライン運転状態とは、待機系のＢ系コントローラ１ｂが制御プログラム１６ｂの実行を開始し、その動作の正否を確認している状態である。この動作の正否の判断は、例えば、Ｂ系コントローラ１ｂがＡ系コントローラ１ａから送信される一致化用制御データを、自装置で得られた制御データと比較することによって行うことができる。
【００４６】
ここで、待機系のＢ系コントローラ１ｂがオフライン運転状態では、制御プログラム１６ｂの実行を開始する直前に、作業者が意図した制御プログラムがコントローラ１ｂ上で動作しているかどうかをチェックする処理が行われる。すなわち、Ｂ系コントローラ１ｂの実行プログラム管理部１３ｂは、制御プログラム１６ｂの承認状態を判定する。
まず、実行プログラム管理部１３ｂは、制御プログラム１６ｂが承認済みか否かを判断する（ステップＳ２４）。ここでは、実行プログラム管理部１３ｂは、承認ＩＤテーブル１２にＩＤが登録されているか否かを判断して、承認済みか未承認かを判断する。
ここで、承認ＩＤテーブル１２ｂにＩＤが登録されていなければ未承認の状態（ステップＳ２４のＮｏ）であり、実行プログラム管理部１３ｂは処理を中断し、未承認であることを表示装置６１などで作業者に通知する。そして、作業者が制御プログラム５９をさらに改訂するなどの対策を行った後、ステップＳ２１からの処理を再度実行する。また、承認ＩＤテーブル１２にＩＤが登録されていれば承認済（ステップＳ２４のＹｅｓ）であり、実行プログラム管理部１３ｂは処理を続行し、ステップＳ２５の判断に移る。
【００４７】
次に、実行プログラム管理部１３ｂは、Ａ系コントローラ１ａの承認ＩＤテーブル１２ａに記録されている承認ＩＤデータを、Ｂ系コントローラ１ｂのコントローラ記憶部１０ｂ上にコピーする。そして、実行プログラム管理部１３ｂは、そのコピーした承認ＩＤデータの値と、待機系の承認ＩＤテーブル１２ｂとのＩＤの値を比較し、両者のＩＤの値の差を判定する（ステップＳ２５）。
ステップＳ２５でのＩＤの差の判断は、例えば図４に示す更新前の状態Ｃ１１の制御プログラムＡのＩＤ「８」と、更新後の状態１３の制御プログラムＡのＩＤ「１１」とを比較することに相当する。このＩＤの値の差を判定することは、制御プログラムの改訂規模が、規定値（規定された規模）を超えるか否かを判定することになる。
【００４８】
ここでのＩＤの差の規定値はシステムの特性に応じて予め設定される。改訂規模がこの規定値を超えた場合、オンライン運転中の更新は、プログラム改訂の影響が大きく十分な動作確認ができないことが予想されるため、システム停止してプログラム更新を行うべきという指針にて決定しておく。具体的には、例えば規定値を「１」又は「２」のような比較的小さな値に設定する。
【００４９】
ステップＳ２５の判断で、規定値を超えていた場合（ステップＳ２５でＮｏ）、保守支援装置５は、オンライン保守を中断し、改造規模が大きくオンライン保守できないことを表示装置６１などで作業者に通知する。この通知を確認した作業者は、別の検査環境でシミュレーションを行って動作確認を行い、更新作業を行う。また、ステップＳ２５の判断で、改訂規模が規定値内の場合（ステップＳ２５でＹｅｓ）、処理を続行する。
【００５０】
次に作業者は、制御プログラムの１６ｂの動作確認を行い、Ｂ系コントローラ１ｂの動作が正しいか否かを判断する（ステップＳ２６）。ここで、Ｂ系コントローラ１ｂの動作が正しいことを確認できなかった場合（ステップＳ２６でＮｏ）、処理を中断する。そして、作業者が制御プログラム５９をさらに改訂するなどの対策をして、ステップＳ２１以下の処理を再度実行する。
【００５１】
ステップＳ２６でＢ系コントローラ１ｂの動作が正しいことを確認できた場合には（ステップＳ２６でＹｅｓ）、保守支援装置５は、待機系のＢ系コントローラ１ｂへオンライン運転要求を送信する（ステップＳ２７）。Ｂ系コントローラ１ｂの状態制御部１４ｂは、そのオンライン運転要求を受信すると、自装置を待機系オンライン運転状態にする（状態Ｃ２４）。
次に、保守支援装置５は、主系のＡ系コントローラ１ａへ主系放棄要求を送信する（ステップＳ２８）。その主系放棄要求を受信したＡ系コントローラ１ａは、主系を放棄して、待機系オンライン運転状態になり、それに伴いＢ系コントローラ１ｂが主系オンライン運転状態になる（状態Ｃ２５）。状態Ｃ２５では、Ａ系コントローラ１ａ及びＢ系コントローラ１ｂは、主系及び待機系が交代したことになる。
【００５２】
その後、図８の処理から図９の処理に移り、ステップＳ３１の処理が行われる。
図９のステップＳ３１〜Ｓ３８の処理は、保守支援装置５がＡ系コントローラ１ａに対して行う処理であり、図８のステップＳ２１〜Ｓ２８で、保守支援装置５がＢ系コントローラ１ｂに対して行う処理と同じ内容である。つまり、ステップＳ３１〜Ｓ３８は、ステップＳ２１〜Ｓ２８の処理においてＡ系コントローラ１ａとＢ系コントローラ１ｂとが入れ替わったものであり、ここでは説明を省略する。なお、コントローラの状態についても、状態Ｃ３１〜Ｃ３４は、状態Ｃ２２〜Ｃ２５から、Ａ系コントローラ１ａとＢ系コントローラ１ｂとが入れ替わった状態である。
【００５３】
以上のようにして、Ａ系コントローラ１ａ及びＢ系コントローラ１ｂの制御プログラム１６ａ，１６ｂは、保守支援装置５から送信された改訂された制御プログラム５９に更新される。そして、Ａ系コントローラ１ａ及びＢ系コントローラ１ｂの状態は、もとの状態Ｃ２１に戻る。
このように本例のコントローラ１ａ，１ｂが２重化されたプロセス制御システム１００によると、２つのコントローラ１ａ，１ｂが順に待機系になり、その待機系のコントローラをオフライン状態として制御プログラムの更新処理が行われるようになる。そして、その制御プログラムの更新時には、それぞれのコントローラ１ａ，１ｂごとに、制御プログラムの改造規模が許容範囲内か否かが判断され、許容範囲である場合には、更新が許可される。したがって、本例のプロセス制御システム１００によると、更新の影響が大きくリスクが高い場合のオンライン保守が制限され、安全なシステム運用を実現することができる。
【００５４】
［９．制御プログラムの更新時の具体例］
ここで、ステップＳ２５及びＳ３５で行われる、更新前の制御プログラムのＩＤの値と、更新後の制御プログラムのＩＤの値を比較して、制御プログラムの改訂規模を判断する具体的な処理を、図４〜図７の例を使って説明する。
例えば、比較する際の規定値が「１」であるとする。このとき、図４に示すように、更新前の制御プログラムＡのＩＤが「８」であり、更新後の制御プログラムのＩＤが「１１」であるとき、双方のＩＤの値の差が「３」になる。したがって、図４の例の場合、実行プログラム管理部１３ｂでは、規定値が「１」を越えることが判定され、プログラムの改造規模が許容範囲を超えたことが検出される。このため、保守支援装置５では、詳細な動作確認が必要であるとして、オンライン保守が中断される。また、図５の例及び図６の例の場合も、それぞれ更新前と更新後のＩＤの値の差が「２」，「４」であり、同様に、プログラムの改造規模が許容範囲を超えたことが検出される。一方、図７の例の場合には、更新前と更新後のＩＤの値の差が「１」であり、プログラムの改造規模が許容範囲であると検出される。
【００５５】
このように、規定値が「１」の場合には、制御プログラムの構成要素１つだけが修正され、しかもその修正が他の構成要素に影響を及ぼさない小規模なものである場合にだけ、オンライン保守で自動的に制御プログラムの改訂が許可されるようになる。
なお、規定値を「２」に設定した場合には、図５に示す制御プログラムの改訂が許容範囲内になり、図４の例と図６の例が許容範囲外になる。規定値をどの値にするかは、制御対象プロセス３の構成や、システムの安定性がどの程度求められるか、などの種々の要件により決まる。
【００５６】
［１０．ＩＤ設定時の変形例］
上述した実施の形態例では、制御プログラムの改訂を行う際に、保守支援装置５が、修正した構成要素それぞれに、使用済みのＩＤの値に１つ加算した値を新たなＩＤとする処理を行うようにした。例えば、図６の例では、状態Ｃ１７で、更新された構成要素である関数−Ｘと、影響がある構成要素である処理−Ｑ，タスク−Ｍ，ＣＰＵ−Ａに、元の制御プログラムのＩＤ「８」よりも大きな「９」，「１０」，「１１」，「１２」を設定するようにした。
【００５７】
これに対して、保守支援装置５が、ＩＤを付与し直す構成要素ごとに、その構成要素の重要度に応じて重みづけを行って、ＩＤ付与時の加算値を可変設定してもよい。例えば、関数の構成要素は、修正の影響が大きいため、直前に付与したＩＤから３つ加算した値とする。また、処理の構成要素は、修正の影響が中程度であり、直前に付与したＩＤから２つ加算した値とする。また、タスクやＣＰＵの構成要素は、修正の影響が比較的少ないため、直前に付与したＩＤから１つ加算した値とする。このようなルールで、図６の例の状態Ｃ１７で、各構成要素のＩＤを設定した場合には、関数−Ｘ（１１），処理−Ｑ（１３），タスク−Ｍ（１４），ＣＰＵ−Ａ（１５）となる。修正後の制御プログラムＡのＩＤは「１５」となる。
【００５８】
このように構成要素にＩＤを付与する際に重みづけを行うようにしたことで、制御プログラムのＩＤの修正前と修正後との差が、改造規模に応じてより顕著に表れるようになる。したがって、制御プログラムのＩＤの修正前と修正後との差と規定値との比較で、より正確に改訂が安全か否かの判断ができるようになる。
【００５９】
また、構成要素の種類ごとに重みづけを行う代わりに、修正された構成要素の改修パターンや改修の程度から、自動的にＩＤを付与し直す際の重みづけを行うようにしてもよい。例えば、修正された構成要素が１つであっても、その１つの構成要素内の２つの箇所が修正された場合には、直前に付与したＩＤから２つ加算した値とする。このようにすることでも、制御プログラムのＩＤの修正前と修正後との差が、改造規模に応じてより顕著に表れるようになる。
【００６０】
また、図４〜図６の例では、全ての構成要素に対してＩＤを付与するようにした。これに対して、最上位の構成要素（図４の例の場合はＣＰＵ−Ａ）などの一部の構成要素については、ＩＤの付与を省略してもよい。
【００６１】
［１１．その他の変形例］
なお、図１に示すプロセス制御システム１００は、２重化されたコントローラ１ａ，１ｂを備える構成とした。これに対して、本発明は２重化されていないシステムにも適用が可能である。但し、２重化されていないシステムの場合には、プロセスの制御を止めてコントローラに改訂された制御プログラムをセットする必要があり、図８及び図９のフローチャートで説明したような連続稼働はできない。
【００６２】
また、図８及び図９のフローチャートでは、コントローラ内での承認処理として、ステップＳ２４，Ｓ２５，Ｓ２６及びＳ３４，Ｓ３５，Ｓ３６の順序で行うようにした。これに対して、ステップＳ２４，Ｓ３４での承認済みか否かの判断と、ステップＳ２５，Ｓ３５での改造規模の判断と、ステップＳ２６，Ｓ３６での動作の判断を行う順序は、これとは異なる順序で行うようにしてもよい。
【００６３】
また、上述した実施の形態例では、コントローラ１ａ，１ｂ内で改訂前と改訂後の制御プログラムのＩＤを比較するようにした。これに対して、改訂前と改訂後の制御プログラムのＩＤの比較は、保守支援装置５内で行うようにしてもよい。例えば、保守支援装置５内の制御プログラム承認部５６が、図８のステップＳ２４，Ｓ２５，Ｓ２６などの承認処理を行うようにしてもよい。
【００６４】
さらに、本発明は上述した実施の形態例に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
例えば、上述した実施の形態例は、本発明を分かりやすく説明するために装置の構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、装置の内部構成を示す図１に示す信号の流れのラインは説明上必要と考えられるものを示しており、必ずしも装置として必要な全てのラインを示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００６５】
１ａ…Ａ系コントローラ、１ｂ…Ｂ系コントローラ、２…プロセス入出力装置、３…制御対象プロセス、４…通信ネットワーク、５…保守支援装置、１０ａ，１０ｂ…コントローラ記憶部、１１ａ，１１ｂ…コントローラ処理部，１２ａ，１２ｂ…承認ＩＤテーブル、１３ａ，１３ｂ…実行プログラム管理部、１４ａ，１４ｂ…状態制御部、１５ａ,１５ｂ…制御処理部、１６ａ，１６ｂ…実行用制御プログラム、５０…保守機能処理部、５１…保守データ記憶部、５２…制御プログラムエディタ部、５３…制御プログラムコンパイル部
５４…制御プログラム配信部、５５…制御プログラム比較部、５６…制御プログラム承認部、５７…制御プログラムソース、５８…付与ＩＤデータ、５９…配信用制御プログラム、６０…入力装置、６１…表示装置、１００…２重化プロセス制御システム
【図１】
0006401657.tif 000002
【図２】
0006401657.tif 000003
【図３】
0006401657.tif 000004
【図４】
0006401657.tif 000005
【図５】
0006401657.tif 000006
【図６】
0006401657.tif 000007
【図７】
0006401657.tif 000008
【図８】
0006401657.tif 000009
【図９】
0006401657.tif 000010