張昭輝,周 文,蔣學俊,后 接
(1.中國科學院上海應用物理研究所,上海 201800;2.中國科學院大學,北京 100049)
核能憑借高能量密度、潔凈低碳等優勢成為新能源中的研究熱點[1]。而在核工業系統的發展中,數字化監測系統可以實現對核反應堆多個關鍵參數的實時監測,并快速識別異常情況,實現風險預警和事故防范,保證系統安全運行[2]。通過數字技術和互聯網技術實現全流程的數據采集、通信、分析和展示[3],實現對溫度、壓力、流量等多個參數的精確測量和控制,從而建立完善的風險預警系統,提高核電站的安全性和可靠性[4]。另外,數字化監測管理可以提升核工業的信息化水平,促進核工業的數字化轉型和發展。因此,在核工業監控系統的發展中,數字化實時監測管理已經成為必不可少的一部分[5-8]。
國內外眾多知名的科研機構將實時監測系統應用到核能領域。美國國家再生能源實驗室NREL 開發的Pump and Compressor Performance Monitoring 系 統,簡 稱PumpCMP。它用于監測實驗室里各種泵和壓縮機的性能變化,來預防故障和優化設備運維,能監測多種參數,采用在線監測和離線診斷相結合,實時檢查設備性能變化,定期深入分析故障模式。但是它的系統復雜,部署成本高,軟硬件均需定制化開發,缺乏通用性和開源性,移植度不高。日本東芝公司(Toshiba Corporation)開發了一種名為“PumpVision”的實時監測系統,可以用于監測核電站中的泵設備參數,并及時發現任何異常情況。該系統實現了常見監測功能,實現所有過程點監測,具有較高的通用性,但是可拓展性不如web 開發形式的數字化監測系統,并且不能直接實現多終端訪問。
由此可見,開發一個數字化監測系統,可以提高核電站等重大設施的安全性,提升設備的效率和可持續性,保證數據的準確性和可靠性。本文針對熔鹽堆泵設備的實時數據數字化監測問題,在國內外現有研究基礎上[9,10],設計并實現了一個基于EPICS 和Python 的實時數據數字化監測系統。該系統實現了數據采集,可視化展示,模型訓練部署等功能。實驗結果表明,該系統能夠有效地監測設備的運行狀態,有助于提高設備的可靠性和安全性。
為保障熔鹽堆泵設備的正常運行,需要對泵設備的控制信號進行監控。系統需要與實驗物理及工業控制系統(Experiment Physics and Industrial Control System,EPICS)集成,獲取實時監測數據,如溫度、壓力、流量、電壓、電流等數據,并將其存儲到數據庫中。
系統需要提供可視化展示界面,以圖表等形式直觀地展示實時監測數據。基于離線和在線的數據訓練模型,提供數據分析功能,實現識別和分析實時數據,并實現實時警報和通知功能。當監測數據超出預設閾值時,可以通過郵件等方式發送警報和通知給相關人員。
系統也應具有良好的可擴展性,可以部署不同的監測模型,可以方便地添加新的監測設備和數據源,并支持不同的數據格式和協議。
數據采集模塊采用EPICS 框架實現,包括EPICS IOC、Channel Access Server、數據采集程序和數據存儲組件。EPICS IOC 負責與設備進行通信,并采集設備的監測數據;Channel Access Server 提供EPICS IOC 和客戶端之間的通信服務,使客戶端可以通過網絡訪問EPICS IOC 并獲取監測數據;數據采集程序負責與Channel Access Server 進行通信,獲取并處理設備的監測數據;數據存儲組件負責將采集到的監測數據存儲到數據庫中,以便后續分析和診斷。
數據采集模塊采用EPICS 框架實現,包括EPICS IOC、Channel Access Server、數據采集程序和數據存儲組件。
本系統以MVC 模式的思想設計,以提高模塊化程度和代碼可維護性。MVC 架構包括模型(Model)、視圖(View)和控制器(Controller)3 個部分。系統采用瀏覽器/服務器架構這類分布式系統架構,支持操作員通過不同終端訪問,例如不同瀏覽器、手機端和平板等。以下是詳細說明和系統架構設計圖。
1)Model(模型層):負責處理監測數據的生成。采集到的監測數據由模型層進行處理和分析,生成處理結果;借助scikit-learn、Pandas 等庫完成數據處理和模型訓練。

