UDS诊断协议——网络层协议

这篇具有很好参考价值的文章主要介绍了UDS诊断协议——网络层协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、UDS诊断协议概述

 UDS(unified Diagnostic Service, 统一诊断服务)是一个在整个汽车系统上经常使用的设备维护协议。其主要遵循: ISO-15765、ISO-14229,其ISO-15765协议是适用于网络层的协议,主要规范了“传输协议和网络层服务”, ISO-14229协议对应用层、会话层做出了定义。

uds诊断协议,网络,网络协议

二、网络层协议

协议功能

       UDS网络层主要目的把数据转换成能适应CAN总线规范的单一数据帧,从而进行传输。如果将要传输的报文长度超过了CAN数据帧的长度,则需要将报文信息进行拆分后传输,每次至多可以传输4095个字节长度的报文。

网络层协议数据单元(N_PDU)

        网络层协议数据单元(N_PDU,Network_Protocol Data Unit)包含N_AI,N_PCI,N_Data。即地址信息,协议控制信息和数据。

     地址信息主要由三种寻址方式:隐含源地址、目标地址、寻址方式信息

      协议控制信息主要用于标识N_PDU类型:单帧,第一帧、连续帧,流控帧。

协议控制信息(N_PCI)

N_PCL字节概要:

uds诊断协议,网络,网络协议

 N_PCL type值的定义:

uds诊断协议,网络,网络协议

1、单帧(SF)

一帧can报文就可以处理完uds服务。can报文首字节为N_PCI字节,单帧字节预览如下图所示:

uds诊断协议,网络,网络协议

单帧字节中相关值说明:

uds诊断协议,网络,网络协议

     举例说明:单帧传输  03 49 53 44 00 00 00 00

     单帧can报文首字节高4bit为0表示首帧,首字节低4bit表示单帧数据长度,即N_Data的有效字节数。通过上面报文我们可以看到N_Data有效字节数为3,有效字节数不足8字节,可填充任意数,这里填充00。在接收方接收到该can报文后,解析can报文首字节03便可知该报文为单帧且只有3个有效字节数,后续全为补充的无效字节数。

2、首帧(FF)

        如果发送方发送N_Data数据过长时,则需要拆分成多帧报文,被拆分后的报文需要通过多个N_PDU来发送,而接收方接收到多个N_PDU信息后进行重组。发送方发送多帧时,需要先发送首帧来告知接收方有多少字节数要发送到接收方。首帧字节预览如下图所示:

uds诊断协议,网络,网络协议

 首帧字节中相关值说明:

uds诊断协议,网络,网络协议

  举例说明:首帧传输  10 18 00 00 00 00 00 00

      can报文首字节高4bit为1表示首帧。首字节低4bit和byte2组合12bit表示发送方发送的数据长度,即N_Data的有效字节数。在图中可以看到N_Data有效字节数为0x018,即24个有效字节数。因此如图所示,在接收方接收到该can报文后,解析can报文前两个字节0x10 0x18便可知该报文为第一帧且有24个有效字节数,后续全为补充的无效字节数。

3、连续帧(SN)

        发送方发送首帧FF,然后接收到接收方的流控帧FC后,若条件允许可继续发送信息,则需根据连续帧CF的控制信息格式来发送信息。连续帧是发送方为了发送大量数据字节而采用的方法,发送模块将发送的数据进行拆分,通过多帧传送的方式传递出去。

连续帧字节总览图:

uds诊断协议,网络,网络协议

 

SN表示 Sequence Number,用来指示连续帧的序号是多少,使用这个机制的目的就是为了让发送方按顺序发送CF,并且接收方在接收CF的时候,能根据 SN 来判断数据帧是否按照正确顺序来接收,从而做出相应的判断。

SN一共有4位表示,所以其可以表达的范围是 0x0 - 0xf;

相应的,对于 SN 标准是有一条约束的:

(1)、SN应该从0开始计数,首帧的序列号应该为0,首帧虽然没有明确表示出序列号,但是应该将首帧当作0号序列对待;

(2)、 连续帧的第一帧的序列号应该为1;

