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

相关文章

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

Spring Boot 常用注解整理(最全收藏版)

《SpringBoot常用注解整理(最全收藏版)》本文系统整理了常用的Spring/SpringBoot注解,按照功能分类进行介绍,每个注解都会涵盖其含义、提供来源、应用场景以及代码示例,帮助开发... 目录Spring & Spring Boot 常用注解整理一、Spring Boot 核心注解二、Spr

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增