2. dSPACE工具链与工程环境搭建

MicroAutoBox 的算法验证工程并不是在单一软件里完成的,而是由 MATLAB/Simulink、RTI、ConfigurationDesk、ControlDesk 和 AutomationDesk 共同构成的一条工具链。理解这条链上每个工具“管什么、不管什么”,是环境搭建不返工的前提。可以把它们分成三层:建模与代码生成层(MATLAB/Simulink + RTI)、硬件配置与集成层(ConfigurationDesk)、试验运行与自动化层(ControlDesk + AutomationDesk)。

RTI(Real-Time Interface)是连接 Simulink 与 dSPACE 实时硬件的桥梁。安装 RTI 后,Simulink 库浏览器中会出现 dSPACE RTI 库,其中包含 DS1501、DS1511 等 I/O 模块对应的驱动块。RTI 的作用是把 Simulink 模型中的 I/O 块自动映射为实时硬件上的通道,并生成可在 MicroAutoBox 上运行的实时代码。因此,模型里用到的每一路 ADC、DAC、CAN、PWM,都必须来自 RTI 库,而不能用普通 Simulink 的源/宿模块替代。

ConfigurationDesk 负责“硬件侧”的配置。它管理 MicroAutoBox 的硬件拓扑、I/O 通道分配、CAN 报文定义、以及模型与硬件的绑定关系。一个常见误区是:在 Simulink 里改了 I/O 通道号,却忘了在 ConfigurationDesk 里同步更新,导致下载后信号对不上。正确的做法是让 ConfigurationDesk 作为 I/O 定义的唯一来源,Simulink 通过 RTI 引用它。

ControlDesk 是试验运行时的操作台,用于在线观测变量、调整参数、记录数据、标定曲线。AutomationDesk 则在其之上提供自动化测试能力,可以用 Python 或其自有脚本语言编写测试序列,自动执行“设置参数—采集数据—判断结果”的循环。两者配合,才能把一次性的手动验证变成可重复的回归测试。

MicroAutoBox 算法验证工具链与数据流 建模与代码生成层 MATLAB / Simulink 模型 RTI 库 I/O 驱动块 硬件配置与集成层 ConfigurationDesk I/O 通道 / CAN 报文定义 试验运行与自动化层 ControlDesk 在线观测 AutomationDesk 测试序列 RTI 映射 下载运行 MicroAutoBox 实时硬件 DS1501 / DS1511 / CAN / PWM / ADC / DAC 生成实时代码 硬件绑定 变量访问 / 标定 典型数据流:从模型变量到试验结果 Simulink 信号 (模型内部变量) RTI 映射通道 (硬件 I/O 地址) ControlDesk 采集 (在线变量 / 记录) AutomationDesk (自动判定 Pass/Fail) 测试报告 (结果归档)

环境搭建的第一步是版本对齐。dSPACE 工具链对 MATLAB 版本有明确的支持矩阵,例如 ConfigurationDesk 2023-B 通常对应 MATLAB R2022b/R2023a。如果 MATLAB 版本过新,RTI 库可能无法正常注册;版本过旧,则 ConfigurationDesk 的模型导入接口可能不兼容。建议在安装前先查阅 dSPACE 官方 Release Notes 中的“Supported MATLAB Versions”表格,把 MATLAB、RTI、ConfigurationDesk、ControlDesk 四者的版本锁定在同一支持组合内。

安装顺序也有讲究。推荐顺序为:先装 MATLAB,再装 RTI,然后装 ConfigurationDesk,最后装 ControlDesk 和 AutomationDesk。RTI 安装时会向 MATLAB 注册路径和库文件,如果 MATLAB 尚未安装,RTI 安装程序会跳过注册步骤,导致 Simulink 库中看不到 dSPACE 模块。安装完成后,可以在 MATLAB 命令窗口执行 rti_version 或查看 ver 输出,确认 RTI 已正确注册。

