CAN总线负载率是指CAN总线上单位时间内实际传送的位数和可以传送的位数之比,也就是总线实际数据传输速率与理论上能达到的数据传输速率的比值。例如波特率为500kbps的CAN总线理论上每秒钟能够传输500000个Bit(位数),如果在某一秒中总线上只传输了100000个Bit,则瞬时总线负载率为20%。
汽车电子系统中ECU数量增加,因此CAN总线通信的数据量也急剧增加。但是CAN总线负载率过高会导致一些周期性信息由于总线竞争,造成报文延时甚至出现错误帧的情况。
对于汽车维修诊断行业,假设后装了车联网或导航一体机到车辆CAN总线上,加装的节点很可能会使得报文过多负载率偏高,我们可以用虹科Pico汽车示波器捕获CAN信号并且计算出负载率,判断这些加装的节点是否导致过载。对汽车仿真设计和优化方面,我们不仅能利用示波器计算出负载率,还能分析CAN总线每条报文的延时,两者结合才能优化CAN总线以降低负载率。
在正式开始介绍如何使用虹科Pico汽车示波器计算CAN总线负载率之前,我们首先要知道一个CAN标准数据帧的字段组成和位数(图1)。
![](https://i-blog.csdnimg.cn/blog_migrate/565fa7fafc579fb71b265061cb52645c.png)
假设比特率为500kBit/s,则总线上传输1位将花费1/(500*1000)s =2μs。由图1可知一个CAN帧大约有125位,那么传输一个CAN数据包将花费2*125=250μs,因此CAN总线理论上每秒可以传输4000个CAN数据包。
![](https://i-blog.csdnimg.cn/blog_migrate/e2b7f33e697f15f8223930804804cd10.png)
我们用示波器采集完CAN高和CAN低的波形后,需要进行串行译码。之前我们已经计算出比特率为500kBit/s的CAN总线理论上可以每秒传输4000个,为了计算出负载率,需要通过在时间标尺间译码快速测量出总线实际上每秒传输了多少个数据包(图3)。
![](https://i-blog.csdnimg.cn/blog_migrate/5afbd55d8b43688f799825d7cabf1f49.png)
译码后的数据如图4所示,我们将数据包这一列降序排列,可以知道在时间标尺间对应的这一秒中,CAN总线实际上一共传输了777个数据包。
![](https://i-blog.csdnimg.cn/blog_migrate/e27fbc019f4a69f9797e8492cce9f2c7.png)
基于上述结果,我们可以估算出CAN总线负载率的近似值为:777/4000=19.425%(单位时间内传输的数据包实际个数/理论个数=CAN总线负载率)。最后请大家注意,由于CAN总线的不确定性,上述方法只是估算负载率的近似值,并不能准确计算。而且该计算方法不适用于CAN FD协议以及29位标识符的CAN扩展帧(上述例子计算的是11位标识符的CAN标准数据帧)。
本文用到的检测设备是虹科Pico汽车示波器4425A
更多修车案例、教学视频请关注官微:
![](https://i-blog.csdnimg.cn/blog_migrate/2e0a5fe434e248261e486f3523927cf4.jpeg)