余冠華 雷煥宇
【摘 要】在核電廠DCS系統(tǒng)中,要求控制器冗余并且在切換過程中沒有擾動。本文討論了控制器切換擾動的測試方法,并通過測試數(shù)據(jù)進行了分析,找到了控制器切換過程中造成擾動的原因。在產(chǎn)品進行了改進后,進行了回歸測試,驗證了改進后的產(chǎn)品消除了控制器冗余切換的擾動。
【關鍵詞】控制器冗余;控制器無擾切換;數(shù)據(jù)抓包分析;上下行數(shù)據(jù)
一、引言
集散控制系統(tǒng)(DCS)因為其控制集中,危險分散的特點,與核電廠的控制策略非常吻合,因此在核儀控領域得到廣泛的應用。伴隨著核電自主化的戰(zhàn)略目標,國內(nèi)核儀控企業(yè)都在努力研發(fā)自主DCS產(chǎn)品。其中DCS控制器的無擾切換指標,在所有核電廠的技術(shù)規(guī)格書中都會有硬性要求必須滿足,所以該指標也是研發(fā)DCS產(chǎn)品過程中投入較大的一項產(chǎn)品需求。
在控制站中,控制器通常成對配置,一主一備。兩個控制器同時參與數(shù)據(jù)的采集和運算,但只有主控制器進行輸出。上行數(shù)據(jù)發(fā)送給監(jiān)控網(wǎng)絡,再由通信服務器發(fā)送給上位機進行監(jiān)視和控制;下行數(shù)據(jù)通過總線發(fā)送給輸出板卡,將信號送至現(xiàn)場執(zhí)行設備。當滿足控制器切換條件時,如主控制器故障、主控制器關鍵進程錯誤等,則主備控制器切換,備控制器變成主控制器。業(yè)內(nèi)普遍認為,控制器冗余無擾切換要求在切換時,對上行數(shù)據(jù)和下行數(shù)據(jù)的擾動不超過一個周期。
本文討論在DCS產(chǎn)品研發(fā)過程中控制器無擾切換的測試方法,并對測試實例分析,由此改進產(chǎn)品,并通過回歸測試來驗證改進后的指標。
二、測試方法
上行數(shù)據(jù)切換擾動測試方法:在模擬量輸入通道用信號發(fā)生器加載三角波信號,在上位機可以觀察波形。在通信服務器抓數(shù)據(jù)包,觀察控制器發(fā)送至通信服務器數(shù)據(jù)。當控制器發(fā)生切換時,通過上位機的實時趨勢和歷史趨勢可以觀察到是否有擾動發(fā)生,通過抓數(shù)據(jù)包可以確定由不同的控制器發(fā)送數(shù)據(jù)從而確定切換發(fā)生的時間,同時可以觀察到擾動發(fā)生的具體細節(jié)。
下行數(shù)據(jù)切換擾動測試方法:對控制器進行組態(tài),讓其一直下發(fā)三角波信號,并在對應的模擬量輸出通道串聯(lián)一個250歐電阻,在電阻兩端并聯(lián)一個示波器,可以看到控制器輸出的三角波信號波形。當控制器發(fā)生切換時,通過示波器可以觀察到是否有擾動發(fā)生。
基于以上的測試方法搭建測試環(huán)境,確認控制器沒有發(fā)生切換時上下行數(shù)據(jù)發(fā)送正常。通過拔出主控制器來模擬故障導致控制器切換,并記錄切換瞬間的波形和數(shù)據(jù)包。
三、測試實例及分析
選取一個控制站搭建測試環(huán)境,并拔出主控制器造成主備切換。測試結(jié)果如下:
(1)上行數(shù)據(jù)切換擾動
在上位機觀察實時趨勢和歷史趨勢,發(fā)現(xiàn)實時趨勢正常,但歷史趨勢有擾動。通過查詢歷史數(shù)據(jù),發(fā)現(xiàn)在切換過程中有一個數(shù)據(jù)包丟失了。
通過網(wǎng)絡數(shù)據(jù)抓包,發(fā)現(xiàn)控制器發(fā)送給通信服務器的切換時間僅為0.070879s,小于控制器100ms計算周期,也小于400ms周期發(fā)送數(shù)據(jù)給通信服務器的時間,但是還是發(fā)生了歷史數(shù)據(jù)丟失。通過對測試抓包數(shù)據(jù)分析,我們發(fā)現(xiàn)了如下圖的情況。
紅框中是試驗中的一次切換過程,3RRI401MD是通過控制器發(fā)送給通信服務器的值,通過在通信服務器抓取解析后的數(shù)據(jù)發(fā)現(xiàn)的現(xiàn)象,2018-1-31,10:30:48.362為切換前的最后一個數(shù)據(jù)440.271088,2018-1-31,10:30:48.468為切換后發(fā)送的第一次數(shù)據(jù),間隔約0.1s,但是發(fā)送的數(shù)據(jù)是切換前的2個數(shù)據(jù)包,這兩個數(shù)據(jù)是沒有被存到歷史服務器中的,真正被歷史服務器存儲的數(shù)據(jù)是2018-1-31,10:30:48.766的數(shù)據(jù)428.216824,在紅框中用紅細線圈的地方可以發(fā)現(xiàn),在這個數(shù)據(jù)之后又發(fā)送了440.271088和428.216824,由于這兩個數(shù)據(jù)的時間戳和之前是一樣的,所以歷史庫并不會再次存儲這些數(shù)據(jù)。下一次有效的數(shù)據(jù)2018-1-31,10:30:49.422的數(shù)據(jù)402.571968。
通過數(shù)據(jù)分析可以發(fā)現(xiàn),控制器切換過程中丟失的歷史數(shù)據(jù),實際上控制器是發(fā)送給通信服務器了的,甚至還重復發(fā)送,但并沒有存入歷史庫。在分析控制器和通信服務器的軟件代碼后,我們發(fā)現(xiàn)了問題原因:
控制器為避免切換時丟數(shù)據(jù)包,當切換完成,備控制器變?yōu)橹骺刂破骱?,先發(fā)送一個重發(fā)包,以保證無擾切換。但是在測試中發(fā)現(xiàn)了不止一個重發(fā)包,通過抓包發(fā)現(xiàn)二層服務器下發(fā)了重發(fā)命令。但是在第一次重發(fā)包接收后,沒有及時清除定時器,導致繼續(xù)重發(fā)數(shù)據(jù)包,占用了正常數(shù)據(jù)發(fā)送的時間,從而導致了歷史數(shù)據(jù)無法正常存入歷史庫。
(2)下行數(shù)據(jù)切換擾動
在示波器觀察下行數(shù)據(jù)波形。主備控制器切換的過程中,下行數(shù)據(jù)切換時間為0.16s,用示波器記錄的波形如下:
圖中X1對應的時間為切換的時刻,X2對應的時間為切換后的時刻,X2-X1=0.16s。由于控制器的邏輯掃描周期為0.1s,所以此次切換的時間為0.06s~0.16s,擾動小于一個掃描周期的時間,說明控制器下行信號可以實現(xiàn)冗余無擾切換。
通過以上的測試我們可以發(fā)現(xiàn),控制器冗余切換過程,對于上行數(shù)據(jù)是有擾的,對于下行數(shù)據(jù)是無擾的。
四、改進及回歸測試
通過上述的測試和分析結(jié)果,我們定位了控制器冗余切換時上行數(shù)據(jù)擾動原因,以此為依據(jù)修改了產(chǎn)品。具體修改方案為:當通信服務檢查到切換并收到重發(fā)包后,清除定時器;控制器端修改原來備控制器包序號策略,備控制器包序號由原來不計數(shù),修改為每組一包后加1。這樣就避免了重發(fā)數(shù)據(jù)包擠占正常數(shù)據(jù)發(fā)送的時間。
回歸測試結(jié)果如下:
以控制器192.168.1.105切換到192.168.1.5為例,開始192.168.1.105這個IP所在的控制器作為主控制器,通過在一層工程師站抓包,分析數(shù)據(jù)發(fā)現(xiàn)如下情況,切換前最后一次發(fā)送給通信服務器的時間為
兩組數(shù)據(jù)時間差為0.205213s,即此次控制器上行數(shù)據(jù)切換所用的時間為0.205213s,控制器將數(shù)據(jù)發(fā)送給通訊服務器,通過對通訊服務器內(nèi)存變化抓取數(shù)據(jù),發(fā)現(xiàn)如下情況
上述數(shù)據(jù)是在主通訊服務器內(nèi)存中抓取的數(shù)據(jù)值的變化情況,可以看出加粗部分的時間差為0.207s,與一層工程師站計算的切換時間相吻合,兩組數(shù)據(jù)與前后數(shù)據(jù)的間隔分別約為400ms,與正常情況下上行數(shù)據(jù)包的發(fā)包周期相吻合。從發(fā)送數(shù)據(jù)看沒有重發(fā)和不正常值,說明控制器發(fā)送至通信服務器的數(shù)據(jù)包正常。
下面通過歷史服務器的數(shù)據(jù)庫和歷史趨勢進一步說明。下圖歷史庫數(shù)據(jù),選中部分是切換前后的數(shù)據(jù),從數(shù)據(jù)上可以對比切換前后的數(shù)據(jù),切換前2018-04-08 19.22.23.367的值為11.81104,切換后2018-04-08 19.22.23.571的值為5.50288,與通訊服務器中抓取到的數(shù)據(jù)值是一一吻合的。下圖上位機歷史趨勢,是觀察點3RCP003MI的歷史趨勢,紅線對應的時間切換前后的時間,從圖中可以看出歷史趨勢是連續(xù)平滑的。
加粗部分的為切換前后的兩次數(shù)據(jù),可以看出上位機的值與通訊服務器的值完全一致,并未發(fā)生丟失,切換前后的數(shù)據(jù)與完全一致,數(shù)據(jù)間隔時間約為400ms,符合上行數(shù)據(jù)包的周期時間間隔。
通過回歸測試可以發(fā)現(xiàn),控制器冗余切換時,實時數(shù)據(jù)和歷史數(shù)據(jù)都沒有丟失,可以認為產(chǎn)品在經(jīng)過改進后,切換時上行數(shù)據(jù)沒有擾動。
五、結(jié)論
本文討論了DCS控制器冗余的測試方法,以及對發(fā)現(xiàn)問題的改進和回歸測試。需要特別指出的是,導致控制器切換的條件不止一種,測試要考慮覆蓋率的問題,每種切換條件都應該盡量測試到。本文討論的是其中比較有代表性的切換條件,其他切換條件的測試在方法上是大同小異的。從測試的結(jié)果來看,本文的測試方法是有效的,對問題的定位是準確的,修改方案也是合理的。
參考文獻:
[1] 核電廠非安全級平臺研制平臺需求規(guī)格書,CNCS,2016
(作者單位:中核控制系統(tǒng)工程有限公司)