2、车载网络演进:从CAN/LIN到FlexRay再到以太网,为什么需要TSN?

2.1 从CAN/LIN说起:那些年我们用的总线

做车载网络这么多年,我最早接触的就是CAN总线。说实话,CAN总线真是个好东西——简单、可靠、成本低。你想想看,一根双绞线就能把几十个ECU串起来,这在90年代简直是革命性的。

但CAN也有它的局限。我在项目中遇到过一个问题:当车上ECU数量超过30个时,CAN的仲裁机制就开始吃力了。为什么?因为CAN是事件触发的,优先级低的报文可能一直发不出去。我记得有一次调试ADAS系统,雷达数据总是被动力总成的报文抢占,导致预警延迟了200ms——这在高速行驶时可是要命的。

LIN总线就更简单了,说白了就是CAN的廉价替代品。车窗、座椅、后视镜这些对实时性要求不高的节点,用LIN就够了。但它的速率只有20kbps,连个OTA升级都跑不动。

关键数据对比:

  • CAN 2.0:最高1Mbps,8字节数据场
  • CAN FD:最高8Mbps,64字节数据场
  • LIN 2.1:最高20kbps,8字节数据场

2.2 FlexRay:一个被低估的过渡方案

到了2000年代中期,宝马牵头搞了FlexRay。我当时参与过一个基于FlexRay的线控制动项目,说实话,这玩意儿确实比CAN强——双通道冗余、时间触发、10Mbps的速率。

但FlexRay有个致命问题:太贵了。一个FlexRay节点的成本是CAN的3-5倍,而且开发工具链极其复杂。我记得调试FlexRay的时钟同步时,光示波器就烧了两台——因为信号抖动要求太严格了。

嗯,这里要注意:FlexRay虽然没普及,但它为后来的TSN打下了基础。时间触发、确定性调度这些概念,都是从FlexRay那会儿开始成熟的。

避坑指南:

我曾经在FlexRay项目中犯过一个低级错误——把总线长度算错了。FlexRay要求总线长度不超过24米,我多接了2米,结果整个网络的同步都乱了。后来查了三天才发现是这个问题。所以啊,物理层的约束一定要严格遵守。

2.3 以太网来了:带宽的解放

2010年以后,车载以太网开始冒头。为什么?因为摄像头、激光雷达、高精地图这些玩意儿,CAN和FlexRay根本扛不住。一个100Mbps的摄像头,用CAN传得传好几天。

BroadR-Reach(现在的100BASE-T1)是个转折点。它用一对非屏蔽双绞线就能跑100Mbps,而且成本比FlexRay还低。我参与的第一个车载以太网项目是环视系统,4个摄像头通过交换机汇聚到域控制器,延迟不到1ms——这在以前想都不敢想。

但问题来了:以太网是“尽力而为”的传输。什么意思?就是它不保证数据什么时候到。你想想看,如果制动指令和娱乐视频在同一个网络里抢带宽,制动指令被堵住了怎么办?

重要提醒:

普通以太网在车载场景下有三个致命问题:

  1. 延迟不确定:数据包可能被排队,延迟从微秒级到毫秒级不等
  2. 时钟不同步:各个ECU的时间基准不一致,导致数据融合出错
  3. 带宽竞争:高优先级流量可能被低优先级流量阻塞

2.4 为什么需要TSN?

说白了,TSN就是给以太网装上“交通管制系统”。它解决的就是上面那三个问题。

我举个例子:在自动驾驶系统中,激光雷达每秒产生30万个点云数据,摄像头每秒30帧1080p视频,毫米波雷达每秒1000个目标报告。这些数据都要在1ms内到达域控制器做融合。普通以太网能做到吗?做不到。但TSN可以。

TSN的核心能力有三个:

  • 时间同步(802.1AS):所有节点共享同一个时钟,精度达到纳秒级。我在项目中实测过,用gPTP协议同步后,主从时钟偏差不超过100ns。
  • 流量调度(802.1Qbv):给关键数据开“绿色通道”。比如制动指令走最高优先级队列,视频流走普通队列,互不干扰。
  • 帧抢占(802.1Qbu):低优先级帧正在传输时,高优先级帧可以打断它。这个功能在紧急制动场景下特别有用。

TSN vs 传统以太网:

特性 传统以太网 TSN
延迟 1-100ms(不确定) <10μs(确定)
抖动 <1μs
时钟同步 纳秒级
带宽利用率 低(CSMA/CD) 高(时间触发)

2.5 我的建议:什么时候上TSN?

不是所有车都需要TSN。我个人建议分三种情况:

  • L2级以下:CAN FD + 以太网就够了,没必要上TSN
  • L2-L3级:建议在传感器融合和域控制器之间用TSN
  • L4级以上:全车网络都得上TSN,包括网关、域控制器、执行器

我记得有个项目,客户非要全车TSN,结果成本增加了30%,但实际L2级功能根本用不上。所以啊,技术选型要务实,别为了TSN而TSN。

经验之谈:

如果你刚开始接触TSN,我建议先从时间同步(802.1AS)入手。这是TSN的基础,也是最容易出问题的地方。我曾经在一个项目中,因为晶振精度不够,导致时钟同步周期性地漂移,查了两个月才发现是硬件选型的问题。

好了,这一章就聊到这儿。下一章我们深入讲讲TSN的核心协议栈,特别是802.1Qbv的调度机制——这可是TSN的“灵魂”。