3. 硬件在环测试基本原理
硬件在环(Hardware-in-the-Loop,HIL)测试的本质,是把真实被测件(DUT)放进一个由实时仿真器构建的虚拟环境中,让被测件“以为”自己正工作在真实飞机或真实航电总线上。要做到这一点,测试平台必须同时满足四个基本条件:闭环仿真构成环境、实时性保证时间可信、信号接口匹配保证物理连通、故障注入机制保证异常可复现。本节围绕这四条主线展开。
一、闭环仿真:让被测件与虚拟环境互相驱动
开环测试只能给被测件灌入固定激励、观察输出,无法反映被测件动作对环境的反作用。HIL 的核心是闭环:仿真模型根据被测件的输出实时计算环境响应,再把响应作为新的激励送回被测件,形成“被测件→仿真模型→被测件”的回路。
以某型飞控计算机(FLCC)HIL 测试为例,闭环回路包含以下环节:实时仿真机运行六自由度飞行动力学模型与大气模型,根据舵面偏度、发动机推力等输入解算飞机姿态与角速度;传感器仿真板卡把解算出的角速率、过载、大气数据转换为 FLCC 可接收的信号;FLCC 依据这些信号计算舵面指令;舵机仿真模型再根据舵面指令更新气动面位置,反馈给动力学模型。整个回路在一个实时步长内完成一次迭代。
闭环是否“闭合”,可用一个简单判据检查:断开被测件输出、仅保留模型自激励时,系统应保持稳定或按预期发散;接入被测件后,若回路增益、相位或接口方向接错,会出现持续等幅振荡或迅速饱和。因此调试闭环时通常先做“模型自闭环”验证,再接入被测件。
二、实时性约束:时间必须可信
HIL 与纯软件仿真的根本区别在于:仿真时间必须与物理时间同步。被测件是真实硬件,它按自己的时钟运行,如果仿真模型解算慢于真实时间,被测件收到的环境信息就会滞后,闭环特性被扭曲,测试结论失效。
实时性约束通常用三个指标描述:步长(每个仿真周期的时长)、抖动(实际周期与标称周期的偏差)、超时(单步未在步长内完成)。航电 HIL 常见步长为 1 ms 或 0.5 ms,对应 1 kHz 或 2 kHz 的模型解算与 I/O 刷新频率。抖动一般要求控制在步长的 5%~10% 以内,例如 1 ms 步长下抖动不超过 50 μs。
实时性不是“越快越好”,而是“确定地按时完成”。工程上通过以下手段保证:把模型按计算量分配到多个实时核并行解算;把 I/O 读写放在独立任务中与模型解算流水化;对超过步长的任务做优先级排序,保证关键回路优先。若某步出现超时,实时系统应记录超时计数并触发保护,而不是静默丢步。
三、信号接口匹配:物理层与逻辑层都要对齐
被测件只认它设计时规定的信号形式。接口匹配要同时解决物理层和逻辑层两类问题。物理层包括信号类型(模拟电压/电流、离散量、ARINC 429、CAN、RS-422、1553B 等)、电平范围、阻抗、参考地与屏蔽;逻辑层包括数据格式、标度、更新率、字长、校验与帧结构。
下表给出一组典型航电接口的匹配要点(示例参数,用于说明匹配维度):
| 接口类型 | 物理层要点 | 逻辑层要点 | 常见失配现象 |
|---|---|---|---|
| 模拟量(±10 V) | 差分/单端、输入阻抗、参考地 | 标度 V/单位、滤波带宽 | 读数偏移、噪声大、量程截断 |
| 离散量(28 V/地) | 开漏/推挽、上拉电阻 | 有效电平定义、去抖时间 | 状态反相、抖动误判 |
| ARINC 429 | 双绞差分、速率 12.5/100 kbps | 标签、SDI、SSM、奇偶校验 | 标签解析错、SSM 无效 |
| CAN | 120 Ω 终端、共模范围 | 波特率、报文 ID、周期 | 总线错误帧、报文丢失 |
| 1553B | 变压器耦合、 stub 长度 | RT 地址、子地址、命令字 | 无响应、状态字异常 |
匹配验证的顺序建议是:先静态核对信号定义表,再用万用表/示波器确认电平与参考地,最后用总线分析仪确认帧结构与更新率。任何一层未对齐,闭环都会表现为“数据看似有、但语义不对”。
四、故障注入机制:把异常变成可复现的激励
HIL 的价值之一,是能在不损坏真实设备的前提下复现故障。故障注入按作用位置可分为三类:信号层故障(开路、短路、漂移、噪声、超范围)、总线层故障(丢帧、错帧、延迟、标签错误、总线负载突增)、环境层故障(传感器失效、大气数据跳变、电源跌落)。
实现方式上,信号层故障通常由故障注入板卡或可编程电阻网络完成,例如在模拟通道串联继电器实现开路、并联电阻实现偏移;总线层故障由总线仿真卡在发送前修改帧内容或按概率丢弃;环境层故障则直接修改仿真模型中的参数或状态。故障注入必须可配置、可定时、可记录,否则无法复现。
下面给出一个故障注入配置的示例片段,用于说明“何时、对谁、注入什么、持续多久”四个要素:
fault_injection:
- id: FI-001
target: "ARINC429_CH2"
type: "label_error"
trigger: { time_s: 12.0 }
duration_ms: 500
params: { label: 0x1A3, expected: 0x1A2 }
- id: FI-002
target: "AI_PITCH_RATE"
type: "gain_drift"
trigger: { time_s: 20.0 }
duration_ms: 2000
params: { gain: 1.15 }
注入后要观察被测件的反应是否符合设计预期:是否在规定时间内检测到故障、是否进入降级或重构、是否给出正确告警。判断依据应来自被测件的接口定义与适航/设计文档,而不是测试人员的直觉。
五、四者如何协同
闭环仿真提供“环境”,实时性提供“时间可信”,接口匹配提供“物理与语义连通”,故障注入提供“异常可控”。四者缺一不可:没有闭环,故障注入只是单向灌数据;没有实时性,闭环特性失真;没有接口匹配,信号进不去或语义错;没有故障注入,只能测正常工况。实际调试中,建议按“接口静态核对→模型自闭环→接入被测件闭环→实时性压测→故障注入”的顺序推进,每一步都保留可回退的配置与记录。
把上述四条主线落实到测试用例时,一个可复用的检查思路是:先确认闭环回路方向与增益正确,再确认步长与抖动满足要求,然后逐条核对接口定义表,最后按故障清单逐项注入并记录被测件响应。只有这四步都通过,HIL 测试结果才具备工程可信度。