《電子技術應用》
您所在的位置:首頁 > 電源技術 > 設計應用 > 基于WPF的電能質(zhì)量檢測系統(tǒng)上位機軟件設計
基于WPF的電能質(zhì)量檢測系統(tǒng)上位機軟件設計
2016年微型機與應用第06期
鄭恒持,,蔣丁宇,盧興泉,劉泊江
(大連海事大學 輪機工程學院,,遼寧 大連 116026)
摘要: 電能質(zhì)量直接影響著電力系統(tǒng)能否安全運行,為了能及時可靠地檢測電能質(zhì)量,采用全新的Windows Presentation Foundation(WPF)技術,設計了一款電能質(zhì)量檢測系統(tǒng)上位機軟件,。從工業(yè)控制上位機軟件的特點出發(fā),實現(xiàn)了上位機與下位機的串口通信,繪制了實時數(shù)據(jù)波形圖及諧波波形圖,,完成了檢測數(shù)據(jù)的清晰顯示,。該系統(tǒng)人機界面美觀,操作方便,,數(shù)據(jù)存儲量大,,功能完善。
Abstract:
Key words :

  鄭恒持,,蔣丁宇,,盧興泉,劉泊江

 ?。ù筮B海事大學 輪機工程學院,,遼寧 大連 116026)

  摘要:電能質(zhì)量直接影響著電力系統(tǒng)能否安全運行,為了能及時可靠地檢測電能質(zhì)量,,采用全新的Windows Presentation Foundation(WPF)技術,,設計了一款電能質(zhì)量檢測系統(tǒng)上位機軟件。從工業(yè)控制上位機軟件的特點出發(fā),,實現(xiàn)了上位機與下位機的串口通信,繪制了實時數(shù)據(jù)波形圖及諧波波形圖,,完成了檢測數(shù)據(jù)的清晰顯示,。該系統(tǒng)人機界面美觀,操作方便,,數(shù)據(jù)存儲量大,,功能完善。

  關鍵詞:WPF,;串口,;波形圖;數(shù)據(jù)顯示

0引言

  隨著電子電氣設備的不斷增多及設備功能的完善,,人們對電能質(zhì)量的要求也越來越高,。電能質(zhì)量檢測是評估電能質(zhì)量水平、發(fā)現(xiàn)電能質(zhì)量問題的主要手段[1],。

  WPF是基于.NET Framework框架的面向下一款操作系統(tǒng)的圖形化桌面應用設計軟件[2],,本文采用WPF界面實現(xiàn)技術,運用C#語言編寫邏輯代碼,,設計一款功能強大的電能質(zhì)量檢測上位機軟件,。

1WPF概述

  1.1WPF體系結構

  WPF使用的是一個多層體系結構。在頂層,,由應用程序和一個完全由托管的C#程序編寫的一組高層服務交互,。將NET對象轉(zhuǎn)化成Direct3D紋理和三角形的實際工作,在后臺由一個名為milcore.dll的低級非托管組件完成,。milcore.dll是使用非托管代碼實現(xiàn)的,,因為它要與Direct3D緊密集成,,而且它對性能十分敏感。需要明確的事實是,,在WPF中幾乎所有繪圖內(nèi)容都是由Direct3D渲染的,,甚至二維圖形和普通文本也被轉(zhuǎn)換為三角形傳送到Direct3D管線,而不是使用GDI+或User32渲染圖形[3],。

  1.2WPF優(yōu)點

  WPF是全新的編程模型,,底層圖形技術不再是GDI/GDI+,而是以DirectX作為核心繪圖函數(shù),。DirectX繪圖時會將盡可能多的工作交給圖形處理單元(GPU)處理,,WPF會將CPU和GPU分開利用[4],因為GPU的浮點計算能力遠高于CPU,,從而保證了大量計算的優(yōu)先性,,同時也能最小化CPU使用率。DirectX繪圖速度高于GDI/GDI+,,能產(chǎn)生更好的視覺效果,。對于大量的浮點運算圖形來說,WPF是一個很好的選擇,。同時,,WPF能夠根據(jù)系統(tǒng)DPI設置,非常靈活地放大和縮小顯示內(nèi)容,,以使其適合所使用的顯示器,。

