CAPL Script

浏览器本地分析 · 无需上传

CAN 报文时间间隔分析工具

检查同一通道、同一报文的相邻到达间隔,定位周期波动、重复时间戳和时间倒退。

1. 输入时间戳

每行一个非负数字,可带 timestamp 表头;使用小数点。先筛选相同通道、ID、方向及帧类型,再按原始顺序导出时间戳。

最多 20,000 个时间戳。数据只保留在本页内存中,不发送到服务器,也不写入本地存储。

2. 选择单位与比较条件

目标周期和允许偏差始终使用毫秒。不填目标周期时只给出描述统计。

先准备同一条报文流

当你已有一组报文时间戳,想知道相邻报文是否按预期周期到达时,可以使用此工具。导出前先按通道、报文 ID、收发方向和帧类型筛选,保留原始记录顺序。不同通道可能使用相同的数字 ID;混合两条报文流,可能让正常周期看起来缩短一半。

首版接受每行一个时间戳的列表或单列 CSV,不解析 ASC、BLF、报文载荷、CAN ID 或多列电子表格。筛选后只复制时间戳列。第一条非空行可以是 timestamp 表头,支持带双引号的数值、空行和 1e-3 形式的科学计数法。小数使用英文句点,行内不要加单位、注释或千位分隔符。遇到非法非空行时会停止计算并提示行号,不会跳过错误后给出看似完整的统计。

timestamp
0
0.010
0.020
0.031

这组输入应选择秒,算出的三个间隔分别为 10、10、11 ms。时间戳必须非负,换算后不超过 1,000,000,000 ms(约 11.57 天)。请使用从记录起点计算的相对时间,先转换日历时间或 Unix 时间戳;限制较大的时间原点可以减少浮点精度损失。最多支持 20,000 个样本和 1 MiB 文本。

统计量如何计算

相邻时间戳之差为 Δi = ti − t(i−1),统一换算成毫秒。N 个时间戳产生 N−1 个间隔。工具不会对输入排序,也不会跨过被排除的间隔重新连接样本。

结果 定义与解读
最小值/最大值 参与统计的最小/最大非负间隔,应先查看对应行,再判断是否异常。
均值 所有参与统计的间隔之和除以数量。一个短间隔和一个长间隔可能相互抵消。
中位数 排序后的中间值;偶数个间隔时取中间两项平均值。反映中心位置,不代表每个间隔都接近它。
P95 使用最近秩法:M 个间隔排序后,取第 ceil(0.95 × M) 项,序号从 1 开始。少量数据的 P95 可能就是最大值。
总体标准差 每个间隔与均值之差的平方求平均,再开平方,分母为 M。描述当前记录的离散程度,不是置信区间或样本估计。
周期偏差 实际间隔减目标周期。正值表示间隔偏长,负值表示偏短。
超差 绝对偏差严格大于允许值。恰好等于边界时不算超差;计算中保留很小的浮点容差以吸收减法误差。

目标周期和允许偏差始终使用毫秒,与时间戳的输入单位无关。例如目标 10 ms、允许偏差 1 ms,对应闭区间 9~11 ms。不填目标周期时,不计算偏差与超差。分布图把非负间隔分成十个等宽区间;全部相等时只有一档。区间左闭右开,最后一档包含最大值。

负间隔会标为时间倒退,并从汇总与分布中排除;原样本仍保留在序列中,下一对相邻样本继续计算。零间隔标为重复时间戳,计入统计。它可能来自重复导出或时间戳分辨率限制,不能直接证明物理总线上有两个同时发送的报文。表格序号指非空的数值样本,而非原文件行号。页面最多显示六位小数,导出的 CSV 保留 JavaScript 数值精度并包含全部间隔,不受分页限制。

可手算的例子:均值正常不等于周期稳定

点击“载入演示数据”,会得到一组人工构造的时间戳,并非车辆实测:

0, 10, 20, 31, 40, 60, 60, 70 ms

手动粘贴时请每行放一个数值。相邻间隔是 10、10、11、9、20、0、10 ms。目标周期 10 ms、允许偏差 1 ms 时,应得到:

  • 8 个时间戳、7 个非负间隔,其中 1 个重复间隔。
  • 均值 10 ms,中位数 10 ms,最小值 0 ms,最大值 20 ms。
  • P95 为 20 ms,总体标准差约 5.371884 ms。
  • 20 ms 和 0 ms 两个间隔超差;9 ms 和 11 ms 恰好在允许边界内。

20 ms 与 0 ms 在平均值中抵消,所以均值看起来正好符合目标。逐条标记、极值和离散程度揭示了仅看均值会遗漏的问题。

发现异常后怎么排查

  1. 结果差了 1,000 倍: 先检查导出单位和工具选项。切换时间戳单位不会改变目标周期使用的毫秒单位。
  2. 出现约两倍周期: 回到原始 Trace 检查对应位置,考虑记录缺口、筛选条件、发送行为改变或未观察到某次报文。仅凭时间间隔不能区分这些原因,也不能可靠计算丢帧数量。
  3. 出现零间隔: 检查导出是否重复、时间戳分辨率是否足够,以及是否混入其他报文流。在查明前保留零间隔;直接删除会改变统计分布。
  4. 出现时间倒退: 检查是否拼接了不同记录、时钟重置或导出顺序改变。应拆分独立记录再比较,排序会掩盖这些证据。
  5. 结果没有标记: 确认记录覆盖了相关工况,且目标周期与容差来自真实需求。工具不能替你选择工程验收标准。

这里测量的是观察点处的相邻到达间隔,不是端到端延迟,不能据此证明发送端调度精度、确定根因或认证系统。可导出明细并保留样本序号,回到原日志检查相应位置。项目数据仍应遵守所在组织的数据处理规定。

相关 CAPL 阅读与数据处理

可结合报文时间戳示例(英文)检查记录背景,并参考 setTimer 说明(英文)区分计时器类型与单位。代码中请求的计时器时长,与日志中观察到的报文间隔,是两个不同的量。

本计算器和解释是本站独立维护的学习内容;示例数据刻意构造,不是 CANoe 验证报告。若结果与预期不符,请通过联系与纠错提供可复现的少量人工数据和预期结果,不要发送保密日志。

从本机读取文件只会把文本放入当前页面内存。计算器不会上传输入,不会将其放进网址、Cookie 或本地存储。清空或离开页面会移除工具保留的输入;已下载的 CSV 仍保留在你的设备上。加载网页和脚本仍涉及正常的托管请求,详见隐私政策。