楊旭昕
(國(guó)網(wǎng)信息通信產(chǎn)業(yè)集團(tuán)有限公司,北京 100053)
隨著源網(wǎng)荷儲(chǔ)協(xié)調(diào)互動(dòng)發(fā)展迅速,新技術(shù)應(yīng)用和新型業(yè)務(wù)終端接入日益廣泛,新的網(wǎng)絡(luò)邊界不斷涌現(xiàn),配用電主站需要監(jiān)測(cè)的臺(tái)區(qū)側(cè)數(shù)據(jù)量和數(shù)據(jù)密度急劇上升,導(dǎo)致主站側(cè)數(shù)據(jù)處理能力及遠(yuǎn)程通信能力在未來(lái)面臨著重大壓力[1]。通常終端設(shè)備中的數(shù)據(jù)種類(lèi)和處理方法有一定的共同規(guī)律,也有各自的特殊規(guī)律,使得嵌入式數(shù)據(jù)存儲(chǔ)系統(tǒng)不能像企業(yè)級(jí)數(shù)據(jù)庫(kù)那樣通用,而是有著很大的差異性[2]。此外,隨著存儲(chǔ)設(shè)備的改變,其數(shù)據(jù)的存取策略和方法也隨之改變,現(xiàn)有的數(shù)據(jù)庫(kù)存儲(chǔ)管理理論與技術(shù)主要是基于內(nèi)存數(shù)據(jù)庫(kù)或基于磁盤(pán)存儲(chǔ)結(jié)構(gòu)的大型商業(yè)數(shù)據(jù)庫(kù),不適用于嵌入式數(shù)據(jù)庫(kù)系統(tǒng)[3]。
傳統(tǒng)的集中式數(shù)據(jù)庫(kù)可用性和可靠性較低,可擴(kuò)展性差,無(wú)法滿(mǎn)足日益增長(zhǎng)的數(shù)據(jù)存儲(chǔ)需求[4]。文獻(xiàn)[5]提出了一種基于安全容器技術(shù)實(shí)現(xiàn)邊緣計(jì)算的配用電一體化裝置,文獻(xiàn)[6]研究了面向電網(wǎng)的邊緣算力優(yōu)化與分布式數(shù)據(jù)存儲(chǔ)處理模型。本文聚焦配電變壓器臺(tái)區(qū)側(cè)的邊緣計(jì)算能力提升,提出了一種新的適用于臺(tái)區(qū)智能終端的新型配用電數(shù)據(jù)存取方法。所提方法系統(tǒng)性的解決了數(shù)據(jù)存取的效率問(wèn)題和設(shè)備掉電后的數(shù)據(jù)恢復(fù)問(wèn)題。
針對(duì)現(xiàn)有存取方案的不足,本文通過(guò)結(jié)合臺(tái)區(qū)智能終端搭載的容器技術(shù)及MQTT消息協(xié)議實(shí)現(xiàn)了可跨容器存取數(shù)據(jù)的消息交互機(jī)制。消息內(nèi)容的格式參考選用了JSON數(shù)據(jù)格式,提供一致的數(shù)據(jù)庫(kù)接口,一方面屏蔽了通信協(xié)議的差異性,另一方面大大簡(jiǎn)化了各類(lèi)實(shí)時(shí)應(yīng)用的開(kāi)發(fā),極大地提升了開(kāi)發(fā)和運(yùn)維的效率[7]。可跨容器存取數(shù)據(jù)的消息交互機(jī)制如圖1所示。