2上位機軟件設計與實現(xiàn)

  2.1界面設計

  系統(tǒng)界面主要由串口參數(shù)設置區(qū)、電能質(zhì)量參數(shù)顯示區(qū),、實時數(shù)據(jù)波形區(qū),、通道選擇區(qū)以及實時數(shù)據(jù)監(jiān)測區(qū)5部分組成。圖1為上位機界面,。

  

001.jpg

  2.2上位機軟件功能實現(xiàn)

  本上位機軟件主要的功能是將單片機采集的數(shù)據(jù)解析并顯示,,同時繪制波形圖來清晰地展現(xiàn)檢測的電能質(zhì)量。

  2.2.1實時數(shù)據(jù)波形圖的繪制

  上位機軟件往往需要顯示各種信號的變化,,這時經(jīng)常需要波形圖[5],。波形圖能夠直觀地反映出信號的變化及走勢,有助于分析檢測信號,。雖然WPF本身的繪圖功能非常強大,,但是如果每種圖表都要自己重新去實現(xiàn)一次的話,工作量就會變得異常大,。這時就非常有必要使用一種專業(yè)的圖表生成工具Visifire,。

  Visifire是一款適用于微軟平臺下的控件,能夠用于WPF、Sliverlight,、SharePoint以及WindowsPhone平臺,,并且各平臺使用相同的API,易于開發(fā)和跨平臺使用[6],。本軟件的實時數(shù)據(jù)波形圖和實時諧波波形圖就是利用Visifire控件將采集來的信號點處理后繪制成曲線,。其中曲線圖滿足以下特點:

  (1)通過Chart的ScrollingEnabled屬性實現(xiàn)圖表的滾動功能,;

 ?。?)可以通過ZoomingEnabled和ZoomingMode實現(xiàn)鼠標框選放大和鼠標滾輪放大或縮小,;

 ?。?)Demo已經(jīng)實現(xiàn),原理是Series[0].DataPoints綁定DataPoints值集合時,,按需求移出該集合的第一個點并添加最后一個點,,界面圖會跟隨變化;

 ?。?)將Chart的ToolBarEnabled的屬性值設置為true,,則將鼠標指針移動到圖表上時右上角會顯示導出、打印的圖標,。

  2.2.2實時監(jiān)測數(shù)據(jù)的顯示

  數(shù)據(jù)顯示主要包括了電能質(zhì)量參數(shù),、實時檢測數(shù)據(jù)、諧波數(shù)據(jù)的顯示,。其中由于實時檢測數(shù)據(jù)較多,因此顯示最為復雜,。這里使用DataGrid控件,。DataGrid是WPF中功能最完備的數(shù)據(jù)顯示工具。它將數(shù)據(jù)分割到包含行和列的網(wǎng)格中,,每行都與一個單獨的對象相對應,,每列與該對象的一個屬性相對應。創(chuàng)建DataGrid關鍵是去定義列,。

  這里使用繼承自DataGridColumn的DataGridColumn類來動態(tài)地生成列,。這種列對于大部分數(shù)據(jù)類型是標準選擇。當定義列時,,幾乎總是設置3個細節(jié):在列頂部顯示的題頭文本,、列的寬度以及獲取數(shù)據(jù)綁定。

  列的題頭可以通過設置DataGridColumn.Header屬性實現(xiàn),,但不必限制為普通文本,。列的題頭是內(nèi)容控件可以為Header屬性提供任何內(nèi)容,包括圖像或者具有元素組合的布局面板。

  列的寬度可以通過設置DataGridColumn.Width屬性和DataGrid.ColumnWidth來實現(xiàn),。二者唯一的區(qū)別是前者屬性應用于單個列,,而后者為整個表中所有的列設置默認寬度,而且當設置前者時會覆蓋后者,。

  最重要的細節(jié)是為列提供恰當?shù)男畔⒔壎ū磉_式,,通過設置DataGridColumn.Binding屬性提供該綁定表達式。如果把Binding比作數(shù)據(jù)的橋梁,,那么它的兩端分別是Binding的源和目標,。

