4. 第一个HIL项目:创建工程、配置仿真参数、运行基础测试
说实话,很多新手拿到Radix ST平台,第一反应就是——这玩意儿怎么上手?
我当年第一次接触硬件在环仿真时,也踩了不少坑。记得有个项目,光配置仿真参数就折腾了两天,最后发现是采样率设错了。嗯,今天咱们就从零开始,把第一个HIL项目跑起来。
4.1 创建工程——别急着点“下一步”
打开Radix ST Studio,你会看到一个简洁的启动界面。我个人习惯先检查一下软件版本,确保和硬件固件匹配。版本不一致的话,后面跑仿真时会出现各种奇怪的问题。
创建工程的步骤其实很简单:
- 点击“File” → “New Project”
- 选择“HIL Project”模板
- 输入项目名称,比如“MyFirstHIL”
- 选择保存路径——我建议单独建一个文件夹,别跟其他项目混在一起
- 点击“Finish”
创建完成后,你会看到工程结构树。左边是源文件,中间是代码编辑器,下面是输出窗口。嗯,这个布局跟大多数IDE差不多,上手不难。
4.2 配置仿真参数——这一步最容易被忽略
工程建好了,接下来就是配置仿真参数。说白了,就是告诉Radix ST:你要模拟什么样的硬件环境?
双击工程树中的“hil_config.xml”,打开配置界面。你会看到几个关键参数:
| 参数名称 | 说明 | 推荐初始值 |
|---|---|---|
| 采样率 | 仿真器每秒采集数据的次数 | 1000 Hz |
| 仿真时长 | 单次运行的总时间 | 10 s |
| 步长 | 每次计算的间隔时间 | 0.001 s |
| IO映射 | 定义物理IO与仿真模型的对应关系 | 默认映射 |
这里我要特别强调一下采样率。你想想看,如果采样率太低,高频信号就采集不到,仿真结果自然不准。但采样率太高,计算量又太大,实时性可能跟不上。
我在项目中遇到过这样一个案例:客户要求仿真一个PWM信号,频率是20kHz。我一开始把采样率设成了2000 Hz,结果波形出来全是锯齿。后来改成20000 Hz,才看到真实的方波形状。所以,采样率至少要设为目标信号频率的10倍以上。
4.3 编写基础测试代码——让仿真跑起来
配置完成后,我们来写一段最简单的测试代码。这段代码的作用是:输出一个正弦波,然后采集回来,看看是否一致。
// main.c - 第一个HIL测试程序
#include "hil_api.h"
int main(void) {
// 初始化HIL硬件
hil_init();
// 定义变量
float output_signal = 0.0f;
float input_signal = 0.0f;
float time = 0.0f;
float frequency = 50.0f; // 50Hz正弦波
float amplitude = 3.3f; // 幅值3.3V
// 主循环
while (1) {
// 生成正弦波
output_signal = amplitude * sin(2 * PI * frequency * time);
// 输出到DAC通道0
hil_dac_write(0, output_signal);
// 从ADC通道0读取回采信号
input_signal = hil_adc_read(0);
// 比较输出和输入
if (fabs(output_signal - input_signal) > 0.1) {
// 误差过大,打印警告
hil_log("Warning: Signal mismatch detected!\n");
}
// 等待下一个步长
hil_sleep(0.001); // 1ms步长
time += 0.001;
}
return 0;
}
这段代码的逻辑其实很简单:生成信号 → 输出 → 回采 → 比较。但就是这简单的几步,构成了HIL仿真的核心闭环。
你可能会问:为什么要比较输出和输入?说白了,就是验证硬件通道是否正常工作。我在调试一个电机驱动项目时,就发现DAC输出正常,但ADC回采的数值始终不对。后来一查,是信号线上的电阻焊错了。如果没有这个比较环节,这种硬件问题很难定位。
4.4 运行基础测试——看波形说话
代码写好了,点击“Build”编译,然后点击“Run”运行。你会看到Radix ST Studio自动打开波形显示窗口。
波形窗口默认显示所有ADC通道的数据。你可以右键添加DAC输出通道,这样就能同时看到输出和输入波形。
正常情况下,你应该看到两条几乎重合的正弦波。如果波形有毛刺、失真或者延迟过大,那就说明哪里出了问题。
- 波形有毛刺 → 检查电源是否稳定,地线是否接好
- 波形失真 → 采样率可能太低,或者信号幅值超出量程
- 波形延迟过大 → 步长设置太长,或者CPU负载过高
- 没有波形 → 检查IO映射是否正确,硬件连接是否松动
我记得第一次跑这个测试时,波形显示出来是乱的。我检查了半天,最后发现是DAC和ADC的通道号搞反了。嗯,这种低级错误,谁还没犯过呢?
4.5 保存和导出结果——别白跑一趟
仿真跑完了,数据得保存下来。Radix ST支持多种导出格式:
- CSV格式:适合导入Excel或Python做进一步分析
- MAT格式:适合MATLAB用户
- 二进制格式:数据量大的时候用,加载速度快
我个人习惯先保存一份二进制格式,再导出CSV。二进制格式方便后续重新加载查看,CSV格式方便做报告。
4.6 本章小结
好了,第一个HIL项目就这么跑起来了。回顾一下,我们做了三件事:创建工程、配置参数、运行测试。看起来简单,但每一步都有值得注意的细节。
你可能会觉得,这跟普通的嵌入式开发没什么区别。其实不然。HIL仿真的核心价值在于:你可以在没有真实硬件的情况下,验证控制算法的正确性。而且,Radix ST的实时性保证了仿真结果与真实硬件高度一致。
下一章,我们会深入讲解如何搭建更复杂的仿真模型。但在此之前,我建议你把今天这个基础测试多跑几遍,熟悉一下整个流程。毕竟,基础打牢了,后面才能走得更远。
公众号:蓝海资料掘金营,微信deep3321