(57)【要約】      （修正有）【課題】制御装置コードを有する仮想制御装置をリアルタイムテストするためのテスト装置を提供する。【解決手段】テスト装置１は、第１の命令セットＩＳ１によって特徴づけられる第１のタイプの計算コア４を有し、実制御装置２は、第２の命令セットＩＳ２によって特徴づけられる第２のタイプの計算コア６を有する。テスト装置は、仮想制御装置３と（も）動作する。制御装置コードＥＣが、テスト装置の第１のタイプの計算コアの第１の命令セットとは異なる第２の命令セットを有する第２のタイプの計算コア上で動作可能であり、第１のタイプの計算コアは第２のタイプの計算コアのエミュレーションのためにエミュレータ７を実行する。エミュレータは、制御装置コードを実行し、かつ、シミュレーション環境５とデータ及び／又はイベントを交換するためのシミュレーション環境インタフェース８を有する。【選択図】図２
2015060600.tif 000002
【特許請求の範囲】
【請求項１】
制御装置コード（ＥＣ）を有する仮想制御装置（３）の少なくとも一部をリアルタイムテストするためのテスト装置（１）であって、
前記テスト装置（１）は、第１の命令セット（ＩＳ１）を有する少なくとも１つの第１のタイプの計算コア（４）と、前記仮想制御装置（３）の環境をリアルタイムでシミュレートする少なくとも１つのシミュレーション環境（５）とを有しており、
前記シミュレーション環境（５）と前記制御装置コード（ＥＣ）とは前記少なくとも１つの第１のタイプの計算コア（４）によって計算される、
テスト装置（１）において、
前記制御装置コード（ＥＣ）は、前記第１のタイプの計算コア（４）の前記第１の命令セット（ＩＳ１）とは異なる第２の命令セット（ＩＳ２）を有する第２のタイプの計算コア（６）上で動作可能であり、
前記第１のタイプの計算コア（４）は前記第２のタイプの計算コア（６）のエミュレーションのためにエミュレータ（７）を実行し、前記エミュレータ（７）は前記制御装置コード（ＥＣ）を実行し、
前記エミュレータ（７）は、前記シミュレーション環境（５）とデータ及び／又はイベントを交換するためのシミュレーション環境インタフェース（８）を有する
ことを特徴とするテスト装置（１）。
【請求項２】
前記シミュレーション環境（５）は、少なくとも１つのシミュレータ（９）と１つのプロセスモデル（１０）とを含み、前記シミュレータ（９）が前記シミュレーション環境インタフェース（８）を介して前記エミュレータ（７）によって呼び出し可能である、及び／又は、前記エミュレータ（７）が前記シミュレーション環境インタフェース（８）を介して前記シミュレータ（９）によって呼び出し可能である、請求項１記載のテスト装置（１）。
【請求項３】
前記シミュレーション環境インタフェース（８）を介して前記エミュレータ（７）と前記プロセスモデル（１０）とがデータを交換可能である、請求項２記載のテスト装置（１）。
【請求項４】
前記シミュレータ（９）による前記エミュレータ（７）の呼び出し時に、前記シミュレーション環境インタフェース（８）を介して、前記エミュレータ（７）は、前記制御装置コード（ＥＣ）の実行コンテクストを検出し、かつ、前記制御装置コード（ＥＣ）のうち前記呼び出しに関連する部分を実行し、かつ、前記制御装置コード（ＥＣ）の前記実行コンテクストを更新する、請求項２又は３記載のテスト装置（１）。
【請求項５】
前記制御装置コード（ＥＣ）は完全であり、例えばオペレーティングシステム及びドライバ及び制御装置の全ソフトウェアコンポーネントを含み、これにより、前記実行コンテクストは前記仮想制御装置（３）の完全な物理コンテクストを含む、請求項４記載のテスト装置（１）。
【請求項６】
前記制御装置コード（ＥＣ）は不完全であり、例えばオペレーティングシステム及びドライバを含まず、これにより、前記実行コンテクストは前記仮想制御装置（３）のソフトウェアコンポーネントのみを含む、請求項４記載のテスト装置（１）。
【請求項７】
前記エミュレータ（７）による前記制御装置コード（ＥＣ）の計算は、前記エミュレータ（７）と前記プロセスモデル（１０）との間の前記シミュレーション環境インタフェース（８）を介してデータ駆動型で行われる、請求項３又は請求項３を引用する請求項４から６までのいずれか１項記載のテスト装置（１）。
【請求項８】
前記プロセスモデル（１０）の計算と前記エミュレータ（７）による前記制御装置コード（ＥＣ）の実行とは、前記シミュレータ（９）を介して中央制御され、例えば前記プロセスモデル（１０）の計算（９０３）と前記制御装置コード（ＥＣ）の実行（７０２）とが時間的に協調される、請求項２又は請求項２を引用する請求項３から７までのいずれか１項記載のテスト装置（１）。
【請求項９】
前記エミュレータ（７）は、前記第２の命令セット（ＩＳ２）の前記制御装置コード（ＥＣ）のうち呼び出された全ての命令を、ランタイムで解釈し、前記第１の命令セット（ＩＳ１）の命令と同じ機能によって、前記第１のタイプの計算コア（４）上で実行する、請求項１から８までのいずれか１項記載のテスト装置（１）。
【請求項１０】
前記エミュレータ（７）は、実行直前に、前記制御装置コード（ＥＣ）を完全に又は部分的に前記第１の命令セット（ＩＳ１）へ翻訳し、例えば、当該翻訳前に、前記仮想制御装置（３）上で実際に利用されるのと同量のメモリが前記第１の命令セット（ＩＳ１）へ翻訳された前記制御装置コード（ＥＣ’）に割り当てられる、請求項１から９までのいずれか１項記載のテスト装置（１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置コードを有する仮想制御装置の少なくとも一部をリアルタイムテストするためのテスト装置であって、テスト装置は、第１の命令セットを有する少なくとも１つの第１のタイプの計算コアと、仮想制御装置の環境をリアルタイムでシミュレートする少なくとも１つのシミュレーション環境とを有しており、シミュレーション環境と制御装置コードとが少なくとも１つの第１のタイプの計算コアによって計算される、テスト装置に関する。
【背景技術】
【０００２】
上述したテスト装置は、制御装置開発分野の従来技術から公知であり、研究及び開発において使用される。ここで、適用される頻度の高い分野は、自動車分野及び空中乃至宇宙交通技術である。
【０００３】
仮想制御装置をリアルタイムテストするためのテスト装置は、実制御装置のテストに用いられるテスト装置を基礎としている。こうしたテスト装置は、実制御装置群もしくは複数の実制御装置の結合体について、各制御装置の協働の様子を検査する、いわゆるハードウェアインザループテスト（ＨＩＬテスト）を実行するために用いられる。実制御装置とは、技術プロセスの制御に用いられる、リアルタイム動作可能な小コンピュータである。したがって、実制御装置には、リアルタイム動作可能なオペレーティングシステムを実行する計算コアが設けられており、これにより、システム理論としては数１０年前から知られている、開制御及び／又は閉ループ制御を行うサンプリング装置が実現される。実制御装置は、Ｉ／Ｏインタフェース（入出力インタフェース）を介して制御すべきプロセスに作用する、及び／又は、Ｉ／Ｏインタフェースを介して測定技術的にプロセス情報に関与する。ＨＩＬシミュレータを用いた実制御装置のテストは、実制御装置が実際の利用環境において使用され始める前の、実制御装置のテストの最終段階である。実制御装置は、例えば、内燃機関の機関制御装置である。
【０００４】
実制御装置をリアルタイムテストするために、実制御装置はＩ／Ｏインタフェースを介してテスト装置に接続される。１つもしくは複数の第１のタイプの計算コアが設けられたテスト装置上で、実制御装置の環境を同様にリアルタイムでシミュレート可能なシミュレーション環境が駆動される。機関制御装置の上述した例として、例えば、内燃機関のリアルタイムシミュレーションが挙げられる。上述した事柄から、テスト時のテスト装置のリアルタイム動作性が重要であることがわかる。なぜなら、最終的にはテストに基づいて、制御装置がリアルタイム条件のもとで有効に動作しているか否か、すなわち、例えば構成されているアルゴリズムを要求されたサンプリング間隔で計算可能であるか否か等が判別されるからである。
【０００５】
実制御装置のＨＩＬシミュレーションでは、実制御装置の挙動をシミュレートすべき環境において危険なくテストできるという著しい利点が得られる。しかし、この場合、テストを行うために実制御装置そのものを用意しなければならないという欠点がある。これは、連続的に応用される制御装置を開発するにあたって、膨大な手間と費用とに結びつくので、不利である。また、実制御装置のテスト時にはじめて所定の要求が満足されないことがわかった場合、簡単な「事後改善」からはかけ離れた大きな労を要するだけでなく、最悪の場合には制御装置のコンセプトを全く新たに考え直さなければならなくなり、実質的に実制御装置の新たな開発を要する事態となってしまう。結果として、計画された時間目標及び費用目標を遵守できなくなる。
【０００６】
こうした問題に対処するために、検査すべき制御装置の既知のコンポーネントをなるべく早期に機能テストにかけられるよう、いわゆる仮想制御装置のコンセプトが考察されている（Virtual Validation with dSPACE: Early PC-Based Validation of ECU Software, Produktinformation dSPACE, 2013）。この場合、制御装置が物理的に存在している必要はないが、ハードウェアから独立した高水準言語（例えば、Ｃ／Ｃ＋＋，アセンブラ等）で記述された制御装置コードは存在していなければならない。このケースでは、制御装置コードを第１のタイプの計算コアの第１の命令セットへ変換することにより、第１のタイプの計算コアを有するテスト装置で制御装置コードを実行できるようになる。なお、通常、テスト装置のプロセッサコア／計算コアの構成とテストされる制御装置のプロセッサコア／計算コアの構成とは異なる。ＰＣをベースとするテスト装置では、第１のタイプの計算コアとして、例えば相応の命令セット（例えばインテル社のＩＡ３２）を有するインテル社のプロセッサが用いられるのに対して、多くの場合マイクロコントローラをベースとする制御装置では、第１の命令セットを有する第１のタイプの計算コアとは異なる、第２の命令セットを有する第２のタイプの計算コア（例えばＣ１６６マイクロコントローラシリーズのＣ１６６命令セット）が用いられる。
【０００７】
上述した手段には、オリジナルの制御装置コードが本来第２のタイプの計算コアで動作可能であるためにテスト装置ではテストできず、テスト装置の第１のタイプの計算コアの第１の命令セットへ変換しなければならないという欠点がある。
【０００８】
さらなる問題点として、上述した手段を実現するための高水準言語で記述された制御装置コードが、所定の命令セットへの変換のためにそもそも存在していなければならないことも挙げられる。この前提条件は、例えば構成の詳細が機密であるために多くの適用例において満足されない。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Virtual Validation with dSPACE: Early PC-Based Validation of ECU Software, Produktinformation dSPACE, 2013
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、本発明の課題は、制御装置コードを有する仮想制御装置をリアルタイムテストするためのテスト装置において、本発明の基礎となっている従来のテスト装置の上述した欠点を回避できるテスト装置を提供することである。
【課題を解決するための手段】
【００１１】
この課題は、冒頭に言及した形式のテスト装置において、制御装置コードが第１のタイプの計算コアの第１の命令セットとは異なる第２の命令セットを有する第２のタイプの計算コア上で動作可能であり、第１のタイプの計算コアは第２のタイプの計算コアのエミュレーションのためにエミュレータを実行し、エミュレータは、制御装置コードを実行し、かつ、シミュレーション環境とデータ及び／又はイベントを交換するためのシミュレーション環境インタフェースを有することにより、解決される。
【図面の簡単な説明】
【００１２】
【図１】ａは従来技術から公知のテスト装置とテストされる実制御装置とを示す図であり、ｂは従来技術から公知のテスト装置とテストされる実制御装置及び仮想制御装置とを示す図である。
【図２】ａは本発明の第１の実施例のテスト装置とテストされる仮想制御装置とを示す図であり、ｂはａの第１の実施例でテストされる仮想制御装置及び実制御装置の組み合わせ装置を示す図である。
【図３】本発明の第２の実施例のテスト装置を示す図である。
【図４】本発明のデータ駆動型エミュレータを含むテスト装置を示す図である。
【図５】本発明のシミュレータによって制御されるエミュレータを含むテスト装置を示す図である。
【発明を実施するための形態】
【００１３】
本発明のテスト装置によれば、オリジナルの形態の制御装置コードをテスト装置によって実行でき、高水準言語からテスト装置の要素である第１のタイプの計算コアの第１の命令セットへ翻訳する必要がなくなる。第２の命令セットを有する第２のタイプの計算コア上でのみ動作可能である制御装置コードが、第２のタイプの計算コアをエミュレートするエミュレータを用いて実行可能となり、エミュレータ自体は第１のタイプの計算コア上で実行される。つまり、エミュレータが、テストされる制御装置の第２のタイプの計算コアとテスト装置の第１のタイプの計算コアとの間の結合素子となる。
【００１４】
重要なのは、エミュレータのシミュレーション環境インタフェースを介してシミュレーション環境とのデータ及び／又はイベントの交換が可能となることである。データ及び／又はイベントとは、例えば、エミュレートされた制御装置に基づく、シミュレーション環境の入力量としての、制御装置のＩ／Ｏインタフェースのピンの状態や、シミュレーション環境に基づく、エミュレートされた制御装置の入力量としての、インタラプト線路のトリガ信号などである。シミュレーション環境インタフェースは、一方で、制御装置のエミュレーション実行とエミュレータ上での制御装置コードの実行とを同期でき、他方で、シミュレーション環境ひいては仮想制御装置の環境のリアルタイムシミュレーションを実行できるので、特に重要である。つまり、シミュレーション環境インタフェースは、第１のタイプの計算コア上でエミュレータによって制御装置コードをリアルタイムに実行するための前提となっている。
【００１５】
テスト装置は複数の第１のタイプの計算コアを有するので、例えば、或る第１のタイプの計算コアでシミュレーション環境を実行し、別の第１のタイプの計算コアでエミュレータを実行することができる。
【００１６】
本発明の有利な実施形態では、シミュレーション環境は、少なくとも１つのシミュレータと１つのプロセスモデルとを含み、シミュレータがシミュレーション環境インタフェースを介してエミュレータによって呼び出し可能である、及び／又は、（逆に）エミュレータがシミュレーション環境インタフェースを介してシミュレータによって呼び出し可能である。これにより、エミュレータ、乃至、エミュレートされた制御装置コードが、イベント、例えば仮想制御装置の環境のリアルタイムシミュレーションからのイベントに応働できる。こうしたシミュレーション環境と制御装置コードとの結合は、例えばエミュレートされた制御装置の物理コンテクストに基づいて、又は、インタフェースルーチンによって、形成される。ここで、物理コンテクストとは、エミュレートされた制御装置の物理接続部及び物理レジスタ、例えばインタラプト線路等を記述している。インタフェースルーチンが使用される場合、イベントの発生時に制御装置コード内の所定の機能がエミュレータによって実行される。当該機能の決定は、記号テーブルと、制御装置内にどのようなインタフェースルーチンが存在するかを表す記述とによって自動的に行われる。
【００１７】
シミュレーション環境がシミュレータとプロセスモデルとを含む場合、本発明の別の有利な実施形態によれば、シミュレーション環境インタフェースを介してエミュレータとプロセスモデルとの間でデータ及び／又はイベントを交換可能である。言い換えれば、本発明のテスト装置は、有利には、シミュレータによるエミュレータの呼び出し時に、シミュレーション環境インタフェースを介して、エミュレータが、制御装置コードの実行コンテクストを検出し、かつ、制御装置コードのうち呼び出しに関連する部分を実行し、かつ、制御装置コードの実行コンテクストを更新するように構成される。この場合、実行コンテクストは、内部の状態量、及び、エミュレートされた制御装置のインタフェースを記述する状態量（場合によりシミュレーション環境によっても制御される）に加え、エミュレータ上での制御装置コードの実行に関係する境界条件の全てを記述している。
【００１８】
有利には、テスト装置は、制御装置コードが完全であり、特にオペレーティングシステム及びドライバ及び制御装置の全ソフトウェアコンポーネントを含み、これにより上述した実行コンテクストが仮想制御装置の完全な物理コンテクストを含むように構成される。そのための前提として、仮想制御装置のテストでは、実際に、当該仮想制御装置に対応する実制御装置の全ての特徴が検出される。また、この実施形態に代えて、本発明のテスト装置の適用形態として、制御装置コードが不完全であり、特にオペレーティングシステム及びドライバを含まず、このため実行コンテクストが仮想制御装置のソフトウェアコンポーネントのみを含むように構成してもよい。
【００１９】
テスト装置の特に有利な実施形態によれば、エミュレータによる制御装置コードの計算は、エミュレータとシミュレーション環境との間、特にエミュレータとプロセスモデルとの間での、シミュレーション環境インタフェースを介してデータ駆動型で行われる。当該メカニズムにより、エミュレータによる制御装置コードの実行とシミュレーション環境の計算もしくはプロセスモデルの計算とを同期させることができる。
【００２０】
これに代わるテスト装置の構成として、シミュレーション環境が、少なくとも１つのシミュレータと１つのプロセスモデルとを含み、シミュレータがプロセスモデルによって、及び／又は、プロセスモデルがシミュレータによって、呼び出し可能にされる。この場合有利には、プロセスモデルの計算とエミュレータによる制御装置コードの実行とがシミュレータを介して中央制御されることによって所望の同期実行が達成され、特にプロセスモデルの計算と制御装置コードの実行とが時間的に協調されるように、テスト装置が構成される。
【００２１】
プロセスモデルのリアルタイム計算とエミュレータによる制御装置コードの実行との同期を上述した手法のいずれによって行うかにかかわらず、制御装置コードを時間的に最適にエミュレータ上で実行することは重要であるため、サンプリング間隔ごとに行われる計算はいずれの場合にも当該時間内で中断なしに終了することができ、ここで発生するリアルタイム要求に対する制限に衝突しない。ランタイム特性を最適化するために、既知の全ての手段及び技術を使用可能である。さらに、制御装置コードが解釈される場合、メモリリザーブがランタイムで低減されるか又は完全に回避されるように制御される。制御装置コードがバイナリ翻訳される場合の適切な措置は、全てのアトミックなコードブロックをアプリオリに識別し、ランタイム前に翻訳することである。これに代えて、初期化フェーズ後にシミュレーションに必要な全てのコードブロックが翻訳される大きさにブロックキャッシュを選定することもでき、これにより、ブロックキャッシュ内の抑圧が生じない。また、別の措置として、制御装置コードの鎖状参照子を識別解除することが挙げられる。
【００２２】
また、上述した課題は、制御装置コードを有する仮想制御装置の少なくとも一部をリアルタイムテストするための、本発明のテスト装置の動作方法によっても解決される。ここで、テスト装置は、第１の命令セットを有する少なくとも１つの第１のタイプの計算コアと、仮想制御装置の環境をリアルタイムでシミュレートする少なくとも１つのシミュレーション環境とを有している。本発明の方法では、シミュレーション環境と制御装置コードとが少なくとも１つの第１のタイプの計算コアによって計算され、制御装置コードが、第２の命令セットを有する第２のタイプの計算コア上で動作可能であるように構成されている。第２のタイプの計算コアは、通常、テストされるシリアル制御装置の計算コアである。第２のタイプの計算コアの第２の命令セットは、第１のタイプの計算コアの第１の命令セットとは異なる。本発明の方法によれば、第２のタイプの計算コアをエミュレートするエミュレータがテスト装置の第１のタイプの計算コア上で実行され、エミュレータ自体は制御装置コードを実行する。また、本発明の方法によれば、データ及び／又はイベントがエミュレータとシミュレーション環境との間で交換される。ここで、信号流は両方向で形成され、データ及び／又はイベントは、エミュレータからシミュレーション環境へ向かう方向、及び、シミュレーション環境からエミュレータへ向かう方向の双方向で伝達される。本発明の方法により、リアルタイムで実行される仮想制御装置の環境のシミュレーションと制御装置コードのエミュレーションとを同期する汎用的な手段が得られ、制御装置コードをエミュレータによってリアルタイムで実行することができる。
【００２３】
個々には、本発明のテスト装置を構成及び実現する多くの手段が存在する。これらの手段は、一方では請求項１に従属する各請求項に示されており、他方では以下の図示の実施例に即して説明される。
【実施例】
【００２４】
図１のａには、実制御装置２ａ，２ｂをリアルタイムテストするための、従来技術から公知のテスト装置１が概略的に示されている。対して、図１のｂには、テストされる装置として実制御装置２に加えて仮想制御装置３ａ，３ｂを有する、従来技術から公知のテスト装置１が示されている。テスト装置１は、第１の命令セットＩＳ１によって特徴づけられる第１のタイプの計算コア４を有している。図１のａ，ｂに示されている各テスト装置１は、さらに、テストされる各制御装置の環境をリアルタイムでシミュレートするシミュレーション環境５を有する。物理的に存在する実制御装置２は、第２の命令セットＩＳ２によって特徴づけられる第２のタイプの計算コア６を有している。図示の例では、制御装置の第２のタイプの計算コア６の第２の命令セットＩＳ２は、テスト装置１の第１のタイプの計算コア４の第１の命令セットＩＳ１とは異なっている。
【００２５】
図１のａ，ｂでは、テスト装置１はＰＣベースであり、第１の命令セットＩＳ１は図示の実施例ではインテル社の３２ビットｘ８６アーキテクチャ（ＩＡ−３２）との互換性を有する。第２のタイプの計算コア６はタイプＣ１６６の計算コアを含むマイクロコントローラであるので、関連する第２の命令セットＩＳ２はいずれの場合にもテスト装置１の第１のタイプの計算コア４の第１の命令セットＩＳ１とは異なる。実制御装置２は、物理インタフェースを介して、テスト装置１の対応する物理Ｉ／Ｏインタフェースに接続されている。
【００２６】
図１のａの実制御装置２がリアルタイムテストされる場合、制御装置コードＥＣは、本来の形態で、すなわち、第２のタイプの計算コア６の第２の命令セットＩＳ２上で編集された形態で、問題なく実行できる。ただし、実制御装置２の制御装置コードＥＣのテストは、実制御装置２が物理的に実際に存在していることを前提とするので、上述したような欠点を有している。
【００２７】
図１のｂのテスト装置１は、仮想制御装置３ａ，３ｂと（も）動作する。これらの制御装置は物理的には存在せず、制御装置コードＥＣがテスト装置１の第１のタイプの計算コア４の第１の命令セットＩＳ１へ翻訳され、翻訳された制御装置コードＥＣ’がテスト装置１上で動作可能となることにより実現される。このようにすれば、実制御装置が存在しなくとも制御装置コードの早期のテストが可能となるが、テストされるのがオリジナルの制御装置コードＥＣでなく、制御装置コードの翻訳バージョンＥＣ’である点が不都合である。また、高水準言語で記述された制御装置コードＥＣが用意されていなければ、第１のタイプの計算コア４の第１の命令セットＩＳ１への翻訳は不可能である。
【００２８】
図２のａ，ｂには、本発明のテスト装置１が示されている。この場合にも、テスト装置１は第１の命令セットＩＳ１を有する第１のタイプの計算コア４を含んでおり、また、仮想制御装置３の環境をリアルタイムでシミュレートするシミュレーション環境５が用いられる。この場合も、仮想制御装置３の制御装置コードＥＣは最終的には第１のタイプの計算コア４を用いて計算されるが、本発明は従来技術から公知の（例えば図１のａ，ｂに示されているような）テスト装置とは大きく相違している。すなわち、本発明では、仮想制御装置３の制御装置コードＥＣが、テスト装置１の第１の命令セットＩＳ１を有する第１のタイプの計算コア４とは異なる、第２の命令セットＩＳ２を有する第２のタイプの計算コア６上で動作可能である。つまり、本来第２のタイプの計算コア６に対して考察されている制御装置コードＥＣをテスト装置１によって実行できる。なぜなら、テスト装置１の第１のタイプの計算コア４がエミュレータ７を実行し、このエミュレータ７が第２のタイプの計算コア６をエミュレートして、エミュレートされた第２のタイプの計算コア６が制御装置コードを実行するからである。こうした措置により、制御装置コードＥＣは第２の命令セットＩＳ２を有する第２のタイプの計算コア６上で動作可能であるので、第１の命令セットＩＳ１へ翻訳されなくてよく、また、基本的に、テスト装置１とは別の目標ハードウェアのために形成されたオリジナルの制御装置コードＥＣを実行できる。よって、テスト装置１の第１の命令セットＩＳ１への翻訳のために高水準言語で記述された制御装置コードＥＣを用意する必要もない。
【００２９】
重要なのは、エミュレータ７がシミュレーション環境インタフェース８を有しており、このシミュレーション環境インタフェース８を介してエミュレータ７がシミュレーション環境５とデータ及び／又はイベントを交換できるということである。シミュレーション環境インタフェース８は、仮想制御装置３の環境のリアルタイムシミュレーションとエミュレータ７による第２のタイプの計算コア６のエミュレーションとを同期させることができるので、リアルタイムシミュレーションにおいてエミュレータ７を利用するための本質的な機能を有している。
【００３０】
図２のｂには、本発明のテスト装置１が１つもしくは複数の仮想制御装置３をテストすることのみに制限されず、むしろ、テスト装置１と外部の実制御装置２とを一緒に駆動できることが示されている。図２のｂに示されている実施例では、仮想制御装置３及び実制御装置２の同時テスト、又は、制御装置混合連結体の同時テストにより、上述したテスト装置１の利用頻度の高い応用ケースが実現される。
【００３１】
図３には、テスト装置１が示されており、ここではシミュレーション環境５がシミュレータ９とプロセスモデル１０とを含む。シミュレータ９はシミュレーション環境インタフェース８を介してエミュレータ７によって呼び出し可能であり、逆に、エミュレータ７はシミュレーション環境インタフェース８を介してシミュレータ９によって呼び出し可能である。シミュレータ９は、全体として、リアルタイム条件を考慮してプロセスモデル１０を実行するための、リアルタイム動作可能なプラットフォームである。リアルタイム環境に加え、シミュレータ９には、プロセスモデル１０を計算可能な適切な数値プロセスも設けられている。よって、シミュレータ９は、プロセスモデル１０の種々のタスクの実行を時間的に協調させ、シミュレーションにおける非周期的な複数のイベントを考慮するための手段を提供する。
【００３２】
さらに、図３からは、シミュレーション環境インタフェース８を介してエミュレータ７とプロセスモデル１０との間でデータが交換される様子が見て取れる。プロセスモデル１０は、エミュレートされた仮想制御装置３のインタフェースを認識しているので、プロセスモデル１０とエミュレートされた仮想制御装置３との間のデータ整合が達成される。
【００３３】
図４，図５には本発明のテスト装置１が示されており、ここでは、ブロック回路図によって、テスト装置１の構造だけでなく、テスト装置１内の動作フローも示されている。図４，図５では、シミュレーション環境５とエミュレータ７とがそれぞれシミュレーション環境インタフェース８に接続されており、これを介して相互に作用している様子が見て取れる。なお、シミュレーション環境５にはそれぞれプロセスモデル１０を含むシミュレータ９が示されている。
【００３４】
図４には、シミュレーション環境インタフェース８を介してエミュレータ７とプロセスモデル１０との間でデータが交換される様子が示されている。このため、図４の実施例は、エミュレータ７による制御装置コードＥＣの実行が、エミュレータ７とプロセスモデル１０との間のシミュレーション環境インタフェース８を介してデータ駆動型で行われることを特徴としている。したがって、シミュレーション環境インタフェース８を介して、プロセスモデル１０の関連する状態量、例えばインタフェースの所定チャネルでの信号が変更されたか否か、及び、この変更に応じてエミュレータ７において対応する動作がトリガされるか否かが識別される。
【００３５】
シミュレータ９の静止状態９０１から出発して、プロセスモデル１０に対する次の計算ステップがトリガされる。この場合、まず、入力ルーチン９０２において、エミュレータ７により、計算された関連する制御装置データが読み出される。
【００３６】
エミュレータ７での各計算ステップも同様に静止状態７０１から開始され、ステップ７０２でエミュレータ７が実行される。ステータスステップ７０２は種々のタイプのトリガによって達成可能である。ステータスステップ７０２は、例えば、静止状態７０１からのクロックインタラプト又は所定のデータイベントによって達成される。データイベントが起こると、まずステータスステップ８０２が発生し、これに関連するインタラプトが生じた後にステータスステップ７０２が達成される。この例として、Ｉ／Ｏピンに関連するピン変更インタラプトが生じるケースが挙げられる。インタラプトがＩ／Ｏピンに関連しない場合には、ステップ８０２は通過され、ステップ７０２のそれ以降の動作も行われない。ステータスステップ８０２は、エミュレータ７に対するデータが相応に符号化されていること、つまり、エミュレータ７の実行コンテクストにおいて符号化されていることを保証するためのステップである。
【００３７】
エミュレータ７により、第２の命令セットＩＳ２内の制御装置コードＥＣも実行される。シミュレータ９及びエミュレータ７は実質的に並列動作する。エミュレーションは、上述したように、イベントに関連したインタラプトが生じた場合にのみ中断される。それ以外の場合には、相互に交換されるデータがシミュレーション環境インタフェース８を介して供給され、エミュレータ７又はシミュレータ９によって読み出される。
【００３８】
プロセスモデル１０での計算ステップ９０３の終了後、出力関数ステップ９０４でプロセスモデル１０のその時点の状態量がエミュレータ７へ供給される。これは、シミュレーション環境インタフェース８において、ステップ８０２で、エミュレータ７の物理コンテクストを単純に記憶することにより、又は、制御装置コードＥＣ内の相応のインタフェース機能を呼び出すことにより行われる。ここで、「物理コンテクストの記憶」とは、例えば、変更されたＩ／Ｏ信号がエミュレータのコンテクストで適切に記憶されてエミュレータへ供給可能となることであると理解されたい。対して、ステップ７０２における「制御装置コードＥＣ内のインタフェース機能の呼び出し」とは、インタフェース機能の利用が相応に構成されており、制御装置コードＥＣ内のインタラプトがトリガされる場合に行われるものである。インタラプトがない場合には、上述したように、そのことを表す情報のみが供給される。ここで、後者のケースは、信号が物理的に印加されて、適切な記憶によって供給可能となっており、相応の簡単な読み出し過程によって利用可能となることを意味する。ただし、ステップ７０２はトリガされない。同様のことがプロセスモデル１０の計算ステップ９０３にも当てはまる。
【００３９】
図５の実施例では、シミュレーション環境５とエミュレータ７との同期の様子が示されている。当該同期は、プロセスモデル１０の計算とエミュレータ７による制御装置コードＥＣの実行とがシミュレータ９によって中央制御されることによって達成される。これは特に、プロセスモデル１０の計算ステップ９０３と制御装置コードＥＣの実行ステップ７０２との時間的協調に関連する。図５には、シミュレータ９の静止状態９０１からプロセスモデル１０及びエミュレータ７の実行の双方がシミュレーション環境インタフェース８を介してトリガされ、これにより、時間同期が保証されることが示されている。なお、このことはもちろん、プロセスモデル１０がシミュレータ９によって呼び出し可能であることを前提とする。エミュレータ７側では、ステップ８１０でまず、処理を行うべき制御装置の正常動作性が判別される。続いて、ステップ８１１で、その時点の全ての入力量、すなわち、プロセスモデル１０から供給される入力量と外部ソース１１からの他の入力量との双方が読み込まれる。ステップ８１２で、物理データから実行コンテクストが形成され、エミュレータ７に対する簡単な読み出し動作によって情報が利用可能となる。インタフェースルーチンによって処理が行われる場合、ステップ７０２で直接に制御装置コードＥＣの対応する機能がエミュレータ７によって処理される。計算が行われた後、ステップ８１３で、更新データを有する実行コンテクストが再び記憶され、ステップ８１４で、出力関数の実行により、相応の複数の出力、すなわち、プロセスモデル１０に関する各出力と外部データシンク１２に関する各出力とが書き込まれる。このようにして、リアルタイムで、プロセスモデル１０に関する計算ステップとエミュレータ７上の制御装置コードＥＣに関する計算ステップとが相互に同期して計算される。
【００４０】
図４，図５の実施例では、エミュレータ７は第２の命令セットＩＳ２内の制御装置コードＥＣのうち呼び出された命令のそれぞれをランタイムで解釈し、これらの命令を、第１の命令セットＩＳ１の対応する命令と機能的に同様に、テスト装置１の第１のタイプの計算コア４上で実行する。
【符号の説明】
【００４１】
１  テスト装置、  ２ａ，２ｂ  実制御装置、  ３ａ，３ｂ  仮想制御装置、  ４  第１のタイプの計算コア、  ５  シミュレーション環境、  ６  第２のタイプの計算コア、  ＥＣ  制御装置コード、  ＥＣ’  制御装置コードの翻訳バージョン、  ＩＳ１  第１の命令セット、  ＩＳ２  第２の命令セット、  ７  エミュレータ、  ８  シミュレーション環境インタフェース、  ９  シミュレータ、  １０  プロセスモデル、  １１  外部ソース、  １２  外部データシンク
【図１】
2015060600.tif 000003
【図２】
2015060600.tif 000004
【図３】
2015060600.tif 000005
【図４】
2015060600.tif 000006
【図５】
2015060600.tif 000007
【手続補正書】
【提出日】平成26年10月27日(2014.10.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御装置コード（ＥＣ）を有する仮想制御装置（３）の少なくとも一部をリアルタイムテストするためのテスト装置（１）であって、
前記テスト装置（１）は、第１の命令セット（ＩＳ１）を有する少なくとも１つの第１のタイプの計算コア（４）と、前記仮想制御装置（３）の環境をリアルタイムでシミュレートする少なくとも１つのシミュレーション環境（５）とを有しており、
前記シミュレーション環境（５）と前記制御装置コード（ＥＣ）とは前記少なくとも１つの第１のタイプの計算コア（４）によって計算される、
テスト装置（１）において、
前記制御装置コード（ＥＣ）は、前記第１のタイプの計算コア（４）の前記第１の命令セット（ＩＳ１）とは異なる第２の命令セット（ＩＳ２）を有する第２のタイプの計算コア（６）上で動作可能であり、
前記第１のタイプの計算コア（４）は前記第２のタイプの計算コア（６）のエミュレーションのためにエミュレータ（７）を実行し、前記エミュレータ（７）は前記制御装置コード（ＥＣ）を実行し、
前記エミュレータ（７）は、前記シミュレーション環境（５）とデータ及び／又はイベントを交換するためのシミュレーション環境インタフェース（８）を有する
ことを特徴とするテスト装置（１）。
【請求項２】
前記シミュレーション環境（５）は、少なくとも１つのシミュレータ（９）と１つのプロセスモデル（１０）とを含み、前記シミュレータ（９）が前記シミュレーション環境インタフェース（８）を介して前記エミュレータ（７）によって呼び出し可能である、及び／又は、前記エミュレータ（７）が前記シミュレーション環境インタフェース（８）を介して前記シミュレータ（９）によって呼び出し可能である、請求項１記載のテスト装置（１）。
【請求項３】
前記シミュレーション環境インタフェース（８）を介して前記エミュレータ（７）と前記プロセスモデル（１０）とがデータを交換可能である、請求項２記載のテスト装置（１）。
【請求項４】
前記シミュレータ（９）による前記エミュレータ（７）の呼び出し時に、前記シミュレーション環境インタフェース（８）を介して、前記エミュレータ（７）は、前記制御装置コード（ＥＣ）の実行コンテクストを検出し、かつ、前記制御装置コード（ＥＣ）のうち前記呼び出しに関連する部分を実行し、かつ、前記制御装置コード（ＥＣ）の前記実行コンテクストを更新する、請求項２又は３記載のテスト装置（１）。
【請求項５】
前記制御装置コード（ＥＣ）は完全であり、これにより、前記実行コンテクストは前記仮想制御装置（３）の完全な物理コンテクストを含む、請求項４記載のテスト装置（１）。
【請求項６】
前記制御装置コード（ＥＣ）は、オペレーティングシステム及びドライバ及び制御装置の全ソフトウェアコンポーネントを含む、請求項５記載のテスト装置（１）。
【請求項７】
前記制御装置コード（ＥＣ）は不完全であり、これにより、前記実行コンテクストは前記仮想制御装置（３）のソフトウェアコンポーネントのみを含む、請求項４記載のテスト装置（１）。
【請求項８】
前記制御装置コード（ＥＣ）は、オペレーティングシステム及びドライバを含まない、請求項７記載のテスト装置（１）。
【請求項９】
前記エミュレータ（７）による前記制御装置コード（ＥＣ）の計算は、前記エミュレータ（７）と前記プロセスモデル（１０）との間の前記シミュレーション環境インタフェース（８）を介してデータ駆動型で行われる、請求項３又は請求項３を引用する請求項４から８までのいずれか１項記載のテスト装置（１）。
【請求項１０】
前記プロセスモデル（１０）の計算と前記エミュレータ（７）による前記制御装置コード（ＥＣ）の実行とは、前記シミュレータ（９）を介して中央制御される、請求項２又は請求項２を引用する請求項３から９までのいずれか１項記載のテスト装置（１）。
【請求項１１】
前記プロセスモデル（１０）の計算（９０３）と前記制御装置コード（ＥＣ）の実行（７０２）とは、前記シミュレータ（９）の中央制御によって、時間的に協調される、請求項１０記載のテスト装置（１）。
【請求項１２】
前記エミュレータ（７）は、前記第２の命令セット（ＩＳ２）の前記制御装置コード（ＥＣ）のうち呼び出された全ての命令を、ランタイムで解釈し、前記第１の命令セット（ＩＳ１）の命令と同じ機能によって、前記第１のタイプの計算コア（４）上で実行する、請求項１から１１までのいずれか１項記載のテスト装置（１）。
【請求項１３】
前記エミュレータ（７）は、実行直前に、前記制御装置コード（ＥＣ）を完全に又は部分的に前記第１の命令セット（ＩＳ１）へ翻訳する、請求項１から１２までのいずれか１項記載のテスト装置（１）。
【請求項１４】
前記翻訳前に、前記仮想制御装置（３）上で実際に利用されるのと同量のメモリが前記第１の命令セット（ＩＳ１）へ翻訳された前記制御装置コード（ＥＣ’）に割り当てられる、請求項１３記載のテスト装置（１）。