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

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

  (大連海事大學(xué) 輪機(jī)工程學(xué)院,,遼寧 大連 116026)

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

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

0引言

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

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

1WPF概述

  1.1WPF體系結(jié)構(gòu)

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

  1.2WPF優(yōu)點(diǎn)

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

2上位機(jī)軟件設(shè)計(jì)與實(shí)現(xiàn)

  2.1界面設(shè)計(jì)

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

  

001.jpg

  2.2上位機(jī)軟件功能實(shí)現(xiàn)

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

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

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

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

 ?。?)通過(guò)Chart的ScrollingEnabled屬性實(shí)現(xiàn)圖表的滾動(dòng)功能;

 ?。?)可以通過(guò)ZoomingEnabled和ZoomingMode實(shí)現(xiàn)鼠標(biāo)框選放大和鼠標(biāo)滾輪放大或縮?。?/p>

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

  (4)將Chart的ToolBarEnabled的屬性值設(shè)置為true,,則將鼠標(biāo)指針移動(dòng)到圖表上時(shí)右上角會(huì)顯示導(dǎo)出,、打印的圖標(biāo)。

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

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

  這里使用繼承自DataGridColumn的DataGridColumn類來(lái)動(dòng)態(tài)地生成列。這種列對(duì)于大部分?jǐn)?shù)據(jù)類型是標(biāo)準(zhǔn)選擇,。當(dāng)定義列時(shí),,幾乎總是設(shè)置3個(gè)細(xì)節(jié):在列頂部顯示的題頭文本,、列的寬度以及獲取數(shù)據(jù)綁定。

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

  列的寬度可以通過(guò)設(shè)置DataGridColumn.Width屬性和DataGrid.ColumnWidth來(lái)實(shí)現(xiàn),。二者唯一的區(qū)別是前者屬性應(yīng)用于單個(gè)列,而后者為整個(gè)表中所有的列設(shè)置默認(rèn)寬度,,而且當(dāng)設(shè)置前者時(shí)會(huì)覆蓋后者,。

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

3串口通信

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

  3.1SerialPort控件使用流程

 

002.jpg

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

  3.2串口配置

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

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

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

  3.4關(guān)閉串口

  通信結(jié)束后,,通過(guò)調(diào)用Close()方法關(guān)閉串口。

4結(jié)論

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

參考文獻(xiàn)

 ?。?] 葉敦范,劉鑫,李亞敏,等.一種電源智能測(cè)試儀的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,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.

 ?。?] MACDONALD M. WPF編程寶典[M].王德才,譯.北京:清華大學(xué)出版社,,2011.

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

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

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

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

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

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

 ?。?0] 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)授權(quán)禁止轉(zhuǎn)載。