圖1 EPICS架構Fig.1 EPICS Architecture

圖2 MVC架構Fig.2 MVC Architecture
2)View(視圖層):負責渲染前端頁面并展示處理結果。使用HTML、CSS 和JavaScript 等技術實現,通過echarts 框架以折線圖和雷達圖等形式展示實時監測數據的動態更新。
3)Controller(控制器層):負責處理前端頁面的請求和響應,調用模型層進行數據處理和分析;采用Django 路由層將前端頁面的請求映射到相應的視圖函數上,前端頁面使用Ajax 技術和WebSocket 協議與后端服務進行數據交互。
此系統實現了MVC 模式,同時使用瀏覽器/服務器架構進行設計,由前端負責界面,服務器端負責業務邏輯和模型運算。在技術路線上數據采集模塊和服務端開發采用EPICS 和Django 框架實現,前端頁面使用ECharts 和HTML、CSS、JavaScript 等技術,并運用numpy、lightgbm等進行數據處理和模型訓練。

圖3 技術方法Fig.3 Technical methods
數據可視化是將采集的數據進行整理,以圖形及圖表形式集中展示,使操作員能夠直觀、清晰地理解和分析數據的關系、趨勢和規律,并結合數據分析等技術從而發現其中未知信息的過程。
數據采集使用Python 的pyepics 庫實現,其中使用caget 函數從EPICS 中獲取監測數據。caget 函數可以指定EPICS 中的PV 名稱,獲取該PV 的監測數據,并以Python對象的形式返回。后端服務器使用Python 的channels 庫實現WebSocket 協議,與前端頁面建立WebSocket 連接。
本系統需要實時監控某些數據,如泵設備的實時運行狀況,并對數據進行可視化展示和進行分析和處理,因此采用了觀察者模式。觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化時,會通知所有的觀察者對象,使它們能夠自動更新自己。實時監控設備數據,如流量、溫度、壓力等,這些數據作為觀察者模式的主題Subject,而通過多種方式展示監控數據的展示方式作為觀察者Observer。Subject 的數據變化需要調用notifyObservers()方法實時更新到各個Observer,采用觀察者模式可以實現主題與觀察者之間的實時數據同步。Subject 作為數據源,包含更新數據的方法和注冊/移除觀察者的方法。Observer 作為抽象觀察者,定義更新方法。本系統中有多個展示方式,例如Echarts 圖表、數字-文本等作為具體觀察者,繼承Observer,實現update()方法以更新數據可視化。其關系如圖4 所示。

