统一诊断服务(UDS)否定响应码的判定(NRC优先级)

统一诊断服务否定响应码的判定


上一篇文章《UDS服务应该支持哪些否定响应码》中介绍了具体的诊断服务应该支持哪些否定响应码。在实际的应用过程中,经常出现否定响应的场景同时满足多个否定响应码的情况。但否定响应中的NRC只能给出一个。那么,这种情况下应该给出哪个否定响应码呢?这就涉及到诊断服务否定响应码判定优先级问题。
在ISO14229-1:2013(E)中,对否定响应的处理过程有详细地说明。

适用所有诊断服务的NRC及其优先级

首先,我们来看Figure 5 – General server response behaviour。
 
上图的描述可以总结为下表中的NRC优先级。这是判定优先级最高的一组NRC。适用于所有的诊断服务。

优先级
Priority
否定响应码
NRC
备注
Notes
10x21可选
服务器正忙于执行已请求的诊断服务,暂时无法执行当前请求的诊断服务时,回复此编码
20xXX整车制造商或零部件供应商自定义
30x11强制要求
服务器不支持请求的诊断服务。诊断请求中的服务标识符(Service ID)是服务器不支持的或不能识别的,则回复此编码。
40x7F强制要求
诊断请求中的服务标识符(Service ID)在当前的会话下不支持时,回复此编码。
50x33可选
在所请求的诊断服务需要服务器处于解锁状态,但服务器未被解锁时,回复此编码。
60xXX整车制造商或零部件供应商自定义

观察Figure 5 - General server response behaviour的左下角,可以发现进一步的否定响应判断被分成了两个分支。
 

适用于带子功能参数的诊断服务的NRC及其优先级

分支一,带子功能参数的诊断服务(0x31服务除外)。常用的带子功能参数的诊断服务如下:

诊断服务标识
Service ID
诊断服务
Diagnostic Service
0x10诊断会话控制
DiagnosticSessionControl
0x11ECU复位
ECUReset
0x19读取故障码信息
ReadDTCInformation
0x27安全访问
SecurityAccess
0x28通信控制
CommunicationControl
0x3E测试设备在线
TesterPresent
0x85控制故障码设置
ControlDTCSetting

这些带子功能的诊断服务,适用于ISO14229-1:2013(E)中Figure 6 - General server response behaviour for request messages with sub-function parameter中描述的处理逻辑。
 
这部分处理逻辑可以被总结为如下的NRC处理优先级.(优先级从7开始。优先级为1~6的否定响应码请参考适用所有诊断服务的NRC及其优先级。下同。)

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
仅用于判断最小数据长度。诊断请求的数据长度小于2字节时,回复此编码
80x12强制要求
服务器支持诊断请求中的服务标识符(Service ID),但不支持其中的子功能参数时,回复此编码。
90x7E强制要求
诊断请求中服务的子功能参数在当前的会话下不支持时,回复此编码。
100x33可选。
诊断服务的子功能要求的安全等级未解锁时,回复此编码
110x24可选。
诊断服务的子功能需要按照某种顺序依次请求,而当前不满足此条件时,回复此编码。典型的例子是安全访问服务(SID 0x27)
120xXX整车制造商或零部件供应商自定义

ISO14229-1中做了具体的NRC判断逻辑描述的诊断服务的NRC优先级

分支二,ISO14229-1中做了具体的NRC判断逻辑描述的诊断服务。这部分常用的诊断服务如下:

诊断服务标识
Service ID
诊断服务
Diagnostic Service
0x22通过ID读取数据
ReadDataByIdentifier
0x2E通过ID写入数据
WriteDataByIdentifier
0x14清除故障信息
ClearDiagnosticInformation
0x2F通过ID进行输入输出控制
InputOutputControlByIdentifier
0x31例程控制
RoutineControl
0x34请求下载
RequestDownload
0x35请求上传
RequestUpload
0x36数据传输
TransferData
0x37请求退出传输
RequestTransferExit

在ISO14229-1:2013(E)中,对这些服务支持的NRC的判定做了具体说明。这里以通过ID写入数据服务(WriteDataByIdentifier, SID 0x2E)为例。在ISO14229-1:2013(E)的10.7.4章节Figure 21 - NRC handling for WriteDataByIdentifier service中进行了详细的说明。
 
由此图中的描述,可以得出

通过ID写入数据服务(WriteDataByIdentifier, SID 0x2E)所支持的NRC优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
诊断请求的数据长度小于4字节时,回复此编码
80x31强制要求
服务器不支持请求的DID或请求的DID不支持写入操作时,回复此编码
90x13强制要求
完整的数据长度与预期不一致时,回复此编码
100x33强制要求
此服务要求的安全等级未解锁时,回复此编码
110x22可选。
DID的写入条件不满足时,回复此编码
120x31强制要求
写入的数据无效时,回复此编码
130x72强制要求
数据写入到存储器失败时,回复此编码

参考ISO14229-1:2013(E)中的相关章节,可以得出其它诊断服务的否定响应处理优先级。

通过ID读取数据服务(ReadDataByIdentifier,SID 0x22)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
诊断请求的数据长度小于4字节时,回复此编码
80x13强制要求
完整的数据长度不符合预期,或请求的DID数量超过服务器支持的最大数量时,回复此编码
90x33强制要求
请求的DID要求的安全等级未解锁时,回复此编码
100x22可选。
读取DID的条件不满足时,回复此编码
120x31强制要求
请求的所有DID都不被服务器支持或在当前的会话下不支持时,回复此编码
130x14强制要求
诊断响应的数据长度超过服务器支持的最大值时,回复此编码

