• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      海量電能質(zhì)量數(shù)據(jù)交換格式文件快速解析方案

      2013-10-17 14:15:06楊洪耕
      電力自動(dòng)化設(shè)備 2013年12期
      關(guān)鍵詞:數(shù)據(jù)源電能解析

      張 逸,楊洪耕

      (1.福建省電力有限公司電力科學(xué)研究院,福建 福州 350007;2.四川大學(xué) 電氣信息學(xué)院,四川 成都 610065)

      0 引言

      隨著電能質(zhì)量監(jiān)測(cè)系統(tǒng)規(guī)模的不斷擴(kuò)大,缺乏標(biāo)準(zhǔn)統(tǒng)一的電能質(zhì)量數(shù)據(jù)存儲(chǔ)體系所造成的監(jiān)測(cè)數(shù)據(jù)管理困難問題越發(fā)嚴(yán)重。IEEE 1159.3標(biāo)準(zhǔn)中提出的電能質(zhì)量數(shù)據(jù)交換格式PQDIF(Power Quality Data Interchange Format)[1]完全獨(dú)立于監(jiān)測(cè)設(shè)備的軟硬件,不僅能較好地解決多數(shù)據(jù)源數(shù)據(jù)兼容問題,還可以實(shí)現(xiàn)電能質(zhì)量物理屬性的多角度觀察功能,符合電能質(zhì)量監(jiān)測(cè)技術(shù)的發(fā)展需要[2-3],因此被普遍作為電能質(zhì)量監(jiān)測(cè)系統(tǒng)中監(jiān)測(cè)數(shù)據(jù)交換的標(biāo)準(zhǔn)格式[3-4]。

      目前電能質(zhì)量監(jiān)測(cè)系統(tǒng)普遍采用2層式架構(gòu)[5-7]。在此架構(gòu)下,監(jiān)測(cè)主站按周期采用FTP等協(xié)議直接召喚各監(jiān)測(cè)裝置生成的PQDIF文件[8],并完成隨后的文件解析、數(shù)據(jù)分析、儲(chǔ)存和發(fā)布等工作。與設(shè)置區(qū)域子站的3層結(jié)構(gòu)相比,2層式架構(gòu)結(jié)構(gòu)簡(jiǎn)單,便于管理,且減少了1層設(shè)備的建設(shè)投資和維護(hù)費(fèi)用,經(jīng)濟(jì)性更好,但也存在監(jiān)測(cè)主站負(fù)擔(dān)重的問題。隨著電能質(zhì)量監(jiān)測(cè)系統(tǒng)建設(shè)工作的推進(jìn),監(jiān)測(cè)點(diǎn)的數(shù)量持續(xù)增加,某些地區(qū)的監(jiān)測(cè)系統(tǒng)已包含數(shù)千個(gè)監(jiān)測(cè)點(diǎn)[5-6]。監(jiān)測(cè)裝置周期性地為每個(gè)監(jiān)測(cè)點(diǎn)生成一個(gè)PQDIF文件,這就意味著監(jiān)測(cè)主站需要同時(shí)解析數(shù)千個(gè)PQDIF文件。這種數(shù)據(jù)文件海量化的趨勢(shì)已經(jīng)給傳統(tǒng)的基于串行編程方式設(shè)計(jì)的解析程序帶來了很大困難,其中最顯著的問題是解析時(shí)間過長(zhǎng)、大量資源被占用從而導(dǎo)致監(jiān)測(cè)主站長(zhǎng)時(shí)間無法正常響應(yīng)用戶請(qǐng)求,甚至造成主站系統(tǒng)崩潰。目前國(guó)內(nèi)外文獻(xiàn)中尚無對(duì)上述問題的研究,因此迫切需要一種針對(duì)海量PQDIF文件的快速解析方案。

      隨著計(jì)算機(jī)硬件技術(shù)的發(fā)展,傳統(tǒng)的面向單核的串行編程技術(shù)已逐漸被基于多核多線程模式的并行編程技術(shù)所取代[9]。作為實(shí)現(xiàn)高速計(jì)算的一種重要途徑,并行編程技術(shù)為以上問題提供了一種全新的解決方案。

      基于上述情況,本文提出了一種針對(duì)海量PQDIF文件的快速解析方案。針對(duì)傳統(tǒng)方案中需要重復(fù)解析相同數(shù)據(jù)源的情況,提出了3種可行方法以快速判斷通道序列定義是否改變,僅解析改變了的數(shù)據(jù)源記錄;采用并行編程和緩存池技術(shù),實(shí)現(xiàn)了利用多線程的海量觀測(cè)值記錄并行解析。通過分析在不同CPU核數(shù)、不同PQDIF文件數(shù)量情況下的解析耗時(shí)證明了此方案的實(shí)用性。目前,本文方案已在四川電能質(zhì)量一體化數(shù)據(jù)平臺(tái)中成功應(yīng)用。

      1 PQDIF文件結(jié)構(gòu)與傳統(tǒng)解析方案

      1.1 PQDIF文件結(jié)構(gòu)

      PQDIF文件結(jié)構(gòu)分為物理層和邏輯層。物理層結(jié)構(gòu)定義了基本和復(fù)雜的數(shù)據(jù)類型在文件中的構(gòu)造形式,邏輯層結(jié)構(gòu)定義了電能質(zhì)量數(shù)據(jù)用物理層數(shù)據(jù)的詮釋方式。

      從物理結(jié)構(gòu)上看,PQDIF文件由一系列的記錄所組成,每個(gè)記錄均包含記錄頭和記錄體。記錄頭中包括記錄類型、大小以及指向下一個(gè)記錄的鏈接。記錄體由集合、標(biāo)量和向量這3種類型元素組成:集合可包含標(biāo)量、向量,還可以包含集合;標(biāo)量指特定物理類型的單值;向量為任意大小的數(shù)列[1]。

      PQDIF文件中,數(shù)據(jù)源記錄和觀測(cè)值記錄是最重要的2種記錄,兩者相互關(guān)聯(lián),前者為后者提供測(cè)量值所對(duì)應(yīng)的電能質(zhì)量指標(biāo)類型、單位以及相位等信息,后者根據(jù)前者中對(duì)應(yīng)的定義保存實(shí)際測(cè)量值。在電能質(zhì)量監(jiān)測(cè)系統(tǒng)中,監(jiān)測(cè)裝置投入實(shí)際運(yùn)行后,主站一般也僅解析其上傳的PQDIF文件中的數(shù)據(jù)源記錄和觀測(cè)值記錄。

      1.2 傳統(tǒng)解析方案及其存在的問題

      傳統(tǒng)PQDIF文件解析方案一般直接調(diào)用Electrotek Concepts公司開發(fā)的PQDIF COM(Component Object Model,組件對(duì)象模型),將目前版本pqdcom4.dll注冊(cè)并導(dǎo)入后,即可利用已有的應(yīng)用程序編程接口函數(shù)解析文件,解析單個(gè)PQDIF文件的流程圖如圖1所示。

      圖1 利用PQDIF COM解析單個(gè)PQDIF文件流程圖Fig.1 Flowchart of single PQDIF file parsing by PQDIF COM

      傳統(tǒng)的利用PQDIF COM的解析方案(下文中簡(jiǎn)稱傳統(tǒng)方案)的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,缺點(diǎn)包括執(zhí)行速度較慢、編碼不靈活、僅支持Windows 32位操作系統(tǒng)、處理大文件時(shí)內(nèi)存占用大等[3,10]。最關(guān)鍵的是,PQDIF COM自身未提供針對(duì)解析多個(gè)PQDIF文件的優(yōu)化方法,只能循環(huán)重復(fù)單個(gè)文件的解析過程,逐一解析每個(gè)文件。

      目前,四川電能質(zhì)量一體化數(shù)據(jù)平臺(tái)(下文中簡(jiǎn)稱平臺(tái))中已包含343個(gè)監(jiān)測(cè)點(diǎn),監(jiān)測(cè)裝置每天為每個(gè)監(jiān)測(cè)點(diǎn)生成1個(gè)文件,文件中包括暫態(tài)事件數(shù)據(jù)和1 d內(nèi)按1 min時(shí)間間隔保存的統(tǒng)計(jì)數(shù)據(jù)(最大值、最小值、平均值、概率95值,諧波統(tǒng)計(jì)到50次),每個(gè)文件平均大小約為3 MB。

      考慮到某些監(jiān)測(cè)系統(tǒng)已包含數(shù)千個(gè)監(jiān)測(cè)點(diǎn),筆者利用傳統(tǒng)方案測(cè)試解析1500個(gè)PQDIF文件,所有文件均來自平臺(tái)中所有監(jiān)測(cè)點(diǎn)不同天的實(shí)際監(jiān)測(cè)數(shù)據(jù)。測(cè)試服務(wù)器硬件條件為4核2.50 GHz Xeon E5420,內(nèi)存4 GB。由于服務(wù)器負(fù)載變化,導(dǎo)致每次解析耗時(shí)有所不同,因此采用K次最優(yōu)測(cè)量方法[11]得到解析時(shí)間(第4節(jié)中也采用同樣的測(cè)量方法),測(cè)試結(jié)果如圖2所示。由于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)間與所選用的數(shù)據(jù)庫(kù)引擎、數(shù)據(jù)庫(kù)設(shè)計(jì)以及存儲(chǔ)策略有關(guān),故未計(jì)入總耗時(shí)中。

      圖2 傳統(tǒng)方案解析耗時(shí)Fig.2 Time consumption of traditional parsing schemes

      由測(cè)試結(jié)果可知,傳統(tǒng)方案耗時(shí)大約為0.5 h(1 750301 ms),實(shí)際情況中需考慮存儲(chǔ)數(shù)據(jù)庫(kù)的時(shí)間,耗時(shí)將更長(zhǎng)。這將導(dǎo)致監(jiān)測(cè)主站長(zhǎng)時(shí)間無法響應(yīng)用戶請(qǐng)求,而且測(cè)試過程中也有系統(tǒng)崩潰的情況出現(xiàn),因此,傳統(tǒng)方案已經(jīng)無法適應(yīng)目前電能質(zhì)量監(jiān)測(cè)系統(tǒng)中解析海量PQDIF文件的需求。

      2 海量PQDIF文件快速解析方案

      2.1 直接編碼解析方法

      針對(duì)傳統(tǒng)方案的缺點(diǎn),本文方案沒有使用PQDIF COM,而是利用標(biāo)準(zhǔn)中提供的C語(yǔ)言頭文件[1],采用直接編碼的方式,自行編寫解析方法。其優(yōu)勢(shì)包括內(nèi)存使用效率高、執(zhí)行速度快、平臺(tái)通用性強(qiáng)、可方便地進(jìn)入方法內(nèi)部調(diào)試、便于軟件的升級(jí)與維護(hù)等,更重要的是此方案編程靈活[3],便于程序的優(yōu)化設(shè)計(jì)。以下就分別從兩方面針對(duì)海量PQDIF文件解析進(jìn)行優(yōu)化。

      2.2 數(shù)據(jù)源記錄快速解析方法

      在解析PQDIF文件中各序列實(shí)例的數(shù)據(jù)時(shí),需要先獲得其在數(shù)據(jù)源記錄中對(duì)應(yīng)的標(biāo)簽值組合,從而得到此數(shù)據(jù)對(duì)應(yīng)的電能質(zhì)量指標(biāo)類型(如圖1所示)。在實(shí)際已建成的電能質(zhì)量監(jiān)測(cè)系統(tǒng)中,一般通過監(jiān)測(cè)裝置接入規(guī)范規(guī)定了裝置需采集的指標(biāo)類型,故數(shù)據(jù)源記錄相對(duì)固定,而且裝置投入正常運(yùn)行后,每天生成文件中數(shù)據(jù)源記錄的通道序列定義也應(yīng)完全相同,因此,預(yù)先構(gòu)造通道序列定義表(以下簡(jiǎn)稱定義表)保存已知的定義。在解析程序初始化時(shí),將定義表讀入內(nèi)存,隨后對(duì)裝置上傳文件中通道序列定義是否改變進(jìn)行快速判斷,如果未改變,則直接利用內(nèi)存中的定義表得到序列實(shí)例對(duì)應(yīng)的指標(biāo)類型,僅在有變化的情況下才重新解析數(shù)據(jù)源記錄,更新定義表,從而避免重復(fù)解析相同的數(shù)據(jù)源記錄,減少了解析耗時(shí)。

      新型監(jiān)測(cè)裝置接入時(shí),預(yù)先解析數(shù)據(jù)源記錄,得到每個(gè)序列定義的6種標(biāo)簽組合(如圖1中所示),并唯一地確定序列定義的指標(biāo)類型,保存在定義表中??紤]到不同類型裝置的通道序列定義可能不同,故需在表中保存裝置類型標(biāo)識(shí),也可通過在監(jiān)測(cè)裝置接入規(guī)范中強(qiáng)制規(guī)定數(shù)據(jù)源記錄形式來解決,但此方法通用性稍差。定義表如表1所示。

      表1 通道序列定義表Tab.1 List of channel series definition

      PQDIF文件中每個(gè)記錄的記錄頭中均保存有1個(gè)校驗(yàn)和(32 bit的循環(huán)冗余碼校驗(yàn))來保證物理結(jié)構(gòu)的正確性和完整性[1],2個(gè)完全相同的記錄體的校驗(yàn)和相同,故可利用校驗(yàn)和來快速判斷數(shù)據(jù)源記錄是否變化,但存在個(gè)別裝置在除通道序列定義外的其他信息中利用tagEffective標(biāo)簽值表示數(shù)據(jù)源生效時(shí)間或在tagNameDS標(biāo)簽中保存監(jiān)測(cè)點(diǎn)名稱等情況,將造成數(shù)據(jù)源記錄校驗(yàn)和變化。此時(shí),可通過計(jì)算tagChannelDefns及隨后的集合數(shù)據(jù)塊的校驗(yàn)和來判斷通道序列定義是否有改變。此時(shí)應(yīng)注意,如果是tagNameDS這類向量的數(shù)列大小發(fā)生變化(如監(jiān)測(cè)點(diǎn)名稱長(zhǎng)度變化),將會(huì)導(dǎo)致其后集合在記錄體中的相對(duì)地址發(fā)生偏移(即link.linkElement值改變),故此時(shí)需減去偏移量后再計(jì)算校驗(yàn)和。

      因此,針對(duì)如何快速判斷通道序列定義是否發(fā)生變化,有以下3種可行的方法。

      a.在監(jiān)測(cè)系統(tǒng)裝置接入規(guī)范中規(guī)定只有當(dāng)數(shù)據(jù)源記錄需要改變時(shí),裝置才在上傳的文件中包含數(shù)據(jù)源記錄。

      b.規(guī)范各裝置上傳的數(shù)據(jù)源記錄的內(nèi)容(不包含隨時(shí)間或監(jiān)測(cè)點(diǎn)變化的信息),通過比較記錄頭中的校驗(yàn)和快速判斷數(shù)據(jù)源記錄是否改變。

      c.無需對(duì)監(jiān)測(cè)裝置進(jìn)行規(guī)范,對(duì)數(shù)據(jù)源記錄進(jìn)行初步解析得到tagChannelDefns及其后的集合數(shù)據(jù)塊,將其中LinkElement值減去偏移量后計(jì)算數(shù)據(jù)塊校驗(yàn)和,比較判斷其中定義是否發(fā)生變化。

      3種方法解析耗時(shí)和實(shí)現(xiàn)復(fù)雜程度依次增加,但通用性也隨之提高,可根據(jù)監(jiān)測(cè)系統(tǒng)實(shí)施的實(shí)際情況進(jìn)行選擇,本方案采用方法c。

      2.3 觀測(cè)值記錄多線程并行解析方法

      目前,1個(gè)PQDIF文件中通常包含數(shù)個(gè)觀測(cè)值記錄,考慮到時(shí)間序列的差異,一般分為除閃變外的穩(wěn)態(tài)統(tǒng)計(jì)數(shù)據(jù)(諧波、電壓偏差、三相不平衡等)、閃變相關(guān)數(shù)據(jù)(電壓波動(dòng)、短時(shí)閃變和長(zhǎng)時(shí)閃變)以及暫態(tài)事件數(shù)據(jù)(電壓暫降、短時(shí)中斷等)3類記錄,以便共用時(shí)間序列,節(jié)約存儲(chǔ)空間。由于各觀測(cè)值記錄序列實(shí)例之間沒有數(shù)據(jù)依賴關(guān)系,因此可獨(dú)立并行解析。并行模式中,并行數(shù)據(jù)的粒度選擇非常重要,其與領(lǐng)域的數(shù)據(jù)特征和算法的數(shù)據(jù)依賴關(guān)系密切,同時(shí)要權(quán)衡普適性和實(shí)現(xiàn)難度[12]。方案設(shè)計(jì)初期曾考慮參考文獻(xiàn)[13]中并行解析電力系統(tǒng)暫態(tài)數(shù)據(jù)交換通用格式(COMTRADE)文件的數(shù)據(jù)分塊方法,將所有觀測(cè)值記錄平均分成固定大小的數(shù)據(jù)塊交由各線程獨(dú)立解析,并部署專門的線程對(duì)塊邊緣進(jìn)行合并解析,此方法并行粒度高,且各線程負(fù)載較均衡。但測(cè)試后發(fā)現(xiàn),由于PQDIF結(jié)構(gòu)較COMTRADE復(fù)雜很多,數(shù)據(jù)塊邊緣合并困難,不但易出錯(cuò),而且耗時(shí)較長(zhǎng),甚至出現(xiàn)解析線程等待邊緣合并完成的情況,造成了額外的同步等待耗時(shí),而且,專門設(shè)置邊緣解析線程也較浪費(fèi)系統(tǒng)資源。因此,本方案直接選擇觀測(cè)值記錄整體作為并行數(shù)據(jù)粒度,雖然對(duì)于少量文件,并行程度較低,但針對(duì)海量文件,各線程之間負(fù)載的細(xì)微差異基本可以忽略,而且程序?qū)崿F(xiàn)簡(jiǎn)單,不易出錯(cuò)。由于時(shí)間序列解析在觀測(cè)值記錄內(nèi)部解析過程中進(jìn)行,因此,不同類型數(shù)據(jù)的采集時(shí)間間隔差異并不影響解析效率。并行解析原理圖見圖3。

      圖3 多線程并行解析觀測(cè)值記錄原理圖Fig.3 Schematic diagram of multi-threading parallel parsing of observation records

      本文方案專門部署一個(gè)PQDIF文件讀取線程FRT(File Reading Thread),其與觀測(cè)值記錄解析線程 OPT(Observation Parsing Thread)形成流水線并行,并使用任務(wù)池協(xié)調(diào)其速度差異,由于讀取文件,解析數(shù)據(jù)源記錄,并分解出各觀測(cè)值記錄的耗時(shí)僅為解析觀測(cè)值記錄耗時(shí)的8%左右,因此,此優(yōu)化機(jī)制能為OPT提供持續(xù)不斷的數(shù)據(jù)。

      FRT分解得到各觀測(cè)值記錄后,填入任務(wù)池中,隨后繼續(xù)讀取下一個(gè)文件。這里有2種方法可供選擇:第1種是FRT將各觀測(cè)值記錄的所屬文件地址和記錄絕對(duì)地址索引(前一記錄頭中的linkNextRecord值)填入任務(wù)池中,各OPT根據(jù)地址和索引讀取記錄;第2種是FRT直接將分解出的未解壓的觀測(cè)值記錄數(shù)據(jù)塊填入任務(wù)池中。測(cè)試后發(fā)現(xiàn),第1種方法雖然減少了任務(wù)池的內(nèi)存占用,但各線程并行讀取文件,將導(dǎo)致訪問文件的位置有很強(qiáng)的隨機(jī)性,無法利用文件系統(tǒng)的預(yù)取優(yōu)化,降低了磁盤的訪問效率;第2種方法中每個(gè)觀測(cè)值記錄解壓前的大小僅為100 KB左右,并不會(huì)大量占用內(nèi)存。綜合考慮,本文采用第2種方法。

      OPT循環(huán)訪問任務(wù)池,取走待解析的觀測(cè)值記錄,解壓后獨(dú)立并行解析。為了減少有限存儲(chǔ)帶寬的競(jìng)爭(zhēng),將載入內(nèi)存的定義表拷貝到各線程局部變量中。OPT完成解析觀測(cè)值記錄后并不直接將結(jié)果存入數(shù)據(jù)庫(kù)中,而是將其放入數(shù)據(jù)緩存池中,待緩存數(shù)據(jù)達(dá)到一定容量后,由專門的數(shù)據(jù)存儲(chǔ)線程DST(Data Saving Thread)一次性批量插入數(shù)據(jù)庫(kù)中,這樣不但避免了多個(gè)OPT頻繁操作數(shù)據(jù)庫(kù)造成的堵塞,還能夠更好地發(fā)揮批量索引的插入優(yōu)勢(shì)。

      3 解析方案實(shí)現(xiàn)

      3.1 編程環(huán)境選擇

      根據(jù)四川電能質(zhì)量一體化數(shù)據(jù)平臺(tái)采用Windows Server 2008操作系統(tǒng)的實(shí)際情況,本文方案基于微軟最新的.Net Framework4.0(以下簡(jiǎn)稱“.NET 4.0”)編程模型,選擇Visual Studio 2010作為編程開發(fā)工具,它們提供了新的運(yùn)行時(shí)、新的并行擴(kuò)展類以及新的診斷工具,增強(qiáng)了對(duì)并行編程的支持,簡(jiǎn)化了并行開發(fā)[14]。解決方案采用微軟推薦最適合.NET環(huán)境的C#語(yǔ)言作為并行解析項(xiàng)目的開發(fā)語(yǔ)言,為了利用標(biāo)準(zhǔn)中提供的C頭文件[1],利用C++/CLI編寫底層PQDIF文件解析函數(shù),將其作為類庫(kù)項(xiàng)目包含在整體解決方案中,以便與C#項(xiàng)目同時(shí)調(diào)試,并引用其中定義的各PQDIF邏輯結(jié)構(gòu)。單個(gè)通道定義結(jié)構(gòu)體聲明代碼如下:

      3.2 數(shù)據(jù)源記錄快速解析實(shí)現(xiàn)

      預(yù)先構(gòu)造的定義表可利用數(shù)據(jù)庫(kù)或XML文檔存儲(chǔ)。解析程序初始化時(shí),將其載入內(nèi)存中并轉(zhuǎn)化為哈希表結(jié)構(gòu),可利用Hashtable類實(shí)現(xiàn)。利用裝置類型ID、通道序號(hào)以及序列索引組合出唯一的Key值,隨后可通過Key值快速檢索對(duì)應(yīng)的指標(biāo)類型。

      第2.2節(jié)提到的3種方法中,前2種方法的實(shí)現(xiàn)較為簡(jiǎn)單,主要功能C++/CLI代碼如下:

      方案c實(shí)現(xiàn)較復(fù)雜,具體流程圖如圖4所示,在裝置初次接入時(shí)需要用同樣方法計(jì)算并保存校驗(yàn)和以及tagChannelDefns集合中的linkElement值。

      圖4 方案c實(shí)現(xiàn)流程圖Fig.4 Implementation flowchart of method c

      3.3 多線程并行解析觀測(cè)值記錄實(shí)現(xiàn)

      在.NET 4.0中的并行編程是依賴任務(wù)并行庫(kù)TPL(Task Parallel Library)實(shí)現(xiàn)的,其最基本的執(zhí)行單元是任務(wù),代表了一個(gè)可以被計(jì)算機(jī)并行執(zhí)行的異步操作[14]。TPL負(fù)責(zé)創(chuàng)建并管理線程來執(zhí)行任務(wù),以下C#代碼創(chuàng)建并運(yùn)行一個(gè)觀測(cè)值記錄解析任務(wù):

      為了確保每個(gè)線程都能夠正確地訪問共享存儲(chǔ)區(qū)(任務(wù)池和數(shù)據(jù)緩存池)內(nèi)的數(shù)據(jù),傳統(tǒng)方法需要在程序中采用封鎖機(jī)制[15],不但編程復(fù)雜,而且增加了出錯(cuò)風(fēng)險(xiǎn),降低了程序效率。本方案采用.Net 4.0新增的System.Collections.Concurrent命名空間中提供的線程安全集合類構(gòu)造共享存儲(chǔ)區(qū),可以方便地并發(fā)訪問其中的數(shù)據(jù)[16]。利用線程安全的先進(jìn)先出隊(duì)列類ConcurrentQueue實(shí)現(xiàn)任務(wù)池的主要C#代碼如下:

      方案中還利用ManualResetEventSlim類協(xié)調(diào)OPT與FRT,以免寫入的觀測(cè)值記錄超過任務(wù)池預(yù)設(shè)大?。焕肨ask類的WaitAll()方法保證所有OPT均完成后結(jié)束解析;利用AggregateException類處理并行解析過程中的異常;使用SqlBulkCopy類實(shí)現(xiàn)大批量數(shù)據(jù)快速導(dǎo)入數(shù)據(jù)庫(kù)等,篇幅所限,在此就不全部展開詳述。

      4 測(cè)試結(jié)果

      筆者將本文所提方案在四川電能質(zhì)量一體化數(shù)據(jù)平臺(tái)中應(yīng)用實(shí)施,并用現(xiàn)場(chǎng)PQDIF文件對(duì)方案實(shí)用性和可靠性進(jìn)行驗(yàn)證。測(cè)試平臺(tái)如表2所示。

      表2 測(cè)試平臺(tái)軟硬件條件Tab.2 Software and hardware conditions of test platform

      在與第1.2節(jié)中相同的測(cè)試條件下(4核服務(wù)器),本文方案與傳統(tǒng)方案解析耗時(shí)對(duì)比如圖5所示。

      由圖5可見,本文方案相對(duì)傳統(tǒng)方案解析耗時(shí)明顯減少,并可隨著PQDIF文件數(shù)量的增加獲得更高的加速比,解析1500個(gè)文件的耗時(shí)可控制在5 min以內(nèi)(282306 ms)。

      圖5 快速解析方案與傳統(tǒng)方案解析耗時(shí)對(duì)比Fig.5 Comparison of parsing time consumption between proposed scheme and traditional scheme

      由測(cè)試結(jié)果可知,由于本文方案直接選擇觀測(cè)值記錄整體作為并行解析的數(shù)據(jù)粒度,因此可顯著提高存儲(chǔ)在觀測(cè)值記錄中的每種類型數(shù)據(jù)(包括穩(wěn)態(tài)數(shù)據(jù)和暫態(tài)數(shù)據(jù))的解析效率。各類型數(shù)據(jù)的解析耗時(shí)對(duì)比如表3所示。

      表3 各類型電能質(zhì)量監(jiān)測(cè)數(shù)據(jù)解析耗時(shí)對(duì)比Tab.3 Comparison of parsing time consumption for different types of power quality monitoring data

      表3中,某類型數(shù)據(jù)的解析耗時(shí)為1500個(gè)文件中此類數(shù)據(jù)解析耗時(shí)的總和,且解析耗時(shí)為觀測(cè)值記錄中各類型數(shù)據(jù)的解析時(shí)間,不包括數(shù)據(jù)源記錄的解析耗時(shí),均采用K次最優(yōu)測(cè)量方法得出;諧波類數(shù)據(jù)包括2~50次諧波電壓幅值(相角)、諧波電流幅值(相角)、諧波有功(無功)功率以及諧波電壓(電流)總畸變率;間諧波類數(shù)據(jù)包括前25個(gè)間諧波組電壓(電流)幅值;三相不平衡類數(shù)據(jù)包括正序(負(fù)序、零序)電壓(電流)值、電壓(電流)負(fù)序不平衡度;電壓波動(dòng)與閃變類數(shù)據(jù)包括:電壓波動(dòng)值、短(長(zhǎng))時(shí)閃變值。暫態(tài)類數(shù)據(jù)包括電壓暫降(升)事件有效值記錄、電壓暫降(升)事件波形采樣值記錄、短時(shí)中斷事件有效值(波形采樣值)記錄。

      測(cè)試解析少量PQDIF文件時(shí),本文方案也可提高解析效率,但由于本文方案選取的并行粒度較大,少量文件的并行程度較低,影響了解析效率的提高。隨文件增多,解析效率的提高將更為顯著。少量文件的解析耗時(shí)對(duì)比如表4所示。

      本文方案在不同核數(shù)服務(wù)器條件下的解析耗時(shí)對(duì)比如圖6所示。由圖6可見,隨著服務(wù)器CPU核數(shù)的增加,本文方案性能提升顯著。解析1500個(gè)文件時(shí),采用8核服務(wù)器的耗時(shí)(150 966 ms)相對(duì)4核服務(wù)器減少了約46.52%,因此,本文方案具有一定的可擴(kuò)展能力。

      目前,基于本文方案的解析程序已在平臺(tái)中長(zhǎng)期穩(wěn)定運(yùn)行。程序每日凌晨自啟動(dòng)并解析主站采集的343個(gè)PQDIF文件,耗時(shí)約40 s,可滿足實(shí)際需要,且運(yùn)行過程中未發(fā)生服務(wù)器操作系統(tǒng)崩潰、內(nèi)存溢出等錯(cuò)誤,證明了本文方案的可靠性。

      表4 解析少量PQDIF文件耗時(shí)對(duì)比Tab.4 Comparison of parsing time consumption between proposed scheme and traditional scheme for different PQDIF file quantities

      圖6 不同CPU核數(shù)服務(wù)器條件下快速解析方案解析耗時(shí)對(duì)比測(cè)試結(jié)果Fig.6 Comparison of parsing time consumption among different CPU core quantities

      5 結(jié)語(yǔ)

      本文提出一種海量PQDIF文件的快速解析方案,相對(duì)于傳統(tǒng)方案有以下幾點(diǎn)優(yōu)勢(shì):解析效率高,速度快;硬件可擴(kuò)展性強(qiáng);程序穩(wěn)定性高;軟件可維護(hù)性強(qiáng)。

      目前此方案已有效應(yīng)用于四川電能質(zhì)量一體化數(shù)據(jù)平臺(tái)。實(shí)踐證明,此方案具有較高的實(shí)用性和可靠性。但值得注意的是,解析后數(shù)據(jù)存入數(shù)據(jù)庫(kù)的耗時(shí)也是相當(dāng)可觀的,因此,下一步將研究海量電能質(zhì)量數(shù)據(jù)的存儲(chǔ)策略。

      猜你喜歡
      數(shù)據(jù)源電能解析
      三角函數(shù)解析式中ω的幾種求法
      蘋果皮可以產(chǎn)生電能
      電能的生產(chǎn)和運(yùn)輸
      海風(fēng)吹來的電能
      澎湃電能 助力“四大攻堅(jiān)”
      睡夢(mèng)解析儀
      Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
      電競(jìng)初解析
      商周刊(2017年12期)2017-06-22 12:02:01
      基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
      相機(jī)解析
      林甸县| 安陆市| 彩票| 白玉县| 富民县| 安乡县| 富平县| 东方市| 分宜县| 合肥市| 大厂| 拉孜县| 定远县| 滦平县| 诏安县| 江门市| 隆回县| 乌兰浩特市| 平顺县| 高雄市| 琼海市| 呼伦贝尔市| 建德市| 拜泉县| 西丰县| 龙陵县| 长丰县| 西贡区| 庆元县| 延庆县| 五大连池市| 扬中市| 衡水市| 东台市| 保定市| 昔阳县| 盖州市| 南宁市| 邯郸市| 濮阳县| 额敏县|