徐紅艷,佃松宜,鄧 翔,王 琪
(四川大學 電氣信息學院,四川 成都610065)
高壓直流供電系統 (high voltage direct current power system,HVDCPS)給數據中心和通信機房設備供電時,在供電可靠性、降低能耗和成本、便于日常維護等方面比傳統不間斷電源系統顯現出較大優勢,因而受到業界廣泛關注。2012年國際國內相關標準也已頒布實施[1,2]。作者所在課題組成功研制出通信用240VHVDCPS新型電源裝置。
電源監控是通信用電源裝置中進行實時監控、自動監測、故障早期預警和優化運行等的關鍵技術。該技術目前的發展趨勢是高可靠性、高實時性、可擴展、易維護以及友好人機交互圖形用戶界面[3]。這就要求監控系統對監控對象的狀態變化和用戶操作做出更加快速的響應,能夠不間斷、穩定、可靠、實時地對通信電源設備進行監測與預警。嵌入式技術的應用讓這種需求成為可能。本系統從技術需求出發,基于ARM平臺和Qt開發工具,采用三級集散式監控結構,應用計算機控制和總線通信技術,模塊化設計,實現對新型電源裝置的嵌入式實時監控。
監控系統需要檢測的信號有:交流輸入、整流模塊、母線和負載支路的各種電壓和電流,蓄電池組和各單體電池的電壓、電流和溫度,以及系統其它狀態量等。
根據相關標準技術要求和系統實際需求,監控系統應具有的功能概況如下:
(1)監測交直流電壓和電流,對異常狀況進行保護并報警。
(2)實時檢測蓄電池組及各單體電池的電壓和溫度,對異常狀況進行保護并報警。對蓄電池進行管理,在均充與浮充之間智能切換。
(3)檢測母線和各負載支路的絕緣狀態,絕緣下降至不符合要求時進行告警。
(4)記錄系統歷史數據,以及系統正常工作時的關鍵參數動態曲線顯示。
(5)提供人機接口,通過真彩顯示屏和觸摸屏,實時顯示系統運行參數,可進行系統模塊配置、參數設置和系統維護等。
(6)支持遠程監控功能。
本監控系統由ARM主控模塊、電池管理模塊、絕緣監測模塊和配電監控模塊4個模塊組成。ARM主控模塊協調其它各模塊,對系統整體性能進行優化分析;電池管理模塊,絕緣監測模塊和配電監控模塊可獨立運行,對電源系統各個部分進行獨立控制。當某一模塊出現故障不會導致系統其它功能喪失;當系統要增加設備時,可增加功能模塊的數目,易于擴展;當某一模塊出現故障時,可以在不影響整個系統運行的情況下更換模塊,迅速排除故障。系統整體結構如圖1所示。

圖1 監控系統整體結構
系統采用分布式檢測結構。電流電壓等傳感器和其它轉換電路在底層通過各模擬量、數字量采集模塊,再通過4條CAN總線向ARM主控制器上傳。另外,上層也可以通過數字量輸出模塊來直接控制繼電器和相關開關器件的開斷。整流模塊中的DSP控制器通過CAN總線接受ARM主控制器的管理。
監控系統中ARM處理平臺選用Atmel公司的AT91SAM9G45處理器,處理器頻率達到400MHz,帶有一個7寸LCD顯示屏和一個觸摸屏[4]。選用抗電磁干擾能力強的CAN總線實現數據通信[5]。操作系統選用嵌入式Linux,并在其上移植Qt/Embedded庫。
系統軟件平臺的搭建比較復雜,包括虛擬機的安裝、交叉編譯環境的建立、Linux內核的移植、文件系統的制作、NFS系統的搭建、Qt和Qwt的安裝以及Qt、Qwt和tslib向開發板的移植等。
本系統程序的開發是在裝有Ubuntu 11.10版本Linux操作系統的宿主機上完成的。在宿主機上建立Qt/Embedded開發環境是開發GUI程序的首要步驟[6]。
本監控系統程序由數據采集與控制程序和人機交互界面程序兩部分組成,并通過Linux進程間共享內存的方式完成數據的傳遞,實現原理如圖2所示。

