JP2017021588A - 冗長用モジュール、冗長コントローラ、およびプログラム - Google Patents

冗長用モジュール、冗長コントローラ、およびプログラム Download PDF

Info

Publication number
JP2017021588A
JP2017021588A JP2015138930A JP2015138930A JP2017021588A JP 2017021588 A JP2017021588 A JP 2017021588A JP 2015138930 A JP2015138930 A JP 2015138930A JP 2015138930 A JP2015138930 A JP 2015138930A JP 2017021588 A JP2017021588 A JP 2017021588A
Authority
JP
Japan
Prior art keywords
module
process data
unit
identification information
redundant
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015138930A
Other languages
English (en)
Inventor
田中 良則
Yoshinori Tanaka
良則 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Azbil Corp
Original Assignee
Azbil Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Azbil Corp filed Critical Azbil Corp
Priority to JP2015138930A priority Critical patent/JP2017021588A/ja
Publication of JP2017021588A publication Critical patent/JP2017021588A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Safety Devices In Control Systems (AREA)

Abstract

【課題】汎用性の高い通信環境を実現できる冗長用モジュール、冗長コントローラ、およびプログラムを提供する。【解決手段】一方がアクティブ状態とされる場合に他方が非アクティブ状態とされる冗長構成を編成可能な冗長用モジュールは、自らのモジュールがアクティブ状態である場合は、受信したプロセスデータを含むコマンドで、自らのモジュールに記録されているプロセスデータを更新し、プロセスデータが更新されたことを示す識別情報を送信し、自らのモジュールが非アクティブ状態である場合は、プロセスデータを含むコマンドを自らのモジュールと対をなす他方のモジュールへ転送し、他方のモジュールから転送されてきた識別情報をさらに送信する。【選択図】図2

Description

