(57)【要約】【課題】  複数のシミュレータを連携させてなる統括シミュレーションシステムにおいて、各シミュレータの実行効率及び機能を確保して各シミュレータを同期させる。【解決手段】  シミュレーション対象を構成する複数の要素をそれぞれ模擬する独立した複数のシミュレータ１、２、３と、複数のシミュレータがアクセス可能に接続された共通データ領域９０を有する連携手段４とを備え、連携手段は、一のシミュレータの要求があったときに他のシミュレータとの間のシミュレーション時刻の管理を行う時間管理手段７０を備え、各シミュレータから要求があったときにのみ、関係するシミュレータ間のシミュレーション時刻の管理を行うようにして、各シミュレータの実行効率及び機能を確保するとともに、各シミュレータを同期させる。【選択図】  図２
2006350549.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション対象を構成する複数の要素をそれぞれ模擬する独立した複数のシミュレータと、前記複数のシミュレータがアクセス可能に接続された共通データ領域を有する連携手段とを備え、該連携手段は、一の前記シミュレータから同期要求があったときに他の前記シミュレータとの間のシミュレーション時刻の管理を行う時間管理手段を備えてなる統合シミュレーションシステム。
【請求項２】
請求項１に記載の統合シミュレーションシステムにおいて、
前記複数のシミュレータは、前記共通データ領域を介して相互にデータを授受することを特徴とする統合シミュレーションシステム。
【請求項３】
請求項１に記載の統合シミュレーションシステムにおいて、
前記各シミュレータは、自己のシミュレーション処理が他のシミュレータのシミュレーション時間と関連する処理の場合、前記時間管理手段を介してシミュレーション時刻の同期をとることを特徴とする統合シミュレーションシステム。
【請求項４】
請求項３に記載の統合シミュレーションシステムにおいて、
前記時間管理手段は、前記共通データ領域に、前記一の前記シミュレータが要求する同期対象の他の前記シミュレータと同期時刻情報とを格納する領域と、当該他のシミュレータが前記同期時刻に達したときに同期完了情報を格納する領域とを有し、
前記一の前記シミュレータは、前記共通データ領域にアクセスして前記同期完了情報を確認した後、前記共通データ領域の当該他のシミュレータの動作データを取得することを特徴とする統合シミュレーションシステム。
【請求項５】
請求項１に記載の統合シミュレーションシステムにおいて、
前記連携手段にアクセス可能に接続されたデータ操作インターフェイスを備え、
該データ操作インターフェイスは、シミュレーション時に少なくとも前記共通データ領域のデータを変更する機能を有することを特徴とする統合シミュレーションシステム。
【請求項６】
シミュレーション対象を構成する複数の要素を模擬する独立した複数のシミュレータと、前記複数のシミュレータがアクセス可能に接続された共有領域を有する連携手段と、前記複数のシミュレータのシミュレーション状況を表示する表示装置を有するユーザインターフェイスとを備え、該ユーザインターフェイスは、前記各シミュレータのシミュレーション状況を単独又は並べて前記表示装置にグラフィカル表示させる表示モード選択手段を有してなる統合シミュレーションシステム。
【請求項７】
請求項６に記載の統合シミュレーションシステムにおいて、
前記複数のシミュレータは、機器に組込まれるソフトウエアを模擬するソフトシミュレータと、前記ソフトウエアによって駆動及び制御される機械装置を模擬するメカシミュレータと、前記ソフトシミュレータと前記メカシミュレータとの間で授受されるデータを変換する電気回路系を模擬するエレキシミュレータとを含むことを特徴とする統合シミュレーションシステム。
【請求項８】
シミュレーション対象を構成する複数の要素を模擬する独立した複数のシミュレータと、前記複数のシミュレータがアクセス可能に接続された共通データ領域を有する連携手段とを備え、前記複数のシミュレータから割り込み要求があったとき、オペレーティングシステムのシグナル機構を用いて割込みをシミュレーションする割込み処理手段を有することを特徴とする統合シミュレーションシステム。
【請求項９】
請求項１乃至５のいずれかに記載の統合シミュレーションシステムにおいて、
前記複数のシミュレータは、機器に組込まれるソフトウエアを模擬するソフトシミュレータと、前記ソフトウエアによって駆動及び制御される機械装置を模擬するメカシミュレータと、前記ソフトシミュレータと前記メカシミュレータとの間で授受されるデータを変換する電気回路系を模擬するエレキシミュレータとを含むことを特徴とする統合シミュレーションシステム。
【請求項１０】
請求項９に記載の統合シミュレーションシステムにおいて、
前記連携手段は、前記ソフトシミュレータと前記メカシミュレータとの間でデータを直接授受可能に形成してなることを特徴とする統合シミュレーションシステム。
【請求項１１】
請求項９に記載の統合シミュレーションシステムにおいて、
前記メカシミュレータと前記エレキシミュレータは、前記連携手段の前記共通データ領域にそれぞれ実機を単独で又は自己のシミュレータとの組合せでアクセス可能に切り替える切替機能を有することを特徴とする統合シミュレーションシステム。
【請求項１２】
請求項９に記載の統合シミュレーションシステムにおいて、
前記メカシミュレータは、仮想モデルシミュレータを備え、該仮想モデルシミュレータは、前記ソフトシミュレータの動作指令に対応させて予め模擬してなる応答データを有し、前記応答データに基づいて前記ソフトシミュレータの動作指令に対応した動作結果を求めて前記共通データ領域に格納することを特徴とする統合シミュレーションシステム。
【請求項１３】
請求項９に記載の統合シミュレーションシステムにおいて、
前記ソフトシミュレータと前記メカシミュレータと前記エレキシミュレータのシミュレーションモデル、シミュレーションモデルの構成要素、シミュレーション条件、及びシミュレーション結果を保存及び管理するデータベースを備えたことを特徴とする統合シミュレーションシステム。
【請求項１４】
請求項９に記載の統合シミュレーションシステムにおいて、
前記データベースのシミュレーション実行に関する情報の検索、参照、編集を行なうユーザインターフェイスを備えたことを特徴とする統合シミュレーションシステム。
【請求項１５】
請求項１４に記載の統合シミュレーションシステムにおいて、
前記ユーザインターフェイスは、シミュレーション実行時に、シミュレーションモデル、シミュレーション条件をデータベースに保存されている内容と比較し、同一又は類似しているシミュレーションモデル及び結果をシミュレーション実行前に表示装置に提示することを特徴とする統合シミュレーションシステム。
【請求項１６】
請求項１４に記載の統合シミュレーションシステムにおいて、
前記連携手段は、前記共通データ領域にそれぞれ実機を単独で又は自己のシミュレータとの組合せでアクセス可能に切り替える切替機能を有し、
前記ユーザインターフェイスは、前記実機を含むシミュレーションと、該シミュレーション結果の組合せにより、シミュレーションの目的、処理時間、及びシミュレーション精度とを管理し、目的、処理時間、精度に応じて適切なシミュレーションモデル化を提示してシミュレーションモデル化精度を向上させる機能を有することを特徴とする統合シミュレーションシステム。
【請求項１７】
請求項１４に記載の統合シミュレーションシステムにおいて、
前記ユーザインターフェイスは、複数のシミュレーション結果について、対応するデータを同一表現で表示装置に表示することを特徴とする統合シミュレーションシステム。
【請求項１８】
請求項１３に記載の統合シミュレーションシステムにおいて、
前記データベースに格納された前記シミュレーションモデル、前記シミュレーション条件及び前記シミュレーション結果を、任意の表示装置に対応したフォーマットのデータで出力する出力手段を備えたことを特徴とする統合シミュレーションシステム。
【請求項１９】
請求項９に記載の統合シミュレーションシステムにおいて、
前記ソフトシミュレータは、前記ソフトウエアのソースプログラムに基づいて、前記エレキと前記メカに対するアクセスポートを抽出し、該アクセスポートに対応する前記共通データ領域のアクセスアドレスを定義した共通データ領域参照用の変数切替え定義ファイルを自動生成する手段を有することを特徴とする統合シミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、統合シミュレーションシステムに係り、例えば、組込みソフトウエアを含む製品の設計及び開発を支援するのに好適なシミュレーションシステムに関する。
【背景技術】
【０００２】
組込みソフトウエア（以下、組込みソフト又は単にソフトという。）により電気電子回路等の電気系（以下、エレキという。）を介して駆動及び制御される機械部品の集合体としての機械系（以下、メカという。）の設計及び開発においては、組込みソフトと、エレキと、メカについて、それぞれ独立に専用ツールを活用した設計が行われている。
【０００３】
しかし、製品は、ソフト、エレキ及びメカが一体で動作するものであるから、これらの１つでも正常に動作しなければ、全体としても正常に動作しないため、ソフト、エレキ及びメカを組み合わせた状態で動作の確認や検証が必要となる。
【０００４】
一般に、組込みソフトを含む製品のソフトのデバッグや検証を行なう場合、ソフトにエレキ及びメカの試作品を結合して行われる。しかし、ソフトのデバッグや検証を、エレキ及びメカの試作品が完成した後に開始するとなると、製品開発の期間が長くなりすぎるとともに、試作品の台数が大量に必要となる。
【０００５】
そこで、エレキ及びメカをシミュレータ化し、ソフトシミュレータによりエレキシミュレータとメカシミュレータを動作させて、デバッグ及び検証を行なう必要が生じてきている。このようなソフト、エレキ及びメカのシミュレータを統合させてシミュレーションを行う具体的な方式としては、次の２つの方式がある。
【０００６】
第一の方法は、ソフト、エレキ及びメカの各シミュレータを連結させてシミュレーションを行う方法である。つまり、ソフトシミュレータは、メカを動かすための動作指示データを出力し、エレキシミュレータは動作指示データをメカのアクチュエータへの入力に変換し、メカシミュレータはアクチュエータ入力に応じたアクチュエータ出力を算出してメカの動作をシミュレートする。また、メカの動作をセンサのシミュレーションモデルでセンサ出力に変換し、そのセンサ出力をエレキシミュレータを経由してソフトシミュレータに返し、ソフトシミュレータは、センサ出力に従ってメカに次の動作指示データを出力したり、必要なデータ処理を行なう処理を順に繰り返す方法である。
【０００７】
第二の方法は、ソフトシミュレータ、エレキシミュレータ及びメカシミュレータを、それぞれ独立に動作させてシミュレーションする方法である。つまり、各々のシミュレータは、自分自身が何を入力として動作し、何を出力するかだけをシミュレートする。例えば、メカシミュレータは、アクチュエータ入力によってのみ動作し、ソフトシミュレータがどのような動作指示データを出したかを把握していない。エレキシミュレータも同様である。また、メカの動作を検出するセンサシミュレータを設けた場合、センサシミュレータは、メカの動作に対してのみ反応する。この第二の方法によれば、エレキシミュレータ及びメカシミュレータは、現実の物理的な現象に即した動作をすることになり、より精確なシミュレーションを期待できる。
【０００８】
ところで、上記のいずれの方法においても、ソフトシミュレータ、エレキシミュレータ及びメカシミュレータのシミュレーション時間に差があることが多い。例えば、ソフトシミュレータはナノ秒のオーダで模擬でき、メカシミュレータはミリ秒のオーダで模擬することから、シミュレーション時間の差に対応する必要がある。特に、シミュレーション精度を上げようとすると、メカシミュレータの応答は、実時間の数百倍の時間を要することもある。
【０００９】
そこで、従来は、ソフトシミュレータ、エレキシミュレータ及びメカシミュレータを連携させる場合、計算に時間のかかる部分を間引くことにより、ソフトシミュレータの実行とメカシミュレータのシミュレーション速度差を吸収する仕組みが提案されている（特許文献１）。
【００１０】
また、ソフトシミュレータとエレキシミュレータの２つを連携させる方法として、非同期で動作するシミュレーション方法が提案されている（特許文献２）。
【００１１】
さらに、ソフトシミュレータ、エレキシミュレータ及びメカシミュレータの統合シミュレータを、実際にどう構築していくかの具体例が提案されている（非特許文献１）。この非特許文献１には、例えば、ソフト、エレキ、メカの各シミュレータを独立に動作させる構成の場合、各シミュレータ間でデータを授受するための仕組みが必要となることから、共通メモリを介してデータを授受する方法が記載されている。
【００１２】
【特許文献１】特開２００３−３０２５１号公報
【特許文献２】特開２００３−２２２９６号公報
【非特許文献１】山崎辰夫、「シミュレータの作成」、デザインウェーブマガジン、ＣＱ出版、２００４年２月
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ところで、シミュレーション対象がソフト、エレキ、メカなどのように、複数の構成要素からなる場合、それらを一つのシミュレータでシミュレーションしようとすると、シミュレータが大規模になるばかりでなく、各構成要素の相互の応答関係を正しく評価できない場合がある。
【００１４】
そこで、複数の構成要素の個々のシミュレータは、一般に、既に開発されていることに鑑み、非特許文献１に記載のように、それらの個々のシミュレータを単独で動作させつつ、連携動作させて統合シミュレーションを構成することが望ましい。これによれば、メカシミュレータやエレキシミュレータが想定外の動作をしたときでも、それに正しく対応できるソフトウエアになっているかどうかを検証できる。また、メカの動作をセンサで検知してソフトウエアに返すセンサシミュレータを設ければ、一層精確なシミュレーションが可能となる。
【００１５】
しかし、ソフトは、自己の処理内容を決定するために、メカやエレキの動作状態をフィードバックする必要がある場合は、独立に動作している各シミュレータの時間軸を同期させる必要がある。例えば、ソフトがメカに出力した動作指令に対するメカの応答を確認して、次の動作指令を出力する場合、メカの応答を一定時間内に獲得する必要がある。一般に、ソフトは、メカやエレキが一定時間内に想定した動作しなかった場合、対象物でエラーが発生したとみなしてエラー処理に移る処理を含んでいることから、各シミュレータ間でシミュレーションの同期を取らなければ、各構成要素の相互の応答関係を正しく評価できないことになる。
【００１６】
この点、非特許文献１は、独立に動作している各シミュレータの同期を図ることについて考慮されていない。例えば、一律にシミュレーション速度の遅いシミュレータに合わせて同期を取ると、各シミュレータの実行効率が低下したり、各シミュレータの機能を低下させるなどの問題が発生する。
【００１７】
このような問題は、ソフト、エレキ及びメカを構成要素とする統合シミュレーションに限らず、例えば、流体を取り扱う構造物の振動シミュレーションなどのように、シミュレーション対象が複数の要素から構成される場合に、それら複数の要素を模擬する複数のシミュレータを連携させて統合シミュレーションを構築する場合に共通の問題である。
【００１８】
本発明は、複数のシミュレータを連携させてなる統括シミュレーションシステムにおいて、各シミュレータの実行効率及び機能を確保して各シミュレータを同期させることを課題とする。
【課題を解決するための手段】
【００１９】
本発明の統合シミュレーションシステムは、上記の課題を解決するため、シミュレーション対象を構成する複数の要素をそれぞれ模擬する独立した複数のシミュレータと、前記複数のシミュレータがアクセス可能に接続された共通データ領域を有する連携手段とを備え、該連携手段は、一の前記シミュレータから同期要求があったときに他の前記シミュレータとの間のシミュレーション時刻の管理を行う時間管理手段を備えたことを特徴とする。
【００２０】
すなわち、各シミュレータから同期要求があったときにのみ、関係するシミュレータ間のシミュレーション時刻の管理を行うように構成することにより、各シミュレータの実行効率及び機能を確保するとともに、各シミュレータを同期させることができる。
【００２１】
本発明の統合シミュレーションシステムは、上記の構成に加えて、以下に列記する手段を適宜組み合わせて構成することができる。
【００２２】
（１）複数のシミュレータは、共通データ領域を介して相互にデータを授受するように構成することができる。その場合、形態によっては、２つのシミュレータ間（例えば、ソフトシミュレータとメカシミュレータ間）のデータ授受を、他のシミュレータ（例えば、エレキシミュレータ）を中継して行うようにすることができる。
【００２３】
（２）各シミュレータは、自己のシミュレーション処理が他のシミュレータのシミュレーション時間と関連する処理の場合、時間管理手段を介してシミュレーション時刻の同期をとるようにする。この場合、前記時間管理手段は、前記共通データ領域に、前記一の前記シミュレータが要求する同期対象の他の前記シミュレータと同期時刻情報とを格納する領域と、当該他のシミュレータが前記同期時刻に達したときに同期完了情報を格納する領域とを有し、前記一の前記シミュレータは、前記共通データ領域にアクセスして前記同期完了情報を確認した後、前記共通データ領域の当該他のシミュレータの動作データを取得するように構成することができる。
【００２４】
（３）複数のシミュレータのシミュレーション状況を表示する表示装置を有するユーザインターフェイスを備え、該ユーザインターフェイスは、前記各シミュレータのシミュレーション状況を単独又は並べて前記表示装置にグラフィカル表示させる表示モード選択手段を有して構成することができる。すなわち、ソフト、エレキ及びメカの各シミュレータのシミュレーション状況を、ユーザが適宜確認できるように構成する。これによれば、ソフト、エレキ及びメカの動作等に問題がある場合、その問題の原因等をユーザが容易に検討することができる。
【００２５】
（４）ソフトに対する割込みをシミュレーションで実現することができる。つまり、ソフトシミュレータ等に割込み処理手段を設け、複数のシミュレータから割り込み要求があったとき、オペレーティングシステムのシグナル機構を用いて割込みをシミュレーションするようにする。これによれば、実際のソフトの動作と同じ動作で、割込みをシミュレーションすることができる。つまり、シミュレーション手順がループ状に構成されている場合、ループ内に割り込みの有無をチェックする処理を組み込むことが可能であるが、このようにソフトのシミュレータに、定期的に割り込みの有無をチェックするような処理を組み込むと、実際のソフトの動作と異なるものになってしまうのを防止できる。
【００２６】
（５）連携手段にアクセス可能にデータ操作インターフェイスを接続して設け、データ操作インターフェイスによってシミュレーション時に少なくとも前記共通データ領域のデータを変更するようにすることができる。これによれば、実機で再現あるいは条件設定が困難な状態、あるいは異常状態を作り出すことが可能になる。
【００２７】
（６）機器に組込まれるソフトウエアを模擬するソフトシミュレータと、前記ソフトウエアによって駆動及び制御される機械装置を模擬するメカシミュレータと、前記ソフトシミュレータと前記メカシミュレータとの間で授受されるデータを変換する電気回路系を模擬するエレキシミュレータとを含むシステムに適用できる。この場合において、ソフトが実際に制御及び動作させる対象は、実際のエレキ及びメカからなるハードウェアであるから、エレキ及びメカのシミュレータモデルによるシミュレーション結果と実機を用いたデバッグ及び検証の結果とを対比して、シミュレーションモデルの精度を改善することが望まれている。これに対応するため、メカシミュレータとエレキシミュレータは、連携手段の共通データ領域にそれぞれ実機を単独で又は自己のシミュレータとの組合せでアクセス可能に切り替える切替機能を有する構成とすることができる。
【００２８】
（７）精度の高いメカシミュレータは、物理モデルシミュレータを用いることが好ましい。しかし、精度を若干犠牲にしても、応答速度の速いメカシミュレータが要請される場合がある。この場合は、メカシミュレータとして仮想モデルシミュレータを設けることができる。この仮想モデルシミュレータは、前記ソフトシミュレータの動作指令に対応させて予め模擬してなる応答データを有し、前記応答データに基づいて前記ソフトシミュレータの動作指令に対応した動作結果を求めて前記共通データ領域に格納する構成とすることができる。これによれば、メカシミュレータの応答速度を向上できるから、統合シミュレーションの実行効率を向上できる。また、物理モデルシミュレータと仮想モデルシミュレータを備えてメカシミュレータを構成し、シミュレーション精度に応じて両者を切替えて用いることができる。
【００２９】
（８）ソフトウエアのソースプログラムに基づいて、エレキとメカに対するアクセスポート（物理ポート）を抽出し、そのアクセスポートに対応する共通データ領域のアクセスアドレスを定義した共通データ領域参照用の変数切替え定義ファイルを自動生成する手段を、ソフトシミュレータに設けることにより、ソフトシミュレータ用のソースプログラムを生成するようにすることができる。
【００３０】
すなわち、共通メモリ領域を介してデータを授受する場合、ソフトのソースプログラムは、実際のエレキ等の物理ポートにデータを入出力するように記述されているから、データの入出力先を共通メモリ領域のアドレスに変更してソフトシミュレータを構成しなければならない。通常、ソースプログラムの参照先の変更作業は、人がプログラムエディタを用いて手作業で行なうことから、プログラムの規模に応じた大掛かりな作業となるが、本発明によれば、ソフトシミュレータ用のソースプログラムの作成作業が簡単になる。
【００３１】
（９）ソフトシミュレータとメカシミュレータとエレキシミュレータのシミュレーションモデル、シミュレーションモデルの構成要素、シミュレーション条件、及びシミュレーション結果を保存及び管理するデータベースを備えた構成とすることができる。これによれば、シミュレーションモデル及びシミュレーション条件を変えて複数のシミュレーションを実行した場合、それらのシミュレーションモデル及び結果の管理が容易に行える。つまり、複数のシミュレーションを実行すると、シミュレーション実行後、時間が経つと、内容がどのようなものであったかが不明確になり、管理が困難であったが、本発明によれば改善できる。
【００３２】
（１０）データベースを備えた場合は、データベースのシミュレーション実行に関する情報の検索、参照、編集を行なうユーザインターフェイスを備えることが好ましい。また、ユーザインターフェイスは、シミュレーション実行時に、シミュレーションモデル、シミュレーション条件をデータベースに保存されている内容と比較し、同一又は類似しているシミュレーションモデル及び結果をシミュレーション実行前に表示装置に提示するように構成できる。
【００３３】
（１１）連携手段は、共通データ領域にそれぞれ実機を単独で又は自己のシミュレータとの組合せでアクセス可能に切り替える切替機能を有し、ユーザインターフェイスは、実機を含むシミュレーションと、そのシミュレーション結果の組合せにより、シミュレーションの目的、処理時間、及びシミュレーション精度とを管理し、目的、処理時間、精度に応じて適切なシミュレーションモデル化を提示してシミュレーションモデル化精度を向上させる機能を有するものとすることができる。さらに、ユーザインターフェイスは、複数のシミュレーション結果について、対応するデータを同一表現で表示装置に表示するようにすることができる。
【００３４】
（１２）データベースに格納されたシミュレーションモデル、シミュレーション条件及びシミュレーション結果を、任意の表示装置に対応したフォーマットのデータで出力する出力手段を備えることができる。
【発明の効果】
【００３５】
本発明によれば、複数のシミュレータを連携させてなる統括シミュレーションシステムにおいて、各シミュレータの実行効率及び機能を確保して各シミュレータを同期させることができる。
【発明を実施するための最良の形態】
【００３６】
［実施形態１］
本発明の一実施形態の統合シミュレーションシステムの基本構成を図１に示す。本実施形態は、図１に示すように、組込みソフトウエアにより電気電子回路等の電気系を介して駆動及び制御される機械部品を有する製品を、独立したソフトシミュレータ１、エレキシミュレータ２及びメカシミュレータ３により、連携してシミュレーションするシステムである。ソフトシミュレータ１、エレキシミュレータ２及びメカシミュレータ３は、シミュレータプラットフォーム（以下、単にプラットフォームと略す。）４に接続されている。プラットフォーム４は、ソフトシミュレータ１、エレキシミュレータ２及びメカシミュレータ３の各シミュレータを統合するための連携手段を構成する。つまり、本実施形態では、プラットフォーム４は、少なくともソフトシミュレータ１とエレキシミュレータ２との間、エレキシミュレータ２とメカシミュレータ３との間のデータ授受を可能にする共通データ領域を構成する共通メモリ領域を有して構成されている。但し、ソフトシミュレータ１とメカシミュレータ３の間で直接データ授受を行なうように構成することができる。また、各シミュレータ間で、直接データ授受を行なうように構成することもできる。各シミュレータには、それぞれ専用のデータ表示手段を含めて構成することができる。
【００３７】
また、プラットフォーム４は、ソフトシミュレータ１から出されるデジタルデータとして出力されるメカ駆動データをアナログに相当するデータに変換してエレキシミュレータ２に転送するように構成されている。また、プラットフォーム４は、エレキシミュレータ２から出力されるモータなどのアクチュエータを駆動する制御信号や、回転速度等を制御するためのパラメータなどのデータを、メカシミュレータ３に対してモータ駆動電流やパルス数などのデータに変換して転送するように構成されている。また、逆に、メカシミュレータ３の動作データを位置検出等のセンサ出力に変換し、そのデータをエレキシミュレータ２に返したり、エレキシミュレータ２から出力されるアナログイメージのデータをデジタルデータに変換するとともに、ソフトシミュレータ１に対して割込みを発生させるなどの処理機能を備えて構成される。
【００３８】
また、プラットフォーム４に備えられる共通データ領域は、本実施形態で採用した共通メモリ領域に限らず、独立に動作している各シミュレータ１〜３から対等にアクセスが可能な手段により形成できる。例えば、
【００３９】
（ａ）ファイルシステム上に用意する１つ以上のデータファイル、及びこれらのファイルにアクセスするインターフェイス手段
【００４０】
（ｂ）メモリ上に割当て可能な共有メモリ領域、もしくはこれと同等の機能を有するデータ領域、及びこれらの領域にアクセスするインターフェイス手段
【００４１】
（ｃ）各シミュレータをクライアントプロセスとし、これらと、プラットフォーム４のデータのみを管理するサーバプロセスより構成されるクライアントサーバ形式のシステム
などによって実現される。（ｃ）の場合のインターフェイス手段は、サーバシステムに内蔵される形式となる。
【００４２】
ソフトシミュレータ１は、組込みソフト８を取り込んでシミュレーションを行う。エレキシミュレータ２は、回路データ９を取り込むことにより、その回路のシミュレーションを行なう。メカシミュレータ３は、メカ設計のＣＡＤデータ１０を取り込んでシミュレーションを行う。
【００４３】
プラットフォーム４には、ユーザインターフェイス１２を含めることができる。ユーザインターフェイス１２は、少なくとも、シミュレーションの状況をグラフィック表示するためのビューワ、シミュレーション実行時のデータやシミュレータのパラメータなどをユーザが操作するためのデータ操作インターフェイスを含ませることができる。また、プラットフォーム４の構成方法としては、図１のように、ユーザインターフェイス１２を別構成とすることもできる。
【００４４】
また、プラットフォーム４には、各シミュレータ１〜３のシミュレーション時刻を管理するための時間管理モジュールを含めることができる。また、プラットフォーム４には、エレキシミュレータ２と実機回路１４を切替える手段と、メカシミュレータ３と実機メカ１５を切替える手段をそれぞれ含めることができる。また、これらの切替え手段は、それぞれのシミュレータ２、３の内部に含めることができる。本実施形態では、実機とシミュレータの切替え手段を、それぞれのシミュレータ内部に含めて構成している。
【００４５】
また、プラットフォーム４には、シミュレーションデータベース１１が接続されている。シミュレーションデータベース１１は、シミュレーションに関するデータを保持・管理するものである。
【００４６】
図２に、プラットフォーム４を中心とした図１の詳細構成図を示す。図２に示すように、プラットフォーム４は、点線で囲って示したように、各モジュールがデータを授受するための共通データ領域９０が設けられている。共通データ領域９０には、ハードウェア制御データ９１、ハードウェア状態データ９２、メカ駆動データ９３、センサ発火フラグ９４、メカ動作データ９５、表示設定パラメータ９６、及び時間データ９７などのデータが含まれている。
【００４７】
共通データ領域９０には、ソフトシミュレータ１、エレキシミュレータ２、メカシミュレータ３に加えて、センサシミュレータ５がアクセス可能に接続されている。ここで、センサシミュレータ５は、メカシミュレータ３の状態を電気的に把握するためのセンサをシミュレーションするモジュールであり、本実施形態では、メカシミュレータ３又はエレキシミュレータ２から独立して構成している。ソフトシミュレータ１にはサブモジュールとして割込み処理部２１が設けられている。エレキシミュレータ２には、ソフトシミュレータ１からのメカ動作指示をメカシミュレータ３に渡すための伝達部３１と、逆にメカシミュレータ３からソフトシミュレータ１にデータを伝達するための伝達部３２が含まれている。
【００４８】
また、共通データ領域９０には、シミュレーションの状況を表示するためのビューワ６０と、シミュレーションの時間を管理する時間管理モジュール７０と、ユーザがシミュレーション時のデータをチェック又は変更するためのデータ操作インターフェイス（ＩＦ）８０がアクセス可能に接続されている。
【００４９】
このように構成される共通データ領域９０を備えた統合シミュレーションの基本的な動作を説明する。ソフトシミュレータ１は、メカシミュレータ３に与える動作指示データをハードウェア制御データ９１に書き込む。エレキシミュレータ２はそのデータを読み取り、メカシミュレータ３に実際に与える電圧や電流のデータを、メカ駆動データ９３に書き込む。メカシミュレータ３はメカ駆動データ９３に書き込まれたデータに従って動作シミュレーションを行ない、その動作結果のデータをメカ動作データ９５に書き込む。センサシミュレータ５は、メカ動作データ９５のメカ動作データを読み取り、アクティブになったときにアクティブ情報をセンサ発火フラグ９４に書き込む。エレキシミュレータ２は、メカ動作データ９５とセンサ発火フラグ９４とを読み取り、ハードウェア状態データ９２に書き込む。ソフトシミュレータ１は、ハードウェア状態データ９２を読み取り、その状態に対してどのような処理を行なうか、次にどのような動作指示をメカシミュレータ３に対して与えるか、といった処理を行なう。
【００５０】
ここで、ソフトシミュレータ１、エレキシミュレータ２、メカシミュレータ３及びセンサシミュレータ５は、それぞれ自分自身が読込んだデータに対してのみ、動作シミュレーションを行なう。したがって、他の要素であるシミュレータがどのような状態にあるか、どのような処理をしようとしているか、といったことは把握していない。このように構成することにより、メカシミュレータ３の動きはエレキシミュレータ２から与えられるアクチュエータのデータのみによって決定され、ソフトシミュレータ１やセンサシミュレータ５の状態から完全に切り離すことができる。また、センサシミュレータ５は、メカシミュレータ３の状態のみをチェックしてアクティブになるべきかどうかを判定する。そのため、ソフトシミュレータ１やエレキシミュレータ２の状態から独立して、センサとしてのシミュレーションを精確に行なえる。
【００５１】
一方、ビューワ６０は、ユーザインターフェイス１２に組込まれるものであり、ハードウェア状態データ９２、メカ動作データ９５を読込み、メカの動作状態をグラフィック画面に表示するようになっている。メカ動作データ９５はメカの動き（位置データ）のみである。ハードウェア状態データ９２は、メカ動作データ９５以外のもの、例えば、電気回路上に実装されているインジケータ、表示デバイスなどである。このハードウェア状態データ９２とメカ動作データ９５により、ユーザが目にすることのできる実物イメージを表示する。
【００５２】
データ操作ＩＦ８０は、共通データ領域９０内のデータの表示、書き換えを行なうためのユーザインターフェイスである。シミュレーション時には、ソフト、ハードが異常状態に適切に対応可能かどうかをチェックすることがある。このような場合に対応するため、データ操作ＩＦ８０でデータを書き換え、異常状態を作り出す。ビューワ６０及びデータ操作ＩＦ８０により、シミュレーションの実行状況をグラフィカルに、かつ、数値による詳細把握が可能となる。また、データ書き換えによる異常状態のチェックが可能となる。
【００５３】
上述したように、各シミュレータ間のデータ授受をプラットフォーム４に設けた共通データ領域９０を介して行なうようにしたことから、本実施形態によれば、各シミュレータのデータアクセス部分をプラットフォーム４にのみ記述するだけでよく、シミュレータの定義が容易になる。その結果、統合シミュレーションに必要な機能、例えば、プラットフォーム４のデータをユーザが随時変更可能なデータ操作ＩＦ８０、各シミュレータのシミュレーション時間を管理する時間管理モジュール７０、メカの動作をグラフィック表示するビューワ６０、などの機能を容易に追加することが可能である。
【００５４】
図３に、ソフトシミュレータ１、エレキシミュレータ２、メカシミュレータ３、センサシミュレータ５の基本的な内部動作のフローチャートを示す。各シミュレータは、起動されると（１０１）、ワーク変数のクリア、デフォルト値の設定などの初期化を行なう（１０２）。次に、シミュレーションを終了するかどうかの判定を行なう（１０３）。この判定は、例えば、メカのメインスイッチに相当するデータをチェックし、これがオフ状態であればメカが停止したと見做して、シミュレーションを終了する（１０７）。この判定に用いるデータとしては、メカや電気回路に供給される電源に相当するデータ、シミュレーションの実行用に別途定義したデータなどでもよい。シミュレーション終了判定１０３で、実行すると判定された場合は、入力すべきデータを読込み（１０４）、そのデータに基づいて動作シミュレーションを行ない（１０５）、得られた結果を出力する（１０６）。前述したように、これらのデータ入力、データ出力は共通データ領域９０に対して行なわれる。このような、各シミュレータの構成、及び基本動作により、物理現象に即した形で、ソフトシミュレータ、エレキシミュレータ、メカシミュレータの統合シミュレーションが可能となる。
【００５５】
（時間管理モジュール７０）
ここで、時間管理モジュール７０により行う各シミュレータの同期処理について説明する。各シミュレータは、独立に動作するため、組込みソフト８にメカの応答待ちなどの時間に関する処理が組み込まれている場合には、これを正しく処理できない。ところで、シミュレーション時に、コンピュータの内部時刻を呼び出すシステムコールなどを用いれば、時間待ちそのものは実現できる。しかし、統合シミュレーションで最も重要なことは、メカが制限時間以内に所望の動作をするかどうかであり、ソフトが実時間で制限時間待つことではない。そこで、メカシミュレータ３の動作シミュレーションの時間と、ソフトシミュレータ１のシミュレーションの時間を同期させる必要があることがある。
【００５６】
時間管理モジュール７０は、図４と図５を用いて説明するように、各シミュレータの基本動作処理を拡張することで、物理現象に即したシミュレーションを維持したまま同期処理を実現している。図４は、同期処理のために共通データ領域９０に用意したデータの構成例であり、図示例は、ソフトシミュレータ１がメカシミュレータ３に対して同期を要求する場合を示している。ソフトシミュレータ１は、同期処理が必要になった時点で、同期相手であるメカシミュレータ３に同期要求を連絡する。この同期要求は、メカシミュレータ３が参照するデータ領域に同期要求フラグ１５２を立てることにより行う。これと同時に、同期要求元が自分であることを示すために、同期要求プロセス１５４にソフトシミュレータ１の識別コードを書き込む。この識別コードは、各シミュレータが識別できる形式のものであればどのようなデータでもよく、例えば、統合シミュレータのオペレーティングシステムが管理しているプロセス番号を利用することができる。
【００５７】
また、同期をとりたい時点を、同期時刻１５６に設定する。メカシミュレータ３は、自分自身のシミュレーションを実行し、実行ループの終了ごとに現在の時刻を現時刻１５５に書き込むとともに、同期時刻１５６との比較を行なう。そして、メカシミュレータ３自身の現時刻１５５が同期時刻１５６に達した時点で、同期完了フラグ１５３を立てる。ソフトシミュレータ１は、同期完了フラグ１５３が立ったことを確認した時点で、メカシミュレータ３の動作データ、センサシミュレータ５のデータなどを取得し、メカシミュレータ３が制限時間内に所望の動作をしたかどうかの判定処理を行なう。
【００５８】
図５に、上述した同期処理手順のフローチャートを示す。同期処理は、図３に示した動作シミュレーション１０５を終了して、その結果を出力（１０６）した実行ループの終了ごとに行うようになっている。まず、他のシミュレータからの同期要求があるかどうかを確認する（１０８）。同期要求がある場合は、その同期要求元のシミュレータのシミュレータ時刻と自己のシミュレータのシミュレータ時刻とを比較して、同期したかどうかをチェックする（１０９）。このチェックで同期したと判定した場合、同期完了フラグ１５３をセットし（１１０）、元のループに戻る。同期が完了していないと判定した場合は、自己のシミュレータが要求元のシミュレータに対して遅れていることになり、さらに動作シミュレーションを継続すべく、元のループにそのまま戻る。同期要求有無の確認１０８において、同期要求がなければ、そのままシミュレーションを継続することになる。
【００５９】
上述したように、各シミュレータは、自己のシミュレーション処理が他のシミュレータのシミュレーション時間と関連する処理の場合、時間管理モジュール７０を介してシミュレーション時刻の同期をとるようにしている。つまり、共通データ領域９０は、一のシミュレータが要求する同期対象の他のシミュレータと同期時刻情報とを格納する領域と、この他のシミュレータが同期時刻に達したときに同期完了情報を格納する領域とを有し、一のシミュレータは、共通データ領域９０にアクセスして同期完了情報を確認した後、共通データ領域の他のシミュレータの動作データを取得するように構成している。
【００６０】
このように、本実施形態は、各シミュレータが独立に動作し、各シミュレータは共通データ領域を有する連携手段であるプラットフォーム４を介してデータ授受を行なうとともに、同期処理に関するデータ授受も同様にプラットフォーム４を介して行なうようにしている。つまり、プラットフォーム４は、一のシミュレータから同期要求があったときに他のシミュレータとの間のシミュレーション時刻の管理を行う時間管理手段を備えていることから、統合シミュレータの基本的なシミュレーション形式を維持したまま、必要に応じて同期処理を行なうシミュレーションが可能となる。また、各シミュレータから要求があったときにのみ、関係するシミュレータ間のシミュレーション時刻の管理を行うことにより、各シミュレータの実行効率及び機能を確保するとともに、各シミュレータを同期させることができる。
【００６１】
（割込みシミュレーション２１）
ここで、組込みソフト８の割込み処理をシミュレーションする本実施形態の割込みのシミュレーション手段について説明する。図６は、本実施形態の割込みのシミュレーションを、コンピュータのメモリマップを用いて行う説明図である。ソフトシミュレータ１、エレキシミュレータ２、メカシミュレータ３などのシミュレータのモジュール２１０は、オペレーティングシステムによってメモリ２００上の適切な位置に配置される。モジュール内では、シグナルを受信した場合の処理を行なう関数名を定義しておく（２１１）。実際の処理を行なう部分はサブモジュールとしてメモリ上の別の位置に配置される（２２０）。本実施形態では、このサブモジュール内に割り込みに関するほとんどすべての設定、処理手順を定義しておく。ここには、割込み番号参照処理２３０、割込み番号１の処理２４１、割込み番号２の処理２４２、割込み番号３の処理２４３のように、各割込み番号に応じた処理が定義される。ここに含まれないものは、エレキシミュレータ２がソフトシミュレータ１に対して割り込みを発生させるときに、どの割込み番号で割込みをかけるかという情報のみである。これは、メカシミュレータ３やセンサシミュレータ５の状態により、使用する割込み番号が変わるためであり、割り込みをかける側が決定するためである。
【００６２】
モジュール２１０は、実行中にシグナルを受け付けると、シグナル関数定義で定義された場所へ処理を移す。このシグナルは、コンピュータのオペレーションシステムで用いられるシグナルであり、例えば、エレキシミュレータ２がセンサシミュレータ５の発火フラグに基づいて、ソフトシミュレータ１に割り込みをかけるとき、エレキシミュレータ２はシグナルに割込み番号を付してモジュール２１０に発信する。モジュール２１０は、シグナル関数定義で定義された場所へシグナルを移した後、割込み番号を調べる（２３０）。次いで、その番号に応じた処理２４１、２４２、２４３などを行なった後、もとの場所、すなわちシグナルを受信したときの位置へ戻り、その後の処理を続行する。
【００６３】
この割込み処理動作は、実際の組込みシステムにおける割込み処理の手順とほぼ同等である。異なる点は、実際の組込みシステムにおける割込み処理では、割込み番号によって移る先の場所が異なるという点のみである。本実施形態では、この飛び先の処理をソフトウェアで実現し、割込み発生のタイミング取得のみにシグナルを用いることにより、割込みのシミュレーションを実際の組込みシステムと同様の動作で行なえるようにしていることを特徴とする。
【００６４】
図７に、割込みシミュレーション時の設定データの例を示す。同図の割込みシミュレーション設定データ２５０には、割込み番号２５１、優先度レベル２５２、割込みマスク２５３、使用シグナル２５４、割込み処理関数２５５が各割込み番号に対してセットで用意される。また、マスク設定方式２５６、マスクレベル２５７がある。優先度レベル２５２は、各割込み番号の割込み優先度を定義するものである。割込みマスク２５３は、割込みを受け付けたときの割込み処理を行なうか否かを簡単に判定するためのものであり、マスクされている場合は受け付けた割込みに対する割込み処理を行なわない。使用シグナル２５４は割込みシミュレーションを行なうときに使用するシグナルを定義するものである。オペレーティングシステムの種類にもよるが、ユーザがアプリケーションでシグナルを利用できる場合には、通常、SIGUSR1、SIGUSR2の２つをユーザ定義として利用することができる。割込み処理関数２５５は、各割込み番号に対する割込み処理を定義した関数の関数名である。マスク設定方式２５６は、割込みマスクの設定の方法を決めるためのものであり、割込み番号順、優先度レベル順、などで設定する。優先度レベルが設定されている場合、マスクするか否かは、マスクレベル２５７に設定された値と、各割り込みの優先度の比較により、マスクレベル２５７より、優先度が低いものはマスク設定されることになる。マスク設定方式２５６が割込み番号順の場合も同様である。
【００６５】
このように、本実施形態のソフトに対する割込みをシミュレーション２１がソフトシミュレータ１に設けられ、複数のシミュレータから割り込み要求があったとき、オペレーティングシステムのシグナル機構を用いて割込みをシミュレーションするようにしているから、実際のソフトの動作と同じ動作で、割込みをシミュレーションすることができる。つまり、シミュレーション手順がループ状に構成されている場合、ループ内に割り込みの有無をチェックする処理を組み込むことが可能であるが、このようにソフトのシミュレータに、定期的に割り込みの有無をチェックするような処理を組み込むと、実際のソフトの動作と異なるものになってしまうのを防止できる。
【００６６】
（ユーザインターフェイス１２）
ここで、ユーザインターフェイス１２の表示機能について説明する。図８に、シミュレーション時の実行状態の例を示す。コンピュータの実行プロセスを表示させると、その時点のプロセスが表示されるが、図８はその一部を示したものである。共通データ領域９０を管理するプロセス（図８の例ではプログラム名：base）３０１、エレキシミュレータ２のプロセス３０２（同circuit）、メカシミュレータ３のプロセス３０３（同mech）、センサシミュレータ５のプロセス３０４（同sensor）、ソフトシミュレータ１のプロセス３０５（同soft）、表示用プロセス３０６（同view）、時間管理用プロセス３０７（同timemgr）がそれぞれ独立したプロセスとして動作していることが示されている。各シミュレータは、処理内容が演算主体であるが、表示用プロセスはシミュレーションの状況をビューワ６０にグラフィックで表示し、メカがどのように動作するかをユーザに提示する。このとき、ＣＡＤデータを用いてメカの形状を表現し、専用のグラフィク表示ウィンドウ３０８にその動作状況を表示する。ユーザはこの表示を見て、意図したとおりの動作をしているかを確認することができる。
【００６７】
図９に、各シミュレータの実行状況を統合画面に表示した例を説明する。統合表示画面７００は，少なくとも操作メニューを選択するメニューバー７０１、ソフトウェアを表示するソフト表示タイトル７１１、ソフトウェアのソースコードの内容を表示するソースコード表示領域７１２、エレキとメカの各シミュレータのデータを表示するエレキデータ表示領域７２２、メカデータ表示領域７２３、及びデータ領域用のデータ表示領域タイトル７２１より構成される。ソースコード表示領域７１２には、ソフトウェアのソースコードが表示され、実行中の部分をカレント行ポインタ７１５で指し示す。実行中の部分を表示する方法としてはソースコードの文字の表示色を変更する。あるいは、リバース表示にするなど、他の部分と区別がつけれる方法であればポインタ表示法に限らなくともよい。エレキデータ表示領域７２２に表示されるデータとメカデータ表示領域７２３に表示されるデータは、時間スケールを同じくして並べて表示した状態で、時間の位置が同一になるように表示が制御される。これにより、エレキシミュレータ２の実行状況と、メカシミュレータ３の実行状況を対比させながら把握することが可能となる。
【００６８】
さらに、ソースコード表示領域７１２の内部にあるカレント行ポインタ７１２が示す行の実行時間に対応するものを、エレキデータ表示領域とメカデータ表示領域７２３では、時間インジケータ７２５で表示する。また、その時間を数値で表示する。図９では，データ表示領域タイトルの一部に、時間データ７２４を表示した例を示している。カレント行ポインタ７１５と時間インジケータ７２５は、統合シミュレーションの進行に合わせて随時移動していく。また、これに合わせて時間データ７２４の表示内容も変化していく。このように、ソフトシミュレータが実行するソースコード、エレキシミュレータ、メカシミュレータが同一の画面に同一スケールで表示される。
【００６９】
これにより、本実施形態によれば、統合シミュレーションの実行状態、特にシミュレータ間の実行タイミングの状態を確認したい場合などにおいて、統合表示画面７００を用いることにより、その状態を容易に把握することが可能となる。また、特定のシミュレータに限定して実行状態を確認したい場合には、従来の一般的なシミュレーションの結果表示と同様に、個別の表示画面を用いることも可能である。
【００７０】
（データ操作インターフェイス８０）
図１０に、データ操作インターフェイス８０の画面構成例を示す。ここでは、統合シミュレーションに対するユーザの操作環境を表示する。データ操作インターフェイス画面４００には、シミュレーションコントロール部４１０、モデル表示制御部４２０、及びデータ表示・変更操作部４３０がある。シミュレーションコントロール部には、シミュレーションの実行を制御する制御パネル４１１、各シミュレータのシミュレーション時刻を表示するシミュレータ時刻表示部４１８、現在時刻表示部４１９がある。制御パネル４１１には、シミュレーションの実行を開始・再開するための実行ボタン４１５、一時停止・再開するための一時停止ボタン４１６、停止するための停止ボタン４１４、早送りや逆戻しを行なう早送りボタン４１７、逆戻しボタン４１３、およびシミュレーション時刻をリセットするリセットボタン４１２が用意されている。
【００７１】
モデル表示部４２０は、グラフィク表示ウィンドウ３０８に表示するモデルの表示条件を設定するためのものであり、例えば、シェーディング表示、ワイヤーフレーム表示、メッシュ表示から択一するための選択ボタン４２１が用意されている。
【００７２】
データ表示部４３０は、共通データ領域９０内のデータを表示、変更する操作をおこなうためのものである。データを表示するには、ハードウェア制御データ９１、メカ駆動データ９３、メカ動作データ９５などのデータグループと、その中にあるデータをデータ名で指定する必要がある。ここでは、データグループ指定フィールド４３１、およびデータ名指定フィールド４３２にそれぞれデータグループ名、データ名を設定する例を示している。また、これらはシミュレータ構成時に明確になっているものであるため、プルダウンメニューボタン４３３を用いてリスト表示から選択する方法もある。ここで指定されたデータはデータ表示領域４３４にその名称と値が表示される。データグループ、データ名選択時に、「ａｌｌ」などのように複数選択を指定した場合、表示される文字数がデータ表示領域に収まりきらないことがある。このような場合には、スクロールバー４３６を用いて、所望のデータを閲覧する。データ変更領域４３５は、共通データ領域上のデータの値を直接変更する操作を行なうためのものであり、データ表示の場合と同様に、変更したいデータを指定するデータ名指定フィールド４３２、プルダウンメニューボタン４３３が用意されている。さらに、選択したデータの内容を表示する現在値表示フィールド４３７、変更する値を設定する変更知設定フィールド４３８が設けられている。ここで設定した変更値は、ＯＫボタン４３９を押した時点で、その変更が有効となる。設定を取り消す場合は、ＣＡＮＣＥＬボタン４４０を押せばよい。
【００７３】
本実施形態では、各シミュレータが独立に動作可能で、シミュレータ間のデータアクセスを共通データ領域９０を経由して行なう方法を採っている。そのため、他の機能を容易に追加することが可能であり、さらに、前述のイメージでデータを操作することも可能となっている。したがって、本実施形態のデータ操作インターフェイス８０を用いて、統合シミュレーション実行時に、実機では再現あるいは条件設定が困難な状態や異常状態を作り出すことも可能であり、このような場合に対してもソフトウェアが正しく対応できるかどうかを検証するようなシミュレーションが行なえるようになる。
【００７４】
また、ソフトが実際に制御及び動作させる対象は、実際のエレキ及びメカからなるハードウェアであるから、エレキ及びメカのシミュレータモデルによるシミュレーション結果と実機を用いたデバッグ及び検証の結果とを対比して、シミュレーションモデルの精度を改善することができる。
（変数切替え定義ファイルの自動生成手段）
図１１を参照して、ソフトウエア８のソースプログラムに基づいて、エレキとメカに対するアクセスポート（物理ポート）を抽出し、そのアクセスポートに対応する共通データ領域９０のアクセスアドレスを定義した変数切替え定義ファイルを自動生成する手段について説明する。
【００７５】
共通データ領域９０を介してデータを授受する場合、ソフトウエア８のソースプログラムは、実際のエレキ等の物理ポートにデータを入出力するように記述されているから、データの入出力先を共通データ領域９０のアドレスに変更してソフトシミュレータ１を構成しなければならない。ここでは、組込みソフト８がC言語で記述されている場合を想定して説明を行なう。C言語のプログラムでは、通信ポート、プリンタポートなどの外部デバイスに対する入出力は、ディスク上のファイルへのアクセスと同様の形式で行なわれる。すなわち、まずデバイスをオープンし、アクセスするための識別子を得る。対象によって種類が異なることがあるが、通常、ファイルハンドラ、ファイルポインタ、ファイルディスクリプタと呼ばれるものが使われる。次に、読込み用、書き込み用の関数やシステムコールに、識別子とデータを引数で与えてデータの入出力を行なう。処理が終わった時点で、オープンしたデバイスを閉じる。メモリ上に割当てられた変数に対しては直接変数名を記述するだけでアクセスできるが、外部デバイスに対しては前記処理が必須となる。
【００７６】
本実施形態では、外部デバイスに対する前記必須の処理を検索することにより、外部デバイスに対してアクセスしている場所を見つけ、その処理を共通データ領域に割当てたデータへのアドレスに置き換えることにより、組込みソフト８のプログラムをシミュレータ用のものに変換する処理を行なう。まず、外部デバイスに対して実際にアクセスする実Ｉ／Ｏ（２６１）を検索するために、検索のキーとなるデータ２６０を用意する。例えば、入出力用の関数としてｏｐｅｎ（）、ｆｏｐｅｎ（）、ｒｅａｄ（）、ｗｒｉｔｅ（）、ｆｐｒｉｎｔｆ（）、ｃｌｏｓｅ（）、ｆｃｌｏｓｅ（）などがあり、デバイス名には、／ｄｅｖ／ｃｏｍ１、／ｄｅｖ／ｌｐｔ１、／ｄｅｖ／ｓｄａ１などがある。処理系によっては、ＣｒｅａｔｅＦｉｌｅ（）、ＣｒｅａｔｅＤＣ（）などの関数があり、デバイス名としてＣＯＭ１、ＬＰＴ１などが使用されていることもある。他に、ＰＣＩスロットに接続する形式の機器では、専用のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍｍｉｎｇ Ｉｎｔｅｒｆａｃｅ）が用意されることがあり、場合によってはこれらの関数名も利用可能である。これらの関数名やデバイス名をはじめとする外部デバイスをアクセスするため文字列をキーとし、ソースプログラムを検索する。C言語では、インクルードファイルや、コンパイル時のオプションでデバイス名などを定義することも可能であるため、検索はプログラム、インクルードファイル、コンパイル用コマンドファイルまでを対象とする。
【００７７】
検索により外部デバイスのアクセス場所を見つけた場合、共通データ領域へアクセス変数を確保し、識別子との対応付けを行なう。この対応付けを共通データ領域アクセスインターフェイス（Ｉ／Ｆ）２６２として別ファイルに生成し、回路シミュレータやメカシミュレータのソースプログラムに付け加える。同時に、共通データ領域へアクセスすることにより、元のプログラムでは不要となるデバイスのオープン、クローズ処理、アクセス部分の修正を行なう。これにより、エレキ、メカの各シミュレータ２、３も共通データ領域９０を同じ形式で参照できるようになり、相互のデータ授受が可能なモジュールが生成できることになる。
【００７８】
ここで、図１２を参照して、対応付け及びソースプログラムの修正方法の例を説明する。元のプログラム２７０において、デバイスのオープン２７１、データの出力２７２、デバイスのクローズ２７３が記述されているとする。デバイス名により、デバイスのオープン文２７１が検索でき、ファイルディスクリプタが「ｆｄ」であることがわかる。このｆｄで検索すると、データを出力している部分２７２がわかる。次に、共通データ領域にｆｄの代わりに利用するデータを確保し、その置換えを定義する（２８１）。これをファイル２８０に出力しておく。元のソースプログラムに対して、前記置換え用のファイル２８０を読込むよう定義をし（２９１）、オープン文２７１を実行しないよう、プリプロセッサに指示する行２９２を挿入する。データを出力している行２７２については、これを実行しないようにし（２９２）、代わりに共通データ領域９０にアクセスする形式の行２９３を挿入する。ここでは、アクセス先のデータ名としてファイルディスクリプタと同じ文字列「ｆｄ」が使われるが、これは前記の置換えを定義したファイル２８０により、コンパイル時に共通データ領域のデータ名に変更される。デバイスのクローズ文２７３についても、オープン文２７１と同様、実行しないようにプリプロセッサ指示文２９２が挿入される。以上の手続きにより、デバイスへのアクセスを共通データ領域９０上へのアクセスに置き換えることが可能となる。
【００７９】
次に、図１３を用いて、ソースプログラム中に置き換える文字列と同じ文字列が別のデータ名や関数名に含まれている場合の処理について説明する。置換え定義ファイル２８０で文字列「ｆｄ」の置換えを定義すると、ソースプログラム中のすべての「ｆｄ」という文字列が置き換えられる。しかし、この文字列を含む別の処理２７４が記述されていると、これも置き換えられて異なる処理、もしくは誤ったプログラムが生成されてしまうおそれがある。このような場合に対応するため、まずデバイスアクセスに関する部分の文字列「ｆｄ」を一度別のものに置き換える。図１３では「ｆｄ」を前後にアンダースコアを付加した「＿ｆｄ＿」にした例を示している。ここで、もし新たに定義した「＿ｆｄ＿」が別に使われているような場合は、さらに前後にアンダースコアを付加するなど、重複がなくなるまで繰り返す。これにより、デバイスアクセスで用いられる文字列「＿ｆｄ＿」は文字列としてもユニークなものとなり、これを用いて置換えファイル２８０を生成する。以降は、ソースプログラムに対して前述と同様の修正を行なう。文字列「ｆｄ」を含む別の処理２７４はそのまま残し、デバイスに関する行はオリジナルがコメント扱いとなり（２９４、２９６）、置き換えられた行が追加される（２９５、２９７）。ただし、これらの追加された行は、プリプロセッサ指示文２９２により、実際には実行されない。この追加は、ソースプログラムの修正過程をわかりやすくするためのものである。最後に、新しい名称「＿ｆｄ＿」によるデータアクセスの行２９８が追加される。なお、クローズ文の処理は図１２の場合と同様である。
【００８０】
ここで生成された置換えファイル２８０を用い、これを他のシミュレータ用のモジュールに付加し、共通データ領域の参照時に、置換えファイル２８０に記述されているデータ名を用いることにより、エレキシミュレータ２やメカシミュレータ３も同じデータを参照することが可能となる。
【００８１】
以上説明したように、組込みソフト８のソースプログラムを分析し、物理デバイスへのアクセス場所を検索することにより、物理デバイスへのアクセスを共通データ領域へのアクセスに変更するプログラム変更処理を自動的に行うことができ、ソフトシミュレータ用のソースプログラムを自動で生成することができる。通常、ソースプログラムの参照先の変更作業は、人がプログラムエディタを用いて手作業で行なうことから、プログラムの規模に応じた大掛かりな作業となるが、本実施形態によれば、ソフトシミュレータ用のソースプログラムの作成作業が簡単になる。
【００８２】
（仮想モデルシミュレータ）
図１４と図１５を用いて、メカシミュレータ３を仮想モデルを用いたシミュレータによって構成する実施形態について説明する。ハードウエアであるメカをシミュレーションする場合、メカの動作をソフトウエアで模擬するため、一般に、メカの動作よりも応答時間が長くなる。例えば、メカの動作を模擬する場合、メカの構造及び特性から運動方程式を生成し、その運動方程式を解いてメカの動作を算出する。その運動方程式を精確に計算する時間がかかるため、応答時間が長くなる。また、メカの変形まで考慮した動作解析を行なう場合は、有限要素法による解析計算との組合せになるため、計算時間がより長くなる。
【００８３】
ところで、統合シミュレーションシステムの狙いを、ソフトウエアの開発、デバッグ、検証を第一の目的とするものとすれば、メカシミュレータやエレキシミュレータのシミュレーションに要する時間はできるだけ短縮する必要がある。このような目的を達成するため、メカの動作をソフトウエアで模擬する一般の物理モデルを用いたメカシミュレータに代えて、高速にメカの動作を模擬できる方式が要請される。
【００８４】
そこで、本実施形態では、メカの仮想モデルを構築して、高速に応答を返すようにしている。ここで、仮想モデルの一例として、物理モデルのシミュレーション結果を用いて仮想モデルを生成する手段を、図１４を参照して説明する。まず、物理シミュレーションモデル１２０を作成し、メカであれば機構解析ソフトなどの物理モデルシミュレータ１２１で動作シミュレーションを行って、動作データ１２２を取得する。通常、これらの処理は、ハードウェアの詳細設計の中で行なわれる。したがって、本実施形態の仮想モデル生成のために新たに発生するものではない。
【００８５】
仮想モデル生成手段１２３は、少なくとも入力設定部抽出処理１２４、データ種抽出処理１２５、応答データ抽出処理１２６を備えている。そして、物理シミュレーションモデル１２０と動作データ１２２を読込み、物理シミュレーションモデル１２０からハードウェアへの入力設定データ、動作部に相当するデータの種類を抽出する。ハードウェアへの入力設定データを仮想モデル用のフォーマットに変換し、入力データファイル１３２を生成する。また、抽出した動作部に相当するデータの種類を元に、動作データ１２２からそのデータ種の応答データを抽出し、データ種毎に応答データファイル１３４、１３６、１３８、・・・を生成する。これらの応答データファイルと、そのファイル名１３１、１３３、１３５、１３７、・・・をまとめて、仮想モデル１３０として設定する。
【００８６】
ここで、入力設定部、データ種、応答データは、解析ソフトの種類によって記述される形式が異なるため、使用する解析ソフトに応じて、どこからそのデータを抽出するかを予め定義しておく。例えば、それぞれの抽出手段の中に直接記述してもよく、また図１４に示すように、抽出場所定義データ１２７として抽出手段と分けて定義してもよい。これにより、物理モデルシミュレーションのデータから仮想モデルを自動的に生成することが可能となる。
【００８７】
つまり、仮想モデルは、物理モデルのシミュレーションによって、ソフトシミュレータ１の動作指令に対応させて予め模擬してなる応答データの集合である。そして、ソフトシミュレータ１からの動作指令に対応した動作結果を、応答データに基づいて求めて共通データ領域９０に格納することにより、シミュレーション時間を大幅に短縮することができる。これにより、メカシミュレータ３の応答速度を向上できるから、統合シミュレーションの実行効率を向上できる。
【００８８】
このように構成された仮想モデルシミュレータと物理モデルシミュレータとをメカシミュレータ３に組み込み、シミュレーションの狙いに応じて切り替えてシミュレーションを行わせる一例を図１５に示す。つまり、シミュレーションの目的又は要求する精度に応じて、物理モデルと仮想モデルとを切替えるための仕組みである。仮想モデルの例としては、図１４で説明した仮想モデル生成手段により生成されたものなどがある。
【００８９】
図１５において、ソフトシミュレータ１はメカを動作させるためのデータをエレキシミュレータ２に出力し、エレキシミュレータ２はメカを動作させるためのデータに変換してメカシミュレータ３に出力する。メカシミュレータ３には、モデル切替え部３３、物理モデルシミュレータ３４及び仮想モデルシミュレータ３５が組込まれている。モデル切替え部３３は、モデル設定情報３６からの指令により、精確な応答データを必要とする場合には物理モデルシミュレータ３４を、高速な応答を必要とする場合には仮想モデルシミュレータ３５を呼び出すようになっている。
【００９０】
（シミュレーションデータベース１１）
図１６に示すように、シミュレーションデータベース１１は、データ管理部１６０とデータ部１７０により構成される。データ管理部１６０は、少なくとも登録・削除手段１６１を備える。図１６の例では、シミュレーションを効率よく行なうために、類似データ検索手段１６３、類似データリストアップ手段１６４、さらに、新規シミュレーションに関するデータを自動的に一時登録する仮登録・解除手段１６２を備えている。
【００９１】
仮登録・解除手段１６２は、仮登録をシミュレーション実行時に自動的に行なう。ユーザは、その仮登録のデータが不要であると判断したときは、解除指定することにより仮登録データをデータベースから除くことができる。但し、シミュレーションに用いた種々のファイルは一般のデータファイルとして残しておく。
【００９２】
登録・削除手段１６１は、仮登録中のデータを本登録する処理、又は、本登録されたデータをデータベースから除く処理を行う。通常、登録・仮登録時には、ファイルのコピーをデータ部１７０内に作成する。しかし、リンク設定サイズ１６５に設定されたサイズより大きいサイズのファイルについては、リンク情報のみを登録する。これにより、大容量のファイルのコピーによってストレージ容量が圧迫される状態を防ぐとともに、コピー処理の時間を節約する。リンク設定サイズ１６５が非正値の場合は、全てのファイルについて、コピーによりデータ部に保存する。
【００９３】
類似データ検索手段１６３は、新規シミュレーション実行時に、モデルのデータやシミュレーション条件などが定義されたファイルの内容と、データベースに保存されている実施済みのデータとを比較し、類似したシミュレーションデータがあれば、それをピックアップする。類似度は、モデルデータやシミュレーション条件のファイルの内容、すなわち、データそのものの比較を行い、行数、データラベル、値、などで数値化する。例えば、２つのファイルの同一行番号のデータが完全に一致した場合には０、一箇所データが異なる場合には１、というように一致度を数値化し、その累計を算出する。
【００９４】
類似データリストアップ手段１６４は、類似データ検索手段１６３が算出した類似度を、例えば、小さい順に並べ、そのリストをユーザに提示する。ユーザはこの時点で、実行したシミュレーションが過去にも行なったものであれば直ちに中断することができる。又は、過去のデータとの対比をすることなどにより、シミュレーションの効率的な実行、結果の評価などに役立てることができる。
【００９５】
データ部１７０は、シミュレーションに関するデータ、ファイルを一まとめにして、シミュレーションデータＡ１７１、同Ｂ１７２、同Ｃ１７３、・・・のように保存する。各シミュレーションデータには、少なくともモデルタイプ１７４、モデルデータ１７５、シミュレーション条件１７６、シミュレーション結果１７７が含まれる。一つのモデルについて、物理モデルシミュレータを用いたシミュレーション結果など、高精度なシミュレーションの実施結果がある場合には、これとの差をシミュレーション精度１７８として加えることができる。シミュレーション精度１７８は、主としてモデル化の手法に依存するところが大きいため、このデータを参照することにより、異なるシミュレーション対象について、シミュレーション実施前に、その凡そのシミュレーション時間や精度を把握することが可能となる。また、精度が不十分、シミュレーション時間が長すぎる、などの予想ができた場合、モデル化手法を変更してシミュレーションを実施することも可能となる。
【００９６】
（ユーザインターフェイス１２の表示例）
図１７を参照して、シミュレーションデータベース１１のデータを利用して、ユーザインターフェイスの表示装置に表示する例を説明する。ユーザインターフェイス１２は、シミュレーションのモデル及び結果に関するデータを画面に表示可能になっている。ユーザインターフェイス１２の表示画面には、少なくとも表示するデータを指定する主表示データ設定部５１０、データ表示部５３０、及びメニューバー５０１が含まれる。
【００９７】
図１７の表示例では、複数のシミュレーション結果を表示・比較を可能とするため、参照データ設定部５２０を設けた例を示している。主表示データ設定部５１０には、少なくともファイル名指定部５１１、表示データ設定部５１４、表示形式設定部５１６がある。ファイル名指定部５１１では、モデルファイル設定フィールド５１２で、シミュレーションモデルのファイル名を、結果ファイル設定フィールド５１３で、シミュレーション結果のファイル名を指定する。表示データ設定部５１４では、表示可能な多くのデータ種から、表示するデータのデータ名をデータ名設定フィールド５１５に設定する。表示形式設定部５１６では、表示形式選択部５１７で、データをどのような形式で表示するか、その形式を選択設定する。表示形式としては、棒グラフ、折れ線グラフ、円グラフをはじめとするグラフ形式、ハードウェアの動作状況を時刻に従って連続的に表示するアニメーション表示、モデルの形状、及び形状にマッピングした各種のデータを表示する形式などを採用できる。
【００９８】
参照データ設定部５２０では、参照ファイル名指定部５２１内の参照ファイル設定フィールド５２２に、比較参照したいファイル名を設定する。自動選択ボタン５２３を押した場合、前述の類似データ検索手段でリストアップされた留次データの上位類似度のファイルが自動的に選択される。
【００９９】
データ表示部５３０には、データ表示領域５３１が設けられ、前述の主表示データ設定部５１０と参照データ設定部５２０で設定されたデータを表示する。
【０１００】
次に、メニューバー５０１の具体例を図１７に示す。同図は、メニューバー５０１の「ファイル」を選択した場合のメニュー構成例を示したものである。「新規ウィンドウ」は同様の画面を別に開く。「開く」、「閉じる」は、その時点で選択されているファイル名設定フィードに設定するファイルを指定する。「上書き保存」は、処理中のデータを同一ファイルに上書きモードで書き込む。「別名保存」は、異なる形式でデータをファイルに出力する。このとき、サブメニューとして、ファイル名の指定、保存するデータの選択、保存形式の選択を行なえる。保存形式としては、最も一般的なテキスト形式、表形式、文書・図形形式、画像形式などがある。この機能により異なる形式で保存されたデータは、その形式を扱える別のツールで加工・編集でき、結果の評価、資料作成などを、効率よく行うことが可能となる。「印刷」では、印刷するデータ、プリンタを指定し、そのデータを印刷する。「終了」は、ユーザインターフェイス画面を閉じる。
【０１０１】
図１９は、「設定」を選択した場合のメニュー構成例を示したものである。「ウィンドウモード」は、ユーザインターフェイス画面のウィンドウにおいて、「新規ウィンドウ」で新しい領域を開く際に、「マルチ」の場合は元の画面の中にサブウィンドウ形式で表示、「シングル」の場合は、別のウィンドウとして開くようなウィンドウの開き方のモードを設定する。「主データ選択」では、モデルファイル、シミュレーション条件のファイル、シミュレーション結果のファイルなど、選択可能なデータの種類を設定する。「最大データ数」は同一領域で扱うデータの種類の最大数を設定する。「最大参照ファイル数」は比較参照するファイルの数の最大数を設定する。
【０１０２】
このように、本実施形態のユーザインターフェイス１２は、各シミュレータのシミュレーション状況を単独又は並べて表示装置にグラフィカル表示させる表示モード選択手段を有して構成されている。これにより、ユーザは、ソフト、エレキ及びメカの各シミュレータのシミュレーション状況を適宜確認できる。したがって、ソフト、エレキ及びメカの各シミュレータの動作等に問題がある場合、その問題の原因等をユーザが容易に検討することができる。
【０１０３】
（シミュレータと実機によるシミュレーション）
本実施形態は、シミュレータによるシミュレーションに限らず、実機による統合シミュレーションに対応できるように構成できる。この場合、共通データ領域９０に、それぞれ実機を単独で又は自己のシミュレータとの組合せでアクセス可能に切り替える切替機能を設ける。そして、ユーザインターフェイス１２は、実機を含むシミュレーションと、そのシミュレーション結果の組合せにより、シミュレーションの目的、処理時間、及びシミュレーション精度とを管理する。その結果、目的、処理時間、精度に応じて適切なシミュレーションモデル化を提示することができ、シミュレーションモデル化精度を向上させることができる。
【０１０４】
また、ユーザインターフェイス１２は、複数のシミュレーション結果について、対応するデータを同一表現で表示装置に表示するようにすることができる。
【０１０５】
さらに、データベースに格納されたシミュレーションモデル、シミュレーション条件及びシミュレーション結果を、任意の表示装置に対応したフォーマットのデータで出力する出力手段を備えることができる。
【０１０６】
以上説明したように、本実施形態によれば、ソフト、エレキ、メカの各シミュレータを連携させて動作させることができ、また、各シミュレータの実行効率及び機能を確保して統合シミュレーションを効率的に実施することが可能となる。
【０１０７】
［実施形態２］
図２０に、本発明の統合シミュレーションシステムを適用した他の実施形態の構成図を示す。本実施形態は、流体・構造・振動の統合シミュレーションに適用したものである。図において、流体シミュレータ６０１は、流体解析モデル６０８を入力データとし、構造シミュレータ６０２は、構造解析モデル６０９を入力データとし、振動シミュレータ６０３は、振動解析モデル６１０を入力データとする。流体と構造と振動では、解析対象が異なるため、これらを統合的に扱って複合現象のシミュレーションを行なう場合、互いの情報を境界条件データとして授受する必要がある。シミュレータプラットフォーム４は、シミュレータ間のデータ授受を行う機構であるから、実施形態１と同じシステム構成で、流体・構造・振動の統合シミュレーションを実現できる。また、ユーザインターフェイス１２、外部入出力ファイル１３は、各シミュレータと独立しているため、プラットフォーム４と同様、共通に利用できる。
【０１０８】
このように、本実施形態によれば、流体、構造、振動のように異なる物理現象を同時に扱う複合現象のシミュレーションにおいても、各シミュレータを連携させて動作させることができ、また、各シミュレータの実行効率及び機能を確保して統合シミュレーションを効率的に実施することが可能となる。
【図面の簡単な説明】
【０１０９】
【図１】本発明の一実施形態の統合シミュレーションシステムの基本構成を示す図である。
【図２】図１の実施形態の詳細な構成を示す図である。
【図３】ソフト、エレキ、メカの各シミュレータの基本動作を示す図である。
【図４】共通データ領域の同期処理に係るデータ構成を示す図である。
【図５】同期処理モジュールの動作を示す図である。
【図６】割込みシミュレーションの仕組みを説明する図である。
【図７】割込みシミュレーションに必要な設定データを示す図である。
【図８】ソフト、エレキ、メカの統合シミュレーションシステムのシミュレーションの実行状態の一例を説明する図である。
【図９】ソフト、エレキ、メカの統合シミュレーションシステムのシミュレーションの実行状態の他の一例を説明する図である。
【図１０】データ操作インターフェイスの表示画面の一例を示す図である。
【図１１】物理ポートを対応する共通データ領域のアクセスアドレスへ変換する変数切替え定義ファイルの自動生成法を説明する図である。
【図１２】物理ポートを対応する共通データ領域のアクセスアドレスへ変換する変数切替え定義ファイルの自動生成法を説明する図である。
【図１３】物理ポートを対応する共通データ領域のアクセスアドレスへ変換する変数切替え定義ファイルの自動生成法を説明する図である。
【図１４】仮想モデルの生成方法を説明する図である。
【図１５】物理モデルシミュレータと仮想モデルシミュレータとを備えた実施形態の切替えを説明する図である。
【図１６】シミュレーションデータベースの構成を示す図である。
【図１７】ユーザインターフェイスの表示画面の一例を示す図である。
【図１８】ユーザインターフェイスのファイルメニューの一例を示す図である。
【図１９】ユーザインターフェイスの設定メニューの一例を示す図である。
【図２０】本発明の他の実施形態の統合シミュレーションシステムの基本構成を示す図である。
【符号の説明】
【０１１０】
１  ソフトシミュレータ
２  エレキシミュレータ
３  メカシミュレータ
４  シミュレータプラットフォーム
５  センサシミュレータ
８  組込みソフト
９  回路データ
１０  ＣＡＤデータ
１１  シミュレーションデータベース
１２  ユーザインターフェイス
１３  外部入出力ファイル
１４  実機回路
１５  実機メカ
２１  割込み処理シミュレータ
３１  伝達部
３２  伝達部
６０  ビューワ
７０  時間管理モジュール
８０  データ操作インターフェイス
９０  共通データ領域
９１  ハードウェア制御データ
９２  ハードウェア状態データ
９３  メカ駆動データ
９４  センサ発火フラグ
９５  メカ動作データ
９６  表示設定パラメータ
９７  時間データ
【図１】
2006350549.tif 000003
【図２】
2006350549.tif 000004
【図３】
2006350549.tif 000005
【図４】
2006350549.tif 000006
【図５】
2006350549.tif 000007
【図６】
2006350549.tif 000008
【図７】
2006350549.tif 000009
【図８】
2006350549.tif 000010
【図９】
2006350549.tif 000011
【図１０】
2006350549.tif 000012
【図１１】
2006350549.tif 000013
【図１２】
2006350549.tif 000014
【図１３】
2006350549.tif 000015
【図１４】
2006350549.tif 000016
【図１５】
2006350549.tif 000017
【図１６】
2006350549.tif 000018
【図１７】
2006350549.tif 000019
【図１８】
2006350549.tif 000020
【図１９】
2006350549.tif 000021
【図２０】
2006350549.tif 000022