韓 穎,牟龍華,周 偉
(同濟大學電氣工程系,上海 201804)
在數(shù)字化變電站中,過程層負載大,同步精度要求高,同步誤差要求控制在1μs以內(nèi)。合并單元作為變電站過程層與間隔層進行通信的接口和橋梁,是過程層的主要設備,通過向各路電子式電壓電流互感器發(fā)送同步轉(zhuǎn)換命令,以保證各路同時進行電壓電流采樣。
目前大多數(shù)變電站廣泛采用的是網(wǎng)絡時間協(xié)議NTP(network time protocol)進行同步對時,該協(xié)議是一種軟件時鐘同步[1],精度只能達到ms級。而IEEE1588協(xié)議則是專門針對網(wǎng)絡測控系統(tǒng)等工業(yè)以太網(wǎng)提出的精確時鐘同步協(xié)議PTP(precision time protocol),它非常適合變電站內(nèi)工業(yè)以太網(wǎng)的應用要求,加以硬件輔助就能達到亞微秒級級的同步精度,但普通的單片機由于不具備實現(xiàn)IEEE1588的功能或者執(zhí)行精度低而無法達到這一精度要求。
本文簡要闡述了IEEE1588時鐘同步系統(tǒng)的工作原理,給出了時間戳硬件標記的方法,介紹了合并單元中應用STM32F107微處理器實現(xiàn)IEEE1588協(xié)議的具體過程,為滿足變電站合并單元的時鐘同步精度要求提供了一種可參考的途徑。
IEEE1588協(xié)議定義的4種同步所必須的報文類型分別是Sync報文、Delay_Req報文、Follow-up報文、Delay_Resp報文[2]。通過對IEEE1588同步算法的分析,報文傳輸?shù)木唧w過程以及到達節(jié)點時鐘的具體方式如下:
Sync報文由主時鐘采用廣播方式發(fā)布到網(wǎng)絡上。報文需要兩個時間戳,即從主時鐘處進入物理層的時刻TM1和在從時鐘節(jié)點處由物理層進入?yún)f(xié)議棧的時刻TS1。
Delay_Req報文采用單播方式由從時鐘發(fā)送向本同步域內(nèi)的主時鐘,在從時鐘發(fā)出時刻TS2和主時鐘到達時刻TM2處各標記一次。
Follow-up報文也是由主時鐘采用廣播方式發(fā)出;而Delay_Resp報文則采用點對點方式發(fā)出,這兩類報文僅起到傳遞時間信息的作用,本身到達時刻不重要,因此不需要對報文的到達和離開時刻標記。
綜上所述,IEEE1588同步報文時間戳只需對Sync報文和Delay_Req這兩類報文進行標記。
PTP系統(tǒng)中的從時鐘通過與主時鐘交換上述的4種報文,從中獲取時間戳,計算出與主時鐘的時間偏差,根據(jù)偏差來調(diào)整自己的時間,從而達到與主時鐘的時間同步[3,4]。在PTP系統(tǒng)中,影響各時鐘同步的因素大體上有兩個:一是各時鐘的性能所引起的時間偏差,二是由于各種報文在網(wǎng)絡中傳輸所引起的網(wǎng)絡延遲。因此,PTP系統(tǒng)的同步過程可分為兩個階段:偏差修正階段和網(wǎng)絡延遲測量階段。整個同步原理如圖1所示。
圖1 IEEE1588時鐘同步原理Fig.1 Synchronization principle of IEEE1588
第一階段:修正主從時鐘之間的時間偏差,稱為偏差修正階段。在修正過程中,主時鐘按照所設定的時間間隔周期性地發(fā)出同步報文Sync,在報文中包含了報文發(fā)出的估計時間,從時鐘記錄收到同步報文的時間TS1,經(jīng)過一定時間的延時,主時鐘隨后發(fā)出跟隨報文Follow_up,在報文中有Sync發(fā)出的精確時間TM1。這樣,從時鐘使用Follow_up報文中的Sync報文實際發(fā)出時間和接收時間,可以計算出從時鐘與主時鐘之間的偏移T_offset,根據(jù)偏移量來修正時間偏差[5,6]。
式中,T_delay為主時鐘與從時鐘之間的傳輸延遲時間,它將在下面的延遲測量階段測出,所以在這里是未知的。由于報文傳輸網(wǎng)絡存在著一定的延遲,因此還應進行網(wǎng)絡延遲的測量。
第二階段:網(wǎng)絡延遲測量階段。從時鐘發(fā)出延遲請求報文Delay_Req,并記錄發(fā)送時間TS2,當Delay_Req到達主時鐘時,主時鐘記錄其到達時間TM2,再用報文Delay_Resp將TM2發(fā)送給從時鐘。這樣,從時鐘就得到了4個準確的時間點:TM1、TS1、TM2、TS2。由下列方程可以非常準確地計算出網(wǎng)絡延時。
主時鐘傳輸?shù)綇臅r鐘的延時:
從時鐘傳輸?shù)街鲿r鐘的延時:
假設傳輸介質(zhì)是對稱均勻的:
則由上面的算式可得
根據(jù)式(2)和式(3)計算出的值,從時鐘可以調(diào)整自己的時間,從而與主時鐘同步[7]。
根據(jù)IEEE1588協(xié)議,同步報文到達或離開節(jié)點的時刻須在介質(zhì)訪問控制MAC(media access control)幀開始標志字節(jié)的最后一位結(jié)束,MAC目的地址第一個字節(jié)的第一位到來之時進行標記,如圖2所示。MAC幀由前導碼、幀開始標志、目的地址、源地址、數(shù)據(jù)長度、數(shù)據(jù)、幀填充、幀校驗8個部分組成。其中幀開始標志為一個字節(jié),其值為10101011B。同步報文檢測和時間標記步驟如下所述。
步驟1 當有數(shù)據(jù)包到由物理層進入介質(zhì)獨立端口MII(media independent interface)層,在數(shù)據(jù)包起始標志最后一位結(jié)束時,時間戳標記模塊將本地時鐘時間信息進行記錄[8,9]。
步驟2 若數(shù)據(jù)包MAC目的地址是廣播地址,繼續(xù)檢測該數(shù)據(jù)包的端口UDP(user data protocol),如果端口值號為319則說明是Sync報文。
步驟3 若該數(shù)據(jù)包的MAC目的地址非廣播地址,檢測該數(shù)據(jù)包的MAC目的地址和IP目的地址是否為本節(jié)點地址,若是UDP并且端口號為319,則確定為Delay_Req報文。
步驟4 如果上述條件中出現(xiàn)不符合的情況,模塊將剛才記錄的時鐘時刻丟棄并重置,等待下一次數(shù)據(jù)包的到來。
圖2 報文中時間標記節(jié)點Fig.2 Time stamp nodes of message
IEEE802協(xié)議標準系列中,數(shù)據(jù)鏈路層包括邏輯鏈路控制LLC(logical link control)子層和MAC子層。其中MAC單獨作為一個子層,完成數(shù)據(jù)幀的封裝、解封、發(fā)送和接收功能。MII稱為介質(zhì)獨立接口,也可稱為介質(zhì)無關(guān)接口,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標準[10]。它包括一個數(shù)據(jù)接口,以及一個MAC和PHY物理層的管理接口。數(shù)據(jù)接口包括分別用于發(fā)送器和接收器的兩條獨立信道。每條信道都有自己的數(shù)據(jù)、時鐘和控制信號。MII數(shù)據(jù)接口總共需要16個信號。管理接口是個雙信號接口:一個是時鐘信號MDC(management data clock),另一個是數(shù)據(jù)信號MDIO(management data I/O)。通過管理接口,上層能監(jiān)視和控制PHY。
由于辨別所收到的數(shù)據(jù)包是否為需要打時標的IEEE1588時鐘同步包還需要一段時間處理,如果在確認了是時鐘同步包后再進行打時標,整個處理過程將會引入一些額外的延時抖動[11]。
本文選擇在靠近物理層的MII層上采用硬件監(jiān)聽并分析MII接口上IEEE1588報文的接收和發(fā)送,并打上時間標記。這樣在時鐘節(jié)點處的延時主要為物理層延時,而物理層的延時抖動很小,這在很大程度上提高了同步精度[12]。在運用MII層打時標方法后,IEEE1588的時鐘同步過程可以進一步用圖3來描述。
圖3 運用硬件打時標的時間同步過程Fig.3 Time synchronization based on hardware time stamp
采用在MII層打時間戳的方法,IEEE1588的時間標記可以完全避開操作系統(tǒng)和協(xié)議棧的處理延遲的影響。
從圖3中,能更直觀地看出在消除操作系統(tǒng)與協(xié)議棧延時抖動方面IEEE1588協(xié)議比NTP協(xié)議更有優(yōu)勢。通常NTP的時標是在應用層得出并在應用層處理的,而IEEE1588的發(fā)送或接收時標都是在MII層得到的,很顯然,操作系統(tǒng)、夾在應用層和MII層中間的協(xié)議棧會對NTP時標的精度造成很大影響,而IEEE1588的時標則與操作系統(tǒng)、協(xié)議棧毫無關(guān)系[13]。
由于IEEE1588的實現(xiàn)需要在MAC層與物理層之間的MII接口進行時間標記,而普通單片機不具備這一功能,本文選用基于高級RISC處理器ARM(advanced RISC machines)系列的STM32F107來實現(xiàn)同步。其小型化、低功耗、高可靠性、執(zhí)行速度達納秒級等特點,能很好地滿足IEEE1588同步協(xié)議所要求的精度。合并單元內(nèi)同步處理流程如圖4所示。
STM32F107支持IEEE1588協(xié)議且具有以太網(wǎng)通信模塊,執(zhí)行精度能夠達到納秒級。經(jīng)過同步對時,STM32F107產(chǎn)生的同步秒脈沖與本地晶振進行鎖相倍頻處理后向12路電子式電壓電流互感器發(fā)送高速同步采樣脈沖,采樣脈沖與同步秒脈沖之間的誤差只有幾十個納秒。
圖4 IEEE1588同步信號處理流程Fig.4 Process of synchronized signal of IEEE1588
STM32F107的以太網(wǎng)模塊包括一個符合802.3協(xié)議的MAC介質(zhì)訪問控制器、專用的直接存儲器存取DMA(direct memory access)和獨立于介質(zhì)的接口MII,該接口作為MAC與外接PHY進行通信的橋梁。DMA具有獨立的發(fā)送和接收控制器,還有1個控制和狀態(tài)寄存器空間。DMA的設計是以數(shù)據(jù)包為單位傳輸,如以太網(wǎng)的幀傳輸。設置DMA控制器,可以在發(fā)送完一個幀、接收到一個幀或者其他正常/錯誤操作的時候產(chǎn)生中斷。DMA和CPU之間的通訊通過兩種數(shù)據(jù)結(jié)構(gòu)實現(xiàn):控制和狀態(tài)寄存器、描述符列表和數(shù)據(jù)緩存。
DMA把接收到的幀數(shù)據(jù)傳送到STM32F107的接收緩存,把STM32F107發(fā)送緩存里的數(shù)據(jù)發(fā)送出去。在STM32F107的存儲器里,描述符是以緩存指針的形式存放。有2個描述符隊列,一個用作發(fā)送,另一個用作接收。
DMA控制器通過AHB(advanced high-performance bus)主和從接口,分別訪問MAC控制器和存儲器。AHB主接口用于控制數(shù)據(jù)傳輸,AHB從接口用于訪問控制和狀態(tài)寄存器區(qū)域。DMA控制器與PHY物理層收發(fā)器之間進行通信如圖5所示。
圖5 DMA與PHY進行通信的硬件接口框圖Fig.5 Hardware interfaces of communication between DMA and PHY
PTP數(shù)據(jù)幀的傳輸必須以前導符開始,前導符是MDIO線上連續(xù)的32個邏輯‘1’信號,和對應MDC線上的32個時鐘信號,這部分信號用于和PHY設備建立同步。幀起始符SFD(start frame delimiter)定義為‘01’,也就是MDIO線從邏輯‘1’降到‘0’再回到‘1’,以標記傳輸?shù)拈_始。
利用PTP輸入基準時鐘HCLK來更新64位PTP時間和記錄時間戳。當STM32F107使能了IEEE1588時間戳功能時,CPU建立好報文的幀數(shù)據(jù)后,DMA發(fā)送控制器負責把數(shù)據(jù)從系統(tǒng)存儲器轉(zhuǎn)送至發(fā)送緩沖區(qū)FIFO(first input first output),然后DMA建立發(fā)送描述符將數(shù)據(jù)發(fā)送出去。當幀的幀首符SFD從MII輸出的時候,MAC控制器會記錄下該幀的時間戳,然后再存放到發(fā)送描述符里返回給應用程序。而對于接收到的幀數(shù)據(jù),MAC控制器會在MII端記錄接收到幀的時間戳,DMA接收控制器把該時間戳寫入接收描述符,發(fā)送到接收緩沖區(qū)FIFO。
從節(jié)點CPU經(jīng)過分析確認后利用自己記錄的Delay_Req報文的發(fā)送時間戳、解析的包含在Delay_Resp報文中的Delay_Req報文接收時間戳,以及最近獲得的Sync報文發(fā)送時間戳和接收時間戳共4個時間戳計算網(wǎng)絡傳輸延遲,并對計算結(jié)果進行濾波。DMA控制器用于發(fā)送數(shù)據(jù)的發(fā)送描述符(包含4個32位字TDES0、TDES1、TDES2、TDES3),結(jié)構(gòu)如圖6所示。
圖6 帶IEEE1588時間戳的發(fā)送DMA描述符Fig.6 Transmittal DMA descriptor with IEEE1588 timestamps
其中TDES0用于存放發(fā)送時間戳的控制和狀態(tài),當TTSE位置‘1’時,描述符對應的幀會打開IEEE1588硬件時間戳功能。而DMA會用相應時間戳的值更新TDES2和TDES3,其中TDES2為時間戳的低32位,TDES3為時間戳的高32位。接收描述符也是相同的方式,其描述符具體結(jié)構(gòu)如圖7,包含4個32位字RDES0、RDES1、RDES2、RDES3。
主時鐘每隔兩秒進行一次時鐘同步。首先進行系統(tǒng)初始化,啟動發(fā)送DMA,打開IEEE1588時間戳功能。軟件建立好包含報文的以太網(wǎng)幀數(shù)據(jù)的緩存以后,建立發(fā)送描述符;設置DMA進入運行模式,若描述符里的地址指針所指向的是PTP幀,則DMA從描述符中解析出數(shù)據(jù)緩存地址并發(fā)送出數(shù)據(jù),否則繼續(xù)讀取下一個描述符。MAC控制器記錄時間戳的值并寫入對應的發(fā)送描述符,啟動DMA發(fā)送中斷,返回給應用程序,軟件流程如圖8所示。DMA接收流程同發(fā)送流程類似。
圖7 帶IEEE1588時間戳的接收DMA描述符Fig.7 Receival DMA descriptor with IEEE1588 timestamps
圖8 軟件流程Fig.8 Flow chart of software
返回應用程序的時間戳經(jīng)軟件建立好報文數(shù)據(jù)后,在PTP通訊路徑中進行傳輸,完成同步對時。
本文提出的方案經(jīng)過仿真驗證后,在實驗室對其性能進行了測試,在圖9所示的系統(tǒng)中引入一個嵌入式計算機作為測試設備,為保證網(wǎng)絡通信的確定性,測試設備參與時鐘同步但不影響測試結(jié)果。該系統(tǒng)的主從時鐘均是基于STM32F107微處理器,采用STM32F107硬件時間戳標記的方法,直接讀取硬件定時器設置時鐘刻度。
圖9 IEEE1588測試網(wǎng)絡結(jié)構(gòu)Fig.9 Structure of IEEE1588 test network
在系統(tǒng)運行周期的開始,測試設備采用廣播方式發(fā)送測試請求報文:TEST_REQ_MSG,系統(tǒng)中包括主從時鐘在內(nèi)的其他設備接收到測試請求報文后,記錄接收測試請求報文的當前時間,并在同一周期內(nèi)向上位機發(fā)送測試響應報文:TEST_RESP_MSG,上位機通過比較主從時鐘設備的接收時間戳,比較出系統(tǒng)時鐘同步的效果。測試結(jié)果如表1所示。
表1 時鐘同步測試結(jié)果Tab.1 Test results of time synchronization
本性能測試實驗的測試周期為5 ms,測試進行了12 h,測試結(jié)果表明時鐘同步的精度可以達到4μs以內(nèi),說明采用IEEE1588協(xié)議對時能夠滿足數(shù)字化變電站內(nèi)對時鐘同步精度的需求。
目前數(shù)字化變電站尤其是過程層設備對時間同步的精度要求越來越高,而傳統(tǒng)的全球定位系統(tǒng)GPS(global positioning system)同步以及NTP協(xié)議的對時精度只能達到ms級,無法滿足μs秒級的精度要求。本文介紹了IEEE1588所定義的PTP精確網(wǎng)絡對時協(xié)議,在分析IEEE1588同步原理的基礎上,給出了硬件打時間戳的實現(xiàn)方式,并重點結(jié)合STM32F107微處理器的優(yōu)勢闡述了運用STM32F107實現(xiàn)時間戳標記的過程,最后在實驗室對該方案進行了性能測試,為IEEE1588協(xié)議在過程層合并單元中的實現(xiàn)提供了一種新的應用方法。
[1] 曹團結(jié),尹項根,張哲,等(Cao Tuanjie,Yin Xianggen,Zhang Zhe,et al).電子式互感器數(shù)據(jù)同步的研究(Discussion on data synchronization of electronic instrument transformers)[J].電力系統(tǒng)及其自動化學報(Proceedings of the CSU-EPSA),2007,19(2):108-113.
[2] 莊玉飛,黃琦,井實,等(Zhuang Yufei,Huang Qi,Jing Shi,et al).基于GPS和IEEE1588協(xié)議的時鐘同步裝置的研制(Development of a clock synchronization device based on GPS and IEEE1588 protocol)[J].電力系統(tǒng)保護與控制(Power System Protection and Control),2011,39(13):111-115,125.
[3] 汪祺航,吳在軍,趙上林,等(Wang Qihang,Wu Zaijun,Zhao Shanglin,et al).IEEE1588時鐘同步技術(shù)在數(shù)字化變電站中的應用(Application of IEEE1588 time synchronization in digital substation)[J].電力系統(tǒng)保護與控制(Power System Protection and Control),2010,38(19):137-141,169.
[4] 徐焜耀,范昭勇,趙蔚娟,等(Xu Kunyao,F(xiàn)an Zhaoyong,Zhao Weijuan,et al).IEC61850標準下采樣值傳輸?shù)膽茫ˋpplication of sampled value transmission based on IEC61850)[J].電力系統(tǒng)及其自動化學報(Proceedings of the CSU-EPSA),2009,21(6):107-111.
[5] 趙上林,胡敏強,竇曉波,等(Zhao Shanglin,Hu Minqiang,Dou Xiaobo,et al).基于IEEE1588的數(shù)字化變電站時鐘同步技術(shù)研究(Research of time synchronization in digital substation based on IEEE 1588)[J].電網(wǎng)技術(shù)(Power System Technology),2008,32(21):97-102.
[6] 王永輝,姬希軍,張寶燦,等(Wang Yonghui,Ji Xijun,Zhang Baocan,et al).變電站自動化系統(tǒng)GPS對時技術(shù)及應用(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].電力系統(tǒng)及其自動化學報(Proceedings of the CSU-EPSA),2010,22(1):133-137.
[8] 王立輝,許揚,陸于平,等(Wang Lihui,Xu Yang,Lu Yuping,et al).數(shù)字化變電站過程層采樣值時間同步性分析及應用(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實現(xiàn)變電站過程總線采樣值同步新技術(shù)(A new IEEE1588 based technology for realization the sampled values synchronization on the substation process bus)[J].電力系統(tǒng)自動化(Automation of Electric Powern Systems),2005,29(13):60-63.
[11]張洪源(Zhang Hongyuan).基于IEEE1588的數(shù)字化變電站時鐘同步技術(shù)的應用研究(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協(xié)議在分布式系統(tǒng)保護信息傳輸中應用(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.