閆蘭英,袁 帥
1(山東省郵電規劃設計院有限公司,濟南 250101)
2(積成電子股份有限公司,濟南 250100)
太陽能作為一種清潔、高效的可再生能源,與傳統化石能源相比具有先天優勢.特別是近10年,隨著材料科學和通信技術突飛猛進得發展,太陽能已經從書本上的能源走入到千家萬戶的身邊[1,2].與此同時,國家政府也投入了大量的人力和物力發展光伏發電,以安徽省肥東縣為例,自2015年至今,政府先后投資855 萬元,為5 個貧困村、300 余戶貧困戶建造了310 座分布式光伏發電站,極大改善了當地人民的生活水平,提高了人民的生活質量,緩解了當地用電緊張狀況,同時也可以就近接入配電網,發電用電并存.
但是分布式光伏發電系統相互之間獨立,控制相對分散,很難實現集中化、統一化、智能化的管理,對于發電系統內部的運行狀況無法實現有效的快速管理,特別是現場設備出現故障報警,現場居民無法及時發現排除,留下了安全隱患[3].本文基于SpringBoot 快速開發了一種B/S 構架的太陽能光伏發電管理系統,不僅實現了數據采集、數據存儲、告警展示等功能,而且實現了數據分析、發電統計、能源匯總等功能,通過接入實際分布式太陽能發電站,驗證了系統的可靠性、安全性和穩定性,具有極高的推廣價值和實際意義.
分布式光伏發電系統(如圖1)可以直接將太陽能轉化為小型發電系統,其中核心部件包括:太陽能電池板、匯流箱、直流柜、逆變器、溫度儀、輻照儀、數據采集器、升壓系統、服務器等設備.

圖1 分布式光伏發電系統
太陽能電池板主要功能是利用光伏效應將采集的太陽能轉化為直流電能,再經由匯流箱和直流柜匯集,通過逆變器轉化成標準工頻電能,一部分直接由用戶“消化使用”,另一部分通過升壓系統就近并入高壓電網,緩解電網壓力,實現節能減排的效果.由此可見,逆變器是整個系統運行的橋梁和核心,只要對逆變器實現監測管理,便可以掌握整個系統的運行狀況.數據采集器主要功能便是采集逆變器、溫度儀和輻照儀等設備數據、狀態和告警信息,通過GPRS 遠程傳到服務器,進行規約解析、信息存儲、數據展示.分布式光伏發電管理系統如圖2.

圖2 分布式光伏發電管理系統
分布式光伏發電管理系統包括4 個模塊:前置功能模塊、數據存儲模塊、能源統計模塊、界面展示模塊.
前置功能模塊的主要功能:(1)創建網絡通道,獲取數據采集器上報幀;(2)規約解析,將數據存儲到中間件(Kafka).
數據存儲模塊的主要功能:(1)創建定時任務,定時執行任務;(2)消費中間件(Kafka)數據,進行數據存儲.
能源統計模塊的主要功能:(1)創建定時任務,定時執行統計、分析、存儲任務.
界面展示模塊的主要功能:(1)采用EasyUI 作為前端支持;(2)采用Echart 作為圖形展示[4];(3)采用shiro 作為安全權限控制.
本系統采用了SpringBoot 框架,通過簡單的配置便可以糅合不同功能的子框架,比如,整合Druid 數據庫連接池實現對MySQL 數據庫的管理,整合Kafka 來解決數據高并發的問題,整合Quartz 來實現定時任務的配置[5].
前置功能模塊實現網絡通道創建、規約解析和數據存入Kafka 功能,流程圖如圖3.

圖3 前置功能流程圖
本系統采用Netty 框架,創建UDP 通道,對外開放IP 地址和PORT 端口號,現場數據采集器采集數據以5 min 周期主動上報到服務器,服務器獲取數據,根據規約進行解析.本系統將主動上報的數據分為:數據幀、狀態幀和告警幀,分別對應Kafka 主題:inver_data、inver_status、inver_warn.
數據存儲模塊主要功能是實現定時任務創建,定時讀取不同主題類型的數據,統一批量存入數據庫,流程圖如圖4.由于現場數據采集器主動上報頻率為5 min,根據采樣定理,數據存儲模塊的讀取頻率不應該大于2.5 min,為了保證數據的完整性和準確性,降低數據存儲過程的壓力,本系統數據存儲模塊的任務間隔為1 min,對應的cron 表達式為:0 0/1 * * *?.

圖4 存儲功能模塊流程圖
根據數據上報的實際需求,MySQL 數據庫設計相應數據表,數據幀對應數據表(pt_inver_data),主要字段包括:數據采集器SN、逆變器SN、數據上報時間、直流電壓(pv1、pv2、pv3、pv4、pv5、pv6)、直流電流(pa1、pa2、pa3、pa4、pa5、pa6)、交流電壓(rua、svb、twc)、交流電流(rua、svb、twc)、直流輸出總功率、交流輸出總功率、交流輸出頻率、當日發電量、累計發電量、逆變器溫度.
狀態幀對應狀態表(pt_inver_stauts),主要字段包括:數據采集器SN、協議ID、設備品牌ID、幀小類、總工作時間、數據上報時間、數據上傳周期、最大連接臺數、模塊版本號、信號強度、運營商名稱、基站ID、信號強度、工作模式、心跳頻率、模塊MAC 地址、硬件版本號.
告警幀對應告警表(pt_inver_warn),主要字段包括:數據采集器SN、逆變器SN、數據上報時間、報警代碼、報警內容、報警級別、報警處理狀態、報警恢復時間.
能源統計模塊主要實現統計定時任務的創建,定時讀取數據庫數據進行分析統計,例如設備在線情況統計,以15 min 為標準,如果設備在15 min 中沒有上報登錄幀,則判定設備離線;如果設備存在未曾處理的告警信息,則判定設備處于告警狀態;發電站功率是發電站下所有逆變器功率的累加統計.以統計發電站的發電量為例,其統計對象包括:逆變器、發電站、區域,時間統計維度包括:日統計、月統計、年統計.日統計流程圖如圖5.

