UDS诊断系列之二 ISO14229协议介绍(上)

ISO14229系列,涵盖了UDS的服务定义以及在各车载总线上的一些特殊应用指导,以及各总线类型所对应的下层协议要求,下面就是该系列中各协议所对应的内容清单。

协议编号协议名称协议内容
14229-1Application layerUDS的使用规则,服务,以及相关的服务原语(接口定义)
14229-2Session layer services会话层的使用规则
14229-3UDSonCAN在CAN总线上应用时一些特殊服务规则和其他层遵循的协议要求
14229-4UDSonFR在Flexray总线上应用时一些特殊服务规则和其他层遵循的协议要求
14229-5UDSonIP在Ethernet上应用时一些特殊服务规则和其他层遵循的协议要求
14229-6UDSonK-Line在K线上应用时一些特殊服务规则和其他层遵循的协议要求
14229-7UDSonLIN在LIN总线上应用时一些特殊服务规则和其他层遵循的协议要求
14229-8UDSonCXPI在CXPI总线上应用时一些特殊服务规则和其他层遵循的协议要求

通过上表可以看出,ISO14229-1和ISO14229-2是该系列的核心基础,而其他协议则是将UDS在每种总线类型上应用所需要注意的一些特殊要求,以及其对应的其他层所使用的协议。所以学习UDS的重点,就在学习ISO14229-1和ISO14229-2上面,同时,这两个协议也是最难学的一部分。

这篇文章主要来介绍ISO14229-1里的基础部分,诊断的规则。

很多人讲这一部分,都会按ISO的思路,按照服务原语→服务规则→否定响应规则→服务定义顺序来讲,这里,我把服务原语的内容,先留作大家自己去学习进阶的内容,在讲完CAN总线的时候,作为进阶补充来写。为什么这么做?因为很多人在实际工作和使用UDS的时候呢,实际并不是太关注实际每层之间如何传递参数,传递哪些参数,所以这里先捡大家实际用得上的内容进行分享。

一、基本概念

在说服务规则之前,首先大家要知道几个概念,我先列举并解释一下这些概念。

客户端、服务端:在UDS的规则里面,有两个角色是大家一定要知道的,就是客户端(client)和服务端(server),实际应用过程中,它们是成对出现的。这两个角色与我们通常了解的网络或软件的概念是一致的,客户端指的就是要使用服务器的一方,比如我们有微信客户端、邮箱客户端、游戏客户端等等,这些都是本地的应用,必须使用服务器的数据才能实现其功能。而服务端相当于我们平时所认识到的服务器,它用来提供服务给客户端使用,来交换数据。总结一下就是,客户端按照UDS协议的规定可以向服务器请求某些服务,来实现数据的交互。在汽车上,客户端指诊断仪或具备诊断仪功能(发送诊断请求)的设备和ECU,服务端指实际执行请求命令的ECU。

请求、响应:有了客户端和服务端,那么它们的交互是如何实现的呢?对,就是通过请求和响应来实现的,客户端可以通过请求来向服务端索要数据,也可以通过请求来向服务端发送数据,服务端收到请求后,需要按照规则来给客户端响应,来实现具体的服务功能。响应分为肯定响应和否定响应,即请求的事务被正确处理时服务端给出肯定响应,请求的事务无法处理或处理时发生错误时服务端给出否定响应。否定响应包含被否定的服务ID和否定响应码(NRC)。

地址:我们在浏览网络的时候,需要在地址栏输入网址,之后才能够访问我们所想要访问的内容,这件事情在UDS里面也是如此。每个服务端都有一组地址请求地址和响应地址,其中请求地址又分为物理寻址和功能寻址,也就是说每个服务端至少都有三个地址:功能请求地址、物理请求地址和响应地址。每个地址里面包含了目标地址和源地址,即不管是请求地址还是响应地址,地址信息里都包含了发送方和接收方的信息。有关地址格式的说明,会在ISO15765系列里详细说明,这里只要记住每个服务端都有这三个地址即可。

物理请求地址:一对一请求地址,即该地址指向的是单一服务器,可以理解为打电话,请求是由客户端发送给指定的服务端的,只有指定的服务端能对此请求进行响应,且如无特殊要求,必须响应。

功能请求地址:一对多请求地址,即该地址指向的是一组服务器,可以理解为电话会议,请求是由客户端发送给指定的多个服务端的,被请求的服务端都能够对请求进行响应,例如一般车上的功能寻址都是请求所有的控制器的。但是功能寻址所请求的内容如果不支持,是可以不响应的,具体细节在响应规则章节会说明。

响应地址:响应地址不区分物理还是功能,因为响应的发送方和接收方是唯一的,即只有一对一的场景。

服务ID:UDS是以诊断服务来划分功能的,每个服务分配一个特定的ID,占用一个字节长度,每个服务根据功能的不同会有不同的格式,但基本上有带子功能和不带子功能之分,这个在讲格式的时候会详细进行说明。

子功能:一些服务如10会话模式服务,会有不同的会话模式,19服务会包含读取故障码和快照等其他信息的功能,所以这些功能会用子功能进行区分,表示同类功能下的细分类别。子功能同样也占一个字节。

数据参数:大部分服务都需要数据参数才能确认请求的具体内容,例如22服务需要DID参数才能够确定要读取哪个数据,19服务需要指定参数才能确定读取的是哪一类或者哪个故障的数据等。

抑制肯定响应位:子功能的最高位,用来表示对该请求的响应要求,如果该位置1,则当前请求的肯定响应是不需要响应的,反之则需要响应。

