(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-29
(45)【発行日】2023-06-06
(54)【発明の名称】制御システム、制御装置、及び、フィールド機器へのアクセス方法
(51)【国際特許分類】
G05B 19/042 20060101AFI20230530BHJP
【FI】
G05B19/042
(21)【出願番号】P 2020055910
(22)【出願日】2020-03-26
【審査請求日】2022-03-02
(73)【特許権者】
【識別番号】000006507
【氏名又は名称】横河電機株式会社
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100188307
【氏名又は名称】太田 昌宏
(74)【代理人】
【識別番号】100147692
【氏名又は名称】下地 健一
(72)【発明者】
【氏名】吉田 善貴
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2001-005684(JP,A)
【文献】特開2008-009793(JP,A)
【文献】特開2020-027434(JP,A)
【文献】特開2012-243325(JP,A)
【文献】特開2004-265411(JP,A)
【文献】特開2007-013997(JP,A)
【文献】特開2019-074880(JP,A)
【文献】米国特許出願公開第2009/0292524(US,A1)
【文献】特開昭61-054510(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/042
(57)【特許請求の範囲】
【請求項1】
プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行う一つ以上のフィールド機器と、
前記一つ以上のフィールド機器に含まれる第1のフィールド機器が直接接続され、前記第1のフィールド機器を制御可能な第1の制御アプリケーション、及び、第1のアクセス経路制御部を含む、第1の制御装置と、
前記第1のフィールド機器を制御可能な第2の制御アプリケーション、及び、第2のアクセス経路制御部を含む、少なくとも一つの第2の制御装置と、
前記第1の制御装置及び前記第2の制御装置を通信可能に接続するネットワークと
を備え、
前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、協働して、前記第1の制御アプリケーション及び前記第2の制御アプリケーションのそれぞれからの、前記第1のフィールド機器への入出力の経路を制御するように構成される、制御システム。
【請求項2】
前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーションが前記第1のフィールド機器に入出力する第1の状態と、前記第2の制御アプリケーションが前記第1のフィールド機器に入出力する第2の状態とを切り替え可能に構成される、請求項1に記載の制御システム。
【請求項3】
前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーションが前記第1のフィールド機器の入出力単位を特定する方法と、前記第2の制御アプリケーションが前記第1のフィールド機器の前記入出力単位を特定する方法とが同じとなるように構成される、請求項1または2に記載の制御システム。
【請求項4】
前記第1の制御アプリケーション及び前記第2の制御アプリケーションは、前記第1のフィールド機器の前記入出力単位を、固有の名称により特定するように構成される、請求項3に記載の制御システム。
【請求項5】
前記第1のフィールド機器の前記入出力単位は、前記第1の制御装置のメモリ領域に割り当てられ、前記第1のアクセス経路制御部は、前記第1の制御アプリケーション及び前記第2の制御アプリケーションから前記第1のフィールド機器への入出力指示を、前記メモリ領域のアドレスを指定することにより実行するように構成される、請求項3又は4に記載の制御システム。
【請求項6】
前記第2のアクセス経路制御部は、前記第2の制御アプリケーションからの前記第1のフィールド機器への前記入出力指示を、前記ネットワークを経由して、前記第1のアクセス経路制御部へ転送するように構成される、請求項5に記載の制御システム。
【請求項7】
前記第1のフィールド機器を交換する場合において、前記第1のアクセス経路制御部は、前記メモリ領域に記憶される入出力データを固定するように構成される、請求項5又は6に記載の制御システム。
【請求項8】
前記一つ以上のフィールド機器に含まれる、前記ネットワークに直接接続された第2のフィールド機器をさらに備え、前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部の少なくとも何れかは、前記第2のフィールド機器に入出力可能に構成され、
前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーション及び前記第2の制御アプリケーションから、前記第2のフィールド機器への入出力の経路を制御可能に構成される、請求項1から7の何れか一項に記載の制御システム。
【請求項9】
前記第1の制御装置は、判定部を備え、
前記第1の制御アプリケーション及び前記第2の制御アプリケーションの少なくとも何れかを含む複数の制御アプリケーションが、前記第1のフィールド機器からの出力値に基づいて、同一の制御演算を行い前記第1のフィールド機器への入力値を算出し、
前記判定部は前
記複数の制御アプリケーションにより算出された複数の前記入力値に基づいて、前記第1のフィールド機器への入力値を決定するように構成される、請求項1から8の何れか一項に記載の制御システム。
【請求項10】
プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行うフィールド機器が直接接続された制御装置であって、
前記フィールド機器を制御可能な制御アプリケーションと、
前記制御装置とは異なる他の制御装置が有する他のアクセス経路制御部と協働して、前記制御アプリケーション及び前記他の制御装置の制御アプリケーションから前記フィールド機器への入出力の経路を制御するように構成される、アクセス経路制御部と、
を備える制御装置。
【請求項11】
プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行うフィールド機器に対して制御装置から入出力を行うためのフィールド機器へのアクセス方法であって、
前記制御装置の制御アプリケーションが前記フィールド機器の入出力単位を指定して入出力を指示し、
前記制御装置のアクセス経路制御部が、前記指定されたフィールド機器の位置情報を取得し、
前記位置情報に基づいて、前記フィールド機器が他の制御装置に接続されている場合、前記フィールド機器が接続された前記他の制御装置のアクセス経路制御部を経由して、前記フィールド機器に入出力を行う、
アクセス方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、制御装置、及び、フィールド機器へのアクセス方法に関する。
【背景技術】
【0002】
プラント又は工場等におけるプロセス制御システムでは、センサ及びアクチュエータ等のフィールド機器が直接コントローラに接続された構成が一般的である。本開示において、フィールド機器が直接接続され、他のコントローラとのインタフェースとして機能するコントローラをIOノードと呼ぶ。
【0003】
コントローラ上で動作する制御アプリケーションは、センサから読み取ったプロセスデータを用いて制御演算を行い、演算結果をアクチュエータに出力してプラントの制御を行う。従来、フィールド機器又はIOノードは、決められたコントローラに搭載された制御アプリケーションと論理的に繋がっており、フィールド機器、IOノード、コントローラ、及び、制御アプリケーションの組み合わせを変更して動作することができない。しかしながら、この方法では、制御アプリケーションが動作中のコントローラのハードウェアを交換する場合等において、システムを止める必要が生じる。このため、システムを止めることなくコントローラのハードウェアを交換する方法が提案されている(例えば、特許文献1及び2参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第5561298号明細書
【文献】米国特許出願公開第2018/0321662号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術には、改善すべき点がある。本開示は、制御アプリケーションの位置に依らずフィールド機器に適切な方法で入出力を行うことが可能な、制御システム、制御装置、及び、フィールド機器へのアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示は、それぞれが協働して動作するアクセス経路制御部を有する制御装置、当該制御装置を含む制御システム、及び、フィールド機器へのアクセス方法に関するものである。
【0007】
幾つかの実施形態に係る制御システムは、プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行う一つ以上のフィールド機器と、前記一つ以上のフィールド機器に含まれる第1のフィールド機器が直接接続され、前記第1のフィールド機器を制御可能な第1の制御アプリケーション、及び、第1のアクセス経路制御部を含む、第1の制御装置と、前記第1のフィールド機器を制御可能な第2の制御アプリケーション、及び、第2のアクセス経路制御部を含む、少なくとも一つの第2の制御装置と、前記第1の制御装置及び前記第2の制御装置を通信可能に接続するネットワークと、を備える。前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、協働して、前記第1の制御アプリケーション及び前記第2の制御アプリケーションのそれぞれからの、前記第1のフィールド機器への入出力の経路を制御するように構成される。このように、第1及び第2のアクセス経路制御部を設け、第1の制御アプリケーション及び第2の制御アプリケーションのそれぞれから、第1のフィールド機器への入出力の経路を制御すれば、制御アプリケーションの位置に依らずフィールド機器に適切な方法で入出力を行うことができる。
【0008】
一実施形態において、前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーションが前記第1のフィールド機器に入出力する第1の状態と、前記第2の制御アプリケーションが前記第1のフィールド機器に入出力する第2の状態とを切り替え可能に構成されてよい。このように、第1の状態と第2の状態とを切り替え可能にすれば、第1の制御装置と第2の制御装置との間でシステムを停止させることなく、制御アプリケーションを切り替えることができる。
【0009】
一実施形態において、前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーションが前記第1のフィールド機器の入出力単位を特定する方法と、前記第2の制御アプリケーションが前記第1のフィールド機器の前記入出力単位を特定する方法とが同じとなるように構成されてよい。このように、第1のアクセス経路制御部及び前記第2のアクセス経路制御部が、第1の制御アプリケーションと第2の制御アプリケーションとが第1のフィールド機器の入出力単位を同じ方法で特定するようにすれば、同じ制御アプリケーションを第1の制御装置と第2の制御装置との間で、設定を変更することなく載せ替えることができる。
【0010】
一実施形態において、前記第1の制御アプリケーション及び前記第2の制御アプリケーションは、前記第1のフィールド機器の前記入出力単位を、固有の名称により特定するように構成されてよい。このように、第1の制御アプリケーション及び第2の制御アプリケーションが、第1のフィールド機器の入出力単位を、固有の名称により特定することにより、制御アプリケーションの物理的位置に依らず、フィールド機器を特定することが可能になる。
【0011】
一実施形態において、前記第1のフィールド機器の前記入出力単位は、前記第1の制御装置のメモリ領域に割り当てられ、前記第1のアクセス経路制御部は、前記第1の制御アプリケーション及び前記第2の制御アプリケーションから前記第1のフィールド機器への入出力指示を、前記メモリ領域のアドレスを指定することにより実行するように構成されてよい。このように、第1のアクセス経路制御部が、第1及び第2の制御アプリケーションから第1のフィールド機器への入出力指示を、メモリ領域のアドレスを指定することにより実行すれば、第2の制御アプリケーションからの入出力指示であっても効率よく処理することができる。
【0012】
一実施形態において、前記第2のアクセス経路制御部は、前記第2の制御アプリケーションからの前記第1のフィールド機器への前記入出力指示を、前記ネットワークを経由して、前記第1のアクセス経路制御部へ転送するように構成されてよい。このように、第2の制御アプリケーションから第1のフィールド機器への入力指示が、第1のアクセス経路制御部に転送されるので、第2の制御アプリケーションからの入出力指示であっても、第1のアクセス経路制御部がフィールド機器の入出力が割り当てられたメモリ領域のアドレスを指定して実行するので、余計な処理負荷又は通信負荷を生じずに効率的に処理をすることができる。
【0013】
一実施形態において、前記第1のフィールド機器を交換する場合において、前記第1のアクセス経路制御部は、前記メモリ領域に記憶される入出力データを固定するように構成されてよい。第1のフィールド機器を交換する際、第1のアクセス経路制御部が、メモリ領域に記憶される入出力データを固定すれば、第1の制御装置及び第2の制御装置を停止することなく、第1のフィールド機器を交換することが可能になる。
【0014】
一実施形態において、前記制御システムは、前記一つ以上のフィールド機器に含まれる、前記ネットワークに直接接続された第2のフィールド機器をさらに備え、前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部の少なくとも何れかは、前記第2のフィールド機器に入出力可能に構成され、前記第1のアクセス経路制御部及び前記第2のアクセス経路制御部は、前記第1の制御アプリケーション及び前記第2の制御アプリケーションから、前記第2のフィールド機器への入出力の経路を制御可能に構成されてよい。このように、第1のアクセス経路制御部及び第2のアクセス経路制御部の少なくとも何れかが、ネットワークに直接接続された第2のフィールド機器に入出力可能に構成され、第1のアクセス経路制御部及び第2のアクセス経路制御部が、第1の制御アプリケーション及び第2の制御アプリケーションから、第2のフィールド機器への入出力の経路を制御可能に構成されるようにすれば、第1のフィールド機器に加え、第2のフィールド機器を制御システムに取り込んで制御することが可能になる。
【0015】
一実施形態において、前記第1の制御装置は、判定部を備え、前記第1の制御アプリケーション及び前記第2の制御アプリケーションの少なくとも何れかを含む複数の制御アプリケーションが、前記第1のフィールド機器からの出力値に基づいて、同一の制御演算を行い前記第1のフィールド機器への入力値を算出し、前記判定部は前記複数の制御アプリケーションにより算出された複数の前記入力値に基づいて、前記第1のフィールド機器への入力値を決定するように構成されてよい。このように、第1の制御装置が判定部を備え、複数の制御アプリケーションにより算出された複数の入力値に基づいて、第1のフィールド機器への入力値を決定するようにすれば、制御システムの制御の信頼性を高めることができる。
【0016】
幾つかの実施形態に係る制御装置は、プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行うフィールド機器が直接接続された制御装置であって、前記フィールド機器を制御可能な制御アプリケーションと、前記制御装置とは異なる他の制御装置が有する他のアクセス経路制御部と協働して、前記制御アプリケーション及び前記他の制御装置の制御アプリケーションから前記フィールド機器への入出力の経路を制御するように構成される、アクセス経路制御部と、を備える。このように、アクセス経路制御部を設け、自装置及び他の制御装置から第1のフィールド機器への入出力の経路を制御するようにすれば、制御アプリケーションの位置に依らずフィールド機器に適切な方法で入出力を行うことが可能となる。
【0017】
幾つかの実施形態に係るフィールド機器へのアクセス方法は、プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行うフィールド機器に対して制御装置から入出力を行うためのフィールド機器へのアクセス方法であって、前記制御装置の制御アプリケーションが前記フィールド機器の入出力単位を指定して入出力を指示し、前記制御装置のアクセス経路制御部が、前記指定されたフィールド機器の位置情報を取得し、前記位置情報に基づいて、前記フィールド機器が他の制御装置に接続されている場合、前記フィールド機器が接続された前記他の制御装置のアクセス経路制御部を経由して、前記フィールド機器に入出力を行う。このように、指定されたフィールド機器の位置情報を取得し、位置情報に基づいて、フィールド機器が他の制御装置に接続されている場合、フィールド機器が接続された他の制御装置のアクセス経路制御部を経由して、フィールド機器に入出力を行うことにより、フィールド機器の物理的位置に依らず、同じアクセス方法でフィールド機器に対して入出力を行うことが可能になる。
【発明の効果】
【0018】
本開示によれば、制御アプリケーションの位置に依らずフィールド機器に適切な方法で入出力を行うことができる。
【図面の簡単な説明】
【0019】
【
図1】第1実施形態に係る制御システムの一例を示す概略図である。
【
図2】
図1の制御システムの要部の構成例を示すブロック図である。
【
図3】制御アプリケーションから入出力指示を受けたIOアクセスルーティング部が実行する処理の一例を示すフローチャートである。
【
図4】通信部から入出力指示を受けたIOアクセスルーティング部が実行する処理の一例を示すフローチャートである。
【
図5】制御アプリケーションをIOノードからコントローラへ移動する手順の一例を示すフローチャートである。
【
図6】制御アプリケーションをコントローラからIOノードへ移動する手順の一例を示すフローチャートである。
【
図7】第2実施形態に係る制御システムの一例を示す概略図である。
【
図8】
図7の制御システムの要部の構成例を示すブロック図である。
【
図9】IOノードを交換する手順の一例を示すフローチャートである。
【
図10】第3実施形態に係る制御システムの一例を示す概略図である。
【
図11】第4実施形態に係る制御システムの要部の構成例を示すブロック図である。
【
図12】判定部を有するIOノードの一例を示すブロック図である。
【発明を実施するための形態】
【0020】
本開示に係る実施形態について説明する前に、従来技術に基づく比較例について説明する。
【0021】
[比較例]
特許文献1は、制御アプリケーションがフィールド機器の接続されていないコントローラ上の仮想ハードウェアで動作し、フィールド機器が接続された冗長化IOノードとコントローラとがネットワークを介して接続する構成のプロセス制御システムを提案している。このプロセス制御システムによれば、冗長化IOノードは、フィールド機器で入出力される信号と、ネットワークを介してコントローラと通信される信号との変換を行う。これにより、制御アプリケーションは任意のコントローラ上で動作し、また任意のフィールド機器と接続することができる。このプロセス制御システムによれば、制御アプリケーションとコントローラとの組み合わせを一時的に変更することで、システムを止めることなくコントローラのハードウェアを交換することができる。しかしながら、特許文献1の制御システムでは、冗長化IOノードは制御アプリケーションを搭載せず、フィールド機器はコントローラのみから制御された。このため、フィールド機器へのアクセス方法には改良の余地があった。
【0022】
特許文献2には、特許文献1と同様に、フィールド機器が接続されたIOノードとコントローラとがネットワークを介して接続された制御システムが開示されている。特許文献2に記載されるIOノードは、IOノードに接続されたフィールド機器を制御する制御アプリケーションが動作可能に構成される。また、特許文献2のフィールド機器に接続されていないコントローラ上の制御アプリケーションは、ネットワークを経由して、IOノードに接続されたフィールド機器にアクセス可能に構成される。コントローラとIOノードとの通信のため、例えば、OPC UA(OPC Unified Architecture)のような通信プロトコルが使用される。特許文献2の制御システムでは、コントローラの制御アプリケーションが別のコントローラに移動しても、制御アプリケーションは、ネットワークを経由して同じフィールド機器にアクセスすることができる。
【0023】
特許文献2に開示されるような制御システムでは、IOノードに接続されたフィールド機器にアクセスするため、コントローラ上で稼働する制御アプリケーションは、ネットワーク経由でフィールド機器にアクセスする手順を実行する。自装置に接続されたフィールド機器を制御するIOノード上で稼働する制御アプリケーションは、フィールド機器の入出力のために割り当てられた特定のメモリアドレスに直接アクセスして情報の入出力を行う。このため、コントローラ上で稼働する制御アプリケーションを、IOノードに搭載すると、フィールド機器へのアクセスは、ネットワーク経由のアクセスとなる。この場合、メモリアドレスを直接指定してフィールド機器に入出力をする場合に比べ、余計な通信負荷又は処理負荷が生じる。また、IOノード上で稼働する制御アプリケーションは、ネットワーク経由でのフィールド機器へのアクセスを前提としていないので、コントローラに搭載することができない。システムを止めることなくハードウェアの交換又はソフトウェアの更新を行うためには、コントローラ上かIOノード上かに関わらず、制御アプリケーションはフィールド機器に適切な方法で入出力を行うことが好ましい。
【0024】
そこで、本開示は、制御アプリケーションの位置に依らずフィールド機器に適切な方法で入出力を行うことができる制御システム、制御装置、及び、フィールド機器へのアクセス方法を提案する。また、本開示は、制御装置の交換及び負荷分散を容易に行うことができる制御システムを提案する。以下、本開示の実施形態について、図面を参照して説明する。
【0025】
[第1実施形態]
図1は、第1実施形態に係る制御システム1の一例を示す概略図である。制御システム1は、それぞれ一つ以上のフィールド機器10、IOノード20、及び、コントローラ30、並びに、ネットワーク40を含む。制御システム1は、さらに、監視装置45を含んでよい。フィールド機器10は、第1のフィールド機器である。IOノード20は、第1の制御装置である。コントローラ30は第2の制御装置である。
【0026】
フィールド機器10は、プラントの制御のためのデータの取得、及び、前記プラントの操作の少なくとも一方を行う。フィールド機器10は、例えば、温度センサ又は流量計等のセンサ11、若しくは、バルブ機器、ファン又はモータ等のアクチュエータ12である。
【0027】
IOノード20は、フィールド機器10が直接接続され、且つ、制御アプリケーション21(
図2参照)が動作する装置である。IOノード20は、フィールド機器10とコントローラ30とのインタフェースとしても使用される。以下の説明では、IOノード20が複数ある場合に、いずれもIOノード20と表記する場合がある。説明のため必要な場合、複数のIOノード20の一つをIOノード20Aとして特定のIOノード20と区別する。また、IOノード20Aに接続されるフィールド機器をフィールド機器10A(センサ11A及びアクチュエータ12A)とすることがある。
【0028】
本実施形態のコントローラ30は、フィールド機器10が直接接続されておらず、制御アプリケーション31(
図2参照)が動作する装置である。本実施形態では、コントローラにフィールド機器10が直接接続された機器は、IOノード20とする。コントローラ30は、ネットワーク40を経由して、IOノード20と通信可能に構成される。コントローラ30は、制御アプリケーション31に従って、IOノード20を経由して、フィールド機器10にアクセスすることができる。コントローラ30は、IOノード20に接続された複数のフィールド機器10の入出力をすることが可能である。
【0029】
ネットワーク40は、プラント内のIOノード20、コントローラ30、監視装置45等の情報機器を接続可能なプラント内専用の通信ネットワークである。ネットワーク40は、有線又は無線の構内通信網(LAN:Local Area Network)を含んでよい。有線の構内通信網は、例えば、イーサネットを含む。無線の構内通信網は、例えばWi-Fi(登録商標)及びWiMAX(登録商標)等の無線通信規格に準拠した無線ネットワークを含む。さらにOPC UAやPROFINETのような標準化されたプロトコルを使用する通信ネットワークを用いてもよい。
【0030】
監視装置45は、プラント全体の動作状況を監視するために使用される装置である。監視装置45には、それぞれのIOノード20及びコントローラ30から、アプリケーションの動作状態が送信されてよい。アプリケーションの動作状態には、稼働、停止、アイドル、エラー等を含む。監視装置45は、表示手段及び入力手段を有する。監視装置45は、運転員の指示に従って、又は、プログラムされた手順に従って、IOノード20及びコントローラ30を制御する。監視装置45は、制御アプリケーション21、31を停止させたり、アプリケーションの動作を調整したりするために使用される。
【0031】
次に、
図2を参照して、制御システム1の要部の構成例についてさらに説明する。
【0032】
IOノード20は、制御アプリケーション21、IOアクセスルーティング部22、IOアクセス部23及び通信部24を含んで構成されうる。制御アプリケーション21は、第1の制御アプリケーションである。IOアクセスルーティング部22は、第1のアクセス経路制御部である。なお、
図1に示したIOノード20Aも、IOノード20と同様の構成要素を有する。以下において、IOノード20Aの構成要素に対し、IOノード20の構成要素と同じ参照符号を付して説明する場合がある。
【0033】
制御アプリケーション21は、IOノード20に接続されたフィールド機器10を制御することができる。制御アプリケーション21は、他のIOノード20Aに接続されたフィールド機器10Aを制御してもよい。制御アプリケーション21は、オペレーティングシステム上で動作してよい。制御アプリケーション21は、プロセス制御を行う上で必要なフィールド機器10の制御(例えば、フィールド機器10からの測定データの収集及びフィールド機器10に対する制御データの送信等)を行う。
【0034】
IOアクセスルーティング部22は、制御アプリケーション21に対して抽象化されたIOアクセス方法を提供する。IOアクセスルーティング部22は、IOアクセスルーティング部22が搭載されたIOノード20とフィールド機器10との物理的な関係に合わせてアクセス方法を適応的に変更する。ハードウェアを抽象化するため、IOアクセスルーティング部22は、IOノード20内の仮想化部25に含まれてよい。仮想化部25は、IOノード20のハードウェア上でハードウェアの代わりとして仮想的に動作する。仮想化部25は、制御アプリケーション21を変更することなくIOノード20のハードウェアの交換を可能にするために設けられる。しかし、IOアクセスルーティング部22の機能を提供するために、仮想化部25は必須ではない。仮想化部25が無くとも、IOアクセスルーティング部22を実装することは可能である。
【0035】
IOアクセス部23は、IOノード20に接続されたフィールド機器10との間で、データの入出力処理を行う。IOアクセス部23は、IOアクセス用のポート及び回路等を含んでよい。
【0036】
通信部24は、ネットワーク40を介して他のIOノード20A及びコントローラ30と通信を行う。通信部24は、ネットワーク40の種類に応じて必要な通信処理を行う。通信部24は、ネットワーク40と接続するための物理インタフェース、及び、プロトコル処理等を行う回路等を含んでよい。
【0037】
コントローラ30は、制御アプリケーション31、IOアクセスルーティング部32、及び通信部33を含んで構成される。制御アプリケーション31は、第2の制御アプリケーションである。IOアクセスルーティング部32は、第2のアクセス経路制御部である。制御アプリケーション31、IOアクセスルーティング部32、及び、通信部33は、それぞれ、IOノード20の制御アプリケーション21、IOアクセスルーティング部22、及び通信部24と同一又は類似の機能を有するので、説明を省略する。
【0038】
IOアクセスルーティング部22及びIOアクセスルーティング部32は、協働して、制御アプリケーション21及び制御アプリケーション31のそれぞれからの、フィールド機器10への入出力の経路を制御するように構成される。本開示において、「協働する」とは、例えば、各装置のIOアクセスルーティング部が、お互いの存在および通知先を知っており、自らに接続されている制御アプリケーションの有無(有の場合は、その情報や状態等)、および、自らに接続されているフィールド機器の有無(有の場合は、その情報や状態等)を、適宜、他装置のIOアクセスルーティング部と情報交換可能となっている状態を示す。したがって、監視装置などから、指示があった際には、適切な相手先(他装置のIOアクセスルーティング部)に対し、処理を実行もしくは実行依頼することが可能となる。IOアクセスルーティング部22及びIOアクセスルーティング部32は、フィールド機器10との物理的な位置関係に応じて、例えば、以下のようにアクセス方法を決定する。IOアクセスルーティング部22及びIOアクセスルーティング部32が提供する機能を、IOアクセスルーティング機能と呼ぶ。
【0039】
(1)メモリアドレス指定:
フィールド機器10の入出力単位は、通常IOノード20のメモリ領域に割り当てられる。IOノード20の制御アプリケーション21が、IOノード20に直接つながっているフィールド機器10にアクセスする場合、IOアクセスルーティング部22は、制御アプリケーション21がI/O名で示したフィールド機器10の入出力単位に対応したメモリ領域のアドレスを指定して、フィールド機器10にアクセスする。
【0040】
(2)ネットワーク経由:
コントローラ30の制御アプリケーション31がネットワーク40でつながっているIOノード20に接続されたフィールド機器10にアクセスする場合、IOアクセスルーティング部32は、制御アプリケーション31からI/O名とともに示された入出力指示を、ネットワーク40を経由してIOノード20に転送する。コントローラ30から入出力指示を受けたIOノード20のIOアクセスルーティング部22は、フィールド機器10の入出力に対応したメモリアドレスを指定してフィールド機器10にアクセスする。IOノード20の制御アプリケーション21がネットワーク40でつながっている他のIOノード20Aに接続されたフィールド機器10Aにアクセスする場合も、IOアクセスルーティング部22は、制御アプリケーション21からの入出力指示を、ネットワークを経由してIOノード20Aに転送する。
【0041】
入出力単位とは、フィールド機器10に対して一回にデータの入出力を行う単位を意味する。例えば、フィールド機器10が温度を計測するセンサ11の場合、フィールド機器10から出力される温度情報は、入出力単位となりうる。例えば、フィールド機器10がヒーター(アクチュエータ12)であり、温度を所定の設定値に上昇させる指示をフィールド機器10に送信する場合、フィールド機器10に出力されるヒーターの稼働指示及び設定温度を示す情報は、入出力単位となりうる。フィールド機器10には、一つ又は複数の入出力単位でアクセス可能である。フィールド機器10のそれぞれの入出力単位の情報の入出力先をI/Oと呼ぶ。I/Oは、例えば、メモリアドレスである。
【0042】
(IOアクセスルーティング部の処理)
図3及び
図4を参照して、IOアクセスルーティング部22、32の実行する処理の例を説明する。
図3は、制御アプリケーション21、31から指示を受けて、IOアクセスルーティング部22、32が実行する処理を示す。
図4は、IOノード20の通信部24が、ネットワーク40を経由して他のIOノード20A又はコントローラ30からの入出力指示を受け、通信部24からこの入出力指示を受けてIOアクセスルーティング部22が実行する処理を示す。
【0043】
まず、
図3において、IOアクセスルーティング部22、32は、制御アプリケーション21、31からフィールド機器10のI/Oを抽象化した固有の名称とともにフィールド機器10への入出力指示を受ける(ステップS101)。固有の名称としては、システム内で唯一となるように定義された名称を使用することができる。I/Oの固有の名称を以下にI/O名と呼ぶ。制御アプリケーション21、31は、フィールド機器10の物理的な位置、又は、フィールド機器10が接続されたIOノード20のIPアドレスを指定するのではなく、I/Oに割り当てたI/O名を指定してアクセスする。これにより、制御アプリケーション21、31は、フィールド機器10との物理的位置関係又は接続関係に依らず、入出力をするフィールド機器10のI/Oを同じ方法で特定することができる。
【0044】
次に、IOアクセスルーティング部22、32は、制御アプリケーション21、31から受け取ったI/O名に基づいて、対応するフィールド機器10の位置情報を特定する(ステップS102)。フィールド機器10の位置情報とは、フィールド機器10に繋がる経路と言い換えることができる。フィールド機器10の位置情報は、フィールド機器10が接続されるIOノード20の情報を含む。I/O名に対応するフィールド機器10及びその位置情報の特定は、種々の方法により行うことができる。例えば、各IOアクセスルーティング部22、32に、I/O名とフィールド機器10及びその位置情報との対応関係を示す変換テーブルを持たせることができる。或いは、ネットワーク40上に、I/O名とフィールド機器10及びその位置情報との対応を記憶する管理サーバを設けることができる。管理サーバは、I/O名を用いたIOアクセスルーティング部22、32からの問い合わせに対してフィールド機器10の位置情報を返すようにすることができる。
【0045】
IOアクセスルーティング部22、32は、I/O名に基づいて対応するフィールド機器10の位置情報を特定すると、そのフィールド機器10が自装置に接続されているか否かを判断する(ステップS103)。
【0046】
ステップS103において、I/O名に対応するフィールド機器10が自装置に接続されている場合(ステップS103:Yes)、IOアクセスルーティング部22、32は、ステップS104に進む。この場合、自装置は、IOノード20である。IOアクセスルーティング部22は、I/O名に対応するメモリアドレスを指定してI/Oにアクセスし、データの入出力を行う(ステップS104)。
【0047】
ステップS103において、I/O名に対応するフィールド機器10が自装置に接続されていない場合(ステップS103:No)、IOアクセスルーティング部22、32は、ステップS105に進む。以下では、I/O名に対応するフィールド機器10が
図1のフィールド機器10Aであったとする。この場合、IOアクセスルーティング部22、32は、I/O名に対応するフィールド機器10Aが接続されている他のIOノード20AのIOアクセスルーティング部22へ、制御アプリケーション21、31からのデータの入出力指示を転送する(ステップS105)。言い換えれば、IOアクセスルーティング部22、32は、制御アプリケーション21、31からの入出力を、I/O名に対応するフィールド機器10Aが接続されたIOノード20Aに振り向けるように経路を制御する。
【0048】
I/Oへのアクセスは、入出力指示を受けた他のIOノード20Aにおいて、通信部24から受信した指示によりIOアクセスルーティング部22が実行する(
図4参照)。自装置であるIOノード20又はコントローラ30のIOアクセスルーティング部22、32は、I/O名に対応するフィールド機器10Aが接続されている他のIOノード20AのIOアクセスルーティング部22から、データの入出力結果を取得する(ステップS106)。
【0049】
ステップS104又はステップS106が終了した後、IOアクセスルーティング部22、32は、データの入出力結果を制御アプリケーション21、31に送信する(ステップS107)。
【0050】
次に、
図4に基づいて、通信部24から受信した指示によりIOアクセスルーティング部22が実行する処理について説明する。IOノード20の通信部24が、他のIOノード20又はコントローラ30から入出力指示を受信すると、IOノード20のIOアクセスルーティング部22は、通信部24からデータの入出力指示を受ける(ステップS201)。通信部24から入出力指示を受けたIOアクセスルーティング部22は、当該入出力指示が、自装置に接続されたフィールド機器10への入出力指示であることを確認する(ステップS202)。
【0051】
次に、通信部24から入出力指示を受けたIOアクセスルーティング部22は、メモリアドレスを指定してI/Oにアクセスしてデータの入出力を行う(ステップS203)。ステップS203の後、IOアクセスルーティング部22は、通信部24を介して、データの入出力結果を、入出力指示を送信したコントローラ30又はIOノード20のIOアクセスルーティング部22、32に送信する(ステップS204)。
【0052】
例えば、
図3のステップS105に対応して、
図1のIOノード20AがIOノード20からフィールド機器10Aに対する入出力指示を受けた場合、IOノード20Aの通信部24から受信した指示により、IOノード20AのIOアクセスルーティング部22が、メモリアドレスを指定してデータの入出力を行う。IOノード20AのIOアクセスルーティング部22は、IOノード20Aの通信部24を介して、データの入出力結果を、入出力指示を送信したIOノード20のIOアクセスルーティング部22に送信する。
【0053】
以上のようにすることによって、制御アプリケーション21、31は、フィールド機器10の位置情報又は接続されているIOノード20を特定することなく、抽象化されたI/O名によりI/Oにアクセスすることが可能になる。これにより、制御アプリケーションは、搭載されるIOノード20又はコントローラ30と、フィールド機器10との物理的位置関係に依らず、同じ方法でI/Oにアクセスすることが可能になる。
【0054】
(制御アプリケーションの移動)
次に、
図5のフローチャートを参照して、制御アプリケーション21を制御対象のフィールド機器10が接続されたIOノード20からコントローラ30に移動させる場合の処理を説明する。この場合、I/Oへのアクセス方法が、メモリアドレス指定からネットワーク経由に変更される。制御アプリケーション21の移動自体は、一般的なライブマイグレーションの仕組みを利用することができる。移動の対象は制御アプリケーション21のみである。仮想化部25及びIOアクセスルーティング部22は移動しない。
【0055】
まず、IOノード20上の制御アプリケーション21に移動が指示される(ステップS301)。移動の指示には、制御システム1の運転員が監視装置45から指示する場合、又は、制御システム1の何れかの装置の何らかの動作をトリガーとして、監視装置45から自動的に指示が発せられる場合等が含まれる。移動の指示は、例えば、IOノード20の仮想化部25に対して発せられる。以下の各装置の処理は、監視装置45の制御のもとに行われてよい。
【0056】
移動の指示を受けたIOノード20の仮想化部25は、制御アプリケーション21の動作を一時的に停止させ、稼働を再開するために必要なデータを移動先のコントローラ30にコピーする(ステップS302)。
【0057】
IOノード20のIOアクセスルーティング部22は、フィールド機器10にアクセスする制御アプリケーション31の位置を、移動先のコントローラ30に設定し、ネットワーク経由でアクセスできるようにする(ステップS303)。制御アプリケーション31は、コントローラ30で制御アプリケーション21と同じ処理を実行する。ステップS303は、ステップS302と並行して実行されてよい。
【0058】
必要なデータが移動先のコントローラ30にコピーされると、制御アプリケーション31が処理を再開する(ステップS304)。制御アプリケーション31は、I/O名とともに示された入出力指示を、IOアクセスルーティング部32に対して行う。
【0059】
IOアクセスルーティング部32は、制御アプリケーション31の指定するI/O名に基づいてフィールド機器10を制御するためのアクセス先を自動的に判断する(ステップS305)。例えば、I/O名とフィールド機器10の位置情報との対応は、変換テーブルにより予めIOアクセスルーティング部32に記憶されている。このため、ステップS305では、人手により又は専用に作られたプログラムにより、設定変更等を行う必要はない。
【0060】
次に、
図6のフローチャートを参照して、制御アプリケーション31をコントローラ30から制御対象のフィールド機器10が接続されたIOノード20に移動させる場合の処理を説明する。この場合、I/Oへのアクセス方法が、ネットワーク経由からメモリアドレス指定に変更される。以下の説明で、
図5のフローチャートの説明と共通する点については省略する。
【0061】
まず、コントローラ30上の制御アプリケーション31に移動が指示される(ステップS401)。
【0062】
移動の指示を受けたコントローラ30の仮想化部34は、制御アプリケーション31の動作を一時的に停止させ、稼働を再開するために必要なデータを移動先のIOノード20にコピーする(ステップS402)。
【0063】
必要なデータが移動先のIOノード20にコピーされると、IOノード20で制御アプリケーション31と同じ処理を実行する制御アプリケーション21が処理を再開する(ステップS403)。
【0064】
IOノード20の制御アプリケーション21が処理を再開すると、IOノード20のIOアクセスルーティング部22が、制御アプリケーション21の指定するI/O名に基づいて、アクセス先を自装置に接続されたフィールド機器10であると判断する。IOアクセスルーティング部22は、制御アプリケーション21のアクセス先を自装置に接続されたフィールド機器10に設定する(ステップS404)。この後、IOアクセスルーティング部22は、制御アプリケーション21からI/O名とともに受信した入出力指示を、フィールド機器10に接続されたメモリアドレスに対し入出力する。
【0065】
このように、制御システム1では、制御アプリケーション21が、フィールド機器10にアクセスする状態(第1の状態)と、制御アプリケーション31が、フィールド機器10にアクセスする状態(第2の状態)とを切り替えることができる。このようにすることによって、異なるIOノード20及びコントローラ30間で、制御アプリケーション21、31の位置の変更を意識することなく、制御アプリケーション21、31を切り替えることが可能になる。また、制御アプリケーションの切り替えは、IOノード20とコントローラ30との間に限られない。異なるIOノード20どうし、又は、異なるコントローラ30どうしで、稼働する制御アプリケーションを切り替えることができる。
【0066】
(フォーシング)
一般に、フィールド機器を交換する際、IOノードから対象の入出力単位の情報にアクセスすることができなくなるため、IOノード内のI/Oにより取得される情報の値を指定した値に書き換えて固定し、実際のI/Oに対応する入出力単位の情報の値とは切り離す機能が知られている。このような機能は、フォーシング又はI/Oロック等と呼ばれる。制御アプリケーションはフィールド機器の交換中もI/Oへのアクセスをしているかのように動作を継続する。
【0067】
制御システム1では、このフォーシング機能をIOノード20のIOアクセスルーティング部22に持たせることによって、コントローラ30とIOノード20とがネットワーク40でつながっているシステム構成においても、同様の機能を実現することができる。具体的には、フィールド機器10を交換する場合において、IOアクセスルーティング部22は、フィールド機器10の入出力単位に対応する、IOノード20のI/Oのメモリ領域に記憶される入出力データを固定する。
【0068】
以上説明したように、本実施形態によれば、制御アプリケーション21、31は、制御アプリケーション21、31自身の位置及びフィールド機器10へのアクセス方法を気にすることなく、I/O名を指示することによって、I/Oに適切な方法でアクセスすることができる。また、フィールド機器10を制御する制御アプリケーション21、31は、任意のコントローラ30又は他のIOノード20Aに移動、又は、切り替えても、フィールド機器10へのアクセスを継続することができる。さらに、IOアクセスルーティング部22、32が協働することにより、I/Oへのアクセスのために最適な方法が選択される。これによって、制御アプリケーション21、31の移動などにより不要な処理負荷又は通信負荷を生じることもない。
【0069】
[第2実施形態]
第2実施形態に係る制御システム1Aは、第1実施形態の制御システム1の構成に加え、
図7に示すようにネットワーク40に接続されたキャッシュサーバ50を備える。キャッシュサーバ50は、過去にアクセスした入出力データのキャッシュ機能を有する。ネットワーク40に接続されたコントローラ30は、キャッシュサーバ50を経由して、フィールド機器10にアクセスすることができる。
【0070】
図8は、制御システム1Aの要部の構成例を示す。IOノード20とコントローラ30とについては、
図2で示した第1実施形態のIOノード20及びコントローラ30と同じであるから、第1実施形態と同一の符号を付して説明を省略する。
【0071】
キャッシュサーバ50は、キャッシュデータベース51、IOアクセスルーティング部52、通信部53を含む。IOアクセスルーティング部52は、仮想化部54に含まれてよい。キャッシュデータベース51は、記憶部である。IOアクセスルーティング部52は、第3のアクセス経路制御部である。
【0072】
キャッシュデータベース51は、一つ以上のフィールド機器10の入出力単位に対応するI/Oに対する入出力データを記憶することができる。入出力データは、現在及び過去のデータを含んでよい。キャッシュデータベース51は、大容量のデータを記憶可能な、半導体メモリ、磁気記憶装置及び光磁気記憶装置等を含んでよい。
【0073】
IOアクセスルーティング部52は、他の装置のIOアクセスルーティング部22、32と協働して、IOノード20へのアクセスの全部または一部をキャッシュサーバ50に振り向けるように、I/Oに対する入出力の経路を制御する。例えば、IOアクセスルーティング部22は、IOアクセスルーティング部52に、フィールド機器10に対する入出力データを送信する。IOアクセスルーティング部52は、IOアクセスルーティング部22から受信した入出力データをキャッシュデータベース51に記憶させる。IOアクセスルーティング部22、32、52は、協働して、制御アプリケーション31からフィールド機器10への入出力指示を、キャッシュサーバ50に転送する。
【0074】
フィールド機器10又はIOノード20はコントローラ30に比べて処理能力が高くない場合がある。そのため複数の制御アプリケーション21、31からの大量アクセスを捌くことができない場合がある。このような場合、IOノード20のIOアクセスルーティング部22は、キャッシュサーバ50とのみデータをやり取りする。また、他のコントローラ30はキャッシュサーバ50に対して入出力を行うようにする。キャッシュサーバ50には、処理能力が高く大量のアクセスがあっても問題なく捌くことができるハードウェアを採用することができる。
【0075】
通信部53は、通信部24及び通信部33と同一又は類似に構成される。
【0076】
キャッシュサーバ50は、例えば、次のような態様で利用される。
【0077】
1.I/Oへのアクセス負荷に基づくキャッシュサーバの利用
IOノード20のIOアクセスルーティング部22は、接続されたフィールド機器10への入出力負荷を監視する。IOノード20のIOアクセスルーティング部22は、IOノード20の負荷が所定の条件を満たす場合、フィールド機器10への入出力指示を、キャッシュサーバ50に振り向けてよい。特定のIOノード20に複数の制御アプリケーション21、31からの入出力が集中した場合、IOノード20は、処理負荷が高くなりリアルタイムに応答できなくなる可能性がある。このような場合、IOアクセスルーティング部22は、他のIOノード20A及びコントローラ30に対しアクセス方法をキャッシュサーバ50経由に変更するように指示する。以降の処理において、IOノード20は、入出力データをキャッシュサーバ50に転送し、他のIOノード20A及びコントローラ30とは通信をしない。
【0078】
IOノード20はキャッシュサーバ50とのみ通信を行い、IOノード20が処理可能な範囲で対応するため処理負荷が増えずリアルタイムな応答を維持することができる。キャッシュサーバ50には各制御アプリケーション21、31からのアクセスが集中するが、キャッシュされたデータを使用することでIOノード20との間の通信負荷を下げることができる。なお、キャッシュデータサーバにデータを記憶する際、予め定めた優先順位を付与することにより、IOノード20は、優先順位の高いデータから取り込むようにしてもよい。
【0079】
2.I/Oへのアクセス用途に基づくアクセスの分散
IOノード20のIOアクセスルーティング部22は、I/Oへの入出力のアクセス用途に基づいて、入出力を分散させることができる。例えば、I/Oを制御に使う場合、制御アプリケーション21、31は、フィールド機器10の接続されたIOノード20を介して、フィールド機器10に直接入出力を行うように設定されうる。I/Oを監視用途に使用する場合、制御アプリケーション21、31は、キャッシュサーバ50に格納されたデータを参照するように設定されうる。
【0080】
I/Oを制御に使う場合、特に操作のためにI/Oにデータの入力又は書き換え等を行う場合、リアルタイム性が必要である一方、アクセスがあまり集中しない。このようなことから、制御アプリケーション21、31は、IOノード20に対してキャッシュサーバ50を経由せず、直接アクセスすることができるとよい。I/Oの出力データを監視装置45などで監視用に使用する場合、リアルタイム性はあまり必要とされない一方、多くの装置からの同一のIOノード20にアクセスが集中することがある。このようなことから、制御アプリケーション21、31は、キャッシュサーバ50を経由してI/Oの出力データにアクセスさせることができるとよい。
【0081】
(フォーシング)
本実施形態に係る制御システム1Aでは、IOノード20を交換する場合のフォーシング機能を、キャッシュサーバ50に持たせることができる。
図9を参照して、制御システム1Aにおいて、IOノード20を交換する手順を説明する。
【0082】
まず、コントローラ30もしくは監視装置45から、交換対象のIOノード20に接続されたフィールド機器10のI/Oへのアクセス方法を、IOアクセスルーティング部22から、キャッシュサーバ50経由に変更するよう、他のIOアクセスルーティング部に通知する(ステップS501)。IOノード20のIOアクセスルーティング部22は、I/Oから取得される入出力単位の情報の値をキャッシュサーバ50に順次転送する。これにより、制御アプリケーション31からI/Oへのアクセスはキャッシュサーバ50に振り向けられる。制御アプリケーション31は、キャッシュサーバ50のキャッシュデータベース51を介して、IOノード20のフィールド機器10のI/Oにアクセスする。
【0083】
次に、キャッシュサーバ50上で、交換対象のIOノード20に接続されるフィールド機器10の入出力単位の情報の値がロックされる(ステップS502)。つまり、キャッシュサーバ50上の入出力単位の情報の値(入出力データ)はI/Oから取得される実際の入出力単位の情報の値とは切り離され、ロックを解除するまで固定された値を制御アプリケーション31に提供する。
【0084】
制御システム1Aの運転者、または、他の作業者が、交換対象のIOノード20を交換する(ステップS503)。
【0085】
IOノード20の交換が完了すると、運転者又は作業者の入力により、又は、制御システム1Aが交換作業の完了を検出して、キャッシュサーバ50上のI/Oのロックが解除される(ステップS504)。
【0086】
キャッシュサーバ50上のI/Oのロックが解除された後、IOアクセスルーティング部32において、フィールド機器10の入出力単位に対応するI/Oへのアクセス方法が元に戻される(ステップS505)。これにより、コントローラ30の制御アプリケーション31は、ネットワーク40を経由してIOノード20にアクセスすることが可能になる。
【0087】
以上のようにすることによって、第2実施形態に係る制御システム1Aでは、フィールド機器10が接続されたIOノード20の処理負荷を、時間的に、及び/又は、アクセス用途に応じて分散させることができる。また、第2実施形態に係る制御システム1Aでは、全体のシステムを停止することなく、IOノード20を交換することができる。
【0088】
[第3実施形態]
図10には、第3実施形態に係る制御システム1Bが示される。この制御システム1Bでは、第1実施形態に係る制御システム1の構成要素に加え、フィールド機器10B(センサ11B、アクチュエータ12B)が、ネットワーク40に直接接続されている。さらに、制御システム1Bは、第2実施形態と同様にキャッシュサーバ50を備えてよい。フィールド機器10Bは、第2のフィールド機器である。フィールド機器10Bとしては、IoT(Internet of Things)センサ等が想定される。この場合、安価な汎用機器を使うことが考えられるので、フィールド機器10B自体にIOアクセスルーティング機能を持たせることはできないと想定する。
【0089】
このような場合、IOノード20上のIOアクセスルーティング部22又はコントローラ30上のIOアクセスルーティング部32の何れかが、フィールド機器10Bに対し、フィールド機器10Bが通信可能な通信プロトコルでアクセスし入出力可能なように構成されてよい。フィールド機器10Bが通信可能な通信プロトコルは、例えば、OPC UA、PROFINET、Modbus/TCP、MQTT、及び、HTTP等を含む。さらに、IOアクセスルーティング部22、32は、制御アプリケーション21、31からフィールド機器10Bへ入出力が可能なように、入出力の経路を制御可能に構成される。例えば、フィールド機器10に入出力可能でないコントローラ30のIOアクセスルーティング部32は、制御アプリケーション31からの入出力指示を、フィールド機器10Bに入出力可能なIOノード20のIOアクセスルーティング部22に転送してよい。このようにすることによって、ネットワーク40に直接接続されるIoT機器等のフィールド機器10Bを、本開示の制御システム1Bに取り込んで制御することが可能になる。
【0090】
制御システム1Bが、キャッシュサーバ50を含む場合、キャッシュサーバ50のIOアクセスルーティング部55が、フィールド機器10Bにアクセスしてもよい。IOノード20又はコントローラ30は、キャッシュサーバ50経由でフィールド機器10Bに入出力を行う。この場合、フィールド機器10Bとキャッシュサーバ50間のみ上記の通信プロトコルで通信すればよいため、プロトコル変換等の処理は、各IOノード20及びコントローラ30で行われる必要がない。
【0091】
[第4実施形態]
図11に示すように、第4実施形態に係る制御システム1Cにおいて、各装置のIOアクセスルーティング部22、32、52は、アプリケーションフレームワーク26、35、55上に構築される。制御システム1Cは、第2実施形態に係る制御システム1Aにおいて、仮想化部25、34、54にIOアクセスルーティング部22、32、52が含まれていた構成とは異なる。
【0092】
アプリケーションフレームワーク26、35、55は、アプリケーションの標準構造を実装するのに使われるライブラリの集まりである。制御アプリケーション21、31及びキャッシュデータベース51は、アプリケーションフレームワーク26、35、55が提供するAPIを使用して、抽象化されたI/Oに対して入出力をすることができる。アプリケーションフレームワーク26、35、55は、実際のフィールド機器10の位置情報に応じてアクセス方法を変更する。制御アプリケーション21、31はフィールド機器10へのアクセス方法を意識する必要がない。
【0093】
仮想化部25、34、54に代えて、アプリケーションフレームワーク26、35、55を用いることによって、仮想化部を使用した場合と同様の効果が得られる。また、アプリケーションフレームワーク26、35、55はライブラリであるから、システムの修正、変更が容易である。
【0094】
(複数の演算結果に基づく出力値の決定)
上記各実施形態において、IOアクセスルーティング部22、32、52は、互いに連携して、制御アプリケーション21、31からのI/Oへの入出力指示に対して、入出力の経路を制御し、適切な装置に振り向ける動作を行った。IOアクセスルーティング部22、32、52には、複数の制御アプリケーション21、31からの演算結果に基づいて、フィールド機器10に対する制御内容を決定する機能を持たせることもできる。
【0095】
例えば、上記各実施形態において、
図12に示すようにIOノード20のIOアクセスルーティング部22に、判定部27を設けることができる。例えば、センサ11の出力に基づいて、制御アプリケーション21及び31の少なくとも何れかを含む複数の制御アプリケーションが、同じ制御演算を行い算出した入力値でのアクチュエータ12への入力を指示するものとする。判定部27は、複数の制御アプリケーションが算出した複数の入力値を比較して、又は、複数の入力値を統計処理して、最終的な入力値を決定する。例えば、判定部27は、複数の出力値の平均値を入力値として決定してよい。あるいは、判定部27は、3以上の制御アプリケーションがある場合、複数の入力値から最も多い入力値を採用してよい。
【0096】
このようにすることによって、制御システム1、1A,1Bによる制御の信頼性を高めることができる。
【0097】
なお、判定部27は、IOアクセスルーティング部22に含まれるのではなく、IOアクセスルーティング部22とフィールド機器10との間に位置してもよい。
【0098】
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は修正を行うことが容易である。従って、本発明の具体的構成は本開示の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変形又は修正を含むことに留意されたい。
【符号の説明】
【0099】
1、1A、1B、1C 制御システム
10、10A フィールド機器(第1のフィールド機器)
10B フィールド機器(第2のフィールド機器)
11、11A、11B センサ
12、12A、12B アクチュエータ
20、20A IOノード(第1の制御装置)
21 制御アプリケーション(第1の制御アプリケーション)
22 IOアクセスルーティング部(第1のアクセス経路制御部)
23 IOアクセス部
24 通信部
25 仮想化部
26 アプリケーションフレームワーク
27 判定部
30 コントローラ(第2の制御装置)
31 制御アプリケーション(第2の制御アプリケーション)
32 IOアクセスルーティング部(第2のアクセス経路制御部)
33 通信部
34 仮想化部
35 アプリケーションフレームワーク
40 ネットワーク
45 監視装置
50 キャッシュサーバ
51 キャッシュデータベース(記憶部)
52 IOアクセスルーティング部(第3のアクセス経路制御部)
53 通信部
54 仮想化部
55 アプリケーションフレームワーク