文章目录
-
- @[toc]
- 1,UDS概述
-
- 1.1 什么是UDS
- 1.2 UDS基本介绍
-
- 1.2.1 诊断服务ID(SID)
- 1.2.2 积极应对抑制子功能-积极应对抑制
- 1.2.3 消极应答码(NRC)
- 1.3 UDSonIP流程
- 1.4 报文类型
-
- 1.4.1 request
- 1.4.2 postive response
- 1.4.3 negative response
- 2,UDS详细说明诊断服务
-
- 2.1 DiagnosticSessionControl(0x10)
- 2.2 ECUReset(0x11)
- 2.3 SecurityAccess(0x27)
- 2.4 CommunicationControl(0x28)
- 2.5 TesterPresent(0x3E)
- 2.6 AccessTimingParameter(0x83)
- 2.7 SecuredDataTransmission(0x84)
- 2.8 ControlDTCSetting(0x85)
- 2.9 ResponseOnEvent(0x86)
- 2.10 LinkControl(0x87)
- 2.11 ReadDataByIdentifier(0x22)
- 2.12 ReadMemoryByAddress(0x23)
- 2.13 ReadScalingDataByIdentifier(0x24)
- 2.14 ReadDataByPeriodicIdentifier(0x2A)
- 2.15 DynamicallyDefineDataIdentifier(0x2C)
- 2.16 WriteDataByIdentifier(0x2E)
- 2.17 WriteMemoryByAddress(0x3D)
- 2.18 ClearDiagnosticInformation(0x14)
- 2.19 ReadDTCInformation(0x19)
- 2.20 InputOutputControlByIdentifier(0x2F)
- 2.21 RoutineControl(0x31)
- 2.22 RequestDownload(0x34)
- 2.23 RequestUpload(0x35)
- 2.24 TransferData(0x36)
- 2.24 RequestTransferExit(0x37)
- 2.26 RequestFileTransfer(0x38)
- 3,UDS示例
-
- 3.1 将数据下载到服务端
- 3.2 将数据上载到客户端
文章目录
-
- @[toc]
- 1,UDS概述
-
- 1.1 什么是UDS
- 1.2 UDS基本介绍
-
- 1.2.1 诊断服务ID(SID)
- 1.2.2 积极应对抑制子功能-积极应对抑制
- 1.2.3 消极应答码(NRC)
- 1.3 UDSonIP流程
- 1.4 报文类型
-
- 1.4.1 request
- 1.4.2 postive response
- 1.4.3 negative response
- 2,UDS详细说明诊断服务
-
- 2.1 DiagnosticSessionControl(0x10)
- 2.2 ECUReset(0x11)
- 2.3 SecurityAccess(0x27)
- 2.4 CommunicationControl(0x28)
- 2.5 TesterPresent(0x3E)
- 2.6 AccessTimingParameter(0x83)
- 2.7 SecuredDataTransmission(0x84)
- 2.8 ControlDTCSetting(0x85)
- 2.9 ResponseOnEvent(0x86)
- 2.10 LinkControl(0x87)
- 2.11 ReadDataByIdentifier(0x22)
- 2.12 ReadMemoryByAddress(0x23)
- 2.13 ReadScalingDataByIdentifier(0x24)
- 2.14 ReadDataByPeriodicIdentifier(0x2A)
- 2.15 DynamicallyDefineDataIdentifier(0x2C)
- 2.16 WriteDataByIdentifier(0x2E)
- 2.17 WriteMemoryByAddress(0x3D)
- 2.18 ClearDiagnosticInformation(0x14)
- 2.19 ReadDTCInformation(0x19)
- 2.20 InputOutputControlByIdentifier(0x2F)
- 2.21 RoutineControl(0x31)
- 2.22 RequestDownload(0x34)
- 2.23 RequestUpload(0x35)
- 2.24 TransferData(0x36)
- 2.24 RequestTransferExit(0x37)
- 2.26 RequestFileTransfer(0x38)
- 3,UDS示例
-
- 3.1 将数据下载到服务端
- 3.2 将数据上载到客户端
1,UDS概述
1.1 什么是UDS
UDS(Unified Diagnostic Services,诊断协议是统一的诊断服务)ISO 15765 和ISO 14229 定义的汽车通用诊断协议位于OSI模型中的应用层可以在不同的汽车总线(例如CAN, LIN, Flexray, Ethernet 和 K-line)上实现。UDS协议的应用层定义为ISO 14229-1
1.2 UDS基本介绍
UDS本质上是一系列服务,包括6类26类。每种服务都有自己独立的服务ID,即SID。
-
SID:Service Identifier,。UDS本质上是定向通信,是交互协议(Request/Response),即诊断方给ECU发送指定的请求数据(Request),这些数据需要包含SID。
-
如果是肯定的反应(),回复
[SID 0x40]
,请求10,响应50;请求22,响应62。 -
假如是否定反应(),回复,回复是一个声明。
-
名词
名词 释义 SID 诊断服务标识符(Service Identifier) DID 数据标识符(Data Identifier) SF 子功能(Sub-Function) NRC 否定响应码(Negative Response Code) SA 源地址(Source Address ) TA 目标地址(Target Address)
1.2.1 诊断服务ID(SID)
1.2.2 积极应对抑制子功能-积极应对抑制
位位置 | 描述 |
---|---|
bit7 | 积极应答抑制:0:需要应答,1:不需要应答 |
bit0~6 | 子功能参数 |
1.2.3 消极应答码(NRC)
数据 | 简写 | Description | 释义 |
---|---|---|---|
0x10 | GR | General reject | 普通拒绝(不合适) NRC 当代码适合时,选择应答码。 |
0x11 | SNS | Service not supported | 不支持的服务 |
0x12 | SFNS | Sub-Function not support | 子功能不支持 |
0x13 | IMLOIF | Incorrect message Length or invalid format | 不正确的消息长度或无效格式 |
0x14 | RTL | Response too long | 回复超时 |
0x21 | BRR | Busy repeat request | 系统忙:需要外部设备重新请求 |
0x22 | CNC | Conditions not correct | 条件不正确 |
0x24 | RSE | Request sequence error | 请求序列错误 |
0x25 | NRFSC | No response from sub-net componet | 子网无响应 |
0x26 | FPEORA | Failure prevents execution of requested action | 阻止执行请求失败 |
0x31 | ROOR | Request out of range | 请求超出范围(SID不支持或者无效的内存地址) |
0x33 | SAD | Security access denied | 安全访问被拒绝 |
0x35 | IK | Invalid key | 秘钥错误 |
0x36 | ENOA | Exceeded number of attempts | 超出可尝试的次数 |
0x37 | RTDNE | Required time delay not expired | 请求时间延时未到期 |
0x70 | UDNA | Transfer data suspended | 上传/下载被终止 |
0x71 | TDS | Transfer data suspended | 暂停传送 |
0x72 | GRF | General programming failure | 通用编程错误 |
0x73 | WBSC | Wrong Block Sequence Counter | 块编号错误 |
0x78 | RCRRP | Request corrently received, but response is pending | 请求正常,已被正确接收,回应未决定 |
0x7E | SFNSIAS | Sub-Function not support in active session | 激活的模式不支持该子功能 |
0x7F | SNSIAS | Service not supported in active session | 激活的模式不支持该服务 |
1.3 UDSonIP流程
1.4 报文类型
1.4.1 request
-
SID
-
SID+SF(Sub-function)
-
SID+DID(Data Indentifier)
-
SID+SF+DID
1.4.2 postive response
-
[SID|0x40]
-
[SID|0x40]+SF(Sub-function)
-
[SID|0x40]+DID(Data Indentifier)
-
[SID|0x40]+SF+DID
1.4.3 negative response
- 0x7F+SID+NRC
2,UDS诊断服务详解
2.1 DiagnosticSessionControl(0x10)
-
功能:请求ECU从活动会话过渡到其他会话
-
request:SID + SF …
-
SF:
数值 释义 备注 0x01 标准会话模式 该诊断会话模式是 ECU 默认的诊断会话模式,不需要任何握手服务。如果任何其他的会话模式在 ECU 进行,标准诊断模式一旦再次启动,必须遵循下列规则: ①ECU 发送诊断会话控制积极应答消息时应当停止当前的会话模式,然后启动新的会 话模式。②如果 ECU 发送了一个诊断会话控制积极应答消息,上位机在会话过程中没有对它进 行上锁,ECU 应当重新锁定。③如果 ECU 对诊断会话控制服务标示符发送了一个消极应答消息,则当前的会话模式应当继续进行。 在初始化之后如果没有诊断会话模式控制服务,应当默认设置为标准诊断会话模式 0x02 编程会话模式 该诊断模式可以用所有需要的诊断服务来进行 ECU 的编程,在该诊断会话模式下,外部设备必须发送握手指令保持握手状态。 如果 ECU 在引导程序中运行编程模式,则只能通过用上位机初始化操作-进行 ECU 复位的服务,进入标准诊断会话模式服务或会话层的定时结束来脱离编程模式。 如果 ECU 运行在引导程序,当它收到诊断会话控制服务要求进入标准诊断模式或会话层定时结束,且应用程序已经为两个模式做好准备时,ECU 应当重启应用程序 0x03 增强会话模式 基本功能同0x01,通常用于解锁高权限诊断服务,写入数据/参数、读写诊断码,例如怠速信息等 0x04 安全会话模式 基本功能同0x01,通常用于接收安全相关的诊断服务,例如气囊状态等
-
-
response:
-
positive:[SID+0x40] + SF + DATA
数据位置 数值 释义 #1 SID + 0x40 = 0x50 会话控制服务应答 #2 SF 诊断模式 #3~#4 P2 server_Max 0x0000~0xFFFF,单位:1 ms #5~#6 P2* server_Max 0x0000~0xFFFF,单位:10ms -
negative:0x7F + SID + NRC
数据位置 数值 释义 #1 0x7F 消极应答标识 #2 SID = 0x10 #3 NRC 取值范围:0x12, 0x13, 0x22。含义见 NRC表格
-
-
示例:
2.2 ECUReset(0x11)
-
功能:客户端使用它来请求ECU复位
-
request:SID + SF
-
SF
数值 释义 备注 0x01 hardReset 重新上电 0x02 keyOffOnReset 模拟一次ACC OFF/ON 0x03 softReset 重启ecu程序
-
-
response:
-
positive:
据位置 数值 释义
-