製品名で検索


  • シミュレーションモデルと同期して実行される100%再現可能なリアルタイムテスト
  • リアルタイムテストはPython 2.5で実装(ライブラリによりユーザ拡張可能)
  • シミュレーションステップごとにモデル変数を観察および変更可能
  • 複数の独立したテストスクリプトを同時実行可能
  • リアルタイムテスティングのためのモデル変更が不要
  • DS1005、DS1006(シングルプロセッサシステムおよびマルチプロセッサシステムに対応)、およびMicroAutoBoxで利用可能

機能と使用事例

  • モデルおよびテスト実行中における動的なテストのロード
  • リアルタイムテストのCANサポート(RTI CAN MultiMessage Blocksetを使用)
  • ホストPC上のMATファイルデータを使用してモデル変数をリアルタイムでシミュレーション
  • マルチプロセッサシステムでの透過性の高い変数アクセス
  • リアルタイムテストとPC上のPythonスクリプト間でPythonオブジェクトを簡単に受け渡し可能
  • スクリプトと専用のGUIによるリアルタイムテスト管理
  • お客様のテストフレームワーク(AutomationDesk®またはその他)へ容易に統合可能
  • スクリプト管理が容易なAutomationDesk内のReal-Time Test Library

 

リアルタイムテストの使用事例

  • ミリ秒単位の応答性のテスト
  • 時間精度の高い、モデルへの信号入力
  • 時間精度の高い、モデルの変化の計測
  • モデル変数の最小値と最大値の信頼性の高い判定
  • シミュレーションモデルに含まれていないPythonレストバスシミュレーションの動的な実行
  • 記録されたバス通信(CANまたはFlexRayログファイルなど)の正確な再生
  • 複数の独立したECUテストの同時実行

Pythonベースのリアルタイムテスト

Pythonでリアルタイムテストを記述

自動化されたテストは、通常、HIL(Hardware-in-the-Loop)システムに接続されている標準PC上でテストを実行します。ただし、この手法は、より高いタイミング精度が必要なケースには、多くの場合対応できません。たとえば、ECU相互作用を取得し、ミリ秒単位で応答させる場合などです。この問題は、AutomationDeskのリアルタイムテスト用Pythonスクリプトを使って解決できます。このスクリプトはHILシステムのプロセッサボード上で、リアルタイムでモデルと同期をとって実行されるため、すべてのテスト動作をリアルタイムで実行できるようになります。これにより、dSPACEシミュレータによるテストの選択肢が大きく広がります。同一シミュレーションステップ内でモデル変数の値を変えたときの応答動作を見る応答テストを実装できます。通信の遅延時間がないため、テスト中の時間の計測精度も格段に向上します。計測の最大時間分解能を制限する要因は、シミュレーションステップのサイズだけです。
MicroAutoBoxへのリアルタイムテストの移植の要請が、多くのお客様から寄せられました。ラピッドコントロールプロトタイピングや車載シナリオにもリアルタイムテストを使用できるように、この移植サポートは2008年後半にリリースされました。適用例には、計測データのリアルタイム再生やMicroAutoBoxでのCANゲートウェイの実装などがあります。
 

リアルタイム対応Pythonインタープリタ

リアルタイムPythonインタープリタをプロセッサボード上で、モデルと並行して実行し、それによりスクリプトをモデルと同期させて実行できます。このインタープリタでは複数のリアルタイムテストを同時に、互いに独立して実行することができます。テストはプロセッサボードのメモリを介して、シミュレーションモデルとリアルタイムでインタラクティブに動作します。そのため、HILシミュレータに接続したECUの動作を、個々のシミュレーションステップごとに観察し、調整することが可能になります。
Pythonインタープリタは、Real-Time Workshopビルドオプションによって、変換プロセス中にアプリケーションに追加されます。リアルタイムテストプログラムの開発は、AutomationDeskとともに提供されるリアルタイムテストライブラリに含まれる標準のPythonスクリプトを使って行うことができます(たとえば、複数のモデル変数へのアクセスや、複数のテスト分岐の実行を単一のリアルタイムテスト内で並列的に行うなど)。また独自のPythonライブラリを作成し、それを複数のテストプログラムで再利用することもできます。作成したテストプログラムをPCからシミュレータのプロセッサボードまたはMicroAutoBoxにロードし、実行することができます。その場合、別のリアルタイムテストをすでに実行中であっても、いっこうに差し支えありません。リアルタイムテストを実行するには追加のメモリ容量と計算時間が必要ですが、HILプロセッサボードでは、1 msのシミュレーションステップサイズで、複雑なエンジンおよび車両運動モデルを並行して実行する一般的なテストシナリオを実装しても何の問題もありません。