圖2 共享內存方式原理
管道和消息隊列等通信方式,需要在內核和用戶空間進行四次數據拷貝。而共享內存只拷貝兩次:一次從輸入文件到共享內存區;另一次從共享內存區到輸出文件。因此,共享內存是一種較快的進程通信方式。系統使用mmap(內存映射)方式傳遞數據,mmap()系統調用使得進程之間通過映射同一個普通文件實現共享內存[7]。共享內存區由一個進程創建,其余進程也可以訪問這塊內存,直接讀寫數據,數據不需要在進程間進行復制操作。為了達到進程間的同步及互斥,需要與其它通信機制結合使用[8]。
設計中采用Mutex技術實現進程同步[9]。當一個線程嘗試操作共享內存區域前,先檢查是否已被Mutex鎖定。如果已被鎖定,則進入等待狀態,同時啟動超時計數器,當線程等待超時完畢,則重新嘗試訪問共享內存區域;如果未被鎖定,則創建一個Mutex,以鎖定共享內存,同時啟動超時計數器,然后開始操作共享內存,當線程的鎖定超時完畢,則對Mutex執行解鎖,以釋放共享區域的操作權限,以避免死鎖。
3.2.1 數據采集
本嵌入式系統采用多線程和多進程技術實現數據采集、控制、數據處理等同時進行,從而提高程序的處理效率。程序流程圖如圖3所示。

圖3 數據采集程序流程
監控系統在Linux下建立一個讀取CAN數據采集模塊的程序。系統首先進行初始化,建立共享內存,然后打開串口設備和CAN接口設備,并設置初始值。主節點(ARM主控模塊)向從節點 (CAN數據采集模塊)發送請求數據命令,各數據采集模塊通過CAN總線將數據上傳到ARM主控模塊的接收緩存區。ARM主控模塊從緩存區讀取數據,根據幀頭判斷數據類型和數據長度并進行處理,將數據保存在共享內存中。
系統創建一個線程通過事件驅動實現數據接收,并將數據保存在緩沖區中,防止因數據量過大造成界面假死[10]。Qt自身擁有QThread線程類,并提供創建新線程的方法。線程通過重載QThread::run()函數完成其操作。通過調用QThread::start()開啟線程,線程一直循環讀取共享內存中的數據,為界面刷新提供即時數據。Qt線程中無法直接操作主進程中的GUI控件,即無法在線程中對一個具體的標簽或者文本欄做修改,只能依靠 “信號與槽”的方式,每當線程完整的讀一次共享內存中的結構體,就發出信號。
不同的界面需要刷新的數據不同,因此線程必須針對不同界面定義相應的信號。本文采用自定義結構化消息的方式來實現采集數據的異步顯示。自定義的結構化消息包括消息編碼、通道編碼、數據類型、采集內容。系統所有的采集數據在發送前按照統一的消息結構進行組包,然后發送到數據接收線程;數據接收線程按照消息編碼進行分揀,分別調用對應的消息處理函數進行解包、數據轉換和動態顯示。
3.2.2 現場數據預處理
為防止干擾信號引起錯誤報警,對現場采集數據進行數字濾波預處理。以直流母線電壓為例介紹軟件濾波器的設計過程。
電池并聯在直流母線上,因此直流母線電壓等于電池電壓。根據電池充、放電特性,直流母線電壓的波動頻率在1Hz以下,留有一定裕量將截止頻率設為10Hz。系統采樣頻率為100Hz,采用文獻[11]的方法計算出對應的離散傳遞函數為

根據傳遞函數式 (1)可得

按照式 (2)實現濾波器方法如下:

