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