程敏敏,景應剛,張才科,丁紹潔
(中核武漢核電運行技術股份有限公司 仿真中心,湖北 武漢 430223)
核電站三廢處理工藝(KSN)分布式控制系統(DCS)主要是對核電站硼回收系統、廢液處理系統、廢氣處理系統、固體廢物處理系統等進行監控[1]。通過DCS系統,雖然使機組高度自動化,但同時又使運行人員接觸設備的機會大為減少,從而導致故障難以及時處理。采用仿真機培訓是解決問題的主要途徑[2]。此外,仿真DCS系統在在其他核電專業人員的培訓教學和DCS系統調試與優化方面都發揮著十分重要的作用。
目前,DCS仿真技術主要分為3類,Simulation-仿真模擬,Stimulation-實物模擬和Emulation-虛擬模擬[3]。實物模擬需要采用真實硬件再現DCS,實現成本較高而且無法完成的復雜仿真功能;虛擬模擬是指創建虛擬運行環境直接運行DCS組態文件,它有較高的逼真度,但需要DCS廠商的資料和技術支持,受到的限制較多;仿真模擬只需設計院的設計資料,用軟件的方式重建控制和操作界面來模擬DCS的操作、監控功能,實現成本較低,而且能夠完成復雜的培訓仿真教學應用功能,是多年來培訓仿真系統通常采用的形式。基于此,嶺澳核電站KSN系統仿真采用仿真模擬技術,其系統軟件結構如圖1所示。

圖1 仿真系統軟件結構
仿真DCS由3大部分構成:(1)仿真操作監控軟件,用于提供逼真的、功能詳盡的人機操作監控界面;(2)控制邏輯模型,用來提供與真實DCS相同的控制邏輯算法;(3)工藝模型,用來對真實的KSN工藝系統進行建模仿真。其中,由于運行人員和學員直接面對操作監控軟件界面,所以操作監控軟件仿真的逼真度、靈活性、性能等特性的優劣,將直接影響仿真培訓的效果,因此操作監控軟件的開發已成為仿真DCS系統開發的一個重要組成部分。
傳統仿真DCS操作監控軟件的開發通常會受到設計方法、開發技術、特定平臺等因素的影響,表現出開發復雜、軟件功能逼真度和可信度不夠高、不易修改和擴展等問題,主要原因是在開發上沒有很好的圖形用戶接口(GUI)來支持和滿足部件、元素的多樣化展現;在控制系統的靜態畫面繪制和動態效果上沒有很好地結合組態工具進行實現;在設計上,沒有從架構的角度進行層次化、組件化的設計來應對軟件的擴展性要求。
Qt是一個跨平臺的C++圖形界面庫,由挪威TrollTech公司出品,它的目的是支持應用程序用戶界面開發所需要的一切,主要通過匯集C++類的形式來實現這一目的。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所有功能。Qt是完全面向對象的,很容易擴展,并且允許真正的組件編程[4]。
Qt不僅擁有優良的跨平臺特性,而且由于良好封裝機制使得模塊化程度非常高,可重用性較好。它提供了一種名為signals/slots的完全類型來替代callback,這使得各個元件之間的協同工作變得十分簡單;同時,它還提供豐富的API接口,包括多達250個以上的C++類,還提供基于模板的collections、serialization、file、IO device類,甚至還包括正則表達式的處理功能。由于它是一種跨平臺的GUI工具包,對編程者隱藏了在處理不同操作系統時的潛在問題,所以使用Qt進行跨平臺的軟件開發非常方便快捷。
基于此,為解決傳統仿真操作監控軟件面臨的問題,本文從分布式軟件架構的角度出發,采用成熟且應用廣泛的Qt工具包,結合組態技術,對DCS操作監控軟件的仿真技術進行研究。

圖2 仿真操作監控層系統結構
仿真操作員站是仿真DCS系統的人機交互平臺,其上主要運行操作監控軟件,用來實時監控和管理核電廠的生產過程。組態工程師站上安裝有DCS二層仿真組態工具,配合操作監控軟件,用來繪制流程圖靜態畫面,定義畫面、報警、趨勢等功能數據的離線配置和控制邏輯,并將其下裝到操作員站。數據處理服務器負責接收仿真模型的過程數據,進行相應命令處理和內部計算后,將二層系統的數據更新,并提交至操作監控軟件;同時,將需要存儲的數據進行采集、整理后,存入歷史數據庫中,方便相應功能模塊進行數據的檢索和查詢。
圖2中虛線框內為基于RINSIM仿真平臺構建的仿真模型。RINSIM仿真平臺是由中核武漢核電運行技術股份有限公司(CNPO)研制的面向核電站的一體化仿真平臺,是在國內核電領域應用最廣的仿真平臺[5]。在該平臺上,通過相應的建模軟件和工具建立工藝系統模型和控制邏輯模型,對KSN系統進行仿真;通過教練員站上部署的教控臺軟件,完成仿真模型的運行、凍結、復位等仿真操作,滿足仿真系統培訓、教學、考試、調試等多場景的任務需求。仿真模型上通過部署跨平臺的模型數據通信程序,完成與DCS二層系統的數據交換。

