本發(fā)明涉及核電站全范圍模擬機(jī)的技術(shù)領(lǐng)域,尤其涉及一種核電站全范圍模擬機(jī)控制算法的加速計算方法。
背景技術(shù):
核電站全范圍模擬機(jī)是模擬的核電站數(shù)字化儀控系統(tǒng),主要用于電站操縱人員培訓(xùn)和考試,以考核操縱人員按照核電廠有關(guān)規(guī)程對核電廠控制系統(tǒng)進(jìn)行實(shí)際操作或指導(dǎo)他人操作的能力。下位機(jī)算法模擬機(jī)是可在模擬機(jī)環(huán)境中運(yùn)行下位機(jī)算法邏輯的任務(wù),將參考機(jī)組的系統(tǒng)的軟件移植到模擬機(jī)運(yùn)行環(huán)境下工作(其硬件平臺可以是模擬主機(jī),也可以是獨(dú)立的計算機(jī)),來復(fù)現(xiàn)參考機(jī)組的系統(tǒng)。目前,核電站全范圍模擬機(jī)的下位機(jī)模擬機(jī)算法應(yīng)用很少,一般僅實(shí)現(xiàn)簡單的數(shù)據(jù)輸入輸出功能,或者周期性運(yùn)算特定的算法。對于可調(diào)速率的支持,由于windows系統(tǒng)平臺自身限制,業(yè)界對運(yùn)算周期最快支持到100毫秒的分辨率,而對于100毫秒以下的快速運(yùn)算周期,一般用局部快速或者丟棄數(shù)據(jù)包來模擬。
局部快速方式,指對模擬機(jī)中的某一個或者少數(shù)幾個下位機(jī),進(jìn)行快速50ms周期的運(yùn)算。這種方式能實(shí)現(xiàn)少數(shù)一兩個下位機(jī)加速計算,但核電站下位機(jī)規(guī)模通常超過10個,該方式無法實(shí)現(xiàn)整體下位機(jī)的加速計算。
丟棄數(shù)據(jù)包方式,指在加速計算過程中,丟棄掉一部分?jǐn)?shù)據(jù)包來避免計算數(shù)據(jù)擁堵。比如說,對于50ms的計算輸入數(shù)據(jù),采用算一包丟一包的方式來進(jìn)行計算。該方式的計算周期實(shí)際為100ms,用犧牲分辨率的方式來保證計算速度。
如附圖1和附圖2所示,為現(xiàn)有技術(shù)中常見的核電站全范圍模擬機(jī)系統(tǒng)中下位機(jī)算法模擬機(jī)連接總體結(jié)構(gòu)圖。下位機(jī)算法模擬機(jī)接入系統(tǒng)網(wǎng)和網(wǎng)關(guān)網(wǎng),工程師站通過系統(tǒng)網(wǎng)向下位機(jī)算法模擬機(jī)下裝算法工程,模型網(wǎng)關(guān)通過網(wǎng)關(guān)網(wǎng)向下位機(jī)算法模擬機(jī)提供算法工程所需的輸入數(shù)據(jù),并接收下位機(jī)算法模擬機(jī)的輸出數(shù)據(jù)。下位機(jī)算法模擬機(jī)周期向?qū)崟r庫提供數(shù)據(jù)庫點(diǎn)值。教控臺和模型通過模型網(wǎng)為模型網(wǎng)關(guān)提供數(shù)據(jù),操作員站和歷史服務(wù)器通過管理網(wǎng)向?qū)崟r服務(wù)器請求數(shù)據(jù)。
附圖3為下位機(jī)算法運(yùn)行的過程圖,下位機(jī)算法運(yùn)行的過程主要包括算法工程下裝、算法啟動、接收算法數(shù)據(jù)和執(zhí)行算法邏輯等。工程師站組態(tài)模擬機(jī)算法工程,組態(tài)完畢后對算法工程進(jìn)行編譯,然后將編譯后的算法工程文件下裝給下位機(jī)算法模擬機(jī)。下裝結(jié)束后啟動下位機(jī)算法模擬機(jī)的算法任務(wù)。下位機(jī)算法模擬機(jī)周期等待模型網(wǎng)關(guān)的算法輸入數(shù)據(jù),若無數(shù)據(jù)輸入,則持續(xù)等待。若有算法輸入數(shù)據(jù),則執(zhí)行一次算法邏輯運(yùn)算。執(zhí)行完畢后將算法輸出數(shù)據(jù)提供給模型網(wǎng)關(guān),繼續(xù)等待下一次算法輸入數(shù)據(jù)。通過模型網(wǎng)關(guān)的數(shù)據(jù)輸入來激勵算法運(yùn)行,在運(yùn)行過程中,如果收到退出指令則停止下位機(jī)算法模擬機(jī)算法任務(wù)。
附圖4是下位機(jī)算法模擬機(jī)的運(yùn)行過程中,執(zhí)行算法邏輯過程示意圖,算法任務(wù)接收到模型網(wǎng)關(guān)輸入數(shù)據(jù)后,將輸入數(shù)據(jù)中的算法數(shù)據(jù)解析出來,按照算法格式放入輸入數(shù)據(jù)區(qū)域,之后進(jìn)行一次算法邏輯,得到運(yùn)算后的輸出數(shù)據(jù),最后將輸出數(shù)據(jù)取出,處理成模型網(wǎng)關(guān)的數(shù)據(jù)格式發(fā)送給模型網(wǎng)關(guān)。這種方式通過模型網(wǎng)關(guān)的數(shù)據(jù)發(fā)送頻率實(shí)現(xiàn)了算法速率控制,可實(shí)現(xiàn)快速(50ms),慢速(200ms~2s),步進(jìn)式算法運(yùn)算。對于100ms~2s周期范圍的算法控制,進(jìn)行簡單的輸入數(shù)據(jù)驅(qū)動算法即可實(shí)現(xiàn)。下位機(jī)算法模擬機(jī)在運(yùn)行時會周期接收到模型網(wǎng)關(guān)的輸入數(shù)據(jù),對windows系統(tǒng)而言,在100ms以上的周期,可以完成整個算法過程包括數(shù)據(jù)接收、計算、數(shù)據(jù)發(fā)送。對于50ms周期的算法控制,windows由于自身系統(tǒng)的局限性,無法保證完成整個算法過程。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中windows系統(tǒng)平臺的運(yùn)算周期最快只能支持到100毫秒的分辨率,而對于100ms以下的快速運(yùn)算周期,只能通過局部快速或者丟棄數(shù)據(jù)包的方式來模擬,但是這兩種快速運(yùn)算方式,存在著無法實(shí)現(xiàn)整體下位機(jī)加速計算或者犧牲分辨率的問題。
為了實(shí)現(xiàn)全范圍多個下位機(jī)算法模擬機(jī)同時加速計算,且加速計算周期提升到50ms的技術(shù)目的,本發(fā)明提供的技術(shù)方案包括:一種核電站全范圍模擬機(jī)控制算法加速計算方法,所述加速計算方法包括:
一、所述系統(tǒng)接收模型網(wǎng)關(guān)發(fā)來的數(shù)據(jù)并發(fā)送給n個下位機(jī)算法模擬機(jī),周期為100ms~2s,發(fā)送的數(shù)據(jù)包括算法輸入數(shù)據(jù)和/或加速指令標(biāo)志,n≥1;
二、下位機(jī)算法模擬機(jī)接收到數(shù)據(jù)后,解析當(dāng)前數(shù)據(jù),提取算法輸入數(shù)據(jù)和/或加速指令標(biāo)志;
三、根據(jù)提取的數(shù)據(jù),下位機(jī)算法模擬機(jī)判斷是否存在加速指令標(biāo)志,如果存在加速指令標(biāo)志,下位機(jī)算法模擬機(jī)將加速指令返回至模擬網(wǎng)關(guān)進(jìn)行確認(rèn);
四、根據(jù)算法輸入數(shù)據(jù),下位機(jī)算法模擬機(jī)執(zhí)行第一次算法邏輯,若存在加速指令標(biāo)注,則執(zhí)行步驟五,否則執(zhí)行步驟六;
五、下位機(jī)算法模擬機(jī)執(zhí)行第二次算法邏輯;
六、各下位機(jī)算法模擬機(jī)將算法結(jié)果發(fā)送到所述系統(tǒng);
七、所述系統(tǒng)將算法結(jié)果打包處理,并放入模型網(wǎng)關(guān)的輸出數(shù)據(jù)區(qū);
八、結(jié)束本次算法。
在所述步驟一之前,還要進(jìn)行以下步驟:
一、所述下位機(jī)算法模擬機(jī)啟動后需先進(jìn)行初始化處理;
二、向模擬網(wǎng)關(guān)發(fā)出所述系統(tǒng)模擬狀態(tài)指令;
三、獲取所述系統(tǒng)模擬狀態(tài)指令后,所述下位機(jī)算法模擬機(jī)自身狀態(tài)與所述系統(tǒng)模擬機(jī)同步,完成后運(yùn)行加速計算方法。
核電站全范圍模擬機(jī)系統(tǒng)依次發(fā)送數(shù)據(jù)給n個下位機(jī)算法模擬機(jī)。所述下位機(jī)算法模擬機(jī)將算法結(jié)果依次發(fā)送到所述系統(tǒng)。
發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且部分地從說明書變得顯而易見,或者通過實(shí)施本發(fā)明的技術(shù)方案而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)和/或流程來實(shí)現(xiàn)和獲得。
附圖說明
圖1為現(xiàn)有技術(shù)中核電站的下位機(jī)算法模擬機(jī)連接總體結(jié)構(gòu)示意圖;
圖2為現(xiàn)有技術(shù)中下位機(jī)算法模擬機(jī)與其他節(jié)點(diǎn)的關(guān)系圖;
圖3為現(xiàn)有技術(shù)中下位機(jī)算法模擬機(jī)運(yùn)行過程圖;
圖4為現(xiàn)有技術(shù)中下位機(jī)算法模擬機(jī)執(zhí)行算法邏輯過程示意圖;
圖5為本發(fā)明一種核電站全范圍模擬機(jī)控制算法加速計算方法中對于快速指令的運(yùn)算處理具體過程圖;
圖6為本發(fā)明實(shí)施例提供的一種核電站全范圍模擬機(jī)環(huán)境示意圖;
圖7為本發(fā)明實(shí)施例提供的一種加速算法的啟動流程圖;
圖8為本發(fā)明實(shí)施例提供的一種加速算法的啟動時序圖;
圖9為本發(fā)明實(shí)施例提供的一種單步算法執(zhí)行過程時序圖;
圖10為本發(fā)明實(shí)施例提供的一種加速算法執(zhí)行過程時序圖;
圖11為本發(fā)明實(shí)施例提供的一種模型網(wǎng)關(guān)與下位機(jī)算法模擬機(jī)網(wǎng)絡(luò)通訊協(xié)議。
具體實(shí)施方式
以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,這些具體的說明只是讓本領(lǐng)域普通技術(shù)人員更加容易、清晰理解本發(fā)明,而非對本發(fā)明的限定性解釋;并且只要不構(gòu)成沖突,本發(fā)明中的各個實(shí)施例以及各實(shí)施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
下面通過附圖和具體實(shí)施例,對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)描述:
如圖5所示,本發(fā)明的加速計算方法包括五個過程,分別為:
1、接收輸入數(shù)據(jù)
由模型網(wǎng)關(guān)通過網(wǎng)絡(luò)套接字發(fā)送數(shù)據(jù)包,數(shù)據(jù)包中包括算法輸入數(shù)據(jù),數(shù)據(jù)指令標(biāo)志等信息,數(shù)據(jù)發(fā)送周期由模型網(wǎng)關(guān)指定,一般在100ms~2s之間。該數(shù)據(jù)包發(fā)送至下位機(jī)算法模擬機(jī)接收。
2、處理輸入數(shù)據(jù)
下位機(jī)算法模擬機(jī)接收到數(shù)據(jù)包后,對數(shù)據(jù)包進(jìn)行有效性檢測,提取出數(shù)據(jù)包中主要的兩個信息:算法數(shù)據(jù)輸入和數(shù)據(jù)指令標(biāo)志位,前者用于算法邏輯執(zhí)行的數(shù)據(jù)輸入,后者用來判別是否進(jìn)行加速計算處理。算法數(shù)據(jù)輸入有時會根據(jù)下位機(jī)站間通訊、三方外部數(shù)據(jù)或者下位機(jī)模擬故障等特殊情況進(jìn)行二次數(shù)據(jù)處理,最終將處理后的數(shù)據(jù)放入下位機(jī)算法模擬機(jī)的算法數(shù)據(jù)輸入?yún)^(qū)。
3、執(zhí)行算法邏輯
由下位機(jī)算法模擬機(jī)執(zhí)行算法邏輯,該過程主要是將算法數(shù)據(jù)輸入?yún)^(qū)作為算法邏輯的輸入,運(yùn)行用戶組態(tài)的算法邏輯指令合集,運(yùn)行后得到算法邏輯的輸出數(shù)據(jù)。若數(shù)據(jù)指令標(biāo)志位解析為加速計算,則額外再執(zhí)行一次算法邏輯。執(zhí)行算法邏輯的最終目的是獲得輸出數(shù)據(jù);
4、處理輸出數(shù)據(jù)
與處理輸入數(shù)據(jù)的過程對應(yīng),下位機(jī)算法模擬機(jī)將輸出數(shù)據(jù)和數(shù)據(jù)指令反饋合并,按照與模型網(wǎng)關(guān)約定的返回協(xié)議進(jìn)行數(shù)據(jù)打包;
5、發(fā)送輸出數(shù)據(jù)
下位機(jī)算法模擬機(jī)將打包好的數(shù)據(jù)發(fā)送給模型網(wǎng)關(guān),完成一次算法通訊。
加速計算要求所有5個過程在50ms內(nèi)處理完成,而windows由于自身非實(shí)時系統(tǒng)的限制,無法保證處理完全部5個過程。本發(fā)明的思路就是在加速計算時,2個周期(100ms)中舍棄1個周期5個過程中的一部分過程,使得加速計算功能得以實(shí)現(xiàn)。具體的實(shí)現(xiàn)方式是舍棄5個過程中的1、2、4、5,只保留核心過程3,也就是2個算法周期只進(jìn)行1次數(shù)據(jù)輸入輸出,執(zhí)行2次算法邏輯。也就是說,快速計算時,模型網(wǎng)關(guān)的輸入數(shù)據(jù)庫發(fā)送周期仍是100ms,下位機(jī)接收到輸入數(shù)據(jù)后,自身執(zhí)行2次算法邏輯,將計算后的輸出數(shù)據(jù)發(fā)送至模型網(wǎng)關(guān)。為了區(qū)別100ms周期的數(shù)據(jù)是快速計算和普通計算,模型網(wǎng)關(guān)發(fā)送的數(shù)據(jù)中需要包括1個指令標(biāo)志位。運(yùn)行過程中,
一、所述系統(tǒng)接收模型網(wǎng)關(guān)發(fā)來的數(shù)據(jù)并發(fā)送給n個下位機(jī)算法模擬機(jī),周期為100ms~2s,發(fā)送的數(shù)據(jù)包括算法輸入數(shù)據(jù)和/或加速指令標(biāo)志,n≥1;
二、下位機(jī)算法模擬機(jī)接收到數(shù)據(jù)后,解析當(dāng)前數(shù)據(jù),提取算法輸入數(shù)據(jù)和/或加速指令標(biāo)志;
三、根據(jù)提取的數(shù)據(jù),下位機(jī)算法模擬機(jī)判斷是否存在加速指令標(biāo)志,如果存在加速指令標(biāo)志,下位機(jī)算法模擬機(jī)將加速指令返回至模擬網(wǎng)關(guān)進(jìn)行確認(rèn);
四、根據(jù)算法輸入數(shù)據(jù),下位機(jī)算法模擬機(jī)執(zhí)行第一次算法邏輯,若存在加速指令標(biāo)注,則執(zhí)行步驟五,否則執(zhí)行步驟六;
五、下位機(jī)算法模擬機(jī)執(zhí)行第二次算法邏輯;
六、各下位機(jī)算法模擬機(jī)將算法結(jié)果發(fā)送到所述系統(tǒng);
七、所述系統(tǒng)將算法結(jié)果打包處理,并放入模型網(wǎng)關(guān)的輸出數(shù)據(jù)區(qū);
八、結(jié)束本次算法。
這種加速計算的實(shí)現(xiàn)方式,具有如下的優(yōu)點(diǎn):
對操作系統(tǒng)的計算周期精度要求低,計算數(shù)據(jù)驅(qū)動周期100ms,可實(shí)現(xiàn)50ms的加速計算;對下位機(jī)算法模擬機(jī)的資源利用率高,可保證核電站全范圍模擬機(jī)環(huán)境下多個下位機(jī)算法模擬機(jī)實(shí)現(xiàn)加速計算。
如圖6所示,在核電站全范圍模擬機(jī)環(huán)境中,下位機(jī)算法模擬機(jī)通??梢阅M控制站,使用本發(fā)明可使所有的下位機(jī)算法模擬機(jī)都支持加速計算,達(dá)到核電站全范圍模擬機(jī)環(huán)境加速計算的效果。
以下為本發(fā)明的一個實(shí)施例,本發(fā)明已應(yīng)用于某項(xiàng)目中speedysim-rts控制站(simrts)軟件的實(shí)現(xiàn),與加速算法實(shí)現(xiàn)相關(guān)的設(shè)計如下。包括啟動,單步算法執(zhí)行,加速算法執(zhí)行的設(shè)計和實(shí)現(xiàn)。
如圖7所示,為項(xiàng)目啟動過程的流程圖,
步驟一:啟動simrts軟件;
步驟二:對simrts進(jìn)行初始化處理;
步驟三:向模擬網(wǎng)關(guān)發(fā)出請求模擬機(jī)狀態(tài)指令;
步驟四:獲取模擬機(jī)狀態(tài)指令,自身狀態(tài)與模擬機(jī)同步;
步驟五:周期性接收網(wǎng)關(guān)數(shù)據(jù)包。
如圖8所示,
1、本實(shí)施例simfactory工業(yè)模擬系統(tǒng)不支持用戶手動啟動,采用開機(jī)自啟動的方式啟動。
2、simfactory啟動后獲取配置文件,啟動對應(yīng)的控制站(下位機(jī)算法模擬機(jī))。
3、simrts控制站(下位機(jī)算法模擬機(jī))啟動后,向simfactory獲取模擬機(jī)當(dāng)前狀態(tài)。
4、simfactory周期向模型網(wǎng)關(guān)請求,同步當(dāng)前模擬機(jī)狀態(tài)。
啟動過程中,若收到狀態(tài)改變指令,simfactory返回指令執(zhí)行失敗。
若啟動過程中獲取模擬機(jī)狀態(tài)失敗,則阻塞在獲取狀態(tài)環(huán)節(jié)并記錄錯誤調(diào)試日志,直至獲取狀態(tài)成功后啟動。
如圖9所示,為本實(shí)施例的單步算法執(zhí)行過程。
1、模型網(wǎng)關(guān)向simfactory發(fā)送數(shù)據(jù)包;
2、simfactory接收數(shù)據(jù)包,拆解數(shù)據(jù)并提取算法,然后輸入數(shù)據(jù);
3、simfactory將i區(qū)數(shù)據(jù)依次發(fā)送到各simrts控制站(下位機(jī)算法模擬機(jī));
4、simrts對接收到的數(shù)據(jù)執(zhí)行一次算法邏輯;
5、simrts將得到的q區(qū)數(shù)據(jù),各控制站(下位機(jī)算法模擬機(jī))依次進(jìn)行反饋到simfactory;
6、simfactory將接收到的各控制站數(shù)據(jù)進(jìn)行打包合并;
7、simfactory將數(shù)據(jù)包寫入至模型網(wǎng)關(guān)。
simrts接收到simfactory的ai(模擬量輸入)、di(數(shù)字量輸入)數(shù)據(jù),寫入算法任務(wù)的i區(qū),并觸發(fā)執(zhí)行一次算法邏輯,算法邏輯將運(yùn)算后的數(shù)據(jù)更新至q區(qū),simrts將q區(qū)數(shù)據(jù)獲取后發(fā)送至simfactory。整個過程要保證在50ms以內(nèi)完成。
如圖10所示,為本實(shí)施例的加速算法執(zhí)行過程。
1、工程人員向模型網(wǎng)關(guān)發(fā)送加速計算(fast)指令;
2、模型網(wǎng)關(guān)向simfactory發(fā)送數(shù)據(jù)包;
3、simfactory接收數(shù)據(jù)包,拆解數(shù)據(jù)并提取指令;
4、simfactory向simrts控制站(下位機(jī)算法模擬機(jī))發(fā)送fast指令;
5、simrts控制站接收到fast指令后,將fast指令返回至simfactory進(jìn)行確認(rèn);
6、simfactory將fast指令返回至模型網(wǎng)關(guān);
7、simfactory將i區(qū)數(shù)據(jù)向各控制站依次發(fā)送;
8、simrts控制站對接收到的數(shù)據(jù)執(zhí)行第一次算法邏輯;
9、simrts控制站對接收到的數(shù)據(jù)執(zhí)行第二次算法邏輯;
10、simrts將各控制站的q區(qū)數(shù)據(jù)依次反饋至simfactory;
11、simfactory將接收到的q區(qū)數(shù)據(jù)打包合并處理;
12、simfactory數(shù)據(jù)包寫入至模型網(wǎng)關(guān)。
fast與step的區(qū)別在于,fast收到一包ai、di數(shù)據(jù)后,執(zhí)行兩次算法,用來模擬快速算法運(yùn)行。
如附圖11所示的模型網(wǎng)關(guān)與下位機(jī)算法模擬機(jī)網(wǎng)絡(luò)通訊協(xié)議包含4部分內(nèi)容。
1、數(shù)據(jù)頭標(biāo)志(2字節(jié)startflag)
2、數(shù)據(jù)頭明細(xì)(16字節(jié)dataheader)
3、不定長數(shù)據(jù)區(qū)(applicationdata)
4、數(shù)據(jù)尾標(biāo)志(2字節(jié)dataend)
其中3部分的不定長數(shù)據(jù)包括了傳輸信息的主要數(shù)據(jù)內(nèi)容。又分為4部分
a、時間戳秒(4字節(jié)fsstimestamp)
b、時間戳毫秒(2字節(jié)fsstimestampmilliseconds)
c、指令數(shù)據(jù)及指令返回(10字節(jié)commanddataandresponsedata)
d、不定長數(shù)據(jù)主體(informationdata)
其中算法輸入數(shù)據(jù)的內(nèi)容,都在d中。
其中c的指令數(shù)據(jù)及指令返回,又分為2部分
1、指令標(biāo)志位(2字節(jié)commandid)
2、信息類型(8字節(jié)informationdata1~informationdata4)
指令標(biāo)志位的內(nèi)容表明了該包數(shù)據(jù)是正常計算(0)或是加速計算(22),以此來作為是否進(jìn)行加速計算的依據(jù)。
下位機(jī)算法模擬機(jī)接收到模型網(wǎng)關(guān)的一包數(shù)據(jù)協(xié)議時,會通過協(xié)議解析獲得算法輸入數(shù)據(jù)和指令標(biāo)志位,再根據(jù)指令標(biāo)志位判斷是否進(jìn)行加速計算。
最后需要說明的是,上述說明僅是本發(fā)明的最佳實(shí)施例而已,并非對本發(fā)明做任何形式上的限制。任何熟悉本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),都可利用上述揭示的做法和技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出許多可能的變動和簡單的替換等,這些都屬于本發(fā)明技術(shù)方案保護(hù)的范圍。