吳萬強, 彭良福, 甘 桂, 王逸凡
(1.西南民族大學電氣信息工程學院,成都610041;2.桂林電子科技大學廣西精密導航技術與應用重點實驗室,廣西桂林541004)
近年來,高校對于實驗室建設的投入在不斷增加[1]。實驗室的照明、儀器、設備等的運轉離不開電力,電力穩定是支撐實驗室科研工作穩步進行的基礎[2]。用電安全是高校實驗室工作的重要組成部分,是避免實驗室安全火災事故的關鍵。
對實驗室用電設備的監測和管理是實驗室電網消耗端建設的一個重要部分。電網消耗端電能使用的智能化管理十分重要。負荷監測技術可以幫助管理者了解用電器的使用情況,目前用電器的監測大多數是侵入式的,在每個用電器的接入端安裝傳感器,通過傳感器實時采集信息[3]。這種方法需要在每個負荷處安裝相應的數據采集、傳感裝置,因此會消耗一定量的人力物力。非侵入式負荷監測技術(Non-intrusive Load Monitoring,NILM)很好地解決了侵入式監測的弊端。它只需要在用電入口安裝一個傳感器,通過采集和分析電網總的用電電流、電壓信息來監測電網內的用電器[4]。
本文基于可編程片上系統(System On a Programmable Chip,SOPC)技術設計了一種非侵入式實驗室負荷智能監測裝置,在Zybo Z7-20開發平臺上進行軟核設計的方法。Zybo Z7-20開發板包括現場可編程門陣列(Field Programmable Gate Array,FPGA)數字邏輯部分和雙ARM Cortex-A9處理器部分。SOPC作為可編程的高度集成的片上系統,實現了以往需要多個電路板或器件、芯片通過互聯才能實現的功能,賦予了其面對復雜情況時,可通過靈活的程序設計來解決問題的能力。
非侵入式負荷監測方法是相對于侵入式監測方法提出的,其應用示意圖如圖1所示。只需要在被檢測電網的電力入口處安裝監測傳感器,通過傳感器采集電網內所有用電設備總的用電信息,一般是電壓和電流信息;運用合理的數學分析與計算方法對實際采集的用電數據進行處理和分析,得出電網內各個用電設備的運行情況[5]。

圖1 非侵入式負荷監測示意圖
電網中每個負荷由于其獨特的硬件結構、功能,每個負荷在工作過程中都會表現出獨特的用電特征,即負荷特性。負荷特性是負荷智能監測系統中負荷分解的核心要素,包括有功功率、無功功率、功率因數、電流有效值、諧波特性等[6],這些特性也被稱為負荷的特征參數。本文在負荷分解時主要采用了電流有效值(I)、視在功率(S)、有功功率(P)、無功功率(Q)、功率因數(cos φ)5種穩態下負荷特征參數。
在實際應用中電流、電壓信息是由ADC采樣而來,因此電壓、電流信息是離散的,相應的參數提取公式為對應的離散公式:

式中:U為電壓有效值;I為電流有效值;i(n)為第n次采樣時刻電流值;u(n)為第n次采樣時刻電壓值。
本文選取了實驗室中常用的5種用電器,分別是白熾燈(Bulb)、風扇(Fan)、示波器(Osc)、信號源(DDS)、電源(Pow)。對這5種用電器進行穩態下的電壓、電流信息采樣,并通過上述的參數提取公式,提取出5種用電器單獨工作時的穩態特征參數見表1。由表1可知,不同負荷在選取的5種特征參數上有著明顯的差距,基于所選取的5種特征參數進行負荷的監測和識別是可行的[7]。

表1 負荷特征參數
基于SOPC技術設計了非侵入式實驗室負荷監測裝置,解決實驗室負荷管理和監測問題。裝置主要部分包括硬件電路模塊、SOPC系統和外設輔助模塊3部分,系統的總框圖如圖2所示。
硬件包括電源電路、電壓互感器、電流互感器、高精度比較電路和采樣電路。電源電路使用數字電源將220 V電壓進行降壓,使用LDO電路分別設計出5 V和3.3 V 輔助電源[8]。
鑒于裝置對電壓、電流的精度要求較高,選取了BWL/BVR精密線繞模壓采樣電阻、ZMPT107精密微型電壓互感器和KO-25RCT精密電流互感器。電壓互感器和電流互感器將電壓和電流信號進行隔離式的轉換,使用高精度的采樣電阻對兩種信號進行采樣[8]。

