UDS NRC速查



UDS中的NRC(Negative Response Code)即否定响应码,用于在诊断通信中表示服务端无法成功执行客户端请求的原因。以下是一些常用的UDS NRC码及其含义:

HEX Name Description
01 ISOSAEReserved ISO保留,暂时未定义
10 GeneralReject 一般性拒绝。通常在无法准确描述错误时发出
11 ServiceNotSupported 服务不支持。多出现在服务未被定义
12 Sub-functionNotSupported 子功能不支持。多出现子功能未被定义
13 IncorrectMessageLengthOrInvalidFormat 报文长度错误
14 ResponseTooLong 响应字节数太长
21 BusyRepeatRequ
03-08
### UDS NRC错误码解释 在网络诊断过程中,UDS (统一诊断服务) 使用负响应代码(Negative Response Code, NRC)来指示请求的服务未能成功完成。这些NRC提供了关于为何特定请求未被处理的信息[^1]。 对于`DiagnosticSessionControl`服务而言,在某些情况下可能会返回不同的NRC值以表明无法进入所请求的会话模式。例如: - `0x12`: 该子功能尚未正确配置。 - `0x31`: 请求的服务不在当前激活的会话中可用。 当尝试通过UDS读取数据时,如果遇到问题,则可能收到如下所示的一些常见NRC: - `0x7F xx 31`: 表明客户端发送了一个有效的请求但是服务器拒绝执行此命令因为当前处于不允许运行它的操作状态;这里的xx代表的是被否定掉的具体服务ID[^2]。 为了更好地理解如何解析和应对来自汽车ECU的不同类型的NRC反馈,下面给出了一段Python伪代码示例,用于模拟接收并分析从车辆控制系统接收到的数据包的情况。 ```python def interpret_nrc(response_code): nrc_dict = { '0x12': "Service not supported in active diagnostic session", '0x31': "Request sequence error or Request out of session", # 更多其他NRC定义... } try: return f"NRC {response_code}: {nrc_dict[response_code]}" except KeyError: return f"Unknown NRC: {response_code}" # 假设我们收到了一个带有NRC的状态字节作为回应 received_response = "7F 22 31" service_id, nrc_value = received_response.split()[1:] print(interpret_nrc(nrc_value)) ``` 上述脚本展示了怎样基于预定义映射表将十六进制形式表示的标准ISO/SAE保留字段转换成易于人类阅读的消息字符串。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天赐好车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值