?

實時數據庫系統及其在有軌電車弱電集成系統中的應用

2018-06-01 02:09
鐵路計算機應用 2018年5期
關鍵詞:數據庫系統弱電組態

魏 洋

(西南交通大學 信息科學與技術學院,成都 610031)

實時數據庫系統是組態軟件的核心組成部分,實時數據庫及時準確地獲取現場數據是整個控制系統正常工作的前提,同時實時數據庫系統是實時數據庫聯系圖形系統、歷史數據庫系統、報表系統、報警系統的橋梁和紐帶[1]。傳統的關系數據庫系統追求的目標是實現大容量數據存儲以及數據的準確性,其存放的數據不會主動的隨著時間的變化而改變即并沒有“實時性”概念,因此開發具有“實時性”概念的實時數據庫系統,是基于組態軟件設計的重點與難點。

1 實時數據庫系統設計

1.1 存儲策略

傳統的數據庫采用常駐磁盤的存儲策略,CPU訪問存儲在磁盤中的數據需要通過I/O操作,由于通過I/O操作讀取數據相比內存讀取數據速度要慢很多,當系統中對實時事務處理的性能要求很高,頻繁的I/O操作很難滿足事務定時限制的要求。隨著高性能實時事務處理應用的增加以及存儲器容量的增加與價格的下降,以“內存數據庫”(MMDB,main memory database)技術來實現實時數據庫的底層數據存儲管理,更有效地支持實時事務,已成為人們的共識[2]。因此我們采用內存存儲器、磁盤存儲器和檔案式存儲器等多種存儲介質共同構造實時數據庫系統存儲體系,其體系結構圖如圖1所示。

圖1 實時數據庫存儲結構

圖1中,M1為內存存儲器,它存放活躍事務的工作數據,包括采集點、輸出控制點、計算中間變量點等。M2為磁盤存儲器,本系統采樣MySQL關系數據庫存放現場設備的歷史數據。M3為檔案式存儲器,用來存放系統組態參數以及系統日志等需要長期保存的非共享數據,組態軟件的組態參數用來描述設備、變量、圖形等信息。由于XML語言具有極強的信息描述能力,選擇XML語言描述組態軟件的組態參數,利用Qt中提供的QtXml模塊可對XML文檔中的組態參數分層讀取,獲取組態軟件所需的初始化節點參數。

1.2 數據模型

傳統數據庫的數據是“單值”的、靜態的,即只要不“顯式地”調用UPDATE命令更改數據庫中的值,數據庫中的數據不會隨著現實時間的改變而改變。而實時數據庫必須表示數據與時間的關系,即具有“實時性”。

實時數據庫中的數據對象用位號表示,位號為一個三元組d:<value,time,valid>。其中,d為位號的標識符,分量dvalue為d的當前狀態值,dtime為時標,即實時數據的采樣時間或生成時間,dvalid為有效期,對于采樣數據是采樣周期,對于控制輸出數據是控制輸出截止時間。

1.3 功能模塊

實時數據庫系統利用面向對象的模塊化設計方法,將實時數據庫中的功能分為多個模塊單元進行封裝,降低系統內部的耦合程度,系統功能模塊之間通過封裝的接口函數進行聯系。實時數據庫系統功能模塊如圖2所示。

圖2 實時數據庫系統功能模塊結構

實時數據庫系統的功能模塊主要分為以下幾個模塊單元:

(1)用戶觸發模塊:用戶觸發實時數據庫系統程序,系統程序根據存儲在檔案式存儲器中的XML文件讀取組態參數,組態參數提供了系統初始化運行的必要信息。

(2)應用程序接口模塊:該模塊的接口函數提供了系統內部各個功能模塊進行聯系的內部通道,也給外部用戶程序提供了直接訪問實時數據庫的通道,外部用戶程序通過調用該模塊提供的接口函數可對實時庫數據進行查詢、刪除等基本操作,無需利用SQL語句進行操作,節省了解析SQL語句的步驟,提高了系統執行效率。同時該模塊還提供了與外存數據庫,組態軟件等的外部接口函數。

