如果你是一个工控人并且经常与通信打交道,那无源RS232转RS485驱动差这个问题你迟早会遇到。
之前在小公司做过一个产品,是一个无线采集器,专门为一个客户定制的,客户只需要rs232接口,做完之后投放市场运行三年,发货量超过10W,基本没有反馈过什么问题。后来客户想扩展到其他设备上,该设备没有RS232接口,经过工程部推荐一款RS232转RS485的设备,用了该转换器后,原计划RS485总线上需要带载10个的,只能带载4个,我们以为是客户买了山寨转换器的原因,又推荐客户购买品牌的转换器,可是问题依旧,说明原因没有找到,客户急需解决。
原因分析:
既然是带载数量减少,那肯定是由于驱动能力不足,于是时间我们就想到了拆解这种无源RS485转换器,先搞清楚其内部的设计原理。我们从市面上买了5款转换器,有山寨的,也有品牌的。将其拆解,并分析其内部的原理图。由于其内部结构比较简单,原理图很快就画出来,无源说的是不用外接电源,电源还是要有来源的,主要就是如何窃电的过程,经过分析,主要有两种方案:
种窃电方法:DB9的RTS、CTS、DSR窃电方法
如下图1所示,DB9端口的RTS、CTS、DSR(pin6、7、8)三个引脚一般在RS232转换为RS485过程中并不需要,并且一般的计算机都遵循RS232-C标准,采用DB9的标准接口,将计算机的RS232转换为RS485的时候,这种窃电方式是可行的。用户必须要注意,RTS、CTS、DSR三个引脚的电压范围是-15V~15V,这三个引脚为无效状态时,电平是-15V,必须要将上位机配置这三个引脚为有效,即正电平,才能实现模块的供电。
优点:
从DB9窃电,无需额外的供电电源。
缺点:
1、必须要对串口进行初始化,才能确保RTS、CTS、DSR三个引脚配置为有效状态,才能输出正电平,才能保证电平高于7V;
2、部分没有这三个引脚的MCU则无法采用这个方案。
▲ 图1使用RTS、CTS、DSR窃电的方案
第二种窃电方法:DB9的RTS、CTS、DSR、TX任意引脚窃电
种窃电方法只能使用正电源,并且需要对串口进行初始化,在很多场合是没有使用到RTS、CTS、DSR三个信号的,并且要求RTS、CTS、DSR时刻输出正电平也不现实。于是,市面上就出现了第二种窃电的办法,窃电的原理主要有2大模块组成,模块是负压电荷泵模块,负责将负压转换为正电压,第二模块为降压模块,负责将升压后的电平稳定在3.3V(或者5V)。四个信号引脚RTS、CTS、DSR、TX均可以给模块供电,克服了方案1中的不能负压、必须初始化串口、必须具备RTS、CTS、DSR等缺点。
优点:
可以接受正负压,无需初始化串口,RTS、CTS、DSR、TX任意一个信号即可供电。
缺点:
升压模块较复杂,单纯只有TX信号供电时,可能存在供电不足。
▲ 图2使用RTS、CTS、DSR、TX窃电的方案
解决方案:
既然是由于供电不足导致的带载能力差,那直接就更换供电方案就可以了。我们选择了有源RS485转换器,就是模块内部的电源是正儿八经从外面端子引进来的,而不是从信号线上窃电得到的。如下图4所示,外置端子连接3.3~10V电源,经过稳压模块后,分别给RS485侧供电和隔离电源供电,隔离电源输出给RS232侧供电。从而保证整个设备的供电正常。
▲ 图3有源RS485转换模块内部方案拆解
经过更换方案后,在客户现场试用,多可以接20个RS485设备(客户的走线有点长),长期运行了半年,基本无故障反馈。
从技术难度上看,无源RS485比有源RS485的难度更大,因为DB9的标准规范里面没有电源引脚,无源RS485需要从RTS、CTS、DSR、TX引脚上取电,RS232电平有正有负,还需要将负电压转换为正电压,大部分的非PC机类的控制器,RS232基本不会引出RTS、CTS、DSR信号,仅凭TX信号供电就可能供电不足,并且,无源RS485由于产品定位低端,几乎没有厂家投入过多的产品防护,例如过流、过压、防雷、ESD防护、隔离等等统统没有,仅仅是能用。而反观有源RS485,由于预算较高,提升较大,在防护方面下足功夫。如果是使用PC机控制下游RS485设备,或者仅仅用于单个距离较近、速率较低的场合,可以尝试使用无源RS485,如果是工控现场、数据采集等高可靠性、高防护要求的场合,有源RS485转换模块是选择。