APP下载

基于ZigBee的自来水监测网络系统设计与实现

2015-03-28彭连滔冯锡炜冯瑶

电子设计工程 2015年16期
关键词:监测网下位线程

彭连滔,冯锡炜,冯瑶

(辽宁石油化工大学计算机与通信工程学院,辽宁抚顺113001)

随着我国经济的高速发展,水质的污染和破坏问题日趋严重,着眼于社会所需,我们研究了基于ZigBee的水质监测系统,为水质保驾护航。

水质污染问题刻不容缓,城市饮水主要是通过自来水,其中的安全隐患不容忽视,所以需要一种能随时监测水质变化的设备系统。论文探讨构建基于ZigBee技术的自来水监测网络物理结构,重点是ZigBee网关转wifi和转USB的协议转换。上位机监控功能中,实现了数据实时接收、显示以及历史数据查询,对超阈值数据,报警提示。

1 物联网ZigBee技术简介

ZigBee技术具有自组网,低功耗,延时小,多跳的特点,适用于长时间组网监测。在ZigBee网络中有3种设备,协调器(Co_ordinator)为全功能节点(FFD),负责建立网络,一个ZigBee网络只能有一个协调器,相当于蜂群结构中的蜂后,当网路建立完成后,协调器的功能相当于普通路由器(Router)。路由器负责数据的路由跳转,能够将消息发给其他j节点设备。终端节点(End device)负责数据的采集与发送。以上3种设备可以分为全功能节点(FFD)和半功能节点(RFD)[1]。

每个节点具有两个地址:

1)IEEE MAC地址

这是一种64位的地址,这个地址由IEEE组织进行分配,用于唯一的标识设备,全球没有任何两个设备具有相同的MAC地址。在ZigBee网络中,有时也叫MAC地址为扩展地址。

2)16位短地址

16位短地址用于在本地网络中标识设备,和在网络中发送数据,所以如果是处于不同的网络中有可能具有相同的短地址。当一个节点加入网络的时候将由它的父节点给它分配短地址,协调器的短地址是0。

ZigBee网路的拓扑结构主要为星状(star),树状(Cluster_tree),网格(mesh),其中星状网络不支持ZigBee路由器。不同的网络拓扑结构适用用于不同的使用环境。

2 系统体系结构

基于ZigBee的水质监测系统可以对水质进行实时的监控,整个系统由下位机监测网和上位机软件组成,下位机监测网负责数据的采集,和数据在ZigBee网络上的传输。上位机软件负责对来自监测网数据的存储,数理统计,水质参数超标实时报警,和设备运行状况的检查。系统结构如图1所示。

3 水质监测网的下位机

下位机部分由一个ZigBee转WiFi网关或一个ZigBee转USB基站,2个PH采集节点,一个温度采集节点组成。

图1 系统体系结构Fig.1 The architecture of the system

所有节点内嵌ZigBee通讯模块,在节点的通讯模块中,烧写了ZigBee协议栈的移植版,所有节点上电即进行自组网,进行数据的采集和传输。通过AT命令来指定协调器,路由器,和终端节点,以及节点的相关参数。当掉电时,能进行参数的保存。其下位采集器采用STM32,该款CPU采用的是ARM的cortex-M3内核。其具有出色的实时性能、优越的功效、高级的创新型的外设、最大的集成性。CPU工作频率最高达到72 MHz。AD采集精度为12位,充分保证了采集传感器的精度。

ZigBee通信具有通信稳定的优点[2]。增加的无线功率放大器PA可以一定意义上克服ZigBee通信距离短的问题,使得节点通信距离可以达到几千米,最大限度的保证了通信的稳定可靠和通信距离。图2和图3分别描述了ZigBee节点接收和发送数据的流程图。

图3 ZigBee节点发送数据Fig.3 ZigBee nodes send data

在下位机与PC机的衔接部分,笔记本可以用WiFi网关或ZigBee转USB基站来接收数据,对于台式机可以直接用ZigBee转USB基站来接收。

