(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-19
(45)【発行日】2022-07-27
(54)【発明の名称】制御システム、検索装置および検索プログラム
(51)【国際特許分類】
G06F 16/9032 20190101AFI20220720BHJP
H04L 67/02 20220101ALI20220720BHJP
【FI】
G06F16/9032
H04L67/02
(21)【出願番号】P 2018133625
(22)【出願日】2018-07-13
【審査請求日】2020-12-11
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】永田 雄大
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2005-260893(JP,A)
【文献】特開平11-341060(JP,A)
【文献】国際公開第2014/050192(WO,A1)
【文献】特開2017-062851(JP,A)
【文献】特開2004-302849(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
H04L 67/00-67/75
H04L 12/28
H04L 45/00
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのデバイスからなる制御システムであって、
前記制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルを保持するデータベースと、
外部からのデータ検索クエリに応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信する通信処理部と、
前記通信処理部により受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形する成形部とを備え
、
前記通信処理部は、前記構成情報を参照して、前記対象デバイスまでの経路を特定するとともに、特定した前記対象デバイスまでの経路に応じてそれぞれ生成されるパケットをカプセル化して前記リクエストパケットを生成する、制御システム。
【請求項2】
前記通信処理部は、前記構成情報を参照して、前記対象デバイスの接続位置に到達するために前記リクエストパケットを生成する、請求項1に記載の制御システム。
【請求項3】
前記通信処理部は、前記デバイスプロファイルを参照して、前記対象デバイスから前記データ検索クエリにより指定されたデータを収集するためのコマンドを前記リクエストパケットに含める、請求項1
または2に記載の制御システム。
【請求項4】
前記通信処理部は、前記データ検索クエリにおいて指定された検索条件に相当する命令を含む前記コマンドを生成する、請求項
3に記載の制御システム。
【請求項5】
前記データベースは、前記制御システムに含まれる各デバイスの状態値を示す情報をさらに保持しており、
前記通信処理部は、各デバイスの状態値を示す情報を参照して、前記データ検索クエリにおいて指定された検索条件に合致するデバイスを特定する、請求項1~
4のいずれか1項に記載の制御システム。
【請求項6】
前記データ検索クエリは、SQL言語またはRESTに準拠した形式で記述されている、請求項1に記載の制御システム。
【請求項7】
少なくとも1つのデバイスからなる制御システムに接続される検索装置であって、
前記制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルを保持するデータベースと、
外部からのデータ検索クエリに応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信する通信処理部と、
前記通信処理部により受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形する成形部とを備え
、
前記通信処理部は、前記構成情報を参照して、前記対象デバイスまでの経路を特定するとともに、特定した前記対象デバイスまでの経路に応じてそれぞれ生成されるパケットをカプセル化して前記リクエストパケットを生成する、検索装置。
【請求項8】
少なくとも1つのデバイスからなる制御システムに接続されるコンピュータで実行される検索プログラムであって、前記コンピュータに、
前記制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルをデータベースに保持するステップと、
外部からのデータ検索クエリに応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信する
ステップと、
前記対象デバイスからのレスポンスパケットを受信するステップと、
前記受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形するステップとを実行させ
、
前記送信するステップは、前記構成情報を参照して、前記対象デバイスまでの経路を特定するとともに、特定した前記対象デバイスまでの経路に応じてそれぞれ生成されるパケットをカプセル化して前記リクエストパケットを生成するステップを含む、検索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム内の任意のデバイスの任意の情報を収集可能な制御システム、検索装置および検索プログラムに関する。
【背景技術】
【0002】
FA(ファクトリオートメーション)の分野では、PLC(プログラマブルロジックコントローラ)などの制御装置を用いて設備や機械などの制御対象を制御することが一般的である。
【0003】
近年のICT(Information and Communication Technology)の進歩やIoT(Internet of Things)の注目などに伴って、制御装置により制御されるフィールドレベルのデータを収集したいというニーズが高まっている。
【0004】
このような制御装置が扱うデータを上位システムに提供するような構成例として、例えば、特開平05-265952号公報(特許文献1)は、分散CIMシステムを開示する。特許文献1に開示される分散CIMシステムは、下位ネットワークと上位ネットワークとの間で全レイヤのプロトコル変換を行うと共に、アプリケーションサーバ、ファイルサーバ及びマンマシンインタフェース端末が扱う情報と下位ネットワークの各種制御機器が扱う情報とのデータ変換を行うアプリケーションゲートウェイを有している。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述の特開平05-265952号公報に開示される構成においては、アプリケーションゲートウェイは、プロトコル変換およびデータ変換を行うことになる。このようなデータ変換は、アプリケーションサーバなどで実行される処理の種類などに応じた処理とする必要があり、汎用性を高めることができない。
【0007】
本発明の一つの目的は、汎用的なインターフェイスにより、制御システム内の任意のデバイスの任意の情報を収集可能な構成を提供することである。
【課題を解決するための手段】
【0008】
本発明の一つの実施の形態によれば、少なくとも1つのデバイスからなる制御システムが提供される。制御システムは、制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルを保持するデータベースと、外部からのデータ検索クエリに応答して、データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信する通信処理部と、通信処理部により受信されたレスポンスパケットに含まれる検索結果をデータ検索クエリに対応する形式に成形するデータ成形部とを含む。
【0009】
本開示によれば、外部からのデータ検索クエリを受けると、制御システム内の対象デバイスに対するリクエストパケットが生成される。当該リクエストパケットに応答して送信されるレスポンスパケットに含まれるデータは、データ検索クエリに対応する形式に成形されて、データ検索クエリの要求元へ送信される。これにより、汎用的なインターフェイスにより、制御システム内の任意のデバイスの任意の情報を収集可能となる。
【0010】
上述の開示において、通信処理部は、構成情報を参照して、対象デバイスの接続位置に到達するためにリクエストパケットを生成するようにしてもよい。
【0011】
本開示によれば、構成情報を参照することで、いずれのデバイスが対象とされても、当該対象デバイスまで確実にリクエストパケットを到達させることができる。
【0012】
上述の開示において、通信処理部は、構成情報を参照して、対象デバイスまでの経路を特定するとともに、特定した経路に対応するプロトコルに応じたパケットを生成するようにしてもよい。
【0013】
本開示によれば、いずれのデバイスが対象とされても、対象デバイスまでの経路が特定された上でリクエストパケットが生成されるので、リクエストパケットを当該対象デバイスまで確実に到達させることができる。
【0014】
上述の開示において、通信処理部は、対象デバイスまでの経路に応じてそれぞれ生成されるパケットをカプセル化してリクエストパケットを生成するようにしてもよい。
【0015】
本開示によれば、対象デバイスまでにプロトコルが異なる経路が存在する場合であっても、リクエストパケットを当該対象デバイスまで確実に到達させることができる。
【0016】
上述の開示において、通信処理部は、デバイスプロファイルを参照して、対象デバイスからデータ検索クエリにより指定されたデータを収集するためのコマンドをリクエストパケットに含めるようにしてもよい。
【0017】
本開示によれば、対象デバイスがどのような形式であっても、デバイスプロファイルを参照することで、データ検索クエリにより指定されたデータを収集できる。
【0018】
上述の開示において、通信処理部は、データ検索クエリにおいて指定された検索条件に相当する命令を含むコマンドを生成するようにしてもよい。
【0019】
本開示によれば、データ検索クエリにおいて複雑な検索条件が指定されたとしても、対応する命令または命令の組合せをコマンドに含めることで、対象デバイスに対するコマンドのレベルで実現できる。
【0020】
上述の開示において、データベースは、制御システムに含まれる各デバイスの状態値を示す情報をさらに保持しており、通信処理部は、各デバイスの状態値を示す情報を参照して、データ検索クエリにおいて指定された検索条件に合致するデバイスを特定するようにしてもよい。
【0021】
本開示によれば、リクエストパケットを送信する対象デバイスの数を低減できるので、通信量がムダに増加することを抑制できる。
【0022】
上述の開示において、データ検索クエリは、SQL言語またはRESTに準拠した形式で記述されていてもよい。
【0023】
本開示によれば、汎用的な形式でデータ検索クエリが記述されることで、汎用性を高めることができる。
【0024】
本発明の別の実施の形態によれば、少なくとも1つのデバイスからなる制御システムに接続される検索装置が提供される。検索装置は、制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルを保持するデータベースと、外部からのデータ検索クエリに応答して、データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信する通信処理部と、通信処理部により受信されたレスポンスパケットに含まれる検索結果をデータ検索クエリに対応する形式に成形するデータ成形部とを含む。
【0025】
本発明のさらに別の実施の形態によれば、少なくとも1つのデバイスからなる制御システムに接続されるコンピュータで実行される検索プログラムが提供される。検索プログラムは、コンピュータに、制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルをデータベースに保持するステップと、外部からのデータ検索クエリに応答して、データベースを参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信するステップと、受信されたレスポンスパケットに含まれる検索結果をデータ検索クエリに対応する形式に成形するステップとを実行させる。
【発明の効果】
【0026】
本発明によれば、汎用的なインターフェイスにより、制御システム内の任意のデバイスの任意の情報を収集できる。
【図面の簡単な説明】
【0027】
【
図1】本実施の形態に係る制御システムの機能的な構成例を示す模式図である。
【
図2】本実施の形態に係る制御システムが提供する検索機能を説明するための模式図である。
【
図3】本実施の形態に係る制御システムが処理するデータ検索クエリの一例を示す図である。
【
図4】本実施の形態に係る検索装置のハードウェア構成の一例を示すブロック図である。
【
図5】本実施の形態に係る検索装置の機能構成の一例を示すブロック図である。
【
図6】本実施の形態に係る検索装置の構成情報により規定されるネットワークトポロジの一例を示す模式図である。
【
図7】本実施の形態に係る制御システムにおける検索処理例その1を説明するための図である。
【
図8】本実施の形態に係る制御システムにおける検索処理例その1を説明するための図である。
【
図9】本実施の形態に係る制御システムにおける検索処理例その2を説明するための図である。
【
図10】本実施の形態に係る制御システムにおける検索処理例その2を説明するための図である。
【
図11】本実施の形態に係る制御システムにおける検索処理例その3を説明するための図である。
【
図12】本実施の形態に係る制御システムにおける検索処理例その4を説明するための図である。
【
図13】本実施の形態に係る制御システムにおける検索処理例その5を説明するための図である。
【
図14】本実施の形態に係る制御システムにおける検索処理の処理手順を示すフローチャートである。
【
図15】本実施の形態に係る制御システムを利用して提供されるWebアプリケーションの一例を説明するための図である。
【
図16】本実施の形態に係る制御システムを利用して提供されるWebアプリケーションの一例を説明するための図である。
【
図17】本実施の形態に係る制御システムを利用してWebアプリケーションを提供するための別の実装例を示す模式図である。
【発明を実施するための形態】
【0028】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0029】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御システム1の機能的な構成例を示す模式図である。
図1を参照して、制御システム1は、少なくとも1つのデバイス300を含む。制御システムを構成し得る単位の装置を意味する。「デバイス」は、後述するようなリクエストパケットに対して応答が可能な装置の単位を意味する。典型的には、「デバイス」は、IOユニット、センサユニット、特殊ユニットなどのコントローラに接続され得るユニットを包含するとともに、PLC(プログラマブルロジックコントローラ)およびネットワーク通信を中継するカプラユニットなども包含する。
【0030】
制御システム1は、制御システム1のデバイスの接続関係を含む構成情報1041、および、各デバイスの特性を示す情報を含むデバイスプロファイル1042を保持するプロファイルデータベース104を含む。制御システム1は、さらに、外部からのデータ検索クエリ600に応答して、対象デバイスから指定されたデータを取得して応答する通信処理部108を含む。より具体的には、通信処理部108は、外部からのデータ検索クエリ600に応答して、プロファイルデータベース104を参照して、当該データ検索クエリ600からリクエストパケット400を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット450を受信する。
【0031】
制御システム1は、通信処理部108により受信されたレスポンスパケット450に含まれる検索結果をデータ検索クエリに対応する形式に成形するデータ成形部110をさらに含む。例えば、データ成形部110は、SQL言語で記述されたデータ検索クエリ600に対して、合致する検索結果650を応答する。
【0032】
このように、本実施の形態に係る制御システム1によれば、汎用的なインターフェイスにより、制御システム内の任意のデバイスの任意の情報を収集できる。
【0033】
<B.概要>
まず、本実施の形態に係る制御システム1が提供する検索機能について説明する。
【0034】
図2は、本実施の形態に係る制御システム1が提供する検索機能を説明するための模式図である。
図2を参照して、制御システム1は、検索装置100と、検索装置100により検索可能な検索対象2とを含む。
【0035】
検索対象2は、典型的には、制御対象を制御する制御装置の典型例であるPLC200(プログラマブルロジックコントローラ)と、PLC200に接続される1または複数のデバイス300とを含む。デバイス300は、PLC200の管理によって動作する装置を意味し、典型的には、制御対象との間で信号を遣り取りする装置である。デバイス300の一例としては、制御対象から入力信号を取得し、あるいは、制御対象へ出力信号を出力するIOユニット、モータなどを制御するドライバ、ロボットなどを制御するロボットコントローラなどを含む。なお、PLC200自体も「デバイス」の概念に含まれ得る。
【0036】
デバイス300の各々は、データを一時的に保持する作業領域302と、各デバイス300の各種設定を規定するプロファイル304と、接続されているセンサなどから取得したデータを格納し、および/または、デバイス300において生成されるデータを格納するデータソース306とを含む。
【0037】
検索装置100は、任意のデータ検索クエリに応答して、当該データ検索クエリに従って、検索対象2に含まれるPLC200およびデバイス300のうち任意のデバイスから任意のデータを収集し、検索結果として出力する。検索装置100は、検索対象2の任意のデバイスの任意の情報を応答できるので、外部に対しては、検索対象2の全体を1つのデータベースのように見せることができる。
【0038】
検索装置100は、データ検索クエリに応答してデータを収集するだけではなく、データ検索クエリに従う検索を実行できるように、PLC200およびデバイス300から必要なプロファイルを収集することもできる。
【0039】
検索装置100は、主たる機能構成として、インターフェイス102と、プロファイルデータベース104と、クエリ処理部106と、通信処理部108と、データ成形部110とを含む。
【0040】
インターフェイス102は、クエリ要求元との間でデータを遣り取りする。具体的には、インターフェイス102は、クエリ要求元からデータ検索クエリを受信すると、受信したデータ検索クエリをクエリ処理部106へ出力する。また、インターフェイス102は、データ成形部110から検索結果を受信すると、受信した検索結果をクエリ要求元へ送信する。
【0041】
クエリ処理部106は、インターフェイス102から与えられたデータ検索クエリを解析し、検索対象2を構成するデバイスが処理可能な要求をジョブとして生成する。
【0042】
プロファイルデータベース104は、検索対象2に含まれるデバイスのプロファイルを格納しており、クエリ処理部106により生成されたジョブが通信処理部108により処理される際に参照される。
【0043】
通信処理部108は、外部からのデータ検索クエリに応答して、プロファイルデータベース104を参照して、当該データ検索クエリからリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットを受信する。より具体的には、通信処理部108は、クエリ処理部106により生成されたジョブを処理して、検索対象2において処理可能なリクエストパケットを送出するとともに、当該リクエストパケットに応答して返されるレスポンスパケットを受信する。受信されたレスポンスパケットは、データ成形部110へ出力される。レスポンスパケットは、データ検索クエリにおいて規定された条件または命令に対応する検索結果を含む。
【0044】
データ成形部110は、通信処理部108により受信されたレスポンスパケットに含まれる検索結果をデータ検索クエリに対応する形式に成形して、検索結果としてクエリ要求元へ送信する。
【0045】
本実施の形態に係る制御システム1においては、このような一般的な検索方式である、データ検索クエリを用いて、検索対象2から任意のデータを収集できる。
【0046】
図3は、本実施の形態に係る制御システム1が処理するデータ検索クエリの一例を示す図である。
図3には、一例として、EtherCAT(登録商標)のネットワークに接続されたスレーブのうち、累積稼動時間が10,000時間を超えるものを抽出する処理に対応する、データ検索クエリの例を示す。
【0047】
図3(a)には、SQL言語で記述されたデータ検索クエリの例を示す。
図3(a)に示すデータ検索クエリにおいては、Select文にfrom節およびwhere節による条件が付加されている。
【0048】
図3(b)には、Webサービスなどの提供に用いられるREST(Representational State Transfer)に準拠した形式で記述されたデータ検索クエリの例を示す。
図3(b)に示すデータ検索クエリにおいては、URLを示す文字列に加えて、「?」および「&」のエスケープ文字によって必要な条件が記述されている。
【0049】
図3(c)には、自然言語により記述されたデータ検索クエリの例を示す。
図3(c)に示すデータ検索クエリは、人間が話す言葉と同じ表現で検索対象および検索条件が規定される。
【0050】
なお、
図3に示すようなデータ検索クエリに限られず、任意の形式のデータ検索クエリを用いることができる。また、データ検索クエリを規定する新たな形式が普及した場合には、任意の新たな形式を採用できる。
【0051】
<C.検索装置100のハードウェア構成例>
次に、本実施の形態に係る制御システム1を構成する検索装置100のハードウェア構成例について説明する。
【0052】
検索装置100は、検索対象2に含まれるPLC200またはネットワークに接続される独立した装置として構成してもよいし、PLC200の一部として(すなわち、PLC200と一体化して)構成してもよい。
【0053】
検索装置100を独立した装置として構成する場合には、PLCと同様のハードウェア構成を採用してもよいし、汎用的なコンピュータを採用してもよい。汎用的なコンピュータを採用する場合には、コンピュータのプロセッサが検索プログラムを実行することで実現される。
【0054】
図4は、本実施の形態に係る検索装置100のハードウェア構成の一例を示すブロック図である。
図4を参照して、検索装置100は、プロセッサ152と、メインメモリ154と、ストレージ156と、上位ネットワークコントローラ158と、入力部160と、表示部162と、下位ネットワークコントローラ164と、メモリカードインターフェイス166とを含む。これらのコンポーネントは、プロセッサバス170を介して接続されている。
【0055】
プロセッサ152は、後述するような各種処理を実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ152は、ストレージ156に格納されたプログラムを読出して、メインメモリ154に展開して実行することで、累積稼動時間監視機能を実現するための各種処理を実行する。
【0056】
メインメモリ154は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ156は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。ストレージ156には、本実施の形態に係る検索処理を実現するための検索プログラム1560と、OS(Operating System)などを含むシステムプログラム1562とが格納される。ストレージ156には、さらに、プロファイルデータベース104が格納されてもよい。
【0057】
入力部160は、タッチパネル、マウス、キーボードなどで構成され、ユーザ操作を受付ける。表示部162は、液晶ディスプレイなどで構成され、プロセッサ152による処理結果に応じた画像などを表示する。入力部160および表示部162が一体化して構成されてもよい。
【0058】
上位ネットワークコントローラ158は、ネットワーク接続された任意の情報処理装置からのデータ検索クエリなどを受付ける。下位ネットワークコントローラ164は、検索対象2に含まれるPLC200などとの間でデータを遣り取りする。
【0059】
メモリカードインターフェイス166は、着脱可能な記録媒体の一例であるメモリカード168を受付ける。メモリカードインターフェイス166は、メモリカード168に対してデータを書込み、メモリカード168から各種データを読出すことが可能になっている。
【0060】
図4には、プロセッサ152が検索プログラム1560を実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0061】
<D.検索装置100の機能構成例>
次に、本実施の形態に係る制御システム1を構成する検索装置100の機能構成例について説明する。
【0062】
図5は、本実施の形態に係る検索装置100の機能構成の一例を示すブロック図である。
図5を参照して、検索装置100は、主たる機能構成として、インターフェイス102と、プロファイルデータベース104と、クエリ処理部106と、通信処理部108と、データ成形部110とを含む。
【0063】
インターフェイス102は、クエリ要求元との間でデータを遣り取りし、クエリ入力部1021と、結果出力部1022とを含む。
【0064】
クエリ入力部1021は、外部のクエリ供給元からデータ検索クエリを受付ける。クエリ入力部1021は、例えば、Webサーバ(httpdプロセス)等を用いて実装されてもよい。結果出力部1022は、データ成形部110により成形されたデータをクエリ要求元に返信する。結果出力部1022についても、例えば、Webサーバ(httpdプロセス)等を用いて実装されてもよい。データ検索クエリは、上述したような、SQL言語で記述されたものであってもよいし、RESTに準拠した形式で記述されたものであってもよい。
【0065】
クエリ処理部106は、データ検索クエリをジョブとして出力する。ここで、「ジョブ」は、データ検索クエリ毎に発行される処理単位を意味する。
【0066】
通信処理部108は、ジョブ管理部1081と、ジョブ処理部1082とを含む。
ジョブ管理部1081は、クエリ処理部106からのジョブの受付け、各ジョブに設定された優先度に応じて、データ検索クエリに従う検索処理を管理する。ジョブ管理部1081は、ジョブを並列かつ非同期に処理する。ジョブ管理部1081は、必要に応じて、再送処理なども実行する。
【0067】
通信処理部108は、ジョブ管理部1081により管理されるジョブに従って、必要な通信処理を実行する。具体的には、通信処理部108は、検索対象2において対象デバイスまでの経路に用いられている通信プロトコルに従って、パケットを生成する。このパケットの生成においては、後述するようなフィルタリングによって、通信処理を最適化する。通信処理部108は、生成したパケットの送受信を実行する。このとき、送信されるパケット(以下、「リクエストパケット」とも称す。)および受信されるパケット(以下、「レスポンスパケット」とも称す。)の一部または全部を一時的に格納するキャッシュが使用されてもよい。さらに、通信処理部108は、受信されたパケットに含まれるデータを解析するとともに、解析によって得られたデータを必要に応じてフィルタリング、ソート、ランキング(ソート順の計算)を実行する。
【0068】
通信処理部108は、プロファイルデータベース104を参照して、リクエストパケットを生成する。
【0069】
データ成形部110は、受信されたデータを指定された出力形式のデータフォーマットに変換する。データフォーマットの一例としては、CSV形式、JSON形式、バイナリ形式、テキスト形式、XML形式などが挙げられる。なお、データフォーマットの指定がない場合には、予め定められたデータフォーマットに変換するようにしてもよい。
【0070】
データ検索クエリを送信する外部装置は、ユーザインターフェイス730を有している。ユーザインターフェイス730は、ユーザ操作に従って、データ検索クエリを生成するとともに、当該生成されたデータ検索クエリを検索装置100へ送信する。また、ユーザインターフェイス730は、検索装置100からの検索結果を指定された態様でユーザへ提示する。
【0071】
図5に示すように、プロファイルデータベース104は、構成情報1041と、デバイスプロファイル1042と、索引1043とを含む。
【0072】
構成情報1041は、検索対象2に含まれる制御システムのデバイスの接続関係を示す情報を含む。具体的には、構成情報1041は、ネットワークトポロジ、各デバイスのアドレス情報、および、各ネットワークの通信プロトコルなどを規定する情報を含む。構成情報1041は、物理的または仮想的なネットワークトポロジや、ユニット構成に関する情報(アドレス、形式、通信帯域など)を含むようにしてもよい。
【0073】
構成情報1041は、予め静的に設定されていてもよいし、ネットワーク構成の変化に応じて、動的に変化するようにしてもよい。
【0074】
図6は、本実施の形態に係る検索装置100の構成情報1041により規定されるネットワークトポロジの一例を示す模式図である。
図6(a)は、EtherCATのネットワークに接続されるデバイスのネットワークトポロジの一例を示す図である。
図6(b)は、EtherNet/IPのネットワークに接続されるデバイスのネットワークトポロジの一例を示す図である。
【0075】
図6(a)および
図6(b)に示すように、構成情報1041は、各ネットワークに接続されているデバイスの数および各デバイスに割り当てられるアドレスなどを規定する。
【0076】
なお、構成情報1041においてネットワーク構成を規定するデータ形式およびデータ構造は任意のものを採用できる。
【0077】
再度
図5を参照して、デバイスプロファイル1042は、各デバイスの特性を示す情報を含む。具体的には、デバイスプロファイル1042は、デバイス内のメモリマップ、オブジェクト仕様、型情報、取得可能なデータ(属性)、スケーリングなどを含む。デバイスプロファイル1042は、さらに、サポートするサービスを特定する情報や、データのフォーマット情報(スケーリング)などを含む。このように、デバイスプロファイル1042は、ネットワーク、ベンダ、形式によって応じて定まる静的な情報を含む。
【0078】
デバイスプロファイル1042は、予め各デバイスのプロファイルを任意の方法で取得しておいてもよいし、各デバイスから直接ネットワークを介して取得してもよい。デバイスプロファイル1042としては、例えば、EtherCAT規格によれば、ESI(EtherCAT Slave Information)ファイルなどを用いることができ、EtherNet/IPの規格によれば、EDS(Electronic Data Sheets)ファイルなどを用いることができる。
【0079】
索引1043は、検索を効率化するために用いられる情報であり、制御システム1に含まれる各デバイスの状態値を示す情報を含む。具体的には、索引1043は、デバイスの属性値および個体識別番号(シリアル番号やMACアドレスなど)を含む。索引1043は、典型的には、動的に生成されることになるが、事前に静的に生成したものを採用してもよい。索引1043は、検索対象2において変化が相対的に少ない情報をキャッシュすることで、通信を効率化するために用いられる。
【0080】
索引1043は、さらに、PLC名、累積稼働時間(時間単位あるいは分単位)、エラーの有無、ユーザプログラム更新時間、メモリ使用量(空き容量)、メモリカードの空き容量などの各デバイスの状態値を示す情報を含めてもよい。索引1043には、さらに時間的な変化(変更履歴)を含めるようにしてもよい。
【0081】
なお、索引1043は、検索の効率化のために用いられる情報であり、必ずしも必要ではなく、状況に応じて実装すればよい。
【0082】
<E.検索装置100における処理の具体例>
次に、本実施の形態に係る制御システム1における検索処理のいくつかの具体例について説明する。
【0083】
(e1:検索処理例その1)
図7および
図8は、本実施の形態に係る制御システム1における検索処理例その1を説明するための図である。
【0084】
図7を参照して、検索装置100に接続される検索対象2は、PLC200と、PLC200とEtherCATのネットワークを介して3つのスレーブ(デバイス300-1,300-2,300-3)が接続されているとする。デバイス300-1は、カプラユニットであり、ローカルバスを介していくつかのローカルユニットが接続されている。
【0085】
検索処理例その1として、「デバイス300-1とローカルバスを介して接続されているローカルユニットのうち、アドレス「#5」のローカルユニットであるデバイス300-4が保持しているデータを収集する」例を示す。なお、デバイス300-4は、センサまたはアクチュエータとの間でデータを遣り取りするIO-Link(図示しない)のマスタユニットであるとし、当該IO-Linkにおける異常(一例として、光量低下)の情報を保持しているとする。
【0086】
デバイス300-4が保持するデータを収集するためには、リクエストパケットを、検索装置100からPLC200までの第1経路502、PLC200からデバイス300-1(カプラユニット)までの第2経路504、デバイス300-1からデバイス300-4までの第3経路506の順で順次転送しなければならない。
【0087】
ネットワーク階層設定500に示すように、例えば、第1経路502では、TCP/IP上に実装されるHTTPでデータ転送が行われ、このようなデータ転送は「ecat_sys.cgi」という通信プログラムにより実現される。第2経路504では、EtherCAT上に実装されるVoEというプロトコルでデータ転送が行われ、このようなデータ転送は「MailBox」という通信プログラムにより実現される。第3経路506では、Local Bus上に実装される「LBP」というプロトコルでデータ転送が行われ、このようなデータ転送は「Unit Application」という通信プログラムにより実現される。
【0088】
このような複数の階層に亘ってパケットを転送しなければならないため、検索装置100は、構成情報1041を参照して、対象デバイスの接続位置に到達するためにリクエストパケットを生成する。このように、検索装置100の通信処理部108は、構成情報1041を参照して、対象デバイスまでの経路を特定するとともに、特定した経路に対応するプロトコルに応じたパケットを生成する。
【0089】
図7に示す例においては、第1経路502から第2経路504へパケットが転送される場合には、HTTPからVoEに変換する必要があり、第2経路504から第3経路506へパケットが転送される場合には、VoEからLBPに変換する必要がある。
【0090】
データ検索クエリ600は、デバイス300-4からのデータを収集するための命令をSQL言語で記述した例である。検索装置100は、データ検索クエリ600を受けて、リクエストパケット400を生成する。リクエストパケット400は、第1経路用パケット402と、第2経路用パケット404と、第3経路用パケット406とを含む。
【0091】
すなわち、検索装置100の通信処理部108は、対象デバイスまでの経路に応じてそれぞれ生成されるパケット402,404,406をカプセル化してリクエストパケット400を生成する。このように、複数のプロトコルに従うコマンドをカプセル化したリクエストパケットが生成される。
【0092】
リクエストパケット400は、さらに、デバイス300-4からデータを読出すためのコマンド408を含む。このとき、検索装置100の通信処理部108は、デバイスプロファイル1042を参照して、対象デバイスからデータ検索クエリにより指定されたデータを収集するためのコマンド408をリクエストパケット400に含めるようにしてもよい。
【0093】
図8を参照して、SQL言語で記述したデータ検索クエリ600は、RESTに準拠したデータ検索クエリは602として記述することもできる。いずれの表現形式で記述した場合であっても、データを収集する対象デバイス300-4のネットワーク上の接続位置を特定するための情報(データ検索クエリ600,602の「1」,「2」,「3」の部分)が含まれている。また、データ検索クエリ600,602は、収集すべきデータの種類を特定するための情報(データ検索クエリ600,602の「4」の部分)も含む。
【0094】
以下、データ検索クエリ600,602の「1」,「2」,「3」,「4」の部分がどのように解析されて、リクエストパケット400が生成されるのかについて説明する。
【0095】
データ検索クエリ600,602の「1」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEIP階層構成情報を参照して、データ検索クエリにおいて指定された「Machine1」がIPアドレスとして「192.168.250.1」をもつコントローラであることを特定するとともに、コントローラがEtherCATのネットワークとして「ECAT」を有していることを特定する(解析処理412)。
【0096】
また、検索装置100は、デバイスプロファイル1042を参照して、ネットワーク「ECAT」への通信は、アプリケーション「ecat_sys.cgi」へコマンドを発行することで実現できることを特定する(解析処理413)。
【0097】
検索装置100は、解析処理412および解析処理413による特定結果に基づいて、第1経路用パケット402を生成する。
【0098】
データ検索クエリ600,602の「2」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEtherCAT階層構成情報を参照して、データ検索クエリにおいて指定された「node1」がEtherCATのアドレスとして「#1」をもつデバイスあることを特定する(解析処理414)。
【0099】
また、検索装置100は、デバイスプロファイル1042を参照して、EtherCATのスレーブへの通信は「VoE」であることを特定する(解析処理415)。
【0100】
検索装置100は、解析処理414および解析処理415による特定結果に基づいて、第2経路用パケット404を生成する。第2経路用パケット404は、第1経路用パケット402に組込まれる。
【0101】
データ検索クエリ600,602の「3」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるローカルバス構成情報を参照して、データ検索クエリにおいて指定された「unit5」がUnitアドレス「#5」をもつデバイスであることを特定する(解析処理416)。
【0102】
また、検索装置100は、デバイスプロファイル1042を参照して、ローカルバスによるデバイス300-4への通信は「LBP」でのルーチングであることを特定する(解析処理417)。
【0103】
検索装置100は、解析処理416および解析処理417による特定結果に基づいて、第3経路用パケット406を生成する。第3経路用パケット406は、第2経路用パケット404に組込まれる。
【0104】
データ検索クエリ600,602の「4」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるローカルバス構成情報を参照して、Unitアドレス「#5」をもつデバイスは「IO-Linkマスタ」であることを特定する(解析処理418)。
【0105】
また、検索装置100は、デバイスプロファイル1042を参照して、デバイス300-4の「value1」は、オフセットが「0x0080」の2byteデータであり、「Read」コマンドによって読出すことができることを特定する(解析処理419)。
【0106】
検索装置100は、解析処理418および解析処理419による特定結果に基づいて、コマンド408を生成する。コマンド408は、第3経路用パケット406に組込まれる。
【0107】
以上のような一連の解析処理によって、リクエストパケット400が生成される。
(e2:検索処理例その2)
図9および
図10は、本実施の形態に係る制御システム1における検索処理例その2を説明するための図である。
【0108】
図9を参照して、検索装置100に接続される検索対象2は、PLC200と、PLC200とEtherCATのネットワークを介して3つのスレーブ(デバイス300-1,300-2,300-3)が接続されているとする。
【0109】
検索処理例その2として、「PLC200とEtherCATのネットワークを介して接続されているIO-Linkマスタであるスレーブのすべてからサイクルタイムを収集する」例を示す。
【0110】
IO-Linkマスタであるスレーブのすべてからデータを収集するためには、リクエストパケットを、検索装置100からPLC200までの第1経路512およびPLC200から各スレーブまでの第2経路514の順で順次転送しなければならない。
【0111】
ネットワーク階層設定510に示すように、例えば、第1経路512では、TCP/IP上に実装されるHTTPでデータ転送が行われ、このようなデータ転送は「ecat_sys.cgi」という通信プログラムにより実現される。第2経路514では、EtherCAT上に実装されるCoEというプロトコルでデータ転送が行われ、このようなデータ転送は「Object Dictionary」という通信プログラムにより実現される。このような複数の階層に亘ってパケットを転送しなければならず、検索装置100は、複数のプロトコルに従うコマンドをカプセル化したリクエストパケットを生成する。すなわち、第1経路512から第2経路514へパケットが転送される場合には、HTTPからCoEに変換する必要がある。
【0112】
データ検索クエリ610は、IO-Linkマスタであるスレーブのすべてからデータを収集するための命令をSQL言語で記述した例である。検索装置100は、データ検索クエリ610を受けて、リクエストパケット420を生成する。検索処理例その2においては、EtherCATのネットワークに接続されるスレーブに設定可能なアドレス範囲(通常は、#1~#254)のすべてについて、リクエストパケット420が繰り返し生成される。
【0113】
リクエストパケット420は、第1経路用パケット422と、第2経路用パケット424とを含む。リクエストパケット420は、さらに、IO-Linkマスタからサイクルタイムを読出すためのコマンド426を含む。
【0114】
図10を参照して、SQL言語で記述したデータ検索クエリ610は、RESTに準拠したデータ検索クエリは612として記述することもできる。いずれの表現形式で記述した場合であっても、データを収集する対象デバイス300を特定するための情報(データ検索クエリ610,612の「1」,「2」の部分)が含まれている。また、データ検索クエリ610,612は、収集すべきデータの種類を特定するための情報(データ検索クエリ610,612の「3」の部分)も含む。
【0115】
以下、データ検索クエリ610,612の「1」,「2」,「3」の部分がどのように解析されて、リクエストパケット420が生成されるのかについて説明する。
【0116】
データ検索クエリ610,612の「1」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEIP階層構成情報を参照して、データ検索クエリにおいて指定された「Machine1」がIPアドレスとして「192.168.250.1」をもつコントローラであることを特定するとともに、コントローラがEtherCATのネットワークとして「ECAT」を有していることを特定する(解析処理432)。
【0117】
また、検索装置100は、デバイスプロファイル1042を参照して、ネットワーク「ECAT」への通信は、アプリケーション「ecat_sys.cgi」へコマンドを発行することで実現できることを特定する(解析処理433)。
【0118】
検索装置100は、解析処理432および解析処理433による特定結果に基づいて、第1経路用パケット422を生成する。
【0119】
データ検索クエリ610,612の「2」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEtherCAT階層構成情報を参照して、データ検索クエリにおいて指定された「node*」がEtherCATのスレーブすべて(設定可能なアドレスすべて)を意味することを特定する(解析処理434)。
【0120】
また、検索装置100は、デバイスプロファイル1042を参照して、EtherCATのスレーブへの通信は「CoE」であることを特定するとともに、スレーブがIO-Linkマスタであれば「CoE」を発行することを特定する(解析処理435)。
【0121】
検索装置100は、解析処理434および解析処理435による特定結果に基づいて、第2経路用パケット424を生成する。第2経路用パケット424は、第1経路用パケット422に組込まれる。
【0122】
データ検索クエリ610,612の「3」の部分については、検索装置100は、デバイスプロファイル1042を参照して、IO-Linkマスタの「Cycle_Time」のメモリアドレスは「0x0834」であることを特定する(解析処理436)。
【0123】
検索装置100は、解析処理436による特定結果に基づいて、コマンド426を生成する。コマンド426は、第2経路用パケット424に組込まれる。
【0124】
以上のような一連の解析処理によって、リクエストパケット420が生成される。リクエストパケット420の生成は、EtherCATのネットワークに接続されるスレーブに設定可能なアドレス範囲のすべてについて繰り返される。ただし、各スレーブがIO-Linkマスタであるか否かが判断されるため、現実にリクエストパケット420が生成されるのは、IO-Linkマスタのスレーブと同数だけになる。
【0125】
(e3:検索処理例その3)
図11は、本実施の形態に係る制御システム1における検索処理例その3を説明するための図である。
図11に示す検索処理例その3は、上述の
図9および
図10に示す検索処理例その2に対して、検索条件をさらに付加したものであるので、検索処理例その2と同様の処理については、同一の参照符号を付与している。
【0126】
検索処理例その3として、「PLC200とEtherCATのネットワークを介して接続されているAAA製のIO-Linkマスタであるスレーブのすべてからサイクルタイムを収集する」例を示す。ここで、「AAA」はスレーブの製造メーカ名またはベンダ名であるとする。
【0127】
このような検索処理は、SQL言語で記述したデータ検索クエリ620のように定義できる。あるいは、SQL言語で記述したデータ検索クエリ620は、RESTに準拠したデータ検索クエリは622として記述することもできる。いずれの表現形式で記述した場合であっても、データを収集する対象デバイス300を特定するための情報(データ検索クエリ620,622の「1」,「2」の部分)が含まれている。また、データ検索クエリ620,622は、収集すべきデータの種類を特定するための情報(データ検索クエリ620,622の「3」の部分)も含む。
【0128】
以下、データ検索クエリ620,622の「1」,「2」,「3」の部分がどのように解析されて、リクエストパケット420が生成されるのかについて説明する。
【0129】
データ検索クエリ620,622の「1」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEIP階層構成情報を参照して、データ検索クエリにおいて指定された「Machine1」がIPアドレスとして「192.168.250.1」をもつコントローラであることを特定するとともに、コントローラがEtherCATのネットワークとして「ECAT」を有していることを特定する(解析処理432)。
【0130】
また、検索装置100は、デバイスプロファイル1042を参照して、ネットワーク「ECAT」への通信は、アプリケーション「ecat_sys.cgi」へコマンドを発行することで実現できることを特定する(解析処理433)。
【0131】
検索装置100は、解析処理432および解析処理433による特定結果に基づいて、第1経路用パケット422を生成する。
【0132】
データ検索クエリ620,622の「2」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEtherCAT階層構成情報を参照して、データ検索クエリにおいて指定された「node*」がEtherCATのスレーブすべて(設定可能なアドレスすべて)を意味することを特定する(解析処理434)。
【0133】
また、検索装置100は、デバイスプロファイル1042を参照して、EtherCATのスレーブへの通信は「CoE」であることを特定するとともに、スレーブがAAA製のIO-Linkマスタであれば「CoE」を発行することを特定する(解析処理435A)。
【0134】
検索装置100は、解析処理434および解析処理435Aによる特定結果に基づいて、第2経路用パケット424を生成する。第2経路用パケット424は、第1経路用パケット422に組込まれる。
【0135】
データ検索クエリ620,622の「3」の部分については、検索装置100は、デバイスプロファイル1042を参照して、IO-Linkマスタの「Cycle_Time」のメモリアドレスは「0x0834」であることを特定する(解析処理436)。
【0136】
検索装置100は、解析処理436による特定結果に基づいて、コマンド426を生成する。コマンド426は、第2経路用パケット424に組込まれる。
【0137】
以上のような一連の解析処理によって、リクエストパケット420が生成される。リクエストパケット420の生成は、EtherCATのネットワークに接続されるスレーブに設定可能なアドレス範囲のすべてについて繰り返される。ただし、各スレーブがAAA製のIO-Linkマスタであるか否かが判断されるため、現実にリクエストパケット420が生成されるのは、AAA製のIO-Linkマスタのスレーブと同数だけになる。
【0138】
(e4:検索処理例その4)
図12は、本実施の形態に係る制御システム1における検索処理例その4を説明するための図である。
図12に示す検索処理例その4は、上述の
図11に示す検索処理例その3に対して、検索条件をさらに付加したものであるので、検索処理例その3ならびに検索処理例その3が参照する検索処理例その2と同様の処理については、同一の参照符号を付与している。
【0139】
検索処理例その4として、「PLC200とEtherCATのネットワークを介して接続されているAAA製のIO-Linkマスタのうちスレーブであって、エラー発生中のスレーブのすべてからサイクルタイムを収集する」例を示す。
【0140】
このような検索処理は、SQL言語で記述したデータ検索クエリ630のように定義できる。あるいは、SQL言語で記述したデータ検索クエリ630は、RESTに準拠したデータ検索クエリは632として記述することもできる。いずれの表現形式で記述した場合であっても、データを収集する対象デバイス300を特定するための情報(データ検索クエリ630,632の「1」,「2」の部分)が含まれている。また、データ検索クエリ630,632は、収集すべきデータの種類を特定するための情報(データ検索クエリ630,632の「3」の部分)も含む。
【0141】
以下、データ検索クエリ630,632の「1」,「2」,「3」の部分がどのように解析されて、リクエストパケット420Aが生成されるのかについて説明する。検索処理例その4においては、「エラー発生中のスレーブ」との条件は、各デバイスに与えられるコマンド428に含まれることになる。
【0142】
データ検索クエリ630,632の「1」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEIP階層構成情報を参照して、データ検索クエリにおいて指定された「Machine1」がIPアドレスとして「192.168.250.1」をもつコントローラであることを特定するとともに、コントローラがEtherCATのネットワークとして「ECAT」を有していることを特定する(解析処理432)。
【0143】
また、検索装置100は、デバイスプロファイル1042を参照して、ネットワーク「ECAT」への通信は、アプリケーション「ecat_sys.cgi」へコマンドを発行することで実現できることを特定する(解析処理433)。
【0144】
検索装置100は、解析処理432および解析処理433による特定結果に基づいて、第1経路用パケット422を生成する。
【0145】
データ検索クエリ630,632の「2」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEtherCAT階層構成情報を参照して、データ検索クエリにおいて指定された「node*」がEtherCATのスレーブすべて(設定可能なアドレスすべて)を意味することを特定する(解析処理434)。
【0146】
また、検索装置100は、デバイスプロファイル1042を参照して、EtherCATのスレーブへの通信は「CoE」であることを特定するとともに、スレーブがAAA製のIO-Linkマスタであれば「CoE」を発行することを特定する(解析処理435A)。
【0147】
検索装置100は、解析処理434および解析処理435Aによる特定結果に基づいて、第2経路用パケット424を生成する。第2経路用パケット424は、第1経路用パケット422に組込まれる。
【0148】
データ検索クエリ620,622の「3」の部分については、検索装置100は、デバイスプロファイル1042を参照して、IO-Linkマスタの「Status_Data」のメモリアドレスは「0xF100」であることを特定する(解析処理437)。また、検索装置100は、デバイスプロファイル1042を参照して、IO-Linkマスタの「Cycle_Time」のメモリアドレスは「0x0834」であることを特定する(解析処理436)。
【0149】
検索装置100は、解析処理437および解析処理436による特定結果に基づいて、コマンド428を生成する。コマンド428は、「Status_Data」を読出すとともに、読出した「Status_Data」が「NoError」ではない、つまり「エラー発生中」である場合に限って、「Cycle_Time」を読出すように指示する命令を含む。コマンド428は、第2経路用パケット424に組込まれる。
【0150】
このように、検索装置100の通信処理部108は、データ検索クエリにおいて指定された検索条件に相当する命令を含むコマンド428を生成するようにしてもよい。
図12に示すコマンド428では、「エラー発生中」というフィルタリングを検索条件の一例として示しているが、これに限らず、ソートやランキング(ソート順の計算)といった任意の検索条件を組入ることができる。
【0151】
以上のような一連の解析処理によって、リクエストパケット420Aが生成される。リクエストパケット420Aの生成は、EtherCATのネットワークに接続されるスレーブに設定可能なアドレス範囲のすべてについて繰り返される。ただし、各スレーブがAAA製のIO-Linkマスタであるか否かが判断されるため、現実にリクエストパケット420が生成されるのは、AAA製のIO-Linkマスタのスレーブと同数だけになる。
【0152】
(e5:検索処理例その5)
図13は、本実施の形態に係る制御システム1における検索処理例その5を説明するための図である。
図13に示す検索処理例その5は、上述の
図11に示す検索処理例その3に対して、検索条件をさらに付加したものであるので、検索処理例その3ならびに検索処理例その3が参照する検索処理例その2と同様の処理については、同一の参照符号を付与している。
【0153】
検索処理例その5として、検索処理例その4と同様に、「PLC200とEtherCATのネットワークを介して接続されているAAA製のIO-Linkマスタのうちスレーブであって、エラー発生中のスレーブのすべてからサイクルタイムを収集する」例を示す。
【0154】
上述の検索処理例その4においては、「エラー発生中のスレーブ」との条件は、各デバイスに与えられるコマンド428に含まれていたが、検索処理例その5においては、索引1043を参照して、対象デバイス300(スレーブ)を事前に選択する処理例を示す。
【0155】
以下、データ検索クエリ630,632の「1」,「2」,「3」の部分がどのように解析されて、リクエストパケット420Aが生成されるのかについて説明する。検索処理例その4においては、「エラー発生中のスレーブ」との条件は、各デバイスに与えられるコマンド428に含まれることになる。
【0156】
データ検索クエリ630,632の「1」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEIP階層構成情報を参照して、データ検索クエリにおいて指定された「Machine1」がIPアドレスとして「192.168.250.1」をもつコントローラであることを特定するとともに、コントローラがEtherCATのネットワークとして「ECAT」を有していることを特定する(解析処理432)。
【0157】
また、検索装置100は、デバイスプロファイル1042を参照して、ネットワーク「ECAT」への通信は、アプリケーション「ecat_sys.cgi」へコマンドを発行することで実現できることを特定する(解析処理433)。
【0158】
検索装置100は、解析処理432および解析処理433による特定結果に基づいて、第1経路用パケット422を生成する。
【0159】
データ検索クエリ630,632の「2」の部分については、検索装置100は、プロファイルデータベース104の構成情報1041に含まれるEtherCAT階層構成情報を参照して、データ検索クエリにおいて指定された「node*」がEtherCATのスレーブすべて(設定可能なアドレスすべて)を意味することを特定する(解析処理434)。
【0160】
また、検索装置100は、デバイスプロファイル1042を参照して、EtherCATのスレーブへの通信は「CoE」であることを特定するとともに、スレーブがAAA製のIO-Linkマスタであれば「CoE」を発行することを特定する(解析処理435A)。
【0161】
また、検索装置100は、索引1043を参照して、「Status_Data」が「NoError」ではない、つまり「エラー発生中」であるスレーブを抽出する(解析処理438)。このように、検索装置100の通信処理部108は、各デバイスの状態値を示す情報である索引1043を参照して、データ検索クエリにおいて指定された検索条件に合致するデバイスを特定するようにしてもよい。
【0162】
検索装置100は、解析処理434および解析処理435Aに基づいて、第2経路用パケット424を生成する。ここで、生成される第2経路用パケット424は、解析処理438において抽出されたスレーブに対するもののみとなる。第2経路用パケット424は、第1経路用パケット422に組込まれる。
【0163】
データ検索クエリ620,622の「3」の部分については、検索装置100は、デバイスプロファイル1042を参照して、IO-Linkマスタの「Cycle_Time」のメモリアドレスは「0x0834」であることを特定する(解析処理436)。
【0164】
検索装置100は、解析処理436による特定結果に基づいて、コマンド426を生成する。コマンド426は、第2経路用パケット424に組込まれる。
【0165】
以上のような一連の解析処理によって、リクエストパケット420が生成される。検索処理例その5においては、リクエストパケット420は、「エラー発生中」のIO-Linkマスタのみに対して生成されるので、通信量を低減できる。
【0166】
<F.処理手順>
次に、本実施の形態に係る制御システム1における検索処理の処理手順を説明する。
【0167】
図14は、本実施の形態に係る制御システムにおける検索処理の処理手順を示すフローチャートである。
図14に示す各ステップは、典型的には、検索装置100のプロセッサ152が検索プログラム1560(
図4)を実行することで実現される。
【0168】
図14を参照して、検索装置100は、外部からのデータ検索クエリを受信したか否かを判断する(ステップS100)。データ検索クエリを受信していなければ(ステップS100においてNO)、ステップS100の処理が繰り返される。
【0169】
データ検索クエリを受信していれば(ステップS100においてYES)、検索装置100は、受信したデータ検索クエリを解析して対象デバイス300を特定する(ステップS102)とともに、特定した対象デバイス300の接続位置および対象デバイスまでの経路を特定する(ステップS104)。ステップS102においては、複数のデバイスが対象として特定される場合もある。
【0170】
検索装置100は、対象デバイス300までの経路のうち最上階層の経路を選択し(ステップS106)、構成情報1041を参照して、アドレスおよびプロトコルなどの情報を取得する(ステップS108)。また、検索装置100は、特定した対象デバイス300までの経路のうち最上階層の経路について、デバイスプロファイル1042を参照して、次の階層へのデータ転送に必要な情報を取得する(ステップS110)。そして、検索装置100は、ステップS108およびS110において取得した情報に基づいてパケットを生成する(ステップS112)。検索装置100は、先に生成されているパケットが存在する場合には、ステップS112において生成したパケットをカプセル化して、先に生成されているパケットに組込む。
【0171】
検索装置100は、先のステップS108~S112の処理によって、対象デバイス300までの経路のすべてについてのパケットが生成されたか否かを判断する(ステップS114)。対象デバイス300までの経路のすべてについてのパケットが生成されていなければ(ステップS114においてNO)、検索装置100は、対象デバイス300までの経路のうち次の経路を選択し(ステップS116)、ステップS108以下の処理を繰り返す。
【0172】
対象デバイス300までの経路のすべてについてのパケットが生成されていれば(ステップS114においてYES)、検索装置100は、デバイスプロファイル1042を参照して、データ検索クエリにおいて指定されたデータを収集するためのコマンド、および/または、データ検索クエリにおいて指定された検索条件に必要な情報を収集するためのコマンドを取得する(ステップS118)。そして、検索装置100は、先に生成されているパケットに取得したコマンドを組込む(ステップS120)。
【0173】
なお、ステップS120において、検索装置100は、データ検索クエリにおいて指定された検索条件に対応する命令を含むコマンドを生成することもある。
【0174】
そして、検索装置100は、ステップS120においてコマンドを組込んだパケットを検索対象2(対象デバイス300)に送信し(ステップS122)、当該対象デバイス300からのレスポンスパケットの受信を待つ(ステップS124)。
【0175】
検索装置100は、対象デバイス300からのレスポンスパケットを受信すると、受信したレスポンスパケットに含まれる検索結果をデータ検索クエリに対応する形式に成形し(ステップS126)、成形した検索結果をクエリ要求元に返信する(ステップS128)。なお、複数の受信したレスポンスパケットに対して、マージ処理やフィルタリング処理を行った上で、検索結果を生成するようにしてもよい。
【0176】
以上の処理によって、データ検索クエリに対する探索処理が完了する。
<G.クエリ要求元>
次に、本実施の形態に係る制御システム1に対してデータ検索クエリを生成および送信するクエリ要求元での処理例について説明する。
【0177】
(g1:データ検索クエリの生成)
データ検索クエリの要求元において、データ検索クエリは任意の形態で生成できる。例えば、ユーザ指示に応じて、SQL言語で記述されたデータ検索クエリを自動的に生成するようなアプリケーションプログラムを作成してもよい。このようなアプリケーションプログラムは、任意のプログラミング言語を用いて作成できる。
【0178】
また、任意のSQLクエリを生成できるアプリケーションを用いて、ユーザが任意のデータ検索クエリを作成するようにしてもよい。この場合、検索装置100と連携することで、プロファイルデータベース104に含まれる、構成情報1041、デバイスプロファイル1042、および索引1043の情報を参照して、データ検索クエリに記述可能な要素の一覧を表示できるようにしてもよい。この場合、ユーザが生成したデータ検索クエリに対する検索結果を当該アプリケーション上で表示するようにしてもよい。
【0179】
また、Webサーバ上に配置されたHTMLドキュメントをブラウザで表示するとともに、ユーザがブラウザを操作することで、RESTに準拠した形式で記述されたデータ検索クエリを生成するようにしてもよい。この場合、検索結果についても同一のブラウザ上に表示するようにしてもよい。
【0180】
(g2:検索結果の利用)
検索装置100がデータ検索クエリに応答して検索処理を実行することで得られる検索結果は、任意の形態で利用できる。
【0181】
例えば、検索結果を任意のアプリケーションを用いて表示または動作させることができる。例えば、Windows(登録商標)上で実行される任意のアプリケーションで利用することができる。
【0182】
さらに、Webアプリケーションとして実装してもよい。
図15および
図16は、本実施の形態に係る制御システム1を利用して提供されるWebアプリケーションの一例を説明するための図である。
図15を参照して、例えば、携帯端末あるいはパーソナルコンピュータ上で実行されるブラウザ700から検索装置100に対してリモートアクセスする。この場合、検索装置100にはWebサーバ112が実装されており、Webサーバ112が提供するHTMLドキュメントがブラウザ700で表示されてもよい。
【0183】
ユーザがブラウザ700を操作することで、ブラウザ700から検索装置100には、RESTに準拠した形式で記述されたデータ検索クエリが送信される。検索装置100がデータ検索クエリに応答して検索して得られた検索結果は、ブラウザ700上に表示されてもよい(HTMLドキュメント)。
【0184】
例えば、
図16(a)を参照して、検索装置100のWebサーバ112からは、検索対象2のネットワーク構成を示す模式図が表示されるとともに、ユーザが任意のデバイスあるいは異常メッセージを選択すると、データ検索クエリの生成および検索処理が実行され、
図16(b)に示すような形態でその検索結果を表示してもよい。
【0185】
なお、
図15に示す構成に代えて、Webサーバを検索装置100とは異なる処理主体に配置してもよい。
【0186】
図17は、本実施の形態に係る制御システム1を利用してWebアプリケーションを提供するための別の実装例を示す模式図である。
図17を参照して、例えば、検索対象2を統括するPLCなどにWebサーバ710を配置するとともに、携帯端末あるいはパーソナルコンピュータ上で実行されるブラウザ700からWebサーバ710に対してリモートアクセスする。Webサーバ710は、ブラウザ700からのアクセスに応答して、要求されたデータ検索クエリを生成する。例えば、データ検索クエリはJSON形式で生成されてもよい。
【0187】
このデータ検索クエリに対して、検索装置100は、検索処理を実行し、その検索結果をJSON形式で応答する。Webサーバ710は、検索装置100からの検索結果に基づいてHTMLドキュメントを生成し、ブラウザ700へ送信するようにしてもよい。
【0188】
データ検索クエリの生成方法および検索結果の利用形態については、上述したものに限られず、任意の方法および形態を採用できる。
【0189】
<H.その他の形態>
上述の実施の形態においては、検索装置100が一連の処理を実行する構成について説明したが、これに限られず、検索装置100が実行する処理を複数の処理主体で分散して実行するようにしてもよい。例えば、データ検索クエリの解析処理とリクエストパケットの生成処理とを異なる処理主体で実行してもよい。この場合、データ検索クエリの解析処理は、ネットワーク上のクラウドコンピュータで実行し、その解析結果に基づいて、検索対象2とネットワーク接続された検索装置がリクエストパケットを実際に対象デバイス300に送信するようにしてもよい。
【0190】
あるいは、検索対象2とネットワーク接続された検索装置がデータ検索クエリを解析し、その解析結果に基づいて、検索対象2内の任意のPLCがリクエストパケットを対象デバイス300に送信するようにしてもよい。
【0191】
これに限られず、検索対象2の構成または規模などに応じて、本実施の形態に係る検索機能は任意の形態で実装できる。
【0192】
また、本実施の形態に係る検索機能は、既存のPLCあるいはデバイスに対して、事後的にプログラムを追加する形で実装することもできる。この場合、事後的に追加されるプログラムが本発明の対象となり得る。
【0193】
<I.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
少なくとも1つのデバイス(300)からなる制御システム(1)であって、
前記制御システムのデバイスの接続関係を含む構成情報(1041)、および、各デバイスの特性を示す情報を含むデバイスプロファイル(1042)を保持するデータベース(104)と、
外部からのデータ検索クエリ(600)に応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケット(400)を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット(450)を受信する通信処理部(108)と、
前記通信処理部により受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形する成形部(110)とを備える、制御システム。
[構成2]
前記通信処理部は、前記構成情報を参照して、前記対象デバイスの接続位置に到達するために前記リクエストパケットを生成する、構成1に記載の制御システム。
[構成3]
前記通信処理部は、前記構成情報を参照して、前記対象デバイスまでの経路を特定するとともに、特定した経路に対応するプロトコルに応じたパケットを生成する、構成1または2に記載の制御システム。
[構成4]
前記通信処理部は、前記対象デバイスまでの経路に応じてそれぞれ生成されるパケット(402,404,406)をカプセル化して前記リクエストパケットを生成する、構成3に記載の制御システム。
[構成5]
前記通信処理部は、前記デバイスプロファイルを参照して、前記対象デバイスから前記データ検索クエリにより指定されたデータを収集するためのコマンド(408)を前記リクエストパケットに含める、構成1~4のいずれか1項に記載の制御システム。
[構成6]
前記通信処理部は、前記データ検索クエリにおいて指定された検索条件に相当する命令を含む前記コマンドを生成する、構成5に記載の制御システム。
[構成7]
前記データベースは、前記制御システムに含まれる各デバイスの状態値を示す情報(1043)をさらに保持しており、
前記通信処理部は、各デバイスの状態値を示す情報を参照して、前記データ検索クエリにおいて指定された検索条件に合致するデバイスを特定する、構成1~6のいずれか1項に記載の制御システム。
[構成8]
前記データ検索クエリは、SQL言語またはRESTに準拠した形式で記述されている、構成1に記載の制御システム。
[構成9]
少なくとも1つのデバイス(300)からなる制御システムに接続される検索装置(100)であって、
前記制御システムのデバイスの接続関係を含む構成情報(1041)、および、各デバイスの特性を示す情報を含むデバイスプロファイル(1042)を保持するデータベース(104)と、
外部からのデータ検索クエリ(600)に応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケット(400)を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット(450)を受信する通信処理部(108)と、
前記通信処理部により受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形する成形部(110)とを備える、検索装置。
[構成10]
少なくとも1つのデバイスからなる制御システム(1)に接続されるコンピュータ(100)で実行される検索プログラム(1560)であって、前記コンピュータに、
前記制御システムのデバイスの接続関係を含む構成情報(1041)、および、各デバイスの特性を示す情報を含むデバイスプロファイル(1042)をデータベース(104)に保持するステップと、
外部からのデータ検索クエリ(600)に応答して、前記データベースを参照して、当該データ検索クエリからリクエストパケット(400)を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット(450)を受信するステップ(S102~S124)と、
前記受信されたレスポンスパケットに含まれる検索結果を前記データ検索クエリに対応する形式に成形するステップ(S126)とを実行させる、検索プログラム。
【0194】
<J.利点>
本実施の形態に係る制御システムによれば、SQL言語やRESTに準拠した形式といった一般的な形式のデータ検索クエリを与えるだけで、対象デバイスに向けられるリクエストパケットが生成される。このように生成されるリクエストパケットを制御システム内で送信することによって、制御システム内の任意のデバイスの任意の情報を収集できる。
【0195】
データ検索クエリの要求元から見れば、制御システム内のネットワークトポロジやプロトコルの相違などを意識することなく、任意の条件に合致するデバイスから、任意のデータを収集できる。これによって、汎用的なアプリケーションに利用できる。
【0196】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0197】
1 制御システム、2 検索対象、100 検索装置、102 インターフェイス、104 プロファイルデータベース、106 クエリ処理部、108 通信処理部、110 データ成形部、112,710 Webサーバ、152 プロセッサ、154 メインメモリ、156 ストレージ、158 上位ネットワークコントローラ、160 入力部、162 表示部、164 下位ネットワークコントローラ、166 メモリカードインターフェイス、168 メモリカード、170 プロセッサバス、200 PLC、300 デバイス、302 作業領域、304 プロファイル、306 データソース、400,420,420A リクエストパケット、402,422 第1経路用パケット、404,424 第2経路用パケット、406 第3経路用パケット、408,426,428 コマンド、412,413,414,415,416,417,418,419,432,433,434,435,435A,436,437,438 解析処理、450 レスポンスパケット、500,510 ネットワーク階層設定、502,512 第1経路、504,514 第2経路、506 第3経路、600,602,610,612,620,622,630,632 データ検索クエリ、650 検索結果、700 ブラウザ、730 ユーザインターフェイス、1021 クエリ入力部、1022 結果出力部、1041 構成情報、1042 デバイスプロファイル、1043 索引、1081 ジョブ管理部、1082 ジョブ処理部、1560 検索プログラム、1562 システムプログラム。