因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。 其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于31服务而言支持的NRC如下图: 图11 31服务N...
3.支持的NRC 图4 支持的NRC 4.示例 (1)Sub-function = startRoutine 发送请求:31 01 02 01 肯定响应:71 01 02 01 32 (报文最后一个字节为汽车制造商自定义的状态) (2)Sub-function = stopRoutine 发送请求:31 02 02 01 肯定响应:71 02 02 01 30 (报文最后一个字节为汽车制造商自定义的状态) (3...
因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。 其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于31服务而言支持的NRC如下图: 图11 31服务N...
因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC。 其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于31服务而言支持的NRC如下图: 图11 31服务N...
2.6 0x31服务回复NRC的顺序 0x31服务的NRC回复顺序如下图: 三、物理寻址和功能寻址回复NRC 3.1 物理寻址但带sub-function服务 分成抑制正响应(SPRMIB = 1),没有抑制正响应(SPRMIB = 0)两种情况 1)NRC 0x31不管SPRMIB有没有置位,在参数不对或不支持的情况下都回复NRC 0x31 ...
NRC31:请求超出范围时,会发送该NRC NRC33:DID是保密的并且服务端处于未解锁状态,会发送该NRC NRC72:若在写入一个存储单元时服务器检测到错误时,会发送该NRC 应用场景与作用 a.例程控制(31)和输入输出(2F)的功能是不是一样的? 输入输出控制的功能,都可以通过例程控制来实现,而且,例程控制服务可以实现更复杂的...
诊断服务的NRC优先级是指在不同情况下,诊断服务返回的否定响应代码(NRC)的优先级。在实际使用中,NRC的优先级对于诊断服务的正确执行非常重要。例如,如果一个服务请求同时触发了NRC 0x12(子功能不支持)和NRC 0x33(安全访问条件不满足),ECU会优先返回NRC 0x12,因为其优先级更高。这种优先级的判断逻辑确保了诊断服务...
当参数 sub-function 的值为 startRoutine 或 stopRoutine 时,参数 routineControlOptionRecord 是可选的参数。 对于 RID 的定义,ISO14229 同样也做了初步的定义,具体的情况如下表: 正响应格式: 具体的格式如下: 负响应NRC码 具体的NRC码如下: ...
第一个NRC31:这里检查在当前诊断会话模式,是否支持请求的RID,这里的RID即routineIdentifier; NRC34:如果服务支持安全传输,这里检查安全传输的验证结果是否通过; NRC33:如果DID支持安全校验,这里检查安全校验服务是否已经验证通过; NRC12:这里校验请求里的子功能是否支持; ...
再来看NRC31,NRC31常用的用法是请求超出范围,比如说22服务,发送的DID,是ECU不支持的,比如说发送的请求220101,因为ECU不支持0101这个DID,会发送NRC31的否定响应,还有一个用法是:22在3个会话(默认,编程,扩展下都是支持的),22后面所跟的DID来读取数据的DID对各个会话等级是有要求的,比如说读取硬件版本号在编程会话...