図面 (/)

技術 ソフトウェア生成装置

出願人 富士電機株式会社
発明者 内田修平
出願日 2014年8月13日 (5年11ヶ月経過) 出願番号 2014-164893
公開日 2016年3月24日 (4年4ヶ月経過) 公開番号 2016-040702
状態 特許登録済
技術分野 ストアードプログラム
主要キーワード 定周期処理 図上左側 コンピュータ処理用 可変長配列 定型表現 データ送受信プログラム 処理仕様 シミュレーションソフトウェア
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年3月24日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

解決手段

ソフトウェア生成装置10には、データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが、予め記憶されている。データ仕様12は、上記各シミュレータ間で送受信されるデータ(送受信データ)の仕様情報が予め記憶されたものである。タイミング仕様13は、上記各送受信データ毎の各送信処理受信処理に係わる仕様情報であるタイミング仕様情報が、予め記憶されたものである。上記ソフトウェア生成メイン処理部11は、少なくとも上記送受信データ仕様情報と上記タイミング仕様情報とに基づいて、上記各シミュレータ間のデータ送受信ソフトウェア16を生成する。

概要

背景

組込み機器の開発において、実機を使用することなく、主回路とその制御プログラム制御基板)の動作を、PC上でシミュレーションすることにより、機器の開発、および動作検証をすることがある。これは、より早い段階で設計の問題点を明確にすることにより、実機開発後に不具合発見されることに起因する手戻りを、未然に防ぐためである。

これに関して、機器上の全ての装置を単一のシミュレータで動作させるのではなく、主回路のシミュレータと、制御基板(CPU/マイコン等を含む)のシミュレータとの間で、同期を取りながら動作させることがある。

ここで、「同期」とは、主回路のシミュレータと制御基板のシミュレータとの間で、シミュレータにおける仮想時刻(以下、シミュレーション時刻)が一致するように、双方のシミュレータの動作有無あるいは動作速度を調整のうえ、双方のシミュレータの間でデータを送受信することを意味する。

PC上でのシミュレーションにあたっては、シミュレーション実行に必要なシミュレーションモデルの作成に時間がかかるという課題がある。本課題の解決方法に関しては、例えば特許文献1の従来技術が知られている。

特許文献1の発明は、ハードウェアモデルを構成するソフトウェア自動生成することにより、ハードウェアモデルの開発工数を削減するものである。
特許文献1の発明では、ハードウェアをシミュレーションするためのソフトウェアを生成するソフトウェア生成装置であって、以下の各構成を有する。
・ハードウェアの処理開始が指示されてから終了するまでの時間を示すタイミング仕様データ(603)を記憶する記憶手段;
・上記タイミング仕様データを基に、上記ハードウェアの処理開始が指示されると上記ハードウェアの処理を行わずにスケジューラに対して時間情報を設定し、上記時間経過後のスケジューラからの通知により割り込み又はコマンド実行の処理を行うソフトウェア(104)を生成するプロセッサ(604)。

概要

シミュレータ間のデータ送受信ソフトウェアを自動生成可能にする。ソフトウェア生成装置10には、データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが、予め記憶されている。データ仕様12は、上記各シミュレータ間で送受信されるデータ(送受信データ)の仕様情報が予め記憶されたものである。タイミング仕様13は、上記各送受信データ毎の各送信処理受信処理に係わる仕様情報であるタイミング仕様情報が、予め記憶されたものである。上記ソフトウェア生成メイン処理部11は、少なくとも上記送受信データ仕様情報と上記タイミング仕様情報とに基づいて、上記各シミュレータ間のデータ送受信ソフトウェア16を生成する。

目的

本発明の課題は、シミュレータ間のデータ送受信ソフトウェアを自動生成可能にすることができ、これによってシミュレーションソフトウェア作成時間を短縮することができるソフトウェア生成装置等を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数種類シミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置であって、前記各シミュレータ間で送受信されるデータの仕様情報が予め記憶された送受信データ仕様情報記憶手段と、前記各送受信データ毎の各送信処理受信処理に係わる仕様情報であるタイミング仕様情報が予め記憶されたタイミング仕様情報記憶手段と、少なくとも前記送受信データ仕様情報と前記タイミング仕様情報とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成するデータ送受信プログラム生成手段と、を有することを特徴とするソフトウェア生成装置

請求項2

前記各送受信データの送信/受信に係わる前処理が、予め登録された前処理記憶手段と、前記各送受信データの送信/受信に係わる後処理が、予め登録された後処理記憶手段とを更に有し、前記データ送受信プログラム生成手段は、前記送受信データ仕様情報と前記タイミング仕様情報と、前記前処理または/及び後処理とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成することを特徴とする請求項1記載のソフトウェア生成装置。

請求項3

前記タイミング仕様情報には、前記各送信処理/受信処理の実行条件が含まれていることを特徴とする請求項1記載のソフトウェア生成装置。

請求項4

前記データ仕様情報は、前記複数のシミュレータに共通の情報であり、前記タイミング仕様情報、前処理、後処理は、各シミュレータ毎に個別に設けられた情報であることを特徴とする請求項1または2記載のソフトウェア生成装置。

請求項5

前記実行条件は、実行周期あるいは他の送信処理/受信処理の実行完了起動条件とするものであることを特徴とする請求項1〜3の何れかに記載のソフトウェア生成装置。

技術分野

0001

本発明は、複数のシミュレータを含むシミュレーション装置ソフトウェアを生成する装置に関する。

背景技術

0002

