本节摘要:交付链的最后一环把代码放进真实硬件:处理器在环(PIL)验证目标板上的代码与模型行为一致,硬件在环(HIL)让实物控制器与实时仿真机对跑,用真实时序与接口做全闭环测试。本节讲清两级阶梯的定位差异、实时化的定步长约束、信号接口的物理化,以及故障注入——HIL 独有的杀手锏。第 3 章的定步长知识与第 7 章的证据链在本站合流。
阶梯的第一级是处理器在环:生成的代码编译到真实目标板上运行,但被控对象仍然是普通仿真——目标板每个节拍把控制输出发回仿真环境,把测量值取回去。PIL 回答的问题非常具体:目标机上的代码行为与主机上的模型行为是否一致。定点化的舍入、编译器优化、字长差异带来的行为偏移,在这一级被逐点揪出。PIL 测试的产物是一致性报告——8.2 节复测仪式的最终背书。
第二级是硬件在环:实物控制器(整套 ECU,包括驱动、接口电路)接到实时仿真机上,仿真机实时运行被控对象模型,通过物理化接口(模拟量、PWM 采集、总线信号)与控制器对接。PIL 验证"代码",HIL 验证"整机"——时序抖动、接口延迟、传感器噪声、线束故障,这些在纯仿真里被理想化掉的东西全部回到闭环里。HIL 台架的价值在两件事:回归自动化(每夜全工况回归,人只看报告)与故障注入——安全关键系统无法在真电机上做的短路、断线、传感器漂移,在 HIL 上一键复现。

实时仿真的定义残酷而简单:一秒的物理过程必须在一秒内算完。仿真机在每个定步长内必须完成全部模型计算,超时就是"任务超载",闭环作废。这把 3.2 节的求解器议题变成了硬约束:实时机只跑定步长;被控对象模型必须为实时性瘦身——4.2 节的开关级模型在 HIL 上通常换成平均模型或降阶模型,电机模型的电瞬态按仿真步长重新权衡。
模型瘦身的预算怎么算:步长 100 微秒的实时机,每步的"机时预算"就是 100 微秒,模型计算(含通信)必须挤进这个窗口。手段从轻到重:简化不关注的物理细节(磁饱和曲线改折线)、按频段分割采样率(慢动态降频更新)、刚性部分用显式离散化近似。每一步瘦身都要重跑等效性测试(7.2 节)——HIL 模型的保真度取舍是有证可查的工程决策,不是偷偷减料。
信号接口的物理化是另一件"理想化回笼"的事:模型里的浮点转速信号,到 HIL 上变成模拟量输出的电压(或总线报文),控制器采样后再回来。接口链路的量化、噪声与延迟要在模型侧建模(传感器模型、执行器模型),否则 PIL 阶段一致、HIL 阶段莫名震荡的悬案就会出现——排查顺序永远是:先怀疑接口建模,再怀疑控制器。
% HIL 一致性测试的判据框架(交付证据链条目) 用例集:4.1 节阶跃、负载突变 + 7.2 节边界用例 + 故障注入集 比对对象:MIL 基线(浮点、非实时) vs HIL 实录 判定阈值:转速曲线最大相对差 千分之五 以内 保护动作时刻偏差 1 个节拍 以内 超差处置:先查接口建模(传感器、执行器、延迟) 再查实时机模型的等效性报告 最后回查控制器配置(滤波、采样相位)
真电机上做电枢短路实验,代价可能是一台电机加一次维修;HIL 上它是测试脚本里的一行配置。故障注入的用例集通常按故障模式清单(FMEA 的输出)编制:传感器断线(信号置为固定值或悬空噪声)、母线欠压(实时机按曲线拉低供电模型)、PWM 通道失效(接口卡封锁一路输出)。每个注入用例的判据来自第 5 章的状态机:系统必须按设计进入对应保护状态,且在规定时间内。
这些用例与 7.3 节的性质一脉相承:形式化证明了"切断态下输出恒为零",HIL 故障注入则证明"现实接口条件下系统真的能到达切断态"。证据链从数学证明延伸到物理接口,闭环在此合龙。
⚠️ 常见坑:把 HIL 当万能验收场。HIL 的模型是降阶的、接口是仿真的,它能证明"在此保真度下无此类缺陷",不能替代台架与整车试验。阶梯的每一级都有不可替代性——跳级省下的钱,都会在现场问题里加倍付出去。
HIL 给人的第一印象是贵,但"最小可用"的门槛比想象中低,把账算清楚有助于决策。三样硬件是骨架:实时仿真机(按模型算力需求选档,电机类对象入门档即可)、接口箱(模拟量输入输出加数字采集,覆盖控制器的采样与输出通路)、实物控制器(本来就是被测件)。辅助三件:供电与负载模拟(对象模型的能量接口)、线束与转接(工程量常被低估的一块)、上位机(跑实验管理与监控)。预算受限时的降级路径也明确:先用 PIL 打底(一张开发板加仿真环境即可起步),接口信号减到闭环最小集(一条转速反馈加一路 PWM),先跑通最小闭环再扩工况——HIL 台架是长出来的,不是一步买齐的。
软件侧的账同样要算:实验管理层(工况序列、故障注入脚本、结果归档)的价值随台架寿命增长,第一周就搭好目录结构与归档约定,比半年后整理散落数据划算得多。8.3 节反复强调的证据链思维,在设备账上的对应物是:每一分预算都花在"让结论更可信"上,而不是花在参数的丰富度上。
把 PIL 一致性测试的典型读数摆出来,读者日后可对照研判。小林的定点化控制代码在目标板上跑基准用例,与浮点模型逐点比对:转速曲线最大相对差万分之四——定点化的量化噪声在转速通路上被积分平均掉,健康;起动段电流峰值差百分之一点二——定点截断在快速瞬态上最明显,仍在千分之五契约的边缘之外?不,契约是千分之五,百分之一点二已超差两倍。追查路径按本节的次序:接口建模无改动排除、等效性报告显示定标时电流通路取了 16 位——字长不足,扩到 32 位重测,峰值差回落到千分之一点五,达标收工。
这次实操浓缩了三件本节想交付的事:读数要对着契约判,不要凭感觉说"差不多";超差的排查有固定次序(接口、模型、代码配置);最常见的真凶往往是定标这种"当初想省一点"的决策。硬件在环环节发现的每一个问题,都会在真机阶段以十倍代价重现——这是整条验证阶梯存在的经济学理由。
至此交付链走完:模型验证过、代码优化过、真机闭环过。第 9 章回头补最后一块能力拼图——当预置模块不够用,你的算法怎么接进框图。