"閉ループ制御器のためのコードを生成する方法であって、データ処理システム100がシミュレーションモデルについての入力を受け付けるステップ302と、なお、該シミュレーションモデルはセンサを含み、前記データ処理システムが、前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップ304、306と、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、前記データ処理ステム100が、前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップ310と、前記データ処理システム100が、前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップ312と、前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップ314と、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、を含む、ことを特徴とする方法。前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付ける308まで、前記修正された制御コードを同時実行するステップ306および生成するステップ310を繰り返し実行する、請求項1記載の方法。前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項1又は2記載の方法。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される312、請求項1から3のいずれか1項記載の方法。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される312、請求項1から4のいずれか1項記載の方法。前記シミュレーションモデルはアクチュエータをさらに含む,請求項1から5のいずれか1項記載の方法。前記制御コードはシミュレートされた物理制御器を制御する、請求項1から6のいずれか1項記載の方法。前記シミュレーションモデルは、相互に影響し合う複数の機械的要素を含む、機械的/物理的3Dシミュレーションモデルである、請求項1から7のいずれか1項記載の方法。プロセッサとアクセス可能メモリを有するデータ処理システムであって、該データ処理システムは、シミュレーションモデルについての入力を受け付けるステップと、なお、該シミュレーションモデルはセンサを含み、前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップと、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップと、前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップと、前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップと、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、を実行するよう特に構成されている、ことを特徴とするシステム。前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付けるまで、前記修正された制御コードを同時実行するステップおよび生成するステップを繰り返し実行する、請求項9記載のデータ処理システム。前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項9記載のデータ処理システム。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される、請求項9記載のデータ処理システム。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される、請求項9記載のデータ処理システム。前記シミュレーションモデルはアクチュエータをさらに含む,請求項9記載のデータ処理システム。前記制御コードはシミュレートされた物理制御器を制御する、請求項9記載のデータ処理システム。コンピュータ実行可能命令がコード化されたコンピュータ読み取り可能記録媒体であって、前記命令は、実行時に、データ処理システムに、シミュレーションモデルについての入力を受け付けるステップと、なお、該シミュレーションモデルはセンサを含み、前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップと、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップと、前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップと、前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップと、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、を実行させる、ことを特徴とするコンピュータ読み取り可能記録媒体。前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付けるまで、前記修正された制御コードを同時実行するステップおよび生成するステップは繰り返し実行される、請求項16記載のコンピュータ読み取り可能記録媒体。前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項16記載のコンピュータ読み取り可能記録媒体。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される、請求項16記載のコンピュータ読み取り可能記録媒体。前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される、請求項16記載のコンピュータ読み取り可能記録媒体。前記制御コードはシミュレートされた物理制御器を制御する、請求項16記載のコンピュータ読み取り可能記録媒体。移動リストにより同定される移動が別の移動処理により要求されるときに、該移動リストから全ての移動を除くステップを実行時にデータ処理システムに実行させる命令をさらに含む、請求項16記載のコンピュータ読み取り可能記録媒体。種々の実施形態には、システム、方法およびコンピュータ読み取り可能媒体が含まれる。方法は、シミュレーションモデルについての入力を受け付けるステップを含み、なお、該シミュレーションモデルはセンサを含む。該方法は、シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップを含み、なお、該制御コードはセンサの状態に従ってシミュレーションモデルと相互に影響する。該方法は、実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップ、および、修正された制御コードに基づいて、制御器特有の制御コードを生成するステップを含む。該方法は、シミュレーションモデルおよび制御器特有の制御コードを実行するステップを含み、なお、制御器特有の制御コードは、シミュレーションモデルと相互に影響する。上記は、当業者が以下の詳細な説明をより良く理解できるように本発明の特徴および技術的な利点をかなり大雑把に述べたものである。特許請求の範囲の対象を成す本発明の付加的な特徴及び利点を以下において説明する。当業者であれば、本発明の変更又は本発明と同一の目的を達成するための構造を設計するための基礎として、開示された着想及び特定の実施の形態を容易に使用することができるであろう。また、当業者であれば、そのような等価物はその最も広い形態においても、本発明の精神及び範囲から逸脱するものではないことが分かるであろう。以下の詳細な説明の前に、本明細書にわたり使用される幾つかの用語又は語句の定義を明確にすることは有利であると思われる。含む及び有するという語、またそれらから派生した語は限定的でない包含を意味する。又はという語は包含的な語であり、すなわち及び/又はを意味する。関連した及びそれと関連したならびにそれらから派生した語は含む、中に含まれる、相互に接続されている、有する、中に有する、~に、又は~と接続する、~に、又は~と結合する、~と通信可能である、~と協働する、交互配置する、近接して並置する、~に近接している、~に、又は~と結び付けられている、持つ、~の性質を有する等を意味する。またコントローラという語は、ハードウェア、ファームウェア、ソフトウェア、又はそれらのうちの少なくとも2つの組合せによって実施されていようと、少なくとも1つの動作を制御する任意のデバイス、システム又はその一部を意味する。任意の特定のコントローラに関連した機能は中央に集中していてもよいし、局所的であれ遠隔的であれ分散していても良いことを言及しておく。本願明細書全体にわたり幾つかの語及び語句の定義が示されるが、当業者であれば、そのような定義は、殆どではないにしろ、多くの場合、このように定義された語及び語句の以前の用法及び将来の用法にも当てはまることを理解するであろう。幾つかの語は多様な実施の形態を含んでいるが、添付の特許請求の範囲における記載はこれらの語を特定の実施の形態に明示的に限定している。本明細書及び本発明の利点をより完璧に理解するために、以下では、添付の図面を参照しながら本発明を説明する。図面において、同一の参照番号は同一の対象を表している。本願書類において本発明の主旨を記載するために用いられる図1~3後述および種々の実施形態は例示に過ぎず、本発明の範囲を何ら限定するものと理解されるべきではない。本発明の基本構成が任意に適切に構成された装置において実施可能であることは当業者には理解されるであろう。本願の多くの革新的な教示について、例示的な非限定の実施形態に関連して記載される。製造機械および他の装置は、ますますデジタル制御器により制御されるようになっている。これまでは製造機械は中心に直立した軸を駆動する大きなモータを特徴としていた。様々な種類の歯車装置がアクチュエータに対してその軸の動き物理的に転換し、分配する。最近の機械は、機械と製造処理の状態を監視するセンサとによって加工品を動かし、処理する、分散された複数のアクチュエータからなる。製造処理の状態に対するアクチュエータの配置は、デジタル制御器上で動作するソフトウェアにより行われる。このやり方のメリットは、これらの機械が、新たな製品の製造や、制御器ソフトウェアの編集による製造処理の変化に容易に適合させることができることである。機械の機能は今では物理的歯車装置の代わりにソフトウェアで特定されるため、作動構造の製造における複雑さがプログラミングの難しさとなっている。デジタル制御器のプログラマはこれまでは別個の分野にあった専門知識を有する必要がある。プログラマは機械について、機械的に、かつ、処理について深く理解する必要があり、制御器に用いられているプログラミング言語にも熟達していなければならない。これらの異なる要求のため、現在、高度な資格を有するスタッフのみが最近の製造機械を自動化するためのコードを生成することができ、これらの専門家にとってさえも、機械が生産に入れるようになるまでには、多くの時間と試験が必要である。開示の実施形態によれば、機械的システムの作動の仕方の直感的なイメージにより適合する、制御器のプログラミング開発のための対話型システムを供給することにより、プログラマの負担が軽減される。図1は、一つの実施形態を実施することができる、例えばCADシステムとしてのデータ処理システムのブロック図を示す。図示されているデータ処理システムはプロセッサ102を含んでおり、このプロセッサ102は2次キャッシュ/ブリッジ104に接続されている。2次キャッシュ/ブリッジ104はさらにローカルシステムバス106に接続されている。ローカルバスシステム106は、例えば、PCIperipheralcomponentinterconnectアーキテクチャバスである。図示されている実施例におけるローカルバスシステムには、メインメモリ108及びグラフィックアダプタ110も接続されている。グラフィックアダプタ110をディスプレイ111に接続することもできる。他の周辺装置、例えばローカルエリアネットワークLAN/ワイドエリアネットワーク/ワイヤレス例えばWiFiアダプタ112もローカルバスシステム106に接続することができる。拡張バスインタフェース114は、ローカルバスシステム106を入力/出力I/Oバス116に接続させる。I/Oバス116にはキーボード/マウスアダプタ118、ディスクコントローラ120及びI/Oアダプタ122が接続されている。ディスクコントローラ120を記録装置126に接続することができ、この記録装置126は機械使用可能又は機械読み出し可能なあらゆる適切な記憶媒体で良く、不揮発性のハードコーディングタイプの媒体、例えば読み出し専用メモリROM又は電気的に消去及びプログラミング可能な読み出し専用メモリEEPROM、磁気タイプの記録装置及びユーザ記録可能なタイプの媒体、例えばフロッピーディスク、ハードディスクドライブ及びコンパクトディスク読み出し専用メモリCD-ROM又はデジタル多目的ディスクDVD及び他の公知の光学的、電気的又は磁気的な記録装置がこれに含まれるが、記憶媒体はこれらの例に限定されるものではない。図示されている例におけるI/Oバス116にはオーディオアダプタ124も接続されており、このオーディオアダプタ124には音声を再生するためにスピーカ図示せずを接続することができる。キーボード/マウスアダプタ118は、例えばマウス、トラックボール、トラックポインタ等のポインティングデバイス図示せずのためのコネクションを提供する。当業者には、図1に図示されているハードウェアを特定の実施の形態のために変更できることは明らかである。例えば、他の周辺装置、例えば光学ディスクドライブ等も付加的に使用することができるか、又は、図示されているハードウェアの代わりに使用することができる。図示されている実施例は説明を目的としたものに過ぎず、本発明に関する構造的な制約を暗示することを意図したものではない。本発明の実施の形態によるデータ処理システムは、グラフィカルユーザインタフェースを使用するオペレーティングシステムを含んでいる。オペレーティングシステムは複数のディスプレイウィンドウをグラフィカルユーザインタフェースにおいて同時に表示することができ、各ディスプレイウィンドウは種々のアプリケーションへのインタフェース又は同一のアプリケーションの種々のインスタンスへのインタフェースを提供する。ユーザはポインティングデバイスを介してグラフィカルユーザインタフェースにおけるカーソルを操作することができる。カーソルの位置を変更することができる、及び/又は、カーソルの位置として所望のレスポンスを起動させるために行なわれたイベント、例えばマウスボタンのクリックが考えられる。商用の種々のオペレーティングシステムの内の一つ、例えばMicrosoftWindows登録商標のバージョンレドモンドワシントン州に位置するMicrosoft社の製品を、適切に変更されている場合には使用することができる。オペレーティングシステムは、本明細書において説明する本発明に従い修正又は作成されている。LAN/WAN/ワイヤレスアダプタ112をデータ処理システム100の一部ではないネットワーク130に接続することができ、このネットワーク130として、当業者には周知であるような、公共又は私用のあらゆるデータ処理システムネットワーク、又は、ネットワークの組み合わせが考えられ、例えばインターネットが含まれる。データ処理システム100はネットワーク130を介してサーバシステム140と通信することができ、このサーバシステム140もまたデータ処理システム100の一部ではないが、例えば、別個のデータ処理システム100として実施することができる。現在、ユーザまたは他のユーザは、場合によりデータ処理システム100により、伝統的なプログラミング言語で製造システム用の制御器をプログラムしなければならず、各実装のための特有のプログラミング要件および言語を学ぶことが要求される場合がある。ユーザのプログラミングスキルを磨くために、および、実機での制御器ソフトウェアのテストのために、多くの時間がかけられる。ロボットシステムには、リアルタイムフィードバック無しで実行される開ループプログラムが用いられるものがある。これらのロボットシステムのプログラミングには、ロボットの種々のアクチュエータについての行動計画を記録する方法が用いられ、この方法では実際のまたは仮想的なロボットにおいてその後デモが行われる。記録された動作は、制御器によって、ロボットのアクチュエータの開ループ位置制御を提供するために用いられる。これらの技術では、制御器の作動中のリアルタイム入力に応答する閉ループシステムを適切に作動させることはできない。ロボットのプログラムされた動作は不変であり、ロボットとその周囲との物理的な相互影響を考慮しない。開示の実施形態によれば、センシングおよび他の条件が制御器の挙動に影響する、閉ループ自動化システムをプログラミングするためのシステムおよび方法が提供される。種々の実施形態には、統合型仮想化シミュレーションモデルを用いることにより、制御器ソフトウェアを生成する方法が含まれる。このモデルは機械の基本的な機械的/物理的挙動を再生する。図2は、開示の実施形態におけるシステム構造のブロック図を示し、これは、特定構成のデータ処理システムにおいて実現可能である。ユーザは、グラフィカルユーザインタフェース202を介してシステムと対話する。グラフィカルユーザインタフェース202には、たとえば、オブジェクトに対する動きまたは力を加えるようドラッグする、センサを起動させる、実行時間の開始、停止およびリバースを行う、などのユーザ対話技術が含まれる。グラフィカルユーザインタフェース202には、たとえば、3次元3Dシミュレーションモデル、センサおよびアクチュエータの状態、制御コードの状態、および、ユーザのシミュレーションとの対話および理解に有用な他の情報、などの視覚化機能が含まれる。また、システムは3Dグラフィックモデルを操作および保持することができる3Dグラフィックエディタ204を用いる。たとえば、モデルには、構造部分、ガイドや歯車装置などの結合部材、センサの検出領域およびこれらの要素の機械的要素、材料の流れ、ならびに、製品状態の変化が含まれるが、これらのものに限られない。モデルのオブジェクトは、3Dグラフィックエディタ204の3次元図として表される。このモデルは当業者に知られた3Dグラフィック方法を用いてシステムにより表示される。種々の実施形態では、シミュレーションモデルには少なくとも3種類のオブジェクトが含まれる。いくつかのオブジェクトは機械自身の物理的態様を表している。これには、種々のソリッドサーフェス、レバー、他の機械的要素が含まれる。これには、概念的な物理特性、たとえば、ヒンジにて結合された2つのオブジェクトまたは作用材料の流れる方向も含まれる。他のオブジェクトは機械が作用する加工製品を表す。たとえばコンベヤシステムに関して、製品はコンベヤに載るオブジェクトである。別の例として、成形装置に関して、製品は成形される原材料および成形後に生じる製品である。オブジェクトの最後の組は、挙動を生じさせる、機械のセンサおよびアクチュエータである。たとえば、モータは機械のレバーを動かす力を与え、または、レーザセンサはゲートウェイを介して通過する際にボックスの位置を読みとる。3Dシミュレーションモデルと関連する3Dグラフィックエディタ204のほかに、いくつかの実施形態のシステムには制御挙動のプログラミングのためのコードエディタ206がさらに含まれる。これらの挙動には、アクチュエータを機械の動作に適切に影響させる命令が含まれる。入力値はシミュレーションモデルにおけるセンサならびにタイミングや他のデータソースなどの固有の事象から得られてもよい。コードエディタ206は従来のプログラム言語を用いることができるか、または、好適には、フローチャート又はデータフロープログラミング技術を用いることができる。コードは、フローチャートやデータフロープログラミングなどのダイアグラム言語を用いて、システムとの対話を介して開発される。ユーザはいつでも直接に制御コードを編集することができ、好適な実施形態では、システムによってシミュレーション環境を自動的にコード生成に用いることができる。システムはさらにシミュレーションの際に制御コードを実行するためのインタープリタを有する。システムはシミュレートされたまたは実際の制御装置用の3Dシミュレーションモデルおよび制御コードを実行する実行システム208を有する。3Dシミュレーションモデルにより、ユーザは、グラフィックユーザインタフェース202の対話技術を用いて、3Dグラフィックエディタ204の3D図を操作することができる。たとえば、マウスのドラッグまたは同様のシステムに対する入力を、オブジェクトの位置および速度を変化させるため、力およびトルクを加えるため、センサを起動させるため、等のために用いることができる。シミュレーションモデルのこのリアルタイム操作の間、機械の機械的/物理的挙動に従って、ユーザ操作に応じて、システムにより物理的シミュレーションが実行され、表示される。モデルは、さらに、各センサが現在の環境にどのように反応するかを計算することにより、センサの状態を生成する。実行システム208はまた、アクチュエータにより生成される影響を更新するため、ここで特定された制御コードを実行することができる。種々の実施形態により、ユーザは、実行システム208の制御コードを閲覧および編集するために、シミュレーションモデルを実行することができる。ユーザと対話する一方、システムはシミュレーションモデルを動かす。ユーザの行動に応じて、システムは実行時間を開始し、停止し、戻す。シミュレーションが実行されている間、システムはさらに制御コードを実行し、ユーザは、アクチュエータがアクティブか非アクティブかを含むアクチュエータの全てのパラメタを見ることができる。どの時点でも、ユーザはシミュレーションモデルを一時停止することができ、この時点で、システムはシミュレーションオブジェクトの値をフリーズし、全てのアクチュエータについての制御コードの状態を表示する。このシミュレーションおよびユーザとの対話は、実行システム208の制御コードを生成するために用いることができる。システムは、ユーザまたは他のユーザから受け付けられた入力に応じて、重要な事象が発生するかまたは発生するよう意図される正確な時点を見つけるために、バックアップまたは時間を前後することができる。シミュレーションが一時停止している間、ユーザはコードを変えるためのいくつかの選択肢を有する。もちろん、ユーザはコードエディタ206を直接用いて編集することができる。ユーザは現在の状態におけるシミュレーションモデルのスナップショットをとることもできる。スナップショットは全てのアクチュエータのその現在の状態を効果的に記録する。システムはユーザにコードエディタにおいて利用可能なスナップショットオブジェクトを提供する。スナップショットをコードに挿入することによって、記録されたものと同じ状態に全てのアクチュエータを置くための命令が得られる。いくつかの場合には、スナップショットオブジェクトは実行システム208の制御コードの一部を構成するコード命令として実現される。スナップショットオブジェクトは特定の挙動モードに機械を適合させるための命令として用いることができる。たとえば、1つのスナップショットは機械が正常に動作しているときについて作成され、別のスナップショットは機械が診断モードにあるときに作成される。ユーザはスナップショットオブジェクトを検査し、名前を付与し、関係のない状態変数を除き、パラメタおよび状態を付加するようマニュアルで編集することができる。ユーザは、新たな命令を生成するために、シミュレーションモデルからコードにオブジェクトをドラッグすることもできる。生成される命令の種類は、ドラッグされたシミュレーションオブジェクトの文脈に依存する。状態表現を生成するため、いくつかの実施形態では、ユーザはセンサオブジェクトをコードにドラッグする。シミュレーションにおけるセンサオブジェクトはその状態を決定する特性値を有する。たとえば、フォトダイオードセンサは、オブジェクトがその対応する光ビームを通過したときに変化するバイナリ値を有する。センサについて自動生成される命令はセンサの特性値がシミュレーションにおける現在値と等しいか否かのテストである。複数のセンサオブジェクトをコードにドラッグすることにより、システムに各センサの値をテストさせる命令を生成させ、論理ANDによってそれらを1つのテストにまとめる。ユーザは別の表現が必要な場合、表現の論理を直接編集することができる。ユーザがアクチュエータオブジェクトをコードにドラッグしたとき、システムは自動的にアクチュエータの特性をその現在状態に変更する命令を生成する。生成された命令はスナップショットオブジェクトについて生成されるものと同じであるが、ドラッグされたアクチュエータに特有のものである。ユーザは必要に応じて命令を変更することができる。センサ又はアクチュエータ以外の機械の一部を制御コードにドラッグすると、システムはオブジェクトの状態を表す状態変数を生成する。システムはアクチュエータオブジェクトの所与の状態についての決定可能な状態変数を生成する。システムは、ユーザが加工対象物のオブジェクトを制御コードまたは物理的相互作用によってのみ同様に影響される機械的部分にドラッグしたときには、エラーを報告する。物理的相互作用は制御プログラムの範囲外で発生するため、制御コードはこれらの変数への参照を含むことはできない。ユーザはモデルのシミュレーションにおけるアクチュエータの状態を変更することにより命令を生成することもできる。シミュレーションが一時停止されたとき、ユーザは3Dグラフィックエディタを用いてそのオブジェクトを編集することができる。ユーザがアクチュエータを編集する場合、その変更を生じさせる命令が制御コードに加えられる。たとえば、ユーザがモータを作動させる場合、モータを作動させるためのコードがコードに加えられる。シミュレーションを再開し、それを再び繰り返して一時停止することにより、または、時間を前後に動かすための時間制御を用いることにより、動作シーケンスについてデモを行うことができる。各一時停止の後、ユーザはアクチュエータの状態をその適正な特性値に変更する。システムは、シーケンスにおける各動作の間にタイミング命令を自動的に挿入する。ユーザは、状態テストを生成するため、センサオブジェクトにドラッグすることなどにより必要に応じてタイミング命令を他のコードと置き換えることができる。いくつかの実施形態では、シミュレーションモデルにおけるアクチュエータ以外の編集されたオブジェクトの受けつけによって、システムに対する制御コードへの命令に付加は行われない。このような編集は、機械の部分をマニュアルで動かす機械オペレータのような外部の力、または、制御され得ない他の影響として扱われる。ユーザが機械の挙動に満足したとき、システムは、モデルとの対話により生成されたソフトウェアコードを、翻訳、コンパイル、あるいは他の処理により、デジタル制御器上で実行可能な制御器特有のソフトウェアコードジェネレータ210中の制御器特有のコードとして示されるとすることができる。ユーザは生成されたコードにアクセスできるため、制御ハードウェアに特有の改良が制御器ソフトウェアに適用可能である。翻訳されたコードの正しさを検証するため、シミュレーション内のアクチュエータおよびセンサに現実のまたは仮想的な制御器を接続することにより、他の物理的装置をシステムに接続することにより、または、システムにより仮想的な制御器および他のハードウェアを個別に実行することにより、機械の機械的/物理的挙動を表すシミュレーションモデルに対してコードをテストすることができる。このモードで実行する際、シミュレーションモデルは、その物理シミュレーションを正常に実行するが、これにより、アクチュエータの状態を外部装置またはシミュレートされた装置によって制御することができる。同様に、センサの状態は、内部で用いられる代わりに制御器に送られる。制御ソフトウェアを書きつつ、実行されているシミュレーションモデルを適用することの1つの全体的な利点は、ソフトウェアの操作をより明確に、より作成しやすく、そしてよりテストしやすくできることである。1つの利点は、利用可能な物理処理のシミュレーションを実行することにより、非常に多くの問題が簡単となることである。ユーザはコードの所与の部分がどのような影響を有するかをもはや推測することはない。コードはただ実行され、シミュレーションへの影響は通常容易に見ることができる。シミュレーションは仮想的であるため、物理機械上で実現することが困難であるものを含む処理の任意の特性を容易に見られる。ユーザはシミュレーション時間を制御することができるので、何かが起こるまたは起こると思われるときを直接見つけることができる。別の利点は、シミュレーションモデルが制御コードを理解するための直感的な手がかりを提供することである。通常、制御ソフトウェアはそれが制御する機械の明確な表現無く記述される。プログラマは他のドキュメンテーションを用いてまたはソフトウェアの変わりうる名前の意味を推測して、機械がどのように働くかを推論しなければならない。開示の実施形態では、シミュレーションによりコードを読む誰に対しても正しくコードが何に影響するのか、そして、それがどのように装置内の他の機構に関連するのかが示される。シミュレーションを実行することにより、プログラマは、十分にアニメーション化された対話型3Dグラフィックにおいて機械がどのように動作するかを見ることができる。別の利点は、コードおよびシミュレーションが明確に互いにリンクしていることである。シミュレーションをガイドとして用いてコードを検査することができ、さらに、コードによりガイドされたシミュレーションを検査することもできる。シミュレーションおよびコードの名前は直接結びつけられ、制御とシミュレーションとの間で途切れなく行き来することができる。シミュレーションオブジェクトを用いるとき、システムがこのオブジェクトについてのコードを特に作成するための新たな命令の作成においては、よりエラーが生じにくい。ユーザはセンサまたはアクチュエータの名前を打ち込む必要はなく、したがって、名前を誤る、または、誤ったオブジェクトに誤って命令を送る可能性は低くなる。さらに、センサおよびアクチュエータの特性値は実行中にシミュレーションから得られる。それゆえ、その値は装置に関して正しいとわかる。たとえば、プログラマが、実際上それが誤りであると予想されるときに、真の状態に対してセンサを誤ってテストする可能性は低い。本明細書中に開示される種々の実施形態は、全体的に、意図される機械の挙動ユーザの心の中にのみ在るをソフトウェアコードに翻訳する困難な作業を低減させる。プログラミングについてのすべて、および、装置の管理の仕方を思い出さなければならない代わりに、ユーザは影響されるべきものをポイントし、それをコードにドラッグする。図3は開示の実施形態に従う処理のフローチャートを示す。高レベルのフローチャートが、本明細書中に記載の統合型仮想シミュレーションモデルを用いる制御器ソフトウェアを生成するための処理に関連して記載されている。このような処理はシングルデータ処理システムまたは協働的マルチデータ処理システムにより実行可能であるが、いずれの場合もデータ処理システムと単数で記載する。システムはまずシミュレーションモデルについての入力を受け付けるステップ302。受け付けるとは、本明細書において用いられる場合、記憶媒体からのロード、別のシステムからのネットワーク等を介した受信、ユーザとの対話を介したシミュレーションモデルの構築、または、これらの組み合わせを含むその他のものが含まれる。種々の実施形態では、シミュレーションモデルは機械的/物理的3Dシミュレーションモデルであり、これにはたとえば、本明細書に記載のように、相互に影響する機械的要素や、ヒンジ、加工製品、センサ、アクチュエータなどの動きを制約する要素、その他が含まれる。このステップには、シミュレートされた1つ以上の物理制御器を制御する制御コードを、記録媒体、別のシステム、ユーザとの対話、これらの組み合わせなどから受け付けることも含まれる。システムはシミュレーションモデルを実行しステップ304、同時に、1つ以上のシミュレートされた物理制御器を制御する制御コードを実行するステップ306。シミュレートされた物理制御器の動作を示すよう、物理シミュレーションは、実行時に、制御コードの実行と相互に影響するよう、図3中、これらのステップは相互に影響して示されている。この同時実行は閉ループ制御システムを効果的にシミュレートし、ここで、シミュレーションモデルおよび制御器はシミュレーションモデル中に存在するセンサおよびアクチュエータに従ってその挙動を変更する。ステップ304および306の一部として、システムはシミュレーションモデルおよび制御コードを実行するときにユーザと対話することができる。システムはシミュレーションモデル内に存在するセンサおよびアクチュエータの状態を監視し、これらの状態および対応する状態ならびにシミュレーションモデルの動作のスナップショットをとる。システムは、シミュレーションモデルおよびシミュレートされた物理制御器の挙動が正しいか否か判別しステップ308、これにはたとえば挙動が意図された動作について正しいか否かについてのユーザの指示を受け付けることが含まれる。挙動が正しくない場合、システムは修正された制御コードを生成するステップ310。このステップには、スナップショットに基づいて修正された制御コードを生成又は編集すること、ユーザから入力を受け付けることなどが含まれる。好ましくは、ユーザはグラフィカルインタフェースを用いて、スナップショット、オブジェクトまたは生成されるコードの基礎としてのシステムへの他の入力を挿入することができ、このステップにはたとえばユーザから新たなまたは編集された制御コードを直接受け付けることも含まれる。その後、システムは、実行を継続するため、ステップ304および306に戻る。いくつかの実施形態では、システムは、挙動が正しいと判別されるまで、ステップ304、306、308、310の間で連続的にループする。このようにして、シミュレーションの挙動およびシミュレートされた物理制御器の挙動を変更するようユーザがシステムと対話する際、システムは効果的にリアルタイムシミュレーションおよびユーザとの対話を実行し、修正された制御コードを生成し、修正された制御コードおよびシミュレーションモデルを実行する。ユーザがシミュレーションモデルを操作するとき、シミュレートされた物理制御器、アクチュエータ、センサおよびその他のオブジェクトの状態、ならびに、制御コード自身、表示されたシミュレーションモデルは即時に更新される。挙動が正しいと判別されたときステップ308にて、システムは、制御コードおよび/またはシミュレーションモデルの現在状態に基づいて、制御器特有のコードを自動的に生成するステップ312。このステップには、ユーザなどからの、特定のモデルの指示またはコードが生成されるべき特定の制御器の仕様の受け付け、および、制御器特有のコード特定の制御器のカーネルを含むの生成に必要な特定の制御器についての全ての関連データの受け付けが含まれる。特定の制御器とは、本明細書中で用いられるとき、特定の制御器または装置を示し、あるいは、種々の装置に使用可能な制御器の特定の型またはモデルを示す。システムは、シミュレーションモデルを、今度は特定の制御器についてのカーネルとやりとりして再び実行しステップ314、この際、カーネルは制御器特有のコードを実行する。このステップには、カーネルを含む特定の制御器のシミュレーションを実行すること、または、カーネルを含む実際の特定の物理制御器とやりとりすることが含まれる。このようにして、シミュレーションモデルは、制御器に特有のコードが正しいことを確実にするよう、特定の制御器または特定の制御器のシミュレーションと直接相互に影響するシミュレーションを表示することができる。このステップにはたとえば制御器特有のコードに対する編集または修正を受け付けることが含まれる。当業者であれば、簡潔且つ明確にするために、本発明を用いた使用に適した全てのデータ処理システムの完全な構造及び動作は、本明細書において図示又は説明していないことが分かる。その代わりに、本発明に固有のデータ処理システム又は本発明の理解のために必要なデータ処理システムのみを図示及び説明している。データ処理システム100のその他の構造及び動作は、当業者には公知である現行の種々の任意の実現および実施に従うもので良い。本明細書には完全に機能的なシステムの文脈での記述が含まれているが、当業者であれば、本発明のメカニズムの少なくとも一部は種々の任意の形態の機械使用可能、コンピュータ使用可能又はコンピュータ読み出し可読な媒体に記録された命令の形態で配布できること、また本発明はその配布物を実際に実行するために使用される特定のタイプの命令又は信号が記録されている媒体又は記憶媒体に関係なく同様に適用されることを理解するであろうということを言及することは重要である。それらの命令は、実行されれば、データ処理システムに本明細書において説明した方法を実施させることができる。機械使用可能/機械読み出し可能又はコンピュータ使用可能/コンピュータ読み出し可能な媒体の例には、不揮発のハードコーディングタイプの媒体、例えば読み出し専用メモリROM又は電気的に消去及びプログラミング可能な読み出し専用メモリEEPROM及びユーザ記録可能なタイプの媒体、例えばフロッピーディスク、ハードディスクドライブ及びコンパクトディスク読み出し専用メモリCD-ROM又はデジタル多目的ディスクDVDが含まれる。本発明の実施例を詳細に説明してきたが、当業者であれば、本明細書に記載した実施例の種々の変更、置換、バリエーション及び改良はその最も広い形態においても本発明の精神及び範囲から逸脱することなく可能であることが分かるであろう。"