3.2.3 數據存儲與管理
在主控程序中實現對數據庫的操作,數據庫主要對實時數據進行保存和處理,對歷史數據進行維護和訪問,完成數據的查詢、修改、設置、瀏覽等功能。電源監控軟件在運行時,自動建立一個SQLite數據庫,然后在數據庫中創建數據表,數據表中創建報警、日期、蓄電池狀態等字段。對于大批量數據,引用數據庫中 “事務”的概念,將其當做一次事務從而大大加快批量數據的操作速度。數據保存在以 “.db”為后綴的數據庫文件中方便備份和轉移,只需要拷貝該數據庫文件就可實現整個數據庫的備份。
3.2.4 人機界面設計
采用Qt Designer工具繪制用戶界面[12],利用獨有的布局系統使窗口和組件自動根據屏幕空間的大小改變布局。根據監控系統的基本功能,制定了圖4所示電源監控系統 的界面應用程序開發框架方案。

圖4 基于Qt/Embedded的界面應用程序開發框架
監控系統的主界面包括設置、操作、狀態、系統信息、歷史記錄、通信連接、時間、語言、幫助等界面。各界面又包含其它子界面。為了便于界面修改且易于靈活擴展,將主界面 (MainWindow)分成3個子項:TitleBar、CenterView、StatuBar,同時這3個子項內部管理各自的視圖。MainWindow通知TitleBar切換頁面,TitleBar負責切換主窗口和其他各界面;CenterView通知MainWindow頁面切換后做必要的處理,負責內部頁面的切換邏輯以及當界面切換時通過信號告訴MainWindow做相應反應。當某個界面只需由TitleBar和CenterView組成時,可發送信號隱藏StatuBar。
3.2.5 Qwt繪制動態曲線
本文采用Qwt工具庫完成電源電壓、電流、溫度等動態曲線的繪制。下面是曲線類的關鍵代碼:

Qwt畫曲線是先建立畫圖區域qwtPlot,然后往上面添加曲線和點,在一個特定區間所計算的數目越大畫出來的曲線越平滑。曲線需繪制在畫布上,它繼承自QwtPlot-Curve類。由于是實時顯示,圖形與橫坐標隨著時間平移,利用QObject的timerEvent()函數來實現此功能[13]。每經過一定的周期,圖形的橫坐標發生平移,曲線需要重繪,時間間隔由QTimerEvent類型的參數決定,將默認值設為每秒刷新一次。
除了要動態監控波形外,還需要對電源電壓、電流及溫度波形進行分析,以測評效果的優劣,所以波形的滾動縮放查看效果是必不可少的。這個功能主要用QwtPlotZoomer類來實現,下面是實現曲線滾動縮放的關鍵代碼:

將整個工程交叉編譯并下載到目標機上運行。在測試過程中,主要觀察了監控系統的狀態主界面以及實時曲線界面。經過長期運行測試,在未出現市電異常或斷電報警的情況下,狀態主界面顯示如圖5所示,狀態主界面顯示了整個電源裝置各主要組成部分的運行狀態,點擊圖標可以切換到其它界面了解各組成部分的狀態或進行設置等相關操作。界面之間可以自如切換和刷新各種數據。

圖5 狀態主界面
圖6 為直流母線電壓的實時曲線波形。由波形可以看出,在開機至1秒后,整流模塊的電壓能夠迅速上升到240 V的標稱電壓值。另外系統達到穩態之后,輸出電壓的平均值穩定在239.5V,滿足直流母線電壓240±2.4V的要求。