(3)網絡通信模塊:本系統網絡通信模塊采用Modbus TCP/IP協議進行遠程數據傳輸,是實時數據庫與現場設備之間的網絡通道。

(4)采集模塊:數據采集模塊按照事先設定好的固定周期,對現場設備的狀態值進行采集,并寫入到實時數據庫中,采集模塊保證了實時數據庫中的采集數據與現場設備狀態值保持一致,是實時數據庫實時性的保障之一。

(5)回送模塊:回送模塊將組態軟件發出的控制指令數據傳輸到現場設備,實現組態軟件對現場設備的遠程控制。

(6)讀寫操作模塊:該模塊包含數據輸入、輸出處理模塊,實現對實時數據對象讀寫操作的功能。

(7)歷史數據庫模塊:歷史數據由系統定時從實時數據庫中采樣保存到歷史數據庫中,歷史數據庫通過應用程序接口將數據保存到外部磁盤MySQL數據庫中。

(8)報警模塊:讀取用戶事先設定好的位號報警閾值,一旦位號當前值越限發出報警信息,并保存報警記錄。

(9)事故處理模塊:該模塊當現場控制設備發生故障時,發出事故報警,防止事故進一步惡化,并保存事故記錄。

2 系統實現

2.1 數據模型建立

一個完整的實時數據庫數據模型包括數據結構、數據操作、數據約束3個部分,即有:

RTDM : : = <RTDO, RTC, RTDP>[3]

其中,RTDM為數據模型,RTDO為實時數據對象及其結構,RTDP為施加于RTDO的操作,RTC為施加于RTDO與RTDP的限制,即數據約束。

2.1.1 數據結構

有軌電車弱電集成系統現場有采集數據、計算數據、控制數據等?,F場采集數據代表有軌電車弱電集成系統中被監控設備狀態,計算數據是由采集數據或者其它數據經過邏輯運算得到的數據,控制數據代表組態軟件輸出控制命令到現場被控設備。在實時數據庫系統中,將以上數據概括、抽象為模擬量輸入數據(AI)點、模擬量輸出數據(AO)點、數字量輸入數據(DI)點、數字量輸出數據(DO)點,統稱為位號[4]。一個位號有若干位號參數,每個位號參數都有一個數據值,將其抽象歸納為類似于關系數據庫中的表的模型,位號標識類比表的主鍵,若干位號參數類比表的若干字段屬性,即一個位號數據表示表的一行記錄。位號數據以<key,value>的形式存儲在內存中,表示結構如表1所示。

表1 數據結構

2.1.2 數據操作

在傳統數據庫中定義關系代數有5種基本操作:選擇、投影、并、差和笛卡爾積。在本實時數據庫系統中數據以<key,value>形式存儲,一組key/value類比于關系數據庫中的一行記錄,對于實時數據庫而言,一組數據是二維(值和時間)的,故傳統的關系代數操作不能適用于實時數據庫,要在傳統關系代數操作基礎上引入對時間的操作,以選擇操作為例:

為了說明方便,表2為簡略的有軌電車弱電集成系統現場數字量記錄表,將表2命名為table_DI。

表2 table_DI

查詢表table_DI中Value值為1,LastUpdate值大于等于30 000 ms的記錄:

其操作結果如表3所示。

表3 操作結果

2.1.3 數據約束

實時數據庫中的數據是相應現實世界的映像,因此現實世界狀態的任何變化都應及時反應到實時數據庫中。實時數據庫中的數據應保持外部(或絕對)一致性以及相互(或相對)一致性約束[5]。所謂外部一致性約束即要求數據對象時標必須足夠接近其真實產生時間,相互一致性約束即要求一組指定參與決策的數據集合相互之間的時間差距在一定的閾值范圍內。

以有軌電車弱電集成系統中的采集數據為例,采集數據有兩個位號參數分別為LastUpdate(數據最新更新時間,單位為:ms)和CollecTime(采樣周期,單位為:ms),為了保持實時數據庫中實時數據外部一致性約束,規定采集數據中的LastUpdate與系統時間差值必須小于等于采樣周期,即有Data滿足:

