电子说
CAN总线负载率只是一个宏观的参数,已经不能充分的评估总线的有效性和可扩展性。一般业内的对负载率的定义为实际数据传输速率和理论上能达到的数据传输速率的比值,本文主要介绍了can总线负载率如何计算及CAN总线负载率必需小于30%问题的解答,具体的跟随小编一起来了解一下。
CAN总线负载率不一定要小于30%,因为12年的时候菲亚特已经可以做到70%的负载率下仍然能够保证正常通讯,所以这个30%只是最佳选择。
负载率越高,代表需要发送的数据越多,相对来说低优先级节点发生通讯延迟的概率越大。
根据实验表明,负载率在30%的情况下,优先级高节点的平均报文传输时间和理论传输时间相差无几;而优先级低的存在20%左右的延时;当负载率达到60%的情况下,优先级最高的节点都有至少25%的延时,优先级最低的延时达到了4倍,根本无法满足实时性;当总线的平均利用率达到70%以上时,总线的通信将用可能出现拥堵的现象,极端的情况下将有可能造成错误帧的出现。
因此,负载率当然是越低越好,越能保证实时性,但是负载率太低就无法传输足够的数据,这是CAN的一个问题,在数据量大的时候无法保证实时性。一般的说法是30%左右的负载率是最好的。
A. CAN标准帧格式
B.CAN扩展帧格式
C.帧间间隔
假设
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:无位填充段 + 帧间间隔
网络负载率算法例子:
网络负载率是 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协议,相同电平持续5位,在下一位要插入1位与前5位反型的电平。
可知:(34 + 8s)/5 得到的填充位数,所以对于一帧完整的位数,我们可以假设包含上间隔位,
则:填充位:(34 + 8s)/5
数据位:8s
报文格式位:34 + 10 + 3 = 47
全部0条评论
快来发表一下你的评论吧 !