ISO 14229-1 0X19 DTC

开发工作还是离不开UDS 诊断协议,还是需要好好理解几个重要的服务,毕竟在工作中的使用频率还是很高的

0x19: readDTC information

SID: 19
用来读取故障码的信息;
DTC ID =DTC mask Record一般为3 byte; DTC highbyte,DTC middle byte,DTC low byte
DTC 的状态掩码:1byte,

bit description
0 testfailed:执行的结果; 0 表示没有failledm , 1 表示检测故障的条件成立
1 testfailedinthisoperationcycle:表示在当前周期内的检测结果; 或者是在当前周期调用clear 尚未发现fail. 同样0 表示当前操作循环尚未fail,1 表示当前操作循环至少fail一次
2 pendingDTC:在当前或者最后完成的循环内检测到了failed; 和bit 1 的条件一样; 只是 在cycle 结束后才会清0, 而bit1 则在周期开始就会清0;
3 confirmedDTC:表示故障存在很长的时间,需要警示或者存储在NVM中
4 testnotcompletesincelastclear:表示这个上次调用clear以来是否完成了一个DTC 的检测
5 testfailedinsincelastclear:表示是否在上次调用clear后,检测的结果为fail
6 testnotcompletedthisoperationcycle:指测试是否在当前操作周期内完成 或者在上次调用clear 后的周期内完成
7 warningindicationrequested:指是否有对应的故障指示灯或者文字信息

状态位表示了DTC 的实际状态; 可以理解在判断条件满足的情况下,如果检测到故障的条件成立,则会置位对应的状态为; 在满足失效计数后,实际的故障就会保存在NVM中, 并通过19 服务读取出来。

从ISO 14229 附录D 的图 D.9 来理解 一个operation cycle可以执行多次的test, 之言检测到到test的结果,对应的状态救应置位; 也就是说 一个oepration cylce>=test cycle.

19 服务下又包含不同的subfunction.

subfunction description
01 returnNumberofDTCbystatusmask: 通过状态掩码返回匹配的DTC的个数
02 reportDTCbystatusmask:通过定义的掩码查找匹配的故障
03 reportDTCsnapshotidentification:返回冻结帧ID
04 reportDTCsnapshotrecordbyDTCnumber::请求冻结帧信息
06 reprotDTCextRecordDTCNumber:读取扩展信息
0A reprotsupportDTC:支持的DTC 状态信息

对于06服务 extenddata 是一个 1 byte 的数,代表了定义的功能; 比如 0x10 是读取 fault detection counter… 这些是在开发过程中定义的.
后面在单独说下关于DTC 一些limits 的limits, 包括对于Autosar 中的DEM FIM…

和其他服务一样 ,0x19 服务的正响应是SID+0x40; 负响应是7F。

如上是在开发过程需要的相对基础的一些知识,实际开发过程会对实际的参数都会有定义,这个只能根据不同的项目去解读,但是基本上是大通的。

你可能感兴趣的:(笔记,其他)