組込み機器の開発において、実機を使用することなく、主回路とその制御プログラム制御基板)の動作を、PC上でシミュレーションすることにより、機器の開発、および動作検証をすることがある。これは、より早い段階で設計の問題点を明確にすることにより、実機開発後に不具合発見されることに起因する手戻りを、未然に防ぐためである。

0003

これに関して、機器上の全ての装置を単一のシミュレータで動作させるのではなく、主回路のシミュレータと、制御基板(CPU/マイコン等を含む)のシミュレータとの間で、同期を取りながら動作させることがある。

0004

ここで、「同期」とは、主回路のシミュレータと制御基板のシミュレータとの間で、シミュレータにおける仮想時刻(以下、シミュレーション時刻)が一致するように、双方のシミュレータの動作有無あるいは動作速度を調整のうえ、双方のシミュレータの間でデータを送受信することを意味する。

0005

PC上でのシミュレーションにあたっては、シミュレーション実行に必要なシミュレーションモデルの作成に時間がかかるという課題がある。本課題の解決方法に関しては、例えば特許文献1の従来技術が知られている。

0006

特許文献1の発明は、ハードウェアモデルを構成するソフトウェアを自動生成することにより、ハードウェアモデルの開発工数を削減するものである。
特許文献1の発明では、ハードウェアをシミュレーションするためのソフトウェアを生成するソフトウェア生成装置であって、以下の各構成を有する。
・ハードウェアの処理開始が指示されてから終了するまでの時間を示すタイミング仕様データ(603)を記憶する記憶手段;
・上記タイミング仕様データを基に、上記ハードウェアの処理開始が指示されると上記ハードウェアの処理を行わずにスケジューラに対して時間情報を設定し、上記時間経過後のスケジューラからの通知により割り込み又はコマンド実行の処理を行うソフトウェア(104)を生成するプロセッサ(604)。

先行技術

0007

特開2008−204006号公報

発明が解決しようとする課題

0008

特許文献1の技術を使用することにより、制御基板に実装されるマイコン内部のペリフェラルモデルを自動生成することが可能であり、シミュレーションモデルの作成時間短縮に有効である。

0009

しかし、特許文献1の技術では、主回路と制御基板の間でデータを送受信する箇所のシミュレーションモデルの自動生成ができない。すなわち、主回路のシミュレータと制御基板のシミュレータの間でデータを送受信するソフトウェアを自動生成することが出来ない。また、この問題は、主回路のシミュレータと制御基板のシミュレータとの間のデータ送受信処理に限らず、何等かの複数のシミュレータ間のデータ送受信処理に関しても、同様である。

0010

本発明の課題は、シミュレータ間のデータ送受信ソフトウェアを自動生成可能にすることができ、これによってシミュレーションソフトウェア作成時間を短縮することができるソフトウェア生成装置等を提供することである。

課題を解決するための手段

0011

本発明のソフトウェア生成装置は、複数種類のシミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置であって、下記の構成を有する。

0012

・前記各シミュレータ間で送受信されるデータの仕様情報が予め記憶された送受信データ仕様情報記憶手段;
・前記各送受信データ毎の各送信処理受信処理に係わる仕様情報であるタイミング仕様情報が予め記憶されたタイミング仕様情報記憶手段;
少なくとも前記送受信データ仕様情報と前記タイミング仕様情報とに基づいて、前記各シミュレータ間のデータ送受信プログラムを生成するデータ送受信プログラム生成手段:

発明の効果

0013

本発明のソフトウェア生成装置等によれば、シミュレータ間のデータ送受信ソフトウェアを自動生成可能にすることができ、これによってシミュレーションソフトウェア作成時間を短縮することができる。

図面の簡単な説明

0014

本例のソフトウェア生成装置の概略構成図である。
シミュレーション装置の具体例である。
(a)はデータ仕様、(b)はタイミング仕様の具体例である。
(a)は前処理仕様、(b)は後処理仕様の具体例である。
データ送受信ソフトウェア生成処理フローチャート図等(1/2)である。
データ送受信ソフトウェア生成処理のフローチャート図等(2/2)である。
図5等に示すソースコード例の説明図(1/2)である。
図5等に示すソースコード例の説明図(2/2)である。
制御基板のシミュレータのデータ送受信ソフトウェアの実行例である。
主回路のシミュレータのデータ送受信ソフトウェアの実行例である。

実施例

0015

以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例のソフトウェア生成装置の概略構成図である。
本例のソフトウェア生成装置は、複数種類のシミュレータより成るシミュレーション装置に係わる各シミュレータ間のデータ送受信プログラムを生成する装置である。

0016

図1のソフトウェア生成装置10は、ソフトウェア生成メイン処理部11を有する。
ソフトウェア生成装置10には、その不図示の記憶部(メモリ等)に予め図示のデータ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが記憶されている。尚、これら各種データを記憶する記憶部を、それぞれ、データ仕様記憶部、タイミング仕様記憶部、前処理仕様記憶部、後処理仕様記憶部等と呼ぶものとする。

0017

尚、ソフトウェア生成装置10は、例えば一例としてはパソコン上で実現される。よって、ハードウェア的には一般的なパソコンの構成を有するものであってよい。つまり、特に図示しないが、例えば、CPU/MPU等の演算プロセッサハードディスク、メモリ等の記憶装置等を有しており、更に通信機能部や、キーボードマウス等の入力操作部、ディスプレイ等の表示部等を有するものであってもよい。

0018

