韋雄 徐田玉 劉海云
摘要:某核電模擬機項目從建設(shè)到投運一直存在過程仿真平臺與虛擬安全級DCS平臺開始建立網(wǎng)絡(luò)通信連接時頻繁失敗,需要重復(fù)多次連接才能成功的問題。為此,通過抓包分析、模型側(cè)DCS任務(wù)源碼分析以及安全級平臺軟件底層程序逆向分析,最終妥善解決了此問題。同時,對模擬機虛擬DCS通信模式的設(shè)計提出了新的見解。
關(guān)鍵詞:模擬機;MELCO;虛擬DCS;通信;配置
0 引言
近年來,在國家安全、高效發(fā)展核電政策的積極引領(lǐng)和支持下,發(fā)展核能成為我國未來實現(xiàn)能源可持續(xù)發(fā)展的必然選擇。核電站運行人員必須經(jīng)過嚴格的篩選、培訓(xùn),并具備一定的資質(zhì)和能力后才能上崗,這樣才能保證核電的安全性。核電站全范圍模擬機是核電站操縱員培訓(xùn)和考試的必要設(shè)備,是核電工程建設(shè)的重要設(shè)備之一。全范圍模擬機一般由模擬核電站控制室的前臺監(jiān)控和顯示設(shè)備、后臺電廠設(shè)備狀態(tài)和運行參數(shù)仿真計算過程模型、后臺電廠數(shù)字化控制系統(tǒng)仿真模型、教學(xué)控制系統(tǒng)以及計算機群等部件組成,能夠連續(xù)、實時地模擬電站的運行,包括模擬正常運行的穩(wěn)態(tài)/瞬態(tài)工況、異常工況和事故工況等,所以也被稱為“虛擬核電站”。模擬機通過對參考電站動態(tài)仿真模型的連續(xù)、實時、迭代數(shù)值計算,將核電站各種運行工況下的設(shè)備狀態(tài)和運行參數(shù)顯示在模擬的控制室各種顯示或指示設(shè)備上,同時,通過故障模擬和從模擬控制設(shè)備上接受人工操作信號,模擬機可以預(yù)測核電站在人工干預(yù)和設(shè)備狀態(tài)變化情況下的核電站運行瞬態(tài)工況和事故工況的各種運行參數(shù),從而為人們提供了一種與實際核電站控制室相類似的模擬環(huán)境,滿足核電站操作人員的培訓(xùn)和考試需求,也可以用于應(yīng)急演習(xí)、設(shè)計驗證以及運行分析等。
1 存在的問題
某全范圍模擬機的后臺計算機系統(tǒng)由電站過程仿真(某仿真平臺)以及DCS儀控仿真組成,其中某仿真平臺主要完成過程模型的仿真(包括工藝流程、電氣網(wǎng)絡(luò)等),而DCS儀控仿真基于仿真度的考慮,多采用虛擬仿真或?qū)嵨锓抡娴姆绞?。該全范圍模擬機的DCS儀控仿真采用虛擬仿真方式,由虛擬非安全級DCS(廣利核)和虛擬安全級DCS(三菱)組成,完成對工藝系統(tǒng)邏輯控制的仿真。儀控仿真平臺與過程仿真平臺之間通過網(wǎng)絡(luò)通信進行數(shù)據(jù)交換來模擬電站現(xiàn)場工藝設(shè)備與儀控系統(tǒng)的線纜連接。該核電模擬機項目從建設(shè)到投運一直存在著以下問題:在過程仿真平臺與虛擬安全級DCS平臺開始建立網(wǎng)絡(luò)通信連接時頻繁失敗,需要重復(fù)多次連接才會成功。
2 原因分析及處理
過程模型服務(wù)器通過調(diào)用安全級和非安全級DCS提供的API接口來完成與兩者之間的連接和數(shù)據(jù)傳輸。實際的實現(xiàn)過程中,為完成過程模型服務(wù)器與虛擬DCS之間的通信,共設(shè)計了3個組件:FSS_xxxx.exe(安全級DCS),yyyyGW.exe(非安全級DCS),DCS.exe(過程模型側(cè)),其中DCS.exe通過調(diào)用(safetycom.dll/nosafetycom.dll)API函數(shù)完成與安全級FSS_xxxx.exe和非安全級yyyyGW.exe的通信。全范圍模擬機的通信進程如圖1所示。
這3個組件分別運行在過程模型服務(wù)器、非安DCS L1服務(wù)器以及安全級DCS L1服務(wù)器上,并配置有同一網(wǎng)段IP,過程模型服務(wù)器為10.0.0.Z,非安DCS L1服務(wù)器為10.0.0.Y,安全級DCS L1服務(wù)器為10.0.0.X。在模擬機啟動過程中,先由非安DCS、安全級DCS啟動,準備好各自仿真程序,然后由過程模型服務(wù)器仿真平臺側(cè)啟動DCS通信任務(wù),以此建立與非安DCS、安全級DCS的通信。過程模型服務(wù)器的通信設(shè)計如圖2所示。過程模型服務(wù)器的DCS通信任務(wù)DCS.exe,一方面作為TCP client,連接非安DCS的yyyyGW的5AAA端口,另一方面建立TCP SERVER,在端口6BBB監(jiān)聽,等待安全級網(wǎng)關(guān)的連接。非安DCS服務(wù)器的通信設(shè)計如圖3所示。非安DCS啟動完成后,由yyyyGW.exe網(wǎng)關(guān)程序建立一個TCP SERVER,在端口5AAA監(jiān)聽。安全級服務(wù)器的通信設(shè)計如圖4所示。安全級服務(wù)器的FSS_xxxx.exe作為TCP CLIENT連接模型服務(wù)器的6BBB端口。
在實際模擬機使用過程中,當非安DCS和安全級DCS仿真程序均已啟動成功后,在過程模型服務(wù)器上啟動DCS通信任務(wù)與非安DCS、安全級DCS建立通信連接時,總是有較大概率出現(xiàn)報錯“Send all DCS task:Can not connect to MELCO DCS!”,與安全級DCS建立連接失敗,向供貨商反饋一直沒得到妥善解決,答復(fù)意見是模型仿真平臺DCS通信任務(wù)里與安全級DCS通信部分是由三菱公司設(shè)計的,是個黑匣子,該通信組件僅提供如圖5所示的API接口。為什么安全級FSS_xxxx.exe有時會沒連上模型仿真平臺的6BBB端口呢?我們對FSS_xxxx.exe的通信進行了抓包,如圖6所示。
經(jīng)過計時分析統(tǒng)計,在安全級DCS啟動完成后,就不斷向模型仿真平臺服務(wù)器的6BBB端口發(fā)包請求,每次發(fā)3個包,1 min發(fā)15次(共45個包),也就是大約每4 s發(fā)1次。通過逆向分析三菱的FSS_xxxx.exe程序,如圖7所示,發(fā)現(xiàn)程序設(shè)計的也是循環(huán)每隔3 s就向過程模型服務(wù)器發(fā)送1次連接請求,加上網(wǎng)絡(luò)延時時間,3K服務(wù)器收到數(shù)據(jù)包也就在4 s左右,與抓包分析結(jié)果一致。
通過查看模型服務(wù)器的DCS通信任務(wù)源代碼,加載任務(wù)時調(diào)用的TASKINIT()(運行時調(diào)用TASKMAIN(),卸載任務(wù)調(diào)用TASKDONE())相關(guān)代碼如下:
從上面可以看出,模型仿真平臺啟動與DCS的通信任務(wù)時,在6BBB端口監(jiān)聽,時長為m_uConnectionTimeout,如果收到安全級DCS的發(fā)包,就能正常建立連接,如果沒收到,就會連接失敗報錯,其中SafetyCommOpen()是melco提供的safetycomm.dll的接口函數(shù)。
m_uConnectionTimeout默認為2 s,通過在安全級服務(wù)器抓包可知,這個時間小于發(fā)包時間間隔4 s,一旦是在這個間隔中3K服務(wù)器加載DCS任務(wù)都會導(dǎo)致連接失敗。通過上面的分析,修改配置文件DCS.INI里ConnectionTimeout_ms = 5000即可解決問題。
3 結(jié)語
從整個模擬機的通信設(shè)置來看,最初設(shè)計的過程模型3K仿真平臺與MECLO虛擬DCS通信的機制不合適,整個模擬機的控制,包括加載、運行、停止、凍結(jié)等操作都是由過程模型仿真平臺的教控臺發(fā)出,這樣安全級DCS在啟動完成后,不知道過程模型仿真平臺何時加載通信任務(wù)開始建立通信連接,只能被動地不停地向過程模型服務(wù)器發(fā)包請求直到被接受,因此,最佳的通信設(shè)計模式應(yīng)該是在建立DCS通信時,由安全級DCS建立一個TCP SERVER,監(jiān)聽等待過程模型仿真服務(wù)器發(fā)起連接建立通信渠道。核電站的儀控系統(tǒng)近年來均由傳統(tǒng)的模擬硬盤臺向數(shù)字儀控的DCS發(fā)展,基于仿真度和安全性考慮,基本都采用獨立虛擬DCS方式對其進行仿真,因此,不可避免地需要設(shè)計與過程模型仿真間的通信,通信模式的設(shè)計應(yīng)該考慮虛擬DCS通信網(wǎng)關(guān)采用TCP SERVER方式,而模型教控臺側(cè)通信程序采用TCP CLIENT方式為宜。
收稿日期:2020-07-06
作者簡介:韋雄(1978—),男,湖北黃岡人,工程師,研究方向:核電站模擬機運維。