Embedded Test 15 · HIL — ハードウェア・イン・ザ・ループ

Chapter 15

HIL — ハードウェア・イン・ザ・ループ

この章のゴール.

実機(ハードウェア)を回路の輪の中に置いたまま、周囲の世界を PC で模擬して自動テストする HIL という枠組みを理解すること。センサ・アクチュエータ・通信相手を偽物(フェイク)に置き換え、 再現可能なシナリオを繰り返し流す作り方をつかむ。

この章で使う既出の用語(定義は各リンク先). アナログ(01 章 2 節)、オラクル(01 章 8 節)、ハーネス(02 章 7 節)、判定(02 章 1 節)、状態遷移(02 章 1 節)、通信相手(02 章 2 節)、電源(02 章 2 節)、回帰(03 章 4 節)、発熱(03 章 5 節)、オシロ(04 章 8 節)、I²C(06 章 1 節)、SPI(06 章 1 節)、DAC(07 章 2 節)、グレーボックス(08 章)、スキャン(09 章 2 節)、ファジング(10 章)、ばらつき(14 章 1 節)、デッドライン(14 章 1 節)

1. HIL とは何か

03 章〜14 章の技(電流観測、信号注入、偽センサ、無線スキャン、レイテンシ測定)を一つの自動テスト装置に束ねたものが HIL である。

HIL(Hardware-in-the-Loop、ハードウェア・イン・ザ・ループ) とは、テスト対象の実機はそのまま動かし、その周囲の環境(センサが感じる世界、アクチュエータがつながる負荷、通信相手)を PC やハードで模擬(シミュレート)して、閉じた輪の中で自動テストする方式である。「実機に、偽物の世界を見せて反応を測る」仕組み。

HIL——実機はそのまま、周囲の世界を PC で模擬して閉じた輪にテスト対象(実機)そのまま動かす偽センサ/偽電圧6・7 章の技偽の負荷・偽電源3・4 章の技偽のペア機器/サーバ10・11 章の技観測(電流・波形)3・4・14 章オーケストレータ(PC)時刻付きシナリオで動かす: t=0 起動 → t=1s 温度異常注入 → t=1.5s までに警報
図15-1 HIL の閉ループ構成。

対して、実機を使わずファーム全体を PC 上で走らせる SIL(Software-in-the-Loop) もあるが、本書はブラックボックス=実機主体なので HIL を扱う。

2. なぜ HIL が要るのか

3. 何を模擬するか — 世界を偽物に

HIL 装置は、実機の各インタフェースに「偽物の相手」をつなぐ。これまでの章の技がそのまま部品になる。

実機の口模擬するもの使う技(章)
アナログ入力(センサ)温度・圧力などの偽の電圧を DAC で与える07 章
デジタルセンサ(I²C/SPI)偽センサとして任意の値を返す06 章
GPIO/割り込みボタン・アラーム・エッジを注入04 章
アクチュエータ出力モータ/LED の負荷を模擬し、出力を観測03 章・04 章
無線・ネットワーク相手偽のペア機器/偽サーバ10 章・11 章
電源電圧降下・瞬断をプログラマブル電源で03 章

4. HIL 装置の骨格

最小構成は「模擬役のハード+それを操る PC+観測系」。

# HIL シナリオの疑似コード(オーケストレータ視点)
psu.set_voltage(3.3);   dut.power_on()
fake_temp.set_celsius(25);  wait(1.0)
assert obs.current_state() == "IDLE"          # 平常
fake_temp.set_celsius(85)                      # 異常注入(偽センサ)
assert obs.wait_for("ALARM", timeout=0.5)     # 0.5s 以内に警報(オラクル+デッドライン, [14 章](14_タイミングとリアルタイム性.md))

5. スケールと安全

6. 何をオラクルにするか

7. 手を動かす

HILループを組み立てる


この章のポイント