DTC控制服务的主要作用是控制DTC的状态更新。
一、响应规则
DTC=diagnostic trouble code,DTC的状态是故障信息中的一个字节,用来表示故障当前的状态是正在发生还是仅仅发生过等信息,具体含义在后面19服务章节会详细说明。
当服务端(ECU)接收到85服务后,如果控制信息是off,则服务端应该立即停止DTC的状态更新。即从此刻起,DTC的状态信息保持不变,无论是发生了新的故障,还是已有的故障有了新的状态,服务端的DTC数量、状态信息都不会更新。如果控制信息是on,那么如果先前是off,就立即恢复到正常的状态,如果先前是on,保持状态不变。
无论是on还是off,服务端在正确处理请求之后都要给出肯定响应,如果无法正确处理,需要给出否定响应并明确响应失败的NRC。
注意本服务是要求在非默认会话下支持的服务,所以如果是默认会话下是无法执行请求的,只能回复否定响应NRC7F。
本服务控制的DTC状态的更新,并不影响通过ClearDTCInformation(14)服务请求清除故障信息。
二、应用数据格式
1.请求报文
DTC控制服务的请求报文格式非常简单,一般只会用到SID和子功能DTCSettingType两个字节,后面的DTCSettingControlOptionRecord参数并不常用,ISO里列举的例子指出它可以用来表示被禁用的DTC有哪些,具体目前未遇到实际应用。
2.响应报文
DTC控制服务的响应报文也很简单,仅有两个字节,一个是响应的SID,另一个字节是子功能DTCSettingType,注意这里响应的子功能和请求的是一致的。
3.子功能
DTC控制服务的子功能叫DTCSettingType,只有两个,其余的都是保留值或可自定义的值,下表列出了常用的两个子功能和描述。
DTCSettingType | 描述 |
---|---|
01 | on 服务端收到请求后恢复DTC的状态更新 |
02 | off 服务端收到请求后停止DTC的状态更新 |
有关NRC和报文示例比较简单,可直接参照ISO标准。