1. 课程导入与测试对象界定

在整车电子电气架构从分布式 ECU 向域集中、中央计算演进的过程中,网关(Gateway)始终是连接不同总线网段、不同通信协议、不同速率等级的关键节点。它既要完成报文的路由转发,又要在 CAN、CAN FD、LIN、FlexRay、以太网等异构网络之间做协议转换与信号映射,还要在多网段并发通信时保证时序、带宽与安全策略的一致性。本课程围绕“如何用 CANoe 对网关与多总线系统做工程化测试”展开,本章先界定学习目标、核心概念与整体框架,明确后续 29 章要反复操作的测试对象。

一、学习目标:从“会用 CANoe”到“能测网关”

CANoe 本身是一个集仿真、测量、诊断、标定于一体的总线开发与测试工具。但会打开工程、会看 Trace 窗口,并不等于能测网关。本课程的学习目标分为三层:

  • 概念层:理解网关路由表、协议转换、信号映射、多总线协同、残余总线仿真(RBS)等术语的准确含义,能区分“透传”“路由”“转换”“聚合”四类行为的差异。
  • 操作层:能在 CANoe 中建立多通道工程,配置 CAN/CAN FD/LIN/以太网通道,加载 DBC/ARXML/Fibex 数据库,编写 CAPL 或使用 Panel 构造激励,采集并解析跨网段报文。
  • 工程层:能针对网关设计测试用例,覆盖路由正确性、时延、丢帧、错误帧处理、总线负载、休眠唤醒、诊断路由等场景,并依据测量数据判定通过或失败。

这三层目标对应不同的验收方式:概念层用判断题和术语辨析检验;操作层用“能否在 10 分钟内搭出一个双通道 CAN 路由测试环境”检验;工程层用一份完整的测试报告检验。后续章节会逐步把这三层目标落到具体操作上。

二、核心概念:网关到底在做什么

网关最本质的工作可以概括为“收—判—转—发”四个动作。以一条来自动力 CAN 的报文为例:网关从 CAN1 通道接收帧,根据报文 ID 查路由表,判断该报文是否需要转发到 CAN2 或以太网;若需要,则按目标网段的帧格式重新封装(例如 CAN 经典帧转 CAN FD 帧,或 CAN 信号打包进以太网 SOME/IP 报文),最后从目标通道发出。整个过程涉及四个关键概念:

  • 路由表(Routing Table):定义“哪些 ID 从哪个通道来、到哪个通道去、以什么周期或触发条件转发”。它是网关测试的第一份输入文件,通常以 ARXML 或 Excel 形式给出。
  • 协议转换(Protocol Conversion):不同总线帧格式、位速率、数据长度不同,网关需要做帧级或信号级转换。CAN 经典帧最多 8 字节,CAN FD 最多 64 字节,以太网帧则更大,转换时可能发生信号拆分或合并。
  • 信号映射(Signal Mapping):同一物理量在不同网段可能由不同信号承载,网关需要按映射关系搬运并做必要的缩放、偏移、字节序转换。
  • 多总线协同(Multi-bus Coordination):多个网段同时通信时,网关的转发时延、缓冲区深度、优先级仲裁会相互影响,测试必须覆盖并发场景。
判断一个网关测试是否“测到位”,可以问三个问题:路由表覆盖了多少条?协议转换的边界条件(如 8 字节到 64 字节)测了吗?多网段并发时延测了吗?

三、整体框架:本课程的知识地图

本课程按“对象界定—环境搭建—单网段验证—跨网段路由—协议转换—多总线协同—异常与诊断—复盘”推进。下图给出课程的整体知识地图与测试对象之间的关系,后续章节将沿这张图逐层展开。