圖4 觀察者模式Fig.4 Observer mode
本文實現的實時監測可視化主要關注了以下類型圖元:
1)數字-文本形式
服務端使用WebSocket.send()向前端傳遞數據時,采用不同的標志位進行數據區分。前端使用JavaScript 將監測數據綁定到對應的元素上,并實現DOM 操作,將數據動態更新到頁面上。使用jQuery 的.html()方法獲取輸出區域當前的HTML 內容,采用字符串拼接的方式添加新內容,并使用jQuery 的.scrollTop()方法,將輸出區域的滾動條滾動到其最大高度。
2)表格形式
在篩選離線數據時,前端將篩選條件通過POST 形式傳遞到服務端之后,Django 以使用其內置的ORM(對象關系映射)來查詢數據庫。用JavaScript 對數據進行解析,并分頁。分頁功能通過設置基于偏移量的分頁(OFFSET)和基于游標的分頁(CURSOR)來實現,提高瀏覽效率。
3)統計圖
雷達圖與折線圖等都基于數據可視化庫ECharts 實現。使用Echarts 提供的API 配置ECharts 基本參數,之后將運行中新的數據添加到原有數據中,并使用chart.setOption()方法更新雷達圖的數據,同時使用JavaScript 的setInterval()方法來實現定時器,并實現圖表的自動刷新。
本系統需要實時獲取數據,并進行分析與存儲。數據分為兩類,一類是泵設備的實時運行原始數據,如溫度、壓力、流量、電壓、電流等,另一類是模型的輸出結果,如預測的故障類型信息等。數據庫基于日期的分區保存,通過限制分區的數量上限,來放棄舊數據,釋放物理空間。
在實時監測數據的寫入方法上,為了解決數據丟失問題,本系統采用了Timeloop 定時任務框架。該輕量級的、跨平臺的定時任務框架可以方便地實現任務的定時執行,真正實現數據定時讀取。通過將單例模式應用到熔鹽泵設備的數字化實時監測系統中,實現數據寫入功能全局唯一,并提供一個全局的訪問點,實現節約內存,統一管理,提高代碼復用性等諸多優點,有效地提高系統的性能和穩定性。
本系統實現了數據的定時更新和持久化存儲,確保數據的完整性和可靠性,方便后續數據分析和決策。
訓練集篩選使用HTML 表單和JavaScript 來實現。通過JavaScript 將操作員輸入的篩選條件發送到服務器端,以便篩選出符合條件的訓練數據。服務端根據數據庫表名來創建對應的動態模型類,之后依據篩選條件獲取數據。
模型訓練采用離線和在線結合的方式實現。選擇訓練集后,模型訓練在相對獨立的環境中進行。在訓練過程中,實時將訓練過程中的輸出與結果以文字和折線圖的形式展現給操作員。
使用各種機器學習或深度學習算法來對監測數據進行建模和訓練,將模型封裝為一個API 或庫文件,在后端服務器中進行部署和調用。當操作員發起處理請求時,后端服務器會調用模型API 或庫文件,對采集到的實時監測數據進行智能分析,并將結果顯示在前端頁面上。
保存模型時,應用程序會對模型數據進行序列化,以便于后續的存儲和加載。同時,操作員也可以指定將某個模型布置到主頁中,方便數據的實時監測。如圖5 所示,模型管理模塊和數據管理模塊構成并豐富了系統最終的數字化監測功能。

圖5 系統功能總體圖Fig.5 Overall system function diagram
數據可視化監測模塊包含不同的子模塊,包含基本信息顯示,當前運行模型的監測閾值和實時數據統計量。同時,閾值和實時統計量也以折線統計圖展示,操作員可查看歷史數據情況。折線圖下方為故障數據輸出,系統針對出現特定報警級別的情況采用不同的報警方式。操作員也可從雷達圖和數字文本中獲得實時詳細數據。
模型可視化模塊包括3 個主要模塊:模型選擇、參數和訓練數據選擇,以及訓練過程和結果展示。訓練過程監測和訓練結果展示子模塊采用文本與折線統計圖結合的方式為操作員提供實時可視化反饋,使操作員更容易進行調整。操作員可根據評估訓練結果來決策是否保存模型或設置主頁。
本系統為設備的運行和維護提供了重要的支持,通過實時監測數據,操作員可及時發現設備的異常情況并采取措施。同時,實時數據以圖表的形式展示,可以更加直觀地反映設備的運行狀態和趨勢,有助于對設備的當前狀態進行評估和優化。模型訓練模塊實現了訓練數據與參數設置,并提供了一種人機交互友好的方式幫助操作員來管理和訓練不同的模型。
本研究設計并實現了一個基于熔鹽堆泵設備的實時數字化實時監測系統。系統利用PyEpics 獲取設備多項實時數據,并運用WebSocket 技術實現前后端通信與數據傳遞。前端采用HTML、CSS 和JavaScript 技術,通過ECharts 框架渲染實時數據折線圖,使操作員直觀了解設備運行狀態和趨勢;后端使用Django 框架進行數據處理和邏輯功能實現。此外,系統采用單例模式記錄監測數據,確保數據的一致性與準確性。
為了實現監測數據的監聽與頁面更新,本系統應用觀察者模式。當監測數據發生變化時,觀察者會收到通知并自動更新頁面內容。同時,系統提供可視化模型訓練功能,允許操作員直接在頁面上設置各類參數,訓練與部署模型。隨著研究的進一步進行,系統將集成多種模型,實現各類數字化分析功能,如故障診斷等,及時發現異常并采取相應措施。
綜上所述,該實時數字化實時監測系統為監測設備運行狀態提供了有效方法,有助于提高設備的可靠性和安全性,并且該系統具備很高的可拓展性,今后將繼續完善系統功能與性能,更好地服務實際生產和運行。