菲亚特 Grande Punto:29 位 UDS 与 105 个 DID 的读取边界

作者:

在

结论:在一辆南非市场的菲亚特 Grande Punto(平台 199)1.4 8V(发动机 350A1000,Magneti Marelli IAW 5SF9 发动机 ECU)上,诊断走 29 位标识符、500 kbps 的 C-CAN,应用层是 UDS(ISO 14229),传输层是 ISO 15765-2,采用常规固定寻址(请求 18DAxxF1、应答 18DAF1xx)。这台车最关键的一条工程特性是:发动机 ECU 只接受不填充的帧,数据长度必须等于真实长度,这正是自动协议搜索与多数通用 OBD 应用连不上的原因;标准 OBD-II(模式 01 至 0A)也不应答,属非 EOBD 合规。边界:全部结论出自这一辆车与这份只读研究,不能套到其他校准或车型。

本文整理自该项目的协议文档与示例结果。文档把每条记录分为「Observed(本车读出)」与「Published(取自公开来源、未在本车确认)」,本文保留这一区分。

车辆与适用范围

数据来自一位研究者的这一辆 Grande Punto,用一款 ELM327 兼容蓝牙适配器加一台 Linux 主机接入。工作方式偏保守:先适配器自身,再被动监听,然后标准请求,最后才是有寻址的厂家请求;并且全程只读,不发送清除、写入、执行器测试、安全访问或编程会话。

项 内容
车型 菲亚特 Grande Punto(平台 199)1.4 8V,发动机 350A1000,南非市场
年款 / 市场版本 源文档未给出具体年款;市场为南非
ECU / 改装状态 发动机 ECU:Magneti Marelli IAW 5SF9,名称 5SF9AG,硬件 IAW5SFHW405,软件 881AW23E,Fiat 件号 51926690
采集跨度 若干次只读会话;一次怠速分析含 6 段共 5995 帧
适用范围 仅这一辆车与这一套校准;不得假设其他校准或车型相同

总线与寻址

物理层是 OBD 引脚 6 / 14 上的 C-CAN,500 kbps,29 位标识符;传输层为 ISO 15765-2 常规固定寻址(请求 18DA + 目标 + F1,应答 18DAF1 + 目标)。本车一大特性是不能填充,数据长度须等于真实长度;流控帧为三字节 30 00 00,须在首帧后数毫秒内跟上。

项 内容
物理层 C-CAN,OBD 引脚 6 / 14,500 kbps
链路层 29 位标识符;ISO 15765-2(ISO-TP)常规固定寻址
寻址 请求 18DA + 目标 + F1;应答 18DAF1 + 目标
帧填充 发动机 ECU 不接受填充,数据长度须等于真实长度
流控 30 00 00 三字节,须在首帧后数毫秒内
应用协议 UDS(ISO 14229);标准 OBD-II 模式 01 至 0A 不应答

已解码信号

下表混合数据标识符(DID)与广播帧字段两类。证据一列沿用文档口径:「本车读出」为在本车实测,「公开来源」为取自 Fiat 500 等同平台资料、未在本车独立确认。文档还提示:公开定义里发动机转速位偏移比本车实际晚一个字节,公开偏移应视为起点。

信号 位置(DID / 帧) 解码 证据
发动机转速 DID 1000 原始值 ÷ 4,转/分 本车读出;与广播 0618A001 交叉核对
冷却液温度 DID 1003 原始值 − 40,摄氏度 跟随广播 0A18A001 字节 3;偏移为假设
电池电压 DID 1004 原始值 ÷ 10,伏 本车读出;与适配器电压表一致
运行计数 DID 1008 运行时约每分钟 +1,可能是分钟计 本车读出
启动后计时 DID 1009 约每 15 秒 +1,单位未知 本车读出(刚启动后读数为 1)
目标怠速 DID 186B 原始值 ÷ 4,转/分(700;开空调 850) 本车读出;转速 1000 随后一拍跟随
大气压 DID 1956 毫巴 可能(静止且数值符合海拔)
进气歧管压力 DID 181F 毫巴 可能(随负荷变化)
电池电压(第二路) DID 197D、197E 原始值 ÷ 10,伏 本车读出;与 1004 一致
氧传感器电压 DID 1898、189A 毫伏(在稀 / 浓之间摆动) 可能
发动机转速(广播) 帧 0618A001 字节 2-3(大端) 1 转/分/位;字节 7 为油门踏板 转速与 1000 一致;踏板为公开来源
冷却液温度(广播) 帧 0A18A001 字节 3 原始值 − 40,摄氏度 跟随 1003;比例为公开来源
节气门位置(广播) 帧 0628A001 字节 4 怠速时 4 至 7 个计数 公开来源
备件号 DID F187 文本 51926690 本车读出

