GAIO CLUB

2007年05月01日

マルチECUシミュレーションによる車両システム検証 複数のECUによるFlexRay検証システムの構築例

GAIO CLUB 特集
GAIO CLUB【2007/5月号】
マルチECUシミュレーションによる車両システム検証 複数のECUによるFlexRay検証システムの構築例
~通信パケットの動的交換で 網羅性の高いシステム検証を実現~


1台に数十個のマイコンが搭載されるようになった自動車開発では、電子制御ユニット(ECU)に実装する組込みソフトウエアの品質を高めることが、自動車の安全性を確保する上で重要なポイントとなっています。本特集では、現在の自動車ソフト検証の主流であるHILS(Hardware In the Loop Simutlation)装置によるソフト検証工程を大きく変えるSILS (Software In the Loop Simulation)について、複数のECUによるFlexRay車両制御システムを例にとって解説します。

はじめに

自動車の開発では主に、HILS(Hardware In the Loop Simutlation)と呼ばれる車両エミュレータを使用して、ECUソフトの検証、デバッグが行われています。しかしながら、開発現場では、全ての検証工程をHILS に委ねてしまいがちで、ECUソフトが複雑化している最近では、発見された問題の原因の特定が困難なケースが多くなってきました。また、特にFlexRay使った複数ECUシステムの検証は、従来のHILSでは制御が難しいと言った問題も出てきています。
そこで、複数ECUの検証環境に、ハードウエアを使用しないSILS環境を採用して、自動車開発 V字プロセスの早期のフェーズに、システム検証を取り込むことで、テストの網羅性向上やソフトウエア品質の改善を図ろうとする試みが見られるようになりました。本特集では、FlexRayを使用した複数のECU動作検証を例にとり、開発の早期の段階でシミュレーションによる車両システム動作の検証を行う手法、検証システムの内容について解説します。

※FlexRayとは…
FlexRayは、ハンドル、ブレーキと言った高い信頼性を要求される車両の部分を、現在のメカ的な機構から、ワイヤー接続による電気信号による制御に置き換えるための通信プロトコルです。自動車の軽量化や自由なデザイン、低コスト化を実現する手段として、採用が始まりつつある技術です。

FlexRay車両システムシミュレーションの目的

本特殊で例に挙げるFlexRay車両システムの概要について説明します。今回のシステムは、3つのECUをFlexRayによりネットワーク接続することで、ECU、センサ、アクチュエータがネットワーク化された電子プラットフォームにおける、ECU開発の事前検討が主な目的です。その内容には、以下のようなものがあります。

1.性能評価

CPU負荷率、応答時間測定などを通じて、CPUの選定、ソフトウエアの仕様検討などに利用します。FlexRayでは従来のCANに比べてCPU負荷が高く、事前のCPU性能見積は重要になっています。

2.耐故障性評価

動的にFlexRay送受信エラーやを注入して、各ECUの動作、遷移状態の確認に使用します。これにより、FlexRayのあらゆる障害検出ソフトのデバッグを行います。

3.複数のECU間のシステム状態検証

周期ごとに各ノードの状態を収集・管理して、ECUに実装される状態管理ソフトのデバッグを行います。

各ECUの仮想モデル化

各ECUは各々独立したPCで動作させます。この中には以下の要素を含めます。

1. MCUモデル

周辺ペリフェラルを含むMPUの動作モデルです。マイコンコア、TMU、INTC、ADCなど、特定の型番のマイコンに対応するマイコン動作シミュレーションを行います。

2. 仮想FlexRayコントローラ

MCUモデルに含まれる周辺ペリフェラルの1つに相当し、実際のFlexRayコントローラの動作をシミュレーションします。

3. シナリオ実行モジュール

システムテストのために、各ECUに組込み仮想テスト装置に相当するもので、後述するテスト管理サーバーからテストシナリオが送信されます。各ECUのシナリオ実行モジュールは、このテスト管理サーバーからのシナリオを受け、シミュレーション開始後、FlexRayコントローラと同期しながらシナリオに従った送受信テストを行います。このテストシナリオには、今回実装する3つのECU以外の仮想ノードからのデータも含んでいます。

4.同期実行モジュール

独立した3つのECUの時間同期を行うために、各ECUに実装されます。テスト管理サーバーからの同期指示を受けて、各ECUの動作同期を行います。

シミュレーションシステムの構成

次に、このECUを仮想FlexRayバスで相互接続してシステムを構成します。シミュレーションシシステムには、以下の要素を含めます。

1. 3つのECUモデル

上で説明したMCUモデル、仮想FlexRayコントローラ、シナリオ実行モジュール、同期実行モジュールで校正される仮想ECU。

2. 同期実行モジュール

独立したPCで動作するECUを時間同期させるためのコントローラ。各ECUに実装する同期実行モジュールに対して、同期指示を送ります。

3. テスト管理サーバー