接下来是 ConfigurationDesk 中的硬件描述。新建工程后,需要选择目标硬件类型(如 MicroAutoBox II 1401/1511),然后添加 I/O 模块。以 DS1511 为例,它提供多路 ADC、DAC 和数字 I/O。在 ConfigurationDesk 中,每一路通道都要命名并分配方向。例如把 ADC 通道 1 命名为 PedalPos,方向为输入,量程设为 0–5 V;把 DAC 通道 1 命名为 ThrottleCmd,方向为输出。这些名称会作为 RTI 块的接口名出现在 Simulink 中,因此命名应遵循项目统一的信号命名规范,避免使用中文或空格。

CAN 通信的配置也在 ConfigurationDesk 中完成。需要导入 DBC 文件或手动定义报文,指定 CAN 通道、波特率(常见 500 kbps)、报文 ID 和信号布局。配置完成后,RTI 库中会出现对应的 CAN 收发块,Simulink 模型通过它们与总线上的其他 ECU 交换数据。这里有一个容易忽略的细节:CAN 报文的周期和超时监控参数需要在 ConfigurationDesk 中设置,而不是在 Simulink 中,否则运行时可能收不到预期的超时标志。

Simulink 侧的集成配置包括几个关键设置。在模型配置参数中,求解器应选择定步长(Fixed-step),步长与实时任务周期一致,例如 1 ms 或 5 ms;系统目标文件选择 rti1401.tlc 或对应硬件的 TLC 文件。然后从 RTI 库中拖入与 ConfigurationDesk 中定义一致的 I/O 块,把模型信号连接到对应通道。完成编译后,ConfigurationDesk 会生成一个包含硬件配置和模型代码的工程,通过 ControlDesk 下载到 MicroAutoBox。

ControlDesk 的工程配置通常从导入 ConfigurationDesk 生成的 .sdf 或 .a2l 文件开始。导入后,ControlDesk 会自动识别可观测变量和可标定参数。建议在 Layout 中按功能分组建立仪表盘:例如把踏板位置、节气门指令、电机转速放在同一组,把故障标志和状态机当前状态放在另一组。变量采集的采样率应与模型步长匹配,过高的采样率会占用大量内存,过低则可能漏掉快速瞬变。

AutomationDesk 的测试序列通常以 ControlDesk 工程为基础。一个典型的自动化测试流程是:加载工程 → 设置初始参数 → 启动测量 → 施加激励(如阶跃踏板信号)→ 等待稳定 → 采集响应数据 → 与期望范围比较 → 记录 Pass/Fail。AutomationDesk 支持调用 ControlDesk 的变量读写接口,也支持直接读取测量文件进行后处理。测试用例应覆盖正常工况、边界工况和故障注入三类场景,每类至少一条用例,才能形成有意义的回归测试集。

环境搭建完成后,建议做一次“最小闭环验证”:在 Simulink 中建立一个仅包含一路 ADC 输入和一路 DAC 输出的模型,经 RTI 映射、ConfigurationDesk 配置、ControlDesk 下载后,用信号发生器给 ADC 输入一个 1 kHz 正弦波,在 ControlDesk 中观察 DAC 输出是否跟随。这个验证能同时确认硬件通道、RTI 映射、下载链路和在线观测四个环节是否全部打通。
常见问题:下载后 ControlDesk 中变量显示为灰色或无法访问,通常是因为该变量在 Simulink 中未被标记为可观测(缺少 rti 观测属性),或 ConfigurationDesk 中未将该信号加入测量列表。另一个高频问题是 CAN 通信无数据,需检查 ConfigurationDesk 中的波特率与总线实际波特率是否一致,以及终端电阻是否匹配。

最后需要强调的是,工具链的配置信息应当纳入版本管理。ConfigurationDesk 工程文件、ControlDesk Layout、AutomationDesk 测试序列以及 Simulink 模型,都应放在同一个版本库中,并记录各工具的版本号。这样在换机复现或团队协作时,才能避免“在我电脑上能跑”的困境。环境搭建不是一次性任务,而是随着项目推进需要持续维护的基础设施。