1:功能寻址,服务器应答与NRC回复策略
详细策略上,又分为服务有子功能,和不存在子功能。
1.1功能寻址,存在子功能
存在子功能的情况下,又分为supress postive response (即子功能字节的bit7)位=1,和=0两种情况
iso 14229-1也给我们列出了表格
1.1.1先讲功能寻址,supress postive response =0的情况!
看图之前,对图中描述作出必要的解释
*1)Yes代表服务器经过检查,支持此服务/子功能/和DID
*2)No代表服务器经过检查,不支持此此服务/子功能/和DID
*3)服务/子功能/和DID之间存在线性依赖关系,即只有支持某一项服务,才能支持其子服务,然后才能支持DID或其他参数。
1和2的情况是,抑制肯定响应位 =0 ,服务和子功能均支持。没有错误就发送肯定响应,有错误就发送相对应的NRC,没毛病!
3:抑制肯定响应位 =0
3:当DID或RID或PID不支持,不返回报文,如 0x85 服务,0x628(功能寻址IP) 04 85 01 77 xx xx xx。
这个77是不符合要求的,故服务器不会产生应答。
4:表示子功能都,不支持,服务器不回答。
5:服务支持,子功能不支持,服务器不回答。
总结:从服务器的角度来说,当服务器检查出客户端发出的请求信息,存在以下错误时(假设长度,顺序,条件,解锁等信息均正确)
1:0x11与0x7F,服务不支持时,不予回复
2:0x12与0x7E,子功能不支持时,不予回复
3:0x31,参数(如DID)不支持时,不予回复
1.1.2再看:功能寻址下,supress postive response =1的情况!
6和7表示,服务,子功能 ,DID/RID/PID都支持的情况下。服务器正响应不回复,但是当请求报文出现故障时(前提条件:服务/子功能/和DID均没有错误)如长度出现错误时,负相应报文肯定是要被发送的。
多说一句,当发送者将supress postive response =1时,客户端就默认,不需要接收返回报文,就默认为发送成功了。
总结:从服务器的角度来说,当服务器检查出客户端发出的请求信息,存在以下错误时(假设长度,顺序,条件,解锁等信息均正确)
1:0x11与0x7F,服务不支持时,不予回复,与肯定抑制响应位无关。
2:0x12与0x7E,子功能不支持时,不予回复,与肯定抑制响应位无关。
3:0x31,参数(如DID)不支持时,不予回复,与肯定抑制响应位无关。
4:当请求报文没有错误时,服务器不应答,与肯定抑制响应位有关。
2:物理寻址,服务器应答与NRC回复策略
物理寻址,本质很简单,对检查出的0x11与0x7F,0x12与0x7E,0x31出的错误都要作出Negative response 的否定应答。无论是肯定抑制响应位=1或=0。
对于没有错误的请求报文,肯定抑制响应位=1时,服务器不予应答。肯定抑制响应位=0时,服务器正响应。