1、0x85服务(控制诊断故障代码设置服务)
Service description:
0x85服务(ControlDTCSetting,控制诊断故障代码设置服务)用于停止或重新开始诊断故障代码(DTC)的状态位更新,该服务的请求报文可以用来停止单个服务器或者一组服务器中诊断故障代码状态位的更新。ControlDTCSetting请求报文可用于停止更新单个服务器或一组服务器中的DTC状态位。如果被寻址的服务器不能停止DTC状态位更新,那么它应该否定应答,并表明其原因。
当0x85(控制诊断故障代码设置服务)服务中子函数值DTCSettingType = off时,服务器将暂停对DTC状态位的任何更新(即冻结当前状态位值),直到该更新状态位的功能再次启用。一旦ControlDTCSetting子函数值DTCSettingType = on 或当前会话不支持ControlDTCSetting服务(例如,会话层超时回到默认会话(defaultSession), ECU复位等),DTC状态位信息将继续更新。如果在当前会话中支持该服务,并且所请求的子功能设置为“开”或“关”,服务器应发送肯定应答。
如果客户端发送cleardiagnostic information (0x14)服务,ControlDTCSetting服务不应该禁止重置DTC状态位。
诊断故障代码状态位记录了一些与数字标识符相关的信息,这些数字标识符代表了特定的故障状态。ControlDTCSetting服务只能打开/关闭诊断故障代码状态位的更新,不能关闭故障监控,也不能禁止故障诊断软件策略。将FailSoft 和 FailSafe策略直接链接和耦合到诊断故障码状态位,是不推荐的。
2、请求报文格式
请求报文的格式定义:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | ControlDTCSetting Request SID | M | 0x85 |
#2 | sub-function = [ DTCSettingType ] | M | 0x00 - 0xFF |
#3 . . #n | DTCSettingControlOptionRecord [] = [ Parameter#1 . . Parameter#m ] | U | 0x00 – 0xFF . . 0x00 – 0xFF |
请求报文中子函数参数定义说明:
请求报文中子函数参数(DTCSettingType)表明了服务端是否应该停止还是开启诊断故障代码状态位的更新(suppressPosRspMsgIndicationBit (bit 7) 在下表中未出现):
Bit 6-0 | 描述 | 约定 |
---|---|---|
0x00 | ISOSAEReserved 该值由ISO文档保留 | M |
0x01 | on 根据正常运行工况,重启更新诊断故障代码的状态位 | M |
0x02 | off 停止更新诊断故障代码的状态位 | M |
0x03 - 0x3F | ISOSAEReserved 该值由ISO文档保留 | M |
0x40 - 0x5F | vehicleManufacturerSpecific 车辆制造商保留 | M |
0x60 - 0x7E | systemSupplierSpecific 供应商保留 | M |
0x7F | ISOSAEReserved 该值由ISO文档保留 | M |
请求消息中数据参数定义说明:
该服务在请求报文中的数据参数定义如下表所示:
定义 |
---|
DTCSettingControlOptionRecord 当控制DTC状态位的更新时,该参数记录是用户可选的,用于向服务器传输数据(例如,数据可以包含要打开或关闭的DTC列表)。 |
3、肯定应答报文
肯定应答报文格式定义如下:
字节序号 | 参数名称 | 约定 | 字节值 |
---|---|---|---|
#1 | ControlDTCSetting Response SID | M | 0xC5 |
#2 | DTCSettingType | M | 0x00 - 0x7F |
肯定应答报文数据参数定义:
Definition |
---|
DTCSettingType 请求报文中子函数参数值中的bit 6 - 0。 |
4、支持的否定应答码(NRC_)
本服务应执行以下否定响应代码。下表记录了每个应答代码发生的情况,如果服务器在错误场景使用了该服务,则应使用如下列出的否定响应。
NRC | 描述 |
---|---|
0x12 | sub-functionNotSupported 子函数参数不支持时,会发送该NRC |
0x13 | incorrectMessageLengthOrInvalidFormat 请求报文长度不正确时,会发送该NRC |
0x22 | conditionsNotCorrect 当服务器处于关键的正常模式活动时,并且因此无法运行请求诊断故障码控制功能时,会发送该NRC |
0x31 | requestOutOfRange 在DTCSettingControlOptionRecord参数中检测到错误时,会发送该NRC |
5、0x85服务(控制诊断故障码设置服务)案例说明
例1:ControlDTCSetting (DTCSettingType = off)
该案例中没有使用服务功能将附加数据传输到服务端,通过设置subfunction parameter中bit 7为FALSE,要求服务端能够给出应答;
控制诊断故障码设置服务的请求报文使用案例如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | ControlDTCSetting Request SID | 0x85 |
#2 | DTCSettingType = off, suppressPosRspMsgIndicationBit = FALSE | 0x02 |
控制诊断故障码设置服务的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | ControlDTCSetting Request SID | 0xC5 |
#2 | DTCSettingType = off | 0x02 |
**例2:ControlDTCSetting ( DTCSettingType = on)
**
该案例中没有使用服务功能将附加数据传输到服务端,通过设置subfunction parameter中bit 7为FALSE,要求服务端能够给出应答;
控制诊断故障码设置服务的请求报文使用案例如下,由客户端发向服务端(ECU):
字节顺序 | Description | 字节值 |
---|---|---|
#1 | ControlDTCSetting Request SID | 0x85 |
#2 | DTCSettingType = on, suppressPosRspMsgIndicationBit = FALSE | 0x01 |
控制诊断故障码设置服务的肯定应答报文见下表,由服务端(ECU)发往客户端:
字节顺序 | Description | 字节值 |
---|---|---|
#1 | ControlDTCSetting Request SID | 0xC5 |
#2 | DTCSettingType = on | 0x01 |