王長清,趙天恩,李 彥,江長青,蔡 菠,何 嶸
(南京南瑞繼保電氣有限公司,江蘇 南京 211102)
電力系統自動化設備配置時鐘同步系統,為不同的設備提供了時鐘同步所需的時鐘源。自動化設備多采用分布式系統架構,設備內模塊之間也要進行時鐘同步。自動化設備和模塊的時鐘同步,便于進行信息綜合[1];同時,只有采用時鐘同步手段,才能滿足事件順序記錄(sequence of event,SOE)時標誤差不大于1 ms的要求[2-3]。尤其在系統發生故障時,SOE時標的統一、準確,有利于事故原因分析。
時鐘同步裝置接收北斗/GPS衛星發送的授時信號,處理后向自動化設備提供時鐘同步信號。時鐘同步裝置輸出同步信號的方式主要有IRIG-B、IEEE 1588、秒脈沖(pulse per second,PPS)、分脈沖(pulse per minute,PPM)、簡單網絡時間協議(simple network time protocol,SNTP)、IEC 103報文等[4]。
本文主要研究了分布式系統內的串行通信對時設計。文獻[5]介紹了一種采用串口對時和脈沖對時結合的方式。串口報文連接線負責設備日歷時間的對時。PPS連接線下發同步信息。文獻[6]介紹了一種采用串口分時復用的方式。串口連接線先下發日歷時間,在整秒時刻再下發PPS同步碼。以上兩種方法均能實現較精確的對時。但方法一串口和脈沖對時線分開,受限于布線數目;方法二在中斷中響應整秒同步碼,中斷響應延時不確定,影響對時精度和總線復用。本文設計的方案彌補了上述兩種方法的缺陷。
系統包含主控模塊、高速串行通信總線以及掛接在高速串行通信總線上的輔控模塊。主控模塊借助現場可編程門陣列(field programmable gate array,FPGA)實現串行通信,在高速串行通信總線上傳輸數據通信和對時報文。數據通信報文采用主從輪詢方式,輔控模塊接收到該報文后回復報文;對時報文采用廣播方式,輔控模塊接收到該報文后只進行對時處理流程,不回復報文。
本文設計的分布式系統結構如圖1所示。

圖1 分布式系統結構圖Fig.1 Structure of the distributed system
主控模塊軟件劃分為管理、控制算法、對時、串行通信等模塊。本文僅闡述與對時相關的內容。主控模塊內部通過共享內存的方式進行數據交換。共享內存分為循環報文緩存區和管理內存區。
一方面,主控模塊集成的FPGA通過IRIG-B方式從北斗/GPS授時裝置接收授時信息,并將解碼后的信息和整秒對應的時鐘節拍(TICK)通過管理內存區共享給對時模塊。對時模塊負責守時,并將下一個整秒對應的TICK值和這一秒對應的TICK值通過管理內存區共享給FPGA,由FPGA完成對時報文組幀和發送。
另一方面,FPGA接收到串行通信報文后,使用直接內存訪問(direct memory access,DMA)方式推送到循環報文緩沖區,更新管理內存區報文索引并通知其他模塊處理。
主控模塊硬件如圖2所示。

圖2 主控模塊硬件框圖Fig.2 Hardware block diagram of the main control module
目前,串行通信總線較為常見的實現方式有控制器局域網(controller area network,CAN)和RS-485總線。本文高速串行通信總線采用RS-485。
主控模塊通過串行通信總線與輔控模塊進行通信。通信報文包括短周期的變量交換報文、長周期的對時報文,突發的調試下載報文等。短周期報文是實時報文,與主控模塊任務周期相關。長周期報文和突發報文是非實時報文[7]。對時報文數據通信報文分時復用該通信總線,簡化了系統硬件設計和布線成本,有利于現場施工和問題排查。
輔控模塊硬件采用微控制單元(microcontroller unit,MCU)芯片原生通用異步收發器(universal asynchronous receiver/transmitter,UART)實現高速串行通信。系統設計DMA方式完成報文收發,從而有效地減少了MCU頻繁收發報文的耗時[8]。
輔控模塊MCU在UART接收超時中斷中處理接收到的串口報文,在UART發送完成中斷中進行RS-485收發方向控制,保證了收發控制的實時性。硬件上,MCU外部有RS-485總線驅動控制電路。這使得MCU必須周期性地向驅動控制電路發送脈沖才能發出報文,否則只能接收。軟件上,MCU增加收發方向防誤控制。當超過任務周期沒有收到報文或者報文發送超時,則將收發方向強制為接收。這可以防止由于MCU軟件跑飛或者收發方向控制失敗導致高速串行總線掛死,增強了通信總線的健壯性。
輔控模塊通過MCU自帶捕獲單元獲取對時報文起始時刻。當MCU不具備捕獲功能時,也可外擴FPGA處理高速串行通信報文并記錄報文起始時刻。
輔控模塊硬件如圖3所示。

圖3 輔控模塊硬件框圖Fig.3 Hardware block diagram of the auxiliary control module
為了提高對時精度,主控模塊串行通信模塊由FPGA實現。雖然對時報文與數據通信分時復用同一總線,但由于主控模塊發出的對時報文中包含發送起始時刻對應的精確時間戳,所以主控模塊下發對時報文時刻不受整秒或者固定時間間隔限制。考慮到輔控模塊的守時精度,主控模塊下發廣播對時報文的時間間隔一般在10 s以內。本系統中主控模塊廣播下發對時報文,將時鐘同步功能集成于通信通道的空閑時隙中,每隔1 s左右下發一次。考慮輔控模塊守時進秒機制,下發對時報文時刻一般在該秒的100~900 ms之間。
輔控模塊接收主控模塊下發的對時報文,并記錄接收報文時刻對應的輔控模塊內部時鐘。由于輔控模塊采用硬件捕獲報文起始時刻,故捕獲時刻不受關中斷等程序執行的影響。
該報文時間戳信息,除串行通信模塊發出報文起始時刻對應協調世界時(coordinated universal time,UTC)秒外,還包含發出報文時刻的納秒時間,以及閏秒標志等。該報文中的納秒時間是主控模塊FPGA在對時報文發出時實時打上的時間戳,用于減少發送處理產生的誤差。
主控模塊下發的對時報文幀格式如圖4所示。

