雪铁龙 C2 的 PSA 舒适总线:125 kbit/s、38 个 ID 与四级证据

作者:

在

结论:雪铁龙 C2(BSI gen 2、AEE2004)的 CAN-Confort 走 125 kbit/s、11 位 ID,接入点在收音机后方 Quadlock 的 10 脚(CAN-H)与 13 脚(CAN-L),OBD 口不暴露这条总线。实测约 185 帧/秒、38 个不同 ID,其中 16 个是已识别的 AEE2004 PSA ID。真正决定可用性的不是 ID 数量,而是四级证据标记:只有方向盘按键、灯光、车门、续航、油量等少数信号做了实车动作对照,冷却液温度与机油温度仍停在单点标定,外部温度与里程表则存在互相冲突的公式。

先把三条总线分清:舒适、IS 与诊断

PSA AEE2004 平台上「CAN」不是一个东西。CAN-Confort 是 125 kbit/s,承载车身舒适与信息显示类信号,物理接入在收音机后方;CAN-IS 是 500 kbit/s,承载发动机、ABS、安全气囊,本文范围之外;诊断走的是另一条路——Lexia/Diagbox 通过 OBD 与 BSI、发动机 ECU 等模块对话。

这个划分有直接后果:电池电压在舒适总线上取不到,材料明确写它需要经 UDS 从 BSI 读;进气温度同样不在舒适总线上。反过来说,诊断侧能看到的值(真实里程 110506.9 km、机油温度 64–72 °C)也不等于舒适总线上有对应报文——里程表就被明确记为「在 CONF 总线上找不到、由组合仪表本地管理」。

四级证据标记:这份档案最有价值的部分

标记 含义 可信程度
✅ 在 C2 上验证过:物理动作与该位变化对应(2026-04-26 场地测试),或数值经用户确认 可直接用于功能
🎯 只在单一测量点(Lexia/Diagbox)上标定过,斜率未验证 该点附近可用,外推不可靠
📄 取自参考结构(PSAVanCanBridge AEE2004),未在 C2 上验证 仅作候选,须实测
⚠ 来源互相冲突,见「证据边界」 暂不可用

两个哨兵值也要单独记住:温度类字节为 0xFF、里程为 0xFFFFFF 时表示「BSI 刚唤醒、尚未就绪」,解码器必须返回空值,而不是把它们当成真实读数。

已解码的接收帧

ID 字节.位 / 字节 字段 解码 证据
0x0B6 b0–b1 大端 发动机转速 ÷ 8,怠速 704–768 RPM ✅
0x0B6 b2–b3 大端 车速 ÷ 100 km/h,静止已验证 ✅
0x0F6 b1 冷却液温度 字节 − 53 °C(92 °C ↔ 0x91) 🎯
0x0F6 b0.3–4 钥匙位置 0 STOP、1 CONTACT、2 STARTER、3 FREE 📄
0x128 b0.5 / b2.1 手刹 / 危险警告灯 位为 1 即激活 ✅
0x128 b4.1 / b4.2 / b4.5–7 左转向 / 右转向 / 远光·近光·示宽 位图;远光与近光互斥 ✅
0x161 b3 燃油百分比 百分比直读;升数 = 百分比 × 油箱容量(默认 41 L) ✅
0x161 b2 机油温度 字节 − 64 °C(71 °C ↔ 0x86,解出 70) 🎯
0x21F b0.1 / b0.2 / b0.3 SOURCE / VOL− / VOL+ 位图;本车 VOL+ 与 VOL− 与 PSA 通用文档相反 ✅
0x21F b1 滚轮计数 累加计数,应用取相邻两帧的有符号增量 ✅
0x220 b0.7 / b0.6 / b0.3 左前门 / 右前门 / 尾门 位为 1 即开启 ✅
0x221 b3–b4 大端 续航里程 km;0xFFFF 为未计算(440 km 已验证) ✅
0x261 b4 行程平均油耗 ÷ 10 L/100(7.6 ↔ 0x4C) ✅
0x3A7 b3–b4 / b5–b6 保养剩余里程 / 天数 大端;对照值 15560 km、691 天 📄

0x21F 是这份档案里唯一被完整验证的帧,也是项目初始目标。除了位图,它还有一个实用细节:按键按上升沿处理并加 200 ms 去抖。0x0B6 的另一个作用是定节奏——它以 20–50 Hz 发出,界面按 10 Hz 采样,音频则逐帧跟随。

