CAN总线负载率必需小于30%吗_can总线负载率如何计算

电子说

1.2w人已加入

描述

  CAN总线负载率只是一个宏观的参数,已经不能充分的评估总线的有效性和可扩展性。一般业内的对负载率的定义为实际数据传输速率和理论上能达到的数据传输速率的比值,本文主要介绍了can总线负载率如何计算及CAN总线负载率必需小于30%问题的解答,具体的跟随小编一起来了解一下。

  CAN总线负载率必需小于30%吗

  CAN总线负载率不一定要小于30%,因为12年的时候菲亚特已经可以做到70%的负载率下仍然能够保证正常通讯,所以这个30%只是最佳选择。

  负载率越高,代表需要发送的数据越多,相对来说低优先级节点发生通讯延迟的概率越大。

  根据实验表明,负载率在30%的情况下,优先级高节点的平均报文传输时间和理论传输时间相差无几;而优先级低的存在20%左右的延时;当负载率达到60%的情况下,优先级最高的节点都有至少25%的延时,优先级最低的延时达到了4倍,根本无法满足实时性;当总线的平均利用率达到70%以上时,总线的通信将用可能出现拥堵的现象,极端的情况下将有可能造成错误帧的出现。

  因此,负载率当然是越低越好,越能保证实时性,但是负载率太低就无法传输足够的数据,这是CAN的一个问题,在数据量大的时候无法保证实时性。一般的说法是30%左右的负载率是最好的。

  CAN总线负载的原理及计算

  A. CAN标准帧格式

  CAN总线

  B.CAN扩展帧格式

  CAN总线

  C.帧间间隔

  CAN总线

  假设

  Ui:各个信息帧占用总线百分比

  L:为报文的总长度

  C:为报文的总线占用时间

  N:为填充的位数

  t:为毛速率 ( 亦称波特率 )下的位时间

  则有:

  L = N + 8d + g + 13

  C = L * t

  Ui = C / T

  然而总线负载率是各个信息帧占用总线百分比之和。

  U = U1 + U2 + U3 + 。。。。。

  g 为 CAN 报文中控制位的总位数 ( 标准帧 g =34 , 扩展帧 g = 54 )

  g的取值是只取位填充部分除去数据段;

  13:无位填充段 + 帧间间隔

  网络负载率算法例子:

  CAN总线

  网络负载率是 1s 内网络总线传输数据所占带宽的百分率。以上图网络矩阵表为例,假设总线速度为500Kbps,网络中有多帧信号,把每个信号帧所占的负载率算出来,相加即得到总的网络负载率。FBCM_1/FBCM_2这两帧的所占的负载率算法如下:

  负载率1 = (1000ms / 20ms) * 111 / 500000 = 0.0111 = 1.11%

  负载率2 = (1000ms / 10ms) * 111 / 500000 = 0.0222 = 2.22%

  公式中111为 8字节的数据帧在不考虑填充位的情况下的所含位数。

  111 = 34 + 13 + (8 byte X 8bit) = 47 + 64

  下面我们看 TTCAN中有这么一个公式:

  CAN总线

  按照CAN协议,相同电平持续5位,在下一位要插入1位与前5位反型的电平。

  可知:(34 + 8s)/5 得到的填充位数,所以对于一帧完整的位数,我们可以假设包含上间隔位,

  则:填充位:(34 + 8s)/5

  数据位:8s

  报文格式位:34 + 10 + 3 = 47

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分