文正國,陳小松
(北京中水科水電科技開發(fā)有限公司,北京 100038)
iP9000水電廠智能一體化平臺數(shù)據(jù)模型的對象化設(shè)計(jì)
文正國,陳小松
(北京中水科水電科技開發(fā)有限公司,北京 100038)
針對水電廠自動化系統(tǒng)傳統(tǒng)的以數(shù)據(jù)點(diǎn)定義為主要方式的數(shù)據(jù)模型組織方式的缺點(diǎn),iP9000水電廠智能一體化平臺提出以面向?qū)ο蟮乃枷霕?gòu)建以對象定義和對象關(guān)系定義為主要內(nèi)容的數(shù)據(jù)建模方法。本文介紹了對象化模型設(shè)計(jì)的基本原理、概念和設(shè)計(jì)方法,描述了對象化模型設(shè)計(jì)的要點(diǎn),并提出了適合對象化模型存儲的數(shù)據(jù)庫要求。
iP9000智能一體化平臺;對象化;建模
傳統(tǒng)的水電站計(jì)算機(jī)監(jiān)控系統(tǒng)系統(tǒng)和其他二次自動化系統(tǒng)通常按照生產(chǎn)單元、數(shù)據(jù)類型進(jìn)行數(shù)據(jù)信息的描述和組織,如全廠分為多個機(jī)組單元、開關(guān)站和公用系統(tǒng),每個生產(chǎn)單元包含模擬量(遙測)、開關(guān)量(遙信)、脈沖量等數(shù)據(jù)類型的數(shù)據(jù)集合,形成一種簡單層次化的、單向包含的、以數(shù)據(jù)點(diǎn)定義為主要方式的數(shù)據(jù)模型結(jié)構(gòu)。這種數(shù)據(jù)組織模式的優(yōu)點(diǎn)是結(jié)構(gòu)簡單清晰、易于實(shí)現(xiàn)和維護(hù),但缺點(diǎn)是層次太過簡單,缺乏用于表示具體生產(chǎn)子設(shè)備如調(diào)速器、勵磁等中間層次的數(shù)據(jù)模型,單個子設(shè)備的各項(xiàng)數(shù)據(jù)散落在整個單元數(shù)據(jù)集中,數(shù)據(jù)點(diǎn)之間沒有橫向的關(guān)聯(lián)關(guān)系,難以清晰直觀反映設(shè)備的狀態(tài)。而且數(shù)據(jù)表示形式單一,缺乏自我描述能力,動態(tài)擴(kuò)展性差。簡而言之,傳統(tǒng)的數(shù)據(jù)模型層次簡單、粒度較粗,很難描述復(fù)雜的設(shè)備內(nèi)部各數(shù)據(jù)之間、各個設(shè)備之間的關(guān)系與聯(lián)系。iP9000智能一體化平臺作為水電廠自動化系統(tǒng)的基礎(chǔ)架構(gòu)和支撐平臺,需要支持不同系統(tǒng)的各種數(shù)據(jù)類型和關(guān)系模型,并在其上部署智能化應(yīng)用系統(tǒng),采用面向?qū)ο蠡臄?shù)據(jù)模型就是一種必然的選擇。
1.1 基本原理
水電廠生產(chǎn)系統(tǒng)及其自動化系統(tǒng)是由一些設(shè)備元素構(gòu)成的,這里的設(shè)備元素包括水輪發(fā)電機(jī)組、變壓器、開關(guān)站設(shè)備、油氣水輔助設(shè)備等,每一類設(shè)備又包含成百上千的子設(shè)備,如調(diào)速器、勵磁系統(tǒng)、潤滑設(shè)備、冷卻設(shè)備、母線、開關(guān)等。每個設(shè)備元素都有各自的功能,整個電站的功能由各個設(shè)備相互協(xié)調(diào)配合完成。每個設(shè)備元素又都有各自的狀態(tài),整個生產(chǎn)系統(tǒng)的狀態(tài)由各個設(shè)備的狀態(tài)來體現(xiàn)。根據(jù)規(guī)模、規(guī)格以及功能,各個設(shè)備元素之間又可以存在著相同或相似性,并且各個設(shè)備元素的規(guī)模、規(guī)格以及功能都會根據(jù)需要隨時發(fā)生變化。實(shí)際的生產(chǎn)系統(tǒng)工作模型與面向?qū)ο蟮能浖P陀兄匀坏膶?yīng)關(guān)系:各類設(shè)備都是一些對象,每個對象都有各自的狀態(tài)和功能;各對象之間可以存在著整體與部分的關(guān)系,即一個對象可以由多個其他對象構(gòu)成(聚集);各對象之間也可以存在一般與特殊的關(guān)系,即一個對象除了具有與其他對象相同的功能外,還可有自己特殊的功能,并且通過聚集和繼承機(jī)制,可以隨時增加新的對象。鑒于實(shí)際的生產(chǎn)系統(tǒng)工作模型與面向?qū)ο蟮能浖P椭g的一致性,采用面向?qū)ο蠹夹g(shù)來設(shè)計(jì)生產(chǎn)系統(tǒng)的數(shù)據(jù)模型將會非常自然和有效。
面向?qū)ο蟮幕舅枷胧峭ㄟ^對問題領(lǐng)域進(jìn)行自然的分割,用更接近人類通常思維的方式建立問題領(lǐng)域的模型,并進(jìn)行結(jié)構(gòu)模擬和行為模擬,從而使設(shè)計(jì)出的軟件能盡可能地直接表現(xiàn)出問題的求解過程。因此,面向?qū)ο蟮姆椒ň褪且越咏祟惓R?guī)的思維模式,將客觀世界的實(shí)體模型化為對象。每一種對象都有各自的內(nèi)部狀態(tài)和運(yùn)動規(guī)律,不同對象之間的相互聯(lián)系和相互作用就構(gòu)成了各種不同的系統(tǒng)。
1.2 基本概念
在數(shù)據(jù)模型的對象化設(shè)計(jì)中,對象、屬性、方法、類是基本的概念。
(1)對象
包含了數(shù)據(jù)屬性和圍繞著數(shù)據(jù)的操作方法,可以認(rèn)為是數(shù)據(jù)和行為的統(tǒng)一體。比如:對象可以是1個電站,可以是某臺機(jī)組的調(diào)速器,還可以是調(diào)速器的壓力油罐壓力。對于一個對象,應(yīng)具有如下特點(diǎn):
1)每個對象具有一個唯一的對象標(biāo)識,用以區(qū)分在數(shù)據(jù)模型中的其他任何對象;
2)每個對象具有一組描述其特征的屬性和對應(yīng)的屬性值,用以表明該對象包含的信息和自身狀態(tài);
3)每個對象具有一組表示對外提供服務(wù)的操作方法,用以改變對象的狀態(tài)、提供對象的信息等。
(2)屬性
屬性是對象所包含的數(shù)據(jù)。一個對象可以包含多個屬性,每個屬性可以是任意類型的數(shù)據(jù),包括數(shù)值、描述性字符串,甚至可以是圖像、視頻流、另一個實(shí)體對象等。
(3)方法
方法是對對象的操作,也可認(rèn)為是對象對外提供的行為和服務(wù),如對對象的狀態(tài)或數(shù)據(jù)進(jìn)行讀取、修改等。類通過方法實(shí)現(xiàn)封裝和多態(tài)特性,隱蔽其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。
(4)類
類是對對象的抽象,具有相同屬性和方法的對象可以抽象出類。類是創(chuàng)建對象的模板,從同一個類實(shí)例化的每個對象都具有相同的結(jié)構(gòu)和方法。如所有的水輪發(fā)電機(jī)組都具有額定水頭、額定出力、額定轉(zhuǎn)速、實(shí)發(fā)有功、運(yùn)行狀態(tài)等共有屬性,以及開機(jī)、停機(jī)等相同的操作方法,就可以抽象為水輪發(fā)電機(jī)組類。建立了水輪發(fā)電機(jī)組類的數(shù)據(jù)模型后,每臺發(fā)電機(jī)組就可以定義為類的一個實(shí)例化對象。
1.3 建模方法
水電廠面向?qū)ο髷?shù)據(jù)建模的主要方法有抽象、分類、概括、聚合、關(guān)聯(lián)等。
(1)抽象
基于從實(shí)體到模型的思維,將水電廠生產(chǎn)系統(tǒng)的各種實(shí)體設(shè)備按其屬性和功能抽象出對象模型,建立映射關(guān)系,如1號機(jī)組對象、大壩對象、調(diào)速器對象。
(2)分類
分類是把具有相同屬性結(jié)構(gòu)和操作方法的對象歸納為一個公共類。例如,所有機(jī)組對象可歸納出機(jī)組類,所有的開關(guān)對象可歸納為開關(guān)類。按不同層次和粒度,水電站數(shù)據(jù)模型可歸納出流域類、電站類、機(jī)組類、發(fā)電機(jī)類、定子類、溫度類等。
(3)概括
概括是把多個類中相同的屬性和操作方法抽象出來,形成一個更高層次、更具一般性的超類,原來的類是這個超類的子類。超類用來表示概括的特征,子類是超類的一個特例。子類還可以進(jìn)一步分類,作為幾個子類的超類。例如,混流式機(jī)組類、軸流式機(jī)組類、沖擊式機(jī)組類可以提取出水輪機(jī)組類。
(4)聚合
聚合是將幾個不同類型的子對象聚集在一起組合成一個復(fù)合對象,用于表示更高層次的對象。復(fù)合對象與子對象的關(guān)系是整體和部分的關(guān)系。例如開關(guān)站對象除了包含電壓等級等屬性外,還包含母線對象、斷路器對象、隔離刀閘對象、各種保護(hù)對象等。
一個復(fù)雜對象由多個簡單對象或其他復(fù)雜對象組成。一個復(fù)雜對象被視作一個樹,對象本身是根結(jié)點(diǎn),它的成員對象是樹的孩子,樹的葉結(jié)點(diǎn)是簡單對象。
(5)關(guān)聯(lián)
關(guān)聯(lián)表示對象之間的引用關(guān)系,比如水頭對象與機(jī)組對象之間的關(guān)系。這種關(guān)系通常使用類的屬性表達(dá),即類的屬性值為另一個對象或包含對象的集合。關(guān)聯(lián)關(guān)系所涉及的兩個對象可以處于任何不同的層次,而不是像聚合關(guān)系中那樣兩個對象屬于整體與部分的關(guān)系。關(guān)聯(lián)是一種連接關(guān)系,說明從一個對象可以聯(lián)系到另一個對象,也可以形成雙向聯(lián)系。
2.1 對象名稱ONAME
每個對象具有一個系統(tǒng)唯一的名稱ONAME。系統(tǒng)支持對象名以任何規(guī)則命名,只要不與系統(tǒng)中已存在的對象名重合就行。但為了便于直觀表達(dá)該對象表示的實(shí)際設(shè)備或功能,以及所屬對象或范圍,對象名的命名規(guī)則采用層次化結(jié)構(gòu),由上層對象名加上自身描述名組成,如:
GBZ.220SWY.2206BREAK1.OPEN
“GBZ”表示電站名,“220SWY”表示220 kV開關(guān)站,“2206BREAK”表示編號為2206的斷路器,“OPEN”表示開接點(diǎn)。
層次化結(jié)構(gòu)名稱不是必須的,但是因?yàn)榘擞幸饬x的信息,對于數(shù)據(jù)模型的使用者和維護(hù)者來說更加便利。
對象間的層級關(guān)系采用另外的機(jī)制實(shí)現(xiàn),在下文中進(jìn)行說明。
2.2 對象標(biāo)識OID
雖然每個對象都有一個獨(dú)一無二的名稱,但由于名稱字符串通常都比較長,對對象進(jìn)行處理時如果都采用名稱進(jìn)行區(qū)分,對空間占用和運(yùn)行效率都會有不利影響。因此,需要給每個對象分配一個系統(tǒng)唯一的編號,稱為對象標(biāo)識OID。只要OID相同,無論對象的屬性、操作如何修改都是同一對象,只要OID不同,即使其屬性、操作都一樣也是不同對象。對象OID一經(jīng)分配確定后即不再修改,在整個系統(tǒng)生命周期中保持不變。
在系統(tǒng)內(nèi)部采用OID進(jìn)行數(shù)據(jù)處理和存儲,能夠提高系統(tǒng)響應(yīng)速度,節(jié)省存儲空間。而在人機(jī)聯(lián)系界面上,如系統(tǒng)配置界面、維護(hù)界面、操作界面,對象則以對象名的形式使用和標(biāo)示,以便更加直觀。
2.3 基本對象
任何數(shù)據(jù)點(diǎn)均定義為一個基本對象,擁有名稱、ID、類型、值(狀態(tài))、質(zhì)量狀態(tài)、更新時間、更新來源等基本屬性。根據(jù)其類型的不同作為某一種類型的實(shí)例化對象,如遙測類對象、遙信類對象,每一類對象還擁有類型相關(guān)的屬性,如遙測類對象包含工程量程參數(shù)、報(bào)警限值參數(shù)、工程單位等屬性,遙信類對象包含狀態(tài)變化時間等屬性。
在工程實(shí)踐中,還可以根據(jù)需要動態(tài)添加任意類型的新屬性及對應(yīng)的操作方法,如關(guān)聯(lián)對象或?qū)ο蠹厦?/p>
2.4 通用對象
通用對象用來表示各類設(shè)備、部件、模塊、功能,例如:1座大壩、1個壓力油罐、1臺主機(jī)、1塊CPU、1個進(jìn)程等。通用對象通常包含了較復(fù)雜的屬性和其他子對象,并且具有層次性,要么包含其他子對象,要么屬于一個或多個父對象,因此具有父對象屬性和子對象屬性。多個父對象的情況雖不普遍,但確實(shí)存在,例如,我們可以把壩前、壩后水位對象當(dāng)作多個機(jī)組對象的子對象。
通過對象之間的層級關(guān)系,整個數(shù)據(jù)模型可看作是只有一個根節(jié)點(diǎn)、有層級差別、由樹形結(jié)構(gòu)衍生的樹形網(wǎng)狀結(jié)構(gòu),我們稱之為樹網(wǎng)結(jié)構(gòu)。此結(jié)構(gòu)中有根節(jié)點(diǎn)、中間節(jié)點(diǎn)和葉節(jié)點(diǎn)。根節(jié)點(diǎn)是唯一的,可以從根節(jié)點(diǎn)遍歷整個數(shù)據(jù)模型;中間節(jié)點(diǎn)都是通用對象,表示系統(tǒng)中所有實(shí)體設(shè)備和功能的抽象模型。葉子節(jié)點(diǎn)都是數(shù)據(jù)點(diǎn)類型的基本對象,表示具體的狀態(tài)、值、參數(shù)等信息。
當(dāng)系統(tǒng)中所有的節(jié)點(diǎn)都只有一個父對象時,數(shù)據(jù)模型就是一個標(biāo)準(zhǔn)的樹形結(jié)構(gòu),也可以說樹形結(jié)構(gòu)是通用設(shè)備對象關(guān)系的一種特殊狀態(tài)。
2.5 對象的層級關(guān)系表示
對象的層級關(guān)系表示可以采用兩種方式:自上而下與自下而上。自上而下的方式就是在對象中表示包含哪些子對象;自下而上的方式就是在對象中表示屬于哪些父對象。自上而下的方式便于從根節(jié)點(diǎn)開始對數(shù)據(jù)庫進(jìn)行遍歷,自下而上的方式便于從葉節(jié)點(diǎn)對象一直上溯至根節(jié)點(diǎn)對象父對象。從處理的便利程度和性能考慮,我們的模型同時采用自上而下和自下而上兩種表示方式:根節(jié)點(diǎn)對象只包含子對象屬性,中間節(jié)點(diǎn)對象同時包含父對象屬性和子對象屬性,葉子節(jié)點(diǎn)對象只包含父節(jié)點(diǎn)對象屬性。父對象屬性和子對象屬性的值為對象標(biāo)識OID列表。例如,調(diào)速器對象屬于機(jī)組對象,就在調(diào)速器對象的父對象屬性中保存機(jī)組對象的OID,機(jī)組對象的子對象屬性中包含調(diào)速器對象的OID。當(dāng)列表中的對象數(shù)量較多時,我們還可將列表中所有成員新建為一個集合對象,而在對象屬性中保存集合對象名。
father object:
attribute child_obj:obj_oid(set)
child object:
attribute father_obj:obj_oid(set)
圖1 對象的層級關(guān)系表示
2.6 對象的關(guān)聯(lián)關(guān)系表示
在系統(tǒng)中,對象之間除了層級關(guān)系外,還可以建立關(guān)聯(lián)關(guān)系,即兩個對象之間不是從屬關(guān)系,但存在某種聯(lián)系,可以是單向的,也可以是雙向的。通過關(guān)聯(lián)關(guān)系,應(yīng)用程序可以根據(jù)一個對象的狀態(tài)變化去修改其關(guān)聯(lián)的另外一個對象的狀態(tài),以實(shí)現(xiàn)某種功能。關(guān)聯(lián)關(guān)系的實(shí)現(xiàn)方式與層次關(guān)系類似,有關(guān)聯(lián)關(guān)系的對象通過增加一個關(guān)聯(lián)對象屬性來指向關(guān)聯(lián)對象。
attribute relationship_obj:obj_oid(set)
如果一個對象有不同性質(zhì)的多個關(guān)聯(lián)關(guān)系,只需要增加相應(yīng)的多個屬性即可。
以對象化形式組織的水電廠數(shù)據(jù)模型,因需要支持動態(tài)添加對象屬性,屬性類型沒有限制,可以為簡單的數(shù)值、字符串,也可以為復(fù)雜的二進(jìn)制數(shù)據(jù)流,比如圖片、文檔,還需要支持各種層次關(guān)系和關(guān)聯(lián)關(guān)系的表示。若采用傳統(tǒng)的實(shí)時數(shù)據(jù)庫或關(guān)系型數(shù)據(jù)庫存儲對象化模型,需要將對象的屬性和各種關(guān)系一一映射為實(shí)時數(shù)據(jù)庫中的結(jié)構(gòu)成員或關(guān)系表中的域,預(yù)先定義其數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型。因難以適應(yīng)對象模型的動態(tài)修改,傳統(tǒng)數(shù)據(jù)庫將會顯得力不從心和低效。
隨著數(shù)據(jù)庫技術(shù)的發(fā)展,直接支持對象表達(dá)和存儲的數(shù)據(jù)庫日益成熟,如NoSQL數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫泛指非關(guān)系型的數(shù)據(jù)庫,如key-value存儲數(shù)據(jù)庫和文檔型數(shù)據(jù)庫,其主要特點(diǎn)是不需要嚴(yán)格遵循數(shù)據(jù)約束,模式自由,不需要預(yù)先定義表結(jié)構(gòu)和數(shù)據(jù)類型就可支持動態(tài)存儲各種復(fù)雜的數(shù)據(jù)類型,非常適合對象化數(shù)據(jù)模型和對象數(shù)據(jù)的存儲。
數(shù)據(jù)模型是對客觀事物及其聯(lián)系的數(shù)據(jù)描述,即實(shí)體模型的抽象化。iP9000水電廠智能一體化平臺采用面向?qū)ο蠡臄?shù)據(jù)模型設(shè)計(jì),在生產(chǎn)控制自動化領(lǐng)域以自然直觀的方式建立一種貼合生產(chǎn)運(yùn)行需要、基于對象化的數(shù)據(jù)組織模型,并采用高效的、適合于對象化存儲的數(shù)據(jù)庫,為智能控制、智能報(bào)警和智能診斷等高級應(yīng)用提供了有力的平臺支撐。
[1]王德寬,張 毅,劉曉波,等.智能水電廠自動化系統(tǒng)總體構(gòu)想[J].水電自動化與大壩監(jiān)測,2011,35(1):5-9.
[2]紀(jì) 陵,李忠明,蔣衍君,等.智能變電站二次虛回路對象化信息模型描述方法研究[J].華電技術(shù),2015,37(2):4-6.
[3]戴毅茹,嚴(yán)雋薇,張曉棠.面向?qū)ο蠹夹g(shù)的資源建模方法[J].計(jì)算機(jī)集成制造系統(tǒng),2001,7(10):22-26.
[4]陳 華,郭生練,熊立華,等.面向?qū)ο蟮腉IS水文水資源數(shù)據(jù)模型設(shè)計(jì)與實(shí)現(xiàn)[J].水科學(xué)進(jìn)展,2005,16(4):556-563.
[5]徐小玲.基于面向?qū)ο髷?shù)據(jù)模型的信息管理系統(tǒng)[J].電子科技大學(xué)學(xué)報(bào),2003,32(1):85-88.
[6]邵鵬鳴,李成剛,吳翰聲.基于對象模型的不確定環(huán)境下服務(wù)性機(jī)器人系統(tǒng)模型研究 [J].機(jī)械工程學(xué)報(bào),2001,37(8): 47-51.
[7]張金江,郭創(chuàng)新,曹一家,等.變電站設(shè)備狀態(tài)監(jiān)測系統(tǒng)及其IEC模型協(xié)調(diào)[J].電力系統(tǒng)自動化,2009,33(20):67-72.
TV736
A
1672-5387(2017)07-0001-04
10.13599/j.cnki.11-5130.2017.07.001
2017-04-27
文正國(1975-),男,高級工程師,從事水電廠自動化系統(tǒng)技術(shù)的研究與開發(fā)工作。