读取方法与注意事项

先做被动监听。先静默监听确认总线活着,再用最简请求(TesterPresent)扫地址。这台车上,3E 00 得到干净的 7E 00,证明它讲 UDS;而 1A 80 得到 7F 1A 11(服务不支持),说明它不讲 KWP2000。否定应答也是成功,因为它证明寻址与帧格式是对的。

不填充与流控交给适配器。关键一步是关闭格式化(ATCAF0)并启用可变数据长度(ATV1),由自己写 ISO-TP 长度字节。长应答以首帧发出后需流控;经蓝牙往返太慢时发动机 ECU 会放弃,故让适配器自行发送三字节流控。

读取成本要知道。一次遍历 105 个标识符约需 14.4 秒,因此比这更快的信号都会被欠采样;模块地址扫描(256 个)约 54 秒,整个 16 位空间约需 3.6 小时。

只读边界。文档强调这是只读研究:写入、清除、例行程序、安全访问与复位服务从未发送。本文同样不涉及安全访问绕过;源文档未提供此类方法,也不建议尝试。

证据等级与边界

文档用「Observed」标记本车读出,用「Published」标记取自 Fiat 500 等同平台资料、未在本车独立确认的内容。因此表中带「公开来源」「可能」「假设」字样的条目尚未在本车成立。

识别侧证据较硬:F187 备件号、F192 供应商硬件号、F194 供应商软件号、F196 ECU 名称都能读出;发动机 ECU 的 VIN 字段(F190)为空,VIN 由地址 40 的车身电脑返回。应答模块只有四个:10 发动机、28 ABS、30 电动助力转向、40 车身电脑,其余全静默。

来源说明把范围写得很清楚:只有这一辆南非市场的 Grande Punto 1.4 8V,不要假设其他校准或车型布局相同;这是「诊断 / 信号研究集合,而非 DBC」。据此,本文的 DID 含义、比例与广播偏移不能外推到其他 Grande Punto 或其他 Fiat 车型。

常见问题

为什么通用 OBD-II 读不到这台车?

因为这台发动机 ECU 非 EOBD 合规,标准 OBD-II 模式 01 至 0A 在任何协议上都不应答;加上它只接受不填充的帧,自动协议搜索与多数通用应用都会失败。作者改用 29 位寻址加不填充帧后才得到首个应答(还是否定的 7F 1A 11)。

为什么这台车要求帧不填充?

文档实测:发动机 ECU 只接受数据长度等于真实长度的帧,填充帧得不到应答。ISO 15765 允许填充,多数 ECU 两种都收,但这台不收——文档指出,正是这一个细节让自动检测与通用应用全部失败。

用服务 22 读 DID 需要先进入扩展会话吗?

不需要。文档记录 22 xxxx(ReadDataByIdentifier)在默认会话即可工作,且进入扩展会话(10 03)并未解锁测试范围内的额外标识符。

为什么用掩码 FF 读故障码会返回 27 条?

因为掩码 FF 返回的是 ECU 能够 设置的记录、状态为 40(本周期未完成测试),那是监控项清单而非故障清单。文档建议用具体掩码:08 读已确认、04 读待定、01 读当前正在发生。

这些 DID 能套到别的 Grande Punto 吗?

不能。来源说明写明只有这一辆南非市场的 1.4 8V 车,且这是一个研究集合而非 DBC;不同校准或车型的布局可能不同,需逐车复核。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/docs/protocol.md(本项目车型档案主来源,取用了物理层 / 传输层、DID 表与广播帧表)。
  • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/docs/example-results.md(取用了怠速捕获统计与读取耗时)。
  • 项目 01 —— public-can-dbc-datasets/additional/ryancoxrbc-fiat-grande-punto/SOURCE.md(取用了「仅此一辆车、研究集合而非 DBC」的边界说明)。

说明:本文整理自第三方开源项目的公开文档,仅代表该文档所记录的单个车辆样本,不代表同型号全系车型。CAN 与诊断操作存在风险,任何实车操作前请自行复核并遵守当地法规。

更新记录

首次发布 2026-10-11 最近核对:2026-10-11

评论

发表回复

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