结论:这份 Outlander PHEV 日志集的价值不在报文清单,而在「双通道同时录 + 视频打时间戳」这个组合。三个总线分两组录制:主线 C 总线(带诊断口那条)与 EV-CAN 同录,EV-CAN 与 BMU-CAN 同录,因此同一个物理事件能在两条总线上互相对齐。BMU 侧 0x3C2 每 100 ms 报一次电池电流,零点在 0x80000000,是天然的时间基准。
两条录制配置决定了能回答什么问题
采集者用的是 GVRET 硬件,日志存成 SavvyCAN 可读的 CSV。通道分配是理解整套日志的钥匙:main-ev 目录里通道 0 是主线 C 总线(即带诊断连接器那条),通道 1 是 EV-CAN;ev-bmu 目录里通道 0 是 EV-CAN,通道 1 是 BMU-CAN。
| 目录 | 通道 0 | 通道 1 | 能对齐的事件 |
|---|---|---|---|
| main-ev | 主线 C 总线(诊断口所在) | EV-CAN | 车身动作与驱动系统响应 |
| ev-bmu | EV-CAN | BMU-CAN | 用电设备动作与电池电流变化 |
这个配置带来一个直接好处:EV-CAN 在两组里都出现,因此可以把两组日志通过 EV-CAN 上的共同事件接起来,间接得到「车身动作 → 电池电流」的因果链,而不需要三次同时录制。
时间戳的来源与精度
每个日志目录下的说明都给出一串 TS 数值,单位是秒,来自 SavvyCAN 文件时间戳,由人工对照视频读出。作者明确说明这些时间戳「不是 100% 准确」。使用时应当把它当作事件排序依据而非精确时延依据——它能告诉你「压缩机启动发生在按下 AC 之后」,但不能告诉你相差了多少毫秒。
BMU 侧:0x3C2 是整套日志的锚点
0x3C2 是这堆日志里最有用的报文,因为它同时满足三个条件:高频、物理量连续、与下游事件强相关。它的前 4 字节是一个大端值,表示电流流向;零点为 0x80000000,大于该值表示电流从电池流出(放电),小于该值表示充电电流。第 5 字节在所有状态下都是 C8,作者推测为状态字节。
| 字段 | 位置 | 取值含义 | 备注 |
|---|---|---|---|
| 电流值 | 字节 1–4 | 大端,零点 0x80000000 | 大于零点为放电,小于为充电 |
| 状态 | 字节 5 | 恒为 C8 | 含义未确认 |
| 周期 | — | 100 ms | 适合做事件对齐 |
作者专门提到该总线上大部分报文已在 SimpBMS 项目的解码文档里有说明,因此 BMU 侧的解读工作主要集中在少数几条上。这也是做车型逆向时的常见省力路径:先找社区已有的解码文档,再补自己的缺口。
EV 侧:0x388 的逐字节观察
0x388 被判断为空调压缩机状态报文,是这份日志里逐字节记录最完整的一条。它的价值在于提供了一个「状态机 + 设定值」同帧的范例。
| 字节 | 观察行为 | 推断 |
|---|---|---|
| 字节 0 | 压缩机启动后由 01 变 81,停止后变 82 | 运行状态位 |
| 字节 1 | 多为 00,字节 0 由 81 变 82 时变为 02 | 次级状态位 |
| 字节 2–5 | 数值干净,疑似设定值 | 可能是传感器输出或目标值 |
| 字节 6 | 常见(可能恒为)00 | 未使用 |
| 字节 7 | 压缩机关为 02,开为 06 | 压缩机开关指示 |
这条报文的可靠性来自交叉验证:作者记录了 EV 模式开空调时 0x388 的首次非零时刻(TS 247.92380 出现第一条 01 00 00 00 00 00 00 06,TS 251.12 字节 2–3 首次非零),并指出 BMU 通道上 0x3C2 的电流尖峰与视频、与 0x388 的取值变化几乎完全吻合。三条独立证据对齐,才把一个「疑似」变成可用结论。
负向对照的价值
日志集里有两个刻意做的对照实验。一个是「enable-ac-no-refrigerant」:在冷媒被抽掉之后开空调,TS 669 之后电池电流没有明显变化,因此判断压缩机根本没启动,空调控制器可能检测到低压而拒绝吸合。另一个是「ac-on-no-refrigerant」,在主线 C 总线上重录了一遍。这类「什么都没发生」的日志在逆向里极有价值——它给出了信号在负条件下的基线。
类似的还有加热器那两段。作者原本想录 EV 模式下的加热器工作,后来发现这辆车根本没有装电加热器,只有暖风水泵在转。这段日志因此被保留为一个明确的反例:报文可能照发,但末端执行器不存在。
日志清单与使用场景
整套日志按录制场景命名,覆盖的模式差异决定了各自适合回答什么问题。EV 目录下有 8 组,主线目录下有 3 组。
| 场景 | 适合用来找什么 |
|---|---|
| normal-mode-gear-selection | 挡位切换对应的报文变化(N/D/R/P 反复切换) |
| charge-mode 与 long-charge-mode-novideo | 充电模式进入与发动机介入/退出的时序 |
| driving-ev | 低速前进后退、B 挡与 4WD Lock 模式下的驱动报文 |
| ac-on-ev-mode | 压缩机启停与 0x388、0x3C2 电流的对应关系 |
| enable-ac-no-refrigerant | 负向对照:无冷媒时电流与状态报文的基线 |
| heater-attempt-ev-mode 与 ev-heater-mode-maybe-again | 反例:无电加热器时的报文行为 |
| steering-lock-to-lock | 方向盘左右打死过程中的转向角报文 |
| parking-brake | 驻车制动反复拉放的单变量对照 |
其中 parking-brake 那组是很好的单变量样本:从 TS 370 到 TS 392,驻车制动每隔约 2 秒拉放一次,连续十次,几乎没有其他干扰动作。要定位一个开关量报文,这种设计比长距离行驶高效得多。
常见问题
这两组日志为什么不一次录三条总线?
因为录制设备只有两个通道,作者改为分两组录制并让 EV-CAN 在两组中都出现,从而用 EV-CAN 上的共同事件把两组日志接起来,间接得到主线 C 总线与 BMU-CAN 之间的对应关系,无需三通道硬件。
日志里的时间戳能用来算精确时延吗?
不能。TS 数值是从 SavvyCAN 文件时间戳人工对照视频读出的,作者明确说明不是百分之百准确。它适合确定事件先后顺序与大致间隔,不适合作为毫秒级时延测量的依据。
0x3C2 的电流值怎么判断是充电还是放电?
以前 4 字节的大端值与零点 0x80000000 比较:大于零点对应电流从电池流出(放电),小于零点对应充电电流。该报文每 100 ms 发送一次,第 5 字节在所有状态下恒为 C8。
0x388 能确认是空调压缩机状态吗?
属于强推断而非定论。作者给出了逐字节观察:字节 0 在压缩机启动后由 01 变 81、停止后变 82,字节 7 在压缩机开时为 06、关时为 02;同时 BMU 侧 0x3C2 的电流尖峰与视频记录、与 0x388 取值变化几乎完全吻合。三条证据对齐,但仍应视为高置信度推断。
为什么还要录「无冷媒」和「没有电加热器」这种日志?
因为负向对照能给出信号在条件不满足时的基线。无冷媒时 TS 669 之后电池电流无明显变化,说明压缩机未启动,控制器可能因低压拒绝吸合;加热器那两段则证明这辆车未装电加热器,报文可能照发但末端执行器不存在。这类样本能防止把「报文存在」误读成「功能存在」。
延伸阅读
- 公共 CAN/DBC 数据集怎么选:四类来源与三道筛查 —— 带视频时间戳的日志集属于哪一类证据
- BYD Atto 3 档案:Chassis 与 Private 双总线分工 —— 另一款插混车型的双总线结构对照
- Nissan Leaf ZE0:LBC 块数据与只读遥测 —— 电动车电池侧报文的解码思路
- 车载信号为什么会说谎:TTL、源时间与 500 ms 新鲜度阈值 —— 100 ms 周期报文在新鲜度上的可用性
参考资料
- 项目 05 ——
public-can-dbc-datasets/additional/projectgus-outlander-phev-logs/README.md(车辆状态、日志格式 GVRET CSV 与三个目录的分工) - 项目 05 ——
public-can-dbc-datasets/additional/projectgus-outlander-phev-logs/ev-bmu/README.md(通道分配、0x3C2 电流编码、0x388 逐字节观察与各组日志时间戳) - 项目 05 ——
public-can-dbc-datasets/additional/projectgus-outlander-phev-logs/main-ev/README.md(主线 C 总线三组日志的场景与时间戳) - 项目 05 ——
public-can-dbc-datasets/additional/projectgus-outlander-phev-logs/cmu/README.md(CMU EEPROM 的 sigrok 逻辑分析仪采集说明)
免责声明
本文所述日志来自一辆 2019 年款 Outlander PHEV 事故车的采集记录,车辆状态与配置的代表性有限。文中报文 ID、字节取值与时间戳均为该公开仓库的观测记录,未经独立复现,其中多处标注为推断而非确认。请勿据此对车辆进行任何发送或控制操作,实际工作请以自有采集与官方资料为准。
更新记录
- 2026-10-14 初稿
发表回复