方向盘按键与 PSA 通用文档不一致

通用文档给出 0x04 = VOL+、0x08 = VOL−,而这辆 C2 的实测结果是相反的:0x04 = VOL−、0x08 = VOL+,0x0C 由应用约定为 MUTE。另有 bit 0、bit 4、bit 5 在这辆车上无效果,已实测排除。这类「平台通用、单车相反」的差异,正是照搬同平台档案最容易踩的坑。

发送帧与它的前置条件

ID 内容 状态
0x3E5 EMF 按钮位图 6 字节;模式激活期间每 65 ms 发一次 00×6,按键时发置位帧 仅当 BSI 被远程编码为「RD4 存在」时有效,否则 EMF 忽略
0x39B 5 字节:年份 − 1872、月、日、时、分 对 EMF 时钟无效
0x21F 方向盘按键位图 仅供测试(收音机在同一总线上)

0x3E5 的按钮位分布来自 PSAWifiDisplayControl 的 CanMenuStructs.h:字节 0 的位 0/4/6 为 AIRCON、PHONE、MENU;字节 1 的位 4/6 为 MODE、TRIP;字节 2 的位 2/4/6 为 DARK、ESC、OK;字节 5 的位 0/2/4/6 为 LEFT、RIGHT、DOWN、UP。材料同时警告:所有发送都落在车辆真实总线上,发送类试验不得在行驶中进行。

Diagbox/Lexia 侧真值:哪些只在诊断侧确认过

2026-05-03 的 Lexia 会话留下了一组 ground truth,用来给解码器做标定。必须区分清楚:这些值是诊断工具读出来的,其中一部分已在舒适总线上找到对应字节并打上 ✅,另一部分至今没找到对应报文。

字段 Lexia 读数 在舒适总线上的状态
怠速转速 704–768 RPM 已确认:0x0B6 b0–b1 大端 ÷ 8
平均油耗 7.6 L/100 已确认:0x261 b4 ÷ 10
外部温度 23 °C 已确认:0x0F6 b4,(字节 − 49) ÷ 2(字节 0x5F = 95)
冷却液温度 86–92 °C(变动) 单点标定:字节 − 53 °C,斜率未验
机油温度 64–72 °C 单点标定:字节 − 64 °C,斜率未验
总里程 110506.9 km ❌ 舒适总线上未找到,由组合仪表本地管理
进气温度 47–48 °C ❌ 未在该总线上找到
电池电压 12.30 V(熄火)→ 14.10–14.20 V(运行) ❌ 需经 UDS 从 BSI 读取
燃油量 原始 22.70 L / 显示 22.58 L / 油表阻抗 162 Ω 百分比已确认,升数由百分比换算

诊断侧还确认了模块身份:EMF(ECRAN_A)PSA 件号 96 597 970 77、供应商 Magneti Marelli、软件版本 007.016;发动机 ECU(J34P)供应商 JCAE、ECU 参考号 9651696680、软件版本 0B02。这条信息解释了后面的一处死结:这台 EMF 是 Magneti Marelli 自有固件,与文档中常见的其他供应商 EMF 不同。

证据边界:待验证与未解

项目 冲突或缺失 材料给出的验证程序
外部温度 ⚠ 三个公式都只拟合到同一点 23 °C:代码用 b6 − 102;场地测试用 (b4 − 49) ÷ 2;第三方用 (b5 右移 1) − 40。PSA 常见斜率为 0.5 °C/位,用 − 102 时在 10 °C 处偏差可达约 6 °C 在两个相差较大的环境温度下抓 0x0F6,记下 EMF 显示值,选同时贴合两点的公式
总里程 ⚠ 字节 2–4 ÷ 10 取自参考结构;场地测试未找到匹配模式;代码里记的 Lexia 点也不自洽(0x10D85F = 1103967,而非 1103455) 出行前后各记一次组合仪表读数与 odo 对比
水温 / 油温斜率 🎯 各自只有一个标定点 冷车与热车各测一次,与 Lexia 比对
行驶中的车速 0x0B6 车速只在静止状态验证过 与 GPS 对比(界面同时显示两者)
保养帧 0x3A7 未与 Lexia 值(15560 km / 691 天)比对 下次会话直接比对
行程距离 0x261 仪表显示的 884 km 未在任何字节中复现,格式未确认 待定
EMF 时钟 0x39B、0x276、0x228 在 AEE2004 LS.CONF 上无效;AEE2004 的时钟主是 EMF 自身,经 0x3F6 以 1 Hz 广播;Lexia/Diagbox/PP2000 被三个独立来源确认无法设置该时钟 仅存三条替代路径:临时接入二手 RD4、完整 RD4 模拟器、直接改用收音机时钟
BSI 日期帧 0x276 在这辆 C2 的舒适总线上完全缺席 解码器保留,但只有当该帧出现时才有意义