(3)、当拆分传输时,SN 序列号加一递增;

(4)、SN的值不应受任何流控制帧的影响;

(5)、 SN的值循环增加。

举例说明:连续帧传输  23 00 00 00 00 00 00

        can报文首字节byte1高4bit为2时表示该帧为连续帧CF。byte1低4bit 为连续帧的顺序号SN。对于所有的拆分信息,SN开始于0。第一帧应当分配值为0。虽然第一帧 N_PCI没有明确表示出序列号,但是应该将首帧当作0号序列对待,第一个流控帧FC后的连续帧SN设置为1,同一拆分信息上,每一个新增的连续帧顺序号SN增1,连续帧顺序号SN的值不受流控帧的影响,当连续帧顺序号SN值为0x0F时,下一个连续帧中将顺序号SN重置为0。

4、流控帧(FC)

      UDS多帧通讯时:1、发送方发送首帧FF给接收方。2、接收方接收到首帧,解析首帧。3、接受方根据自身条件判断后(如:接收数据缓存大小,接收数据快慢能力,当前是否可以接收数据等),回复一帧流控帧FC给发送方。4、发送方根据接收到接收方的流控帧FC来决定后续的操作。

流控帧字节总览图:

uds诊断协议,网络,网络协议

 流控帧FS值定义:

uds诊断协议,网络,网络协议

 流控帧BS值定义:

uds诊断协议,网络,网络协议

 流控帧间隔时间STmin值定义:

uds诊断协议,网络,网络协议

 举例说明: 30 02 14 00 00 00 00 00

        can报文首字节byte1高4bit为3时表示该帧为流控帧FC。byte1低4bit为流状态FS(0表示继续发送、1表示等待、2表示溢出即第一帧中的FF_DL信息的长度超过接受实体缓冲区的大小),byte2为块大小(允许一次可连续发送连续帧CF的次数),byte3为发送方发送连续帧CF与连续帧CF间的最小间隔时间。

网络层定时

网络层定义了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六个时间参数

由六个参数得出几种超时有:
N_As超时:发送方没有及时发送N_PDU。
N_Ar超时:接收方没有及时发送N_PDU。
N_Bs超时:发送方没有接收到流控帧。
N_Cr超时:接收方没有收到连续帧。
N_Br超时:接收方没有发出流控帧。
N_Cs:即STmin,发送两个连续帧需要等待的最短时间,N_Cr最大1000ms。

三、应用层协议

应用层主要由:A_SDU、A_PDU、A_PCI、A_PUD构成

A_SDU—应用层服务数据单元

Application Layer Service Data Unit

SA, TA, TA_type  [,RA]   [,parameter1,…]

A_PDU —应用层协议数据单元

Application Layer Protocol Data Unit

SA, TA, TA_type  [,RA], A_Data A_Data=A_PCI+[parameter1,…]

uds诊断协议,网络,网络协议

 

A_PCI —应用层协议控制信息

Application Layer Protocol Control Information

A_PUD = A_PCI + A_SDU

应用层协议控制信息有两周不同格式

A_PCI(SI):SI—Service ID(Request服务和Result=positive的Response)
类型:1字节无符号整数
范围:00~FF

uds诊断协议,网络,网络协议
A_PCI(NR_SI,SI):NR_SI—Negative Service ID
类型:1字节无符号整数
范围:7F

 请求服务主要有两种:

1、不带子功能请求服务:SID+具体数据内容

2、带子功能请求服务:SID+子功能+具体数据内容

具体相应也分为两种:

1、肯定相应:

不带子功能:SID+40+具体的数据

带子功能:SID+40+子功能+具体数据

2、否定相应:7F+请求报文里的SID+一个字节的NRC文章来源地址https://www.toymoban.com/news/detail-756060.html

