VW Grand California 生活舱 CAN:7 个 ID 与 9 条命令

作者:

在

结论:VW Grand California 的生活舱 CAN 独立于 Crafter 底盘总线,社区已给出 500 kbit/s 的接入方式、7 个 29 位 ID 的功能归属、13 条解码样例与 9 条 cansend 命令。但同一个 ID 在不同字节位上混装多种含义,电流与电压两条规则作者未给出可复核的推导,因此这份表格适合做功能定位与命令复现,不适合直接当计量依据。

接入:从树莓派到技术柜里的 9、10 针

项目面向 Grand California 600 与 680 的生活舱总线,作者在免责声明中明确这是教育与研究用途,相关知识产权归属大众集团。硬件用 Raspberry Pi 3B+(作者说明 Pi Zero 2 W 更小巧省电)加一块 Waveshare RS485 CAN HAT(CAN 控制器 MCP2515、485 收发器 SP3485)。软件侧是 can-utils 加 Node-RED 的 node-red-contrib-socketcan 节点,用来搭可在浏览器里打开的仪表盘。

总线初始化命令为 sudo ip link set can0 up type can bitrate 500000 loopback off listen-only off,监听用 cansniffer can0 -c -t0,发送用 cansend can0 18EF70C9#00.40.00.00.00.00.00.00。物理接入点选在 RGB 灯带控制器(零件号 7C4 947 022)的 9、10 针,该控制器位于 230V 配电盘正下方的技术柜内——这是全篇最省事的一条经验,避免了拆仪表台找线。

作者还为 SavvyCAN 提供了一份 DBC:VW_GrandCalifornia_J608.dbc。

七个 ID 的功能归属:一帧多用是常态

生活舱总线的 ID 全部是 29 位扩展格式(形如 18EFxxxx),且普遍存在「一帧承载多个功能」的情况。下表按作者给出的归属整理,是判断该盯哪一帧的第一层筛选。

ID 承载功能 备注
18EF70C9 显示屏开关、卫星(SAT)开关、氛围灯 / 外部灯 / 内部灯 也是文档示例里的发送目标
18EF70EB 卫星开关、灯光开关、电池剩余时间、车门锁状态 状态回读帧
18EF71C9 露营模式、WiFi、音响(含蓝牙)、踏板自动 / 伸出 / 收回 命令侧主要目标
18EF71EB 接收大量内容;露营模式、WiFi、音响状态 作者标注「接收很多东西」
18EF72EB 灯光开关、230V 输入、电池电流、电压、电量百分比 电池参数集中在这一帧
18EF73EB 230V 输入、清水与灰水水位 水位需第 1 字节为 01 才有效
18EF60C9 设置灯带颜色 Y / R / G / B 四组预设值

注意 18EF72EB 同时承担电流、电压、电量三项:这三项的字节位置完全不同,且分属不同的码制,因此不存在「一个 ID 对应一组语义」的捷径。

解码规则与位序陷阱

下表按作者原文的 0 起字节编号整理(原文写作 0ºB、1ºB……)。每行都附了原文给出的样例帧,这是判断规则可信度的关键——有样例的规则可以复现,无样例的只能照抄。

内容 ID 样例帧 解码规则 可复现性
清水 / 灰水水位 18EF73EB 00 00 00 00 0B 00 04 00 0 起编号第 4 字节为清水百分比(样例 0x0B)、第 6 字节为灰水(样例 0x04);首字节为 01 时清水箱为空 高,样例与规则自洽
电池电流(充电) 18EF72EB 50 00 00 8A 59 00 07 02 0 起编号第 6 字节为电流正值(样例 0x07);首字节大于 0 表示充电中 中,未给单位换算
电池电流(放电) 18EF72EB 00 00 00 0A 4C 00 FF 01 0 起编号第 6 字节为负值,FF = −1、FE = −2、FD = −3,按 MOD 2 递推 中,负值为自定义编码
电池剩余时间 18EF70EB 01 00 3A 26 00 00 00 00 原文称第 2 字节为小时、第 3 字节为分钟,样例对应 0x3A 与 0x26 中,需确认编号起止
电池电压 18EF72EB 00 00 00 0A 50 00 FF 01 原文称取第 5 字节(样例值 0x50)转十进制,十位加 5 得整数部分、个位为小数部分 低,推导未说明,需实测复核
电池电量百分比 18EF72EB 00 00 00 0A 50 00 FF 01 原文称取第 4 字节(样例值 0x0A)为百分比除以 10,经 10*10 换算为 100 低,表述与样例存在张力,需复核
显示屏开 / 关 18EF70C9 00 40 … / 00 00 … 由 I/O 按键触发,0 起编号第 1 字节为 40 时开、00 时关 高
车门锁 18EF70EB 00 04 3A 26 00 00 00 00 0 起编号第 1 字节为 04,随后回到 00 中,仅给出单帧切片
灯带颜色 18EF60C9 1E.00.64.2F… / 08.00.64.25… / 7D.00.64.23… / F5.00.64.2F… 四组预设分别对应 Y、R、G、B,0 起编号第 0 与第 3 字节变化 高,可整帧复现

