五分钟教会如何计算CAN总线负载率,包学包会_怎么计算总线负载率(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

负载率R = 每秒钟实际上传输的所有数据的BIT总数A / 每秒钟理论上所能传输的BIT总数T

很简单的,对于指定了波特率的某个CAN总线,上述公式的分母T是恒定的。就比如上述示例中,波特率为500kbps的总线上,理论上每秒钟能够传输500000个BIT。而如果波特率为250kbps,那么就能传输250000个BIT。所以,我们只要计算上述公式中的分子A即可。

每秒钟实际上传输的所有数据的BIT总数A =
[该秒内所发送的所有ID1报文的所有BIT总数A1] +
[该秒内所发送的所有ID2报文的所有BIT总数A2] +
…… +
[该秒内所发送的所有IDn报文的所有BIT总数An]

其中:

该秒内所发送的所有ID1报文的所有BIT总数A1 = ID1的每一个报文的BIT总数Z * ID1的发送次数K

由于ID1的发送次数K是明确的,比如按照50ms的间隔发送,那就意味着一秒钟内的发送次数是20次。所以,我们只需要计算出“ID1的每一个报文的BIT总数Z”即可;

ID1的每一个报文的BIT总数Z = 实际报文数据帧的BIT总数Zg + 帧间隔的BIT总数Zy

对于标准帧和扩展帧,上述的值是不一样的,如下:

  • 对于CAN标准帧:假设数据帧长度恒定为8个字节,可以得到每一个数据帧最大长度共计108bit,分别为:帧起始(1bit)、仲裁域(12bit)、控制域(6bit)、数据域(8×8bit)、循环冗余码域(15bit)、1bit分隔符、应答域(2bit)和帧结尾(7bit);
    在这里插入图片描述
  • 对于CAN扩展帧:假设数据帧长度恒定为8个字节,可以得到每一个数据帧最大长度共计128bit,分别为:帧起始(1bit)、仲裁域(32bit)、控制域(6bit)、数据域(8×8bit)、循环冗余码域(15bit)、1bit分隔符、应答域(2bit)和帧结尾(7bit);
    在这里插入图片描述

而帧间隔的BIT总数,根据CAN协议的规定,都是3个BIT。

所以,对单个数据帧来说,完成一帧标准帧的全套发送行为总共需要108 + 3 = 111个BIT,完成一帧扩展帧的全套发送行为总共需要128 + 3 = 131个BIT。

至此,所有的元素取值都已经计算清楚,接下来我们进行整合计算:

假设总线波特率为500kbps,工作于标准帧模式,共有5个ID,每个ID按照50ms的间隔进行发送,那么此时的总线负载率计算如下:

负载率R

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值