韓 穎,牟龍華,周 偉
(同濟大學電氣工程系,上海 201804)
在數字化變電站中,過程層負載大,同步精度要求高,同步誤差要求控制在1μs以內。合并單元作為變電站過程層與間隔層進行通信的接口和橋梁,是過程層的主要設備,通過向各路電子式電壓電流互感器發送同步轉換命令,以保證各路同時進行電壓電流采樣。
目前大多數變電站廣泛采用的是網絡時間協議NTP(network time protocol)進行同步對時,該協議是一種軟件時鐘同步[1],精度只能達到ms級。而IEEE1588協議則是專門針對網絡測控系統等工業以太網提出的精確時鐘同步協議PTP(precision time protocol),它非常適合變電站內工業以太網的應用要求,加以硬件輔助就能達到亞微秒級級的同步精度,但普通的單片機由于不具備實現IEEE1588的功能或者執行精度低而無法達到這一精度要求。
本文簡要闡述了IEEE1588時鐘同步系統的工作原理,給出了時間戳硬件標記的方法,介紹了合并單元中應用STM32F107微處理器實現IEEE1588協議的具體過程,為滿足變電站合并單元的時鐘同步精度要求提供了一種可參考的途徑。
IEEE1588協議定義的4種同步所必須的報文類型分別是Sync報文、Delay_Req報文、Follow-up報文、Delay_Resp報文[2]。通過對IEEE1588同步算法的分析,報文傳輸的具體過程以及到達節點時鐘的具體方式如下:
Sync報文由主時鐘采用廣播方式發布到網絡上。報文需要兩個時間戳,即從主時鐘處進入物理層的時刻TM1和在從時鐘節點處由物理層進入協議棧的時刻TS1。
Delay_Req報文采用單播方式由從時鐘發送向本同步域內的主時鐘,在從時鐘發出時刻TS2和主時鐘到達時刻TM2處各標記一次。
Follow-up報文也是由主時鐘采用廣播方式發出;而Delay_Resp報文則采用點對點方式發出,這兩類報文僅起到傳遞時間信息的作用,本身到達時刻不重要,因此不需要對報文的到達和離開時刻標記。
綜上所述,IEEE1588同步報文時間戳只需對Sync報文和Delay_Req這兩類報文進行標記。
PTP系統中的從時鐘通過與主時鐘交換上述的4種報文,從中獲取時間戳,計算出與主時鐘的時間偏差,根據偏差來調整自己的時間,從而達到與主時鐘的時間同步[3,4]。在PTP系統中,影響各時鐘同步的因素大體上有兩個:一是各時鐘的性能所引起的時間偏差,二是由于各種報文在網絡中傳輸所引起的網絡延遲。因此,PTP系統的同步過程可分為兩個階段:偏差修正階段和網絡延遲測量階段。整個同步原理如圖1所示。

圖1 IEEE1588時鐘同步原理Fig.1 Synchronization principle of IEEE1588
第一階段:修正主從時鐘之間的時間偏差,稱為偏差修正階段。在修正過程中,主時鐘按照所設定的時間間隔周期性地發出同步報文Sync,在報文中包含了報文發出的估計時間,從時鐘記錄收到同步報文的時間TS1,經過一定時間的延時,主時鐘隨后發出跟隨報文Follow_up,在報文中有Sync發出的精確時間TM1。這樣,從時鐘使用Follow_up報文中的Sync報文實際發出時間和接收時間,可以計算出從時鐘與主時鐘之間的偏移T_offset,根據偏移量來修正時間偏差[5,6]。

式中,T_delay為主時鐘與從時鐘之間的傳輸延遲時間,它將在下面的延遲測量階段測出,所以在這里是未知的。由于報文傳輸網絡存在著一定的延遲,因此還應進行網絡延遲的測量。
第二階段:網絡延遲測量階段。從時鐘發出延遲請求報文Delay_Req,并記錄發送時間TS2,當Delay_Req到達主時鐘時,主時鐘記錄其到達時間TM2,再用報文Delay_Resp將TM2發送給從時鐘。這樣,從時鐘就得到了4個準確的時間點:TM1、TS1、TM2、TS2。由下列方程可以非常準確地計算出網絡延時。
主時鐘傳輸到從時鐘的延時:

從時鐘傳輸到主時鐘的延時:

假設傳輸介質是對稱均勻的:

則由上面的算式可得

