统一诊断服务(UDS)

一、概述

        统一诊断服务(Unified Diagnostic Services),简称UDS。是ISO 15765ISO 14229定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽车总线(例如CAN、LIN、Flexray、Internet、K-line)上实现,是当前汽车领域广泛使用的一种车载诊断协议标准。
UDS协议的应用层定义是ISO 14229-1,目前大部分汽车厂商均采用UDS on CAN的诊断协议。

二、诊断原理

        根据UDS的诊断协议,汽车上的控制系统需要根据规则化的诊断协议进行故障记录和处理,最终体现为诊断故障代码(Diagnostic Trouble Code,DTC)的方式。例如,网络通信丢失的故障诊断机制:
        自动变速箱控制单元(Transmission Control Unit,TCU)和制动防抱死系统(Antilock Brake System,ABS)是CAN车载网络上的两大电子控制单元,这2个ECU要通过CAN网络进行大量的信息交互。但是由于电磁干扰、串扰、静电等外界干扰或电子控制单元本身控制策略引起的通信停止等原因,2个电子控制单元之间可能会出现通信丢失的现象。
        控制系统需要将故障信息(例如:通信丢失故障信息)诊断出来,以处理通信被破坏时出现丢失帧的故障现象,并记录为DTC。一旦某一控制系统,如TCU监测到一段规定的时间内并没有接收到ABS发来的通信数据,便将此DTC记录下来。外部诊断设备通过规则的诊断通信与控制系统建立诊断通信连接,并选择相应的诊断方式。例如:读取故障信息服务时,就会将此故障信息读出,并在诊断仪中显示出来。

三、UDS诊断服务

根据功能和处理目的被分类为不同的功能单元:

统一诊断服务(UDS)_第1张图片

 

具体介绍:

3.1 诊断和通信管理功能单元(Diagnostic and Communication Management)


$10 - 诊断会话控制(DiagnosticSessionControl)
该服务请求ECU从活动会话过渡到其他会话。包含三个子功能:01 - Default、02 - Programming、03 - Extended。


$11 - 电控单元复位(ECUReset)
该服务请求ECU执行复位。ECUReset请求参数的示例包括:hardReset、keyOffOnReset、softReset。


$27 - 安全访问(SecurityAccess)
此服务用于在活动诊断会话中达到更高的安全级别。可能需要SecurityAccess请求来解锁并访问受保护的功能及数据(例如通过DID读取ECU ID信息)。也可以用于从一个会话通过解锁以成功切换到其他会话。


$28 - 通讯控制(CommunicationControl)
该服务请求ECU控制其通信行为。一个典型的示例包括要求CAN总线中的ECU关闭车载通信,以提高诊断通信的效率。


$3E - 待机握手(TesterPresent)
TesterPresent请求通常定期发送,并包含一个功能地址。它指示测试仪仍处于连接状态(存在),并请求ECU保持当前诊断状态(例如,除默认会话之外的其他会话处于活动状态,RoE机制仍处于活动状态)。对这个服务的正响应抑制可以减少总线负载。


$83 - 访问时间参数(AccessTimingParameter)
该请求用于读取和/或修改通信定时参数。


$84 - 安全数据传输(SecuredDataTransmission)
此请求用于传输受加密方法保护的诊断数据。为此,必须实现位于应用程序层与测试仪和ECU的应用程序之间的“安全子层”。数据根据ISO 15764(扩展数据链接安全性)进行处理。


$85 - 诊断故障码设置控制(ControlDTCSetting)
该服务要求ECU停止/恢复DTC的设置。将此服务与车载通信切换 (服务$28通讯控制)相结合,可增加用于Flash编程的速度。


$86 - 事件响应(ResponseOnEvent)
事件响应(RoE)服务请求ECU自动传输指定事件的响应。


