结论:这份档案记录的是 2014 款丰田 Yaris Hybrid(第 3 代 XP130,THS-II NoDSU)的 CAN 信号逆向成果:从车机 28 针连接器的第 9/10 脚(500 kbit/s)被动监听,而不是 OBD-II 口,已确认 12 个与仪表相关的信号(车速、转速、挡位、油门、刹车、转向灯、里程、环境温度、混动电池 SOC、EV 行驶位、CHG/ECO/PWR 指针)。关键结论是混动电池 SOC 与 EV 状态是普通广播,不需要主动诊断轮询。但 HV 电池电流/电压与剩余续航经确认不在总线上。下列结论仅限源文档记录的这一台车,不能外推到其他配置、年款或市场版本。
车辆与适用范围
源文档是一个「用逆向出的 CAN 数据驱动自制数字仪表」的项目,主线工作是信号逆向,附带完整的方法学与交叉验证记录。信号只有在两段独立的实车行驶日志上都能复现,才被标记为「confirmed」。
| 项 | 内容 |
|---|---|
| 车型 | Toyota Yaris Hybrid(第 3 代 / XP130,THS-II NoDSU),2014 年 |
| 年款 / 市场版本 | 2014;源文档未给出市场版本 |
| 采集点 | 原厂车机 28 针连接器(p/n 90980-12555),第 9 脚 CAN-H / 第 10 脚 CAN-L,500 kbit/s,不是 OBD-II 诊断口 |
| 采集跨度 | 两段独立实车日志:session_0044.log(约 430s)与 session_0047.log(约 440s) |
| 适用范围 | 仅限这一台 Yaris Hybrid;源文档说明映射可能不适用于其他配置/市场/年款 |
总线与寻址
文档把车机连接器视为干线高速 CAN(HS-CAN)的同一逻辑总线,理由是它看到的报文集合(SPEED、RPM、GEAR、BRAKE、TURN_SIGNALS、ODOMETER 等)与预期一致。这也正是后装第三方 CAN 盒通常接入的位置。
| 项 | 内容 |
|---|---|
| 物理层 | 车机连接器 CAN-H/CAN-L 双线,500 kbit/s |
| 链路层 / 比特率 | 500 kbit/s(源文档明示) |
| 寻址方式 | 报文为 11 位标准 ID(如 0x0B4、0x1C4、0x4A7 等) |
| CAN FD | 源文档未提及 CAN FD |
| 读取方式 | ESP32 被动监听(TWAI_MODE_LISTEN_ONLY,不发送、不应答) |
已解码信号
下表合并源文档的两张清单:前 12 行为两段日志都复现的「confirmed」信号,后 5 行为语义成立但精确标度未最终确认的「strong hypotheses」。置信度标注原样保留。
| 信号 | ID / 字段 | 解码 | 证据 / 置信度 |
|---|---|---|---|
| 车速 | 0x0B4 / SPEED |
(byte5 << 8 | byte6) * 0.01 km/h | 两段日志复现;与里程/其他 3 个速度字段一致(≤0.5%) |
| 发动机转速 | 0x1C4 / RPM |
有符号 16 位 * 0.78125 rpm | 两段日志复现(0→60→0 与怠速/轰油) |
| 挡位 P/R/N/D/B | 0x127 / GEAR |
4 位枚举,byte5 高半字节 | 五个状态全部观测到 |
| 油门踏板 | 0x245 / GAS_PEDAL |
byte2 * 0.005(0–1 对应 0–100%) | 两段日志复现(观测 0–35%) |
| ICE 运行位 | 0x245 / ICE_RUNNING |
byte3 bit4 | 与 RPM>50 一致率 98–99% |
| 刹车按下位 | 0x230 / BRAKE_PRESSED |
单个 bit | 与换挡、车速变化对得上 |
| 转向灯 | 0x614 / TURN_SIGNALS |
2 位枚举 + 双闪位 | 左/右/无三态均观测到 |
| 总里程 | 0x611 / ODOMETER |
20 位,含 km/miles 单位位 | 确认为总里程(99552→99555 km),非续航 |
| 环境温度 | 0x442 / AMBIENT_TEMP |
byte0 – 40 = °C | 两天实测 37 °C / 27 °C 对照确认 |
| 混动电池 SOC | 0x4A7 / BATTERY_SOC |
byte2 * 0.5 = % | 观测 54.0–71.5%,符合 THS-II NiMH 工作带;标度沿用 Toyota/Techstream 惯例,未与参考工具读数核对 |
| EV 行驶位 | 0x498 / EV_DRIVE |
byte5 bit7 | 与「行驶中且 ICE 停机」100% 一致 |
| CHG/ECO/PWR 指针 | 0x247 / HSI_VALUE + HSI_ZONE |
byte1 为量程百分比;符号取自 HSI_ZONE |
zone/value 相关性 n=32779、零例外 |
| 刹车踏板(模拟量) | 0x224 / BRAKE_VALUE |
16 位,与刹车位强相关 | 假设:中位 0(松开)对 62(按下);单位与量程未确认 |
| 冷却液温度 | 0x618 / TEMP_RAW |
byte3;猜测量程 * 0.375 | 假设:暖机曲线合理,无参考温度计标定 |
| 第二温度(机油/CVT/电池包?) | 0x3B9 / TEMP2_RAW |
byte0,约 1 Hz | 假设:与时间/冷却液强相关(r≈0.95);量纲未提 |
| 纵向加速度/扭矩需求 | 0x320 / ACCEL_DEMAND |
有符号 byte4,约 20 Hz | 假设:加速正、制动/滑行负、稳态≈0;标度未确认 |
| 燃油消耗计数器 | 0x3A0 / FUEL_COUNTER_RAW |
byte7,10 Hz | 假设:随 ICE 运行递减,不是油位表;疑为更宽寄存器的低位字节 |
读取方法与注意事项
源文档的全部信号都靠被动监听获得,固件以 TWAI_MODE_LISTEN_ONLY 运行,不向车辆发送任何报文。判定的门槛是「两段独立日志都复现」才算 confirmed;单段日志里的现象只进「假设」或「排除」清单。
CHG/ECO/PWR 指针有一个容易踩的坑:符号位住在 HSI_ZONE(byte0),不在 HSI_VALUE(byte1)里。CHG 侧 byte1 用二进制补码并在 -100 处钳位,ECO/PWR 侧用无符号幅值且在全油门时会扫过 155,两侧原始范围重叠。早期固件只凭 byte1 判断符号,结果全油门的强 PWR 被误读成强 CHG,上车实测确认后改为按 HSI_ZONE 分支。此外 PWR 侧显示做了对折(PWR% = raw/2),因为 ECO/PWR 分界只是真实量程的中点而非顶点。
车速不做修正是有意为之:SPEED 是真实车速,里程、GPS 与总线上另外 3 个速度字段都对它。仪表自身的指针读数偏高(含法规性偏置,UNECE R39 要求指示值不得低于真值,上限 10% + 4 km/h),而这个偏置值只在仪表内部计算、不上总线。
证据等级与边界
证据分三层。第一层是实车观测:12 个 confirmed 信号来自两段真实行驶日志;速度刻度还用里程绝对锚定(整公里区间积分误差 +0.01%,方法自身不确定度 ±0.82%)。第二层是外部旁证:速度/转速等沿用公开参考 DBC(跨 Prius/Camry/Highlander 变体核对),SOC 的 0.5%/bit 标度沿用已知的 Toyota/Techstream 惯例。第三层是推测:冷却液、第二温度、加速度与燃油计数器的量纲都属猜测。
两处不能外推。第一,所有映射来自单一车辆,源文档明确「可能不适用于其他配置/市场/年款」;CHG/PWR 的 zone 编码尤其如此——文档记录后来一次实车硬加速还出现了 8、9、14 三个日志中没有的 zone,说明 4/6/12/15 对这批日志穷尽、对整车并不完整。第二,剩余续航与 HV 电池电流/电压/温度经确认不在本总线上,只能靠对电池 ECU 的主动 UDS 请求,源文档未提供任何绕过安全访问的方法,且不建议尝试。
常见问题
Yaris Hybrid 的 OBD 口能读到这些信号吗?
源文档没有用 OBD-II 口,而是从车机 28 针连接器的第 9/10 脚取数。这正是后装 CAN 盒通常接入的位置,文档据此把它当作同一逻辑总线处理。
混动电池 SOC 是主动问出来的吗?
不是。SOC 在 0x4A7 的 byte2 上被动广播,EV 行驶位、ICE 运行位同样是广播;仅靠被动监听就能重建后装盒子的能量流显示。HV 电池电流/电压/温度则确认不在总线上。
车速显示和真实车速差多少?
源文档记录:在仪表指示 140 时真值约 130,差值约 +10 km/h(单次指针读数,可视为 +5~+15)。这是法规性偏置,不是解码错误;固件有意不做修正。
为什么全油门时功率条会翻到 CHG?
因为符号取自 HSI_ZONE 而非 byte1。只凭 byte1 判断时,PWR 侧扫过 155 会被误读成大负值。按 zone 分支后即可修正。
延伸阅读
- 2022 GR86 / BRZ 的 CAN 数据地图:从 ASC 与 DCM 口抓 18 个报文 —— 同批另一台车的高速 CAN 取数档案,可对照 DBC 公式风格。
- 同一个「转向灯」在三家车厂是三种实现:车辆状态归一化的坑 —— 解释为何本档案里符号位要另找一个字段承载。
- 84% 的 PID 没有公开证据:OBD 私有协议解析的现实边界 —— 与本档案区分「已确认/假设/排除」的分层一致。
- 车载信号为什么会说谎:TTL、源时间与 500 ms 新鲜度阈值 —— 与「指示车速 vs 真速」的偏差话题相关。
- CAN 报文解析的「健康位」在说什么:校验、计数器与总线空窗 —— 帮助识别被排除的计数器/心跳类伪信号。
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/fellettigiacomo-yaris-xp130/re/docs/signal_findings.md(本项目车型档案主来源:完整方法学与验证证据)。 - 项目 01 ——
public-can-dbc-datasets/additional/fellettigiacomo-yaris-xp130/re/docs/decoded_signals_summary.md(已确认/假设/排除信号的快速参考表)。 - 项目 01 ——
public-can-dbc-datasets/additional/fellettigiacomo-yaris-xp130/README.md(项目背景、硬件与被动监听安全说明)。
说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复