JP2008243044A - ハイブリッドモデルシミュレーション装置 - Google Patents
ハイブリッドモデルシミュレーション装置 Download PDFInfo
- Publication number
- JP2008243044A JP2008243044A JP2007085703A JP2007085703A JP2008243044A JP 2008243044 A JP2008243044 A JP 2008243044A JP 2007085703 A JP2007085703 A JP 2007085703A JP 2007085703 A JP2007085703 A JP 2007085703A JP 2008243044 A JP2008243044 A JP 2008243044A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- state transition
- simulation
- continuous system
- time
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【解決手段】変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行する装置であって、シミュレーション中に付加処理を実行し時刻と変数名と状態遷移の識別情報とを表す状態遷移履歴データを生成する付加処理実行部1006と、数値積分により連続系方程式を解くことで、時刻と変数名と、変数の値とを表す変数値時間履歴データを生成する連続系シミュレーション部1011と、変数値時間履歴データから、変数値の時刻変化を示すグラフを生成して表示し、状態遷移履歴データから、変数の状態遷移の表示画像を生成し、グラフに重ね合わせて表示するシミュレーション結果表示部1014と、を具備する。
【選択図】図1
Description
図1は、第1の実施形態に係るハイブリッドモデルシミュレーション装置を示すブロック図である。制御情報解析部1002はハイブリッドモデルプログラム1001を読み込み、モデル方程式登録プログラム1003、イベント処理プログラム1004、及びシミュレーション実行時付加処理プログラム1005を生成する。方程式解析部1007は主に常微分方程式などで記述されたモデル方程式登録プログラム1003を読み込み、解析結果を方程式データ記憶部1010に格納する。イベント処理部1008は、付加処理プログラムを実行するタイミングと連続系方程式を切り替えるタイミングを記述したイベント処理プログラム1004を読み込む。付加処理実行部1006はシミュレーション実行時付加処理プログラム1005を読み、イベント処理部1008は付加処理が実行可能になった場合に付加処理プログラムを実行する。付加処理プログラム中に状態遷移に関連するAPI(Application Program Interface)が呼ばれた場合には、その呼出履歴を状態遷移履歴記憶DB(データベース)1013に登録する。
(L2)down;event idle;
(L3)y=1;up;
(L4)when(up){
(L5) do {always y'=y+1;}watching (const);}
(L6)process(up){SetStatus("y","立ち上げ");}
(L7)when (y=10) const;
(L8)when(const){
(L9) do {always y'=0;}watching (down);}
(L10)process(const){SetStatus("y","等速");}
(L11)when (t=100) down;
(L12)when(down){
(L13) do {always y'=-1;}watching (idle);}
(L14)process(down){SetStatus("y","減速");}
(L15)when (y=1) idle;
(L16)when(idle){
(L17) do {always y'=0;}watching (up);}
(L18)process(idle){SetStatus("y","アイドル");}
このハイブリッドモデルプログラムではprocess文を用いて付加処理を実行している(L6、L10、L14、L18)。process文はイベント「up」「const」「down」「idle」によって付加処理プログラム(ここではSetStatus関数)を実行する。つまり、状態遷移条件が成立するとprocess文によってSetStatus関数が呼び出される。SetStatus関数は引数として変数名と状態遷移名を持つ。モデル方程式登録プログラム1003、イベント処理プログラム1004はC言語のプログラム(例えば、特開2004−178300号公報の段落[0063]を参照。)として出力され、シミュレーション実行時付加処理プログラム1005(SetStatus関数など)についてもC言語のプログラム(例えば、特開2004−220577号公報の段落[0052][数2]を参照。)として出力される。SetStatus関数は例えば以下のようなプログラムとして記述する。
FILE* fp = fopen("status_change_log.txt","a");
double time = getCurrentTime();
fprintf(fp,"%f, %s, %s\n",time,name,status_name);
fclose(fp);
}
ここでgetCurretnTime()関数は、現在のシミュレーション時刻を取得するAPIである。以下のような関数によって「status_change_log.txt」には以下のような出力になる。
int XXX_ActivateEqn(int eqnid)
int XXX_DeActivateEqn(int eqnid)
1つ目のAPI関数XXX_AddEqnDataは、1つの連続系方程式を表す文字列のポインタを引数に指定する。XXX_AddEqnDataは、この連続系方程式を構文解析し、連続系方程式の記述をシミュレーション実行可能なデータ構造(内部データ表現)に変換し、かかる内部データ表現を方程式データ記憶部1010に登録する処理を行う。なお、ここの連続系方程式には、ユニークなID番号が割り当てられる。たとえば「ab/cos(a−(c+b))−3c」という式が与えられたと仮定すると、木構造の内部データ表現を生成する。この木構造は、例えば線形多項式の親ノード(節)、掛け算のノード、割り算のノード、外部関数(四則演算以外の意)のノード、線形多項式を構成する各項のノードから構成される。本例において、木構造の葉に相当するものはすべて変数(a,b,c)であり、これらに実数の係数が加わって線形式となる。線形式はcosなどの外部関数の引数になったり、掛け算や割り算の対象となる。変数には、別途、値が確定しているかどうかのフラグが設けられており、またこのような木構造のデータに基づいて該変数の現在の値が保持される。木構造のすべての葉の値(すなわち変数の値)が確定していれば、式の値を計算することができる。方程式データ記憶部1010では、式の値の計算などを高速に行うことができるように、予め内部のデータ構造をつなぎ合わせて木構造を構成してある。上記処理において何らかのエラーが発生した場合には、err にエラーコードがセットされる。正常に処理が終了した場合は、登録された方程式のID番号を返り値とする。
if(getCurrentTime()==0)SetEvent(“up”);
というC言語のソースプログラムに変換される。また図2のL9の「const」イベントはシミュレーション中に各変数の値を取得するGetValue関数を用いて
if(GetValue(“y”)==10)SetEvent(“const”);
というC言語のソースプログラムに変換される。
static char eqn2[]="y'=0";
static char eqn3[]="y'=-1";
static char eqn4[]="y'=0";
static int eqn1id;
static int eqn2id;
static int eqn3id;
static int eqn4id;
int InitEqnData()
{
int err;
eqn1id = XXX_AddEqnData(eqn1, &err);
if(err!=0)return err;
eqn2id = XXX_AddEqnData(eqn2, &err);
if(err!=0)return err;
eqn3id = XXX_AddEqnData(eqn3, &err);
if(err!=0)return err;
eqn4id = XXX_AddEqnData(eqn4, &err);
if(err!=0)return err;
}
int ChangeEqn()
{
int err;
BOOL GetEvent(char *eventname);
if(GetEvent("up")){
Err=XXX_ActivateEqn(eqn1id);
if(err!=0)return err;
XXX_DeActiveteEqn(eqn4id);
if(err!=0)return err;
}
if(GetEvent("const")){
Err=XXX_ActivateEqn(eqn2id);
if(err!=0)return err;
XXX_DeActiveteEqn(eqn1id);
if(err!=0)return err;
}
if(GetEvent("down")){
Err=XXX_ActivateEqn(eqn3id);
if(err!=0)return err;
XXX_DeActiveteEqn(eqn2id);
if(err!=0)return err;
}
if(GetEvent("idle")){
Err=XXX_ActivateEqn(eqn4id);
if(err!=0)return err;
XXX_DeActiveteEqn(eqn2id);
if(err!=0)return err;
}
if(getCurrentTime()==0)SetEvent(“up");
if(GetValue(“y")==10)SetEvent(“const");
if(getCurrentTime()==100)SetEvent(“down");
if(GetValue(“y")==1)SetEvent(“idle");
}
なお、GetEventは、引数に指定された名前(eventname)のイベントが生起しているかどうかをチェックする関数である。
状態遷移名3005は状態遷移情報3004内か、状態遷移情報3004に対して一部重なる位置に配置される。また、状態遷移名3005は時間変化履歴グラフ2001とは重ならない領域に配置される。
図6は第2の実施形態に係るシミュレーション結果表示部を示すブロック図である。この図6に示すシミュレーション結果表示部1014は、変数値時間履歴記憶DB1013を解析してグラフ表示部4003に表示するための時間変化履歴グラフ2001を作成する変数履歴解析部4001と、状態遷移履歴記憶DB1012を解析してグラフ表示部4003に表示するための状態遷移情報3004及び状態遷移名3005を作成する状態遷移履歴解析部4002と、状態遷移を表示する変数名を選択するための状態表示切り替え部5001とから構成される。
図11は第3の実施形態に係り、シミュレーション結果表示部1014が2つの変数を同時に1つのグラフ領域に表示するよう構成した場合のグラフ表示部4003の表示例を示している。第3の実施形態においてシミュレーション結果表示部1014は、第一の変数に関する時間変化履歴グラフ6001と、第2の変数に関する時間変化履歴グラフ6002とを同時に表示可能となっている。
図13は2つの変数を同時に2つのグラフ領域に表示した場合の、グラフ表示部4003の表示例である。グラフ表示部4003は状態遷移補助線11001を持ち、上下のグラフで同一の状態遷移がある場合は、対応する線を描画している。この表示方法を用いることでグラフデータが重なって表示されることが避けられるため、グラフデータの視認性が向上する。また同一の状態遷移名を持つ状態遷移情報3004は同一の色で塗り潰すか、同一のハッチングパターンを用いることで、上下のグラフの状態遷移の比較が容易になる。また同一の色やハッチングパターンを用いている場合は、状態遷移名3005のどちらか一方を消去することもできる。
1002…制御情報解析部;
1003…モデル方程式登録プログラム;
1004…イベント処理プログラム;
1005…シミュレーション実行時付加処理プログラム;
1006…付加処理実行部;
1007…方程式解析部;
1008…イベント処理部;
1009…連続系方程式切り替え部;
1010…方程式データ記憶部;
1011…連続系シミュレーション部;
1012…変数値時間履歴記憶DB;
1013…状態遷移履歴記憶DB;
1014…シミュレーション結果表示部
Claims (6)
- 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーション装置であって、
前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成する付加処理実行部と、
時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成する連続系シミュレーション部と、
前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示するシミュレーション結果表示部と、を具備するハイブリッドモデルシミュレーション装置。 - 前記連続系方程式の記述に基づいて、モデル方程式登録プログラムを生成する第1のプログラム生成手段と、
前記状態遷移に伴う連続系方程式の切り替えに関する記述に基づいて、イベント処理プログラムを生成する第2のプログラム生成手段と、
前記モデル方程式登録プログラムを実行することにより、前記連続系方程式をシミュレーション実行可能なデータ構造に変換する変換手段と、
シミュレーションの開始によって前記イベント処理プログラムを実行し、イベントの発生に応じて前記連続系方程式の有効・無効を切り替える切り替え手段と、をさらに具備し、
前記連続系シミュレーション部は、前記切り替え手段において有効とされた連続系方程式に対応する前記データ構造を用いて、前記連続系方程式を解くことを特徴とする請求項1に記載のハイブリッドモデルシミュレーション装置。 - 前記シミュレーション結果表示部は、前記変数の状態遷移を識別可能な表示画像とともに、前記変数の状態遷移名を表示する請求項1又は2に記載のハイブリッドモデルシミュレーション装置。
- 前記シミュレーション結果表示部は、複数の変数についての変数値の変化を示す複数のグラフを生成して表示し、指定手段により指定されたグラフについて、前記変数の状態遷移を識別可能な表示画像を表示する請求項1乃至3のいずれかに記載のハイブリッドモデルシミュレーション装置。
- 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーション方法であって、
付加処理実行部が、前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成するステップと、
連続系シミュレーション部が、時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成するステップと、
シミュレーション結果表示部が、前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示するステップと、を具備するハイブリッドモデルシミュレーション方法。 - 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーションプログラムであって、
コンピュータに、
前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成する手順と、
時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成する手順と、
前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示する手順と、を実行させるためのハイブリッドモデルシミュレーションプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007085703A JP5091520B2 (ja) | 2007-03-28 | 2007-03-28 | ハイブリッドモデルシミュレーション装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007085703A JP5091520B2 (ja) | 2007-03-28 | 2007-03-28 | ハイブリッドモデルシミュレーション装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008243044A true JP2008243044A (ja) | 2008-10-09 |
JP5091520B2 JP5091520B2 (ja) | 2012-12-05 |
Family
ID=39914271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007085703A Active JP5091520B2 (ja) | 2007-03-28 | 2007-03-28 | ハイブリッドモデルシミュレーション装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5091520B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011059789A (ja) * | 2009-09-07 | 2011-03-24 | Toshiba Corp | ハイブリッドモデルシミュレーション装置および方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003271679A (ja) * | 2002-03-15 | 2003-09-26 | Toshiba Corp | ハイブリッドモデル作成方法及びプログラム |
JP2004178300A (ja) * | 2002-11-27 | 2004-06-24 | Toshiba Corp | ハイブリッドモデルを用いるシミュレーション方法およびプログラム |
JP2006099678A (ja) * | 2004-09-30 | 2006-04-13 | Nec Electronics Corp | シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム |
-
2007
- 2007-03-28 JP JP2007085703A patent/JP5091520B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003271679A (ja) * | 2002-03-15 | 2003-09-26 | Toshiba Corp | ハイブリッドモデル作成方法及びプログラム |
JP2004178300A (ja) * | 2002-11-27 | 2004-06-24 | Toshiba Corp | ハイブリッドモデルを用いるシミュレーション方法およびプログラム |
JP2006099678A (ja) * | 2004-09-30 | 2006-04-13 | Nec Electronics Corp | シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011059789A (ja) * | 2009-09-07 | 2011-03-24 | Toshiba Corp | ハイブリッドモデルシミュレーション装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5091520B2 (ja) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3338179B1 (en) | Graphical representation of data in a program code editor | |
US10049095B2 (en) | In-context editing of output presentations via automatic pattern detection | |
US7849394B2 (en) | Linked code generation report | |
JPH0883197A (ja) | ソフトウエアプログラムをデバッグする方法およびコンピュータシステム | |
Pereira et al. | Web based IOPT Petri net Editor with an extensible plugin architecture to support generic net operations | |
WO2018047620A1 (ja) | 実行可能プログラム作成装置、実行可能プログラム作成方法、および、実行可能プログラム作成プログラム | |
JP5176478B2 (ja) | データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム | |
US10379821B1 (en) | Optimization tracing | |
US20070208995A1 (en) | Document Processing Device and Document Processing Method | |
US20070198915A1 (en) | Document Processing Device And Document Processing Method | |
Masci et al. | Using PVSio-web to demonstrate software issues in medical user interfaces | |
US11726781B2 (en) | Code reading supporting device, code reading supporting method, and storage medium | |
KR20140116438A (ko) | 연산 순서의 그래픽 표현 기법 | |
Jiang et al. | Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs | |
JP5091520B2 (ja) | ハイブリッドモデルシミュレーション装置 | |
JP4564255B2 (ja) | シミュレーション装置 | |
Krebs et al. | Jaccie: A Java-based compiler–compiler for generating, visualizing and debugging compiler components | |
JP2007041846A (ja) | プログラム表示方法および装置 | |
JP7260150B2 (ja) | Webサイト設計支援装置、Webサイト設計支援方法、及びプログラム | |
JP5109646B2 (ja) | プログラムソース変換装置 | |
Bahlke et al. | Context-sensitive editing with PSG environments | |
JP2008243042A (ja) | ハイブリッドモデルのシミュレーション装置、方法及びプログラム | |
JP2006285754A (ja) | プログラムソースコード自動生成装置 | |
CN112199097B (zh) | 安装包生成方法、装置、计算机设备和存储介质 | |
JPS6383861A (ja) | 数式自動処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100304 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120529 |
|
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: 20120821 |
|
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: 20120914 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150921 Year of fee payment: 3 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5091520 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150921 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |