JP6398456B2 - ソフトウェア生成装置 - Google Patents

ソフトウェア生成装置 Download PDF

Info

Publication number
JP6398456B2
JP6398456B2 JP2014164893A JP2014164893A JP6398456B2 JP 6398456 B2 JP6398456 B2 JP 6398456B2 JP 2014164893 A JP2014164893 A JP 2014164893A JP 2014164893 A JP2014164893 A JP 2014164893A JP 6398456 B2 JP6398456 B2 JP 6398456B2
Authority
JP
Japan
Prior art keywords
data
reception
transmission
processing
simulator
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
Application number
JP2014164893A
Other languages
English (en)
Other versions
JP2016040702A (ja
Inventor
修平 内田
修平 内田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2014164893A priority Critical patent/JP6398456B2/ja
Publication of JP2016040702A publication Critical patent/JP2016040702A/ja
Application granted granted Critical
Publication of JP6398456B2 publication Critical patent/JP6398456B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、複数のシミュレータを含むシミュレーション装置のソフトウェアを生成する装置に関する。
組込み機器の開発において、実機を使用することなく、主回路とその制御プログラム(制御基板)の動作を、PC上でシミュレーションすることにより、機器の開発、および動作検証をすることがある。これは、より早い段階で設計の問題点を明確にすることにより、実機開発後に不具合が発見されることに起因する手戻りを、未然に防ぐためである。
これに関して、機器上の全ての装置を単一のシミュレータで動作させるのではなく、主回路のシミュレータと、制御基板(CPU/マイコン等を含む)のシミュレータとの間で、同期を取りながら動作させることがある。
ここで、「同期」とは、主回路のシミュレータと制御基板のシミュレータとの間で、シミュレータにおける仮想的時刻(以下、シミュレーション時刻)が一致するように、双方のシミュレータの動作有無あるいは動作速度を調整のうえ、双方のシミュレータの間でデータを送受信することを意味する。
PC上でのシミュレーションにあたっては、シミュレーション実行に必要なシミュレーションモデルの作成に時間がかかるという課題がある。本課題の解決方法に関しては、例えば特許文献1の従来技術が知られている。
特許文献1の発明は、ハードウェアモデルを構成するソフトウェアを自動生成することにより、ハードウェアモデルの開発工数を削減するものである。
特許文献1の発明では、ハードウェアをシミュレーションするためのソフトウェアを生成するソフトウェア生成装置であって、以下の各構成を有する。
・ハードウェアの処理開始が指示されてから終了するまでの時間を示すタイミング仕様データ(603)を記憶する記憶手段;
・上記タイミング仕様データを基に、上記ハードウェアの処理開始が指示されると上記ハードウェアの処理を行わずにスケジューラに対して時間情報を設定し、上記時間経過後のスケジューラからの通知により割り込み又はコマンド実行の処理を行うソフトウェア(104)を生成するプロセッサ(604)。
特開2008−204006号公報
特許文献1の技術を使用することにより、制御基板に実装されるマイコン内部のペリフェラルモデルを自動生成することが可能であり、シミュレーションモデルの作成時間短縮に有効である。
しかし、特許文献1の技術では、主回路と制御基板の間でデータを送受信する箇所のシミュレーションモデルの自動生成ができない。すなわち、主回路のシミュレータと制御基板のシミュレータの間でデータを送受信するソフトウェアを自動生成することが出来ない。また、この問題は、主回路のシミュレータと制御基板のシミュレータとの間のデータ送受信処理に限らず、何等かの複数のシミュレータ間のデータ送受信処理に関しても、同様である。
本発明の課題は、シミュレータ間のデータ送受信ソフトウェアを自動生成可能にすることができ、これによってシミュレーションソフトウェア作成時間を短縮することができるソフトウェア生成装置等を提供することである。
本発明のソフトウェア生成装置は、複数種類のシミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置であって、下記の構成を有する。
・前記各シミュレータ間で送受信されるデータの仕様情報が予め記憶された送受信データ仕様情報記憶手段;
・前記各送受信データ毎の各送信処理/受信処理に係わる仕様情報であるタイミング仕様情報が予め記憶されたタイミング仕様情報記憶手段;
少なくとも前記送受信データ仕様情報と前記タイミング仕様情報とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成するデータ送受信プログラム生成手段:
本発明のソフトウェア生成装置等によれば、シミュレータ間のデータ送受信ソフトウェアを自動生成可能にすることができ、これによってシミュレーションソフトウェア作成時間を短縮することができる。
本例のソフトウェア生成装置の概略構成図である。 シミュレーション装置の具体例である。 (a)はデータ仕様、(b)はタイミング仕様の具体例である。 (a)は前処理仕様、(b)は後処理仕様の具体例である。 データ送受信ソフトウェア生成処理のフローチャート図等(1/2)である。 データ送受信ソフトウェア生成処理のフローチャート図等(2/2)である。 図5等に示すソースコード例の説明図(1/2)である。 図5等に示すソースコード例の説明図(2/2)である。 制御基板のシミュレータのデータ送受信ソフトウェアの実行例である。 主回路のシミュレータのデータ送受信ソフトウェアの実行例である。
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例のソフトウェア生成装置の概略構成図である。
本例のソフトウェア生成装置は、複数種類のシミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置である。
図1のソフトウェア生成装置10は、ソフトウェア生成メイン処理部11を有する。
ソフトウェア生成装置10には、その不図示の記憶部(メモリ等)に予め図示のデータ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが記憶されている。尚、これら各種データを記憶する記憶部を、それぞれ、データ仕様記憶部、タイミング仕様記憶部、前処理仕様記憶部、後処理仕様記憶部等と呼ぶものとする。
尚、ソフトウェア生成装置10は、例えば一例としてはパソコン上で実現される。よって、ハードウェア的には一般的なパソコンの構成を有するものであってよい。つまり、特に図示しないが、例えば、CPU/MPU等の演算プロセッサ、ハードディスク、メモリ等の記憶装置等を有しており、更に通信機能部や、キーボード、マウス等の入力操作部、ディスプレイ等の表示部等を有するものであってもよい。
上記記憶装置には、予め所定のアプリケーションプログラムが記憶されており、上記演算プロセッサがこのアプリケーションプログラムを実行することにより、例えば上記ソフトウェア生成メイン処理部11の機能や、後述する図5、図6の処理等が実現される。
また、上記記憶装置には、上記データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが記憶される。
また、上記データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データは、例えば一例としては、開発者等が上記入力操作部により任意のデータを入力する作業を行うことで、作成されるものであってもよい。
データ仕様12(データ仕様記憶部)は、上記各シミュレータ間で送受信されるデータ(送受信データ)の仕様情報が予め記憶されたものである。タイミング仕様13(タイミング仕様記憶部)は、上記各送受信データ毎の各送信処理/受信処理に係わる仕様情報であるタイミング仕様情報が、予め記憶されたものである。
上記ソフトウェア生成メイン処理部11は、少なくとも上記送受信データ仕様情報と上記タイミング仕様情報とに基づいて、上記各シミュレータ間のデータ送受信プログラム(データ送受信ソフトウェア16)を生成する。
また、前処理仕様14(前処理仕様記憶部)は、上記各送受信データの送信/受信に係わる前処理が、予め登録されたものである。後処理仕様15(後処理仕様記憶部)は、上記各送受信データの送信/受信に係わる後処理が、予め登録されたものである。
上記ソフトウェア生成メイン処理部11は、例えば、上記送受信データ仕様情報と上記タイミング仕様情報と、上記前処理または/及び後処理とに基づいて、上記各シミュレータ間のデータ送受信プログラムを生成する。
また、例えば、上記タイミング仕様情報には、上記各送信処理/受信処理の実行条件が含まれている。この実行条件は、例えば、実行周期あるいは他の送信処理/受信処理の実行完了を起動条件とするものであり、一例が後述する図3(b)のタイミング324であり、後に説明する。
また、上記データ仕様情報は、上記複数のシミュレータに共通の情報であり、上記タイミング仕様情報、前処理、後処理は、各シミュレータ毎に個別に設けられた情報である。
上記ソフトウェア生成メイン処理部11は、上記のように予め記憶された各種データを用いて、図示のデータ送受信ソフトウェア16を生成する。このデータ送受信ソフトウェア16は、例えば図2に示す2つのシミュレータ20−30間のデータ送受信に係わるプログラムである。この例では、データ送受信ソフトウェア16は、シミュレータ20用とシミュレータ30用の2つが生成されることになる。
ここで、図2の例について説明する。
図2には、上記背景技術の説明に応じた、主回路のシミュレータ20と、制御基板のシミュレータ30とから成るシミュレーション装置を示す。
主回路のシミュレータ20、制御基板のシミュレータ30の各々には、シミュレーション処理21、31、および各種データ格納領域22,32があり、これらを使用してシミュレーション処理が実行される。
尚、各シミュレータ20,30は、例えば一例としてはパソコン上で実現される。よって、ハードウェア的には一般的なパソコンの構成を有するものであってよい。つまり、特に図示しないが、例えば、CPU/MPU等の演算プロセッサ、ハードディスク、メモリ等の記憶装置等を有している。そして、記憶装置には上記ソフトウェア生成装置10で生成されたデータ送受信ソフトウェア16等のシミュレーション用のプログラムが格納される。上記演算プロセッサが、このプログラムを実行することで、例えば後述する図9や図10の処理等が実行される。
また、主回路のシミュレータ20のシミュレーション処理21と、制御基板のシミュレータ30のシミュレーション処理31との間で、データの送受信が実行される。送受信されるデータとしては、PWM電圧指令値の出力、A/Dコンバータの入力電圧、シリアル通信等が挙げられる。この様なデータ送受信処理のプログラムが、上記データ送受信ソフトウェア16である。但し、本発明の対象は、これらに限定されない。
この様に、ソフトウェア生成装置10は、例えば一例としては、図2に示すような主回路のシミュレータ20と、制御基板のシミュレータ30との間のデータ送受信処理プログラム(ソースコード)を、自動的に生成するものである。本説明では、主に、この例を用いて具体例を説明するが、勿論、この例に限らない。ソフトウェア生成装置10は、何等かの複数のシミュレータ間のデータ送受信処理プログラムを、自動的に生成するものである。
尚、本例では、複数のシミュレータ間のデータ送受信処理プログラム生成の為に予め用意されるデータとして、図示のようにデータ仕様12、タイミング仕様13、前処理仕様14、および後処理仕様15の4種類の仕様データを示すが、この例に限らない。例えば、この4種類の全てを纏めて1つの仕様データとして扱ってもよいし、4種類のうちの一部を纏めて扱ってもよい。例えば、前処理仕様14と後処理仕様15を纏めて1つの仕様とすることで、これとデータ仕様12およびタイミング仕様13の3種類の仕様を入力とするものであってもよい。
尚、上記4種類のデータ仕様は、予め例えば開発者等が任意に設定・入力するものである。また、上記4種類のデータ仕様のうち、前処理仕様14および後処理仕様15は、必ずしも必要ないものである。
ここで、図3(a)、(b)、図4(a)、(b)に、上記4種類のデータ仕様の具体例を示す。
図3(a)には、上記データ仕様12の具体例を示す。
図示の例では、データ仕様12は、ID311、名称312、サイズ313等のデータ項目から成る。
データ仕様12は、上記シミュレータ20−30間で送受信されるデータの名前や識別番号やサイズ等が、上記名称312、ID311、サイズ313(バイト単位)等に登録されたものである。図示の例では、名称312が“UARTData”、“PWMOutput”、“ADCInput”の3つの送受信データが、登録されている。尚、ID311は、単に各レコードの識別番号等を意味するものであっても構わない。
ここで、上記のように、データ仕様12で仕様を定義する送受信データは、主回路のシミュレータ20と制御基板のシミュレータ30の間で送受信されるデータである。したがって、データ仕様12は、主回路のシミュレータ20と制御基板のシミュレータ30で共通に用いられるものである。
一方、データ仕様12以外の3種類の仕様13,14,15は、各シミュレータ個別の設定データである。そして、以下に説明する図3(b)、図4(a)、(b)に示す3種類の仕様データは、制御基板のシミュレータ30用のデータ送受信処理プログラム生成の為の仕様データの具体例である。尚、上記のことから主回路のシミュレータ20用の仕様データも、予め登録・記憶されていることになるが、ここではその具体例は特に示さないものとする。
図3(b)には、制御基板のシミュレータ30用のタイミング仕様13の具体例を示す。
図示の例のタイミング仕様13は、タイミング仕様ID321、データ仕様ID322、「受信または送信」323、タイミング324等のデータ項目から成り、これらが上記タイミング仕様情報の一例である。
タイミング仕様13は、上記データ仕様12に登録された送受信データの送信または受信のタイミング(条件;周期やトリガ等)等が、登録されたものである。基本的には、このタイミング仕様13の各レコード毎に、送信処理または受信処理のプログラム(スレッド)が生成される。但し、条件が関連する処理に関しては、1つのスレッドに纏めて生成されても構わない。図示の例では、タイミング324に示す条件より、タイミング仕様ID321=‘3’の送信処理は、タイミング仕様ID321=‘2’の受信処理に関連する処理であるので、後述するようにこれらを1つに纏めたプログラムが、生成されることになる。詳しくは後述する。
上記タイミング仕様ID321は、上記各レコードに割当てられるユニークな識別番号と見做してよい。換言すれば、タイミング仕様ID321は、上記各送受信データの送信/受信に係わる各処理に割当てられるユニークな識別番号と見做してよい。
データ仕様ID322は、上記データ仕様12のID311に対応する。タイミング仕様13には、各レコード毎に、データ仕様ID322が示す送受信データに関して、「受信または送信」323によって送信処理であるか受信処理であるかが指定され、タイミング324によって起動条件等が指定されている。
例えば、タイミング仕様13の先頭レコードを例にすると、データ仕様ID322=‘2’であり、「受信または送信」323=“送信”であるので、これは送受信データ“PWMOutput”の送信処理に関するタイミング仕様情報である。更に、タイミング324=“100ms周期”であることから、当該“PWMOutput”の送信処理は、100ms周期で実行すべき処理であることが、起動条件として指定されている。
そして、この例では、“PWMOutput”の送信処理に係わる前処理と後処理が、それぞれ、前処理仕様14と後処理仕様15に登録されている。これは、図4(a)、(b)において、タイミング仕様ID332,342が‘1’であるレコードである。
尚、図3(b)においてタイミング324に示す内容は、実際にはコンピュータ処理用に予め決められたフォーマットに従って記述されているが、その具体例は特に示さない。
図4(a)に示す具体例では、前処理仕様14は、前処理仕様ID331、タイミング仕様ID332、前処理333等の各データ項目より成る。
ここでは、予め、様々な前処理のプログラム(関数など)が予め開発者等によって任意に作成されているものとし、前処理333には任意の前処理の関数などの関数名などが登録される。尚、これら各関数のプログラム等は、ソフトウェア生成装置10に記憶されており、生成したデータ送受信ソフトウェア16を例えば図2の各シミュレータ20,30に送信する際に、一緒に送信するようにしてもよい。
上記前処理仕様14の各レコード毎に、タイミング仕様ID332が示すデータ送受信処理に係わる前処理の関数名などが、前処理333に登録される。尚、上記前処理仕様ID331は、各レコードに割当てられるユニークな識別番号と見做してよい。
例えば、一例として図示の先頭レコードを例にすると、そのタイミング仕様ID332=‘1’であることから、上記「“PWMOutput”の送信処理」の直前に実行する処理の名称(関数名など)が、前処理333に登録されていることになる。図示の例では、関数名“pwm.getValue()”が、登録されている。
尚、図示の3番目のレコードの前処理333における「#sendData」は、送信されるデータへの参照を示すための記法であり、本記法は発明の本質ではない。
図4(b)に示す具体例では、後処理仕様15は、後処理仕様ID341、タイミング仕様ID342、後処理343等の各データ項目より成る。
後処理も上記前処理と同様に、予め、様々な後処理のプログラム(関数など)が予め開発者等によって任意に作成されているものとし、後処理343には任意の後処理の関数などの関数名などが登録される。各レコード毎に、タイミング仕様ID342が示すデータ送受信処理に係わる後処理の関数名などが、後処理343に登録される。尚、上記後処理仕様ID341は、各レコードに割当てられるユニークな識別番号と見做してよい。
例えば、一例として図示の先頭レコードを例にすると、そのタイミング仕様ID342=‘1’であることから、上記「“PWMOutput”の送信処理」の直後に実行する処理の名称(関数名など)が、後処理343に登録されていることになる。但し、図示の例では、「無し」が登録されており、つまり、上記「“PWMOutput”の送信処理」に関しては、後処理は無いことになる。
あるいは、一例として、図4(b)の2番目のレコードを例にすると、そのタイミング仕様ID342=‘2’であるので、図3(b)の例より、“UARTData”の受信処理の直後に、関数uart.setRecvData(引数は受信データ)を実行することが、定義されていることになる。尚、図示の後処理343に示す「#recvData」は、受信したデータへの参照を示すための記法であり、それ故に上記の通り“引数は受信データ”としているが、本記法は発明の本質ではない。
図5、図6には、制御基板のシミュレータ用のデータ送受信ソフトウェア生成処理のフローチャート図と、この処理によって生成されるデータ送受信ソフトウェア16(制御基板のシミュレータ用のデータ送受信ソフトウェア16のソースコード)の具体例を示す図である。
図5、図6とも、図上左側にフローチャート図を示し、図上右側にデータ送受信ソフトウェア16の具体例を示す。また、図5、図6は、1つの処理を2つの図面に分けて示している。これより、以下、特に区別せずに図5等と記す場合もあるものとする。
また、図5、図6の図上右側に示すデータ送受信ソフトウェア16の具体例における各プログラムの記述に関する説明一覧を、図7、図8に示す。
以下、図5、図6、図7、図8を参照して、制御基板のシミュレータのデータ送受信ソフトウェア生成処理について、説明する。
尚、ここでは一例として、出力されるソースコードは、Java(登録商標)の仕様に準じた記載としているが、ソースコードの言語は発明の本質ではない。
また、図5、図6の図上右側に示す各ソースコードには、説明の都合上、5020、5030、5040の番号を付してあり、以下の説明ではこの番号を用いて説明する場合があるものとする。これら3つのソースコード5020,5030,5040を合わせたものが、本例で生成されるデータ送受信ソフトウェア16である。尚、図示の番号5010が付されたものは、ソースコードではなく、本処理中に得られるデータ(グラフ)である。
図5等に示す処理は、まず、タイミング仕様13のタイミング324の内容に基づいて、各データ送受信処理間の依存関係を判別する(ステップS11)。これは、例えば、図3(b)の例では、先頭レコードのタイミング324の「100ms周期」のような定周期が規定されている場合には、依存関係は無いと判定する。そして、依存関係が無いデータ送受信処理に関しては、それ単独に対して後述するスレッドを割当てる。一方、図3(b)に示す3番目のレコードのタイミング324のような、他のデータ送受信処理(タイミング仕様ID)と関連する記述がある場合には、依存関係があると判定する。この様な依存関係があるデータ送受信処理に関しては、依存先のデータ送受信処理と纏めて、後述するスレッドを割当てる。
この様な依存関係の判定結果より、例えば図5に示すグラフ5010を生成する。具体的には、タイミング仕様ID321が‘1’である処理は、他のタイミング仕様IDの処理には依存しない。一方で、タイミング仕様ID321が‘3’である処理は、タイミング仕様ID321が‘2’である処理と依存関係がある。図3(b)の例では、タイミング仕様ID321が‘2’である処理が実行完了したら、続いて、タイミング仕様ID321が‘3’の処理を実行する必要がある。
尚、グラフ5010を、グラフ理論におけるグラフ(ノードとエッジから構成されるグラフ)と見做した場合、各ノード内の番号(ノード番号;図示の1,2,3)は、上記タイミング仕様ID321である。
次に、ステップS11で抽出した依存関係(例えば上記グラフ5010)をもとに、スレッドのメイン関数を呼び出す処理を生成する(ステップS12)。出力結果は、図示のソースコード5020に示す通りである。つまり、上記のように、各データ送受信処理に対して、単独または複数纏めて、スレッドのメイン関数を呼び出す処理を生成する。
具体的には、例えば、グラフ5010を、グラフ理論におけるグラフ(ノードとエッジから構成されるグラフ)と見做した場合、エッジで接続されているノード群ごとに1個のスレッドを作成する。エッジが接続されていない単独のノードは、当該1つのノードについて1個のスレッドを作成する。これより、この例では、タイミング仕様IDが‘1’の処理のみのスレッドと、タイミング仕様IDが‘2’と‘3’の処理が含まれるスレッドという、2個のスレッドが作成されることになる。
ここで、図示のソースコード5020の生成処理について、図7も参照して説明する。
まず、本例では、予め、各ソースコードの雛形が、開発者等によって任意に作成されて、メモリ等に記憶されているものとする。雛形には、定型表現等が記述されている。例えば、メイン関数を呼び出す処理であるソースコード5020の場合、図示の1行目と2行目の記述は、図7に示すように定型表現であり、予め「メイン関数を呼び出す処理」の雛形に、記述されているものである。すなわち、ソースコード5020における“class Main”や“public static void main()”は、予め雛形に記述されている定型表現である。
また、ソースコード5020の4行目と6行目の記述における“new”と“start()”も、定型表現である。“new”と“start()”の間の“Thread1”や“Thread2_3”における“Thread”の部分は、予め登録されている固定文字列である。
尚、図7に示すように、“new”は、Javaの新しいオブジェクトの作成を示す定型表現であり、“start()”はJavaでスレッドを開始する場合の関数である。
そして、ステップS12の処理では、“new”と“start()”との間に任意のスレッド名を記述する。図示の一例では、上記固定文字列“Thread”とタイミング仕様ID(ノード番号)を用いたスレッド名としている。つまり、上記タイミング仕様ID(ノード番号)=‘1’の処理に対応するスレッド名はThread1としている。同様に、上記タイミング仕様ID(ノード番号)=‘2’と‘3’の処理に対応するスレッド名はThread2_3としている。勿論、これは一例であり、この例に限るものではない。
尚、図5に示すソースコード5020の3行目と5行目の記述(//で始まる説明文)は、説明の為に示しているだけであり、実際のソースコード5020には存在しなくてもよい。
次に、データ送受信ソフトウェア16におけるデータ型定義部分を生成する(ステップS13)。図示の例では、ステップS13の処理は、データ仕様12の名称312とサイズ313の情報を使用して、上記データ型定義部分を、図示のソースコード5030として生成・出力する。図示のようにソースコード5030には、上記データ仕様12に登録された3つのデータについて、それぞれ、データ型が定義されている。
ここで、図示のソースコード5030において、“class”は、図7に示すようにJavaのクラス宣言関連の定型表現である。また、List<Byte>と記載しているデータは可変長配列、byte[数字]と記載しているデータは固定長配列である。換言すれば、図7に示すように、List<Byte>は可変長データの型、byte[x]は、長さxバイト固定のデータの型である(尚、xは整数)。
これより、例えば、上記データ仕様12に登録された各データ毎に、雛形の“class”の記述の後に名称312を記述すると共に、サイズ313が固定長である場合には雛形のbyte[x]のxにサイズ313を代入し、あるいはサイズ313が可変長である場合にはList<Byte>を記述することで、図示のソースコード5030を生成する。尚、本例では、図3(a)のデータ仕様12のサイズ313の「1以上」が、可変長であることを意味するものとするが、この例に限らない。また、尚、ソースコード5030におけるbyte[x]の後に記述の“data”は、予め雛形に記述されている定型表現である。
ステップS13では、例えば一例としては上記のようにして、データ型定義部分の一例であるソースコード5030を生成する。
そして、続いて、ステップS14において、上記ソースコード5020で呼び出す各スレッドの記述を生成する。例えば、依存関係の先頭(グラフ5010においてエッジの始点側のノードに対応するもの)から順に、下記の各処理(i)〜(iv)を実行するソースコードを順に作成のうえ、対応するスレッドのメイン関数中に出力する。
なお、下記の各処理(i)〜(iv)においては、必要に応じて、ステップS13で生成した各データ型定義を使用する。また、本処理結果の一例は、図6に示すソースコード5040である。
(i) 指定された周期の時間、待つ処理を作成(タイミング仕様13のタイミング324をもとに作成)
(ii) 前処理作成(前処理仕様14の前処理333をもとに作成)
(iii) 受信処理または送信処理作成(タイミング仕様13の「受信または送信」323やデータ仕様ID322等に基づいて作成)
(iv) 後処理作成(後処理仕様15の後処理343をもとに作成)
但し、定周期処理ではない場合、上記(i)の処理は行われない。
上記処理(i)〜(iv)によって、例えば図6に示すソースコード5040が生成される。これについて、以下、図8等も参照して説明する。
まず、図6に示すソースコード5040において、下記の記述は、予め雛形に記述されている定型表現である。
『 class スレッド名extends Thread {
void run() {
while (true) 』
上記定型表現における“スレッド名”として、上記ソースコード5020で作成した各スレッド名を記述する。これより、例えば、図示の“class Thread1 extends Thread”等が記述される。
そして、各スレッドの処理が記述される。以下、まず、Thread1のスレッド処理の生成について説明する。上記の通り、Thread1は、タイミング仕様ID=‘1’に対応する処理であり、図3(b)のタイミング仕様13と図3(a)のデータ仕様12とから、タイミング仕様ID=‘1’に対応する処理は、データ“PWMOutput”の送信処理であって、“100ms周期”の定周期処理であることが分かる。
これより、まず上記(i)の処理によって、処理実行を100ms待つ処理として、図示の“wait(100,SIM_TIME_MS)”が記述される。尚、SIM_TIME_MSは、100の単位がMS(ミリ秒)であることを示す記述である。
次に、上記(ii)前処理作成を行う。タイミング仕様ID=‘1’に対応する前処理(その関数名)は、図4(a)に示す前処理仕様14の例では“pwm.getValue()”である。これと上記データ“PWMOutput”と定型表現によって、ソースコード5040に示す“PWMOutput data = pwm.getValue()”が記述される。
そして、上記(iii)の処理を行う。ここでは送信処理であるので、データ送信時の呼出しの定型表現である図示の“sendData(data)”が記述される。
図4(b)に示す例では、タイミング仕様ID=‘1’に対応する後処理は無いので、以上でThread1の処理を生成完了となる。
次に、以下、Thread2_3のスレッド処理の生成について説明する。
この場合、上記のことから、まず、タイミング仕様ID=‘2’に係わる処理を生成し、続いて、タイミング仕様ID=‘3’に係わる処理を生成する。
まず、タイミング仕様ID=‘2’に関して、上記(ii)前処理作成を行う。これは、図4(a)の例ではタイミング仕様ID332=‘2’に対応する前処理333は、“uart.clearRecvDataArea()”であるので、これをそのままソースコード5040に記述する。続いて上記(iii)では、タイミング仕様ID=‘2’は受信処理であり、データ名称は図3(a)の例では“UARTData”であるので、これと図8に示すデータ受信時の呼出の定型表現とから、図示の“UARTData recvData = receive()”が、ソースコード5040に記述される。
そして、上記(iv)後処理では、図4(b)の例ではタイミング仕様ID342=‘2’に対応する後処理343は、“uart.setRecvData(#recvData)”であるので、これがソースコード5040に記述される。
以上で、タイミング仕様ID=‘2’に係わる処理が生成完了する。
続いて、タイミング仕様ID=‘3’に係わる処理生成を行う。まず、上記(ii)前処理作成を行う。これは、まず、図4(a)の例ではタイミング仕様ID332=‘3’に対応する前処理333は、“#sendData=uart.getDataToBeSent()”であり、これを取得する。更に、図3(b)の例では対応するデータ仕様ID322=‘1’であるので図3(a)のデータ仕様12よりデータ名称は“UARTData”であるので、これを取得する。そして、これら取得データを用いて、図6のソースコード5040に下記の記述を行う。
UARTData sendData=uart.getDataToBeSent()
次に、上記(iii)では、タイミング仕様ID321=‘3’に対応する「受信または送信」323は、“送信”であることから、データ送信時の呼出の定型表現である“send(sendData)”を、図6のソースコード5040に記述する。
最後に、上記(iv)後処理で、タイミング仕様ID342=‘3’に対応する後処理343である“uart.cleanDataAreaToBeSent()”が、図6のソースコード5040に記述される。
例えば、この様にして、図6のソースコード5040が生成される。
尚、上述したデータ送受信ソフトウェア16の自動生成処理は、上記ソフトウェア生成メイン処理部11が実行する。
図9に、図5、図6に示したデータ送受信ソフトウェア16(ソースコード5020,5030,5040)の動作を示す処理フローチャート図を示す。尚、本装置で作成されたデータ送受信ソフトウェア16は、例えば制御基板のシミュレータ30に転送されて記憶され、このシミュレータ30において実行されることで、例えば図9の処理が実行されるものである。尚、制御基板のシミュレータ30の上記シミュレーション処理部31が、例えば図9の処理を実行するものである。
まず、図9の図上左側に示すように、ソースコード5020(メイン関数)が実行され、上記2つのスレッド(Thread1,Thread2_3)を起動する。そして、これでメイン関数は終了する。
起動されたThread1は、無限ループで図示のステップS21〜S23の処理を実行する。起動されたThread2_3は、無限ループで図示のステップS31〜S36の処理を実行する。
まず、Thread1の処理について説明する。
この処理は、100ms経過する毎に(ステップS21)、ステップS22、S23の処理を実行するものである。ステップS22では、上記関数“pwm.getValue()”を実行する。ここでは、この関数は、PWMデータをPWM処理オブジェクト(pwm)から取得する処理を実行するものとする。そして、ステップS23では、上記“sendData(data)”を実行することで、上記取得したPWMデータを、主回路のシミュレータ20へ送信する。
次に、Thread2_3の処理について説明する。
この処理では、まず上記関数“uart.clearRecvDataArea()”を実行する。ここでは、この関数は、上記“UARTData”の受信データ領域をクリアする処理であるものとする(ステップS31)。そして、主回路のシミュレータ20から送信された“UARTData”を受信したら(ステップS32)、この受信データをUART処理オブジェクト(uart)に設定する(上記“uart.setRecvData(recvData)”を実行する)(ステップS33)。
ここまでが上記タイミング仕様ID=‘2’の処理であり、続いて、上記タイミング仕様ID=‘3’の処理を実行する。この処理では、まず、“UARTData”をUART処理オブジェクト(uart)から取得する(上記“UARTData sendData=uart.getDataToBeSent()”を実行する)(ステップS34)。
続いて、ステップS35では、上記“sendData(data)”を実行することで、上記ステップS34で取得した“UARTData”を、主回路のシミュレータ20へ送信する。最後に、上記関数“uart.cleanDataAreaToBeSent()”を実行することで、“UARTData”の送信データ領域をクリアする(ステップS36)。
尚、上記“UARTData”の送信データ領域や受信データ領域は、上記各種データ格納領域32の一部であると見做しても構わない。
以上、本装置で自動的に生成されて制御基板のシミュレータ30で実行されるデータ送受信処理の一例について説明した。
ここで、上記の通り、本装置では、主回路のシミュレータ20のデータ送受信処理も自動生成する。この処理は、上記制御基板のシミュレータ30のデータ送受信処理と関連する処理である。これより、上述したように、データ仕様12に関しては制御基板と共通の例えば図3(a)に示すものを使用する。一方、上記タイミング仕様13、前処理仕様14、後処理仕様15に関しては、主回路のシミュレータ20用のものを別途作成しておく。ここでは、主回路のシミュレータ20用のタイミング仕様13、前処理仕様14、後処理仕様15の具体例は、特に示さないが、例えば上記図3(b)、図4(a)、(b)に示した制御基板用の場合と略同様にして、開発者等が任意に作成するものである。
そして、これらデータ仕様12や、主回路のシミュレータ20用のタイミング仕様13、前処理仕様14、後処理仕様15等に基づいて、例えば図5、図6に示すフローチャート図の処理と同様の処理によって、主回路のシミュレータ20用のデータ送受信ソフトウェア16を生成する。
主回路のシミュレータ20用のデータ送受信ソフトウェア16の具体例は、特に示さないが、シミュレータ20においてこのソフトウェア16を実行する場合の処理フローチャート図を、図10に示すものとする。
ここで、上記のように、図9の処理と図10の処理とは、互いに関連している。例えば、制御基板のシミュレータ30における送信処理と、主回路のシミュレータ20による受信処理とは、関連している。つまり、例えば、制御基板のシミュレータ30で上記ステップS23の送信処理により送信されたPWMデータは、主回路のシミュレータ20における後述するステップS41の受信処理により受信される。
同様に、制御基板のシミュレータ30における受信処理と、主回路のシミュレータ20による送信処理とは、関連している。つまり、例えば、主回路のシミュレータ20で後述するステップS52の処理により送信されたUARTデータは、制御基板のシミュレータ30において上記ステップS32の処理で受信される。
尚、上記の通り、主回路のシミュレータ20におけるデータ仕様は、制御基板のシミュレータ30と共通であるため、新たに作成する必要はない。また、図9の処理(制御基板のシミュレータ30の処理)と図10の処理(主回路のシミュレータ20の処理)とは、互いに異なるプログラムの処理であるため、同一名称の関数(main、Thread1,Thread2_3等)があっても、これらの処理が主回路のシミュレータ20と制御基板のシミュレータ30で混同されることはない。
以下、図10について、簡単に説明するものとする。尚、図10の処理は、主回路のシミュレータ20の上記シミュレーション処理部21によって実行されるものである。
まず、図10の図上左側に示すように、メイン関数が実行され、2つのスレッド(Thread1,Thread2_3)を起動する。そして、これでメイン関数は終了する。尚、上記の通り、これらThread1,Thread2_3は、図9の2つのスレッドと同一名称であるが、処理内容は異なるものである。
起動されたThread1は、無限ループで図示のステップS41、S42の処理を実行する。起動されたThread2_3は、無限ループで図示のステップS51〜S56の処理を実行する。
まず、Thread1の処理について説明する。
Thread1の処理は、図示の例では、上記ステップS23で制御基板のシミュレータ30から送信されてくる上記PWMデータを受信すると(ステップS41)、この受信データをPWM処理オブジェクト(pwm)に設定する処理である(ステップS42)。
また、Thread2_3の処理は、図示の例では、まず、“UARTData”をUART処理オブジェクト(uart)から取得し(ステップS51)、この“UARTData”を制御基板のシミュレータ30へ送信する(ステップS52)。そして、“UARTData”の送信データ領域をクリアする(ステップS53)。
続いて、“UARTData”の受信データ領域をクリアして(ステップS54)、制御基板のシミュレータ30が上記ステップS35によって上記“UARTData”を送信してくるのを待つ。そして、制御基板のシミュレータ30が送信した“UARTData”を受信すると(ステップS55)、この受信データをUART処理オブジェクト(uart)に設定する(ステップS56)。
尚、上記“UARTData”の送信データ領域や受信データ領域は、上記各種データ格納領域22の一部と見做して構わない。
尚、上記ステップS32、S41、S55の処理は、所定のデータを受信したら次処理に移行するもの(ブロッキングコール)である。
尚、上記前処理仕様14の前処理333に示す関数名の関数のプログラムや、上記後処理仕様15の後処理343に示す関数名の関数のプログラムは、例えば上記作成されたデータ送受信ソフトウェア16を、制御基板のシミュレータ30や主回路のシミュレータ20に転送する際に一緒に送信するようにしてもよい。あるいは、この様な関数のプログラムは、予めシミュレータ20、30に記憶させておくようにしてもよい。
以上説明したように、ソフトウェア生成装置10によれば、例えば、図9と図10に示すような、制御基板のシミュレータ30と主回路のシミュレータ20とで相互に関連するデータ送信/受信処理を、自動的に生成することができる。
尚、上述した一例では、データ送受信ソフトウェア16(ソースコード)のプログラム言語は、Java言語を例にして説明したが、勿論、この例に限らない。また、制御基板のシミュレータ30用のソースコードと、主回路のシミュレータ20用のソースコードとで、プログラム言語が異なっていてもよい。
また、本実施例では、主回路のシミュレータ20用のソースコード生成時と制御基板のシミュレータ30用のソースコード生成に関し、別々にソフトウェア生成装置を動作させた。しかし、ソフトウェア生成装置の1回の動作により、主回路のシミュレータ20用のソースコードと制御基板のシミュレータ30用のソースコードの双方を生成および出力してもよい。
10 ソフトウェア生成装置
11 ソフトウェア生成メイン処理部
12 データ仕様
13 タイミング仕様
14 前処理仕様
15 後処理仕様
16 データ送受信ソフトウェア
20 主回路のシミュレータ
21 シミュレーション処理部
22 各種データ格納領域
30 制御基板のシミュレータ
31 シミュレーション処理部
32 各種データ格納領域
311 ID
312 名称
313 サイズ
321 タイミング仕様ID
322 データ仕様ID
323 「受信または送信」
324 タイミング
331 前処理仕様ID
332 タイミング仕様ID
333 前処理
341 後処理仕様ID
342 タイミング仕様ID
343 前処理
5010 グラフ
5020 ソースコード
5030 ソースコード
5040 ソースコード

Claims (5)

  1. 複数種類のシミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置であって、
    前記各シミュレータ間で送受信されるデータの仕様情報である送受信データ仕様情報が予め記憶された送受信データ仕様情報記憶手段と、
    前記各送受信データ毎の各送信処理/受信処理に係わる仕様情報であるタイミング仕様情報が予め記憶されたタイミング仕様情報記憶手段と、
    少なくとも前記送受信データ仕様情報と前記タイミング仕様情報とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成するデータ送受信プログラム生成手段と、
    を有することを特徴とするソフトウェア生成装置。
  2. 前記各送受信データの送信/受信に係わる前処理が、予め登録された前処理記憶手段と、
    前記各送受信データの送信/受信に係わる後処理が、予め登録された後処理記憶手段とを更に有し、
    前記データ送受信プログラム生成手段は、前記送受信データ仕様情報と前記タイミング仕様情報と、前記前処理または/及び後処理とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成することを特徴とする請求項1記載のソフトウェア生成装置。
  3. 前記タイミング仕様情報には、前記各送信処理/受信処理の実行条件が含まれていることを特徴とする請求項1記載のソフトウェア生成装置。
  4. 前記送受信データ仕様情報は、前記複数のシミュレータに共通の情報であり、
    前記タイミング仕様情報、前記前処理、前記後処理は、各シミュレータ毎に個別に設けられた情報であることを特徴とする請求項記載のソフトウェア生成装置。
  5. 前記実行条件は、実行周期あるいは他の送信処理/受信処理の実行完了を起動条件とするものであることを特徴とする請求項記載のソフトウェア生成装置。
JP2014164893A 2014-08-13 2014-08-13 ソフトウェア生成装置 Expired - Fee Related JP6398456B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014164893A JP6398456B2 (ja) 2014-08-13 2014-08-13 ソフトウェア生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014164893A JP6398456B2 (ja) 2014-08-13 2014-08-13 ソフトウェア生成装置

Publications (2)

Publication Number Publication Date
JP2016040702A JP2016040702A (ja) 2016-03-24
JP6398456B2 true JP6398456B2 (ja) 2018-10-03

Family

ID=55541017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014164893A Expired - Fee Related JP6398456B2 (ja) 2014-08-13 2014-08-13 ソフトウェア生成装置

Country Status (1)

Country Link
JP (1) JP6398456B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101833839B1 (ko) * 2016-10-14 2018-03-05 주식회사 샵캐스트 모바일 디바이스 기반의 저작권 기술에 대한 운영 전력 감소 개발 장치 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332828A (ja) * 1993-05-19 1994-12-02 Hitachi Ltd 通信処理プログラム開発支援システム
JP3126848B2 (ja) * 1993-05-21 2001-01-22 株式会社エフ・エフ・シー 計算機

Also Published As

Publication number Publication date
JP2016040702A (ja) 2016-03-24

Similar Documents

Publication Publication Date Title
TWI581188B (zh) The way to load the driver and the embedded device
JP2017062767A5 (ja)
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
US9372683B2 (en) Automatic generation of class identifiers from source code annotations
WO2021057252A1 (zh) 一种业务处理流程配置方法、业务请求处理方法及装置
US8868976B2 (en) System-level testcase generation
JP6673355B2 (ja) 配備装置、配備方法、及び、プログラム
CN108920496B (zh) 一种渲染方法及装置
JP6673359B2 (ja) システム構築支援システム、方法およびプログラム
JP2016045893A (ja) プログラム情報生成システム、方法、及びプログラム
US9380001B2 (en) Deploying and modifying a service-oriented architecture deployment environment model
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
CN112559143A (zh) 任务调度方法、系统及计算设备
TWI694377B (zh) 行動原生應用程式開發平台
JP6398456B2 (ja) ソフトウェア生成装置
JP2017522639A5 (ja)
JP2008165342A (ja) ソースコード生成方法及び装置並びにプログラム
US20210271458A1 (en) Managing an app method and system
US9405514B1 (en) Process fragment management
JP2013235508A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
JP2012048329A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
JP6981124B2 (ja) システム構築支援装置、システム構築支援方法、及びプログラム
JP2011165051A (ja) 開発支援装置及び方法並びにプログラム
JP6930141B2 (ja) 監視定義生成装置、監視定義生成方法および監視定義生成プログラム
JP6676122B2 (ja) 高速のローディング速度を有するコンポーネント生成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180326

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: 20180807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180820

R150 Certificate of patent or registration of utility model

Ref document number: 6398456

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees