基于MODBUS协议网络的多点火灾测控系统
2013-04-25何凌霄林凡强
何凌霄,林凡强
(成都理工大学 信息科学与技术学院,四川 成都610059)
传统的火灾报警系统由于测控能力有限,控制距离较短等缺点,已无法满足实际发展的测控要求。为此,提出基于MODBUS协议的测控网络,用以太网将各MODBUS网络连接起来,组建大型测控系统,在各处连接相应的可编程逻辑控制器以及检测系统,通过网络对各点处的环境状况进行检测,控制相应的动作,实现对各种生产中的安全问题进行预警。
本设计在提出组建大型网络理论的同时,由于实际需要,设计制作了基于MODBUS协议的多点火灾测控系统,验证了建立大型网络测控系统的可行性与优越性。
1 多点火灾测控系统框架
1.1 MODBUS协议
MODBUS协议是应用于电子控制器上的一种通用语言。通过此协议,控制器及相互之间经由网络和其他设备之间可以通信。其通信使用主从式技术,即仅一个设备(主设备)能初始化传输(查询)。其他设备(从设备)根据主设备查询提供的数据做出相应反应。
MODBUS协议中,消息的传输方式可以选择ASCII和RTU消息帧格式中的一种进行网络通信。在协议的消息帧中可以进行各种校验,如奇偶校验、LRC校验和CRC校验,网络中还可以设定超时检测功能。
系统采用了RTU消息帧模式,消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域接收到,每个设备都对其进行解码以判断是否发给自己的。在最后一个传输字符之后,至少3.5个字符时间的停顿标定了消息的结束。RTU格式如表1所示。
表1 RTU消息帧格式
1.2 通信接口
计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯两种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路的特性不一致而被广泛采用。常用的接口如:RS-232、RS-485。因为RS485标准采用平衡式发送、差分式接收的数据收发器来驱动总线,传输距离可达千米以上,因此本系统采用该总线建立设备网络。
1.3 MODBUS网络结构
由终端(可以是可编程的逻辑控制器、单片机控制器等)、RS-485总线等物理硬件组成,通过MODBUS协议通信,由主机初始化整个网络,按地址发送消息帧,符合地址的终端接收消息帧,并按消息帧消息的要求处理,回复给主机相应的数据。
系统具有基于MODBUS协议的接口处理能力,初步测控功能,MODBUS系统的网络结构如图1所示。
图1 MODBUS系统网络结构
2 测控系统硬件设计
2.1 主机
主机硬件可以采用通用个人计算机或专用处理器;标配9针D形串口,支持串口通信,具有将串口RS232转RS485的接口芯片。
2.2 下位机
下位机主要是基于单片机的微控制器,其具有可靠性高、编程方便、体积小、功耗低等特点,目前主要的自动控制设备多采用此种形式。采用单片机方案,编写基于MODBUS协议的通信接口程序,用于执行简单的控制指令或检测命令。系统采用C8051[1]系列控制器,该控制器与传统的MCS-51单片机兼容,但该类控制器采用流水线结构,性能方面比传统的MCS-51有所提高,且其外设资源丰富、系统集成度高。
2.3 以太网传输
不同PC机之间通过以太网连接,将MODBUS协议消息帧封装成以太网上传输的数据包传输,并用Microsoft Visual C++6.0编程[2]开发以太网连接相应的控制接口与界面。
2.4 RS-485单元
MAX483是适用于RS-422和RS-485通信线路的低功率收发器,其内部集成了一个驱动器和一个接收器[3-4]。
2.5 硬件模块设计
由C8051F340构成下位机,构成MODBUS网络I/O接口模块[6-8],提供串行通信能力,连接各种外围控制检测电路,提供外围电路主时序及控制信号。由于具体测控装置的不同,这里选择了温度传感器、火焰探测器、自动或手动开关、声光报警器、并预留多余的I/O端口,便于扩展。
检测模块由于具体环境和硬件设施的不同而多种多样,主要包括火焰探测器、温度传感器、水流指示器等。因C8051F340单片机内置10位A/D转换器和温度传感器,故这一模块可通过输入输出口外接传感器,直接通过编程获得。
当检测到有火灾可能发生时,给单片机输出口一个高电平,使发光二极管发光,并使蜂鸣器发声,以表示可能有异常情况发生。
3 系统软件设计
3.1 单片机与MODBUS网络通信程序设计
单片机程序设计采用KEIL集成开发环境,通过仿真器在C8051F340单片机上调试运行。
单片机系统启动后,经过初始化,立即开始进行现场的参数测量,流程如图2所示。
图2 单片机测试流程图
通电后,首先配置I/O口,设置计时器初值、工作方式,设置串口工作方式,开系统中断等;然后调用测量函数;再调用接收判断函数,判断是否接收到正确的消息帧;如果判断接收的消息帧错误或消息帧没接收完全,则直接跳出接收函数,调用测量函数,进行测量,并不断循环测量函数与接收判断函数。
初始化函数主要是开总中断;设置定时器0为16位计时模式,检测信息//帧开始与帧内字节;定时器1设为8位自动重装模式2,用于串口数据通信波特率发生。
串口中断发生时,先开始计时定时器,检测信息间隔机字符间隔,计时0.5个字符周期。然后判断是接收中断还是发送中断,根据判断结果分别做相应的处理,接收数据至接收数据缓冲区还是将发送缓冲区的数据发送。根据MODBUS协议中RTU传输模式,当两个字符间隔>3.5个字符周期时,认为接收完一个消息帧,开始接收下一个消息帧,当<1.5个字符周期时,则认为这是上一消息帧的字符。接收或发送的消息帧保存在接收缓冲区或发送缓冲区中,为后续接收判断做准备。串口的处理流程图图如3所示。
图3 串口中断处理流程图
产生CRC校验码过程如下:(1)预置一个16位寄存器为0FFFFH(全1),称为CRC寄存器;(2)把数据帧中的第1个Byte的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器;(3)将CRC寄存器向右移一位,最高位填以0,最低位移出并检测;(4)如果最低位为0:重复第(3)步;(5)如果最低位为1:则将CRC寄存器与一个预设的固定值(0A001H)进行异或运算;(6)重复第(3)步和第(4)步直到8次移位。这样则处理完了一个完整的8位。重复第(2)步~第(5)步来处理下一个8位,直到所有的字节处理结束,最终CRC寄存器的值即为CRC的值。
3.2 上位机主控界面设计
上位机软件采用Microsoft Visual C++6.0设计多点火灾监控系统界面,它提供完善的可视化开发环境,集方便、快捷、灵活高效于一体,界面如图4所示。
图4 多点火灾监控系统界面
4 系统改进
目前设计实现了MODBUS的基本功能,实现多点火灾的监控和预警。但MODBUS网络连接采用RS-485总线连接,在实际火灾中可能会产生火灾破坏通信线路,造成通信系统瘫痪,可靠性降低,但可以通过硬件或软件方法改进而提高。MODBUS协议本身没规定具体的硬件连接方式,它定义了通信双方能认识使用的消息结构,而不管是经过何种网络进行通信的。可以考虑采用无线通信的方式,这样就没有实际的连接线,可靠性可以得到改进。
系统的主控界面是人工发送消息给下位机,下位机接收执行后,返回消息。使用主从技术,如遇突发情况,在无人控制时,电脑会自动按一定时间间隔查询下位机状况,这样就不能及时实施控制,且系统资源占用较多。可以考虑采用申请—控制机制,即下位机检测异常时,向主机发送红请求,主机通过中断收到请求后,自动判断并发出控制消息给下位机实行控制。这样可以节约系统资源和增强实时处理能力,提高检测控制效率。
5 结束语
系统开发设计了建立基于MODBUS协议的自动多点火灾测控系统,并提出以太网连接,组建大型测控网络的方案。在实际火灾测控应用、设计火灾测控网络、绘制具体电路、进行实际制板测试和编写通信程序等方面,为以后火灾预警测控提供了参考。
[1] 杨金岩,郑应强.8051单片机数据传输接口扩展技术与应用实例[M].北京:人民邮电出版社,2004.
[2] 周晓云.程序设计基础—可视化及VC++实现[M].北京:高等教育出版社,2004.
[3] 张毅坤,陈善久.单片微型计算机原理及应用[M].西安:西安电子科技大学出版社,1998.
[4] 宋宝华.深入浅出VC++串口编程之基于Win32 API[EB/OL].(2006-02-21)[2012-09-12]http://wen ku.baidu.com.
[5] 邓元生.基于单片机的MODBUS总线协议实现技术研究[D].长沙:中南大学,2009.
[6]陈铭.基于MODBUS协议的设备和PLC实现通信的研究[J].湖南科技学院学报,2009,30(4):60-62.
[7] 夏勇.Modbus通讯协议的S7-200可编程控制器[J].自动化与仪器仪表,2009(1):48-49.
[8] 王小鹏,张九强.MODBUS在智能保护装置上的应用[J].煤矿机械,2011(1):190-192.