(57)【要約】【課題】デバイスの特性に応じた実行可能プログラムを自動で作成する。【解決手段】実行可能プログラム作成部１１は、コンパイラプログラムを用いて、ソースコードから中間表現を生成する字句解析・構文解析処理を実行する。実行可能プログラム作成部１１は、中間表現に含まれるＦＵＮＣＴＩＯＮ呼び出し処理を抽出する処理とを実行する。実行可能プログラム作成部１１は、抽出したＦＵＮＣＴＩＯＮ呼び出し処理に対して、実行可能プログラムによって制御されるデバイスの特性に応じて設定されたＦＵＮＣＴＩＯＮ置換条件を評価する処理を実行する。実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換条件を満たす場合に、ＦＵＮＣＴＩＯＮ呼び出し処理を、ＦＵＮＣＴＩＯＮ置換ルールに応じて置換する処理を実行する。実行可能プログラム作成部１１は、置換後のＦＵＮＣＴＩＯＮ呼び出し処理を用いて再配置可能オブジェクトを中間生成する処理を実行する。【選択図】図７
2018041373.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードのコンパイラプログラムが記憶された記憶部と、
前記コンパイラプログラムの実行を含み、前記ソースコードに基づく再配置可能オブジェクトを中間生成して、実行可能プログラムの作成を行う演算部と、
を備える、実行可能プログラムの作成装置であって、
前記演算部は、前記コンパイラプログラムを用いて、
前記ソースコードから中間表現を生成する字句解析・構文解析処理と、
前記中間表現に含まれるＦＵＮＣＴＩＯＮ呼び出し処理を抽出する処理と、
抽出したＦＵＮＣＴＩＯＮ呼び出し処理に対して、前記実行可能プログラムによって制御されるデバイスの特性に応じて設定されたＦＵＮＣＴＩＯＮ置換条件を満たす場合に、ＦＵＮＣＴＩＯＮ置換ルールに応じて前記ＦＵＮＣＴＩＯＮ呼び出し処理を置換する処理と、
置換後のＦＵＮＣＴＩＯＮ呼び出し処理を用いて前記再配置可能オブジェクトを中間生成する処理と、
を実行する、実行可能プログラム作成装置。
【請求項２】
前記ＦＵＮＣＴＩＯＮ置換条件を含むＦＵＮＣＴＩＯＮ置換ルールテーブルを、前記記憶部に記憶された前記コンパイラプログラムに有し、
前記演算部は、
呼び出し処理されるＦＵＮＣＴＩＯＮが、前記ＦＵＮＣＴＩＯＮ置換ルールテーブルに記憶された前記ＦＵＮＣＴＩＯＮ置換条件に該当する場合に、前記ＦＵＮＣＴＩＯＮ置換条件の評価を行う、
請求項１に記載の実行可能プログラム作成装置。
【請求項３】
前記記憶部には、ＦＵＮＣＴＩＯＮのライブラリが記憶されており、
前記ＦＵＮＣＴＩＯＮのライブラリは、
前記ソースコードに用いられるダミーＦＵＮＣＴＩＯＮと、
該ダミーＦＵＮＣＴＩＯＮに対応する複数種類の前記置換後のＦＵＮＣＴＩＯＮと、を含む、
請求項１または請求項２に記載の実行可能プログラム作成装置。
【請求項４】
ソースコードのコンパイルを含み、前記ソースコードに基づく再配置可能オブジェクトを中間生成して、実行可能プログラムを作成する実行可能プログラム作成方法であって、
前記ソースコードから中間表現を生成する字句解析・構文解析処理と、
中間表現に含まれるＦＵＮＣＴＩＯＮ呼び出し処理に対応するＦＵＮＣＴＩＯＮ置換条件を評価する処理と、
前記ＦＵＮＣＴＩＯＮ置換条件を満たす場合に、前記ＦＵＮＣＴＩＯＮ呼び出し処理を、ＦＵＮＣＴＩＯＮ置換ルールに応じて置換する処理と、
置換後のＦＵＮＣＴＩＯＮ呼び出し処理を用いて前記再配置可能オブジェクトを中間生成する処理と、
を有する、
実行可能プログラム作成方法。
【請求項５】
ソースコードのコンパイルを含み、前記ソースコードに基づく再配置可能オブジェクトを中間生成して、実行可能プログラムを作成する処理をコンピュータに実行させる実行可能プログラム作成プログラムであって、
前記コンピュータは、
前記ソースコードから中間表現を生成する字句解析・構文解析処理と、
中間表現に含まれるＦＵＮＣＴＩＯＮ呼び出し処理に対応するＦＵＮＣＴＩＯＮ置換条件を評価する処理と、
前記ＦＵＮＣＴＩＯＮ置換条件を満たす場合に、前記ＦＵＮＣＴＩＯＮ呼び出し処理を、ＦＵＮＣＴＩＯＮ置換ルールに応じて置換する処理と、
置換後のＦＵＮＣＴＩＯＮ呼び出し処理を用いて前記再配置可能オブジェクトを中間生成する処理と、
を実行する、
実行可能プログラム作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、産業用コントローラで実行される実行可能プログラムの作成の技術に関する。
【背景技術】
【０００２】
現在、産業用コントローラを用いて、複数のデバイス（機器）を制御するシステムが各種実用化されている。例えば、非特許文献１に示すシステムでは、産業用コントローラ（マシンオートメーションコントローラ）は、各種のデバイスに、制御用ネットワークを介して接続されている。また、産業用コントローラは、パーソナルコンピュータ等の実行可能プログラムの作成装置に接続可能である。
【０００３】
パーソナルコンピュータには、実行可能プログラム作成用のソフトウエアがインストールされている。プログラマは、当該ソフトウエアを用いて、実行可能プログラムの元となるソースコードを作成する。ソースコードがビルドされることで、実行可能プログラムは作成される。パーソナルコンピュータで作成された実行可能プログラムは、産業用コントローラに転送される。
【０００４】
産業用コントローラは、パーソナルコンピュータから転送された実行可能プログラムを記憶する。産業用コントローラは、この実行可能プログラムを実行することによって、各種のデバイスの制御パラメータの設定等のデバイス制御を実行する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】omron  制御機器  マシンオートメーションコントローラ概要  インターネット：http://www.fa.omron.co.jp/guide/technicalguide/454/270/index.html
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、産業用コントローラに接続されるデバイスには、実行可能プログラムに影響する特性を有するものがあり、プログラマは、この特性に応じて、ソースファイルを作成しなければならない。
【０００７】
例えば、デバイスＡからデバイスＢに変更し、デバイスＡとデバイスＢとで特性が異なる場合、プログラマは、デバイスＡに対応したソースコードからデバイスＢに対応したソースコードへの書き換えを行い、ビルドし直さなければならなかった。
【０００８】
したがって、本発明の目的は、デバイスの特性に対する依存度の低いソースコードを用いて、デバイスの特性に応じた実行可能プログラムを作成する実行可能プログラムの作成技術を提供することにある。
【課題を解決するための手段】
【０００９】
この発明の実行可能プログラム作成装置は、記憶部と演算部とを備える。記憶部には、ソースコードのコンパイラプログラムが記憶されている。演算部は、コンパイラプログラムの実行を含み、ソースコードに基づく再配置可能オブジェクトを中間生成して、実行可能プログラムの作成を行う。
【００１０】
演算部は、コンパイラプログラムを用いて、ソースコードから中間表現を生成する字句解析・構文解析処理を実行する。演算部は、中間表現に含まれるＦＵＮＣＴＩＯＮ呼び出し処理を抽出する処理とを実行する。演算部は、抽出したＦＵＮＣＴＩＯＮ呼び出し処理に対して、実行可能プログラムによって制御されるデバイスの特性に応じて設定されたＦＵＮＣＴＩＯＮ置換条件を評価する処理を実行する。演算部は、ＦＵＮＣＴＩＯＮ置換条件を満たす場合に、ＦＵＮＣＴＩＯＮ呼び出し処理を、ＦＵＮＣＴＩＯＮ置換ルールに応じて置換する処理を実行する。演算部は、置換後のＦＵＮＣＴＩＯＮ呼び出し処理を用いて再配置可能オブジェクトを中間生成する処理を実行する。
【００１１】
この構成では、デバイスの特性に応じた適切なＦＵＮＣＴＩＯＮを含む実行可能プログラムが自動で作成される。
【発明の効果】
【００１２】
この発明によれば、プログラマへの負荷を軽減しながら、デバイスの特性に応じた実行可能プログラムを作成することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係る実行可能プログラムが実行されるシステムの概略構成図である。
【図２】本発明の実施形態に係る実行可能プログラム作成装置の構成図である。
【図３】デバイス変数テーブルのデータ構成を示す図である。
【図４】ＦＵＮＣＴＩＯＮ置換ルールテーブルのデータ構成を示す図である。
【図５】ＦＵＮＣＴＩＯＮ置換ルールテーブルの元となるライブラリの作成方法を示すフローチャートである。
【図６】本発明の実施形態に係る実行可能プログラムの作成方法のメインフローを示すフローチャートである。
【図７】ＦＵＮＣＴＩＯＮ置換ルール付きのコンパイル処理を示すフローチャートである。
【図８】ＦＵＮＣＴＩＯＮ呼び出しの置換処理を示すフローチャートである。
【図９】個別処理を示すフローチャートである。
【図１０】データ型による置換処理の場合のライブラリのデータ構成例を示す。
【図１１】エンディアンによる置換処理の場合のライブラリのデータ構成例を示す。
【発明を実施するための形態】
【００１４】
本発明の実施形態に係る実行可能プログラムの作成技術について、図を参照して説明する。図１は、本発明の実施形態に係る実行可能プログラムが実行されるシステムの概略構成図である。図２は、本発明の実施形態に係る実行可能プログラム作成装置の構成図である。
【００１５】
まず、図１を用いて、本実施形態に係る実行可能プログラムが利用されるシステムについて説明する。図１に示すシステム９０は、具体的には、例えば、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システムである。システム９０は、産業用コントローラ９１０、デバイス９２１、９２２、および、ネットワーク９００を備える。
【００１６】
図１に示すように、産業用コントローラ９１０およびデバイス９２１、デバイス９２２は、ネットワーク９００によって接続されている。デバイス９２１、９２２は、例えば、モータ等のモーション機器と該モーション機器の動作を制御する制御部とを備える。デバイス９２１、９２２は、これに限るものではなく、所定の動作部と該動作部の動作を制御する制御部とを備える態様であればよい。
【００１７】
また、図１に示すように、産業用コントローラ９１０は、パソコン１０と接続可能である。産業用コントローラ９１０で実行される実行可能プログラムは、パソコン１０によって作成される。産業用コントローラ９１０は、パソコン１０で作成された実行可能プログラムをダウンロードすることで記憶している。なお、産業用コントローラ９１０は、後述するデバイス変数テーブルを記憶している。このデバイス変数テーブルは、産業用コントローラ９１０とパソコン１０とで同じものを記憶している。
【００１８】
産業用コントローラ９１０は、デバイス変数テーブルを参照して、実行可能プログラムを実行することで、ネットワーク９００を介して接続されたデバイス９２１、９２２の制御を行う。デバイス変数テーブルの詳細は、後述する。
【００１９】
図２に示すように、パソコン１０は、実行可能プログラム作成部１１、操作入力部１２、通信制御部１３、および、表示部１４を備える。操作入力部１２は、例えば、マウスやキーボードであり、表示部１４は、例えば、液晶ディプレイ等である。通信制御部１３は、産業用コントローラ９１０との通信制御を行い、この通信制御部１３を介して、実行可能プログラムが産業用コントローラ９１０にダウンロードされる。
【００２０】
実行可能プログラム作成部１１は、本発明の実行可能プログラム作成装置に対応し、ＣＰＵ１１１と記憶部１１２とを備える。記憶部１１２には、各種のプログラム、テーブル等が記憶されている。具体的には、記憶部１１２には、コンパイラ２１、ライブラリマネージャ２２、デバイス変数テーブル２３、プログラムエディタ２４、ＦＵＮＣＴＩＯＮ置換ルールエディタ２５が記憶されている。コンパイラ２１は、字句解析・構文解析器２１１、ＦＵＮＣＴＩＯＮ置換器２１２、コード生成器２１３、アセンブラ２１４、および、ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５が記憶されている。
【００２１】
ＣＰＵ１１１は、本発明の演算部に対応し、記憶部１１２に記憶されたプログラムを実行して、実行可能プログラムを作成する。この際、ＣＰＵ１１１は、必要なテーブルを参照して、実行可能プログラムを作成する。
【００２２】
プログラムエディタ２４は、実行可能プログラムの元となるソースコードの記述、編集等を行う。プログラムエディタ２４による編集画面は、表示部１４に表示され、例えば、操作入力部１２によって入力されたソースコードや各種のコマンド等が表示される。
【００２３】
ＦＵＮＣＴＩＯＮ置換ルールエディタ２５は、後述のダミーＦＵＮＣＴＩＯＮ、置換後ＦＵＮＣＴＩＯＮ、ＦＵＮＣＴＩＯＮ置換ルールの記述、編集等を行う。これらのダミーＦＵＮＣＴＩＯＮ、置換後ＦＵＮＣＴＩＯＮ、ＦＵＮＣＴＩＯＮ置換ルールは、記憶部１１２内のライブラリ（図示せず）に記憶される。ライブラリマネージャ２２は、ライブラリに記憶された各種のデータを管理する。ダミーＦＵＮＣＴＩＯＮ、置換後ＦＵＮＣＴＩＯＮ、ＦＵＮＣＴＩＯＮ置換ルールの記憶情報は、ライブラリマネージャ２２に登録されている。
【００２４】
なお、本願に示すＦＵＮＣＴＩＯＮとは、プログラマブルコントローラのプログラム言語の規格であるＪＩＳ  ３５０３：２０１６（ＩＥＣ  ６１１３１−３）に記載されているように、「実行したとき、一般的に１つのデータ要素結果及び付加的な出力変数を返す言語要素」である。ＦＵＮＣＴＩＯＮは、プログラムの管理上の構成単位の一種で、当該ＦＵＮＣＴＩＯＮの名称、引数変数群、返り値変数、および、関数や手続きを構成する処理を記述したコード等の情報が含まれている。ＦＵＮＣＴＩＯＮは、ＦＵＮＣＴＩＯＮ呼び出しによって、プログラムの別の箇所に呼び出して処理を実行させることができる。
【００２５】
デバイス変数テーブル２３は、デバイス毎の変数、属性等が記憶されている。具体的には、図３に示すようなデータ構成からなる。図３は、デバイス変数テーブルのデータ構成を示す図である。デバイス変数テーブル２３は、システム９０に含まれる各デバイスと、各デバイスの変数と、属性とが関連付けして記憶されたものである。デバイス数、変数数、および属性数は、それぞれのデバイスに応じて設定されている。属性には、データ型、エンディアン等がある。例えば、図３の例であれば、デバイスＡに対しては、変数Ａ１、Ａ２があり、変数Ａ１は、属性として、データ型Ａ１１、エンディアンＡ１２等があることが記憶されている。
【００２６】
概略的には、コンパイラ２１は、ソースコードをコンパイルして、再配置可能オブジェクトを作成する。字句解析・構文解析器２１１は、ソースコードから中間表現ＩＲを作成する。ＦＵＮＣＴＩＯＮ置換器２１２は、中間表現ＩＲに含まれるＦＵＮＣＴＩＯＮ呼び出し処理を抽出する。ＦＵＮＣＴＩＯＮ置換器２１２は、ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５を参照して、ＦＵＮＣＴＩＯＮ置換条件を満たすか否かを判断し、ＦＵＮＣＴＩＯＮ置換条件を満たす場合に、ＦＵＮＣＴＩＯＮ呼び出し処理を、ＦＵＮＣＴＩＯＮ置換ルールに応じて置換する。
【００２７】
なお、ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５には、中間表現ＩＲに基づいて、ライブラリマネージャ２２を介して、ライブラリに記憶されたＦＵＮＣＴＩＯＮ置換ルールが記憶されている。図４は、ＦＵＮＣＴＩＯＮ置換ルールテーブルのデータ構成を示す図である。ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５には、中間表現ＩＲから抽出されたＦＵＮＣＴＩＯＮ呼び出し処理と、ＦＵＮＣＴＩＯＮ置換ルールとが記憶されている。例えば、図４の例では、ＦＵＮＣＴＩＯＮ呼び出し処理の対象であるＦＵＮＣ１には、ＦＵＮＣ１置換ルール１（置換ルール１１）とＦＵＮＣ２置換ルール（置換ルール１２）とが関連付けして記憶されている。
【００２８】
コード生成器２１３は、置換後のＦＵＮＣＴＩＯＮ呼び出し処理を含む中間表現ＩＲを用いて各コードを作成する。アセンブラ２１４は、生成された各コードから再配置可能オブジェクトを作成する。
【００２９】
ここで、ダミーＦＵＮＣＴＩＯＮ、置換後ＦＵＮＣＴＩＯＮ、および、ＦＵＮＣＴＩＯＮ置換ルールは、デバイス変数テーブル２３の内容、すなわち、デバイスの変数の特性に基づいて、予め設定されている。
【００３０】
したがって、コンパイラ２１が上述の処理を実行することによって、中間表現ＩＲに含まれるＦＵＮＣＴＩＯＮ呼び出しは、デバイスの特性に応じた適切な置換後ＦＵＮＣＴＩＯＮを呼び出すものとなる。これにより、プログラマがデバイスの特性を意識することなくソースコードを作成しても、再配置可能オブジェクトは、デバイスの特性に応じた適切なものとなる。そして、この再配置可能オブジェクトが用いられることによって、デバイスの特性に応じた適切な実行可能プログラムが作成される。また、デバイスが交換され、デバイス特性が変化しても、産業用コントローラ９１０からは、交換後のデバイス特性に応じた制御コマンドがデバイスに与えられる。すなわち、デバイスの交換に伴うソースコードに書き換えを行わなくてもよい。
【００３１】
次に、実行可能プログラムの作成のさらに具体的な処理について説明する。
【００３２】
まず、コンパイル時に利用されるＦＵＮＣＴＩＯＮ置換ルールテーブルの元となるライブラリの作成処理について説明する。図５は、ＦＵＮＣＴＩＯＮ置換ルールテーブルの元となるライブラリの作成方法を示すフローチャートである。
【００３３】
図５に示すように、実行可能プログラム作成部１１は、ダミーＦＵＮＣＴＩＯＮの記述を受け付ける（Ｓ１０１）。実行可能プログラム作成部１１は、置換後ＦＵＮＣＴＩＯＮの記述を受け付ける（Ｓ１０２）。実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換ルールの記述を受け付ける（Ｓ１０３）。実行可能プログラム作成部１１は、ダミーＦＵＮＣＴＩＯＮ、置換後ＦＵＮＣＴＩＯＮ、ＦＵＮＣＴＩＯＮ置換ルールをライブラリに保存し、ライブラリマネージャ２２へ登録する（Ｓ１０４）。
【００３４】
図６は、本発明の実施形態に係る実行可能プログラムの作成方法のメインフローを示すフローチャートである。
【００３５】
図６に示すように、実行可能プログラム作成部１１は、ソースコードの記述を受け付ける（Ｓ１１）。ソースコードの記述の受け付け後、実行可能プログラム作成部１１は、ビルド指示を受け付ける（Ｓ１２）。
【００３６】
ビルド指示を受け付けると、実行可能プログラム作成部１１は、ソースコードに対してＦＵＮＣＴＩＯＮ置換ルール付きのコンパイル処理を実行する（Ｓ１３）。これにより、再配置可能オブジェクトが作成される。
【００３７】
実行可能プログラム作成部１１は、再配置可能オブジェクトに対してリンク処理を実行する（Ｓ１４）。これにより、実行可能プログラムが作成される。
【００３８】
次に、ＦＵＮＣＴＩＯＮ置換ルール付きのコンパイルの具体的な処理について説明する。図７は、ＦＵＮＣＴＩＯＮ置換ルール付きのコンパイル処理を示すフローチャートである。
【００３９】
実行可能プログラム作成部１１は、ソースコードに対して、字句解析・構文解析を実行する（Ｓ２１）。ソースコードは、プログラマによってダミーＦＵＮＣＴＩＯＮを用いて記述されている。字句解析・構文解析が実行されることによって、中間表現ＩＲが作成される。
【００４０】
実行可能プログラム作成部１１は、中間表現ＩＲに含まれる全てのＦＵＮＣＴＩＯＮ呼び出し処理を抽出する。実行可能プログラム作成部１１は、中間表現ＩＲに含まれる全てのＦＵＮＣＴＩＯＮに対して、ＦＵＮＣＴＩＯＮ置換ルールが存在するか否かを検出し、存在するＦＵＮＣＴＩＯＮ置換ルールを抽出して、ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５に登録する。この際、実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換ルールとともに、ダミーＦＵＮＣＴＩＯＮおよび置換後ＦＵＮＣＴＩＯＮをＦＵＮＣＴＩＯＮ置換ルールテーブル２１５に登録する。
【００４１】
実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ呼び出しの置換を実行する（Ｓ２３）。ＦＵＮＣＴＩＯＮ呼び出しの置換処理は、図８を用いて後述する。
【００４２】
実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ呼び出しの置換処理後の中間表現ＩＲ（置換後ＦＵＮＣＴＩＯＮを用いた中間表現ＩＲ）を用いて、コードを作成し（Ｓ２４）、アセンブルを実行する（Ｓ２５）。これにより、再配置可能オブジェクトが作成される。
【００４３】
次に、ＦＵＮＣＴＩＯＮ呼び出しの置換の具体的な処理について説明する。図８は、ＦＵＮＣＴＩＯＮ呼び出しの置換処理を示すフローチャートである。
【００４４】
実行可能プログラム作成部１１は、中間表現ＩＲに含まれる全てのＦＵＮＣＴＩＯＮ呼び出しに対する処理が終わっていなければ、置換処理の対象となるＦＵＮＣＴＩＯＮ呼び出しを切り替える（Ｓ３１：ＮＯ→Ｓ３２）。
【００４５】
実行可能プログラム作成部１１は、置換処理の対象となるＦＵＮＣＴＩＯＮ呼び出しに対して、個別処理を実行する（Ｓ３３）。個別処理は、図９を用いて後述する。
【００４６】
実行可能プログラム作成部１１は、中間表現ＩＲに含まれる全てのＦＵＮＣＴＩＯＮ呼び出しに対する処理が終わっていれば、ＦＵＮＣＴＩＯＮ呼び出しの置換処理を終了する。
【００４７】
次に、個別処理の具体的な処理について説明する。図９は、個別処理を示すフローチャートである。
【００４８】
実行可能プログラム作成部１１は、処理対象のＦＵＮＣＴＩＯＮ呼び出しのＦＵＮＣＴＩＯＮ（処理対象ＦＵＮＴＩＯＮ）がＦＵＮＣＴＩＯＮ置換ルールテーブル２１５に登録されているか否かを検出する。具体的に、図４に記載された、ＦＵＮＣ１、ＦＵＮＣ２、・・・・に該当するか否かを検出する。
【００４９】
実行可能プログラム作成部１１は、処理対象ＦＵＮＣＴＩＯＮがＦＵＮＣＴＩＯＮ置換ルールテーブル２１５に登録されていなければ（Ｓ４１：ＮＯ）、このＦＵＮＣＴＩＯＮ呼び出しに対する置換処理を行わずに終了する。実行可能プログラム作成部１１は、処理対象ＦＵＮＣＴＩＯＮがＦＵＮＣＴＩＯＮ置換ルールテーブル２１５に登録されていれば（Ｓ４１：ＹＥＳ）、ステップＳ４２に移行する。
【００５０】
ステップＳ４２として、実行可能プログラム作成部１１は、処理対象ＦＵＮＣＴＩＯＮに対応するＦＵＮＣＴＩＯＮ置換条件群を、ＦＵＮＣＴＩＯＮ置換ルールテーブル２１５から取得する。例えば、図４の例であれば、実行可能プログラム作成部１１は、処理対象ＦＵＮＣＴＩＯＮがＦＵＮＣ１であることを検出すると、置換ルール１１、置換ルール１２を取得する。
【００５１】
次に、実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換条件の評価を実行する。具体的には、実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換条件を満たしているか否かを検出する。
【００５２】
実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換条件を満たしていれば（Ｓ４３：ＹＥＳ）、ＦＵＮＣＴＩＯＮ呼び出しの置換を実行する（Ｓ４４）。実行可能プログラム作成部１１は、ＦＵＮＣＴＩＯＮ置換条件を満たしていなければ（Ｓ４３：ＮＯ）、この条件に対するＦＵＮＣＴＩＯＮ呼び出しの置換を実行しない。
【００５３】
実行可能プログラム作成部１１は、全てのＦＵＮＣＴＩＯＮ置換条件の評価が終了していなければ（Ｓ４５：ＮＯ）、評価を繰り返す。一方、実行可能プログラム作成部１１は、全てのＦＵＮＣＴＩＯＮ置換条件の評価が終了していれば（Ｓ４５：ＹＥＳ）、個別処理を終了する。
【００５４】
以上のような処理を行うことによって、上述のように、プログラマがソースコードの記述時に意識することなく、デバイスの特性に応じた適切な実行可能プログラムが自動で作成される。
【００５５】
次に、具体的な例について、図１０、図１１を用いて説明する。図１０は、データ型による置換処理の場合のライブラリのデータ構成例を示す。図１１は、エンディアンによる置換処理の場合のライブラリのデータ構成例を示す。なお、図１０、図１１では、デバイスは、モータの制御デバイスである。なお、図１０、図１１の各ＦＵＮＣＴＩＯＮのプログラムは、ラダー型で示している。
【００５６】
（データ型の例）
図１０に示すように、データ型による置換処理では、ライブラリには、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ３２）、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ６４）、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ）（Ｄｕｍｍｙ）、および、置換ルールが記憶されている。ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ３２）のパラメータ１はＤＷＯＲＤ型であり、パラメータ２はＲＥＡＬ型であることが記憶されている。ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ６４）のパラメータ１はＬＷＯＲＤ型であり、パラメータ２はＬＲＥＡＬ型であることが記憶されている。ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ）（Ｄｕｍｍｙ）は、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ３２）、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ６４）と同じプログラム構成であるが、データ型の指定はされていない。
【００５７】
置換ルールには、ＦＵＮＣＴＩＯＮ名と、条件（置換条件）および処理と、が関連付けされている。例えば、置換ルールには、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ）に対して、置換条件および処理として、パラメータ１＝ＤＷＯＲＤ型、且つ、パラメータ２＝ＲＥＡＬ型であれば、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ３２）に置換することが記載されている。また、置換ルールには、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ）に対して、置換条件および処理として、パラメータ１＝ＬＷＯＲＤ型、且つ、パラメータ２＝ＬＲＥＡＬ型であれば、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ６４）に置換することが記載されている。
【００５８】
これにより、実行可能プログラム作成部１１は、中間表現ＩＲにＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ）呼び出しを検出すると、パラメータ１＝ＤＷＯＲＤ型、且つ、パラメータ２＝ＲＥＡＬ型であれば、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ３２）呼び出しを実行し、パラメータ１＝ＬＷＯＲＤ型、且つ、パラメータ２＝ＬＲＥＡＬ型であれば、ＦＵＮＣＴＩＯＮ（Ｍｏｔｏｒ６４）呼び出しを実行する再配置可能オブジェクトを作成する。そして、この再配置可能オブジェクトからなる実行可能プログラムが産業用コントローラ９１０で実行される。
【００５９】
（エンディアンの例）
図１１に示すように、エンディアンによる置換処理では、ライブラリには、ＦＵＮＣＴＩＯＮ（ＳＷＡＰ）、ＦＵＮＣＴＩＯＮ（ＭＯＶＥ）、ＦＵＮＣＴＩＯＮ（ＴＬＥ）（Ｄｕｍｍｙ）、および、置換ルールが記憶されている。ＦＵＮＣＴＩＯＮ（ＳＷＡＰ）は、所謂ＳＷＡＰ関数であり、ＦＵＮＣＴＩＯＮ（ＭＯＶＥ）は、所謂ＭＯＶＥ関数である。ＦＵＮＣＴＩＯＮ（ＴＬＥ）（Ｄｕｍｍｙ）は、エンディアンの変換のためのダミープログラムである。
【００６０】
置換ルールには、ＦＵＮＣＴＩＯＮ名と、条件（置換条件）および処理と、が関連付けされている。例えば、置換ルールには、ＦＵＮＣＴＩＯＮ（ＴＬＥ）に対して、置換条件および処理として、ｉｎｐｕｔ＝Ｂｉｇであれば、ＦＵＮＣＴＩＯＮ（ＳＷＡＰ）に置換することが記載されている。また、置換ルールには、ＦＵＮＣＴＩＯＮ（ＴＬＥ）に対して、置換条件および処理として、ｉｎｐｕｔ＝Ｌｉｔｔｌｅであれば、ＦＵＮＣＴＩＯＮ（Ｍｏｖｅ）に置換することが記載されている。
【００６１】
これにより、実行可能プログラム作成部１１は、中間表現ＩＲにＦＵＮＣＴＩＯＮ（ＴＬＥ）呼び出しを検出すると、ｉｎｐｕｔ＝Ｂｉｇであれば、ＦＵＮＣＴＩＯＮ（ＳＷＡＰ）呼び出しを実行し、ｉｎｐｕｔ＝Ｌｉｔｔｌｅであれば、ＦＵＮＣＴＩＯＮ（Ｍｏｖｅ）呼び出しを実行する再配置可能オブジェクトを作成する。そして、この再配置可能オブジェクトからなる実行可能プログラムが産業用コントローラ９１０で実行される。
【００６２】
このように、本実施形態の構成、方法、および、プログラムを用いることによって、プログラマがソースコードの記述時に、データ型、エンディアン等のデバイス特性を意識することなく、実行可能プログラムによって制御されるデバイスに適切な実行可能プログラムが自動で作成される。
【符号の説明】
【００６３】
１０…パソコン
１０…実行可能プログラム作成装置
１１…実行可能プログラム作成部
１２…操作入力部
１３…通信制御部
１４…表示部
２１…コンパイラ
２２…ライブラリマネージャ
２３…デバイス変数テーブル
２４…プログラムエディタ
２５…ＦＵＮＣＴＩＯＮ置換ルールエディタ
９０…システム
１１１…ＣＰＵ
１１２…記憶部
２１１…構文解析器
２１２…ＦＵＮＣＴＩＯＮ置換器
２１２…置換器
２１３…コード生成器
２１４…アセンブラ
２１５…ＦＵＮＣＴＩＯＮ置換ルールテーブル
９００…ネットワーク
９１０…産業用コントローラ
９２１…デバイス
９２２…デバイス
【図１】
2018041373.tif 000003
【図２】
2018041373.tif 000004
【図３】
2018041373.tif 000005
【図４】
2018041373.tif 000006
【図５】
2018041373.tif 000007
【図６】
2018041373.tif 000008
【図７】
2018041373.tif 000009
【図８】
2018041373.tif 000010
【図９】
2018041373.tif 000011
【図１０】
2018041373.tif 000012
【図１１】
2018041373.tif 000013