(57)【要約】【課題】アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことを一つの目的とする。【解決手段】制御装置と、制御装置が管理するプロセスデータを利用してアプリケーションを実行する情報処理装置とを含む制御システムは、グループ化手段と、生成手段とを有する。グループ化手段は、アプリケーションにおいて利用されるプロセスデータを複数のグループに割り当てる。生成手段は、グループ化手段の割り当て結果に従って、一のグループに含まれるプロセスデータが一のデータセットに格納されて送信されるように通信設定を生成する。【選択図】図１
2020149459.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理する制御装置を備え、前記制御装置は、予め定められた通信設定に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されており、
前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行する情報処理装置と、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化手段と、
前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成手段とを備える、制御システム。
【請求項２】
前記通信設定は、各データセットに格納されるべき１または複数のプロセスデータを特定するための情報を含む、請求項１に記載の制御システム。
【請求項３】
前記通信設定は、各データセットにおける１または複数のプロセスデータの格納順序を特定するための情報を含む、請求項１または２に記載の制御システム。
【請求項４】
前記１または複数のアプリケーションの開発環境を提供するサポート装置をさらに備え、
前記サポート装置は、前記グループ化手段および前記生成手段を含む、請求項１〜請求項３のうちいずれかに記載の制御システム。
【請求項５】
前記制御装置と前記情報処理装置との間の通信を中継する中継装置をさらに備え、
前記中継装置は、前記グループ化手段および前記生成手段を含む、請求項１〜請求項３のうちいずれかに記載の制御システム。
【請求項６】
前記情報処理装置は、
前記１または複数のアプリケーションにおいて参照または更新される複数のアプリケーションデータを管理し、
予め定められた情報処理装置の通信設定に従って、前記複数のアプリケーションデータの少なくとも一部を格納した１または複数種類のアプリケーションデータセットを送信し、
前記制御装置は、前記アプリケーションデータセットを利用することで、前記複数のアプリケーションデータのうち指定された１または複数のアプリケーションデータを利用して前記制御プログラムを実行可能であり、
前記グループ化手段は、前記制御プログラムにおいて利用することが指定されている前記１または複数のアプリケーションデータの各々を１または複数の制御プログラムグループに割り当て、
前記生成手段は、前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数の制御プログラムグループの各々について、当該制御プログラムグループに割り当てられた１または複数のアプリケーションデータが一のアプリケーションデータセットに格納されて送信されるように、前記情報処理装置の通信設定を生成する、請求項１〜請求項５のうちいずれかに記載の制御システム。
【請求項７】
制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理する制御装置と、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行する情報処理装置との間の通信環境の設定を支援するサポート装置であって、
前記制御装置は、予め定められた通信設定に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されており、
前記情報処理装置は、前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記１または複数のアプリケーションを実行するように構成されており、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化手段と、
前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成手段とを備える、サポート装置。
【請求項８】
制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理する制御装置と、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行する情報処理装置との間の通信環境の設定を支援するサポートプログラムであって、
前記制御装置は、予め定められた通信設定に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されており、
前記情報処理装置は、前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記１または複数のアプリケーションを実行するように構成されており、
前記サポートプログラムは、コンピュータに、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化ステップと、
前記グループ化ステップにおいて割り当てられた結果に従って、前記グループ化ステップにおいてグループ化された前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成ステップとを実行させる、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置と、制御装置が管理するプロセスデータを利用する１または複数のアプリケーションを実行する情報処理装置との間の通信環境の設定を支援する機能に関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置または製造設備などに応じて設計された制御プログラムが実行される。このような制御装置は、ＨＭＩ（Human Machine Interface）などの情報処理装置と通信可能に接続される。
【０００３】
情報処理装置は、たとえば、制御装置からの情報を利用して、制御装置の制御対象の稼働状況などをグラフィカルに表示したり、あるいは、制御装置からの情報を利用して、表示するアプリケーションとは異なるアプリケーションを実行したりする。
【０００４】
たとえば、特開２０１７−１４６８０３号公報（特許文献１）は、ＰＬＣと接続される情報処理装置の一例としてプログラム表示器を開示する。このプログラム表示器は、表示画面に表示される一画面を一ページとした場合に、ページ単位で当該ページに表示される機能部品のレイアウト、および、機能の割り当て等がされている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−１４６８０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１には、各ページに割り当てられた機能を実現するために必要な情報を具体的にどのように取得するかについて言及されていない。この機能を実現するためのアプリケーションには、ＰＬＣである制御装置の情報（以下、「プロセスデータ」とする。）が利用される。ユーザは、アプリケーションに利用されるプロセスデータが送信されるような通信設定を制御装置に対して行う必要がある。
【０００７】
本願発明は、アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことを一つの目的とする。
【課題を解決するための手段】
【０００８】
本開示の一例によれば、制御装置と、情報処理装置と、グループ化手段と、生成手段とを含む制御システムが提供される。制御装置は、制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理し、予め定められた通信設定に従って、複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されている。情報処理装置は、制御装置から送信される１または複数種類のデータセットを利用することで、複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行するように構成されている。グループ化手段は、１または複数のアプリケーションにおいて利用することが指定されている１または複数のプロセスデータの各々を１または複数のグループに割り当てる。生成手段は、グループ化手段の割り当て結果に従って、グループ化手段がグループ化した１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、制御装置のための通信設定を生成する。
【０００９】
この開示によれば、情報処理装置が実行するアプリケーションに応じて通信設定が自動で生成されるため、アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことができる。
【００１０】
上述の開示において、通信設定は、各データセットに格納されるべき１または複数のプロセスデータを特定するための情報を含んでもよい。
【００１１】
この開示によれば、一のデータセットに格納されるべきプロセスデータの組み合わせが規定されているため、単に格納ルールが規定されている場合に比べて、制御装置がデータセットを生成する処理負担を軽減することができる。
【００１２】
上述の開示において、通信設定は、各データセットにおける１または複数のプロセスデータの格納順序を特定するための情報を含んでもよい。
【００１３】
この開示によれば、制御装置はデータセットを生成する度に格納順序を決定する必要がなく、制御装置のデータセットを生成する処理負担を軽減することができる。さらに、たとえば、格納順序を特定する情報を含む通信設定を情報処理装置と制御装置の双方に送ることで、情報処理装置と制御装置との間のデータリンクを容易に構築することができる。
【００１４】
上述の開示において、制御システムは、１または複数のアプリケーションの開発環境を提供するサポート装置をさらに含んでもよい。制御システムにおいて、サポート装置がグループ化手段および生成手段を有してもよい。
【００１５】
この開示によれば、グループ化手段および生成手段をアプリケーションの開発環境を提供するサポート装置が備えるため、アプリケーションの開発と通信設定とを一括で行うことができる。
【００１６】
上述の開示において、制御システムは、制御装置と情報処理装置との間の通信を中継する中継装置をさらに含んでもよい。制御システムにおいて、中継装置がグループ化手段および生成手段を有してもよい。
【００１７】
この開示によれば、制御装置に対して予め通信設定をしなくとも、情報処理装置と制御装置との間のデータの遣り取りを実現することができる。
【００１８】
上述の開示において、情報処理装置は、１または複数のアプリケーションにおいて参照または更新される複数のアプリケーションデータを管理し、予め定められた情報処理装置の通信設定に従って、複数のアプリケーションデータの少なくとも一部を格納した１または複数種類のアプリケーションデータセットを送信してもよい。制御装置は、アプリケーションデータセットを利用することで、複数のアプリケーションデータのうち指定された１または複数のアプリケーションデータを利用して制御プログラムを実行してもよい。グループ化手段は、制御プログラムにおいて利用することが指定されている１または複数のアプリケーションデータの各々を１または複数の制御プログラムグループに割り当ててもよい。生成手段は、グループ化手段の割り当て結果に従って、グループ化手段がグループ化した１または複数の制御プログラムグループの各々について、制御プログラムグループに割り当てられた１または複数のアプリケーションデータが一のアプリケーションデータセットに格納されて送信されるように、情報処理装置の通信設定を生成してもよい。
【００１９】
この開示によれば、制御プログラムの実行にアプリケーションデータを利用する場合に、当該制御プログラムに応じて情報処理装置の通信設定が自動で生成されるため、制御プログラムの実行に必要なアプリケーションデータが情報処理装置から制御装置に向けて送信されるような情報処理装置の通信設定を容易に行うことができる。
【００２０】
本開示の別の一例によれば、制御装置と情報処理装置との間の通信環境の設定を支援するサポート装置が提供される。制御装置は、制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理し、予め定められた通信設定に従って、複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されている。情報処理装置は、制御装置から送信される１または複数種類のデータセットを利用することで、複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行するように構成されている。サポート装置は、１または複数のアプリケーションにおいて利用することが指定されている１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化手段と、グループ化手段の割り当て結果に従って、グループ化手段がグループ化した１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、制御装置のための前記通信設定を生成する生成手段とを含む。
【００２１】
この開示によれば、情報処理装置が実行するアプリケーションに応じて通信設定が自動で生成されるため、アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことができる。
【００２２】
本開示の別の一例によれば、制御装置と情報処理装置との間の通信環境の設定を支援するサポートプログラムが提供される。制御装置は、制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理し、予め定められた通信設定に従って、複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセットを送信するように構成されている。情報処理装置は、制御装置から送信される１または複数種類のデータセットを利用することで、複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行するように構成されている。サポートプログラムは、コンピュータに、１または複数のアプリケーションにおいて利用することが指定されている１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化ステップと、グループ化ステップにおいて割り当てられた結果に従って、グループ化ステップにおいてグループ化された１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、制御装置のための通信設定を生成する生成ステップとを実行させる。
【００２３】
この開示によれば、情報処理装置が実行するアプリケーションに応じて通信設定が自動で生成されるため、アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことができる。
【発明の効果】
【００２４】
本開示の一例によれば、アプリケーションの実行に必要なプロセスデータが制御装置から情報処理装置に向けて送信されるような通信設定を容易に行うことができる。
【図面の簡単な説明】
【００２５】
【図１】ＦＡシステム１０ａを中心とした制御システム１ａの適用場面を示す模式図である。
【図２】実施の形態１に係る制御システム１の概略を示す図である。
【図３】Ｐｕｂ／Ｓｕｂ通信の概要を説明するための図である。
【図４】サブスクライバーとして機能するＨＭＩ２００の概要を説明するための図である。
【図５】パブリッシャーとして機能するコントローラ１００の概要を説明するための図である。
【図６】アプリケーションの開発から、開発したアプリケーションを導入するまでの一連の流れの一例を示す図である。
【図７】サポート装置３００が備える機能構成を示すブロック図である。
【図８】サポート装置３００のハードウェア構成の一例を示す模式図である。
【図９】ＨＭＩ２００のハードウェア構成の一例を示す模式図である。
【図１０】コントローラ１００のハードウェア構成の一例を示す模式図である。
【図１１】変形例に係るアプリケーションの実行段階を説明するための図である。
【図１２】変形例に係るグループ化手段２０ｂおよび生成手段４０ｂの概略図である。
【図１３】実施の形態２に係る制御システム１ｃの概略を示す図である。
【図１４】設定機器６００のハードウェア構成の一例を示す模式図である。
【図１５】実施の形態３に係る制御システム１ｄの概略を示す図である。
【図１６】中継装置７００とコントローラ１００ｄとの通信が開始してから、通信設定４００がコントローラ１００ｄに送られるまでの流れを示すシーケンス図である。
【図１７】中継装置７００のハードウェア構成の一例を示す模式図である。
【図１８】実施の形態４に係る制御システム１ｅの概略を示す図である。
【図１９】データセット５０のデータ構造の一例を示す図である。
【図２０】コネクション情報４８０を説明するための図である。
【図２１】変形例における制御システム１ｆの概略を示す模式図である。
【発明を実施するための形態】
【００２６】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
【００２７】
§１  適用例
図１は、ＦＡシステム１０ａを中心とした制御システム１ａの適用場面を示す模式図である。制御システム１ａは、ＦＡシステム１０ａに含まれる各装置間の通信環境の設定を支援する機能を提供する。
【００２８】
ＦＡシステム１０ａは、コントローラ１００ａと、ＨＭＩ（Human Machine Interface）２００ａとを含む。コントローラ１００ａは、情報系ネットワーク２ａを介してＨＭＩ２００ａと通信可能に接続される。情報系ネットワーク２ａは、たとえば、ベンダやＯＳ（Operating System）の種類などに依存することなくデータ交換を実現することができる通信規格に従ったネットワークである。このような通信規格としては、たとえば、ＯＰＣ  ＵＡ（Object Linking and Embedding for Process Control Unified Architecture）などが知られている。
【００２９】
なお、情報系ネットワーク２ａに採用される通信規格は、ＯＰＣ−ＵＡに限定されるわけではない。たとえば、情報系ネットワーク２ａは、特定のベンダまたはＯＳ特有の通信規格に従ったネットワークであってもよく、また、Ｅｔｈｅｒｎｅｔ（登録商標）上に制御用プロトコルを実装した産業用オープンネットワークであるＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）に従ったネットワークであってもよい。
【００３０】
ＦＡシステム１０ａは、複数のコントローラ１００ａを含む構成であってもよい。また、ＦＡシステム１０ａは、複数のＨＭＩ２００ａを含む構成であってもよい。また、ＦＡシステム１０ａは、１のコントローラ１００ａに対して１のＨＭＩ２００ａが通信可能に接続された構成でもよく、複数のコントローラ１００ａに対して１のＨＭＩ２００ａが通信可能に接続された構成でもよく、１のコントローラ１００ａに対して複数のＨＭＩ２００ａが通信可能に接続された構成でもよく、また、複数のコントローラ１００ａに対して複数のＨＭＩ２００ａが通信可能に接続された構成でもよい。図１に示す例では、ＦＡシステム１０ａは、１のコントローラ１００ａに対して２つのＨＭＩ２００ａが通信可能に接続された構成である。
【００３１】
コントローラ１００ａは、本願発明の制御装置の一例であって、制御対象を制御するための制御プログラム１２０を実行し、ＦＡシステム１０ａにおいて中心的な処理を実行する。図１に示す例において、コントローラ１００ａは、制御系ネットワーク４を介して、制御対象であるフィールドデバイス５００と通信可能に接続される。制御系ネットワーク４には、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００３２】
フィールドデバイス５００は、生産工程を自動化するための種々の産業用機器を含み、製造装置や生産ラインなど（以下、「フィールド」とも総称する。）に対して何らかの物理的な作用を与える装置と、フィールドとの間で情報を遣り取りする入出力装置とを含む。たとえば、フィールドデバイス５００は、サーボモータを制御するサーボドライバ、ロボットを制御するロボットコントローラ、データを収集する装置であるセンサ、コンベヤを動かすアクチュエータ、または、リモートＩ／Ｏ（Input/Output）装置などを含む。
【００３３】
コントローラ１００ａは、制御プログラム１２０を実行することでフィールドデバイス５００を制御する。また、コントローラ１００ａは、制御プログラム１２０の実行に伴って参照または更新される複数のプロセスデータ５２を管理する。
【００３４】
プロセスデータ５２は、フィールドデバイス５００からコントローラ１００ａに入力されるデータと、コントローラ１００ａからフィールドデバイス５００に出力されるデータと、制御プログラム１２０の実行またはコントローラ１００ａの状態管理に用いられるデータと含む。プロセスデータ５２は、制御プログラム１２０の実行に伴って、周期的にまたはイベント的に更新される。
【００３５】
コントローラ１００ａは、予め定められた通信設定４００に従って、複数のプロセスデータ５２の少なくとも一部を格納した複数種類のデータセット５０を送信する。複数種類のデータセット５０の各々は、互いに、格納されるプロセスデータ５２の組合せと、送信される契機と、送信先とのうちの少なくとも一の要素が異なる。
【００３６】
ＨＭＩ２００ａは、本願発明の情報処理装置の一例であって、コントローラ１００ａが送信したデータセット５０に含まれるプロセスデータ５２を利用してアプリケーション２２０を実行する。図１に示す例では、ＨＭＩ２００ａは、アプリケーション２２０を実行することで、制御プログラム１２０の実行によって得られる各種情報をオペレータへ提示する。
【００３７】
ＨＭＩ２００ａは、コントローラ１００ａが送信したデータセット５０をコントローラ１００ａから直接受信してもよく、中継装置など、別のデバイスを介して受信してもよい。
【００３８】
なお、コントローラ１００ａが管理するプロセスデータ５２を利用してアプリケーション２２０を実行する情報処理装置は、ＨＭＩ２００ａに限られない。たとえば、情報処理装置は、制御対象であるフィールドデバイス５００から計測されたトレーサビリティに関する情報などを収集するデータベースや、プロセス制御と集中監視とを行うＳＣＡＤＡ（Supervisory Control And Data Acquisition）装置などであってもよい。
【００３９】
また、情報処理装置は、コントローラ１００ａと情報系ネットワーク２ａを介して接続された装置に限られるものではなく、制御系ネットワーク４を介して接続されたロボットを制御するロボットコントローラ、アクチュエータ、他のコントローラなどであってもよい。すなわち、アプリケーション２２０は、情報の提示を目的としたものに限定されるものではなく、コントローラ１００ａが管理するプロセスデータ５２を利用する機能の実現を目的としたものであればよい。なお、以下では、アプリケーションは、情報の提示を目的としたものであって、表示部に画像を表示する機能を提供するプログラムとして説明する。
【００４０】
また、図１に示す例では、制御装置と情報処理装置とが互いに異なる装置であって、物理的に接続されているものとしたが、制御装置と情報処理装置とは互いに論理的に接続されていてもよい。
【００４１】
アプリケーション２２０の実行段階において、ＨＭＩ２００ａは、コントローラ１００ａから配信されるデータセット５０に格納されるプロセスデータ５２を利用することで、アプリケーション２２０を実行する。すなわち、アプリケーション２２０は、コントローラ１００ａから当該アプリケーション２２０で利用されるプロセスデータ５２が送信されることを前提として実行される。制御システム１ａは、ＦＡシステム１０ａに加えて、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラ１００ａからＨＭＩ２００ａに向けて送信されるような通信設定を生成する機能を有する。
【００４２】
以下、アプリケーション２２０を開発してＦＡシステム１０ａに導入する段階であって、通信設定を生成する段階について説明する。制御システム１ａは、コントローラ１００ａおよびＨＭＩ２００ａに加えて、グループ化手段２０ａと、生成手段４０ａとを備える。グループ化手段２０ａおよび生成手段４０ａの各々の機能は、典型的には、アプリケーション２２０の開発環境を提供するサポート装置のプロセッサが、通信環境の設定を支援するためのサポートプログラムを実行することで実現される機能である。
【００４３】
なお、グループ化手段２０ａおよび生成手段４０ａの各々の機能は、専用の設定機器によって実現されてもよい。また、ＨＭＩ２００ａとコントローラ１００ａとの間に中継装置を設け、グループ化手段２０ａおよび生成手段４０ａの各々の機能を中継装置によって実現させてもよい。
【００４４】
図１において、通信設定を生成するタイミングは、アプリケーション２２０を実行する前の導入段階に行うものとして説明する。なお、通信設定を生成するタイミングは、アプリケーションの実行段階で行っても良い。たとえば、実行するアプリケーション２２０を切り替える度に、通信設定を生成または更新するようにしてもよい。
【００４５】
アプリケーション２２０は、インストール可能な形式でメモリカードやデータベースに格納された状態で流通されるものであってもよく、また、ユーザによって作成されるものであってもよい。
【００４６】
グループ化手段２０ａは、アプリケーション２２０において利用することが指定されているプロセスデータ５２を１または複数のグループに割り当てる。たとえば、グループ化手段２０ａは、予め定められた要素を抽出し、抽出した要素に基づいてプロセスデータ５２をグループ化する。予め定められた要素は、プロセスデータ５２を管理するコントローラ１００ａの種類、コントローラ１００ａがプロセスデータ５２を更新する周期、アプリケーション２２０がプロセスデータ５２を利用する周期、プロセスデータ５２のデータサイズなどを含む。また、グループ化手段２０ａは、ユーザによって任意に設定された条件を満たすように、アプリケーション２２０において利用することが指定されているプロセスデータ５２を１または複数のグループに割り当ててもよい。
【００４７】
生成手段４０ａは、グループ化手段２０ａの割り当て結果に従って、複数のグループの各々について、一のグループに含まれる一または複数のプロセスデータ５２が一のデータセット５０に格納されて送信されるように通信設定４００を生成する。
【００４８】
図１に示す例では、アプリケーション２２０は、プロセスデータ５２Ｂ，プロセスデータ５２Ｄ，プロセスデータ５２Ｘを利用する。グループ化手段２０ａは、複数のプロセスデータ５２について、たとえば、アプリケーション２２０において利用される周期毎にグループ化したものとする。図１に示す例では、アプリケーション２２０は、プロセスデータ５２Ｂおよびプロセスデータ５２Ｄを利用した情報を第１周期ごとに更新し、プロセスデータ５２Ｘを利用した情報を第２周期ごとに更新するものとする。なお、図１において、一部、符号を省略している。
【００４９】
グループ化手段２０ａは、プロセスデータ５２Ｂおよびプロセスデータ５２ＤをグループＧＲ１に、プロセスデータ５２ＸをグループＧＲ２に割り当てる。
【００５０】
生成手段４０ａは、プロセスデータ５２Ｂおよびプロセスデータ５２Ｄが一のデータセット５０−１に格納され、プロセスデータ５２Ｘが別のデータセット５０−２に格納されるように通信設定４００を生成する。通信設定４００は、データセット５０を送信する条件、データセット５０にデータを格納する順序、データセット５０に格納するデータの種類などを含む。
【００５１】
生成手段４０ａは、たとえば、通信設定４００を、プロセスデータ５２の属性、情報系ネットワーク２ａに利用される通信プロトコル、コントローラ１００ａを中心としたＦＡシステム１０ａのネットワーク構成などの情報に従って決定する。プロセスデータ５２の属性は、たとえば、制御プログラム１２０において参照または更新されるタイミング、データサイズなどを含む。
【００５２】
データセット５０を送信する条件は、たとえば、コントローラ１００ａがプロセスデータ５２を更新するタイミング、アプリケーション２２０がプロセスデータ５２を利用するタイミングなどに従って規定される。たとえば、図１に示す例では、更新周期が第１周期の情報の生成に利用されるプロセスデータ５２Ｂおよびプロセスデータ５２Ｘは、第１周期毎に配信されるように通信設定が生成される。
【００５３】
以上のように、制御システム１ａは、グループ化手段２０ａと、生成手段４０ａとを備えることで、アプリケーション２２０に基づいて、コントローラ１００ａの通信設定を生成する。その結果、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラ１００ａからＨＭＩ２００ａに向けて送信されるような通信設定４００を容易に行うことができる。
【００５４】
§２  構成例
以下、上記適用例に示した制御システムを実現する構成例について説明する。
【００５５】
［実施の形態１］
＜制御システム１の全体構成＞
図２は、実施の形態１に係る制御システム１の概略を示す図である。制御システム１は、サポート装置３００と、コントローラ１００と、ＨＭＩ２００とを含む。
【００５６】
実施の形態１において、コントローラ１００とＨＭＩ２００との間の通信方式は、ＯＰＣ  ＵＡのパブリッシュ・サブスクライブ（Publish-Subscribe）型の通信方式であるとして説明する。なお、以下、ＯＰＣ−ＵＡのパブリッシュ・サブスクライブ型の通信方式が適用された通信をＰｕｂＳｕｂ通信ともいう。ＰｕｂＳｕｂ通信の概要は、後述する。
【００５７】
コントローラ１００は、１または複数のフィールドデバイス５００を直接または間接的に制御する。コントローラ１００が制御するフィールドデバイス５００のネットワーク構成は、ユーザによって任意に設計される。
【００５８】
また、図２に示す例では、コントローラ１００とＨＭＩ２００とが１対１で接続されている構成を示している。コントローラ１００とＨＭＩ２００との接続方法は、これに限らず、コントローラ１００とＨＭＩ２００との間に別の装置が設けられていても良い。
【００５９】
コントローラ１００とＨＭＩ２００とを含むネットワークの構成およびコントローラ１００とフィールドデバイス５００とを含むネットワークの構成は、図２に示す例に限られず、ユーザが任意に設計可能である。たとえば、ＨＭＩ２００は、複数のコントローラと通信可能に接続されていてもよい。また、コントローラ１００は、複数のＨＭＩ２００と通信可能に接続されていてもよい。
【００６０】
サポート装置３００は、ＨＭＩ２００が実行するアプリケーション２２０の開発環境、およびコントローラ１００で実行される制御プログラム１２０の開発環境を提供するとともに、コントローラ１００とＨＭＩ２００との間の通信環境を設定するための環境を提供する。このような開発環境および設定環境は、サポート装置３００に、サポートプログラムがインストールされることで提供される。サポートプログラムは、たとえば、オムロン社製の「Ｓｙｓｍａｃ  Ｓｔｕｄｉｏ」である。
【００６１】
ユーザは、サポートプログラムを利用して、コントローラ１００用の制御プログラム１２０を設計し、設計した制御プログラム１２０をコントローラ１００にインストールすることができる。また、ユーザは、サポートプログラムを利用して、ＨＭＩ２００用のアプリケーション２２０を設計し、設計したアプリケーション２２０をＨＭＩ２００にインストールすることができる。また、サポート装置３００は、サポートプログラムを実行することで、設計された制御プログラム１２０とアプリケーション２２０とから、アプリケーション２２０を実現するための通信設定４００を生成して、生成した通信設定４００をコントローラ１００にインストールする。
【００６２】
なお、制御プログラム１２０を開発するためのプログラムと、アプリケーション２２０を開発するためのプログラムと、通信設定４００を生成するためのプログラムとは、パッケージ化されて一つのプログラムで提供される必要はなく、別々に提供されてもよい。
【００６３】
また、通信設定４００は、サポート装置３００からコントローラ１００に向けてインストール可能な形式で生成される必要はなく、たとえば、レポート形式で生成されてもよい。このようにすることで、ユーザは、サポート装置３００から直接、通信設定４００をインストールすることが出来ないコントローラの設定も容易に行うことができる。
【００６４】
＜Ｂ．ＰｕｂＳｕｂ通信＞
図３は、ＰｕｂＳｕｂ通信の概要を説明するための図である。以下の説明では、データを配信する側を「パブリッシャー」と称し、パブリッシャーが配信したデータを購読する側を「サブスクライバー」と称する。実施の形態１に係る制御システム１において、コントローラ１００は、データを配信するパブリッシャーに相当する。一方、ＨＭＩ２００は、コントローラ１００が配信したデータを購読するサブスクライバーに相当する。
【００６５】
パブリッシャーは、１または複数のデータを格納したデータセットを生成して配信する。パブリッシャーは、送信先を特定することなく、パブリッシャーおよびサブスクライバーを含むネットワークにデータセットをマルチキャストする。
【００６６】
サブスクライバーは、購読対象のデータを規定する１または複数のサブスクリプションを有する。サブスクライバーはサブスクリプションごとに購読を開始または停止する。たとえば、図３に示す例では、サブスクライバーは、サブスクリプションＡの購読を開始した場合には、データａ，データｂの購読を開始する。一方、サブスクリプションＢの購読を開始した場合には、データａ，データｅの購読を開始する。なお、異なるサブスクリプションに共通の購読対象が含まれていても良い。
【００６７】
サブスクライバーは、パブリッシャーが配信した複数種類のデータセットのうち、購読中のサブスクリプションに含まれるデータを含むデータセットを少なくとも受信する。たとえば、図３に示す例では、購読中のサブスクリプションを斜線で示している。サブスクライバーは、サブスクリプションＢを購読中の場合、データａおよびデータｂが格納されたデータセット１と、データｅが格納されたデータセット３とを少なくとも受信する。なお、サブスクライバーは、図３に示す例では、データセット２を受信しないものとしているが、受信してもよい。また、サブスクライバーは、少なくとも購読対象のデータを読み取ることができればよく、図３に示す例のように、購読対象ではないデータを含むデータセット（データセット１）を受信してもよい。
【００６８】
なお、サブスクライバーがデータの購読の開始と停止とを管理する方法は、図３に示す方法に限られない。たとえば、データごとに管理してもよい。
【００６９】
図４および図５を参照して、ＨＭＩ２００とコントローラ１００との間のＰｕｂＳｕｂ通信の概要について説明する。図４は、サブスクライバーとして機能するＨＭＩ２００の概要を説明するための図である。図５は、パブリッシャーとして機能するコントローラ１００の概要を説明するための図である。
【００７０】
図４を参照して、ＨＭＩ２００は、表示部２４２と、複数のアプリケーション２２０（２２０−１，２２０−２…）と、ＯＰＣ  ＵＡクライアント６０とを備える。各アプリケーション２２０は、表示部２４２に特定のページを表示するためのプログラムである。図４には、表示部２４２にページ１を表示するためのアプリケーション１が実行されている例が示されている。
【００７１】
各ページは、複数のオブジェクト５４を含む。たとえば、ページ１は、オブジェクト５４ａ〜オブジェクト５４ｄを含む。オブジェクト５４の表示は、プログラムに含まれる変数の値に応じて更新される。たとえば、オブジェクト５４ａの表示は、変数１の値に応じて更新される。同様に、オブジェクト５４ｂの表示は変数２の値に、オブジェクト５４ｃの表示は変数３の値に、オブジェクト５４ｄの表示は変数４の値に応じて更新される。
【００７２】
アプリケーション２２０は、マッピング情報２２２を参照することで、変数の値を更新する。マッピング情報２２２は、変数とプロセスデータとを紐づけた情報である。たとえば、変数１の値は、プロセスデータＡの値に従って更新される。各プロセスデータの値が更新される周期は、アプリケーション２２０の作成に応じてユーザが設定してもよく、また、プロセスデータを管理するコントローラ１００の更新周期に応じて決定されるものでもよい。図４に示す例では、プロセスデータＡ〜プロセスデータＤの各々の値は、コントローラ１００によって第１周期毎に更新され、プロセスデータＸ〜プロセスデータＺの各々の値は、コントローラ１００によって第２周期毎に更新されるものとする。
【００７３】
ＯＰＣ  ＵＡクライアント６０は、ＨＭＩ２００をサブスクライバーとして機能させる。ＯＰＣ  ＵＡクライアント６０は、購読管理手段６２と複数のサブスクリプション６４（サブスクリプション１〜サブスクリプションｎ）と、通信ドライバ６６とを備える。
【００７４】
購読管理手段６２は、実行中のアプリケーション２２０に応じてサブスクリプション６４の購読開始と購読停止とを管理する。具体的には、購読管理手段６２は、複数のサブスクリプション６４のうち、実行中のアプリケーション２２０が参照するプロセスデータが購読対象となるように、購読するサブスクリプション６４を決定する。なお、図４に示す例では、購読中のサブスクリプションを斜線で示す。
【００７５】
サブスクリプション６４は、アプリケーション２２０およびマッピング情報２２２に従って予め生成される。一例として、サブスクリプション６４は、アプリケーション２２０ごとに生成される。また、サブスクリプション６４は、プロセスデータ５２がコントローラ１００において更新される周期毎に生成される。図４に示す例では、サブスクリプション６４は、アプリケーション２２０の種類と、コントローラ１００が更新する周期とに基づいて生成される。より具体的には、アプリケーション１において参照されるプロセスデータＡ、Ｂ，Ｄ，Ｘは、コントローラ１００が更新する周期毎にサブスクリプション１とサブスクリプション２とに割り当てられている。
【００７６】
購読管理手段６２が実行中のアプリケーション２２０に応じて購読の開始と停止とを管理することから、各アプリケーション２２０に応じてサブスクリプションが生成される。なお、一のサブスクリプション６４に含まれる全てのプロセスデータが、一のアプリケーションに利用されるようにサブスクリプションを生成する必要はなく、一のサブスクリプションに互いに異なるアプリケーションで利用される複数のプロセスデータが含まれていても良い。
【００７７】
なお、購読管理手段６２が、プロセスデータ５２の購読の開始と停止とを管理できれば、サブスクリプション６４による管理に限定されるものではない。
【００７８】
通信ドライバ６６は、購読中のプロセスデータが格納されたデータセット５０を受信するように、コントローラ１００から送信されるデータセット５０をフィルタリングする。ＨＭＩ２００は、通信ドライバ６６が受信したデータセット５０に含まれるプロセスデータを利用してマッピング情報２２２に含まれるプロセスデータを更新する。
【００７９】
図５を参照して、コントローラ１００は、制御プログラム１２０と、制御系ネットワークインターフェイス（ＩＦ）１９１と、ＯＰＣ  ＵＡサーバ８０とを備える。
【００８０】
コントローラ１００は、制御プログラム１２０を実行することで、フィールドデバイス５００を制御する。たとえば、制御プログラム１２０は、制御系ネットワークＩＦ１９１を介して入力されたフィールドデバイス５００の状態値を利用してプロセスデータ５２を更新し、更新したプロセスデータ５２を参照して制御演算を実行する。制御プログラム１２０は、実行した制御演算の結果に応じてプロセスデータ５２の値を更新し、制御系ネットワークＩＦ１９１を介してフィールドデバイス５００に向けて、更新したプロセスデータ５２の値を制御値として出力する。
【００８１】
ＯＰＣ  ＵＡサーバ８０は、コントローラ１００をパブリッシャーとして機能させる。ＯＰＣ  ＵＡサーバ８０は、データセット５０を生成するデータセット生成手段８２と、データセット５０を送信する通信ドライバ８４とを備える。
【００８２】
データセット生成手段８２は、通信設定４００を参照して、１または複数のプロセスデータ５２を格納したデータセット５０を生成する。データセット５０は、プロセスデータ５２の集合をいうこともあれば、情報系ネットワーク２上に出力することが可能な形式にしたものをいうこともある。
【００８３】
通信設定４００は、データセット設定４２０と、生成条件４４０とを含む。データセット設定４２０は、一のデータセット５０に格納されるプロセスデータ５２を特定する情報である。なお、一のデータセット５０には、１のプロセスデータ５２だけが格納されるように規定されていてもよく、また、複数のプロセスデータ５２が格納されるように規定されていてもよい。すなわち、「データセット」という用語は、データセット５０に格納される１または複数のプロセスデータ５２の組み合わせを意味する。
【００８４】
すなわち、コントローラ１００は、データセット設定４２０に従ってデータセットを生成する。これにより、通信設定４００が、特定の属性のプロセスデータを一のデータセットとするように規定するものである場合と比べて、コントローラ１００の処理負担が軽減される。
【００８５】
生成条件４４０は、データセット５０を生成する条件を既定する。図５に示す例では、一例として、第１周期ごとに、データセット１、データセット３、データセット７が生成されることが、第２周期ごとに、データセット２、データセット６、データセット９が生成されることが規定されている。
【００８６】
通信ドライバ８４は、データセット生成手段８２が生成したデータセット５０を、情報系ネットワーク２上に配信する。
【００８７】
図４および図５を参照して、ＯＰＣ  ＵＡサーバ８０は、第１周期毎に、プロセスデータＡおよびプロセスデータＢを格納したデータセット１と、プロセスデータＤを格納したデータセット３とを生成して送信する。ＯＰＣ  ＵＡクライアント６０は、アプリケーション１を実行中のときは、サブスクリプション１を購読中とし、データセット１と、データセット３とを読み取る。これにより、アプリケーション１は、変数１〜変数３を、変数１〜変数３に対応するプロセスデータＡ，プロセスデータＢ、プロセスデータＤがコントローラ１００で更新される周期で更新して、オブジェクト５４ａ〜５２ｃの表示を更新する。
【００８８】
また、ＯＰＣ  ＵＡサーバ８０は、第２周期毎に、プロセスデータＸを格納したデータセット２を生成して送信する。ＯＰＣ  ＵＡクライアント６０は、アプリケーション１を実行中のときは、サブスクリプション１を購読中とし、データセット２を読み取る。これにより、アプリケーション１は、変数４を、変数４に対応するプロセスデータＸがコントローラ１００で更新される周期で更新して、オブジェクト５４ｄの表示を更新する。
【００８９】
実行対象のアプリケーションが変わると、ＯＰＣ  ＵＡクライアント６０は、購読対象のサブスクリプション６４を変更して、読み取る対象のデータセット５０を変更する。なお、以下では、購読対象のサブスクリプション６４を変更することを「サブスクリプション６４を変更する」ともいい、サブスクリプション６４を変更することで購読対象を変更することを「購読要求を変更する」ともいう。
【００９０】
このように、ＰｕｂＳｕｂ通信は、実行対象のアプリケーションが変わったとしても、パブリッシャー側の処理を変更する必要がない。そのため、ＰｕｂＳｕｂ通信は、コマンドアンドレスポンド方式の通信に比べて、データを送信する側と、受信する側との間で行う遣り取りの回数を減らすことができる。
【００９１】
一方で、ＯＰＣ  ＵＡクライアント６０は、実行対象のアプリケーション２２０の変更に応じて、サブスクリプション６４を変更することで購読要求も変更する。コントローラ１００とＨＭＩ２００との間でＰｕｂＳｕｂ通信を実現しようとする場合、コントローラ１００（パブリッシャー）側は、アプリケーション２２０の変更に応じて変わる各購読要求を満たすように、データセット５０を生成する必要がある。すなわち、ユーザは、サブスクライバーであるＨＭＩ２００が実行する全てのアプリケーション２２０毎に特化した購読要求を満たすようにコントローラ１００の通信設定４００を設計する必要がある。
【００９２】
実施の形態１において、サポート装置３００は、生成されたアプリケーション２２０に基づいて、アプリケーション２２０ごとに特化した購読要求を満たす通信設定４００を生成する。これにより、ユーザの負担が軽減される。
【００９３】
＜Ｃ．アプリケーションの開発から導入までの流れ＞
図６は、アプリケーションの開発から、開発したアプリケーションを導入するまでの一連の流れの一例を示す図である。なお、図６においては、制御プログラムは予め設計されているものとして説明する。また、図６に示す各ステップは、サポート装置３００が実行するものとする。図６を参照して、通信設定４００が生成されるタイミングについて説明する。
【００９４】
（Ｓｔｅｐ１：アプリケーションの生成）
「アプリケーションの生成」は、ＨＭＩ２００に表示する内容の設計と、設計内容を実現するためのアプリケーションの作成と、当該アプリケーションにおいて利用するプロセスデータの指定とを含む。アプリケーションを作成し、当該アプリケーションにおいて利用するプロセスデータを指定するまでの流れは、多種多様である。たとえば、アプリケーションの作成過程で利用するプロセスデータを指定してもよく、また、アプリケーションの全体を作成したあとに各変数に対してプロセスデータを指定するようにしてもよい。
【００９５】
サポート装置３００は、制御プログラムにおいて参照または更新されるプロセスデータの種類を特定可能な情報をメモリに格納している。サポート装置３００は、メモリに格納されているプロセスデータの種類を特定可能な情報をユーザに提示し、ユーザは提示されたプロセスデータの種類の中からアプリケーションに利用するプロセスデータを指定する。
【００９６】
プロセスデータの指定方法は、利用するプロセスデータを直接特定する方法と、アプリケーションに利用した変数にプロセスデータを紐付ける方法とを含む。実施の形態１においては、アプリケーションに利用した変数にプロセスデータを紐付けることで、アプリケーションに利用するプロセスデータが指定されるものとして説明する。これにより、アプリケーションごとに利用するプロセスデータが特定される。
【００９７】
アプリケーションの生成が完了すると、アプリケーションに利用される変数とプロセスデータとを紐付けたマッピング情報２２２も生成される。なお、サポート装置３００は、アプリケーション毎にマッピング情報を生成してもよく、また、複数のアプリケーションに対して一のマッピング情報を生成してもよい。なお、実施の形態１においては、複数のアプリケーションに対して一のマッピング情報が生成されるものとして説明する。
【００９８】
また、アプリケーションの生成に伴い、サポート装置３００は、サブスクリプション６４を生成する。サブスクリプション６４は、購読管理手段６２が購読の開始、停止を管理しやすくするため、たとえば、アプリケーション２２０ごとに生成される。また、サブスクリプション６４は、通信ドライバ６６が参照しやすいように、たとえば、コントローラ１００の更新周期ごとに生成される。
【００９９】
（Ｓｔｅｐ２：グループ化）
サポート装置３００は、アプリケーションで利用されるプロセスデータ５２の各々を１または複数のグループに割り当てる。たとえば、サポート装置３００は、複数のプロセスデータ５２の各々から予め定められた要素を抽出し、抽出した要素に基づいてプロセスデータ５２をグループ化する。
【０１００】
抽出する要素は、たとえば、プロセスデータ５２が更新される周期、アプリケーションにおいてプロセスデータ５２が更新される周期、プロセスデータ５２が利用されるアプリケーションなどを含む。また、ＨＭＩ２００が複数のコントローラ１００と通信可能に接続されている場合、プロセスデータ５２を管理するコントローラ１００を抽出する要素に含めてもよい。また、グループ化手段２０ａは、ユーザによって任意に設定された条件を満たすように、アプリケーション２２０において利用することが指定されているプロセスデータ５２を１または複数のグループに割り当ててもよい。また、サポート装置３００は、一のグループに含まれるプロセスデータのデータの総量が、情報系ネットワーク２の通信性能に従って決定される１回に送信可能なデータセット５０のサイズを下回るまでグループの振り分けを繰り返すようにしてもよい。
【０１０１】
抽出する要素に基づくグループ化は、たとえば、格納するプロセスデータ５２の属性、コントローラ１００を含むネットワークの構成、コントローラ１００の送信性能、ＨＭＩ２００の受信性能、情報系ネットワーク２の通信性能などに応じて行われる。プロセスデータ５２の属性は、たとえば、制御プログラム１２０において参照または更新されるタイミング、データサイズなどを含む。
【０１０２】
（Ｓｔｅｐ３：通信設定の生成）
サポート装置３００は、プロセスデータ５２の割り当て結果に従って、各グループに含まれる１または複数のプロセスデータ５２が１のデータセット５０に格納されるように通信設定４００を生成する。通信設定４００は、たとえば、ＨＭＩ２００とコントローラ１００との間の通信プロトコル、またはコントローラ１００を含むネットワークの構成に基づいて生成される。
【０１０３】
（Ｓｔｅｐ４：インストール）
サポート装置３００は、Ｓｔｅｐ１で生成されたアプリケーション２２０およびサブスクリプション６４をＨＭＩ２００に、Ｓｔｅｐ３で生成された通信設定４００をコントローラ１００に各々インストールする。なお、通信設定４００およびサブスクリプション６４は、インストール可能な形式で生成される必要はなく、たとえば、レポート形式で出力されてもよい。
【０１０４】
＜Ｃ．機能構成＞
図７は、サポート装置３００が備える機能構成を示すブロック図である。サポート装置３００は、入力部３２０と、表示部３４０と、開発手段３６０と、グループ化手段２０と、生成手段４０とを備える。
【０１０５】
入力部３２０は、ユーザ操作を受け付ける。典型的には、入力部３２０は、タッチパネル、マウス、キーボードなどである。開発手段３６０は、入力部３２０が受け付けたユーザ操作に従ってアプリケーション２２０およびマッピング情報２２２を生成する。
【０１０６】
具体的には、ユーザは、作成したいページ毎に、１または複数のオブジェクト５４を登録する（図７中の（１）オブジェクト登録）。次に、ユーザは、１または複数のオブジェクト５４毎に、オブジェクト５４の表示を更新するための演算と、演算に利用する変数とを登録する（図７中の（２）変数登録）。最後に、ユーザは、登録した変数に対して、制御プログラム１２０から抽出可能なプロセスデータ５２を紐付ける（図７中の（３）紐付け）。これにより、１または複数のアプリケーション２２０、マッピング情報２２２およびサブスクリプション６４が生成される。なお、アプリケーションの作成手順は一例であって、この順序に限定されるものではない。たとえば、変数とプロセスデータとの紐付けがされた後、当該変数を利用してアプリケーションを生成するようにしてもよい。また、図７において、サブスクリプション６４の作成手順については図示していない。
【０１０７】
開発手段３６０は、入力部３２０が受け付けた情報に従ってアプリケーション２２０およびマッピング情報２２２を作成するとともに、表示部３４０を介してアプリケーションの作成に必要なユーザインターフェイスを提供する。
【０１０８】
グループ化手段２０は、第１グループ化手段２２と、第２グループ化手段２４とを含む。第１グループ化手段２２は、マッピング情報２２２およびアプリケーション２２０に基づき、マッピング情報２２２に含まれるプロセスデータ５２の各々をアプリケーション毎にグループ分けする。
【０１０９】
図７に示す例では、プロセスデータＡ，Ｂ，Ｄ，Ｘに対応する変数は、アプリケーション１で利用されるものとする。また、プロセスデータＢ，Ｄに対応する変数は、アプリケーション２で利用されるものとする。すなわち、第１グループ化手段２２は、プロセスデータＡ，Ｂ，Ｄ，ＸをグループＧＲ１に割り当て、プロセスデータＢ，ＤをグループＧＲ２に割り当てる。
【０１１０】
第２グループ化手段２４は、第１グループ化手段２２によって割り当てられた各グループをさらに、コントローラ１００内で更新される周期毎にグループ分けする。プロセスデータ５２がコントローラ１００内で更新される周期は、制御プログラム１２０によって定義される。
【０１１１】
図７に示す例では、プロセスデータＡ，Ｂ，Ｄは、コントローラ１００内で１００ｍｓ毎に更新されるものとする。プロセスデータＸは、イベントＸの発生に伴って更新されるものとする。すなわち、第２グループ化手段２４は、グループ１に割り当てられたプロセスデータＡ，Ｂ，Ｄ，Ｘについて、プロセスデータＡ，Ｂ，ＤをグルーブＧＲ１−１に、プロセスデータＸをグルーブＧＲ１−２に割り当てる。なお、図７に示す例では、グルーブＧＲ２に含まれる各プロセスデータ５２のコントローラ１００内での更新周期は共通しているものとする。
【０１１２】
生成手段４０は、データセット設定生成手段４２と、生成条件生成手段４４とを備える。データセット設定生成手段４２は、データセット設定４２０（図５参照）を生成する。具体的には、データセット設定生成手段４２は、グループ化手段２０によってグループ化された各グループに含まれるプロセスデータ５２が一のデータセット５０に含まれるような、プロセスデータ５２の組み合わせを規定する。
【０１１３】
生成条件生成手段４４は、生成条件４４０（図５参照）を生成する。具体的には、データセット設定生成手段４２が決定したプロセスデータ５２の組み合わせ（データセット）毎の送信条件を決定する。
【０１１４】
図７に示す例では、プロセスデータＡ，Ｂ，Ｄは一のデータセット５０に格納され、プロセスデータＸが異なるデータセット５０に格納されるようにデータセット設定４２０が生成される。
【０１１５】
生成条件生成手段４４は、データセット設定４２０において規定された各データセットの生成条件と送信条件とをデータセット設定４２０および、第２グループ化手段２４の結果に基づいて決定する。
【０１１６】
図７に示す例では、プロセスデータＡ，Ｂ，Ｄが格納されたデータセット５０が１００ｍｓ周期で送信され、プロセスデータＸが格納されたデータセット５０がイベント的に生成されて送信されることが決定される。
【０１１７】
なお、グループ化手段２０は、情報系ネットワーク２の性能として、ＭＴＵ（Maximum Transmission Unit）が規定されている場合、一のグループに含まれるプロセスデータの合計がＭＴＵを超えなくなるまで、グループの分割を繰り返すようにしてもよい。
【０１１８】
また、生成手段４０は、プロセスデータ５２の属性に従って、プロセスデータ５２を格納する順序を規定してもよい。格納する順序は、コントローラ１００の性能や、コントローラ１００のネットワーク構成などに従って、コントローラ１００が格納し易い順序に規定される。
【０１１９】
＜Ｄ．ハードウェア構成＞
図８〜図１０を参照して、制御システム１に含まれる装置のハードウェア構成について順に説明する。図８は、サポート装置３００のハードウェア構成の一例を示す模式図である。図９は、ＨＭＩ２００のハードウェア構成の一例を示す模式図である。図１０は、コントローラ１００のハードウェア構成の一例を示す模式図である。
【０１２０】
（ｄ１．サポート装置３００のハードウェア構成）
サポート装置３００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。サポート装置３００は、据え置き型でもよいし、コントローラ１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。図８を参照して、サポート装置３００は、プロセッサ３１０と、入力部３２０と、表示部３４０と、揮発性メモリ３５０と、不揮発性メモリ３７０と、光学ドライブ３９２と、ＵＳＢ（Universal Serial Bus）コントローラ３９４とを含む。これらのコンポーネントは、プロセッサバス３９６を介して接続されている。
【０１２１】
プロセッサ３１０は、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphical Processing Unit）などで構成され、不揮発性メモリ３７０に格納されたプログラムを読出して、揮発性メモリ３５０に展開して実行することで、制御プログラム１２０およびアプリケーション２２０の作成、デバッグ、並びにコントローラ１００とＨＭＩ２００との間の通信環境を設定するための機能をユーザに提供する。
【０１２２】
揮発性メモリ３５０は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などで構成される。不揮発性メモリ３７０は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などで構成される。
【０１２３】
不揮発性メモリ３７０は、基本的な機能を実現するためのＯＳ（図示省略）に加えて、サポート装置３００としての機能を提供するためのサポートプログラム３７２を格納する。サポートプログラム３７２は、制御プログラム１２０の開発環境を提供する制御プログラム用開発プログラム３７４と、アプリケーション２２０の開発環境を提供するアプリケーション用開発プログラム３７６と、コントローラ１００とＨＭＩ２００との間の通信環境を設定する環境を提供する通信設定プログラム３７８とを含む。
【０１２４】
たとえば、プロセッサ３１０が、アプリケーション用開発プログラム３７６を実行することで、図７に示した開発手段３６０に係る機能が提供される。また、プロセッサ３１０が、通信設定プログラム３７８を実行することで、図７に示したグループ化手段２０および生成手段４０に係る機能が提供される。
【０１２５】
なお、プロセッサ３１０がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。
【０１２６】
入力部３２０および表示部３４０は、図７を参照して説明した通りである。
サポート装置３００は、光学ドライブ３９２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体３９２Ａ（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られて不揮発性メモリ３７０などにインストールされる。
【０１２７】
サポート装置３００で実行されるサポートプログラム３７２などは、コンピュータ読取可能な記録媒体３９２Ａを介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置３００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１２８】
ＵＳＢコントローラ３９４は、ＵＳＢ接続を介して、任意の情報処理装置との間のデータの遣り取りを担当する。具体的には、ＵＳＢコントローラ３９４は、コントローラ１００またはＨＭＩ２００とのデータの遣り取りを担当する。
【０１２９】
（ｄ２．ＨＭＩ２００のハードウェア構成）
ＨＭＩ２００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。ＨＭＩ２００は、据え置き型でもよいし、コントローラ１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。図９を参照して、ＨＭＩ２００は、プロセッサ２１０と、タッチパネル２４０と、揮発性メモリ２５０と、不揮発性メモリ２７０と、通信ＩＦ２９２と、ＵＳＢコントローラ２９４とを備える。これらのコンポーネントは、プロセッサバス２９６を介して接続されている。
【０１３０】
プロセッサ２１０は、ＣＰＵやＧＰＵなどで構成され、不揮発性メモリ２７０に格納されたプログラムを読み出して、揮発性メモリ２５０に展開して実行することで、制御プログラム１２０の実行によって得られる各種情報をタッチパネル２４０に出力する。
【０１３１】
揮発性メモリ２５０は、ＤＲＡＭやＳＲＡＭなどで構成される。不揮発性メモリ２７０は、たとえば、ＨＤＤやＳＳＤなどで構成される。
【０１３２】
不揮発性メモリ２７０は、基本的な機能を実現するためのＯＳ（図示省略）に加えて、ＯＰＣ  ＵＡプログラム２６０と、１または複数のサブスクリプション６４と、１または複数のアプリケーション２２０と、マッピング情報２２２とを格納する。
【０１３３】
ＯＰＣ  ＵＡプログラム２６０は、ＨＭＩ２００をサブスクライバーとして機能させるためのプログラムであって、コントローラ１００とＨＭＩ２００との間で、ＯＰＣ  ＵＡに従った通信を行うためのプログラムである。プロセッサ２１０がＯＰＣ  ＵＡプログラム２６０を実行することで、図４に示したＯＰＣ  ＵＡクライアント６０に係る機能が提供される。ＯＰＣ  ＵＡプログラム２６０は、たとえば、他の外部記憶媒体（たとえばメモリカード、ネットワーク上のサーバ装置）から、不揮発性メモリ２７０にインストールされる。
【０１３４】
１または複数のサブスクリプション６４と、１または複数のアプリケーション２２０と、マッピング情報２２２とは、各々、サポート装置３００が提供する環境下で作成される。サポート装置３００が提供する環境下で作成された各データは、典型的には、ＵＳＢ接続を介して、不揮発性メモリ２７０にインストールされる。なお、サポート装置３００が提供する環境下で作成された各データの全部または一部は、他の外部記憶媒体（たとえばメモリカード、ネットワーク上のサーバ装置）を介して、不揮発性メモリ２７０にインストールされてもよい。
【０１３５】
なお、プロセッサ２１０がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。また、ＨＭＩ２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１３６】
タッチパネル２４０は、ディスプレイである表示部２４２と、遊技者の操作を受け付ける入力部２４４とを備える。なお、表示部２４２と入力部２４４とが別体で構成されていてもよい。
【０１３７】
通信ＩＦ２９２は、コントローラ１００とのデータの遣り取りを担当する。ＵＳＢコントローラ２９４は、ＵＳＢ接続を介して、任意の情報処理装置との間のデータの遣り取りを担当する。具体的には、ＵＳＢコントローラ２９４は、サポート装置３００との間でデータを遣り取りする。
【０１３８】
（ｂ３．コントローラ１００のハードウェア構成）
図１０を参照して、コントローラ１００は、主たるコンポーネントとして、プロセッサ１１０と、チップセット１９６と、不揮発性メモリ１７０と、揮発性メモリ１５０と、制御系ネットワークＩＦ１９１と、情報系ネットワークＩＦ１９２と、ＵＳＢコントローラ１９３と、メモリカードＩＦ１９４と、内部バスコントローラ１９５とを含む。
【０１３９】
プロセッサ１１０は、ＣＰＵやＧＰＵなどで構成され、不揮発性メモリ１７０に格納された各種プログラムを読み出して、揮発性メモリ１５０に展開して実行することで、フィールドデバイス５００の制御および、パブリッシャーとしての機能を実現する。チップセット１９６は、プロセッサ１１０と各コンポーネントとの間のデータの遣り取りを仲介することで、コントローラ１００全体としての処理を実現する。
【０１４０】
不揮発性メモリ１７０には、制御プログラム１２０と、ＯＰＣ  ＵＡプログラム１８０と、通信設定４００とが格納される。
【０１４１】
制御プログラム１２０は、典型的には、ユーザがサポート装置３００を操作して設計することで生成されるユーザプログラムと、コントローラ１００の基本的な機能を提供するシステムプログラムとから構成される。ユーザプログラムとシステムプログラムとが協働してユーザにおける制御目的を実現することで、フィールドデバイス５００が制御される。
【０１４２】
ＯＰＣ  ＵＡプログラム１８０は、コントローラ１００をパブリッシャーとして機能させるためのプログラムであって、コントローラ１００とＨＭＩ２００との間で、ＯＰＣ  ＵＡに従った通信を行うためのプログラムである。プロセッサ１１０が、ＯＰＣ  ＵＡプログラム１８０を実行することで、図５に示したＯＰＣ  ＵＡサーバ８０に係る機能が提供される。ＯＰＣ  ＵＡプログラム１８０は、たとえば、システムプログラムの一種として予めコントローラ１００にインストールされていてもよく、また、他の外部記憶媒体（たとえばメモリカード１９４Ａ、ネットワーク上のサーバ装置）から、不揮発性メモリ１７０にインストールされてもよい。
【０１４３】
通信設定４００は、サポート装置３００が提供する環境下で生成される。通信設定４００および、ユーザがサポート装置３００を操作して設計することで生成された制御プログラム１２０は、典型的には、ＵＳＢ接続を介して、不揮発性メモリ１７０にインストールされる。なお、サポート装置３００が提供する環境下で作成された各データの全部または一部は、他の外部記憶媒体（たとえばメモリカード１９４Ａ、ネットワーク上のサーバ装置）を介して、不揮発性メモリ１７０にインストールされてもよい。
【０１４４】
なお、プロセッサ１１０がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。また、コントローラ１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【０１４５】
制御系ネットワークＩＦ１９１は、フィールドデバイス５００との間のデータの遣り取りを担当する。
【０１４６】
情報系ネットワークＩＦ１９２は、ＨＭＩ２００との間のデータの遣り取りを担当する。
【０１４７】
ＵＳＢコントローラ１９３は、ＵＳＢ接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。具体的には、ＵＳＢコントローラ１４６は、サポート装置３００との間のデータの遣り取りを担当する。
【０１４８】
メモリカードＩＦ１９４は、メモリカード１９４Ａを着脱可能に構成されており、メモリカード１９４Ａに対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード１９４Ａから制御プログラムや各種設定などのデータを読出すことが可能になっている。
【０１４９】
内部バスコントローラ１９５は、コントローラ１００に搭載される図示しないＩ／Ｏユニットなどとの間でデータを遣り取りするインターフェイスである。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【０１５０】
＜Ｅ．グループ化の変形例＞
実施の形態１において、ＨＭＩ２００は、一のコントローラ１００と通信可能に接続されているものとした。また、１または複数のアプリケーション２２０に利用されるプロセスデータ５２は、一のコントローラ１００から送信されるものとした。その上で、グループ化手段２０は、第１グループ化手段２２と、第２グループ化手段２４とを備えるものとして説明した。
【０１５１】
なお、ＨＭＩ２００は、複数のコントローラ１００と通信可能に接続されてもよい。この場合、１または複数のアプリケーション２２０は、互いに異なるコントローラ１００から送信される複数のプロセスデータ５２を利用するように構成されてもよい。また、この場合、グループ化手段２０は、図７を参照して説明したグループ化の方法とは異なる方法でグループ化してもよい。
【０１５２】
図１１を参照して、アプリケーション２２０が、互いに異なるコントローラ１００から送信される複数のプロセスデータ５２を利用するように構成されている場合のアプリケーションの実行段階について説明する。図１１は、変形例に係るアプリケーションの実行段階を説明するための図である。なお、図４を参照して説明した、実施の形態１にかかるＨＭＩ２００が備える構成に相当する構成については、図４と共通の符号を付し、説明を省略する。
【０１５３】
ＨＭＩ２００ｂは、複数のコントローラ１００−１，１００−２，１００−３と通信可能に接続されている。ＨＭＩ２００ｂは、ＯＰＣ  ＵＡクライアント６０ｂを備える。ＯＰＣ  ＵＡクライアント６０ｂは、接続されたコントローラ１００−１，１００−２，１００−３ごとに通信ドライバ６６ｂ−１、６６ｂ−２，６６ｂ−３を備える。
【０１５４】
各サブスクリプション６４ｂは、各サブスクリプション６４ｂに含まれる購読対象のプロセスデータ５２が互いに共通のコントローラ１００が管理するように設定される。具体的には、サブスクリプション１に含まれるプロセスデータａ，ｂ，ｃは、いずれも、コントローラ１００−１によって管理されるプロセスデータ５２である。また、サブスクリプション２に含まれるプロセスデータｌ，ｍ，ｎは、いずれも、コントローラ１００−２によって管理されるプロセスデータ５２である。また、サブスクリプション３に含まれるプロセスデータｘ，ｙ，ｚは、いずれも、コントローラ１００−３によって管理されるプロセスデータ５２である。
【０１５５】
アプリケーション１の実行に、プロセスデータａ，ｂ，ｃが利用される場合は、サブスクリプション１が購読対象となる。この場合、コントローラ１００−１から送られるデータセット５０のみが購読対象となり、コントローラ１００−２、コントローラ１００−３から送られるデータセット５０は、購読対象とはならない。
【０１５６】
図１２を参照して、アプリケーション２２０が、互いに異なるコントローラ１００から送信される複数のプロセスデータ５２を利用するように構成されている場合の通信設定の生成方法について説明する。図１２は、変形例に係るグループ化手段２０ｂおよび生成手段４０ｂの概略図である。なお、図７を参照して説明した、実施の形態１にかかるＨＭＩ２００が備える構成に相当する構成については、図７と共通の符号を付し、説明を省略する。
【０１５７】
グループ化手段２０ｂは、第１グループ化手段２２と第２グループ化手段２４に加えて第３グループ化手段２６を備える。グループ化手段２０ｂは、第３グループ化手段２６、第１グループ化手段２２、第２グループ化手段２４の順にグループ化を進める。
【０１５８】
第３グループ化手段２６は、アプリケーションで利用されるプロセスデータ５２の各々についてプロセスデータ５２を管理するコントローラ１００毎にグループ分けする。図１２に示す例では、プロセスデータａ，ｂ，ｃは、コントローラ１００−１が管理するプロセスデータであり、プロセスデータｌ，ｍ，ｎは、コントローラ１００−２が管理するプロセスデータであり、プロセスデータｘ，ｙ，ｚは、コントローラ１００−３が管理するプロセスデータである。そのため、第３グループ化手段２６は、プロセスデータａ，ｂ，ｃをグループＧＲ１に割り当て、プロセスデータｌ，ｍ，ｎをグループＧＲ２に、プロセスデータｘ，ｙ，ｚをグループＧＲ３割り当てる。なお、プロセスデータ５２を管理するコントローラ１００は、各コントローラ１００−１，１００−２，１００−３で実行される制御プログラム１２０から特定される。
【０１５９】
その後、第１グループ化手段２２は、第３グループ化手段２６によって割り当てられた各グループをさらに、アプリケーション毎にグループ分けする。なお、第１グループ化手段２２および第２グループ化手段２４の実行内容は、図７と共通するため、説明を省略する。
【０１６０】
生成手段４０ｂは、コントローラ１００−１，１００−２，１００−３ごとに通信設定４００を生成する。コントローラ１００−１の通信設定４００−１は、第３グループ化手段２６によってグループ化されたグループＧＲ１から派生した各グループに含まれるプロセスデータ５２が一のデータセット５０に格納されるように生成される。同様に、コントローラ１００−２の通信設定４００−２は、第３グループ化手段２６によってグループ化されたグループＧＲ２から派生した各グループに含まれるプロセスデータ５２が一のデータセット５０に格納されるように生成される。コントローラ１００−３の通信設定４００−３は、第３グループ化手段２６によってグループ化されたグループＧＲ３から派生した各グループに含まれるプロセスデータ５２が一のデータセット５０に格納されるように生成される。
【０１６１】
このように、アプリケーションに含まれる複数のプロセスデータ５２の各々について、管理するコントローラ１００が異なる場合は、コントローラごとに通信設定４００を生成する必要がある。本変形例のように、複数のプロセスデータ５２の各々について、当該プロセスデータ５２を管理するコントローラ１００ごとにグループ分けした上で、各グループについて通信設定４００を生成することで、少ない処理で、複数のコントローラの各々についての通信設定を生成することができる。
【０１６２】
また、実施の形態１および当該変形例にかかる制御システムは、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラからＨＭＩに向けて送信されるような通信設定４００を容易に行うことができる。
【０１６３】
また、実施の形態１および当該変形例において、サポート装置３００は、アプリケーションの開発と通信設定とを一括で行うことができる。また、実施の形態１および当該変形例において、サポート装置３００は、アプリケーションの開発環境と通信の設定環境とだけでなく、制御プログラムの開発環境も提供する。そのため、アプリケーションと制御プログラムとの関係性を考慮した通信設定の実現を容易にできる。
【０１６４】
［実施の形態２］
実施の形態１において、通信設定４００を生成するための環境は、アプリケーション２２０を生成するための環境と同じ、サポート装置３００によって実現されるものとした。なお、通信設定４００を生成するための環境は、アプリケーション２２０を生成するための環境とは別に設けても良い。具体的には、通信設定４００を生成するための環境は、通信設定４００を生成するための専用の設定機器によって実現されてもよい。
【０１６５】
＜Ａ．制御システムの構成＞
図１３は、実施の形態２に係る制御システム１ｃの概略を示す図である。図１３を参照して、実施の形態２において、制御システム１ｃは、コントローラ１００と、ＨＭＩ２００と、設定機器６００とを含む。実施の形態１に係る制御システム１と、実施の形態２の制御システム１ｃとを比較すると、制御システム１ｃは、サポート装置３００に代えて設定機器６００を備える点で制御システム１と異なる。なお、ＨＭＩ２００には、既にアプリケーション２２０およびサブスクリプション６４がインストールされているものとする。また、コントローラ１００には、既に制御プログラム１２０がインストールされているものとする。
【０１６６】
設定機器６００は、ＵＳＢ接続などを介してＨＭＩ２００と通信可能に接続される。設定機器６００は、ＨＭＩ２００にインストールされているサブスクリプション６４をエクスポートする。設定機器６００は、サブスクリプション６４に基づいて、通信設定４００を生成する。
【０１６７】
設定機器６００は、ＵＳＢ接続などを介してコントローラ１００と通信可能に接続される。設定機器６００は、サブスクリプション６４に基づいて生成した通信設定４００をコントローラ１００に送信する。
【０１６８】
これにより、コントローラ１００とＨＭＩ２００との間のＰｕｂＳｕｂ通信が確立される。
【０１６９】
より具体的には、設定機器６００は、グループ化手段２０ｃと、生成手段４０ｃとを備える。グループ化手段２０ｃは、ＨＭＩ２００からインストールした各サブスクリプション６４から購読対象に規定されているプロセスデータ５２を抽出する。抽出したプロセスデータ５２をサブスクリプション６４ごとにグループ分けする。なお、一のサブスクリプション６４で規定される複数のプロセスデータ５２は、少なくとも、互いに管理されるコントローラ１００が共通しているものとする。
【０１７０】
なお、グループ化手段２０ｃは、サブスクリプション６４ごとにグループ分けしなくともよく、上記実施の形態１および、実施の形態１の変形例に示した方法でグループ分けしてもよい。
【０１７１】
生成手段４０ｃは、グループ化手段２０ｃの割り振り結果に従って通信設定４００を生成する。なお、生成手段４０ｃが通信設定４００を生成する方法は、上記実施の形態１と共通するため、説明を省略する。生成手段４０ｃは、生成した通信設定４００を対応するコントローラ１００に送信する。
【０１７２】
＜Ｂ．設定機器のハードウェア構成＞
図１４は、設定機器６００のハードウェア構成の一例を示す模式図である。設定機器６００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。設定機器６００は、据え置き型でもよいし、コントローラ１００が配置される製造現場では可搬性に優れたノート型のパーソナルコンピュータの形態で提供されてもよい。
【０１７３】
図１４を参照して、設定機器６００は、プロセッサ６１０と、入力部６２０と、表示部６４０と、揮発性メモリ６５０と、不揮発性メモリ６７０と、ＵＳＢコントローラ６９４とを含む。これらのコンポーネントは、プロセッサバス６９６を介して接続されている。
【０１７４】
プロセッサ６１０は、ＣＰＵやＧＰＵなどで構成され、不揮発性メモリ６７０に格納されたプログラムを読出して、揮発性メモリ６５０に展開して実行することで、コントローラ１００とＨＭＩ２００との間の通信環境を設定するための機能をユーザに提供する。
【０１７５】
揮発性メモリ６５０は、ＤＲＡＭやＳＲＡＭなどで構成される。不揮発性メモリ６７０は、例えば、ＨＤＤやＳＳＤなどで構成される。
【０１７６】
不揮発性メモリ６７０は、基本的な機能を実現するためのＯＳに加えて、コントローラ１００とＨＭＩ２００との間の通信環境を設定する環境を提供する通信設定プログラム６７８を格納する。
【０１７７】
たとえば、プロセッサ６１０が、通信設定プログラム６７８を実行することで、上述した機能が提供される。なお、プロセッサ６１０がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０１７８】
入力部６２０は、ユーザ操作を受け付ける。典型的には、入力部３２０は、タッチパネル、マウス、キーボードなどである。表示部６４０は、ユーザに情報を提示する。典型的には、表示部６４０は、ディスプレイである。
【０１７９】
通信設定プログラム６７８などは、コンピュータ読取可能な記録媒体を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係る設定機器６００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１８０】
ＵＳＢコントローラ６９４は、ＵＳＢ接続を介して、任意の情報処理装置との間のデータの遣り取りを担当する。具体的には、ＵＳＢコントローラ６９４は、コントローラ１００またはＨＭＩ２００とのデータの遣り取りを担当する。
【０１８１】
＜Ｃ．制御システム１ｃの変形例＞
実施の形態２に係る制御システム１ｃは、サブスクリプション６４が既にＨＭＩ２００にインストールされているものとして説明した。なお、設定機器６００は、サブスクリプション６４を生成する機能を有していても良い。すなわち、設定機器６００は、ＨＭＩ２００からアプリケーション２２０およびマッピング情報２２２をエクスポートして、これらの情報に基づいてサブスクリプション６４と通信設定４００とを生成し、各々をＨＭＩ２００とコントローラ１００とにインストールするようにしてもよい。なお、設定機器６００は、アプリケーション２２０およびマッピング情報２２２から、通信設定４００を生成する機能のみを有していても良い。
【０１８２】
このように、実施の形態２および当該変形例においては、設定機器６００によって、ＨＭＩ２００とコントローラ１００との間の通信環境の支援機能が提供される。この場合も、実施の形態１と同様、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラからＨＭＩに向けて送信されるような通信設定４００を容易に行うことができる。
【０１８３】
また、設定機器６００によって、ＨＭＩ２００とコントローラ１００との間の通信環境の支援機能が提供されることで、既にアプリケーションの開発環境および制御プログラムの開発環境がある現場に、容易に導入することができる。
【０１８４】
［実施の形態３］
実施の形態１および実施の形態２においては、ＨＭＩ２００とコントローラ１００との通信を開始する前に、通信設定４００を生成するものとした。なお、通信設定４００は、ＨＭＩ２００とコントローラ１００との通信を開始した後、サブスクライバーであるＨＭＩ２００から購読要求がされるときに設定されるものであってもよい。実施の形態３は、ＨＭＩ２００から購読要求がされるときに通信設定４００が設定される例を示す。
【０１８５】
＜Ａ．制御システム１ｄの構成＞
図１５は、実施の形態３に係る制御システム１ｄの概略を示す図である。図１５を参照して、制御システム１ｄは、コントローラ１００ｄと、ＨＭＩ２００と、中継装置７００とを備える。実施の形態１に係る制御システム１と、実施の形態３の制御システム１ｄとを比較すると、制御システム１ｄは、コントローラ１００に代えてコントローラ１００ｄを備える点、および、サポート装置３００に代えて中継装置７００を備える点で制御システム１と異なる。なお、ＨＭＩ２００には、既にアプリケーション２２０およびサブスクリプション６４がインストールされているものとする。また、コントローラ１００ｄには、既に制御プログラム１２０がインストールされているものとする。
【０１８６】
中継装置７００は、グループ化手段２０ｄと、生成手段４０ｄとに加えて、送受信管理手段７０およびプロセスデータ管理手段７２を備える。
【０１８７】
送受信管理手段７０は、ＨＭＩ２００からの購読要求を受けて、要求を満たすように、コントローラ１００ｄから配信されるデータセット５０をＨＭＩ２００に送信する。具体的には、送受信管理手段７０は、ＨＭＩ２００のサブスクリプション６４とコントローラ１００ｄから配信されるデータセット５０とを対応付けたトピックリスト７４を参照することで、コントローラ１００ｄから配信される複数種類のデータセット５０の中から、購読要求を満たすデータセット５０を選択してＨＭＩ２００に送信する。
【０１８８】
送受信管理手段７０は、トピックリスト７４を参照して、ＨＭＩ２００からの購読要求を満たすことができないと判定した場合、グループ化手段２０ｄおよび生成手段４０ｄに対して、ＨＭＩ２００の購読要求を満たすデータセット５０をコントローラ１００ｄから配信されるように通信設定４００を生成するための処理の実行を要求する。
【０１８９】
グループ化手段２０ｄは、プロセスデータ５２と、プロセスデータ５２を配信するコントローラ１００ｄとの対応関係を規定するプロセスデータリスト７６を参照して、ＨＭＩ２００からのサブスクリプション６４に含まれる１または複数のプロセスデータ５２を１または複数のグループに割り振る。なお、実施の形態３においては、ＨＭＩ２００と通信可能に接続されているコントローラ１００ｄは１つである例を示しているが、ＨＭＩ２００と通信可能に複数のコントローラが接続されている場合、グループ化手段２０ｄは、少なくとも、プロセスデータ５２をコントローラごとに振り分ける。
【０１９０】
プロセスデータリスト７６は、プロセスデータ管理手段７２によって管理される。プロセスデータ管理手段７２は、中継装置７００とコントローラ１００ｄとの通信が確立すると、コントローラ１００ｄに対して、管理しているプロセスデータ５２を示す情報の送信を要求する。プロセスデータ管理手段７２は、プロセスデータ５２を示す情報（図１５中のプロセスデータ情報）を受けて、コントローラ１００ｄとコントローラ１００ｄが管理するプロセスデータ５２との対応関係が、プロセスデータリスト７６に登録されているか否かを確認し、登録されていなければ、コントローラ１００ｄとコントローラ１００ｄが管理するプロセスデータ５２との対応関係をプロセスデータリスト７６に登録する。
【０１９１】
グループ化手段２０ｄは、たとえば、一のグループに含まれるプロセスデータの合計がコントローラ１００ｄの通信性能を超えない範囲となるようにサブスクリプション６４に含まれる１または複数のプロセスデータ５２を１または複数のグループに割り振る。
【０１９２】
生成手段４０ｄは、振り分け結果に従い一のデータセット５０に格納するプロセスデータ５２の組み合わせを規定する。生成手段４０ｄは、コントローラ１００ｄに向けて、規定したプロセスデータ５２の組み合わせを一のデータセット５０に格納して送信するようにコントローラ１００ｄに要求する。
【０１９３】
また、生成手段４０ｄは、送受信管理手段７０に規定した結果を通知する。送受信管理手段７０は、ＨＭＩ２００のサブスクリプション６４に対して生成手段４０ｄが規定した結果を対応付けてトピックリスト７４に登録する。
【０１９４】
中継装置７００は、新たな購読要求がされる度に、データセット５０を新たに規定する。コントローラ１００ｄは、新たに規定されたデータセット５０を送信するように通信設定４００を更新する。また、中継装置７００は、データセット５０を新たに規定すると、トピックリスト７４を更新する。また、中継装置７００は、新たにコントローラが接続されると、プロセスデータリスト７６を更新する。
【０１９５】
＜Ｂ．シーケンス＞
図１６は、中継装置７００とコントローラ１００ｄとの通信が開始してから、通信設定４００がコントローラ１００ｄに送られるまでの流れを示すシーケンス図である。なお、以下では「ステップ」を単に「Ｓ」と示す。
【０１９６】
Ｓ１２０において、中継装置７００とコントローラ１００ｄとがネットワーク接続されたものとする。
【０１９７】
Ｓ１２２において、中継装置７００は、コントローラ１００に向けてプロセスデータ５２の登録を要求する。
【０１９８】
Ｓ１２４において、コントローラ１００ｄは、要求を受けて、プロセスデータ５２を登録する。
【０１９９】
Ｓ１２６において、中継装置７００は、プロセスデータリスト７６を更新する。
中継装置７００は、ＨＭＩ２００から購読要求がされると（Ｓ１２８）、ＨＭＩ２００にデータセットを送信するための処理（Ｓ１５０）を開始する。
【０２００】
Ｓ１５２において、中継装置７００は、サブスクリプション６４に含まれるプロセスデータ５２を、プロセスデータリスト７６に従って、１または複数のグループに割り振る。
【０２０１】
たとえば、サブスクリプション６４に含まれるプロセスデータ５２は、コントローラ１００ｄで更新される周期ごとに割り振られる。また、サブスクリプション６４に含まれるプロセスデータ５２は、一のグループに含まれるプロセスデータの合計がコントローラ１００ｄの通信性能を超えない範囲となるように割り振られる。
【０２０２】
Ｓ１５４において、中継装置７００は、振り分け結果に従い一のデータセット５０に格納するプロセスデータ５２の組み合わせを規定する。
【０２０３】
Ｓ１５６において、中継装置７００は、トピックリスト７４を更新する。Ｓ１５８において、Ｓ１５４において生成したデータセットを送信するようにコントローラ１００に要求する。このデータセットの送信要求が通信設定４００に相当する。
【０２０４】
コントローラ１００ｄは、要求に応じて通信設定４００を更新する（Ｓ１６０）。コントローラ１００は、更新した通信設定４００に従ってデータセットを生成して送信する（Ｓ１６２，Ｓ１６４）。
【０２０５】
Ｓ１６６において、中継装置７００は、送られたデータセット５０を送信するＨＭＩ２００をトピックリスト７４に従って特定する。Ｓ１６８において、中継装置７００は、特定した送信先（ＨＭＩ２００）にデータセットを送信する。
【０２０６】
その後、ＨＭＩ２００から購読要求の停止がされると（Ｓ１７０）、中継装置７００は、トピックリスト７４を更新して（Ｓ１７２）、コントローラ１００ｄから送られるデータセットのＨＭＩ２００への送信を停止する。これにより、中継装置７００の一の購読要求に対してデータセットを送信する処理（Ｓ１５０）が終了する。
【０２０７】
なお、コントローラ１００ｄは、ＨＭＩ２００から購読要求の停止がされても、継続してプロセスデータを送信し続けるものとする。
【０２０８】
なお、中継装置７００は、購読要求がされる度にトピックリスト７４を参照して、サブスクリプション６４により規定される購読対象のプロセスデータ５２が配信されているか否かを判定する。たとえば、トピックリスト７４には、サブスクリプション６４ごとに、サブスクリプション６４が規定する購読要求を満たすためのデータセットの組み合わせが規定されている。中継装置７００は、トピックリスト７４を参照して、購読要求がされたサブスクリプション６４がトピックリスト７４に登録されているか否かを判定する。
【０２０９】
トピックリスト７４に購読要求がされたサブスクリプション６４が登録されている場合、中継装置７００は、購読要求をしたＨＭＩ２００に向けて、購読要求がされたサブスクリプション６４が規定する購読要求を満たすための１または複数種類のデータセットを送信するように、トピックリスト７４を更新する。
【０２１０】
トピックリスト７４に購読要求がされたサブスクリプション６４が登録されていない場合、中継装置７００は、トピックリスト７４に登録されているデータセットのうち、購読要求がされたサブスクリプション６４により規定される購読対象のプロセスデータ５２を含むデータセットを特定する。そして、中継装置７００は、特定したデータセットに含まれるプロセスデータ５２をサブスクリプション６４から除外して、グループ化およびデータセットの規定をし、規定したデータセット５０の生成および送信をコントローラ１００ｄに要求するとともに、トピックリスト７４を更新する。
【０２１１】
具体的には、トピックリスト７４にプロセスデータａ，ｂから構成されたデータセット１と、プロセスデータａ，ｆから構成されたデータセット２とが、既に登録されているものとする。この場合に、新たに要求されたサブスクリプション６４に含まれるプロセスデータがプロセスデータａ，ｂ，ｃ，ｄであったとする。このとき、中継装置７００は、要求されたサブスクリプション６４とデータセット１とを対応付けてトピックリスト７４に登録する。また、プロセスデータｃ、ｄを、グループ化およびデータセットの生成の対象とする。たとえば、プロセスデータｃ、ｄを一のデータセット３として生成することが決定された場合、中継装置７００は、要求されたサブスクリプション６４とデータセット３とを対応付けてトピックリスト７４に登録する。
【０２１２】
これにより、要求されたサブスクリプション６４に対して、データセット１およびデータセット３が対応付けられてトピックリスト７４に登録されたこととなる。中継装置７００は、トピックリスト７４を参照して、サブスクリプション６４を要求したＨＭＩ２００に向けてデータセット１およびデータセット３を配信する。
【０２１３】
すなわち、中継装置７００は、新たにサブスクリプション６４が要求される度に、トピックリスト７４を更新することで、要求を満たすようにデータセットをＨＭＩ２００に向けて配信することができる。
【０２１４】
＜Ｃ．中継装置のハードウェア構成＞
図１７は、中継装置７００のハードウェア構成の一例を示す模式図である。図１７を参照して、中継装置７００は、プロセッサ７１０と、揮発性メモリ７５０と、不揮発性メモリ７７０と、通信ＩＦ７９２とを含む。これらのコンポーネントは、プロセッサバス６９６を介して接続されている。
【０２１５】
プロセッサ７１０は、ＣＰＵやＧＰＵなどで構成され、不揮発性メモリ７７０に格納されたプログラムを読出して、揮発性メモリ７５０に展開して実行することで、コントローラ１００とＨＭＩ２００との間の通信を中継する機能を提供する。
【０２１６】
揮発性メモリ７５０は、ＤＲＡＭやＳＲＡＭなどで構成される。不揮発性メモリ７７０は、例えば、ＨＤＤやＳＳＤなどで構成される。
【０２１７】
不揮発性メモリ７７０は、基本的な機能を実現するためのＯＳに加えて、コントローラ１００とＨＭＩ２００との間の通信環境を設定する環境を提供する通信設定プログラム７７８と、コントローラ１００とＨＭＩ２００との間の通信を中継するための各種リストを管理してＰｕｂＳｕｂ通信を実現するＰｕｂＳｕｂプログラム７７２と、トピックリスト７４と、プロセスデータリスト７６とを含む。
【０２１８】
たとえば、プロセッサ６１０が、通信設定プログラム７７８を実行することで、図１５に示すグループ化手段２０ｄおよび生成手段４０ｄの機能が提供される。また、プロセッサ６１０が、ＰｕｂＳｕｂプログラム７７２を実行することで、図１５に示す送受信管理手段７０およびプロセスデータ管理手段７２の機能が提供される。なお、プロセッサ６１０がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０２１９】
不揮発性メモリ７７０に格納された各種プログラムは、コンピュータ読取可能な記録媒体を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係る中継装置７００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０２２０】
通信ＩＦ７９２は、コントローラ１００ｄとのデータの遣り取り、および、ＨＭＩ２００とのデータの遣り取りを担当する。
【０２２１】
＜Ｄ．変形例＞
なお、実施の形態３において、サブスクリプション６４が予めＨＭＩ２００にインストールされている例を示した。なお、ＨＭＩ２００は、実行対象のアプリケーション２２０に利用するプロセスデータ５２を特定できればよく、サブスクリプション６４による管理に限定されるものではない。
【０２２２】
また、実施の形態３において、中継装置７００を介してＨＭＩ２００とコントローラ１００ｄとは１対１で接続されている例を示したが、中継装置７００を介して、複数のＨＭＩ２００と、複数のコントローラ１００ｄとが通信可能に接続されていてもよい。
【０２２３】
また、中継装置７００が、コントローラ１００ｄが送信したデータセット５０を中継してＨＭＩ２００に送信する例を示したが、中継装置７００が、コントローラ１００ｄから送信されたデータセット５０に含まれるプロセスデータ５２を抽出し、再度新たなデータセットを生成してＨＭＩ２００に送信する構成であってもよい。この場合、中継装置７００は、中継装置７００からＨＭＩ２００に向けて送信するデータセットに含まれるプロセスデータ５２を特定可能な情報を予めＨＭＩ２００に向けて通知したり、あるいは、データセットのヘッダに書き込んだりする。
【０２２４】
このように、実施の形態３および当該変形例においては、中継装置７００によって、ＨＭＩ２００とコントローラ１００ｄとの間の通信環境の支援機能が提供される。この場合も、実施の形態１と同様、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラからＨＭＩに向けて送信されるような通信設定４００を容易に行うことができる。
【０２２５】
また、中継装置７００によって、ＨＭＩ２００とコントローラ１００ｄとの間の通信環境の支援機能が提供されることで、コントローラ１００ｄに予め通信設定４００をインストールすることなくＨＭＩ２００とコントローラ１００ｄとの間のデータの遣り取りを実現することができる。また、ＨＭＩ２００とコントローラ１００ｄから構成されたネットワーク内に新たなＨＭＩまたはコントローラが加入したり、または離脱したりした場合であっても、既存のＨＭＩとコントローラとの間の通信を止めることなく、このような加入、離脱に対応した通信設定を行うことができる。
【０２２６】
［実施の形態４］
上記実施の形態１〜３において、情報系ネットワーク２は、ＯＰＣ  ＵＡに従ったネットワークであるとした。なお、情報系ネットワーク２が、ＥｔｈｅｒＮＥＴ／ＩＰ（登録商標）に従ったネットワークであったとしても、ＨＭＩとコントローラとの間のデータリンクが必要である。データリンクを設定することをコネクションを貼るともいう。実施の形態４においては、情報系ネットワーク２の変わりにＥｔｈｅｒＮＥＴ／ＩＰ（登録商標）に従ったネットワークを利用した場合の通信設定について説明する。
【０２２７】
＜Ａ．制御システム１ｅの構成＞
図１８は、実施の形態４に係る制御システム１ｅの概略を示す図である。図１８を参照して、制御システム１ｅは、コントローラ１００ｅと、複数のＨＭＩ２００ｅ−１，２００ｅ−３，２００ｅ−３（以下、総じてＨＭＩ２００ｅとも称する）と、設定機器６００ｅとを含む。
【０２２８】
コントローラ１００ｅと、複数のＨＭＩ２００ｅとは、ＥｔｈｅｒＮＥＴ／ＩＰに従った情報系ネットワーク２ｅによって、互いに通信可能に接続されている。
【０２２９】
なお、図１８に示す例では、設定機器６００ｅを介して、ＨＭＩ２００ｅ−３と、コントローラ１００ｅとの間のデータリンクの設定が行われて、コネクション３が貼られる様子を示している。
【０２３０】
設定機器６００ｅは、グループ化手段２０ｅと、生成手段４０ｅとを備える。設定機器６００ｅは、ＨＭＩ２００ｅ−３の備えるアプリケーション２２０を参照して、アプリケーション２２０において利用される複数のプロセスデータ５２を特定する。
【０２３１】
グループ化手段２０ｅは、特定した複数のプロセスデータ５２を１または複数のグループに振り分ける。振り分け方は、実施の形態１〜３において説明した観点と同様の観点で振り分けることができる。
【０２３２】
生成手段４０ｅは、割り振り結果に従って、一のグループに含まれるプロセスデータ５２が一のデータセット５０に格納されるように、通信設定４００を設定する。通信設定４００は、実施の形態１において説明したデータセット設定４２０（一のデータセット５０に格納されるプロセスデータ５２を規定する情報）と、生成条件４４０（データセット５０を生成する条件を規定する情報）とに加えて、プロセスデータ５２が格納される順序を規定する格納情報４６０を含む。
【０２３３】
また、生成手段４０ｅは、データセット５０ごとに、いずれの場所に、いずれのプロセスデータ５２が格納されるかを特定可能なコネクション情報４８０を生成する。
【０２３４】
設定機器６００ｅは、コネクション情報４８０をＨＭＩ２００ｅ−３へ、通信設定４００をコントローラ１００ｅへ各々インストールする。設定機器６００ｅは、コネクション情報４８０および通信設定４００をアプリケーション２２０ごとに作成してもよく、また、複数のアプリケーション２２０に対して一つ作成されるようにしてもよい。また、設定機器６００ｅは、コネクション情報４８０をＨＭＩ２００ｅ−３へ、通信設定４００をコントローラ１ｅへ各々インストールするものとしたが、これらの情報をレポートとして出力してもよい。
【０２３５】
設定機器６００ｅは、ＨＭＩ２００ｅ−１，２００ｅ−２，２００ｅ−３の各々について、通信設定４００およびコネクション情報４８０を生成する。設定機器６００ｅが精製した通信設定４００をコントローラ１００ｅに、コネクション情報４８０をＨＭＩ２００ｅ−１，２００ｅ−２，２００ｅ−３の各々にインストールすることで、コネクション１〜３が貼られることとなる。
【０２３６】
また、一のＨＭＩ２００ｅにおいて実行されるアプリケーション２２０に利用される複数のプロセスデータ５２の各々が別々のコントローラ１００ｅによって管理される場合、コントローラ１００ｅごとにコネクション情報４８０および通信設定４００が生成される。
【０２３７】
＜Ｂ．データセット５０のデータ構造およびコネクション情報４８０＞
図１９および図２０を参照して、コントローラ１００ｅが生成するデータセット５０のデータ構造および、ＨＭＩ２００ｅがデータセット５０を解釈するために参照するコネクション情報４８０について説明する。
【０２３８】
図１９は、データセット５０のデータ構造の一例を示す図である。図２０は、コネクション情報４８０を説明するための図である。
【０２３９】
図１９を参照して、各データセット５０には、ＣｏｎｎｅｃｔｉｏｎＩＤ５４が付されている。また、データセット５０は、複数の格納部５８０から構成された格納領域５６を有する。各格納部５８０にはシーケンスナンバー５８２が割り振られており、各格納部５８０にプロセスデータ５２が格納される。
【０２４０】
図２０を参照して、コネクション情報４８０は、各格納部５８０にいずれのプロセスデータが格納されるかを示す情報である。具体的には、コネクション情報４８０は、ＣｏｎｎｅｃｔｉｏｎＩＤごとに、シーケンスナンバーと、当該シーケンスナンバーの格納部に格納されるプロセスデータの種類とを対応付けた情報である。
【０２４１】
ＨＭＩ２００は、コネクション情報４８０に基づいて、コントローラ１００ｅから送られたデータセット５０を解釈してプロセスデータ５２を抽出し、アプリケーション２２０を実行する。
【０２４２】
＜Ｃ．変形例＞
なお、コネクションを貼る方法は、設定機器６００ｅを利用した方法に限られない。上記実施の形態１および３に示すように、サポート装置や中継装置を利用してＨＭＩとコントローラとの間のコネクションを貼っても良い。
【０２４３】
このように、実施の形態４および当該変形例においては、ＨＭＩとコントローラとの間のコネクションが実行されるアプリケーションに基づいて自動で貼られるため、アプリケーション２２０の実行に必要なプロセスデータ５２がコントローラからＨＭＩに向けて送信されるような通信設定４００を容易に行うことができる。また、コントローラからＨＭＩに向けて送られるデータは、アプリケーションに必要なプロセスデータに限定されるため、不要なデータを送付する必要がない。
【０２４４】
また、実施の形態４および当該変形例においては、設定機器６００ｅが格納情報４６０を生成するため、コントローラ１００ｅはデータセット５０を生成する度に格納順序を決定する必要がなく、コントローラ１００ｅのデータセット５０を生成する処理負担を軽減することができる。また、格納情報４６０に相当するコネクション情報４８０がＨＭＩ２００に送付されるため、コントローラ１００ｅとＨＭＩ２００との間のデータリンクを容易に構築することができる。
【０２４５】
［その他の変形例］
上記実施の形態１〜４においては、ＨＭＩがサブスクライバーの機能を有し、コントローラがパブリッシャーの機能を有しているものとして説明した。上記実施の形態１〜４に示した各制御システムは、予め定められたＨＭＩの通信設定に従ってＨＭＩからコントローラに向けて情報を配信する構成を備えていてもよい。この場合においても、上記実施の形態１〜４と同様に、ＨＭＩが配信する情報を生成するための通信設定が制御プログラムに応じて生成されてもよい。
【０２４６】
図２１は、変形例における制御システム１ｆの概略を示す模式図である。図２１においては、実施の形態１〜４において説明したコントローラからＨＭＩに向けた情報の配信に関する内容を省略している。
【０２４７】
図２１を参照して、制御システム１ｆは、複数のコントローラ１００ｆと、複数のＨＭＩ２００ｆと、グループ化手段２０ｆと、生成手段４０ｆとを備える。図２１においては、各コントローラ１００ｆに接続されたフィールドデバイス５００の表示は省略している。
【０２４８】
ＨＭＩ２００ｆは、アプリケーション２２０において参照または更新されるアプリケーションデータ２０５２を予め定められた通信設定８００に従い一または複数種類のアプリケーションデータセット２０５０に格納して配信する。
【０２４９】
アプリケーションデータ２０５２は、たとえば、プロセスデータ５２、アプリケーション２２０の実行結果として出力されるデータ、ユーザの操作に従い入力されたコントローラ１００を制御するための制御値などを含む。
【０２５０】
ＨＭＩ２００ｆからコントローラ１００ｆへのアプリケーションデータセット２０５０の配信は、たとえば、ユーザがＨＭＩ２００ｆを操作してコントローラ１００ｆを制御するとき、送られたプロセスデータ５２をコントローラ１００に返すときなどに行われる。
【０２５１】
コントローラ１００は、予め指定されたアプリケーションデータ２０５２を利用して、制御プログラム１２０を実行する。ここで、アプリケーションデータ２０５２は、コントローラ１００の観点でみるとプロセスデータに相当し、プロセスデータのうち、ＨＭＩ２００から配信されたデータに相当する。
【０２５２】
制御プログラム１２０は、たとえば、図２を参照して説明したサポート装置３００が提供する開発環境のもとで作成される。
【０２５３】
グループ化手段２０ｆは、制御プログラム１２０おいて利用することが指定されているアプリケーションデータ２０５２について、各アプリケーションデータ２０５２を１または複数のグループに割り当てる。グループ化の方法は、上記実施の形態において説明した方法を利用可能である。また、グループ化手段２０ｆは、複数のコントローラ１００ｆのの各制御プログラム１２０からアプリケーションデータ２０５２を取得し、取得したアプリケーションデータ２０５２をグループ化してもよい。
【０２５４】
生成手段４０ｆは、グループ化手段２０ｆの割り当て結果に従って、グループ化手段２０ｆがグループ化した複数のグループＧＲ１，ＧＲ２…の各々について、当該グループに割り当てられたアプリケーションデータ２０５２が一のアプリケーションデータセット２０５０に格納されて送信されるように、通信設定８００を生成する。
【０２５５】
すなわち、制御プログラム１２０の実行にアプリケーションデータ２０５２を利用する場合に、制御プログラム１２０に応じて、当該制御プログラム１２０の実行に必要なアプリケーションデータ２０５２がＨＭＩ２００ｆからコントローラ１００ｆに向けて送信されるような通信設定８００を用意に行うことができる。
【０２５６】
図２１には示していないものの、グループ化手段２０ｆおよび生成手段４０ｆは、コントローラ１００の通信設定４００を作成してもよい。
【０２５７】
グループ化手段２０ｆおよび生成手段４０ｆは、実施の形態１〜３に示したサポート装置、設定装置、中継装置によって実現可能である。
【０２５８】
また、ＨＭＩ２００ｆとコントローラ１００ｆとの通信は、ＯＰＣ  ＵＡに限定されるものではなく、実施の形態４に示したように、ＥｔｈｅｒＮＥＴ／ＩＰ（登録商標）に従った通信であってもよい。
【０２５９】
§３  付記
以上のように、上記の実施の形態１〜３よび変形例は以下のような開示を含む。
【０２６０】
＜構成１＞
制御対象（５００）を制御するための制御プログラム（１２０）を実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータ（５２）を管理する制御装置（１００，１００ａ，１００ｄ，１００ｅ，１００ｆ）を備え、前記制御装置は、予め定められた通信設定（４００）に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセット（５０）を送信するように構成されており、
前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーション（２２０）を実行する情報処理装置（２００，２００ａ，２００ｂ，２００ｅ，２００ｆ）と、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化手段（２０，２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ，２０ｆ）と、
前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成手段（４０，４０ａ，４０ｂ，４０ｃ，４０ｄ，４０ｅ，２０ｆ）とを備える、制御システム。
【０２６１】
＜構成２＞
前記通信設定は、各データセットに格納されるべき１または複数のプロセスデータを特定するための情報（４２０）を含む、構成１に記載の制御システム。
【０２６２】
＜構成３＞
前記通信設定は、各データセットにおける１または複数のプロセスデータの格納順序を特定するための情報（４６０）を含む、構成１または２に記載の制御システム。
【０２６３】
＜構成４＞
前記１または複数のアプリケーションの開発環境を提供するサポート装置（３００）をさらに備え、
前記サポート装置は、前記グループ化手段（２０，２０ｂ）および前記生成手段（４０，４０ｂ）を含む、構成１〜構成３のうちいずれかに記載の制御システム。
【０２６４】
＜構成５＞
前記制御装置と前記情報処理装置との間の通信を中継する中継装置（７００）をさらに備え、
前記中継装置は、前記グループ化手段（２０ｄ）および前記生成手段（４０ｄ）を含む、構成１〜構成３のうちいずれかに記載の制御システム。
【０２６５】
＜構成６＞
前記情報処理装置（２００ｆ）は、
前記１または複数のアプリケーションにおいて参照または更新される複数のアプリケーションデータ（２０５２）を管理し、
予め定められた情報処理装置の通信設定（８００）に従って、前記複数のアプリケーションデータの少なくとも一部を格納した１または複数種類のアプリケーションデータセット（２０５０）を送信し、
前記制御装置（１００ｆ）は、前記アプリケーションデータセットを利用することで、前記複数のアプリケーションデータのうち指定された１または複数のアプリケーションデータを利用して前記制御プログラムを実行可能であり、
前記グループ化手段（２０ｆ）は、前記制御プログラムにおいて利用することが指定されている前記１または複数のアプリケーションデータの各々を１または複数の制御プログラムグループに割り当て、
前記生成手段（４０ｆ）は、前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数の制御プログラムグループの各々について、当該グループに割り当てられた１または複数のアプリケーションデータが一のアプリケーションデータセットに格納されて送信されるように、前記情報処理装置の通信設定を生成する、構成１〜構成５のうちいずれかに記載の制御システム。
【０２６６】
＜構成７＞
制御対象（５００）を制御するための制御プログラム（１２０）を実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータ（５２）を管理する制御装置（１００，１００ｅ）と、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーション（２２０）を実行する情報処理装置（２００，２００ｂ，２００ｅ）との間の通信環境の設定を支援するサポート装置（３００，６００，６００ｅ）であって、
前記制御装置は、予め定められた通信設定（４００）に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセット（５０）を送信するように構成されており、
前記情報処理装置は、前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記１または複数のアプリケーションを実行するように構成されており、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化手段（２０，２０ｂ，２０ｃ，２０ｅ）と、
前記グループ化手段の割り当て結果に従って、前記グループ化手段がグループ化した前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成手段（４０，４０ｂ，４０ｃ，４０ｅ）とを備える、サポート装置。
【０２６７】
＜構成８＞
制御対象を制御するための制御プログラムを実行するとともに、当該制御プログラムにおいて参照または更新される複数のプロセスデータを管理する制御装置と、前記複数のプロセスデータのうち指定された１または複数のプロセスデータを利用する１または複数のアプリケーションを実行する情報処理装置との間の通信環境の設定を支援するサポートプログラム（３７８，６７８，７７８）であって、
前記制御装置は、予め定められた通信設定（４００）に従って、前記複数のプロセスデータの少なくとも一部を格納した１または複数種類のデータセット（５０）を送信するように構成されており、
前記情報処理装置は、前記制御装置から送信される前記１または複数種類のデータセットを利用することで、前記１または複数のアプリケーションを実行するように構成されており、
前記サポートプログラムは、コンピュータ（３００，６００，６００ｅ，７００）に、
前記１または複数のアプリケーションにおいて利用することが指定されている前記１または複数のプロセスデータの各々を１または複数のグループに割り当てるグループ化ステップ（Ｓｔｅｐ２）と、
前記グループ化ステップにおいて割り当てられた結果に従って、前記グループ化ステップにおいてグループ化された前記１または複数のグループの各々について、当該グループに割り当てられた１または複数のプロセスデータが一のデータセットに格納されて送信されるように、前記制御装置のための前記通信設定を生成する生成ステップ（Ｓｔｅｐ３）とを実行させる、サポートプログラム。
【０２６８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合せても、実施することが意図される。
【符号の説明】
【０２６９】
１，１ａ，１ｃ，１ｄ，１ｅ，１ｆ  制御システム、２，２ａ，２ｅ  情報系ネットワーク、４  制御系ネットワーク、１０ａ  ＦＡシステム、２０，２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ，２０ｆ  グループ化手段、２２  第１グループ化手段、２４  第２グループ化手段、２６  第３グループ化手段、４０，４０ａ，４０ｂ，４０ｃ，４０ｄ，４０ｅ，４０ｆ  生成手段、４２  データセット設定生成手段、４４  生成条件生成手段、５０  データセット、５２  プロセスデータ、５４  オブジェクト、５６  ＣｏｎｎｅｃｔｉｏｎＩＤ、５８  格納領域、６０，６０ｂ  ＯＰＣ  ＵＡクライアント、６２  購読管理手段、６４，６４ｂ  サブスクリプション、６６，６６ｂ，８４  通信ドライバ、７０  送受信管理手段、７２  プロセスデータ管理手段、７４  トピックリスト、７６  プロセスデータリスト、８０  ＯＰＣ  ＵＡサーバ、８２  データセット生成手段、１００，１００ａ，１００ｄ，１００ｅ，１００ｆ  コントローラ、１１０，２１０，３１０，６１０，７１０  プロセッサ、１２０  制御プログラム、１４６，１９３，２９４，３９４，６９４  ＵＳＢコントローラ、１５０，２５０，３５０，６５０，７５０  揮発性メモリ、１７０，２７０，３７０，６７０，７７０  不揮発性メモリ、１８０，２６０  ＯＰＣ  ＵＡプログラム、１９１  制御系ネットワークＩＦ、１９２  情報系ネットワークＩＦ、１９４  メモリカードＩＦ、１９４Ａ  メモリカード、１９５  内部バスコントローラ、１９６  チップセット、２００，２００ａ，２００ｂ，２００ｅ，２００ｆ  ＨＭＩ、２２０  アプリケーション、２２２  マッピング情報、２４０  タッチパネル、２４２，３４０，６４０  表示部、２４４，３２０，６２０  入力部、２９２，７９２  通信ＩＦ、２９６，３９６，６９６  プロセッサバス、３００  サポート装置、３６０  開発手段、３７２  サポートプログラム、３７４  制御プログラム用開発プログラム、３７６  アプリケーション用開発プログラム、３７８，６７８，７７８  通信設定プログラム、３９２  光学ドライブ、３９２Ａ  記録媒体、４００，８００  通信設定、４２０  データセット設定、４４０  生成条件、４６０  格納情報、４８０  コネクション情報、５００  フィールドデバイス、５８０  格納部、５８２  シーケンスナンバー、６００，６００ｅ  設定機器、７００  中継装置、７７２  ＰｕｂＳｕｂプログラム、２０５０  アプリケーションデータセット、２０５２  アプリケーションデータ。
【図１】
2020149459.tif 000003
【図２】
2020149459.tif 000004
【図３】
2020149459.tif 000005
【図４】
2020149459.tif 000006
【図５】
2020149459.tif 000007
【図６】
2020149459.tif 000008
【図７】
2020149459.tif 000009
【図８】
2020149459.tif 000010
【図９】
2020149459.tif 000011
【図１０】
2020149459.tif 000012
【図１１】
2020149459.tif 000013
【図１２】
2020149459.tif 000014
【図１３】
2020149459.tif 000015
【図１４】
2020149459.tif 000016
【図１５】
2020149459.tif 000017
【図１６】
2020149459.tif 000018
【図１７】
2020149459.tif 000019
【図１８】
2020149459.tif 000020
【図１９】
2020149459.tif 000021
【図２０】
2020149459.tif 000022
【図２１】
2020149459.tif 000023