JP2008243044A - ハイブリッドモデルシミュレーション装置 - Google Patents

ハイブリッドモデルシミュレーション装置 Download PDF

Info

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
Application number
JP2007085703A
Other languages
English (en)
Other versions
JP5091520B2 (ja
Inventor
Mitsunobu Yoshida
充伸 吉田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007085703A priority Critical patent/JP5091520B2/ja
Publication of JP2008243044A publication Critical patent/JP2008243044A/ja
Application granted granted Critical
Publication of JP5091520B2 publication Critical patent/JP5091520B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】シミュレーション実行中のハイブリッドモデルプログラムにおける状態遷移を可視化する。
【解決手段】変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行する装置であって、シミュレーション中に付加処理を実行し時刻と変数名と状態遷移の識別情報とを表す状態遷移履歴データを生成する付加処理実行部1006と、数値積分により連続系方程式を解くことで、時刻と変数名と、変数の値とを表す変数値時間履歴データを生成する連続系シミュレーション部1011と、変数値時間履歴データから、変数値の時刻変化を示すグラフを生成して表示し、状態遷移履歴データから、変数の状態遷移の表示画像を生成し、グラフに重ね合わせて表示するシミュレーション結果表示部1014と、を具備する。
【選択図】図1

Description

本発明は、ハイブリッドモデルシミュレーション結果を可視化するためのシミュレーション装置に関する。
機構シミュレーション等に用いられるハイブリッドモデルは、常微分方程式や代数方程式を連立させた連立方程式によって表現された連続系モデルと、システム内部の状態を表現する状態遷移モデル(離散系モデル)とが組み合わされたものである。ハイブリッドモデルのデータは、連続系モデルの記述と、状態遷移モデルの記述とが混在して記述された、少なくとも一行以上の文字列で構成されるテキストデータとして管理される(下記「特許文献1」を参照。)。
このようなハイブリッドモデルを用いるシミュレーション装置において、ハイブリッドモデル変数の時間変化を直感的に把握することができるようにするため、時間軸と値軸からなる時間変化履歴グラフによってシミュレーション結果を表示するものがある(例えば下記「特許文献2」を参照。)。
特開2003−271679号公報 特開2004−178300号公報
上記時間変化履歴グラフを用いたシミュレーション結果表示においては、シミュレーション実行中のハイブリッドモデルプログラムの挙動を直感的に把握しづらいという問題点がある。
そこで本発明は、シミュレーション実行中のハイブリッドモデルプログラムにおける状態遷移を可視化でき、これによりハイブリッドモデルプログラムの挙動を直感的に把握できるようなシミュレーション装置を提供することを目的とする。
本発明の一観点に係るハイブリッドモデルシミュレーション装置は、変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーション装置であって、前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成する付加処理実行部と、時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成する連続系シミュレーション部と、前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示するシミュレーション結果表示部と、を具備する。
本発明によれば、シミュレーション実行中のハイブリッドモデルプログラムにおける状態遷移を可視化でき、これによりハイブリッドモデルプログラムの挙動を直感的に把握できるようなシミュレーション装置を提供できる。
以下、図面を参照しながら本発明の実施形態を説明する。
(第1の実施形態)
図1は、第1の実施形態に係るハイブリッドモデルシミュレーション装置を示すブロック図である。制御情報解析部1002はハイブリッドモデルプログラム1001を読み込み、モデル方程式登録プログラム1003、イベント処理プログラム1004、及びシミュレーション実行時付加処理プログラム1005を生成する。方程式解析部1007は主に常微分方程式などで記述されたモデル方程式登録プログラム1003を読み込み、解析結果を方程式データ記憶部1010に格納する。イベント処理部1008は、付加処理プログラムを実行するタイミングと連続系方程式を切り替えるタイミングを記述したイベント処理プログラム1004を読み込む。付加処理実行部1006はシミュレーション実行時付加処理プログラム1005を読み、イベント処理部1008は付加処理が実行可能になった場合に付加処理プログラムを実行する。付加処理プログラム中に状態遷移に関連するAPI(Application Program Interface)が呼ばれた場合には、その呼出履歴を状態遷移履歴記憶DB(データベース)1013に登録する。
連続系方程式切り替え部1009は、イベント処理部1008からの設定に従って登録された方程式のうちどの方程式をシミュレーション中に有効にして数値計算を行うかを決定し、方程式の有効・無効を決定する。連続系シミュレーション部1011は、有効な方程式の数値積分を時間軸に沿って実行し、方程式の変数の値を決定する。変数の時間履歴は変数値時間履歴記憶DB1012に保存される。シミュレーション結果表示部1014は状態遷移履歴記憶DB1013及び変数値時間履歴DB1012から、状態遷移の時間的変化及び変数値の時間的変化を表示する。
本実施形態は一般的なコンピュータを用いて構成することができ、そのハードウェア構成としてCPU、メモリ、外部記憶装置、通信インターフェース、表示装置、キーボード、マウス等を備える。またこれらのハードウェアを制御するためのオペレーティングシステムを備える。本実施形態に係るシミュレーション装置はこのようなオペレーティングシステム上で動作するアプリケーションソフトとして実装することができる。
以上において、シミュレーション実行時付加処理プログラム1005の内容、状態遷移履歴記憶DB1013、及びシミュレーション結果表示部1014を除く構成要素については、特開2004−178300号公報及び特開2004−220577号公報の記載を参考にすることができる。
ここで図2を参照し、ハイブリッドモデルプログラム1001の一例を挙げながら、状態遷移とモデル方程式の関係について説明する。ハイブリッドモデルプログラム1001はテキストで記述され、テキストエディタなどのテキスト編集ツールを用いて作成することができる。ハイブリッドモデルプログラム1001は、主に、モデル方程式と、状態記述と、状態遷移条件の記述とから構成される。
図2に示されるハイブリッドモデルプログラム1001のリスト行において、モデル方程式の記述はL8,L11,L14,L17であり、状態記述はL7−L8のdo−watching構文、L10−L11のdo−watching構文、L13−L14のdo−watching構文、L16−L17のdo−watching構文などであり、状態遷移条件の記述は「up(L6)」のイベント発行及び「const(L9)」「down(L12)」「idle(L15)」のwhen構文などである。
図2の左側に示されるのはハイブリッドモデルプログラム1001の状態遷移図である。それぞれの状態記述は状態名を持ち、L7−L8は「立ち上げ」、L10−L11は「等速」、L13−L14は「減速」、L16−L17は「アイドル」である。
次に、状態遷移の記録指令がコード中に記述されたハイブリッドモデルプログラム1001を用い、シミュレーション過程において状態遷移の記録情報がどのように生成され、状態遷移履歴記憶DB1013に登録されるかについて説明する。状態遷移の記録情報は、ある変数について、状態遷移を識別可能な情報である。
(L1)cont y;event up;event const;event
(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関数は例えば以下のようなプログラムとして記述する。
void SetStatus(const char* name, cont char* status_name ) {
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」には以下のような出力になる。
Figure 2008243044
次に、ハイブリッドモデルプログラムの前処理について詳細に説明する。
ハイブリッドモデルプログラム1001は、まず制御情報解析部1002において処理され、モデル方程式登録プログラム1003、イベント処理プログラム1004、及びシミュレーション実行時付加処理プログラム1005が生成される。
ハイブリッドモデルシミュレーション装置を構成するソフトウェアモジュールとして、モデル方程式の登録を行うための関数及び連続系方程式を切り替えるための関数がAPI関数として提供される。モデル方程式登録プログラム1003およびイベント処理プログラム1004は、該当する上記API関数を呼び出す記述を、入力されたハイブリッドモデルプログラム1001に沿って適切に組み合わせたプログラムである。この観点から考えると、制御情報解析部1002は、入力をハイブリッドモデルプログラム1001とし、出力を例えばC言語のAPI関数呼び出しの記述を含むCプログラム(ソース)とするような、一種のコンパイラと考えることもできる。このようなモデル方程式登録プログラム1003とイベント処理プログラム1004は、さらにC言語などのコンパイラによりコンパイルされ、例えば実行時に動的にリンク可能なライブラリが生成される。ハイブリッドモデルシミュレーション装置では、シミュレーション実行にあたって、生成された動的リンクライブラリがリンクされ、入力ハイブリッドモデルを忠実に再現するシミュレーションプログラムが完成し、実行可能になる。なお、生成されるこれらのライブラリは必ずしも動的リンクライブラリである必要はなく、静的なライブラリであってもよい。
ハイブリッドモデルシミュレーション装置のアプリケーションインターフェースを構成する具体的なソフトウェアモジュールの仕様などは様々考えられるが、ここでは説明の都合上、以下の3つのAPI関数が最低定義されているとする。なお、プログラミング言語はC言語とする。
int XXX_AddEqnData(char *eqn, int *err)
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番号を返り値とする。
2番目のAPI関数XXX_ActivateEqnは、引数に指定された方程式のID番号に相当する方程式を有効にする。もし、すでに有効となっている方程式が指定されている場合には何もしない。返り値はエラーコードである。
3番目のAPI関数XXX_DeActivateEqnは、XXX_ActivateEqnとは逆に、引数に指定された方程式のID番号に相当する方程式を無効にする。すでに無効となっている方程式が指定された場合には何もしない。
制御情報解析部1002は、まずXXX_AddEqnDataを必要な方程式について順に呼ぶ関数(InitEqnData)を生成する。これがモデル方程式登録プログラム1003(第1のプログラム)に相当する。
また、制御情報解析部1002は、シミュレーション実行の際に、時間がΔt進むごとに条件のチェックおよび方程式の切り替えを行う関数(ChangeEqn)も生成する。これはイベント処理プログラム1004(第2のプログラム)に相当する。
ここで、ChangeEqn関数は「up」イベント、「const」イベント、「down」イベント、「idle」イベントの発生をGetEvent関数により検知する。ChangeEqn関数はシミュレーション実行時における時間ステップ毎にイベント処理部1008から呼び出される。
ハイブリッドモデルシミュレーション装置では、図1から分かるようにイベント処理部1008と連続系シミュレーション部1011とが分離されている。したがって、イベント処理プログラム1004には時間積分などの時間に依存するモジュールは含まれず、これに対応するイベント処理部1008は連続系方程式の有効・無効のフラグの切り替えのみを行う。
このようなシミュレータ構成を採ることにより、外部機器とのインターフェースに係るイベントとハイブリッド記述に係るイベントとを同一の処理(if(GetEvent(イベント)処理)で管理することができる。
また、制御情報解析部1002は、ハイブリッドシミュレーションモデルをいったん付加処理と同一の言語として出力するため、容易にハイブリッドシミュレーション実行プログラムを生成可能である。したがって、ハイブリッドシミュレーションと外部機器との連携が容易になる。
また、制御情報解析部1002は、図2のL6,L9,L12,L15のように内部でイベントを発生させる場合は、SetEvent関数を生成する。SetEvent関数はシミュレーション実行時に置ける時間ステップ毎にイベント処理部1008から呼び出される。制御情報解析部1002では、図2のL6の「up」イベントは、
if(getCurrentTime()==0)SetEvent(“up”);
というC言語のソースプログラムに変換される。また図2のL9の「const」イベントはシミュレーション中に各変数の値を取得するGetValue関数を用いて
if(GetValue(“y”)==10)SetEvent(“const”);
というC言語のソースプログラムに変換される。
さらに、制御情報解析部1002は、付加処理の内容記述をハイブリッドモデルプログラム1001から抽出する。この抽出された記述はシミュレーション実行部付加処理プログラム1005(第3のプログラム)に相当する。シミュレーション実行部付加処理プログラム1005はハイブリッドモデルプログラム1001中でもともとC言語などにより記述されたプログラムのソースに相当する(例:上述のSetStatus関数)。抽出されたシミュレーション実行部付加処理プログラム1005は、C言語コンパイラによりコンパイルされ、動的にリンク可能なライブラリが生成される。付加処理実行部205は、この動的にリンク可能なライブラリを呼び出すインターフェースの役割を担う。なお、生成されるライブラリは必ずしも動的リンクライブラリである必要はなく、静的なライブラリであってもよい。また、付加処理の内容を記述する言語はC言語に限定されない。
上記したような制御情報解析部1002における処理により、例えば、上述したハイブリッドモデルプログラム1001について、以下のようなC言語のソースプログラムが自動生成される。
static char eqn1[]="y'=1*y+1";
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)のイベントが生起しているかどうかをチェックする関数である。
以上のプログラムは、上述したようにC言語コンパイラによってコンパイルされ、さらに動的リンクライブラリの形式に整えられ、実行時にリンクされる。
なお、本実施形態では、プログラム言語としてC言語を用いた例について説明したが、本発明はこれに限定されるものではなく、例えばC++言語、SpecC言語等の他のプログラム言語を用いてもよい。
次に、シミュレーションの実行について説明する。
シミュレーションが開始されると、連続系方程式の値を計算することでシミュレーション実行が行われる。このとき、連続系方程式切り替え部1009は、イベント処理部1008の内部で呼び出され、連続系方程式の切り替えを有効・無効のフラグを用いて実行する。イベント処理部1008は前処理において生成されたイベント処理プログラム1004(第2のプログラム;ChangeEqn)に対応する。
連続系シミュレーション部1011は、方程式データ記憶部1010を参照し、同記憶部1010に木構造の形式で格納されている連続系方程式の内部データ表現を演算対象として、時間ステップづつ数値積分を実行する。シミュレーションは、常微分方程式及び代数多項式の連立からなる非線形連立方程式についての初期値問題である。このため、例えば図2に示される初期状態が与えられている。具体的には、例えば一般によく使われているルンゲクッタアルゴリズムを用いて解の値を計算する。必要なデータは機構シミュレータから出力を行い、さらに連続系方程式切り替え部1009の処理に戻り、上記の処理を繰り返すことにより必要な時間のシミュレーションを実行する。シミュレーション結果は、変数値時間履歴記憶DB1012に保存される。
以上説明したように、シミュレーションの開始から終了までのあいだに、付加処理実行部1006の動作に伴い状態遷移履歴記憶DB1013に状態遷移の時間的変化を示す履歴データが記録される一方、連続系シミュレーション部1011の動作に伴い変数値時間履歴記憶DB1012には変数値の時間的変化を示す履歴データが記録されることになる。
図3はシミュレーション結果表示部1014による表示例を示している。シミュレーション結果表示部1014は、シミュレーション結果として例えば時間軸2002と値軸2003の2軸により変数値の時間変化履歴を示す時間変化履歴グラフ2001を表示することに加え、特に本実施形態ではこの時間変化履歴グラフ2001に重畳して状態遷移情報3004及び状態遷移名3005とを表示する。
状態遷移情報3004は、時間変化履歴グラフ2001に重ね合わせて表示され、状態遷移を視覚的に識別可能な表示画像であって、本実施形態では時間変化履歴グラフ2001において、各状態の開始時刻(最小値)に相当する直線と終了時刻(最大値)に相当する直線とによって挟まれる矩形領域の画像とする。この矩形領域画像は、隣接する状態との区別のために、異なる色で塗りつぶすか、隣接する領域とは異なるハッチングを行う。
状態遷移名3005は状態遷移情報3004内か、状態遷移情報3004に対して一部重なる位置に配置される。また、状態遷移名3005は時間変化履歴グラフ2001とは重ならない領域に配置される。
図4はシミュレーション結果表示部1014の内部構成を示すブロック図である。シミュレーション結果表示部1014は、変数値時間履歴記憶DB1013を解析し、グラフ表示用データを作成する変数履歴解析部4001と、状態遷移履歴記憶DB1012を解析し、状態遷移名3005及び状態遷移情報3004を作成する状態遷移履歴解析部4002とにより構成される。変数値時間履歴記憶DB1013は例えば以下のようなテキストファイルで実現される。以下は変数xと変数yが時刻1.0から6.0まで変化したときの時刻履歴を保存したファイルである。
Figure 2008243044
行の先頭がアルファベット文字列変数で開始し、タブ文字やスペース文字などの空白文字を含まずに改行がある箇所を変数の区切りとする。一行が3列で構成されている場合は一列目が時刻、2列目が下限値、3列目が上限値である。上限値と下限値が一致している場合は数値計算によって値が決定されている、異なる数値の場合は値が決定されていないことを示す。変数履歴解析部4001では各変数に対してグラフをプロットするx座標、y座標を決定する。ここではx軸は時刻を表しており、一列目のデータを利用する。またY軸は値を表し、2列目と3列目の数値が一致する場合は2列目の値を利用する。2列目と3列目の値が異なる場合(不定の場合)はグラフに表示しないなどの処理を行う。
状態遷移履歴解析部4002は例えば状態遷移履歴記憶DB1012として以下のようなデータを解析する。
Figure 2008243044
一列目は時刻、二列目は変数、三列目は状態遷移名である。状態遷移履歴解析部4002は、上記データのファイルを読み込み、各変数に対して状態遷移情報3004を決定する。各変数は、全ての時刻においていずれかの状態にあるものとする。この場合、上記データを解析すると、「立ち上げ」状態は時刻0.0〜10.0、「等速」状態は時刻10〜100、「減速」状態は100〜150、「アイドル」状態は150〜シミュレーション終了時刻となる。各時刻とグラフ上の表示位置との関係は変数履歴解析部4001の処理により決定されているため、グラフ表示部4003から取得することができる。状態遷移情報3004の下限及び上限値はグラフ表示部の最小値及び最大値となる。状態遷移名3005は三列目の文字列が表示可能な程度の大きさを持ち、状態遷移情報3004の開示時刻と終了時刻の中間におけるx座標値、状態遷移情報3004から一定座標下げたy座標値に配置する。以上の処理の処理フローを図5に示す。
以上説明した第1の実施形態によれば、図3の表示例から理解されるように、シミュレーション実行中のハイブリッドモデルプログラムにおける状態遷移を可視化できる。つまり、変数値の時間変化履歴を示す時間変化履歴グラフ2001を単に表示するのみならず、状態遷移情報3004及び状態遷移名3005を表示することができる。したがって、シミュレーション実行中のハイブリッドモデルプログラムの挙動を直感的に把握しやすくなる。
(第2の実施形態)
図6は第2の実施形態に係るシミュレーション結果表示部を示すブロック図である。この図6に示すシミュレーション結果表示部1014は、変数値時間履歴記憶DB1013を解析してグラフ表示部4003に表示するための時間変化履歴グラフ2001を作成する変数履歴解析部4001と、状態遷移履歴記憶DB1012を解析してグラフ表示部4003に表示するための状態遷移情報3004及び状態遷移名3005を作成する状態遷移履歴解析部4002と、状態遷移を表示する変数名を選択するための状態表示切り替え部5001とから構成される。
図7は第2の実施形態に係るシミュレーション結果表示部の処理手順を示すフローチャートである。まず変数値時間履歴記憶DB1013のファイルを開く(13001)。次に状態遷移履歴記憶DB1012のファイルを開く(13002)。
これらファイルに記録された情報に基づいて、グラフ表示領域内の各変数データの表示位置を計算する(13003)。次に、状態表示対象の変数名を取得し、各状態の開始時刻及び終了時刻を算出し(13004)、各状態のグラフ表示域内の状態遷移情報3004を計算する(13005)。さらに、各状態のグラフ表示域内のラベル位置を計算する(13006)。
そして、以上において算出された位置情報に従い、時間変化履歴グラフ2001(グラフ)、状態遷移情報3004(リージョン)、状態遷移名3005(ラベル)を表示する。ここで、グラフ表示終了処理が行われた場合は終了処理を実行し、グラフ表示領域、例えば表示する時刻の範囲や表示する値の範囲に変更があった場合は13003の状態に戻る。
図8は、状態表示切替部5001により状態遷移表示の対象となる変数名を指定可能に構成された画面の表示例を示す図である。グラフ表示部4003はマウスポインタ8002を持つ。このマウスポインタ8002はPCに接続されたマウスの移動操作に応じて画面内を移動させることができる。時間変化履歴グラフ2001上でマウスをクリックすると(例えば図8の例では実線で示されたライン上)、クリックされたグラフに関連付けられた変数名が取得される。
このクリック指定操作により、状態遷移履歴解析部4002によって状態遷移履歴記憶DB1012から該変数名に関連する状態遷移履歴情報が読み取られ、状態遷移履歴表示が行われる。マウスでクリックする領域はグラフのライン上でも良いし、グラフの近傍(例えばフラグから数ピクセル離れた)位置をクリックしても良い。グラフの近傍のクリックを許可する場合は、グラフのライン上のクリックに比べて比較的容易にマウス操作を行うことができ、より簡単な状態遷移の切り替えを行うことができる。
図9は状態表示切替部5001により状態遷移表示の対象となる変数名を指定可能に構成された別の画面の表示例を示す図である。シミュレーション結果表示部1014は、グラフ表示部4003、メニューバー9001を持ち、メニューバー9001は変数表示メニュー9002及び表示変数指示ボタン9003を持つ。変数表示メニュー9002は変数値時間履歴記憶DB1013から履歴が記憶されている変数名の一覧を作成し、メニューに表示する。例えば変数値時間履歴記憶DB1013が上記[数4]に示したものであるとする。各行の最初の文字列がアルファベットで記述されている場合は変数名として一覧に登録する。この場合、登録される変数は、「x」及び「y」である。メニューには、「xを表示する」「yを表示する」と表示を行う。ユーザがマウスポインタ8002(図示せず)を用いて表示変数指示ボタン9003をクリックすると、クリックされたボタンの隣に配置された変数表示メニュー9002に関連付けられた変数名を取得し、状態遷移履歴解析部4002によって状態遷移履歴記憶DB1012から変数名に関連する状態遷移履歴情報を読み取り、状態遷移履歴表示を行う。
図10は状態表示切替部5001により状態遷移表示の対象となる変数名を指定可能に構成された別の画面の表示例を示す図である。グラフ表示部4003は変数名表示領域10003及び、第一の変数の有効ボタン10001及び第2の変数の有効ボタン10002を持つ。ユーザがマウスポインタ8002(図示せず)を用いてボタンを押下すると、押下したボタンに関連付けられている変数名を読み込み、状態遷移履歴解析部4002によって状態遷移履歴記憶DB1012から変数名に関連する状態遷移履歴情報を読み取り、状態遷移履歴表示を行う。
(第3の実施形態)
図11は第3の実施形態に係り、シミュレーション結果表示部1014が2つの変数を同時に1つのグラフ領域に表示するよう構成した場合のグラフ表示部4003の表示例を示している。第3の実施形態においてシミュレーション結果表示部1014は、第一の変数に関する時間変化履歴グラフ6001と、第2の変数に関する時間変化履歴グラフ6002とを同時に表示可能となっている。
以下は複数の変数に関して状態遷移の履歴を持つ状態遷移履歴記憶DB1012の例である。ここで第一の変数に関する時間変化履歴グラフ6001は変数xに関して、第2の変数に関する時間変化履歴グラフ6002は変数yに関して表示を行うものとする。
Figure 2008243044
予め変数xに関して状態遷移の表示を行うと設定されている場合は、状態遷移履歴解析部4002では変数xに関するデータのみの読み込みを行い、状態遷移情報3004、状態遷移名3005の表示を行う。
これに対し図12は、予め変数yに関しての状態遷移の表示を行うと設定されている場合の表示例である。
(第4の実施形態)
図13は2つの変数を同時に2つのグラフ領域に表示した場合の、グラフ表示部4003の表示例である。グラフ表示部4003は状態遷移補助線11001を持ち、上下のグラフで同一の状態遷移がある場合は、対応する線を描画している。この表示方法を用いることでグラフデータが重なって表示されることが避けられるため、グラフデータの視認性が向上する。また同一の状態遷移名を持つ状態遷移情報3004は同一の色で塗り潰すか、同一のハッチングパターンを用いることで、上下のグラフの状態遷移の比較が容易になる。また同一の色やハッチングパターンを用いている場合は、状態遷移名3005のどちらか一方を消去することもできる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
第1の実施形態に係るハイブリッドモデルシミュレーション装置を示すブロック図 ハイブリッドモデルプログラムにおける状態遷移とモデル方程式の関係について説明するための図 シミュレーション結果表示部による表示例を示す図 シミュレーション結果表示部の内部構成を示すブロック図 第1の実施形態に係るシミュレーション結果表示部の処理手順を示すフローチャート 第2の実施形態に係るシミュレーション結果表示部を示すブロック図 第2の実施形態に係るシミュレーション結果表示部の処理手順を示すフローチャート 状態表示切替部により状態遷移表示の対象となる変数名を指定可能に構成された画面の表示例を示す図 変数名を指定可能に構成された別の画面の表示例を示す図 変数名を指定可能に構成された別の画面の表示例を示す図 第3の実施形態に係り、シミュレーション結果表示部が2つの変数を同時に1つのグラフ領域に表示するよう構成した場合のグラフ表示部の表示例を示す図 予め変数yに関しての状態遷移の表示を行うと設定されている場合の表示例を示す図 2つの変数を同時に2つのグラフ領域に表示した場合のグラフ表示部の表示例を示す図
符号の説明
1001…ハイブリッドモデルプログラム;
1002…制御情報解析部;
1003…モデル方程式登録プログラム;
1004…イベント処理プログラム;
1005…シミュレーション実行時付加処理プログラム;
1006…付加処理実行部;
1007…方程式解析部;
1008…イベント処理部;
1009…連続系方程式切り替え部;
1010…方程式データ記憶部;
1011…連続系シミュレーション部;
1012…変数値時間履歴記憶DB;
1013…状態遷移履歴記憶DB;
1014…シミュレーション結果表示部

Claims (6)

  1. 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーション装置であって、
    前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成する付加処理実行部と、
    時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成する連続系シミュレーション部と、
    前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示するシミュレーション結果表示部と、を具備するハイブリッドモデルシミュレーション装置。
  2. 前記連続系方程式の記述に基づいて、モデル方程式登録プログラムを生成する第1のプログラム生成手段と、
    前記状態遷移に伴う連続系方程式の切り替えに関する記述に基づいて、イベント処理プログラムを生成する第2のプログラム生成手段と、
    前記モデル方程式登録プログラムを実行することにより、前記連続系方程式をシミュレーション実行可能なデータ構造に変換する変換手段と、
    シミュレーションの開始によって前記イベント処理プログラムを実行し、イベントの発生に応じて前記連続系方程式の有効・無効を切り替える切り替え手段と、をさらに具備し、
    前記連続系シミュレーション部は、前記切り替え手段において有効とされた連続系方程式に対応する前記データ構造を用いて、前記連続系方程式を解くことを特徴とする請求項1に記載のハイブリッドモデルシミュレーション装置。
  3. 前記シミュレーション結果表示部は、前記変数の状態遷移を識別可能な表示画像とともに、前記変数の状態遷移名を表示する請求項1又は2に記載のハイブリッドモデルシミュレーション装置。
  4. 前記シミュレーション結果表示部は、複数の変数についての変数値の変化を示す複数のグラフを生成して表示し、指定手段により指定されたグラフについて、前記変数の状態遷移を識別可能な表示画像を表示する請求項1乃至3のいずれかに記載のハイブリッドモデルシミュレーション装置。
  5. 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーション方法であって、
    付加処理実行部が、前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成するステップと、
    連続系シミュレーション部が、時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成するステップと、
    シミュレーション結果表示部が、前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示するステップと、を具備するハイブリッドモデルシミュレーション方法。
  6. 変数を有する連続系方程式の記述と、状態遷移に伴う前記連続系方程式の切り替えに関する記述と、状態遷移の記録を行う付加処理の記述とを有するハイブリッドモデルプログラムを用いてシミュレーションを実行するハイブリッドモデルシミュレーションプログラムであって、
    コンピュータに、
    前記シミュレーション中に前記付加処理を実行することにより、時刻と、前記変数の変数名と、前記状態遷移の識別情報とを表す状態遷移履歴データを生成する手順と、
    時間軸に沿った数値積分により前記連続系方程式を解くことにより、時刻と、前記変数の変数名と、前記変数の値とを表す変数値時間履歴データを生成する手順と、
    前記変数値時間履歴データから、時刻の変化に沿った前記変数の変数値の変化を示すグラフを生成して表示し、前記状態遷移履歴データから、前記変数の状態遷移を識別可能な表示画像を生成し、前記グラフに重ね合わせて表示する手順と、を実行させるためのハイブリッドモデルシミュレーションプログラム。
JP2007085703A 2007-03-28 2007-03-28 ハイブリッドモデルシミュレーション装置 Active JP5091520B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011059789A (ja) * 2009-09-07 2011-03-24 Toshiba Corp ハイブリッドモデルシミュレーション装置および方法

Citations (3)

* Cited by examiner, † Cited by third party
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 シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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