為了保持實時數據庫中的實時數據相互一致性約束,規定參與決策的一組數據之間的時標差值必須小于等于采樣周期,即有一組數據Data1,Data2,…Data(n)滿足:

以DI點為例,介紹其模型實例,在有軌電車弱電集成系統中DI點主要為全線列車、機電設備、供電設備等的采集數據以及計算數據。DI點為被控設備的開關量數據,由0和1表示開關的閉合。采用C++語言編程,根據有軌電車弱電集成系統中實際數據抽象概括了統一的數據結構模型,如下:

typedef struct tagDIGITAL

{

string PointCode; //位號標識

string PointDesc; //位號描述

string GroupCode; //組名稱,本系統中表示車站名稱

string DeviceCode; //車站中被控設備名稱

int PointType; //位號類型

int Value; //位號當前值

long CollectTime; //采樣周期,單位為:ms

long LastUpdate; //數據最新更新時間,單位為:ms

uchar DataCat; //位號當前值數據類型

short AlarmPriority; //報警優先級

short RtuNo; //采集通道號,0表示通道1,1表示通道2

short PointNo; //采集序號,小于0表示計算點,大于等于0表示從被控設備相應內存地址中讀取采集數據

short Complement; //取反標志,0不取反,1取反

short AlarmMode; //報警方式

short IncidentLim; //事故跳閘次數限

short SaveStyle; //存盤方式,0不存盤,1周期存盤,2變化存盤

short SaveInterval; //存盤間隔,單位為:min

short ValDefault; //缺省值,默認為0

} digital;

以上位號的數據模型已經確立,系統初始化生成數據庫表或者生成數據庫表后查詢數據都需要知道表的結構和表中字段的屬性結構,因此又抽象歸納了數據庫表和表中字段屬性的結構模型,如下:

char code[MDB_COLUMN_DESCSIZE]; //位號標識,即字段名稱

char desc[MDB_COLUMN_DESCSIZE]; //位號描述,即字段描述

int offset; //字段相對偏移值

mce::ushort unitlen; //字段長度

mce::uchar datatype; //字段類型

mce::uchar iskey; //是否是主鍵,1為主鍵,0為非主鍵

} BASECOLUMN;

2.2 并發控制協議

實時數據庫系統中所有的事務都對各種系統資源存在著共享與競爭,包括存儲空間、CPU時間、數據庫數據等,資源競爭式共享導致了各種沖突問題,而實時事務并發控制就是解決事務處理過程中所發生的各種沖突問題。目前,實時數據庫事務并發控制技術包括鎖式協議、樂觀協議和時標協議等,以上3種控制技術各有優缺點[6]。針對實時數據庫系統中硬實時事務只有周期采集事務和偶發的故障處理事務,其余大部分為軟實時事務,并且計算機系統內存資源有限等特點,所以實時數據庫系統選擇了鎖式控制協議。

鎖式并發控制協議機制都是進行悲觀的沖突探測,即凡是進行并發控制的兩個或多個事務都是沖突的,解決方法是讓沖突之一的事務阻塞或夭折。典型的鎖式并發控制算法是2PL(Two-Phase Lock Protocol)算法,該算法規定事務的執行分為兩個階段:(1)事務對任何數據進行讀寫操作之前,要先獲得該數據的封鎖;(2)在釋放封鎖后,事務不再申請和獲得其它任何封鎖[7]。傳統的2PL算法采用AB(always block)協議,以TH和TR分別代表占有和請求事務,凡是發生沖突就阻塞TR事務,讓其等待。傳統的2PL算法存在以下問題:(1)可能會發生死鎖,這對于實時性很不利;(2)忽略了事務優先級,默認為所有事務具有相同的優先級次序,可能引發系統事務優先級次序倒置,這違背了優先級驅動事務的處理原則。

