RS-485应用异常
某储能客户在使用ZLG的全隔离RS-485收发芯片SM4500过程中,时常会出现数据不稳定情况,如下图 1,客户设备与不同的RS-485设备通讯时,有的设备通讯稳定,有的设备则时不时会收到异常电平。
图1 SM4500应用简图
经过测试发现客户板卡RS-485通道在空闲时,总线电平处于0电位。如图 1所示,RS-485标准规定了当AB总线间电平处于-200mV~+200mV时,接收器端(RXD)会接收到不确定电平(为解释方便,下面统称“门限电平”)。而不同的RS-485设备,门限电平存在不同,SM4500门限电平为-10mV ~ -200mV,当与门限电平为-200mV ~ +200mV的设备通讯时,就有可能出现异常,那么如何避免这一问题发生?
图2 RS-485 接收电平示意图
总线电平不确定状态原因
1. 少不了的上下拉电阻
如图 3、图 4,为SM4500通讯的总线波形,发送数据时(非空闲状态),总线电平最大值为3.28V,最小值为-2.96V;空闲状态时,总线电平最大值为240mV,最小值为-160mV,此时总线已经处于不确定状态。
图3 SM4500非空闲时2Mbps总线波形
图4 SM4500空闲时总线波形
根据SM4500手册的典型连接电路图,在总线上增加上下拉电阻后,总线电平被拉高,此时已经远大于不确定状态电压,如图 6。可见在RS-485应用过程中,上下拉电阻是必不可少的。
图5 SM4500典型连接电路图
图6 SM4500空闲时波形(设置上下拉电阻100kΩ)
2. “多余的”终端电阻
想必各位工程师都知道终端电阻的作用是消除信号反射,因此实际应用中往往都会默认设置,但其实并不是所有情况都需要终端电阻,有时终端电阻反而会引入一些问题。前面说到总线空闲处于不确定状态时,可以通过设置上下拉电阻避免,但在接入终端电阻后,总线电平又会进入到不确定状态,如图 7。这又怎么解决呢?
图7 SM4500空闲时波形(设置上下拉电阻100kΩ、60Ω终端电阻)
如何使总线不处于门限电平内
我们先来看下为什么在接入终端电阻后,总线电平又会进入到不确定状态。SM4500总线端输入阻抗高达上百kΩ,在设置终端电阻后,忽略内阻的影响,假设总线上各节点的SM4500的输出电压VISOOUT相同,得到总线空闲时电平计算公式如下,通讯等效示意如图 8,其中R上、R下为总线的上下拉电阻,R为终端电阻。
图8 SM4500通讯等效示意图
根据上述公式,计算图 7总线空闲电压VAB=VISOOUT*60Ω/(100kΩ+100kΩ+60Ω),这里VISOOUT可取5.1V,可得VAB=1.53mV(与实测波形相符),处于RS-485标准规定的门限电平内。通过公式发现,只要减小上下拉电阻就能提高总线空闲时的电平,因此得到如下公式:
所以只要上下拉电阻<735Ω,空闲时的总线电平就能>200mV。例如取R上=510Ω进行验证,此时计算VAB=283mV,实测总线电平如图 9,光标测量总线电平为276mV(考虑到有线阻和测量的误差,因此符合理论值)。另外,上下拉电阻是不是越小的话,会越好呢?其实不然,上下拉电阻越小总线空闲状态差分电压保持的也越高,此时,终端电阻和上下拉电阻的功耗也越大,对RS-485收发器的驱动能力要求也越高,当超过RS-485收发器的驱动能力时,也会导致通信失败(详细分析可查看往期文章《详解RS-485上下拉电阻的选择》)。
图9 SM4500空闲时总线波形(设置上下拉电阻510Ω、60Ω终端电阻)
如图 10,SM4500的门限电平为-10mV ~ -200mV,实际上要比RS-485标准规定的范围小,也就是说总线空闲时更不容易进入到门限电平内。根据上下拉电阻计算公式,当VAB电压趋近于0时,上下拉电阻会趋近于无穷大,换言之,SM4500理论上不设置上下拉电阻也能正常通讯。但实际上使用SM4500的设备往往会与不同的RS-485设备通讯,加上总线易受干扰产生波动,因此为了总线兼容性更好,设置上下拉电阻也是必须的。
图10 SM4500真值表
总结
1.RS-485总线网络中设置上下拉电阻是必须的,这样可以避免总线空闲时进入门限电平内;
2.如果总线设置终端电阻,此时需要根据实际情况调整上下拉电阻大小,必要时适当加大终端电阻,以避免总线空闲时处于门限电平内;
3.SM4500门限电平范围小,总线空闲时更不容易进入门限电平内,兼容性好。