2. 车云通信基础

做车联网,第一关就是搞懂车上的网络。很多人觉得这是硬件工程师的事,其实不然。你设计的通信协议最终要跑在CAN总线上,或者通过车载以太网传到T-Box。不懂底层网络,协议调优就是空中楼阁。

我个人习惯,先看物理层再看协议层。车上的网络环境跟IT机房完全不同——温度高、震动大、电磁干扰强。嗯,咱们先从最经典的CAN总线说起。

2.1 CAN总线基础

CAN(Controller Area Network)是博世在80年代开发的。到现在快40年了,依然是车载网络的中流砥柱。为什么?因为它可靠、实时、成本低。

核心要点:CAN总线是差分信号传输,两条线(CAN_H和CAN_L)绞在一起。这种设计抗干扰能力极强。我在项目中遇到过,某次EMC测试不过,最后发现是CAN线双绞节距不对,调整后直接通过。

2.1.1 CAN的帧结构

CAN有四种帧:数据帧、远程帧、错误帧、过载帧。我们最常用的是数据帧。标准CAN(2.0A)是11位ID,扩展CAN(2.0B)是29位ID。

字段 长度 说明
SOF 1 bit 帧起始,同步信号
ID 11/29 bit 标识符,决定优先级
RTR 1 bit 远程帧标志
DLC 4 bit 数据长度,0-8字节
Data 0-64 bit 实际数据
CRC 15 bit 循环冗余校验
ACK 2 bit 应答槽
EOF 7 bit 帧结束

你想想看,一帧最多8字节数据。这就是为什么车云通信要做数据压缩和聚合。我曾经见过一个项目,把10个传感器信号塞进一帧CAN报文里,位域用得那叫一个精细。

2.1.2 CAN的仲裁机制

CAN总线是多主架构。多个节点同时发送时,ID小的优先。这是通过“线与”逻辑实现的——显性位(0)覆盖隐性位(1)。

避坑指南:我曾经在项目里把两个ECU的CAN ID设反了。结果高优先级的报文一直抢不到总线,导致某个关键信号延迟超过50ms。整车厂直接打回。记住:ID越小优先级越高,0是最高优先级。

2.1.3 CAN的速率与距离

CAN的速率跟总线长度成反比。标准CAN最高1Mbps,但长度限制在40米以内。车上一般用250kbps或500kbps。

  • 125kbps:车身控制(门窗、灯光),总线长度可达500米
  • 250kbps:舒适系统(空调、座椅),常用速率
  • 500kbps:动力系统(发动机、变速箱),长度约100米
  • 1Mbps:高速控制,长度不超过40米

为什么速率上不去?因为CAN是事件触发型,所有节点共享总线。速率高了,信号反射和衰减就严重。说白了,这是物理层的硬约束。

2.2 车载以太网入门

CAN总线虽然可靠,但带宽太低了。8字节一帧,1Mbps封顶。现在车上摄像头、雷达、激光雷达的数据量动辄几百Mbps。怎么办?上以太网。

车载以太网跟IT以太网不太一样。它用的是单对非屏蔽双绞线(UTP),而不是标准的四对线。这样能减重、降成本。标准是IEEE 802.3bw(100BASE-T1)和802.3bp(1000BASE-T1)。

关键区别:车载以太网是点对点连接,不像CAN那样挂总线。每个节点通过交换机互联。这带来了更高的带宽和更低的延迟,但也意味着拓扑更复杂。

2.2.1 车载以太网的分层架构

车载以太网遵循OSI模型,但做了不少裁剪。我重点说几个跟车云通信相关的层:

OSI层 车载以太网实现 说明
应用层 SOME/IP, DDS, HTTP 服务发现、远程过程调用
传输层 TCP, UDP 可靠/不可靠传输
网络层 IPv4/IPv6 地址分配、路由
数据链路层 802.1Q (VLAN), 802.1AS (时间同步) 优先级、时钟同步
物理层 100BASE-T1, 1000BASE-T1 单对线、PHY芯片