リアルタイムオブザーバ

リアルタイムオブザーバの実装

一般的なテストケースに、リアルタイムモデルによって生成されるイベントの検出があります。イベントは、1つまたは複数のリアルタイムモデル変数を参照する条件によって指定されます。イベントが検出されると、同じサンプルステップでテストアクションがトリガされます。この例では、リアルタイムスクリプトはシミュレートされた車両の速度を観察し、80km/hを超えると反応して緊急停止の運転操作を実行します。このテストケースはリアルタイムPythonスクリプトを使用して容易に実装できます。条件はWhileループで継続的に観察されます。スクリプトに含まれるyieldコマンドには、テスト実行を一時停止して、次のシミュレーションステップで復帰するという効果があります。つまり、スクリプトの時間調整が簡単にできます。車速が80 km/hを超えるとwhileループが終了し、関連するモデルパラメータを同じシミュレーションステップで設定することで、ブレーキ操作が開始されます。


リアルタイム入力信号

リアルタイム入力信号の実装

多くのテストシナリオでは、ECU信号入力のための記録データを正しいタイミングで再生する必要があります。Pythonリアルタイムスクリプトは、このために、あらかじめ設定されたモデル変数で正確なタイミングの信号生成を実行できます。一例を挙げると、Pythonのmathモジュールに含まれる標準的なsin関数によって実装できる正弦ジェネレータがあります(サンプルスクリプトを参照してください)。
インテリジェントなロードメカニズムを通じて、Pythonリアルタイムスクリプトから、PCのハードディスク上の計測データファイル(MATファイル)を参照し、記録されている計測データを再生することもできます。スクリプトによって、ファイル内のデータベクトルと、モデル内のターゲットパラメータをリンクします。たとえば、あるリアルタイムテストで、所定のCANメッセージを受信してから正確に50 ms間にデータを再生する必要がある場合、その発生が遅れないように、Pythonスクリプト内の単純な再生コマンドで、PCからリアルタイムハードウエアへのリアルタイムに実行可能なデータ転送をトリガします。この自動ロードメカニズムは、大きさが数百メガバイトもあるテストドライブログファイルなど、大量のデータの再生をサポートしています。同時に複数の再生プロセスを実行することができ、それぞれを独立して制御することができます。マルチプロセッサシステムでは、複数のサブノード上のテストを同期させて実行させることもできます。


CANレストバスシミュレーション

CANレストバスシミュレーションの実装

CANレストバスシミュレーションのプログラミングを容易にするため、リアルタイムテストはRTI CAN MultiMessage Blocksetに統合されています。このブロックセットには、リアルタイムテスト用のCANアクセスを準備するためのオプションが含まれ、リアルタイムスクリプトを使用して、CANメッセージを送受信することができます。CANメッセージのCAN IDおよび内容は自由に定義することができます)。これにより、ケース固有のレストバスシミュレーションを非常に簡単にテストできます。これらの動的レストバス部分(ECU固有のCANテストメッセージなど)は、必要に応じてリアルタイムハードウエアにロードして実行することができます。実行するために、シミュレーションモデルの静的な部分に変更を加える必要はなくなりました。
テストシナリオ例(下図を参照)では、アナログ入力信号を監視しています。定義されたトリガしきい値(たとえば14.7V)を超えた場合は、値がしきい値よりも低いレベルに戻るまで、事前に定義したCANメッセージが50ms間隔で周期的に送信されます。もう1つの適用例では、テストドライブ中に記録したCAN通信を試験施設において正確なタイミングで再生します。