基于ZigBee的γ辐射采集系统监测软件设计
2020-10-17周自强李亚娟裴祥喜
周自强,李亚娟,裴祥喜
(1.大连大学,大连经济技术开发区学府大街10号 116622;2.河北水利电力学院 计算机科学与信息工程学院,河北省沧州市重庆路1号 061001)
在环境监测和核工业生产领域,应用了大量的核辐射监测传感器[1],随着物联网技术的发展,基于物联网的无线核辐射传感器网络也应运而生。各种无线传感器网络采集的数据必须传输给监测软件,经监测软件解码和进一步的数据处理后才能方便工作人员了解监测区域的信息,因此无线传感器网络的上位机监测软件在整个无线传感器网络监测系统中有着重要的地位。基于IEEE 802.15.4标准的ZigBee技术是一种短距离、低功耗的新型无线通信技术,是当下流行的无线传感器网络技术之一。目前大多数ZigBee设备开发使用中都使用串口调试工具或者超级终端作为监测手段,难以满足无线传感器网络高效的数据处理需求。文中设计了一种基于ZigBee的γ辐射监测系统上位机软件,该软件能够对无线网络状态进行监控、对终端节点进行自动识别、对终端节点数据进行处理和存储并为用户提供了实时数据及趋势显示、历史数据查询等功能。
基于ZigBee的γ辐射监测系统是一个星型网络,如图1所示,其中协调器和终端设备均采用TI公司的CC2430或其升级版芯片作为核心,由多个终端完成γ辐射检测任务,通过作为中心节点的协调器将信息统一发送给上位机进行处理[2]。所设计的上位机监测软件主要是针对采用RS232、RS485等串口通讯的下位机或信息采集模块。整个监测软件包括数据采集和数据处理两大功能,其中数据采集通过VB的Mscomm通讯控件实现,对数据进行处理后将其存入ACCESS数据库。无线传感器网络在设计时一般都要求实现低功耗、长时间运行,为了实现该目标,采集节点的功能软硬件应该尽量简单,采集节点仅将采集的原始数据发送给中心节点,由监测软件对原始数据进行解码和公式运算。
图1 γ辐射监测系统Fig.1 Gamma radiation monitoring system
1 监控软件设计
1.1 功能简介
无线网络监测软件是在Windows环境下利用VB6.0编写的,该软件功能丰富,界面良好,使用简单,可以完成ZigBee无线网络状态监测、监测区域显示、实时测量数据显示等功能。在软件设计中,采用模块化的设计思想进行设计。监测程序主要由4个模块组成,如图2所示,即串口配置模块、网络状态及信息显示模块、实时趋势显示模块及历史数据查询模块。
图2 监控软件功能组成Fig.2 Functions of monitoring software
1.2 软件设计
为了便于上位监测软件的使用,在程序主页面上划分了3个功能区域,如图3所示,它们分别是上位机与协调器串口设置区域、ZigBee网络情况显示区域、实时趋势及历史数据查询区域。其中上位机与协调器串口设置区域可以根据实际情况完成对硬件串口端口号、波特率、数据位、停止位、校验位的配置,配置完成后通过按钮开始执行监控任务;ZigBee网络情况区域主要用于无线网络状态和实时数据进行显示,包括无线网络中节点数量及节点代码显示和各节点实时信息的显示;实时趋势及历史数据查询区域,通过按钮调用对应的功能,在对应页面上通过选择监测区域等信息实现对应区域信息的实时趋势显示和历史数据查询的功能。
图3 主监控页面Fig.3 Main monitoring page
上位机监测软件利用VB6.0的Mscomm控件采集从ZigBee网络协调器传送来的测量数据,从缓存中提取信息后直接在主页面进行显示,同时将原始数据进行处理并按区域节点编号存入数据库中。监控软件可以在收到信息后将区域节点信息、测量信息(计数率)进行实时显示;用户也可以查询各个监测区域的历史信息。为了直观的查看某个监测区域的实时测量信息,可以在实时趋势界面选择要查看的区域,通过实时趋势曲线进行观测。
1.2.1 软件与协调器通讯
监控软件设计的第一步就是要完成与ZigBee网络协调器的通讯。监测系统的协调器是通过串口与上位机进行连接的,由于传统的RS232通讯使用单端驱动非差分接受电路,其传输距离收到了很大限制,为了增加通讯距离可以采用适当的通讯转换器将其进行转换,以便于上位机放置于适于人员居留的区域。上位机对串口数据的采集通过调用VB编程实现的[3],通过调用通讯控件Microsoft Communications Control。MSComm通信控件可以提供一系列的标准通信命令的接口,可以与串口及其他多种通信设备建立连接,可以发送指令、交换信息以及监视通讯中的错误并完成事件响应,是一种全双工、事件驱动、高效实用的通信程序接口。MSComm控件通过串行端口传输和接收数据,该控件提供了事件驱动方式和定时查询方式两种通讯处理方式[4],编程时采用的是事件驱动。
在工程中添加完成MSComm控件和完成控件的控制变量设置之后,要根据协调器串口的情况对控件进行初始化设置,主要是端口选择、波特率设置、奇偶校验、起始位设置等信息。为了实现事件驱动,还需通过RThreshold要设置事件触发方式,就是通过设置接收缓存收到一定字节的信息后触发相应标志位,从而产生OnComm事件[5],涉及到的控件属性主要有:CommPort属性:对通讯的端口号进行配置或读取。在设计时,value可以设置成从1到16的任何数(缺省值为1);RThreshold属性:该属性用来设置MSComm控件OnComm事件的产生,当接收缓存中收到指定数量的字符时产生OnComm事件,从而进入事件处理程序;Settings属性:用来对串口通讯的速率、校验位、数据位、停止位进行配置或读取当前串口配置信息。本设计中串口的配置程序如下:
Private Sub InitialPort(SerialPort As String, BaudRate As String, ParityBit As String, DataBit As String, StopBit As String) ′串口配置程序
MSComm1.CommPort=Val(Mid(SerialPort,4, Len(SerialPort)-3)) ′ 配置端口端口号
MSComm1.Settings=BaudRate&“,”& Left(ParityBit,1) & “,” &DataBit& “,” &StopBit ′ 对串口通讯速率等进行设置
MSComm1.InBufferSize=512 ′ 对接收缓冲区大小进行设置
MSComm1.InBufferCount=0 ′ 清空接收缓存
MSComm1.RThreshold=1 ′ 设置OnComm事件触发方式
MSComm1.InputMode=comInputModeText
End Sub
通过串口配置程序中MSComm1.RThreshold=1语句可知,Mscomm控件在每收到一个字符后就会产生OnComm事件,OnComm事件的处理程序中取出串口缓冲区收到的数据。由于在ZigBee网络中定义的用户数据长度为37个字符,因此在发生37次事件后才能取出一条完成的信息,通过在程序声明部分定义全局变量来对事件次数进行统计,满足条件后通过调用子过程完成对网络状态判断、数据存储及网络节点显示刷新的功能。串口事件的响应程序如下:
Private Sub MSComm1_OnComm()
Dim BytReceived() As Byte ′定义字节数组
Dim strBuff, dataBuff As String ′定义字符串变量
Dim sj As String ′定义字符串变量
j=j + 1 ′通过全局变量j统计串口OnComm事件次数,由于字符串长度为37,因此设置第37次收到字符时将其存入database并通过对数据分析确认是否有新节点加入网络
Select Case MSComm1.CommEvent
Case comEvReceive ′发生接收事件时
strBuff=MSComm1.Input ′从输入缓冲区读入字符
BytReceived()=strBuff ′将字符串赋值给字节数组,低字节在前,高字节在后
Dim I As Integer
For I=0 To UBound(BytReceived) ′对每个字节检查
If Len(Hex(BytReceived(I)))=1 Then ′如果长度为一位,前面加0变为两位
strData=strData& “0” & Hex(BytReceived(I))
Else
strData=strData& Hex(BytReceived(I))
End If
Next
sj=Right(strData, 2) & Left(strData, 2) ′将高字节与低字节顺序调整
Text2=strData ′ 显示字符进入缓冲区时字节顺序,低字节在前,高字节在后
Text1=Text1 &ChrW(Val(“&H” &sj)) ′将Unicode码对应的高、低字节顺序对调后以Unicode形式显示
Text4=Text1 & Time() ′添加时间
dataBuff=Text4
Text5=dataBuff
strData=“”
If j=37 Then
j=0
Call save_to_database ′调用子过程将串口数据存入数据库同时判断是否有新节点加入网络并将其添加到Combox中
End If
End Select
End Sub
1.2.2 连接数据库
Access数据库是美国微软公司早期开发的一种关系数据库,它一般包含在Microsoft Office办公套件中。VB具有面向对象的数据访问对象接口DAO,该功能的基础是数据库引擎Microsoft Jet。Jet引擎是用户界面和数据库之间的桥梁,如图4所示,能够完成存储、搜索、更新数据的结构等功能。VB用过Data控件(Data Control)和数据访问对象(DAO)实现和Jet数据库引擎的接口。Data控件是VB访问数据库时非常常用的工具,它对数据库中数据的访问是通过3种Recordset对象实现,数据控件方便编程者对数据库的访问而不需特别的编程,可以把Visual Basic的窗体和数据库进行连接。使用数据控件获取数据库中记录时,首先需要在窗体上调出控件,之后通过Data控件的Connect、DatabaseName和RecordSource3个基本属性访问所需的数据记录。VB中的数据库编程是通过创建与被访问对象相对应的数据访问对象,通过操作对象的属性和方法来完成对数据库的操作。
上位机从协调器采集的终端节点辐射信息,上位机采集的信息是由设备节点号和计数率组成的信息,信息长度为37个字符(信息长度可以根据通过自定义ZigBee网络进行调整,但必须包含设备节点号和测量数据),在收到数据后给数据添加时间信息后,从中提取节点号和计数率与收到的时间一同保存到Access数据库中,供后续的查询和处理使用。本系统创建的数据库文件名为radation.mdb,并在该数据库中创建以区域代码、辐射强度和采集时间为字段的数据汇总表,各个字段根据实际数据的大小和格式进行设计。在程序中添加Data控件,并且将其属性Visible属性设置成false,通过编程语言将数据库与程序完成连接,实现存储及查询等功能。Data控件与radation.mdb数据库的连接相关语句如下:
Private Sub Form_Load()
Form1.AutoRedraw=True ′自动刷新窗体
mpath=App.Path ′获取路径
If Right(mpath, 1) <> “/” Then mpath=mpath+“/”
Data1.DatabaseName=mpath+“history.mdb” ′连接数据库
Data1.RecordSource=“数据汇总” ′连接对应数据表
Data1.Refresh ′Data控件激活
End Sub
2 应用测试
监测软件将各个区域的历史信息存入数据库,这样可以方便的功能使用人员进行数据查询,对数据的查询可以按监测区域进行。可以利用SQL语言根据需求设计各种查询组合。在实际使用中点击查询按钮后会弹出相应的窗体,提醒使用者填写要查询的区域,当点击主页面历史查询按钮后,会进入历史信息查询页面,使用者输入要查询的区域代码,点击确定就会在页面中显示查询结果。实时趋势曲线对于反映监测数据的变化比单纯的数据或表格要形象的多,因此监测软件必须具备该功能。通过将串口数据经过分析后放入指定区域的表格内实现趋势图的实时显示功能,实时趋势如图4。通过将终端检测到的脉冲计数进行转换,可以得到本地环境的吸收剂量率。通过查询相关资料可以得到采用的计数管的计数率与吸收剂量的转换因数,经过经计算可以得到大连地区的环境吸收剂量约为90到110nGy/h,在环保部公布的检测范围内,处于正常水平。
图4 实时趋势Fig.4 Real-time trend graph
3 结束语
基于ZigBee的γ辐射监测系统上位机软件充分利用了VB相关的API函数,将通讯技术、数据库、图形处理等技术充分应用,使对无线传感器网络数据的采集变得更加方便,当其作为无线传感器网络的上位机处理软件时,可以代替终端设备完成数据处理功能,减轻终端资源消耗,提高系统可靠性。