張曉冬
(北京廣利核系統工程有限公司,北京 100094)
核電廠的數字化儀控系統(DCS)是以計算機和網絡通信技術為基礎的分布式控制系統,而對時子系統是數字化控制系統的重要組成部分,為整個數字化儀控系統提供基本的時間基準,使系統內的各個設備、模塊的時間與系統時間保持一致。
各主流廠家的數字化儀控系統中均有對時功能,有些廠家的系統在應用時間精度要求較高的時間順序(SOE)功能時需要增加額外的對時設備[1],這導致在系統安裝時需要大量的硬接線,給使用帶來不便。大部分廠家數字化儀控系統中的對時子系統不支持冗余,對時部分發生單故障時,雖不會影響系統的控制功能,但系統會失去對時。隨著核電廠對系統可靠性要求的不斷提高,對時系統的可靠性還有進一步提高的潛在要求。本文設計的對時子系統結合了目前已有的基本對時技術,如基于以太網的NTP對時、通信對時、脈沖對時等,把對時功能合理地分配在數字化儀控系統架構中的各組件中,實現不用額外的對時設備就可實現完整的對時子系統,適用于系統中存在大量SOE點類型的應用情況[2],并利用系統中各組件具有的冗余特點,使對時源也具備冗余特性,提高對時子系統的可靠性。
對時子系統為數字化儀控系統內的事件發生、數據采集和事故分析等功能提供時間保證。在核電站的數字化儀控系統中高分辨率的事件信息記錄是為了能夠依次分辨這些高速采集信號之間的聯系,分辨出各信號的先后順序。對時子系統的主要作用是提升數字化儀控系統的事件分辨率。
根據事件產生的源頭,事件可分為開關量事件、模擬量事件、SOE事件和設備故障事件等,這些事件中對時間精度要求最高的是開關量事件和SOE事件。開關量事件,指開關量物理采集點變位觸發的事件,需要滿足在核電廠不同控制站的不同I/O模塊間采集開關量的時間精度,一般為50ms[1]。事件順序排列(SOE)是對開關量采集的一種特殊需求,要求能分辨出儀控系統中不同控制站的不同I/O模塊之間開關量變位大于1ms時的順序,也稱為1ms分辨率要求[4-6],要實現這個指標,時間精度必須達到±0.5ms。
對時子系統的設計包括對時的總體架構設計,系統內各設備、模塊的對時功能設計,以及各模塊對時間戳的處理等。在技術可實現的前提下,選擇簡單可靠的技術實現滿足指標要求的對時子系統的設計,并盡量減少對時系統的接線量和提高對時系統的可靠性。
對時子系統在典型數字化儀控系統網絡下的總體架構,如圖1所示。
典型的數字化儀控系統具有操作員站(OPS)、服務器、工程師站(未在圖1中)和現場控制站,其中現場控制站包括主控模塊、通信模塊和I/O模塊。全廠對時信號通過服務器接入系統,服務器在系統網中通過NTP對時協議對所有操作員站和所有主控模塊進行對時[1],主控模塊通過控制網給通信模塊對時,通信模塊給本站內的I/O模塊進行通信對時和脈沖對時[3],并且系統中所有站的通信模塊組成站間對時總線(TBUS)。站間對時總線的設計是保證系統范圍內所有I/O模塊相對時間誤差的關鍵。
事件由儀控系統中的不同設備產生,主要包括服務器、主控制器和I/O模塊,對事件的識別和打時間戳等操作,只能由產生事件的設備或者在通信的上行鏈路中處于上方的設備進行處理。在圖1中,控制網2的通信周期為20ms,所以對于開關量信號50ms分辨率的要求,只要保證站間I/O模塊的時間精度小于30ms,就可以由主控制器處理開關量的時間戳;對于SOE的1ms分辨率要求,識別變位和打時間戳必須由I/O模塊承擔,I/O模塊傳輸的不僅是當前的通道狀態,還包括變位的事件和時間。
在系統的通信架構中所有主控模塊都接到系統網,并與1對或者幾對I/O處理服務器通信,所以利用當前的網絡,由I/O服務器給主控模塊對時是最優選擇。主控模塊、服務器和操作員站和其它2層設備都是基于操作系統實現的,都有完整的UDP協議棧,所以選擇成熟且廣泛應用的對時協議,Network Time Protocol(NTP)是最優選擇,此協議實現的對時精度在局域網中優于1ms[7]。
服務器的對時功能設計主要有以下幾項:
1)接收校時源,同步服務器時間:系統的時間要實現與核電廠時間的一致性,需要接收來自核電廠的統一對時信號。時間的來源一般為GPS[8],經過對時集控系統處理[9],分別連接需要對時的系統中[10]。系統的對時接口選擇比較通用的RS485對時接口[8],通過菊花鏈的連接方式與冗余的服務器組成總線型連接。
2)為操作員站和其它2層設備對時:服務器每分鐘在管理網中進行NTP廣播對時。
3)為所有控制站提供NTP對時:服務器每分鐘在系統網中進行NTP廣播對時。
4)多組服務器和冗余情況下的對時處理:對時服務要保證同時只有1個服務器提供對時服務。首先,只有當前為主的服務器可提供對時服務;在多組服務器中序號最小且正常的才能提供對時服務[1];其次,當所有服務器的校時源都異常時,序號最小的服務器提供對時服務[9]。此設計實現了服務器對時的冗余功能。
主控模塊是實現對時功能的核心模塊,其中由處于主模式運行的主控模塊處理對時功能,包括NTP對時客戶端功能、對時源站選舉功能、通信對時功能。
具體功能設計如下:
1)NTP對時客戶端功能:主控模塊實現NTP協議棧,配置為NTP校時客戶端,接收服務器NTP對時,同步自身時間[7]。
2)對時源站選舉功能:系統中的控制站都連接在系統網中,主控模塊需要實現選擇哪個站為站間對時總線中的對時源站的功能。選擇的規則包括:選取最小站號的站為對時源站[1]、通信孤立的站不為對時源站、通信模塊發生故障的站不為對時源、同站內只有主運行模式的通信模塊才能為對時源。此設計實現了對時源站在整個系統中的冗余功能和對時源在站內的冗余功能。
3)通信對時功能:主控模塊定時觸發對時標志,通過控制網1傳遞給通信模塊,對時周期為1min,對時的內容信息包括:年、月、日、時、分、秒、亞毫秒(0.1ms)[10],通信模塊識別到對時標志后,把協議中的時間信息同步到自身時鐘。
通信模塊在系統中是冗余的,主模式的通信模塊實現的對時功能包括:接收來自主控模塊的通信對時,執行站間對時源站的功能,為I/O模塊提供通信對時和脈沖對時;從模式的通信模塊實現的對時功能包括:接收來自主控模塊的通信對時、執行站間對時的接收站功能。
3.3.1 站間對時總線
通信模塊有兩種狀態:一種是對時源站狀態。這種狀態中的通信模塊負責在站間對時總線上廣播對時信號;另一種是對時接收站的狀態。這種狀態的通信模塊負責接收站間對時總線上的對時信號。通信模塊的這兩種狀態是由上述主控模塊的對時源站選舉功能決定和實現的。
通信模塊是由FPGA技術實現的,其對數據的處理具有并發性和時間恒定性的優勢。利用這一特點,本設計中選擇基于兩線制的RS485接口作為給通信模塊間的站間對時總線。RS485具有簡單可靠和總線型連接等優點,可以同時連接多個節點,而其半雙工的通信模式也完全滿足對時的單向廣播的要求。對時廣播的波特率設定為9600bps,8位數據位,1個校驗位和1位停止位,包的數據格式為起始字節、約定的特殊字符組合和結束標志。
作為對時源的通信模塊每隔10s發送對時廣播包,承擔對時接收功能的通信模塊,接收到對時數據并進行校驗,通過后觸發對本站內I/O模塊的脈沖對時。由于FPGA不會像CPU和單片機等受運行周期的影響而產生時間波動,對通信包的接收和處理都是實時的,且延遲時間可以精確計算,所以對時偏差可以被進行精確補償。
3.3.2 通信對時
通信模塊接收主控模塊的通信對時,為I/O模塊提供通信對時功能。通信模塊每分鐘把主控模塊傳遞的時間信息同步到自身時鐘,其中承擔對時源站的通信模塊取通信中的所有的時間信息同步自身時鐘,承擔對時接收站的通信模塊只同步到秒級的時間。通信對時中包含時間的完整信息,從年到亞毫秒。
通信模塊與I/O模塊間的通信對時通過控制網2實現。通信模塊本地時鐘到30s整時向所有I/O模塊發送通信對時廣播。如果此時通信模塊正在與I/O模塊進行數據通信,則等待I/O通信結束后再發送對時幀,如圖2所示。對時發送完成后,繼續下一個I/O數據輪詢,所以時間偏差最多為1個I/O模塊的通信周期。
3.3.3 脈沖對時
I/O模塊基于單片機技術實現,如果只通過通信對時,由于其程序運行周期帶來的誤差影響,很難保證對時精度優于±0.5ms,所以給I/O模塊的對時除了通信對時外,還需要更高精度的脈沖對時。
脈沖對時依靠數字信號的階躍跳變傳遞時間信息,所以脈沖只能提供一個約定的時間信息,比如分脈沖的約定是整分鐘時發生首次跳變信號[3],時間的其它信息,比如年、月、日、時、分,通過通信對時傳遞。當前主流的MCU都自帶RTC功能,能實現整個萬年歷功能,所以選擇由I/O模塊處理所有時間,而不是由I/O模塊和其它模塊(比如主控模塊)拼接時間戳是更簡單有效的方案。
脈沖對時的間隔可以為秒,也可為分鐘,選擇對時間隔的一個因素是需要保證I/O模塊在脈沖對時間隔內的時間偏差都滿足要求。本設計中在I/O模塊中時間基準所用的晶振的溫漂最大誤差為50ppm@(-25℃~85℃),模塊應用的環境溫度范圍為0℃~70℃,取對時脈沖間隔時間為10s,可計算得到時間最大誤差小于0.5ms,滿足要求。脈沖信號在周期的開始持續保持1s的“低”電平,再保持9s的“高”電平,脈沖的波形間圖如圖3所示。
脈沖對時分兩種情況:一是通信模塊作為對時源時,在每次發完站間對時后,延遲一定時間(補償對時接收站的時間延遲),再給本站I/O模塊發送對時脈沖信號;二是作為對時接收站的通信模塊,在接收到站間對時后,立刻在站內發送脈沖對時。
I/O模塊接收到脈沖信號后,在單片機中產生中斷信號,程序立即執行外部中斷處理函數,對本地時間進行同步,把從通信對時來的時間調整到最近的整10s的時間,比如0s、10s、20s、30s、40s、50s。
I/O模塊處理開關量事件時,傳遞采集通道的當前值并打時間戳,識別開關量變位事件的任務由主控模塊處理。I/O模塊處理SOE信號時需要識別變位事件,并給事件打時間戳,傳遞內容包括:通道號、跳變沿和完整的時間信息,包括:年、月、日、時、分、秒、亞毫秒(0.1ms)。在通信模塊和I/O模塊的通信周期內,每個通道都可上傳多次SOE事件。事件信息上傳到服務器和OPS中,進行排位和事件顯示等處理。
事件類型的不同,對時間精度的要求也不同。系統中需處理的所有事件中,對時間精度要求最高的是開關量事件和SOE事件,前者為50ms[1],后者為1ms[4-6]。以下以這兩種事件為代表,分析和驗證此對時設計的精度。
上述兩種事件的時間戳都由I/O模塊處理,對時導致的偏差都是I/O模塊間的對時精度。由于I/O模塊用硬中斷的方式處理對時信號,所以可忽略MCU收到脈沖到完成對時的時間誤差,而不同I/O模塊收到的對時脈沖的時間差是決定I/O模塊間時間誤差的關鍵。驗證方法是用同一個示波器的2個通道分別連接2個不同控制站中不同I/O模塊的對時脈沖信號,觀察對時信號發生時,其對時脈沖觸發沿的時間差異。經過多次測試,對時脈沖誤差穩定在5μs以下,遠小于0.5ms。
開關量事件的時間戳由I/O模塊處理,但識別變位和產生事件卻由主控模塊處理。在連接站間對時總線TBUS的情況下,根據數據的傳輸路徑,時間誤差包括:I/O模塊相對時間誤差5μs、控制網2的通信周期導致的誤差20ms,總的最大誤差大概為20ms,滿足50ms的要求。在不連接站間對時總線的情況下,I/O模塊相對時間誤差包括:主控模塊站間時間差1ms,通信模塊與主控模塊的最大時間誤差1ms,通信模塊與I/O模塊間的時間差(對時脈沖)5μs,控制網2的通信周期導致的最大誤差20ms,總誤差大概為22ms,滿足50ms的要求,所以不需要SOE信號的控制站可不連接站間對時總線TBUS。
SOE事件由I/O模塊識別變位產生,每個事件都有單獨的時間戳,所以時間戳的誤差產生源只有I/O模塊間的時間誤差,而I/O模塊間的精確對時是通過脈沖對時實現的。SOE功能是對時設計最嚴格的考驗,用到了大部分的對時機制,在驗證SOE時采取了實際綜合驗證的方法。
選取控制站1和控制站3的不同I/O模塊的不同SOE通道進行SOE整體時間性能的驗證。方法是用信號產生工裝在控制站1的3個不同的SOE通道A、B、C和控制站2的3個不同SOE通道D、E、F中分別注入變位信號,時間間隔1ms[4-6](信號產生工裝的精度優于0.1ms),變位順序為A、D、B、E、C、F,然后等待空閑時間,每11s為1個大循環。觀察SOE變位日志記錄時間的精度和順序,尤其在整分鐘、半分鐘和整10秒間隔前后的時間順序[6]。在大量多組數據測試中,得到的誤差結果基本不超過±0.1ms,并且這個誤差還要包括作為輸入源的工裝的時間誤差,所以實際DCS的對時誤差必然優于0.5ms的指標要求。
測試得到的典型數據見表1。

表1 SOE分辨率測試Table 1 SOE Resolution Test
本文中描述的對時設計和實現方法已經在數字化儀控系統SH_N中應用。經過長期的運行和多輪的測試,此對時設計和實現對開關量事件的處理精度優于50ms,對SOE事件的處理精度優于1ms,滿足數字化儀控系統對時間精度的要求。整個系統只需要1個對時輸入接口,系統在SOE應用的規模擴展時也不需額外的對時設備支持,提高了系統的易用性。系統中承擔主要對時功能的I/O服務器、主控模塊和通信模塊在站內實現了冗余,站間對時源也實現了冗余,有效提高了對時系統的易用性和可靠性。