也就是说,如果请求的是功能寻址,且NRC是上面5个中的任意一个,假设是NRC 0x7F,但是服务端先回复了一个NRC 0x78,那么服务端最后就必须回复NRC 0x7F了。 这里再讲一个NRC 0x78的,原文如下: 当NRC 0x78被使用了,服务端最终都要给一个响应(正响应或否定响应),和SPRMIB的值是否置位无关,和是否是功能寻址,且...
否定响应码NRC 常用的否定响应码 最后一个78,并不代表请求失败,只是说明ECU现在正忙,无法处理此诊断请求,待ECU空闲时,就会处理此请求 TesterPresent(0x3E) 客户端向服务器指示客户端仍然在线 支持子功能 比如说发10 03让ECU切到扩展模式,正常过几秒后ECU就会切回默认会话,而你需要让ECU一直保持在扩展模式,你就可...
所以ECU会先给出NRC为0x78的否定响应,用以通知Tester诊断请求已经正确接收了,正在处理,稍后给出响应。当ECU成功执行了切换编程会话(Programming Session)的操作后,由于之前给出了NRC为0x78的否定响应,用以通知Tester诊断请求已经被执行成功了 当我们把请求发送给ECU后,类似于延时操作,然后会给出接受成功正在处理的信后...
NRC是否定响应码,可以根据返回的NRC判断是什么原因导致的否定响应。下图是常见的一些NRC码,需要看全的NRC码,可以去查看标准原文。 举两个例子,比如否定响应码0x11表示的是ECU不支持诊断方请求的服务,诊断方想读取某个数据,但是ECU就没有这个数据;0x78表示请求已经收到,但可能ECU正忙,无法回复请求。其余的NRC码就不...
0x78:已收到请求,但会晚点响应。 0x7E:当前会话下,该子功能不支持。 0x7F:当前会话下该服务不支持。 0x92:电压过高。 0x93:电压过低。 2️⃣ NRC码的优先级: 诊断服务的NRC优先级是指在不同情况下,诊断服务返回的否定响应代码(NRC)的优先级。在实际使用中,NRC的优先级对于诊断服务的正确执行非常重要。
否定响应(7F + SID + NRC): 常见的否定响应码(其中78比较特殊,ECU短时间内无法回复): 3. 请求与响应的寻址 诊断仪是如何把这些诊断报文发送给指定的ECU那?ECU如何将诊断响应的报文返回给诊断仪那? 发送诊断报文时指明寻址信息(CAN报文的ID): 请求和响应的消息就是CAN报文的ID: ...
否定响应(Negative Response)格式为:0X7F+SID+NRC 例如: 请求0X10服务,否定响应第1个字节为固定的0X7F,第2个字节为0X10,第3个字节为NRC NRC是否定响应码,可以根据返回的NRC判断是什么原因导致的否定响应 下面是实际的canoe诊断肯定响应和否定响应的截图:...
b)P2*Client:诊断工具接收到 NRC 0x78 之后继续等待 ECU 响应的时间间隔 c)P2Server_max:ECU 在收到请求和给出响应之间的这个时间间隔,它描述了ECU 的反应速度,通常最大值为50ms d)P2* Server_max:ECU 发送 NRC 0x78 之后继续发送 下帧诊断响应报文的时间间隔 ...
P2* Client:诊断工具接收到 NRC 0x78 之后继续等待 ECU 响应的时间间隔。 P2Server_max :ECU 在收到请求和给出响应之间的这个时间间隔,它描述了ECU 的反应速度,通常最大值为50ms。 P2* Server_max:ECU 发送 NRC 0x78 之后继续发送 下帧诊断响应报文的时间间隔。
当Tester给ECU发送请求过后,ECU需要在P2Sever时间内给出相应的响应,如果ECU当前正在处理别的任务,处理别的事情,而不能在P2Sever的时间内给出相应的响应,那么它先在P2Sever时间内给出一个NRC为78的Pending报文,告诉Tester“ECU正在忙”,之后会在P2Sever*的时间内给出其它的响应报文,如果P2Sever*的时间内还是不能给...