在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 工控系統(tǒng)中實時數(shù)據(jù)庫關鍵技術研究與實現(xiàn)

            工控系統(tǒng)中實時數(shù)據(jù)庫關鍵技術研究與實現(xiàn)

            作者: 時間:2011-10-18 來源:網(wǎng)絡 收藏

              1 引言

              現(xiàn)代工業(yè)的特點要求全過程的實時監(jiān)控,高速的實時數(shù)據(jù)處理、長期的歷史數(shù)據(jù)存儲以及生產信息的集成與共享。要滿足上述對生產數(shù)據(jù)的處理要求僅靠大量采用集散控制系統(tǒng)(DCS)和關系數(shù)據(jù)庫技術并不能完全解決問題。DCS數(shù)據(jù)存儲能力有限,同時企業(yè)中異構的DCS無法進行有效的數(shù)據(jù)共享。而關系數(shù)據(jù)庫數(shù)據(jù)處理速度低,無法對生產過程數(shù)據(jù)進行及時高效的存儲。

              為了解決上述問題,作為一個關鍵的支撐技術引入工業(yè)控制系統(tǒng)。在生產設備運行過程中,系統(tǒng)實時采集設備的運行數(shù)據(jù),隨時掌握裝置的運行情況,并通過對生產過程的關鍵數(shù)據(jù)的實時監(jiān)控分析,對出現(xiàn)的問題即時進行處理,使生產的運行狀態(tài)保持平穩(wěn)。還是是連接工業(yè)生產控制系統(tǒng)與企業(yè)上層管理系統(tǒng)的橋梁,企業(yè)可以通過實時數(shù)據(jù)庫系統(tǒng)提供的數(shù)據(jù)平臺,為經營決策、計劃調度、先進過程控制,質量監(jiān)控等分系統(tǒng)提供同一的數(shù)據(jù)平臺。

              2 實時數(shù)據(jù)庫系統(tǒng)概念和特點

              實時數(shù)據(jù)庫系統(tǒng)(RTDBS)就是其事務和數(shù)據(jù)都可以有定時特性或顯式的定時限制的數(shù)據(jù)庫系統(tǒng)。系統(tǒng)的正確性不僅依賴于邏輯結果,而且還依賴于邏輯結果產生的時間。對于實時數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)的一致性和執(zhí)行的周期性是重要的目標,由于在實時系統(tǒng)中經常以固定的時間周期收集被控系統(tǒng)的實時數(shù)據(jù),相應的控制系統(tǒng)也必須周期性地處理數(shù)據(jù)和作出響應;由于傳統(tǒng)的關系型數(shù)據(jù)庫在一些時限要求嚴格的場合不能滿足實時系統(tǒng)對數(shù)據(jù)實時性的要求,而內存直接尋址是一種具有高速的數(shù)據(jù)訪問方式,在技術上采用內存數(shù)據(jù)庫是解決這一問題的理想解決方案。

              整個實時數(shù)據(jù)庫系統(tǒng)方案的設計分為駐內和留外兩個部分,駐內部分即為內存數(shù)據(jù)庫,是實時數(shù)據(jù)庫的主體,存儲形式可采用順序結構,B樹結構或多目錄搜索哈希技術(散列技術)。內存數(shù)據(jù)庫定時進行事務處理,對超過一定時間的數(shù)據(jù)從內存中清除,寫到外存數(shù)據(jù)庫中。外存數(shù)據(jù)庫即磁盤數(shù)據(jù)庫或歷史數(shù)據(jù)庫,用于歷史記錄分析,報表生成答應或相關決策等等。本系統(tǒng)歷史數(shù)據(jù)庫采用的是Microsoft公司的數(shù)據(jù)庫產品SQLServer。

              3 關鍵技術研究和實現(xiàn)

              3.1數(shù)據(jù)的實時采集

              在工業(yè)控制系統(tǒng)中,數(shù)據(jù)采集程序的實時性和穩(wěn)定性對于整個的性能起著至關重要的作用。Windos提供的定時器TImer遠達不到要求,必須使用精度更高的定時器來取代。

              Windows系統(tǒng)下的多媒體定時器API函數(shù)timeSetevent和timeKillEvent就能很好的滿足實時性的要求。該多媒體定時器工作在自己的線程內,且它的線程優(yōu)先級(threadprioritylevel)設定為THREAD_PRIORITY_TIME_CRITICAL,這比絕大部分的線程優(yōu)先權數(shù)值都高,相比工作在用戶界面線程內的Timer定時器來說,它不受消息機制的影響,能夠達到很高的定時精度。它的最高定時精度能夠達到1ms,能夠滿足較高實時性的要求。

              3.2內存數(shù)據(jù)庫技術

              內存數(shù)據(jù)庫指數(shù)據(jù)庫常駐內存及事務的數(shù)據(jù)存取只涉及內存。內存數(shù)據(jù)庫是支持實時事務的一種最佳技術,其本質特征是其“主拷貝”或“工作版本”常駐內存,活動事務只與實時內存數(shù)據(jù)庫的內存拷貝交互,顯然,它需要較大的內存量。內存數(shù)據(jù)庫可以簡記為MMDB。MMDB的“工作版本”常駐內存,在任何一個事務執(zhí)行過程中沒有內外存間數(shù)據(jù)I/O。這為系統(tǒng)較準確估算和安排事務的運行時間、實現(xiàn)事務的定時限制打下了基礎,從而滿足外部事務應用對響應時間和事務吞吐率的需求。

              3.2.1利用內存映射文件共享內存

              共享內存是實時數(shù)據(jù)庫核心技術之一。所謂內存映射文件,即在內存中申請一塊內存空間,將一個文件與這塊空間相聯(lián)系,再進行內存映射,這樣,操作文件就有和操作內存一樣的效率,幾個進程可以通過操作該映射文件,實現(xiàn)進程間在內存一級的高速數(shù)據(jù)交互。當采用內存映射文件方式時,Windows對于再次使用該文件的進程不在創(chuàng)建新的映射文件對象而共享前一段內存映射對象,并將該對象映射成兩個地址空間,這種機制不僅有效地利用了內存,同時也實現(xiàn)了數(shù)據(jù)的共享。要在Windows2000下實現(xiàn)內存讀寫一級的數(shù)據(jù)通信效率,唯一的辦法就是使用內存映射文件。內存映射文件使用方法如下:

              (1)創(chuàng)建或打開文件內核對象

              創(chuàng)建或打開一個文件內核對象,總要調用CreateFileCreateFile函數(shù):HANDLECreateFilePCSTRpszFile-Name,DWORDdwDesirdAccess,DWORDdwShare-Mode,PSECURITY_ATTRIBUTESpsa,DWORDdwCreatiONDisposition,DWORDdwFlags

            AndAtributes,HANDLEhTemplateFile),如果CreateFile函數(shù)成功地創(chuàng)建或打開指定的文件,便返回一個文件內存對象地句柄,否則返回INVALID_HANDLE_VALUE。

             ?。?)創(chuàng)建一個文件映射內核對象。

              調用CreateFile函數(shù),可將文件映像的物理存儲器位置告訴操作系統(tǒng)。這時,必須告訴系統(tǒng),文件映射對象需要多少物理存儲器。若進行這項操作,可以調用CreateFileMapping函數(shù):HANDLECreateFileMapping(HANDLEhFile,PSECURITY_ATTRIBUTESpsa,DWORDfdwProtect,DWORDdwMaximum

            SizeHigh,DWORDdwMaximumSizeLow,PCTSTRpszName)。系統(tǒng)創(chuàng)建文件映射對象,并將用于標識該對象的句柄返回該調用線程。如果系統(tǒng)無法創(chuàng)建文件映射對象,便返回一個NULL句柄值。

              如果內存映射共享文件只是為了進程間互相傳送信息,而完全沒有要將其設置為磁盤文件的情況下,可以直接在內存中定義一個空間來進行數(shù)據(jù)交互。方法很簡單:在調用CreateFileMapping函數(shù)時,設置(HANDLE)0xFFFFFFFF作為hFile參數(shù)。這樣就告訴系統(tǒng)不映射Windows磁盤上的內容,而只是要Windows把內存中一區(qū)域看成文件。

             ?。?)將文件數(shù)據(jù)映射到進程地地址空間。

              當創(chuàng)建一個文件映射對象后,仍必須讓系統(tǒng)為文件數(shù)據(jù)保留一個地址空間區(qū)域,并將文件數(shù)據(jù)作為映射到該區(qū)域的物理存儲器進行提交??赏ㄟ^MapViewOfFile函數(shù)來進行這項操作:PVOIDMapViewOfFile(HANDLEhFileMappingObject,DWORDdwDesireAddress,DWORDdwFileOffsetHigh,

            DOWRDdwFileOffsetLow,SIZE_TdwNumberOfBytesToMap);當一個文件視圖映射到進程的地址空間中時,必須規(guī)定兩件事。首先,必須告訴系統(tǒng)數(shù)據(jù)文件中哪個字節(jié)該作為視圖中的第一個字節(jié)來映射??捎胐wFileOffsetHigh和dwFileOffsetLow參數(shù)來進行這項操作。其次,必須告訴系統(tǒng),數(shù)據(jù)文件有多少字節(jié)需要映射到地址空間。可使用dwNumberOfBytesToMap參數(shù)來設定。

             ?。?)從進程的地址空間中撤銷文件數(shù)據(jù)的映像。

              當不需要保留映射到你的進程地址空間區(qū)域中的文件數(shù)據(jù)時,可通過調用下面的函數(shù)來釋放:

              BOOLUnmapViewOfFile(PVOIDpvBaseAddress)。

             ?。?)關閉文件映射對象和文件對象。

              若要關閉文件映射對象和文件對象,只需要兩次調用CloseHandle函數(shù)。

              3.2.2內存數(shù)據(jù)庫的存儲

              由于數(shù)據(jù)庫存放在內存中,不再像普通數(shù)據(jù)庫那樣作為大量磁盤文件的集合,而是內存中可直接尋址的數(shù)據(jù)。內存直接尋址,是目前訪問速度最快的存儲設備,從而能夠滿足高度實時性的要求。從工業(yè)以太網(wǎng)得到的實時數(shù)據(jù),經過應用程序處理后,將其引入內存數(shù)據(jù)庫中。根據(jù)工控自動化系統(tǒng)的特點,在工控自動化系統(tǒng)中,對實時數(shù)據(jù)庫操作最多的是根據(jù)工位名等進行的精確查詢、更新,如每秒鐘可能有成千上萬個工位需要更新其實時數(shù)據(jù)記錄。所以,散列技術將是中內存數(shù)據(jù)庫存取算法的首選。

              構造散列函數(shù)需要考慮計算散列函數(shù)所需要的時間(包括硬件指令的因素),過于復雜的散列函數(shù)將影響系統(tǒng)的實時性。構造散列函數(shù)的方法很多,常用的有直接定址法、平方取中法、折疊法、保留余數(shù)法。其中保留余數(shù)法是一種最簡單、也最常用的構造散列函數(shù)的方法,它不僅可以對關鍵字直接取模,也可以在折疊、平方取中等運算后取模。另外,關鍵字的選擇將影響散列函數(shù)的均勻性,盡可能使關鍵字經過散列函數(shù)得到一個隨機的地址,以便使一組關鍵字的散列地址均勻分布在整個地址區(qū)間中,從而減少沖突。構造散列函數(shù)需要考慮一下兩個問題:(1)如何構造使節(jié)點“分布均勻”;(2)一旦發(fā)生沖突,用什么方法解決。綜上考慮,我們采用雙重散列技術。首先雙重散列所產生的探測序列能夠查找整個散列表,但選取的輔助散列函數(shù)g(k)必須與M互素。其次,雙重散列可以產生Θ(m2)種探測序列,使得處理碰撞時,選取空位置更加隨機,選取合理的輔助散列函數(shù)將使得散列表很少產生堆積。如果M是素數(shù),且h(k)=kmodM,則我們可以設g(k)=1+(kmod(M-1));但由于M-1是偶數(shù),因而命名g(k)=1+(kmod(M-2))將更好。這就提示我們選擇M使得M和M-2好像1021和1019這樣的“孿生素數(shù)”。

              3.2.3實時事務調度

              實時數(shù)據(jù)庫是應用系統(tǒng)的數(shù)據(jù)處理中心,系統(tǒng)各個部分均以實時數(shù)據(jù)庫作為公共區(qū)進行數(shù)據(jù)交換,實現(xiàn)各個部分協(xié)調動作。系統(tǒng)運行后,實時數(shù)據(jù)庫要同時進行下位機的數(shù)據(jù)采集、數(shù)據(jù)處理、圖形顯示刷新、歷史數(shù)據(jù)存盤、事件報警、現(xiàn)場控制等事務。其調度模型如圖1所示,所有事務都要進行并行處理。

              實時事務調度是一個較復雜的算法問題,考慮到時間限制,其調度策略可分為三類:①優(yōu)先級調度算法;②時間片輪算法;③多級反饋隊列調度算法。而實時事務調度一般都是圍繞事務的優(yōu)先級進行的,在只有一個CPU的機器上,將CPU時間按照一定的優(yōu)先級分配給各個事務,定期處理某一事務而不會使某一事務處理時間過長,可用多線程編程技術來實現(xiàn)這種并行控制,實時調度各類事務。本系統(tǒng)就采用優(yōu)先級調度算法,其優(yōu)先權分配策略采用最大密度事務付給最高優(yōu)先權。本系統(tǒng)中除了控制事務和數(shù)據(jù)采集事務對實時性要求比較高外,其他數(shù)據(jù)處理類型事務的緊迫性和定時性要求相對較低,因此,本系統(tǒng)對不同類型的事務分配不同的優(yōu)先權,以最大限度地提高系統(tǒng)的性能。

              3.3多線程編程技術的引入

              在中,實時數(shù)據(jù)庫系統(tǒng)要實現(xiàn)現(xiàn)場數(shù)據(jù)的實時更新,能夠根據(jù)現(xiàn)場數(shù)據(jù)進行安全監(jiān)控,對現(xiàn)場的數(shù)據(jù)根據(jù)用戶的設置時間間隔進行保存,對發(fā)生事故的監(jiān)控點進行事故追憶等,這些功能若全部由一個線程來完成,會因資源沖突等問題而影響處理效率。為此,我們采用了多線程編程技術。整個系統(tǒng)由通信線程、報警處理線程、寫歷史數(shù)據(jù)庫線程、圖形顯示線程、實時曲線顯示線程和主界面線程等。

              撰寫多線程程序的一個最具挑戰(zhàn)性的問題就是:如何讓一個線程和另一個線程合作。這引出了一個非常重要的問題:同步。所謂同步是指進程、線程間相互通信時避免破壞各自數(shù)據(jù)的能力。在本系統(tǒng)中,我們引入了“讀者-寫者”模型,在該模型中,有多個讀者和多個寫者,以內存數(shù)據(jù)庫為臨界資源進行同步訪問。其中通信線程、寫歷史數(shù)據(jù)庫線程為“寫者”線程,報警處理線程、圖形顯示線程、實時曲線顯示線程為“讀者”線程?!白x者-寫者”模型的讀寫操作限制如下所示:①寫-寫互斥:不能有兩個寫者同時進行寫操作;②讀-寫互斥:不能同時有一個線程在讀,而另一個線程在寫;③讀-讀允許:可以有一個或多個讀者在讀[7]。這樣,整個系統(tǒng)通過各個線程之間的相互協(xié)調來工作,可以避免因循環(huán)檢測而浪費系統(tǒng)效率,比較好地解決了各線程訪問內存數(shù)據(jù)庫之間的同步問題。

              4 結束語

              實時數(shù)據(jù)庫是數(shù)據(jù)庫技術的一個分支,在工業(yè)控制過程中,其開放的體系結構和高效的數(shù)據(jù)存儲模式,使得它對生產過程信息的集成發(fā)揮著重要的作用,有著及其廣泛的應用前景。本文介紹了在工業(yè)控制系統(tǒng)中實時數(shù)據(jù)庫的功能、特點和事務,在此基礎上通過對多媒體定時器、內存數(shù)據(jù)庫技術、多線程及其同步技術等關鍵技術的分析和研究,給出了實時數(shù)據(jù)庫系統(tǒng)的具體實現(xiàn)方法。系統(tǒng)經實際運行,證明該實時數(shù)據(jù)庫運行安全、可靠、穩(wěn)定性強,取得了令人滿意的效果。



            評論


            相關推薦

            技術專區(qū)

            關閉