蔡 杰,陳 鵬,孫 毅,吳 寧
[南瑞集團(國網(wǎng)電力科學(xué)研究院)有限公司,江蘇省南京市 211106]
隨著國家新能源政策的不斷推進,新能源與可再生能源出現(xiàn)了飛躍式發(fā)展,光伏、水電、風(fēng)電項目的建設(shè)規(guī)模不斷升級,開始出現(xiàn)集合了光伏、水電、風(fēng)電與儲能的超大型新能源集控,并呈現(xiàn)出設(shè)備模型多樣化、數(shù)據(jù)規(guī)模海量化、設(shè)備規(guī)模擴大化的態(tài)勢。設(shè)備模型多樣化是因為新能源集控接入電站的類型復(fù)雜,光伏、水電、風(fēng)電與儲能站應(yīng)用了不同的類型的生產(chǎn)設(shè)備,難以形成統(tǒng)一的標(biāo)準(zhǔn)模型;數(shù)據(jù)規(guī)模海量化是因為新能源電站本身的測點規(guī)模龐大,加上接入電站的數(shù)量眾多,導(dǎo)致了數(shù)據(jù)規(guī)模的膨脹,以黃河上游水電開發(fā)有限責(zé)任公司新能源集控為例,接入電站超過100座,接入測點數(shù)量超過1000萬;設(shè)備規(guī)模擴大化是因為接入信息海量,必須通過增加監(jiān)控節(jié)點的方式分?jǐn)倢崟r數(shù)據(jù)的采集、存儲與處理壓力。傳統(tǒng)計算機監(jiān)控系統(tǒng)實時數(shù)據(jù)庫未采用負(fù)載均衡的設(shè)計,在海量數(shù)據(jù)采集與處理環(huán)境下,需要配備完全不工作的冗余節(jié)點,增加了設(shè)備投資浪費了計算資源;單一的數(shù)據(jù)總線設(shè)計無法滿足實時數(shù)據(jù)同步所需的性能要求;模型同步工作需要手工執(zhí)行,由于節(jié)點數(shù)據(jù)眾多導(dǎo)致維護工作范圍擴大,維護風(fēng)險增大。因此必須設(shè)計適應(yīng)新能源集控需要的實時數(shù)據(jù)庫功能。
文獻[9][10]介紹了兩種層次化的實時數(shù)據(jù)庫,有利于模型間關(guān)系的索引,但為了提高新能源集控監(jiān)控系統(tǒng)實時數(shù)據(jù)庫的存取效率,本文采用關(guān)系型實時數(shù)據(jù)庫,這是不同的設(shè)計思路。文獻[8]介紹了基于CIM模型的實時數(shù)據(jù)庫設(shè)計,這是電網(wǎng)系統(tǒng)中常用的方式,但由于新能源集控中設(shè)備的類型復(fù)雜難以統(tǒng)一建模,因此采用基本測點的存儲方式設(shè)計實時數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)。文獻[1][2][5][6]介紹了電網(wǎng)系統(tǒng)中實時數(shù)據(jù)庫的分布式架構(gòu)與同步機制,電網(wǎng)系統(tǒng)分布式設(shè)計的特定是實現(xiàn)了在廣域范圍內(nèi)的實時數(shù)據(jù)分布與同步,為了實現(xiàn)異地之間的數(shù)據(jù)同步采用點對點的數(shù)據(jù)同步與獲取方式,由于新能源集控的建設(shè)集中在單個地點,為了提高性能應(yīng)以傳統(tǒng)監(jiān)控系統(tǒng)的組播實時數(shù)據(jù)總線為基礎(chǔ)優(yōu)化性能。文獻[4]介紹了電網(wǎng)實時數(shù)據(jù)庫中的索引方式,本文介紹的實時數(shù)據(jù)庫采用了相同的索引方法以提高實時數(shù)據(jù)庫的存取功能,本文將不再贅述這些內(nèi)容。文獻[3]介紹了電網(wǎng)系統(tǒng)中負(fù)載均衡的設(shè)計,相當(dāng)于將監(jiān)控系統(tǒng)的所有機器虛擬化為單個服務(wù)器,在這些服務(wù)器中按照系統(tǒng)資源來分配所有的功能,但按照新能源集控的傳統(tǒng),監(jiān)控系統(tǒng)內(nèi)的節(jié)點必須存在功能劃分,因此本文介紹的實時數(shù)據(jù)庫采用相同功能節(jié)點內(nèi)負(fù)載均衡的設(shè)計。
本文所介紹的監(jiān)控系統(tǒng)實時數(shù)據(jù)庫設(shè)計,能夠滿足新能源集控的需要,滿足海量、高效、易用、安全、可擴展的要求。
新能源集控監(jiān)控系統(tǒng)每臺節(jié)點運行一個本地實時數(shù)據(jù)庫,提高本地應(yīng)用的數(shù)據(jù)存取速度。為了提高實時數(shù)據(jù)的同步效率,建立局域網(wǎng)內(nèi)的實時數(shù)據(jù)總線,完成各節(jié)點間的實時數(shù)據(jù)同步;實時數(shù)據(jù)總線橫跨Ⅰ、Ⅲ區(qū),可以將Ⅰ區(qū)最新的數(shù)據(jù)同步給Ⅲ區(qū)Web應(yīng)用進行展示(見圖1)。

