汽车诊断之UDS入门-UDS概述

最近工作中涉及ECU刷写部分,作为一个没有接触过汽车诊断的小白,开始了边学边做的历程,对UDS做一个学习总结和复盘,希望可以帮助到各位小伙伴们。

应用层协议

UDS (Unified Diagnostic Services) 统一诊断服务,是车辆诊断的一种应用层协议,向整车所有ECU UDS协议ISO 14229定义了应用层和会话层,不关心底层数据链路层和物理层如何实现,可以在各种汽车总线上应用(CANEthernet FlexRayLIN等)。

 通信机制

基于C/S的诊断通信机制,诊断仪作为Client发出诊断请求request,车辆相关ECU作为Server处理该请求并发送诊断响应response(PosResponse/NegResponse),诊断报文是典型的事件触发型报文,有请求才会有响应。

如果ECU收到了诊断仪Tester发来的诊断请求并且确认了该请求,并作出对应的处理和响应,此时ECU向诊断仪发送肯定响应PosResponse

如果ECU无法发送对应的响应或者需要经过更长时间才能发送对应的响应则向诊断仪发送否定响应NegResponse

在某些情况下, Client发出诊断请求ECU不需要进行某种响应(肯定响应/否定响应),例如0x3E 0x80请求,抑制肯定响应报文。

诊断服务分类

SID服务分类

SID

服务名称

服务描述

诊断和通信管理功能单元

Diagnostic and Communications Management

0x10

DiagnosticSessionControl

诊断会话控制

0x11

EcuRestart

ECU复位

0x27

SecurityAccess

安全访问

0x28

CommunicationControl

通讯控制

0x29

Authentication

身份认证

0x3E

TesterPresent

待机握手

0x83

AccessTimingParameter

访问时间参数

0x84

SecureDataTransmission

安全数据传输

0x85

ControlDTCSetting

控制DTC设置

0x86

ResponseOnEvent

事件响应

0x87

LinkControl

链路控制

数据传输功能单元

Data Transmission

0x22

ReadDataByIdentifier

通过ID读取数据

0x23

ReadMemoryByAddress

通过地址读取内存

0x24

ReadScalingDataByIdentifier

通过ID读取比例数据

0x2A

ReadDataByPeriodicIdentifier

通过周期ID读取数据

0x2C

DynamicallyDefineDataIdentifier

动态定义数据ID

0x2E

WriteDataByIdentifier

通过ID写数据

0x3D

WriteMemoryByAddress

通过地址写内存

存储数据传输功能单元

Stored Data Transmission

0x14

ClearDiagnosticInformation

清除诊断信息

0x19

ReadDTCInformation

读取DTC信息

输入/输出控制功能单元

Input Output Control

0x2F

InputOutputControlByIdentifier

通过ID控制输入输出

例行程序功能单元

Routine Control

0x31

RoutineControl

例程控制

上传下载功能单元

Upload Download

0x34

RequestDownload

请求下载

0x35

RequestUpload

请求上传

0x36

TransferData

数据传输

0x37

RequestTransferExit

请求退出传输

0x38

RequestFileTransfer

请求文件传输

*蓝色背景代表常用服务

响应规则

Tester诊断请求第一个字节为Service Identifier (SID),代表诊断服务的标识符,如果ECU发送肯定响应,第一位为SID+40,例如0x22服务的响应SID0x62;如果ECU发送否定响应,响应格式固定为第一字节0x7F,第二字节为SID,第三字节为Negative Response Code (NRC),根据NRC可以判断错误原因和位置。

请求格式:

