3. 自动化测试工程环境搭建
MicroAutoBox 原型自动化测试工程的环境不是“装几个软件”那么简单,它本质上是一条从模型到实时硬件、再到自动化脚本与持续集成的工具链。各组件之间存在明确的版本依赖与调用关系:MATLAB/Simulink 负责模型与代码生成,dSPACE RTI 与 ConfigurationDesk 负责把模型编译为可在 MicroAutoBox 上运行的实时程序,AutomationDesk 负责测试序列编排,Python/.NET API 负责把测试接入外部脚本与 CI,Git 与 Jenkins 负责版本管理与自动触发。本节按这条链路说明安装顺序、关键配置与验证方法。
一、工具链的依赖关系与安装顺序
这条工具链的安装顺序不能随意颠倒,核心原因是 dSPACE 的 RTI 与 AutomationDesk 都以 MATLAB 为宿主环境,通过 MATLAB 的路径与注册机制加载。推荐顺序为:先装 MATLAB/Simulink,再装 dSPACE 软件(RTI、ConfigurationDesk、ControlDesk、AutomationDesk),然后配置 Python/.NET 运行环境,最后接入 Git 与 Jenkins。
二、MATLAB/Simulink 与 dSPACE RTI 的配置要点
安装 MATLAB 时需勾选 Simulink、Simulink Coder、Embedded Coder 以及 MATLAB Compiler SDK(AutomationDesk 的部分接口依赖它)。dSPACE 安装程序会自动检测已安装的 MATLAB 版本,若版本不匹配会拒绝安装或提示降级。安装完成后,在 MATLAB 命令窗口执行 rtw_ver 与 dscheck 可确认 RTI 是否注册成功。
关键配置是让 Simulink 能找到 dSPACE 的编译工具链。在 MATLAB 中运行 setenv('DSPACE_ROOT','C:\dSPACE\2023-A'),并在 Simulink 的 Configuration Parameters 中把 System target file 设为 rti1005.tlc(对应 MicroAutoBox 的处理器类型),Language 设为 C。此时点击 Build 应生成 .ppc 或 .obj 文件,而不是报“找不到 rti 目标”。
% 验证 RTI 注册与目标文件可用性
rtw_ver
dscheck
% 检查目标文件是否存在
which rti1005.tlc
% 预期输出:C:\dSPACE\2023-A\MATLAB\rti1005.tlc
三、AutomationDesk 与 Python/.NET API 的接入
AutomationDesk 安装后需在 MATLAB 中注册其 COM 接口,执行 regmatlabserver 并确认 AutomationDesk 的 bin 目录已加入系统 PATH。Python 侧通过 pip install dspace-automation(示例包名,实际以 dSPACE 提供的 wheel 为准)安装 API 包,.NET 侧则需安装对应版本的 Runtime 并在项目中引用 DSPACE.Automation.Api.dll。
一个典型的 Python 调用片段如下,用于启动 AutomationDesk 并加载测试序列:
from dspace_automation import AutomationDesk
ad = AutomationDesk()
ad.start()
ad.load_experiment(r"D:\tests\motor_control.adx")
result = ad.run()
print(result.passed, result.failed, result.duration)
ad.stop()
若返回 passed=12, failed=0,说明 API 链路已打通;若报连接超时,优先检查 AutomationDesk 是否以管理员权限运行,以及防火墙是否拦截了本地 COM 端口。
四、版本控制与持续集成工具链
Git 仓库建议按“模型—脚本—配置—报告”四类目录组织,模型文件(.slx)使用 Git LFS 管理,避免二进制膨胀。Jenkins 侧安装 Git、MATLAB、dSPACE 相关插件后,新建 Pipeline 任务,在 Jenkinsfile 中定义构建阶段:拉取代码、启动 MATLAB 编译、调用 Python API 执行测试、归档报告。
pipeline {
agent any
stages {
stage('Checkout') { steps { git 'git@server:macb-test.git' } }
stage('Build') { steps { bat 'matlab -batch "rtwbuild(\'motor_control\')"' } }
stage('Test') { steps { bat 'python run_tests.py --report report.xml' } }
stage('Archive') { steps { junit 'report.xml' } }
}
}
配置完成后,向仓库推送一次提交,Jenkins 应自动触发构建。观察 Console Output 中是否依次出现 Checkout、Build、Test、Archive 四个阶段,且最终显示 Finished: SUCCESS。若 Build 阶段报“rti1005.tlc not found”,说明 Jenkins 运行账户的环境变量未继承 MATLAB 的 dSPACE 路径,需在 Jenkins 全局工具配置中显式指定 MATLAB 根目录与 DSPACE_ROOT。
五、环境验证清单
| 检查项 | 验证命令/操作 | 预期结果 |
|---|---|---|
| MATLAB 与 RTI 注册 | dscheck | 显示 dSPACE 版本与 MATLAB 版本匹配 |
| 目标文件可用 | which rti1005.tlc | 返回有效路径 |
| AutomationDesk COM | Python 调用 ad.start() | 无异常,返回实例 |
| Git LFS | git lfs track "*.slx" | 生成 .gitattributes |
| Jenkins 触发 | 推送一次提交 | Console 显示 SUCCESS |