張旭,黃鵬,彭韜,劉全東,張子鵬,李曉龍,李俊
(中國核動力研究設(shè)計院核反應(yīng)堆系統(tǒng)設(shè)計技術(shù)重點實驗室,成都610213)
核電廠安全級DCS 實現(xiàn)事故工況下緊急停堆和啟動專設(shè)安全設(shè)施的重要功能,正常運行時是“不動”的,因此無法直接判斷系統(tǒng)是否存在故障。通過系統(tǒng)的自診斷功能能夠覆蓋系統(tǒng)的絕大部分故障,部分未能覆蓋的可通過定期試驗完成,即定期試驗是為探測安全級DCS 的故障和檢查其可運行性,按計劃的間隔時間所進行的試驗。其中T2 試驗是驗證邏輯功能的正確性,一般基于編寫的腳本逐步進行,通過給定輸入值的組合,觀察輸出值是否符合預(yù)期,以此來驗證邏輯功能的正確性,T2 腳本示例如表1 所示。T2 腳本設(shè)計與執(zhí)行過程如圖1 所示。
純模擬(Simulation)仿真技術(shù)是指,采用不同于原系統(tǒng)的另一套開發(fā)環(huán)境下的建模技術(shù)來復(fù)現(xiàn)參考機組的系統(tǒng)或子系統(tǒng)[1]。純模擬仿真技術(shù)中可采用翻譯模擬(Translation)的方式,利用翻譯軟件實現(xiàn)工程應(yīng)用文件在不同平臺中的映射轉(zhuǎn)移。利用翻譯軟件實現(xiàn)工程應(yīng)用文件的跨平臺,可輔助進行測試腳本輸出預(yù)期值的計算。
表1 T2 腳本示例
定期試驗?zāi)_本由多列測試步驟組成的,每一步包含輸入值、輸出預(yù)期值與輸出實測值。輸出預(yù)期值在測試之前填寫,是輸入值經(jīng)過算法運算的理論結(jié)果。輸出實測值由上位機帶動下位機進行計算,并與輸出預(yù)期值比較,生成定期試驗結(jié)果。
工程師站(Maintenance Station,MTS)的算法組態(tài)信息包含儀控系統(tǒng)應(yīng)實現(xiàn)的算法,通常以算法塊連接的形式展現(xiàn)。定期試驗?zāi)_本輔助設(shè)計軟件(Script Assisting Design Software,SAD)應(yīng)能夠通過讀取工程師站的算法組態(tài)信息,結(jié)合預(yù)設(shè)的定期試驗設(shè)計原則,考查設(shè)計人員設(shè)定的輸出點,列出影響該輸出點的輸入點集合。設(shè)計人員通過分析算法邏輯,設(shè)計上述輸入點的數(shù)值集合,形成測試步驟。由SAD 計算腳本輸出預(yù)期值,完成腳本設(shè)計。
針對2.1 小節(jié)所述軟件需求,設(shè)計基于SAD 的腳本輔助設(shè)計流程。設(shè)計人員在工程應(yīng)用軟件中選擇待考察的系統(tǒng)與待考察輸出點。SAD 軟件解析MTS 編輯的工程應(yīng)用軟件,分析算法塊連線關(guān)系,匯總與待考察輸出點相關(guān)的輸入點信息。
SAD 將影響輸出點的所有算法邏輯映射到Simulink 軟件平臺,形成Simulink 算法文件。SAD 的核心計算模塊基于Simulink 軟件實現(xiàn)。Simulink 是Math-Works 公司MATLAB 軟件的子軟件,實現(xiàn)控制系統(tǒng)的仿真功能,廣泛應(yīng)用于科學(xué)研究、工程設(shè)計等工作中,可靠性與行業(yè)認(rèn)可度高。由設(shè)計人員根據(jù)SAD 提取出的輸入點集合與影響該輸出點的算法設(shè)計腳本的步驟與輸入值。再返回SAD 軟件,將設(shè)計人員設(shè)定的輸入值逐步代入Simulink 軟件,計算輸出預(yù)期值,寫入腳本文件,完成腳本的設(shè)計過程?;赟AD 的腳本輔助設(shè)計流程圖如圖2 所示。
為實現(xiàn)2.2 小節(jié)所述的軟件功能設(shè)計,SAD 的架構(gòu)分為4 個模塊,包括輸入讀取模塊、邏輯分析模塊、映射算法模塊、計算與結(jié)果導(dǎo)出模塊。
(1)輸入讀取模塊
不同平臺工程師站繪制的工程應(yīng)用軟件的格式不同。輸入讀取模塊實現(xiàn)工程應(yīng)用軟件組態(tài)文件格式向SAD 定義的數(shù)據(jù)格式的轉(zhuǎn)換。從各種工程師站繪制的不同格式的組態(tài)文件中,將信息抽離出來,并存入SAD自定義格式的“圖(Graph)”結(jié)構(gòu)中。
圖2 基于SAD的腳本輔助設(shè)計流程
從工程應(yīng)用軟件組態(tài)文件中可以解析出控制站數(shù)量、每個控制站每種卡件的數(shù)量、變量在板卡中的分配信息,每頁組態(tài)圖的算法塊連接關(guān)系等。組態(tài)圖中的算法塊稱為節(jié)點。節(jié)點包括三種:接口圖符、算法塊、變量(中間變量、輸入輸出變量、參數(shù)變量)。
Graph 結(jié)構(gòu)是節(jié)點和連接關(guān)系兩種信息的集合。節(jié)點記錄了組態(tài)文件中每個節(jié)點的信息,連接關(guān)系記錄了節(jié)點之間的連接關(guān)系。這兩種數(shù)據(jù)信息實現(xiàn)了將組態(tài)文件信息的重構(gòu)。
以C#語言實現(xiàn)SAD 為例,定義結(jié)構(gòu)體Item、Line分別表示一個算法塊和一條連接線,于是與考察輸出點相關(guān)的一套算法邏輯的相關(guān)信息可用兩個鏈表記錄,即:
public static List
public static List
輸入讀取模塊是對items、Lines 的填充。對于二進制格式存儲的源文件,可采用特定結(jié)構(gòu)體解析的方式讀取其內(nèi)容,對于不需要解析的源文件格式,可直接提取其內(nèi)容,并填充items、Lines。
在系統(tǒng)架構(gòu)設(shè)計層面,輸入讀取模塊實現(xiàn)了核心部分與被讀取文件的實質(zhì)性分離,即無論源文件是何種格式,都可通過只修改將輸入讀取模塊實現(xiàn)軟件的遷移,增強通用性。
(2)邏輯分析模塊
邏輯分析模塊對輸入讀取模塊得到的運算結(jié)果進行分析,對每個輸出變量進行分析,從該輸出變量出發(fā),按照組態(tài)邏輯圖的連接關(guān)系,逐層遞歸尋找與輸出變量相關(guān)的算法塊。與輸出變量相關(guān)的算法塊形成樹狀(Tree)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),Tree 結(jié)構(gòu)從某個輸出點開始追溯,記錄影響它的每個輸入點及其影響方式,即記錄每條邏輯鏈路經(jīng)過的算法塊。當(dāng)算法邏輯在組態(tài)文件中出現(xiàn)跨頁情況時,由邏輯分析模塊將頁間邏輯連接起來。當(dāng)出現(xiàn)環(huán)形或兩條線路匯合的情況時,交匯處的算法塊分別記錄在兩條支線上,并在映射算法模塊中予以合并。
該模塊具體功能由以下函數(shù)實現(xiàn):
publicvoidGetTree(string Start_Point);
publicList
publicvoidGet_Tree_After_Vertex(TreeNode_NewcurrNode,Vertex Start_Vertex);
publicList
圖3 邏輯分析模塊執(zhí)行過程
在查找相連圖符時,應(yīng)注意只查詢由一個圖符的輸出端口連向另一圖符的輸入端口連線,避免出現(xiàn)死循環(huán)的情況。
(3)映射算法模塊
為了在Simulink 平臺上重構(gòu)組態(tài)邏輯算法,需在Simulink 平臺先預(yù)先建立合適的算法庫、建立映射規(guī)則、完成算法塊和連接關(guān)系的映射。映射算法模塊實質(zhì)上起到了仿真技術(shù)中翻譯軟件的作用。
Simulink 的算法庫應(yīng)包含工程應(yīng)用軟件中可能用到的所有算法塊,按照一一對應(yīng)的映射規(guī)則將算法塊映射到Simulink 平臺。算法塊可使用Simulink 平臺自帶的算法塊進行封裝,也可用S 函數(shù)的形式實現(xiàn)每種可能出現(xiàn)的算法塊,并集成在Simulink 中新建的算法庫Library。
SAD 驅(qū)動Simulink 進行自動畫圖,即自動地在Simulink 中復(fù)現(xiàn)組態(tài)邏輯。映射過程包括兩步,首先是在邏輯分析模塊提取的樹狀結(jié)構(gòu)中按層級逐層將算法塊映射到Simulink 平臺,然后按照工程應(yīng)用軟件的連接關(guān)系自動地將算法塊在Simulink 平臺重新連接。
另外,Simulink 軟件的變量沒有“質(zhì)量位”的概念,所以對于工程應(yīng)用軟件中變量包含質(zhì)量位的情況(值與質(zhì)量位組合),SAD 需要用兩個變量來表示,算法庫中該算法塊的端口也應(yīng)增加。
圖4 基于Simulink平臺的算法映射過程
圖5 Simulink平臺算法庫
(4)計算與結(jié)果導(dǎo)出模塊
基于映射到Simulink 平臺的組態(tài)算法以及輸入值的組合,可進行仿真,計算出對應(yīng)的輸出值。計算與結(jié)果導(dǎo)出模塊實現(xiàn)將計算結(jié)果導(dǎo)出的某種文件格式的功能。該模塊相對于內(nèi)核部分是獨立的,即對于不同的導(dǎo)出格式或樣式的腳本文件,只需要修改該模塊即可,保證了內(nèi)核部分的通用性。
基于Microsoft Excel 編寫的測試腳本可通過引用Microsoft Excel 14.0 Object Library 庫文件進行讀寫操作。C#語言的實現(xiàn)形式為:
usingMicrosoft.Office.Interop.Excel;
SAD 與Simulink、Excel 三種之間的聯(lián)合交互關(guān)系如圖6 所示。
圖6 SAD與Simulink、Excel交互關(guān)系圖
以中國核動力研究設(shè)計院研制的核安全級儀控系統(tǒng)NASPIC 平臺為例進行實例分析。NASPIC 平臺的工程師站軟件為NASPES,腳本文件采用Excel 編寫。
以某簡單邏輯為例。4 個數(shù)字量輸入信號經(jīng)過4取2 表決判斷后,取反,形成輸出值,驅(qū)動具體設(shè)備的開關(guān)。
圖7 組態(tài)示例
SAD 運行讀取NASPES 的工程應(yīng)用軟件,形成的Simulink 平臺模型如圖8。
圖8 Simulink平臺上自動生成的模型
由于該模型僅用于做算法仿真計算,不作為用戶觀察分析使用,因而在圖符的坐標(biāo)大小與坐標(biāo)擺放中,僅使用最簡單的不重疊原則即可。
整理后的該圖如圖9 所示。
圖9 整理后的Simulink平臺上的模型
對于非簡單樹狀結(jié)構(gòu),本文所述的SAD 處理流程仍具有良好的仿真效果。
為便于觀察,本文這里使用不考慮質(zhì)量位模式,并將仿真結(jié)果使用Simulink 平臺的Display 模塊直接顯示仿真結(jié)果。
圖10 一種非簡單樹狀結(jié)構(gòu)情況
當(dāng)四個DI 值分為給定1、1、0、1 時,自動生成下圖,計算結(jié)果為0,正確。
圖11 仿真結(jié)果驗證1
當(dāng)四個DI 分別給0、1、0、0 時,自動生成下圖,計算結(jié)果為1,正確。
圖12 仿真結(jié)果驗證2
按照完整的流程,以某設(shè)備驅(qū)動的定期試驗?zāi)_本為例。截取形成部分腳本如表2。
本文所述采用純模擬仿真的技術(shù)路線可在其他需要脫離實體下位機進行組態(tài)邏輯運算功能的情況下得到更廣泛的應(yīng)用。該方法根據(jù)定期試驗具體需求進行適當(dāng)仿真,相較于虛擬實物(Emulation)[1-3]等仿真技術(shù)路線,該方法具有簡單快捷的優(yōu)勢,對仿真運行環(huán)境要求低,實現(xiàn)僅需MATLAB 軟件即可。
本文設(shè)計的腳本輔助設(shè)計方法中,仍有一個關(guān)鍵步驟需要人工參與,即腳本的中每一步的輸入值確定的過程。由于該步驟情況過多,同時過于依賴人的思考,以至于不同的設(shè)計人員設(shè)計的腳本也不盡相同,因而難以抽象出較為確定的邏輯語言。而由于以往的核安全級儀控系統(tǒng)工程項目數(shù)量過小,積累的經(jīng)過驗證正確的腳本數(shù)量遠遠不足以采用大數(shù)據(jù)的思想智能化的解決該問題。一個較為理想的解決方法是采用對開關(guān)量枚舉、對模擬量讀取閾值的辦法。該方法具有可行性,但會導(dǎo)致腳本過長。故本文采用半自動方法設(shè)計整套體系,將影響考察系統(tǒng)的輸入點采集與仿真計算兩個步驟自動化,節(jié)約工程設(shè)計人員的時間降低錯誤率。
表2 腳本結(jié)果