「EMF 是时钟主」这一点推翻了常见的模型:BSI 是消费者而非提供者。因此任何试图用 CAN 帧把时间写进 BSI 的做法,在这代平台上从方向上就是错的。

常见问题

CAN-Confort 能不能从 OBD 口读到?

不能。这辆 C2 的舒适总线接入点在收音机后方的 Quadlock 连接器:10 脚 CAN-H、13 脚 CAN-L,材料明确写明 OBD 口不暴露这条总线。实测配置是 CANable 2.0(slcan 固件),总线上已有终端电阻,因此适配器侧不加 120 Ω。

为什么电池电压、进气温度这类值一直找不到?

因为它们不在舒适总线上。材料把电池电压标注为 AEE2004 舒适总线上无法干净取得,需经 UDS 从 BSI 读取;进气温度同样未在该总线上找到。这两项属于 CAN-IS 或诊断路径的范围,用舒适总线的抓包去找必然无果。

外部温度该用哪个公式?

暂不能确定,三个公式都只拟合到同一点 23 °C:代码当前用 b6 − 102,场地测试给出 (b4 − 49) ÷ 2,第三方实现用 (b5 右移 1) − 40。PSA 常见斜率为 0.5 °C/位,用 − 102 在 10 °C 处偏差可达约 6 °C。需要在两个相差较大的环境温度下各测一次才能定斜率。

往总线上发 0x3E5 为什么没有反应?

因为 EMF 只在 BSI 被远程编码为「RD4 存在」时才监听该帧。材料记录用户在 Diagbox 中重新启用了 RD4 远程编码,此后 EMF 应回到监听 RD4 帧的模式;在此之前发送会被忽略。另外该帧需要在模式激活期间每 65 ms 发一次全零保活,按键时才发置位帧。

能不能用 Diagbox 把 EMF 的时钟调好?

不能。材料称 Lexia/Diagbox/PP2000 对 C2 的 EMF 时钟无效,依据来自三个独立来源(PSA 经销店、207 与 RCZ 论坛),且没有针对 EMF 时钟的文档化 DID。三个已测无效的 CAN ID(0x39B、0x276、0x228)在 AEE2004 LS.CONF 上根本不存在;该平台的时钟主是 EMF 自身,经 0x3F6 以 1 Hz 广播。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/wasabules-citroen-c2/docs/can/signaux_decodes.md(四级证据标记、RX 帧逐位定义、TX 帧与待验证清单)
  • 项目 01 —— public-can-dbc-datasets/additional/wasabules-citroen-c2/docs/can/psa_can_confort.md(125 kbit/s 与 500 kbit/s 分工、方向盘按键 ID 纠正、0x3F6 时钟模型)
  • 项目 01 —— public-can-dbc-datasets/additional/wasabules-citroen-c2/docs/can/lexia_diagbox_findings.md(2026-05-03 会话的模块识别与 ground truth 表)
  • 项目 01 —— public-can-dbc-datasets/additional/wasabules-citroen-c2/docs/can/c2_field_test_results.md(2026-04-26 场地测试的 38 个 ID 与失败项)
  • 项目 01 —— public-can-dbc-datasets/additional/wasabules-citroen-c2/README.md(车辆与硬件配置、Quadlock 引脚、发送风险警告)

免责声明

本文所述解码均为社区逆向工程产物,不代表 Stellantis、雪铁龙或 PSA 的官方数据。文中所有 ID、字节位与数值均来自上述公开仓库的说明文件,其中标注为单点标定或参考结构的部分未经充分实车验证;不同年款、ECU 版本与远程编码配置可能存在差异。向车辆总线发送报文存在干扰电控单元、耗尽蓄电池等风险,切勿在行驶中进行发送类试验。

更新记录

  • 2026-10-15 初稿

评论

发表回复

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