清除故障信息服务(ClearDiagnosticInformation, SID 0x14)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
数据长度不为4字节时,回复此编码
80x31强制要求
服务器不支持请求中的GroupOfDTC参数时,回复此编码
90x22可选。
当清除DTC的条件不满足时,回复此编码
100xXX整车制造商或零部件供应商自定义
110x72强制要求
向存储器写入数据失败时,回复此编码

通过ID进行输入输出控制服务(InputOutputControlByIdentifier, SID 0x2F)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
数据长度小于4字节时,回复此编码
80x31强制要求
请求的服务在当前会话下不被支持或请求中的InputOutputControlParameter参数不被支持时,回复此编码
90x13强制要求
完整的数据长度与预期不一致时,回复此编码
100x31强制要求
服务器不支持请求中的ControlState参数或ControlMask参数时,回复此编码
110x33强制要求
如请求的DID需要的安全等级未解锁时,回复此编码
120x22可选
当请求的输入输出控制功能的执行条件不满足时,回复此编码
130xXX整车制造商或零部件供应商自定义

例程控制服务(RoutineControl,SID 0x31)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
数据长度小于4字节时,回复此编码
80x31强制要求
服务器不支持请求中的例程标识(RID)时,回复此编码
90x33强制要求
请求的例程标识(RID)所需的安全等级未解锁时,回复此编码
100x12强制要求
服务器不支持请求的子功能参数时,回复此编码
110x13强制要求
完整的数据长度不符合预期时,回复此编码
120x31强制要求
服务器不支持请求中的RoutineControlOptionRecord参数时,回复此编码
130x22可选
当请求的例程控制的执行条件不满足时,回复此编码
140x24可选
如下情况下,可回复此编码
- 例程正在执行,在此收到了启动例程控制(StartRoutine)请求
- 例程没有执行,而收到了停止例程控制(StopRoutine)请求
- 收到请求例程控制结果(RequestRoutineResults)的请求时,由于例程没有被执行等原因无法给出执行结果时
150xXX整车制造商或零部件供应商自定义

请求下载(RequestDownload, SID 0x34)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
诊断请求的数据长度小于5字节时,回复此编码
80x31强制要求
诊断请求中的DataFormatIdentifier参数或AddressAndLengthFormatIdentifier参数无效时时,回复此编码
90x13强制要求
完整的数据长度与预期不一致时,回复此编码
100x31强制要求
诊断请求中的参数MemoryAddress或MemorySize无效时时,回复此编码
110x33强制要求
服务要求的安全等级未解锁时,回复此编码
120x22可选
服务器在接收下载数据的过程中又收到了请求下载服务时,回复此编码
130x70强制要求
服务器由于故障原因不能执行下载时,回复此编码
140xXX整车制造商或零部件供应商自定义

请求上传服务(RequestUpload,SID 0x35)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
诊断请求的数据长度小于5字节时,回复此编码
80x31强制要求
诊断请求中的参数DataFormatIdentifier或AddressAndLengthFormatIdentifier无效时时,回复此编码
90x13强制要求
完整的数据长度与预期不一致时,回复此编码
100x31强制要求
诊断请求中的参数MemoryAddress或MemorySize无效时时,回复此编码
110x33强制要求
服务要求的安全等级未解锁时,回复此编码
120x22可选。
请求上传数据服务的执行条件不满足时,回复此编码。例如服务器在执行请求上传数据的传输过程中再次收到了请求上传数据服务
130x70强制要求
服务器由于故障原因不能执行下载时,回复此编码
140xXX整车制造商或零部件供应商自定义

数据传输服务(TransferData,SID 0x36)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x13强制要求
诊断请求的数据长度小于2字节时,回复此编码
80x24强制要求
如下情况,回复此代码
-收到此服务前,服务器未收到请求下载(RequestDownload)或请求上传服务(RequestUpload)
-收到此服务前,服务器收到了请求下载(RequestDownload)或请求上传服务(RequestUpload),并且也已经收到了请求传输的全部数据
90x71强制要求
传输的下载数据长度与之前收到的请求下载(RequestDownload)服务中的参数MemorySize不一致时,回复此编码
100x73强制要求
服务器检测到数据传输的BlockSequenceCounter错误时,回复此编码
110x31强制要求
如下情况,回复此编码
-请求传输的数据长度与之前服务器收到的请求下载(RequestDownload)或请求上传服务(RequestUpload)后给出的肯定响应中的MaxNumberOfBlockLength不一致时(不包括最后一个Block的传输)
-请求传输的数据长度与服务器的存储器数据对齐要求不一致时
120x72可选
服务器在擦除或写入非易失存储器发生错误时,回复此编码
130x92/0x93可选。
服务器的供电电压超出了允许向非易失存储器写入数据的电压范围(供电电压过高或过低)时,回复此编码
140xXX整车制造商或零部件供应商自定义

请求退出传输服务(RequestTransferExit,SID 0x37)支持的否定响应码优先级

优先级
Priority
否定响应码
NRC
备注
Notes
70x24强制要求
如下情况,回复此代码
-收到此服务时,编程过程未完成
-收到此服务前,服务器未收到请求下载(RequestDownload)或请求上传服务(RequestUpload)
80x31可选
请求中的参数无效时,回复此编码
90x13强制要求
诊断请求的数据长度与预期不一致时,回复此编码
100xXX整车制造商或零部件供应商自定义

参考文献
Road vehicles - Unified diagnostic services (UDS) - Part 1: Specification and requirements, Second edition 2013-03-15

  • 26
    点赞
  • 315
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值