基于Solinst Levelogger3001水质参数采集处理系统的研究
扫描二维码
随时随地手机看文章
摘要:采用Solinst Levelogger3001水质传感器与PC机构建了水质采集处理系统,利用Visual C++6.0的MFC框架及MSComm控件编写了采集处理软件。根据通信协议完成了主机和水质传感器之间通信,并时读取到的数据处理后利用MSChar控件实时显示,从而达到水质参数实时显示和实时监控。通过与随机采集处理软件实验比对表明,采集处理结果正确,达到了实时采集监控的目标。
关键词:水位;水温;MFC;MSChart;MSComm
水资源的短缺已成为制约社会发展的障碍,对水资源的保护面临着前所未有的挑战,传统的水质采集方式已不再满足人们对水资源保护的需求。随着信息技术、传感器技术、集成技术、面向对象技术的发展,对水质参数的采集处理也发生了革命性的变化。文章利用MFC编程串口通信程序实现Solinst Levelogger3001传感器水质参数的采集,对采集到的数据信息进行处理并利用MSChart显示所采集到的水质参数曲线图。通过对采集到的水质参数信息进行处理并显示能够实时的掌握水质的变化情况,为保护水资源提供有力的依据。利用对水质参数设置的门限值可以在水质变化时为用户提供报警功能。
1 采集处理系统构成
采集处理系统总体构成图如图1所示。
Solinst Levelogger3001传感器是加拿大Solinst公司生产的水质参数采集传感器,采集的水质参数有水位和水温。气压计是测量采集水质参数地点当时的空气压强。RS232串口是主机部分读取水质参数信息和气压信息所用的串口。主机部分主要是发送读取传感器采集的水质参数命令从传感器获得水质参数数据。传感器是以十六进制的形式返回参数值,主机在接收到这些数据后要对这些数据进行处理,即把十六进制转换成对应的ASCⅡ字符串(便于用户读取)或者是对应的十进制字符串(便于以曲线的形式显示)。把十六进制处理成字符串后数据显示部分还要从字符中提取出水质参数值(其中包括水位和水温),并对提取的水质参数值利用MSChart的曲线方式显示。主机通过设置门限值并判断接收到的水质参数是否超过该门限值,如果超过了门限值,那么警报部分就被启动。
2 采集处理显示软件的设计
2.1 控件添加和界面设计
建立一个基于MFC对话框的程序,并利用控件向导构建如主界面图2对话框,其中串口设置子对话框如图3所示。右击对话框向对话框中添加MSComm控件,在弹出的对话框中选择Insert ActiveX control,从列表中选择Microsoft Communications Control,vision 6.0。此时对话框上会出现一个像电话的图标(此图标在运行时不会显示)。以同样的方法添加Microsoft Chart Control 6.0[SP6](OLEDB)。
2.2 软件设计流程
利用快捷键Ctrl+W打开MFC ClassWizard对话框并选择Member Variables选项卡为控件添加变量。表1是软件设计者为主要的控制添加的变量。
2.3 参数设置
在进行读取水质参数信息时要先对串口作初始化设置,其流程如串口设置流程图4所示。传感器连接串口的通信参数波特率为9 600、停止位为1、数据位为8、校验位为NONE。设置好串口通信参数和传感器通信参数一致(如图6所示)。连接传感器到设置好的端口号(文章设置的端口号为端口号1)。读取传感器采集的水质参数要利用MSComm控件,此时需要给该控件添加读取水质参数的函数,其读取采集数据流程如图5所示。
2.4 数据采集与处理
根据传感器通信协议发送读取传感器采集的水质参数信息命令(一个a命令,一个b命令),其中a命令获得水温信息与水位信息的整数部分,b命令获取水位信息的小数部分,发送命令格式为十六进制。发送命令必须先发送a命令后发送b命令。表2是系统设计者发送命令读取传感器采集水质参数对应的命令和返回值。
发送命令a返回值中32.300为水温值,89为水位值的整数部分。发送b命令采集到的数据为6 700 cm,即为水位的小数部分如图7所示。对发送命令的控制流程如流程图8所示。利用SetTimer()函数调用OnTimer函数发送命令和读取水质参数信息。文章设置一秒钟采集一次水质数据信息,即SetTimer(1,1 000,NULL)。OnTimer()函数主要是定时发送读取数据命令并处理接收到的数据信息并以字符形式在显示区显示和以曲线的形式在MSChart控件区显示。对接收到的数据处理流程如流程图9所示。水位实际值式(1)决定:
WL=TWL-TL (1)
其中WL表示水位实际值,TWL表示测量水位值,TL表示气压值。气压值通过端口号2读取。
3 显示水质参数采集结果
3.1 MSChart显示传感器采集水质参数
处理好读取到的水质参数数据后通过MSChart控件以曲线的形式显示在屏幕上。利用语句m_Chart.GetDataGrid(),SetData(inPos,1,wt,0)画出水温曲线图,其值与第一Y坐标轴相关联。利用语句In_Chart.GetPlot().GetSeriesCollection().Gethem(2).SetSecon daryAxis(TRUE)设置好水位曲线值与第二Y坐标轴相关联,m_Chart.GetDataGrid().SetData(inPos,2,wl,0)语句画出水位曲线图。图10是利用文章设计的程序以MSChart显示水质参数实时采集的结果曲线图。图中有规律的平滑线条代表水温,数值对应左边第一Y坐标轴。变化的曲线代表水位,数值对应右边第二Y坐标轴。图11是系统设计者利用Solinst公司提供的软件显示水质参数实时采集的结果曲线图。系统设计者首先利用本系统显示水质参数实时采集的结果图再利用Solinst公司的软件显示水质参数实时采集的结果,由于两次测量都是人为的把传感器从水杯中慢慢的提起,由于两次测量时存在着提起传感器的速度不一样,从而在实际观察两个系统显示的结果有点区别,这是属于正常情况。通过对比图10显示的结果和图11显示的结果得出系统设计者成功实时读取了Solinst公司提供的传感器采集的水质参数。
3.2 警报功能设置
在主机部分设置好水位和水温的门限值,当读取的水质参数数据超过对应的门限值时系统就会启动警报系统。由于篇幅的原因系统设计者就不阐述警报系统的设计。为了突出当水质参数超出门限值能够启动报警系统这项功能系统设计者设置了水位的最高值97.8 cm,最低值为80.51。水温的最高值35°,最低值为20°。当水位高于97.8 cm时系统就弹出水位过高对话框,如图12所示。由图可以看出当水位高于97.8 cm时就启动了报警对话框。当水温高于35°时就弹出水温过高对话框,如图13所示。由图可以看出当水温高于35°时就启动了报警对话框。
4 结束语
利用MSComm控件成功实现了与水质参数采集传感器之间的通信和读取传感器采集的水质参数数据。文章设计的系统不但可以用于只可以采集水温和水位的传感器,同样也可以用于多参数采集的传感器。在未来的应用中,在采集端读取采集水质参数数据后可以利用GPRS网络传送该水质参数数据到远程控制中心,从而实现远程水质参数在线监测和报警功能。