?

基于C/S 架構的分布式電源監控系統的設計與實現*

2018-05-09 10:30孔祥玥吳志鋒宋香榮
新能源進展 2018年2期
關鍵詞:客戶端分布式發電

孔祥玥,吳志鋒,舒 杰?,宋香榮

(1. 中國科學院廣州能源研究所,廣州 510640;2. 暨南大學韶關研究院,廣東 韶關 512000)

0 引 言

近年來以光伏發電為代表的分布式發電技術由于其經濟可靠、環境友好的特點,得到歐美多個發達國家的重視,政府紛紛出臺相關利好政策去扶持該技術,分布式發電技術及其實施得到良好的發展與普及[1-3]。我國地域面積遼闊,太陽能資源豐富,為光伏的利用提供了有利的條件,據國家能源局統計,2017年我國分布式光伏發電裝機達到2 966萬kW,其中,新增裝機1 944萬kW,同比增長 3.7倍??梢姺植际桨l電技術的應用在我國發展迅猛、前景可觀;隨著光伏發電設備成本以及安裝成本的進一步下降,諸如屋頂光伏之類的分布式光伏電站將會在工業園區、商業建筑、大學園區乃至居民住宅中進一步普及。

光伏發電存在隨機性以及間歇性的特點,在實際應用中,系統大部分時間處于無人值守運行狀態,為充分有效地協調發電、儲能以及負荷的功率平衡關系,對系統的運行參數進行實時監控及數據分析顯得極為重要。國內外學者對光伏電站遠程監控技術與應用進行了研究。ALUISIO等[4]提出一種基于1日預測調度功能的熱電聯供微電網監控架構;MANUR等[5]提出一種基于多個獨立用戶和多個分布式電源的微電網并網監控、通信、計算的通用平臺;姚玨菂等[6]針對惡劣的氣候環境提出了詳細的解決方案,設計了一套完整的光伏電站監控系統;王輝等[7]針對家庭式分布式電源(distributed energy resource, DER)設計了一套基于瀏覽器/服務器(browser/server, B/S)架構的分布式電源并網監控系統;CHIEN等[8]深入探討了微電網監控人機交互系統中的用戶需求以及接口模型。相關文獻及研究成果指出,已有的監控系統大多基于上位機監控軟件技術,或者基于網頁(Web)瀏覽器,甚少采用手機APP形式。只要存在無線數據網絡,手機客戶端就能隨時隨處接入系統,便于用戶及時了解現場設備的運轉情況。結合已有的實施案例及經驗,本文提出一種基于客戶機/服務器(client/server, C/S)架構的分布式電源遠程監控系統,用戶可通過安卓(Android)移動終端對系統進行實時監控,并實時接收系統關注事件的消息推送。文中介紹了該監控系統的總體架構,并著重對 Android客戶端及其后臺服務器軟件的功能和關鍵技術進行詳細介紹。

1 系統總體架構

分布式電源具有設備多、數據量大、分布區域廣、地理位置偏遠等特點,分布式發電單元之間的信息共享和交互要求較高。本文提出的分布式電源監控系統采用分散采集、區域匯聚、集中處理的體系結構,由現場服務器對站點的發電單元數據進行匯集,由云端服務器對數據進行集中處理;數據傳輸層面采用C/S結構,由云端服務器提供高性能的超文本傳輸協議(hyper text transfer protocol, HTTP)服務以及消息推送服務,以安卓應用程序(Android application, Android APP)作為人機交互接口供電站用戶使用,確保系統的可靠性、安全性、實用性以及擴展性。

圖1 系統架構圖Fig.1 Architecture of the system

系統結構從功能上劃分為4層,如圖1所示,由下至上分別為設備及數據采集層、現場數據管理層、用戶層以及服務層。

1.1 設備及數據采集層

設備及數據采集層由分布式發電設備及相應的測量設備、控制設備組成。其中,分布式發電設備如光伏組件、逆變器、匯流以及蓄電池等,實現太陽能等可再生能源的發電及電流電壓的轉換、平衡;測量設備包括模擬量測量及開關量檢測,對各種電流、電壓、頻率等電氣屬性以及開關的通斷進行測量、匯報;控制設備根據上層下達的指令對各種保護開關進行開合控制并對蓄電池進行充放電控制等。

1.2 現場數據管理層

