張昭輝,周 文,蔣學俊,后 接
(1.中國科學院上海應用物理研究所,上海 201800;2.中國科學院大學,北京 100049)
核能憑借高能量密度、潔凈低碳等優(yōu)勢成為新能源中的研究熱點[1]。而在核工業(yè)系統(tǒng)的發(fā)展中,數(shù)字化監(jiān)測系統(tǒng)可以實現(xiàn)對核反應堆多個關鍵參數(shù)的實時監(jiān)測,并快速識別異常情況,實現(xiàn)風險預警和事故防范,保證系統(tǒng)安全運行[2]。通過數(shù)字技術和互聯(lián)網(wǎng)技術實現(xiàn)全流程的數(shù)據(jù)采集、通信、分析和展示[3],實現(xiàn)對溫度、壓力、流量等多個參數(shù)的精確測量和控制,從而建立完善的風險預警系統(tǒng),提高核電站的安全性和可靠性[4]。另外,數(shù)字化監(jiān)測管理可以提升核工業(yè)的信息化水平,促進核工業(yè)的數(shù)字化轉型和發(fā)展。因此,在核工業(yè)監(jiān)控系統(tǒng)的發(fā)展中,數(shù)字化實時監(jiān)測管理已經(jīng)成為必不可少的一部分[5-8]。
國內(nèi)外眾多知名的科研機構將實時監(jiān)測系統(tǒng)應用到核能領域。美國國家再生能源實驗室NREL 開發(fā)的Pump and Compressor Performance Monitoring 系 統(tǒng),簡 稱PumpCMP。它用于監(jiān)測實驗室里各種泵和壓縮機的性能變化,來預防故障和優(yōu)化設備運維,能監(jiān)測多種參數(shù),采用在線監(jiān)測和離線診斷相結合,實時檢查設備性能變化,定期深入分析故障模式。但是它的系統(tǒng)復雜,部署成本高,軟硬件均需定制化開發(fā),缺乏通用性和開源性,移植度不高。日本東芝公司(Toshiba Corporation)開發(fā)了一種名為“PumpVision”的實時監(jiān)測系統(tǒng),可以用于監(jiān)測核電站中的泵設備參數(shù),并及時發(fā)現(xiàn)任何異常情況。該系統(tǒng)實現(xiàn)了常見監(jiān)測功能,實現(xiàn)所有過程點監(jiān)測,具有較高的通用性,但是可拓展性不如web 開發(fā)形式的數(shù)字化監(jiān)測系統(tǒng),并且不能直接實現(xiàn)多終端訪問。
由此可見,開發(fā)一個數(shù)字化監(jiān)測系統(tǒng),可以提高核電站等重大設施的安全性,提升設備的效率和可持續(xù)性,保證數(shù)據(jù)的準確性和可靠性。本文針對熔鹽堆泵設備的實時數(shù)據(jù)數(shù)字化監(jiān)測問題,在國內(nèi)外現(xiàn)有研究基礎上[9,10],設計并實現(xiàn)了一個基于EPICS 和Python 的實時數(shù)據(jù)數(shù)字化監(jiān)測系統(tǒng)。該系統(tǒng)實現(xiàn)了數(shù)據(jù)采集,可視化展示,模型訓練部署等功能。實驗結果表明,該系統(tǒng)能夠有效地監(jiān)測設備的運行狀態(tài),有助于提高設備的可靠性和安全性。
為保障熔鹽堆泵設備的正常運行,需要對泵設備的控制信號進行監(jiān)控。系統(tǒng)需要與實驗物理及工業(yè)控制系統(tǒng)(Experiment Physics and Industrial Control System,EPICS)集成,獲取實時監(jiān)測數(shù)據(jù),如溫度、壓力、流量、電壓、電流等數(shù)據(jù),并將其存儲到數(shù)據(jù)庫中。
系統(tǒng)需要提供可視化展示界面,以圖表等形式直觀地展示實時監(jiān)測數(shù)據(jù)?;陔x線和在線的數(shù)據(jù)訓練模型,提供數(shù)據(jù)分析功能,實現(xiàn)識別和分析實時數(shù)據(jù),并實現(xiàn)實時警報和通知功能。當監(jiān)測數(shù)據(jù)超出預設閾值時,可以通過郵件等方式發(fā)送警報和通知給相關人員。
系統(tǒng)也應具有良好的可擴展性,可以部署不同的監(jiān)測模型,可以方便地添加新的監(jiān)測設備和數(shù)據(jù)源,并支持不同的數(shù)據(jù)格式和協(xié)議。
數(shù)據(jù)采集模塊采用EPICS 框架實現(xiàn),包括EPICS IOC、Channel Access Server、數(shù)據(jù)采集程序和數(shù)據(jù)存儲組件。EPICS IOC 負責與設備進行通信,并采集設備的監(jiān)測數(shù)據(jù);Channel Access Server 提供EPICS IOC 和客戶端之間的通信服務,使客戶端可以通過網(wǎng)絡訪問EPICS IOC 并獲取監(jiān)測數(shù)據(jù);數(shù)據(jù)采集程序負責與Channel Access Server 進行通信,獲取并處理設備的監(jiān)測數(shù)據(jù);數(shù)據(jù)存儲組件負責將采集到的監(jiān)測數(shù)據(jù)存儲到數(shù)據(jù)庫中,以便后續(xù)分析和診斷。
數(shù)據(jù)采集模塊采用EPICS 框架實現(xiàn),包括EPICS IOC、Channel Access Server、數(shù)據(jù)采集程序和數(shù)據(jù)存儲組件。
本系統(tǒng)以MVC 模式的思想設計,以提高模塊化程度和代碼可維護性。MVC 架構包括模型(Model)、視圖(View)和控制器(Controller)3 個部分。系統(tǒng)采用瀏覽器/服務器架構這類分布式系統(tǒng)架構,支持操作員通過不同終端訪問,例如不同瀏覽器、手機端和平板等。以下是詳細說明和系統(tǒng)架構設計圖。
1)Model(模型層):負責處理監(jiān)測數(shù)據(jù)的生成。采集到的監(jiān)測數(shù)據(jù)由模型層進行處理和分析,生成處理結果;借助scikit-learn、Pandas 等庫完成數(shù)據(jù)處理和模型訓練。
圖1 EPICS架構Fig.1 EPICS Architecture
圖2 MVC架構Fig.2 MVC Architecture
2)View(視圖層):負責渲染前端頁面并展示處理結果。使用HTML、CSS 和JavaScript 等技術實現(xiàn),通過echarts 框架以折線圖和雷達圖等形式展示實時監(jiān)測數(shù)據(jù)的動態(tài)更新。
3)Controller(控制器層):負責處理前端頁面的請求和響應,調用模型層進行數(shù)據(jù)處理和分析;采用Django 路由層將前端頁面的請求映射到相應的視圖函數(shù)上,前端頁面使用Ajax 技術和WebSocket 協(xié)議與后端服務進行數(shù)據(jù)交互。
此系統(tǒng)實現(xiàn)了MVC 模式,同時使用瀏覽器/服務器架構進行設計,由前端負責界面,服務器端負責業(yè)務邏輯和模型運算。在技術路線上數(shù)據(jù)采集模塊和服務端開發(fā)采用EPICS 和Django 框架實現(xiàn),前端頁面使用ECharts 和HTML、CSS、JavaScript 等技術,并運用numpy、lightgbm等進行數(shù)據(jù)處理和模型訓練。
圖3 技術方法Fig.3 Technical methods
數(shù)據(jù)可視化是將采集的數(shù)據(jù)進行整理,以圖形及圖表形式集中展示,使操作員能夠直觀、清晰地理解和分析數(shù)據(jù)的關系、趨勢和規(guī)律,并結合數(shù)據(jù)分析等技術從而發(fā)現(xiàn)其中未知信息的過程。
數(shù)據(jù)采集使用Python 的pyepics 庫實現(xiàn),其中使用caget 函數(shù)從EPICS 中獲取監(jiān)測數(shù)據(jù)。caget 函數(shù)可以指定EPICS 中的PV 名稱,獲取該PV 的監(jiān)測數(shù)據(jù),并以Python對象的形式返回。后端服務器使用Python 的channels 庫實現(xiàn)WebSocket 協(xié)議,與前端頁面建立WebSocket 連接。
本系統(tǒng)需要實時監(jiān)控某些數(shù)據(jù),如泵設備的實時運行狀況,并對數(shù)據(jù)進行可視化展示和進行分析和處理,因此采用了觀察者模式。觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)上發(fā)生變化時,會通知所有的觀察者對象,使它們能夠自動更新自己。實時監(jiān)控設備數(shù)據(jù),如流量、溫度、壓力等,這些數(shù)據(jù)作為觀察者模式的主題Subject,而通過多種方式展示監(jiān)控數(shù)據(jù)的展示方式作為觀察者Observer。Subject 的數(shù)據(jù)變化需要調用notifyObservers()方法實時更新到各個Observer,采用觀察者模式可以實現(xiàn)主題與觀察者之間的實時數(shù)據(jù)同步。Subject 作為數(shù)據(jù)源,包含更新數(shù)據(jù)的方法和注冊/移除觀察者的方法。Observer 作為抽象觀察者,定義更新方法。本系統(tǒng)中有多個展示方式,例如Echarts 圖表、數(shù)字-文本等作為具體觀察者,繼承Observer,實現(xiàn)update()方法以更新數(shù)據(jù)可視化。其關系如圖4 所示。
圖4 觀察者模式Fig.4 Observer mode
本文實現(xiàn)的實時監(jiān)測可視化主要關注了以下類型圖元:
1)數(shù)字-文本形式
服務端使用WebSocket.send()向前端傳遞數(shù)據(jù)時,采用不同的標志位進行數(shù)據(jù)區(qū)分。前端使用JavaScript 將監(jiān)測數(shù)據(jù)綁定到對應的元素上,并實現(xiàn)DOM 操作,將數(shù)據(jù)動態(tài)更新到頁面上。使用jQuery 的.html()方法獲取輸出區(qū)域當前的HTML 內(nèi)容,采用字符串拼接的方式添加新內(nèi)容,并使用jQuery 的.scrollTop()方法,將輸出區(qū)域的滾動條滾動到其最大高度。
2)表格形式
在篩選離線數(shù)據(jù)時,前端將篩選條件通過POST 形式傳遞到服務端之后,Django 以使用其內(nèi)置的ORM(對象關系映射)來查詢數(shù)據(jù)庫。用JavaScript 對數(shù)據(jù)進行解析,并分頁。分頁功能通過設置基于偏移量的分頁(OFFSET)和基于游標的分頁(CURSOR)來實現(xiàn),提高瀏覽效率。
3)統(tǒng)計圖
雷達圖與折線圖等都基于數(shù)據(jù)可視化庫ECharts 實現(xiàn)。使用Echarts 提供的API 配置ECharts 基本參數(shù),之后將運行中新的數(shù)據(jù)添加到原有數(shù)據(jù)中,并使用chart.setOption()方法更新雷達圖的數(shù)據(jù),同時使用JavaScript 的setInterval()方法來實現(xiàn)定時器,并實現(xiàn)圖表的自動刷新。
本系統(tǒng)需要實時獲取數(shù)據(jù),并進行分析與存儲。數(shù)據(jù)分為兩類,一類是泵設備的實時運行原始數(shù)據(jù),如溫度、壓力、流量、電壓、電流等,另一類是模型的輸出結果,如預測的故障類型信息等。數(shù)據(jù)庫基于日期的分區(qū)保存,通過限制分區(qū)的數(shù)量上限,來放棄舊數(shù)據(jù),釋放物理空間。
在實時監(jiān)測數(shù)據(jù)的寫入方法上,為了解決數(shù)據(jù)丟失問題,本系統(tǒng)采用了Timeloop 定時任務框架。該輕量級的、跨平臺的定時任務框架可以方便地實現(xiàn)任務的定時執(zhí)行,真正實現(xiàn)數(shù)據(jù)定時讀取。通過將單例模式應用到熔鹽泵設備的數(shù)字化實時監(jiān)測系統(tǒng)中,實現(xiàn)數(shù)據(jù)寫入功能全局唯一,并提供一個全局的訪問點,實現(xiàn)節(jié)約內(nèi)存,統(tǒng)一管理,提高代碼復用性等諸多優(yōu)點,有效地提高系統(tǒng)的性能和穩(wěn)定性。
本系統(tǒng)實現(xiàn)了數(shù)據(jù)的定時更新和持久化存儲,確保數(shù)據(jù)的完整性和可靠性,方便后續(xù)數(shù)據(jù)分析和決策。
訓練集篩選使用HTML 表單和JavaScript 來實現(xiàn)。通過JavaScript 將操作員輸入的篩選條件發(fā)送到服務器端,以便篩選出符合條件的訓練數(shù)據(jù)。服務端根據(jù)數(shù)據(jù)庫表名來創(chuàng)建對應的動態(tài)模型類,之后依據(jù)篩選條件獲取數(shù)據(jù)。
模型訓練采用離線和在線結合的方式實現(xiàn)。選擇訓練集后,模型訓練在相對獨立的環(huán)境中進行。在訓練過程中,實時將訓練過程中的輸出與結果以文字和折線圖的形式展現(xiàn)給操作員。
使用各種機器學習或深度學習算法來對監(jiān)測數(shù)據(jù)進行建模和訓練,將模型封裝為一個API 或庫文件,在后端服務器中進行部署和調用。當操作員發(fā)起處理請求時,后端服務器會調用模型API 或庫文件,對采集到的實時監(jiān)測數(shù)據(jù)進行智能分析,并將結果顯示在前端頁面上。
保存模型時,應用程序會對模型數(shù)據(jù)進行序列化,以便于后續(xù)的存儲和加載。同時,操作員也可以指定將某個模型布置到主頁中,方便數(shù)據(jù)的實時監(jiān)測。如圖5 所示,模型管理模塊和數(shù)據(jù)管理模塊構成并豐富了系統(tǒng)最終的數(shù)字化監(jiān)測功能。
圖5 系統(tǒng)功能總體圖Fig.5 Overall system function diagram
數(shù)據(jù)可視化監(jiān)測模塊包含不同的子模塊,包含基本信息顯示,當前運行模型的監(jiān)測閾值和實時數(shù)據(jù)統(tǒng)計量。同時,閾值和實時統(tǒng)計量也以折線統(tǒng)計圖展示,操作員可查看歷史數(shù)據(jù)情況。折線圖下方為故障數(shù)據(jù)輸出,系統(tǒng)針對出現(xiàn)特定報警級別的情況采用不同的報警方式。操作員也可從雷達圖和數(shù)字文本中獲得實時詳細數(shù)據(jù)。
模型可視化模塊包括3 個主要模塊:模型選擇、參數(shù)和訓練數(shù)據(jù)選擇,以及訓練過程和結果展示。訓練過程監(jiān)測和訓練結果展示子模塊采用文本與折線統(tǒng)計圖結合的方式為操作員提供實時可視化反饋,使操作員更容易進行調整。操作員可根據(jù)評估訓練結果來決策是否保存模型或設置主頁。
本系統(tǒng)為設備的運行和維護提供了重要的支持,通過實時監(jiān)測數(shù)據(jù),操作員可及時發(fā)現(xiàn)設備的異常情況并采取措施。同時,實時數(shù)據(jù)以圖表的形式展示,可以更加直觀地反映設備的運行狀態(tài)和趨勢,有助于對設備的當前狀態(tài)進行評估和優(yōu)化。模型訓練模塊實現(xiàn)了訓練數(shù)據(jù)與參數(shù)設置,并提供了一種人機交互友好的方式幫助操作員來管理和訓練不同的模型。
本研究設計并實現(xiàn)了一個基于熔鹽堆泵設備的實時數(shù)字化實時監(jiān)測系統(tǒng)。系統(tǒng)利用PyEpics 獲取設備多項實時數(shù)據(jù),并運用WebSocket 技術實現(xiàn)前后端通信與數(shù)據(jù)傳遞。前端采用HTML、CSS 和JavaScript 技術,通過ECharts 框架渲染實時數(shù)據(jù)折線圖,使操作員直觀了解設備運行狀態(tài)和趨勢;后端使用Django 框架進行數(shù)據(jù)處理和邏輯功能實現(xiàn)。此外,系統(tǒng)采用單例模式記錄監(jiān)測數(shù)據(jù),確保數(shù)據(jù)的一致性與準確性。
為了實現(xiàn)監(jiān)測數(shù)據(jù)的監(jiān)聽與頁面更新,本系統(tǒng)應用觀察者模式。當監(jiān)測數(shù)據(jù)發(fā)生變化時,觀察者會收到通知并自動更新頁面內(nèi)容。同時,系統(tǒng)提供可視化模型訓練功能,允許操作員直接在頁面上設置各類參數(shù),訓練與部署模型。隨著研究的進一步進行,系統(tǒng)將集成多種模型,實現(xiàn)各類數(shù)字化分析功能,如故障診斷等,及時發(fā)現(xiàn)異常并采取相應措施。
綜上所述,該實時數(shù)字化實時監(jiān)測系統(tǒng)為監(jiān)測設備運行狀態(tài)提供了有效方法,有助于提高設備的可靠性和安全性,并且該系統(tǒng)具備很高的可拓展性,今后將繼續(xù)完善系統(tǒng)功能與性能,更好地服務實際生產(chǎn)和運行。