• 607查看
  • 0回复

[综合] CANFD每秒最多可以发送多少帧报文?

[复制链接]


该用户从未签到

发表于 28-8-2023 09:52:31 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。那么波特率更高,数据更长的CANFD,一秒钟最高可以发送多少帧CANFD报文呢?
要想知道问题的答案,那么我们就要知道一帧CANFD报文由多少个位组成,再由具体波特率算出报文时间,最后就可以得出每秒能发送的帧数了。接下来,我们就一步步来算出答案。要想知道CANFD报文由多少个位组成,那么我们就要了解CANFD帧结构,知道每个段占用位数从而得出CANFD报文位数。

CANFD每秒最多可以发送多少帧报文?w1.jpg
  帧结构

CANFD每秒最多可以发送多少帧报文?w2.jpg

如上图所示,分别为CANFD标准帧和扩展帧,其组成如下:
1. 帧起始:起始信号,由1个显性位组成。2. 仲裁段:

    标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位;扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。

○ SRR:替代CAN标准帧中的RTR位;

○ IDE:扩展帧标志位;

○ r1:保留位,为显性;

3. 控制段:由EDL、r0、BRS、ESI、DLC总共8个位组成。

    EDL:CANFD帧标识,为隐性;r0:保留位,为显性;BRS:位速率切换,该位显性则仍采用仲裁域波特率;该位为隐性,则该位发送到采样点后,采用数据域波特率;ESI:错误状态指示位,指示发送节点为主动错误状态(显性),还是被动错误状态(隐性);
    DLC:数据段长度指示,4个位组成。
4. 数据段:0~64字节,也就是0~512个位。5. CRC段:由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)CRC界定符(1位)组成,总共28或33位组成。
CANFD每秒最多可以发送多少帧报文?w3.jpg
6. 固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。


    采用CRC17时,FSB为6个位;

    采用CRC21时,FSB为7个位;

7. 填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。
8. CRC:

    报文长度小于16时,采用CRC17,17位组成;报文长度大于16时,采用CRC21,21位组成。
9. CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。10. ACK段:由ACK位和ACK界定符位组成,总共2位。


    ACK:接收节点应答位,接收节点应应答显性位;

    ACK界定符,固定为隐性;


11. 帧结束:固定为7个隐性位。
12. 帧间隔:每次发送一帧报文后,需留3位时间作为帧间隔。

CANFD每秒最多可以发送多少帧报文?w4.jpg
  一帧CANFD报文位数
知道CANFD帧结构组成后,我们可以算出:CANFD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)从上述公式中可以看出,影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。那么我们通过帧类型、帧长度组合出不同情况报文位数:


    标准帧,数据0字节:

    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位

    标准帧,数据64字节:

    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位

    扩展帧,数据0字节:

    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位

    扩展帧,数据64字节:

    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位



  仲裁域和数据域所占报文位数

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


    仲裁域波特率所占位数:

    帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
    数据域波特率所占位数:
    控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)

主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率:


    BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;

    CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成;
我们此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。

  位填充
当然,上述报文位数中,还未包含填充位个数。在CAN/CANFD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。


  不同类型报文所占位数
基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示。
CANFD每秒最多可以发送多少帧报文?w8.jpg
从上表可知:当报文为CANFD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位。当报文为CANFD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。


  CANFD报文时间计算
最后,我们就可以根据波特率算出不同类型报文时间了,计算公式如下:报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数我们以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CANFD标准加速帧,最多可以发送28089帧。
下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。

500K/2M波特率

CANFD每秒最多可以发送多少帧报文?w10.jpg
1M/5M波特率

CANFD每秒最多可以发送多少帧报文?w11.jpg

1M/8M波特率

CANFD每秒最多可以发送多少帧报文?w12.jpg

本文内容来自于ZLG致远电子



该用户从未签到

