查看: 125|回复: 0

[经验] RS-485总线电平异常解决方案解析

[复制链接]

主题

好友

2151

积分

进士

  • TA的每日心情
    无聊
    2018-11-16 10:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2019-11-21 08:54:37 |显示全部楼层
    1.jpg

    不知道大家是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接失败等情况。出错的原因是什么?

    RS-485总线是具有结构简单、通信距离远、通信速度高、成本低等优点,广泛应用于工业通讯、电力监控以及仪器仪表等行业。若总线上接有终端电阻,则在总线空闲状态时,RS-485总线AB差分电压可能处于门限电平(±200mV)之内,这时可能会导致通信出错,那么,出错的原因是什么?MCU接收到的数据会发生什么样的变化?

    数据出错的原因
    如图1所示为8位数据位无校验位的UART时序图,当使用UART进行通信时,MCU在检测到起始位后开始接收其后的数据。
    数据出错的原因.jpg
    图1 无校验位,8位数据位,串口时序图

    如图2所示为STM32串口外设检测到起始位的条件,当检测到下降沿(3个高电平+1个低电平)并且采样序列1和采样序列2均为0时,STM32检测到一个起始位。

    每个位采样16次,采样点的间隔时间为tbit/16,tbit为每个位的时间,例如通信波特率为115.2kbps,则tbit=1/115.2k=8.68us,则采样点的间隔时间为8.68us/16=0.5425us。
    通信波特.jpg
    图2 STM32串口外设检测到起始位的条件

    下面以RSM485PCHT的门限电平为例进行说明,当AB差分电压处于±200mV之内时,模块RXD引脚输出状态不确定。

    当总线变为空闲时,若RXD引脚输出低电平,则可能导致MCU接收到错误数据或MCU在正常数据后误接收1个0x00。
    低电平.jpg
    图3 RSM485PCHT门限电平

    数据发生了什么变化?
    如图4所示,收发器1在AB差分电压处于±200mV门限电平之内时输出高电平,收发器2在AB差分电压处于±200mV门限电平之内时输出低电平,可以看出,收发器2可能导致MCU接收到错误的数据,并且在数据后误接收到1个0x00数据。
    数据发生.jpg
    图4 数据后多0x00

    如图5所示,若总线上持续存在数据信号或连续发送多个字节数据,在数据之间存在的空闲状态可能会被收发器2识别为1个起始位,从而导致数据连续错误。
    致数据连续错误。.jpg
    图5 数据连续错误

    解决方案
    总线空闲时若AB差分电压处于门限电平之内,则可能导致数据出错,可以使用如下方法避免总线空闲时AB差分电压处于门限电平之内。

    方案一:组网距离不长,总线信号无反射问题或反射较小,此时可不增加终端电阻以提升总线幅值电平,具体的幅值变化如下图6所示。
    幅值电平.jpg
    图6 终端电阻对总线电平影响

    方案二:组网距离偏长,总线信号当前已存在反射需增加终端电阻解决反射问题,面对此类应用可使用致远电子RSM(3)485PCHT模块,RS-485接口设计时可通过外置一个较小值的上下拉电阻调节空闲状态时的电压值,使电平处于门限电平外,具体的幅值变化如下图7所示。
    电压值.jpg
    图7 RSM(3)485PCHT实物及应用连接图

    方案三:组网距离偏长,总线信号当前已存在反射需增加终端电阻解决反射问题,面对此类应用同样可使用致远电子RSM(3)485ECHT模块,RSM(3)485ECHT具备极高的总线兼容性门限电平为-40mV~-20mV,具体如下图8所示,在总线电平被终端电阻拉低时(最坏情况总线高电平幅值为0V)仍可识别总线电平,保证通讯的稳定性。
    总线电平.jpg
    图8 RSM(3)485ECHT实物图及门限电平参数

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|电路城

    GMT+8, 2019-12-12 11:51 , Processed in 0.077239 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部