否定响应格式是一个固定的格式“7F+请求报文里的SID+一个字节的NRC” 看两个名词,一个叫做Subfunction,一个叫做ID,UDS服务支持Subfunction的请求和响应格式,“请求”为“SID+一个字节Subfunction+具体的数据”,肯定响应为“SID+40+Subfunction+具体的数据”,而有的UDS服务里面是不支持Subfunction,是支持DID的,DID...
响应:肯定响应包含服务 ID + 0x40 + 子功能(或参数);否定响应包含 0x7f + 服务 ID + 否定响应码。 31 服务(例程控制) 用途:执行指定的步骤序列并获取相关结果。 请求报文:包含服务 ID、子功能(如开始例程、停止例程、请求例程结果)、例程标识符和可选的例程控制选项记录。 响应:肯定响应包含服务 ID + 0x4...
Receive:7F 10 12(7F即指代错误响应,10为SID,12是NRC,查协议可知其指代sub-function not supported 这个错误) 常用的NRC 11:ServiceNotSupported/服务不支持,诊断仪发送的请求消息中服务标识符无法识别或不支持; 12:SubFunctionNotSupported/不支持子服务,诊断仪发送的请求消息中子服务无法识别或不支持; 13:Incorrect...
<0x7F> +<SID> +<NRC> //NRC:Negative Response Code(否定响应码) 只要是Negative Response,第一字节就一定是0x7F,第二字节照抄原来的SID,第三个字节是错误响应码,指示具体错误响应的原因,这个NRC可以在协议中查到,并且不同的服务所支持的NRC也有规定。 拿session control 这个service来举例: Send:10 05(现在...
负响应的格式是:“7F+SID+NRC”。 继续来整个例子(这个也是网上抄来的,我解读一下),第一行和第三行分别是10服务的01子服务和02子服务,对于01子服务,回复的就是正响应,其中00 32 00 C8这四个字节的内容是10服务的回话参数,这个在后面介绍10服务的时候再详细介绍。对于10服务的02子服务,回复的就是负响应,...
当NRC 0x78被使用了,服务端最终都要给一个响应(正响应或否定响应),和SPRMIB的值是否置位无关,和是否是功能寻址,且NRC为0x11,0x7F,0x12,0x7E,0x31无关。 简单来说就是: 1)当服务端回复了NRC 0x78,即使SPRMIB是置位的也要回复正响应; 2)当服务端回复了NRC 0x78,即使发送的请求是功能寻址,且NRC为0x...
ECU:03 7F 27 7800 00 00 00 若为否定响应,7F+27+NRC ECU:0267 0600 00 00 00 00 若为肯定响应,通过安全校验 细说下安全验证算法。安全验证算法包括1个核心,3个主体。 第一个主体通常和ECU有关。比如我们先用22服务读取ECU的SN,取其中4个字节,作为“调味料”参与,显然这个“调味料”对于这个ECU来说是...
ECU:7F1033【7F表示否定响应,10表示否定的SID,33是NRC:代表没有权限】 4. 0x3E服务(诊断仪在线) 每隔⼀段时间(⼩于服务器⾃动跳回默认会话的时间间隔),发送⼀次3E请求给ECU Tester都能配置⾃动发送3E服务请求 image.png 5. 0x27服务(获取安全访问的权限、解锁ECU) ...
7F表示当前会话下服务不支持 Sub-function分成了两部分(14229 P39) Bit7,Suppress postive reponse message indication bit,抑制正响应位 为0时,不抑制正响应消息 为1时,抑制响应消息,正响应消息不应该被发送 负响应消息不受抑制正响应位影响,会根据协议规定的限制发送 ...
03同上,7F表示否定响应,10是SID,22是NRC。3E服务用于向服务器指示诊断仪仍然连接在网络上,之前已经激活的诊断服务功能可以仍然保持激活状态。例子:27服务,加上一个子服务,再加上一个钥匙,这样的服务请求可以进行解锁。比如下面的例子,2n-1是某个子服务,通过首轮种子的请求,首轮ECU会返回67+01+...