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