← 返回

汽车总线系统 —— CAN/LIN/MOST 在 PQ35 上的架构

原理科普
PQ35 CAN 总线网络拓扑

⚠️ 写在前面: 我自己的 6R 曾经同时报 U0101(变速箱通信丢失)和 U0155(仪表通信丢失)两个通信故障。当时以为是 DSG 和仪表同时坏了,修车铺报价 8000+。后来发现只是网关 J533 的 CAN 线束被座椅支架磨破了一根线,焊好就解决了。这件事让我彻底明白了——理解总线系统比背一堆故障码管用得多。

先把这个核心逻辑说清楚

汽车总线系统不是路由器、不是局域网——它是一个被设计的确定性实时通信网络。和办公网最大的区别是:你不希望刹车信号因为「局域网内有人在看 4K 视频」而延迟 10ms。

大众从 2000 年代初开始用 CAN(Controller Area Network)逐步取代传统的点对点线束。以 PQ35 平台(我的 6R 基于它)为例,全车线束长度从以前高尔夫 4 的约 2km 缩短到约 1.2km——减重约 30kg,同时增加了十几倍的信号量。这就是为什么要用总线的根本原因:物理上不现实,成本上扛不住。

PQ35 的 CAN 网络拓扑

PQ35 平台上的 CAN 总线不是一根线通全车,而是按功能分成三个独立子网,通过一个中央网关连接:

子网 速率 总线等级 用途 这对我有啥影响
驱动 CAN (Antriebs-CAN) 500 kbit/s 最高优先级 ECU ↔ TCU ↔ ABS ↔ Haldex ↔ 仪表 动力系统实时数据,一断就亮灯/换挡顿挫
舒适 CAN (Komfort-CAN) 100 kbit/s BCM ↔ 空调 ↔ 门控 ↔ 座椅模块 车窗/后视镜/门锁——断了你也锁不上门
信息 CAN (Infotainment-CAN) 500 kbit/s 仪表 ↔ 导航 ↔ 音响 ↔ MIB 导航/媒体/电话——断了音乐不响但能开
诊断 CAN 500 kbit/s OBD-II 接头 → 网关 → 各子网 VCDS/ODIS 读取数据的路径

关键信息:驱动 CAN 永远是最优先的。 当总线负载高时,舒适 CAN 的信息可以被延迟甚至丢弃——但刹车信号不行。这就是为什么 ABS 消息的 CAN ID 远小于空调消息的 ID:CAN 总线的仲裁机制里,ID 数字越小、优先级越高。

⚠️ 实用陷阱: 如果你用 VCDS 看到多个 ECU 同时报 U 码(U0100/U0121/U0101 之类),别一个个修——大概率是网关或共享 CAN 线束的问题。我的 6R 当时同时报了 4 个 U 码,最终原因:网关那根最粗的电源线被副驾脚垫磨破了。

网关 J533——整车的消息总调度

网关(Gateway J533,装在驾驶员侧仪表台下方)是 PQ35 电子架构的真正大脑。它的核心工作:

  1. 消息路由 — 把驱动 CAN 上的发动机转速转发到信息 CAN 给仪表显示
  2. 唤醒管理 — 开车门时唤醒舒适 CAN 但不唤醒驱动 CAN(省电)
  3. 诊断网关 — VCDS 发来的诊断请求通过网关转发到目标 ECU
  4. 休眠/唤醒 — 停车后让总线进入睡眠模式(静态电流 <1mA)

网关还有一个隐藏功能——VCDS 里的「安装列表」。它在地址 19(CAN Gateway)里,列出了全车所有已安装的 ECU:

安装列表条目 对应 ECU 你的车应该勾选
01-Engine ECU J623
02-Transmission TCU J743
03-ABS/ESP ABS J104
44-Steering EPS J500
55-Headlight AFS 大灯 ✅(如有)
5F-Information MIB 主机 ✅(如有)
A5-LaneAssist 三代相机 ✅(如有)

如果你换了方向机、ABS 泵或加了车道保持相机但功能不生效,第一个检查点就是网关安装列表里有没有勾选新 ECU。 我换 379CC ABS 泵后跑了两天才发现 ABS 灯还亮着——就是因为忘了到网关里勾上 03-ABS/ESP。

CAN 数据帧的物理层——两根线决定一切

CAN 总线的物理层是一对双绞线(CAN_H 和 CAN_L),电平逻辑跟普通数字电路完全不同:

状态 CAN_H 电压 CAN_L 电压 差值
隐性 (Recessive) 2.5V 2.5V 0V (逻辑 1)
显性 (Dominant) 3.5V 1.5V 2V (逻辑 0)

显性电平总是「覆盖」隐性电平——这就是为什么 CAN 仲裁不丢数据。当两个 ECU 同时发消息时,ID 小的(显性位多)自然获胜。

常见误区:很多人以为 CAN 总线断了就是通信完全中断。实际上 CAN 是 差分信号传输——CAN_H 断了还能靠 CAN_L 对地勉强通信,只是噪音更大、速率下降。只有两根都断了才真正失联。

数据帧格式(标准帧 11-bit ID):

字段 长度 说明
SOF 1 bit Start of Frame
Identifier 11 bit 消息优先级(越小越优先)
RTR 1 bit 远程帧标志
DLC 4 bit 数据长度(0-8 字节)
Data 0-64 bit 真正的信号内容
CRC 15 bit 校验
ACK 2 bit 确认
EOF 7 bit 结束

一个 CAN 帧最多 8 字节数据——考虑到一个发动机转速信号只需要 2 字节(16 bit),8 字节可以塞下转速、水温、负荷、点火角四个参数同时发送。

LIN 总线——CAN 的廉价小弟

