バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • ケース・スタディ:バーチャルFMEAを使用した電気自動車のパワートレイン解析

2017 May Spring vol.106

ケース・スタディ:バーチャルFMEAを使用した電気自動車のパワートレイン解析

シノプシス テクニカル・マーケティング・マネージャー Victor Reyes、
シノプシス コーポレート・アプリケーション・エンジニア、マネージャー Kurt Mueller

概要:電気自動車のパワートレインのモデルをまずソフトウェアで作成した後、ターゲット・コードを実行できるバーチャル・ハードウェアとして詳細化することにより、豊富なデータ収集/解析機能を備えたバーチャルFMEAを実現する方法についてご説明します。

自動車などのセーフティ・クリティカル・アプリケーション向けデザインでは、その機能安全を実証するために故障モデリングの重要性が高まっています。バーチャルFMEAは、実行プラットフォームとしてバーチャル・ハードウェア・モデルを使用します。ユーザーは故障および故障が発生するシナリオを定義し、これらを繰り返しシミュレーションしてどのような結果が生じるかを調べます。各シナリオにおいて1つまたは複数の故障がシステムに与える影響は、自動で生成される故障レポートで定義されます。

今回のケース・スタディでは、電気自動車のパワートレイン(EVP)にバーチャルFMEAの手法を適用します。その中で、SIL(Software-in-the-Loop)レベルからVirtualizer Development Kit(VDK)を使用したvHIL(virtual Hardware-in-the-Loop)アプローチへとシステム定義を詳細化する方法についてご説明します。こうして完成したシステムにハードウェア故障を注入し、その応答をハードウェア・レベルとソフトウェア・レベルの両方で解析します。

まずEVPを制御するアルゴリズムをCコードとしてモデル化します。コンパイルにはシノプシスのシステム・モデリング/シミュレーション・ツールSaberRDを使用します。その後、このモデルを詳細化してvHILシミュレーションを作成します。このシミュレーションでは、VDKを使用してEVP制御アルゴリズムを実行するMCUのモデルを作成します。この詳細化では、CコードにMCUのペリフェラルを制御するドライバをラッパーとして追加し、このMCUをターゲットにしてコンパイルします。

Saberを使用したSILシミュレーション

今回のケース・スタディで使用したシステムは、日産リーフを大まかなベースとして簡略化したEVPで、これは電気モーター、インバータ、バッテリ、ギアボックス、VDC(Vehicle Dynamics Control)で構成されています(図1)。

図1:SILレベルのEVPブロック図(出典:シノプシス)

図1:SILレベルのEVPブロック図(出典:シノプシス)

これらの要素はいずれもSaberRDのシステム・モデルに含まれます。

制御システムは、ベクトル制御アルゴリズムを使用してモーターの各位相に供給されるAC電流の同相電流成分「iq」と直交電流成分「iq」の比を制御します。速度コントローラは、要求速度(基準速度)に合わせてPID制御で「iq」を調整します。信号「i ref」で表される要求トルクは「d」と「q」の成分に分解され、最大トルク/電流(MTPA)アルゴリズムを使用してトルクが最大となるように制御します。速度センサーおよびローター位置センサーから供給される各電流はPIDコントローラで調整します。

SILレベルでは、このコントローラをCコード・ブロックとしてインプリメントしてSaberRDに統合します。コントローラには電圧「vbattery」、目標速度「speed_ref」、およびロータ位置センサーからの情報「theta」、更には2つのモーター位相に供給される電流情報「ib」と「ic」(「ia」は間接的に生成されます)を入力します。コントローラからは、各モーター位相に対するインバータの「up」および「down」トランジスタへのスイッチング信号が出力されます。0.5秒後に期待される車両速度、およびその速度を達成するのに必要な3つのモーター電流を図2に示します。

図2:図2:SILレベルのシミュレーション出力(出典:シノプシス)

図2:図2:SILレベルのシミュレーション出力(出典:シノプシス)

vHILの詳細化

より現実に即したシミュレーションとするには、SILレベル・モデルをECUハードウェアで動作するターゲット・コードで置き換える必要があります。そのためには、SaberRDモデルをECUブロックを含むシステムに変更します(図3)。このECUブロックには、組込みソフトウェアを実行するマイクロコントローラ、インバータ・ハードウェア、そして外部センサーから取得した物理値を表す信号に対してシグナル・コンディショニングを実行するいくつかのブロックが含まれます(概略図のため、それ以外の要素は省略しています)。

図3:SaberRDにおけるvHILレベルのEVPブロック図(出典:シノプシス)

図3:SaberRDにおけるvHILレベルのEVPブロック図(出典:シノプシス)

SaberRDモデルの変更

詳細化では、まずSILレベル・モデルからコントローラ・ブロックを取り除き、制御ソフトウェアを実行するマイクロコントローラを表現したMCUブロックで置き換えます。SILレベル・モデルは3相インバータに対する「up」および「down」スイッチング信号によって駆動されるため、これらの信号をMCUブロックのPWM出力を使用してMCUブロックから供給する必要があります。これらの信号は、バーチャルMCUモデルに接続したVSI*(Virtualizer System Interface)コ・シミュレーション・ブロックから供給されます。バーチャルMCUのPWMペリフェラルが直接インバータ・ブロックの3相に対するスイッチング信号を駆動し、それによってインバータ・ブロックが電流「ia」、「ib」、「ic」を出力してモーターを駆動します。

SILレベルでは、モーターからの角度信号「theta」、基準電圧信号「v_dclink」、「speed_ref」信号、およびインバータからの電流信号「ib」と「ic」をコントローラに入力していました。

しかしこのレベルでは、モーターの角度および電流信号、基準電圧信号、基準速度信号はVSIコ・シミュレーション・ブロックを経由してマイクロコントローラ内蔵のA/Dコンバータ(ADC)に接続されます。ADCの精度は12ビットであるため、これらの信号はVSIコ・シミュレーション・ブロックで12ビットに変換(シグナル・コンディショニング)されます。正の有限値(「speed_ref」と「v_dclink」)、正および負の有限値(電流「ib」と「ic」)、正および負の無限値(「theta」)がそれぞれアダプタによって変換されます。

これらの変更がすべて完了したら、最後に通信の粒度および2つのシミュレータの同期を制御するVSIコネクタ・ブロックのサンプル時間を設定します。この値は主にPWM信号のデッドタイム仕様を考慮して決定します。

VDKの統合

今回の例で使用するMCUはNXP MPC5643Lで、プロセッサ・コア、メモリー、およびADCやPWMコントローラなどのペリフェラルはすべて実際のMCUと同じ条件でモデルを作成しました。ペリフェラルに接続された外部入出力ピン(パッド)はすべてバーチャルMCUの境界に存在します。パッドはすべてVSIライブラリに含まれるコ・シミュレーション・ブロックに接続します。

SaberRDモデルをVDKに接続するには、これらパッドの一部をSaberRD内の等価なVSIブロックの名前に設定する必要があります。NXP MCUのマニュアルに記載されたピン多重化テーブルには、各パッドが内部ペリフェラル(このケース・スタディではADC1およびPWM0コントローラ)のどの信号に接続するかが定義されています。

SaberとVDKを接続するコ・シミュレーション・リンクを作成するには、適切なパッドのVSIプロパティ「cosimPath」にSaberでの名前を設定します。パッドと内部ペリフェラルの接続はソフトウェアで設定できます。

カテゴリートップ