,, , ,
(許繼電氣股份有限公司,河南 許昌 461000)
時間同步裝置為調度機構、變電站、發電廠內的被授時設備提供高精度時間信號。在使用中,時間同步裝置普遍性地暴露了以下問題:如由于衛星系統受到天氣、外部干擾等因素干擾;同步裝置未能正確識別故障而錯誤跟隨;由于多時源切換過程中各廠家時源切換策略不相同,導致切換的結果也不同,致使輸出時間不一致,造成導致設備工作異常的現象;在守時階段以及時源切換過程中同步裝置的輸出擺幅過大導致合并單元、同步向量裝置等重采樣誤差過大等[1-2]。因此時間同步裝置在外部時源發生變化時能有效切換,并保持自身的輸出穩定性、守時穩定性等都是時間同步裝置所要必須克服的關鍵問題。
同時隨著我國北斗授時系統的建設速度加快,以及國內國際環境的快速變化,國家電網要求投運的時間同步裝置均應采用“天基授時為主,地基授時為輔;天基授時以北斗為主,GPS為輔”[3],并對時間同步裝置的各廠家產品進行標準統一與規范,在性能參數上提出了更高的要求。本文便是在此基礎上,設計了一款性能穩定、精度高,嚴格符合國網檢測規范的時間同步裝置。
衛星接收模塊從北斗和GPS接收衛星信號,它們的輸出信號會受到多重因素的影響,如天氣的原因、信號干擾、接收模塊異常等,都存在有偶爾失星的不正?,F象,此時接收機輸出的秒脈沖不可靠[4]。即便是在正常情況下,衛星接收模塊的每個PPS也存在30ns左右的隨機誤差。然而北斗和GPS長期時間穩定性非常好,衛星模塊輸出秒脈沖具有一定的隨機誤差,該隨機誤差服從正態分布,在樣本時間足夠長時,其累計誤差趨于0。而恒溫晶振短時穩定性好,長時穩定性差[5];因此在時間同步時,利用OCXO恒溫晶振的頻率產生的100 MHz基準頻率,測量并記錄在北斗或GPS衛星或IRIG-B碼同步秒脈沖間隔,在基準信號失步時,以晶振頻率為基準,以記錄的秒脈沖間隔為參考,通過FPGA輸出秒脈沖等時鐘信號,可以兼顧長期和短期輸出精度和并保證性能穩定。因此在硬件設計上采用CPU+FPGA+高精度恒溫晶振的硬件規劃。
時間同步裝置的總體硬件結構如圖1所示。整個裝置采標準4U機箱,插件式布局,輸出可擴展。主要模塊為冗余雙電源模塊,CPU模塊,授時模塊,輸出模塊、液晶模塊共5個模塊構成。
圖1 時間同步裝置的硬件架構
授時模塊可以同時接受多個時鐘源,包括北斗、GPS接收模塊、地面時源和備鐘時源。能同時接收兩路衛星信號和兩路IRIG-B碼信號[6-7],為多時源切換提供了保證。北斗和GPS模塊采用國內廠家標準OEM衛星接收模塊,硬件軟件兼容性強。模塊輸出采用串口時間報文加PPS脈沖組成,PPS準時沿誤差<30 ns??梢酝ù趫笪淖x取和配置模塊信息。授時模塊通過RS485接口與CPU進行通訊,保證了信息的抗干擾能力。
CPU模塊作為核心插件,采用架構為FPGA+CPU+高精度恒溫晶振的模式,其原理如圖2所示。CPU采用飛思卡爾的PowerPC系列的MPC8309芯片,FPGA采用為XILNX的XC6SLX45可編程邏輯器件,接口豐富性能強大。配備鴻曄公司的高精度10 M恒溫晶振JTM5035-A,日老化率小于0.2 ppb,年老化率小于50 ppb,預熱期間(20分鐘~2小時)誤差<10 ppb。該恒溫晶振經硬件電路倍頻后連接FPGA,在FPGA內部采用100 MHz頻率,單tick時標分辨率為10 ns,能有效保證時間精度和穩定性。
智能液晶模塊負責顯示時間信息,運行定值設置,SNTP定值設置等用戶接口。寬電壓冗余雙電源支持,保證設備電源安全。輸出插件包括IRIG-B碼信號輸出、串口時間報文輸出、脈沖輸出等各類時間輸出信號。提供RS232、RS485、空節點、光輸出等各種插件輸出,輸出信號和數量可配置。有效兼容各種使用場景。
圖2 CPU插件硬件原理框圖
時間同步裝置軟件設計涉及CPU程序設計和FPGA程序設計,功能模塊關系如圖3所示。
CPU軟件完成4個時源信息采集、自守時鐘的走時、多時源判斷選擇、授時輸出、SNTP對時服務器[5]、時間信息發送控制以及IEC61850MMS通訊信息[6]的上送等功能。
圖3 軟件模塊關系圖
FPGA負責外部接口的驅動,連接授時插件,輸出插件等。FPGA和恒溫晶振共同建立一個精確的32位tick計數器,利用此計數器作為本地走讀的頻率基礎,并為各授時源PPS打高精時戳;本地時間PPS的輸出由CPU發送輸出預期計數值,由FPGA判斷到達而產生時間脈沖。同時FPGA承擔授時模塊報文的接收、IRIG-B解碼、PPS/PPM/PPH脈沖輸出、IRIG-B發送和串口時間報文發送。
按照應用的功能,對應用層進行模塊化設計??傮w模塊劃分如圖4所示。
圖4 軟件功能模塊劃分圖
主要分為5個工作區:數據準備及自檢、授時源驅動、時間處理、SNTP授時、數據上送。
授時源驅動負責對4個時鐘源信息進行解析和存儲。對于北斗和GPS模塊,CPU讀取FPGA程序解析的串口報文數據,報文遵循NMEA 0183“National Marine Electronics Association”(國際海洋電子協會)協議,每種報文為ASCII格式,逗號隔開數據流。報文包含定位時間、緯度、經度等信息,可解析出UTC時間和品質。同時獲取FPGA所打的PPS時間戳。對于B碼,則有FPGA直接解析報文和時間戳。
時間處理任務負責實現多時源選擇功能,維護本地時間,同時負責維護FPGA內部建立的硬時鐘,調整FPGA輸出頻率和相位,生成B碼和串口報文數據格式。
SNTP授時負責SNTP對時服務器功能,能最多建立與250個授時客戶端的連接。配合FPGA內部的硬時間,授時精度達到數據上送模塊負責液晶界面的維護和IEC61850數據的上送??梢詫⒆詸z信息如鎖星顆數、失星狀態、鐘差等信息通過MMS報文輸出給監控后臺,滿足電力系統監控的需求[7]。
各模塊之間通過時間源數據進行耦合。相互之間功能獨立,各模塊之間由主任務循環調度。
多時源信息的采集時序如圖5所示。
圖5 多時源時間信息的采集時序
由時間信息采集時序可知,在時間采集軸上,本次輪詢讀取的信息對于北斗和GPS時本秒的UTC時間和秒tick;對于B碼讀取的是緩存在FPGA緩存區的上一秒的時間。
時源信息的采集將對時間品質和秒脈沖有效性進行判斷。若時鐘源的時間品質信息有效,則計算秒脈沖間隔ΔTcur,該數值與FPGA的晶振的頻率f進行橫向比較,并與上次的間隔ΔTper進行縱向比較,若小于一定閾值5 μs,則認為時源有效。將有效的時間信息(年、月、日時、分、秒、Tick-PPS、ΔT)保存在CPU內存的時間信息數據結構中。
在多時源選擇中,共有5個時間信息參與選擇,即北斗、GPS、地面有線(B1)、本地時間(即裝置時間)和備鐘時間(B2)[8]。其中北斗、GPS和地面有線時源稱為外部時源;本文采用分組策略優先選擇的多源選擇策略選擇正確時源。時間的選擇分為2種情況:無本地時間或守時恢復時的初始化情況和時源跟隨狀態下的運行態情況。
3.2.1 初始化時源選擇
當時間同步裝置上電或守時恢復時,裝置無時間信息或時間信息不準確。此時本地時間不參與多時源的選擇,僅3個外部時源參與選擇。
假設Ta、Tb、Tc是3個外部時源,它們的時間包括年、月、年、月、日、時、分、秒、tick-pps和ΔT,保存在時間信息數據結構。依次從3個時源選取1個,按照優先級順序分別與其它時源求取鐘差。將鐘差小于5微秒的時源放在一組,不滿足該條件的時源放于另一組。比較兩個組中時源數目,如果前面一組時源數目多,則在該組中按優先級選取當前時源,否則選取不到當前時源。
圖6 初始化時源選擇分組示意圖
圖6(1)中選擇1組中的Ta;(2)中選擇2組中的Tb;(3)中無時源選擇,在此情況下,如果系統還未初始化,則繼續進行判別,等待初始化完成;如果系統已經初始化完成,則進入運行狀態輸出時間信息。
3.2.2 運行態時源選擇
當時鐘處于跟隨狀態以后,本地時鐘源將參與運行時的分組策略。運行態分組時,本地時間處于最高優先級進行分組,分組以后,按照分組會形成4:0,3:1,2:2,1:1:1:1的情況。在4:0和3:1時從分組多中按照優先級選擇外部時源,當為2:2時,有可能后形成(本地、GPS):(北斗、有線時源)的情況,根據北斗優先原則應跟隨北斗時源。
圖7 運行態時源選擇分組示意圖
如圖7(1)選取Ta為跟隨時源,圖7(2)、圖7(4)則固定選取北斗時源。圖7(3)是1:1:1:1的情況,表明所有外部時源均不可用,則系統進入守時狀態,并繼續判斷時源情況,直到退出1:1:1:1時在重新選擇。
當選到最優時源后,產生本地時間,并使本地時間基準逼近隨該時鐘源的PPS上升沿時刻。輸出則按照當前時源的PPS間隔信息預判本地時間的秒脈沖間隔,用tick數表示,向FPGA發送下一次秒脈沖輸出的tick時刻。當FPGA的計數器到達此預判結果時,在此時刻發送秒脈沖、B碼、串口報文等時間信息,從而達到授時的功能。FPGA不直接跟隨時源的PPS秒脈沖,從向FPGA發送下一秒預期到FPGA產生秒脈沖,間隔100ms以上。通過此種方法,即便所選時源偶爾出現時源跳變,CPU也可以立刻判斷出來,利用預判結果生成下一次秒脈沖和時間,從而保證同步時間精度和穩定性。
當時鐘失去所有有效時源時,時間同步裝置將進入守時狀態。時間同步裝置要求裝置啟動2小時內要完成晶振馴服,達到1 μs/h的守時精度要求[9]。
守時時間的精度由有效秒脈沖間隔ΔT和高精度恒溫晶振共同保證。CPU使用的余數均攤法生,根據最近的秒脈沖間隔ΔT生成512個秒脈沖輸出隊列,由FPGA循環輸出,保證走時均勻準確。但是,晶體的頻率受施加于它的應力的影響。溫度的變化會使晶振內部應力變化[10]。實際運行通常會發生晶振預熱不充分時失步的情況,晶振輸出頻率不穩定,而且采用的恒溫晶振性能越好,體積越大,晶振的預熱和馴服時間也就越長,保存的同步秒脈沖間隔ΔT不能反映實際晶振的頻率變化,會使得的守精度誤差增大。
本文提供一種基于恒溫晶振的補償方法,用以解決失步時在恒溫晶振未充分預熱而帶來的守時誤差較大的問題。
根據研究和實驗數據得到,恒溫晶振的熱頻特性變化特性基本上按照一定的規律變化[10],由此可通過預測晶振頻率變化,進行補償守時。具體原理分析如下:
恒溫晶振提供工作頻率f,FPGA利用此頻率作為計數基準對同步時鐘源同步信號的秒脈沖打上tick時標。如果假設N秒內的秒脈沖的tick時標為C,那么,根據CPU能夠計算出恒溫晶振的實際震蕩頻率,為:
f=C/N
(1)
當N=1時,秒脈沖間隔的tick數C即為頻率。
CPU將有效秒脈沖的tick間隔值按照時間先后順序依次存入RAM緩沖區,本實施例中,緩沖區大小設定為64。每當緩沖區滿時,對緩沖區64個時間間隔進行和統計,得到β值,并存入緩沖區隊列中。計算公式為:
(2)
其中,t0為恒溫晶振在標稱頻率f0下的秒脈間隔值,即每秒的基準脈沖個數,比如:取值為99999950,ti為恒溫晶振在實際頻率下的每秒的脈沖個數。
將β值依次存入緩沖區隊列中后可觀察到β值的變化趨勢如圖8所示。
圖8 恒溫晶振預熱頻率變趨勢意圖
因此,根據上述公式可知,f=(64β+t0)/64,故β值可以清晰的反應恒溫晶振的頻率變化。
通過分析恒溫晶振的開機特性為:恒溫晶振預熱前期的頻率值在一段時間內變化較大,這就是恒溫晶振的開機特性,隨著開機預熱的時間加長,恒溫晶振的頻率輸出將達到穩定。經過實驗,對于不同的晶振,開機特性是不同的,即使是同一只晶振,重復測試結果也可能不同。但對于同一只晶振,開機時頻率變化的趨勢和開機特性在一定的范圍內變化不大,對于實現守時補償提供了機會。
由圖8可以看出恒溫晶振每64 s的tick計數隨時間的變化關系。前100個周期內(100*64 s=6400 s)變化明顯,表明此時晶振并未預熱充分。隨著時間的移動,晶振的頻率變化趨于穩定,變化趨勢趨于穩定。
當失去外部同步時鐘源時,為防止恒溫晶振隨機變化隨機性的影響,需要對預熱期間晶振頻率的穩定性進行判斷,僅當晶振頻率變化單調才進行頻率預測和調整。根據緩沖區隊列中的β值從最近時間向前計算, 按照如圖9所示分別求取α1、α2、α3……和φ1、φ2、φ3……。選取最近的4個φ值,分別是φ1、φ2、φ3、φ4,計算不等式(φ4-φ3)×(φ2-φ1)>0,和(φ3-φ2)×(φ2-φ1)>0>0是否成立,如果同時成立,則認為晶振頻率在此時段是單調變化的。
在單調性的判斷上,僅對晶振預熱階段的頻率進行判斷與調整,即緩沖區中至少保存有1.5小時的同步秒脈沖信息,預測守時后的頻率變化的情況。若單調性成立,則按照進行后續的頻率預測和補償;如果單調性不成立,則不進行補償。
圖9 秒脈沖間隔窗口統計方法
為了消除衛星的正態分布誤差,選取按照最后1024 s的秒間隔TICK值作為基準樣本,即α1和α2,再進行晶振頻率補償后生成輸出秒脈沖緩沖區隊列數據。
補償數據的計算方法:
f=(Δticki+αj)/N+f0
(3)
f是晶振的實際輸出頻率,f0是恒溫晶振的標稱頻率。那么:
Δf=f-f0=(Δticki+αj)/N
(4)
因此,只要Δticki選擇合理,便可以得到準確的實際輸出頻率。
通過實驗如下補償值計算方法,能夠使輸出的頻率與恒溫晶振的實際輸出頻率的誤差最小,可以保證時間同步裝置的守時精度,定義i=1、2、……
Δtick1=Δtick2=(φ1-φ4)/2
(5)
……
Δtick2i+1=Δtick2i+2=Δtick2i-1/2
(6)
Δtick對應的時間段與α值對應的時間段相等,均是512秒。Δtick1是最近512秒對應的補償值,Δtick2是Δtick1前512秒對應的補償值,其他的以此類推。另外,當Δtick=1時,停止補償。
得到Δtick后,按照補償后Δtick2i+1+α1和Δtick2i+2+α2的值生成兩組512個tick計數器間隔,并按照計數器循環輸出秒脈沖。
本實施例中,采用余數均攤方法生成秒脈沖輸出序列利用余數均攤方法生成的秒脈沖數組相對于原始采集的512個tick值更加均勻。
圖10 補償對比效果圖
圖10是未補償和補償后輸出PPS的比較圖。由圖可見,未補償PPS序列和補償后的PPS在512個PPS中總和偏差Δtick(如圖10陰影部分),該偏差Δtick被平均分配到單個PPS輸出的小陰影部分。補償值Δtick1糾正了由于晶振頻率變化所引起的頻率誤差Δf,從而減少了輸出512個PPS所引起的時間誤差。
為證明利用本文設計方法所獲得的時間同步裝置的實際有效性,對裝置的光纖接口、RS485接口、SNTP以及守時精度4個項目進行實際測試,測試結果如表1所示。
由表1可以看出,運用本文設計方法的時間同步裝置實際測得光纖接口的脈沖準時沿為30 ns,準確度為200 ns,遠小于國網檢測指標的100 ns和1000 ns;RS485接口的脈沖準時沿和時間準確度實測結果同光纖接口的實測結果相同,同樣小于國網的檢測指標;SNTP項目在采用了本文設計方法的時間同步裝置后實際測得時間準確度達到100 ns,比國網指標的1000 ns少了900 ns;國網指標要求時間同步裝置的守時精度為1000 ns/h以下,采用本文設計方法的時間同步裝置實測結果為600 ns/h,符合國網指標的要求。由此,利用本文設計方法的時間同步裝置已順利通過2017年的國網檢測,各性能參數達到或優于預期。
表1 時間同步裝置測試結果
本文在設計之初便考慮到時間精度和穩定性問題,在硬件方面,考慮到時間準確性方面,對脈沖準時沿的實時性要求很高,單純靠CPU難達到要求,所以利用FPGA的實時性和恒溫晶振的穩定性,外加CPU的強大數據處理能力,構建了一個可靠的硬件平臺。
在軟件設計上采用基于優先級分組策略的多源選擇算法、守時算法、晶振頻率預測補償算法等,充分利用衛星、CPU、恒溫晶振和FPGA形成精確穩定的授時平臺。實驗證實,本文方法可以滿足具體指標的要求,具有一定的推廣價值和實用價值。