5种RS485切换方向的方法及优劣势分析

时间:2026-08-18
  RS485 作为工业控制领域常见的总线之一,几乎在每个工控设备中都有应用,大家对其并不陌生。RS485 采用双半双工通信方式,其 CPU 内部根源是串口通信,串口通信区分发送 TX 和接收 RX。在同一对差分信号线上同时传输 TX、RX,就需要进行方向的控制。若方向控制时机不对,数据传送就会出现问题。
  例如在图 1、图 2 中,CPU 端的 TX 信号发送完毕后约 100μS 后方向引脚拉低,切换到接收状态。但如果 TX 信号发送完毕后 60μS 从机就回复了 RX 信号,由于此时 RS485 芯片仍处于发送状态,接收数据将会被忽略,在系统层面就体现为数据接收丢包。有些读者可能会想,只要从机回复数据晚一些,就不会存在这个问题。然而,从机一般是客户的机器,我们几乎不可能要求别人更改回复时间。比如三菱的 Fx3U PLC 作为从机时,从主机发送数据结束到从机回复数据,只用了 60μS,部分控制板甚至回复时间在 10μS 以内。
  研究 RS485 的方向切换的目标就是:RS485 总线空闲时要处于接收状态,如果有主机发送数据,则置高方向引脚,发送完成及时切换到接收状态。
 
  图 1 RS485 接口电路
 
  图 2 方向脚切换时间过长的情形
  一、RS485 方向切换的方案 1:使用反相器自动切换
  大部分的低成本 RS232 - RS485 转换器采用了这种方法。具体实现方法是:把串口的发送信号 TX 作为反相器的输入,反相器的输出则用来控制 RS485 收发器的收发控制引脚,同时在 RS485 收发器的 A/B 输出端加上上拉 / 下拉电阻,具体电路如图 3 所示。
  image
  图 3 使用反相器自动切换电路
  在空闲状态下,串口的发送信号 TXD 为高电平,经过反相器后输出低电平,使 485 芯片处于接收状态,而 RS485 总线由于上下拉电阻的作用处于 A 高 B 低的状态。当发送数据时,TXD 信号线上的低电平比特位控制 485 芯片进入发送状态,将该比特发送出去。而高电平比特位则使 485 芯片处于接收状态,由于 RS485 总线上下拉电阻把总线置于 A 高 B 低的状态,即表示发送了高电平。简单来说,这种电路在发送低电平时,485 芯片处于发送状态,而发送高电平时,485 芯片属于接收状态。
  优势:只需要增加一个反相器就可以实现,无需软件的干预,反相器可以使用一个三极管即可实现,成本十分低廉(几分钱)。
  劣势:由于上下拉电阻不可能选值太小,否则会影响正常发送的数据电平。所以这种换向模式在发送高电平时的驱动能力较弱,并且,理论上要求方向引脚要比数据先切换方向,但由于方向引脚经过了反相器,达到芯片的时间变长了,比数据晚到,所以在速率太高的情况下容易丢包。如果需要驱动多个从设备,就会显得力不从心,并且驱动能力太弱,只能短距离传输;并且传输速度不能太快,一般使用 9600bps。
  二、RS485 方向切换的方案 2:使用软件控制方向
  市面上大部分的内置 RS485 的产品基本都是采用此类方案,如图 4 中的 RS_EN 引脚。具体实现方式是:在空闲期间,RS_EN 为低电平,MCU 处于接收状态,在准备发送数据之前,MCU 会拉高 RS_EN,U1 处于发送状态,发送完毕之后,RS_EN 重新处于低电平,U1 处于接收状态。

  图 4 使用软件控制方向切换
  此类方案的关键是软件需要掌握好 RS_EN 引脚的高低电平的时机,假设发送完数据后,没有及时切换到接收状态,而此时从机又回复数据,就会引起丢包,出现文章开头图 2 中的情形。不幸的是,软件工程师的水平参差不齐,特别是在运行操作系统(Linux、WIndows 等)以后,想要十分准确控制方向引脚的高低电平已经十分困难。
  优势:无需增加任何的硬件成本,且 RS485 的驱动能力不受影响。
  劣势:依赖于软件控制方向引脚,如果运行复杂的操作系统,控制引脚的优先级不够高,或者软件的优化不够好,都会导致方向引脚的切换不及时,导致数据的丢包。并且,是否丢包还取决于从机的回复时间,测试过程不一定能够测试出来。
  三、RS485 方向切换的方案 3:使用触发器控制方向
  为了克服反相器换向的缺点,出现了一种由 RS 触发器控制的自动换向技术,如图 5 所示。这个电路的关键是反相器和 RS 触发器之间由二极管、电阻、电容组成的充放电电路。在空闲状态下,485 芯片仍处于接收状态。当 TXD 信号线上发送数据的低电平起始位时,反相器输出高电平,通过二极管为电容迅速充电,使 RS 触发器 R 端为高电平,S 端为低电平,触发器输出高电平,把 ISL3152E 置于发送状态;当 TXD 信号线转换为高电平时,反相器输出低电平,电容通过电阻缓慢放电,使得 R 端暂时仍处于高电平状态,加上 S 端的高电平状态,使触发器的输出保持前面的高电平状态,485 芯片仍处于发送状态。电容经过一段时间放电后,R 端电压转变为低电平,则触发器输出低电平,把 485 芯片置回接收状态。通过选择电阻和电容值,我们可以控制放电速度,使得一个低电平的起始位足以在整个字节发送。此类方案参数一致性非常差,实际使用的都是技高人胆大的。

 

  图 5 使用触发器切换方向
  优势:无需软件干预切换方向,驱动能力强(取决于 RS485 芯片)。
  劣势:
  增加的器件较多。
  不同的波特率需要匹配不同的 RC 参数。
  温度、老化、一致性等问题,会导致 RC 参数变化,从而导致切换时间错乱导致丢包。
  四、RS485 方向切换的方案 4:max13487 芯片
  为了克服软件参与的方向控制不确定性,美信公司发布了宣称首款支持芯片自动换向的 RS485 芯片,如图 6 所示。对比其他的 RS485 芯片,MAX16487 的 / RE 引脚有两个用途:
  /RE 为低电平时,打开 RO 方向的接收数据。
  /RE 为高电平时,芯片进入自动方向切换模式。
  一般使用时我们将 / RE 连接高电平,即自动换向模式。
  由于美信没有公布内部的逻辑原理,只描述内部有一个状态机,我们只能从外部猜测其工作原理:
  空闲模式下,数据流方向为 RO 方向;此为状态 1。
  当串口端有数据发送时,由于起始位为低电平,经过逻辑功能 D 后,A<B,经过 COM 逻辑功能且反相后,RI 为高电平。此状态为数据发送状态 2。
  经过一系列的逻辑运算(以 RI、DI 为输入,但是不知道其内部的原理);状态机检测到数据发送完毕,芯片变成接收状态 1。
  优势:由芯片自动切换方向,无需软件干预切换方向,驱动能力强,通信速率高,MAX13488 宣称可以到 16Mbps,与普通的 RS485 芯片性能一样。
  劣势:价格比普通的 RS485 芯片贵一倍以上。
  五、RS485 方向切换的方案 5:周立功芯片 RSM (3) 485PHT
  周立功公司将 RS485 的三个相关的功能模块:DC 电源、隔离、RS485 芯片三合一,封装在同一个芯片内部,由于没有内部的资料,我们无法获知其内部的逻辑功能。资料宣称速率可以达到 500Kbps,对于一般的应用足以。
  优势:由芯片自动切换方向,无需软件干预切换方向,驱动能力强,通信速率高,DC 电源、隔离、RS485 芯片功能三合一,节省板卡空间。
  劣势:价格比分立器件搭建 RS485 电路贵,且一旦损坏需要整体更换。
上一篇:一文深度解析 MOS Vb 的三种击穿

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料