2. 车载以太网协议栈与CANoe建模
车载以太网测试的第一道门槛,不是"能不能发通",而是"协议栈分层是否与真实 ECU 一致"。CANoe 对以太网的建模本质上是把 OSI 模型在工程上压缩为四层可配置对象:物理层(PHY 与线束)、数据链路层(VLAN、MAC、交换机)、网络/传输层(IP、UDP、TCP、DoIP)、应用层(SOME/IP、诊断、TSN 时间同步)。只有这四层在 CANoe 工程里被正确实例化,后续的通信矩阵导入、拓扑搭建和诊断仿真才有意义。
一、物理层:100BASE-T1 与 1000BASE-T1 的建模差异
100BASE-T1(IEEE 802.3bw)与 1000BASE-T1(IEEE 802.3bp)都使用单对非屏蔽双绞线,但速率、编码和链路建立过程不同。100BASE-T1 采用 PAM3、66.67 MBd,全双工通过回声消除实现;1000BASE-T1 采用 PAM3、750 MBd,需要更严格的回波损耗与模式转换指标。在 CANoe 中,物理层并不由软件"仿真",而是通过 VN5640、VN5620 等以太网接口卡与真实 PHY 对接,或在纯仿真场景下用 Channel 抽象表示。
建模时需要在 CANoe 的 Hardware 配置中为每个以太网通道指定接口类型、主从模式(Master/Slave)和链路速率。例如将 VN5640 的 Port 1 设为 100BASE-T1 Master,用于连接被测 ECU 的 Slave PHY;Port 2 设为 1000BASE-T1,用于骨干网交换机。若速率或主从配置错误,链路无法 Link Up,此时在 CANoe 的 Trace 窗口看不到任何报文,应先检查物理层而非应用层。
二、数据链路层:VLAN 与交换机拓扑
车载以太网普遍使用 VLAN 隔离不同域(如动力、座舱、诊断)。CANoe 的以太网配置中,每个 Network 可绑定一个或多个 VLAN ID,报文在 Trace 中会显示 VLAN 标签。交换机建模有两种方式:一是用真实交换机(如中央网关),CANoe 仅作为节点接入;二是用 CANoe 的 Switch 模块或 CAPL 实现虚拟交换,把多个端口映射到同一 VLAN 广播域。
拓扑搭建时,建议先在 CANoe 的 Network Topology 视图中画出节点与交换机的连接关系,再为每条链路指定速率与 VLAN。这样通信矩阵导入后,CANoe 能自动校验报文的目的 MAC、VLAN 与端口是否匹配。
三、网络/传输层:DoIP 与 IP 配置
DoIP(Diagnostic over IP,ISO 13400)是车载诊断的 IP 承载协议,使用 UDP 13400 做车辆发现与路由激活,TCP 13400 做诊断数据传输。在 CANoe 中,DoIP 由 DoIP.dll 或 CANoe.DiVa 提供的节点实现。关键参数包括:逻辑地址(如 0x0E00 表示诊断仪,0x1000 表示网关)、VIN、EID/GID。建模时需在节点属性中填写这些值,否则路由激活会返回 NACK。
IP 层配置包括 IP 地址、子网掩码、网关。车载以太网常用静态 IP,例如诊断仪 192.168.0.10/24,网关 192.168.0.1。若使用 DHCP,则需在 CANoe 中启用 DHCP Client 并等待租约。IP 配置错误时,DoIP 的车辆识别请求(0x0001)无法收到响应。
四、应用层:SOME/IP 与 TSN
SOME/IP(Scalable service-Oriented MiddlewarE over IP)是面向服务的通信协议,包含服务发现(SD)、方法调用、事件通知和字段访问。在 CANoe 中,SOME/IP 通过 SOMEIP.dll 和 ARXML 描述文件建模。导入 ARXML 后,CANoe 会自动生成服务接口、方法、事件和字段的 CAPL 对象。例如一个车窗控制服务,服务 ID 0x1234,方法 ID 0x0001 用于上升,事件 ID 0x8001 用于位置上报。
TSN(Time-Sensitive Networking)在 CANoe 中主要涉及 802.1AS 时间同步和 802.1Qbv 时间感知整形。建模时需在交换机节点上配置 gPTP 时钟角色(Grandmaster 或 Slave),并设置门控列表。CANoe 的 TSN 配置界面允许为每个队列指定时间窗口,例如队列 0 在 0–100 μs 开放,队列 1 在 100–200 μs 开放。若时间同步未建立,TSN 调度无法生效,此时应检查 gPTP 报文的 Sync/Follow_Up 是否正常收发。
五、通信矩阵导入与拓扑搭建实操
通信矩阵通常以 ARXML 或 DBC 形式提供。在 CANoe 中,通过 File → Import → ARXML 导入后,需在 Network → Ethernet → Communication Matrix 中确认报文、PDU、信号和服务是否被正确解析。常见问题是 ARXML 中的 VLAN 与 CANoe 工程配置不一致,导致报文被丢弃。此时应在 Hardware → Ethernet → VLAN 中补齐对应 VLAN ID。
拓扑搭建完成后,建议用 Trace 窗口观察三类报文:gPTP Sync(时间同步)、SOME/IP SD OfferService(服务发现)、DoIP Vehicle Identification Request(车辆识别)。若三者均正常,说明协议栈分层建模基本正确。若某一层缺失,可按"物理层 Link → VLAN → IP → 传输层端口 → 应用层服务"的顺序逐层排查。
Ethernet Channel 可以模拟多个节点,但物理层 Link Up 需要手动置位。可在 CAPL 中调用 ethernetSetLinkStatus() 强制链路为 Up,否则仿真节点之间无法通信。完成上述分层建模后,CANoe 工程就具备了与真实车载以太网通信的基础能力。后续的 DoIP 诊断、SOME/IP 服务测试和 TSN 调度验证,都建立在这一层协议栈配置之上。