本発明は、一方がアクティブ状態とされている場合に他方が非アクティブ状態とされる冗長構成を編成可能な冗長用モジュール、冗長コントローラ、およびプログラムに関する。
従来、化学製造プラント、石油精製プラント、その他製造プラントなどの処理プラント内において使用されるプロセス制御コントローラが知られている。
具体的に、プロセス制御コントローラとして、例えば、特開2012−208706号公報には、プロセス内の複数の装置を制御するために使用される冗長コントローラであって、第1ノード(100P)と第2ノード(100S)とを備えた二重化された冗長コントローラ(10)であって、第1ノードおよび第2ノードのうち、いずれか一方をアクティブ状態とし、他方を非アクティブ状態とする手段と、アクティブ状態となっているノードにおいてプロセスデータを収集し、収集したプロセスデータを非アクティブ状態となっているノードに転送する手段と、非アクティブ状態となっているノードにおいて、プロセスデータの収集を禁止し、アクティブ状態となっているノードから転送されたプロセスデータを更新する手段と、アクティブ状態となっているノードにおいて所定の条件に達した場合には、アクティブ状態となっているノードを非アクティブ状態に切り換え、非アクティブ状態となっているノードをアクティブ状態に切り換える手段と、を備える冗長コントローラが開示されている(特許文献1)。
特開2012−208706号公報
ここで、当分野において、異なるベンダーから提供される機器間でプロセスデータを送受信可能とするために、共通の通信プロトコルを採用することが好ましい。例えば、ModbusTCP(ransmission ontrol rotocol)プロトコルなどの標準的な通信プロトコルに従うことが妥当である。しかしながら、ModbusTCPプロトコルには、外部機器が、特許文献1に記載されているような二重化されたノード(モジュール)を備えた冗長コントローラと通信する手順までは定義されていない。したがって、外部機器が冗長コントローラと通信するためには、まず二重化されたモジュールのどちらがアクティブ状態であるかを判定し、その後アクティブ状態となっていると判定されたモジュールと通信を開始するように制御する必要があった。
しかしながら、アクティブ状態であるか非アクティブ状態であるかを判定するための手順は冗長コントローラごとに異なる。外部機器が多数のベンダーから提供される冗長コントローラごとに異なる手順を全て把握することは現実的ではない。また外部機器は、自らが判定手順を把握している冗長コントローラのみとの間でしか通信できなくなるため、汎用性を失うことにもなる。
そこで、本発明は、このような問題に鑑みて、汎用性の高い冗長用モジュール、冗長コントローラ、およびプログラムを提供することを課題の一つとしている。
上記課題を解決するために、本発明の冗長用モジュールは、一方がアクティブ状態とされる場合に他方が非アクティブ状態とされる冗長構成を編成可能な冗長用モジュールであって、1)自らのモジュールがアクティブ状態である場合は、1−1)受信したプロセスデータを含むコマンドで、前記自らのモジュールに記録されているプロセスデータを更新し、1−2)前記プロセスデータが更新されたことを示す識別情報を送信し、2)前記自らのモジュールが非アクティブ状態である場合は、2−1)前記プロセスデータを含む前記コマンドを前記自らのモジュールと対をなす他方のモジュールへ転送し、2−2)前記他方のモジュールから転送されてきた前記識別情報をさらに送信する。
上記課題を解決するために、本発明の冗長コントローラは、前記冗長用モジュールの前記冗長構成を備え、前記冗長構成の一方がアクティブ状態とされる場合に前記冗長構成の他方が非アクティブ状態とされる。
本発明によれば、当該冗長用モジュールと通信している機器が、通信相手のモジュールがアクティブ状態であるか非アクティブ状態であるかを判定する必要がなくなり、汎用性の高い通信環境を実現できる。
本発明の実施形態に係るプロセス制御システムの概略図である。 本発明の実施形態に係る冗長コントローラのブロック図である。 本発明の実施形態に係る冗長コントローラにおける、プロセスデータの書き込み処理シーケンス図の一例である。 本発明の実施形態に係る冗長コントローラにおける、プロセスデータの書き込み処理シーケンス図の一例である。 本発明の実施形態に係る冗長コントローラにおける、プロセスデータの読み込み処理シーケンス図の一例である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。即ち、本発明は、その趣旨を逸脱しない範囲で種々変形(各実施例を組み合わせるなど)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。
<定義>
「プロセスデータ」:プロセス制御システムにおける装置・機器から送信される測定値または当該装置・機器に対する設定値、制御値などのデータをいう。
図1に、本実施形態に係るプロセス管理システムの構成図を示す。図1に示すように、本実施形態のプロセス管理システムは、例示的に、クライアント装置20と、冗長コントローラ10と、フィールド機器43,44,45と、を備えて構成されている。ユニバーサルバス1は、汎用のコンピュータネットワーク規格、例えばイーサネット(登録商標)(Ethernet)により装置間を相互に接続するバスである。また、ローカルバス2は、汎用のコンピュータネットワーク規格、例えばイーサネット(登録商標)により装置間を相互に接続するバスである。ローカルバス2は、例えば工場内のコンピュータ機器を相互に接続する工場LAN(ocal rea etwork)に相当する。
冗長コントローラ10は、一方がアクティブ状態とされる場合に他方が非アクティブ状態とされる冗長構成を編成可能な冗長用モジュールを一対備える。ここで、アクティブ状態とされている冗長用モジュールをプライマリモジュール100Pといい、非アクティブ状態とされている冗長用モジュールをセカンダリモジュール100Sという。プライマリモジュール100Pとセカンダリモジュール100Sとは、両者はアクティブ状態とされているか非アクティブ状態とされているかの動作ステータス上の相違があるのみで、同じ構成を備えている。以下、アクティブ状態であるか非アクティブ状態であるかの動作状態に異存しない構成・機能の説明の際には、単に「モジュール」というように称する。冗長コントローラ10の詳細な構成については、図2を参照して後述する。特に本実施形態では、冗長コントローラ10は、ユニバーサルバス1の系統とローカルバス2の系統との間で情報を受け渡すためのゲートウェイとして機能する。
クライアント装置20は、冗長コントローラ10の各モジュール100P,100Sのいずれか一方とのみ通信する機器、例えば、ModbusTCPクライアントである。クライアント装置20は、ユニバーサルバス1に接続する各種コントローラが管理するフィールド機器43,44,45などから供給される測定信号などを参照し、プロセス管理システム全体の運転状態を監視し、各外部機器に対する制御信号を送信する管理装置である。クライアント装置20は、ユニバーサルバス1に接続される冗長コントローラ10、ローカルバス2に接続されるフィールド機器43,44,45の運転内容をモニタに表示可能に構成されている。運用者は、表示内容を見ることにより、プロセス管理システム全体の運転内容を把握することが可能である。クライアント装置20は、フィールド機器43,44,45などのプロセスデータを冗長コントローラ10に書き込み可能に、そして冗長コントローラ10から読み込み可能に構成されている。
フィールド機器43,44,45は、流量、圧力、温度などの所定の物理量を測定する測定ポイント又は制御する制御ポイントとして機能可能に構成されている。フィールド機器43、44、45は、例えば、流量センサや圧力センサ、温度センサなどの各種センサ、温度調節器や圧力・流量・開閉制御弁などの各種弁装置、ポンプやブロア、ファンなどのモータ、アクチュエータ機器類である。
図2に、本実施形態における冗長コントローラ10のブロック図を示す。図2に示すように、冗長コントローラ10の各モジュールは、ユニバーサルバス1とローカルバス2との間でプロセスデータの送受信を中継するゲートウェイとして機能する。モジュール100は、フィールド機器43,44,45などを統合して制御するコントローラとして機能することが可能となっている。直接的には、アクティブ状態となっているプライマリモジュール100Pが、フィールド機器43,44,45を制御する。
冗長コントローラ10は、自己のモジュールをアクティブ状態としたり非アクティブ状態としたりする切り換え処理を実行可能に構成されている。具体的には、モジュール100は、各々がコンピュータ装置を備えており、グローバルなメモリエリアにアクティブ状態/非アクティブ状態を示すフラグを設定可能になっている。そして、アクティブ状態となるモジュール100では、内部のメモリエリアにアクティブ状態を示すフラグを設定し、プライマリモジュール100Pとして機能する。また非アクティブ状態となるモジュール100では、内部のメモリエリアに非アクティブ状態を示すフラグを設定し、セカンダリモジュール100Sとして機能する。各モジュール100は、自らのメモリエリアに設定されたフラグを参照して自らがアクティブ状態であるか非アクティブ状態であるかを判定し、アクティブ状態/非アクティブ状態の別に応じた処理を実行するように構成されている。
フラグの書き換えは、プライマリモジュール100Pの動作を契機としてもセカンダリモジュール100Sの動作を契機としてもよい。例えば、プライマリモジュール100Pにおいて自らの動作不全が発生した場合、自らのフラグを非アクティブ状態に変更し、それまでアクティブ状態であった自らをセカンダリモジュール100Sに変更する。それまで非アクティブ状態であったセカンダリモジュール100Sは、プライマリモジュール100Pがセカンダリモジュール100Sに変更されたことに対応して自らのフラグをアクティブ状態に変更し、自らをプライマリモジュール100Pに変更する。
また例えば、セカンダリモジュール100Sが、プライマリモジュール100Pとの通信ができないなど、プライマリモジュール100Pにおける動作不全を発見した場合、セカンダリモジュール100Sは自らのフラグをアクティブ状態に変更し、それまで非アクティブ状態であった自らをプライマリモジュール100Pに変更する。またそれまでアクティブ状態であったプライマリモジュール100Pのフラグを強制的に非アクティブ状態に書き換えてプライマリモジュール100Pに変更する。
以下、プライマリモジュール100Pに含まれる構成については符号Pを追記し、セカンダリモジュール100Sに含まれる構成については符号Sを追記する。またいずれのモジュールにおいても共通して構成を説明する際には、符号P/Sを追記することなく構成の符号を記述する。
各モジュール100は、プロセッサ、メモリ、インターフェース回路などを備えるコンピュータ装置としての構成を備え、データベース170などの記憶領域に格納されているソフトウェアプログラムをプロセッサが実行することにより、例示的に、冗長処理部110、通信部120、収集部130、入出力演算部140、収集部150、および通信部160として機能するようになっている。
冗長処理部110は、本発明に特徴的な機能ブロックであり、モジュール間で、それぞれが記憶するプロセスデータの同期をとり(プロセスデータの内容を同一にすること)、相手側のモジュールの動作状況を診断したり、自己のモジュールの動作状況を診断したりする機能ブロックである。冗長処理部100は、例示的に、モジュール診断部112と、データベース同期部114とを備えている。
モジュール診断部112は、例えば、自己のモジュールの動作状態を診断する機能ブロックである。モジュール診断部112は、例えば、前述したようにモジュールの動作状態を示すフラグに基づいて自己のモジュールが、アクティブ状態であるか、又は、非アクティブ状態であるかを検出する。なお、モジュール診断部112は、自己のモジュールの動作状態だけではなく、他のモジュールの動作状態を診断するように構成されてもよい。
なお、自己のモジュールのモジュール診断部112と相手側のモジュールの相手モジュール診断部112との通信は、モジュール間を直接接続するバスを介して送受信するように構成されている。また、モジュール診断部112は自己のモジュールがアクティブ状態であるか非アクティブ状態であるかに拘わらず動作するように構成されている。
データベース同期部114は、モジュール間で、それぞれが同一のプロセスデータを記憶可能にプロセスデータの同期処理、プロセスデータや各種識別情報の送受信を行う機能ブロックである。
また、データベース同期部114は、各モジュールにおいてアクティブ状態と非アクティブ状態とを切り換える場合に、必要に応じて、それまでアクティブ状態であったモジュール側のデータベース同期部114がそれまで非アクティブ状態であったモジュール側のデータベース同期部114に対し、全てのプロセスデータを一括送信する。例えば起動開始から時間が経過していないため、それまで非アクティブ状態であったモジュールにおいてプロセスデータが更新されていない場合や、何からの事情でプロセスデータが喪失したりプロセスデータに欠陥が生じていたりする可能性がある場合である。全てのプロセスデータの転送は、いずれか一方のモジュールから他方のモジュールに対して全プロセスデータ転送を要求することによって実行されるように構成することが好ましい。
データベース同期部114は、例示的に、転送部1141と、更新部1143と、比較部1145と、算出部1147と、識別情報生成部1149とを備えている。
転送部1141は、プロセスデータの書き込みコマンドまたは読み込みコマンドを転送する機能ブロックである。ここで、書き込みコマンドとは、例えば、クライアント装置20が冗長コントローラ10にプロセスデータを書き込むことを要求するためのコマンドであり、読み込みコマンドとは、例えば、クライアント装置20が冗長コントローラ10に記録されているプロセスデータを読み込むことを要求するためのコマンドである。例えば、モジュール診断部112が自己のモジュールは非アクティブ状態であることを検出した(自己のモジュールがセカンダリモジュール100Sであると検出した)場合に、転送部1141Sは、プロセスデータを含む書き込みコマンドをプライマリモジュール100Pへ転送する。また、例えば、モジュール診断部112が自己のモジュールはアクティブ状態であることを検出した(自己のモジュールがプライマリモジュール100Pであると検出した)場合に、転送部1141Pは、後述する更新識別情報を、書き込みコマンドの送信元であるセカンダリモジュール100Sへ転送する。
転送部1141は、収集されたプロセスデータ又は更新されたプロセスデータの少なくとも一部を転送する機能ブロックである。モジュール診断部112が自己のモジュールはアクティブ状態であることを検出した(自己のモジュールがプライマリモジュール100Pであると検出した)場合に、転送部1141Pは、プライマリモジュール100Pにおいて更新されたプロセスデータの少なくとも一部をセカンダリモジュール100Sに所定のタイミングで転送する。
更新部1143は、モジュール間でプロセスデータを同期するために、データベース170に記録されている過去のプロセスデータを更新する機能ブロックである。例えば、モジュール診断部112が自己のモジュールがセカンダリモジュール100Sであると検出した場合に、更新部1143Pは、転送部1141Sにより転送された書き込みコマンドに含まれるプロセスデータを用いて、データベース170Pに記録されているプロセスデータ(過去のプロセスデータ)を更新する。また、モジュール診断部112が自己のモジュールがプライマリモジュール100Pであると検出した場合に、更新部1143Pは、クライアント装置20から送信された書き込みコマンドまたは転送部1141Sにより転送された書き込みコマンドに含まれるプロセスデータを用いて、過去のプロセスデータを更新する。なお、過去のプロセスデータとは、収集部130,150が現に収集し、又は、過去に収集したプロセスデータであって、データベース170に記録されているプロセスデータである。収集されたプロセスデータは、一時的に又は長期的にデータベース170に格納されてもよい。
比較部1145は、更新されたプロセスデータと過去のプロセスデータとを比較する機能ブロックである。算出部1147は、更新されたプロセスデータと過去のプロセスデータとの差分を算出する機能ブロックである。ここで、転送部1141により転送される更新されたプロセスデータの少なくとも一部のプロセスデータとは、更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータを含む。
例えば、セカンダリモジュール100Sのデータベース同期部114Sが、更新されたプロセスデータと過去のプロセスデータとの差分に基づいて過去のプロセスデータを更新する場合、プライマリモジュール100Pのデータベース同期部114Pは、データベース同期部114Pにおいて更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータや、当該差分に対応するプロセスデータが、プロセスデータ更新処理の際に新たに追加されたデータであるのか/削除されたデータであるのかを示すプロセスデータ識別情報を、セカンダリモジュール100Sのデータベース同期部114Sに送信する。そして、セカンダリモジュール100Sのデータベース同期部114Sは、当該差分に対応するプロセスデータおよびプロセスデータ識別情報に基づいて過去のプロセスデータを更新する。なお、データベース同期部114Pにおいて更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータと、当該差分に対応するプロセスデータが、プロセスデータ更新処理の際に新たに追加されたデータであるのか/削除されたデータであるのかを示すプロセスデータ識別情報とは、後述する更新識別情報(識別情報)に含まれる。
プライマリモジュール100Pとセカンダリモジュール100Sとの間において、一方のモジュールにおいて更新されたプロセスデータの全てを相手方のモジュールに転送することなく、更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータおよび/または所定のプロセスデータ識別情報のみ送信することにより、プライマリモジュール100Pとセカンダリモジュール100Sとの間でプロセスデータを同期することが可能となるので、データ送信量の削減が可能となる。
なお、アクティブ状態であるプライマリモジュール100Pのデータベース同期部114Pは、過去のプロセスデータに対して更新されたプロセスデータの全てを非アクティブ状態であるセカンダリモジュール100Sのデータベース同期部114Sに送信するように構成されてもよい。プライマリモジュール100Pのデータベース同期部114Pは、更新されたプロセスデータを任意のタイミングでデータベース170Pに記録する。セカンダリモジュール100Sのデータベース同期部114Sは、プライマリモジュール100Pのデータベース同期部114Pから更新されたプロセスデータの全てを受信すると、当該プロセスデータを過去のプロセスデータに上書きすることで当該過去のプロセスデータを更新する。データベース同期部114Sは、任意のタイミングで更新されたプロセスデータをデータベース170Sに記録する。データベース同期部114は、上記処理を実行することにより、プライマリモジュール100Pとセカンダリモジュール100Sとの間で、それぞれが同一のプロセスデータを記憶・保持することを可能にする。
なお、二つのモジュールのデータベース同期部114間のプロセスデータは、データ量が相対的に多い場合に備えて、高速バスであるユニバーサルバス1を経由して転送される。ただし、更新されるプロセスデータのようにデータ量が相対的に少ない場合には、プライマリモジュール100Pとセカンダリモジュール100Sとを直接接続する所定バスを介して送受信するように構成してもよい。
識別情報生成部1149は、書き込みコマンドに含まれるプロセスデータを用いてデータベース170に記録されているプロセスデータ(過去のプロセスデータ)を更新したことを示す更新識別情報(識別情報)を生成する機能ブロックである。更新識別情報とは、例示的に、単にプロセスデータが更新されたことを示す情報、データベース同期部114において更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータが、プロセスデータ更新処理の際に新たに追加されたデータであるのか/削除されたデータであるのかを示すプロセスデータ識別情報を含む情報である。例えば、モジュール診断部112が自己のモジュールはセカンダリモジュール100Sであると検出した場合に、識別情報生成部1149Pは、プライマリモジュール100Pがセカンダリモジュール100Sから転送された書き込みコマンドに含まれるプロセスデータを用いてデータベース170Pに記録されているプロセスデータを更新したことを示す識別情報を生成する。また、例えば、モジュール診断部112が自己のモジュールはプライマリモジュール100Pであると検出した場合に、識別情報生成部1149Pは、プライマリモジュール100Pがクライアント装置20から送信された書き込みコマンド、又は、セカンダリモジュール100Sから転送された書き込みコマンドに含まれるプロセスデータを用いてデータベース170Pに記録されているプロセスデータを更新したことを示す識別情報を生成する。ここで、例えば、クライアント装置20から書き込みコマンドが冗長コントローラ10に対して送信された場合に、冗長コントローラ10は、プロセスデータの書き込み処理(更新処理)が完了した後、当該更新処理が完了したことを示す更新識別情報をクライアント装置20に送信することにより、クライアント装置20は、当該更新識別情報に基づいて書き込み処理が完了したことを確認する。
通信部120は、ユニバーサルバス1を介してクライアント装置20やプロセスコントローラ11などのシステム上位機器類と相互通信するためのブロックである。通信部120は、ユニバーサルバス1のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。通信部120は、例えば、ユニバーサルバス1を介してクライアント装置20から書き込みコマンドまたは読み込みコマンドを受信する。また、通信部120は、例えば、ユニバーサルバス1を介してクライアント装置20に対して、更新されたプロセスデータや更新識別情報を送信する。
収集部130は、ローカルバス1を介してシステム上位機器類から供給された測定値に関するプロセスデータを収集する機能ブロックである。収集部130は、例えば、クライアント装置20からローカルバス1を介して書き込まれたプロセスデータを収集し、冗長処理部110に出力する。また、収集部130は、冗長処理部110から更新されたプロセスデータや各種識別情報などを収集する。
収集部150は、測定値に関するプロセスデータを収集する機能ブロックである。収集するプロセスデータとしては、フィールド機器類から直流信号で直接供給されたアナログ測定値や、ローカルバス2に接続されるモジュールから供給されたデジタル測定値である。収集部150は、自己のモジュールがアクティブ状態である場合にのみ動作し、非アクティブ状態である場合には動作を停止するように構成されている。なお、収集部150は、例えば、制御値に関するプロセスデータを出力し、フィールド機器などの外部機器に所望の制御値を設定するように構成されてもよい。設定するプロセスデータとしては、例えば、温度調節器や圧力・流量・開閉制御弁などの各種弁装置に対して出力するアナログ設定値やデジタル設定値、ポンプやブロア、ファンなどのモータ、アクチュエータ機器類に対するロジック値などである。
通信部160は、ローカルバス2を介してフィールド機器類から供給された測定値であるプロセスデータを受信し、フィールド機器類に対する設定値であるプロセスデータを出力するブロックである。通信部160は、ローカルバス2のコンピュータネットワーク規格に準拠した物理的な通信条件に合致させて所定の通信プロトコルでデータ入出力を行う。
入出力演算部140は、各種コマンド、プロセスデータ、および各種識別情報の入出力を制御し、必要な演算処理を実施して情報・データを加工し、加工した情報・データを出力する機能ブロックである。非限定の例示として、入出力演算部140は、以下のような処理を実行する。
入出力演算部140は、収集部150が収集したプロセスデータをクライアント装置20の要求に応じて転送する。入出力演算部140は、収集したプロセスデータに補正、抽出、加算・積算・平均・時間軸移動処理などの演算を施して出力する。入出力演算部140は、収集したプロセスデータに応じて所定の制御値または制御データを生成して出力する。入出力演算部140は、自己のモジュールがアクティブ状態である場合に動作し、非アクティブ状態である場合には動作を停止する。
<動作の説明>
以下、図3乃至5の処理シーケンス図を参照しながら、冗長コントローラ10の動作を説明する。
(前提)
本実施形態において、クライアント装置20は、冗長コントローラ10との通信のために一つのIPアドレスのみを把握しているものとする。具体的には、図2における左側のモジュールの通信部120(120P)と接続するためのIPアドレスのみを把握している。したがって、クライアント装置20は、単一のIPアドレスを有する冗長コントローラ10と通信するという前提である。具体的には、クライアント装置20は、書き込みコマンドを送信して、それに対応して冗長コントローラ10から送信されてくる書き込みが完了したことを示す識別情報を受信する。また、読み込みコマンドを送信して、それに対応して冗長コントローラ10から送信されてくるプロセスデータを受信する。すなわち、クライアント装置20は、冗長コントローラ10が二重化されたモジュール100の冗長構成を有していることや、冗長構成のうちいずれか一方のアクティブ状態のモジュールと通信すべきことに配慮することなく、冗長コントローラ10を単一の装置として通信することが可能となっている。
以下、図3および図4を参照しながら書き込みコマンドに対する冗長コントローラ10の処理シーケンスを説明し、図5を参照しながら読み込みコマンドに対する処理シーケンスを説明する。
(書き込み処理)
<クライアント装置20と通信するモジュールがアクティブ状態のプライマリモジュール100Pである場合>
図3は、図2における左側のモジュールがプライマリモジュール100P、右側のモジュールがセカンダリモジュール100Sとして動作している場合の処理シーケンス図を示している。
前提として、図2に示す収集部150は、外部機器(フィールド機器など)からプロセスデータを収集している。入出力演算処理部140は、収集したプロセスデータに対して、必要な演算処理を施し、クライアント装置20の要求に応じて転送している。そして、クライアント装置20は、冗長コントローラ10のモジュールに、プロセスデータの書き込みを要求するための書き込みコマンドを送信する。
まず、図3のステップSP1において、通信部120Pは、クライアント装置20からのコマンドを受信する。
ステップSP2において、モジュール診断部112Pは、自らのモジュールの動作状態を診断する。モジュール診断部112Pが自らのモジュールはアクティブ状態であること(プライマリモジュール100Pであること)を検出する。
ステップSP3において、冗長処理部110Pは、コマンドを解析し、当該コマンドが書き込みコマンドであることを確認する。
ステップSP4において、更新部1143Pにおいて、書き込みコマンドに含まれるプロセスデータを用いてデータベース170Pに記録されているプロセスデータ(過去のプロセスデータ)を更新する。例えば、過去のプロセスデータがA+Bであり、書き込みコマンドに含まれるプロセスデータがA+B+Cである場合、更新部1143Pは、プロセスデータA+B+Cを過去のプロセスデータA+Bに上書きすることで過去のプロセスデータを更新する。
ステップSP5において、識別情報生成部1149Pは、プロセスデータが更新されたことを示す更新識別情報を生成する。ここで、更新識別情報は、例えば、更新部1143Pがプロセスデータを更新したことを示す識別情報を含む。なお、例えば、識別情報生成部1149Pは、更新されたプロセスデータA+B+Cと過去のプロセスデータA+Bとの差分に対応するプロセスデータ(C)と、プロセスデータ(C)が更新の際に新たに追加されたプロセスデータであることを示す識別情報と、を含む更新識別情報を生成してもよい。
ステップSP6において、通信部120Pは、ユニバーサルバス1を介して書き込みコマンドの送信元であるクライアント装置20に対して、更新識別情報を送信する。
なお、データベース同期部114Pは、過去のプロセスデータに対して更新されたプロセスデータの全てを非アクティブ状態であるセカンダリモジュール100Sのデータベース同期部114Sに送信するように構成されてもよい。データベース同期部114Pは、更新されたプロセスデータを任意のタイミングでセカンダリモジュール100Sのデータベース同期部114Sに送信する。セカンダリモジュール100Sのデータベース同期部114Sは、データベース同期部114Pから更新されたプロセスデータの全てを受信すると、当該プロセスデータを過去のプロセスデータに上書きすることで当該過去のプロセスデータを更新する。データベース同期部114Sは、任意のタイミングで更新されたプロセスデータをデータベース170Sに記録する。このように、双方のデータベース同期部114は、上記処理を実行することにより、プライマリモジュール100Pとセカンダリモジュール100Sとの間で、それぞれが同一のプロセスデータを記憶・保持することを可能にする。
<クライアント装置20と通信するモジュールが非アクティブ状態のセカンダリモジュール100Sである場合>
図4は、図2における左側のモジュールがセカンダリモジュール100S、右側のモジュールがプライマリモジュール100Pとして動作している場合の処理シーケンス図を示している。
前提として、収集部150は、外部機器(フィールド機器など)からプロセスデータを収集している。入出力演算処理部140は、収集したプロセスデータに対して、必要な演算処理を施し、クライアント装置20の要求に応じて転送している。そして、クライアント装置20は、冗長コントローラ10のモジュールに、プロセスデータの書き込みを要求するための書き込みコマンドを送信する。
まず、図4のステップSS1において、通信部120Sは、クライアント装置20からのコマンドを受信する。
ステップSS2において、モジュール診断部112Sは、自らのモジュールの動作状態を診断する。モジュール診断部112Sが自らのモジュールは非アクティブ状態であること(セカンダリモジュール100Sであること)を検出する。
ステップSS3において、冗長処理部110Sは、コマンドを解析し、当該コマンドが書き込みコマンドであることを確認する。
ステップSS4において、転送部1141Sは、書き込みコマンドを相手側のモジュール(プライマリモジュール100P)に転送する。なお、セカンダリモジュール100Sにおいて、プロセスデータの更新処理を自らは実行せずに、書き込みコマンドをプライマリモジュール100Pに転送するようにプログラムされている。
次に、ステップSP11において、プライマリモジュール通信部120Pは、セカンダリモジュール100Sから転送されてきたコマンドを受信する。
ステップSP12において、冗長処理部110Pは、コマンドを解析し、当該コマンドが書き込みコマンドであることを確認する。
ステップSP13において、図3のステップSP4と同様に、更新部1143Pにおいて、書き込みコマンドに含まれるプロセスデータを用いてデータベース170Pに記録されているプロセスデータ(過去のプロセスデータ)を更新する。
ステップSP14において、図3のステップSP5と同様に、識別情報生成部1149Pは、プロセスデータが更新されたことを示す更新識別情報を生成する。
ステップSP15において、通信部120Pは、書き込みコマンドの送信元であるセカンダリモジュール100Sに対して、更新識別情報を送信する。
一方、ステップSS5において、セカンダリモジュール100Sのデータベース同期部114Sは、プライマリモジュール100Pの識別情報生成部1149Pが生成する更新識別情報を受信するように待機している。
ステップSS6において、データベース同期部114Sから更新識別情報を受信するまで待って(ステップSS6において「NO」の場合)は、データベース同期部114Sは、引き続き、プライマリモジュール100Pの識別情報生成部1149Pが生成する更新識別情報を受信するように待機する(ステップSS5)。
ステップSS6において、データベース同期部114Sが更新識別情報を受信した場合(ステップSS6において「YES」の場合)は、転送部1141Sは、更新識別情報を、書き込みコマンドの送信元であるクライアント装置20に転送する(ステップSS7)。
なお、セカンダリモジュール100Sは、更新識別情報を受信すると、プロセスデータを更新し、更新されたプロセスデータをデータベース170Sに記録する。例えば、セカンダリモジュール100Sは、プロセスデータ(C)と、プロセスデータ(C)が更新の際に新たに追加されたプロセスデータであることを示すプロセスデータ識別情報とを受信し、プロセスデータ識別情報を参照することで、セカンダリモジュール100Sに記録されている過去のプロセスデータ(A+B)にプライマリモジュール100Pからのプロセスデータ(C)を追加する。したがって、セカンダリモジュール100Sに記録されている過去のプロセスデータが更新され、更新されたプロセスデータA+B+Cをデータベース170Sに格納する。
(読み込み処理)
図5は、読み込みコマンドの処理シーケンス図を示している。
前提として、データベース170Pおよび170Sには、同一のプロセスデータが記録されている。そして、クライアント装置20は、冗長コントローラ10のモジュールに、プロセスデータの読み込みを要求するための読み込みコマンドを送信する。
図5においても、クライアント装置20は、図2における左側のモジュールの通信部120(120P)と接続するためのIPアドレスのみを把握しており、この通信部120に対して読み込みコマンドが送信されてくるものとする。
ここで、上記前提のように、データベース170Pおよび170Sには、同一のプロセスデータが記録されている。このため、モジュール100は、自らがアクティブ状態でありプライマリモジュール100Pであるか、自らが非アクティブ状態でありセカンダリモジュール100Sであるかとは無関係に、自らのデータベース170からプロセスデータを読み出してクライアント装置20に返信すればよい。この点、書き込みコマンドの処理シーケンスと異なる。よって、以下の説明では、読み込みコマンドを直接受信した通信部120を含むモジュール100がプライマリモジュール100Pであるかセカンダリモジュール100Sであるかによらず、同じ動作をすればよいため、以下、プライマリ(P)、セカンダリ(S)の区別をせずに説明してある。
まず、図5のステップSP21において、通信部120は、クライアント装置20からのコマンドを受信する。
ステップSP23において、冗長処理部110は、コマンドを解析し、当該コマンドが読み込みコマンドであることを確認する。
ステップSP25において、データベース170に記録されている最新のプロセスデータが読み出される。例えば、プロセスデータA+B+Cである。
ステップSP27において、通信部120は、ユニバーサルバス1を介して書き込みコマンドの送信元であるクライアント装置20に対して、読み出したプロセスデータを送信する。よって、クライアント装置20は、データベース170に記録されている最新のプロセスデータA+B+Cを受信して、最新のプロセスデータを把握することができる。
(効果)
(1)以上のとおり、本実施形態のモジュール100によれば、書き込みコマンドを受信した場合、互いに同等の機能を有するモジュールの各々は、自らのモジュールがアクティブ状態である場合(プライマリモジュール100Pの場合)は、データベース170Pに記録されているプロセスデータが更新されたことを示す更新識別情報をクライアント装置20に送信する。また、自らのモジュールが非アクティブ状態である場合(セカンダリモジュール100Sの場合)は、プロセスデータを含む書き込みコマンドを自らのモジュールと対をなすプライマリモジュール100Pへ転送し、プライマリモジュール100Pから転送されてきた更新識別情報をさらにクライアント装置20に送信する。したがって、クライアント装置20は、冗長コントローラ10が二重化されたモジュール100の冗長構成を有していることや、冗長構成のうちいずれか一方のアクティブ状態のモジュールと通信すべきことに配慮することなく、冗長コントローラ10を単一の装置として書き込み処理をすることができるという汎用性の高い通信を実現できる。
(2)以上のとおり、本実施形態のモジュール100によれば、読み込みコマンドを受信した場合、自らのモジュールが非アクティブ状態であるかアクティブ状態であるかに関わらず、自らのデータベース170に保持されたプロセスデータをクライアント装置20に送信する。本実施形態によれば、二重化された冗長構成のそれぞれのデータベース170Pおよび170Sで同一のプロセスデータが更新保持されてこのプロセスデータが読み出されて送信されるので、クライアント装置20は、最新のプロセスデータを直接把握することができる。したがって、クライアント装置20は、冗長コントローラ10が二重化されたモジュール100の冗長構成を有していることや、冗長構成のうちいずれか一方のアクティブ状態のモジュールと通信すべきことに配慮することなく、冗長コントローラ10を単一の装置として読み込み処理をすることができるという、汎用性の高い通信を実現できる。
(その他の実施形態)
本発明は上記各実施形態に限定されることなく種々に変更して利用することができる。例えば、プライマリモジュール100Pとセカンダリモジュール100Sとの間において、一方のモジュールにおいて更新されたプロセスデータの全てを相手方のモジュールに転送することなく、更新されたプロセスデータと過去のプロセスデータとの差分に対応するプロセスデータおよび/または所定のプロセスデータ識別情報のみ送信する。したがって、プライマリモジュール100Pとセカンダリモジュール100Sとの間でプロセスデータを同期することが可能となるので、データ送信量の削減が可能となる。
なお、二つのモジュールのデータベース同期部114間のプロセスデータは、データ量が相対的に多い場合に備えて、高速バスであるユニバーサルバス1を経由して転送される。ただし、更新されるプロセスデータのようにデータ量が相対的に少ない場合には、プライマリモジュール100Pとセカンダリモジュール100Sとを直接接続する所定バスを介して送受信するように構成してもよい。
1…ユニバーサルバス
2…ローカルバス
10…冗長コントローラ
20…クライアント装置
33…シリアル通信ユニット
43−45…フィールド機器
100P…プライマリモジュール
100S…セカンダリモジュール
110P、110S…冗長処理部
112P、112S…モジュール診断部
114P、114S…データベース同期部
120P、120S…通信部
130P、130S…収集部
140P、140S…入出力演算処理部
150P、150S…収集部
160P、160S…通信部
170P、170S…データベース
1141P、1141S…転送部
1143P、1143S…更新部
1145P、1145S…比較部
1147P、1147S…算出部
1149P、1149S…識別情報生成部

