UDS服务应该支持哪些否定响应码

  USD诊断服务的否定响应中包含有导致否定响应原因的编码,称为否定响应码(NRC, Negative Response Code)。否定响应码的取值范围为0x00 - 0xFF,被分为三组:

  • 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。
  • 0x01 – 0x7F:诊断通信相关的否定响应码。
  • 0x80 – 0xFF:服务器收到诊断服务请求时,由于某些条件不满足要求而给出的否定响应码。给出这些否定响应码而不是给出0x22的目的是为了提供请求的服务不能被执行的更详细的原因。

  具体的否定响应编码及其使用条件,请见本文最后的列表。

  由于诊断服务的功能不同,其所支持的否定响应码是不完全相同的。那每个诊断服务要支持哪些否定响应码呢?

所有服务都需支持的否定响应码

  首先,ISO14229-1:2013(E)中定义了一组每个诊断服务都需要支持的否定响应码。见下表。

否定响应码
NRC
定义
Definition
0x21 服务器忙
BusyRepeatRequest
0x11 诊断服务不支持
ServiceNotSupported
0x7F 诊断服务在当前会话下不支持
serviceNotSupportedInActiveSession
0x78 收到诊断请求,等待响应
RequestCorrectlyReceived-ResponsePending

具体的服务需要支持的否定响应码

  其次,针对具体的诊断服务,ISO14229-1:2013(E)定义了其所需支持的特定否定响应码。这里以诊断会话控制服务(0x10)为例。在ISO14229-1:2013(E)的9.2.4章节,定义了诊断会话控制服务(0x10)需要支持的否定响应码,为0x12、0x13、0x22。其它诊断服务支持的特定否定响应码,可以参考标准中的相应章节。

否定响应码
NRC
描述
Description
0x12 子功能不支持
0x13 报文长度不正确
0x22 服务执行条件不满足

  这里列举了常用的诊断服务所支持的否定响应码。如下表:

诊断服务标识
Service ID
诊断服务
Diagnostic Service
支持的否定响应码
Supported NRC
0x10 诊断会话控制
DiagnosticSessionControl
0x12, 0x13, 0x22
0x11 ECU复位
ECUReset
0x12, 0x13, 0x22, 0x33
0x14 清楚故障信息
ClearDiagnosticInformation
0x13, 0x22, 0x31, 0x72
0x19 读取故障码信息
ReadDTCInformation
0x12, 0x13, 0x31
0x22 通过ID读取数据
ReadDataByIdentifier
0x13, 0x14, 0x22, 0x31, 0x33
0x27 安全访问
SecurityAccess
0x12, 0x13, 0x22
  • 35
    点赞
  • 314
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值