常见的RS-485自动收发电路如图1所示,电路的逻辑真值表如表1所示。
当TXD为低电平时,DE和RE为高电平,RS-485收发器处于发送状态,AB处于低电平,即向其他节点发送低电平信号; 当TXD由低电平变为高电平时,DE和RE变为低电平,RS-485收发器处于接收状态,此时AB引脚处于高阻状态,R3将B引脚拉至GND,R4将A引脚拉至VCC,此时AB为高电平,即向其他节点发送高电平信号。
由于TXD为高电平时,RS-485收发器处于接收状态,因此只需将TXD保持为高电平即可接收数据,即自动收发电路发送高电平时同时也是接收状态。
图1 RS-485自动收发示意图
RS-485自动收发通信速度较慢的原因主要有两个:
1.1 若使用图1所示的自动收发电路,三极管的关断时间较长(主要是由于三极管关断时的存储时间较长),图1中所示参数的三极管反相电路,开启延时时间如图2所示为10.2ns,关断延时时间如图3所示为1.14μs,因此若TXD发送低电平,DE&RE引脚较长时间后才会升至高电平,发送低电平的延时时间较长,图1所示电路发送低电平信号延时时间如图4所示为1.468μs。
2. 高波特率通信时存在通讯异常风险
如图6所示,TXD变为高电平,DE&RE引脚降为低电平,AB差分电压缓慢上升,由于此时RS-485收发器已经处于接收状态,在AB差分电压上升至RS-485收发器门限电平前RXD引脚会出现到一段时间的低电平信号,例如门限电平为-200mV~-50mV的收发器,AB差分电压上升至-50mV前RS-485收发器均可输出低电平,此低电平信号的时间与AB差分电压上升时间和RS-485收发器的接收延时有关。
由于串口一般是将每个位分成16份,检测中间的3份的电平信号从而确定此位的信号高低,因此若此低电平信号保持至每个位的信号检测时,则会使MCU接收到一个起始位,从而接收到错误的数据,因此这个问题同样限制了高速通信的应用并且降低了通信的可靠性。
图6 TXD发送高电平信号,RXD接收到一段低电平信号
在高静电或浪涌环境下,需要增加外围保护电路来保护RS-485收发器,若RS-485总线上所加保护电路的结电容较大,则会影响通信波形的质量甚至导致通信异常,使用高结电容保护电路的通信波形如图8所示,通信波形畸变严重,影响了通信质量。
图8 受高结电容影响的波形
图9 低结电容保护电路
自动收发电路发送高电平时总会有一段时间或全部时间是由上下拉电阻进行驱动的,若要提高发送高电平信号的驱动能力,需要使用较小阻值的上下拉电阻,由于RS-485收发器本身驱动能力的限制,上下拉电阻也不能选择太小,一般总线上所有节点的上下拉电阻并联值不能小于375欧,因此自动收发电路发送高电平信号的驱动能力非常有限。RS-485总线增加终端电阻后,发送高电平的AB差分电压是由终端电阻与上下拉电阻分压所得,所以此时发送的高电平信号幅值很低,因此使用自动收发RS-485收发器时,尽量不要使用终端电阻。
由于自动收发电路驱动能力有限,其应用的通信距离也受到了限制。使用长度为8m和200m的双绞线的通信波形如图11和图12所示,通信距离8m时,通信波形良好且通信正常,通信距离为200m时已经不能正常通信。因此在通信距离较长时,可在自动收发RS-485收发器外部加上下拉电阻和终端电阻来改善通信波形,增加后的通信波形如图13所示,波形得到很大的改善,可以正常通信,但发送高电平的信号幅值仍旧较低。
图11 通过8m双绞线通信波形
若对通信距离有较高要求,不推荐使用自动收发模块,可选用ZLG致远电子具有收发控制功能的隔离RS-485收发器RSM485ECHT或RSM3485ECHT,通信距离可达1200m。通信速度500kbp,通信距离1200m,总线首尾各加120欧终端电阻的通信波形如图14所示,此时RSM485ECHT发送信号的幅值可达2.6V,极大地提高了通信的可靠性。
图14 通信距离1200m,总线首尾加终端电阻,RSM485ECHT发送波形
表2 产品推荐应用情况说明