Autosar通信入门系列05-聊聊一帧Can/CanFD报文发送时间?

news2024/9/20 11:00:59

本文框架

  • 1. 概述
  • 2. 一帧CAN报文发送时间计算
  • 3. 一帧CanFD报文的传输时间计算
    • 3.1 标准CAN与CANFD两者间的区别
    • 3.2 CANFD报文传输时间计算

1. 概述

本篇我们一起看下一帧Can报文发送需要多长时间,下述文章里我们会首先计算下Can分别对应的字节数,再根据传播速率计算出一帧报文传输的时间,内容简单但还有点意思。本文大纲如下:
在这里插入图片描述

2. 一帧CAN报文发送时间计算

CAN及CANFD对应的标准帧及扩展帧的格式如下,其中CAN与CANFD的主要区别在于数据场的长度不同,标准帧与扩展帧的区别在于仲裁场长度不同。
在这里插入图片描述

对于一帧8字节数据的标准CAN报文总共的Bit位数量:
帧起始(1位)+ 仲裁段(13位)+ 控制段(5位)+ 数据段(64位)+ CRC段(16位)+ ACK段(2位)+ 帧结束(7位)= 108位

对于数据8字节的扩展帧:
帧起始(1位)+ 仲裁段(33位)+ 控制段(5位)+ 数据段(64位)+ CRC段(16位)+ ACK段(2位)+ 帧结束(7位)= 128位

当对应CAN报文传输速率为500kBaud/s时,即传输一个Bit需要的时间为:1/500k = 2us/bit,对应上述的标准帧及扩展帧的传输时间:
标准帧:108 x 2 = 216us
扩展帧:128 x 2 = 256us

3. 一帧CanFD报文的传输时间计算

那对于一帧CanFD报文需要多长时间呢?同样需要先了解其数据格式,对于标准CANFD报文,其帧组成如下,
在这里插入图片描述

3.1 标准CAN与CANFD两者间的区别

与CAN 帧相同,CANFD报文同样有帧起始+ 仲裁段+ 控制段+ 数据段+ CRC段+ ACK段+ 帧结束,七个部分组成,两者区别在于:

  1. 传输速率不同:CAN FD的速率可变,从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,最高速率可达到8Mbps,其他部分与CAN相同。

  2. 数据长度不同:CAN FD支持的最大数据长度为64byte,CAN支持的最大数据长度为8byte。

  3. 帧格式不同:CAN FD新增了FDF、BRS、ESI位,其中:
    FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r,表示 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性(1),表示 CAN FD 报文;
    BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位(1)时速率可变(即 BSR 到 CRC 使用转换速率传输);
    ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。

  4. ID长度不同:CAN FD标准帧ID长度可扩展至12bit,CAN的标准帧ID为11bit。

3.2 CANFD报文传输时间计算

在计算一帧CANFD报文传输时间时,需要注意CANFD报文

由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。

仲裁域波特率所占位数:帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位),共26位。

数据域波特率所占位数:控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位),最多共550位。

假设仲裁域波特率为500Kbps(位时间2us),数据域波特率为2Mbps(位时间0.5us)
则发送一帧标准CANFD报文需要的时间为:26 x 2us+550 x 0.5us = 52 + 275 = 327us

注此处计算的前提条件如下:
1)CANFD报文为标准CANFD报文,非扩展帧;
2)上述报文位数中,不含填充位个数,在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。例如发送的帧ID为0x55或0xAA,其二进制分别为0101 0101或1010 1010,即每个位与前后位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/822047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛微oa 二次开发指南(ecology)

目录标题 一、环境搭建(一)先下载安装泛微oa(ecology)(二)idea环境搭建二、官方文档三、开发规范(里面有入门案例)四、三方系统调用oa系统接口五、oa系统所有接口文档六、ecology的一…

EAP设备自动化控制:新能源行业智能化生产的重要工具

随着全球对可再生能源需求的不断增长,新能源行业如锂电池和光伏发电等得到了蓬勃发展。为了满足市场需求,新能源行业需要不断提高生产效率、降低生产成本、改善产品质量。在这个过程中,EAP设备自动化控制成为了新能源行业智能化生产的重要工具…

Redis 源码解析之通用双向链表(adlist)

概述 Redis源码中广泛使用 adlist(A generic doubly linked list),作为一种通用的双向链表,用于简单的数据集合操作。adlist提供了基本的增删改查能力,并支持用户自定义深拷贝、释放和匹配操作来维护数据集合中的泛化数据 value。 adlist 的…

我的4周年创作纪念日

机缘 今天是2023年8月1日,工作四年了,记录博客也四年了。 2019年,我硕士毕业入职到了这家公司,当时培训的资料有一句话说:网络通信100Mbps是串口通信的是串口通信的10倍,我当时就好奇是怎么算出来的&…

springboot整合mybatis分页(使用pagehelper 分页插件)-- 学习若依系统

学习文档&#xff08;参考若依系统&#xff09; 若依的文档&#xff1a;http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#%E5%88%86%E9%A1%B5%E5%AE%9E%E7%8E%B0 就不从零搭建springboot项目了&#xff0c;直接在自己的项目基础上引入。 1、引入的依赖 <!-- pagehel…

matlab使用教程(7)—基本画图函数

