(57)【要約】      （修正有）【課題】プラント、機器、およびプロセスの制御時に有用な制御システムの動作をシミュレートするシミュレーションシステムに関する。【解決手段】コンピュータ可読媒体は、シミュレーションシステム内のプロセッサによって実行可能な命令を含むことができる。命令は、複数の仮想コントローラが直前のシミュレーションステップを完了するのを待ち、複数の仮想コントローラのそれぞれからの直前のシミュレーションステップの結果を共有メモリに書込み、複数の仮想コントローラのそれぞれに対する入力を共有メモリから読出し、複数の仮想コントローラ上でシミュレーションステップを始動し、複数の仮想コントローラにおいてシミュレーションステップを始動すると、シミュレーションの完了を示すように構成されうる。複数の仮想コントローラは、複数のシミュレーションステップを有するコントローラモデルを含み、命令は、プロセッサによって並列に実行される。【選択図】図１
2015057697.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションを実施するシミュレーションシステム内のプロセッサによって実行可能な命令を記憶する非一時的で有形のコンピュータ可読媒体であって、前記命令は、
前記複数の仮想コントローラが直前のシミュレーションステップを完了するのを待ち、
複数の仮想コントローラのそれぞれからの前記直前のシミュレーションステップの結果を共有メモリに書込み、
前記複数の仮想コントローラのそれぞれに対する入力を前記共有メモリから読出し、
前記複数の仮想コントローラのそれぞれの仮想コントローラ上でシミュレーションステップを始動し、
前記複数の仮想コントローラのそれぞれの仮想コントローラにおいて前記シミュレーションステップを始動すると、前記シミュレーションの完了を示す
ように構成され、前記複数の仮想コントローラは、複数のシミュレーションステップを有するコントローラモデルを含み、前記命令は、前記プロセッサによって並列に実行されるように構成されるコンピュータ可読媒体。
【請求項２】
前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを始動するように構成される前記命令は、別個のコンピューティングスレッドにおいて各シミュレーションステップを始動するように構成される命令を含む、請求項１記載のコンピュータ可読媒体。
【請求項３】
前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを始動するように構成される前記命令は、別個の処理コアにおいて各シミュレーションステップを始動するように構成される命令を含む、請求項１記載のコンピュータ可読媒体。
【請求項４】
前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを始動するように構成される前記命令は、前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを順次始動するように構成される命令を含む、請求項１記載のコンピュータ可読媒体。
【請求項５】
前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを始動するように構成される前記命令は、前記複数の仮想コントローラのそれぞれの仮想コントローラ上で前記シミュレーションステップを実質的に同時に始動するように構成される命令を含む、請求項１記載のコンピュータ可読媒体。
【請求項６】
前記複数の仮想コントローラが直前のシミュレーションステップを完了するのを待つように構成される前記命令は、前記複数の仮想コントローラのそれぞれのステータスをチェックするように構成される命令を含み、前記複数の仮想コントローラの前記ステータスはアレイとして記憶される、請求項１記載のコンピュータ可読媒体。
【請求項７】
前記複数の仮想コントローラが直前のシミュレーションステップを完了するのを待つように構成される前記命令は、前記複数の仮想コントローラの１つが、指定期間内に前記直前のシミュレーションステップを完了しない場合、タイムアウトするように構成される命令を含む、請求項１記載のコンピュータ可読媒体。
【請求項８】
シミュレーションシステム内で通信パッケージを動作させる方法であって、
複数の仮想コントローラ上でシミュレーションステップを実行する命令をシミュレーションエグゼクティブから受信することであって、前記複数の仮想コントローラのそれぞれは、複数のシミュレーションステップを含むコントローラモデルを含むこと、
前記複数の仮想コントローラのそれぞれが直前のシミュレーションステップを完了するのを待つこと、
前記直前のシミュレーションステップの結果を共有メモリに書込むよう前記複数の仮想コントローラのそれぞれに指示すること、
前記共有メモリから入力を読出すよう前記複数の仮想コントローラのそれぞれに指示すること、
前記複数の仮想コントローラのそれぞれが前記シミュレーションステップを並列に実行することを可能にする前記シミュレーションステップの実行を開始するよう前記複数の仮想コントローラのそれぞれに指示すること、および、
前記複数の仮想コントローラが前記シミュレーションステップを完了するのを待つことなく前記シミュレーションエグゼクティブに完了ステータスを送信することを含む方法。
【請求項９】
前記シミュレーションステップの実行を開始するよう前記複数の仮想コントローラのそれぞれに指示することは、別個のコンピューティングスレッド上で前記シミュレーションステップの実行を開始するよう前記複数の仮想コントローラのそれぞれに指示することを含む、請求項８記載の方法。
【請求項１０】
前記シミュレーションステップの実行を開始するよう複数の仮想コントローラのそれぞれに指示することは、別個の処理コア上で前記シミュレーションステップの実行を開始するよう前記複数の仮想コントローラのそれぞれに指示することを含む、請求項８記載の方法。
【請求項１１】
前記直前のシミュレーションステップの結果を共有メモリに書込むよう前記複数の仮想コントローラのそれぞれに指示することは、後続の仮想コントローラに指示する前に書込みを完了するよう、順次、前記複数の仮想コントローラのそれぞれに指示し、前記複数の仮想コントローラのそれぞれを待つことを含む、請求項８記載の方法。
【請求項１２】
前記共有メモリから入力を読出すよう複数の仮想コントローラのそれぞれに指示することは、後続の仮想コントローラに指示する前に読出しを完了するよう、順次、前記複数の仮想コントローラのそれぞれに指示し、前記複数の仮想コントローラのそれぞれを待つことを含む、請求項８記載の方法。
【請求項１３】
前記複数の仮想コントローラのそれぞれの実行ステータスを記憶することを含み、前記複数の仮想コントローラが直前のシミュレーションステップを完了するのを待つことは、前記複数の仮想コントローラのそれぞれの前記ステータスをチェックすることを含む、請求項８記載の方法。
【請求項１４】
制御システムの動作をシミュレートするように構成されるシミュレーションシステムであって、
プロセッサを備え、前記プロセッサは、
前記シミュレーションシステムの動作を調整するように構成されるシミュレーションエグゼクティブ、
複数の仮想コントローラであって、前記複数の仮想コントローラのそれぞれは、物理的コントローラの動作をシミュレートする複数のシミュレーションステップを含むコントローラモデルを含み、前記複数の仮想コントローラのそれぞれは、前記複数の仮想コントローラの他の仮想コントローラと並列にシミュレーションステップ実行するように構成される、複数の仮想コントローラ、および、
前記シミュレーションエグゼクティブおよび前記複数の仮想コントローラに通信可能に結合された通信インタフェース
を実行するように構成され、通信インタフェースは、
シミュレーションステップを実行する命令を前記シミュレーションエグゼクティブから受信し、
前記シミュレーションステップの実行を並列に開始するよう前記複数の仮想コントローラのそれぞれに指示し、
前記複数の仮想コントローラのそれぞれの仮想コントローラにおいて前記シミュレーションステップの実行を開始すると、前記シミュレーションエグゼクティブに完了ステータスを送信する
ように構成されるシミュレーションシステム。
【請求項１５】
前記プロセッサは、
複数のシミュレーションステップを含む複数のコンポーネントモデルであって、前記複数のコンポーネントモデルのそれぞれは、前記制御システムにおいてコンポーネントの動作をシミュレートするように構成される、複数のコンポーネントモデル、および、
複数のシミュレーションステップを含む複数のプロセスモデル
を実行するように構成され、前記複数のプロセスモデルのそれぞれは、前記制御システムにおいてプロセスをシミュレートするように構成され、通信インタフェースは、前記シミュレーションステップの実行を並列に開始するよう、前記複数の仮想コントローラ、前記コンポーネントモデル、前記プロセスモデル、またはその任意の組合せのそれぞれに指示するように構成される、請求項１４記載のシミュレーションシステム。
【請求項１６】
プロセッサはマルチスレッド式プロセッサであり、複数の仮想コントローラのそれぞれは、前記マルチスレッド式プロセッサ上の別個のコンピューティングスレッド上で前記シミュレーションステップを実行するように構成される、請求項１４記載のシミュレーションシステム。
【請求項１７】
プロセッサはマルチコアプロセッサであり、前記複数の仮想コントローラのそれぞれは、前記マルチコアプロセッサ上の別個のプロセスコア上で前記シミュレーションステップを実行するように構成される、請求項１４記載のシミュレーションシステム。
【請求項１８】
前記プロセッサに通信可能に結合された共有メモリを備え、前記複数の仮想コントローラは、各シミュレーションステップ後に前記共有メモリに前記コントローラモデルの結果を記憶し、各シミュレーションステップ前に前記共有メモリから前記コントローラモデルについての入力を取出すように構成される、請求項１４記載のシミュレーションシステム。
【請求項１９】
前記複数の仮想コントローラは、前記物理的コントローラから受信されるデータに少なくとも部分的に基づいて前記シミュレーションステップを実行するように構成される、請求項１４記載のシミュレーションシステム。
【請求項２０】
ガスタービンシステム、ガス化システム、蒸気タービンシステム、風力タービンシステム、水力タービンシステム、発電システム、統合ガス化コンバインドサイクルシステム、またはその任意の組合せの動作をシミュレートするように構成される、請求項１４記載のシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、一般に、シミュレーションシステムに関し、より具体的には、プラント、機器、およびプロセスを制御するときに有用な制御システムの動作をシミュレートするために使用されるシミュレーションシステムに関する。
【背景技術】
【０００２】
プロセス、プラント、および機器用の制御システムは、プロセス、プラント、および機器を制御システムがどのようにモニタし制御するかを構成するいろいろなロジックを含みうる。たとえば、制御システムは、プロセス、プラント、および／または機器をモニタし制御するように設計されたコントローラを含みうる。制御システムの動作を改善するために、仮想コントローラ、コンポーネントモデル、プロセスモデル、またはその任意の組合せを含むシミュレーションシステムは、制御システムの動作をシミュレートするために利用されうる。したがって、こうしたシミュレーションシステムのシミュレーションロジックを改善することが有益である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１２／０１６２２３５号明細書
【発明の概要】
【０００４】
最初に特許請求された発明と範囲が等しいいくつかの実施形態が以下で要約される。これらの実施形態は、特許請求される発明の範囲を制限するのではなく、むしろ、これらの実施形態は、本発明の考えられる形態の簡潔な要約を提供することだけを意図される。実際には、本発明は、以下で述べる実施形態と同様であるかまたは異なる場合がある種々の形態を包含しうる。
【０００５】
第１の実施形態では、非一時的で有形のコンピュータ可読媒体は、シミュレーションを実施するシミュレーションシステム内のプロセッサによって実行可能な命令を含みうる。命令は、複数の仮想コントローラが直前のシミュレーションステップを完了するのを待ち、複数の仮想コントローラのそれぞれからの直前のシミュレーションステップの結果を共有メモリに書込み、複数の仮想コントローラのそれぞれに対する入力を共有メモリから読出し、複数の仮想コントローラのそれぞれの仮想コントローラ上でシミュレーションステップを始動し、複数の仮想コントローラのそれぞれの仮想コントローラにおいてシミュレーションステップを始動すると、シミュレーションの完了を示すように構成されうる。複数の仮想コントローラは、複数のシミュレーションステップを有するコントローラモデルを含み、命令は、プロセッサによって並列に実行されるように構成される。
【０００６】
第２の実施形態では、シミュレーションシステム内で通信パッケージを動作させる方法は、複数の仮想コントローラ上でシミュレーションステップを実行する命令をシミュレーションエグゼクティブから受信することを含み、複数の仮想コントローラのそれぞれは、複数のシミュレーションステップを含むコントローラモデルを含む。方法は、複数の仮想コントローラのそれぞれが直前のシミュレーションステップを完了するのを待つこと、直前のシミュレーションステップの結果を共有メモリに書込むよう複数の仮想コントローラのそれぞれに指示すること、共有メモリから入力を読出すよう複数の仮想コントローラのそれぞれに指示すること、複数の仮想コントローラのそれぞれがシミュレーションステップを並列に実行することを可能にするシミュレーションステップの実行を開始するよう複数の仮想コントローラのそれぞれに指示すること、および、複数の仮想コントローラがシミュレーションステップを完了するのを待つことなくシミュレーションエグゼクティブに完了ステータスを送信することをさらに含む。
【０００７】
第３の実施形態では、制御システムの動作をシミュレートするシミュレーションシステムは、プロセッサを含み、プロセッサは、シミュレーションシステムの動作を調整するシミュレーションエグゼクティブ、および、複数の仮想コントローラを実行することができ、複数の仮想コントローラのそれぞれは、物理的コントローラの動作をシミュレートする複数のシミュレーションステップを含むコントローラモデルを含み、複数の仮想コントローラのそれぞれは、複数の仮想コントローラの他の仮想コントローラと並列にシミュレーションステップ実行する。プロセッサはまた、シミュレーションエグゼクティブおよび複数の仮想コントローラに通信可能に結合された通信インタフェースを実行することができ、通信インタフェースは、シミュレーションステップを実行する命令をシミュレーションエグゼクティブから受信し、シミュレーションステップの実行を並列に開始するよう複数の仮想コントローラのそれぞれに指示し、複数の仮想コントローラのそれぞれの仮想コントローラにおいてシミュレーションステップの実行を開始すると、シミュレーションエグゼクティブに完了ステータスを送信する。
【０００８】
本発明のこれらのまた他の特徴、態様、および利点は、以下の詳細な説明が添付図面を参照して読まれるとよりよく理解される。添付図面において、同じ記号は、図面全体を通して同じ部品を示す。
【図面の簡単な説明】
【０００９】
【図１】ある実施形態による制御システムを含む産業用プラントのブロック図である。
【図２】ある実施形態による図１の制御システムをシミュレートするのに適したシミュレーションシステムのブロック図である。
【図３】ある実施形態による図２に示すシミュレーションシステムについての情報の流れ図である。
【図４】ある実施形態による物理的コントローラからの捕捉状態を受信する仮想コントローラのブロック図である。
【図５】ある実施形態による図２に示すシミュレーションシステムについての情報の流れ図である。
【図６】ある実施形態による図２に示すシミュレーションシステムについての設定ディスプレイである。
【図７】ある実施形態による、順次モードが選択されるときの図２に示すシミュレーションシステムの動作を示すディスプレイである。
【図８】ある実施形態による、並列モードが選択されるときの図２に示すシミュレーションシステムの動作を示すディスプレイである。
【発明を実施するための形態】
【００１０】
本発明の１つまたは複数の特定の実施形態が以下で述べられる。これらの実施形態の簡潔な説明を提供しようとして、実際の実施態様の全ての特徴が本明細書で述べられない場合がある。任意のこうした実際の実施態様の開発時に、任意の工学または設計プロジェクトの場合と同様に、多数の実施態様固有の決定が行われて、実施態様ごとに変動する場合があるシステム関連制約およびビジネス関連制約に関する遵守などの開発者の特定の目標を達成しなければならないことが認識されるべきである。さらに、こうした開発努力は、複雑でかつ時間がかかるが、それでも、本開示の利益を受ける当業者にとって、設計、作製、および製造についての日常の仕事であることになることが認識されるべきである。
【００１１】
本発明の種々の実施形態の所定の要素を導入するとき、冠詞「ある（ａ）」、「ある（ａｎ）」、「その（ｔｈｅ）」、および「前記（ｓａｉｄ）」は、その要素の１つまたは複数が存在することを意味することを意図される。用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「有する（ｈａｖｉｎｇ）」は、包含的であることを意図され、また、挙げる要素以外のさらなる要素が存在する場合があることを意味する。
【００１２】
一般に、制御システムは、プロセス（たとえば、産業用プロセス）、プラント、および／または機器をモニタしかつ／または制御するのに適した種々のコントローラ（たとえば、産業用コントローラ）を含む。たとえば、コントローラは運転部や、ガスタービンシステム、蒸気タービンシステム、風力タービンシステム、水力タービンシステム、発電システム、統合ガス化コンバインドサイクルシステム、またはその任意の組合せなどの産業システム内でのプロセスなどの、他のコンポーネントの動作をモニタし、制御することができる。
【００１３】
制御システム、プロセス、プラント、かつ／または機器の動作は、ワークステーションや他のコンピューティングデバイス上で作動するシミュレーションシステムにより、シミュレートされうる。いくつかの実施形態では、シミュレーションは、プロセス、プラント、または機器の一部の解析をステップごとに可能にするように進行する（たとえば、離散的な数の所望のステップまで実行する）ことができる。たとえば、物理的コントローラによって実施される制御アクションまたはアクションのシーケンスは、仮想コントローラにおいて最初にシミュレートしうる。したがって、シミュレーションシステムは、種々のモデルを含むことができ、種々のモデルはそれぞれ、物理的コントローラ、コンポーネント、およびプロセスの動作をシミュレートするのに適する複数のシミュレーションステップを含む。いくつかの実施形態では、シミュレーションシステムは、シミュレーションステップを順次実行しうる。たとえば、シミュレーションシステムは、第１のシミュレーションステップを実行し、第１のシミュレーションステップが完了するのを待ち、第２のシミュレーションステップを実行し、第２のシミュレーションステップが完了するのを待ちうる、などである。しかし、マルチスレッド式プロセッサおよびマルチコアプロセッサなどの処理アーキテクチャにおける進歩をより効率的に利用することによってシミュレーションシステムのシミュレーション効率を改善することが有利であることになる。
【００１４】
したがって、本開示は、一実施形態では、シミュレーションを実施するシミュレーションシステム内のプロセッサによって実行可能な命令を含む非一時的で有形のコンピュータ可読媒体を含む。命令は、複数の仮想コントローラが直前のシミュレーションステップを完了するのを待ち、複数の仮想コントローラのそれぞれからの直前のシミュレーションステップの結果を共有メモリに書込み、複数の仮想コントローラのそれぞれに対する入力を共有メモリから読出し、複数の仮想コントローラのそれぞれの仮想コントローラ上でシミュレーションステップを始動し、複数の仮想コントローラのそれぞれの仮想コントローラにおいてシミュレーションステップを始動すると、シミュレーションの完了を示すように構成されうる。複数の仮想コントローラは、複数のシミュレーションステップを有するコントローラモデルを含み、命令は、プロセッサによって並列に実行されるように構成される。換言すれば、シミュレーションステップを順次実行する代わりに、シミュレーションステップは、並列に実行されて、シミュレーションシステムのシミュレーション効率を改善しうる。いくつかの実施形態では、これは、シミュレーションシステムが、リアルタム動作より実質的に速く動作をシミュレートすることを可能にしうる。いくつかの新規な技法が以下で述べられ、いくつかの新規な技法は、たとえば物理的コントローラに関連する並列分岐をシミュレートするとき、シミュレーション時間および／またはメモリ／処理制約を改善しうる。認識されうるように、これはまた、試験の効率、コンポーネントの妥当性検証、および同様なものを改善しうる。
【００１５】
前置きとして、図１は、産業用制御システム１２に結合された産業用システム１０（たとえば、発電プラント）の一実施形態を示す。産業用システム１０が述べられるが、本明細書で述べる技法は、他のプロセス、プラント、または機器に適合しうる。示すように、産業用システム１０は、プロセス１４、タービン１６、および発電コンポーネント１８を含む。産業用システム１０の他の実施形態は、ガス化装置、ガス処理（たとえば、酸性ガス除去）システム、空気分離ユニット、圧縮機、ギア、ターボ膨張器、ポンプ、モータ、発電機、ファン、ブロア、攪拌機、混合器、遠心機、パルプリファイナ、ボールミル、破砕機／微粉砕機、押出し機、ペレタイザ、冷却塔／熱交換器ファン、および同様なものなどの他のプロセスおよびコンポーネントを含みうる。
【００１６】
さらに、示す実施形態では、プロセス１４、タービン１６、および発電コンポーネント１８は、任意の数のセンサ２０およびアクチュエータ／モータ２２を含みうる。より具体的には、センサ２０は、プロセス状態に関する情報を提供しうる。たとえば、センサは、温度、圧力、速度、流体流量、振動、雑音、排気ガス、電力出力、クリアランス、または任意の他の適したパラメータをモニタしうる。アクチュエータ２２は、入力信号に応答して機械的アクションを実施しうる。たとえば、アクチュエータ２２は、燃料噴射率、希釈液または水噴射率、冷媒流量、電力出力レベル、速度、流量、クリアランスなどを制御しうる。示すように、センサ２０およびアクチュエータ２２は、入力／出力２４を介して制御システム１２と通信状態にある。より具体的には、センサ２０およびアクチュエータ２２は、産業用システム１０のモニタリングおよび制御を容易にするためにコントローラ２６（たとえば、プログラマブルロジックコントローラ）と通信状態にありうる。本明細書で使用されるように、コントローラ２６は、「物理的コントローラ（ｐｈｙｓｉｃａｌ  ｃｏｎｔｒｏｌｌｅｒ）」と呼ばれうる。いくつかの実施形態では、コントローラ２６は、ニューヨーク州スケネクタディ（Ｓｃｈｅｎｅｃｔａｄｙ，  Ｎｅｗ  Ｙｏｒｋ）のＧｅｎｅｒａｌ  Ｅｌｅｃｔｒｉｃ  Ｃｏｍｐａｎｙによって入手可能にされるＭａｒｋ  ＶＩｅ（商標）コントローラまたはＭａｒｋ  ＶＩｅＳ（商標）コントローラでありうる。いくつかの実施形態では、１つのコントローラ２６だけが使用される。別の実施形態では、３つのコントローラ（たとえば、Ｒ、Ｓ、Ｔコアコントローラ）が使用されて、強化された冗長性およびフェールオーバ能力を有する３重モジュール式冗長（ｔｒｉｐｌｅ  ｍｏｄｕｌａｒ  ｒｅｄｕｎｄａｎｔ）（ＴＭＲ）制御システム１２を提供する。ＴＭＲ制御システム１２は、たとえば、３つのコアＲ、Ｓ、およびＴの投票によって決定される出力によってタスクを実施しうる。他の実施形態では、４つ以上のコアが使用されうる。
【００１７】
さらに、制御システム１２は、デスクトップコンピュータ、ラップトップコンピュータ、または他の適したコンピューティングデバイスを含みうる１つまたは複数のワークステーション２８に結合しそれと通信しうる。ワークステーション２８は、オペレータが、制御システム１２のコンポーネント（たとえば、コントローラ２６および入力／出力２４）をモニタすること、ならびに、制御システム１２および産業用システム１０の動作をシミュレートすることなどの種々の機能を実施することを可能にしうる。より具体的には、シミュレーションを容易にするために、１つまたは複数のワークステーションあるいは他のコンピューティングデバイス２８は、シミュレーションシステムに含まれうる。すなわち、シミュレーションシステムは、さらなる計算能力を実現するために複数のコンピューティングデバイス２８を含みうる。シミュレーションシステム３０の一実施形態のブロック図が図２に示される。示すように、シミュレーションシステム３０は、複数のコンピューティングデバイス２８（たとえば、コンピューティングデバイス１、コンピューティングデバイス２、コンピューティングデバイスＮ）を含む。さらに、各コンピューティングデバイス２８はプロセッサ３２およびメモリ３４を含む。いくつかの実施形態では、プロセッサ３２は、マルチスレッド式プロセッサ、マルチコアプロセッサ、複数の離散的プロセッサ、またはその任意の組合せでありうる。したがって、コンピューティングデバイス２８のそれぞれ、より具体的には、プロセッサ３２およびメモリ３４は、オペレータが、制御システム１２のコンポーネント（たとえば、コントローラ２６および入力／出力２４）をモニタすること、ならびに、制御システム１２および産業用システム１０の動作をシミュレートすることなどの機能を実施することを可能にしうる。さらに、コンピューティングデバイス２８のそれぞれは、イーサネット（登録商標）または同様なものなどのネットワーク３５を介して他のコンピューティングデバイス２８と通信可能に結合されうる。認識されうるように、本明細書で述べる技法を利用することによって、シミュレーションシステム３０の他の実施形態が、より少数のコンピューティングデバイス２８を利用し、また、いくつかの実施形態では、１つのコンピューティングデバイス２８だけを含みうる。
【００１８】
制御システム１２および産業用システム１０の動作をシミュレートするために、シミュレーションシステム３０は、仮想コントローラおよび種々のモデルを利用しうる。より具体的には、シミュレーションシステム３０は、１つまたは複数の仮想コントローラを実行することによって制御システム１２の動作を、また、１つまたは複数のコンポーネントモデルおよびプロセスモデルを実行することによって産業用システム１０の動作をシミュレートしうる。シミュレーションシステム３０内の情報の流れの一実施形態が図３に示される。示すように、シミュレーションシステム３０は、シミュレーションエグゼクティブ３８、モニタ４０、仮想コントローラ４２、コンポーネントモデル４４、プロセスモデル４６、および共有メモリ５０を含む。いくつかの実施形態では、シミュレーションエグゼクティブ３８、モニタ４０、仮想コントローラ４２、コンポーネントモデル４４、およびプロセスモデル４６は、プロセッサ３２によって実行され、シミュレーションシステム３０内の種々のコンピューティングデバイス２８内のメモリ３４に記憶されうる。たとえば、シミュレーションエグゼクティブ３８は、第１のコンピューティングデバイスに記憶され、そこで実行され、一方、モニタ４０および仮想コントローラ４２のそれぞれは、第２のコンピューティングデバイスに記憶され、そこで実行されうる。さらに、共有メモリ５０は、種々のコンピューティングデバイス２８の物理的メモリ３４を利用しうる。シミュレーションシステム３０の所望の構成は、各コンピューティングデバイス２８の計算および記憶能力ならびに仮想コントローラ４２およびモデル（たとえば、コンポーネントモデル４４およびプロセスモデル４６）の計算および記憶要件などの種々の因子に基づいて調整されうる。したがって、シミュレーションシステム３０は、種々の物理的コンピューティングデバイス２８を区別することなく全体として以下で述べられる。
【００１９】
示すように、シミュレーションエグゼクティブ３８は、モニタ４０に通信可能に結合されて、シミュレーションエグゼクティブ３８およびモニタ４０が通信することを可能にする。たとえば、シミュレーションエグゼクティブ３８は、命令をモニタ４０に通信し、より一般的には、シミュレーションの管理および制御を実現しうる。さらに、モニタ４０は、仮想コントローラ４２、コンポーネントモデル４４、およびプロセスモデル４６に通信可能に結合して、モニタ４０が、仮想コントローラ４２、コンポーネントモデル４４、およびプロセスモデル４６の動作を制御することを可能にする。さらに、仮想コントローラ４２、コンポーネントモデル４４、およびプロセスモデル４６は、共有メモリ５０に結合して、仮想コントローラ４２、コンポーネントモデル４４、およびプロセスモデル４６が、共有メモリ５０に書込みまた共有メモリ５０から読出すことを可能にしうる。
【００２０】
より具体的には、シミュレーションエグゼクティブ３８は、シミュレーションの実行を調整することに責を負いうる。換言すれば、シミュレーションエグゼクティブ３８は、シミュレーションステップがそれぞれ異なる実行期間を有しうるため、シミュレーションステップの実行と実行との間の時間コヒーレンシを維持しうる。たとえば、コンポーネントモデル４４は、１０ｍｓの実行ステップまたは期間を有し、一方、仮想コントローラは、４０、８０、１２０、または１６０ｍｓの実行ステップまたは期間を有しうる。したがって、シミュレーションエグゼクティブ３８は、特定のアクションを実施するよう、特定の仮想コントローラ４２およびモデル（たとえば、コンポーネントモデル４４およびプロセスモデル４６）に指示しうる。たとえば、シミュレーションエグゼクティブ３８は、仮想コントローラ４２および制御プロセスステップを実行することなどの制御アクションを識別する命令を送信しうる。シミュレーションエグゼクティブ３８と仮想コントローラ４２または種々のモデルとの間での命令の通信を容易にするために、モニタ４０は、仲介物として利用されうる。換言すれば、モニタ４０は、通信インタフェースまたはシステムでありうる。より具体的には、モニタ４０は、どの仮想コントローラ４２またはモデルが、特定の制御アクションを実施するかを識別する命令をシミュレーションエグゼクティブ３８から受信しうる。この命令に基づいて、モニタ４０は、指定された制御アクションを実施するよう識別された仮想コントローラ４２に指示しうる。したがって、いくつかの実施形態では、モニタ４０は、同じコンピューティングデバイス２８上に、デバイス２８が実行するかまたは指示する仮想コントローラ４２として含まれうる。さらに、複数のモニタ４０が利用されうる。たとえば、いくつかの実施形態では、１つのモニタ４０は、仮想コントローラ４２またはモデル４４、４６を実行する各コンピューティングデバイス２８上に含まれうる。さらに、シミュレーションエグゼクティブ３８は、共有メモリ５０に書込むこと、および、共有メモリ５０から読出すことなどの他のアクションを実現しうる。いくつかの実施形態では、シミュレーションエグゼクティブ３８は、ニューヨーク州スケネクタディのＧｅｎｅｒａｌ  Ｅｌｅｃｔｒｉｃ  Ｃｏｍｐａｎｙによって入手可能にされる加速式リアルタイムエンジンモデルインタラクティブシミュレーション（Ａｃｃｅｌｅｒａｔｅｄ  Ｒｅａｌ  Ｔｉｍｅ  Ｅｎｇｉｎｅ  Ｍｏｄｅｌ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｓｉｍｕｌａｔｉｏｎ）（ＡＲＴＥＭＩＳ）でありうる。
【００２１】
上述したように、シミュレーションシステム３０は、制御システム１２または制御システム１２のコンポーネントのシミュレーションを可能にするために仮想コントローラ４２、コンポーネントモデル４４、プロセスモデル４６、およびその任意の組合せを含みうる。より具体的には、仮想コントローラ４２は物理的コントローラ２６の動作をシミュレートしうる。したがって、各仮想コントローラ４２は、複数のシミュレーションステップまたはコンピュータ実行可能命令で作られたコントローラモデルを含みうる。いくつかの実施形態では、仮想コントローラ４２は、かなりの忠実度で、Ｍａｒｋ  ＶＩｅ（商標）コントローラおよび／またはＭａｒｋ  ＶＩｅＳ（商標）コントローラをシミュレートしうる。
【００２２】
いくつかの実施形態では、仮想コントローラ４２で実施されるシミュレーションは、プロセス変数、状態変数、診断情報、アラーム情報、イベント情報、制御コマンド、および同様なものを含みうる、物理的コントローラ２６の１つまたは複数の捕捉状態に少なくとも部分的に基づきうる。物理的コントローラ２６から捕捉状態を受信する仮想コントローラ４２の一実施形態は、図４に示される。示すように、物理的コントローラ２６の捕捉状態５２は、物理的コントローラ２６のメモリ５４に記憶される。捕捉状態５２は、その後、仮想コントローラ４２に通信されうる。たとえば、捕捉状態５２は、デバッグ用設定点またはその組合せを使用することによって、所望の期間（たとえば、１、１０、１００、１０００、またはそれより長いミリ秒）において、コントローラ２６の１つまたは複数の実行ステップ後に捕捉されうる。捕捉状態５２を受信した後、捕捉状態は、仮想コントローラ４２において回復されうる。たとえば、仮想コントローラ４２は、捕捉状態５２に一致する対応するモデル状態を選択しうる。仮想コントローラ４２は、その後、対応するモデル状態に少なくとも部分的に基づいてシミュレーションステップを実行しうる。
【００２３】
同様に、各コンポーネントモデル４４は、コンポーネント（たとえば、タービン１６または発電コンポーネント１８）の動作をモデル化し、各プロセスモデル４６は、産業用システム１０内のプロセス１４の動作をモデル化し、各モデルは、複数のシミュレーションステップまたはコンピュータ実行可能命令で構成される。これらのモデルは、物理学に基づく技法などの第一原理（たとえば、低サイクル疲労（ｌｏｗ  ｃｙｃｌｅ  ｆａｔｉｇｕｅ）（ＬＣＦ）寿命予測モデル、計算流体力学（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｆｌｕｉｄ  ｄｙｎａｍｉｃｓ）（ＣＦＤ）モデル、有限要素解析（ｆｉｎｉｔｅ  ｅｌｅｍｅｎｔ  ａｎａｌｙｓｉｓ）（ＦＥＡ）モデル、ソリッドモデル（たとえば、パラメトリックおよびノンパラメトリックモデリング）、および／または、３次元〜２次元のＦＥＡマッピングモデル）に基づきうる。したがって、いくつかの実施形態では、コンポーネントモデル４４は、カルフォルニア州サンタアナ（Ｓａｎｔａ  Ａｎａ，  Ｃａｌｉｆｏｒｎｉａ）のＭＳＣ  Ｓｏｆｔｗａｒｅ  Ｃｏｒｐｏｒａｔｉｏｎによって入手可能にされるＥａｓｙ５モデルでありうる。さらに、いくつかの実施形態では、プロセスモデル４６は、英国、ロンドン（Ｌｏｎｄｏｎ，  Ｕｎｉｔｅｄ  Ｋｉｎｇｄｏｍ）のＩｎｖｅｎｓｙｓ  ＰＬＣによって入手可能にされるＤｙｎＳｉｍモデルでありうる。
【００２４】
さらに、共有メモリ５０が利用されて、仮想コントローラ４２のそれぞれおよび／またはモデルのそれぞれの間のデータの通信を容易にする。より具体的には、各シミュレーションステップ用の入力は、共有メモリ５０から読出され、各シミュレーションステップの出力（たとえば、結果）は、共有メモリ５０に記憶されうる。換言すれば、共有メモリ５０は、制御システム１２および／または産業用システム１０のシミュレートされたステータス（たとえば、動作パラメータ）を記憶し、各シミュレーション反復の実行後にステータスを更新し、シミュレーションシステム３０のコンポーネントの任意のコンポーネントによってアクセス可能であり（たとえば、読出され／書込まれ）うる。たとえば、シミュレーションの１反復が実施され、その反復からの結果が、ステータスを更新するために共有メモリ５０に記憶され、後続の反復が、更新されたステータスによって実施されうる。本明細書で使用されるように、シミュレーションの１反復は、制御システム１２および／または産業用システム１０の同じステータスに基づいて実行されるシミュレーションステップのセットを記述することを意図される。いくつかの実施形態では、共有メモリ５０は、つかの実施形態では、ニューヨーク州スケネクタディのＧｅｎｅｒａｌ  Ｅｌｅｃｔｒｉｃ  Ｃｏｍｐａｎｙによって入手可能にされるＲｅｆｌｅｃｔｉｖｅ  Ｍｅｍｏｒｙシステムでありうる。
【００２５】
上述の通り、シミュレーションシステム３０は、コントロールシステム１２および／または産業システム１０のシミュレーションを可能にする。シミュレーション３０の動作の一実地形態が図５に示される。議論を簡潔にするため、シミュレーションシステム３０はコントロールシステム１０のシミュレーションと関連して示される。しかしながら、以下に示される技法は、産業システム１０のシミュレーション、もしくは複数のシミュレーションステップで作られたシミュレーションモデルを利用する、任意のプロセス、機器、もしくはプラントのシミュレーションに適用されることが理解される。
【００２６】
図５は、シミュレーションシステム３０のシミュレーションエグゼクティブ３８と、モニタ４０と、仮想コントローラ４２との間の情報の流れのある実施形態を示す情報の流れ図である。示すように、シミュレーション反復の実行は、モニタ４０がシミュレーションエグゼクティブ３８から書込み出力命令を受信すると開始する（プロセス矢印５６）。モニタ４０は、その後、仮想コントローラ４２のそれぞれが直前のシミュレーションステップの実行を完了することを待ちうる（プロセス矢印５８）。仮想コントローラ４２が実行を完了すると、モニタ４０は、直前のシミュレーションステップの結果（たとえば、出力）を共有メモリ５０に書込むよう仮想コントローラ４２のそれぞれに指示する（プロセス矢印６０）。結果が記憶されると、モニタ４０は、終了した書込み出力ステータスをシミュレーションエグゼクティブ３８に返信する（プロセス矢印６２）。モニタ４０は、その後、ミュレーションエグゼクティブ３８から読出し入力命令を受信し（プロセス矢印６４）共有メモリ５０から後続のシミュレーションステップのための入力を読出すよう仮想コントローラ４２のそれぞれに指示する（プロセス矢印６６）。入力が読出された後、モニタ４０は、終了した読出し入力ステータスをシミュレーションエグゼクティブ３８に返信する（プロセス矢印６８）。モニタ４０は、その後、ミュレーションエグゼクティブ３８からｄｏステップ命令を受信し（プロセス矢印７０）、シミュレーションステップの実行を並列に開始するよう仮想コントローラ４２のそれぞれに指示する（プロセス矢印７２）。シミュレーションステップが仮想コントローラ４２において始動されると、モニタ４０は、終了した開始ステップまたは完了ステータスをシミュレーションエグゼクティブ３８に返信する（プロセス矢印７４）。
【００２７】
より具体的には、モニタ４０は、仮想コントローラ４２のそれぞれが、仮想コントローラ４２の実行ステータスをチェックすることによって直前のシミュレーションステップの実行を完了するのを待ちうる（プロセス矢印５８）。本明細書で使用されるように、仮想コントローラ４２の実行ステータスは、仮想コントローラ４２がシミュレーションステップを完了したかまたは完了していないかを示すことを意図される。さらに、実行ステータスは完了したパーセントを示しうる。いくつかの実施形態では、仮想コントローラ４２のそれぞれの実行ステータスは、アレイの一部として記憶されるイベントハンドルとして維持されうる。仮想コントローラ４２がシミュレーションステップの実行を完了すると、コールバックルーチンは、仮想コントローラ４２がシミュレーションステップを完了したことを示すようイベントハンドルをセットすることになる（プロセス矢印７３および７５）。いくつかの実施形態では、仮想コントローラ４２の全てが各反復中にシミュレーションステップを実行するわけではない。したがって、モニタ４０は、シミュレーションの次の反復でシミュレーションステップを実行することになる仮想コントローラ４２を待ちうる。さらに、モニタ４０が、シミュレーションステップを実行するよう仮想コントローラ４２に指示する前に、イベントハンドルは、仮想コントローラ４２が後続のシミュレーションステップを完了していないことを示すためにクリアされうる。
【００２８】
さらに、モニタ４０は、仮想コントローラ４２のそれぞれが完了するために指定期間を待ちうる。１つまたは複数の仮想コントローラ４２が指定期間内に完了しなかった場合、モニタ４０は、タイムアウトし、シミュレーション動作を停止しうる。仮想コントローラ４２の１つまたは複数がシミュレーションステップを完了しなかった場合、後続のシミュレーションステップが、制御システム１２の未完了ステータスに基づいて実行されうるため、モニタ４０はタイムアウトしうる。上述したように、一部の仮想コントローラ４２はいろいろな実行期間を有する。したがって、いくつかの実施形態では、指定される期間は、仮想コントローラ４２の最長実行期間に等しい場合がある。
【００２９】
モニタ４０は、シミュレーションステップを、並列のスレッド、処理コア、プロセッサ、またはその組合せにおいて実行するよう仮想コントローラ４２のそれぞれに指示することによって、シミュレーションステップの実行を並列に開始（たとえば、始動）するよう仮想コントローラ４２のそれぞれに指示しうる（プロセス矢印７２）。たとえば、モニタ４０は、．ＮＥＴデリゲードを利用し、それにより、．ＮＥＴスレッドプールからのスレッド上で各シミュレーションステップを実行しうる。いくつかの実施形態では、各シミュレーションステップの実行は、別個の処理スレッドまたはコア上で実施される。さらにまたは代替的に、各シミュレーションステップの実行は、少数のスレッドまたはコアの間で割当てられうる。換言すれば、２つ以上のシミュレーションステップの実行は、各スレッドまたはコアに割当てられうる。スレッドおよび／またはコアに対するシミュレーションステップの的確な割当ては、プロセッサ３２の処理能力およびシミュレーションステップの処理要件に基づいてカスタム化されうる。
【００３０】
さらに、示す実施形態では、モニタ４０は、動作を開始するよう仮想コントローラ４２に順次指示する（プロセス矢印７６）。たとえば、モニタ４０は、実行を開始するよう第１の仮想コントローラに指示しうる、その後、実行を開始するよう第２の仮想コントローラに指示しうる、などである。さらにまたは代替的に、モニタ４０は実質的に同時に実行を開始するよう仮想コントローラ４２に指示しうる。たとえば、モニタ４０は、実行される仮想コントローラ４２に対する命令をブロードキャストしうる。いずれの実施形態でも、仮想コントローラ４２のそれぞれは、上述したように複数の並列スレッド、コア、プロセッサ、またはその任意の組合せ上で実行が実施されるため、シミュレーションステップを並列に実行しうる。
【００３１】
さらに、示す実施形態では、モニタ４０は、共有メモリ５０に順次書込むよう仮想コントローラ４２に指示する（プロセス矢印７８）。たとえば、モニタ４０は、共有メモリ５０に書込むよう第１の仮想コントローラに指示し、第１の仮想コントローラから書込み完了ステータスを受信し（プロセス矢印８０）、その後、共有メモリ５０に書込むよう第２の仮想コントローラに指示する、などである。同様に、モニタ４０は、共有メモリ５０から順次読出すよう仮想コントローラに指示する（プロセス矢印８２）。たとえば、モニタ４０は、共有メモリ５０から読出すよう第１の仮想コントローラに指示し、第１の仮想コントローラから読出し完了ステータスを受信し（プロセス矢印８４）、その後、共有メモリ５０から読出すよう第２の仮想コントローラに指示する、などである。さらにまたは代替的に、モニタ４０は、たとえば、命令をブロードキャストすることによって、共有メモリ５０から読出すかまたは共有メモリ５０に書込むよう仮想コントローラ４２に実質的に同時に指示しうる。
【００３２】
最後に、シミュレーションステップが仮想コントローラ４２において始動されると、モニタ４０は、完了ステータスをシミュレーションゼクティブ３８に返信する（プロセス矢印７４）。換言すれば、モニタ４０は、仮想コントローラ４２がシミュレーションステップの実行を完了するのを待つことなく完了ステータスを返信する。上述したように、シミュレーションゼクティブ３８が、モニタ４０を介して書込み出力などの後続の制御アクションを実施するよう仮想コントローラ４２に指示するときに完了がチェックされる。
【００３３】
他の実施形態では、シミュレーションシステム３０の動作は、シミュレーションシステム３０の効率をさらに改善するために調整されうる。たとえば、シミュレーションゼクティブ３８とモニタ４０との間の通信は、処理パワーが増加したモニタ４０を利用することによって低減されうる。より具体的には、シミュレーションゼクティブ３８とモニタ４０との間の通信は、ｄｏステップ命令を受信し（プロセス矢印７０）、シミュレーションステップが仮想コントローラ４２で始動されると完了ステータスを返信する（プロセス矢印７２）モニタ４０に対して低減されうる。モニタ４０は、その後、ｄｏステップ命令を受信することに応答して仮想コントローラ４２に指示しうる（たとえば、出力を書込む６０、入力を読み出す６６、およびシミュレーションステップを実行する７２）。
【００３４】
上述した技法をベンチマークテストにかけるとき、技法は、インディアナ州ノックス郡（Ｋｎｏｘ  Ｃｏｕｎｔｒｙ，  Ｉｎｄｉａｎａ）にあるデュークエドワード統合ガス化コンバインドサイクル（ｉｎｔｅｇｒａｔｅｄ  ｇａｓｉｆｉｃａｔｉｏｎ  ｃｏｍｂｉｎｅｄ  ｃｙｃｌｅ）（ＩＧＣＣ）プラントのシミュレーションにおいて実装された。シミュレーションシステム３０は、テキサス州ラウンドロック（Ｒｏｕｎｄ  Ｒｏｃｋ，  Ｔｅｘａｓ）のＤｅｌｌ  Ｉｎｃ．から入手可能にされる、３つのＤｅｌｌ  Ｔ５５００デュアルクアドコンピュータ（たとえば、３つのコンピューティングデバイス２８）を含んだ。上述したように、仮想コントローラ４２は、順次または並列に実行されうる。したがって、図６に示すようなシミュレーションシステム３０上のグラフィカクインタフェースは、オペレータが、シミュレーションを通してサイクリングに適する（たとえば、クロックサイクル実行する）順次動作か並列動作を選択することを可能しうる。より具体的には、図６は、オペレータが、タイマモード８８、シミュレーション速度９０、および仮想コントローラ実行モード９２を選択することを可能にするディスプレイ（たとえば、設定ウィンドウ８６）のある実施形態を示す。示すように、仮想コントローラ実行モード９２は、オペレータが、並列モード９４、非同期モード９６、およびシリアル（すなわち、順次）モード９８を選択することを可能にするドロップダウンメニューを含む。そのため、オペレータは、仮想コントローラ実行モード９２において異なるシミュレーションモードを選択することによって３つのシミュレーションモードのそれぞれの間で容易に切換えうる。
【００３５】
順次モード９８が仮想コントローラ４２の実行について選択されるときのデュークエドワードＩＧＣＣプラントをベンチマークテストすることによる結果１００は図７に示すシミュレーションエグゼキュティブ３８のスクリーンキャプチャに示される。示すように、シミュレーション結果１００は、シミュレーションシステム１０２のグラフィカル表現１０２、実行されたシミュレーションステップを記述するシミュレーション実行リスト１０４、およびシミュレーションシステム３０の設定を記述する設定ウィンドウ１０６を含む。動作時、シミュレーションシステム３０は、プラントのリアルタイム動作の７５．１２％までプラントの動作をシミュレートした（矢印１０２）。さらに、シミュレーションシステム３０内のプロセッサ３２は、総合処理能力の約２０％までロードされた。
【００３６】
並列モード９２が仮想コントローラ４２の実行について選択されるときのデュークエドワードＩＧＣＣプラントをベンチマークテストすることによる結果１１０は図８に示すシミュレーションエグゼキュティブのスクリーンキャプチャに示される。動作時、シミュレーションシステム３０は、プラントのリアルタイム動作の３１７．５６％までプラントの動作をシミュレートした（矢印１１２）。さらに、シミュレーションシステム３０内のプロセッサ３２は、総合処理能力の約８０％までロードされた。したがって、シミュレーション効率は、プロセッサ３２の処理アーキテクチャをよりよく利用することによって大幅に改善されうる。
【００３７】
本開示の技術的効果は、シミュレーションシステム３０のシミュレーション効率を改善することを含む。より具体的には、シミュレーション効率は、シミュレーションステップを並列に実行するシミュレーションシステムの処理能力をよりよく利用することによって改善されうる。いくつかの実施形態では、これは、複数のスレッド、処理コア、またはプロセッサ上でシミュレーションステップを並列に実行することを含みうる。したがって、シミュレーションシステム３０のシミュレーション速度もまた改善され、試験または妥当性検証などの動作がより効率的に完了されることを可能にする。
【００３８】
この書面による説明は、最良モードを含む本発明を開示するために、また同様に、任意のデバイスまたはシステムを作り使用すること、および、組込まれる任意の方法を実施することを含む、本発明を当業者が実施することを可能にするために例を使用する。本発明の特許可能な範囲は、特許請求の範囲によって規定され、当業者が思い付く他の例を含みうる。こうした他の例は、特許請求の範囲の逐語的言語と異ならない構造的要素を有する場合、または、特許請求の範囲の逐語的言語と非実質的相違を有する等価な構造的要素を含む場合、特許請求の範囲内にあることを意図される。
【符号の説明】
【００３９】
１０  産業用システム
１２  産業用制御システム
１４  プロセス
１６  タービン
１８  発電コンポーネント
２０  センサ
２２  アクチュエータ／モータ
２４  入力／出力
２６  コントローラ
２８  コンピューティングデバイス（ワークステーション）
３０  シミュレーションシステム
３２  プロセッサ
３４  メモリ
３５  ネットワーク
３８  シミュレーションエグゼクティブ
４０  モニタ
４２  仮想コントローラ
４４  コンポーネントモデル
４６  プロセスモデル
５０  共有メモリ
５２  状態
【図１】
2015057697.tif 000003
【図２】
2015057697.tif 000004
【図３】
2015057697.tif 000005
【図４】
2015057697.tif 000006
【図５】
2015057697.tif 000007
【図６】
2015057697.tif 000008
【図７】
2015057697.tif 000009
【図８】
2015057697.tif 000010
【外国語明細書】
2015057697000001.pdf