(57)【要約】      （修正有）【課題】上位機器の汎用性が失われることを防止しながら通信可能な冗長コントローラを提供する。【解決手段】第１モジュール１００Ｐおよび第２モジュール１００Ｓを備え、第１モジュールおよび前記第２モジュールの少なくともいずれか一方の動作状態を診断するモジュール診断部１１２と、モジュール診断部が前記第１モジュールは非アクティブ状態であることを検出した場合に、第１モジュールにおいて収集されたプロセスデータを第２モジュールに転送する第１転送部１１４１と、第２モジュールにおいて第１モジュールから転送されたプロセスデータで過去のプロセスデータを更新する第１更新部１１４３と、第２モジュールにおいて更新された当該プロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方を第１モジュールに転送する第２転送部とを備える。【選択図】図２
2017021587.tif 000002
【特許請求の範囲】
【請求項１】
第１モジュールおよび第２モジュールを備えた二重化された冗長コントローラであって、
前記第１モジュールおよび前記第２モジュールの少なくともいずれか一方の動作状態を診断するモジュール診断部と、
前記モジュール診断部が前記第１モジュールは非アクティブ状態であることを検出した場合に、当該第１モジュールにおいて収集されたプロセスデータを第２モジュールに転送する第１転送部と、
前記第２モジュールにおいて前記第１モジュールから転送された前記プロセスデータで過去のプロセスデータを更新する第１更新部と、
前記第２モジュールにおいて更新された当該プロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方を前記第１モジュールに転送する第２転送部と、を備える、
冗長コントローラ。
【請求項２】
前記モジュール診断部が前記第１モジュールはアクティブ状態であることを検出した場合に、当該第１モジュールにおいて収集されたプロセスデータで過去のプロセスデータを更新する第２更新部をさらに備え、
前記第１モジュールの前記第１転送部は、更新された前記プロセスデータの少なくとも一部のプロセスデータを前記第２モジュールに転送する、
請求項１に記載の冗長コントローラ。
【請求項３】
前記第１モジュールおよび前記第２モジュールは、それぞれ、
収集した前記プロセスデータおよび前記過去のプロセスデータを記録する記録部と、
更新された前記プロセスデータと前記過去のプロセスデータとを比較する比較部と、をさらに備え、
更新された前記プロセスデータの少なくとも一部のプロセスデータは、更新された前記プロセスデータと前記過去のプロセスデータとの差分に対応するプロセスデータを含み、
前記第１または第２転送部は、前記差分に対応する前記プロセスデータおよび当該プロセスデータを識別する識別情報の少なくともいずれか一方を転送する、
請求項１又は２に記載の冗長コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスデータを取り扱うコントローラに係り、特に二重化構造を有する冗長コントローラに関する。
【背景技術】
【０００２】
従来から、化学製造プラント、石油精製プラント、その他製造プラント等の処理プラント内において使用されるプロセス制御コントローラが知られている。
【０００３】
具体的に、プロセス制御コントローラとして、例えば、特開２０１２−２０８７０６号公報には、プロセス内の複数の装置を制御するために使用される冗長コントローラであって、第１ノード（１００Ｐ）と第２ノード（１００Ｓ）とを備えた二重化された冗長コントローラ（１０）であって、第１ノードおよび第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段と、アクティブ状態となっているノードにおいてプロセスデータを収集し、収集したプロセスデータを非アクティブ状態となっているノードに転送する手段と、非アクティブ状態となっているノードにおいて、プロセスデータの収集を禁止し、アクティブ状態となっているノードから転送されたプロセスデータを更新する手段と、アクティブ状態となっているノードにおいて所定の条件に達した場合には、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える手段と、を備える冗長コントローラが開示されている(特許文献１)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２０８７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されているような、複数モジュールを備える冗長コントローラと、当該冗長コントローラのうち単一のノード（モジュール）のみと通信可能な上位機器と、が通信し当該上位機器が当該単一のモジュールからプロセスデータの書き込み・読み込みなどを実行する場合、当該上位機器は、通信相手である当該単一のモジュールの動作状態（アクティブ状態であるか非アクティブ状態であるか）をその都度診断しなければならないという問題があった。
【０００６】
また、このような問題を解決するために、上位機器が、通信するモジュールの状態を診断し、必要に応じて通信するモジュールを切り換える手段を備えるように構成することも可能である。しかしながら、上位機器が通信するモジュールの動作状態を診断する仕組みはモジュールごとに異なるため、それぞれのモジュール（仕組み）に対応するモジュール切換手段を上位機器が備える必要があるため、当該上位機器の汎用性が失われてしまうという新たな問題が生じるおそれがある。
【０００７】
そこで、本発明は、このような問題に対処するために、上位機器が、通信する冗長コントローラのモジュールの動作状態を都度診断しなければならないという状況を防止し当該上位機器の汎用性が失われることを防止しながら通信可能な冗長コントローラを提供することを課題の一つとしている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の冗長コントローラは、第１モジュールおよび第２モジュールを備えた二重化された冗長コントローラであって、前記第１モジュールおよび前記第２モジュールの少なくともいずれか一方の動作状態を診断するモジュール診断部と、前記モジュール診断部が前記第１モジュールは非アクティブ状態であることを検出した場合に、当該第１モジュールにおいて収集された前記プロセスデータを第２モジュールに転送する第１転送部と、前記第２モジュールにおいて前記第１モジュールから転送された前記プロセスデータで過去のプロセスデータを更新する第１更新部と、前記第２モジュールにおいて更新された当該プロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方を前記第１モジュールに転送する第２転送部と、を備える。
【発明の効果】
【０００９】
本発明によれば、非アクティブ状態であると検出されたモジュールにおいて収集されたプロセスデータをアクティブ状態であるモジュールに転送し、アクティブ状態であるモジュールモジュールにおいて非アクティブ状態であるモジュールから転送されたプロセスデータで過去のプロセスデータを更新し、アクティブ状態であるモジュールにおいて更新された当該プロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方を非アクティブ状態であるモジュールに転送するので、上位機器が、通信する冗長コントローラのモジュールの動作状態を都度診断しなければならないという状況を防止し、当該上位機器の汎用性が失われることを防止しながら通信することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るプロセス制御システムの概略図である。
【図２】本発明の実施形態に係る冗長コントローラのブロック図である。
【図３】本発明の実施形態に係る冗長コントローラにおける処理シーケンス図の一例である。
【図４】本発明の実施形態に係る冗長コントローラにおける処理シーケンス図の他の一例である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。即ち、本発明は、その趣旨を逸脱しない範囲で種々変形（各実施例を組み合わせる等）して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。
【００１２】
＜定義＞
「プロセスデータ」：プロセス制御システムにおける装置・機器（主にフィールド機器）から送信される測定値または当該装置・機器に対する設定値、制御値等のデータをいう。
「アクティブ状態」：冗長コントローラにおいてモジュールの動作を許可された状態をいう。
「非アクティブ状態」：冗長コントローラにおいてモジュールの少なくとも一部の動作が禁止された状態をいう。
【００１３】
図１に、本実施形態に係るプロセス管理システムの構成図を示す。図１に示すように、本実施形態のプロセス管理システムは、例示的に、冗長コントローラ１０が接続されるユニバーサルバス１とローカルバス２との間に接続されて構成されている。ユニバーサルバス１には、例示的に、冗長コントローラ１０の他に、プロセスコントローラ１１が通信可能に接続されている。ローカルバス２には、冗長コントローラ１０の他に、Ｉ／Ｏサーバ３１、およびシリアル通信ユニット３３が、相互に通信可能に接続されている。
【００１４】
ユニバーサルバス１は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）(Ethernet)により装置間を相互に接続するバスである。
【００１５】
スーパーバイザリステーション２０は、後述する冗長コントローラ１０の各モジュール１００Ｐ，Ｓのいずれか一方とのみ通信可能な、プロセス管理システムにおける上位機器であり、ユニバーサルバス１に接続する各種コントローラが管理する外部機器（フィールド機器など）から供給される測定信号等に基づいて、プロセス管理システム全体の運転内容を監視し、各外部機器に対する制御信号を送信する管理装置である。スーパーバイザリステーション２０は、ユニバーサルバス１に接続される冗長コントローラ１０やプロセスコントローラ１１、ローカルバス２に接続されるフィールド機器類の運転内容をモニタに表示可能に構成されている。運用者は、表示内容を見ることにより、プロセス管理システム全体の運転内容を把握することが可能である。スーパーバイザリステーション２０は、システムに接続される装置やフィールド機器等のプロセスデータを外部装置に書き込み可能に、そして外部装置から読み込み可能に構成されている。
【００１６】
冗長コントローラ１０は、互いに同一の構成を備えたプライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとが並行して動作可能に構成されている。例えば、冗長コントローラ１０は、ＯＰＣサーバであるＩ/Ｏサーバ３１に対するＯＰＣクライアントの一つとして位置付けられたコントローラである。冗長コントローラ１０の詳細な構成については、図２を参照して後述する。特に本実施形態では、冗長コントローラ１０は、ユニバーサルバス１の系統とローカルバス２の系統との間で情報を受け渡すためのゲートウェイとして機能する。
【００１７】
プロセスコントローラ１１は、冗長コントローラ１０と同様に、自ら管理するローカルバスに接続された各種機器で構成されるサブシステムを管理する制御手段であり、必要に応じて設けられる。しかしながら、プロセスコントローラ１１は、冗長コントローラ１０と異なり、各モジュールを区別して通信するような構成は備えていない。
【００１８】
ローカルバス２は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）により装置間を相互に接続するバスである。ローカルバス２は、例えば工場内のコンピュータ機器を相互に接続する工場ＬＡＮ（Local Area Network）に相当する。
【００１９】
Ｉ／Ｏサーバ３１は、ローカルバス２に接続される機器に対するＯＰＣサーバの一つとして機能し、これら機器に対する監視および管理を実施する管理装置である。Ｉ／Ｏサーバ３１は、ＯＰＣ規格に準拠した通信プロトコルで通信可能に構成されている。また、Ｉ／Ｏサーバ３１には、フィールド機器４１に直接接続されている。Ｉ／Ｏサーバ３１とフィールド機器４１とは、シリアル通信ケーブルにより相互に接続されている。フィールド機器４１は、流量、圧力、温度等の所定の物理量を測定する測定ポイント又は制御する制御ポイントとして機能可能に構成されている。フィールド機器４１は、例えば、流量センサや圧力センサ、温度センサ等の各種センサ、温度調節器や圧力・流量・開閉制御弁等の各種弁装置、ポンプやブロア、ファン等のモータ、アクチュエータ機器類である。
【００２０】
シリアル通信ユニット３３は、それぞれがＯＰＣクライアントとして動作するフィールド機器４３、４４、４５に接続されている。シリアル通信ユニット３３は、Ｉ/Ｏサーバ３１から供給された設定値をシリアル信号に変換してフィールド機器４３−４５に供給する。またフィールド機器４３−４５の測定値がローカルバス２経由で通知される。フィールド機器４３−４５は、前述したフィールド機器４１と同様の測定ポイントまたは制御ポイントとして機能し、それぞれの機器に割り当てられた物理量を測定して測定値を出力し、また、入力された設定値に基づいて動作するように構成されている。
【００２１】
図２に、本実施形態における冗長コントローラ１０のブロック図を示す。図２に示すように、冗長コントローラ１０は、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとを備えて構成されている。冗長コントローラ１０の各モジュールは、ユニバーサルバス１とローカルバス２との間でプロセスデータの送受信を中継するゲートウェイとして機能する。プライマリモジュール１００Ｐおよびセカンダリモジュール１００Ｓの各々は、ローカルバス２に接続するＩ／Ｏサーバ３１、シリアル通信ユニット３３、およびフィールド機器４１，４３，４４，４５などを統合し制御するコントローラとして機能する。
【００２２】
冗長コントローラ１０は、自己のモジュールをアクティブ状態としたり非アクティブ状態としたりする切り換え処理を実行することができる。例えば、各機能ブロックを実現するソフトウェアモジュールが参照可能なグローバルなメモリエリアにアクティブ状態／非アクティブ状態を示すフラグを設け、所定の条件に合致した場合にこのフラグを書き換えることによって達成できる。各機能ブロックを実現するソフトウェアモジュールでは、当該フラグを参照して、アクティブ状態／非アクティブ状態の別に応じた処理を実行するように構成すればよい。
【００２３】
上記所定の条件とは、アクティブ状態であるモジュールにおいて動作不全が発生したことを推測可能な条件に達したこと、などである。また、たとえば、アクティブ状態のモジュールに不具合が生じた場合に、当該モジュールを交換して相手側のモジュールを使用するため、運用者により、非アクティブ状態である相手側のモジュールはアクティブ状態に切り替えられる。
【００２４】
なお、本実施形態においてスーパーバイザリステーション２０は、冗長コントローラ１０とは異なり、通信相手である、冗長コントローラ１０の単一のモジュールがアクティブ状態であるか非アクティブ状態であるかをその都度診断したり、単一のモジュールの状態を自由に切り替えたりするような構成は備えていない。
【００２５】
冗長コントローラ１０は、所定のソフトウェアプログラムを実行することにより、非限定の例示として、特に以下の手段を実行可能に構成されている点に特徴がある。
（１）第１モジュールおよび第２モジュールの少なくともいずれか一方の動作状態を診断するモジュール診断部。
（２）モジュール診断部が第１モジュールは非アクティブ状態であることを検出した場合に、第１モジュールにおいて収集されたプロセスデータを第２モジュールに転送する第１転送部。
（３）第２モジュールにおいて第１モジュールから転送されたプロセスデータで過去のプロセスデータを更新する第１更新部。
（４）第２モジュールにおいて更新されたプロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方を第１モジュールに転送する第２転送部。
【００２６】
図２は、アクティブ状態であるモジュールがプライマリモジュール１００Ｐであり、非アクティブ状態であるモジュールがセカンダリモジュール１００Ｓである場合を例示している。たとえば、上記（２）に示すように、非アクティブ状態のモジュールの第１転送部により、収集されたプロセスデータが転送されているが、非アクティブ状態のモジュールにおいては、収集されたプロセスデータで過去のプロセスデータの更新処理は実行できないようにプログラムされており、アクティブ状態のモジュールにおいて更新処理を実行するために収集されたプロセスデータはアクティブ状態のモジュールに転送するようにプログラムされている。以下、プライマリモジュール１００Ｐに含まれる構成については符号Ｐを追記し、セカンダリモジュール１００Ｓに含まれる構成については符号Ｓを追記する。またいずれのモジュールにおいても共通して構成を説明する際には、符号Ｐ/Ｓを追記することなく構成の符号を記述する。
【００２７】
プライマリモジュール１００Ｐは、例示的に、冗長処理部１１０Ｐと、通信部１２０Ｐと、収集部１３０Ｐと、入出力演算部１４０Ｐと、収集部１５０Ｐと、通信部１６０Ｐとを備える。セカンダリモジュール１００Ｓは、例示的に、冗長処理部１１０Ｓと、通信部１２０Ｓと、収集部１３０Ｓと、入出力演算部１４０Ｓと、収集部１５０Ｓと、通信部１６０Ｓとを備える。以下、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとで共通の構成や動作を説明する場合には、符号ＰおよびＳを省略して説明する。上記した冗長コントローラ１０の手段（１）−（４）は、上記各機能ブロックのうち一つまたは複数が協働することにより機能的に実現される。
【００２８】
冗長処理部１１０は、本発明に特徴的な機能ブロックであり、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間で、それぞれが記憶するプロセスデータの同期をとる（プロセスデータの内容を同一にすること）、相手側のモジュールの動作状況を診断したり、自己のモジュールの動作状況を診断したりする機能ブロックである。冗長処理部１００は、例示的に、モジュール診断部１１２と、データベース同期部１１４とを備えている。
【００２９】
モジュール診断部１１２は、たとえば、自己のモジュールの動作状態を診断する機能ブロックである。モジュール診断部１１２は、たとえば、自己のモジュールが記録するモジュールの状態を示す識別子に基づいて自己のモジュールが、アクティブ状態であるか、又は、非アクティブ状態であるかを検出する。例えば、自己のモジュールは、各機能ブロックを実現するソフトウェアモジュールが参照可能なグローバルなメモリエリアにアクティブ状態／非アクティブ状態を示すフラグ（識別子）を設け、ソフトウェアモジュールが、当該フラグを参照することにより、自己のモジュールの動作状態（アクティブ状態／非アクティブ状態）を診断する処理を実行するように構成されている。
【００３０】
また、モジュール診断部１１２は、たとえば、相手側のモジュールの動作状態を診断する機能ブロックである。モジュール診断部１１２は、たとえば、相手側のモジュールの動作状態を示す識別子をあらかじめ取得し、当該識別子に基づいて相手側のモジュールが、アクティブ状態であるか、又は、非アクティブ状態であるかを検出する。例えば、相手側のモジュールは、各機能ブロックを実現するソフトウェアモジュールが参照可能なグローバルなメモリエリアにアクティブ状態／非アクティブ状態を示すフラグ（識別子）を設けており、自己のモジュールは、相手側のモジュールから当該識別子を受信し、ソフトウェアモジュールが当該フラグを参照することにより、相手側のモジュールの動作状態（アクティブ状態／非アクティブ状態）を診断する処理を実行するように構成されている。
【００３１】
なお、自己のモジュールのモジュール診断部１１２と相手側のモジュールの相手モジュール診断部１１２との通信は、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとを直接接続するバスを介して送受信するように構成されている。また、モジュール診断部１１２は自己のモジュールがアクティブ状態であるか非アクティブ状態であるかに拘わらず動作するように構成されている。
【００３２】
データベース同期部１１４は、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間で、それぞれが同一のプロセスデータを記憶可能にプロセスデータの同期処理、プロセスデータの送受信を行う機能ブロックである。
【００３３】
また、データベース同期部１１４は、各モジュールにおいてアクティブ状態と非アクティブ状態とを切り換える場合に、必要に応じて、それまでアクティブ状態であったモジュール側のデータベース同期部１１４がそれまで非アクティブ状態であったモジュール側のデータベース同期部１１４に対し、全てのプロセスデータを一括送信する。例えば起動開始から時間が経過していないため、それまで非アクティブ状態であったモジュールにおいてプロセスデータが更新されていない場合や、何からの事情でプロセスデータが喪失したりプロセスデータに欠陥が生じていたりする可能性がある場合である。全てのプロセスデータの転送は、いずれか一方のモジュールから他方のモジュールに対して全プロセスデータ転送を要求することによって実行されるように構成することが好ましい。
データベース同期部１１４は、例示的に、転送部１１４１と、更新部１１４３と、比較部１１４５と、算出部１１４７とを備えている。
【００３４】
転送部１１４１は、収集されたプロセスデータ又は更新されたプロセスデータを転送する機能ブロックである。たとえば、モジュール診断部１１２が自己のモジュールは非アクティブ状態であることを検出した（自己のモジュールがセカンダリモジュール１００Ｓであると検出した）場合に、転送部１１４１Ｓ（第１転送部）は、セカンダリモジュール１００Ｓにおいて収集されたプロセスデータをプライマリモジュール１００Ｐに所定のタイミングで転送する。また、モジュール診断部１１２が自己のモジュールがセカンダリモジュール１００Ｓであると検出した場合に、転送部１１４１Ｐ（第２転送部）は、転送部１１４１Ｓにより転送されたプロセスデータであって、プライマリモジュール１００Ｐにおいて更新されたプロセスデータの少なくとも一部をセカンダリモジュール１００Ｓに転送する。
【００３５】
さらに、モジュール診断部１１２が自己のモジュールはアクティブ状態であることを検出した（自己のモジュールがプライマリモジュール１００Ｐであると検出した）場合に、転送部１１４１Ｐ（第１転送部）は、プライマリモジュール１００Ｐにおいて更新されたプロセスデータの少なくとも一部をセカンダリモジュール１００Ｓに所定のタイミングで転送する。
【００３６】
更新部１１４３は、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間でプロセスデータを同期するために、プロセスデータを更新する機能ブロックである。たとえば、モジュール診断部１１２が自己のモジュールがセカンダリモジュール１００Ｓであると検出した場合に、更新部１１４３Ｐ（第１更新部）は、転送部１１４１Ｓ（第１転送部）により転送されたプロセスデータで過去のプロセスデータを更新する。また、モジュール診断部１１２が自己のモジュールがプライマリモジュール１００Ｐであると検出した場合に、更新部１１４３Ｐ（第２更新部）は、プライマリモジュール１００Ｐにおいて収集したプロセスデータで過去のプロセスデータを更新する。なお、過去のプロセスデータとは、収集部１３０，１５０が現に収集している、又は、過去に収集したプロセスデータである。収集されたプロセスデータは、一時的に又は長期的にデータベース１７０に格納されてもよい。
【００３７】
比較部１１４５は、更新されたプロセスデータと過去のプロセスデータとを比較する機能ブロックである。算出部１１４７は、更新されたプロセスデータと過去のプロセスデータとの差分を算出する機能ブロックである。ここで、転送部１１４１により転送される更新されたプロセスデータの少なくとも一部のプロセスデータとは、更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータを含む。
（１）更新されたプロセスデータと過去のプロセスデータとの差分は、たとえば、過去のプロセスデータが更新された際に、過去のプロセスデータに対して新たに追加されたプロセスデータを含む。具体的には、更新されたプロセスデータがＡ、Ｂ、Ｃであり、過去のプロセスデータがＡ、Ｂの場合、更新されたプロセスデータと過去のプロセスデータとの差分は、プロセスデータＣである。
（２）更新されたプロセスデータと過去のプロセスデータとの差分は、たとえば、過去のプロセスデータが更新された際に、過去のプロセスデータのうち削除されたプロセスデータを含む。具体的には、更新されたプロセスデータがＡ、Ｃであり、過去のプロセスデータがＡ、Ｂ、Ｃの場合、更新されたプロセスデータと過去のプロセスデータとの差分は、プロセスデータＢである。
（３）更新されたプロセスデータと過去のプロセスデータとの差分は、たとえば、過去のプロセスデータが更新された際に、過去のプロセスデータに対して新たに追加されたプロセスデータ、および過去のプロセスデータのうち削除されたプロセスデータの双方を含んでもよい。
【００３８】
たとえば、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓが、更新されたプロセスデータと過去のプロセスデータとの差分に基づいて過去のプロセスデータを更新する場合、プライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、データベース同期部１１４Ｐにおいて更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータや、当該差分に対応するプロセスデータが、プロセスデータ更新処理の際に新たに追加されたデータであるのか／削除されたデータであるのかを示す識別情報を、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓに送信する。そして、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓは、当該差分に対応するプロセスデータおよび識別情報に基づいて過去のプロセスデータを更新する。
【００３９】
更新されたプロセスデータと過去のプロセスデータとの差分が、上記（１）〜（３）に該当する場合のプロセスデータの更新処理について以下に説明する。
（１）プライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、データベース同期部１１４Ｐにおいて更新されたプロセスデータ（Ａ、Ｂ、Ｃ）と過去のプロセスデータ（Ａ、Ｂ）との差分に対応するプロセスデータ（Ｃ）と、プロセスデータ（Ｃ）が更新の際に新たに追加されたプロセスデータであることを示す識別情報と、をセカンダリモジュール１００Ｓのデータベース同期部１１４Ｓに送信する。そして、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓは、当該識別情報を参照することで、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータ（Ａ、Ｂ）にプライマリモジュール１００Ｐからのプロセスデータ（Ｃ）を追加することにより、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータを更新する。
（２）プライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、データベース同期部１１４Ｐにおいて更新されたプロセスデータ（Ａ、Ｃ）と過去のプロセスデータ（Ａ、Ｂ、Ｃ）との差分に対応するプロセスデータ（Ｂ）が更新の際に削除されたプロセスデータであることを示す識別情報のみをセカンダリモジュール１００Ｓのデータベース同期部１１４Ｓに送信する。そして、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓは、当該識別情報を参照することで、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータ（Ａ、Ｂ、Ｃ）からプロセスデータ（Ｂ）を削除することにより、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータを更新する。
（３）プライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、データベース同期部１１４Ｐにおいて更新されたプロセスデータ（Ａ、Ｃ、Ｄ）と過去のプロセスデータ（Ａ、Ｂ、Ｃ）との差分に対応するプロセスデータ（Ｄ）と、プロセスデータ（Ｂ）が更新の際に削除されたプロセスデータであり、プロセスデータ（Ｄ）が新たに追加されたプロセスデータであることを示す識別情報と、をセカンダリモジュール１００Ｓのデータベース同期部１１４Ｓに送信する。そして、セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓは、当該識別情報を参照することで、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータ（Ａ、Ｂ、Ｃ）にプライマリモジュール１００Ｐからのプロセスデータ（Ｄ）を追加し、プロセスデータ（Ｂ）を削除することにより、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータを更新する。
このように、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間において、一方のモジュールにおいて更新されたプロセスデータの全てを相手方のモジュールに転送することなく、更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータおよび／または所定の識別情報のみ送信することにより、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間でプロセスデータを同期することが可能となるので、データ送信量の削減が可能となる。
【００４０】
なお、アクティブ状態であるプライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、過去のプロセスデータに対して更新されたプロセスデータの全てを非アクティブ状態であるセカンダリモジュール１００Ｓのデータベース同期部１１４Ｓに送信するように構成されてもよい。プライマリモジュール１００Ｐのデータベース同期部１１４Ｐは、更新されたプロセスデータを任意のタイミングでデータベース１７０Ｐに記録する。セカンダリモジュール１００Ｓのデータベース同期部１１４Ｓは、プライマリモジュール１００Ｐのデータベース同期部１１４Ｐから更新されたプロセスデータの全てを受信すると、当該プロセスデータを過去のプロセスデータに上書きすることで当該過去のプロセスデータを更新する。データベース同期部１１４Ｓは、任意のタイミングで更新されたプロセスデータをデータベース１７０Ｓに記録する。データベース同期部１１４は、上記処理を実行することにより、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとの間で、それぞれが同一のプロセスデータを記憶・保持することを可能にする。
【００４１】
なお、二つのモジュールのデータベース同期部１１４間のプロセスデータは、データ量が相対的に多い場合に備えて、高速バスであるユニバーサルバス１を経由して転送される。ただし、更新するプロセスデータのようにデータ量が相対的に少ない場合には、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとを直接接続する所定バスを介して送受信するように構成してもよい。
【００４２】
通信部１２０は、ユニバーサルバス１を介してスーパーバイザリステーション２０やプロセスコントローラ１１と相互通信するためのブロックである。通信部１２０は、ユニバーサルバス１のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。
【００４３】
収集部１３０は、ローカルバス１を介してシステム上位機器類から供給された測定値に関するプロセスデータを収集する機能ブロックである。収集部１３０は、たとえば、スーパーバイザリステーション２０からローカルバス１を介して書き込まれたプロセスデータを収集し、冗長処理部１１０に出力する。
【００４４】
収集部１５０は、測定値に関するプロセスデータを収集する機能ブロックである。収集するプロセスデータとしては、フィールド機器類から直流信号で直接供給されたアナログ測定値や、ローカルバス２に接続されるモジュールから供給されたデジタル測定値である。収集部１５０は、自己のモジュールがアクティブ状態である場合にのみ動作し、非アクティブ状態である場合には動作を停止するように構成されている。なお、収集部１５０は、たとえば、制御値に関するプロセスデータを出力し、フィールド機器等の外部機器に所望の制御値を設定するように構成されてもよい。設定するプロセスデータとしては、たとえば、温度調節器や圧力・流量・開閉制御弁等の各種弁装置に対して出力するアナログ設定値やデジタル設定値、ポンプやブロア、ファン等のモータ、アクチュエータ機器類に対するロジック値等である。
【００４５】
通信部１６０は、ローカルバス２を介してフィールド機器類から供給された測定値であるプロセスデータを受信し、フィールド機器類に対する設定値であるプロセスデータを出力するブロックである。通信部１６０は、ローカルバス２のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。特に本実施形態における通信部１６０は、ＯＰＣ規格に準拠したインターフェースを備えており、ＯＰＣ規格に準拠した通信プロトコルで通信するＩ／Ｏサーバ３１と通信可能に構成されている。
【００４６】
入出力演算部１４０は、プロセスデータの入出力を制御し、必要な演算処理を実施してデータを加工し、加工したデータを出力する機能ブロックである。非限定の例示として、入出力演算部１４０は、以下のような処理を実行する。
【００４７】
入出力演算部１４０は、収集部１５０が収集したプロセスデータをスーパーバイザリステーション２０の要求に応じて転送する。入出力演算部１４０は、収集したプロセスデータに補正、抽出、加算・積算・平均・時間軸移動処理等の演算を施して出力する。入出力演算部１４０は、収集したプロセスデータに応じて所定の制御値または制御データを生成して出力する。入出力演算部１４０は、自己のモジュールがアクティブ状態である場合に動作し、非アクティブ状態である場合には動作を停止する。
【００４８】
＜動作の説明＞
以下、図３および４の処理シーケンス図を参照しながら、冗長コントローラ１０の動作を説明する。
図３の処理シーケンス図は、たとえば、スーパーバイザリステーション２０がプロセスデータの書き込みを実行する、冗長コントローラ１０のモジュールがセカンダリモジュール１００Ｓ（非アクティブ状態であるモジュール）である場合のデータベース同期処理を例示している。
図４の処理シーケンス図は、たとえば、スーパーバイザリステーション２０がプロセスデータの書き込みを実行する、冗長コントローラ１０のモジュールがプライマリモジュール１００Ｐ（アクティブ状態であるモジュール）である場合のデータベース同期処理を例示している。
【００４９】
＜スーパーバイザリステーション２０がセカンダリモジュール１００Ｓと通信する場合＞
前提として、収集部１５０は、外部機器（フィールド機器など）からプロセスデータを収集している。入出力演算処理部１４０は、収集したプロセスデータに対して、必要な演算処理を施し、スーパーバイザリステーション２０の要求に応じて転送している。そして、スーパーバイザリステーション２０は、冗長コントローラ１０のモジュールにプロセスデータの書き込みを実行する。
【００５０】
まず、図３のステップＳＰ１において、モジュール診断部１１２は、スーパーバイザリステーション２０がプロセスデータの書き込みを実行するモジュールの動作状態を診断する。
【００５１】
次に、ステップＳＰ２において、モジュール診断部１１２が、スーパーバイザリステーション２０がプロセスデータの書き込みを実行するモジュールは非アクティブ状態であること（セカンダリモジュール１００Ｓであること）を検出した場合に、転送部１１４１Ｓは、収集されたプロセスデータを相手側のモジュール（プライマリモジュール１００Ｐ）に転送する。なお、セカンダリモジュール１００Ｓにおいて、後述する、過去のプロセスデータの更新処理は実行できないようにプログラムされており、スーパーバイザリステーション２０から書き込まれたプロセスデータは、プライマリモジュール１００Ｐに転送するようにプログラムされている。
【００５２】
次に、ステップＳＰ３において、プライマリモジュール１００Ｐの更新部１１４３Ｐにおいて、セカンダリモジュール１００Ｓから転送されたプロセスデータで過去のプロセスデータを更新する。プライマリモジュール１００Ｐは、更新されたプロセスデータをデータベース１７０Ｐに記録する。たとえば、過去のプロセスデータがＡ、Ｂであり、転送されたプロセスデータがＡ、Ｂ、Ｃである場合、プライマリモジュール１００Ｐの更新部１１４３Ｐは、転送されたプロセスデータＡ、Ｂ、Ｃを過去のプロセスデータＡ、Ｂに上書きすることで過去のプロセスデータを更新する。プライマリモジュール１００Ｐは、更新されたプロセスデータＡ、Ｂ、Ｃをデータベース１７０Ｐに記録する。
【００５３】
次に、ステップＳＰ４において、プライマリモジュール１００Ｐの転送部１１４１Ｐは、プライマリモジュール１００Ｐにおいて更新されたプロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの識別情報の少なくともいずれか一方をセカンダリモジュール１００Ｓに転送する。たとえば、プライマリモジュール１００Ｐの転送部１１４１Ｐは、更新されたプロセスデータＡ、Ｂ、Ｃと過去のプロセスデータがＡ、Ｂとの差分に対応するプロセスデータ（Ｃ）と、プロセスデータ（Ｃ）が更新の際に新たに追加されたプロセスデータであることを示す識別情報と、をセカンダリモジュール１００Ｓに送信する。
【００５４】
次に、ステップＳＰ５において、セカンダリモジュール１００Ｓは、プロセスデータを更新し、更新されたプロセスデータをデータベース１７０Ｓに記録する。たとえば、セカンダリモジュール１００Ｓは、プロセスデータ（Ｃ）と、プロセスデータ（Ｃ）が更新の際に新たに追加されたプロセスデータであることを示す識別情報とを受信し、当該識別情報を参照することで、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータ（Ａ、Ｂ）にプライマリモジュール１００Ｐからのプロセスデータ（Ｃ）を追加することにより、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータを更新し、更新されたプロセスデータＡ、Ｂ、Ｃをデータベース１７０Ｓに格納する。
【００５５】
ステップＳＰ１−ＳＰ５までは、所定の周期で繰り返し実行されてもよいし、スーパーバイザリステーション２０がセカンダリモジュール１００Ｓと通信を開始するごとに実行されてもよい。
【００５６】
以上、ステップＳＰ１−ＳＰ５により、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとのデータベース（プロセスデータ）の同期（等値化）処理が完了する。
【００５７】
＜スーパーバイザリステーション２０がプライマリモジュール１００Ｐと通信する場合＞
前提として、収集部１５０は、外部機器（フィールド機器など）からプロセスデータを収集している。入出力演算処理部１４０は、収集したプロセスデータに対して、必要な演算処理を施し、スーパーバイザリステーション２０の要求に応じて転送している。そして、スーパーバイザリステーション２０は、冗長コントローラ１０のモジュールにプロセスデータの書き込みを実行する。
【００５８】
まず、図４のステップＳＰ１１において、モジュール診断部１１２は、スーパーバイザリステーション２０がプロセスデータの書き込みを実行するモジュールの動作状態を診断する。
【００５９】
次に、ステップＳＰ１２において、モジュール診断部１１２が、スーパーバイザリステーション２０がプロセスデータの書き込みを実行するモジュールはアクティブ状態であること（プライマリモジュール１００Ｐであること）を検出した場合に、プライマリモジュール１００Ｐの更新部１１４３Ｐは、プライマリモジュール１００Ｐにおいて収集されたプロセスデータで過去のプロセスデータを更新する。プライマリモジュール１００Ｐは、更新されたプロセスデータをデータベース１７０Ｐに記録する。たとえば、過去のプロセスデータがＡ、Ｂであり、収集されたプロセスデータがＡ、Ｂ、Ｃである場合、プライマリモジュール１００Ｐの更新部１１４３Ｐは、収集されたプロセスデータＡ、Ｂ、Ｃを過去のプロセスデータＡ、Ｂに上書きすることで過去のプロセスデータを更新する。プライマリモジュール１００Ｐは、更新されたプロセスデータＡ、Ｂ、Ｃをデータベース１７０Ｐに記録する。
【００６０】
次に、ステップＳＰ１３において、プライマリモジュール１００Ｐの転送部１１４１Ｐは、プライマリモジュール１００Ｐにおいて更新されたプロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの識別情報の少なくともいずれか一方をセカンダリモジュール１００Ｓに転送する。たとえば、プライマリモジュール１００Ｐの転送部１１４１Ｐは、更新されたプロセスデータＡ、Ｂ、Ｃと過去のプロセスデータがＡ、Ｂとの差分に対応するプロセスデータ（Ｃ）と、プロセスデータ（Ｃ）が更新の際に新たに追加されたプロセスデータであることを示す識別情報と、をセカンダリモジュール１００Ｓに送信する。
【００６１】
次に、ステップＳＰ１４において、セカンダリモジュール１００Ｓは、プロセスデータを更新し、更新されたプロセスデータをデータベース１７０Ｓに記録する。たとえば、セカンダリモジュール１００Ｓは、プロセスデータ（Ｃ）と、プロセスデータ（Ｃ）が更新の際に新たに追加されたプロセスデータであることを示す識別情報とを受信し、当該識別情報を参照することで、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータ（Ａ、Ｂ）にプライマリモジュール１００Ｐからのプロセスデータ（Ｃ）を追加することにより、セカンダリモジュール１００Ｓに記録されている過去のプロセスデータを更新し、更新されたプロセスデータＡ、Ｂ、Ｃをデータベース１７０Ｓに格納する。
【００６２】
ステップＳＰ１１−ＳＰ１４までは、所定の周期で繰り返し実行されてもよいし、スーパーバイザリステーション２０がプライマリモジュール１００Ｐと通信を開始するごとに実行されてもよい。
【００６３】
以上、ステップＳＰ１１−ＳＰ１４により、プライマリモジュール１００Ｐとセカンダリモジュール１００Ｓとのデータベース（プロセスデータ）の同期（等値化）処理が完了する。
【００６４】
＜本実施形態の効果＞
以上のように説明した本実施形態によれば、セカンダリモジュール１００Ｓにおいて収集されたプロセスデータをプライマリモジュール１００Ｐに転送し、プライマリモジュール１００Ｐにおいてセカンダリモジュール１００Ｓから転送されたプロセスデータで過去のプロセスデータを更新し、プライマリモジュール１００Ｐにおいて更新された当該プロセスデータの少なくとも一部のプロセスデータおよび当該プロセスデータの少なくとも一部のプロセスデータを識別する識別情報の少なくともいずれか一方をセカンダリモジュール１００Ｓに転送するので、スーパーバイザリステーション２０が、通信する冗長コントローラ１０のモジュールの動作状態を都度診断しなければならないという状況を防止し、スーパーバイザリステーション２０の汎用性が失われることを防止しながら通信することができる。
【００６５】
（その他の実施形態）
本発明は上記各実施形態に限定されることなく種々に変更して利用することができる。例えば、上記実施形態では、ＯＰＣサーバ（Ｉ／Ｏサーバ３１）はＯＰＣクライアントである冗長コントローラと離れたモジュールとして説明したが、冗長コントローラ１０のそれぞれのモジュールはＯＰＣサーバを備えるか、ＯＰＣサーバそのものであってもよい。
【符号の説明】
【００６６】
１…ユニバーサルバス
２…ローカルバス
１０…冗長コントローラ
１１…プロセスコントローラ
２０…スーパーバイザリステーション
３１…Ｉ／Ｏサーバ
３３…シリアル通信ユニット
４１，４３−４５…フィールド機器
１００Ｐ…プライマリモジュール
１００Ｓ…セカンダリモジュール
１１０Ｐ、１１０Ｓ…冗長処理部
１１２Ｐ、１１２Ｓ…モジュール診断部
１１４Ｐ、１１４Ｓ…データベース同期部
１２０Ｐ、１２０Ｓ…通信部
１３０Ｐ、１３０Ｓ…収集部
１４０Ｐ、１４０Ｓ…入出力演算処理部
１５０Ｐ、１５０Ｓ…収集部
１６０Ｐ、１６０Ｓ…通信部
１７０Ｐ、１７０Ｓ…データベース
１１４１Ｐ、１１４１Ｓ…転送部
１１４３Ｐ、１１４３Ｓ…更新部
１１４５Ｐ、１１４５Ｓ…比較部
１１４７Ｐ、１１４７Ｓ…算出部
【図１】
2017021587.tif 000003
【図２】
2017021587.tif 000004
【図３】
2017021587.tif 000005
【図４】
2017021587.tif 000006