4 水质监测网的上位机

上位机界面采用C#编程,开发工具为vs2012,数据库为SQL Server。

4.1 W IFI网关接收模式

当启用WIFI网关[3-4]接受模式时,网络协议采用TCP,相比UDP稳定[5],用socket套接字来连接PC机与WIFI网关。

当上位机软件启动时,上位机首先创线thwatchport=new Thread(listening);用来监视,WiFi网关是否与PC机相连,若没有,则继续监听。当连接完成时,软件创建另一线程threcive=new Thread(autorecive),用于接收WiFi网关发来的数据,并随时将数据存入数据库中。

由于第一个线程不断循环查询,当WiFi网关断开,能保证WiFi网关重连时的成功,而不必重启软件。保证了系统的容错率和健壮性。

伪代码描叙如下:

Begin:IPEndPoint ipendpoint=new IPEndPoint(ip,port);

welcomesocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

welcomesocket.Bind(ipendpoint);//绑定IP

welcomesocket.Listen(16);

thwatchport=new Thread(listening);//创建监听线程

thwatchport.Start();

listening()//监听函数

{try

{Do while(true)

reciveSocket=welcomesocket.Accept();//连接

threcive=new Thread(autorecive);//创建接收线程

threcive.Start();

endwhile

}

catch(ex){print(ex.toString();}

}

void autorecive()//接收函数

{StringBuilder strRecive=new StringBuilder();

String strtemp="";

Byte[]byterecieve=new Byte[1024*1024];ncount=0;

sqloperate=new ServerSQL();

do while(true)

{try{

if(reciveSocket==null)break;

ncount=reciveSocket.Receive(byterecieve);//接收数据到缓存

strtemp=Encoding.Default.GetString(byterecieve,0,ncount);

strRecive.Append(strtemp);

{//解析接收到的数据包

//判断设备状态,以及水质参数是否超标,如有异常,立即报警//数据存入数据库

}

}

}catch(ex)//捕获异常

{ncounterror++;

if ncounterror==5

print("请检查网络连接,网络已断开");threcive.Abort();

endif

}

}endwhile

}

End

运行结果图:

4.2 ZigBee转USB模式

对于台式PC机,用WiFi网关接收模式固然可行,对于ZigBee网关与上位机物理距离较短时,还有另一种接收模式——ZigBee转USB模模式。只要将USB一端插入台式机的USB口,当上位机软开启时便可以接收数据。

USB接受方式的编程实现,采用的是serialPort控件[6],直接采用事件触发的方式。

伪代码描叙如下:

Begin:

serialPortAccess.DataReceived+=new System.IO.Ports.SerialDataReceivedEventHandler(autorecive);//将事件委托函数处理

autorecive(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)

{

sqloperate=new ServerSQL();

String readdata="";

StringBuilder strRecive=new StringBuilder();

try

{

图4 无线网络接收方式监控界面Fig.4 Wireless network receiving modemonitoring interface

readdata=serialPortAccess.ReadExisting();//接收数据

strRecive.Append(readdata);

{

//解析接收到的数据包

//判断设备状态,以及水质参数是否超标,如有异常,立即报警

//数据存入数据库

}

}

catch(Exception ex)print(ex.ToString());

}

End

运行结果图:

图5 串口接收方式监控界面Fig.5 Serialport receiving modemonitoring interface

线程和事件触发方式,和定时器定时接收方式相比,能保证数据的随到随收,无数据包遗漏现象。

对于数据的处理,可以按时间查询,并将查询到的数据进行普通的数理统计,如计算平均数,超标次数,并且能将数据查询统计结果导出生成Excel文件,方便用户进一步分析调研。

此外,上位机软件具有良好的用户界面,与异常处理,方便用户操作与使用,接收界面使用动态GIF图片制作,如图2,第一个苹果表示等待连接,第二个苹果表示已连接成功,正在接收数据,当WIFI网关掉线时,第二个苹果停止动态显示,方便用户动态感觉数据接收正在进行,当数值超标时,或设备电压不足时,软件亦能及时弹出报警窗口。