Claims (4)

  1. 一方がアクティブ状態とされる場合に他方が非アクティブ状態とされる冗長構成を編成可能な冗長用モジュールであって、
    1)自らのモジュールがアクティブ状態である場合は、
    1−1)受信したプロセスデータを含むコマンドで、前記自らのモジュールに記録されているプロセスデータを更新し、
    1−2)前記プロセスデータが更新されたことを示す識別情報を送信し、
    2)前記自らのモジュールが非アクティブ状態である場合は、
    2−1)前記プロセスデータを含む前記コマンドを前記自らのモジュールと対をなす他方のモジュールへ転送し、
    2−2)前記他方のモジュールから転送されてきた前記識別情報をさらに送信する、
    冗長用モジュール。
  2. 前記モジュールの各々は、
    前記自らのモジュールが非アクティブ状態である場合は、
    前記識別情報に基づいて、前記自らのモジュールに記録されているプロセスデータを更新する、
    請求項1に記載の冗長用モジュール。
  3. 請求項1または2に記載の冗長用モジュールの前記冗長構成を備え、
    前記冗長構成の一方がアクティブ状態とされる場合に前記冗長構成の他方が非アクティブ状態とされる、
    冗長コントローラ。
  4. 一方がアクティブ状態とされる場合に他方が非アクティブ状態とされ冗長用モジュールにおいて実行されるプログラムであって、
    前記冗長モジュールが備えるコンピュータに、
    1)自らのモジュールがアクティブ状態である場合は、
    1−1)受信したプロセスデータを含むコマンドで、前記自らのモジュールに記録されているプロセスデータを更新する機能と、
    1−2)前記プロセスデータが更新されたことを示す識別情報を送信する機能と、
    2)前記自らのモジュールが非アクティブ状態である場合は、
    2−1)前記プロセスデータを含む前記コマンドを前記自らのモジュールと対をなす他方のモジュールへ転送する機能と、
    2−2)前記他方のモジュールから転送されてきた前記識別情報をさらに送信する機能と、
    を実行させるためのプログラム。
