锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

UDS协议栈详解

时间:2022-12-08 06:30:00 传感器歧管n传感器e3x

文章目录

    • @[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,诊断服务ID。UDS本质上是定向通信,是交互协议(Request/Response),即诊断方给ECU发送指定的请求数据(Request),这些数据需要包含SID。

  • 如果是肯定的反应(Positive Response),回复[SID 0x40],请求10,响应50;请求22,响应62。

  • 假如是否定反应(Negative Response),回复7F SID NRC,回复是一个声明。

  • 名词

    名词 释义
    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流程

Tester DoIP Entity request SID SF xx xx xx xx xx valid positive response [SID+0x40] SF xx xx xx xx xx diagnostic message * N invalid negtive response 7F SID NRC xx xx xx xx alt [positive response] [negtive response] Tester DoIP Entity

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表格
  • 示例:

Tester ECU request:[0x10 0x02] response:[0x50 0x02 0x00 0x32 0x01 0xF4] response:[0x7F 0x10 0x12] alt [positive response] [negative response] Tester ECU

2.2 ECUReset(0x11)