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