彭 浩,張 旭,蔣 維,章 雨
(中國核動力研究設(shè)計院 核反應(yīng)堆系統(tǒng)設(shè)計技術(shù)重點實驗室,成都 610213)
虛擬DCS能夠在桌面操作系統(tǒng)再現(xiàn)實物DCS的系統(tǒng)架構(gòu)、板卡功能、故障現(xiàn)象、手動硬邏輯等,并最終達(dá)到模擬實物DCS控制功能、性能的目的[1]。虛擬DCS能夠?qū)崿F(xiàn)工況保存與裝入、快慢速調(diào)整、故障模擬等功能,應(yīng)用于操縱人員培訓(xùn)、事故演練、組態(tài)測試等場景[2-3]。
采用虛擬實物(Emulation)技術(shù)路線的虛擬DCS能夠高逼真度地實現(xiàn)實物DCS的移植,虛擬DCS的功能需求可由多種不同的軟件體系結(jié)構(gòu)實現(xiàn)[4-6]。一種具有“集中調(diào)度、異步運(yùn)行、多機(jī)運(yùn)行、一機(jī)多?!碧攸c的虛擬DCS典型軟件結(jié)構(gòu)如圖1所示。
圖1 虛擬DCS軟件架構(gòu)圖Fig.1 Virtual DCS software architecture diagram
其中,調(diào)度核心(DMS)是常駐的數(shù)據(jù)調(diào)度核心,運(yùn)行于系統(tǒng)的任一服務(wù)器上。1個DMS可同時運(yùn)行多個仿真項目,實現(xiàn)仿真項目管理、對外接口、IO數(shù)據(jù)緩存、仿真指令處理或中轉(zhuǎn)等功能。
虛擬控制站(VCS)是實物DCS控制站的虛擬化表現(xiàn)形式,每個仿真主機(jī)上可同時啟動多個VCS進(jìn)程,1個工程項目的VCS可布置在多個仿真主機(jī)上。同時,VCS體現(xiàn)了實物DCS控制站異步運(yùn)行的特點。
工程師站(Maintenance station)實現(xiàn)組態(tài)下裝、算法監(jiān)視、變量強(qiáng)制及其它維護(hù)功能。
另外,在系統(tǒng)初始化時,布置在與DMS不同仿真主機(jī)的VCS因尚未啟動而無法接收到DMS的啟動指令,可在每臺仿真主機(jī)上配置仿真主機(jī)服務(wù),設(shè)置為開機(jī)自啟動,實現(xiàn)VCS啟動指令的接收功能,并以命令行的方式啟動VCS,從而實現(xiàn)VCS的遠(yuǎn)程啟動功能。
虛擬DCS系統(tǒng)軟件結(jié)構(gòu)復(fù)雜,同時對響應(yīng)時間等功能性能要求較高[7],因而需設(shè)計一套適合的指令轉(zhuǎn)發(fā)處理機(jī)制,實現(xiàn)虛擬DCS高效準(zhǔn)確的指令處理與結(jié)果反饋。同時,為提高計算機(jī)硬件資源利用率,一般會采用一機(jī)多模設(shè)計理念,同樣需要考慮指令處理機(jī)制。本文分別針對上述需求,提出一套適合于虛擬DCS的指令分級交互機(jī)制,包括指令轉(zhuǎn)發(fā)處理機(jī)制和多項目調(diào)度機(jī)制。
指令分為非轉(zhuǎn)發(fā)指令與轉(zhuǎn)發(fā)指令。不需要VCS處理的指令為非轉(zhuǎn)發(fā)指令,僅由DMS處理并反饋即可,節(jié)約系統(tǒng)資源開銷。
子模塊之間指令發(fā)送與反饋的數(shù)據(jù)結(jié)構(gòu)采用統(tǒng)一的格式,即指令包頭加指令數(shù)據(jù)的形式。對于不同類型的指令與反饋,可能只用到結(jié)構(gòu)體中的部分字段。指令包頭包括用于校驗指令的數(shù)據(jù)頭、ID、項目標(biāo)識、指令類型與參數(shù)、指令數(shù)據(jù)長度及指令數(shù)據(jù)。
圖2 非轉(zhuǎn)發(fā)指令處理流程圖Fig.2 Non-forwarded instruction processing process diagram
反饋結(jié)構(gòu)用于DMS給第三方系統(tǒng)的反饋和VCS給DMS的反饋。填充內(nèi)容包含包頭與反饋參數(shù),包頭包括指令類型、指令參數(shù)(錯誤碼),針對反饋內(nèi)容不止是成功與否的反饋類型,還應(yīng)反饋數(shù)據(jù),對于不定長度的反饋數(shù)據(jù),需在包頭中包括反饋數(shù)據(jù)長度。
非轉(zhuǎn)發(fā)指令包括項目管理、變量監(jiān)視、變量超控(Override)、獲取仿真項目運(yùn)行狀態(tài)、當(dāng)前工況查詢等。上述指令訪問或改變的是DMS中的信息,DMS自身可處理,因此不需要向VCS轉(zhuǎn)發(fā)。非轉(zhuǎn)發(fā)指令的處理流程是,第三方系統(tǒng)發(fā)出指令請求,DMS接收并處理該請求后對應(yīng)返回一個反饋,反饋包括針對該指令的反饋信息與執(zhí)行的結(jié)果。
以查詢當(dāng)前工況為例,指令只需指令包頭即可,包括枚舉類型的指令類型(SDS_COMMAND_GET_CURRENT_IC)、項目標(biāo)識為查詢的項目名。填充的具體結(jié)構(gòu)見表1。
表1 查詢當(dāng)前工況指令結(jié)構(gòu)Table 1 Querying the current operating instruction structure
以查詢當(dāng)前工況為例,反饋的包頭包括枚舉類型的指令類型(SDS_COMMAND_GET_CURRENT_IC)、錯誤碼、指令數(shù)據(jù)長度、記錄工況名字符串的指令數(shù)據(jù)。填充的具體結(jié)構(gòu)見表2。
表2 查詢當(dāng)前工況反饋結(jié)構(gòu)Table 2 Query ingress with the current operating feedback structure
轉(zhuǎn)發(fā)指令包括保存工況、刪除工況、設(shè)置故障、停止項目等需要每個VCS參與處理的指令。DMS收到第三方系統(tǒng)發(fā)來的請求后,轉(zhuǎn)發(fā)給所有在線的VCS,并等待VCS反饋指令處理結(jié)果。每個VCS處理指令后形成反饋信息,返回DMS,DMS確認(rèn)轉(zhuǎn)發(fā)每個VCS的請求都收到反饋后,生成反饋信息回復(fù)第三方系統(tǒng)。
第三方系統(tǒng)發(fā)送的指令包括包頭與指令數(shù)據(jù),其中包頭包括指令類型、項目標(biāo)識、指令數(shù)據(jù)長度(針對帶有指令數(shù)據(jù)的情況)及可能存在的指令數(shù)據(jù)。DMS解析該指令并生成轉(zhuǎn)發(fā)給各VCS的指令結(jié)構(gòu)。其轉(zhuǎn)發(fā)對象根據(jù)指令類型不同,可轉(zhuǎn)發(fā)單個VCS或所有在線的VCS。VCS處理并生成反饋數(shù)據(jù)包,向DMS反饋,當(dāng)DMS等待各VCS反饋或判斷VCS已處理超時后,向第三方系統(tǒng)反饋處理結(jié)果。
以刪除工況指令為例,工況文件的存儲位置包括DMS配置路徑及每個VCS所在路徑,DMS接收到刪除工況指令后,先校驗密碼是否正確,再處理與轉(zhuǎn)發(fā)該指令。刪除工況指令與反饋填充的數(shù)據(jù)結(jié)構(gòu)分別見表3、表4。
表3 刪除工況指令結(jié)構(gòu)Table 3 Delete the condition instruction structure
上述數(shù)據(jù)交互機(jī)制有多種實現(xiàn)形式,虛擬DCS作為獨立的軟件系統(tǒng),應(yīng)盡可能減少與第三方系統(tǒng)在交互機(jī)制上的耦合,增強(qiáng)通用性。同時,為實現(xiàn)一機(jī)多模功能,即單個仿真服務(wù)器可同時運(yùn)行多個仿真項目的要求,設(shè)計一種多項目調(diào)度機(jī)制,如圖4所示。
圖3 轉(zhuǎn)發(fā)指令處理流程圖Fig.3 Forward ingresinstruction flowchart
表4 刪除工況反饋結(jié)構(gòu)Table 4 Removing the condition feedback structure
圖4 多項目調(diào)度機(jī)制示意圖Fig.4 Diagram of the multi-project scheduling mechanism
虛擬DCS提供動態(tài)鏈接庫供第三方系統(tǒng)調(diào)用,加載該動態(tài)鏈接庫的第三方系統(tǒng)即可作為虛擬DCS的客戶端使用。客戶端類中封裝了連接以及發(fā)送各種仿真指令的方法,同時封裝了通信庫,通過Socket的方式與服務(wù)端通信。調(diào)度核心為實現(xiàn)一機(jī)多模,對每個仿真項目建立各自的服務(wù)端,該項目對應(yīng)的虛擬控制站與該項目的服務(wù)端建立Socket通信。調(diào)度核心進(jìn)程啟動時,創(chuàng)建供第三方系統(tǒng)連接的服務(wù)端及仿真項目服務(wù)端。每個虛擬控制站進(jìn)程啟動時建立客戶端,并試圖連接對應(yīng)仿真項目的服務(wù)端。
基于此方式,可實現(xiàn)多個第三方系統(tǒng)同時連接基于虛擬DCS的仿真項目,適用于多項目操縱人員培訓(xùn)以及多個機(jī)組同時調(diào)試等場景。
基于虛擬DCS的指令分級交互架構(gòu)包括第三方系統(tǒng)、調(diào)度核心、虛擬控制站三層。第三方系統(tǒng)發(fā)送指令與等待反饋,調(diào)度核心區(qū)分不同指令分別進(jìn)行轉(zhuǎn)發(fā)或不轉(zhuǎn)發(fā)處理,虛擬控制站執(zhí)行指令與反饋。基于三層體系,建立的指令轉(zhuǎn)發(fā)處理機(jī)制實現(xiàn)了虛擬DCS的有效調(diào)度,指令與反饋使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),增強(qiáng)了系統(tǒng)的可維護(hù)性。為實現(xiàn)一機(jī)多模功能,虛擬DCS調(diào)度核心提供多項目調(diào)度接口,并分別為每個仿真項目建立服務(wù)端,供不同項目的虛擬控制站連接,形成多項目調(diào)度機(jī)制。指令轉(zhuǎn)發(fā)處理和多項目調(diào)度機(jī)制構(gòu)成一套完整的虛擬DCS指令分級交互機(jī)制,是實現(xiàn)虛擬DCS多任務(wù)處理、多項目調(diào)度功能的重要方法,具有工程應(yīng)用價值。