(57)【要約】  並列離散イベント・シミュレーション方式において、データの更新タイミングの正確性を犠牲にすることなく、論理プロセスの並列実行の速度を向上する技法を提供すること。  送信よりも受信により長いタイムラグが生じる方の論理プロセスを、全体のシミュレーションを開始する前に、所定期間の初期シフトだけ実行させておくことを特徴とするものである。初期シフトは好適には、受信のタイムラグと送信のタイムラグの差の半分の値に設定される。所定期間の初期シフトだけずれて実行される論理プロセスは、nullメッセージを送信しあうことで動作し、それぞれのnullメッセージは、所定のタイムラグの後、相手の論理プロセスに到着し、それぞれの論理プロセスは、nullメッセージを受け取った時点で更に相手の論理プロセスにnullメッセージを送る。こうして、nullメッセージにより同期をとることによってシミュレーションが進行する。
2013084654.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
所与の第１の論理プロセスから、該第１の論理プロセスと通信する第２の論理プロセスにメッセージを送るタイムラグを第１のタイムラグとし、該第２の論理プロセスから前記第１の論理プロセスにメッセージを送るタイムラグを第２のタイムラグとし、前記第１のタイムラグ ＞ 前記第２のタイムラグとすると、全体のシミュレーションを開始する前に、前記第１のタイムラグと前記第２のタイムラグの差より小さい所定の初期シフト分だけ、前記第２の論理プロセスを実行させておくことにより、前記第１の論理プロセスと前記第２の論理プロセスを前記コンピュータ上で並列実行させるステップを有する、
シミュレーション・システムの動作方法。
【請求項２】
前記所定の初期シフトが、前記第１のタイムラグと前記第２のタイムラグの差の半分である、請求項１に記載のシミュレーション・システムの動作方法。
【請求項３】
前記第１の論理プロセスと前記第２の論理プロセスを、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項１に記載のシミュレーション・システムの動作方法。
【請求項４】
前記第２のタイムラグがゼロであり、前記第１のタイムラグがゼロより大きい、請求項１に記載のシミュレーション・システムの動作方法。
【請求項５】
前記第１の論理プロセスがＥＣＵエミュレータであり、前記第２の論理プロセスがプラント・シミュレータである、請求項４に記載のシミュレーション・システムの動作方法。
【請求項６】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
互いに通信する２つの論理プロセスの間で、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の値に基づき、２つの論理プロセスの間の相対的なシフト量を決定するステップと、
前記論理プロセス間の通信関係に基づき、シフト量の連立一次方程式を立てるステップと、
前記連立立一次方程式の解に従って、個々の論理プロセスに初期シフトを与えて実行させるステップを有する、
シミュレーション・システムの動作方法。
【請求項７】
前記相対的なシフト量が、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の半分として計算される、請求項６に記載のシミュレーション・システムの動作方法。
【請求項８】
前記連立立一次方程式の解が不定になることに応答して、解が定まるように式を減らすステップをそらに有する、請求項６に記載のシミュレーション・システムの動作方法。
【請求項９】
前記複数の論理プロセスが、ＥＣＵエミュレータとプラント・シミュレータを含む、請求項６に記載のシミュレーション・システムの動作方法。
【請求項１０】
前記論理プロセス間を、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項６に記載のシミュレーション・システムの動作方法。
【請求項１１】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
前記シミュレーション・システムに、
互いに通信する２つの論理プロセスの間で、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の値に基づき、２つの論理プロセスの間の相対的なシフト量を決定するステップと、
前記論理プロセス間の通信関係に基づき、シフト量の連立一次方程式を立てるステップと、
前記連立立一次方程式の解に従って、個々の論理プロセスに初期シフトを与えて実行させるステップを実行させる、
シミュレーション・システムの動作プログラム。
【請求項１２】
前記相対的なシフト量が、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の半分として計算される、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１３】
前記連立立一次方程式の解が不定になることに応答して、解が定まるように式を減らすステップをそらに有する、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１４】
前記複数の論理プロセスが、ＥＣＵエミュレータとプラント・シミュレータを含む、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１５】
前記シミュレーション・システムに、前記論理プロセス間を、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップをさらに実行させる、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１６】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムであって、
所与の第１の論理プロセスから、該第１の論理プロセスと通信する第２の論理プロセスにメッセージを送るタイムラグを第１のタイムラグとし、該第２の論理プロセスから前記第１の論理プロセスにメッセージを送るタイムラグを第２のタイムラグとし、前記第１のタイムラグ ＞ 前記第２のタイムラグとすると、全体のシミュレーションを開始する前に、前記第１のタイムラグと前記第２のタイムラグの差より小さい所定の初期シフト分だけ、前記第２の論理プロセスを実行させておくことにより、前記第１の論理プロセスと前記第２の論理プロセスを前記コンピュータ上で並列実行させる手段を有する、
シミュレーション・システム。
【請求項１７】
前記所定の初期シフトが、前記第１のタイムラグと前記第２のタイムラグの差の半分である、請求項１６に記載のシミュレーション・システム。
【請求項１８】
前記第１の論理プロセスと前記第２の論理プロセスを、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項１６に記載のシミュレーション・システム。
【請求項１９】
前記第２のタイムラグがゼロであり、前記第１のタイムラグがゼロより大きい、請求項１６に記載のシミュレーション・システム。
【請求項２０】
前記第１の論理プロセスがＥＣＵエミュレータであり、前記第２の論理プロセスがプラント・シミュレータである、請求項１９に記載のシミュレーション・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、自動車の制御システムなどのシミュレーションを実行する技法に関するものである。
【背景技術】
【０００２】
近年、科学技術計算、シミュレーションなどの分野で、複数のプロセッサをもつ、いわゆるマルチプロセッサ・システムが使用されている。一方、最近になって特に盛んに開発されるようになってきたシミュレーションの分野として、ロボット、自動車、飛行機などのメトカトロニクスのプラントのシミュレーション用ソフトウェアがある。電子部品とソフトウェア技術の発展の恩恵により、ロボット、自動車、飛行機などでは、神経のように張り巡らされたワイヤ結線や無線ＬＡＮなどを利用して、大部分の制御が電子的に行われる。【０００３】
それらは、本来的にはメカトロニクスの装置であるが、大量の制御ソフトウェアをも内蔵している。そのため、製品の開発に当たっては、制御プログラムの開発とそのテストに、長い時間と、膨大な費用と、多数の人員を費やす必要が出てきた。【０００４】
このようなテストにために従来行われている技法として、ＨＩＬＳ(Hardware In the Loop Simulation)がある。特に、自動車全体の電子制御ユニット（ＥＣＵ）をテストする環境は、フルビークルＨＩＬＳと呼ばれる。フルビークルＨＩＬＳにおいては、実験室内で、本物のＥＣＵが、エンジン、トランスミッション機構などをエミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ＥＣＵからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。【０００５】
しかし、ＨＩＬＳは、専用のハードウェア装置を使い、それと本物のＥＣＵの間を物理的に配線しなくてはならないので、準備が大変である。また、別のＥＣＵに取り替えてのテストも、物理的に接続し直さなくてはならないので、手間がかかる。さらに、本物のＥＣＵを用いたテストであるため、テストに実時間を要する。従って、多くのシナリオをテストすると、膨大な時間がかかる。また、ＨＩＬＳのエミュレーション用のハードウェア装置は、一般に、非常に高価である。【０００６】
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、シミュレーション全体をソフトウェアで構成する手法が提案されている。その手法においては、エンジンやトランスミッションなどのプラント部分には連続系シミュレーション（continuous simulation）を利用し、また、コントローラ部分にはステート・チャート（state chart）あるいは実際のソフトウエアコードを利用する。コントローラ部分のシミュレーション方法に応じて、前者は ＭＩＬ (Model-in-the-Loop) シミュレーション、後者は ＳＩＬ  (Software-in-the-Loop) シミュレーションと呼ばれる。ＭＩＬやＳＩＬによればＥＣＵのハードウェアが存在しなくても、テストを実行可能である。【０００７】
このようなＭＩＬ／ＳＩＬの構築を支援するシステムとして例えば、MathWorks社から入手可能なシミュレーション・モデリング・システムである、MATLAB(R)/Simulink(R)がある。MATLAB(R)/Simulink(R)を使用すると、画面上にグラフィカル・インターフェースによって、機能ブロックを配置し、その処理の流れを指定することによって、シミュレーション・プログラムを作成することができる。ここで、機能ブロックは、和や積などの基本演算や積分や条件分岐、さらには、ソフトウエア・コードを呼び出すブロックなどの種類があり、それぞれが入力あるいは・および出力を持つ。なお、コントローラの表現としてソフトウエア・ブロックを含むシミュレーションがＳＩＬである。【０００８】
以下では、このようなシミュレーションの単位を相互に連成させるとき、各シミュレータを論理プロセス（logical process）と呼ぶことにする。複数の論理プロセスからなる連成シミュレーション・システムの動作方式として、並列離散イベント・シミュレーション方式が知られている。例えば、Alois Ferscha, Satish K. Tripathi, "Parallel and Distributed Simulation of Discrete Event Systems", the University of Maryland Computer Science Department; CS-TR-3336, 15-Oct-1998は、複数の論理プロセスを用いた、並列離散イベント・シミュレーション方式を開示する。この論文によれば、このようなシステムにおいて、タイミングの一貫性の崩れを回避し、論理プロセスに跨るイベントの因果律を保持することを保証するためには、各論理プロセスにおいて局所的に因果律を守ればよいことが示されている。システム全体にわたる同期処理は必要ではないので、同期のオーバーヘッドがかからない。【０００９】
図１は、複数の論理プロセスからなる自動車のシミュレーション・システムの構成の一部を示すブロック図である。図１のシステムは、ＣＡＮエミュレータ１０２と、ＥＣＵエミュレータ１０４と、エンジン・シミュレータ１０６と、ＥＣＵエミュレータ１０８と、トランスミッション・シミュレータ１１０を有し、その各々が、ソフトウェアで構成された論理プロセスである。図１において、論理プロセスは、メッセージをやりとりすることでイベントを通知しながら相互に連携して動作する。【００１０】
イベントには時刻情報が付加されており、それは受信側の論理プロセスが処理を行うシミュレーション時刻を指す。イベントの時刻情報には、送信側の論理プロセスのシミュレーション時刻よりも古い時刻を設定することは許されない。なぜなら、過去の時刻の処理を依頼することはできないからである。ネットワークで相互に接続される部品なら、その間には伝達の遅延が生じるので、必ず送信時刻よりも受信時刻のほうが大きくなる。また、タイマー機能などを用いて処理を実行するケースでは、タイマーにセットする時刻（送信）とアラームを発生する時刻（受信）との間に時刻の差を設けることができる。あるいは、受信側がある程度の遅延を許容するなら、その許容範囲を時刻差とすることができる。【００１１】
ＡとＢという２つの論理プロセスの間のイベント通信について、送信と受信の時刻差をタイムラグ（時間ずれ）として分類して模式的に示すと、図２のとおりである。【００１２】
図２(1)は、タイムラグなしなので、ＡとＢを並列実行できない強連成の構成である。このケースでは、異なる論理プロセスに分けることはできず、単一のシミュレータとして計算する必要がある。もし、いくらかの誤差を許容することにして、わずかの時間ずつ並行して動作させるなら弱連成のシミュレーションとなる。【００１３】
図２(2)は、ＡからＢへのタイムラグLABも、ＢからＡへのタイムラグLBAも、どちらでもゼロでない場合は、その最大公約数の時間ステップで同期処理を行うことにより、並列動作でも時間誤差を生じない連成シミュレーションができる。【００１４】
図２(3)は、ＡからＢへのタイムラグLABはゼロでないが、ＢからＡへのタイムラグLBAが実質ゼロである場合で、この場合は、ＢからＡの向きにはいつデータ更新があるかわからないので、Ｂからイベントが通知されるまで、Ａは１ステップも先に進むことができない。よって交互にシーケンシャル実行するよりなく、実行速度は低くなる。【００１５】
図２(3)のような場合は、例えば、論理プロセスＡがＥＣＵエミュレータで、論理プロセスＢがプラント・シミュレータであるような場合である。その他に、ＥＣＵエミュレータ同士でも、プラント・シミュレータ同士でも、データの送信は即時に行われるのに、データの受信は通信の遅延が生じるという意味で、図２(3)のような場合が生じえる。また、厳密にゼロでなくても非常に小さなタイムラグなら、同様の問題が生じる。【００１６】
図２(3)の場合は、論理プロセスを用いた並列離散イベント・シミュレーション方式においてかなり頻繁に現れるので、図２(3)のような場合に並列実行を可能ならしめる方式が要望される。【００１７】
なお、互いの論理プロセスがイベントを待ちあってデッドロックを引き起こすことを防止するために、nullメッセージを用いる技法が知られている。しかし、タイムラグがゼロの場合には、nullメッセージに未来の時刻がつかないので、デッドロックは起きないが、並列実行させることができない。【００１８】
また、Vikas Jha, Rajive Bagrodia, "Simultaneous events and lookahead in simulation protocols", Journal ACM Transactions on Modeling and Computer Simulation, Volume 10 Issue 3, July 2000は、このような課題に対して、ε-lookahead実行と呼ばれる技法を提供することにより、１つの解決策を与える。すなわち、ε-lookahead実行は、限りなく0に近いε時間のタイムラグがあるとみなし、図２(2)の方式で並列実行させる方式であるが、データの交換タイミングが不正確であるため誤差が蓄積されるとともに、精度を高めるためにはεを小さくする必要があるが、すると実行速度が低下するという、精度と実行速度のトレードオフがある。
【先行技術文献】
【非特許文献】
【００１９】
【非特許文献１】Alois Ferscha,  Satish K. Tripathi, "Parallel and Distributed Simulation of Discrete Event Systems", the University of Maryland Computer Science Department; CS-TR-3336, 15-Oct-1998
【非特許文献２】Vikas Jha, Rajive Bagrodia, "Simultaneous events and lookahead in simulation protocols", Journal ACM Transactions on Modeling and Computer Simulation, Volume 10 Issue 3, July 2000
【発明の概要】
【発明が解決しようとする課題】
【００２０】
この発明の目的は、論理プロセスを用いた並列離散イベント・シミュレーション方式において、データの更新タイミングの正確性を犠牲にすることなく、論理プロセスの並列実行の速度を向上する技法を提供することにある。
【課題を解決するための手段】
【００２１】
この発明は、上記課題を解決するためになされたものであって、出力側よりも入力側により長いタイムラグが生じる方の論理プロセスを、全体のシミュレーションを開始する前に、所定期間の初期シフトだけ実行させておくことを特徴とするものである。初期シフトは好適には、入力のタイムラグと出力のタイムラグの差の半分の値に設定される。【００２２】
先行して開始した論理プロセス（論理プロセスＢと呼ぶ）は、初期シフトの経過時点で、相手の論理プロセス（論理プロセスＡと呼ぶ）に対してnullメッセージを送る。一方、論理プロセスＡは、その実行開始時点でやはり論理プロセスＢに対してnullメッセージを送る。それぞれのnullメッセージは、実時間では即時に、相手の論理プロセスに到着し、それぞれの論理プロセスは、nullメッセージを受け取った時点で更に相手の論理プロセスにnullメッセージを送る。こうして、nullメッセージにより同期をとることによってシミュレーションが進行する。【００２３】
シミュレーション・システムは一般的に多数の論理プロセスを含み、すると、一対の論理プロセスの間でだけ初期シフトを決定するだけでは十分ではなく、互いに通信する全ての論理プロセスの対について相対的な初期シフトを矛盾なく決定する必要がある。このため、本発明に従うシステムは、論理プロセスの対の２項関係に基づき立てられた初期シフトの差の式の連立方程式を解く。そして、この計算の結果得られた初期シフトの値が各論理プロセスにセットされる。【００２４】
このとき、連立方程式の変数の数よりも式の数が多くなるなどの理由で、連立方程式が解けなくなることがある。その場合、論理プロセス間の所定のプリファレンスなどの前提条件を用いて式を減らすなどの手段をとることにより、解を得る。
【発明の効果】
【００２５】
この発明によれば、並列離散イベント・シミュレーション方式において、データの更新タイミングの正確性を犠牲にすることなく、論理プロセスの並列実行の速度を向上する技法が提供される。
【図面の簡単な説明】
【００２６】
【図１】複数の論理プロセスからなるシミュレーション・システムのブロック図を示す図である。
【図２】論理プロセスの間の通信のタイムラグのパターンを示す図である。
【図３】ハードウェア構成のブロック図である。
【図４】機能構成のブロック図である。
【図５】複数の論理プロセスからなるシミュレーション・システムにおいて、論理プロセスの間のタイムラグを示す図である。
【図６】シフト量計算モジュールの処理のフローチャートを示す図である。
【図７】初期ローカル・スケジューラの処理のフローチャートを示す図である。
【図８】初期シフトなしの場合の論理プロセスの動作を示す図である。
【図９】初期シフトありの場合の論理プロセスの動作を示す図である。
【図１０】初期シフトなしの場合の論理プロセスの動作を示す図である。
【図１１】初期シフトありの場合の論理プロセスの動作を示す図である。
【図１２】イベント・メッセージとnullメッセージの関係を示す図である。
【図１３】３個の論理プロセスについての、初期シフトなしと、初期シフトありの場合の動作の比較を示す図である。
【図１４】３個の論理プロセスについての、初期シフトなしと、初期シフトありの場合の動作の比較を示す図である。
【図１５】初期シフトの様々な場合の動作の比較を示す図である。
【図１６】初期シフトの様々な場合の動作の比較を示す図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
【００２８】
先ず、図３を参照して、本発明を実施するために使用されるコンピュータのハードウェアについて説明する。図３において、ホスト・バス３０２には、複数のＣＰＵ１  ３０４ａ、ＣＰＵ２  ３０４ｂ、ＣＰＵ３  ３０４ｃ、・・・ＣＰＵｎ  ３０４ｎが接続されている。ホスト・バス３０２にはさらに、ＣＰＵ１  ３０４ａ、ＣＰＵ２  ３０４ｂ、ＣＰＵ３  ３０４ｃ、・・・ＣＰＵｎ  ３０４ｎの演算処理のためのメイン・メモリ３０６が接続されている。
【００２９】
一方、Ｉ／Ｏバス３０８には、キーボード３１０、マウス３１２、ディスプレイ３１４及びハードティスク・ドライブ３１６が接続されている。Ｉ／Ｏバス３０８は、Ｉ／Ｏブリッジ３１８を介して、ホスト・バス３０２に接続されている。キーボード３１０及びマウス３１２は、オペレータが、コマンドを打ち込んだり、メニューをクリックするなどして、操作するために使用される。ディスプレイ３１４は、必要に応じて、本発明に係るプログラムをＧＵＩで操作するためのメニューを表示するために使用される。
【００３０】
この目的のために使用される好適なコンピュータ・システムのハードウェアとして、ＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  Ｘがある。その際、ＣＰＵ１  ３０４ａ、ＣＰＵ２  ３０４ｂ、ＣＰＵ３  ３０４ｃ、・・・ＣＰＵｎ  ３０４ｎは、例えば、インテル（Ｒ）Ｘｅｏｎ（Ｒ）であり、オペレーティング・システムは、Ｗｉｎｄｏｗｓ（商標）Ｓｅｒｖｅｒ  ２００３である。オペレーティング・システムは、ハードティスク・ドライブ３１６に格納され、コンピュータ・システムの起動時に、ハードティスク・ドライブ３１６からメイン・メモリ３０６に読み込まれる。
【００３１】
本発明を実施するために、マルチプロセッサ・システムを用いることは必要ではないが、複数の論理プロセスを異なるプロセッサに割り当てて並列実行させるためには、マルチプロセッサ・システムを用いることが望ましい。ここでマルチプロセッサ・システムとは、一般に、独立に演算処理し得るプロセッサ機能のコアを複数もつプロセッサを用いるシステムを意図しており、従って、マルチコア・シングルプロセッサ・システム、シングルコア・マルチプロセッサ・システム、及びマルチコア・マルチプロセッサ・システムのどれでもよいことを理解されたい。
【００３２】
なお、本発明を実施するために使用可能なコンピュータ・システムのハードウェアは、ＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  Ｘに限定されず、本発明のシミュレーション・プログラムを走らせることができるものであれば、任意のコンピュータ・システムを使用することができる。オペレーティング・システムも、Ｗｉｎｄｏｗｓ（Ｒ）ＸＰ、Ｗｉｎｄｏｗｓ（Ｒ）７、Ｌｉｎｕｘ（Ｒ）、Ｍａｃ  ＯＳ（Ｒ）など、任意のオペレーティング・システムを使用することができる。さらに、シミュレーション・プログラムを高速で動作させるために、ＰＯＷＥＲ（商標）６ベースで、オペレーティング・システムがＡＩＸ（商標）のＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  Ｐなどのコンピュータ・システムを使用してもよい。
【００３３】
ハードティスク・ドライブ３１６にはまた、図４に関連して後で説明する、メイン・プログラム４０２、MATLAB(R)/Simulink(R)などのシミュレーション・モデリング・ツール４０４、ステップ実行を行うシミュレータ・モジュール（ライブラリ）４０６、論理プロセスの間のタイムラグ、プリファレンスなどの情報を含む、ＸＭＬで記述された接続情報ファイル４０８、シミュレータ・モジュール４０６の初期シフト量を計算するシフト量計算モジュール４１０、ローカル・スケジューラのモジュール４１２が保存されている。シフト量計算モジュール４１０は、Java(R)、C、C++、C#などの既存の任意のプログラミング言語で作成することができる。ハードティスク・ドライブ３１６にはさらに、ライブラリ４０６やローカル・スケジュール４１２などをコンパイル＆リンクして実行可能ファイル４１８を生成するためのコンパイラ＆リンカ４１６も保存されている。
【００３４】
図４は、本発明の実施例に係る機能ブロック図である。図４において、メイン・ルーチン４０２は、本発明に係る処理の各種モジュールを呼び出し、実行するためのプログラムであり、好適には、ディスプレイ３１４上で、キーボード３１０やマウス３１２で操作して処理を行うためのＧＵＩなどのインターフェースを与える。
【００３５】
シミュレーション・モデリング・ツール４０４は、好適には、MATLAB(R)/Simulink(R)であるがこれには限定されず、Scilab/Scicosなど、任意のシミュレーション・モデリング・ツールを使用することができる。
【００３６】
ステップ実行モジュールのライブラリ４０６は、シミュレーション・モデリング・ツール４０４によって作成されたコードであり、好適には、MATLAB(R)/Simulink(R)におけるReal-Time Workshop(R)のような変換ツールで、C、C++などのソースコードに変換され、コンパイラ＆リンカ４１６によって実行可能ファイル４１８に変換され、実行可能ファイル４１８のコードは、図３に示すハードウェア構成とオペレーティング・システムなどによって実装された実行環境上で実行される。
【００３７】
図１に示すＣＡＮエミュレータ、ＥＣＵエミュレータ、エンジン・シミュレータ、及びトランスミッション・シミュレータなどのシミュレーションの動作単位は論理プロセス(logical process)と呼ばれ、一般的には、１つの論理プロセスは、シミュレーション・モデリング・ツール４０４によって作成された複数の機能ブロックからなる。
【００３８】
図３に示すマルチプロセッサをもつ実行環境には、好適には、可能な限り、１つのプロセッサまたはコアに１つの論理プロセスが割り当てられて、並列実行される。
【００３９】
論理プロセスは、メッセージを受け取り、あるいはメッセージを送出する機能をもつローカル・スケジューラと、ユーザが作成したステップ実行機能とからなる。ローカル・スケジューラには、メイン・プログラム４０２によって、論理プロセスの開始の初期シフト量４１４を設定することが可能である。
【００４０】
本発明は、個々の論理プロセスのローカル・スケジューラ４１２に、計算により得られた所定の初期シフト量を設定することで、シミュレーションの実行速度を向上させるものである。ローカル・スケジューラの処理の詳細は後に説明する。
【００４１】
シフト量計算モジュール４１０は、互いに通信する論理プロセスの間の各々の通信方向のタイムラグ及び論理プロセスの間の通信条件に関するプリファレンスの条件を含む接続情報のデータ４０８を利用して、個々の論理プロセスに設定すべきシフト量４１４を計算する機能をもつ。シフト量計算モジュール４１０は基本的には、互いに通信する論理プロセスのペア毎に１次方程式をたて、連立方程式を解くことにより、各論理プロセスに設定すべきシフト量を計算する処理を行う。この処理の詳細は図６のフローチャートを参照して後で説明する。
【００４２】
図５にタイムラグのデータを例示する。すなわち、論理プロセスＡ、Ｂ、Ｃ、Ｄ及びＥがあるとすると、互いに通信する論理プロセスＡとＢの間では、論理プロセスＡから論理プロセスＢにメッセージを送るタイムラグLABと、論理プロセスＢから論理プロセスＡにメッセージを送るタイムラグLBAとがタイムラグのデータとしてＸＭＬにより接続情報ファイル４０８に記録される。同様の記録が、論理プロセスＡとＤの間、論理プロセスＢとＣの間、論理プロセスＣとＥの間、論理プロセスＤとＥの間で行われる。
【００４３】
このようなタイムラグは、ＣＡＮとＥＣＵの間なら、ＣＡＮの受信遅延（データサイズ分転送されるまで待つ）である。ＥＣＵからプラントへのメッセージ送信の遅延はＥＣＵ上で動作プログラムに起因するもので、ＥＣＵ上のプログラムはタイマを使ってプラントに指示を送るので、このタイマの長さがタイムラグになる。一方、プラントからＥＣＵは、タイムラグはゼロである。また、プラントとプラントの間は、互いの変化が伝わるのに許容できる時間がタイムラグに該当する。
【００４４】
プリファレンスのデータとは例えば、プラント間の緩和可能な連成制約を記述するものである。緩和可能な連成制約として、最低同期周期の値などがある。緩和するケースでも、その最低同期周期を上回らないように調整するので、システム全体の累積誤差を大きくするものではない。
【００４５】
メイン・プログラム４０２は、シフト量４１４をローカル・スケジューラ４１２を介して各論理プロセスに設定して、実行を指示する。
【００４６】
次に、シフト量計算モジュール４１０の処理を、図６のフローチャートを参照して説明する。先ず、シフト量計算モジュール４１０が計算する式について説明する。すなわち、SAを論理プロセスＡの初期シフト量、SBを論理プロセスＢの初期シフト量、LBAを論理プロセスＢから論理プロセスＡへのメッセージ送信のタイムラグ、LABを論理プロセスＡから論理プロセスＢへのメッセージ送信のタイムラグとすると、
SA - SB = (LBA - LAB)/2と式がたてられる。同様にSA〜SZについて、互いにメッセージをやりとりする論理プロセスに定式化すると、下記のような連立方程式が得られる。
【数１】
2013084654.tif 000003
なお、一番下のSA = Cという式は、SAを初期シフト量の計算の一時的な基準として選んでいることを意味する。この基準は、後の処理により正しい基準に修正される。
【００４７】
以上の説明を一般化して、SA〜SZなどをS1〜Snと表記し直し、連立方程式の右辺をb1〜bmと表記することにすると、連立方程式は下記のように行列表記される。
【数２】
2013084654.tif 000004
【００４８】
こうして図６のフローチャートを参照すると、ステップ６０２では、シフト量計算モジュール４１０は、連立方程式の左辺の行列Aのランクがnより小さいかどうか判断し、もしそうなら、処理は失敗として終了する。なお、ランクが n より小さくなるのは、論理プロセス間の接続が不足していて、図５の接続上、論理プロセスの離れ島が出来ている状況であるから、連成シミュレーションの設計者にとっては、修正が容易である。
【００４９】
もし行列Aのランクがn以上なら、ステップ６０４で、シフト量計算モジュール４１０は、行列Aのランクがnになるまで、プリファレンス４１４に含まれる論理プロセスに対応する、優先度が低い式を取り除く。こうして、A's = b'という式が得られる。
【００５０】
シフト量計算モジュール４１０は、ステップ６０６で、s = A'-1 b'により、シフト量sを求める。なおこの場合、必ずしもA'の逆行列を計算する必要はなく、ガウスの消去法、ガウス・ザイデル法など、コンピュータ上の数値計算技法として既知の任意の方法を使用することができる。
【００５１】
シフト量計算モジュール４１０は、ステップ６０８で、例えば下記の式の処理によって、初期シフト量の最小値を0にする。
【数３】
2013084654.tif 000005
【００５２】
シフト量計算モジュール４１０は、ステップ６１０で、初期シフトの計算に使用しなかったタイムラグを、下記の式により再調整する。
Lij > Lji + 2(Sj - Si)ならば、Lij := Lji + 2(Sj - Si)
そうでないなら、Lji := Lij + 2(Si - Sj)
なお、この調整の結果、ひとつでも Lijの値が負となれば、ステップ６１２での判断（ここでは、LijなどをLkと言い換えている）により、エラーとして計算処理を終了する。このケースでは、連成シミュレーションの設計者は、優先度の付け直しなどの操作を行う必要がある。
【００５３】
次に、論理プロセスにおけるローカル・スケジューラの処理を、図７のフローチャートを参照して説明する。図７のフローチャートを説明する前に、使用される時間の定義を与えておく。
TC : 現在のローカル時間
TS : 初期シフト
TO : キューにおける最も古い時間
TL : 送り先へのタイムラグ
TE : シミュレーションの終了時間
【００５４】
図７において、ローカル・スケジューラは、ステップ７０２で、t = TSまで実行する。これによって、TCがTSとなる。
【００５５】
ステップ７０４で、ローカル・スケジューラは、t = TC + TLまでメッセージ(msg)を送り出す。
【００５６】
ステップ７０６で、ローカル・スケジューラは、TE ≦ TCかどうか判断し、もしそうなら処理を終了する。
【００５７】
TE ≦ TCでないなら、ローカル・スケジューラは、ステップ７０８で、最古のメッセージの時間を取得する。
【００５８】
ステップ７１０で、ローカル・スケジューラは、t = TOのメッセージに基づき更新する。
【００５９】
ステップ７１２で、ローカル・スケジューラは、t = TOまで実行し、これにより、TCがTOとなる。
【００６０】
ステップ７１４で、ローカル・スケジューラは、t = TC + TLまでメッセージを送り出して、ステップ７０６に戻る。
【００６１】
次に、本発明によるシミュレーション実行動作について説明する。先ず簡単のために、２つの論理プロセスだけを想定した処理について説明する。
【００６２】
この発明では、互いの論理プロセスがイベントを待ち合ってデッドロックを引き起こすことを防止するために、nullメッセージを用いる保守的同期化(conservative synchronization)の手法を前提とする。なお、nullメッセージとは、タイムスタンプのみを含むメッセージのことであり、以下では、イベント・メッセージと区別する。
【００６３】
以上のような構成において、シミュレーションのために次のような準備がなされる。
(1) ユーザが、シミュレーション・モデリング・ツール４０４を使って、所定のモデルおよび、そのモデルをステップ実行するシミュレータを構築する。
(2) ユーザは、各シミュレータの間の接続情報を記述する。接続情報は、シミュレータの出力ポート番号と、宛先シミュレータの入力ポート番号、最小タイムラグ、および優先度で構成される。
(3) メイン・プログラム４０２は接続情報を読み込んで、各シミュレータの初期シフト量を決定する。
(4) メイン・プログラム４０２は、各ローカル・スケジューラに初期シフトの値とシミュレーションの終了時刻をセットして、各シミュレータのステップ実行モジュールとリンクして、スレッド実行のモジュールを生成する。
(5) メイン・プログラム４０２は、スレッド実行モジュールを起動して、その終了を待つ。
【００６４】
ここで例として、図８に示すように、論理プロセスＡから論理プロセスＢへのメッセージの送出にはLAB > 0のタイムラグがかかり、一方、論理プロセスＢから論理プロセスＡへのメッセージの送出のタイムラグがゼロの場合における論理プロセスの実行動作をみてみる。すると従来技術では、シミュレーション時間で、開始時点で論理プロセスＡと論理プロセスＢが同時に相手方にnullメッセージを送り、この結果、実行時間においては、各論理プロセスでローカルな因果律を保つように必要性から、図示するように、B1 → A1 → B2 →  と、論理プロセスＡと論理プロセスＢがシーケンシャル実行となり、実行時間を高速化できない。
【００６５】
そこで、本発明に従い、論理プロセスＢを、LAB/2だけ初期シフト実行させることにより、図９に示すように、論理プロセスＡと論理プロセスＢが並列実行され、これによって実行時間を高速化することができる。なお、図９では、初期シフトはB0として示されている。
【００６６】
図１０の例では、論理プロセスＡから論理プロセスＢへのメッセージ送出のタイムラグLABも、論理プロセスＢから論理プロセスＡへのメッセージ送出のタイムラグLBAもゼロではないので、論理プロセスＡと論理プロセスＢを並列実行させることが可能であるが、LBA > LAB > 0とすると、図１１に示すように、(LBA - LAB)/2だけ論理プロセスＡを初期シフト実行させることにより、さらに並列実行の程度を向上して実行時間を増加させることができる。なお、図１１では、初期シフトはA0として示されている。
【００６７】
図１２(a)は、シミュレーション時刻上で、論理プロセスＡとＢが互いにイベントを送りあう様子を示している。ただし、両者とも、どの時刻にイベントが届くのか予測できないため、実行を開始することが出来ず、デッドロックの状態である。この状況に対して、両者が最小タイムラグを現シミュレーション時刻に加えた nullメッセージ１２０２、１２０４、１２０６及び１２０８を送りあえば、図１２(b) に示すように、両者は処理を進めることが出来、期待通りの時刻にイベント・メッセージを受け取ることが出来る。
【００６８】
nullメッセージとイベント・メッセージを送るためのルールは以下のとおりである。
(1) 各通信路において、メッセージのタイムスタンプを増加させる。
(2) メッセージを送る近傍の論理プロセスにのみ応答する。
(3) 次のnullメッセージを送る直前にイベント・メッセージを送る。
(4) イベント・メッセージに応答してnullメッセージを送ることはない。
【００６９】
イベント・メッセージのタイムスタンプは、その直後に送出されるnullメッセージのタイムスタンプよりも後になるように設定される。なぜなら、nullメッセージのタイムスタンプは、規定されたタイムラグに基づき相手の論理プロセスに到達する最も早い時間だからである。このことは、図１２では、nullメッセージよりもなだらかな傾きのイベント・メッセージとして示されている。
【００７０】
本発明の処理シフトを設定した実行技法は、一対の論理プロセスの間だけでなく、より多くの論理プロセスの間に適用可能であり、図１３は、Ａ、Ｂ及びＣという３つの論理プロセスに適用した例を示す。
【００７１】
この例では、LAB = 100（以下、単位はmsとする）、LBA = 0、LBC = 300、LCB = 350、LAC = 200、LCA = 50であるとすると、その動作チャートは、図１３(a)のようになる。
【００７２】
本発明によれば、上記のタイムラグのデータに基づき、各論理プロセスの初期シフト量が計算され、その結果、論理プロセスＡの初期シフト量SA = 0、論理プロセスＢの初期シフト量SB = 50、論理プロセスＣの初期シフト量SC = 75と求められる。
【００７３】
こうして、論理プロセスＢについては参照番号１３０２で示すように初期シフトで動作され、論理プロセスＣについては参照番号１３０４で示すように初期シフトで動作され、この結果、図１３(a)の動作チャートと比較すれば分かるように、図１３(b)の動作チャートからは、実行速度が向上していることがみてとれる。
【００７４】
図１４は、異なるタイムラグをもつ、Ａ、Ｂ及びＣという３つの論理プロセスに適用した例を示す。
【００７５】
この例では、LAB = 100、LBA = 0、LBC = 100、LCB = 0、LAC = 200、LCA = 0であるとすると、その動作チャートは、図１４(a)のようになる。
【００７６】
次に、上記のタイムラグのデータに基づき、各論理プロセスの初期シフト量が計算され、その結果、論理プロセスＡの初期シフト量SA = 0、論理プロセスＢの初期シフト量SB = 50、論理プロセスＣの初期シフト量SC = 100と求められる。
【００７７】
こうして、論理プロセスＢについては参照番号１４０２で示すように初期シフトで動作され、論理プロセスＣについては参照番号１４０４で示すように初期シフトで動作され、この結果、図１４(a)の動作チャートと比較すれば分かるように、やはり、図１４(b)の動作チャートからは、実行速度が向上していることがみてとれる。
【００７８】
次に図１５及び図１６を参照して、実行速度の異なる２つの論理プロセスの間の動作について説明する。また、ここでは、初期シフトが１／２でない場合についても示す。
【００７９】
図１５は、論理プロセスＡの実行速度が、論理プロセスＢの実行速度より大きい場合を示す。
【００８０】
図１５(a)は初期シフトなしの従来の場合の動作を示し、図１５(b)は、タイムラグ差の１／２の初期シフトの場合の動作を示す。図１５(b)では、初期シフトは、参照番号１５０２で示される。
【００８１】
さらに、図１５(c)は、タイムラグ差の１／２以上の初期シフトの場合の動作を示し、図１５(d)は、タイムラグ差の１／２以下の初期シフトの場合の動作を示す。図１５(c)では、初期シフトは、参照番号１５０４で示され、図１５(d)では、初期シフトは、参照番号１５０６で示される。
【００８２】
図１６は、論理プロセスＡの実行速度が、論理プロセスＢの実行速度より小さい場合を示す。
【００８３】
図１６(a)は初期シフトなしの従来の場合の動作を示し、図１６(b)は、タイムラグ差の１／２の初期シフトの場合の動作を示す。図１６(b)では、初期シフトは、参照番号１６０２で示される。
【００８４】
さらに、図１６(c)は、タイムラグ差の１／２以上の初期シフトの場合の動作を示し、図１６(d)は、タイムラグ差の１／２以下の初期シフトの場合の動作を示す。図１６(c)では、初期シフトは、参照番号１６０４で示され、図１６(d)では、初期シフトは、参照番号１６０６で示される。
【００８５】
これらから分かることは、タイムラグ差の１／２の初期シフトの場合がベストに見えるが、タイムラグ差の１／２以上の初期シフトの場合にも、タイムラグ差の１／２以下の初期シフトの場合にも、シミュレーション速度の向上という結果は得られることである。
【００８６】
そこで、これについてもう少し考察すると、１／２以外のシフト率xをとってみると、シミュレーション時間の長さの比がA:B = x:(1-x)と、A:B = (1-x):xが交互に現れる。ここで、論理プロセスＡの速度をVA、論理プロセスＢの速度をVBとし、VB > VAとすると、x/VA > (1-x)/VB且つ、(1-x)/VA > VBという連立不等式が成り立つ。この連立不等式を解くと、x0を0.5より小さい値とおいて、x0 < x < 1-x0という解になる。すると、解が存在する限りは、x = 1/2は常にその範囲に含まれる。論理プロセスの実行速度が分かっている場合はx = 1/2以外の値も妥当にとりえるが、速度が不明確な場合にはx = 1/2が最も安全な解である。これが、タイムラグ差の１／２の初期シフトをとることが望ましいという理由である。
【００８７】
すなわち、本発明によれば、好適な初期シフトはタイムラグ差の１／２であるが、これには限定されず、互いに通信する論理プロセスの実行速度の比に応じて、タイムラグ差より小さい適当な初期シフトを選ぶことができる。
【００８８】
以上、自動車用の複数のシミュレーション・システムに関連して、本発明の特定の実施例を説明してきたが、本発明はこのような特定の実施例に限定されず、飛行機用のシミュレーション・システムなど、一般的な電子機械制御系システムのシミュレーション・システムに適用可能であることを、この分野の当業者であるなら、理解するであろう。
【００８９】
また、本発明を実施するための構成も、特定のプロセッサのアーキテクチャ、オペレーティング・システムなどに限定されない。
【００９０】
さらに、上記実施例は、MATLAB(R)/Simulink(R)を例にとって説明したが、これに限らず、任意のモデリング・ツールに適用可能であることを、この技術分野の当業者なら理解するであろう。
【符号の説明】
【００９１】
３０４ａ，３０４ｂ，．．．，３０４ｚ  ＣＰＵ
３０６                                メイン・メモリ
３０８                                ハードディスク・ドライブ
４０８                                接続情報ファイル
４１０                                シフト量計算モジュール
【図１】
2013084654.tif 000006
【図２】
2013084654.tif 000007
【図３】
2013084654.tif 000008
【図４】
2013084654.tif 000009
【図５】
2013084654.tif 000010
【図６】
2013084654.tif 000011
【図７】
2013084654.tif 000012
【図８】
2013084654.tif 000013
【図９】
2013084654.tif 000014
【図１０】
2013084654.tif 000015
【図１１】
2013084654.tif 000016
【図１２】
2013084654.tif 000017
【図１３】
2013084654.tif 000018
【図１４】
2013084654.tif 000019
【図１５】
2013084654.tif 000020
【図１６】
2013084654.tif 000021
【手続補正書】
【提出日】平成26年9月29日(2014.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
所与の第１の論理プロセスから、該第１の論理プロセスと通信する第２の論理プロセスにメッセージを送るタイムラグを第１のタイムラグとし、該第２の論理プロセスから前記第１の論理プロセスにメッセージを送るタイムラグを第２のタイムラグとし、前記第１のタイムラグ ＞ 前記第２のタイムラグとすると、全体のシミュレーションを開始する前に、前記第１のタイムラグと前記第２のタイムラグの差より小さい所定の初期シフト分だけ、前記第２の論理プロセスを実行させておくことにより、前記第１の論理プロセスと前記第２の論理プロセスを前記コンピュータ上で並列実行させるステップを有する、
シミュレーション・システムの動作方法。
【請求項２】
前記所定の初期シフトが、前記第１のタイムラグと前記第２のタイムラグの差の半分である、請求項１に記載のシミュレーション・システムの動作方法。
【請求項３】
前記第１の論理プロセスと前記第２の論理プロセスを、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項１に記載のシミュレーション・システムの動作方法。
【請求項４】
前記第２のタイムラグがゼロであり、前記第１のタイムラグがゼロより大きい、請求項１に記載のシミュレーション・システムの動作方法。
【請求項５】
前記第１の論理プロセスがＥＣＵエミュレータであり、前記第２の論理プロセスがプラント・シミュレータである、請求項４に記載のシミュレーション・システムの動作方法。
【請求項６】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
互いに通信する２つの論理プロセスの間で、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の値に基づき、２つの論理プロセスの間の相対的なシフト量を決定するステップと、
前記論理プロセス間の通信関係に基づき、シフト量の連立一次方程式を立てるステップと、
前記連立一次方程式の解に従って、個々の論理プロセスに初期シフトを与えて実行させるステップを有する、
シミュレーション・システムの動作方法。
【請求項７】
前記相対的なシフト量が、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の半分として計算される、請求項６に記載のシミュレーション・システムの動作方法。
【請求項８】
前記連立一次方程式の解が不定になることに応答して、解が定まるように式を減らすステップを有する、請求項６に記載のシミュレーション・システムの動作方法。
【請求項９】
前記複数の論理プロセスが、ＥＣＵエミュレータとプラント・シミュレータを含む、請求項６に記載のシミュレーション・システムの動作方法。
【請求項１０】
前記論理プロセス間を、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項６に記載のシミュレーション・システムの動作方法。
【請求項１１】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムにおいて、
前記シミュレーション・システムに、
互いに通信する２つの論理プロセスの間で、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の値に基づき、２つの論理プロセスの間の相対的なシフト量を決定するステップと、
前記論理プロセス間の通信関係に基づき、シフト量の連立一次方程式を立てるステップと、
前記連立一次方程式の解に従って、個々の論理プロセスに初期シフトを与えて実行させるステップを実行させる、
シミュレーション・システムの動作プログラム。
【請求項１２】
前記相対的なシフト量が、一方から他方への通信のタイムラグと、他方から一方への通信のタイムラグの値の差の半分として計算される、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１３】
前記連立一次方程式の解が不定になることに応答して、解が定まるように式を減らすステップを有する、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１４】
前記複数の論理プロセスが、ＥＣＵエミュレータとプラント・シミュレータを含む、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１５】
前記シミュレーション・システムに、前記論理プロセス間を、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップをさらに実行させる、請求項１１に記載のシミュレーション・システムの動作プログラム。
【請求項１６】
複数の論理プロセスをもち、コンピュータの処理によって、それらの論理プロセスの間で通信することによって処理を進めるシミュレーション・システムであって、
所与の第１の論理プロセスから、該第１の論理プロセスと通信する第２の論理プロセスにメッセージを送るタイムラグを第１のタイムラグとし、該第２の論理プロセスから前記第１の論理プロセスにメッセージを送るタイムラグを第２のタイムラグとし、前記第１のタイムラグ ＞ 前記第２のタイムラグとすると、全体のシミュレーションを開始する前に、前記第１のタイムラグと前記第２のタイムラグの差より小さい所定の初期シフト分だけ、前記第２の論理プロセスを実行させておくことにより、前記第１の論理プロセスと前記第２の論理プロセスを前記コンピュータ上で並列実行させる手段を有する、
シミュレーション・システム。
【請求項１７】
前記所定の初期シフトが、前記第１のタイムラグと前記第２のタイムラグの差の半分である、請求項１６に記載のシミュレーション・システム。
【請求項１８】
前記第１の論理プロセスと前記第２の論理プロセスを、前記初期シフト分だけずれて周期的にnullメッセージを送信しながら並列実行させるステップを有する、請求項１６に記載のシミュレーション・システム。
【請求項１９】
前記第２のタイムラグがゼロであり、前記第１のタイムラグがゼロより大きい、請求項１６に記載のシミュレーション・システム。
【請求項２０】
前記第１の論理プロセスがＥＣＵエミュレータであり、前記第２の論理プロセスがプラント・シミュレータである、請求項１９に記載のシミュレーション・システム。
【国際調査報告】
2013084654.tif 000022
2013084654.tif 000023