JP4141443B2 - プログラム生成装置 - Google Patents
プログラム生成装置 Download PDFInfo
- Publication number
- JP4141443B2 JP4141443B2 JP2005010088A JP2005010088A JP4141443B2 JP 4141443 B2 JP4141443 B2 JP 4141443B2 JP 2005010088 A JP2005010088 A JP 2005010088A JP 2005010088 A JP2005010088 A JP 2005010088A JP 4141443 B2 JP4141443 B2 JP 4141443B2
- Authority
- JP
- Japan
- Prior art keywords
- model
- program
- definition
- division
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
このモデルから実行プログラムを生成するプログラム生成装置では、従来は、モデルからソースプログラムを作成し、これをコンパイルしてオブジェクトを作成し、このオブジェクトにメモリ領域を割付けてコンピュータ上で実行可能なファイルを作成していた。
また、最近では高級なマイコンを使用した車両制御装置において、モデルからダウンロード可能な実行プログラムを生成するものも市販されている。この車両制御装置において、実行プログラムを生成するオブジェクト指向プログラムでは、定数がRAM領域に定義されるようメモリ割り付けがなされるため、RAM領域の少ないマイコンへの応用が困難なことと、モデルの子プロセス内で使用されている定数と、別の子プロセスで使用される同一名の定数が、別の定数として扱われるため、例えば共通して各子プロセスにおいて用いられる定数のキャリブレーションをする際に、各子プロセス毎にそれぞれ設定する必要があった。
特許文献1のものは、OSなどを持たないためにプログラムのスケジューリング機能を持たない組込みマイコンへの搭載の問題や、子プロセスに共通に使用される定数についての上述の問題を解決するものではなかった。
以下、本発明の実施の形態1について、図を用いて説明する。
図1は、この発明の実施の形態1によるプログラム生成装置を示す構成図である。
図1において、プログラム生成装置1には、プログラムを自動生成するためにプログラムの仕様をモデル化して別途作成されたモデル2が入力され、組込みマイコンで実行可能なファイルにした実行プログラム3を出力する。
プログラム生成装置1は、入力されたモデル2を各タスク処理毎に分割するモデル分割手段11と、このモデル分割手段11により分割されたモデル21が入力され、この分割された各モデル21からソースプログラム22を作成するプログラム生成手段12と、このプログラム生成手段12により作成された各ソースプログラム22を基にして、モデル内で定義され、分割モデルで共通に使用される定数について、この定数のメモリ領域への重複定義を削除したソースプログラム23を作成する重複メモリ削除手段13と、この重複メモリ削除手段13により定数の重複定義が削除された各ソースプログラム23をコンパイルしてオブジェクト24を生成するコンパイル手段14と、このコンパイル手段14により生成された各オブジェクト24にメモリ領域をリンクして、実行プログラムを作成すると共に、予め作成された基幹プログラムから、この作成された実行プログラムを呼び出すことにより各実行プログラムを統合するリンク手段15とにより構成されている。
OSを持たない組込みマイコンでは、スケジューリングできないため、リンク手段15によるプログラムの統合は、予め作成された基幹プログラムから各プログラムを読出すことにより、スケジューリングして、実行プログラムとする。
図2は、この発明の実施の形態1によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
図2において、演算モデルM000は、プログラムを自動生成するために記述された演算モデルの全体を表している。定数M010は、演算モデルM000内で使用されている定数A、定数B、定数C、定数Dで、これらを間接的に参照させ、プログラム作成後の定数設定を容易にさせるために定義される。このため、演算モデルM000内で使用される定数を、プログラム作成後に再設定しなければ、このような定義は不要になる。
演算処理BブロックM230は、入力処理ブロックM200、演算処理AブロックM210、出力処理ブロックM220と同じ周期で実行される。この演算処理BブロックM230は、入力処理ブロックM200、演算処理AブロックM210、出力処理ブロックM220で記述された演算と同じ周期で実行されるが、生成されたプログラムの実行順序については、プログラム生成装置による。
演算モデルM000は、演算全体を示しており、演算周期などの情報が定義される。入力信号「イ」および「ロ」を入力処理ブロックM200で正規化し、演算処理AブロックM210に出力する。演算処理AブロックM210内では、それら入力信号「イ」および「ロ」を用いて、制御アルゴリズムを四則演算等のブロックを用いて記述し、演算結果を出力信号「ハ」として出力処理ブロックM220に出力する。出力処理ブロックM220は、図示しないポート出力などの出力器や表示器あるいは通信器などを用いて指示される。
また、演算処理BブロックM230は、入力処理ブロックM200、演算処理AブロックM210、出力処理ブロックM220と同じ制御周期で実行される制御アルゴリズムや入出力処理が記述されている。
演算処理CブロックM300は、入力処理ブロックM200、演算処理AブロックM210、出力処理ブロックM220や演算処理BブロックM230とは別の演算周期で実行される制御アルゴリズムや入出力処理が記述されている。
従来のプログラム生成装置により生成されるプログラムは、パーソナルコンピュータやワークステーション用プログラムの開発を狙っており、オペレーティングシステム上で動作することを前提にプログラムが生成される。また、オペレーティングシステムにおいても固有のスケジュール管理を有するため、プログラム生成装置が対応していないオペレーティングシステムやオペレーティングシステムを搭載しないプログラム開発において自動生成プログラムを用いることは困難であった。
このため、この発明では、モデルを分割することにより、組込み型マイコンに搭載されるプログラムを生成するようにしたものである。
図3では、演算周期が同一のブロックである、入力処理ブロックM200と、演算処理AブロックM210と、出力処理ブロックM220と、演算処理BブロックM230が含まれている。
図4は、図2のモデルを分割した分割モデルBを示す図である。
図4では、演算周期が図3とは異なる演算処理CブロックM300が含まれ、定数M010及び変数M020は図3と同じである。
図3の分割モデルAと、図4の分割モデルBは、演算周期が同一のブロックのみでまとめた分割モデルとして、それぞれ編集したもので、独立したプログラムが生成できるように工夫されている。
図5は、分割モデルAを用いて、プログラム生成装置1により生成したもので、生成物は、分割モデルAの演算モデルをプログラム化(分割モデルA*SA000)したものと、分割モデルAの定数・変数定義部分をプログラム化(変数定義*SA100)したものとの大きく2つの構成で生成される。さらに変数定義*SA100は、シンボル定義部分SA110と設定値・初期値部分SA120とで構成される。
図6は、図4の分割モデルBのプログラム化を示す図である。
図6は、分割モデルBを用いた場合で、図5で説明した内容と同様である。
図7は、変数定義*の構成を詳細に説明したもので、シンボル定義部分SA110は、さらに定数部分SA111と、変数部分SA112とで構成される。また、設定値・初期値部分SA120は、さらに定数部分SA121と、変数部分SA122とで構成され、それらはお互いに同じ構成の配置で定義される。
図9は、図5の変数定義A*の設定値・初期値定義部を示す図である。
図10は、図6の変数定義B*のシンボル情報定義部を示す図である。
図11は、図6の変数定義B*の設定値・初期値定義部を示す図である。
分割モデルA、Bは、それぞれ独立したプログラムとして生成されるため、分割モデルが複数存在する場合は、図8の変数定義部分の内容と、図10の変数定義部分の内容が、また、図9の変数定義部分の内容と、図11での変数定義部分の内容が、それぞれ重複するため、これらプログラム化された分割モデルA*と分割モデルB*をそのまま統合させると、コンパイル時にシンボル情報の重複定義エラーとなる。
図12は、図5の分割モデルAを基にプログラム化したものと、図6の分割モデルBを基にプログラム化したものとの統合を示す説明図である。
図12において、分割モデルA*’SA010は、分割モデルAをプログラム化した分割モデルA*を基に変数定義参照部分を変更したものである。分割モデルB*’SB010は、分割モデルBをプログラム化した分割モデルB*を基に変数定義参照部分を変更したものである。
なお、SA100、SA110、SA120、SB100、SB110、SB120、SB111、SB112、SB121、SB122は図5〜図7に示されるものと同一のものである。
モデル統合変数定義ファイルSC100は、モデル統合変数定義のシンボル情報SC110及びモデル統合変数定義の設定値・初期値SC120を有している。
まず分割モデルA*’SA010は、分割モデルA*の変数定義参照部分を、変数定義A*SA100からモデル統合変数定義SC100を参照するよう変更し、分割モデルB*’SB010も同様に分割モデルB*の変数定義参照部分を、変数定義B*SB100からモデル統合変数定義SC100を参照するよう変更しておく。
次に、統合モデル変数定義ファイルSC100を作成する。統合モデル変数定義ファイルSC100は、シンボル情報定義部分SC110と、設定値・初期値定義部分SC120で構成され、シンボル情報定義部分SC110は、分割モデルAを基にプログラム化された変数定義A*SA100のシンボル情報定義部分SA110と、分割モデルBを基にプログラム化された変数定義B*SB100のシンボル情報定義部分SB110の定数定義部分から構成される。
分割モデルの変数定義部分は、全て同様にプログラム化されるため、変数定義部分は、何れかの分割モデルのプログラム化された変数定義部分を用いるだけでよい。
同様に設定値・初期値定義部分SC120も、分割モデルAを基にプログラム化された変数定義A*SA100の設定値・初期値定義部分SA120と、分割モデルBを基にプログラム化された変数定義B*SB100の設定値・初期値定義部分SB120の定数定義部分から構成される。
同様に、モデル統合変数定義ファイルSC100の設定値・初期値定義部分SC120に、分割モデルAのプログラム化された設定値・初期値定義部分SA120を用いたが、分割モデルBのプログラム化された設定値・初期値定義部分SB120と分割モデルAを基にプログラム化された初期値・設定値定義部分SA120の定数部分で構成されても同様の効果を奏する。
図14は、図12のモデル統合変数定義内の設定値・初期値定義部を示す図である。
図13、図14は、上述のモデル統合変数定義ファイルの具体例を示す。
追加の記述部分の分割モデルを基にプログラム化された変数定義部分の定数定義部分を示す。このままでも分割モデルの統合は行えるが、図13、図14中に記載の重複部分の定数Cが二重定義されてしまう。これは上段に記述されている定数Cは、分割モデルAを基にプログラム化された分割モデルA*および分割モデルA*’で用いられ、下段に記述されている定数Cは、分割モデルBを基にプログラム化された分割モデルB*および分割モデルB*’で用いられることを意味している。定数Cは、もともと分割前は1つの定数であり、モデルを分割した際に別の定数Cとして定義されたものである。
ところが、各ブロック内で共通で使用し、調整したい定数については、各モジュール毎に調整設定する必要がある。
これを行うものが、図1の重複メモリ削除手段13である。
図16は、図15のモデル統合変数定義内のシンボル情報定義部を示す図である。
図17は、図15のモデル統合変数定義内の設定値・初期値定義部を示す図である。
図15で、分割モデルA*”SA020は、分割モデルA*’SA010を基に変数定義参照部分を変更し、更に内部で用いる定数において共通で用いるものは定数名を分割モデルAおよびBを基にプログラム化された分割モデルA*’、B*’で共通となるよう変更されている。分割モデルB*”SB020は、分割モデルB*を基に変数定義参照部分を変更し、更に内部で用いる定数において共通で用いるものは定数名を分割モデルAおよびBを基にプログラム化されたものである。
モデル統合変数定義ファイル*SC200は、モデル統合変数定義のシンボル情報SC210及びモデル統合変数定義の設定値・初期値SC220を有している。
まず、分割モデルA*”SA020は、分割モデルA*’SA010内で用いる定数において共通で用いるものは、定数名を分割モデルAおよびBを基にプログラム化された分割モデルA*’SA010、分割モデルB*’SB010で共通となるよう変更したものである。同様に分割モデルB*”SB020は、分割モデルB*’SB010内で用いる定数において共通で用いるものは定数名を分割モデルAおよびBを基にプログラム化された分割モデルA*’SA010、分割モデルB*’SB010で共通となるよう変更したものである。
分割モデルの変数定義部分は、全て同様にプログラム化されるため、変数定義部分は、何れかの分割モデルのプログラム化された変数定義部分を用いるだけでよい。
同様に、設定値・初期値定義部分も分割モデルAを基にプログラム化された変数定義A*SA100の設定値・初期値定義部分SA120と分割モデルBを基にプログラム化された変数定義B*SB100の設定値・初期値定義部分SB120の定数定義部分で共通で用いられる定数の重複する設定値・初期値定義を削除し、上記において変更された定数名を追加したもので構成される。
また、ROM使用量を削減できるなどの効果も奏する。
このため、RAMの少ないマイコンにおいても動作可能なプログラムが生成可能となる。
また、複数の子プロセスにおいて同じ設定値として扱うことを目的とした定数の調整(キャリブレーション)が容易になる。モデルを基に生成されたソースプログラムを基幹プログラムやオペレーティングシステムなどに容易に組み込むことができる。
以下に、本発明の実施の形態2について、図を用いて説明する。
図18は、この発明の実施の形態2によるプログラム生成装置で用いられるプログラムを自動生成するために作成されたモデルを示す図である。
図18は、本発明のプログラム生成装置において用いられるプログラムを自動生成するために作成されたモデルで、すでに実績のあるプログラム(ここでは正規化ブロック)を、自動生成することを目的として、モデルに融合させる場合の一記述例である。
入力信号ロ311は、図示しないマイコンなどの入力ポートの読み取り処理実施後の値あるいは通信などで受信した値などである。正規化ブロック312は、入力信号ロを入力し、正規化処理を行い、演算結果をロとして出力する。
このとき、従来から用いられている演算プログラムを、例えば正規化ブロックに用いたい場合、そのブロックに関数として設定し、この関数からプログラム生成するようにする。
次に、図18で説明したブロックにより、プログラム生成装置を用いて生成されたプログラム作成の動作について、図19を用いて説明する。
入力処理ブロック300は、まずステップF301で、入力信号イの処理をするプログラムが生成される。次に、ステップF302で、正規化処理を行う関数には、入力信号イが引数として与えられ、戻り値として「イ」が得られる。ここで正規化処理を行う関数が、従来から用いられているキー入力により生成されたプログラムを読み出すよう、本プログラムに関連付けを行う。
また、この関数が読み出すプログラムは、別のモデルで構成され、プログラム生成装置により生成されたプログラムであっても同様の効果が得られる。
同様にステップF311で、入力信号ロの処理をするプログラムが生成され、ステップF312で正規化処理を行う関数に入力信号ロを引数として与え、戻り値として「ロ」を得る。
2 モデル
3 実行プログラム
11 モデル分割手段
12 プログラム生成手段
13 重複メモリ削除手段
14 コンパイル手段
15 リンク手段
21 分割されたモデル
22 ソースプログラム
23 重複メモリの削除されたソースプログラム
24 オブジェクト
M000 モデル
M010 定数
M020 変数
M200 入力処理ブロック
M210 演算処理Aブロック
M220 出力処理ブロック
M230 演算処理Bブロック
M300 演算処理Cブロック
Claims (4)
- 予め作成されたモデルから、このモデルをタスク処理ごとに分割された分割モデルを作成するモデル分割手段、このモデル分割手段により作成された各分割モデルに基づきそれぞれソースプログラムを生成するプログラム生成手段、上記モデル内で定義され、上記分割モデルで共通に使用される定数について、上記プログラム生成手段により生成された各ソースプログラムを基に、上記定数のメモリ領域への重複定義を削除したソースプログラムを作成する重複メモリ削除手段、この重複メモリ削除手段により上記定数のメモリ領域への重複定義が削除された各ソースプログラムをそれぞれコンパイルしてオブジェクトを作成するコンパイル手段、及びこのコンパイル手段により作成された各オブジェクトにメモリ領域を割付けることによりそれぞれ実行プログラムを作成すると共に、上記各実行プログラムを基幹プログラムによって呼び出してスケジューリングし統合させるリンク手段を備えたことを特徴とするプログラム生成装置。
- 上記モデル分割手段は、上記モデル内の上記タスク処理の演算周期に基づき上記モデルを分割することを特徴とする請求項1記載のプログラム生成装置。
- 上記モデル内で変数が定義され、上記各分割モデルは上記定義された変数を参照することにより、上記各分割モデルで同一の変数定義が行われることを特徴とする請求項1または請求項2記載のプログラム生成装置。
- 上記モデルから生成するプログラムに既成のプログラムを使用する場合には、上記モデルは、上記既成のプログラムを読み出す関数を用いて記述されることを特徴とする請求項1〜請求項3のいずれかに記載のプログラム生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005010088A JP4141443B2 (ja) | 2005-01-18 | 2005-01-18 | プログラム生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005010088A JP4141443B2 (ja) | 2005-01-18 | 2005-01-18 | プログラム生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006201841A JP2006201841A (ja) | 2006-08-03 |
JP4141443B2 true JP4141443B2 (ja) | 2008-08-27 |
Family
ID=36959807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005010088A Expired - Fee Related JP4141443B2 (ja) | 2005-01-18 | 2005-01-18 | プログラム生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4141443B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1983433A1 (en) * | 2007-04-20 | 2008-10-22 | Hitachi, Ltd. | Method of configuring a control algorithm being executable by a controller |
JP2009289162A (ja) * | 2008-05-30 | 2009-12-10 | Toshiba Mitsubishi-Electric Industrial System Corp | 制御プログラム及び試験方案自動作成装置 |
-
2005
- 2005-01-18 JP JP2005010088A patent/JP4141443B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006201841A (ja) | 2006-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101154730B1 (ko) | 컴퓨터 프로그램의 구성 방법 | |
EP3647941B1 (en) | Engineering apparatus, control method of engineering apparatus, and program | |
US20090049437A1 (en) | Method for configuring a computer program | |
US20190196798A1 (en) | Executable program creation device, executable program creation method, and executable program creation program | |
US10445074B2 (en) | Method of optimally compiling PLC command | |
JP4141443B2 (ja) | プログラム生成装置 | |
WO2018042520A1 (ja) | プログラム編集装置、プログラム編集方法及びプログラム編集プログラム | |
CN117744548A (zh) | 一种芯片验证方法、装置和存储介质 | |
CN102289367A (zh) | 根据模式的命令行外壳命令生成 | |
TWI442316B (zh) | 可編程邏輯控制器程式編輯系統及方法 | |
KR102225850B1 (ko) | 프로그램 관리 시스템, 프로그래밍 지원 장치, 프로그램 관리 방법 및 프로그래밍 지원 프로그램 | |
JP2008165342A (ja) | ソースコード生成方法及び装置並びにプログラム | |
Kumar | Comparison of instruction scheduling and register allocation for Mips And Hpl-Pd architecture for exploitation of instruction level parallelism | |
JP6455096B2 (ja) | コントロールシステム、その支援装置、プログラマブルコントロール装置 | |
JP5205988B2 (ja) | Plcのグローバル変数定義方式 | |
JP6175306B2 (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
US8826267B2 (en) | Association of object elements to operational modes | |
US20080127069A1 (en) | Reusable class library for multi-threaded application | |
US9841975B2 (en) | Method and apparatus for performing register allocation | |
Lanoe et al. | A modeling and code generation framework for critical embedded systems design: From Simulink down to VHDL and Ada/C code | |
JP2022018696A (ja) | 制御プログラム生成装置 | |
JP2009098963A (ja) | モジュール自動生成システム | |
JP2004288076A (ja) | ネイティブライブラリへのアクセス方法 | |
Fors et al. | Visual instance inlining and specialization: Building domain-specific diagrams from reusable types | |
US7062400B2 (en) | Apparatus and program for designing system LSI, and method for verifying integrity of the program for designing system LSI |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070904 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071031 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080125 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080226 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080328 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080502 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080527 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080610 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120620 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |