特斯拉 iBooster Gen1 台架解码:双总线、已锁存故障与先验证清单

作者:

在

结论:这份 Tesla iBooster Gen1(件号 1037123-00-B,适配 2016 至 2020 年 Model S)的台架笔记给出三条硬结论:只给 12 V 常电、地和点火三根线,助力就会出现,因此纯只听的监视方案成立;两条 500 kbit/s 总线的引脚和极性都已完成实测;踏板行程可以换算到毫米。但这些结论有一条严厉的前置要求——作者在专门的「先自行验证」文件里写了:踏板传感器引脚、件内部终结电阻、峰值工作电流等项目必须先在台架上量出来,未经核实不得写进固件、DBC 或线束。

台架前提:哪些已经量过,哪些只是假设

区分「已测得」和「来自其他车型的社区资料」是这份档案的第一原则。电源与 CAN 引脚是实测量;踏板传感器那几组引脚属于借用其他 iBooster 变体(不同厂商平台)的推论,置信度低。

引脚 功能 状态 如何收口
1 常电 12 V,40 A 熔断 已确认 配合 9 与 20 即可出现助力
9 地 已确认 与壳体接地螺柱连通验证
20 点火 12 V,5 A 熔断 已确认 只有在它带电时才出现助力
25 / 16 车辆总线 CAN-H / CAN-L 已确认,含极性 该极性下抓到干净的 0x39D 帧
18 / 10 YAW 总线 CAN-H / CAN-L 已确认,含极性 该极性下抓到 0x38E 与 0x38F
17 常电 12 V,5 A 熔断 低置信度 Gen1 应有此针,本件未量
2 / 8 / 22 / 23 踏板行程传感器 低置信度 社区对同代也有分歧,需台架确认
24 / 4 制动信号输出 / CLIN 低置信度 可能本件根本不存在
连接器 26 针 EuCon 中等置信度 按壳体标记与针腔数量核对

另外三条至今没有量:助力时的峰值电流(社区说法是「几十安」,保险丝规格 40 A,未测前一律按电瓶供电准备);只接引脚 1 与 9 不给点火时是否还发报文;上电自检是否会让推杆移动(在证明不会之前按会来处理)。

两条总线与关键报文的定位

两条总线同为 500 kbit/s、11 位 ID,都不带内部终结电阻,因此适配器侧的 120 欧终结跳线必须闭合,并在部件端并一颗松脱的 120 欧电阻,形成两节点总线;上电前的高低速线间拓扑检查应读到约 60 欧。

总线 引脚(H / L) 静态帧率 报文 ID 承载内容
车辆总线 25 / 16 36.4 帧每秒(静态 4 个 ID,踏板动作时 11 个) 以 0x39D 为主 16 位踏板行程
YAW 总线 18 / 10 149.5 帧每秒 0x38E(99.7 Hz)、0x38F(49.8 Hz) 12 位位置、状态与两个制动标志

实际作业中用两台适配器时,USB 索引会重排,识别哪台在哪条总线上必须看内容——谁看到 0x39D 谁就在 25/16 上,绝不能按索引或 USB 地址判断。还有一个非常具体的陷阱:这条总线只有两个节点,只听模式下没有节点发应答位,发送错误计数会以每次 8 递增,约 32 次尝试就进总线关闭状态,再自动恢复,如此循环。同一器件、同一 12 秒窗口的对照结果是:只听模式抓到 1,006 帧每秒但只有 1 个唯一 ID,而应答模式是 37 帧每秒却有 4 个 ID。所以捕获一律用应答模式。

0x39D:踏板行程的字节定义与两套标定

这条报文是 500 kbit/s、DLC 4、25.0 Hz。它的 b0 是校验和,算法为 b1 + b2 + b3 + 0xA0 取低字节,在 2,250 帧上 100% 通过;b1 是半字节活跃计数器(每次加 1,模 16,高四位恒为 0);b2:b3 是小端无符号 16 位行程值,静态约 262,观测到的最大值为 14070。

样例 解析
B7 0E 08 01 计数器 14,行程 264(静止)
85 00 C8 1D 计数器 0,行程 7624(行程中段)
D4 0B F8 31 计数器 11,行程 12792(接近全行程)

