UDS诊断系列之三 ISO14229协议介绍(下)

上篇主要分享了一些基本概念和响应规则,里面提到了否定响应码,也提到了ISO14229-1的附录A是一张否定响应码的表格,里面详细介绍了否定响应码的具体含义。那么在什么时候给出什么样的否定响应码,这篇里会详细说一说。

对于所有的诊断请求,处理流程会分为两部分,第一部分是通用规则,第二部分是每个服务自身特有的规则。当然有些服务是没有第二部分的,比如10会话模式控制服务。

要注意的是,上篇文章提到的带子功能和不带子功能,在否定响应的规则里,这个也会产生影响,即其所应用的规则也会有部分不同。

下面分章节对响应的处理流程进行说明。

1.所有服务通用响应规则

063e7c6af0c347a99f6aab6a749ad882.png

这幅流程图的起始位置是收到诊断请求,左中右分成三类,分别是强制的、可选的和自定义的,含义很好理解,但是强制的部分也会因为某些功能不具备而不需要检查,例如NRC34,如果不支持认证的功能,就不需要检查,所以也不需要支持响应这个NRC,开发的时候这段逻辑直接默认OK就好。可选的NRC表示可以根据实际情况支持或者不支持,而OEM或者supplier定义的部分则是OEM或supplier根据自己的需求定义一些NRC规则,这些NRC可以是自定义的也可以是附录A的清单里的。

可选的里面特别注意的有38和39这两个,如果支持安全子层,那么就需要这两个NRC。至于安全子层是什么,后续会在84服务的分享里进行说明(开始挖坑)。

其他的下面简单解释一下:

①NRC21:当接受到请求时,有其他设备在之前请求的服务还没执行完,那么需要给出这个否定响应,代表服务端在忙,无法处理,直接拒绝的当前的请求。

②NRC11:如果服务端不支持请求里面包含的服务,需要给出这个否定响应。

③NRC7F:如果在当前会话模式不支持请求里包含的服务,注意是当前的会话模式,需要给出这个否定响应。例如在默认会话模式是不支持27服务的,如果收到了27服务的请求,则回复此NRC。

④NRC33:如果请求的服务需要先通过安全访问认证(27服务)才可以执行,但是当前的状态是没有经过安全访问的,这时候服务端就需要给出这个否定响应来表明客户端需要先经过安全访问认证才可以执行。

流程走到最后,分成了两个分支,一个是带子功能的,一个是不带子功能的。带子功能的,后面还有一部分通用的规则,而不带子功能的则直接进入到对应服务里的响应规则,针对不带子功能的,会在后续每个服务里进行详细说明。这里需要注意一个特殊的说明,就是带子功能的这个分支是不包含31服务的,为什么呢,因为31服务格式的特殊性,需要检查的内容和检查顺序与普通带子功能的服务是不一样的,后续31服务分享的时候会有专门的否定响应规则说明。

2.带子功能的服务通用响应规则

带子功能的服务,在执行完所有服务的通用规则后,会执行上图所示的响应规则。

下面,按照图示的顺序,对每个NRC所对应的情况进行简单说明:

①NRC13:当检查到请求的数据长度和所请求服务所要求的长度不一致时,需要给出这个NRC,这一步的长度指的是最小长度,仅包含服务ID和子功能两个字节,即长度小于两个字节,报错。当然不要误会NRC13仅对最小长度有效,在每个服务的检查内容里,也会有标准长度的检查要求,过长也是会响应NRC13的,具体看后面服务的介绍吧,这里不单独距离说明了。

②NRC12:如果服务端不支持请求里面包含服务的子功能,需要给出这个否定响应。

③NRC34:这里的NRC34的情况同上一节,不同点在于这里是检查子功能的时候触发的,而非服务。

④NRC7E:如果在当前会话模式不支持请求里包含服务的子功能,注意是当前的会话模式,需要给出这个否定响应。例如在扩展会话模式下不支持27服务的03子功能,收到该请求时就需要响应NRC7E。

⑤NRC33:如果请求服务的子功能需要先通过安全访问认证(27服务)才可以执行,但是当前的状态是没有经过安全访问的,这时候服务端就需要给出这个否定响应来表明客户端需要先经过安全访问认证才可以执行。

