?

基于VB的電壓采集及實時監測系統設計

2017-09-12 02:01周文輝鐘建偉周玉超張建業黃謀甫田家俊
關鍵詞:文本框控件串口

周文輝,鐘建偉 ,周玉超,張建業,黃謀甫,田家俊

(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 系統總體設計

圖1 系統總體結構圖Fig.1 System structure chart

電壓采集系統主要包括:數據采集單元、數據傳輸單元、人機交互界面三部分.人機交互界面主要由計算機和VB軟件組成;數據傳輸單元主要采用RS-232串口通信進行數據的傳輸;數據采集單元主要采用Zigbee模塊.系統總體結構圖如圖1所示.

2 軟件設計

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

3 仿真結果

用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的交流信號以動態曲線的形式更清楚、更形象顯示于坐標系中.從而整個系統實現了對電壓的實時采集和無線傳輸,以及對采集電壓值的實時顯示和動態曲線顯示.

4 結束語

利用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

猜你喜歡
文本框控件串口
淺談AB PLC串口跟RFID傳感器的通訊應用
基于.net的用戶定義驗證控件的應用分析
巧用文本框實現PPT多圖片排版
PPT文本框的另類應用
關于.net控件數組的探討
數字電源內部數據傳輸的串口通信方法實現
USB接口的多串口數據并行接收方法探索
串口技術的實物調試和虛擬仿真聯合教學模式
文本框酷變3D效果
文本框在地理課件中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合