惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
小众软件
小众软件
有赞技术团队
有赞技术团队
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
J
Java Code Geeks
罗磊的独立博客
V
Visual Studio Blog
雷峰网
雷峰网
H
Help Net Security
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
F
Fortinet All Blogs

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
车联网产品经理需要了解的UDS诊断
violetic · 2025-03-03 · via 人人都是产品经理

作为一个汽车产品人,不可避免的会接触到各种车端通信协议,其中的UDS(Unified Diagnostic Services)诊断协议,广泛应用于汽车电子系统的诊断和维护。这篇文章,我们来学习一下。

一、ECU

ECU( Electronic Control Unit)电子控制单元,车上搭载着许多ECU,用来监控和控制车辆的各个系统,如变速器控制单元(TCU)、电子稳定程序控制单元(ESP)、动力电池管理模块(BMS)等。各ECU根据各种传感器提供的信号,按照预先编写的程序进行计算和判断,从而控制执行器工作,以实现对汽车各系统的精确控制。

二、UDS诊断协议

当我们身体的某个部位不舒服时,我们可以去医院看医生,这个时候医生会询问我们的感受,开具一些检查来了解情况。同样的,当车辆某个系统或部件有问题时,我们也需要通过某种手段获取车辆的数据信息,以更好的进行治疗。UDS诊断协议就是我们和车辆ECU进行诊断沟通的一个通用手段。

UDS(Unified Diagnostic Services,统一诊断服务)诊断协议是一种广泛应用于汽车电子控制系统中的标准化诊断协议,基于ISO 14229标准。它为汽车电子控制单元(ECU)之间的诊断通信提供了一套统一的框架和服务。这使得不同品牌的汽车和不同制造商的ECU可以使用相同的诊断工具进行诊断,大大提高了诊断的便利性和效率。

UDS诊断提供的能力包括

  • 诊断通信:通过标准化的服务(如0x10会话控制、0x22读取数据、0x2E写入数据)与ECU交互。
  • 故障管理:支持DTC(Diagnostic Trouble Code,故障码)的读取、清除和存储。
  • ECU编程:用于固件更新(如通过0x34请求下载、0x36传输数据)。
  • 安全访问:通过安全算法(如种子-密钥机制)防止未授权操作。

SID:UDS诊断协议定义了26种诊断服务,这些服务被分为6大类,每种服务都有一个唯一的服务标识符(SID)。

Sub-function:每个诊断服务下的子功能,有的诊断服务不需要指定子功能。Sub-function共有8个bit。

  • bit7:正响应抑制位,全称Suppress Positive Response,bit7=1时,抑制正响应,此时不需要ECU给出响应,bit7=0时,需要ECU给出响应。
  • bit6~bit0:这7个bit用来指定具体的Sub-function。

UDS诊断协议针对每一个服务,都详细介绍了服务的功能范围、给出了请求消息的定义要求、肯定响应消息的定义要求、受支持的否定响应代码(NRC),以及消息流示例。

三、UDS诊断服务

下面介绍几个车联网产品经理需要了解的常用服务

10服务:诊断会话控制

10服务用于启用ECU中的不同诊断会话。不同的诊断会话支持的服务权限不同。

请求消息

diagnosticSessionTypes诊断会话类型,第7位为正响应抑制位,第6至0位定义诊断会话类型。

  • 默认会话(0x01):这是ECU上电时的初始会话模式。在默认会话下,ECU支持一些基本的诊断服务,例如读取数据(0x22)、清除诊断信息(0x14)、读取诊断信息(0x19)等。
  • 编程会话(0x02):编程会话用于ECU的软件更新和配置。在编程会话下,ECU支持一些特定的诊断服务,例如编程服务(0x35、0x36、0x37)。
  • 扩展会话(0x03):扩展会话用于启用一组特定的诊断服务和功能。在扩展会话下,ECU支持一些高级的诊断服务,例如安全访问(0x27)、数据写入(0x2E)等。

肯定响应消息

sessionParameterRecord会话参数记录定义如下,其中