圖3 仿真操作監控層系統層次結構
在整個仿真DCS二層系統中,操作員站采用高效、跨平臺的通信程序與仿真模型相連,仿真操作監控軟件與通信程序之間彼此獨立,仿真模型與模型數據通信程序獨立,根據統一的IO清單建立數據交互規范,使得操作員站與仿真模型可以分布式、跨平臺地部署,通過修改配置文件,系統支持一對多、多對一,以及多對多地在異構或同構平臺上構建仿真系統,實現系統的彈性擴展。通過組態工程師站上的組態工具,使得仿真系統的靜態部件和動態數據分離,運行平臺和數據平臺獨立;數據服務器上部署的內部計算組件、命令處理組件、存儲服務組件及數據獲取組件,使操作監控軟件不需要關心與外部模塊的功能交互和數據的邏輯處理,只要按需進行數據的更新即可。組件化的設計及組態工具的配合大大減少了系統和軟件間耦合,從而降低了軟件開發的難度和編碼規模。
仿真DCS系統選用分布式架構設計,二層系統與仿真模型通過標準TCP/IP協議按照規定數據格式進行通信,支持跨平臺的通信,操作員站可隨系統需求進行配置,方便系統橫向擴展。軟件采用組件化設計思想,以跨平臺的C++圖形用戶界面Qt工具包為基礎,結合圖形化組態技術進行業務功能的設計開發,可在不同操作系統上運行。軟件設計將操作監控軟件的顯示邏輯、業務邏輯和數據模型分離,形成相互獨立的層次關系,這種分層結構中各領域職責更加具體,邏輯更加分明,層級之間通過標準的接口相互通信,不僅便于系統的擴展和升級,而且具有高內聚、低耦合等優良軟件特性,系統層次結構如圖3所示。
仿真DCS二層系統的軟件層次結構分為4層,其中顯示層和數據通信層運行于操作員站中,數據處理層和數據存儲層運行在數據處理服務器中。顯示層上的操作監控軟件作為人機接口界面,顯示各功能模塊的界面,接收操作員的操作指令,并根據指令進行預期的結果展示。數據通信層主要用于操作員站和下層系統之間的指令和數據的中轉,向下傳遞操作指令,并向上拉取結果值,它使軟件之間耦合性降低,擴展性增強。數據處理層一方面與仿真模型交互,通過內部計算程序,對DCS二層的相關內部邏輯進行計算,同時,也會接收操作監控軟件的指令,完成相應的命令解析與處理,并將計算結果反饋至實時數據庫;另一方面會通過存儲服務將需要進行存儲的數據按序存入歷史數據庫,供操作監控軟件進行歷史數據的檢索和查詢。數據存儲層則用于數據的持久保存,包括歷史數據庫和實時數據庫的建立和維護。
為了更好地闡述KSN仿真系統操作監控軟件的組件化、層次化設計,以及Qt工具包的實際軟件設計開發中的易用、低耦合、高內聚等特性,下面將從軟件流程圖、報警、趨勢、日志等主要模塊的設計和實現上分別進行詳細描述。
工藝流程圖(MIMIC圖)模塊通過讀取實時設備數據,解析圖形組態工具生成的流程圖文件,結合動態顯示邏輯/腳本,使流程圖產生動態的顯示效果, MIMIC圖的仿真運行流程如圖4所示。

圖4 MIMIC圖仿真運行流程
主面板和顯示界面采用Qt來構建開發,其中,界面布局設計可通過Qt 提供的Designer設計工具采用圖形化拖動部件的方式來完成,非常方便快捷。MIMIC圖處理模塊加載組態工具生成的圖形文件,解析文件內容,建立相應的各種對象結構關系,通過Qt豐富的GUI類來進行對象的描述,并采用鏈表關系來建立對象的樹型數據結構。MIMIC圖處理模塊按這些數據結構來遍歷所有窗口、數據、面板等對象進行顯示,加載相關的腳本和事件,在畫面顯示周期內同步執行,從而完成逼真的流程圖畫面顯示和各種動態仿真效果,再現工藝流程圖的運行場景。
操作監控軟件的報警界面會根據報警服務處理的報警緩沖區數據,用列表的方式顯示不同狀態、不同級別、不同類型的報警信息,并在接受操作員的報警處理動作后,將這些處理結果顯示在報警界面中。報警界面采用模型-視圖-控制(MVC)模式,將視圖與數據分開,模型負責管理數據,視圖負責界面顯示設計,控制器用于對部件的顯示和編輯提供精細控制[6]。通過MVC模式,使報警界面的開發和修改變得非常方便和簡潔。根據KSN系統的特點,操作監控軟件的報警分為界面顯示、報警操作、數據服務處理、發送信息、響應操作等部分,報警的顯示和處理流程如圖5所示。
營養過剩是肥胖發生最主要的誘因,肥胖不僅可以造成學生各種代謝障礙,嚴重的還會增加患糖尿病、高血壓、心腦血管疾病、痛風等的風險[3];營養過剩也是導致齲齒發生的重要因素,高蛋白、高熱量食物在口腔積存,會增加其齲齒發生的幾率;營養過剩的學生容易出現一些心理問題,肥胖人群經常受到身邊人的嘲笑,這樣會使得他們出現自卑、自閉的現象。

