UDS本质上是一种定向的通信,是一种交互协议(Request/Response),即诊断方给ECU发送指定的请求数据(Request),这条数据中需要包含SID。 如果是肯定的响应(Positive Response),回复[SID+0x40],如请求10,响应50;请求22,响应62。 如果是否定的响应(Negative Response),回复7F+SID+NRC,回复的是一个声明。 肯定响应和否...
肯定响应的格式为:(SID+0X40)+数据。例如,若请求0X10服务,其肯定响应的首字节将为0X50;而针对0X22服务的请求,肯定响应的首字节则为0X62。否定响应的格式则固定为:0X7F+SID+NRC。在否定响应中,0X7F为固定首字节,SID为请求中的SID,而NRC为否定响应码,用于指示导致否定响应的具体原因。接下来,我们将...
图22 引自[1] 继续采用上面的假设介绍部分NRC:ECU处于上锁状态,27 01请求种子,种子为0x3657,27 02发送密钥,密钥为种子的二进制补码值,即0xC9A9,密钥允许连续错误3次。 若请求种子27 01,发送种子67 01 36 57, 发送密钥27 02 A9 A9,这时密钥不对,ECU负响应7F 27 35,表明密钥不对。如果这时密钥连续不对超...
因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。 其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于36服务而言支持的NRC如下图: 图7 36服务NR...
在UDS协议中,NRC(网络响应代码)的优先级对于诊断工具而言至关重要。它决定了在多错误并发时,ECU应优先响应哪个NRC。通常,NRC的优先级按照从高到低的顺序排列,例如,0x11(服务不支持)的优先级就高于0x7F(当前会话下服务不支持)。在实际操作中,诊断工具必须迅速依据ECU返回的NRC来判定服务执行失败的原因,并...
简介:[UDS] --- UDS服务应该支持的NRC USD诊断服务的否定响应中包含有导致否定响应原因的编码,称为否定响应码(NRC, Negative Response Code)。否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。0x01 – 0x7F:诊断通信相关的否定响应码。0x...
0x22 0xF1 0x90 (ReadDataByIdentifier request for Data Identifier 0xF190,VIN number) ECU否定响应: 0x7F 0x22 0x22 (Negative response starting with 0x7F,NRC 0x22,ConditionsNotCorrect) RID Client使用 Routine Control 服务开始例程(routine) 、终止例程、请求例程执行结果。1个例程可以通过2个字节的RID...
是失败的,所以ECU应该给出NRC 0x7F 37 24,表示诊断序列执行有错误。 关于UDS所定义的诊断服务到这里就写完了。接下来我会写两篇文章补充一下UDS系列,分别介绍一下DTC的8个状态位的... unit ,数据的上传下载。 从成本等角度考虑,汽车ECU中用于缓存诊断服务数据的buffer大小有限,所以当我们需要读取或写入超过buffer...
如果是否定的响应(NegativeResponse),回复[7F+SID+NRC],回复的是一个声明。 肯定响应和否定响应的形式一定要熟记。UDS的26种服务中,有7种很重要。它们分别是: $10 DiagnosticSessionControl(诊断会话), $14 ClearDiagnosticInformation(清除诊断信息), $19 ReadDTCInformation, $22 ReadDataByIdentifier(通过ID读数据...
0x01 — 0x7F:与通信相关的否定响应码 0x80 — 0xFF:指示不满足执行诊断服务特定条件的具体原因的否定响应码,这些NRC可以附加在NRC 0x22(conditionsNotCorrect)的后面,用于更加详细的解释为什么诊断请求无法被执行。 在ISO 14229-1-2020版标准中定义的所有NRC码可参见下表: ...