圖4 對時報文幀格式Fig.4 Frame format of the time synchronization message
輔控模塊接收對時報文處理流程如圖5所示。

圖5 對時報文處理流程圖Fig.5 Process flow of time synchronization message
輔控模塊接收對時報文并記錄報文起始到達時刻,并對接收報文的時刻的有效性進行校驗。有效性校驗包含絕對偏差和相對偏差兩部分校驗。絕對偏差是相鄰2個對時報文攜帶時間戳的時間差與輔控模塊內部節拍對應的時間差;相對偏差是2個對時報文的時間差歸算到1 s后,與歷史記錄的偏差。當絕對偏差超過一定范圍時,認為時鐘發生跳變或受到干擾,偏差范圍取主控模塊和輔控模塊晶振偏差之和,本系統取100 μs。當相對偏差超過一定范圍時,認為時鐘受到干擾,本系統取5 μs。當對時報文受到干擾時,該對時報文將被丟棄;當發生時鐘跳變時,對時報文進行3次有效性確認。
根據相鄰2幀報文中時間戳差值和輔控模塊記錄的TICK差值,計算1 s對應輔控模塊的TICK差值T1s。其中,TICK即輔控模塊系統時鐘節拍。考慮到晶振抖動和上升沿捕獲等誤差,根據歷史記錄T1s,采用卡爾曼濾波算法計算出平均Tavg1s值[9-10]。結合主控模塊下發時刻、輔控模塊接收時刻和傳輸延時,即可計算輔控模塊本地時刻。輔控模塊在定時中斷中對本地時鐘進行維護,進入中斷時讀取當前TICK值,再根據Tavg1s對TICK差值進行修正,獲取每次進中斷的絕對時刻,從而進行守時管理。
串行通信網絡一般沒有轉發環節,報文發送傳輸延時可以根據理論值推算。由于通信線長度改變造成傳輸延時的影響在幾個納秒級別,可以忽略不計。
當具有轉發環節時,可以根據以下方法獲取報文傳輸延時。主控模塊向輔控模塊發送報文包含時間戳T1。輔控模塊接收到報文的時間戳為T2。輔控模塊回復報文的時間戳為T3。主控模塊收到回復報文的時間戳為T4。則報文發送傳輸延時d為[11]:

(1)
本文主要分析圖1中沒有轉發環節的串行通信網絡。為了提高系統對時的精確度和可靠度,輔控模塊需要補償報文發送傳輸延時和晶振偏差引起的時間差。輔控模塊根據主控模塊對時報文時間戳、報文發送傳輸延時和晶振偏差,推算輔控模塊與主控模塊時鐘源的精確時間差,進而推算本地精確時間[12]。具體步驟如下。
①主控模塊FPGA發出廣播對時報文的時刻為S0、S1,...,Sn。輔控模塊接收對時報文對應的輔控模塊內部節拍依次為I0,I1,...,In。設輔控模塊內部時鐘源晶振理論頻率為FS、實際內部時鐘源晶振頻率為FI,則輔控模塊內部節拍到實際時鐘的轉換系數k為:

(2)
式中:n=1,2,...,N。
②使用相鄰2次對時報文計算k值,會出現一定抖動。因此,本文采用上文提及的濾波算法進行計算。
③采用輔控模塊理論晶振頻率時,時間上距離輔控模塊接收時刻In一定的時間間隔t。由于晶振偏差,對應實際時間間隔為:
t′=k×t
(3)
④若不考慮報文發送傳輸延時d,則對于主控模塊當前時刻S,對應輔控模塊的當前節拍I。則輔控模塊的時刻為:
(4)
若考慮報文發送傳輸延時d,則對于主控模塊當前時刻S,對應輔控模塊的當前節拍I,輔控模塊的時刻為:
(5)
結合上述過程,本系統產生誤差主要在于以下幾個方面。
①主控模塊發送對時報文時,報文中的納秒精度,誤差一般在百納秒級別。該部分誤差一方面由FPGA硬件邏輯電路延時引起,另一方面由FPGA時鐘精度和時鐘顆粒度決定。
②線路傳輸延時,由傳輸介質決定,對于本文所述分布式系統內一般在幾個納秒級別。
③輔控模塊捕獲報文誤差,受捕獲邊沿的波形質量和MCU捕獲時刻精度影響,一般在幾十納秒級別。
綜合以上誤差,采用該方案后,輔控模塊的對時精度可以達到微秒級別。采用實際系統,在輔控模塊中斷檢測整秒邊沿并輸出波形,與時鐘同步裝置秒脈沖輸出對比,實測對時偏差在±2.5 μs以內。該測試包括中斷響應引起的誤差,已完全滿足系統對時精度要求。
對時精度測試結果如圖6所示。

圖6 對時精度測試結果Fig.6 Accuracy test results of time synchronization
本文介紹了一種基于串行通信的對時設計,將時鐘同步功能集成于通信通道的空閑時隙中,布線方便、性能可靠。采用該對時設計的分布式系統已應用在光伏發電和電池管理領域,SOE精度經測試完全滿足現場要求,在多個工程現場投入運行,得到良好的應用效果。