⑥NRC24:有些服务的子功能有顺序要求,例如27服务需要先请求种子然后才能发送密钥,请求种子和发送密钥是通过子功能来进行区分的,这时候如果没有先发送请求种子而直接发送了密钥,就会响应NRC24。

以上就是诊断的一些通用NRC响应规则,到这里诊断的响应规则分享完毕,欢迎大家关注后续的分享。

UDS诊断系列链接汇总_ChenglimK的博客-CSDN博客

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: iso-14229是一项用于汽车电子系统通信的协议,其全称为ISO14229 Unified Diagnostic Services(UDS)on Controller Area Network(CAN)。该协议旨在为车辆的诊断、维护和修复提供标准化的方法。ISO 14229定义了诊断服务和通信的标准化消息格式,包括诊断数据、错误码、故障清除等,以使不同车辆的系统实现得到统一和互操作性。 ISO14229 UDS协议栈是用于实现ISO 14229诊断协议的软件组件。该协议栈的实现可分为物理层和软件层两个部分,其中物理层是指使用CAN总线对车辆的执行单元进行通信,而软件层则是指实现ISO 14229标准的协议堆栈。该协议栈具有标准化、可重用和可配置的特点,可在不同的客户平台上使用。 ISO 14229的文档是对该协议的规范和说明,包括协议的基本架构、消息格式、错误码表、会话层和传输层的细节等。该文档是实现ISO 14229协议的必要依据,可用于开发UDS协议栈的开发人员和车辆诊断工程师。 源码.zip则是UDS协议栈的实现源代码,包括物理层和软件层代码。开发人员可根据该源码了解UDS协议栈的实现细节和技术实现,并根据需求进行二次开发。 综上所述,ISO-14229_14229_UDS协议栈_UDS-ISO-14229_ISO14229文档_ISO 14229_源码.zip等组件,是用于实现汽车电子系统诊断的标准化协议,可为车辆的维护和修复提供规范的方法。开发人员和车辆诊断工程师可根据这些组件进行UDS协议栈的开发和实现。 ### 回答2: ISO-14229是用于诊断汽车电子控制单元(ECU)的标准协议。该协议旨在提供一种标准化的方法,让技术人员可以使用相同的工具和流程诊断不同制造商的汽车14229 UDS是该标准的通信协议栈。UDS协议栈中定义的通用诊断服务,该服务可用于访问ECU的内部数据和状态。ISO14229文档提供了UDS协议栈的详细规范,以及相关的数据格式和命令集合。 此外,文档和源代码可以帮助工程师实现符合ISO-14229标准的诊断工具或ECU,提高汽车诊断系统的质量和效率。源码.zip则是UDS协议栈的代码包。 总之,ISO-14229标准和UDS协议栈提供了一种标准化的、可靠的汽车诊断协议。它们有助于提高汽车技术人员的工作效率,同时减少汽车诊断工具和软件的开发成本。 ### 回答3: ISO-14229是一种用于汽车电子系统的通讯协议。它定义了诊断通信的规范和协议,允许车辆厂商和供应商使用这些规范和协议来开发和测试车载电子控制单元。其中,UDS协议栈是实现ISO-14229的关键技术之一,能够为客户端提供远程访问ECEs的可能性。 ISO-14229规定了接口:UDS(Unified Diagnostic Service),用于与电子控制单元(ECU)之间进行通讯。 UDS协议栈则实现了UDS协议的接口,可以自动进行诊断和测试,发生故障时还能产生错误报告。 相应地, ISO14229文档描述了在ISO14229-1文档中定义的UDS协议的特定应用,与ISO15765-2的特定要求相结合。 它还包括了EVITA Light文档中的安全方面。 源码.zip文件则包含了UDS协议栈的源代码,可以在开发与应用中使用,实现对汽车电子控制单元的简便对话操作。 总之,ISO-14229及其UDS协议栈实现了车载控制电子单元的标准化通讯,可简化车辆诊断和维护过程,提高效率和可靠性。同时,相应的规范、文档和源代码也为相关人员提供了方便和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChenglimK

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

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

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

打赏作者

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

抵扣说明:

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

余额充值