良许Linux教程网 干货合集 RS485自收发实现方案,典型应用电路及问题经验总结

RS485自收发实现方案,典型应用电路及问题经验总结

image-20240312202512883
image-20240312202512883
image-20240312202515499
image-20240312202515499
image-20240312202517911
image-20240312202517911

以上三幅图大致展示了485芯片的收发特性,这里涉及一个重要概念。

RS485具有出色的抗噪性和抗干扰能力,能够实现远距离传输,并支持多点通信,因此在工控行业被广泛选用作串行接口。485标准规定了2线制、半双工、多点通信的电气特性。其采用两线差分信号传输数据,有效抵抗共模干扰。由于工作在半双工模式下,通信时需要进行收发状态的切换。目前,常见的485收发切换方案主要有以下几种:

  1. 传统RS485电路(带收发控制脚非隔离RS-485电路)
    传统的485应用电路如下图所示,采用3线控制,包括UART_RXD、UART_TXD和收发控制端UART_CON。
image-20240312202520912
image-20240312202520912
控制策略如下:UART_CON为低电平,485处于接收状态;UART_CON为高电平,485处于发送状态。通过切换UART_CON的电平来达到485收发状态的切换。

2.硬件自收发切换 非隔离RS-485电路

image-20240312202523999
image-20240312202523999
带收发控制脚的485在编程时需要切换控制端电平,增加了程序的复杂度。为了编程方

便,常常将电路改为如上图所示的自动收发电路。这种采用分立元件搭建非隔离自动收发

RS485电路的优点在于控制简单,收发控制脚不需要程序干预。

虽然采用分立元件搭建的非隔离RS485自动收发电路解决了带收发控制脚非隔离RS485电路

编程上操作复杂的问题,但受三极管切换速度、收发器内部接口阻抗等影响,分立元件搭

建的自动收发切换电路降低了系统稳定运行的最大波特率。

3.收发切换隔离RS485电路

image-20240312202526576
image-20240312202526576
带有隔离电路的485是最稳定的设计,需要选择隔离485芯片以及隔离电源,此方案成本相对于前两种方案会高很多。

下面介绍一种485硬件收发切换电路实例。
image-20240312202529217
image-20240312202529217
485芯片采用MAX485芯片,电路使用NPN三极管开切换收发。控制原理是:MCU的UART的TX

和RX引脚需要连上拉电阻(TX和RX在没有通信时均是高电平),防止刚上电TX和RX引脚电

平不稳定引起收到扰乱数据。A上拉电阻B下拉电阻,终端并联120欧姆电阻,D10、D11、

D12为三个防雷防浪涌的TVS管。

接收:默认没有数据时,UART_TX为高电平,三极管导通,MAX485芯片RE低电平使能,RO

接收数据使能,此时从485AB口收到什么数据就会通过RO通道传到MCU,完成数据接收过

程。

发送:当发送数据时,UART_TX会有一个下拉的电平,表示开始发送数据,此时三极管截

止,DE为高电平发送使能。当发送数据‘0’时,由于DI口连接地,此时数据‘0’就会传

输到AB口 A-B0传输‘1’,完成高电平的传输。

PS: 此时有人肯定也会有疑惑,发送数据‘1’,三极管导通RE低电平有效应该是接收使

能,为什么芯片会是高阻状态?

因为UART发送收据会有一定的格式,数据均以“位”为最小单位进行传输。在收发数据之

前,UART之间要约定好数据的传输速率(即每位所占据的时间,其倒数为波特率)、数据

的传输格式(有多少数据位、是否有校验位、奇校验还是偶校验、是否有停止位)。平时

数据线处于“空闲状态”(1状态)。当发送数据时,TX由‘1’变为‘0’维持1位的时

间,这样收方检测开始位后,再等待1.5位时间就开始一位一位的进行数据传输。意思是

说,已经确定好发送状态,电路发送‘1’此时RE有效,接收有效但有由于它处于发送阶

段,此时芯片会处于高阻状态。

三种常用电路如下:

1、基本的RS485电路

image-20240312202532419
image-20240312202532419

上图是最基本的RS485电路,R/D为低电平时,发送禁止,接收有效,R/D为高电平时,则发送有效,接收截止。上拉电阻R7和下拉电阻R8,用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,提高RS485节点与网络的可靠性,R7,R8,R9这三个电阻,需要根据实际应用改变大小,特别是使用120欧或更小的终端电阻时,R9就不需要了,此时R7,R8使用680欧电阻。正常情况下,一般R7=R8=4.7K,R9不要。

图中钳位于6.8V的管V4,V5,V6,都是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。另外图中的L1,L2,C1,C2为可选安装原件,用于提高电路的EMI性能.

2、带隔离的RS485电路

image-20240312202535117
image-20240312202535117

根本原理与基本电路的原理相似。使用DC-DC器件可以产生1组与微处理器电路完全隔离的电源输出,用于向RS485收发器提供+5V电源。电路中的光耦器件速率会影响RS485电路的通信速率。上图中选用了NEC的光耦PS2501,受其影响,该电路的通讯速率控制在19200bps下。

3、自动切换电路

image-20240312202537721
image-20240312202537721

上图中,TX,RX引脚均需要上拉电阻,这一点特别重要。

接收:默认没有数据时,TX为高电平,三极管导通,RE为低电平使能,RO收数据有效,MAX485为接收态。

发送:发送数据时,TX会先有一个下拉的电平(起始位-由高向低),表示开始发送数据,此时三极管截止,DE为高电平发送使能。当发送数据“0”时,由于DI接口相当于接地,此时数据“0”就会传输到AB扣,A-B0传输“1”,完成高电平的传输。

注意:这里面有个疑惑,发送数据“1”,三极管RE低电平有效,应该是接收使能,为什么芯片是高阻态呢?这是因为UART发送数据是有一定格式的,TX和RX数据均以“位”为最小单位进行传输,在发送数据之前,UART之间要约定好数据传输速率,即波特率,数据传输格式(数据位,校验,停止),平时数据线处于空闲状态(1状态),当发送数据时,TX由“1”变为“0”维持1位的时间,这样接收方检测到开始位后,再等待1.5位时间就开始一位一位的进行数据传输了,也就是说,已经确定好发送状态,电路发送“1”时RE虽然有效,但是由于它处于发送阶段,芯片也不会收,即芯片处于高阻状态。

问题经验总结:

问题:485总线在通讯中,当某一节点出现故障时,其他一些节点会被影响,出现通信故障。

解决方法:在每个节点的AB线上串入一个22欧姆左右的电阻,同时协议的编制一定要考虑到故障侦测和报警。

问题:当485总线处于开路(485收发器与总线断开)或者空闲状态(485收发器全部处于接收状态,总线没有收发器进行驱动)时,485总线的差分电压基本为0,此时总线就处于一个不确定的状态。

解决方法:在485总线上增加上下拉电阻(通常A接上拉电阻,B总线下拉电阻,一般为1K左右)。

理论依据:根据RS-485标准,当485总线差分电压大于+200mV时,485收发器输出高电平;当485总线差分电压小于-200mV时,485收发器输出低电平;当485总线上的电压在-200mV~+200mV时,485收发器可能输出高电平也可能输出低电平,但一般总处于一种电平状态,若485收发器的输出低电平,这对于UART通信来说是一个起始位,此时通信会不正常。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部