説明

プログラム自動生成装置、自動生成方法、および、プログラム

【課題】リソースや演算時間の制約が厳しい組込み用途のプログラム開発において当該制約を受けにくいプログラム自動生成装置、自動生成方法、および、プログラムを提供する。
【解決手段】ユーザにより制御ブロック図を用いた仕様記述がなされる(S1)。次に、仕様記述された制御ブロック図を基に接続情報の抽出を行う(S2)。そして接続情報にフィードバックループが含まれるかを検出する(S3)。当該チェックで接続情報にフィードバックループが含まれていなければ、通常対応による制御処理コードを自動生成する(S4)。またフィードバックループが含まれていれば、FB対応による制御処理コードを自動生成する(S5〜S7)。全接続情報について制御処理コードを抽出していればステップS9に進み、いなければステップS3に戻る。FB対応制御処理コード生成処理により生成された制御処理コードと通常対応制御処理コードを合成して出力する(S9)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、開発者や利用者などが作成した図形式の仕様に従ったプログラムソースコードを自動生成するプログラム自動生成装置、自動生成方法、および、プログラムに関する。
【背景技術】
【0002】
従来、ブロック図の形式で記述されたプログラム仕様をもとにプログラムソースコードを自動生成する技術は、ビジュアルプログラミング技術として従来から一般的に制御分野などのプログラム開発で汎く利用されている。その中で、フィードバックループを含んだブロック図のコード生成に関しては、例えば下記特許文献1で、演算順序を決定する手法が提案されている。
【0003】
図8は、制御ブロック図にフィードバックループが含まれている場合の従来の解決手法の一例を示す図である。図8においては、特許文献1に示されているように、自動生成対象の制御ブロック図にフィードバックループ(優先ブロックD)が含まれている場合、演算順序が正しく決定できない(開発者が望んだブロックの演算順A→B→D→Cが、A→D→B→Cと自動生成されてしまう)場合にブロック作成順序を図8の下右部に示すよう設定して、開発者の望むブロックの演算順序になるようにしている。
【0004】
この場合、特許文献1に示された従来の解決手法で正しい演算順序A→B→D→Cが決定されたとすると、生成されるプログラムのソースコードは、一般的な高級プログラミング言語、例えばC言語、を使って表記してみると、一般的には、図9に示されるようになる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−66847号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、図9のコードが実際に実行されると、図9に下線で示している「Dの出力」は、演算D()が実行されて値が実際に確定する前に、演算B()の実行で「Dの出力」が参照されることになってしまう、という問題点がある。
【0007】
制御ブロック図で記述される制御演算は、通常一定周期で繰り返し実行されることで連続的な制御を実現するものなので、「Dの出力」が処理終了後も保持されるならば、演算B()で参照される「Dの出力」は1回前の処理実行時に演算D()で確定した値になるので、制御遅れはあるものの制御演算は成立する。しかし、そのためにはすべての演算出力はそれぞれ異なる記憶領域に格納されるようコードが生成される必要があり、そのために高速な一時記憶手段(CPUの汎用レジスタなど)が活用できなくなってしまうという問題があるので、メモリリソースおよび演算時間の制約の厳しい組込み用途のプログラム開発ではコストパフォーマンスから見てデメリットとなる。
【0008】
そこで本発明は、リソースや演算時間の制約が厳しい組込み用途のプログラム開発において当該制約を受けにくいプログラム自動生成装置、自動生成方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために本発明は、変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述する制御ブロック図仕様記述手段と、前記制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成する制御処理コード自動生成手段を有するプログラム自動生成装置において、前記制御処理コード自動生成手段は、前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出する接続情報抽出手段と、該接続情報抽出手段が前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成する通常対応制御処理コード生成手段と、前記接続情報抽出手段が前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成する前回値変数定義自動生成手段、該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成する前回値保存コード自動生成手段、および、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成する前回値入力コード自動生成手段を有するフィードバック対応制御処理コード生成手段と、前記フィードバック対応制御処理コード生成手段によって前記自動生成された前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記通常対応制御処理コード生成手段によって前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する制御処理コード合成手段と、を備える、ことを特徴とする。
【0010】
また本発明は、変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述し、該制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成するプログラム自動生成方法において、前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出し、前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成し、前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成し、次いで該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成し、さらに、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成し、
前記接続関係を示す情報に前記フィードバックループが含まれていた場合に前記自動生成される前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する、ことを特徴とする。
【0011】
また本発明は、変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述し、該制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成するプログラム自動生成プログラムにおいて、コンピュータに、前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出する機能、前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成する機能、前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成し、次いで該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成し、さらに、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成する機能、前記接続関係を示す情報に前記フィードバックループが含まれていた場合に前記自動生成される前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する機能、を実現させることを特徴とする。
【発明の効果】
【0012】
本発明によるプログラム自動生成装置によれば、従来の手法ではすべての演算の出力変数を保持しなければ正しい動作が行われないような、フィードバックループが含まれている制御ブロック図であっても、フィードバックループを検出してその部分の演算結果のみを前回値変数として保持し、残りのフィードバックループを検出しない部分は一次変数で処理する制御処理コードを生成することが可能となり、リソースの制約が厳しい組込み分野のプログラム開発において格別の有利性を持つものである。
【図面の簡単な説明】
【0013】
【図1】本発明の実施形態に係るプログラム自動生成装置のシステム処理機能を示すブロック図である。
【図2】本発明の実施形態に係るプログラム自動生成装置のハードウェア構成を示すブロック図である。
【図3】本発明の実施形態に係るプログラム自動生成装置の動作を説明するためのフローチャートである。
【図4】本発明の実施形態に係るプログラム自動生成装置で記述される制御ブロック図(フィードバックループが含まれていない場合)の例を示す図である。
【図5】本発明の実施形態に係るプログラム自動生成装置でフィードバックループが含まれていない場合に生成されるソースコードの例を示す図である。
【図6】本発明の実施形態に係るプログラム自動生成装置で記述される制御ブロック図(フィードバックループが含まれている場合)の例を示す図である。
【図7】本発明の実施形態に係るプログラム自動生成装置でフィードバックループが含まれている場合に生成されるソースコードの例を示す図である。
【図8】制御ブロック図にフィードバックループが含まれている場合の従来の解決手法の一例を示す図である。
【図9】図8に示された従来の解決手法の一例を一般的な高級プログラミング言語を使ってソースコードとして表記した図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について、詳細に説明する。
図1は、本発明の実施形態に係るプログラム自動生成装置のシステム機能構成を示すブロック図である。図1では制御の流れを白抜き矢印で示し、また情報の流れを破線矢印で示している。
【0015】
入力装置20を操作するユーザ(利用者)は、プログラム自動生成装置1200を用いて、制御ブロック図を記述することができる。プログラム自動生成装置1200は、記述された制御ブロック図からプログラムソースコードを自動的に生成する。より具体的に説明すれば、図1において、ユーザは入力装置20からプログラム自動生成装置1200を起動して、制御ブロック図仕様記述手段1210を動作させ、制御ブロック図仕様記述手段1210を用いてプログラムの仕様を制御ブロック図で記述する。ここでいう制御ブロック図は、例えば図4に示すように、変数入力端子要素(in_x)101,変数入力端子要素(in_y)102から出発して、いくつかの演算要素(図4に示すOp1演算要素103、加算要素104)を経て変数出力端子要素(out_a)105に至るまでの処理の流れを線で接続することで表現されるものである。
【0016】
制御ブロック図仕様記述手段1210は、図4に示すような構成要素である変数入力端子要素、変数出力端子要素や演算要素などの記述手段をあらかじめ持っていて、ユーザはこれらの記述手段を入力装置20のモニタ画面上で配置、接続していくことでプログラムの仕様を記述して制御ブロック図を完成させる。制御ブロック図で記述されたプログラムの仕様は、制御処理コード自動生成手段2200に送られ、そこで変数入力端子要素で表現される変数の参照を出発点として、接続関係を示す情報(以下では単に“接続情報”ということがある)に従って演算子要素の演算を順次実行していった結果を変数出力端子要素で表現される変数に代入するまでの一連の処理を、一般的な高級プログラミング言語でいうところの関数またはサブルーチンとしてまとめた形のソースコードとして出力する。出力されるソースコードは、例えば一般的な高級プログラミング言語の一つであるC言語を用いると、図5に示すようなコード形式で表される。
【0017】
ここで本発明の実施形態に係るプログラム自動生成装置のハードウェア構成について説明する。図2は、本発明の実施形態に係るプログラム自動生成装置のハードウェア構成を示すブロック図である。プログラム自動生成装置1100は、CPU(Central Processing Unit)1101によって装置全体が制御されている。CPU1101には、バス1106を介してRAM(Random Access Memory)1102、ハードディスクドライブ(HDD:Hard Disc Drive)1103、グラフィック処理装置1104および入力インタフェース1105が接続されている。
【0018】
RAM1102には、CPU1101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM1102には、CPU1101による処理に必要な各種データが格納される。HDD1103には、OSプログラムやアプリケーションプログラムが格納される。
【0019】
グラフィック処理装置1104には、モニタ21が接続されている。グラフィック処理装置1104は、CPU1101からの命令に従って、画像をモニタ21の画面に表示させる。入力インタフェース1105には、キーボード22とマウス23とが接続されている。入力インタフェース1105は、キーボード22やマウス23から送られてくる信号を、バス1106を介してCPU1106に送信する。
【0020】
以上のようなハードウェア構成によって、上述した又は以下に示すような本実施形態の処理機能を実現することができる。
次に、本発明の実施形態に係るプログラム自動生成装置のシステム処理機能についてさらに説明する。いま図6に示すような制御ブロック図をユーザがキーボード22やマウス23を使用して仕様記述したとすると、本発明のプログラム自動生成装置では、この制御ブロック図にフィードバックループ(以下では単に“FB”と略記することがある)が含まれているか否かを接続情報抽出手段2210で調べる。接続情報抽出手段2210は、上述した特許文献1の0007段落や0008段落などに記載されているように、出力側から入力側に向かってブロックを探索して、入力側から出力側方向に演算順序の設定を試みるものである。その場合、出力側から入力側に向かってブロックを探索して、入力側から出力側に一方向に演算順序を設定できるものは、フィードバックループ(FB)が含まれていないケースであり、もしフィードバックループ(FB)が含まれているケースで入力側から出力側に一方向に演算順序を設定してしまうと異なるソースコードが自動生成されることになる。
【0021】
そこで、本発明の実施形態においては、接続情報抽出手段2210において、フィードバックループ(FB)が含まれているか否かを検出するようにしている。すなわち、FBを検出しなければ、上述した特許文献1の0007段落や0008段落などに記載されているような既存技術でもって、入力側から出力側に一方向に演算順序を設定できるので、仕様記述された制御ブロック図を通常対応制御処理コード生成手段2220に渡して、通常対応の制御処理コードを生成する。つまり、FBが含まれていない制御ブロック図は、処理の流れが一例として図4に示すようになり、変数入力端子要素(in_x)101,変数入力端子要素(in_y)102から出発して、Op1演算要素103、加算要素104を経て変数出力端子要素(out_a)105に至る線で表現されるものとなり、これは通常対応の制御ブロック図の形式として解釈されて通常対応制御処理コード生成手段2220が既存の技術を用いて、例えばC言語を使用して自動的に制御処理コードを図5のような形式で出力することになる。なおこの場合、後述するFB対応制御処理コード生成手段2230からの出力が無いため、制御処理コード合成生成手段2240からの出力は、通常対応制御処理コード生成手段2220の出力がそのまま図5のような形式で出力されることとなる。
【0022】
次に接続情報抽出手段2210がFBを検出した場合には、仕様記述された制御ブロック図をFB対応制御処理コード生成手段2230に渡す。FB対応制御処理コード生成手段2230は、検出したFBが含まれる接続情報を処理するため、先ず前回値変数定義自動生成手段2231において、前回値の変数定義を自動的に生成する。次いで、前回値保存コード自動生成手段2232において、定義された前回値変数に対して、フィードバックループ(FB)の出力側である演算要素の演算結果を前回値変数に代入するためのコードを前回値保存コードとして自動生成する。そして前回値入力コード自動生成手段2233において、フィードバックループ(FB)の入力側である演算要素の入力の一方に前回値変数の値を代入するコードを前回値入力コードとして自動生成する。その上でこれら自動生成した前回値変数定義、前回値保存コード、前回値入力コードを制御処理コード合成手段2240に出力する。つまり、FB対応制御処理コード生成手段2230は、フィードバックループ(FB)が含まれる接続情報を処理するために前回値変数定義、前回値保存コード、前回値入力コードを自動生成してこれらを制御処理コード合成手段2240に渡す。
【0023】
FB対応制御処理コード生成手段における処理を具体例に基づいて説明する。例えば、制御ブロック図にフィードバックループ(FB)が含まれる接続情報が抽出される図6に示されるケースの場合、Op2演算要素203の出力が、その前に演算される加算要素201の入力となるフィードバックループ(FB)が含まれているので、接続情報抽出手段2210においてFBが検出されて、FB対応制御処理コード生成手段2230に処理が渡される。FB対応制御処理コード生成手段2230では、検出されたフィードバックループ(FB)、すなわち演算要素203から加算要素201への接続に対して、前回値変数定義自動生成手段2231によって、前回値変数b_prevの定義が自動的に生成される(図7の(1)参照))。次に、前回値変数定義自動生成手段2231で定義された前回値変数b_prevに対して、前回値保存コード生成手段2232によって、フィードバックループ(FB)の出力側にあたる演算要素203の演算結果から前回値変数に代入するコード、すなわち前回値保存コード、が自動的に生成される(図7の(3)参照))。そして最後に、前回値入力コード生成手段2233によって、フィードバックループ(FB)の入力側にあたる加算要素201の入力の一方に前回値変数b_revの値を代入するコード、すなわち前回値入力コード、が自動的に生成される(図7の(2)参照))。
【0024】
以上までの処理で生成された制御処理コードついて制御処理コード合成手段2240は、最終的に一般的な高級プログラミング言語でいうところの関数またはサブルーチンとしてまとめた形のソースコード30を生成し出力する。すなわち、出力側から入力側に向かってブロックを探索して、入力側から出力側に一方向に演算順序を設定できるようなフィードバックループ(FB)が含まれていない場合には、通常対応制御処理コード生成手段2220によって出力される制御処理コードに基づいて、図5に示すような制御処理コードを出力し、また、出力側から入力側に向かってブロックを探索して、入力側から出力側に一方向に演算順序を設定できないようなフィードバックループ(FB)が含まれている場合には、FB対応制御処理コード生成手段2230によって出力されるFB対応制御処理コードと、通常対応制御処理コード生成手段2220によって出力されるフィードバックループ(FB)が含まれていない残りの部分、言い換えれば、図4に示されるような制御ブロック図で表現されることになる残りの部分に対する制御処理コードとを合成して、例えば一般的な高級プログラミング言語の一つであるC言語を使用して、図7に示すような制御処理コードを出力する。
【0025】
図3は、本発明の実施形態に係るプログラム自動生成装置の動作を説明するためのフローチャートである。図3においてステップを“S”と略記する。本発明の実施形態に係るプログラム自動生成装置の動作開始で、先ず、ユーザにより制御ブロック図を用いた仕様記述がなされる(ステップS1)。次に、プログラム自動生成装置は、仕様記述された制御ブロック図を基に接続情報の抽出を行う(ステップS2)。そして接続情報の抽出の過程で接続情報にフィードバックループ(FB)が含まれるかを検出する(ステップS3)。当該チェックで接続情報にフィードバックループ(FB)が含まれていないことを検出したならば、通常対応による制御処理コードを自動生成する(ステップS4)。
【0026】
ステップS3で接続情報にフィードバックループ(FB)が含まれていることを検出したならば、フィードバックループ(FB)対応による制御処理コードを自動生成する(ステップS5〜S7)。すなわち、まずフィードバックループ(FB)が検出された接続情報に対して前回値変数定義を自動生成する(ステップS5)。次いで、定義された前回値変数に対して、フィードバックループ(FB)の出力側にあたる演算要素の演算結果から前回値保存コードを自動生成する(ステップS6)。さらに、フィードバックループ(FB)の入力側にあたる加算要素の入力の一方に前回値変数の値を代入するための前回値入力コードを自動生成する(ステップS7)。
【0027】
そしてステップS8では、全接続情報について制御処理コードを抽出したかを判断する。その結果、全接続情報について制御処理コードを抽出していなければ、ステップS3に戻り、ステップS3以降ステップS7までを再度実行して残された接続情報についての制御処理コードの抽出を行うが、全接続情報について制御処理コードを抽出していればステップS9に進む。
【0028】
ステップS9では、以上までのFB対応制御処理コード生成処理により生成された制御処理コードと、FBが含まれていない残りの部分に対する通常対応制御処理コードとを合成して出力する(ステップS9)。そしてプログラム自動生成装置の処理を終了する。
【符号の説明】
【0029】
20 入力装置
21 モニタ
22 キーボード
23 マウス
101 ,102 ブロック図記述要素(変数入力端子要素)
103 ,203 ブロック図記述要素(演算要素)
104 ,201 ブロック図記述要素(加算要素)
105 ブロック図記述要素(変数出力端子要素)
202 ブロック図記述要素(分岐要素)
1100 プログラム自動生成装置
1101 CPU(Central Processing Unit)
1102 RAM(Random Access Memory)
1103 HDD(Hard Disc Drive)
1104 グラフィック処理装置
1105 入力インタフェース
1106 バス
1200 プログラム自動生成装置
1210 制御ブロック図仕様記述手段
2200 制御処理コード自動生成手段
2210 接続情報抽出手段
2220 通常対応制御処理コード生成手段
2230 FB対応制御処理コード生成手段
2231 前回値変数定義自動生成手段
2232 前回値保存コード自動生成手段
2233 前回値入力コード自動生成手段
2240 制御処理コード合成手段