JP2015138930A 2015-07-10 2015-07-10 冗長用モジュール、冗長コントローラ、およびプログラム Pending JP2017021588A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015138930A JP2017021588A (ja) 2015-07-10 2015-07-10 冗長用モジュール、冗長コントローラ、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015138930A JP2017021588A (ja) 2015-07-10 2015-07-10 冗長用モジュール、冗長コントローラ、およびプログラム

Publications (1)

Publication Number Publication Date
JP2017021588A true JP2017021588A (ja) 2017-01-26

Family

ID=57890076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015138930A Pending JP2017021588A (ja) 2015-07-10 2015-07-10 冗長用モジュール、冗長コントローラ、およびプログラム

Country Status (1)

Country Link
JP (1) JP2017021588A (ja)

Similar Documents

Publication Publication Date Title
US7246194B2 (en) Interface module for use with a fieldbus device network and with internet and non-internet based process control networks
JP5156074B2 (ja) MODBUSデバイスネットワーク及びFieldbusデバイスネットワークとともに使用するためのインターフェイスモジュール
EP3333657B1 (en) Communication system, communication device, and communication program
US20200036729A1 (en) System and method for determining or monitoring a process variable in an automation plant
US20140074294A1 (en) Dual-system component-based industrial robot controller
US20060140209A1 (en) Field device, system and process for multi-protocol field device emulator
US9869987B2 (en) Field bus system with industrial measurement device having automonous control operation
US11544206B2 (en) Process control unit and method for interprocess exchange of process variables
CN106873505B (zh) 包括可编程逻辑控制器和云计算系统的控制架构
EP3547049B1 (en) Safety control system and safety control unit
JP2017021587A (ja) 冗長コントローラ
WO2016157477A1 (ja) 管理システム
JP2019174950A (ja) サポート装置、サポートプログラム、設定方法
JP2017021588A (ja) 冗長用モジュール、冗長コントローラ、およびプログラム
JP2012208706A (ja) 冗長コントローラ
WO2020184062A1 (ja) 制御システムおよび制御装置
WO2020184063A1 (ja) 制御システムおよび制御装置
JP4873220B2 (ja) フィールド通信システム
JP2014174734A (ja) データ通信システムとそのマスタユニットおよびデータ通信方法
Brunner et al. Hardware-independent self-discovery of peripherals and modules of a self-adaptive avionics platform
JP6633415B2 (ja) コントローラおよびその制御方法
WO2020184034A1 (ja) 制御システムおよび制御装置
EP2876518B1 (en) System for dynamic connection of distributed advanced process control components with control level applications
JP2019197449A (ja) 機器管理装置およびタグ名検証方法
CN102710444A (zh) 一种端口连接关系确定方法、装置及系统