(57)【要約】【課題】制御システムの構成が変更されても、ユーザプログラムをそのまま利用できる情報処理装置および情報処理プログラムを提供する。【解決手段】ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理装置が提供される。リモート装置は、通信カプラユニットと内部バスを介して通信カプラユニットと接続される１または複数の機能ユニットとを含み。情報処理装置は、対象のリモート装置をネットワーク上で特定するためのアドレス情報と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報とを、任意の変数に関連付けるための設定を受け付けるユーザインターフェイスを提供する手段と、変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する手段と、生成されたユーザプログラムを制御装置へ送信する手段とを含む。【選択図】図７
2014199485.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理装置であって、前記リモート装置は、通信カプラユニットと内部バスを介して前記通信カプラユニットと接続される１または複数の機能ユニットとを含み、前記情報処理装置は、
対象のリモート装置を前記ネットワーク上で特定するためのアドレス情報と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報とを、任意の変数に関連付けるための設定を受け付けるユーザインターフェイスを提供する手段と、
前記変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する手段と、
生成されたユーザプログラムを前記制御装置へ送信する手段とを備える、情報処理装置。
【請求項２】
前記変数を利用して作成されたソースプログラムから実行可能なユーザプログラムを生成する手段をさらに備える、請求項１に記載の情報処理装置。
【請求項３】
前記アドレス情報は、前記ネットワーク上のノードアドレスまたはインターネットアドレスを含み、
前記ユニット情報は、前記対象の機能ユニットまでの経路情報を含む、請求項１または２に記載の情報処理装置。
【請求項４】
前記設定を受け付けるユーザインターフェイスを提供する手段は、前記対象のリモート装置を前記ネットワーク上で特定するためのアドレス情報を受け付ける第１のユーザインターフェイス画面と、前記第１のユーザインターフェイス画面とは異なる、前記対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報を受け付ける第２のユーザインターフェイス画面とを提供する、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理プログラムであって、前記リモート装置は、通信カプラユニットと内部バスを介して前記通信カプラユニットと接続される１または複数の機能ユニットとを含み、前記情報処理プログラムは、コンピュータを
対象のリモート装置を前記ネットワーク上で特定するためのアドレス情報と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報とを、任意の変数に関連付けるための設定を受け付けるユーザインターフェイスを提供する手段と、
前記変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する手段と、
生成されたユーザプログラムを前記制御装置へ送信する手段として機能させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理装置および情報処理プログラムに関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable Logic Controller；以下「ＰＬＣ」とも称す）などの制御装置を主たる構成とした制御システムによって制御される。このような制御装置で実行される制御プログラムは、典型的には、ユーザがサポート装置と称される情報処理装置を操作して設計することで生成される。このようなユーザによって自由に設計・作成されるプログラムをユーザプログラムとも称す。非特許文献１は、このようなサポート装置によって提供される機能の一例を開示する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「オートメーションソフトウェア  Sysmac Studio  Version 1  オペレーションマニュアル」、オムロン株式会社、２０１２年８月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に記載のアプリケーションでは、例えば、ＩＯ（Input/Output）ユニットに入力される値および／または出力される値を変数で定義することができる。このような変数を用いることで、ユーザプログラムをより容易に作成することができる。
【０００５】
しかしながら、何らかのユーザプログラムを作成した後、制御システムの構成が変更されることもある。例えば、新たなＩＯユニットが追加されたり、ネットワーク構成が変更されたりする場合がある。従来のアプリケーションでは、このような場合において、既に作成したユーザプログラムを見直して、当該変更に伴って対応する部分を変更する必要が生じる。
【０００６】
すなわち、制御システムの構成の変更に伴って、ユーザプログラムの修正が必要になり、ユーザ（開発者など）にとって、手間がかかるという課題があった。そこで、本発明は、制御システムの構成が変更されても、ユーザプログラムをそのまま利用できる情報処理装置および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のある局面によれば、ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理装置が提供される。リモート装置は、通信カプラユニットと内部バスを介して通信カプラユニットと接続される１または複数の機能ユニットとを含む。情報処理装置は、対象のリモート装置をネットワーク上で特定するためのアドレス情報と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報とを、任意の変数に関連付けるための設定を受け付けるユーザインターフェイスを提供する手段と、変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する手段と、生成されたユーザプログラムを制御装置へ送信する手段とを含む。
【０００８】
好ましくは、情報処理装置は、変数を利用して作成されたソースプログラムから実行可能なユーザプログラムを生成する手段をさらに含む。
【０００９】
好ましくは、アドレス情報は、ネットワーク上のノードアドレスまたはインターネットアドレスを含み、ユニット情報は、対象の機能ユニットまでの経路情報を含む。
【００１０】
好ましくは、設定を受け付けるユーザインターフェイスを提供する手段は、対象のリモート装置をネットワーク上で特定するためのアドレス情報を受け付ける第１のユーザインターフェイス画面と、第１のユーザインターフェイス画面とは異なる、対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報を受け付ける第２のユーザインターフェイス画面とを提供する。
【００１１】
本発明の別の局面によれば、ネットワークを介して１つまたは複数のリモート装置とデータを遣り取りする制御装置において実行されるユーザプログラムを生成する情報処理プログラムが提供される。リモート装置は、通信カプラユニットと内部バスを介して通信カプラユニットと接続される１または複数の機能ユニットとを含む。情報処理プログラムは、コンピュータを、対象のリモート装置をネットワーク上で特定するためのアドレス情報と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報とを、任意の変数に関連付けるための設定を受け付けるユーザインターフェイスを提供する手段と、変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する手段と、生成されたユーザプログラムを制御装置へ送信する手段として機能させる。
【発明の効果】
【００１２】
本発明によれば、制御システムの構成が変更されても、ユーザプログラムをそのまま利用できる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に係る制御システムのシステム構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣの主要部を示すハードウェア構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣのソフトウェア構成を示す模式図である。
【図４】本実施の形態に係るＰＬＣに接続して用いられるサポート装置のハードウェア構成を示す模式図である。
【図５】制御システムのシステム構成の変更例を示す図である。
【図６】システム構成の変更とユーザプログラムとの関係を示す図である。
【図７】本実施の形態に係るサポート装置が提供するユーザプログラムの生成機能を説明するための模式図である。
【図８】本実施の形態に係るサポート装置が提供するネットワーク構成を設定するためのユーザインターフェイスの一例を示す図である。
【図９】本実施の形態に係るサポート装置が提供するユニット構成を設定するためのユーザインターフェイスの一例を示す図である。
【図１０】本実施の形態に係るサポート装置が提供するネットワーク構成を変更する場合の手順を示す図である。
【図１１】本実施の形態に係るサポート装置が提供するネットワーク構成を変更する場合の手順を示す図である。
【発明を実施するための形態】
【００１４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００１５】
＜Ａ．システム構成＞
まず、本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）を制御装置の典型例として説明を行う。但し、本発明に係る制御装置は、ＰＬＣに限られることなく、各種の制御装置へ適用可能である。
【００１６】
図１は、本実施の形態に係る制御システム１のシステム構成を示す模式図である。図１を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００に接続されるサポート装置３００とを含む。ＰＬＣ１００は、サポート装置３００によって生成されるユーザプログラムを周期的またはイベント的に実行する。サポート装置３００は、ＰＬＣ１００において実行されるユーザプログラムを生成する情報処理装置の典型例である。
【００１７】
サポート装置３００は、接続ケーブル１１４を介してＰＬＣ１００に接続可能になっている。サポート装置３００は、後述するようなユーザプログラムの生成、ＰＬＣ１００へのユーザプログラムの転送、各種パラメータの設定、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置３００との間は、典型的には、ＵＳＢ（Universal Serial Bus）規格に従って通信可能に構成される。
【００１８】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上の機能ユニット１０６とを含む。これらの機能ユニットは、典型的には、ＩＯユニット、通信ユニット、サーボユニットなどを含み、ＰＬＣシステムバス（図示しない）を介して、データを互いに遣り取りできるように構成される。また、これらの機能ユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００１９】
制御システム１において、ＰＬＣ１００は、機能ユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図１には、このようなフィールド機器の一例として、検出スイッチ１０およびリレー２０を示す。また、ＰＬＣ１００は、フィールドバス１１０を介して、１つ以上のリモートＩＯ装置２００とも接続されている。リモートＩＯ装置２００は、基本的には、機能ユニット１０６と同様に、一般的な入出力処理に関する処理を行う。
【００２０】
フィールドバス１１０としては、任意の種類のバス方式を採用することができる。例えば、フィールドバス１１０として、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどがある。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。例えば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などを用いてもよい。
【００２１】
リモートＩＯ装置２００は、ＰＬＣ１００とネットワークを介して接続される複数のリモート装置の典型例である。ＰＬＣ１００は、これらのリモートＩＯ装置２００との間でデータを遣り取りする。
【００２２】
より具体的には、リモートＩＯ装置２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上の機能ユニット２０４とを含む。これらの機能ユニットは、リモートＩＯ装置バス（図示しない）を介して、データを互いに遣り取りできるように構成される。
【００２３】
＜Ｂ．ＰＬＣ１００の構成＞
次に、本実施の形態に係るＰＬＣ１００の構成について説明する。図２は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。図３は、本実施の形態に係るＰＬＣ１００のソフトウェア構成を示す模式図である。
【００２４】
図２を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウェア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、ＵＳＢコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、メモリカードインターフェイス１７０とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００２５】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００２６】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ（Operating System）、システムプログラム、ユーザプログラム、データ定義情報、ログ情報などを不揮発的に保持する。
【００２７】
ＵＳＢコネクタ１３０は、サポート装置３００とＣＰＵユニット１０４とを接続するためのインターフェイスである。典型的には、サポート装置３００から転送される実行可能なプログラムなどは、ＵＳＢコネクタ１３０を介してＣＰＵユニット１０４に取込まれる。
【００２８】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００２９】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Dynamic Memory Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００３０】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。
【００３１】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００３２】
次に、図３を参照して、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００３３】
図３を参照して、ＣＰＵユニット１０４で実行されるソフトウェアとしては、ＯＳ１８０と、システムプログラム１８８と、ユーザプログラム１８６との３階層になっている。
【００３４】
ＯＳ１８０は、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行するための基本的な実行環境を提供する。
【００３５】
システムプログラム１８８は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。具体的には、システムプログラム１８８は、シーケンス命令プログラム１９０と、ＤＢ（データベース）アクセス処理プログラム１９２と、入出力処理プログラム１９４と、Ｔｏｏｌインターフェイス処理プログラム１９６と、スケジューラ１９８とを含む。一方、ユーザプログラム１８６は、制御対象に対する制御目的に応じて任意に作成されたプログラムである。
【００３６】
ユーザプログラム１８６は、シーケンス命令プログラム１９０と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１８６は、シーケンス命令プログラム１９０によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。
【００３７】
データ定義情報１８２は、ユーザプログラム１８６などが実行される際に、参照されるデータ（入力データ、出力データ、内部データ）をユニークな変数として扱うための定義を含む。稼動ログ１８４には、システムプログラム１８８およびユーザプログラム１８６の実行に伴って、予め定められた事象が発生した際に、当該発生した事象の情報が時刻情報と関連付けて格納される。
【００３８】
以下、各プログラムについてより詳細に説明する。
シーケンス命令プログラム１９０は、ユーザプログラム１８６の実行に伴って、ユーザプログラム１８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００３９】
ＤＢアクセス処理プログラム１９２は、ユーザプログラム１８６の実行に伴って、データベース装置へアクセスするために必要な処理を実現するための命令コード群を含む。
【００４０】
入出力処理プログラム１９４は、機能ユニット１０６や各種のフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００４１】
Ｔｏｏｌインターフェイス処理プログラム１９６は、サポート装置３００との間でデータを遣り取りするためのインターフェイスを提供する。
【００４２】
スケジューラ１９８は、予め定められた優先度やシステムタイマの値などに従って、制御プログラムを実行するためのスレッドやプロシージャを生成する。
【００４３】
ユーザプログラム１８６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム１８６は、サポート装置３００などにおいて、ラダー形式やファンクションブロック形式で記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラムは、サポート装置３００からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００４４】
＜Ｃ．リモートＩＯ装置２００の構成＞
次に、本実施の形態に係るリモートＩＯ装置２００の構成について説明する。リモートＩＯ装置２００は、図２に示すＰＬＣ１００のハードウェア構成と類似したハードウェア構成を有している。但し、リモートＩＯ装置２００ではユーザプログラムを実行する必要がないので、プロセッサ１２０などの演算処理を行う部分を簡素化することもできる。
【００４５】
リモートＩＯ装置２００は、通信カプラ２０２と、内部バス（図示しないリモートＩＯ装置バス）を介して通信カプラ２０２と接続される１つ以上の機能ユニット２０４とを含む。機能ユニット２０４は、ＣＰＵユニット１０４に接続される機能ユニット１０６と同様であるので、詳細な説明は繰り返さない。
【００４６】
＜Ｄ．サポート装置３００の構成＞
次に、本実施の形態に係るサポート装置３００について説明する。サポート装置３００は、ＰＬＣ１００のＣＰＵユニット１０４の使用を支援するためのものであり、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。
【００４７】
図４は、本実施の形態に係るＰＬＣ１００に接続して用いられるサポート装置３００のハードウェア構成を示す模式図である。サポート装置３００は、典型的には、汎用のコンピュータで構成される。
【００４８】
図４を参照して、サポート装置３００は、ＯＳを含む各種プログラムを実行するＣＰＵ３０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）３０４と、ＣＰＵ３０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ３０６と、ＣＰＵ３０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）３０８とを含む。より具体的には、ハードディスク３０８には、サポート装置３００が提供する機能を実現するためのサポートプログラム３３０が格納されている。
【００４９】
サポート装置３００は、さらに、ユーザからの操作を受け付けるキーボード３１０およびマウス３１２と、情報をユーザに提示するためのモニタ３１４とを含む。さらに、サポート装置３００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インターフェイス（ＩＦ）３１８を含む。
【００５０】
サポート装置３００で実行されるサポートプログラム３３０などは、光学記録媒体３３２に格納されて流通する。光学記録媒体３３２に格納されたプログラムは、光学ディスク読取装置３１６によって読み取られ、ハードディスク３０８などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００５１】
＜Ｅ．ユーザプログラムの生成機能＞
次に、本実施の形態に係るサポート装置３００が提供するユーザプログラムの生成機能について説明する。
【００５２】
（ｅ１：概要）
図５は、制御システム１のシステム構成の変更例を示す図である。図６は、システム構成の変更とユーザプログラムとの関係を示す図である。
【００５３】
まず、制御システム１を構成するリモートＩＯ装置２００に含まれる特定の機能ユニット２０４の位置などが変更された場合を考える。例えば、図５（ａ）に示すように、フィールドバス１１０においてノード１のネットワークアドレス（アドレス情報）が割り当てられた通信カプラ２０２から２番目のスロットに接続されている機能ユニット２０４を対象とする処理がユーザプログラムで定義されていたとする。その後、通信カプラ２０２に新たな機能ユニット２０４が追加されると、対象の機能ユニット２０４は、通信カプラ２０２から３番目のスロットに接続されることになる。
【００５４】
あるいは、図５（ｂ）に示すように、フィールドバス１１０においてノード１のネットワークアドレス（アドレス情報）が割り当てられた通信カプラ２０２から１番目のスロットに接続されている機能ユニット２０４を対象とする処理がユーザプログラムで定義されていたとする。その後、フィールドバス１１０に新たな通信カプラ２０２（リモートＩＯ装置２００）が追加されると、対象の機能ユニット２０４が接続されている通信カプラ２０２のネットワークアドレスは、ノード１からノード２へ変更されることになる。
【００５５】
このような機能ユニット２０４の物理的および／または論理的な位置が変更されると、これらの情報を利用して定義されているユーザプログラム中の命令も更新される必要がある。
【００５６】
本実施の形態に係るサポート装置３００は、このような機能ユニット２０４の物理的および／または論理的な位置の変更があったとしても、ユーザプログラムに対する変更を行わなくてもよい開発環境を提供する。より具体的には、図６に示すように、「ユニットの位置を示す変数」を用いてユーザプログラムを作成できる環境が提供されている。この変数によって参照される機能ユニット２０４の物理的および／または論理的な位置は、ユーザが設定する制御システムの構成に応じて適宜更新されるようになっている。すなわち、サポート装置３００は、「ユニットの位置を示す変数」と、参照先の機能ユニット２０４との対応関係を逐次更新する。
【００５７】
「ＸＸＸ」という識別情報を有する機能ユニット２０４を特定する変数を用いてユーザプログラムを作成しておけば、当該「ＸＸＸ」という識別情報を有する機能ユニット２０４が存在していたスロットに、別の「ＹＹＹ」という識別情報を有する機能ユニット２０４が装着されたとしても、ユーザプログラムに対する変更は不要である。
【００５８】
これによって、対象のユニットを一意に示す変数を用いてプログラミングしておけば、制御システム１の構成が変更されたとしても、すなわち機能ユニット２０４の位置や番号が変更されても、ユーザプログラムを変更する必要がない。
【００５９】
なお、図５には、リモートＩＯ装置２００における機能ユニット２０４の位置変更、および、リモートＩＯ装置２００のネットワークアドレスの変更の例を示すが、これに限られることなく、各種の変更によって動的に対応関係が更新される変数を用いるようにしてもよい。例えば、ＰＬＣ１００に含まれる機能ユニット２０４の位置が変更された場合であっても、上述の変数を用いることで、ユーザプログラムを変更する必要はない。
【００６０】
（ｅ２：処理手順およびユーザインターフェイス）
次に、本実施の形態に係るサポート装置３００が提供するユーザプログラムの生成機能のより詳細な処理手順について説明する。
【００６１】
図７は、本実施の形態に係るサポート装置３００が提供するユーザプログラムの生成機能を説明するための模式図である。図７を参照して、サポート装置３００は、ユーザが任意に設計するユーザプログラム３５４を、ユニット構成情報３５０および変数テーブル３５２とともにビルド（コンパイル）することで、実行可能なユーザプログラム３５６（オブジェクトプログラム）を生成する。
【００６２】
ユニット構成情報３５０は、機能ユニット２０４（または、機能ユニット１０６）についての構成情報を含む。一例として、ユニット構成情報３５０は、各機能ユニットについて、ユニット番号およびデバイス名を示す情報を含む。この例では、ユニット番号が「１０」で、デバイス名が「ａｂｃ」である例を示す。
【００６３】
図８は、本実施の形態に係るサポート装置３００が提供するネットワーク構成を設定するためのユーザインターフェイスの一例を示す図である。図９は、本実施の形態に係るサポート装置３００が提供するユニット構成を設定するためのユーザインターフェイスの一例を示す図である。
【００６４】
図８に示すユーザインターフェイス画面２８０において、マスターユニット（ＰＬＣ１００／ＣＰＵユニット１０４）に接続される（あるいは、接続されることが予定されている）スレーブユニット（リモートＩＯ装置２００／通信カプラ２０２）が一覧表示される（符号２８２）。ユーザは、この一覧表示されたネットワークを構成するユニットの各々を選択し、必要な設定値を入力する。具体的には、ユーザは、少なくとも、デバイス名およびネットワークアドレス（ノードアドレス／アドレス情報）を設定する（符号２８４）。対象のユニットの種別に応じて、ユーザは、これ以外の必要な情報を設定する。図８に示すユーザインターフェイス画面２８０において、機能ユニット２０４が接続される通信カプラ２０２についてのデバイス名およびアドレス情報が設定される。
【００６５】
続いて、図９に示すユーザインターフェイス画面２９０において、選択されているリモートＩＯ装置２００の構成（あるいは、構成することが予定されている）がグラフィカル表示される（符号２９２）。ユーザは、例えば、ドラッグアンドドロップ操作によって、機能ユニットの種類や位置などを任意に設定できる。さらに、ユーザは、このグラフィカル表示されたユニットの各々を選択し（符号２９４）、必要な設定値を入力する。具体的には、ユーザは、少なくとも、選択した機能ユニットのデバイス名およびユニット番号を設定する（符号２９６）。
【００６６】
図８および図９に示すように、サポート装置３００は、対象のリモート装置（リモートＩＯ装置２００）をネットワーク上で特定するためのアドレス情報（ノードアドレス）と、当該対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報（符号２９６内のユニット番号）とを、任意の変数（符号２９６内のデバイス名）に関連付けるための設定を受け付けるユーザインターフェイスを提供する。すなわち、ユーザは、図８および図９に示すようなユーザインターフェイス画面２８０および２９０によって、対象の機能ユニットのユニット番号を対応するデバイス名に対応付けることができる。
【００６７】
このとき、対象のリモート装置（リモートＩＯ装置２００）をネットワーク上で特定するためのアドレス情報（ノードアドレス）を受け付けるユーザインターフェイス画面２８０と、ユーザインターフェイス画面２８０とは異なる、対象のリモート装置内の対象の機能ユニットを特定するためのユニット情報を受け付けるユーザインターフェイス画面２９０とが提供される。
【００６８】
再度図７を参照して、上述のような手順によって、ユニット構成情報３５０が設定される。ユーザプログラム３５４では、ユニット構成情報３５０において設定されたデバイス名を引数とする変数（この例では、「ａｂｃ」）を用いることで、対象の機能ユニットを特定することができる。すなわち、サポート装置３００は、変数を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する。
【００６９】
なお、両者の間で同一のデバイス名を用いることができれば、ユニット構成情報３５０の生成（構成情報の設定）とユーザプログラム３５４の生成との順序は、いずれであってもよい（この点については、後述する）。
【００７０】
本実施の形態に係るサポート装置３００は、ユニット構成情報３５０に基づいて、変数テーブル３５２を動的に生成／更新する。すなわち、ユーザは、ユニット構成情報３５０を作成すれば、ユーザプログラム３５４において利用される変数についての対応関係を定義する変数テーブル３５２が自動的に生成／更新される。より具体的には、ユーザプログラム３５４のビルドが要求されると、サポート装置３００は、ユニット構成情報３５０に基づいて変数テーブル３５２を生成／更新した上で、実行可能なユーザプログラム３５６を生成する。この生成過程において、サポート装置３００は、例えば、デバイス名「ａｂｃ」を引数とする変数「ａｂｃ．ＵｎｉｔＮｏ」については、ユニット構成情報３５０におけるデバイス名「ａｂｃ」に対応するユニット番号「１０」をその初期値とするオブジェクトを生成する。すなわち、コントローラ（サポート装置３００／ＣＰＵユニット１０４）は、変数「ａｂｃ．ＵｎｉｔＮｏ」に値「１０」をセットする。
【００７１】
このように、ユーザプログラムのビルドにおいては、サポート装置３００は、各変数について初期値として何らかの値が記載されているか否かにかかわらず、指定された変数と同じ名前を有するデバイスを検索し、当該探索したデバイスに設定されているノードアドレスなどを当該変数の初期値として内部的にセットする。なお、該当するデバイスが存在しない場合には、ユーザに対して警告を通知するようにしてもよい。
【００７２】
本実施の形態においては、オブジェクト思考のプログラミング環境を提供するために、変数として構造体型を採用する。すなわち、ユーザプログラム３５４に含まれるＦＵＮ命令に対して、集合体ａｂｃを引数とする構造体型変数を指定することで、目的の機能ユニットを特定するユニット番号を入力することができる。
【００７３】
このように、サポート装置３００は、変数を利用して作成されたソースプログラム（ユーザプログラム３５４）から実行可能なユーザプログラム３５６を生成する機能を有する。さらに、サポート装置３００は、生成された実行可能なユーザプログラム３５６をＰＬＣ１００（ＣＰＵユニット１０４）へ送信する機能を有する。
【００７４】
また、一旦設計したシステム構成を変更する場合もある。このような場合において、ユーザは、基本的には、システム構成（ユニット構成情報３５０）を更新するだけでよく、ユーザプログラム３５４を変更する必要はない。
【００７５】
図１０および図１１は、本実施の形態に係るサポート装置３００が提供するネットワーク構成を変更する場合の手順を示す図である。例えば、フィールドバス１１０に新たな通信カプラ２０２（リモートＩＯ装置２００）を追加する場合には、図１０に示すユーザインターフェイス画面２８０において、ユーザは、ドラッグアンドドロップ操作によって、通信カプラ２０２を追加する。そして、必要な設定値が入力される。
【００７６】
また、任意の通信カプラ２０２に新たな機能ユニット２０４を追加する場合には、図１１に示すユーザインターフェイス画面２９０において、ユーザは、ドラッグアンドドロップ操作によって、機能ユニット２０４を追加する。そして、必要な設定値が入力される。
【００７７】
このようなシステム構成が変更されると、図６に示すユニット構成情報３５０が変更されることになる。このような場合には、ユーザプログラム３５４を変更することなく、再度ビルド（コンパイル）すればよい。サポート装置３００は、変更後のユニット構成情報３５０を参照して、変数テーブル３５２を更新し、この更新された変数テーブル３５２に従って、ユーザプログラム３５４から新たなシステム構成に適合した、実行可能なユーザプログラム３５６（オブジェクトプログラム）を生成する。
【００７８】
（ｅ３：変数構造）
上述したような「ユニットの位置を示す変数」については、どのようなデータ構造を採用してもよいが、一例として、構造体型が採用されてもよい。このような構造体型の「ユニットの位置を示す変数」としては、例えば、以下のような変数構造を採用できる。
【００７９】
_sNXUNIT_ID
NodeAdr:UINT;    //通信カプラのノードアドレス
IPAdr:BYTE[5];    //通信カプラのＩＰアドレス
UnitNo:UDINT;    //対象の機能ユニットのユニット番号
Path:BYTE[64];    //対象の機能ユニットの経路情報
PathLength:USINT    //経路情報の有効データ長
本実施の形態においては、フィールドバス１１０として任意の方式を採用できるので、ネットワークの方式に応じて、NodeAdrメンバまたはIPAdrメンバに対して有効な初期値がセットされる。すなわち、機能ユニット２０４が接続される通信カプラ２０２が所属するネットワークアドレス体系によって、NodeAdrメンバとIPAdrメンバとが選択的に使用される。より具体的には、NodeAdrメンバは、ＥｔｈｅｒＣＡＴ（登録商標）などのネットワークにおいて用いられ、ノードアドレスの値がセットされる。一方、IPAdrメンバは、ＴＣＰ／ＩＰなどを利用したネットワークにおいて用いられ、インターネットアドレス（ＩＰアドレス）の値がセットされる。このように、変数に係るアドレス情報は、ネットワーク上のノードアドレスまたはインターネットアドレスを含む。
【００８０】
Pathメンバには、リモートＩＯ装置２００の機能ユニットとして、増設ユニットを接続するための通信ユニットが装着された場合などに、対象の機能ユニットへの経路情報がセットされる。すなわち、ある通信カプラ２０２から１または複数の通信ユニットを経由して目的の機能ユニットに到達できるようなシステムが採用された場合などには、その通信カプラ２０２から目的の機能ユニットまでの経路情報を示す値がセットされる。このように、変数に係るアドレス情報は、対象の機能ユニットまでの経路情報を含む。また、PathLengthメンバには、Pathメンバにセットされる値のうち、有効なデータとみなされる範囲を示す値がセットされる。
【００８１】
（ｅ４：設計手順例）
上述したように、ユーザプログラム３５４では、ユニット構成情報３５０において指定された変数を用いて機能ユニット２０４を特定できる。ユニット構成情報３５０とユーザプログラム３５４との生成順序は、以下のように設計手順に応じて異なる。
【００８２】
（１）システム構成（使用する機能ユニット２０４）が先に決定している場合
この場合には、ユーザは、まずユーザインターフェイス画面２８０および２９０（図８および図９）上でシステム構成を設計する。すなわち、ユニット構成情報３５０が先に生成される。このとき、ユーザは、機能デバイスの各々に対して、ユニークなデバイス名を割り当てる。
【００８３】
続いて、ユーザは、ユーザプログラム３５４を作成する。このとき、先に割り当てたデバイス名を引数とする変数を用いることで、目的の機能デバイスを特定する。すなわち、目的の機能ユニットのデバイス名を用いて「デバイスの位置を示す変数」を定義する。この変数は、グローバル変数およびローカル変数のいずれとしても使用可能である。
【００８４】
最後に、ユーザがビルドを指定すると、サポート装置３００は、ユニット構成情報３５０に基づいて変数テーブル３５２を更新し、ユーザプログラム３５６において指定された各変数の初期値を更新し、実行可能なユーザプログラム３５６（オブジェクトプログラム）を生成する。
【００８５】
（２）目的の制御要求が先に決定している場合
この場合には、ユーザは、まずユーザプログラム３５６を作成する。このユーザプログラム３５６においては、グローバル変数またはローカル変数として、「デバイスの位置を示す変数」を用いる。「デバイスの位置を示す変数」に引数となるデバイス名については、ユニークな任意の値を用いてもよい。
【００８６】
次に、制御システムの設計時（システム構成の設定時）に、使用する機能ユニット２０４の各々に、ユーザプログラム３５６に用いた変数に対応するデバイス名を設定する。
【００８７】
最後に、ユーザがビルドを指定すると、サポート装置３００は、ユニット構成情報３５０に基づいて変数テーブル３５２を作成し、ユーザプログラム３５６において指定された各変数の初期値を更新し、実行可能なユーザプログラム３５６（オブジェクトプログラム）を生成する。
【００８８】
＜Ｆ．変形例＞
上述の実施の形態においては、ユニット構成情報３５０および変数テーブル３５２において定義された設定がビルド（コンパイル）によってリンクされて、ユーザプログラム３５６に反映される処理例について説明した。しかしながら、ユニット構成情報３５０、変数テーブル３５２、およびユーザプログラム３５４の間の変数の関連付けについては、どのようなタイミングおよび手順で実行してもよい。
【００８９】
例えば、ビルド（コンパイル）を実行するアプリケーションとは別のアプリケーションを用いてユニット構成情報３５０を作成するとともに、ユニット構成情報３５０に対する操作に連動して、変数テーブル３５２の内容が生成／更新されるようにしてもよい。そして、ビルドの処理においては、更新後の変数テーブル３５２の内容を用いて、ユーザプログラム３５４から実行可能なユーザプログラム３５６（オブジェクトプログラム）が生成されてもよい。
【００９０】
このような処理を採用した場合には、ユニット構成情報３５０の内容が変更されたり、ＰＬＣ１００における機能ユニット１０６の構成自体が変更されたりしたときに、変数テーブル３５２の内容も更新される。また、ユニット構成情報３５０の生成／更新に伴って、変数テーブル３５２に定義される各変数の初期値についても決定／更新されるようにしてもよい。
【００９１】
＜Ｇ．利点＞
本実施の形態によれば、機能ユニットを特定する変数を用いてユーザプログラムを作成できるプログラミング環境が提供される。そのため、制御システムのシステム構成が予め決定している場合、および、制御システムのシステム構成は決定されていないが、必要な制御処理が予め決定している場合、のいずれの場合にも効率的にユーザプログラムを作成できる。
【００９２】
また、ユーザプログラムを作成後に、制御システムのシステム構成が変更された場合であっても、それに伴ってユーザプログラムのソースコードを変更する必要がない。そのため、システム構成の変更に対して柔軟に対応することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９３】
１  制御システム、１０  検出スイッチ、２０  リレー、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６  機能ユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１４  接続ケーブル、１２０  プロセッサ、１２２  チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  ＵＳＢコネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６，１５６  ＤＭＡ制御回路、１４８  ＰＬＣシステムバスコネクタ、１５０  フィールドバスコントローラ、１５２  バッファメモリ、１５４  フィールドバス制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８２  データ定義情報、１８４  稼動ログ、１８６，３５４，３５６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令プログラム、１９２  アクセス処理プログラム、１９４  入出力処理プログラム、１９６  インターフェイス処理プログラム、１９８  スケジューラ、２００  リモートＩＯ装置、２０２  通信カプラ、２０４  機能ユニット、３００  サポート装置、３０２  ＣＰＵ、３０４  ＲＯＭ、３０６  ＲＡＭ、３０８  ハードディスク、３１０  キーボード、３１２  マウス、３１４  モニタ、３１６  光学ディスク読取装置、３３０  サポートプログラム、３３２  光学記録媒体、３５０  ユニット構成情報、３５２  変数テーブル。
【図１】
2014199485.tif 000003
【図２】
2014199485.tif 000004
【図３】
2014199485.tif 000005
【図４】
2014199485.tif 000006
【図５】
2014199485.tif 000007
【図６】
2014199485.tif 000008
【図７】
2014199485.tif 000009
【図８】
2014199485.tif 000010
【図９】
2014199485.tif 000011
【図１０】
2014199485.tif 000012
【図１１】
2014199485.tif 000013