知识分享 | 什么是CAN总线上的波特率

本文详细解释了通信领域的码元传输速率(波特率)概念,着重介绍了CAN总线中的比特率与波特率的关系,以及如何计算总线负载和帧传输时间。还探讨了波特率对CAN总线长度的影响及安全验证问题。
摘要由CSDN通过智能技术生成

在广义的通信领域

单位时间内传输的“码元数”称为“码元传输速率”,俗称波特率,也称为调制速率、波形速率或符号速率,它的单位是波特(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 Mbps30 m~ 40m
800 kbps50m
500 kbps100m ~ 110m
250 kbps240m ~ 250m
125 kbps500 m

安全验证 - 知乎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN总线是一种广泛应用于汽车、工业控制和通信领域的通信协议,上位机编写是指通过编程实现对CAN总线的控制和数据处理。在CAN总线上位机编写的过程中,需要遵循以下几个步骤: 首先,搭建开发环境。选择合适的开发工具和编程语言,如C/C++或LabVIEW,并确保相应的编程库已正确安装。 其次,进行CAN总线的初始化设置。这包括设置CAN总线波特率、模式以及过滤规则等。通过调用相应的函数库或API,将CAN总线与上位机建立起连接。 接下来,进行CAN信息的发送与接收。通过编程实现CAN数据的发送和接收功能,可以通过编写发送函数来向CAN总线发送数据,以及通过接收函数来接收CAN总线上的数据。此外,还需要对接收到的CAN数据进行解析和处理,以便在上位机程序中正确显示或使用。 然后,进行与其他设备的通信。CAN总线上可能存在多个设备,需要通过编程实现与这些设备之间的通信。可以通过编写适当的协议或通信接口,实现上位机与其他设备之间的数据交换和互动。 最后,实现上位机程序的功能。根据具体需求,可以编写上位机程序的其他功能部分,如数据记录、数据分析、故障诊断等。这些功能的实现需要与CAN总线的数据交互,并对相应的数据进行处理。 综上所述,CAN总线上位机编写涉及到开发环境搭建、CAN总线初始化设置、CAN信息的发送与接收、与其他设备的通信以及其他功能的实现等多个方面。这需要具备一定的编程和通信知识,并充分理解CAN总线的原理和协议。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值