CAPL Script

测试前先识别同一条 CAN 报文流

先写清楚筛选条件

同时存在两条总线、多个方向或不同帧格式时,“检查 ID 0x200”并没有定义完整的检查对象。测周期或判断响应成功之前,先明确统计哪些事件。本页使用一个受控的经典 CAN 示例:CAN1、标准标识符 0x200、接收方向的数据帧、一段连续记录。载荷约定为恰好两个字节,byte 0 是标记 0xAA,byte 1 是每发送一次就递增的计数器,取值从 0 到 15,再回到 0。这是为分析构造的协议,不是车辆信号定义,也不是 CANoe 实测结果。

筛选维度 为什么需要它 省略后的反例
采集位置与 CAN 通道 确定在哪里观察 将 CAN2 的同 ID 报文当成 CAN1 的第二个发送者
ID 数值与标准/扩展格式 数值不能完整表示帧的身份 合并标准 0x200 与扩展 0x200
该观察位置记录的方向 区分问题涉及的事件 把发送请求与接收事件计成两次到达
数据/远程帧及经典 CAN/FD 格式 确定载荷解释是否适用 把不适用的帧纳入经典 CAN 数据帧检查
记录分段 确定哪些时间戳及计数器历史可以比较 把重启误判成丢帧或时间倒退

CAPL 的 isStdId、isExtId 可以接收消息对象或标识符;授权参考资料规定,符合相应格式时返回 1。源代码声明扩展标识符时使用 x 后缀。导出 ID 列时若抹掉帧格式,只保留数字,不能再假设它能唯一识别报文流。

本页要求先配置并核实经典 CAN 测试流。在含 FD 流量的总线上,应查阅当前工具版本支持的帧格式筛选与长度访问方法,再调整例子。不能因为载荷很短就认定它是经典帧,也不能把经典 CAN 中按 DLC 判断字节数的用法当成通用 FD 规则。本页不编造跨版本通用的 FD 选择器。

对于实际载荷长度,授权参考资料给出了 long canGetDataLength(message msg),返回 0 到 64 个有效载荷字节。使用前应核实当前版本是否支持。长度结果回答的是有多少个有效字节,不能代替“哪些帧格式属于目标流”的判断。

报文筛选和载荷验收分开记录

先按通道、格式、ID、方向和帧类型选择目标数据帧,保留其中长度错误、标记错误的帧,再逐个检查载荷。如果直接删掉不合格载荷,真实到达的目标帧会从数据集中消失,看起来像少发或漏收了一帧。

每条原始记录都应保留时间戳、筛选结果和排除原因。报文收发教程展示了先检查方向和 RTR,再读取字节的顺序。只有采用本页示例协议时,才应把长度条件收紧为恰好两个字节;实际 ECU 定义可能不同。CAN 帧合法,不等于应用消息符合要求。

用计数器检验假设,不直接宣布根因

下表是完成报文流筛选和载荷检查后的人造数据:

时间戳(ms) 计数器 观察结论
0 14 建立基线
100 15 符合预期的下一值
200 0 符合预期的回绕,单凭此处不能说发生重启
400 2 没有观察到中间一个计数值
400 2 相同时间戳与计数值,需要继续核查

在这份特定协议下,可计算 d =(当前值 − 前值 + 16)对 16 取模。d 为 1 是预期递增,为 0 表示计数值重复,为 2 提示中间一个值没有被观察到。这个解释要求记录有序、期间没有重置,且相邻观测之间递增次数少于 16。如果已经走完一个完整计数周期,相同公式就有歧义。若实际协议只在数据改变时递增,必须另定判断规则。

200 到 400 ms 的长间隔与 0 到 2 的计数变化,都符合“可能少了一次观测”的假设。但它们不能证明发送者确实发过计数值 1,不能证明物理总线丢帧,也无法定位遗漏发生在哪一层。最后一行可能是导出时重复的行、应用重复发送的值,也可能是显示精度舍入后时间相同的另一帧。在原始证据区分这些解释之前,不要先删掉它。

找到证据最先不一致的位置

依次比较发送端预期序列、原始采集记录、CAPL 观察输出和导出文件。匹配时同时核对帧身份与计数器,不能只比较显示出来的时间字符串。如果原始记录含计数值 1,而 CSV 没有,先查导出筛选条件。如果原始记录也没有,应结合另一个配置正确的观察点与发送端状态继续检查;单列 CSV 无法判定物理原因。

单独进行的检查 预期分类 应保留的依据
一帧匹配的两字节数据 属于目标流,载荷通过 原始行及两个字节
CAN2 的同数值 ID,或扩展格式同数值 ID 不属于本页目标流 排除原因
匹配的数据帧只有一个字节 属于目标流,载荷不通过 长度不符,不能记作“没有帧”
计数值 15 后接 0 在本页协议下正常回绕 连续记录分段及两条原始行
计数器归零前发生重启 新建比较分段 重启依据与新基线
同一帧被导出两次 核对是否为重复行 去重前的原始采集行

确认报文流之后,再按时间戳教程导出到报文间隔分析工具。计算器看不到 ID、计数器和载荷,不能代替上述分类。如果要判断命令执行成功,还需按测试模块教程加入应用响应和有界等待;匹配报文到达只是一部分证据。

资料依据与验证边界

API 细节核对了授权的 Vector on message、消息声明、DIR、RTR、isStdId/isExtId、canGetDataLength 参考资料。筛选约定、人造数据及检查矩阵是本站独立分析,没有声明经过编译、硬件采集或 CANoe 运行。复现时请记录工具版本、节点位置、通道映射和实际协议定义。更多边界见关于本站。