本地數據管理層通常由一臺性能稍好的計算機來實現,負責兩個基本功能:一是對下層收集上來的數據進行解析、整理,并按照一定的協議、格式將此數據上傳至云端數據庫服務器,實現云端數據與本地數據的同步;二是提取由云端應用服務器下發的控制指令,并轉發至下層實現對現場設備的控制。對于具備預測調度功能的分布式發電系統,該層根據氣象監測數據以及預測算法運行計算,進而執行相應的調度操作。

1.3 用戶層

用戶層主要為終端用戶提供客戶端應用,通過該客戶端應用,用戶可以方便地瀏覽設備狀態信息,對設備進行遠程控制,并接收系統的實時推送消息??蛻舳藨每梢允荳EB客戶端,也可以是APP客戶端。WEB客戶端以B/S的方式進行運作,用戶主要通過計算機的瀏覽器對服務器進行訪問;APP客戶端以C/S的方式進行運作,用戶通過手機APP對服務器進行訪問。相對于WEB應用,手機APP在接收服務器的推送消息方面顯得更勝一籌,對設備的突發事件掌握得更為及時,有利于對分布式電源系統的整體監控。

1.4 服務層

服務層包括應用服務以及數據庫服務,該層在系統中負責四大功能:一是接收本地數據庫上傳的運行數據,與本地服務器維持數據同步;二是響應客戶端的請求,包括數據查詢修改以及對控制命令的轉發;三是與本地服務器及移動客戶端維持長連接,對消息進行及時推送;四是對海量的發電數據進行管理及備份。

2 服務器的設計

云端服務器的框架采取 Apache+PHP+MySQL的形式,其中,Apache是一個開源的、模塊化的Web服務器;MySQL是一種關系型數據庫管理軟件,具有輕巧、高效以及部分開源等特性;PHP是一種通用的腳本語言,主要適用于 Web開發,對MySQL具有良好的支持。如此,Apache、PHP和MySQL成為一個開源、跨平臺的服務器組合,可以輕松構建于Windows或Unix操作系統之上。服務器的主要功能模塊及工作流程如圖2所示。

圖2 服務器工作流程Fig. 2 Flowchart of the server

如圖2所示,Android客戶端與服務器之間的數據交互有兩種形式。一種是請求-響應的形式,由Android客戶端向服務器提交HTTP請求,服務器對此請求進行解析從而獲取請求參數,通過PHP庫函數中的mysqli接口對MySQL數據庫進行相應操作,最后將操作結果經過JS對象標記(JavaScript object notation, JSON)封裝后形成一個HTTP響應返回給Android客戶端;一種是服務器的主動推送形式,服務器與Android客戶端通過WebSocket協議維持一個長連接,當有新消息過來的時候,服務端查出該消息對應的目標地址,并找到相應的WebSocket通道進行消息下發。

3 Android客戶端的程序設計

3.1 功能模塊說明

根據分布式電源監控的具體需求,把 Android客戶端(以下簡稱APP)的用戶功能梳理成5部分,具體如圖3所示。

圖3 Android客戶端結構圖Fig. 3 Structure of the App

軟件的主要功能如下:

村干部來源于鄉村,對本地風土人情文化、各家各戶的情況了如指掌,了解村民思想、顧慮、訴求、目的,熟悉村民思想工作的方法,因此,更容易將國家的政策精神傳達到戶,便于分散的農戶統一思想、統一認識、統一進行旅游開發。

①登錄/注冊模塊。系統內用戶劃分為多個類別,包括超級管理員、管理員、操作員、游客等,對應不同的操作權限。用戶登錄后,App從服務器獲取其權限類別,用戶僅能進行權限規定范圍之內的操作。

②站點管理模塊、設備管理模塊。管理員級別以上的用戶可以對此項進行管理,包括新增、刪除、信息修改等。其中,設備管理模塊還具有對設備的控制功能,主要體現在對設備通、斷的控制。

③數據查看模塊。數據查看模塊包括遙測、遙信實時數據的查看、告警事件的查看以及遙測歷史數據的查看。遙測歷史數據可選擇以1 min、5 min、1 h或1 d為步進量來進行查看,具有曲線圖以及數據表格的展現形式。