筛选方法值得一提:按「平滑度」而不是极差排序候选字段,判据是相邻差值均值除以值域。校验和与计数器铺满 00 到 FF 但帧间跳变随机,物理量则平滑移动;b2:b3 小端组合得分 0.009,计数器与校验和那对约 0.12。

位置 实测原始值 样本数
静止 263.1 319
21 mm 6114.0 161
42 mm 13125.2 80
终点限位脉冲峰值 13606(合 43.44 mm) 无

第一次跑给出 counts = 333.866 × mm − 897.2,即约 0.0030 mm 每计数。但静止点不落在这条直线上:263 计数外推得 3.475 mm 而不是零,合理解释是传感器啮合前约有 3.5 mm 自由间隙,低于该点读数被压在约 263 的底值上。第二次跑保持在 10、20、30 mm,结果与第一次不自洽——20 mm 读到 6886.4,反而高于第一次 21 mm 的 6114.0。单调传感器不可能如此,因此至少有一组物理位置是错的。

组合 计数每毫米
第一次跑(21、42 mm) 333.87
第二次跑(10、20、30 mm) 361.93
五个点全用 320.68

结论很干脆:瓶颈是尺子而不是 CAN 数据。单次保持内的总线读数离散为约正负 20 计数(0.062 mm),而两次跑之间的物理位置偏差可达 4.4 mm——信号比它的测量手段精确约 70 倍。要真正标定,需要百分表配固定基准,并且一次跑完整个量程(因为误差出现在两次跑之间,而不是一次跑的内部)。用于显示和记录已足够,档案给出的组合拟合是 mm = (counts − 3.3) / 320.68。

0x38E 与 0x38F:状态、两个制动标志与校检

0x38E 是 500 kbit/s、DLC 8、99.7 Hz,静止值为 77 2B 00 40 11 00 00 00。它的 b0 不是数据,而是覆盖 b1 到 b7 的 CRC-8/SAE-J1850。b3 只是位置的低字节,b4 的低四位才是高字节位——这是这份档案纠正过的最重要一处。

字节 字段 说明
b0 CRC-8 覆盖 b1 至 b7,无 数据
b1 活跃计数器 0x20 至 0x2F,高四位固定为 2
b3 位置低字节 静止稳定值为 0x40,会因进位而回绕
b4 低四位 位置高字节位 与 b3 组成 12 位位置,静止 320,全行程约 3052
b4 高四位 状态 0 初始化中、1 正常助力、2 故障
b6 制动标志 0 或 1,带约 0.55 mm 回差

把 b4 高位从位置里剥离是人为诱发的 sensor 故障验证的:拔掉行程传感器后该 nibble 从 1 跳到 2,而 b3 完全没动,旧的 16 位读法整整偏移了 0x1000。健康工况下它恒为 1,所以两种解释只差一个常数,这也是早先的 16 位模型能拟合所有健康捕获、相关性仍达 0.9999 的原因。上电轨迹还能独立 佐证这个拆分:约 1.47 秒前 b4 读 0x01,之后读 0x11,而两侧的 12 位位置都是 320。

标志 触发位置 回差 次数
0x38E b6 建立 2.18 至 2.42 mm 约 0.55 mm 4 次上电周期
0x38E b6 释放 1.72 至 1.75 mm 释放阈值在四次上电中重复到 2 个计数内
0x38F b2 bit0 建立 1.45 至 1.66 mm 释放边沿未被采样间隔分辨 跨 4 次上电
0x38F b2 由 0xE3 转 0xDB 39.75 至 40.16 mm 回程 38.77 至 39.51 mm 4 次

0x38F 是同一总线的另一条报文,49.8 Hz,静止值 3F 2D E2 53 02 00 00 00,同样用 b0 承载同一套参数的 CRC-8。它的 b2 是状态字节:跨四次上电只见到六种取值,0xE2 为就绪且制动释放、0xE3 为制动施加、0xDB 为接近行程末端、0xCC 为故障,另三个只在启动前两秒依次出现。b3 虽然常变,但与位置的相关性只有 0.009、与踏板速度 0.000,也不是计数器,档案刻意留着不解码。两套制动标志对应两个阈值,形状上像稳定程序期望的冗余开关对;而 0x38F 的释放边沿在 49.8 Hz 下常只有一两帧落在过渡区,观测点散布在 1.45 到 4.11 mm,不要引用它的释放值。

