(57)【特許請求の範囲】
【請求項１】
状態遷移図形式又は状態遷移表形式の入力データからハイブリッドコンストレイントプログラミング言語のデータを作成するハイブリッドモデル作成装置であって、
状態遷移の描画画面を表示し、複数の状態を定義する複数の常微分連立方程式と、離散イベントにより発生する前記複数の状態間の状態遷移とを含む前記入力データを前記描画画面上でユーザに入力させるためのユーザインターフェイスと、
前記入力データから前記複数の常微分連立方程式の記述を抽出し、該複数の常微分連立方程式の記述を前記ハイブリッドコンストレイントプログラミング言語の第１のデータに変換する連続系変換手段と、
前記入力データから状態遷移の記述を抽出し、該状態遷移の記述を前記ハイブリッドコンストレイントプログラミング言語の第２のデータに変換する状態遷移変換手段と、
前記第１のデータと前記第２のデータとを組み合わせて前記ハイブリッドコンストレイントプログラミング言語のデータを出力する出力手段と、を具備することを特徴とするハイブリッドモデル作成装置。
【請求項２】
前記状態遷移は、定義された前記状態について、他の状態から当該状態へ遷移する際の第１条件及び当該状態から他の状態へ遷移するための第２条件を含むことを特徴とする請求項１に記載のハイブリッドモデル作成装置。
【請求項３】
前記連続系方程式の記述により定義された複数の状態間で共通に遷移可能な中間状態を定義する手段と、
前記中間状態への状態遷移、および当該中間状態からの状態遷移を引き起こすイベントを定義する手段と、をさらに具備することを特徴とする請求項１又は２のいずれか一項記載のハイブリッドモデル作成装置。
【請求項４】
状態遷移図形式又は状態遷移表形式の入力データからハイブリッドコンストレイントプログラミング言語のデータを作成するハイブリッドモデル作成プログラムであって、
コンピュータに、
状態遷移の描画画面を表示し、複数の状態を定義する複数の常微分連立方程式と、離散イベントにより発生する前記複数の状態間の状態遷移とを含む前記入力データを前記描画画面上でユーザに入力させるためのユーザインターフェイスと、
前記入力データから前記複数の常微分連立方程式の記述を抽出し、該複数の常微分連立方程式の記述を前記ハイブリッドコンストレイントプログラミング言語の第１のデータに変換する連続系変換機能と、
前記入力データから状態遷移の記述を抽出し、該状態遷移の記述を前記ハイブリッドコンストレイントプログラミング言語の第２のデータに変換する状態遷移変換機能と、
前記第１のデータと前記第２のデータとを組み合わせて前記ハイブリッドコンストレイントプログラミング言語のデータを出力する出力機能、を実現させるためのハイブリッドモデル作成プログラム。
【請求項５】
前記状態遷移は、定義された前記状態について、他の状態から当該状態へ遷移する際の第１条件及び当該状態から他の状態へ遷移するための第２条件を含むことを特徴とする請求項４に記載のハイブリッドモデル作成プログラム。
【請求項６】
前記連続系方程式の記述により定義された複数の状態間で共通に遷移可能な中間状態を定義する機能と、
前記中間状態への状態遷移、および当該中間状態からの状態遷移を引き起こすイベントを定義する機能と、をさらに具備することを特徴とする請求項４又は５のいずれか一項記載のハイブリッドモデル作成プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機械やプラント等の挙動シミュレーションに用いられるハイブリッドモデルを作成するためのハイブリッドモデル作成方法及びプログラムに関する。
【０００２】
【従来の技術】
近頃、コンピュータを用いて機械やプラント等の挙動のシミュレーションを行う際に、ハイブリッドモデリングと呼ばれる手法が使われ始めている。ハイブリッドモデルを用いたシミュレーションを「ハイブリッドシミュレーション」と呼び、このようなシミュレーション挙動をするシステムを「ハイブリッドシステム」と呼ぶ。ハイブリッドモデルは、概念的には常微分方程式や代数方程式を連立させた連立方程式を用いてシステム構成要素の状態を表現するための連続系モデルと、このような連続系モデルによって表現された状態の、イベント発生（成立）に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。すなわちハイブリッドモデルは、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現するモデルである。
【０００３】
ハイブリッドモデルを記述するための言語として米国ゼロックス社のパロアルト研究所にて創作されたＨＣＣ(Hybrid Concurrent Constraint Programming)と呼ばれる言語がある。ＨＣＣは発展途上にあり、現在も米国ＮＡＳＡのエイムズ研究所において研究が進められている。ＨＣＣは制約処理プログラミング（コンストレイントプログラミング）と呼ばれる技術の一種であり、連続系モデルを表現する常微分方程式や代数方程式を制約として扱い、これら方程式をそのまま順不同で記述することができる。このような制約記述に、状態遷移を制御する記述を付加してハイブリッドモデルは完成される。
【０００４】
このようなＨＣＣは、方程式をそのまま制約として羅列できるという利便性や複雑なモデルを記述することも可能であるといった利点を有している。しかし、ＨＣＣはプログラミング言語の一種であることから、他のプログラミング言語と同様に言語仕様等の十分な理解が必要である。そしてＨＣＣはとりわけプログラム言語として難解であるとされており、ＨＣＣプログラムの作成、すなわちハイブリッドモデルの作成を行なうための能力の習得が困難である。
【０００５】
他の従来技術として、ハイブリッドモデルと等価的なモデルを記述可能な技術があり、例えばMathWorks社のMatlab製品群は、制御系の技術者などを中心によく使われているソフトウエアツールである。しかし、これらソフトウェアツールにおいては例えば常微分方程式をそのまま記述することまでは行えない。このため常微分方程式の内容を分析し、これを積分要素などの要素を組み合わせたブロック線図として定義しなおす必要がある。尚、ハイブリッドモデルとは直接的な関係はないが、常微分方程式で表現される系のシミュレーションを行う際に、似かよったアプローチでブロック線図を用いる例として、たとえば特開平７−１６０６７３号公報記載の解析装置が公知である。
【０００６】
【発明が解決しようとする課題】
ＨＣＣのような特殊なプログラミング言語についての深い知識がなく、制御設計者が通常行うブロック線図による系の表現などに不慣れな技術者（特に機械技術者など）であっても、直感的かつ容易にハイブリッドモデルを作成できることが好ましい。機械技術者などは、対象とする機構などの挙動を常微分方程式で記述することには慣れている。また、例えば搬送系において製品が次々にベルトコンベアに受け渡されるような場合のように、系の状態が遷移する様子（例えばベルトＡで搬送されている状態からベルトＢで搬送されている状態へ遷移することなど）を具体的に列挙することにも特に問題はない。しかしながら、これらの情報をもとにＨＣＣ言語によるプログラムを作成したり、ブロック線図で常微分方程式を記述するといった作業段階では、対象製品とは直接関係のないプログラミング能力やモデル記述能力が必要となり、その習得は難易度が高く、大いに熟練を要するのである。
【０００７】
本発明はかかる事情を考慮してなされたものであり、その目的は、熟練を要することなくユーザが直感的かつ容易にハイブリッドモデルを作成できるよう支援を行うためのハイブリッドモデル作成方法及びプログラムを提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決し目的を達成するために本発明は次のように構成されている。
【０００９】
本発明に係るハイブリッドモデル作成方法は、状態遷移図形式又は状態遷移表形式の入力データからハイブリッドモデル形式のデータを作成するハイブリッドモデル作成方法であって、状態を定義するための連続系方程式の記述を前記入力データから抽出し、これを前記ハイブリッドモデル形式の第１データに変換する連続系変換ステップと、離散的なイベントの発生に伴う状態遷移を前記入力データから抽出し、これを前記ハイブリッドモデル形式の第２データに変換する状態遷移変換ステップと、前記第１データと第２データとを組み合わせて前記ハイブリッドモデル形式のデータを生成する生成ステップと、を具備することを特徴とする。
【００１０】
また、本発明に係るプログラムは、状態遷移図形式又は状態遷移表形式の入力データからハイブリッドモデル形式のデータを作成するハイブリッドモデル作成プログラムであって、コンピュータに、状態を定義するための連続系方程式の記述を前記入力データから抽出し、これを前記ハイブリッドモデル形式の第１データに変換する連続系変換機能と、離散的なイベントの発生に伴う状態遷移を前記入力データから抽出し、これを前記ハイブリッドモデル形式の第２データに変換する状態遷移変換機能と、前記第１データと第２データとを組み合わせて前記ハイブリッドモデル形式のデータを生成する生成機能、を実現させるためのプログラムである。
【００１１】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１２】
図１は、本発明の一実施形態に係るハイブリッドモデル作成装置の概略構成を示すブロック図である。この装置は汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）など）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤやＣＡＥに好適なエンジニアリングワークステーション（ＥＷＳ）なども含む。本発明はこのようなコンピュータに、ハイブリッドモデル作成に係る一連の手続きを実行させるプログラムとして実施することもできる。
【００１３】
図１に示すように、本実施形態のハイブリッドモデル作成装置は、ディスプレイ２０１、キーボード２０２、マウス２０３等からなる入出力デバイスと、ＣＰＵ（不図示）およびメモリ２０９や二次記憶装置２０５等を含む処理部２０４とにより構成されている。処理部２０４は状態定義部２０６、連続系方程式入力部２０７、状態遷移定義部２０８、ハイブリッドモデル出力部２１０を含む。これらは、コンピュータを構成するハードウェアと協働するソフトウェアとして実現され、良く知られたオペレーティングシステムの下で動作する。状態定義部２０６、連続系方程式入力部２０７、状態遷移定義部２０８により状態遷移図形式の入力データがメモリ２０９上に生成される。この入力データはハイブリッドモデル出力部２１０がメモリ２０９にアクセスすることで読み出され、後述する手続きによりハイブリッドモデル形式のデータに変換され、二次記憶装置２０５に出力される。
【００１４】
図２は、本実施形態のハイブリッドモデル作成装置によるハイブリッドモデル作成手順を示すフローチャートである。まず処理種別判定ステップ（Ｓ１０１）では、マウス２０３やキーボード２０２などの入力デバイスからの情報、既に入力済みのデータ等をもとに、ユーザが希望する処理の種別を判定する。本実施形態では、処理種別は、すくなくとも、状態定義ステップ（Ｓ１０２）、連続系方程式入力ステップ（Ｓ１０３）、状態遷移定義ステップ（Ｓ１０４）からなるものとする。ステップ（Ｓ１０１）において判定された処理種別に応じて、上記（Ｓ１０２）、（Ｓ１０３）、（Ｓ１０４）のいずれかが起動される。ユーザは起動された処理に応じた入力編集操作をディスプレイ２０１での表示の下にマウス２０３やキーボード２０２を操作しながら行う。上記（Ｓ１０２）、（Ｓ１０３）、（Ｓ１０４）の処理を全て終えることで後のステップＳ３０１以降においてハイブリッドモデルを完成することができる。ハイブリッドモデルが完成したらステップＳ１０５においてこれを出力するか否かについてユーザに問い合わせる。なお、例えば連続方程式入力ステップ（Ｓ１０３）を行わないうちにステップＳ３０１以降の処理に移行してもよく、この場合は連続方程式に該当する記述のないハイブリットモデルが出力されることになる。
【００１５】
連続系変換ステップ（Ｓ３００）および状態遷移変換ステップ（Ｓ３０１）は、上記（Ｓ１０２）、（Ｓ１０３）、（Ｓ１０４）により状態遷移図形式で入力されたデータをハイブリッドモデルに変換する手続きである。これにより作成されたハイブリッドモデルのデータは、ファイル２０５に出力される。
【００１６】
以下では、状態遷移図形式の入力データに基づいてハイブリッドモデルがどのように作成されるかについて、具体的な例題を挙げて説明する。図３乃至図６は例題に係る機械装置およびその状態変化を示す図である。この機械装置は主たる構成要素であるシリンダにバルブ３０１、ピストン３０２、バネ３０３等が配置された簡素なメカニズムである。バルブ３０１は図示のようにピストン３０２により隔てられたシリンダの領域間を結ぶパイプに作用する。すなわち、バルブ３０１は外部からの運転操作指令に応じて、外部からパイプに供給された空気の流れを図の紙面右側または左側に変更する。この運転操作指令は外部イベントに相当するのであり、それぞれ「Ｒｉｇｈｔ」および「Ｌｅｆｔ」と記す。ピストン３０２はパイプから供給された空気圧力、あるいはバネ３０３からの弾性力を受けてシリンダ内を移動する。なお、バネ３０３の一端はシリンダの内壁に固定されており、他端は解放されている。このような本例の機械装置が図３乃至図６に示す４つの状態を取る場合を考える。まず図３に示す状態では、バルブ３０１への運転操作指令はＲｉｇｈｔであり、ピストン３０２には左向きの空気圧力が働いている。この状態におけるピストン３０２についての運動方程式は「−Ｆ＝ｍｘ’’」である（マイナスは図の紙面左方向である）。図４は、ピストン３０２が移動してバネ３０３に接触したときの状態を示している。この状態においては、バネ３０３からの反力が発生するから、ピストン３０２についての運動方程式は「−Ｆ−ｋｘ＝ｍｘ’’」であり、図３のものから変化している。
【００１７】
図５は運転操作指令がＲｉｇｈｔからＬｅｆｔに変更されたときの状態であって、空気の流れの向きが変わり、運動方程式がさらに「Ｆ−ｋｘ＝ｍｘ’’」に変化している。図６は、図５の状態からさらにピストン３０２が移動してバネ３０３からの反力が消失したときの状態を示している。この状態では運動方程式が「Ｆ＝ｍｘ’’」に変化している。
【００１８】
図７は、このような例題の機械装置における４つの状態変化と、それぞれの状態に対応するピストン３０２についての運動方程式を状態遷移図として表現したものを示している。本発明に従って作成するハイブリッドモデルは、概念的にはこの図に示されるような状態遷移と、各状態の記述が常微分方程式（あるいは代数方程式；これらは連立されてもよい）との両者を含む状態遷移図表現の入力データに対し後述する変換処理を施すことで作成される。図８は、このような状態遷移図表現の入力データがどのように変換され、ハイブリッドモデルの記述として出力されるかを分かりやすく説明するために、図７をさらに簡略化したものである。ここでは２つの状態とその間の状態遷移のみを考える。
【００１９】
図９は図８の状態遷移図表現の入力データをＨＣＣ言語記述に変換した例を示している。図９に示す（１）（２）（５）の各ステートメントは、本例の機械装置の初期状態やバルブ操作タイミングなどの運転条件を記述したものである。（３）および（４）のステートメントが図８の状態遷移表現に対応している。ＨＣＣ言語では、上述したようにプログラム中で運動方程式をそのまま記述することができる。また、各々の状態へ遷移するための前提条件を文頭における「ａｌｗａｙｓ  ｉｆ」に続けて記述し、また各々の状態から次状態へ遷移するための条件を文末尾における「ｗａｔｃｈｉｎｇ」に続けて記述することができる。ハイブリッドモデル出力部２１０は、このようなＨＣＣ言語に固有の「ａｌｗａｙｓｉｆ」や「ｗａｔｃｈｉｎｇ」などの表現を自動的に追加する。なお、本発明によるハイブリッドモデル作成は、ハイブリッドコンストレイントプログラミング言語としてのＨＣＣ言語のみに限定されず、ＨＣＣ言語と等価的な機能を備える他のプログラミング言語を対象に実施することも可能である。
【００２０】
ハイブリッドコンストレイントプログラミング言語では、図９のようなプログラム中の記述順序（図９の（１）〜（５）の順序）で各ステートメントが逐次に実行されるわけではない。言い替えれば、シミュレーションを実行する時間軸に沿って成立するステートメントが探索され、順不同にて実行される。つまり、プログラムにおけるステートメント（１）〜（５）の記述順序はその実行順序とは関係がない。たとえば、シミュレーションを開始した時点では、（１）と（５）のみが有効である（成立している）。同開始時点でイベント「Ｒｉｇｈｔ」（図９のｅ１）がステートメント（１）により発生しているので、ステートメント（４）の前提条件であるイベント「Ｒｉｇｈｔ」（ｅ４）が真であり、同ステートメント（４）の運動方程式ｆ２が有効である。つまり、図８の紙面左側に示す状態を初期状態としてシミュレーションが実行開始されることになる。
【００２１】
図９のＨＣＣ言語記述のプログラムによると、時間が「５０」になるとステートメント（２）が有効になり、イベント「Ｌｅｆｔ」（ｅ２）が発生する。これに伴い、ステートメント（４）の条件（「ｗａｔｃｈｉｎｇ」に続いて記述されたイベントｅ６）が有効になるとともに同ステートメント（４）の運動方程式ｆ２が無効となる。代わって、ステートメント（３）の前提条件（イベントｅ３）が真となり、運動方程式ｆ１が有効となる。
【００２２】
図８のような状態遷移図表現の入力データを図９のようなＨＣＣ言語（ハイブリッドコンストレイントプログラミング言語）で記述されたハイブリッドモデルに変換する具体的な手順は一例として次のようなものである。すなわち、先ず図２に示す連続系変換ステップ（Ｓ３００）において、状態遷移図表現の入力データにおけるそれぞれの状態の記述である常微分連立方程式を抽出し、ＨＣＣ言語のハイブリッドモデル形式のデータに転記する。この作業は図１のメモリ２０９を利用して行われる。なお、ＨＣＣ言語においては上述のようにステートメントの記述順序は意味をなさないので、転記においてはこれを考慮する必要はない。
【００２３】
また、連続系変換ステップ（Ｓ３００）においては、複数の常微分方程式が連立されている場合に、これを個別の方程式に分解し、所定の書式に変換する。例えば、図９の運動方程式ｆ１が「ｙ＝０」と連立されている場合は、この運動方程式ｆ１の部分を｛ｆ＝ｍ＊ｘ’’，ｙ＝０｝という｛｝によって連立（二元、三元、あるいはそれ以上でもよい）を明記する書式とする。この書式においては、連立させる方程式は「，」（カンマ）によって区切られている。
【００２４】
あるいは、図９のＨＣＣ言語記述に、新たに「（６）  always if Left then do always y = 0 watching Right」というプログラム記述を加えることで、｛｝による連立を行わなくても同じ効果を得ることができる。これは、ステートメント（３）とこの新たに追加するステートメント（６）とは、その前提条件と遷移条件がまったく同じであり、ハイブリッドコンストレイントプログラミング言語の処理系がステートメント（３）とステートメント（６）の運動方程式を自動的に連立させることができるからである。
【００２５】
次に、図２に示す状態遷移変換ステップ（Ｓ３０１）において、状態遷移図表現の入力データから、状態の遷移を起こすイベント（外部イベントと内部状態に起因する内部イベントの両方を含む）を抽出する。図８の例では、それぞれの状態において、自分の状態に遷移してくるための前提条件と自分の状態から他の状態へ遷移していく遷移条件とがそれぞれ１つずつしかないため、図９のステートメント（３）、（４）における前提条件（「ａｌｗａｙｓ  ｉｆ」に続く箇所）と遷移条件（「ｗａｔｃｈｉｎｇ」に続く箇所）にイベント名をそのまま転記すれば良い。これによりハイブリッドコンストレイントプログラミング言語への変換が終了する。しかし、図７の例では、状態遷移がより複雑である。例えばバルブ左のイベント「Ｌｅｆｔ」が発生した場合、その前の状態が図７の上側であるのか下側であるかによって遷移先が異なる。このように同じイベントの発生であっても遷移前の状態によって遷移先が異なる場合には、イベントを区別する必要がある。今、図７上側の「バルブ左のイベント」を「Ｌｅｆｔ１」、同図下側の「バルブ左のイベント」を「Ｌｅｆｔ２」とする。さらに、状態を示す変数「ｓｔａｔｅ」を新たに導入する。そして、図７左上の状態で変数「ｓｔａｔｅ」は１、左下で２、右上で３、右下で４の値をとることにする。これを用いて、イベント「Ｌｅｆｔ」が外部から発生した場合に、変数「ｓｔａｔｅ」により示される内部の状態に応じてイベント「Ｌｅｆｔ１」または「Ｌｅｆｔ２」を発生する。イベント「Ｌｅｆｔ」に関わるプログラム記述は以下のようになる。
always if Left1 then always { F = m x’’, state = 3} watching {Right || NoContact}
always if Left2 then always { F − k x = m x’’, state = 4 } watching {Right || Contact}
always if (Left && state == 1) then Left1
always if (Left && state == 2) then Left2
但し、「NoContact」、「Contact」はバネの接触・非接触に関するイベントである。これらは「Ｌｅｆｔ」のイベントと同様に考えることができるが、説明が複雑になるのでプログラムの全部は示さない。このように状態遷移変換ステップ（Ｓ３０１）では、同じイベントによって、結果として異なる状態に遷移するかどうかを判定し、そのような場合にはＬｅｆｔをＬｅｆｔ１とＬｅｆｔ２に分解したように、イベントを内部イベントに分解して名前付け等を行う。
【００２６】
なお、遷移条件が複雑になる場合には、中間遷移状態を導入する以下のような状態遷移変換手順を適用することも有効である。この場合の状態遷移変換ステップ（Ｓ３０１’）は、図７のような状態遷移について、図１０に示すような中間状態を設定する。すべて状態からは「GoToNeutral」イベントによって中間状態に遷移する。これに加えて変数「PrevState」、「Eventtype」という変数を導入し、中間状態遷移前の状態を記憶しておく。このようにすると、
always if Right then do always Eventtype = Right watching {GoTo1 || GoTo2 || GoTo3 || GoTo4}
always if Left then do always Eventtype = Left watching {GoTo1 || GoTo2 || GoTo3 || GoTo4}
always if Contact then do always Eventtype = Contact watching {GoTo1 || GoTo2 || GoTo3 || GoTo4}
always if NoContact then do always Eventtype = NoContact watching {GoTo1 || GoTo2 || GoTo3 || GoTo4}
always if Goto1 then do always { prevState = 1, -F = m x’}  watching GoToNeutral
always if Goto2 then do always { prevState = 2, -F −kx = m x’}  watching GoToNeutral
always if Goto3 then do always { prevState = 3, F = m x’}  watching GoToNeutral
always if Goto4 then do always { prevState = 4, F − k x = m x’}  watching GoToNeutral
always if (GoToNeutral && Eventtype == NoContact && prevState == 2 ) then GoTo1
always if (GoToNeutral && Eventtype == Right && prevState == 3 ) then GoTo1
always if (GoToNeutral && Eventtype == Contact && prevState == 1 ) then GoTo2
always if (GoToNeutral && Eventtype == Right && prevState == 4 ) then GoTo2
always if (GoToNeutral && Eventtype == NoContact && prevState == 4 ) then GoTo3
always if (GoToNeutral && Eventtype == Left && prevState == 1 ) then GoTo3
always if (GoToNeutral && Eventtype == Contact && prevState == 3 ) then GoTo4
always if (GoToNeutral && Eventtype == Left && prevState == 2 ) then GoTo4
とすることにより、図７の状態遷移を表現できる。すなわち、まず、Rightなどの外部イベント、Contactなどの内部イベントそれぞれに対して、Eventtypeという状態変数を定義する。これら状態変数の値の設定処理を対応イベントと関連付けて生成する。これに相当するものとして例えば「always if Right then do always Eventtype = Right watching {GoTo1 || GoTo2 || GoTo3 || GoTo4}」は、このステップで生成されるプログラム記述である。次に、それぞれの状態に対して遷移してくる動作（図７のバルブ左などの矢印）を列挙し、それぞれの矢印に対して動作を表現する論理式を生成する。例えば、「always if (GoToNeutral && Eventtype == Contact && prevState == 3 ) then GoTo4」はそのような例であり、遷移前の状態と遷移をさせるイベントとの組になっている。このような表現をすべての矢印について列挙すればよい。
【００２７】
以上のように、連続系変換ステップ（Ｓ３００）および状態遷移変換ステップ（Ｓ３０１）によって、状態遷移図表現の入力データをＨＣＣ言語で記述されたハイブリッドモデルに変換できる。なお、入力データが状態遷移図表現ではなく状態遷移表の表現であってもよいことは言うまでもない。また、連続系変換ステップ（Ｓ３００）および状態遷移変換ステップ（Ｓ３０１）の実行順序を逆にしてもよい。
【００２８】
次に、状態遷移図表現の入力データから、ブロック線図形式のモデルを得て出力する場合について説明する。この場合、連続系変換ステップ（Ｓ３００）及び状態遷移変換ステップ（Ｓ３０１）を図２のフローに従い実行してもよいが、ブロック線図形式のモデルを出力するのみとしてもよい。
【００２９】
図１１は、ある振動系の一例について、各々の状態における常微分方程式をブロック線図に変換した結果を示している。５０１に示されているようにＭ１及びＭ２を有する振動系は５０２のような常微分方程式で表現される。これをブロック線図で表現したものが５０３である。５０２の形式から５０３への変換については、よく知られているので説明を省略する。詳しくは、MathWorks社のSimulinkのソフトウェアマニュアルや特開平７−１６０６７３号公報の記載を参考することができる。
【００３０】
ブロック線図形式のこのようなモデルは、ＧＵＩを構成する連続系方程式入力部２０７にて入力された常微分連立方程式の入力データを用いて作成される。このような本実施形態の処理は、ＨＣＣ言語のように常微分方程式をそのまま記述することまでは行えないようなシミュレーションとの連繋に有効である。
【００３１】
以下、処理部２０４により提供されるＧＵＩ（グラフィカルユーザインターフェース）の構成例および操作手順を図１２乃至図１６を参照して説明する。図１２乃至図１６に示す状態遷移の描画画面４００はディスプレイ２０１に表示される。この画面４００上においてユーザはマウス２０３の操作に対応するマウスポインタ４０４によって処理種別の指示や各種編集操作を行うことができる。処理種別は、本例では３つのメニューボタン、すなわち新規状態定義ボタン４０１、状態遷移定義ボタン４０２、モデル出力ボタン４０３とからなる。
【００３２】
図１２はユーザが新規状態定義ボタン４０１を選択し、画面４００上の作業域に第１の状態を示す長方形（矩形）４０５ａをマウス２０３を操作して描画した状態を示す。ユーザがマウスポインタ４０４を既に描画した長方形４０５ａの領域内に移動させると、自動的に連続系方程式が入力可能な状態になる。ここでユーザはキーボード２０２を利用して運動方程式を図１３に示すように入力する。
【００３３】
図１４はユーザが再度新規状態定義ボタン４０１を選択し、画面４００上の作業域において第１の状態を示す長方形（矩形）４０５ａに加えてさらに第２の状態を示す長方形（矩形）４０５ｂを描画し、運動方程式を入力した状態を示している。ここでユーザは、状態遷移定義ボタン４０２を選択すると、状態間の遷移を矢印で入力することができる（図１５）。ここでの操作は例えば４０５ａを指定しつつマウス２０３のドラッグ操作を行うことによる。さらに、指定された状態遷移が発生する前提条件として、矢印４０６ａの近傍にイベント「Ｌｅｆｔ」を入力することができる。図１６は、さらに状態遷移を示す矢印４０６ｂを書き加えた状態を示している。
【００３４】
ここで、ユーザがモデル出力ボタン４０３を選択すると、これまでの入力データが状態遷移図表現の入力データとして確定されるとともに、上述した変換処理が実行され、その結果（ＨＣＣ言語等のハイブリッドモデル）が所定のファイル２０５に出力される。
【００３５】
以上説明した本発明の実施形態によれば、コンピュータなどの画面上でグラフィカルなインターフェースを用いて状態遷移を記述することができる。また、それぞれの状態については常微分方程式や代数方程式を直接入力することができる。さらに、このようにして入力されたデータをもとに、ＨＣＣ言語などのハイブリッドコンストレイントプログラミングのプログラム形式や、ブロック線図により常微分方程式を解く形式への変換出力を得ることができ、ハイブリッドモデルを極めて効率よく実行することが可能になる。
【００３６】
したがって、ＨＣＣのような特殊なプログラミング言語についての深い知識がなく、制御設計者が通常行うブロック線図による系の表現などに不慣れな技術者（特に機械技術者など）であっても、直感的かつ容易にハイブリッドモデルを作成できる。
【００３７】
なお、本発明は上述した実施形態に限定されず種々変形して実施可能である。
【００３８】
【発明の効果】
以上説明したように、本発明によれば、熟練を要することなくユーザが直感的かつ容易にハイブリッドモデルを作成できるよう支援を行うためのハイブリッドモデル作成方法及びプログラムを提供できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るハイブリッドモデル作成装置の概略構成を示すブロック図
【図２】実施形態のハイブリッドモデル作成装置によるハイブリッドモデル作成手順を示すフローチャート
【図３】ハイブリッドモデルの作成対象の例題である機械装置を示す図であって、その第１状態を示す図
【図４】ハイブリッドモデルの作成対象の例題である機械装置を示す図であって、その第２状態を示す図
【図５】ハイブリッドモデルの作成対象の例題である機械装置を示す図であって、その第３状態を示す図
【図６】ハイブリッドモデルの作成対象の例題である機械装置を示す図であって、その第４状態を示す図
【図７】例題の機械装置について、その４つの状態変化と、それぞれの状態に対応する運動方程式を状態遷移図として表現した図
【図８】実施形態で考慮する図７の簡略化を示す図
【図９】図８の状態遷移図表現の入力データをＨＣＣ言語記述に変換した例を示す図
【図１０】状態遷移変換における中間状態の設定を説明する図
【図１１】
【図１２】  状態遷移図形式の入力データを編集するためのＧＵＩを示す図であって、新規状態を定義した様子を示す図
【図１３】  状態遷移図形式の入力データを編集するためのＧＵＩを示す図であって、連続系方程式（常微分方程式）を入力した様子を示す図
【図１４】  状態遷移図形式の入力データを編集するためのＧＵＩを示す図であって、他の状態を定義した様子を示す図
【図１５】  状態遷移図形式の入力データを編集するためのＧＵＩを示す図であって、定義された２つの状態間の一方の遷移を定義する様子を示す図
【図１６】  状態遷移図形式の入力データを編集するためのＧＵＩを示す図であって、定義された２つの状態間の他方の遷移を定義する様子を示す図
【符号の説明】
２０１…ディスプレイ
２０２…キーボード
２０３…マウス
２０４…処理部
２０５…二次記憶装置
２０６…状態定義部
２０７…連続系方程式入力部
２０８…状態遷移定義部
２０９…メモリ
２１０…ハイブリッドモデル出力部
【図１】
0003866595.tif 000002
【図２】
0003866595.tif 000003
【図３】
0003866595.tif 000004
【図４】
0003866595.tif 000005
【図５】
0003866595.tif 000006
【図６】
0003866595.tif 000007
【図７】
0003866595.tif 000008
【図８】
0003866595.tif 000009
【図９】
0003866595.tif 000010
【図１０】
0003866595.tif 000011
【図１１】
0003866595.tif 000012
【図１２】
0003866595.tif 000013
【図１３】
0003866595.tif 000014
【図１４】
0003866595.tif 000015
【図１５】
0003866595.tif 000016
【図１６】
0003866595.tif 000017