(57)【要約】【課題】  組み込み型マイコンに搭載可能なプログラムを生成することができるプログラム生成装置を得る。【解決手段】  プログラムを自動生成するために作成されたモデル２を、演算周期毎に分割した分割モデル２１をモデル分割手段１１により生成し、この分割モデル２１からプログラム生成手段１２によりソースプログラム２２にし、この各ソースプログラム２２を重複メモリ削除手段１３により重複メモリを削除した後、コンパイル手段１４によりコンパイルし、さらにリンク手段１５によりメモリ領域を割付けて、実行プログラムにし、各実行プログラムを予め作成された基幹プログラムにより呼び出して統合することにより、組込みマイコンで動作できるプログラム３を生成する。【選択図】図１
2006201841.tif 000002
【特許請求の範囲】
【請求項１】
予め作成されたモデルから、このモデルの機能毎に分割された分割モデルを作成するモデル分割手段、このモデル分割手段により作成された各分割モデルに基づきそれぞれソースプログラムを生成するプログラム生成手段、このプログラム生成手段により生成された各ソースプログラムをそれぞれコンパイルしてオブジェクトを作成するコンパイル手段、及びこのコンパイル手段により作成された各オブジェクトにメモリ領域を割付けることによりそれぞれ実行プログラムを作成すると共に、予め作成された基幹プログラムから上記各実行プログラムを呼び出すことにより上記各実行プログラムを統合するリンク手段を備えたことを特徴とするプログラム生成装置。
【請求項２】
上記モデル分割手段は、上記モデル内の演算処理ブロックの演算周期に基づき上記モデルを分割することを特徴とする請求項１記載のプログラム生成装置。
【請求項３】
上記モデル内で定義される変数は、一箇所にまとめて記述されていることにより、上記各分割モデルで同一の変数定義が行われることを特徴とする請求項１または請求項２記載のプログラム生成装置。
【請求項４】
上記モデル内で定義され、上記分割モデルで共通に使用される定数について、上記プログラム生成手段により生成された各ソースプログラムを基に、上記定数のメモリ領域への重複定義を削除したソースプログラムを作成する重複メモリ削除手段を備え、上記コンパイル手段は、上記重複メモリ削除手段により上記定数のメモリ領域への重複定義が削除された各ソースプログラムをコンパイルすることを特徴とする請求項１〜請求項３のいずれかに記載のプログラム生成装置。
【請求項５】
上記モデルには、既成のプログラムを結合する関数が設定されていることを特徴とする請求項１〜請求項４のいずれかに記載のプログラム生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラムを自動生成するために作成されたモデルに基づき、組み込み型マイコンに用いられるプログラムを自動生成するプログラム生成装置に関するものである。
【背景技術】
【０００２】
近年、コンピュータシステムに搭載されているプログラムの仕様をモデル化し、そのモデルから自動的にプログラムを作成する自動生成装置が開発されてきた。モデルは、ブロック線図、状態遷移図などで記述され、最近では、オブジェクト指向プログラムを自動生成するオブジェクト指向モデルが注目されている。
このモデルから実行プログラムを生成するプログラム生成装置では、従来は、モデルからソースプログラムを作成し、これをコンパイルしてオブジェクトを作成し、このオブジェクトにメモリ領域を割付けてコンピュータ上で実行可能なファイルを作成していた。
【０００３】
【特許文献１】特開２００２−９１７６２号公報（第４〜１０頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、従来のプログラムの自動生成装置は、汎用のパーソナルコンピュータやワークステーション上で実行されるプログラム開発を狙ったものであり、例えば組み込み型マイコン上で動作するプログラムの開発に、そのまま適用することができないという問題があった。
また、最近では高級なマイコンを使用した車両制御装置において、モデルからダウンロード可能な実行プログラムを生成するものも市販されている。この車両制御装置において、実行プログラムを生成するオブジェクト指向プログラムでは、定数がＲＡＭ領域に定義されるようメモリ割り付けがなされるため、ＲＡＭ領域の少ないマイコンへの応用が困難なことと、モデルの子プロセス内で使用されている定数と、別の子プロセスで使用される同一名の定数が、別の定数として扱われるため、例えば共通して各子プロセスにおいて用いられる定数のキャリブレーションをする際に、各子プロセス毎にそれぞれ設定する必要があった。
【０００５】
特許文献１には、モデルから自動生成されたプログラムの初期化処理を実行することによってメモリ領域に定数データが定義格納されるが、このとき、定数データの格納先アドレスに１対１に対応する変数記述などの識別記号を用いて、定数データ中のアドレス値を置き換え、このアドレス値が識別記号に変換された定数データに基づき、メモリ領域に依存しない定数データが予め定義されたソースプログラムを生成するようにして、少ないＲＡＭ領域しか持たない組み込み型マイコンへの搭載を可能にしたものが、記載されている。
特許文献１のものは、ＯＳなどを持たないためにプログラムのスケジューリング機能を持たない組込みマイコンへの搭載の問題や、子プロセスに共通に使用される定数についての上述の問題を解決するものではなかった。
【０００６】
その上、動作確認済みの既存プログラムを所定の演算周期、実行順序で流用するためには、グローバル参照可能な変数を定義し、メモリを用いてデータの受け渡しを行うことが一般的であったが、生成されたソースプログラムとは別に構成する場合は、タイミングがずれてしまうことが問題となる。
【０００７】
この発明は、上述のような課題を解決するためになされたものであり、組み込み型マイコンに搭載可能なスケジューリングされたプログラムを生成することができるプログラム生成装置を得ることを目的にしている。
【課題を解決するための手段】
【０００８】
この発明に係わるプログラム生成装置においては、予め作成されたモデルから、このモデルの機能毎に分割された分割モデルを作成するモデル分割手段、このモデル分割手段により作成された各分割モデルに基づきそれぞれソースプログラムを生成するプログラム生成手段、このプログラム生成手段により生成された各ソースプログラムをそれぞれコンパイルしてオブジェクトを作成するコンパイル手段、及びこのコンパイル手段により作成された各オブジェクトにメモリ領域を割付けることによりそれぞれ実行プログラムを作成すると共に、予め作成された基幹プログラムから各実行プログラムを呼び出すことにより各実行プログラムを統合するリンク手段を備えたものである。
【発明の効果】
【０００９】
この発明は、以上説明したように、予め作成されたモデルから、このモデルの機能毎に分割された分割モデルを作成するモデル分割手段、このモデル分割手段により作成された各分割モデルに基づきそれぞれソースプログラムを生成するプログラム生成手段、このプログラム生成手段により生成された各ソースプログラムをそれぞれコンパイルしてオブジェクトを作成するコンパイル手段、及びこのコンパイル手段により作成された各オブジェクトにメモリ領域を割付けることによりそれぞれ実行プログラムを作成すると共に、予め作成された基幹プログラムから各実行プログラムを呼び出すことにより各実行プログラムを統合するリンク手段を備えたので、スケジューリング機能を持たない組込みマイコンにおいても動作可能なプログラムを生成することができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
以下、本発明の実施の形態１について、図を用いて説明する。
図１は、この発明の実施の形態１によるプログラム生成装置を示す構成図である。
図１において、プログラム生成装置１には、プログラムを自動生成するためにプログラムの仕様をモデル化して別途作成されたモデル２が入力され、組込みマイコンで実行可能なファイルにした実行プログラム３を出力する。
プログラム生成装置１は、入力されたモデル２を各タスク処理毎に分割するモデル分割手段１１と、このモデル分割手段１１により分割されたモデル２１が入力され、この分割された各モデル２１からソースプログラム２２を作成するプログラム生成手段１２と、このプログラム生成手段１２により作成された各ソースプログラム２２を基にして、モデル内で定義され、分割モデルで共通に使用される定数について、この定数のメモリ領域への重複定義を削除したソースプログラム２３を作成する重複メモリ削除手段１３と、この重複メモリ削除手段１３により定数の重複定義が削除された各ソースプログラム２３をコンパイルしてオブジェクト２４を生成するコンパイル手段１４と、このコンパイル手段１４により生成された各オブジェクト２４にメモリ領域をリンクして、実行プログラムを作成すると共に、予め作成された基幹プログラムから、この作成された実行プログラムを呼び出すことにより各実行プログラムを統合するリンク手段１５とにより構成されている。
ＯＳを持たない組込みマイコンでは、スケジューリングできないため、リンク手段１５によるプログラムの統合は、予め作成された基幹プログラムから各プログラムを読出すことにより、スケジューリングして、実行プログラムとする。
【００１１】
次に、モデル２及びその分割されたモデル２１について説明する。
図２は、この発明の実施の形態１によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
図２において、演算モデルＭ０００は、プログラムを自動生成するために記述された演算モデルの全体を表している。定数Ｍ０１０は、演算モデルＭ０００内で使用されている定数Ａ、定数Ｂ、定数Ｃ、定数Ｄで、これらを間接的に参照させ、プログラム作成後の定数設定を容易にさせるために定義される。このため、演算モデルＭ０００内で使用される定数を、プログラム作成後に再設定しなければ、このような定義は不要になる。
【００１２】
入力処理ブロックＭ２００は、各種入力信号処理をまとめて記述され、入力処理ブロックＭ２００で演算された結果を次の演算処理ＡブロックＭ２１０に出力する。演算処理ＡブロックＭ２１０は、入力処理ブロックＭ２００の出力「イ」、「ロ」を入力とし、所定の演算を行い、演算結果を次の演算処理である出力処理ブロックＭ２２０に出力する。出力処理ブロックＭ２２０は、演算処理ＡブロックＭ２１０の出力信号「ハ」を入力とし、出力演算処理を行う。
演算処理ＢブロックＭ２３０は、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０と同じ周期で実行される。この演算処理ＢブロックＭ２３０は、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０で記述された演算と同じ周期で実行されるが、生成されたプログラムの実行順序については、プログラム生成装置による。
【００１３】
演算処理ＣブロックＭ３００は、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０や、演算処理ＢブロックＭ２３０とは別の周期で実行される。この演算処理ＣブロックＭ３００の演算周期を、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０や、演算処理ＢブロックＭ２３０のｎ倍に設定したり、全く別の独立した演算周期で設定する記述や特定の条件が成立した時にのみ実行するような設定が可能である。
【００１４】
変数Ｍ０２０は、演算モデルＭ０００内で使用される変数Ａ、変数Ｂ、変数Ｃで、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０、演算処理ＢブロックＭ２３０や、演算処理ＣブロックＭ３００内で定義することも、それらの子プロセス内に定義することも可能であるが、ここでは、演算モデルＭ０００の最上位階層で定義する。
【００１５】
次に、図２の動作について説明する。
演算モデルＭ０００は、演算全体を示しており、演算周期などの情報が定義される。入力信号「イ」および「ロ」を入力処理ブロックＭ２００で正規化し、演算処理ＡブロックＭ２１０に出力する。演算処理ＡブロックＭ２１０内では、それら入力信号「イ」および「ロ」を用いて、制御アルゴリズムを四則演算等のブロックを用いて記述し、演算結果を出力信号「ハ」として出力処理ブロックＭ２２０に出力する。出力処理ブロックＭ２２０は、図示しないポート出力などの出力器や表示器あるいは通信器などを用いて指示される。
また、演算処理ＢブロックＭ２３０は、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０と同じ制御周期で実行される制御アルゴリズムや入出力処理が記述されている。
演算処理ＣブロックＭ３００は、入力処理ブロックＭ２００、演算処理ＡブロックＭ２１０、出力処理ブロックＭ２２０や演算処理ＢブロックＭ２３０とは別の演算周期で実行される制御アルゴリズムや入出力処理が記述されている。
【００１６】
上記のようなモデルを基にプログラムを生成する方法を以下に説明する。
従来のプログラム生成装置により生成されるプログラムは、パーソナルコンピュータやワークステーション用プログラムの開発を狙っており、オペレーティングシステム上で動作することを前提にプログラムが生成される。また、オペレーティングシステムにおいても固有のスケジュール管理を有するため、プログラム生成装置が対応していないオペレーティングシステムやオペレーティングシステムを搭載しないプログラム開発において自動生成プログラムを用いることは困難であった。
このため、この発明では、モデルを分割することにより、組込み型マイコンに搭載されるプログラムを生成するようにしたものである。
【００１７】
図３は、図２のモデルを分割した分割モデルＡを示す図である。
図３では、演算周期が同一のブロックである、入力処理ブロックＭ２００と、演算処理ＡブロックＭ２１０と、出力処理ブロックＭ２２０と、演算処理ＢブロックＭ２３０が含まれている。
図４は、図２のモデルを分割した分割モデルＢを示す図である。
図４では、演算周期が図３とは異なる演算処理ＣブロックＭ３００が含まれ、定数Ｍ０１０及び変数Ｍ０２０は図３と同じである。
図３の分割モデルＡと、図４の分割モデルＢは、演算周期が同一のブロックのみでまとめた分割モデルとして、それぞれ編集したもので、独立したプログラムが生成できるように工夫されている。
【００１８】
図５は、図３の分割モデルＡのプログラム化を示す図である。
図５は、分割モデルＡを用いて、プログラム生成装置１により生成したもので、生成物は、分割モデルＡの演算モデルをプログラム化（分割モデルＡ＊ＳＡ０００）したものと、分割モデルＡの定数・変数定義部分をプログラム化（変数定義＊ＳＡ１００）したものとの大きく２つの構成で生成される。さらに変数定義＊ＳＡ１００は、シンボル定義部分ＳＡ１１０と設定値・初期値部分ＳＡ１２０とで構成される。
図６は、図４の分割モデルＢのプログラム化を示す図である。
図６は、分割モデルＢを用いた場合で、図５で説明した内容と同様である。
【００１９】
図７は、図５の変数定義Ａ＊を示す図である。
図７は、変数定義＊の構成を詳細に説明したもので、シンボル定義部分ＳＡ１１０は、さらに定数部分ＳＡ１１１と、変数部分ＳＡ１１２とで構成される。また、設定値・初期値部分ＳＡ１２０は、さらに定数部分ＳＡ１２１と、変数部分ＳＡ１２２とで構成され、それらはお互いに同じ構成の配置で定義される。
【００２０】
プログラム生成装置１により生成されたプログラムは、定数であっても変数として定義し、設定値の代入が容易にできるよう変数と設定値として定義され、定数・変数を同一構成の構造体でそれぞれ生成し、生成されたプログラム内では、それら変数・定数を使用するプロセスが実行される直前、あるいはプログラム全体の初期設定時に、変数として定義された定数あるいは変数に設定値・初期値を代入する方法をとる。
【００２１】
図８は、図５の変数定義Ａ＊のシンボル情報定義部を示す図である。
図９は、図５の変数定義Ａ＊の設定値・初期値定義部を示す図である。
図１０は、図６の変数定義Ｂ＊のシンボル情報定義部を示す図である。
図１１は、図６の変数定義Ｂ＊の設定値・初期値定義部を示す図である。
分割モデルＡ、Ｂは、それぞれ独立したプログラムとして生成されるため、分割モデルが複数存在する場合は、図８の変数定義部分の内容と、図１０の変数定義部分の内容が、また、図９の変数定義部分の内容と、図１１での変数定義部分の内容が、それぞれ重複するため、これらプログラム化された分割モデルＡ＊と分割モデルＢ＊をそのまま統合させると、コンパイル時にシンボル情報の重複定義エラーとなる。
【００２２】
次に、図１２により、プログラム化された分割モデルＡ、分割モデルＢの統合方法について説明する。
図１２は、図５の分割モデルＡを基にプログラム化したものと、図６の分割モデルＢを基にプログラム化したものとの統合を示す説明図である。
図１２において、分割モデルＡ＊’ＳＡ０１０は、分割モデルＡをプログラム化した分割モデルＡ＊を基に変数定義参照部分を変更したものである。分割モデルＢ＊’ＳＢ０１０は、分割モデルＢをプログラム化した分割モデルＢ＊を基に変数定義参照部分を変更したものである。
なお、ＳＡ１００、ＳＡ１１０、ＳＡ１２０、ＳＢ１００、ＳＢ１１０、ＳＢ１２０、ＳＢ１１１、ＳＢ１１２、ＳＢ１２１、ＳＢ１２２は図５〜図７に示されるものと同一のものである。
モデル統合変数定義ファイルＳＣ１００は、モデル統合変数定義のシンボル情報ＳＣ１１０及びモデル統合変数定義の設定値・初期値ＳＣ１２０を有している。
【００２３】
次に、図１２の動作について説明する。
まず分割モデルＡ＊’ＳＡ０１０は、分割モデルＡ＊の変数定義参照部分を、変数定義Ａ＊ＳＡ１００からモデル統合変数定義ＳＣ１００を参照するよう変更し、分割モデルＢ＊’ＳＢ０１０も同様に分割モデルＢ＊の変数定義参照部分を、変数定義Ｂ＊ＳＢ１００からモデル統合変数定義ＳＣ１００を参照するよう変更しておく。
次に、統合モデル変数定義ファイルＳＣ１００を作成する。統合モデル変数定義ファイルＳＣ１００は、シンボル情報定義部分ＳＣ１１０と、設定値・初期値定義部分ＳＣ１２０で構成され、シンボル情報定義部分ＳＣ１１０は、分割モデルＡを基にプログラム化された変数定義Ａ＊ＳＡ１００のシンボル情報定義部分ＳＡ１１０と、分割モデルＢを基にプログラム化された変数定義Ｂ＊ＳＢ１００のシンボル情報定義部分ＳＢ１１０の定数定義部分から構成される。
分割モデルの変数定義部分は、全て同様にプログラム化されるため、変数定義部分は、何れかの分割モデルのプログラム化された変数定義部分を用いるだけでよい。
同様に設定値・初期値定義部分ＳＣ１２０も、分割モデルＡを基にプログラム化された変数定義Ａ＊ＳＡ１００の設定値・初期値定義部分ＳＡ１２０と、分割モデルＢを基にプログラム化された変数定義Ｂ＊ＳＢ１００の設定値・初期値定義部分ＳＢ１２０の定数定義部分から構成される。
【００２４】
上記では、モデル統合変数定義ファイルＳＣ１００のシンボル情報定義部分ＳＣ１１０に、分割モデルＡのプログラム化されたシンボル情報定義部分ＳＡ１１０を用いたが、分割モデルＢのプログラム化されたシンボル情報定義部分ＳＢ１１０と分割モデルＡを基にプログラム化されたシンボル情報定義部分ＳＡ１１０の定数部分で構成されても同様の効果を奏する。
同様に、モデル統合変数定義ファイルＳＣ１００の設定値・初期値定義部分ＳＣ１２０に、分割モデルＡのプログラム化された設定値・初期値定義部分ＳＡ１２０を用いたが、分割モデルＢのプログラム化された設定値・初期値定義部分ＳＢ１２０と分割モデルＡを基にプログラム化された初期値・設定値定義部分ＳＡ１２０の定数部分で構成されても同様の効果を奏する。
【００２５】
図１３は、図１２のモデル統合変数定義内のシンボル情報定義部を示す図である。
図１４は、図１２のモデル統合変数定義内の設定値・初期値定義部を示す図である。
図１３、図１４は、上述のモデル統合変数定義ファイルの具体例を示す。
追加の記述部分の分割モデルを基にプログラム化された変数定義部分の定数定義部分を示す。このままでも分割モデルの統合は行えるが、図１３、図１４中に記載の重複部分の定数Ｃが二重定義されてしまう。これは上段に記述されている定数Ｃは、分割モデルＡを基にプログラム化された分割モデルＡ＊および分割モデルＡ＊’で用いられ、下段に記述されている定数Ｃは、分割モデルＢを基にプログラム化された分割モデルＢ＊および分割モデルＢ＊’で用いられることを意味している。定数Ｃは、もともと分割前は１つの定数であり、モデルを分割した際に別の定数Ｃとして定義されたものである。
【００２６】
プログラム生成装置により生成されたプログラムでは、パーソナルコンピュータやワークステーション用プログラム開発を狙っており、定数であっても変数として定義される。また、それらはモデル内で共通に扱う変数として定義されるのではなく、オブジェクト指向プログラムを自動生成するオブジェクト指向モデルにおいては同一名の定数であっても別の定数としてプログラム化される。
ところが、各ブロック内で共通で使用し、調整したい定数については、各モジュール毎に調整設定する必要がある。
これを行うものが、図１の重複メモリ削除手段１３である。
【００２７】
図１５は、図５の分割モデルＡを基にプログラム化したものと、図６の分割モデルＢを基にプログラム化したものとの統合を示す説明図である。
図１６は、図１５のモデル統合変数定義内のシンボル情報定義部を示す図である。
図１７は、図１５のモデル統合変数定義内の設定値・初期値定義部を示す図である。
図１５で、分割モデルＡ＊”ＳＡ０２０は、分割モデルＡ＊’ＳＡ０１０を基に変数定義参照部分を変更し、更に内部で用いる定数において共通で用いるものは定数名を分割モデルＡおよびＢを基にプログラム化された分割モデルＡ＊’、Ｂ＊’で共通となるよう変更されている。分割モデルＢ＊”ＳＢ０２０は、分割モデルＢ＊を基に変数定義参照部分を変更し、更に内部で用いる定数において共通で用いるものは定数名を分割モデルＡおよびＢを基にプログラム化されたものである。
モデル統合変数定義ファイル＊ＳＣ２００は、モデル統合変数定義のシンボル情報ＳＣ２１０及びモデル統合変数定義の設定値・初期値ＳＣ２２０を有している。
【００２８】
次に、重複メモリ削除手段１３の動作を説明する図１５について説明する。
まず、分割モデルＡ＊”ＳＡ０２０は、分割モデルＡ＊’ＳＡ０１０内で用いる定数において共通で用いるものは、定数名を分割モデルＡおよびＢを基にプログラム化された分割モデルＡ＊’ＳＡ０１０、分割モデルＢ＊’ＳＢ０１０で共通となるよう変更したものである。同様に分割モデルＢ＊”ＳＢ０２０は、分割モデルＢ＊’ＳＢ０１０内で用いる定数において共通で用いるものは定数名を分割モデルＡおよびＢを基にプログラム化された分割モデルＡ＊’ＳＡ０１０、分割モデルＢ＊’ＳＢ０１０で共通となるよう変更したものである。
【００２９】
次に、統合モデル変数定義ファイル＊ＳＣ２００を作成する。統合モデル変数定義ファイル＊ＳＣ２００は、シンボル情報定義部分ＳＣ２１０と、設定値・初期値定義部分ＳＣ２２０で構成され、シンボル情報定義部分ＳＣ２１０は、分割モデルＡを基にプログラム化された変数定義Ａ＊ＳＡ１００のシンボル情報定義部分ＳＡ１１０と分割モデルＢを基にプログラム化された変数定義Ｂ＊ＳＢ１００のシンボル情報定義部分ＳＢ１１０の定数定義部分で共通で用いられる定数の重複するシンボル情報定義を削除し、上記において変更された定数名を追加したもので構成される。
分割モデルの変数定義部分は、全て同様にプログラム化されるため、変数定義部分は、何れかの分割モデルのプログラム化された変数定義部分を用いるだけでよい。
同様に、設定値・初期値定義部分も分割モデルＡを基にプログラム化された変数定義Ａ＊ＳＡ１００の設定値・初期値定義部分ＳＡ１２０と分割モデルＢを基にプログラム化された変数定義Ｂ＊ＳＢ１００の設定値・初期値定義部分ＳＢ１２０の定数定義部分で共通で用いられる定数の重複する設定値・初期値定義を削除し、上記において変更された定数名を追加したもので構成される。
【００３０】
実施の形態１によれば、以上のように構成することで、分割モデルで共通に用いられる定数について重複定義がなくなるため、モジュール毎に定数調整をする必要がなくなる。
また、ＲＯＭ使用量を削減できるなどの効果も奏する。
このため、ＲＡＭの少ないマイコンにおいても動作可能なプログラムが生成可能となる。
また、複数の子プロセスにおいて同じ設定値として扱うことを目的とした定数の調整（キャリブレーション）が容易になる。モデルを基に生成されたソースプログラムを基幹プログラムやオペレーティングシステムなどに容易に組み込むことができる。
【００３１】
実施の形態２．
以下に、本発明の実施の形態２について、図を用いて説明する。
図１８は、この発明の実施の形態２によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
図１８は、本発明のプログラム生成装置において用いられるプログラムを自動生成するために作成されたモデルで、すでに実績のあるプログラム（ここでは正規化ブロック）を、自動生成することを目的として、モデルに融合させる場合の一記述例である。
【００３２】
図１８において、入力処理ブロック３００は、図２に記載のプログラムを自動生成することを目的として作成されたモデル内に記述されている。入力信号イ３０１は、図示しないマイコンなどの入力ポートの読み取り処理実施後の値あるいは通信などで受信した値などである。正規化ブロック３０２は、入力信号イを入力し、正規化処理を行い、演算結果をイとして出力する。
入力信号ロ３１１は、図示しないマイコンなどの入力ポートの読み取り処理実施後の値あるいは通信などで受信した値などである。正規化ブロック３１２は、入力信号ロを入力し、正規化処理を行い、演算結果をロとして出力する。
このとき、従来から用いられている演算プログラムを、例えば正規化ブロックに用いたい場合、そのブロックに関数として設定し、この関数からプログラム生成するようにする。
【００３３】
図１９は、図１８のモデルをプログラム化する時の流れを示すフローチャートである。
次に、図１８で説明したブロックにより、プログラム生成装置を用いて生成されたプログラム作成の動作について、図１９を用いて説明する。
入力処理ブロック３００は、まずステップＦ３０１で、入力信号イの処理をするプログラムが生成される。次に、ステップＦ３０２で、正規化処理を行う関数には、入力信号イが引数として与えられ、戻り値として「イ」が得られる。ここで正規化処理を行う関数が、従来から用いられているキー入力により生成されたプログラムを読み出すよう、本プログラムに関連付けを行う。
また、この関数が読み出すプログラムは、別のモデルで構成され、プログラム生成装置により生成されたプログラムであっても同様の効果が得られる。
同様にステップＦ３１１で、入力信号ロの処理をするプログラムが生成され、ステップＦ３１２で正規化処理を行う関数に入力信号ロを引数として与え、戻り値として「ロ」を得る。
【００３４】
実施の形態２によれば、上記のように関数を用いて記述することにより、動作検証済みの既存プログラムの再利用や、プログラム生成コードの削減などが図れる。
【図面の簡単な説明】
【００３５】
【図１】この発明の実施の形態１によるプログラム生成装置を示す構成図である。
【図２】この発明の実施の形態１によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
【図３】図２のモデルを分割した分割モデルＡを示す図である。
【図４】図２のモデルを分割した分割モデルＢを示す図である。
【図５】図３の分割モデルＡのプログラム化を示す図である。
【図６】図４の分割モデルＢのプログラム化を示す図である。
【図７】図５の変数定義Ａ＊を示す図である。
【図８】図５の変数定義Ａ＊のシンボル情報定義部を示す図である。
【図９】図５の変数定義Ａ＊の設定値・初期値定義部を示す図である。
【図１０】図６の変数定義Ｂ＊のシンボル情報定義部を示す図である。
【図１１】図６の変数定義Ｂ＊の設定値・初期値定義部を示す図である。
【図１２】図５の分割モデルＡを基にプログラム化したものと、図６の分割モデルＢを基にプログラム化したものとの統合を示す説明図である。
【図１３】図１２のモデル統合変数定義内のシンボル情報定義部を示す図である。
【図１４】図１２のモデル統合変数定義内の設定値・初期値定義部を示す図である。
【図１５】図５の分割モデルＡを基にプログラム化したものと、図６の分割モデルＢを基にプログラム化したものとの統合を示す説明図である。
【図１６】図１５のモデル統合変数定義内のシンボル情報定義部を示す図である。
【図１７】図１５のモデル統合変数定義内の設定値・初期値定義部を示す図である。
【図１８】この発明の実施の形態２によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
【図１９】図１８のモデルをプログラム化する時の流れを示すフローチャートである。
【符号の説明】
【００３６】
１  プログラム生成装置
２  モデル
３  実行プログラム
１１  モデル分割手段
１２  プログラム生成手段
１３  重複メモリ削除手段
１４  コンパイル手段
１５  リンク手段
２１  分割されたモデル
２２  ソースプログラム
２３  重複メモリの削除されたソースプログラム
２４  オブジェクト
Ｍ０００  モデル
Ｍ０１０  定数
Ｍ０２０  変数
Ｍ２００  入力処理ブロック
Ｍ２１０  演算処理Ａブロック
Ｍ２２０  出力処理ブロック
Ｍ２３０  演算処理Ｂブロック
Ｍ３００  演算処理Ｃブロック
【図１】
2006201841.tif 000003
【図２】
2006201841.tif 000004
【図３】
2006201841.tif 000005
【図４】
2006201841.tif 000006
【図５】
2006201841.tif 000007
【図６】
2006201841.tif 000008
【図７】
2006201841.tif 000009
【図８】
2006201841.tif 000010
【図９】
2006201841.tif 000011
【図１０】
2006201841.tif 000012
【図１１】
2006201841.tif 000013
【図１２】
2006201841.tif 000014
【図１３】
2006201841.tif 000015
【図１４】
2006201841.tif 000016
【図１５】
2006201841.tif 000017
【図１６】
2006201841.tif 000018
【図１７】
2006201841.tif 000019
【図１８】
2006201841.tif 000020
【図１９】
2006201841.tif 000021