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