(57)【要約】【課題】二重化構造を備えることでプロセスデータが監視不能となることを防止しながら、通信負荷の増大を防止することが可能な冗長コントローラ装置を提供する。【解決手段】第１ノード（１００Ｐ）と第２ノード（１００Ｓ）とを備えた二重化された冗長コントローラ（１０）であって、第１ノードおよび第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段と、アクティブ状態となっているノードにおいてプロセスデータを収集し、収集したプロセスデータを非アクティブ状態となっているノードに転送する手段と、非アクティブ状態となっているノードにおいて、プロセスデータの収集を禁止し、アクティブ状態となっているノードから転送されたプロセスデータを更新する手段と、アクティブ状態となっているノードにおいて所定の条件に達した場合には、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える手段と、を備える。【選択図】図２
2012208706.tif 000002
【特許請求の範囲】
【請求項１】
第１ノードと第２ノードとを備えた二重化された冗長コントローラであって、
前記第１ノードおよび前記第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段と、
前記アクティブ状態となっているノードにおいてプロセスデータを収集し、収集した前記プロセスデータを前記非アクティブ状態となっているノードに転送する手段と、
前記非アクティブ状態となっているノードにおいて、前記プロセスデータの収集を禁止し、前記アクティブ状態となっているノードから転送された前記プロセスデータを更新する手段と、
前記アクティブ状態となっているノードにおいて所定の条件に達した場合には、前記アクティブ状態となっているノードを非アクティブ状態に切り換え、前記非アクティブ状態となっているノードをアクティブ状態に切り換える手段と、を備える、
冗長コントローラ。
【請求項２】
前記所定の条件は、
前記アクティブ状態となっているノードにおいて動作不全が発生したことを推測可能な条件に達したこと、または、
上位の機器監視装置から前記アクティブ状態とするノードと前記非アクティブ状態とするノードとの切り換えを指示されたこと、の少なくともいずれか一方である、
請求項１に記載の冗長コントローラ。
【請求項３】
前記第１ノードおよび前記第２ノードは、それぞれ、
相手側のノードの動作状態を診断する相手ノード診断部を備え、
前記相手ノード診断部は、前記相手側のノードから一定期間データが送信されないこと、または、前記相手側のノードから自己のノードが動作不全となったことを報知されたこと、のいずれかを条件として、自らのノードをアクティブ状態に切り換える、
請求項１または２に記載の冗長コントローラ。
【請求項４】
前記第１ノードおよび前記第２ノードは、それぞれ、
自己のノードの動作状態を診断する自己ノード診断部を備え、
前記自己ノード診断部は、
前記自己のノードが通信するサーバに異常を検出したこと、
前記自己のノードにおいて動作するいずれかのソフトウェアモジュールに異常を検出したこと、
前記自己のノードにおいてハードウェアに異常を検出したこと、
のいずれかを条件として、前記自己のノードにおいて動作不全が発生したことを相手側のノードに報知する、
請求項１−３のいずれか一項に記載の冗長コントローラ。
【請求項５】
前記非アクティブ状態となっているノードにおいて、
前記機器設定情報の出力、入出力処理、および演算処理がさらに禁止される、
請求項１−４のいずれか一項に記載の冗長コントローラ。
【請求項６】
前記アクティブ状態となっているノードを前記非アクティブ状態に切り換え、前記非アクティブ状態となっているノードを前記アクティブ状態に切り換える際に、前記非アクティブ状態へ切り換えられるノードから前記アクティブ状態へ切り換えられるノードへ全ての前記プロセスデータが転送される、
請求項１−５のいずれか一項に記載の冗長コントローラ。
【請求項７】
ＯＰＣ規格に準拠したインターフェースを備える通信部を備え、
ＯＰＣ規格に準拠した通信プロトコルで通信するサーバと前記通信部とが通信可能に構成されている、
請求項１−６のいずれか一項に記載の冗長コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスデータを取り扱うコントローラに係り、特に二重化構造を有する冗長コントローラに関する。
【背景技術】
【０００２】
生産設備において収集されるプロセスデータ（計測データ及び制御データ）を参照するための標準インターフェース仕様としてＯＰＣ(OLE for Process Control)規格に準拠するインターフェースを用いるプロセス管理システムが開発されている。一つのＯＰＣサーバは複数のＯＰＣクライアントに接続可能であり、一つのＯＰＣクライアントは１つまたは複数のローカルバスに接続されたＯＰＣサーバと通信可能となっている。
【０００３】
ＯＰＣ規格に準拠したインターフェースを用いたプロセス制御システムとして、例えば、特開２００５−５０１２７号公報には、ＯＰＣサーバに相当する２台の参照先サーバと通信し、一方の参照先サーバを制御側に他方を待機側に切り換え可能に構成され、制御側の参照先サーバのアクセスデータをＯＰＣクライアントに渡す仮想サーバを有するプロセスデータ収集装置が開示されている(特許文献１)。
【０００４】
特許文献１に記載の発明は、２台の参照先サーバに対して並行してＯＰＣクライアントがプロセスデータを収集するためにアクセスすることによってデータ収集のための通信負荷が発生するという問題点を解消することを課題している（同書段落００１４）。そのため、引用文献１記載のプロセスデータ収集装置は、制御側の参照先サーバをアクティブとし、待機側の参照先サーバをインアクティブとすることによって、プロセスデータアクセスのための通信負荷を最小限にすることを可能としている（同書００１５−００１６）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−５０１２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしならが、特許文献１に記載されているようなＯＰＣクライアント（コントローラ）はオペレータが常時監視可能な環境に設置されていない場合が多く、万一故障が発生するとプロセスデータの監視が不可能になるという問題があった。
【０００７】
また、このような問題を解決するために、同一の監視動作を行うコントローラを２台用いて二重化した場合、それぞれのコントローラからＯＰＣサーバ等へのアクセスが重複してＯＰＣサーバにおける通信負荷が大きくなるという新たな問題が生じる。
【０００８】
そこで、本発明は、このような問題に対処するために、二重化構造を備えることでプロセスデータが監視不能となることを防止しながら、通信負荷の増大を防止することが可能な冗長コントローラ装置を提供することを課題の一つとしている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の冗長コントローラは、（１）第１ノードと第２ノードとを備えた二重化された冗長コントローラであって、前記第１ノードおよび前記第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段と、前記アクティブ状態となっているノードにおいてプロセスデータを収集し、収集した前記プロセスデータを前記非アクティブ状態となっているノードに転送する手段と、前記非アクティブ状態となっているノードにおいて、前記プロセスデータの収集を禁止し、前記アクティブ状態となっているノードから転送された前記プロセスデータを更新する手段と、前記アクティブ状態となっているノードにおいて所定の条件に達した場合には、前記アクティブ状態となっているノードを非アクティブ状態に切り換え、前記非アクティブ状態となっているノードをアクティブ状態に切り換える手段と、を備える。
【００１０】
（２）所定の条件は、前記アクティブ状態となっているノードにおいて動作不全したことを推測可能な条件に達したこと、または、上位の機器監視装置から前記アクティブ状態とするノードと前記非アクティブ状態とするノードとの交替を指示されたこと、の少なくともいずれか一方である。
【００１１】
（３）前記第１ノードおよび前記第２ノードは、それぞれ、相手側のノードの動作状態を診断する相手ノード診断部を備え、前記相手ノード診断部は、前記相手側のノードから一定期間データが送信されないこと、または、前記相手側のノードから自己のノードが動作不全となったことを報知されたこと、のいずれかを条件として、自らのノードをアクティブ状態に切り換える。
【００１２】
（４）前記第１ノードおよび前記第２ノードは、それぞれ、自己のノードの動作状態を診断する自己ノード診断部を備え、前記自己ノード診断部は、前記自己のノードが通信するサーバに異常を検出したこと、前記自己のノードにおいて動作するいずれかのソフトウェアモジュールに異常を検出したこと、前記自己のノードにおいてハードウェアに異常を検出したこと、のいずれかを条件として、前記自己のノードにおいて動作不全が発生したことを相手側のノードに報知する。
【００１３】
（５）前記非アクティブ状態となっているノードにおいて、前記機器設定情報の出力、入出力処理、および演算処理がさらに禁止される。
【００１４】
（６）前記アクティブ状態となっているノードを前記非アクティブ状態に切り換え、前記非アクティブ状態となっているノードを前記アクティブ状態に切り換える際に、前記非アクティブ状態へ切り換えられるノードから前記アクティブ状態へ切り換えられるノードへ全ての前記プロセスデータが転送される。
【発明の効果】
【００１５】
本発明によれば、一方のノードがアクティブ状態とされ、他方のノードが非アクティブ状態とされ、アクティブ状態となっているノードのみにおいてプロセスデータが収集され、非アクティブ状態となっているノードにおけるプロセスデータの収集が禁止されるので、プロセスデータが監視不能となることを防止しながら、通信負荷の増大を抑制することが可能である。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係るプロセス制御システムの概略図。
【図２】本実施形態に係る冗長コントローラのブロック図。
【図３】本実施形態に係る冗長コントローラにおける処理シーケンス図。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明に係る実施形態について説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で種々変形して実施できる。
【００１８】
＜定義＞
本明細書で使用する用語を以下のとおり定義する。
「ノード」：プロセス管理システムに含まれるサーバ、コントローラ、フィールド機器の各々を示す。
「プロセスデータ」：ノード（主にフィールド機器）から送信される測定値またはノードに対する設定値等のデータをいう。
「アクティブ状態」：装置の動作を許可された状態をいう。
「非アクティブ状態」：装置の動作が禁止された状態をいう。
「アイテム」：測定値または設定値等のプロセスデータの一つを数える単位をいい、一つの「アイテム」は個々のフィールド機器等のノードから収集される一つの測定値、または、個々の制御弁等のノードに対する一つの設定値を意味する。
「サブシステム」：バスに接続する一つのコントローラ、サーバ、シリアル通信ユニットが管理する局所的な系統一般をいう。
【００１９】
＜プロセス管理システムの構成＞
図１に、本実施形態に係るプロセス管理システムの構成図を示す。図１に示すように、本実施形態のプロセス管理システムは、冗長コントローラ１０が接続されるユニバーサルバス１とローカルバス２との間に接続されて構成されている。ユニバーサルバス１には、冗長コントローラ１０の他に、プロセスコントローラ１１およびスーパーバイザリステーション２０が相互に通信可能に接続されている。ローカルバス２には、冗長コントローラ１０の他に、Ｉ／Ｏサーバ３１、Ｉ／Ｏサーバ３２、およびシリアル通信ユニット３３が、相互に通信可能に接続されている。
【００２０】
ユニバーサルバス１は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）(Ethernet)により装置間を相互に接続するバスである。
【００２１】
スーパーバイザリステーション２０は、ユニバーサルバス１に接続する各種コントローラが管理するサブシステムから供給される測定信号等に基づいて、プロセス管理システム全体の運転内容を監視し、各サブシステムに対する制御信号を送信する管理装置である。スーパーバイザリステーション２０は、ユニバーサルバス１に接続される冗長コントローラ１０やプロセスコントローラ１１、ローカルバス２に接続されるフィールド機器類の運転内容をモニタに表示可能に構成されている。運用者は、表示内容を見ることにより、プロセス管理システム全体の運転内容を把握することが可能である。スーパーバイザリステーション２０は、運用者の操作指示に従って、システムに接続される装置やフィールド機器に対する制御内容を指示可能に構成されている。指示可能な制御内容としては、機器の起動操作や停止操作等が該当する。特に本実施形態において、スーパーバイザリステーション２０は、冗長コントローラ１０に対して、プライマリノード１００Ｐおよびセカンダリノード１００Ｓのうち、いずれか一方のノードがアクティブ状態になるよう、また、他方のノードが非アクティブ状態となるよう、切り換えるように制御可能になっている。
【００２２】
冗長コントローラ１０は、本発明に係る冗長コントローラであり、互いに同一の構成を備えたプライマリノード１００Ｐとセカンダリノード１００Ｓとが並行して動作可能に構成されている。例えば、冗長コントローラ１０は、ＯＰＣサーバであるＩ/Ｏサーバ３１およびＩ／Ｏサーバ３２に対するＯＰＣクライアントの一つとして位置付けられたコントローラである。冗長コントローラ１０の詳細な構成については、図２を参照して後述する。特に本実施形態では、冗長コントローラ１０は、ユニバーサルバス１の系統とローカルバス２の系統との間で情報を受け渡すためのゲートウェイとして機能する。
【００２３】
プロセスコントローラ１１は、冗長コントローラ１０と同様に、自ら管理するローカルバスに接続された各種機器で構成されるサブシステムを管理する制御手段であり、必要に応じて設けられる。例えば、プロセスコントローラ１１としては、種々の機能を有する装置を適用可能であり、例えば、分散型コントロールシステム（ＤＣＳ：Distributed Control System）、プログラマブルロジックコントローラ（ＰＬＣ：Programmable Logic Controller）、ビルディングオートメーションシステム（ＢＡＳ：Building Automation System）等が挙げられる。
【００２４】
ローカルバス２は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）により装置間を相互に接続するバスである。ローカルバス２は、例えば工場内のコンピュータ機器を相互に接続する工場ＬＡＮ（Local Area Network）に相当する。
【００２５】
Ｉ／Ｏサーバ３１は、ローカルバス２に接続される機器に対するＯＰＣサーバの一つとして機能し、これら機器に対する監視および管理を実施する管理装置である。Ｉ／Ｏサーバ３１は、ＯＰＣ規格に準拠した通信プロトコルで通信可能に構成されている。また、Ｉ／Ｏサーバ３１には、フィールド機器４１に直接接続されている。Ｉ／Ｏサーバ３１とフィールド機器４１とは、シリアル通信ケーブルにより相互に接続されている。フィールド機器４１は、流量、圧力、温度等の所定の物理量を測定する測定ポイントとして機能可能に構成されている。測定ポイントとして機能するフィールド機器４１は、例えば、流量センサや圧力センサ、温度センサ等の各種センサである。またフィールド機器４１は、温度や流量等を制御する制御ポイントとして機能可能に構成されている。制御ポイントとして機能するフィールド機器４１は、例えば、温度調節器や圧力・流量・開閉制御弁等の各種弁装置、ポンプやブロア、ファン等のモータ、アクチュエータ機器類である。フィールド機器４１は、測定値を所定の規格の信号、例えば４〜２０ｍＡの直流信号に変換してＩ/Ｏサーバ３１に送信可能に構成されている。Ｉ/Ｏサーバ３１は、制御ポイントに対する設定値（設定温度、制御弁の開度、モータやアクチュエータ機器の駆動量）を所定の規格の信号、例えば４〜２０ｍＡの直流信号に重畳させて変換してフィールド機器４１に送信可能に構成されている。
【００２６】
Ｉ／Ｏサーバ３２は、ローカルバス２に接続される機器に対するＯＰＣサーバの一つとして機能する。Ｉ／Ｏサーバ３２は、ＯＰＣ規格に準拠した通信プロトコルで通信可能に構成されている。Ｉ／Ｏサーバ３２には、ＯＰＣクライアントの一つとして動作するプログラマブルロジックコントローラ（ＰＬＣ）４２が接続されている。プログラマブルロジックコントローラ４２は、特定の制御ポイントに対するリレー制御等を実行可能に構成されている。Ｉ／Ｏサーバ３２は、所定の設定値をシリアル信号に変換してプログラマブルロジックコントローラ４２に供給する。またプログラマブルロジックコントローラ４２から供給された測定値を必要に応じてローカルバス２に送信する。
【００２７】
Ｉ／Ｏサーバ３１およびＩ／Ｏサーバ３２が、自らが直接管理するフィールド機器４１やプログラマブルロジックコントローラ４２に動作異常を検出した場合や、自らの動作に不具合を生じている場合、アラート信号がローカルバス２経由で通知される。
【００２８】
シリアル通信ユニット３３は、それぞれがＯＰＣクライアントとして動作するフィールド機器４３、４４、４５に接続されている。シリアル通信ユニット３３は、Ｉ/Ｏサーバ３１から供給された設定値をシリアル信号に変換してフィールド機器４３−４５に供給する。またフィールド機器４３−４５の測定値がローカルバス２経由で通知される。フィールド機器４３−４５は、前述したフィールド機器４１と同様の測定ポイントまたは制御ポイントとして機能し、それぞれの機器に割り当てられた物理量を測定して測定値を出力し、また、入力された設定値に基づいて動作するように構成されている。
【００２９】
（冗長コントローラ１０）
図２に、本実施形態における冗長コントローラ１０のブロック図を示す。図２に示すように、冗長コントローラ１０は、プライマリノード１００Ｐとセカンダリノード１００Ｓとを備えて構成されている。プライマリノード１００Ｐは本発明の第１ノードに相当し、セカンダリノード１００Ｓは本発明の第２ノードに相当する。冗長コントローラ１０の各ノードは、ユニバーサルバス１とローカルバス２との間でプロセスデータの送受信を中継するゲートウェイとして機能する。プライマリノード１００Ｐおよびセカンダリノード１００Ｓの各々は、ローカルバス２に接続するノードを含むサブシステムを統合し制御するコントローラとして機能する。
【００３０】
冗長コントローラ１０は、所定のソフトウェアプログラムを実行することにより、非限定の例示として、特に以下の手段を実行可能に構成されている点に特徴がある。
（１）第１ノードおよび第２ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段。
（２）アクティブ状態となっているノードにおいてプロセスデータを収集し、収集したプロセスデータを非アクティブ状態となっているノードに転送する手段。
（３）非アクティブ状態となっているノードにおいて、プロセスデータの収集を禁止し、アクティブ状態となっているノードから転送されたプロセスデータを更新する手段。
（４）アクティブ状態となっているノードにおいて所定の条件に達した場合には、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える手段。
【００３１】
上記所定の条件とは、以下の少なくともいずれか一方である。
（ａ）アクティブ状態となっているノードにおいて動作不全が発生したことを推測可能な条件に達したこと、または、
（ｂ）上位の機器監視装置であるスーパーバイザリステーション２０から、アクティブ状態とするノードと非アクティブ状態とするノードとの交替を指示されたこと。
【００３２】
ここで「所定の条件」は、非限定の例示として、以下に説明する条件（１ａ）または（１ｂ）を含む。具体的に、条件（ａ）については、以下に説明する条件（２ａ）−（２ｃ）が例示できる。条件（ｂ）は以下に説明する条件（２ｄ）の場合である。但し、これら列記された条件に限定されることなく、アクティブ状態とするノードと非アクティブ状態とするノードとを切り換えるべきと考えられるあらゆる事象を、追加の、または、代替する切り換え条件とすることができる。
【００３３】
図２は、プライマリノード１００Ｐがアクティブ状態であり、セカンダリノード１００Ｓが非アクティブ状態である場合を例示している。斜線が描かれているブロックであるセカンダリノード１００Ｓのアイテム収集部１２６Ｓ、アイテム設定部１２８Ｓ、入出力演算処理部１４０Ｓが動作を停止し待機状態となっている。
【００３４】
プライマリノード１００Ｐは、冗長処理部１１０Ｐ、Ｉ／Ｏ処理部１２０Ｐ、通信部１３０Ｐ、入出力演算部１４０Ｐ、および通信部１５０Ｐを備える。セカンダリノード１００Ｓは、冗長処理部１１０Ｓ、Ｉ／Ｏ処理部１２０Ｓ、通信部１３０Ｓ、入出力演算部１４０Ｓ、および通信部１５０Ｓを備える。以下、プライマリノード１００Ｐとセカンダリノード１００Ｓとで共通の構成や動作を説明する場合には、符号ＰおよびＳを省略して説明する。上記した冗長コントローラ１０の手段（１）−（４）は、上記各機能ブロックのうち一つまたは複数が協働することにより機能的に実現される。
【００３５】
（冗長処理部１１０）
冗長処理部１１０は、本発明に特徴的な機能ブロックである。冗長処理部１１０は、プライマリノード１００Ｐとセカンダリノード１００Ｓとの間で、それぞれが記憶するプロセスデータの同期をとったり（プロセスデータの内容を同一にすること）、相手側のノードの動作状況を診断したり、自己のノードの動作状況を診断したりする。冗長処理部１００は、具体的に、データベース同期部１１２、相手ノード診断部１１４、および自己ノード診断部１１６を備えている。
【００３６】
（データベース同期部１１２）
データベース同期部１１２は、プライマリノード１００Ｐとセカンダリノード１００Ｓとの間で、それぞれが同一のプロセスデータを記憶するようにプロセスデータの送受信を行う機能ブロックである。具体的には、アクティブ状態となっているノード側のデータベース同期部１１２は、所定のタイミングで、または、所定数のデータが得られたことを条件として、前回の更新時から新たに得られたプロセスデータを非アクティブ状態となっているノード側のデータベース同期部１１２に送信する。非アクティブ状態となっているノード側のデータベース同期部１１２は、送信されてきた新たなプロセスデータを受信して、自ら記憶するプロセスデータを更新する。
【００３７】
また、データベース同期部１１２は、プライマリノード１００Ｐとセカンダリノード１００Ｓとの間でアクティブ状態と非アクティブ状態とを切り換える場合に、必要に応じて、それまでアクティブ状態であったノード側のデータベース同期部１１２がそれまで非アクティブ状態であったノード側のデータベース同期部１１２に対し、全てのプロセスデータを一括送信する。例えば起動開始から時間が経過していないため、それまで非アクティブ状態であったノードにおいてプロセスデータが更新されていない場合や、何からの事情でプロセスデータが喪失したりプロセスデータに欠陥が生じていたりする可能性がある場合である。全てのプロセスデータの転送は、いずれか一方のノードから他方のノードに対して全プロセスデータ転送を要求することによって実行されるように構成することが好ましい。
【００３８】
二つのノードのデータベース同期部１１２間のプロセスデータは、データ量が相対的に多い場合に備えて、高速バスであるユニバーサルバス１を経由して転送される。ただし、更新するプロセスデータのようにデータ量が相対的に少ない場合には、プライマリノード１００Ｐとセカンダリノード１００Ｓとを直接接続するシリアルバスを介して送受信するように構成してもよい。
【００３９】
（相手ノード診断部１１４）
相手ノード診断部１１４は、相手側のノードの動作状態を診断する機能ブロックである。相手ノード診断部１１４は、自己のノードが非アクティブ状態であり、かつ、相手側のノードがアクティブ状態となっている場合であって動作不全が発生していると判断した場合には、自らのノードをアクティブ状態に切り換える。
【００４０】
具体的に、非限定の例示として、相手ノード診断部１１４は、次のいずれか１以上の条件に合致する場合に、相手側のノードに動作不全が生じていると判断する。
【００４１】
（１ａ）アクティブ状態となっている相手側のノードから予め定められた一定期間（例えば１０秒間）以上、新たな診断データが送信されてこなかった場合。
（１ｂ）相手側のノードから自己のノードが動作不全となったことを報知してきた場合。
【００４２】
上記条件（１ａ）の場合は、アクティブ状態となっている相手側のノードのメインソフトウェアプログラム等に動作不良が生じ、更新すべきプロセスデータを非アクティブ状態となっているノードに送信不可能になっている場合であり、ノードとして動作不可能であると推測できる場合である。
【００４３】
上記条件（１ｂ）の場合は、例えば以下に述べる条件（２ａ）−（２ｃ）の場合が相当し、ノードとして動作することが不適当であると推測できる場合である。具体的には、アクティブ状態となっている相手側のノードの動作は正常であるが相手側のノードの動作を管理するＯＰＣサーバに異常が生じた場合や、相手側のノードのソフトウェアモジュールやハードウェアに異常が生じた場合である。
【００４４】
相手ノード診断部１１４は、自らのノードをアクティブ状態に切り換える場合、相手側のノードから送信されてきたアイテム設定情報に基づいて自らのノードのアイテム設定情報を更新し、互いのノードにおけるアイテム設定が同一になるように更新する。
【００４５】
（自己ノード診断部１１６）
自己ノード診断部１１６は、自己のノードの動作状態を診断する機能ブロックである。自己ノード診断部１１６は、自己のノードがアクティブ状態である場合に以下の少なくともいずれかの条件を満たした場合に、自らのノードを非アクティブ状態に切り換えるとともに、相手側のノードに異常状態を報知する。
【００４６】
（２ａ）自己のノードの動作を管理するＯＰＣサーバに異常を検出した場合。
（２ｂ）自己のノードで動作するいずれかのソフトウェアモジュールに異常を検出した場合。
（２ｃ）自己のノードのハードウェアに異常を検出した場合。
（２ｄ）上位の管理サーバから強制的にアクティブ状態とするノードの切り換えを指示された場合。
【００４７】
上記条件（２ａ）について、自己ノード診断部１１６は、Ｉ/Ｏ処理部１２０のサーバ状態確認部１２２を参照して、自己のノードが主として通信するＯＰＣサーバに異常が生じているか否かを確認する。ＯＰＣサーバが自ら動作不能であることをＯＰＣクライアントに報知してきたこと、または、ＯＰＣサーバ自体の動作不全または通信関連のハードウェアの故障で通信そのものが一定期間されていないこと、の少なくとも一方が満たされた場合にＯＰＣサーバが異常であると診断できる。
【００４８】
上記条件（２ｂ）について、自己ノード診断部１１６は、自らのノードにおいて動作する複数のソフトウェアモジュールのうちいずれかのモジュールからエラーを示す引数が返されてきたり、メモリアクセス違反を生じたりした場合に、自己のノードのソフトウェアモジュールに動作不全が発生したものと判断する。
【００４９】
上記条件（２ｃ）について、自己ノード診断部１１６は、一部の機能について、正常な値が読み取れない、または、全く動作しないなど、自己のノードの通信部１３０・１５０やネットワークの一部の動作に異常状態を発見した場合には、自己のノードのハードウェアに動作不全が発生したものと判断する。
【００５０】
上記条件（２ｄ）について、自己ノード診断部１１６は、上位のスーパーバイザリステーション２０からアクティブ状態にするノードの切り換えを要求するコマンドが送信されてきた場合、現在、アクティブ状態である場合には自己のノードを非アクティブ状態とし、非アクティブ状態である場合には自己のノードをアクティブ状態とする。
【００５１】
自己のノードをアクティブ状態としたり非アクティブ状態としたりする切り換え処理は、例えば、各機能ブロックを実現するソフトウェアモジュールが参照可能なグローバルなメモリエリアにアクティブ状態／非アクティブ状態を示すフラグを設け、上記条件に合致した場合にこのフラグを書き換えることによって達成できる。各機能ブロックを実現するソフトウェアモジュールでは、当該フラグを参照して、アクティブ状態／非アクティブ状態の別に応じた処理を実行するように構成すればよい。
【００５２】
自己のノードの自己ノード診断部１１６と相手側のノードの相手ノード診断部１１４との通信、および、自己のノードの相手ノード診断部１１４と相手側のノードの自己ノード診断部１１６との通信は、プライマリノード１００Ｐとセカンダリノード１００Ｓとを直接接続するシリアルバスを介して送受信するように構成されている。
【００５３】
（Ｉ／Ｏ処理部１２０）
Ｉ／Ｏ処理部１２０は、ローカルバス２に接続されるノードとのプロセスデータ入出力を実行する機能ブロックである。具体的に、Ｉ／Ｏ処理部１２０は、サーバ状態確認部１２２とグループ処理部１２４とを備える。
【００５４】
（サーバ状態確認部１２２）
サーバ状態確認部１２２は、所定のタイミング毎に、自己のノードの動作を主として管理するＯＰＣサーバと通信し、ＯＰＣサーバの動作が正常であるか否かを記録する機能ブロックである。サーバ状態確認部１２２は、自己ノード診断部１１６の問い合わせに応じて、記録してある最新のＯＰＣサーバの動作状態を返す。
【００５５】
（グループ処理部１２４）
グループ処理部１２４は、複数のアイテムをグループ化して管理する機能ブロックである。複数のアイテムをどのようなグループに編成するかの設定は任意である。例えば、いずれのノード（例えば、１つのＩ/Ｏサーバやシリアル通信ユニット）に属しているかとは無関係に、同一タイミングで収集する複数のアイテムを１つのグループとすることが可能である。また、１つのノードに接続されるフィールド機器についてのアイテムを１つのグループとすることも可能である。グループ処理部１２４は、アイテム収集部１２６とアイテム設定部１２８とを備える。
【００５６】
（アイテム収集部１２６）
アイテム収集部１２６は、測定値に関するプロセスデータ（アイテム）をグループ単位で収集する機能ブロックである。収集するプロセスデータとしては、フィールド機器類から直流信号で直接供給されたアナログ測定値や、ローカルバス２に接続されるノードから供給されたデジタル測定値である。アイテム収集部１２６は、自己のノードがアクティブ状態である場合にのみ動作し、非アクティブ状態である場合には動作を停止するように構成されている。
【００５７】
（アイテム設定部１２８）
アイテム設定部１２８は、制御値に関するプロセスデータ（アイテム）をグループ単位で出力し、ノードに所望の制御値を設定する機能ブロックである。設定するアイテムとしては、温度調節器や圧力・流量・開閉制御弁等の各種弁装置に対して出力するアナログ設定値やデジタル設定値、ポンプやブロア、ファン等のモータ、アクチュエータ機器類に対するロジック値等である。アイテム設定部１２８は、自己のノードがアクティブ状態である場合にのみ動作し、非アクティブ状態である場合には動作を停止するように構成されている。
【００５８】
（通信部１３０）
通信部１３０は、ローカルバス２を介してフィールド機器類から供給された測定値であるプロセスデータを受信し、フィールド機器類に対する設定値であるプロセスデータを出力するブロックである。通信部１３０は、ローカルバス２のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。特に本実施形態における通信部１３０は、ＯＰＣ規格に準拠したインターフェースを備えており、ＯＰＣ規格に準拠した通信プロトコルで通信するＩ／Ｏサーバ３１および３２と通信可能に構成されている。
【００５９】
（通信部１５０）
通信部１５０は、ユニバーサルバス１を介してスーパーバイザリステーション２０やプロセスコントローラ１１と相互通信するためのブロックである。通信部１５０は、ユニバーサルバス１のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。
【００６０】
（入出力演算処理部１４０）
入出力演算部１４０はプロセスデータの入出力を制御し、必要な演算処理を実施してデータを加工し、加工したデータを出力する機能ブロックである。非限定の例示として、入出力演算部１４０は、以下のような処理を実行する。
【００６１】
（３ａ）アイテム収集部１２６が収集したプロセスデータをスーパーバイザリステーション２０の要求に応じて転送すること。
（３ｂ）収集したプロセスデータに補正、抽出、加算・積算・平均・時間軸移動処理等の演算を施して出力すること。
（３ｃ）収集したプロセスデータを所定のルールに基づき判定して、必要な警告を出力すること。
（３ｄ）収集したプロセスデータに応じて所定の制御値または制御データを生成して出力すること。
（３ｅ）自己のノードがアクティブ状態である場合に動作し、非アクティブ状態である場合には動作を停止すること。
【００６２】
＜動作の説明＞
以下、図３の処理シーケンス図を参照しながら、冗長コントローラ１０の動作を説明する。図３の処理シーケンス図は、図２に示すように、プライマリノード１００Ｐがアクティブ状態であり、セカンダリノード１００Ｓが非アクティブ状態である場合の処理を例示している。
【００６３】
なお、破線で囲まれているステップは、プライマリノード１００Ｐがアクティブ状態、セカンダリノード１００Ｓが非アクティブ状態である場合には実行されず、プライマリノード１００Ｐが非アクティブ状態、セカンダリノード１００Ｓがアクティブ状態である場合には実行されるステップである。よって、プラマリノード１００Ｐが非アクティブ状態であり、セカンダリノード１００Ｓがアクティブ状態である場合には、以下の説明におけるプライマリノード１００Ｐにおける各処理とセカンダリノード１００Ｓにおける各処理とが交替して実行される。
【００６４】
図３に示すように、プライマリノード１００Ｐ側では、自己のノードがアクティブ状態である場合、ステップＳＴ１Ｐ−ＳＴ６Ｐを実行し、自己のノードが非アクティブ状態である場合、ステップＳＴ３Ｐ−ＳＴ６Ｐを実行する。セカンダリノード１００Ｓ側では、自己のノードが非アクティブ状態である場合、ステップＳＴ３Ｓ−ＳＴ６Ｓを実行し、自己のノードがアクティブ状態である場合、ステップＳＴ１Ｓ−ＳＴ６Ｓを実行する。以下、プライマリノード１００Ｐとセカンダリノード１００Ｓとで動作が共通であるステップについては、ステップ末尾の符号ＰやＳを付けずに説明する。
【００６５】
ステップＳＴ１Ｐ−ＳＴ６Ｐまでは、アクティブ状態であるプライマリノード１００Ｐの処理である。これらのステップは、アクティブ状態である限り、一定の周期で繰り返し実行される処理である。
【００６６】
まず、ステップＳＴ１Ｐにおいて、アイテム収集部１２６Ｐは、サブシステムからグループ単位でプロセスデータ（アイテム）を収集する。入出力演算処理部１４０Ｐは、収集した測定値であるアイテムに対して、必要な演算処理を施し、スーパーバイザリステーション２０の要求に応じて転送する。
【００６７】
ステップＳＴ２Ｐにおいて、アイテム設定部１２８Ｐは、アイテムのグループ単位で設定値であるプロセスデータを出力する。出力するプロセスデータは、入出力演算処理部１４０Ｐが演算し変形したものを含む。
【００６８】
ステップＳＴ３Ｐにおいて、プライマリノード１００Ｐのデータベース同期部１１２Ｐは、前回の更新時から収集された新たなプロセスデータをセカンダリノード１００Ｓのデータベース同期部１１２Ｓに送信する。ステップＳＴ３Ｓにおいて、セカンダリノード１００Ｓのデータベース同期部１１２Ｓは送信されたプロセスデータに基づき自己のノードのプロセスデータを更新する。
【００６９】
ステップＳＴ４Ｐにおいて、プライマリノード１００Ｐの自己ノード診断部１１６Ｐは、前回の更新時から設定値に変更のあったアイテムについて設定値（定義）をセカンダリノード１００Ｓの相手ノード診断部１１４Ｓに送信する。ステップＳＴ４Ｓにおいて、セカンダリノード１００Ｓの相手ノード診断部１１４Ｓは送信された新たなアイテムについての設定値に基づき自己のノードのアイテム定義を更新する。
【００７０】
ステップＳＴ５Ｐにおいて、プライマリノード１００Ｐの自己ノード診断部１１６Ｐは、サーバ状態確認部１２２Ｐを参照して、自己のノードを管理するＯＰＣサーバに異常が生じているか否か、自己のノードで動作するソフトウェアモジュールに動作異常を生じているか否か、自己のノードのハードウェアに動作異常を生じているか否かを確認する。
【００７１】
その結果、異常が検出されなければ、アクティブ状態を維持したまま、次の実行タイミングを待つ。一方、異常が検出された場合、自己のノードを非アクティブ状態に切り換え、活動状態であったアイテム収集部１２６Ｐ、アイテム設定部１２８Ｐ、および入出力演算処理部１４０Ｐを待機状態に移行する。そして相手側のノードに異常検出を報知する。
【００７２】
ステップＳＴ６Ｓにおいて、プライマリノード１００Ｐおよびセカンダリノード１００Ｓの相手ノード診断部１１４は、相手側のノードに異常が生じているか否かを診断する。相手側のノードから上記したような異常検出が報知されてきた場合、または、所定時間、プロセスデータやアイテム定義の更新がされなかった場合、相手側のノードに異常が生じているものと診断して、セカンダリノード１００Ｓ側では自己のノードをアクティブ状態に切り換える。そして、待機状態であったアイテム収集部１２６Ｓ、アイテム設定部１２８Ｓ、および入出力演算処理部１４０Ｓを起動する。
【００７３】
プライマリノード１００Ｐが非アクティブ状態、セカンダリノード１００Ｓがアクティブ状態であった場合には、プライマリノード１００ＰはステップＳＴ３Ｐ−ＳＴ６ＰおよびＳＴ６Ｐを実行し、セカンダリノード１００ＳはステップＳＴ１Ｓ−ＳＴ６Ｓを実行する。
【００７４】
＜本実施形態の効果＞
以上のように説明した本実施形態によれば、以下のような作用効果を奏する。
（１）本実施形態によれば、プライマリノード１００Ｐおよびセカンダリノード１００Ｓのうち、一方のノードがアクティブ状態とされ、他方のノードが非アクティブ状態とされる。そして、アクティブ状態に切り換えられたノードにおいてアイテム収集部１２６によるプロセスデータの収集が開始され、アイテム設定部１２８におけるアイテムの設定が開始される。また、非アクティブ状態に切り換えられたノードにおいてアイテム収集部１２６によるプロセスデータの収集が禁止され、アイテム設定部１２８におけるアイテムの設定が禁止される。よって、冗長コントローラ１０におけるプロセスデータの入出力処理が滞ることを防止しながら、プロセス管理システムへの通信負荷の増大を抑制することが可能である。
【００７５】
（２）本実施形態によれば、アクティブ状態となっているノードにおいて動作不全が発生したことを推測可能な条件に達したこと（条件（１ａ）−（１ｃ））、または、上位の機器監視装置であるスーパーバイザリステーション２０からアクティブ状態とするノードと前記非アクティブ状態とするノードとの切り換えを指示されたこと、のいずれかに合致した場合に、アクティブ状態となっていたノードが非アクティブ状態となり、非アクティブ状態となっていたノードがアクティブ状態に切り換えられる。よって、アクティブ状態となっているノードの動作不全を的確に検出して、滞りなく動作可能なノードに動作を引き継ぐことができ、ロセスデータの収集処理が不能になったり設定処理が不完全になったりすることを防止可能である。また機器監視装置の必要に応じたノードの切り換えにも対応可能である。
【００７６】
（３）本実施形態によれば、相手ノード診断部１１４は、相手側のノードから一定期間データが送信されないこと（条件（１ａ））、または、相手側のノードから自己のノードが動作不全となったことを報知されたこと（１ｂ、１ｃ）のいずれかを条件として、自らのノードをアクティブ状態に切り換える。よって、アクティブ状態となっているノードのメインプログラムがハングアップしたような状態となったとしても、その動作状態を確実に検出し、待機状態の他のノードに動作を引き継ぐことが可能である。
【００７７】
（４）本実施形態によれば、自己ノード診断部１１６は、自己のノードが通信するサーバに異常を検出したこと（条件（２ａ））、または、自己のノードにおいてソフトウェアモジュールまたはハードウェアに動作不全が生じたこと（条件（２ｂ）（２ｃ））のいずれかを条件として、自己のノードにおいて動作不全が発生したことを相手側のノードに報知する。よって、相手側のノードに自己のノードに動作を継続することを妨げる事象が生じていることを的確に報知可能である。
【００７８】
（５）本実施形態によれば、非アクティブ状態となっているノードにおいて、機器設定情報の出力、入出力処理、および演算処理が禁止される。よって、待機状態となっているノードでは、不必要な処理が禁止される他、外部のノードに対するデータの出力または出力要求などが禁止される。このため、サブシステムに対する通信負荷を些少に抑制することが可能である。
【００７９】
（６）本実施形態によれば、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える際に、非アクティブ状態へ切り換えられるノードからアクティブ状態へ切り換えられるノードへ全てのプロセスデータが転送される。よって、アクティブ状態に切り換えられるノードにおいて、過去のプロセスデータが存在しないか障害を受けていた場合であっても、適正なプロセスデータに基づきアクティブ状態に切り換えられるノードのプロセスデータが更新される。
【００８０】
（７）本実施形態によれば、通信部１３０がＯＰＣ規格に準拠したインターフェースを備えており、ＯＰＣ規格に準拠した通信プロトコルで通信するＩ／Ｏサーバ３１および３２と通信可能に構成されている。ＯＰＣ規格では、特にヘッダ部分の情報量が多いため、非アクティブ状態に切り換えられたノードにおけるプロセスデータの収集やアイテムの設定が禁止されることによる通信負荷の削減効果が大きい。
【００８１】
（その他の実施形態）
本発明は上記各実施形態に限定されることなく種々に変更して利用することができる。例えば、上記の実施形態では、冗長コントローラ１０はＯＰＣクライアントとして動作し、外部に設けられたＯＰＣサーバであるＩ／Ｏサーバ３１やＩ／Ｏサーバ３２と通信していたが、これに限られない。
【００８２】
また上記実施形態では、ＯＰＣサーバ（Ｉ／Ｏサーバ３１やＩ／Ｏサーバ３２）はＯＰＣクライアントである冗長コントローラと離れたノードとして説明したが、冗長コントローラ１０のそれぞれのノードはＯＰＣサーバを備えるか、ＯＰＣサーバそのものであってもよい。冗長コントローラ１０がＯＰＣサーバを含むように構成されている場合、ＯＰＣサーバの異常検出（条件（２ａ））は、ローカルバス２を介さない自己診断となる。
【００８３】
また上記実施形態では、自己ノード診断部１１６は自己のノードがアクティブ状態である場合に主として動作するように説明していたが、自己のノードがアクティブ状態であるか非アクティブ状態であるかに拘わらず動作するように構成してもよい。
【００８４】
同様に、上記実施形態では、相手ノード診断部１１４は自己のノードがアクティブ状態であるか非アクティブ状態であるかに関わらず動作するように説明していたが、自己のノードが非アクティブ状態である場合に主として動作するように構成してもよい。
【産業上の利用可能性】
【００８５】
本発明の冗長コントローラは、ゲートウェイとしてのみならず、分散型コントロールシステム、プログラマブルロジックコントローラ、ビルディングオートメーションシステム、ＯＰＣサーバなどに異なる種類のノードに適用することが可能である。
【符号の説明】
【００８６】
１…ユニバーサルバス、２…ローカルバス、１０…冗長コントローラ、１１…プロセスコントローラ、２０…スーパーバイザリステーション、３１…Ｉ／Ｏサーバ、３２…Ｉ／Ｏサーバ、３３…シリアル通信ユニット、４１…フィールド機器、４２…プログラマブルロジックコントローラ、４３−４５…フィールド機器、１００Ｐ…プライマリノード、１００Ｓ…セカンダリノード、１１０Ｐ、１１０Ｓ…冗長処理部、１１２Ｐ、１１２Ｓ…データベース同期部、１１４Ｐ、１１４Ｓ…相手ノード診断部、１１６Ｐ、１１６Ｓ…自己ノード診断部、１２０Ｐ、１２０Ｓ…Ｉ／Ｏ処理部、１２２Ｐ、１２２Ｓ…サーバ状態確認部、１２４Ｐ、１２４Ｓ…グループ処理部、１２６Ｐ、１２６Ｓ…アイテム収集部、１２８Ｐ、１２８Ｓ…アイテム設定部、１３０Ｐ、１３０Ｓ…通信部、１４０Ｐ、１４０Ｓ…入出力演算処理部、１５０Ｐ、１５０Ｓ…通信部
【図１】
2012208706.tif 000003
【図２】
2012208706.tif 000004
【図３】
2012208706.tif 000005