上記記憶装置には、予め所定のアプリケーションプログラムが記憶されており、上記演算プロセッサがこのアプリケーションプログラムを実行することにより、例えば上記ソフトウェア生成メイン処理部11の機能や、後述する図5図6の処理等が実現される。

0019

また、上記記憶装置には、上記データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データが記憶される。
また、上記データ仕様12、タイミング仕様13、前処理仕様14、後処理仕様15の各種データは、例えば一例としては、開発者等が上記入力操作部により任意のデータを入力する作業を行うことで、作成されるものであってもよい。

0020

データ仕様12(データ仕様記憶部)は、上記各シミュレータ間で送受信されるデータ(送受信データ)の仕様情報が予め記憶されたものである。タイミング仕様13(タイミング仕様記憶部)は、上記各送受信データ毎の各送信処理/受信処理に係わる仕様情報であるタイミング仕様情報が、予め記憶されたものである。

0021

上記ソフトウェア生成メイン処理部11は、少なくとも上記送受信データ仕様情報と上記タイミング仕様情報とに基づいて、上記各シミュレータ間のデータ送受信プログラム(データ送受信ソフトウェア16)を生成する。

0022

また、前処理仕様14(前処理仕様記憶部)は、上記各送受信データの送信/受信に係わる前処理が、予め登録されたものである。後処理仕様15(後処理仕様記憶部)は、上記各送受信データの送信/受信に係わる後処理が、予め登録されたものである。

0023

上記ソフトウェア生成メイン処理部11は、例えば、上記送受信データ仕様情報と上記タイミング仕様情報と、上記前処理または/及び後処理とに基づいて、上記各シミュレータ間のデータ送受信プログラムを生成する。

0024

また、例えば、上記タイミング仕様情報には、上記各送信処理/受信処理の実行条件が含まれている。この実行条件は、例えば、実行周期あるいは他の送信処理/受信処理の実行完了起動条件とするものであり、一例が後述する図3(b)のタイミング324であり、後に説明する。

0025

また、上記データ仕様情報は、上記複数のシミュレータに共通の情報であり、上記タイミング仕様情報、前処理、後処理は、各シミュレータ毎に個別に設けられた情報である。
上記ソフトウェア生成メイン処理部11は、上記のように予め記憶された各種データを用いて、図示のデータ送受信ソフトウェア16を生成する。このデータ送受信ソフトウェア16は、例えば図2に示す2つのシミュレータ20−30間のデータ送受信に係わるプログラムである。この例では、データ送受信ソフトウェア16は、シミュレータ20用とシミュレータ30用の2つが生成されることになる。

0026

ここで、図2の例について説明する。
図2には、上記背景技術の説明に応じた、主回路のシミュレータ20と、制御基板のシミュレータ30とから成るシミュレーション装置を示す。

0027

主回路のシミュレータ20、制御基板のシミュレータ30の各々には、シミュレーション処理21、31、および各種データ格納領域22,32があり、これらを使用してシミュレーション処理が実行される。

0028

尚、各シミュレータ20,30は、例えば一例としてはパソコン上で実現される。よって、ハードウェア的には一般的なパソコンの構成を有するものであってよい。つまり、特に図示しないが、例えば、CPU/MPU等の演算プロセッサ、ハードディスク、メモリ等の記憶装置等を有している。そして、記憶装置には上記ソフトウェア生成装置10で生成されたデータ送受信ソフトウェア16等のシミュレーション用のプログラムが格納される。上記演算プロセッサが、このプログラムを実行することで、例えば後述する図9図10の処理等が実行される。

0029

また、主回路のシミュレータ20のシミュレーション処理21と、制御基板のシミュレータ30のシミュレーション処理31との間で、データの送受信が実行される。送受信されるデータとしては、PWM電圧指令値の出力、A/Dコンバータ入力電圧シリアル通信等が挙げられる。この様なデータ送受信処理のプログラムが、上記データ送受信ソフトウェア16である。但し、本発明の対象は、これらに限定されない。

0030

この様に、ソフトウェア生成装置10は、例えば一例としては、図2に示すような主回路のシミュレータ20と、制御基板のシミュレータ30との間のデータ送受信処理プログラム(ソースコード)を、自動的に生成するものである。本説明では、主に、この例を用いて具体例を説明するが、勿論、この例に限らない。ソフトウェア生成装置10は、何等かの複数のシミュレータ間のデータ送受信処理プログラムを、自動的に生成するものである。

0031

尚、本例では、複数のシミュレータ間のデータ送受信処理プログラム生成の為に予め用意されるデータとして、図示のようにデータ仕様12、タイミング仕様13、前処理仕様14、および後処理仕様15の4種類の仕様データを示すが、この例に限らない。例えば、この4種類の全てを纏めて1つの仕様データとして扱ってもよいし、4種類のうちの一部を纏めて扱ってもよい。例えば、前処理仕様14と後処理仕様15を纏めて1つの仕様とすることで、これとデータ仕様12およびタイミング仕様13の3種類の仕様を入力とするものであってもよい。

0032

尚、上記4種類のデータ仕様は、予め例えば開発者等が任意に設定・入力するものである。また、上記4種類のデータ仕様のうち、前処理仕様14および後処理仕様15は、必ずしも必要ないものである。

0033

ここで、図3(a)、(b)、図4(a)、(b)に、上記4種類のデータ仕様の具体例を示す。
図3(a)には、上記データ仕様12の具体例を示す。

0034