圖2 基于SOPC的非侵入式負荷監測系統框圖
采樣電路的核心芯片采用AD7606,系統PL部分完成對AD7606的驅動和數據傳輸,使用AD7606的兩個采集通道分別完成電壓信號和電流信號的采集,使用AD7606的并行數據輸出模式與板卡完成數據通信,使用FPGA將采集的數據進行數據處理,提取所需的負荷特征參數[9]。
比較電路設計采用TLV3501,它是一款4.5 ns軌至軌的具有開啟和關閉功能的高性能比較器。比較電路將電壓互感器輸出的正弦交流信號轉換為方波信號,將信號輸出到FPGA的I/O引腳,由FPGA數字電路進行采樣,監測電網的頻率波動。
SOPC系統是基于Zybo Z7-20全可編程片上系統架構平臺設計,包括FPGA數字邏輯部分(Promgrammable Logic,PL)和雙ARM Cortex-A9 處理器部分(Processing System,PS)。PL部分完成電網頻率的測量、負荷在穩態下的特征值提取、采樣電路的驅動和數據傳輸[10]。PS部分搭建穩態負荷監測與識別算法,驅動和控制外設輔助模塊。外設輔助模塊包括按鍵、OLED顯示模塊,主要功能是完成結果的顯示。整個裝置實物如圖3所示。

圖3 裝置實物
負荷識別算法采用了基于機器學習的監督學習模式下BP神經網絡算法進行設計,使用Matlab的神經網絡工具箱進行算法模型的構建和驗證[11]。在監督學習模式下,對負荷進行標簽設定,選取的5種負荷及其標簽見表2。采用了獨熱碼的方式對負荷進行標記,設置標簽。對5種負荷及其組合進行了約定:當系統中有某一種負荷在工作時,標簽對應的位置的值設定為“1”,否則為“0”。當有5種負荷同時在工作時,對應的標簽為“[1 1 1 1 1]”,如當白熾燈、信號源同時工作時,對應的標簽為“[0 0 0 1 1]”,以此類推對31種組合進行標簽設計。
選取的負荷工作在穩態時的5個電能參數即x=[I,P,Q,S,cos φ]T作為神經網絡的輸入層,在訓練算法的過程中,表2中的標簽為期望的輸出值,網絡的輸入層和輸出層的神經元都為5個神經元[12]。由于神經網絡的隱含層的層數以及神經元的個數的設計并沒有具體的理論可以參考,只能根據實際實驗的情況將神經網絡的復雜程度由簡易到復雜的方式進行設計,根據多次的實驗,得到當網絡的結構為5層時的結果較好,見表3。

表2 負荷類型及標簽

表3 BP神經網絡結構
BP神經網絡的算法設計步驟包括BP神經網絡的結構設計、BP神經網絡的訓練和BP神經網絡驗證和參數導出3個部分。第1步中的神經網絡的構建已經在表3中進行了說明,第2步中的網絡訓練和第3步的網絡驗證中,待分類的基本負荷種類是5種用電器,將建立的負荷特征數據集隨機分為兩部分,80%作為網絡的訓練集,20%作為網絡的驗證集,通過驗證集對訓練后的算法模型進行驗證,若預測的結果誤差較大,則重新構建BP神經網絡模型[13]。最后將訓練好的BP神經網絡的參數信息進行導出,使用C語言將BP神經網絡算法模型在SOPC系統中進行重建,以便用來進行識別。
算法的主程序流程如圖4所示,系統開始工作后,進入初始化狀態,包括按鍵模塊、PmodOLEDrgb顯示屏以及PS對PL端的初始化,然后系統進行主程序的執行,當PL端監測到設備工作,啟動數據采集和數據處理模塊,對負荷進行特征值提取,并中斷PS,將特征參數通過總線傳輸到PS,PS端響應中斷,讀取負荷特征值,進行算法處理,完成對負荷的在線辨識,將結果通過PmodOLEDrgb顯示器進行顯示[14]。

圖4 主程序流程圖
對整個系統功能劃分,確定PL端和PS端各自完成的功能以及要達到的指標;完成PL端數字邏輯電路設計,利用仿真和邏輯綜合進行時序檢查和功能驗證;將設計的數字邏輯部分進行AXI4_Lite接口的IP封裝,并再次進行邏輯綜合,檢查AXI4總線時序是否符合要求;將生成的IP核添加到VIVADO下的工程目錄,將IP添加到IP核管理器,在VIVADO下新建Block Design程序,將ZYNQ7 Processing System以及各功能模塊添加到Block中,配置參數和信號線連接,如圖5所示,包含了ZYNQ7 Processing System、時鐘和復位IP核、AXI總線接口IP核、負荷特征參數提取IP核(Load_param)和PmodOLEDrgb驅動IP核5個部分。導出頂層文件并生成BIT文件;最后將生成的BIT文件導入SDK進行PS端軟件設計,完成系統功能。

圖5 SOPC系統配置
建立負荷特征數據庫有嚴格的標準[15],使用十進制的double型數據表示負荷特征參數數據集。假設用電負荷的特征數據庫中有n(n=31)種不同組合下工作的用電負荷,本文對每種負荷的組合方式提取了m(m=50)組特征向量,其中每種組合下的用電負荷的特征向量空間可以表示為:

