CAN波特率与负载率

https://wenku.baidu.com/view/1f3ebacbb9f67c1cfad6195f312b3169a451eaa8.html

1、背景说明:

1.1为了讲清这个问题,需要先就两个概念进行说明:波特率和比特率。
波特率:单位时间内,通信通道传输码元的速率。1个波特指每秒传输1个码元的符号。(单位时间内调制状态改变的次数,单位为波特)
比特率:单位时间内,通信通道传送的二进制位数。1.2波特率和比特率的关系:
比特率=波特率*单个调制状态对应的二进制位数(比特率=波特率*log2n)由于CAN通信中的信号是二进制的,所以对CAN来说波特率和比特率相等,只是业界习惯用bps表示CAN的波特率。
2、CAN总线的通信负载率
2.1说明
负载率:CAN总线实际数据传输速率与理论上能达到的数据传输速率的比值。根据实验表明,负载率在30%的情况下,优先级高节点的平均报文传输时间和理论传输时间相差无几;而优先级低的存在20%左右的延时;当负载率达到60%的情况下,优先级最高的节点都有至少25%的延时,优先级最低的延时达到了4倍,根本无法满足实时性;当总线的平均利用率达到70%以上时,总线的通信将用可能出现拥堵的现象,极端的情况下将有可能造成错误帧的出现。
因此,负载率当然是越低越好,越能保证实时性,但是负载率太低就无法传输足够的数据,这是CAN的一个问题,在数据量大的时候无法保证实时性。一般的说法是30%左右的负载率是最好的。

2.2需要控制通信负载率的原因:

引入

CAN

理论中另外几个重要的概念:ID

仲裁、闲时发送和最大反应时间。

CAN

总线本质上是一种串口通讯,靠在时间线上对每一位的电压值进行调制来搭载不

同的信号。

因为各节点共用总线介质,

对总线的使用权界定就至关重要。

只有在总线空闲时,

发送

节点才能向总线上发送帧起始及后续帧

ID,

只有在帧

ID

赢得仲裁时,

发送节点拥有总线控

制权进而向总线发送报文剩余部分,

在仲裁中失败的节点让出总线控制权等待下次总线空闲

时继续尝试发送。

即如果某一个节点需要发送一帧报文,它需要同时满足两个条件:

1、总线是空闲的,即目前没有任何节点在发送报文,在总线上表示为节点监测到

11

个连续的隐性位;

2、所需发送的报文赢得

ID

仲裁,即报文优先级较高。

一个报文在试图发送时,

必须满足上述两个条件才能完成发送。

这里的问题就是:

如果

一个优先级相对较低的节点向外发报文时,

会因为不断地在仲裁中失败而导致发送延迟。

果延迟过大会引起通讯失败。

负载率越高,

代表需要发送的数据越多,

相对来说低优先级节

点发生通讯延迟的概率越大。

引入

CAN

理论中另外几个重要的概念:ID

仲裁、闲时发送和最大反应时间。

CAN

总线本质上是一种串口通讯,靠在时间线上对每一位的电压值进行调制来搭载不

同的信号。

因为各节点共用总线介质,

对总线的使用权界定就至关重要。

只有在总线空闲时,

发送

节点才能向总线上发送帧起始及后续帧

ID,

只有在帧

ID

赢得仲裁时,

发送节点拥有总线控

制权进而向总线发送报文剩余部分,

在仲裁中失败的节点让出总线控制权等待下次总线空闲

时继续尝试发送。

即如果某一个节点需要发送一帧报文,它需要同时满足两个条件:

1、总线是空闲的,即目前没有任何节点在发送报文,在总线上表示为节点监测到

11

个连续的隐性位;

2、所需发送的报文赢得

ID

仲裁,即报文优先级较高。

一个报文在试图发送时,

必须满足上述两个条件才能完成发送。

这里的问题就是:

如果

一个优先级相对较低的节点向外发报文时,

会因为不断地在仲裁中失败而导致发送延迟。

果延迟过大会引起通讯失败。

负载率越高,

代表需要发送的数据越多,

相对来说低优先级节

点发生通讯延迟的概率越大。

引入CAN理论中另外几个重要的概念:ID仲裁、闲时发送和最大反应时间。CAN总线本质上是一种串口通讯,靠在时间线上对每一位的电压值进行调制来搭载不同的信号。
因为各节点共用总线介质,对总线的使用权界定就至关重要。只有在总线空闲时,发送节点才能向总线上发送帧起始及后续帧ID,只有在帧ID赢得仲裁时,发送节点拥有总线控制权进而向总线发送报文剩余部分,在仲裁中失败的节点让出总线控制权等待下次总线空闲时继续尝试发送。即如果某一个节点需要发送一帧报文,它需要同时满足两个条件:
1、总线是空闲的,即目前没有任何节点在发送报文,在总线上表示为节点监测到11个连续的隐性位;

2、所需发送的报文赢得ID仲裁,即报文优先级较高。
一个报文在试图发送时,必须满足上述两个条件才能完成发送。这里的问题就是:如果一个优先级相对较低的节点向外发报文时,会因为不断地在仲裁中失败而导致发送延迟。如果延迟过大会引起通讯失败。负载率越高,代表需要发送的数据越多,相对来说低优先级节点发生通讯延迟的概率越大。
实际上30%的数据也只是一个经验数值,历史很悠久的一个经验数值。从本质上来看,限制负载率最终是要保证相对低优先级节点的通讯实时性,如果能通过网络及节点优化等手段满足每个节点的最大响应时间满足要求,负载率只是一个无关紧要的参数。
3、相关计算:
CAN发送8字节的数据扩展帧,实际总线上传输数据还包括4个字节的帧ID,以及约6个节的帧头尾和校验。即一条CAN数据至少有18个字节,因此
针对1Mbps波特率,1S传输的帧数:
1M/8(位/字节)/18=7K

考虑到30%的负载率,1S传输的帧数为:2.1K针对125Kbps波特率,1S传输的帧数:
125K/8(位/字节)/18=868
考虑到30%的负载率,1S传输的帧数为:260

你可能感兴趣的:(TI_DSP)