(57)【要約】  制御プログラム（１０４１）を生成する制御プログラム生成部（１０４）と、入力情報と出力情報との少なくともいずれかを含む入出力情報を表す変数名であって制御プログラム（１０４１）で用いられる変数名を抽出する情報抽出部（１０５）と、変数名に対し、変数名により表される入出力情報が格納されるデバイスを識別するデバイス識別子を割り当てる割り当て部（１０６）と、変数名とデバイス識別子とを用いてデバイスにアクセスするアクセスプログラム（１０８３）を生成するアクセスプログラム生成部（１０８）と、制御プログラム（１０４１）とアクセスプログラム（１０８３）とを合成するプログラム合成部（１１０）とを備える。
2016189689.tif 000002
【特許請求の範囲】
【請求項１】
制御装置により実行される制御プログラムを生成する制御プログラム生成部と、
前記制御装置に入力される入力情報と前記制御装置から出力される出力情報との少なくともいずれかを含む入出力情報を表す変数名であって前記制御プログラムで用いられる変数名を抽出する情報抽出部と、
前記変数名に対し、前記変数名により表される前記入出力情報が格納されるデバイスを識別するデバイス識別子を割り当てる割り当て部と、
前記変数名と前記デバイス識別子とを用いて前記デバイスにアクセスするアクセスプログラムを生成するアクセスプログラム生成部と、
前記制御プログラムと前記アクセスプログラムとを合成するプログラム合成部と
を備えるプログラム生成装置。
【請求項２】
前記情報抽出部は、
前記入力情報を表す前記変数名を入力変数名として抽出すると共に、前記出力情報を表す前記変数名を出力変数名として抽出し、
前記割り当て部は、
前記入力変数名に対し、前記入力変数名により表される前記入力情報の読出し元である入力用デバイスを識別する読出し元デバイス識別子を前記デバイス識別子として割り当てると共に、前記出力変数名に対し、前記出力変数名により表される前記出力情報の書込み先である出力用デバイスを識別する書込み先デバイス識別子を前記デバイス識別子として割り当てる請求項１に記載のプログラム生成装置。
【請求項３】
前記アクセスプログラム生成部は、
前記入力変数名と前記読出し元デバイス識別子とを用いて前記入力情報を読み出す読出しプログラムと、前記出力変数名と前記書込み先デバイス識別子とを用いて前記出力情報を書き込む書込みプログラムとを前記アクセスプログラムとして生成する請求項２に記載のプログラム生成装置。
【請求項４】
前記プログラム合成部は、
前記制御プログラムのヘッダ部に前記読出しプログラムを挿入すると共に、前記制御プログラムのフッダ部に前記書込みプログラムを挿入する請求項３に記載のプログラム生成装置。
【請求項５】
前記プログラム生成装置は、
前記制御装置をモデル化した制御装置モデルを格納するモデル格納部と、
前記モデル格納部に格納された前記制御装置モデルを取得し、取得した前記制御装置モデルに対し前記入力変数名と前記出力変数名とを定義した制御システムモデルを生成する制御システム設計部と
を備え、
前記情報抽出部は、
前記制御システム設計部により生成された前記制御システムモデルから、前記入力変数名と前記出力変数名とを抽出する請求項２から４のいずれか１項に記載のプログラム生成装置。
【請求項６】
前記割り当て部は、
前記変数名に対して、前記デバイスのデバイス名とデバイス番号とを前記デバイス識別子として割り当て、
前記プログラム生成装置は、
前記変数名のうち前記デバイス名が同一の変数名について、前記デバイス番号が番号順になるように並び替え、前記デバイス番号が番号順になるように並び替えた変数名の一覧を生成するデバイス整理部と、
番号順に並び替えられた前記デバイス番号に基づいて、前記変数名の一覧から複数の変数名を抽出するデバイス抽出部と
を備え、
前記アクセスプログラム生成部は、
前記複数の変数名に対応する複数のデバイスに一つの関数でアクセスする前記アクセスプログラムを生成する請求項１から５のいずれか１項に記載のプログラム生成装置。
【請求項７】
前記割り当て部は、
前記変数名に対して、前記デバイスのデバイス名とデバイス番号とを前記デバイス識別子として割り当て、
前記プログラム生成装置は、
前記変数名のうち前記デバイス名が同一の変数名について、前記デバイス番号が番号順になるように並び替え、前記デバイス番号が番号順になるように並び替えた変数名の一覧を生成するデバイス整理部と、
番号順に並び替えられた前記デバイス番号の連続性を判定し、判定結果に基づいて複数のデバイス番号を抽出するデバイス抽出部と、
前記複数のデバイス番号に対応する複数のデバイスに一つの関数でアクセスする場合の現状処理時間を算出し、前記現状処理時間より短い処理時間でアクセスができる新たな複数のデバイス番号を推奨デバイス番号として算出する推奨デバイス算出部と、
前記推奨デバイス番号を表示する推奨デバイス表示部と
を備える請求項１から５のいずれか１項に記載のプログラム生成装置。
【請求項８】
前記プログラム生成装置は、
前記変数名に対し前記デバイス識別子が対応付けられた割り当て情報を格納する割り当て情報格納部を備え、
前記割り当て部は、
前記割り当て情報に基づいて、前記変数名に対し、前記変数名に対応付けられた前記デバイス識別子を割り当てる請求項１から７のいずれか１項に記載のプログラム生成装置。
【請求項９】
制御プログラム生成部が、制御装置により実行される制御プログラムを生成し、
情報抽出部が、前記制御装置に入力される入力情報と前記制御装置から出力される出力情報との少なくともいずれかを含む入出力情報を表す変数名であって前記制御プログラムで用いられる変数名を抽出し、
割り当て部が、前記変数名に対し、前記変数名により表される前記入出力情報が格納されるデバイスを識別するデバイス識別子を割り当て、
アクセスプログラム生成部が、前記変数名と前記デバイス識別子とを用いて前記デバイスにアクセスするアクセスプログラムを生成し、
プログラム合成部が、前記制御プログラムと前記アクセスプログラムとを合成するプログラム生成方法。
【請求項１０】
制御装置により実行される制御プログラムを生成する制御プログラム生成処理と、
前記制御装置に入力される入力情報と前記制御装置から出力される出力情報との少なくともいずれかを含む入出力情報を表す変数名であって前記制御プログラムで用いられる変数名を抽出する情報抽出処理と、
前記変数名に対し、前記変数名により表される前記入出力情報が格納されるデバイスを識別するデバイス識別子を割り当てる割り当て処理と、
前記変数名と前記デバイス識別子とを用いて前記デバイスにアクセスするアクセスプログラムを生成するアクセスプログラム生成処理と、
前記制御プログラムと前記アクセスプログラムとを合成するプログラム合成処理と
をコンピュータに実行させるプログラム生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、プログラム生成方法及びプログラム生成プログラムに関する。特に、制御装置で実行される制御プログラムを生成するプログラム生成装置、プログラム生成方法及びプログラム生成プログラムに関する。
【背景技術】
【０００２】
近年、複数の制御装置が連携して制御を行う制御システムがある。このような制御システムを設計するために制御システム設計ツールが用いられる。制御システム設計ツールでは、制御装置におけるメカニズムあるいは電気的信号の役割などを数式化した制御装置モデルをコンピュータに演算させる制御プログラムを自動生成し、仮想空間上でのシミュレーションを実行する。このようなシミュレーションの実行により、上記制御システム設計ツールでは、実機を用いた検証を行うことなく、事前に制御装置の配置の検証及び制御プログラムの検証を実行することができる。
特許文献１では、制御装置をシミュレーションするシミュレーション装置において、制御装置の動作をシミュレーションするための模擬演算処理が実行される。シミュレーション装置は、模擬演算処理の実行開始時あるいは実行途中に、ＣＰＵボードの共有メモリに格納したデータを任意のタイミングで通信インタフェースを介して他のシミュレーション装置との間で受け渡しを行う。よって、シミュレーション装置間のデータの整合性が確保される。【０００３】
また、制御対象機器を制御するための入出力データ及び制御装置間を受け渡しする通信データをユーザが特定しやすくするために、変数名、すなわちラベルが定義される。そして、変数名を実際の値が格納されているデバイスに変換する名前解決機能が実現されている。この名前解決機能により、変数名を用いて制御プログラムを作成及び編集するラベルプログラミングができるようになる。なお、デバイスとは実際の値が格納されているメモリの実アドレスである。
特許文献２は、制御装置間で通信する際に、通信機器が制御装置間の仲介役となって変数名とデバイスとの対応を取る変数解決方法が開示されている。この特許文献２の方法により、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）のリソースを増やさずに変数名を用いて通信データの受け渡しを実施することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２７２２５号公報
【特許文献２】特開２０１０−９７６２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、Ｃ言語プログラムで実装した制御プログラムを実行するＰＬＣでは、変数名を指定して入出力機器と送受信する入出力データ及び制御装置間で受け渡しする通信データが格納されたデバイスへのアクセスは行えない。このようなＰＬＣでは、デバイスの種別ごとに異なる専用のデバイスアクセス関数を用いて、デバイスにアクセスする必要がある。このため、このようなＰＬＣでは、変数名と実際の値が格納されているデバイスとの対応を取るだけでは入出力機器及び通信機器とのデータの受け渡しを行うことができない。このようなＰＬＣでは、データを読み書きするデバイスに合わせて専用のデバイスアクセス関数を呼出す処理を制御プログラムに記述する必要があり、開発工数が増えるという課題がある。【０００６】
また、制御システム設計ツールにてシミュレーションを実施しながら制御装置の配置あるいは接続順番を組み替えて制御システムの設計を検討する際、制御装置の接続順番の変更に応じて通信データを格納するデバイスを変更する必要がある。よって、デバイスを変更する都度、制御プログラムを書き換える必要があるため、更に開発工数が増えることになる。
また、入出力機器に接続する制御対象機器は、制御装置ごとに接続先のデバイスが異なる。このため、制御システム設計ツールからデバイスアクセス関数の呼出し処理も含めたデバイスアクセス用の制御プログラムを自動生成することはできないという課題がある。【０００７】
本発明は、制御装置において入出力される入出力情報を制御プログラムで扱うためにデバイスにアクセスするアクセスプログラムを自動生成することにより、制御プログラムの開発工数を削減することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るプログラム生成装置は、
制御装置により実行される制御プログラムを生成する制御プログラム生成部と、
前記制御装置に入力される入力情報と前記制御装置から出力される出力情報との少なくともいずれかを含む入出力情報を表す変数名であって前記制御プログラムで用いられる変数名を抽出する情報抽出部と、
前記変数名に対し、前記変数名により表される前記入出力情報が格納されるデバイスを識別するデバイス識別子を割り当てる割り当て部と、
前記変数名と前記デバイス識別子とを用いて前記デバイスにアクセスするアクセスプログラムを生成するアクセスプログラム生成部と、
前記制御プログラムと前記アクセスプログラムとを合成するプログラム合成部とを備える。
【発明の効果】
【０００９】
本発明に係るプログラム生成装置では、制御装置に入力される入力情報と制御装置から出力される出力情報との少なくともいずれかを含む入出力情報を表す変数名であって制御プログラムで用いられる変数名を抽出する情報抽出部と、変数名に対し、変数名により表される入出力情報の読出し元の記憶領域、あるいは入出力情報の書込み先の記憶領域であるデバイスを識別するデバイス識別子を割り当てる割り当て部と、変数名とデバイス識別子とを用いてデバイスにアクセスするアクセスプログラムを生成するアクセスプログラム生成部と、制御プログラムとアクセスプログラムとを合成するプログラム合成部とを備えるので、制御装置において入出力される入出力情報を制御プログラムで扱うためのアクセスプログラムを自動生成することができ、制御プログラムの開発工数を削減することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るプログラム生成装置１００のブロック構成図。
【図２】実施の形態１に係るプログラム生成装置１００におけるプログラム生成方法を示すフロー図。
【図３】実施の形態１に係る制御システム設計部１０３における制御システムモデル１０３１を示す図。
【図４】実施の形態１に係る情報抽出部１０５における入出力情報２０３の抽出を示す図。
【図５】実施の形態１に係る情報抽出部１０５における入出力情報２０３とデバイス２３０との関係を示す図。
【図６】実施の形態１に係るプログラム合成部１１０による制御プログラム１０４１とアクセスプログラム１０８３との合成処理を示す図。
【図７】実施の形態２に係るプログラム生成装置１００ａのブロック構成図。
【図８】実施の形態２係るプログラム生成装置１００ａのプログラム生成処理Ｓ１００ａの一部を示すフロー図。
【図９】実施の形態３に係るプログラム生成装置１００ｂのブロック構成図。
【図１０】実施の形態３に係るプログラム生成装置１００ｂのプログラム生成処理Ｓ１００ｂの一部を示すフロー図。
【図１１】実施の形態４に係るプログラム生成装置１００ｃのブロック構成図。
【図１２】実施の形態４に係るプログラム生成装置１００ｃのプログラム生成処理Ｓ１００ｃの一部を示すフロー図。
【図１３】プログラム生成装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
本実施の形態に係るプログラム生成装置１００は、ネットワークを介して接続された複数の制御装置２００の各々が他の制御装置２００と連携しながら生産設備を制御して製品を製造する制御システム３００の設計に用いられる。プログラム生成装置１００は、制御システム設計装置とも称される。
制御装置２００は、工場内のロボット、サーボアンプ、加工機械などの生産設備を制御するための電源、Ｃ言語プログラムにて実装された制御プログラムを実行するＰＬＣ、入力機器、出力機器、通信機器などが組み合わされて構成される。入力用デバイスは、入力機器に対応するメモリの記憶領域である。出力用デバイスは、出力機器に対応するメモリの記憶領域である。通信用デバイスは、通信機器に対応するメモリの記憶領域である。
プログラム生成装置１００は、ユーザが制御システム３００を設計する際に用いるものであり、制御装置２００のモデルを配置して結線し、その結果に基づいて制御プログラムを生成する。そして、プログラム生成装置１００は、生成した制御プログラムを仮想空間上でシミュレーション実行することにより制御システム３００の動作の検証などを行う。
制御装置２００とプログラム生成装置１００とは、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブルあるいはＥｔｈｅｒｎｅｔ（登録商標）などのネットワークで接続されている。
【００１２】
プログラム生成装置１００の概要について説明する。
プログラム生成装置１００は、制御装置２００の制御内容をモデル化した制御装置モデルを配置し、配置した制御装置モデル間の入出力情報を定義して制御システムモデルを設計する。制御装置モデル間の入出力情報は、制御プログラムで用いられる変数名により定義される。そして、プログラム生成装置１００は、その制御システムモデルの設計情報から制御装置モデルの入出力情報を表す変数名を抽出し、抽出した変数名に対しデバイスを割り付ける。変数名が入力情報を表す場合、変数名に対しその変数名により表される入力情報を読み出す読出し元のデバイスを割り付ける。変数名が出力情報を表す場合、変数名に対しその変数名により表される出力情報を書き込む書込み先のデバイスを割り付ける。そして、プログラム生成装置１００は、変数名とデバイスとの割り付け情報に基づいて入出力用のデバイスアクセスプログラムと通信用のデバイスアクセスプログラムとを自動生成する。そして、プログラム生成装置１００は、自動生成した入出力用のデバイスアクセスプログラムと通信用のデバイスアクセスプログラムとを制御プログラムに挿入する。
【００１３】
図１を用いて、本実施の形態に係るプログラム生成装置１００のブロック構成について説明する。
プログラム生成装置１００は、入力受付部１０１、モデル格納部１０２、制御システム設計部１０３、制御プログラム生成部１０４、情報抽出部１０５、割り当て部１０６、管理ファイル生成部１０７、アクセスプログラム生成部１０８、プログラム合成部１１０、プログラム記憶部１１１、通信処理部１１２を備える。アクセスプログラム生成部１０８は、入出力用アクセスプログラム生成部１０８１、通信用アクセスプログラム生成部１０８２を備える。
【００１４】
入力受付部１０１は、ユーザが入力装置を用いてプログラム生成装置１００に対して入力する入力指示を受け付ける。入力装置は、マウス、キーボードなどである。入力指示は、制御装置２００をモデル化した制御装置モデル２０１を配置する操作指示、制御装置モデル２０１間を結線する操作指示、制御プログラム１０４１を制御装置２００へ書込む書込み指示などである。
【００１５】
モデル格納部１０２は、制御装置２００の機能をモデル化した制御装置モデル２０１を格納する。モデル格納部１０２は、制御装置２００の制御内容である機能を定義したデータを制御装置モデル２０１として格納する。
【００１６】
制御システム設計部１０３は、ユーザからの入力指示に基づいて、制御システム３００を設計し、制御システム３００の設計内容をモデル化した制御システムモデル１０３１を生成する。制御システムモデル１０３１は、制御システム３００の設計情報である。ユーザは、入力受付部１０１と制御システム設計部１０３とを用いて、制御装置モデル２０１を選択し、選択した制御装置モデル２０１を配置し、配置された制御装置モデル２０１同士を結線し、制御システム３００の設計を実施する。
【００１７】
制御プログラム生成部１０４は、制御装置２００により実行される制御プログラム１０４１を生成する。制御プログラム生成部１０４は、制御システム設計部１０３において生成された制御システムモデル１０３１に基づいて、制御装置２００単位で制御装置２００の動作を制御するための制御プログラム１０４１を生成する。
【００１８】
情報抽出部１０５は、制御装置２００に入力される入力情報２０３１と制御装置２００から出力される出力情報２０３２との少なくともいずれかを含む入出力情報２０３を表す変数名２０２であって制御プログラム１０４１で用いられる変数名２０２を抽出する。
情報抽出部１０５は、制御システム設計部１０３に配置した制御装置モデル２０１の配置情報と制御装置モデル２０１間の結線情報とに基づいて、制御装置２００の入出力情報２０３を表す変数名２０２を抽出する。すなわち、情報抽出部１０５は、制御システム設計部１０３により生成された制御システムモデル１０３１に基づいて、制御装置２００の入出力情報２０３を表す変数名２０２を抽出する。
【００１９】
図３及び図４に示すように、制御装置２００の入出力情報２０３には、制御装置２００に入力される入力情報２０３１と、制御装置２００から出力される出力情報２０３２とが含まれる。また、入力情報２０３１の変数名２０２を入力変数名２０２１とし、出力情報２０３２の変数名２０２を出力変数名２０２２とする。
また、制御装置２００の入出力情報２０３には、制御装置２００単体で入力あるいは出力される入出力データ２０３３と、制御装置２００間で受け渡しする通信データ２０３４とが含まれる。
情報抽出部１０５は、制御システムモデル１０３１から、制御プログラム生成部１０４で生成する制御プログラム１０４１で使われている変数名２０２を抽出する。
【００２０】
割り当て部１０６は、変数名２０２に対し、変数名２０２により表される入出力情報２０３を格納するメモリの記憶領域であるデバイス２３０を識別するデバイス識別子２３０１を割り当てる。デバイス２３０及びデバイス識別子２３０１については後述する。
割り当て部１０６は、入力受付部１０１を用いてユーザから入力された入力指示に基づいて、入出力情報２０３を表す変数名２０２に対してデバイス識別子２３０１を割り当てる。例えば、割り当て部１０６が情報抽出部１０５で抽出した入出力情報２０３の変数名２０２を表示装置に表示し、ユーザが表示された変数名２０２に対し、割り当てるデバイス名とデバイス番号とをデバイス識別子２３０１として定義する。
【００２１】
管理ファイル生成部１０７は、入出力情報２０３を表す変数名２０２とデバイス識別子２３０１とが対応付けられた情報を管理ファイル１０７１として生成する。管理ファイル生成部１０７は、管理ファイル１０７１を例えばＣＳＶ形式で生成する。
【００２２】
アクセスプログラム生成部１０８は、変数名２０２とデバイス識別子２３０１とを用いて、デバイス２３０にアクセスするアクセスプログラム１０８３を生成する。アクセスプログラム生成部１０８は、管理ファイル１０７１に設定されている変数名２０２及びデバイス識別子２３０１と、アクセスするデバイス２３０専用のデバイスアクセス関数とを用いてアクセスプログラム１０８３を生成する。
【００２３】
入出力用アクセスプログラム生成部１０８１は、入出力情報２０３のうち、制御装置２００単体で入力あるいは出力される入出力データ２０３３についてのアクセスプログラム１０８３を入出力用アクセスプログラム１０８３３として生成する。
入出力用アクセスプログラム生成部１０８１は、管理ファイル１０７１に格納されている入出力情報２０３のうち入出力データ２０３３を表す変数名２０２と、その変数名２０２に割り当てられたデバイス名及びデバイス番号に基づき、入出力用アクセスプログラム１０８３３を生成する。入出力用アクセスプログラム生成部１０８１は、デバイス２３０のうち入出力データ２０３３に対応する入出力用デバイスにアクセスする。入出力用アクセスプログラム生成部１０８１は、入出力用アクセスプログラム１０８３３の生成に、専用の関数を用いる。専用の関数とは、入出力データ２０３３に対応する入力用デバイスから入出力データ２０３３を読出したり、入出力データ２０３３に対応する出力用デバイスに入出力データ２０３３を書き込んだりするための該当のデバイス専用の関数である。入出力用アクセスプログラム１０８３３の処理は、該当の入出力用デバイス専用の関数を用いて、入出力情報２０３の変数名２０２ごとに割り当てられたデバイス識別子の入出力用デバイスにアクセスする処理である。
【００２４】
通信用アクセスプログラム生成部１０８２は、入出力情報２０３のうち、制御装置２００間で受け渡しする通信データ２０３４についてのアクセスプログラム１０８３を通信用アクセスプログラム１０８３４として生成する。
通信用アクセスプログラム生成部１０８２は、管理ファイル１０７１に格納されている入出力情報２０３のうち通信データ２０３４を表す変数名２０２と、その変数名２０２に割り当てられたデバイス名及びデバイス番号に基づき、通信用アクセスプログラム１０８３４を生成する。通信用アクセスプログラム生成部１０８２は、通信用アクセスプログラム１０８３４の生成に、専用の関数を用いる。専用の関数とは、通信データ２０３４に対応する通信用デバイスから通信データ２０３４を読出したり、通信データ２０３４に対応する通信用デバイスに通信データ２０３４を書き込んだりするための該当デバイス専用の関数である。通信用アクセスプログラム１０８３４の処理は、該当デバイス専用の関数を用いて、入出力情報２０３の変数名２０２ごとに割り当てられたデバイス識別子の通信用デバイスにアクセスする処理である。
【００２５】
プログラム合成部１１０は、制御プログラム１０４１とアクセスプログラム１０８３とを合成する。
プログラム合成部１１０は、制御プログラム生成部１０４により自動生成された制御プログラム１０４１に、アクセスプログラム生成部１０８で自動生成されたアクセスプログラム１０８３を挿入する。上述したように、アクセスプログラム１０８３には、入出力用アクセスプログラム１０８３３と通信用アクセスプログラム１０８３４とが含まれる。
【００２６】
プログラム合成部１１０は、アクセスプログラム１０８３から制御装置２００への入力に該当する部分を抽出し、制御プログラム１０４１のヘッダ部分に挿入する。また、プログラム合成部１１０は、アクセスプログラム１０８３から制御装置２００からの出力に該当する部分を抽出し、制御プログラム１０４１のフッタ部分に挿入する。
【００２７】
プログラム記憶部１１１は、プログラム合成部１１０によりアクセスプログラム１０８３が挿入された制御プログラム１０４１を格納する。
通信処理部１１２は、ユーザからの入力受付部１０１を用いた入力指示を受けて、制御プログラム記憶部１１１に格納した制御プログラム１０４１を制御装置２００に書き込む。通信処理部１１２は、ＵＳＢケーブル、Ｅｔｈｅｒｎｅｔ（登録商標）などのネットワークを介して、制御プログラム１０４１を制御装置２００に書込む処理を行う。
【００２８】
＊＊＊動作の説明＊＊＊
次に、図２から図６を用いて、本実施の形態に係るプログラム生成装置１００におけるプログラム生成方法、プログラム生成処理Ｓ１００について説明する。
図２は、本実施の形態に係るプログラム生成装置１００におけるプログラム生成方法を示すフロー図である。
図３は、本実施の形態に係る制御システム設計部１０３における制御システムモデル１０３１を示す図である。
図４は、本実施の形態に係る情報抽出部１０５における入出力情報２０３の抽出を示す図である。
図５は、本実施の形態に係る情報抽出部１０５における入出力情報２０３とデバイス２３０との関係を示す図である。
図６は、本実施の形態に係るプログラム合成部１１０における制御プログラム１０４１とアクセスプログラム１０８３との合成を示す図である。
【００２９】
図３では、プログラム生成装置１００を用いて、３つの制御装置２００ａ，２００ｂ，２００ｃが制御系ネットワーク５００で接続されている制御システム３００の設計を実施した場合を示している。図５に示すように、制御装置２００ａは、電源２１０と、ＰＬＣ２２０と、入力用デバイスＸ、出力用デバイスＹ、通信用デバイスＬなどの各種のデバイス２３０とを備える。デバイス２３０は、センサ、ロボットなどの制御対象機器２４０に接続されている。制御装置２００ａは、ＰＬＣ２２０上で実行する制御プログラムに基づいて制御対象機器２４０を制御する。
【００３０】
図４では、情報抽出部１０５が、制御システムモデル１０３１から制御装置モデル２０１ごとに入出力情報２０３の変数名２０２を抽出した場合を示している。上述したように、制御システムモデル１０３１とは、制御システム３００の設計情報であり、制御装置モデル２０１の情報、制御装置モデル２０１間の結線情報などが含まれる。
【００３１】
図５では、制御装置２００ａがセンサからの信号を入力機器の入力用デバイス（ここでは、入力用デバイスＸとする）が受信し、ＰＬＣ２２０がセンサからの入力信号に基づいて制御プログラム内で演算処理を実行する。また、ＰＬＣ２２０が演算処理の結果を出力機器の出力用デバイス（ここでは、出力用デバイスＹとする）にセットすることで出力機器の先に接続されている制御対象機器２４０（例えばサーボアンプやロボットなど）の動作を制御している。
【００３２】
また、制御装置２００ａと他の制御装置２００ｂ，２００ｃと間で制御系ネットワーク５００を介してデータの受け渡しを行う場合がある。例えば、制御装置２００ａにおける加工が完了したことを次工程の制御装置２００ｂに通知する場合などである。通信機器の通信用デバイス（ここでは、通信用デバイスＬとする）において、予め設定された制御装置２００ａ用の領域にデータを読み書きすることで、各制御装置２００の通信用デバイスのデータが予め指定された周期で更新される（リフレッシュされる）。
【００３３】
また、入力用デバイスＸ、出力用デバイスＹ、通信用デバイスＬにアクセスするためには、ＰＬＣ２２０の製造メーカより提供されている専用の関数が必要である。プログラム生成装置１００は、入出力情報２０３の変数名２０２に割り当てられたデバイス名にアクセスするための関数を選択し、選択した関数を使用して各デバイスにアクセスする入出力用アクセスプログラム１０８３３と通信用アクセスプログラム１０８３４とを生成する。図６では、プログラム生成装置１００が入出力用アクセスプログラム１０８３３及び通信用アクセスプログラム１０８３４を制御プログラム１０４１に挿入する例を示している。
【００３４】
＜制御システム設計処理Ｓ１０１＞
Ｓ１０１において、制御システム設計部１０３は、入力受付部１０１により受け付けられた入力指示に基づいて、制御システム３００の設計情報である制御システムモデル１０３１を生成する。制御システム設計部１０３は、モデル格納部１０２に格納された制御装置モデル２０１を取得し、取得した制御装置モデル２０１に対し入力変数名２０２１と出力変数名２０２２とを定義した制御システムモデル１０３１を生成する。
【００３５】
図３を用いて、制御システム設計処理Ｓ１０１について具体例を用いて説明する。
まず、ユーザが入力受付部１０１を用いて、モデル格納部１０２に格納されている制御装置モデル２０１群から制御装置２００ａの制御装置モデル２０１ａ、制御装置２００ｂの制御装置モデル２０１ｂ、制御装置２００ｃの制御装置モデル２０１ｃを選択する。そして、ユーザは選択した制御装置モデル２０１ａ，２０１ｂ，２０１ｃを制御システム設計部１０３に配置する。制御システム設計部１０３に配置するとは、例えば、制御システム設計部１０３により表示画面に表示された制御システム設計画面を用いてユーザが制御装置モデル２０１を配置することである。
【００３６】
次に、配置された制御装置モデル２０１の各々について、入出力情報２０３に対応する変数名２０２を定義する。変数名２０２には、入力変数名２０２１と出力変数名２０２２とが含まれる。
図３の制御装置モデル２０１ａでは、入力情報２０３１としてセンサからの入力信号が入力される。図３では、センサからの入力信号は入力変数名２０２１がセンサ入力であることを示している。また、制御装置モデル２０１ａからは、出力変数名２０２２がそれぞれ工程完了、搬送開始、移動開始である３つの出力情報２０３２が出力される。このうち、出力変数名２０２２が搬送開始、移動開始の２つの出力情報２０３２は、入出力データ２０３３であり、出力変数名２０２２が工程完了の出力情報２０３２は、制御装置２００ｂに送信される通信データ２０３４である。
このように、制御装置２００間でデータの受け渡しが必要な場合は、データごとに制御装置モデル２０１間を結線する。
【００３７】
図３では、制御装置モデル２０１ａの工程完了という出力と制御装置モデル２０１ｂの工程開始という入力間を結線している。また、制御装置モデル２０１ｂの工程完了という出力と制御装置モデル２０１ｃの工程開始という入力間を結線している。
なお、本実施の形態では、制御装置モデル２０１間を１つデータのみ受け渡しすることにしたが、複数のデータをモデル間で受け渡す場合は、そのデータの数だけモデルの入出力を結線する。また、制御装置モデル２０１ａと制御装置モデル２０１ｃの間でデータの受け渡しがある場合は制御装置モデル２０１ａと制御装置モデル２０１ｃの入出力を結線してもよく、また制御装置モデル２０１ｂから制御装置モデル２０１ａに向かって結線してもよい。
【００３８】
＜制御プログラム生成処理Ｓ１０２＞
制御プログラム生成部１０４は、制御装置２００により実行される制御プログラム１０４１を生成する制御プログラム生成処理Ｓ１０２を実行する。
制御プログラム生成部１０４は、制御システム設計部１０３により設計された制御システムモデル１０３１に基づいて、制御プログラム１０４１を自動生成する。
【００３９】
例えば、制御システム３００の設計が完了したらユーザが入力受付部１０１を用いて制御プログラム１０４１の生成指示を出す。制御プログラム生成部１０４は、生成指示を受領すると制御システムモデル１０３１に基づいて制御プログラム１０４１を自動生成する。ここで生成される制御プログラム１０４１は、制御装置２００のＰＬＣ２２０単位で生成される。図３の例では制御装置２００ａ、制御装置２００ｂ、制御装置２００ｃの各制御装置２００向けに制御プログラム１０４１が別々に生成される。
【００４０】
＜情報抽出処理Ｓ１０３＞
情報抽出部１０５は、制御装置２００に入力あるいは出力される入出力情報２０３を表す変数名２０２であって制御プログラム１０４１で用いられる変数名２０２を抽出する情報抽出処理Ｓ１０３を実行する。
情報抽出部１０５は、制御システムモデル１０３１から、制御装置モデル２０１における入出力情報２０３を表す変数名２０２を抽出する。情報抽出部１０５は、制御装置２００に入力される入力情報２０３１を表す入力変数名２０２１であって制御プログラム１０４１で用いられる入力変数名２０２１を抽出する。また、情報抽出部１０５は、制御装置２００から出力される出力情報２０３２を表す出力変数名２０２２であって制御プログラム１０４１で用いられる出力変数名２０２２を抽出する。
【００４１】
情報抽出部１０５は、図４の制御システムモデル１０３１から、制御装置２００ａの入出力情報２０３を表す変数名２０２として、センサ入力、工程完了、搬送開始、移動開始を抽出する。センサ入力は入力変数名２０２１であり、工程完了、搬送開始、移動開始は出力変数名２０２２である。また、センサ入力、搬送開始、移動開始が表す入出力情報２０３は入出力データ２０３３であり、工程完了が表す入出力情報２０３は通信データ２０３４である。
変数名２０２には入力情報２０３１であるか出力情報２０３２であるかを示す入出力種別が設定される。図４では、入力変数名２０２１であるセンサ入力には入出力種別として入力が設定される。また、出力変数名２０２２である工程完了、搬送開始、移動開始には入出力種別として出力が設定される。
【００４２】
＜割り当て処理Ｓ１０４＞
割り当て部１０６は、変数名２０２に対し、変数名２０２により表される入出力情報２０３が格納されるデバイス２３０を識別するデバイス識別子２３０１を割り当てる割り当て処理Ｓ１０４を実行する。
割り当て部１０６は、入力変数名２０２１に対し、入力変数名２０２１により表される入力情報２０３１の読出し元である読出し元デバイスを識別する読出し元デバイス識別子２３０１１をデバイス識別子２３０１として割り当てる。また、割り当て部１０６は、出力変数名２０２２に対し、出力変数名２０２２により表される出力情報２０３２の書込み先である書込み先デバイスを識別する書込み先デバイス識別子２３０１２をデバイス識別子２３０１として割り当てる。
【００４３】
図４及び図５に示すように、本実施の形態では、センサからのセンサ入力は入力機器である入力用デバイスＸのデバイス番号１から読み込まれる。また、制御装置２００ａから出力される搬送開始の信号は出力機器である出力用デバイスＹのデバイス番号１に書き込まれ、制御装置２００ａから出力される移動開始の信号は出力機器である出力用デバイスＹのデバイス番号４に書き込まれる。また、制御装置２００ａから制御装置２００ｂに送信される工程完了の信号は通信機器である通信用デバイスＬのデバイス番号１に書き込まれる。
例えば、割り当て部１０６は、情報抽出部１０５で抽出した入出力情報２０３を表す変数名２０２を表示画面に表示する。ユーザは入力受付部１０１を用いて、表示画面に表示された変数名２０２の各々に対してデバイス名２３０２及びデバイス番号２３０３をデバイス識別子２３０１として割り当てる。
【００４４】
具体的には、変数名２０２のセンサ入力には、デバイス識別子２３０１としてデバイス名Ｘ及びデバイス番号１が割り当てられる。変数名２０２の工程完了には、デバイス識別子２３０１としてデバイス名Ｌ及びデバイス番号１が割り当てられる。変数名２０２の搬送開始には、デバイス識別子２３０１としてデバイス名Ｙ及びデバイス番号１が割り当てられる。変数名２０２の移動開始には、デバイス識別子２３０１としてデバイス名Ｙ及びデバイス番号４が割り当てられる。
【００４５】
＜管理ファイル生成処理Ｓ１０５＞
管理ファイル生成部１０７は、割り当て部１０６により変数名２０２に割り当てられたデバイス名２３０２及びデバイス番号２３０３の情報を格納するための管理ファイル１０７１を作成し、作成した管理ファイル１０７１を管理する。ここで生成する管理ファイル１０７１はＣＳＶ形式ファイルとして作成し、入出力情報２０３を表す変数名２０２、その変数名２０２に割り当てられたデバイス名２３０２及びデバイス番号２３０３をカンマ区切りで格納する。ただし、この管理ファイル１０７１はＣＳＶ形式ファイルとは別の形式のファイルとしてもよいこととする。また、この管理ファイル１０７１は割り当て部１０６で開いて格納されている情報を表示して、ユーザが確認することができ、入力受付部１０１を用いて編集することもできる。
【００４６】
＜アクセスプログラム生成処理Ｓ１０６＞
アクセスプログラム生成部１０８は、変数名２０２とデバイス識別子２３０１とを用いてデバイス２３０にアクセスするアクセスプログラム１０８３を生成するアクセスプログラム生成処理Ｓ１０６を実行する。
アクセスプログラム生成部１０８は、入力変数名２０２１と読出し元デバイス識別子２３０１１とを用いて入力情報２０３１を読み出す読出しプログラム１０８３１をアクセスプログラム１０８３として生成する。読出し元デバイス識別子２３０１１は入力情報２０３１を読み出す読出し元のデバイスである。
また、アクセスプログラム生成部１０８は、出力変数名２０２２と書込み先デバイス識別子２３０１２とを用いて出力情報２０３２を書き込む書込みプログラム１０８３２をアクセスプログラム１０８３として生成する。書込み先デバイス識別子２３０１２は出力情報２０３２を書き込む書込み先のデバイスである。
【００４７】
アクセスプログラム生成処理Ｓ１０６は、入出力用アクセスプログラム生成処理Ｓ１０６１と、通信用アクセスプログラム生成処理Ｓ１０６２とを備える。
入出力用アクセスプログラム生成処理Ｓ１０６１は、入出力データ２０３３に関する入出力用アクセスプログラムを生成する。通信用アクセスプログラム生成処理Ｓ１０６２は、通信データ２０３４に関する通信用アクセスプログラムを生成する。
【００４８】
＜入出力用アクセスプログラム生成処理Ｓ１０６１＞
入出力用アクセスプログラム生成部１０８１は、管理ファイル生成部１０７で生成した管理ファイル１０７１から入力用デバイスＸ及び出力用デバイスＹが割り当てられた入出力データ２０３３の変数名２０２を抽出する。入出力用アクセスプログラム生成部１０８１は、抽出した変数名２０２から入力用デバイスＸが割り当てられている入出力データ２０３３と出力用デバイスＹが割り当てられている入出力データ２０３３とに分類する。各デバイスにアクセスする際に利用する関数はデバイスの種別によって異なるため、入力用デバイスＸのデバイス名が割り当てられた入出力データ２０３３の変数名２０２については入力用デバイスＸにアクセスするための関数（図６の例ではｇｅｔＸ関数）を用いて入出力用デバイスアクセスプログラムを生成する。同様に出力用デバイスＹのデバイス名が割り当てられた入出力データ２０３３の変数名２０２については出力用デバイスＹにアクセスするための関数（図６の例ではｓｅｔＹ関数）を用いて入出力用デバイスアクセスプログラムを生成する。
【００４９】
＜通信用アクセスプログラム生成処理Ｓ１０６２＞
通信用アクセスプログラム生成部１０８２は、管理ファイル生成部１０７で生成した管理ファイル１０７１から通信用デバイスＬを割り当てられた通信データ２０３４の変数名２０２を抽出する。通信用アクセスプログラム生成部１０８２は、抽出した変数名２０２を入出力種別が入力のものと出力のものとに分類する。入出力種別が入力の場合は、その変数名２０２が表す通信データ２０３４は、他の制御装置から受け取ったデータを通信用デバイスＬから読み出す関数を利用することを意味する。また、入出力種別が出力の場合は、その変数名２０２が表す通信データ２０３４は、他の制御装置へ送信するデータを通信用デバイスＬに書込む関数を利用することを意味する。通信用デバイスＬにアクセスするための関数を用いて通信用アクセスプログラムを生成する。図６に示す例では通信データ２０３４の変数名２０２である工程完了の入出力種別が出力であるため通信用デバイスＬにデータを書き込むためのＷｒｉｔｅＤａｔａ関数を利用する。例えば、入出力種別が入力の場合は通信用デバイスＬからデータを読み出すためのＲｅａｄＤａｔａ関数を利用する。
【００５０】
＜プログラム合成処理Ｓ１０７＞
プログラム合成部１１０は、制御プログラム１０４１とアクセスプログラム１０８３とを合成するプログラム合成処理Ｓ１０７を実行する。
図６に示すようにプログラム合成部１１０は、制御プログラム１０４１のヘッダ部に読出しプログラム１０８３１を挿入すると共に、制御プログラム１０４１のフッダ部に書込みプログラム１０８３２を挿入する。
【００５１】
プログラム合成部１１０は、入出力用アクセスプログラム１０８３３と通信用アクセスプログラム１０８３４とを、各制御装置のＰＬＣ（コントローラ）上で実行する制御プログラム１０４１のヘッダ部とフッタ部とに挿入する。
プログラム合成部１１０は、入出力種別が入力である変数名２０２に対応する入出力用アクセスプログラム１０８３３と通信用アクセスプログラム１０８３４は制御プログラム１０４１のヘッダ部に挿入する。また、プログラム合成部１１０は、入出力種別が出力である変数名２０２に対応する入出力用アクセスプログラム１０８３３と通信用アクセスプログラム１０８３４は制御プログラム１０４１のフッタ部に挿入する。
【００５２】
図６に示すように、制御プログラム１０４１のヘッダ部には、「センサ入力＝ｇｅｔＸ（１）」という読出しプログラム１０８３１が挿入されている。この読出しプログラム１０８３１は、センサ入力に割り当てられている入力用デバイスＸのデバイス番号１の記憶領域からｇｅｔＸ関数を利用して値を取得し、取得した値をセンサ入力の変数に代入する入出力用アクセスプログラム１０８３３である。
また、制御プログラム１０４１のフッタ部には、「ｓｅｔＹ（１，搬送開始）」，「ｓｅｔＹ（４，移動開始）」，「ＷｒｉｔｅＤａｔａ（工程完了）」の３つの書込みプログラム１０８３２が挿入されている。「ｓｅｔＹ（１，搬送開始）」の書込みプログラム１０８３２は、搬送開始に割り当てられている出力用デバイスＹのデバイス番号１の記憶領域にｓｅｔＹ関数を利用して値を書込む入出力用アクセスプログラム１０８３３である。「ｓｅｔＹ（４，移動開始）」の書込みプログラム１０８３２は、移動開始に割り当てられている出力用デバイスＹのデバイス番号４の記憶領域にｓｅｔＹ関数を利用して値を書込む入出力用アクセスプログラム１０８３３である。「ＷｒｉｔｅＤａｔａ（工程完了）」の書込みプログラム１０８３２は、工程完了に割り当てられている通信用デバイスＬのデバイス番号１の記憶領域（制御装置２００ａ用のエリア）にＷｒｉｔｅＤａｔａ関数を利用して値を書込む通信用アクセスプログラム１０８３４である。
【００５３】
＜制御プログラム記憶処理Ｓ１０８＞
プログラム記憶部１１１は、プログラム合成部１１０によりアクセスプログラム１０８３が合成された制御プログラム１０４１を記憶する。
【００５４】
＜通信処理Ｓ１０９＞
通信処理部１１２は、ユーザからの入力受付部１０１を用いた入力指示を受けて、プログラム記憶部１１１に格納した制御プログラム１０４１を制御装置２００のＰＬＣ２２０に書き込む。通信処理部１１２は、ＵＳＢケーブル、Ｅｔｈｅｒｎｅｔ（登録商標）などのネットワークを介して、制御プログラム１０４１を制御装置２００のＰＬＣ２２０に書込む。
なお、書き込む制御プログラム１０４１については、コンパイル後の実行コードとしてから書き込むこととする。しかし、そのコンパイルはプログラム生成装置１００内で実施しても、他のアプリケーションを利用してコンパイルを実施してもよいこととする。
また、プログラム生成装置１００は、生成した制御プログラム１０４１を用いて仮想空間上においてシミュレーションを実施し、制御プログラム１０４１をデバッグし、動作確認が完了してから制御装置２００内のＰＬＣ２２０に制御プログラム１０４１を書き込むこともある。
【００５５】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係るプログラム生成装置では、制御システムモデルから入出力情報の変数名を抽出し、抽出した変数名に対し入出力情報が記憶される記憶領域であるデバイスを識別するデバイス識別子を割り当てる。また、プログラム生成装置では、割り当てられたデバイス識別子（デバイス名とデバイス番号）に基づいて入出力用デバイスあるいは通信用デバイスにアクセスするための専用の関数を用いたアクセスプログラムを生成する。そして、プログラム生成装置では、生成したアクセスプログラムをヘッダ部とフッタ部とに挿入した制御プログラムを自動生成する。よって、本実施の形態に係るプログラム生成装置によれば、制御プログラムの開発期間の短縮及びコスト削減を図ることができる。
【００５６】
また、本実施の形態に係るプログラム生成装置では、制御装置ごとに、入出力情報を表す変数名に対し、入出力情報が記憶される記憶領域であるデバイスを識別するデバイス識別子を割り当てた管理ファイルを生成する。よって、本実施の形態に係るプログラム生成装置によれば、制御装置ごとに接続先のデバイス（メモリの実アドレス）が異なっていても、デバイスアクセス関数の呼出し処理も含めたデバイスアクセス用制御プログラムを自動生成することができる。
【００５７】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
【００５８】
＊＊＊構成の説明＊＊＊
実施の形態１に係るプログラム生成装置１００では、アクセスプログラム１０８３は、入出力情報２０３を表す変数名２０２ごとに専用の関数を利用してデータの読出しあるいは書込みを行う処理であった。しかし、本実施の形態では、入出力情報２０３を表す変数名２０２のうち同じデバイス名が割り当てられた変数名２０２について、デバイス番号の連続性をチェックし、連続性のある入出力情報２０３をまとめて読出しあるいは書込みを行うことができるプログラム生成装置１００ａについて説明する。
【００５９】
図７は、本実施の形態に係るプログラム生成装置１００ａのブロック構成を示す図である。
本実施の形態に係るプログラム生成装置１００ａは、図１のプログラム生成装置１００のブロック構成に加えて、デバイス整理部１１３とデバイス抽出部１１４とを備える。
【００６０】
デバイス整理部１１３は、デバイス名２３０２が同一の変数名２０２について、デバイス番号２３０３が番号順になるように並び替える。デバイス整理部１１３は、デバイス番号２３０３が番号順になるように並び替えた変数名の一覧２０２０を生成する。デバイス整理部１１３は、管理ファイル１０７１を用いて、変数名２０２を入出力種別の入力と出力とに分類し、同じデバイス名２３０２の変数名２０２についてデバイス番号２３０３でソートを行う。
【００６１】
デバイス抽出部１１４は、番号順に並び替えられたデバイス番号２３０３に基づいて、変数名の一覧２０２０から複数の変数名２０２を抽出する。
デバイス抽出部１１４は、デバイス整理部１１３によりデバイス番号順に並び替えられた変数名の一覧２０２０について、デバイス番号２３０３の連続性をチェックする。デバイス抽出部１１４は、デバイス番号２３０３の連続性のチェック結果に基づいて、変数名の一覧２０２０から複数の変数名２０２を抽出する。デバイス抽出部１１４は、一定の範囲内にアクセス対象のデバイス番号２３０３がある場合は、それらをまとめて一つの関数を用いてデータの読出しあるいは書込みを行うことをアクセスプログラム生成部１０８に指示する。
【００６２】
アクセスプログラム生成部１０８は、複数の変数名２０２に対応する複数のデバイス２３０に一括でアクセスするアクセスプログラム１０８３を生成する。複数の変数名２０２に対応する複数のデバイス２３０とは、複数の変数名２０２が表す複数の入出力情報２０３をそれぞれ記憶する複数のデバイス２３０である。
【００６３】
＊＊＊動作の説明＊＊＊
図８は、本実施の形態に係るプログラム生成装置１００ａのプログラム生成処理Ｓ１００ａの一部を示すフロー図である。
【００６４】
本実施の形態に係るプログラム生成処理Ｓ１００ａでは、実施の形態１で説明したプログラム生成処理Ｓ１００のＳ１０１からＳ１０５までの処理、及びＳ１０７からＳ１０９までの処理と同様の処理を行うため、ここでは説明を省略する。
【００６５】
Ｓ１０５において管理ファイル生成部１０７が管理ファイル１０７１を生成した後、Ｓ１０５１に進む。
Ｓ１０５１において、デバイス整理部１１３は、デバイス名が同一の変数名２０２を、そのデバイス番号が番号順になるように並び替え、デバイス番号が番号順になるように並び替えた変数名の一覧２０２０を生成する。まず、デバイス整理部１１３は、管理ファイル１０７１に設定された変数名２０２を、入出力種別の入力と出力に分類する。次に、デバイス整理部１１３は、デバイス名を用いて、デバイスの種別ごとに変数名を分類する。例えば、デバイス整理部１１３は、入力用デバイスＸ、出力用デバイスＹ、通信用デバイスＬに分類する。そして、デバイス整理部１１３は、分類した種別ごとに変数名２０２をデバイス番号でソートし、デバイス番号が番号順になるように変数名２０２を並び替える。ここで、変数名の一覧２０２０とは、同一のデバイス名が割り当てられた変数名２０２を、デバイス番号が番号順になるように並び替えたものを指す。
【００６６】
Ｓ１０５２において、デバイス抽出部１１４は、番号順に並び替えられたデバイス番号に基づいて、変数名の一覧２０２０から複数の変数名２０２を抽出する。
デバイス抽出部１１４は、デバイスの種別ごとの変数名の一覧２０２０において、デバイス番号の連続性をチェックする。デバイス番号の連続性をチェックするとは、デバイス番号の一定の範囲（例えば１〜１６、１７〜３２、３３〜４８、・・・）内に、読出しあるいは書込みの対象となっているデバイス番号がいくつあるかをチェックすることである。チェックした結果、一定の範囲内に複数のデバイス番号が割り当てられている場合には、それらをまとめて一つの専用の関数を用いてデータの読出しあるいは書込みを行うようにアクセスプログラム生成部１０８に指示する。
【００６７】
Ｓ１０６ａにおいて、アクセスプログラム生成部１０８は、複数の変数名２０２に対応する複数のデバイス２３０に一つの関数でアクセスするアクセスプログラム１０８３を生成する。
変数名の一覧２０２０に対応するデバイスの種別が入力用デバイスＸあるいは出力用デバイスＹの場合は、入出力用アクセスプログラム生成部１０８１が一つの専用の関数で複数の変数名２０２に対応する複数のデバイスにアクセスする入出力用アクセスプログラム１０８３３を生成する（Ｓ１０６１ａ）。
また、変数名の一覧に対応するデバイスの種別が通信用デバイスの場合は、通信用アクセスプログラム生成部１０８２が一つの専用の関数で複数の変数名２０２に対応する通信用デバイスＬにアクセスする通信用アクセスプログラム１０８３４を生成する（Ｓ１０６２ａ）。
【００６８】
次に、具体例を用いて説明する。
複数の変数名２０２に入力用デバイスＸのデバイス名Ｘが割り当てられており、そのデバイス番号として１、３、８、１０、３６、３７が割り当てられたとする。このとき、デバイス抽出部１１４は、デバイス番号１、３、８、１０が一つの関数（例えば、ｇｅｔＷｏｒｄＸ関数）を用いてデバイスの値を読み出すことができると判断する。同様に、デバイス抽出部１１４は、デバイス番号３６、３７も一つの関数（例えばｇｅｔＷｏｒｄＸ関数）を利用してデバイスの値を読み出すことができると判断する。
デバイス抽出部１１４は、この判断結果をアクセスプログラム生成部１０８の入出力用アクセスプログラム生成部１０８１に通知する。
【００６９】
入出力用アクセスプログラム生成部１０８１は、デバイス抽出部１１４からの通知を受け取り、入力用デバイスＸからデータを読み出す処理としてｇｅｔＷｏｒｄＸ関数を利用して、複数の変数名２０２に対するデータをまとめて読み出す処理を行うアクセスプログラム１０８３を生成する。
【００７０】
実施の形態１では、１つの変数名２０２に対して個別にデータを読み出す関数（例えばｇｅｔＸ関数）を利用していた。入力用デバイスＸはビットデバイスであるためｇｅｔＸ関数では１ビット単位でデータを読出していたが、ｇｅｔＷｏｒｄＸ関数ではワード単位（１６ビット）でデータを読み出すことができる。このため、実施の形態１では入力用デバイスのデバイス番号１、３、８、１０のデータを読み出すためにｇｅｔＸ関数を４回実行していたが、本実施の形態ではｇｅｔＷｏｒｄＸ関数を１回実行しただけで入力用デバイスのデバイス番号１、３、８、１０のデータを読み出すことができる。
複数の変数名２０２に出力用デバイスＹが割り当てられている場合も、入力用デバイスＸへのアクセス方法と同じ考え方を適用できる。
【００７１】
なお、複数の変数名２０２に通信用デバイスＬが割り当てられている場合、通信用デバイスＬはワードデバイスであるため、デバイス抽出部１１４は、デバイス番号が１、２、３と完全に連続している場合にのみ一つの関数（例えば、データの書込みの場合はＷｒｉｔｅＤａｔａｓ関数）を利用して通信用デバイスＬへのデータの書込みができると判断する。デバイス抽出部１１４は、この判断結果を通信用アクセスプログラム生成部１０８２に通知する。通信用デバイスＬへのデータの読出しあるいは書込みを行う関数では、データの読出しあるいは書込みを行う通信用デバイスＬの先頭のデバイス番号と、一度に読出しあるいは書込みを行うデータのワード数とを引数として指定できることとする。
【００７２】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係るプログラム生成装置では、デバイス番号の連続性をチェックし、必要なデータをまとめて読出したり書き込んだりする関数を利用したアクセスプログラムを自動生成する。よって、本実施の形態に係るプログラム生成装置によれば、ユーザによる制御プログラムの開発工数を削減することができると共に、デバイスに対するデータの読出しや書込み処理の性能を向上することができ、制御プログラムの実行性能の向上が図れる。
【００７３】
実施の形態３．
本実施の形態では、主に、実施の形態２と異なる点について説明する。
本実施の形態において、実施の形態１，２で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
【００７４】
実施の形態２に係るプログラム生成装置１００ａでは、変数名の一覧２０２０についてデバイス番号の連続性をチェックし、一定の範囲内に複数のデバイス番号が割り当てられているデバイスへのアクセスを一つの関数で処理していた。本実施の形態では、デバイス番号の連続性のチェック結果から、制御プログラムの実行性能を向上することができるデバイス番号の推奨値の組を推奨デバイス番号２３０３１として算出し、ユーザに提示する機能について説明する。
【００７５】
＊＊＊構成の説明＊＊＊
図９は、本実施の形態に係るプログラム生成装置１００ｂのブロック構成を示す図である。
本実施の形態に係るプログラム生成装置１００ｂは、図７のプログラム生成装置１００ａのブロック構成に加えて、推奨デバイス算出部１１５と推奨デバイス表示部１１６とを備える。
【００７６】
推奨デバイス算出部１１５は、デバイス抽出部１１４によるデバイス番号の連続性のチェック結果に基づいて、変数名の一覧２０２０に割り当てるデバイス番号の推奨値の組を推奨デバイス番号２３０３１として算出する。推奨デバイス算出部１１５は、変数名の一覧２０２０に対応するデバイスへのデータの読出しあるいは書込みを行うための専用の関数の呼出し回数を削減することができるように、推奨デバイス番号を算出する。
推奨デバイス表示部１１６は、変数名の一覧２０２０に割り当てると処理時間が短縮できる推奨デバイス番号を表示画面に表示する。
例えば、ユーザは表示画面に表示された推奨デバイス番号を用いて、変数名の一覧２０２０に推奨デバイス番号を割り当てる。あるいは、推奨デバイス算出部１１５により推奨デバイス番号が算出されると、管理ファイル生成部１０７は自動的に変数名の一覧２０２０に推奨デバイス番号を割り当て、管理ファイル１０７１を更新してもよい。
【００７７】
＊＊＊動作の説明＊＊＊
図１０は、本実施の形態に係るプログラム生成装置１００ｂのプログラム生成処理Ｓ１００ｂの一部を示すフロー図である。
【００７８】
本実施の形態に係るプログラム生成処理Ｓ１００ｂでは、実施の形態２で説明したプログラム生成処理Ｓ１００ａのＳ１０１からＳ１０５１までの処理、及びＳ１０６ａからＳ１０９までの処理と同様の処理を行うため、ここでは説明を省略する。本実施の形態に係るプログラム生成処理Ｓ１００ｂでは、実施の形態２で説明したＳ１０５２の処理が図１０に示すＳ１０５２ｂに示す処理となる。
【００７９】
Ｓ１０５２１において、デバイス抽出部１１４は、変数名の一覧２０２０におけるデバイス番号の連続性をチェックする。デバイス番号の連続性のチェックとは、一つの関数でまとめてデータの読出しあるいは書込みを行うことができる複数のデバイス番号を抽出することである。デバイス抽出部１１４は、番号順に並び替えられたデバイス番号の連続性を判定し、判定結果に基づいて複数のデバイス番号を抽出する。
【００８０】
Ｓ１０５２２において、推奨デバイス算出部１１５は、複数のデバイス番号に対応する複数のデバイスに一つの関数でアクセスする場合の現状処理時間６０１を算出し、現状処理時間６０１より短い処理時間でアクセスができる新たな複数のデバイス番号を推奨デバイス番号として算出する。推奨デバイス算出部１１５は、デバイス抽出部１１４のチェック結果に基づいて、変数名２０２に割り当てられたデバイスにアクセスする処理の現状の処理時間を現状処理時間６０１として算出する。推奨デバイス算出部１１５では、あらかじめ各関数（例えば、ｇｅｔＸ関数、ＷｒｉｔｅＤａｔａ関数など）の処理時間を保持しておく。推奨デバイス算出部１１５は、デバイス抽出部１４によるチェック結果に基づいて、各デバイスにアクセスする関数の実行に要する時間を加算してトータルの現状処理時間を算出する。この現状処理時間は目安である。また、推奨デバイス算出部１１５は、この現状処理時間は、制御プログラム１０４１のヘッダ部とフッタ部とに挿入する読出しプログラム１０８３１と書込みプログラム１０８３２との処理時間である。推奨デバイス算出部１１５は、現状処理時間６０１を、ヘッダ部の読出しプログラム１０８３１の処理時間とフッタ部の書込みプログラム１０８３２の処理時間とに分けて算出する。
【００８１】
Ｓ１０５２３において、推奨デバイス算出部１１５は、変数名の一覧２０２０のデバイス番号に基づいて、現状処理時間を短縮することができるデバイス番号の割り当てを表す推奨デバイス番号を算出する。
推奨デバイス算出部１１５は、デバイス整理部１１３からデバイス番号でソート（並び替え）を行った結果である変数名の一覧２０２０を取得する。推奨デバイス算出部１１５は、デバイス番号を他の範囲のデバイス番号に変更し、デバイス番号に連続性を持たせる。推奨デバイス算出部１１５は、このようにデバイス番号に連続性を持たせることで、二つの関数を実行してデータの読出しあるいは書込みを行っていた処理を、一つの関数を実行してデータの読出しあるいは書込みを行う処理にまとめられる個所を見つけ出す。
【００８２】
例えば、推奨デバイス算出部１１５は、入力用デバイスＸのデバイス番号が１０、１１、１７、１８と割り当てられていた場合、デバイス抽出部１１４はデバイス番号が１０及び１１と、１７及び１８とで二つの関数でデータの読出しを行うと判断する。一方、推奨デバイス算出部１１５では、デバイス番号の１１と１７との間の未使用箇所の数をチェックし、デバイス番号１７及び１８を未使用箇所のデバイス番号１５及び１６に変更し、デバイス番号を１〜１６の範囲内に含めることにより、ワード単位でデータの読出しができる関数一つで処理が可能であると判断する。よって、推奨デバイス算出部１１５は、入力用デバイスＸの推奨デバイス番号は１０、１１、１５、１６であると算出する。
推奨デバイス算出部１１５は、出力用デバイスＹ、通信用デバイスＬにおいても、デバイス番号を変更することで別々の関数を利用している個所をまとめられるかどうかを判断し、推奨デバイス番号を算出する。
【００８３】
Ｓ１０５２４において、推奨デバイス算出部は、推奨デバイス番号を変数名の一覧２０２０に割り当てた場合の推奨処理時間６０２を算出する。すなわち、推奨デバイス算出部は、推奨デバイス番号を変数名の一覧２０２０に割り当てた場合、各デバイスにアクセスする関数の実行に要する時間のトータル処理時間を推奨処理時間６０２として算出する。
【００８４】
Ｓ１０５２５において、推奨デバイス表示部１１６は、推奨デバイス算出部１１５により算出された推奨デバイス番号と推奨処理時間６０２とを受け取り、表示画面に表示する。推奨デバイス表示部１１６は、現状のデバイス番号及び現状処理時間６０１と推奨デバイス番号及び推奨処理時間６０２とをユーザが対比し易いようなレイアウトを用いて表示画面に表示する。
【００８５】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係るプログラム生成装置によれば、割り当てられているデバイス番号が連続性を持つように変更することで、デバイスの読出しあるいは書込みを実行するための関数の呼出し回数を減らすことができる。また、本実施の形態に係るプログラム生成装置によれば、デバイス番号が連続性を持つように変更することによる処理時間への影響を表示画面に表示するため、ユーザはデバイス番号の変更結果（推奨値）とトータルの処理時間とを確認して、デバイス番号の割り当てを変更するかどうかを判断することができ、より制御プログラムの実行性能の向上を図ることができる。
【００８６】
実施の形態４．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成については同一の符号を付し、その説明を省略する場合がある。
【００８７】
実施の形態１では、割り当て部１０６は、ユーザから入力受付部１０１を用いて入力された割り当て指示に基づいて、変数名２０２に対してデバイス名とデバイス番号とを割り当てていた。本実施の形態では、例えば他の設計装置で作成したファイルを利用して、割り当て部が変数名に対し、デバイス名とデバイス番号とを自動的に割り当てる機能について説明する。
【００８８】
＊＊＊構成の説明＊＊＊
図１１は、本実施の形態に係るプログラム生成装置１００ｃのブロック構成を示す図である。
本実施の形態に係るプログラム生成装置１００ｃは、図１のプログラム生成装置１００のブロック構成に加えて、割り当て情報格納部１１７を備える。また、本実施の形態に係るプログラム生成装置１００ｃは、入力受付部１０１ｃの機能と割り当て部１０６ｃの機能が実施の形態１とは異なる。
【００８９】
割り当て情報格納部１１７は、変数名２０２に対しデバイス識別子２３０１が対応付けられた割り当て情報１１７１を格納する。割り当て情報１１７１は、変数名にデバイス名やデバイス番号を割り当てた情報であり、例えば他の設計装置で定義されたものである。他の設計装置とは、変数名２０２にデバイス２３０の割り当てを行うソフトウェアを実行する装置である。
【００９０】
入力受付部１０１ｃは、ユーザから割り当て情報１１７１の指定を受け付ける。入力受付部１０１ｃは、ユーザから受け付けた割り当て情報１１７１の指定を、割り当て情報格納部１１７に出力する。割り当て情報格納部１１７は、指定された割り当て情報１１７１のファイルを開いて格納されているデータを読み取る。割り当て情報格納部１１７は、デバイス割り当て情報指定部とも称される。
【００９１】
割り当て部１０６ｃは、割り当て情報１１７１に基づいて、変数名２０２に対し、変数名２０２に対応付けられたデバイス識別子２３０１を割り当てる。割り当て部１０６ｃは、割り当て情報格納部１１７で読み取った変数名２０２及びその変数名２０２に対応付けられたデバイス識別子２３０１と、情報抽出部１０５で抽出された変数名２０２とを比較する。割り当て部１０６ｃは、情報抽出部１０５で抽出された変数名２０２に対して、情報抽出部１０５で抽出された変数名２０２と同一の変数名２０２に対応するデバイス識別子２３０１を自動で割り当てる。この割り当て部１０６ｃは、割り当て情報連携部とも称される。
【００９２】
＊＊＊動作の説明＊＊＊
図１２は、本実施の形態に係るプログラム生成装置１００ｃのプログラム生成処理Ｓ１００ｃの一部を示すフロー図である。
【００９３】
本実施の形態に係るプログラム生成処理Ｓ１００ｃでは、実施の形態１で説明したプログラム生成処理Ｓ１００のＳ１０１からＳ１０３までの処理、及びＳ１０５からＳ１０９までの処理と同様の処理を行うため、ここでは説明を省略する。本実施の形態に係るプログラム生成処理Ｓ１００ｃでは、Ｓ１０１の処理の前にＳ１０１ｃが実行される。また、実施の形態１で説明した割り当て処理Ｓ１０４は後述するＳ１０４ｃの処理となる。
【００９４】
Ｓ１０１ｃにおいて、入力受付部１０１ｃは、ユーザから割り当て情報１１７１のファイル名の指定を受け付ける。入力受付部１０１ｃは、ユーザから受け付けた割り当て情報１１７１のファイル名の指定を、割り当て情報格納部１１７に出力する。割り当て情報格納部１１７は、指定された割り当て情報１１７１のファイル名に基づいて、指定された割り当て情報１１７１のファイルを開き、格納されているデータを読み取り、割り当て部１０６ｃに出力する。
【００９５】
Ｓ１０４において、割り当て部１０６ｃは、割り当て情報格納部１１７からユーザにより指定された割り当て情報１１７１を受け取る。また、割り当て部１０６ｃは、情報抽出部１０５により抽出された変数名２０２を受け取る。
割り当て部１０６ｃは、情報抽出部１０５により抽出された変数名２０２と、割り当て情報１１７１に設定されている変数名２０２とを比較する。割り当て部１０６ｃは、情報抽出部１０５により抽出された変数名２０２と同一の変数名が割り当て情報１１７１に設定されているか否かを判定する。割り当て部１０６ｃは、同一の変数名が見つかった場合は、割り当て情報１１７１において当該変数名に対応付けられているデバイス識別子２３０１（デバイス名とデバイス番号）を抽出し、抽出したデバイス名とデバイス番号とを変数名２０２に自動で割り当てる。
【００９６】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係るプログラム生成装置によれば、入出力情報を表す変数名に対するデバイス名とデバイス番号の割り当てを、他の設計装置で定義された割り当て情報を利用して自動化することができる。よって、本実施の形態に係るプログラム生成装置によれば、ユーザによる割り当て作業を不要にし、作業負荷を軽減できる。
【００９７】
次に、図１３を用いて、実施の形態１に係るプログラム生成装置１００のハードウェア構成の一例について説明する。
【００９８】
プログラム生成装置１００はコンピュータである。
プログラム生成装置１００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００９９】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵである。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【０１００】
補助記憶装置９０２には、図１に示す入力受付部１０１、制御システム設計部１０３、制御プログラム生成部１０４、情報抽出部１０５、割り当て部１０６、管理ファイル生成部１０７、アクセスプログラム生成部１０８、プログラム合成部１１０、プログラム記憶部１１１、通信処理部１１２、入出力用アクセスプログラム生成部１０８１、通信用アクセスプログラム生成部１０８２などの機能を実現するプログラムが記憶されている。以下、入力受付部１０１、制御システム設計部１０３、制御プログラム生成部１０４、情報抽出部１０５、割り当て部１０６、管理ファイル生成部１０７、アクセスプログラム生成部１０８、プログラム合成部１１０、プログラム記憶部１１１、通信処理部１１２、入出力用アクセスプログラム生成部１０８１、通信用アクセスプログラム生成部１０８２などをまとめて「部」と表記する。
【０１０１】
上述した「部」の機能を実現するプログラムは、プログラム生成プログラムとも称される。「部」の機能を実現するプログラムは、１つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。また、「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記憶される。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
【０１０２】
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【０１０３】
図２では、１つのプロセッサ９０１が図示されているが、プログラム生成装置１００が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【０１０４】
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリにファイルとして記憶される。
【０１０５】
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【０１０６】
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【０１０７】
上記の実施の形態では、「部」のそれぞれが独立した機能ブロックとしてプログラム生成装置１００を構成している。しかし、プログラム生成装置１００は上記のような構成でなくてもよく、プログラム生成装置１００の構成は任意である。
例えば、制御システム設計部１０３、制御プログラム生成部１０４を１つの機能ブロックとしてもよい。また、情報抽出部１０５、割り当て部１０６、管理ファイル生成部１０７を１つの機能ブロックとしてもよい。プログラム生成装置１００の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成で通信装置を構成しても構わない。
また、プログラム生成装置１００は、１つの装置でなく、複数の装置から構成されたプログラム生成システムでもよい。
【０１０８】
また、実施の形態１から４について説明したが、これらの４つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの４つの実施の形態のうち、１つの実施の形態を部分的に実施しても構わない。その他、これらの４つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１０９】
１００，１００ａ，１００ｂ，１００ｃ  プログラム生成装置、１０１，１０１ｃ  入力受付部、１０２  モデル格納部、１０３  制御システム設計部、１０３１  制御システムモデル、１０４  制御プログラム生成部、１０４１  制御プログラム、１０５  情報抽出部、１０６，１０６ｃ  割り当て部、１０７  管理ファイル生成部、１０７１  管理ファイル、１０８  アクセスプログラム生成部、１１０  プログラム合成部、１１１  プログラム記憶部、１１２  通信処理部、１１３  デバイス整理部、１１４  デバイス抽出部、１１５  推奨デバイス算出部、１１６  推奨デバイス表示部、１１７  割り当て情報格納部、１１７１  割り当て情報、１０８１  入出力用アクセスプログラム生成部、１０８２  通信用アクセスプログラム生成部、１０８３  アクセスプログラム、１０８３１  読出しプログラム、１０８３２  書込みプログラム、１０８３３  入出力用アクセスプログラム、１０８３４  通信用アクセスプログラム、２００，２００ａ，２００ｂ，２００ｃ  制御装置、２０１，２０１ａ，２０１ｂ，２０１ｃ  制御装置モデル、２０２  変数名、２０２０  変数名の一覧、２０２１  入力変数名、２０２２  出力変数名、２０３  入出力情報、２０３１  入力情報、２０３２  出力情報、２０３３  入出力データ、２０３４  通信データ、２１０  電源、２２０  ＰＬＣ、２３０  デバイス、２４０  制御対象機器、Ｘ  入力用デバイス、Ｙ  出力用デバイス、Ｌ  通信用デバイス、２３０１  デバイス識別子、２３０１１  読出し元デバイス識別子、２３０１２  書込み先デバイス識別子、２３０２  デバイス名、２３０３  デバイス番号、２３０３１  推奨デバイス番号、３００  制御システム、５００  制御系ネットワーク、６０１  現状処理時間、６０２  推奨処理時間、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１，９１２  ケーブル、９０４１  レシーバー、９０４２  トランスミッター、Ｓ１００，Ｓ１００ａ，Ｓ１００ｂ，Ｓ１００ｃ  プログラム生成処理、Ｓ１０２  制御プログラム生成処理、Ｓ１０３  情報抽出処理、Ｓ１０４  割り当て処理、Ｓ１０６  アクセスプログラム生成処理、Ｓ１０７  プログラム合成処理、Ｓ１０８  プログラム記憶処理、Ｓ１０９  通信処理、Ｘ  入力用デバイス、Ｙ  出力用デバイス、Ｌ  通信用デバイス。
【図１】
2016189689.tif 000003
【図２】
2016189689.tif 000004
【図３】
2016189689.tif 000005
【図４】
2016189689.tif 000006
【図５】
2016189689.tif 000007
【図６】
2016189689.tif 000008
【図７】
2016189689.tif 000009
【図８】
2016189689.tif 000010
【図９】
2016189689.tif 000011
【図１０】
2016189689.tif 000012
【図１１】
2016189689.tif 000013
【図１２】
2016189689.tif 000014
【図１３】
2016189689.tif 000015
【国際調査報告】
2016189689.tif 000016
2016189689.tif 000017