圖5 報警顯示和處理流程
報警采用定周期輪詢報警點狀態的方式,當一個報警狀態改變時,將此報警狀態主動發送到報警顯示緩沖區中,數據模型進行刷新后,控制器則通知視圖進行更新界面顯示。當操作員進行報警的操作(確認、頁確認、報警儲存)后,報警命令處理服務會進行相應的命令解析處理,然后將結果傳送至報警緩沖區,同樣也會通過MVC模式將處理結果更新到顯示界面,完成報警顯示和操作的仿真運行。
趨勢功能用來顯示趨勢變量組中的模擬量和布爾量的趨勢,按顯示模式可以分為數字模式和曲線模式,數字模式按時間間隔以數字顯示變量值,曲線模式以曲線圖形方式反映變量值。
趨勢功能主要涉及兩個方面的關鍵技術,一是二維圖形的實時、高效繪制,二是歷史數據的存儲和數據查詢獲取。采用基于Qt工具包中QPainter類的二維圖形引擎,可在二維畫面上顯示大量的、輕量級的、可與用戶交互的、任意形狀的項,通過QGraphicView、QGraphicsScene和QGraphicsItem類引入了一個全新的“圖形視圖”接口[6]。操作監控軟件的趨勢模塊采用此二維圖形引擎,實現趨勢跟蹤模式和歷史模式下變量數值趨勢圖形的高效、快速繪制,并提供仿真的圖形趨勢界面操作,如放大、縮小、增粗顯示、位移等。數據處理服務器上的數據存儲服務提供對趨勢數據的歷史數據存儲,提供對所有數據進行檢索和獲取的接口。存儲服務通過數據庫操作接口將變量點的值存儲到歷史數據庫中,并提供查詢和操作接口。存儲服務使用垂直劃分的方式來分隔系統數據容量,采用讀寫分離、數據壓縮及聚合緩存等技術,減少數據庫的讀寫次數,提高數據獲取的速度,保證數據存儲容量,保障趨勢的仿真運行及顯示。
日志功能給操作員提供系統檢測到的實時或者歷史日志信息的顯示,其日志內容包括設備狀態日志、操作記錄日志、登錄日志等KSN系統需要記錄和查詢的系統信息,并按事件發生的時序存放。每個事件對應一條消息記錄,布爾量的狀態改變,模擬量的閾值超限、超量程,操縱員動作、報警監視等都會產生日志。
為了解決日志的存儲容量問題,日志設計采用文件數據庫存儲記錄并進行水平劃分來增強擴展的靈活性,并通過Qt的文件監視器(QFileSystemWatcher)監測日志記錄文件的變化并利用觀察者模式實時通知模塊加載更新,從而提高日志的讀取效率,完成了日志記錄與展示的仿真。
本文從實現的角度,結合KSN系統仿真的要求,對KSN系統仿真操作監控軟件的構建方法和過程進行了梳理,并對工藝流程圖、報警、趨勢、日志等重要功能模塊的設計和實現進行了闡述。該系統中的軟件采用組件化的思想和層次化結構方式進行設計,使用Qt工具包、圖形化組態技術來開發,使得軟件具有高內聚、低耦合等優良軟件特性,不僅可以跨平臺運行,而且可復用性和可維護性大大提高,軟件的人機界面逼真度高,開發周期也大大縮短。同時,結合獨立的跨平臺網絡通信程序,二層仿真系統可以很靈活地與仿真模型進行分布式部署以及彈性擴展,極大地滿足了KSN仿真系統的培訓和教學需求。目前根據本文設計實現的KSN仿真系統操作監控軟件已在嶺澳KSN仿真系統項目中得到成功應用,為KSN仿真系統
提供了一個高逼真度、運行穩定、配置靈活的人機界面環境,為核電站KSN系統的培訓、教學提供了有利的支持。
[1] 郭紹輝,陳亮,徐海斌,等. 核電站KSN與第三方系統通信設計及應用[J].中國儀器儀表,2016(1): 28-33.
[2] 孫偉,冷杉,潘福明,等. TXP系統虛擬OT功能軟件開發[J].電力自動化設備,2006,26(11):75-78.
[3] 曲鳴,張玉峰,劉純. 核電廠DCS仿真與設計驗證[J].中國核科學技術進展報告,2009,11(1):769-777.
[4] Xteam(中國)軟件技術有限公司. Qt程序設計[M]. 北京:清華大學出版社,2002.
[5] 侯雪燕,劉偉,李青,等. 基于RINSIM平臺的核電站模擬機DCS一層仿真[C].全國仿真技術學術會議論文集,2015.
[6] BLANCHETTE J,SUMMERFIELD M. C++ GUI Programming with Qt 4,Second Edition[M]. 北京:電子工業出版社,2008.