④設置模塊。設置模塊包括用戶設置以及系統設置,用戶設置用于用戶的個人信息設置、密碼修改;系統設置用于公司信息設置、數據字典管理以及用戶權限管理,系統設置權限僅對超級管理員開發。

3.2 開發平臺及語言

APP的開發平臺采用安卓工作室(Android Studio),開發語言采用Java及HTML、JSP等。Android Studio是基于IntelliJ IDEA的官方Android應用開發集成開發環境(integrated development environment,IDE),除了IntelliJ本身所具有的強大的代碼編輯器和開發者工具,Android Studio還提供了多個可提高Android應用構建效率的功能,如開發中協助調試的Android設備模擬器等。

3.3 軟件設計流程

Android客戶端軟件的開發遵循模型-視圖-控制器(model-view-controller, MVC)模式,這是一種軟件設計典范,在當前的網頁、Android以及iOS的應用開發中廣泛流行,該技術采用業務邏輯、數據、界面顯示分離的方法來組織代碼,有助于管理復雜的應用程序,簡化了分組開發,同時也讓應用程序的測試更加容易。在該模式下,系統框架的分類有3種:模型(model)、視圖(view)、控制器(controller),控制器對象負責獲取用戶的按鍵和屏幕觸摸等事件,協調模型及視圖對象。

圖4 推送事件軟件流程圖Fig. 4 Flowchart of Notification

該軟件的主要控制邏輯包含兩部分,一是對服務器的主動推送事件的處理,二是App對用戶按鍵屏幕觸摸等事件的響應處理。推送事件軟件流程如圖4所示,用戶登錄成功后,APP創建到服務器的WebSocket連接,并通過心跳機制與其保持連接,同時對指定端口進行阻塞偵聽,一旦收到推送消息,則向服務器發送確認消息,同時根據消息內容對相應數據進行同步,并在用戶界面(user interface, UI)作相應的頁面更新。

APP點擊事件軟件流程如圖5所示,APP對用戶按鍵、屏幕觸摸等事件進行監聽,對于涉及顯示具體數據的操作,APP從服務器請求數據,如果網絡請求成功,則在UI顯示中作相應的更新,同時把該數據同步到本地數據庫中;如果網絡請求失敗,則從本地數據庫中調取數據到UI中作相應的更新,同時在UI中提示網絡請求失敗。

圖5 點擊事件軟件流程圖Fig. 5 Flowchart of Click Event

3.4 關鍵函數應用

3.4.1 網絡數據請求

APP的網絡數據請求通過HTTP異步請求代理實現,具體采用GitHub上的開源庫Asynchttpclient[9],該代理構建于Apache的HttpClient庫,所有的網絡請求都在APP的UI主線程以外執行,采用線程池來處理并發請求,回調函數則在原線程中執行。

Asynchttpclient的應用說明如圖 6所示,APP在主線程中通過 ProcessRequest.get()函數向服務器提交網絡請求,具體的網絡通信在后臺執行,執行結果以回調函數的形式在主線程中進行。

圖6 Asynchttpclient應用說明圖Fig. 6 Usage of Asynchttpclient

3.4.2 服務器推送消息的接收

服務器消息推送采用WebSocket協議,APP端采用 GitHub開源軟件包 WebSocketClient[10],這是完全用Java編寫的WebSocket客戶端軟件包,該軟件中WebSocket協議的實現基于RFC6455[11],能夠很好地工作于Android4.0及更高版本中。

圖7 WebSocket應用說明圖Fig. 7 Usage of WebSocket

WebSocketClient的應用說明如圖7所示,自定義一個類繼承自 WebSocketClient,重寫 onOpen()函數用以打開連接,重寫onMessage()函數用以處理接收到的新消息,重寫 onFragment()函數以處理收到的數據幀。當連接被關閉或發生錯誤時,則分別調用onClose()、onError()函數進行相應處理。

3.4.3 本地數據庫

APP在本地的數據采用SQLite數據庫進行存儲與管理。SQLite是一款輕量級、零配置、跨平臺的開源數據庫,支持標準的SQL語句操作,廣泛應用于iOS以及Android的APP中。SQLite的基本應用包括數據庫的建立(采用openOrCreateDatabase()函數)以及數據表格的建表、增刪改查等操作(采用execSQL()函數)。

4 運行結果