整份档案还有一条反向但有用的结论:独立的故障状态报文并不存在,状态就藏在位置报文的一个字段里。完整性方案则分两种:车辆总线的 0x39D 用加性校验和,YAW 两条报文用 CRC-8/SAE-J1850(多项式 0x1D、初值 0x00、异或输出 0x0A,输入输出均不反射),在四次上电周期的 46,960 帧 0x38E 与 23,478 帧 0x38F 上 100% 通过,合计 70,438 帧零失败;两条 ID 共用一套参数,说明 CRC 并未用报文 ID 做种子。

故障行为:会锁存,且两条总线会不一致

拔掉行程传感器可以诱发故障,助力随之消失,三个信号在约 10 ms 内一起变化。这里最关键的一条是它的可恢复性边界。

步骤 状态 nibble 0x38E 位置 0x39D 行程 助力
正常 1 实时更新 实时更新 有
拔掉传感器 2 无 钉在 16354(0x3FE2) 无
重新插回传感器 仍为 2 恢复实时(320 到 401) 仍钉在 16354 仍无
断电重启 1 实时 实时 有

两件事由此定下来。第一,钉住值带有效校验和,16354 在物理上不可达(终点限位才 13606),所以消费者不必认识这个哨兵值也能按量程拒绝。第二,状态位是「助力可用性」标志,不是「数据有效性」标志:插回传感器后位置已经有效并持续更新,状态却仍是 2、助力依旧关闭,只有断电重启才恢复。锁存期间的另一条后果是两条总线不再一致——YAW 总线报告真实位置,车辆总线仍钉在哨兵值,因此要位置就得用 0x38E。

对实车的影响值得提示:插头瞬时接触不良(振动、腐蚀、压接不良)会把助力器锁进无助力状态,直到点火循环才恢复——踏板变硬并持续如此,而原车仪表没有任何东西能解释原因。制动仍然可用,只是需要大得多的踏板力。

刹车后的突发报文:行为数据与推理教训

最后一组可用数据是事件性的。0x31D、0x34D、0x36D、0x37D、0x38D 每次各发一帧、集中在约 120 ms 内,0x33D 也属于这一组。合并六份日志得到 12 次完整突发,其中 10 次跟在制动释放之后 0.64 至 2.20 秒,没有一次踏板施加会漏掉;另外 2 次是上电突发,约在累计运行 6.8 秒时出现,与踏板无关。

字段 含义 标度 相关性
0x38D b5:b6 小端 u16 该次施加的推杆行程峰值 129.3 计数每毫米 0.99975
0x37D b0:b1 小端 u16 制动施加持续时间 27.50 计数每秒 0.99877
0x31D b2 高四位 同上持续时间的对数分桶 1 到 7,约每翻倍一级 0.884
0x31D b0:b1、0x3AD b0:b1 累计运行时间,非事件数据 9.99 计数每秒(100 ms 时基) 无

0x38D 的峰值与标定过的行程在 34 mm 量程内相差在 0.66 mm 以内,比尺标定的 2 mm 不确定度还紧;三次上电中四次打到终点限位的读数彼此相差在 8 个计数内。但这一节所有数字都建立在 10 个事件上,候选字节远多于事件数:两个 0.999 级的拟合通过了 20,000 次置换检验,而相关性在 0.9 附近及以下的都只当线索。峰值与持续时间在这批标定扫描中部分耦合(踩得深通常也踩得久),还需要 20 到 30 次独立控制深度、速度与保持时间的施加才能收口。

这节还留了两条反面教训。一是量程规则会被误用:针对消费者的「行程超出 13700 即拒」对分析是错的——终点限位读数 13606,但快速撞击会过冲到 14070,套用会剪掉真实行程,曾因此把系数写成 129.8(恢复过冲后为 129.3,且拟合更好)。二是运行时间会伪造相关性:后期事件往往更深更久,于是运行时间足以冒充测量量,0x37D b5 与峰值相关 0.90 却和运行时间相关 0.82,0x34D b5 与运行时间相关 0.88,两条都没敢主张。

