李姍姍*,孫曉玲,張艷霞
(1.防災科技學院信息工程學院,河北廊坊;2.防災科技學院智能應急信息處理研究所,河北廊坊)
隨著光伏發電規模的不斷擴大,監控系統在這一領域的地位日益重要。傳統的分布式光伏監控系統通常采用C/S 開發模式構建,通常被稱為SCADA(Supervisory Control and Data Acquisition)系統。在這種模式下,需要在每個客戶端設備上部署客戶端應用程序。然而,分布式光伏發電系統遍布各種地理環境,包括遙遠偏僻地區和極端惡劣氣候條件下。因此,采用這種系統需要高昂的經濟和運營成本,這不僅限制了系統的覆蓋范圍,還增加了系統的維護和管理難度。
隨著互聯網技術的快速發展,將傳統監控系統與Web 技術融合,并引入大數據和人工智能分析,已成為近年來的熱點研究開發領域。這種基于Web 的分布式監控系統被稱為Web SCADA 系統。采用B/S 開發模式,無需在客戶端設備上進行安裝部署,并且具有跨平臺兼容性,使得用戶可以通過Web 瀏覽器遠程監控設備的運行狀態。文獻[1]將Web SCADA 系統與物聯網設備集成,傳感器和設備的數據通過互聯網傳輸到Web SCADA 系統,實現實時監控。文獻[2-5]利用云計算和大數據分析技術,以實現更高效、可擴展的數據存儲和處理。然而,他們采用的Web 技術比較老舊,大部分都是基于一體化的Web 技術,這樣帶來的弊端是,運行可靠性和穩定性都存在一定的問題。
我們采用前后端分離技術設計實現了一個前后端分離的Web SCADA 系統,前端采用vue+ElementUI 的框架,該框架基于MVVM (Model-View-View-Model)的理念,實現了雙向數據綁定,減少了開發工作量;后端采用SpringBoot 框架,為數據接入和前后數據處理提供了基于數據驅動的模式,降低了開發難度。同時,引入大數據存儲和處理分析技術,能夠實時監測每臺光伏逆變器的運行參數以及整個光伏發電系統的性能參數,并進行智能數據挖掘、深度分析和預測。
數據采集框架如圖1 所示。元數據管理模塊提供平臺運行的需要用到的基礎配置數據,包括規約庫的管理、基礎表管理、告警引擎和鏈路方式;工程實施模塊根據工程的需求,按照元數據管理模塊提供的配置數據進行建立通道、配置點表、告警配置和歷史存儲配置等操作;程序啟動模塊按照工程實施的接口進行加載參數,按照配置的通道配置的規約動態加載規約庫進行數據采集,主要的過程為啟動通道、加載點表、加載告警引擎和加載歷史存儲引擎;實時監視模塊根據規約采集的數據進行實時庫存儲,實時庫提供接口為實時監視工具提供數據服務,數據轉發根據配置為其他應用提供規約轉發服務;歷史數據管理模塊從實時庫中按照配置周期遍歷數據存到歷史數據庫中,供歷史查詢工具查詢和實現斷點續傳功能。

圖1 數據采集平臺框架
為了支持光伏監控系統的事務型數據處理,我們采用成熟的數據倉庫ClickHouse 來存儲關鍵數據。這包括光伏電站的設備狀態、運行日志、異常報告等關鍵信息。ClickHouse 是一個開源的分布式列式數據庫管理系統,其數據存儲和查詢引擎都是專門為高性能而設計的,能夠處理TB 級別的數據,并在毫秒級別內提供查詢結果。基于Clickhouse 的分布式存儲架構如圖2 所示。

圖2 基于Clickhouse 的分布式存儲架構
由于Mysql 一張表的記錄超過一千萬條會帶來性能下降的問題,因此,如果采用一張表存儲歷史數據是不可行。得益于Clickhouse 的分布式存儲機制,一張表可以容納上百億條記錄還可以保證高性能使用,本文提出采用一張表存儲歷史數據,該存儲方案有如下的優點:(1) 高并發。采用netty 高并發技術處理高并發連接場景,可輕松處理數百萬的客戶端請求。支持docker 部署,可高效部署到容器節點中。(2) 分布式。分布式數據庫的數據可以分散在不同的節點上,保證數據的高可靠性。同時可以支持大規模數據集及水平擴展。(3) 支持復雜查詢。支持多種復雜查詢,包括聚合、排序、過濾和窗口函數等。(4) 實時數據處理。支持實時數據處理,采用列式存儲數據,為接收實時數據流并將其存儲在數據庫中進行分析提供了更加快速的方式,提高了數據利用的效率。(5) 易于集成。提供的API 接口有JAVA 和C++語言的,可以方便地集成到各種應用程序中,包括數據倉庫、數據湖、數據分析工具等,豐富了開發場景。
為了加速系統對復雜或計算代價昂貴的查詢結果的訪問,我們引入Redis 高速緩存系統。通過定義明確的緩存策略,確定哪些數據需要被緩存,以及設置合適的緩存失效時間和更新策略,系統可以實現快速的數據訪問。此外,數據預熱和分布式緩存將用于降低查詢延遲和支持高并發讀取請求。對于采集光伏設備實時數據,采用key-value 方式存儲,存儲方案如圖3 所示。

