UDS协议诊断与通讯管理

UDS服务的诊断和通信管理功能组包含以下服务

Diagnostic Services Service Id Sub-Function
Diagnostic Session Control 0x10 Default Session(0xXX)
Programming Session(0xYY)
Extended Session(0xZZ)
ECU Reset 0x11 Hard Reset(0xXX)
Soft Reset(0xYY)
Key-Off Reset(0xZZ)
Security Access 0x27 Seed Request(0xXX)
Key Response(0xYY)
Communication Control 0x28 Enable Tx and Rx for ECU
Disable Tx and Rx for ECU
Enable Tx and Disable Rx for ECU
Disable Tx and Enable Rx for ECU
Tester Present 0x3E No subfunction
Tester Present 0x3E No subfunction
Access Timing Parameter 0x83 Yes(Vehicle Manufacturer Specific)
Secure Data Transmission 0x84 Yes(Vehicle Manufacturer Specific)
Control DTC setting 0x85 Enable DTC Detection(0xXX)
Disable DTC Detection(0xYY)
Response To Event 0x86 Yes(Vehicle Manufacturer Specific)
Link Control 0x87 Yes(Vehicle Manufacturer Specific)

注意:子功能id通常由汽车制造商决定。这里我提到了一些通用子功能

下面将解释上面的一些诊断服务。

Diagnostic Session Control

Diagnostic Session Control,即诊断会话控制。它的功能如下:

  1. ECU有很多服务,但是在ECU未在其兼容会话中运行之前,并非所有服务都可以访问,例如某些服务可以在默认会话中访问,而某些需要ECU扩展会话,而某些则可以进行编程。由车辆制造商决定。
  2. 在ECU启动时,ECU在默认会话中运行,并且此时诊断工具(客户端)只能访问制造商UDS规范所允许的ECU(服务端)服务
  3. 因此,在执行任何诊断请求之前,客户必须确保该服务在ECU当前会话中可访问或不可访问。如果不是,则在执行所需的请求之后,首先发送会话更改请求。
0x10_UDS

客户端和服务端之间的UDS通信

注:

Application Specific Data 是预留给汽车制造商和供应商定义用的。

UDS帧数据长度没有限制,但是我们知道CAN总线允许的数据长度是8字节,CANFD为64个字节。因此,当数据长度大于允许的帧长度时,必须根据CAN传输层协议(ISO15765-2)将其分割成多帧,然后在CAN总线上发送。

ECU Reset

ECU Reset,即ECU复位。此服务是给诊断工具(客户端)对ECU(服务端)进行复位操作使用的。主要可以执行以下三种复位类型:

  1. 硬复位(Hard reset)
  2. 软复位(Soft Reset)
  3. 钥匙关闭复位(Key Off on Reset)

硬复位(Hard reset)

  • 关闭ECU电源(断开KL30),然后按顺序执行开机操作,称为“硬复位”。
  • 硬复位过程中没有必须执行任何标准操作,这完全取决于应用程序。
  • 硬复位的后果是RAM和NVM都会被重新初始化。

软复位(Soft Reset)

  • 当收到软复位请求时,整个ECU系统不会完全关闭,然后重新启动应用程序。
  • 与硬复位一样,软复位过程中没有必须执行任何标准操作,这完全取决于应用程序。
  • 软复位的后果是RAM会被重新初始化,但NVM的数据不会。

钥匙关闭复位(Key Off on Reset)

  • 顾名思义,这个命令就像先钥匙关闭点火,然后再打开。
  • 与其他复位一样,没有必须执行任何标准操作,这完全取决于应用程序。
  • RAM会被重新初始化,NVM的数据将保持受保护状态。

Security Access

Security Access,即安全访问。为了保护ECU安全区域,诊断工具若要访问未授权的区域,必须通过某些安全验证才能进行访问,安全性验证方式有很多种。如果得到了ECU的授权,此UDS服务可帮助诊断工具访问ECU的安全区域。

用于安全验证的UDS帧

0x27_UDSFrame

安全验证的UDS帧

注:寻找seed-key的方法是汽车制造商指定的。

Communication Control

Communication Control,即通讯控制,此服务用于控制ECU的通信。例如启用或禁用来自ECU的消息的发送和接收。使用此服务,我们可以执行以下子功能:

  1. 启用Tx和启用Rx
  2. 启用Tx和禁用Rx
  3. 禁用Tx和启用Rx
  4. 禁用Tx和禁用Rx

Tester Present Service

Tester Present Service,即测试仪在线服务。该服务由诊断工具发送,以使ECU在当前的诊断会话中保持活动状态,否则经过一段时间后,将服务端和客户端之间通信链接断开。

我在这里不解释其他的服务,因为我相信您现在已经可以根据服务ID,自行查阅官方的规范进行了解了。

下一节