(57)【要約】【課題】制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集可能な構成を提供する。【解決手段】制御システムは、各デバイスの状態を示す情報を含むインデックスを保持するデータベースと、外部からのデータ検索要求に応答して、インデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力する検索収集部と、制御システムに含まれるデバイスの状態を示す情報を収集してインデックスの内容を更新する自動更新部とを含む。【選択図】図１
2020013224.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのデバイスからなる制御システムであって、
各デバイスの状態を示す情報を含むインデックスを保持するデータベースと、
外部からのデータ検索要求に応答して、前記インデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力する検索収集部と、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新する自動更新部とを備える、制御システム。
【請求項２】
前記検索収集部は、前記インデックスを参照して、前記データ検索要求に含まれる検索条件に合致するデバイスを決定する、請求項１に記載の制御システム。
【請求項３】
前記インデックスは、各デバイスにエラーが発生しているか否かの情報を含む、請求項１または２に記載の制御システム。
【請求項４】
前記インデックスは、予め定められた条件に合致するデバイスの集合を示す情報を含む、請求項１〜３のいずれか１項に記載の制御システム。
【請求項５】
前記データベースは、前記制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルをさらに保持し、
前記自動更新部は、前記構成情報および前記デバイスプロファイルを参照して、前記制御システムに含まれる各デバイスから状態を示す情報を収集する方法を決定する、請求項１〜４のいずれか１項に記載の制御システム。
【請求項６】
前記自動更新部は、情報の収集対象のネットワークがバス型またはデイジーチェーン型の形態で接続されている場合に、当該ネットワークのマスタとして機能するデバイスから、当該ネットワークに接続される各デバイスの状態を示す情報を収集する、請求項５に記載の制御システム。
【請求項７】
前記自動更新部は、情報の収集対象のネットワークがスター型の形態で接続されている場合に、当該ネットワークに情報の送信を要求するメッセージをブロードキャストすることで、当該ネットワークに接続される各デバイスの状態を示す情報を収集する、請求項５または６に記載の制御システム。
【請求項８】
前記データ検索要求は、ＳＱＬ言語またはＲＥＳＴに準拠した形式で記述されている、請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
少なくとも１つのデバイスからなる制御システムに接続される検索装置であって、
各デバイスの状態を示す情報を含むインデックスを保持するデータベースと、
外部からのデータ検索要求に応答して、前記インデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力する検索収集部と、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新する自動更新部とを備える、検索装置。
【請求項１０】
少なくとも１つのデバイスからなる制御システムに接続されるコンピュータで実行される検索プログラムであって、前記コンピュータに、
外部からのデータ検索要求に応答して、各デバイスの状態を示す情報を含むインデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力するステップと、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新するステップとを実行させる、検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム内の任意のデバイスの任意の情報を収集可能な制御システム、検索装置および検索プログラムに関する。
【背景技術】
【０００２】
ＦＡ（ファクトリオートメーション）の分野では、ＰＬＣ（プログラマブルロジックコントローラ）などの制御装置を用いて設備や機械などの制御対象を制御することが一般的である。
【０００３】
近年のＩＣＴ（Information and Communication Technology）の進歩やＩｏＴ（Internet of Things）の注目などに伴って、制御装置により制御されるフィールドレベルのデータを収集したいというニーズが高まっている。
【０００４】
このような制御装置が扱うデータを上位システムに提供するような構成例として、例えば、特開平０５−２６５９５２号公報（特許文献１）は、分散ＣＩＭシステムを開示する。特許文献１に開示される分散ＣＩＭシステムは、下位ネットワークと上位ネットワークとの間で全レイヤのプロトコル変換を行うと共に、アプリケーションサーバ、ファイルサーバ及びマンマシンインタフェース端末が扱う情報と下位ネットワークの各種制御機器が扱う情報とのデータ変換を行うアプリケーションゲートウェイを有している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０５−２６５９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特開平０５−２６５９５２号公報に開示される構成においては、アプリケーションゲートウェイは、プロトコル変換およびデータ変換を行うことになる。このようなデータ変換は、アプリケーションサーバなどで実行される処理の種類などに応じた処理とする必要があり、汎用性を高めることができない。また、ネットワーク内の構成およびネットワーク内のデバイスの状態は適宜変化し得る。
【０００７】
本発明の一つの目的は、制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集可能な構成を提供することである。
【課題を解決するための手段】
【０００８】
本発明の一つの実施の形態によれば、少なくとも１つのデバイスからなる制御システムが提供される。制御システムは、各デバイスの状態を示す情報を含むインデックスを保持するデータベースと、外部からのデータ検索要求に応答して、インデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力する検索収集部と、制御システムに含まれるデバイスの状態を示す情報を収集してインデックスの内容を更新する自動更新部とを含む。
【０００９】
本開示によれば、自動更新部が各デバイスの状態を示す情報を含むインデックスの内容を更新するので、インデックスを参照して生成されるリクエストパケットを制御システムの現在の状態に応じたものにできる。これによって、制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集可能となる。
【００１０】
上述の開示において、検索収集部は、インデックスを参照して、データ検索要求に含まれる検索条件に合致するデバイスを決定するようにしてもよい。
【００１１】
本開示によれば、リクエストパケットを生成する対象のデバイスを事前に抽出できるので、制御システム内の通信量の肥大化を防止できる。
【００１２】
上述の開示において、インデックスは、各デバイスにエラーが発生しているか否かの情報を含むようにしてもよい。
【００１３】
本開示によれば、エラーが発生しているデバイスからは情報を収集したい場合が多いので、このような場合において、インデックスを参照することで、対象デバイスを事前に抽出できる。これによって、制御システム内の通信量の肥大化を防止できるとともに、必要な情報をより短時間で収集できる。
【００１４】
上述の開示において、インデックスは、予め定められた条件に合致するデバイスの集合を示す情報を含むようにしてもよい。
【００１５】
本開示によれば、特定の条件に合致するデバイスから必要な情報を収集したい場合などにおいて、対象のデバイスを効率的に選択できる。
【００１６】
上述の開示において、データベースは、制御システムのデバイスの接続関係を含む構成情報、および、各デバイスの特性を示す情報を含むデバイスプロファイルをさらに保持し、自動更新部は、構成情報およびデバイスプロファイルを参照して、制御システムに含まれる各デバイスから状態を示す情報を収集する方法を決定するようにしてもよい。
【００１７】
本開示によれば、制御システムのネットワーク構成に応じて、効率的に必要な情報を収集して、インデックスを更新できる。
【００１８】
上述の開示において、自動更新部は、情報の収集対象のネットワークがバス型またはデイジーチェーン型の形態で接続されている場合に、当該ネットワークのマスタとして機能するデバイスから、当該ネットワークに接続される各デバイスの状態を示す情報を収集するようにしてもよい。本開示によれば、バス型またはデイジーチェーン型の形態において最適な情報収集を実現できる。
【００１９】
上述の開示において、自動更新部は、情報の収集対象のネットワークがスター型の形態で接続されている場合に、当該ネットワークに情報の送信を要求するメッセージをブロードキャストすることで、当該ネットワークに接続される各デバイスの状態を示す情報を収集するようにしてもよい。本開示によれば、スター型の形態において最適な情報収集を実現できる。
【００２０】
上述の開示において、データ検索要求は、ＳＱＬ言語またはＲＥＳＴに準拠した形式で記述されていてもよい。本開示によれば、データ検索要求を汎用的なインターフェイスで利用できる。
【００２１】
本発明の別の実施の形態によれば、少なくとも１つのデバイスからなる制御システムに接続される検索装置が提供される。検索装置は、各デバイスの状態を示す情報を含むインデックスを保持するデータベースと、外部からのデータ検索要求に応答して、インデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力する検索収集部と、制御システムに含まれるデバイスの状態を示す情報を収集してインデックスの内容を更新する自動更新部とを含む。
【００２２】
本開示によれば、自動更新部が各デバイスの状態を示す情報を含むインデックスの内容を更新するので、インデックスを参照して生成されるリクエストパケットを制御システムの現在の状態に応じたものにできる。これによって、制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集可能となる。
【００２３】
本発明のさらに別の実施の形態によれば、少なくとも１つのデバイスからなる制御システムに接続されるコンピュータで実行される検索プログラムが提供される。検索プログラムは、コンピュータに、外部からのデータ検索要求に応答して、各デバイスの状態を示す情報を含むインデックスを参照してリクエストパケットを生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケットに含まれるデータを検索結果として出力するステップと、制御システムに含まれるデバイスの状態を示す情報を収集してインデックスの内容を更新するステップとを実行させる。
【００２４】
本開示によれば、自動更新部が各デバイスの状態を示す情報を含むインデックスの内容を更新するので、インデックスを参照して生成されるリクエストパケットを制御システムの現在の状態に応じたものにできる。これによって、制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集可能となる。
【発明の効果】
【００２５】
本発明によれば、制御システム内の状態変化に応じて、制御システム内の任意のデバイスの任意の情報を効率的に収集できる。
【図面の簡単な説明】
【００２６】
【図１】本実施の形態に係る制御システムの機能的な構成例を示す模式図である。
【図２】本実施の形態に係る制御システムが提供する検索収集機能および自動更新機能を説明するための模式図である。
【図３】本実施の形態に係る検索装置のハードウェア構成の一例を示すブロック図である。
【図４】本実施の形態に係る検索装置の構成情報により規定されるネットワークトポロジの一例を示す模式図である。
【図５】本実施の形態に係る検索装置が処理するデータ検索要求の一例を示す図である。
【図６】本実施の形態に係る検索装置によるリクエストパケットの生成処理例を説明するための図である。
【図７】本実施の形態に係る検索装置によるリクエストパケットの生成処理例を説明するための図である。
【図８】本実施の形態に係る制御システムにおける検索収集処理の処理手順を示すフローチャートである。
【図９】本実施の形態に係る検索装置によるインデックスを生成するためのネットワーク探索を説明するための図である。
【図１０】本実施の形態に係る制御システムにおけるインデックスの更新処理の処理手順を示すフローチャートである。
【図１１】本実施の形態に係る制御システムを利用して提供されるＷｅｂアプリケーションの一例を説明するための図である。
【図１２】本実施の形態に係る制御システムを利用して提供されるＷｅｂアプリケーションの一例を説明するための図である。
【図１３】本実施の形態に係る制御システムを利用してＷｅｂアプリケーションを提供するための別の実装例を示す模式図である。
【発明を実施するための形態】
【００２７】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２８】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御システム１の機能的な構成例を示す模式図である。図１を参照して、制御システム１は、少なくとも１つのデバイス３００を含む。制御システムを構成し得る単位の装置を意味する。「デバイス」は、後述するようなリクエストパケットに対して応答が可能な装置の単位を意味する。典型的には、「デバイス」は、ＩＯユニット、センサユニット、特殊ユニットなどのコントローラに接続され得るユニットを包含するとともに、ＰＬＣ（プログラマブルロジックコントローラ）およびネットワーク通信を中継するカプラユニットなども包含する。
【００２９】
制御システム１の各デバイス３００の状態を示す情報を含むインデックス１０４３を保持するデータベース１０４を含む。制御システム１は、さらに、外部からのデータ検索要求６００に応答して、インデックス１０４３を参照してリクエストパケット４００を生成して対象デバイス３００へ送信するとともに、対象デバイス３００からのレスポンスパケット４５０に含まれるデータを検索結果６５０として出力する検索収集部１０６を含む。
【００３０】
制御システム１は、さらに、制御システム１に含まれるデバイス３００の状態を示す情報を収集してインデックス１０４３の内容を更新する自動更新部１１０を有している。
【００３１】
本実施の形態に係る制御システム１によれば、制御システム１内の状態変化に応じて更新されるインデックス１０４３を参照することにより、制御システム１内の任意のデバイス３００の任意の情報を効率的に収集できる。
【００３２】
＜Ｂ．概要＞
まず、本実施の形態に係る制御システム１が提供する検索収集機能および自動更新機能について説明する。
【００３３】
図２は、本実施の形態に係る制御システム１が提供する検索収集機能および自動更新機能を説明するための模式図である。図２を参照して、制御システム１は、検索装置１００と、検索装置１００により検索可能な検索対象２とを含む。
【００３４】
検索対象２は、典型的には、制御対象を制御する制御装置の典型例であるＰＬＣ２００（プログラマブルロジックコントローラ）と、ＰＬＣ２００に接続される１または複数のデバイス３００とを含む。デバイス３００は、ＰＬＣ２００の管理によって動作する装置を意味し、典型的には、制御対象との間で信号を遣り取りする装置である。デバイス３００の一例としては、制御対象から入力信号を取得し、あるいは、制御対象へ出力信号を出力するＩＯユニット、モータなどを制御するドライバ、ロボットなどを制御するロボットコントローラなどを含む。なお、ＰＬＣ２００自体も「デバイス」の概念に含まれ得る。
【００３５】
デバイス３００の各々は、データを一時的に保持する作業領域３０２と、各デバイス３００の各種設定を規定するプロファイル３０４と、接続されているセンサなどから取得したデータを格納し、および／または、デバイス３００において生成されるデータを格納するデータソース３０６とを含む。
【００３６】
検索装置１００は、任意のデータ検索要求６００に応答して、当該データ検索要求６００に従って、検索対象２に含まれるＰＬＣ２００およびデバイス３００のうち任意のデバイスから任意のデータを収集し、検索結果６５０として出力する。検索装置１００は、検索対象２の任意のデバイスの任意の情報を応答できるので、外部に対しては、検索対象２の全体を単一のデータベースのように見せることができる。
【００３７】
検索装置１００は、任意のデバイスから任意のデータを収集するにあたって、予め収集された索引情報（以下、「インデックス」とも称す。）を参照する。検索装置１００は、インデックスを自動的に更新することもできる。
【００３８】
より具体的には、検索装置１００は、主たる機能構成として、インターフェイス１０２と、データベース１０４と、検索収集部１０６と、通信処理部１０８と、自動更新部１１０とを含む。
【００３９】
インターフェイス１０２は、データ検索要求６００の送信元との間でデータを遣り取りする。具体的には、インターフェイス１０２は、データ検索要求６００の送信元からデータ検索要求６００を受信すると、受信したデータ検索要求６００を検索収集部１０６へ出力する。また、インターフェイス１０２は、検索収集部１０６からのデータを検索結果６５０としてデータ検索要求６００の送信元へ送信する。
【００４０】
検索収集部１０６は、インターフェイス１０２から与えられたデータ検索要求６００を解析し、データベース１０４を参照して、必要なリクエストパケットを生成する。生成されたリクエストパケットは、通信処理部１０８から検索対象２のネットワークへ送信される。検索収集部１０６は、リクエストパケットに応答して返されるレスポンスパケットを通信処理部１０８から受信すると、レスポンスパケットに含まれるデータをインターフェイス１０２へ出力する。
【００４１】
通信処理部１０８は、検索対象２のネットワークおよび当該ネットワークに含まれるデバイスとの間でデータを遣り取りする。図２の構成例においては、通信処理部１０８は、検索対象２のネットワークを統括するＰＬＣ２００を介して、任意のデバイスとの間でデータ（パケット）を遣り取りする。
【００４２】
データベース１０４は、データ検索要求６００に従って、対象デバイスからデータを収集するためのパケットなどを生成するために必要な情報を格納している。より具体的には、データベース１０４は、構成情報１０４１と、デバイスプロファイル１０４２と、インデックス１０４３とを含む。構成情報１０４１は、検索対象２に含まれるデバイスの接続関係を示す情報を含む。デバイスプロファイル１０４２は、検索対象２に含まれる各デバイスの特性を示す情報を含む。インデックス１０４３は、検索を効率化するために用いられる情報であり、検索対象２に含まれる各デバイスの状態を示す情報を含む。
【００４３】
自動更新部１１０は、検索対象２のネットワーク内を巡回してデータを収集することで、データベース１０４に格納されている情報を都度更新する。自動更新部１１０は、主として、データベース１０４のインデックス１０４３を更新する。自動更新部１１０は、構成情報１０４１、および、デバイスプロファイル１０４２についても更新するようにしてもよい。
【００４４】
本実施の形態に係る制御システム１において、検索収集部１０６は、外部からのデータ検索要求６００に応答して、インデックス１０４３を参照してリクエストパケット４００を生成して対象デバイス３００へ送信するとともに、当該対象デバイス３００からのレスポンスパケット４５０に含まれるデータを検索結果６５０として出力する。自動更新部１１０は、制御システム１に含まれるデバイス３００の状態を示す情報を収集してインデックス１０４３の内容を更新する。このように、自動更新部１１０がインデックス１０４３を自動的に更新するので、検索収集部１０６は、検索対象２の状態に応じてリクエストパケットを生成できる。
【００４５】
＜Ｃ．検索装置１００のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する検索装置１００のハードウェア構成例について説明する。
【００４６】
検索装置１００は、検索対象２に含まれるＰＬＣ２００またはネットワークに接続される独立した装置として構成してもよいし、ＰＬＣ２００の一部として（すなわち、ＰＬＣ２００と一体化して）構成してもよい。
【００４７】
検索装置１００を独立した装置として構成する場合には、ＰＬＣと同様のハードウェア構成を採用してもよいし、汎用的なコンピュータを採用してもよい。汎用的なコンピュータを採用する場合には、コンピュータのプロセッサが検索プログラムを実行することで実現される。
【００４８】
図３は、本実施の形態に係る検索装置１００のハードウェア構成の一例を示すブロック図である。図３を参照して、検索装置１００は、プロセッサ１５２と、メインメモリ１５４と、ストレージ１５６と、上位ネットワークコントローラ１５８と、入力部１６０と、表示部１６２と、下位ネットワークコントローラ１６４と、メモリカードインターフェイス１６６とを含む。これらのコンポーネントは、プロセッサバス１７０を介して接続されている。
【００４９】
プロセッサ１５２は、後述するような各種処理を実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ１５２は、ストレージ１５６に格納されたプログラムを読出して、メインメモリ１５４に展開して実行することで、累積稼動時間監視機能を実現するための各種処理を実行する。
【００５０】
メインメモリ１５４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１５６は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。ストレージ１５６には、本実施の形態に係る検索収集処理を実現するための検索プログラム１５６０と、本実施の形態に係る自動更新処理を実現するための自動更新プログラム１５６２と、ＯＳ（Operating System）などを含むシステムプログラム１５６４とが格納される。ストレージ１５６には、さらに、データベース１０４が格納されてもよい。
【００５１】
入力部１６０は、タッチパネル、マウス、キーボードなどで構成され、ユーザ操作を受付ける。表示部１６２は、液晶ディスプレイなどで構成され、プロセッサ１５２による処理結果に応じた画像などを表示する。入力部１６０および表示部１６２が一体化して構成されてもよい。
【００５２】
上位ネットワークコントローラ１５８は、ネットワーク接続された任意の情報処理装置からのデータ検索要求６００などを受付ける。下位ネットワークコントローラ１６４は、検索対象２に含まれるＰＬＣ２００などとの間でデータを遣り取りする。
【００５３】
メモリカードインターフェイス１６６は、着脱可能な記録媒体の一例であるメモリカード１６８を受付ける。メモリカードインターフェイス１６６は、メモリカード１６８に対してデータを書込み、メモリカード１６８から各種データを読出すことが可能になっている。メモリカードインターフェイス１６６を介して、検索装置１００に、検索プログラム１５６０および自動更新プログラム１５６２をインストールするようにしてもよい。
【００５４】
図３には、プロセッサ１５２が検索プログラム１５６０を実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。
【００５５】
＜Ｄ．データベース１０４に格納される情報＞
次に、本実施の形態に係る検索装置１００のデータベース１０４に格納される各情報について詳述する。
【００５６】
（ｄ１：構成情報１０４１）
上述したように、構成情報１０４１は、検索対象２に含まれるデバイスの接続関係を示す情報を含む。具体的には、構成情報１０４１は、物理的または仮想的なネットワークトポロジ、各デバイスのアドレス情報、デバイス構成に関する情報（形式、通信帯域など）および、各ネットワークの通信プロトコルなどを規定する情報を含む。
【００５７】
構成情報１０４１は、予め静的に設定されていてもよいし、ネットワーク構成の変化に応じて、動的に変化するようにしてもよい。
【００５８】
図４は、本実施の形態に係る検索装置１００の構成情報１０４１により規定されるネットワークトポロジの一例を示す模式図である。図４（ａ）は、ＥｔｈｅｒＣＡＴ（登録商標）のネットワークに接続されるデバイスのネットワークトポロジの一例を示す図である。図４（ｂ）は、ＥｔｈｅｒＮｅｔ／ＩＰのネットワークに接続されるデバイスのネットワークトポロジの一例を示す図である。
【００５９】
図４（ａ）および図４（ｂ）に示すように、構成情報１０４１は、各ネットワークに接続されているデバイスの数および各デバイスに割り当てられるアドレスなどを規定する。
【００６０】
構成情報１０４１においてネットワーク構成を規定するデータ形式およびデータ構造は任意のものを採用できる。
【００６１】
（ｄ２：デバイスプロファイル１０４２）
上述したように、デバイスプロファイル１０４２は、検索対象２に含まれる各デバイスの特性を示す情報として、ネットワーク、ベンダ、形式によって応じて定まる静的な情報を含む。具体的には、デバイスプロファイル１０４２は、デバイス内のメモリマップ、オブジェクト仕様、型情報、取得可能なデータ（属性）、サポートするサービスを特定する情報、データのフォーマット情報（スケーリング）などを含む。
【００６２】
デバイスプロファイル１０４２は、予め各デバイスのプロファイルを任意の方法で取得しておいてもよいし、各デバイスから直接ネットワークを介して取得してもよい。デバイスプロファイル１０４２としては、例えば、ＥｔｈｅｒＣＡＴ規格によれば、ＥＳＩ（EtherCAT Slave Information）ファイルなどを用いることができ、ＥｔｈｅｒＮｅｔ／ＩＰの規格によれば、ＥＤＳ（Electronic Data Sheets）ファイルなどを用いることができる。
【００６３】
（ｄ３：インデックス１０４３）
インデックス１０４３は、検索を効率化するために用いられる情報であり、検索対象２に含まれる各デバイスの状態を示す情報（タグ）、および／または、所定条件（索引項目）を満たすデバイスのリストを含む。典型的には、検索装置１００の検索収集部１０６は、インデックス１０４３を参照して、データ検索要求６００に含まれる検索条件に合致するデバイス３００を決定する。
【００６４】
インデックス１０４３は、後述するように、自動更新部１１０によって自動的に更新されることになるが、インデックス１０４３に含まれる情報の一部は事前に静的に生成したものを採用してもよい。
【００６５】
（１）インデックス１０４３に含まれる各デバイスに関連付けて格納されるタグとしては、以下のようなものが挙げられる。
【００６６】
・ＰＬＣ、ＨＭＩ、サーボドライバ、ＩＯユニットといった各デバイスの機器種類
・各デバイスに付与されるコントローラ名
・ユーザプログラムの更新者（ユーザ名）、更新日
・リレー動作回数
（２）インデックス１０４３に含まれる索引項目としては、以下のようなものが挙げられる。
【００６７】
・累積稼働時間が予め定められた値以上のデバイス（累積稼働時間は、各デバイスの稼動開始時刻からの経過時間などに基づいて算出される）
・モードがＲＵＮモード（あるいは、デバッグモード、メンテナンスモードなど）のデバイス
・直近の所定期間内にユーザプログラムが更新されたデバイス
・直近の所定期間内に設定が変更されたデバイス
・直近の所定期間内において負荷が相対的に高いデバイス
・直近の所定期間内において表示装置（ＨＭＩ：Human Machine Interface）から問合せ（リクエスト）を受けたデバイス
なお、各デバイスのモードは、ネットワークのマスタが管理しているので、常に最新情報を取得できる。このように、インデックス１０４３としては、予め定められた条件に合致するデバイスの集合を示す情報を含めるようにしてもよい。
【００６８】
（３）インデックス１０４３において、各デバイスのタグとして付加する情報としては、以下のようなものが挙げられる。
【００６９】
・ＭＡＣアドレス
・累積稼働時間
・日付（更新履歴、設置日、製造日など）
・プログラムの更新回数、プログラムの更新頻度
・デバイスの使用回数、デバイスの頻度
・エラーの有無
・メモリ使用量（空き容量）
・メモリカードの空き容量
・製造ロット
・メンテナンス、メモ、アラーム、故障、傷、振動、交換、修理、色、調子、日報などの各種情報
・セキュリティ情報
・アラームの文字列、トラブルシュートの内容（内容からエラーコードに変換）
・４Ｍ（Man, Machine, Material, Method）変動
（４）インデックス１０４３に含めるその他の情報としては、以下のようなものが挙げられる。
【００７０】
・各デバイスのＥＤＳファイル
・各デバイスが保持しているキャッシュ情報
上述したような各デバイスの状態を収集する場合には、問合せパケットをネットワーク内にブロードキャストするのではなく、ユニキャストすることが好ましい。データベース１０４の構成情報１０４１を参照することで、ユニキャスト先のアドレスなどを特定することができる。ブロードキャストではなくユニキャストを採用することで、自動更新部１１０によるインデックス１０４３の更新に係る処理によって、ネットワーク負荷や通信量の増大を抑制できる。
【００７１】
インデックス１０４３に含まれる各デバイスの状態を示す情報としては、上述のものに限定されることなく、検索を効率化するために用いられる情報であれば、どのような情報であってもよい。
【００７２】
＜Ｅ．リクエストパケット４００の生成処理＞
次に、本実施の形態に係る検索装置１００が外部からのデータ検索要求６００に応答してリクエストパケット４００を生成する処理について説明する。
【００７３】
（ｅ１．データ検索要求６００）
本実施の形態に係る検索装置１００は、一般的なデータ検索を要求するクエリの形で、データ検索要求６００を受付けることが可能である。
【００７４】
図５は、本実施の形態に係る検索装置１００が処理するデータ検索要求６００の一例を示す図である。図５には、一例として、ＥｔｈｅｒＣＡＴのネットワークに接続されたスレーブのうち、累積稼動時間が１０，０００時間を超えるものを抽出する処理に対応する、データ検索要求６００を示す。
【００７５】
図５（ａ）には、ＳＱＬ言語で記述されたデータ検索クエリの例を示す。図５（ａ）に示すデータ検索クエリにおいては、Ｓｅｌｅｃｔ文にｆｒｏｍ節およびｗｈｅｒｅ節による条件が付加されている。
【００７６】
図５（ｂ）には、Ｗｅｂサービスなどの提供に用いられるＲＥＳＴ（Representational State Transfer）に準拠した形式で記述されたデータ検索クエリの例を示す。図５（ｂ）に示すデータ検索クエリにおいては、ＵＲＬを示す文字列に加えて、「？」および「＆」のエスケープ文字によって必要な条件が記述されている。
【００７７】
このように、データ検索要求６００は、ＳＱＬ言語またはＲＥＳＴに準拠した形式で記述されていてもよい。但し、データ検索要求６００には任意の形式を用いることができる。また、データ検索クエリを規定する新たな形式が普及した場合には、任意の新たな形式を採用できる。
【００７８】
（ｅ２．リクエストパケットの生成例）
図６および図７は、本実施の形態に係る検索装置１００によるリクエストパケットの生成処理例を説明するための図である。
【００７９】
図６を参照して、検索装置１００に接続される検索対象２は、ＰＬＣ２００と、ＰＬＣ２００とＥｔｈｅｒＣＡＴのネットワークを介して３つのスレーブ（デバイス３００−１，３００−２，３００−３）が接続されているとする。
【００８０】
データ検索要求６００が「ＰＬＣ２００とＥｔｈｅｒＣＡＴのネットワークを介して接続されているＡＡＡ製のＩＯ−Ｌｉｎｋマスタのうちスレーブであって、エラー発生中のスレーブのすべてからサイクルタイムを収集する」という命令を含む例を示す。
【００８１】
ＰＬＣ２００に接続されるすべてのスレーブからデータを収集するためには、リクエストパケット４００を、検索装置１００からＰＬＣ２００までの第１経路５０２およびＰＬＣ２００から各スレーブまでの第２経路５０４の順で順次転送しなければならない。
【００８２】
ネットワーク階層設定５００に示すように、例えば、第１経路５０２では、ＴＣＰ／ＩＰ上に実装されるＨＴＴＰでデータ転送が行われ、このようなデータ転送は「Ｅｃａｔ．ｆｃｇｉ」という通信プログラムにより実現される。第２経路５０４では、ＥｔｈｅｒＣＡＴ上に実装されるＣｏＥという通信プロトコルでデータ転送が行われ、このようなデータ転送は「Ｏｂｊｅｃｔ  Ｄｉｃｔｉｏｎａｒｙ」という通信プログラムにより実現される。
【００８３】
このような複数の階層に亘ってパケットを転送しなければならず、検索装置１００は、複数の通信プロトコルに従うコマンドをカプセル化したリクエストパケット４００を生成する。すなわち、第１経路５０２から第２経路５０４へパケットが転送される場合には、ＨＴＴＰからＣｏＥに変換する必要がある。
【００８４】
データ検索要求６００は、「ＰＬＣ２００とＥｔｈｅｒＣＡＴのネットワークを介して接続されているＡＡＡ製のＩＯ−Ｌｉｎｋマスタのうちスレーブであって、エラー発生中のスレーブのすべてからサイクルタイムを収集する」という命令をＳＱＬ言語で記述した例である。検索装置１００は、データ検索要求６００を受けて、リクエストパケット４００を生成する。
【００８５】
検索装置１００は、インデックス１０４３を参照して、ＥｔｈｅｒＣＡＴのネットワークに接続されるスレーブのうち、「エラー発生中のスレーブ」を事前に特定した上で、特定されたスレーブ（デバイス）に対してリクエストパケット４００を生成および送信する。上述したように、インデックス１０４３が各デバイス３００にエラーが発生しているか否かの情報を含む場合には、検索装置１００は、インデックス１０４３を参照することで、「エラー発生中のスレーブ」を事前に特定できる。
【００８６】
リクエストパケット４００は、第１経路用パケット４０２と、第２経路用パケット４０４とを含む。リクエストパケット４００は、さらに、ＩＯ−Ｌｉｎｋマスタからサイクルタイムを読出すためのコマンド４０６を含む。
【００８７】
図７を参照して、ＳＱＬ言語で記述したデータ検索要求６００は、ＲＥＳＴに準拠したデータ検索要求６０２として記述することもできる。いずれの表現形式で記述した場合であっても、データを収集する対象デバイス３００を特定するための情報（データ検索要求６００，６０２の「１」，「２」の部分）が含まれている。また、データ検索要求６００，６０２は、収集すべきデータの種類を特定するための情報（データ検索要求６００，６０２の「３」の部分）も含む。
【００８８】
以下、データ検索要求６００，６０２の「１」，「２」，「３」の部分がどのように解析されて、リクエストパケット４００が生成されるのかについて説明する。
【００８９】
データ検索要求６００の「１」の部分については、検索装置１００は、データベース１０４の構成情報１０４１に含まれるＥＩＰ階層構成情報を参照して、データ検索要求６００において指定された「Ｍａｃｈｉｎｅ１」がＩＰアドレスとして「１９２．１６８．２５０．１」をもつコントローラであることを特定するとともに、コントローラがＥｔｈｅｒＣＡＴのネットワークとして「ＥＣＡＴ」を有していることを特定する（解析処理４３２）。
【００９０】
また、検索装置１００は、デバイスプロファイル１０４２を参照して、ネットワーク「ＥＣＡＴ」への通信は、アプリケーション「Ｅｃａｔ．ｆｃｇｉ」へコマンドを発行することで実現できることを特定する（解析処理４３３）。
【００９１】
検索装置１００は、解析処理４３２および解析処理４３３による特定結果に基づいて、第１経路用パケット４０２を生成する。
【００９２】
データ検索要求６００の「２」の部分については、検索装置１００は、データベース１０４の構成情報１０４１に含まれるＥｔｈｅｒＣＡＴ階層構成情報を参照して、データ検索要求６００において指定された「ｎｏｄｅ＊」がＥｔｈｅｒＣＡＴのスレーブすべて（設定可能なアドレスすべて）を意味することを特定する（解析処理４３４）。
【００９３】
また、検索装置１００は、デバイスプロファイル１０４２を参照して、ＥｔｈｅｒＣＡＴのスレーブへの通信は「ＣｏＥ」であることを特定するとともに、スレーブがＡＡＡ製のＩＯ−Ｌｉｎｋマスタであれば「ＣｏＥ」を発行することを特定する（解析処理４３５）。
【００９４】
検索装置１００は、インデックス１０４３を参照して、「Ｓｔａｔｕｓ＿Ｄａｔａ」が「ＮｏＥｒｒｏｒ」ではない、つまり「エラー発生中」のスレーブを抽出する（解析処理４３６）。このように、検索装置１００は、インデックス１０４３を参照して、データ検索要求６００において指定された検索条件に合致するデバイスを特定するようにしてもよい。
【００９５】
検索装置１００は、解析処理４３４および解析処理４３５に基づいて、第２経路用パケット４０４を生成する。ここで、生成される第２経路用パケット４０４は、解析処理４３６において抽出されたスレーブ（「エラー発生中」のスレーブ）に対するもののみとなる。第２経路用パケット４０４は、第１経路用パケット４０２に組込まれる。
【００９６】
データ検索要求６００の「３」の部分については、検索装置１００は、デバイスプロファイル１０４２を参照して、ＩＯ−Ｌｉｎｋマスタの「Ｃｙｃｌｅ＿Ｔｉｍｅ」のメモリアドレスは「０ｘ０８３４」であることを特定する（解析処理４３７）。
【００９７】
検索装置１００は、解析処理４３７による特定結果に基づいて、コマンド４０６を生成する。コマンド４０６は、第２経路用パケット４０４に組込まれる。
【００９８】
以上のような一連の解析処理によって、リクエストパケット４００が生成される。上述したようなリクエストパケットの生成例においては、リクエストパケット４００は、「ＡＡＡ製のＩＯ−Ｌｉｎｋマスタ」であって、かつ、「エラー発生中」であるものに対してのみ生成されるので、通信量を低減できる。
【００９９】
（ｅ３．処理手順）
次に、本実施の形態に係る検索装置１００によるリクエストパケットの生成処理の処理手順を説明する。
【０１００】
図８は、本実施の形態に係る制御システムにおける検索収集処理の処理手順を示すフローチャートである。図８に示す各ステップは、典型的には、検索装置１００のプロセッサ１５２が検索プログラム１５６０（図３）を実行することで実現される。
【０１０１】
図８を参照して、検索装置１００は、外部からのデータ検索要求６００を受信したか否かを判断する（ステップＳ１００）。データ検索要求６００を受信していなければ（ステップＳ１００においてＮＯ）、ステップＳ１００の処理が繰り返される。
【０１０２】
データ検索要求６００を受信していれば（ステップＳ１００においてＹＥＳ）、検索装置１００は、受信したデータ検索要求６００を解析して対象デバイス３００を特定する（ステップＳ１０２）とともに、特定した対象デバイス３００の接続位置および対象デバイスまでの経路を特定する（ステップＳ１０４）。ステップＳ１０２においては、複数のデバイスが対象として特定される場合もある。
【０１０３】
検索装置１００は、対象デバイス３００までの経路のうち最上階層の経路を選択し（ステップＳ１０６）、構成情報１０４１を参照して、アドレスおよび通信プロトコルなどの情報を取得する（ステップＳ１０８）。また、検索装置１００は、特定した対象デバイス３００までの経路のうち最上階層の経路について、デバイスプロファイル１０４２を参照して、次の階層へのデータ転送に必要な情報を取得する（ステップＳ１１０）。そして、検索装置１００は、ステップＳ１０８およびＳ１１０において取得した情報に基づいてパケットを生成する（ステップＳ１１２）。検索装置１００は、先に生成されているパケットが存在する場合には、ステップＳ１１２において生成したパケットをカプセル化して、先に生成されているパケットに組込む。
【０１０４】
検索装置１００は、先のステップＳ１０８〜Ｓ１１２の処理によって、対象デバイス３００までの経路のすべての階層についてのパケットが生成されたか否かを判断する（ステップＳ１１４）。対象デバイス３００までの経路のすべての階層についてのパケットが生成されていなければ（ステップＳ１１４においてＮＯ）、検索装置１００は、対象デバイス３００までの経路のうち次の階層の経路を選択し（ステップＳ１１６）、ステップＳ１０８以下の処理を繰り返す。
【０１０５】
対象デバイス３００までの経路のすべての階層についてのパケットが生成されていれば（ステップＳ１１４においてＹＥＳ）、検索装置１００は、インデックス１０４３を参照して、対象デバイス３００がデータ検索要求６００において指定された検索条件に合致するか否かを判断する（ステップＳ１１８）。対象デバイス３００がデータ検索要求６００において指定された検索条件に合致しなければ（ステップＳ１１８においてＮＯ）、検索装置１００は、リクエストパケットの生成を中止する。
【０１０６】
対象デバイス３００がデータ検索要求６００において指定された検索条件に合致していれば（ステップＳ１１８においてＹＥＳ）、検索装置１００は、デバイスプロファイル１０４２を参照して、データ検索要求６００において指定されたデータを収集するためのコマンド、および／または、データ検索要求６００において指定された検索条件に必要な情報を収集するためのコマンドを取得する（ステップＳ１２０）。そして、検索装置１００は、先に生成されているパケットに取得したコマンドを組込む（ステップＳ１２２）。
【０１０７】
そして、検索装置１００は、ステップＳ１２０においてコマンドを組込んだパケットを検索対象２（対象デバイス３００）に送信し（ステップＳ１２４）、当該対象デバイス３００からのレスポンスパケットの受信を待つ（ステップＳ１２６）。
【０１０８】
検索装置１００は、対象デバイス３００からのレスポンスパケットを受信すると、受信したレスポンスパケットに含まれるデータを検索結果６５０としてデータ検索要求６００の送信元に返信する（ステップＳ１２８）。なお、複数の受信したレスポンスパケットに対して、マージ処理やフィルタリング処理を行った上で、検索結果６５０を返信するようにしてもよい。
【０１０９】
以上の処理によって、データ検索要求６００に従うデータの検索および収集処理が完了する。
【０１１０】
＜Ｆ．更新処理＞
次に、検索装置１００の自動更新部１１０によるインデックス１０４３の更新処理について説明する。
【０１１１】
検索装置１００の自動更新部１１０は、ネットワーク上のデバイスから必要な情報を収集して、検索を効率化するために用いられるインデックス１０４３を生成および更新する。一旦インデックス１０４３が生成されると、エンドポイントへのアクセスを効率化できるため、システム全体の負荷を軽減できる。
【０１１２】
自動更新部１１０は、ＥｔｈｅｒＣＡＴおよびＥｔｈｅｒＮｅｔ／ＩＰなどのデバイスプロファイル１０４２を用いるとともに、ベンダ独自の仕様に合わせてインデックス１０４３を生成できる。自動更新部１１０は、インデックス１０４３を参照することで、効率的な通信を行う。また、自動更新部１１０は、共通フォーマット化したインデックス１０４３を生成するので、共通の手順に従って通信プロトコル変換を実施できる。
【０１１３】
検索対象２に含まれるネットワークには、１または複数のデバイスが通信プロトコルに応じた形態で接続されている。このような接続形態は、典型的には、以下の４種類に分類できる。
【０１１４】
（１）バス型
両端にターミナル（終端）を接続した１本の基幹回線にすべてのデバイスが接続される形態である。例えば、一般的なＰＬＣでは、制御を司るＣＰＵユニットと、各種ユニット（入出力ユニット、特殊ユニットなど）とがバス型で接続される。このようなバス型の接続形態においては、「マスタ」と称されるユニットが接続されているユニットの構成情報を管理することになる。
【０１１５】
（２）デイジーチェーン型
複数のデバイスを数珠つなぎに接続する、あるいは、全部まとめて一つのリング形状に接続する形態である。ＦＡ分野においては、ＥｔｈｅｒＣＡＴやＤｅｖｉｃｅＮｅｔといったネットワークが該当する。一般的に、デイジーチェーン型においては、マスタ／スレーブ方式が採用されており、マスタがスレーブに関する情報も管理することになる。
【０１１６】
（３）スター型
ハブに複数のデバイスが接続される形態である。ＦＡ分野においては、ＥｔｈｅｒＮｅｔ／ＩＰやＰＲＯＦＩＮＥＴといったネットワークが該当する。一般的に、ネットワーク構成を管理するためのマスタは必須とはされない。但し、ネットワークの上位側に配置された管理装置が各デバイスを管理する場合もある。
【０１１７】
（４）階層型
複数のネットワークが階層的に接続されている形態である。
【０１１８】
検索装置１００の自動更新部１１０は、検索対象２のネットワークの接続形態（ネットワークトポロジ）に応じた方法で、インデックス１０４３の更新に必要な情報を収集する。すなわち、自動更新部１１０は、構成情報１０４１およびデバイスプロファイル１０４２を参照して、制御システム１に含まれる各デバイス３００から状態を示す情報を収集する方法を決定する。
【０１１９】
具体的には、バス型のネットワークにおいては、当該ネットワークのマスタから当該マスタが管理するユニットの構成情報を収集する。デイジーチェーン型のネットワークにおいても、マスタが管理する該ネットワークに接続されているスレーブ（および、マスタ自身）に関する情報を収集する。すなわち、自動更新部１１０は、情報の収集対象のネットワークがバス型またはデイジーチェーン型の形態で接続されている場合に、当該ネットワークのマスタとして機能するデバイス３００から、当該ネットワークに接続される各デバイス３００の状態を示す情報を収集する。
【０１２０】
一方、スター型のネットワークにおいては、情報の送信を要求するメッセージをブロードキャストにより送信し、当該メッセージに応答して返信される情報を収集する。すなわち、自動更新部１１０は、情報の収集対象のネットワークがスター型の形態で接続されている場合に、当該ネットワークに情報の送信を要求するメッセージをブロードキャストすることで、当該ネットワークに接続される各デバイス３００の状態を示す情報を収集する。
【０１２１】
階層型のネットワークにおいては、各階層のネットワークトポロジに応じて、必要な情報を順次収集する。この場合、上位階層のネットワークから下位階層のネットワークに向けて順次情報が収集されることになる。なお、階層間に配置されるゲートウェイがマスタとして機能する場合には、当該ゲートウェイから必要な情報を収集する。
【０１２２】
なお、データベース１０４の構成情報１０４１を参照することで、階層型のネットワークについては、上位階層から下位階層に向けて探索が可能となる。
【０１２３】
図９は、本実施の形態に係る検索装置１００によるインデックス１０４３を生成するためのネットワーク探索を説明するための図である。図９に示す制御システム１において、検索装置１００および３つのＰＬＣ（デバイス３００−１，３００−２，３００−３）がＥｔｈｅｒＮｅｔ／ＩＰのネットワーク３２０にスター型の形態で接続されている。３つのＰＬＣ（デバイス３００−１，３００−２，３００−３）の各々は、ローカルバス３２２を介して接続された、ＣＰＵユニットおよび各種ユニットを含む。すなわち、ＣＰＵユニットおよび各種ユニットは、バス型の形態でローカルバス３２２に接続されている。
【０１２４】
デバイス３００−１のＰＬＣは、ＥｔｈｅｒＣＡＴのネットワーク３２４を介して、複数のノード（デバイス３００−４，３００−５，３００−６）とデイジーチェーン型の形態で接続されている。
【０１２５】
同様に、デバイス３００−３のＰＬＣは、ＥｔｈｅｒＣＡＴのネットワーク３２４を介して、複数のノード（デバイス３００−７，３００−８，３００−９）とデイジーチェーン型の形態で接続されている。
【０１２６】
デバイス３００−９は、リモートＩＯ装置であり、ローカルバス３２６を介して接続された、カプラユニットおよび各種ユニットを含む。
【０１２７】
上述したように、制御システム１は、３つの階層のネットワーク（第１階層：ネットワーク３２０；第２階層：ローカルバス３２２，ネットワーク３２４；第３階層：ローカルバス３２６）を有している。
【０１２８】
検索装置１００の自動更新部１１０は、各階層に応じた方法で必要な情報を収集する。図９に示す制御システム１において、自動更新部１１０は、第１階層のネットワーク３２０に接続されているデバイスに対しては、問合せパケットをブロードキャストすることで、デバイス３００−１，３００−２，３００−３の各々から必要な情報を収集する。
【０１２９】
続いて、自動更新部１１０は、第２階層のローカルバス３２２に接続されているデバイスに対しては、各ローカルバス３２２のマスタとして機能するＣＰＵユニット（３００−１，３００−２，３００−３）から必要な情報をそれぞれ収集する。
【０１３０】
また、自動更新部１１０は、第２階層のネットワーク３２４に接続されているデバイスに対しては、ネットワーク３２４のマスタとして機能するデバイス３００−１，３００−３（ＰＬＣ）から必要な情報をそれぞれ収集する。
【０１３１】
さらに、自動更新部１１０は、第３階層のローカルバス３２６に接続されているデバイスに対しては、各ローカルバス３２２のマスタとして機能するＣＰＵユニット（デバイス３００−９）から必要な情報を収集する。
【０１３２】
このように、検索装置１００の自動更新部１１０は、各階層に応じた方法で必要な情報を収集する。
【０１３３】
次に、本実施の形態に係る検索装置１００の自動更新部１１０によるインデックス１０４３の更新処理の処理手順を説明する。
【０１３４】
図１０は、本実施の形態に係る制御システムにおけるインデックスの更新処理の処理手順を示すフローチャートである。図１０に示す各ステップは、典型的には、検索装置１００のプロセッサ１５２が自動更新プログラム１５６２（図３）を実行することで実現される。
【０１３５】
図１０を参照して、検索装置１００は、予め定められたインデックスの更新処理の開始条件が成立したか否かを判断する（ステップＳ２００）。予め定められたインデックスの更新処理の開始条件は、予め定められた開始タイミングの到来、ネットワーク構成に変更の検知などを含む。予め定められたインデックスの更新処理の開始条件が成立していなければ（ステップＳ２００においてＮＯ）、ステップＳ２００の処理が繰り返される。
【０１３６】
予め定められたインデックスの更新処理の開始条件が成立していれば（ステップＳ２００においてＹＥＳ）、検索装置１００は、データベース１０４に格納されている構成情報１０４１を参照して、検索対象２に含まれるネットワークの第１階層の通信プロトコルを特定する（ステップＳ２０２）。検索装置１００は、データベース１０４に格納されているデバイスプロファイル１０４２を参照して、第１階層の通信プロトコルに応じた形態で情報を収集する（ステップＳ２０４）。この収集された情報により、インデックス１０４３が更新される。
【０１３７】
続いて、検索装置１００は、検索対象２に含まれるネットワークの第１階層に繋がる第２階層が存在するか否かを判断する（ステップＳ２０６）。検索対象２に含まれるネットワークの第１階層に繋がる第２階層が存在しなければ（ステップＳ２０６においてＮＯ）、検索装置１００は、処理を終了する。
【０１３８】
検索対象２に含まれるネットワークの第１階層に繋がる第２階層が存在しなければ（ステップＳ２０６においてＮＯ）、検索装置１００は、ネットワークの第１階層に繋がる第２階層のリストを生成する（ステップＳ２０８）。
【０１３９】
そして、検索装置１００は、生成した第２階層のリストに含まれる１つの第２階層を選択し（ステップＳ２１０）、検索対象２に含まれるネットワークの選択している第２階層の通信プロトコルを特定する（ステップＳ２１２）。検索装置１００は、データベース１０４に格納されているデバイスプロファイル１０４２を参照して、選択している第２階層の通信プロトコルに応じた形態で情報を収集する（ステップＳ２１４）。この収集された情報により、インデックス１０４３が更新される。
【０１４０】
さらに、検索装置１００は、現在選択している階層に繋がる下位の階層が存在するか否かを判断する（ステップＳ２１６）。現在選択している階層に繋がる下位の階層が存在すれば（ステップＳ２１６においてＹＥＳ）、検索装置１００は、当該下位の階層を選択し（ステップＳ２１８）、ステップＳ２１２以下の処理を繰り返す。
【０１４１】
現在選択している階層に繋がる下位の階層が存在しなければ（ステップＳ２１６においてＮＯ）、検索装置１００は、生成した第２階層のリストに含まれる第２階層のすべてを選択したか否かを判断する（ステップＳ２２０）。
【０１４２】
生成した第２階層のリストに含まれる第２階層のすべてを選択していなければ（ステップＳ２２０においてＮＯ）、検索装置１００は、生成した第２階層のリストに含まれる別の第２階層を選択し（ステップＳ２２２）、ステップＳ２１２以下の処理を繰り返す。
【０１４３】
生成した第２階層のリストに含まれる第２階層のすべてを選択していれば（ステップＳ２２０においてＹＥＳ）、検索装置１００は、処理を終了する。
【０１４４】
以上の処理によって、インデックス１０４３の更新処理が完了する。
＜Ｇ．データ検索要求および検索結果＞
次に、本実施の形態に係る検索装置１００が処理するデータ検索要求６００および応答する検索結果６５０について説明する。
【０１４５】
（ｇ１：データ検索要求の生成）
データ検索要求６００の要求元において、データ検索要求６００は任意の方法で生成できる。例えば、ユーザ指示に応じて、ＳＱＬ言語で記述されたデータ検索要求を自動的に生成するようなアプリケーションプログラムを作成してもよい。このようなアプリケーションプログラムは、任意のプログラミング言語を用いて作成できる。
【０１４６】
また、任意のＳＱＬクエリを生成できるアプリケーションを用いて、ユーザが任意のデータ検索要求を作成するようにしてもよい。この場合、検索装置１００と連携することで、データベース１０４に含まれる、構成情報１０４１、デバイスプロファイル１０４２、およびインデックス１０４３の情報を参照して、データ検索要求に記述可能な要素の一覧を表示できるようにしてもよい。この場合、ユーザが生成したデータ検索要求に対する検索結果を当該アプリケーション上で表示するようにしてもよい。
【０１４７】
また、Ｗｅｂサーバ上に配置されたＨＴＭＬドキュメントをブラウザで表示するとともに、ユーザがブラウザを操作することで、ＲＥＳＴに準拠した形式で記述されたデータ検索要求を生成するようにしてもよい。この場合、検索結果についても同一のブラウザ上に表示するようにしてもよい。
【０１４８】
（ｇ２：検索結果の利用）
検索装置１００がデータ検索要求に応答して検索収集処理を実行することで得られる検索結果は、任意の形態で利用できる。
【０１４９】
例えば、検索結果を任意のアプリケーションを用いて表示または動作させることができる。例えば、Ｗｉｎｄｏｗｓ（登録商標）上で実行される任意のアプリケーションで利用することができる。
【０１５０】
さらに、Ｗｅｂアプリケーションとして実装してもよい。図１１および図１２は、本実施の形態に係る制御システム１を利用して提供されるＷｅｂアプリケーションの一例を説明するための図である。図１１を参照して、例えば、携帯端末あるいはパーソナルコンピュータ上で実行されるブラウザ７００から検索装置１００に対してリモートアクセスする。この場合、検索装置１００にはＷｅｂサーバ１１２が実装されており、Ｗｅｂサーバ１１２が提供するＨＴＭＬドキュメントがブラウザ７００で表示されてもよい。
【０１５１】
ユーザがブラウザ７００を操作することで、ブラウザ７００から検索装置１００には、ＲＥＳＴに準拠した形式で記述されたデータ検索要求が送信される。検索装置１００がデータ検索要求に応答して検索して得られた検索結果は、ブラウザ７００上に表示されてもよい（ＨＴＭＬドキュメント）。
【０１５２】
例えば、図１２（ａ）を参照して、検索装置１００のＷｅｂサーバ１１２からは、検索対象２のネットワーク構成を示す模式図が表示されるとともに、ユーザが任意のデバイスあるいは異常メッセージを選択すると、データ検索要求の生成および検索収集処理が実行され、図１２（ｂ）に示すような形態でその検索結果を表示してもよい。
【０１５３】
なお、図１１に示す構成に代えて、Ｗｅｂサーバを検索装置１００とは異なる処理主体に配置してもよい。
【０１５４】
図１３は、本実施の形態に係る制御システム１を利用してＷｅｂアプリケーションを提供するための別の実装例を示す模式図である。図１３を参照して、例えば、検索対象２を統括するＰＬＣなどにＷｅｂサーバ７１０を配置するとともに、携帯端末あるいはパーソナルコンピュータ上で実行されるブラウザ７００からＷｅｂサーバ７１０に対してリモートアクセスする。Ｗｅｂサーバ７１０は、ブラウザ７００からのアクセスに応答して、要求されたデータ検索要求を生成する。例えば、データ検索要求はＪＳＯＮ形式で生成されてもよい。
【０１５５】
このデータ検索要求に対して、検索装置１００は、検索収集処理を実行し、その検索結果をＪＳＯＮ形式で応答する。Ｗｅｂサーバ７１０は、検索装置１００からの検索結果に基づいてＨＴＭＬドキュメントを生成し、ブラウザ７００へ送信するようにしてもよい。
【０１５６】
データ検索要求の生成方法および検索結果の利用形態については、上述したものに限られず、任意の方法および形態を採用できる。
【０１５７】
＜Ｈ．その他の形態＞
上述の実施の形態においては、検索装置１００が一連の処理を実行する構成について説明したが、これに限られず、検索装置１００が実行する処理を複数の処理主体で分散して実行するようにしてもよい。例えば、データ検索要求の解析処理とリクエストパケットの生成処理とを異なる処理主体で実行してもよい。この場合、データ検索要求の解析処理は、ネットワーク上のクラウドコンピュータで実行し、その解析結果に基づいて、検索対象２とネットワーク接続された検索装置がリクエストパケットを実際に対象デバイス３００に送信するようにしてもよい。
【０１５８】
あるいは、検索対象２とネットワーク接続された検索装置がデータ検索要求を解析し、その解析結果に基づいて、検索対象２内の任意のＰＬＣがリクエストパケットを対象デバイス３００に送信するようにしてもよい。
【０１５９】
これに限られず、検索対象２の構成または規模などに応じて、本実施の形態に係る検索機能は任意の形態で実装できる。
【０１６０】
また、本実施の形態に係る検索機能は、既存のＰＬＣあるいはデバイスに対して、事後的にプログラムを追加する形で実装することもできる。この場合、事後的に追加されるプログラムが本発明の対象となり得る。
【０１６１】
＜Ｉ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
少なくとも１つのデバイス（３００）からなる制御システム（１）であって、
各デバイスの状態を示す情報を含むインデックス（１０４３）を保持するデータベース（１０４）と、
外部からのデータ検索要求（６００）に応答して、前記インデックスを参照してリクエストパケット（４００）を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット（４５０）に含まれるデータを検索結果（６５０）として出力する検索収集部（１０６）と、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新する自動更新部（１１０）とを備える、制御システム。
［構成２］
前記検索収集部は、前記インデックスを参照して、前記データ検索要求に含まれる検索条件に合致するデバイスを決定する、構成１に記載の制御システム。
［構成３］
前記インデックスは、各デバイスにエラーが発生しているか否かの情報を含む、構成１または２に記載の制御システム。
［構成４］
前記インデックスは、予め定められた条件に合致するデバイスの集合を示す情報を含む、構成１〜３のいずれか１項に記載の制御システム。
［構成５］
前記データベースは、前記制御システムのデバイスの接続関係を含む構成情報（１０４１）、および、各デバイスの特性を示す情報を含むデバイスプロファイル（１０４２）をさらに保持し、
前記自動更新部は、前記構成情報および前記デバイスプロファイルを参照して、前記制御システムに含まれる各デバイスから状態を示す情報を収集する方法を決定する、構成１〜４のいずれか１項に記載の制御システム。
［構成６］
前記自動更新部は、情報の収集対象のネットワークがバス型またはデイジーチェーン型の形態で接続されている場合に、当該ネットワークのマスタとして機能するデバイスから、当該ネットワークに接続される各デバイスの状態を示す情報を収集する、構成５に記載の制御システム。
［構成７］
前記自動更新部は、情報の収集対象のネットワークがスター型の形態で接続されている場合に、当該ネットワークに情報の送信を要求するメッセージをブロードキャストすることで、当該ネットワークに接続される各デバイスの状態を示す情報を収集する、構成５または６に記載の制御システム。
［構成８］
前記データ検索要求は、ＳＱＬ言語またはＲＥＳＴに準拠した形式で記述されている、構成１〜７のいずれか１項に記載の制御システム。
［構成９］
少なくとも１つのデバイス（３００）からなる制御システム（１）に接続される検索装置（１００）であって、
各デバイスの状態を示す情報を含むインデックス（１０４３）を保持するデータベース（１０４）と、
外部からのデータ検索要求（６００）に応答して、前記インデックスを参照してリクエストパケット（４００）を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット（４５０）に含まれるデータを検索結果（６５０）として出力する検索収集部（１０６）と、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新する自動更新部（１１０）とを備える、検索装置。
［構成１０］
少なくとも１つのデバイス（３００）からなる制御システム（１）に接続されるコンピュータ（１００）で実行される検索プログラム（１５６０）であって、前記コンピュータに、
外部からのデータ検索要求（６００）に応答して、各デバイスの状態を示す情報を含むインデックス（１０４３）を参照してリクエストパケット（４００）を生成して対象デバイスへ送信するとともに、当該対象デバイスからのレスポンスパケット（４５０）に含まれるデータを検索結果（６５０）として出力するステップ（Ｓ）と、
前記制御システムに含まれるデバイスの状態を示す情報を収集して前記インデックスの内容を更新するステップ（Ｓ２００〜Ｓ２２２）とを実行させる、検索プログラム。
【０１６２】
＜Ｊ．利点＞
本実施の形態に係る制御システムによれば、制御システム内の状態変化に応じてインデックスを更新することができ、この随時更新されるインデックスを参照して、リクエストパケットを生成できるので、制御システム内の状態が変化した場合であっても、制御システム内の任意のデバイスの任意の情報を効率的に収集できる。
【０１６３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６４】
１  制御システム、２  検索対象、１００  検索装置、１０２  インターフェイス、１０４  データベース、１０６  検索収集部、１０８  通信処理部、１１０  自動更新部、１１２，７１０  Ｗｅｂサーバ、１５２  プロセッサ、１５４  メインメモリ、１５６  ストレージ、１５８  上位ネットワークコントローラ、１６０  入力部、１６２  表示部、１６４  下位ネットワークコントローラ、１６６  メモリカードインターフェイス、１６８  メモリカード、１７０  プロセッサバス、２００  ＰＬＣ、３００  デバイス、３０２  作業領域、３０４  プロファイル、３０６  データソース、３２０，３２４  ネットワーク、３２２，３２６  ローカルバス、４００  リクエストパケット、４０２  第１経路用パケット、４０４  第２経路用パケット、４０６  コマンド、４３２，４３３，４３４，４３５，４３６，４３７  解析処理、４５０  レスポンスパケット、５００  ネットワーク階層設定、５０２  第１経路、５０４  第２経路、６００，６０２  データ検索要求、６５０  検索結果、７００  ブラウザ、１０４１  構成情報、１０４２  デバイスプロファイル、１０４３  インデックス、１５６０  検索プログラム、１５６２  自動更新プログラム、１５６４  システムプログラム。
【図１】
2020013224.tif 000003
【図２】
2020013224.tif 000004
【図３】
2020013224.tif 000005
【図４】
2020013224.tif 000006
【図５】
2020013224.tif 000007
【図６】
2020013224.tif 000008
【図７】
2020013224.tif 000009
【図８】
2020013224.tif 000010
【図９】
2020013224.tif 000011
【図１０】
2020013224.tif 000012
【図１１】
2020013224.tif 000013
【図１２】
2020013224.tif 000014
【図１３】
2020013224.tif 000015