圖1 實時數(shù)據(jù)庫體系架構(gòu)Figure 1 Real-time database architecture

圖2 實時數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)Figure 2 Real-time database data structure
由于新能源集控的數(shù)據(jù)量非常大,為了提升系統(tǒng)的整體性能,對實時數(shù)據(jù)庫內(nèi)的信息進行了分區(qū),分區(qū)為實時數(shù)據(jù)的最小劃分粒度,每臺服務(wù)器可以根據(jù)自身節(jié)點的功能需要選取加載特定分區(qū)的信息,提升單個節(jié)點實時數(shù)據(jù)相關(guān)業(yè)務(wù)的處理效率。為了解決節(jié)點眾多維護工作范圍擴大的問題,設(shè)計實時數(shù)據(jù)結(jié)構(gòu)自動同步的機制;當(dāng)實時數(shù)據(jù)服務(wù)節(jié)點的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時,自動將對應(yīng)分區(qū)的數(shù)據(jù)結(jié)構(gòu)同步到所需要的節(jié)點,確保系統(tǒng)內(nèi)實時數(shù)據(jù)結(jié)構(gòu)的一致性。
與文獻[3]不同,系統(tǒng)內(nèi)劃分不同的功能節(jié)點,相同的功能節(jié)點內(nèi)建立實時數(shù)據(jù)采集與處理業(yè)務(wù)的負(fù)載均衡機制,降低系統(tǒng)資源的浪費,提高系統(tǒng)可靠性。
2.1.1 數(shù)據(jù)結(jié)構(gòu)與關(guān)鍵字
由于新能源集控的設(shè)備復(fù)雜,按照設(shè)備類型統(tǒng)一建模的可能性很小,因此采用基本測點作為實時數(shù)據(jù)庫的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),基本測點類型包括模擬量、溫度量、開關(guān)量、SOE事件量、模擬量輸出、開出量;按照實時數(shù)據(jù)庫劃分原則,若干基本測點組織在一起形成實時數(shù)據(jù)分區(qū);相同類型的實時數(shù)據(jù)分區(qū)組織在一起形成對應(yīng)數(shù)據(jù)類型的模型池(見圖2)。模型池設(shè)計支持?jǐn)?shù)據(jù)結(jié)構(gòu)的動態(tài)更新,為模型自動同步功能提供了基礎(chǔ)。
測點關(guān)鍵字采用描述設(shè)備層級關(guān)系的字符串表示,具體來說就是將實時數(shù)據(jù)分區(qū)號、廠站號、單元號、數(shù)據(jù)類型、測點排行號順序排列在一起,如測點6.0.1.1.1.31代表實時數(shù)據(jù)分區(qū)6中1號廠站1號單元下數(shù)據(jù)類型1的第31點。測點關(guān)鍵字符串可以映射為64位的數(shù)字,再采用文獻[4]中使用的Hash方法建立數(shù)據(jù)索引,提升實時數(shù)據(jù)的訪問效率。

