(57)【要約】  方法は、シミュレーションモデルについての入力を受け付けるステップを含み、なお、該シミュレーションモデルはセンサを含む。該方法は、シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップ（３０４、３０６）を含み、なお、該制御コードはセンサの状態に従ってシミュレーションモデルと相互に影響する。該方法は、実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップ（３１２）、および、修正された制御コードに基づいて、制御器特有の制御コードを生成するステップを含む。最後に、該方法は、シミュレーションモデルおよび制御器特有の制御コードを実行するステップ（３１４）を含み、なお、制御器特有の制御コードは、シミュレーションモデルと相互に影響する。
2013536480.tif 000002
【特許請求の範囲】
【請求項１】
閉ループ制御器のためのコードを生成する方法であって、
データ処理システム（１００）がシミュレーションモデルについての入力を受け付けるステップ（３０２）と、なお、該シミュレーションモデルはセンサを含み、
前記データ処理システムが、前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップ（３０４、３０６）と、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、
前記データ処理ステム（１００）が、前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップ（３１０）と、
前記データ処理システム（１００）が、前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップ（３１２）と、
前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップ（３１４）と、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、
を含む、ことを特徴とする方法。
【請求項２】
前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付ける（３０８）まで、前記修正された制御コードを同時実行するステップ（３０６）および生成するステップ（３１０）を繰り返し実行する、請求項１記載の方法。
【請求項３】
前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項１又は２記載の方法。
【請求項４】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される（３１２）、請求項１から３のいずれか１項記載の方法。
【請求項５】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される（３１２）、請求項１から４のいずれか１項記載の方法。
【請求項６】
前記シミュレーションモデルはアクチュエータをさらに含む，請求項１から５のいずれか１項記載の方法。
【請求項７】
前記制御コードはシミュレートされた物理制御器を制御する、請求項１から６のいずれか１項記載の方法。
【請求項８】
前記シミュレーションモデルは、相互に影響し合う複数の機械的要素を含む、機械的／物理的３Ｄシミュレーションモデルである、請求項１から７のいずれか１項記載の方法。
【請求項９】
プロセッサとアクセス可能メモリを有するデータ処理システムであって、該データ処理システムは、
シミュレーションモデルについての入力を受け付けるステップと、なお、該シミュレーションモデルはセンサを含み、
前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップと、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、
前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップと、
前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップと、
前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップと、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、
を実行するよう特に構成されている、ことを特徴とするシステム。
【請求項１０】
前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付けるまで、前記修正された制御コードを同時実行するステップおよび生成するステップを繰り返し実行する、請求項９記載のデータ処理システム。
【請求項１１】
前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項９記載のデータ処理システム。
【請求項１２】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される、請求項９記載のデータ処理システム。
【請求項１３】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される、請求項９記載のデータ処理システム。
【請求項１４】
前記シミュレーションモデルはアクチュエータをさらに含む，請求項９記載のデータ処理システム。
【請求項１５】
前記制御コードはシミュレートされた物理制御器を制御する、請求項９記載のデータ処理システム。
【請求項１６】
コンピュータ実行可能命令がコード化されたコンピュータ読み取り可能記録媒体であって、前記命令は、実行時に、データ処理システムに、
シミュレーションモデルについての入力を受け付けるステップと、なお、該シミュレーションモデルはセンサを含み、
前記シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップと、なお、該制御コードは前記センサの状態に従って前記シミュレーションモデルと相互に影響し、
前記実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップと、
前記修正された制御コードに基づいて、制御器特有の制御コードを生成するステップと、
前記シミュレーションモデルおよび前記制御器特有の制御コードを実行するステップと、なお、前記制御器特有の制御コードは、前記シミュレーションモデルと相互に影響する、
を実行させる、ことを特徴とするコンピュータ読み取り可能記録媒体。
【請求項１７】
前記データ処理システムが前記シミュレーションモデルの挙動が正しいという指示を受け付けるまで、前記修正された制御コードを同時実行するステップおよび生成するステップは繰り返し実行される、請求項１６記載のコンピュータ読み取り可能記録媒体。
【請求項１８】
前記修正された制御コードを生成するステップは、前記センサの状態に基づいて制御コードを変更するステップを含む、請求項１６記載のコンピュータ読み取り可能記録媒体。
【請求項１９】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器により実行される、請求項１６記載のコンピュータ読み取り可能記録媒体。
【請求項２０】
前記制御器特有の制御コードは、該制御器特有の制御コードに対応する特定の制御器のシミュレーションにより実行される、請求項１６記載のコンピュータ読み取り可能記録媒体。
【請求項２１】
前記制御コードはシミュレートされた物理制御器を制御する、請求項１６記載のコンピュータ読み取り可能記録媒体。
【請求項２２】
移動リストにより同定される移動が別の移動処理により要求されるときに、該移動リストから全ての移動を除くステップを実行時にデータ処理システムに実行させる命令をさらに含む、請求項１６記載のコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータベースの設計、製造、エンジニアリング、モデリングおよび視覚化（それぞれまたはまとめて「ＣＡＤ」および「ＣＡＤシステム」）、ならびに、プロダクトライフサイクルマネジメント（「ＰＬＭ」）および他のシステムにおける使用のためのシステムおよび方法に関する。
【背景技術】
【０００２】
多くの工業製品は最初にＣＡＤシステムで設計およびモデルリングされ、製造業者、小売業者、消費者および他のユーザにより、様々な製品の設計、使用および廃棄を管理するためにＰＬＭシステムが用いられる。改善されたシステムが望まれている。
【発明の概要】
【課題を解決するための手段】
【０００３】
種々の実施形態には、システム、方法およびコンピュータ読み取り可能媒体が含まれる。方法は、シミュレーションモデルについての入力を受け付けるステップを含み、なお、該シミュレーションモデルはセンサを含む。該方法は、シミュレーションモデルと、シミュレートされた物理制御器のための制御コードとを同時に実行するステップを含み、なお、該制御コードはセンサの状態に従ってシミュレーションモデルと相互に影響する。該方法は、実行されたシミュレーションモデルと制御コードに基づいて、修正された制御コードを生成するステップ、および、修正された制御コードに基づいて、制御器特有の制御コードを生成するステップを含む。該方法は、シミュレーションモデルおよび制御器特有の制御コードを実行するステップを含み、なお、制御器特有の制御コードは、シミュレーションモデルと相互に影響する。
【０００４】
上記は、当業者が以下の詳細な説明をより良く理解できるように本発明の特徴および技術的な利点をかなり大雑把に述べたものである。特許請求の範囲の対象を成す本発明の付加的な特徴及び利点を以下において説明する。当業者であれば、本発明の変更又は本発明と同一の目的を達成するための構造を設計するための基礎として、開示された着想及び特定の実施の形態を容易に使用することができるであろう。また、当業者であれば、そのような等価物はその最も広い形態においても、本発明の精神及び範囲から逸脱するものではないことが分かるであろう。
【０００５】
以下の詳細な説明の前に、本明細書にわたり使用される幾つかの用語又は語句の定義を明確にすることは有利であると思われる。「含む」及び「有する」という語、またそれらから派生した語は限定的でない包含を意味する。「又は」という語は包含的な語であり、すなわち「及び／又は」を意味する。「関連した」及び「それと関連した」ならびにそれらから派生した語は「含む」、「中に含まれる」、「相互に接続されている」、「有する」、「中に有する」、「〜に、又は〜と接続する」、「〜に、又は〜と結合する」、「〜と通信可能である」、「〜と協働する」、「交互配置する」、「近接して並置する」、「〜に近接している」、「〜に、又は〜と結び付けられている」、「持つ」、「〜の性質を有する」等を意味する。また「コントローラ」という語は、ハードウェア、ファームウェア、ソフトウェア、又はそれらのうちの少なくとも２つの組合せによって実施されていようと、少なくとも１つの動作を制御する任意のデバイス、システム又はその一部を意味する。任意の特定のコントローラに関連した機能は中央に集中していてもよいし、局所的であれ遠隔的であれ分散していても良いことを言及しておく。本願明細書全体にわたり幾つかの語及び語句の定義が示されるが、当業者であれば、そのような定義は、殆どではないにしろ、多くの場合、このように定義された語及び語句の以前の用法及び将来の用法にも当てはまることを理解するであろう。幾つかの語は多様な実施の形態を含んでいるが、添付の特許請求の範囲における記載はこれらの語を特定の実施の形態に明示的に限定している。
【０００６】
本明細書及び本発明の利点をより完璧に理解するために、以下では、添付の図面を参照しながら本発明を説明する。図面において、同一の参照番号は同一の対象を表している。
【図面の簡単な説明】
【０００７】
【図１】一実施形態が実現可能なデータ処理システムのブロック図を示す。
【図２】開示の実施形態にかかるシステム構成のブロック図を示す。
【図３】開示の実施形態にかかる処理のフローチャートを示す。
【発明を実施するための形態】
【０００８】
本願書類において本発明の主旨を記載するために用いられる図１〜３（後述）および種々の実施形態は例示に過ぎず、本発明の範囲を何ら限定するものと理解されるべきではない。本発明の基本構成が任意に適切に構成された装置において実施可能であることは当業者には理解されるであろう。本願の多くの革新的な教示について、例示的な非限定の実施形態に関連して記載される。
【０００９】
製造機械および他の装置は、ますますデジタル制御器により制御されるようになっている。これまでは製造機械は中心に直立した軸を駆動する大きなモータを特徴としていた。様々な種類の歯車装置がアクチュエータに対してその軸の動き物理的に転換し、分配する。
【００１０】
最近の機械は、機械と製造処理の状態を監視するセンサとによって加工品を動かし、処理する、分散された複数のアクチュエータからなる。製造処理の状態に対するアクチュエータの配置は、デジタル制御器上で動作するソフトウェアにより行われる。このやり方のメリットは、これらの機械が、新たな製品の製造や、制御器ソフトウェアの編集による製造処理の変化に容易に適合させることができることである。
【００１１】
機械の機能は今では物理的歯車装置の代わりにソフトウェアで特定されるため、作動構造の製造における複雑さがプログラミングの難しさとなっている。デジタル制御器のプログラマはこれまでは別個の分野にあった専門知識を有する必要がある。プログラマは機械について、機械的に、かつ、処理について深く理解する必要があり、制御器に用いられているプログラミング言語にも熟達していなければならない。これらの異なる要求のため、現在、高度な資格を有するスタッフのみが最近の製造機械を自動化するためのコードを生成することができ、これらの専門家にとってさえも、機械が生産に入れるようになるまでには、多くの時間と試験が必要である。
【００１２】
開示の実施形態によれば、機械的システムの作動の仕方の直感的なイメージにより適合する、制御器のプログラミング開発のための対話型システムを供給することにより、プログラマの負担が軽減される。
【００１３】
図１は、一つの実施形態を実施することができる、例えばＣＡＤシステムとしてのデータ処理システムのブロック図を示す。図示されているデータ処理システムはプロセッサ１０２を含んでおり、このプロセッサ１０２は２次キャッシュ／ブリッジ１０４に接続されている。２次キャッシュ／ブリッジ１０４はさらにローカルシステムバス１０６に接続されている。ローカルバスシステム１０６は、例えば、ＰＣＩ（peripheral component interconnect）アーキテクチャバスである。図示されている実施例におけるローカルバスシステムには、メインメモリ１０８及びグラフィックアダプタ１１０も接続されている。グラフィックアダプタ１１０をディスプレイ１１１に接続することもできる。
【００１４】
他の周辺装置、例えばローカルエリアネットワーク（ＬＡＮ）／ワイドエリアネットワーク／ワイヤレス（例えばＷｉＦｉ）アダプタ１１２もローカルバスシステム１０６に接続することができる。拡張バスインタフェース１１４は、ローカルバスシステム１０６を入力／出力（Ｉ／Ｏ）バス１１６に接続させる。Ｉ／Ｏバス１１６にはキーボード／マウスアダプタ１１８、ディスクコントローラ１２０及びＩ／Ｏアダプタ１２２が接続されている。ディスクコントローラ１２０を記録装置１２６に接続することができ、この記録装置１２６は機械使用可能又は機械読み出し可能なあらゆる適切な記憶媒体で良く、不揮発性のハードコーディングタイプの媒体、例えば読み出し専用メモリ（ＲＯＭ）又は電気的に消去及びプログラミング可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、磁気タイプの記録装置及びユーザ記録可能なタイプの媒体、例えばフロッピーディスク、ハードディスクドライブ及びコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）又はデジタル多目的ディスク（ＤＶＤ）及び他の公知の光学的、電気的又は磁気的な記録装置がこれに含まれるが、記憶媒体はこれらの例に限定されるものではない。
【００１５】
図示されている例におけるＩ／Ｏバス１１６にはオーディオアダプタ１２４も接続されており、このオーディオアダプタ１２４には音声を再生するためにスピーカ（図示せず）を接続することができる。キーボード／マウスアダプタ１１８は、例えばマウス、トラックボール、トラックポインタ等のポインティングデバイス（図示せず）のためのコネクションを提供する。
【００１６】
当業者には、図１に図示されているハードウェアを特定の実施の形態のために変更できることは明らかである。例えば、他の周辺装置、例えば光学ディスクドライブ等も付加的に使用することができるか、又は、図示されているハードウェアの代わりに使用することができる。図示されている実施例は説明を目的としたものに過ぎず、本発明に関する構造的な制約を暗示することを意図したものではない。
【００１７】
本発明の実施の形態によるデータ処理システムは、グラフィカルユーザインタフェースを使用するオペレーティングシステムを含んでいる。オペレーティングシステムは複数のディスプレイウィンドウをグラフィカルユーザインタフェースにおいて同時に表示することができ、各ディスプレイウィンドウは種々のアプリケーションへのインタフェース又は同一のアプリケーションの種々のインスタンスへのインタフェースを提供する。ユーザはポインティングデバイスを介してグラフィカルユーザインタフェースにおけるカーソルを操作することができる。カーソルの位置を変更することができる、及び／又は、カーソルの位置として所望のレスポンスを起動させるために行なわれたイベント、例えばマウスボタンのクリックが考えられる。
【００１８】
商用の種々のオペレーティングシステムの内の一つ、例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のバージョン（レドモンド（ワシントン州）に位置するＭｉｃｒｏｓｏｆｔ社の製品）を、適切に変更されている場合には使用することができる。オペレーティングシステムは、本明細書において説明する本発明に従い修正又は作成されている。
【００１９】
ＬＡＮ／ＷＡＮ／ワイヤレスアダプタ１１２を（データ処理システム１００の一部ではない）ネットワーク１３０に接続することができ、このネットワーク１３０として、当業者には周知であるような、公共又は私用のあらゆるデータ処理システムネットワーク、又は、ネットワークの組み合わせが考えられ、例えばインターネットが含まれる。データ処理システム１００はネットワーク１３０を介してサーバシステム１４０と通信することができ、このサーバシステム１４０もまたデータ処理システム１００の一部ではないが、例えば、別個のデータ処理システム１００として実施することができる。
【００２０】
現在、ユーザまたは他のユーザは、場合によりデータ処理システム１００により、伝統的なプログラミング言語で製造システム用の制御器をプログラムしなければならず、各実装のための特有のプログラミング要件および言語を学ぶことが要求される場合がある。ユーザのプログラミングスキルを磨くために、および、実機での制御器ソフトウェアのテストのために、多くの時間がかけられる。
【００２１】
ロボットシステムには、リアルタイムフィードバック無しで実行される開ループプログラムが用いられるものがある。これらのロボットシステムのプログラミングには、ロボットの種々のアクチュエータについての行動計画を記録する方法が用いられ、この方法では実際のまたは仮想的なロボットにおいてその後デモが行われる。記録された動作は、制御器によって、ロボットのアクチュエータの開ループ位置制御を提供するために用いられる。これらの技術では、制御器の作動中のリアルタイム入力に応答する閉ループシステムを適切に作動させることはできない。ロボットのプログラムされた動作は不変であり、ロボットとその周囲との物理的な相互影響を考慮しない。
【００２２】
開示の実施形態によれば、センシングおよび他の条件が制御器の挙動に影響する、閉ループ自動化システムをプログラミングするためのシステムおよび方法が提供される。種々の実施形態には、統合型仮想化シミュレーションモデルを用いることにより、制御器ソフトウェアを生成する方法が含まれる。このモデルは機械の基本的な機械的／物理的挙動を再生する。
【００２３】
図２は、開示の実施形態におけるシステム構造のブロック図を示し、これは、特定構成のデータ処理システムにおいて実現可能である。
【００２４】
ユーザは、グラフィカルユーザインタフェース２０２を介してシステムと対話する。グラフィカルユーザインタフェース２０２には、たとえば、オブジェクトに対する動きまたは力を加えるようドラッグする、センサを起動させる、実行時間の開始、停止およびリバースを行う、などのユーザ対話技術が含まれる。グラフィカルユーザインタフェース２０２には、たとえば、３次元（３Ｄ）シミュレーションモデル、センサおよびアクチュエータの状態、制御コードの状態、および、ユーザのシミュレーションとの対話および理解に有用な他の情報、などの視覚化機能が含まれる。
【００２５】
また、システムは３Ｄグラフィックモデルを操作および保持することができる３Ｄグラフィックエディタ２０４を用いる。たとえば、モデルには、構造部分、ガイドや歯車装置などの結合部材、センサの検出領域およびこれらの要素の機械的要素、材料の流れ、ならびに、製品状態の変化が含まれるが、これらのものに限られない。モデルのオブジェクトは、３Ｄグラフィックエディタ２０４の３次元図として表される。このモデルは当業者に知られた３Ｄグラフィック方法を用いてシステムにより表示される。
【００２６】
種々の実施形態では、シミュレーションモデルには少なくとも３種類のオブジェクトが含まれる。いくつかのオブジェクトは機械自身の物理的態様を表している。これには、種々のソリッドサーフェス、レバー、他の機械的要素が含まれる。これには、概念的な物理特性、たとえば、ヒンジにて結合された２つのオブジェクトまたは作用材料の流れる方向も含まれる。
【００２７】
他のオブジェクトは機械が作用する加工製品を表す。たとえばコンベヤシステムに関して、製品はコンベヤに載るオブジェクトである。別の例として、成形装置に関して、製品は成形される原材料および成形後に生じる製品である。
【００２８】
オブジェクトの最後の組は、挙動を生じさせる、機械のセンサおよびアクチュエータである。たとえば、モータは機械のレバーを動かす力を与え、または、レーザセンサはゲートウェイを介して通過する際にボックスの位置を読みとる。
【００２９】
３Ｄシミュレーションモデルと関連する３Ｄグラフィックエディタ２０４のほかに、いくつかの実施形態のシステムには制御挙動のプログラミングのためのコードエディタ２０６がさらに含まれる。これらの挙動には、アクチュエータを機械の動作に適切に影響させる命令が含まれる。入力値はシミュレーションモデルにおけるセンサならびにタイミングや他のデータソースなどの固有の事象から得られてもよい。コードエディタ２０６は従来のプログラム言語を用いることができるか、または、好適には、フローチャート又はデータフロープログラミング技術を用いることができる。
【００３０】
コードは、フローチャートやデータフロープログラミングなどのダイアグラム言語を用いて、システムとの対話を介して開発される。ユーザはいつでも直接に制御コードを編集することができ、好適な実施形態では、システムによってシミュレーション環境を自動的にコード生成に用いることができる。システムはさらにシミュレーションの際に制御コードを実行するためのインタープリタを有する。
【００３１】
システムはシミュレートされたまたは実際の制御装置用の３Ｄシミュレーションモデルおよび制御コードを実行する実行システム２０８を有する。３Ｄシミュレーションモデルにより、ユーザは、グラフィックユーザインタフェース２０２の対話技術を用いて、３Ｄグラフィックエディタ２０４の３Ｄ図を操作することができる。たとえば、マウスのドラッグまたは同様のシステムに対する入力を、オブジェクトの位置および速度を変化させるため、力およびトルクを加えるため、センサを起動させるため、等のために用いることができる。シミュレーションモデルのこのリアルタイム操作の間、機械の機械的／物理的挙動に従って、ユーザ操作に応じて、システムにより物理的シミュレーションが実行され、表示される。モデルは、さらに、各センサが現在の環境にどのように反応するかを計算することにより、センサの状態を生成する。実行システム２０８はまた、アクチュエータにより生成される影響を更新するため、ここで特定された制御コードを実行することができる。
【００３２】
種々の実施形態により、ユーザは、実行システム２０８の制御コードを閲覧および編集するために、シミュレーションモデルを実行することができる。ユーザと対話する一方、システムはシミュレーションモデルを動かす。ユーザの行動に応じて、システムは実行時間を開始し、停止し、戻す。シミュレーションが実行されている間、システムはさらに制御コードを実行し、ユーザは、アクチュエータがアクティブか非アクティブかを含むアクチュエータの全てのパラメタを見ることができる。どの時点でも、ユーザはシミュレーションモデルを一時停止することができ、この時点で、システムはシミュレーションオブジェクトの値をフリーズし、全てのアクチュエータについての制御コードの状態を表示する。このシミュレーションおよびユーザとの対話は、実行システム２０８の制御コードを生成するために用いることができる。
【００３３】
システムは、ユーザまたは他のユーザから受け付けられた入力に応じて、重要な事象が発生するかまたは発生するよう意図される正確な時点を見つけるために、バックアップまたは時間を前後することができる。
【００３４】
シミュレーションが一時停止している間、ユーザはコードを変えるためのいくつかの選択肢を有する。もちろん、ユーザはコードエディタ２０６を直接用いて編集することができる。ユーザは現在の状態におけるシミュレーションモデルの「スナップショット」をとることもできる。スナップショットは全てのアクチュエータのその現在の状態を効果的に記録する。システムはユーザにコードエディタにおいて利用可能なスナップショットオブジェクトを提供する。スナップショットをコードに挿入することによって、記録されたものと同じ状態に全てのアクチュエータを置くための命令が得られる。いくつかの場合には、スナップショットオブジェクトは実行システム２０８の制御コードの一部を構成するコード命令として実現される。スナップショットオブジェクトは特定の挙動モードに機械を適合させるための命令として用いることができる。
【００３５】
たとえば、１つのスナップショットは機械が正常に動作しているときについて作成され、別のスナップショットは機械が診断モードにあるときに作成される。ユーザはスナップショットオブジェクトを検査し、名前を付与し、関係のない状態変数を除き、パラメタおよび状態を付加するようマニュアルで編集することができる。
【００３６】
ユーザは、新たな命令を生成するために、シミュレーションモデルからコードにオブジェクトをドラッグすることもできる。生成される命令の種類は、ドラッグされたシミュレーションオブジェクトの文脈に依存する。
【００３７】
状態表現を生成するため、いくつかの実施形態では、ユーザはセンサオブジェクトをコードにドラッグする。シミュレーションにおけるセンサオブジェクトはその状態を決定する特性値を有する。たとえば、フォトダイオードセンサは、オブジェクトがその対応する光ビームを通過したときに変化するバイナリ値を有する。センサについて自動生成される命令はセンサの特性値がシミュレーションにおける現在値と等しいか否かのテストである。複数のセンサオブジェクトをコードにドラッグすることにより、システムに各センサの値をテストさせる命令を生成させ、論理ＡＮＤによってそれらを１つのテストにまとめる。ユーザは別の表現が必要な場合、表現の論理を直接編集することができる。
【００３８】
ユーザがアクチュエータオブジェクトをコードにドラッグしたとき、システムは自動的にアクチュエータの特性をその現在状態に変更する命令を生成する。生成された命令はスナップショットオブジェクトについて生成されるものと同じであるが、ドラッグされたアクチュエータに特有のものである。ユーザは必要に応じて命令を変更することができる。センサ又はアクチュエータ以外の機械の一部を制御コードにドラッグすると、システムはオブジェクトの状態を表す状態変数を生成する。システムはアクチュエータオブジェクトの所与の状態についての決定可能な状態変数を生成する。システムは、ユーザが加工対象物のオブジェクトを制御コードまたは物理的相互作用によってのみ同様に影響される機械的部分にドラッグしたときには、エラーを報告する。物理的相互作用は制御プログラムの範囲外で発生するため、制御コードはこれらの変数への参照を含むことはできない。
【００３９】
ユーザはモデルのシミュレーションにおけるアクチュエータの状態を変更することにより命令を生成することもできる。シミュレーションが一時停止されたとき、ユーザは３Ｄグラフィックエディタを用いてそのオブジェクトを編集することができる。ユーザがアクチュエータを編集する場合、その変更を生じさせる命令が制御コードに加えられる。たとえば、ユーザがモータを作動させる場合、モータを作動させるためのコードがコードに加えられる。シミュレーションを再開し、それを再び繰り返して一時停止することにより、または、時間を前後に動かすための時間制御を用いることにより、動作シーケンスについてデモを行うことができる。各一時停止の後、ユーザはアクチュエータの状態をその適正な特性値に変更する。システムは、シーケンスにおける各動作の間にタイミング命令を自動的に挿入する。
【００４０】
ユーザは、状態テストを生成するため、センサオブジェクトにドラッグすることなどにより必要に応じてタイミング命令を他のコードと置き換えることができる。いくつかの実施形態では、シミュレーションモデルにおけるアクチュエータ以外の編集されたオブジェクトの受けつけによって、システムに対する制御コードへの命令に付加は行われない。このような編集は、機械の部分をマニュアルで動かす機械オペレータのような外部の力、または、制御され得ない他の影響として扱われる。
【００４１】
ユーザが機械の挙動に満足したとき、システムは、モデルとの対話により生成されたソフトウェアコードを、翻訳、コンパイル、あるいは他の処理により、デジタル制御器上で実行可能な制御器特有のソフトウェア（コードジェネレータ２１０中の制御器特有のコードとして示される）とすることができる。ユーザは生成されたコードにアクセスできるため、制御ハードウェアに特有の改良が制御器ソフトウェアに適用可能である。翻訳されたコードの正しさを検証するため、シミュレーション内のアクチュエータおよびセンサに現実のまたは仮想的な制御器を接続することにより、他の物理的装置をシステムに接続することにより、または、システムにより仮想的な制御器および他のハードウェアを個別に実行することにより、機械の機械的／物理的挙動を表すシミュレーションモデルに対してコードをテストすることができる。
【００４２】
このモードで実行する際、シミュレーションモデルは、その物理シミュレーションを正常に実行するが、これにより、アクチュエータの状態を外部装置またはシミュレートされた装置によって制御することができる。同様に、センサの状態は、内部で用いられる代わりに制御器に送られる。
【００４３】
制御ソフトウェアを書きつつ、実行されているシミュレーションモデルを適用することの１つの全体的な利点は、ソフトウェアの操作をより明確に、より作成しやすく、そしてよりテストしやすくできることである。
【００４４】
１つの利点は、利用可能な物理処理のシミュレーションを実行することにより、非常に多くの問題が簡単となることである。ユーザはコードの所与の部分がどのような影響を有するかをもはや推測することはない。コードはただ実行され、シミュレーションへの影響は通常容易に見ることができる。シミュレーションは仮想的であるため、物理機械上で実現することが困難であるものを含む処理の任意の特性を容易に見られる。ユーザはシミュレーション時間を制御することができるので、何かが起こるまたは起こると思われるときを直接見つけることができる。
【００４５】
別の利点は、シミュレーションモデルが制御コードを理解するための直感的な手がかりを提供することである。通常、制御ソフトウェアはそれが制御する機械の明確な表現無く記述される。プログラマは他のドキュメンテーションを用いてまたはソフトウェアの変わりうる名前の意味を推測して、機械がどのように働くかを推論しなければならない。開示の実施形態では、シミュレーションによりコードを読む誰に対しても正しくコードが何に影響するのか、そして、それがどのように装置内の他の機構に関連するのかが示される。シミュレーションを実行することにより、プログラマは、十分にアニメーション化された対話型３Ｄグラフィックにおいて機械がどのように動作するかを見ることができる。
【００４６】
別の利点は、コードおよびシミュレーションが明確に互いにリンクしていることである。シミュレーションをガイドとして用いてコードを検査することができ、さらに、コードによりガイドされたシミュレーションを検査することもできる。シミュレーションおよびコードの名前は直接結びつけられ、制御とシミュレーションとの間で途切れなく行き来することができる。
【００４７】
シミュレーションオブジェクトを用いるとき、システムがこのオブジェクトについてのコードを特に作成するための新たな命令の作成においては、よりエラーが生じにくい。ユーザはセンサまたはアクチュエータの名前を打ち込む必要はなく、したがって、名前を誤る、または、誤ったオブジェクトに誤って命令を送る可能性は低くなる。さらに、センサおよびアクチュエータの特性値は実行中にシミュレーションから得られる。それゆえ、その値は装置に関して正しいとわかる。たとえば、プログラマが、実際上それが誤りであると予想されるときに、真の状態に対してセンサを誤ってテストする可能性は低い。
【００４８】
本明細書中に開示される種々の実施形態は、全体的に、意図される機械の挙動（ユーザの心の中にのみ在る）をソフトウェアコードに翻訳する困難な作業を低減させる。プログラミングについてのすべて、および、装置の管理の仕方を思い出さなければならない代わりに、ユーザは影響されるべきものをポイントし、それをコードにドラッグする。
【００４９】
図３は開示の実施形態に従う処理のフローチャートを示す。高レベルのフローチャートが、本明細書中に記載の統合型仮想シミュレーションモデルを用いる制御器ソフトウェアを生成するための処理に関連して記載されている。このような処理はシングルデータ処理システムまたは協働的マルチデータ処理システムにより実行可能であるが、いずれの場合も「データ処理システム」と単数で記載する。
【００５０】
システムはまずシミュレーションモデルについての入力を受け付ける（ステップ３０２）。「受け付ける」とは、本明細書において用いられる場合、記憶媒体からのロード、別のシステムからのネットワーク等を介した受信、ユーザとの対話を介したシミュレーションモデルの構築、または、これらの組み合わせを含むその他のものが含まれる。
【００５１】
種々の実施形態では、シミュレーションモデルは機械的／物理的３Ｄシミュレーションモデルであり、これにはたとえば、本明細書に記載のように、相互に影響する機械的要素や、ヒンジ、加工製品、センサ、アクチュエータなどの動きを制約する要素、その他が含まれる。このステップには、シミュレートされた１つ以上の物理制御器を制御する制御コードを、記録媒体、別のシステム、ユーザとの対話、これらの組み合わせなどから受け付けることも含まれる。
【００５２】
システムはシミュレーションモデルを実行し（ステップ３０４）、同時に、１つ以上のシミュレートされた物理制御器を制御する制御コードを実行する（ステップ３０６）。シミュレートされた物理制御器の動作を示すよう、物理シミュレーションは、実行時に、制御コードの実行と相互に影響するよう、図３中、これらのステップは相互に影響して示されている。この同時実行は閉ループ制御システムを効果的にシミュレートし、ここで、シミュレーションモデルおよび制御器はシミュレーションモデル中に存在するセンサおよびアクチュエータに従ってその挙動を変更する。
【００５３】
ステップ３０４および３０６の一部として、システムはシミュレーションモデルおよび制御コードを実行するときにユーザと対話することができる。システムはシミュレーションモデル内に存在するセンサおよびアクチュエータの状態を監視し、これらの状態および対応する状態ならびにシミュレーションモデルの動作の「スナップショット」をとる。
【００５４】
システムは、シミュレーションモデルおよびシミュレートされた物理制御器の挙動が正しいか否か判別し（ステップ３０８）、これにはたとえば挙動が意図された動作について正しいか否かについてのユーザの指示を受け付けることが含まれる。
【００５５】
挙動が正しくない場合、システムは修正された制御コードを生成する（ステップ３１０）。このステップには、スナップショットに基づいて修正された制御コードを生成又は編集すること、ユーザから入力を受け付けることなどが含まれる。好ましくは、ユーザはグラフィカルインタフェースを用いて、スナップショット、オブジェクトまたは生成されるコードの基礎としてのシステムへの他の入力を挿入することができ、このステップにはたとえばユーザから新たなまたは編集された制御コードを直接受け付けることも含まれる。その後、システムは、実行を継続するため、ステップ３０４および３０６に戻る。
【００５６】
いくつかの実施形態では、システムは、挙動が正しいと判別されるまで、ステップ３０４、３０６、３０８、３１０の間で連続的にループする。このようにして、シミュレーションの挙動およびシミュレートされた物理制御器の挙動を変更するようユーザがシステムと対話する際、システムは効果的にリアルタイムシミュレーションおよびユーザとの対話を実行し、修正された制御コードを生成し、修正された制御コードおよびシミュレーションモデルを実行する。ユーザがシミュレーションモデルを操作するとき、シミュレートされた物理制御器、アクチュエータ、センサおよびその他のオブジェクトの状態、ならびに、制御コード自身、表示されたシミュレーションモデルは即時に更新される。
【００５７】
挙動が正しいと判別されたとき（ステップ３０８にて）、システムは、制御コードおよび／またはシミュレーションモデルの現在状態に基づいて、制御器特有のコードを自動的に生成する（ステップ３１２）。このステップには、ユーザなどからの、特定のモデルの指示またはコードが生成されるべき特定の制御器の仕様の受け付け、および、制御器特有のコード（特定の制御器のカーネルを含む）の生成に必要な特定の制御器についての全ての関連データの受け付けが含まれる。「特定の制御器」とは、本明細書中で用いられるとき、特定の制御器または装置を示し、あるいは、種々の装置に使用可能な制御器の特定の型またはモデルを示す。
【００５８】
システムは、シミュレーションモデルを、今度は特定の制御器についてのカーネルとやりとりして再び実行し（ステップ３１４）、この際、カーネルは制御器特有のコードを実行する。このステップには、カーネルを含む特定の制御器のシミュレーションを実行すること、または、カーネルを含む実際の特定の物理制御器とやりとりすることが含まれる。このようにして、シミュレーションモデルは、制御器に特有のコードが正しいことを確実にするよう、特定の制御器（または特定の制御器のシミュレーション）と直接相互に影響するシミュレーションを表示することができる。このステップにはたとえば制御器特有のコードに対する編集または修正を受け付けることが含まれる。
【００５９】
当業者であれば、簡潔且つ明確にするために、本発明を用いた使用に適した全てのデータ処理システムの完全な構造及び動作は、本明細書において図示又は説明していないことが分かる。その代わりに、本発明に固有のデータ処理システム又は本発明の理解のために必要なデータ処理システムのみを図示及び説明している。データ処理システム１００のその他の構造及び動作は、当業者には公知である現行の種々の任意の実現および実施に従うもので良い。
【００６０】
本明細書には完全に機能的なシステムの文脈での記述が含まれているが、当業者であれば、本発明のメカニズムの少なくとも一部は種々の任意の形態の機械使用可能、コンピュータ使用可能又はコンピュータ読み出し可読な媒体に記録された命令の形態で配布できること、また本発明はその配布物を実際に実行するために使用される特定のタイプの命令又は信号が記録されている媒体又は記憶媒体に関係なく同様に適用されることを理解するであろうということを言及することは重要である。それらの命令は、実行されれば、データ処理システムに本明細書において説明した方法を実施させることができる。機械使用可能／機械読み出し可能又はコンピュータ使用可能／コンピュータ読み出し可能な媒体の例には、不揮発のハードコーディングタイプの媒体、例えば読み出し専用メモリ（ＲＯＭ）又は電気的に消去及びプログラミング可能な読み出し専用メモリ（ＥＥＰＲＯＭ）及びユーザ記録可能なタイプの媒体、例えばフロッピーディスク、ハードディスクドライブ及びコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）又はデジタル多目的ディスク（ＤＶＤ）が含まれる。
【００６１】
本発明の実施例を詳細に説明してきたが、当業者であれば、本明細書に記載した実施例の種々の変更、置換、バリエーション及び改良はその最も広い形態においても本発明の精神及び範囲から逸脱することなく可能であることが分かるであろう。
【符号の説明】
【００６２】
１００  データ処理システム、  １０２  プロセッサ、  １０４  キャッシュ／ブリッジ、  １０６  ローカルシステムバス、  １０８  メインメモリ、  １１０  グラフィックアダプタ、  １１１  ディスプレイ、  １１２  ローカルエリアネットワーク／ワイドエリアネットワーク／ワイヤレスアダプタ、  １１４  拡張バスインタフェース、  １１６  入力／出力バス、  １１８  キーボード／マウスアダプタ、  １２０  ディスクコントローラ、  １２２  Ｉ／Ｏアダプタ、  １２４  オーディオアダプタ、  １３０  ネットワーク、  １４０  サーバシステム、  ２０２  グラフィカルユーザインタフェース、  ２０４  グラフィックエディタ、  ２０６  コードエディタ、  ２０８  実行システム、  ２１０  コード発生器、  ３０２  シミュレーションモデルについての入力を受け付け、  ３０４  シミュレーションモデルを実行、  ３０６  １つ以上のシミュレートされた物理制御器を制御する制御コードを同時実行、  ３０８  シミュレーションモデルおよびシミュレートされた物理制御器の挙動が正しいか否か判別、  ３１０  修正された制御コードを生成、  ３１２  制御コードおよび／またはシミュレーションモデルの現在の状態に基づいて制御器特有のコードを自動的に生成、  ３１４  制御器カーネルと相互に影響するシミュレーションモデルを実行、  ＰＬＭ  プロダクトライフサイクルマネジメント
【図１】
2013536480.tif 000003
【図２】
2013536480.tif 000004
【図３】
2013536480.tif 000005
【国際調査報告】
2013536480.tif 000006
2013536480.tif 000007