什么是CAN总线负载率

描述

在CAN总线网络里,还有一个经常被大家提起的概念-总线负载率,负载率,顾名思义,就是指这段时间内总线上实际传输的信息量/理论上可传输的最大信息量。 

不知道大家平时怎么理解一个“概念”或“定义”,洒家的小窍门是“咬文爵字”和“抠字眼”。 

具体要抠哪些字眼,可以参考老罗的锤子手机原创、最近被微信抄了去的big bang大爆炸。这个概念里,有两个需要重点理解的点:“这段时间”、“理论最大信息量”。 

“这段时间”可长可短,也意味着负载率是可变的。需要特别关注的有两个:平均负载率和峰值负载率。根据洒家多年的小经验,平均负载率大多低于40-50%,峰值负载率也不超过70-80%。 

因此我们需要关注负载率超了具体产生的影响: 

针对某个具体的CAN网络,从技术上来说,把原本30%的平均负载率提高到50%也没啥,但是还是建议30%,或许30%最保险吧。

另外,“理论上可以传输的最大信息量”取决于总线速率。具体来说,低速CAN为125kbps,高速CAN为500kbps,CAN-FD为2Mbps,再往上,Flexray站出来说了“此吾家事,汝不得预也!”。 

在制定负载率时,会牵涉到一个概念-报文时长。洒家不少同事说起报文时长来,经常不清不楚,模模糊糊。其实,真正找到关键,问题就很简单了。 

报文时长的计算公式:报文时长=位时长x报文位数。 

在这个公式里,位时长当然等于速率的倒数,比如125kbps的通信速率,位时长=8us。而报文位数,则取决于CAN报文的结构。报文结构如下图所示:

负载率

一个完整的CAN报文由七个不同的Field(场/域/段)组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。

SOF为帧起始,标志着数据帧和远程帧的起始,由一个单独的“显性”位组成。 

仲裁场包括识别符和远程发送请求位(RTR)。识别符的长度为11位。 

控制场由6个位组成,包括数据长度代码和两个将来作为扩展用的保留位。 

数据场由数据帧中的发送数据组成。它可以为0~8 个字节。 

CRC场包括CRC序列(CRC SEQUENCE),其后是CRC界定符(CRC DELIMITER)。CRC序列为15位,CRC界定符包含一个单独的“隐性”位 。 

应答场长度为2个位,包含应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。 

帧结尾由一标志序列界定。这个标志序列由7 个“隐性”位组成。 

所以一个8字节的数据帧的位数为1(帧起始)+ 12(仲裁场)+ 6(控制场)+ 64(数据场)+ 16(CRC场)+ 2(应答场)+ 7(帧结尾)= 108位。 

报文之间存在帧间空间INTERFRAME SPACE。帧间包括间歇场、总线空闲的位场。间歇场包括3 个“隐性”的位。总线空闲的(时间)长度是任意的。所以,一个8字节的数据帧至少需要(108+3+1)* bitrate的时长,对于125kbps,需要0.896ms。

审核编辑:汤梓红

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

全部0条评论

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

×
20
完善资料,
赚取积分