P2Server_max:表示ECU在应用层上对诊断命令的响应时间。如果ECU在该时间内未能响应,可以认为通信超时。

P2*Server_max:表示ECU在强化模式下对诊断命令的响应时间。强化模式通常用于ECU暂时无法处理当前诊断命令的情况,ECU会发送一个NRC 0x78(RequestCorrectlyReceivedResponsePending)响应,表示请求已接收但响应待定。P2*Server_max定义了服务器在这种情况下可以等待的最长时间。

19服务:读取DTC信息

19服务支持读取故障码(DTC,全称Diagnostic Trouble Code)信息。故障码由制造商预先定义,可以简单理解为给车辆的每个故障一个代号。当我们读到DTC时,根据代号就知道发生了什么故障。

19服务比较复杂,其下有27个子功能,常用的子功能包括:(Sub-function第7位为正响应抑制位,第6至0位定义具体子功能。)

  • 0x01:reportNumberOfDTCByStatusMask – 读取符合状态掩码条件的DTC数量。
  • 0x02:reportDTCByStatusMask – 读取符合状态掩码条件的DTC列表及其状态。
  • 0x03:reportDTCSnapshotIdentification – 报告DTC快照记录的标识。
  • 0x04:reportDTCSnapshotRecordByDTCNumber – 通过DTC编号报告DTC快照记录。
  • 0x06:reportDTCExtendedDataRecordByDTCNumber – 通过DTC编号报告DTC扩展数据记录。
  • 0x0A:reportSupportedDTC – 报告ECU支持的所有DTC及其状态。

1901(读取DTC数量)

比如我们要获取ECU中已确认DTC的数量。获取DTC数量需要使用19 01服务,我们先看下01服务的

请求消息的定义要求、肯定响应消息的定义要求。

请求消息

DTCStatusMask(DTC状态掩码):

状态掩码共有8个状态位,通过状态掩码,我们可以精确地获取特定状态的DTC信息。比如我们请求消息的状态掩码的某一位设置为1,如果DTC的实际状态位中的这一位也为1(即请求掩码与DTC的实际状态进行位逻辑AND运算,并且结果不为零),那么认为DTC的状态与状态掩码是匹配的。

肯定响应消息

DTC状态可用性掩码:用于指示ECU支持的DTC状态位。比如某个ECU的DTC状态可用性掩码为0x09,表示仅支持以下状态位:Bit 0:Test Failed(测试结果是失败)、Bit 3:Confirmed DTC(确认的DTC)。

DTCFormatIdentifier(DTC格式标识符):定义了ECU所报告DTC的格式

DTCCount(DTC计数):DTC数量

示例

现在我们获取ECU中已确认DTC的数量,请求消息中的状态掩码应设置为0x08,所以请求消息为

若收到响应消息如下,说明该ECU支持的DTC状态可用性掩码为0x2F,DTC格式为14229,DTC数量为1。

22服务:通过DID读取数据

22服务支持读取ECU中通过一个或多个DID所识别的数据记录值。

DID(Data Identifier)数据标识符。DID的编码范围为16位(0x0000–0xFFFF),其具体含义和用途根据标准化定义或车辆制造商自定义而有所不同。由UDS协议进行标准化定义的DID中常用的有

  • F190:车辆识别号(VIN)
  • F191:ECU硬件号
  • F189:ECU软件版本号
  • F18C:ECU序列号

请求消息

肯定响应消息

示例

比如我们想读取VIN,VIN的DID为F190,所以请求消息

响应消息如下,VIN的数据格式为17字节,ASCII编码。

四、诊断与车联网

远程诊断与OTA

基于UDS诊断协议,再结合车联网技术,把原先通过线下诊断工具排查解决车辆问题的过程放到线上云端,就有了远程的车辆诊断。远程诊断可以实现车辆故障的高效诊断与快速响应,降低维修成本,提升用户体验。同样的,把原先通过线下刷写工具刷写软件放到线上云端,就有了OTA远程更新。

本文由 @violetic 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务