【特許請求の範囲】
【請求項1】
変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述する制御ブロック図仕様記述手段と、前記制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成する制御処理コード自動生成手段を有するプログラム自動生成装置において、
前記制御処理コード自動生成手段は、
前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出する接続情報抽出手段と、
該接続情報抽出手段が前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成する通常対応制御処理コード生成手段と、
前記接続情報抽出手段が前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成する前回値変数定義自動生成手段、該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成する前回値保存コード自動生成手段、および、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成する前回値入力コード自動生成手段を有するフィードバック対応制御処理コード生成手段と、
前記フィードバック対応制御処理コード生成手段によって前記自動生成された前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記通常対応制御処理コード生成手段によって前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する制御処理コード合成手段と、
を備える、ことを特徴とするプログラム自動生成装置。
【請求項2】
変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述し、該制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成するプログラム自動生成方法において、
前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出し、
前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成し、
前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成し、次いで該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成し、さらに、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成し、
前記接続関係を示す情報に前記フィードバックループが含まれていた場合に前記自動生成される前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する、
ことを特徴とするプログラム自動生成方法。
【請求項3】
変数入出力端子要素と演算子要素を線によって接続することで制御処理の流れを表現する制御ブロック図の形式でプログラムの仕様を記述し、該制御ブロック図の接続関係を示す情報をもとに制御ブロック図で表現されたプログラムの仕様を満たすコンパイル可能なソースコードを自動生成するプログラム自動生成プログラムにおいて、
コンピュータに、
前記記述された制御ブロック図の接続関係を示す情報を出力側から入力側に探索して、該接続関係を示す情報に出力側の演算結果出力が入力側の演算の入力に直接接続されるフィードバックループが含まれているか否かを検出する機能、
前記接続関係を示す情報に前記フィードバックループが含まれていないことを検出した場合には、入力側から出力側に一方向に演算順序を設定して自動的に制御処理コードを生成する機能、
前記接続関係を示す情報に前記フィードバックループが含まれていることを検出した場合には、該検出した接続関係を示す情報に対して対応する前回値変数の定義コードを自動生成し、次いで該定義された前回値変数に対してフィードバックループの出力側の演算結果を前回値変数に代入するための保存コードを自動生成し、さらに、前記フィードバックループの入力の一方に前回値変数の値を代入する前回値入力コードを自動生成する機能、
前記接続関係を示す情報に前記フィードバックループが含まれていた場合に前記自動生成される前回値変数の定義コード、前回値保存コード及び前回値入力コード、並びに、前記接続関係を示す情報に前記フィードバックループが含まれていない場合に前記自動生成される通常対応制御処理コード、をそれぞれ受け取って合成し、前記制御ブロック図の接続関係を示す情報にフィードバックループが含まれていた場合であっても、自動的にプログラムの仕様を満たすソースコードを生成する機能、
を実現させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−22425(P2012−22425A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−158495(P2010−158495)
【出願日】平成22年7月13日(2010.7.13)
【出願人】(000005234)富士電機株式会社 (3,146)
【Fターム(参考)】