• 
    

    
    

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

      過程數(shù)據(jù)的壓縮與存取系統(tǒng)構(gòu)建策略

      2018-09-22 01:10:20方宗順
      機械設(shè)計與制造工程 2018年9期
      關(guān)鍵詞:旋轉(zhuǎn)門壓縮算法中間件

      方宗順

      (中石化揚子石油化工有限責任公司,江蘇 南京 210048)

      過程數(shù)據(jù)是非常寶貴的信息資源,在生產(chǎn)過程中加以挖掘并廣泛應用于如設(shè)備運行監(jiān)控、故障檢測與遠程智能診斷、質(zhì)量實時控制、反饋控制等許多過程運行和控制任務場合[1]。隨著企業(yè)的設(shè)備數(shù)量越來越多、信息采集與控制技術(shù)的進步、計算機及網(wǎng)絡(luò)技術(shù)的發(fā)展,以及生產(chǎn)過程更加高效、安全的運行要求,使生產(chǎn)過程中的數(shù)據(jù)量劇增,產(chǎn)生了海量過程數(shù)據(jù)存儲與實時多任務并發(fā)讀取的需求[2]。

      過程數(shù)據(jù)壓縮和重建是過程數(shù)據(jù)管理的重要組成部分,過程數(shù)據(jù)壓縮一般要遵守基于逼近誤差和顯著特征的保真度準則,像地震領(lǐng)域的大數(shù)據(jù)和語音壓縮算法以及傳統(tǒng)的圖像壓縮算法都不能滿足過程數(shù)據(jù)采集速度和壓縮質(zhì)量的要求。Hale等[3]闡述了實時數(shù)據(jù)壓縮的優(yōu)點,并提出了矩形波串法(box car)和后向斜率法,使人們認識到了過程數(shù)據(jù)壓縮的重要性。隨后,Bristol提出了旋轉(zhuǎn)門趨勢(swinging door trending, SDT)算法,Mah等[4]對SDT算法進行了改進,提出了一種分段線性在線趨勢化(piecewise linear on-line trending, PLOT)算法。這幾種算法的本質(zhì)是進行分段線性插值,將實際信號與壓縮信號之間的局部誤差控制在給定范圍之內(nèi)。

      本文采用基于非關(guān)系型的開源的BDB(Berkeley data base),實現(xiàn)對過程數(shù)據(jù)的分布式存取管理。其突出優(yōu)點是數(shù)據(jù)存取算法易實現(xiàn)、執(zhí)行速度快、支持多操作系統(tǒng)、支持海量數(shù)據(jù)存儲(數(shù)據(jù)存儲容量達到256TB)[5]。同時,本文給出SDT壓縮算法的API軟件層代碼實現(xiàn),采用 Windows 通訊開發(fā)平臺(Windows communication foundation, WCF)技術(shù)開發(fā)分布式數(shù)據(jù)存取中間件,以此構(gòu)建了過程數(shù)據(jù)存儲系統(tǒng),并應用于某石化企業(yè)的計量監(jiān)控系統(tǒng),與其他不同類型數(shù)據(jù)庫存儲系統(tǒng)相比,BDB在過程數(shù)據(jù)領(lǐng)域有很大優(yōu)勢。

      1 數(shù)據(jù)處理與存儲軟件結(jié)構(gòu)

      1.1 嵌入式開源數(shù)據(jù)庫BDB

      BDB是一個開源的文件型嵌入式數(shù)據(jù)庫,通過內(nèi)嵌在程序中的函數(shù)庫完成對數(shù)據(jù)的增加、修改、刪除操作。它包含5個子系統(tǒng):存取管理子系統(tǒng)、內(nèi)存池管理子系統(tǒng)、事務處理子系統(tǒng)、加鎖子系統(tǒng)及日志子系統(tǒng),結(jié)構(gòu)如圖1所示。由關(guān)鍵字及數(shù)據(jù)構(gòu)成的Key/Data構(gòu)成BDB的基本結(jié)構(gòu)單元,數(shù)個這樣的結(jié)構(gòu)單元構(gòu)成數(shù)據(jù)庫整體[6]。

      圖1 BDB數(shù)據(jù)庫子系統(tǒng)

      BDB具有如下突出優(yōu)點:

      1)嵌入式(eebedded)。直接鏈接到應用程序中,對數(shù)據(jù)庫的操作就是對操作函數(shù)的調(diào)用。為幾乎所有常見編程語言提供API接口。多個進程,或者同一進程的多個線程可并發(fā)操作數(shù)據(jù)庫[7]。

      2)輕便靈活(portable)。不僅可以運行于Windows操作系統(tǒng)下,還可運行于如Linux、UNIX及其他嵌入式實時操作系統(tǒng)之下。

      3)可伸縮(scalable)。能夠管理高達256TB規(guī)模的數(shù)據(jù)庫,動態(tài)庫文件自身卻非常精簡,支持高并發(fā)度。

      存儲在BDB中的數(shù)據(jù)結(jié)構(gòu)簡潔明了,可以保存任意類型的鍵/值對(Key/Value Pair),而且可以為一個鍵保存多個數(shù)據(jù)。

      本文采用BDB存儲生產(chǎn)過程中采集的實時數(shù)據(jù)及文件、圖像等流數(shù)據(jù)。訪問BDB流程為:定義數(shù)據(jù)的結(jié)構(gòu)體,創(chuàng)建數(shù)據(jù)庫表訪問句柄,通過open函數(shù)打開數(shù)據(jù)庫,根據(jù)定義的結(jié)構(gòu)體創(chuàng)建Key/Data對象,調(diào)用put函數(shù)插入記錄,調(diào)用get函數(shù)查詢記錄。程序關(guān)閉時關(guān)閉創(chuàng)建的數(shù)據(jù)庫句柄。

      1.2 數(shù)據(jù)壓縮與存取總體構(gòu)建

      圖2為基于BDB的數(shù)據(jù)采集與壓縮存儲、分布式查詢提取的軟件結(jié)構(gòu)框圖。數(shù)據(jù)通道將采集的設(shè)備監(jiān)控數(shù)據(jù)送入數(shù)據(jù)預處理模塊,更新一部分斷面數(shù)據(jù)到緩存內(nèi)存區(qū),然后根據(jù)SDT算法進行數(shù)據(jù)壓縮,并將壓縮數(shù)據(jù)通過數(shù)據(jù)總線交給數(shù)據(jù)存儲服務API層,API層將壓縮后的數(shù)據(jù)存入BDB。歸檔服務會定期識別BDB中的非活動數(shù)據(jù)并將其轉(zhuǎn)移到其他設(shè)備中[8]。當人機交互軟件請求查詢采樣數(shù)據(jù)時,基于WCF的中間件服務層會先對BDB中的壓縮數(shù)據(jù)解壓,然后將數(shù)據(jù)發(fā)送給軟件。

      圖2 數(shù)據(jù)壓縮存取軟件結(jié)構(gòu)圖

      2 SDT數(shù)據(jù)壓縮算法分析

      一個良好的實時數(shù)據(jù)庫,必須處理好實時數(shù)據(jù)的壓縮問題,才能使系統(tǒng)的整體性能達到海量數(shù)據(jù)存儲的實時性要求。數(shù)據(jù)壓縮算法流程如圖3所示。

      圖3 數(shù)據(jù)壓縮算法流程

      一般的數(shù)據(jù)壓縮算法都是通過對數(shù)據(jù)編碼和解碼來進行壓縮和解壓,不同的壓縮算法主要的不同點就在于采用的編碼方式不同。比較常見的是查字典法,字典中包含了許多與實際數(shù)據(jù)對應的編碼數(shù)據(jù),通常情況下實際數(shù)據(jù)所對應的編碼數(shù)據(jù)都比原數(shù)據(jù)占用更小的空間,通過對應關(guān)系將實際數(shù)據(jù)轉(zhuǎn)化為編碼數(shù)據(jù)從而達到壓縮的目的[9]。

      2.1 旋轉(zhuǎn)門壓縮算法模型

      實時數(shù)據(jù)庫中,數(shù)據(jù)瞬時采集量巨大且相似度高,作為線性擬合的一種簡便算法,即旋轉(zhuǎn)門趨勢(SDT)算法[10-11],具有速度快、易實現(xiàn)、高壓縮、誤差可控等優(yōu)點,已成為一種專門算法[12]。

      SDT算法形象地說就是構(gòu)建許多高度(有損壓縮的閾值)固定的平行四邊形,用這些四邊形去“覆蓋”數(shù)據(jù),當數(shù)據(jù)超出四邊形的范圍時,歸檔(存儲)數(shù)據(jù)點。圖4中不斷“膨脹”的平行四邊形就是旋轉(zhuǎn)門,任意時刻該旋轉(zhuǎn)門的寬度都為閾值的2倍。每次擴大后,都要判斷是否所有的數(shù)據(jù)點都能被平行四邊形所覆蓋,若不能完全被覆蓋,則擴張前的所有數(shù)據(jù)點就需要被歸檔(壓縮)[13]。

      本文采用的SDT算法是一種直線趨勢化壓縮算法,其實質(zhì)是將一組連續(xù)的數(shù)據(jù)點用一條確定了起點和終點的直線替代。該算法需要使用時間間隔量、起點數(shù)據(jù)和終點數(shù)據(jù)3個參數(shù), 其中下一段的起點數(shù)據(jù)與前一段終點數(shù)據(jù)相同。圖4為其基本原理圖。

      圖4 旋轉(zhuǎn)門壓縮算法原理圖

      設(shè)ΔE為SDT算法的壓縮閾值,其壓縮原理為:起點t0為上一存儲結(jié)束的數(shù)據(jù)點,將與t0相距ΔE的上下兩點作為軸點,建立一扇有兩個門板的門,只有一個數(shù)據(jù)時門閉合;隨著數(shù)據(jù)點的增加,兩個門板會繞著軸點打開,門板的寬度可擴展,門只能朝著打開的方向旋轉(zhuǎn);只要兩個門板的內(nèi)角和小于180°(兩個門板未平行),旋轉(zhuǎn)操作就可以繼續(xù);一旦門板的內(nèi)角和大于等于180°,就結(jié)束開門的操作,存儲前一點數(shù)據(jù),并將該點作為下一壓縮操作的起點。

      在圖4中經(jīng)過旋轉(zhuǎn)門壓縮后,壓縮段1由t0~t4的直線代替了t0~t4的數(shù)據(jù)點;壓縮段2由t4~t7的直線代替了t4~t7的數(shù)據(jù)點。

      SDT壓縮算法主要步驟如下:

      Step2,計算斜率S1,S2,Sj。

      Step3,確定S1new,S2new的值。S1new=max(S1,S1new);S2new=max(S2,S2new)。

      Step4,判斷數(shù)據(jù)是否需要存儲。如果S1new≥S2new,儲存前一刻值數(shù)據(jù)值D(j-1)與對應時刻T(j-1),否則返回Step3。依次循環(huán),直至達到強制記錄極限(FSRL),結(jié)束當前循環(huán),開始新一輪壓縮。

      2.2 壓縮數(shù)據(jù)重建

      壓縮數(shù)據(jù)重建是將壓縮數(shù)據(jù)還原成原始數(shù)據(jù)。旋轉(zhuǎn)門壓縮算法屬于有損壓縮,因此解壓縮后的數(shù)據(jù)與原始數(shù)據(jù)存在誤差。壓縮設(shè)定了閾值ΔE,因此還原誤差不會超過2ΔE。相較壓縮算法,重構(gòu)還原算法要簡單得多,本質(zhì)上就是線性插值。設(shè)待解壓數(shù)據(jù)分為n段,D(i)中存放每段的長度,R(i)中存放i個數(shù)據(jù)點,Z(i)存放還原后的數(shù)據(jù),i=1,2,…,n,(n+1)。數(shù)據(jù)還原算法步驟為:

      Step1n=1,i=1;

      Step2incr=0.0+[R(i+1)-R(i)]/D(i),k=1;

      Step3Z(n)=R(i)+incr× (k-1),k=k+1,n=n+1;

      Step4 if (k>D(i)) Then Step5,Else Step3;

      Step5i=i+1;

      Step6 if (i=n) Then Step2, Else Return。

      3 數(shù)據(jù)存取關(guān)鍵技術(shù)實現(xiàn)及應用

      3.1 系統(tǒng)構(gòu)建

      某石化計量監(jiān)控系統(tǒng)數(shù)據(jù)采集存儲需求為:總計30 450個I/O點的數(shù)據(jù),I/O點數(shù)據(jù)存儲時間間隔為5s,24h不間斷存儲,存儲時間1a以上,數(shù)據(jù)查詢刷新時間小于2s。其中多區(qū)域質(zhì)量流量計230臺,每臺質(zhì)量流量計采集65個I/O點的數(shù)據(jù),多區(qū)域罐150個,每個罐采集50個I/O點的數(shù)據(jù),多區(qū)域PLC控制系統(tǒng)4套,累計采集2 000個I/O點的數(shù)據(jù)。多區(qū)域視頻流采集點50個,存儲時間大于6個月。

      按1a時間計算,以上I/O點的數(shù)據(jù)總量大于8TB,按照常規(guī)思路按點存儲,數(shù)據(jù)的存儲與提取無法滿足實時性需求。本文基于BDB存儲I/O點數(shù)據(jù),采用SDT動態(tài)數(shù)據(jù)壓縮及重建算法,結(jié)合WCF技術(shù)封裝數(shù)據(jù)的提取中間件,以此構(gòu)建計量監(jiān)控系統(tǒng)。圖5為分布式存儲數(shù)據(jù)結(jié)構(gòu),區(qū)域1~區(qū)域m為獨立的前端采集存儲I/O點數(shù)據(jù)服務器,壓縮數(shù)據(jù)存儲在BDB。區(qū)域1~區(qū)域m的獨立的BDB數(shù)據(jù)與集中存儲服務器的BDB數(shù)據(jù)實時同步?;趬嚎s數(shù)據(jù)重建API函數(shù),采用WCF技術(shù)構(gòu)建數(shù)據(jù)提取及適合于業(yè)務流的中間件,供計量監(jiān)控系統(tǒng)軟件客戶端調(diào)用。

      圖5 計量監(jiān)控系統(tǒng)分布式存儲結(jié)構(gòu)

      3.2 數(shù)據(jù)同步技術(shù)實現(xiàn)

      數(shù)據(jù)存儲區(qū)域服務器主要實現(xiàn):

      服務1,采集數(shù)據(jù)并壓縮,按Key/Data配置好數(shù)據(jù)結(jié)構(gòu)并結(jié)合時間戳,存儲到BDB對應的表中;

      服務2,實時監(jiān)控BDB對應表中數(shù)據(jù)的變化,一旦數(shù)據(jù)有變化,建立socket監(jiān)聽端口,執(zhí)行與集中存儲服務器的連接操作,將變化且未傳的數(shù)據(jù)存儲到集中存儲服務器的BDB對應表中,并更新上傳標志。

      其中服務2采用了多線程的方式,包括1個主線程和2個子線程。主線程主要監(jiān)聽數(shù)據(jù)的變化及進行數(shù)據(jù)同步。子線程1用來偵聽存儲服務器的連接請求,如果有請求就與服務器建立連接;子線程2負責在已建立的連接上將變化的數(shù)據(jù)交給rep_process_message函數(shù)處理。3個線程之間相互獨立運行。具體流程如圖6所示。

      圖6 數(shù)據(jù)同步流程圖

      3.3 數(shù)據(jù)交互中間件設(shè)計

      供客戶端及第三方軟件應用的中間件的功能及流程為:基于WCF的異構(gòu)系統(tǒng)間交互數(shù)據(jù),接收外界并行請求,然后執(zhí)行處理,并且在集中存儲服務器端BDB重建并封裝請求的數(shù)據(jù),最終返回外界客戶端顯示。

      WCF整合了.NET平臺下與通信服務相關(guān)的所有內(nèi)容,支持多種契約方式與服務運行方式,具有可靠性、統(tǒng)一性、互操作性和兼容性等優(yōu)點,提供多種類型的消息編碼及多種協(xié)議的消息傳遞。地址(address)、綁定(binding)和契約(contract)是WCF的三要素,必須對它們進行指定才能用WCF進行通信[14]。地址指的是WCF的服務器地址,契約則表示雙方要進行交互的內(nèi)容,綁定則是指雙方以什么樣的方式進行交互。為了能在不同的網(wǎng)絡(luò)和環(huán)境下實現(xiàn)分布式訪問,WCF支持多種綁定方式[15]。

      數(shù)據(jù)交互中間件主要包括注冊、驗證數(shù)據(jù)、數(shù)據(jù)處理及更新反饋功能模塊。注冊模塊實現(xiàn)數(shù)據(jù)交互系統(tǒng)間的IP、端口號等基本信息及交互信息的管理功能,配置文件、保存設(shè)置的信息。驗證數(shù)據(jù)模塊提供對要操作數(shù)據(jù)的格式驗證。數(shù)據(jù)處理模塊主要工作是對請求方的格式進行驗證、解析,并將請求轉(zhuǎn)發(fā)到提供方,調(diào)取數(shù)據(jù)重建API函數(shù)從BDB提取數(shù)據(jù),并封裝成指定數(shù)據(jù)結(jié)構(gòu),同時將處理后的消息通過平臺反饋給請求者。更新反饋模塊實現(xiàn)了更改配置信息通知等功能,并定期給注冊到該平臺的關(guān)聯(lián)系統(tǒng)轉(zhuǎn)發(fā)系統(tǒng)配置文件。圖7為數(shù)據(jù)交互實現(xiàn)流程。

      圖7 數(shù)據(jù)交互實現(xiàn)流程

      3.4 測試分析

      編寫并發(fā)存儲、并發(fā)讀取和邊存儲邊讀取的測試程序,對BDB和SQL server數(shù)據(jù)庫進行比較,整理測試結(jié)果,見表1。結(jié)果表明,采用BDB速度較快,且數(shù)據(jù)量越大效果越明顯。

      表1 數(shù)據(jù)存取時間對比

      采用SDT算法,基于BDB壓縮存儲及數(shù)據(jù)重建,對采集的I/O點數(shù)據(jù)存取性能指標進行計算,得到的計算結(jié)果見表2。表中數(shù)據(jù)1樣本為罐信息7 500個I/O點的數(shù)據(jù),數(shù)據(jù)2樣本為質(zhì)量流量計采集的14 950個I/O點數(shù)據(jù),數(shù)據(jù)3樣本為PLC系統(tǒng)2 000個I/O點的數(shù)據(jù)。結(jié)果表明,在對實際過程數(shù)據(jù)進行處理時,使用SDT算法可以明顯地減少數(shù)據(jù)占用的空間,降低現(xiàn)場總線網(wǎng)絡(luò)出現(xiàn)阻塞的可能性,提高控制監(jiān)控系統(tǒng)的性能、數(shù)據(jù)存取的效率及實時性。顯著缺點是數(shù)據(jù)為有損重建。

      表2 I/O點過程數(shù)據(jù)壓縮性能結(jié)果

      4 結(jié)束語

      本文將BDB與SDT算法結(jié)合,達到了提高數(shù)據(jù)存取效率、減少數(shù)據(jù)占用空間的目的。結(jié)合WCF技術(shù),構(gòu)建的分布式數(shù)據(jù)存取系統(tǒng)[16]解決了大型實時數(shù)據(jù)存儲提取實時性不高的問題,已應用于某石化企業(yè)的過程數(shù)據(jù)SCADA系統(tǒng)。因本文的SDT算法為有損數(shù)據(jù)壓縮重建,難以滿足計量數(shù)據(jù)的一致性要求,下一步將對數(shù)據(jù)壓縮的無損算法及異構(gòu)系統(tǒng)服務緩存機制加強研究。

      猜你喜歡
      旋轉(zhuǎn)門壓縮算法中間件
      安全通過旋轉(zhuǎn)門
      基于參數(shù)識別的軌道電路監(jiān)測數(shù)據(jù)壓縮算法研究
      迷宮
      好孩子畫報(2019年5期)2019-06-13 00:38:06
      RFID中間件技術(shù)及其應用研究
      電子制作(2018年14期)2018-08-21 01:38:10
      基于VanConnect中間件的設(shè)計與開發(fā)
      電子測試(2018年10期)2018-06-26 05:54:02
      更正聲明
      PMU數(shù)據(jù)預處理及壓縮算法
      旋轉(zhuǎn)門真有趣
      好孩子畫報(2015年3期)2015-03-26 21:23:06
      中間件在高速公路領(lǐng)域的應用
      一種支持智能環(huán)境構(gòu)建的中間件
      临湘市| 万源市| 佛教| 嘉荫县| 吴旗县| 娄烦县| 大余县| 江永县| 文昌市| 南郑县| 元朗区| 内江市| 紫金县| 青川县| 榆林市| 金沙县| 楚雄市| 普定县| 蒙山县| 濮阳市| 南平市| 婺源县| 莱州市| 安图县| 汽车| 乐业县| 文昌市| 达尔| 隆回县| 乌鲁木齐市| 酉阳| 都江堰市| 寻乌县| 临漳县| 兴仁县| 屏南县| 中超| 武强县| 栖霞市| 井冈山市| 黔南|