摘 要:在此設計一款具有多個輸入鐘源和多個輸出接口的同步時間服務器,它采用FPGA實現時間接口,用MCU作為控制器,輸入GPS引擎M12T,IRIG-B,IEEE 1588等作為標準時鐘源,利用多路選擇器得到系統標準時間,通過低頻數字鎖相環提供同步輸出。該系統還可實現IRIG-B直流碼和交流碼,利用硬件實現NTP和PTP時間戳及相關的網絡時間協議。其中,多路時間選擇和基準時間產生及同步用低頻數字鎖相環和同步時間編碼輸出是創新之舉。系統采用VHDL進行邏輯綜合,軟件采用C語言進行編程,通過軟件仿真和示波器觀測以及現場運行表明,系統同步和定時精確可靠,完全達到預期目標。
關鍵詞:授時碼;IRIG-B;數字調制;數字鎖相環;GPS;IEEE 1588
中圖分類號:P228.4文獻標識碼:A
文章編號:1004-373X(2010)04-092-05
Implementation of Synchronize Time Server
PANG Jiyao
(Nanjing Paneng Electric Power Technology Co.Ltd.,Nanjing,210036,China)
Abstract:A synchronize time server with multiple input time source and multiple output time interface is designed.This system uses FPGA to implement time interface and MCU as controller,system can accept time source such as GPS engine M12T,IRIG-B,IEEE1588 etc,one multiplexer is provided to select system reference time,the global synchronization signal output from low frequency digital PLL.IRIG-B DC/AC code provided by encoder module.Because the timestamp of NTPPTP are generated by Ethernet PHY,the system implements PTPNTP accurately.Using low frequency digital PLL and multiplexer to select synchronization source,encoding time and synchronization signal in one packet.The design uses VHDL to synthesize system logic and program software uses C language.The systemis verified by means of simulation and oscilloscope,the field application also proves the goals have been achieved perfectly.
Keywords:time code;IRIG-B;digital modulation;DPLL;GPS;IEEE 1588
0 引 言
在繼電保護和過程控制領域,為了能夠對異步事件進行測量和記錄,實現操作和控制的同步,以及事故后的分析和事故反演,都需要有統一的時間基準。由于累積誤差的存在自動化裝置內部的實時時鐘,必須實現系統級的時間同步。此外,電力系統的失步保護、線路縱差保護以及過程控制領域等分布式數據采集和集中處理應用場合則需要多個節點之間實現數據采樣同步和操作同步。數字化變電站由于二次回路設計簡化,接線大大減少,真正實現信息集成、數據共享和互操作性受到越來越多的關注,而數字化變電站的一個基本要求就是數據采樣同步和系統時間同步[1]。
這些應用都需要有一個統一基準時間源和同步信號來實現時間同步、采樣同步和控制同步。文獻[2]給出了典型的變電站內時鐘系統的結構,有使用串口和脈沖同步方式,也有使用標準的串行編碼IRIG-B[3]格式,或者通過局域網進行時間同步[4],如NTP[5]和IEEE 1588[6] (以下簡稱PTP)等。在數字化變電站中,不同的數據合并器之間有同步采樣的要求,于是需要一種時間同步裝置,能夠接入不同的標準時間源,然后以不同方式輸出標準時間和同步信號,以滿足各種裝置及用戶應用的要求。
1 問題的提出
1.1 基準時間的問題
現有的一些時間設備往往只有一種基準時鐘輸入源和兩、三種基準時鐘輸出源,而且沒有提供一種全局的同步控制信號,在基準時鐘出現故障時無法為其他需要時間的設備提供精確的時基。
1.2 同步參考信號的問題
目前,普遍使用秒脈沖同步,通過在本地構建采樣定時器,定時器在秒脈沖的上沿復位,這樣使設備的采樣時,刻和秒脈沖的上升沿同步。高速采樣時采樣間隔遠小于1 s,秒脈沖邊沿的微秒級抖動都將對采樣造成很大的影響。由于同步源的周期擾動和各節點本地時鐘頻率fa的漂移,實際上無法同時實現同步和等間隔采樣。
1.3 解決辦法
在此,給出一種集多個基準輸入和多種輸出方式為一體的同步時間服務器設計方法。系統可以接入IEEE1588、GPS引擎[7]、IRIG-B時間碼[3]、PPS/串行時間和內部精密RTC的多個精準時鐘源和電網頻率相關的同步源輸入,支持IEE1588時間、NTP、IRIG-B AC/DC碼輸出和全局PPS輸出及串口時間輸出。
通過給出高速同步信號,并把絕對時間和同步信號一起編碼,同時解決同步和時間問題。其他低速率采樣設備通過對同步信號進行分頻得到本地采樣同步信號,而高速率采樣設備可以通過倍頻得到本地采樣同步信號。例如,本文給出的同步信號速率為12.8 Kb/s(周期為78.125 ns),高于IEC61850[1]規定的最高采樣速率。
此外,由于時間服務器具有多個外部時間參考輸入,而系統在特定時刻只能同步到一個源,所以需要一個鐘源選擇器來根據既定策略選擇參考源,并根據選定的源輸出參考時鐘和同步參考信號。為消除不同參考時間源之間的切換帶來對同步參考信號的負面影響,需要一個數字鎖相和跟蹤模塊來保證同步信號在過渡過程中的穩定輸出。
2 系統方案
根據上述目標,設計出一種具有多輸入鐘源和多輸出接口,可用于多個節點之間時間同步和采樣同步的同步時間服務器方案,系統的原理框圖如圖1所示。
圖1 同步時間服務器的原理框圖
2.1 系統工作原理
時間服務器中FPGA檢測來自圖1中各個基本模塊的輸入基準鐘源,并將狀態報告MCU,MCU選擇一種鐘源輸出作為基準時間,同時從中獲得基準同步脈沖,位于FPGA上的數字鎖相環路根據基準脈沖發生器的輸出產生全局同步脈沖,同步輸出編碼器在每個同步間隔把基準時間和全局采樣計數器一起編碼發送到物理鏈路,IRIG-B[3]直流編碼部件從基準時間發生器獲得時間在1PPS脈沖的觸發下形成IRIG-B DC碼,B碼的交流數字調制部分則通過調制DC碼獲得B碼AC輸出。
MCU通過FPGA提供的接口測量母線電壓或所用變壓器的電壓與頻率,讀取實時時間信息,并用此基準時間來完成NTP協議和IEEE1588時間協議。
2.2 硬件設計
時間服務器通過GPS引擎M12T[7]接收衛星同步時鐘,采用Freescale公司的MCF52259作為主處理器,MCU和FPGA之間通過Mini FlexBus連接。網絡采用MCU片上MAC,通過MII接口連接物理層DP83640[8],由物理層硬件生成PTP時間戳和NTP的時間戳;MCU通過MDIO讀取和設置PHY的工作狀態和時間戳。MCU通過一組GPIO控制DP83640來觸發和捕獲IEEE1588報文傳輸。FPGA鎖相環輸出則連接到DP83640的CLK_OUT,CLK_OUT的I/O屬性由節點配置方式確定。
時間服務器利用電壓互感器將輸入的380 V或100 V交流轉換為ADC能接收的小信號電壓,按差分方法接入到MCU的ADC輸入端,同經過差分比較器TL331轉換成與電網同步50Hz脈沖信號,經施密特整形后送到FPGA,作為基準鐘源和頻率測量。
RTC DS3231通過I2C連接到MCU,其內部TCXO晶振的32.768 kHz信號接入FPGA和MCU的RTC_EXTAL輸入端,設置DS3231的方波輸出為1 s,并把該信號接入FPGA和MCU的中斷輸入,使MCU內部RTC計時鏈與DS3231的計時鏈保持同步。系統通過FPGA控制數碼管顯示數據,由MCU輪流寫入時間和交流電壓與頻率完成顯示工作。
為了增強系統可靠性和抗電磁干擾能力,B碼的DC碼和秒脈沖輸入/輸出以及異步串行接口都經過高速光耦隔離,B碼的AC碼輸出部分則經過變壓器隔離輸出。因為輸出頻率高而且邊沿和抗干擾要求嚴格,同步信號采用850 nm的光纖發送器HFBR1412經同步光口輸出,并經過光纖長距離和變電站中過程層數據合并器相接,在距離很短時可用雙絞線經同步電口輸出。
3 系統功能組件實現
3.1 輸入時鐘源
3.1.1 電壓和頻率測量
對交流輸入采樣數據進行12點DFT變換,并乘以通道增益,即可計算出實際的交流電壓。系統用一個門控計數器檢測頻率脈沖的兩個上升沿之間周期來間接地計算頻率。設輸入時鐘為本地時鐘fa,門控信號為頻率脈沖的上升沿,在每個上升沿記錄門控計數器的值后將計數器清零。若測得通道x的兩個頻率脈沖之間的門控計數器的值為Nx,則頻率fx可以通過式(1)計算出。
fx=Nx/fa(1)
3.1.2 GPS模塊接口
GPS引擎M12T[7]在與衛星同步后可以穩定地提供100 PPS信號輸出,位置保持狀態下定時誤差小于12 ns,其時序如圖2所示。
圖2 M12T模塊輸出的100 PPS信號(PPM12)
圖2中,每個脈沖的上升沿時刻準確,在PPS的參考點脈沖寬度為6~8 ms,其他時刻2~4 ms。在FPGA中構建一個模100的碼元計數器MMH和一個高電平脈沖寬度檢測器,再利用下面的步驟恢復1 PPS信號:
(1) 在PPM12信號的上升沿復位寬度檢測器,高電平計時,在下降沿停止并輸出Tb;
(2) 在PPM12下降沿檢查Tb,當6 ms if MMH=99 then MMH=0 else MMH=MMH+1 (3) 在PPM12信號的上升沿檢查MMH,如果MMH=0,則當前脈沖的上升沿是參考點Pr,觸發輸出8 ms高電平脈沖作為PPS輸出信號。 此外,M12T還從一個TTL電平UART接口向外輸出絕對時間,MCU的串口接收程序從UART2接收來自M12T的絕對時間。 3.1.3 IRIG-B輸入 同步時間服務器設計有一路RS 485電平兼容IRIG-BDC碼輸入接口。接口模塊從B碼中恢復絕對時間信息和1 PPS的基準參考點。由于IRIG-B的格式[3]是每秒發送100個碼元,每個碼元寬度10 ms,且每一個碼元的上升沿都可以作為時間參考點,可以直接使用B碼的信號作為100 PPS信號,供給鐘源選擇模塊。當MCU選擇使用B碼輸入作為系統時基時,應該在1 s內從B碼的解碼模塊讀取絕對時間,并寫入到基準時間發生器。 3.1.4 串行時間和PPS輸入 時間服務器提供一個RS 485電平兼容的PPS輸入接口,當采用外接的全局同步信號時,可以使系統時間同步到PPS的邊沿。一般在使用外部PPS時,同時需要經過RS 485/RS 232輸入絕對時間,該系統通過一個RS 485接口連接到MCU的Uart0接口,用來從對時總線上獲取全局的絕對時間信息。通常時間信息應該在PPS的上升沿過后發出,每秒鐘發送一次,所以處理程序需要在1 s內分析完時間信息。 3.1.5 IEEE1588 本文通過網絡物理層DP83640采用產生PTP的時間戳,通過MDIO可以讀取PTP時間戳,配合高層軟件實現IEEE 1588,成為一種精確的解決方案。IEEE 1588的時間戳[6,9]包括一個48位秒字段和一個32位納秒字段,可利用這兩個信息生成本地時間和同步參考信號。在FPGA上構建一個32位計數器[10],收到來自主機的同步包后,從其時間戳中提取當前納秒時間標記,按下式計算出本地新的計數器值Nnew,在剩余的時間內計數器用DP83640輸出的PTP時鐘fPTP計數。 Nnew=PTP ns×fPTP×10-9(2) 式中:PTP ns為納秒字段值。 當上述計數器為0時,產生一個寬度為10ms的高電平脈沖作為1 PPS信號,每當計數器的值模fa/100等于0時,產生一個寬度為2ms的高電平信號作為100 PPS信號。 3.2 授時輸出 3.2.1 網絡輸出 時間同步服務器提供了多種手段的授時輸出,MCU從圖3所示的基準時間發生器中讀取標準時間,再按照NTP協議要求生成時間戳,多播到變電站的局域網中,為網絡上的其他設備提供時間參考。如果時間服務器被配置成PTP的主控節點,還可以利用已經得到的標準時間生成PTP的時間戳,為支持PTP協議的設備提供更高精度的時間參考。 該方案的網絡物理層采用DP83640[8],NTP的時間戳[5]和PTP時間戳[6],都可以在MCU的控制下由底層硬件生成,不受軟件協議棧的影響,所以授時精度高,NTP精度在局域網內可達0.1ms,而PTP的精度可達40ns。 3.2.2 IRIG-B輸出 利用多路選擇器輸出的1 PPS信號和100 PPS信號生成IRIG-B的時間參考點和100個碼元的參考點。B碼輸出的絕對時間則由基準時間發生器直接提供給B碼模塊,無需MCU參與即可得到IRIG-B的DC碼[3]。在獲得IRIG-B的DC碼后,采用數字調制方法得到IRIG-B的AC碼輸出。 IRIG-B的AC碼[3]的載波是1 kHz正弦信號,調制比U1/U0為1/6~1/2。把每個碼元在時間上等分成100點,在FPGA構建兩個100個元素的正弦查找表,邏輯0對應表0,邏輯1對應表1,表的地址由輸出的時間點決定,為0~99,而表的內容則對應該時刻的標準正弦抽樣值,通過對表0和表1乘以不同增益,可以獲得B碼所要求的調制比。然后在一個定時器的控制下,每隔10 μs根據當前DC碼的值(0或1)從查找表0或者查找表1中取得一個值輸出到DAC,再將DAC的輸出通過低通濾波和緩沖放大。與經過10 Mb/s的高速光耦隔離DC碼相比,通過變壓器隔離的AC碼的輸出將帶來額外的延時。 3.2.3 串口輸出 為了兼容變電站一些傳統設備對時間服務的要求,時間服務器還通過UART接口向外發送串行時間碼和秒脈沖。通過MCU每秒讀取一次基準時間發生器的數據,并通過串口在秒脈沖的上升沿發出,而秒脈沖則可以給這些設備提供同步參考。 3.3 同步輸出部件 3.3.1 同步源選擇和基準時間生成 圖3為同步源選擇器,每個同步源提供1 Hz秒脈沖信號和同步參考信號,同步參考可以是100 PPS,50 Hz和512 Hz幾種,信號的上升沿是參考點。當SYN_SEL=0時,選擇IEEE 1588接口模塊的同步信號;當SYN_SEL為1,2,3,4時,電網脈沖中的一路作為同步參考信號,類似的方法用來選擇其他同步參考信號。不同的同步源會導致不同的同步誤差,來自IEEE 1588和GPS引擎的同步信號可以使同步誤差減小到50 ns,而GPS方式更適合廣域同步,但受限捕捉到衛星數量;電網脈沖適合基于頻率跟蹤的同步采樣,但脈沖整形時邊沿會有200 ns左右的抖動;采用IRIG-B的外部脈沖同步精度取決于信號源,隔離電路將會增加1 μs左右的延遲;采用內部帶TCXO晶體的RTC輸出作為參考,則可以實現20 ns低抖動和嚴格的等間隔同步輸出。 圖3 同步時間多路選擇器的原理框圖 MCU不間斷檢查各個輸入鐘源的狀態,并根據各個同步鐘源的特性及預定義的策略選擇其中之一作為參考,讀取其時間,再通過預置數端寫入基準時間發生器。基準時間發生器的計時鏈在秒脈沖的上升沿自動進位,以保證系統標準時間與參考信號同步(進位時同時考慮閏年月大和月小)。MCU則通過讀接口取出基準時間發生器的時間,作為系統的標準時間。 3.3.2 基準脈沖生成器 由于來自多路選擇器的同步信號周期可能不一樣,所以選擇器輸出的參考信號ASYN不能直接進入鎖相環,需要生成一個固定頻率的參考信號PSYN。若設Ts為系統所需要的采樣間隔,則通過一個模N的計數器可以實現PSYN,其中N=Ns=Ts×fa。 式中:fa為主時鐘;N為計數器的模。構建計數器AQC,在ASYN的上升沿和計數器值為N-1時復位計數器,而當AQC=0時給出基準參考信號PSYN的上升沿. 3.3.3 低頻數字鎖相環 為了保證系統在切換外部參考鐘源時同步輸出信號的穩定,需要增加一個數字鎖相回路,在鐘源發生切換時逐步過渡到新的參考源,結構如圖4所示。 圖4 數字鎖相環的基本結構 數控振蕩器輸出的脈沖CSYN和參考脈沖PSYN同時進入數字鑒相器,通過檢測兩信號的上升沿,得到相差Nlead=Tlead×fa和Nlag=Tlag×fa,取數字鑒相器的輸出為dQ=min{Nlead,Nlag}。同時檢測PSYN的周期TPSYN,用fa度量為NPSYN=TPSYN×fa。 若設系統能夠容忍的同步間隔擾動為Δt(用fa度量為dm=Δt×fa),則重復下面的步驟可以獲得系統的同步輸出脈沖為: (1) 當|NPSYN-Ns|>dm時,置輸出選擇SEL=0轉步驟(3); (2) 當dQ (3) 根據SEL選擇輸出脈沖,SEL=1選擇前饋的PSYN,SEL=0選擇振蕩器輸出CSYN。 數控振蕩器是一個可變模計數器,模Nc由式Nc=Ns+dM給出,通過調整Ns可以得到需要的采樣間隔。在計數值為0時,數控振蕩器產生寬度為2個時鐘的窄同步脈沖CSYN,并將CSYN反饋到數字鑒相器的輸入,同時還作為選擇器的一個輸入。 3.4 同步輸出編碼 時間服務器的同步輸出采用如下編碼來傳送同步信號和時間信息,格式如圖5所示。 編碼使用高電平表示信息,每個碼元寬度為Tb。圖中,Th為幀同步頭寬度,隨后是數據段;T0為碼元邏輯0的寬度;T1為碼元邏輯1的寬度。時間服務器以采樣間隔Ts發送同步信號,tfs為發送幀起始點,tSYN為接收方同步檢出點。數據字段中,包含絕對時標和8位幀計數器。幀計數器每個間隔自加1,可以標記某一特定時刻的采樣數據。 圖5 時間服務器的同步輸出信號 4 系統軟件設計及測試 時間服務器的MCU軟件采用C語言編程,在Codewarrior下調試通過。利用中斷服務實現ADC采樣控制和時間同步數據的讀取和寫入,以及串行時間輸入輸出和NTP及PTP協議。裝置還定義和實現了用戶配置協議接口。通過以太網連接設備到計算機,則可通過配置軟件在計算機上配置裝置的時鐘源選擇策略和預置時間等功能。 時間服務器的FPGA部分全部采用VHDL進行邏輯設計,設計在Altera Quartus Ⅱ 7.2環境下編譯和綜合,并利用Quartus Ⅱ的仿真工具進行仿真分析和驗證通過,最后下載到目標板用示波器測試系統時序。測試表明,同步時間服務器B碼編碼器的DC碼參考點和Pr與M12T GPS模塊的PPS參考點時間誤差小于20 ns,與絕對時間參考點之間的誤差小于40 ns,AC碼與DC碼之間的延遲為100 ns。基于硬件時間戳實現的NTP和PTP在局域網中精度達到0.1 ms和40 ns。 圖6為使用GPS引擎作為標準鐘源時的秒脈沖和IRIG-B AC碼及DC碼隔離輸出定時。 圖6 時鐘輸出測試波形 圖中通道1(圖6中①)為GPS引擎M12T輸出的100 PPS信號,通道2(圖6中③)為IRIG-B的直流編碼輸出信號,通道3(圖6中②)為秒脈沖輸出PPS信號,通道4(圖6中④)為IRIG-B編碼的交流輸出波形。 時鐘測試表明, 當GPS引擎處于位置保持狀態時,秒脈沖輸出和B碼的直流輸出誤差小于500 ns,B碼交流輸出誤差小于9 μs,而同步測試也表明,在同步編碼序列的后沿檢出同步點的方法穩定可靠,系統同步輸出誤差小于50 ns。 5 結 語 由于裝置可以接入多個時間源,要根據各個源的情況,考慮系統時間的一致性、同步穩定性和抗干擾的要求;根據輸入源的精度和可靠性,設置系統的鐘源選擇策略,時間的輸入/輸出處理應該在秒脈沖的觸發下處理,并在1 s內完成;在多個設備需要時間和同步信號時,可以將FPGA的輸出信號用簡單邏輯電路進行驅動擴展,然后連接到多個物理層器件進行物理層擴充;應該使用屏蔽電纜或者光纖傳送同步時間信號,并保證傳輸電纜的屏蔽層和裝置外殼可靠接地;在啟用頻率跟蹤時,當測得的頻率越過45~55 Hz界限時,應考慮放棄跟蹤,以提高系統同步穩定性。經過系統測試和電磁兼容及環境試驗,這種同步時間服務器已經實現了預期的設計目標,并在公司的數字化變電站系統和數字化煤礦系統中推廣使用,現場運行穩定,準確可靠。 參考文獻 [1]IEC61850-5 Communication Networks and Systems in Substations-Part 5-13:Message Performamce Requirements[S].2003. [2]雷霆,李斌,黃太貴.220 kV變電站GPS時間同步系統實現技術[J].電力自動化設備,2007(11):71-74. [3]IRIG STANDARD 200-98 IRIG Serial Time Code Formats(Format B)[S]. [4]黃小耘.NTP在電力自動化設備時鐘同步中的應用探討[J].電力系統自動化,2005,29(15):93-95. [5]RFC1305.Network Time Protocol 3 Specification,Implementation and Aanalysis[S].1992. [6]IEEE-SA Standards Board.IEEE Standard for a Precise Clock Synchronization Protocol for Networked Measurement and Control Systems[S].2008. [7]北京衛信杰科技發展有限公司.M12/M12T快速應用指南[Z].2005. [8]National Semicondutor.DP83640 Precision PHYTER.IEEE1588 Precision Time Protocol Transceiver[Z].2009. [9]戴寶峰,崔少輝,王巖.基于 IEEE 1588協議的時間戳的生成與分析[J].儀表技術,2007(7):15-17. [10]王蘭,楊志家.IEEE 1588精準時鐘協議的IP設計[J].微計算機信息,2007,23(26):288-289.