SID+[DID/RID/SubFunction[SID]+[DID/RID/SubFunction/etc]+[OptionalParameter]

肯定响应格式:

SID+0x40+[DID/RID/SubFunction[SID+0x40]+[DID/RID/SubFunction/etc]+[OptionalParameter]

否定响应格式:

7F+[SID[7F]+[SID]+[NRC]

DID相关服务

DID(DataIdentifier)的作用是ECU在对应位置存储了大量数据,有很多个字节,可以使用DID 对该数据进行检索或管理,DID2个字节DID parameter definitionsISO 14229-1:2020  Annex C.1

举个例子吧:

tester发送:

0x22 0xF1 0x90 (ReadDataByIdentifier request for DataIdentifier 0xF190,VIN number)

ECU positive response:

0x62 0xF1 0x90 0x12 0x34 0x56 0x78 0x9a 0xbc (Positive response starting with 0x22 + 0x40 = 0x62)

tester发送:

0x22 0xF1 0x90 (ReadDataByIdentifier request for DataIdentifier 0xF190,VIN number)

ECU negative response:

0x7F 0x22 0x22 (Negative response starting with 0x7F,NRC 0x22,ConditionsNotCorrect)

Subfunction相关服务

SF通常代表该诊断服务的具体操作,例如是启动、停止还是查询这个诊断服务(0x31)或者进入哪个会话状态(0x10),不是所有服务均有子功能.

举个例子吧:

tester发送:

0x10 0x03  (session control request for Subfunction 03,extended session)

ECU positive response:

0x50 0x03 (Positive response starting with 0x10 + 0x40 = 0x50)

tester发送:

0x10 0xFF (session control request for Subfunction FF,invalid session)

ECU negative response:

0x7F 0x10 0x12 (Negative response starting with 0x7F,NRC 0x12,Subfunction not supported)

RID相关服务

Client使用 RoutineControl 服务开始例程(routine) 、终止例程、请求例程执行结果。1个例程可以通过2个字节的RID RoutineIdentifier )来检索,RID parameter definitions ISO 14229-1:2020  Table F.1

举个例子吧:

tester发送:

0x31 0x01 0xF1 0xA0 0x78 (RoutineControl (0x31) Start request(0x01) for RoutineIdentifier 0xF1A0,checkProgrammingIntegrity, CRC32 result is 0x78)

ECU positive response:

0x71 0x01 0xF1 0xA0 0x00 (Positive response starting with 0x31 + 0x40 = 0x71, passed IntegrityCheck 0x00)

tester发送:

0x31 0x50 0x12 0x34 (RoutineControl (0x31) subfunction(0x50) for RoutineIdentifier 0x1234)

ECU negative response:

0x7F 0x31 0x12 (Negative response (1st 0x7F) for RoutineControl request (0x31) indicating that this subfunction is not supported (0x12)

今天内容就到这里啦,下期会对常用的一些服务进行解析,欲知后事如何,且听下回分解,就酱~

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汽车统一诊断协议标准(Unified Diagnostic Services,简称UDS)是由国际标准化组织(ISO)制定的一种通用汽车诊断协议。该协议标准在汽车制造和维修行业得到广泛运用,为汽车诊断提供了一套规范和可靠的指导原则。 恒润科技推出的UDS培训文档是一个专门针对UDS标准制定的培训教材,旨在帮助汽车技术人员更好地理解和应用UDS协议。 UDS培训文档首先介绍了UDS协议的由来和发展历程,以及其在汽车行业中的重要性和应用价值。文档详细描述了UDS协议的架构和通信流程,包括诊断会话的建立、消息的传输和诊断过程的控制。 文档还对UDS协议中常用的诊断服务进行了逐一解析和说明,如诊断会话控制、ECU数据传输、故障诊断和清除故障码等。此外,文档还涵盖了UDS在不同车辆通信总线上的应用方法和需注意的事项。 针对UDS培训的实践应用,文档提供了大量的案例分析和示例代码,以帮助学习者更好地理解和应用UDS协议。同时,文档还附带了一套完整的UDS测试工具,使学习者能够在实际操作中进行演练和测试。 总的来说,恒润科技的UDS培训文档通过提供全面且易于理解的学习材料,帮助汽车技术人员掌握UDS协议的基本原理和应用方法,提高其在汽车诊断和维修方面的能力和水平。这对于提高汽车制造和维修行业的效率和质量具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值