(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-07-10
(45)【発行日】2023-07-19
(54)【発明の名称】制御システム、制御システムの制御方法、及び、コントローラ
(51)【国際特許分類】
G05B 19/05 20060101AFI20230711BHJP
【FI】
G05B19/05 S
(21)【出願番号】P 2022210555
(22)【出願日】2022-12-27
【審査請求日】2023-01-05
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006507
【氏名又は名称】横河電機株式会社
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【氏名又は名称】吉澤 雄郎
(74)【代理人】
【識別番号】230128026
【氏名又は名称】駒木 寛隆
(72)【発明者】
【氏名】吉田 善貴
(72)【発明者】
【氏名】戸井永 剛
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2021-157392(JP,A)
【文献】特開2011-186903(JP,A)
【文献】特開2013-167922(JP,A)
【文献】特開2013-152557(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
測定データを取得するフィールド機器が接続されたIOノードと、
前記フィールド機器が取得した前記測定データに基づき演算を行う複数のコントローラと、
キャッシュサーバと、
を備え、
前記複数のコントローラの各々は、
予め一定の周期で定められた一定期間である制御タイミングごとに、
前記キャッシュサーバが前記測定データを保持しているか否かを前記制御タイミングごとに示す情報を含む管理テーブルに基づいて、前記フィールド機器が取得した前記測定データを
前記キャッシュサーバが保持しているか否かを判定し、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得し、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得し、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う、
制御システム。
【請求項2】
前記複数のコントローラの各々は、前記制御タイミングごとに、前記キャッシュサーバが前記測定データを保持しているか否かを前記キャッシュサーバに問い合わせ、当該問合せに対
し前記キャッシュサーバ
により前記管理テーブルの参照に基づきなされた回答に基づき、前記キャッシュサーバが前記測定データを保持しているか否かを判定する、請求項1に記載の制御システム。
【請求項3】
前記キャッシュサーバは、前記制御タイミングごとに、当該キャッシュサーバが前記測定データを保持しているか否かを示す情報を含む第1の管理テーブルを保持し、
前記複数のコントローラの各々は、
前記キャッシュサーバが保持する前記第1の管理テーブルに同期して管理された第2の管理テーブルを保持し、
前記制御タイミングごとに、前記第2の管理テーブルを
前記管理テーブルとして参照して、前記キャッシュサーバが前記測定データを保持しているか否かを判定する、
請求項1に記載の制御システム。
【請求項4】
前記複数のコントローラの各々は、前記制御タイミングごとに、前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、前記演算を行った結果である演算結果を前記IOノードへ送信し、
前記IOノードは、
前記制御タイミングごとに、前記複数のコントローラの各々から受信した前記演算結果を比較して、前記複数のコントローラの動作が正常であるか否かを判定し、
前記複数のコントローラの動作が正常であるか否かの判定結果を出力する、
請求項1に記載の制御システム。
【請求項5】
前記複数のコントローラの各々は、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得した場合、当該取得した測定データを前記キャッシュサーバへ送信し、
前記キャッシュサーバは、前記複数のコントローラに含まれる前記コントローラから前記測定データを受信した場合、当該受信した測定データを記憶部に保持させる、
請求項1に記載の制御システム。
【請求項6】
前記キャッシュサーバは、前記制御タイミングごとに、前記測定データを受信した前記コントローラの識別情報を記録する、請求項5に記載の制御システム。
【請求項7】
前記キャッシュサーバは、前記制御タイミングごとに、前記複数のコントローラに含まれるいずれかの前記コントローラから、前記フィールド機器が取得した前記測定データを保持しているか否かの問合せを初めて受けてから当該コントローラから前記測定データを受信するまで、他の前記コントローラからの前記問合せに対する回答を保留する、請求項5に記載の制御システム。
【請求項8】
測定データを取得するフィールド機器が接続されたIOノードと、
前記フィールド機器が取得した前記測定データに基づき演算を行う複数のコントローラと、
キャッシュサーバと、
を備える制御システムの制御方法であって、
前記複数のコントローラの各々が、
予め一定の周期で定められた一定期間である制御タイミングごとに、
前記キャッシュサーバが前記測定データを保持しているか否かを前記制御タイミングごとに示す情報を含む管理テーブルに基づいて、前記フィールド機器が取得した前記測定データを
前記キャッシュサーバが保持しているか否かを判定する工程と、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得する工程と、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得する工程と、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う工程と、
を含む、制御システムの制御方法。
【請求項9】
測定データを取得するフィールド機器が接続されたIOノード、及び、キャッシュサーバと通信可能な、前記フィールド機器が取得した前記測定データに基づき演算を行うコントローラであって、
予め一定の周期で定められた一定期間である制御タイミングごとに、
前記キャッシュサーバが前記測定データを保持しているか否かを前記制御タイミングごとに示す情報を含む管理テーブルに基づいて、前記フィールド機器が取得した前記測定データを
前記キャッシュサーバが保持しているか否かを判定し、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得し、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得し、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う、
制御部を備える、コントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、制御システムの制御方法、及び、コントローラに関する。
【背景技術】
【0002】
特許文献1には、フィールド機器が接続された装置であるIOノードを経由して、コントローラからフィールド機器の動作を制御する制御システムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような制御システムにおいて、複数のコントローラを設け、各コントローラがフィールド機器の入出力について同一の処理を行い、各コントローラの処理結果を比較することにより、コントローラの動作の信頼性を向上させることが考えられる。このようなコントローラの冗長化を行う場合において、従来の構成においては、複数のコントローラが高い精度で時間的に同期して動作する必要があり、処理及び構成が複雑になっていた。
【0005】
本開示は、フィールド機器の制御システムにおいて、より簡易な構成でコントローラの冗長化を実現可能とすることを目的とする。
【課題を解決するための手段】
【0006】
幾つかの実施形態に係る制御システムは、
(1)測定データを取得するフィールド機器が接続されたIOノードと、
前記フィールド機器が取得した前記測定データに基づき演算を行う複数のコントローラと、
キャッシュサーバと、
を備え、
前記複数のコントローラの各々は、
予め一定の周期で定められた一定期間である制御タイミングごとに、前記フィールド機器が取得した前記測定データを保持しているか否かを判定し、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得し、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得し、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う。
【0007】
このように、各コントローラは、非同期に動作する場合であっても、IOノード又はキャッシュサーバから制御タイミングにおける同一の測定データを取得することができる。したがって、全てのコントローラにおいて制御タイミングにおける同一の測定データに基づき演算を行い、その結果を比較することで、コントローラの異常を検出することが可能である。
【0008】
(2)(1)の制御システムにおいて、
前記複数のコントローラの各々は、前記制御タイミングごとに、前記キャッシュサーバが前記測定データを保持しているか否かを前記キャッシュサーバに問い合わせ、当該問合せに対する前記キャッシュサーバの回答に基づき、前記キャッシュサーバが前記測定データを保持しているか否かを判定する。
【0009】
このように、コントローラは、キャッシュサーバが測定データを保持しているか否かをキャッシュサーバに問い合わせて判定するため、キャッシュサーバが測定データを保持しているか否かを正確に判定することができる。
【0010】
(3)(1)の制御システムにおいて、
前記キャッシュサーバは、前記制御タイミングごとに、当該キャッシュサーバが前記測定データを保持しているか否かを示す情報を含む第1の管理テーブルを保持し、
前記複数のコントローラの各々は、
前記キャッシュサーバが保持する前記第1の管理テーブルに同期して管理された第2の管理テーブルを保持し、
前記制御タイミングごとに、前記第2の管理テーブルを参照して、前記キャッシュサーバが前記測定データを保持しているか否かを判定する。
【0011】
このように、コントローラは、第1の管理テーブルに同期して管理された第2の管理テーブルを保持し、第2の管理テーブルを参照して、キャッシュサーバが測定データを保持しているか否かを判定するため、測定データに基づき演算を行う制御タイミングにキャッシュサーバに問い合わせなくても、キャッシュサーバが測定データを保持しているか否かを判定することができる。
【0012】
(4)(1)から(3)のいずれかの制御システムにおいて、
前記複数のコントローラの各々は、前記制御タイミングごとに、前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、前記演算を行った結果である演算結果を前記IOノードへ送信し、
前記IOノードは、
前記制御タイミングごとに、前記複数のコントローラの各々から受信した前記演算結果を比較して、前記複数のコントローラの動作が正常であるか否かを判定し、
前記複数のコントローラの動作が正常であるか否かの判定結果を出力する。
【0013】
このように、制御システムは、複数のコントローラの演算結果を比較することで、コントローラの異常を検出することができる。また、制御タイミング内に受信した演算結果に基づきコントローラの動作が正常であるか否かを判定するため、制御タイミング内に演算結果を送信できなかったコントローラの演算結果については、動作が異常であるか否かの判定に使用しないようにすることができる。
【0014】
(5)(1)から(4)のいずれかの制御システムにおいて、
前記複数のコントローラの各々は、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得した場合、当該取得した測定データを前記キャッシュサーバへ送信し、
前記キャッシュサーバは、前記複数のコントローラに含まれる前記コントローラから前記測定データを受信した場合、当該受信した測定データを記憶部に保持させる。
【0015】
このように、制御システムは、最初にキャッシュサーバにアクセスしたコントローラの測定データをキャッシュして保持させる。したがって、他のコントローラは、キャッシュサーバにアクセスすることで、この測定データを取得して、制御タイミングにおける同一の測定データに基づき演算を行うことができる。
【0016】
(6)(5)の制御システムにおいて、
前記キャッシュサーバは、前記制御タイミングごとに、前記測定データを受信した前記コントローラの識別情報を記録する。
【0017】
このように、キャッシュサーバが、測定データのキャッシュを送信したコントローラの識別情報を記録することで、記録を参照してキャッシュデータを送信したコントローラを特定することが可能になる。
【0018】
(7)(5)又は(6)の制御システムにおいて、
前記キャッシュサーバは、前記制御タイミングごとに、前記複数のコントローラに含まれるいずれかの前記コントローラから、前記フィールド機器が取得した前記測定データを保持しているか否かの問合せを初めて受けてから当該コントローラから前記測定データを受信するまで、他の前記コントローラからの前記問合せに対する回答を保留する。
【0019】
このように、制御システムは、ある時間的区間において、初めてコントローラからの問い合わせがあった場合に、そのコントローラから測定データを受信するまで、他のコントローラからの問合せを保留する。したがって、あるコントローラがIOノードから測定データを取得している間に他のコントローラから問い合わせがあった場合に、他のコントローラもIOノードにアクセスすることなく、全てのコントローラが制御タイミングにおける同一の測定データを取得することができる。
【0020】
幾つかの実施形態に係る制御システムの制御方法は、
(8)測定データを取得するフィールド機器が接続されたIOノードと、
前記フィールド機器が取得した前記測定データに基づき演算を行う複数のコントローラと、
キャッシュサーバと、
を備える制御システムの制御方法であって、
前記複数のコントローラの各々が、
予め一定の周期で定められた一定期間である制御タイミングごとに、前記フィールド機器が取得した前記測定データを保持しているか否かを判定する工程と、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得する工程と、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得する工程と、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う工程と、
を含む。
【0021】
このように、各コントローラは、非同期に動作する場合であっても、IOノード又はキャッシュサーバから制御タイミングにおける同一の測定データを取得することができる。したがって、全てのコントローラにおいて制御タイミングにおける同一の測定データに基づき演算を行い、その結果を比較することで、コントローラの異常を検出することが可能である。
【0022】
幾つかの実施形態に係るコントローラは、
(9)測定データを取得するフィールド機器が接続されたIOノード、及び、キャッシュサーバと通信可能な、前記フィールド機器が取得した前記測定データに基づき演算を行うコントローラであって、
予め一定の周期で定められた一定期間である制御タイミングごとに、前記フィールド機器が取得した前記測定データを保持しているか否かを判定し、
前記キャッシュサーバが前記測定データを保持していない場合、前記IOノードから、当該IOノードに接続された前記フィールド機器が取得した前記測定データを取得し、
前記キャッシュサーバが前記測定データを保持している場合、当該キャッシュサーバから、前記フィールド機器が取得した前記測定データを取得し、
前記IOノード又は前記キャッシュサーバから受信した前記測定データに基づき、予め定められた演算を行う、
制御部を備える。
【0023】
このように、各コントローラは、非同期に動作する場合であっても、IOノード又はキャッシュサーバから制御タイミングにおける同一の測定データを取得することができる。したがって、全てのコントローラにおいて制御タイミングにおける同一の測定データに基づき演算を行い、その結果を比較することで、コントローラの異常を検出することが可能である。
【発明の効果】
【0024】
本開示の一実施形態によれば、フィールド機器の制御システムにおいて、より簡易な構成でコントローラの冗長化を実現することができる。
【図面の簡単な説明】
【0025】
【
図1】比較例に係る制御システムの構成を示す図である。
【
図2】一実施形態に係る制御システムの概略構成例を示す図である。
【
図3】
図2の制御システムの機能構成例を示すブロック図である。
【
図6】
図2のIOノードのハードウェア構成例を示すブロック図である。
【
図7】
図2のコントローラのハードウェア構成例を示すブロック図である。
【
図8】
図2のキャッシュサーバのハードウェア構成例を示すブロック図である。
【
図9】一実施形態に係る制御システムの動作例を示すシーケンスチャートである。
【
図10】一実施形態に係る制御システムの動作例を示すシーケンスチャートである。
【
図11】一実施形態に係る制御システムの概略構成例を示す図である。
【
図12】
図11のネットワークスイッチのハードウェア構成例を示すブロック図である。
【
図13】一実施形態に係る制御システムの動作例を示すシーケンスチャートである。
【
図14】一実施形態に係る制御システムの動作例を示すシーケンスチャートである。
【発明を実施するための形態】
【0026】
<比較例>
図1は、比較例に係る制御システム9の構成を示す図である。制御システム9は、フィールド機器91(91a,91b)、IO(Input/Output)ノード92、及び、コントローラ93(93a,93b)を備える。IOノード92及びコントローラ93(93a,93b)は、ネットワーク95を介して互いに通信可能に接続される。
【0027】
フィールド機器91(91a,91b)は、プラントの制御のための測定データの取得、及び、プラントの操作の少なくとも一方を行う装置である。IOノード92は、フィールド機器91(91a,91b)が接続され、コントローラ93(93a,93b)とのインタフェースとして機能する装置である。コントローラ93(93a,93b)は、フィールド機器91(91a,91b)の測定データに対して演算を行い、演算結果に基づきフィールド機器91(91a,91b)を制御する装置である。
【0028】
制御システム9において、IOノード92は、一定周期(例えば、1秒ごと)でフィールド機器91(91a,91b)から測定データを収集する。コントローラ93a,93bの各々は、一定周期(例えば、1秒ごと)でIOノード92からフィールド機器91(91a,91b)の測定データを取得する。コントローラ93(93a,93b)は、取得した測定データに基づき演算を行い、IOノード92へ演算結果を送信する。IOノードは、コントローラ93(93a,93b)から演算結果を受信すると、受信した演算結果をフィールド機器へ出力する。
【0029】
図1の例では、コントローラ93(93a,93b)の演算の信頼性向上のため、制御システム9は、複数のコントローラ93a,93bを備え、コントローラ93a,93bの演算結果を比較する。具体的には、コントローラ93a,93bの各々は、フィールド機器91(91a,91b)の同一の測定データに対して同一の演算を行い、演算結果をIOノード92へ出力する。IOノード92は、コントローラ93a,93bから受信した演算結果を比較する。IOノード92は、複数のコントローラ93a,93bから受信した演算結果が一致した場合は正常と判定し、一致しなかった場合はコントローラ93a,93bの故障等により正しく演算できなかったと判定する。このようなコントローラ93(93a,93b)の冗長化により演算の信頼性を向上させるためには、コントローラ93(93a,93b)がIOノード92から同一のタイミングの測定データを取得し、同一の演算を行うことが必要である。
【0030】
一般に、IOノード92がフィールド機器91(91a,91b)から測定データを収集するタイミングと、コントローラ93(93a,93b)がIOノード92から測定データを収集するタイミングとは同期していない。そのため、コントローラ93aとコントローラ93bとでIOノード92から測定データを取得するタイミングがずれると、同一の測定データを取得することができない場合がある。しかし、コントローラ93a,93bの演算動作タイミングを一致させるには、高精度な時刻同期が必要となり、処理及び構成が複雑になる。IOノード92と、コントローラ93a,93bのデータ取得タイミングを同期させるためにも、コントローラ93(93a,93b)において、高精度な時刻同期が必要となる。
【0031】
このように、比較例に係る制御システム9においては、複数のコントローラ93(93a,93b)が高い精度で時間的に同期して動作する必要があり、処理及び構成が複雑になる。本開示は、高精度な時刻同期を伴わずに、複数のコントローラが同一のタイミングの測定データを取得可能にすることを目的とする。
【0032】
<実施形態1>
以下、本開示の一実施形態について、図面を参照して説明する。各図面中、同一の構成又は機能を有する部分には、同一の符号を付している。本実施形態の説明において、同一の部分については、重複する説明を適宜省略又は簡略化する場合がある。
【0033】
(制御システム)
図2は、一実施形態に係る制御システム1aの概略構成例を示す図である。制御システム1aは、フィールド機器10(10a,10b)、IOノード20、コントローラ30(30a,30b)、キャッシュサーバ40、及び、ネットワーク50を備える。
【0034】
フィールド機器10(10a,10b)は、プラントの制御のための測定データの取得、及び、プラントの操作の少なくとも一方を行う装置である。フィールド機器10(10a,10b)は、例えば、温度センサ又は流量計等のセンサ10a、及び、バルブ機器、ファン又はモータ等のアクチュエータ10bでもよい。以下、フィールド機器10a,10bをまとめて「フィールド機器10」と称する場合がある。フィールド機器10は、測定データをIOノード20へ出力するとともに、IOノード20から受信した制御信号に基づき動作を制御する。
図2の例において、制御システム1aは2つのフィールド機器10a,10bを備えるが、フィールド機器10の個数は任意である。
【0035】
IOノード20は、フィールド機器10が接続され、フィールド機器10とコントローラ30(30a,30b)とのインタフェースとして機能する装置である。IOノード20はネットワーク50に接続され、ネットワーク50を介して、コントローラ30(30a,30b)と通信可能である。
図2の例において、制御システム1aは1つのIOノード20を備えるが、IOノード20の個数は任意である。また、各IOノード20に接続されるフィールド機器10の個数は任意である。
【0036】
コントローラ30(30a,30b)は、フィールド機器10の測定データに対して演算を行い、演算結果に基づきフィールド機器10を制御する装置である。以下、コントローラ30a,30bをまとめて「コントローラ30」と称する場合がある。コントローラ30は、ネットワーク50を経由して、IOノード20及びキャッシュサーバ40と通信可能に構成される。コントローラ30は、IOノード20を経由して、フィールド機器10にアクセスすることができる。制御システム1aは、2つのコントローラ30a,30bを備えているが、コントローラ30の個数は任意の複数個である。
【0037】
キャッシュサーバ40は、コントローラ30a,30bのうち先にこのキャッシュサーバ40にアクセスした方がIOノード20から取得した測定データをキャッシュとして保持する装置である。制御システム1aは、1つのキャッシュサーバ40を備えているが、キャッシュサーバ40の個数は任意である。
【0038】
ネットワーク50は、プラント内のIOノード20、コントローラ30、及び、キャッシュサーバ40等の情報機器を接続可能な専用の通信ネットワークである。ネットワーク50は、有線又は無線の構内通信網(LAN:Local Area Network)を含んでよい。有線の構内通信網は、例えば、イーサネットを含む。無線の構内通信網は、例えばWi-Fi(登録商標)及びWiMAX(登録商標)等の無線通信規格に準拠した無線ネットワークを含む。さらにOPC UA又はPROFINETのような標準化されたプロトコルを使用する通信ネットワークを用いてもよい。さらには、ネットワークは、ネットワーク50は、例えばインターネット、イントラネット、及び移動体通信網等を含んでもよい。
【0039】
制御システム1aにおいて、IOノード20は、一定周期(例えば、1秒ごと)でフィールド機器10から測定データを収集する。IOノード20は、収集した測定データを記憶部202(
図6参照)に記憶させる。コントローラ30a,30bの各々は、一定周期(例えば、1秒ごと)でキャッシュサーバ40にアクセスし、フィールド機器91(91a,91b)の測定データを取得するための処理を行う。ここで、IOノード20及びコントローラ30a,30bの動作は完全に時間的に同期しているわけではなく、それぞれ別個に一定周期で動作している。
【0040】
このような構成において、複数のコントローラ30(30a,30b)の内、最初にキャッシュサーバ40にアクセスした方のみIOノード20にアクセスして測定データを取得する。例えば、コントローラ30aが最初にキャッシュサーバ40にアクセスした場合、コントローラ30aは、IOノード20にアクセスし、IOノード20からフィールド機器10の測定データを取得する。コントローラ30aは、取得した測定データをキャッシュサーバ40に送信し、キャッシュサーバ40に測定データのキャッシュを保持させる。一方、遅れてキャッシュサーバ40にアクセスしたコントローラ30bは、キャッシュサーバ40から、測定データのキャッシュを取得する。このように、制御システム1aにおいては、最初にキャッシュサーバ40にアクセスしたコントローラ30(例えば、コントローラ30a)のみがIOノード20からフィールド機器10の測定データを取得する。それ以外のコントローラ30(例えば、コントローラ30b)は、キャッシュサーバ40から測定データのキャッシュを取得する。したがって、制御システム1aは、各コントローラの動作が高い精度で同期して動作していなくても、複数のコントローラ30(30a,30b)が同一の測定データを取得することを保証することが可能である。
【0041】
コントローラ30(30a,30b)の各々は、取得した測定データに基づき演算を行い、IOノード20へ演算結果を送信する。IOノード20は、各コントローラ30(30a,30b)から演算結果を受信すると、受信した演算結果を比較して、各コントローラ30(30a,30b)の動作が正常であるか否かを判定する。IOノード20は、判定結果をログ情報として記憶部302(
図5参照)又は表示装置(ディスプレイ)等へ出力する。IOノード20は、判定結果をコントローラ30又はキャッシュサーバ40等の他の装置へ送信してもよい。
【0042】
図3は、
図2の制御システム1aの機能構成例を示すブロック図である。IOノード20は、制御アプリケーション部21、アクセス経路制御部22、及び、通信制御部23を備える。
【0043】
制御アプリケーション部21は、IOノード20に接続されたフィールド機器10を制御する。制御アプリケーション部21は、オペレーティングシステム上で動作してよい。制御アプリケーション部21は、プロセス制御を行う上で必要なフィールド機器10の制御を行う。例えば、制御アプリケーション部21は、フィールド機器10からの測定データの収集、及び、フィールド機器10に対する制御データの送信等を行う。
【0044】
アクセス経路制御部22は、制御アプリケーション部21に対して抽象化されたIOアクセス方法を提供する。アクセス経路制御部22は、アクセス経路制御部22が搭載されたIOノード20とフィールド機器10との物理的な関係に合わせてアクセス方法を適応的に変更する。ハードウェアを抽象化するため、アクセス経路制御部22は、IOノード20内の仮想化部24に含まれてよい。仮想化部24は、IOノード20のハードウェア上でハードウェアの代わりとして仮想的に動作する。仮想化部24は、制御アプリケーション部21を変更することなくIOノード20のハードウェアの交換を可能にするために設けられる。しかし、アクセス経路制御部22の機能を提供するために、仮想化部24は必須ではない。仮想化部24が無くとも、アクセス経路制御部22を実装することは可能である。
【0045】
通信制御部23は、IOノード20に接続されたフィールド機器10、及び、ネットワーク50に接続されたコントローラ30との間で通信を行う。通信制御部23は、フィールド機器10との接続形態、及び、ネットワーク50の種類等に応じて必要な通信処理を行う。
【0046】
コントローラ30(30a,30b)は、制御アプリケーション部31(31a,31b)、アクセス経路制御部32(32a,32b)、及び、通信制御部33(33a,33b)を備える。コントローラ30(30a,30b)は、IOノード20と同様に、仮想化部34(34a,34b)を備えてもよい。コントローラ30aの制御アプリケーション部31a、アクセス経路制御部32a、通信制御部33a、及び、仮想化部34aは、コントローラ30bの制御アプリケーション部31b、アクセス経路制御部32b、通信制御部33b、及び、仮想化部34bと同一である。そこで、以下、制御アプリケーション部31a,31b、アクセス経路制御部32a,32b、通信制御部33a,33b、仮想化部34a,34bを、まとめて「制御アプリケーション部31」、「アクセス経路制御部32」、「通信制御部33」、「仮想化部34」と称する場合がある。コントローラ30の制御アプリケーション部31、アクセス経路制御部32、通信制御部33、仮想化部34は、IOノード20の制御アプリケーション部21、アクセス経路制御部22、通信制御部23、仮想化部24と同一又は類似の機能を有するので、詳細な説明を省略する。
【0047】
キャッシュサーバ40は、管理テーブル41、アクセス経路制御部42、通信制御部43、及びキャッシュデータベース45を備える。
【0048】
管理テーブル41は、コントローラ30のキャッシュサーバ40へのアクセスの状況を管理するためのテーブルである。
図4及び
図5は、
図3の管理テーブルの一例を示す図である。キャッシュサーバ40は、一定周期(例えば、1秒ごと)で、最初にキャッシュサーバ40にアクセスしたコントローラ30の識別情報を保持する。初期状態において、管理テーブル41は、空白、「0」、又は、「-」等の値(
図4及び
図5の例では「-」)を保持する。
図4及び
図5の例において、制御タイミングは、コントローラ30が周期的に測定データを取得するための、予め一定の周期で定められた一定期間を示す。制御タイミングT001は、例えば、時刻0時0分0秒~0時0分1秒の期間に対応する。制御タイミングT002は、例えば、時刻0時0分1秒~0時0分2秒の期間に対応する。制御タイミングT003は、例えば、時刻0時0分2秒~0時0分3秒の期間に対応する。これらの例において、制御タイミングT001~T003は、1秒の周期で定められた長さが1秒の期間に相当する。なお、制御タイミングの周期と長さとは異なってもよく、例えば、制御タイミングは、10秒周期で定められた長さ1秒の期間としてもよい。制御タイミングは、キャッシュサーバ40の計時部により測定された時刻に基づき決定されるが、NTP(Network Time Protocol)サーバ等の時刻サーバ又はコントローラ30等の他の装置により測定された時刻に基づき決定されてもよい。制御タイミングを時刻サーバにより測定された時刻に基づき決定する場合、正確な時刻を反映した制御タイミングを取得することができ、制御タイミングの信頼性を保つことができる。制御タイミングを各コントローラ30により測定された時刻に基づき決定する場合、各コントローラ30は、時刻サーバ等の他の装置にアクセスすることなく制御タイミングを決定することができ、可用性を保つことができる。
【0049】
図2の例においてIOノード20の個数は1つだが、
図4の管理テーブル41は、3つのIOノード20(IO-1,IO-2,IO-3)を備えた制御システム1aにおいて、最初にキャッシュサーバ40にアクセスしたコントローラ30の識別情報を保持している。
図5の管理テーブル41は、2つのIOノード20(IO-5,IO-6)を備えた制御システム1aにおいて、最初にキャッシュサーバ40にアクセスしたコントローラ30の識別情報を保持している。
【0050】
例えば、
図4において、制御タイミング「T001」では、識別情報「IO-1」「IO-2」のIOノード20については、識別情報「CNT-1」のコントローラ30(例えば、コントローラ30a)が最初にキャッシュサーバ40にアクセスしている。「IO-3」のIOノード20については、識別情報「CNT-2」のコントローラ30(例えば、コントローラ30b)が最初にキャッシュサーバ40にアクセスしている。制御タイミング「T002」では、識別情報「IO-1」「IO-2」「IO-3」の各IOノード20について、識別情報「CNT-1」のコントローラ30(例えば、コントローラ30a)が最初にキャッシュサーバ40にアクセスしている。制御タイミング「T003」では、識別情報「IO-1」「IO-2」のIOノード20について、識別情報「CNT-2」のコントローラ30(例えば、コントローラ30b)が最初にキャッシュサーバ40にアクセスしている。識別情報「IO-3」のIOノード20については、まだいずれのコントローラ30もキャッシュサーバ40にアクセスしていない。
図5の例では、いずれの制御タイミングにおいても、いずれのIOノード20についても、まだコントローラ30はキャッシュサーバ40にアクセスしていない。
【0051】
キャッシュサーバ40は、複数のコントローラ30の複数のIOノード20に対するアクセスを管理する場合、コントローラ30及びIOノード20を複数の制御グループに分類し、制御グループごとに管理テーブル41を保持してもよい。例えば、冗長化の対象とする複数のコントローラ30に対して、「C001」等の制御グループを設定してもよい。例えば、キャッシュサーバ40は、どのコントローラ30がどのIOノード20に接続されたフィールド機器10の測定データの演算を行うかに応じて、コントローラ30及びIOノード20を複数の制御グループに分類してもよい。例えば、
図4の管理テーブル41は、識別情報「CNT-1」「CNT-2」のコントローラ30が識別情報「IO-1」「IO-2」「IO-3」のIOノード20の制御を行う制御グループ1のアクセス管理を示してもよい。例えば、
図5の管理テーブル41は、識別情報「CNT-X」「CNT-Y」のコントローラ30が識別情報「IO-5」「IO-6」のIOノード20の制御を行う制御グループ2のアクセス管理を示してもよい。同一の制御グループに含まれるコントローラ30は、同一の制御演算を行う。
【0052】
図3の説明に戻る。キャッシュサーバ40のアクセス経路制御部42、通信制御部43、及び、仮想化部44は、IOノード20のアクセス経路制御部22、通信制御部23、及び、仮想化部24と同一又は類似の機能を有するので、詳細な説明を省略する。
【0053】
キャッシュデータベース45は、各制御タイミングにおいて、もっとも早くキャッシュサーバ40にアクセスしたコントローラ30がIOノード20から取得した測定データをキャッシュとして記憶する。
図1のように、IOノード20に複数のフィールド機器10a,10bが接続されている場合、キャッシュデータベース45は、各フィールド機器10の測定データを記憶してもよい。前述のように、制御システム1aが複数のIOノード20を含む場合、キャッシュデータベース45は、IOノード20毎に、各IOノード20から取得した測定データを記憶してもよい。前述のように、制御システム1aが複数の制御グループに分類された数のコントローラ30の複数のIOノード20に対するアクセスを管理する場合、キャッシュデータベース45は、制御グループ毎に、各IOノード20から取得した測定データを記憶してもよい。
【0054】
(IOノード)
図6は、
図2のIOノード20のハードウェア構成例を示すブロック図である。IOノード20は、1つ又は互いに通信可能な複数のコンピュータ装置である。IOノード20は、例えば、PC(Personal Computer)又はWS(Workstation)等の汎用のコンピュータにより実現されるが、FPGA(Field Programmable Gate Array)又はプラント等の制御用に設計された専用コンピュータ等により実現されてもよい。
図6に示すように、IOノード20は、制御部201、記憶部202、及び、通信部203を備える。
【0055】
制御部201は、1つ以上のプロセッサを含む。一実施形態において「プロセッサ」は、汎用のプロセッサ、又は特定の処理に特化した専用のプロセッサであるが、これらに限定されない。制御部201は、IOノード20を構成する各構成部と通信可能に接続され、IOノード20全体の動作を制御する。
【0056】
記憶部202は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、ROM(Read-Only Memory)、及びRAM(Random Access Memory)等の任意の記憶モジュールを含む。記憶部202は、例えば、主記憶装置、補助記憶装置、又はキャッシュメモリとして機能してもよい。記憶部202は、IOノード20の動作に用いられる任意の情報を記憶する。例えば、記憶部202は、システムプログラム(オペレーティングシステム)、アプリケーションプログラム、及び通信部203によって受信された各種情報等を記憶してもよい。記憶部202は、IOノード20に内蔵されているものに限定されず、外付けのデータベース又は外付け型の記憶モジュールであってもよい。
【0057】
通信部203は、任意の通信技術によってフィールド機器10及びコントローラ30等の他の装置と通信接続可能な、任意の通信モジュールを含む。通信部203は、さらに、他の装置との通信を制御するための通信制御モジュール、及び他の装置との通信に必要となる識別情報等の通信用データを記憶する記憶モジュールを含んでもよい。
【0058】
IOノード20の機能は、本実施形態に係るコンピュータプログラム(プログラム)を、制御部201に含まれるプロセッサで実行することにより実現されうる。すなわち、IOノード20の機能は、ソフトウェアにより実現されうる。コンピュータプログラムは、IOノード20の動作に含まれるステップの処理をコンピュータに実行させることで、各ステップの処理に対応する機能をコンピュータに実現させる。すなわち、コンピュータプログラムは、コンピュータを本実施形態に係るIOノード20として機能させるためのプログラムである。コンピュータプログラムは、コンピュータで読み取り可能な記録媒体に記録してもよい。プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるものが含まれる。例えば、コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータは、「プログラムに準ずるもの」に該当する。
【0059】
IOノード20の一部又は全ての機能が、制御部201に含まれる専用回路により実現されてもよい。すなわち、IOノード20の一部又は全ての機能が、ハードウェアにより実現されてもよい。また、IOノード20は単一のコンピュータ装置により実現されてもよいし、複数のコンピュータ装置の協働により実現されてもよい。
【0060】
(コントローラ)
図7は、
図2のコントローラ30のハードウェア構成例を示すブロック図である。コントローラ30は、1つ又は互いに通信可能な複数のコンピュータ装置である。コントローラ30は、例えば、PC又はWS等の汎用のコンピュータにより実現されるが、FPGA又はプラント等の制御用に設計された専用コンピュータ等により実現されてもよい。
図7に示すように、コントローラ30は、制御部301、記憶部302、及び、通信部303を備える。コントローラ30の制御部301、記憶部302、及び、通信部303は、IOノード20の制御部201、記憶部202、及び、通信部203と同様に実現されるため、詳細な説明を省略する。また、IOノード20と同様に、コントローラ30の機能は、本実施形態に係るプログラムを、制御部301に含まれるプロセッサで実行することにより実現されうる。
【0061】
(キャッシュサーバ)
図8は、
図2のキャッシュサーバ40のハードウェア構成例を示すブロック図である。キャッシュサーバ40は、1つ又は互いに通信可能な複数のコンピュータ装置である。キャッシュサーバ40は、例えば、PC又はWS等の汎用のコンピュータにより実現されるが、FPGA又はプラント等の制御用に設計された専用コンピュータ等により実現されてもよい。
図8に示すように、キャッシュサーバ40は、制御部401、記憶部402、及び、通信部403を備える。キャッシュサーバ40の制御部401、記憶部402、及び、通信部403は、IOノード20の制御部201、記憶部202、及び、通信部203と同様に実現されるため、詳細な説明を省略する。また、IOノード20と同様に、キャッシュサーバ40の機能は、本実施形態に係るプログラムを、制御部401に含まれるプロセッサで実行することにより実現されうる。
【0062】
(制御システムの動作)
図9及び
図10は、一実施形態に係る制御システム1aの動作例を示すシーケンスチャートである。
図9及び
図10を参照して説明する制御システム1aの動作は、制御システム1aの制御方法の一つに相当してもよい。
図9及び
図10の各ステップの動作は、IOノード20の制御部201、コントローラ30の制御部301、又は、キャッシュサーバ40の制御部401による制御に基づき実行されてもよい。
図9及び
図10の処理は、制御タイミングごと、例えば、1秒ごとに実行される。
図9及び
図10は、ある制御タイミングにおいて、まずコントローラ30aがキャッシュサーバ40にアクセスし、その後、コントローラ30bがキャッシュサーバ40にアクセスしている例を示している。
図9は、コントローラ30aが測定データを取得して演算を行う処理を示している。
図10は、コントローラ30bが測定データを取得して演算を行う処理を示している。以下、
図2のように、制御システム1aは1つのIOノード20を備える例を説明する。
【0063】
図9のステップS1において、コントローラ30aの制御部301は、キャッシュサーバ40に対し、IOノード20に接続されているフィールド機器10の測定データのキャッシュがキャッシュデータベース45に記憶されているか否かを問い合わせる。例えば、コントローラ30aのアクセス経路制御部32aが問い合わせを行ってもよい。
【0064】
ステップS2において、キャッシュサーバ40の制御部401は、ステップS1で問い合わせを受けた測定データのキャッシュが記憶されているか否かを判定する。例えば、制御部401は、管理テーブル41を参照し、該当する制御タイミング及びIOノード20について、コントローラ30のアクセスが記録されているか否かを判定して、キャッシュの有無を判定してもよい。
図9の例は、ある制御タイミングにおいてコントローラ30aが初めてアクセスした場合を示しているため、制御部401は、キャッシュなしと判定する。
【0065】
ステップS3において、キャッシュサーバ40の制御部401は、コントローラ30aに対し、キャッシュなしを通知する。
【0066】
キャッシュサーバ40からキャッシュなしの通知を受けると、ステップS4において、コントローラ30aの制御部301は、IOノード20に対して、フィールド機器10の測定データを要求する。例えば、コントローラ30aの制御アプリケーション部31aがデータ取得を要求してもよい。
【0067】
コントローラ30aから測定データの要求を受信すると、ステップS5において、IOノード20の制御部201は、フィールド機器10の測定データを取得する。前述のように、IOノード20は、一定周期(例えば、1秒ごと)でフィールド機器10から測定データを収集し、収集した測定データを記憶部202に記憶させる。そこで、制御部201は、記憶部202から測定データを読み出して、測定データを取得する。なお、制御部201は、コントローラ30から測定データの要求を受信したことに応じて、フィールド機器10から測定データを取得してもよい。
【0068】
ステップS6において、IOノード20の制御部201は、ステップS5で取得したフィールド機器10の測定データをコントローラ30aへ送信する。
【0069】
フィールド機器10の測定データをIOノード20から受信すると、ステップS7において、コントローラ30aの制御部301は、受信した測定データを記憶部302に記憶させるとともに、キャッシュサーバ40へ測定データを送信する。
【0070】
フィールド機器10の測定データをコントローラ30aから受信すると、ステップS8において、キャッシュサーバ40の制御部401は、受信した測定データをキャッシュデータベース45に記憶させるとともに、管理テーブル41を更新する。例えば、制御部401は、対応する制御グループの管理テーブル41において、該当する制御タイミングのIOノード20に対応する項目を、コントローラ30aの識別情報により更新してもよい。
【0071】
一方、ステップS9において、コントローラ30aの制御部301は、ステップS7で取得した測定データに基づき、予め定められた演算を行う。例えば、コントローラ30aの制御アプリケーション部21aが演算を行ってもよい。演算内容は、フィールド機器10の種類等に応じて、予め設定されている。
【0072】
ステップS10において、コントローラ30aの制御部301は、ステップS9の処理による演算結果をIOノード20へ送信する。なお、制御システム1aは、ステップS7,S8の前に、ステップS9,S10の処理を実行してもよい。
【0073】
コントローラ30aから演算結果を受信すると、ステップS11において、IOノード20の制御部201は、コントローラ30aから受信した演算結果を記憶部202に記憶させて保持する。
【0074】
次に、
図10のステップS21において、コントローラ30bの制御部301は、キャッシュサーバ40に対し、IOノード20に接続されているフィールド機器10の測定データのキャッシュがキャッシュデータベース45に記憶されているか否かを問い合わせる。例えば、コントローラ30bの仮想化部34bが問い合わせを行ってもよい。
【0075】
ステップS22において、キャッシュサーバ40の制御部401は、キャッシュサーバ40の制御部401は、ステップS21で問い合わせを受けた測定データのキャッシュが記憶されているか否かを判定する。例えば、制御部401は、管理テーブル41を参照し、該当する制御タイミング及びIOノード20について、コントローラ30のアクセスが記録されているか否かを判定して、キャッシュの有無を判定してもよい。
図10の例は、該当する制御タイミングにおいて既にコントローラ30aがアクセスした場合を示しているため、制御部401は、キャッシュありと判定する。
【0076】
そこで、ステップS23において、キャッシュサーバ40の制御部401は、
図9のステップS8でキャッシュデータベース45に保持した測定データのキャッシュを読み出して取得する。具体的には、制御部401は、該当する制御グループのIOノード20の識別情報に対応づけて記憶された、該当する制御タイミングの測定データを取得してもよい。
【0077】
ステップS24において、キャッシュサーバ40の制御部401は、ステップS23で取得した測定データのキャッシュをコントローラ30bへ送信する。
【0078】
測定データのキャッシュをキャッシュサーバ40から受信すると、ステップS25において、コントローラ30bの制御部301は、取得した測定データのキャッシュに基づき、予め定められた演算を行う。例えば、コントローラ30bの制御アプリケーション部21bが演算を行ってもよい。演算内容は、コントローラ30aが実行する演算と同一である。
【0079】
ステップS26において、コントローラ30bの制御部301は、ステップS25の処理による演算結果をIOノード20へ送信する。
【0080】
コントローラ30bから演算結果を受信すると、ステップS27において、IOノード20の制御部201は、
図9のステップS11で保持したコントローラ30aによる演算結果と比較し、コントローラ30a,30bが正常に動作しているか否かを判定する。例えば、制御部201は、コントローラ30a,30bによる演算結果が一致した場合、各コントローラ30a,30bは正常に動作しており、そうでない場合は正常に動作していないと判定してもよい。制御システム1aが3つ以上のコントローラ30を備えている場合も同様に、制御部201は、全てのコントローラ30による演算結果が一致した場合、各コントローラ30は正常に動作しており、そうでない場合は正常に動作していないと判定してもよい。
【0081】
ステップS28において、IOノード20の制御部201は、ステップS27で判定した結果を出力する。例えば、制御部201は、判定結果をログファイルとして、記憶部202に出力してもよい。あるいは、制御部201は、判定結果を表示装置(ディスプレイ)等に表示させたり、コントローラ30又はキャッシュサーバ40等の他の装置へ送信したりしてもよい。制御部201は、ステップS27において正常でないと判定された場合に、このような出力を行うようにしてもよい。
【0082】
以上のように、制御システム1aは、測定データを取得するフィールド機器10が接続されたIOノード20、フィールド機器10が取得した測定データに基づき演算を行う複数のコントローラ30a,30b、及び、キャッシュサーバ40を備える。複数のコントローラ30a,30bの各々の制御部301は、予め一定の周期で定められた一定期間である制御タイミングごとに、フィールド機器10が取得した測定データを保持しているか否かをキャッシュサーバ40に問い合わせるなどして判定する。制御部301は、キャッシュサーバ40が測定データを保持していない場合、IOノード20から、IOノード20に接続されたフィールド機器10が取得した測定データを取得する。制御部301は、キャッシュサーバ40が測定データを保持している場合、キャッシュサーバ40から、フィールド機器10が取得した測定データを取得する。制御部301は、IOノード20又はキャッシュサーバ40から受信した測定データに基づき、予め定められた演算を行う。したがって、仮にコントローラ30の動作タイミングがずれたとしても、全てのコントローラ30は、制御タイミングにおける同一の測定データに基づき演算を行うことが可能である。
【0083】
なお、複数のコントローラ30a,30bの各々の制御部301は、制御タイミングごとに、IOノード20又はキャッシュサーバ40から受信した測定データに基づき、演算を行った結果である演算結果をIOノード20へ送信してもよい。IOノード20の制御部201は、制御タイミングごとに、複数のコントローラ30a,30bの各々から受信した演算結果を比較して、複数のコントローラ30a,30bの動作が正常であるか否かを判定してもよい。制御部201は、複数のコントローラ30a,30bの動作が正常であるか否かの判定結果を出力してもよい。このように、制御システム1aは、複数のコントローラ30a,30bの演算結果を比較することで、コントローラ30の異常を検出することができる。また、制御システム1aは、制御タイミング内に演算結果を送信できなかったコントローラ30a,30bの演算結果については、動作が異常であるか否かの判定に使用しないようにすることができる。
【0084】
また、複数のコントローラ30a,30bの各々の制御部301は、IOノード20から、IOノード20に接続されたフィールド機器10が取得した測定データを取得した場合、取得した測定データをキャッシュサーバ40へ送信してもよい。キャッシュサーバ40の制御部401は、複数のコントローラ30a,30bに含まれるコントローラ30から測定データを受信した場合、その受信した測定データを記憶部402に保持させてもよい。したがって、制御システム1aは、最初にキャッシュサーバ40にアクセスしたコントローラ30の測定データをキャッシュして保持させることで、他のコントローラ30がこの測定データに基づき演算を行うことを可能にする。
【0085】
また、キャッシュサーバ40の制御部401は、制御タイミングごとに、測定データを受信したコントローラ30の識別情報を管理テーブル41に記録してもよい。このように、測定データのキャッシュを送信したコントローラ30の識別情報を記録することで、キャッシュデータを送信したコントローラ30を特定することができる。
【0086】
また、キャッシュサーバ40の制御部401は、制御タイミングごとに、複数のコントローラ30a,30bに含まれるいずれかのコントローラ30(例えば、コントローラ30a)から、フィールド機器10が取得した測定データを保持しているか否かの問合せを初めて受けてからそのコントローラ30aから測定データを受信するまで、他のコントローラ30(例えば、コントローラ30b)からの問合せに対する回答を保留してもよい。具体的には、例えば、
図9のステップS1でコントローラ30aから問い合わせを受けてから、ステップS8で測定データをキャッシュに保持するまで、コントローラ30bから問い合わせを受けても(S21)、すぐに回答しないようにしてもよい。これにより、あるコントローラ30aがIOノード20から測定データを取得している間に他のコントローラ30bから問い合わせがあった場合に、他のコントローラ30bもIOノード20にアクセスすることなく、全てのコントローラが同一の測定データを取得することを保証することができる。
【0087】
なお、以上の実施形態例においては、キャッシュサーバ40が管理テーブル41を保持している例を説明したが、コントローラ30の各々も、キャッシュサーバ40の管理テーブル41(第1の管理テーブル)と同期して管理された管理テーブル(第2の管理テーブル)を保持するようにしてもよい。このような構成によれば、コントローラ30は、キャッシュサーバ40に問い合わせることなく、測定データの取得先がIOノード20とキャッシュサーバ40のいずれであるかを判定することができる。また、IOノード20が定期的にフィールド機器10から測定データを取得する例を説明したが、このような処理に限られない。例えば、フィールド機器10a,10bがそれぞれ独立に測定データをIOノード20に送信するようにしてもよい。
【0088】
<実施形態2>
実施形態1では、コントローラ30の仮想化部34において測定データの取得先を制御する例を説明したが、ネットワーク(NW)スイッチ等の他の装置が測定データの取得先を制御するようにしてもよい。
【0089】
(制御システム)
図11は、実施形態2に係る制御システム1bの概略構成例を示す図である。制御システム1bは、フィールド機器10(10a,10b)、IOノード20、コントローラ30(30a,30b)、キャッシュサーバ40、ネットワーク50、及び、ネットワークスイッチ60を備える。フィールド機器10(10a,10b)、IOノード20、コントローラ30(30a,30b)、キャッシュサーバ40、及び、ネットワーク50の機能及び構成は、
図2の制御システム1aと同様であるため、実施形態1の構成と相違する内容についてのみ説明する。
【0090】
制御システム1bにおいては、キャッシュサーバ40に代えて、又は、キャッシュサーバ40とともに、ネットワークスイッチ60は管理テーブル61を保持する。ネットワークスイッチ60の管理テーブル61は、キャッシュサーバ40の管理テーブル41と同様であり、例えば、
図4及び
図5に例示した内容と同一の情報を含んでもよい。制御システム1bにおいて、複数のコントローラ30a,30bは、制御タイミングごとに、フィールド機器10が取得した測定データのIOノード20に対する要求をネットワークスイッチ60へ送信する。ネットワークスイッチ60は、管理テーブル61を参照して、キャッシュサーバ40が測定データを保持しているか否かを判定する。ネットワークスイッチ60は、キャッシュサーバ40が測定データを保持していない場合、IOノード20に、IOノード20に接続されたフィールド機器10が取得した測定データを、ネットワークスイッチ60を介してコントローラ30へ送信させる。ネットワークスイッチ60は、IOノード20から受信した測定データをキャッシュサーバ40に送信して保持させる。一方、ネットワークスイッチ60は、キャッシュサーバ40が測定データを保持している場合、キャッシュサーバ40に、フィールド機器10が取得した測定データをコントローラ30へ送信させる。複数のコントローラ30の各々は、IOノード20又はキャッシュサーバ40から受信した測定データに基づき、予め定められた演算を行う。具体的には、ネットワークスイッチ60は、例えば、コントローラ30、IOノード20、及び、キャッシュサーバ40から受信したパケットのIPアドレス等を書き換えることで通信先を切り替えるようにしてもよい。
【0091】
このような構成によれば、コントローラ30から見ると、同一の装置にアクセスしているように見えながら、実際は、キャッシュの有無に応じて、IOノード20、又は、キャッシュサーバ40から、全コントローラ30へ共通の測定データを取得させることができる。なお、ネットワークスイッチ60を備えた構成においても、アクセス先の切り替えを、ネットワークスイッチ60ではなく、各コントローラ30のアクセス経路制御部32が実行するようにしてもよい。
【0092】
(ネットワークスイッチ)
図12は、
図11のネットワークスイッチ60のハードウェア構成例を示すブロック図である。ネットワークスイッチ60は、1つ又は互いに通信可能な複数のコンピュータ装置である。ネットワークスイッチ60は、例えば、FPGA又はプラント等の制御用に設計された専用コンピュータ等により実現されるが、PC等の汎用の装置により実現されてもよい。
図12に示すように、ネットワークスイッチ60は、制御部601、記憶部602、及び、通信部603を備える。ネットワークスイッチ60の制御部601、記憶部602、及び、通信部603は、IOノード20の制御部201、記憶部202、及び、通信部203と同様に実現されるため、詳細な説明を省略する。また、IOノード20と同様に、ネットワークスイッチ60の機能は、本実施形態に係るプログラムを、制御部601に含まれるプロセッサで実行することにより実現されうる。
【0093】
(制御システムの動作)
図13及び
図14は、一実施形態に係る制御システム1bの動作例を示すシーケンスチャートである。
図13及び
図14を参照して説明する制御システム11bの動作は、制御システム1bの制御方法の一つに相当してもよい。
図13及び
図14の各ステップの動作は、IOノード20の制御部201、コントローラ30の制御部301、キャッシュサーバ40の制御部401、又は、ネットワークスイッチ60の制御部601による制御に基づき実行されてもよい。
図13及び
図14の処理は、制御タイミングごと、例えば、1秒ごとに実行される。
図13及び
図14は、ある制御タイミングにおいて、まずコントローラ30aがネットワークスイッチ60にアクセスし、その後、コントローラ30bがネットワークスイッチ60にアクセスしている例を示している。
図13は、コントローラ30aが測定データを取得して演算を行う処理を示している。
図14は、コントローラ30bが測定データを取得して演算を行う処理を示している。以下、
図11のように、制御システム1bは1つのIOノード20を備える例を説明する。
【0094】
図13のステップS31において、コントローラ30aの制御部301は、ネットワークスイッチ60に対し、IOノード20に接続されているフィールド機器10の測定データを要求する。例えば、コントローラ30aのアクセス経路制御部32aが要求を行ってもよい。
【0095】
ステップS32において、ネットワークスイッチ60の制御部601は、ステップS31で要求を受けた測定データのキャッシュがキャッシュサーバ40に記憶されているか否かを判定する。例えば、制御部601は、自装置が保持する管理テーブル61を参照し、該当する制御タイミング及びIOノード20について、コントローラ30のアクセスが記録されているか否かを判定して、キャッシュの有無を判定してもよい。
図13の例は、ある制御タイミングにおいてコントローラ30aが初めてアクセスした場合を示しているため、制御部601は、キャッシュなしと判定する(ステップS33)。
【0096】
ステップS34において、ネットワークスイッチ60の制御部601は、IOノード20に対して、フィールド機器10の測定データを要求する。例えば、制御部601は、ステップS31でコントローラ30aから受信したパケットのIPアドレス等を書き換えて、測定データの要求をIOノード20へ送信してもよい。
【0097】
ネットワークスイッチ60から測定データの要求を受信すると、ステップS35において、IOノード20の制御部201は、フィールド機器10の測定データを取得する。前述のように、IOノード20は、一定周期(例えば、1秒ごと)でフィールド機器10から測定データを収集し、収集した測定データを記憶部202に記憶させる。そこで、制御部201は、記憶部202から測定データを読み出して、測定データを取得する。なお、制御部201は、ネットワークスイッチ60から測定データの要求を受信したことに応じて、フィールド機器10から測定データを取得してもよい。
【0098】
ステップS36において、IOノード20の制御部201は、ステップS35で取得したフィールド機器10の測定データをネットワークスイッチ60へ送信する。
【0099】
ステップS37において、ネットワークスイッチ60の制御部601は、フィールド機器10の測定データをIOノード20から受信して取得する。
【0100】
ステップS38において、ネットワークスイッチ60の制御部601は、ステップS37で取得した測定データをコントローラ30aへ送信する。例えば、制御部601は、ステップS36でIOノード20から受信したパケットのIPアドレス等を書き換えて、測定データをコントローラ30aへ送信してもよい。
【0101】
ステップS39において、ネットワークスイッチ60の制御部601は、ステップS37で取得した測定データをキャッシュサーバ40へ送信する。
【0102】
ステップS40において、ネットワークスイッチ60の制御部601は、管理テーブル61を更新する。例えば、制御部401は、対応する制御グループの管理テーブル61において、該当する制御タイミングのIOノード20に対応する項目を、コントローラ30aの識別情報により更新してもよい。
【0103】
一方、ステップS41において、コントローラ30aの制御部301は、ステップS38で取得した測定データに基づき、予め定められた演算を行う。例えば、コントローラ30aの制御アプリケーション部21aが演算を行ってもよい。演算内容は、フィールド機器10の種類等に応じて、予め設定されている。
【0104】
ステップS42において、コントローラ30aの制御部301は、ステップS41の処理による演算結果をIOノード20へ送信する。なお、制御システム1bは、ステップS39,S40の前に、ステップS41,S42の処理を実行してもよい。
【0105】
コントローラ30aから演算結果を受信すると、ステップS43において、IOノード20の制御部201は、コントローラ30aから受信した演算結果を記憶部202に記憶させて保持する。
【0106】
一方、キャッシュサーバ40の制御部401は、フィールド機器10の測定データをネットワークスイッチ60から受信すると、ステップS44において、受信した測定データをキャッシュデータベース45に記憶させるとともに、管理テーブル41を更新する。例えば、制御部401は、対応する制御グループの管理テーブル41において、該当する制御タイミングのIOノード20に対応する項目を、コントローラ30aの識別情報により更新してもよい。
【0107】
次に、
図14のステップS51において、コントローラ30bの制御部301は、ネットワークスイッチ60に対し、IOノード20に接続されているフィールド機器10の測定データを要求する。例えば、コントローラ30bの仮想化部34bが要求を行ってもよい。
【0108】
ステップS52において、ネットワークスイッチ60の制御部601は、ステップS51で要求を受けた測定データのキャッシュがキャッシュサーバ40に記憶されているか否かを判定する。例えば、制御部601は、管理テーブル61を参照し、該当する制御タイミング及びIOノード20について、コントローラ30のアクセスが記録されているか否かを判定して、キャッシュの有無を判定してもよい。
図14の例は、該当する制御タイミングにおいて既にコントローラ30aがアクセスした場合を示しているため、制御部601は、キャッシュありと判定する(ステップS53)。
【0109】
そこで、ステップS54において、ネットワークスイッチ60の制御部601は、キャッシュサーバ40に対し、
図13のステップS44でキャッシュデータベース45に保持した測定データのキャッシュを要求する。例えば、制御部601は、ステップS51でコントローラ30bから受信したパケットのIPアドレス等を書き換えて、測定データの要求をキャッシュサーバ40へ送信してもよい。具体的には、制御部601は、該当する制御グループのIOノード20の識別情報に対応づけて記憶された、該当する制御タイミングの測定データのキャッシュを要求してもよい。
【0110】
ステップS55において、キャッシュサーバ40の制御部401は、ネットワークスイッチ60により要求された測定データのキャッシュをキャッシュデータベース45から取得する。
【0111】
ステップS56において、キャッシュサーバ40の制御部401は、ステップS55で取得した測定データのキャッシュをネットワークスイッチ60へ送信する。
【0112】
ステップS57において、ネットワークスイッチ60の制御部601は、フィールド機器10の測定データのキャッシュをキャッシュサーバ40から受信して取得する。
【0113】
ステップS58において、ネットワークスイッチ60の制御部601は、ステップS57で取得した測定データのキャッシュをコントローラ30bへ送信する。例えば、制御部601は、ステップS56でキャッシュサーバ40から受信したパケットのIPアドレス等を書き換えて、測定データのキャッシュをコントローラ30bへ送信してもよい。
【0114】
測定データのキャッシュを取得すると、ステップS59において、コントローラ30bの制御部301は、取得した測定データのキャッシュに基づき、予め定められた演算を行う。例えば、コントローラ30bの制御アプリケーション部21bが演算を行ってもよい。演算内容は、コントローラ30aが実行する演算と同一である。
【0115】
ステップS60において、コントローラ30bの制御部301は、ステップS59の処理による演算結果をIOノード20へ送信する。
【0116】
コントローラ30bから演算結果を受信すると、ステップS61において、IOノード20の制御部201は、
図13のステップS43で保持したコントローラ30aによる演算結果と比較し、コントローラ30a,30bが正常に動作しているか否かを判定する。例えば、制御部201は、コントローラ30a,30bによる演算結果が一致した場合、各コントローラ30a,30bは正常に動作しており、そうでない場合は正常に動作していないと判定してもよい。制御システム1bが3つ以上のコントローラ30を備えている場合も同様に、制御部201は、全てのコントローラ30による演算結果が一致した場合、各コントローラ30は正常に動作しており、そうでない場合は正常に動作していないと判定してもよい。
【0117】
ステップS62において、IOノード20の制御部201は、ステップS61で判定した結果を出力する。例えば、制御部201は、判定結果をログファイルとして、記憶部202に出力してもよい。あるいは、制御部201は、判定結果を表示装置(ディスプレイ)等に表示させたり、コントローラ30、キャッシュサーバ40、又は、ネットワークスイッチ60等の他の装置へ送信したりしてもよい。制御部201は、ステップS61において正常でないと判定された場合に、このような出力を行うようにしてもよい。
【0118】
以上のように、本開示に係る制御システム1a,1bによれば、非同期に動作する複数のコントローラ30間で同じタイミングのデータを取得することができる。したがって、各コントローラ30の動作が高精度に同期していなくても、各コントローラ30の演算結果を比較して、コントローラ30の異常を検出することが可能である。
【0119】
また、制御システム1a,1bの手法は、マルチキャスト又はブロードキャスト等におけるpub/sub通信でのパケットの到達保証に応用してもよい。マルチキャスト又はブロードキャストを利用してpub/sub通信を行う場合、通信プロトコルにはUDP(User Datagram Protocol)を使用する。UDPはTCP(Transmission Control Protocol)と異なり送達確認の仕組みがなく、送信されたデータを確実に受信できる保証がない。そのため受信できなかった場合の処理が必要になる。
【0120】
例えば、
図2の制御システム1aにおいて、IOノード20が、任意のタイミングでフィールド機器10から測定データを取得し、コントローラ30及びキャッシュサーバ40を含む各ノードへ制御タイミング情報(T001)及び測定データを配布(publish)する場合を考える。この場合、各ノード(コントローラ30a,30b、及び、キャッシュサーバ40)はIOノード20からのデータを待ち受け、受信(subscribe)する。コントローラ30は、制御タイミングT001で使用するノードの測定データを受信できた場合、そのデータを使用して演算を行う。また、コントローラ30は、受信した測定データをキャッシュサーバ40に保持させる。コントローラ30a,30bは、使用する測定データが受信できなかった場合、キャッシュサーバ40にデータ取得要求を送信し、データを取得する。
【0121】
このように、コントローラ30は、制御タイミングにおける測定データを受信できた場合はその測定データに基づき演算を行うとともに、測定データをキャッシュサーバ40に保持させる。コントローラ30は、制御タイミングにおける測定データを受信できなかった場合は、キャッシュサーバ40にアクセスして必要な測定データを取得し、所定の演算を行う。したがって、コントローラ30からIOノード20へアクセスするのではなく、IOノード20からフィールド機器10の測定データをマルチキャスト又はブロードキャストする場合においても、各コントローラ30は、同一の測定データに基づき演算できる。よって、各コントローラ30の演算結果を比較して、コントローラ30の異常を検知することが可能である。
【0122】
本開示は上述の実施形態に限定されるものではない。例えば、ブロック図に記載の複数のブロックは統合されてもよいし、又は1つのブロックは分割されてもよい。フローチャートに記載の複数のステップは、記述に従って時系列に実行する代わりに、各ステップを実行する装置の処理能力に応じて、又は必要に応じて、並列的に又は異なる順序で実行されてもよい。その他、本開示の趣旨を逸脱しない範囲での変更が可能である。
【符号の説明】
【0123】
1,1a 制御システム
10 フィールド機器
20 IOノード
21 制御アプリケーション部
22 仮想化部
23 通信制御部
24 アクセス経路制御部
201 制御部
202 記憶部
203 通信部
30 コントローラ
31 制御アプリケーション部
32 仮想化部
33 通信制御部
34 アクセス経路制御部
301 制御部
302 記憶部
303 通信部
40 キャッシュサーバ
41 管理テーブル
42 仮想化部
43 通信制御部
44 アクセス経路制御部
45 キャッシュデータベース
401 制御部
402 記憶部
403 通信部
50 ネットワーク
60 ネットワークスイッチ
61 管理テーブル
601 制御部
602 記憶部
603 通信部
【要約】
【課題】フィールド機器の制御システムにおいて、より簡易な構成でコントローラの冗長化を実現可能とする。
【解決手段】測定データを取得するフィールド機器が接続されたIOノードと、フィールド機器が取得した測定データに基づき演算を行う複数のコントローラと、キャッシュサーバと、を備え、複数のコントローラの各々は、予め一定の周期で定められた一定期間である制御タイミングごとに、フィールド機器が取得した測定データを保持しているか否かを判定し、キャッシュサーバが測定データを保持していない場合、IOノードから、当該IOノードに接続されたフィールド機器が取得した測定データを取得し、キャッシュサーバが測定データを保持している場合、当該キャッシュサーバから、フィールド機器が取得した測定データを取得し、IOノード又はキャッシュサーバから受信した測定データに基づき、予め定められた演算を行う。
【選択図】
図2