2.5.3 UDS(统一诊断服务)诊断要求
1.诊断层级
对应OSI(开放系统互连)七层模型,基于CAN总线诊断的OSI七层模型见表2-20。
图2-52 跛行睡眠等待状态流程
表2-20 基于CAN总线诊断的OSI七层模型
2.传输层和网络层协议
(1)地址格式 使用常规寻址模式,支持物理寻址和功能寻址,采用11位CAN标识符地址。
(2)数据流
1)非分段数据流。非分段数据流由非分段CAN报文的单帧(SF)构成,用于数据长度小于或等于7个字节的报文传输。非分段数据流示意图如图2-53所示。
图2-53 非分段数据流示意图
2)分段数据流。分段数据流由分段CAN报文的多帧构成,用于数据长度大于7个字节的报文传输。数据流由第一帧(FF)和若干个连续帧(CF)组成。
接收方在接收到第一帧(FF)后需要发送一个流控制帧(FC),简称“流控”。流控制帧包含块大小(BS)及最小分隔时间(STmin)的信息。BS是指接收方发出流控后等待下次发送流帧之前,允许发送方发送连续帧的最大数量。STmin是指接收方要求发送方在传输两个连续帧之间需要等待的最小时间。
分段数据流示意图如图2-54所示。
图2-54 分段数据流示意图
(3)帧类型
1)概述。每一个单帧(SF)、第一帧(FF)、连续帧(CF)或者流控制帧(FC)都有8个字节的数据域,CAN帧的数据长度设定为8个字节,不使用的字节填充为0x00。数据域结构见表2-21所示,包括以下两部分:
①协议控制信息(PCI):指示帧类型、数据长度等信息。
②数据字节信息(DB):包含发送的数据。
表2-21 数据域结构
2)单帧。单帧(SF)通过协议控制信息(PCI)的高四位设置为0000b来识别。PCI中的单帧数据长度(SF_DL)按表2-22所列内容计算。
表2-22 单帧数据长度(SF_DL)
3)第一帧。第一帧(FF)通过协议控制信息(PCI)的高四位设置为0001b来识别。第一帧数据长度(FF_DL)按表2-23所列内容计算。
表2-23 第一帧数据长度(FF_DL)
4)连续帧。连续帧(CF)通过协议控制信息(PCI)的高四位设置为0010b来识别。协议控制信息的低四位表示序列号(SN),要求如下:
①第一帧的SN为0,不体现在第一帧的PCI中。
②第一个连续帧的SN为1。
③每增加一个连续帧,SN增加1。
④在连续帧之间发送的流控制帧不影响SN的计算。
⑤SN增加到15后,下一个连续帧的SN从0开始计算。
SN的定义及值域分别见表2-24和表2-25。
表2-24 序列号(SN)的定义
表2-25 序列号(SN)的值域
5)流控制帧。在第一帧或连续帧块的最后一个连续帧传输之后,如果发送方后面还会通过连续帧传输数据,那么接收方要传输协议控制信息(PCI)高四位设置为0011b的流控制帧报文。流控制帧的协议控制信息中的流状态(FS)应置为“继续发送”,见表2-26。接收方用流控制帧告知发送方在两个流控制帧间可以发送多少条连续帧报文(块大小BS,见表2-27),以及连续帧以多大速率发送(最小分隔时间STmin,见表2-28)。
表2-26 流状态(FS)值的定义
表2-27 块大小(BS)值的定义
表2-28 最小分隔时间(STmin)值的定义
针对流控制帧参数BS、STmin的需求值见表2-29。
表2-29 流控制帧参数需求值
(4)网络层时间参数 诊断网络层时间参数定义见表2-30。
表2-30 诊断网络层时间参数
(5)诊断通信条件 出现下列任一情况时,诊断仪与整车ECU间应能维持诊断通信:
1)点火钥匙状态为“ON”。
2)点火钥匙状态为“OFF”或“ACC”,但网络具备稳定可靠的通信能力。
3.应用层和会话层协议
(1)概述 对于增强型诊断而言,应用层和会话层的时间参数,在以下通信情况下需要被区分:
1)物理通信(单播)。
①默认会话模式。
②非默认会话模式(需要处理进行维持的会话)。
2)功能通信(广播)。
①默认会话模式。
②非默认会话模式(需要处理进行维持的会话)。
对于发送方和接收方的诊断应用层协议和网络层协议,诊断仪和电子控制单元均定义了特定通信过程中的时间参数。图2-55所示为网络层服务执行示意图,为了简化车辆CAN总线中诊断报文的传输过程,图中并未考虑特定车辆的网络拓扑,假设在诊断仪和ECU之间没有网关设备。N_USData.request用来请求数据的传输,若必要,网络层可将数据进行分段处理;N_USData.confirm用来表示应用层进行确认,即执行服务请求(成功或未成功);N_USData.indication/N_USData_FF.indication用来向应用层提供已接收数据(单帧或多帧报文)或标记分段报文的开始。
图2-55 网络层服务执行示意图
(2)应用层 诊断应用层时间参数的定义见表2-31。
表2-31 应用层时间参数
(3)会话层 ECU在不同会话模式下,可支持不同的诊断服务、诊断功能和定时参数。诊断仪通过使用诊断会话控制服务来启动一个或者一系列ECU的各种会话模式。当非默认会话模式启动时,需要按照表2-32所列会话层定时参数进行会话模式的处理。
表2-32 会话层定时参数
诊断仪的会话层时间参数启动和停止的条件参见ISO 15765-3。ECU会话层时间参数的启动和停止条件见表2-33。
表2-33 ECU会话层时间参数的启动和停止条件
注:对于诊断仪而言,其必须能够区分周期传输的功能寻址的诊断仪在线[3E 00/80 hex]请求报文和连续传输的物理寻址的诊断仪在线[3E 00/80 hex]请求报文,此报文只在其他诊断请求报文均不存在时发送。对于ECU而言没有必要去区分这种诊断仪在线[3E 00/80 hex]请求报文。本表还进一步说明了S3ECU定时器处理是基于原始的网络层服务,即当ECU收到不支持的诊断请求报文时,S3ECU定时器也会重启。
4.电子控制单元响应规则
(1)带子功能参数诊断请求报文的响应
1)物理寻址诊断请求报文。如果物理寻址诊断请求被接收,则表示请求被单播发送给了一个ECU,带子功能参数的物理寻址诊断请求报文和ECU响应行为见表2-34。
表2-34 带子功能参数的物理寻址诊断请求报文和ECU响应行为
注:对于第5种情况,如果否定响应码为78hex(请求正确接收-响应等待)的否定响应应用,最终的响应应给出,不受“禁止肯定响应报文指示位”的值影响。
2)功能寻址诊断请求报文。如果功能寻址诊断请求被接收,则表示请求被广播发送给了所有ECU,带子功能参数的功能寻址诊断请求报文和ECU响应行为见表2-35。
(2)不带子功能参数诊断请求报文的响应
1)物理寻址诊断请求报文。不带子功能参数的物理寻址诊断请求报文和ECU响应行为见表2-36。
表2-35 带子功能参数的功能寻址诊断请求报文和ECU响应行为
注:1.对于第6种情况,如果否定响应码为78hex(请求正确接收-响应等待)的否定响应应用,最终的响应应给出,不受“禁止肯定响应报文指示位”的值影响。
2.否定响应码为31hex(请求超出范围)、11hex(服务不支持)和12hex(子功能不支持)的否定响应在功能寻址下总是禁止的,故在情况3、4、5、8、9、10时ECU不发送响应。
表2-36 不带子功能参数的物理寻址诊断请求报文和ECU响应行为
2)功能寻址诊断请求报文。不带子功能参数的功能寻址诊断请求报文和ECU响应行为见表2-37。
表2-37 不带子功能参数的功能寻址诊断请求报文和ECU响应行为
注:否定响应码为31hex(请求超出范围)和11hex(服务不支持)的否定响应在功能寻址下总是禁止的,故在情况4、5时ECU不发送响应。
(3)请求正确接收-响应等待 如果回复带有否定响应码11hex(服务不支持)、12hex(子功能不支持)或31hex(请求超出范围)的否定响应报文,ECU不应该在之前回复带有否定响应码78hex(请求正确接收-响应等待)的否定响应。
ECU在回复否定响应码78hex(请求正确接收-响应等待)后,需要在给定的时间内发送最终的否定响应或肯定响应报文。