1.创建绘图 plot 函数具有不同的形式&#xff0c;具体取决于输入参数。 • 如果 y 是向量&#xff0c; plot(y) 会生成 y 元素与 y 元素索引的分段线图。 • 如果有两个向量被指定为参数&#xff0c; plot(x,y) 会生成 y 对 x 的图形。 使用冒号运算符创建从 0 至 2…

ISO-15031/ISO-15765 诊断说明

注&#xff1a;15765诊断可参考15031&#xff0c;两者诊断逻辑相同 1: ISO15031 目录说明 ISO15031-1: 这里边介绍的是一般信息和用例定义&#xff1b; ISO15031-2: 术语、定义、缩写词和首字母缩写词[技术报告] ISO15031-3: 这里边主要介绍了诊断连接器及相关电路&#xff1…

掌握Python的X篇_17_循环语句(while;for var in ;range)

文章目录 1. 为什么需要循环2. while循环3. for...in循环4. range函数 1. 为什么需要循环 循环语句方便我们做重复的事情&#xff0c;比如&#xff1a; for i in range (0,3):print("重要的事情说三遍")运行效果如下&#xff1a; Python中有while循环和for循环两…

IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出

IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出 面板介绍 变基、合并 提取、拉取 签出、Checkout 面板介绍 如图&#xff0c;在IDEA的Git面板中&#xff0c;仓库会分为本地仓库和远程仓库&#xff0c;代码仓库里面放的是各个分支。 分支前面的书签&#x1f516;标志…

基于总线加锁和缓存锁(CPU实现原子操作的两种方式)

总线锁 总线锁就是使用处理器提供的一个 LOCK&#xff03;信号&#xff0c;当一个处理器在总线上输出此信号时&#xff0c;其他处理器的请求将被阻塞住&#xff0c;那么该处理器可以独占共享内存。 CPU和内存之间的通信被锁&#xff01;&#xff01; 如果多个 处 理器同 时对 …

【数据预测】基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测 短期功率预测【Matlab代码#54】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 白鲸优化算法BWO2. 变分模态分解VMD3. 核极限学习机KELM4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 1. 白鲸…

Vue 2.x 项目升级到 Vue 3详细指南【总结版】

文章目录 0.前言1.升级教程1.1. 升级 Vue CLI&#xff1a;1.2. 安装 Vue 3&#xff1a;1.3. 更新 Vue 组件&#xff1a;1.4. 迁移全局 API&#xff1a;1.5. 迁移路由和状态管理器&#xff1a;1.6. 迁移 TypeScript&#xff1a;1.7. 迁移测试代码&#xff1a; 2.迁移总结2.0. 这…

C++类和对象(下部曲)

构造函数 1 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值 虽然对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量的初始化 构造函数体中的语句只能将其称为赋初值&#xff0c;而…

十大排序|十大排序

稳定排序&#xff1a;冒泡排序、插入排序、归并排序、基数排序、桶排序 不稳定排序&#xff1a;选择排序、快速排序、希尔排序、堆排序 二、插入排序&#xff1a; 代码&#xff1a; #include<iostream> #include<cstdio> #include<stdlib.h> #include<ve…

真机搭建中小网络

这是b站上的一个视频&#xff0c;演示了如何搭建一个典型的中小网络&#xff0c;供企业使用 一、上行端口&#xff1a;上行端口就是连接汇聚或者核心层的口&#xff0c;或者是出广域网互联网的口。也可理解成上传数据的端口。 二、下行端口&#xff1a;连接数据线进行下载的端…

Vue源码学习 - 虚拟Dom 和 diff算法

目录 前言一、认识虚拟DOM用 JS 对象模拟 DOM 结构用JS对象模拟DOM节点的好处为什么要使用虚拟 DOM 呢&#xff1f;虚拟Dom 和 diff算法的关系 二、认识diff算法diff算法的优化key的作用diff算法 在什么时候执行&#xff1f; 三、深入diff算法源码patch 函数sameVnode 函数patc…

简要介绍 | 生成模型的演进:从自编码器(AE)到变分自编码器(VAE)和生成对抗网络(GAN),再到扩散模型

注1:本文系“简要介绍”系列之一,仅从概念上对生成模型(包括AE, VAE, GAN,以及扩散模型)进行非常简要的介绍,不适合用于深入和详细的了解。 生成模型的演进:从自编码器(AE)到变分自编码器(VAE)和生成对抗网络(GAN),再到扩散模型 一、背景介绍 生成模型在机器学习领域…

【Linux后端开发】poll/epoll多路转接IO服务器

目录 一、poll原理 二、poll实现多路转接IO服务器 三、epoll函数接口 四、epoll的工作原理 五、epoll实现多路转接IO服务器 一、poll原理 poll函数接口 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);// pollfd结构 struct pollfd …

搜索二叉树_SearchBinaryTree

目录 搜索二叉树的原理 搜索二叉树的搜索时间复杂度 二叉搜索树实现_key 模型 节点 构造函数 查找 中序遍历 插入 循环 递归 删除 循环 1.删除叶子节点 2.删除有一个孩子的节点 3.左右孩子都不为空 递归 析构函数 拷贝构造 operator key_value 模型 节点 …

JDBC-笔记

JDBC 1. JDBC介绍 JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于连接和操作数据库的 Java API。 通过Java操作数据库的流程 第一步&#xff1a;编写Java代码 第二步&#xff1a;Java代码将SQL发送到MySQL服务端 第三步&#xff1a;MySQL服务端接收到SQ…