針對傳統的2PL算法存在的缺點,本實時數據庫系統使用優先級2PL算法的鎖式并發控制協議。優先級2PL算法將基于優先級的沖突解決方式集成到傳統的2PL算法中,將每個事務指派一個優先級,當發生沖突時并不總是阻塞TR,而是選擇讓優先級較低的事務阻塞或夭折,這有利于高優先級的事務被優先處理。典型的優先級2PL算法是2PL-HP算法即高優先級2PL算法,該算法規定發生沖突時,若TR的優先級比所有TH的優先級高(可能有多個共享鎖的占有事務),則夭折所有的TH而讓TR執行,否則TR等待。采用C++語言編程,2PL-HP的沖突處理算法為:

令P(T)表示事務T的優先級,HC表示所有共享鎖占有者TH的集合,WC表示被阻塞的請求事務的集合,2PL-HP沖突處理算法用流程圖表示如圖3所示。2PL-HP算法在事務沖突解決方式上相比傳統的2PL算法,它考慮了事務的優先級次序,將較低優先級的事務推遲執行,有效地解決了優先級倒置問題。

圖3 2PL-HP沖突算法流程圖

在避免死鎖問題上,如果使用2PL-HP算法是靜態分配事務優先級次序,可以避免死鎖發生。

2.3 接口實現

實時數據庫接口為用戶程序提供了直接訪問實時數據庫中數據的有效通道,它是供用戶程序調用的一組函數集合,并且規定了調用這些函數集合的規范。直接調用接口函數提供的函數集合,極大地提高了研發人員開發用戶程序的效率。由于Windows中動態鏈接庫(DLL)文件被多個程序同時調用時,該DLL頁面只需放入內存一次即可實現資源共享,有效節省了內存資源,所以本系統的接口函數都是以動態鏈接庫的形式供用戶程序調用。表4列出了實時數據庫中部分接口函數??诤瘮祱绦谐霈F錯誤,接口函數返回值會返回錯誤信息,用戶調用程序通過檢查接口函數返回值判斷函數是否成功執行。

表4 接口函數說明

接口函數中大部分都含有一個或多個參數,并且具有返回值類型。接口函數內部會檢查參數的正確性,返回值表示接口函數執行正確與否,如果接

3 系統應用

目前,國內軌道交通運營的線路多采用適度集成模式,行車調度系統與綜合監控系統等有特殊要求和影響行車安全的系統仍獨立設置。這種結構的最大缺點是不能實現系統間高效的聯動,一旦行車過程中出現故障,各系統間響應速度不夠,限制了軌道交通的運營管理[8]。

有軌電車弱電集成系統應用于深圳龍華線有軌電車項目,將傳統的行車調度系統與綜合監控系統集成在一套系統上統稱為有軌電車弱電集成系統。主要包括信號系統(ATS)、電力監控系統(PSCADA)、火災自動報警系統(FAS)、自動售檢票系統(AFC)、旅客信息系統(PIS)、閉路電視系統(CCTV)、廣播系統(PA)、時鐘系統(CLK)等。在統一的系統平臺上實現對全線列車、機電設備、電力設備的監控功能,需要一個紐帶將有軌電車弱電集成系統現場的硬件設備、用戶監控界面連接起來。由于組態軟件能夠以靈活多樣的組態方式提供良好的用戶開發界面同時支持各種工業控制設備和常見的通信協議,與高可靠的網絡系統和工業計算機結合,可以實現向控制層和管理層提供軟、硬件的全部接口的功能,因此利用組態軟件開發有軌電車弱電集成系統的最佳選擇。實時數據庫系統是組態軟件的核心組成部分,它為組態軟件用戶界面提供現場監控設備的實時數據同時實時地將控制數據傳達到被控設備中。以下簡述實時數據庫系統應用于有軌電車弱電集成系統中的PSCADA。

3.1 應用于電力監控子系統

電力監控子系統(PSCADA)對有軌電車全線的供電設備的狀態進行監控,PSCADA所監控的設備包括變電所10 kV、1 500 V、400 V開關量(包含斷路器位置、隔離開關位置、設備工況等),變電所10 kV、1 500 V、400 V電氣模擬量等(包含電流、電壓、頻率、有功功率、無功功率、有功電度、無功電度等)。其中變電所10 kV、1 500 V、400 V開關量在實時數據庫系統中的數據模型在2.1中已經給出。PSCADA系統的用戶界面通過實時數據庫系統提供的接口讀取現場被控設備的狀態值,將現場設備的實時狀態反應在用戶界面中,如圖4所示。