两条被标为「低」的规则是最该警惕的:电流与电压共用同一帧,且放电电流用 FF / FE / FD 表示负值、按 MOD 2 递推,与电压那条「十位加 5」的规则都不是标准编码。在没有万用表对照之前,这两项只能看趋势。

字节编号在同一份表里并不统一

这是使用这份表格时最容易踩的坑。同一份文档里,水位行说「4ºB = 0B」,只有按 0 起编号才能在样例帧 00 00 00 00 0B 00 04 00 里对上;电流行说「6ºB 是安培值」,也只有 0 起编号才能在 50 00 00 8A 59 00 07 02 里取到 0x07。但电压行与电量百分比行的样例值(0x50 与 0x0A)在同一帧里分别位于从 1 起数的第 5 与第 4 个字节。也就是说原文的编号起止在不同行之间不一致。正确做法是先拿样例帧反推真实位置,再写解析规则,不要直接信任编号本身。

九条可复现的命令

作者把可发送的命令单独列了一张表,全部基于 cansend,这也是整份资料里最容易验证的部分。

功能 命令载荷 目标 ID 效果
露营模式 00.40.00.00.00.00.00.00 18EF71C9 开 / 关切换
WiFi 00.01.00.00.00.00.00.00 18EF71C9 开 / 关切换
踏板自动 04.00.00.00.00.00.00.00 18EF71C9 开 / 关切换
踏板伸出 10.00.00.00.00.00.00.00 18EF71C9 单次动作
踏板收回 40.00.00.00.00.00.00.00 18EF71C9 单次动作
氛围灯 04.40.00.00.00.00.00.00 18EF70C9 开 / 关切换
外部灯 00.41.00.00.00.00.00.00 18EF70C9 开 / 关切换
内部灯 01.40.00.00.00.00.00.00 18EF70C9 开 / 关切换
卫星(SAT) 00.50.00.00.00.00.00.00 18EF70C9 开 / 关切换

这张表的结构是「同一 ID 内按位区分功能」:18EF71C9 上,0 起编号第 1 字节的 40 / 01 / 04 / 10 / 40 分别对应露营模式、WiFi、踏板自动、踏板伸出、踏板收回;18EF70C9 上则靠 0 起编号第 0 与第 1 两个字节的组合区分氛围灯(04 40)、外部灯(00 41)、内部灯(01 40)与卫星(00 50)。做自动化控制时,正确做法是先读回当前状态再发送,而不是按记忆中的固定序列盲发。

常见问题

生活舱 CAN 和 Crafter 底盘 CAN 是同一条总线吗?

不是。项目说明明确指出生活舱 CAN 独立(或几乎独立)于 Crafter 底盘总线,本文涉及的 ID、命令与解码只适用于生活舱部分。想取发动机、变速箱或底盘数据,需要另外接入底盘侧总线,不能指望从这些 ID 里读出来。

从哪里接入生活舱总线最省事?

作者最终选择接在 RGB 灯带控制器(零件号 7C4 947 022)的 9、10 针上,该控制器位于 230V 配电盘正下方的技术柜内。原厂接线图上也标注了多个可接入「便利 CAN」的点位,但灯带控制器这个点被作者评价为最方便。

电池电流的负值为什么用 FF、FE、FD 表示?

这是作者从样例帧中归纳出的自定义编码:放电时第 6 字节按 FF = −1、FE = −2、FD = −3 的方式递推,原文写作 MOD 2,与充电时的正值编码不是同一套。由于文档未给出单位与系数推导,实际使用前应与钳形表对照测量。

清水和灰水水位在同一帧里怎么区分?

靠字节位置区分:样例帧 00 00 00 00 0B 00 04 00 中,0 起编号第 4 字节(0x0B)是清水百分比、第 6 字节(0x04)是灰水百分比。另外原文注明当首字节为 01 时清水箱判定为空,因此解析时必须先看首字节再取水位值。需注意的是原文编号起止在不同行之间并不统一,实际接入应先按样例帧反推。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/mk4001-vw-grand-california/README.md(硬件与软件清单、500 kbit/s 初始化命令、接入点位与免责声明)
  • 项目 01 —— public-can-dbc-datasets/additional/mk4001-vw-grand-california/Table.md(7 个 ID 的功能归属、13 条解码样例与 9 条 cansend 命令)

免责声明

本文内容整理自公开开源项目,原作者已声明该项目仅用于教育与研究,相关 CAN 代码与协议的知识产权归属大众集团,不构成对任何专有系统的授权访问或修改许可。文中字节位置与换算规则均为原作者基于自车观察给出的结果,未经独立验证,不同年款与配置可能存在差异。

更新记录

  • 2026-10-14 初稿

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注