3. HIL 测试环境搭建:硬件选型与软件栈
好,咱们正式开始搭建 HIL 环境。这一章内容很关键,说白了就是“配齐家伙事儿”。硬件选错了,后面跑起来全是坑;软件栈没搭对,调试能让你怀疑人生。我这些年踩过的雷,今天一次性给你讲透。
3.1 硬件选型:实时机、接口板、信号调理
硬件选型是 HIL 平台的骨架。我个人的习惯是:先定实时机,再配接口板,最后看信号调理。顺序反了容易出问题。
3.4.1 实时机选型
实时机是 HIL 的大脑。它要保证每个控制周期(通常 1-5 ms)内,模型计算和 I/O 刷新都能准时完成。一旦超时,测试结果就废了。
| 参数 | 入门级 | 工业级 | 说明 |
|---|---|---|---|
| CPU 架构 | x86_64 | x86_64 / ARM | x86 生态最成熟 |
| 核心数 | 4 核 | 8 核以上 | 至少留 1 核给 I/O |
| 实时系统 | Simulink Real-Time | Speedgoat / NI PXI | 商用方案更省心 |
| 典型型号 | Speedgoat Baseline | Speedgoat Performance | 按预算选 |
3.4.2 接口板选型
接口板是实时机和飞控之间的“翻译官”。它负责把数字信号转成模拟信号,或者反过来。常见的接口类型有:
- PWM 输出:模拟舵机/电机控制信号,频率 50-400 Hz
- 模拟输入:采集传感器电压信号,比如气压计、IMU
- 数字 I/O:处理开关量、中断信号
- CAN / RS232:外接 GPS、数传等设备
我建议选接口板时,至少预留 20% 的通道余量。为什么?因为测试过程中经常会临时加信号。我吃过这个亏——有一次项目中期要加一个舵机反馈信号,结果接口板通道全满了,只能外挂调理板,麻烦得要命。
3.4.3 信号调理
信号调理是 HIL 里最容易被忽视的环节。说白了,就是把飞控的真实信号电平(比如 5V PWM)转换成实时机能接受的电压范围(比如 0-3.3V)。
信号调理模块的核心参数:
- 隔离电压:至少 1000V,防止地环路干扰
- 带宽:至少 1 MHz,保证 PWM 信号不失真
- 通道数:按实际需求 x1.5 配置
3.2 软件栈:MATLAB/Simulink、PX4 SITL、QGroundControl
软件栈是 HIL 的灵魂。我习惯把软件分成三层:
- 实时模型层:MATLAB/Simulink,跑飞控动力学模型
- 飞控层:PX4 SITL,模拟真实的飞控固件
- 地面站层:QGroundControl,监控和调参
3.2.1 MATLAB/Simulink 配置
Simulink 负责搭建飞行器动力学模型。这里有几个关键点:
- 求解器:用固定步长,步长 1 ms 或更小
- I/O 驱动:用 Simulink Real-Time 的 I/O 模块库
- 模型接口:PWM 输入、传感器输出、GPS 数据
核心配置示例:
% 设置固定步长求解器
set_param('myModel', 'Solver', 'ode4');
set_param('myModel', 'FixedStep', '0.001');
% 添加 I/O 模块
% 使用 Simulink Real-Time 的 'PWM Read' 和 'Analog Output'
3.2.2 PX4 SITL 搭建
PX4 SITL 是软件在环仿真。它跑在 Ubuntu 上,通过 UDP 和 Simulink 通信。搭建步骤:
- 安装 PX4 工具链(make、gcc、python)
- 下载 PX4 源码,编译 SITL 版本
- 启动 SITL,配置 UDP 端口
3.2.3 QGroundControl 配置
QGroundControl 是地面站,用来监控飞控状态、调参、看日志。在 HIL 模式下,它通过 UDP 连接 PX4 SITL。
配置要点:
- 通信协议:MAVLink v2
- 连接方式:UDP,端口 14550
- 参数同步:自动从 SITL 读取
3.3 系统连接图
下面这张图展示了 HIL 测试平台的完整连接关系。我画这张图的时候,特意把信号流向标清楚了,方便你对照搭建。
3.4 搭建步骤总结
最后,我把搭建步骤整理成一个清单。你照着做,基本不会出大问题。
| 步骤 | 操作内容 | 预计耗时 | 注意事项 |
|---|---|---|---|
| 1 | 安装实时机系统(Simulink Real-Time) | 2 小时 | 确认网卡驱动兼容 |
| 2 | 配置接口板驱动和信号调理 | 1 小时 | 先测通道通断 |
| 3 | 搭建 PX4 SITL 环境 | 3 小时 | 用官方 Docker 镜像省时间 |
| 4 | 配置 QGroundControl UDP 连接 | 0.5 小时 | 端口别冲突 |
| 5 | 联调测试:跑一个简单的悬停场景 | 2 小时 | 先开 SITL,再开 Simulink |
嗯,硬件选型和软件栈搭建就讲到这里。你把这些基础打牢了,后面跑测试案例就会顺手很多。记住一句话:HIL 测试,七分在搭建,三分在测试。环境搭好了,后面就是水到渠成的事。