図示の例では、データ仕様12は、ID311、名称312、サイズ313等のデータ項目から成る。
データ仕様12は、上記シミュレータ20−30間で送受信されるデータの名前識別番号やサイズ等が、上記名称312、ID311、サイズ313(バイト単位)等に登録されたものである。図示の例では、名称312が“UARTData”、“PWMOutput”、“ADCInput”の3つの送受信データが、登録されている。尚、ID311は、単に各レコードの識別番号等を意味するものであっても構わない。

0035

ここで、上記のように、データ仕様12で仕様を定義する送受信データは、主回路のシミュレータ20と制御基板のシミュレータ30の間で送受信されるデータである。したがって、データ仕様12は、主回路のシミュレータ20と制御基板のシミュレータ30で共通に用いられるものである。

0036

一方、データ仕様12以外の3種類の仕様13,14,15は、各シミュレータ個別の設定データである。そして、以下に説明する図3(b)、図4(a)、(b)に示す3種類の仕様データは、制御基板のシミュレータ30用のデータ送受信処理プログラム生成の為の仕様データの具体例である。尚、上記のことから主回路のシミュレータ20用の仕様データも、予め登録・記憶されていることになるが、ここではその具体例は特に示さないものとする。

0037

図3(b)には、制御基板のシミュレータ30用のタイミング仕様13の具体例を示す。
図示の例のタイミング仕様13は、タイミング仕様ID321、データ仕様ID322、「受信または送信」323、タイミング324等のデータ項目から成り、これらが上記タイミング仕様情報の一例である。

0038

タイミング仕様13は、上記データ仕様12に登録された送受信データの送信または受信のタイミング(条件;周期トリガ等)等が、登録されたものである。基本的には、このタイミング仕様13の各レコード毎に、送信処理または受信処理のプログラム(スレッド)が生成される。但し、条件が関連する処理に関しては、1つのスレッドに纏めて生成されても構わない。図示の例では、タイミング324に示す条件より、タイミング仕様ID321=‘3’の送信処理は、タイミング仕様ID321=‘2’の受信処理に関連する処理であるので、後述するようにこれらを1つに纏めたプログラムが、生成されることになる。詳しくは後述する。

0039

上記タイミング仕様ID321は、上記各レコードに割当てられるユニークな識別番号と見做してよい。換言すれば、タイミング仕様ID321は、上記各送受信データの送信/受信に係わる各処理に割当てられるユニークな識別番号と見做してよい。

0040

データ仕様ID322は、上記データ仕様12のID311に対応する。タイミング仕様13には、各レコード毎に、データ仕様ID322が示す送受信データに関して、「受信または送信」323によって送信処理であるか受信処理であるかが指定され、タイミング324によって起動条件等が指定されている。

0041

例えば、タイミング仕様13の先頭レコードを例にすると、データ仕様ID322=‘2’であり、「受信または送信」323=“送信”であるので、これは送受信データ“PWMOutput”の送信処理に関するタイミング仕様情報である。更に、タイミング324=“100ms周期”であることから、当該“PWMOutput”の送信処理は、100ms周期で実行すべき処理であることが、起動条件として指定されている。

0042

そして、この例では、“PWMOutput”の送信処理に係わる前処理と後処理が、それぞれ、前処理仕様14と後処理仕様15に登録されている。これは、図4(a)、(b)において、タイミング仕様ID332,342が‘1’であるレコードである。

0043

尚、図3(b)においてタイミング324に示す内容は、実際にはコンピュータ処理用に予め決められたフォーマットに従って記述されているが、その具体例は特に示さない。
図4(a)に示す具体例では、前処理仕様14は、前処理仕様ID331、タイミング仕様ID332、前処理333等の各データ項目より成る。

0044

ここでは、予め、様々な前処理のプログラム(関数など)が予め開発者等によって任意に作成されているものとし、前処理333には任意の前処理の関数などの関数名などが登録される。尚、これら各関数のプログラム等は、ソフトウェア生成装置10に記憶されており、生成したデータ送受信ソフトウェア16を例えば図2の各シミュレータ20,30に送信する際に、一緒に送信するようにしてもよい。

0045

上記前処理仕様14の各レコード毎に、タイミング仕様ID332が示すデータ送受信処理に係わる前処理の関数名などが、前処理333に登録される。尚、上記前処理仕様ID331は、各レコードに割当てられるユニークな識別番号と見做してよい。

0046

例えば、一例として図示の先頭レコードを例にすると、そのタイミング仕様ID332=‘1’であることから、上記「“PWMOutput”の送信処理」の直前に実行する処理の名称(関数名など)が、前処理333に登録されていることになる。図示の例では、関数名“pwm.getValue()”が、登録されている。

0047

尚、図示の3番目のレコードの前処理333における「#sendData」は、送信されるデータへの参照を示すための記法であり、本記法は発明の本質ではない。
図4(b)に示す具体例では、後処理仕様15は、後処理仕様ID341、タイミング仕様ID342、後処理343等の各データ項目より成る。

0048

後処理も上記前処理と同様に、予め、様々な後処理のプログラム(関数など)が予め開発者等によって任意に作成されているものとし、後処理343には任意の後処理の関数などの関数名などが登録される。各レコード毎に、タイミング仕様ID342が示すデータ送受信処理に係わる後処理の関数名などが、後処理343に登録される。尚、上記後処理仕様ID341は、各レコードに割当てられるユニークな識別番号と見做してよい。

0049

例えば、一例として図示の先頭レコードを例にすると、そのタイミング仕様ID342=‘1’であることから、上記「“PWMOutput”の送信処理」の直後に実行する処理の名称(関数名など)が、後処理343に登録されていることになる。但し、図示の例では、「無し」が登録されており、つまり、上記「“PWMOutput”の送信処理」に関しては、後処理は無いことになる。