圖1 可跨容器存取數(shù)據(jù)的消息交互機(jī)制
其中,消息總線提供了發(fā)布和訂閱主題接口,主題接口須遵循數(shù)據(jù)存取方案的接口規(guī)范。按照配電及用電數(shù)據(jù)的特點(diǎn),本數(shù)據(jù)存取方案制定了10種主題接口。
編寫(xiě)數(shù)據(jù)的應(yīng)用程序時(shí)需要注意的是,當(dāng)容器1中應(yīng)用程序的數(shù)據(jù)更新后調(diào)用總線發(fā)布數(shù)據(jù)更新請(qǐng)求,總線接收到更新請(qǐng)求后將其轉(zhuǎn)發(fā)至容器2,容器2負(fù)責(zé)數(shù)據(jù)存儲(chǔ)及管理,并將存儲(chǔ)結(jié)果通過(guò)消息總線反饋給容器1的應(yīng)用程序。讀數(shù)據(jù)的應(yīng)用程序需要注意的是,容器1的應(yīng)用程序調(diào)用消息總線發(fā)布數(shù)據(jù)讀取請(qǐng)求,消息總線將讀取請(qǐng)求轉(zhuǎn)發(fā)至容器2,容器2接收到數(shù)據(jù)讀取請(qǐng)求后,按照請(qǐng)求讀取本地?cái)?shù)據(jù),并將讀取結(jié)果經(jīng)由消息總線反饋至容器1的應(yīng)用程序。
臺(tái)區(qū)智能終端需存儲(chǔ)多類(lèi)配用電數(shù)據(jù)信息,根據(jù)數(shù)據(jù)來(lái)源分為低壓電網(wǎng)模型臺(tái)賬數(shù)據(jù)、二次設(shè)備定值配置數(shù)據(jù)、電網(wǎng)運(yùn)行數(shù)據(jù)、營(yíng)銷(xiāo)采集數(shù)據(jù)以及邊緣計(jì)算結(jié)果數(shù)據(jù)等。按照模型統(tǒng)一和本地化自管理的數(shù)據(jù)管理原則,需建立唯一的數(shù)據(jù)管理與讀寫(xiě)通道,并建立數(shù)據(jù)存儲(chǔ)自維護(hù)機(jī)制,以提高數(shù)據(jù)融合與采集的效率,降低管理難度。數(shù)據(jù)存取方案如圖2所示。

圖2 面向配用電數(shù)據(jù)特點(diǎn)的存取方案
其中,應(yīng)用程序調(diào)用消息總線發(fā)送數(shù)據(jù)存取請(qǐng)求,消息處理模塊接收到總線轉(zhuǎn)發(fā)的數(shù)據(jù)存取請(qǐng)求后進(jìn)行消息分類(lèi),并將請(qǐng)求消息轉(zhuǎn)發(fā)至相應(yīng)的接口模塊繼續(xù)處理。接口模塊用于分類(lèi)處理不同的存取需求,各接口處理完畢的數(shù)據(jù)會(huì)存放在內(nèi)存中隨即繼續(xù)處理下一條消息,最大限度地提升了處理效率。按照配電及用電數(shù)據(jù)的特點(diǎn),本數(shù)據(jù)存取方案制定了4種類(lèi)型的接口交互模塊,具體如下。
模型管理接口中,模型名稱(chēng)查詢(xún)接口和查詢(xún)結(jié)果反饋接口用于查詢(xún)已存儲(chǔ)的數(shù)據(jù)模型,模型刪除接口和刪除結(jié)果反饋接口用于移除已存儲(chǔ)的數(shù)據(jù)模型,具體如表1所示。模型交互接口中,模型設(shè)置接口和設(shè)置結(jié)果反饋接口用于建立新的設(shè)備數(shù)據(jù)模型,模型內(nèi)容查詢(xún)接口和查詢(xún)結(jié)果反饋接口用于查詢(xún)?cè)O(shè)備模型具體數(shù)據(jù)信息,具體如表2所示。

表1 模型管理接口

表2 模型交互接口
設(shè)備管理接口中,設(shè)備查詢(xún)接口和查詢(xún)結(jié)果反饋接口用于查詢(xún)已完成實(shí)例化的設(shè)備信息,設(shè)備取消注冊(cè)接口和取消結(jié)果反饋接口用于移除已完成實(shí)例化的設(shè)備信息,具體如表3所示。設(shè)備交互接口中,設(shè)備注冊(cè)接口和注冊(cè)結(jié)果反饋接口用于實(shí)例化具體設(shè)備或虛擬設(shè)備,具體如表4所示。

表3 設(shè)備管理接口

表4 設(shè)備交互接口
參數(shù)交互接口中,參數(shù)查詢(xún)接口和查詢(xún)結(jié)果反饋接口用于查詢(xún)?cè)O(shè)備定值和配置參數(shù),參數(shù)刪除接口和刪除結(jié)果反饋接口用于移除設(shè)備定值和配置參數(shù),參數(shù)設(shè)置接口和設(shè)置結(jié)果反饋接口用于存儲(chǔ)設(shè)備定值和配置參數(shù),具體如表5所示。

