Alfa Giulia 的 177 行 PID:header 错了会触发防盗

作者:

在

结论:这份针对 Alfa Romeo Giulia 2.2 JTDm(MY2016)柴油版的 PID 表共 177 行、覆盖 8 个 header,含金量很高但带着一条硬性安全告警:如果车上装的那块直连 CAN 适配板启用了防盗功能,绝对不要用 header 为 DAC7F1 的轮胎 PID,它会触发防盗锁止并让车熄火。使用顺序必须是先看 header,再看公式。

八个 header 的分工

命令之前要先发 header,它的作用是选定要对话的 ECU。177 行按 header 的分布极不均衡,这个分布本身就是本表性质的说明。

Header 行数 性质 代表 PID
DA10F1 129 厂商自定义,涵盖发动机、DPF、喷油、启动停止 221003 冷却液温度 (((A*256)+B)*0.02)-40 摄氏度
DABAF1 15 直连 CAN 适配板专用地址 2200000000FC 发动机转速 ((B*256+C) 与 65534 按位与) 右移 2
DB33F1 11 标准 OBD-II 通道 010C 转速 ((256*A)+B)/4、010D 车速 A km/h
DAC7F1 8 轮胎压力与温度,带安全告警 2240B1 至 2240B4 四轮压力 ((A*256)+B)/1000 bar
DA40F1 7 IBS 蓄电池传感器与钥匙位置 221005 同帧多字段,含 SoC(B 字节)与温度(G 减 40)
DA18F1 5 变速箱相关 221018 扭矩 ((A*256+B)-500) Nm
DA2AF1 1 转向角 22083C ((SIGNED(A)*256)+B)/16 度
DA60F1 1 仪表亮度 220104 A

这张表立刻能读出两件事。第一,真正属于标准 OBD-II 的只有 DB33F1 那 11 行,其余 166 行全是厂商或改装板自定义通道——也就是说,指望一个通用 OBD App 自动识别是不现实的,必须手工导入自定义 PID。

第二,DA10F1 独占 129 行,而这个 header 有一个非常具体的行为特征:它的响应需要较长时间。作者给出的应对办法很聪明——同一个仪表页里如果混放 DA10F1 的传感器和其他传感器,前者会因为来不及应答而完全不显示。正确做法是把所有 DA10F1 的传感器集中放在同一个页面、与其他页面隔离,因为 App 只轮询当前仪表页上的传感器。

十五条「?」行与重复 PID

作者给数据加的自证标注是这张表最值得尊敬的地方:长描述以 ? 开头的行,表示他在自己的车上无法验证。177 行里有 15 行属于这一类,其中包括 MY20 才有的几个电池 PID(如 2240B2 电池 SoH、222B0E 电池电流)与几条 Hall 值(例如 223888 时间格式、2202000001F7 变速箱温度)。把这些行直接搬进自己的仪表配置,等于替作者承担未验证的风险。

现象 实例 该怎么处理
长描述以 ? 开头 ? 前缀共 15 行,作者自述无法在车上验证 仅在确认车型年款后作为候选,不进告警逻辑
同一 PID 重复出现且单位不同 012F 燃油液位同时给出百分比 A*100/255 与升 A*53/255 二选一,不要同时上仪表否则读数冲突
同一 PID 重复出现且公式不同 里程 22380E 一处为三字节除以 10,另一处为「总里程减去该值」 按车辆年款选定一条,交叉验证后再用
同一 PID 原样重复 DPF 再生次数 2218A4 出现两次,公式相同 导入前去重,避免同名重复传感器
仅在特定年款可用 MY20 系列电池 PID 标注 (MY20) MY2016 柴油车不适用,勿据此判断电池状态

还有一个平台差异必须写在前面:这些参数全部在一台 2.2 柴油 Giulia 上测试。作者明确说,其中一部分在 2.0 与 2.9 汽油版上不适用也不工作;反过来,论坛上流传的汽油版 PID 在他车上也不工作、未经他测试。跨动力总成使用这份表之前,请先假设它不成立。

两条硬约束:安全与轮询预算

第一条是安全。为了绕过 ELM327 拿不到的数据,作者使用了一块廉价的 CAN 适配板,并为它定义了专用 header DABAF1;长描述里标注为直连板专属的 15 行就是走这条通道的。而紧跟着有一条全大写的告警:如果车上的这块板启用了防盗功能,不要使用 header 为 DAC7F1 的轮胎 PID,它会触发防盗并让车熄火。这一条属于操作红线,不是免责声明。

第二条是轮询预算。每个传感器都有一个 priority 字段:1 表示每个仪表刷新循环都请求一次,1/50 表示每 50 个循环才请求一次。作者的建议是按信号的变化速度分配——涡轮压力变化快、给高优先级,冷却液温度变化慢、给低优先级,把这个页面挤出来给快变量。这个字段是传感器自身的属性,在所有使用它的仪表页生效,因此改一处会影响到其他页面。

常见问题

为什么我的 App 用这份表什么都读不出来?

先看 header 混放问题。177 行里 129 行属于 DA10F1,而这个 header 的响应较慢:同一仪表页若混放 DA10F1 与其他 header 的传感器,DA10F1 会来不及应答而不显示。作者的建议是把所有 DA10F1 传感器集中在同一页并与其他页隔离。

轮胎 PID 到底能不能用?

看车上那块直连 CAN 板是否启用了防盗:如果启用,绝对不要用 header 为 DAC7F1 的 8 行轮胎 PID,它会触发防盗锁止并使车辆熄火。没有装该板或未启用防盗时才可尝试,且同样建议你先确认车辆年款。

标着 ? 的 PID 是什么意思?

作者自述:长描述以 ? 开头的 PID 是他无法在自己车上验证的条目,共 15 行,包含 MY20 系列的几个电池参数与若干未确认的 Hall 值。这类条目只能作为候选,不应写入告警或长期趋势判断。

2.0 汽油版能不能直接套用这份表?

不能直接套用。全部参数是在一台 2.2 JTDm 柴油 MY2016 上测试的,作者明确说明其中一部分在 2.0 与 2.9 汽油版上不适用也不工作。跨动力总成使用前应先假设不成立,逐条实车验证。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/danardi78-alfa-giulia-pids/README.md(适用车型 Giulia 2.2 JTDm MY2016、文件清单与八列字段含义、? 前缀表示无法验证、DA10F1 响应较慢的仪表页排布建议、priority 字段取值为 1 与 1/50 的含义、直连 CAN 板专用 header DABAF1 及其目的、DAC7F1 轮胎 PID 触发防盗锁止的安全告警、仅柴油版测试的适用边界)
  • 项目 01 —— public-can-dbc-datasets/additional/danardi78-alfa-giulia-pids/custompids.csv(177 行 PID 的 header、命令 ID、公式、单位与量程;用于核对 DA10F1 129 行、DABAF1 15 行、DB33F1 11 行、DAC7F1 8 行等的分布与 15 行 ? 标注)

免责声明

本文所述 PID、header 与换算公式均来自公开开源资料分享,属第三方逆向工程产物,未经独立实车验证,也不代表车辆制造商的官方数据。文中前述的安全告警(启用了防盗功能时禁用 DAC7F1 轮胎 PID)为原作者明确声明,实际操作前必须确认车辆配置。不同年款、市场与动力总成存在差异,涉及行车安全的判断请以实际测量与官方资料为准。

更新记录

  • 2026-10-14 初稿

评论

发表回复

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