结论:雪铁龙 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 广播。
延伸阅读
- PSA 架构逆向:94 份报文 YAML 与 DBMUXEv 格式 —— 同平台的另一份结构级档案
- 标致 207 仪表 IPC:4 根线与一份种子 DBC —— 207 与 C2 在舒适侧高度相近
- Opel Astra H 的 LS-CAN 与 MS-CAN 解码档案 —— 舒适总线与动力总线的分工对照
- UDS 诊断工具为什么不能随手调:只读、会话与写 ECU 的分权设计 —— 诊断侧取值与总线抓包的边界
- 车型数据库 —— 按车型检索更多 CAN 档案
参考资料
- 项目 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 初稿
发表回复