圖3 模型同步原理Figure 3 Principle of model synchronization
2.1.2 模型同步
主服務(wù)器的實時數(shù)據(jù)庫建立后,各測點類型的模型池中會存放不同實時數(shù)據(jù)分區(qū)的測點。客戶端可以自由選擇所需要的實時數(shù)據(jù)分區(qū),不需要的分區(qū)信息可以不加載到本地實時庫,通過該設(shè)計降低單個節(jié)點的實時數(shù)據(jù)負(fù)擔(dān),提高節(jié)點的運行效率。服務(wù)器會通過版本信息總線發(fā)布當(dāng)前實時庫分區(qū)的版本信息,客戶端通過總線接收實時庫分區(qū)的版本信息并與本地的版本進行比較,當(dāng)發(fā)現(xiàn)某一個實時數(shù)據(jù)分區(qū)中的模型版本發(fā)生變化,客戶端會自動向服務(wù)器發(fā)起請求自動獲取最新的信息并更新本地實時庫(見圖3)。
這里需要注意,如果客戶端更新操作發(fā)生異常導(dǎo)致實時庫信息錯誤,那么后續(xù)操作時可能導(dǎo)致不可預(yù)知的危害。因此為了避免上述情況的發(fā)生,必須在客戶端更新操作時嚴(yán)格按照以下要求進行安全驗證:
(1)完整性驗證。
為了避免網(wǎng)絡(luò)通訊異常導(dǎo)致數(shù)據(jù)傳輸不完整的情況,客戶端接收模型信息時必須對接收到信息的完整性進行驗證,具體流程如下:客戶端發(fā)起模型信息的獲取請求;服務(wù)端發(fā)送模型數(shù)據(jù);客戶端緩存信息到臨時文件;客戶端完成接收后,通過CRC校驗驗證文件完整性;如果文件完整則觸發(fā)更新操作;如果文件不完整,則重新發(fā)起模型請求。
(2)更新成功驗證。
為了避免更新失敗導(dǎo)致實時庫異常的情況,對實時庫更新失敗的情況做回退操作。具體流程如下:開始更新前閉鎖實時庫的一切訪問操作;鏡像當(dāng)前實時庫狀態(tài);按照緩存文件中的信息對實時庫進行更新;更新出現(xiàn)意外,使用鏡像對實時庫的信息進行回退;恢復(fù)實時庫的訪問操作。
這里需要閉鎖重復(fù)執(zhí)行更新異常的情況。如果服務(wù)器配置不當(dāng)或服務(wù)程序異常,可能導(dǎo)致客戶端實時數(shù)據(jù)庫的重復(fù)更新與更新失敗。由于更新操作會閉鎖當(dāng)前實時庫的訪問,因此重復(fù)更新失敗會對應(yīng)用功能造成影響。本文涉及實時庫采用失敗次數(shù)閉鎖更新的策略,當(dāng)客戶端兩次因為相同原因更新失敗后,閉鎖該版本的更新并在客戶端提示報警。
為了提高海量數(shù)據(jù)環(huán)境下實時數(shù)據(jù)的同步效率,實時數(shù)據(jù)采用最小的劃分粒度建立多條不同的實時數(shù)據(jù)總線進行同步,即實時數(shù)據(jù)多總線。實時數(shù)據(jù)總線采用組播方式實現(xiàn),最大限度的利用交換機資源并降低數(shù)據(jù)交換的信息量。每條總線中只運行特定分區(qū)的實時數(shù)據(jù),從而也降低了單條總線的數(shù)據(jù)量級,提高了數(shù)據(jù)交換效率。每條總線中建立全數(shù)據(jù)同步與變化數(shù)據(jù)同步機制,當(dāng)客戶端第一次接入實時數(shù)據(jù)總線時,對該客戶端進行一次全數(shù)據(jù)同步,后續(xù)只有在實時數(shù)據(jù)發(fā)生變化時進行同步。通過全數(shù)據(jù)同步與變化數(shù)據(jù)同步相結(jié)合的方法,在保證監(jiān)控系統(tǒng)內(nèi)所有節(jié)點實時數(shù)據(jù)一致性的前提下,降低實時數(shù)據(jù)總線的數(shù)據(jù)壓力,提高總線的數(shù)據(jù)同步效率(見圖4)。