為查看系統的運行效果,做了以下準備工作:把后臺PHP代碼以及Java代碼部署到服務器上,做好相關配置,并啟動Apache以及MySQL服務;在Android Studio3.0.1上完成APP代碼的編譯,并運行于自帶的Android模擬器上。App順利運行,其部分截屏如圖8所示。

圖8 App部分截屏Fig. 8 Screenshot of the App

經過多次反復試驗,結果表明,本系統確實能夠準確及時地展現分布式發電單元的實時運行數據,能夠實時接收系統推送,并能夠對控制單元下達設備通、斷等控制指令,實現遙測、遙信以及遙控等功能,達到了設計要求。

5 結 語

隨著以光伏發電為代表的可再生能源發電技術的發展以及國家政策的相關扶持,分布式發電的普及化和規?;俏磥淼陌l展趨勢。本文提出的基于Android應用以及云端管控的分布式電源監控系統,對系統中各功能模塊進行合理抽象的劃分,普遍適用于各種規模的分布式發電微電站,能夠準確、實時的實現對分布式發電單元的遙測、遙信、遙控以及歷史數據的查詢;隨著云服務器租賃成本的日漸下降以及 Android手機的良好普及,進一步體現出該系統的經濟性、實用性。

參考文獻:

[1]ALI A, LI W H, HUSSAIN R, et al. Overview of current microgrid policies, incentives and barriers in the European Union, United States and China[J]. Sustainability, 2017,9(7): 1146. DOI: 10.3390/su9071146.

[2]BAYINDIR R, BEKIROGLU E, HOSSAIN E, et al.Microgrid facility at European Union[C]//Proceedings of 2014 International Conference on Renewable Energy Research and Application. Milwaukee, WI, USA: IEEE,2014: 865-872. DOI: 10.1109/ICRERA.2014.7016509.

[3]謝曉惟,梁秀紅,梁勃.德國光伏發電綜述[J]. 太陽能, 2015(2): 6-10, 14. DOI: 10.3969/j.issn.1003-0417.2015.02.002.

[4]ALUISIO B, CAGNANO A, DE TUGLIE E, et al. An architecture for the monitoring of microgrid operation[C]//Proceedings of 2016 IEEE Workshop on Environmental, Energy, and Structural Monitoring Systems (EESMS). Bari, Italy: IEEE, 2016: 1-6. DOI:10.1109/EESMS.2016.7504809.

[5]MANUR A, VENKATARAMANAN G, SEHLOFF D.Simple electric utility platform: a hardware/software solution for operating emergent microgrids[J]. Applied energy, 2018, 210: 748-763. DOI: 10.1016/j.apenergy.2017.07.073.

[6]姚玨菂,王延民,孫東旭. 20MW光伏電站監控系統設計與優化[J]. 電子設計工程, 2015, 23(5): 50-54. DOI:10.3969/j.issn.1674-6236.2015.05.016.

[7]王輝,王敬華,徐丙垠,等.基于B/S架構的分布式電源并網監控系統設計[J]. 電力系統保護與控制, 2016,44(14): 160-165. DOI: 10.7667/PSPC151070.

[8]CHIEN S C, FUJIYAMA M, ISHIDA T, et al. User interface model for microgrid systems monitoring: from user needs to design requirements[C]//Proceedings of the 5th IET International Conference on Renewable Power Generation (RPG). London, UK: IEEE, 2016. DOI:10.1049/cp.2016.0530.

[9]Android Asynchronous Http Client[Z/OL]. (2015-09-19)[2017-12-18]. https://loopj.com/android-async-http/.

[10]Java-WebSocket[Z/OL]. (2012-02-04)[2017-12-18]. http://tootallnate.github.io/Java-WebSocket/.

[11]The WebSocket Protocol: RFC6455[Z/OL].(December 2011)[2017-12-18]. https://datatracker.ietf.org/doc/rfc6455/.

猜你喜歡
客戶端分布式發電
“發電”
檸檬亦能發電?
含風光發電的互聯電力系統自動發電控制論述
如何看待傳統媒體新聞客戶端的“斷舍離”?
縣級臺在突發事件報道中如何應用手機客戶端
孵化垂直頻道:新聞客戶端新策略
大樞紐 云平臺 客戶端——中央人民廣播電臺的探索之路
分布式光伏熱錢洶涌
分布式光伏:爆發還是徘徊
基于DDS的分布式三維協同仿真研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合