否定响应码(NRC):当服务端处理请求出现问题时,需要给出的问题原因。ISO14229-1的附录A有一张否定响应码的表格,里面有每个码所代表的含义,同时在通用响应规则和每个服务的响应规则里也会指出具体在哪些步骤进行响应。

二、响应规则

UDS中,一般由客户端发起诊断请求,服务端进行响应,每次对话都是一问一答的形式,但是有些时候,一些特定的请求是可以不用响应的,接下来按照14229-1的四张表格,分别说说这响应的具体规则。

为什么是四张表格?因为是根据物理寻址和功能寻址,带子功能和不带子功能,这两个属性排列组合,组成了四种情况。

1.物理寻址带子功能的请求

这张表格,按照抑制肯定响应位,分为上下两部分,除抑制肯定响应位之外,所列举的情况均一致,不同的地方在于如何响应。在阅读的时候,可以上下两部分同时进行对比,加深印象。

①a和f条件一致,服务和子功能都支持,所请求的参数至少有一个是支持的,这时候a需要肯定响应,而f则不需要响应,所以f是抑制肯定响应位导致的不需要响应。

②b和g条件一致,服务和子功能都支持,虽然至少有一个参数是支持的,但是看最后一列备注所指出的内容,当处理这个支持的参数出现问题的时候,回复否定响应。否定响应的内容这里给了一个XX替代,意思是根据实际情况进行响应。

③c和h条件一致,服务和子功能都支持,请求的参数都不支持,所以响应是NRC ROOR,即请求超出范围,这里的范围指的是支持的数据参数范围。

④d和i条件一致,服务不支持,这里分两种情况,一种是服务端不支持请求的服务,另一种是请求的服务在当前的会话模式不支持,因此这里NRC有两个。

⑤e和j条件一致,都是子功能不支持,同样这里也分两种情况,一种是服务端不支持请求服务的子功能,另一种是请求服务的子功能在当前的会话模式不支持,因此这里NRC有两个。

通过对比可以发现,抑制肯定响应位作用就是当响应为肯定响应时,无需进行响应,而其他情况的响应规则是相同的。

2.功能寻址带子功能的请求

这张表格,同样按照抑制肯定响应位,分为上下两部分,除抑制肯定响应位之外,所列举的情况均一致,不同的地方在于如何响应。在阅读的时候,可以上下两部分同时进行对比,加深印象。

①a和f条件一致,服务和子功能都支持,所请求的参数至少有一个是支持的,这时候a需要肯定响应,而f则不需要响应,所以f是抑制肯定响应位导致的不需要响应。

②b和g条件一致,服务和子功能都支持,虽然至少有一个参数是支持的,但是看最后一列备注所指出的内容,当处理这个支持的参数出现问题的时候,回复否定响应。否定响应的内容这里给了一个XX替代,意思是根据实际情况进行响应。

③c和h条件一致,服务和子功能都支持,请求的参数都不支持,这时候不需要进行响应

④d和i条件一致,服务不支持,这时候不需要进行响应

⑤e和j条件一致,都是子功能不支持,这时候不需要进行响应

和上一节进行对比,可以看到在③、④、⑤这三种情况的时候,功能寻址的请求是不需要服务端进行响应的,这就是物理寻址请求和功能寻址请求的响应规则上的差别,这里一定要记住,这三种情况下的NRC,功能寻址不需要响应。但是,这里有一个例外,就是如果服务端首先回复了NRC78(pending),那么接下来就必须有后续的响应,直到响应了其他NRC或者给出了肯定响应。

3.物理寻址不带子功能的请求

 这个表格可以看出来,没有了子功能,就没有抑制肯定响应位什么事儿了,这里情况就剩下了一半,所以要记住抑制肯定响应位的含义和使用方法。

a)请求中的服务和所有参数都支持,这时候不用想,必须是肯定响应。

b)请求中的服务和至少一个参数支持,这时候只响应支持的参数即可,也需要给出肯定响应。

c)请求中的服务和至少一个参数支持,但是处理参数的时候发生了错误,这时候就需要根据实际情况给出否定响应并给出具体的否定响应码(NRC)。

d)请求中的服务是支持的,但是参数都不支持,这时候需要给出否定响应NRC31,也就是说请求的数据超出了服务端所支持的范围。

e)请求中的服务是不支持的,需要给出否定响应,这个跟之前的情况一样,分两种情况,分别是服务不支持(NRC11)和当前会话模式不支持该服务(NRC7F)。

4.功能寻址不带子功能的请求

 这个表格和上一节的表格区别在于d和e两个请求,在请求是功能寻址的时候,这两种情况是不需要给出响应的。

a)请求中的服务和所有参数都支持,这时候不用想,必须是肯定响应。

b)请求中的服务和至少一个参数支持,这时候只响应支持的参数即可,也需要给出肯定响应。

c)请求中的服务和至少一个参数支持,但是处理参数的时候发生了错误,这时候就需要根据实际情况给出否定响应并给出具体的否定响应码(NRC)。

d)请求中的服务是支持的,但是参数都不支持,这时候说明请求的数据超出了服务端所支持的范围,服务端不需要给出响应

e)请求中的服务是不支持的,服务端不需要给出响应

综合以上四个小结,可以得到这样一个结论,功能寻址的请求,如果请求中所包含的服务、子功能、参数是不被服务端支持的,那么服务端无需对该请求给出响应。

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

  • 21
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答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协议栈实现了车载控制电子单元的标准化通讯,可简化车辆诊断和维护过程,提高效率和可靠性。同时,相应的规范、文档和源代码也为相关人员提供了方便和支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChenglimK

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

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

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

打赏作者

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

抵扣说明:

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

余额充值