根據式(2)和式(3)計算出的值,從時鐘可以調整自己的時間,從而與主時鐘同步[7]。
根據IEEE1588協議,同步報文到達或離開節點的時刻須在介質訪問控制MAC(media access control)幀開始標志字節的最后一位結束,MAC目的地址第一個字節的第一位到來之時進行標記,如圖2所示。MAC幀由前導碼、幀開始標志、目的地址、源地址、數據長度、數據、幀填充、幀校驗8個部分組成。其中幀開始標志為一個字節,其值為10101011B。同步報文檢測和時間標記步驟如下所述。
步驟1 當有數據包到由物理層進入介質獨立端口MII(media independent interface)層,在數據包起始標志最后一位結束時,時間戳標記模塊將本地時鐘時間信息進行記錄[8,9]。
步驟2 若數據包MAC目的地址是廣播地址,繼續檢測該數據包的端口UDP(user data protocol),如果端口值號為319則說明是Sync報文。
步驟3 若該數據包的MAC目的地址非廣播地址,檢測該數據包的MAC目的地址和IP目的地址是否為本節點地址,若是UDP并且端口號為319,則確定為Delay_Req報文。
步驟4 如果上述條件中出現不符合的情況,模塊將剛才記錄的時鐘時刻丟棄并重置,等待下一次數據包的到來。

圖2 報文中時間標記節點Fig.2 Time stamp nodes of message
IEEE802協議標準系列中,數據鏈路層包括邏輯鏈路控制LLC(logical link control)子層和MAC子層。其中MAC單獨作為一個子層,完成數據幀的封裝、解封、發送和接收功能。MII稱為介質獨立接口,也可稱為介質無關接口,它是IEEE-802.3定義的以太網行業標準[10]。它包括一個數據接口,以及一個MAC和PHY物理層的管理接口。數據接口包括分別用于發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鐘和控制信號。MII數據接口總共需要16個信號。管理接口是個雙信號接口:一個是時鐘信號MDC(management data clock),另一個是數據信號MDIO(management data I/O)。通過管理接口,上層能監視和控制PHY。
由于辨別所收到的數據包是否為需要打時標的IEEE1588時鐘同步包還需要一段時間處理,如果在確認了是時鐘同步包后再進行打時標,整個處理過程將會引入一些額外的延時抖動[11]。
本文選擇在靠近物理層的MII層上采用硬件監聽并分析MII接口上IEEE1588報文的接收和發送,并打上時間標記。這樣在時鐘節點處的延時主要為物理層延時,而物理層的延時抖動很小,這在很大程度上提高了同步精度[12]。在運用MII層打時標方法后,IEEE1588的時鐘同步過程可以進一步用圖3來描述。

圖3 運用硬件打時標的時間同步過程Fig.3 Time synchronization based on hardware time stamp
采用在MII層打時間戳的方法,IEEE1588的時間標記可以完全避開操作系統和協議棧的處理延遲的影響。
從圖3中,能更直觀地看出在消除操作系統與協議棧延時抖動方面IEEE1588協議比NTP協議更有優勢。通常NTP的時標是在應用層得出并在應用層處理的,而IEEE1588的發送或接收時標都是在MII層得到的,很顯然,操作系統、夾在應用層和MII層中間的協議棧會對NTP時標的精度造成很大影響,而IEEE1588的時標則與操作系統、協議棧毫無關系[13]。
由于IEEE1588的實現需要在MAC層與物理層之間的MII接口進行時間標記,而普通單片機不具備這一功能,本文選用基于高級RISC處理器ARM(advanced RISC machines)系列的STM32F107來實現同步。其小型化、低功耗、高可靠性、執行速度達納秒級等特點,能很好地滿足IEEE1588同步協議所要求的精度。合并單元內同步處理流程如圖4所示。
STM32F107支持IEEE1588協議且具有以太網通信模塊,執行精度能夠達到納秒級。經過同步對時,STM32F107產生的同步秒脈沖與本地晶振進行鎖相倍頻處理后向12路電子式電壓電流互感器發送高速同步采樣脈沖,采樣脈沖與同步秒脈沖之間的誤差只有幾十個納秒。

圖4 IEEE1588同步信號處理流程Fig.4 Process of synchronized signal of IEEE1588
STM32F107的以太網模塊包括一個符合802.3協議的MAC介質訪問控制器、專用的直接存儲器存取DMA(direct memory access)和獨立于介質的接口MII,該接口作為MAC與外接PHY進行通信的橋梁。DMA具有獨立的發送和接收控制器,還有1個控制和狀態寄存器空間。DMA的設計是以數據包為單位傳輸,如以太網的幀傳輸。設置DMA控制器,可以在發送完一個幀、接收到一個幀或者其他正常/錯誤操作的時候產生中斷。DMA和CPU之間的通訊通過兩種數據結構實現:控制和狀態寄存器、描述符列表和數據緩存。
DMA把接收到的幀數據傳送到STM32F107的接收緩存,把STM32F107發送緩存里的數據發送出去。在STM32F107的存儲器里,描述符是以緩存指針的形式存放。有2個描述符隊列,一個用作發送,另一個用作接收。
DMA控制器通過AHB(advanced high-performance bus)主和從接口,分別訪問MAC控制器和存儲器。AHB主接口用于控制數據傳輸,AHB從接口用于訪問控制和狀態寄存器區域。DMA控制器與PHY物理層收發器之間進行通信如圖5所示。

