3. 创建第一个自动化测试工程
前两节我们理解了 AutomationDesk 在 dSPACE 工具链中的位置,以及测试工程的基本组成。这一节把认知落到手上:从零新建一个工程,连上目标平台,写一段最简单的信号读写序列,执行它,并打开测试报告确认结果。整个过程走完一遍,你就拥有了一个可以反复扩展的最小骨架。
需要先明确本节使用的示例对象。我们假设目标平台是一台运行 dSPACE 实时系统的硬件(例如 MicroAutoBox 或 SCALEXIO),其中有一个可读写的标定量 Gain(增益,初值 1.0)和一个可观测的测量量 Speed(转速,单位 rpm)。测试意图是:把 Gain 写成 2.0,读取 Speed,判断它是否落在合理区间内。这些数值属于教学示例,实际工程中请替换为你模型里真实存在的变量名与量程。
第一步:新建工程与目录结构
启动 AutomationDesk,选择 File → New → Project,指定工程名(如 FirstTest)和存放路径。AutomationDesk 会生成一个工程容器,内部通常包含测试序列文件(.a2l 关联的变量描述、.seq 或工程内的序列节点)、实验目录和报告输出目录。建议在工程根下手工建立三个子目录:Sequences 放测试序列,Config 放平台连接配置,Reports 放执行报告。目录清晰,后续几十个用例才不会乱。
新建工程后第一件事不是急着写用例,而是确认变量描述文件已挂载。AutomationDesk 通过 A2L 文件获知目标平台上每个变量的名称、地址、数据类型和量程。若 A2L 未加载,后面拖拽变量时会发现列表为空。在工程属性里指向你的 .a2l 文件,加载成功后变量树会出现在左侧资源面板中。
第二步:配置目标平台连接
连接配置决定 AutomationDesk 用什么通道与实时系统通信。常见方式有两种:通过 dSPACE 的 ControlDesk 或 RTI 接口直连硬件,或通过 XIL API 走标准映射层。入门阶段推荐先用与你的硬件匹配的直连方式,配置项少、报错直观。
在 Config 下新建一个平台配置,关键参数包括:平台类型(如 SCALEXIO / MicroAutoBox)、通信接口(如 Ethernet,示例 IP 192.168.0.10)、以及 A2L 文件路径。配置完成后点击 Test Connection,若返回 “Connected” 且能列出变量,说明链路通了。若失败,优先检查 IP 是否与硬件实际地址一致、网线是否插在实时网口、以及防火墙是否拦截了通信端口。
第三步:编写信号读写测试序列
在 Sequences 下新建一个序列,命名为 SignalRW_Test。AutomationDesk 的序列由若干步骤(Step)组成,每个步骤对应一个动作。入门序列只需要四类步骤:写标定量、等待、读测量量、判断。
具体操作:从左侧变量树把 Gain 拖入序列,选择动作类型 Write,在参数栏填入 2.0。接着插入一个 Wait 步骤,等待 200 ms,让实时模型完成一个控制周期并让 Speed 稳定下来。然后拖入 Speed,选择 Read,把读到的值存入一个局部变量,例如 speed_actual。最后插入一个 Check 或 If 步骤,判断 speed_actual 是否在 [0, 3000] rpm 之间;若在范围内则标记 Pass,否则标记 Fail 并记录实际值。
这里有一个容易忽略的细节:写入 Gain 后,实时模型不会立刻改变 Speed,因为模型按固定周期(例如 1 ms 或 10 ms)运算。等待 200 ms 是给模型留出足够的响应时间。如果你的模型响应更慢,这个等待时间要相应加长。等待时间过短会导致读到旧值,从而产生“假失败”。
Sequence: SignalRW_Test
1. Write Gain = 2.0
2. Wait 200 ms
3. Read Speed -> speed_actual
4. Check speed_actual in [0, 3000] rpm
Pass -> 记录 "Speed within range"
Fail -> 记录 "Speed out of range: " + speed_actual
第四步:执行并查看测试报告
点击工具栏的 Run 按钮执行序列。执行过程中,AutomationDesk 会逐步高亮当前步骤,并在下方日志窗口输出每一步的结果。执行结束后,打开 Reports 目录下的报告文件(通常是 HTML 或 XML 格式),你会看到每个步骤的状态、实际值、期望值和判定结果。
判断测试是否通过,不能只看报告顶部的绿色或红色。要展开到具体步骤,确认 Gain 确实被写成了 2.0,Speed 的读取值确实落在区间内。如果 Gain 写入失败,报告会显示写入错误;如果 Speed 读取超时,会显示通信超时。这些信息比一个笼统的 “Fail” 有用得多。
Gain 改成 3.0 再跑一次,观察 Speed 是否随之变化。如果两次结果完全相同,说明你的读取可能没有真正连到实时变量,需要回头检查 A2L 映射和连接配置。常见问题与排查方向
入门阶段最容易卡在三个地方。第一,连接失败:检查 IP、网口和防火墙,确认 Test Connection 能返回变量列表。第二,变量读不到:确认 A2L 文件与目标平台上的实际变量一致,变量名大小写敏感。第三,判定总是 Fail:检查等待时间是否足够、量程区间是否写错、以及 Speed 的单位是否与 A2L 中定义的一致。