$87 - 链路控制(LinkControl)
该服务请求控制通信数据速率。对于CAN,它会影响ISO 11898中规定的数据链路层,从而影响用于板载通信以及诊断通信的数据速率。转换数据速率的请求分为:验证网络上的ECU是否允许特定的数据速率,在验证结果为肯定的情况下请求转换,执行转换。

3.2 数据传输功能单元(Data Transmission)


$22 - 通过ID读数据(ReadDataByldentifier)
该服务请求读取由DID参数标识的数据记录值。DID用于标识特定的本地数据记录。数据标识符0xF224可以包含诸如电池电压,歧管绝对压力,空气质量流量,车辆大气压以及计算出的负载值之类的数据。


$23 - 通过地址读内存(ReadMemoryByAddress)
该服务请求读取指定内存范围的当前值。请求参数是内存地址和内存大小。用于请求参数的字节数在addressAndLengthFormatldentifier中指定。


$24 - 通过ID读比例数据(ReadScalingDataByidentifier)
该服务请求ECU将缩放信息值传输到测试仪。测试人员使用定标信息值来转换数据。这项服务的实施增加了ECU软件的实用性。作为替代,测试器可以将缩放比例信息存储在数据库中。


$2A - 通过周期ID读取数据(ReadDataUyPeriodicidentifier)
该服务请求定期发送数据记录值。所请求的数据的传输速率由传输模式参数设置,例如“中等速率发送”,例如300 ms。


$2C - 动态定义标识符(DynamicallyDefineDataldentifier)
该服务允许测试人员在ECU中动态定义新的数据标识符,其中包含对静态定义的标识符和/或内存地址的引用。测试人员随后可以通过服务请求2A(readDataByPeriodicIdentifier)读取此动态定义的数据记录。动态定义的标识符的一个优点是, 一次服务可以请求传输很多的的数据记录。


$2E - 通过ID写数据(WriteDataByldentifier)
通过此服务,可以将由标识符(DID)指定的数据记录写入ECU存储器。


$3D - 通过地址写内存(WriteMemoryByAddress)
该服务允许将数据记录直接写入ECU的内存。请求参数是内存地址和内存大小以及数据记录。用于参数内存地址和内存大小的字节数在addressAndLengthFormatidentifier中指定。

3.3 存储数据传输功能单元(Stored Data Transmission)


$14 - 清除诊断信息(ClearDiagnosticInformation)
清除(复位)DTC格式,它可以改变DTC的状态。此服务允许在一个或多个ECU中清除错误存储器的内容。因此,可以使用物理地址或功能地址来请求服务。3个FF代表清除所有DTC。例如:
请求:14 + FF + FF + FF;
响应:54 。


$19 - 读取故障码信息(ReadDTCInformation)
诊断故障代码(DTC)用于编码和识别检测到的与排放有关和与排放无关的故障。DTC通常为三个字节,OBD II占用两个字节。该服务从一个或多个ECU请求DTC信息的状态。因此,该服务可以用物理地址或功能地址查询。测试人员可以请求与DTC关联的已存储数据记录,也称为“DTC快照”。DTC快照包含故障发生时的特定数据值。

3.4 输入输出控制功能单元(Input & Output Control)


$2F - 通过标识符控制输入输出(InputOutputControlByIdentifier)
该服务主要用于代替输入信号的值和/或控制ECU的输出。通常,此服务会绕过ECU的应用程序软件并直接触发输出电路,然后直接读取连接到输入电路的传感器。

3.5 例行程序功能单元(Remote Activation of Routine)


$31 - 例行程序控制(RoutineControl)
该服务用于维护和停止ECU内部例行程序。可以读取例程的结果以进行分析。该例行程序由两个字节的例行程序identifier标识。

3.6 上传下载功能单元(Upload & Download)


$34 - 请求下载(RequestDownload)
此服务启动从测试仪到ECU的数据传输。当ECU准备从测试仪接收数据时,它会发送肯定响应,其中包含用于后续数据传输的可用块大小(每个传输数据请求的数据字节数)