圖5 DMA與PHY進行通信的硬件接口框圖Fig.5 Hardware interfaces of communication between DMA and PHY
PTP數據幀的傳輸必須以前導符開始,前導符是MDIO線上連續的32個邏輯‘1’信號,和對應MDC線上的32個時鐘信號,這部分信號用于和PHY設備建立同步。幀起始符SFD(start frame delimiter)定義為‘01’,也就是MDIO線從邏輯‘1’降到‘0’再回到‘1’,以標記傳輸的開始。
利用PTP輸入基準時鐘HCLK來更新64位PTP時間和記錄時間戳。當STM32F107使能了IEEE1588時間戳功能時,CPU建立好報文的幀數據后,DMA發送控制器負責把數據從系統存儲器轉送至發送緩沖區FIFO(first input first output),然后DMA建立發送描述符將數據發送出去。當幀的幀首符SFD從MII輸出的時候,MAC控制器會記錄下該幀的時間戳,然后再存放到發送描述符里返回給應用程序。而對于接收到的幀數據,MAC控制器會在MII端記錄接收到幀的時間戳,DMA接收控制器把該時間戳寫入接收描述符,發送到接收緩沖區FIFO。
從節點CPU經過分析確認后利用自己記錄的Delay_Req報文的發送時間戳、解析的包含在Delay_Resp報文中的Delay_Req報文接收時間戳,以及最近獲得的Sync報文發送時間戳和接收時間戳共4個時間戳計算網絡傳輸延遲,并對計算結果進行濾波。DMA控制器用于發送數據的發送描述符(包含4個32位字TDES0、TDES1、TDES2、TDES3),結構如圖6所示。

圖6 帶IEEE1588時間戳的發送DMA描述符Fig.6 Transmittal DMA descriptor with IEEE1588 timestamps
其中TDES0用于存放發送時間戳的控制和狀態,當TTSE位置‘1’時,描述符對應的幀會打開IEEE1588硬件時間戳功能。而DMA會用相應時間戳的值更新TDES2和TDES3,其中TDES2為時間戳的低32位,TDES3為時間戳的高32位。接收描述符也是相同的方式,其描述符具體結構如圖7,包含4個32位字RDES0、RDES1、RDES2、RDES3。
主時鐘每隔兩秒進行一次時鐘同步。首先進行系統初始化,啟動發送DMA,打開IEEE1588時間戳功能。軟件建立好包含報文的以太網幀數據的緩存以后,建立發送描述符;設置DMA進入運行模式,若描述符里的地址指針所指向的是PTP幀,則DMA從描述符中解析出數據緩存地址并發送出數據,否則繼續讀取下一個描述符。MAC控制器記錄時間戳的值并寫入對應的發送描述符,啟動DMA發送中斷,返回給應用程序,軟件流程如圖8所示。DMA接收流程同發送流程類似。

圖7 帶IEEE1588時間戳的接收DMA描述符Fig.7 Receival DMA descriptor with IEEE1588 timestamps

圖8 軟件流程Fig.8 Flow chart of software
返回應用程序的時間戳經軟件建立好報文數據后,在PTP通訊路徑中進行傳輸,完成同步對時。
本文提出的方案經過仿真驗證后,在實驗室對其性能進行了測試,在圖9所示的系統中引入一個嵌入式計算機作為測試設備,為保證網絡通信的確定性,測試設備參與時鐘同步但不影響測試結果。該系統的主從時鐘均是基于STM32F107微處理器,采用STM32F107硬件時間戳標記的方法,直接讀取硬件定時器設置時鐘刻度。

圖9 IEEE1588測試網絡結構Fig.9 Structure of IEEE1588 test network
在系統運行周期的開始,測試設備采用廣播方式發送測試請求報文:TEST_REQ_MSG,系統中包括主從時鐘在內的其他設備接收到測試請求報文后,記錄接收測試請求報文的當前時間,并在同一周期內向上位機發送測試響應報文:TEST_RESP_MSG,上位機通過比較主從時鐘設備的接收時間戳,比較出系統時鐘同步的效果。測試結果如表1所示。

