周文辉,钟建伟 ,周玉超,张建业,黄谋甫,田家俊
(1. 湖北民族学院 信息工程学院, 湖北 恩施 445000;2.国网恩施供电公司,湖北 恩施 445000)
基于VB的电压采集及实时监测系统设计
周文辉1,钟建伟1,周玉超2,张建业2,黄谋甫2,田家俊2
(1. 湖北民族学院 信息工程学院, 湖北 恩施 445000;2.国网恩施供电公司,湖北 恩施 445000)
基于VB6.0中的MSComm控件和串口通信原理,实现上位机与Zigbee通信模块的无线连接,并实现实时的电压数据采集.首先由Zigbee模块进行电压的信号采集,再将采集到的信号传送到计算机,计算机通过VB编写程序,通过MSComm控件与Zigbee模块建立通信协议,并且将Zigbee采集到的信号进行接收,然后再利用VB对采集的信号分析处理,并显示在VB可视化界面中,最终将数据存储并实时监测.由于VB简单、高效并且具有良好的可视化效果,因此该系统设计经济实用,界面简单,运行稳定,操作简便,可视化程度高,可以满足实际项目的需要.
Visual Basic;Zigbee模块;数据采集;串口通信;人机交互界面
在现如今的社会,物联网的技术发展的越来越快,智能化程度也越来越高[1-3].智能化的电压数据采集方式已成为了各电力行业的基础.在许多实验和实际工程中都需要分析各种物理量,例如电流、电压、功率等.在实际工程和实验室中,这些各种的物理量通过一些专门的采集系统记录并且传输到计算机,然后通过计算机进行分析并且处理得到实验结果.在实际工程中,现场实时的电压采集和显示是非常重要的,并且在很多领域都有特别广泛的应用.传统的电压采集方法大多都使用单片机进行现场电压采集和用有线的传输方式向上位机传输数据.但是由于单片机易受到干扰和运行速度慢,并且在处理大量数据的时候易出现死机等问题,在实时性和可靠性要求高的地方不能应用.文献[4]采用FPGA数据采集周期短、灵活,但是成本高,功耗大,电路设计困难;文献[5]采用光纤传输速度快,但传输数据不灵活;文献[6-7]采用单片机与PC机通讯速度较慢,并且运行不稳定.而VB运行稳定,可靠性高,可以处理大数据,可视化效果高,并且Zigbee无线通信技术已经较为成熟,在很多领域得到应用,而且传输速度比较快,保密程度高,成本相比其它通信技术低,采集数据方便灵活.
本文将Zigbee通信模块和VB相结合,除了可以满足数据采集的准确性和稳定性外,还可以满足实时、简洁、高效的要求,并且满足大量数据处理过程中复杂的逻辑关系需求.
利用Zigbee模块和具有RS-232标准接口的计算机进行通信,从而组成一个串行通信系统,通过Zigbee模块采集电压数据,并通过无线传输技术传送到上位机,再通过VB对传输的数据进行处理和分析,最终形成电压动态曲线并存储到计算机.
图1 系统总体结构图Fig.1 System structure chart
电压采集系统主要包括:数据采集单元、数据传输单元、人机交互界面三部分.人机交互界面主要由计算机和VB软件组成;数据传输单元主要采用RS-232串口通信进行数据的传输;数据采集单元主要采用Zigbee模块.系统总体结构图如图1所示.
2.1 MSComm控件的特点
VB6.0中的MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备[3-4].还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序,特别适合Windows程序的编写[5-7].在通信中,当收到数据、发送数据或者发生传输数据出现错误时,触发MSComm控件的OnComm事件,然后再通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应的数据处理[8].因此用MSComm控件实现微机串口的数据通信非常简单,可以以很少的程序代码轻松实现串口的访问和数据通信[9].因此在软件设计工具的选取方面,本设计在编程语言方面使用Visual Basic语言.
2.2 软件界面的设计
图2 系统主界面Fig.2 System main interface
由于需要串口的通信,因此必须加入一个MSComm控件,用来选定控件的端口值,不同的串口可以设定不同的端口号.再根据RS-232串口的特性来调整Settings属性,对串口进行初始化参数设置;同时需要添加三个Timer控件,分别用来实现系统时钟的显示、定时功能以及控制图形的动态显示的功能;再加入文本框TextBox控件,一方面可以用来输入指令以及输入数值,另一方面可以将采集的数据实时的显示出来;CommandButton控件作为命令按钮,它主要用来操作单击事件,当单击它时可以执行不同的命令[10];可以在OptionButton控件中选择不同的显示方式以便根据不同的需要在文本框中显示;Picture控件用来显示动态的曲线图形.系统主界面如图2所示.
2.3 上位机程序设计
如果串口已经被关闭,则直接可以选择不同的端口号,再将串口打开;如果串口已经被打开,需要先关闭串口[11],再选择不同的端口号,然后打开串口.当串口选择出现错误或者串口被占用时,系统会自动提示“串口出现错误或被占用”.上位机的工作流程图,如图3所示.
2.3.1 程序初始化 程序的初始化是一个程序最重要的部分,它主要包括一下几个方面:对串口的初始化;串口的数据位、波特率、停止位、奇偶校验位的设定;设定输出、输入缓冲区的大小[12];对SThreshold、RThreshold属性的属性值进行设置等.本系统设计的波特率设置为115 200 b/s,也可以按照不同的实际情况进行设置,但是要与计算机的波特率保持一致.串口的数据位设置为8位,停止位设置为1位,奇偶校验位设置为NONE.以二进制方式接收数据,再将二进制转换十进制,显示在文本框,当接收一个字符时触发OnComm事件[13].初始化代码如下:
图3 上位机的工作流程图Fig.3 The flow chart of the host computer
Private Sub Initial(Serial As String, Baud As String, Parity As String, Data As String, Stop As String)
On Error GoTo Err ′假如出现未知错误,则出现错误提示,修改错误
MSComm.Comm = Val(Mid(Serial,5, Len(Serial) - 4))′设置不同的串口
MSComm.Settings = Rate & "," & Left(Parityt,2) & "," & Data & "," & Stop
MSComm.InBuffer = 4096
MSComm.OutBuffer = 1024
MSComm.InBuffer = 1
MSComm.OutBuffer = 0
MSComm.SThreshold = 1
ErrLine: ′错误处理程序
End If
Err.Clear ′清除错误
End Sub
2.3.2 建立图像坐标系 在本设计中,为了便于观察电压的实际变化情况,在Picture上建立直角坐标系,当打开串口时,点击开始采集按钮,则形成直角坐标系.基本语句如下:
Private Sub draw()
Picture1.FontSize = "15" ′设置字体大小
Picture1.DrawWidth = 1
Picture1.ForeColor = QBColor(12)
Picture1.Cls
Picture1.Line (0, -88)-(0, 88) ′纵坐标
Picture1.Line (-1, 86)-(0, 88) ′纵坐标箭头及y值
Picture1.Line (1, 86)-(0, 88)
Picture1.PSet (1, 88)
Picture1.Print "y
Next Y
T = 0
Timer2.Enabled = True
End Sub
2.3.3 数据的接收 当串口打开开始接收数据时,根据Zigbee串口通信的协议,Zigbee传输过来的数据在TxtReceive文本框中显示.接收程序语句如下:
Private Sub CmdStop_Click()
On Error GoTo ErrLine
If CmdStop.Caption = "停止" Then
CmdStop.Caption = "继续"
TmrInterval.Enabled = False
Else
CmdStop.Caption = "停止"
TmrInterval.Enabled = True
Exit Sub ′退出程序
ErrLine:
End If
End Sub
2.3.4 数据的实时计数 为了更好的实时了解传输的数据,将传输数据进行实时统计,在VB界面中建立TxtReceiveCount控件,对传输数据实时计数,计数语句如下:
Private Sub CmdCount_Click()
On Error GoTo ErrLine
SendCount = 0 ′发送计数器清零
ReceiveCount = 0 ′接收计数器清零
TxtReceiveCount.Text = "" ′接收计数显示值
TxtSendCount.Text = "" ′发送计数显示值
Exit Sub ′退出程序
ErrLine:
End If
End Sub
2.3.5 数据的存储 当数据开始采集并传输到计算机后,点击数据存储按钮,对数据进行保存,程序以指定名字为文件名建立存储数据文件,文件名格式为“数据文件_×年×月×日”,以便以后调用查看.数据存储语句如下:
Private Sub CmdSaveData_Click()
On Error GoTo ErrLine
Dim SaveFileId As Integer
Dim I As Integer
Dim File As String ′自定义一个文件名称以便进行统计
Dim StrName As Integer ′定义保存文件的文件名
SaveFileId = FreeFile() ′取得可以打开的文件编号
′以指定名字为文件名建立存储数据文件
StrFileName = App.Path + "” + "数据文件_"+CStr(Day) + "日" + CStr(Month) + "月"+CStr(Year) + "年" + CStr(FileCount) + ".txt"
Do While Dir(StrName) <> "" ′建立一个文件名
FileCount = FileCount + 1 ′文件记数器加1
StrFileName = App.Path + "” + "数据文件_"+ CStr(Day) + "日" + CStr(Month) + "月" + CStr(FileCount) + ".txt"
Print #SaveFileId, Date ′向应用程序目录下的保存文件输出日期
Print #SaveFileId, "时间:";
Print #SaveFileId, Time ′向应用程序目录下的保存文件输出时间
Exit Sub ′退出程序
ErrLine:
End If
End Sub
2.3.6 形成动态曲线 在存储了Zigbee传送的数据之后,为了能够更清楚、更形象的实时表达传输的数据,把它用动态曲线的形式表现出来.打开存储的数据文件,从中按传输顺序实时的一个一个地调用出来,以传输的数据为Y轴,以时间为X轴,把数据绘制于坐标中,其中核心程序如下:
Call draw
End Sub
Private Sub Timer1_Timer()
End Sub
Private Sub Timer2_Timer() ′画图
Picture1.DrawWidth = 1
Picture1.PSet (T, Val(TxtReceive.Text)), vbGreen
T = T + 1
If T > 100 Then
Call draw
End If
End Sub
用VB完成串口的初始化与串口通信的设计,可以接收Zigbee传输的数据,并将数据反馈到其他设备.通过对不同串口的选择和对串口的初始化设置以及对波特率的匹配,完成Zigbee模块与计算机之间的串口的通信以及数据的传输.如图4为仿真结果.
图4 仿真结果Fig.4 Simulation results
在本设计中,仿真信号源采用信号发生器产生峰峰值为4V、频率为5 000HZ的交流信号,再利用两个Zigbee模块,一个做为协调器、一个做为终端,当信号发生器产生交流信号,终端会自动采集信号,然后无线传输到协调器,再由协调器无线传输至VB界面,从而实现了对信号的采集和无线传输.接着再对串口参数进行配置:将其端口号选为COM3、波特率设置为115 200即一秒钟传输14 400个字节、数据位设置为8位、停止位设置为1位、校验位设置为NONE,并可用保存配置按键将其串口配置保存下来,以便下次用载入配置按键直接载入使用.同时,串口配置完成后,在界面下方会显示串口配置的参数和实时显示系统时间.此时,可以点击打开串口按键将串口打开,实现VB界面与Zigbee采集模块之间的无线通信.而采集到的电压值的大小会实时显示在界面上的TxtReceive文本框中,电压数据的显示方式也可选择字符型和Hex型不同的类型,本次仿真采用字符型显示方式.同时实时计数模块被激活,自动对实时采集到的电压进行计数,并显示在TxtReceiveCount控件中.接收区清空按键可对TxtReceive文本框中的电压实时数据进行清空,以清除老旧的不需要的数据.保存数据按钮可对实时采集的电压数据以指定文件名进行保存至数据库,以便以后的调用查看以及对电压等级的判断,当电压等级大于3 V时,信号指示灯会由绿色变为红色,到达预警的目的,采集到的电压数据也可通过TxtSend文本框或者以保存到数据库的文件形式发送到其它计算机,以此来实现不同计算机之间的无线通信.点击数据采集按键可建立图像坐标系,将实时采集的电压数据以动态曲线的形式显示在坐标系中,本次仿真将采集到的电压进行放大,形成峰峰值为720 V、频率为5 000 HZ的交流信号以动态曲线的形式更清楚、更形象显示于坐标系中.从而整个系统实现了对电压的实时采集和无线传输,以及对采集电压值的实时显示和动态曲线显示.
利用VB6.0可以很便捷的设计基于串行通信的数据采集系统.利用不同通信串口同时与Zigbee终端进行通信.通过仿真验证,本系统采集数据的速度快速而且准确,系统运行稳定,完全能够达到实际工程的需要.
本系统利用VB6.0中的MSComm控件和Zigbee模块通过RS-232串口进行通信,实现了对电压的实时采集、显示和数据上传以及对电压的实时监测的功能.基于VB的人机交互在线监测系统,实现了对数据采集单元的远程监控,以及实现了采集电压数据的实时显示、存储和动态曲线的绘制.本系统在实验和实际的项目工程中都有一定的使用价值.
[1] 石永帅.基于VB的多路数据采集系统的实现[J].中国科技信息,2012(12):134-135.
[2] 祝敬德,李杰,冯凯强,等.基于FT245RL和FPGA的电路数据采集系统设计[J].计算机测量与控制,2015,23(1):187-190.
[3] 曽立武,黄晓锋,兰紫娟.基于VB6.0串口通信的环境空气质量自动监测系统[J].现代电子技术,2012,35(20):155-158.
[4] 刘宇鸿,蒋留冰,车俐,等.基于FPGA的数据采集与回放系统设计[J].桂林电子科技大学学报,2015,35(1):31-34.
[5] 陈平,杨建,王炬城.基于FPGA的高速光纤数据传输板卡设计[J].信息通信,2015(1):79-80.
[6] 刘艳美,姜波. VB实现PC机与单片机(8051)的串口通讯[J].自动化技术与应用,2007,26(11):94-96.
[7] 刘风声.基于VB6.0的单片机与PC机通讯的实现与应用[J].计算机技术与发展,2007,17(10):202-208.
[8] 祁建广,李宝营,孙玉明.基于VB6.0的多路数据采集与处理系统[J].大连工业大学学报,2009,28(1):51-53.
[9] KENA T.Secure configuration of field programmable gate array[C]∥International conference on Field programmable Logic and Applications,Springer,Berlin,Heiolelbeg,2001:142-151.
[10] 席振元,陈立伟,林蜀闽.基于 FPGA 的 PCI 目标接口控制器的设计与实现[J].计算机工程,2005,3(31):221-222.
[11] SARKAR S, SHARMA T, BARAL A.A New Approach for Determination of Moisture in Paper Insulation of In-Situ Power Transformers by Combining Polarization-Depolarization Current and Return Voltage Measurement Results[J].IEEE Transactions on Dielectrics and Electrical Insulation,2013,20(6):2325-2334.
[12] YANG S,XIANG D,BRYANT A,et al. Condition monitoring for device reliability in power electronic converters:a review[J].IEEE Transactions on power Electronics,2010,25(11):2734-2751.
[13] 陈小荣,唐涛,王晋杰.基于Visual Basic的多通道相参接收机测试系统设计[J].国外电子测量技术,2015,34(12):63-68.
责任编辑:时 凌
Design of Voltage Acquisition and Real-time Monitoring System Based on VB
ZHOU Wenhui1,ZHONG Jianwei1,ZHOU Yuchao2,ZHANG Jiange2,HUANG Moufu2,TIAN Jiajun2
(1.School of Information Engineering, Hubei University for Nationalities,Enshi 445000,China; 2.State Grid Enshi Power Supply Company,Enshi 445000,China)
Based on the principle of MSComm control and serial interface communication of VB6.0,we realize the upper machine and Zigbee wireless communication module connection,and realize the real-time voltage data collection.First,the Zigbee module collects the voltage signal acquisition,and the collected signal is sent to the computer which writes program by VB.The communication protocol is established through the MSComm control and Zigbee module,the signal collected by Zigbee is
,and then the VB is used to analyze and process the collected signal which is displayed in the VB visual interface.Finally the data is stored monitored on real-time basis.As VB is simple,efficient and has good visual effect,the system is economical and practical,easily operable and has friendly interface and high degree of visualization,and it can meet the needs of the actual project.
Visual Basic;Zigbee module;data acquisition;serial communication;man-machine interface
2017-05-11.
国家自然科学基金项目(61263030/61463014).
周文辉(1991-),男,硕士生,主要从事配电自动化与分布式发电的研究;*
钟建伟(1972-),男,硕士,教授,主要从事配电自动化与分布式发电的研究.
1008-8423(2017)03-0323-05
10.13501/j.cnki.42-1569/n.2017.09.017
文献标志码:A