$35 - 请求上传(RequestUpload)
此服务启动从ECU到测试仪的数据传输。当ECU准备好将数据发送到测试仪时,它会发送一个肯定的响应,其中包含用于后续数据传输的块大小(每个传输数据请求的数据字节数)


$36 - 数据传输(TransferData)
此服务用于在测试仪和ECU之间(下载)或在ECU和测试仪之间(向上)传输数据。如果需要一个以上的transferData请求来传输数据,则使用blockSequenceCounter对传输次数进行计数。计数器允许在传输损坏后重复传输块。因此,在出现通信问题时,不必再次传输完整的数据


$37 - 请求退出传输(RequestTransferExit)
该服务用于终止transferData服务。完整的数据传输从requestDownloadrequestUpload服务开始,再由几个transferData服务继续,并由requestTransferExit服务完成。


$38 - 请求文件传输(RequestFileTransfer)
该服务用于终止transferData服务。完整的数据传输从requestDownloadrequestUpload服务开始,再由几个transferData服务继续,并由requestTransferExit服务完成。

四、否定响应码

UDS中定义的否定响应代码非常多,但常用的只有以下这些:

ServiceNotSupported/服务不支持($11 )

当诊断仪发送的请求消息中服务标识符无法识别或不支持时,ECU应发送该响应码

SubFunctionNotSupported/不支持子功能($12 )

该响应码表明请求的动作不能执行的原因是ECU不支持请求消息中的服务特定参数。如果诊断仪已经发送了一请求消息,并且该请求消息包含能识别且支持的服务标识符,但子功能要么无法识别要么不支持,此时ECU应(shall)发送此响应代码

IncorrectMessageLengthOrInvalidFormat/不正确的消息长度或无效的格式($13)

该响应码表明请求的动作不能执行的原因是ECU接收到的请求消息长度与特定服务规定的长度不匹配或者是参数格式与特定服务规定的格式不匹配。

conditionsNotCorrect/条件不正确($22)

该响应码表明请求的动作不能执行的原因是ECU的状态条件不允许。

requestSequenceError/请求序列错误($24)

该响应码表明请求的动作不能执行的原因是ECU收到一个非预期的请求消息序列或诊断仪发送的消息。

requestOutOfRange/请求超出范围($31)

该响应码表明请求的动作不能执行的原因是ECU检测到请求消息包含一个超出允许范围的参数或者是不支持或者激活会话模式下不支持的数据标识符/例程标识符的访问。应(shall)允许诊断仪在ECU内部进行读数据、写数据或通过数据调整功能的服务使用该响应代码。

securityAccessDenied/安全访问拒绝($33)

用在需要安全访问但没通过安全访问的情况。

invalidKey/密钥无效($35)

该响应码表明ECU不允许通过安全访问的原因是诊断仪发送的密钥与ECU内存中的密钥不匹配。

generalProgrammingFailure/一般编程失败($72)

该响应码表明在不可擦除的内存设备中进行擦除或编程时ECU检测到错误发生。

requestCorrectlyReceived-ResponsePending/正确接收请求消息-等待响应($78)

该响应码表明诊断仪请求的消息被ECU正确接收且请求消息中所有参数有效,但是将执行的动作未完成且ECU未准备好接收其它请求。一旦完成所请求的服务,ECU应(shall)发送一肯定响应消息或发送否定响应吗不为78的否定响应消息。

subFunctionNotSupportedInActiveSession/激活会话不支持该子服务($7E)

该响应码表明请求的动作不能执行的原因是当前会话模式下ECU不支持请求的子服务。

serviceNotSupportedInActiveSession/激活会话不支持该服务($7F)

该响应码表明请求的动作不能执行的原因是当前会话模式下ECU不支持请求的服务。
 

你可能感兴趣的:(tech,knowledge,网络,UDS,汽车安全诊断,网络安全,新能源汽车)