没有合适的资源?快使用搜索试试~ 我知道了~
首页统一诊断服务 (Unified diagnostic services UDS).pdf
非常不错的UDS协议学习资料,对协议开发和数据流分析非常具有指导意义。对0x10,0x11,0x27,0x28,0x3e,0x87,0x22,0x2e,0x23,0x3d,0x14,0x19,0x2f,0x31,0x34,0x35,0x38服务进行详细解释和举例说明。(注:个人根据网络资料整理并添加索引目录)
资源详情
资源评论
资源推荐

统一诊断服务 (Unified diagnostic services , UDS) (一)
需要努力进取并适当减肥的汽车电子工程师
119 人赞同了该文章
首发于
汽车控制器(ECU)网络诊断技术交流
关注专栏 写文章
张丁
UDS由ISO-14229系列标准定义,ISO 14229-1 定义了诊断服务,不涉及网络及实现,只有应用层的内容。而ISO 14229-3则定义
了UDS在CAN总线上的实现。
诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为
不同的诊断功能的request和response定义了统一的内容和格式。
最近关于UDS的一系列专栏文章只关注应用层的诊断服务,忽略下层的通信机制。
Diagnostic request的格式:
Diagnostic request的格式可以分为两类:一类是拥有sub-function的,另一类是没有sub-function的,如下面两张图所示。
Service ID(以下简称SID)的长度固定为1个字节,代表了这条诊断命令执行的什么功能。sub-function的长度也是1个字节,它通常
表示对这个诊断服务的具体操作,比如是启动、停止还是查询这个诊断服务。而后面的parameter则根据各个诊断服务的不同具有
不同的内容,长度和格式并没有统一规格,它用于限定诊断服务执行的条件,比如某个诊断服务执行的时间等。parameter的一个
重要应用是作为标识符,标识诊断请求要读出的数据内容,我会在后续的文章里详细讲述各个诊断服务的应用。
拥有sub-function的诊断请求
无sub-function的诊断请求
有一点要补充的是,其实sub-function严格来说是7个bit,而不是1个byte,因为它的最高位bit被用于抑制正响应(suppress
positive response,SPR),如果这个bit被置1,则ECU不会给出正响应(positive response); 如果这个bit被置0,则ECU会给
出正响应。这样做的目的是可以告诉ECU不要发不必要的response,从而节约通信资源。
Diagnostic response的格式:
Diagnostic response分为positive和negative两类。positive response意味着诊断仪发过来的诊断请求被执行了,而negative
response则意味着ECU因为某种原因无法执行诊断仪发过来的诊断请求,而无法执行的原因则存在于negative response的报文
中。
positive response
positive response的格式如上图所示,也基本上是由三部分组成,其中的response SID这个字节作为诊断请求的echo,它等于
SID + 0X40。后面的两个部分则视具体的诊断服务而定。
赞同 119
21 条评论 收藏分享

编辑于 2018-02-04
文章被以下专栏收录
本专栏旨在成为汽车控制器网络诊断技术交流的平台
进入专栏
negative response
negative response的格式固定为3个字节,第一个字节为0x7F,第二个字节是被拒绝掉的SID,第三个字节是这个诊断服务无法被
执行的原因。下面这张图列举了部分原因代码,比如,如果ECU给出7F 22 13这个negative response,则说明22这个服务因为诊
断请求数据长度不对的原因无法执行。
Negative Response Code
总结:诊断通信的过程就是诊断仪和ECU交换数据,前者发的是request,后者发的是response,而UDS最重要的作用就是定义了
这些request和response的格式和内容。今天这篇文章对request和response进行了简要介绍,在后面描述各种诊断服务的文章中
我会通过更多的示例来说明这两个基本概念。
汽车电子
汽车电子控制
汽车制造
汽车控制器(ECU)网络诊断技术交流
推荐阅读
统一诊断服务 (Unified
diagnostic services , UD
…
这篇文章介绍Stored Data
Transmission (存储数据传输,用
于操作DTC)这一类诊断服务,涉
及到两条诊断命令,分别是:
0x14:ClearDiagnosticInformation
0x19:ReadDTCInformation 这两
…
张丁 发表于汽车控制器...
统一诊断服务 (Unified
diagnostic services , UD
…
张丁 发表于汽车控制器...
统一诊断服务 (Unified
diagnostic services , UD
…
大年初二更新一篇,祝大家春节快
乐,好好休整,节后更好地工作生
活。在上一篇文章中我写了
Diagnostic and Communication
Management (诊断和通信管理)
这一类诊断服务中的0x10 , 0x11 ,
…
张丁 发表于汽车控制器...
基于UDS的
张丁
赞同 119
21 条评论 收藏分享

统一诊断服务 (Unified diagnostic services , UDS) (二)
需要努力进取并适当减肥的汽车电子工程师
208 人赞同了该文章
张丁
UDS定义的诊断服务从逻辑来说分为以下几类:
1. Diagnostic and Communication Management (诊断和通信管理)
2. Data Transmission (数据传输)
3. Stored Data Transmission (存储数据传输,用于操作DTC)
4. InputOutput Control (IO控制)
5. Routine Control (不知如何翻译好,作用是调用ECU内部的预置函数)
6. Upload Download (上传下载)
UDS规定使用1个byte来表示诊断服务,即所谓的Service ID,简称SID。本文介绍一下Diagnostic and Communication
Management 这一类诊断服务中的一部分。
DiagnosticSessionControl (0x10)
DiagnosticSessionControl诊断request的格式
DiagnosticSessionControl这个服务的SID是0x10,request固定为2个byte,第一个byte是SID,第二个byte的低7bit是sub-
function,用于指示ECU将进入的session。UDS定义的session包括:
0x00 ISOSAEReserved(保留)
0x01 defaultSession
0x02 ProgrammingSession
0x03 extendedDiagnosticSession
0x04 safetySystemDiagnosticSession
0x05 – 0x3F ISOSAEReserved(保留)
0x40 – 0x5F vehicleManufacturerSpecific(由整车厂自定义使用)
0x60 – 0x7E systemSupplierSpecific(由ECU供应商自定义使用)
0x7F ISOSAEReserved(保留)
DiagnosticSessionControl用于控制ECU在不同的session之间进行转换,session可以看作是ECU所处的一种软件状态,在不同的
session中诊断服务执行的权限不同。 ECU上电之后,默认处在defaultSession中,在这个session中很多诊断服务不可以执行,很
多诊断相关的数据不能读取或写入。一般的诊断仪启动之后,会给ECU发送10 03,即让ECU进入 extendedDiagnosticSession
中,在这个session中可执行的诊断服务就很多了。而如果要让ECU保持在non-defaultSession中,则需要诊断仪每隔固定的时间
发送0x3E服务,ECU才会知道诊断仪有和自己通信的需求,从而保持在non-defaultSession中。另一个常用的session是
ProgrammingSession,在这个session中可以进行软件刷写的一系列诊断服务。0x40 – 0x5F 这个范围中的session由整车厂自定
首发于
汽车控制器(ECU)网络诊断技术交流
赞同 208
52 条评论 收藏分享
剩余14页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0