0050

あるいは、一例として、図4(b)の2番目のレコードを例にすると、そのタイミング仕様ID342=‘2’であるので、図3(b)の例より、“UARTData”の受信処理の直後に、関数uart.setRecvData(引数は受信データ)を実行することが、定義されていることになる。尚、図示の後処理343に示す「#recvData」は、受信したデータへの参照を示すための記法であり、それ故に上記の通り“引数は受信データ”としているが、本記法は発明の本質ではない。

0051

図5図6には、制御基板のシミュレータ用のデータ送受信ソフトウェア生成処理のフローチャート図と、この処理によって生成されるデータ送受信ソフトウェア16(制御基板のシミュレータ用のデータ送受信ソフトウェア16のソースコード)の具体例を示す図である。

0052

図5図6とも、図上左側にフローチャート図を示し、図上右側にデータ送受信ソフトウェア16の具体例を示す。また、図5図6は、1つの処理を2つの図面に分けて示している。これより、以下、特に区別せずに図5等と記す場合もあるものとする。

0053

また、図5図6の図上右側に示すデータ送受信ソフトウェア16の具体例における各プログラムの記述に関する説明一覧を、図7図8に示す。
以下、図5図6図7図8を参照して、制御基板のシミュレータのデータ送受信ソフトウェア生成処理について、説明する。

0054

尚、ここでは一例として、出力されるソースコードは、Java(登録商標)の仕様に準じた記載としているが、ソースコードの言語は発明の本質ではない。
また、図5図6の図上右側に示す各ソースコードには、説明の都合上、5020、5030、5040の番号を付してあり、以下の説明ではこの番号を用いて説明する場合があるものとする。これら3つのソースコード5020,5030,5040を合わせたものが、本例で生成されるデータ送受信ソフトウェア16である。尚、図示の番号5010が付されたものは、ソースコードではなく、本処理中に得られるデータ(グラフ)である。

0055

図5等に示す処理は、まず、タイミング仕様13のタイミング324の内容に基づいて、各データ送受信処理間の依存関係判別する(ステップS11)。これは、例えば、図3(b)の例では、先頭レコードのタイミング324の「100ms周期」のような定周期が規定されている場合には、依存関係は無いと判定する。そして、依存関係が無いデータ送受信処理に関しては、それ単独に対して後述するスレッドを割当てる。一方、図3(b)に示す3番目のレコードのタイミング324のような、他のデータ送受信処理(タイミング仕様ID)と関連する記述がある場合には、依存関係があると判定する。この様な依存関係があるデータ送受信処理に関しては、依存先のデータ送受信処理と纏めて、後述するスレッドを割当てる。

0056

この様な依存関係の判定結果より、例えば図5に示すグラフ5010を生成する。具体的には、タイミング仕様ID321が‘1’である処理は、他のタイミング仕様IDの処理には依存しない。一方で、タイミング仕様ID321が‘3’である処理は、タイミング仕様ID321が‘2’である処理と依存関係がある。図3(b)の例では、タイミング仕様ID321が‘2’である処理が実行完了したら、続いて、タイミング仕様ID321が‘3’の処理を実行する必要がある。

0057

尚、グラフ5010を、グラフ理論におけるグラフ(ノードエッジから構成されるグラフ)と見做した場合、各ノード内の番号(ノード番号;図示の1,2,3)は、上記タイミング仕様ID321である。

0058

次に、ステップS11で抽出した依存関係(例えば上記グラフ5010)をもとに、スレッドのメイン関数呼び出す処理を生成する(ステップS12)。出力結果は、図示のソースコード5020に示す通りである。つまり、上記のように、各データ送受信処理に対して、単独または複数纏めて、スレッドのメイン関数を呼び出す処理を生成する。

0059

具体的には、例えば、グラフ5010を、グラフ理論におけるグラフ(ノードとエッジから構成されるグラフ)と見做した場合、エッジで接続されているノード群ごとに1個のスレッドを作成する。エッジが接続されていない単独のノードは、当該1つのノードについて1個のスレッドを作成する。これより、この例では、タイミング仕様IDが‘1’の処理のみのスレッドと、タイミング仕様IDが‘2’と‘3’の処理が含まれるスレッドという、2個のスレッドが作成されることになる。

0060

ここで、図示のソースコード5020の生成処理について、図7も参照して説明する。
まず、本例では、予め、各ソースコードの雛形が、開発者等によって任意に作成されて、メモリ等に記憶されているものとする。雛形には、定型表現等が記述されている。例えば、メイン関数を呼び出す処理であるソースコード5020の場合、図示の1行目と2行目の記述は、図7に示すように定型表現であり、予め「メイン関数を呼び出す処理」の雛形に、記述されているものである。すなわち、ソースコード5020における“class Main”や“public static void main()”は、予め雛形に記述されている定型表現である。

0061

また、ソースコード5020の4行目と6行目の記述における“new”と“start()”も、定型表現である。“new”と“start()”の間の“Thread1”や“Thread2_3”における“Thread”の部分は、予め登録されている固定文字列である。

0062

