结论:PSA-RE 不是 DBC 集合,而是一套自研的 DBMUXEv 描述格式:归档快照含 94 份总线报文 YAML、110 份车型映射文件,覆盖 AEE2001(VAN)、AEE2004(第一代 FullCAN)与 AEE2010 三代架构。它不用 DBC 的原因很具体——需要同时描述多个世代,而每个世代又包含多条网络,DBC 这种单网络格式装不下。
为什么放弃 DBC:单网络格式的边界
DBMUXE 格式的规范文档写明了动机:现有格式(包括 Vector 的 DBCan)无法满足需求,因为要描述多代设计,而每代设计又包含多条网络。格式名本身也是线索——DBMUX 取自 PSA 内部用于描述多路复用网络的软件名,后缀 ev 在 PSA 语境里常表示某个事物的演进版本。
| 维度 | DBC(DBCan) | DBMUXEv |
|---|---|---|
| 组织单位 | 单一网络上的报文与信号 | architecture、variant、network、bus、node 逐层嵌套 |
| 多世代设计 | 需拆成多份彼此无关的文件 | 按目录分层;跨架构相同的报文只写一份,其余用符号链接 |
| 诊断数据 | 不在格式范围内 | 同级 diag 目录下有 dids、dtcs、resets、routines 四类 |
| 协议覆盖 | 主要面向 CAN | 面向多种车载网络,规范仍列为待完成项的有 LIN、KWP2k、K-lines、PSA2k |
| 语言 | 单一语言 | 按 ISO 两字母码扩展,示例仅设置 en 与 fr |
| 转出工业格式 | 即用 | 规范 TODO 中:需编写生成器解析 YAML 产出 DBC、ODX |
代价也很清楚:这套格式目前没有官方工具链,想把它喂给 SavvyCAN 或 CANoe,要先自己写生成器。仓库 README 的求助清单里,「编写生成器把 YAML 转成 DBC、ODX 等工业标准格式」被列为最需要的贡献之一。
目录结构即数据模型
规范给出的目录树基本等同于它的概念模型:architecture 是一组设计模板的名字(如 AEE2004),variant 是其衍生版本;network 是共享节点的一组总线,bus 是节点之间的物理链路(可以是 CAN,也可以是 LIN);node 是挂在一或多条总线上的控制器;protocol 是在总线上发送数据的协议;message 是总线上的一帧;signal 是帧里的一个数据点。
| 路径 | 存放内容 | 作用 |
|---|---|---|
architectures.yml |
架构定义 | 整个数据集的顶层索引 |
cars/{id}.yml |
车型到架构的映射 | 把具体车型挂到一或多个架构上 |
nodes/{architecture}.{variant}.yml |
节点定义 | 描述该架构变体下有哪些 ECU |
buses/{architecture}.{variant}/{network}.{bus}/{message}.yml |
单帧报文 | 一帧一个文件,是快照里 94 份报文文件的所在 |
diag/{architecture}.{variant}/{node}/ |
dids、dtcs、resets、routines | 诊断侧数据,与总线报文分列 |
命名上用点号 . 作分隔符,需要时嵌套。跨架构复用有一条明确规则:若某条报文在多个架构(及其版本)中完全相同,只在第一个实现它的架构的最相关版本里描述一次,其余位置创建符号链接。这条规则让 94 份报文文件能覆盖远多于 94 个「车型 × 总线」组合。
车型命名规则:第二位数字是车身
仓库单独写了一份车型命名说明。规则是:一个字母加一个数字构成基础车型,后面可能跟第二个数字表示车身形式。
| 第二位数字 | 车身形式 |
|---|---|
| 0 | 3 门 |
| 1 | 5 门 |
| 2 | SW / Break(旅行版) |
| 3 | 4 门 |
| 4 | 休闲车 / MPV / 大型多功能 |
| 5 | Coupe |
| 6 | Coupe / Cabriolet(敞篷) |
| 7 | Cabriolet(敞篷) |
| 8 | Monospace / Minispace |
| 9 | (小型)多功能 / 商用 |
另外说明提到改款通常(但不总是)把第一个数字加 1。这条规则的价值在于把 110 份车型映射文件变成可推导的体系:看到车型代号就能预判它挂在哪个架构上,而不必逐份打开文件。
证据边界:覆盖率与安全内容的取舍
归档说明给出的边界必须先看。上游 README 声称理论上覆盖 1993 年雪铁龙 XM(首款使用 VAN 的车)到 2020 年代初的标致、雪铁龙与 DS,并说明 2022/2023 年起的新架构尚不清楚;但快照里的报文文件实际位于 AEE2001/CONF 与 AEE2004.full 的 HS.IS 或 LS.CONF 之下,也就是说 README 的车型覆盖表述并不能证明每个车型或信号都已收录。
上游 107 份总线 YAML 中含有防盗或安全访问相关术语的 13 份被刻意剔除,未纳入本次归档。仓库声明 Apache-2.0 并保留 LICENCE,但 README 同时警告数据可能有误,并承认部分材料来自无法追溯的泄露,因此原始数据权利并未完全确立。留存的报文仍需要与被动抓包做独立的适配性与缩放核对。
常见问题
PSA-RE 里为什么没有 DBC 文件?
因为它用的是自研的 DBMUXEv 格式。规范文档写明动机:现有格式(包括 Vector 的 DBCan)无法描述多代设计,而每代设计又包含多条网络。该项目用 YAML 按 architectures、cars、nodes、buses、diag 分层组织,把 YAML 转成 DBC 需要另外编写生成器,这一点被列在仓库的求助清单里。
94 份报文 YAML 覆盖了哪些架构?
项目目标是 PSA 的 AEE2001(VAN 架构)、AEE2004(第一代 FullCAN 架构)与 AEE2010(2010 年至约 2020 年的车型)三代。但本快照的报文文件实际位于 AEE2001/CONF 与 AEE2004.full 的 HS.IS 或 LS.CONF 之下,README 中关于覆盖 1993 年至 2020 年代初的宽泛表述并不能证明每个车型或信号都已收录。
车型文件的命名规则是什么?
规则是一个字母加一个数字构成基础车型,后面可跟第二个数字表示车身形式:0 为 3 门、1 为 5 门、2 为旅行版、3 为 4 门、4 为休闲车或 MPV、5 为 Coupe、6 为 Coupe 或敞篷、7 为敞篷、8 为 Monospace、9 为小型多功能车。此外改款通常(但不总是)把第一个数字加 1。
为什么收录时刻意剔除了 13 份报文文件?
因为上游 107 份总线 YAML 中含有防盗或安全访问相关术语的 13 份被判定为不宜纳入,未进入本次归档。同时仓库 README 警告数据可能有误,并承认部分材料来自无法追溯的泄露,原始数据权利未完全确立,因此留存报文仍需与被动抓包做独立的适配性与缩放核对。
延伸阅读
- 公共 CAN/DBC 数据集怎么选:四类来源与三道筛查 —— 结构化 YAML 与 DBC 两类数据集的取舍
- 2330 份 DBC、294 个来源:公开 CAN 数据集的收录与分级 —— 收录时对安全相关内容的剔除策略
- Opel Astra H 的 LS-CAN 与 MS-CAN 解码档案 —— 欧系车型多总线分层的另一份档案
- UDS 诊断工具为什么不能随手调:只读、会话与写 ECU 的分权设计 —— 为什么安全访问相关内容要单独隔离
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/prototux-psa-re/README.md(项目目标、AEE2001/AEE2004/AEE2010 架构范围、覆盖声明与免责警告) - 项目 01 ——
public-can-dbc-datasets/additional/prototux-psa-re/dbmuxev/doc/README.md(DBMUXEv v0.1 规范:术语定义、目录结构、符号链接复用规则与待完成项) - 项目 01 ——
public-can-dbc-datasets/additional/prototux-psa-re/cars/README.md(PSA 车型代号命名规则与车身形式编码) - 项目 01 ——
public-can-dbc-datasets/additional/prototux-psa-re/SOURCE.md(94 份报文文件、110 份车型映射、13 份剔除说明与权利状态)
免责声明
本文内容整理自公开开源仓库,属社区逆向工程成果,不代表标致、雪铁龙或 DS 的官方数据。原仓库明确警告信息可能不正确,且部分材料来源无法追溯,权利未完全确立。留存报文未经独立抓包验证,不同车型、年款与 ECU 版本可能存在差异,应以实际测量与官方资料为准。
更新记录
- 2026-10-14 初稿
发表回复