いくつかのここでの実装は、リアルなハードウエア・ベースの自動車埋め込みシステムをエミュレートすることが可能なネットワーク・ベースのシミュレーション・プラットフォームのためのテクニックおよびアレンジメントに指向されている。たとえば、シミュレーション・プラットフォームは、ネットワーク・コンピューティング・リソース上において構成される複数の仮想マシン等の複数のコンピューティング・デバイス上における協調実行のためのシミュレータをユーザが構成することを可能にするグラフィカル・ユーザ・インターフェースを含む。いくつかの例においては、シミュレータの同時実行が、シミュレーション・ノード上においてそれぞれのシミュレータを実行するワーカーをマネージするシミュレーション・コントローラによってコントロールされ得る。シミュレーション・マネージャ・ノード上において実行するシミュレーション実行ワーカーは、1つまたは複数の関係シミュレーション・ノードにわたるシミュレーション・プロセスを調和させることができる。
さらにまた、いくつかの例においては、シミュレーションの実行に先行して、そのシミュレーションにおいて使用されるべき複数のモデルが自動的に合併整理され得る。たとえば、シミュレーション・プラットフォームは、非トリビアル・ライセンス料金の支払いを要求することができるプロプライエタリ・シミュレータの使用を可能にできる。したがって、ここでの実装は、複数の小さいモデルを単一のより大きなモデルに合併整理してシミュレーションの間に使用される多くのライセンスを低減することができる。モデル合併整理マスタ・プログラムは、同一のライセンスを使用するモデルを決定すること、それらのモデルからヘッダを除去すること、およびそれら複数のモデルのそれぞれのコア定義のためのラッパーを生成し、たとえばシミュレーションの間に複数のモデルの逐次実行を可能にすることができる。
それに加えて、いくつかの例は、自動化されたパラメータ・スイープを可能にする能力を含むことができる。たとえば、ユーザが、システムについての最適パフォーマンスの決定等のために、パラメータの異なるセットを用いてそのシステムを実際に試すことを望むかも知れない。したがって、ここでのシミュレーション・プラットフォームは、ユーザがシミュレーションへの適用を望む1つまたは複数のパラメータの各パラメータについて、自動化されたパラメータ・セットの生成を可能にできる。シミュレーション・プラットフォームは、選択されたモデルのインスタンスを、生成されたパラメータ・セットを用いて生成し、漸増ステップ・サイズを用いる最小から最大の範囲に基づく形または離散的な値のリストに基づく形等を用いて、指定済みパラメータの自動化されたパラメータ・スイープをシミュレーションの間に提供できる。さらに、シミュレーション・プラットフォームは、異なるパラメータを使用するシミュレーションを異なる仮想マシン上に展開することによって、並列に、異なるパラメータ・セットを用いてインスタンス生成されたモデルを走らせることができる。それに加えて、シミュレーション・プラットフォームは、複数のパラメータの多様な組合せの試験等のために、多モデルおよび多パラメータのパラメータ・スイープを可能にできる。
いくつかの場合においては、シミュレーション・プラットフォームを使用し、異なるタイプの複数のシミュレータの同時実行を含むシミュレーションを構成し、実行することができる。たとえば、シミュレーション・プラットフォームは、個別の構成要素の機能のシミュレーション、複数の異なる構成要素のインタラクションのシミュレーション、システムのシミュレーション、複数のシステムのシミュレーション、乗り物全体のシミュレーション、またはこれらの類を可能にできる。シミュレーション・プラットフォームは、対応する実世界の構成要素の間における実世界の接続のシミュレーションのために、選択されたシミュレータの間の適切な接続タイプを確立できる。さらにシミュレーション・プラットフォームは、試験目標、動作確認、またはこれらの類を達成するためにユーザによって準備された1つまたは複数のモデルとともにユーザが採用できる事前構成済みシミュレーションを提供できる。
いくつかの例においては、シミュレーション・プラットフォームが、乗り物レベルでシミュレーションを生成するために、複数のECUの協調シミュレーションおよび関連付けされた構成要素およびシステムの作成を可能にできる。シミュレーション・プラットフォームは、複数の仮想ECU(vECU)およびそのほかのシミュレートされる構成要素またはシステムに関する異なるE/Eアーキテクチャの仮想実験、試験、および比較を可能にすることによって、乗り物システムの設計最適化を可能にする。ここでのシミュレーション・プラットフォームは、さらに、マイクロコントローラおよびハードウエア構成要素のパフォーマンスの試験および比較を可能にする。ここでのシミュレーション・プラットフォームは、乗り物レベルのシミュレーションをサポートするべく構成でき、それが、乗り物の設計段階の非常に初期において構成要素レベル、システム・レベル、および乗り物レベルのソフトウエア開発を可能にし、また乗り物のための全体的な開発時間を実質的に短縮できる。
いくつかの例においては、仮想CANバスを、TCP/IP(伝送制御プロトコル/インターネット・プロトコル)上に構築された協調シミュレーション・バスとして構成できる。したがって、複数の異なるvECUおよびそのほかのシミュレータ・モデルを、複数の異なる仮想および/または物理コンピューティング・デバイス上に構成することができ、また、異なる仮想および/または物理コンピューティング・デバイスにおいて展開されているにもかかわらず、仮想CANバスにわたってCANプロトコルを使用して通信することが可能となり得る。さらにまた、ここでの実装は、仮想CANバス上における何らかのCANトラフィックをマネージするべく提供できる仮想CANルータを含む。たとえば、仮想CANルータを独立のvECU上において実行し、イーサネット(登録商標)、光ファイバ等々を含む多様なネットワーク構成にわたって乗り物レベルのCANトラフィックを送受できる。1つの例として、CANルータを実行するvECUを、1つは乗り物レベルにおいてより低い忠実度を伴い、もう1つはシステム・レベルにおいてより高い忠実度を伴う2つの異なる層のシミュレーションに接続できる。
ここでのシミュレーション・プラットフォームは、インターネットまたはそのほかのネットワークにわたってアクセスできるネットワーク・コンピューティング・リソース(しばしば、クラウド・コンピューティング・リソースと呼ばれる)上に構成された複数の物理マシンおよび/または複数の仮想マシンといった複数のコンピューティング・デバイスを使用して実装できる。たとえば、ネットワーク・コンピューティング・リソース上における実装時に、ここでのシミュレーション・プラットフォームは、実質的に任意の望ましいスケールに拡張可能にすることができ、したがって、乗り物内のいくつかのまたはすべてのECUをはじめ、そのほかの乗り物の構成要素およびサブシステムのシミュレーションに使用することができる。したがって、シミュレーション・プラットフォームは、設計チーム等のユーザが複雑な高忠実度の大規模なシステム・レベルおよび乗り物レベルの協調シミュレーションを行うことを可能にする。
さらにまた、ここでのシミュレーション・プラットフォームは、簡素化されたシミュレーションのセットアップ、開始、および出力機能を含み、大規模の高忠実度協調シミュレーションを可能にする。たとえば、ユーザは、ウェブ・ポータルを介してシミュレーション・プラットフォームにアクセスすることができ、ユーザに、シミュレーションを作成するためのインストラクションをステップ・バイ・ステップで提供するグラフィカル・ユーザ・インターフェース(GUI)を使用することができる。したがって、ウェブ・ポータルは、シミュレーションを走らせるための高パフォーマンス・コンピューティング(HPC)パワーへのアクセスを随時随所で提供することができる。さらに、ユーザが自分たちのコンピュータ上に、シミュレーションを走らせるべく特化されたソフトウエアをインストールしていない可能性もあるが、シミュレーション・プラットフォームにアクセスするブラウザを使用することはできる。ここでの実装は、多様な異なるシミュレータおよび言語、個々のシミュレータ内の複数のソルバ、複数のドメインおよび物理、および複数の抽象化レベルをサポートできる。ここでの例においては、この機能が、HPCクラウド環境内で利用可能となり、異種協調シミュレーションのためのスケーラビリティ、パフォーマンスおよびシミュレーション・ソフトウエア・ライセンス管理を提供できる。
それに加えて、ユーザは、複数の高忠実度マイクロコントローラ・モデル・ベースのvECUの試験を含む、異なる抽象化レベルを伴うモデルを同時に試験できる。この抽象化レベルは、複雑な仮想システム・レベルおよび乗り物レベルのシミュレーションの大規模な試験を可能にする。それに加えて、ネットワーク・コンピューティング・リソースの使用は、ユーザに、HPCパワーへのアクセスを提供でき、仮想マシンにわたる作業負荷の分散を可能にし、それがさらにシステム・レベルおよび乗り物レベルのシミュレーションの効率を向上させる。
シミュレーションのセットアップに続いて、ユーザは、シミュレーションの終了時間および一度のシミュレーションのステップ・サイズを入力することができるが、この情報は、そのシミュレーションの中で使用されるすべてのシミュレータに対するグローバルな設定として適用できる。シミュレーション・プラットフォーム内に組み込まれる自動化を提供するGUIは、セットアップを著しく簡素化し、ユーザの少なからぬセットアップ時間を、特により複雑なシミュレーションについて節約できる。その結果として、シミュレーション・プラットフォームのために提供されたGUIは、シミュレーションの実行に必要とされるデータ入力の量を有意に低減でき、したがって、リワークが生じる入力誤りの可能性を低減する。さらにまた、クラウド環境またはそのほかのネットワーク・コンピューティング環境の使用は、スケーラブルな高パフォーマンスのコンピューティング・リソースへのアクセスを提供し、それによって設計チームは、大規模でより複雑なシミュレーションを走らせることが可能になる。たとえば、ここでの実装は、複数の仮想マシンにわたってシミュレータおよび作業負荷を分散し、システム・レベルおよび乗り物レベルのシミュレーションの効率を高めることができる。したがって、自動化されたセットアップによって提供される時間節約に起因して、さらにネットワーク・コンピューティング・インフラストラクチャの高パフォーマンスのコンピューティング・ケイパビリティおよびスケーラブル・リソースに起因して、ここでのシミュレーション・プラットフォームは、従来的なシステムを用いては可能でなかった高忠実度の大規模で複雑なシステム・レベルおよび乗り物レベルの協調シミュレーションの作成を可能にする。
それとは別に、ここでのプラットフォームは、仮想ハードウエア・イン・ザ・ループ・シミュレーション(vHILS)ケイパビリティを、ハードウエア・イン・ザ・ループ・シミュレーション(HILS)に加えて提供できる。たとえば、HILSは、実際のマイクロコントローラ・ハードウエアの、試験中のシステムの挙動をシミュレートするシミュレータへの接続を含むことができる。しかしながら、実際のハードウエアの使用は、シミュレーション・システムの柔軟性および有用性を制限することがある。したがって、ここでの例は、仮想マイクロコントローラまたはそのほかのプロセッサ・シミュレータおよび試験中のシステムのモデルを含むシミュレーションを含むことができるvHILSの使用も可能にする。vHILSの使用は、設計エンジニアに、多数のvECUを含むことがある複雑な仮想システム設計の試験を迅速に、HILS試験テクニックを用いて可能となるよりより早期の設計プロセスにおいて行わせる。その種の試験は、製品の品質を有意に向上させ、設計および製品開発のリワークを最小化し、かつ製品化時間をはかどらせることができる。したがって、ここでのシミュレーション・プラットフォームは、開発プロセスにおける早期のシミュレーションおよび試験を可能にできる。
ここでのシミュレーション・プラットフォームは、ユーザが、一度に多数の異種モデルを用いて作業することを可能にする。GUIによって提供される自動化されたセットアップおよびシミュレーション開始ケイパビリティは、大規模で複雑な、混合ドメインおよび物理の協調シミュレーションを可能にする。たとえば、シミュレーション・プラットフォームは、伝統的なモデル分割テクニックと高パフォーマンスのネットワーク・ベースのコンピューティング・リソースの自動割付を結合し、シミュレーション実行時間を短縮することができる。このようにユーザは、従来のソリューションを用いるより、より大きく、より複雑な異種の協調シミュレーションを行うことができる。たとえば、設計チームは、より多くの機能エリアおよび組織から、たとえばエンジン、ブレーキ、シャーシ、燃料、安全、および任意のそのほかの内部または外部のチームから、より多くのモデルを追加することが可能である。
論考の目的のため、いくつかの実装の例を、ネットワーク・コンピューティング・リソース上における複数のECUの協調シミュレーションの環境において説明する。しかしながら、ここでの実装が、提供される特定の例に限定されることはなく、ほかのタイプのコンピューティング環境、ほかのシステム・アーキテクチャ、ほかのタイプのシミュレーション等々に拡張されることが許され、それについてはここでの開示に照らしてこの分野の当業者には明らかなものとなるであろう。
図1は、いくつかの実装に従ったスケーラブル・シミュレーションのためのシステム100の一例のアーキテクチャを図解している。この例においては、ネットワーク・コンピューティング・リソース102が、複数のコンピューティング・デバイス104および関連付けされたストレージ106を含むことができる。以下に追加を論じているとおり、複数のコンピューティング・デバイス104は、多数の方法のいずれかで具体化できる1つまたは複数のサーバまたはそのほかのタイプのコンピューティング・デバイスを含むことができる。たとえば、サーバの場合においては、アプリケーション、プログラム、モジュール、またはそのほかの機能構成要素、およびデータ・ストレージの少なくとも一部を、少なくとも1つのサーバ上で実装すること、たとえば、サーバのクラスタ、サーバ・ファーム、またはデータ・センタ、クラウド・ホスト付きコンピューティング・サービス等々の中で実装することができるが、追加として、または代替としてほかのコンピュータ・アーキテクチャが使用されることもある。さらに、ストレージ106は、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、RAIDストレージ・システム、シン・プロビジョン型ストレージ・システム等々を含むことができる。
ネットワーク・コンピューティング・リソース102は、仮想マシン・リソース・マネージャ114によってリソース・プール112から割り付けることができる複数の仮想マシン110を含むことができるシミュレーション・プラットフォーム108を提供するべく構成できる。以下に追加を論じるとおり、仮想マシン・リソース・マネージャ114は、特定のシミュレーション・ジョブのためのシミュレーション・プラットフォーム108を提供するためにリソース・プール112からリソースを割り付けることができる。1つの例として、別々の仮想マシンを、シミュレーション内に含められるべき各vECUのために割り付けることができる。
それに加えて、データベース・マネージャ116が、シミュレーション・プラットフォーム108のための情報をストアし、かつ提供するべく構成されたデータベースを含むことができるストレージ118にアクセスすることができる。ストレージ118内に維持され、データベース・マネージャ116によってマネージされる情報の例には、シミュレーション・モデル、ユーザ情報、ライセンス情報、シミュレーション・ログ、シミュレーション結果、およびこれらの類を含めることができる。ネットワーク・コンピューティング・リソース102は、さらに、ユーザ・デバイスまたはその類といった1つまたは複数のクライアント・コンピューティング・デバイス122との1つまたは複数のネットワーク124にわたる通信が可能なウェブ・インターフェース120を含むことができる。
1つまたは複数のネットワーク124は、任意タイプのネットワークを含むことができ、それには、ローカル・エリア・ネットワーク(LAN);インターネット等のワイド・エリア・ネットワーク(WAN);セルラ・ネットワーク、Wi−Fi等の局所的な無線ネットワーク、および/または近距離無線通信等の無線ネットワーク;光ファイバ、イーサネット(登録商標)、ファイバ・チャンネルを含む有線ネットワーク、または任意のそのほかのこの種のネットワーク、直接有線接続、またはこれらの任意の組合せを含むことができる。したがって、1つまたは複数のネットワーク124は、有線および/または無線通信テクノロジのいずれも含むことができる。その種の通信のために使用される構成要素は、少なくとも部分的に、ネットワークのタイプ、選択された環境、またはこれらの両方に依存し得る。その種のネットワークにわたる通信のためのプロトコルは、周知であり、この中で詳しく論じることはしない。したがって、クライアント・コンピューティング・デバイス122(1つまたは複数)およびマネジメント・コンピューティング・デバイス132(1つまたは複数)は、有線または無線接続およびそれらの組合せを使用し、1つまたは複数のネットワーク124にわたってネットワーク・コンピューティング・リソース102と通信することが可能である。
さらに、シミュレーション・マネージャ126が、シミュレーション・プラットフォーム上におけるシミュレーションの実行をマネージできる。たとえば、シミュレーション・マネージャ126は、ユーザが特定のシミュレーションを実行するための充分なライセンスを有していることを保証できる。さらに、シミュレーション・マネージャ126は、シミュレーションの実行のタイミングをコントロールできる。1つの例として、ユーザが第1のシミュレーションを実行中であり、かつ実行のために第2のシミュレーションを提出したとすると、シミュレーション・マネージャ126は、そのユーザが有効で充分なライセンスを有しているか否かをチェックし、否であれば、第1のシミュレーションの実行の完了に続いて充分な数のライセンスが解放されるまで第2のシミュレーションの実行を遅延できる。
それに加えて、システム・マネージャ128または管理者等が、マネジメント・コンピューティング・デバイス132上においてアプリケーション130を使用して、シミュレーション・プラットフォーム108の多様な側面をコントロールするため、たとえばシミュレーション・プラットフォーム108の適切な動作を確保するために、マネジメント入力134をウェブ・インターフェース120に送信することができる。いくつかの例においては、アプリケーション130をブラウザとすることができるが、ほかの例においてはアプリケーション130を、シミュレーション・プラットフォーム108の構成をコントロールするためのプロプライエタリ・アプリケーションとすることができる。
それに加えて、ユーザ136とクライアント・コンピューティング・デバイス122とを関連付けすることができ、ユーザは、ウェブ・インターフェース120を通じてシミュレーション・プラットフォーム108にアクセスするために、クライアント・コンピューティング・デバイス122上のブラウザ138を使用できる。たとえば、ユーザ136は、ウェブ・インターフェース120にログインし、ユーザ136に対してGUIを呈示するためにブラウザ138によって使用され得るウェブ・ページ、実行可能スクリプト、またはこれらの類といったGUI情報140を受け取ることができる。たとえば、ユーザ136は、シミュレーション・プラットフォーム108上において実行するための所望のシミュレーションを構成するために、ブラウザ138とインタラクションしてユーザ入力142をウェブ・インターフェース120に提供することができる。さらにまた、いくつかの例においては、ユーザ136が、ストレージおよび/またはデータベース118内にストアできる1つまたは複数のモデル144をアップロードすることができる。それに加えて、またはそれに代えて、ユーザ136は、以下に説明を追加するとおり、ストレージおよび/またはデータベース118内にすでにある1つまたは複数のモデルを使用することができる。仮想マシン・リソース・マネージャ114、データベース・マネージャ116、ウェブ・インターフェース120、およびシミュレーション・マネージャ126のそれぞれは、1つまたは複数のコンピュータ・プログラム、それらの一部、またはそのほかの、物理的なコンピューティング・デバイス104のうちの1つまたは複数の上で実行できる実行可能コードに対応するとし得る。いくつかの例においては、これらのコンピュータ・プログラムの一部または全部を同一の物理的マシン104上および/または同一の仮想マシン110上で実行することができるが、ほかの例においては、これらのコンピュータ・プログラムの一部または全部、別々の物理的マシン、別々の仮想マシン等々の上で実行することができる。
いくつかの例においては、ユーザ136が、ブラウザ138によって呈示されるGUIを使用して、プロセッサ・シミュレータ(vECU)、プラント・シミュレータ、および/またはそのほかのタイプのシミュレータ等の複数のシミュレータ148を含めることができる所望のシミュレーションを構成できる。各シミュレータは、実世界の構成要素によって生成または受信される1つまたは複数の信号の生成または受信等のために、実世界の構成要素をエミュレートするべく構成できる。
1つの例として、シミュレータ148のうちの1つまたは複数がvECUとなる場合には、そのvECUを、実際のECUをエミュレートするべく構成できる。ECU(電子コントロール・ユニット)は、乗り物内のシステム、サブシステム、または構成要素のうちの1つまたは複数をコントロールする任意の埋め込みシステムを指す一般的な用語である。ECU上にインストールされているソフトウエアおよびそのECUの意図された目的に応じて、ECUは、バッテリ・マネジメント・ユニット(BMU)、ボディ・コントロール・モジュール(BCM)、ブレーキ・コントロール・モジュール(BCMまたはEBCM)、中央コントロール・モジュール(CCM)、中央タイミング・モジュール(CTM)、ドア・コントロール・ユニット(DCU)、電子/エンジン・コントロール・モジュール(ECM)、汎用電子モジュール(GEM)、ヒューマン−マシン・インターフェース(HMI)、モータ・コントロール・ユニット(MCU)、パワー・ステアリング・コントロール・ユニット(PSCU)、パワートレイン・コントロール・モジュール(PCM)、シート・コントロール・ユニット(STCU)、速度コントロール・ユニット(SCU)、サスペンション・コントロール・モジュール(SCM)、テレマティック・コントロール・ユニット(TCU)、トランスミッション・コントロール・モジュール(TCM)、および多様なそのほかのタイプのコントロール・モジュールまたはコントロール・ユニット等の多様な異なるタイプにカテゴリ分けすることができる。これらのECUは、しばしばまとめて乗り物のコンピュータと呼ばれるが、上で述べたとおり、乗り物内には50、100、またはそれを超える数のECUが存在する。さらに、場合によっては、1つのアッセンブリがいくつかの独立したECUを組み込んでいることがある。たとえば、PCMが、エンジンおよびトランスミッション両方のためのECUを含むことがある。
各ECUは、プロセッサ、メモリ、およびデジタルおよび/またはアナログ通信インターフェースを含むことができる。特定のECUによる実行のためのソフトウエアは、それぞれのECUに関連付けされたメモリにストアすることができ、そのECUが埋め込みシステムとして動作することを可能にする。ECUは、通常、乗り物のバスを越えて乗り物のバス・プロトコルに従って互いに通信できる。一例として述べるが、コントローラ・エリア・ネットワーク・バス(CANバス)プロトコルは、ECUおよびそのほかのデバイスがホスト・コンピュータなしに互いに通信することを可能にする乗り物のバス・プロトコルである。CANバスは、少なくとも2つの異なるタイプを含むことができる。たとえば、高速CANは、バスが環境の一端から他端に走る応用に使用できるが、ノードのグループがまとまって接続されるところではフォールト・トレラントCANがしばしば使用される。
ここでのシミュレーションにおいては、vECUを、物理的なコンピューティング・デバイス等のコンピューティング・デバイスまたは物理的なコンピューティング・デバイス上において実行される仮想マシンによって実行可能なプロセッサ・シミュレータとすることができる。したがって、ここで使用するとき、vECUは、前述したタイプのECUのいずれか、または多様なそのほかの乗り物コントロール・ユニット、コントロール・モジュール、またはこれらの類のいずれかのプロセッサ・シミュレータを含むことができる。さらに、vECUが、実際のECUプロセッサの実際の機能のエミュレーション、たとえば特定の製造者によって提供される実際のECUプロセッサのエミュレーションを行うプロセッサ・シミュレータであることから、ユーザは、実際のECU上にインストールされるべく意図されたコントロール・ソフトウエア等のソフトウエアを提供すること、およびそのvECU上においてそのコントロール・ソフトウエアを実行して、そのコントロール・ソフトウエアが意図されたとおりに動作するか否かを決定することができる。さらに、以下において論じられているとおり、ここでの実装は、実際の乗り物のCANバス上のECUの間における通信をエミュレートするために、互いの通信のための複数のvECUの接続を可能にする仮想CANバスおよび仮想CANルータを提供できる。それに加えて、実世界において実際のECUまたはそのほかの構成要素が接続されることになるシステム(すなわち、『プラント』)をシミュレートするべくエミュレートされたセンサ入力を提供すること等のために、ほかのタイプのシミュレータをvECUおよび/またはほかのタイプのシミュレータに、ほかのタイプの接続(たとえば、仮想信号バス)を通じて接続することができる。
この例においては、ユーザが、シミュレーションのために、複数のシミュレータ148(1)、・・・、148(M)を構成したと仮定する。それに応答して、仮想マシン・リソース・マネージャ114は、シミュレーション・プラットフォーム108における指定シミュレータ148の実行のために複数の仮想マシン110(1)、・・・、110(M)を割り付けることができる。いくつかの例においては、別々の仮想マシン110が、各シミュレータ148のために割り付けられるとし得るが、ほかの例においては、複数のシミュレータが同一の仮想マシン上において実行されるとし得る。それに加えて、仮想マシン・リソース・マネージャ114は、追加の仮想マシン・・・110(N)を、ほかのシミュレータおよび/またはシミュレーション・データ・コレクタ150を実行するために割り付けることができる。たとえば、シミュレーション・データ・コレクタ150は、シミュレーションを実行すること、シミュレーションの進捗のログ/レポートを受信すること、およびシミュレーションの結果を、その結果をストレージ118にストアするためにデータベース・マネージャ116に送信することをマネージでき、かつ/またはクライアント・コンピューティング・デバイス122に結果を送信するためにウェブ・インターフェース120に送信することができる。
これらの仮想マシン110は、イーサネット(登録商標)、または光ファイバ等のローカル・エリア・ネットワークとし得るか、または同一物理マシン上の複数の仮想マシンの場合であれば、物理的なコンピューティング・デバイスの内部バスを含むとし得る物理接続152を通じて互いに通信可能であるとすることができる。たとえば、仮想マシンは、TCP/IPまたはそのほかの適切な通信プロトコルを使用して通信できる。以下に追加を論じているとおり、いくつかの例においては、シミュレータ148のうちの1つを、接続152に沿ってのシミュレータ148の間の通信をコントロールするためのCANルータとして機能するべく構成されたvECUとすることができる。したがって、CANルータは、仮想マシン110の間の通信を可能にすることによって複数のvECU等の複数のシミュレータの間の仮想CANバスを提供し、それによって複数のvECUおよび/またはそのほかの互いに通信可能なシミュレータを含む複雑なシステム・レベルおよび乗り物レベルのシミュレーションの作成を可能にする。
図1のシミュレーション・プラットフォーム108は、乗り物の構成要素、乗り物のシステム、または乗り物全体をエミュレートするべく構成できる。所望のシミュレーションに基づいて、追加の仮想マシン110をシミュレーション・プラットフォーム108に割り付けるか、割り付けを解除してリソース・プール112に戻すことができる。その結果、乗り物の設計チームまたはそのほかのユーザは、シミュレーション・プラットフォーム108を使用して、以前は可能でなかった複雑性、忠実度、および抽象化のレベルの試験によって統合的システム信頼度の関心事を緩和できる。たとえば、シミュレーション・プラットフォーム108は、設計チームが複数の高忠実度仮想マイクロコントローラECUを同時に試験し、検証することを可能にし、始めから終わりまでのシミュレーション処理時間を、既存のツールと比較して最大で80%まで、短縮することができる。それに加えて、シミュレーション・プラットフォーム108は、大規模で複雑な協調シミュレーションの初期化を、既存のツールを用いるよりはるかに短時間で可能にし、シミュレーション関連のオーバーヘッド・コストおよび資本支出を有意に削減し、極めて重要なシミュレーション・モデルの知的財産を安全かつ確実に維持することができる。これらのシミュレーション・パフォーマンスの向上により、設計エンジニアリング・チームは、製品化時間パフォーマンスを劇的に加速し、製品を向上させ、コストを削減することができる。
シミュレーション・プラットフォーム108は、複数の高忠実度の仮想マイクロコントローラECUおよび非常に多様なシミュレーション・ツールを含むといった、広範多様なドメイン、物理、および抽象化のレベルにわたる高忠実度の大規模で複雑なシステム・レベルおよび乗り物レベルの設計の日常試験を可能にできる。以下に追加を論じているとおり、シミュレーション・プラットフォーム108は、自動化されたシミュレーション・セットアップ、開始、監視、およびレポート;安全なウェブ接続上の随所からアクセス可能な簡素化された時間効率の良いシミュレーション・プロセス;使用容易で情報価値のあるGUI;HPCクラウドのスケーラビリティ、セキュリティ、および柔軟性;複数の高忠実度の仮想ECUおよびそのほかの構成要素の試験能力;強化されたコラボレーション・ツール;および産業試験済み安全ケイパビリティを提供できる。
図2は、いくつかの実装に従ったシミュレーションを実施するための構成要素および動作を示したブロック図200の図解である。図2は、シミュレーション・ジョブの実行およびユーザ136への結果の提供のために含めることができる13の例の動作201−213の記述を含む。たとえば、シミュレーション・ジョブは、図1に関して上で論じたシステム100内のシミュレーション・プラットフォーム108を使用して実行できる。さらに、動作のいくつかまたはすべてを、ハードウエア、ソフトウエア、またはそれらの組合せにおいて実装できる。ソフトウエアの状況においては、動作が、1つまたは複数のコンピュータ可読媒体上にストアされたコンピュータ実行可能インストラクションを表すとすることができ、当該インストラクションは、1つまたは複数のプロセッサによって実行されると、プロセッサをプログラムして列挙されている動作を実施させる。概して言えば、コンピュータ実行可能インストラクションは、特定の機能を行うか、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、およびこの類を含む。ただし、動作が記述されている順序は、限定として解釈されるべきではない。いくつかの場合においては、記述されている動作を、ほかの順序で組み合わせるか、かつ/または並列に実施してプロセスまたは代替プロセスを実装することができ、必ずしもすべての動作が実行される必要はない。
201においては、ウェブ・サーバ214が、ユーザ136に関連付けされたクライアント・コンピューティング・デバイス122からユーザ・ジョブ入力216等のジョブ情報を受け取る。たとえば、ウェブ・サーバ214は、ウェブ・ゲートウェイ・コンピューティング・デバイス218上において実行できる。ウェブ・サーバ214は、図1に関して上で論じたウェブ・インターフェース120を提供することができ、ユーザ136は、そのウェブ・インターフェースを使用して、シミュレーション・プラットフォーム108による実行のためのシミュレーション・ジョブを構成できる。
202においては、1つまたは複数のモデル・ファイル220がユーザによって提供されるか、またはユーザによって選択され、ファイル・サーバ222によってマネージされ得る。いくつかの例においては、ファイル・サーバ222を、ストレージおよび/またはデータベース118と関連付けされるストレージ・コントローラとすることができる。ほかの例においては、ファイル・サーバ222を、ウェブ・ゲートウェイ・コンピューティング・デバイスまたはそのほかの、上で論じたシステム100内のコンピューティング・デバイス上において動作するソフトウエアとすることができる。別の代替として述べれば、ファイル・サーバ222およびデータベース・マネージャ116を、同一の機能構成要素の一部とすることができる。
203においては、シミュレーション・メタデータ224が、ストレージおよび/またはデータベース118内にストアされているとし得る。たとえば、ウェブ・サーバ214が、ユーザ・ジョブ入力216としてシミュレーションの構成についての情報を受け取ることができ、データベース・マネージャ116が、その構成情報を、シミュレーション・メタデータ224としてストレージおよび/またはデータベース118内にストアすることができる。いくつかの例においては、ストレージおよび/またはデータベース118を任意タイプのオブジェクト・ストレージとすることができ、ほかの例においては、ストレージおよび/またはデータベース118が、ドキュメント指向データベース、またはそのほかのタイプのデータベース等の実際のデータベース構造および構成要素を含むとすることができる。
204においては、ジョブ・キュー・マネージャ・コンピューティング・デバイス226が、データベース・マネージャ116にジョブ情報228を要求することなどによって、シミュレーション・ジョブ情報228をストレージ118から獲得することができる。たとえば、シミュレーション・ジョブ情報228は、ユーザ136によってセットアップされたシミュレーション・ジョブについての構成の詳細を含むこと、およびそのシミュレーション・ジョブの中で使用されるべきモデル・ファイル220を識別することができる。ジョブ・キュー・マネージャ・コンピューティング・デバイスは、シミュレーション・プラットフォーム108のためのジョブ・キューをコントロールするジョブ・キュー・マネージャ・プログラム230を含むことができ、さらに、シミュレーション・プラットフォーム108のためのジョブ・キューとしての働きを提供するジョブ・バッファ232を含むことができる。
205においては、ジョブ・キュー・マネージャ230が、ジョブ・バッファ232からシミュレーション・マネージャ・コンピューティング・デバイス237上のジョブ・ルータ236に新しいジョブ234を送ることができる。1つの例として、ジョブ・キュー・マネージャ230は、ジョブ・バッファ232内の次のジョブを求めるジョブ・ルータ236からの要求の受け取りに応答して新しいジョブ234を送ることができる。
206においては、ジョブ・ルータ236が新しいジョブ234を、少なくとも部分的にジョブ・タイプまたはパラメータに基づいて、またさらに利用可能なコンピューティング・リソースに基づいて転送することができる。たとえば、新しいジョブ234を、シミュレーション実行マスタ238、パラメータ・スイープ・マスタ240、および/またはモデル合併整理マスタ242のうちの少なくとも1つに転送できる。
207においては、シミュレーション実行マスタ238がジョブをシミュレーション実行ワーカー244に付与できる。いくつかの例においては、ユーザが、シミュレーションの間に1つまたは複数のモデル・パラメータに複数のパラメータ値が適用されるパラメータ・スイープの実施を希望することがある。その種の場合には、パラメータ・スイープ・マスタ240が、シミュレーション実行ワーカー244に対して新しいジョブを提供する前に、その新しいジョブに関連付けされるパラメータを決定できる。それに加えて、またはそれに代えて、モデル合併整理マスタ242が、シミュレーションの間における実行に先行してモデルの数を低減すること、シミュレーションを実行するために要求されるライセンスの数を低減すること等のために、シミュレーション・ジョブ234によって識別された1つまたは複数のモデルを合併整理することができる。
208においては、シミュレーション実行ワーカー244が、リソースを割り付けることができ、またジョブ情報246を使用して、1つまたは複数のシミュレーション・コンピューティング・デバイス252のそれぞれによって実行される1つまたは複数のシミュレーション・コントローラ248を、各シミュレーション・コンピューティング・デバイス252上のシミュレーション・ジョブをコントロールするために、セットアップすることができる。たとえば、シミュレーション実行ワーカー244は、複数のシミュレーション・コンピューティング・デバイス252(1)−252(K)を割り付けて、シミュレーション・ジョブのためのシミュレータ254(1)−254(J)を実行できる。各シミュレータ254は、1つまたは複数のモデル・ファイルを含むか、またはアクセスできる。各シミュレーション・コンピューティング・デバイス252(1)−252(K)上には、そこに提供されたシミュレーション・コントローラ248(1)−248(K)が存在し得る。さらに、シミュレーション・コンピューティング・デバイス252(1)−252(K)毎に1つまたは複数のシミュレータ254(1)−254(J)が存在し得る。さらにまた、上で述べたとおり、シミュレーション・コンピューティング・デバイス252、および/またはシミュレーション・マネージャ・コンピューティング・デバイス237、および/またはジョブ・キュー・マネージャ・コンピューティング・デバイス226、および/またはウェブ・ゲートウェイ・コンピューティング・デバイス218、および/またはファイル・サーバ222のうちのいくつかまたはすべてを仮想マシンとするか、またはそれに代えて、それらのコンピューティング・デバイスのうちのいくつかまたは全部を別々の物理マシンとすることができる。
209においては、シミュレーション・コントローラ248(1)−248(K)が、ファイル・サーバ222からモデル・ファイル256をプルできる。たとえば、シミュレーション・コントローラ248(1)−248(K)は、そのシミュレーション・コントローラによってコントロールされるそれぞれのシミュレータ254のための現在のシミュレーション・ジョブに割り当てられているジョブ情報246内に定義されているモデル・ファイル256を要求できる。
210においては、各シミュレーション・コントローラ248が、モデル/シミュレータを初期化し、シミュレーションを起動し、そのシミュレーションの実行間のシミュレーションを監視し、そのシミュレーションの完了に続いて後処理を実施することができる。シミュレーション実行ワーカー244は、シミュレーションの初期化および起動の指示等のために、それぞれのシミュレーション・コントローラ248(1)−248(K)の動作を調和させることができる。このようにシミュレーション実行ワーカー244は、関係するすべてのシミュレーション・コンピューティング・デバイス252(1)−252(K)にわたって、シミュレーションの実行をマネージできる。
211においては、シミュレーション・ジョブの間または完了に続いて、シミュレーション・コントローラ248および/またはシミュレーション実行ワーカー244が、データベース・マネージャ116およびストレージ118および/またはファイル・サーバ222にアップデート258をプッシュできる。たとえば、シミュレーションのステータスまたは結果をストレージおよび/またはデータベース118内にストアすることができる。上で述べたとおり、いくつかの場合においては、ファイル・サーバ222が、データベース・マネージャ116に加えて、またはその一部としてストレージ/データベース118のためのコントローラとしての働きを提供できる。
212においては、ウェブ・サーバ214が、アップデート258等に基づいて、シミュレーション構成情報260、シミュレーション・ステータス情報262、および/またはシミュレーション結果264をクライアント・コンピューティング・デバイス122に提供できる。
213においては、ユーザ136がクライアント・コンピューティング・デバイス122においてシミュレーション結果264を受け取ることができる。いくつかの場合によっては、その結果を、グラフまたはそのほかの人間可読情報の形式にすることができる。たとえば、ウェブ・サーバ214が、シミュレーション結果264および/またはシミュレーション・ステータス情報262および/またはシミュレーション構成情報260をクライアント・コンピューティング・デバイス122に送ることができる。さらにまた、上記の説明ではシミュレーション・プラットフォーム108上においてシミュレーション・ジョブを実施するために行われる動作の1つの例を示しているが、この開示の恩典を受ける当業者には、このほかの多くの可能性のある変形が明らかになるであろう。
図3は、いくつかの実装に従ったシミュレーション・ジョブの作成のための一例のGUI 300を図解している。この例においては、GUI 300が、ウェブ・インターフェースによってユーザに呈示できるダッシュボード302を描画し、ユーザが任意の既存のまたは以前の提出済みシミュレーション・ジョブのステータスを決定することを可能にする。たとえば、ダッシュボード302は、現在の、または完了したシミュレーション304、アクティブ仮想マシン306、サーバCPU 308および/またはサーバRAM 310のステータスを表示できる。それに加えてダッシュボード302は、シミュレーション・ステータス312および/または仮想マシン・ステータス314といった特定のパラメータについてのより詳細な情報を提供できる。この例においては、ダッシュボードが、現在のシミュレーションが97%完了していること、アクティブ仮想マシンのパーセンテージが利用可能な仮想マシンの75%であること、使用されているサーバCPUのパーセンテージが42%であること、使用されているサーバRAMのパーセンテージが33%であることを示している。
それに加えて、316に示されているとおり、複数の仮想コントロールを、GUI 300の異なる部分をユーザに呈示するために提供できる。たとえば、この例においては、ダッシュボード仮想コントロール318が強調表示されてダッシュボード302が表示のために選択されたことが示されている。仮想コントロール316は、さらに、新しいシミュレーションを作成するためのコントロール320、シミュレーション・ステータスを決定するためのコントロール322、現在のプロジェクトにアクセスするためのコントロール324、仮想マシン・ステータスを決定するためのコントロール326、およびユーザ・マネジメントを実施するためのコントロール328を含むことができる。1つの例として、ユーザが新しいシミュレーションの作成を希望していると仮定する。したがって、ユーザは、シミュレーション作成仮想コントロール320をクリックするか、またはそのほかの形でそれを選択することができ、それに応答して次に図4に関して論じるGUIが呈示され得る。
図4は、いくつかの実装に従った新しいシミュレーションの作出のために呈示できる一例のGUI 400を図解している。上で述べたとおり、ユーザが、シミュレーションを作成するための仮想コントロール320を選択したと仮定する。それに応答してGUI 400は、3つの追加の仮想コントロール、すなわち構成要素レベルのシミュレーションの作成を選択するための構成要素レベルの仮想コントロール402、システム・レベルのシミュレーションを選択するためのシステム・レベルの仮想コントロール404、および乗り物レベルのシミュレーションを選択するための乗り物レベルの仮想コントロール406を呈示できる。たとえば、構成要素レベルのシミュレーションは、乗り物の個々の構成要素の挙動をエミュレートするための1つまたは複数のシミュレータを使用することができ;システム・レベルのシミュレーションは、複数の構成要素を含むシステムをシミュレートするべく複数のシミュレータを使用することができ;乗り物レベルのシミュレーションは、乗り物内に含めることができる多くの異なる構成要素および/またはシステムをシミュレートするべく複数のシミュレータを使用することができる。これら3つの選択肢のそれぞれについて、ユーザによる選択時には、異なるオプションを異なるタイプのシミュレーションを作成するために呈示できる。この例においては、ユーザが、システム・レベルのシミュレーションを作成するためにシステム・レベルの仮想コントロール404を選択したと仮定する。その結果として、408に示されているとおり、GUI 400は、作成されるシミュレーションがシステム・レベルのシミュレーションであると示すことができる。
さらに、GUI 400は、シミュレーションの作成を通してユーザの案内を補助するシミュレーション作成進捗図410を含むことができる。この例においては、進捗図410が、導入段階412、『シミュレーション・タイプ選択』段階414、『接続の定義およびファイルのアップロード』段階416、『シミュレーション時間設定』段階418、および『シミュレーション確認』段階420を含み、次に、それぞれについて論じていく。
最初に、図4に図解されているとおり、導入段階412の間にGUI 400は、システム・レベルのシミュレーションを作成するための概要422を記述する導入ページを呈示でき、さらにそれは、424において、システム・レベルのシミュレーションのための要件を記述する。それに加えてGUI 400は、ワンタイム・シミュレーションを作成するためのオプション426、ワークフロー・シミュレーションを作成するためのオプション428、第1のタイプのECUシミュレーションを作成するためのオプション430、第2のタイプのECUシミュレーションを作成するためのオプション432、第3のタイプのECUシミュレーションを作成するためのオプション434等のシステム・レベルのシミュレーションを作成するための複数の選択可能なオプションを含むことができる。たとえば、ワークフロー・シミュレーションは、より後のシミュレーションがより手前のシミュレーションの出力を受け取る連続シミュレーションを含むことができる。それに加えて、ユーザは、下へのスクロールを行って、この例では図示されていないそのほかのオプションを選択できる。ユーザは、所望のオプションを選択した後に、『次へ』ボタン436を選択して、シミュレーション・タイプをさらに選択するための次の段階に進むことができる。
図5は、いくつかの実装に従ったシミュレーション・アプリケーションのタイプの選択のために呈示できる一例のGUI 500を図解している。ここでは、図4のGUI 400において、ユーザがワンタイム・シミュレーションを作成するオプションを選択し、その後に続いて、進捗図410に強調表示された段階414によって示されるとおり、シミュレーション・タイプを選択するべくGUI 500に進んだと仮定する。502に示されているとおり、GUI 500は、シミュレーション・タイプを選択するための複数のオプションを呈示できる。この例において選択できるシミュレーションの例は、ECUシミュレーション504、電磁適合性(EMC)シミュレーション506、信号フロー・シミュレーション508、機械システム・シミュレーション510、メカトロニクス・シミュレーション512、およびネットワーク・シミュレーション514を含む。また、いくつかの例の共通するシミュレーション・ユースケースがこの例の中に図解されているが、この開示の恩典をうける当業者には、ほかの例に含めることができるほかのタイプのシミュレーションも明らかになるであろう。さらに、ユーザは、選択したシミュレーション構成に、たとえばシミュレータ・ライブラリ等から選択できる追加のシミュレータのドラッグ・アンド・ドロップ等を使用して、マニュアルでさらにシミュレータを追加できる。
それに加えて、各シミュレーション・タイプ502は、そのシミュレーション・タイプに関連付けされた忠実度を表示できる。たとえば、シミュレーションの忠実度は、モデルまたはシミュレーションが、実世界の構成要素、システム、またはプロセスの状態および挙動を再現する程度を示すことができる。したがって、忠実度は、特定のモデルまたはシミュレーションの現実性の表示と考えることができる。たとえば、ユーザが機械システム・シミュレーション510をクリックするか、またはそのほかの形でそれを選択すると仮定する。516に示されているとおり、GUI 500は、選択された機械システム・シミュレーション510の忠実度についての情報を提示することができ、この例においてはその忠実度が混在することが示されている。ユーザは、所望のシミュレーション・タイプを選択した後に、『次へ』ボタン436を選択して次の段階に進むことができる。
図6は、いくつかの実装に従ったモデルの選択およびシミュレーション接続の定義のために呈示できる一例のGUI 600を図解している。ここでは、図5のGUI 500において、ユーザがシミュレーション・アプリケーションのタイプとして機械システム・シミュレーション510を選択し、その後に続いて、進捗図410に強調表示された段階416によって示されるとおり、接続を定義し、モデルを選択し、ファイルをアップロードするべくGUI 600に進んだと仮定する。602に示されているとおり、GUI 600は、ユーザがシミュレーションを構成することを可能にできる。この例においては、2つのシミュレータ表現602および604が追加された。いくつかの場合においては、シミュレータ表現602および604が、選択されたシミュレーション・アプリケーションに基づいてデフォルトで追加されるとすることができるが、ほかの場合においては、ユーザがライブラリにアクセスして1つまたは複数のシミュレータを追加することができる。たとえば、第1のシミュレータ602を『プラント・シミュレータ』と名前設定し、第2のシミュレータ604を『プロセッサ・シミュレータ』と名前設定するか、またはユーザによって選択された任意のそのほかの名前に設定できる。したがって、第1のシミュレータ602は、仮想『プラント』として、すなわちECUによってコントロールされる構成要素またはシステムとして構成することができ、第2のシミュレータ604は、プロセッサ・シミュレータとして、すなわちプラントをコントロールするvECUとして構成することができる。
シミュレータ602および604は、実世界の接続のシミュレーションに対応する接続606によって接続できる。たとえば、実際の乗り物構成要素およびシステムと同様に、いくつかのタイプのシミュレータは接続されず、いくつかのシミュレータはCANバスによって接続され、いくつかは信号バスによって、いくつかはほかのタイプの接続によって接続されるとすることができる。いくつかの例においては、選択されたシミュレーション・アプリケーションに基づいて、利用可能な接続のタイプが、実世界において可能なものに限定されることがある。たとえば、この例においては、選択が、『なし』608、『CANバス』610、および『信号バス』612に制限されている。この例においては、ユーザがこのシミュレーションにおける接続のために適切であるとして『信号バス』612を選択したと仮定する。
1つの例として、シミュレータ602は、トランスミッション(すなわち、機械システム)のシミュレーションに使用され、シミュレータ604は、トランスミッション・コントロール・ユニット(TCU)ECUをシミュレートするべく構成されたvECUとすることができる。たとえば、実世界のトランスミッションは、CANバス上ではなく信号バス上において信号を実世界のTCUに送信する1つまたは複数のセンサを含むことができる。したがって、現在のシミュレーションのために、仮想信号バス612が、シミュレータ602とシミュレータ604の間の接続タイプとして選択されている。これに対して、ユーザが、このシミュレーションに別のvECUを追加することを決定した場合には、ユーザは、シミュレータ604とその追加のvECUを、選択された接続として仮想CANバス610を使用して接続することができる。いくつかの例においては、GUI 600が、シミュレータ選択に基づいていずれの接続タイプを選択するべきかについてユーザに助言することができる。
それに加えて、この時点においては、これらのシミュレータが未完了としてマークされており、これは、ユーザがまだ、GUI 600内に表されている各シミュレータ602、604のために使用するモデル・ファイルを提供していないか、または選択していないことを示すことができる。GUI 600内には、各シミュレータ表現602、604のための情報ボックスを呈示できる。したがって、第1の情報ボックス614を第1のモデル602のために呈示し、第2の情報ボックス616を第2のモデル604のために呈示できる。各情報ボックスは、ユーザによって選択されて、対応するシミュレータのために使用されることになる1つまたは複数のモデル・ファイルをユーザがブラウズし、選択できる選択可能なコントロール618を含むことができる。それに加えてGUI 600は、特定のシミュレーションのために選択されたすべてのシミュレータを示す要約エリア620を含むことができ、さらに、ユーザが以前の選択の変更等のために以前のインターフェースに戻ることを希望する場合の『戻る』ボタン622を含むことができる。
図7は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図6のGUI 600の一例を図解している。この例においては、ユーザが、上で論じた選択可能なコントロール618を選択して第1のシミュレータ602に追加する1つまたは複数のモデル・ファイルを選択したと仮定する。それに応答してGUI 600内には、ポップアップ・ウインドウ702またはその類がユーザに呈示される。ユーザは、このポップアップ・ウインドウ702を使用して、シミュレータ602に追加できる1つまたは複数のモデル・ファイルをブラウズするか、そのほかの形で突き止めることができる。この例においては、ユーザが、『Transmission.xcn』という名前が付けられたモデル・ファイルを選択したと仮定する。ユーザは、そのモデル・ファイルを選択し、『開く』をクリックして選択したモデル・ファイルをシミュレータ602に追加できる。いくつかの例においては、モデル・ファイルを、ユーザのコンピューティング・デバイスからアップロードすることができ、ほかの例においては、すでにアップロードされ、上で論じたシミュレーション・プラットフォームに関連付けされたストレージ・エリアまたはデータベース内にストアされているモデル・ファイルを、ユーザが選択することができる。ユーザは、シミュレータ602に複数のモデル・ファイルを追加するためにこのプロセスを繰り返すことができる。
図8は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図6のGUI 600の一例を図解している。この例においては、ユーザが、選択可能なコントロール618を選択して第1のシミュレータ602に追加する1つまたは複数のモデル・ファイルを選択したと仮定する。それに応答してGUI 600内には、ポップアップ・ウインドウ802またはその類がユーザに呈示される。ユーザは、このポップアップ・ウインドウ802を使用して、シミュレータ602に追加できる1つまたは複数のモデル・ファイルをブラウズするか、そのほかの形で突き止めることができる。この例においては、ユーザが、『mEngine_eclass.m』、『Pt_Transmission.ixd』、『PT_Transmission.mdl』、『Run_ft4wd_eclass.m』、および『torq_conv_eclass.M』という名前が付けられた5つのモデル・ファイル804を選択したと仮定する。この例においては、ユーザが、806の『開く』を選択することによって、ここで選択したすべてのモデル・ファイルをシミュレータ602に追加することができる。ユーザは、同様にして第2のシミュレータ604に1つまたは複数のモデル・ファイルを追加できる。1つまたは複数のモデル・ファイルがシミュレータ602、604に追加されたときに、『未完了』の指定が取り除かれることがある。
図9は、いくつかの実装に従ったポート構成の検証のために呈示できる図6のGUI 600の一例を図解している。1つの例として、第1のシミュレータ602および第2のシミュレータ604のためのモデル・ファイルの選択に続いて、ユーザが『次へ』ボタン436を選択したと仮定する。それに応答してシステムは、シミュレータ602および604のためにポートが構成済みであるか否かを決定できる。たとえば、仮想CANバスをシミュレーションの中で使用するときには、ポートを、方向およびデータ型を用いて定義することによって構成できる。したがって、仮想CANバスを使用する場合であり、かつポートが構成済みでなければ、システムは、ポップアップ・ウインドウ902を提示して、ユーザに、シミュレータ602および604のためのポートの構成を促すことができる。ユーザが、すでにポートを構成済みである場合には、ユーザは、仮想コントロール904を選択して次のステップに進むことができるが、その逆に、ユーザが、まだポートを構成済みでない場合には、ユーザは、『ポートの構成』仮想コントロール906を選択して、新しいブラウザ・タブ内においてポート構成ユーティリティを起動できる。たとえば、以下に追加を論じているとおり、複数のvECUを含むシミュレーションのために、仮想CANバスを構成し、TCP/IPプロトコルまたはその類を使用して複数のvECUの間の通信を可能にすることができる。ユーザは、ポートの構成を完了した後に、シミュレーション作成の次の段階に進むことができる。
図10は、いくつかの実装に従ったシミュレーション時間の設定のために呈示できる一例のGUI 1000を図解している。ユーザは、接続の定義およびモデル・ファイルのアップロードを完了した後に、418に示されているとおり、シミュレーション時間を設定するGUI 1000が呈示される次の段階に進むことができる。1002に示されているとおり、ユーザは、シミュレーションのためのステップ・サイズを、たとえばマイクロ秒数で、またはそのほかの選択可能な単位を用いて設定できる。さらにユーザは、そのシミュレーションのための終了時間を選択でき、それによりシミュレーションが行われる全体的な時間をコントロールできる。この例においては、ユーザが、1004に示されているとおり、30秒を選択したが、ほかのタイプのシミュレーションのためにほかの時間単位を使用することもできる。通常、終了時間1004は、シミュレーションのための実行時間と一致しなくてよい。たとえば、30秒の終了時間1004が、実質的により長いシミュレーション実行時間、たとえば、数分、数時間、またはそれより長い時間に対応することがあり得る。
いくつかの例においては、動的システムを、指定した時間スパンにわたって連続する時間ステップでシステムの状態を計算することによってシミュレートできる。したがって、ステップ・サイズ1002は、状態が計算されるべき頻度を示し、終了時間1004は、システムの状態を計算するための時間スパンを指定する。一般に、ステップ・サイズがより小さいほど、シミュレーションがより正確になるが、トレードオフは、より小さいステップ・サイズを伴うシミュレーションがより長いコンピューティング時間、および/またはより多くのコンピューティング・リソースを消費することである。さらに、この例は、固定ステップ・サイズで図解されているが、ほかの例においては、ユーザが、いくつかのタイプのシミュレーションのために可変ステップ・サイズを設定できる。ユーザは、ステップ・サイズおよび終了時間の設定を完了すると、『次へ』ボタン436を選択して次の段階に進むことができる。
図11は、いくつかの実装に従ったシミュレーションの確認のために呈示できる一例のGUI 1100を図解している。ユーザは、シミュレーションの終了時間およびステップ時間の設定を完了すると、420に示されているとおり、シミュレーションを確認するための次の段階に進み、実行のためにそのシミュレーションを提出できる。ユーザには、ユーザが意図したとおりにシミュレーションが構成されていることをチェックし、確認する機会を提供できるGUI 1100が呈示される。たとえば、ユーザは、1102に示されているとおり、構成したシミュレーションが、忠実度が混在する機械システムのシミュレーションであること、1104に示されているとおり、2つのシミュレータが構成されていること、および1106に示されているとおり、指定した終了時間およびステップ・サイズがそのシミュレーションに設定されていることを確認できる。ユーザは、シミュレーションが適切に構成されていることを確認した後、『シミュレーションを実行する』仮想コントロール1108を選択することができる。それに対して、ユーザが変更を希望する場合には、ユーザは、『戻る』ボタン622を選択することができる。それに加えて、いくつかの場合においては、ユーザが、漸増態様等により複数のパラメータを通じて自動的に進行するシミュレーションを可能にするパラメータ・スイープ情報を提供するか、またはすでに提供済みであることがある。図23−24に関して以下に追加を論じているとおり、ユーザは、パラメータ・スイープ情報を提供することができ、シミュレーション・プラットフォームは、示されたパラメータを用いてシミュレーションを実行するべく構成され得る。
図12は、いくつかの実装に従ったモデル・ファイルの選択のために呈示できる図11のGUI 1100の一例を図解している。この例においては、ユーザが、シミュレーションを実行するために『シミュレーションを実行する』コントロール1108を選択したと仮定する。いくつかの例では、GUI 1100内において、ポップアップ・ウインドウ1202またはその類をユーザに呈示できる。ユーザは、このポップアップ・ウインドウ1202を使用して、『シミュレーション』、『モデルを合併整理してシミュレーション』または『保存(シミュレーションなし)』等の実行タイプ1204を選択できる。たとえば、ユーザが『モデルを合併整理してシミュレーション』を選択した場合に、シミュレーション・プラットフォームは、そのシミュレーションを実行するためのライセンス要件の最小化等のために、合併整理が可能なモデルの合併整理を試みることができる。ユーザは、実行タイプ1204から選択を行った後、『続行』ボタン1206を選択して、そのシミュレーションを実行のために提出することができる。これに対して、シミュレーションを実行しないこと、または訂正することをユーザが決定した場合には、ユーザは、『キャンセル』ボタン1208を選択できる。
以上の図面および説明は、シミュレーションの終了時間およびシミュレーションのステップ・サイズのための1つのグローバルなエントリをシミュレーション内のすべてのシミュレータに自動的に投入することができる、シミュレータをセットアップし、接続するためのツールを提供する。たとえば、ユーザは、呈示されたGUIを使用してシミュレーション時間を1回定義するだけでよく、システムは、そのシミュレーションに使用されるすべてのシミュレータに対して自動的かつグローバルにそのタイミング・データを投入することができる。したがって、設計エンジニア等のユーザが、各シミュレータを開いてマニュアルで各シミュレーション・ツールにデータを入力する必要はなく、特に、シミュレーション内に使用されるシミュレータの数が増加するに従って有意の時間節約を作り出す。
さらにまた、GUIを使用してシミュレーション・テンプレートを作成して保存することができ、それをオリジナルのテンプレートの作成者が再使用すること、またはチームのメンバの間で共有して全体的なチームの生産性を向上させることが可能である。たとえば、ここでのGUI内に使用可能な事前入力済みのテンプレートは、シミュレーションのセットアップのための効率的なテクニックを提供し、複雑な自動車設計の試験に使用され得る高忠実度の大規模シミュレーションのセットアップのために有用である。それに加えて、いくつかの例は、ユーザに、シミュレーションの開始に先行してモデルを合併整理するオプションを提供する。たとえば、複数のモデルを1つのモデルに合併整理することによって、シミュレーションは、より少ないソフトウエア・ライセンスを使用して大きなシミュレーションを走らせることができる。その種の合併整理は、シミュレーションを完了する時間を長くすることがあるが、ここでのネットワーク・コンピューティング・リソースの使用が、パフォーマンス損失の多くを軽減できる。それに加えて、ここでの実装が、シミュレーションが開始される前にすべての入力データおよびファイルに関する徹底したチェックを自動的に行うことができるので、失敗しがちなシミュレーションへの適用から時間、ライセンス、およびコンピューティング・パワーを節約する。
さらに、各シミュレータを別々に開き、各ツールをマニュアルでアクティブ化するという必要がなく、ここでのGUIが、それらの全体のプロセスを自動化し、ユーザが、複雑性とは無関係に単一の入力を用いて協調シミュレーションを開始することを可能にする。それに加えて、協調シミュレーションの中で使用されたすべてのシミュレータからの生データおよびグラフィカルな試験結果を1つの場所に合併整理できる。複数のシミュレータによって作られたあらゆる冗長なデータおよびチャートは除外できる。この自動化され、能率化された出力アプローチは、データのソーティングおよび可視化を単純化し、ユーザが設計の見識を容易に決定することを可能にできる。結果は、追加の分析のためにダウンロードできる。それに加えて、シミュレーション・プラットフォームがウェブ・ベースであることから、ユーザが任意の好都合な場所からシミュレーション・プラットフォームにアクセスできる。
ここでのシミュレーション・プラットフォームおよびGUIは、シミュレーション・ワークスペース内へのシミュレータのドラッグ・アンド・ドロップ;ツールの間のシミュレーション関係を定義するシミュレータの接続;シミュレータの間の接続のタイプの選択;シミュレーション設計構成のアップロード;負荷シミュレーション・モデル;グローバルなシミュレーション時間およびステップ・サイズの設定;および単一のキーストロークまたはそのほかのユーザ入力を用いたシミュレーションの開始を含む能率化されたシミュレーション構成プロセスを提供できる。ここでのGUIは、シミュレーション・プロセスを簡素化し、複雑でない指示を用いてユーザを案内し、ドラッグ・アンド・ドロップ機能を可能にし、構成プロセスの中のどこにユーザがいるかについての視覚的表示を提供する。開始後、ユーザは、キュー内の自分のシミュレーションを眺め、完了パーセンテージを監視することによって進捗を追跡できる。それに加えて、ユーザは、合併整理されたログおよび結果を検討すること、パラメータ・スイープを開始することおよび再び走らせることができる。
ここでのシミュレーション・プラットフォームは、オンザフライでスケーリングし、複雑な協調シミュレーションに適応可能な本質的に無制限のコンピューティング・リソースを提供できる。ユーザは、既存のシミュレータ・ソフトウエア・ライセンスを使用すること、またはシミュレーション・プラットフォームを通じてライセンス料を支払うことができる。それに加えて、ユーザのライセンスが、そのユーザと関連するほかの設計者/シミュレーションによって使用されている場合に、ユーザは、当該ほかのジョブが完了してライセンスが利用可能になった後にシミュレーション・ジョブを走らせるべくスケジュールできる。
それに加えて、ここでのシミュレーション・プラットフォームは、複数の高忠実度仮想ECUの試験を可能にし、かつ複数の高忠実度マイクロコントローラ・モデル・ベースの仮想ECUを一度に検証するべく使用することが可能である。いくつかの例においては、より複雑なシミュレーションを可能にするだけでなく、設計チームに、開発プロセスの早期における、すなわち物理的なプロトタイプ作成の前に、大規模システム構成を試験させる仮想HILS(vHILS)環境を作成できる。したがって、ユーザは、高忠実度の複雑なシステムを、乗り物開発プロセスのアーキテクチャおよび設計段階の間に試験することができ、コスト高のリワークをプロトタイプ作成が始まる前に回避できる。それに加えて、vHILSケイパビリティは、シミュレーションの測定および分析段階を行うために必要とされる時間をユーザが有意に短縮することを可能にできる。たとえば、オシロスコープ、マルチメータ、およびそのほかの測定デバイスを使用する厖大なマニュアル努力を必要とするHILSアプローチとは異なり、ここで提供されるvHILSアプローチは、シミュレーション・プロセスの一部として見識を自動的に生成できる仮想測定および分析デバイス(たとえば、スコープ、表示器等)を含み、それが、シミュレーション内のECUの数が増加するときであってさえ、時間、努力、および誤りのリスクを有意に低減できる。
ここでのシミュレーション・プラットフォームは、大規模協調シミュレーションを行うための標準的なフォーマットおよびアプローチを提供し、それが一貫性を構築し、共同研究を強化し、シミュレーション結果の品質を向上させる。たとえば、設計チーム等の複数の関係ユーザは、電気、機械、埋め込み演算、電磁、および/またはNVH(雑音、振動、荒々しさ)ドメイン;エンジン、ブレーキ、燃料構成要素、シャーシ、および/またはパワートレイン;設計、製造、および/または生産機能;OEM(相手先ブランド製品製造者)、ティア・ワン・サプライヤ、および/またはティア・ツー・サプライヤを含む異なるエンジニアのグループにわたる統合されたシミュレーションを作成するためにシミュレーション・プラットフォームを使用して共同できる。さらにユーザは、自分たちのチームから、および/またはサプライヤのチームまたはカスタマのチームから、共同研究者を招待してシミュレーションに参加させることができる。シミュレーション・プラットフォームは、複数ドメインにわたるセットアップ、ワークフロー、および結果の共有を可能にする。それに加えて、ユーザは、ユーザおよびユーザの共同研究者が使用できるシミュレーション・テンプレートおよびモデルのライブラリを作成できる。
図13、21、24、26、および27は、いくつかの実装に従ったプロセスの例を図解したフローチャートである。プロセスは、動作のシーケンスを表す論理的なフローチャートのブロックの集合として図解されており、そのうちのいくつかまたはすべては、ハードウエア、ソフトウエア、またはこれらの組合せにおいて実装され得る。ソフトウエアの状況においては、ブロックが、1つまたは複数のコンピュータ可読媒体上にストアされたコンピュータ実行可能インストラクションを表すとすることができ、当該インストラクションは、1つまたは複数のプロセッサによって実行されると、プロセッサをプログラムして列挙されている動作を実施させる。概して言えば、コンピュータ実行可能インストラクションは、特定の機能を行うか、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、およびこの類を含む。ただし、ブロックが記述されている順序は、限定として解釈されるべきではない。任意数の記述されているブロックを、任意の順序および/または並列に組み合わせてプロセスまたは代替プロセスを実装することができ、必ずしもすべてのブロックが実行される必要はない。論考の目的のため、ここでの例の中に記述されている環境、フレームワーク、およびシステムを参照してプロセスを記述するが、これらのプロセスは、広範多様なこのほかの環境、フレームワーク、およびシステムにおいて実装され得る。
図13は、いくつかの実装に従ったシミュレーションを構成するための一例のプロセス1300を図解したフローチャートである。いくつかの例においては、プロセス1300を、ネットワーク・コンピューティング・リソース102またはそのほかの適切なコンピューティング・デバイスを含む1つまたは複数のコンピューティング・デバイス104によって実行できる。
1302においては、1つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスからユーザのログインを受信し、そのクライアント・コンピューティング・デバイスに、ダッシュボードGUIを呈示させる情報を送信できる。たとえば、ダッシュボードは、ユーザに関連付けされた任意の現在のシミュレーション・ジョブのステータスを示すことができる。
1304において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレーション・レベル(たとえば、構成要素レベル、システム・レベル、乗り物レベル)の選択を受信できる。
1306において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレーション・タイプ(たとえば、ワンタイム・シミュレーション、ワークフロー・シミュレーション)の選択を受信できる。
1308において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、適用のタイプ(たとえば、ECU、機械、回路、状態フロー)の選択を受信できる。
1310において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、シミュレータの選択の表示およびシミュレータ間の接続のタイプの表示を受信できる。
1312において、その1つまたは複数のコンピューティング・デバイスは、図6に関して上で論じたとおり、選択されたシミュレータのための仮想バスまたはそのほかの仮想接続を構成できる。
1314において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、選択されたシミュレータを構成するためのモデル・ファイルの選択を受信できる。
1316において、その1つまたは複数のコンピューティング・デバイスは、インターフェースの一貫性をチェックできる。
1318において、その1つまたは複数のコンピューティング・デバイスは、クライアント・コンピューティング・デバイスから、終了時間およびステップ・サイズ等のシミュレーション時間情報を受信できる。
1320において、その1つまたは複数のコンピューティング・デバイスは、シミュレーションの設定を確認できる。それに加えて、いくつかの例においては、ユーザが、自動的に複数の異なるパラメータがモデルに適用されるパラメータ・スイープを含むシミュレーションの実施を希望することがある。したがって、ユーザは、図23−24に関して以下に追加を論じているとおり、パラメータ・スイープ情報を提供することができ、1つまたは複数のコンピューティング・デバイスは、示されたパラメータを使用して1つまたは複数のシミュレーションを実行するべく構成され得る。
1322において、その1つまたは複数のコンピューティング・デバイスは、ライセンスを確認し、シミュレーションを実行できる。たとえば、シミュレーション・マネージャは、選択されたシミュレータを実行するために充分な数のライセンスをユーザが有していることをチェックできる。ユーザが充分な数のライセンスを有しているが、そのいくつかは、現在、べつのシミュレーションのために使用中である場合に、シミュレーション・マネージャは、充分な数のライセンスが利用可能になるまでジョブを遅延させることができる。ユーザが充分な数のライセンスを有してない場合には、シミュレーション・マネージャが、ウェブ・インターフェースに、そのユーザに関連付けされたクライアント・コンピューティング・デバイス上にその結果に対するメッセージを送信させることができる。それに加えて、ユーザによる『整理統合して実行』の選択等に基づくか、またはデフォルトによって、1つまたは複数のコンピューティング・デバイスは、ライセンス要件の最小化および/またはシミュレーションによって実行されることになるモデルの数の低減等のために整理統合が可能なモデルの整理統合を試みることができる。図25および26に関して以下に追加を論じているとおり、同一のライセンスおよび/または同一のシミュレータを使用するモデルは、場合によっては整理統合して、シミュレーションの実行に求められるライセンスの数を低減することができる。さらに、シミュレーションの実行は、少なくとも部分的に、受信した、ユーザによって指定された終了時間およびステップ・サイズに基づくことができ、またさらに、適用可能であれば、パラメータ・スイープのために提供されたパラメータ・スイープ情報に基づくことができる。
1324においては、シミュレーションの実行に続いて、1つまたは複数のコンピューティング・デバイスは、シミュレーション結果をストレージ内にストアするか、かつ/またはその結果を、クライアント・コンピューティング・デバイス上における呈示のために送信することができる。
いくつかの例においては、上記のプロセスが、クライアント・コンピューティング・デバイスがグラフィカル・ユーザ・インターフェース(GUI)を呈示することを可能にする情報を、1つまたは複数のプロセッサによってそのクライアント・コンピューティング・デバイスに送信すること、およびそのクライアント・コンピューティング・デバイスから、GUIを介して、いくつかの例においては少なくとも2つのプロセッサ・シミュレータを含むとすることができる複数のシミュレータを含むシミュレーションを作成するインストラクションを示す第1のユーザ入力を受信することを含むとすることができる。プロセスは、シミュレータの間の接続のタイプの表示をクライアント・コンピューティング・デバイスからGUIを介して受信すること;各シミュレータと関連付けするそれぞれのモデル・ファイルの表示をクライアント・コンピューティング・デバイスからGUIを介して受信すること;シミュレーションを実行するためにコンピューティング・リソースを割り付けること;および、各シミュレータを実行し、各シミュレータに関連付けされたそれぞれのモデル・ファイルを実行することによってシミュレーションを実行することを、さらに含むとすることができる。さらにまたシミュレーションを実行するためにコンピューティング・リソースを割り付けることは、各シミュレータのためのそれぞれの仮想マシンの割り付けを含むことができ、さらに、シミュレーション・コントローラを実行するための仮想マシンの割り付けを含むことができ、それにおいてシミュレーション・コントローラは、シミュレーションの実行を監視すること、またはクライアント・コンピューティング・デバイスにシミュレーションの結果を送信させること、のうちの少なくとも1つを行うべく構成される。
したがって、ここでのシミュレーション・プラットフォームは、合計のシミュレーション処理時間を実質的に短縮できる(いくつかの場合においては、最大80%)。さらに、ユーザは、GUIを使用して、自動化されたプロセスおよびテンプレートの利用とともに、大規模で複雑な協調シミュレーションをセットアップし、開始することができる。したがって、ここでのシミュレーション・プラットフォームは、大規模システムのシミュレーションを、従来システムを用いて可能であるより、開発プロセスにおいてはるかに早期に可能にすることによって、設計のリワークを低減する。さらに、前述したとおり、シミュレーション・プラットフォームは、シミュレーションを走らせる前にモデルを合併整理すること、および複数のシミュレーション・ジョブにわたるソフトウエア・ライセンスの効率的な使用を監督する自動化されたライセンス割り付けに基づいて、シミュレータ・ソフトウエア・ライセンスをマネージすることができる。それに加えてシミュレーション・プラットフォームは、コンピューティング・リソースを必要に応じて自動的にスケーリングし、異なるサイズのシミュレーション・ジョブのための需要を満たすことができる。シミュレーション・プラットフォームは、ユーザの許可、仮想マシン(VM)の割り付け、ストレージの割り付け、およびこれらの類をマネージできる。たとえば、ユーザは、物理的なプロトタイプ作成に先行して大規模仮想システムの協調シミュレーションを可能にするvHILSアプローチを用いて、設計プロセスのより早い時期に製品の品質問題を検出できる。さらに、ここでのシミュレーション・プラットフォームは、チームの一貫性および協力を構築する標準的なシミュレーション・アプローチを使用することによってチームを横断する、エンド・ツー・エンドのシミュレーションの実践を強化する一方、データ入力要件を有意に減ずることによって人的誤りを低減できる。さらに、シミュレーション・プラットフォームは、暗号化および多要素認証ケイパビリティを用いて、ユーザが当該プラットフォームにアップロードしたシミュレーション・モデル・データおよびすべてのそのほかの情報を保護することができる。それに加えて、ネットワーク・コンピューティング・リソースによって提供されるストレージは、企業クラスのセキュリティ、障害復旧、およびバックアップ・ケイパビリティを採用することができる。
図14は、いくつかの実装に従った一例の協調シミュレーション1400を図解したブロック図である。たとえば、協調シミュレーション1400を、図3−13関して上で論じたGUIを使用し、図1に関して上で論じたシミュレーション・プラットフォーム108上において構成することができる。図14の例は、リアルなハードウエア・ベースの自動車埋め込みシステムに綿密に似せた仮想マルチECUの高忠実度サイバー−物理マルチレート協調シミュレーションを表している。この例は、抽象化された乗り物レベルでエミュレートされたCANトラフィック1410を提供することができるエミュレータ1408と結合される2つのインバータ/モータ・コントロールvECU 1402および1404、およびCANルータvECU 1406を含む。たとえば、以下に追加を論じているとおり、エミュレータ1408は、実世界のシステムと同様に、シミュレーションの間に通信ネットワークを占有することがあるエミュレートされたCANトラフィック1410を生成できる。
図14に図解されているような複数のECUを含むシミュレーションは、複数のECU、システム・パフォーマンス、および選択されたマイクロコントローラおよびハードウエア構成要素に関する異なるE/Eアーキテクチャの仮想実験および比較を可能にすることによって、システム設計の最適化および乗り物レベルの設計の最適化を可能にすることができる。図1−13に関して上で論じたシミュレーション作成方法およびGUIは、協調シミュレーション1400および/またはそのほかの所望のシミュレーションの作成に使用できる。上で論じたネットワーク・コンピューティング・リソースは、作成されるシミュレーションをサポートするべく自動的にスケーリングされ、設計段階の初期に構成要素レベル、システム・レベル、および乗り物レベルのソフトウエア開発を可能にし、乗り物の全体的な開発時間を有意に短縮することができる。
図14のシミュレーションは、プロセッサ・シミュレータ、すなわち図1等に関して上で論じたとおり、ここではvECUと呼んでいる、これ以外では実世界のECU内の実際のチップ上で実行されることになる実際のバイナリ・ソフトウエアを実行するべく構成されるECUのモデルを採用することができる。これらのvECUは、対応する実世界のECUの、非常に正確なより低い抽象化の表現とすることができ、また特定のブランドまたはタイプのECUに対応するとし得る。1つの例として述べれば、多様な異なるECU製造者のECUの適切なvECUモデルは、カリフォルニア州マウンテンビューのシノプシス・インク(Synopsys Inc.)から商的に入手可能である。たとえば、いくつかの場合においては、vECU 1402および1404が、第1の製造者から入手可能な第1のブランドのECUに対応しており、vECU 1406が、第1の製造者とは異なる第2の製造者から入手可能な第2のブランドのECUに対応しているとすることができる。したがって、いくつかの場合においては、vECU 1402および1404は、vECU 1406のそれとは異なる少なくとも1つのパフォーマンス・パラメータを有することができる。それに代えて、ほかの場合においては、vECU 1402、1404、および1406が、すべて、同一のプロセッサ・シミュレータを使用することができる。
図14の例は、複数のvECUをまとめて統合し、これらのvECUを、仮想コントローラ・エリア・ネットワーク(CAN)バスを使用し、乗り物内における互いの通信のために実世界のECUが統合できる方法と類似の方法で統合する。その種の仮想マルチECUフレームワークをシミュレートすることによって、図14の例は、速度およびパフォーマンスをはじめハードウエアの選択のためのE/E設計最適化を実施するべく使用できる。さらにまた、ここでのシミュレーション・プラットフォームを使用して、図14の例は、追加のシステムの同時協調シミュレーションおよび/または全体の乗り物レベルのマルチECU協調シミュレーションを含むべく拡張できる。たとえば、図18に関して、以下に追加を論じているとおり、この例のエミュレータ1408は、いくつかの例においては複数の追加のvECUに置き換えることができる。
この例においては、複数のvECU間のシミュレーション通信が、仮想CANバス1412によって可能になる。たとえば、協調シミュレーション1400内のvECU 1404上において実行している仮想CANルータ1414は、仮想CANバス1412にわたるいくつかの乗り物レベルのvECU通信をマネージできる。さらに、vECU 1402とvECU 1404の間のシステム・レベルのvECU通信は、イリノイ州シカゴのキアステック・インク(ChiasTek Inc.)から入手可能なもの等の協調シミュレーション・バスの構成に基づいて通信できる。たとえば、協調シミュレーション・バスの第1のインスタンス1416は、vECU 1402を用いて実装でき、協調シミュレーション・バスの第2のインスタンス1418は、vECU 1404を用いて実装でき、協調シミュレーション・バスの第3のインスタンス1420は、エミュレータ1408を用いて実装できる。
vECU 1402は、この例においては、高忠実度インバータ/モータ・モデルの第1のインスタンス1422とする第1のプラント・シミュレータとの通信のために接続され得る。それに加えて、vECU 1404は、高忠実度インバータ/モータ・モデルの第2のインスタンス1424とすることができる第2のプラント・シミュレータとの通信のために接続され得る。たとえば、1426および1428にそれぞれ示されているとおり、高忠実度インバータ/モータ・モデル1422および1424は、それぞれのvECU 1402および1404と、たとえば図6に関して上で論じた信号バス接続に対応するとし得る直接協調シミュレーションによって通信できる。直接協調シミュレーションの例として述べれば、高忠実度インバータ/モータ・モデル1422は、vECU 1402と同じ仮想マシン上において実行でき、高忠実度インバータ/モータ・モデル1424は、vECU 1404と同じ仮想マシン上において実行できる。直接協調シミュレーションについては、以下に図15に関して追加の詳細を論じる。
さらに、vECU 1402は、第1のモータ・コントローラ1426のためのソフトウエアを実行でき、vECU 1404は第2のモータ・コントローラ1428のためのソフトウエアを実行できる。したがって、1つの例としては、協調シミュレーション1400を、モータ・コントローラ1426および1428が外部コントロール信号に対して意図されたとおりに応答するか、意図されたとおりに互いにインタラクションするか、また意図されたとおりに、それぞれの高忠実度インバータ/モータ・モデルに対してコントロール信号を出力するか、といったことを決定するための、モータ・コントローラ1426および1428の試験に使用できる。
上で論じたとおり、いくつかの例においては、vECU 1402、1404、および1406のそれぞれを、図1のシミュレーション・プラットフォーム108によって提供される別々の仮想マシン上において実行できる。たとえば、vECU 1402、協調シミュレーション・バスのインスタンス1416、および高忠実度インバータ/モータ・モデルのインスタンス1422は、第1の仮想マシン110(1)上において実行でき;vECU 1404、協調シミュレーション・バスのインスタンス1418、および高忠実度インバータ/モータ・モデルのインスタンス1424は、第2の仮想マシン110(2)上において実行でき;vECU 1406は、第3の仮想マシン110(3)上において実行でき;エミュレータ1408および協調シミュレーション・バスのインスタンス1420は、第4の仮想マシン110(4)上において実行できる。ほかの例においては、仮想マシンおよび/または物理マシンのこのほかの構成を使用できる。
上で述べたとおり、エミュレータ1408は、CANバス1432にわたって通信する複数のECU 1430(1)、1430(2)、・・・、1430(H)の乗り物レベルのCANトラフィックをエミュレートするべく構成されたシミュレータとすることができる。1つの例としては、エミュレータ1408を、ミシガン州トロイのシムタビジョン・インク(Symtavision Inc.)から入手できる。エミュレータ1408は、乗り物レベルでエミュレートしたCANトラフィックを、協調シミュレーション・バス1420を介して仮想CANバス1412上に渡すことができる。それに加えて、エミュレータ1408は、仮想CANバス1412を越えて、高忠実度インバータ/モータ・モデル1422、1424の仮想速度をコントロールするための1つまたは複数の速度セット・ポイント1434を送るべく構成できる。仮想CANルータ1414は、ペイロードとして速度セット・ポイント1434を伴ったCANメッセージをエミュレータ1408から受け取り、このCANメッセージを、それぞれのCAN識別子(ID)を伴った各vECU 1402およびvECU 1404に伝播できる。たとえば、仮想CANバス1412上の各vECUには、仮想CANバス1412に関して一意的なCAN IDを割り当てるか、またはそのほかの形で個別に区別可能にすることができる。この例においては、vECU 1402にCAN ID 0x74が、vECU 1404にCAN ID 0x75が、vECU 1406にCAN ID 0x30が割り当てられている。
仮想CANバス1412および仮想CANルータ1414は、仮想マシン110(1)−110(4)を接続するネットワーク・タイプに応じて、イーサネット(登録商標)、光ファイバ、またはこの類といったTCP/IPプロトコルを使用してCAN通信を渡すことができる。この例においては仮想CANバスが1つだけ使用されているが、ほかの例においては、複数のCANバスをエミュレートするべくルータを構成することができる。さらに、図14においては、CANルータvECU 1406と仮想CANバス1412の間に協調シミュレーション・バスを伴うことなくそれらの間に直接接続が示されている。これは、vECU 1406自体を使用して、ほかのvECU 1402および1404、およびエミュレータ1408がそれぞれの協調シミュレーション・バス1416、1418、および1420を介してインターフェースするCANバス1412をホストすることによって達成できる。仮想CANルータ1414がエミュレータ1408から速度セット・ポイント1434を受け取ると、仮想CANルータ1414は、この通信をvECU 1402および1404の両方に、それらそれぞれのCAN IDを使用して伝播できる。協調シミュレーション1400の1つの出力例は、各プラント・シミュレータ1422、1424のための3相インバータ/モータ速度コントロール出力を示すグラフとすることができる。
図15は、いくつかの実装に従ったモータ・コントローラ1426と高忠実度インバータ/モータ・モデル1422の間のインタラクションの一例1500を図解している。1つの例としては、プラント・モデルを、たとえばケンタッキー州ハロズバーグのヒタチ・オートモティブ・システム・アメリカス・インク(Hitachi Automotive Systems Americas, Inc.)から入手できる製品等の実際のインバータ/モータ製品からのデータを用いて特徴記述できる。この例においては、信号の第1のセット1502を、vECU 1402上で実行するモータ・コントローラ1426によって生成される中心整列パルス幅変調(PWM)とすることができる。さらに、信号の第2のセット1504を、モータ・コントローラ1426への3相電流およびコントロールされた速度(フィードバック)のためのアナログ−デジタル・コンバータ(ADC)入力信号とすることができる。
この例においては、WINDOWS(登録商標)共有メモリを使用する直接協調シミュレーション・インターフェースを使用して、ポイント・ツー・ポイント態様でプロセッサ・シミュレータ、vECU 1402、およびプラント・シミュレータ1422の接続および協調シミュレーションを可能にすることができる。図解されている例においては、この共有メモリの直接協調シミュレーション・インターフェースが、バーチャライザ・システム・インターフェース1506として表されている。vECU 1404と高忠実度インバータ/モータ・モデル1424の間における直接協調シミュレーションも同様に構成できる。
図16は、いくつかの実装に従った図14の協調シミュレーション内におけるCANルータおよび仮想CANバスの動作の一例1600を図解している。上で述べたとおり、各vECU 1402およびvECU 1404は、それぞれ静的に割り当てられたCAN ID、すなわち0x74および0x75を有する。それに加えて、vECU 1406もまた静的に割り当てられたCAN ID、0x30を有する。仮想CANルータ1414は、ペイロードとして速度セット・ポイント1434を伴ったCANメッセージをエミュレータ1408から受け取り、このCANメッセージを、それぞれのCAN IDを伴った各vECU 1402およびvECU 1404に伝播できる。CANルータvECU 1406は、2つの異なるシミュレーションの層、すなわち1つは乗り物レベルにおいてより低い忠実度を伴い、もう1つはシステム・レベルにおいてより高い忠実度を伴うシミュレーションの層に接続できる。これは、自動車E/Eアーキテクチャの一部の非常にリアルなユースケースを提供できる。それに加えて、この例における乗り物レベルのシミュレーションは、抽象化されたマルチECUの乗り物レベルのCANトラフィック・エミュレータ1408とすることができ、一方、システム・レベルのシミュレーションは、より低い抽象化およびより高い忠実度で働く高忠実度インバータ/モータ・モデル1422、1424、およびモータ・コントローラ1426および1428を含む。
CANルータは、静的に定義されたルータCAN ID 0x30において仮想CANバス1412に送信されるCANメッセージを受け入れ、そのメッセージを複製し、そのメッセージを、仮想CANバス1412にわたってvECU 1402およびvECU 1404に送信する。それぞれのvECU 1402および1404は、それぞれのメッセージを受信し、CANメッセージのペイロードから獲得した目標速度セット・ポイントを用いて、それぞれのモータ・コントローラ1426および1428を実行する。
それに加えて、乗り物レベルでエミュレートされたCANトラフィック1410のために、協調シミュレーションの間に生成されたフレームの大半は、実際の信号データをまったく含まない。それに代えて、ペイロード仕様を、各フレーム内に含められたデータの最小および最大量を(たとえば、バイト単位で)単に定義するだけの、より抽象化されたレベルで実装できる。それに加えて、フレームは、正しいCAN IDおよび厳密なアクティブ化パターンを用いて指定することができ、したがって、ちょうど実世界のシステムにおける場合のように、シミュレーションの間に仮想CANバス1412を含む通信ネットワークを占有することができる。エミュレータ1408内においては、すべてのECU 1430を、ネットワークしているインターフェースにおける挙動のみがエミュレータ・モデル内に含められるように、ブラックボックス・コンテナとすることができる。したがって、ブラックボックス・コンテナのためにとられるモデリング・アプローチは、最小および最大のペイロード・サイズの定義だけで、実際のフレーム・ペイロードの仕様を使用しないことがあり得る。これらのブラックボックス・モデルを機能的なvECU 1402、1404、および1406とインターフェースする目的のために、CAN IDを使用する専用インターフェース・フレームに、あらかじめ定義済みの値、または値のシーケンスを、トランスミッション・パターンとともに(10ミリ秒ごとに1回というように)割り当てることができる。これは、高忠実度モデルの一部ではなかった乗り物内のECUからセット値を誘導する能力を提供することができる。それに対し、vECU 1402、1404、および1406によって送信されるフレームは、エミュレータ1408によって消費されることが許される。
図16に示されているとおり、モータの速度セット・ポイント1434が、エミュレータ1408から仮想CANルータ1414に、仮想CANバス1412を通じて送信される。仮想CANルータ1414は、モータ速度セット・ポイント1434を受信し、メッセージをデコードし、同一のペイロードを伴う2つの複製された出側CANメッセージを生成し、それらは、仮想CANバス1412に送り戻される。第1のモータ速度セット・ポイント・メッセージ1602は、CAN ID 0x74を使用し、したがって、vECU 1402において受信され、第2のモータ速度セット・ポイント・メッセージ1604は、CAN ID 0x75を使用し、したがって、vECU 1404において受信される。
図17は、いくつかの実装に従った複数の物理的なコンピューティング・デバイスを含むシステム1700上に構成された図16の協調シミュレーション・アレンジメントの一例を図解している。たとえば、システム1700は、第1のコンピューティング・デバイス1702および第2のコンピューティング・デバイス1704を少なくとも含むことができる。vECU 1402および1406は、エミュレータ1408、仮想CANバス1412、およびインバータ/モータ・モデル1422は、第1のコンピューティング・デバイス1702上において実行するべく構成でき、vECU 1428およびインバータ/モータ・モデル1424は、第2のコンピューティング・デバイス1704上において実行するべく構成できる。第1のコンピューティング・デバイス1702および第2のコンピューティング・デバイス1704は、直接接続、LAN、または前述した1つまたは複数のネットワーク124のいずれかとすることができる接続1706を通じて通信するべく構成できる。1つの例としては、接続1706をイーサネット(登録商標)接続とすることができ、協調シミュレーション・バス1418は、接続1706にわたって仮想CANバス1412および協調シミュレーション・バス1416および1420と通信できる。したがって、図16に関して前述したように、CANバスを介しているかのように接続1706を通じてvECU 1404に速度セット・ポイント1604を伝えることができる。
コンピューティング・デバイス1702および1704は、パーソナル・コンピュータ、サーバ、ワークステーション、ラップトップ、またはこれらの類といった多様な物理的コンピューティング・デバイスのいずれとすることもできる。いくつかの例においては、シミュレータおよびエミュレータを、コンピューティング・デバイス1702および1704上において直接実行できる。ほかの例においては、コンピューティング・デバイス1702および/または1704が、仮想マシンを実装し、シミュレータおよびエミュレータをそれらの仮想マシン上において実行できる。さらに、別の代替として、vECU 1406および/またはエミュレータ1408を、vECU 1402から、および/または互いに離して1つまたは複数の追加の物理的なコンピューティング・デバイス上において実行できる。この開示の恩典を受ける当業者には、このほかの多くの変形が明らかになるであろう。
図18は、いくつかの実装に従った複数のvECUを含む一例の協調シミュレーション1800を図解している。この例においては、図14に関して前述した協調シミュレーションが、修正されてエミュレータ1408が取り除かれ、それぞれが別々の仮想マシン110(4)−110(J)上において実装できる複数のvECU 1802(1)−1802(N)が追加されている。さらに、各vECU 1802(1)−1802(N)は、関連付けされた、この協調シミュレーション内において一意的なCAN IDを有するか、またはそのほかの形で個別に区別可能であるとすることができる。それに加えて、vECU 1802(1)−1802(N)のうちのいくつかまたは全部は、実行のためにそれらの上にインストールされた、プラント・コントローラ1804(1)−1804(N)等のプラント・コントローラを有することができる。またそれに加えて、vECU 1802(1)−1802(N)のうちのいくつかまたは全部は、プラント・シミュレータ1806(1)−1806(N)等のプラント・シミュレータが接続されているとすることができる。さらに、vECU 1802(1)−1802(N)のうちのいくつかまたは全部は、通信のために仮想CANバス1412、または別の仮想CANバス、協調シミュレーション・バスのインスタンス1808(1)−1808(N)に接続することができる。
協調シミュレーション1800は、前述したとおり、図3−12に示されているGUIを使用して作成できる。それに加えて、vECU 1802のうちの1つまたは複数は、速度セット・ポイント1434を、vECU 1402および1404への転送のための仮想CANルータ1414等に送信するべく構成されたコントローラを実行できる。それに加えて、そのほかのvECU 1802は、それらの上にインストールされたコントローラ・ソフトウエアまたはその類を実行して、乗り物内のシステムのほかの構成要素をシミュレートできる。したがって、協調シミュレーション1800が実行されると、リアルな乗り物レベルのCANトラフィック1810が仮想CANバス1412を横断して乗り物レベルの協調シミュレーションを提供する。協調シミュレーション1800の出力の1つの例は、3相インバータ/モータ速度コントロール出力を示すグラフとすることができるが、ほかのvECU 1802(1)−1802(N)から、インストールされたソフトウエアのタイプおよび接続されているプラント・シミュレータのタイプに応じて、そのほかの多くの出力が生成され得る。
図19は、いくつかの実装に従ったネットワーク・コンピューティング・リソースの物理層の一例のアーキテクチャ1900を図解している。アーキテクチャ1900は、1つまたは複数のネットワーク1902にわたって互いに通信できる複数の物理的なコンピューティング・デバイス104を含む。いくつかの例においては、1つまたは複数のネットワーク1902をLANとすることができるが、ほかの例においては、1つまたは複数のネットワークが1つまたは複数のネットワーク124に関して上で論じたネットワークのタイプのいずれかとすることができる。コンピューティング・デバイス104は、ネットワーク・コンピューティング・リソース102の部分として1つまたは複数の指定機能を実施するべく選択可能に構成できる。たとえば、1つまたは複数のネットワーク・コンピューティング・デバイス1904は、1つまたは複数のネットワーク124にわたって通信を送信および受信するべく構成でき;1つまたは複数のマネジメント・コンピューティング・デバイス1906は、全体的なネットワーク・リソースをマネージするべく構成でき;1つまたは複数のストレージ・コンピューティング・デバイス1908は、ストレージ106上のデータのストレージをマネージするべく構成でき;複数のワーカー・コンピューティング・デバイス1910(1)−1910(L)は、割り付け済みネットワーク・コンピューティング・リソースとして使用するための仮想マシンまたは物理マシンの提供等のための多様な機能を行うために構成可能であるとし得る。
それに加えて、代替構成においては、ネットワーク・コンピューティング・デバイス1904、マネジメント・コンピューティング・デバイス1906、および/またはストレージ・コンピューティング・デバイス1908のうちのいくつかまたは全部を仮想マシンとして実装することができる。さらに、いくつかの例のシステム・アーキテクチャをこの中で述べてきたが、この開示の恩典を受ける当業者には、このほかの多くのシステム・アーキテクチャが明らかになるであろう。
ストレージ106は、情報のストレージのために任意タイプのテクノロジを含むことができ、複数のストレージ・デバイス1912を含むことができる。たとえば、ストレージ・デバイス1912は、限定ではないが、フラッシュ・メモリまたはそのほかのメモリ・テクノロジ、光学ストレージ、ソリッド・ステート・ストレージ、磁気テープ、磁気ディスク・ストレージ、RAIDストレージ・システム、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、または任意のこのほかの、情報のストアに使用可能であり、かつコンピューティング・デバイスによるアクセスが可能な媒体を含むことができる。非一過性コンピュータ可読媒体と言うとき、それがエネルギ、搬送波信号、電磁波、および/または信号そのものといった媒体を除外するという点において、ストレージ・デバイス1912は、ストレージ106の構成に応じて、有体の非一過性コンピュータ可読媒体であるとすることができる。
図20は、いくつかの実装に従った一例のコンピューティング・デバイス104の選択した構成要素を図解している。いくつかの例においては、コンピューティング・デバイス104が、1つまたは複数のサーバまたはそのほかのタイプの、いろいろな方法で具体化できるコンピューティング・デバイスを含むことができる。たとえば、サーバの場合であれば、モジュール、そのほかの機能構成要素、およびデータ・ストレージを単一サーバ、サーバのクラスタ、サーバ・ファームまたはデータ・センタ等々に実装することができるが、そのほかのコンピュータ・アーキテクチャが追加的に、または代替として使用されることもある。図解されている例においては、コンピューティング・デバイス104は、1つまたは複数のプロセッサ2002、メモリ2004、1つまたは複数の通信インターフェース2006、ストレージ・インターフェース2008、1つまたは複数のローカル・ストレージ・デバイス2010、およびバス2012を含むか、それと関連付けすることができる。
各プロセッサ2002は、単一の処理ユニット、またはいくつかの処理ユニットとすることができ、単一または複数のコンピューティング・ユニットまたは複数の処理コアを含むことができる。プロセッサ2002(1つまたは複数)は、1つまたは複数の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、状態マシン、論理回路、および/または任意の、動作インストラクションに基づいて信号を操作するデバイスとして実装が可能である。たとえば、プロセッサ2002(1つまたは複数)は、ここで述べているアルゴリズムおよびプロセスを実行するべく具体的にプログラムされるか、または構成される任意の適切な、1つまたは複数のハードウエア・プロセッサおよび/またはタイプの論理回路とすることができる。プロセッサ2002(1つまたは複数)は、メモリ2004内にストアされているコンピュータ可読インストラクションをフェッチし、実行するべく構成可能であり、当該インストラクションは、ここで述べている機能を行わせるべくプロセッサ2002(1つまたは複数)をプログラムすることが可能である。プロセッサ2002(1つまたは複数)およびこのほかの図解された構成要素の間において通信されるデータは、バス2012またはそのほかの適切な接続を介して転送され得る。
ローカル・ストレージ・デバイス2010(1つまたは複数)は、コンピューティング・デバイス104と同じ場所に配置され、少なくとも一時的にデータをストアするために使用され得る。いくつかの例においては、コンピューティング・デバイス104が、上で論じたストレージ106を、ローカル・ストレージ・デバイス2010のほかに、またはそれに代えて使用することがある。ストレージ・インターフェース2008は、生データ・ストレージおよび、ローカル・ストレージ・デバイス2010(1つまたは複数)および/またはストレージ106への書き込み/読み出しアクセスを提供できる。
メモリ2004、ローカル・ストレージ・デバイス2010(1つまたは複数)、および上で論じた(図20には示されていない)ストレージ106は、コンピュータ可読媒体2014の例である。その種のコンピュータ可読媒体2014は、コンピュータ可読インストラクション、データ構造、プログラム・モジュール、またはそのほかのデータといった情報のストレージのための任意タイプのテクノロジで実装される揮発性および不揮発性メモリおよび/または取り外し可能または取り外し不可の媒体を含むことができる。たとえば、コンピュータ可読媒体2014は、限定ではないが、RAM、ROM、EEPROM、フラッシュ・メモリまたはそのほかのメモリ・テクノロジ、光学ストレージ、ソリッド・ステート・ストレージ、磁気テープ・ストレージ、磁気ディスク・ストレージ、RAIDストレージ・システム、ストレージ・アレイ、ネットワークに取り付けられたストレージ、ストレージ・エリア・ネットワーク、または任意のこのほかの、所望の情報のストアに使用可能であり、かつコンピューティング・デバイスによるアクセスが可能な媒体を含むことができる。非一過性コンピュータ可読媒体と言うとき、それがエネルギ、搬送波信号、電磁波、および/または信号そのものといった媒体を除外するという点において、コンピュータ可読媒体2014は、コンピューティング・デバイス104の構成に応じて、何らかのタイプのコンピュータ可読ストレージ媒体および/または有体の非一過性の媒体であるとすることができる。
コンピュータ可読媒体2014は、プロセッサ2002(1つまたは複数)によって実行可能な任意数の機能構成要素2016をストアするべく使用できる。多くの実装においては、これらの機能構成要素2016が、プロセッサ2002(1つまたは複数)によって実行可能なインストラクションまたはプログラムを構成し、それらが実行されると、ここではコンピューティング・デバイス104に属する動作を行うべくプロセッサ2002(1つまたは複数)を具体的に構成する。それに加えて、いくつかの例においては、コンピュータ可読媒体2014が、カリフォルニア州パロアルトのヴイエムウェア・インク(VMware, Inc.)から入手できるもの等の、コンピューティング・デバイス104上における1つまたは複数の仮想マシンの実装を可能にする仮想マシン・ソフトウエア2018を含むことができる。さらに、コンピュータ可読媒体2014は、コンピューティング・デバイス104の多様な機能をコントロールし、マネージするためのオペレーティング・システム2020を含むことができる。
それに加えてコンピュータ可読媒体2004は、ここで述べている機能およびサービスを実施するために使用されるデータおよびデータ構造2022をストアできる。また、コンピューティング・デバイス104は、プログラム、ドライバ等、および関連付けされたデータを含むことができるこのほかの構成要素およびデータを含むか、または維持することもできる。さらに、コンピューティング・デバイス104は、多くのこのほかの論理的、物理的、およびプログラムによる構成要素を含むことができ、それらについて上で述べたことは、この中の論考に関係させた単なる例に過ぎない。
通信インターフェース2006(1つまたは複数)は、多様なほかのデバイスとの1つまたは複数のネットワーク124等にわたる通信を可能にするための1つまたは複数のインターフェースおよびハードウエア構成要素を含むことができる。たとえば、通信インターフェース2006(1つまたは複数)は、この中のいずれかの場所で追加を列挙しているとおり、LAN、WAN、インターネット、ケーブル・ネットワーク、セルラ・ネットワーク、無線ネットワーク、有線ネットワーク(たとえば、光ファイバ、イーサネット(登録商標)、ファイバ・チャンネル)、直接通信、およびこれらの類のうちの1つまたは複数を通じた通信を可能にすることができる。
さらに、図20は、単一の場所内に存在するとしてコンピューティング・デバイスの構成要素およびデータを図解しているが、それに代えて、これらの構成要素およびデータが任意態様で異なるコンピューティング・デバイスおよび異なる場所にわたって分散されることはあり得る。その結果、機能が1つまたは複数のコンピューティング・デバイスによって実装され、上で述べた多様な機能が多様な形で異なるコンピューティング・デバイスにわたって分散されることがある。ここで述べた機能が、単一のエンティティまたは企業のサーバによって提供されること、または複数の異なる企業のサーバおよび/またはサービスによって提供されることはあり得る。それに加えて、クライアント・コンピューティング・デバイス122、マネジメント・コンピューティング・デバイス132、および/またはコンピューティング・デバイス1702および1704は、上で述べたものに類似したハードウエア構成を含むことができるが、異なる機能構成要素、ソフトウエア等々を含むこともできる。
図21は、いくつかの実装に従ったシミュレーションを実行するための一例のプロセス2100を図解したフローチャートである。いくつかの例においては、プロセス2100を、ネットワーク・コンピューティング・リソースに関連付けされた1つまたは複数のコンピューティング・デバイスによって、またはそのほかのコンピューティング・デバイスによって実行できる。
2102においては、1つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスから、協調シミュレーションを構成するための1つまたは複数の入力を受信することができ、当該協調シミュレーションは、少なくとも第1のプロセッサ・シミュレータおよび第2のプロセッサ・シミュレータを含む。
2104においては、1つまたは複数のコンピューティング・デバイスが、第1のプロセッサ・シミュレータを実行するための第1の仮想マシン、および第2のプロセッサ・シミュレータを実行するための第2の仮想マシンを含むコンピューティング・リソースを割り付けることができる。
2106においては、1つまたは複数のコンピューティング・デバイスが、接続タイプのユーザ選択に基づいて、第1のプロセッサ・シミュレータと第2のプロセッサ・シミュレータの間の仮想バスを構成し、第1のプロセッサ・シミュレータと第2のプロセッサ・シミュレータの間の通信を可能にする。
2108においては、1つまたは複数のコンピューティング・デバイスが、第1のプロセッサ・シミュレータによって実行されることになる第1のモデル・ファイルおよび第2のプロセッサ・シミュレータによって実行されることになる第2のモデル・ファイルの表示を受信できる。
2110においては、1つまたは複数のコンピューティング・デバイスが、第1の仮想マシン上において第1のプロセッサ・シミュレータおよび第1のモデル・ファイルを実行できる。
2112においては、1つまたは複数のコンピューティング・デバイスが、第2の仮想マシン上において第2のプロセッサ・シミュレータおよび第2のモデル・ファイルを実行できる。
2114においては、1つまたは複数のコンピューティング・デバイスが、シミュレーションの結果をクライアント・コンピューティング・デバイスに送信させることができる。
いくつかの例においては、図1に示されているようなシステムが、上で述べたプロセスを実施するべく構成された1つまたは複数のプロセッサを含むことができ、第1のプロセッサ・シミュレータと第2のプロセッサ・シミュレータの間において少なくとも1つの通信が通るように、第1のプロセッサ・シミュレータおよび第2のプロセッサ・シミュレータを含む協調シミュレーションを実行することができる。いくつかの例においては、協調シミュレーションが、さらに第1のプラント・シミュレータおよび第2のプラント・シミュレータを含むことができ、1つまたは複数のプロセッサが、第2の仮想接続を、第2のプラント・シミュレータと第2のプロセッサ・シミュレータの間に構成することができる。それに加えて、仮想バスを、TCP/IPプロトコルを使用して動作するべく構成された仮想コントローラ・エリア・ネットワーク・バスとすることができ、第1の仮想接続および第2の仮想接続を、共有メモリを使用する直接協調シミュレーション・インターフェースとして構成することができる。さらにまた、1つまたは複数のプロセッサが、仮想バスを介して通信を受信するため、および第1のプロセッサ・シミュレータまたは第2のプロセッサ・シミュレータのうちの少なくとも1つに対して通信を送信するための仮想ルータを実行するために、第3の仮想マシン上に第3のプロセッサ・シミュレータを構成することができる。
それに加えて、1つまたは複数のプロセッサは、仮想バスと通信することができる第4の仮想マシンを構成できる。この第4の仮想マシンは、第1のプラントまたは第2のプラントのうちの少なくとも1つをコントロールするためのコントロール信号を送信するべく構成された第4のプロセッサ・シミュレータであって、それにおいては、ルータがそのコントロール信号を受信し、そのコントロール信号を第1のプロセッサ・シミュレータまたは第2のプロセッサ・シミュレータのうちの少なくとも1つに対して送信するべく構成される第4のプロセッサ・シミュレータ;または、シミュレートされたバス・トラフィックを、仮想バスを介して送信するためのエミュレータのうちの少なくとも1つを実行するべく構成できる。
それに加えて、クライアント・コンピューティング・デバイスからの1つまたは複数の入力の受信に先行して、1つまたは複数のプロセッサが、クライアント・コンピューティング・デバイスに、そのクライアント・コンピューティング・デバイス上にGUIを呈示するための情報を送信することができ、当該GUIは、協調シミュレーションの構成の選択を可能にする仮想コントロールを含む。1つまたは複数のプロセッサは、クライアント・コンピューティング・デバイスから、GUIを介して協調シミュレーションを構成するための1つまたは複数の入力を受信できる。さらに、1つまたは複数のプロセッサは、クライアント・コンピューティング・デバイスから、GUIを介して、協調シミュレーションの終了時間を少なくとも示す時間情報を受信することができ;クライアント・コンピューティング・デバイスから、GUIを介して、協調シミュレーションの実行を要求するインストラクションを受信することができ;そのインストラクションの受信に少なくとも部分的に応答して、その時間情報に従って協調シミュレーションを実行することができる。それに加えて、1つまたは複数のプロセッサは、コンピューティング・デバイスのうちの1つに追加の仮想マシンを割り付けること、およびその追加の仮想マシンの上においてシミュレーション・コントローラを実行することができる。たとえば、シミュレーション・コントローラは、シミュレーションの実行を監視すること;またはクライアント・コンピューティング・デバイスにシミュレーションの結果を送信させることのうちの少なくとも1つを行うべく構成することができる。
それに加えてシステムは、複数の物理的なコンピューティング・デバイスおよびストレージを含むことができる。物理的なコンピューティング・デバイスのうちの1つまたは複数は、第1のプロセッサ・シミュレータおよび第2のプロセッサ・シミュレータを含むシミュレーションの表示をクライアント・コンピューティング・デバイスから受信し;物理的なコンピューティング・デバイスのうちの1つまたは複数の上において第1のプロセッサ・シミュレータのための第1の仮想マシンおよび第2のプロセッサ・シミュレータのための第2の仮想マシンを割り付け;第1のプロセッサ・シミュレータと第2のプロセッサ・シミュレータの間に仮想接続を構成し;第1のプロセッサ・シミュレータによって実行されることになる第1のモデル・ファイルおよび第2のプロセッサ・シミュレータによって実行されることになる第2のモデル・ファイルの表示を受信し;第1のプロセッサ・シミュレータおよび第1のモデル・ファイルを第1の仮想マシン上で実行し;第2のプロセッサ・シミュレータおよび第2のモデル・ファイルを第2の仮想マシン上で実行するべくプログラムできる。システムは、仮想マシンのうちの1つ上に構成されたプラント・シミュレータを含むことができ、1つまたは複数の物理的なコンピューティング・デバイスは、プラント・シミュレータと第1のプロセッサ・シミュレータの間に仮想接続を、その仮想接続が共有メモリを採用する直接協調シミュレーション接続となるように、構成するべくプログラムされ得る。1つまたは複数の物理的なコンピューティング・デバイスは、さらに、プロセッサ・シミュレータの間に、TCP/IPを使用する協調シミュレーション・バス等の仮想接続を構成するべくプログラムされ得る。
図22は、いくつかの実装に従ったシミュレーション・マネージャ・コンピューティング・デバイスおよび複数のシミュレーション・コンピューティング・デバイスを含む一例のアレンジメント2200を図解している。さらにまた、上で述べたとおり、シミュレーション・コンピューティング・デバイス252、および/またはシミュレーション・マネージャ・コンピューティング・デバイス237のうちのいくつかまたはすべてを仮想マシンとするか、またはそれに代えて、それらのコンピューティング・デバイスのうちのいくつかまたは全部を別々の物理的なコンピューティング・デバイスとすることができる。ジョブ・ルータ236は、新しいシミュレーション・ジョブを、少なくとも部分的にジョブ・タイプ、ジョブ・パラメータ、利用可能なライセンス、および/または利用可能なコンピューティング・リソースに基づいてシミュレーション実行マスタ238に転送することができる。
シミュレーション実行マスタ238は、それぞれが別々のシミュレーション・ジョブを実行するために構成される複数のシミュレーション実行ワーカー244(1)、244(2)、・・・のうちの1つとすることができるシミュレーション実行ワーカー244(1)にジョブを付与できる。いくつかの例においては、パラメータ・スイープ・マスタ240が、シミュレーション実行ワーカー244(1)に対してシミュレーション実行マスタ238がシミュレーション・ジョブを提供する前に、そのシミュレーション・ジョブのために使用されるパラメータを決定できる。それに加えて、またはそれに代えて、モデル合併整理マスタ242が、シミュレーション実行ワーカー244(1)に対してシミュレーション実行マスタ238がシミュレーション・ジョブを提供する前に、そのシミュレーション・ジョブによって使用されることになる1つまたは複数のモデルを合併できる。
シミュレーション実行ワーカー244(1)は、そのシミュレーションのために必要とされるシミュレータの数等に基づいて、そのシミュレーションの実行のために使用されることになるコンピューティング・リソースとして1つまたは複数のシミュレーション・コンピューティング・デバイス252を割り付けることができる。さらに、シミュレーション実行ワーカー244(1)は、それぞれのシミュレーション・コンピューティング・デバイス252上のシミュレーションを、それぞれコントロールするために、それぞれの割り付け済みシミュレーション・コンピューティング・デバイス252上においてシミュレーション・コントローラ248をセットアップすることができる。たとえば、シミュレーション実行ワーカー244は、シミュレーション・ジョブのためにシミュレータ254(1)−254(J)を実行するシミュレーション・コンピューティング・デバイス252(1)−252(K)として複数の仮想マシンを割り付けることができる。各シミュレータ254は、1つまたは複数のモデル・ファイル(図22には示されていない)を含むか、またはそれにアクセスすることができる。したがって、この例においては、シミュレータ254(1)、254(2)、・・・がシミュレーション・コンピューティング・デバイス252(1)上において実行されることになり、シミュレータ254(H)−254(J)、・・・がシミュレーション・コンピューティング・デバイス252(K)上において実行されることになると仮定する。シミュレーションに関わるとき、各シミュレーション・コントローラ248は、シミュレーション実行ワーカー244(1)にレポートし、そこからのコマンドを受信する。
各シミュレーション・コンピューティング・デバイス252上のシミュレーション・コントローラ248は、それぞれのシミュレーション・コンピューティング・デバイス252上において実行されることになるそれぞれ別々のシミュレータ254のために別々のワーカー・プロセス2202をセットアップできる。したがって、シミュレーション・コントローラ248(1)は、シミュレータ254(1)、254(2)、・・・それぞれのためのワーカー・プロセス2202(1)、2202(2)、・・・をセットアップできる。シミュレーション・コントローラ248(K)は、シミュレータ254(H)・・・254(J)それぞれのためのワーカー・プロセス2202(H)・・・2202(J)をセットアップできる。それに加えて、シミュレーション・コントローラ248は、そのシミュレーション・コントローラ248によってコントロールされるそれぞれのシミュレータ254による実行のために、ストレージ・ロケーションから1つまたは複数のモデル・ファイルを獲得できる。たとえば、シミュレーション・コントローラ248(1)−248(K)は、指定されたストレージ・ロケーションの、シミュレーション・ジョブ情報内に識別されたモデル・ファイルを要求できる。ワーカー・プロセス2202を通じて、シミュレーション・コントローラ248は、協調シミュレーションの間に、それぞれのシミュレーション・コンピューティング・デバイス252上で実行するすべてのシミュレータ254のワークスペースの起動、監視、終了、およびクリーンナップを行うことができる。それに加えて、シミュレータ254の起動、監視、および終了の間に、各シミュレーション・コントローラ248は、シミュレーション実行ワーカー244(1)にレポートを送信し、それが、すべての関係するシミュレーション・コンピューティング・デバイス252にわたってシミュレーション・プロセスを調和させるか、そのほかの形で指示を行う。
1つの例として述べれば、シミュレータのうちの1つが失敗した場合、対応するシミュレーション・コントローラ248が、シミュレーション実行ワーカー244(1)がそのシミュレーションの残りをシャットダウンし、そのシミュレーションが訂正されるか、再開されるか、またはその類が行われるまで、ほかの用途のためにコンピューティング・リソースを解放できるように、その失敗をシミュレーション実行ワーカー244(1)に通知することができる。それに代えて、シミュレーション実行ワーカー244(1)は、その失敗が、失敗したシミュレータ上で特定のモデルの実行が完了した後に生じたことを決定することができ、シミュレーションのほかの部分の実行を継続できる。このようにシミュレーション実行ワーカー244(1)は、関係するすべてのシミュレーション・コンピューティング・デバイス252(1)−252(K)にわたるシミュレーションの実行をマネージできる。
図23は、いくつかの実装に従ったパラメータ試験セット内におけるパラメータ・スイープ情報の一例2300を図解している。この例においては、ユーザが、たとえばシミュレートされるシステムについての最適パフォーマンスを決定するために、異なるパラメータ・セットを使用して行われる、シミュレートされるシステムの試験を望んでいると仮定する。たとえば、ユーザが、異なるシミュレータ・ベンダによって提供された複数の異なるシミュレータのために構築される複数のモデルについてパラメータ・セットの確立を希望できる。したがって、ユーザは、特定のシミュレータ上において実行されることになる特定のモデルのために、そのシミュレーションがスイープできるか、またはそのほかの形で横断できるパラメータのセットを指定できる。たとえば、ユーザは、(1)増分ステップ・サイズを伴う範囲、または(2)試験されるべき離散的な値のリストのうちの少なくとも1つの形式でセットされる所定のパラメータを伴うモデルを自動的にインスタンス作成するパラメータ・スイープをセットアップできる。
図23の例においては、ユーザが、シミュレーション内に含まれるモデルAおよびモデルBのためにパラメータ・スイープ構成2302をセットアップしたと仮定するが、当該シミュレーションは、シミュレータおよびそのほかのモデルを含むこともあり、含まないこともある。たとえば、モデルAは、2つまたはそれより多くのパラメータを含むことができる。それらのパラメータのうちの2つ、すなわちR1およびL1は、パラメータ・スイープのために構成され、パラメータR1は、5kΩから15kΩまで10kΩの増分でスイープするべく構成され、パラメータL1は、10mHから20mHまで10mHの増分でスイープするべく構成される。それに加えてモデルBは、1つまたは複数のパラメータを含むことができる。それらのパラメータのうちの1つ、パラメータC2は、1μFから2μFまで1μFの増分でスイープするべく構成される。ユーザからのこれらの入力を基礎として、シミュレーション・プラットフォームは、異なる範囲および異なる増分に基づく複数のパラメータ試験セットを決定できる。図解されている例においては、それぞれがシミュレーション内において試験する異なるパラメータのセットを含む8個の試験セット2304(1)−2304(8)が決定される。増分がより小さい場合または範囲がより大きいといったほかの例においては、パラメータR1、L1、およびC2の可能なすべての組合せを試験するために、はるかに多くの試験セットが決定されることがある。
さらに、いくつかの例においては、ここでのシミュレーション・プラットフォームが、異なる仮想マシン上においてインスタンス作成されたシミュレータ上に異なるパラメータ・セットを展開すること等によって、インスタンス作成されたモデルを、異なるパラメータ・セットを用いて、並列に自動的に実行できる。それに加えて、シミュレーション・プラットフォームは、協調シミュレーションの間に行われる、ベンダを横断する、多モデルのパラメータ・スイープをサポートできる。たとえば、シミュレーション・プラットフォームは、第1のシミュレータによって作られるモデルA内の第1のパラメータのX個の値のスイープを可能にし、それとともに第2のシミュレータによって作られるモデルB内の第2のパラメータのY個の値のスイープを可能にし、それとともに第3のシミュレータによって作られるモデルC内の第3のパラメータのZ個の値のスイープを可能にする等々いったことができる。このようにシミュレーション・プラットフォームは、スイープされることになる3つのパラメータの可能な組合せを試験するX×Y×Z個の実行を生成できる。さらに、図23に図解されているとおり、シミュレーション・プラットフォームは、協調シミュレーション内において、各モデル内で1より多くのパラメータのスイープを実施すること、および/または複数のモデルのパラメータのスイープを実施することができる。
図24は、いくつかの実装に従ったパラメータ・スイープを含むシミュレーションを実行するための一例のプロセス2400を図解したフローチャートである。プロセス2400は、ネットワーク・コンピューティング・リソースに関連付けされた1つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。1つの例として述べれば、プロセス2400の少なくとも一部は、図2および図22に関して上で論じたパラメータ・スイープ・マスタ240の実行によって行うことができる。
2402においては、1つまたは複数のコンピューティング・デバイスが、シミュレーションの実行において使用するためのパラメータ・スイープ情報を受信できる。たとえば、このパラメータ・スイープ情報は、スイープのために選択された各パラメータについて、パラメータのための範囲および増分;またはパラメータのための値のセットのうちの少なくとも1つを含むことができる。
2404においては、1つまたは複数のコンピューティング・デバイスが、N=1等のようにインデクスを開始できる。
2406においては、1つまたは複数のコンピューティング・デバイスが、選択されたモデルNのためのスイープ情報を読み出すことができ、モデルN内にK個のスイープするべきパラメータがあるとすれば、各スイープするべきパラメータは、「範囲および増分」または離散的リストのいずれかとして与えられるXk個の可能性のある値を有することができる。
2408においては、1つまたは複数のコンピューティング・デバイスが、適用可能な「範囲および増分」または離散的なリスト等に基づいてパラメータPのためのパラメータ値のX個のリストを生成する。
2410においては、1つまたは複数のコンピューティング・デバイスが、X個のリストをシャッフルして組合せを作成し、M N=X1×X2×・・・×XKのパラメータ・セットをモデルN用に生成できる。
2412においては、1つまたは複数のコンピューティング・デバイスが、モデルNのMN個のコピーを作成し、異なるパラメータ・セットを用いてそれぞれのインスタンスを作成できる。
2414においては、1つまたは複数のコンピューティング・デバイスが、パラメータ・スイープ情報を受信したすべてのモデルが処理済みであるか否かを決定できる。
2416においては、パラメータ・スイープ情報を受信したすべてのモデルが処理済みでない場合に、1つまたは複数のコンピューティング・デバイスが、インデクスNをインクリメントし、次のモデルを処理できる。
これに対して、2418においては、パラメータ・スイープ情報を受信したすべてのモデルが処理済みである場合には、1つまたは複数のコンピューティング・デバイスが、すべてのモデルからすべてのパラメータ・セットをシャッフルして組合せを作成し、M1×M2×・・・×MNの協調シミュレーションを試験用に作成できる。
図25は、いくつかの実装に従ったモデルの合併整理の一例2500を図解している。上で述べたとおり、ここでのいくつかの実装は、シミュレータの各使用、指定時間期間にわたるシミュレータの使用、またはこれらの類に対する支払等のライセンス料金の支払いを求めるプロプライエタリ・シミュレータの使用を可能にできる。たとえば、シミュレーションの実行時に、最終結果が生成されるまでの期間にわたってシミュレータ上でモデルを実行することができる。この実行期間の間、実行しているシミュレータは、対応するライセンスを排他的に占有できる。したがって、ほかのユーザは、ライセンスが利用可能になり、自分たちのシミュレーションを実行できるようになるまで待機しなければならないことがある。さらに、協調シミュレーションの実施時は、複数のタイプのシミュレータおよび複数のコピーが使用されることがあり、個人、会社、ユーザのグループ、またはそのほかのエンティティ等のユーザが、大規模シミュレーションまたはそのほかの所望のシミュレーションを実行するに充分な数のライセンスを有していないこともある。ここでのいくつかの例においては、追加のライセンスを購入しなくても、ユーザが、複数のより小さいモデルを単一のより大きなモデルに併合または合併整理し、それによってシミュレーションの実行のために必要とされるライセンスの数を低減することができる。したがって、合併整理は、同一のシミュレータを使用する複数のモデルを伴う大規模協調シミュレーションを、1つのライセンスしか利用可能でない場合でさえ、実行可能にすることができる。それに加えて、利用可能なライセンスの数が充分である場合でさえ、モデルの合併整理は、ライセンスの不必要な消費を低減し、不必要に消費されることになったはずのライセンスをほかのユーザに向けて利用可能にすることによって、全体的な効率の向上を助けることができる。
図25に図解されているとおり、第1のモデル2502および第2のモデル2504が、特定のシミュレーションのために構成され、第1のモデル2502および第2のモデル2504は、同一のシミュレータAを使用すると仮定する。したがって、第1のモデル2502および第2のモデル2504は、いずれも実行のためにシミュレータAを使用するライセンスを必要とする。モデルの合併整理が実施されなかった場合に、第1のモデル2502は、第1のシミュレータAのインスタンス2506によって実行され、第1のシミュレータAのインスタンスのための第1のライセンス2510を使用することができる。同様に、第2のモデル2504は、第2のシミュレータAのインスタンス2508によって実行され、第2のシミュレータAのインスタンスのための第2のライセンス2512を使用することができる。
いくつかの例においては、第1のモデル2502および第2のモデル2504を、合併整理済みの第3のモデル2514に合併整理できる。たとえば、合併整理は、実行のための同一のシミュレータを使用すること等によって同一のライセンスが使用可能なモデルを識別することを含むことができる。合併整理されるモデルからヘッダを取り除き、複数モデルの実行を可能にするラッパー2516内にモデル・コアを、シミュレータのケイパビリティに少なくとも部分的に依存するが、逐次、交互、または並列のうちの少なくとも1つにおいて配置することができる。
図26は、いくつかの実装に従ったモデルの合併整理のための一例のプロセス2600を図解したフローチャートである。プロセス2600は、ネットワーク・コンピューティング・リソースに関連付けされた1つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。1つの例として述べれば、プロセス2600の少なくとも一部は、図2および図22に関して上で論じたモデル合併整理マスタ242の実行によって行うことができる。
2602においては、1つまたは複数のコンピューティング・デバイスが、同一のライセンスおよび/または同一のシミュレータを使用できるモデルのグループを識別することができる。たとえば、コンピューティング・デバイスは、第1のライセンスおよび/または第1のシミュレータを使用する2つまたはそれより多くのモデルの第1のグループ、第2のライセンスおよび/または第2のシミュレータを使用する2つまたはそれより多くのほかのモデルの第2のグループ等々を決定することができる。1つの例として述べれば、モデル自体が、各モデルが互換性を有するシミュレータのバージョン(1つまたは複数)についての情報を有していることがあり、同一のシミュレータのバージョンと互換性のあるモデルは、概して合併整理が可能であると推定できる。
2604においては、1つまたは複数のコンピューティング・デバイスが、インデクスN=1を開始できる。
2606においては、1つまたは複数のコンピューティング・デバイスがモデルNのモデル・ファイルをスキャンして(1)ヘッダを除去し、(2)モデルのコアの定義を合併整理後のモデルのモジュールとしてラップし、(3)キャッシュ等にモジュールNを保存することができる。いくつかの例においては、モデル・ファイルのスキャンが、合併整理後のモデル内の各モデルへの入力およびそこからの出力が適切に指向され得るように、各モデルについての構成要素および接続のリストの決定を含むことができる。
2608においては、1つまたは複数のコンピューティング・デバイスが、同一のライセンスについてのすべてのモデルが処理ずみであるか否かを決定できる。
2610においては、同一のライセンスについてのすべてのモデルが処理済みでない場合には、1つまたは複数のコンピューティング・デバイスが、インデクスNを1インクリメントし、次のモデルNを処理できる。
2612においては、同一のライセンスについてのすべてのモデルが処理済みであれば、1つまたは複数のコンピューティング・デバイスが、すべての保存済みモジュール1−Nを、協調シミュレーションのために使用する合併整理済みモデル・ファイル内に移動できる。
2614においては、1つまたは複数のコンピューティング・デバイスが、このほかにも、別のライセンスおよび/またはシミュレータのために合併整理できるモデルのグループがあるか否かを決定できる。
別のライセンスおよび/またはシミュレータのために合併整理できるモデルのグループがほかにもある場合には、2616において、1つまたは複数のコンピューティング・デバイスが、次のモデル・グループのためにブロック2602−2610を反復できる。
ほかには別のライセンスおよび/またはシミュレータのために合併整理できるモデルのグループがない場合には、2618において、1つまたは複数のコンピューティング・デバイスが、1つまたは複数の合併整理ずみモデルを使用する協調シミュレーションの実行に進むことができる。
図27は、いくつかの実装に従った複数のシミュレータを含むシミュレーションを実行するための一例のプロセス2700を図解したフローチャートである。プロセス2700は、ネットワーク・コンピューティング・リソースに関連付けされた1つまたは複数のコンピューティング・デバイスによって、またはそのほかの適切なコンピューティング・デバイスによって実行できる。
2702においては、1つまたは複数のコンピューティング・デバイスが、クライアント・コンピューティング・デバイスから、協調シミュレーションを構成するための1つまたは複数の入力を受信することができ、当該協調シミュレーションは、少なくとも第1のシミュレータおよび第2のシミュレータを含む。たとえば、クライアント・コンピューティング・デバイス上に呈示されているGUIを介して1つまたは複数の入力を受信できる。
2704においては、1つまたは複数のコンピューティング・デバイスが、第1のシミュレータを実行するための第1の仮想マシン、および第2のシミュレータを実行するための第2の仮想マシンを含むコンピューティング・リソースを割り付けることができる。別の例においては、単一の仮想マシンが、第1のシミュレータおよび第2のシミュレータの両方のために割り付けられる。
2706においては、1つまたは複数のコンピューティング・デバイスが、第1のシミュレータの実行をコントロールするために第1の仮想マシン上において実行可能な第1のシミュレーション・コントローラ、および第2のシミュレータの実行をコントロールするために第2の仮想マシン上において実行可能な第2のシミュレーション・コントローラを構成できる。それに代えて、単一の仮想マシンが割り付けられる場合には、第1のシミュレーション・コントローラが、第1のシミュレータおよび第2のシミュレータの両方の実行をコントロールできる。
2708においては、1つまたは複数のコンピューティング・デバイスが、第1の仮想マシン上における第1のシミュレーション・コントローラによる第1のシミュレータの実行と第2の仮想マシン上における第2のシミュレーション・コントローラによる第2のシミュレータの実行を指示することによって協調シミュレーションの実行を指示するために第3の仮想マシン上にシミュレーション・マネージャを構成できる。たとえば、シミュレーション・マネージャは、シミュレーションの実行の調和、マネージ、またはそのほかの指示を行うシミュレーション実行ワーカーを含むことができる。複数のシミュレーション実行ワーカーを有することによって、複数の関連のないシミュレーションを、シミュレーション・プラットフォームによって同時に実行することができる。
2710においては、第1のシミュレーション・コントローラによって、協調シミュレーションの実行の一部として第1のシミュレータの実行を開始できる。
2712においては、第2のシミュレーション・コントローラによって、協調シミュレーションの実行の一部として第2のシミュレータの実行を開始できる。
2714においては、第1のシミュレーション・コントローラが、シミュレーション・マネージャに、第1のシミュレータの実行に関係する情報を送信できる。
2716においては、第2のシミュレーション・コントローラが、シミュレーション・マネージャに、第2のシミュレータの実行に関係する情報を送信できる。
2718においては、シミュレーション・マネージャ、第1のシミュレーション・コントローラ、または第2のシミュレーション・コントローラのうちの少なくとも1つが、クライアント・コンピューティング・デバイスに、協調シミュレーションの実行に関係する情報を送信できる。
ここで述べた例のプロセスは、論考の目的のために提供されたプロセスの例に過ぎない。当事者には、多くのこのほかの変形が、ここでの開示に照らして明らかになるであろう。さらに、ここでの開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、および環境のいくつかの例を示しているが、ここでの実装が、ここに示して論じた特定の例に限定されることはない。さらにまた、記述され、図面内に図解されているとおり、この開示は、多様な実装例を提供している。しかしながら、この開示が、ここで述べられ、図解された実装に限定されることはなく、むしろこの分野の当業者に理解されているとおり、あるいは理解されることになるように、ほかの実装への拡張が可能である。
ここで述べた多様なインストラクション、プロセス、およびテクニックは、コンピュータ可読媒体上にストアされ、ここではプロセッサ(1つまたは複数)によって実行されているプログラム・モジュール等の、コンピュータ実行可能インストラクションの包括的な文脈において考えることができる。概して言えば、プログラム・モジュールは、特定のタスクを実施するため、または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造、実行可能コード等々を含む。これらのプログラム・モジュール等は、仮想マシンまたはそのほかのジャスト・イン・タイム・コンパイル実行環境内等においてネイティブ・コードとして実行されること、またはダウンロードされて実行され得る。通常、プログラム・モジュールの機能は、多様な実装における希望に応じて結合され、または分散されることがある。これらのモジュールおよびテクニックの実装は、コンピュータのストレージ媒体上にストアするか、または何らかの形式の通信媒体にわたって送信できる。
以上、発明の内容を構造的な特徴および/または方法論的な作用に特有な文言を用いて記述してきたが、付随する特許発明の範囲内に定義されている発明の内容が、ここで述べた具体的な特徴または作用に必ずしも限定されないことは理解されるものとする。むしろその逆に、具体的な特徴および作用は、請求の範囲の実装例の形式で開示されている。