圖6 直流母線電壓實時曲線
本文給出了新型電源監控系統的功能需求分析和整體結構,基于ARM9+Linux+CAN總線的平臺,使用Qt編程技術,充分利用 “信號與槽”的獨特機制和豐富的控件資源。采用進程間共享內存和Mutex技術實現進程同步來完成數據的傳遞,有效提高進程間數據通信效率;采用軟件濾波方法對現場數據進行預處理,并通過SQLite數據庫實現數據存儲管理。經測試,本嵌入式監控系統能夠穩定運行于課題組開發的240VHVDCPS新型電源中,實現了可靠、實時地對電源設備各種狀態參數進行嵌入式監測與預警,人機交互界面友好,對類似電源裝置或其它工業嵌入式監控系統有一定的借鑒作用和較好的應用前景。
[1]ITU-TL.1200,Direct current power feeding interface up to 400 V at the input to telecommunication and ICT equipment[S].2012.
[2]YD/T 2378-2011,240Vdirect current power supply system for telecommunication[S].2011(in Chinese).[YD/T 2378-2011,通信用240V直流供電系統[S].2011.]
[3]ZHOU Xiaoming.Study of network monitoring of UPS power based on ARM[D].Huainan:Anhui University of Technology,2009(in Chinese).[周曉明.基于ARM的UPS電源網絡監控系統的研究[D].淮南:安徽理工大學,2009.]
[4]LIU Liang,LAI Wanchang,LI Ming.Design and implementation of image transfer system with GPRS based on ARM9[J].Computer Engineering and Design,2010,31 (7):1477-1480(in Chinese).[劉良,賴萬昌,黎明.基于ARM9的GPRS圖像傳輸系統的設計與實現[J].計算機工程與設計,2010,31(7):1477-1480.]
[5]YUE Xiumei,MA Xuejun,KANG Yong.Design on monitoring system of high-power inverter based on CAN bus[J].Electrical Measurement &Instrumentation,2008,45 (10):37-40(in Chinese).[岳秀梅,馬學軍,康勇.基于CAN總線的大功率逆變電源監控系統設計[J].電測與儀表,2008,45 (10):37-40.]
[6]ZHANG Genbao,PANG Sujuan.An embedded image processing system based on Qt[J].Advances in FCCS,2012:311-316.
[7]WU Zhen,CHEN Yaowu.A kind of message-based interprocess communication[J].Chinese Journal of Electron Devices,2006,29(4):1218-1226(in Chinese).[吳震,陳耀武.一種基于消息的進程間通信機制[J].電子器件,2006,29 (4):1218-1226.]
[8]CHEN Liding,LV Shenglin.Design of lower computer in environment monitoring system based on multilthread[J].Industry and Mine Automation,2010,12(12):13-16(in Chinese).[陳立定,呂盛林.基于多線程的環境監控系統下位機的設計[J].工礦自動化,2010,12 (12):13-16.]
[9]SUN Yingying,ZHENG Kougen.File monitoring system based on minifilter[J].Journal of Computer Applications,2011,30 (11):3115-3117(in Chinese).[孫瑩瑩,鄭扣根.基于微過濾驅動的文件監控系統[J].計算機應用,2011,30 (11):3115-3117.]
[10]GAO Qiang,XU Yong.Design of on-board HMI terminal based on Qt/E and ARM[J].Computer Measurement &Control,2012,20(1):236-238(in Chinese).[高強,許勇.基于ARM和Qt/E的車載HMI終端的設計[J].計算機測量與控制,2012,20(1):236-238.]
[11]CHEN Yong,DU Liang,SONG Ninghua.Fast design method of soft filter[J].Journal of Yancheng Institute of Technology,2006,19 (2):25-27 (in Chinese).[陳勇,堵亮,宋寧化.軟件濾波器的快速設計以及用C語言實現濾波器的功能[J].鹽城工業學報,2006,19 (2):25-27.]
[12]CHEN Xi,LV Xianghua,LIU Yan.Design of new modular industrial controller based on embedded Linux[J].Instrument Technique and Sensor,2010 (11):27-29 (in Chinese).[陳曦,呂湘曄,劉艷.基于嵌入式Linux新型模塊化工業控制器設計[J].儀表技術與傳感器,2010 (11):27-29.]
[13]SUN Yifan,GUO Tangyong,ZOU Tong,et al.Developing seismic data processing system using Qt library[J].Journal of Geodesy and Geodynamics,2010,31 (6):138-141(in Chinese).[孫一帆,郭唐永,鄒彤,等.使用Qt庫開發地震數據處理系統的分析與設計[J].大地測量與地球動力學,2010,31(6):138-141.]