(57)【特許請求の範囲】
【請求項１】
複数種類の記法に対応して複数種類の作画シンボルを定義する作画シンボル編集部、この作画シンボル編集部で定義された作画シンボルを用いて図式表現された制御フローを作成するよう構成された制御フロー編集部、制御フローからソースプログラムに翻訳するプログラム生成規則を、上記複数種類の記法に対応して複数種類作成するプログラム生成規則編集部、上記複数種類の記法の内、一種類を選択する制御フロー選択処理部、及び上記制御フロー編集部で作成され、上記制御フロー選択処理部により選択された記法に対応する制御フローを、上記制御フロー選択処理部により選択された記法に対応するプログラム生成規則にしたがってソースプログラムに翻訳するトランスレータを備えたことを特徴とするプログラム自動生成装置。
【請求項２】
制御用プログラミング言語の種別が異なる複数のマシン種別から、いずれかのマシン種別を選択するマシン種別選択処理部を備え、プログラム生成規則編集部は、制御フローからソースプログラムに翻訳するプログラム生成規則を上記マシン種別毎に作成し、上記トランスレータは、上記マシン種別選択処理部により選択されたマシン種別に応じたプログラム生成規則にしたがって上記制御フローを上記ソースプログラムに翻訳することを特徴とする請求項１記載のプログラム自動生成装置。
【請求項３】
ソースプログラムを機械語に翻訳するコンパイラを備えたことを特徴とする請求項１または請求項２記載のプログラム自動生成装置。
【請求項４】
コンパイラは、プログラムの変数とメモリアドレスとの対応を記憶するメモリ割付情報ファイルを作成し、コンパイル時には、上記メモリ割付情報ファイルを参照して、同一のプログラム変数には同一のメモリアドレスを割付けることを特徴とする請求項３記載のプログラム自動生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、制御システムに用いられるプログラムの自動生成装置に関するものである。
【０００２】
【従来の技術】
図１３は、例えば特開平２−２７７１２６号公報に示された従来のプログラム自動生成装置の構成図である。
図において、１は制御フローを図式表現で入力編集する手段を提供する制御フロー編集部、２は制御フロー編集部１で作成される作画情報の作画情報ファイル、３は作画情報を制御用プログラミング言語のソースプログラムに変換するトランスレータ、４はトランスレータ３が出力する制御用プログラミング言語のソースファイル、５はソースファイル４を機械語に翻訳するコンパイラ、６はコンパイラ５が出力するオブジェクトファイルである。
【０００３】
次に動作について説明する。
ユーザがＳＦＣ（シーケンシャルフローチャート）、計装フロー等の定められた記法にしたがって、制御フロー編集部１の機能を用い、制御フローを図式表現で入力すると作画情報ファイル２が作られる。この作画情報ファイル２はトランスレータ３によって、実行されるマシンに依存した特定の制御用プログラミング言語に変換され、ソースファイル４が作られる。次にソースファイル４はコンパイラ５によって機械語に翻訳され、オブジェクトファイル６が作られる。
【０００４】
【発明が解決しようとする課題】
従来のプログラム自動生成装置は、以上のように構成され、制御フロー編集部１は、特定の記法にしたがって制御フローを記述することを前提としており、制御フローの記法に拡張や変更がなされると使用できなくなるという問題があった。
また、トランスレータ３も、特定の記法にしたがった作画情報が与えられることが前提になるので、制御フローの記法毎に対応するトランスレータ３が必要となり、対象となる制御分野が限定されてしまうという問題があった。
【０００５】
また、トランスレータ３が生成する制御用プログラミング言語は、実行するマシンの種類によって異なる場合が多く、トランスレータ３を特定のマシン対応に特化せざるを得ず、マシンの種類が異なると全く別のプログラム自動生成装置が必要となってしまうという問題もあった。
また、実行するマシンが複数のプロセッサを共有メモリで結合しているマルチプロセッサ構成をとる場合、プロセッサ間のインタフェースを定義する手段がないため、共有メモリの割付が自動化できないという問題もあった。
【０００６】
更に、作画情報の少しの変更でもメモリ割付が変化してしまうために、メモリに格納されている情報が失われてしまう、といった問題点があった。
この発明は、上記のような課題を解決するためになされたものであり、制御フローの記法を拡張、変更可能なプログラム自動生成装置を得ることを第一の目的とする。
また、制御フローの記法が異なる複数の制御分野に対応できるプログラム自動生成装置を得ることを第二の目的とする。
また、複数の種類のマシンに対応したプログラミング言語を生成できるプログラム自動生成装置を得ることを第三の目的とする。
【０００７】
更に、マルチプロセッサの共有メモリの割付を自動的に行い得るプログラム自動生成装置を得ることを第四の目的とする。
また、作画情報を変更しても、メモリ割付が変化しないプログラム自動生成装置を得ることを第五の目的とする。
【０００８】
【課題を解決するための手段】
この発明に係わるプログラム自動生成装置においては、複数種類の記法に対応して複数種類の作画シンボルを定義する作画シンボル編集部、この作画シンボル編集部で定義された作画シンボルを用いて図式表現された制御フローを作成するよう構成された制御フロー編集部、制御フローからソースプログラムに翻訳するプログラム生成規則を、複数種類の記法に対応して複数種類作成するプログラム生成規則編集部、複数種類の記法の内、一種類を選択する制御フロー選択処理部、及び制御フロー編集部で作成され、制御フロー選択処理部により選択された記法に対応する制御フローを、制御フロー選択処理部により選択された記法に対応するプログラム生成規則にしたがってソースプログラムに翻訳するトランスレータを備えたものである。
【０００９】
また、制御用プログラミング言語の種別が異なる複数のマシン種別から、いずれかのマシン種別を選択するマシン種別選択処理部を備え、プログラム生成規則編集部は、制御フローからソースプログラムに翻訳するプログラム生成規則をマシン種別毎に作成し、トランスレータは、マシン種別選択処理部により選択されたマシン種別に応じたプログラム生成規則にしたがって制御フローをソースプログラムに翻訳するものである。
【００１１】
また、ソースプログラムを機械語に翻訳するコンパイラを備えたものである。
加えて、コンパイラは、プログラムの変数とメモリアドレスとの対応を記憶するメモリ割付情報ファイルを作成し、コンパイル時には、メモリ割付情報ファイルを参照して、同一のプログラム変数には同一のメモリアドレスを割付けるものである。
【００１２】
【発明の実施の形態】
実施の形態１．
以下、この発明の実施の形態１を図に基づいて説明する。
図１は、この発明の実施の形態１によるプログラム自動生成装置を示す構成図である。
図１において、１は制御フローを図式表現で入力編集する手段を提供する制御フロー編集部、２は制御フロー編集部１で作成される作画情報の作画情報ファイル、３は作画情報を制御用プログラミング言語のソースプログラムに変換するトランスレータ、４はトランスレータ３が出力する制御用プログラミング言語のソースファイル、５はソースファイル４を機械語に翻訳するコンパイラ、６はコンパイラ５が出力するオブジェクトファイルである。７は制御フローの記述に用いる作画シンボルと作画シンボル間の結合制約規則、及び作画シンボルが表す機能に対する設定情報の制約規則を入力編集する手段を提供する作画シンボル編集部、８は作画シンボル編集部７で作成される作画シンボル定義ファイル、９は作画シンボルに対応するプログラムの生成規則を入力し、編集する手段を提供するプログラム生成規則編集部、１０はプログラム生成規則編集部９で作成されるプログラム生成規則定義ファイルである。
【００１３】
図２は、この発明の実施の形態１によるプログラム自動生成装置の制御フロー編集部の概略動作を表すフロー図である。
図３は、この発明の実施の形態１によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
次に動作について、図２及び図３を用いて説明する。
【００１４】
ユーザが制御フローの編集画面を起動すると、制御フロー編集部１は作画シンボル編集部７で作成された作画シンボル定義ファイル８を参照して、編集機能に必要な情報を入力し（ステップＳ２１）、作画シンボルメニューを表示する（ステップＳ２２）。ユーザは編集画面上に表示された作画シンボルメニューに基づき、制御フローの作画編集作業（ステップＳ２３）を行う。
作画編集時、制御フロー編集部１において、作画シンボル定義ファイル８で与えられる作画シンボル間の結合制約規則や設定情報の制約規則が検査される（ステップＳ２４）。ユーザが作画編集した情報は作画情報ファイル２に出力され（ステップＳ２５）保存される。
【００１５】
トランスレータ３は、まずプログラム生成規則定義ファイル１０から、プログラム生成規則を入力し（ステップＳ３１）、次いで、作画情報ファイル２に格納された情報を入力し（ステップＳ３２）、これを元に、作画シンボルで表される機能の実行順序を決定する（ステップＳ３３）。次に作画シンボル毎に、プログラム生成規則に基づいて、制御用プログラミング言語に変換していき（ステップＳ３４）、個々の作画シンボルに対応したプログラムを合成して（ステップＳ３５）、ソースファイル４を出力する（ステップＳ３６）。
コンパイラ５は、ソースファイル４を機械語に翻訳し、オブジェクトファイル６を出力する。
【００１６】
実施の形態２．
図４は、この発明の実施の形態２によるプログラム自動生成装置を示す構成図である。
図において、１〜７、９は図１におけるものと同一のものである。８Ａ、８Ｂはそれぞれ記法Ａ、Ｂの対応する作画シンボル定義ファイル、１０Ａ、１０Ｂはそれぞれ記法Ａ、Ｂに対応するプログラム生成規則定義ファイル、１２はユーザが制御フローの記法種別を選択するための制御フロー選択処理部である。
【００１７】
実施の形態１は、作画シンボル定義ファイル８とプログラム生成規則定義ファイル１０を１種類しか扱えないが、図４に示すように、ユーザが制御フローの記法種別を選択するための制御フロー選択処理部１２を設け、制御フロー編集部１で制御フロー選択処理部１２より与えられた記法種別にしたがって、入力する作画シンボル定義ファイル８Ａ、８Ｂを切り替えるようにすれば、異なる記法種別の作画が可能となる。また、トランスレータ３においても、制御フロー選択処理部１２より与えられた記法種別にしたがって、使用するプログラム生成規則定義ファイル１０Ａ、１０Ｂを切り替えれば、異なる記法Ａ、Ｂの作画シンボルで記述されている作画情報ファイル２を元にして、制御用プログラミング言語に変換することができる。
【００１８】
図５は、この発明の実施の形態２によるプログラム自動生成装置の制御フロー編集部の概略動作を表すフロー図である。
図６は、この発明の実施の形態２によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
【００１９】
次に動作について、図５及び図６を用いて説明する。
ユーザが制御フローの編集画面を起動すると、制御フロー編集部１は制御フロー選択処理部１２を参照して、記法種別の判別を行う（ステップＳ５１）。記法Ａであれば、作画シンボル編集部７で作成された作画シンボル定義ファイル８Ａを参照して、編集機能に必要な情報を入力し（ステップＳ５２）、作画シンボルメニューを表示する（ステップＳ５３）。記法Ｂであれば、作画シンボル編集部７で作成された作画シンボル定義ファイル８Ｂを参照して、編集機能に必要な情報を入力し（ステップＳ５４）、作画シンボルメニューを表示する（ステップＳ５５）。次いで、ユーザは編集画面上に表示された作画シンボルメニューに基づき、制御フローの作画編集作業（ステップＳ２３）を行って、再び記法種別の判別を行い（ステップＳ５６）、記法ＡまたはＢによって、作画編集時、制御フロー編集部１において作画シンボル定義ファイル８Ａまたは８Ｂで与えられるシンボル間の結合制約規則や設定情報の制約規則が検査される（ステップＳ５７またはステップＳ５８）。ユーザが作画編集した情報は、作画情報ファイル２に出力され（ステップＳ２５）保存される。
【００２０】
トランスレータ３は、まず制御フロー選択処理部１２を用いて、記法種別の判別を行い（ステップＳ６１）、記法Ａまたは記法Ｂによってプログラム生成規則定義ファイル１０Ａまたは１０Ｂからプログラム生成規則を入力し（ステップＳ６２またはステップＳ６３）、次いで、作画情報ファイル２に格納された情報を入力し（ステップＳ３２）、これを元に、作画シンボルで表される機能の実行順序を決定する（ステップＳ３３）。次に作画シンボル毎にプログラム生成規則定義ファイル１０Ａまたは１０Ｂに基づいて制御用プログラミング言語に変換していき（ステップＳ３４）、個々の作画シンボルに対応したプログラムを合成して（ステップＳ３５）、ソースファイル４を出力する（ステップＳ３６）。
【００２１】
実施の形態３．
図７は、この発明の実施の形態３によるプログラム自動生成装置を示す構成図である。
図において、１〜９は図１におけるものと同一のものである。１０Ｃ、１０Ｄはマシン種別Ａ、Ｂにそれぞれ対応するプログラム生成規則定義ファイル、１３はユーザが作成したプログラムを実行するマシンを選択するためのマシン種別選択処理部である。
【００２２】
実施の形態１では、生成の対象となる制御用プログラミング言語は１種類であることを前提としていたが、実施の形態３では、図７に示すようにユーザが作成したプログラムを実行するマシンを選択するためのマシン種別選択処理部１３を設け、トランスレータ３でマシン種別選択処理部１３より与えられたマシン種別Ａ、Ｂに応じて、使用するプログラム生成規則定義ファイル１０Ｃ、１０Ｄを切り替えることにより、制御用プログラミング言語の種別が異なるマシンのオブジェクトでも生成することが可能となる。
【００２３】
図８は、この発明の実施の形態３によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
次に、動作について図８を用いて説明する。
トランスレータ３は、まずマシン種別選択処理部１３により、マシン種別Ａ、Ｂの判別を行い（ステップＳ８１）、マシン種別Ａまたはマシン種別Ｂによってプログラム生成規則定義ファイル１０Ｃまたは１０Ｄから、プログラム生成規則を入力し（ステップＳ８２またはステップＳ８３）、次いで、作画情報ファイル２に格納された情報を入力し（ステップＳ３２）、これを元に、作画シンボルで表される機能の実行順序を決定する（ステップＳ３３）。次に作画シンボル毎にプログラム生成規則定義ファイル１０Ｃまたは１０Ｄに基づいて、制御用プログラミング言語に変換していき（ステップＳ３４）、個々の作画シンボルに対応したプログラムを合成して（ステップＳ３５）、ソースファイル４を出力する（ステップＳ３６）。
【００２４】
実施の形態４．
図９は、この発明の実施の形態４によるプログラム自動生成装置を示す構成図である。図において、１、３、５〜１０は図１におけるものと同一のものである。２Ａ、２ＢはそれぞれプロセッサＡ、Ｂに対応する作画情報ファイル、４Ａ、４ＢはそれぞれプロセッサＡ、Ｂに対応するソースファイルである。１４はプロセッサ間のインタフェースを定義し、編集するためのプロセッサ間インタフェース編集部、１５はプロセッサ間インタフェース編集部１４によって定義されたプロセッサ間インターフェース定義情報ファイルである。
【００２５】
実施の形態１では、単一のプロセッサ用のオブジェクトファイル６を生成することを前提としていたが、実施の形態４では、図９に示すように、制御フロー編集部１でプロセッサＡにて実行する制御フローの作画情報ファイル２Ａと、プロセッサＢにて実行する制御フローの作画情報ファイル２Ｂを個別に作成できるようにすると共に、プロセッサ間のインタフェースを定義し、編集するためのプロセッサ間インタフェース編集部１４を設けることにより、制御フローを複数のプロセッサを共有メモリで結合しているマルチプロセッサ対応に拡張することができる。また、トランスレータ３にて、定義された各インターフェースに対してメモリを自動的に割り付けることにより、プロセッサＡ−Ｂ間のインターフェースを含むプロセッサＡのソースファイル４ＡとプロセッサＢのソースファイル４Ｂを個別に生成することができる。言い換えれば、複数のプロセッサを共有メモリで結合しているマルチプロセッサ構成をとるマシンのオブジェクトでもメモリの割付を自動化できることになる。
【００２６】
図１０は、この発明の実施の形態４によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
次に動作について図１０を用いて説明する。
トランスレータ３は、まずプロセッサ間インタフェース定義情報ファイル１５からプロセッサ間インタフェース定義情報を入力し（ステップＳ１０１）、次いで、プロセッサ間インタフェースに共有メモリを割付ける（ステップＳ１０２）。プログラム生成規則定義ファイル１０からプログラム生成規則を入力する（ステップＳ１０３）。次いでプロセッサＡまたはプロセッサＢによって、フローが分かれる。
【００２７】
プロセッサＡの場合は、作画情報ファイル２Ａを用い、作画情報ファイル２Ａに格納された情報を入力し（ステップＳ１０４）、これを元に、作画シンボルで表される機能の実行順序を決定する（ステップＳ１０５）。次に作画シンボル毎にプログラム生成規則に基づいて制御用プログラミング言語に変換していき（ステップＳ１０６）、個々の作画シンボルに対応したプログラムを合成して（ステップＳ１０７）、ソースファイル４Ａを出力する（ステップＳ１０８）。
【００２８】
プロセッサＢの場合は、作画情報ファイル２Ｂを用い、作画情報ファイル２Ｂに格納された情報を入力し（ステップＳ１０９）、これを元に、作画シンボルで表される機能の実行順序を決定する（ステップＳ１１０）。次に作画シンボル毎にプログラム生成規則に基づいて、制御用プログラミング言語に変換していき（ステップＳ１１１）、個々の作画シンボルに対応したプログラムを合成して（ステップＳ１１２）、ソースファイル４Ｂを出力する（ステップＳ１１３）。
【００２９】
実施の形態５．
図１１は、この発明の実施の形態５によるプログラム自動生成装置を示す構成図である。
図において、１〜１０は図１におけるものと同一のものである。１６は作画シンボルを展開したプログラムの各変数とメモリアドレスの対応を記憶するメモリ割付情報ファイルである。
【００３０】
図１１に示すように、コンパイラ５にて、プログラムの各変数とメモリアドレスの対応をメモリ割付情報ファイル１６に記憶するようにし、前回と同一の変数が存在する場合には、同一のメモリアドレスを割り付け、前回と同じ変数が存在しない場合には、新しいメモリアドレスを割付けるようにすることによって、一部の制御フローを変更しても、変更していないシンボルに関連する変数のアドレスが変化しないようにすることが可能である。したがって、前回のプログラムで運転中の制御情報が失われることなく、プログラムの変更が可能となる。
【００３１】
図１２は、この発明の実施の形態５によるプログラム自動生成装置のコンパイラのメモリ割付動作を表すフロー図である。
次に、動作について図１２を用いて説明する。
コンパイラ５は、まずメモリ割付情報ファイル１６から、メモリ割付情報を入力する（ステップ１２１）。次いでプログラムの全ての変数について（ステップＳ１２２）、前回と同じ変数があるかどうかをチェックし（ステップＳ１２３）、同じ変数が有る場合は、変数に元のアドレスを割付け（ステップＳ１２５）、同じ変数がない場合は、変数に新しいアドレスを割付ける（Ｓ１２４）。そして、全変数にアドレスを割付けて終了する（ステップＳ１２６）。
【００３２】
【発明の効果】
この発明は、以上説明したように構成されているので、以下に示すような効果を奏する。
複数種類の記法に対応して複数種類の作画シンボルを定義する作画シンボル編集部、この作画シンボル編集部で定義された作画シンボルを用いて図式表現された制御フローを作成するよう構成された制御フロー編集部、制御フローからソースプログラムに翻訳するプログラム生成規則を、複数種類の記法に対応して複数種類作成するプログラム生成規則編集部、複数種類の記法の内、一種類を選択する制御フロー選択処理部、及び制御フロー編集部で作成され、制御フロー選択処理部により選択された記法に対応する制御フローを、制御フロー選択処理部により選択された記法に対応するプログラム生成規則にしたがってソースプログラムに翻訳するトランスレータを備えたので、制御フローの記法が異なる複数種類の制御分野に対応できる。
【００３４】
また、制御用プログラミング言語の種別が異なる複数のマシン種別から、いずれかのマシン種別を選択するマシン種別選択処理部を備え、プログラム生成規則編集部は、制御フローからソースプログラムに翻訳するプログラム生成規則をマシン種別毎に作成し、トランスレータは、マシン種別選択処理部により選択されたマシン種別に応じたプログラム生成規則にしたがって制御フローをソースプログラムに翻訳するので、制御用プログラミング言語の種別が異なるマシン種別毎にソースプログラムを作成することができる。
【００３５】
また、ソースプログラムを機械語に翻訳するコンパイラを備えたので、ソースプログラムに対応した機械語を作成することができる。
加えて、コンパイラは、プログラムの変数とメモリアドレスとの対応を記憶するメモリ割付情報ファイルを作成し、コンパイル時には、メモリ割付情報ファイルを参照して、同一のプログラム変数には同一のメモリアドレスを割付けるので、制御フローを変更してもメモリ割付が変化しないようにすることができる。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるプログラム自動生成装置を示す構成図である。
【図２】  この発明の実施の形態１によるプログラム自動生成装置の制御フロー編集部の概略動作を表すフロー図である。
【図３】  この発明の実施の形態１によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
【図４】  この発明の実施の形態２によるプログラム自動生成装置を示す構成図である。
【図５】  この発明の実施の形態２によるプログラム自動生成装置の制御フロー編集部の概略動作を表すフロー図である。
【図６】  この発明の実施の形態２によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
【図７】  この発明の実施の形態３によるプログラム自動生成装置を示す構成図である。
【図８】  この発明の実施の形態３によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
【図９】  この発明の実施の形態４によるプログラム自動生成装置を示す構成図である。
【図１０】  この発明の実施の形態４によるプログラム自動生成装置のトランスレータの概略動作を表すフロー図である。
【図１１】    この発明の実施の形態５によるプログラム自動生成装置を示す構成図である。
【図１２】  この発明の実施の形態５によるプログラム自動生成装置におけるコンパイラのメモリアドレス割付動作を表すフロー図である。
【図１３】  従来のプログラム自動生成装置を示す構成図である。
【符号の説明】
１  制御フロー編集部、  ２  作画情報ファイル、  ３  トランスレータ、
４  ソースファイル、  ５  コンパイラ、  ６  オブジェクトファイル、
７  作画シンボル編集部、  ８  作画シンボル定義ファイル、
９  プログラム生成規則編集部、  １０  プログラム生成規則定義ファイル、
１２  制御フロー選択処理部、  １３  マシン種別選択処理部、
１４  プロセッサ間インタフェース編集部、
１５  プロセッサ間インタフェース定義情報ファイル、
１６  メモリ割付情報ファイル。
【図１】
0003697351.tif 000002
【図２】
0003697351.tif 000003
【図３】
0003697351.tif 000004
【図４】
0003697351.tif 000005
【図５】
0003697351.tif 000006
【図６】
0003697351.tif 000007
【図７】
0003697351.tif 000008
【図８】
0003697351.tif 000009
【図９】
0003697351.tif 000010
【図１０】
0003697351.tif 000011
【図１１】
0003697351.tif 000012
【図１２】
0003697351.tif 000013
【図１３】
0003697351.tif 000014