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里多了一个项目树。

小技巧: 项目创建后,ConfigurationDesk会自动生成一个默认的 .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。你会发现板卡出现在硬件配置树里了。每个板卡下面还有子节点,比如通道、端口之类的。

注意: 添加板卡时,一定要确认板卡的固件版本和ConfigurationDesk版本匹配。我遇到过一回,板卡加进去了,但编译死活不过,最后发现是固件太旧。升级固件后就好了。

嗯,这里多说一句。如果你用的是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 按钮(一个锤子图标)。点它。

编译过程会输出日志。你注意看有没有 ErrorWarning。如果有红色报错,双击错误信息,它会自动跳转到问题位置。

常见编译错误:

  • 通道配置冲突:同一个通道被分配了两个信号。
  • 板卡未识别:检查硬件连接和电源。
  • 模型接口不匹配:Simulink模型里的端口名和配置表里的对不上。

编译成功后,你会看到 Build Succeeded 的提示。这时候,点击 Deploy 按钮(一个向下箭头)。它会自动把生成的文件下载到目标硬件上。

部署完成后,硬件就开始运行了。但你看不到任何现象,对吧?别急,下一步就是监控。

4.5 运行与监控

运行监控,我用的是 ControlDesk。它是dSPACE的另一个工具,专门用来做实时监控和数据采集。

打开ControlDesk,新建一个实验文件(.lay)。然后添加变量:

  1. 点击 Add Instrument,选择 Plotter(示波器)。
  2. 在变量列表里,找到你刚才配置的那些信号。比如 AI_01DO_01
  3. 拖拽到Plotter窗口里。

这时候,你应该能看到波形了。如果信号是0,检查一下硬件接线。我刚开始做的时候,经常忘记接信号线,盯着屏幕看了半天,心想怎么没反应……

调试小技巧: 如果波形不动,先检查硬件是否上电。然后看ControlDesk底部的状态栏,是不是显示 Running。如果是 Stopped,点一下运行按钮。

嗯,还有一个常见问题:采样率设置太高,导致数据量太大,波形卡顿。我一般把采样率设在1kHz左右,够用又不卡。

4.6 避坑指南

最后,我总结几个我踩过的坑,你遇到了可以少走弯路:

  • 路径不能有中文:这个前面说了,但还是要强调。dSPACE对中文支持真的很差。
  • 板卡固件版本:加板卡前,先查一下固件版本。不匹配的话,编译会报一些莫名其妙的错。
  • 信号命名一致性:ConfigurationDesk里的信号名,和Simulink模型里的端口名,一定要一致。大小写也要注意。
  • 先跑空模型:第一次部署,建议先用一个空的Simulink模型(只有输入输出端口,没有逻辑)。确认硬件通信正常后,再加载真正的控制算法。这样可以快速定位问题是出在硬件还是软件。

好了,第一个HIL项目就跑通了。从创建项目到看到波形,其实就这么几步。你多做几次,就会形成肌肉记忆。

下一章,咱们会深入讲Simulink模型怎么和硬件对接。到时候,你会看到更完整的闭环。