鐘 程 張 磊 凌 震
1.宇航智能控制技術(shù)國家級重點實驗室,北京100854 2.北京航天自動控制研究所,北京100854 3.中國運載火箭技術(shù)研究院, 北京100076
時間觸發(fā)以太網(wǎng)(Time-Triggered Ethernet,簡稱 TTE)是將時間觸發(fā)傳輸?shù)膶崟r性、確定性、容錯能力等特點與傳統(tǒng)以太網(wǎng)特點相結(jié)合的一種實時以太網(wǎng)技術(shù),可應(yīng)用于航空航天等對安全性要求較高的領(lǐng)域。SAE組織針對TTE建立了AS6802協(xié)議標準,制定了一套高精度的同步技術(shù),能夠保證TTE對于高帶寬,低延遲,髙精度,高可靠性的需求,為TTE建立了可靠的全局時鐘[1]。同步精度是TTE網(wǎng)絡(luò)中的重要指標之一,如何提高同步精度是工業(yè)界不斷研究的課題。張英靜等學(xué)者采用穩(wěn)健回歸算法對TTE節(jié)點的本地時鐘進行補償,同步精度優(yōu)于傳統(tǒng)的補償算法[2];徐乾舜等學(xué)者在濾除晶振噪聲的情況下,仿真驗證了2種漸近時鐘補償算法在TTE網(wǎng)絡(luò)上的可行性[3];楊永強等學(xué)者提出一種野值預(yù)剔除算法,通過對野值的預(yù)先剔除和本地時鐘的補償,有效解決了TTE同步主節(jié)點出現(xiàn)野值的問題[4]。
實際工程中,網(wǎng)絡(luò)節(jié)點常使用不同精度等級的晶振,如普通晶振、溫補晶振、恒溫晶振及銣鐘等。AS6802協(xié)議的同步算法未根據(jù)節(jié)點的不同時鐘精度等級進行特別的優(yōu)化設(shè)計。在一定同步精度要求下需要以最差晶振指標設(shè)定同步周期,因此要消耗更多的帶寬資源。
在SAE AS6802同步算法的基礎(chǔ)上,提出一種基于時鐘精度加權(quán)的時鐘同步改進算法,通過給予網(wǎng)絡(luò)系統(tǒng)中不同精度的時鐘不同的權(quán)值,使較高精度的時鐘在同步過程中發(fā)揮其穩(wěn)定、精確的作用,提高網(wǎng)絡(luò)系統(tǒng)時鐘同步精度,為數(shù)據(jù)交換、資源調(diào)度提供可靠的保障[5]。
AS6802是于2011年發(fā)布的一種高容錯高精度的時鐘同步協(xié)議,該協(xié)議TTE 指定的一種網(wǎng)絡(luò)時鐘同步算法,用于實現(xiàn)集群節(jié)點間的時鐘內(nèi)同步。
在TTE的同步過程中,各個端系統(tǒng)和交換機可以配置為不同的功能單元:同步主節(jié)點(Synchronization Master,SM)、同步客戶端(Synchronization Client,SC)和壓縮主節(jié)點(Compression Master,CM)。如圖1所示,網(wǎng)絡(luò)系統(tǒng)的同步過程為:SM向CM節(jié)點發(fā)送協(xié)議控制幀(Protocol Control Frame,PCF)。CM節(jié)點收到各個鏈路上的PCF后進行固化函數(shù),重建PCF的派發(fā)順序。繼而進行壓縮函數(shù),對收集到的PCF中包含的時間信息進行整合計算,利用容錯中值算法得到壓縮修正值。CM根據(jù)壓縮修正值修正本地時鐘后,將時間信息記錄在一個新PCF中廣播給各SM和SC,各個節(jié)點根據(jù)新PCF的時間信息各自修正自己的本地時間,實現(xiàn)全局的時間同步[6]。
圖1 兩階段的同步過程
壓縮函數(shù)(Compression Algorithm)是AS6802協(xié)議時鐘同步算法的最為核心的函數(shù)之一。壓縮函數(shù)主要有三個階段:收集階段、計算階段和延遲階段[7-8]。
1)收集階段。當壓縮函數(shù)開始時會開啟觀察窗口,該階段通過最大觀察窗口容錯機制對CM節(jié)點接收到的PCF幀固化點進行收集;
2)計算階段。收集階段完成后,計算階段對觀察窗口內(nèi)收集到的固化點進行計算,最后得到參數(shù)壓縮修正值C(Compression correction)用于CM節(jié)點本地時鐘的修正,計算方法采用容錯中值算法,步驟如下。其中ti表示第i個固化時刻點。
采集階段被固化的 PCF 的數(shù)量決定了計算階段輸入?yún)?shù)的數(shù)量,第i個輸入Ui按照如下公式計算:
Ui=ti-t1
(1)
壓縮函數(shù)將應(yīng)用以下公式來計算壓縮修正值:
(2)
式中,N為收集到的PCF的個數(shù),k是離線配置的與容錯相關(guān)的常量。
3)延遲階段。引入一段“人為”的延遲時間,等待PCF幀的再次派發(fā)。延遲階段結(jié)束后,壓縮函數(shù)完成。
精確可靠的全局時間對于時間觸發(fā)網(wǎng)絡(luò)至關(guān)重要,是后續(xù)過程中時間觸發(fā)通訊的先決條件。網(wǎng)絡(luò)中各節(jié)點的晶振均會存在不同程度的誤差,隨著時間的推移,各個節(jié)點間的時鐘偏差會越來越大。時鐘同步算法就是在給定的精度范圍Π內(nèi)對系統(tǒng)內(nèi)各個節(jié)點的本地時鐘進行校正的過程,在各節(jié)點間形成一個較為合適的全局時間[9],如圖2所示。
圖2 時鐘同步算法的作用
對于網(wǎng)絡(luò)節(jié)點中存在的晶振誤差,AS6802同步算法仍可以保持較高的精度與容錯性。確保高精度與容錯性的關(guān)鍵策略是AS6802算法中的觀察窗口容錯機制。在同步算法壓縮函數(shù)的收集階段,CM節(jié)點在收到第1個到達的PCF時刻開啟多個觀察窗口。觀察窗口機制的作用是盡量多地收集落在同一窗口范圍內(nèi)的PCF,作為后續(xù)壓縮計算的輸入;在該范圍之外的PCF視作錯誤時鐘不予收集。觀察窗口的大小為兩個正常時鐘的最大偏差。由于各個時鐘的精度存在差別,觀察窗口的長度必須設(shè)置為足夠長來囊括正常時鐘存在的偏差。在這種情況下,容錯機制勢必會占用較高的帶寬資源來滿足需求。這將對TTE網(wǎng)絡(luò)中不同數(shù)據(jù)流的通訊服務(wù)在帶寬流量的分配與利用方面帶來一定的限制和影響。
另一方面,壓縮函數(shù)在同步過程的作用是:利用接收到的PCF的時間信息,整合計算出一個趨近于全局同步的時間信息。壓縮算法計算階段求出的壓縮修正值正是對各個PCF的時間偏差的平均體現(xiàn)。AS6802協(xié)議中對壓縮修正值的計算較為簡潔,僅將到達CM節(jié)點的時間信息作為修正值計算的輸入,節(jié)點時鐘本身的時間信息并未加以利用。
由于老化、溫度變化、沖擊等原因,一般時鐘晶振具有頻率漂移、相位噪聲惡化等情況。通常用頻率穩(wěn)定性評估適應(yīng)晶振的性能。頻率穩(wěn)定性包括長期穩(wěn)定性和短期穩(wěn)定性。長期穩(wěn)定性是指振蕩器在長時間內(nèi)發(fā)生的頻率變化的特性,也叫漂移特性。短期穩(wěn)定性是指由晶振內(nèi)部的相位噪聲引起的頻率的隨機抖動。本次研究重點主要是短期穩(wěn)定性,并在一定程度上簡化晶振的誤差模型:假定晶振的輸出頻率滿足以其標稱頻率為期望,方差為的正態(tài)分布。由統(tǒng)計學(xué)知識可知,頻率的誤差也滿足正態(tài)分布。
晶振輸出脈沖信號的個數(shù)會被寄存器不斷累加,按照一定的換算關(guān)系就能計算出該節(jié)點的本地時間。由于晶振的工作頻率并不恒定,單位時間內(nèi)輸出脈沖信號的個數(shù)會有所偏差,導(dǎo)致計算的本地時間與標準時間之間出現(xiàn)偏差。
對于高精度晶體振蕩器,如溫補晶振、恒溫晶振等,它們通過采取溫度補償、量化噪聲等方法,使輸出頻率具有較高的穩(wěn)定度和準確度。這將為網(wǎng)絡(luò)節(jié)點帶來更為準確的本地時鐘。本文研究的重點就是利用高精度的時鐘節(jié)點,對AS6802同步算法進行改進,提高同步精度,優(yōu)化資源利用。
在AS6802協(xié)議的基礎(chǔ)上,在壓縮函數(shù)的計算階段提出如下改進:
1)對于具有不同時鐘精度的SM節(jié)點,提前離線設(shè)定出不同的權(quán)重,晶振精度越高,權(quán)重越大,表示該節(jié)點的PCF時間信息在計算整合階段的作用越高;
2)對于收集到的所有固化點(以n個端節(jié)點為例),CM節(jié)點經(jīng)過壓縮函數(shù)計算的壓縮修正值的公式修改為:
C=t1×λ1+t2×λ2+…+tn×λn-t1
(3)
3)對于權(quán)值λi的配置,提出一種靜態(tài)配置與動態(tài)檢驗結(jié)合的配置方案。
動態(tài)檢驗是在同步過程中壓縮函數(shù)中進行的??紤]到高精度時鐘的權(quán)值較高,一旦發(fā)生故障,帶有錯誤時間信息的PCF被收集后將對同步過程產(chǎn)生較大影響,動態(tài)檢驗是一種提高安全性的容錯手段。
動態(tài)檢驗的具體方案為:CM接收的每個PCF 都有各自的先驗接收時刻(無誤差的完美同步下),可以根據(jù)實際時刻偏離先驗時刻的大小判斷該PCF時間信息的正確與否。在沒有其他誤差的情況下,偏離程度僅由時鐘精度決定。精度越高的時鐘,其PCF到達的時刻越接近先驗時刻。因此可以在先驗接收時刻,左右兩端開啟一定寬度的接收窗口。接收窗口的寬度和發(fā)送該PCF節(jié)點的時鐘精度有關(guān),精度越高,其接收窗口的寬度越小。若PCF的實際接收時刻落在其對應(yīng)的接收窗口,則表示該PCF的時間信息是可靠的,其權(quán)值按照靜態(tài)配置的方法配置。若實際接收時刻超出了接收窗口的范圍,則說明發(fā)送該PCF的時鐘出現(xiàn)故障,需要根據(jù)其具體落點范圍對其權(quán)值進行修正。
如圖3所示,精度為pi的時鐘都會有其對應(yīng)寬度的PCF接收窗口,若PCF沒有落在對應(yīng)的窗口中,則按照其實際所在窗口對應(yīng)的精度給予其權(quán)值。若實際接收點落在最大接收窗口之外,則該PCF將不再參與本次同步服務(wù),對應(yīng)的節(jié)點應(yīng)重啟。
圖3 接收窗口示意圖
利用網(wǎng)絡(luò)仿真軟件OPNET對本次研究的網(wǎng)絡(luò)建立模型[10],如圖4所示。網(wǎng)絡(luò)拓撲采用星形拓撲,網(wǎng)絡(luò)中包含4個端節(jié)點(SM節(jié)點),1個交換機節(jié)點(CM節(jié)點),網(wǎng)絡(luò)連接線的傳輸速率為1Gbps。
圖4 網(wǎng)絡(luò)拓撲
在該網(wǎng)絡(luò)模型中,4個端節(jié)點分別采用3種精度的晶振:普通晶振,溫補晶振和恒溫晶振。不同時鐘精度等級的節(jié)點時鐘會在PCF幀格式的第18個字節(jié)中做出標記。本次仿真中,各個精度等級的時鐘權(quán)值按照靜態(tài)配置的方式設(shè)置。各個晶振的主要參數(shù)信息如表1所示。
表1 晶振等級劃分與權(quán)值設(shè)定
本次仿真中假定網(wǎng)絡(luò)系統(tǒng)已經(jīng)進行了上電和冷啟動過程,各節(jié)點已經(jīng)達到同步狀態(tài)。
本次仿真中,集成周期設(shè)定為20ms,共進行100次同步服務(wù),即100次本地時鐘采集,仿真總時長為2s。設(shè)定所有晶振的標稱頻率為30MHz,對于普通晶振每次集成周期后的抖動誤差范圍為±600ns,溫補晶振為±100ns,恒溫晶振為±10ns。
本次研究中,改進算法的目的是通過提高同步后的時鐘精度,釋放更多的帶寬資源。本次仿真設(shè)定觀察和評價指標Q為網(wǎng)絡(luò)的同步精度,是指每次同步服務(wù)后,各個節(jié)點的本地時鐘里最大值與最小值的差值。即:
(4)
OPNET仿真軟件在網(wǎng)絡(luò)域、節(jié)點域和進程域3個層面上建立了網(wǎng)絡(luò)模型,并通過相關(guān)代碼的編譯實現(xiàn)端接點的成幀、發(fā)包、收包及處理數(shù)據(jù),交換機的收發(fā)包、數(shù)據(jù)分析及處理等關(guān)鍵功能。
同步服務(wù)啟動前,時鐘間最大時鐘偏差的統(tǒng)計情況如圖5所示。
圖5 時鐘偏差(未同步)
利用AS6802同步算法進行同步服務(wù),對100次同步后的最大偏差結(jié)果記錄如圖6所示,對比圖5可知,節(jié)點間的時鐘偏差范圍相較于未同步時的結(jié)果有大幅度的下降,說明AS6802算法可以有效地對各節(jié)點本地時鐘進行修正,具有一定的同步精度。
圖6 時鐘偏差(AS6802同步算法)
利用改進算法對網(wǎng)絡(luò)系統(tǒng)進行仿真,經(jīng)過100次同步服務(wù)后的同步結(jié)果統(tǒng)計如圖7所示。未同步、AS6802同步算法與改進算法的偏差數(shù)據(jù)統(tǒng)計如表2所示。與未同步狀態(tài)和AS6802算法同步結(jié)果比較可知,經(jīng)過改進算法的同步服務(wù)后,節(jié)點間時鐘最大偏差值的范圍大幅度縮減,相較于原算法的偏差值降低了一個數(shù)量級。各個時鐘之間最大偏差縮小到一個較小的范圍,說明基于時鐘精度加權(quán)的改進時鐘同步算法可為網(wǎng)絡(luò)系統(tǒng)提高更高精度的全局時鐘。
圖7 時鐘偏差(改進同步算法)
表2 不同同步服務(wù)條件下的統(tǒng)計值
同步精度是TTE網(wǎng)絡(luò)中的重要指標之一,如何提高同步精度是工業(yè)界不斷研究的課題。本文在AS6802的基礎(chǔ)上提出了一種基于時鐘精度加權(quán)的時鐘同步改進算法,在同步算法的壓縮計算階段,給予不同晶振精度的時鐘不同的權(quán)值以發(fā)揮高精度時鐘晶振穩(wěn)定準確的特性。仿真結(jié)果表明:改進的算法能在較大程度上提高網(wǎng)絡(luò)的同步精度,同步后的時鐘偏差縮減為原算法的10%左右。