文章目录
- 前言
- 一、DTC控制服务介绍
- 二、数据格式
- 2.1 请求报文
- 2.2 子功能
- 2.3响应格式
- 三、举例
- 总结
前言
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS诊断故障码控制0X85服务介绍,希望能对你有所帮助
一、DTC控制服务介绍
DTC全称:Diagnostic Trouble Code 诊断故障码,DTC控制服务,主要是客户端用来停止或恢复服务端中DTC状态的更新
当服务端收到85服务后:
如果控制信息是on,那么如果先前是off,就立即恢复到正常的状态,如果先前是on,保持状态不变。
如果控制信息是off,则服务端应该立即停止DTC的状态更新。即从此刻起,DTC的状态信息保持不变。无论是发生了新的故障,还是当前的故障有了新的状态,服务端的DTC数量、状态信息都不会更新。
无论是on还是off,服务端在正确处理请求之后都要给出肯定响应,如果无法正确处理,需要给出否定响应,并回复失败的NRC。
注意DTC控制服务是要求在非默认会话下支持的服务,如果是默认会话下此服务无法执行请求的,回复否定应答,当前会话不支持。
注意:本服务控制的DTC状态的更新,并不影响通过ClearDTCInformation(14)服务请求清除故障信息。
二、数据格式
2.1 请求报文
DTC控制服务的请求报文的数据格式也很简单,[SID] + [sub-function]
一般只用到SID和子功能DTCSettingType两个字节,后面的DTCSettingControlOptionRecord 参数不怎么用,目前没用到,暂不介绍
2.2 子功能
子功能为DTCSettingType,常用的就两个,0X01和0X02,其它的要不是保留,要不是汽车制造商或供应商自定义的。
0X01:表示DTC设置类型为on,服务端收到请求后恢复DTC状态的更新
0X02:表示DTC设置类型为off,服务端收到请求后停止DTC状态的更新
2.3响应格式
响应格式也简单,[SID + 0X40] + [sub-function],子功能和请求时保持一样
否定响应格式相信看了前面的介绍都很熟了吧,此处不再啰嗦
这里列一下支持的NRC:
三、举例
DTC设置类型为off,一般发起DTC控制服务请求,用的是功能寻址,让所有ECU都响应请求
DTC设置类型为on
总结
今天要分享的内容就到这里了,欢迎一起交流,感谢大家。