我个人最关注的是SOME/IP。它是Scalable service-Oriented MiddlewarE over IP的缩写。说白了,就是让ECU之间能像微服务一样互相调用。这在车云通信里特别有用——云端可以直接调用车上的服务接口。

2.2.2 时间敏感网络(TSN)

车载以太网要解决一个核心问题:实时性。普通以太网是“尽力而为”的,但车上有些信号必须准时到达。比如刹车信号,延迟超过10ms就可能出事故。

TSN是一组IEEE 802.1标准,包括:

  • 802.1AS:时钟同步,精度可达微秒级
  • 802.1Qbv:时间感知整形,给关键流量预留时间槽
  • 802.1Qci:流过滤和监管,防止异常流量冲击

注意:TSN不是开箱即用的。你需要配置时钟域、门控列表、流过滤规则。我曾经在一个ADAS项目里,因为TSN配置错误,导致摄像头数据流和雷达数据流在交换机里冲突,整个感知系统卡死。排查了三天才找到原因。

2.3 车载网络拓扑结构

了解了CAN和以太网,咱们看看它们怎么连在一起。车载网络拓扑经历了三代演变。

2.3.1 传统拓扑:CAN总线为主

早期车辆以CAN总线为核心,所有ECU挂在一两条总线上。典型结构:

  • 动力CAN:发动机、变速箱、ABS,速率500kbps
  • 车身CAN:门窗、灯光、座椅,速率125kbps
  • 诊断CAN:OBD接口,速率250kbps

这种拓扑简单,但问题也很明显:所有节点共享带宽,一个节点出问题可能拖垮整条总线。

2.3.2 域控制器架构

现在主流是域控制器架构。把车辆功能分成几个域:

域 包含ECU 网络类型
动力域 发动机、变速箱、电池管理 CAN FD / 以太网
底盘域 ABS、ESP、转向 CAN FD
车身域 门窗、灯光、空调 CAN / LIN
信息娱乐域 导航、音响、仪表 以太网
ADAS域 摄像头、雷达、激光雷达 以太网

每个域有一个域控制器(DCU),负责域内ECU的管理和跨域通信。域控制器之间通过车载以太网互联。

2.3.3 中央计算平台架构

这是未来的趋势。一个或两个中央计算平台(如NVIDIA Orin、高通Snapdragon Ride)接管所有计算任务。传感器只负责采集数据,通过以太网传给中央平台。

这种架构的好处是算力集中、软件升级方便。但挑战也大:中央平台一旦挂了,全车瘫痪。所以必须有冗余设计。

经验之谈:我在设计中央计算平台网络时,用了双冗余以太网。主链路和备份链路同时运行,故障切换时间控制在5ms以内。这个指标是通过802.1AS时间同步和802.1Qbv门控调度实现的。

2.4 本章知识体系

下面这张图总结了车载网络的整体结构。你可以看到CAN总线和以太网如何共存,以及它们各自的位置。

车载网络拓扑结构图 车载网络拓扑结构 T-Box / 车云网关 中央计算平台 动力域控制器 底盘域控制器 车身域控制器 ADAS域控制器 车载以太网骨干(1000BASE-T1 / 100BASE-T1) ECU 1 ECU 2 ECU 3 ECU 4 ECU 5 说明: • CAN总线用于动力、底盘、车身域内的实时控制信号(250kbps-1Mbps) • 车载以太网用于域间通信和ADAS/信息娱乐数据(100Mbps-1Gbps) • T-Box通过4G/5G连接云端,实现车云通信

从这张图你能看到,车载网络是一个分层结构。底层是CAN/LIN总线,负责实时控制;中层是域控制器,做协议转换和数据聚合;上层是中央计算平台和T-Box,负责跨域协同和车云通信。

搞懂了这些,你才能设计出合理的车云通信协议。比如,哪些信号走CAN,哪些走以太网?数据在域控制器里怎么聚合?T-Box怎么跟云端同步?这些问题的答案,都藏在车载网络的基础里。