0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN FD网络中每秒最多可以发送多少帧报文?

jf_Vqngj70R 来源:美男子玩编程 2023-06-16 12:21 次阅读

随着总线技术汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes Payload)已难以满足日益增加的需求。

因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。

2015年6月30日,国际标准化组织(ISO)已经正式认可CAN FD,并无反对票通过ISO 11898-1作为国际标准草案。

1什么是CAN FD?

CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。

CAN FD具有以下4个主要优点:

1、增加了数据的长度

CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。

2、增加传输的速度

CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。

3、更好的可靠性

CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。

4、平滑过渡

在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。

实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。

2CAN FD帧结构

CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。

0bd76462-0bfb-11ee-962d-dac502259ad0.png

与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。

2.1、帧起始

CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。

0beab1e8-0bfb-11ee-962d-dac502259ad0.png

2.2、仲裁段

与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。

0c108210-0bfb-11ee-962d-dac502259ad0.png

标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。

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

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

IDE:扩展帧标志位;

r1:保留位,为显性。

2.3、控制段

CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。

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)。

0c3c7d66-0bfb-11ee-962d-dac502259ad0.jpg

2.4、数据段

CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。

像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。

0c4de222-0bfb-11ee-962d-dac502259ad0.png

编辑

0c600e98-0bfb-11ee-962d-dac502259ad0.png

2.5、CRC段

传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。

0c7f6608-0bfb-11ee-962d-dac502259ad0.png

固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。

采用CRC17时,FSB为6个位;

采用CRC21时,FSB为7个位。

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

CRC:

报文长度小于16时,采用CRC17,17位组成;

报文长度大于16时,采用CRC21,21位组成。

CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。

0ca630ee-0bfb-11ee-962d-dac502259ad0.png

2.6、ACK段

ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。

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

ACK界定符,固定为隐性。

0cb573b0-0bfb-11ee-962d-dac502259ad0.png

2.7、帧结束

与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。

3一帧CAN FD报文位数

根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:

CAN FD报文位数=帧起始(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位

4精品专栏仲裁域和数据域位数

由于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界定符采用数据域波特率以方便计算。

5位填充

当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。

我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。

同理,字节0xFF或0x00,其二进制位1111 1111或00000000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。

6不同类型报文位数

基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:

0ccf1752-0bfb-11ee-962d-dac502259ad0.png

从上表可知:

当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;

当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。

7CAN FD报文时间计算

最后,可以根据波特率算出不同类型报文时间了,计算公式如下:

报文时间=仲裁域位时间*仲裁域位数+数据域位时间*数据域位数

以位数最少的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波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。

下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。

0d08577e-0bfb-11ee-962d-dac502259ad0.png

0d3432a4-0bfb-11ee-962d-dac502259ad0.png

0d60ab40-0bfb-11ee-962d-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 总线技术
    +关注

    关注

    3

    文章

    78

    浏览量

    40646
  • 通信协议
    +关注

    关注

    28

    文章

    737

    浏览量

    39745
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2467

    浏览量

    459246
  • 网络
    +关注

    关注

    14

    文章

    7251

    浏览量

    87442
  • ecu
    ecu
    +关注

    关注

    14

    文章

    821

    浏览量

    53884

原文标题:CAN FD网络中每秒最多可以发送多少帧报文?

文章出处:【微信号:美男子玩编程,微信公众号:美男子玩编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CAN FD发送报文时会有发不出去的现象怎么解决?

    现象描述: 在发送报文数据时,出现了较为严重的报文丢失现象。编写测试程序,在for循环中循环发送id为0-7ff的
    发表于 02-02 07:48

    TC3xx连续发多CAN报文,超过40就死机了怎么解决?

    之前的应用只发送几个报文很正常,今天测试连续发送100(for循环内)时,发现最多只能连续发送
    发表于 02-06 07:18

    关于CAN发送的问题

    现在我的设备需要发送3共24个字节的数据给上位机,但是在上位机的通讯要求只给了一个报文ID 0X1FD08063,我以前只试过用三个
    发表于 12-19 16:42

    如何稳定地升级到CAN FD呢?本文为您解答

    CAN控制器、收发器均支持CAN FD通讯。所以当CAN网络某些节点升级为
    发表于 05-29 17:45

    CAN报文定义

    1. CAN报文定义CAN报文是指发送单元向接受单元传送数据的。我们通常所说的
    发表于 09-14 09:23

    CAN报文的单次发送和循环发送问题请教

    CAN报文怎样设置单次发送和循环发送?类似图片可以单次发送
    发表于 10-26 11:54

    一文浅析汽车CAN-FD总线的通信应用

    接收到的多个 CAN 报文打包到一个 CAN-FD 报文中进行发送,为保证报文矩阵的可扩展性和打
    发表于 02-14 14:22

    RT1060如何区分接收到的CAN格式?

    _CS_EDL(pTxFrame->edl))。我测试的结果是FLEXCANFD还可以同时接收CAN2.0B和CANFD格式的CAN报文
    发表于 03-20 08:11

    可以混合使用Classical CAN格式和CAN FD格式的诊断报文吗?

    Unexpected N_PDU的处理只适用于相同N_AI的诊断报文。Classical CANCAN FD的N_AI本就不同,所以,互不干扰,
    发表于 12-05 10:06 927次阅读

    【Z站推荐】CANFD每秒最多可以发送多少帧报文

    我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。那么波特率更高,数据更长的CANFD,一秒钟最高可以发送多少帧CANFD报文呢?我们知
    的头像 发表于 07-29 09:34 1366次阅读
    【Z站推荐】CANFD<b class='flag-5'>每秒</b><b class='flag-5'>最多</b><b class='flag-5'>可以</b><b class='flag-5'>发送</b>多少帧<b class='flag-5'>报文</b>?

    CAN FD帧结构介绍

    CAN FD帧结构 CAN FD节点可以正常收、发CAN报文
    的头像 发表于 07-18 10:42 4493次阅读
    <b class='flag-5'>CAN</b> <b class='flag-5'>FD</b>帧结构介绍

    一帧CAN报文多少字节

    一帧CAN FD报文位数 根据CAN FD帧结构组成,可以算出一帧
    的头像 发表于 07-18 10:48 4806次阅读

    CAN FD报文时间计算

    1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。 那么一秒钟最多可以发送报文呢?由于
    的头像 发表于 07-18 10:49 1508次阅读
    <b class='flag-5'>CAN</b> <b class='flag-5'>FD</b><b class='flag-5'>报文</b>时间计算

    经典CAN网络加入CAN FD节点需要注意什么?

    目前,整车的网络拓扑中,CAN FD的使用已经非常普遍。当然,带来的问题也非常的多。CAN FD在设计之初,就考虑了向后兼容Classic
    的头像 发表于 08-22 09:11 848次阅读
    经典<b class='flag-5'>CAN</b><b class='flag-5'>网络</b>加入<b class='flag-5'>CAN</b> <b class='flag-5'>FD</b>节点需要注意什么?

    CAN报文为什么会发送失败?

    CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送
    的头像 发表于 04-12 08:25 187次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>报文</b>为什么会<b class='flag-5'>发送</b>失败?