0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UDS诊断服务响应规则介绍

智能汽车电子与软件 来源:电控知识搬运工 2023-08-15 17:00 次阅读

来源:电控知识搬运工

车辆的诊断需要有Tester端和ECU端,Tester端和ECU端通过一问一答的形式进行通信,因而Tester端和ECU端都需要遵循同样的诊断通信协议,常用的诊断协议有ISO 14230,ISO 15031,ISO 15765,还有我们熟悉的ISO 14229就是UDS协议,在协议里面定义了诊断的请求,诊断响应的报文格式,以及ECU怎样处理诊断请求报文,以及诊断服务的应用。

UDS是Unified Diagnostic Services的缩写,在国际标准ISO 14229-1中定义,UDS标准中除了定义服务的用法,以及服务的格式以外,还定义了一些标准化的数据,而到OEM要使用UDS协议时,除了要使用标准定义的服务以及标准数据以外,还要依据自身的情况,定义属于OEM的特定数据,比如说,定义所要遵循的服务,需要支持的DID,需要支持的DTC等这些内容,这样形成的符合某OEM的诊断规范才能用于ECU诊断功能的开发以及验证。

随着车辆ECU的增多,车辆网络拓扑结构也越来越负责,比如说一辆车需要有多种总线(CAN总线,LIN,以太网,FlexRay),所以在2013年释放的UDS协议中,除了对通用诊断服务的定义以外,还增加了关于UDS在各个总线中应用的定义。

如果我们说UDS诊断服务是实现人或设备与ECU控制器交流的一种语言,那么诊断服务的响应规则就如同是语法,而SID(Service ID)定义就如同词汇。因此了解响应规则和SID的意义就基本能了解与ECU沟通的方法和含义。本文先来介绍一下响应规则。

1.寻址方式

在总线上往往有着众多ECU设备,作为诊断设备既可以与所有的ECU一起沟通,也可以指定某一个ECU单独沟通。所以寻址方式就有功能寻址(Functionally Addressed)和物理寻址(Physically Addressed)两种。

功能寻址

功能寻址可以广播诊断请求Request,同时等待总线上的ECU给与响应。

6414823c-3b48-11ee-9e74-dac502259ad0.jpg

物理寻址

物理寻址指定发送特定诊断请求Request,等待指定ECU给与响应。

6433f270-3b48-11ee-9e74-dac502259ad0.jpg

因此我们的诊断报文一般会有三个CAN ID,其中DiagRequest(诊断物理请求报文)和DiagState(诊断功能请求报文)是ECU接收来自Client的报文,而DiagRespone(诊断响应报文)是ECU反馈的报文。

例如下图的0x7FF和0x731分别是功能请求报文和物理请求报文,而0x7B1则是诊断响应报文。

644f58ee-3b48-11ee-9e74-dac502259ad0.jpg

2.请求和响应格式

诊断请求Request

UDS服务中共定义了26个服务请求SID(Service ID),每个SID代表了一类指令。由于有些服务请求还需要表达具体的功能类型,比如是开启还是关闭,是读取还是修改等,因此UDS中还定义了Sub-function来补充SID的意图。另外服务请求有时候还需要告知ECU具体的参数信息Parameter,例如计数信息。因此诊断请求的格式基本上是SID + Sub-function + Parameter三部分组成的,其中SID一个byte,Sub-function一个byte(其中最高位是禁止肯定响应指示位,0则表示需要肯定响应,1则表示禁止肯定响应),Parameter根据具体情况定义。

6472ef66-3b48-11ee-9e74-dac502259ad0.jpg

肯定响应Postive Response

收到Client的诊断请求后,ECU可能反馈肯定响应或者否定响应。肯定响应在诊断请求的SID上+0x40表示确认。例如诊断请求SID为0x10,则肯定响应反馈0x50。

6487ce90-3b48-11ee-9e74-dac502259ad0.jpg

否定响应Negative Response

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

0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。

0x01 – 0x7F:诊断通信相关的否定响应码。

0x80 – 0xFF:服务器收到诊断服务请求时,由于某些条件不满足要求而给出的否定响应码。给出这些否定响应码而不是给出0x22的目的是为了提供请求的服务不能被执行的更详细的原因。

当ECU反馈为否应响应时格式为,NR_SI(否定响应服务码0x7F) + SID(否定的请求服务SID)+ NRC(否定响应码,表示否定的理由)。

64a9b7da-3b48-11ee-9e74-dac502259ad0.jpg

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

64be6068-3b48-11ee-9e74-dac502259ad0.jpg

否定响应码定义及其取值

下表中列出了ISO14229-1:2013(E)中定义的否定响应码及其使用条件。

64eff2f4-3b48-11ee-9e74-dac502259ad0.jpg

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171186
  • 以太网
    +关注

    关注

    40

    文章

    5076

    浏览量

    166234
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2467

    浏览量

    459238
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87211
  • ecu
    ecu
    +关注

    关注

    14

    文章

    821

    浏览量

    53883

原文标题:UDS诊断服务响应规则介绍