CAN 虽然好,但每个节点需要 2-3 元的 CAN 收发器。对于车门窗开关、雨量传感器这类简单的开关/信号,太贵了。这就有了 LIN 总线(Local Interconnect Network)

对比项 CAN LIN
速率 125-500 kbit/s 19.2 kbit/s
导线 2 根双绞线 1 根单线
成本/节点 ~3 元 ~0.5 元
拓扑 多主 主-从
用途 动力/安全 简单传感器/执行器

在 6R 上的典型 LIN 设备:

  • 雨量传感器(J397) → 通过 LIN 告诉 BCM「下雨了」
  • 空调风门电机 → 通过 LIN 接收「开外循环」指令
  • 多功能方向盘按键 → 通过 LIN 发送音量加减(老款通过硬线)
  • 网关 J533 是 LIN 主节点 → 把 LIN 消息翻译成 CAN 消息

MOST 总线——PQ35 上的发烧友专属

MOST(Media Oriented Systems Transport)用在 RNS 510 + Dynaudio 的高配音响包上。PQ35 平台中只有顶配车型才有。

  • 速率: 22 Mbit/s(Fiber Optic 光纤环)
  • 拓扑: 环形——一个节点断了整个环断
  • 用途: 音频流、导航数据
  • PQ35 上的参与者: RNS 510、Dynaudio 功放、电视调谐器、CD 换碟机

⚠️ 如果你有个 RNS 510 但根本没装 MOST 设备: 网关安装列表里把 47-Sound 和 MOST 相关去掉就行,不然网关会一直报 MOST 通信故障码,仪表盘可能亮灯。我帮朋友清理过这个——改个编码就行,不用拆机。

ADAS 功能的总线路径——从摄像头到制动

从前面文章(《PQ35 平台原厂升级分析》)我们已经知道 6R 可以升级车道保持。来看 ADAS 功能的数据走了哪些 CAN 网络:

A5 三代相机 → 扩展 CAN → 网关 J533
                             ↓
                       驱动 CAN → ABS/ESP (J104) → 制动预充压(AWV)
                             ↓
                       驱动 CAN → EPS (J500) → 转向干预
                             ↓
                       驱动 CAN → ECU (J623) → 转矩协调

这就是为什么换方向机后车道保持「能识别但不控方向」——EPS 的 Byte 4 Bit 0 是车道保持扭矩接口,必须设为 1 才允许 A5 模块通过 CAN 发送转向指令。VCDS 改个 bit 就解决了,不需要换硬件。

背后原理: 车道保持的转向扭矩请求是一个 CAN 报文(ID 通常为 0x4F 或 0x1A),A5 相机发到驱动 CAN → 网关路由 → EPS 接收并执行。如果 EPS 没有使能该报文接收,完美忽略。

VCDS 是怎样通过总线读数据的

把 VCDS 诊断头插上 OBD-II 口后,通信链路是这样的:

VCDS (PC/手机) → USB/蓝牙 → 5054/HEX-V2 → OBD-II (DLC)
                                                    ↓
                                             诊断 CAN (500k)
                                                    ↓
                                             网关 J533
                                                    ↓
                                         ┌───────┴───────┐
                                         ▼               ▼
                                   驱动 CAN         舒适 CAN
                                 (发动机/变速箱)     (BCM/空调)

诊断请求用的是 UDS on CAN(ISO 14229)——一个标准化的汽车诊断协议。你点一下 VCDS 的「读取故障码」,VCDS 就发一帧 UDS 请求(0x19 ReadDTCInformation)给网关,网关转发给目标 ECU,ECU 回复,网关再转发回来。

OBD-II 请求示例(读取发动机转速):
  发送:7DF → 02 01 0C
  回复:7E8 ← 04 41 0C 1A F8
  转速 = 0x1AF8 / 4 = 1726 rpm

总线故障怎么诊断——我踩过的坑

现象 大概率原因 解决
仪表盘报多个U码 CAN线束破损/网关电源问题 查 OBD-II 口第 6/14 脚(CAN_H/CAN_L)电阻(应为 60Ω)
单个 ECU 通信丢失 该 ECU 的 CAN 分支断了 查该模块插头针脚
改了编码功能不生效 网关安装列表没勾选 VCDS 进 19-Gateway → 安装列表
偶尔通信中断 终端电阻不良 终端电阻应在 CAN 两端各 120Ω

诊断 CAN 总线最简单的方法:拔掉 OBD 诊断头,量 6 脚(CAN_H)和 14 脚(CAN_L) 之间的电阻——应该刚好 60Ω(两个 120Ω 终端电阻并联的结果)。如果量出来是 120Ω,说明有一端的终端电阻丢了(可能 CAN 线断了);如果量出来是 0Ω,说明总线短路了。

⚠️ 不这样做后果: 我就因为没量终端电阻直接动手拆模块,花了两小时排查,最后发现只是网关的终端电阻焊点虚焊。一个万用表 5 分钟能解决的问题——先量终端电阻,再量 CAN_H 对地/CAN_L 对地电压(显性时 CAN_H 约 3.5V,CAN_L 约 1.5V),最后才是拆模块。

延伸阅读

如果你对 PQ35 的电子架构感兴趣,这几篇是同一卷的:

第五卷预告:目标设定与硬件匹配 —— Stage 1→2→3 路径图——如果你在看要不要改我的车、从哪步开始,那篇会帮你算清楚性价比。


数据来源:大众官方维修手册(通讯系统 03.2010)、mycar 知识库 (automotive-bus-systems.md, vcds-coding-golf-r-mk6.md)、ISO 11898 CAN 规范、ISO 14229 UDS 协议标准、个人实车验证。