尚、図7に示すように、“new”は、Javaの新しいオブジェクトの作成を示す定型表現であり、“start()”はJavaでスレッドを開始する場合の関数である。
そして、ステップS12の処理では、“new”と“start()”との間に任意のスレッド名を記述する。図示の一例では、上記固定文字列“Thread”とタイミング仕様ID(ノード番号)を用いたスレッド名としている。つまり、上記タイミング仕様ID(ノード番号)=‘1’の処理に対応するスレッド名はThread1としている。同様に、上記タイミング仕様ID(ノード番号)=‘2’と‘3’の処理に対応するスレッド名はThread2_3としている。勿論、これは一例であり、この例に限るものではない。

0063

尚、図5に示すソースコード5020の3行目と5行目の記述(//で始まる説明文)は、説明の為に示しているだけであり、実際のソースコード5020には存在しなくてもよい。
次に、データ送受信ソフトウェア16におけるデータ型定義部分を生成する(ステップS13)。図示の例では、ステップS13の処理は、データ仕様12の名称312とサイズ313の情報を使用して、上記データ型定義部分を、図示のソースコード5030として生成・出力する。図示のようにソースコード5030には、上記データ仕様12に登録された3つのデータについて、それぞれ、データ型が定義されている。

0064

ここで、図示のソースコード5030において、“class”は、図7に示すようにJavaのクラ宣言関連の定型表現である。また、Listと記載しているデータは可変長配列、byte[数字]と記載しているデータは固定長配列である。換言すれば、図7に示すように、Listは可変長データの型、byte[x]は、長さxバイト固定のデータの型である(尚、xは整数)。

0065

これより、例えば、上記データ仕様12に登録された各データ毎に、雛形の“class”の記述の後に名称312を記述すると共に、サイズ313が固定長である場合には雛形のbyte[x]のxにサイズ313を代入し、あるいはサイズ313が可変長である場合にはListを記述することで、図示のソースコード5030を生成する。尚、本例では、図3(a)のデータ仕様12のサイズ313の「1以上」が、可変長であることを意味するものとするが、この例に限らない。また、尚、ソースコード5030におけるbyte[x]の後に記述の“data”は、予め雛形に記述されている定型表現である。

0066

ステップS13では、例えば一例としては上記のようにして、データ型定義部分の一例であるソースコード5030を生成する。
そして、続いて、ステップS14において、上記ソースコード5020で呼び出す各スレッドの記述を生成する。例えば、依存関係の先頭(グラフ5010においてエッジの始点側のノードに対応するもの)から順に、下記の各処理(i)〜(iv)を実行するソースコードを順に作成のうえ、対応するスレッドのメイン関数中に出力する。

0067

なお、下記の各処理(i)〜(iv)においては、必要に応じて、ステップS13で生成した各データ型定義を使用する。また、本処理結果の一例は、図6に示すソースコード5040である。

0068

(i) 指定された周期の時間、待つ処理を作成(タイミング仕様13のタイミング324をもとに作成)
(ii) 前処理作成(前処理仕様14の前処理333をもとに作成)
(iii)受信処理または送信処理作成(タイミング仕様13の「受信または送信」323やデータ仕様ID322等に基づいて作成)
(iv) 後処理作成(後処理仕様15の後処理343をもとに作成)
但し、定周期処理ではない場合、上記(i)の処理は行われない。

0069

上記処理(i)〜(iv)によって、例えば図6に示すソースコード5040が生成される。これについて、以下、図8等も参照して説明する。
まず、図6に示すソースコード5040において、下記の記述は、予め雛形に記述されている定型表現である。

0070

『 classスレッド名extendsThread {
void run() {
while (true) 』
上記定型表現における“スレッド名”として、上記ソースコード5020で作成した各スレッド名を記述する。これより、例えば、図示の“class Thread1 extends Thread”等が記述される。

0071

そして、各スレッドの処理が記述される。以下、まず、Thread1のスレッド処理の生成について説明する。上記の通り、Thread1は、タイミング仕様ID=‘1’に対応する処理であり、図3(b)のタイミング仕様13と図3(a)のデータ仕様12とから、タイミング仕様ID=‘1’に対応する処理は、データ“PWMOutput”の送信処理であって、“100ms周期”の定周期処理であることが分かる。

0072

これより、まず上記(i)の処理によって、処理実行を100ms待つ処理として、図示の“wait(100,SIM_TIME_MS)”が記述される。尚、SIM_TIME_MSは、100の単位がMS(ミリ秒)であることを示す記述である。

0073

次に、上記(ii)前処理作成を行う。タイミング仕様ID=‘1’に対応する前処理(その関数名)は、図4(a)に示す前処理仕様14の例では“pwm.getValue()”である。これと上記データ“PWMOutput”と定型表現によって、ソースコード5040に示す“PWMOutput data = pwm.getValue()”が記述される。

0074

そして、上記(iii)の処理を行う。ここでは送信処理であるので、データ送信時の呼出しの定型表現である図示の“sendData(data)”が記述される。
図4(b)に示す例では、タイミング仕様ID=‘1’に対応する後処理は無いので、以上でThread1の処理を生成完了となる。

0075

次に、以下、Thread2_3のスレッド処理の生成について説明する。
この場合、上記のことから、まず、タイミング仕様ID=‘2’に係わる処理を生成し、続いて、タイミング仕様ID=‘3’に係わる処理を生成する。

0076

まず、タイミング仕様ID=‘2’に関して、上記(ii)前処理作成を行う。これは、図4(a)の例ではタイミング仕様ID332=‘2’に対応する前処理333は、“uart.clearRecvDataArea()”であるので、これをそのままソースコード5040に記述する。続いて上記(iii)では、タイミング仕様ID=‘2’は受信処理であり、データ名称図3(a)の例では“UARTData”であるので、これと図8に示すデータ受信時の呼出の定型表現とから、図示の“UARTData recvData = receive()”が、ソースコード5040に記述される。

0077

そして、上記(iv)後処理では、図4(b)の例ではタイミング仕様ID342=‘2’に対応する後処理343は、“uart.setRecvData(#recvData)”であるので、これがソースコード5040に記述される。

0078

以上で、タイミング仕様ID=‘2’に係わる処理が生成完了する。
続いて、タイミング仕様ID=‘3’に係わる処理生成を行う。まず、上記(ii)前処理作成を行う。これは、まず、図4(a)の例ではタイミング仕様ID332=‘3’に対応する前処理333は、“#sendData=uart.getDataToBeSent()”であり、これを取得する。更に、図3(b)の例では対応するデータ仕様ID322=‘1’であるので図3(a)のデータ仕様12よりデータ名称は“UARTData”であるので、これを取得する。そして、これら取得データを用いて、図6のソースコード5040に下記の記述を行う。

0079

UARTData sendData=uart.getDataToBeSent()
次に、上記(iii)では、タイミング仕様ID321=‘3’に対応する「受信または送信」323は、“送信”であることから、データ送信時の呼出の定型表現である“send(sendData)”を、図6のソースコード5040に記述する。

0080

最後に、上記(iv)後処理で、タイミング仕様ID342=‘3’に対応する後処理343である“uart.cleanDataAreaToBeSent()”が、図6のソースコード5040に記述される。
例えば、この様にして、図6のソースコード5040が生成される。

0081

尚、上述したデータ送受信ソフトウェア16の自動生成処理は、上記ソフトウェア生成メイン処理部11が実行する。
図9に、図5図6に示したデータ送受信ソフトウェア16(ソースコード5020,5030,5040)の動作を示す処理フローチャート図を示す。尚、本装置で作成されたデータ送受信ソフトウェア16は、例えば制御基板のシミュレータ30に転送されて記憶され、このシミュレータ30において実行されることで、例えば図9の処理が実行されるものである。尚、制御基板のシミュレータ30の上記シミュレーション処理部31が、例えば図9の処理を実行するものである。

0082

まず、図9の図上左側に示すように、ソースコード5020(メイン関数)が実行され、上記2つのスレッド(Thread1,Thread2_3)を起動する。そして、これでメイン関数は終了する。

0083

起動されたThread1は、無限ループで図示のステップS21〜S23の処理を実行する。起動されたThread2_3は、無限ループで図示のステップS31〜S36の処理を実行する。

0084

まず、Thread1の処理について説明する。
この処理は、100ms経過する毎に(ステップS21)、ステップS22、S23の処理を実行するものである。ステップS22では、上記関数“pwm.getValue()”を実行する。ここでは、この関数は、PWMデータPWM処理オブジェクト(pwm)から取得する処理を実行するものとする。そして、ステップS23では、上記“sendData(data)”を実行することで、上記取得したPWMデータを、主回路のシミュレータ20へ送信する。

0085

次に、Thread2_3の処理について説明する。
この処理では、まず上記関数“uart.clearRecvDataArea()”を実行する。ここでは、この関数は、上記“UARTData”の受信データ領域クリアする処理であるものとする(ステップS31)。そして、主回路のシミュレータ20から送信された“UARTData”を受信したら(ステップS32)、この受信データをUART処理オブジェクト(uart)に設定する(上記“uart.setRecvData(recvData)”を実行する)(ステップS33)。

0086

ここまでが上記タイミング仕様ID=‘2’の処理であり、続いて、上記タイミング仕様ID=‘3’の処理を実行する。この処理では、まず、“UARTData”をUART処理オブジェクト(uart)から取得する(上記“UARTData sendData=uart.getDataToBeSent()”を実行する)(ステップS34)。

0087

続いて、ステップS35では、上記“sendData(data)”を実行することで、上記ステップS34で取得した“UARTData”を、主回路のシミュレータ20へ送信する。最後に、上記関数“uart.cleanDataAreaToBeSent()”を実行することで、“UARTData”の送信データ領域をクリアする(ステップS36)。

0088

尚、上記“UARTData”の送信データ領域や受信データ領域は、上記各種データ格納領域32の一部であると見做しても構わない。
以上、本装置で自動的に生成されて制御基板のシミュレータ30で実行されるデータ送受信処理の一例について説明した。

0089

ここで、上記の通り、本装置では、主回路のシミュレータ20のデータ送受信処理も自動生成する。この処理は、上記制御基板のシミュレータ30のデータ送受信処理と関連する処理である。これより、上述したように、データ仕様12に関しては制御基板と共通の例えば図3(a)に示すものを使用する。一方、上記タイミング仕様13、前処理仕様14、後処理仕様15に関しては、主回路のシミュレータ20用のものを別途作成しておく。ここでは、主回路のシミュレータ20用のタイミング仕様13、前処理仕様14、後処理仕様15の具体例は、特に示さないが、例えば上記図3(b)、図4(a)、(b)に示した制御基板用の場合と略同様にして、開発者等が任意に作成するものである。

0090

そして、これらデータ仕様12や、主回路のシミュレータ20用のタイミング仕様13、前処理仕様14、後処理仕様15等に基づいて、例えば図5図6に示すフローチャート図の処理と同様の処理によって、主回路のシミュレータ20用のデータ送受信ソフトウェア16を生成する。

0091

主回路のシミュレータ20用のデータ送受信ソフトウェア16の具体例は、特に示さないが、シミュレータ20においてこのソフトウェア16を実行する場合の処理フローチャート図を、図10に示すものとする。

0092

ここで、上記のように、図9の処理と図10の処理とは、互いに関連している。例えば、制御基板のシミュレータ30における送信処理と、主回路のシミュレータ20による受信処理とは、関連している。つまり、例えば、制御基板のシミュレータ30で上記ステップS23の送信処理により送信されたPWMデータは、主回路のシミュレータ20における後述するステップS41の受信処理により受信される。

0093

同様に、制御基板のシミュレータ30における受信処理と、主回路のシミュレータ20による送信処理とは、関連している。つまり、例えば、主回路のシミュレータ20で後述するステップS52の処理により送信されたUARTデータは、制御基板のシミュレータ30において上記ステップS32の処理で受信される。

0094

尚、上記の通り、主回路のシミュレータ20におけるデータ仕様は、制御基板のシミュレータ30と共通であるため、新たに作成する必要はない。また、図9の処理(制御基板のシミュレータ30の処理)と図10の処理(主回路のシミュレータ20の処理)とは、互いに異なるプログラムの処理であるため、同一名称の関数(main、Thread1,Thread2_3等)があっても、これらの処理が主回路のシミュレータ20と制御基板のシミュレータ30で混同されることはない。

0095

以下、図10について、簡単に説明するものとする。尚、図10の処理は、主回路のシミュレータ20の上記シミュレーション処理部21によって実行されるものである。
まず、図10の図上左側に示すように、メイン関数が実行され、2つのスレッド(Thread1,Thread2_3)を起動する。そして、これでメイン関数は終了する。尚、上記の通り、これらThread1,Thread2_3は、図9の2つのスレッドと同一名称であるが、処理内容は異なるものである。

0096

起動されたThread1は、無限ループで図示のステップS41、S42の処理を実行する。起動されたThread2_3は、無限ループで図示のステップS51〜S56の処理を実行する。

0097

まず、Thread1の処理について説明する。
Thread1の処理は、図示の例では、上記ステップS23で制御基板のシミュレータ30から送信されてくる上記PWMデータを受信すると(ステップS41)、この受信データをPWM処理オブジェクト(pwm)に設定する処理である(ステップS42)。

0098

また、Thread2_3の処理は、図示の例では、まず、“UARTData”をUART処理オブジェクト(uart)から取得し(ステップS51)、この“UARTData”を制御基板のシミュレータ30へ送信する(ステップS52)。そして、“UARTData”の送信データ領域をクリアする(ステップS53)。

0099

続いて、“UARTData”の受信データ領域をクリアして(ステップS54)、制御基板のシミュレータ30が上記ステップS35によって上記“UARTData”を送信してくるのを待つ。そして、制御基板のシミュレータ30が送信した“UARTData”を受信すると(ステップS55)、この受信データをUART処理オブジェクト(uart)に設定する(ステップS56)。

0100

尚、上記“UARTData”の送信データ領域や受信データ領域は、上記各種データ格納領域22の一部と見做して構わない。
尚、上記ステップS32、S41、S55の処理は、所定のデータを受信したら次処理移行するもの(ブロッキングコール)である。

0101

尚、上記前処理仕様14の前処理333に示す関数名の関数のプログラムや、上記後処理仕様15の後処理343に示す関数名の関数のプログラムは、例えば上記作成されたデータ送受信ソフトウェア16を、制御基板のシミュレータ30や主回路のシミュレータ20に転送する際に一緒に送信するようにしてもよい。あるいは、この様な関数のプログラムは、予めシミュレータ20、30に記憶させておくようにしてもよい。

0102

以上説明したように、ソフトウェア生成装置10によれば、例えば、図9図10に示すような、制御基板のシミュレータ30と主回路のシミュレータ20とで相互に関連するデータ送信/受信処理を、自動的に生成することができる。

0103

尚、上述した一例では、データ送受信ソフトウェア16(ソースコード)のプログラム言語は、Java言語を例にして説明したが、勿論、この例に限らない。また、制御基板のシミュレータ30用のソースコードと、主回路のシミュレータ20用のソースコードとで、プログラム言語が異なっていてもよい。

0104

また、本実施例では、主回路のシミュレータ20用のソースコード生成時と制御基板のシミュレータ30用のソースコード生成に関し、別々にソフトウェア生成装置を動作させた。しかし、ソフトウェア生成装置の1回の動作により、主回路のシミュレータ20用のソースコードと制御基板のシミュレータ30用のソースコードの双方を生成および出力してもよい。

0105

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 ソースコード

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 株式会社デンソーの「 車載システム」が 公開されました。( 2020/06/04)

    【課題】追加でインストールするアプリケーションの性能低下を抑制可能な車載システムを提供する。【解決手段】アプリ取得部の取得した追加アプリをインストール可能なECU100を複数備えた車載システム10は、... 詳細

  • キヤノン株式会社の「 情報処理装置及びその制御方法とプログラム」が 公開されました。( 2020/06/04)

    【課題】 装置を起動したときにメインプログラムを記憶するROMへの最初のアクセスから当該ROMの種類に対応したアクセスコマンド、パラメータでアクセスを行うことができるようにすることを目的とする。【解... 詳細

  • 株式会社東芝の「 情報処理システムおよび情報処理方法」が 公開されました。( 2020/06/04)

    【課題】モデル開発技法の標準化を図ることができる情報処理システムおよび情報処理方法を提供することである。【解決手段】実施形態の情報処理システムは、取得部と環境設定部とモデル処理部と管理部とインターフェ... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