免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

从CAN到车载以太网:汽车电子电气架构通信网络演进全解析

从CAN到车载以太网:汽车电子电气架构通信网络演进全解析 1. 先来聊聊同一个话题为什么所有东西都在线车却不行2017年我参与过一个量产项目做完一轮CAN总线负载率评估之后心里特别凉。节点数从计划里的28个一路涨到46个总线负载率在某个版本里已经逼近了62%而这个数字还在涨。我当时跟系统架构师说这个项目如果这么走下去到SOP那天整个网络就是一台随时会卡死的对讲机。他问我为什么。我给他举了个例子——CAN总线的仲裁机制是优先级抢锁低优先级报文在总线忙的时候只能等待。负载率一高等待时间就没谱了而ADAS功能要求的是毫秒级的确定性通信你拿一个统计型事件去承载确定性要求这本身就是结构性的错配。后来复盘的时候我们聊到一个本质问题电子电气架构的每一次升级本质上都是通信网络的一次换血。从分布式ECU到域集中式从CAN到车载以太网从信号矩阵到SOA服务通信背后全是同一个逻辑——数据量变大了、算力要集中了、软件要迭代了原来的电话线扛不住光纤的活。这篇博文想做的事情很简单拿通信网络当主线把电子电气架构演进过程中的关键节点、技术取舍、工程落地的坑都过一遍。不管你是刚入行的工程师还是已经在做域控制器开发的老手这篇文章都值得花十五分钟看完。因为它讲的不是某一个芯片或某一个协议而是整车通信的底层逻辑。先明确三个基础概念信号、协议、物理层。信号是数据的内容比如车速、轮速、电机扭矩请求协议是信号的组织规则比如CAN的仲裁规则、SOME/IP的服务机制物理层是信号的真实载体比如双绞线、同轴电缆。这三者是一体的任何一层升级另外两层都得跟着动。传统架构的问题恰恰在于过去三十年这三层几乎没怎么变过而功能需求却爆炸了。2. 分布式时代留下的遗产CAN、LIN、FlexRay、MOST每家都辉煌过每家都有局限先说CAN。CAN是最成功的车载总线没有之一。它从博世1986年提出来到现在已经跑了快四十年今天任何一款量产车里的动力域、底盘域、车身域都还在用它。CAN的成功在于它便宜、可靠、抗干扰能力强对MCU的要求也低。但是CAN的骨架决定了他的天花板。标准CAN单帧只有8字节数据CAN FD提升到了64字节但跟以太网的1500字节MTU比依然是零头。更重要的问题是仲裁机制——CAN是CSMA/CA载波监听多路访问/冲突避免但这套机制在重载情况下会恶化。工程上我们一般把CAN总线的负载率红线定在50%以下低于30%算安全超过60%基本就是在赌博。我做项目时每个月都要拉一次总线矩阵负载率报告。负载率高不只是链路拥堵的问题还会带来抖动、丢帧、重传而这些指标在传统分布式架构下往往靠预留网络余量来对冲。但你想想一个智能驾驶系统感知、决策、执行三个环节的数据链路全都压在一条负载率60%的CAN上你还能放心让车自己变道吗LIN的命运比CAN更小区化。它的速率只有20kbps一条LIN子网最多连接16个节点一般就用来控制车窗、座椅、天窗、雨刮这类低速车身设备。LIN几乎不参与整车核心决策它的价值是让布线更整洁、让成本更低。FlexRay是另一个有意思的案例。它设计得非常优雅双通道10Mbps时间触发机制确定性很强本意是给线控底盘x-by-wire用的。但在量产车里FlexRay的覆盖范围非常窄。原因不复杂贵、复杂度高、相关的工具链和开发经验少。市场上能做好FlexRay集成的人屈指可数虽然宝马在部分车型里用过但最终它没能在行业里大规模铺开。MOST则是多媒体时代的一个历史性过渡品。它用光纤跑150Mbps专门服务车载娱乐系统。在CD机、导航、后排娱乐屏时代MOST是很体面的方案。问题是它太封闭、太垂直生态绑定严重一旦高清视频、手机互联、CarPlay这些基于IP的流量冲进来MOST的逻辑就撑不住了。说完总线还得说网关。分布式架构的拓扑结构是一堆ECU挂在若干条总线段上再由网关做跨段路由。听起来没问题但工程上你要做的是维护一份巨大的信号路由矩阵——哪个信号从哪个源发到哪个目标在哪个网段上以什么周期传输所有分支都要算清楚。这个矩阵一膨胀就是灾难。我参与过一个典型的项目车身控制器挂了30多个信号灯光、车门、车窗、雨刮来回排列组合光是一个门模块就得处理几十路控制信号。到了DV设计验证阶段每多一个功能需求就要改一版矩阵、重新评估负载、重刷网关路由表。一次改动影响几十个节点联调排期轻松被拖两周这就是传统总线的集成复杂度。所以你看分布式时代不是不能工作而是它的边际成本越往后越高。等到整车的功能和算力要求一上去通信网络就成了整条路径上最先断裂的环节。3. 车载以太网它转正的逻辑不是替代而是承载那些最重的数据以太网在车载领域的转正最初不是从设计选型开始的而是从没办法开始的。用过USB摄像头做环视、做过HMI高精地图渲染的人应该都有体会CAN给不了你要的带宽MOST不够开放FlexRay太贵。而以太网背后是一条独立的OSI协议栈TCP/IP、UDP、HTTP、TLS全都现成改造成本极低。所以从2015年前后开始量产车里出现了第一波车载以太网应用——环视摄像头、娱乐主机、仪表互联、诊断口走DoIP。到域集中式架构落地之后以太网彻底转正成了域内和域间通信的骨干。要说清楚车载以太网的价值必须先说清它和办公以太网之间的三个差别。第一个差别是物理层。大家熟悉的是RJ45接口、四对双绞线、百兆/千兆双工姿态。车载以太网用的是BroadR-Reach技术单对非屏蔽双绞线就可以实现100Mbps或更高。单对线的好处不言而喻重量轻、布线灵活、连接器小对整车减重和成本控制很有价值。但它带来的代价是同一根线上既要发又要收必须靠回音抵消Echo Cancellation技术处理这对PHY芯片的设计要求非常高。第二个差别是QoS与确定性。以太网在IT领域强调的是尽力而为但车上的控制器通信需要的是该到的必须按时到。于是车载以太网必须配套IEEE 802.1 TSN标准簇来提供流量整形和调度能力。也就是在以太网这个通用管道里给关键帧流划出一条专用快车道。第三个差别是时间同步。CAN天生是事件型通信靠仲裁把总线上所有节点的时间对齐到一个基准并不难。但以太网是一个分布式系统没有集中的总线时钟gPTP广义精确时间协议IEEE 802.1AS就是用来把整车所有节点的时间同步到微秒甚至亚微秒级。没有这个时间基准摄像头帧同步、传感器融合、多域调度全是空中楼阁。聊完差别再看应用选型。目前量产车上常见的车载以太网物理层有100BASE-T1、1000BASE-T1新一代的10GBASE-T1也已经开始在高端车型和自动驾驶数据回灌场景里出现了。对设计者来说选型逻辑其实很朴素先算链路峰值带宽再乘1.5到2的余量系数。举个例子。一个800万像素、30fps、YUV422格式的摄像头原始数据量轻松超过1.2Gbps。如果走传统视频串行方案可以用GMSL或FPD-Link如果非要走以太网就要用支持帧聚合的传输方案并配合大带宽链路。很多时候我们并不是要拿以太网把所有视频流都吃掉而是要让数据主干线是宽的摄像头这种感知源还是各走各的最优路径。那以太网是不是就完美了真不是。以太网在车上最容易被吐槽的三个点功耗比CAN高、EMC电磁兼容要求更苛刻、boot时间没有CAN那么即时。你可以想象一下一个门模块用CAN上电后几百微秒就能开始通信但以太网PHY从上电到link up可能要几百毫秒这在启动时序上是要单独处理的。工程中更痛苦的问题出在线束上。以太网用的是非屏蔽双绞线对线束走向、端接、互连要求很高。pHY对回波损耗、串扰、线束长度都有明确规定线束布置稍微不合理就容易出现链路质量问题。这一点在后面那一节我会专门说。4. SOA与TSN从信号路由到服务目录通信网络从管道变成了基座进入域集中式架构之后通信协议栈的核心从信号变成了服务。传统CAN报文矩阵的本质是状态参数广播每个节点按定义好的ID发送固定周期信号。这种方式胜在简单、确定但扩展性很差——新增一个功能往往需要在多个节点上同时增加信号配置还要保证周期/超时/故障状态都匹配。SOA面向服务架构的思路完全不同。整车定义好一组标准服务比如车窗控制服务灯光调节服务电池热管理服务每个服务有独立的接口、参数、返回值和错误码。上层应用不再关心具体信号怎么走、由谁的控制器来执行它只关心我调用了一个服务它回了我一个结果。在SOA的通信模型里SOME/IP是目前AUTOSAR生态里最主流的中间件。它同时支持请求/响应RPC风格和订阅/通知事件风格。简单说过去做CAN矩阵你要考虑这个信号每秒发几次、ID怎么分配现在做SOME/IP你要考虑这个服务的接口怎么设计、怎么被发现、版本更新之后怎么兼容。这中间有一个很容易被忽视的核心机制服务发现。SOME/IP的服务发现是通过在启动阶段发送offer/find报文让服务提供方和消费者动态匹配。这在设计上是松耦合的但也意味着服务发现的时序管理、节点唤醒后的同步、以及多SD服务发现实例之间的协调都是工程师必须处理的新课题。另一个常被提到的协议是DDS数据分发服务。DDS以数据为中心QoS策略非常细致——可靠性、时效性、持久性、资源限制都能单独配置特别适合自动驾驶域里传感器海量数据的分发和融合场景。这几年很多智驾方案商的骨干通信都用了DDS而车身域、底盘域依然贴近AUTOSAR SOME/IP。所以别问SOME/IP和DDS谁取代谁正确的问法是我的系统里主要需要的是哪种通信形态。再看TSN它是对以太网的一个系统性补强。IEEE 802.1里那一整套标准——时钟同步802.1AS、QoS802.1Qbv等、帧抢占802.1Qbu/802.3br、流过滤802.1Qci——解决的都是同一个问题让原本尽力而为的以太网具备确定性的转发能力。用个比较生活化的比喻普通以太网是城市道路每个节点都随时可能插队、变速只要总体车流不堵大多数车都能准点到。但TSN相当于给某些关键车辆拿了公交专用道红绿灯时刻表保证它在规定的周期窗口里一定能通过路口。在底盘线控、动力控制这类必须要在固定时间窗口内完成通信的场景TSN的调度能力是不可替代的。这里有个容易被低估的坑TSN本身不是单一功能不能靠选一款支持TSN的芯片就完事了。TSN是需要在交换机上做流配置、在端节点上做时钟同步、在交换节点上做门控调度表Gate Control List的整套方案。很多人一上来就把配置做错最常见的问题是gPTP域参数不一致导致全网时间同步错位数据流在某个交换节点上抖动异常。我做过的某次问题排查特别典型。现场反馈丢包率在某个交换节点上从0.01%跳到了3%整个研发团队查了三天没找到原因。后来我让测试组把全链路的gPTP同步状态跑一遍发现两个分支交换机的域号分别是0和1主时钟没协商成功各节点的时间基准差了十几微秒。十几微秒插不进正常的门控窗口帧就在Qbv队列里疯狂排队。最后统一了域号、重新锁定了主时钟丢包率瞬间归零。所以说到TSN我的建议是芯片选型只是开始时钟同步、流分类、门控表的规划必须从架构设计阶段就开始做越晚介入排查成本越高。5. 设计流程的迁移先定义服务目录再选通信拓扑最后才画信号矩阵传统架构的设计流程是功能需求 - 信号列表 - 网络拓扑 - ECU软件实现。到了新架构你如果还这么干大概率会在功能联调阶段被反复打脸。新架构的设计流程应该反过来做——先定义整车级服务目录再基于服务目录设计逻辑架构然后选网络拓扑和协议最后才落实到具体信号和接口。这个过程的差别不只是在画图顺序上。它意味着你的产品经理需要把客户想要的功能拆成服务能力。比如智能迎宾灯语这个功能在服务目录里会拆成灯光调节服务门锁状态服务用户靠近感知服务这些服务分布在不同的控制器上通过SOME/IP服务接口互相消费订阅。通信网络要做的不是提供一个管道而是提供一个完整的服务发现、调用、超时和错误处理的基础设施。这里给大家画一个项目落地时的简化流程是我个人在几个量产项目里验证过的版本第一步功能清单拆解。把整车功能拆成用户可感知的功能点建立功能与服务的映射关系。这个阶段要跟产品、系统、软件三方对齐能签字的尽量签字避免后续扯皮。第二步逻辑架构设计。明确服务由哪个域控制器托管哪些服务之间有强耦合关系哪些服务允许跨域调用。一般原则是强实时、安全相关的服务尽可能放在同一个域内减少跨域链路的不确定性。第三步物理拓扑设计。根据服务交互量和数据流量确定各域控制器之间用千兆还是百兆域内传感器走以太网还是专用视频链路。这里要结合国际标准里提到的带宽容纳公式来估算峰值带宽通常我会按理论峰值的60%去做链路余量评估。第四步协议栈配置。SOME/IP、DDS、TSN、DoIP、UDS这些协议的组合要明确服务ID、方法ID、事件组ID都要提前规划。AUTOSAR配置工具里的Com stack、Sd模块、SoAd模块一概不能省。第五步信号映射与接口设计。这一步回归细节将服务接口映射到具体的信号和字节位同时处理周期/事件混合触发的逻辑。这个过程虽然回到了信号表的旧主题但它的上游变成了服务定义而不是功能枚举。第六步仿真与验证。在实际硬件出来之前至少要在CANoe等仿真环境里把通信拓扑、服务发现时序、TSN门控表跑一遍。这部分投入非常值得很多网络配置上的低级错误都是在仿真阶段暴露的。很多人觉得这个流程太冗长但我想强调的是通信网络这门学问的工程本质是架构性纠错而不是事后调优。你可以在硬件阶段弥补一点带宽不足但弥补不了服务发现机制设计错误、拓扑规划偏差、时间同步域混乱这些根本性问题。6. 落地踩坑高频区带宽余量、时间同步、PHY外围设计、AUTOSAR配置这一节集中聊一些我在实际项目里踩过的坑算是给同行参考的经验。先说带宽余量。当年我第一次做域架构时按所有传感器理论峰值之和去设计骨干链路结果发现实际数据流根本到不了那么满。你以为我在说可以少留余量恰恰相反后来的项目告诉我必须把峰值流量按双倍计算。因为摄像头、毫米波雷达、激光雷达的数据是突发性的而且安全机制要求一定程度的冗余重传再加上诊断流量、OTA下载流量、日志回传流量几乎同时存在你预留少了后面根本没法收场。带宽余量这件事宁多勿少这是所有做过车载以太网的人的一致结论。再踩过的一个高频之坑是PHY外围设计。很多工程师习惯把PHY当作一个普通IO芯片来画板子忽略了它外围的无源器件匹配。车载以太网PHY对线束的阻抗匹配、TX/RX对间串扰、回流路径都很敏感。配电、layout、地平面完整性稍有瑕疵轻则丢包率升高重则无法link up。如果条件允许建议在PCB端就留好隔离和滤波的位置同时做全链路回波损耗测试。别等到实车信号测试不过关才往回倒查。AUTOSAR配置也是重灾区。SOME/IP的Service ID、Method ID、Event ID如果规划不统一多个服务之间容易发生冲突。更隐蔽的是不同供应商的工具链对SOME/IP序列化的字节序处理有可能不一致标定不一致时接口解析就全乱。建议项目中拉一张服务ID全局注册表所有供应商共用一份并且做接口一致性自动化校验。这个表跟以前的CAN ID矩阵一样是整个项目的基础设施。时间同步这块我再补一个细节。TSN需要全网拓扑内所有节点部署gPTP但gPTP时钟域的划分是有讲究的。如果你的域控制器跨了多个物理区域牵扯到不同的交换机链路最好先做时钟域划分的评审。是单主时钟全网统一还是按域做边界桥接需要根据时延预算和可靠性目标来定。我见过最离谱的情况是工程师为了大局把所有设备放在同一个gPTP域结果主时钟故障后全网时钟直接崩溃没有任何备用机制。时间同步一定要设计主备切换策略。最后聊一下OTA和刷写对通信网络的影响。很多人设计通信系统时只考虑运行态流量忽略了刷写态流量。ECU刷写的数据量动辄几百MB而且OTA升级往往是在夜间驻车时执行这时候更新的节点虽然不多但整个网关、路由、交换机都要参与。如果网络拓扑里没有为OTA流量预留可靠通道升级就会多次中断重来用户体验极差。我通常建议把OTA流量和应用流量做物理或逻辑上的隔离同时在软件设计上支持断点续传。7. 写在最后这是我做通信网络这十年最想强调的一句话做了这么多年通信网络我的核心感受是电子电气架构的每一次变革最终都会回到通信网络的承载力上。你选的芯片再强、算法再先进如果数据在到达处理节点之前已经丢了、晚了、乱了那一切归零。所以在新项目的早期我总会把通信架构评审提到最高优先级。谁想跳过这步我就拿过去的踩坑案例给他看——那个CAN负载率62%的项目那个TSN时间域配错的项目那个PHY layout返工两次的项目。每个案例后面都跟着一整排加班日志。我个人的建议很简单别迷信某一种总线或协议CAN、LIN、CAN FD、车载以太网、SOME/IP、DDS、TSN它们每种都有自己最合适的舞台。高价值在于架构师能看清整车的数据流和服务关系把每种通信手段放到它该在的位置同时做好故障降级预案。最后分享一个在项目里屡试不爽的小技巧在新架构项目启动时专门建一份通信风险清单把带宽余量、时间同步方案、服务ID全局注册、PHY外围设计、TSN门控表、刷写流量通道全部列进去每两周过一遍。这个清单帮我在三个量产项目里提前规避了至少两轮通信重构强烈建议各位同行也试一下。
返回列表