表1 時鐘同步測試結果Tab.1 Test results of time synchronization
本性能測試實驗的測試周期為5 ms,測試進行了12 h,測試結果表明時鐘同步的精度可以達到4μs以內,說明采用IEEE1588協議對時能夠滿足數字化變電站內對時鐘同步精度的需求。
目前數字化變電站尤其是過程層設備對時間同步的精度要求越來越高,而傳統的全球定位系統GPS(global positioning system)同步以及NTP協議的對時精度只能達到ms級,無法滿足μs秒級的精度要求。本文介紹了IEEE1588所定義的PTP精確網絡對時協議,在分析IEEE1588同步原理的基礎上,給出了硬件打時間戳的實現方式,并重點結合STM32F107微處理器的優勢闡述了運用STM32F107實現時間戳標記的過程,最后在實驗室對該方案進行了性能測試,為IEEE1588協議在過程層合并單元中的實現提供了一種新的應用方法。
[1] 曹團結,尹項根,張哲,等(Cao Tuanjie,Yin Xianggen,Zhang Zhe,et al).電子式互感器數據同步的研究(Discussion on data synchronization of electronic instrument transformers)[J].電力系統及其自動化學報(Proceedings of the CSU-EPSA),2007,19(2):108-113.
[2] 莊玉飛,黃琦,井實,等(Zhuang Yufei,Huang Qi,Jing Shi,et al).基于GPS和IEEE1588協議的時鐘同步裝置的研制(Development of a clock synchronization device based on GPS and IEEE1588 protocol)[J].電力系統保護與控制(Power System Protection and Control),2011,39(13):111-115,125.
[3] 汪祺航,吳在軍,趙上林,等(Wang Qihang,Wu Zaijun,Zhao Shanglin,et al).IEEE1588時鐘同步技術在數字化變電站中的應用(Application of IEEE1588 time synchronization in digital substation)[J].電力系統保護與控制(Power System Protection and Control),2010,38(19):137-141,169.
[4] 徐焜耀,范昭勇,趙蔚娟,等(Xu Kunyao,Fan Zhaoyong,Zhao Weijuan,et al).IEC61850標準下采樣值傳輸的應用(Application of sampled value transmission based on IEC61850)[J].電力系統及其自動化學報(Proceedings of the CSU-EPSA),2009,21(6):107-111.
[5] 趙上林,胡敏強,竇曉波,等(Zhao Shanglin,Hu Minqiang,Dou Xiaobo,et al).基于IEEE1588的數字化變電站時鐘同步技術研究(Research of time synchronization in digital substation based on IEEE 1588)[J].電網技術(Power System Technology),2008,32(21):97-102.
[6] 王永輝,姬希軍,張寶燦,等(Wang Yonghui,Ji Xijun,Zhang Baocan,et al).變電站自動化系統GPS對時技術及應用(Technology and application of GPS time synchronization in substation automation system)[J].自動化應用(Automation Application),2010,(3):46-47,51.
[7] 劉孝先,曾清,鄒曉莉,等(Liu Xiaoxian,Zeng Qing,Zou Xiaoli,et al).電子式互感器的應用(Application of electronic transformer)[J].電力系統及其自動化學報(Proceedings of the CSU-EPSA),2010,22(1):133-137.
[8] 王立輝,許揚,陸于平,等(Wang Lihui,Xu Yang,Lu Yuping,et al).數字化變電站過程層采樣值時間同步性分析及應用(Synchronized sampling of process layer in digital substation)[J].電力自動化設備(E-lectric Power Automation Equipment),2010,30(8):37-40,44.
[9] 鄢志平,聶一雄,鄧忠華(Yan Zhiping,Nie Yixiong,Deng Zhonghua).基于IEC 61850的合并單元與二次設備通信研究(Research on communication between merging unit and secondary devices based on standard IEC 61850)[J].高壓電器(High Voltage Apparatus),2009,45(2):27-30.
[10]殷志良,劉萬順,楊奇遜,等(Yin Zhiliang,Liu Wanshun,Yang Qixun,et al).基于IEEE 1588實現變電站過程總線采樣值同步新技術(A new IEEE1588 based technology for realization the sampled values synchronization on the substation process bus)[J].電力系統自動化(Automation of Electric Powern Systems),2005,29(13):60-63.
[11]張洪源(Zhang Hongyuan).基于IEEE1588的數字化變電站時鐘同步技術的應用研究(Application Research on the Technology of Clock Synchronization in Digital Substation Based on IEEE1588)[D].成都:西南交通大學電氣工程(Chengdu:School of Electrical Engineering,Southwest Jiaotong University),2010.
[12]張振,許揚,陸于平,等(Zhang Zhen,Xu Yang,Lu Yuping,et al).IEEE1588協議在分布式系統保護信息傳輸中應用(Application of IEEE1588 protocol in information transmission of distributed protection system)[J].電力自動化設備(Electric Power Automation Equipment),2009,29(12):83-87,97.
[13]David Rosselot.IEEE1588 boundary clock and transparent clock implementation using the DP83640[EB/OL].http://www.ti.com/lit/an/snla104/snla104.pdf,2008.