(57)【要約】【課題】ホットスタンバイ方式（稼動系PC・待機系PC）の二重化制御システムでは、等値化処理中に入力データが変化して演算処理により出力データが書き替わると、全データの等値化が完了した時にデータに差異が生じてしまい、このタイミングで待機系PCが稼動系PCに切り替わると誤出力等が発生するという問題点があった。【解決手段】待機系PCが稼動系PCから全ての等値化用データを受信したとき、等値化用データの一部として受信した固定データであるプログラム（等値化判定用プログラム）を演算実行して得られた出力結果と、等値化用データとして受信した稼動系PCの出力結果とを比較判定して等値化用データの正当性を判定する。【選択図】  図１
2007299120.tif 000002
【特許請求の範囲】
【請求項１】
稼動系プログラマブルコントローラと待機系プログラマブルコントローラを備え、稼動系と待機系の各プログラマブルコントローラはそれぞれリモート入力とローカル入力に接続され、且つ各プログラマブルコントローラ間は等値化伝送路を介して等値化データの授受を行う二重化制御システムにおいて、
前記稼動系プログラマブルコントローラと待機系プログラマブルコントローラに等値化プロトコル処理手段と生存認識のためのプロトコル処理手段を設け、この生存認識のためのプロトコル処理手段は、前記稼動系プログラマブルコントローラから待機系プログラマブルコントローラに対して一定間隔で生存コマンドを送信し、この生存コマンドに対応する待機系プログラマブルコントローラの生存リプライの受信の有無を確認し、所定時間生存リプライの返送がなかったときに待機系プログラマブルコントローラはダウン中と認識し、生存リプライの返送時には待機系プログラマブルコントローラは生存と判別することを特徴とする二重化プログラマブルコントローラの等値化方法。
【請求項２】
前記待機系プログラマブルコントローラからの生存リプライのデータに、準備中、準備完了、処理中及び生存中の内部状態信号を備え、前記待機系プログラマブルコントローラは、前記生存コマンド受信時に当該内部状態信号の生存リプライを前記稼動系プログラマブルコントローラに送信することを特徴とした請求項１記載の二重化プログラマブルコントローラの等値化方法。
【請求項３】
稼動系プログラマブルコントローラに生存確認後のプロトコル処理手段を設け、このプロトコル処理手段により前記準備中の生存リプライ受信時には生存コマンドを、前記準備完了の生存リプライ受信時には所定のデータに分割された等値化用データコマンドを、処理中の生存リプライ受信時には生存コマンドを、生存中の生存リプライ受信時には一定周期後に生存コマンドをそれぞれ待機系プログラマブルコントローラに送信することを特徴とした請求項２記載の二重化プログラマブルコントローラの等値化方法。
【請求項４】
前記稼動系プログラマブルコントローラの等値化プロトコル処理手段は、待機系プログラマブルコントローラに対して等値化用データコマンドによる分割されたデータが所定分割数となるまで等値化用データコマンドを送信し、所定数となったときに生存コマンドを送信すると共に、前記待機系プログラマブルコントローラは受信した等値化用データコマンドをデータ分割番号に対応した所定の内部データ領域に格納することを特徴とした請求項３記載の二重化プログラマブルコントローラの等値化方法。
【請求項５】
前記待機系プログラマブルコントローラは、分割された全等値化用データ受信時に等値化判定用のプログラム演算処理を実行し、この演算結果と等値化用データとして受信した稼動系プログラマブルコントローラの出力結果とを比較判定し、一致時には前記内部状態を生存中に移行し、不一致時には内部状態を準備完了に移行することを特徴とした請求項４記載の二重化プログラマブルコントローラの等値化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼動系と待機系とに二重化されて、待機系も稼動系と同じくローカル入力およびリモート入力処理と演算処理を行うホットスタンバイ方式のプログラマブルコントローラ（以下、PCと略す）等の二重化制御システムにおいて、電源投入時やリセット時に入出力データを含む全てのデータを完全等値化する方法に関するものである。
【背景技術】
【０００２】
PCを用いてプラント等の監視・制御を行うシステムでは、PCの故障等により対象機器の監視・制御が行えなくなるとシステムの運用に大きな支障が出るため、特許文献１で示すようにPCを二重化してシステムの信頼性を向上させる取り組みが行われている。
【０００３】
この特許文献１によれば、図９に示すように二重化されたPCでは、予めプログラム及び固定データが格納された稼動系PC１１と待機系PC１２を備え、常時は稼動系PC１１が入出力装置１７を介して制御対象１８等を制御している。待機系PC１２は所定周期で稼動系PC１１の異常の有無を監視し、また稼動系PC１１から可変データを待機系PC１２自身へ等値化伝送路１６を介して転送させており、稼動系PC１１の異常時には待機系PC１２が稼動系PC１１に代わって制御を行うようになっている。
【０００４】
待機系PC１２の電源投入時及びリセット時には、稼動系PC１１からプログラムを含む全データを待機系PC１２自身へ等値化伝送路１６を介して転送させて、また稼動系PC１１の監視の際もプログラム又は固定データの変更の有無を調べ、変更時に全データを待機系PC１２へ転送させている。
【０００５】
このように、PCを二重化することによりシステムの信頼性を向上させ、また待機系PCの立上げ時の操作を容易にしている。
【特許文献１】特開平０７−０１３７９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この特許文献１に示されるように、待機系PCの電源投入時及びリセット時における稼動系PCから待機系PCへの等値化処理は、図９の等値化伝送路１６を使用して行われるのが一般的であるが、等値化の対象となる全データを等値化転送完了するには、データ量や等値化伝送路１６の伝送速度に応じた転送時間が必要となる。
【０００７】
そのためにホットスタンバイ方式の場合、待機系PCが等値化処理中に入力データが変化して演算処理により出力データを書き替えると、全データの等値化が完了した時にデータに差異が生じてしまい、このタイミングで稼動系PCに故障が発生し待機系PCが稼動系PCに切り替わると、誤出力等が発生する可能性がある。
【０００８】
そこで本発明が目的とするところは、待機系PCも稼動系PCと同じくローカル入力及びリモート入力処理と演算処理を行うホットスタンバイ方式の初期等値化方式において、稼動系PCが入出力処理を含めた演算処理実行中であっても、待機系PC側へ入出力データを含めた全てのデータをすれ違いなく完全に等値化する方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１は、稼動系プログラマブルコントローラと待機系プログラマブルコントローラを備え、稼動系と待機系の各プログラマブルコントローラはそれぞれリモート入力とローカル入力に接続され、且つ各プログラマブルコントローラ間は等値化伝送路を介して等値化データの授受を行う二重化制御システムにおいて、
前記稼動系プログラマブルコントローラと待機系プログラマブルコントローラに等値化プロトコル処理手段と生存認識のためのプロトコル処理手段を設け、この生存認識のためのプロトコル処理手段は、前記稼動系プログラマブルコントローラから待機系プログラマブルコントローラに対して一定間隔で生存コマンドを送信し、この生存コマンドに対応する待機系プログラマブルコントローラの生存リプライの受信の有無を確認し、所定時間生存リプライの返送がなかったときに待機系プログラマブルコントローラはダウン中と認識し、生存リプライの返送時には待機系プログラマブルコントローラは生存と判別することを特徴とする二重化プログラマブルコントローラの等値化方法である。
【００１０】
本発明の第２は、前記待機系プログラマブルコントローラからの生存リプライのデータに、準備中、準備完了、処理中及び生存中の内部状態信号を備え、前記待機系プログラマブルコントローラは、前記生存コマンド受信時に当該内部状態信号の生存リプライを前記稼動系プログラマブルコントローラに送信することを特徴とした二重化プログラマブルコントローラの等値化方法である。
【００１１】
本発明の第３は、稼動系プログラマブルコントローラに生存確認後のプロトコル処理手段を設け、このプロトコル処理手段により前記準備中の生存リプライ受信時には生存コマンドを、前記準備完了の生存リプライ受信時には所定のデータに分割された等値化用データコマンドを、処理中の生存リプライ受信時には生存コマンドを、生存中の生存リプライ受信時には一定周期後に生存コマンドをそれぞれ待機系プログラマブルコントローラに送信することを特徴とした二重化プログラマブルコントローラの等値化方法である。
【００１２】
本発明の第４は、前記稼動系プログラマブルコントローラの等値化プロトコル処理手段は、待機系プログラマブルコントローラに対して等値化用データコマンドによる分割されたデータが所定分割数となるまで等値化用データコマンドを送信し、所定数となったときに生存コマンドを送信すると共に、前記待機系プログラマブルコントローラは受信した等値化用データコマンドをデータ分割番号に対応した所定の内部データ領域に格納することを特徴とした二重化プログラマブルコントローラの等値化方法である。
【００１３】
本発明の第５は、前記待機系プログラマブルコントローラは、分割された全等値化用データ受信時に等値化判定用のプログラム演算処理を実行し、この演算結果と等値化用データとして受信した稼動系プログラマブルコントローラの出力結果とを比較判定し、一致時には前記内部状態を生存中に移行し、不一致時には内部状態を準備完了に移行することを特徴とした二重化プログラマブルコントローラの等値化方法である。
【発明の効果】
【００１４】
以上のとおり、本発明によれば、待機系PCも稼動系PCと同じくローカル入力及びリモート入力処理と演算処理を行うホットスタンバイ方式の初期等値化方式において、入出力データを含めた全てのデータを待機系PCへすれ違いなく完全に等値化することができる。
【発明を実施するための最良の形態】
【００１５】
図１は本発明の二重化制御システムの構成例である。１は稼動系PC、２は待機系PCで、これら各PC１、PC２はリモートＩ／Ｏ伝送路４とローカル伝送路５を介して、それぞれリモート入力６とローカル入力７を取り込んでいる。また稼動系PC１と待機系PC２とは等値化伝送路３でつながっていて、等値化のためのデータの授受が行われる。
【００１６】
ここでの例として、等値化伝送路３はEthernet（登録商標）とし、全等値化データのサイズを３００００バイトとする。１フレームの等値化データサイズを１５００バイトとすると（３００００バイト÷１５００バイト＝２０）２０フレームとなり、全データの等値化では２０分割したデータ転送を行うよう構成される。
【００１７】
本発明では、稼動系PC１と待機系PC２に、稼動系PC１が待機系PC２の動作状態を確認するための生存確認のためのプロトコル処理手段が実装されている。このプロトコルにおいて、稼動系PC１が送信するデータを生存コマンド、待機系PC２が生存コマンドを受信したときに応答するデータを生存リプライと呼ぶことにする。
【００１８】
また、稼動系PC１は待機系PC２からの生存リプライの有無に係わらず、一定間隔で生存コマンドを送信する。稼動系PC１は、待機系PC２からの生存リプライを受信した場合は待機系PC２の生存を認識し、生存リプライが受信されなかった場合には待機系PC２はダウン中と認識する。
【００１９】
待機系PC２は、稼動系PC１からの生存コマンド受信に対して、生存リプライデータの中に待機系PC２の内部状態をセットして稼動系PC１へ返送する。このときの待機系PC２の内部状態は以下の４つに分類する。
準備中：  電源が投入されてから、イニシャライズ処理が完了するまでの状態。
準備完了：イニシャライズ処理が完了し、等値化処理が実行できる状態。また処理中において演算処理を行った出力結果が、稼動系PCからの出力結果と不一致の状態。
処理中：  等値化用のデータ受信が完了し、等値化判定用プログラムが演算処理を実行中の状態。
生存中：  出力結果が一致した後、通常の演算処理をしている状態。
【００２０】
図２は本発明の生存認識のための稼動系PC１の処理フローを示したものである。ステップ１０１で稼動系PC１は待機系PC２からの生存リプライの有無に係わらず、一定間隔で生存コマンドを送信１０２する。ステップ１０３では稼動系PC１は待機系PC２からの生存リプライ受信の有無を判断し、受信有時にはステップ１０４で待機系PC２の生存を認識して後述するような待機系PC２の内部状態に応じた処理に移行する。一方、ステップ１０３において生存リプライが受信されなかった場合には、ステップ１０５において所定時間経過したか否かが判断され、経過していなければ１０３に戻って再度生存リプライ受信の有無が判断される。所定時間経過した場合にはリプライタイムアウトと判断され、ステップ１０６で待機系PC２はダウン中と認識する。
【００２１】
図３は本発明の生存認識のための待機系PC２の処理フローを示したものである。ステップ２０１で待機系PC２は稼動系PC１から生存コマンドを受信する。待機系PC２は、内部状態に応じて以下の４つの生存リプライを返送する。
（a）ステップ２０２にてイニシャライズ処理中かを判定して、イニシャライズ処理中ならば生存リプライに準備中をセットして稼動系PC１へ返送２０３する。
（b）ステップ２０２においてイニシャライズ処理中でない場合には、２０４にてイニシャライズ終了または出力結果が不一致かを判定し、イニシャライズ終了または出力結果が不一致ならば生存リプライに準備完了をセットして稼動系PC１へ返送２０５する。
（c）ステップ２０４で処理中か、もしくは出力結果一致のときには、２０６にて等値化判定用プログラム演算実行中かを判定して、等値化判定用プログラム演算実行中ならば生存リプライに処理中をセットして稼動系PC１へ返送２０７する。
（d）ステップ２０６で等値化判定用プログラム演算実行中でなかった場合には、２０８にて出力結果が一致した後の通常状態中かを判定して、出力結果が一致した後の通常状態中ならば生存リプライに生存中をセットして稼動系PC１へ返送２０９する。
【００２２】
図４は本発明の待機系PC２の状態別による稼動系PC１の処理フローを示したものである。ステップ３０１で稼動系PC１は待機系PC２から生存リプライを受信する。稼動系PC１は、待機系PC２からの生存リプライの内容を確認して、ステップ３０２で待機系PC２の状態が準備完了であるか判定し、準備完了であればデータ分割番号１の等値化用データコマンドを待機系PC２へ送信３０３し、等値化用データの送信を開始する。また、ステップ３０２で待機系PC２が準備完了でない場合には、ステップ３０４にて待機系PC２が生存中かを判定し、生存中ならば一定周期後に生存コマンドを待機系PC２へ送信３０５し、生存中でなければ直ぐに生存コマンドを待機系PC２へ送信３０６する。このことを整理して示すと、
生存リプライ受信（準備中）    →  生存コマンドを送信する
生存リプライ受信（準備完了）  →  等値化用データコマンド（データ分割番号１）を送信する
生存リプライ受信（処理中）    →  生存コマンドを送信する
生存リプライ受信（生存中）    →  一定周期後、生存コマンドを送信する
ここの図４に示すように、待機系PC２が準備完了の場合のみ２０分割された等値化用データの先頭の１５００バイトを送信し、それ以外の状態のときは、生存コマンドを送信することになる。
【００２３】
図５は本発明の等値化のための稼動系PC１の処理フローを示し、図６は本発明の等値化のための待機系PC２の処理フローを示している。これら２つの処理フローは、待機系PC２が稼動系PC１のデータを等値化するためのプロトコル処理手段を示している。このプロトコル処理手段においては、稼動系PC１が送信するデータを等値化用データコマンド、待機系PC２が等値化用データコマンドを受信したときに応答するデータを等値化用データリプライと呼ぶことにし、各々の等値化用データコマンド及び等値化用データリプライには付加情報としてデータ分割番号１〜２０がセットされる。データ分割番号は、３００００バイトを１５００バイト毎に分割した先頭からの通し番号を示している。
【００２４】
稼動系PC１は図４の処理フローで説明したように、待機系PC２の生存認識後のプロトコル処理手段において、生存リプライの準備完了を受信したときに等値化処理の開始としてデータ分割番号１の等値化用データコマンドを送信している。
待機系PC２はステップ５０１で等値化用データコマンドを受信した場合、データ分割番号に対応した内部データ領域にその等値化データを取り込み、受信した分割番号を付加して等値化用データリプライを稼動系PC１へ返送５０２する。
【００２５】
稼動系PC１はステップ４０１で待機系PC２より等値化用データリプライを受信した場合、更にステップ４０２で付加情報のデータ分割番号のチェックを行い、データ分割番号が１〜１９ならば、それに＋１したデータ分割番号に相当した等値化用データコマンドを待機系PC２へ送信４０３する。付加情報のデータ分割番号が最終リプライの２０ならば、データ分割番号１〜２０全ての等値化用データコマンドの送信が完了したので生存コマンドを待機系PC２へ送信４０４する。
【００２６】
図７は本発明の待機系PC２の等値化判定処理フローを示している。待機系PC２はステップ６０１で稼動系PC１より２０分割された全ての等値化用データコマンドを受信したとき、ステップ６０２で内部状態を処理中にして、等値化データの一部として受信した固定データである等値化判定用プログラムを演算実行する。そして、ステップ６０３でその出力結果と等値化用データとして受信した稼動系PC１の出力結果を比較判定し、出力結果が一致した場合は内部状態を生存中に移行させて通常のプログラム演算実行６０４を行い、出力結果が不一致の場合は準備完了に移行させて等値化用データ待ち６０５とし等値化用データの再送処理を行う。
【００２７】
図８は本発明の等値化伝送プロトコルを示しており、これに従って稼動系PC１と待機系PC２の一連のデータ送受信について説明する。
（１）稼動系PC１から待機系PC２に対して、生存コマンドを周期的に送信する。
（２）待機系PC２は生存コマンドを受信したら、それに対する応答として生存リプライを稼動系PC１へ返送する。生存リプライは、前述したように準備中、準備完了、処理中、生存中の４種類あり、待機系PC２の内部状態によって分かれる。稼動系PC１は準備中を受信すると生存コマンドを待機系PC２へ送信し、準備完了を受信すると待機系PC２へ等値化用データコマンドの送信を開始する。
（３）稼動系PC１は等値化用データコマンドをデータ分割番号１から待機系PC２へ送信開始し、待機系PC２からの等値化用データリプライのデータ分割番号を確認しながら、順次データ分割番号をインクリメントしデータ分割番号２０までの対応する等値化用データコマンドを待機系PC２へ送信する。
（４）待機系PC２は全ての等値化用データコマンドを受信したら、等値化判定用のプログラム演算処理を実行する。プログラム演算処理した結果の出力データと稼動系PC１から送られてきた出力データを比較し、一致したら等値化データ送信中に出力データの変化がないため稼動系PC１と同様の通常処理へ移行する。待機系PC２が等値化判定用のプログラム演算処理実行中に稼動系PC１から生存コマンドを受信すると、生存リプライの処理中を稼動系PC１へ返送する。
（５）待機系PC２は、（４）で等値化判定用のプログラム演算処理した結果の出力データが、稼動系PC１から送られてきた出力データと一致して通常処理へ移行した状態で、稼動系PC１から生存コマンドを受信すると生存リプライの生存中を稼動系PC１へ返送する。また、（４）で処理した出力データが不一致の場合は、等値化用データの再送処理のために生存リプライの準備完了を稼動系PC１へ返送する。
【００２８】
以上に示すように、入力データの状態変化がなく出力データが一致するまで等値化用データコマンドの送受信（（３）〜（５））を繰り返す。このことにより、稼動系PC１、待機系PC２共に出力データが一致した状態で通常状態でのプログラム演算処理へ移行することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の二重化制御システム構成例
【図２】本発明の生存認識のための稼動系PCの処理フロー
【図３】本発明の生存認識のための待機系PCの処理フロー
【図４】本発明の待機系PCの状態別による稼動系PCの処理フロー
【図５】本発明の等値化のための稼動系PCの処理フロー
【図６】本発明の等値化のための待機系PCの処理フロー
【図７】本発明の待機系PCの等値化判定処理フロー
【図８】本発明の等値化伝送プロトコル
【図９】従来の二重化制御システムのシステム構成図
【符号の説明】
【００３０】
１…  稼動系PC
２…  待機系PC
３…  等値化伝送路
４…  リモートＩ／Ｏ伝送路
５…  ローカル伝送路
６…  リモート入力
７…  ローカル入力
１１…  稼動系PC
１２…  待機系PC
１３…  伝送路
１４…  管理用パソコン
１５…  ローダ
１６…  等値化伝送路
１７…  入出力装置
１８…  制御対象
【図１】
2007299120.tif 000003
【図２】
2007299120.tif 000004
【図３】
2007299120.tif 000005
【図４】
2007299120.tif 000006
【図５】
2007299120.tif 000007
【図６】
2007299120.tif 000008
【図７】
2007299120.tif 000009
【図８】
2007299120.tif 000010
【図９】
2007299120.tif 000011