(57)【要約】【課題】中継装置に対して行う設定を容易にすることを目的とする。【解決手段】中継装置を介して他の装置と通信可能に構成された制御装置は、他の装置との間の通信に関する設定である通信設定を行うための命令を少なくとも一つ含むユーザプログラムが格納された記憶部と、通信設定を行う通信設定部とを備える。通信設定部は、命令の実行条件が成立したことに基づき、中継装置との間でコマンドの送受信を行い、当該命令が示す通信設定を行う。【選択図】図１
2020088690.tif 000002
【特許請求の範囲】
【請求項１】
中継装置を介して他の装置と通信可能な制御装置であって、
前記中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ含むユーザプログラムが格納された記憶部と、
前記命令の実行条件が成立したことに基づき、前記中継装置との間でコマンドの送受信を行い、当該命令が示す前記通信設定を行う通信設定部とを備える、制御装置。
【請求項２】
前記中継装置との間で行われるコマンドの送受信にかかるプロトコルは、当該中継装置の種類に応じて異なり、
前記通信設定部は、前記中継装置の種類に応じたプロトコルに従い、当該中継装置との間でコマンドの送受信を行う、請求項１に記載の制御装置。
【請求項３】
前記記憶部は、前記プロトコルを含む変換情報を、前記中継装置の種類ごとに格納し、
前記中継装置の種類を当該中継装置が備えるデバイス情報に基づいて判断し、当該中継装置の種類に基づいて前記変換情報を特定する変換情報特定部をさらに備え、
前記通信設定部は、前記変換情報が特定した前記変換情報に基づいて当該中継装置との間でコマンドの送受信を行う、請求項２に記載の制御装置。
【請求項４】
前記変換情報は、前記命令の内容ごとに前記記憶部に格納され、
前記変換情報特定部は、実行条件が成立した命令および前記中継装置の種類に基づいて前記変換情報を特定する、請求項３に記載の制御装置。
【請求項５】
前記ユーザプログラムは、前記通信設定にかかる命令と、当該命令に比べて優先度の高い優先命令とを含み、
前記優先命令を定周期で繰り返し実行する定周期タスク実行部をさらに備え、
前記通信設定部は、前記優先命令の実行を妨げないように前記通信設定にかかる命令を行う、請求項１〜請求項４のうちいずれか１項に記載の制御装置。
【請求項６】
前記中継装置を介して第１のフィールド装置群を管理する第１機器と、第２のフィールド装置群を管理する第２機器と通信可能に接続されており、
前記記憶部は、前記第１のフィールド装置群を動かす条件を含む第１のレシピと、前記第２のフィールド装置群を動かす条件を含む第２のレシピとを格納し、
前記ユーザプログラムは、接続先の機器を切り替える命令と、当該切り替えに応じてレシピを切り替える命令とを含む、請求項１〜請求項５のうちいずれか１に記載の制御装置。
【請求項７】
中継装置を介して他の装置と通信可能な制御装置用のユーザプログラムの開発を支援するためのサポート装置であって、
前記中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ格納する記憶部と、
前記記憶部に格納された少なくとも一つの前記命令を組み合わせて前記ユーザプログラムを生成するための制御部とを備え、
前記制御部は、前記命令の実行時に前記制御装置が前記中継装置との間でコマンドの送受信を行うことが可能な形式で前記ユーザプログラムを作成する、サポート装置。
【請求項８】
中継装置と、
前記中継装置を介して他の装置と通信可能な制御装置とを備え、
前記制御装置は、
前記中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ含むユーザプログラムが格納された記憶部と、
前記命令の実行条件が成立したことに基づき、前記中継装置との間でコマンドの送受信を行い、当該命令が示す前記通信設定を行う通信設定部とを備える、通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置と他の装置との間の通信に関する設定作業を支援するための技術に関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムが実行される。制御装置は、中継装置を介して工場内または工場外の様々な装置と接続される。
【０００３】
たとえば、特許第６４０７４９４号公報（特許文献１）には、中継装置の一例であるルータを介して、工場の外のクラウドシステムと通信可能に接続された制御装置が開示されている。
【０００４】
また、国際公開第２０１６／１５７４７７号（特許文献２）には、中継装置の一例であるルータを介して、他の制御装置と通信可能に接続された制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第６４０７４９４号公報
【特許文献２】国際公開第２０１６／１５７４７７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、中継装置に対する設定は複雑であり、設定方法の学習が必要となる。すなわち、工場内のネットワークを設計し、運用するためには、ネットワークの設計を行う者の教育だけでなく、工場内の現場で設計されたネットワークを運用する者に対しても教育を行う必要があった。そのため、中継装置に対して行う設定の複雑さが、工場内にネットワークを構築することを困難にする一つの要因となっていた。
【０００７】
本発明は、上記課題を解決することを目的とするものであって、中継装置に対して行う設定を容易にすることを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一例によれば、中継装置を介して他の装置と通信可能な制御装置が提供される。制御装置は、中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ含むユーザプログラムが格納された記憶部と、命令の実行条件が成立したことに基づき、中継装置との間でコマンドの送受信を行い、命令が示す通信設定を行う通信設定部とを含む。
【０００９】
この開示によれば、中継装置との間でのコマンドの送受信の方法を知らないユーザであっても、通信設定を指定すれば、指定した設定内容に応じた処理を制御装置が実行するため、中継装置に対する通信設定を容易に行うことができる。
【００１０】
上述の開示において、中継装置との間で行われるコマンドの送受信にかかるプロトコルは、中継装置の種類に応じて異なる。通信設定部は、中継装置の種類に応じたプロトコルに従い、中継装置との間でコマンドの送受信を行う。
【００１１】
この開示によれば、種々の中継装置に対応することができ、ユーザは複数種類の中継装置を利用することができる。
【００１２】
上述の開示において、記憶部は、プロトコルを含む変換情報を、中継装置の種類ごとに格納する。制御装置は、中継装置の種類を中継装置が備えるデバイス情報に基づいて判断し、中継装置の種類に基づいて変換情報を特定する変換情報特定部をさらに含む。通信設定部は、変換情報が特定した変換情報に基づいて中継装置との間でコマンドの送受信を行う。
【００１３】
この開示によれば、ユーザは中継装置の種類を意識することなく、通信設定を行うことができる。
【００１４】
上述の開示において、変換情報は、命令の内容ごとに記憶部に格納される。変換情報特定部は、実行条件が成立した命令および中継装置の種類に基づいて変換情報を特定する。
【００１５】
この開示によれば、制御装置は、命令の内容と中継装置の種類とに応じたプログラムを記憶しておく必要がないため、記憶部に格納するデータ量を減らすことができる。
【００１６】
上述の開示において、ユーザプログラムは、通信設定にかかる命令と、この命令に比べて優先度の高い優先命令とを含む。制御装置は、優先命令を定周期で繰り返し実行する定周期タスク実行部をさらに含む。通信設定部は、前記優先命令の実行を妨げないように通信設定にかかる命令を行う。
【００１７】
この開示によれば、優先度の高い命令を妨げることなく、通信設定にかかる命令を実行することができる。
【００１８】
上述の開示において、制御装置は、中継装置を介して第１のフィールド装置群を管理する第１機器と、第２のフィールド装置群を管理する第２機器と通信可能に接続されている。記憶部は、第１のフィールド装置群を動かす条件を含む第１のレシピと、第２のフィールド装置群を動かす条件を含む第２のレシピとを格納する。ユーザプログラムは、接続先の機器を切り替える命令と、切り替えに応じてレシピを切り替える命令とを含む。
【００１９】
この開示によれば、段取り替えを容易に行うことができる。
本開示の別の一例によれば、中継装置を介して他の装置と通信可能な制御装置用のユーザプログラムの開発を支援するためのサポート装置が提供される。サポート装置は、中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ格納する記憶部と、記憶部に格納された少なくとも一つの命令を組み合わせてユーザプログラムを生成するための制御部とを含む。制御部は、命令の実行時に制御装置が中継装置との間でコマンドの送受信を行うことが可能な形式でユーザプログラムを作成する。
【００２０】
この開示によれば、中継装置との間でのコマンドの送受信の方法を知らないユーザであっても、中継装置に対する通信設定を容易に行うためのユーザプログラムを作成することができる。
【００２１】
本開示の別の一例によれば、中継装置と、中継装置を介して他の装置と通信可能な制御装置とを含む通信システムが提供される。制御装置は、中継装置を介した通信に関する通信設定を行うための命令を少なくとも一つ含むユーザプログラムが格納された記憶部と、
命令の実行条件が成立したことに基づき、中継装置との間でコマンドの送受信を行い、命令が示す通信設定を行う通信設定部とを含む。
【００２２】
この開示によれば、中継装置との間でのコマンドの送受信の方法を知らないユーザであっても、通信設定を指定すれば、指定した設定内容に応じた処理を制御装置が実行するため、中継装置に対する通信設定を容易に行う環境が提供される。
【発明の効果】
【００２３】
中継装置に対して行う設定を容易に行うことが可能な環境が提供される。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係るネットワークシステムの適用場面を模式的に示す図である。
【図２】実施の形態１に係る通信システムのシステム構成を示す図である。
【図３】ＣＰＵユニットの装置構成の一例を示す模式図である。
【図４】ＣＰＵユニットのソフトウェア構成を示す模式図である。
【図５】サポート装置の装置構成の一例を示す模式図である。
【図６】サポート装置のソフトウェア構成を示す模式図である。
【図７】通信設定に係るプログラムの実行により実現されるコントローラの機能構成を示す図である。
【図８】通信設定に係るファンクションブロックを組み込んだユーザプログラムの例を示す図である。
【図９】通信設定に係るファンクションブロックを組み込んだユーザプログラムの例を示す図である。
【図１０】図８および図９に示すユーザプログラムを実行したときの定周期タスク実行部および通信設定部が処理を実行するタイミングを示す図である。
【図１１】通信設定部と設定情報更新部との間のコマンドの遣り取りを示す図である。
【図１２】サポート装置において用意されている命令の一例である。
【図１３】通信システムの変形例を示す図である。
【図１４】実施の形態２の制御装置の概略構成を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
【００２６】
§１  適用例
図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御装置１００Ａの適用場面を模式的に示す図である。制御装置１００Ａは、中継装置２００Ａを介して、他の装置（装置４１Ａ，４１Ｂ，４１Ｃ）と通信可能に接続されている。
【００２７】
制御装置１００Ａは、他の装置との間の通信に関する設定である通信設定を行うための命令を少なくとも一つ含むユーザプログラム１０６６Ａが格納された記憶部１０６Ａと、通信設定を行う通信設定部１６０Ａとを備える。
【００２８】
通信設定は、他の装置との間の通信に関する設定であって、中継装置２００Ａに対して行う設定をいう。
【００２９】
通信設定部１６０Ａは、命令の実行条件が成立したことに基づき、中継装置との間でコマンドの送受信を行い、当該命令が示す通信設定を行う。
【００３０】
たとえば、図１に示す例では、命令ａの実行条件が成立し、命令ａの実行が完了すると命令ｂの実行条件が成立し、命令ｂの実行が完了すると命令ｃの実行条件が成立し、命令ｃの実行が完了すると命令ｄの実行条件が成立するというユーザプログラム１０６６Ａを記憶部１０６Ａは格納する。
【００３１】
このユーザプログラム１０６６Ａは、たとえば、サポート装置３０Ａが提供する開発環境によって作成される。サポート装置３０Ａは、たとえば、汎用的なアーキテクチャに従うハードウェアを用いて実現される。
【００３２】
通信設定部１６０Ａは、図１に示すように、命令ａを実行するにあたり、中継装置２００Ａとの間でコマンドの遣り取りを行う。通信設定部１６０Ａは、命令ａの実行が完了すると、命令ｂを実行し、命令ｂの実行にあたり中継装置２００Ａとの間でコマンドの遣り取りを行う。同様に、命令ｃ、命令ｄの実行にあたっても、通信設定部１６０Ａは、中継装置２００Ａとの間でコマンドの遣り取りを行う。
【００３３】
このように、通信設定においては、中継装置２００Ａと制御装置１００Ａとの間でコマンドの遣り取りが必要であるものの、通信設定部１６０Ａが命令の実行に伴い、このコマンドの遣り取りを行うため、ユーザは、中継装置２００Ａと制御装置１００Ａとの間で行われる詳細なコマンドの遣り取りについて学習しなくとも、中継装置２００Ａに対する通信設定を行うことが可能である。
【００３４】
§２  構成例
［実施の形態１］
＜Ａ．通信システムのシステム構成＞
図２は、実施の形態１に係る通信システム１のシステム構成を示す図である。通信システム１は、製造作業が実際に行われる製造現場２に設置されるシステムである。通信システム１は、製造現場２で働く人々（以下、「ユーザ」ともいう。）によって利用される。通信システム１は、製造現場２に対してリモートで閲覧や操作が可能なリモートサイト４と製造現場２との間の通信に関する設定（以下、「通信設定」ともいう。）を行うための環境を提供する。
【００３５】
通信システム１は、製造装置やロボットなどを制御するコントローラ１０と、ユーザが通信設定を行うために操作するタッチパネル式のＨＭＩ（Human Machine Interface）２０とを含む。
【００３６】
コントローラ１０は、情報系ネットワークＮＷ１を介してＨＭＩ２０と通信可能に接続されており、ＨＭＩ２０をユーザが操作することでＨＭＩ２０から出力される設定指示に従って通信設定を行う。
【００３７】
コントローラ１０は、制御系ネットワークＮＷ２を介してフィールド装置群４０と接続されている。フィールド装置群４０は、制御対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）からデータを収集する装置を含む。このようなデータを収集する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群４０は、さらに、コントローラ１０にて生成される指令に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
【００３８】
図２に示す例においては、フィールド装置群４０は、リモートＩ／Ｏ（Input/Output）装置４１と、リレー群４２と、サーボドライバ４５およびサーボモータ４６とを含み、これらがコントローラ１０に接続されている例を示す。
【００３９】
コントローラ１０は、ＣＰＵユニット１００と、中継ユニット２００と、電源ユニット３００とを含む。電源ユニット３００は、ＣＰＵユニット１００などコントローラ１０を構成する各種装置に電力を供給する。
【００４０】
ＣＰＵユニット１００は、制御対象についての制御演算を実行する制御装置に相当する。ＣＰＵユニット１００は、中継ユニット２００を介して、リモートサイト４のコンピュータ４ａと接続される。ＣＰＵユニット１００は、ユーザにおける制御目的に応じて作成されるユーザプログラムを実行することで、制御対象を制御する。ＣＰＵユニット１００は、ＣＰＵユニット１００に接続された種々の装置を制御対象とすることが可能である。具体的には、ＣＰＵユニット１００は、中継ユニット２００を制御対象とすることができ、中継ユニット２００の状態を変更することができる。具体的には、ＣＰＵユニット１００は、中継ユニット２００の設定を行うことができる。中継ユニット２００の設定が行われることで、リモートサイト４と製造現場２との間の通信設定が行われることとなる。なお、実施の形態１において、通信設定にかかるユーザプログラムは、ユーザがＨＭＩ２０を操作することでＨＭＩ２０から出力される設定変更指示に従って実行される。
【００４１】
ユーザプログラムは、サポート装置３０が提供する開発環境によって作成される。ＣＰＵユニット１００は、サポート装置３０と接続するためのインターフェイスを備える。サポート装置３０で作られたユーザプログラムは、サポート装置３０からＣＰＵユニット１００にインストールされ、ＣＰＵユニット１００によって実行される。ユーザプログラムは、国際規格ＩＥＣ６１１３１−３においてＰＬＣアプリケーションのプログラミング言語として規定されたプログラム言語で記述されたものである。具体的には、ユーザプログラムは、ラダーダイアグラム（ＬＤ：Ladder Diagram）、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）、インストラクションリスト（ＩＬ：Instruction List）、ストラクチャードテキスト（ＳＴ：Structured Text）の５種類のうちの一または複数の言語で記述されたプログラムである。
【００４２】
中継ユニット２００は、ルータ機能を有する制御機器であって、ＣＰＵユニット１００と他の装置との間のデータの遣り取りを仲介する中継機能を提供する。図２に示す例では、中継ユニット２００は、ネットワークＮＷ３を経由してリモートサイト４内のネットワークと通信可能に接続される。リモートサイト４内のネットワークには、コンピュータ４ａが接続されている。すなわち、中継ユニット２００は、ＣＰＵユニット１００とコンピュータ４ａとの間のデータの遣り取りを仲介する。より具体的には、中継ユニット２００は、ネットワークＮＷ３を経由してコンピュータ４ａが接続された中継器４ｂと通信可能である。
【００４３】
ネットワークＮＷ３としては、インターネット、ＶＰＮ（Virtual Private Network）、専用回線、またはこれらを組み合わせた通信回線などが想定され、有線のネットワークと無線のネットワークとのうちのいずれのネットワークであってもよい。実施の形態１においては、ネットワークＮＷ３は、ＶＰＮである。
【００４４】
ＣＰＵユニット１００と中継ユニット２００との間の通信を可能にするネットワークにおいて、一例として、ＣＰＵユニット１００には、ＩＰアドレスとして「１９２．１６８．１．１／２４」が割り当てられる。中継ユニット２００には、ＩＰアドレスとして「１９２．１６８．１．２５４／２４」が割り当てられる。
【００４５】
ネットワークＮＷ３において、一例として、中継ユニット２００には、ＩＰアドレスとして「１０．０．０．１」が割り当てられる。中継器４ｂには、ＩＰアドレスとして「２０．０．０．１」が割り当てられる。
【００４６】
中継器４ｂとコンピュータ４ａとの間の通信を可能にするネットワークにおいて、一例として、中継器４ｂには、ＩＰアドレスとして「１９２．１６８．２．２５４／２４」が割り当てられる。コンピュータ４ａには、ＩＰアドレスとして「１９２．１６８．２．１／２４」が割り当てられる。
【００４７】
＜Ｂ．ＣＰＵユニットの装置構成＞
図３は、ＣＰＵユニット１００の装置構成の一例を示す模式図である。ＣＰＵユニット１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１０６と、情報系ネットワークコントローラ１０８と、制御系ネットワークコントローラ１１０と、ユニット間バスコントローラ１１２と、ローカルバスコントローラ１１４と、ＵＳＢコントローラ１１６と、メモリカードインターフェイス１１８とを備える。これらのコンポーネントは、プロセッサバス１２０を介して接続されている。
【００４８】
プロセッサ１０２は、標準制御に係る制御演算を実行する演算処理部に相当し、ＣＰＵ（Central  Processing  Unit）やＧＰＵ（Graphics  Processing  Unit）などで構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。このように、ＣＰＵユニット１００は、１または複数のプロセッサ１０２、および／または、１または複数のコアを有するプロセッサ１０２を有している。プロセッサ１０２は、ストレージ１０６に格納されたプログラムを読出して、メインメモリ１０４に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
【００４９】
メインメモリ１０４は、ＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などの揮発性記憶装置などで構成される。ストレージ１０６は、例えば、ＳＳＤ（Solid  State  Drive）やＨＤＤ（Hard  Disk  Drive）などの不揮発性記憶装置などで構成される。
【００５０】
ストレージ１０６には、プロセッサ１０２が実行する各種プログラムおよびプログラムの実行に必要な各種データが格納される。
【００５１】
情報系ネットワークコントローラ１０８は、情報系ネットワークＮＷ１（図２参照）を介してＨＭＩ２０との通信を仲介する。情報系ネットワークＮＷ１としては、たとえば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）などの定時性が保証されるネットワークプロトコルが好ましい。
【００５２】
制御系ネットワークコントローラ１１０は、制御系ネットワークＮＷ２（図２参照）を介してフィールド装置群４０との通信を仲介する。制御系ネットワークＮＷ２としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）などの定時性が保証されるネットワークプロトコルが好ましい。
【００５３】
ユニット間バスコントローラ１１２は、他のユニットとデータ通信可能に接続するためのデバイスである。実施の形態１においては、ＣＰＵユニット１００のユニット間バスコントローラ１１２を介して、中継ユニット２００および電源ユニット３００が接続される。ユニット間バスコントローラ１１２としては、例えば、公知のデータ伝送規格（例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ）などに従うデバイスを採用できる。
【００５４】
ローカルバスコントローラ１１４は、図示しないローカルバスを介してＣＰＵユニット１００に直接装着される入出力ユニットとの間の通信を仲介する。
【００５５】
ＵＳＢコントローラ１１６は、ＵＳＢ接続を介して、サポート装置３０などとの間でデータを遣り取りする。
【００５６】
メモリカードインターフェイス１１８は、着脱可能な記録媒体の一例であるメモリカード１１８ａを受付ける。メモリカードインターフェイス１１８は、メモリカード１１８ａに対してデータを書込み、メモリカード１１８ａから各種データを読出すことが可能になっている。
【００５７】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
図４は、ＣＰＵユニット１００のソフトウェア構成を示す模式図である。図４には、実施の形態１に係る各種機能を提供するためのソフトウェア群の一例を示す。これらのソフトウェア群に含まれる命令コードは、ストレージ１０６に格納されており、適切なタイミングで読み出され、ＣＰＵユニット１００のプロセッサ１０２によって実行される。
【００５８】
ＣＰＵユニット１００で実行されるソフトウェアとしては、基本的には、ＯＳ（Operating System）１０６２と、システムプログラム１０６４と、ユーザプログラム１０６６とを含む。
【００５９】
ＯＳ１０６２は、ＣＰＵユニット１００のコンピュタアーキテクチャに応じて設計されており、プロセッサ１０２がシステムプログラム１０６４およびユーザプログラム１０６６を実行するための基本的な実行環境を提供する。ＯＳ１０６２は、典型的には、コントローラのメーカあるいは専門のソフトウェア会社などによって提供される。
【００６０】
システムプログラム１０６４は、コントローラ１０としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム１０６４は、スケジューラプログラム６４２と、シーケンス命令プログラム６４４と、入出力処理プログラム６４６と、アクセス処理プログラム６４８とを含む。システムプログラム１０６４に含まれる各プログラムは、典型的には、コントローラのメーカあるいは専門のソフトウェア会社などによって提供される。
【００６１】
ユーザプログラム１０６６は、ユーザにおける制御目的に応じて作成される。実施の形態１において、ユーザプログラム１０６６は、例えばサポート装置３０において生成される。ユーザプログラム１０６６は、サポート装置３０からＵＳＢケーブルを介してＣＰＵユニット１００に転送され、ストレージ１０６に格納される。
【００６２】
ユーザプログラム１０６６は、シーケンス命令プログラム６４４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１０６６は、シーケンス命令プログラム６４４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。
【００６３】
スケジューラプログラム６４２は、予め定められた優先度に従ってプログラムをプロセッサ１０２に実行させる。プログラムは、実行タイミングが保証されている必要性が高いプログラムと、実行タイミングが保証されている必要性が低いプログラムとを含む。たとえば、複数の制御装置を協働して動かすためのプログラムは、実行タイミングが保証されている必要性が高い。一方、通信設定を行なうためのプログラムは、実行タイミングが保証されている必要性が低い。実行タイミングが保証されている必要性が高いプログラムは、定周期で繰り返し実行される定周期タスクに設定される。これに対して、実行タイミングが保証されている必要性が低いプログラムは、定周期タスクに設定されたプログラムの実行を妨げないように、定周期タスクを実行していないプロセッサ１０２の空き時間に実行される。なお、ここで、「タスク」とはコンピューティング資源を割当てる制御の対象となる基本単位のことをいう。スケジューラプログラム６４２は、プロセッサ１０２が実行する各プログラムについて、処理開始および処理中断、ならびに、処理中断後の処理再開を制御する。
【００６４】
シーケンス命令プログラム６４４は、ユーザプログラム１０６６の実行に伴って、ユーザプログラム１０６６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００６５】
入出力処理プログラム６４６は、コントローラ１０に接続されたフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００６６】
アクセス処理プログラム６４８は、ユーザプログラム１０６６の実行に伴って、通信設定を行なうために必要な処理を実現するための命令コード群を含む。
【００６７】
＜Ｄ．サポート装置の装置構成＞
図５は、サポート装置３０の装置構成の一例を示す模式図である。サポート装置３０は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【００６８】
サポート装置３０は、プロセッサ３１と、メインメモリ３２と、入力部３３と、出力部３４と、ストレージ３５と、光学ドライブ３６と、通信インターフェィスの一実施例であるＵＳＢコントローラ３７とを含む。これらのコンポーネントは、プロセッサバス３８を介して接続されている。
【００６９】
プロセッサ３１は、ＣＰＵやＧＰＵなどで構成され、ストレージ３５に格納されたプログラムを読出して、メインメモリ３２に展開して実行することで、後述するような各種処理を実現する。
【００７０】
メインメモリ３２は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ３５は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【００７１】
ストレージ３５には、ユーザプログラム１０６６を作成するにあたって利用される各種データおよび、ユーザプログラム１０６６の開発を支援するためのプログラムが格納される。
【００７２】
入力部３３は、キーボードやマウスなどで構成され、サポート装置３０に対するユーザ操作を受付ける。
【００７３】
出力部３４は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ３１からの処理結果などを出力する。実施の形態１において、出力部３４はディスプレイで構成されているものとする。
【００７４】
ＵＳＢコントローラ３７は、ＵＳＢ接続を介して、ＣＰＵユニット１００などとの間のデータを遣り取りする。
【００７５】
サポート装置３０は、光学ドライブ３６を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体３６ａ（例えば、ＤＶＤ（Digital  Versatile  Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られてストレージ３５などにインストールされる。
【００７６】
サポートプログラム３５４やファンクションブロック４００などは、コンピュータ読取可能な記録媒体３６ａを介してサポート装置３０にインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置３０が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００７７】
図５には、プロセッサ３１がプログラムを実行することで、サポート装置３０として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７８】
＜Ｅ．サポート装置３０のソフトウェア構成＞
図６は、サポート装置３０のソフトウェア構成を示す模式図である。図６には、実施の形態１に係る各種機能を提供するためのソフトウェア群の一例を示す。これらのソフトウェア群に含まれる命令コードは、適切なタイミングで読み出され、サポート装置３０のプロセッサ３１によって実行される。
【００７９】
サポート装置３０で実行されるソフトウェアは、少なくとも、ＯＳ３５２と、サポートプログラム３５４とを含む。これらのプログラムは、ストレージ３５に格納されている。また、プログラムの実行に利用されるデータは、ファンクションブロックライブラリ（以下、「ＦＢライブラリ」ともいう。）３５６と、コマンドライブラリ３５８とを含み、ストレージ３５に格納されている。
【００８０】
ＯＳ３５２は、サポートプログラム３５４を実行可能な基本的な環境を提供する。サポートプログラム３５４は、サポート装置３０が提供する機能を実現するためのプログラムであって、ユーザプログラム１０６６を作成するための機能を提供する。
【００８１】
ＦＢライブラリ３５６は、ユーザプログラム１０６６を生成するための命令情報ごとに規定されたプログラム部品であるファンクションブロックのライブラリである。ＦＢライブラリ３５６は、通信の設定に必要な命令に対応するファンクションブロック４００を含む。実施の形態１において、たとえば、製造現場２とリモートサイト４との間でのＶＰＮ設定を中継ユニット２００に書き込むという命令に対応するファンクションブロック、中継ユニット２００に書き込まれたＶＰＮ設定を読み出す命令に対応するファンクションブロック、中継ユニット２００に書き込まれた設定を有効にする命令に対応するファンクションブロックなどがＦＢライブラリ３５６に含まれる。
【００８２】
ユーザは、ファンクションブロック４００の実行に必要なパラメータを入力部３３を介して入力することができ、パラメータを入力したファンクションブロック４００を組合わせることでユーザプログラム１０６６を作成する。
【００８３】
コマンドライブラリ３５８は、中継ユニット２００とＣＰＵユニット１００との間で行われるコマンドの送受信にかかるプロトコルを含む変換情報５８２のライブラリである。より具体的には、プロトコルは、コマンドの送受信の手順、およびコマンドの種類とを含む情報である。ＣＰＵユニット１００は、変換情報５８２に含まれるプロトコルに従い中継ユニット２００に対して通信設定を行う。
【００８４】
変換情報５８２は、中継ユニット２００がサポートするコマンドの種類ごとにコマンド群５８０としてコマンドライブラリ３５８に格納されている。たとえば、Ａ社のコマンドに変換するためのコマンド群５８０ＡとＢ社のコマンドに変換するためのコマンド群５８０Ｂなどがコマンドライブラリ３５８に格納されている。各コマンド群５８０は、各々、ファンクションブロック４００を対応するコマンドに変換する変換情報５８２を含む。
【００８５】
これらのファンクションブロック４００およびコマンドライブラリ３５８は、たとえば、コントローラのメーカあるいは専門のソフトウェア会社などが記録媒体３６ａに格納させた状態で流通する。ユーザは、記録媒体３６ａに格納されたファンクションブロック４００およびコマンドライブラリ３５８をサポート装置３０にインストールすることで、ファンクションブロック４００およびコマンドライブラリ３５８を利用することができる。
【００８６】
サポートプログラム３５４は、エディタ５４１と、コンパイラ５４２と、デバッガ５４３と、ＧＵＩ（Graphical User Interface）モジュール５４４と、シミュレータ５４５と、データ格納部５５０とを含む。
【００８７】
エディタ５４１は、ユーザプログラム１０６６のソースプログラムを作成するための入力および編集といった機能を提供する。より具体的には、エディタ５４１は、キーボードまたはマウスで構成された入力部３３をユーザが操作してユーザプログラム１０６６のソースプログラムを作成する機能に加えて、作成したソースプログラムの保存機能および編集機能を提供する。エディタ５４１は、設計者の操作に応じて、ＦＢライブラリ３５６から選択されたファンクションブロック４００を用いて、ユーザプログラム１０６６のソースプログラムを作成する。
【００８８】
コンパイラ５４２は、ソースプログラムをコンパイルして、コントローラ１０で実行可能なプログラム形式のユーザプログラム１０６６を生成する機能を提供する。
【００８９】
デバッガ５４３は、ユーザプログラム１０６６のソースプログラムに対してデバッグを行うための機能を提供する。
【００９０】
ＧＵＩモジュール５４４は、設計者が各種データやパラメータなどを入力するためのユーザインターフェイス画面を提供する機能を有する。当該ユーザインターフェイス画面は、ディスプレイで構成された出力部３４に表示される。
【００９１】
シミュレータ５４５は、サポート装置３０内にコントローラ１０でのプログラムの実行をシミュレーションする環境を構築する。
【００９２】
データ格納部５５０には、作成されたユーザプログラム１０６６が格納される。このユーザプログラム１０６６は、一または複数のファンクションブロック４００を含む。データ格納部５５０に格納されたユーザプログラム１０６６は、ＵＳＢケーブルを介してＣＰＵユニット１００に送られ、設定される。このとき、ユーザプログラム１０６６に含まれるファンクションブロック４００に対応する変換情報５８２も併せてＣＰＵユニット１００に送られ、設定される。なお、実施の形態１において、サポート装置３０は、ファンクションブロック４００に対応する変換情報５８２を各コマンド群５８０からそれぞれ抽出し、抽出した全ての変換情報５８２をＣＰＵユニット１００に送る。
【００９３】
これにより、通信設定を行なうためのユーザプログラムを、ＦＡの分野で利用されるＩＥＣプログラムで作成することができる。その結果、ＩＥＣプログラムの設計者が、新たに通信機能を設定するための学習をしなくとも、通信機能にかかる設定を行なうためのユーザプログラムを作成することができる。
【００９４】
なお、図６に示す例では、ＦＢライブラリ３５６およびコマンドライブラリ３５８がサポート装置３０のストレージ３５に格納されているものとしたが、ＦＢライブラリ３５６およびコマンドライブラリ３５８のうちの少なくとも一方が、サポート装置３０とネットワークを介して接続可能なサーバ装置に格納されていてもよい。
【００９５】
＜Ｆ．通信設定に係るプログラムの実行により実現される機能構成＞
図７は、通信設定に係るプログラムの実行により実現されるコントローラ１０の機能構成を示す図である。
【００９６】
図７に示す各種機能は、ユーザプログラム１０６６に含まれる通信設定に関するファンクションブロック４００の実行条件が成立し、ファンクションブロック４００が示す命令がプロセッサ１０２により実行されることで実現される。
【００９７】
ＣＰＵユニット１００は、定周期タスク実行部１４０と、通信設定部１６０と、変換情報特定部１８０とを含む。中継ユニット２００は、設定情報格納部２２０と、設定情報更新部２４０とを含む。
【００９８】
定周期タスク実行部１４０は、定周期タスクを定周期で繰り返し実行する。定周期タスク実行部１４０は、少なくとも、ファンクションブロック４００が示す命令を実行するか否かの判断を行う。ファンクションブロック４００が示す命令の実行条件が成立すると、定周期タスク実行部１４０は、通信設定部１６０にファンクションブロック４００が示す命令の実行を指示する。
【００９９】
変換情報特定部１８０は、ＣＰＵユニット１００に接続されている中継ユニット２００が解釈可能なコマンドを特定し、特定したコマンドに変換するための変換情報５８２を特定する。より具体的には、変換情報特定部１８０は、中継ユニット２００のデバイス情報２６０を中継ユニット２００から取得し、デバイス情報２６０に基づいて変換情報５８２を特定する。デバイス情報２６０は、たとえば、ＭＡＣ（Media Access Control）アドレスが想定される。
【０１００】
より具体的には、サポート装置３０からユーザプログラム１０６６がインストールされるときには、ユーザプログラム１０６６に含まれる１または複数のファンクションブロック４００の各々に対応する変換情報５８２が各コマンド群５８０から抽出され、ＣＰＵユニット１００にインストールされる。この変換情報５８２の集合を変換情報群１８２とする。変換情報特定部１８０は、変換情報群１８２から、通信設定部１６０が実行するファンクションブロック４００と、特定したデバイス情報２６０とに基づいて変換情報５８２を特定する。たとえば、ＣＰＵユニット１００に接続されている中継ユニット２００がＡ社のコマンドを解釈し、通信設定部１６０がファンクションブロックＡの命令を実行する場合、変換情報特定部１８０は、変換情報ａａを特定することとなる。
【０１０１】
通信設定部１６０は、変換情報特定部１８０が特定した変換情報５８２に基づいて、ファンクションブロック４００が示す命令を中継ユニット２００との間でコマンドの遣り取りを行なうことで実行する。
【０１０２】
定周期タスク実行部１４０は定周期でタスクを実行し、当該タスクには通信設定部１６０の命令の実行状況を取得する処理が含まれる。すなわち、定周期タスク実行部１４０は、通信設定部１６０が行なう命令の実行を監視する。
【０１０３】
中継ユニット２００の設定情報格納部２２０は、通信設定に関する情報が格納されている。中継ユニット２００とＣＰＵユニット１００との間でコマンドが遣り取りされる中で、設定情報格納部２２０に格納された通信設定に関する情報（設定情報２２２）は改変される。
【０１０４】
中継ユニット２００の設定情報更新部２４０は、通信設定部１６０とコマンドの遣り取りをし、コマンドの遣り取りをする中で、設定情報格納部２２０に設定情報２２２を格納する。
【０１０５】
製造現場２においては、ＣＰＵユニット１００を中心にフィールド装置群４０などの装置が制御される。実施の形態２において、ＣＰＵユニット１００は、中継装置である中継ユニット２００と遣り取りができるコマンドに変換した上で、中継ユニット２００との間でデータの遣り取りを行い、中継ユニット２００の通信設定を行う。すなわち、実施の形態１の通信システム１は、フィールド装置群４０などの装置を制御する制御装置であるＣＰＵユニット１００から、通信を中継する中継装置である中継ユニット２００の状態を変えることができる。
【０１０６】
そのため、製造現場２で働くユーザは、セキュリティや通信に対する専門的な知識を身につけなくとも、フィールド装置群４０などの装置を制御するときと同じように中継装置である中継ユニット２００の状態を変えることができる。実施の形態１においては、ＣＰＵユニット１００は、中継装置の状態として、通信の設定を変更することができる。また、実施の形態１において、ＣＰＵユニット１００から中継ユニット２００の状態を変える方法として、ユーザプログラムを実行するという方法が採用されている。
【０１０７】
＜Ｇ．プログラム例＞
（Ｇ１．ユーザプログラム）
図８および図９を参照して、ファンクションブロックの使用例について説明する。図８および図９は、通信設定に係るファンクションブロックを組み込んだユーザプログラム１０６６の例を示す図である。
【０１０８】
図８および図９に示すユーザプログラム１０６６は、ラダープログラムで規定されている。このユーザプログラム１０６６は、製造現場２において異常が発生し、コントローラ１０がメンテナンスモードに設定された場合に、リモートサイト４からメンテナンスを行えるようにＶＰＮの設定を行なうことが規定されている。
【０１０９】
ユーザプログラム１０６６は、入力要素ＩＮ１〜ＩＮ６と、ファンクションブロックＦＢ１〜ＦＢ３と、ストラクチャードテキストＳＴと、出力要素ＯＵＴ１〜ＯＵＴ５とで規定されている。
【０１１０】
ファンクションブロックＦＢ１は、「ＲＣ＿ＳｅｔＶＰＮＳｅｒｖｅｒＳｅｔｔｉｎｇ」と称される。ファンクションブロックＦＢ１は、製造現場２とリモートサイト４との間でのＶＰＮ設定を中継ユニット２００に書き込むという命令を示している。ファンクションブロックＦＢ１は、中継ユニット２００に書き込む設定条件の入力を受け付ける入力部４１２Ａ〜４１２Ｋと、書き込み処理を行った結果を出力するための出力部４１４Ａ〜４１４Ｄとを含む。
【０１１１】
入力部４１２Ｂ〜４１２ＫはＶＰＮの設定条件を示しており、入力部４１２Ｂ〜４１２Ｋに入力された設定条件にしたがってＶＰＮが規定される。
【０１１２】
「Ｅｘｅｃｕｔｅ」として示される入力部４１２Ａは、書き込み処理を実行するか否かを指定するための設定を受け付ける。一例として、入力部４１２Ａは、「Ｔｒｕｅ」（ＯＮ）または「Ｆａｌｓｅ」（ＯＦＦ）の入力を受け付ける。入力部４１２Ａに「Ｆａｌｓｅ」が入力されている限り、書き込み処理は実行されない。図８に示す例では、入力要素ＩＮ３の値が「Ｔｒｕｅ」（ＯＮ）となったときに書き込み処理が実行される。
【０１１３】
「ＶＰＮＳｅｒｖｅｒＡｄｄｒｅｓｓ」として示される入力部４１２Ｂは、ＶＰＮサーバとして利用するＩＰアドレスを指定するための入力を受け付ける。このＩＰアドレスは、中継ユニット２００に予め設定されている１または複数のＩＰアドレスのうちの一のＩＰアドレスである。ＣＰＵユニット１００は、入力部４１２Ｂに入力されたＩＰアドレスに従って、通信設定を行なう対象を特定する。図８に示す例では、入力部４１２Ｂに「１９２．１６８．１．２５４／２４」が入力されており、ＣＰＵユニット１００は、中継ユニット２００に割り振られたＩＰアドレスのうち、「１９２．１６８．１．２５４／２４」をＶＰＮサーバ用のアドレスとして利用する。
【０１１４】
「ＬｏｇｉｎＩＤ」として示される入力部４１２Ｃは、ＶＰＮの設定を行なうためのユーザＩＤの入力を受け付ける。「ＬｏｇｉｎＰａｓｓｗｏｒｄ」として示される入力部４１２Ｄは、ＶＰＮの設定を行なうためのパスワードの入力を受け付ける。ユーザＩＤおよびパスワードは、中継ユニット２００に対してリモートアクセスする際に必要な情報である。
【０１１５】
「ＶＰＮＳｅｖｅｒＣｏｎｆｉｇＮａｍｅ」として示される入力部４１２Ｅは、任意に設定可能な設定するＶＰＮサーバの名称の入力を受け付ける。
【０１１６】
「ＶＰＮＣｌｉｅｎｔＡｄｄｒｅｓｓ」として示される入力部４１２Ｆは、フィールドネットワークの外部のネットワーク上で、中継ユニット２００に対してアクセスする中継器４ｂに割り当てられているＩＰアドレスを指定するための入力を受け付ける。図８に示す例では、入力部４１２Ｆに「２０．０．０．１」が入力されており、中継ユニット２００は、「２０．０．０．１」のＩＰアドレスが割り当てられた中継器４ｂからのアクセスを許可する。
【０１１７】
「ＰｒｅＳｈａｒｅｄＫｅｙ」として示される入力部４１２Ｇは、リモートアクセスを許可するか否かを決定するための事前共有鍵を指定するための入力を受け付ける。
【０１１８】
「ＡｕｔｈｅｎｔｉｃａｔｉｏｎＡｌｇｏｒｉｔｈｍ」として示される入力部４１２Ｈは、設定されたＶＰＮにおいて利用される認証アルゴリズムを指定するための入力を受け付ける。認証アルゴリズムは、たとえば、ＭＤ５（Message Digest Algorithm 5），ＳＨＡ（Secure Hash Algorithm）−１，ＨＭＡＣ（Hash-based Message Authentication Code）などが想定される。
【０１１９】
「ＥｎｃｒｙｐｔｉｏｎＡｌｇｏｒｉｔｈｍ」として示される入力部４１２Ｉは、設定されたＶＰＮにおいて利用される暗号アルゴリズムを指定するための入力を受け付ける。暗号アルゴリズムは、たとえば、ＤＥＳ（Data Encryption Standard），３ＤＥＳ，ＡＥＳ（Advanced Encryption Standard）などが想定される。
【０１２０】
「ＤｅｓｔｉｎａｔｉｏｎＩＰＡｄｄｒｅｓｓ」として示される入力部４１２Ｊは、設定されたＶＰＮにアクセスする機器のＩＰアドレスを指定するための入力を受け付ける。図８に示す例では、入力部４１２Ｊに「１９２．１６８．２．０」が入力されており、中継ユニット２００は、「１９２．１６８．２．０」が割り当てられた機器のアクセスを許可する。
【０１２１】
「ＤｅｓｔｉｎａｔｉｏｎＮｅｔｗｏｒｋＭａｓｋ」として示される入力部４１２Ｋは、入力部４１２Ｊに入力されたＩＰアドレスのネットマスクを指定するための入力を受け付ける。
【０１２２】
書き込み処理が正常に実行された場合には、正常終了を示す信号が、「Ｄｏｎｅ」として示される出力部４１４Ａから出力される。書き込み処理の実行中には、書き込み処理中を示す信号が、「Ｂｕｓｙ」として示される出力部４１４Ｂから出力される。ＶＰＮ設定が正常に書き込まれなかった場合には、異常終了を示す信号が、「Ｅｒｒｏｒ」として示される出力部４１４Ｃから出力される。この場合には、さらに、エラーの内容を識別するためのエラーＩＤが、「ＥｒｒｏｒＩＤ」として示される出力部４１４Ｄから出力される。
【０１２３】
ファンクションブロックＦＢ２は、「ＲＣ＿ＡｐｐｌｙＶＰＮＳｅｒｖｅｒＳｅｔｔｉｎｇ」と称される。ファンクションブロックＦＢ２は、中継ユニット２００に書き込まれたＶＰＮ設定を有効にする命令を示している。ファンクションブロックＦＢ２は、有効にするＶＰＮ設定を指定するための入力を受け付ける入力部４２２Ａ〜４２２Ｅと、有効化処理を行った結果を出力するための出力部４２４Ａ〜４２４Ｄとを含む。
【０１２４】
入力部４２２Ｂ〜４２４Ｅが受け付ける情報は、有効にするＶＰＮサーバを特定するための情報である。入力部４２２Ｂ〜４２４Ｅの各々が受け付ける詳細な情報は、入力部４１２Ｂ〜４１４Ｅが受け付ける情報と共通するため、説明を省略する。また、出力部４２４Ａ〜４２４Ｄが出力する情報は、出力部４１４Ａ〜４１４Ｄが出力する情報と共通するため、説明を省略する。
【０１２５】
ファンクションブロックＦＢ３は、「ＲＣ＿ＧｅｔＶＰＮＳｅｒｖｅｒＳｅｔｔｉｎｇ」と称される。ファンクションブロックＦＢ３は、中継ユニット２００に書き込まれたＶＰＮ設定を読み出す命令を示している。ファンクションブロックＦＢ３は、読み出す対象のＶＰＮ設定を指定するための入力を受け付ける入力部４３２Ａ〜４３２Ｅと、有効化処理を行った結果を出力するための出力部４３４Ａ〜４３４Ｊとを含む。
【０１２６】
入力部４３２Ａ〜４３４Ｅが受け付ける情報は、入力部４１２Ａ〜４１４Ｅが受け付ける情報と共通するため、説明を省略する。また、出力部４３４Ａ〜４３４Ｄが出力する情報は、出力部４１４Ａ〜４１４Ｄが出力する情報と共通するため、説明を省略する。出力部４１４Ｅ〜４１４Ｊが出力する情報は、入力部４３２Ａ〜４３４Ｅに入力されて指定されたＶＰＮ設定の結果である。出力部４１４Ｅ〜４１４Ｊの全てから情報が出力されたことに伴って、正常終了を示す信号が、「Ｄｏｎｅ」として示される出力部４１４Ａから出力される。
【０１２７】
ストラクチャードテキストＳＴは、「ＲＣ＿ＣｈｅｃｋＶＰＮＳｅｒｖｅｒＳｅｔｔｉｎｇ」と称される。ストラクチャードテキストＳＴは、書き込まれたＶＰＮ設定の情報と、読み出されたＶＰＮ設定の情報とが一致しているか否かを判定するための命令を示している。ストラクチャードテキストＳＴが示す命令を設定照合処理とする。より具体的には、ストラクチャードテキストＳＴは、ファンクションブロックＦＢ０の入力部４１２Ｆ〜入力部４１２Ｋに入力された各情報と、ファンクションブロックＦＢ０の出力部４３２Ｅ〜４３２Ｊから出力された各情報とが一致している場合に、変数「ＣｈｅｃｋＶＰＮＤｏｎｅ」の値を「Ｔｒｕｅ」（ＯＮ）にし、いずれか一つでも一致していなけらば、変数「ＣｈｅｃｋＶＰＮＤｏｎｅ」の値を「Ｆａｌｓｅ」（ＯＦＦ）にする。
【０１２８】
入力要素ＩＮ１〜ＩＮ６の値は、割付けられている変数に応じて変化する。より具体的には、入力要素ＩＮ１には、変数「Ｓｔａｔｕｓ＿Ｅｒｒ」が割り当てられている。変数「Ｓｔａｔｕｓ＿Ｅｒｒ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「Ｓｔａｔｕｓ＿Ｅｒｒ」の値は、コントローラ１０の状態がエラー状態となったことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「Ｓｔａｔｕｓ＿Ｅｒｒ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。
【０１２９】
入力要素ＩＮ２には、変数「Ｍｏｄｅ＿ｍａｉｎｔｅｎａｎｃｅ」が割り当てられている。変数「Ｍｏｄｅ＿ｍａｉｎｔｅｎａｎｃｅ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「Ｍｏｄｅ＿ｍａｉｎｔｅｎａｎｃｅ」の値は、ユーザがＨＭＩ２０を操作して、コントローラ１０をリモートメンテナンスを実行するモードに変化させたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「Ｍｏｄｅ＿ｍａｉｎｔｅｎａｎｃｅ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。なお、リモートメンテナンスを実行するモードに変化させる契機は、ＨＭＩ２０からの操作に限らず、コントローラ１０に設けられた図示しないスイッチへの操作によるものであってもよい。
【０１３０】
入力要素ＩＮ３には、変数「ＳｅｔＶＰＮＦｌａｇ」が割り当てられている。変数「ＳｅｔＶＰＮＦｌａｇ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＳｅｔＶＰＮＦｌａｇ」の値は、出力要素ＯＵＴ１に関連付けられている。出力要素ＯＵＴ１から「Ｔｒｕｅ」（ＯＮ）が出力されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＳｅｔＶＰＮＦｌａｇ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。なお、出力要素ＯＵＴ１は、入力要素ＩＮ０および入力要素ＩＮ１がいずれも「Ｔｒｕｅ」（ＯＮ）となるときに、「Ｔｒｕｅ」（ＯＮ）を出力し、その他の場合、「Ｆａｌｓｅ」（ＯＦＦ）を出力する。
【０１３１】
入力要素ＩＮ４には、変数「ＳｅｔＶＰＮＤｏｎｅ」が割り当てられている。変数「ＳｅｔＶＰＮＤｏｎｅ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＳｅｔＶＰＮＤｏｎｅ」の値は、出力要素ＯＵＴ２に関連付けられている。出力要素ＯＵＴ２から「Ｔｒｕｅ」（ＯＮ）が出力されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＳｅｔＶＰＮＤｏｎｅ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。なお、出力要素ＯＵＴ２は、ファンクションブロックＦＢ１の出力部４１４Ａから正常終了を示す信号が出力されると、「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化する。
【０１３２】
入力要素ＩＮ５には、変数「ＡｐｐｌｙＶＰＮＤｏｎｅ」が割り当てられている。変数「ＡｐｐｌｙＶＰＮＤｏｎｅ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＡｐｐｌｙＶＰＮＤｏｎｅ」の値は、出力要素ＯＵＴ３に関連付けられている。出力要素ＯＵＴ３から「Ｔｒｕｅ」（ＯＮ）が出力されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＡｐｐｌｙＶＰＮＤｏｎｅ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。なお、出力要素ＯＵＴ３は、ファンクションブロックＦＢ２の出力部４２４Ａから正常終了を示す信号が出力されると、「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化する。
【０１３３】
入力要素ＩＮ６には、変数「ＧｅｔＶＰＮＤｏｎｅ」が割り当てられている。変数「ＧｅｔＶＰＮＤｏｎｅ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＧｅｔＶＰＮＤｏｎｅ」の値は、出力要素ＯＵＴ４に関連付けられている。出力要素ＯＵＴ４から「Ｔｒｕｅ」（ＯＮ）が出力されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＧｅｔＶＰＮＤｏｎｅ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。なお、出力要素ＯＵＴ４は、ファンクションブロックＦＢ３の出力部４３４Ａから正常終了を示す信号が出力されると、「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化する。
【０１３４】
出力要素ＯＵＴ５には、変数「ＣｈｅｃｋＶＰＮＤｏｎｅ」が割り当てられている。変数「ＣｈｅｃｋＶＰＮＤｏｎｅ」は、ストラクチャードテキストＳＴにおいて、書き込まれたＶＰＮ設定の情報と、読み出されたＶＰＮ設定の情報とが全て一致している場合に「Ｔｒｕｅ」（ＯＮ）となり、少なくとも一の情報が一致しなかった場合およびストラクチャードテキストＳＴのプログラムが実行されていないときに「Ｆａｌｓｅ」（ＯＦＦ）となる。
【０１３５】
（Ｇ２．実行タイミング）
図１０は、図８および図９に示すユーザプログラムを実行したときの定周期タスク実行部１４０および通信設定部１６０が処理を実行するタイミングを示す図である。
【０１３６】
定周期タスク実行部１４０は、コントローラ１０の制御周期に従ってユーザプログラム１０６６を繰り返し実行する。定周期タスク実行部１４０において実行される一連の処理は、制御周期Ｔごとに必ず１周期実行される。定周期タスク実行部１４０が実行する一連の処理（優先処理１４２と称する）には、Ｉ／Ｏリフレッシュ処理１４４が含まれる。Ｉ／Ｏリフレッシュ処理１４４においては、変数の値が更新される。
【０１３７】
定周期タスク実行部１４０は、Ｉ／Ｏリフレッシュ処理１４４を実行することで変数の値を更新し、その後の処理で、通信設定にかかる処理の実行条件の成立の有無を判断する。通信設定にかかる処理の実行条件が成立している場合、通信設定部１６０は、優先処理１４２の実行が完了した後、実行条件の成立している通信設定にかかる処理を実行する。通信設定部１６０は、次の周期が開始されると実行中の処理を中断し、その後、優先処理１４２の実行が再度完了すると、中断した処理を再開する。
【０１３８】
図１０に示す例においては、タイミングｔ１でエラー信号が出力され、タイミングｔ２でメンテナンスモードに設定されたものとする。メンテナンスモードに設定されたタイミングｔ２における制御周期Ｔを第１周期とすると、第２周期に実行されるＩ／Ｏリフレッシュ処理１４４で、変数「ＳｅｔＶＰＮＦｌａｇ」は「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化する。これにより、図８のファンクションブロックＦＢ１が示す書き込み処理の実行条件が成立する。
【０１３９】
書き込み処理は、通信設定部１６０が実行する処理である。通信設定部１６０は、第２周期の優先処理１４２が完了したタイミングｔ３から書き込み処理を開始し、第３周期の始まるタイミングｔ４で書き込み処理を中断する。その後、第３周期の優先処理１４２が完了したタイミングｔ４から中断した書き込み処理を再開する。
【０１４０】
通信設定部１６０は、書き込み処理の実行中は処理の実行中を示す信号を出力し、処理が正常に終了すると、正常終了を示す信号を出力する。図１０に示す例では、タイミングｔ５で書き込み処理が終了したものとする。
【０１４１】
タイミングｔ５で書き込み処理が終了すると、第５周期で実行されるＩ／Ｏリフレッシュ処理１４４で、変数「ＳｅｔＶＰＮＤｏｎｅ」は「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化する。これにより、図８のファンクションブロックＦＢ２が示す有効化処理の実行条件が成立する。
【０１４２】
このように、図８および図９に示すユーザプログラム１０６６の処理は、通信設定部１６０と定周期タスク実行部１４０とが協働して進める。そして、ストラクチャードテキストＳＴが示す設定照合処理が完了した以降は、他の実行条件が成立するまで通信設定部１６０は、処理を行わない。
【０１４３】
（Ｇ３．ＣＰＵユニットと中継ユニットとの間のコマンドの遣り取り）
図８および図９に示すユーザプログラムを実行したときにＣＰＵユニット１００の通信設定部１６０と中継ユニット２００の設定情報更新部２４０との間で行われる具体的なコマンドの遣り取りについて説明する。図１１は、通信設定部１６０と設定情報更新部２４０との間のコマンドの遣り取りを示す図である。図１１においては、通信設定処理の一例として書き込み処理について説明する。なお、図１１においては、図１０に示すような処理の中断、再開の記載を省略している。また、ステップは、以下、「Ｓ］と省略する。
【０１４４】
前述のように、通信設定部１６０は、変換情報特定部１８０が特定した変換情報５８２に基づいて、ファンクションブロック４００が示す命令を中継ユニット２００との間でやり取り可能なコマンドに変換し、中継ユニット２００との間でコマンドの遣り取りを行ない、ファンクションブロック４００が示す命令を実行する。
【０１４５】
より具体的には、通信設定部１６０は、書き込み処理の実行条件が成立して（Ｓ１００）、定周期タスク実行部１４０から書き込み処理の実行について指示を受ける（Ｓ１０２）。通信設定部１６０は、受けた指示、すなわち実行するファンクションブロック４００の種類に対応する変換情報５８２を特定する（Ｓ１０４）。より具体的には、通信設定部１６０は、変換情報特定部１８０に変換情報５８２の特定を指示し、特定結果を変換情報特定部１８０から受けることで、変換情報５８２を特定する。
【０１４６】
通信設定部１６０は、Ｓ１０４において特定した変換情報５８２に従ってファンクションブロックＦＢ１が示す命令を解釈し、コマンドの種類、および処理手順などの処理の内容を決定する（Ｓ１０６）。
【０１４７】
通信設定部１６０は、Ｓ１０６においてい決定した事項に従って、中継ユニット２００との間でのコマンドの遣り取りを行う。図１１に示す例では、Ｓ１０８〜Ｓ１２８の処理が実行される。なお、Ｓ１０８〜Ｓ１２８の処理は一例であって、この処理は中継ユニット２００の機種に応じて異なる場合もあり、また、遣り取りを行う際に利用されるコマンド（言語）も異なる場合がある。
【０１４８】
通信設定部１６０は、たとえば、新たに設定するユーザ名、パスワードが利用可能か否かの確認を設定情報更新部２４０に対して行う（Ｓ１０８）。
【０１４９】
設定情報更新部２４０は、設定情報格納部２２０に格納されている情報に基づいて新たに設定するユーザ名、パスワードが利用可能か否かを確認し、確認結果を通信設定部１６０に通知する（Ｓ１１０）。
【０１５０】
通信設定部１６０は、設定情報更新部２４０から通知された確認結果に基づいて、異常があるか否かを判定する（Ｓ１１２）。通信設定部１６０は、異常がある場合（Ｓ１１２においてＹＥＳ）、より具体的には、新たに設定するユーザ名、パスワードを利用できない場合、異常終了を示す信号および発生した異常を出力する（Ｓ１１４）。通信設定部１６０は、異常がない場合（Ｓ１１２においてＮＯ）、より具体的には、新たに設定するユーザ名、パスワードを利用できる場合、指定されたＩＰアドレスをＶＰＮサーバとして利用可能か否かの確認を設定情報更新部２４０に対して行う（Ｓ１１６）。
【０１５１】
設定情報更新部２４０は、設定情報格納部２２０に格納されている情報および中継ユニット２００に対して割り当てられているポートの情報に基づいて指定されたＩＰアドレスをＶＰＮサーバとして利用可能か否かを確認し、確認結果を通信設定部１６０に通知する（Ｓ１１８）。
【０１５２】
通信設定部１６０は、設定情報更新部２４０から通知された確認結果に基づいて、異常があるか否かを判定する（Ｓ１２０）。通信設定部１６０は、異常がある場合（Ｓ１２０においてＹＥＳ）、より具体的には、新たにＩＰアドレスを利用できない場合、異常終了を示す信号および発生した異常を出力する（Ｓ１２２）。通信設定部１６０は、異常がない場合（Ｓ１２０においてＮＯ）、より具体的には、新たにＩＰアドレスを利用できる場合、設定内容にかかる情報の書き込み指示を設定情報更新部２４０に対して行う（Ｓ１２４）。
【０１５３】
設定情報更新部２４０は、設定内容にかかる情報を設定情報格納部２２０に格納し、格納の完了を通信設定部１６０に対して通知する（Ｓ１２６）。
【０１５４】
通信設定部１６０は、処理が正常に終了したことを示す信号を出力する（Ｓ１２８）。定周期タスク実行部１４０は、処理が正常に終了したことを受けて、出力要素ＯＵＴ２を「Ｆａｌｓｅ」（＝ＯＦＦ）から「Ｔｒｕｅ」（ＯＮ）に変化させる。
【０１５５】
これによりファンクションブロックＦＢ２の実行条件が成立し、次の処理が実行される。なお、図１１においては、ファンクションブロックＦＢ２以降の処理は省略する。
【０１５６】
このように、通信設定部１６０は、ユーザが選択した一の命令（ファンクションブロック）を実行するために、設定情報更新部２４０との間で実行する処理の手順などを規定し、規定した手順に従って処理を実行することで選択された命令を行う。
【０１５７】
＜Ｈ．通信設定の具体例＞
図１２は、サポート装置３０において用意されている命令の一例である。実施の形態１においては、中継ユニット２００にＶＰＮ設定を書き込むという命令、中継ユニット２００に書き込まれたＶＰＮ設定を有効にする命令、および中継ユニット２００に書き込まれたＶＰＮ設定を読み出す命令を一例として説明した。中継ユニット２００との間でのデータの遣り取りが必要な命令としては、図１２に示す命令が想定される。
【０１５８】
図１２においては、各設定対象について、当該設定対象に対して想定される命令が「チェック印」で示されている。また、各設定対象について、当該設定対象に設定において必要なパラメータが設定パラメータの列に示されている。
【０１５９】
具体的には、ＣＰＵユニット１００から中継ユニット２００に対して設定可能な事項として、ＩＰアドレス、ＩＰアドレスルーティング（通信経路）、通信ポート、ポートミラーリング、ＮＡＴ（Network Address Translation）またはＮＡＰＴ（Network Address Port Translation）、ＶＬＡＮ（Virtual LAN）、Ｑｏｓ（Quality of Service）、ユーザ認証、ＡＣＬ（Access Control List：アクセス制限リスト）、ファイアフォール設定、電子証明書、ステータス、ログ、レポート通知などが挙げられる。
【０１６０】
設定内容は、取得（Ｇｅｔ）、書込（Ｓｅｔ）、反映（Ａｐｐｌｙ）、一覧取得（ＧｅｔＬｉｓｔ）、クリア（Ｃｌｅａｒ）、および有効・無効（Ｅｎａｂｌｅ／Ｄｉｓａｂｌｅ）が設けられている。取得（Ｇｅｔ）は、設定事項に関する情報を取得することを意味する。書込（Ｓｅｔ）は、設定事項に関する情報を書き込むことを意味する。反映（Ａｐｐｌｙ）は、設定事項に関する情報を反映することを意味する。一覧取得（ＧｅｔＬｉｓｔ）は、設定事項に関する情報の一覧を取得することを意味する。たとえば、一覧取得（ＧｅｔＬｉｓｔ）の命令が実行されると、中継装置に接続されているすべての機器から設定事項に関する情報を取得できたり、設定事項に関わるすべての情報を取得できたりする。クリア（Ｃｌｅａｒ）は、設定事項に関する情報を消去したり初期値にもどしたりすることを意味する。有効・無効（Ｅｎａｂｌｅ／Ｄｉｓａｂｌｅ）は、設定された事項の有効・無効を意味する。
【０１６１】
パラメータは、命令を実行する際に入力または出力される情報である。ＩＰアドレスに関する設定においては、たとえば、ＩＰアドレス，ネットワークマスク，デフォルトゲートウェイ，ＤＮＳ（Domain Name System）サーバー，ホスト名などがパラメータとして規定されている。また、ＩＰアドレスについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、およびクリアを用意することが可能である。
【０１６２】
ＩＰアドレスルーティングに関する設定においては、たとえば、ＩＰルーターテーブルなどがパラメータとして規定されている。また、ＩＰアドレスルーティングについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、およびクリアを用意することが可能である。
【０１６３】
通信ポートに関する設定においては、通信速度、双方向通信（Ｄｕｐｌｅｘ）の方式などがパラメータとして規定されている。通信ポートについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、およびクリアを用意することが可能である。
【０１６４】
ポートミラーリングに関する設定においては、たとえば、ミラーリングポート、モニタポートなどがパラメータとして規定されている。ポートミラーリングについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１６５】
ＮＡＴまたはＮＡＴＰに関する設定においては、たとえば、使用するＩＰアドレス、変換ルールを示すポート変換テーブルなどがパラメータとして規定されている。ＮＡＴまたはＮＡＴＰについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１６６】
ＶＬＡＮに関する設定においては、たとえば、ＶＬＡＮ  ＩＤ、ＶＬＡＮのポート番号（ＶＬＡＮ  ＰｏｒｔＮｕｍｂｅｒ）、アクセスポートまたはトランクポートとして設定されるポート番号などがパラメータとして規定されている。ＶＬＡＮについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１６７】
Ｑｏｓに関する設定においては、たとえば、フレームを転送する際の優先度がパラメータとして規定されている。Ｑｏｓについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１６８】
ユーザ認証に関する設定においては、たとえば、ユーザ名やパスワードなどの中継ユニット２００のユーザ情報がパラメータとして規定されている。ユーザ認証について用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１６９】
ＡＣＬについて用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１７０】
ファイアウォール設定について用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１７１】
電子証明書に関する設定において、たとえば、ネットワーク機器の電子証明書がパラメータとして規定されている。たとえば、電子証明書が出力される。電子証明書について用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリア、および有効・無効を用意することが可能である。
【０１７２】
ステータスに関する設定においては、たとえば、中継ユニット２００のステータスがパラメータとして規定されている。たとえば、中継ユニット２００のステータスが出力される。ステータスについて用意されている命令としては、たとえば、取得、反映、一覧取得、および有効・無効を用意することが可能である。
【０１７３】
ログに関する設定においては、たとえば、中継ユニット２００のログがパラメータとして規定されている。たとえば、中継ユニット２００のログが出力される。ログについて用意されている命令としては、たとえば、反映、一覧取得、クリアおよび有効・無効を用意することが可能である。
【０１７４】
レポート通知に関する設定においては、たとえば、ログの通知先の情報であるアドレスがパラメータとして規定されている。レポート通知について用意されている命令としては、たとえば、取得、書込、反映、一覧取得、クリアおよび有効・無効を用意することが可能である。
【０１７５】
＜Ｈ．変形例＞
（変形例１）
実施の形態１において、通信システム１は、中継ユニット２００およびＣＰＵユニット１００から構成されるとした。通信システム１の構成は図１に示した構成に限られない。図１３は、通信システムの変形例を示す図である。実施の形態１においては、中継装置は制御装置であるＣＰＵユニット１００とともに一のコントローラ１０を構成する中継ユニット２００であるとした。なお、中継装置は、コントローラ１０を構成するものである必要はなく、たとえば、図１３に示すように、ルータのような中継装置２００ａであってもよい。図１３中のコントローラ１０ａは、中継ユニット２００を含まない構成である。
【０１７６】
また、制御装置の機能を構成するＣＰＵと、中継装置の機能を構成するＣＰＵとを備えるコントローラによって通信システムを構成してもよい。また、制御装置の機能を構成するプロセッサコアと中継装置の機能を構成するプロセッサコアとを備えるマルチコアＣＰＵをコントローラに搭載することで通信システムを構成してもよい。
【０１７７】
（変形例２）
実施の形態１において、通信システム１は、ＨＭＩ２０を含むものとしたが、ＨＭＩを備えていなくともよい。たとえば、通信設定の実行条件が、ＨＭＩ２０から出力される信号に基づいて成立したが、ＣＰＵユニット１００に入力部を設け、当該入力部が受け付けた捜査に基づいて成立するものであってもよい。また、通信設定の実行条件は、ユーザの操作にかかわらず、コントローラ１０の状態や、フィールドネットワークから出力される信号に基づいて成立するものであってもよい。なお、通信設定が変更されると、通信が途切れてしまい、製造現場２に対して多大な影響を与える虞があるため、通信設定の実行条件は、ユーザの操作により成立するようにしてもよい。
【０１７８】
（変形例３）
実施の形態１において、ＣＰＵユニット１００は、中継ユニット２００の機種および命令に応じた変換情報５８２を備えるものとした。なお、変換情報５８２を備えることなく、中継ユニット２００の機種ごとに命令を用意してもよい。この場合に、サポート装置３０からＣＰＵユニット１００へは、ＣＰＵユニット１００に接続された中継ユニット２００に応じた命令を含むユーザプログラムをインストールしてもよく、また、中継ユニット２００の機種ごとにユーザプログラムを用意し、すべてのユーザプログラムをＣＰＵユニット１００にインストールし、接続された中継ユニット２００の種類に応じてユーザプログラムを実行するようにしてもよい。
【０１７９】
また、ＣＰＵユニット１００は、中継ユニット２００の機種を中継ユニット２００のデバイス情報２６０を取得し、デバイス情報２６０に基づいて変換情報５８２を特定するものとしたが、中継ユニット２００の機種の指定をユーザに行わせるようにしてもよい。たとえば、ＨＭＩ２０に機種の特定を要求する画面を表示させ、ＨＭＩ２０への入力に基づいて変換情報５８２を特定するようにしてもよい。
【０１８０】
［実施の形態２］
実施の形態１において、中継装置は、リモートサイト４のネットワークとＣＰＵユニット１００の間の通信を中継する装置であった。中継装置は、製造現場２内の各コントローラとそれらのコントローラを統括して管理するコントローラとを中継するスイッチであってもよい。図１４は、実施の形態２の制御装置の概略構成を示す図である。
【０１８１】
通信システム１ａは、Ｅｔｈｅｒｎｅｔスイッチである中継装置２００ｂと、製造現場２の一または複数のラインを管理する上位コントローラ１００ｂと、中継装置２００ｂを介して上位コントローラ１００ｂと接続されている一の製造ラインを管理するコントローラである機器４１ａ〜４１ｃとを含む。上位コントローラ１００ｂは、本願発明の制御装置の一例である。機器４１ａ〜４１ｃは、中継装置を介して制御装置と接続される機器の一例である。中継装置２００ｂは、本願発明の中継装置の一例である。
【０１８２】
中継装置２００ｂは、複数のポート２１０ａ〜２１０ｄを備える。なお、中継装置２００ｂが有するポートの数は、４つに限られるものではなく、３つ以下であってもよく、また、５つ以上であってもよい。
【０１８３】
ポート２１０ａには、上位コントローラ１００ｂが接続されている。ポート２１０ｂには、製品Ａ用のラインを管理するコントローラである機器４１ａが接続されている。機器４１ａには、製品Ａを製造するために必要なフィールド装置群４０ａが接続されている。ポート２１０ｃには、製品Ｂ用のラインを管理するコントローラである機器４１ｂが接続されている。機器４１ｂには、製品Ｂを製造するために必要なフィールド装置群４０ｂが接続されている。ポート２１０ｄには、製品Ｃ用のラインを管理するコントローラである機器４１ｃが接続されている。機器４１ｃには、製品Ｃを製造するために必要なフィールド装置群４０ｃが接続されている。
【０１８４】
上位コントローラ１００ｂは、（１）選択された一または複数の機器との間の通信を切断する（リンクオフ）、（２）選択された一または複数の機器との間の通信をつなげる（リンクオン）、（３）つなげた通信を確認するという３つの命令が組み合わされた構成のユーザプログラム１０６６ａをストレージ１０６に格納する。また、ストレージ１０６は、フィールド装置群４０ａ〜４０ｃごとに、フィールド装置群を動かすための条件を含むレシピ１０６８ａ〜１０６８ｃを格納する。レシピとは、生産手順、生産品種または生産に適したパラメータなどの条件を含むデータである。すなわち、レシピ１０６８ａは、フィールド装置群４０ａを動かすための条件を含み、この条件とは、製品Ａを製造するための生産手順、生産品種または生産に適したパラメータなどの条件を含む。
【０１８５】
ユーザプログラム１０６６ｂは、たとえばサポート装置３０を利用して作成され、サポート装置３０から上位コントローラ１００ｂにインストールされる。また、レシピ１０６８ａ〜１０６８ｃは、サポート装置３０からインストールされてもよく、また、メモリーカードなどの記憶媒体に格納された状態で上位コントローラ１００ｂにインストールされてもよい。
【０１８６】
上位コントローラ１００ｂは、実施の形態１と同様、通信設定部１６０ｂを備える。通信設定部１６０ｂは、ユーザプログラム１０６６ｂに含まれる各命令を実行するにあたり、中継装置２００ｂとの間でコマンドの遣り取りをする。
【０１８７】
ユーザプログラム１０６６ｂは、（１）の命令→レシピの更新→（２）の命令→（３）の命令の順で行われるようにプログラミングされている。ここで、レシピとは、生産手順、生産品種または生産に適したパラメータなどの条件を含むデータである。
【０１８８】
すなわち、上位コントローラ１００ｂは、ユーザプログラム１０６６ｂの実行条件が成立した場合に、中継装置２００ｂとデータを遣り取りすることでポート２１０ｂとの通信を切断し、その後、レシピを製品Ａ用のレシピから製品Ｃ用のレシピに切り替える。上位コントローラ１００ｂは、レシピを切り替えたのち、中継装置２００ｂとデータを遣り取りすることで新たにポート２１０ｄとの間の通信を確立させる。そして、上位コントローラ１００ｂは、機器Ｃとの間の通信が確立されたか否かのテストを行い、通信の確立が確認されると処理が正常に終了したものとする。
【０１８９】
このように、通信の切り替え機能を有する中継装置２００ｂを利用し、各ポートに予め機器を接続しておくことで、段取り替えを容易に行うことができる。また、予め機器を中継装置２００ｂに接続しておくことで、段取り替えのときに機器同士を接続する線を抜いたりさしたりする必要がなく、接続線の劣化を防止することができるとともに、接続間違いを防止することができる。
【０１９０】
§３  付記
以上のように、上記の実施の形態１，２および変形例は以下のような開示を含む。
【０１９１】
＜構成１＞
中継装置（２００，２００Ａ，２００ａ，２００ｂ）を介して他の装置（４ａ，４１Ａ，４１Ｂ，４１Ｃ，４１ａ，４１ｂ，４１ｃ）と通信可能な制御装置（１００，１００Ａ，１００ａ，１００ｂ）であって、
前記中継装置を介した通信に関する通信設定を行うための命令（ＦＢ１，ＦＢ２，ＦＢ３）を少なくとも一つ含むユーザプログラム（１０６６，１０６６Ａ，１０６６ａ）が格納された記憶部（１０６，１０６Ａ）と、
前記命令の実行条件が成立したことに基づき、前記中継装置との間でコマンドの送受信を行い、当該命令が示す前記通信設定を行う通信設定部（１６０，１６０Ａ，１６０ｂ）とを備える、制御装置。
【０１９２】
＜構成２＞
前記中継装置との間で行われるコマンドの送受信にかかるプロトコルは、当該中継装置の種類に応じて異なり、
前記通信設定部は、前記中継装置の種類に応じたプロトコルに従い、当該中継装置との間でコマンドの送受信を行う、構成１に記載の制御装置。
【０１９３】
＜構成３＞
前記記憶部は、前記プロトコルを含む変換情報（５８２）を、前記中継装置の種類ごとに格納し、
前記中継装置の種類を当該中継装置が備えるデバイス情報（２６０）に基づいて判断し、当該中継装置の種類に基づいて前記変換情報を特定する変換情報特定部（１８０）をさらに備え、
前記通信設定部は、前記変換情報が特定した前記変換情報に基づいて当該中継装置との間でコマンドの送受信を行う、構成２に記載の制御装置。
【０１９４】
＜構成４＞
前記変換情報は、前記命令の内容ごとに前記記憶部に格納され、
前記変換情報特定部は、実行条件が成立した命令および前記中継装置の種類に基づいて前記変換情報を特定する、構成３に記載の制御装置。
【０１９５】
＜構成５＞
前記ユーザプログラムは、前記通信設定にかかる命令と、当該命令に比べて優先度の高い優先命令とを含み、
前記優先命令を定周期で繰り返し実行する定周期タスク実行部（１４０）をさらに備え、
前記通信設定部は、前記優先命令の実行を妨げないように前記通信設定にかかる命令を行う、構成１〜構成４のうちいずれか１項に記載の制御装置。
【０１９６】
＜構成６＞
前記中継装置を介して第１のフィールド装置群を管理する第１機器（４１ａ）と、第２のフィールド装置群を管理する第２機器（４１ｃ）と通信可能に接続されており、
前記記憶部は、前記第１のフィールド装置群を動かす条件を含む第１のレシピ（１０６８ａ）と、前記第２のフィールド装置群を動かす条件を含む第２のレシピ（１０６８ｃ）とを格納し、
前記ユーザプログラムは、接続先の機器を切り替える命令と、当該切り替えに応じてレシピを切り替える命令とを含む、構成１〜構成５のうちいずれか１に記載の制御装置。
【０１９７】
＜構成７＞
中継装置（２００，２００Ａ，２００ａ，２００ｂ）を介して他の装置（４ａ，４０Ａ，４０Ｂ，４０Ｃ，４１ａ，４１ｂ，４１ｃ）と通信可能な制御装置（１００，１００Ａ，１００ａ，１００ｂ）用のユーザプログラムの開発を支援するためのサポート装置（３０，３０Ａ）であって、
前記中継装置を介した通信に関する通信設定を行うための命令（ＦＢ１，ＦＢ２，ＦＢ３）を少なくとも一つ格納する記憶部（１０６，１０６Ａ）と、
前記記憶部に格納された少なくとも一つの前記命令を組み合わせて前記ユーザプログラムを生成するための制御部（３１）とを備え、
前記制御部は、前記命令の実行時に前記制御装置が前記中継装置との間でコマンドの送受信を行うことが可能な形式で前記ユーザプログラムを作成する、サポート装置。
【０１９８】
＜構成８＞
中継装置（２００，２００Ａ，２００ａ，２００ｂ）と、
前記中継装置を介して他の装置と通信可能な制御装置（１００，１００Ａ，１００ａ，１００ｂ）とを備え、
前記制御装置は、
前記中継装置を介した通信に関する通信設定を行うための命令（ＦＢ１，ＦＢ２，ＦＢ３）を少なくとも一つ含むユーザプログラム（１０６６，１０６６Ａ，１０６６ａ）が格納された記憶部（１０６，１０６Ａ）と、
前記命令の実行条件が成立したことに基づき、前記中継装置との間でコマンドの送受信を行い、当該命令が示す前記通信設定を行う通信設定部（１６０，１６０Ａ，１６０ｂ）とを備える、通信システム。
【０１９９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合せても、実施することが意図される。
【符号の説明】
【０２００】
１，１ａ  通信システム、２  製造現場、４  リモートサイト、４ａ  コンピュータ
４ｂ  中継器、１０，１０ａ  コントローラ、３０，３０Ａ  サポート装置、３１，１０２  プロセッサ、３２，１０４  メインメモリ、３３  入力部、３４  出力部、３５，１０６  ストレージ、３６  光学ドライブ、３６ａ  記録媒体、３８，１２０  プロセッサバス、４０，４０ａ，４０ｂ，４０ｃ  フィールド装置群、４１Ａ，４１Ｂ，４１Ｃ，４１  装置、４１ａ，４１ｂ，４１ｃ，Ｃ  機器、４２  リレー群、４５  サーボドライバ、４６  サーボモータ、１００  ＣＰＵユニット、１００ｂ  上位コントローラ、１００Ａ  制御装置、１０６Ａ  記憶部、１０８  情報系ネットワークコントローラ、１１０  制御系ネットワークコントローラ、１１２  ユニット間バスコントローラ、１１４  ローカルバスコントローラ、１１８  メモリカードインターフェイス、１１８ａ  メモリカード，１４０  定周期タスク実行部、１４２  優先処理、１４４  Ｉ／Ｏリフレッシュ処理、１６０，１６０Ａ，１６０ｂ  通信設定部、１８０  変換情報特定部、１８２  変換情報群、２００，２００Ａ，２００ｂ  中継装置、２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ  ポート、２２０  設定情報格納部、２２２  設定情報、２４０  設定情報更新部、２６０  デバイス情報、３００  電源ユニット、３５４  サポートプログラム、３５６  ＦＢライブラリ、３５８  コマンドライブラリ、４００  ファンクションブロック、５４１  エディタ、５４２  コンパイラ、５４３  デバッガ、５４４  ＧＵＩモジュール、５４５  シミュレータ、５５０  データ格納部、５８０，５８０Ａ，５８０Ｂ  コマンド群、５８２  変換情報、６４２  スケジューラプログラム、６４４  シーケンス命令プログラム、６４６  入出力処理プログラム、６４８  アクセス処理プログラム、１０６４  システムプログラム、１０６６，１０６６Ａ，１０６６ａ，１０６６ｂ  ユーザプログラム、１０６８ａ，１０６８ｂ，１０６８ｃ  レシピ。
【図１】
2020088690.tif 000003
【図２】
2020088690.tif 000004
【図３】
2020088690.tif 000005
【図４】
2020088690.tif 000006
【図５】
2020088690.tif 000007
【図６】
2020088690.tif 000008
【図７】
2020088690.tif 000009
【図８】
2020088690.tif 000010
【図９】
2020088690.tif 000011
【図１０】
2020088690.tif 000012
【図１１】
2020088690.tif 000013
【図１２】
2020088690.tif 000014
【図１３】
2020088690.tif 000015
【図１４】
2020088690.tif 000016