3. CANoe以太网报文捕获与离线分析
车载以太网测试的第一步不是“看波形”,而是把链路上真实流动的帧完整、可信地记录下来。CANoe 提供了三条互补的捕获路径:Trace 窗口负责实时观察与在线过滤,Ethernet Packet Builder 负责构造可控的激励帧,Logging 模块负责把原始流量落盘为可复现的日志文件。三者组合起来,才能形成“激励—捕获—回放—分析”的闭环。本节围绕这三条路径,说明如何配置、如何过滤解码,以及如何从日志中生成统计报告。
一、Trace 窗口:实时捕获与在线过滤
Trace 窗口是 CANoe 中所有总线流量的统一时间线视图。以太网帧进入 Trace 后,每一行代表一个事件,列通常包括时间戳、通道、源 MAC、目的 MAC、EtherType、VLAN、源 IP、目的 IP、协议、长度和简要信息。要让以太网帧正确显示,必须在 Measurement Setup 中把以太网通道(如 Eth 1)接入 Trace 的输入分支,并在 Hardware 配置中确认通道已绑定到正确的 VN 设备端口和 PHY 模式(100BASE-T1 或 1000BASE-T1)。
真实车载以太网流量密度很高,直接观察会被无关帧淹没。Trace 窗口的过滤分为两层:采集层过滤在硬件或驱动层丢弃不匹配的帧,降低 CPU 与磁盘压力;显示层过滤只影响视图,不改变已记录的数据。工程上建议采集层只做粗过滤(例如按 VLAN 或 EtherType 排除无关广播),显示层再做精细过滤。常用的显示过滤条件包括:按 MAC 地址(如 Eth.src == 02:00:00:00:00:01)、按 IP(如 ip.addr == 192.168.10.20)、按 UDP/TCP 端口(如 udp.port == 30490,SOME/IP-SD 常用端口)、按协议名(如 someip、doip、avb)。
过滤表达式可以保存为 Filter Set,配合快捷键在不同测试场景间切换。例如诊断场景保存一组 DoIP 过滤,音视频场景保存一组 AVTP 过滤。这样在台架联调时,工程师不必反复手写表达式。
二、Ethernet Packet Builder:构造可控激励
只被动抓包往往无法覆盖边界条件,需要主动发送构造帧。Ethernet Packet Builder 允许逐字段定义以太网帧:目的 MAC、源 MAC、可选 VLAN 标签(TPID 0x8100、PCP、DEI、VID)、EtherType,以及载荷。对于 SOME/IP 报文,可以进一步填写 Service ID、Method ID、Client ID、Session ID、Message Type 和 Return Code;对于 DoIP,则填写协议版本、Payload Type 和诊断报文数据。
构造时要注意三点:一是源 MAC 必须与测试设备实际使用的 MAC 一致,否则交换机或接收端的 MAC 学习表会异常;二是 VLAN 优先级 PCP 会影响 AVB/TSN 流量的转发调度,测试音视频时不能随意填 0;三是发送模式要区分单次、周期和触发发送,周期发送的间隔要与被测 ECU 的超时判定匹配。构造好的帧可以保存为模板,在后续回归测试中直接复用。
三、Logging 模块:把流量落盘
Logging 模块位于 Measurement Setup 中,与 Trace 并列接入以太网通道。它的核心配置是日志文件路径、文件格式和触发条件。CANoe 支持 BLF、ASC、PCAP/PCAPNG 等格式,其中 BLF 是 Vector 原生格式,保留通道与硬件时间戳信息最完整;PCAPNG 便于用 Wireshark 交叉验证。触发方式通常选择“测量开始即记录”,或由 CAPL 在检测到特定帧(如某条诊断请求)时触发,从而只保留关键时间窗。
长时间记录必须考虑磁盘容量。以 100BASE-T1 满负荷为例,理论线速约 100 Mbit/s,实际有效吞吐按 60% 估算约 60 Mbit/s,即约 7.5 MB/s,一小时约 27 GB。因此工程上常用环形缓冲或分段文件(如每 100 MB 一个文件),并配合采集层过滤只记录目标 VLAN。记录完成后,日志文件可在 CANoe 中离线加载,也可导出为 PCAP 交给 Wireshark 做深度解码。
四、解码:从字节流到可读语义
抓到帧只是原料,解码才能得到语义。CANoe 对 SOME/IP 的解码依赖数据库(ARXML 或 FIBEX)中的服务定义,只有 Service ID 与 Method ID 在数据库中登记,Trace 才会把载荷展开为方法名和参数值。DoIP 解码需要加载诊断描述文件(CDD/ODX),否则只能看到原始字节。AVTP 解码则依赖 AVTP 的流格式定义。
如果解码显示为“未知协议”,排查顺序是:先确认 EtherType 是否正确(SOME/IP 通常为 0x0800 承载于 IP/UDP,AVTP 为 0x22F0),再确认数据库是否加载到对应通道,最后确认 VLAN 标签是否被正确剥离。很多“解不出来”的问题,实际是 VLAN 配置与数据库通道绑定不一致造成的。
五、统计报告:把日志变成结论
CANoe 的 Statistics 与 Analysis 功能可以基于日志生成报告。常用的统计维度包括:按协议统计帧数与字节数、按源/目的地址统计流量分布、按周期帧统计发送间隔的最小值/最大值/抖动、统计诊断请求与响应的配对时延、统计丢帧与错误帧数量。对于音视频流量,还可以统计 AVTP 流的媒体时钟偏差。
下面给出一份可直接参考的统计报告字段示例,用于台架回归测试:
| 统计项 | 数据来源 | 示例值 | 判定依据 |
|---|---|---|---|
| 周期帧间隔抖动 | Trace 时间戳差值 | 10.02 ms ± 0.15 ms | 抖动 < 周期 5% |
| SOME/IP 方法响应时延 | 请求/响应时间戳配对 | 平均 3.8 ms,最大 12 ms | 最大时延 < 20 ms |
| DoIP 诊断往返时延 | DoIP 请求与响应 | 平均 18 ms | < 50 ms |
| 丢帧数 | Logging 统计 / 序列号 | 0 | 无丢帧 |
| 错误帧 / CRC 错误 | 硬件通道统计 | 0 | 无错误帧 |
20240612_v1.3_TC0201.blf。把 Trace、Packet Builder 和 Logging 三者配合使用,就能在台架上复现真实车载以太网场景:用 Packet Builder 注入边界激励,用 Trace 实时确认链路行为,用 Logging 留下可追溯的原始证据,最后通过离线解码与统计报告给出量化结论。这套流程是后续诊断测试、TSN 测试和自动化回归的基础。