3. 航空航天HIL测试数据的类型与特征
在航空航天HIL(硬件在环)测试中,被测对象往往是飞控计算机、作动器控制单元、发动机控制器或综合航电设备。这些设备在真实飞机上通过传感器、总线、离散线和视频链路与外界交互,HIL台架必须用等效的电气信号和协议数据把这些交互"伪造"出来。因此,HIL测试数据并不是单一形态,而是由模拟量、数字量、总线数据、视频流和日志文本等多类数据共同构成的混合数据体。理解它们的分类与时空特性,是后续数据采集、存储、回放和判读的基础。
一、按物理形态与语义分类
模拟量是连续变化的电压或电流信号,典型如迎角传感器输出的0~5V、±10V的舵面位置反馈、4~20mA的压力变送器信号。它的核心特征是"连续":在时间轴上无间断,在幅值上可取区间内任意值。HIL中通常由D/A板卡或模拟信号板卡产生,采样率常见为1kHz~10kHz,量化位数为16位或24位。模拟量的难点在于精度与噪声——例如一个±10V、16位量化的通道,理论分辨率为20V/65536≈0.305mV,但若地线处理不当,引入的共模噪声可能达到数毫伏,直接淹没小信号。
数字量是离散的开关或电平信号,如起落架收放到位开关、离散指令、使能信号。它只有高/低两种状态,通常以TTL电平或28V离散量形式存在。数字量的时间特性比幅值更重要:一个"起落架收上到位"信号从0变1的时刻,可能对应着飞控逻辑中的关键状态迁移。因此数字量采集必须记录边沿时刻,抖动和去抖时间(如20ms)需要在数据中体现。
总线数据是航空航天HIL中最具代表性的数据形态,包括ARINC 429、MIL-STD-1553B、CAN、AFDX等。以ARINC 429为例,它是一条单向总线,以32位字为单位,典型速率12.5kbps或100kbps,每个字包含标号(Label)、源/目的标识(SDI)、数据域和奇偶校验。1553B则是命令/响应式双冗余总线,消息以1Mbps传输,每条消息包含命令字、状态字和数据字。总线数据的时空特性体现在"帧/消息"粒度上:它不是连续采样,而是按协议周期或事件触发成组出现。例如某飞控ARINC 429输出周期为50ms,意味着每50ms才有一组完整数据更新,HIL采集必须与这个周期对齐,否则会读到重复或跳变的数据。
视频流在航空航天HIL中主要来自平视显示器(HUD)、多功能显示器(MFD)、红外/可见光吊舱或视觉导航相机。它以帧为单位,典型分辨率1920×1080、帧率30fps或60fps,数据率可达数百Mbps到数Gbps。视频流的时间特性是"等间隔帧",但空间特性是"二维像素阵列",与一维时间序列完全不同。HIL中视频流常用于验证显示画面与飞行状态的同步性,例如检查地平线是否随俯仰角正确移动。
日志文本是测试过程中由被测软件、仿真模型或测试脚本产生的结构化或半结构化文本,如"2024-06-01T10:23:45.123 [FC] Pitch rate limit active"或"ARINC429 Label 203 timeout"。它的时间戳精度可能到毫秒或微秒,但产生时刻不规律,属于事件驱动型数据。日志文本的价值在于提供上下文和异常线索,但它的非结构化特征给自动分析带来困难。
二、时空特性的工程含义
把上述五类数据放在同一时间轴上观察,会发现它们的"时间粒度"和"空间维度"完全不同。模拟量是连续时间序列,适合用等间隔采样和插值回放;数字量是稀疏边沿事件,适合用状态变化记录;总线数据是周期性或事件性的帧序列,必须保留帧边界和协议字段;视频流是等间隔二维帧,需要与飞行状态做帧级对齐;日志文本是随机事件点,适合做时间索引和上下文关联。
这种差异直接决定了HIL数据管理中的几个关键设计。第一,统一时基。所有类型的数据都必须打上同一时钟源的时间戳,通常使用IRIG-B或PTP(IEEE 1588)同步,精度要求到微秒级。如果模拟量用板卡本地时钟、总线数据用协议时间戳、视频流用帧计数,三者之间就会产生漂移,回放时无法还原真实因果关系。第二,采样率与存储策略分离。模拟量按10kHz连续存储,一小时就是3.6×10⁷个样本;而日志文本可能一小时只有几百条。若统一按最高速率存储,会造成巨大浪费;若统一降采样,又会丢失数字量边沿和总线帧的精确时刻。第三,空间维度的对齐。视频流的每一帧需要与同一时刻的模拟量、总线数据建立映射,例如用帧号作为索引,把该帧对应的俯仰角、滚转角、总线Label 203的值关联起来,才能验证显示画面是否正确。
三、一个可操作的分类记录示例
假设某型飞控HIL测试中,需要同时记录迎角模拟量、起落架离散量、ARINC 429姿态数据、HUD视频和飞控日志。可以按如下字段设计记录结构(示例参数,非实测):
| 数据类型 | 典型通道/标识 | 采样/更新率 | 时间戳精度 | 存储粒度 |
|---|---|---|---|---|
| 模拟量 | AOA_1(迎角) | 5kHz | 1μs | 连续样本 |
| 数字量 | LG_UP_LOCK | 边沿触发 | 1μs | 状态变化记录 |
| 总线数据 | ARINC429 Label 203 | 50ms周期 | 10μs | 帧 |
| 视频流 | HUD_VIDEO | 30fps | 帧起始时刻 | 帧 |
| 日志文本 | FC_LOG | 事件驱动 | 1ms | 行 |
在实际操作中,可以用如下伪代码描述采集循环的骨架,重点在于不同数据走不同分支、但共享同一时间基准:
t0 = sync_clock() # 统一时基,IRIG-B/PTP
while test_running:
t = now() - t0
# 模拟量:等间隔采集
if t >= next_analog_t:
aoa = read_analog("AOA_1")
store_analog(t, "AOA_1", aoa)
next_analog_t += 0.0002 # 5kHz
# 数字量:边沿检测
lg = read_digital("LG_UP_LOCK")
if lg != last_lg:
store_event(t, "LG_UP_LOCK", lg)
last_lg = lg
# 总线:按帧接收
frame = recv_arinc429("Label203")
if frame:
store_frame(t, frame)
# 视频:按帧抓取
if video_frame_ready():
store_video_frame(t, get_frame())
# 日志:按行读取
line = read_log_line()
if line:
store_log(t, line)
这段骨架说明了一个核心原则:不同数据类型的采集触发条件不同,但时间戳必须来自同一时钟。模拟量按固定周期触发,数字量按边沿触发,总线按帧到达触发,视频按帧就绪触发,日志按行可读触发。如果忽略这一点,把日志文本的"读取时刻"当作"事件发生时刻",就会引入毫秒级甚至更大的误差,在分析飞控逻辑时序时可能得出错误结论。
四、数据特征对存储与回放的约束
从存储角度看,模拟量和视频流是"带宽大户",总线数据是"结构大户",数字量和日志文本是"事件大户"。一个典型的HIL测试小时级数据量可能达到:模拟量数十GB、视频流数百GB、总线数据数GB、日志文本数MB。因此,实际工程中常采用分级存储:模拟量按原始采样率存短期环形缓冲,降采样后存长期;视频流用H.264/H.265压缩后存;总线数据保留完整帧和协议字段;日志文本直接存文本并建时间索引。
从回放角度看,五类数据必须能按同一时间轴对齐播放。例如,在回放某次着陆测试时,需要同时看到:迎角模拟量曲线、起落架离散量状态、ARINC 429中的无线电高度、HUD视频画面、以及飞控日志中的"接地"事件。只有五类数据的时间戳一致、索引可关联,才能还原出完整的着陆过程。这也是HIL数据管理区别于普通数据记录的核心难点——它不是记录单一信号,而是维护一个多源、多速率、多模态的时间对齐数据体。
理解这些类型与特征之后,后续的采集配置、存储格式选择、回放工具设计才有明确的依据。例如,知道总线数据是帧粒度,就不会用连续采样去"猜"帧边界;知道视频流是等间隔帧,就会用帧号而不是绝对时间做索引;知道日志文本是事件驱动,就会为它单独建时间索引而不是强行插值到固定采样率上。