诊断协议那些事儿
诊断协议那些事儿专栏系列文章,19服务作为UDS中子功能最多的服务,一共有28种子功能,本文将介绍常用的19 02服务:根据状态掩码读取DTC列表。
关联文章:
19服务List
19 01-通过状态掩码读取DTC数目
$19服务:DTCStatusMask和statusofDTC bit 定义
UDS服务列表
85服务-ControlDTCSetting
14服务-ClearDiagnosticlnformation
文章目录
- 诊断协议那些事儿
- 一、reportDTCByStatusMask-19 02
- 二、请求格式
- 三、肯定响应格式
- 四、否定响应格式
- 1.支持的否定响应码
- 五、消息流示例
- 通过DTC状态掩码读取DTC(有匹配的DTC)
- 通过DTC状态掩码读取DTC(没有匹配的DTC)
- 总结
一、reportDTCByStatusMask-19 02
客户端可以通过发送一个带有设置为reportDTCByStatusMask的Sub-Function字节的请求来检索满足客户端定义的状态掩码的DTC列表。该Sub-Function允许客户端请求服务器报告所有“testFailed”或“confirmed”等的DTC。
术语 | 解释 |
---|---|
DTC | 诊断故障码 |
DTCStatusMask | DTC状态掩码-只出现在请求中 |
DTCStatusAvailabilityMask | DTC状态可用掩码-只出现在肯定响应中 |
服务器应在客户端请求中指定的掩码和与服务器支持的每个DTC相关联的实际状态之间执行按位逻辑AND运算。除了DTCStatusAvailabilityMask之外,服务器还应返回所有AND运算结果非零的DTC(即(statusOfDTC&DTCStatusMask)!=0)。如果客户端指定的状态掩码包含服务器不支持的位,则服务器应仅使用它支持的位来处理DTC信息。如果服务器中没有DTC与客户端请求中指定的掩码标准匹配,则在肯定响应消息中的DTCStatusAvailabilityMask字节之后不应提供DTC或状态信息。
二、请求格式
三、肯定响应格式
DTCStatusAvailabilityMask:DTC状态可用性掩码,
在ISO 14229-1中定义:“A byte whose bits are defined the same as statusOfDTC and represents the status bits that are supported by the server.Bits that are not supported by the server shall be set to ‘0’.Each supported bit(indicated by a value of ‘1’)shall be implemented for every DTC supported by the server.”
意思:该参数只有一个字节,其位定义与statusOfDTC相同,表示服务支持的状态位(一个服务器功能确定后,这个参数将是一个定值)。服务器不支持的位应设置为“0”,支持的位设置为“1”。
四、否定响应格式
1.支持的否定响应码
NRC | 描述 | 助记符 |
---|---|---|
0x12 | 子功能参数不受支持 | SFNS |
0x13 | 请求报文的数据长度(或者格式)不符合标准 | IMLOIF |
0x31 | ①客户端规定了一个不被服务器识别的DTCMaskRecord;②客户端规定了一个无效DTCSnapshotRecordNumber/DTCExtDataRecordNumber;③客户端规定了一个不被服务器识别的FunctionalGroupIdentifier;④服务器无法识别MemorySelection | ROOR |
五、消息流示例
通过DTC状态掩码读取DTC(有匹配的DTC)
※设定本服务器的DTCStatusAvailabilityMask为0x7F(请求警告指示灯不适用)
假设服务器共支持三个DTC(0x080511、0x0A9B17、0x25221F)
i.DTC P0805-11"离合器位置传感器对比短路0x080511",statusOfDTC为0x2F(0010 1111b)
ii.DTC P0A9B-17"混合电池温度传感器电压超出阈值0x0A9B17",statusOfDTC为0x24(0010 0100b)
iii.DTC P2522-1F"A/C Request “B” - circuit intermittent 0x25221F",statusOfDTC为0x00(0000 0000b)
请求消息:
由于状态0x00与DTCStatusMask不匹配,故只返回0x080511、0x0A9B17。
响应消息:
通过DTC状态掩码读取DTC(没有匹配的DTC)
总结
以上就是今天要讲的内容,欢迎各位评论,提出宝贵意见,小编也会持续更新,以提供更好的作品。