当securityDataRecord超出规定的范围时,则Server会回复“7F 27 31”; 当发送完request Seed的子服务之后但是执行send key步骤时,发送的Key与Server计算出的Key不一致,此时Server会回复"7F 27 35"; 当尝试一定次数的Send Key,Server始终无法解锁时,Server则会回复“7F 27 36”; 一般而言,如果超过了Server规定的尝试...
当尝试一定次数的Send Key,Server始终无法解锁时,Server则会回复“7F 27 36”; 一般而言,如果超过了Server规定的尝试次数,那么就会开启Delay Timer,如果在延时的过程中发送request Seed的请求,那么Server则会回复'7F 27 37'; 常见Bug大揭秘 对于从事过UDS开发的小伙伴可能会发现,其实针对每个服务的Bug都是有迹可...
其中sub-function占据7位: sub-function :0x00-0x7F spr=1 该字节范围 0x00-0xFF spr=0 该字节范围 0x00-0x7F 注:spr存在的目的是告诉ECU针对某个服务请求是否需要发送正响应数据,用于减少ECU发送不必要的响应,节约系统资源: spr=1, 抑制正响应,即ECU不给出正响应; spr=0, 需要ECU给出正响应,如果某个...
godKnow 8 03 7F 31 33 AA AA AA AA //刷写的控制,请求CANID:KillBug,CAN报文的字节长度:8,UDS服务有效字节数:04,UDS服务:31,子服务:01,DID:0203 ,其中 子服务:01=开始刷写,使能刷写,DID:0203=检测刷写条件是否满足, Fixdall 8 02 85 02 00 00 00 00 00 godKnow 8 02 C5 02 AA AA AA A...
18:看一下10服务的请求与响应格式,10服务的比较简单,就是SID加上子功能,肯定响应在SID上加40变成50就可以,否定响应7F加上SID和否定响应码NRC。常见的10服务的NRC主要是12,代表子功能不支持,13代表报文长度错误,22代表该服务的前置条件不满足,如要求车速小于5km/h,78代表ECU正忙,会启用一个定时器,时间到了再...
当securityDataRecord超出规定的范围时,则Server会回复“7F 27 31”; 当发送完request Seed的子服务之后但是执行send key步骤时,发送的Key与Server计算出的Key不一致,此时Server会回复“7F 27 35”; 当尝试一定次数的Send Key,Server始终无法解锁时,Server则会回复“7F 27 36”; ...
如果前面的36服务没有执行完成,以我前面举的例子来说,比如这个数据块有50个字节,但是tester只发了两次36服务传了36个字节,那么这次传输对于ECU来说是失败的,所以ECU应该给出NRC 0x7F 37 24,表示诊断序列执行有错误。 关于UDS所定义的诊断服务到这里就写完了。接下来我会写两篇文章补充一下UDS系列,分别介绍一下...
27服务正响应测试 请求当前会话模式下服务或子功能函数不支持的27服务,期望ECU返回NRC7E或NRC7F 请求子功能函数不支持的27服务,期望ECU返回NRC12 请求格式错误的27服务,期望ECU返回NRC13 请求顺序错误的27服务,期望ECU返回NRC24 发送无效的key,期望ECU返回NRC24 测试NRC35,36,37的机制 无效状态下请求27服务,期望EC...
负响应:7F+SID+NRC; ->SID:0x10、0x11、0x27、0x28、0x3E、0x83、0x84、0x85、0x86、、、 ->SF:主要应用在传输的数据比较大的服务中,例如更新程序,数据的下载。 网络层分为单帧和多帧,单帧(SF)就是一帧can报文8字节内就可以把数据处理完毕。多帧就是一帧can报文8字节内无法发送完毕,需分为首帧(...
否定相应:7F SID NRC(否定相应码) 否定相应格式一定,SID对应请求的SID,NRC为Negative Response Code,即会有一些类似于一个指令格式或数据是否正确的判断,在发送不是一个正常指令时,ECU就会给你这个NRC,相当于一个提示,可以通过不同的NRC判断指令的错误原因。比如常见的7E表示SF在此会话不支持(在编程会话发10 03即...