圖5 日統計流程圖
日統計分析首先從數據庫讀取設備實時發電量數據,歸納統計到所屬發電站,再然后對發電站的發電量進行統計,歸納到所屬區域,實現多條件、多維度查詢.相同道理,月統計和年統計按照邏輯順序執行,最終實現光伏發電站發電量的累計統計.
頁面展示模塊(如圖6)設計主要實現檔案管理、數據展示、權限控制、編碼管理、報表管理等功能,本系統采用EasyUI 作為前端支持,Shiro 作為安全框架進行身份認證,Echart 作為圖形展示,ajax 實現前后臺數據交互.

圖6 頁面展示模塊
系統大屏(如圖7)整體采用科幻灰藍色風格,以模塊化方式進行分割分塊,主要展示了設備匯總、本月發電、日告警事件、成功率、輪播告警信息、區域發電信息,具有直觀、簡單、高效的優點.

圖7 系統大屏
發電站檔案(如圖8)主要以表格datagrid 方式進行展示,具有多條件模糊查詢、分頁查詢的功能,包括發電站名稱、電站id、所屬地市、縣區、設備廠家、裝機功率、實時功率、日發電量、告警和通訊狀態.

圖8 發電站檔案
采集數據展示采用曲線形式展示,如圖9,主要展示了發電站日發電量曲線和日發電功率曲線,兩者相互對比驗證,為日常維護提供數據支持.

圖9 采集數據展示
圖10以發電量統計為例,通過柱狀圖的方式展示,可以點擊右上角“日”、“月”、“年”、“總”按鈕來查看發電站發電量情況,直觀有效把握發電站運行情況.

圖10 統計數據展示
告警信息展示了發電站名稱、告警內容、告警等級、告警發生時間、故障編碼、告警狀態、處理狀態等信息,如圖11,而且告警信息可以通過短信平臺在第一時間內推送到發電站負責人和維護人員的手機上,確保告警事件可以及時有效解決.

圖11 告警信息展示
系統研發構建成功之后,以阿里云服務器為依托進行布置,采用Nginx 進行負載均衡,提高系統的并發吞吐量和抗壓能力.系統布置成功之后,用Jmeter 工具進行系統性能測試,主要對HTTP 接口和MySQL 數據庫進行性能測試[6].
HTTP 接口性能測試主要選用用戶登錄、告警事件查詢、發電量曲線查詢3 個接口進行測試,主要流程包括:(1)添加線程組和HTTP 請求;(2)添加URL 路徑、請求方式(post)和參數;(3)添加查看結果樹;(4)調用接口、查看返回值.
如表1所示,3 個接口在并發線程100 的情況下,平均響應時間小于400 ms,出錯率均為0,具有較好得處理并發能力和抗壓能力.

表1 HTTP 接口性能測試表
MySQL 數據庫性能測試以獲取全部發電站信息為例,對應SQL 語句為:select * from c_cons,流程為:(1)導入MySQL 的jdbc 包,配置參數;(2)設置jdbc request,寫入SQL 語句;(3)添加查看結果樹;(4)執行SQL 語句,查看結果.
如表2所示,在并發量50 的情況下,獲取發電站信息的平均響應時間97 ms,最小響應時間58 ms,最大響應時間137 ms,出錯率0,數據庫性能優秀.

表2 MySQL 數據庫性能測試表
總結,由于采用SprinBoot 框架,系統整體性能滿足實際要求,特別是應用了前后端分離、前后端負載均衡,極大提高了系統運行的穩定性和可靠性[7].
系統構建成功之后,以某省分布式光伏電站扶貧項目為契機,接入分布式光伏發電站465 戶、逆變器485 塊,自2019年9月17日接入系統,逐步升級完善,正常運行至今,系統實現了數據采集、分析、展示功能,達到了智能化、集中化、統一化管理的目的.
據統計,系統運行至今一共上報過626 次告警事件,其中普通告警401 起,嚴重告警事件225 起,具體分布如圖12.
由于所接入的分布式光伏電站多接入在偏遠地區,以往管理、監測困難,當前綜合能源公司相關管理人員通過光伏發電管理系統能夠在第一時間調取光伏發電站的運行狀態、實時數據、統計信息,當發電站發生故障告警,可以立即快速定位故障地點,及時搶修,確保系統運行正常,維護人身和生命財產的安全,每月可以人工成本和管理成本12 萬元,受到了相關領導和使用人員的一致好評.

圖12 告警信息統計