4、第一个HIL项目:创建ConfigurationDesk项目、添加板卡、编译部署、运行监控
好,咱们正式开始动手了。前面铺垫了那么多理论,说实话,我自己当年学HIL的时候,最烦的就是光听不练。今天这一章,咱们就真刀真枪地走一遍——从零创建一个ConfigurationDesk项目,把板卡加上,编译部署,最后跑起来看波形。
嗯,这个过程其实不复杂,但细节很多。我见过不少新手,卡在最开始的项目配置上,一卡就是半天。所以咱们慢慢来,每一步我都把坑点指出来。
4.1 创建ConfigurationDesk项目
打开ConfigurationDesk,你会看到一个启动界面。我个人习惯直接点「Create New Project」。当然,你也可以用File菜单下的选项。
弹出来的对话框里,需要填几个东西:
- Project Name:项目名,我建议用英文,别带空格。比如
HIL_Demo_Engine。 - Location:存放路径。注意,路径里不要有中文!dSPACE对中文支持不太好,我曾经吃过这个亏,编译报错找了半天,结果就是路径里的中文闹的。
- Target Platform:选择你的硬件平台。比如SCALEXIO、DS1006之类的。这里选对了,后面才能识别板卡。
填完这些,点OK。项目就创建好了。你会看到左侧的Project Explorer里多了一个项目树。
.cdx 文件。这个文件就是你的主配置文件。别手贱删了它。
4.2 添加板卡
项目建好了,接下来就是加板卡。说白了,就是告诉软件:你手上有哪些硬件资源可以用。
在Project Explorer里,找到 Hardware Configuration 节点。右键,选择 Add Board。
这时候会弹出一个列表,里面是你当前平台支持的所有板卡类型。比如:
- DS1006 Processor Board:处理器板,跑模型用的。
- DS2201 HIL I/O Board:通用I/O板,模拟数字信号都靠它。
- DS2102 Multi-I/O Board:多通道I/O板,适合信号多的场景。
选好板卡后,点OK。你会发现板卡出现在硬件配置树里了。每个板卡下面还有子节点,比如通道、端口之类的。
嗯,这里多说一句。如果你用的是SCALEXIO平台,板卡添加方式略有不同。它用的是 I/O Unit 的概念,但操作逻辑是一样的。
4.3 配置I/O通道
板卡加完了,但还不能直接用。你得告诉它:哪个通道接什么信号。
双击板卡节点,打开配置界面。你会看到类似这样的表格:
| 通道名称 | 信号类型 | 范围 | 连接目标 |
|---|---|---|---|
| AI_01 | 模拟输入 | 0-10V | ECU_Throttle |
| AO_01 | 模拟输出 | 0-5V | Actuator_Pos |
| DI_01 | 数字输入 | 0/24V | Ignition_Signal |
| DO_01 | 数字输出 | 0/24V | Relay_Control |
每个通道都要配置好量程和连接目标。这个连接目标,其实就是你在Simulink模型里定义的接口变量名。两边要对上,不然信号传不过去。
我个人习惯,在配置通道时,把 Signal Name 写得和Simulink模型里的端口名完全一致。这样后面查错时,一眼就能看出来对应关系。
4.4 编译与部署
配置完了,接下来就是编译。这一步是把你的硬件配置和模型代码打包,生成可执行文件,下载到实时硬件上。
在工具栏上,找到 Build 按钮(一个锤子图标)。点它。
编译过程会输出日志。你注意看有没有 Error 或 Warning。如果有红色报错,双击错误信息,它会自动跳转到问题位置。
常见编译错误:
- 通道配置冲突:同一个通道被分配了两个信号。
- 板卡未识别:检查硬件连接和电源。
- 模型接口不匹配:Simulink模型里的端口名和配置表里的对不上。
编译成功后,你会看到 Build Succeeded 的提示。这时候,点击 Deploy 按钮(一个向下箭头)。它会自动把生成的文件下载到目标硬件上。
部署完成后,硬件就开始运行了。但你看不到任何现象,对吧?别急,下一步就是监控。
4.5 运行与监控
运行监控,我用的是 ControlDesk。它是dSPACE的另一个工具,专门用来做实时监控和数据采集。
打开ControlDesk,新建一个实验文件(.lay)。然后添加变量:
- 点击 Add Instrument,选择 Plotter(示波器)。
- 在变量列表里,找到你刚才配置的那些信号。比如
AI_01、DO_01。 - 拖拽到Plotter窗口里。
这时候,你应该能看到波形了。如果信号是0,检查一下硬件接线。我刚开始做的时候,经常忘记接信号线,盯着屏幕看了半天,心想怎么没反应……
嗯,还有一个常见问题:采样率设置太高,导致数据量太大,波形卡顿。我一般把采样率设在1kHz左右,够用又不卡。
4.6 避坑指南
最后,我总结几个我踩过的坑,你遇到了可以少走弯路:
- 路径不能有中文:这个前面说了,但还是要强调。dSPACE对中文支持真的很差。
- 板卡固件版本:加板卡前,先查一下固件版本。不匹配的话,编译会报一些莫名其妙的错。
- 信号命名一致性:ConfigurationDesk里的信号名,和Simulink模型里的端口名,一定要一致。大小写也要注意。
- 先跑空模型:第一次部署,建议先用一个空的Simulink模型(只有输入输出端口,没有逻辑)。确认硬件通信正常后,再加载真正的控制算法。这样可以快速定位问题是出在硬件还是软件。
好了,第一个HIL项目就跑通了。从创建项目到看到波形,其实就这么几步。你多做几次,就会形成肌肉记忆。
下一章,咱们会深入讲Simulink模型怎么和硬件对接。到时候,你会看到更完整的闭环。