标签: 车型档案

  • 凯旋 Speed 400 的广播信号图:0x25A 转速与三种车速

    结论:这份档案针对凯旋 Speed 400 与 Scrambler 400 X(Bajaj 生产 398 cc 单缸、Bosch 电喷),是对诊断接插件被动监听得到的广播信号图。总线是 500 kbit/s、11 位标准 ID,钥匙打开即上线(即使发动机不转),总线负载约 1400 帧/秒、约 32 个不同 ID。最有辨识度的发现是三条:转速在 0x25A 上以 1 转/分分辨率给出;车速存在三个彼此不同的值(ECU 值、仪表值、GPS 真值);而总里程、进气温度、歧管压力不在广播里,只能 OBD 轮询读到。边界:用未端接的 DIY 抽头主动发送可能把控制器推向 bus-off,因此内容全部来自只监听;且克隆板与年款有别,需逐车复核。

    本文整理自该项目的广播信号图与说明。文档用星级给出置信度,本文原样保留。

    车辆与适用范围

    对象是凯旋 Speed 400 与 Scrambler 400 X 两款摩托。采集方式为对诊断接插件被动嗅探:用 ESP32 的 TWAI 控制器设成只监听模式,配一只 SN65HVD230 收发器(去掉 120 Ω 终端),抽头取 OBD 引脚 6(CAN-H)、14(CAN-L)与 12 V / 地。信号是通过刻意激励(刹车、离合、挡位、转向灯)与一次真实骑行确认的。

    项 内容
    车型 凯旋 Speed 400 与 Scrambler 400 X(Bajaj 生产 398 cc 单缸,Bosch EMS)
    年款 / 市场版本 源文档未确认(未绑定具体年款、ECU 版本或跨车适配)
    ECU / 改装状态 原厂 Bosch EMS;采集为非侵入式被动监听,无改装
    采集跨度 含一次真实骑行与多次刻意激励;文档未给出总时长
    适用范围 广播信号图为部分映射;克隆板与年款有别,需逐车复核

    总线与寻址

    文档给出链路层轮廓:500 kbit/s、11 位标准 ID、钥匙打开即上线,总线负载约 1400 帧/秒、约 32 个不同 ID。它是一张广播面的图,不是整车网络或诊断库。

    项 内容
    物理层 诊断接插件抽头(OBD 引脚 6 CAN-H、14 CAN-L)
    链路层 500 kbit/s,11 位标准 ID
    上线时机 钥匙打开(即使发动机不转)
    总线负载 约 1400 帧/秒,约 32 个不同 ID
    CAN FD 源文档未提及

    已解码信号

    下表从文档信号表抽取代表性条目。bN 为第 N 字节,bN:k 为第 N 字节第 k 位(bit 0 最低),bN:bM 为大端 16 位。星级沿用文档:三星为多会话复现或有物理证据、二星为单次会话强证据、一星为候选。

    信号 位置(ID / 字节) 解码 置信度
    发动机转速(细) 0x25A b5:b6(大端) rpm = raw,1 转/分分辨率,验证到 9271 三星
    发动机转速(粗) 0x140 b6 rpm = raw × 40,与 0x25A 一致(r = 1.00) 三星
    节气门(TPS1 / TPS2) 0x142 b0 / b1 % = (raw − 128) × 100 / 96,双线控传感器,基准 0x80 三星
    接合挡位 0x142 b3 0 为空挡,1 至 6 为挡位;按停留判定为「已接合挡」 三星
    车速(ECU 值) 0x296 b3:b4(大端) km/h = raw × 0.01;GPS 标定得 raw = 1.317 × 真值(r = 0.965) 三星
    车速(轮速) 0x102 b1:b2 / b3:b4(大端) km/h = raw × 0.0625(1/16),接近真实地面速度 三星
    冷却液温度(显示) 0x405 b7 °C = raw − 40;这是显示值,非原始传感器 三星
    环境气温 0x147 b3 °C = raw − 40;随天气在约 12 至 28 摄氏度之间 三星
    燃油液位 0x555 b1 raw 0 至 255(非线性);低油位灯在 raw 约 90 点亮 三星
    电池电压 0x142 b7 V = raw × 0.1(充电 14.2 V,熄火 12.7 V) 三星
    侧撑 0x142 b6.1 该位为 1 表示放下 三星
    刹车 0x146 b1.0 该位为 1 表示正在刹车 二星
    转向灯 0x536 b2.0 该位为 1 表示激活(左 / 右尚未区分) 三星
    水箱风扇 0x405 b5.5 该位为 1 表示风扇开启 三星
    机油压力灯 0x400 b3.7 低有效(为 1 表示正常) 三星
    ABS 状态 0x121 ID 已确认(原厂故障码 U1000),具体字节尚未定位 一星

    读取方法与注意事项

    只监听,别主动发。文档最重的注意事项是:不要用廉价适配器主动轮询——在这个平台上,从未端接的 DIY 抽头发送可能把 CAN 控制器推向 bus-off 并中断接收。不过文档也澄清:用已正确端接的适配器做 OBD 轮询,实测整趟骑行没有 bus-off,因此该风险特定于「DIY 抽头在发送」,而非「合规适配器的轮询」。

    车速有三个,不要混用。文档用 GPS 对齐(r = 0.965)得到三套关系:ECU 值 0x296 × 0.01 = 1.317 × GPS 真值;骑手看到的仪表值 = raw × 0.89(约比 GPS 高 17%);真正的地面速度 = raw × 0.76。文档另指出轮速 0x102 × 1/16 约等于 0.87 × raw,与结论自洽。

    挡位是「已接合挡」。文档用停留时间来论证:日常巡航时该值能保持数百帧不变(换挡杆输入会松手回中);另有一个瞬时换挡信号在 0x406 / 0x407 上。

    温度要分清「显示值」与「真实值」。文档通过诊断对照发现:0x405 b7 是显示值(冷车时被钉在约 90 摄氏度,真实传感器冷态只有 28 摄氏度),真实冷车 / 过热应看 OBD 0105;0x147 b3 是环境气温而非进气温度。

    证据等级与边界

    文档星级即硬边界:三星为多会话复现或有物理证据,二星为单次会话强证据,一星为候选。表中二星与一星条目(如刹车、ABS)尚未达到确认级别。

    来源说明还列出几层限制:精确年款、ECU 版本与跨车适配未建立;仓库未附带原始 CAN 采集,无法独立回放;候选字段与尚未解决的左右转向灯区分不应被视为已确认;该 DBC 只是部分广播映射,不是完整的摩托网络或诊断库。文档也说明它是社区逆向成果,不隶属于凯旋或 Bajaj,并建议依赖任何结论前先在你自己的车上验证。

    据此,全部信号含义、比例与「不广播」的结论都不能外推到其他 Speed 400 / Scrambler 400 X 或其他车型,克隆板与年款差异更需逐车核对。

    常见问题

    Speed 400 的广播里能读到哪些量?

    文档记录的有:转速(0x25A 细、0x140 粗)、节气门、已接合挡位、车速与轮速、冷却液显示温度、环境气温、燃油液位、电池电压,以及侧撑、刹车、转向灯、水箱风扇、机油压力灯等开关量。

    为什么这台车的车速有三个不同的值?

    因为 ECU 值、仪表值与真实地面速度是三回事。GPS 标定得 ECU 值 0x296 × 0.01 约等于 1.317 倍真值,仪表显示约为 raw 的 0.89 倍(比 GPS 高约 17%),真实速度约为 raw 的 0.76 倍。

    为什么强调只监听、不主动轮询?

    文档记录:在这个平台上,从未端接的 DIY 抽头发送可能把 CAN 控制器推向 bus-off、中断接收,因此全部信号都靠只监听获得。但用一只正确端接的适配器做 OBD 轮询,实测整趟骑行也没有 bus-off,所以该风险特定于 DIY 抽头在发送。

    总里程、进气温度、歧管压力为什么读不到?

    因为它们不在广播里。文档逐字节、全字节宽、两种字节序地找过,都没匹配;这些量由 Bosch ECU 内部保留,只能通过诊断通道轮询(如 010B、010F、0105)取得。总里程甚至不在模式 01 中,只由仪表显示。

    转向灯的左右能区分吗?

    目前不能。0x536 的 b2.0 只报「激活」,左右之分需要一个带标注「先左后右」的采集才能确定,文档把它列为尚未解决项。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/tbtanmay111-triumph-speed-400/SIGNALS.md(本项目车型档案主来源,取用了逐信号表与置信度星级)。
    • 项目 01 —— public-can-dbc-datasets/additional/tbtanmay111-triumph-speed-400/README.md(取用了总线、采集方式与 OBD 轮询说明)。
    • 项目 01 —— public-can-dbc-datasets/additional/tbtanmay111-triumph-speed-400/SOURCE.md(取用了「未建立年款 / ECU 版本、无原始采集」等边界说明)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • Honda CL250 诊断档案:5 个 DID 与 UDS 轮询

    结论:这份 Honda CL250(摩托车)档案的一个关键事实是:源文档目前没有已知的 CL250 广播报文——它的 cl250.dbc 是零报文、零信号的骨架。可用的数据来自主动 UDS 轮询 5 个 DID:转速、车速、节气门绝对位置、冷却液温度与电池电压,经 ISO 15765-2 单帧传输,主寻址是 29 位 0x18DA10F1(ECU 地址 0x10、测试仪 0xF1),回退到 11 位 0x7E0/0x7E8。工程约束也被写得很细:单请求在飞、基础超时 100 ms、响应挂起(NRC 0x78)翻倍超时、连续 5 次超时跳过该 DID 5 秒。下述内容仅限源文档记录的这一套定义。

    车辆与适用范围

    源文档来自一个摩托车车载平台项目,它把 CL250 的 ECU 定义与一张项目自建 CAN 分开管理。定义文件说明每个数值都从一份旧固件项目提取,而该旧固件自述「已在真实摩托车上验证过 CAN/UDS 通路」;但来源说明同时指出,那份被引用的仓库在核对时已无法公开访问,没有原始抓包被独立检查过,且部分轮询周期与 11 位回退寻址在源文档里明确标注为未验证。

    项 内容
    车型 Honda CL250(摩托车),ECU 记为 CL250_ECU
    年款 / 市场版本 源文档未给出年款与市场版本
    ECU / 改装状态 原厂 ECU;读取侧是一个测试仪节点(rt-core 或连接节点),只读轮询
    采集跨度 源文档未给出日志数;数值来源为一份旧固件项目的提取
    适用范围 仅限本套定义;被引用的旧固件仓库核对时不可公开访问,原始抓包未独立检查

    总线与寻址

    源文档把总线参数标为「已验证」的是经典 CAN 500 kbit/s;主寻址与回退寻址分开列出,并明确回退寻址「ECU 实际应答哪一个未被记录」。此外还列了两个只监视(watch-only)的功能地址,用于探测是否存在第二个测试仪。

    项 内容
    物理层 双绞线 CAN;经典 CAN(classic_can)
    链路层 / 比特率 500 kbit/s(源文档标 verified)
    主寻址 29 位固定寻址:请求 0x18DA10F1、响应 0x18DAF110;ECU 地址 0x10、测试仪 0xF1
    回退寻址 11 位:请求 0x7E0、响应 0x7E8;标为未验证(未记录 ECU 应答哪个)
    只监视地址 功能地址 0x7DF 与 0x18DB33F1,只看不发
    传输层 ISO 15765-2;帧 DLC=8;补齐字节 0xAA;旧固件只处理单帧

    已解码信号

    下表登记 5 个 DID 的解码,以及关键的服务与会话定义。DID 的公式与「已验证」标记按源文档原样保留;轮询周期一行给出旧固件值与平台建议值,并保留「平台值为暂定」的标注。

    信号 / 项目 位置(DID / 命令) 解码 / 说明 证据 / 置信度
    转速 ENGINE_SPEED DID 0xF40C(OBD PID 0x0C) (A×256 + B) / 4 → rpm,量程 0–16383.75 源文档标 verified;旧固件轮询 50 ms,平台建议 110 ms(暂定)
    车速 VEHICLE_SPEED DID 0xF40D(PID 0x0D) A → km/h,量程 0–255 标 verified;优先级 high;平台建议 110 ms(暂定),新鲜度 300 ms
    节气门绝对位置 THROTTLE_POS DID 0xF411(PID 0x11) A × 100 / 255 → %,量程 0–100 标 verified;平台建议 200 ms(暂定)
    冷却液温度 COOLANT_TEMP DID 0xF405(PID 0x05) A − 40 → °C,量程 −40–215 标 verified;平台建议 800 ms
    电池电压 BATTERY_VOLTAGE DID 0xF442(PID 0x42) (A×256 + B) / 1000 → V,量程 0–65.535 标 verified;旧固件的 A/10 启发式未沿用
    诊断会话 请求 0x10 0x03 → 正响应 0x50 扩展会话;未确认前每 2000 ms 重试 标 verified
    TesterPresent 0x3E 0x80 每 1000 ms 无条件发送(抑制正响应) 标 verified
    允许的服务白名单 0x10/0x3E/0x22/0x19/0x01/0x09 只读与会话类;禁止 0x11/0x14/0x27/0x2E/0x2F/0x31/0x34/0x36/0x37,并禁止 0x10 子功能 0x02 平台策略(D-020)
    功能地址监视 0x7DF、0x18DB33F1 只看不发;看到帧即说明存在第二个测试仪 标未验证(标准值,非取自旧固件)
    项目自建总线转发 dbc/platform.dbc 9 条报文、52 条信号;把轮询到的值再发布出去,不是 OEM Honda 库 来源说明

    读取方法与注意事项

    第一是时序预算。源文档记录:同时只有一个请求在飞(IDLE → WAITING → 完成/超时 → IDLE);基础超时 100 ms;收到 NRC 0x78(响应挂起)时重置并把超时翻倍、上限 2000 ms,且请求仍留在等待态;其它 NRC 则把请求判为完成。连续 5 次超时的 DID 会被跳过 5000 ms。ECU 只要在最近 3000 ms 内有过正响应或任何 NRC,就视为「在线」。

    第二是优先级。DID 被分成 high / normal 两类,在同时到期的请求里先服务所有 high(本例中车速为 high,因为它喂给上游的航向估计),列表顺序只作同类内的平局判定。源文档强调优先级只改顺序、不改内容,且每个到期 DID 仍须在其新鲜度窗口内被服务。

    第三是 ISO-TP 首帧陷阱。旧固件只处理单帧(PCI 高半字节 0x0);若收到首帧(PCI 0x1X),其 data[1] 是长度字段的一部分、不是 SID,按 SID 解析会破坏状态。旧固件直接丢弃非单帧帧;由于当前所有 DID 都能放进单帧,这只防未来响应变长。源文档据此写明:完整的 ISO-TP 多帧(首帧 + 流控 + 连续帧)需在新实现里从头做。

    第四是总线恢复。进入总线关闭后按指数退避重试:起始 1000 ms、每次翻倍、上限 30000 ms。

    证据等级与边界

    可视为「文档级已验证」的是 5 个 DID 的公式与主寻址,以及会话/超时/退避这些时序常量——它们都带证据引用。属于明确未验证的是:11 位回退寻址(未记录 ECU 应答哪个)、功能地址监视(标准值,非取自旧固件)、以及平台的轮询周期(源文档标注为暂定,与旧固件周期不同)。

    两处不能外推。第一,公式与 DID 只针对 CL250 这一辆车的 ECU 定义;换到其它 Honda 车型需要重新核对。第二,来源说明指出被引用的旧固件仓库在核对时已无法公开访问,原始抓包未被独立检查,因此「已在该车验证」属于源文档的转述,不是本项目的独立复现。

    关于「安全访问」类问题:源文档把 0x27(SecurityAccess)列为禁止服务,且未提供任何绕过方法,不建议尝试;本文只整理公开文档登记的只读轮询,不涉及写 ECU 或绕过安全机制。

    常见问题

    CL250 的报文能不能直接从总线上监听?

    源文档表示目前没有已知的 CL250 广播报文,cl250.dbc 是零报文、零信号的骨架;可用的数据来自主动 UDS 轮询 5 个 DID。

    轮询哪 5 个值?周期是多少?

    转速(0xF40C)、车速(0xF40D)、节气门绝对位置(0xF411)、冷却液温度(0xF405)、电池电压(0xF442)。旧固件周期为转速 50 ms、其余 800 ms;平台建议值为 110/110/200/800/800 ms,并标注为暂定。

    超时和响应挂起怎么处理?

    基础超时 100 ms;收到 NRC 0x78 时重置并把超时翻倍、上限 2000 ms,请求保持等待;其它 NRC 判为完成;连续 5 次超时的 DID 跳过 5000 ms。

    用 11 位还是 29 位地址?

    主寻址是 29 位 0x18DA10F1(响应 0x18DAF110);11 位 0x7E0/0x7E8 是回退,源文档标注为未验证——未记录 ECU 实际应答哪一个。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/moto-platform-cl250/docs/legacy-telemetry-notes.md(主来源:UDS 状态机、NRC 表、总线恢复与 ISO-TP 陷阱)。
    • 项目 01 —— public-can-dbc-datasets/additional/moto-platform-cl250/uds/vehicle_cl250.yaml(DID 定义、寻址、会话与轮询时序)。
    • 项目 01 —— public-can-dbc-datasets/additional/moto-platform-cl250/README.md(项目结构、平台总线与 CL250 骨架的区分)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • 宝马 E9X 集成模块:K-CAN、PT-CAN 与 D-CAN 的消息翻译

    结论:这份档案来自一台 2008 年 E92 335i 上自制的 CAN 集成模块,它同时接入了 K-CAN、PT-CAN 与 D-CAN 三条总线。文档给出的速率是 K-CAN 100 kbit/s、模拟的 KCAN2 500 kbit/s;PT-CAN 与 D-CAN 的速率文档未标注。模块的核心工作是把老一代 BN2000 的消息翻译成新主机(NBT)能认的 BN2010 格式,并把一部分消息改走 K-CAN 以绕开网关延迟。边界有三条:代码与消息逻辑是「为这一辆 2008 E92 335i 定制的」;随附的两份 DBC 是该项目参考素材、不是经过验证的整网定义;文档还涉及对 DME 固件的定义修改,本文不复述其地址与字节,也不建议照做。

    本文整理自该项目的 README 与一份 BN2000 至 NBT 的消息翻译清单。文档本身多次强调其车型特定性,本文原样保留这层限定。

    车辆与适用范围

    项目对象是一辆 2008 年 E92 335i。文档在开头就写明:「代码对我这台车相当特定,但很多 CAN 消息逻辑可能有用。」硬件为一块 Teensy 4.0 三路 CAN 板(两路 CAN 2.0B、一路 CAN FD)配额外的一块 CAN 控制器用于主机模拟。

    项 内容
    车型 宝马 E92 335i(E9X 一代)
    年款 / 市场版本 2008(源文档未给出市场版本)
    ECU / 改装状态 自制集成模块,接入 K-CAN / PT-CAN / D-CAN;集成 F 系列主机(NBT / iDrive)
    采集跨度 源文档未给出;以功能清单与消息翻译清单形式记录
    适用范围 仅这一辆车;随附 DBC 为参考素材,非整网定义

    总线与寻址

    模块同时处理三条总线。文档明确的两处速率是:把 CAN 适配器速度设为 100000 对应 K-CAN、设为 500000 对应模拟的 KCAN2。PT-CAN 承载发动机扭矩等数据,D-CAN 用于诊断访问。文档说明消息发送被优化为走最短路径:需要送到仪表(KOMBI)的消息即使原厂走 PT-CAN,也会改发到 K-CAN,以绕开网关延迟。

    项 内容
    K-CAN 100 kbit/s(文档明确)
    KCAN2(模拟) 500 kbit/s(文档明确)
    PT-CAN 存在(承载发动机扭矩等);速率源文档未给出
    D-CAN 存在(诊断访问);速率源文档未给出
    寻址 消息以 11 位标准 ID 列出;CAN FD 能力由硬件支持

    已解码信号

    下表取自「BN2000 到 NBT」的消息翻译清单:左列为发往主机(NBT)的帧,右列为它的来源或处理方式。这些条目是该模块主动构造或翻译的消息映射,而不是某台车出厂网络的完整定义。

    帧 / 信号 ID 来源或处理 证据
    车辆状态 0x3C 由 BN2000 0x130 翻译 项目翻译清单
    终端状态 0x12F 由 BN2000 0x130 翻译 项目翻译清单
    道路倾角 0x163 经 0x6F1 取自报警器(SINE) 项目翻译清单
    俯仰角 X_VIEW 0x180 经 0x6F1 取自报警器(SINE) 项目翻译清单
    偏航率(陀螺) 0x19F 由 BN2000 0x1A0 翻译;NBT 硬件 10 及以上需要 项目翻译清单
    车速 0x1A1 由 BN2000 0x1A0 翻译 项目翻译清单
    距离 0x1C4、0x1C5 由 BN2000 0x1A6 翻译 项目翻译清单
    运动显示数据 0x253 运动显示相关 项目翻译清单
    亮度 0x2A5 由 BN2000 0x314 翻译 项目翻译清单
    PDC 状态 0x2C1 由 BN2000 0x3AF 翻译 项目翻译清单
    静止状态 0x2ED 由 BN2000 0x1A0 翻译 项目翻译清单
    转向角 / 有效转向角 0x301、0x302 由 BN2000 0xC8 翻译 项目翻译清单
    驱动模式开关 0x3A7 由 mdrive_status 与 dsc_program_status 适配 项目翻译清单
    MDrive 状态 0x42E 由 BN2000 0x399 翻译 项目翻译清单
    iDrive 音量 / 网关 0x6F1 承载 iDrive 音量与 SVT_70 网关等;检测到 OBD 工具在 D-CAN 通信时该组功能被关闭 项目 README

    读取方法与注意事项

    最短路径发送与队列。文档说明消息发送被优化为走最短路径以尽快到达接收模块,并用 FIFO 队列保证读写不被延迟阻塞。

    诊断访问下的自保。凡用到 0x6F1 的功能(如 iDrive 音量、SVT_70 网关),在检测到某个外部诊断工具于 D-CAN 上通信时会被停用。

    硬件与启动。文档列出的硬件包括 Teensy 4.0、MCP2562 收发器与用于主机模拟的 MCP2515 板;并提示为让部分启动时序敏感功能工作需修改 Teensy 启动代码。USB 类型随用途变化(单口常规、双口状态、三口 CAN USB 接口)。

    关于固件修改。文档提到对发动机 ECU 固件中与 CAN 消息表、CAN 过滤器相关的定义做过修改,并需要重算校验;还提到停用一部分原厂驾驶模式相关逻辑。这类操作属于对发动机 ECU 的固件改动,风险高且与本文主旨无关,本文不复述其地址、字节或步骤,也不建议照做。源文档未提供任何安全访问绕过方法。

    证据等级与边界

    来源说明把两份 DBC 的性质写得很清楚:EXX-BN2000.dbc(131 条消息、552 条信号行)与 FXX-BN2010.dbc(70 条消息、248 条信号行)是该项目的参考素材,不是针对每一款宝马 E / F 车型或年份验证过的整网定义;其中 EXX-BN2000.dbc 还在独立信号块里重复出现 TPCI、TA 等信号名,严格解析器可能拒绝;其他消息布局与 NBT 翻译未在本归档内对照实车核对。

    第二层边界来自项目自述:代码与 CAN 消息逻辑是为这一辆 2008 E92 335i 定制的,很多功能依赖具体选装件。因此文中列出的翻译关系与行为,只能视为「这台车 + 这套模块」的实现记录。

    据此,任何帧含义、来源映射或发送策略都不能外推到其他 E9X 或其他宝马车型;需要真值时应以本车抓包与独立复核为准。

    常见问题

    E9X 上有哪几条 CAN 总线?

    文档涉及三条:K-CAN、PT-CAN 与 D-CAN。其中明确给出速率的是 K-CAN(100 kbit/s)与模拟的 KCAN2(500 kbit/s);PT-CAN 与 D-CAN 的存在可以确认,但速率源文档未标注。

    为什么要把消息改发到 K-CAN 上?

    为了走最短路径。文档说明:需要送达仪表(KOMBI)的消息,即使原厂会经 PT-CAN,也被改发到 K-CAN,以绕开网关(JBE)带来的延迟。

    随附的 DBC 能当整网定义用吗?

    不能。来源说明写明两份 DBC 是该项目的参考素材,不是针对每一款车型或年份验证过的整网定义;EXX-BN2000.dbc 还存在重复信号名,严格解析器可能拒绝。未在本归档内做实测核对。

    0x6F1 相关的功能什么时候会失效?

    文档记录:当检测到某个外部诊断工具在 D-CAN 上通信时,凡用到 0x6F1 的功能(如 iDrive 音量、SVT_70 网关)会被停用,以避免冲突。

    本文会给出 DME 固件修改的步骤吗?

    不会。文档确实提到对发动机 ECU 固件里 CAN 消息表与过滤器的定义做过修改并需重算校验,但这类操作风险高,本文只作事实提及,不复述地址、字节或步骤,也不建议照做;源文档未提供任何安全访问绕过方法。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/superwofy-bmw-e9x-can/README.md(本项目车型档案主来源,取用了总线、硬件与功能清单)。
    • 项目 01 —— public-can-dbc-datasets/additional/superwofy-bmw-e9x-can/Message translation for NBT.txt(取用了 BN2000 至 NBT 的消息翻译清单)。
    • 项目 01 —— public-can-dbc-datasets/additional/superwofy-bmw-e9x-can/SOURCE.md(取用了两份 DBC 的规模与「非整网定义」边界)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • Volvo P1 双 CAN 档案:HS 500 kbit/s 与 LS 125 kbit/s

    结论:Volvo P1 平台(V50 / S40 / C30 / C70)不是一张 CAN,而是两张经 CEM 网关相连的网络:高速网(HS)跑 500 kbit/s,承载发动机、助力转向、制动/ABS、方向盘传感器与踏板;低速网(LS)跑 125 kbit/s,承载收音机、车门模块、仪表(DIM)、空调(CCM)与 CEM。所有 ID 都是29 位扩展帧。更关键的一条边界是:较早年款需要先通过 K 线激活诊断继电器,CAN 才会出现在 OBD2 接口上。源文档的 HS 表来自 18 份实车日志(约 94.8 万帧)、LS 表来自另一台 C30,两者都不是全平台验证。下述结论仅限源文档记录的这些车辆与年款。

    车辆与适用范围

    源文档是一份公开研究整理的 CAN 参考表(原文为捷克语),同时给出拓扑、ID 表、若干字节拆分与一个「助力转向泵完整配方」。它自述 HS 表来自某个 V50 项目的 18 份抓包,LS 表来自一台 C30 T5 2011 加另一套 CCM/CEM 仿真。

    项 内容
    车型 Volvo P1 平台:V50 / S40 / C30 / C70
    年款 / 市场版本 HS 表来自一台柴油 V50(未给年款);LS 表来自一台 C30 T5 2011;汽油版与其他年款未独立确认
    ECU / 改装状态 原厂网络;HS 侧含 ECM、助力转向(PSP)、制动/ABS、方向盘传感器、踏板;LS 侧含收音机、车门模块、DIM、CCM、CEM
    采集跨度 HS:18 份抓包、约 948,000 帧(一台车);LS:一份 C30 2011 的接收列表 + CEM/CCM 仿真观察
    适用范围 仅限源文档记录的这两台车与其年款;HS DBC 自述「建立在一台具体 V50 的日志上」

    总线与寻址

    源文档把拓扑画得很清楚:两张网经 CEM 网关相连。HS 与 LS 的速率不同,且都是 29 位扩展 ID;生成的 DBC 需要设扩展标志(0x80000000),否则多数工具会当成标准帧。HS 表还给出一条很有用的启发式——每字节的「变化度」列(X 表示变化大、点表示变化小、横线表示恒定),用来判断哪里值得找信号。

    项 内容
    物理层 双绞线 CAN,两张网经 CEM 网关互连
    链路层 / 比特率 HS 500 kbit/s;LS 125 kbit/s
    寻址方式 29 位扩展 ID(DBC 需带 0x80000000 标志)
    CAN FD 否;按经典 CAN 处理
    OBD 可达性 较早年款需先经 K 线激活诊断继电器,CAN 才在 OBD2 接口可用

    已解码信号

    下表抽取 HS 与 LS 的代表性条目,并附一段诊断读数。源文档大量字段标注为「未解码」「仅推测」,这些标注按原样保留;LS 侧尤其如此。

    信号 / 功能 位置(ID / 字节 / 位) 解码 / 说明 证据
    发动机转速 HS 0x00800006 ECM_EngineData,B7 原始值 110 = 0 rpm(原始值口径,未给完整换算) 18 份实车日志
    仪表背光亮度 HS 0x0100082C Dashboard,B0 低半字节 调整亮度 实车日志
    光敏(环境光) HS 0x0100082C,B1 位 7 位 实车日志
    油门/离合器踏板传感器 HS 0x0110483C PedalSensors 源文档未细分到具体位 实车日志
    助力转向速度指令 HS 0x02104136 PSP_SpeedCmd,B6-B7 0x0001 = 满转速;值越大越慢,范围 1–6000 助力转向协议(第三方)
    制动 / 油门 HS 0x0300410E BrakeThrottle 源文档未细分到具体位 实车日志
    方向盘传感器 HS 0x0340412E SteeringWheelSensors 转角 / 角速度(未细分到具体位) 实车日志
    方向盘按键 HS 0x19000026,B7 按键码(已知 0x20) 实车日志
    点火状态 HS 0x19E00006 Ignition,B6 位 6 位 实车日志
    助力转向 keep-alive HS 0x1AE0092C,B1 轮转序列 0x00 → 0x40 → 0x80 → 0xC0;样例帧 00 00 22 E0 41 90 00 00 第三方协议 + 实车日志(周期 2000 ms vs 日志约 420 ms)
    助力转向状态 HS 0x1B200002,12 位 ((B6 & 0x0F) << 8) | B7 1105 初值 / 3953 怠速 / 3955 运转,三值均在实车日志出现 实车日志
    仪表控制(关键) LS 0x09C050B8 GaugeCluster_Ctrl B0 上 nibble 0x40、下 nibble = 背光亮度 0–15;B1 里程增量;B3/B4 转速 16 位;B5 低 nibble 显示消息码 CEM/CCM 仿真字节拆分
    中控按键 LS 0x05704000 B4 位 0-1/2-3/6-7 = EXIT/MENU/POWER;B5 位 6-7 = ENTER;B7 = UP/DOWN/LEFT/RIGHT 仿真字节拆分
    空调设置 LS 0x12404002 B0 右侧温度、B1 左侧温度、B4 常量 0x43 仿真字节拆分
    油量 LS 0x1AD10068 B0 = 油位;B1 = 0x04 仪表运行 / 0x07 熄火 仿真字节拆分

    另有一段诊断读数:源文档描述的一种厂方诊断风格协议,首个字节是长度、第二个是 ECU 地址,形如 [0xC8+字节数][ECU 地址][命令][参数…];ECM 地址为 0x7A,读数据用 0xA6。已记录的缩放入下:

    标识 含义 缩放
    0x101D 转速 × 40 rpm
    0x1140 车速 × 1.25 km/h
    0x9D 增压压力 × 10 hPa
    0xD8 / 0xCE 冷却液 / 进气温度 × 0.75 − 48 → °C
    0x36 点火提前角 × 191.25 / 255

    读取方法与注意事项

    第一是可达性:源文档说较早年款要先经 K 线激活诊断继电器,CAN 才会出现在 OBD2 接口上;否则在标准诊断口上可能什么都看不到,且这容易被误判为「车不支持」。

    第二是寻址位数:所有 ID 都是 29 位扩展帧。源文档提醒,生成 DBC 时必须设扩展标志 0x80000000,否则多数工具会把 ID 当成标准帧,导致匹配失败。

    第三是「哪些字节值得看」。HS 表为每个 ID 都标了 B0–B7 的变化度(X / 点 / 横线),这是最快的筛选手段——恒定字节不用找信号,变化大的字节优先。未解码报文在 DBC 里只对「日志中确实变化」的字节生成占位信号(<名称>_B0 … _B7),可直接在抓包工具里画图找相关性。

    第四是助力转向泵需要「两条报文同时在线」:keep-alive(0x1AE0092C,只看 B1 的轮转)与速度指令(0x02104136,B6-B7)。源文档记录:没有 CAN 时泵按固定约 75% 功率运行;丢失 keep-alive 后约 5 秒进入失效保护,但保持最后下发的转速。这里只做整理,不建议照此在实车上驱动执行器。

    证据等级与边界

    可视为实车证据的是 HS 表(18 份抓包、约 94.8 万帧)与三条助力转向状态的取值;属于仿真/文档级的是 LS 侧的字节拆分(来自 CCM/CEM 仿真)与部分周期;属于明确未解码的是 HS 与 LS 表里大量标注为「未解码」的 ID。

    不能外推的地方有三处。第一,HS DBC 明确自述「建立在一台具体柴油 V50 的日志上」,汽油版与其他年款可能有 ID 的子集或超集。第二,LS 表来自一台 C30 2011 加仿真,并非 P1 全系;例如遥控电池 ID 在日志里是 0x1E30104A,而 CEM 仿真用 0x1E30106A,源文档自述「其一为笔误,或按年款不同」。第三,源文档保留了「未解码/仅推测」的字段,这些不能当作已确认信号。

    关于「安全访问」类问题:源文档未提供任何绕过方法,且不建议尝试。它列出的厂方诊断风格命令里包含激活类服务,本文不展开,也不建议在实车上执行写入或激活操作。

    常见问题

    为什么在 OBD2 口上抓不到 Volvo P1 的 CAN?

    源文档说明较早年款需要先通过 K 线激活诊断继电器,CAN 才会出现在 OBD2 接口上;否则标准诊断口上可能没有流量。

    HS 和 LS 是一张网吗?

    不是。P1 有两张网经 CEM 网关相连:HS 500 kbit/s(发动机、助力转向、制动、方向盘传感器、踏板)与 LS 125 kbit/s(收音机、车门模块、DIM、CCM、CEM)。

    这些 ID 是 11 位还是 29 位?

    全部是 29 位扩展 ID。源文档提醒生成 DBC 时要设扩展标志 0x80000000,否则会被当成标准帧而匹配失败。

    助力转向泵为什么需要两条报文?

    源文档记录它需要 keep-alive(0x1AE0092C,看 B1 的轮转)与速度指令(0x02104136,B6-B7 的 0x0001 表示满转速)同时在线上;缺 keep-alive 约 5 秒后进入失效保护。本文只整理协议,不建议照此驱动执行器。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/chuck3cz-volvo-p1/UPSTREAM_README.md(主来源:拓扑、HS/LS ID 表、字节拆分与助力转向协议)。
    • 项目 01 —— public-can-dbc-datasets/additional/chuck3cz-volvo-p1/VOLVO_P1_CAN_REFERENCE.md(同内容的参考表)。
    • 项目 01 —— public-can-dbc-datasets/additional/chuck3cz-volvo-p1/SOURCE.md(快照范围、DBC 报文/信号条数与证据边界)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • 菲亚特 Fiorino 的 B-CAN:50 kbps 上的车速、转速与油量

    结论:菲亚特 Fiorino(Fiat Mini 平台)的 B-CAN 是 CAN 2.0B、29 位扩展标识符、ISO 11898-3 低速容错物理层、50 kbps、大端(Motorola,MSB 在前)。文档记录了一个紧凑的帧矩阵:车速、转速、冷却液温度、喷油量、续航、油量等都能从几条固定 ID 上被动读到。这套解码背后有一个现实动机——Fiat Mini 平台的仪表存在一个出厂软件缺陷,总里程一到 399999 公里就永久冻结;作者因此让 ESP32 自行计算并存储里程,且系统随车通过了西班牙官方的 ITV 检验。边界:帧矩阵按平台记录,具体到某一辆车仍需核对,任何改动都应先在台架确认。

    本文整理自该项目的 CAN 矩阵文档与工程说明。文档把帧矩阵定义为「逆向得到的 Fiat Mini 平台 B-CAN 网络」,本文保留这一来源限定。

    车辆与适用范围

    项目以一辆 Fiat Fiorino 为对象,用一块 ESP32 加自定义载板替换原厂中央单色液晶,读 B-CAN 实时遥测并渲染自定义界面。文档提到同类平台的车型(Fiorino、Grande Punto、Alfa Romeo MiTo)共享这套仪表缺陷,因此帧矩阵按 Fiat Mini 平台陈述。

    项 内容
    车型 菲亚特 Fiorino(Fiat Mini 平台;同平台另有 Grande Punto、Alfa Romeo MiTo)
    年款 / 市场版本 源文档未给出具体年款;项目语境为西班牙市场(需通过 ITV 检验)
    ECU / 改装状态 用 ESP32 + 自定义载板替换原厂中央单色液晶;原厂仪表仍作为被替换对象存在
    采集跨度 源文档未给出;随车通过了西班牙官方 ITV 检验
    适用范围 按 Fiat Mini 平台记录的帧矩阵;逐车细节仍需核对

    总线与寻址

    文档把 B-CAN 定义为 CAN 2.0B、29 位扩展标识符,物理层是低速容错 CAN(ISO 11898-3),50 kbps,字节序为大端(Motorola,MSB 先)。接入侧使用 TJA1055T(低速容错 B-CAN 收发器),配合电平转换芯片适配 3.3 V / 5 V。

    项 内容
    物理层 低速容错 CAN(ISO 11898-3),50 kbps
    链路层 CAN 2.0B,29 位扩展标识符
    字节序 大端(Motorola,MSB 在前)
    收发器 TJA1055T 低速容错 B-CAN 收发器 + 电平转换
    CAN FD 源文档未提及

    已解码信号

    下表逐条取自文档帧矩阵。解码式中 B_n 表示第 n 个字节,位移写法保留原文。

    信号 位置(ID / 字节) 解码 证据
    发动机转速 0x04214001 字节 6 Byte[6] × 32(32 转/分/位) 文档帧矩阵
    喷油量 0x04214001 字节 4、5 ((B4 左移 8) 或 B5) ÷ 100.0,单位 mm³/行程 文档帧矩阵
    发动机温度 0x04214001 字节 3 B3 − 40,摄氏度 文档帧矩阵
    燃油消耗(推导) 0x04214001 字节 3 至 6 (raw_iq × RPM × 1.2) ÷ 1e6,升/小时(按 4 缸 4 冲程推导) 文档帧矩阵(派生量)
    总里程 0x0C014003 字节 1 至 3 (B1 左移 16) 或 (B2 左移 8) 或 B3,公里 文档帧矩阵;不采用,见下(399999 公里后冻结)
    续航 0x0C014003 字节 4、5 ((B4 与 0x03) 左移 8) 或 B5(字节 4 需掩码) 文档帧矩阵
    车速 0x04394000 字节 0、1 ((B0 左移 8) 或 B1) × 0.0625,km/h 文档帧矩阵
    燃油液位 0x06214000 字节 5 Byte[5],直接取百分比 文档帧矩阵

    读取方法与注意事项

    先查 DLC,再取载荷。文档把「提取载荷前必须检查 DLC」列为安全要求,用于防止缓冲区越界读。这一条对 0x04214001 这类大端多字节字段尤其重要。

    0x0C014003 是复用帧。文档说明这一帧同时承载「总里程」和「续航」两组信息(多路复用),解析时要按同一帧内的不同字节段分别取用,不能只当一种含义。

    里程为何要自己算。这是本项目的核心动机:Fiat Mini 平台的仪表存在出厂缺陷,总里程到达 399999 公里后永久冻结、不再记录。文档因此让单片机从 B-CAN 实时遥测独立计算并安全存储总里程,并把它写入外部的 AT24C32 EEPROM(经 I2C,配合 DS3231 实时时钟),以避免磨损 ESP32 内部闪存。文档记录:该车带着这套系统通过了西班牙官方的 ITV 检验,作为可靠性的一次实证。

    两条核对手段。固件提供「被动 CAN ASCII 流式输出」(用一个编译开关打开),按标准 LAWICEL/SLCAN 格式(如 t1238…)把原始 B-CAN 帧输出到串口,便于用任意串口终端或自写脚本记录;界面上还有硬件状态浮层,用于提示 EEPROM 状态、熄火保存与内存损坏错误。

    证据等级与边界

    文档给出的帧矩阵被明确定义为「逆向得到的 Fiat Mini 平台 B-CAN 网络」,属于社区工程结果,而不是厂家规格。其中「燃油消耗」被文档自述为派生量(由喷油量与转速按 4 缸 4 冲程推导),而非总线上直接广播的字段;「总里程」虽可从帧中解出,但文档明确不采用该值,原因是它在 399999 公里后冻结。

    验证层面有两处相对硬的证据:其一,该车带着这套嵌入式方案通过了西班牙官方的 ITV 检验,文档把它作为「可靠且准确」的实证;其二,项目提供了原始 B-CAN 帧的被动流式输出,便于独立复核。但文档未给出逐信号置信度,也未绑定具体年款与配置。

    因此边界是:帧矩阵按 Fiat Mini 平台陈述,同平台车型(Fiorino、Grande Punto、MiTo)可能共享,但具体到某一辆车、某一年的配置仍需逐车核对;更换仪表属对车辆电气系统的改动,任何操作都应在台架或合规前提下进行。

    常见问题

    Fiorino 的 B-CAN 是什么协议和速率?

    文档定义为 CAN 2.0B、29 位扩展标识符、ISO 11898-3 低速容错物理层,速率 50 kbps,字节序为大端(Motorola,MSB 在前)。收发器用的是低速容错型号 TJA1055T。

    为什么不用总线上读到的总里程?

    因为 Fiat Mini 平台的仪表存在出厂缺陷:总里程到达 399999 公里后永久冻结、不再记录。项目因此让 ESP32 从实时遥测独立计算总里程,并写入外部 EEPROM 保存,而不是直接采信被冻结的广播值。

    车速和转速的解码式分别是什么?

    车速在 0x04394000 字节 0、1:((B0 左移 8) 或 B1) × 0.0625 km/h。转速在 0x04214001 字节 6:Byte[6] × 32,分辨率 32 转/分。

    解析时有哪些必须注意的工程细节?

    三点:提取载荷前先检查 DLC,防止越界读;0x0C014003 是复用帧,同时承载总里程与续航,要分段取用;全程按大端解析多字节字段。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/raul-fiat-fiorino-can/docs/Can_Matrix.md(本项目车型档案主来源,取用了总线规格与帧矩阵)。
    • 项目 01 —— public-can-dbc-datasets/additional/raul-fiat-fiorino-can/README.md(取用了 399999 公里冻结背景、硬件选型与 ITV 检验结论)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • Honda 旧版 openpilot 子集:DBC 名与 ECU 固件指纹

    结论:这是一份旧版开源辅助驾驶项目的 Honda 子集档案,它记录的不是「某台车抓到了哪些帧」,而是「怎么认出一台 Honda 是哪款」:用 ISO 15765-4 的 29 位固定寻址(0x18DA<TA>F1)向一串 ECU 读固件版本号,再拿版本号前缀去匹配车型;同时按硬件族(Nidec 与 Bosch A / Bosch B)挑选对应的 DBC 与线束,并为每个车型设定最小转向速度。它覆盖 Civic、Accord、CR-V、Fit、Odyssey、Pilot、Insight、HR-V、Passport、Ridgeline 与 Acura ILX / RDX 等多款车。下述内容只适用源文档记录的这一份车型与固件表。

    车辆与适用范围

    源文档是一份旧版开源项目的静态快照:根文档是项目的通用说明,车型细节集中在 Honda 的车型常量文件里。文件同时保留了大量固件版本号样本,用于把「读到的一组版本号」映射回具体车型。

    项 内容
    车型 Honda:Civic(含 2016-18、2019-21、2022、Hatchback、1.6 柴油)、Accord / Accord Hybrid、CR-V(含 5G、EU、Hybrid)、Fit、Freed、HR-V、Odyssey、Pilot、Passport、Ridgeline、Insight、Honda e;Acura:ILX、RDX(含 3G)
    年款 / 市场版本 以车型常量里的年份区间为准(如 Civic 2016-18 / 2019-21 / 2022);部分条目注明市场(如 Odyssey CHN、CR-V EU)
    ECU / 改装状态 原厂;按车型使用 Nidec 或 Bosch A / Bosch B 线束
    采集跨度 源文档未给出抓包数;车型常量登记了每个 ECU 的固件版本样本列表
    适用范围 仅限源文档所列车型与固件版本;未列入的版本需自行补录,不能假定兼容

    总线与寻址

    这份档案的寻址方式很规整:对每个 ECU 用 0x18DA<目标地址>F1 的 29 位物理请求(F1 是测试仪地址),读回的固件版本号再按车型分组。DBC 侧则按硬件族命名,并给个别车型挂了单独的 body DBC。

    项 内容
    物理层 双绞线 CAN;经车型线束接到相应总线
    链路层 / 比特率 源文档未在本文件给出比特率
    寻址方式 ISO 15765-4 29 位固定寻址:请求 0x18DA<TA>F1,测试仪地址 F1
    CAN FD 源文档未涉及;按经典 CAN 处理
    硬件族 Nidec 与 Bosch A / Bosch B 三套;DBC 名如 honda_civic_touring_2016_can_generated、honda_accord_2018_can_generated、honda_civic_ex_2022_can_generated

    已解码信号

    主素材的「信号级」内容集中在ECU 的请求地址与固件版本前缀上,因此下表登记每个 ECU 的寻址与版本号前缀形态,并给出代表性车型的版本样本。个别条目源文档标注为「修改版固件」,按原样保留。

    ECU 位置(请求地址) 固件版本前缀(样本) 证据
    发动机 PCM 0x18da10f1 37805-… 车型常量 FW_VERSIONS
    线控换挡 0x18da0bf1 54008-… 车型常量 FW_VERSIONS
    变速箱 TCM 0x18da1ef1 28101-… / 28102-… / 28103-… 车型常量 FW_VERSIONS
    电动制动助力 0x18da2bf1 46114-… / 39494-… 车型常量 FW_VERSIONS
    VSA 车身稳定 0x18da28f1 57114-… 车型常量 FW_VERSIONS
    EPS 电动转向 0x18da30f1 39990-… 车型常量 FW_VERSIONS;个别项标注「修改版固件」
    SRS 安全气囊 0x18da53f1 77959-… 车型常量 FW_VERSIONS
    组合仪表 0x18da60f1 78109-… / 78108-… 车型常量 FW_VERSIONS
    HUD 0x18da61f1 78209-… 车型常量 FW_VERSIONS
    前向毫米波雷达 0x18dab0f1 36802-… 车型常量 FW_VERSIONS
    前视摄像头 0x18dab5f1 36161-… 车型常量 FW_VERSIONS
    网关 0x18daeff1 38897-… 车型常量 FW_VERSIONS

    读取方法与注意事项

    第一,识别是「多 ECU 组合」而不是单点。源文档为每款车登记了若干 ECU 的版本号列表,匹配时是把读到的整组版本号与车型的列表比对;只读到某一个 ECU 的版本不足以定车。

    第二,硬件族决定用哪套 DBC 与线束。源文档把车型分成 Nidec 与 Bosch 两族,Bosch 又细分到需要 Bosch A 或 Bosch B 线束:Civic 2016-18 用 Nidec,Civic 2019-21 与 Hatchback 用 Bosch A,Civic 2022 用 Bosch B。CRC/识别出错时,往往是把车放错了族。

    第三,几个「例外集」是踩坑点。源文档列出:HONDA_NIDEC_ALT_SCM_MESSAGES(一批 Nidec 车用替代 SCM 报文)、HONDA_NIDEC_ALT_PCM_ACCEL(Odyssey)、HONDA_BOSCH_ALT_BRAKE_SIGNAL(Accord、CR-V 5G、Acura RDX 3G 用替代制动信号)、HONDA_BOSCH_RADARLESS(Civic 2022 无雷达)、以及 STEER_THRESHOLD 的两处覆盖(Acura RDX 与 CR-V EU 用 400,默认 1200)。

    第四是最小转向速度:车型信息里为每款车写了 min_steer_speed,从 0(如 Civic 2022、Odyssey)到 25 mph(Acura ILX)不等,且都按 mph 换算。它与硬件族、DBC 一样是车型识别后要一起取用的参数。

    证据等级与边界

    可视为文档级证据的是:每个 ECU 的请求地址、以及各车型登记的固件版本号列表。这些是源文档快照里的明确内容。属于「示例性」的是具体版本号——它们来自项目记录的样本,不代表该车型全部生产版本;未列入的版本不能被假定兼容。

    不能外推的地方有两处。第一,车型与年款是逐条列出的,同一车名不同年款可能属于不同硬件族、用不同 DBC(Civic 三代就是例子),跨年款套用没有依据。第二,源文档是旧版项目的静态快照,后续项目可能已增删车型或改动寻址;本文只反映快照当时的内容。

    关于「安全访问」类问题:源文档未提供任何绕过方法,且不建议尝试。读固件版本属于常规诊断读取;本文不涉及任何写 ECU 或绕过安全机制的操作。

    常见问题

    这台 Honda 到底是哪款、用哪套硬件?

    源文档的做法是向一组 ECU(PCM、TCM、VSA、EPS、仪表、雷达、摄像头、网关等)读固件版本,用整组版本号匹配车型,并据车型决定用 Nidec 还是 Bosch A / Bosch B 线束与对应 DBC。

    Civic 2016-18、2019-21、2022 有什么区别?

    硬件族不同:2016-18 属 Nidec,2019-21 与 Hatchback 属 Bosch A,2022 属 Bosch B;Civic 2022 还被列入无雷达集合,且最小转向速度记为 0。

    为什么有些车要单独列出替代报文集合?

    源文档为若干车设了例外集,例如一批 Nidec 车用替代 SCM 报文、Odyssey 用替代 PCM 加速报文、Accord/CR-V 5G/Acura RDX 3G 用替代制动信号、Civic 2022 无雷达;这些车的报文布局与同族其它车不同。

    固件版本号能当唯一识别码吗?

    不能。源文档登记的是样本列表,用于组合匹配;未列入的版本不在表内,且同一车型不同年款可能落在不同族,不能只凭一个版本号定车。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/blueopenpilot-c3-legacy-subset/README.md(主来源:项目总说明)。
    • 项目 01 —— public-can-dbc-datasets/additional/blueopenpilot-c3-legacy-subset/selfdrive/car/honda/values.py(车型常量、ECU 请求地址、固件版本表与硬件族)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • 比亚迪 BYD 全车系 DBC 档案:7 个候选文件的报文规模

    结论:这份档案记录的不是一台车,而是一组面向比亚迪(BYD)与吉利车型的候选 DBC 文件:来源快照保留 7 个字节互不相同的 DBC,报文数从 4 条到 124 条不等。它的价值在于给「国产新能源整车的报文规模」提供了一份可核对的清单,但来源说明明确指出——项目文档里那张宽泛的车型列表并不能确立每个 DBC 对每种车型的适配,很多字段还用了占位名,且仓库快照里找不到许可文件(README 只有 MIT 徽章)。因此本文只登记文件与规模,不做「某款车某信号」的断言。下述内容仅限源文档记录的这一批候选文件。

    车辆与适用范围

    源文档是一个开源辅助驾驶适配项目的说明。项目自述针对「比亚迪全系与吉利」做适配,并提供了实车 DBC 报文数据库;但来源说明的措辞更谨慎:这些是「候选的逆向定义」,上游 README 的宽泛车型列表不构成逐车型的已核验适配。车型代号在 README 里列得很细(汉 DM/EV、唐 DM-i/DM-p、宋 PLUS/Pro/L、秦 PLUS/L、元 PLUS、海豹、护卫舰、腾势 D9 等),但它们属于文档级声称。

    项 内容
    车型范围 项目自述覆盖比亚迪(汉 / 唐 / 宋 / 秦 / 元 / 海豹 / 驱逐舰 / 腾势)与吉利(缤越)多款车型
    年款 / 市场版本 README 按年款列出代号(如 2020 汉 DM、2022 汉 DM-i、2022 元 PLUS / ATTO 3);来源说明未确立逐车型适配
    ECU / 改装状态 面向车机端开源辅助驾驶项目;包含 EPS、ADAS、RADAR、CAMERA、BCM、VCU、BMS 等节点的报文
    采集跨度 快照保留 7 个字节互不相同的 DBC;上游还以嵌套目录重复了其中几个,快照已省略重复项
    适用范围 仅限这一批候选文件;跨车型、跨年款适用性未验证,且部分文件用占位名

    总线与寻址

    来源说明没有给出比特率、寻址位数这类总线参数——它登记的对象是 DBC 文件本身,而非一次抓包。因此本文按「文档级」记录:能确定的只有 DBC 这一载体、报文数与文件来源位置;总线物理参数应视为源文档未提供。

    项 内容
    载体 DBC 文件(报文 + 信号的数据库描述),非原始抓包
    物理层 / 比特率 源文档未提供
    寻址方式 源文档未提供 11 位 / 29 位说明
    CAN FD 源文档未提供
    节点覆盖(README 声称) EPS 转向、ADAS 辅助驾驶、RADAR 雷达、CAMERA 前视相机、BCM 车身、VCU 整车控制、BMS 电池

    已解码信号与文件清单

    由于主素材给的是 DBC 文件而非成品信号表,下表按「文件 / 条目」登记规模与来源说明原样保留的注意事项,不代填任何信号名或缩放。

    条目 上游位置 规模 / 内容 证据 / 注意
    byd_han_dmev_2020.dbc BYD_Files/opendbc/dbc/ 16 条报文 与已归档的另一副本不同:改动两个踏板缩放、省去 4 条报文
    byd_generic_pt.dbc byd2/ 19 条报文 通用动力总成候选文件
    byd_tangdm_radar.dbc byd2/ 4 条报文 唐 DM 雷达相关
    byd_generic_pt_v2.dbc 嵌套目录内的 opendbc/dbc/ 19 条报文 与上一份布局大体重叠,但报文明/信号名被混淆成不同写法
    byd_all.dbc byd大全.dbc 124 条报文 头部注明由运行时/导出资源重建,许多字段为占位名
    byd_song.dbc 比亚迪3/Bydsong(1).dbc 89 条报文 同目录 generated(1).dbc 与其字节相同
    byd_tang_dmp_based_on_han.dbc 比亚迪3/唐DMP_based_on_han.dbc 88 条报文 文件名即说明「基于汉架构扩展」
    车型代号表 项目 README 数十个代号 README 声称的适配范围,非逐车型已核验
    横向力矩曲线参数 LAT_SIGLIN_TABLE 项目 README 调参节 示例 [4.867, 1.09, 0.243] 调参说明,非 DBC 内信号
    吉利缤越相关参数 项目 README 50 Hz 控制频次、最大转向力矩 598 README 自述规格

    读取方法与注意事项

    第一,先把「文件」和「已核验适配」分开。来源说明写得很清楚:上游 README 的宽泛车型列表不确立每个 DBC 对每种车型的适配,而 byd_all.dbc 的头部自述是「由运行时/导出资源重建」,因此其中的字段名多为占位名。把这样的文件直接当作某车某信号的权威定义,会混淆「存在」与「正确」。

    第二,同名不同内容要留意。快照里两份 byd_generic_pt 变体布局大体重叠,但报文明和信号名被改写成不同写法;byd_han_dmev_2020.dbc 也与之前归档的副本不同(改了两个踏板缩放、少了 4 条报文)。同名文件的差异本身就是证据链的一部分,不能互相替代。

    第三,权利层面要谨慎。来源说明指出:仓库快照里找不到许可文件,尽管 README 带 MIT 徽章。因此这些文件只适合作为私有研究副本,在对外分发或整合前应先确认原作者与再分发权利。

    第四,README 里的调参项(转向速率上限/回正速率、力矩模式表、离手维持参数)属于控制侧参数,不是 CAN 信号;它们与 DBC 里的报文定义分属两层。

    证据等级与边界

    可视为可核对的是「快照里实际存在这 7 个文件、各自多少条报文」——这来自来源说明的逐条登记。属于未确立的是各文件对应的具体车型适配:来源说明用「候选的逆向定义」来描述它们,并指出部分字段是占位名。

    不能外推的地方有三处。第一,DBC 里有报文不等于该车型在总线上真的以这个布局广播;需要实车抓包核对。第二,混淆/占位名使得信号语义不可靠,不能据此命名功能。第三,不同年款之间的报文集合可能有子集或超集关系,跨年款套用没有证据。

    关于「安全访问」类问题:源文档未提供任何绕过方法,且不建议尝试;本文只整理公开文档登记的文件与规模,不涉及对车辆安全机制的规避,也不涉及任何报文写入操作。

    常见问题

    这些 DBC 能直接说明某款比亚迪车的某个信号定义吗?

    不能。来源说明指出这些是候选的逆向定义,上游 README 的宽泛车型列表不确立逐车型适配,且 byd_all.dbc 的字段多为占位名;要确认某个信号,需要实车抓包核对。

    为什么有两个名字几乎一样的通用 DBC?

    来源说明登记了两份 byd_generic_pt 变体:布局大体重叠,但报文明与信号名被改写成不同写法;它们是同名不同内容,不能互相替代。

    这些文件有开源许可吗?

    来源说明称仓库快照里找不到许可文件,尽管 README 带 MIT 徽章;因此应先确认原作者与再分发权利,仅作私有研究副本使用。

    文件里的报文数加起来代表整车所有报文吗?

    不代表。各文件是不同来源与年份的候选集合,byd_all.dbc 有 124 条、byd_song.dbc 有 89 条、雷达到只有 4 条;它们不是同一辆车的完整报文表。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/yuluoqingcheng-byd-dbc/README.md(主来源:项目自述、车型代号表与调参说明)。
    • 项目 01 —— public-can-dbc-datasets/additional/yuluoqingcheng-byd-dbc/SOURCE.md(快照范围、7 个 DBC 的报文数与许可提示)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • 菲亚特 Grande Punto:29 位 UDS 与 105 个 DID 的读取边界

    结论:在一辆南非市场的菲亚特 Grande Punto(平台 199)1.4 8V(发动机 350A1000,Magneti Marelli IAW 5SF9 发动机 ECU)上,诊断走 29 位标识符、500 kbps 的 C-CAN,应用层是 UDS(ISO 14229),传输层是 ISO 15765-2,采用常规固定寻址(请求 18DAxxF1、应答 18DAF1xx)。这台车最关键的一条工程特性是:发动机 ECU 只接受不填充的帧,数据长度必须等于真实长度,这正是自动协议搜索与多数通用 OBD 应用连不上的原因;标准 OBD-II(模式 01 至 0A)也不应答,属非 EOBD 合规。边界:全部结论出自这一辆车与这份只读研究,不能套到其他校准或车型。

    本文整理自该项目的协议文档与示例结果。文档把每条记录分为「Observed(本车读出)」与「Published(取自公开来源、未在本车确认)」,本文保留这一区分。

    车辆与适用范围

    数据来自一位研究者的这一辆 Grande Punto,用一款 ELM327 兼容蓝牙适配器加一台 Linux 主机接入。工作方式偏保守:先适配器自身,再被动监听,然后标准请求,最后才是有寻址的厂家请求;并且全程只读,不发送清除、写入、执行器测试、安全访问或编程会话。

    项 内容
    车型 菲亚特 Grande Punto(平台 199)1.4 8V,发动机 350A1000,南非市场
    年款 / 市场版本 源文档未给出具体年款;市场为南非
    ECU / 改装状态 发动机 ECU:Magneti Marelli IAW 5SF9,名称 5SF9AG,硬件 IAW5SFHW405,软件 881AW23E,Fiat 件号 51926690
    采集跨度 若干次只读会话;一次怠速分析含 6 段共 5995 帧
    适用范围 仅这一辆车与这一套校准;不得假设其他校准或车型相同

    总线与寻址

    物理层是 OBD 引脚 6 / 14 上的 C-CAN,500 kbps,29 位标识符;传输层为 ISO 15765-2 常规固定寻址(请求 18DA + 目标 + F1,应答 18DAF1 + 目标)。本车一大特性是不能填充,数据长度须等于真实长度;流控帧为三字节 30 00 00,须在首帧后数毫秒内跟上。

    项 内容
    物理层 C-CAN,OBD 引脚 6 / 14,500 kbps
    链路层 29 位标识符;ISO 15765-2(ISO-TP)常规固定寻址
    寻址 请求 18DA + 目标 + F1;应答 18DAF1 + 目标
    帧填充 发动机 ECU 不接受填充,数据长度须等于真实长度
    流控 30 00 00 三字节,须在首帧后数毫秒内
    应用协议 UDS(ISO 14229);标准 OBD-II 模式 01 至 0A 不应答

    已解码信号

    下表混合数据标识符(DID)与广播帧字段两类。证据一列沿用文档口径:「本车读出」为在本车实测,「公开来源」为取自 Fiat 500 等同平台资料、未在本车独立确认。文档还提示:公开定义里发动机转速位偏移比本车实际晚一个字节,公开偏移应视为起点。

    信号 位置(DID / 帧) 解码 证据
    发动机转速 DID 1000 原始值 ÷ 4,转/分 本车读出;与广播 0618A001 交叉核对
    冷却液温度 DID 1003 原始值 − 40,摄氏度 跟随广播 0A18A001 字节 3;偏移为假设
    电池电压 DID 1004 原始值 ÷ 10,伏 本车读出;与适配器电压表一致
    运行计数 DID 1008 运行时约每分钟 +1,可能是分钟计 本车读出
    启动后计时 DID 1009 约每 15 秒 +1,单位未知 本车读出(刚启动后读数为 1)
    目标怠速 DID 186B 原始值 ÷ 4,转/分(700;开空调 850) 本车读出;转速 1000 随后一拍跟随
    大气压 DID 1956 毫巴 可能(静止且数值符合海拔)
    进气歧管压力 DID 181F 毫巴 可能(随负荷变化)
    电池电压(第二路) DID 197D、197E 原始值 ÷ 10,伏 本车读出;与 1004 一致
    氧传感器电压 DID 1898、189A 毫伏(在稀 / 浓之间摆动) 可能
    发动机转速(广播) 帧 0618A001 字节 2-3(大端) 1 转/分/位;字节 7 为油门踏板 转速与 1000 一致;踏板为公开来源
    冷却液温度(广播) 帧 0A18A001 字节 3 原始值 − 40,摄氏度 跟随 1003;比例为公开来源
    节气门位置(广播) 帧 0628A001 字节 4 怠速时 4 至 7 个计数 公开来源
    备件号 DID F187 文本 51926690 本车读出

    读取方法与注意事项

    先做被动监听。先静默监听确认总线活着,再用最简请求(TesterPresent)扫地址。这台车上,3E 00 得到干净的 7E 00,证明它讲 UDS;而 1A 80 得到 7F 1A 11(服务不支持),说明它不讲 KWP2000。否定应答也是成功,因为它证明寻址与帧格式是对的。

    不填充与流控交给适配器。关键一步是关闭格式化(ATCAF0)并启用可变数据长度(ATV1),由自己写 ISO-TP 长度字节。长应答以首帧发出后需流控;经蓝牙往返太慢时发动机 ECU 会放弃,故让适配器自行发送三字节流控。

    读取成本要知道。一次遍历 105 个标识符约需 14.4 秒,因此比这更快的信号都会被欠采样;模块地址扫描(256 个)约 54 秒,整个 16 位空间约需 3.6 小时。

    只读边界。文档强调这是只读研究:写入、清除、例行程序、安全访问与复位服务从未发送。本文同样不涉及安全访问绕过;源文档未提供此类方法,也不建议尝试。

    证据等级与边界

    文档用「Observed」标记本车读出,用「Published」标记取自 Fiat 500 等同平台资料、未在本车独立确认的内容。因此表中带「公开来源」「可能」「假设」字样的条目尚未在本车成立。

    识别侧证据较硬:F187 备件号、F192 供应商硬件号、F194 供应商软件号、F196 ECU 名称都能读出;发动机 ECU 的 VIN 字段(F190)为空,VIN 由地址 40 的车身电脑返回。应答模块只有四个:10 发动机、28 ABS、30 电动助力转向、40 车身电脑,其余全静默。

    来源说明把范围写得很清楚:只有这一辆南非市场的 Grande Punto 1.4 8V,不要假设其他校准或车型布局相同;这是「诊断 / 信号研究集合,而非 DBC」。据此,本文的 DID 含义、比例与广播偏移不能外推到其他 Grande Punto 或其他 Fiat 车型。

    常见问题

    为什么通用 OBD-II 读不到这台车?

    因为这台发动机 ECU 非 EOBD 合规,标准 OBD-II 模式 01 至 0A 在任何协议上都不应答;加上它只接受不填充的帧,自动协议搜索与多数通用应用都会失败。作者改用 29 位寻址加不填充帧后才得到首个应答(还是否定的 7F 1A 11)。

    为什么这台车要求帧不填充?

    文档实测:发动机 ECU 只接受数据长度等于真实长度的帧,填充帧得不到应答。ISO 15765 允许填充,多数 ECU 两种都收,但这台不收——文档指出,正是这一个细节让自动检测与通用应用全部失败。

    用服务 22 读 DID 需要先进入扩展会话吗?

    不需要。文档记录 22 xxxx(ReadDataByIdentifier)在默认会话即可工作,且进入扩展会话(10 03)并未解锁测试范围内的额外标识符。

    为什么用掩码 FF 读故障码会返回 27 条?

    因为掩码 FF 返回的是 ECU 能够 设置的记录、状态为 40(本周期未完成测试),那是监控项清单而非故障清单。文档建议用具体掩码:08 读已确认、04 读待定、01 读当前正在发生。

    这些 DID 能套到别的 Grande Punto 吗?

    不能。来源说明写明只有这一辆南非市场的 1.4 8V 车,且这是一个研究集合而非 DBC;不同校准或车型的布局可能不同,需逐车复核。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/docs/protocol.md(本项目车型档案主来源,取用了物理层 / 传输层、DID 表与广播帧表)。
    • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/docs/example-results.md(取用了怠速捕获统计与读取耗时)。
    • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/SOURCE.md(取用了「仅此一辆车、研究集合而非 DBC」的边界说明)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • FT86 与 MX-5 的赛道 CAN 信号:RaceChrono 公式表

    结论:这是一组面向赛道数据记录的 CAN 信号表,覆盖四类车:2013-2020 Subaru BRZ / Toyota 86 / Scion FR-S、2022 BRZ / GR86、Mazda MX-5 的 NC 与 ND 两代。它们的共同点是——老一代 FT86 与 NC/ND 的主 CAN 就在 OBD 口引脚 6/14 上,用一款 OBD 读取器即可直接抓广播帧;而 2022 BRZ/GR86(以及 2018+ WRX、许多 Porsche)把 CAN 与 OBD 口隔离了,只能拿慢速有限的 OBD 数据,或另找接入点。下表登记的是各平台可用的通道与公式,其中若干系数源文档自述为「经验值」或「可能有误」。下述条目只适用于各表所记录的车型与年款。

    车辆与适用范围

    源文档是一个 DIY BLE CAN 记录设备的说明,作者用它给一款商业赛道计时 App 供数。信号表按车型分组保留,ND 表明确说明是在一台 2019 MX-5 RF 上测试的。

    项 内容
    车型 2013-2020 Subaru BRZ / Toyota 86 / Scion FR-S;2022 Subaru BRZ / Toyota GR86;Mazda MX-5 NC(2005-2015)、ND(2019 RF 实测)
    年款 / 市场版本 各表相互独立;ND 表按 2019 MX-5 RF 测试,其他 ND 年款「应可适用」但未独立确认
    ECU / 改装状态 原厂状态;接入走 OBD 口或隐藏连接器,作者自制 nRF52840 + MCP2515 记录设备
    采集跨度 源文档未给出统一日志数;MX-5 NC 表附有一份怠速时 10 秒内的 CAN ID 直方图
    适用范围 各车型表只适用其列出的年款/代际;跨代不可套用(同一功能在不同代的 ID 完全不同)

    总线与寻址

    源文档说明 FT86 与 Miata 的老一代主 CAN 在 OBD 引脚 6/14 上;较新的车把 CAN 与 OBD 口隔离。信号表以 11 位 ID 记录(如 0x140、0xD1、0x081、0x201),源文档未展开 29 位或 CAN FD 话题,按经典 CAN 处理。

    项 内容
    物理层 双绞线 CAN;FT86/Miata 老一代主 CAN 在 OBD 引脚 6/14
    链路层 / 比特率 源文档未统一给出比特率,按经典 CAN 处理
    寻址方式 11 位 ID
    CAN FD 源文档未涉及
    接入差异 2022 BRZ/GR86、2018+ WRX 等把 CAN 与 OBD 口隔离,需另找接入点

    已解码信号

    下表从四张源表中抽取代表性信号,逐条标注车型与证据/置信度。源文档标注为经验值、可能错误或请求独立核对的系数,按原样保留。

    信号 车型 / ID 解码 证据 / 置信度
    加速踏板位置 FT86 gen1 / 0x140 A / 2.55(%) 源表「Recommended」
    加速踏板位置 FT86 gen2 / 64 E / 2.55(%) 源表「Recommended」
    制动位置 FT86 gen1 / 0xD1 min(C / 0.7, 100)(%) 0.7 为经验除数;看到频繁 100% 可改用 0.8 / 0.9
    制动压力 FT86 gen1 / 0xD1 C × 128 源表「Recommended」
    制动压力 FT86 gen2 / 313 F × 128 系数取自 gen1,源文档称「似乎吻合」
    冷却液温度 FT86 gen1 / 0x360 D − 40 → °C 源表「Recommended」
    机油温度 FT86 gen1 / 0x360 C − 40 → °C 源表「Recommended」
    转速 FT86 gen1 / 0x140 bitsToUIntLe(raw, 16, 14) 源表「Recommended」
    车速 FT86 gen1 / 0xD1 bytesToIntLe(raw, 0, 2) × 0.015694 源文档建议对 GPS 核对乘数
    车速 FT86 gen2 / 313 bitsToUIntLe(raw, 16, 13) × 0.015694 乘数同样建议对 GPS 核对,换更大/更小直径轮胎时尤其
    转向角 FT86 gen1 / 0xD0 bytesToIntLe(raw, 0, 2) × −0.1(正值为左转) 源表「Recommended」
    四轮车速 FT86 gen1 / 0xD4 每 2 字节一个轮,× 0.015694 与「车速」同乘数
    横摆角速度 FT86 gen2 / 312 bytesToIntLe(raw, 4, 2) × −0.2725 对某款外部陀螺仪标定;gen1 用 0.286478897
    横/纵向加速度 FT86 gen1 / 0xD0 bytes(6,1) × 0.2;bytes(7,1) × −0.1 源文档标注「数据噪声大」
    离合器位置 FT86 gen1 / 0x140 (B & 0x80) / 1.28(只有 0% 和非 0%) 源文档标注仅能区分 0% 与「非 0%」
    转速 MX-5 NC / 0x201 bytesToUInt(raw, 0, 2) / 4.00 源表(WIP)
    车速 MX-5 NC / 0x201 ((bytesToInt(raw, 4, 2) / 100) − 100) / 3.6 原始值含 100 km/h 偏移;/3.6 转 m/s
    制动压力 MX-5 NC / 0x085 (3.4518689053 × raw − 327.27) / 1000 kPa 乘数取自他人数据,源文档标注「可能有误」
    车速 MX-5 ND / 514 bytesToInt(raw, 2, 2) / 360.0 源表「Recommended」(2019 RF 实测)
    转速 MX-5 ND / 514 bytesToUInt(raw, 0, 2) / 4 源文档提问:若有人记录到 > 8192 rpm 请告知
    转向角 MX-5 ND / 134 (16000 − bytesToUInt(raw, 0, 2)) × 0.1(正值为右转) 源表「Recommended」

    读取方法与注意事项

    第一是通道预算:源文档提醒,每增加一个基于新 CAN ID 的通道都会增加会话文件体积,并可能拖低其他通道的更新率,因为 BLE 带宽有限;但如果新通道与已有通道共用同一个 CAN ID(例如「节气门位置」和「加速踏板位置」都用 0x140),协议会自动优化,基本不影响更新率。

    第二是接入点:FT86 与 Miata 老一代可以直接用 OBD 引脚 6/14;作者也提到可以在信息娱乐主机后方找一个隐藏连接器做完全隐式的接入。2022 之后的部分车型把 CAN 与 OBD 口隔离,这时要么接受慢速 OBD 数据,要么另找物理接入点并自制连接。

    第三是公式单位:源表的车速公式末尾带「/3.6」,是把 km/h 换成 App 内部使用的 m/s,再由 App 换算成用户选择的单位;照着抄时不要重复换算。转向角公式前的负号只是朝向约定(正值为左转或右转随车型不同),可按喜好去掉。

    证据等级与边界

    可视为有证据的是 ND 表(在 2019 MX-5 RF 上实测)与各表标注为「Recommended」的基础信号。属于经验值/待核对的是:制动位置的 0.7 除数、gen2 制动压力沿用 gen1 系数、车速乘数(建议对 GPS 核对)、MX-5 NC 的制动压力乘数(源文档自述可能有误)、横/纵向加速度(噪声大)、离合器位置(只能区分 0%)。

    不能外推的地方有两处。第一,同一功能在不同代际是不同的 ID 与公式(例如加速踏板 gen1 是 0x140、gen2 是 64),跨代套用必然出错。第二,各表相互独立,ND 表虽称「应适用于其他 ND 年款」,但只有 2019 RF 一台被实测,其他年款与配置需自行确认。

    关于「安全访问」类问题:源文档未提供任何绕过方法,且不建议尝试;这些表都是监听广播帧得到的结果,不涉及对车辆安全机制的规避。

    常见问题

    哪些车能直接从 OBD 口抓到主 CAN?

    源文档说明 2013-2020 的 BRZ/86/FR-S,以及 NC 与 ND 代 Miata,主 CAN 就在 OBD 引脚 6/14 上,用一款 OBD 读取器即可直接抓。2022 BRZ/GR86、2018+ WRX 以及许多 Porsche 把 CAN 与 OBD 口隔离了,只能拿慢速有限的 OBD 数据或另找接入点。

    2022 BRZ 和 2013-2020 的公式能通用吗?

    不能。同一功能在不同代是不同的 ID 与公式,例如加速踏板 gen1 用 0x140、gen2 用 ID 64;两代表是独立维护的。

    车速公式里的乘数需要改吗?

    源文档建议对 GPS 核对,换更大或更小直径轮胎时尤其要核对;FT86 两代都用 0.015694,MX-5 NC 用含 100 km/h 偏移的分式。

    加更多通道会影响刷新率吗?

    会,若新通道基于新的 CAN ID。源文档说明同一 CAN ID 上的多个通道不影响更新率,而基于新 ID 的通道很可能拖低所有其他通道的更新率。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/timurrrr-racechrono-can-notes/README.md(主来源:设备与接入总说明)。
    • 项目 01 —— public-can-dbc-datasets/additional/timurrrr-racechrono-can-notes/can_db/ft86.md 与 can_db/ft86_gen2.md(两代 FT86 信号表)。
    • 项目 01 —— public-can-dbc-datasets/additional/timurrrr-racechrono-can-notes/can_db/mazda_mx5_nc.md 与 can_db/mazda_mx5_nd.md(MX-5 NC/ND 信号表)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11

  • 起亚 Soul EV(PS)DBC 档案:转向、制动与四轮速信号

    结论:这是一份以起亚 Soul EV(PS)命名的 DBC 数据档案,由两部分组成:一份「整车」文件记录可读的转向角、制动压力与四轮车速(每 20 毫秒更新,单位分别为度、Bar、KPH);一份「DriveKit」文件记录可写的转向角、转向扭矩、油门踏板与制动踏板命令(同样 20 毫秒)。三条硬边界:其一,这不是厂家整网定义,而是研究与自动驾驶平台用的消息集合;其二,文档把底盘控制(雨刮、转向灯、喇叭、大灯、读 VIN)标为 Niro 专用,每条 DriveKit 消息是否适用于 Soul EV「未建立」;其三,所有声明的量程都是 [0|0],不能当作真实范围。

    本文整理自该项目的 DBC 说明与其来源说明。来源说明本身就把适用范围、许可与验证状态标得很保守,本文原样保留这些限定。

    车辆与适用范围

    仓库说明该项目是一个起亚 Soul EV 的 CAN 记录与解码脚本,用于某实验室的自动驾驶平台采集;DBC 覆盖范围被描述为「有限」。来源说明进一步指出:这是记录集合而非出厂整网,本归档也未针对具体年款、配置或固件做过独立核对。

    项 内容
    车型 起亚 Soul EV(PS)
    年款 / 市场版本 源文档未确认(未绑定具体年款、配置或固件)
    ECU / 改装状态 面向自动驾驶平台的数据采集;DriveKit 为可写命令集
    采集跨度 源文档未给出;说明称用于 AV 平台数据采集,本归档未核对原始采集
    适用范围 仅该 DBC 快照;DriveKit 消息对 Soul EV 的适用性未建立

    总线与寻址

    来源说明没有给出该车的总线速率或 11 位 / 29 位寻址结论,也没有 CAN FD 的说明。文档给出的是消息与信号的名称、方向(读 / 写)与周期,属于应用层与数据层;物理层与链路层细节属源文档未覆盖项,本文不补。

    项 内容
    物理层 源文档未给出
    链路层 源文档未给出
    寻址 源文档未给出 11 位 / 29 位结论
    CAN FD 源文档未提及
    消息周期 文档列出的信号多为 20 毫秒周期

    已解码信号

    下表分「整车文件(只读)」与「DriveKit 文件(可写)」两组。所有声明的物理量程均为 [0|0],因此「单位」是文档给出的量纲,不是经验证的范围。表格中凡「Niro only」者不得套到 Soul EV。

    信号 / 命令 来源与方向 解码 / 取值 证据
    Steering Angle(整车) Vehicle DBC,只读 度,20 毫秒 源文档规格表
    Brake Pressure(整车) Vehicle DBC,只读 Bar,20 毫秒 源文档规格表
    Individual Wheel Speed(整车) Vehicle DBC,只读 KPH,20 毫秒(四个轮速) 源文档规格表
    steering_angle_cmd_flags DriveKit STEERING_ANGLE_COMMAND,写 Disable / Enable 源文档命令表
    steering_angle_cmd_angle 同命令消息 度 源文档命令表
    steering_angle_cmd_max_velocity 同命令消息 度(文档示例用 300) 源文档命令表与示例
    steering_angle_report_flags DriveKit STEERING_ANGLE_REPORT,读 Enable / Disable,每 20 毫秒发布 源文档报告表
    steering_angle_report_errors 同报告消息 Angle Missing / Angle Irrational / Module Disabled / Command Rejected 源文档报告表
    steering_enable_magic DriveKit STEERING_ENABLE 默认 magic number(用于先使能扭矩控制器) 源文档示例
    Steering Torque DriveKit,写 度,20 毫秒 源文档规格表
    Throttle Pedal Position DriveKit,写 百分比,20 毫秒 源文档规格表
    Brake Pedal Position DriveKit,写 百分比,20 毫秒 源文档规格表
    CHASSIS_CONTROL_COMMAND(Niro only) DriveKit,写 前雨刮(off / intermittent / slow / fast)、后雨刮(off / on)、左右转向灯、喇叭、读 VIN、大灯(off / low / high) 源文档命令表,标注 Niro 专用

    读取方法与注意事项

    转向角命令三步走。文档给出的顺序是:先发 STEERING_ENABLE(带默认 magic number)使能转向扭矩控制器;再发 STEERING_ANGLE_COMMAND,其中 flags 置 Enable、angle 设目标角、max_velocity 设最大角速度(示例用 300 度/秒);最后应能在总线上看到 STEERING_ANGLE_REPORT 回报 flags 为 Enable、errors 为 None。

    命令互斥与越界拒绝。文档明确:转向角命令与转向扭矩命令不能同时使用,二者互斥。示例还演示越界:请求超过车辆能力的角度(9999 度)时回报变为 flags 为 Disable、errors 为 Command Rejected,控制器自我禁用。

    底盘控制是 Niro 专用。CHASSIS_CONTROL_COMMAND 可在一条消息里同时设置一个或多个底盘部件(雨刮、转向灯、喇叭、大灯,以及请求 VIN),但文档把这组功能标为 Niro only。是否适用于 Soul EV,来源说明写明「未建立」,因此不能照搬。

    写命令有实车风险。DriveKit 文件里转向、油门、制动等都是写入类命令,一旦发送就会作用在真实车辆上。本文只转述文档记录,不构成操作指引。

    证据等级与边界

    第一层是覆盖范围:来源说明写明整车文件只有 3 条消息、6 个信号,DriveKit 文件有 15 条消息、32 个信号,这是一套研究用的消息集合,不是厂家整网定义。

    第二层是数据质量:每个声明的物理范围都是 [0|0],来源说明把它列为需要独立复核的信号准确性问题;DriveKit 说明文件还提到 Niro 专用的底盘控制,因此「每条 DriveKit 消息都适用于 Soul EV」并未成立。

    第三层是来源状态:项目自报做了 AV 平台采集,但本归档未将该副本与其采集数据、具体年款 / 配置 / 固件做独立核对;快照中也未发现仓库级许可证,仅作私有离线研究副本保留。据此,本文的信号与方向只能视为「这份 DBC 所声明的范围」,不能外推到其他 Soul EV 或其他起亚车型。

    常见问题

    这份 DBC 是起亚 Soul EV 的整车出厂网络吗?

    不是。来源说明写明整车文件只有 3 条消息、6 个信号,DriveKit 文件有 15 条消息、32 个信号,是一套研究 / AV 平台用的消息集合,而非厂家整网定义。

    为什么每个信号的物理范围都写成 [0|0]?

    因为源 DBC 就是这么声明的,来源说明也把它列为「信号准确性需要独立复核」的问题。所以 [0|0] 不能当作真实量程,表格里的「度 / Bar / KPH / 百分比」只是文档给出的量纲。

    转向角命令和转向扭矩命令能一起发吗?

    不能。文档明确二者互斥,不能同时使用。示例演示的顺序是先发使能消息,再发转向角命令,并通过报告消息确认 flags 为 Enable、errors 为 None。

    Niro 的底盘控制能不能套到 Soul EV?

    未确认。文档把这组底盘控制(雨刮、转向灯、喇叭、大灯、读 VIN)明确标注为 Niro only;来源说明也指出「每条 DriveKit 消息是否适用于 Soul EV 尚未建立」。因此不能照搬到 Soul EV。

    转向角报告里会出现哪些错误?

    文档列出的四种是:Angle Missing(角度缺失)、Angle Irrational(角度不合理)、Module Disabled(模块禁用)、Command Rejected(命令被拒)。越界请求(如示例中的 9999 度)会得到 Command Rejected,随后控制器自我禁用。

    延伸阅读

    参考资料

    • 项目 01 —— public-can-dbc-datasets/additional/aroongta-kia-soul-ev/DBC/DBC-README.md(本项目车型档案主来源,取用了整车 / DriveKit 的信号与周期表)。
    • 项目 01 —— public-can-dbc-datasets/additional/aroongta-kia-soul-ev/SOURCE.md(取用了覆盖范围、[0|0] 量程与「未建立」等边界说明)。
    • 项目 01 —— public-can-dbc-datasets/additional/aroongta-kia-soul-ev/README.md(取用了 AV 平台采集的项目背景)。

    说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

    更新记录

    首次发布 2026-10-11 最近核对:2026-10-11