UDS网络层知识整理:单帧与多帧传输以及网络层时间参数整理

2024-01-05 19:28

本文主要是介绍UDS网络层知识整理:单帧与多帧传输以及网络层时间参数整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、单帧与多帧传输

UDS网路层的相关类型帧:

SF单帧参数:

  • SF_DL:后续数据长度

FF首帧参数:

  • FF_DL:后续数据长度

CF连续帧参数:

  • SN:连续帧序号,连续帧的第1帧值为1,每增加一个连续帧,SN值加1,后续SN达到15(0xF)时候,下一帧连续帧为0.(流控帧FC不影响连续帧SN值的计算)

FC流控帧参数:

  • FS:FlowStatus(流控制状态),为0表示准备好等待BS声明的最大连续帧数,为1表示等待一个新的流控帧,为2表示流控溢出,将会引起发送终止发送
  • BS:Block Size,为0 表示分段报文期间不再发送流控帧,所有连续帧都将持续发送到接收端。0x01~0xFF,定义为到下一个流控帧为止的连续帧最大数量
  • STmin:定义2个连续帧(CF)之间的最小允许时间。0~7F 表示0~127ms;F1~F9的单位为100us,其中F1表示100us,F9表示900us

1、单帧传输

单帧传输中仅需要用到SF(SingleFrame):

  • 举个例子:UDS中10服务

TX:02 10 03 00 00 00 00 00

单帧的第一个字节02,高4位为0表示是SF帧;低4位为2,表示后面的有效字节长度为2个字节

2、多帧传输

多帧传输中需要用到:FF(首帧)、FC(流控帧)、CF(连续帧)

  •  举个例子:2E服务写DID

TX:10 14 2E F1 90 FF FF FF

RX:30 08 14 00 00 00 00 00

TX:21 FF FF FF FF FF FF FF

TX:22 FF FF FF FF FF FF FF

(1)其中首帧FF第1个字节与第2个字节(10 14),第1个字节高4位 0x01 表示了该帧是首帧,第1个字节低4位,和第二个字节表示长度为0x014,表示后续有效字节数为20个字节

(2)当Sender首帧发出后,需要等待Receiver发送流控帧后,才能接着发送后面的流控帧数据。其中流控帧第1个字节30,其中高4位 3 表示为流控帧,低4位 0 表示流控帧的状态。流控帧第2个字节08 表示接收了8帧连续帧后,就需要等待流控帧

(3)当Sender接受到流控帧后,就需要开始发送连续数据,其中连续帧第1个字节21,高4位2表示是连续帧,低4位1表示连续帧的第一帧(注:其中连续帧的第1帧SN为1,后续SN达到15后,下一个连续帧的SN为0)

二、网络层相关时间参数

注:时间参数末尾的s表示sender,r表示receiver

  • N_As:控制器访问网络并在发送端传输诊断报文允许的时间。(即:访问网络层As开始计时,到报文发出后As停止计时,这一段时间)
  • N_Br:控制器接收到第一帧或连续帧之后,在控制器传输FC之前的允许时间。(即:网络层接收解析到为FF时候,Br开始计时,当访问网络层准备回复FC时,Br停止)
  • N_Ar:控制器访问网络并且在接收端传输诊断报文允许的时间。(即:访问网络层准备回复FC时,Ar开始计时,当报文发出后Ar停止计时,这一段时间)
  • N_Bs:传输首帧或连续帧与接收流控帧之间的时间(即:传输完FF或者CF时,Bs开始计时,当接受到FC或者是最后一帧CF,Bs停止计时)
  • N_Cs:控制器在接收到FC或发送完CF后,到传输连续帧之间允许的时间
  • N_Cr:控制器在发送流控帧或者接收前一个连续帧后等待连续帧的时间

这篇关于UDS网络层知识整理:单帧与多帧传输以及网络层时间参数整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573913

相关文章

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息