基于RS-485总线的可扩展局域网络的研究
扫描二维码
随时随地手机看文章
RS-485是在RS-422的基础上发展起来的,能实现一点对多点的通信,也能实现多点双向通信,但同一时刻只能有一个发送器,其余的为接收器,即一主多从的通信方式。目前市场上可供选择的RS-485总线芯片很多,其中包括可支持128个节点的MAXl487和支持400个节点的SP485R。利用该类芯片可直接组成简单的通信网络。
RS-485收发器采用平衡发送、差分接收的方式,即在发送端将TTL信号转换成差分信号输出,在接收端,接收器将差分信号转换成TTL信号。因此具有较高的共模抑制能力。同时接收器具有较高的灵敏度,能检测低达200mV的电压,数据传输可达1 200m。如降低数据传输速率,则通信距离可更长。当通信速率为1 200bps时,理论上通信距离可达15km。当传输距离超过300m时,在网络的二端需接入120Ω的匹配电阻,以减少因阻抗不匹配而引起的反射,吸收噪声,从而有效抑制噪声干扰。MAXl487的接口电路示意图如图1所示。
2网络结构及实施方案
在实际应用中,RS-485总线芯片本身所拥有的节点数已不能满足需求,而往往需要一个接点庞大的复杂局域网络(如几千甚至几万个节点)来完成。连接在该网络中的各类设备能相互通信,并且可以在一定节点数范围内根据实际需要任意扩展,并做到即插即用。管理人员通过随身携带的笔记本电脑,接入网络中的任一接点,可了解整个网络的运行情况。结合用户应用程序,管理人员还可获得连接于该网络上相关设备的运行数据。
针对以上要求,局域网络必须由多片具有RS-485总线的芯片连接而成。本文讨论节点数≤32768点的局域网络,使用MAXl487作收发器。根据RS-485总线的特点;在任一时刻,整个网络只允许有一个发送器,其余的必须处于接收状态。而接入网络中的设备随时可能有多个设备同时传输数据的要求,如不进行协调,就会出现总线竞争现象,使总线电子紊乱,整个网络无法工作。
将一片MAXl487所能连接的128个节点作为一个子网,整个局域网络由若干个子网组成。所有节点不直接和用户设备相连,而是通过一个节点模块和设备连接。这是一种二端带通信口的智能化模块,内带一个单片机系统,用于执行局域网络通信协议,负责BS-485总线和设备间的通信,同时参与整个局域网络的通信协调工作。模块的一端为RS-485总线,用于连接网络,另一端是RS-232总线(或TTL电平)与用户设备、仪器仪表或智能传感器连接。
子网中每个节点模块都有自己的地址,用1个字节表示,即00H~7FH。而在整个局域网络中,每个子网也有自己的子网地址,也用1个字节表示,即00H~FFH。这样,在整个局域网络中每个节点就有自己惟一的用2个字节的二进制数表示的地址,类似Internet中的IP地址,其地址格式如图2所示。以00H子网05H节点为例,其中的"X"为无效位
规定每个子网中的地址为00H和7FH的2个节点为特殊节点。地址为00H的节点是该子网的管理者,协调子网中的通信,同时也是该子网的一个数据出入口,和上一个地址为7FH的节点连接。地址为7FH的节点为该子网的另一个数据出入口,负责和下一个子网中地址为00H的节点连接。这表示子网之间是由2个背靠背的节点模块通过RS-232总线相连的。
这2个背靠背的节点模块又是子网之间的中继站。同时还规定00H子网的00H节点,即地址为"00000000·00000000"的节点为整个网络的最高管理者。局域网络宜采用拓扑结构,以提高网络运行效率,而链式结构可增加网络的通信距离。RS-485总线构成的局域网络结构示意图如图3所示(以00H、01H 2个子网为例)。
3节点模块的设计
该局域网络的关键是节点模块的设计。这也是本局域网络的特色所在,其中软件设计至关重要。节点模块主要完成网络的管理和通信。为了使模块具有通用性,所有节点模块具有相同的结构和软件,只要按照网络协议选择好正确的地址,任一模块都可相互替换。网络中没有专门的网络服务器,任意一个节点模块都具有服务器的功能。哪个节点模块充当服务器是由其自身的地址决定的,因此节点模块软件应该具有自动识别地址的功能,以确定自己在网络中的位置和角色。例如,当检测到自身的地址是"00001010·×0000000"时,就知道自己是0AH子网中的OOH节点,并且是该子网中的管理者;当检测到自身地址是"00000000·×0000000"时,就知道自己是整个局域网络的最高管理者。节点模块地址可由用户自行设定。
为了实现即插即用功能,最高管理者必须定时向整个网络广播,以便收集网络的运行情况(如是否有新节点加入,是否有节点从网络上退出等)并形成网络状态注册表,根据实际情况实时刷新。任何节点都可以向最高管理者取得该注册表,以便管理人员从任一节点上获得网络运行状态。
网络空闲时,最高管理者不断地向整个网络发出询问,监视是否有数据通信要求。子网内部的数据通信由该子网的管理者(节点地址为00H)协调,只有跨子网传输数据时,最高管理者(子网地址为00H,节点地址也是00H)才会干预。节点模块中有8KB的SRAM作为数据缓冲区,另外有2KB的E2PROM用于保存注册表等信息。单片机的串行通信口既要完成RS-485总线的通信,又要完成由RS-232总线到设备的通信,所以必须有通信口切换功能。平时单片机的串行通信口总是与RS-485总线相连,只有当设备需要传输数据时才切换到RS-232总线,所以系统还必须有对设备通信请求的检测功能。限于篇幅,软件具体编程在此不作叙述。节点模块的结构如图4所示。
4总 结
理论上该局域网络对节点的扩展没有限制,但考虑到RS-485总线通信速度的限制,因此网络规模不宜过大。由前面的结构分析可知,网络的可靠性取决于子网。由于各子网间不会产生串扰,因此网络的可靠性不会随网络的规模扩大而降低。这是一个通用的局域网络,适合任何需要RS-485总线通信的场合,因此实用性非常强。