在广义的通信领域
单位时间内传输的“码元数”称为“码元传输速率”,俗称波特率,也称为调制速率、波形速率或符号速率,它的单位是波特(Baud,symbol/s,码元数每秒)。
一个码元可以携带的信息量取决于它有多少个离散状态,即码元的“进制数”。假设“进制数”为 M,则该码元携带的信息量的二进制位(bit)数即为 log₂M。注意:Baud 这个词本身就包含了速率的意思,因此不需要用 Baud rate 来表示波特率。虽然单位“波特”本身就已经是代表每秒的调制数,以“波特每秒”为单位是一种常见的错误,但是在一般中文口语化的沟通上还是常以“波特率”来描述“波特”(Baud)。
在CAN总线领域
比特率又称“二进制位速率”,是指单位时间内传送的比特(bit)数,基本单位为 bps、bit/sec、bit/s 或 b/s(比特每秒,bit per second)。在CAN总线物理层,只有显性0和隐性1这两种状态,所以通过 CAN 传输的码元是二进制码元,此时波特率和比特率在数值上是相等的。这就是为什么这两种说法都经常出现。严格来讲,在CAN总线领域,总线速度应该用比特率来表示。不过因为二者数值上相等,使用波特率也是一种约定俗成。但需要注意的是,在其他领域不能随便把两者混为一谈。
对于串行多主 CAN 总线,如果波特率为“500kbps”,则 CAN 上的该端口每秒最多可传输500000位。
CAN总线支持的几个常用波特率:
● 125kbps
● 250kbps
● 500 kbps(大多数汽车应用的标准配置)
● 1000 kbps(1Mbps)
各式各样的软件允许用户根据 CAN 总线的需要来设置总线速度。下面的图片来自 Influx 的 DiaLog 软件,用户可以自行选择总线速度(从各种可用的选项中选择)。
某一波特率下每个CAN数据帧占用的时长是多少?
使用简单的公式,人们可以计算出在CAN 总线上传输一个帧所需的大概时间。
举例来说,1个CAN 数据帧大约包含125比特(包含填充位)。
1 假设比特率=250kbps
位时间=1/位速率=1/(250*1000)s=4μs
因此,在使用250kbps时,1位在总线上的传输时间为4μs
因此,传输1帧的大致时间是(4 µs/bit * 125 bit)=500 µs
2 假设比特率=500kbps
位时间=1/位速率=1/(500*1000)s=2µs因此,当使用500kbps时,1位在总线上的传输时间为2µs因此,传输1帧的大致时间是(2µs/bit * 125 bit)=250 µs
CAN总线负载率计算公式
总线负荷以百分比表示。
总线负载% = (每秒需要发送的字节数/秒)*(8位/字节)/(波特率bps)*100%。
假设一秒钟内要发送的字节数为1000
在250kbps的情况下,总线负载%为:-
1000*8/250000*100% = 3.2%
同样,在500kbps时,总线负载%为:-
1000*8/500000*100% = 1.6%
然而,在较高的信息优先级下,通常可以实现70%到80%的总线使用率。
举个例子,在给定的秒数内在总线上传输给定数量的帧。除非特别定义,否则每条报文(32位数据)的平均位数假定为76位(可能有所不同)。
● 5ms -5帧
1/ 0.005 * 5 * 76 = 760,00
● 10ms -5帧。
1 / 0.010 * 5 * 76 = 38,000
● 100ms - 5帧
1 / 0.100 * 5 * 76 = 3800
每秒内总位数=760,00+38000+3800=117800
波特率为250 kbps时的总线负载=117800/250000*100%=47.12%
波特率为500 kbps时的总线负载=117800/500000*100%=23.56%
在下面的截图中,我们可以看到 Influx 的Rebel CT/LT,通道HS 的活动日志和跟踪查看器。在这里可以看到比特率和总线负载等参数。此外,Rx/Tx 信息和错误帧(总数、每秒和负载)也可以轻松查看。
波特率是如何影响 CAN 总线长度的?
对于 CAN 总线来说,波特率和线缆的长度是成反比的,波特率越高,线缆的长度越短。
波特率 | 线缆长度 |
1 Mbps | 30 m~ 40m |
800 kbps | 50m |
500 kbps | 100m ~ 110m |
250 kbps | 240m ~ 250m |
125 kbps | 500 m |