到了这里,关于UDS诊断协议——网络层协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UDS诊断之负响应码

    否定响应码(NRC) 定义(Defination) 0x12 服务器支持诊断请求中的服务标识符(Service ID),但不支持收到的子功能参数时,回复此编码。 0x13 请求服务的诊断报文中的数据长度与定义不一致时,回复此编码。请求服务中参数的格式与定义不一致时也会回复此编码。 0x22 请求的诊断服务的执

    2024年02月11日
    浏览(59)
  • 【车载开发系列】UDS诊断---读取数据($0x22)

    该服务的英文简称为ReadDataByIdentifier 。 根据ISO14119-1标准中所述,诊断服务22主要用于Client向Server(ECU)通过DID的方式读取相关的数据。这些数据可以输入输出的数字信号,模拟信号,内部数据以及其他的系统状态信息。作为诊断服务种的基础服务,可以简单理解为就是一个用于

    2023年04月19日
    浏览(56)
  • UDS统一诊断服务【一】诊断会话控制0X10服务

    最近在做诊断相关的开发工作,将自己接触到的知识点记录下来。前面的文章已经介绍过UDS的一些基础知识,和基本的一些概念,不清楚的可以查看之前的文章:UDS基础知识介绍 诊断会话控制服务 DiagnosticSessionControl ,SID是0X10,主要功能是控制服务端的会话模式切换。一般默

    2024年02月03日
    浏览(154)
  • 【车载开发系列】UDS诊断---安全访问服务($0x27)

    该服务提供了一种保护机制,该机制用来保护访问限制的诊断服务。 加密策略采用种子和密钥相关联的方法。采用随机产生的种子,通过安全算法得到唯一的秘钥。 若秘钥匹配正确则可以调用受到保护的诊断服务。这个服务解锁的是处在某个安全等级下的服务。 诊断工具请

    2024年02月03日
    浏览(67)
  • 【车载开发系列】UDS诊断---动态定义DID($0x2C)

    动态定义数据标识符 DynamicallyDefineDataIdentifier(2Ch) 此服务允许诊断工具在ECU的内部动态定义一个数据标识符,一个临时的DID,可以通过这个DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。 该数据标识符还可以被读取数据服务22h或读取数据(周期标识

    2024年02月02日
    浏览(62)
  • 汽车诊断之UDS入门-0x27(SecurityAccess)安全访问

    安全访问服务 0x27 用来解锁 ECU 对应的安全等级 , 一般处在非默认会话 下 进行解锁,这个服务解锁的是 处在某个安全等级下的服务 。 服务格式   安全等级解闭锁   需要注意的是: 1.P owerOn 或者 R eset 后, ECU 处在 locked 状态; 2.同一时刻只有 1 个安全等级是 active ,与这个

    2024年02月08日
    浏览(67)
  • 【车载开发系列】UDS诊断---读取DTC信息($0x19)

    UDS可以简单理解为一套完整的通讯协议框架,其目的在于规范各种行车电脑和ECU之间的通讯。0x19服务其实是读取DTC信息的服务。 1)DTC概念 故障存储相关的0x19和0x14服务。 当系统检测到了一个错误或者是一个故障发生的时候,会将相对应的数值故障码进行存储,那么这个对应

    2024年01月15日
    浏览(53)
  • 车载诊断NRC - UDS Negative Response Code

    下表中列出了ISO14229-1:2013(E)中定义的否定响应码及其使用条件: 否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。 0x01 – 0x7F:诊断通信相关的否定响应码。 0x80 – 0xFF:服务器收到诊断服务请求时,由

    2023年04月08日
    浏览(44)
  • UDS统一诊断服务【三】安全访问0X27服务

    今天分享的是UDS的安全访问服务,希望能对你有所帮助 SecurityAccess 安全访问,27服务,用来保护某些诊断服务的,提供一种保护机制。例如对于重要数据的上传或者下载过程不做任何限制,可能会对整车的安全造成极大的威胁,尤其是针对底盘域的控制器更是要在这方面做好

    2024年02月16日
    浏览(49)
  • UDS诊断系列之七 安全访问(27)服务(番外)附录I

    附录I的主要内容是通过一个状态图来描述ECU在安全访问的各状态之间的切换条件,以及如何进行状态切换即切换过程中都需要执行哪些操作。 下面直接先上图。 图看起来流程很多,但实际上很简单,先说图中的四个状态: A - ECU没有接收过任何安全访问的请求,或者刚刚接

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包