圖4 實時數(shù)據(jù)同步原理Figure 4 Principle of real-time data synchronization
2.3.1 整體策略
不同于文獻[3],本文沿用了傳統(tǒng)的功能節(jié)點設(shè)計,按節(jié)點劃分后再建立負(fù)載均衡機制;同時為了簡單可靠,將實時數(shù)據(jù)的最小粒度作為負(fù)載均衡最小單元。常見節(jié)點類型上需要實現(xiàn)負(fù)載均衡的功能如下:
(1)歷史服務(wù)節(jié)點:實現(xiàn)歷史數(shù)據(jù)入庫與訪問功能的負(fù)載均衡。
(2)數(shù)據(jù)采集與處理節(jié)點:實現(xiàn)實時數(shù)據(jù)的采集、通信功能與數(shù)據(jù)處理功能的負(fù)載均衡。
(3)高級應(yīng)用節(jié)點:實現(xiàn)AGC、AVC等高級綜合應(yīng)用功能的負(fù)載均衡。
如圖5所示,以四個實時數(shù)據(jù)的采集與處理節(jié)點為例,所有的實時數(shù)據(jù)按照分區(qū)均勻的分配在各個節(jié)點上,對應(yīng)節(jié)點上運行的數(shù)據(jù)采集與計算功能也會按照本地實時數(shù)據(jù)的劃分確定處理范圍,實時數(shù)據(jù)總線上的最新數(shù)據(jù)由各節(jié)點分別發(fā)布。當(dāng)某臺服務(wù)器離線后,該服務(wù)器原先承擔(dān)的實時數(shù)據(jù)分區(qū)均勻切換到其他在線的服務(wù)器上,相應(yīng)服務(wù)器上的數(shù)據(jù)計算、數(shù)據(jù)采集及高級功能也會承擔(dān)起對應(yīng)增加實時數(shù)據(jù)的業(yè)務(wù)功能。當(dāng)服務(wù)器重新上線后,系統(tǒng)會優(yōu)先給該服務(wù)器分配屬于它的實時數(shù)據(jù)分區(qū),并將所有的業(yè)務(wù)功能切換回該服務(wù)器。
2.3.2 仲裁主機
仲裁主機在負(fù)載均衡功能中的作用非常重要,負(fù)責(zé)決策當(dāng)前負(fù)載均衡的實施方案,相同節(jié)點類型下所有服務(wù)器均聽從仲裁主機的分配。仲裁主機采用令牌方式確定,當(dāng)系統(tǒng)內(nèi)不存在仲裁主機時,按照系統(tǒng)節(jié)點配置中的順序,第一臺在線服務(wù)器優(yōu)先獲得令牌成為仲裁主機。如果當(dāng)前存在仲裁主機,則始終聽從該主機的分配。
2.3.3 分配與遷移策略
以實時數(shù)據(jù)分區(qū)為單元進行分配,盡量保證每個服務(wù)器中實時數(shù)據(jù)分區(qū)的個數(shù)相同。當(dāng)在線服務(wù)器節(jié)點發(fā)生變化時,遷移策略遵循如下原則:
(1)遷移完成后每個服務(wù)器中實時數(shù)據(jù)分區(qū)的個數(shù)基本相同,保證各服務(wù)器的負(fù)載均衡。
(2)每次遷移完成后,如果服務(wù)器節(jié)點在線情況相同,分配結(jié)果也相同。
(3)服務(wù)器在線情況變化到業(yè)務(wù)遷移結(jié)束的時間不能大于2s,保證系統(tǒng)的實時性與高可用性。
2.3.4 節(jié)點狀態(tài)
負(fù)載均衡服務(wù)器節(jié)點的狀態(tài)分為在線、備用與離線三種。在線狀態(tài)說明系統(tǒng)節(jié)點功能正常,參與分配與遷移計算;備用狀態(tài)說明系統(tǒng)節(jié)點功能正常,但未參與分配與遷移計算;離線說明系統(tǒng)節(jié)點停機或未啟動監(jiān)控系統(tǒng)軟件。為了避免某個服務(wù)器出現(xiàn)異常,頻繁上線離線對系統(tǒng)造成影響,服務(wù)器重啟接入監(jiān)控系統(tǒng)后處于備用狀態(tài)。需要人工切換為在線才會加入分配與遷移計算。

