摘要 给出一种RS422/485网络中,模块可以接收任意极性直流供电和总线信号的设计方法。该方法允许将2根信号线或直流电源线在传输途中任意极性续接,容忍了布线施工中的反接差错,使工程施工大为方便。
1 问题提出
现在的很多测控系统是使用RS422或RS485总线互连的。RS422/485总线信号是由4(2)根有极性的差分信号来传输的,不能将其反接。当网络传输距离长或节点多时,在线路上的分续线盒也会很多,很容易将信号线在传输途中接反,从而造成信号无法正常传输。虽然可以查出故障点,但在分线盒很多时,也是一件很费时的事情。为了布线方便,分续线盒的数量往往大于总线上的模块数。对于室内系统,网络线路一般外加PVC线槽甚至暗埋于墙体内;对于室外系统,线路一般架空或地下走线,造成对线路反接问题的查找和修正很困难。另一方面,为了施工方便,也应允许在途中随意接线,不分极性。为此,需要各模块既能接收图1(b)所示的正相信号,也能接收图1(c)所示的极性可能反相的RS422、RS485信号。
图1 传输线反接错误所引起的接收端信号波形改变
对于那些采取未经任何编码调制的基带信号来传输数据的RS422/485系统,图1中由于接线错误将造成收信方无法正确接收数据;但如对信号进行适当的调制后,即使途中出现接线错误,收方仍然能正确接收到数据,即在布线施工中可以无极性布线。
下面分别给出使用未调制信号和调制信号传输数据2种情况下的无极性接线设计方法。先讨论使用未编码调制信号的情况。
2 RS422信号线的无极性接线设计
RS422总线使用收发分开的信号线传输,各为2根信号线。为了使RS422接收器能够接收总线上传来的2种极性的信号,见图1(b)和图1(c),首先要检测到接线的错误,其次才是更正接线错误。这里希望通过网络模块电路来修正接线错误,而不是通过更正错误的传输线连接。
(1) 人工修正方法
对于MCU的UART来说,无信号传送时,TX引脚为“1”电平,因此,RS422驱动器的A端会为高电平,B端为低电平,此时,在接收模块的A端也应为固定高电平。图2电路中,在一个接收端和GND之间连接一个LED,从而可以据此判断该端是和发送端A相连,还是和发送端B相连,然后通过4位拨码开关SW来人工调整模块总线和接收模块中RS422驱动器接收输入的连接。
图2 RS422总线传输中的无极性接收电路
人工修正方法需要发送模块在软件上进行配合。在调整时,发送方不能发送数据,也就是总线上的差动电压为固定的。这种方法,虽然有些麻烦,但在一些情况下,比起检查和修正线路来还是要简便一些。
(2) 自动修正方法
如果在总线输入端子和RS422驱动器之间用电磁继电器(或模拟开关)代替拔码开关SW,就可以通过软件来自动控制总线A、B端的切换。检查是否存在错误接线也可通过软件进行,只要发送端发送一个和收方约定的固定内容数据,如果收方不能正确收到,则表明接线错误,就控制继电器切换总线连接;否则,不切换。必须注意的是,使用模拟开关时,应注意对线路阻抗和传输速度的影响。
3 RS485信号线的无极性接线设计
RS485总线中的发送和接收信号共用一对线,使用的驱动器可分为两类:一类是像SN75176之类的驱动器,在驱动器内部已经将Rx和Tx信号接到一起;另一类是使用RS422方式的驱动器,如发送和接收使用2个芯片,如SN75177(接收驱动器)加SN75178(发送驱动器),或者收发驱动器集成在1个芯片上,如SNLBC75179、MAX488、MAX490等,这种情况下,在线路板上将收发的同相端短接。对于后者(使用收发引脚独立的驱动器),无极性设计的方法仍然类同于RS422方式;对于前者,由于收发信号的同相端在驱动器内部已经短路,无法在接收驱动器增加电路,不能达到无极性信号传输的目的。
可见,在RS485网络中,模块必须使用独立收发引脚的驱动器时,才能增加无极性设计电路。
4 使用限制
以上方法只适合于点对多点的主从式RS422/485网络。对于RS422网络来说,在主模块中的接收驱动器不能加修正电路,而应调整到发送模块的发送端。因为在从模块发送而主模块接收的情况下,可能部分模块和主模块之间的连接正确,部分模块和主模块之间的连接错误。对于RS485网络来说,只要在从模块的驱动器接收端增加调整电路就可以了。
对于各模块平等通信的RS422/485网络来说,一个模块可能和其它模块之间的接线既有正确,又有错误,因此通过此方法来修正。
5 采取调制信号传输消除信号极性
使用以上2种(手动设置或软件自动配置)使模块可以接收任意极性信号的方法虽然可行,但仍然有一些麻烦:手动设置仍然会带来施工的不便,而自动配置会增加软件设计的复杂度,降低了可靠性。此外,以上方法也只适用于点对多点的主从通信网络,对于节点对等网络不能使用。
另外一种消除信号极性的方法就是在对信号编码调制后传送,使调制后的信号是无极性要求的。在数据传输领域,最常用的无极性信号调制方法是使用差分曼彻斯特编码,其波形如图3所示。
差分曼彻斯特编码信号的编码原则是:
◇ 在信号位中间总是将信号反相;
◇ 在信号位开始时不改变信号极性,表示逻辑“1”;
◇ 在信号位开始时改变信号极性,表示逻辑“0”。
由此可见,经差分曼彻斯特编码的信号,见图3(b),经过由于接线错误变成反相的波形后,见图3(c),仍然符合此定义,从而可以解调出原始数据信号。
图3 差分曼彻斯特编码信号及其反相
为了在RS422/485网络中实现差分曼彻斯特编码,需要在UART和RS422/485芯片之间增加编码电路。差分曼彻斯特编码属于自同步编码,因此需要时钟。对于工作于异步方式的UART来说,可以使用GAL器件完成编码和解码,但用于控制UART异步传输的波特率时钟和编码电路时钟必须使用同一时钟源。以下给出图4所示的实现框图,具体实现电路这里不再详细叙述。也可以使用专用芯片完成编码和解码,比如采用Echelon公司的FTT-10A收发器。该收发器对信号进行差分曼彻斯特编码调制后传输(同时包含一个隔离变压器)。
图4 使用差分曼彻斯特编码产生无极性信号
6 直流供电的无极性接线设计
在RS422/485网络中,常采用集中+5 V、+12 V或+24 V直流对所有模块进行供电,如线路较长,一般使用+24 V电源,较短时使用+5 V或+12 V电源。同信号线一样,电源线也同样存在反接问题,基于同样目的和原因,模块也应能使用正相和反相接线2种情况的输入电源。和信号不同,2根电源线虽然可能反接,线间的电位差始终是一个极性,要么为正,要么为负,因此,可以在模块电源输入处增加一个整流电桥,在电桥的输出端就始终能得到正极性的+24 V或+12 V、+5 V电压供自己使用了,如图5所示。
图5 集中直流供电网络的无极性电源接收电路
参考文献
1 Data Encoding. http://www.cpe.ku.ac.th
2 阳宪惠主编。 现场总线技术及其应用。 北京:清华大学出版社,1999