5结论

基于ZigBee的自来水监测网能有效对自来水水质进行实时监测,设计实现了系统的网络结构,完成了传感器数据采集、传输、查询显示以及报警等系统功能。通过网络传输传感器的数据采用两种方式:WiFi网关的socket方式和ZigBee转USB的serialPort方式。两种方式都能实现数据的实时传输的实时接收,基于线程的socket,使用了线程轮转循环的方式,能有效防止WiFi网关掉线,并提醒用户。此时接收线程threcieve终止,监听线程thwatchport依旧循环,等待WiFi网关重新连接。

下一阶段工作的重点,围绕完善系统功能和扩展系统应用展开:

对于下位机网络,采集节点数目不够多,参数种类也不够丰富。在PANID,信道,和数据包一致的情况下,可以不断加入新的节点,增加下位机网络的功能。

对于数据传输,利用GPRS网[7],通过GPRS短信直接通知水质超标等情况,亦可以将ZigBee网络转为3G或4G网络[8],使数据传输的方式变得灵活多样。

在上位机功能部分,丰富数据查询统计方式,添加系统日志管理,改进异常情况的友好提示等。丰富客户端的操作平台,延伸至Web方式,以及基于移动终端的App应用。对于已经采集的数据,可以进行数据挖掘,和大数据运算,研究当地经济,生活的状态。

[1] 姜仲,刘但.ZigBee技术与实训教程——基于CC2530的无线传感网技术[M].北京:清华大学出版社,2014.

[2] 张海涛,廖经文,纪春龙,等.ZigBee无线通讯聊天室的设计与实现[J].东莞理工学院学报,2014,21(3):12-16.ZHANG Hai-tao,LIAO Jing-wen,JI Chun-long,et al.Design and implementation of ZigBee wireless communication chat room[J].Journal of Dongguan University of Technology,2014,21(3):12-16.

[3] 胥嘉佳,许鸣.基于网关的ZigBee和WiFi互通设计[J].电子科技,2014,27(6):22-25.XU Jia-jia,XU Ming.An interconnection design for Zigbee and WiFi based on gateway[J].Electronic Science and Technology,2014,27(6):22-25.

[4] 周坤,傅德胜.基Windows Socket的网络数据传输及其安全[J].计算机工程与设,2007,28(26):5383-5386.ZHOU Kun,FU De-sheng.Data transmission and security on net based on windows socket[J].Compmer Engineering and Design,2007,28(26):5383-5386.

[5] 明日科技,王小科,赵会东,等.典型模块与项目实战大全[M].北京:电子工业出版社,2014.

[6] 李江全,邓红涛,刘巧,等.Visual C#.NET串口通信及测控应用典型实例[M].北京:电子工业出版社,2012.

[7] 孙学宏,车进,张成.基于GPRS的水利数据采集及远程监控系统研究[J].安徽农业科学,2009,37(36):18057-18059.SUN Xue-hong,CHE Jin,ZHANG Cheng.Research on the water conservancy data-collecting and remote n onitor system based on GPRS[J].Journal ofAnhui Agri.Sci,2009,37(36):18057-18059.

[8] 孙宏志,王学成,刘一萌,等.基于3G无线传输的测震台站监控设备的研制[J].地震工程学报,2014,36(2):387-392 SUN Hong-zhi,WANG Xue-cheng,LIU Yi-meng,et al.The design and realization of a type of monitoring equipm ent for seismic stations based on 3G wireless data transmission[J].China Earthquake Engineering Journal,2014,36(2):387-392.

猜你喜欢

监测网下位线程
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
发射机房监控系统之下位机
浅谈linux多线程协作
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
CAN总线并发通信时下位机应用软件设计
利用监测网中断分析导航系统完好性监测
京沪高铁GSM-R网络接口监测网关子系统的设计与实现
卫计委构建食品安全风险监测网 重金属污染涵盖其中