使用示波器计算CAN总线负载率

CAN总线负载率是指CAN总线上单位时间内实际传送的位数和可以传送的位数之比,也就是总线实际数据传输速率与理论上能达到的数据传输速率的比值。例如波特率为500kbps的CAN总线理论上每秒钟能够传输500000个Bit(位数),如果在某一秒中总线上只传输了100000个Bit,则瞬时总线负载率为20%。

汽车电子系统中ECU数量增加,因此CAN总线通信的数据量也急剧增加。但是CAN总线负载率过高会导致一些周期性信息由于总线竞争,造成报文延时甚至出现错误帧的情况。

对于汽车维修诊断行业假设后装了车联网或导航一体机到车辆CAN总线上,加装的节点很可能会使得报文过多负载率偏高,我们可以用虹科Pico汽车示波器捕获CAN信号并且计算出负载率,判断这些加装的节点是否导致过载。对汽车仿真设计和优化方面我们不仅能利用示波器计算出负载率,还能分析CAN总线每条报文的延时,两者结合才能优化CAN总线以降低负载率。

在正式开始介绍如何使用虹科Pico汽车示波器计算CAN总线负载率之前,我们首先要知道一个CAN标准数据帧的字段组成和位数。

  1. 1位起始位
  2. 11位标识符
  3. 1位RTR6位控制字段
  4. 0至64位数据字段
  5. 15位CRC
  6. 在上面,对于相同级别的5个连续位的每个序列,可以进行位填充。在最坏的情况下大约18位
  7. 3位定界符,ack等
  8. 7位帧尾
  9. 帧后的3位中断字段

因此1个CAN帧大约包含125位。

假设比特率为500kBit/s,则总线上传输1位将花费1/(500*1000)s =2μs。从上面的字段组成和位数我们可知,一个CAN帧大约有125位,那么传输一个CAN数据包将花费2*125=250μs,因此CAN总线理论上每秒可以传输4000个CAN数据包。

我们用示波器采集完CAN高和CAN低的波形后,需要进行串行译码。之前我们已经计算出比特率为500kBit/s的CAN总线理论上可以每秒传输4000个,为了计算出负载率,需要通过在时间标尺间译码快速测量出总线实际上每秒传输了多少个数据包(图1 图2)。

译码后的数据如图3所示,我们将数据包这一列降序排列,可以知道在时间标尺间对应的这一秒中,CAN总线实际上一共传输了777个数据包。

基于上述结果,我们可以估算出CAN总线负载率的近似值为:777/4000=19.425%(单位时间内传输的数据包实际个数/理论个数=CAN总线负载率)。最后请大家注意,由于CAN总线的不确定性,上述方法只是估算负载率的近似值,并不能准确计算。而且该计算方法不适用于CAN FD协议以及29位标识符的CAN扩展帧(上述例子计算的是11位标识符的CAN标准数据帧)。

本文用到的检测设备是虹科Pico汽车示波器4425A,了解更多详情可以查看:http://www.qichebo.com

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值