(57)【要約】      （修正有）【課題】制御システムにおける入出力モジュールをシミュレートするシステムおよび方法を提供する。【解決手段】シミュレーションシステムは、シミュレーションインタフェース１０２と、シミュレーションインタフェースに結合された仮想コントローラ１００とを含む。仮想コントローラは、アプリケーション層入力を受け取り出力をシミュレーションインタフェースに供給するアプリケーション層１０４と、システムモデル１１４およびアプリケーション層に結合された入出力（Ｉ／Ｏ）層１０８とを含む。Ｉ／Ｏ層は、シミュレート中のシステムにおけるＩ／Ｏモジュールと同じまたは同様の方法でシステムモデル出力を受け取りアプリケーション層入力を作成する１つまたは複数のＩ／Ｏモジュールモデル１１０を含む。【選択図】図１
2012198888.tif 000002
【特許請求の範囲】
【請求項１】
制御システムシミュレーションにおいて入出力（Ｉ／Ｏ）モジュールをシミュレートするシミュレーションシステムであって、
シミュレーションインタフェース（１０２）と、
シミュレート中のシステムの動作をモデル化しシステムモデル出力を供給するシステムモデル（１１４）と、
前記シミュレーションインタフェース（１０２）に結合された仮想コントローラ（１００）とを備え、前記仮想コントローラ（１００）は、
アプリケーション層（１０４）入力を受け取り出力を前記シミュレーションインタフェース（１０２）に供給するアプリケーション層（１０４）と、
前記システムモデルおよび前記アプリケーション層（１０４）に結合された（Ｉ／Ｏ）層（１０８）とを備え、前記Ｉ／Ｏ層（１０８）は、シミュレート中の前記システムにおけるＩ／Ｏモジュールと同じまたは同様の方法で前記システムモデル出力を受け取り前記アプリケーション層（１０４）入力を作成する１つまたは複数のＩ／Ｏモジュールモデル（１１０）を含むシミュレーションシステム。
【請求項２】
前記仮想コントローラ（１００）は、
前記Ｉ／Ｏ層（１０８）と前記アプリケーション層（１０４）との間に結合され、前記アプリケーション層（１０４）入力を記憶する共有メモリ（１１２）をさらに含む、請求項１記載のシミュレーションシステム。
【請求項３】
前記Ｉ／Ｏ層（１０８）は、１つまたは複数の前記Ｉ／Ｏモジュールモデル（１１０）に供給される単一のパラメータの複数の値を受け取り、かつ前記複数の値から単一のアプリケーション層（１０４）入力を作成する投票コントローラ（２１０）を含む、請求項２記載のシミュレーションシステム。
【請求項４】
前記単一のアプリケーション入力は、前記Ｉ／Ｏ層（１０８）によって前記共有メモリ（１１２）に書き込まれる、請求項３記載のシミュレーションシステム。
【請求項５】
１つまたは複数の前記Ｉ／Ｏモジュールモデル（１１０）についての前記複数の値も前記Ｉ／Ｏ層（１０８）によって前記共有メモリ（１１２）に書き込まれる、請求項４記載のシミュレーションシステム。
【請求項６】
前記Ｉ／Ｏ層（１０８）は、
シミュレート中の前記Ｉ／Ｏモジュールによって実行される診断試験をシミュレートし、前記診断試験の結果を前記共有メモリ（１１２）に書き込む診断エンジン（２１２）をさらに含む、請求項２記載のシミュレーションシステム。
【請求項７】
前記Ｉ／Ｏ層（１０８）は、
１つまたは複数のＩ／Ｏモジュールモデル（１１０）のデジタル入力および出力にタイムスタンプを付けて記録し、前記デジタル入力および出力を前記共有メモリ（１１２）に供給するシーケンスオブイベント（ＳＯＥ）レポータ（２１４）をさらに含む、請求項２記載のシミュレーションシステム。
【請求項８】
システムに含まれる入出力（Ｉ／Ｏ）モジュールをシミュレートする方法であって、
コンピューティングデバイス上で、前記システムにおけるセンサによって行われる測定を表す値を作成するシステムモデルを作成することと、
前記Ｉ／Ｏモジュールによって利用される演算コードの少なくとも一部を含む（Ｉ／Ｏ）層（１０８）を作成することと、
前記Ｉ／Ｏ層（１０８）において前記システムモデルから値を受け取ることと、
前記システムモデルから受け取った値を前記演算コード（２０４）に従ってＩ／Ｏ層出力に変換することと、
前記Ｉ／Ｏ層出力を、前記システムの制御アルゴリズムを含むアプリケーション層（１０４）に供給することとを含む方法。
【請求項９】
前記システムモデルは、同じ演算パラメータの２つまたはシミュレートされた値を前記Ｉ／Ｏ層（１０８）に供給する、請求項８記載の方法。
【請求項１０】
システムに含まれる入出力（Ｉ／Ｏ）モジュールをシミュレートさせるコンピュータ可読プログラムコードを記憶する非一時的記憶媒体を備える製造品であって、前記コンピュータ可読プログラムコードが、
コンピューティングデバイス上で、前記システムにおけるセンサによって行われる測定を表す値を作成するシステムモデルを作成することと、
前記Ｉ／Ｏモジュールによって利用される演算コード（２０４）の少なくとも一部を含む（Ｉ／Ｏ）層（１０８）を作成することと、
前記Ｉ／Ｏ層（１０８）において前記システムモデルから値を受け取ることと、
前記システムモデルから受け取った前記値を前記演算コードに従ってＩ／Ｏ層出力に変換することと、
前記Ｉ／Ｏ層出力を、前記システムの制御アルゴリズムを含むアプリケーション層（１０４）に供給することとを含む方法をコンピュータに実行させるコンピュータ可読命令を含む製造品。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示された主題は、制御システムに関し、詳細には、制御システムにおける入出力（Ｉ／Ｏ）モジュールをシミュレートすることに関する。
【背景技術】
【０００２】
任意の数の様々な種類のシステムの動作を制御するのに、コンピュータ化された制御システムが使用される。たとえば、制御システムを利用して、単一の機械またはいくつかの機械を含む複雑なシステムの動作を制御することができる。
【０００３】
場合によっては、制御システムは完全に自動化され、ユーザとの相互作用をほとんどないしまったく必要としない。場合によっては、制御システムは、ユーザとの様々な程度の相互作用を必要とする。いずれの場合も、制御システムとどのように相互作用すべきかあるいは新しい制御アルゴリズムをどのように試験すればよいかに関して制御システムのユーザを訓練できるようにするある程度のシステムシミュレーションが望ましいと考えられる。
【０００４】
このシミュレーションは通常、制御システムの制御モジュールからパーソナルコンピュータまたはその他のコンピュータに移植されるアプリケーションコードによって駆動されるヒューマンマシンインタフェースを含む。シミュレーションを完了するために、制御中の機械またはその他のデバイスの、第一原理物理学、応用統計学、経験的技術またはデータドリブン技術、あるいはそれらの組み合わせに基づくモデルであってよいソフトウェアベースのモデルが、アプリケーションコードに入力を供給するように作成される。パーソナルコンピュータまたはその他のコンピュータ上での制御モジュールのシミュレーションは、「仮想コントローラ」と呼ばれることもある。仮想コントローラはブロックウェアおよびアプリケーションコードを実行する。
【０００５】
現在、このモデルは、シミュレート中の制御システムに存在するＩ／Ｏパックまたはカード（本明細書では概してＩ／Ｏモジュールと呼ぶ）の出力を表す入力を供給する。場合によっては、このようなＩ／Ｏモジュールの出力は、複数の入力の処理後の表現を表す。たとえば、３重モジュール冗長（ＴＭＲ）システムでは、Ｉ／Ｏモジュールは、３つの異なるセンサから３つのパラメータ（たとえば温度）読み取り値を受け取り、投票手順に基づいて、入力のうちの１つを出力として選択するかあるいは各入力を混ぜ合わせた出力を形成することができる。現在の仮想コントローラは、このようなＩ／Ｏモジュールの動作をモデル化する方法を含んでおらず、そのため、システムシミュレーションの何らかの訓練能力または試験能力は実現されない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００９／０２７１１６８号明細書
【発明の概要】
【０００７】
本発明の一態様によれば、シミュレーションインタフェースと、シミュレート中のシステムの動作をモデル化しシステムモデル出力を供給するシステムモデルと、シミュレーションインタフェースに結合された仮想コントローラとを含むシミュレーションシステムが開示される。この態様の仮想コントローラは、アプリケーション層入力を受け取り出力をシミュレーションインタフェースに供給するアプリケーション層と、システムモデルおよびアプリケーション層に結合された入出力（Ｉ／Ｏ）層とを含む。Ｉ／Ｏ層は、シミュレート中のシステムにおけるＩ／Ｏモジュールと同じまたは同様の方法でシステムモデル出力を受け取りアプリケーション層入力を作成する１つまたは複数のＩ／Ｏモジュールモデルを含む。
【０００８】
本発明の他の態様によれば、システムをシミュレートする方法が開示される。この方法は、コンピューティングデバイス上で、システムにおけるセンサによって行われる測定を表す値を作成するシステムモデルを作成することと、システムにおけるＩ／Ｏモジュールによって利用される演算コードの少なくとも一部を含む入出力（Ｉ／Ｏ）層を作成することと、Ｉ／Ｏ層においてシステムモデルから値を受け取ることと、システムモデルから受け取った値を演算コードに従ってＩ／Ｏ層出力に変換することと、Ｉ／Ｏ層出力を、システムの制御アルゴリズムを含むアプリケーション層に供給することとを含む。
【０００９】
本発明の他の態様によれば、システムをシミュレートさせるコンピュータ可読プログラムコードを記憶する非一時的記憶媒体を備える製造品が開示される。コンピュータ可読プログラムコードは、システムにおけるセンサによって行われる測定を表す値を作成するシステムモデルを記憶することと、システムにおけるＩ／Ｏモジュールによって利用される演算コードの少なくとも一部を含む入出力（Ｉ／Ｏ）層を作成することと、Ｉ／Ｏ層においてシステムモデルから値を受け取ることと、システムモデルから受け取った値を演算コードに従ってＩ／Ｏ層出力に変換することと、Ｉ／Ｏ層出力を、システムの制御アルゴリズムを含むアプリケーション層に供給することとを含む方法をコンピュータに実行させるコンピュータ可読命令を含む。
【００１０】
これらの利点および特徴ならびに他の利点および特徴は、図面に関連して加えられる以下の説明からより明らかになる。
【００１１】
本事項は、本発明とみなされ、特に本明細書の終わりに特許請求の範囲で指摘され明確に請求される。本発明の以下の利点および特徴ならびに他の利点および特徴は、添付の図面に関連して加えられる以下の詳細な説明からより明らかになる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態による、シミュレーションを行うシステムを示す図である。
【図２】一実施形態による、図１に示されているシステムの一部を形成する仮想コントローラの一部を示す図である。
【図３】一実施形態による、制御システムをシミュレートする方法を示すフローチャートである。
【発明を実施するための形態】
【００１３】
詳細な説明では、一例として図面を参照して、利点および特徴と一緒に本発明の各実施形態について説明する。
【００１４】
本発明の各実施形態は、仮想コントローラにおけるＩ／Ｏモジュールのシミュレーションを可能にする技術的効果を有する。このようなシミュレーションは、オペレータの訓練ならびに制御システムの開発、妥当性確認、および検証を向上させることができる。
【００１５】
場合によっては、Ｉ／Ｏモジュールをシミュレートするには、「ハードウェアインザループ（ＨＷＴＬ）」構成が必要であった。ＨＴＷＬ構成では、仮想コントローラの代わりに実際のコントローラが使用された。ＨＴＷＬ構成のシステムをシミュレートするにはコストおよび時間がかかることがある。また、故障モードの観点からの複雑さ、およびＨＷＴＬ構成に基づいてオペレータ訓練シミュレータを開発する経費をエンドユーザによって吸収しなければならない。このような結果は、シミュレーション業界において望ましくない結果である。Ｉ／Ｏモジュールから受け取られた実際のデータをシミュレートすることが比較的一般に行われていることを理解されたい。しかし、Ｉ／Ｏモジュール自体をシミュレートする能力が欠落している。そのため、各Ｉ／Ｏモジュール間の故障モードおよび投票手順に関する情報を含むシミュレーションは事実上行われていない。
【００１６】
次に図１を参照すると、シミュレーションインタフェース１０２に結合された仮想コントローラ１００が示されている。シミュレーションインタフェース１０２は、本明細書ではヒューマンマシンインタフェース（ＨＭＩ）と呼ばれることもあり、通信リンク１０１を介して仮想コントローラ１００と通信する。通信リンク１０１は、イーサネット（商標）接続または任意の他の種類の電子通信媒体であってよい。具体的には、通信リンクは、いわゆるプラントデータハイウェイ（ＰＤＨ）またはユニットデータハイウェイ（ＵＤＨ）の一方または両方をサポートする通信媒体から選択することができる。
【００１７】
シミュレーションインタフェース１０２は、仮想コントローラ１００から受け取った情報をユーザに供給し、かつユーザからの入力を受け取って仮想コントローラ１００に供給することができる。そのため、シミュレーションインタフェース１０２は、ユーザが仮想コントローラ１００によって作成されているシミュレーションと相互作用することができるロケーションを実現することができる。仮想コントローラ１００およびシミュレーションインタフェース１０２は、単一のコンピューティングデバイス上に設けられても、あるいは全体的または部分的に分離され２つ以上のコンピューティングデバイスにわたって分散されてもよい。
【００１８】
仮想コントローラ１００は、任意の数の様々な種類のシステムまたは機械をシミュレートするようにプログラムされてもよい。たとえば、仮想コントローラ１００は、発電に使用されるタービン（ガスまたは蒸気）の動作をシミュレートするのに使用されてもよい。シミュレート中の制御システムによって制御されるシステムまたは機械の特定の種類にかかわらず、仮想コントローラ１００はアプリケーション層１０４を含む。アプリケーション層１０４は、シミュレート中の制御システムにおける制御ソフトウェア／ハードウェアと同様の（または同じ）機能を実現するように動作するソフトウェアを含む。このようなソフトウェアまたはハードウェアを本明細書では「演算アルゴリズム」と呼ぶものとする。
【００１９】
アプリケーション層１０４をソフトウェアで形成する場合、ソフトウェアを単に制御システムからアプリケーション層１０４に移植してもよい。アプリケーション層１０４は、アプリケーション層１０４が予期する形態の入力を受け取り、アプリケーション層１０４にプログラムされた論理（たとえば、演算アルゴリズム）を入力に適用し、シミュレーションインタフェース１０２に供給される出力を作成する。
【００２０】
図１に示されている仮想コントローラ１００はＩ／Ｏ層１０８も含む。Ｉ／Ｏ層１０８は１つまたは複数のＩ／Ｏモジュールモデル１１０ａ、１１０ｂ、．．．１１０ｎを含む。各Ｉ／Ｏモジュールモデル１１０は、シミュレート中のシステムにおけるＩ／Ｏモジュールを表す。１つまたは複数のＩ／Ｏモジュールモデル１１０は、そのＩ／Ｏモジュールモデルが表すＩ／Ｏモジュールの動作をシミュレートするソフトウェアを含む。そのために、Ｉ／Ｏモジュールモデル１１０は、一実施形態では、考えられるＩ／Ｏモジュール故障モードを検査するＩ／Ｏ演算コード、シーケンスオブイベント検出器、および診断検出器のうちの１つまたは複数を含む。
【００２１】
共有メモリ１１２がＩ／Ｏ層１０８とアプリケーション層１０４の両方に結合されており、Ｉ／Ｏ層１０８とアプリケーション層１０４の両方から共有メモリ１１２にアクセス可能である。Ｉ／Ｏ層１０８は、共有メモリ１１２にデータを書き込み共有メモリ１１２からデータを読み取るように構成されてもよい。同様に、アプリケーション層１０４は、共有メモリユニット１１２にデータを書き込み共有メモリユニット１１２からデータを読み取るように構成されてもよい。共有メモリ１１２は、別個のメモリユニットであっても、より大きなメモリユニットの一部であっても、あるいは１つまたはいくつかのコンピュータデバイスにおける様々なメモリロケーションにわたって分散されてもよい。共有メモリ１１２は、どのように構成されるかにかかわらず、Ｉ／Ｏ層１０８とアプリケーション層１０４が情報を交換するためのロケーションを実現する。
【００２２】
一実施形態では、仮想コントローラ１００は、システムモデル１１４から情報を受け取りかつシステムモデル１１４に情報を供給するように結合される。システムモデル１１４は、そのような通信を可能にするアプリケーションプログラムインタフェース（ＡＰＩ）を含んでよい。システムモデル１１４は、ソフトウェアで実現されても、ハードウェアで実現されても、あるいはそれらの組み合わせで実現されてよい。システムモデル１１４は、制御されるシステムの動作をシミュレートするのにアプリケーション層１０４によって使用される入力を供給する。システムモデル１１４は、シミュレーションをＨＭＩ１０２に提示するのにアプリケーション層１０４によって使用される「測定」値を生成する。従来のシステムでは、システムモデル１１４は、アプリケーション層１０４に直接結合され、たとえば、Ｉ／Ｏモジュールから受け取ったデジタル（場合によってはアナログ）値を表す値を直接アプリケーション層１０４に供給していた。
【００２３】
これに対して、図１に示されているシステムモデル１１４は、電圧または電流を表す値をＩ／Ｏ層１０８に供給する。このような値は、対応するＩ／Ｏモジュールモデル１１０に経路設定される。Ｉ／Ｏモジュールモデル１１０は、受け取った値を実際のＩ／Ｏモジュールと同じまたは同様の方法でデジタル表現に変換するように構成されている。そのため、Ｉ／Ｏモジュールモデル１１０用の演算コードを、一実施形態では、実際のＩ／ＯモジュールからＩ／Ｏ層１０８にコピーまたは移植することができる。もちろん、Ｉ／Ｏモジュールモデル１１０は、そのＩ／Ｏモジュールモデル１１０が表すＩ／Ｏモジュールから得られる演算コードまたはパラメータの全体を含まなくてもよい。一実施形態では、Ｉ／Ｏモジュールモデル１１０は、シミュレート中の特定の種類のＩ／Ｏモジュールのモデルを含むデータベースから選択される。システムモデル１１４と仮想コントローラ１００の両方を同じコンピュータデバイス上で動作させてもあるいはそれぞれの異なるコンピューティングデバイス上で動作させてもよいことを理解されたい。
【００２４】
Ｉ／Ｏモジュールモデル１１０の出力は共有メモリユニット１１２に供給される。アプリケーション層１０４は、共有メモリ１１２に書き込まれる値がシステムモデル１１４から直接受け取られた場合と同様に、このような値と相互作用することができる。共有メモリ１１２に供給される出力は、まだアプリケーション層１０４に供給されていない追加的な情報を含んでよい。たとえば、Ｉ／Ｏモジュールモデル１１０は、Ｉ／Ｏモジュールモデル１１０自体に関する診断アラーム情報を共有メモリ１１２に書き込むこともできる。
【００２５】
図２は、システムモデル１１４と共有メモリ１１２との間に結合されたＩ／Ｏ層１０８を示している。図示のＩ／Ｏ層１０８はＩ／Ｏモジュールモデル１１０ａ、１１０ｂ、および１１０ｃを含む。もちろん、Ｉ／Ｏ層１０８は、互いに同じで任意の数のＩ／Ｏモジュールモデル１１０、互いに異なる任意の数のＩ／Ｏモジュールモデル、またはそれらの何らかの組み合わせである任意の数のＩ／Ｏモジュールモデル１１０を含んでよい。説明を簡単にするために、本明細書ではＩ／Ｏモジュールモデル１１０ａのみについて説明する。しかし、他のＩ／Ｏモジュールモデル（たとえば、１１０ｂ、１１０ｃ）も同じまたは同様の方法で動作すると仮定するものとする。いずれにしても、上述のように、Ｉ／Ｏモジュールモデル１１０は、シミュレート中のシステムにおけるＩ／Ｏモジュール用の演算コードを含む。
【００２６】
図２では、Ｉ／Ｏモジュールモデル１１０は、システムモデル１１４から受け取ったセンサ値の表現をＩ／Ｏモジュール出力フォーマットに変換する働きをする。たとえば、システムモデル１１４は、アナログ電圧または電流を表す値をＩ／Ｏモジュールモデル１１０に供給することができる。Ｉ／Ｏモジュールモデル１１０は、受け取った値を、その値にＩ／Ｏ演算コード２０４を適用することにより、アプリケーション層１０４（図１）によって予期されるフォーマットの出力に変換し、その結果を共有メモリ１１２に書き込む。
【００２７】
場合によっては、シミュレート中のシステムまたは機械のパラメータが複数のセンサによって測定される。これらのセンサはそれぞれ、別個のＩ／Ｏモジュールに出力を供給する。たとえば、３つの異なるＩ／Ｏモジュールが、単一の位置で温度を測定する３つの異なる温度センサから３つの温度値を受け取ってもよい。このような構成は、上述のように、３重モジュール冗長構成（ＴＭＲ）と呼ばれる。このような場合、Ｉ／Ｏ層１０８は、複数の値のうちの１つを選択するのに使用される投票規則２１１を含んでよく、これらの値を加重平均または非加重平均するか、あるいはその他の場合には、受け取った値のうちの１つまたは複数を利用して出力値を作成する。従来技術では、これらの投票規則はシミュレートされなかった。その代わり、Ｉ／Ｏモジュールの出力のみがシミュレートされていた。そのため、一実施形態では、Ｉ／Ｏ層１０８は、２つ以上のＩ／Ｏモジュールモデル１１０ａ、１１０ｂ、１１０ｃから２つ以上の入力値を受け取るように構成された投票コントローラ２１０を含む。もちろん、Ｉ／Ｏモジュールモデル１１０の厳密な構成は、シミュレート中のＩ／Ｏモジュールによって決まる。投票コントローラ２１０は、Ｉ／Ｏモジュールモデル１１０ａ、１１０ｂ、１１０ｃから入力値を受け取り、投票規則２１１に定義されたような投票手順を実施するように構成されている。投票コントローラ２１０は、投票された値、および任意に、受け取ったすべての値を共有メモリ１１２に供給することができる。このように、共有メモリ１１２には、Ｉ／Ｏモジュールモデル１１０によってシミュレートされたＩ／Ｏモジュールの動作に関するより多くの情報を供給することができる。すなわち、アプリケーション層１０４に、投票された単一の出力値ではなく、受け取ったすべての値および投票された値を利用できるようにすることが可能である。Ｉ／Ｏモジュールモデル１１０および投票コントローラ２１２が必要に応じて他の方法でアプリケーション層１０４に情報を供給してもよいことを理解されたい。
【００２８】
一実施形態では、１つまたは複数のＩ／Ｏモジュールモデル１１０が診断エンジン２１２に接続されている。診断エンジン２１２は、シミュレート中のＩ／Ｏモジュールが実行する診断試験のいくつかまたはすべてを実行するように構成されている。たとえば、診断エンジン２１２は、Ｉ／Ｏモジュールモデル１１０ａ、１１０ｂ、１１０ｃから供給される値を監視し、これらの値が、たとえば、いずれかのセンサが適切に機能していないことを示しているかどうかを判定することができる。もちろん、診断エンジン２１２は、システムモデル１１４から受け取った情報に基づいて任意の他の診断試験を実行してもよい。診断試験の結果は共有メモリ１１２に供給される。
【００２９】
Ｉ／Ｏモジュールモデル１１０ａ、１１０ｂ、１１０ｃは、特定のＩ／Ｏモジュールモデルが適切に機能しているかどうかを判定する診断検出器２０６を含んでもよい。このような場合、診断エンジン２１２は、Ｉ／Ｏモジュールが故障したことを示す表示をシステムモデル１１４またはＩ／Ｏモジュールモデル１１０ａ、１００ｂ、１１０ｃから受け取ることができる。そのような場合、診断エンジン２１２は、そのような故障を示す出力を共有メモリ１１２に供給することができる。
【００３０】
Ｉ／Ｏモジュールモデル１１０は、演算コード２０４に接続されたシーケンスオブイベント（ＳＯＥ）検出器２０２も含む。このＳＯＥ検出器は、ＳＯＥ検出器２０２およびシステムモデル１１４に結合されるように示されているシーケンスオブイベント（ＳＯＥ）レポータ２１４に結合されている。もちろん、ＳＯＥレポータ２１４は、ＳＯＥ検出器２０２とシステムモデル１１４のいずれにも結合されないかあるいは一方にしか結合されない自立要素であってよい。一般に、ＳＯＥは、シミュレート中のＩ／Ｏモジュールの入力ロケーションおよび出力ロケーションにおけるデジタル状態変化を指す。そのために、一実施形態では、ＳＯＥ検出器２０２およびＳＯＥレポータ２１４は、Ｉ／Ｏモジュールモデル１１０のデジタル入力および出力にタイムスタンプを付けて記録し、それらの値およびそれらに関連するタイムスタンプを共有メモリ１１２にＳＯＥログとして記憶する。この情報は、たとえば、システム障害または診断エンジン２１２によって実行される診断試験において不合格になった場合の原因を判定する際に有用であることがある。
【００３１】
図３は、一実施形態によるシミュレーションを動作させる方法を示すフローチャートである。ブロック３０２で、システムモデルが作成される。システムモデルの作成は、制御システムによって制御されるシステムのシミュレーションを作成することを含んでよい。そのために、システムモデルは、センサまたはシステムの他の要素からの値を表すシミュレートされた一連の値をリアルタイムにあるいは増分時間ごとに供給するように構成されてよい。従来のシミュレーションでは、このような値は通常、コントローラ用のアプリケーションコードを実行するアプリケーション層に直接供給されていた。これに対して、少なくとも、制御されるシステムにおけるＩ／Ｏモジュールに供給されるＩ／Ｏ値が、ブロック３０６で、システムモデルから１つまたは複数のＩ／Ｏモジュールモデルに供給される。これらの値をＩ／Ｏモジュールモデルに供給できるようになる前に、ブロック３０４でＩ／Ｏモジュールモデルが作成されることを理解されたい。一実施形態では、上述のように、Ｉ／Ｏモジュールモデルの作成は、シミュレート中のシステムにおける構成済みのＩ／Ｏモジュールの構成の設定、ベース負荷、およびファームウェアをＩ／Ｏ層１０８（図２）に（厳密にあるいは概略的に）コピーすることを含んでよい。
【００３２】
ブロック３０８で、受け取られた値がＩ／Ｏモジュールモデルによって処理される。Ｉ／Ｏモジュールモデルによって実行される処理については上記に詳しく説明したが、一般に、この処理は、各値の変換、ＳＯＥ報告、および診断試験を含んでよい。
【００３３】
ブロック３１０で、Ｉ／Ｏモジュールモデルの出力が共有メモリに供給され、ブロック３１２で、アプリケーション層が、共有メモリにおけるこのような出力にアクセスすることができる。シミュレーションを中止しない場合（ブロック３１４）、処理はブロック３０６に戻る。もちろん、当業者に認識されるように、この方法は、ＨＭＩから入力を受け取ることを含んでもよく、そのような入力は、システムモデルの動作とアプリケーション層の動作の一方または両方に影響を与えることができる。
【００３４】
本明細書で開示されるように、図１および２に示されているシステムの各実施形態は、本明細書で開示される、方法を実行するかあるいはシステムを作成する機械可読媒体（たとえば、ハードディスク）上に記憶された機械可読命令を含んでよい。非制限的な一実施形態では、機械（コンピュータ）可読媒体は一時的でない媒体である。本明細書で論じられるように、各命令は「ソフトウェア」と呼ばれる。ソフトウェアは、当技術分野で知られているようなソフトウェア開発ツールを使用して作成されてもよい。ソフトウェアは、当技術分野で知られているようなユーザ相互作用機能を実現する様々なツールおよび特徴を含んでよい。
【００３５】
いくつかの実施形態では、ソフトウェアが他のプログラムのオーバレイとして実現される。たとえば、ソフトウェアはアプリケーション（またはオペレーティングシステム）の「アドイン」として実現されてもよい。一実施形態では、アドインは制御システムシミュレーションシステムに供給される。そのような実施形態では、本発明によるＨＭＩは実際のデータではなくシミュレートされたデータを表示する。語「アドイン」が一般に、当技術分野で知られているような補助プログラムコードを指すことに留意されたい。このような実施形態では、ソフトウェアは、そのソフトウェアが協働するアプリケーションまたはオペレーティングシステムの各構造またはオブジェクトと置き換わってよい。
【００３６】
当業者には理解されるように、本発明の各態様は、システム、方法、またはコンピュータプログラムプロダクトとして具体化されてもよい。したがって、本発明の各態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または本明細書ではすべての態様を全般的に「回路」、「モジュール」、または「システム」と呼んでもよいソフトウェア態様とハードウェア態様を組み合わせた実施形態の形をとってもよい。また、本発明の各態様は、媒体上で具体化されるコンピュータ可読プログラムコードを有する１つまたは複数のコンピュータ可読媒体で具体化されるコンピュータプログラムプロダクトの形をとってよい。
【００３７】
コンピュータ可読媒体は、一実施形態では、非一時的コンピュータ可読記憶媒体である。コンピュータ可読記憶媒体は、たとえば電子システム、装置、またはデバイス、磁気システム、装置、またはデバイス、光学システム、装置、またはデバイス、電磁システム、装置、またはデバイス、赤外線システム、装置、またはデバイス、あるいは半導体システム、装置、またはデバイス、あるいはそれらの適切な任意の組み合わせであってよいが、それらに限らない。コンピュータ可読記憶媒体のより具体的な例（非網羅的リスト）には、以下のもの、すなわち、１本または複数のワイヤを有する電気接続、携帯用コンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、携帯用コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、またはそれらの適切な任意の組み合わせが含まれる。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって使用されるかあるいは命令実行システム、装置、またはデバイスに関連して使用されるプログラムを含むかあるいは記憶することのできる任意の有形の媒体であってもよい。
【００３８】
本発明を限られた数の実施形態に関連して詳しく説明したが、本発明がそのような開示された実施形態に限定されないことが容易に理解されるはずである。むしろ、本発明は、前述されていないが本発明の趣旨および範囲に対応する任意の数の変形実施形態、変更実施形態、代替実施形態、または均等構成を組み込むように修正されてよい。また、本発明の様々な実施形態について説明したが、本発明の態様が前述の実施形態の一部しか含まなくてよいことを理解されたい。したがって、本発明は、上記の説明によって限定されるとはみなされず、添付の特許請求の範囲によってのみ制限される。
【符号の説明】
【００３９】
１００  仮想コントローラ
１０１  通信リンク
１０２  シミュレーションインタフェース
１０４  アプリケーション層
１０８  Ｉ／Ｏ層
１１０  Ｉ／Ｏモジュールモデル
１１０ａ  Ｉ／Ｏモジュールモデル
１１０ｂ  Ｉ／Ｏモジュールモデル
１１０ｃ  Ｉ／Ｏモジュールモデル
１１０ｎ  Ｉ／Ｏモジュールモデル
１１２  共有メモリ
１１４  システムモデル
２０２  シーケンスオブイベント（ＳＯＥ）検出器
２０４  Ｉ／Ｏ演算コード
２１０  投票コントローラ
２１１  投票規則
２１２  診断エンジン
２１４  シーケンスオブイベント（ＳＯＥ）レポータ
【図１】
2012198888.tif 000003
【図２】
2012198888.tif 000004
【図３】
2012198888.tif 000005
【外国語明細書】
2012198888000001.pdf