基于Modbus远程监控的水质在线监测系统的设计与实现
2014-09-26韩彦岭袁国良
张 飞 , 张 云 , 韩彦岭 , 袁国良
(1.上海海事大学 信息工程学院,上海 201306;2.上海海洋大学 信息学院,上海 201306)
21世纪以来,随着国家经济的发展,工业化进程的推进,面对日益严重的水资源短缺、水环境污染等问题,水工业行业迎来了水资源费用上涨、饮用水水质标准提高、废水排放标准更加严格,以及水价上涨等诸多的挑战和机会[1]。监测江河、湖泊、水库等饮用水资源的水质成为当前环境保护的热点。在这样的背景下,大力推动了水质监测设备的发展。水质监测是及时、准确、全面地反映水环境质量和污染现状的重要手段,是制定切实可行的污染防治和水环境保护措施的前提和基础[2]。水质监测在我国已经有一定的时间,当前水质监测的主要方法主要有3种:1)人工定点定时取样,实验室离线分析;2)便携式仪器现场人工取样检测;3)由固定监测站点连续取样,自动在线分析[3]。这3种方法都无法满足对不同水域水质连续动态变化监测的要求,更难以及时发现由于误排放或事故性泄露而引起的水质指标的急剧变化。常规的水环境监测手段已难以满足对水质监测的需要[4]。
文中所述水质监测系统基于无线电台的通信方式并运用Modbus通信协议优点,将传感器收集到的水质数据实时传送给监控中心。实现了远距离不断传输水质指标数据,实时监测水质变化的目的。
1 系统结构
水质监测系统总体结构设计如图1所示,左边的前方监测系统位于监测的水域现场,右边的监控中心位于远离监测区的本地控制中心。两者通过微波电台进行通信。
图1 系统结构图Fig.1 Diagram of the system structure
前方监测部分围绕着CPU模块展开设计,外围由GPS模块、收集模块、5个传感器和一个电台组成。监控中心的结构非常简单,只需要由一台PC机和一个同型号的电台。CPU模块采用MS-CPU32,运行着一个精简版的Linux内核,具有非常高的数据处理速度和运行大型程序能力,该内核已经内建了一个根据Modbus协议编写的从设备程序,该程序已实现了开机自启动收集水质数据功能。GPS模块主要作用是能够让监控中心时刻知道监测设备所监测水域的坐标,实现精确定位监测设备的作用。收集模块主要负责收集传感器输出的信号进行模数转换,存到寄存器,最后通过电台发送出去。GPS、传感器模块和电台的详细参数将在实验验证部分给出详细介绍。
下面要设计的主要在监控中心端,用一个电台和PC机与前方监测系统进行通信。由于CPU模块内建的程序使用Modbus协议编写,要求监控中心的PC机程序也必须用Modbus协议编写。
2 MODBUS协议通信设计
2.1 Modbus协议特点
Modbus协议[5-6]由施耐德电器发起制定,协议在应用层采用Modbus消息定义,在传输层和网络层采用TCP/IP,用于以太网通讯[7]。Modbus协议是应用于电子控制器上的一种语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为一个工业标准。
控制器通信使用主从技术,即仅一设备(主设备)能进行查询,其他设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备可以单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询,则不作任何回应。Modbus协议建立了主设备查询的格式:设备地址(或广播)、功能代码、发送的数据、校验码,从设备也以相同的格式回应主设备。Modbus支持RTU和ASCII两种数据传输模式,本文所述水质监测系统中选用RTU模式,消息中的每个8Bit包含代表2个的十六进制字符。这种方式的主要优点是:同样波特率下,可以比ASCII方式传送更多的数据。RTU帧如表1所示。
表1 RTU报文帧Tab.1 RTU frame structure
设备地址用来标识不同的从设备,范围是0~247。地址0在广播中使用。功能码主要告之从设备要执行的操作,从设备回传同样的功能码说明已执行正确的操作,反之则回传不同的功能码,告知发生的不同错误。例如功能码03H是要求从设备读保持寄存器并返回其中的内容。常用的功能码如下表2所示,数据区定义了根据功能码的要求执行操作所需的信息,与功能码相关。主机与从机通过信息帧中的校验码来判断信息在传输过程中是否出现错误[8],有错则丢弃。无错才执行相应的操作。
表2 Modbus功能码Tab.2 Modbus function codes
所述的水质监测系统中,监控中心的PC机作为主设备用来查询,前方监测系统的CPU模块作为从设备进行应答。CPU模块采用默认的01H作为从设备地址。主设备使用03H功能码对从设备保持寄存器中的数据进行读取。PC机和CPU模块采用查询应答机制,不断从前方监测系统读取数据。
2.2 通信设计
1)通信连接
首先两个电台要确保在有效的无线传输距离范围内,其次由于无线电台使用2.4 GHz频率,此频段微波绕射能力较差,按直线传播,所以两个电台之间不能有高大遮挡物。在电台上有一个信号灯显示为蓝色时,说明2个电台联通。按照Modbus协议的要求,通信的双方必须严格按照Modbus数据帧的格式进行指令和数据的打包和读取。主从设备在收到数据帧后都要判断地址码是否正确,然后进行CRC校验,都正确后双方通信才完全建立。
2)数据传输
传感器采集的数据经过收集模块的模数转换后存储到寄存器中,同时GPS的坐标也被存储到寄存器中。在监控中心主设备的读取指令传送到CPU模块并进行指令解析后,CPU下达读指定寄存器数据的指令,数据从寄存器中读出,通过串口RS-232送达电台1,数据通过无线传输到电台2后,经由串口RS-232到达PC机中,PC机对数据进行相应的存储和显示处理。PC机和CPU模块之间的数据读取,按照查询应答机制,要求PC机不断的向CPU模块发送读取的指令。
3 监控中心软件设计与验证
3.1 监控中心软件设计
监控中心的主设备控制程序是在Window XP系统下使用Qt编写,Qt是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序。由于主从设备使用串口RS-232将数据送达电台,而Qt没有自己的串口通信控制类,这里使用的是开源的第三方开发的qextserialport类,它是继承自Qt的QIODevice父类。前方监测系统和监控中心的串口参数设置为:波特率19 200 bps、数据位8位、无校验位、停止位为1。监控中心软件模块设计包括5个部分:串口通信模块、定时发送Modbus指令模块、数据接收和解析模块、数据显示模块、数据保存模块。首先对串口参数进行设置,打开串口,程序开始计时,每隔一段时间(这里是10秒),主设备自动向从设备发送Modbus指令,接着主设备开始接收并解析从设备发送来的数据,然后把数据显示出来,并进行保存。
主程序流程图如图2所示,在发送接收指令的过程中,主从设备有一个Modbus指令处理判断的过程。Modbus指令的判断过程流程图如图3所示,当指令到达从设备时,从设备对发送过来的指令进行分析,首先判断功能码是不是支持的功能码,不支持,则将该指令丢弃,并返回01H异常码,在支持的情况下会进行判断是不是在支持的功能码的范围之内,不支持则返回03H的异常码。如果在范围之内则会进行最后的CRC校验,判断指令是否错误,如果有错则返回02H异常码,在没有错误时,则进入后面的处理的程序,接着判断寄存器数据的可读性,在寄存器不能读时则返回04H异常码。从设备中处理完这些流程后,从设备会将把这些存储的数据传输出来。
图2 主程序流程图Fig.2 Working flow chart of the program
3.2 实验验证
1)实验原件和实验环境介绍
传感器监测的水质参数分别为pH、溶解氧、温度、浊度、电导率,具有符合工业标准的4~19 mA的模拟输出信号。电台使用的是FreeWave公司的GXM系列电台。下面给出监测系统使用的传感器和电台等部分原件具体型号,原件型号如表3所示。
图3 Modbus指令判断流程图Fig.3 Flow chart of the Modbus command
表3 设备参数表Tab.3 Specific model of the main components
实验所选取的地点如图4所示,A点是上海海洋大学信息学院,B点为上海海洋大学一号门,C点位于桥的下坡上。在A点和C点之间存在大量绿化带,室外测试在白天进行。
图4 实验地点示意图Fig.4 Experimental places in the map
2)实验结果
整个系统设计完成后,在经过室内长时间测试成功后,不断尝试增加两个电台之间的距离。控制中心软件运行界面如图5所示,界面包含了串口参数设置、8个水质参数和GPS坐标的经纬度,其中溶解氧温度、浊度(50NTU)、电导率温度是根据另外的5个指标数据计算所得。
图5 监控中心软件界面图Fig.5 Software interface in the monitoring center
实验结果如表4所示,分为室内、室外两种实验,其中室外实验又根据距离的不同分为实验2和实验3。对于室内实验最为简单,可以长时间的进行,测试时间大于48小时。实验结果显示存储的数据没有任何错误发生,两个电台间距离为10米左右,数据可以实现2秒每次的读取与存储,而且可以根据日期不同,每日零时自动更换存储数据的文件名称。对于室外实验2,控制中心在位于B点,监测系统位于A点,两点间距离约为230 m,天线位于四楼楼顶,经过3个小时的不间断测试,数据传输正常,没有错误和时延,数据读取间隔设置为10 s一次。实验3距离最大,约为1 920 s,控制中心位于C点,由于使用车载电源进行测试,测试时间有一定限制,初步测试时间为2小时,电台天线位于车篷上面,监测系统仍然位于A点,天线位置不变,每15 s对数据进行读取一次,但依然有3组数据发生错误,特别是溶解氧和溶解氧温度这两个数据都发生了乱码,同组中的其他数据发生错误概率较小。这里的数据正确率是按发生错误的组数与收到数据的总组数相比得出的结果。
表4 实验结果Tab.4 Experimental results
从表4可以看出,在两个电台间距离不断增大时,数据读取存储的时间要变长,而且在距离为1 920 m时,数据传输发生错误,这是由于电台通信时,数据传输得不到质量保证,A点和C点在一些遮挡物作用下,再加上多径传输特性的影响,发生了错误或延时,导致串口读取的数据发生了错误。该监测系统将被用于监测湖泊水质的变化,在距离上要小于实验2测试时的距离,所以能够保证数据的有效性和实时性。如今后要传输更远的距离,可以在两个电台之间增加一个中继器,达到数据的有效视距传输。
4 结 论
本研究运用Modbus协议在工业上优点,使用电台传输水质监测系统所监测的水质数据,是对Modbus协议在水质监测系统应用上的再一次肯定。无线电台的使用使得数据传输更加方便,具有通信距离远、设备简单、成本低廉、抗毁性强、灵活机动等特点。2.4 GHz的微波传输按直线传输,在距离较远、遮挡物较多,会造成信号损耗。虽然数据能够通过电台进行传输,但是有一定的错误率,这对实时监测水质的设备来说是不准许的。所以在保证数据有效传输的情况下,应该尽量使两个电台之间距离在数据不发生错误的情况下使用。为了克服距离上、传输速度及稳定性问题,水质监测系统应该向综合3G网络和卫星通信的复合通信模式方向上发展。
[1]程立.在线水质分析仪器应用技术的发展[J].分析仪器,2011(2):75-76.
CHENG Li.Development of application techniques of on-line water quality analysis instruments[J].Analytical Instrumentation,2011(2):75-76.
[2]李宇航,廖海洋,温志渝,等.库区水质在线监测数据采集控制系统设计[J].传感器与微系统,2011,30(2):61-62.
LI Yu-hang,LIAO Hai-yang,WEN Zhi-yu,et al.Design of online water quality monitoring data acquisition and control system for the reservoir[J].Transducer and Microsystem Technologies,2011,30(2):61-62.
[3]柴小丽,沈博,王青玲.水质监测中的快速传感技术[J].环境科学与技术,2006,29(5):36-37.
CHAI Xiao-li,SHEN Bo,WANG Qing-ling.Fast sensing technology in water quality monitoring[J].Environmental Science and Technology,2006,29(5):36-37.
[4]吕爱东,宋万琦,李镇西.浅论水质监测系统的由来和发展[J].黑龙江水利科技,2002(3):70-71.
LV Ai-dong,SONG Wan-qi,LI Zhen-xi.Discussing about the origin and development of water quality monitoring system[J].Heilongjiang Science and Technology of Water Conservancy,2002(3):70-71.
[5]Modicon Inc.Modicon Modbus Protocol Reference Guide[Z].1996.
[6]MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b[Z].Modbus-IDA,2006.
[7]孙璐.Modbus/TCP协议在远程监测中的应用[J].计算技术与自动化,2009,28(4):119-120.
SUN Lu.A application of remote monitoring based Modbus/TCP [J].Computing Technology and Automation,2009,28(4):119-120.
[8]李明伟,郭广峰,黄鸽.PIC单片机与触摸屏串行通信的MODBUS协议实现[J].电子技术应用,2005(9):40-42.
LI Ming-wei,GUO Guang-feng,HUANG Ge.PIC microcontroller communicate with touch screen by serial port based on modbus[J].Electronic Technology Application,2005(9):40-42.