吳萬強(qiáng), 彭良福, 甘 桂, 王逸凡
(1.西南民族大學(xué)電氣信息工程學(xué)院,成都610041;2.桂林電子科技大學(xué)廣西精密導(dǎo)航技術(shù)與應(yīng)用重點(diǎn)實(shí)驗(yàn)室,廣西桂林541004)
近年來,高校對于實(shí)驗(yàn)室建設(shè)的投入在不斷增加[1]。實(shí)驗(yàn)室的照明、儀器、設(shè)備等的運(yùn)轉(zhuǎn)離不開電力,電力穩(wěn)定是支撐實(shí)驗(yàn)室科研工作穩(wěn)步進(jìn)行的基礎(chǔ)[2]。用電安全是高校實(shí)驗(yàn)室工作的重要組成部分,是避免實(shí)驗(yàn)室安全火災(zāi)事故的關(guān)鍵。
對實(shí)驗(yàn)室用電設(shè)備的監(jiān)測和管理是實(shí)驗(yàn)室電網(wǎng)消耗端建設(shè)的一個(gè)重要部分。電網(wǎng)消耗端電能使用的智能化管理十分重要。負(fù)荷監(jiān)測技術(shù)可以幫助管理者了解用電器的使用情況,目前用電器的監(jiān)測大多數(shù)是侵入式的,在每個(gè)用電器的接入端安裝傳感器,通過傳感器實(shí)時(shí)采集信息[3]。這種方法需要在每個(gè)負(fù)荷處安裝相應(yīng)的數(shù)據(jù)采集、傳感裝置,因此會(huì)消耗一定量的人力物力。非侵入式負(fù)荷監(jiān)測技術(shù)(Non-intrusive Load Monitoring,NILM)很好地解決了侵入式監(jiān)測的弊端。它只需要在用電入口安裝一個(gè)傳感器,通過采集和分析電網(wǎng)總的用電電流、電壓信息來監(jiān)測電網(wǎng)內(nèi)的用電器[4]。
本文基于可編程片上系統(tǒng)(System On a Programmable Chip,SOPC)技術(shù)設(shè)計(jì)了一種非侵入式實(shí)驗(yàn)室負(fù)荷智能監(jiān)測裝置,在Zybo Z7-20開發(fā)平臺(tái)上進(jìn)行軟核設(shè)計(jì)的方法。Zybo Z7-20開發(fā)板包括現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)數(shù)字邏輯部分和雙ARM Cortex-A9處理器部分。SOPC作為可編程的高度集成的片上系統(tǒng),實(shí)現(xiàn)了以往需要多個(gè)電路板或器件、芯片通過互聯(lián)才能實(shí)現(xiàn)的功能,賦予了其面對復(fù)雜情況時(shí),可通過靈活的程序設(shè)計(jì)來解決問題的能力。
非侵入式負(fù)荷監(jiān)測方法是相對于侵入式監(jiān)測方法提出的,其應(yīng)用示意圖如圖1所示。只需要在被檢測電網(wǎng)的電力入口處安裝監(jiān)測傳感器,通過傳感器采集電網(wǎng)內(nèi)所有用電設(shè)備總的用電信息,一般是電壓和電流信息;運(yùn)用合理的數(shù)學(xué)分析與計(jì)算方法對實(shí)際采集的用電數(shù)據(jù)進(jìn)行處理和分析,得出電網(wǎng)內(nèi)各個(gè)用電設(shè)備的運(yùn)行情況[5]。
圖1 非侵入式負(fù)荷監(jiān)測示意圖
電網(wǎng)中每個(gè)負(fù)荷由于其獨(dú)特的硬件結(jié)構(gòu)、功能,每個(gè)負(fù)荷在工作過程中都會(huì)表現(xiàn)出獨(dú)特的用電特征,即負(fù)荷特性。負(fù)荷特性是負(fù)荷智能監(jiān)測系統(tǒng)中負(fù)荷分解的核心要素,包括有功功率、無功功率、功率因數(shù)、電流有效值、諧波特性等[6],這些特性也被稱為負(fù)荷的特征參數(shù)。本文在負(fù)荷分解時(shí)主要采用了電流有效值(I)、視在功率(S)、有功功率(P)、無功功率(Q)、功率因數(shù)(cos φ)5種穩(wěn)態(tài)下負(fù)荷特征參數(shù)。
在實(shí)際應(yīng)用中電流、電壓信息是由ADC采樣而來,因此電壓、電流信息是離散的,相應(yīng)的參數(shù)提取公式為對應(yīng)的離散公式:
式中:U為電壓有效值;I為電流有效值;i(n)為第n次采樣時(shí)刻電流值;u(n)為第n次采樣時(shí)刻電壓值。
本文選取了實(shí)驗(yàn)室中常用的5種用電器,分別是白熾燈(Bulb)、風(fēng)扇(Fan)、示波器(Osc)、信號(hào)源(DDS)、電源(Pow)。對這5種用電器進(jìn)行穩(wěn)態(tài)下的電壓、電流信息采樣,并通過上述的參數(shù)提取公式,提取出5種用電器單獨(dú)工作時(shí)的穩(wěn)態(tài)特征參數(shù)見表1。由表1可知,不同負(fù)荷在選取的5種特征參數(shù)上有著明顯的差距,基于所選取的5種特征參數(shù)進(jìn)行負(fù)荷的監(jiān)測和識(shí)別是可行的[7]。
表1 負(fù)荷特征參數(shù)
基于SOPC技術(shù)設(shè)計(jì)了非侵入式實(shí)驗(yàn)室負(fù)荷監(jiān)測裝置,解決實(shí)驗(yàn)室負(fù)荷管理和監(jiān)測問題。裝置主要部分包括硬件電路模塊、SOPC系統(tǒng)和外設(shè)輔助模塊3部分,系統(tǒng)的總框圖如圖2所示。
硬件包括電源電路、電壓互感器、電流互感器、高精度比較電路和采樣電路。電源電路使用數(shù)字電源將220 V電壓進(jìn)行降壓,使用LDO電路分別設(shè)計(jì)出5 V和3.3 V 輔助電源[8]。
鑒于裝置對電壓、電流的精度要求較高,選取了BWL/BVR精密線繞模壓采樣電阻、ZMPT107精密微型電壓互感器和KO-25RCT精密電流互感器。電壓互感器和電流互感器將電壓和電流信號(hào)進(jìn)行隔離式的轉(zhuǎn)換,使用高精度的采樣電阻對兩種信號(hào)進(jìn)行采樣[8]。
圖2 基于SOPC的非侵入式負(fù)荷監(jiān)測系統(tǒng)框圖
采樣電路的核心芯片采用AD7606,系統(tǒng)PL部分完成對AD7606的驅(qū)動(dòng)和數(shù)據(jù)傳輸,使用AD7606的兩個(gè)采集通道分別完成電壓信號(hào)和電流信號(hào)的采集,使用AD7606的并行數(shù)據(jù)輸出模式與板卡完成數(shù)據(jù)通信,使用FPGA將采集的數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,提取所需的負(fù)荷特征參數(shù)[9]。
比較電路設(shè)計(jì)采用TLV3501,它是一款4.5 ns軌至軌的具有開啟和關(guān)閉功能的高性能比較器。比較電路將電壓互感器輸出的正弦交流信號(hào)轉(zhuǎn)換為方波信號(hào),將信號(hào)輸出到FPGA的I/O引腳,由FPGA數(shù)字電路進(jìn)行采樣,監(jiān)測電網(wǎng)的頻率波動(dòng)。
SOPC系統(tǒng)是基于Zybo Z7-20全可編程片上系統(tǒng)架構(gòu)平臺(tái)設(shè)計(jì),包括FPGA數(shù)字邏輯部分(Promgrammable Logic,PL)和雙ARM Cortex-A9 處理器部分(Processing System,PS)。PL部分完成電網(wǎng)頻率的測量、負(fù)荷在穩(wěn)態(tài)下的特征值提取、采樣電路的驅(qū)動(dòng)和數(shù)據(jù)傳輸[10]。PS部分搭建穩(wěn)態(tài)負(fù)荷監(jiān)測與識(shí)別算法,驅(qū)動(dòng)和控制外設(shè)輔助模塊。外設(shè)輔助模塊包括按鍵、OLED顯示模塊,主要功能是完成結(jié)果的顯示。整個(gè)裝置實(shí)物如圖3所示。
圖3 裝置實(shí)物
負(fù)荷識(shí)別算法采用了基于機(jī)器學(xué)習(xí)的監(jiān)督學(xué)習(xí)模式下BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行設(shè)計(jì),使用Matlab的神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行算法模型的構(gòu)建和驗(yàn)證[11]。在監(jiān)督學(xué)習(xí)模式下,對負(fù)荷進(jìn)行標(biāo)簽設(shè)定,選取的5種負(fù)荷及其標(biāo)簽見表2。采用了獨(dú)熱碼的方式對負(fù)荷進(jìn)行標(biāo)記,設(shè)置標(biāo)簽。對5種負(fù)荷及其組合進(jìn)行了約定:當(dāng)系統(tǒng)中有某一種負(fù)荷在工作時(shí),標(biāo)簽對應(yīng)的位置的值設(shè)定為“1”,否則為“0”。當(dāng)有5種負(fù)荷同時(shí)在工作時(shí),對應(yīng)的標(biāo)簽為“[1 1 1 1 1]”,如當(dāng)白熾燈、信號(hào)源同時(shí)工作時(shí),對應(yīng)的標(biāo)簽為“[0 0 0 1 1]”,以此類推對31種組合進(jìn)行標(biāo)簽設(shè)計(jì)。
選取的負(fù)荷工作在穩(wěn)態(tài)時(shí)的5個(gè)電能參數(shù)即x=[I,P,Q,S,cos φ]T作為神經(jīng)網(wǎng)絡(luò)的輸入層,在訓(xùn)練算法的過程中,表2中的標(biāo)簽為期望的輸出值,網(wǎng)絡(luò)的輸入層和輸出層的神經(jīng)元都為5個(gè)神經(jīng)元[12]。由于神經(jīng)網(wǎng)絡(luò)的隱含層的層數(shù)以及神經(jīng)元的個(gè)數(shù)的設(shè)計(jì)并沒有具體的理論可以參考,只能根據(jù)實(shí)際實(shí)驗(yàn)的情況將神經(jīng)網(wǎng)絡(luò)的復(fù)雜程度由簡易到復(fù)雜的方式進(jìn)行設(shè)計(jì),根據(jù)多次的實(shí)驗(yàn),得到當(dāng)網(wǎng)絡(luò)的結(jié)構(gòu)為5層時(shí)的結(jié)果較好,見表3。
表2 負(fù)荷類型及標(biāo)簽
表3 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)的算法設(shè)計(jì)步驟包括BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)、BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和BP神經(jīng)網(wǎng)絡(luò)驗(yàn)證和參數(shù)導(dǎo)出3個(gè)部分。第1步中的神經(jīng)網(wǎng)絡(luò)的構(gòu)建已經(jīng)在表3中進(jìn)行了說明,第2步中的網(wǎng)絡(luò)訓(xùn)練和第3步的網(wǎng)絡(luò)驗(yàn)證中,待分類的基本負(fù)荷種類是5種用電器,將建立的負(fù)荷特征數(shù)據(jù)集隨機(jī)分為兩部分,80%作為網(wǎng)絡(luò)的訓(xùn)練集,20%作為網(wǎng)絡(luò)的驗(yàn)證集,通過驗(yàn)證集對訓(xùn)練后的算法模型進(jìn)行驗(yàn)證,若預(yù)測的結(jié)果誤差較大,則重新構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型[13]。最后將訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)的參數(shù)信息進(jìn)行導(dǎo)出,使用C語言將BP神經(jīng)網(wǎng)絡(luò)算法模型在SOPC系統(tǒng)中進(jìn)行重建,以便用來進(jìn)行識(shí)別。
算法的主程序流程如圖4所示,系統(tǒng)開始工作后,進(jìn)入初始化狀態(tài),包括按鍵模塊、PmodOLEDrgb顯示屏以及PS對PL端的初始化,然后系統(tǒng)進(jìn)行主程序的執(zhí)行,當(dāng)PL端監(jiān)測到設(shè)備工作,啟動(dòng)數(shù)據(jù)采集和數(shù)據(jù)處理模塊,對負(fù)荷進(jìn)行特征值提取,并中斷PS,將特征參數(shù)通過總線傳輸?shù)絇S,PS端響應(yīng)中斷,讀取負(fù)荷特征值,進(jìn)行算法處理,完成對負(fù)荷的在線辨識(shí),將結(jié)果通過PmodOLEDrgb顯示器進(jìn)行顯示[14]。
圖4 主程序流程圖
對整個(gè)系統(tǒng)功能劃分,確定PL端和PS端各自完成的功能以及要達(dá)到的指標(biāo);完成PL端數(shù)字邏輯電路設(shè)計(jì),利用仿真和邏輯綜合進(jìn)行時(shí)序檢查和功能驗(yàn)證;將設(shè)計(jì)的數(shù)字邏輯部分進(jìn)行AXI4_Lite接口的IP封裝,并再次進(jìn)行邏輯綜合,檢查AXI4總線時(shí)序是否符合要求;將生成的IP核添加到VIVADO下的工程目錄,將IP添加到IP核管理器,在VIVADO下新建Block Design程序,將ZYNQ7 Processing System以及各功能模塊添加到Block中,配置參數(shù)和信號(hào)線連接,如圖5所示,包含了ZYNQ7 Processing System、時(shí)鐘和復(fù)位IP核、AXI總線接口IP核、負(fù)荷特征參數(shù)提取IP核(Load_param)和PmodOLEDrgb驅(qū)動(dòng)IP核5個(gè)部分。導(dǎo)出頂層文件并生成BIT文件;最后將生成的BIT文件導(dǎo)入SDK進(jìn)行PS端軟件設(shè)計(jì),完成系統(tǒng)功能。
圖5 SOPC系統(tǒng)配置
建立負(fù)荷特征數(shù)據(jù)庫有嚴(yán)格的標(biāo)準(zhǔn)[15],使用十進(jìn)制的double型數(shù)據(jù)表示負(fù)荷特征參數(shù)數(shù)據(jù)集。假設(shè)用電負(fù)荷的特征數(shù)據(jù)庫中有n(n=31)種不同組合下工作的用電負(fù)荷,本文對每種負(fù)荷的組合方式提取了m(m=50)組特征向量,其中每種組合下的用電負(fù)荷的特征向量空間可以表示為:
式中:x=[I,P,Q,S,cos φ)]T。則包含所有組合下的用電負(fù)荷的特征值數(shù)據(jù)集為:
與之對應(yīng)的標(biāo)簽數(shù)據(jù)集為:
式中:Ynm為與Xnm一一對應(yīng)的5維列向量。將整個(gè)數(shù)據(jù)集進(jìn)行隨機(jī)化處理,將80%的數(shù)據(jù)集作為訓(xùn)練集,20%的數(shù)據(jù)集作為驗(yàn)證集。對BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方式采用Matlab工具的方式,對神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行初始化,并設(shè)定使訓(xùn)練停止的條件。
訓(xùn)練算法的過程使用訓(xùn)練數(shù)據(jù)集對網(wǎng)絡(luò)的權(quán)重和偏置不斷優(yōu)化,驗(yàn)證數(shù)據(jù)集用于評估訓(xùn)練后的算法模型的性能,不參與網(wǎng)絡(luò)的訓(xùn)練過程。輸入層到隱含層以及隱含層之間的節(jié)點(diǎn)轉(zhuǎn)移函數(shù)設(shè)置為“l(fā)ogsig”(sigmoid),隱含層到輸出層的節(jié)點(diǎn)轉(zhuǎn)移函數(shù)設(shè)置為“purelin”(ReLU),采用“trainscg”對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,設(shè)置迭代次數(shù)epchos=15 000次,學(xué)習(xí)率Lr=0.001,最小梯度下降目標(biāo)為min_grad =0.000 001,max_fail=240,其他參數(shù)默認(rèn),在訓(xùn)練過程中,以上幾個(gè)參數(shù)任意1個(gè)達(dá)到設(shè)定值則停止網(wǎng)絡(luò)訓(xùn)練[16]。圖6是其中1次對BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果。整個(gè)訓(xùn)練過程一共迭代了15 000次,用時(shí)38 s,訓(xùn)練迭代次數(shù)達(dá)到設(shè)置上限時(shí)強(qiáng)行停止。
圖6 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果
在足夠的數(shù)據(jù)集下訓(xùn)練好神經(jīng)網(wǎng)絡(luò)之后,使用Matlab導(dǎo)出神經(jīng)網(wǎng)絡(luò)的各層權(quán)值和閾值參數(shù)。按照系統(tǒng)軟件設(shè)計(jì)搭建好SOPC系統(tǒng),使用VIVADO綜合、實(shí)現(xiàn)工具將Verilog代碼轉(zhuǎn)換為硬件電路,并生成BitStream文件,再將該文件導(dǎo)出到SDK開發(fā)環(huán)境中。
在SDK開發(fā)環(huán)境中建立工程,使用C語言編寫代碼,在PS端讀取PL端寫入到對應(yīng)寄存器的計(jì)算結(jié)果,并且在工程中建立神經(jīng)網(wǎng)絡(luò)識(shí)別算法,整個(gè)識(shí)別算法計(jì)算過程中的權(quán)值、閾值使用之前從Matlab中導(dǎo)出的權(quán)值、閾值進(jìn)行運(yùn)算。將PS讀到的值經(jīng)過轉(zhuǎn)換之后輸入到神經(jīng)網(wǎng)絡(luò)識(shí)別算法運(yùn)算流程中,便可得到最終的運(yùn)算結(jié)果。對運(yùn)算結(jié)果與之前所做的獨(dú)熱碼一一進(jìn)行對應(yīng),即可得到電路中正在工作的用設(shè)備。最終將系統(tǒng)所采集的功率信息、電流信息以及工作中的用電器名稱顯示在OLED屏幕上。
將5個(gè)用電器的31種組合依次插入監(jiān)測裝置用電入口插座中,系統(tǒng)均能夠自動(dòng)識(shí)別用電器并顯示在OLED屏幕上,圖7顯示了其中8種組合的識(shí)別情況。顯示的I、P、S、Q、Pf分別為電流有效值、有功功率、視在功率、無功功率、功率因數(shù);Dev后面的英文表示電路中當(dāng)前工作的設(shè)備名稱,Bulb、DDS、Fan、Pow、Osc分別為白熾燈、信號(hào)發(fā)生儀、風(fēng)扇、電源、示波器。經(jīng)過多輪重復(fù)試驗(yàn),監(jiān)測裝置均能夠準(zhǔn)確、及時(shí)地將電路中用電器信息顯示在屏幕上。
圖7 系統(tǒng)實(shí)時(shí)識(shí)別結(jié)果
本文在非侵入式負(fù)荷監(jiān)測技術(shù)的基礎(chǔ)上,利用SOPC技術(shù)設(shè)計(jì)了實(shí)驗(yàn)室負(fù)荷智能監(jiān)測裝置。監(jiān)測裝置使用全可編程邏輯平臺(tái)Zybo Z7-20作為系統(tǒng)處理模塊。在硬件系統(tǒng)的設(shè)計(jì)上,使用標(biāo)準(zhǔn)的電源排插模擬實(shí)驗(yàn)室的供電入口,安裝高精度的電流、電壓互感器,并設(shè)計(jì)了高精度信號(hào)采樣電路、系統(tǒng)輔助電源電路、信號(hào)調(diào)理電路和數(shù)字邏輯電路。在軟件算法設(shè)計(jì)上,在Matlab中結(jié)合機(jī)器學(xué)習(xí)的監(jiān)督學(xué)習(xí)方式,使用BP神經(jīng)網(wǎng)絡(luò)建立負(fù)荷識(shí)別算法。然后選用實(shí)驗(yàn)室中5種具有代表性的負(fù)荷,使用高精度ADC采樣負(fù)荷穩(wěn)態(tài)下的用電信息,并通過數(shù)學(xué)方法提取出負(fù)荷的特征參數(shù)構(gòu)建特征數(shù)據(jù)庫。最后,使用該數(shù)據(jù)庫對設(shè)計(jì)的算法模型進(jìn)行訓(xùn)練和驗(yàn)證,建立負(fù)荷識(shí)別算法并將模型參數(shù)信息導(dǎo)出,在SOPC系統(tǒng)下重建了該識(shí)別算法,完成對負(fù)荷辨識(shí)的算法設(shè)計(jì)。
仿真及調(diào)試結(jié)果表明:在Matlab仿真建立識(shí)別算法模型時(shí),算法能夠?qū)?種負(fù)荷的31種組合達(dá)到100%識(shí)別,說明本文設(shè)計(jì)的算法是可行的。在實(shí)際調(diào)試時(shí),將訓(xùn)練好的識(shí)別算法導(dǎo)入到SOPC系統(tǒng)中,系統(tǒng)在實(shí)際工作時(shí)也能夠達(dá)到對31種組合情況的100%識(shí)別,說明監(jiān)測裝置是可行的。由于高校寢室的用電器種類和數(shù)量較少,符合檢測裝置的應(yīng)用范圍,檢測裝置除了應(yīng)用在實(shí)驗(yàn)室場景,也可以應(yīng)用于高校寢室的用電管理。
監(jiān)測裝置仍有幾點(diǎn)不足和可以改進(jìn)之處,首先在設(shè)計(jì)時(shí)選用的用電設(shè)備不能代表所有實(shí)驗(yàn)室的用電設(shè)備,因此監(jiān)測裝置有一定的局限性;其次監(jiān)測裝置只是完成了基礎(chǔ)功能,后續(xù)可以將算法移植到嵌入式系統(tǒng)中,并可加入數(shù)據(jù)傳輸模塊使監(jiān)測裝置更加智能化;在進(jìn)行過多的負(fù)荷檢測時(shí),識(shí)別率會(huì)稍有下降,訓(xùn)練時(shí)間的增加幅度會(huì)提高,不利于應(yīng)用在負(fù)荷較多的場景下。