结论:这份参考给出 25 个 UDS 服务 22 的 DID 与 109 个解码信号,来自同一辆 Civic Type R FL5(K20C1 2.0T,6 速手动)在 2026-09-08 至 2026-09-16 的八轮只读采集。第一件事不是数信号,而是承认它的形态:这辆车 OBD 口后面有网关,被动监听 24.8 分钟、59 万帧里 16 个 CAN ID 全是 18DAxxxx 诊断帧,广播帧数为 0。所以主键是「模块地址 + DID + 字节 / 位偏移」,不是 CAN ID。
形态决定主键:为什么它不是一份 DBC
钥匙 ON、怠速、行驶全程广播帧数都是 0,文档里每一个数字都是「主动问、ECU 答」得到的正应答字节。同一条物理通道上靠 29 位 ID 里的目标地址区分四个已解码 ECU(ECM、VSA、EPS、组合仪表)。
因此 DBC 不适合作为主格式:DBC 描述周期广播帧的布局,而这里没有广播帧可描述。要机器读,应该用 data/signals.json 或 data/signals.csv,或者 OBDb signalsets/v3 兼容的 obdb-signalset.json——后者只收录「已确认(研究级)」与「中」两档,低置信与候选留在文档里不进 signalset。
| 层 | 事实 |
|---|---|
| 物理 | OBD-II 口:6 脚 CAN-H、14 脚 CAN-L、4 脚 GND、16 脚 12 V 常电。6 / 14 按插进车的公头方向数,数反会得到 0 帧 |
| 链路 | 经典 CAN 2.0B,500 kbit/s,单帧不超过 8 字节,无 CAN FD(12 份日志约 190 万帧,FD 帧计数 0)。只证明网关外的 OBD 侧 |
| 寻址 | 29 位 ISO 15765 物理寻址:请求 18DA 加目标地址加 F1,应答 18DAF1 加目标地址;诊断仪地址固定 F1。点名全车用功能广播 18DB33F1。11 位 7E0 / 7E8 上 Mode 01 无任何应答 |
| 传输 | ISO 15765-2:请求单帧 03 22 DID高 DID低,用 0x55 填满 8 字节;应答 54 到 63 字节数据区 = 首帧 FF 加 8 到 9 个连续帧 CF。流控 30 00 00(填充 0xAA)必须在几毫秒内回,晚了 ECU 直接放弃 |
| 应用 | UDS 服务 22 ReadDataByIdentifier。本车默认会话免握手(不需要 10 03,更不需要 27);3E 保活实测不需要(600 s 连续采样零错误)。此条只在本车验证过 |
| 偏移口径 | offset 指去掉应答头 62 加 DID 两字节之后的数据偏移;[a:b] 不含 b;value = raw 乘 scale 加 add。默认大端,明确标注小端的除外 |
时序与预算:单 ECU 串行上限约 33 Hz
下表是主机侧观测值,不是 ECU 的硬限制。采集用的适配器无硬件时间戳,所以「VSA 80 ms」应读作首帧到末帧的整段,而不是帧间隔,也不能据此断定是 STmin 硬限制。
| 模块 / DID | 请求到完整 p50 | p95 | 相邻 CF 间隔 |
|---|---|---|---|
ECM 10:2610 |
24.9 / 27.4 ms | 30.7 / 30.6 ms | 约 2 ms |
ECM 10:2611 |
29.3 ms | 33.5 ms | 约 2 ms |
ECM 10:268F |
27.3 ms | 29.8 ms | 约 2 ms |
VSA 28:4001/4004/4007/4073 |
约 100.1 ms | 约 100.6 ms | 约 10 ms |
EPS 30:48BD/48C0/48C4 |
约 67.9 ms | 约 69 ms | 约 8 ms |
串行模型是成立的:2051 轮逐轮恒等式「周期 = 各请求到完整之和 + 各间隙之和」残差为 0,轮间开销 1.48 ms/轮,由此得到单 ECU 串行上限约 1 秒除以 30.5 ms,即约 33 Hz(仅 ECM)。跨模块并发在协议上允许(不同地址各挂一个未完成请求),本车从未验证;按模块求和再取最大的理想周期只比串行快约 28%,不是 100 ms。作为对照,原厂调校工具自己轮询 22 2610 与 22 2611 各 18.13 Hz。
| NRC | 含义 | 本车观察 |
|---|---|---|
0x31 |
requestOutOfRange(该 DID 不存在) | 扫描时的主力否定应答,全归档最常见 |
0x11 |
serviceNotSupported | 服务 21(五个模块各 256 个 LID)与服务 24 全部返回它,本车不支持,不必再试 |
0x22 |
conditionsNotCorrect | 有处理逻辑;扫描中零星出现 |
0x78 |
requestCorrectlyReceived-ResponsePending | 有处理(最多 5 乘 timeout);全归档统计里不计入否定应答 |
0x80 |
厂商自定义 / 未列入标准表 | 第二轮扫 ECM 时出现过一次 |
两条吃了亏才写下的采集纪律
其一,一笔请求超时会触发对该地址的隔离,所以采样组的第一笔要放最稳的 DID。其二,行驶中不要把扫描和核心采样混在一条串行链上——边行驶边扫描的一份日志里核心采样最长断流 7.891 s,而纯核心采样的另一份最长只有 1.244 s。
模块清单与扫描覆盖
零件号由 22 F181 或 22 F110 读出,是同款车共有的零件号,不是单车序列号;数据集不含 VIN、ECU 序列号或任何单车唯一标识。功能广播点名时,公开信号集里有而本车无应答的地址有 0x2A、0x0E、0x11、0x1D、0x01、0x15、0x16。
| 地址 | 身份 | 零件号 | 扫描覆盖 | 有正应答 DID | 收录 | 状态 |
|---|---|---|---|---|---|---|
0x10 |
ECM/PCM 发动机控制 | 37805-66V-H020 | 0000–FFFF 全段 |
77 个(26xx 52 + 30xx 5 + DC59–FFFF 段 20) | 10 个 | 扫描中 6F2B / 6F8A / DC58 三个单点无应答触发隔离,未复读 |
0x28 |
VSA 车身稳定(ABS/ESC) | 57114-T60-AA20 | 0000–A082 |
31 个(4000–400A、4030–403B、4070–4073、0EEC、4100、48AF、48F5) | 5 个 | A083–FFFF 未扫 |
0x30 |
EPS 电动转向助力 | 39990-T60-J030 | 0000–7EEB |
20 个(全在 48xx) | 5 个 | 重扫 0000–2A30 无新增;2A31–FFFF 待续 |
0x3A |
ADS 自适应减振 | 39390-31M-A040 | 0000–FFFF 全段 |
16 个(48AF、48F5、52xx、5280/5281、E600、E602、F1xx) | 0 个 | 10 个数据类里 9 个逐字节恒定,唯一在动的 520A 未解码 |
0x53 |
SRS 气囊 | 77959-T60-H830 | 未扫 | — | 0 个 | 故意不碰 |
0x60 |
组合仪表 | 78108-T60-H020 | 7000–70FF |
18 个(有数据的 6 个) | 5 个 | 其余段未扫 |
0x70 |
未知(33137 系,疑似大灯控制) | 33137T24Y112M1 | 未扫 | — | 0 个 | 功能广播点名有应答 |
0xB0 |
多用途摄像头(Honda Sensing) | 36161-T60-H050 | 0000–00C5 |
0 | 0 个 | 对服务 22 基本不配合,两次都在 00xx 某个 DID 超时被隔离;已放弃 |
0xB3 |
Honda Sensing 子单元 | 36162-T51-H010 | 未扫 | — | 0 个 | 功能广播点名有应答 |
0xB7 |
驻车雷达控制单元 | 39670T60E010M1 | 未扫 | — | 0 个 | 功能广播点名有应答 |
0xED |
车身控制 / 网关之一(38898 系) | 38898-T60-H010 | 未扫 | — | 0 个 | 与 EF 成对 |
0xEF |
网关 / 车身控制之一(38897 系) | 38897-T60-H010 | 未扫 | — | 0 个 | 功能广播时它最先应答,疑似网关 |
信号总表摘录
四个模块、25 个 DID、109 个信号,置信度分布为已确认(研究级)52、中 39、低 / 候选 18。文档不升不降任何一条的置信度。下面摘录 ECM 两个主包与几个跨模块的对照项;「实测范围」是全部采集里出现过的最小 / 最大值与样本数,只说明观察到过什么,不定义量程也不定义报警阈值。
| 模块 : DID | 信号 | 偏移 | 解码 | 单位 | 实测范围(样本数) | 置信 |
|---|---|---|---|---|---|---|
10:2610 |
ENGINE_RPM | 6(2 B 大端) | raw 乘 0.25 | rpm | 0 到 5300(53,908) | 已确认(研究级) |
10:2610 |
MAP_ABS | 9(2 B 大端) | raw 乘 0.0078125 | kPa | 22.27 到 282.35(53,908) | 已确认(研究级) |
10:2610 |
ECT | 11(1 B) | raw 减 40 | 摄氏度 | 33 到 90(53,908) | 已确认(研究级) |
10:2610 |
VEHICLE_SPEED | 18(1 B) | raw | km/h | 0 到 137(53,908) | 已确认(研究级) |
10:2610 |
BATTERY_V | 22(1 B) | raw 乘 0.1 | V | 6 到 14.6(53,908) | 已确认(研究级) |
10:2610 |
OIL_PRESSURE | 44(2 B 大端) | raw | kPa | 0 到 626(53,908) | 已确认(研究级) |
10:2611 |
LAMBDA | 8(2 B 大端) | raw 乘 3.0517578e-05 | lambda | 0.765 到 2.000(42,797) | 已确认(研究级) |
10:2611 |
SHORT_TRIM | 10(1 B) | raw 乘 0.78125 减 100 | % | -10.16 到 17.97(42,797) | 已确认(研究级) |
10:2611 |
GEAR | 19(1 B) | raw | gear | 0 到 6(42,797) | 已确认(研究级) |
10:2611 |
PEDAL | 20(2 B 大端) | raw 乘 0.005 | % | 0 到 60.83(42,797) | 已确认(研究级) |
10:2611 |
BOOST_PRESSURE | 24(2 B 大端) | raw 乘 0.013157894736842105 | kPa 绝压 | 94.51 到 215.08(42,797) | 已确认(研究级) |
10:2611 |
WASTEGATE | 28(2 B 大端,有符号) | raw 乘 0.001 | mm(未证实) | -0.176 到 8.412(42,797) | 已确认(研究级) |
10:268F |
OIL_TEMP_MODEL | 15(1 B) | raw 减 40 | 摄氏度 | 32 到 82(20,684) | 已确认(研究级) |
28:4005 |
BRAKE_PRESSURE | 7(2 B 大端) | raw 减 25 | bar | 0 到 106(4,840) | 已确认(研究级) |
28:4007 |
REVERSE_GEAR | 11(bit 1,掩码 0x2) | raw 与 0x2 | bool | 0 到 2(3,515) | 已确认(研究级) |
28:4007 |
CLUTCH_PEDAL | 24(1 B) | raw | % | 0 到 100(3,515) | 已确认(研究级) |
30:48BD |
STEER_ANGLE | 11(2 B 大端,有符号) | raw 乘 0.1 | deg | -405.6 到 408.1(5,164) | 中 |
30:48C4 |
WHEEL_SPEED_FL | 23(2 B 大端) | raw 乘 0.01 | km/h | 0 到 115.23(3,193) | 已确认(研究级) |
60:7022 |
ODOMETER_CLUSTER | 6(3 B 大端) | raw | km | 不公开(1,394) | 已确认(研究级) |
60:7028 |
AMBIENT_TEMP | 17(1 B) | raw | 摄氏度 | 26 到 34(2,059) | 已确认(研究级) |
60:7029 |
FUEL_LEVEL | 12(2 B 大端) | raw 乘 0.01 | L | 16.46 到 43.88(1,393) | 已确认(研究级) |
三条容易读错的约定
同名信号出现在两个 DID 时(VEHICLE_SPEED_COPY、STEER_ANGLE_COPY),是两个不同位置的独立字段,解码与置信度各按所在 DID 读。标 kPa_abs 的是绝压;要增压表压请用同一应答包内的 MAP_ABS 减 BARO(同包相减,不要减 101.325 这类常数)。带掩码的位字段在「实测范围」列显示的是掩码后的原始值,例如掩码 0x8 的置位状态显示为 8,而不是 1。
证据边界:未映射的变化字节与不可辨识项
已映射的 25 个 DID 里还有 206 个未映射的变化字节、1,183 个位,其中在单次采集内部就会变的有 189 字节、1,124 位——由位级覆盖分析从全部采集算出。其中 4 个字节里「未映射位」与「已映射位」同处一室,按整字节做候选筛选的工具看不到它们。
| 类型 | 位置 | 现状 | 缺什么 |
|---|---|---|---|
| 未映射 | 10:2610 [8] |
与 [27] 完全相同,燃压低字节镜像 | 未命名,仅登记 |
| 未映射 | 10:2610 [16] |
日志内变化,只有低 4 位(掩码 0x0F),5 种取值,与水温 r 约 -0.77 | 位域身份未定 |
| 未映射 | 10:2610 [51] |
0 到 240 阶梯,步长约 7.5 | 未扫,性质未知 |
| 未映射 | 10:2611 [53:55] / [55:57] |
ECM 内部短时负向修正量,值域 -53 到 0;位宽不可辨识(该值域内 s8 与 s16 小端恒等);两者是单向包含关系 | 需要一个绝对值大于 127 的样本才能分开 |
| 未映射 | 10:268F [12] / [13] / [14] |
带 255 端点码;[12] 与转速的关系在差分与配对两道检验下都存活(r = 0.21 / 0.256),是 50 个候选里唯一存活的 | 不命名 |
| 未映射 | 3A:520A 整包 64 B |
ADS 唯一在动的数据包,未解码;多字节字段候选 3 个(10:12、36:38、38:40,均大端) | 整包未扫 |
| 不可辨识 | 偏航率刻度 | 0.0045(运动学模型)对 0.003924(后轮差速几何法) | 需外部偏航率参考(不低于 10 Hz、误差小于 3%)或实测轮距与滚动周长 |
| 不可辨识 | 2610[39] 的门限 |
单一压力门限与 Schmitt 迟滞均已推翻;转速 / 档位分层使留出集 log-loss 改善 17 到 18% | 未过 20% 门槛,判不出,不是无效应 |
| 不可辨识 | AIRC_MAX / AIRC_PROT / AIRC_COMP |
三个字节 [49] / [57] / [58] 全程相等 | 三个名字在现有数据里无法区分 |
| 不可辨识 | 扫描期链路停摆的机制 | 现象强相关;单 ECU 忙已排除,网关限流 / ISO-TP 异常 / 工具实现 / 静默超时四种都证据不足 | 缺适配器状态遥测,分不开「工具阻塞」与「总线 / 网关静默」 |
常见问题
这份参考能直接转成 DBC 吗?
不能,也不该转。DBC 描述的是周期广播帧的布局,而这辆车的 OBD 侧广播帧数为 0,全部数据来自服务 22 的问答。主键是模块地址加 DID 加字节 / 位偏移,同一条物理通道上靠 29 位 ID 里的目标地址区分四个已解码 ECU。要机器读请用 signals.json、signals.csv 或 OBDb 兼容的 signalset。
为什么按 7E0 / 7E8 发 Mode 01 收不到任何东西?
因为这辆车走 29 位物理寻址:请求是 18DA 加目标地址加 F1,应答是 18DAF1 加目标地址,诊断仪地址固定 F1;11 位地址上 Mode 01 全程零应答。另一个常见失误是引脚数反了——6 脚 CAN-H、14 脚 CAN-L 要按插进车的公头方向数,数反了同样得到 0 帧。
轮询频率能开到多高?
串行模型下约 33 Hz(仅 ECM),由 1 秒除以单事务约 30.5 ms 得出,轮间开销 1.48 ms/轮,2051 轮恒等式残差为 0。跨模块并发在协议上允许但本车从未验证,理想化估算只比串行快约 28%。作为对照,原厂调校工具自己只跑 18.13 Hz。
为什么两条里程信号不给出实测范围?
因为精确里程读数能定位到具体某一辆车,作者主动不公开。样本数照常给出:ECM 的 ODOMETER 是 365 个样本,仪表的 ODOMETER_CLUSTER 是 1,394 个,两条相互核对一致且单位都是 km(公开信号集里写成英里是错的)。
「已确认(研究级)」是不是等于已经标定过?
不等于。它只表示这一辆车上证据强——与独立仪表逐点对上、或与调校工具的未取整导出逐列拟合到 r 约等于 1、或有干净的前后对照动作。它不代表已用独立仪器标定,也不代表在原厂车上成立。这辆车装有调校工具,ECU 已解锁,市场版本也未确认。
延伸阅读
- UDS 诊断工具为什么不能随手调:只读、会话与写 ECU 的分权设计 —— 只读服务白名单怎么落地
- OBD 零百计时的链路标定:轮询周期、往返延迟与丢包率怎么测 —— 与这里的 p50 / p95 口径直接可比
- Honda 平台表:38 个条目里的 DBC、flags 与线束提示 —— 同品牌其它平台的对照
- OBD-II PID 入门:车速 0x0D 为什么是整数 —— 11 位 Mode 01 与 29 位服务 22 的分野
- 车型 CAN 数据库
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/caldis-honda-civic-fl5-dids/SOURCE.md(固定修订、许可条款、25 DID / 109 信号的范围与限制) - 项目 01 ——
public-can-dbc-datasets/additional/caldis-honda-civic-fl5-dids/README.zh-CN.md(分层事实、逐事务耗时、NRC、模块扫描覆盖与信号总表) - 项目 01 ——
public-can-dbc-datasets/additional/caldis-honda-civic-fl5-dids/README.md(英文版信号总表与已推翻说法) - 项目 01 ——
public-can-dbc-datasets/additional/caldis-honda-civic-fl5-dids/CHANGELOG.md(数据版本 1.0.0 与 1.0.1 的变更记录)
免责声明
本文所述 DID 与信号均为社区只读诊断所得,不代表本田的官方数据,全部来自同一辆装有调校工具(ECU 已解锁)的 Civic Type R FL5,年款与市场版本均未确认。采集与本文档制作全程只使用服务 22 及配套只读服务,不含任何刷写、安全访问或内存读取内容;被明确排除且不得据本文尝试的服务包括 27、23、2E、31、11、14 与 34 到 37。把这里任何一条用在别的车上之前请自行复核。涉及安全相关用途时请仅作参考。
更新记录
- 2026-10-15 初稿
发表回复