(57)【要約】【課題】主系コントローラの異常発生時に、制御の継続性を確保しつつ制御主体を主系コントローラから従系コントローラに自動で切り替えることができる二重化制御システムを提供する。【解決手段】主系コントローラ２ａは、第２系間通信部７を介して従系コントローラ２ｂに制御データを転送する際に、その制御データから算出したハッシュ値を第３系間通信部８を介して前記従系コントローラに転送するように構成され、前記従系コントローラは、第１系間通信部６を介して前記主系コントローラの異常が通知されたときに、前記第２系間通信部を介して受信した制御データから算出したハッシュ値と前記第３系間通信部を介して受信したハッシュ値とが一致しない場合は、前記主系コントローラが実行していた制御を引き継がないように構成されている。【選択図】  図１
2019128820.tif 000002
【特許請求の範囲】
【請求項１】
主系コントローラと、
従系コントローラと、
前記主系コントローラと前記従系コントローラとに接続され、前記主系コントローラの異常を前記従系コントローラに通知するための第１系間通信部と、
前記主系コントローラと前記従系コントローラとに接続され、前記主系コントローラが保持している制御データを前記従系コントローラに転送するための第２系間通信部とを備え、
前記従系コントローラは、前記第１系間通信部を介して前記主系コントローラの異常が通知されたときに、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、
前記主系コントローラと前記従系コントローラとに接続された第３系間通信部を備え、
前記主系コントローラは、前記第２系間通信部を介して前記従系コントローラに制御データを転送する際に、その制御データから算出したハッシュ値を前記第３系間通信部を介して前記従系コントローラに転送するように構成され、
前記従系コントローラは、前記第１系間通信部を介して前記主系コントローラの異常が通知されたときに、前記第２系間通信部を介して受信した制御データから算出したハッシュ値と前記第３系間通信部を介して受信したハッシュ値とが一致しない場合は、前記主系コントローラが実行していた制御を引き継がないように構成されている
ことを特徴とする二重化制御システム。
【請求項２】
請求項１に記載の二重化制御システムにおいて、
前記第３系間通信部の通信ボーレートは、前記第２系間通信部の通信ボーレーよりも低い
ことを特徴とする二重化制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つのコントローラを備えた二重化制御システムに関し、特に、一方のコントローラに異常が発生した場合に速やかに他方のコントローラが制御を引き継ぐ二重化制御システムに関する。
【背景技術】
【０００２】
プラント等の制御を行うシステムとして、２つのコントローラを備えた二重化制御システムが知られている。このような二重化制御システムの従来技術を開示するものとして、例えば特許文献１がある。この特許文献１には、実行系計算機（主系コントローラ）と待機系計算機（従系コントローラ）をデータ伝送路で接続し、各計算機上に共有データ領域を設け、二重系管理プロセスで共有データ領域への書き込み、実行系計算機（主系コントローラ）の異常検出、障害からの復旧時のデータのコピーを行う二重系システム（二重化制御システム）が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２５９２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、プラント等の二重化制御システムでは、主系コントローラの異常発生時に、速やかに従系コントローラが制御を引き継ぐ方式（ホットスタンバイ方式）を採用したものがある。このような二重化制御システムでは、主系コントローラから従系コントローラに制御主体が切り替わった際の制御の継続性を確保するため、従系コントローラが保持している制御データを最新の状態に保っておく必要がある。
【０００５】
しかしながら、特許文献１に記載の二重系システム（二重化制御システム）では、制御主体を主系コントローラから従系コントローラに切り替える際にデータ伝送路に異常が発生していた場合は、従系コントローラが保持している制御データが最新のものであるか不明な状態で従系コントローラに制御主体が切り替わるため、制御の継続性が損なわれるおそれがある。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、その目的は、主系コントローラの異常発生時に、制御の継続性を確保しつつ制御主体を主系コントローラから従系コントローラに自動で切り替えることができる二重化制御システムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、主系コントローラと、従系コントローラと、前記主系コントローラと前記従系コントローラとに接続され、前記主系コントローラの異常を前記従系コントローラに通知するための第１系間通信部と、前記主系コントローラと前記従系コントローラとに接続され、前記主系コントローラが保持している制御データを前記従系コントローラに転送するための第２系間通信部とを備え、前記従系コントローラは、前記第１系間通信部を介して前記主系コントローラの異常が通知されたときに、前記主系コントローラが実行していた制御を引き継ぐように構成された二重化制御システムにおいて、前記主系コントローラと前記従系コントローラとに接続された第３系間通信部を備え、前記主系コントローラは、前記第２系間通信部を介して前記従系コントローラに制御データを転送する際に、その制御データから算出したハッシュ値を前記第３系間通信部を介して前記従系コントローラに転送するように構成され、前記従系コントローラは、前記第１系間通信部を介して前記主系コントローラの異常が通知されたときに、前記第２系間通信部を介して受信した制御データから算出したハッシュ値と前記第３系間通信部を介して受信したハッシュ値とが一致しない場合は、前記主系コントローラが実行していた制御を引き継がないように構成されているものとする。
【０００８】
以上のように構成した本発明によれば、主系コントローラの異常発生時に、従系コントローラが保持している制御データから算出したハッシュ値と主系コントローラから第３系間通信部を介して受信したハッシュ値とが一致している場合に限り、制御主体が主系コントローラから従系コントローラに自動で切り替わる。これにより、従系コントローラが保持している制御データが主系コントローラが保持している最新の制御データと一致している状態で、制御主体が主系コントローラから従系コントローラに切り替わるため、制御の継続性を確保することができる。
【発明の効果】
【０００９】
本発明によれば、主系コントローラの異常発生時に、従系コントローラの保持している制御データが主系コントローラが保持している最新の制御データと一致している状態で、制御主体が主系コントローラから従系コントローラに自動で切り替わるため、制御の継続性を確保することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る二重化制御コントローラの構成図である。
【図２】主系コントローラおよび従系コントローラがそれぞれ一制御周期で実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１２】
図１は、本実施の形態に係る二重化制御コントローラの構成図である。
【００１３】
二重化制御システム１は、主系コントローラ２ａと、従系コントローラ２ｂとを備えている。主系コントローラ２ａと従系コントローラ２ｂは、第１系間通信部６、第２系間通信部７、および第３系間通信部８を介して接続されている。主系コントローラ２ａおよび従系コントローラ２ｂは、プロセス入出力バス２０に接続されている。プロセス入出力バス２０には、プラント等を構成する各種フィールド機器（図１に示す例では、センサ２４、バルブ２５、ＰＬＣ２６）が入出力基板変換部２１〜２３を介して接続されている。
【００１４】
主系コントローラ２ａは、プラント等の制御の実行権（以下、実行権）を有するコントローラ（以下、実行系コントローラ）として起動する。一方、従系コントローラ２ｂが実行権を有さないコントローラ（以下、待機系コントローラ）として起動する。実行系コントローラとして動作していた主系コントローラ２ａに異常が発生した場合は、待機系コントローラとして動作していた従系コントローラ２ｂが実行権を取得して実行系コントローラとなり、主系コントローラ２ａが実行していた制御を引き継ぐ。実行系コントローラとして動作する主系コントローラ２ａまたは従系コントローラ２ｂは、プロセス入出力バス２０を介して各種のフィールド機器を制御する。
【００１５】
主系コントローラ２ａは、ＣＰＵ等からなる制御演算部３ａと、ＲＡＭ等からなる記憶部４ａと、プロセス入出力部５ａとを備えている。主系コントローラ２ａは、図示しないＲＯＭ等に格納されたプログラムをＣＰＵ上で実行することにより、以下に説明する機能を実現する。なお、従系コントローラ２ｂの構成は主系コントローラ２ａと同様であるため、説明は省略する。
【００１６】
主系コントローラ２ａの制御演算部３ａは、プロセス入出力部５ａを介して取得した各フィールド機器の情報等を基に制御データを生成し、記憶部４ａに保持すると共に第２系間通信部７を介して従系コントローラ２ｂに転送する。制御演算部３ａは、記憶部４ａに保持している最新の制御データからハッシュ値（Ａ）を算出して記憶部４ａに保持し、そのハッシュ値（Ａ）を第３系間通信部８を介して従系コントローラ２ｂに転送する。ハッシュ値とは、あるデータに所定の演算を施した結果として得られる当該データよりも容量の小さいデータである。ハッシュ値としては、チェックサムやＣＲＣ等が周知である。制御演算部３ａは、自系で異常を検出した場合に、第１系間通信部６を介して従系コントローラ２ｂに通知する。制御演算部３ａは、記憶部４ａに保持している制御データをプロセス入出力部５ａを介してプロセス入出力バス２０に出力することにより、各フィールド機器を制御する。
【００１７】
ここで、第１系間通信部６は、主系コントローラ２ａの異常を従系コントローラ２ｂに通知できる限りにおいて、どのような通信手段で構成されていても良い。第２系間通信部７は、制御データを転送するため、制御データの容量と制御周期に応じた通信ボーレートを有する通信手段（Ｅｔｈｅｒｎｅｔ等）で構成する必要がある。第３系間通信部８は、制御データよりも容量の小さいハッシュ値のみを転送できれば良いため、第２系間通信部７よりも通信ボーレートの低い通信手段（例えばＲＳ−２３２Ｃ）で構成することができる。これにより、第３系間通信部８を追加することによる二重化制御システム１のコスト増を抑えることができる。
【００１８】
従系コントローラ２ｂの制御演算部３ｂは、第２系間通信部７を介して受信した制御データ、および第３系間通信部８を介して受信したハッシュ値（Ｂ）を記憶部４ｂに保持する。制御演算部３ｂは、第２系間通信部７を介して受信した制御データからハッシュ値（Ｂ）を算出し、記憶部４ｂに保持する。制御演算部３ｂは、記憶部４ｂに保持している制御データから算出したハッシュ値（Ｂ）と、第３系間通信部８を介して受信したハッシュ値（Ａ）とを比較することにより、記憶部４ｂに保持している制御データが主系コントローラ２ａの記憶部４ａの保持されている制御データと一致するか否かを判定する。
【００１９】
図２は、主系コントローラ２ａおよび従系コントローラ２ｂがそれぞれ一制御周期で実行する処理を示すフローチャートである。
【００２０】
まず、主系コントローラ２ａが一制御周期で実行する処理について説明する。
【００２１】
まず、ステップＳ１１でプロセス入力処理を実行する。このプロセス入力処理では、プロセス入出力バス１０から各フィールド機器の情報を取得する。
【００２２】
ステップＳ１１に続き、ステップＳ１２で制御演算処理を実行する。この制御演算処理では、ステップＳ１１で取得した各フィールド機器の情報を基に制御データが生成される。
【００２３】
ステップＳ１２に続き、ステップＳ１３で、ステップＳ１２で生成した制御データからハッシュ値（Ａ）を算出する。
【００２４】
ステップＳ１３に続き、ステップＳ１４で、ステップＳ１２で生成した制御データを第２系間通信部７を介して従系コントローラ２ｂに転送する。
【００２５】
ステップＳ１４に続き、ステップＳ１５で、ステップＳ１３で算出したハッシュ値（Ａ）を第３系間通信部８を介して従系コントローラ２ｂに転送する。
【００２６】
ステップＳ１５に続き、ステップＳ１６で主系コントローラ２ａに異常があるか否かを判定する。主系コントローラ２ａの異常は、第１系間通信部６を介して従系コントローラ２ｂに通知される。
【００２７】
ステップＳ１６でＮｏ（自系に異常が無い）と判定した場合は、ステップＳ１９でプロセス出力処理を行い、現在の制御周期を終了する。このプロセス出力処理では、ステップＳ１２で生成した制御データがプロセス入出力バス２０に出力される。これにより、各フィールド機器が制御される。
【００２８】
ステップＳ１６でＹｅｓ（自系に異常がある）と判定した場合は、ステップＳ１７でコントローラ切替処理を実行する。コントローラ切替処理では、各フィールド機器を制御する主体を主系コントローラ２ａから従系コントローラ２ｂに切り替えるための処理が行われる。
【００２９】
ステップＳ１７に続き、ステップＳ１８でコントローラ切替処理が正常に行われたか否かを判定する。
【００３０】
ステップＳ１８でＹｅｓ（コントローラ切替処理が正常に行われた）と判定した場合は、プロセス出力処理を実行することなく、現在の制御周期を終了する。これにより、主系コントローラ２ａによる制御が終了する。
【００３１】
ステップＳ１８でＮｏ（コントローラ切替処理が正常に行われなかった）と判定した場合は、ステップＳ１９でプロセス出力処理を行い、現在の制御周期を終了する。
【００３２】
次に、従系コントローラ２ｂが一制御周期で実行する処理について説明する。
【００３３】
まず、ステップＳ２１で、主系コントローラ２ａが保持している最新の制御データを第２系間通信部７を介して受信する。
【００３４】
ステップＳ２２に続き、ステップＳ２３で、ステップＳ２１で受信した制御データからハッシュ値（Ｂ）を算出する。
【００３５】
ステップＳ２３に続き、ステップＳ２４で、第１系間通信部６を介して主系コントローラ２ａの異常が通知されているか否かを判定する。
【００３６】
ステップＳ２４でＮｏ（主系コントローラ２ａの異常が通知されていない）と判定した場合は、現在の制御周期を終了する。
【００３７】
ステップＳ２４でＹｅｓ（主系コントローラ２ａの異常が通知されている）と判定した場合は、ステップＳ２５で、ステップＳ２３で受信したハッシュ値（Ａ）とステップＳ２２で算出したハッシュ値（Ｂ）とが一致するか否かを判定する。これにより、従系コントローラ２ｂが保持している制御データが主系コントローラ２ａが保持している最新の制御データと一致するか否かを判定することができる。
【００３８】
ステップＳ２５でＹｅｓ（ハッシュ値（Ａ）とハッシュ値（Ｂ）とが一致する）と判定した場合は、ステップＳ２４でコントローラ切替処理を実行する。これにより、従系コントローラ２ｂが保持している制御データが主系コントローラ２ａが保持している最新の制御データと一致している状態で、制御主体を主系コントローラ２ａから従系コントローラ２ｂに切り替えることが可能となる。
【００３９】
ステップＳ２５でＮｏ（ハッシュ値（Ａ）とハッシュ値（Ｂ）とが一致しない）と判定した場合は、ステップＳ２６のコントローラ切替処理を実行することなく、現在の制御周期を終了する。これにより、従系コントローラ２ｂが保持している制御データが主系コントローラ２ａが保持している最新の制御データと一致していない状態で、制御主体が主系コントローラ２ａから従系コントローラ２ｂに自動で切り替わることを防止することができる。ここで、ハッシュ値（Ａ）とハッシュ値（Ｂ）とが一致しない原因としては、第２系間通信部７および第３系間通信部８の一方（特に通信ボーレートの高い第２系間通信部７）の故障が考えられる。このとき、第２系間通信部７および第３系間通信部８の他方（特に通信ボーレートの低い第２系間通信部７）が機能していることから、少なくとも主系コントローラ２ａの制御演算部３ａは正常に動作していることが保証されるため、主系コントローラ２ａによる制御を継続することができる。
【００４０】
ステップＳ２６に続き、ステップＳ２７で、ステップＳ２４のコントローラ切替処理が正常に実行されたか否かを判定する。
【００４１】
ステップＳ２７でＹｅｓ（ステップＳ２４のコントローラ切替処理が正常に実行された）と判定した場合は、ステップＳ２８で、ステップＳ２１で受信した制御データを基にプロセス出力処理を実行し、現在の制御周期を終了する。これにより、従系コントローラ２ｂが実行系コントローラ（制御主体）となる。
【００４２】
ステップＳ２７でＮｏ（ステップＳ２４のコントローラ切替処理が正常に実行されなかった）と判定した場合は、プロセス出力処理を実行することなく、現在の制御周期を終了する。
【００４３】
以上のように構成した本実施の形態に係る二重化制御システム１によれば、主系コントローラ２ａの異常発生時に、従系コントローラ２ｂが保持している制御データから算出したハッシュ値（Ｂ）と主系コントローラ２ａから第３系間通信部８を介して受信したハッシュ値（Ａ）とが一致している場合に限り、制御主体が主系コントローラ２ａから従系コントローラ２ｂに自動で切り替わる。これにより、従系コントローラ２ｂが保持している制御データが主系コントローラ２ａが保持している最新の制御データと一致している状態で、制御主体が主系コントローラ２ａから従系コントローラ２ｂに切り替わるため、制御の継続性を確保することができる。
【００４４】
以上、本発明の実施例について詳述したが、本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【００４５】
１…二重化制御システム、２ａ…主系コントローラ、２ｂ…従系コントローラ、３ａ，３ｂ…制御演算部、５ａ，５ｂ…プロセス入出力部、６…第１系間通信部、７…第２系間通信部、８…第３系間通信部、１０…プロセス入出力バス、１１〜１３…入出力基板変換部、１４…センサ、１５…バルブ、１６…ＰＬＣ。
【図１】
2019128820.tif 000003
【図２】
2019128820.tif 000004