CANoe 网关与多总线系统测试 · 知识地图 测试对象 网关路由表 ID / 通道 / 周期 协议转换 CAN / FD / ETH 信号映射 缩放 / 偏移 / 字节序 多总线协同 并发 / 时延 / 负载 诊断路由 UDS / DoIP 休眠唤醒 网络管理 NM CANoe 工具链 工程与通道配置 CAN / FD / LIN / ETH 数据库加载 DBC / ARXML / Fibex 激励构造 CAPL / Panel / IG 测量与 Trace 报文 / 信号 / 时延 诊断控制台 UDS / 会话 / 安全 自动化测试 Test Module / vTESTstudio 测试场景 单网段功能验证 收发 / 周期 / 信号 跨网段路由 CAN1→CAN2 / ETH 协议转换边界 8B↔64B / 拆分合并 多总线并发 时延 / 丢帧 / 负载 异常与错误处理 错误帧 / 超时 / 恢复 诊断与休眠唤醒 UDS / NM / 唤醒源 判定依据 路由正确性 ID / 通道 / 数据一致 时延指标 ≤ 规定阈值 丢帧率 0 丢帧 / 允许范围 总线负载 ≤ 70% 典型上限 错误恢复 错误帧后正常通信 诊断响应 正响应 / 负响应码 测试对象 → CANoe 工具链 → 测试场景 → 判定依据,构成网关测试的完整闭环

四、测试对象界定:先分清“测什么”

很多初学者拿到一个网关项目后,第一反应是打开 CANoe 就开始发报文,结果测了半天不知道测的是哪条路由。因此本章必须先把测试对象界定清楚。一个典型的网关测试对象可以拆成六类:

测试对象典型输入观察点判定依据
路由表ARXML / Excel 路由矩阵源通道 ID、目标通道 ID、周期每条路由均能正确转发
协议转换CAN 经典帧、CAN FD 帧、以太网帧帧格式、DLC、数据长度转换后数据语义一致
信号映射DBC 信号定义、缩放偏移物理值、字节序映射前后物理值一致
多总线协同多通道并发激励转发时延、丢帧、负载时延≤阈值、无丢帧
诊断路由UDS 请求(0x22/0x2E 等)响应码、响应时间正响应正确、负响应码合理
休眠唤醒NM 报文、唤醒源网络状态、唤醒时间按规范进入/退出休眠

这张表是后续章节的“索引”。第 2~6 章会围绕路由表与工程搭建展开;第 7~12 章聚焦单网段与跨网段路由;第 13~18 章处理协议转换与信号映射;第 19~24 章进入多总线并发、时延与负载;第 25~29 章覆盖诊断、休眠唤醒与异常处理;第 30 章做综合复盘。每一章都会回到这张表,明确“本章测的是哪一行”。

五、一个最小可运行的示例:双通道 CAN 路由

为了让大家在课程一开始就有一个可触摸的对象,这里给出一个最小示例。假设网关有 CAN1(500 kbps)和 CAN2(500 kbps)两个通道,路由表规定:CAN1 上 ID 为 0x123、周期 20 ms 的报文,需转发到 CAN2,转发周期保持 20 ms,数据场原样透传。用 CANoe 验证时,关键配置如下:

// 通道配置(示例)
CAN1: 500 kbps, 采样点 80%
CAN2: 500 kbps, 采样点 80%

// 路由表(示例)
Source: CAN1, ID=0x123, DLC=8, Cycle=20ms
Target: CAN2, ID=0x123, DLC=8, Cycle=20ms
Action: PassThrough

// CAPL 激励片段(示例)
on timer tSend {
  message 0x123 msg;
  msg.dlc = 8;
  msg.byte(0) = 0x11;
  msg.byte(1) = 0x22;
  output(msg);   // 从 CAN1 发出
  setTimer(tSend, 20);
}

运行后,在 CANoe Trace 窗口中同时打开 CAN1 和 CAN2 两个通道,应能看到 CAN1 上每 20 ms 出现一帧 0x123,CAN2 上也在相近时刻出现一帧 0x123,且数据场一致。若 CAN2 上没有出现,或出现但周期明显偏离 20 ms,则说明路由未生效或时延超标。这个示例虽然简单,却已经包含了“激励—路由—观察—判定”的完整闭环,后续复杂场景都是在这个骨架上叠加协议转换、多通道并发和异常注入。

注意:示例中的 500 kbps、20 ms、0x123 均为教学假设值,实际项目应以网关路由表和总线数据库为准。不同车型的网关路由周期可能为 10 ms、50 ms 或事件触发,不能直接套用。

六、学习建议与常见误区

最后给出三条学习建议。第一,先读路由表再开 CANoe。路由表是测试的“需求文档”,不读路由表就发报文,等于没有验收标准。第二,先单通道后多通道。单通道都收不到报文时,不要急着加通道,先确认波特率、终端电阻、通道映射是否正确。第三,先功能后性能。路由能不能通是功能问题,时延和丢帧是性能问题,顺序颠倒会浪费大量时间。