HILS構築手順
概要
HILSとは
HILS:Hardware In the Loop Systemの略
モデルベース開発の最終工程に位置するが、コードベース開発でも活用できる。
モデルベース開発の取っ掛かりとして推奨されている。
利点
- 開発
- デバッグが容易:GUIからアナログやパルス信号を入力したり、PC画面からアナログやパルス信号を監視したりできる。
- 派生開発が容易:一度HILSを構築すれば、派生開発時に再開発の必要性がない。
- 同時開発が容易:類似のECUであれば、同一のHILSを使用可能。
- 評価
- 自動テストが容易:自動テストを行い、評価レポートを自動生成可能。
構築のコツ
HILS構築に正解はなく、個別最適化が必要である。ソフトウェアアーキテクチャと似た側面がある。
目的
現状(想像)
家電開発の現状を想像で書きました。
- 冷蔵庫のマイナーチェンジ時に過去に実施した評価を再度時間を掛けて実施している。
- 評価時に、物理スイッチやファンクションジェネレータ、オシロスコープ等の機材を操作する必要がある。
- 実機が出来上がるまで出来ない評価があり、HW日程にソフト評価日程が左右される。
理想
組み込みソフトウェアの理想を書きました。
- 異なる機種でも同じ評価環境で評価可能。
- 評価自動化。
- 実機完成前にソフト評価開始。
目的
- 理想を実現する!!
嘘と思うかもしれませんが、これを実現できるのがHILSなんです。
(既に実現できてたら、ぜひ実現方法の記事を公開して欲しいです。)
構築手順
1. HILS機器の選定
HILS機器にはいくつか種類があります。

専用HILSと汎用HILSがあり、今回は汎用HILSの中から選定します。
専用HILSはPMSM特化のような対象が限られたHILSを指します。
対象機器の機能確認
今回は冷蔵庫を対象機器としました。
私は冷蔵庫の開発経験がゼロなので、以下の図と自宅の三菱電機の冷蔵庫を基にHILS設計します。

必要なHILSのピン機能を数えます。
通常は、回路図とマイコンのピンアサインを基に洗い出すのですが、今回は想像で作成しました。
PN間電圧はICでPWM出力に変換している想定です。どんなDC電圧で動作しているか分からないので。

上表を数えた結果が以下になります。
機能:個数
AD入力:0
AD出力:11
IO入力:7
IO出力:8
PWM入力:9
PWM出力:2
UART通信:1
電源:1
HILS機器とモジュールの選定
今回はVTシステムを採用しました。理由は初心者向きだからです。

VTシステムはモジュールを選択でき、上記のピン機能を満たすように必要な種別と個数を決定します。
VT6020 ×1
:リアルタイムモジュール。どのような構成でも一つ必要。上位機種もあるが、冷蔵庫には不要と判断。
VT1004A ×1
:電源(電圧≤±18V時の最大開閉電流 25 A)
VT2710 ×1
:汎用デジタルインターフェイスSPI、I2C、UART、RS232、RS422、RS485、LVDSが2pin
VT2516A ×2
:PWM入出力を含むデジタル入出力が16pin
VT2816A ×3
:AD入力×12pin、AD出力×4pin
この構成ですと、300~400万円程度かと思います。
CANoe又はCANayler Pro、自動化するならvTestStudioも必要なので、500万前後になるでしょう。
3人程度の工数を減らせるので、余裕でペイできます。
2. HILS構築
続いて、HILSシステムを構築します。
HILS機器と回路の接続
HILS機器と評価対象の基板を接続します。
重要なのは必要な電圧や信号がHILSシステムとやり取りできることです。
コネクタに必要な信号が来ていれば良いのですが、サーミスタやLEDはそうではありません。
そのような場合、以下のように抵抗を外してたり、線出ししたりして、必要な信号にアクセスします。
当然ながら、HiZの時は取り外し不要ですが、分圧される時は抵抗を外す必要があります。

中継基板作成
基板とHILSシステムを直接繋ぐのではなく、下図のように中継基板を挟み、コネクタで接続できるようにします。
これにより、評価する基板が増えても、コネクタを付け替えるだけで対応できます。

GUI操作パネルの作成
GUIによる操作パネルを作成します。
下図のような操作パネルを作成します。

上図は温度のアナログ出力、ドアのデジタル出力、電源ONを操作する一例です。
このようなGUIは付属のソフトで簡単に作成できます。
評価自動化するならGUIは必要ないと感じるかもしれませんが、デバッグ時に重宝します。
スイッチを操作した時の動作はコールバック関数で設定することもできます。
3.自動評価システムの構築
VTシステムでは、シナリオを一つ一つ読み込んで、合否を判定します。
シナリオを作成すると、以下のようなHTML形式のレポートファイルが自動で生成され、合否を確認できます。
下図の場合ですと、全57件のテストケースの内、46件(81)%が合格となっています。

NGだった(OKでも)場合、シナリオのどこでNGになったのかを確認することができます。
マイコンのRAM値をシリアル通信で外部に出力しておけば、その時のRAM値を確認できます。

シナリオの作成方法は以下があります。
- シナリオを一つ一つ作成する。(色々ツールあります。)
- csvファイルにテストパターンと期待値を記入し、それを読み込んでシナリオとする。
VTシステムサプライヤのvector社は前者を推奨していますが、私は後者をお勧めします。
理由は、スクリプトで簡単にテストパターンを生成できるからです。
TOYOTA自動車では自動車一台のHILSを構築しようとしており、その求人です。ダイムラーやBMWでは既に数年前から運用されています。
最後に
冷蔵庫システムを理解していて、ベクトル制御理解していて、回路図読めて、簡単な回路設計出来て、半田付け等手を動かすことを厭わなくて、電源や電流に対する知見があって、スクリプト言語扱える組み込みエンジニアであれば簡単に構築できます。入社4年目くらい?
Discussion