RS-485总线通讯技术在多机监控系统中的应用
引言
一个监控系统中如果要同时检测到控制系统中的各种分散的数据往往是比较困难的,而采用RS-485总线通讯与单片机组成分布式监控系统是一种最佳可行的方案。而多机通讯技术是组成分布式监控系统的关键技术之一。作者对设备监控系统进行大量查阅资料并进行了详细分析,对通讯网进行了较深入的研究,最后通过舞台灯的软、硬件联调和抗干扰试验,投入现场使用,运行都很良好,因此,试验验证了该方法的可行性。
1 系统结构
我们采用PC机或51单片机为主机(双系统),用AT89C52作为从机模块,选用MAX487数据通讯接口器件作为通讯接口,构成一个以RS-485接口为通讯总线的分布式网络,与主机连接的各个从机分别进行相应的舞台设备的开关量控制,上升、下降等状态切换,限位信号的处理等工作。各种数据及信号的传输都是通过数据通讯总线实现。
2 理论分析
网络的正常运行与多机联网的通讯方式、通讯接口标准及多机通讯的总线竞争等都是在研发中必需考虑得的关键技术问题。
2.1 通讯方式的选择
本系统的多机通讯采用的是串行方式。串行通讯分异步和同步。由于异步通讯允许间歇通讯,对于低速通讯(如工业监控系统)来说是理想的。众所周知,主机上的串行工作方式有4种,方式3是9位波特率可变的异步通讯方式。此方式的第9个数据位和标志位SM2联合使用时具有识别地址的功能,特别实用于多机通讯。因此,本系统选用了串行通讯方式3。
2.2 通讯接口标准的选择
目前广泛使用的串行通讯接口为RS-232C。但RS-232C在分布式监控系统中作为多机通讯使用有以下几点不足:
1) 数据传输率局限于20Kbit/秒,传输距离局限于15米。
2)不能避免共模信号在通讯中的干扰。
3)只适用于点对点的通讯,无法用最少的信号线实现多点对多点的通讯。
RS-422(全双工)和RS-485(半双工)串行接口总线正是为了克服上述缺点而设计的标准接口。RS-422需要两对平衡差分信号线,而RS-485只需其中一对,对于多机连接更为便利,因此,选用了RS-485作为联网的通讯是最佳选择方案。
2.3 总线竞争的解决方案
在各种分布式集中监控系统中,总线型网络的通信方式主要是采用主从方式,即系统的通信由主机(上位机)控制通信的主动权,选择呼叫某一个从机(下位机)进行通信。这种通信方式不会产生总线的竞争,通信协议简单可靠。主从方式的工作机制确定了它主要适用于从机有经常性的数据需要传送的场合。在本系统中,有突发性数据需要传输(如开关变位,限位信号到达),而系统又要求对从机的这种突发性数据进行快速响应,这种情况下简单的主从方式在实现时数据通信可能会丢失。尤其是本系统从机数量比较多,有时会发生两个或多个从机同时想占用总线的情况。例如,可能在某一时刻有两个单片机监控的限位信号同时到达,都向主机发送数据,从而产生了总线竞争。不同的总线形式采用了不同的解决方法。作者研发的监控系统主要采用上位机为PC机或51单片机,下位机为51单片机的形式,这也是监控系统中应用最为广泛的形式,并且降低了成本。以下主要就这种形式的总线,分析两种解决多机通信中总线竞争问题的方法。
图1 解决总线竞争的方案1
在图1中,当从机J有信息主动发送时,将自身的主动发送标志位Fj置1。主机接收到数据后,若校验正确,则表示无总线竞争情况,发送数据成功;若校验错误,表明可能发生总线竞争,主机查询从机1。从机1接收到主机查询命令后,检验自身主动发送标志位Fj,若为0,则从机1没有主动发送数据,主机依次查询下一从机;若Fj为1,表明从机曾主动发送,要将已发数据再发送一次。主机再次接收到信号,校验正确后,依次查询下一从机,直到将从机查询完毕。
图2 解决总线竞争方案2
方案二前面步骤同方案一,不同之处是主机校验从机主动所发的数据,如果数据校验正确,主机回复从机,表明已正确接收;若校验错误,主机广播发送信号,请求从机重发数据。因为主机是广播发送,所以各从机几乎同时接收到请求信号。没有主动发送数据的从机不返回信号;而曾主动发送的从机以接收到请求信号为标志,延时j*T后(j为从机的序列号),重发数据,如图2所示。在重发数据时,不同的从机延时不同,使得占用总线的时间不重叠,所以不会造成总线竞争。作者在现场调试中,通过调整延时T,即便是在序列号相邻的从机都重发数据的情况下,也不会发生冲突。而且延时T只有数十ms,整个通讯,从第一次因总线竞争而造成的发送失败,到主机接收完毕正确的重发信号,不到0.1s。从而既解决了总线竞争问题,也确保了数据的实时传送,兼顾了系统的实时性和可靠性。
当通讯
- 基于RS-485总线的远程测控系统(06-21)
- 用RS-485构成总线型多点数据采集系统(06-04)
- 基于RS-485总线网络连接说明(12-21)
- 基于RS-485总线的水轮机温度监测系统(12-20)
- RS-485及RS-422的自动交叉连接(12-20)
- RS-485的手拉手连接(12-20)