在工业控制领域,RS485 通信协议凭借其出色的性能,得到了极为广泛的应用。RS485 采用差分物理信号,在电磁环境复杂的工业现场,展现出强大的抗干扰能力。对于专注于应用软件开发的工程师而言,使用 RS485 进行数据传输时,往往只关注串口的数据收发器。然而,在硬件层面,RS485 通信的数据收发需要遵循特定的机制。接下来,我们将详细探讨 RS485 通信的数据收发机制。
RS485 总线作为工业领域常用的通信方式,具备以下显著特点:
- 信号电平与使能控制:收发器输出 A、B 之间的电平为 +2V~+6V 时,表示逻辑 “1”;为-6V~-2V 时,表示逻辑 “0”。相较于 RS232,其信号电平降低,降低了损坏接口芯片的风险。此外,还有 “使能” 控制信号,可使收发器处于高阻状态,切断与传输线的连接,便于灵活控制通信状态。
- 高灵敏度接收:接收器的输入灵敏度为 200mV,即当接收端 A、B 之间的电平相差 200mV 时,即可输出逻辑信号,保证了数据接收的准确性。
- 高速远距离传输:RS485 具有较高的传输速率,可达 10Mbps,同时传输距离能达到 1200m,满足了工业现场不同距离的通信需求。
- 多站点连接能力:RS485 总线允许挂接多达 128 个收发器,能够建立大规模的设备网络,实现多个设备之间的通信。
- 共模电压范围要求:RS485 收发器的共模电压范围为-7V~+12V,只有在该范围内,整个网络才能正常工作。若网络线路中共模电压超出此范围,会影响通信稳定性,甚至损坏接口。
RS485 属于半双工总线,在实际使用中,通常采用主机轮询或令牌传递的方法来分配总线控制权。RS485 设备需要进行发送和接收方向的转换,常见的控制方法有以下两种:
程序换向是常用的 RS485 收发换向方法。通过 MCU 的一个 I/O 端口控制 RS485 收发器件的收发使能引脚,平时使 RS485 收发器件处于接收状态。例如,使用 TI 的 SN65LBC184 芯片,其速率可达 250Kbps。当需要发送数据时,MCU 将 RS485 收发器件引脚(网络 RS485_EN2)置于发送状态,完成数据发送后,再将其切回接收状态。这种方式简单易行,无需增加额外成本,被广泛应用。

图 1 程序换向控制示例
在某些情况下,如采用工控主板或板进行二次开发时,可能没有足够的 I/O 端口,或者开发平台的底层驱动未对外开放,难以进行二次开发,此时程序换向方法无法实现,需要采用自动换向技术。
自动换向是指使能引脚不需要单独的 I/O 口控制,而是由发送引脚发送数据时顺便控制。可以在使能处加一个反相器来实现。在空闲状态下,串口的发送信号 TXD2 为高电平,经过反相器后输出低电平,使 SN65LBC184 处于接收状态,RS485 总线由于上下拉电阻的作用处于 A 高 B 低的状态。当发送数据时,TXD2 信号线上的低电平比特位控制 SN65LBC184 进入发送状态,将该比特发送出去;高电平比特位则使 SN65LBC184 处于接收状态,由 RS485 总线上下拉电阻把总线置于 A 高 B 低的状态,表示发送了高电平。

图 2 自动换向 - 反相器控制示例
反相器也可以用三极管代替,工作原理与加反相器相同。但这种方法在发送高电平时的驱动能力有限,会限制通讯距离,一般适用于距离较近的场合。

图 3 自动换向 - 三极管控制示例
为了省去控制的麻烦,还可以采用专门的、带有 AutoDirection 功能的 485 芯片,如 MAX13487E,它省去了常用的 485 使能信号,简化了设计电路。

图 4 带有 AutoDirection 功能的 485 芯片示例