色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

            1 引言

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

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

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

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

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

            3 關(guān)鍵技術(shù)研究和實(shí)現(xiàn)

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

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

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

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

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

            3.2.1利用內(nèi)存映射文件共享內(nèi)存

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

           ?。?)創(chuàng)建或打開文件內(nèi)核對象

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

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

            (2)創(chuàng)建一個文件映射內(nèi)核對象。

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

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

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

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

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

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

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

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

            BOOLUnmapViewOfFile(PVOIDpvBaseAddress)。

           ?。?)關(guān)閉文件映射對象和文件對象。

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

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

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

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

            3.2.3實(shí)時事務(wù)調(diào)度

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

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

            3.3多線程編程技術(shù)的引入

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

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

            4 結(jié)束語

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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