圖4 PSCADA用戶界面

圖4中,綠色矩形表示斷路器處于分閘狀態,紅色表示斷路器處于合閘狀態,鼠標右擊斷路器可以實現對斷路器遠程控制以及查看斷路器實時狀態值,包括數字開關量以及模擬量的值,如圖5所示。

圖5 右擊斷路器彈出窗口

以查看斷路器的實時狀態值為例,點擊實時信息查看編號為6G01斷路器的數字量與模擬量實時值,如圖6所示。

圖6 斷路器數字量、模擬量實時值

圖6中,斷路器相關的數字量、模擬量數據均是通過實時數據庫系統提供的接口函數讀取的供電設備現場實時的狀態值。

4 結束語

使用組態軟件開發有軌電車弱電集成系統,系統需要實時監測控制全線列車、機電設備、電力設備的狀態值,實時數據庫是對這些設備狀態的實時映射,所以實時數據庫系是決定整個系統能否正常工作的關鍵。結合有軌電車弱電集成系統實際控制場景,抽象歸納出了實時數據庫系統數據模型。分析了實時數據庫系統的功能模塊結構,利用面向對象的模塊化設計方法以及動態鏈接庫技術,提供了實時數據庫系統的接口函數。針對實時數據庫系統中多事務同時對計算機系統共享資源競爭所引發的沖突問題,使用鎖式并發控制技術解決事務沖突問題。通過對傳統的2PL算法與優先級2PL算法比較,最終確立了使用2PL-HP算法實現鎖式并發控制協議,相比使用2PL算法,解決了事務優先級倒置問題,避免了死鎖發生等問題。但同時該算法也存在一些缺陷,如使用2PL-HP算法相比傳統的2PL算法浪費了計算機系統資源,也有可能導致活鎖的發生。無論是基于樂觀還是悲觀的實時事務并發控制協議算法都存在一定的缺陷,本文是在計算機系統資源有限,實時數據庫系統軟實時事務較多的情況下,探索使用了基于2PL-HP算法實現實時數據系統事務鎖式并發控制協議,并成功運用在有軌電車弱電集成系統中。最后舉例說明實時數據庫系統在有軌電車弱電集成子系統PSCADA中的應用。

[1]王 荃,壘 壹,李福中.工控組態軟件實時數據庫系統的設計與實現[J]. 化工自動化及儀表,2000,27(3):40-43.

[2]張 維.實時事務處理的研究與設計[D].武漢:華中科技大學,2008:4-5.

[3]劉云生,易 嵐.一個實時數據模型[J].小型微型計算機系統,2000,21(5):550-551.

[4]雷 建,王潤孝,沈 昕.流程工業生產調度與控制集成系統數據庫設計[J].工業儀表與自動化裝置,2008(3):74-74.

[5]P.A.Thopmpson. A temporal data model based on accounting principles.[D]PhD thesis,Dept. of Computer Science. Univ. of Calgary,Calgary,Alta.,Canada,Mar.1991.

[6]程昌秀,申排偉,陸 鋒.面向拓撲空間實體的擴展鎖技術[J].計算機輔助設計與圖形學學報,2005,17(2):209-210.

[7]姚曉玲,吳哲輝. 2PL協議的Petri網模型[J].計算機工程與應用,2004,40(24):160-161.

[8]金久強,王 浩.北京地鐵6號線行車綜合自動化系統設計與實現[J].鐵路計算機應用,2015,24(8):56-57.

猜你喜歡
數據庫系統弱電組態
住宅小區弱電智能化工程建設實現
建筑智能化弱電的施工管理探討
弱電智能化系統在建筑工程中的應用分析
基于PLC及組態技術的恒溫控制系統開發探討
弱電控制系統管理及維護途徑
Oracle數據庫系統的性能優化研究
基于PLC和組態的智能電動擰緊系統
微細銑削工藝數據庫系統設計與開發
江蘇省ETC數據庫系統改造升級方案探討
PLC及組態軟件在隧道監控系統中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合