式中:x=[I,P,Q,S,cos φ)]T。則包含所有組合下的用電負荷的特征值數據集為:

與之對應的標簽數據集為:

式中:Ynm為與Xnm一一對應的5維列向量。將整個數據集進行隨機化處理,將80%的數據集作為訓練集,20%的數據集作為驗證集。對BP神經網絡訓練的方式采用Matlab工具的方式,對神經網絡的參數進行初始化,并設定使訓練停止的條件。
訓練算法的過程使用訓練數據集對網絡的權重和偏置不斷優化,驗證數據集用于評估訓練后的算法模型的性能,不參與網絡的訓練過程。輸入層到隱含層以及隱含層之間的節點轉移函數設置為“logsig”(sigmoid),隱含層到輸出層的節點轉移函數設置為“purelin”(ReLU),采用“trainscg”對網絡進行訓練,設置迭代次數epchos=15 000次,學習率Lr=0.001,最小梯度下降目標為min_grad =0.000 001,max_fail=240,其他參數默認,在訓練過程中,以上幾個參數任意1個達到設定值則停止網絡訓練[16]。圖6是其中1次對BP神經網絡的訓練結果。整個訓練過程一共迭代了15 000次,用時38 s,訓練迭代次數達到設置上限時強行停止。

圖6 BP神經網絡訓練結果
在足夠的數據集下訓練好神經網絡之后,使用Matlab導出神經網絡的各層權值和閾值參數。按照系統軟件設計搭建好SOPC系統,使用VIVADO綜合、實現工具將Verilog代碼轉換為硬件電路,并生成BitStream文件,再將該文件導出到SDK開發環境中。
在SDK開發環境中建立工程,使用C語言編寫代碼,在PS端讀取PL端寫入到對應寄存器的計算結果,并且在工程中建立神經網絡識別算法,整個識別算法計算過程中的權值、閾值使用之前從Matlab中導出的權值、閾值進行運算。將PS讀到的值經過轉換之后輸入到神經網絡識別算法運算流程中,便可得到最終的運算結果。對運算結果與之前所做的獨熱碼一一進行對應,即可得到電路中正在工作的用設備。最終將系統所采集的功率信息、電流信息以及工作中的用電器名稱顯示在OLED屏幕上。
將5個用電器的31種組合依次插入監測裝置用電入口插座中,系統均能夠自動識別用電器并顯示在OLED屏幕上,圖7顯示了其中8種組合的識別情況。顯示的I、P、S、Q、Pf分別為電流有效值、有功功率、視在功率、無功功率、功率因數;Dev后面的英文表示電路中當前工作的設備名稱,Bulb、DDS、Fan、Pow、Osc分別為白熾燈、信號發生儀、風扇、電源、示波器。經過多輪重復試驗,監測裝置均能夠準確、及時地將電路中用電器信息顯示在屏幕上。

圖7 系統實時識別結果
本文在非侵入式負荷監測技術的基礎上,利用SOPC技術設計了實驗室負荷智能監測裝置。監測裝置使用全可編程邏輯平臺Zybo Z7-20作為系統處理模塊。在硬件系統的設計上,使用標準的電源排插模擬實驗室的供電入口,安裝高精度的電流、電壓互感器,并設計了高精度信號采樣電路、系統輔助電源電路、信號調理電路和數字邏輯電路。在軟件算法設計上,在Matlab中結合機器學習的監督學習方式,使用BP神經網絡建立負荷識別算法。然后選用實驗室中5種具有代表性的負荷,使用高精度ADC采樣負荷穩態下的用電信息,并通過數學方法提取出負荷的特征參數構建特征數據庫。最后,使用該數據庫對設計的算法模型進行訓練和驗證,建立負荷識別算法并將模型參數信息導出,在SOPC系統下重建了該識別算法,完成對負荷辨識的算法設計。
仿真及調試結果表明:在Matlab仿真建立識別算法模型時,算法能夠對5種負荷的31種組合達到100%識別,說明本文設計的算法是可行的。在實際調試時,將訓練好的識別算法導入到SOPC系統中,系統在實際工作時也能夠達到對31種組合情況的100%識別,說明監測裝置是可行的。由于高校寢室的用電器種類和數量較少,符合檢測裝置的應用范圍,檢測裝置除了應用在實驗室場景,也可以應用于高校寢室的用電管理。
監測裝置仍有幾點不足和可以改進之處,首先在設計時選用的用電設備不能代表所有實驗室的用電設備,因此監測裝置有一定的局限性;其次監測裝置只是完成了基礎功能,后續可以將算法移植到嵌入式系統中,并可加入數據傳輸模塊使監測裝置更加智能化;在進行過多的負荷檢測時,識別率會稍有下降,訓練時間的增加幅度會提高,不利于應用在負荷較多的場景下。