テスト(シミュレーション)実行前に、各ECUのシナリオ実行モジュールに対して、テストシナリオを送信します。テスト実行後に、各ECUのシナリオ実行モジュールから送られるテスト終了の通知を受けて、結果を表示します。

次に、このECUを仮想FlexRayバスで相互接続してシステムを構成します。シミュレーションシシステムには、以下の要素を含めます。

同期実行モジュールの動作

テスト管理サーバと同期実行モジュールは、各仮想ECU間のシミュレーション同期を制御します。各仮想ECUに実装される同期実行ユニットは、仮想FlexRayバスとは別のLANを使用してテスト管理サーバーに接続されています。同期実行モジュールは、テスト管理サーバーからの同期指示を受けて、これをFlexRayコントローラへ送り、処理が完了すると、FlexRayコントローラは同期実行モジュールへ処理完了通知を行います。これを同期実行モジュールがテスト管理サーバーへ通知します。
テスト管理サーバーは、全てのECUの同期実行モジュールからの処理完了通知を受け取ったら、次の処理の同期指示を各ECUの同期実行モジュールへ送信します。
ある仮想ECU動作が、デバッグのためにブレークした場合には、テスト管理サーバーは、そのECUの同期実行モジュールからの処理動作完了通知を待つことになり、全体の同期を保ったまま、システムのデバッグを行うことも可能です。

パケットを動的に交換してテストするシナリオ実行モジュール

この検証システムでは、「シナリオ実行モジュール」が重要な働きをします。システム起動時に、テスト管理サーバーからテストシナリオが、このシナリオ実行モジュールに送信されます。
このシナリオとは、例外条件などに対する検証のために作られるものです。例えば、シナリオ実行モジュールがFlexRayバスからあるFlexRayパケットを受けたときに、故意に異常条件など検証のためのパケットに交換してからコントローラに送ると言うようなテストシーケンスが書き込まれています。テストシナリオを設定しないデータは、そのまま交換することなく渡されます。
また、コントローラからの応答をシナリオ実行ユニットが受け取った時に、シナリオに設定された結果(異常を検知などの結果シナリオ)に一致した場合に、その結果をテスト管理サーバーに通知します。
この3つのECUの連係動作によるシステムでは、お互いのECUがFlexRayパケットをやり取りしていますが、この送受信のパケットの中に、異常系のテストデータを挿入したテストを行うために、このシナリオ実行モジュールが利用されます。
この様な仕組みは、HILSなどのハードウエアを使用した検証システムでは実現が困難ですが、シミュレーション環境では、このシナリオ実行モジュールの働きにより、複数のECUの連係動作の中に容易に異常条件を作り出すことが可能です。

テスト管理サーバーの働き

テスト管理サーバーは、全ての仮想ECUのシナリオ実行モジュールに送信するシナリオの作成、管理と、シナリオ実行モジュールからの結果応答の受信、表示を行います。
シナリオ作成の画面では、GUI操作により、各ECUに異常データが送信されることを想定したテストシーケンスを、網羅的に設定することができます。単一のECUに対してのみでなく、マルチECUの連携動作のシナリオも容易に作成可能で、網羅的なシステム動作テスト条件を設定することができます。
検証システム起動時には、全ての仮想ECUに対して、シナリオを送信します。各仮想ECUのシナリオ実行モジュールが正しくシナリオを受信すると、テスト管理サーバーに対して受信完了通知を送ます。テスト管理サーバーは、全てのシナリオ実行モジュールから受信通知を受け取ると、全受信完了の表示を行い、1つでもエラーがあると、エラー表示を行います。

テストシナリオの実行例

では、テストシナリオを実行する場合の例を見てみましょう。FlexRayのデータ送受信は、フレーム単位に行われますが、各フレームには、Slot番号、サイクル番号、送受信チャンネルで管理されています。テスト管理サーバーに、以下の3つのシナリオが設定されているとします。

1. Slot2のシナリオ:FlexRayコントローラが他のECUに対してSlot2のデータを送信したときに、これを他のECUに対するテスト用データに交換して送信する。
2. Slot4のシナリオ:他のECUからSlot4のデータを受信したときに、このECUに対するテストデータに交換してFlexRayコントローラに送る。
3. Slot5のシナリオ:FlexRayコントローラが他のECUに対してSlot5のデータを送信したときに、これを他のECUに対するテスト用データに交換して送信する。


1つの仮想ECUで、Slot番号1から6の順に送受信が行われたときの動作例を下の図に示します。このように、送受信データを自由に交換することで、互いのECUの動作テスト、連携動作テストを可能にするのです。

さいごに

このように、シミュレーション環境を用いることで、テストシナリオによる仮想ECU間のテストデータの動的交換などの手法により、実ECUを接続した検証環境では実行の難しい、網羅性の高い車両システムの動作検証が可能になります。マルチECU動作検証へのシミュレーション環境の適用は、多くの自動車部品サプライヤ様、自動車メーカー様から、大きな期待が寄せられている、車載ソフト品質改善手法です。

人気のコラム

最新のコラム