常见问题

这份解码能不能直接写进 DBC 或线束?

踏板行程、位置、状态与两条 ID 的校验部分是实测量,可以用;但标注为低置信度的行不能落地。作者在「先自行验证」文件里点名了必须先在台架上量出来的项目:踏板传感器引脚(2、8、22、23)、17 号针、24 与 4 号针是否存在、两总线是否真的没有内部终结电阻、助力时的峰值电流、以及上电自检是否会让推杆移动。未按日期把假设替换成实测之前,不要写进固件、DBC 或线束。

为什么 0x38E 的 b4 高位不能当作数据有效位?

因为它是助力可用性标志,不是数据有效性标志。人为诱发故障后把传感器插回,0x38E 的 12 位位置已经恢复实时更新(320 到 401),而该状态位仍为 2、助力依旧关闭,只有断电重启才恢复。位置本身的合法性应当另按量程判断:故障 Sentinel 是 16354,这个值带有效校验和且在物理上不可达。

为什么捕获必须用 ACK 模式而不是只听?

因为这条总线只有两个节点,只听模式下没人发应答位,发送错误计数以每次 8 递增,约 32 次尝试就进入总线关闭并自动恢复,循环往复。同一器件、同一 12 秒窗口的对照是:只听模式 1,006 帧每秒但只有 1 个唯一 ID,应答模式 37 帧每秒却有 4 个 ID——那 1,006 帧是重传循环而不是信号,而且它把其余三个 ID 全部隐藏了。

踏板行程为什么会有两套换算系数?

第一次跑只有 21 与 42 mm 两个点,得到计数等于 333.866 倍毫米减 897.2;第二次跑取了 10、20、30 mm,得到 361.93 计数每毫米。两次不自洽的标志是 20 mm 的读数高于 21 mm 的读数,单调传感器不可能这样,所以问题出在物理位置测量而不是总线数据。五个点合并后的系数是 320.68,用于显示与记录足够,而要把精度提高到毫米级则需要百分表加固定基准,并且一次跑完整个量程。

传感器插头瞬时接触不良会发生什么?

会把助力器锁进无助力状态:状态 nibble 变为 2,车辆总线的行程值钉在 16354,助力关闭。即使插头立刻恢复接触,YAW 总线的位置已经恢复更新,状态仍保持 2、助力也仍不回来,必须等到点火循环才恢复。实际后果是踏板突然变硬并持续变硬,而原车仪表上没有任何东西能说明原因;制动仍然可用,只是需要大得多的踏板力。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/pelosim-tesla-ibooster/docs/DECODE.md(两条总线的引脚与帧率、0x39D 与 0x38E、0x38F 字节定义、校验方案与故障行为)
  • 项目 01 —— public-can-dbc-datasets/additional/pelosim-tesla-ibooster/docs/PINOUT.md(引脚假设表、置信度分级、台架接线与实测结果)
  • 项目 01 —— public-can-dbc-datasets/additional/pelosim-tesla-ibooster/docs/BENCH_LOG.md(首次点亮记录、只听陷阱、二次离线分析的推行数据与推理教训)
  • 项目 01 —— public-can-dbc-datasets/additional/pelosim-tesla-ibooster/VERIFY_FIRST.md(必须先自行验证的清单与「打勾即等于用实测替换假设」的要求)

免责声明

本文内容涉及制动助力部件。所有 CAN ID、字节定义、系数与阈值均来自单一零件号的公开台架笔记,未在任何独立实车上复现,不构成装机、改装或维修依据。文中明确区分了已实测量与借用其他 iBooster 变体的假设,凡标注低置信度或未打勾的项目,在自行测量之前不得进入固件、DBC 或线束。制动系统属于安全相关件:助力失效时踏板力会显著上升,任何介入都应在具备夹持、限位与断电条件的台架上进行,并由具备资质的人员确认。

更新记录

  • 2026-10-15 初稿

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注