圖3 key-value 方式存儲
根據Redis 的規則,一個集群只能有16384 個槽,編號0-16383(0-2^14-1)。這些槽會分配給集群中的所有主節點,分配策略按照平均分配的方式。光伏設備采集點的唯一id 采用int 類型表示,當需要在Redis集群中存儲成一個key-value 時,redis 先對id 使用crc16 算法算出一個結果,然后把結果對16384 求余數,這樣每個id 都會對應一個編號在0-16383 之間的哈希槽,也就是映射到某個節點上。
Web 組態構架前端使用vue、element、canvas、svg、websocket、mqtt、echart 等開源生態組件,基于node、webpack4 環境編譯構建。Vue.js 具有雙向數據綁定、組件化開發和易于學習的特點。Element UI 作為UI組件庫,以提供現成的UI 元素,如表格、表單、對話框等,以便用戶可以輕松地與系統交互。此外,本文利用HTML5 的Canvas 和SVG 技術來實現圖形化控制回路的設計,允許用戶以拖放元素的方式構建和配置電路。集成了ECharts 圖表庫,以創建交互式圖表和可視化元素,幫助用戶更好地理解光伏發電數據。實施單點登錄和簡化認證機制,以提高系統的安全性和用戶體驗。后端采用springcloud、shiro、jwt、websocket、mysql生態架構體系。第三方業務系統按組態提供的標準接口規范進行對接,提供單點登錄及簡化認證兩種方式。
本文設計實現了一個交互式圖形界面,允許用戶創建和配置電路。通過Canvas 和SVG 技術,用戶可以從元素庫中選擇設備和組件,然后將它們拖放到頁面上。實時編輯功能允許用戶添加、刪除和連接元素,以便他們可以實時調整電路的配置。這種圖形化控制回路設計使用戶能夠以直觀的方式管理光伏發電設備。
界面分為四個區域:(1) 工具欄區域:在畫面頂部,支持新建、導入(多種格式)、導出(多種格式)、添加構件(構件、相機、燈光)、保存、發布、刪除、清空歷史、復制、移動等功能;(2) 圖元組件:在畫面左邊區域,包括光伏、電力系統常用的圖元;(3) 畫圖區域:在畫面中間區域,通過托拉拽的方式根據圖元組件進行構圖,實現監控畫面的編輯構建功能;(4) 畫布屬性區域:在畫面的右邊區域,支持編輯畫布的屬性、通信接口屬性配置、圖元和點點、設置圖元動畫等功能。
采集到的數據首先進入采集和清洗系統,以從光伏監控設備實時獲取準確的數據,并在預處理階段處理缺失值和異常數據。采用Hadoop HDFS 分布式數據存儲,并使用適當的數據分區和索引策略,以提高數據檢索性能。利用機器學習、深度學習和統計分析技術,構建一個多功能的模型庫,內含各種數據智能分析模型,覆蓋了故障預測、組件衰減、逆變器轉換效率等關鍵領域。
智能分析流程包括:(1) 數據收集和預處理,獲取光伏系統實時數據,包括電流、電壓、溫度、輻照度等,進行異常值處理和數據歸一化。(2) 特征工程,提取與故障、衰減和逆變器效率相關的特征。(3) 模型選擇,構建和定制不同需求的模型,考慮精度與簡單性。(4) 模型訓練和調整,使用歷史數據進行訓練和性能評估。(5) 故障預測,建立模糊規則檢測不同故障類型。(6) 組件衰減檢測,使用模糊神經網絡追蹤性能衰減趨勢。(7) 逆變器效率提高,根據數據預測最佳參數,實時調整逆變器。(8) 實時監測和報警,集成模型進行問題檢測和警報通知。(9) 數據可視化和報告,提供儀表板和自動生成報告,支持決策制定。
我們搭建了分布式光伏智能監控實驗平臺,如圖4 所示,該平臺通過規約采集模塊實現對光伏逆變器、匯流箱、點表等設備的數據采集,通過實時監視模塊實現對采集數據的實時監控和告警推送,通過大數據分析實現逆變器衰減預警和光伏發電異常告警等高級功能。為用戶提高了發電效率和減少了人工成本,取得了顯著效果。

圖4 分布式光伏智能監控實驗平臺
傳統分布式光伏監控系統在部署和云化方面存在問題。本文引入前后端分離架構、分布式數據存儲與采集技術,以及領先的互聯網組件和大數據分析技術,提出了一個基于Web 的分布式光伏智能監控系統。經過廣泛實驗驗證,該系統取得了較好的效果,為其他領域的分布式監控系統提供了可行的借鑒經驗。