诊断协议那些事儿
诊断协议那些事儿专栏系列文章,本文介绍诊断和通讯管理功能单元下的85服务ControlDTCSetting,该服务的目的是控制DTC设置。
文章目录
- 诊断协议那些事儿
- 一、85服务-ControlDTCSetting
- 二、请求格式
- DTCSettingType
- 三、肯定响应格式
- 四、否定响应格式
- 1.支持的否定响应码
- 五、消息流示例
- 控制禁止DTC设置
- 六、实测报文
- 总结
一、85服务-ControlDTCSetting
客户端应使用ControlDTCSeting服务来停止或恢复服务器中DTC状态位的更新。在ECU中,每个DTC都有一个状态,使用一个byte数据定义(有关位的定义,后续会在statusofDTC文章介绍),DTC状态位在对ReadDTCInformation 的某些Sub-Function的肯定响应的statusOfDTC参数中报告。
正常情况下,ECU的故障检测功能模块会根据故障检测策略去更新每个DTC的状态,但存在某些特殊场景,比如bootloader升级过程中,不需要ECU更新DTC状态,此时可以使用85服务停止DTC的状态更新。
ControlDTCSetting请求消息可用于停止更新单个服务器或一组服务器中的 DTC 状态位。如果被寻址的服务器不能停止DTC 状态位的更新,它应以ControlDTCSetting否定响应消息进行响应,指示拒绝的原因。
当服务器接受Sub-Function值为DTCSettingType=off的ControlDTCSetting请求时,服务器应暂停对DTC状态位(即,冻结当前值)的任何更新,直到再次启用该功能。一旦执行ControlDTCSettimg请求且Sub-Function设置为“on”或转换到不支持ControlDTCSetting的会话时,DTC状态位信息的更新将继续(例如,会话层超时到defaultSession、ECU 重置等)。如果在请求的Sub-Function设置为“on”或“off”的活动会话中支持该服务,即使请求的DTC设置状态已经处于激活状态,服务器仍应发送肯定响应。
如果客户端发送ClearDiagnosticlnformation(0x14)服务,则ControlDTCSetting不应禁止重置服务器的DTC状态位。ControlDTCSetting仅打开/关闭 DTC 状态位更新。ControlDTCSetting 服务不会导致故障监控被关闭,也不会导致失败策略被禁用。
在停止DTC状态更新期间,19服务读取故障码信息功能不受影响,只是不会被更新状态。
二、请求格式
DTCSettingControlOptionRecord是用户可选的参数,用来实现一些附加功能,如指定关闭某个DTC的状态信息。
DTCSettingType
85服务的子功能参数定义,一般仅使用0x01-ON和0x02-OFF。
三、肯定响应格式
四、否定响应格式
1.支持的否定响应码
NRC | 描述 | 助记符 |
---|---|---|
0x12 | 不支持请求服务的子功能 | SFNS |
0x13 | 请求报文的数据长度(或者格式)不符合标准 | IMLOIF |
0x22 | 条件不满足 | CNC |
0x31 | 请求超过范围(如果DTCSettingControlOptionRecord超出范围) | ROOR |
五、消息流示例
控制禁止DTC设置
六、实测报文
总结
以上就是今天要讲的内容,欢迎各位评论,提出宝贵意见,小编也会持续更新,以提供更好的作品。