圖5 負(fù)載均衡原理Figure 5 Principle of load balancing
由于采用了實時庫模型的自動更新策略,必須在服務(wù)端對控制源模型的版本進行校驗,防止由于實時數(shù)據(jù)庫信息不一致所導(dǎo)致的誤操作。這一點在遙控和遙調(diào)操作時格外重要,稍有不慎就會造成人員與設(shè)備損失。
安全閉鎖流程如圖6所示,該流程運行在服務(wù)端。當(dāng)服務(wù)端接收到控制令后,從控制攜帶的信息中獲取控制來源的實時庫信息版本,與本機對應(yīng)實時庫信息版本進行比對,如果不一致產(chǎn)生報警并拒絕操作。如果版本一致,進一步校驗控制節(jié)點和用戶是否具備該功能的控制權(quán)限,如果沒有權(quán)限產(chǎn)生報警并拒絕操作,如果具備權(quán)限則執(zhí)行操作結(jié)束流程。
本文提出的新能源集控監(jiān)控系統(tǒng)實時數(shù)據(jù)庫,由于采用實時數(shù)據(jù)分區(qū)、自動模型同步、負(fù)載均衡、實時數(shù)據(jù)多總線等技術(shù),在集控硬件建設(shè)投資不變的情況下,提高了新能源集控監(jiān)控系統(tǒng)的實時數(shù)據(jù)的吞吐與處理能力。
在西寧黃河上游水電開發(fā)有限責(zé)任公司新能源集控項目中,針對系統(tǒng)安全性與實時性進行測試。黃河上游水電開發(fā)有限責(zé)任公司新能源集控項目測點數(shù)量超過1000萬,是目前新能源集控中最大的項目,具有積極的示范意義。現(xiàn)場結(jié)果表明,四通信機節(jié)點環(huán)境采用新的實時數(shù)據(jù)庫設(shè)計后,現(xiàn)場畫面模擬量實時數(shù)據(jù)的刷新時間<2s、狀態(tài)與報警信息刷新時間<1s,控制操作響應(yīng)速度<2s,滿足新能源集控實時控制的性能要求;數(shù)據(jù)庫維護操作僅限于通信機節(jié)點,其他節(jié)點自動完成更新,簡化了新能源集控維護工作的范圍,滿足易用性要求。

圖6 操作閉鎖原理Figure 6 Principle of operational locking
本文設(shè)計的實時數(shù)據(jù)庫架構(gòu),實現(xiàn)了相關(guān)關(guān)鍵技術(shù),有效解決了新能源集控實時數(shù)據(jù)采集、處理與存儲所遇到的實時性、擴展性、安全性問題,經(jīng)過了嚴(yán)格的系統(tǒng)性測試,并在大型項目現(xiàn)場投入運行,取得良好的效果。隨著我國新能源技術(shù)的不斷發(fā)展,該項目的成果具有廣泛的推廣前景。