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 やハードで模擬(シミュレート)して、閉じた輪の中で自動テストする方式である。「実機に、偽物の世界を見せて反応を測る」仕組み。
対して、実機を使わずファーム全体を PC 上で走らせる SIL(Software-in-the-Loop) もあるが、本書はブラックボックス=実機主体なので HIL を扱う。
2. なぜ HIL が要るのか
- 再現性: 「気温 −20 ℃、電圧降下、センサ故障」を手で作るのは大変。模擬ならボタン一つで何度でも同じ状況を作れる(02 章の再現性)
- 異常系・危険系: 実際に高温にしたり短絡させたりせずに、センサが異常値を返す状況を安全に作れる
- 自動化と回帰: 生成 AI がコードを直すたびに、同じ数百シナリオを一晩で自動実行して壊れていないか確かめる(18 章の CI と直結)
- 境界とレア条件: めったに起きない組み合わせを狙って作れる
3. 何を模擬するか — 世界を偽物に
HIL 装置は、実機の各インタフェースに「偽物の相手」をつなぐ。これまでの章の技がそのまま部品になる。
| 実機の口 | 模擬するもの | 使う技(章) |
|---|---|---|
| アナログ入力(センサ) | 温度・圧力などの偽の電圧を DAC で与える | 07 章 |
| デジタルセンサ(I²C/SPI) | 偽センサとして任意の値を返す | 06 章 |
| GPIO/割り込み | ボタン・アラーム・エッジを注入 | 04 章 |
| アクチュエータ出力 | モータ/LED の負荷を模擬し、出力を観測 | 03 章・04 章 |
| 無線・ネットワーク相手 | 偽のペア機器/偽サーバ | 10 章・11 章 |
| 電源 | 電圧降下・瞬断をプログラマブル電源で | 03 章 |
4. HIL 装置の骨格
最小構成は「模擬役のハード+それを操る PC+観測系」。
- 模擬・注入ハード: DAC/ADC/GPIO を持つマイコンボード(自作可、19 章)や計測器。「偽センサ」「偽負荷」を担う
- 観測ハード: 電流計(PPK02 章、03 章)、ロジアナ/オシロ(04 章)、sniffer(09 章・11 章)
- オーケストレータ(PC): シナリオを順に実行し、模擬を設定し、観測を集め、判定する(18 章のハーネス)
- タイムライン: 「t=0 で起動 → t=1s で温度異常を注入 → t=1.5s までに警報が出るか」のように、時刻付きの筋書きで動かす
# 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. スケールと安全
- 半自動から始める: 最初は手動+一部自動でよい。効くと分かった所から機械化する
- 安全設計: 実機が誤って危険動作(高電流・発熱)をしても装置と人が安全なよう、電流制限・ヒューズ・非常停止を入れる
- 多数機の並行: 同じ HIL を並べて統計を取る(個体ばらつき、02 章)
- 「模擬 ≠ 現実」: 偽物は現実の一面しか再現しない。HIL で通っても、最後は本物の環境で確かめる(08 章のグレーボックスと同じ戒め)
6. 何をオラクルにするか
- 各シナリオで、状態遷移・出力・タイミングが時刻付きの期待どおり
- 異常注入(センサ故障、電圧降下)から規定の安全動作・回復をする
- 何百シナリオを繰り返しても同じ結果(再現性・回帰)
- 個体をまたいでばらつきが許容内