(57)【要約】【課題】ハイブリッドモデルを利用して対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーション方法およびプログラムを提供する。【解決手段】ハイブリッドモデル記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と該記述データ中に出現する連続系方程式の記述とを抽出する。この結果から連続系方程式の切り替えが必要となる条件及び対象となる連続系方程式の関係を表すテーブルを生成する。また連続系方程式についての内部データ表現を生成する。イベントの生起に応じて上記テーブルを参照し、条件に従って連続系方程式を有効なものに切り替える。この切り替えられた連続系方程式に対応する内部データ表現を用い、時間軸に沿った数値積分により該連続系方程式を解いて上記機構の挙動を表すデータを出力する。【選択図】    図１
2004178300.tif 000002
【特許請求の範囲】
【請求項１】
ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーション方法であって、
前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析ステップと、
前記解析ステップにおいて抽出された状態遷移に伴う連続系方程式の切り替えに関する記述から、該連続系方程式の切り替えが必要となる条件及び対象となる連続系方程式の関係を表すテーブルを生成するテーブル生成ステップと、
前記解析ステップにおいて抽出された連続系方程式の記述から、該連続系方程式についての内部データ表現を生成する内部データ表現生成ステップと、
イベントの生起に応じて前記テーブルを参照し、前記条件に従って連続系方程式を有効なものに切り替える切り替えステップと、
前記切り替えステップにおいて切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行ステップと、
を具備することを特徴とするシミュレーション方法。
【請求項２】
前記切り替えステップは、少なくとも一つの前記連続系方程式について、該連続系方程式が有効であるか否かを表すフラグを操作することにより、該連続系方程式を有効なものに切り替えることを特徴とする請求項１に記載のシミュレーション方法。
【請求項３】
前記イベントは、前記機構を制御する機構制御ソフトウェアを含む外部からの制御信号又は所定の内部変数の評価結果を含むことを特徴とする請求項１又は２に記載のシミュレーション方法。
【請求項４】
前記シミュレーション実行ステップにおける数値積分の演算結果に基づいてキネマティックスシミュレーションを実行するステップをさらに具備することを特徴とする請求項１乃至３のいずれかに記載のシミュレーション方法。
【請求項５】
ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーション方法であって、
前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析ステップと、
前記解析ステップにおいて抽出された連続系方程式の記述に基づいて、第１のプログラムを生成する第１生成ステップと、
前記解析ステップにおいて抽出された状態遷移に伴う連続系方程式の切り替えに関する記述に基づいて、第２のプログラムを生成する第２生成ステップと、
前記第１生成ステップにおいて生成された第１のプログラムを実行することにより、前記連続系方程式についての内部データ表現を生成するステップと、
前記第２生成ステップにおいて生成された第２のプログラムを実行することにより、イベントの生起に応じて前記条件に従って連続系方程式を有効なものに切り替える切り替えステップと、
前記切り替えステップにおいて切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行ステップと、
を具備することを特徴とするシミュレーション方法。
【請求項６】
前記切り替えステップは、少なくとも一つの前記連続系方程式について、該連続系方程式が有効であるか否かを表すフラグを操作することにより、該連続系方程式を有効なものに切り替えることを特徴とする請求項５に記載のシミュレーション方法。
【請求項７】
前記イベントは、前記機構を制御する機構制御ソフトウェアを含む外部からの制御信号又は所定の内部変数の評価結果を含むことを特徴とする請求項５又は６に記載のシミュレーション方法。
【請求項８】
前記シミュレーション実行ステップにおける数値積分の演算結果に基づいてキネマティックスシミュレーションを実行するステップをさらに具備することを特徴とする請求項５乃至７のいずれかに記載のシミュレーション方法。
【請求項９】
ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーションプログラムであって、
前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析手順と、
前記解析手順において抽出された状態遷移に伴う連続系方程式の切り替えに関する記述から、該連続系方程式の切り替えが必要となる条件及び対象となる連続系方程式の関係を表すテーブルを生成するテーブル生成手順と、
前記解析手順において抽出された連続系方程式の記述から、該連続系方程式についての内部データ表現を生成する内部データ表現生成手順と、
イベントの生起に応じて前記テーブルを参照し、前記条件に従って連続系方程式を有効なものに切り替える切り替え手順と、
前記切り替え手順において切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行手順と、
をコンピュータに実行させるためのシミュレーションプログラム。
【請求項１０】
ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーションプログラムであって、
前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析手順と、
前記解析手順において抽出された連続系方程式の記述に基づいて、第１のプログラムを生成する第１生成手順と、
前記解析手順において抽出された状態遷移に伴う連続系方程式の切り替えに関する記述に基づいて、第２のプログラムを生成する第２生成手順と、
前記第１生成手順において生成された第１のプログラムを実行することにより、前記連続系方程式についての内部データ表現を生成する手順と、
前記第２生成手順において生成された第２のプログラムを実行することにより、イベントの生起に応じて前記条件に従って連続系方程式を有効なものに切り替える切り替え手順と、
前記切り替え手順において切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行手順と、
をコンピュータに実行させるためのシミュレーションプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを用いて機械等の挙動のシミュレーションを行うための方法およびプログラムに関し、特に本発明はハイブリッドモデルを用いるものである。
【０００２】
【従来の技術】
現在、コンピュータを用いて機械やプラント等の挙動のシミュレーションを行う際に、ハイブリッドモデリングと呼ばれる手法が使われている。ハイブリッドモデルを用いたシミュレーションは「ハイブリッドシミュレーション」と呼ばれている。このようなシミュレーション挙動をするシステムを「ハイブリッドシステム」と呼ぶこともある。
【０００３】
シミュレーションの目的で作成されるハイブリッドモデルは、概念的には常微分方程式や代数方程式を連立させた連立方程式によって表現される連続系モデルと、イベント発生に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。ハイブリッドモデルによれば、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現することができる。
【０００４】
ハイブリッドモデルを記述するための言語として、米国ゼロックス社（商標）のパロアルト研究所にて創作されたＨＣＣ（Ｈｙｂｒｉｄ  Ｃｏｎｃｕｒｒｅｎｔ  Ｃｏｎｓｔｒａｉｎｔ  Ｐｒｏｇｒａｍｍｉｎｇ）と呼ばれる言語がある（下記特許文献１および非特許文献１参照。）。ＨＣＣは発展途上にあり、現在も米国ＮＡＳＡのエイムズ研究所において研究が進められている。ＨＣＣは制約処理プログラミング（コンストレイントプログラミング）と呼ばれる技術の一種であり、連続系モデルを表現する常微分方程式や代数方程式を制約として扱い、これら方程式をそのまま順不同で記述することができる。このような制約記述に、状態遷移を制御する記述を付加してＨＣＣ言語のハイブリッドモデルは完成される。ＨＣＣによれば、方程式をそのまま制約として羅列する（プログラミングする）ことができ、複雑なモデルを記述可能である。
【０００５】
このようにハイブリッドモデルの技術を用いれば、系の特性を常微分方程式などでモデル表現し、初期状態から時間の推移に従ってどのような挙動を示すかをシミュレーションすることができる。
【０００６】
微分方程式などで表現可能な対象や現象を的確にモデル化できるハブリッドモデルの技術の応用例として、ソフトウエアにより機構が制御されるメカトロニクス機器の機構シミュレーションがある。かかる機構シミュレーションによれば、機構の実機が存在しない状況においても、当該機構を制御する制御ソフトウエアのプロトタイピング、テスト、あるいはデバッグなどが行えるようになる。
【０００７】
しかし、ハイブリッドモデルを扱うことのできる公知のプログラム言語は、必ずしもメカトロニクス機器の機構シミュレーションに応用することを目的に開発されたものではなく、このため次のような問題点がある。
【０００８】
例えば米国ゼロックス社（商標）のＨＣＣは、インタプリタ型のプログラミング言語であり、実行中にＧＣ（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ：ごみ集め）と呼ばれる処理が起動される。この処理が完了するまで、シミュレーション（のプログラム）は一時的に停止させられてしまう。これによりシミュレーションの実行時間を正確に把握できない。アプリケーションの実装に不向きな点は他にもある。例えばシミュレーションのプログラム作成が極めて難易度が高い点である。たとえば制御ソフトウエアが機構に送信するアクチュエータへの動作コマンドなどを、シミュレータの外部から制御信号として受け取るような構成とする場合、外部関数などを個別に定義する必要がある上、プログラミングにおいてかなりの工夫を必要とする。
【０００９】
【特許文献１】
米国特許第５，８３１，８５３号明細書
【００１０】
【非特許文献１】
インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ２．ｐａｒｃ．ｃｏｍ／ｓｐｌ／ｐｒｏｊｅｃｔｓ／ｍｂｃ／ｐｕｂｌｉｃａｔｉｏｎｓ．ｈｔｍｌ＃ｃｃｌａｎｇｕａｇｅｓ＞
【００１１】
【発明が解決しようとする課題】
本発明はかかる事情を考慮してなされたものであり、ハイブリッドモデルを用いて複雑な機構系を簡便かつ正確にモデル化でき、該機構系を制御する制御ソフトウエアとの連携シミュレーションにも好適なシミュレーション方法およびプログラムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記課題を解決し目的を達成するために本発明は次のように構成されている。
【００１３】
本発明に係るシミュレーション方法は、ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーション方法であって、前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析ステップと、前記解析ステップにおいて抽出された状態遷移に伴う連続系方程式の切り替えに関する記述から、該連続系方程式の切り替えが必要となる条件及び対象となる連続系方程式の関係を表すテーブルを生成するテーブル生成ステップと、前記解析ステップにおいて抽出された連続系方程式の記述から、該連続系方程式についての内部データ表現を生成する内部データ表現生成ステップと、イベントの生起に応じて前記テーブルを参照し、前記条件に従って連続系方程式を有効なものに切り替える切り替えステップと、前記切り替えステップにおいて切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行ステップと、を具備することを特徴とするシミュレーション方法である。
【００１４】
また、本発明に係るシミュレーション方法は、ハイブリッドモデルを利用して、対象とする機構の挙動を時間軸に沿ってシミュレーションするシミュレーション方法であって、前記ハイブリッドモデルの記述データを解析し、状態遷移に伴う連続系方程式の切り替えに関する記述と、前記ハイブリッドモデルの記述データ中に出現する連続系方程式の記述とを抽出する解析ステップと、前記解析ステップにおいて抽出された連続系方程式の記述に基づいて、第１のプログラムを生成する第１生成ステップと、前記解析ステップにおいて抽出された状態遷移に伴う連続系方程式の切り替えに関する記述に基づいて、第２のプログラムを生成する第２生成ステップと、前記第１生成ステップにおいて生成された第１のプログラムを実行することにより、前記連続系方程式についての内部データ表現を生成するステップと、前記第２生成ステップにおいて生成された第２のプログラムを実行することにより、イベントの生起に応じて前記条件に従って連続系方程式を有効なものに切り替える切り替えステップと、前記切り替えステップにおいて切り替えられた連続系方程式に対応する前記内部データ表現を用い、前記時間軸に沿った数値積分により該連続系方程式を解いて前記機構の挙動を表すデータを出力するシミュレーション実行ステップと、を具備することを特徴とするシミュレーション方法である。
【００１５】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１６】
（第１実施形態）
図１は、本発明の第１実施形態に係る機構シミュレータの概略構成を示すブロック図である。
【００１７】
本発明の第１実施形態に係る機構シミュレータ（ハイブリッドモデルシミュレーション部１０１）はモデル方程式制御情報解析部１１１と、方程式構文解析部１１２と、ハイブリッドモデルシミュレーション実行部１０２とにより構成されている。ハイブリッドモデル記述１０４は、例えばＨＣＣのようなハブリッドモデル記述言語で記述されたソースプログラムであって、本実施形態に係る機構シミュレータ１０１への入力である。制御信号１０６も機構シミュレータ１０１への入力であり、この制御信号１０６は後述する機構制御ソフトウエアないしは機構制御ソフトウエアのシミュレータから与えられる。また、本実施形態に係る機構シミュレータ１０１からの出力は、シミュレーション結果としての変数値の演算結果およびその時間履歴であり、記憶部１０５に対して出力される。
【００１８】
図１に示すように、ハイブリッドモデルシミュレーション実行部１０２は、モデル方程式制御情報記憶部１１３と、方程式データ記憶部１１４と、連続系方程式切り替え部１１５と、連続系シミュレーション部１０３とにより構成されている。なお、本実施形態は一般的なコンピュータを用いて構成することができ、その基本的なハードウェア構成として、図示しないが中央演算ユニット（ＣＰＵ）、メモリ、外部記録装置、通信インターフェース（Ｉ／Ｆ）、および表示装置やキーボード、マウス等の入力装置を備える。また、これらのハードウェアを制御するためのオペレーティングシステム（ＯＳ）を備える。また、本発明の実施形態に係る機構シミュレータは、このようなオペレーティングシステム上で動作するアプリケーションソフトウェアとして実装することができる。
【００１９】
このような本実施形態に係る機構シミュレータの構成及びその処理手順について説明する前に、ここではまずハイブリッドモデル１０４がどのように記述されるかを具体例を挙げて説明する。
【００２０】
図２および図３は、具体例に係るハイブリッドモデルの記述対象である機械装置を示す図であって、この機械装置は、バルブ３０１、バネ３０３、およびピストン３０２を備えた簡素な構造を有するシリンダ装置である。
【００２１】
バルブ３０１は外部からの指令（イベント）に応じて開閉動作する。これによりシリンダ装置内の空気の流れを図２のように右側に変更するイベントを以下、「Ｒｉｇｈｔ」と呼び、空気の流れを図３のように左側に変更するイベントを「Ｌｅｆｔ」と呼ぶ。図２は、バルブ３０１にＲｉｇｈｔのイベントが与えられた状態を示しており、ピストン３０２には紙面左向きへの力が作用している。この状態を示す運動方程式はシリンダ装置の下部に示してあるように、「−Ｆ  ＝  ｍ  ｘ’’」である。これに対し図３は、バルブ３０１にＬｅｆｔのイベントが与えられた状態を示しており、空気の流れの向きが変わり、運動方程式は同図のように「Ｆ  ＝  ｍ  ｘ’’」に変化している。
【００２２】
図４は、このような状態変化とそれぞれの状態に対応する運動方程式を状態遷移図として表現したものである。ハイブリッドモデルは、この図４に示されるような状態遷移と、各状態の記述が微分方程式や代数方程式で表現されるものを指す。図４によれば、状態が２つあって、かかる２つの状態間に状態遷移が存在することがわかる。
【００２３】
図５は、図４の状態遷移図をもとに具体的なハイブリッドモデルの内容をＨＣＣ（Ｈｙｂｒｉｄ  Ｃｏｎｃｕｒｒｅｎｔ  Ｃｏｎｓｔｒａｉｎｔ  Ｐｒｏｇｒａｍｍｉｎｇ）言語で記述したプログラムの一例を示す図である。図５において、（ソース）プログラムの論理行番号を仮にＬ１〜Ｌ１０とする。Ｌ３、Ｌ４、およびＬ１０は、この機械装置の初期状態やバルブ操作のタイミングなどの運転条件の記述に相当し、Ｌ６およびＬ８は図４に示した状態遷移の表現記述である。
【００２４】
ＨＣＣでは、運動方程式は、図から分かるようにプログラム内でそのまま記述することができる。また、それぞれの状態へ遷移する条件は、「ａｌｗａｙｓ  ｉｆ」に続いて記述し、また、それぞれの状態から遷移していく条件は「ｗａｔｃｈｉｎｇ」に続けて記述すればよい。
【００２５】
なお、ＨＣＣでは、プログラムの記述の順序（図５における論理行番号Ｌ１→Ｌ１０の順序）にそって実行されるわけではない。ＨＣＣでは、個別のプログラム記述のうち、シミュレーションを実行する時間軸に沿って成立するものが探索され、実行される。すなわち、論理行番号Ｌ１→Ｌ１０の順序は実行順序とは関係がない。たとえば、シミュレーションを開始した時点では、Ｌ３およびＬ１０のみが有効である。ここで、イベントＲｉｇｈｔ（ｅｖ１）がＬ３により発生するため、Ｌ８の前提条件であるＲｉｇｈｔが有効となり、Ｌ８に記述されている運動方程式ｅｑ２が有効になる。つまり、図４の左側の状態からシミュレーションが実行されることになる。
【００２６】
さらに、時間が５０になるとＬ４が有効となり、イベントＬｅｆｔ（ｅｖ２）が発生し、Ｌ８の遷移条件（「ｗａｔｃｈｉｎｇ」以下、すなわちＬｅｆｔ）が有効となって、Ｌ８の運動方程式ｅｑ２が無効となる。これに代わって、Ｌ６の前提条件が有効となり、運動方程式ｅｑ１が有効となる。
【００２７】
なお、以上のようなプログラム例は外部からのイベント（ｅｖ３，ｅｖ４）によって状態が遷移する場合を記述したものであったが、勿論、内部の状況によって状態を変化させてもよい。たとえば、図２においてバルブ３０１が切り替えられない場合には、移動するピストン３０２がバネ３０３に接触し、該バネ３０３からの反力を受けるようになる。すなわちピストン３０２の位置に関して、外部からのイベントが無い場合でも状態遷移が起こる場合が存在する。このような場合は、例えばｘが正であるかどうかの評価式（不等式）を評価することで状態遷移の必要性を判断できる。
【００２８】
一般的に、ハイブリッドモデルは、常微分方程式や代数方程式を連立させた連立方程式によって表現される連続系モデルと、イベント発生に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。ハイブリッドモデルによれば、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現することができる。
【００２９】
そして図１のモデル方程式制御情報解析部１１１は、以上説明した図５に示されるようなハイブリッドモデル記述１０４を入力とし、シミュレーション実行に先立ってモデル記述をまず解析し、必要となる連続系方程式のすべてをシミュレーションに適した形で登録する。
【００３０】
具体的には、モデル方程式制御情報解析部１１１は、図５に示される運動方程式ｅｑ１や運動方程式ｅｑ２などの連続系方程式の記述と、同図に示されるＲｉｇｈｔやＬｅｆｔなどのイベントに伴う状態遷移の制御情報の記述とをハイブリッドモデル記述１０４からシミュレーションの実行前に予め全て抽出するとともに両者を分離し、それぞれ、方程式構文解析部１１２およびモデル方程式制御情報記憶部１１３に渡す。
【００３１】
モデル方程式制御情報解析部１１１は、イベントに伴う状態遷移の制御情報の記述に基づき、条件式とその条件式が成り立つ場合に成立する連続系方程式のＩＤ、およびこれに応じて無効になる連続系方程式のＩＤとを関連付けるテーブルを生成する。このテーブルにより表される情報がモデル方程式制御情報１１３である。連続系方程式切り替え部１１５は、シミュレーション実行過程において定期的にこのテーブルを参照し、その内容を順番にすべてチェックする。ここで、条件式が成立した場合には該当する連続系方程式ＩＤについて、該連続系方程式を有効化又は無効化するための他のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）関数を呼び出す。このＡＰＩ関数は、該連続系方程式について設けられた有効・無効を表すフラグをセット／リセットする。これにより連続系方程式の切り替えが実行される。なお、後述する第２実施形態では、上記のようなテーブル（モデル方程式制御情報１１３）を生成することに代えて、上記ＡＰＩ関数を呼び出す第２のプログラミング言語（例えばＣ言語）のソースプログラムを生成する。
【００３２】
方程式構文解析部１１２は、与えられた連続系方程式を構文解析し、シミュレーション実行可能なデータ構造に変換して、方程式データ記憶部１１４に登録する。具体的には、方程式構文解析部１１２は個々の連続系方程式の記述を構文解析して複数の文字列に分解する。これら連続系方程式の記述を構成する文字列は、連続系方程式を登録するための所定のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）関数への引数として渡される。この方程式登録用ＡＰＩ関数は、上記構文解析結果に基づき、連続系方程式の記述をシミュレーション実行可能なデータ構造（内部データ表現）に変換して、方程式データ記憶部１１４に登録する。なお、個々の連続系方程式には、ユニークなＩＤ番号が割り当てられる。
【００３３】
たとえば「ａｂ／ｃｏｓ（ａ−（ｃ＋ｂ））−３ｃ」という式が与えられたと仮定すると、上記内部データ表現として図６のような木構造を生成する。この木構造において、例えば参照数字６１は線形多項式の親ノード（節）、６２は掛け算のノード、６３は割り算のノード、６４は外部関数（四則演算以外の意）のノード、６５は線形多項式を構成する各項のノードを表している。本例において、木構造の葉に相当するものはすべて変数（ａ，ｂ，ｃ）であり、これらに実数の係数が加わって線形式となる。線形式はｃｏｓなどの外部関数の引数になったり、掛け算や割り算の対象となる。変数には、別途、値が確定しているかどうかのフラグが設けられており、またこのような木構造のデータに基づいて該変数の現在の値が保持される。木構造のすべての葉の値（すなわち変数の値）が確定していれば、式の値を計算することができる。方程式データ記憶部１１４では、式の値の計算などを高速に行うことができるように、予め内部のデータ構造をつなぎ合わせて木構造を構成してある。このように、方程式データ（木構造を有する内部データ表現）を予め準備しておく本実施形態によれば、例えば「ａｂ／ｃｏｓ（ａ−（ｃ＋ｂ））−３ｃ」といった式の記述をシミュレーション実行時に構文解析する場合に比べ、シミュレーションを高速に実行できるようになる。
【００３４】
ここで、本実施形態との比較例として、ハイブリッドモデルのプログラム記述をインタプリタ型の言語処理系にて実行させる場合を説明する。かかる比較例はたとえば従来技術で説明した米国ゼロックス社（商標）のＨＣＣである。
【００３５】
インタプリタ型の場合、シミュレーション実行途中に方程式を追加することなどが許されるため、時間ステップを進めて数値積分を行うたびごとに、連立させるべき有効な方程式を列挙する処理、列挙された方程式を構文解析して内部の計算に適した内部データ構造（図６がその一例である）に変換する処理、方程式を連立させて実際の解く処理などを行わなければならない。これらの処理の際に、例えばどれだけの数の方程式が連立させられるかについても、あらかじめ決めることができないため、方程式が１つずつ列挙されるごとに必要なメモリを動的に確保する。処理によって必要なメモリの大きさは異なるため、あらかじめまとまったメモリ領域が確保されており、そこから必要なだけのメモリを確保することがよく行われる。また、その方程式が無効になった際にメモリを解放する処理を行わなければならない。開放されたメモリは後の処理で別の目的に使うことが可能であるが、小さな単位で細かく動的に確保されらメモリは、解放された後にそのまま利用することが難しいから、ガーベジコレクション（ごみ集め；Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）の処理によって、開放された細かなメモリの断片を集め、まとまった再利用可能なメモリ領域として再構成する必要がある。このような構文解析やメモリ管理の処理は計算コストが極めて高い複雑な処理であり、本来の目的であるシミュレーションの実行に影響を及ぼし得る。たとえば、ガーベジコレクションの処理が起動されてシミュレーションの実行が一時的に中断される場合などである。
【００３６】
これに対し本発明の実施形態では、上述したようにモデル方程式制御情報解析部１１１および方程式構文解析部１１２が設けられており、あらかじめハイブリッドモデル記述１０４をすべて解析し必要な内部データ表現（アクセスが高速でかつ単純な配列などのデータ）を生成、管理する構成であるから、上記比較例のような問題は生じない。
【００３７】
シミュレーション実行時においては、ハイブリッドモデルシミュレーション実行部１０２が起動され、機構制御ソフトウエアシミュレータ１０８などから得られる制御信号１０６を受信しながら、連続系方程式の値を計算することでシミュレーション実行が行われる。このとき、連続系方程式切り替え部１１５はモデル方程式制御情報記憶部１１３の内容を参照し、連続系方程式の切り替えを有効・無効のフラグを用いて実行する。図２の状態では、図５の運動方程式ｅｑ１は無効であり、運動方程式ｅｑ２が有効になっている。ここで、Ｌｅｆｔのイベントが発生した図３の状況においては、図５の運動方程式ｅｑ１を有効にし、運動方程式ｅｑ２を無効にするようフラグを操作する。これら有効・無効のフラグは方程式データ記憶部１１４に記憶される方程式それぞれの属性データとして管理される。
【００３８】
連続系シミュレーション部１０３は、方程式データ記憶部１１４を参照し、同記憶部１１４に木構造の形式で格納されている連続系方程式の内部データ表現を演算対象として、時間ステップづつ数値積分を実行する。シミュレーションは、常微分方程式及び代数多項式の連立からなる非線形連立方程式についての初期値問題である。このため、例えば図２に示される初期状態が与えられ、例えば一般によく使われているルンゲクッタアルゴリズムを用いて解の値を計算する。
【００３９】
必要なデータは機構シミュレータから出力を行い、さらに連続系方程式切り替え部１１５の処理に戻り、上記の処理を繰り返すことにより必要な時間のシミュレーションを実行する。シミュレーション結果は、変数値時間時歴記憶部１０５に保存され、シミュレーション終了後の分析などに利用される。
【００４０】
図７は、以上のように図１を参照して説明した機構シミュレータと、機構制御ソフトウエアとの連携を示す構成図である。図７において、機構シミュレータ（ハイブリッドシミュレーション部１０１）はブラックボックスとして簡易に示してある。
【００４１】
機構制御ソフトウエア（ないしは機構制御ソフトウェアシミュレータ）１０８は、シミュレーションの対象である機構の構成要素である例えばモータや、ソレノイドなどのアクチュエータへの動作コマンドを制御信号１０６として与える。これに応じてハイブリッドモデルシミュレーション部１０１はシミュレーション動作し、対象とする機構に設けられたフォトセンサーなどのセンサー情報を中心に必要なデータを生成して機構制御ソフトウエア１０８に送る。このような連携動作により、機構制御ソフトウエア１０８は、機構シミュレータ１０７との間で実機の機構と授受するものと同じデータを適正なタイミングで擬似的にやりとりすることができ、実機が存在しない状況におけるソフトウエアの検証作業などを実現できるようになる。
【００４２】
図８は、図７の構成に対しさらにキネマティクスシミュレーション部１０９を加えた場合を説明している。この図８の構成によれば、機構シミュレータ（ハイブリッドモデルシミュレーション部１０１）は、キネマティクスシミュレーション部１０９に基づいて、例えばモータの軸の角度が時間的にどのように変化するかといった運動理論的解析情報をさらに求めることができる。各時間ステップにおいて、キネマティクスシミュレーション部１０９は、求まったモータの角度などから機構の姿勢などを計算することもできる。これにより、機構シミュレータ側では、例えばロボットのアームがフォトセンサーの光ビームを遮っていないかどうかなどの判定を行うことができる。つまり、３次元空間において複雑形状を有する機構物体が運動するような場合に、センサーの状態などを効率的に計算することができる。なお、キネマティクスシミュレーション部１０９の具体的な実現方法やこれに必要な要素技術に関しては、本願発明と同一出願人による出願に係る特開２０００−１３７７４０公報、特開２００１−２８２８７７公報、特開２００２−２１５６９７公報等の記載が参考になる。
【００４３】
また、市販の機構解析ソフトウエアや３次元ＣＡＤの機構シミュレーション機能などを利用することも可能である。また、図８の構成に関し、ハイブリッドモデルのようなモデル記述言語で機構の挙動をモデル化する機能は提供されていないが、特開２００１−２２２５７２公報に記載の技術も参考にすることができる。
【００４４】
図９は、以上説明した本発明の第１実施形態に係るシミュレーションにおける一連の処理手順を示すフローチャートである。尚、この図９のフローチャートは、図８に示した構成、すなわちキネマティクスシミュレーション部１０９を備える構成におけるものである。
【００４５】
まず、図１のモデル方程式制御情報解析部１１１および方程式構文解析部１１２はハイブリッドモデル記述１０４を入力して構文解析する（ステップ５０１）。そして、イベントの発生に伴う状態遷移の制御情報の記述に基づき、条件式とその条件式が成り立つ場合に成立する連続系方程式のＩＤ、およびこれに応じて無効になる連続系方程式のＩＤとを関連付けるテーブルを生成し、モデル方程式制御情報記憶部１１３に記憶させる。また、連続系方程式の記述の構文解析結果に基づき、同記述をシミュレーション実行可能なデータ構造に変換するとともに方程式データ記憶部１１４に登録する（ステップ５０２）。
【００４６】
以上でシミュレーション実行のための前処理を終え、ここからシミュレーション実行の段階に移る。まずは機構制御ソフトウエアシミュレータ１０８等から与えられる制御信号１０６の受信処理を行う（ステップ５０３）。ここで、必要であれば、受信した制御信号に基づく値を適宜、変数に代入する。次に、状態変化の必要有無をステップ５０４にて判定する。状態変化が必要な場合、連続系方程式切り替え部１１５は、該当する連続系方程式について、その有効・無効のフラグを操作することにより、必要に応じて連続系方程式の切り替えを行なう（ステップ５０５）。
【００４７】
次に、連続系シミュレーション部１０３は数値積分を実行する（ステップ５０６）。次に、ハイブリッドモデルシミュレーション部１０１とキネマティクスシミュレーション部１０９との間で通信処理を行う（ステップ５０７）。具体的には、ハイブリッドモデルシミュレーション部１０１とキネマティクスシミュレーション部１０９との間で、モータ角度情報やセンサー情報などのやりとりが行われる。なお、図７のようにキネマティクスシミュレーション部１０９を備えない構成の場合、このステップ５０７はスキップされる。
【００４８】
次に、機構制御ソフトウエアシミュレータ１０８に対し機構シミュレータ側からセンサー情報などが送信される（ステップ５０８）。さらに、ステップ５０９にて終了判断を行ったのち、所定の終了条件が成立するまで時間を１ステップ進め（ステップ５１０）、ステップ５０３以降の処理手順を繰り返すことによりシミュレーション実行が行われる。
【００４９】
ハイブリッドモデルシミュレーション部１０１が機構制御ソフトウエアシミュレータ１０８やキネマティクスシミュレーション部１０９と連携し、全体として効率的にシミュレーションが実行されるためには、専らハイブリッドモデル記述１０４の内容に応じた処理を行う５０４、５０５、および５０６の各ステップと、専らデータ送受信等を行う５０３、５０７、および５０８の各ステップとの間の実行順序が適切かつ効率的に制御されなければならない。ここで、既に述べたように従来では、ハイブリッドモデル記述言語の特性（どの行が最初に実行されるか分からない）に起因し、上記実行順序を適切かつ効率的に制御するようプログラミングするには、極めて高度なテクニックを要し、難易度の高い作業である。また、単なる変数の値を扱うのではなく、外部から得られた情報を変数に代入してからハイブリッドモデルの処理を行うなど、外部とのインターフェースに関わる特別な外部関数などを用意し、これらをモデルの作成者が記述しなければならない。
【００５０】
これに対し本発明の実施形態によれば、ハイブリッドモデルシミュレーション実行部１０２が図９に示した一連の処理を実行するよう構成されていることから、上記のような問題を回避できる。すなわち、機構制御ソフトウエアシミュレータ１０８等の外部（プロセス）との間の通信に相当するソフトウェア部分は、ハイブリッドモデルとは独立して予め固定的に組み込まれている。このようなソフトウェアモジュールを俗に「（シミュレーション）エンジン」などと称し、本発明に従う一の実施形態として提供される。なお、外部から得られたデータをどの変数に代入するかは、ハイブリッドモデル記述１０４とは別個に入力しておくことになるが、ハイブリッドモデル記述１０４を作成する際には、外部から得られたデータが代入される変数名だけ理解しておけばよく、通信等の手順を何ら気にすることなくモデル作成（プログラミング）が可能になる。
【００５１】
また、上述したように本実施形態によれば、シミュレーション実行に先立ってハイブリッドモデル記述１０４をまず解析し、必要となる連続系方程式のすべてをシミュレーションに適した形で登録しておくとともに、特に第１実施形態ではイベントの成立等に基づく状態遷移に係る実行制御のためのテーブルを生成しておく。シミュレーション時には連続系方程式切り替え部１１５が該テーブルを参照する。ここで、状態遷移に伴う方程式の切り替え（入れ替え）を行う必要があると判断した際には、該当する連続系方程式の有効・無効のフラグを操作（セット／リセット）することで簡単にこれを実現できる。このような仕組みによれば、シミュレーション中にモデル記述の構文解析やガーベジコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ（ＧＣ）：ごみ集め）処理などに起因するシミュレーション実行速度の低下を防ぐことが可能になる。このような第１実施形態の機構シミュレータは、内部的には上記のような本発明に固有の処理手順を実行するものであるが、外見的にはインタプリタライクである。例えば、上記テーブルや方程式データを記憶する記憶部１１３、１１４等はＲＡＭ等の記憶装置を用いて構成される。
【００５２】
（第２実施形態）
次に本発明の第２実施形態を説明する。
【００５３】
図１０は本発明の第２実施形態に係る機構シミュレータの概略構成を示すブロック図である。第２実施形態の構成は、モデル方程式制御情報解析部１１１がハイブリッドモデル前処理部２０１としてハイブリッドモデルシミュレーション実行部１０２から独立した構成となっている点で第１実施形態とは異なっている。第２実施形態においては、ハイブリッドモデル記述１０４がまずハイブリッドモデル前処理部２０１により処理され、モデル方程式登録プログラム２０２およびモデル方程式制御プログラム２０３が生成される。また、ハイブリッドモデルシミュレーション実行部１０２を構成するソフトウェアモジュールとして、モデル方程式の登録を行うための関数および連続系方程式を切り替えるための関数がＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）関数として提供される構成である。
【００５４】
モデル方程式登録プログラム２０２およびモデル方程式制御プログラム２０３は、該当する上記ＡＰＩ関数を呼び出す記述を、入力されたハイブリッドモデル記述１０４に沿って適切に組み合わせたプログラムであり、モデル方程式制御情報解析部１１１により生成される。この観点から考えると、ハイブリッドモデル前処理部２０１は、入力をハイブリッドモデル記述１０４とし、出力を例えばＣ言語のＡＰＩ関数呼び出しの記述を含むＣプログラム（ソース）とするような、一種のコンパイラと考えることもできる。このようなモデル方程式登録プログラム２０２とモデル方程式制御プログラム２０３は、さらにＣ言語などのコンパイラによりコンパイルされ、例えば実行時に動的にリンク可能なライブラリが生成される。ハイブリッドモデルシミュレーション実行部１０２は、シミュレーション実行にあたっては、生成された動的リンクライブラリがリンクされ、これにより入力ハイブリッドモデルを忠実に再現するシミュレーションプログラムが完成し、実行可能になる。その実行時には、まず方程式構文解析部１１２を起動するＡＰＩ関数が呼ばれ、その後に連続系切り替えのＡＰＩ関数群が実行されてシミュレーションは遂行される。
【００５５】
ここで、図１に示した構成の第１実施形態と、図１０に示した構成の第２実施形態との相違点をより詳細に説明する。
【００５６】
それぞれの実施形態において、ハイブリッドモデルシミュレーション部１０２のアプリケーションインターフェースを構成する具体的なソフトウエアモジュールの仕様などは様々考えられるが、ここでは説明の都合上、以下の３つのＡＰＩ関数が最低定義されているとする。なお、プログラミング言語はＣ言語とする。
【００５７】
2004178300.tif 000003
１つ目のＡＰＩ関数ＸＸＸ＿ＡｄｄＥｑｎＤａｔａは、１つの連続系方程式を表す文字列のポインタを引数に指定する。ＸＸＸ＿ＡｄｄＥｑｎＤａｔａは、この連続系方程式を構文解析し、上述した図９のようなデータ構造に変換し、かかる内部データ表現を方程式データ記憶部１１４に登録する処理を行う。この処理において何らかのエラーが発生した場合には、ｅｒｒにエラーコードがセットされる。正常に処理が終了した場合は、登録された方程式のＩＤ番号を返り値とする。
【００５８】
２番目のＡＰＩ関数ＸＸＸ＿ＡｃｔｉｖａｔｅＥｑｎは、引数に指定された方程式ＩＤ番号に相当する方程式を有効にする。もし、すでに有効となっている方程式が指定されている場合には何もしない。返り値はエラーコードである。
【００５９】
３番目のＡＰＩ関数ＸＸＸ＿ＤｅＡｃｔｉｖａｔｅＥｑｎは、ＸＸＸ＿ＡｃｔｉｖａｔｅＥｑｎとは逆に、引数に指定された方程式ＩＤ番号に相当する方程式を無効にする。すでに無効となっている方程式が指定された場合には何もしない。
【００６０】
第１の実施形態においては、上述したようにモデル方程式制御情報解析部１１１によりハイブリッドモデル記述１０４から個々の方程式が抽出され、各々の方程式は更に方程式構文解析部１１２により複数の文字列に分解される。該方程式を構成する文字列はＸＸＸ＿ＡｄｄＥｑｎＤａｔａに引数として渡される。これにより方程式データ記憶部１１４に該方程式の内部データ表現が登録、蓄積される。同時に、個々の方程式には、ユニークなＩＤ番号が割り当てられ、モデル方程式制御情報解析部１１１は、モデル制御情報記憶部１１３の内部データとして、条件式とその条件式が成り立つ場合に成立する方程式のＩＤおよび無効になる方程式ＩＤとを表すテーブルを生成する。連続系方程式切り替え部１１５は、シミュレーション実行過程において定期的にこのテーブルを参照し、その内容を順番にすべてチェックする。ここで、条件式が成立した場合には該当する連続系方程式ＩＤについて、該連続系方程式を有効化又は無効化するため、ＸＸＸ＿ＡｃｔｉｖａｔｅＥｑｎないしはＸＸＸ＿ＤｅＡｃｔｉｖａｔｅＥｑｎを呼び出す。
【００６１】
これに対し第２実施形態においては、モデル方程式制御情報解析部１１１がＸＸＸ＿ＡｄｄＥｑｎＤａｔａを必要な方程式について順に呼ぶ関数（ＩｎｉｔＥｑｎＤａｔａ）を生成する。これがモデル方程式登録プログラム２０２に相当する。
【００６２】
また、モデル方程式制御情報解析部１１１は、シミュレーション実行の際に、時間がΔｔ進むごとに条件のチェックおよび方程式の変更（入れ替え）を行う関数（ＣｈａｎｇｅＥｑｎ）も生成する。これはモデル方程式制御プログラム２０３に相当する。第１実施形態では、これが内部のテーブルデータとそれを参照する方程式切り替えメカニズムであったのに対し、第２実施形態では上記のように具体的なソースプログラムの形態で実現されている。例えば、図５に示したハイブリッドモデル例について、以下のようなＣ言語のソースプログラムが自動生成される。
【００６３】
2004178300.tif 000004
2004178300.tif 000005
なお、ＧｅｔＥｖｅｎｔは、名前で指定されたイベントが生起しているかどうかをチェックする関数である。以上のプログラムは、上述したようにＣ言語のコンパイラによってコンパイルされ、さらに動的リンクライブラリの形式に整えられ、実行時にリンクされる。このように（ソース）プログラムが自動生成される本実施形態の場合、同ソースプログラム中に、ｅｑｎ１ｉｄとｅｑｎ２ｉｄの宣言がなされており、２つの方程式しか出現してないことが明記されているから、実行時に割り当てるメモリ量を、これら２つの方程式分について十分に用意すればよいことがわかる点で好ましい。なお、第１実施形態では、シミュレーション開始後にモデル制御情報記憶部１１３の内部データであるテーブルを原則的には拡張しない。シミュレーション開始前に最初にテーブルを生成する際には、モデル方程式制御情報解析部１１１から得られたテーブルの大きさに従って、該テーブルを保持するのに必要なメモリを確保すればよい。
【００６４】
なお、本発明は上述した実施形態に限定されず種々変形して実施可能である。
【００６５】
【発明の効果】
以上説明したように、本発明によれば、ハイブリッドモデルを用いて複雑な機構系を簡便かつ正確にモデル化でき、該機構系を制御する制御ソフトウエアとの連携シミュレーションにも好適なシミュレーション方法およびプログラムを提供できる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る機構シミュレータの概略構成を示すブロック図
【図２】ハイブリッドモデル記述を説明するための具体例に係るシリンダ装置のある状態を示す図
【図３】ハイブリッドモデル記述を説明するための具体例に係るシリンダ装置の別の状態を示す図
【図４】ハイブリッドモデル記述を説明するための具体例に係るシリンダ装置の状態遷移を示す図
【図５】ハイブリッドモデル記述の内容を示す図
【図６】１つの連続系方程式を構文解析した結果得られる内部データ構造の説明図
【図７】機構制御ソフトウエアと機構シミュレータの連携を示す構成図
【図８】キネマティクスシミュレーション部を含む場合の構成図
【図９】機構シミュレーションの処理手順を示すフローチャート
【図１０】本発明の第２実施形態に係る機構シミュレータの概略構成を示すブロック図
【符号の説明】
１０１…機構シミュレータ（ハイブリッドシミュレーション部）
１０２…ハイブリッドシミュレーション実行部
１０３…連続系シミュレーション部
１０４…ハイブリッドモデル記述
１０５…変数値時間履歴記憶部
１０６…制御信号
１１１…モデル方程式制御情報解析部
１１２…方程式構文解析部
１１３…モデル方程式制御情報記憶部
１１４…方程式データ記憶部
１１５…連続系方程式切り替え部
【図１】
2004178300.tif 000006
【図２】
2004178300.tif 000007
【図３】
2004178300.tif 000008
【図４】
2004178300.tif 000009
【図５】
2004178300.tif 000010
【図６】
2004178300.tif 000011
【図７】
2004178300.tif 000012
【図８】
2004178300.tif 000013
【図９】
2004178300.tif 000014
【図１０】
2004178300.tif 000015