文章出处:【微信号:智能汽车电子与软件,微信公众号:智能汽车电子与软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    UDS在CAN和以太网上的实现方案

    JTAG是针对MCU或者SOC这种芯片的调试接口协议,而UDS更像是针对整个ECU的调试接口。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU
    发表于 11-28 09:56 1118次阅读
    <b class='flag-5'>UDS</b>在CAN和以太网上的实现方案

    谁能帮我解答下CAN总线中的UDS诊断

    谁能帮我解答下CAN中的UDS诊断?需要联系请私信我。遇到好多难题。有点懵。想请高手帮我解答下.主要是没有程序。而且还不知道报文里面的数据代表什么?
    发表于 10-21 23:14

    UDS诊断命令备忘录

    UDS实践性强,逻辑复杂,很多服务非要体验过一次才能理解,导致包括我在内的初学者感觉晦涩难懂,不明觉厉,因此将自己的理解写下来、整理下来,与君共勉。零、UDS诊断命令备忘录一、简介
    发表于 08-26 16:09

    OBDII与UDS的区别是什么

    PrimaryECU在已经开发完UDS诊断的基础上增加OBD II诊断一、OBD II与UDS的区别?这里主要介绍
    发表于 02-23 06:55

    基于MM32F0140系列MCU实现UDS Bootloader的设计

    。例如,将CAN 总线接口连接到 MCU,并将 UDS 请求发送到 MCU。当 MCU 支持 UDS 服务时,它将根据客户端发出的请求做出相应的响应。  为什么用 Bootloader
    发表于 09-15 16:35

    【野火】瑞萨RA MCU创意氛围赛+ 基于CAN总线的UDS诊断升级MCU /bootloader/UDS诊断/14229/15765

    基于can总线的UDS软件升级 最近学习UDS诊断协议(ISO14229),是一项国际标准,为汽车电子系统中的诊断通信定义了统一的协议和服务
    发表于 06-13 01:26

    网络诊断提示DNS服务器未响应解决方法

    本文主要介绍了网络诊断提示DNS服务器未响应解决方法。DNS服务器是由域名解析器和域名服务器组成
    发表于 01-14 09:37 6w次阅读
    网络<b class='flag-5'>诊断</b>提示DNS<b class='flag-5'>服务</b>器未<b class='flag-5'>响应</b>解决方法

    UDS诊断协议在纯电动汽车电机控制器中的应用说明

      针对UDS诊断协议在电动汽车电机控制器中的应用问题,利用UDS诊断协议中各项服务的功能,同时根据电机控制器的功能需求,实现
    发表于 04-02 17:16 8次下载

    UDS基础知识介绍

    UDS(Unified Diagnostic Services 统一的诊断服务)是一种通用的诊断服务标准,用于汽车电子控制单元(ECU)的
    的头像 发表于 05-30 10:57 1w次阅读
    <b class='flag-5'>UDS</b>基础知识<b class='flag-5'>介绍</b>

    UDS常用诊断服务

    UDS诊断概述 UDS(Unified Diagnostic Services,统一的诊断服务诊断
    的头像 发表于 06-12 10:36 4420次阅读
    <b class='flag-5'>UDS</b>常用<b class='flag-5'>诊断</b><b class='flag-5'>服务</b>

    UDS之19服务中04子服务:读取快照数据

    作者|小懒小编|吃不饱在车载诊断中常用的诊断协议有ISO14229等,在协议中主要定义了诊断请求、诊断响应的报文格式及ECU该如何处理
    的头像 发表于 04-23 09:32 1228次阅读
    <b class='flag-5'>UDS</b>之19<b class='flag-5'>服务</b>中04子<b class='flag-5'>服务</b>:读取快照数据

    浅析UDS中的肯定响应抑制SPRMIB

    UDS协议中,有些诊断服务是带有子功能的。子功能参数的取值范围为0x00 - 0x7F。细心的同学应该发现了,子功能参数占用了一个字节,可用的数值范围为0~0xFF。
    的头像 发表于 07-27 14:18 1368次阅读
    浅析<b class='flag-5'>UDS</b>中的肯定<b class='flag-5'>响应</b>抑制SPRMIB

    UDS诊断服务介绍之31服务

    根据ISO14119-1标准中所述,诊断服务31服务主要用于实现针对某类测试场景,非正常工况下的程序活动以及其他擦除内存等连续性操作步骤的集合。
    的头像 发表于 08-08 10:48 7983次阅读
    <b class='flag-5'>UDS</b><b class='flag-5'>诊断</b><b class='flag-5'>服务</b><b class='flag-5'>介绍</b>之31<b class='flag-5'>服务</b>

    汽车UDS协议栈与XCP协议栈

    UDS协议栈 汽车UDS协议栈是一种用于汽车电子控制单元(ECU)之间进行诊断和通信的标准协议。UDS(Unified Diagnostic Services)协议定义了一组
    的头像 发表于 10-27 16:35 2161次阅读
    汽车<b class='flag-5'>UDS</b>协议栈与XCP协议栈

    UDS之29服务:认证服务

    汽车工业的很多领域都有严格的国际标准,其中针对车载诊断的ISO14229规定了车载诊断服务的通用需求(UDS),UDS主要应用于OSI模型的
    的头像 发表于 11-30 08:24 1340次阅读
    <b class='flag-5'>UDS</b>之29<b class='flag-5'>服务</b>:认证<b class='flag-5'>服务</b>