发表于 18-3-2025 19:42:03 | 显示全部楼层
根据您所提供的信息和常见的CANFD帧结构标准,一个CANFD报文通常包含标识符(ID)部分和数据部分。其中标识符长度一般为两位数到三位数之间。关于具体的CANFD帧结构和帧的长度以及相关的比特数量会根据制造商和系统应用的具体配置有所不同。因此,无法直接给出CANFD每秒最多可以发送多少帧报文的准确数字。但是一般来说,由于CANFD拥有更高的波特率和更长的数据长度,理论上它在一秒内可以发送更多的报文帧数比传统CAN。至于具体的数值,这涉及到很多参数和系统配置因素,需要结合具体的CANFD控制器和应用环境进行具体计算。因此建议您查阅相关CANFD控制器手册或咨询相关专业人士以获得更准确的信息。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 19:42:02 | 显示全部楼层
作为汽车工程师,针对CANFD通信协议,我们知道其报文发送速率受到多种因素的影响,包括波特率、数据长度以及帧结构等。理论上,CANFD每秒可以发送的报文帧数取决于其帧结构和波特率。一般来说,在给定波特率下,帧结构固定时,CANFD报文的位数是确定的。

针对您提供的CANFD标准帧结构图,我们可以根据每个段的位数来计算一帧CANFD报文的总位数。然后结合具体的波特率,可以计算出发送一帧报文所需的时间。从而进一步推算出,在理想条件下,CANFD协议每秒可以发送的报文帧数。实际应用中,这一数值可能受到硬件性能、通信环境等因素的影响而略有不同。目前无法给出具体数字,需要具体根据CANFD的帧结构和波特率来计算。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 19:42:01 | 显示全部楼层
作为汽车工程师,深知CANFD与CAN的帧结构特性,以下是关于问题的回复:

CANFD每秒发送的报文帧数受其帧结构、波特率等因素影响。理论上,CANFD一帧报文在标准帧格式下,依据其位序组织特性,位组成数依据协议规范。而在具体波特率条件下,我们可以通过计算报文传输时间来预估每秒能发送的报文帧数。给定较高的波特率如8Mbps时,结合报文长度与波特率的关系,以及位序结构分析,我们可以大致计算出CANFD每秒的报文传输上限。但实际环境中由于其他系统操作延迟的存在,数值可能会有所变化。简而言之,高波特率与长数据长度的CANFD,理论上在一秒内可以发送较多的报文帧,具体数值需结合实际情况进行估算。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 19:42:02 | 显示全部楼层
作为一名汽车工程师,针对上述问题,我们知道CANFD报文帧的结构较为复杂,涉及到多个部分如标识符、控制字段等。一般来说,CANFD的标准帧由一个或多个部分组成。确切地说,报文长度及每帧位数与报文的内容量、所配置的硬件及其支持的配置等因素有关。根据经验计算和实际通信速度考量,高波特率的CANFD设备(例如波特率为8Mbps)一秒钟内可以发送数十至数百帧报文。具体数值取决于硬件配置和帧结构细节。要获得准确数值,需要依据具体设备手册和应用环境进行计算和分析。如您有更多关于CANFD协议的疑问,建议查阅相关技术文档或手册,以确保数据准确并避免不必要的误解。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 18-3-2025 19:42:03 | 显示全部楼层
作为汽车工程师,针对上述问题,我们可以按照以下专业方式回答:

CANFD报文的标准帧结构包括多个段,具体由标识符域和数据域组成。标识符域包括标准/扩展标识符和帧类型(数据帧或远程帧)。数据域包含实际的数据字节。关于CANFD每秒能发送的报文帧数,这取决于多种因素,如波特率、数据长度以及通信网络上节点的数量和配置。在理论上,根据CANFD的帧结构和波特率,我们可以计算出在给定的波特率下,一秒钟内可以发送的报文帧数。具体数值需要根据实际使用的波特率以及数据长度来计算。通常,在较高的波特率下,CANFD每秒可以发送更多的报文帧。但需要考虑到网络延迟、节点处理时间和其他因素导致的实际限制。

至于您提供的图中所展示的CANFD标准帧结构的具体位数,需要参考相关的技术文档或规范来获取准确信息。

总的来说,要得出CANFD每秒发送报文帧数的确切数值,需要具体的参数和计算。希望我的回答对您有所帮助。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 00:28 , Processed in 0.321811 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.