摘要:隨著管理要求的不斷提高,智能建筑管理系統(tǒng)對信息實時性的要求也不斷提高,傳統(tǒng)的數(shù)據(jù)庫已經(jīng)不能滿足實際使用的需求。為此,本文通過分析實時數(shù)據(jù)庫系統(tǒng)的特點——數(shù)據(jù)及事務的定時限制,提出在智能建筑管理系統(tǒng)中引入實時數(shù)據(jù)庫系統(tǒng),并詳細介紹包括對實時數(shù)據(jù)分發(fā)服務器、實時數(shù)據(jù)庫、歷史數(shù)據(jù)庫、實時數(shù)據(jù)庫與OPC通信等幾個數(shù)據(jù)庫子模塊的設計,以實現(xiàn)基于子系統(tǒng)平等方式集成的實時智能建筑管理系統(tǒng),以協(xié)助提高用戶的管理水平及效率。
關鍵詞:實時數(shù)據(jù)庫;智能建筑管理系統(tǒng);實時事務管理;OPC
中圖分類號:TU24文獻標識碼:A
智能建筑管理系統(tǒng)是信息時代和計算機技術應用的重要產(chǎn)物,作為一個典型的分布式系統(tǒng),其具體任務就是在物理上集成各子系統(tǒng)信息,集中監(jiān)視各子系統(tǒng)、關鍵設備、關鍵監(jiān)測點狀態(tài),執(zhí)行集中管理控制指令,向數(shù)據(jù)庫提供各子系統(tǒng)數(shù)據(jù)、圖像信息,實現(xiàn)各子系統(tǒng)間的聯(lián)動功能,并且協(xié)調(diào)優(yōu)化各系統(tǒng)的運行,從而為建筑物提供安全、舒適、方便的生活條件和高效的工作環(huán)境,并保證其運行維護管理的經(jīng)濟性和智能化。
1實時數(shù)據(jù)庫管理系統(tǒng)的特點
傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)的設計目標是維護數(shù)據(jù)的絕對正確性、保證系統(tǒng)的低代價、提供友好的用戶接口。這種數(shù)據(jù)庫系統(tǒng)對傳統(tǒng)的商務和事務型應用是有效的、成功的,然而,它不適合實時應用,這關鍵在于它不考慮與數(shù)據(jù)及事務相聯(lián)的定時限制,其系統(tǒng)的性能指標是吞吐量和平均響應時間,而不是數(shù)據(jù)及事務相聯(lián)的定時限制,調(diào)度與處理決策根本不理各種實時特性。與之相反,實時數(shù)據(jù)庫管理系統(tǒng)的設計目標首先是對事務定時限制的滿足,其基本原則是:寧要部分正確而及時的信息,也不要絕對正確但過時的信息。系統(tǒng)性能指標是滿足定時限制的事務的比率,它要求必須確保硬實時事務的截止期,必要時寧肯犧牲數(shù)據(jù)的準確性與一致性。軟實時事務滿足截止期的比率相對較高,但要100%滿足截止期很難或幾乎不可能。實時數(shù)據(jù)庫管理系統(tǒng)中數(shù)據(jù)的時間摘要:隨著管理要求的不斷提高,智能建筑管理系統(tǒng)對信息實時性的要求也不斷提高,傳統(tǒng)的數(shù)據(jù)庫已經(jīng)不能滿足實際使用的需求。為此,本文通過分析實時數(shù)據(jù)庫系統(tǒng)的特點——數(shù)據(jù)及事務的定時限制,提出在智能建筑管理系統(tǒng)中引入實時數(shù)據(jù)庫系統(tǒng),并詳細介紹包括對實時數(shù)據(jù)分發(fā)服務器、實時數(shù)據(jù)庫、歷史數(shù)據(jù)庫、實時數(shù)據(jù)庫與OPC通信等幾個數(shù)據(jù)庫子模塊的設計,以實現(xiàn)基于子系統(tǒng)平等方式集成的實時智能建筑管理系統(tǒng),以協(xié)助提高用戶的管理水平及效率。
關鍵詞:實時數(shù)據(jù)庫;智能建筑管理系統(tǒng);實時事務管理;OPC
中圖分類號:TU24文獻標識碼:A限制是通過事務對數(shù)據(jù)的處理時間來實現(xiàn)的,實時數(shù)據(jù)庫管理系統(tǒng)的正確性不僅僅依賴于計算的邏輯結(jié)果,還同時依賴于邏輯結(jié)果的產(chǎn)生時間。\"實時\"意在用戶可施加所要求的時間限制,并能通過系統(tǒng)的時間識別與處理機制來處理并保證或盡可能地保證滿足與各種活動相關聯(lián)的時間限制。
2實時數(shù)據(jù)庫管理系統(tǒng)在智能建筑管理系統(tǒng)中的實現(xiàn)
在智能建筑管理系統(tǒng)的實現(xiàn)過程中,數(shù)據(jù)庫管理系統(tǒng)為IBMS系統(tǒng)集成的關鍵。IBMS系統(tǒng)對實時數(shù)據(jù)的操作包括并發(fā)的多用戶查詢操作和實時數(shù)據(jù)的更新操作。一般來說,一萬個監(jiān)控點的值的刷新必須在0.5秒內(nèi)完成才能滿足工程上的需要,而實時數(shù)據(jù)到達客戶端的時延一般也不能超過一秒。所以數(shù)據(jù)庫的必須提供緊湊的數(shù)據(jù)結(jié)構(gòu)和高效的空間利用率以及各種實時數(shù)據(jù)操作的高速執(zhí)行。數(shù)據(jù)庫管理系統(tǒng)主要包括實時數(shù)據(jù)分發(fā)服務器模塊、實時數(shù)據(jù)庫模塊、歷史數(shù)據(jù)庫模塊以及實時數(shù)據(jù)庫與OPC客戶端的通信模塊。它為集成系統(tǒng)和下層子系統(tǒng)之間的數(shù)據(jù)通信提供高速通道,是智能建筑系統(tǒng)集成的核心。
數(shù)據(jù)庫系統(tǒng)向上接受監(jiān)控中心的控制指令,準確迅速地傳遞給各個子系統(tǒng),達到控制設備運轉(zhuǎn)的目的;向下數(shù)據(jù)庫系統(tǒng)從現(xiàn)場控制網(wǎng)獲取數(shù)據(jù),對數(shù)據(jù)進行分析、處理,執(zhí)行用戶定義的子系統(tǒng)聯(lián)動功能,保存歷史數(shù)據(jù)。
(1)實時數(shù)據(jù)分發(fā)服務器
實時數(shù)據(jù)分發(fā)服務器是實時數(shù)據(jù)庫與Web客戶端的數(shù)據(jù)通信接口。其功能是為瀏覽器端的頁面表現(xiàn)提供數(shù)據(jù)分發(fā)服務,接收并轉(zhuǎn)發(fā)客戶端(訪問、操作人員)下發(fā)的控制命令和事件記錄。這里可以借助基于Socket的實時數(shù)據(jù)分發(fā)服務器,提供客戶端與服務器之間的可靠無差錯的數(shù)據(jù)傳輸。數(shù)據(jù)分發(fā)服務器與客戶端之間的數(shù)據(jù)交互方式采用面向連接的TCP/IP流式套接字,通信雙方接收數(shù)據(jù)通過多次握手完成,保證了數(shù)據(jù)傳輸?shù)挠行浴?shù)據(jù)由操作功能信息碼和操作數(shù)據(jù)信息兩部分組成。接收方首先讀取操作功能信息碼,再根據(jù)操作功能信息碼確定下一步讀取操作中的數(shù)據(jù)類型和數(shù)據(jù)大小,以完成讀取操作數(shù)據(jù)信息,保證了數(shù)據(jù)傳輸?shù)陌踩?。操作功能信息碼的各字段值由交互雙方的操作類型決定。操作類型劃分為客戶端注冊、客戶端注銷、客戶端用戶登錄、客戶端用戶退出、信息點同步、分發(fā)狀態(tài)數(shù)據(jù)和接收控制指令。操作數(shù)據(jù)信息的數(shù)據(jù)包結(jié)構(gòu)如圖1所示:
圖1數(shù)據(jù)包封裝圖例
實時數(shù)據(jù)分發(fā)服務器采用事件驅(qū)動機制傳輸數(shù)據(jù),服務器把更新的數(shù)據(jù)主動提供給客戶端,以保證數(shù)據(jù)傳輸?shù)膶崟r性。
(2)實時數(shù)據(jù)庫
實時數(shù)據(jù)庫是數(shù)據(jù)庫系統(tǒng)的核心部分,在智能建筑集成系統(tǒng)中起著至關重要的作用。數(shù)據(jù)庫系統(tǒng)的實時數(shù)據(jù)庫基于對象方式進行設計,采用從上至下包容的方式:包含系統(tǒng)類對象、子系統(tǒng)類對象、設備類對象和點類對象。實時數(shù)據(jù)庫類對象的層次結(jié)構(gòu)如圖2所示:
圖2實時數(shù)據(jù)庫類的層次結(jié)構(gòu)圖
目前,在Windows環(huán)境的組態(tài)軟件中I/O接口驅(qū)動程序與系統(tǒng)實時數(shù)據(jù)庫之間的數(shù)據(jù)交換一般都是利用動態(tài)數(shù)據(jù)交換協(xié)議(DDE)來實現(xiàn)的。由于DDE為基于消息的協(xié)議標準,數(shù)據(jù)傳送過程需要處理多條消息,數(shù)據(jù)交換效率會受到影響。為了提高系統(tǒng)的實時性能,這里提出了利用動態(tài)鏈接庫(DLL)和全局共享內(nèi)存技術來建立實時數(shù)據(jù)庫的設計思想,并通過給用戶提供一套接口標準--實時數(shù)據(jù)庫接口,來實現(xiàn)OPC Client及用戶程序和實時數(shù)據(jù)庫間的高速數(shù)據(jù)傳遞。實時數(shù)據(jù)庫接口由一組API函數(shù)組成,包括創(chuàng)建點、刪除點、設置點屬性、讀取點屬性等功能,OPC Client和各個用戶模塊可以直接訪問數(shù)據(jù)庫,使系統(tǒng)具有全面的開放型和二次開發(fā)功能。
如圖3,在實時數(shù)據(jù)庫中,OPC Client和分發(fā)服務器之間通過內(nèi)存映射實現(xiàn)全局共享內(nèi)存。OPC Client通過內(nèi)存映射獲得實時數(shù)據(jù)庫點對象的指針,完成寫,讀,修改配置參數(shù)以及對數(shù)據(jù)的操作,包括添加、刪除對象。由于系統(tǒng)包含的點對象的數(shù)量龐大,需要使用hash表來記錄點名與點對象的地址。本系統(tǒng)采用靜態(tài)分配桶(hash鏈表長度)結(jié)合拉鏈的方法構(gòu)造hash鏈表。拉鏈即將所有關鍵字為同義詞的結(jié)點鏈接在同一個單鏈表中。hash表的結(jié)構(gòu)如圖4所示,縱向的為靜態(tài)桶數(shù)據(jù)結(jié)構(gòu),橫向的為hash node節(jié)點數(shù)據(jù)。
圖4 hash鏈表以及hash node的結(jié)構(gòu)
以上的結(jié)構(gòu)建立了點名與點內(nèi)存地址的一個映射,這樣通過點名就可以查詢到點的內(nèi)存地址,即點對象指針。系統(tǒng)采用time33的hash算法,定義點名變量str,取hash初值為5381。核心代碼為:
hash+=(hash<<5)+(*str++);
用掩碼取結(jié)果的有效位,得到最終的hash值。
在多線程訪問同一個數(shù)據(jù)對象的情況下必須要考慮沖突的解決問題。系統(tǒng)采用對數(shù)據(jù)加鎖的方式,即訪問數(shù)據(jù)必須先獲得鎖再進行操作。該算法構(gòu)造一個和hash靜態(tài)桶數(shù)組一樣的一個BOOL型記錄鎖數(shù)組,訪問時通過點名經(jīng)過hash函數(shù)運算得到一個key及對應桶數(shù)組的位置。得到key后判斷鎖數(shù)組對應位置的BOOL型變量是否為0(沒其他線程訪問),如果為0則改為1(這個操作過程須為原子操作),如果為1(其他線程正在操作數(shù)據(jù))則放棄剩余時間片,等到下個時間再判斷是否鎖已經(jīng)開了,循環(huán)一段時間如果還沒有開則放棄此次操作報警。經(jīng)過測試,拉鏈長度16229靜態(tài)桶,插入10000個隨機字符串,最大拉鏈長度為7,一個記錄鎖最多鎖住7個點,函數(shù)調(diào)用總時間不超過1.4秒。
(3)歷史數(shù)據(jù)庫
本系統(tǒng)使用SQL Server作為歷史數(shù)據(jù)庫的開發(fā)平臺。歷史數(shù)據(jù)庫用于記錄、保存和查詢各種報警和操作事件、設備運行數(shù)據(jù)及故障情況。系統(tǒng)采用時間片結(jié)合緩沖區(qū)鏈表的方法將實時數(shù)據(jù)庫里的數(shù)據(jù)寫入歷史數(shù)據(jù)庫。具體實現(xiàn)辦法是:緩沖區(qū)維護一個300條數(shù)據(jù)的鏈表,實時數(shù)據(jù)庫不斷將已更新的數(shù)據(jù)寫入緩存區(qū)。一旦緩存區(qū)滿或經(jīng)過了一個時間片,系統(tǒng)就將緩存區(qū)里的數(shù)據(jù)追加到歷史數(shù)據(jù)庫里面。這樣做的好處是能防止斷電丟失緩存區(qū)里的數(shù)據(jù)且能提高數(shù)據(jù)的有效性和準確性。
(4)實時數(shù)據(jù)庫與OPC的通信
OPC是OLE for Process Control的縮寫。顧名思義,OPC是一種利用微軟的COM/DCOM技術來達成自動化控制的協(xié)定?;贠PC技術的接口是一種有效的手段,能夠?qū)崿F(xiàn)各異構(gòu)子系統(tǒng)的無縫連接,從而快捷有效地把已有建筑子系統(tǒng)融合起來,組成智能建筑系統(tǒng)集成。
OPC協(xié)議采用Client/Server體系。應用程序作為OPC接口中的Client方,硬件驅(qū)動程序作為OPC接口中的Server方。OPC Client通過讀取配置文件,加載實時數(shù)據(jù)庫DLL并且打開內(nèi)存映射文件獲得實時數(shù)據(jù)庫對象的指針。
結(jié)束語
本文提出了基于子系統(tǒng)平等的智能建筑管理系統(tǒng),并對該系統(tǒng)的數(shù)據(jù)庫模塊,包括實時數(shù)據(jù)庫、實時數(shù)據(jù)分發(fā)服務器、歷史數(shù)據(jù)庫、實時數(shù)據(jù)庫與OPC的通信幾個子模塊進行了深入的研究和設計?;诹魇教捉幼值姆职l(fā)服務器保證了數(shù)據(jù)傳輸?shù)陌踩?、有效性和及時性;動態(tài)鏈接庫和全局共享內(nèi)存技術的應用提高了系統(tǒng)的實時性;hash表在點名和點的內(nèi)存地址之間建立了快速有效的映射關系;子系統(tǒng)平等方式集成的特點以及OPC技術的運用使得各個異構(gòu)子系統(tǒng)之間的無縫集成成為可能,解決了系統(tǒng)集成的伸縮性問題。
參考文獻
[1]陳立定,李文兢,胥布工,面向智能建筑集成管理系統(tǒng)的輕量級實時數(shù)據(jù)庫設計[J]低壓電器,2007.10.