一帧Can/CanFD报文发送时间

本文框架

  • 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,则可以使填充位个数最少。

你可能感兴趣的:(网络,服务器,linux)