如何根据DBC计算CAN与CANFD的负载率

1.1 负载概念
CAN总线的负载率, 就是指总线上所有节点在单位时间内发送的所有数据占整个总线理论带宽的比值,也就是总线实际数据传输速率与理论上能达到的数据传输速率的比值。
提示:比如在一个波特率为500Kbps的总线上,理论上每秒钟能够传输500000个BIT,而如实际上只传输了100000个BIT,那么就可以得到此刻的总线负载率为100000/500000=20%。

CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标。一般建议负载率峰值不要高于80%,平均负载率不要超过50%。当然这只是一般建议,具体根据使用场景和系统设计而定。

负载率的计算公式:

 

总线负载率=总线每秒上传输的实际bit数量/总线波特率*100%;
总线每秒上传输的实际bit数量 =[该秒内所发送的所有ID1报文的所有BIT总数A1] +…… +[An];
该秒内所发送的所有ID1报文的所有BIT总数A1 = ID1的每一个报文的BIT总数 * ID1的发送次数;

提示:在计算负载前,要理解波特率的概念。假设总线波特率为500kbps,理论上每秒钟能够传输500000个BIT。一般在汽车行业,CAN总线的波特率设置为500kps。

1.2 CAN总线的帧格式
对于CAN标准帧:
假设数据帧长度恒定为8个字节,可以得到每一个数据帧最大长度共计108bit,分别为:帧起始(1bit)、仲裁域(12bit)、控制域(6bit)、数据域(8×8bit)、循环冗余码域(15bit)、1bit分隔符、应答域(2bit)和帧结尾(7bit);

 

对于 CAN 标准帧计算该秒内所发送的所有报文的所有BIT总数:
例如CAN的一路TX message 是循环发送,是标准帧,循环时间是100 ms,那么他一秒内送的所有报文的所有BIT总数 = 1(sec)/100(ms)*108 = 1080(bit)

 

 


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

 

 

1.3 举例如何根据DBC计算公CAN 的负载率
首先查看关于某一路的 TX 与 RX message,下面的DBC文件的波特率为 500kps【可以通过软件davinci config查看,一般都是500kps】,并且是标准帧 CAN。
TX:

 

RX:

 

Mothod是NoMsgSendType的不用管,主要计算方式为 Cyclic 的。计算方式就是通过 1(sec)/time(ms)*108;

 

计算TX + RX :如上图,Tx+Rx = 29916+14904=44820 bit per second;
计算busload = (TX + RX)/500000=8.964%
CANFD 总线负载率
1.1 CANFD计算帧
对于CANFD其实是类似于CAN的,但是CAN的传输是稳定的,速度一定的,CANFD的传输速率是可变的,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps,CAN-FD的传输格式如下图所示。

 

 

所以此时如何根据DBC计算他的负载率呢?
首先不能用原本的bit来计算,而要用帧来计算,因为数据传输速率不一定,所以你也不能确定到底传输了多少bit,而根据DBC我们可以知道他的循环周期,知道循环周期,就知道他每个周期传输的数据是一帧,所以如果 cyclic = 40 ms,那么他一秒内传25帧数据。

1.2 举例如何根据DBC计算公CANFD 的负载率
首先查看关于某一路的 TX 与 RX message,下面的DBC文件的 CMD 波特率为 500kps,而数据字段的传输速率为2000kps,并且是标准帧 CAN。
TX:

 

RX:


Mothod是NoMsgSendType的不用管,主要计算方式为 Cyclic 的。1(sec)/time(ms)=循环次数=发布多少数据帧

 

 

 

计算TX + RX :如上图,Tx+Rx = 25 + 17*35 + 10 +20 =650;

计算波特率为500kps能够发送多少标准数据帧,即 500000 / 108 = 4630
提示:波特率,在信息传输通道中,携带数据信息的信号单元叫码元,单位时间内通过信道传输的码元数称为码元传输速率,简称波特率,比特率指单位时间内通过信道传输的信息量(也称为位传输速率),即单位时间内传送的二进制位数,用来表示有效数据的传输速率,用b/s 、bit/s、比特/秒,读作:比特每秒,比特率在数值上和波特率有这样的关系:

其中I为传信率,S为波特率,N为每个符号承载的信息量,而以比特为单位。计算下来,比特率约等于波特率:

所以负载率是用实际传输的帧(650) / 500波特率下总传输帧(4630) = 14.0389%。
 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CAN FD(Controller Area Network Flexible Data Rate)是一种用于高速数据传输的CAN协议扩展。CANFD可以传输更大的数据负载和更高的数据传输速,从而满足了汽车和工业领域中越来越多的高带宽通信需求。 DBC(Data Base Container)是一种用于描述CAN网络中消息、信号和网络节点的文件格式。它是一种用于存储和传输CAN网络参数和通信规约的标准化格式,通常以.dbc为文件后缀。DBC文件中包含了各个ECU的定义、消息和信号的属性、物理值的解析规则等信息。 CAN FD和DBC在实际应用中往往是配合使用的。首先,CANFD作为一种物理层协议,提供了高带宽的传输能力,可以支持更大量级的数据传输。而DBC文件则是对CAN FD网络进行描述和配置的重要工具,它记录了不同ECU上的消息和信号定义、通信规则和参数等关键信息。 利用CAN FD和DBC,我们可以进行CAN网络的设计、配置和调试。首先,我们可以使用DBC工具来创建和编辑DBC文件,定义CAN消息和信号的属性、单位、解析规则等。然后,通过CAN FD接口连接到CAN网络,将配置好的DBC文件加载到相应的节点上,使节点能够解析和发送相应的CAN消息。 在汽车和工业领域中,CAN FD和DBC制作可以帮助我们实现更高效、可靠的数据通信。CAN FD提供了更高的数据传输速和带宽,满足了多种高带宽需求;而DBC文件则是CAN网络配置的基础,通过定义消息和信号属性等信息,使得不同节点之间能够进行有效的通信。因此,CAN FD和DBC制作在现代汽车电子和工业自动化系统等领域中起着重要的作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值