表5 參數(shù)交互接口
全數(shù)據(jù)交互接口中,全數(shù)據(jù)上報(bào)接口和全數(shù)據(jù)上報(bào)結(jié)果反饋接口主要用于定時(shí)向數(shù)據(jù)中心存儲(chǔ)設(shè)備的全數(shù)據(jù);變化數(shù)據(jù)上報(bào)接口主要用于針對(duì)實(shí)時(shí)性要求較高的變化遙信及變化遙測(cè)類(lèi)數(shù)據(jù),將其及時(shí)轉(zhuǎn)發(fā)至主站;實(shí)時(shí)數(shù)據(jù)查詢(xún)接口和實(shí)時(shí)數(shù)據(jù)查詢(xún)結(jié)果反饋接口用于讀取設(shè)備的實(shí)時(shí)數(shù)據(jù),可一次性讀取數(shù)據(jù)中心已存儲(chǔ)的全部數(shù)據(jù),也可根據(jù)數(shù)據(jù)項(xiàng)、設(shè)備類(lèi)型等方式進(jìn)行精準(zhǔn)定位讀取;歷史數(shù)據(jù)查詢(xún)接口和歷史數(shù)據(jù)查詢(xún)結(jié)果反饋接口用于讀取設(shè)備的歷史數(shù)據(jù),可按照起止時(shí)間的時(shí)間段或存儲(chǔ)時(shí)間的時(shí)間段等方式讀取設(shè)備的歷史數(shù)據(jù);SOE上報(bào)接口和SOE上報(bào)結(jié)果反饋用于存儲(chǔ)設(shè)備的SOE事件信息;SOE查詢(xún)接口和SOE查詢(xún)結(jié)果反饋用于讀取設(shè)備的SOE事件信息。具體如表6所示。

表6 數(shù)據(jù)交互接口
嵌入式環(huán)境下應(yīng)當(dāng)從全內(nèi)存存儲(chǔ)及嵌入式系統(tǒng)的特點(diǎn)出發(fā),數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)將內(nèi)存數(shù)據(jù)庫(kù)以文件的形式備份在本地非易失性存儲(chǔ)器中,從而進(jìn)行簡(jiǎn)單、快速的數(shù)據(jù)庫(kù)備份和恢復(fù)[8]。常見(jiàn)的嵌入式數(shù)據(jù)庫(kù),如Berkeley DB、SQLite等,雖然具備良好的數(shù)據(jù)管理能力,但是其架構(gòu)和特性面向普通的嵌入式系統(tǒng)設(shè)計(jì),在實(shí)時(shí)性和可靠性方面難以滿(mǎn)足配電及用電數(shù)據(jù)就地存取的要求[9]。本方案中數(shù)據(jù)管理模塊經(jīng)過(guò)長(zhǎng)期試驗(yàn)和探索,綜合了文件與SQLite的優(yōu)點(diǎn),同時(shí)消除其單一使用的缺點(diǎn)。一方面是將緩存在內(nèi)存中的實(shí)時(shí)數(shù)據(jù)在數(shù)據(jù)中心閑暇時(shí)復(fù)制到文件中保存,防止發(fā)生終端掉電或系統(tǒng)崩潰時(shí)導(dǎo)致數(shù)據(jù)丟失;另一方面是定時(shí)將緩存在內(nèi)存中的實(shí)時(shí)數(shù)據(jù)寫(xiě)入SQLite數(shù)據(jù)庫(kù)中,形成各類(lèi)設(shè)備的歷史數(shù)據(jù)庫(kù)。
嵌入式實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)的關(guān)鍵是數(shù)據(jù)模型的確立,它決定了數(shù)據(jù)被訪問(wèn)和操作的方式,應(yīng)用程序的性能和可靠性也大部分取決于此[10]。針對(duì)現(xiàn)有點(diǎn)表式數(shù)據(jù)存取方案下配用電數(shù)據(jù)模型不統(tǒng)一、模型不易擴(kuò)展以及數(shù)據(jù)分類(lèi)顆粒度較粗等問(wèn)題,制定了圖3所示的數(shù)據(jù)存取原則。