3串口通信

  電能質(zhì)量檢測系統(tǒng)由以單片機為核心的采集板卡完成數(shù)據(jù)的采集,由上位機軟件通過特定的算法完成對各個復雜參數(shù)的處理并顯示,,所以需要兩者之間實現(xiàn)通信,,這里使用異步串行通信。采用WPF開發(fā)串口通信程序主要有3種方法:第一種方法是通過MSComm控件,;第二種方法是采用微軟在.NET中推出的一個串口控件SerialPort,;第三種方法是用API函數(shù)[7]。為方便起見,,使用了SerialPort控件,。

  3.1SerialPort控件使用流程

 

002.jpg

  在使用SerialPort控件實現(xiàn)串口通信時,首先應該根據(jù)設計要求構建出程序設計的框架,,接著設置通信對象,、通信端口、波特率,、數(shù)據(jù)位,、停止位,再根據(jù)需求編寫相應的實現(xiàn)程序完成數(shù)據(jù)的接收和發(fā)送,,接著完成數(shù)據(jù)解析和處理,,最后關閉通信端口[8],通信過程如圖2所示,。

  3.2串口配置

  通過[PortName]屬性獲取或設置通信端口,,包括但不限于所有可用的COM端口,該屬性返回類型為String,,PortName正常返回值為COM1,、COM2……。SerialPort控件分別用[BaudRate],、[Parity],、[DataBits]、[StopBits]屬性設置通信格式中的波特率,、數(shù)據(jù)位,、停止位和校驗位[9],。

  3.3串口讀取數(shù)據(jù)

  當初始化工作結束,打開串口時,,SerialPort會創(chuàng)建一個監(jiān)聽線程ListenThread,,在這個線程中,等待注冊的串口中斷,,當收到中斷后,,會調(diào)用DataReceived事件[10],根據(jù)已設定的通信協(xié)議,,運用Read方法讀取數(shù)據(jù)并完成數(shù)據(jù)的解析,。調(diào)用完成后,繼續(xù)進入循環(huán)等待,,直到串口被關閉退出線程,。

  3.4關閉串口

  通信結束后,通過調(diào)用Close()方法關閉串口,。

4結論

  經(jīng)過驗證,,本文設計的上位機軟件與下位機實現(xiàn)了很好的配合,能夠充分完成電能質(zhì)量各個參數(shù)的實時檢測與顯示,。同時將全新的WPF技術應用到上位機軟件的開發(fā)中,,使軟件開發(fā)簡單化、界面美觀化,、功能強大化,。

參考文獻

  [1] 葉敦范,劉鑫,李亞敏,,等.一種電源智能測試儀的設計與實現(xiàn)[J].電子技術應用,2014,40(5):9396.

 ?。?] Su Haikang, Sheng Jin. Application of video anaglyph maker for 3-D flow simulation[J]. Journal of Hydrodynamics,2010,22(2):289294.

  [3] MACDONALD M. WPF編程寶典[M].王德才,,譯.北京:清華大學出版社,,2011.

  [4] 李成剛,,馮靜,凌琳. 基于WPF的交互式繪圖系統(tǒng)的開發(fā)[J].微型機與應用,,2011,,30(6):50.

  [5] 劉亞雷,于艷美,孟春寧,,等.一種便攜式水下圖像實時采集系統(tǒng)軟件設計[J].微型機與應用,2015, 34 (19):2023.

 ?。?] MAGDA Y. Serial port controls ADC[J]. Test & Measurement World,2008,28(9):22.

  [7] 李江全,,鄧紅濤,,劉巧,,等. Visual C#.NET串口通信及測控應用典型實例[M].北京:電子工業(yè)出版社,2012.

 ?。?] 王文泉. 基于SerialPort的串口通信系統(tǒng)實現(xiàn)[J]. 科技廣場,2011(5):2123.

 ?。?] 李麗萍,魏權利.NET中SerialPort類在短信收發(fā)軟件中的應用[J]. 微型機與應用,2012,31(21):1113.

  [10] Zhang Tao. Research and application of serial communication modules based on VB[J]. Energy Procedia,2013,180:10291033.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉(zhuǎn)載,。