(57)【要約】  ユーザからの入力に基づきオートメーションアプリケーションを設計するシステムは、ライブラリインタフェースと三次元ワークスペースとシミュレーションエンジンとコントローラコード生成ユニットを含む。ライブラリインタフェースは、コンポーネントライブラリからの複数のコンポーネントのユーザ選択を受け取るように構成されている。三次元ワークスペースは、コンポーネントを表示し、ユーザにより供給される１つまたは複数の命令に基づき、コンポーネントを用いて三次元ワークスペース内にシステム設計を生成するように構成されている。シミュレーションエンジンは、三次元ワークスペース内のシステム設計に基づきシミュレーションコードを生成し、ユーザからのコマンドに応じてシミュレーションコードを実行するように構成されている。三次元ワークスペース内の１つまたは複数のコンポーネントを、シミュレーションコードの実行中、アニメーションで表示可能である。コントローラコード生成ユニットは、三次元ワークスペース内のコンポーネントに対応する１つまたは複数の物理コントローラを識別し、システム設計に基づきそれらの物理コントローラのために、コントローラにより実行可能なコードを生成するように構成されている。
2018501532.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの入力に基づき、オートメーションアプリケーションを設計するためのシステムであって、
当該システムは、ライブラリインタフェースと、三次元ワークスペースと、シミュレーションエンジンと、コントローラコード生成ユニットとを含み、
前記ライブラリインタフェースは、
・コンポーネントライブラリからの複数のコンポーネントのユーザ選択を受け取る
ように構成されており、
前記三次元ワークスペースは、
・前記複数のコンポーネントを表示し、
・ユーザにより供給された１つまたは複数の命令に基づき、前記複数のコンポーネントを用いて、当該三次元ワークスペース内にシステム設計を生成する
ように構成されており、
前記シミュレーションエンジンは、
・前記三次元ワークスペース内の前記システム設計に基づき、シミュレーションコードを生成し、
・ユーザからのコマンドに応答して、前記シミュレーションコードを実行する
ように構成されており、ただし、前記三次元ワークスペース内の前記複数のコンポーネントのうち少なくとも１つのコンポーネントは、前記シミュレーションコード実行中、アニメーションで表示され、
前記コントローラコード生成ユニットは、
・前記三次元ワークスペース内の前記複数のコンポーネントに対応する、１つまたは複数の物理コントローラを識別し、
・前記システム設計に基づき、前記１つまたは複数の物理コントローラのために、コントローラにより実行可能なコードを生成する
ように構成されている、
オートメーションアプリケーションを設計するためのシステム。
【請求項２】
前記複数のコンポーネントは、
・１つの物理デバイスモデルに各々対応づけられた複数の物理コンポーネントと、
・１つの論理演算に各々対応づけられた複数の論理要素と
を含む、
請求項１記載のシステム。
【請求項３】
前記三次元ワークスペースはさらに、
・前記複数の論理要素と前記複数の物理コンポーネントとの対応づけを、１つまたは複数のユーザ命令に基づき生成する
ように構成されている、
請求項２記載のシステム。
【請求項４】
前記三次元ワークスペースはさらに、
・第１のユーザリクエストに基づき、前記複数の論理要素のうち１つまたは複数の論理要素を含む論理要素コンテナを生成し、
・第２のユーザリクエストに基づき、前記論理要素コンテナと、前記複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントとの対応づけを生成する
ように構成されている、
請求項２記載のシステム。
【請求項５】
前記論理要素コンテナと、前記複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントとの対応づけは、以下により生成される、すなわち、
・第１のユーザ選択に基づき、第１の物理オブジェクトを識別し、
・前記論理要素コンテナの論理入力ポートオブジェクトを、前記第１の物理オブジェクトのデバイス出力ポートオブジェクトと接続し、
・第２のユーザ選択に基づき、第２の物理オブジェクトを識別し、
・前記論理要素コンテナの論理出力ポートオブジェクトを、前記第２の物理オブジェクトのデバイス入力ポートオブジェクトと接続する
ことにより生成される、
請求項４記載のシステム。
【請求項６】
前記三次元ワークスペースはさらに、
・前記複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントのための１つまたは複数の属性値のユーザコンフィギュレーションを受け取る
ように構成されており、ただし、前記１つまたは複数の属性値は、前記シミュレーションコード実行中、前記複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントの挙動をシミュレートするために用いられる物理モデルへの入力に対応する、
請求項２記載のシステム。
【請求項７】
前記シミュレーションエンジンによる前記シミュレーションコードの実行は、前記コントローラにより実行可能なコードを仮想マシンにおいて実行することを含む、
請求項１記載のシステム。
【請求項８】
当該システムは、マーケットプレイスインタフェースコンポーネントをさらに含み、該マーケットプレイスインタフェースコンポーネントは、
・マーケットプレイスサーバから１つまたは複数のデバイスモデルを取り出し、
・前記１つまたは複数のデバイスモデルに基づき、前記コンポーネントライブラリ内に１つまたは複数の新たなコンポーネントを生成する
ように構成されている、
請求項１記載のシステム。
【請求項９】
前記三次元ワークスペース内の前記複数のコンポーネントに対応する前記１つまたは複数の物理コントローラは、該１つまたは複数の物理コントローラから受け取ったデバイス通知メッセージに基づき識別される、
請求項１記載のシステム。
【請求項１０】
ユーザからの入力に基づき、オートメーションアプリケーションを設計するためのシステムであって、
当該システムは、
・産業環境の三次元モデルをユーザが生成および操作できるように構成されたワークスペースと、
・前記三次元モデルの物理的挙動をシミュレートするように構成されたシミュレーションエンジンと、
・前記産業環境の前記三次元モデルに含まれている物理コンポーネントに対応する１つまたは複数の物理コントローラのために、コントローラにより実行可能なコードを生成するように構成された、コントローラコード生成ユニットと
を含む、
ユーザからの入力に基づき、オートメーションアプリケーションを設計するためのシステム。
【請求項１１】
前記シミュレーションエンジンは、
・前記産業環境の前記三次元モデルを、該三次元モデルの物理的挙動のシミュレーション中、アニメーションで表示する
ように構成されている、
請求項１０記載のシステム。
【請求項１２】
前記産業環境の前記三次元モデルは、
・１つの物理デバイスモデルに各々対応する複数の物理コンポーネントと、
・１つの論理デバイス演算子に各々対応する複数の論理コンポーネントと、
・前記複数の物理コンポーネントと前記複数の論理コンポーネントとの少なくとも１つの対応づけと
を含む、
請求項１０記載のシステム。
【請求項１３】
前記複数の論理コンポーネントは、前記ワークスペース内に表示される１つの論理コンポーネントコンテナにグループ分けされる、
請求項１２記載のシステム。
【請求項１４】
当該システムは、デバイスディスカバリインタフェースをさらに含み、該デバイスディスカバリインタフェースは、
・前記１つまたは複数の物理コントローラからデバイス通知メッセージを受け取り、
前記デバイス通知メッセージに基づき、前記１つまたは複数の物理コントローラを識別する
ように構成されている、
請求項１２記載のシステム。
【請求項１５】
当該システムは、マーケットプレイスインタフェースをさらに含み、該マーケットプレイスインタフェースは、
・１つの物理デバイスに対応する新たな物理デバイスモデルを、マーケットプレイスサーバから受け取り、
・前記新たな物理デバイスモデルに基づき、前記産業環境の前記三次元モデルにおいて使用するために、新たな物理コンポーネントを生成する
ように構成されている、
請求項１２記載のシステム。
【請求項１６】
前記マーケットプレイスインタフェースはさらに、
・前記マーケットプレイスサーバを介した前記物理デバイスのユーザによる取得を補助する
ように構成されている、
請求項１５記載のシステム。
【請求項１７】
コンピュータにより実施される、ユーザからの入力に基づきオートメーションアプリケーションを設計する方法であって、
当該方法は以下のステップを含む、すなわち
・コンポーネントライブラリからの複数のコンポーネントのユーザ選択を、コンピュータにより受け取るステップと、
・ユーザにより供給された１つまたは複数の命令に基づき、前記複数のコンポーネントを用いて、前記コンピュータにより三次元ワークスペース内にシステム設計を生成するステップと、
・前記三次元ワークスペース内の前記システム設計に基づき、前記コンピュータによりシミュレーションコードを生成するステップと、
・ユーザからのコマンドに応答して、前記コンピュータにより前記シミュレーションコードを実行するステップと、
・前記三次元ワークスペース内の前記複数のコンポーネントに対応する、１つまたは複数の物理コントローラを、前記コンピュータにより識別するステップと、
・前記システム設計に基づき、前記１つまたは複数の物理コントローラのために、コントローラにより実行可能なコードを、前記コンピュータにより生成するステップと
を含む、
コンピュータにより実施される、オートメーションアプリケーションを設計する方法。
【請求項１８】
ユーザからのコマンドに応答して前記シミュレーションコードを実行する前記ステップは、前記コントローラにより実行可能なコードを仮想マシンにおいて実行するステップを含む、
請求項１７記載の方法。
【請求項１９】
前記三次元ワークスペース内の前記複数のコンポーネントのうち少なくとも１つのコンポーネントを、前記シミュレーションコードの実行中、アニメーションで表示する、
請求項１７記載の方法。
【請求項２０】
当該方法はさらに、
・前記１つまたは複数の物理コントローラからデバイス通知メッセージを、前記コンピュータにより受け取るステップと、
前記デバイス通知メッセージに基づき、前記１つまたは複数の物理コントローラを、前記コンピュータにより識別するステップと
を含む、
請求項１７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に言えば、密結合ロジックおよび物理的シミュレーションの技術を採用した三次元グラフィックインタフェースを用いたオートメーションシステムをプログラミングするための方法、システムおよび装置に関する。
【０００２】
背景技術
慣用のオートメーションソフトウェアのプログラミング環境において、プログラマは多数の別個のツールを使用し、これらのツールは各々、オートメーションの挙動の態様をプログラミングするために特定の目的を有している。たとえば、あるツールはネットワークプロトコルをセットアップし、別のツールは入力デバイスおよび出力デバイスのためにメモリを割り当て、さらに別のツールは命令をコーディングするために用いられる。これらのツールは完全に独立しており、手動でコンフィギュレーションしなければならず、あるツール内で用いられるコーディング間の何らかのミスマッチによって、たいていは別のツールまたはオートメーションにエラーが引き起こされることになる。さらに、既定のツールの言語と、オートメーションの実行に使用される実際の物理ハードウェアとのマッピングがほとんどない。オートメーションツールにおいて定義される論理要素の多くは、各ツールの構造同士のマッピングを確立すること自体に用いられ、何らかの種類の機械の挙動の実施とは間接的にしか結び付けられていない。
【０００３】
いくつかの慣用のアプリケーションによって要求されるのは、それらがシミュレーションのために一般的に用いられているとはいえ、それらの命令をあるコントロールデバイスに移植することによってランタイムファンクションも生成できるようにすることである。たとえばモデルベースの制御の分野では、制御プログラムを記述するために、シミュレーションシステムにより提供される種類の等式が利用される。このような状況では、物理デバイスの実際のシミュレーションが行われない場合が多い。むしろ、あるシミュレーションをプログラミングするために通常用いられることになるプログラミング方法は、制御ファンクションをプログラミングするために用いられているものである。別のシステムによればそれらのシミュレーションコードが、Ｃなどの低レベル言語に変換され、それによって特別なランタイムを必要とすることなく、ある環境においてそのコードを実行させることができる。ただしこのシミュレーションコードは依然として、オートメーションが開発されるデバイスおよび環境をシミュレートするというよりは、汎用プログラミング言語として用いられているにすぎない。
【０００４】
いくつかの慣用のコントローラおよびデータ収集ボードは、非標準的なまたは独自の言語を用いてプログラミングされる。それらのコントローラは多種多様であり、それらのうちのいくつかは、テスト中に手動で特定のＩ／Ｏの状態を制御可能であるという意味で、一種のシミュレーションを実行することになる。たとえば、ホームオートメーションデバイスによってユーザは、ある種のウェブインタフェースを介して照明のオン／オフをプログラミングできるようになる。しかしながらこの種の慣用の技術では、単純な切り替え以上のことは行われず、たとえばシミュレートされるオブジェクトの属性を利用するなどして指定される物理的シミュレーションを提供できるようにするために、手動でプログラミングされる挙動以上のことは行われない。
【０００５】
概要
本発明の実施形態は、物理的シミュレーションを用いる三次元グラフィックインタフェースにおいてオートメーションをプログラミングするための方法、システムおよび装置を提供することによって、上述の不都合な点および欠点のうちの１つまたは複数と取り組み、それを克服しようというものである。ここで開示する技術はたとえば、様々な産業環境および機械装置を設計、シミュレートおよびインプリメントするために用いることができる。
【０００６】
簡単に述べると、本発明の様々な実施形態は、グラフィックシミュレーション環境について説明するものであって、この場合、論理コンポーネントと物理コンポーネントが同じワークスペース内に存在していて、それらをその場その場で編集、修正および実行することができる。たとえば１つの実施形態によれば、設計が不完全であっても、または結果として失敗しているとしても、設計プロセス中の任意の時点にシミュレーションを実行することができる。ロジックを使用して、コンポーネントの状態を変更することができ、また、たとえば他のコンポーネントとインタラクトする可能性のあるワークアイテムを表すために、新たなコンポーネントを生成することができる。コンポーネントの物理的シミュレーションによって、物理的制約のインタラクションに従い、ワークアイテムが除去および変更されるようにすることができる。たとえばコンベヤは、衝突支援を提供し、かつボックスを前方に押し出す力を与えることによって、ボックスを移動させることができる。センサは、シミュレートされるオブジェクトの幾何学的属性またはその他の物理的属性に基づき、値を検出して発生させることができる。ロジックは値を転送してアクティビティを開始することができ、またはそうでなければ、それらのファンクションに基づきアクティビティを制御することができる。一般的にはオートメーションを、物理的に組み合わせられたものであるかのように、シミュレートされた環境において実行することができる。ユーザは、シミュレーション実行時にシミュレーションのオペレーションを検査して、エラーを見つけ出すことができ、そうでなければシステムのファンクションを検証することができる。ユーザは、任意の時点でシミュレーションを停止して、オブジェクトの初期状態を復元することができ、設計されたオートメーションを引き続き編集することができる。
【０００７】
本発明のいくつかの実施形態によれば、ユーザからの入力に基づきオートメーションアプリケーションを設計するためのシステムは、ライブラリインタフェースと三次元ワークスペースとシミュレーションエンジンとコントローラコード生成ユニットとを含んでいる。ライブラリインタフェースは、コンポーネントライブラリからの複数のコンポーネントのユーザ選択を受け取るように構成されている。いくつかの実施形態によれば、リモートのマーケットプレイスサーバからダウンロードされたデバイスモデルに部分的に基づき、ライブラリを移入することができる。三次元ワークスペースは、コンポーネントを表示し、ユーザにより供給される１つまたは複数の命令に基づき、コンポーネントを用いてシステム設計を生成する。ついでシミュレーションエンジンは、システム設計に基づきシミュレーションコードを生成し、ユーザからのコマンドに応答してシミュレーションコードを実行することができる。いくつかの実施形態によれば、シミュレーションコードを仮想マシン環境において実行することができる。さらにいくつかの実施形態によれば、三次元ワークスペース内の１つまたは複数のコンポーネントが、シミュレーションコードの実行中、アニメーションで表示される。前述のシステムに含まれているコントローラコード生成ユニットは、三次元ワークスペース内のコンポーネントに対応する物理コントローラを（たとえばコントローラから受け取ったデバイス通知メッセージに基づき）識別し、システム設計に基づきそれらのコントローラのために、コントローラにより実行可能なコードを生成するように構成されている。
【０００８】
前述のシステムのいくつかの実施形態によれば、三次元ワークスペースを、付加的な機能を実行するように構成することができる。たとえばいくつかの実施形態によれば、ユーザにより選択されたコンポーネントには、１つの物理デバイスモデルに対応づけられた物理コンポーネントと、１つの論理演算に対応づけられた論理要素とを含むことができる。このようにして三次元ワークスペースは、複数の論理要素と複数の物理コンポーネントとの対応づけを、１つまたは複数のユーザ命令に基づき生成することができる。択一的に（または付加的に）三次元ワークスペースは、第１のユーザリクエストに基づき、１つまたは複数の論理要素を含む論理要素コンテナを生成することができる。ついで第２のユーザリクエストに基づき、論理要素コンテナと、複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントとの間で、対応づけを生成することができる。このような対応づけを生成するために、様々な技術を用いることができる。たとえば１つの実施形態によれば、この対応づけは以下により生成される。すなわち、
・第１のユーザ選択に基づき、第１の物理オブジェクトを識別し、
・論理要素コンテナの論理入力ポートオブジェクトを、第１の物理オブジェクトのデバイス出力ポートオブジェクトと接続し、
・第２のユーザ選択に基づき、第２の物理オブジェクトを識別し、
・論理要素コンテナの論理出力ポートオブジェクトを、第２の物理オブジェクトのデバイス入力ポートオブジェクトと接続する
ことにより生成される。いくつかの実施形態によれば、三次元ワークスペースをさらに、複数の物理コンポーネントのうち少なくとも１つの物理コンポーネントのための１つまたは複数の属性値のユーザコンフィギュレーションを受け取るように、構成することができる。これらの属性値をたとえば、シミュレーションコード実行中、１つまたは複数の物理コンポーネントの挙動をシミュレートするために用いられる物理モデルへの入力に対応させることができる。
【０００９】
いくつかの実施形態によって説明するように本発明の別の態様によれば、ユーザからの入力に基づきオートメーションアプリケーションを設計するためのシステムは、ワークスペースと、シミュレーションエンジンと、コントローラコード生成ユニットとを含んでいる。ワークスペースは、産業環境の三次元モデルをユーザが生成および操作できるように構成されている。シミュレーションエンジンは、三次元モデルの物理的挙動をシミュレートするように構成されている。１つの実施形態によれば、シミュレーションエンジンは、シミュレーション実行中、三次元モデルをアニメーションで表示する。コントローラコード生成ユニットは、三次元モデルに含まれる物理コンポーネントに対応する１つまたは複数の物理コントローラのために、コントローラにより実行可能なコードを生成するように構成されている。いくつかの実施形態によれば、システムは、マーケットプレイスサーバから新たな物理デバイスモデルを取り出すように構成されたマーケットプレイスインタフェースも含んでいる。このようにしてマーケットプレイスインタフェースは、新たな物理デバイスモデルを使用して、三次元モデルにおいて使用するための新たな物理コンポーネントを生成することができる。１つの実施形態によれば、マーケットプレイスインタフェースは、新たな物理デバイスモデルに対応する物理デバイスの（たとえばマーケットプレイスサーバを介した）ユーザによる取得を、補助して円滑に進めることもできる。
【００１０】
本発明のさらに別の実施形態によれば、ユーザからの入力に基づきオートメーションアプリケーションを設計する、コンピュータにより実施される方法には、コンポーネントライブラリからの複数のコンポーネントのユーザ選択をコンピュータが受け取るステップが含まれている。コンピュータは、ユーザにより供給される１つまたは複数の命令に基づき、コンポーネントを用いて三次元ワークスペース内にシステム設計を生成する。ついでコンピュータは、システム設計に基づきシミュレーションコードを生成し、ユーザからのコマンドに応答してこのコードを実行する。コンピュータは、三次元ワークスペース内の複数のコンポーネントに対応する物理コントローラを識別し、システム設計に基づきそれらの物理コントローラのために、コントローラにより実行可能なコードを生成する。
【００１１】
添付の図面を参照しながら例示的な実施形態について以下で詳しく説明することで、本発明のその他の特徴および利点を明らかにしていく。
【００１２】
以下の詳細な説明を添付の図面を参照しながら読めば、本発明の前述の態様およびその他の態様の理解が最も深まる。本発明を例示する目的で、図面には現時点で好ましい実施形態が示されているが、本発明が特定の詳細な説明に限定されるものではないことを理解されたい。
【図面の簡単な説明】
【００１３】
【図１】本発明のいくつかの実施形態による、オートメーションをプログラミングするためのシステムの概要を示す図
【図２】本発明のいくつかの実施形態によるエンジニアリングツールの一例を示す図
【図３】本発明のいくつかの実施形態によるコントローラアーキテクチャの一例を示す図
【図４】本発明のいくつかの実施形態による、シミュレーション環境においてオートメーション実行時に実施されるプロセスの概要を示す図
【図５】本発明の実施形態をインプリメント可能なコンピューティング環境の一例を示す図
【００１４】
詳細な説明
以下の開示では、密結合ロジックおよび物理的シミュレーションを用いるグラフィック環境におけるオートメーションをプログラミングするための方法、システムおよび装置を対象としたいくつかの実施形態に従って、本発明を説明する。ここで説明する本発明の種々の実施形態によれば、シミュレーションと制御プログラミングとが融合されて、もはや別々の実行項目ではなくなるように、それらが共に同じツールに組み込まれる。ここで説明する技術は、産業用途に特に適用可能なシステムの設計およびインプリメンテーションであるが、それらに限定されるものではない。
【００１５】
図１には、本発明のいくつかの実施形態による、オートメーションをプログラミングするためのシミュレーション環境１００の概要が示されている。簡単に述べると、コンポーネント供給業者１０５および１１０は、ネットワーク１２５を介してマーケットプレイスサーバ１１５へデバイスモデルを提供する。ついで製造業者サイト１２０におけるユーザ１２０Ａは、ユーザコンピュータ１２０Ｂにおいて実行されるシミュレーション環境で使用するために、ネットワーク１２５を介してそれらのモデルをマーケットプレイスサーバ１１５からダウンロードすることができる。ユーザコンピュータ１２０Ｂによってユーザ１２０Ａは、コントローラコード１２０Ｆを生成することができ、その後、それらのコントローラコード１２０Ｆを、物理デバイス１２０Ｄおよび１２０Ｅに対応づけられたコントローラにアップロードすることができる。
【００１６】
コンポーネント供給業者１０５およびコンポーネント供給業者１１０は、それぞれ物理コンベヤおよび物理モータのモデルを、ネットワーク１２５を介してマーケットプレイスサーバ１１５へ供給する。各モデルは、拡張マークアップ言語（ＸＭＬ）などのように標準化された言語を用いて、デバイスに関する詳細情報を提供する。機能的に自己完結型に、また、必要に応じてインテリジェント型に、モデルを設計することができる。モデルは、センサまたはアクチュエータ、制御デバイスたとえばプログラマブルロジックコントローラなどのような物理デバイスを表現することができ、さらに物理的実体を伴わないアプリケーションにおいて適用可能なファンクションを表すことができる。モデルのコンテンツにはたとえば、対応する物理デバイスのジオメトリ、キネマティクスおよび挙動に関する詳細情報を含めることができる。さらにモデルには、他のモデルとのインタフェースのための、および異なるコンフィギュレーションを提供するための表示も含めることができる。コンピュータ支援型設計ソフトウェアの拡張を利用して、機械設計を組み込むことによりモデルを生成することができる。マーケットプレイスサーバ１１５は、各コンポーネント供給業者により生成されたモデルのレポジトリのホストの役割を果たす。マーケットプレイスサーバ１１５は、レポジトリに対するインタフェースを提供し、これによってユーザは、モデルを閲覧およびダウンロードすることができる。たとえば、いくつかの実施形態において、マーケットプレイスサーバ１１５はウェブページインタフェースを使用し、これによってダウンロードで入手可能な様々なモデルのカタログが提供される。このインタフェースには、各モデルに関する詳細情報を含めることができ、この情報にはたとえば、モデリングされた物理デバイスのイメージ、入出力ポートの一覧、コンフィギュレーション可能な属性、およびモデル挙動の記述などが含まれている。いくつかの実施形態によれば、マーケットプレイスサーバ１１５は、ユーザと様々なコンポーネント供給業者との間のトランザクションを処理することもできる。たとえば１つの実施形態によれば、マーケットプレイスサーバ１１５からダウンロードされた各モデルについて、ユーザに対し料金が請求される。別の実施形態によれば、マーケットプレイスサーバ１１５は、特定のモデルに対応する物理デバイスの取得にあたり、ユーザとコンポーネント供給業者との間のトランザクションを補助して円滑に進める。
【００１７】
製造業者サイト１２０において、ユーザ１２０Ａはユーザコンピュータ１２０Ｂを利用して、（図２を参照しながらあとで詳しく説明する）エンジニアリングツール１２０Ｃを実行する。エンジニアリングツール１２０Ｃによりユーザ１２０Ａは、モータのモデルおよびコンベヤのモデルをユーザコンピュータ１２０Ｂにダウンロードすることができる。その後、エンジニアリングツール１２０Ｃは、ダウンロードされたモデルをシミュレーション環境において使用することができ、このシミュレーション環境によって、モデリングされたアイテムの物理的アクティビティを模倣する計算が実施される。簡単に述べると、エンジニアリングツールは、３Ｄグラフィックエディタおよび可視化環境に組み込まれたダイナミクスシミュレーションを有している。このシミュレーションには、ハードウェアデバイスおよびこのデバイスが操作および変形する加工製品の物理的シミュレーションが含まれている。シミュレートされる物理オブジェクトは、現実のハードウェアデバイスを表している。既定のデバイスのためのシミュレーションは、そのデバイスの挙動が整合されて、同じ入力条件においてシミュレーションの能力範囲内で同じアクションが実施されるように設定される。シミュレーションによって、オブジェクトの幾何学的形状、ポジション、キネマティクス連鎖、およびダイナミクスを追従することができる。さらにシミュレーションには、オブジェクトの追加およびシミュレーションからの除去を動的に行う能力も含めることができる。この能力を用いて、たとえば切断、圧搾、成形などのようなオブジェクトの変形をシミュレートすることができる。さらにこの能力を用いて、加工製品の導入およびプロセスからの除去をシミュレートすることもできる。
【００１８】
産業環境のシミュレートにおいて、ユーザ１２０Ａは、特有のプロセスをインプリメントするために要求される必要な物理コンポーネントとレイアウトを、簡単に同定することができる。レイアウトの決定が完了すると、エンジニアリングツール１２０Ｃは、さらに詳細な事項（たとえばパーツリストおよび／または青図）を生成することができ、それによって必要とされる物理コンポーネントを（それらがまだ取得されていなかったならば）発注することができ、所望のレイアウトでコンフィギュレーションすることができる。これらに加えいくつかの実施形態によれば、エンジニアリングツール１２０Ｃは、プログラマブルロジックコントローラなどのような物理コンポーネントにおいてそのまま使用可能なコントローラコードを生成する。たとえば図１によれば、エンジニアリングツールは、物理モータ１２０Ｄおよび物理コンベヤ１２０Ｅに対応づけられたコントローラ上でそのまま使用可能なコントローラコード１２０Ｆを生成することができる。したがって、設計が完了するとただちに、ユーザのためにコントローラコード１２０Ｆが準備完了状態となることから、物理デバイスの導入が簡素化される。
【００１９】
図２には、本発明のいくつかの実施形態によるエンジニアリングツール２００の一例が示されている。手短に述べると、エンジニアリングツール２００は、３Ｄグラフィックエディタおよび可視化環境に組み込まれた３Ｄ多体ダイナミクスシミュレーションを有している。エンジニアリングツール２００には、３Ｄワークスペース２０５と、ツールバー２１０と、ユーザが３Ｄワークスペース２０５内に配置可能な論理要素のギャラリ２１５とが含まれている。なお、図２の場合、設計の大部分の様相を、３Ｄワークスペース２０５内で視覚的に得ることができる。このため、ツール間で切り替えを行わずに単一のインタフェースで、レイアウト、可視化、プログラミング、シミュレーションを実施することができる。このことに加え、あとで説明するように、３Ｄコンポーネントとロジックとが、同じスペース内で共働する。
【００２０】
エンジニアリングツール２００によって、使いやすさと効率的な編集のためにスタンドアローンで実行するように設計された、低コストにし得るツールが提供される。エンジニアリングツール２００内のコンポーネントは、それらが実世界にあるかのように動作し、その際にそれらがどのように動作するのか、アニメーションで挙動が示される。物理システムのコンポーネントを、ベンダが提供するセレクションから生成することができ、この場合、グラフィックの複雑の程度はベンダによって決定される（すなわちユーザが改めて描き直す必要はない）。センサからの入力をロジックへ、さらには出力デバイスへつなぐことによって、コンポーネントの挙動を描写するために、物理システムを「配線」することができる。これに加え、いくつかの実施形態によれば、内部値および他の状態を即座にフィードバックできるようにすることで、シミュレーションにより瞬時のデバッグが提供される。同様にシミュレーションによって、物理的インタラクションが意図されたものではないケースを示すことによって、オートメーションによる問題を評価することができる。エンジニアリングツール２００によって、工業設計にあたりいくつかの利点が提供される。シミュレートされた３Ｄ環境においてそのままプログラミングすることによって、設計およびインプリメンテーションのプロセス中に発生する可能性のある間接性のレベルが低減する。これに加え、三次元の物理的シミュレーションによって、迅速な設計検証が可能となる。このように許容性のあるエンジニアリングモデルにより、テスト環境において直接、アイデアの探求が促進される。
【００２１】
図２に具体例として示したエンジニアリングツール２００に含まれているギャラリ２１５は、ライブラリインタフェースセクション２１５Ａと物理セクション２１５Ｂとを有している。ライブラリインタフェースセクション２１５Ａには、３Ｄワークスペース２０５に追加することのできる種々のコンポーネントが含まれている。ユーザは、ライブラリインタフェースセクション２１５Ａの最上部に含まれているタブとインタラクトして、３Ｄワークスペース２０５内で使用するために入手可能な種々の物理コンポーネントと論理コンポーネントを閲覧することができる。３Ｄワークスペース内の各コンポーネントの物理的特性を閲覧し、物理セクション２１５Ｂを介して調節することができる。
【００２２】
エンジニアリングツール２００による設計を進展させるために、ユーザはデバイスモデルをギャラリ２１５の外にドラッグして、３Ｄワークスペース２０５内に配置する。オブジェクトを選択して位置決めするための他の方法を、択一的に用いてもよい。デバイスモデルを３Ｄワークスペース内に配置することによって、モデルを表現する視覚的コンポーネントが生成される。各コンポーネントは、関連するコンポーネントまたは他のオブジェクトを取り付けることのできるコネクションポイントを有することができる。いくつかの実施形態によれば、接続されたオブジェクトは自動的に整列されて、周囲を取り囲むモデルのジオメトリと照合済みの隙間を有することができる。３Ｄワークスペース２０５内のポジションは、プロセスにおけるデバイスの物理的ポジションを表すように意図されており、類似した幾何学的依存性を保持するのが望ましい。たとえば、プロセスにおいて２つのコンベヤが存在しており、一方のコンベヤが材料を搬送して、他方のコンベヤに材料を落とすような場合であれば、シミュレートされる挙動がこのパターンに従うよう、シミュレートされる空間においてこれらのコンベヤを、端部同士が接続されるように配置するのが望ましい。図２には、一例として単純な設計が含まれており、これによれば、モータコンポーネント２０５Ｆがベルトコンベヤコンポーネント２０５Ａを駆動して、２つの光センサコンポーネント２０５Ｂと２０５Ｄとの間でボックスコンポーネント２０５Ｉを移動させる。モータコンポーネント２０５Ｆのアクティベートにより、ベルトコンベヤコンポーネント２０５Ａは指定速度で動作するようになる。
【００２３】
各デバイスモデルは、入力値を供給しモデルから出力値を受け取るポートオブジェクトを含むことができる。たとえば図２の場合、モータコンポーネント２０５Ｆは、入力値を受け取るモータポートオブジェクト２０５Ｇを含んでいる。これらの入力値に基づきモータコンポーネント２０５Ｆは、その動作速度を相応に設定する。光センサコンポーネント２０５Ｂおよび２０５Ｄは、光センサポートオブジェクト２０５Ｃおよび２０５Ｅをそれぞれ含んでいる。各光センサポートオブジェクト２０５Ｃおよび２０５Ｅは、それらのオブジェクトの個々の光センサがトリガされると、出力値を生成する。
【００２４】
デバイスモデルに機能を提供するために、デバイスモデルのポートオブジェクトに論理要素が接続される。論理要素は、ポートを備えたブロックとして描かれ、その際、あるブロックを別のブロックと接続することができる。デバイスモデルのポートオブジェクトを論理要素のポートと接続することによって、デバイスモデルを論理ブロックとリンクすることができる。同様にユーザは、あるブロックを別のブロックのポートと接続することによって、２つのブロックをリンクすることができる。いくつかの実施形態によれば、ポートを入力型および出力型として分類することができる。入力ポートは出力ポートと接続され、その際、１つのリンクだけが１つの既定の入力ポートと接続されるようにしてもよいが、複数のリンクが１つの出力ポートに接続されるようにしてもよい。別の実施形態によれば、ポートを双方向とすることができ、その場合、それらのポートは同時に入力端子と出力端子の両方とすることができ、任意に接続することができる。さらにポートを、それぞれ異なる様式および型が混合されたものとしてもよい。いくつかの実施形態によればポートは、ブーリアン、整数、値の配列、複数のフィールド値を含む構造化された値など、様々な型の値をサポートすることができる。各ポート同士の型が両立しない場合には、各ポート間の接続を制限することができる。いくつかの実施形態によればポートは、それぞれ異なる種類のコンポーネントにおいて演算を汎用的に実施できるように、コンポーネントまたは他の論理要素に対する参照である値を生成することができ、あるいは、様々なグループの無効化または反復など、アプリケーションのロジックにおける操作を実施することができる。
【００２５】
種々のタイプの論理要素を用いることができ、以下に限定されるものではないが具体例を挙げると、算術演算、選択、信号、メモリ状態、コンテナ、およびオブジェクト影響因子などである。いくつかの実施形態によれば、ロジックを多重定義することができる。たとえばプラスの算術演算を、浮動小数点、整数の加算のために、およびブール値における論理ＯＲ演算の実施のために用いることができる。ロジックによって、シミュレーションオブジェクト、物理デバイスの挙動、またはこれらの双方ならびに他のロジックに影響を与えることができる。一般にコンポーネントと同様に、論理要素は属性を有している。これらの属性が変化すると、論理要素のセマンティクスおよび／またはトポロジーが変化する。ある論理要素コンテナ内のロジックの挙動は、そのコンテナと接続されている（１つまたは複数の）シミュレーションオブジェクトに伝播する。
【００２６】
ユーザは、デバイスの追加と同じ手法を用いて、ロジックをシステム設計に加えることができる。エンジニアリングツール２００には、ユーザが選択可能な（図２には示されていない）論理要素のギャラリが含まれている。論理要素は一般に、ファンクションまたはオペレーションを表現するために用いられる。ユーザは、ギャラリから論理要素をドラッグし、３Ｄワークスペース内に配置する。物理コンポーネント上にロジックを配置することによって、そのコンポーネントの挙動を変えることができる。コンポーネントに取り付けられたロジックは、コンポーネントが動かされたときに、そのコンポーネントに付随する。ユーザはロジックを使用して、他のコンポーネントとインタラクトすることのできる加工製品を生成するなど、シミュレーションを強化することができる。論理要素をフリースペース内、デバイスオブジェクト上、または論理要素コンテナ内に配置することができる。３Ｄスペース内または３Ｄデバイスモデル上に配置された論理要素は、３Ｄポジションを有する。エンジニアリングツール２００は、論理要素が取り付けられたコンポーネントを用いて、そのコンポーネントに特有の挙動を実施することができる。プログラミングとポジションを相互に関連づけることができる。論理要素のタイプによって、その目的と、取り付けられた何らかのデバイスモデルがそのファンクションの一部として用いられることになるか否か、が決定される。論理要素において算出された値は、リンク経路を辿って伝達される。ユーザがワークスペースビューを、回転および並進またはさもなければ変形させると、論理要素のポジションは新たなビューポジションで表示されることになる。
【００２７】
図２の論理要素コンテナ２０５Ｈにより、１つのコンテナを用いて複数の論理要素から成る１つのグループを包含可能な手法の一例が示されている。３Ｄワールドに帰属するオブジェクトにおいて振る舞う１つの論理要素に関して、１つのコンテナ内の１つの要素は、そのコンテナが帰属するオブジェクトにおいて動作し、または再帰的にこのコンテナが、ある１つのコンテナ自体の中に配置されているならば、そのコンテナに向かう方向で動作する。コンテナの外側から内側のブロックへのリンクにより、コンテナおよび必要に応じてネストされた他のコンテナにおいて、インタフェースポートを自動的に生成することができる。たとえば図２を参照すると、論理要素コンテナ２０５Ｈには、光センサポートオブジェクト２０５Ｃおよび２０５Ｅから受け取った入力に基づき、モータコンポーネント２０５Ｆを制御するために用いられる論理要素が含まれている。特に論理要素コンテナ２０５Ｈは、光センサコンポーネント２０５Ｂ，２０５Ｄのいずれがトリガされたのかに応じて、−５〜５の間でモータコンポーネント２０５Ｆの速度を調節する。いくつかの実施形態によれば、論理要素コンテナを、エンジニアリングツール２００内の二次元フィールドによって表すことができる。ただし別の実施形態によれば、三次元コンテナを使用することができる。ユーザは、必要に応じてインタフェースポートを再配置するために、論理要素コンテナ内（または回路間）でブロックを移動させることができる。いくつかの実施形態において、３Ｄワークスペース内の局所的な要素コンテナにより占有されているスペースを、オープン／クローズすることができ、ユーザが内容に満足して散乱状態を少なくしたいときに、回路内部を隠すことができる。さらにコンテナを単一のユニットとしてコピーすることもでき、このようにすれば種々の入出力接続が使用可能な特有のコンテナの内容が生成される。なお、オリジナルのコンテナとコピーされたコンテナは、互いに独立して振る舞うことができる。たとえば、異なるコンテナへ異なる入力を行った結果、異なる出力を生じさせることができ、異なる状態を記憶させることができ、非決定性の演算により異なる結果を生じさせることができる。ユーザが内容の変更を望まないならば、またはユーザが、内容をリンクさせたままにして変更が共有されるようにしたいならば、コピーされた論理要素コンテナのためのロジックのストレージを、場合によっては共有することができる。論理要素コンテナを、外部のデバイスからインポートすることもでき、それによって複雑なファンクションをパッケージ化して、それらをアプリケーション間で共有できるようになる。論理要素コンテナは、コンテナ自体の状態を制御するコネクションを提供することもできる。コンテナは、ネストされたコンテナを含めコンテナの内容全体の挙動をアクティベートおよびディアクティベートする入力ポートを提供することができる。コンテナがディアクティベートされているときには、コンテナの内容を更新することはできず、コンテナの出力ポートをゼロまたはフォールスのようなデフォルト状態にセットすることができる。他の種類のコンテナが、１つのシーケンス内で実施されるグループ化ロジックのような、他の種類のオペレーションをサポートすることができ、または有限状態オートマトンのように振る舞うことができ、または単一のタイムサイクル内で１つのロジックグループを繰り返し実行させることができる。
【００２８】
エンジニアリングツール２００のツールバー２１０は、種々のサブセクションを含んでおり、それらのサブセクションによってユーザはモデルとインタラクトすることができる。クリップボードサブセクション２１０Ａに含まれているインタフェースコンポーネントによって、ユーザは、自身のクリップボードへワークスペース２０５の一部分（たとえば１つのコンポーネント）をカット（またはコピー）することによって、３Ｄワークスペース２０５を編集することができる。ついでその部分をワークスペース２０５内にペーストして戻してもよいし、またはすべてを他のワークスペースにペーストしてもよい。ツールバー２１０におけるサブセクション２１０Ｂに含まれているインタフェースコンポーネントによって、ユーザは、３Ｄワークスペース２０５内のコンポーネントを選択、移動および回転することができる。たいていのコンポーネントは、既存のデバイスモデルによってユーザに提供されているとはいえ、ユーザはジオメトリサブセクション２１０Ｃとインタラクトして、様々な形状を３Ｄワークスペース２０５に追加することができる。このようにしてユーザは、事前に生成されたデバイスモデルだけを単独で用いて得られる以上に、設計レイアウトをカスタマイズすることができる。同様にスタイルサブセクション２１０Ｄにより提供されるインタフェースコンポーネントによって、ユーザは、３Ｄワークスペース２０５内に配置された種々のコンポーネントの外観（たとえば色、線幅等）を調節することができる。あとでさらに詳しく説明するようにツールバー２１０には、さらに実行サブセクション２１０Ｅと物理サブセクション２１０Ｆが含まれており、これらによって、３Ｄワークスペース２０５内に配置されたコンポーネントと対応づけられたシミュレーションを生成して、それとインタラクトするためのインタフェースコンポーネントが提供される。最後に、ビューサブセクション２１０Ｇによって、ユーザは、エンジニアリングツール２００内の特定のアイテムを表示すべきか否かを選択することができる。
【００２９】
エンジニアリングツール２００には、ハードウェアデバイスおよびこのデバイスが操作および変形する加工製品の物理的シミュレーションが含まれている。ツールバー２１０における実行サブセクション２１０Ｅによって、ユーザは、システム設計が３Ｄワークスペース２０５内で開発されている期間中、シミュレーションをアクティベートおよびストップすることができる。ツールバー２１０における物理サブセクション２１０Ｆに含まれるインタフェースコンポーネントによって、ユーザは、シミュレーションのタイミングおよび他の属性を調節することができ、さらにシミュレーションによって生じる何らかのエラーを見ることができる。シミュレーションの実行中、ワークスペースは、このワークスペースにユーザが追加した種々のコンポーネントの保守、計算およびアニメーションを行う。たとえば、物理オブジェクトがそれらの動的属性に基づき移動および変形し、検知オブジェクトが対応するそれらのターゲットを検出し、挙動オブジェクトが値を読み出し、書き込み、計算する、などである。ユーザがシミュレーションを停止すると、３Ｄワークスペース２０５はその本来のコンフィギュレーションに復帰することができ、ユーザは編集を続けることができる。いくつかの実施形態によれば、シミュレーション実行中、ユーザに対しシステム設計の編集が許可されている。このケースでは、シミュレーションを実行中と見なしてもよいし、または休止状態と見なしてもよく、ユーザはオブジェクトをいつでも追加、削除および編集することができる。いくつかの実施形態によれば、実行サブセクション２１０Ｅのインタフェースとインタラクトすることで、明示的なコンパイルを行わずにシミュレーションを即座に実行することができる。さらにここで述べておくと、３Ｄワークスペース２０５における設計が、完全に開発されたものでなくてもよく、設計プロセス中にいつでもシミュレーションを実行することができる。いくつかの実施形態によれば、色の変更またはフラッシュなどのような視覚的キューを用いて、ロジックがアクティブである個所が示される。ユーザは、ロジック実行時にそのロジックを調べることができ、値を変更してシナリオを実際に試すことができる。
【００３０】
基本的に、エンジニアリングツール２００により生成されるシミュレーションの複雑さの程度を、任意のレベルとすることができる。ただし本発明の多くの実施形態によれば、エンジニアリングツール２００は、ユーザがデバイスおよび加工製品について高位レベルの属性を指定することによって、シミュレートされるオブジェクトを設定および実行できるように構成されている。シミュレーションによって、仮想の加工製品を生成することができ、オートメーションデバイスにより実行される様々なプロセスを通過するそれらの加工製品の流れを追従し、加工製品において生じる何らかの変化、およびその変化がデバイスにどのような影響を及ぼすことになるのか、を計算することができる。さらにシミュレーションによって、オートメーションデバイスの状態および挙動をシミュレートして、それらが加工製品にどのような影響をもたらすのかを把握することもできる。シミュレーションの忠実度は、オートメーションの主要なファンクションを仮想世界で実行して、オートメーションのプログラミングを検証できる程度に十分なものであるのが望ましい。シミュレーションにより実行可能なその他の挙動は、それらの挙動が現実に即しており、特定するのが難しすぎないかぎり、有用であると見なされる。シミュレーションの許容範囲および精度を、サイズ、速度、オートメーションの汎用的な必要性に応じて、調節することができる。オートメーションの分野と整合させるように、シミュレーションを提供することができる。たとえばロボットのオートメーションであればおそらくは、三次元でキネマティックであり、ダイナミクスを使用する可能性もあるシミュレーションを用いることになる。これとは逆に、石油精製所のオートメーションであれば、パイプなどの液体回路網の圧力、流量およびトポロジーならびに数値を表す一次元のファンクションが用いられる可能性がある。
【００３１】
図３には、本発明のいくつかの実施形態によるコントローラアーキテクチャ３００の一例が示されている。このコントローラアーキテクチャ３００は概念的なものであり、１つまたは複数の接続された物理デバイスにエンジニアリングツール３０５を結合するネットワークを想定している。物理ポートまたは結線されたコネクションなどのように、他の種類のデバイスを用いてもよい。エンジニアリングツール３０５は、接続された任意のデバイスの識別を要求する汎化されたリクエストをネットワークに送信する。デバイスは、デバイス通知メッセージ３１５を介して供給されるデバイス情報３１０によって応答する。エンジニアリングツール３０５は、受け取ったデバイス情報３１０に基づいて、仮想コンポーネントと物理デバイスとの間の仮想コネクションを生成して記憶することができる。いくつかの実施形態によれば、仮想コネクションは、コンポーネント識別子とアプリケーション識別子とを有する。したがって同じアプリケーション内に複数の物理デバイスが存在するならば、それらをアプリケーション識別子と共に対応づけることができる一方、異なるコンポーネント識別子を介して異なる仮想デバイスと対応づけることができる。
【００３２】
引き続き図３を参照すると、エンジニアリングツール３０５がデバイスおよびそれらに対応する仮想コネクションを識別したならば、エンジニアリングツール３０５はエンジニアリングファンクションをウェブサーバ３２０へ伝達する。エンジニアリングファンクションは、特定の物理デバイスに論理機能をインプリメントする命令を有する。ウェブサーバ３２０は、受け取ったエンジニアリングファンクションに基づき、プログラムを生成し、それをプログラムストア３２５に記憶する。いくつかの実施形態によれば、エンジニアリングツール３０５は、プログラムをダイレクトに生成するように構成されており、ウェブサーバ３２０によりこのファンクションが実行されるわけではない。このようなシナリオによればウェブサーバ３２０は、エンジニアリングツール３０５から受け取った何らかのプログラムを、プログラムコードの付加的な前処理を行って、または行わずに、プログラムストア３２５に伝送するだけとなる。ついでプログラムは、（１つまたは複数の）物理コントローラによって実行され、これはロジック実行矢印３３０によって概念的に表されている。エンジニアリングツール３０５および／またはウェブサーバ３２０は、（１つまたは複数の）物理コントローラと通信して、プログラムのスタート、ストップ、リセットなどのようなファンクションを実行することができる。各コントローラは、当技術分野で周知の任意の技術を用いて、１つまたは複数の物理デバイスと通信する。たとえばいくつかの実施形態によれば、コントローラはそれらに対応する物理デバイスとのダイレクトな電気接続を有しており、Universal Serial Bus (USB) またはパルス幅変調（ＰＷＭ）などのプロトコルを用いて通信する。別の実施形態によれば、コントローラはそれらの物理デバイスと、有線（たとえばEthernet）またはワイヤレス（たとえばIEEE 802.11）の通信ネットワークを介して通信することができる。
【００３３】
状態ストア３３５は第一には、ネットワークに組み込まれた複数のコントローラ間で共有される状態を伝送するために用いられるが、プログラムがコントローラによって実行されているときに、エンジニアリングツール３０５がプログラムについて状態検査を実行できるようにすることもできる。つまりエンジニアリングツール３０５は、各コントローラにおいて実行中のコードの現在の状態を特定することができる。いくつかの実施形態によれば、状態ストア３３５は、ネットワークデータシェア３５０を介して、種々の物理コントローラ間で共有される。これらに加え、ネットワークデータシェア３５０を用いて、たとえば監視制御およびデータ取得サーバ（ＳＣＡＤＡ）または統一化プラントナレッジウェアハウスなどのような、他のエンティティの状態情報を共有することもできる。データを受け取ることのできる様々なエンティティを、ここでは「パートナ」と称する。ネットワークパートナファインダ３５５を用いて、状態情報を要求するまたは必要とするパートナを見つけることができる。分散型制御のシナリオであれば、これらのパートナを、ロジックが分散された他のコントローラとすることができる。ネットワークパートナファインダ３５５は、見つけ出された各パートナのアドレスを供給する。ついで状態ストア３３５はそれらのアドレスを用い、Ｉ／Ｏ通信ＡＰＩ３６０を介して、パートナへ状態情報を分配することができる。
【００３４】
図４には、本発明のいくつかの実施形態による、シミュレーション環境１００において実施されるプロセス４００の概要が示されている。ステップ４０５においてユーザは、マーケットプレイスサーバから１つまたは複数の物理デバイスモデルをダウンロードする。各物理デバイスモデルはそれぞれ、１つの物理デバイスに対応する。たとえば、ある物理デバイスモデルには、物理コンベヤベルトの三次元モデルを生成するための命令を、この種のデバイスに対応づけることのできる種々の属性と共に、含めることができる。物理デバイスモデルにおける情報を使用して、エンジニアリングツール用の物理コンポーネントが生成される。いくつかの実施形態によれば、エンジニアリングツールはこの生成を自動的に実行する。たとえば１つの実施形態によれば、エンジニアリングツールには、マーケットプレイスサーバに対するインタフェースが含まれている。ユーザは、このインタフェースとのユーザインタラクションを通して、物理デバイスモデルをローカルでダウンロードすることができ、それによってエンジニアリングツールは対応する物理デバイスモデルを生成することができる。この生成プロセスを自動的なものとしてもよいし、ユーザが明示的にモデル生成を要求する必要があるようにしてもよい。さらにここで述べておくと、いくつかの実施形態によれば、マーケットプレイスサーバ以外の場所で物理デバイスモデルをダウンロードすることができる。つまりたとえば複数のユーザが、それらのユーザの個々のエンジニアリングツールにおいて使用するために、Ｅメールによって物理デバイスモデルを共有することができる。
【００３５】
引き続き図４を参照すると、ステップ４１０においてユーザは、三次元ワークスペースにコンポーネントを追加し調節することによって、このワークスペース内にシステム設計を生成する。いくつかの実施形態によればエンジニアリングツールは、ワークスペースと共働して使用可能なコンポーネントのライブラリを提供し、それによってユーザは、（マウスベースの環境であれば）クリック＆ドラッグ、または（タッチベースのディスプレイを用いた環境であれば）タッチ＆ドラッグなどのようなインタラクションを介して、コンポーネントを選択し、ワークスペース内に配置することができる。次にステップ４１５においてユーザは、論理コンポーネントをこの環境に追加する。上述のように、各論理コンポーネントは１つの論理演算と対応づけられており、ユーザは、複数の論理コンポーネントを含むコンテナを生成することができる。論理コンポーネントがワークスペースに追加されたならば、それらのコンポーネントを使用し、コンポーネントの入力と出力との間の対応づけを生成することによって、物理コンポーネントにロジックが追加される。たとえば、図２を参照しながらすでに説明したように、センサを表す物理デバイスのコンポーネントの出力を、論理コンテナの入力と結び付けることができ、他方、論理コンテナの出力は、モータを表す物理デバイスのコンポーネントの入力と結び付けられている。物理コンポーネントと論理コンポーネントとの対応づけを、ワークスペースにコンポーネントを追加するための上述の技術と同様の手法で実施することができる。たとえば、コンポーネントの出力をクリック（またはタッチ）し、他のコンポーネントの入力に向けてそれをドラッグすることにより、対応づけを生成することができる。
【００３６】
ステップ４２０において、ワークスペース内のコンポーネントに基づきシミュレーションが実行される。このシミュレーションは、コンポーネントの物理的および電気的な挙動をシミュレートする。いくつかの実施形態によれば、これらのコンポーネントのうちの１つまたは複数を、シミュレーション実行中にアニメーションで示すことができる。たとえばコンベヤベルトコンポーネントを、取り付けられたモータコンポーネントのアクティベートに応答して回転させることができる。ここで述べておくと、設計プロセス中、任意のポイントでシミュレーションを実行することができる。したがってシミュレーションが実行された後、ユーザは、望ましい結果をもたらしているか否かを判定する。望ましい結果がもたらされていなければ、ステップ４１０、４１５、４２０を繰り返し実施することができ、それによってユーザは、物理コンポーネントおよび関連するロジックをワークスペースに追加することができる。その後、ユーザは、望ましい結果が達成されるまで、反復のたびに結果を評価することができる。
【００３７】
次にステップ４２５において、三次元ワークスペース内のシステム設計に基づき、コントローラコードが生成される。さらに具体的には、エンジニアリングツールは、物理デバイスに対応する物理コントローラを識別し、それらのデバイスにより実行可能なコードを生成する。コントローラを識別するために、様々な技術を用いることができる。たとえばいくつかの実施形態によれば、各コントローラは固定のハードウェアアドレスを有しており、このアドレスがユーザによってエンジニアリングツールへ供給される。他の実施形態によれば、エンジニアリングツールはデバイスディスカバリプロセスを実行することができ、このプロセスにおいてエンジニアリングツールは、物理デバイスから受け取ったデバイス通知メッセージを処理して、それらの個々のアドレスおよび他の関連情報を取得する。これらの物理デバイスが、ユーザがエンジニアリングツールにおいて選択したデバイスモデルと同じタイプのものでなければならないようにしてもよいし、または別の選択肢として物理デバイスが、アプリケーションによって定義された所定のファンクションセットを実行可能なものであればよいとすることもできる。いくつかの実施形態によれば、エンジニアリングツールは、論理要素とシミュレーションコードとに基づき、各コントローラごとにコードを生成してコンパイルする。他の実施形態によれば、エンジニアリングツールには、シミュレーション実行中にコントローラコードを実行する仮想マシンが含まれている。したがってシミュレーションにおいて使用されるコードを、さらにコンパイルすることもなく、各コントローラにおいてそのまま使用することができる。
【００３８】
コードが生成されると、ステップ４３０においてそのコードが物理コントローラにダウンロードされる。いくつかの実施形態によれば、エンジニアリングツールによりネットワークコネクションを介してコントローラへ、コードをそのまま送信することができる。別の実施形態によれば、エンジニアリングツールを、物理コントローラと通信する中間サーバまたは中間ストレージ媒体として用いることができる。
【００３９】
図５には、本発明の実施形態をインプリメント可能なコンピューティング環境５００の一例が示されている。たとえばコンピューティング環境５００を用いて、図１に示したシミュレーション環境１００の１つまたは複数のコンポーネントをインプリメントすることができる。コンピュータシステム５１０およびコンピューティング環境５００といったコンピュータおよびコンピューティング環境は、当業者には周知であり、よって、これらについてはここでは手短に説明する。
【００４０】
図５に示されているように、コンピュータシステム５１０は、システムバス５２１などのような通信メカニズムを含むことができるし、またはコンピュータシステム５１０内の情報を通信するための他の通信メカニズムを含むことができる。さらにコンピュータシステム５１０は情報を処理するために、システムバス５２１と接続された１つまたは複数のプロセッサ５２０を含んでいる。
【００４１】
プロセッサ５２０は、１つまたは複数の中央処理ユニット（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、または当技術分野において周知の他の任意のプロセッサを含むことができる。もっと一般的に述べると、ここで用いられるプロセッサは、タスクを実施するためコンピュータ読み取り可能媒体に記憶された機械読み取り可能な命令を実行するデバイスであり、ハードウェアおよびファームウェアのうち任意の１つまたはこれらの組み合わせを含むことができる。プロセッサは、タスクを実施するために実行可能である機械読み取り可能な命令を記憶するメモリを含むこともできる。プロセッサは情報に応答して動作し、その際、実行可能なプロシージャまたは情報デバイスによって使用するために、情報を操作、分析、変更、変換または伝送し、および／または、この情報を出力デバイスにルーティングする。プロセッサはたとえば、コンピュータ、コントローラまたはマイクロプロセッサの能力を使用することができ、または含むことができ、汎用のコンピュータによって実行されない特別な目的のファンクションを実施するために実行可能な命令を用いて、コンディショニングすることができる。プロセッサを、他の任意のプロセッサと（電気的に、および／または実行可能なコンポーネントを含むように）接続することができ、これによってそれらの間のインタラクションおよび／またはコミュニケーションが可能となる。ユーザインタフェースプロセッサまたはユーザインタフェースジェネレータは、周知の要素であり、ディスプレイイメージまたはその一部分を生成するために、これには電子回路またはソフトウェアまたは両者の組み合わせが含まれている。ユーザインタフェースには、プロセッサまたは他のデバイスとのユーザインタラクションを可能にする１つまたは複数のディスプレイイメージが含まれている。
【００４２】
引き続き図５を参照すると、コンピュータシステム５１０にはさらに、情報とプロセッサ５２０によって実行すべき命令とを記憶するために、システムバス５２１と接続されたシステムメモリ５３０も含まれている。システムメモリ５３０は、リードオンリメモリ（ＲＯＭ）５３１および／またはランダムアクセスメモリ（ＲＡＭ）５３２などのような、揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ読み取り可能なストレージ媒体を含むことができる。システムメモリのＲＡＭ５３２は、（１つまたは複数の）他のダイナミックストレージデバイス（たとえばダイナミックＲＡＭ、スタティックＲＡＭ、およびシンクロナスＤＲＡＭ）を含むことができる。システムメモリのＲＯＭ５３１は、（１つまたは複数の）他のスタティックストレージデバイス（たとえばプログラマブルＲＯＭ、消去可能なＰＲＯＭ、および電気的に消去可能なＰＲＯＭ）を含むことができる。これらに加え、システムメモリ５３０を、プロセッサ５２０による命令実行中、一時的な変数または他の中間段階の情報を記憶するために用いることができる。始動中などに、コンピュータシステム５１０内の各要素間での情報伝送を補助する基本ルーチンを含む基本入出力システム５３３（ＢＩＯＳ）を、システムメモリのＲＯＭ５３１に記憶させることができる。システムメモリのＲＡＭ５３２には、プロセッサ５２０により即座にアクセス可能な、および／またはプロセッサ５２０により目下実行されているデータモジュールおよび／またはプログラムモジュールを含めることができる。これらに加えシステムメモリ５３０は、たとえばオペレーティングシステム５３４、アプリケーションプログラム５３５、他のプログラムモジュール５３６、およびプログラムデータ５３７も含むことができる。
【００４３】
コンピュータシステム５１０には、情報および命令を記憶するための１つまたは複数のストレージデバイスたとえば磁気ハードディスク５４１およびリムーバブル媒体ドライブ５４２（たとえばフロッピーディスクドライブ、コンパクトディスクドライブ、テープドライブ、および／またはソリッドステートドライブ）などを制御するために、システムバス５２１と接続されたディスクコントローラ５４０も含まれている。これらのストレージデバイスを、適切なデバイスインタフェース（たとえばsmall computer system interface (SCSI), integrated device electronics (IDE), Universal Serial Bus (USB)またはFire Wire）を用いて、コンピュータシステム５１０に追加することができる。
【００４４】
コンピュータシステム５１０にはさらに、コンピュータユーザに情報を表示するための、ブラウン管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）などのようなディスプレイ５６６を制御するために、システムバス５２１と接続されたディスプレイコントローラ５６５も含めることができる。コンピュータシステムには、コンピュータユーザとのインタラクションおよび１つまたは複数のプロセッサ５２０への情報の供給のために、入力インタフェース５６０と、キーボード５６２およびポインティングデバイス５６１などのような１つまたは複数の入力デバイスが含まれている。方向情報およびコマンド選択を１つまたは複数のプロセッサ５２０へ伝達するために、およびディスプレイ５６６上でのカーソルの動きを制御するために、ポインティングデバイス５６１をたとえばマウス、ライトペン、トラックボール、またはポインティングスティックとすることができる。ディスプレイ５６６によって、タッチスクリーンインタフェースを提供することができ、このインタフェースによって、ポインティングデバイス５６１による方向情報およびコマンド選択の伝達を補足または置き換えるための入力が可能となる。
【００４５】
コンピュータシステム５１０は、システムメモリ５３０などのようなメモリ内に含まれている１つまたは複数の命令の１つまたは複数のシーケンスを実行する、１つまたは複数のプロセッサ５２０に応答して、本発明の実施形態の処理ステップの一部分またはすべてを実行することができる。このような命令を、磁気ハードディスク５４１またはリムーバブル媒体ドライブ５４２など他のコンピュータ読み取り可能媒体から、システムメモリ５３０に読み込むことができる。磁気ハードディスク５４１は、本発明の実施形態により使用される１つまたは複数のデータストアおよびデータファイルを含むことができる。セキュリティ向上のため、データストアのコンテンツおよびデータファイルを暗号化することができる。システムメモリ５３０内に含まれている１つまたは複数の命令シーケンスを実行するために、複数のプロセッサ５２０をマルチプロセッシング構成で使用することもできる。択一的な実施形態によれば、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を用いてもよい。したがって、ハードウェア回路とソフトウェアの何らかの特定の組み合わせに、実施形態が限定されるものではない。
【００４６】
上述のようにコンピュータシステム５１０は、本発明の実施形態に従ってプログラミングされた命令を保持するための、およびデータ構造、テーブル、レコードまたはここで述べた他のデータを入れるための、少なくとも１つのコンピュータ読み取り可能媒体またはメモリを含むことができる。ここで用いられている用語「コンピュータ読み取り可能媒体」は、実行のために１つまたは複数のプロセッサ５２０に命令を供給することに関与する何らかの媒体のことを指す。コンピュータ読み取り可能媒体は、以下に限定されるものではないが、非一時的媒体、不揮発性媒体、揮発性媒体および伝送媒体を含む数多くの形態をとることができる。不揮発性媒体の非限定的な例を挙げると、光ディスク、ソリッドステートドライブ、磁気ディスク、および光磁気ディスクであり、たとえば磁気ハードディスク５４１またはリムーバブル媒体ドライブ５４２などである。揮発性媒体の非限定的な例を挙げると、システムメモリ５３０などのようなダイナミックメモリである。伝送媒体の非限定的な例を挙げると、同軸ケーブル、銅線、および光ファイバであり、これにはシステムバス５２１を構築するワイヤが含まれる。伝送媒体には、電波や赤外線によるデータ通信中に発せられるような、音響波または光波の形態を含めることができる。
【００４７】
コンピューティング環境５００にはさらに、リモートコンピュータ５８０などのような１つまたは複数のリモートコンピュータとの論理接続を用いてネットワークが構築された環境で動作するコンピュータシステム５１０を含めることができる。リモートコンピュータ５８０を、パーソナルコンピュータ（ラップトップまたはデスクトップ）、モバイルデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、このリモートコンピュータ５８０には一般に、コンピュータシステム５１０に関連して述べた上述の要素のうちの多数またはすべてが含まれている。ネットワーキング環境で用いられる場合、コンピュータシステム５１０には、インターネットなどのようなネットワーク５７１を介して通信を確立するために、モデム５７２を含めることができる。モデム５７２を、ユーザネットワークインタフェース５７０を介して、または他の適切なメカニズムを介して、システムバス５２１と接続することができる。
【００４８】
ネットワーク５７１を、当技術分野において一般的に知られている任意のネットワークまたはシステムとすることができ、これにはインターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、１つのダイレクトコネクションまたは一連のダイレクトコネクション、セルラ電話回線網、またはコンピュータシステム５１０と他のコンピュータ（たとえばリモートコンピューティング５８０）との間の通信を促進することのできる他の任意のネットワークまたは媒体が含まれる。ネットワーク５７１を有線、ワイヤレス、またはそれらの組み合わせとすることができる。有線コネクションを、Ethernet、Universal Serial Bus (USB)、RJ-6、または当技術分野で一般的に知られている他の任意の有線コネクションを用いて、インプリメントすることができる。ワイヤレスコネクションを、Wi-Fi、WiMAXおよびBluetooth、赤外線ネットワーク、セルラネットワーク、衛星、または当技術分野で一般的に知られている他の任意のワイヤレスコネクション技法を用いて、インプリメントすることができる。これらに加え、複数のネットワークを単独で動作させてもよいし、または互いに通信し合う状態で動作させてもよく、これによればネットワーク５７１における通信が容易になる。
【００４９】
ここで用いられる実行可能なアプリケーションは、たとえばユーザのコマンドまたは入力に応答して、オペレーティングシステム、コンテキストデータ取得システムまたは他の情報処理システムのファンクションなど、予め定められたファンクションをインプリメントするために、プロセッサをコンディショニングするためのコードまたは機械読み取り可能な命令を含んでいる。実行可能なプロシージャは、１つまたは複数の特定のプロセスを実施するために実行可能なアプリケーションの、コードまたは機械読み取り可能な命令の１つのセグメント、サブルーチン、またはコードまたは一部分の他の別個のセクションである。これらのプロセスとして挙げられるのは、入力データおよび／またはパラメータの受け取り、受け取った入力データに基づくオペレーションの実施、および／または受け取った入力パラメータに応答したファンクションの実施、および結果として生じた出力データおよび／またはパラメータの供給である。
【００５０】
ここで用いられるグラフィックユーザインタフェース（ＧＵＩ）には、ディスプレイプロセッサにより生成される１つまたは複数のディスプレイイメージが含まれており、これによってプロセッサまたは他のデバイスおよび対応づけられたデータ取得および処理のファンクションとのユーザインタラクションが可能になる。ＧＵＩには、実行可能なプロシージャまたは実行可能なアプリケーションも含まれている。実行可能なプロシージャまたは実行可能なアプリケーションによって、ＧＵＩディスプレイイメージを表す信号を発生させるために、ディスプレイプロセッサがコンディショニングされる。これらの信号は、ユーザが閲覧するためのイメージを表示するディスプレイデバイスに供給される。プロセッサは、実行可能なプロシージャまたは実行可能なアプリケーションの制御に従い、入力デバイスから受け取った信号に応答して、ＧＵＩディスプレイイメージを操作する。このようにしてユーザは、プロセッサまたは他のデバイスとのユーザインタラクションを可能にする入力デバイスを用いることで、ディスプレイイメージとインタラクトすることができる。
【００５１】
ここでファンクションおよびプロセスステップを、ユーザコマンドに応答して、完全にまたは部分的に自動的に実施させることができる。自動的に実施される１つのアクティビティは（１つのステップを含めて）、そのアクティビティをユーザがじかに開始させることなく、１つまたは複数の実行可能な命令またはデバイスオペレーションに応答して実施される。
【００５２】
図面のシステムおよびプロセスは、排他的なものではない。同じ目的を達成するために、本発明の原理に従って他のシステム、プロセスおよびメニューを派生させることができる。これまで本発明について、特定の実施形態を参照しながら説明してきたが、ここに示して説明した実施形態および変形形態は例示目的であるにすぎない、という点を理解されたい。当業者であれば、本発明の範囲を逸脱することなく、現行の設計に対する変更をインプリメントすることができる。さらにこれまで述べてきたように、様々なシステム、サブシステム、エージェント、マネージャおよびプロセスを、ハードウェアコンポーネント、ソフトウェアコンポーネント、および／またはそれらの組み合わせを用いてインプリメントすることができる。本願の特許請求の範囲の構成要件を「〜のための手段」"means for"というフレーズを用いて特別に挙げないかぎり、その要件は米国特許法第１１２条第６項の条項に従って解釈されるものではない。
【図１】
2018501532.tif 000003
【図２】
2018501532.tif 000004
【図３】
2018501532.tif 000005
【図４】
2018501532.tif 000006
【図５】
2018501532.tif 000007
【国際調査報告】
2018501532.tif 000008
2018501532.tif 000009
2018501532.tif 000010
2018501532.tif 000011