圖3 數(shù)據(jù)存取原則
對(duì)于應(yīng)用程序?qū)憯?shù)據(jù),在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)需要先調(diào)用設(shè)備模型交互接口,建立新的設(shè)備模型信息。建立好設(shè)備模型后再調(diào)用設(shè)備注冊(cè)接口,按照剛才建立的設(shè)備模型實(shí)例化需上報(bào)數(shù)據(jù)的設(shè)備,然后調(diào)用數(shù)據(jù)上報(bào)接口按照實(shí)例化的設(shè)備進(jìn)行數(shù)據(jù)上報(bào)。其中設(shè)備模型在未發(fā)生變化時(shí)只需要建立一次,設(shè)備實(shí)例化只在接入新設(shè)備時(shí)才需要進(jìn)行注冊(cè)。
對(duì)于應(yīng)用程序讀數(shù)據(jù),在進(jìn)行數(shù)據(jù)讀取時(shí)需要先調(diào)用設(shè)備模型交互接口,查詢(xún)所需設(shè)備模型的具體模型信息,確定好設(shè)備模型后再調(diào)用設(shè)備注冊(cè)接口。查詢(xún)對(duì)應(yīng)設(shè)備模型已實(shí)例化的具體設(shè)備,然后調(diào)用數(shù)據(jù)查詢(xún)接口查詢(xún)已實(shí)例化的設(shè)備數(shù)據(jù)信息。其中設(shè)備模型在未發(fā)生變化時(shí)只需要查詢(xún)一次,在未變更所需讀取的目標(biāo)實(shí)例化設(shè)備時(shí),設(shè)備注冊(cè)信息也只需查詢(xún)一次。
實(shí)際應(yīng)用場(chǎng)景中,文中提供的配用電數(shù)據(jù)的存取方法可在嵌入式設(shè)備臺(tái)區(qū)智能終端中實(shí)現(xiàn),用于支撐營(yíng)銷(xiāo)與配電的物聯(lián)網(wǎng)邊緣計(jì)算。該實(shí)現(xiàn)充分利用臺(tái)區(qū)智能終端的容器特點(diǎn),安全且高效地存取配電及用電相關(guān)數(shù)據(jù),解決了配用電數(shù)據(jù)需在配電變壓器臺(tái)區(qū)側(cè)的邊端跨容器就地存取問(wèn)題。
目前,文中提供的配用電數(shù)據(jù)存取方法已應(yīng)用在江蘇和山東等地多處臺(tái)區(qū)智能終端的試點(diǎn)現(xiàn)場(chǎng)。江蘇泰州某臺(tái)區(qū)試點(diǎn)拓?fù)淙鐖D4所示,臺(tái)區(qū)智能終端接入了智能斷路器、SVG、無(wú)功補(bǔ)償裝置、換相開(kāi)關(guān)以及智能電表等大量配用電設(shè)備,所有數(shù)據(jù)全部通過(guò)本文中提供的數(shù)據(jù)存取方案實(shí)現(xiàn)設(shè)備建模和數(shù)據(jù)就地存取交互的功能。在此基礎(chǔ)上,數(shù)據(jù)經(jīng)邊緣計(jì)算后上送主站,實(shí)現(xiàn)了臺(tái)區(qū)的電能質(zhì)量治理功能。主站數(shù)據(jù)展示截圖如圖5所示,經(jīng)過(guò)試點(diǎn)現(xiàn)場(chǎng)長(zhǎng)時(shí)間穩(wěn)定運(yùn)行,主站側(cè)數(shù)據(jù)展示真實(shí)、連貫且無(wú)斷點(diǎn),體現(xiàn)了本方案在數(shù)據(jù)存取方面具有較好的穩(wěn)定性及可行性。

圖4 江蘇泰州某臺(tái)區(qū)試點(diǎn)拓?fù)鋱D

圖5 主站數(shù)據(jù)展示截圖
本文提出了一種新的適用于臺(tái)區(qū)側(cè)配用電數(shù)據(jù)的存取方法,該方法在消息處理部分和數(shù)據(jù)存取部分,消息處理部分結(jié)合容器技術(shù)使用了MQTT消息協(xié)議作為消息總線的傳輸機(jī)制,消息內(nèi)容的格式則采用了JSON數(shù)據(jù)交換格式來(lái)描述,實(shí)現(xiàn)了可跨容器的交互功能。在數(shù)據(jù)存取部分使用了內(nèi)存存取加文件存取的方式作為實(shí)時(shí)數(shù)據(jù)的存取方式,不同于已有技術(shù)中使用配置文件映射關(guān)系指向型內(nèi)存存取,且格式固定的方式,不需要應(yīng)用程序進(jìn)行二次數(shù)據(jù)處理,從而提高了數(shù)據(jù)存取的效率。同時(shí)歷史數(shù)據(jù)的存取方式則采用了SQLite數(shù)據(jù)庫(kù),實(shí)現(xiàn)了數(shù)據(jù)的定時(shí)備份,避免了設(shè)備掉電后的數(shù)據(jù)難于恢復(fù)的問(wèn)題。實(shí)際應(yīng)用效果表明,所提方法安全、可靠且有效。