(57)【要約】      （修正有）【課題】使用可能なシミュレータの数が制限されず、低忠実度シミュレーションまたは単純なシステム設計に制限されることがない複数のシミュレータを含むシミュレーションを提供する。【解決手段】シミュレーション・プラットフォーム１０８の適切な動作を確保するために、マネジメント入力１３４をウェブ・インターフェース１２０に送信する。アプリケーション１３０をブラウザとすることができるが、他にアプリケーション１３０を、シミュレーション・プラットフォーム１０８の構成をコントロールするためのプロプライエタリ・アプリケーションとすることができる。【選択図】図１
2018032392.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
１つまたは複数のプロセッサと、
実行可能インストラクションを維持している１つまたは複数の非一過性のコンピュータ可読媒体と、を包含し、前記実行可能インストラクションは、前記１つまたは複数のプロセッサによって実行されるとき、前記１つまたは複数のプロセッサを、
クライアント・コンピューティング・デバイスから、協調シミュレーションであって、少なくとも第１のシミュレータおよび第２のシミュレータを含むものとする前記協調シミュレーションを構成するための１つまたは複数の入力を受信することと、
前記第１のシミュレータまたは前記第２のシミュレータのうちの少なくとも１つを実行するための第１の仮想マシンを少なくとも含むコンピューティング・リソースを割り付けることと、
前記第１のシミュレータまたは前記第２のシミュレータのうちの前記少なくとも１つの実行をコントロールするための、前記第１の仮想マシン上において実行可能な第１のシミュレーション・コントローラを構成することと、
前記第１のシミュレーション・コントローラによって、前記協調シミュレーションの実行の一部として前記第１のシミュレータまたは前記第２のシミュレータのうちの前記少なくとも１つの実行を開始することと、
前記協調シミュレーションの結果を前記クライアント・コンピューティング・デバイスに送信することと、
を包含する動作を行うべく前記１つまたは複数のプロセッサをプログラムする、
システム。
【請求項２】
前記コンピューティング・リソースを割り付けることは、前記第１のシミュレータを実行するための前記第１の仮想マシンを割り付けることと、前記第２のシミュレータを実行するための第２の仮想マシンを割り付けることを含み、前記動作が、さらに、
前記第１のシミュレータの実行をコントロールするための、前記第１の仮想マシン上において実行可能な前記第１のシミュレーション・コントローラを構成することと、
前記第２のシミュレータの実行をコントロールするための、前記第２の仮想マシン上において実行可能な第２のシミュレーション・コントローラを構成することと、
を包含する、請求項１に記載のシステム。
【請求項３】
前記動作は、更に、前記第１のシミュレーション・コントローラによって、前記第１の仮想マシン上における前記第１のシミュレータの初期化、実行、または終了のうちの少なくとも１つをコントロールするための少なくとも１つのワーカー・プロセスを構成することを包含する、請求項２に記載のシステム。
【請求項４】
更に、前記第１の仮想マシン上における前記第１のシミュレーション・コントローラによる前記第１のシミュレータの実行と前記第２の仮想マシン上における前記第２のシミュレーション・コントローラによる前記第２のシミュレータの実行を指示することによって前記協調シミュレーションの実行を指示するために第３の仮想マシン上にシミュレーション・マネージャを構成することを包含する、請求項２に記載のシステム。
【請求項５】
前記動作は、更に、
前記第１のシミュレータ上において実行可能な第１のモデルについての第１のパラメータのための範囲および増分、または
前記第１のシミュレータ上において実行可能な前記第１のモデルについての前記第１のパラメータのためのパラメータ値のリスト、
のうちの少なくとも１つを含む第１のパラメータ・スイープ情報を受信することと、
前記第２のシミュレータ上において実行可能な第２のモデルについての第２のパラメータのための範囲および増分、または
前記第２のシミュレータ上において実行可能な前記第２のモデルについての前記第２のパラメータのためのパラメータ値のリスト、
のうちの少なくとも１つを含む第２のパラメータ・スイープ情報を受信することと、
複数の前記協調シミュレーションを実行するための、前記第１のパラメータのための複数の第１の値と前記第２のパラメータのための複数の第２の値の組合せを含む複数のセットを決定することと、
を包含する、請求項１に記載のシステム。
【請求項６】
前記動作は、更に、
前記第１のシミュレータの複数のインスタンスおよび前記第２のシミュレータの複数のインスタンスを実行するための複数の仮想マシンを割り付けることと、
前記第１の値および前記第２の値のうちの少なくともいくつかの異なる組合せを使用して、複数の前記協調シミュレーションのうちの少なくともいくつかを並列に実行することと、
を包含する、請求項５に記載のシステム。
【請求項７】
前記動作は、更に、
前記協調シミュレーションのために、前記第１のシミュレータ上における実行のための第１のモデルおよび前記第１のシミュレータの別のインスタンス上における実行のための第２のモデルを決定することと、
前記第１のモデルと前記第２のモデルを合併整理済みモデルに合併整理することと、
前記協調シミュレーションの一部として前記第１のシミュレータ上において前記合併整理済みモデルを実行することと、
を包含する、請求項１に記載のシステム。
【請求項８】
前記第１のモデルと前記第２のモデルを合併整理することは、
前記第１のモデルおよび前記第２のモデルが、同一のシミュレータ上において実行可能であることを決定することと、
前記第１のモデル・ファイルおよび前記第２のモデル・ファイルからヘッダ部分を取り除くことと、
前記第１のモデル・ファイルおよび前記第２のモデル・ファイルの残りのコードを前記合併整理済みモデル・ファイルに追加して、前記第１のモデル・ファイルのコードおよび前記第２のモデル・ファイルのコードの逐次実行、交互実行、または並列実行のうちの少なくとも１つを可能にすることと、
を包含する、請求項７に記載のシステム。
【請求項９】
前記動作は、更に、
前記クライアント・コンピューティング・デバイスからの前記１つまたは複数の入力の受信に先行して、前記クライアント・コンピューティング・デバイスに、前記クライアント・コンピューティング・デバイス上にグラフィカル・ユーザ・インターフェース（ＧＵＩ）であって、前記協調シミュレーションの構成の選択を可能にする仮想コントロールを含む前記ＧＵＩを呈示するための情報を送信することと、
前記クライアント・コンピューティング・デバイスから、前記ＧＵＩを介して前記協調シミュレーションを構成するための前記１つまたは複数の入力を受信することと、
を包含する、請求項１に記載のシステム。
【請求項１０】
前記動作は、更に、
前記クライアント・コンピューティング・デバイスから、前記ＧＵＩを介して、前記第１のシミュレータと前記第２のシミュレータの間の接続タイプの表示を受信することと、
前記接続タイプに基づいて、前記第１のシミュレータと前記第２のシミュレータの間の仮想接続を構成することと、
前記クライアント・コンピューティング・デバイスから、前記ＧＵＩを介して、前記第１のシミュレータ上における実行のための第１のモデルおよび前記第２のシミュレータ上における実行のための第２のモデルの表示を受信することと、
を包含する、請求項９に記載のシステム。
【請求項１１】
前記動作は、更に、
前記クライアント・コンピューティング・デバイスから、前記ＧＵＩを介して、前記協調シミュレーションのための終了時間を少なくとも示す時間情報を受信することと、
前記クライアント・コンピューティング・デバイスから、前記ＧＵＩを介して、前記協調シミュレーションの実行を要求するインストラクションを受信することと、
少なくとも部分的に、前記インストラクションの受信に応答して、前記時間情報に従って前記協調シミュレーションを実行することと、
を包含する、請求項９に記載のシステム。
【請求項１２】
クライアント・コンピューティング・デバイスから、第１のシミュレータ、第２のシミュレータ、および第３のシミュレータを含むシミュレーションを作り出すインストラクションを受信することと、
前記クライアント・コンピューティング・デバイスから、前記第１のシミュレータ上において実行可能な第１のモデル・ファイル、前記第２のシミュレータ上において実行可能な第２のモデル・ファイル、および前記第３のシミュレータ上において実行可能な第３のモデル・ファイルの表示を受信することと、
前記第３のモデル・ファイルが前記第１のシミュレータ上上において実行可能であると決定することと、
前記第１のモデル・ファイルと前記第３のモデル・ファイルを合併整理済みモデル・ファイルに合併整理することと、
前記第１のシミュレータ上において前記合併整理済みモデル・ファイルを実行し、前記第２のシミュレータ上において前記第２のモデル・ファイルを実行することによって、前記シミュレーションを実行することと、
を包含する方法。
【請求項１３】
更に、
１つまたは複数の物理的なコンピューティング・デバイス上において、前記第１のシミュレータのための第１の仮想マシン、および第２のシミュレータのための第２の仮想マシンを割り付けることと、
前記第１のシミュレータおよび前記合併整理済みモデル・ファイルの実行をコントロールするための、前記第１の仮想マシン上において実行可能な第１のシミュレーション・コントローラを構成することと、
前記第２のシミュレータおよび前記第２のモデル・ファイルの実行をコントロールするための、前記第２の仮想マシン上において実行可能な第２のシミュレーション・コントローラを構成することと、
を包含する、請求項１２に記載の方法。
【請求項１４】
更に、
前記第１のモデルについての第１のパラメータのための範囲および増分、または
前記第１のモデルについての前記第１のパラメータのためのパラメータ値のリスト、
のうちの少なくとも１つを含む第１のパラメータ・スイープ情報を受信することと、
前記第２のモデルについての第２のパラメータのための範囲および増分、または
前記第２のモデルについての前記第２のパラメータのためのパラメータ値のリスト、
のうちの少なくとも１つを含む第２のパラメータ・スイープ情報を受信することと、
複数の前記シミュレーションを実行するための、前記第１のパラメータのための複数の第１の値と前記第２のパラメータのための複数の第２の値の組合せを含む複数のセットを決定することと、
を包含する、請求項１２に記載の方法。
【請求項１５】
複数の物理的なコンピューティング・デバイスおよびストレージを包含するシステムであって、前記物理的なコンピューティング・デバイスのうちの１つまたは複数が、
クライアント・コンピューティング・デバイスから、第１のシミュレータおよび第２のシミュレータを含むシミュレーションの表示を受信することと、
前記物理的なコンピューティング・デバイスのうちの１つまたは複数の上において、前記第１のシミュレータのための第１の仮想マシン、および第２のシミュレータのための第２の仮想マシンを割り付けることと、
前記第１のシミュレータによって実行されるべき第１のモデル・ファイルおよび前記第２のシミュレータによって実行されるべき第２のモデル・ファイルの表示を受信することと、
前記第１の仮想マシン上において前記第１のシミュレータおよび前記第１のモデル・ファイルを実行することと、
前記第２の仮想マシン上において前記第２のシミュレータおよび前記第２のモデル・ファイルを実行することと、
を行うべくプログラムされる、システム。
【請求項１６】
１つまたは複数の前記物理的なコンピューティング・デバイスは、
前記第１のシミュレータおよび前記第１のモデル・ファイルの実行をコントロールするための、前記第１の仮想マシン上において実行可能な第１のシミュレーション・コントローラを構成することと、
前記第２のシミュレータおよび前記第２のモデル・ファイルの実行をコントロールするための、前記第２の仮想マシン上において実行可能な第２のシミュレーション・コントローラを構成することと、
を行うべくプログラムされる、請求項１５に記載のシステム。
【請求項１７】
前記第１のモデル・ファイルおよび前記第２のモデル・ファイルの前記表示に基づいて、
第１のシミュレーション・コントローラが第１のストレージ・ロケーションから前記第１のモデル・ファイルを検索するべく構成され、
第２のシミュレーション・コントローラが第２のストレージ・ロケーションから前記第２のモデル・ファイルを検索するべく構成される、
請求項１５に記載のシステム。
【請求項１８】
１つまたは複数の前記物理的なコンピューティング・デバイスは、
前記第１のシミュレータ上において実行可能な前記第１のモデルについての第１のパラメータのための範囲および増分、または
前記第１のシミュレータ上において実行可能な前記第１のモデルについての前記第１のパラメータのためのパラメータ値のリスト、
のうちの少なくとも１つを含む第１のパラメータ・スイープ情報を受信することと、
前記複数の値のうちの少なくともいくつかを使用する複数のシミュレーションを並列に実行するために前記第１のパラメータのための複数の値を決定することと、
を行うべくプログラムされる、請求項１５に記載のシステム。
【請求項１９】
１つまたは複数の前記物理的なコンピューティング・デバイスは、
前記第１のシミュレータ上において、第３のモデルおよび第４のモデルが実行可能であると決定することと、
前記第３のモデルおよび前記第４のモデルを、合併整理済みモデルであって前記第１のモデルであるとする合併整理済みモデルに合併整理することと、
を行うべくプログラムされる、請求項１５に記載のシステム。
【請求項２０】
前記第１の仮想マシン上における前記第１のシミュレータおよび前記第１のモデル・ファイルの実行は、前記第１のシミュレータ上において前記第３のモデルおよび前記第４のモデルの逐次実行、交互実行、または並列実行のうちの少なくとも１つを包含する、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この数十年にわたって、乗り物は、主として機械的なデバイスから、エンジン・コントロール、パワートレイン、サスペンション、制動、安全、およびエンターテインメントといったすべての主要なシステム内に埋め込みソフトウエアを伴う統合された電子機械デバイスへと変化した。１つの例として、今日の乗り物は、いくつかの異なるネットワーク実装のうちのいずれか、たとえばコントローラ・エリア・ネットワーク（ＣＡＮ）（高速ＣＡＮおよび低速またはフォールト・トレラントなＣＡＮを含めることができる）を使用して、互いとの通信のために接続された電子コントロール・ユニット（ＥＣＵ）の複雑なネットワークを含む。乗り物が非常に多くのＥＣＵを含んでいることがあり、個々のＥＣＵが、エンジン、トランスミッション、ボディ、ステアリング、ブレーキ、インフォテイメント／ナビゲーション等といった具体的な応用のためにプログラムされている。たとえば、乗り物が５０乃至１００を超えるＥＣＵを含み、全体で５０００万ラインのソフトウエア・コードを実行することがある。さらに、これらの数が、乗り物がますます自律的になるに従って今後の数年内に実質的に増加することが予測される。
【背景技術】
【０００２】
その種の複雑な電気／電子（Ｅ／Ｅ）アーキテクチャおよびソフトウエアは、包括的、柔軟、かつ系統的な開発および動作確認環境を必要とすることがあり、特に、システム・レベルまたは乗り物レベルの開発についてはそれが当て嵌まる。たとえば、競争力を維持するために、概して製造者は、開発サイクルを低減して製品化時間の短縮を望み、さらに、スケーリングの経済性を達成するために共通プラットフォームの使用を望むこともある。近代的な乗り物において増え続ける電子部品の使用は、複雑性を導き、設計段階において試験および検証がなされなければ、信頼性の低下および、より高いリコール発生率につながる可能性があり、幾つもの異なる乗り物モデルに使用される共通プラットフォームに生じた場合には、特に問題となり得る。したがって、すべての電子システムについて開発プロセスの間にソフトウエア試験が行われることが望ましい。
【先行技術文献】
【特許文献】
【０００３】
優先権の基礎となる米国特許出願１５／２４７，９７８の明細書において、先行技術文献が記載されていないので、先行技術文献の記載を省略した。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さらにまた、自動車設計エンジニアリング・チームには、ますます複雑な試験のシミュレーションを統合的な環境において実施する仕事が課せられるが、既存のツールでは、この挑戦に追いついていかれない。たとえば、単純な同種の協調シミュレーションは、１つのシミュレータ・ベンダからの複数のツールを使用して、または場合によっては、複数のシミュレータ・ベンダからのいくつかのツールを使用して達成できるかも知れない。協調シミュレーションにおいては、連成問題を形成する複数の異なる構成要素またはサブシステムを、分散的な態様でモデル化してシミュレートできる。このモデリングは、任意の特定の連成問題とは独立した構成要素レベルまたはサブシステム・レベルにおいて行われることがある。協調シミュレーションの間においては、それらのモデルが、異なる構成要素またはサブシステムのインタラクションをシミュレートするべく、データをほかのモデルに渡し、またはそれらからデータを受け取ることができる。しかしながら、その種の協調シミュレーションは、しばしば、シミュレーション処理の実施に最適構成されていない可能性のあるパーソナル・コンピュータ（ＰＣ）上において実行されることがある。それに加えて、異なるタイプの複数のシミュレーションを含む異種の協調シミュレーションの実行のためのデータ・エントリおよびセットアップ要件は、通常、労力の負担が大きく、時間を要するものとなる可能性がある。その結果、従来的な協調シミュレーションのオプションは、使用可能なシミュレータの数が制限され、さらに低忠実度シミュレーションおよび／または単純なシステム設計に制限されることがある。
【課題を解決するための手段】
【０００５】
いくつかの実装は、複数のシミュレータの同時実行を含む協調シミュレーション等のシミュレーションを実施するためのアレンジメントおよびテクニックを含む。たとえば、ネットワーク上の１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレーションを構成するための１つまたは複数の入力を受信することができ、当該シミュレーションは、少なくとも第１のシミュレータおよび第２のシミュレータを含む。１つまたは複数のコンピューティング・デバイスは、第１のシミュレータまたは第２のシミュレータのうちの少なくとも１つを実行するための第１の仮想マシンを少なくとも含むコンピューティング・リソースを割り付けることができる。第１の仮想マシン上において実行可能な第１のシミュレーション・コントローラは、第１のシミュレータまたは第２のシミュレータのうちの少なくとも１つの実行をコントロールするために構成できる。第１のシミュレーション・コントローラは、協調シミュレーションの実行の一部として第１のシミュレータまたは第２のシミュレータのうちの少なくとも１つの実行を開始できる。協調シミュレーションの結果は、クライアント・コンピューティング・デバイスに送信できる。
【０００６】
別の例として、１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスからインストラクションを受信し、第１のシミュレータ、第２のシミュレータ、および第３のシミュレータを含むシミュレーションを作り出すことができる。それに加えて、１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、第１のシミュレータ上において実行可能な第１のモデル・ファイル、第２のシミュレータ上において実行可能な第２のモデル・ファイル、および第３のシミュレータ上において実行可能な第３のモデル・ファイルの表示を受信できる。１つまたは複数のコンピューティング・デバイスは、第３のモデル・ファイルが第１のシミュレータ上において実行可能であると決定し、第１のモデル・ファイルと第３のモデル・ファイルを合併整理済みモデル・ファイルに合併整理することができる。１つまたは複数のコンピューティング・デバイスは、第１のシミュレータ上において合併整理済みモデル・ファイルを、第２のシミュレータ上において第２のモデル・ファイルを実行することによってこのシミュレーションを実行できる。
【発明の効果】
【０００７】
第１のシミュレーション・コントローラは、協調シミュレーションの実行の一部として第１のシミュレータまたは第２のシミュレータのうちの少なくとも１つの実行を開始できる。協調シミュレーションの結果は、クライアント・コンピューティング・デバイスに送信できる。
【０００８】
また、１つまたは複数のコンピューティング・デバイスは、第１のシミュレータ上において合併整理済みモデル・ファイルを、第２のシミュレータ上において第２のモデル・ファイルを実行することによってこのシミュレーションを実行できる。
【図面の簡単な説明】
【０００９】
次に、添付図面を参照して詳細に説明する。図面において、参照番号の最左翼の数字（１つまたは複数）は、その参照番号が最初に現れた図面を識別する。異なる図面内における同一の参照番号の使用は、類似または同一のアイテムまたは特徴を示す。
【図１】いくつかの実装に従ったスケーラブル・シミュレーションのためのシステムの一例のアーキテクチャを図解したブロック図である。
【図２】いくつかの実装に従ったシミュレーションを実施するための構成要素および動作を図解したブロック図である。
【図３】いくつかの実装に従ったシミュレーション・ジョブの作成のための一例のＧＵＩを図解した説明図である。
【図４】いくつかの実装に従った新しいシミュレーションの作成のために呈示できる一例のＧＵＩを図解した説明図である。
【図５】いくつかの実装に従ったシミュレーション・アプリケーションのタイプの選択のために呈示できる一例のＧＵＩを図解した説明図である。
【図６】いくつかの実装に従ったモデルの選択およびシミュレーション接続の定義のために呈示できる一例のＧＵＩを図解した説明図である。
【図７】いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図６のＧＵＩの一例を図解した説明図である。
【図８】いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図６のＧＵＩの一例を図解した説明図である。
【図９】いくつかの実装に従ったポート構成の検証のために呈示できる図６のＧＵＩの一例を図解した説明図である。
【図１０】いくつかの実装に従ったシミュレーション時間の設定のために呈示できる一例のＧＵＩを図解した説明図である。
【図１１】いくつかの実装に従ったシミュレーションの確認のために呈示できる一例のＧＵＩを図解した説明図である。
【図１２】いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図１１のＧＵＩの一例を図解した説明図である。
【図１３】いくつかの実装に従ったシミュレーションを構成するための一例のプロセスを図解したフローチャートである。
【図１４】いくつかの実装に従った一例の協調シミュレーションを図解したブロック図である。
【図１５】いくつかの実装に従ったモータ・コントローラと高忠実度インバータ／モータ・モデルの間のインタラクションの一例を図解したブロック図である。
【図１６】いくつかの実装に従った図１４の協調シミュレーション内におけるＣＡＮルータおよび仮想ＣＡＮバスの動作の一例を図解したブロック図である。
【図１７】いくつかの実装に従った複数の物理的なコンピューティング・デバイス上における実行のために構成された図１６の協調シミュレーション・アレンジメントの一例を図解したブロック図である。
【図１８】いくつかの実装に従った複数のｖＥＣＵを含む一例の協調シミュレーションを図解したブロック図である。
【図１９】いくつかの実装に従ったネットワーク・コンピューティング・リソースの物理層の一例のアーキテクチャを図解したブロック図である。
【図２０】いくつかの実装に従った一例のコンピューティング・デバイスの選択した構成要素を図解したブロック図である。
【図２１】いくつかの実装に従ったシミュレーションを実行するための一例のプロセスを図解したフローチャートである。
【図２２】いくつかの実装に従ったシミュレーション・マネージャ・コンピューティング・デバイスおよびシミュレーション・コンピューティング・デバイスを含む一例のアレンジメントを図解したブロック図である。
【図２３】いくつかの実装に従ったパラメータ試験セット内におけるパラメータ・スイープ情報の一例を図解したブロック図である。
【図２４】いくつかの実装に従ったパラメータ・スイープを含むシミュレーションを実行するための一例のプロセスを図解したフローチャートである。
【図２５】いくつかの実装に従ったモデルの合併整理の一例を図解したブロック図である。
【図２６】いくつかの実装に従ったモデルの合併整理のための一例のプロセスを図解したフローチャートである。
【図２７】いくつかの実装に従ったシミュレーションを実行するための一例のプロセスを図解したフローチャートである。
【発明を実施するための形態】
【００１０】
いくつかのここでの実装は、リアルなハードウエア・ベースの自動車埋め込みシステムをエミュレートすることが可能なネットワーク・ベースのシミュレーション・プラットフォームのためのテクニックおよびアレンジメントに指向されている。たとえば、シミュレーション・プラットフォームは、ネットワーク・コンピューティング・リソース上において構成される複数の仮想マシン等の複数のコンピューティング・デバイス上における協調実行のためのシミュレータをユーザが構成することを可能にするグラフィカル・ユーザ・インターフェースを含む。いくつかの例においては、シミュレータの同時実行が、シミュレーション・ノード上においてそれぞれのシミュレータを実行するワーカーをマネージするシミュレーション・コントローラによってコントロールされ得る。シミュレーション・マネージャ・ノード上において実行するシミュレーション実行ワーカーは、１つまたは複数の関係シミュレーション・ノードにわたるシミュレーション・プロセスを調和させることができる。
【００１１】
さらにまた、いくつかの例においては、シミュレーションの実行に先行して、そのシミュレーションにおいて使用されるべき複数のモデルが自動的に合併整理され得る。たとえば、シミュレーション・プラットフォームは、非トリビアル・ライセンス料金の支払いを要求することができるプロプライエタリ・シミュレータの使用を可能にできる。したがって、ここでの実装は、複数の小さいモデルを単一のより大きなモデルに合併整理してシミュレーションの間に使用される多くのライセンスを低減することができる。モデル合併整理マスタ・プログラムは、同一のライセンスを使用するモデルを決定すること、それらのモデルからヘッダを除去すること、およびそれら複数のモデルのそれぞれのコア定義のためのラッパーを生成し、たとえばシミュレーションの間に複数のモデルの逐次実行を可能にすることができる。
【００１２】
それに加えて、いくつかの例は、自動化されたパラメータ・スイープを可能にする能力を含むことができる。たとえば、ユーザが、システムについての最適パフォーマンスの決定等のために、パラメータの異なるセットを用いてそのシステムを実際に試すことを望むかも知れない。したがって、ここでのシミュレーション・プラットフォームは、ユーザがシミュレーションへの適用を望む１つまたは複数のパラメータの各パラメータについて、自動化されたパラメータ・セットの生成を可能にできる。シミュレーション・プラットフォームは、選択されたモデルのインスタンスを、生成されたパラメータ・セットを用いて生成し、漸増ステップ・サイズを用いる最小から最大の範囲に基づく形または離散的な値のリストに基づく形等を用いて、指定済みパラメータの自動化されたパラメータ・スイープをシミュレーションの間に提供できる。さらに、シミュレーション・プラットフォームは、異なるパラメータを使用するシミュレーションを異なる仮想マシン上に展開することによって、並列に、異なるパラメータ・セットを用いてインスタンス生成されたモデルを走らせることができる。それに加えて、シミュレーション・プラットフォームは、複数のパラメータの多様な組合せの試験等のために、多モデルおよび多パラメータのパラメータ・スイープを可能にできる。
【００１３】
いくつかの場合においては、シミュレーション・プラットフォームを使用し、異なるタイプの複数のシミュレータの同時実行を含むシミュレーションを構成し、実行することができる。たとえば、シミュレーション・プラットフォームは、個別の構成要素の機能のシミュレーション、複数の異なる構成要素のインタラクションのシミュレーション、システムのシミュレーション、複数のシステムのシミュレーション、乗り物全体のシミュレーション、またはこれらの類を可能にできる。シミュレーション・プラットフォームは、対応する実世界の構成要素の間における実世界の接続のシミュレーションのために、選択されたシミュレータの間の適切な接続タイプを確立できる。さらにシミュレーション・プラットフォームは、試験目標、動作確認、またはこれらの類を達成するためにユーザによって準備された１つまたは複数のモデルとともにユーザが採用できる事前構成済みシミュレーションを提供できる。
【００１４】
いくつかの例においては、シミュレーション・プラットフォームが、乗り物レベルでシミュレーションを生成するために、複数のＥＣＵの協調シミュレーションおよび関連付けされた構成要素およびシステムの作成を可能にできる。シミュレーション・プラットフォームは、複数の仮想ＥＣＵ（ｖＥＣＵ）およびそのほかのシミュレートされる構成要素またはシステムに関する異なるＥ／Ｅアーキテクチャの仮想実験、試験、および比較を可能にすることによって、乗り物システムの設計最適化を可能にする。ここでのシミュレーション・プラットフォームは、さらに、マイクロコントローラおよびハードウエア構成要素のパフォーマンスの試験および比較を可能にする。ここでのシミュレーション・プラットフォームは、乗り物レベルのシミュレーションをサポートするべく構成でき、それが、乗り物の設計段階の非常に初期において構成要素レベル、システム・レベル、および乗り物レベルのソフトウエア開発を可能にし、また乗り物のための全体的な開発時間を実質的に短縮できる。
【００１５】
いくつかの例においては、仮想ＣＡＮバスを、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネット・プロトコル）上に構築された協調シミュレーション・バスとして構成できる。したがって、複数の異なるｖＥＣＵおよびそのほかのシミュレータ・モデルを、複数の異なる仮想および／または物理コンピューティング・デバイス上に構成することができ、また、異なる仮想および／または物理コンピューティング・デバイスにおいて展開されているにもかかわらず、仮想ＣＡＮバスにわたってＣＡＮプロトコルを使用して通信することが可能となり得る。さらにまた、ここでの実装は、仮想ＣＡＮバス上における何らかのＣＡＮトラフィックをマネージするべく提供できる仮想ＣＡＮルータを含む。たとえば、仮想ＣＡＮルータを独立のｖＥＣＵ上において実行し、イーサネット(登録商標)、光ファイバ等々を含む多様なネットワーク構成にわたって乗り物レベルのＣＡＮトラフィックを送受できる。１つの例として、ＣＡＮルータを実行するｖＥＣＵを、１つは乗り物レベルにおいてより低い忠実度を伴い、もう１つはシステム・レベルにおいてより高い忠実度を伴う２つの異なる層のシミュレーションに接続できる。
【００１６】
ここでのシミュレーション・プラットフォームは、インターネットまたはそのほかのネットワークにわたってアクセスできるネットワーク・コンピューティング・リソース（しばしば、クラウド・コンピューティング・リソースと呼ばれる）上に構成された複数の物理マシンおよび／または複数の仮想マシンといった複数のコンピューティング・デバイスを使用して実装できる。たとえば、ネットワーク・コンピューティング・リソース上における実装時に、ここでのシミュレーション・プラットフォームは、実質的に任意の望ましいスケールに拡張可能にすることができ、したがって、乗り物内のいくつかのまたはすべてのＥＣＵをはじめ、そのほかの乗り物の構成要素およびサブシステムのシミュレーションに使用することができる。したがって、シミュレーション・プラットフォームは、設計チーム等のユーザが複雑な高忠実度の大規模なシステム・レベルおよび乗り物レベルの協調シミュレーションを行うことを可能にする。
【００１７】
さらにまた、ここでのシミュレーション・プラットフォームは、簡素化されたシミュレーションのセットアップ、開始、および出力機能を含み、大規模の高忠実度協調シミュレーションを可能にする。たとえば、ユーザは、ウェブ・ポータルを介してシミュレーション・プラットフォームにアクセスすることができ、ユーザに、シミュレーションを作成するためのインストラクションをステップ・バイ・ステップで提供するグラフィカル・ユーザ・インターフェース（ＧＵＩ）を使用することができる。したがって、ウェブ・ポータルは、シミュレーションを走らせるための高パフォーマンス・コンピューティング（ＨＰＣ）パワーへのアクセスを随時随所で提供することができる。さらに、ユーザが自分たちのコンピュータ上に、シミュレーションを走らせるべく特化されたソフトウエアをインストールしていない可能性もあるが、シミュレーション・プラットフォームにアクセスするブラウザを使用することはできる。ここでの実装は、多様な異なるシミュレータおよび言語、個々のシミュレータ内の複数のソルバ、複数のドメインおよび物理、および複数の抽象化レベルをサポートできる。ここでの例においては、この機能が、ＨＰＣクラウド環境内で利用可能となり、異種協調シミュレーションのためのスケーラビリティ、パフォーマンスおよびシミュレーション・ソフトウエア・ライセンス管理を提供できる。
【００１８】
それに加えて、ユーザは、複数の高忠実度マイクロコントローラ・モデル・ベースのｖＥＣＵの試験を含む、異なる抽象化レベルを伴うモデルを同時に試験できる。この抽象化レベルは、複雑な仮想システム・レベルおよび乗り物レベルのシミュレーションの大規模な試験を可能にする。それに加えて、ネットワーク・コンピューティング・リソースの使用は、ユーザに、ＨＰＣパワーへのアクセスを提供でき、仮想マシンにわたる作業負荷の分散を可能にし、それがさらにシステム・レベルおよび乗り物レベルのシミュレーションの効率を向上させる。
【００１９】
シミュレーションのセットアップに続いて、ユーザは、シミュレーションの終了時間および一度のシミュレーションのステップ・サイズを入力することができるが、この情報は、そのシミュレーションの中で使用されるすべてのシミュレータに対するグローバルな設定として適用できる。シミュレーション・プラットフォーム内に組み込まれる自動化を提供するＧＵＩは、セットアップを著しく簡素化し、ユーザの少なからぬセットアップ時間を、特により複雑なシミュレーションについて節約できる。その結果として、シミュレーション・プラットフォームのために提供されたＧＵＩは、シミュレーションの実行に必要とされるデータ入力の量を有意に低減でき、したがって、リワークが生じる入力誤りの可能性を低減する。さらにまた、クラウド環境またはそのほかのネットワーク・コンピューティング環境の使用は、スケーラブルな高パフォーマンスのコンピューティング・リソースへのアクセスを提供し、それによって設計チームは、大規模でより複雑なシミュレーションを走らせることが可能になる。たとえば、ここでの実装は、複数の仮想マシンにわたってシミュレータおよび作業負荷を分散し、システム・レベルおよび乗り物レベルのシミュレーションの効率を高めることができる。したがって、自動化されたセットアップによって提供される時間節約に起因して、さらにネットワーク・コンピューティング・インフラストラクチャの高パフォーマンスのコンピューティング・ケイパビリティおよびスケーラブル・リソースに起因して、ここでのシミュレーション・プラットフォームは、従来的なシステムを用いては可能でなかった高忠実度の大規模で複雑なシステム・レベルおよび乗り物レベルの協調シミュレーションの作成を可能にする。
【００２０】
それとは別に、ここでのプラットフォームは、仮想ハードウエア・イン・ザ・ループ・シミュレーション（ｖＨＩＬＳ）ケイパビリティを、ハードウエア・イン・ザ・ループ・シミュレーション（ＨＩＬＳ）に加えて提供できる。たとえば、ＨＩＬＳは、実際のマイクロコントローラ・ハードウエアの、試験中のシステムの挙動をシミュレートするシミュレータへの接続を含むことができる。しかしながら、実際のハードウエアの使用は、シミュレーション・システムの柔軟性および有用性を制限することがある。したがって、ここでの例は、仮想マイクロコントローラまたはそのほかのプロセッサ・シミュレータおよび試験中のシステムのモデルを含むシミュレーションを含むことができるｖＨＩＬＳの使用も可能にする。ｖＨＩＬＳの使用は、設計エンジニアに、多数のｖＥＣＵを含むことがある複雑な仮想システム設計の試験を迅速に、ＨＩＬＳ試験テクニックを用いて可能となるよりより早期の設計プロセスにおいて行わせる。その種の試験は、製品の品質を有意に向上させ、設計および製品開発のリワークを最小化し、かつ製品化時間をはかどらせることができる。したがって、ここでのシミュレーション・プラットフォームは、開発プロセスにおける早期のシミュレーションおよび試験を可能にできる。
【００２１】
ここでのシミュレーション・プラットフォームは、ユーザが、一度に多数の異種モデルを用いて作業することを可能にする。ＧＵＩによって提供される自動化されたセットアップおよびシミュレーション開始ケイパビリティは、大規模で複雑な、混合ドメインおよび物理の協調シミュレーションを可能にする。たとえば、シミュレーション・プラットフォームは、伝統的なモデル分割テクニックと高パフォーマンスのネットワーク・ベースのコンピューティング・リソースの自動割付を結合し、シミュレーション実行時間を短縮することができる。このようにユーザは、従来のソリューションを用いるより、より大きく、より複雑な異種の協調シミュレーションを行うことができる。たとえば、設計チームは、より多くの機能エリアおよび組織から、たとえばエンジン、ブレーキ、シャーシ、燃料、安全、および任意のそのほかの内部または外部のチームから、より多くのモデルを追加することが可能である。
【００２２】
論考の目的のため、いくつかの実装の例を、ネットワーク・コンピューティング・リソース上における複数のＥＣＵの協調シミュレーションの環境において説明する。しかしながら、ここでの実装が、提供される特定の例に限定されることはなく、ほかのタイプのコンピューティング環境、ほかのシステム・アーキテクチャ、ほかのタイプのシミュレーション等々に拡張されることが許され、それについてはここでの開示に照らしてこの分野の当業者には明らかなものとなるであろう。
【００２３】
図１は、いくつかの実装に従ったスケーラブル・シミュレーションのためのシステム１００の一例のアーキテクチャを図解している。この例においては、ネットワーク・コンピューティング・リソース１０２が、複数のコンピューティング・デバイス１０４および関連付けされたストレージ１０６を含むことができる。以下に追加を論じているとおり、複数のコンピューティング・デバイス１０４は、多数の方法のいずれかで具体化できる１つまたは複数のサーバまたはそのほかのタイプのコンピューティング・デバイスを含むことができる。たとえば、サーバの場合においては、アプリケーション、プログラム、モジュール、またはそのほかの機能構成要素、およびデータ・ストレージの少なくとも一部を、少なくとも１つのサーバ上で実装すること、たとえば、サーバのクラスタ、サーバ・ファーム、またはデータ・センタ、クラウド・ホスト付きコンピューティング・サービス等々の中で実装することができるが、追加として、または代替としてほかのコンピュータ・アーキテクチャが使用されることもある。さらに、ストレージ１０６は、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、ＲＡＩＤストレージ・システム、シン・プロビジョン型ストレージ・システム等々を含むことができる。
【００２４】
ネットワーク・コンピューティング・リソース１０２は、仮想マシン・リソース・マネージャ１１４によってリソース・プール１１２から割り付けることができる複数の仮想マシン１１０を含むことができるシミュレーション・プラットフォーム１０８を提供するべく構成できる。以下に追加を論じるとおり、仮想マシン・リソース・マネージャ１１４は、特定のシミュレーション・ジョブのためのシミュレーション・プラットフォーム１０８を提供するためにリソース・プール１１２からリソースを割り付けることができる。１つの例として、別々の仮想マシンを、シミュレーション内に含められるべき各ｖＥＣＵのために割り付けることができる。
【００２５】
それに加えて、データベース・マネージャ１１６が、シミュレーション・プラットフォーム１０８のための情報をストアし、かつ提供するべく構成されたデータベースを含むことができるストレージ１１８にアクセスすることができる。ストレージ１１８内に維持され、データベース・マネージャ１１６によってマネージされる情報の例には、シミュレーション・モデル、ユーザ情報、ライセンス情報、シミュレーション・ログ、シミュレーション結果、およびこれらの類を含めることができる。ネットワーク・コンピューティング・リソース１０２は、さらに、ユーザ・デバイスまたはその類といった１つまたは複数のクライアント・コンピューティング・デバイス１２２との１つまたは複数のネットワーク１２４にわたる通信が可能なウェブ・インターフェース１２０を含むことができる。
【００２６】
１つまたは複数のネットワーク１２４は、任意タイプのネットワークを含むことができ、それには、ローカル・エリア・ネットワーク（ＬＡＮ）；インターネット等のワイド・エリア・ネットワーク（ＷＡＮ）；セルラ・ネットワーク、Ｗｉ−Ｆｉ等の局所的な無線ネットワーク、および／または近距離無線通信等の無線ネットワーク；光ファイバ、イーサネット(登録商標)、ファイバ・チャンネルを含む有線ネットワーク、または任意のそのほかのこの種のネットワーク、直接有線接続、またはこれらの任意の組合せを含むことができる。したがって、１つまたは複数のネットワーク１２４は、有線および／または無線通信テクノロジのいずれも含むことができる。その種の通信のために使用される構成要素は、少なくとも部分的に、ネットワークのタイプ、選択された環境、またはこれらの両方に依存し得る。その種のネットワークにわたる通信のためのプロトコルは、周知であり、この中で詳しく論じることはしない。したがって、クライアント・コンピューティング・デバイス１２２（１つまたは複数）およびマネジメント・コンピューティング・デバイス１３２（１つまたは複数）は、有線または無線接続およびそれらの組合せを使用し、１つまたは複数のネットワーク１２４にわたってネットワーク・コンピューティング・リソース１０２と通信することが可能である。
【００２７】
さらに、シミュレーション・マネージャ１２６が、シミュレーション・プラットフォーム上におけるシミュレーションの実行をマネージできる。たとえば、シミュレーション・マネージャ１２６は、ユーザが特定のシミュレーションを実行するための充分なライセンスを有していることを保証できる。さらに、シミュレーション・マネージャ１２６は、シミュレーションの実行のタイミングをコントロールできる。１つの例として、ユーザが第１のシミュレーションを実行中であり、かつ実行のために第２のシミュレーションを提出したとすると、シミュレーション・マネージャ１２６は、そのユーザが有効で充分なライセンスを有しているか否かをチェックし、否であれば、第１のシミュレーションの実行の完了に続いて充分な数のライセンスが解放されるまで第２のシミュレーションの実行を遅延できる。
【００２８】
それに加えて、システム・マネージャ１２８または管理者等が、マネジメント・コンピューティング・デバイス１３２上においてアプリケーション１３０を使用して、シミュレーション・プラットフォーム１０８の多様な側面をコントロールするため、たとえばシミュレーション・プラットフォーム１０８の適切な動作を確保するために、マネジメント入力１３４をウェブ・インターフェース１２０に送信することができる。いくつかの例においては、アプリケーション１３０をブラウザとすることができるが、ほかの例においてはアプリケーション１３０を、シミュレーション・プラットフォーム１０８の構成をコントロールするためのプロプライエタリ・アプリケーションとすることができる。
【００２９】
それに加えて、ユーザ１３６とクライアント・コンピューティング・デバイス１２２とを関連付けすることができ、ユーザは、ウェブ・インターフェース１２０を通じてシミュレーション・プラットフォーム１０８にアクセスするために、クライアント・コンピューティング・デバイス１２２上のブラウザ１３８を使用できる。たとえば、ユーザ１３６は、ウェブ・インターフェース１２０にログインし、ユーザ１３６に対してＧＵＩを呈示するためにブラウザ１３８によって使用され得るウェブ・ページ、実行可能スクリプト、またはこれらの類といったＧＵＩ情報１４０を受け取ることができる。たとえば、ユーザ１３６は、シミュレーション・プラットフォーム１０８上において実行するための所望のシミュレーションを構成するために、ブラウザ１３８とインタラクションしてユーザ入力１４２をウェブ・インターフェース１２０に提供することができる。さらにまた、いくつかの例においては、ユーザ１３６が、ストレージおよび／またはデータベース１１８内にストアできる１つまたは複数のモデル１４４をアップロードすることができる。それに加えて、またはそれに代えて、ユーザ１３６は、以下に説明を追加するとおり、ストレージおよび／またはデータベース１１８内にすでにある１つまたは複数のモデルを使用することができる。仮想マシン・リソース・マネージャ１１４、データベース・マネージャ１１６、ウェブ・インターフェース１２０、およびシミュレーション・マネージャ１２６のそれぞれは、１つまたは複数のコンピュータ・プログラム、それらの一部、またはそのほかの、物理的なコンピューティング・デバイス１０４のうちの１つまたは複数の上で実行できる実行可能コードに対応するとし得る。いくつかの例においては、これらのコンピュータ・プログラムの一部または全部を同一の物理的マシン１０４上および／または同一の仮想マシン１１０上で実行することができるが、ほかの例においては、これらのコンピュータ・プログラムの一部または全部、別々の物理的マシン、別々の仮想マシン等々の上で実行することができる。
【００３０】
いくつかの例においては、ユーザ１３６が、ブラウザ１３８によって呈示されるＧＵＩを使用して、プロセッサ・シミュレータ（ｖＥＣＵ）、プラント・シミュレータ、および／またはそのほかのタイプのシミュレータ等の複数のシミュレータ１４８を含めることができる所望のシミュレーションを構成できる。各シミュレータは、実世界の構成要素によって生成または受信される１つまたは複数の信号の生成または受信等のために、実世界の構成要素をエミュレートするべく構成できる。
【００３１】
１つの例として、シミュレータ１４８のうちの１つまたは複数がｖＥＣＵとなる場合には、そのｖＥＣＵを、実際のＥＣＵをエミュレートするべく構成できる。ＥＣＵ（電子コントロール・ユニット）は、乗り物内のシステム、サブシステム、または構成要素のうちの１つまたは複数をコントロールする任意の埋め込みシステムを指す一般的な用語である。ＥＣＵ上にインストールされているソフトウエアおよびそのＥＣＵの意図された目的に応じて、ＥＣＵは、バッテリ・マネジメント・ユニット（ＢＭＵ）、ボディ・コントロール・モジュール（ＢＣＭ）、ブレーキ・コントロール・モジュール（ＢＣＭまたはＥＢＣＭ）、中央コントロール・モジュール（ＣＣＭ）、中央タイミング・モジュール（ＣＴＭ）、ドア・コントロール・ユニット（ＤＣＵ）、電子／エンジン・コントロール・モジュール（ＥＣＭ）、汎用電子モジュール（ＧＥＭ）、ヒューマン−マシン・インターフェース（ＨＭＩ）、モータ・コントロール・ユニット（ＭＣＵ）、パワー・ステアリング・コントロール・ユニット（ＰＳＣＵ）、パワートレイン・コントロール・モジュール（ＰＣＭ）、シート・コントロール・ユニット（ＳＴＣＵ）、速度コントロール・ユニット（ＳＣＵ）、サスペンション・コントロール・モジュール（ＳＣＭ）、テレマティック・コントロール・ユニット（ＴＣＵ）、トランスミッション・コントロール・モジュール（ＴＣＭ）、および多様なそのほかのタイプのコントロール・モジュールまたはコントロール・ユニット等の多様な異なるタイプにカテゴリ分けすることができる。これらのＥＣＵは、しばしばまとめて乗り物のコンピュータと呼ばれるが、上で述べたとおり、乗り物内には５０、１００、またはそれを超える数のＥＣＵが存在する。さらに、場合によっては、１つのアッセンブリがいくつかの独立したＥＣＵを組み込んでいることがある。たとえば、ＰＣＭが、エンジンおよびトランスミッション両方のためのＥＣＵを含むことがある。
【００３２】
各ＥＣＵは、プロセッサ、メモリ、およびデジタルおよび／またはアナログ通信インターフェースを含むことができる。特定のＥＣＵによる実行のためのソフトウエアは、それぞれのＥＣＵに関連付けされたメモリにストアすることができ、そのＥＣＵが埋め込みシステムとして動作することを可能にする。ＥＣＵは、通常、乗り物のバスを越えて乗り物のバス・プロトコルに従って互いに通信できる。一例として述べるが、コントローラ・エリア・ネットワーク・バス（ＣＡＮバス）プロトコルは、ＥＣＵおよびそのほかのデバイスがホスト・コンピュータなしに互いに通信することを可能にする乗り物のバス・プロトコルである。ＣＡＮバスは、少なくとも２つの異なるタイプを含むことができる。たとえば、高速ＣＡＮは、バスが環境の一端から他端に走る応用に使用できるが、ノードのグループがまとまって接続されるところではフォールト・トレラントＣＡＮがしばしば使用される。
【００３３】
ここでのシミュレーションにおいては、ｖＥＣＵを、物理的なコンピューティング・デバイス等のコンピューティング・デバイスまたは物理的なコンピューティング・デバイス上において実行される仮想マシンによって実行可能なプロセッサ・シミュレータとすることができる。したがって、ここで使用するとき、ｖＥＣＵは、前述したタイプのＥＣＵのいずれか、または多様なそのほかの乗り物コントロール・ユニット、コントロール・モジュール、またはこれらの類のいずれかのプロセッサ・シミュレータを含むことができる。さらに、ｖＥＣＵが、実際のＥＣＵプロセッサの実際の機能のエミュレーション、たとえば特定の製造者によって提供される実際のＥＣＵプロセッサのエミュレーションを行うプロセッサ・シミュレータであることから、ユーザは、実際のＥＣＵ上にインストールされるべく意図されたコントロール・ソフトウエア等のソフトウエアを提供すること、およびそのｖＥＣＵ上においてそのコントロール・ソフトウエアを実行して、そのコントロール・ソフトウエアが意図されたとおりに動作するか否かを決定することができる。さらに、以下において論じられているとおり、ここでの実装は、実際の乗り物のＣＡＮバス上のＥＣＵの間における通信をエミュレートするために、互いの通信のための複数のｖＥＣＵの接続を可能にする仮想ＣＡＮバスおよび仮想ＣＡＮルータを提供できる。それに加えて、実世界において実際のＥＣＵまたはそのほかの構成要素が接続されることになるシステム（すなわち、『プラント』）をシミュレートするべくエミュレートされたセンサ入力を提供すること等のために、ほかのタイプのシミュレータをｖＥＣＵおよび／またはほかのタイプのシミュレータに、ほかのタイプの接続（たとえば、仮想信号バス）を通じて接続することができる。
【００３４】
この例においては、ユーザが、シミュレーションのために、複数のシミュレータ１４８（１）、・・・、１４８（Ｍ）を構成したと仮定する。それに応答して、仮想マシン・リソース・マネージャ１１４は、シミュレーション・プラットフォーム１０８における指定シミュレータ１４８の実行のために複数の仮想マシン１１０（１）、・・・、１１０（Ｍ）を割り付けることができる。いくつかの例においては、別々の仮想マシン１１０が、各シミュレータ１４８のために割り付けられるとし得るが、ほかの例においては、複数のシミュレータが同一の仮想マシン上において実行されるとし得る。それに加えて、仮想マシン・リソース・マネージャ１１４は、追加の仮想マシン・・・１１０（Ｎ）を、ほかのシミュレータおよび／またはシミュレーション・データ・コレクタ１５０を実行するために割り付けることができる。たとえば、シミュレーション・データ・コレクタ１５０は、シミュレーションを実行すること、シミュレーションの進捗のログ／レポートを受信すること、およびシミュレーションの結果を、その結果をストレージ１１８にストアするためにデータベース・マネージャ１１６に送信することをマネージでき、かつ／またはクライアント・コンピューティング・デバイス１２２に結果を送信するためにウェブ・インターフェース１２０に送信することができる。
【００３５】
これらの仮想マシン１１０は、イーサネット(登録商標)、または光ファイバ等のローカル・エリア・ネットワークとし得るか、または同一物理マシン上の複数の仮想マシンの場合であれば、物理的なコンピューティング・デバイスの内部バスを含むとし得る物理接続１５２を通じて互いに通信可能であるとすることができる。たとえば、仮想マシンは、ＴＣＰ／ＩＰまたはそのほかの適切な通信プロトコルを使用して通信できる。以下に追加を論じているとおり、いくつかの例においては、シミュレータ１４８のうちの１つを、接続１５２に沿ってのシミュレータ１４８の間の通信をコントロールするためのＣＡＮルータとして機能するべく構成されたｖＥＣＵとすることができる。したがって、ＣＡＮルータは、仮想マシン１１０の間の通信を可能にすることによって複数のｖＥＣＵ等の複数のシミュレータの間の仮想ＣＡＮバスを提供し、それによって複数のｖＥＣＵおよび／またはそのほかの互いに通信可能なシミュレータを含む複雑なシステム・レベルおよび乗り物レベルのシミュレーションの作成を可能にする。
【００３６】
図１のシミュレーション・プラットフォーム１０８は、乗り物の構成要素、乗り物のシステム、または乗り物全体をエミュレートするべく構成できる。所望のシミュレーションに基づいて、追加の仮想マシン１１０をシミュレーション・プラットフォーム１０８に割り付けるか、割り付けを解除してリソース・プール１１２に戻すことができる。その結果、乗り物の設計チームまたはそのほかのユーザは、シミュレーション・プラットフォーム１０８を使用して、以前は可能でなかった複雑性、忠実度、および抽象化のレベルの試験によって統合的システム信頼度の関心事を緩和できる。たとえば、シミュレーション・プラットフォーム１０８は、設計チームが複数の高忠実度仮想マイクロコントローラＥＣＵを同時に試験し、検証することを可能にし、始めから終わりまでのシミュレーション処理時間を、既存のツールと比較して最大で８０％まで、短縮することができる。それに加えて、シミュレーション・プラットフォーム１０８は、大規模で複雑な協調シミュレーションの初期化を、既存のツールを用いるよりはるかに短時間で可能にし、シミュレーション関連のオーバーヘッド・コストおよび資本支出を有意に削減し、極めて重要なシミュレーション・モデルの知的財産を安全かつ確実に維持することができる。これらのシミュレーション・パフォーマンスの向上により、設計エンジニアリング・チームは、製品化時間パフォーマンスを劇的に加速し、製品を向上させ、コストを削減することができる。
【００３７】
シミュレーション・プラットフォーム１０８は、複数の高忠実度の仮想マイクロコントローラＥＣＵおよび非常に多様なシミュレーション・ツールを含むといった、広範多様なドメイン、物理、および抽象化のレベルにわたる高忠実度の大規模で複雑なシステム・レベルおよび乗り物レベルの設計の日常試験を可能にできる。以下に追加を論じているとおり、シミュレーション・プラットフォーム１０８は、自動化されたシミュレーション・セットアップ、開始、監視、およびレポート；安全なウェブ接続上の随所からアクセス可能な簡素化された時間効率の良いシミュレーション・プロセス；使用容易で情報価値のあるＧＵＩ；ＨＰＣクラウドのスケーラビリティ、セキュリティ、および柔軟性；複数の高忠実度の仮想ＥＣＵおよびそのほかの構成要素の試験能力；強化されたコラボレーション・ツール；および産業試験済み安全ケイパビリティを提供できる。
【００３８】
図２は、いくつかの実装に従ったシミュレーションを実施するための構成要素および動作を示したブロック図２００の図解である。図２は、シミュレーション・ジョブの実行およびユーザ１３６への結果の提供のために含めることができる１３の例の動作２０１−２１３の記述を含む。たとえば、シミュレーション・ジョブは、図１に関して上で論じたシステム１００内のシミュレーション・プラットフォーム１０８を使用して実行できる。さらに、動作のいくつかまたはすべてを、ハードウエア、ソフトウエア、またはそれらの組合せにおいて実装できる。ソフトウエアの状況においては、動作が、１つまたは複数のコンピュータ可読媒体上にストアされたコンピュータ実行可能インストラクションを表すとすることができ、当該インストラクションは、１つまたは複数のプロセッサによって実行されると、プロセッサをプログラムして列挙されている動作を実施させる。概して言えば、コンピュータ実行可能インストラクションは、特定の機能を行うか、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、およびこの類を含む。ただし、動作が記述されている順序は、限定として解釈されるべきではない。いくつかの場合においては、記述されている動作を、ほかの順序で組み合わせるか、かつ／または並列に実施してプロセスまたは代替プロセスを実装することができ、必ずしもすべての動作が実行される必要はない。
【００３９】
２０１においては、ウェブ・サーバ２１４が、ユーザ１３６に関連付けされたクライアント・コンピューティング・デバイス１２２からユーザ・ジョブ入力２１６等のジョブ情報を受け取る。たとえば、ウェブ・サーバ２１４は、ウェブ・ゲートウェイ・コンピューティング・デバイス２１８上において実行できる。ウェブ・サーバ２１４は、図１に関して上で論じたウェブ・インターフェース１２０を提供することができ、ユーザ１３６は、そのウェブ・インターフェースを使用して、シミュレーション・プラットフォーム１０８による実行のためのシミュレーション・ジョブを構成できる。
【００４０】
２０２においては、１つまたは複数のモデル・ファイル２２０がユーザによって提供されるか、またはユーザによって選択され、ファイル・サーバ２２２によってマネージされ得る。いくつかの例においては、ファイル・サーバ２２２を、ストレージおよび／またはデータベース１１８と関連付けされるストレージ・コントローラとすることができる。ほかの例においては、ファイル・サーバ２２２を、ウェブ・ゲートウェイ・コンピューティング・デバイスまたはそのほかの、上で論じたシステム１００内のコンピューティング・デバイス上において動作するソフトウエアとすることができる。別の代替として述べれば、ファイル・サーバ２２２およびデータベース・マネージャ１１６を、同一の機能構成要素の一部とすることができる。
【００４１】
２０３においては、シミュレーション・メタデータ２２４が、ストレージおよび／またはデータベース１１８内にストアされているとし得る。たとえば、ウェブ・サーバ２１４が、ユーザ・ジョブ入力２１６としてシミュレーションの構成についての情報を受け取ることができ、データベース・マネージャ１１６が、その構成情報を、シミュレーション・メタデータ２２４としてストレージおよび／またはデータベース１１８内にストアすることができる。いくつかの例においては、ストレージおよび／またはデータベース１１８を任意タイプのオブジェクト・ストレージとすることができ、ほかの例においては、ストレージおよび／またはデータベース１１８が、ドキュメント指向データベース、またはそのほかのタイプのデータベース等の実際のデータベース構造および構成要素を含むとすることができる。
【００４２】
２０４においては、ジョブ・キュー・マネージャ・コンピューティング・デバイス２２６が、データベース・マネージャ１１６にジョブ情報２２８を要求することなどによって、シミュレーション・ジョブ情報２２８をストレージ１１８から獲得することができる。たとえば、シミュレーション・ジョブ情報２２８は、ユーザ１３６によってセットアップされたシミュレーション・ジョブについての構成の詳細を含むこと、およびそのシミュレーション・ジョブの中で使用されるべきモデル・ファイル２２０を識別することができる。ジョブ・キュー・マネージャ・コンピューティング・デバイスは、シミュレーション・プラットフォーム１０８のためのジョブ・キューをコントロールするジョブ・キュー・マネージャ・プログラム２３０を含むことができ、さらに、シミュレーション・プラットフォーム１０８のためのジョブ・キューとしての働きを提供するジョブ・バッファ２３２を含むことができる。
【００４３】
２０５においては、ジョブ・キュー・マネージャ２３０が、ジョブ・バッファ２３２からシミュレーション・マネージャ・コンピューティング・デバイス２３７上のジョブ・ルータ２３６に新しいジョブ２３４を送ることができる。１つの例として、ジョブ・キュー・マネージャ２３０は、ジョブ・バッファ２３２内の次のジョブを求めるジョブ・ルータ２３６からの要求の受け取りに応答して新しいジョブ２３４を送ることができる。
【００４４】
２０６においては、ジョブ・ルータ２３６が新しいジョブ２３４を、少なくとも部分的にジョブ・タイプまたはパラメータに基づいて、またさらに利用可能なコンピューティング・リソースに基づいて転送することができる。たとえば、新しいジョブ２３４を、シミュレーション実行マスタ２３８、パラメータ・スイープ・マスタ２４０、および／またはモデル合併整理マスタ２４２のうちの少なくとも１つに転送できる。
【００４５】
２０７においては、シミュレーション実行マスタ２３８がジョブをシミュレーション実行ワーカー２４４に付与できる。いくつかの例においては、ユーザが、シミュレーションの間に１つまたは複数のモデル・パラメータに複数のパラメータ値が適用されるパラメータ・スイープの実施を希望することがある。その種の場合には、パラメータ・スイープ・マスタ２４０が、シミュレーション実行ワーカー２４４に対して新しいジョブを提供する前に、その新しいジョブに関連付けされるパラメータを決定できる。それに加えて、またはそれに代えて、モデル合併整理マスタ２４２が、シミュレーションの間における実行に先行してモデルの数を低減すること、シミュレーションを実行するために要求されるライセンスの数を低減すること等のために、シミュレーション・ジョブ２３４によって識別された１つまたは複数のモデルを合併整理することができる。
【００４６】
２０８においては、シミュレーション実行ワーカー２４４が、リソースを割り付けることができ、またジョブ情報２４６を使用して、１つまたは複数のシミュレーション・コンピューティング・デバイス２５２のそれぞれによって実行される１つまたは複数のシミュレーション・コントローラ２４８を、各シミュレーション・コンピューティング・デバイス２５２上のシミュレーション・ジョブをコントロールするために、セットアップすることができる。たとえば、シミュレーション実行ワーカー２４４は、複数のシミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）を割り付けて、シミュレーション・ジョブのためのシミュレータ２５４（１）−２５４（Ｊ）を実行できる。各シミュレータ２５４は、１つまたは複数のモデル・ファイルを含むか、またはアクセスできる。各シミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）上には、そこに提供されたシミュレーション・コントローラ２４８（１）−２４８（Ｋ）が存在し得る。さらに、シミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）毎に１つまたは複数のシミュレータ２５４（１）−２５４（Ｊ）が存在し得る。さらにまた、上で述べたとおり、シミュレーション・コンピューティング・デバイス２５２、および／またはシミュレーション・マネージャ・コンピューティング・デバイス２３７、および／またはジョブ・キュー・マネージャ・コンピューティング・デバイス２２６、および／またはウェブ・ゲートウェイ・コンピューティング・デバイス２１８、および／またはファイル・サーバ２２２のうちのいくつかまたはすべてを仮想マシンとするか、またはそれに代えて、それらのコンピューティング・デバイスのうちのいくつかまたは全部を別々の物理マシンとすることができる。
【００４７】
２０９においては、シミュレーション・コントローラ２４８（１）−２４８（Ｋ）が、ファイル・サーバ２２２からモデル・ファイル２５６をプルできる。たとえば、シミュレーション・コントローラ２４８（１）−２４８（Ｋ）は、そのシミュレーション・コントローラによってコントロールされるそれぞれのシミュレータ２５４のための現在のシミュレーション・ジョブに割り当てられているジョブ情報２４６内に定義されているモデル・ファイル２５６を要求できる。
【００４８】
２１０においては、各シミュレーション・コントローラ２４８が、モデル／シミュレータを初期化し、シミュレーションを起動し、そのシミュレーションの実行間のシミュレーションを監視し、そのシミュレーションの完了に続いて後処理を実施することができる。シミュレーション実行ワーカー２４４は、シミュレーションの初期化および起動の指示等のために、それぞれのシミュレーション・コントローラ２４８（１）−２４８（Ｋ）の動作を調和させることができる。このようにシミュレーション実行ワーカー２４４は、関係するすべてのシミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）にわたって、シミュレーションの実行をマネージできる。
【００４９】
２１１においては、シミュレーション・ジョブの間または完了に続いて、シミュレーション・コントローラ２４８および／またはシミュレーション実行ワーカー２４４が、データベース・マネージャ１１６およびストレージ１１８および／またはファイル・サーバ２２２にアップデート２５８をプッシュできる。たとえば、シミュレーションのステータスまたは結果をストレージおよび／またはデータベース１１８内にストアすることができる。上で述べたとおり、いくつかの場合においては、ファイル・サーバ２２２が、データベース・マネージャ１１６に加えて、またはその一部としてストレージ／データベース１１８のためのコントローラとしての働きを提供できる。
【００５０】
２１２においては、ウェブ・サーバ２１４が、アップデート２５８等に基づいて、シミュレーション構成情報２６０、シミュレーション・ステータス情報２６２、および／またはシミュレーション結果２６４をクライアント・コンピューティング・デバイス１２２に提供できる。
【００５１】
２１３においては、ユーザ１３６がクライアント・コンピューティング・デバイス１２２においてシミュレーション結果２６４を受け取ることができる。いくつかの場合によっては、その結果を、グラフまたはそのほかの人間可読情報の形式にすることができる。たとえば、ウェブ・サーバ２１４が、シミュレーション結果２６４および／またはシミュレーション・ステータス情報２６２および／またはシミュレーション構成情報２６０をクライアント・コンピューティング・デバイス１２２に送ることができる。さらにまた、上記の説明ではシミュレーション・プラットフォーム１０８上においてシミュレーション・ジョブを実施するために行われる動作の１つの例を示しているが、この開示の恩典を受ける当業者には、このほかの多くの可能性のある変形が明らかになるであろう。
【００５２】
図３は、いくつかの実装に従ったシミュレーション・ジョブの作成のための一例のＧＵＩ  ３００を図解している。この例においては、ＧＵＩ  ３００が、ウェブ・インターフェースによってユーザに呈示できるダッシュボード３０２を描画し、ユーザが任意の既存のまたは以前の提出済みシミュレーション・ジョブのステータスを決定することを可能にする。たとえば、ダッシュボード３０２は、現在の、または完了したシミュレーション３０４、アクティブ仮想マシン３０６、サーバＣＰＵ  ３０８および／またはサーバＲＡＭ  ３１０のステータスを表示できる。それに加えてダッシュボード３０２は、シミュレーション・ステータス３１２および／または仮想マシン・ステータス３１４といった特定のパラメータについてのより詳細な情報を提供できる。この例においては、ダッシュボードが、現在のシミュレーションが９７％完了していること、アクティブ仮想マシンのパーセンテージが利用可能な仮想マシンの７５％であること、使用されているサーバＣＰＵのパーセンテージが４２％であること、使用されているサーバＲＡＭのパーセンテージが３３％であることを示している。
【００５３】
それに加えて、３１６に示されているとおり、複数の仮想コントロールを、ＧＵＩ  ３００の異なる部分をユーザに呈示するために提供できる。たとえば、この例においては、ダッシュボード仮想コントロール３１８が強調表示されてダッシュボード３０２が表示のために選択されたことが示されている。仮想コントロール３１６は、さらに、新しいシミュレーションを作成するためのコントロール３２０、シミュレーション・ステータスを決定するためのコントロール３２２、現在のプロジェクトにアクセスするためのコントロール３２４、仮想マシン・ステータスを決定するためのコントロール３２６、およびユーザ・マネジメントを実施するためのコントロール３２８を含むことができる。１つの例として、ユーザが新しいシミュレーションの作成を希望していると仮定する。したがって、ユーザは、シミュレーション作成仮想コントロール３２０をクリックするか、またはそのほかの形でそれを選択することができ、それに応答して次に図４に関して論じるＧＵＩが呈示され得る。
【００５４】
図４は、いくつかの実装に従った新しいシミュレーションの作出のために呈示できる一例のＧＵＩ  ４００を図解している。上で述べたとおり、ユーザが、シミュレーションを作成するための仮想コントロール３２０を選択したと仮定する。それに応答してＧＵＩ  ４００は、３つの追加の仮想コントロール、すなわち構成要素レベルのシミュレーションの作成を選択するための構成要素レベルの仮想コントロール４０２、システム・レベルのシミュレーションを選択するためのシステム・レベルの仮想コントロール４０４、および乗り物レベルのシミュレーションを選択するための乗り物レベルの仮想コントロール４０６を呈示できる。たとえば、構成要素レベルのシミュレーションは、乗り物の個々の構成要素の挙動をエミュレートするための１つまたは複数のシミュレータを使用することができ；システム・レベルのシミュレーションは、複数の構成要素を含むシステムをシミュレートするべく複数のシミュレータを使用することができ；乗り物レベルのシミュレーションは、乗り物内に含めることができる多くの異なる構成要素および／またはシステムをシミュレートするべく複数のシミュレータを使用することができる。これら３つの選択肢のそれぞれについて、ユーザによる選択時には、異なるオプションを異なるタイプのシミュレーションを作成するために呈示できる。この例においては、ユーザが、システム・レベルのシミュレーションを作成するためにシステム・レベルの仮想コントロール４０４を選択したと仮定する。その結果として、４０８に示されているとおり、ＧＵＩ  ４００は、作成されるシミュレーションがシステム・レベルのシミュレーションであると示すことができる。
【００５５】
さらに、ＧＵＩ  ４００は、シミュレーションの作成を通してユーザの案内を補助するシミュレーション作成進捗図４１０を含むことができる。この例においては、進捗図４１０が、導入段階４１２、『シミュレーション・タイプ選択』段階４１４、『接続の定義およびファイルのアップロード』段階４１６、『シミュレーション時間設定』段階４１８、および『シミュレーション確認』段階４２０を含み、次に、それぞれについて論じていく。
【００５６】
最初に、図４に図解されているとおり、導入段階４１２の間にＧＵＩ  ４００は、システム・レベルのシミュレーションを作成するための概要４２２を記述する導入ページを呈示でき、さらにそれは、４２４において、システム・レベルのシミュレーションのための要件を記述する。それに加えてＧＵＩ  ４００は、ワンタイム・シミュレーションを作成するためのオプション４２６、ワークフロー・シミュレーションを作成するためのオプション４２８、第１のタイプのＥＣＵシミュレーションを作成するためのオプション４３０、第２のタイプのＥＣＵシミュレーションを作成するためのオプション４３２、第３のタイプのＥＣＵシミュレーションを作成するためのオプション４３４等のシステム・レベルのシミュレーションを作成するための複数の選択可能なオプションを含むことができる。たとえば、ワークフロー・シミュレーションは、より後のシミュレーションがより手前のシミュレーションの出力を受け取る連続シミュレーションを含むことができる。それに加えて、ユーザは、下へのスクロールを行って、この例では図示されていないそのほかのオプションを選択できる。ユーザは、所望のオプションを選択した後に、『次へ』ボタン４３６を選択して、シミュレーション・タイプをさらに選択するための次の段階に進むことができる。
【００５７】
図５は、いくつかの実装に従ったシミュレーション・アプリケーションのタイプの選択のために呈示できる一例のＧＵＩ  ５００を図解している。ここでは、図４のＧＵＩ  ４００において、ユーザがワンタイム・シミュレーションを作成するオプションを選択し、その後に続いて、進捗図４１０に強調表示された段階４１４によって示されるとおり、シミュレーション・タイプを選択するべくＧＵＩ  ５００に進んだと仮定する。５０２に示されているとおり、ＧＵＩ  ５００は、シミュレーション・タイプを選択するための複数のオプションを呈示できる。この例において選択できるシミュレーションの例は、ＥＣＵシミュレーション５０４、電磁適合性（ＥＭＣ）シミュレーション５０６、信号フロー・シミュレーション５０８、機械システム・シミュレーション５１０、メカトロニクス・シミュレーション５１２、およびネットワーク・シミュレーション５１４を含む。また、いくつかの例の共通するシミュレーション・ユースケースがこの例の中に図解されているが、この開示の恩典をうける当業者には、ほかの例に含めることができるほかのタイプのシミュレーションも明らかになるであろう。さらに、ユーザは、選択したシミュレーション構成に、たとえばシミュレータ・ライブラリ等から選択できる追加のシミュレータのドラッグ・アンド・ドロップ等を使用して、マニュアルでさらにシミュレータを追加できる。
【００５８】
それに加えて、各シミュレーション・タイプ５０２は、そのシミュレーション・タイプに関連付けされた忠実度を表示できる。たとえば、シミュレーションの忠実度は、モデルまたはシミュレーションが、実世界の構成要素、システム、またはプロセスの状態および挙動を再現する程度を示すことができる。したがって、忠実度は、特定のモデルまたはシミュレーションの現実性の表示と考えることができる。たとえば、ユーザが機械システム・シミュレーション５１０をクリックするか、またはそのほかの形でそれを選択すると仮定する。５１６に示されているとおり、ＧＵＩ  ５００は、選択された機械システム・シミュレーション５１０の忠実度についての情報を提示することができ、この例においてはその忠実度が混在することが示されている。ユーザは、所望のシミュレーション・タイプを選択した後に、『次へ』ボタン４３６を選択して次の段階に進むことができる。
【００５９】
図６は、いくつかの実装に従ったモデルの選択およびシミュレーション接続の定義のために呈示できる一例のＧＵＩ  ６００を図解している。ここでは、図５のＧＵＩ  ５００において、ユーザがシミュレーション・アプリケーションのタイプとして機械システム・シミュレーション５１０を選択し、その後に続いて、進捗図４１０に強調表示された段階４１６によって示されるとおり、接続を定義し、モデルを選択し、ファイルをアップロードするべくＧＵＩ  ６００に進んだと仮定する。６０２に示されているとおり、ＧＵＩ  ６００は、ユーザがシミュレーションを構成することを可能にできる。この例においては、２つのシミュレータ表現６０２および６０４が追加された。いくつかの場合においては、シミュレータ表現６０２および６０４が、選択されたシミュレーション・アプリケーションに基づいてデフォルトで追加されるとすることができるが、ほかの場合においては、ユーザがライブラリにアクセスして１つまたは複数のシミュレータを追加することができる。たとえば、第１のシミュレータ６０２を『プラント・シミュレータ』と名前設定し、第２のシミュレータ６０４を『プロセッサ・シミュレータ』と名前設定するか、またはユーザによって選択された任意のそのほかの名前に設定できる。したがって、第１のシミュレータ６０２は、仮想『プラント』として、すなわちＥＣＵによってコントロールされる構成要素またはシステムとして構成することができ、第２のシミュレータ６０４は、プロセッサ・シミュレータとして、すなわちプラントをコントロールするｖＥＣＵとして構成することができる。
【００６０】
シミュレータ６０２および６０４は、実世界の接続のシミュレーションに対応する接続６０６によって接続できる。たとえば、実際の乗り物構成要素およびシステムと同様に、いくつかのタイプのシミュレータは接続されず、いくつかのシミュレータはＣＡＮバスによって接続され、いくつかは信号バスによって、いくつかはほかのタイプの接続によって接続されるとすることができる。いくつかの例においては、選択されたシミュレーション・アプリケーションに基づいて、利用可能な接続のタイプが、実世界において可能なものに限定されることがある。たとえば、この例においては、選択が、『なし』６０８、『ＣＡＮバス』６１０、および『信号バス』６１２に制限されている。この例においては、ユーザがこのシミュレーションにおける接続のために適切であるとして『信号バス』６１２を選択したと仮定する。
【００６１】
１つの例として、シミュレータ６０２は、トランスミッション（すなわち、機械システム）のシミュレーションに使用され、シミュレータ６０４は、トランスミッション・コントロール・ユニット（ＴＣＵ）ＥＣＵをシミュレートするべく構成されたｖＥＣＵとすることができる。たとえば、実世界のトランスミッションは、ＣＡＮバス上ではなく信号バス上において信号を実世界のＴＣＵに送信する１つまたは複数のセンサを含むことができる。したがって、現在のシミュレーションのために、仮想信号バス６１２が、シミュレータ６０２とシミュレータ６０４の間の接続タイプとして選択されている。これに対して、ユーザが、このシミュレーションに別のｖＥＣＵを追加することを決定した場合には、ユーザは、シミュレータ６０４とその追加のｖＥＣＵを、選択された接続として仮想ＣＡＮバス６１０を使用して接続することができる。いくつかの例においては、ＧＵＩ  ６００が、シミュレータ選択に基づいていずれの接続タイプを選択するべきかについてユーザに助言することができる。
【００６２】
それに加えて、この時点においては、これらのシミュレータが未完了としてマークされており、これは、ユーザがまだ、ＧＵＩ  ６００内に表されている各シミュレータ６０２、６０４のために使用するモデル・ファイルを提供していないか、または選択していないことを示すことができる。ＧＵＩ  ６００内には、各シミュレータ表現６０２、６０４のための情報ボックスを呈示できる。したがって、第１の情報ボックス６１４を第１のモデル６０２のために呈示し、第２の情報ボックス６１６を第２のモデル６０４のために呈示できる。各情報ボックスは、ユーザによって選択されて、対応するシミュレータのために使用されることになる１つまたは複数のモデル・ファイルをユーザがブラウズし、選択できる選択可能なコントロール６１８を含むことができる。それに加えてＧＵＩ  ６００は、特定のシミュレーションのために選択されたすべてのシミュレータを示す要約エリア６２０を含むことができ、さらに、ユーザが以前の選択の変更等のために以前のインターフェースに戻ることを希望する場合の『戻る』ボタン６２２を含むことができる。
【００６３】
図７は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図６のＧＵＩ  ６００の一例を図解している。この例においては、ユーザが、上で論じた選択可能なコントロール６１８を選択して第１のシミュレータ６０２に追加する１つまたは複数のモデル・ファイルを選択したと仮定する。それに応答してＧＵＩ  ６００内には、ポップアップ・ウインドウ７０２またはその類がユーザに呈示される。ユーザは、このポップアップ・ウインドウ７０２を使用して、シミュレータ６０２に追加できる１つまたは複数のモデル・ファイルをブラウズするか、そのほかの形で突き止めることができる。この例においては、ユーザが、『Ｔｒａｎｓｍｉｓｓｉｏｎ．ｘｃｎ』という名前が付けられたモデル・ファイルを選択したと仮定する。ユーザは、そのモデル・ファイルを選択し、『開く』をクリックして選択したモデル・ファイルをシミュレータ６０２に追加できる。いくつかの例においては、モデル・ファイルを、ユーザのコンピューティング・デバイスからアップロードすることができ、ほかの例においては、すでにアップロードされ、上で論じたシミュレーション・プラットフォームに関連付けされたストレージ・エリアまたはデータベース内にストアされているモデル・ファイルを、ユーザが選択することができる。ユーザは、シミュレータ６０２に複数のモデル・ファイルを追加するためにこのプロセスを繰り返すことができる。
【００６４】
図８は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図６のＧＵＩ  ６００の一例を図解している。この例においては、ユーザが、選択可能なコントロール６１８を選択して第１のシミュレータ６０２に追加する１つまたは複数のモデル・ファイルを選択したと仮定する。それに応答してＧＵＩ  ６００内には、ポップアップ・ウインドウ８０２またはその類がユーザに呈示される。ユーザは、このポップアップ・ウインドウ８０２を使用して、シミュレータ６０２に追加できる１つまたは複数のモデル・ファイルをブラウズするか、そのほかの形で突き止めることができる。この例においては、ユーザが、『ｍＥｎｇｉｎｅ＿ｅｃｌａｓｓ．ｍ』、『Ｐｔ＿Ｔｒａｎｓｍｉｓｓｉｏｎ．ｉｘｄ』、『ＰＴ＿Ｔｒａｎｓｍｉｓｓｉｏｎ．ｍｄｌ』、『Ｒｕｎ＿ｆｔ４ｗｄ＿ｅｃｌａｓｓ．ｍ』、および『ｔｏｒｑ＿ｃｏｎｖ＿ｅｃｌａｓｓ．Ｍ』という名前が付けられた５つのモデル・ファイル８０４を選択したと仮定する。この例においては、ユーザが、８０６の『開く』を選択することによって、ここで選択したすべてのモデル・ファイルをシミュレータ６０２に追加することができる。ユーザは、同様にして第２のシミュレータ６０４に１つまたは複数のモデル・ファイルを追加できる。１つまたは複数のモデル・ファイルがシミュレータ６０２、６０４に追加されたときに、『未完了』の指定が取り除かれることがある。
【００６５】
図９は、いくつかの実装に従ったポート構成の検証のために呈示できる図６のＧＵＩ  ６００の一例を図解している。１つの例として、第１のシミュレータ６０２および第２のシミュレータ６０４のためのモデル・ファイルの選択に続いて、ユーザが『次へ』ボタン４３６を選択したと仮定する。それに応答してシステムは、シミュレータ６０２および６０４のためにポートが構成済みであるか否かを決定できる。たとえば、仮想ＣＡＮバスをシミュレーションの中で使用するときには、ポートを、方向およびデータ型を用いて定義することによって構成できる。したがって、仮想ＣＡＮバスを使用する場合であり、かつポートが構成済みでなければ、システムは、ポップアップ・ウインドウ９０２を提示して、ユーザに、シミュレータ６０２および６０４のためのポートの構成を促すことができる。ユーザが、すでにポートを構成済みである場合には、ユーザは、仮想コントロール９０４を選択して次のステップに進むことができるが、その逆に、ユーザが、まだポートを構成済みでない場合には、ユーザは、『ポートの構成』仮想コントロール９０６を選択して、新しいブラウザ・タブ内においてポート構成ユーティリティを起動できる。たとえば、以下に追加を論じているとおり、複数のｖＥＣＵを含むシミュレーションのために、仮想ＣＡＮバスを構成し、ＴＣＰ／ＩＰプロトコルまたはその類を使用して複数のｖＥＣＵの間の通信を可能にすることができる。ユーザは、ポートの構成を完了した後に、シミュレーション作成の次の段階に進むことができる。
【００６６】
図１０は、いくつかの実装に従ったシミュレーション時間の設定のために呈示できる一例のＧＵＩ  １０００を図解している。ユーザは、接続の定義およびモデル・ファイルのアップロードを完了した後に、４１８に示されているとおり、シミュレーション時間を設定するＧＵＩ  １０００が呈示される次の段階に進むことができる。１００２に示されているとおり、ユーザは、シミュレーションのためのステップ・サイズを、たとえばマイクロ秒数で、またはそのほかの選択可能な単位を用いて設定できる。さらにユーザは、そのシミュレーションのための終了時間を選択でき、それによりシミュレーションが行われる全体的な時間をコントロールできる。この例においては、ユーザが、１００４に示されているとおり、３０秒を選択したが、ほかのタイプのシミュレーションのためにほかの時間単位を使用することもできる。通常、終了時間１００４は、シミュレーションのための実行時間と一致しなくてよい。たとえば、３０秒の終了時間１００４が、実質的により長いシミュレーション実行時間、たとえば、数分、数時間、またはそれより長い時間に対応することがあり得る。
【００６７】
いくつかの例においては、動的システムを、指定した時間スパンにわたって連続する時間ステップでシステムの状態を計算することによってシミュレートできる。したがって、ステップ・サイズ１００２は、状態が計算されるべき頻度を示し、終了時間１００４は、システムの状態を計算するための時間スパンを指定する。一般に、ステップ・サイズがより小さいほど、シミュレーションがより正確になるが、トレードオフは、より小さいステップ・サイズを伴うシミュレーションがより長いコンピューティング時間、および／またはより多くのコンピューティング・リソースを消費することである。さらに、この例は、固定ステップ・サイズで図解されているが、ほかの例においては、ユーザが、いくつかのタイプのシミュレーションのために可変ステップ・サイズを設定できる。ユーザは、ステップ・サイズおよび終了時間の設定を完了すると、『次へ』ボタン４３６を選択して次の段階に進むことができる。
【００６８】
図１１は、いくつかの実装に従ったシミュレーションの確認のために呈示できる一例のＧＵＩ  １１００を図解している。ユーザは、シミュレーションの終了時間およびステップ時間の設定を完了すると、４２０に示されているとおり、シミュレーションを確認するための次の段階に進み、実行のためにそのシミュレーションを提出できる。ユーザには、ユーザが意図したとおりにシミュレーションが構成されていることをチェックし、確認する機会を提供できるＧＵＩ  １１００が呈示される。たとえば、ユーザは、１１０２に示されているとおり、構成したシミュレーションが、忠実度が混在する機械システムのシミュレーションであること、１１０４に示されているとおり、２つのシミュレータが構成されていること、および１１０６に示されているとおり、指定した終了時間およびステップ・サイズがそのシミュレーションに設定されていることを確認できる。ユーザは、シミュレーションが適切に構成されていることを確認した後、『シミュレーションを実行する』仮想コントロール１１０８を選択することができる。それに対して、ユーザが変更を希望する場合には、ユーザは、『戻る』ボタン６２２を選択することができる。それに加えて、いくつかの場合においては、ユーザが、漸増態様等により複数のパラメータを通じて自動的に進行するシミュレーションを可能にするパラメータ・スイープ情報を提供するか、またはすでに提供済みであることがある。図２３−２４に関して以下に追加を論じているとおり、ユーザは、パラメータ・スイープ情報を提供することができ、シミュレーション・プラットフォームは、示されたパラメータを用いてシミュレーションを実行するべく構成され得る。
【００６９】
図１２は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図１１のＧＵＩ  １１００の一例を図解している。この例においては、ユーザが、シミュレーションを実行するために『シミュレーションを実行する』コントロール１１０８を選択したと仮定する。いくつかの例では、ＧＵＩ  １１００内において、ポップアップ・ウインドウ１２０２またはその類をユーザに呈示できる。ユーザは、このポップアップ・ウインドウ１２０２を使用して、『シミュレーション』、『モデルを合併整理してシミュレーション』または『保存（シミュレーションなし）』等の実行タイプ１２０４を選択できる。たとえば、ユーザが『モデルを合併整理してシミュレーション』を選択した場合に、シミュレーション・プラットフォームは、そのシミュレーションを実行するためのライセンス要件の最小化等のために、合併整理が可能なモデルの合併整理を試みることができる。ユーザは、実行タイプ１２０４から選択を行った後、『続行』ボタン１２０６を選択して、そのシミュレーションを実行のために提出することができる。これに対して、シミュレーションを実行しないこと、または訂正することをユーザが決定した場合には、ユーザは、『キャンセル』ボタン１２０８を選択できる。
【００７０】
以上の図面および説明は、シミュレーションの終了時間およびシミュレーションのステップ・サイズのための１つのグローバルなエントリをシミュレーション内のすべてのシミュレータに自動的に投入することができる、シミュレータをセットアップし、接続するためのツールを提供する。たとえば、ユーザは、呈示されたＧＵＩを使用してシミュレーション時間を１回定義するだけでよく、システムは、そのシミュレーションに使用されるすべてのシミュレータに対して自動的かつグローバルにそのタイミング・データを投入することができる。したがって、設計エンジニア等のユーザが、各シミュレータを開いてマニュアルで各シミュレーション・ツールにデータを入力する必要はなく、特に、シミュレーション内に使用されるシミュレータの数が増加するに従って有意の時間節約を作り出す。
【００７１】
さらにまた、ＧＵＩを使用してシミュレーション・テンプレートを作成して保存することができ、それをオリジナルのテンプレートの作成者が再使用すること、またはチームのメンバの間で共有して全体的なチームの生産性を向上させることが可能である。たとえば、ここでのＧＵＩ内に使用可能な事前入力済みのテンプレートは、シミュレーションのセットアップのための効率的なテクニックを提供し、複雑な自動車設計の試験に使用され得る高忠実度の大規模シミュレーションのセットアップのために有用である。それに加えて、いくつかの例は、ユーザに、シミュレーションの開始に先行してモデルを合併整理するオプションを提供する。たとえば、複数のモデルを１つのモデルに合併整理することによって、シミュレーションは、より少ないソフトウエア・ライセンスを使用して大きなシミュレーションを走らせることができる。その種の合併整理は、シミュレーションを完了する時間を長くすることがあるが、ここでのネットワーク・コンピューティング・リソースの使用が、パフォーマンス損失の多くを軽減できる。それに加えて、ここでの実装が、シミュレーションが開始される前にすべての入力データおよびファイルに関する徹底したチェックを自動的に行うことができるので、失敗しがちなシミュレーションへの適用から時間、ライセンス、およびコンピューティング・パワーを節約する。
【００７２】
さらに、各シミュレータを別々に開き、各ツールをマニュアルでアクティブ化するという必要がなく、ここでのＧＵＩが、それらの全体のプロセスを自動化し、ユーザが、複雑性とは無関係に単一の入力を用いて協調シミュレーションを開始することを可能にする。それに加えて、協調シミュレーションの中で使用されたすべてのシミュレータからの生データおよびグラフィカルな試験結果を１つの場所に合併整理できる。複数のシミュレータによって作られたあらゆる冗長なデータおよびチャートは除外できる。この自動化され、能率化された出力アプローチは、データのソーティングおよび可視化を単純化し、ユーザが設計の見識を容易に決定することを可能にできる。結果は、追加の分析のためにダウンロードできる。それに加えて、シミュレーション・プラットフォームがウェブ・ベースであることから、ユーザが任意の好都合な場所からシミュレーション・プラットフォームにアクセスできる。
【００７３】
ここでのシミュレーション・プラットフォームおよびＧＵＩは、シミュレーション・ワークスペース内へのシミュレータのドラッグ・アンド・ドロップ；ツールの間のシミュレーション関係を定義するシミュレータの接続；シミュレータの間の接続のタイプの選択；シミュレーション設計構成のアップロード；負荷シミュレーション・モデル；グローバルなシミュレーション時間およびステップ・サイズの設定；および単一のキーストロークまたはそのほかのユーザ入力を用いたシミュレーションの開始を含む能率化されたシミュレーション構成プロセスを提供できる。ここでのＧＵＩは、シミュレーション・プロセスを簡素化し、複雑でない指示を用いてユーザを案内し、ドラッグ・アンド・ドロップ機能を可能にし、構成プロセスの中のどこにユーザがいるかについての視覚的表示を提供する。開始後、ユーザは、キュー内の自分のシミュレーションを眺め、完了パーセンテージを監視することによって進捗を追跡できる。それに加えて、ユーザは、合併整理されたログおよび結果を検討すること、パラメータ・スイープを開始することおよび再び走らせることができる。
【００７４】
ここでのシミュレーション・プラットフォームは、オンザフライでスケーリングし、複雑な協調シミュレーションに適応可能な本質的に無制限のコンピューティング・リソースを提供できる。ユーザは、既存のシミュレータ・ソフトウエア・ライセンスを使用すること、またはシミュレーション・プラットフォームを通じてライセンス料を支払うことができる。それに加えて、ユーザのライセンスが、そのユーザと関連するほかの設計者／シミュレーションによって使用されている場合に、ユーザは、当該ほかのジョブが完了してライセンスが利用可能になった後にシミュレーション・ジョブを走らせるべくスケジュールできる。
【００７５】
それに加えて、ここでのシミュレーション・プラットフォームは、複数の高忠実度仮想ＥＣＵの試験を可能にし、かつ複数の高忠実度マイクロコントローラ・モデル・ベースの仮想ＥＣＵを一度に検証するべく使用することが可能である。いくつかの例においては、より複雑なシミュレーションを可能にするだけでなく、設計チームに、開発プロセスの早期における、すなわち物理的なプロトタイプ作成の前に、大規模システム構成を試験させる仮想ＨＩＬＳ（ｖＨＩＬＳ）環境を作成できる。したがって、ユーザは、高忠実度の複雑なシステムを、乗り物開発プロセスのアーキテクチャおよび設計段階の間に試験することができ、コスト高のリワークをプロトタイプ作成が始まる前に回避できる。それに加えて、ｖＨＩＬＳケイパビリティは、シミュレーションの測定および分析段階を行うために必要とされる時間をユーザが有意に短縮することを可能にできる。たとえば、オシロスコープ、マルチメータ、およびそのほかの測定デバイスを使用する厖大なマニュアル努力を必要とするＨＩＬＳアプローチとは異なり、ここで提供されるｖＨＩＬＳアプローチは、シミュレーション・プロセスの一部として見識を自動的に生成できる仮想測定および分析デバイス（たとえば、スコープ、表示器等）を含み、それが、シミュレーション内のＥＣＵの数が増加するときであってさえ、時間、努力、および誤りのリスクを有意に低減できる。
【００７６】
ここでのシミュレーション・プラットフォームは、大規模協調シミュレーションを行うための標準的なフォーマットおよびアプローチを提供し、それが一貫性を構築し、共同研究を強化し、シミュレーション結果の品質を向上させる。たとえば、設計チーム等の複数の関係ユーザは、電気、機械、埋め込み演算、電磁、および／またはＮＶＨ（雑音、振動、荒々しさ）ドメイン；エンジン、ブレーキ、燃料構成要素、シャーシ、および／またはパワートレイン；設計、製造、および／または生産機能；ＯＥＭ（相手先ブランド製品製造者）、ティア・ワン・サプライヤ、および／またはティア・ツー・サプライヤを含む異なるエンジニアのグループにわたる統合されたシミュレーションを作成するためにシミュレーション・プラットフォームを使用して共同できる。さらにユーザは、自分たちのチームから、および／またはサプライヤのチームまたはカスタマのチームから、共同研究者を招待してシミュレーションに参加させることができる。シミュレーション・プラットフォームは、複数ドメインにわたるセットアップ、ワークフロー、および結果の共有を可能にする。それに加えて、ユーザは、ユーザおよびユーザの共同研究者が使用できるシミュレーション・テンプレートおよびモデルのライブラリを作成できる。
【００７７】
図１３、２１、２４、２６、および２７は、いくつかの実装に従ったプロセスの例を図解したフローチャートである。プロセスは、動作のシーケンスを表す論理的なフローチャートのブロックの集合として図解されており、そのうちのいくつかまたはすべては、ハードウエア、ソフトウエア、またはこれらの組合せにおいて実装され得る。ソフトウエアの状況においては、ブロックが、１つまたは複数のコンピュータ可読媒体上にストアされたコンピュータ実行可能インストラクションを表すとすることができ、当該インストラクションは、１つまたは複数のプロセッサによって実行されると、プロセッサをプログラムして列挙されている動作を実施させる。概して言えば、コンピュータ実行可能インストラクションは、特定の機能を行うか、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、およびこの類を含む。ただし、ブロックが記述されている順序は、限定として解釈されるべきではない。任意数の記述されているブロックを、任意の順序および／または並列に組み合わせてプロセスまたは代替プロセスを実装することができ、必ずしもすべてのブロックが実行される必要はない。論考の目的のため、ここでの例の中に記述されている環境、フレームワーク、およびシステムを参照してプロセスを記述するが、これらのプロセスは、広範多様なこのほかの環境、フレームワーク、およびシステムにおいて実装され得る。
【００７８】
図１３は、いくつかの実装に従ったシミュレーションを構成するための一例のプロセス１３００を図解したフローチャートである。いくつかの例においては、プロセス１３００を、ネットワーク・コンピューティング・リソース１０２またはそのほかの適切なコンピューティング・デバイスを含む１つまたは複数のコンピューティング・デバイス１０４によって実行できる。
【００７９】
１３０２においては、１つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスからユーザのログインを受信し、そのクライアント・コンピューティング・デバイスに、ダッシュボードＧＵＩを呈示させる情報を送信できる。たとえば、ダッシュボードは、ユーザに関連付けされた任意の現在のシミュレーション・ジョブのステータスを示すことができる。
【００８０】
１３０４において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレーション・レベル（たとえば、構成要素レベル、システム・レベル、乗り物レベル）の選択を受信できる。
【００８１】
１３０６において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレーション・タイプ（たとえば、ワンタイム・シミュレーション、ワークフロー・シミュレーション）の選択を受信できる。
【００８２】
１３０８において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、適用のタイプ（たとえば、ＥＣＵ、機械、回路、状態フロー）の選択を受信できる。
【００８３】
１３１０において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレータの選択の表示およびシミュレータ間の接続のタイプの表示を受信できる。
【００８４】
１３１２において、その１つまたは複数のコンピューティング・デバイスは、図６に関して上で論じたとおり、選択されたシミュレータのための仮想バスまたはそのほかの仮想接続を構成できる。
【００８５】
１３１４において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、選択されたシミュレータを構成するためのモデル・ファイルの選択を受信できる。
【００８６】
１３１６において、その１つまたは複数のコンピューティング・デバイスは、インターフェースの一貫性をチェックできる。
【００８７】
１３１８において、その１つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、終了時間およびステップ・サイズ等のシミュレーション時間情報を受信できる。
【００８８】
１３２０において、その１つまたは複数のコンピューティング・デバイスは、シミュレーションの設定を確認できる。それに加えて、いくつかの例においては、ユーザが、自動的に複数の異なるパラメータがモデルに適用されるパラメータ・スイープを含むシミュレーションの実施を希望することがある。したがって、ユーザは、図２３−２４に関して以下に追加を論じているとおり、パラメータ・スイープ情報を提供することができ、１つまたは複数のコンピューティング・デバイスは、示されたパラメータを使用して１つまたは複数のシミュレーションを実行するべく構成され得る。
【００８９】
１３２２において、その１つまたは複数のコンピューティング・デバイスは、ライセンスを確認し、シミュレーションを実行できる。たとえば、シミュレーション・マネージャは、選択されたシミュレータを実行するために充分な数のライセンスをユーザが有していることをチェックできる。ユーザが充分な数のライセンスを有しているが、そのいくつかは、現在、べつのシミュレーションのために使用中である場合に、シミュレーション・マネージャは、充分な数のライセンスが利用可能になるまでジョブを遅延させることができる。ユーザが充分な数のライセンスを有してない場合には、シミュレーション・マネージャが、ウェブ・インターフェースに、そのユーザに関連付けされたクライアント・コンピューティング・デバイス上にその結果に対するメッセージを送信させることができる。それに加えて、ユーザによる『整理統合して実行』の選択等に基づくか、またはデフォルトによって、１つまたは複数のコンピューティング・デバイスは、ライセンス要件の最小化および／またはシミュレーションによって実行されることになるモデルの数の低減等のために整理統合が可能なモデルの整理統合を試みることができる。図２５および２６に関して以下に追加を論じているとおり、同一のライセンスおよび／または同一のシミュレータを使用するモデルは、場合によっては整理統合して、シミュレーションの実行に求められるライセンスの数を低減することができる。さらに、シミュレーションの実行は、少なくとも部分的に、受信した、ユーザによって指定された終了時間およびステップ・サイズに基づくことができ、またさらに、適用可能であれば、パラメータ・スイープのために提供されたパラメータ・スイープ情報に基づくことができる。
【００９０】
１３２４においては、シミュレーションの実行に続いて、１つまたは複数のコンピューティング・デバイスは、シミュレーション結果をストレージ内にストアするか、かつ／またはその結果を、クライアント・コンピューティング・デバイス上における呈示のために送信することができる。
【００９１】
いくつかの例においては、上記のプロセスが、クライアント・コンピューティング・デバイスがグラフィカル・ユーザ・インターフェース（ＧＵＩ）を呈示することを可能にする情報を、１つまたは複数のプロセッサによってそのクライアント・コンピューティング・デバイスに送信すること、およびそのクライアント・コンピューティング・デバイスから、ＧＵＩを介して、いくつかの例においては少なくとも２つのプロセッサ・シミュレータを含むとすることができる複数のシミュレータを含むシミュレーションを作成するインストラクションを示す第１のユーザ入力を受信することを含むとすることができる。プロセスは、シミュレータの間の接続のタイプの表示をクライアント・コンピューティング・デバイスからＧＵＩを介して受信すること；各シミュレータと関連付けするそれぞれのモデル・ファイルの表示をクライアント・コンピューティング・デバイスからＧＵＩを介して受信すること；シミュレーションを実行するためにコンピューティング・リソースを割り付けること；および、各シミュレータを実行し、各シミュレータに関連付けされたそれぞれのモデル・ファイルを実行することによってシミュレーションを実行することを、さらに含むとすることができる。さらにまたシミュレーションを実行するためにコンピューティング・リソースを割り付けることは、各シミュレータのためのそれぞれの仮想マシンの割り付けを含むことができ、さらに、シミュレーション・コントローラを実行するための仮想マシンの割り付けを含むことができ、それにおいてシミュレーション・コントローラは、シミュレーションの実行を監視すること、またはクライアント・コンピューティング・デバイスにシミュレーションの結果を送信させること、のうちの少なくとも１つを行うべく構成される。
【００９２】
したがって、ここでのシミュレーション・プラットフォームは、合計のシミュレーション処理時間を実質的に短縮できる（いくつかの場合においては、最大８０％）。さらに、ユーザは、ＧＵＩを使用して、自動化されたプロセスおよびテンプレートの利用とともに、大規模で複雑な協調シミュレーションをセットアップし、開始することができる。したがって、ここでのシミュレーション・プラットフォームは、大規模システムのシミュレーションを、従来システムを用いて可能であるより、開発プロセスにおいてはるかに早期に可能にすることによって、設計のリワークを低減する。さらに、前述したとおり、シミュレーション・プラットフォームは、シミュレーションを走らせる前にモデルを合併整理すること、および複数のシミュレーション・ジョブにわたるソフトウエア・ライセンスの効率的な使用を監督する自動化されたライセンス割り付けに基づいて、シミュレータ・ソフトウエア・ライセンスをマネージすることができる。それに加えてシミュレーション・プラットフォームは、コンピューティング・リソースを必要に応じて自動的にスケーリングし、異なるサイズのシミュレーション・ジョブのための需要を満たすことができる。シミュレーション・プラットフォームは、ユーザの許可、仮想マシン（ＶＭ）の割り付け、ストレージの割り付け、およびこれらの類をマネージできる。たとえば、ユーザは、物理的なプロトタイプ作成に先行して大規模仮想システムの協調シミュレーションを可能にするｖＨＩＬＳアプローチを用いて、設計プロセスのより早い時期に製品の品質問題を検出できる。さらに、ここでのシミュレーション・プラットフォームは、チームの一貫性および協力を構築する標準的なシミュレーション・アプローチを使用することによってチームを横断する、エンド・ツー・エンドのシミュレーションの実践を強化する一方、データ入力要件を有意に減ずることによって人的誤りを低減できる。さらに、シミュレーション・プラットフォームは、暗号化および多要素認証ケイパビリティを用いて、ユーザが当該プラットフォームにアップロードしたシミュレーション・モデル・データおよびすべてのそのほかの情報を保護することができる。それに加えて、ネットワーク・コンピューティング・リソースによって提供されるストレージは、企業クラスのセキュリティ、障害復旧、およびバックアップ・ケイパビリティを採用することができる。
【００９３】
図１４は、いくつかの実装に従った一例の協調シミュレーション１４００を図解したブロック図である。たとえば、協調シミュレーション１４００を、図３−１３関して上で論じたＧＵＩを使用し、図１に関して上で論じたシミュレーション・プラットフォーム１０８上において構成することができる。図１４の例は、リアルなハードウエア・ベースの自動車埋め込みシステムに綿密に似せた仮想マルチＥＣＵの高忠実度サイバー−物理マルチレート協調シミュレーションを表している。この例は、抽象化された乗り物レベルでエミュレートされたＣＡＮトラフィック１４１０を提供することができるエミュレータ１４０８と結合される２つのインバータ／モータ・コントロールｖＥＣＵ  １４０２および１４０４、およびＣＡＮルータｖＥＣＵ  １４０６を含む。たとえば、以下に追加を論じているとおり、エミュレータ１４０８は、実世界のシステムと同様に、シミュレーションの間に通信ネットワークを占有することがあるエミュレートされたＣＡＮトラフィック１４１０を生成できる。
【００９４】
図１４に図解されているような複数のＥＣＵを含むシミュレーションは、複数のＥＣＵ、システム・パフォーマンス、および選択されたマイクロコントローラおよびハードウエア構成要素に関する異なるＥ／Ｅアーキテクチャの仮想実験および比較を可能にすることによって、システム設計の最適化および乗り物レベルの設計の最適化を可能にすることができる。図１−１３に関して上で論じたシミュレーション作成方法およびＧＵＩは、協調シミュレーション１４００および／またはそのほかの所望のシミュレーションの作成に使用できる。上で論じたネットワーク・コンピューティング・リソースは、作成されるシミュレーションをサポートするべく自動的にスケーリングされ、設計段階の初期に構成要素レベル、システム・レベル、および乗り物レベルのソフトウエア開発を可能にし、乗り物の全体的な開発時間を有意に短縮することができる。
【００９５】
図１４のシミュレーションは、プロセッサ・シミュレータ、すなわち図１等に関して上で論じたとおり、ここではｖＥＣＵと呼んでいる、これ以外では実世界のＥＣＵ内の実際のチップ上で実行されることになる実際のバイナリ・ソフトウエアを実行するべく構成されるＥＣＵのモデルを採用することができる。これらのｖＥＣＵは、対応する実世界のＥＣＵの、非常に正確なより低い抽象化の表現とすることができ、また特定のブランドまたはタイプのＥＣＵに対応するとし得る。１つの例として述べれば、多様な異なるＥＣＵ製造者のＥＣＵの適切なｖＥＣＵモデルは、カリフォルニア州マウンテンビューのシノプシス・インク（Ｓｙｎｏｐｓｙｓ  Ｉｎｃ．）から商的に入手可能である。たとえば、いくつかの場合においては、ｖＥＣＵ  １４０２および１４０４が、第１の製造者から入手可能な第１のブランドのＥＣＵに対応しており、ｖＥＣＵ  １４０６が、第１の製造者とは異なる第２の製造者から入手可能な第２のブランドのＥＣＵに対応しているとすることができる。したがって、いくつかの場合においては、ｖＥＣＵ  １４０２および１４０４は、ｖＥＣＵ  １４０６のそれとは異なる少なくとも１つのパフォーマンス・パラメータを有することができる。それに代えて、ほかの場合においては、ｖＥＣＵ  １４０２、１４０４、および１４０６が、すべて、同一のプロセッサ・シミュレータを使用することができる。
【００９６】
図１４の例は、複数のｖＥＣＵをまとめて統合し、これらのｖＥＣＵを、仮想コントローラ・エリア・ネットワーク（ＣＡＮ）バスを使用し、乗り物内における互いの通信のために実世界のＥＣＵが統合できる方法と類似の方法で統合する。その種の仮想マルチＥＣＵフレームワークをシミュレートすることによって、図１４の例は、速度およびパフォーマンスをはじめハードウエアの選択のためのＥ／Ｅ設計最適化を実施するべく使用できる。さらにまた、ここでのシミュレーション・プラットフォームを使用して、図１４の例は、追加のシステムの同時協調シミュレーションおよび／または全体の乗り物レベルのマルチＥＣＵ協調シミュレーションを含むべく拡張できる。たとえば、図１８に関して、以下に追加を論じているとおり、この例のエミュレータ１４０８は、いくつかの例においては複数の追加のｖＥＣＵに置き換えることができる。
【００９７】
この例においては、複数のｖＥＣＵ間のシミュレーション通信が、仮想ＣＡＮバス１４１２によって可能になる。たとえば、協調シミュレーション１４００内のｖＥＣＵ  １４０４上において実行している仮想ＣＡＮルータ１４１４は、仮想ＣＡＮバス１４１２にわたるいくつかの乗り物レベルのｖＥＣＵ通信をマネージできる。さらに、ｖＥＣＵ  １４０２とｖＥＣＵ  １４０４の間のシステム・レベルのｖＥＣＵ通信は、イリノイ州シカゴのキアステック・インク（ＣｈｉａｓＴｅｋ  Ｉｎｃ．）から入手可能なもの等の協調シミュレーション・バスの構成に基づいて通信できる。たとえば、協調シミュレーション・バスの第１のインスタンス１４１６は、ｖＥＣＵ  １４０２を用いて実装でき、協調シミュレーション・バスの第２のインスタンス１４１８は、ｖＥＣＵ  １４０４を用いて実装でき、協調シミュレーション・バスの第３のインスタンス１４２０は、エミュレータ１４０８を用いて実装できる。
【００９８】
ｖＥＣＵ  １４０２は、この例においては、高忠実度インバータ／モータ・モデルの第１のインスタンス１４２２とする第１のプラント・シミュレータとの通信のために接続され得る。それに加えて、ｖＥＣＵ  １４０４は、高忠実度インバータ／モータ・モデルの第２のインスタンス１４２４とすることができる第２のプラント・シミュレータとの通信のために接続され得る。たとえば、１４２６および１４２８にそれぞれ示されているとおり、高忠実度インバータ／モータ・モデル１４２２および１４２４は、それぞれのｖＥＣＵ  １４０２および１４０４と、たとえば図６に関して上で論じた信号バス接続に対応するとし得る直接協調シミュレーションによって通信できる。直接協調シミュレーションの例として述べれば、高忠実度インバータ／モータ・モデル１４２２は、ｖＥＣＵ  １４０２と同じ仮想マシン上において実行でき、高忠実度インバータ／モータ・モデル１４２４は、ｖＥＣＵ  １４０４と同じ仮想マシン上において実行できる。直接協調シミュレーションについては、以下に図１５に関して追加の詳細を論じる。
【００９９】
さらに、ｖＥＣＵ  １４０２は、第１のモータ・コントローラ１４２６のためのソフトウエアを実行でき、ｖＥＣＵ  １４０４は第２のモータ・コントローラ１４２８のためのソフトウエアを実行できる。したがって、１つの例としては、協調シミュレーション１４００を、モータ・コントローラ１４２６および１４２８が外部コントロール信号に対して意図されたとおりに応答するか、意図されたとおりに互いにインタラクションするか、また意図されたとおりに、それぞれの高忠実度インバータ／モータ・モデルに対してコントロール信号を出力するか、といったことを決定するための、モータ・コントローラ１４２６および１４２８の試験に使用できる。
【０１００】
上で論じたとおり、いくつかの例においては、ｖＥＣＵ  １４０２、１４０４、および１４０６のそれぞれを、図１のシミュレーション・プラットフォーム１０８によって提供される別々の仮想マシン上において実行できる。たとえば、ｖＥＣＵ  １４０２、協調シミュレーション・バスのインスタンス１４１６、および高忠実度インバータ／モータ・モデルのインスタンス１４２２は、第１の仮想マシン１１０（１）上において実行でき；ｖＥＣＵ  １４０４、協調シミュレーション・バスのインスタンス１４１８、および高忠実度インバータ／モータ・モデルのインスタンス１４２４は、第２の仮想マシン１１０（２）上において実行でき；ｖＥＣＵ  １４０６は、第３の仮想マシン１１０（３）上において実行でき；エミュレータ１４０８および協調シミュレーション・バスのインスタンス１４２０は、第４の仮想マシン１１０（４）上において実行できる。ほかの例においては、仮想マシンおよび／または物理マシンのこのほかの構成を使用できる。
【０１０１】
上で述べたとおり、エミュレータ１４０８は、ＣＡＮバス１４３２にわたって通信する複数のＥＣＵ  １４３０（１）、１４３０（２）、・・・、１４３０（Ｈ）の乗り物レベルのＣＡＮトラフィックをエミュレートするべく構成されたシミュレータとすることができる。１つの例としては、エミュレータ１４０８を、ミシガン州トロイのシムタビジョン・インク（Ｓｙｍｔａｖｉｓｉｏｎ  Ｉｎｃ．）から入手できる。エミュレータ１４０８は、乗り物レベルでエミュレートしたＣＡＮトラフィックを、協調シミュレーション・バス１４２０を介して仮想ＣＡＮバス１４１２上に渡すことができる。それに加えて、エミュレータ１４０８は、仮想ＣＡＮバス１４１２を越えて、高忠実度インバータ／モータ・モデル１４２２、１４２４の仮想速度をコントロールするための１つまたは複数の速度セット・ポイント１４３４を送るべく構成できる。仮想ＣＡＮルータ１４１４は、ペイロードとして速度セット・ポイント１４３４を伴ったＣＡＮメッセージをエミュレータ１４０８から受け取り、このＣＡＮメッセージを、それぞれのＣＡＮ識別子（ＩＤ）を伴った各ｖＥＣＵ  １４０２およびｖＥＣＵ  １４０４に伝播できる。たとえば、仮想ＣＡＮバス１４１２上の各ｖＥＣＵには、仮想ＣＡＮバス１４１２に関して一意的なＣＡＮ  ＩＤを割り当てるか、またはそのほかの形で個別に区別可能にすることができる。この例においては、ｖＥＣＵ  １４０２にＣＡＮ  ＩＤ  ０ｘ７４が、ｖＥＣＵ  １４０４にＣＡＮ  ＩＤ  ０ｘ７５が、ｖＥＣＵ  １４０６にＣＡＮ  ＩＤ  ０ｘ３０が割り当てられている。
【０１０２】
仮想ＣＡＮバス１４１２および仮想ＣＡＮルータ１４１４は、仮想マシン１１０（１）−１１０（４）を接続するネットワーク・タイプに応じて、イーサネット(登録商標)、光ファイバ、またはこの類といったＴＣＰ／ＩＰプロトコルを使用してＣＡＮ通信を渡すことができる。この例においては仮想ＣＡＮバスが１つだけ使用されているが、ほかの例においては、複数のＣＡＮバスをエミュレートするべくルータを構成することができる。さらに、図１４においては、ＣＡＮルータｖＥＣＵ  １４０６と仮想ＣＡＮバス１４１２の間に協調シミュレーション・バスを伴うことなくそれらの間に直接接続が示されている。これは、ｖＥＣＵ  １４０６自体を使用して、ほかのｖＥＣＵ  １４０２および１４０４、およびエミュレータ１４０８がそれぞれの協調シミュレーション・バス１４１６、１４１８、および１４２０を介してインターフェースするＣＡＮバス１４１２をホストすることによって達成できる。仮想ＣＡＮルータ１４１４がエミュレータ１４０８から速度セット・ポイント１４３４を受け取ると、仮想ＣＡＮルータ１４１４は、この通信をｖＥＣＵ  １４０２および１４０４の両方に、それらそれぞれのＣＡＮ  ＩＤを使用して伝播できる。協調シミュレーション１４００の１つの出力例は、各プラント・シミュレータ１４２２、１４２４のための３相インバータ／モータ速度コントロール出力を示すグラフとすることができる。
【０１０３】
図１５は、いくつかの実装に従ったモータ・コントローラ１４２６と高忠実度インバータ／モータ・モデル１４２２の間のインタラクションの一例１５００を図解している。１つの例としては、プラント・モデルを、たとえばケンタッキー州ハロズバーグのヒタチ・オートモティブ・システム・アメリカス・インク（Ｈｉｔａｃｈｉ  Ａｕｔｏｍｏｔｉｖｅ  Ｓｙｓｔｅｍｓ  Ａｍｅｒｉｃａｓ，  Ｉｎｃ．）から入手できる製品等の実際のインバータ／モータ製品からのデータを用いて特徴記述できる。この例においては、信号の第１のセット１５０２を、ｖＥＣＵ  １４０２上で実行するモータ・コントローラ１４２６によって生成される中心整列パルス幅変調（ＰＷＭ）とすることができる。さらに、信号の第２のセット１５０４を、モータ・コントローラ１４２６への３相電流およびコントロールされた速度（フィードバック）のためのアナログ−デジタル・コンバータ（ＡＤＣ）入力信号とすることができる。
【０１０４】
この例においては、ＷＩＮＤＯＷＳ(登録商標）共有メモリを使用する直接協調シミュレーション・インターフェースを使用して、ポイント・ツー・ポイント態様でプロセッサ・シミュレータ、ｖＥＣＵ  １４０２、およびプラント・シミュレータ１４２２の接続および協調シミュレーションを可能にすることができる。図解されている例においては、この共有メモリの直接協調シミュレーション・インターフェースが、バーチャライザ・システム・インターフェース１５０６として表されている。ｖＥＣＵ  １４０４と高忠実度インバータ／モータ・モデル１４２４の間における直接協調シミュレーションも同様に構成できる。
【０１０５】
図１６は、いくつかの実装に従った図１４の協調シミュレーション内におけるＣＡＮルータおよび仮想ＣＡＮバスの動作の一例１６００を図解している。上で述べたとおり、各ｖＥＣＵ  １４０２およびｖＥＣＵ  １４０４は、それぞれ静的に割り当てられたＣＡＮ  ＩＤ、すなわち０ｘ７４および０ｘ７５を有する。それに加えて、ｖＥＣＵ  １４０６もまた静的に割り当てられたＣＡＮ  ＩＤ、０ｘ３０を有する。仮想ＣＡＮルータ１４１４は、ペイロードとして速度セット・ポイント１４３４を伴ったＣＡＮメッセージをエミュレータ１４０８から受け取り、このＣＡＮメッセージを、それぞれのＣＡＮ  ＩＤを伴った各ｖＥＣＵ  １４０２およびｖＥＣＵ  １４０４に伝播できる。ＣＡＮルータｖＥＣＵ  １４０６は、２つの異なるシミュレーションの層、すなわち１つは乗り物レベルにおいてより低い忠実度を伴い、もう１つはシステム・レベルにおいてより高い忠実度を伴うシミュレーションの層に接続できる。これは、自動車Ｅ／Ｅアーキテクチャの一部の非常にリアルなユースケースを提供できる。それに加えて、この例における乗り物レベルのシミュレーションは、抽象化されたマルチＥＣＵの乗り物レベルのＣＡＮトラフィック・エミュレータ１４０８とすることができ、一方、システム・レベルのシミュレーションは、より低い抽象化およびより高い忠実度で働く高忠実度インバータ／モータ・モデル１４２２、１４２４、およびモータ・コントローラ１４２６および１４２８を含む。
【０１０６】
ＣＡＮルータは、静的に定義されたルータＣＡＮ  ＩＤ  ０ｘ３０において仮想ＣＡＮバス１４１２に送信されるＣＡＮメッセージを受け入れ、そのメッセージを複製し、そのメッセージを、仮想ＣＡＮバス１４１２にわたってｖＥＣＵ  １４０２およびｖＥＣＵ  １４０４に送信する。それぞれのｖＥＣＵ  １４０２および１４０４は、それぞれのメッセージを受信し、ＣＡＮメッセージのペイロードから獲得した目標速度セット・ポイントを用いて、それぞれのモータ・コントローラ１４２６および１４２８を実行する。
【０１０７】
それに加えて、乗り物レベルでエミュレートされたＣＡＮトラフィック１４１０のために、協調シミュレーションの間に生成されたフレームの大半は、実際の信号データをまったく含まない。それに代えて、ペイロード仕様を、各フレーム内に含められたデータの最小および最大量を（たとえば、バイト単位で）単に定義するだけの、より抽象化されたレベルで実装できる。それに加えて、フレームは、正しいＣＡＮ  ＩＤおよび厳密なアクティブ化パターンを用いて指定することができ、したがって、ちょうど実世界のシステムにおける場合のように、シミュレーションの間に仮想ＣＡＮバス１４１２を含む通信ネットワークを占有することができる。エミュレータ１４０８内においては、すべてのＥＣＵ  １４３０を、ネットワークしているインターフェースにおける挙動のみがエミュレータ・モデル内に含められるように、ブラックボックス・コンテナとすることができる。したがって、ブラックボックス・コンテナのためにとられるモデリング・アプローチは、最小および最大のペイロード・サイズの定義だけで、実際のフレーム・ペイロードの仕様を使用しないことがあり得る。これらのブラックボックス・モデルを機能的なｖＥＣＵ  １４０２、１４０４、および１４０６とインターフェースする目的のために、ＣＡＮ  ＩＤを使用する専用インターフェース・フレームに、あらかじめ定義済みの値、または値のシーケンスを、トランスミッション・パターンとともに（１０ミリ秒ごとに１回というように）割り当てることができる。これは、高忠実度モデルの一部ではなかった乗り物内のＥＣＵからセット値を誘導する能力を提供することができる。それに対し、ｖＥＣＵ  １４０２、１４０４、および１４０６によって送信されるフレームは、エミュレータ１４０８によって消費されることが許される。
【０１０８】
図１６に示されているとおり、モータの速度セット・ポイント１４３４が、エミュレータ１４０８から仮想ＣＡＮルータ１４１４に、仮想ＣＡＮバス１４１２を通じて送信される。仮想ＣＡＮルータ１４１４は、モータ速度セット・ポイント１４３４を受信し、メッセージをデコードし、同一のペイロードを伴う２つの複製された出側ＣＡＮメッセージを生成し、それらは、仮想ＣＡＮバス１４１２に送り戻される。第１のモータ速度セット・ポイント・メッセージ１６０２は、ＣＡＮ  ＩＤ  ０ｘ７４を使用し、したがって、ｖＥＣＵ  １４０２において受信され、第２のモータ速度セット・ポイント・メッセージ１６０４は、ＣＡＮ  ＩＤ  ０ｘ７５を使用し、したがって、ｖＥＣＵ  １４０４において受信される。
【０１０９】
図１７は、いくつかの実装に従った複数の物理的なコンピューティング・デバイスを含むシステム１７００上に構成された図１６の協調シミュレーション・アレンジメントの一例を図解している。たとえば、システム１７００は、第１のコンピューティング・デバイス１７０２および第２のコンピューティング・デバイス１７０４を少なくとも含むことができる。ｖＥＣＵ  １４０２および１４０６は、エミュレータ１４０８、仮想ＣＡＮバス１４１２、およびインバータ／モータ・モデル１４２２は、第１のコンピューティング・デバイス１７０２上において実行するべく構成でき、ｖＥＣＵ  １４２８およびインバータ／モータ・モデル１４２４は、第２のコンピューティング・デバイス１７０４上において実行するべく構成できる。第１のコンピューティング・デバイス１７０２および第２のコンピューティング・デバイス１７０４は、直接接続、ＬＡＮ、または前述した１つまたは複数のネットワーク１２４のいずれかとすることができる接続１７０６を通じて通信するべく構成できる。１つの例としては、接続１７０６をイーサネット(登録商標)接続とすることができ、協調シミュレーション・バス１４１８は、接続１７０６にわたって仮想ＣＡＮバス１４１２および協調シミュレーション・バス１４１６および１４２０と通信できる。したがって、図１６に関して前述したように、ＣＡＮバスを介しているかのように接続１７０６を通じてｖＥＣＵ  １４０４に速度セット・ポイント１６０４を伝えることができる。
【０１１０】
コンピューティング・デバイス１７０２および１７０４は、パーソナル・コンピュータ、サーバ、ワークステーション、ラップトップ、またはこれらの類といった多様な物理的コンピューティング・デバイスのいずれとすることもできる。いくつかの例においては、シミュレータおよびエミュレータを、コンピューティング・デバイス１７０２および１７０４上において直接実行できる。ほかの例においては、コンピューティング・デバイス１７０２および／または１７０４が、仮想マシンを実装し、シミュレータおよびエミュレータをそれらの仮想マシン上において実行できる。さらに、別の代替として、ｖＥＣＵ  １４０６および／またはエミュレータ１４０８を、ｖＥＣＵ  １４０２から、および／または互いに離して１つまたは複数の追加の物理的なコンピューティング・デバイス上において実行できる。この開示の恩典を受ける当業者には、このほかの多くの変形が明らかになるであろう。
【０１１１】
図１８は、いくつかの実装に従った複数のｖＥＣＵを含む一例の協調シミュレーション１８００を図解している。この例においては、図１４に関して前述した協調シミュレーションが、修正されてエミュレータ１４０８が取り除かれ、それぞれが別々の仮想マシン１１０（４）−１１０（Ｊ）上において実装できる複数のｖＥＣＵ  １８０２（１）−１８０２（Ｎ）が追加されている。さらに、各ｖＥＣＵ  １８０２（１）−１８０２（Ｎ）は、関連付けされた、この協調シミュレーション内において一意的なＣＡＮ  ＩＤを有するか、またはそのほかの形で個別に区別可能であるとすることができる。それに加えて、ｖＥＣＵ  １８０２（１）−１８０２（Ｎ）のうちのいくつかまたは全部は、実行のためにそれらの上にインストールされた、プラント・コントローラ１８０４（１）−１８０４（Ｎ）等のプラント・コントローラを有することができる。またそれに加えて、ｖＥＣＵ  １８０２（１）−１８０２（Ｎ）のうちのいくつかまたは全部は、プラント・シミュレータ１８０６（１）−１８０６（Ｎ）等のプラント・シミュレータが接続されているとすることができる。さらに、ｖＥＣＵ  １８０２（１）−１８０２（Ｎ）のうちのいくつかまたは全部は、通信のために仮想ＣＡＮバス１４１２、または別の仮想ＣＡＮバス、協調シミュレーション・バスのインスタンス１８０８（１）−１８０８（Ｎ）に接続することができる。
【０１１２】
協調シミュレーション１８００は、前述したとおり、図３−１２に示されているＧＵＩを使用して作成できる。それに加えて、ｖＥＣＵ  １８０２のうちの１つまたは複数は、速度セット・ポイント１４３４を、ｖＥＣＵ  １４０２および１４０４への転送のための仮想ＣＡＮルータ１４１４等に送信するべく構成されたコントローラを実行できる。それに加えて、そのほかのｖＥＣＵ  １８０２は、それらの上にインストールされたコントローラ・ソフトウエアまたはその類を実行して、乗り物内のシステムのほかの構成要素をシミュレートできる。したがって、協調シミュレーション１８００が実行されると、リアルな乗り物レベルのＣＡＮトラフィック１８１０が仮想ＣＡＮバス１４１２を横断して乗り物レベルの協調シミュレーションを提供する。協調シミュレーション１８００の出力の１つの例は、３相インバータ／モータ速度コントロール出力を示すグラフとすることができるが、ほかのｖＥＣＵ  １８０２（１）−１８０２（Ｎ）から、インストールされたソフトウエアのタイプおよび接続されているプラント・シミュレータのタイプに応じて、そのほかの多くの出力が生成され得る。
【０１１３】
図１９は、いくつかの実装に従ったネットワーク・コンピューティング・リソースの物理層の一例のアーキテクチャ１９００を図解している。アーキテクチャ１９００は、１つまたは複数のネットワーク１９０２にわたって互いに通信できる複数の物理的なコンピューティング・デバイス１０４を含む。いくつかの例においては、１つまたは複数のネットワーク１９０２をＬＡＮとすることができるが、ほかの例においては、１つまたは複数のネットワークが１つまたは複数のネットワーク１２４に関して上で論じたネットワークのタイプのいずれかとすることができる。コンピューティング・デバイス１０４は、ネットワーク・コンピューティング・リソース１０２の部分として１つまたは複数の指定機能を実施するべく選択可能に構成できる。たとえば、１つまたは複数のネットワーク・コンピューティング・デバイス１９０４は、１つまたは複数のネットワーク１２４にわたって通信を送信および受信するべく構成でき；１つまたは複数のマネジメント・コンピューティング・デバイス１９０６は、全体的なネットワーク・リソースをマネージするべく構成でき；１つまたは複数のストレージ・コンピューティング・デバイス１９０８は、ストレージ１０６上のデータのストレージをマネージするべく構成でき；複数のワーカー・コンピューティング・デバイス１９１０（１）−１９１０（Ｌ）は、割り付け済みネットワーク・コンピューティング・リソースとして使用するための仮想マシンまたは物理マシンの提供等のための多様な機能を行うために構成可能であるとし得る。
【０１１４】
それに加えて、代替構成においては、ネットワーク・コンピューティング・デバイス１９０４、マネジメント・コンピューティング・デバイス１９０６、および／またはストレージ・コンピューティング・デバイス１９０８のうちのいくつかまたは全部を仮想マシンとして実装することができる。さらに、いくつかの例のシステム・アーキテクチャをこの中で述べてきたが、この開示の恩典を受ける当業者には、このほかの多くのシステム・アーキテクチャが明らかになるであろう。
【０１１５】
ストレージ１０６は、情報のストレージのために任意タイプのテクノロジを含むことができ、複数のストレージ・デバイス１９１２を含むことができる。たとえば、ストレージ・デバイス１９１２は、限定ではないが、フラッシュ・メモリまたはそのほかのメモリ・テクノロジ、光学ストレージ、ソリッド・ステート・ストレージ、磁気テープ、磁気ディスク・ストレージ、ＲＡＩＤストレージ・システム、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、または任意のこのほかの、情報のストアに使用可能であり、かつコンピューティング・デバイスによるアクセスが可能な媒体を含むことができる。非一過性コンピュータ可読媒体と言うとき、それがエネルギ、搬送波信号、電磁波、および／または信号そのものといった媒体を除外するという点において、ストレージ・デバイス１９１２は、ストレージ１０６の構成に応じて、有体の非一過性コンピュータ可読媒体であるとすることができる。
【０１１６】
図２０は、いくつかの実装に従った一例のコンピューティング・デバイス１０４の選択した構成要素を図解している。いくつかの例においては、コンピューティング・デバイス１０４が、１つまたは複数のサーバまたはそのほかのタイプの、いろいろな方法で具体化できるコンピューティング・デバイスを含むことができる。たとえば、サーバの場合であれば、モジュール、そのほかの機能構成要素、およびデータ・ストレージを単一サーバ、サーバのクラスタ、サーバ・ファームまたはデータ・センタ等々に実装することができるが、そのほかのコンピュータ・アーキテクチャが追加的に、または代替として使用されることもある。図解されている例においては、コンピューティング・デバイス１０４は、１つまたは複数のプロセッサ２００２、メモリ２００４、１つまたは複数の通信インターフェース２００６、ストレージ・インターフェース２００８、１つまたは複数のローカル・ストレージ・デバイス２０１０、およびバス２０１２を含むか、それと関連付けすることができる。
【０１１７】
各プロセッサ２００２は、単一の処理ユニット、またはいくつかの処理ユニットとすることができ、単一または複数のコンピューティング・ユニットまたは複数の処理コアを含むことができる。プロセッサ２００２（１つまたは複数）は、１つまたは複数の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、状態マシン、論理回路、および／または任意の、動作インストラクションに基づいて信号を操作するデバイスとして実装が可能である。たとえば、プロセッサ２００２（１つまたは複数）は、ここで述べているアルゴリズムおよびプロセスを実行するべく具体的にプログラムされるか、または構成される任意の適切な、１つまたは複数のハードウエア・プロセッサおよび／またはタイプの論理回路とすることができる。プロセッサ２００２（１つまたは複数）は、メモリ２００４内にストアされているコンピュータ可読インストラクションをフェッチし、実行するべく構成可能であり、当該インストラクションは、ここで述べている機能を行わせるべくプロセッサ２００２（１つまたは複数）をプログラムすることが可能である。プロセッサ２００２（１つまたは複数）およびこのほかの図解された構成要素の間において通信されるデータは、バス２０１２またはそのほかの適切な接続を介して転送され得る。
【０１１８】
ローカル・ストレージ・デバイス２０１０（１つまたは複数）は、コンピューティング・デバイス１０４と同じ場所に配置され、少なくとも一時的にデータをストアするために使用され得る。いくつかの例においては、コンピューティング・デバイス１０４が、上で論じたストレージ１０６を、ローカル・ストレージ・デバイス２０１０のほかに、またはそれに代えて使用することがある。ストレージ・インターフェース２００８は、生データ・ストレージおよび、ローカル・ストレージ・デバイス２０１０（１つまたは複数）および／またはストレージ１０６への書き込み／読み出しアクセスを提供できる。
【０１１９】
メモリ２００４、ローカル・ストレージ・デバイス２０１０（１つまたは複数）、および上で論じた（図２０には示されていない）ストレージ１０６は、コンピュータ可読媒体２０１４の例である。その種のコンピュータ可読媒体２０１４は、コンピュータ可読インストラクション、データ構造、プログラム・モジュール、またはそのほかのデータといった情報のストレージのための任意タイプのテクノロジで実装される揮発性および不揮発性メモリおよび／または取り外し可能または取り外し不可の媒体を含むことができる。たとえば、コンピュータ可読媒体２０１４は、限定ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはそのほかのメモリ・テクノロジ、光学ストレージ、ソリッド・ステート・ストレージ、磁気テープ・ストレージ、磁気ディスク・ストレージ、ＲＡＩＤストレージ・システム、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、または任意のこのほかの、所望の情報のストアに使用可能であり、かつコンピューティング・デバイスによるアクセスが可能な媒体を含むことができる。非一過性コンピュータ可読媒体と言うとき、それがエネルギ、搬送波信号、電磁波、および／または信号そのものといった媒体を除外するという点において、コンピュータ可読媒体２０１４は、コンピューティング・デバイス１０４の構成に応じて、何らかのタイプのコンピュータ可読ストレージ媒体および／または有体の非一過性の媒体であるとすることができる。
【０１２０】
コンピュータ可読媒体２０１４は、プロセッサ２００２（１つまたは複数）によって実行可能な任意数の機能構成要素２０１６をストアするべく使用できる。多くの実装においては、これらの機能構成要素２０１６が、プロセッサ２００２（１つまたは複数）によって実行可能なインストラクションまたはプログラムを構成し、それらが実行されると、ここではコンピューティング・デバイス１０４に属する動作を行うべくプロセッサ２００２（１つまたは複数）を具体的に構成する。それに加えて、いくつかの例においては、コンピュータ可読媒体２０１４が、カリフォルニア州パロアルトのヴイエムウェア・インク（ＶＭｗａｒｅ，  Ｉｎｃ．）から入手できるもの等の、コンピューティング・デバイス１０４上における１つまたは複数の仮想マシンの実装を可能にする仮想マシン・ソフトウエア２０１８を含むことができる。さらに、コンピュータ可読媒体２０１４は、コンピューティング・デバイス１０４の多様な機能をコントロールし、マネージするためのオペレーティング・システム２０２０を含むことができる。
【０１２１】
それに加えてコンピュータ可読媒体２００４は、ここで述べている機能およびサービスを実施するために使用されるデータおよびデータ構造２０２２をストアできる。また、コンピューティング・デバイス１０４は、プログラム、ドライバ等、および関連付けされたデータを含むことができるこのほかの構成要素およびデータを含むか、または維持することもできる。さらに、コンピューティング・デバイス１０４は、多くのこのほかの論理的、物理的、およびプログラムによる構成要素を含むことができ、それらについて上で述べたことは、この中の論考に関係させた単なる例に過ぎない。
【０１２２】
通信インターフェース２００６（１つまたは複数）は、多様なほかのデバイスとの１つまたは複数のネットワーク１２４等にわたる通信を可能にするための１つまたは複数のインターフェースおよびハードウエア構成要素を含むことができる。たとえば、通信インターフェース２００６（１つまたは複数）は、この中のいずれかの場所で追加を列挙しているとおり、ＬＡＮ、ＷＡＮ、インターネット、ケーブル・ネットワーク、セルラ・ネットワーク、無線ネットワーク、有線ネットワーク（たとえば、光ファイバ、イーサネット(登録商標)、ファイバ・チャンネル）、直接通信、およびこれらの類のうちの１つまたは複数を通じた通信を可能にすることができる。
【０１２３】
さらに、図２０は、単一の場所内に存在するとしてコンピューティング・デバイスの構成要素およびデータを図解しているが、それに代えて、これらの構成要素およびデータが任意態様で異なるコンピューティング・デバイスおよび異なる場所にわたって分散されることはあり得る。その結果、機能が１つまたは複数のコンピューティング・デバイスによって実装され、上で述べた多様な機能が多様な形で異なるコンピューティング・デバイスにわたって分散されることがある。ここで述べた機能が、単一のエンティティまたは企業のサーバによって提供されること、または複数の異なる企業のサーバおよび／またはサービスによって提供されることはあり得る。それに加えて、クライアント・コンピューティング・デバイス１２２、マネジメント・コンピューティング・デバイス１３２、および／またはコンピューティング・デバイス１７０２および１７０４は、上で述べたものに類似したハードウエア構成を含むことができるが、異なる機能構成要素、ソフトウエア等々を含むこともできる。
【０１２４】
図２１は、いくつかの実装に従ったシミュレーションを実行するための一例のプロセス２１００を図解したフローチャートである。いくつかの例においては、プロセス２１００を、ネットワーク・コンピューティング・リソースに関連付けされた１つまたは複数のコンピューティング・デバイスによって、またはそのほかのコンピューティング・デバイスによって実行できる。
【０１２５】
２１０２においては、１つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスから、協調シミュレーションを構成するための１つまたは複数の入力を受信することができ、当該協調シミュレーションは、少なくとも第１のプロセッサ・シミュレータおよび第２のプロセッサ・シミュレータを含む。
【０１２６】
２１０４においては、１つまたは複数のコンピューティング・デバイスが、第１のプロセッサ・シミュレータを実行するための第１の仮想マシン、および第２のプロセッサ・シミュレータを実行するための第２の仮想マシンを含むコンピューティング・リソースを割り付けることができる。
【０１２７】
２１０６においては、１つまたは複数のコンピューティング・デバイスが、接続タイプのユーザ選択に基づいて、第１のプロセッサ・シミュレータと第２のプロセッサ・シミュレータの間の仮想バスを構成し、第１のプロセッサ・シミュレータと第２のプロセッサ・シミュレータの間の通信を可能にする。
【０１２８】
２１０８においては、１つまたは複数のコンピューティング・デバイスが、第１のプロセッサ・シミュレータによって実行されることになる第１のモデル・ファイルおよび第２のプロセッサ・シミュレータによって実行されることになる第２のモデル・ファイルの表示を受信できる。
【０１２９】
２１１０においては、１つまたは複数のコンピューティング・デバイスが、第１の仮想マシン上において第１のプロセッサ・シミュレータおよび第１のモデル・ファイルを実行できる。
【０１３０】
２１１２においては、１つまたは複数のコンピューティング・デバイスが、第２の仮想マシン上において第２のプロセッサ・シミュレータおよび第２のモデル・ファイルを実行できる。
【０１３１】
２１１４においては、１つまたは複数のコンピューティング・デバイスが、シミュレーションの結果をクライアント・コンピューティング・デバイスに送信させることができる。
【０１３２】
いくつかの例においては、図１に示されているようなシステムが、上で述べたプロセスを実施するべく構成された１つまたは複数のプロセッサを含むことができ、第１のプロセッサ・シミュレータと第２のプロセッサ・シミュレータの間において少なくとも１つの通信が通るように、第１のプロセッサ・シミュレータおよび第２のプロセッサ・シミュレータを含む協調シミュレーションを実行することができる。いくつかの例においては、協調シミュレーションが、さらに第１のプラント・シミュレータおよび第２のプラント・シミュレータを含むことができ、１つまたは複数のプロセッサが、第２の仮想接続を、第２のプラント・シミュレータと第２のプロセッサ・シミュレータの間に構成することができる。それに加えて、仮想バスを、ＴＣＰ／ＩＰプロトコルを使用して動作するべく構成された仮想コントローラ・エリア・ネットワーク・バスとすることができ、第１の仮想接続および第２の仮想接続を、共有メモリを使用する直接協調シミュレーション・インターフェースとして構成することができる。さらにまた、１つまたは複数のプロセッサが、仮想バスを介して通信を受信するため、および第１のプロセッサ・シミュレータまたは第２のプロセッサ・シミュレータのうちの少なくとも１つに対して通信を送信するための仮想ルータを実行するために、第３の仮想マシン上に第３のプロセッサ・シミュレータを構成することができる。
【０１３３】
それに加えて、１つまたは複数のプロセッサは、仮想バスと通信することができる第４の仮想マシンを構成できる。この第４の仮想マシンは、第１のプラントまたは第２のプラントのうちの少なくとも１つをコントロールするためのコントロール信号を送信するべく構成された第４のプロセッサ・シミュレータであって、それにおいては、ルータがそのコントロール信号を受信し、そのコントロール信号を第１のプロセッサ・シミュレータまたは第２のプロセッサ・シミュレータのうちの少なくとも１つに対して送信するべく構成される第４のプロセッサ・シミュレータ；または、シミュレートされたバス・トラフィックを、仮想バスを介して送信するためのエミュレータのうちの少なくとも１つを実行するべく構成できる。
【０１３４】
それに加えて、クライアント・コンピューティング・デバイスからの１つまたは複数の入力の受信に先行して、１つまたは複数のプロセッサが、クライアント・コンピューティング・デバイスに、そのクライアント・コンピューティング・デバイス上にＧＵＩを呈示するための情報を送信することができ、当該ＧＵＩは、協調シミュレーションの構成の選択を可能にする仮想コントロールを含む。１つまたは複数のプロセッサは、クライアント・コンピューティング・デバイスから、ＧＵＩを介して協調シミュレーションを構成するための１つまたは複数の入力を受信できる。さらに、１つまたは複数のプロセッサは、クライアント・コンピューティング・デバイスから、ＧＵＩを介して、協調シミュレーションの終了時間を少なくとも示す時間情報を受信することができ；クライアント・コンピューティング・デバイスから、ＧＵＩを介して、協調シミュレーションの実行を要求するインストラクションを受信することができ；そのインストラクションの受信に少なくとも部分的に応答して、その時間情報に従って協調シミュレーションを実行することができる。それに加えて、１つまたは複数のプロセッサは、コンピューティング・デバイスのうちの１つに追加の仮想マシンを割り付けること、およびその追加の仮想マシンの上においてシミュレーション・コントローラを実行することができる。たとえば、シミュレーション・コントローラは、シミュレーションの実行を監視すること；またはクライアント・コンピューティング・デバイスにシミュレーションの結果を送信させることのうちの少なくとも１つを行うべく構成することができる。
【０１３５】
それに加えてシステムは、複数の物理的なコンピューティング・デバイスおよびストレージを含むことができる。物理的なコンピューティング・デバイスのうちの１つまたは複数は、第１のプロセッサ・シミュレータおよび第２のプロセッサ・シミュレータを含むシミュレーションの表示をクライアント・コンピューティング・デバイスから受信し；物理的なコンピューティング・デバイスのうちの１つまたは複数の上において第１のプロセッサ・シミュレータのための第１の仮想マシンおよび第２のプロセッサ・シミュレータのための第２の仮想マシンを割り付け；第１のプロセッサ・シミュレータと第２のプロセッサ・シミュレータの間に仮想接続を構成し；第１のプロセッサ・シミュレータによって実行されることになる第１のモデル・ファイルおよび第２のプロセッサ・シミュレータによって実行されることになる第２のモデル・ファイルの表示を受信し；第１のプロセッサ・シミュレータおよび第１のモデル・ファイルを第１の仮想マシン上で実行し；第２のプロセッサ・シミュレータおよび第２のモデル・ファイルを第２の仮想マシン上で実行するべくプログラムできる。システムは、仮想マシンのうちの１つ上に構成されたプラント・シミュレータを含むことができ、１つまたは複数の物理的なコンピューティング・デバイスは、プラント・シミュレータと第１のプロセッサ・シミュレータの間に仮想接続を、その仮想接続が共有メモリを採用する直接協調シミュレーション接続となるように、構成するべくプログラムされ得る。１つまたは複数の物理的なコンピューティング・デバイスは、さらに、プロセッサ・シミュレータの間に、ＴＣＰ／ＩＰを使用する協調シミュレーション・バス等の仮想接続を構成するべくプログラムされ得る。
【０１３６】
図２２は、いくつかの実装に従ったシミュレーション・マネージャ・コンピューティング・デバイスおよび複数のシミュレーション・コンピューティング・デバイスを含む一例のアレンジメント２２００を図解している。さらにまた、上で述べたとおり、シミュレーション・コンピューティング・デバイス２５２、および／またはシミュレーション・マネージャ・コンピューティング・デバイス２３７のうちのいくつかまたはすべてを仮想マシンとするか、またはそれに代えて、それらのコンピューティング・デバイスのうちのいくつかまたは全部を別々の物理的なコンピューティング・デバイスとすることができる。ジョブ・ルータ２３６は、新しいシミュレーション・ジョブを、少なくとも部分的にジョブ・タイプ、ジョブ・パラメータ、利用可能なライセンス、および／または利用可能なコンピューティング・リソースに基づいてシミュレーション実行マスタ２３８に転送することができる。
【０１３７】
シミュレーション実行マスタ２３８は、それぞれが別々のシミュレーション・ジョブを実行するために構成される複数のシミュレーション実行ワーカー２４４（１）、２４４（２）、・・・のうちの１つとすることができるシミュレーション実行ワーカー２４４（１）にジョブを付与できる。いくつかの例においては、パラメータ・スイープ・マスタ２４０が、シミュレーション実行ワーカー２４４（１）に対してシミュレーション実行マスタ２３８がシミュレーション・ジョブを提供する前に、そのシミュレーション・ジョブのために使用されるパラメータを決定できる。それに加えて、またはそれに代えて、モデル合併整理マスタ２４２が、シミュレーション実行ワーカー２４４（１）に対してシミュレーション実行マスタ２３８がシミュレーション・ジョブを提供する前に、そのシミュレーション・ジョブによって使用されることになる１つまたは複数のモデルを合併できる。
【０１３８】
シミュレーション実行ワーカー２４４（１）は、そのシミュレーションのために必要とされるシミュレータの数等に基づいて、そのシミュレーションの実行のために使用されることになるコンピューティング・リソースとして１つまたは複数のシミュレーション・コンピューティング・デバイス２５２を割り付けることができる。さらに、シミュレーション実行ワーカー２４４（１）は、それぞれのシミュレーション・コンピューティング・デバイス２５２上のシミュレーションを、それぞれコントロールするために、それぞれの割り付け済みシミュレーション・コンピューティング・デバイス２５２上においてシミュレーション・コントローラ２４８をセットアップすることができる。たとえば、シミュレーション実行ワーカー２４４は、シミュレーション・ジョブのためにシミュレータ２５４（１）−２５４（Ｊ）を実行するシミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）として複数の仮想マシンを割り付けることができる。各シミュレータ２５４は、１つまたは複数のモデル・ファイル（図２２には示されていない）を含むか、またはそれにアクセスすることができる。したがって、この例においては、シミュレータ２５４（１）、２５４（２）、・・・がシミュレーション・コンピューティング・デバイス２５２（１）上において実行されることになり、シミュレータ２５４（Ｈ）−２５４（Ｊ）、・・・がシミュレーション・コンピューティング・デバイス２５２（Ｋ）上において実行されることになると仮定する。シミュレーションに関わるとき、各シミュレーション・コントローラ２４８は、シミュレーション実行ワーカー２４４（１）にレポートし、そこからのコマンドを受信する。
【０１３９】
各シミュレーション・コンピューティング・デバイス２５２上のシミュレーション・コントローラ２４８は、それぞれのシミュレーション・コンピューティング・デバイス２５２上において実行されることになるそれぞれ別々のシミュレータ２５４のために別々のワーカー・プロセス２２０２をセットアップできる。したがって、シミュレーション・コントローラ２４８（１）は、シミュレータ２５４（１）、２５４（２）、・・・それぞれのためのワーカー・プロセス２２０２（１）、２２０２（２）、・・・をセットアップできる。シミュレーション・コントローラ２４８（Ｋ）は、シミュレータ２５４（Ｈ）・・・２５４（Ｊ）それぞれのためのワーカー・プロセス２２０２（Ｈ）・・・２２０２（Ｊ）をセットアップできる。それに加えて、シミュレーション・コントローラ２４８は、そのシミュレーション・コントローラ２４８によってコントロールされるそれぞれのシミュレータ２５４による実行のために、ストレージ・ロケーションから１つまたは複数のモデル・ファイルを獲得できる。たとえば、シミュレーション・コントローラ２４８（１）−２４８（Ｋ）は、指定されたストレージ・ロケーションの、シミュレーション・ジョブ情報内に識別されたモデル・ファイルを要求できる。ワーカー・プロセス２２０２を通じて、シミュレーション・コントローラ２４８は、協調シミュレーションの間に、それぞれのシミュレーション・コンピューティング・デバイス２５２上で実行するすべてのシミュレータ２５４のワークスペースの起動、監視、終了、およびクリーンナップを行うことができる。それに加えて、シミュレータ２５４の起動、監視、および終了の間に、各シミュレーション・コントローラ２４８は、シミュレーション実行ワーカー２４４（１）にレポートを送信し、それが、すべての関係するシミュレーション・コンピューティング・デバイス２５２にわたってシミュレーション・プロセスを調和させるか、そのほかの形で指示を行う。
【０１４０】
１つの例として述べれば、シミュレータのうちの１つが失敗した場合、対応するシミュレーション・コントローラ２４８が、シミュレーション実行ワーカー２４４（１）がそのシミュレーションの残りをシャットダウンし、そのシミュレーションが訂正されるか、再開されるか、またはその類が行われるまで、ほかの用途のためにコンピューティング・リソースを解放できるように、その失敗をシミュレーション実行ワーカー２４４（１）に通知することができる。それに代えて、シミュレーション実行ワーカー２４４（１）は、その失敗が、失敗したシミュレータ上で特定のモデルの実行が完了した後に生じたことを決定することができ、シミュレーションのほかの部分の実行を継続できる。このようにシミュレーション実行ワーカー２４４（１）は、関係するすべてのシミュレーション・コンピューティング・デバイス２５２（１）−２５２（Ｋ）にわたるシミュレーションの実行をマネージできる。
【０１４１】
図２３は、いくつかの実装に従ったパラメータ試験セット内におけるパラメータ・スイープ情報の一例２３００を図解している。この例においては、ユーザが、たとえばシミュレートされるシステムについての最適パフォーマンスを決定するために、異なるパラメータ・セットを使用して行われる、シミュレートされるシステムの試験を望んでいると仮定する。たとえば、ユーザが、異なるシミュレータ・ベンダによって提供された複数の異なるシミュレータのために構築される複数のモデルについてパラメータ・セットの確立を希望できる。したがって、ユーザは、特定のシミュレータ上において実行されることになる特定のモデルのために、そのシミュレーションがスイープできるか、またはそのほかの形で横断できるパラメータのセットを指定できる。たとえば、ユーザは、（１）増分ステップ・サイズを伴う範囲、または（２）試験されるべき離散的な値のリストのうちの少なくとも１つの形式でセットされる所定のパラメータを伴うモデルを自動的にインスタンス作成するパラメータ・スイープをセットアップできる。
【０１４２】
図２３の例においては、ユーザが、シミュレーション内に含まれるモデルＡおよびモデルＢのためにパラメータ・スイープ構成２３０２をセットアップしたと仮定するが、当該シミュレーションは、シミュレータおよびそのほかのモデルを含むこともあり、含まないこともある。たとえば、モデルＡは、２つまたはそれより多くのパラメータを含むことができる。それらのパラメータのうちの２つ、すなわちＲ１およびＬ１は、パラメータ・スイープのために構成され、パラメータＲ１は、５ｋΩから１５ｋΩまで１０ｋΩの増分でスイープするべく構成され、パラメータＬ１は、１０ｍＨから２０ｍＨまで１０ｍＨの増分でスイープするべく構成される。それに加えてモデルＢは、１つまたは複数のパラメータを含むことができる。それらのパラメータのうちの１つ、パラメータＣ２は、１μＦから２μＦまで１μＦの増分でスイープするべく構成される。ユーザからのこれらの入力を基礎として、シミュレーション・プラットフォームは、異なる範囲および異なる増分に基づく複数のパラメータ試験セットを決定できる。図解されている例においては、それぞれがシミュレーション内において試験する異なるパラメータのセットを含む８個の試験セット２３０４（１）−２３０４（８）が決定される。増分がより小さい場合または範囲がより大きいといったほかの例においては、パラメータＲ１、Ｌ１、およびＣ２の可能なすべての組合せを試験するために、はるかに多くの試験セットが決定されることがある。
【０１４３】
さらに、いくつかの例においては、ここでのシミュレーション・プラットフォームが、異なる仮想マシン上においてインスタンス作成されたシミュレータ上に異なるパラメータ・セットを展開すること等によって、インスタンス作成されたモデルを、異なるパラメータ・セットを用いて、並列に自動的に実行できる。それに加えて、シミュレーション・プラットフォームは、協調シミュレーションの間に行われる、ベンダを横断する、多モデルのパラメータ・スイープをサポートできる。たとえば、シミュレーション・プラットフォームは、第１のシミュレータによって作られるモデルＡ内の第１のパラメータのＸ個の値のスイープを可能にし、それとともに第２のシミュレータによって作られるモデルＢ内の第２のパラメータのＹ個の値のスイープを可能にし、それとともに第３のシミュレータによって作られるモデルＣ内の第３のパラメータのＺ個の値のスイープを可能にする等々いったことができる。このようにシミュレーション・プラットフォームは、スイープされることになる３つのパラメータの可能な組合せを試験するＸ×Ｙ×Ｚ個の実行を生成できる。さらに、図２３に図解されているとおり、シミュレーション・プラットフォームは、協調シミュレーション内において、各モデル内で１より多くのパラメータのスイープを実施すること、および／または複数のモデルのパラメータのスイープを実施することができる。
【０１４４】
図２４は、いくつかの実装に従ったパラメータ・スイープを含むシミュレーションを実行するための一例のプロセス２４００を図解したフローチャートである。プロセス２４００は、ネットワーク・コンピューティング・リソースに関連付けされた１つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。１つの例として述べれば、プロセス２４００の少なくとも一部は、図２および図２２に関して上で論じたパラメータ・スイープ・マスタ２４０の実行によって行うことができる。
【０１４５】
２４０２においては、１つまたは複数のコンピューティング・デバイスが、シミュレーションの実行において使用するためのパラメータ・スイープ情報を受信できる。たとえば、このパラメータ・スイープ情報は、スイープのために選択された各パラメータについて、パラメータのための範囲および増分；またはパラメータのための値のセットのうちの少なくとも１つを含むことができる。
【０１４６】
２４０４においては、１つまたは複数のコンピューティング・デバイスが、Ｎ＝１等のようにインデクスを開始できる。
【０１４７】
２４０６においては、１つまたは複数のコンピューティング・デバイスが、選択されたモデルＮのためのスイープ情報を読み出すことができ、モデルＮ内にＫ個のスイープするべきパラメータがあるとすれば、各スイープするべきパラメータは、「範囲および増分」または離散的リストのいずれかとして与えられるＸｋ個の可能性のある値を有することができる。
【０１４８】
２４０８においては、１つまたは複数のコンピューティング・デバイスが、適用可能な「範囲および増分」または離散的なリスト等に基づいてパラメータＰのためのパラメータ値のＸ個のリストを生成する。
【０１４９】
２４１０においては、１つまたは複数のコンピューティング・デバイスが、Ｘ個のリストをシャッフルして組合せを作成し、Ｍ  Ｎ＝Ｘ１×Ｘ２×・・・×ＸＫのパラメータ・セットをモデルＮ用に生成できる。
【０１５０】
２４１２においては、１つまたは複数のコンピューティング・デバイスが、モデルＮのＭＮ個のコピーを作成し、異なるパラメータ・セットを用いてそれぞれのインスタンスを作成できる。
【０１５１】
２４１４においては、１つまたは複数のコンピューティング・デバイスが、パラメータ・スイープ情報を受信したすべてのモデルが処理済みであるか否かを決定できる。
【０１５２】
２４１６においては、パラメータ・スイープ情報を受信したすべてのモデルが処理済みでない場合に、１つまたは複数のコンピューティング・デバイスが、インデクスＮをインクリメントし、次のモデルを処理できる。
【０１５３】
これに対して、２４１８においては、パラメータ・スイープ情報を受信したすべてのモデルが処理済みである場合には、１つまたは複数のコンピューティング・デバイスが、すべてのモデルからすべてのパラメータ・セットをシャッフルして組合せを作成し、Ｍ１×Ｍ２×・・・×ＭＮの協調シミュレーションを試験用に作成できる。
【０１５４】
図２５は、いくつかの実装に従ったモデルの合併整理の一例２５００を図解している。上で述べたとおり、ここでのいくつかの実装は、シミュレータの各使用、指定時間期間にわたるシミュレータの使用、またはこれらの類に対する支払等のライセンス料金の支払いを求めるプロプライエタリ・シミュレータの使用を可能にできる。たとえば、シミュレーションの実行時に、最終結果が生成されるまでの期間にわたってシミュレータ上でモデルを実行することができる。この実行期間の間、実行しているシミュレータは、対応するライセンスを排他的に占有できる。したがって、ほかのユーザは、ライセンスが利用可能になり、自分たちのシミュレーションを実行できるようになるまで待機しなければならないことがある。さらに、協調シミュレーションの実施時は、複数のタイプのシミュレータおよび複数のコピーが使用されることがあり、個人、会社、ユーザのグループ、またはそのほかのエンティティ等のユーザが、大規模シミュレーションまたはそのほかの所望のシミュレーションを実行するに充分な数のライセンスを有していないこともある。ここでのいくつかの例においては、追加のライセンスを購入しなくても、ユーザが、複数のより小さいモデルを単一のより大きなモデルに併合または合併整理し、それによってシミュレーションの実行のために必要とされるライセンスの数を低減することができる。したがって、合併整理は、同一のシミュレータを使用する複数のモデルを伴う大規模協調シミュレーションを、１つのライセンスしか利用可能でない場合でさえ、実行可能にすることができる。それに加えて、利用可能なライセンスの数が充分である場合でさえ、モデルの合併整理は、ライセンスの不必要な消費を低減し、不必要に消費されることになったはずのライセンスをほかのユーザに向けて利用可能にすることによって、全体的な効率の向上を助けることができる。
【０１５５】
図２５に図解されているとおり、第１のモデル２５０２および第２のモデル２５０４が、特定のシミュレーションのために構成され、第１のモデル２５０２および第２のモデル２５０４は、同一のシミュレータＡを使用すると仮定する。したがって、第１のモデル２５０２および第２のモデル２５０４は、いずれも実行のためにシミュレータＡを使用するライセンスを必要とする。モデルの合併整理が実施されなかった場合に、第１のモデル２５０２は、第１のシミュレータＡのインスタンス２５０６によって実行され、第１のシミュレータＡのインスタンスのための第１のライセンス２５１０を使用することができる。同様に、第２のモデル２５０４は、第２のシミュレータＡのインスタンス２５０８によって実行され、第２のシミュレータＡのインスタンスのための第２のライセンス２５１２を使用することができる。
【０１５６】
いくつかの例においては、第１のモデル２５０２および第２のモデル２５０４を、合併整理済みの第３のモデル２５１４に合併整理できる。たとえば、合併整理は、実行のための同一のシミュレータを使用すること等によって同一のライセンスが使用可能なモデルを識別することを含むことができる。合併整理されるモデルからヘッダを取り除き、複数モデルの実行を可能にするラッパー２５１６内にモデル・コアを、シミュレータのケイパビリティに少なくとも部分的に依存するが、逐次、交互、または並列のうちの少なくとも１つにおいて配置することができる。
【０１５７】
図２６は、いくつかの実装に従ったモデルの合併整理のための一例のプロセス２６００を図解したフローチャートである。プロセス２６００は、ネットワーク・コンピューティング・リソースに関連付けされた１つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。１つの例として述べれば、プロセス２６００の少なくとも一部は、図２および図２２に関して上で論じたモデル合併整理マスタ２４２の実行によって行うことができる。
【０１５８】
２６０２においては、１つまたは複数のコンピューティング・デバイスが、同一のライセンスおよび／または同一のシミュレータを使用できるモデルのグループを識別することができる。たとえば、コンピューティング・デバイスは、第１のライセンスおよび／または第１のシミュレータを使用する２つまたはそれより多くのモデルの第１のグループ、第２のライセンスおよび／または第２のシミュレータを使用する２つまたはそれより多くのほかのモデルの第２のグループ等々を決定することができる。１つの例として述べれば、モデル自体が、各モデルが互換性を有するシミュレータのバージョン（１つまたは複数）についての情報を有していることがあり、同一のシミュレータのバージョンと互換性のあるモデルは、概して合併整理が可能であると推定できる。
【０１５９】
２６０４においては、１つまたは複数のコンピューティング・デバイスが、インデクスＮ＝１を開始できる。
【０１６０】
２６０６においては、１つまたは複数のコンピューティング・デバイスがモデルＮのモデル・ファイルをスキャンして（１）ヘッダを除去し、（２）モデルのコアの定義を合併整理後のモデルのモジュールとしてラップし、（３）キャッシュ等にモジュールＮを保存することができる。いくつかの例においては、モデル・ファイルのスキャンが、合併整理後のモデル内の各モデルへの入力およびそこからの出力が適切に指向され得るように、各モデルについての構成要素および接続のリストの決定を含むことができる。
【０１６１】
２６０８においては、１つまたは複数のコンピューティング・デバイスが、同一のライセンスについてのすべてのモデルが処理ずみであるか否かを決定できる。
【０１６２】
２６１０においては、同一のライセンスについてのすべてのモデルが処理済みでない場合には、１つまたは複数のコンピューティング・デバイスが、インデクスＮを１インクリメントし、次のモデルＮを処理できる。
【０１６３】
２６１２においては、同一のライセンスについてのすべてのモデルが処理済みであれば、１つまたは複数のコンピューティング・デバイスが、すべての保存済みモジュール１−Ｎを、協調シミュレーションのために使用する合併整理済みモデル・ファイル内に移動できる。
【０１６４】
２６１４においては、１つまたは複数のコンピューティング・デバイスが、このほかにも、別のライセンスおよび／またはシミュレータのために合併整理できるモデルのグループがあるか否かを決定できる。
【０１６５】
別のライセンスおよび／またはシミュレータのために合併整理できるモデルのグループがほかにもある場合には、２６１６において、１つまたは複数のコンピューティング・デバイスが、次のモデル・グループのためにブロック２６０２−２６１０を反復できる。
【０１６６】
ほかには別のライセンスおよび／またはシミュレータのために合併整理できるモデルのグループがない場合には、２６１８において、１つまたは複数のコンピューティング・デバイスが、１つまたは複数の合併整理ずみモデルを使用する協調シミュレーションの実行に進むことができる。
【０１６７】
図２７は、いくつかの実装に従った複数のシミュレータを含むシミュレーションを実行するための一例のプロセス２７００を図解したフローチャートである。プロセス２７００は、ネットワーク・コンピューティング・リソースに関連付けされた１つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。
【０１６８】
２７０２においては、１つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスから、協調シミュレーションを構成するための１つまたは複数の入力を受信することができ、当該協調シミュレーションは、少なくとも第１のシミュレータおよび第２のシミュレータを含む。たとえば、クライアント・コンピューティング・デバイス上に呈示されているＧＵＩを介して１つまたは複数の入力を受信できる。
【０１６９】
２７０４においては、１つまたは複数のコンピューティング・デバイスが、第１のシミュレータを実行するための第１の仮想マシン、および第２のシミュレータを実行するための第２の仮想マシンを含むコンピューティング・リソースを割り付けることができる。別の例においては、単一の仮想マシンが、第１のシミュレータおよび第２のシミュレータの両方のために割り付けられる。
【０１７０】
２７０６においては、１つまたは複数のコンピューティング・デバイスが、第１のシミュレータの実行をコントロールするために第１の仮想マシン上において実行可能な第１のシミュレーション・コントローラ、および第２のシミュレータの実行をコントロールするために第２の仮想マシン上において実行可能な第２のシミュレーション・コントローラを構成できる。それに代えて、単一の仮想マシンが割り付けられる場合には、第１のシミュレーション・コントローラが、第１のシミュレータおよび第２のシミュレータの両方の実行をコントロールできる。
【０１７１】
２７０８においては、１つまたは複数のコンピューティング・デバイスが、第１の仮想マシン上における第１のシミュレーション・コントローラによる第１のシミュレータの実行と第２の仮想マシン上における第２のシミュレーション・コントローラによる第２のシミュレータの実行を指示することによって協調シミュレーションの実行を指示するために第３の仮想マシン上にシミュレーション・マネージャを構成できる。たとえば、シミュレーション・マネージャは、シミュレーションの実行の調和、マネージ、またはそのほかの指示を行うシミュレーション実行ワーカーを含むことができる。複数のシミュレーション実行ワーカーを有することによって、複数の関連のないシミュレーションを、シミュレーション・プラットフォームによって同時に実行することができる。
【０１７２】
２７１０においては、第１のシミュレーション・コントローラによって、協調シミュレーションの実行の一部として第１のシミュレータの実行を開始できる。
【０１７３】
２７１２においては、第２のシミュレーション・コントローラによって、協調シミュレーションの実行の一部として第２のシミュレータの実行を開始できる。
【０１７４】
２７１４においては、第１のシミュレーション・コントローラが、シミュレーション・マネージャに、第１のシミュレータの実行に関係する情報を送信できる。
【０１７５】
２７１６においては、第２のシミュレーション・コントローラが、シミュレーション・マネージャに、第２のシミュレータの実行に関係する情報を送信できる。
【０１７６】
２７１８においては、シミュレーション・マネージャ、第１のシミュレーション・コントローラ、または第２のシミュレーション・コントローラのうちの少なくとも１つが、クライアント・コンピューティング・デバイスに、協調シミュレーションの実行に関係する情報を送信できる。
【０１７７】
ここで述べた例のプロセスは、論考の目的のために提供されたプロセスの例に過ぎない。当事者には、多くのこのほかの変形が、ここでの開示に照らして明らかになるであろう。さらに、ここでの開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、および環境のいくつかの例を示しているが、ここでの実装が、ここに示して論じた特定の例に限定されることはない。さらにまた、記述され、図面内に図解されているとおり、この開示は、多様な実装例を提供している。しかしながら、この開示が、ここで述べられ、図解された実装に限定されることはなく、むしろこの分野の当業者に理解されているとおり、あるいは理解されることになるように、ほかの実装への拡張が可能である。
【０１７８】
ここで述べた多様なインストラクション、プロセス、およびテクニックは、コンピュータ可読媒体上にストアされ、ここではプロセッサ（１つまたは複数）によって実行されているプログラム・モジュール等の、コンピュータ実行可能インストラクションの包括的な文脈において考えることができる。概して言えば、プログラム・モジュールは、特定のタスクを実施するため、または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造、実行可能コード等々を含む。これらのプログラム・モジュール等は、仮想マシンまたはそのほかのジャスト・イン・タイム・コンパイル実行環境内等においてネイティブ・コードとして実行されること、またはダウンロードされて実行され得る。通常、プログラム・モジュールの機能は、多様な実装における希望に応じて結合され、または分散されることがある。これらのモジュールおよびテクニックの実装は、コンピュータのストレージ媒体上にストアするか、または何らかの形式の通信媒体にわたって送信できる。
【０１７９】
以上、発明の内容を構造的な特徴および／または方法論的な作用に特有な文言を用いて記述してきたが、付随する特許発明の範囲内に定義されている発明の内容が、ここで述べた具体的な特徴または作用に必ずしも限定されないことは理解されるものとする。むしろその逆に、具体的な特徴および作用は、請求の範囲の実装例の形式で開示されている。
【符号の説明】
【０１８０】
１００…システム
１０２…ネットワーク・コンピューティング・リソース
１０４…コンピューティング・デバイス
１０６…ストレージ
１０８…シミュレーション・プラットフォーム
１１０…仮想マシン
１１２…リソース・プール
１１４…仮想マシン・リソース・マネージャ
１１６…データベース・マネージャ
１１８…ストレージ、データベース、ストレージおよび／またはデータベース
１２０…ウェブ・インターフェース
１２２…クライアント・コンピューティング・デバイス
１２４…ネットワーク
１２６…シミュレーション・マネージャ
１２８…システム・マネージャ
１３０…アプリケーション
１３２…マネジメント・コンピューティング・デバイス
１３４…マネジメント入力
１３６…ユーザ
１３８…ブラウザ
１４０…ＧＵＩ情報
１４２…ユーザ入力
１４４…モデル
１４８…シミュレータ
１５０…シミュレーション・データ・コレクタ
１５２…物理接続
２１４…ウェブ・サーバ
２１６…ユーザ・ジョブ入力
２１８…ウェブ・ゲートウェイ・コンピューティング・デバイス
２２０…モデル・ファイル
２２２…ファイル・サーバ
２２４…シミュレーション・メタデータ
２２６…ジョブ・キュー・マネージャ・コンピューティング・デバイス
２２８…シミュレーション・ジョブ情報
２３０…ジョブ・キュー・マネージャ・プログラム、ジョブ・キュー・マネージャ
２３２…ジョブ・バッファ
２３４…新しいジョブ
２３６…ジョブ・ルータ
２３７…シミュレーション・マネージャ・コンピューティング・デバイス
２３８…シミュレーション実行マスタ
２４０…パラメータ・スイープ・マスタ
２４２…モデル合併整理マスタ
２４４…シミュレーション実行ワーカー
２４６…ジョブ情報
２４８…シミュレーション・コントローラ
２５２…シミュレーション・コンピューティング・デバイス
２５４…シミュレータ
２５６…モデル・ファイル
２５８…アップデート
２６０…シミュレーション構成情報
２６２…シミュレーション・ステータス情報
２６４…シミュレーション結果
３００…ＧＵＩ
３０２…ダッシュボード
３０４…シミュレーション
３０６…アクティブ仮想マシン
３０８…サーバＣＰＵ
３１０…サーバＲＡＭ
３１２…シミュレーション・ステータス
３１４…仮想マシン・ステータス
３１８…ダッシュボード仮想コントロール
３２０…シミュレーション作成仮想コントロール
４００…ＧＵＩ
４０２…構成要素レベルの仮想コントロール
４０４…システム・レベルの仮想コントロール
４０６…乗り物レベルの仮想コントロール
４１０…シミュレーション作成進捗図、進捗図
４１２…導入段階
４１４…『シミュレーション・タイプ選択』段階
４１６…『接続の定義およびファイルのアップロード』段階
４１８…『シミュレーション時間設定』段階
４２０…『シミュレーション確認』段階
４２２…概要
４２６…オプション
４２８…オプション
４３０…オプション
４３２…オプション
４３４…オプション
４３６…『次へ』ボタン
５００…ＧＵＩ
５０２…シミュレーション・タイプ
５０４…ＥＣＵシミュレーション
５０６…ＥＭＣシミュレーション
５０８…信号フロー・シミュレーション
５１０…機械システム・シミュレーション
５１２…メカトロニクス・シミュレーション
５１４…ネットワーク・シミュレーション
６００…ＧＵＩ
６０２…シミュレータ表現、第１のシミュレータ、第１のモデル、シミュレータ
６０４…シミュレータ表現、第２のシミュレータ、第２のモデル、シミュレータ
６０６…接続
６０８…『なし』
６１０…『ＣＡＮバス』、仮想ＣＡＮバス
６１２…『信号バス』、仮想信号バス
６１４…第１の情報ボックス
６１６…第２の情報ボックス
６１８…選択可能なコントロール
６２２…『戻る』ボタン
７０２…ポップアップ・ウインドウ
９０２…ポップアップ・ウインドウ
９０４…仮想コントロール
９０６…仮想コントロール
１０００…ＧＵＩ
１００２…ステップ・サイズ
１００４…終了時間
１１００…ＧＵＩ
１１０８…仮想コントロール
１２０２…ポップアップ・ウインドウ
１２０６…『続行』ボタン
１２０８…『キャンセル』ボタン
１４０８…エミュレータ
２００４…コンピュータ可読媒体
２５０２…第１のモデル
２５０４…第２のモデル
【図１】
2018032392.tif 000003
【図２】
2018032392.tif 000004
【図３】
2018032392.tif 000005
【図４】
2018032392.tif 000006
【図５】
2018032392.tif 000007
【図６】
2018032392.tif 000008
【図７】
2018032392.tif 000009
【図８】
2018032392.tif 000010
【図９】
2018032392.tif 000011
【図１０】
2018032392.tif 000012
【図１１】
2018032392.tif 000013
【図１２】
2018032392.tif 000014
【図１３】
2018032392.tif 000015
【図１４】
2018032392.tif 000016
【図１５】
2018032392.tif 000017
【図１６】
2018032392.tif 000018
【図１７】
2018032392.tif 000019
【図１８】
2018032392.tif 000020
【図１９】
2018032392.tif 000021
【図２０】
2018032392.tif 000022
【図２１】
2018032392.tif 000023
【図２２】
2018032392.tif 000024
【図２３】
2018032392.tif 000025
【図２４】
2018032392.tif 000026
【図２５】
2018032392.tif 000027
【図２６】
2018032392.tif 000028
【図２７】
2018032392.tif 000029