第4章 通信架构优化:车载以太网(TSN、AVB)与CAN/CAN FD的混合组网设计
说实话,做车载通信架构这么多年,我最大的感触就是——没有一种总线能包打天下。
CAN便宜、可靠,但带宽就那1Mbps。CAN FD快一些,8Mbps,但面对摄像头、激光雷达的数据流,还是捉襟见肘。以太网带宽大,但实时性怎么保证?
所以,混合组网是唯一出路。今天我们就聊聊,怎么把以太网(TSN、AVB)和CAN/CAN FD揉在一起,既保证带宽,又控制延迟。
4.1 为什么需要混合组网?
你想想看,一辆智能电动车里,信号分好几类:
- 控制类信号:刹车、转向、油门。延迟要求<1ms,数据量极小。CAN/CAN FD最合适。
- 诊断类信号:UDS、OTA升级。数据量大,但对实时性无要求。以太网搞定。
- 多媒体/感知类信号:摄像头视频流、雷达点云。带宽需求几百Mbps,必须上以太网。
我在项目中遇到过,有人想用CAN FD传摄像头数据,结果总线负载直接飙到90%,丢帧严重。后来老老实实加了以太网网关,问题才解决。
4.2 车载以太网的关键技术:TSN与AVB
很多人以为以太网就是“插上网线就能用”。但在车里,不行。普通以太网是尽力而为的,延迟不可控。你想想,刹车信号如果因为网络拥堵晚到10ms,后果是什么?
所以,车载以太网必须引入时间敏感网络(TSN)和音视频桥接(AVB)。
4.2.1 AVB:给音视频开绿灯
AVB最早是为了家庭影院设计的。它做了两件事:
- 时钟同步:所有节点共享一个精确时钟(IEEE 802.1AS),误差<1μs。
- 带宽预留:为音视频流预留固定带宽,保证不丢包。
我记得有一次调试全景影像系统,摄像头画面总是卡顿。查了半天,发现是AVB的流预留没配好,视频流和诊断数据抢带宽。调整优先级后,画面就流畅了。
4.2.2 TSN:让控制信号准时到达
TSN比AVB更进一步。它不仅能预留带宽,还能精确控制延迟。核心机制是:
- 时间感知整形(TAS):把时间切成一个个小窗口。控制信号在固定窗口发送,其他数据靠边站。
- 帧抢占(802.1Qbu):低优先级帧正在发送时,高优先级帧可以打断它,插队发送。
4.3 CAN/CAN FD与以太网的混合组网设计
好了,技术原理讲完了。下面说说实际怎么搭这个混合网络。
4.3.1 典型拓扑结构
我个人习惯用域控制器+网关的架构:
+-------------------+ +-------------------+
| 智能驾驶域控制器 | | 智能座舱域控制器 |
| (以太网+TSN) | | (以太网+AVB) |
+--------+----------+ +--------+----------+
| |
+----------+---------------+
|
+-------v--------+
| 中央网关 |
| (CAN FD+以太网)|
+-------+--------+
|
+-----------+-----------+
| |
+-------v--------+ +-------v--------+
| CAN FD总线 | | CAN FD总线 |
| (动力/底盘) | | (车身/舒适) |
+----------------+ +----------------+
中央网关是关键节点。它负责:
- 把CAN FD上的控制信号,转换成以太网报文,发给域控制器。
- 把域控制器的指令,转成CAN FD信号,发给执行器。
4.3.2 带宽与延迟的平衡策略
这里有个矛盾:CAN FD延迟低但带宽小,以太网带宽大但延迟相对高。怎么平衡?
| 信号类型 | 推荐总线 | 延迟要求 | 带宽需求 | 我的建议 |
|---|---|---|---|---|
| 刹车/转向控制 | CAN FD | <1ms | <1Kbps | 必须走CAN FD,不要过网关 |
| ADAS感知数据 | 以太网(TSN) | <10ms | 100Mbps+ | 使用TSN时间窗口 |
| 音视频流 | 以太网(AVB) | <50ms | 50-200Mbps | 预留带宽,避免拥塞 |
| 诊断/OTA | 以太网(普通) | 无要求 | 突发大流量 | 利用空闲带宽,优先级最低 |
4.4 网关设计的关键点
网关是混合组网的大脑。设计不好,整个网络都会出问题。
4.4.1 路由策略
我建议采用信号级路由,而不是报文级路由。什么意思?
- 报文级路由:整个CAN FD报文转发到以太网。浪费带宽,因为以太网报文头很大。
- 信号级路由:只提取需要的信号,打包成以太网报文。效率高,但需要网关有较强的处理能力。
4.4.2 延迟预算分配
一个信号从传感器到执行器,总延迟是各段延迟之和。我一般这样分配:
总延迟预算:10ms
├── CAN FD发送延迟:1ms
├── 网关处理延迟:2ms(信号提取+路由)
├── 以太网传输延迟:1ms(TSN保证)
├── 网关处理延迟:2ms(信号转换)
└── CAN FD接收延迟:1ms
余量:3ms
4.5 实际项目中的经验总结
最后,分享几个我在项目中踩过的坑:
- 时钟同步不能省:TSN和AVB都依赖精确时钟。如果网关和域控制器的时钟不同步,时间窗口就会错位,导致丢包。我建议用IEEE 802.1AS,精度在1μs以内。
- 带宽预留要留余量:AVB的带宽预留,我一般留20%的余量。因为摄像头数据流可能有突发峰值,预留太满会导致丢帧。
- CAN FD的负载率不要超过50%:虽然CAN FD理论带宽8Mbps,但负载率超过50%后,延迟会急剧增加。我一般控制在30%以下。
- 以太网不要用Hub,用Switch:Hub是共享带宽,Switch是交换带宽。在车里,必须用支持TSN的Switch,才能保证每个端口的带宽独立。
嗯,通信架构优化,说白了就是把合适的信号,放在合适的总线上。没有银弹,只有权衡。希望这些经验能帮你少走弯路。