程敏敏,景應(yīng)剛,張才科,丁紹潔
(中核武漢核電運(yùn)行技術(shù)股份有限公司 仿真中心,湖北 武漢 430223)
核電站三廢處理工藝(KSN)分布式控制系統(tǒng)(DCS)主要是對(duì)核電站硼回收系統(tǒng)、廢液處理系統(tǒng)、廢氣處理系統(tǒng)、固體廢物處理系統(tǒng)等進(jìn)行監(jiān)控[1]。通過DCS系統(tǒng),雖然使機(jī)組高度自動(dòng)化,但同時(shí)又使運(yùn)行人員接觸設(shè)備的機(jī)會(huì)大為減少,從而導(dǎo)致故障難以及時(shí)處理。采用仿真機(jī)培訓(xùn)是解決問題的主要途徑[2]。此外,仿真DCS系統(tǒng)在在其他核電專業(yè)人員的培訓(xùn)教學(xué)和DCS系統(tǒng)調(diào)試與優(yōu)化方面都發(fā)揮著十分重要的作用。
目前,DCS仿真技術(shù)主要分為3類,Simulation-仿真模擬,Stimulation-實(shí)物模擬和Emulation-虛擬模擬[3]。實(shí)物模擬需要采用真實(shí)硬件再現(xiàn)DCS,實(shí)現(xiàn)成本較高而且無法完成的復(fù)雜仿真功能;虛擬模擬是指創(chuàng)建虛擬運(yùn)行環(huán)境直接運(yùn)行DCS組態(tài)文件,它有較高的逼真度,但需要DCS廠商的資料和技術(shù)支持,受到的限制較多;仿真模擬只需設(shè)計(jì)院的設(shè)計(jì)資料,用軟件的方式重建控制和操作界面來模擬DCS的操作、監(jiān)控功能,實(shí)現(xiàn)成本較低,而且能夠完成復(fù)雜的培訓(xùn)仿真教學(xué)應(yīng)用功能,是多年來培訓(xùn)仿真系統(tǒng)通常采用的形式。基于此,嶺澳核電站KSN系統(tǒng)仿真采用仿真模擬技術(shù),其系統(tǒng)軟件結(jié)構(gòu)如圖1所示。
圖1 仿真系統(tǒng)軟件結(jié)構(gòu)
仿真DCS由3大部分構(gòu)成:(1)仿真操作監(jiān)控軟件,用于提供逼真的、功能詳盡的人機(jī)操作監(jiān)控界面;(2)控制邏輯模型,用來提供與真實(shí)DCS相同的控制邏輯算法;(3)工藝模型,用來對(duì)真實(shí)的KSN工藝系統(tǒng)進(jìn)行建模仿真。其中,由于運(yùn)行人員和學(xué)員直接面對(duì)操作監(jiān)控軟件界面,所以操作監(jiān)控軟件仿真的逼真度、靈活性、性能等特性的優(yōu)劣,將直接影響仿真培訓(xùn)的效果,因此操作監(jiān)控軟件的開發(fā)已成為仿真DCS系統(tǒng)開發(fā)的一個(gè)重要組成部分。
傳統(tǒng)仿真DCS操作監(jiān)控軟件的開發(fā)通常會(huì)受到設(shè)計(jì)方法、開發(fā)技術(shù)、特定平臺(tái)等因素的影響,表現(xiàn)出開發(fā)復(fù)雜、軟件功能逼真度和可信度不夠高、不易修改和擴(kuò)展等問題,主要原因是在開發(fā)上沒有很好的圖形用戶接口(GUI)來支持和滿足部件、元素的多樣化展現(xiàn);在控制系統(tǒng)的靜態(tài)畫面繪制和動(dòng)態(tài)效果上沒有很好地結(jié)合組態(tài)工具進(jìn)行實(shí)現(xiàn);在設(shè)計(jì)上,沒有從架構(gòu)的角度進(jìn)行層次化、組件化的設(shè)計(jì)來應(yīng)對(duì)軟件的擴(kuò)展性要求。
Qt是一個(gè)跨平臺(tái)的C++圖形界面庫,由挪威TrollTech公司出品,它的目的是支持應(yīng)用程序用戶界面開發(fā)所需要的一切,主要通過匯集C++類的形式來實(shí)現(xiàn)這一目的。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所有功能。Qt是完全面向?qū)ο蟮模苋菀讛U(kuò)展,并且允許真正的組件編程[4]。
Qt不僅擁有優(yōu)良的跨平臺(tái)特性,而且由于良好封裝機(jī)制使得模塊化程度非常高,可重用性較好。它提供了一種名為signals/slots的完全類型來替代callback,這使得各個(gè)元件之間的協(xié)同工作變得十分簡單;同時(shí),它還提供豐富的API接口,包括多達(dá)250個(gè)以上的C++類,還提供基于模板的collections、serialization、file、IO device類,甚至還包括正則表達(dá)式的處理功能。由于它是一種跨平臺(tái)的GUI工具包,對(duì)編程者隱藏了在處理不同操作系統(tǒng)時(shí)的潛在問題,所以使用Qt進(jìn)行跨平臺(tái)的軟件開發(fā)非常方便快捷。
基于此,為解決傳統(tǒng)仿真操作監(jiān)控軟件面臨的問題,本文從分布式軟件架構(gòu)的角度出發(fā),采用成熟且應(yīng)用廣泛的Qt工具包,結(jié)合組態(tài)技術(shù),對(duì)DCS操作監(jiān)控軟件的仿真技術(shù)進(jìn)行研究。
圖2 仿真操作監(jiān)控層系統(tǒng)結(jié)構(gòu)
仿真操作員站是仿真DCS系統(tǒng)的人機(jī)交互平臺(tái),其上主要運(yùn)行操作監(jiān)控軟件,用來實(shí)時(shí)監(jiān)控和管理核電廠的生產(chǎn)過程。組態(tài)工程師站上安裝有DCS二層仿真組態(tài)工具,配合操作監(jiān)控軟件,用來繪制流程圖靜態(tài)畫面,定義畫面、報(bào)警、趨勢(shì)等功能數(shù)據(jù)的離線配置和控制邏輯,并將其下裝到操作員站。數(shù)據(jù)處理服務(wù)器負(fù)責(zé)接收仿真模型的過程數(shù)據(jù),進(jìn)行相應(yīng)命令處理和內(nèi)部計(jì)算后,將二層系統(tǒng)的數(shù)據(jù)更新,并提交至操作監(jiān)控軟件;同時(shí),將需要存儲(chǔ)的數(shù)據(jù)進(jìn)行采集、整理后,存入歷史數(shù)據(jù)庫中,方便相應(yīng)功能模塊進(jìn)行數(shù)據(jù)的檢索和查詢。
圖2中虛線框內(nèi)為基于RINSIM仿真平臺(tái)構(gòu)建的仿真模型。RINSIM仿真平臺(tái)是由中核武漢核電運(yùn)行技術(shù)股份有限公司(CNPO)研制的面向核電站的一體化仿真平臺(tái),是在國內(nèi)核電領(lǐng)域應(yīng)用最廣的仿真平臺(tái)[5]。在該平臺(tái)上,通過相應(yīng)的建模軟件和工具建立工藝系統(tǒng)模型和控制邏輯模型,對(duì)KSN系統(tǒng)進(jìn)行仿真;通過教練員站上部署的教控臺(tái)軟件,完成仿真模型的運(yùn)行、凍結(jié)、復(fù)位等仿真操作,滿足仿真系統(tǒng)培訓(xùn)、教學(xué)、考試、調(diào)試等多場景的任務(wù)需求。仿真模型上通過部署跨平臺(tái)的模型數(shù)據(jù)通信程序,完成與DCS二層系統(tǒng)的數(shù)據(jù)交換。
圖3 仿真操作監(jiān)控層系統(tǒng)層次結(jié)構(gòu)
在整個(gè)仿真DCS二層系統(tǒng)中,操作員站采用高效、跨平臺(tái)的通信程序與仿真模型相連,仿真操作監(jiān)控軟件與通信程序之間彼此獨(dú)立,仿真模型與模型數(shù)據(jù)通信程序獨(dú)立,根據(jù)統(tǒng)一的IO清單建立數(shù)據(jù)交互規(guī)范,使得操作員站與仿真模型可以分布式、跨平臺(tái)地部署,通過修改配置文件,系統(tǒng)支持一對(duì)多、多對(duì)一,以及多對(duì)多地在異構(gòu)或同構(gòu)平臺(tái)上構(gòu)建仿真系統(tǒng),實(shí)現(xiàn)系統(tǒng)的彈性擴(kuò)展。通過組態(tài)工程師站上的組態(tài)工具,使得仿真系統(tǒng)的靜態(tài)部件和動(dòng)態(tài)數(shù)據(jù)分離,運(yùn)行平臺(tái)和數(shù)據(jù)平臺(tái)獨(dú)立;數(shù)據(jù)服務(wù)器上部署的內(nèi)部計(jì)算組件、命令處理組件、存儲(chǔ)服務(wù)組件及數(shù)據(jù)獲取組件,使操作監(jiān)控軟件不需要關(guān)心與外部模塊的功能交互和數(shù)據(jù)的邏輯處理,只要按需進(jìn)行數(shù)據(jù)的更新即可。組件化的設(shè)計(jì)及組態(tài)工具的配合大大減少了系統(tǒng)和軟件間耦合,從而降低了軟件開發(fā)的難度和編碼規(guī)模。
仿真DCS系統(tǒng)選用分布式架構(gòu)設(shè)計(jì),二層系統(tǒng)與仿真模型通過標(biāo)準(zhǔn)TCP/IP協(xié)議按照規(guī)定數(shù)據(jù)格式進(jìn)行通信,支持跨平臺(tái)的通信,操作員站可隨系統(tǒng)需求進(jìn)行配置,方便系統(tǒng)橫向擴(kuò)展。軟件采用組件化設(shè)計(jì)思想,以跨平臺(tái)的C++圖形用戶界面Qt工具包為基礎(chǔ),結(jié)合圖形化組態(tài)技術(shù)進(jìn)行業(yè)務(wù)功能的設(shè)計(jì)開發(fā),可在不同操作系統(tǒng)上運(yùn)行。軟件設(shè)計(jì)將操作監(jiān)控軟件的顯示邏輯、業(yè)務(wù)邏輯和數(shù)據(jù)模型分離,形成相互獨(dú)立的層次關(guān)系,這種分層結(jié)構(gòu)中各領(lǐng)域職責(zé)更加具體,邏輯更加分明,層級(jí)之間通過標(biāo)準(zhǔn)的接口相互通信,不僅便于系統(tǒng)的擴(kuò)展和升級(jí),而且具有高內(nèi)聚、低耦合等優(yōu)良軟件特性,系統(tǒng)層次結(jié)構(gòu)如圖3所示。
仿真DCS二層系統(tǒng)的軟件層次結(jié)構(gòu)分為4層,其中顯示層和數(shù)據(jù)通信層運(yùn)行于操作員站中,數(shù)據(jù)處理層和數(shù)據(jù)存儲(chǔ)層運(yùn)行在數(shù)據(jù)處理服務(wù)器中。顯示層上的操作監(jiān)控軟件作為人機(jī)接口界面,顯示各功能模塊的界面,接收操作員的操作指令,并根據(jù)指令進(jìn)行預(yù)期的結(jié)果展示。數(shù)據(jù)通信層主要用于操作員站和下層系統(tǒng)之間的指令和數(shù)據(jù)的中轉(zhuǎn),向下傳遞操作指令,并向上拉取結(jié)果值,它使軟件之間耦合性降低,擴(kuò)展性增強(qiáng)。數(shù)據(jù)處理層一方面與仿真模型交互,通過內(nèi)部計(jì)算程序,對(duì)DCS二層的相關(guān)內(nèi)部邏輯進(jìn)行計(jì)算,同時(shí),也會(huì)接收操作監(jiān)控軟件的指令,完成相應(yīng)的命令解析與處理,并將計(jì)算結(jié)果反饋至實(shí)時(shí)數(shù)據(jù)庫;另一方面會(huì)通過存儲(chǔ)服務(wù)將需要進(jìn)行存儲(chǔ)的數(shù)據(jù)按序存入歷史數(shù)據(jù)庫,供操作監(jiān)控軟件進(jìn)行歷史數(shù)據(jù)的檢索和查詢。數(shù)據(jù)存儲(chǔ)層則用于數(shù)據(jù)的持久保存,包括歷史數(shù)據(jù)庫和實(shí)時(shí)數(shù)據(jù)庫的建立和維護(hù)。
為了更好地闡述KSN仿真系統(tǒng)操作監(jiān)控軟件的組件化、層次化設(shè)計(jì),以及Qt工具包的實(shí)際軟件設(shè)計(jì)開發(fā)中的易用、低耦合、高內(nèi)聚等特性,下面將從軟件流程圖、報(bào)警、趨勢(shì)、日志等主要模塊的設(shè)計(jì)和實(shí)現(xiàn)上分別進(jìn)行詳細(xì)描述。
工藝流程圖(MIMIC圖)模塊通過讀取實(shí)時(shí)設(shè)備數(shù)據(jù),解析圖形組態(tài)工具生成的流程圖文件,結(jié)合動(dòng)態(tài)顯示邏輯/腳本,使流程圖產(chǎn)生動(dòng)態(tài)的顯示效果, MIMIC圖的仿真運(yùn)行流程如圖4所示。
圖4 MIMIC圖仿真運(yùn)行流程
主面板和顯示界面采用Qt來構(gòu)建開發(fā),其中,界面布局設(shè)計(jì)可通過Qt 提供的Designer設(shè)計(jì)工具采用圖形化拖動(dòng)部件的方式來完成,非常方便快捷。MIMIC圖處理模塊加載組態(tài)工具生成的圖形文件,解析文件內(nèi)容,建立相應(yīng)的各種對(duì)象結(jié)構(gòu)關(guān)系,通過Qt豐富的GUI類來進(jìn)行對(duì)象的描述,并采用鏈表關(guān)系來建立對(duì)象的樹型數(shù)據(jù)結(jié)構(gòu)。MIMIC圖處理模塊按這些數(shù)據(jù)結(jié)構(gòu)來遍歷所有窗口、數(shù)據(jù)、面板等對(duì)象進(jìn)行顯示,加載相關(guān)的腳本和事件,在畫面顯示周期內(nèi)同步執(zhí)行,從而完成逼真的流程圖畫面顯示和各種動(dòng)態(tài)仿真效果,再現(xiàn)工藝流程圖的運(yùn)行場景。
操作監(jiān)控軟件的報(bào)警界面會(huì)根據(jù)報(bào)警服務(wù)處理的報(bào)警緩沖區(qū)數(shù)據(jù),用列表的方式顯示不同狀態(tài)、不同級(jí)別、不同類型的報(bào)警信息,并在接受操作員的報(bào)警處理動(dòng)作后,將這些處理結(jié)果顯示在報(bào)警界面中。報(bào)警界面采用模型-視圖-控制(MVC)模式,將視圖與數(shù)據(jù)分開,模型負(fù)責(zé)管理數(shù)據(jù),視圖負(fù)責(zé)界面顯示設(shè)計(jì),控制器用于對(duì)部件的顯示和編輯提供精細(xì)控制[6]。通過MVC模式,使報(bào)警界面的開發(fā)和修改變得非常方便和簡潔。根據(jù)KSN系統(tǒng)的特點(diǎn),操作監(jiān)控軟件的報(bào)警分為界面顯示、報(bào)警操作、數(shù)據(jù)服務(wù)處理、發(fā)送信息、響應(yīng)操作等部分,報(bào)警的顯示和處理流程如圖5所示。
營養(yǎng)過剩是肥胖發(fā)生最主要的誘因,肥胖不僅可以造成學(xué)生各種代謝障礙,嚴(yán)重的還會(huì)增加患糖尿病、高血壓、心腦血管疾病、痛風(fēng)等的風(fēng)險(xiǎn)[3];營養(yǎng)過剩也是導(dǎo)致齲齒發(fā)生的重要因素,高蛋白、高熱量食物在口腔積存,會(huì)增加其齲齒發(fā)生的幾率;營養(yǎng)過剩的學(xué)生容易出現(xiàn)一些心理問題,肥胖人群經(jīng)常受到身邊人的嘲笑,這樣會(huì)使得他們出現(xiàn)自卑、自閉的現(xiàn)象。
圖5 報(bào)警顯示和處理流程
報(bào)警采用定周期輪詢報(bào)警點(diǎn)狀態(tài)的方式,當(dāng)一個(gè)報(bào)警狀態(tài)改變時(shí),將此報(bào)警狀態(tài)主動(dòng)發(fā)送到報(bào)警顯示緩沖區(qū)中,數(shù)據(jù)模型進(jìn)行刷新后,控制器則通知視圖進(jìn)行更新界面顯示。當(dāng)操作員進(jìn)行報(bào)警的操作(確認(rèn)、頁確認(rèn)、報(bào)警儲(chǔ)存)后,報(bào)警命令處理服務(wù)會(huì)進(jìn)行相應(yīng)的命令解析處理,然后將結(jié)果傳送至報(bào)警緩沖區(qū),同樣也會(huì)通過MVC模式將處理結(jié)果更新到顯示界面,完成報(bào)警顯示和操作的仿真運(yùn)行。
趨勢(shì)功能用來顯示趨勢(shì)變量組中的模擬量和布爾量的趨勢(shì),按顯示模式可以分為數(shù)字模式和曲線模式,數(shù)字模式按時(shí)間間隔以數(shù)字顯示變量值,曲線模式以曲線圖形方式反映變量值。
趨勢(shì)功能主要涉及兩個(gè)方面的關(guān)鍵技術(shù),一是二維圖形的實(shí)時(shí)、高效繪制,二是歷史數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)查詢獲取。采用基于Qt工具包中QPainter類的二維圖形引擎,可在二維畫面上顯示大量的、輕量級(jí)的、可與用戶交互的、任意形狀的項(xiàng),通過QGraphicView、QGraphicsScene和QGraphicsItem類引入了一個(gè)全新的“圖形視圖”接口[6]。操作監(jiān)控軟件的趨勢(shì)模塊采用此二維圖形引擎,實(shí)現(xiàn)趨勢(shì)跟蹤模式和歷史模式下變量數(shù)值趨勢(shì)圖形的高效、快速繪制,并提供仿真的圖形趨勢(shì)界面操作,如放大、縮小、增粗顯示、位移等。數(shù)據(jù)處理服務(wù)器上的數(shù)據(jù)存儲(chǔ)服務(wù)提供對(duì)趨勢(shì)數(shù)據(jù)的歷史數(shù)據(jù)存儲(chǔ),提供對(duì)所有數(shù)據(jù)進(jìn)行檢索和獲取的接口。存儲(chǔ)服務(wù)通過數(shù)據(jù)庫操作接口將變量點(diǎn)的值存儲(chǔ)到歷史數(shù)據(jù)庫中,并提供查詢和操作接口。存儲(chǔ)服務(wù)使用垂直劃分的方式來分隔系統(tǒng)數(shù)據(jù)容量,采用讀寫分離、數(shù)據(jù)壓縮及聚合緩存等技術(shù),減少數(shù)據(jù)庫的讀寫次數(shù),提高數(shù)據(jù)獲取的速度,保證數(shù)據(jù)存儲(chǔ)容量,保障趨勢(shì)的仿真運(yùn)行及顯示。
日志功能給操作員提供系統(tǒng)檢測(cè)到的實(shí)時(shí)或者歷史日志信息的顯示,其日志內(nèi)容包括設(shè)備狀態(tài)日志、操作記錄日志、登錄日志等KSN系統(tǒng)需要記錄和查詢的系統(tǒng)信息,并按事件發(fā)生的時(shí)序存放。每個(gè)事件對(duì)應(yīng)一條消息記錄,布爾量的狀態(tài)改變,模擬量的閾值超限、超量程,操縱員動(dòng)作、報(bào)警監(jiān)視等都會(huì)產(chǎn)生日志。
為了解決日志的存儲(chǔ)容量問題,日志設(shè)計(jì)采用文件數(shù)據(jù)庫存儲(chǔ)記錄并進(jìn)行水平劃分來增強(qiáng)擴(kuò)展的靈活性,并通過Qt的文件監(jiān)視器(QFileSystemWatcher)監(jiān)測(cè)日志記錄文件的變化并利用觀察者模式實(shí)時(shí)通知模塊加載更新,從而提高日志的讀取效率,完成了日志記錄與展示的仿真。
本文從實(shí)現(xiàn)的角度,結(jié)合KSN系統(tǒng)仿真的要求,對(duì)KSN系統(tǒng)仿真操作監(jiān)控軟件的構(gòu)建方法和過程進(jìn)行了梳理,并對(duì)工藝流程圖、報(bào)警、趨勢(shì)、日志等重要功能模塊的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行了闡述。該系統(tǒng)中的軟件采用組件化的思想和層次化結(jié)構(gòu)方式進(jìn)行設(shè)計(jì),使用Qt工具包、圖形化組態(tài)技術(shù)來開發(fā),使得軟件具有高內(nèi)聚、低耦合等優(yōu)良軟件特性,不僅可以跨平臺(tái)運(yùn)行,而且可復(fù)用性和可維護(hù)性大大提高,軟件的人機(jī)界面逼真度高,開發(fā)周期也大大縮短。同時(shí),結(jié)合獨(dú)立的跨平臺(tái)網(wǎng)絡(luò)通信程序,二層仿真系統(tǒng)可以很靈活地與仿真模型進(jìn)行分布式部署以及彈性擴(kuò)展,極大地滿足了KSN仿真系統(tǒng)的培訓(xùn)和教學(xué)需求。目前根據(jù)本文設(shè)計(jì)實(shí)現(xiàn)的KSN仿真系統(tǒng)操作監(jiān)控軟件已在嶺澳KSN仿真系統(tǒng)項(xiàng)目中得到成功應(yīng)用,為KSN仿真系統(tǒng)
提供了一個(gè)高逼真度、運(yùn)行穩(wěn)定、配置靈活的人機(jī)界面環(huán)境,為核電站KSN系統(tǒng)的培訓(xùn)、教學(xué)提供了有利的支持。
[1] 郭紹輝,陳亮,徐海斌,等. 核電站KSN與第三方系統(tǒng)通信設(shè)計(jì)及應(yīng)用[J].中國儀器儀表,2016(1): 28-33.
[2] 孫偉,冷杉,潘福明,等. TXP系統(tǒng)虛擬OT功能軟件開發(fā)[J].電力自動(dòng)化設(shè)備,2006,26(11):75-78.
[3] 曲鳴,張玉峰,劉純. 核電廠DCS仿真與設(shè)計(jì)驗(yàn)證[J].中國核科學(xué)技術(shù)進(jìn)展報(bào)告,2009,11(1):769-777.
[4] Xteam(中國)軟件技術(shù)有限公司. Qt程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2002.
[5] 侯雪燕,劉偉,李青,等. 基于RINSIM平臺(tái)的核電站模擬機(jī)DCS一層仿真[C].全國仿真技術(shù)學(xué)術(shù)會(huì)議論文集,2015.
[6] BLANCHETTE J,SUMMERFIELD M. C++ GUI Programming with Qt 4,Second Edition[M]. 北京:電子工業(yè)出版社,2008.