结论:在一份以日产 Leaf ZE1 命名的 CAN 数据库与配套研究文档里,0x1DA 与 0x1D4 两个帧使用同一个 CRC 多项式 0x85(MSB-first),但算法细节不同:0x1DA 校验时把帧 ID 字节 0xDA 拼进输入并输出异或 0xBF;0x1D4 生成校验时不拼帧 ID、也不做输出异或,只对 b0 至 b6 求 CRC。第三帧 0x11A 则根本没有 CRC 字节,b7 是多路复用(mux)载荷。需要强调:源文档自己的来源说明写明这些 CRC 结论属于「上游声明、未在本归档独立核验」,且该车型的精确年款、配置与固件均未确认。
本文整理自该研究文档与一份 ZE1 命名的 DBC 快照。文中所有结论的边界,都以下文「证据等级与边界」一节为准,不做拔高。
车辆与适用范围
素材包含两部分:一份以 Leaf ZE1 命名的 DBC(含 48 条消息、257 条信号行),以及作者围绕 0x1DA、0x1D4 的 CRC 处理所写的研究文档。文档称 CRC 结论曾用 4 帧已知良好的参考帧校验,但那 4 帧来自第三方 VCU 样机与日产逆变器的采集,并非本归档内独立复核。
| 项 | 内容 |
|---|---|
| 车型 | 日产 Leaf(DBC 以 ZE1 命名,即 Leaf-CAN_ZE1.dbc) |
| 年款 / 市场版本 | 源文档未确认;精确年款、配置与固件 applicability 均未建立 |
| ECU / 改装状态 | 涉及逆变器状态帧与扭矩请求帧;文档语境为第三方 VCU 搭配日产逆变器的样机 |
| 采集跨度 | CRC 结论基于文档所述 4 帧参考帧;未给出完整日志规模 |
| 适用范围 | 仅限该 DBC 快照与文档所声明的帧;不得外推至其他年款或固件 |
总线与寻址
本文素材没有给出该车的物理层速率或 11 位 / 29 位寻址结论,也没有 CAN FD 的说明。文档讨论的是帧级 CRC 与字段布局,工作对象是 0x1DA、0x1D4、0x11A 三个 8 字节帧。下表只列文档明确涉及的内容,其余标注为源文档未给出。
| 项 | 内容 |
|---|---|
| 物理层速率 | 源文档未给出 |
| 寻址 | 源文档未给出 11 位 / 29 位结论 |
| CAN FD | 源文档未提及 |
| 帧长 | 所涉三个帧均为 8 字节载荷 |
| 校验字段位置 | 0x1DA 与 0x1D4 的 CRC 在 b7;0x11A 无 CRC,b7 为 mux 载荷 |
已解码信号
下表汇总文档给出的 CRC 参数、帧结构与 DBC 片段中的字段。凡未标注独立复核的,均沿用「上游声明」边界。位宽写法如 23|12 表示起始位 23、宽 12 位;@0- 表示 Motorola 字节序、有符号。
| 信号 | 位置(ID / 位域) | 解码 | 证据 |
|---|---|---|---|
| CRC_1D4(发送校验) | 0x1D4 b7(DBC 56|8) |
poly 0x85、init 0x00、无输出异或、输入为 b0 至 b6(不拼帧 ID) | 上游声明,未独立核验 |
| 0x1DA 线上校验 | 0x1DA b7 |
poly 0x85、init 0x00、输出异或 0xBF、输入为 [0xDA, b0..b6] |
上游声明;按文档所述对 4 帧参考帧吻合 |
| 时钟选择 clock | 0x1DA b6 低 2 位 |
clock = b6 与 0x03 |
上游声明 |
| HCM_CLOCK | 0x1D4 38|2 |
2 位计数,对应 b4 滚动(见下) | DBC 片段 |
| MotorAmpTorqueRequest | 0x1D4 23|12 @0- |
比例 0.25,范围 0 至 1024 Nm | DBC 片段 |
| ChargeStatus | 0x1D4 48|8 |
MODEMASK 取值 |
DBC 片段 |
| StatusOfHighVoltagePowerSupply | 0x1D4 34|1 |
1 位状态 | DBC 片段 |
| Relay_Plus_Output_Status | 0x1D4 46|1 |
1 位状态 | DBC 片段 |
| JoystickGearPosition | 0x11A 4|4 |
4 位 | DBC 片段 |
| CarOnOffStatus | 0x11A 13|3 |
3 位 | DBC 片段 |
| Multiplexor M(mux) | 0x11A 48|8(b6) |
选择器,逐帧 0、1、2、3 循环 | DBC 片段与文档 |
| HeartbeatVCM | 0x11A 24|8(b3) |
取值在 85 与 170 之间(文档记 b1 应为 0x40) |
DBC 片段 |
| ECOselected | 0x11A 12|1 |
1 位 | DBC 片段 |
| 0x11A 的 mux 载荷 | 0x11A b7 |
mux0 至 3 对应 0x6B、0xEE、0xE4、0x61 |
文档表 |
读取方法与注意事项
接收侧校验。对 0x1DA,文档的做法是:用 [0xDA, b0..b6] 求 poly 0x85、init 0x00、xorOut 0xBF 的结果,与收到的 b7 比较,不等即判为坏帧;文档还给出一种运行时策略——连续坏帧达到 10 次则关闭 CAN 回退。
发送侧构造(文档语境)。0x1D4 每 10 毫秒发送一次:b0、b1 为静态 0x6E,b2、b3 为 0x00,b4 是滚动计数器,b5 为静态充电状态 0x44,b6 为静态 0x01,b7 填入按上文规则算出的 CRC。文档强调 b4 的计数器必须按 0x87 → 0xC7 → 0x07 → 0x47 循环,且 0x11A 的 b1 必须是 0x40,否则逆变器会持续拒帧。
第三帧无 CRC。0x11A 是每 10 毫秒的心跳:b0 至 b5 为静态字节,b6 逐帧循环 0、1、2、3 作 mux 选择器,b7 随 mux 取对应值,没有校验字节。文档把 b7 明确称为「启动 / mux 载荷数据」,并指出它「不是 CRC 字节」。
操作提示。以上帧属于车辆逆变器通信;任何在真实总线上发送或改写这些帧的操作都会影响实车,风险自负。本文只转述源文档的算法描述,不构成操作指引;源文档未提供安全访问绕过方法,也不建议尝试。
证据等级与边界
第一层边界来自来源说明本身:该归档明确写着,DBC 与其中若干信号「解析器兼容性与信号准确性需要独立复核」,且文中标注了诸如 SG_: 这样的畸形语法与形如 4294967256 这类不合理的无符号物理下限;CRC 结论是上游声明,未在本归档独立验证;精确车型年款、配置与固件 applicability 未确认。许可方面,检查的快照中也没有发现通用仓库许可证,仅作为私有离线研究副本保留。
第二层边界来自文档自己的措辞:它把结论表述为「已验证并工作」,但依据的 4 帧参考帧来自第三方样机,不是本归档的实测;文档另记录了三类被否定的旧做法(例如错误的 0x1D29 多项式),不应被当作可用方案。
因此,本文给出的 CRC 参数、计数器循环与字段布局,只能视为「这份 ZE1 命名 DBC 与这份文档所声明的范围」,不能外推到其他 Leaf 年款、其他固件或其他逆变器组合。需要真值时应以实车采集与独立复核为准。
常见问题
0x1DA 和 0x1D4 的 CRC 到底差在哪?
差在两处:0x1DA 把帧 ID 字节 0xDA 拼进输入、并对结果异或 0xBF;0x1D4 不拼帧 ID、也不做输出异或,只对 b0 至 b6 求 CRC。两者共用同一个 MSB-first 多项式 0x85。
0x1D4 的 b4 计数器为什么必须按 0x87 → 0xC7 → 0x07 → 0x47 循环?
这是源文档记录的要求:计数器不按该顺序滚动时,逆变器会拒帧并给出状态「100 000」。文档把「计数器未按 10 毫秒循环」列为导致拒帧的可能原因之一。
逆变器状态「100 000」和「000 000」分别是什么意思?
按文档,状态「100 000」表示帧被拒绝,「000 000」表示帧被接受。文档还列出可能导致拒帧的原因,包括 0x1D4 的 CRC 错误、0x1D4 计数器未循环、0x11A 未发送或 mux 未循环,以及 0x11A 的 b1 不是 0x40。
0x11A 有没有 CRC 字段?
没有。文档明确说明 0x11A 不含 CRC,其 b7 是随 mux 选择器变化的启动 / 载荷数据,而非常规校验字节。
这些结论能直接套到别的 Leaf 上吗?
不能。来源说明写明 CRC 结论为上游声明、未在本归档独立核验,且精确年款、配置与固件 applicability 未确认。任何外推都需要以实车采集和独立复核为前提。
延伸阅读
- opendbc 的校验算法族:接收与发送为何不是同一套 —— 与本篇「同多项式、收发两种算法」的主题直接对应。
- CAN 报文解析的「健康位」在说什么 —— 帮助理解坏帧计数、计数器与回退策略。
- 车辆协议与 DBC 指纹:怎么判断一台车是不是同一套定义 —— 说明为何同一车系也要核对 DBC 与固件。
- 公开 CAN / DBC 数据集的整理与筛选 —— 本文素材即此类公开项目中的单车型档案。
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/kristianehr-leaf-ze1/docs/CRC_ALGORITHM_DEFINITIVE.md(本项目车型档案主来源,取用了 0x1DA / 0x1D4 / 0x11A 的 CRC 参数与帧结构)。 - 项目 01 ——
public-can-dbc-datasets/additional/kristianehr-leaf-ze1/docs/NISSAN_LEAF_1DA_CRC.md(取用了 0x1DA 的校验参数与 clock 定义)。 - 项目 01 ——
public-can-dbc-datasets/additional/kristianehr-leaf-ze1/SOURCE.md(取用了适用范围与「未独立核验」等边界说明)。
说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复