黃學(xué)進(jìn),崔 鑫,余 婷
(中國(guó)航發(fā)控制系統(tǒng)研究所,江蘇 無錫 214063)
時(shí)鐘同步是指調(diào)整系統(tǒng)中網(wǎng)絡(luò)設(shè)備或計(jì)算機(jī)的時(shí)鐘,使之與其它時(shí)鐘源的時(shí)間保持一致或者偏差限定在足夠小的范圍內(nèi)的過程[1]。時(shí)鐘同步是分布式仿真系統(tǒng)的核心技術(shù)之一,在分布式仿真系統(tǒng)中,數(shù)據(jù)采集、模型處理、人機(jī)交互等都分布在不同的節(jié)點(diǎn)上,因此進(jìn)行時(shí)鐘同步的目的是維護(hù)一個(gè)全局一致的物理或邏輯時(shí)鐘,以使得系統(tǒng)中的信息、事件及各節(jié)點(diǎn)與時(shí)間有關(guān)的行為有一個(gè)全局一致的解釋[2]或者是提供一種仿真時(shí)間的推進(jìn)機(jī)制,以確保節(jié)點(diǎn)發(fā)送和接收消息在時(shí)間邏輯上是完全正確的。分布式仿真系統(tǒng)往往具有節(jié)點(diǎn)操作系統(tǒng)類型多(Windows系統(tǒng)、Linux系統(tǒng)、RTX實(shí)時(shí)系統(tǒng)、LabVIEWRT實(shí)時(shí)系統(tǒng)等)、仿真周期小(毫秒級(jí))、結(jié)構(gòu)靈活、分布范圍廣的特點(diǎn),因此需要時(shí)鐘同步系統(tǒng)具備兼容多種操作系統(tǒng)、同步精度高(優(yōu)于1 ms)、靈活度高、成本低,同時(shí)能考慮系統(tǒng)負(fù)載,本文提出的時(shí)鐘同步系統(tǒng)時(shí)鐘校準(zhǔn)周期要求大于1 h。目前常用于時(shí)鐘同步的技術(shù)方案有:GPS(global positioning system)時(shí)鐘同步技術(shù)[3]、IRIG-B(interrange instrumentation group - B)時(shí)鐘同步技術(shù)[4]、NTP(network time protocol)時(shí)鐘同步技術(shù)[5]、PTP(precision time protocol)時(shí)鐘同步技術(shù)[6]等。各種方案應(yīng)用于分布式仿真系統(tǒng)中各有優(yōu)缺點(diǎn),如表1所示。
表1 時(shí)鐘同步方案對(duì)比
從表中可以看出,NTP同步與文章的同步設(shè)計(jì)目標(biāo)最為接近,只是同步精度略有不足。近年來,許多文章對(duì)NTP進(jìn)行了改進(jìn)和優(yōu)化。諶華金[7]通過CPU時(shí)間戳計(jì)數(shù)器(RDTSC,read time stamp counter)實(shí)現(xiàn)了同步精度1 ms以內(nèi),但是同步周期最長(zhǎng)只有200ms,對(duì)原系統(tǒng)的CPU和網(wǎng)絡(luò)負(fù)載影響較大。侯重遠(yuǎn)[8]利用交換機(jī)的IEEE802.1p 優(yōu)先級(jí)調(diào)度功能,將同步精度提高到10~100,但除了需要交換機(jī)支持調(diào)度功能外,操作系統(tǒng)必須為實(shí)時(shí)操作系統(tǒng)(如文中使用的VxWorks),不能兼容非實(shí)時(shí)Windows系統(tǒng)。
黃沛芳[9]通過對(duì)信息包回路時(shí)延設(shè)置閾值進(jìn)行數(shù)據(jù)篩選,只保留時(shí)延0.5 ms以內(nèi)的數(shù)據(jù),將同步精度提升到250,但這需要提前獲取網(wǎng)絡(luò)時(shí)延分布信息,且同步間隔只有1 min。因此,本文基于Windows系統(tǒng),在NTP協(xié)議基本原理上,通過邏輯時(shí)鐘構(gòu)建、網(wǎng)絡(luò)時(shí)延不對(duì)稱性優(yōu)化、時(shí)鐘頻率補(bǔ)償三方面進(jìn)行優(yōu)化,實(shí)現(xiàn)設(shè)定的分布式仿真系統(tǒng)時(shí)間同步目標(biāo):同步精度優(yōu)于1 ms且校準(zhǔn)時(shí)間間隔大于1 h。該時(shí)鐘同步方法基于UDP通訊,研究結(jié)果同樣可以推廣到實(shí)時(shí)操作系統(tǒng)中。
NTP是由RFC1305定義的時(shí)鐘同步協(xié)議,最早是由美國(guó)特拉華大學(xué)的David L.Mills教授在1982年提出[10],在實(shí)際的應(yīng)用過程中,可以采用NTP的簡(jiǎn)化版本SNTP(簡(jiǎn)單網(wǎng)絡(luò)時(shí)間協(xié)議)。這里主要介紹NTP以客戶機(jī)/服務(wù)器模式進(jìn)行通信的過程,如圖1所示。客戶機(jī)首先要生成一個(gè)NTP查詢信息包,通過網(wǎng)絡(luò)發(fā)送到時(shí)間服務(wù)器;服務(wù)器收到后,根據(jù)本地時(shí)間生成一個(gè)NTP時(shí)間信息包發(fā)送給客戶機(jī)[11]。兩個(gè)信息包都帶有發(fā)送和接收的時(shí)間戳,根據(jù)這4個(gè)時(shí)間戳T1T2T3T4來確定客戶機(jī)和服務(wù)器之間的時(shí)間偏差和網(wǎng)絡(luò)時(shí)延。
圖1 NTP通訊過程
根據(jù)NTP通訊過程,可以抽象出模型如圖2所示[12]。
圖2 NTP通訊模型
記客戶端時(shí)間落后服務(wù)器θ,請(qǐng)求信息在網(wǎng)上傳播耗時(shí)為δ1,回復(fù)信息在網(wǎng)上傳播耗時(shí)為δ2,網(wǎng)絡(luò)傳輸?shù)耐笛訒r(shí)和為δ,則有:
(1)
4個(gè)未知數(shù),3個(gè)方程,無法獲得解析解。假設(shè)在相同的網(wǎng)絡(luò)條件下,客戶端與服務(wù)器通訊往返回路對(duì)稱,網(wǎng)絡(luò)時(shí)間延遲相等,即存在:
δ1=δ2
(1)
(3)
根據(jù)NTP基本原理設(shè)計(jì)NTP客戶端和服務(wù)器進(jìn)行時(shí)鐘同步測(cè)試實(shí)驗(yàn),具體設(shè)計(jì)如下:
1)采用Windows系統(tǒng)時(shí)間作為時(shí)間戳;
2)通訊網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng);
3)固定周期進(jìn)行時(shí)鐘校準(zhǔn),如表2所示;
表2 系統(tǒng)時(shí)間下同步精度實(shí)驗(yàn)設(shè)計(jì)
4)實(shí)驗(yàn)過程中每秒進(jìn)行同步精度測(cè)試并記錄數(shù)據(jù)。
實(shí)驗(yàn)數(shù)據(jù)整理如圖3所示。
圖3 系統(tǒng)時(shí)間下時(shí)鐘同步精度變化
實(shí)驗(yàn)結(jié)論:1)基于Windows系統(tǒng)時(shí)間進(jìn)行同步,短時(shí)間波動(dòng)量約15 ms,因此同步精度最高不會(huì)優(yōu)于15 ms;2)長(zhǎng)時(shí)間看,校準(zhǔn)周期內(nèi),同步偏差逐漸增大,分析認(rèn)為這是服務(wù)器和客戶端之間時(shí)鐘晶振頻率不同導(dǎo)致。
分析時(shí)鐘同步過程如圖4所示,客戶端和服務(wù)器獲取來源于晶振的系統(tǒng)時(shí)間,在經(jīng)過Windows下的TCP/IP協(xié)議和網(wǎng)卡及網(wǎng)絡(luò)傳輸后,實(shí)現(xiàn)時(shí)間戳信息交換。因此,結(jié)合NTP基本原理和時(shí)鐘同步實(shí)驗(yàn)結(jié)果,可以將引入誤差的環(huán)節(jié)分為3個(gè)部分:時(shí)間獲取、時(shí)間傳輸、晶振偏差。
圖4 時(shí)鐘同步精度影響因子
Windows時(shí)間系統(tǒng)主要包括實(shí)時(shí)時(shí)鐘(RTC)、基本輸入輸出系統(tǒng)(BIOS)時(shí)鐘和操作系統(tǒng)(OS)時(shí)鐘三部分[13]。RTC基于晶振和計(jì)時(shí)電路的硬件時(shí)鐘。BIOS時(shí)鐘硬件部分對(duì)RTC時(shí)間脈沖分頻產(chǎn)生中斷信號(hào),然后通過中斷響應(yīng)程序進(jìn)行軟件計(jì)時(shí)從而產(chǎn)生系統(tǒng)時(shí)鐘[14]。BIOS時(shí)鐘每秒產(chǎn)生64個(gè)中斷信號(hào),中斷周期約為15.6 ms,即系統(tǒng)時(shí)鐘的時(shí)鐘精度約為15.6 ms。因此Windows系統(tǒng)常用的多個(gè)與時(shí)間有關(guān)的API,其時(shí)間分辨率只能達(dá)到15 ms,當(dāng)高頻率調(diào)用讀取時(shí)間時(shí),會(huì)發(fā)現(xiàn)多次返回時(shí)間相同,然后突然跳到下一個(gè)時(shí)間刻度,出現(xiàn)“時(shí)間停止”和“時(shí)間跳躍”現(xiàn)象,跳躍量約為15.6 ms,如圖5所示。
圖5 系統(tǒng)時(shí)間分辨率測(cè)試
因此,在Windows非實(shí)時(shí)系統(tǒng)下進(jìn)行高精度時(shí)鐘同步時(shí),首先必須獲取高精度的時(shí)間戳,這是進(jìn)行高精度時(shí)鐘同步的基礎(chǔ)。
時(shí)間傳輸部分詳細(xì)過程如圖6所示,通訊傳輸延遲的不確定性主要受協(xié)議棧不確定性時(shí)延、網(wǎng)絡(luò)路由不確定性時(shí)延和操作系統(tǒng)進(jìn)程調(diào)度等方面影響[15]。
圖6 NTP通訊傳輸過程及其不確定性時(shí)延
協(xié)議棧不確定性時(shí)延。TCP/IP五層網(wǎng)絡(luò)架構(gòu)包括應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,NTP是應(yīng)用層的協(xié)議,下層使用運(yùn)輸層的UDP協(xié)議。根據(jù)UDP/IP協(xié)議,時(shí)鐘同步報(bào)文的傳輸需要逐層進(jìn)行。傳輸過程受到處理器處理速度、操作系統(tǒng)工作方式等種種因素的影響,時(shí)鐘同步報(bào)文在應(yīng)用程序中開始發(fā)送到報(bào)文到達(dá)物理傳輸介質(zhì)的時(shí)間一般無法控制,從而會(huì)引入誤差。
網(wǎng)絡(luò)路由不確定性時(shí)延。網(wǎng)絡(luò)路由時(shí)延包括固有的鏈路時(shí)延、路由器處理和排隊(duì)時(shí)延。報(bào)文在往返過程中不同的路由選擇會(huì)導(dǎo)致信號(hào)的往返時(shí)延不對(duì)稱。進(jìn)行信息傳輸時(shí),發(fā)送方首先將信息發(fā)送到本地網(wǎng)卡的緩沖區(qū),然后在網(wǎng)絡(luò)空閑時(shí)發(fā)送到接收方網(wǎng)卡的緩沖區(qū),因此在網(wǎng)絡(luò)負(fù)載高、任務(wù)繁忙的時(shí)候,接收方收到發(fā)送方信息的時(shí)間具有很大的不確定性,這就是網(wǎng)卡的緩存效應(yīng)。因此在局域網(wǎng)內(nèi)進(jìn)行同步時(shí),時(shí)間延遲經(jīng)常是不對(duì)稱的,公式計(jì)算出的時(shí)差時(shí)間差也是不準(zhǔn)確的[16]。
操作系統(tǒng)進(jìn)程調(diào)度。Windows系統(tǒng)采用時(shí)間片輪轉(zhuǎn)機(jī)制對(duì)進(jìn)程進(jìn)行調(diào)度,進(jìn)程調(diào)度中內(nèi)存管理、UDP協(xié)議的封裝、網(wǎng)卡控制器里的排隊(duì)等,任何一次中斷或任務(wù)調(diào)度都會(huì)打斷協(xié)議棧的封裝或解析過程。這些操作都將會(huì)引入不可忽略的延遲波動(dòng),達(dá)到幾微秒至幾毫秒,造成時(shí)間延遲的不可預(yù)測(cè)。
因此,若要降低網(wǎng)絡(luò)傳輸延遲對(duì)同步精度的影響,需要在處理時(shí)間戳的過程中考慮如何降低消息包在網(wǎng)絡(luò)傳輸過程中不對(duì)稱通信鏈路帶來的影響。
分布式仿真系統(tǒng)中,長(zhǎng)時(shí)間下時(shí)鐘的準(zhǔn)確度取決于晶振頻率準(zhǔn)確度。但是受溫度變化、電磁干擾、芯片老化等因素影響,晶振頻率會(huì)發(fā)生小幅度波動(dòng),其中溫度對(duì)晶振頻率影響最大[17]。由于工藝和材料的原因,即使同一生產(chǎn)線上標(biāo)稱頻率相同的石英晶體,其實(shí)際頻率也是不同的,實(shí)際頻率與標(biāo)稱頻率偏差率從量級(jí)到量級(jí)不等。以量級(jí)為例,時(shí)鐘1 h誤差達(dá)360 ms。因此,即使在每次時(shí)鐘同步過程中,從節(jié)點(diǎn)的授時(shí)精度很高,但由于頻率偏差帶來的守時(shí)能力差,隨著時(shí)間的推移,從節(jié)點(diǎn)和主節(jié)點(diǎn)的時(shí)鐘同步精度也會(huì)逐漸變差。Veitch D等人[18]通過實(shí)驗(yàn)得出,短時(shí)間內(nèi),時(shí)鐘偏差隨時(shí)間的變化基本可以認(rèn)為是線性的,但長(zhǎng)時(shí)間下,時(shí)鐘偏差隨時(shí)間的變化是非線性的。
要提高從節(jié)點(diǎn)的守時(shí)能力,主要有兩個(gè)思路:一是更換時(shí)鐘源,選取高精度、高穩(wěn)定度、守時(shí)能力更強(qiáng)的晶體振蕩器。晶體振蕩器的穩(wěn)定度等級(jí)從一般晶體振蕩器、溫度補(bǔ)償型晶體振蕩器、恒溫晶體振蕩器、銣原子振蕩器逐步提高[19],同時(shí)晶體振蕩器的成本將變得十分昂貴;另外的思路則是采用數(shù)學(xué)算法對(duì)時(shí)鐘進(jìn)行建模,以主節(jié)點(diǎn)的頻率作為基準(zhǔn)對(duì)從節(jié)點(diǎn)進(jìn)行頻率偏差補(bǔ)償,提高從節(jié)點(diǎn)的守時(shí)精度。
對(duì)于一個(gè)系統(tǒng)而言,時(shí)鐘可分為兩種:物理時(shí)鐘和邏輯時(shí)鐘。物理時(shí)鐘又稱為絕對(duì)時(shí)鐘或者墻上時(shí)鐘,對(duì)應(yīng)于現(xiàn)實(shí)世界中的時(shí)間,通常通過計(jì)算機(jī)內(nèi)置的時(shí)鐘芯片可以獲得物理時(shí)鐘。邏輯時(shí)鐘是指自行建立的時(shí)鐘,獨(dú)立于物理時(shí)鐘,但一般和物理時(shí)鐘有一定的換算關(guān)系[20]。分布式仿真系統(tǒng)中,只要求系統(tǒng)仿真的時(shí)間和真實(shí)的時(shí)間有一定關(guān)系,而不要求和真實(shí)時(shí)間完全相同,因此可使用邏輯時(shí)鐘。
高精度邏輯時(shí)鐘的構(gòu)建主要有兩種方案:1)基于系統(tǒng)硬件的高分辨率性能計(jì)數(shù)器。它從系統(tǒng)上電開始,以其晶振頻率進(jìn)行計(jì)數(shù),可通過相應(yīng)的接口函數(shù)獲取其當(dāng)前計(jì)數(shù)值和晶振頻率;2)計(jì)算機(jī)CPU中,有一個(gè)CPU時(shí)間戳計(jì)數(shù)器,記錄了自CPU上電后的時(shí)鐘周期數(shù),通過機(jī)器指令RDTSC(read time stamp counter)可以讀取這個(gè)值[22]。但是,多核計(jì)算機(jī)情況下讀取的RDTSC指令并不準(zhǔn)確,原因包括:同一主板上每個(gè)核的TSC是不同步的,讀取的RDTSC可能在不同CPU上;CPU時(shí)鐘頻率可能變化,例如某些節(jié)能模式或超頻[21]。因此,本文選擇基于高分辨率性能計(jì)數(shù)器構(gòu)建邏輯時(shí)鐘。
高分辨率性能計(jì)數(shù)器提供函數(shù)QueryPerformanceFrequency用于獲取頻率,提供函數(shù)QueryPerformanceCounter用于獲取計(jì)數(shù)器的當(dāng)前值u,利用兩次獲得的計(jì)數(shù)之差及時(shí)鐘頻率,就可算出經(jīng)歷的精確時(shí)間[22]:
(4)
取初始時(shí)刻計(jì)數(shù)值為u0,對(duì)應(yīng)的系統(tǒng)時(shí)間為t0,當(dāng)前計(jì)數(shù)值為u(t),建立的邏輯時(shí)鐘時(shí)間為T,根據(jù)式則有:
(5)
經(jīng)測(cè)試,該邏輯時(shí)鐘的實(shí)用時(shí)鐘分辨率約為2,遠(yuǎn)小于同步精度指標(biāo),可用于時(shí)鐘同步,如圖7所示。
圖7 邏輯時(shí)鐘分辨率測(cè)試
基于邏輯時(shí)鐘設(shè)計(jì)時(shí)間同步客戶端和服務(wù)器進(jìn)行同步測(cè)試實(shí)驗(yàn),具體設(shè)計(jì)如下:
1)采用高精度邏輯時(shí)鐘作為時(shí)間戳;
2)通訊網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng);
3)固定周期進(jìn)行時(shí)鐘校準(zhǔn),如表3所示;
表3 系統(tǒng)時(shí)間下同步精度實(shí)驗(yàn)設(shè)計(jì)
4)實(shí)驗(yàn)過程中每秒進(jìn)行同步精度測(cè)試并記錄數(shù)據(jù)。
實(shí)驗(yàn)數(shù)據(jù)整理如圖8和圖9所示。
圖8 高精度時(shí)鐘下同步實(shí)驗(yàn)結(jié)果
圖9 局部同步瞬時(shí)誤差和毛刺
根據(jù)實(shí)驗(yàn)數(shù)據(jù),可以得出如下結(jié)論:
1)校準(zhǔn)周期內(nèi),同步精度變化總體呈線性變化趨勢(shì),變化速率約0.36 ms/min;
2)每5 min校準(zhǔn)下同步精度達(dá)到1.8 ms,每20 min校準(zhǔn)下同步精度達(dá)到7.2 ms。因此在本次測(cè)試環(huán)境下,要達(dá)到1 ms同步精度,則校準(zhǔn)間隔至多只能160 s;
3)同步精度局部存在約0.5 ms的毛刺,無毛刺時(shí)存在0.2 ms的瞬時(shí)誤差;
4)回路時(shí)延大部分在0.8~1 ms之間,部分甚至超過1.4 ms,時(shí)延高的時(shí)候,同步精度更差。
因此,建立的邏輯時(shí)鐘有效,但還需要進(jìn)一步優(yōu)化。
(6)
其中:δ1和δ2為隨機(jī)量,大小在(0,δ)之間。因此,網(wǎng)絡(luò)時(shí)延不對(duì)稱性越高,授時(shí)精度越差。
圖10 不等式法通訊過程
對(duì)應(yīng)每一次往返通訊過程都有:
(7)
由于δ為傳輸延遲,都是正值,因此可得:
(8)
記δk1是{δ11,δ21,…,δn1}中的最小值,δm2是{δ12,δ22,…,δn2}中的最小值,可得:
(9)
因此,可以將θ范圍縮小為:
(Tm3-Tm4)<θ<(Tk2-Tk1)
(10)
此時(shí)取真值范圍的中值作為時(shí)鐘偏差估計(jì)值,即:
(11)
此時(shí)估計(jì)值和真值的關(guān)系為:
(12)
再次設(shè)計(jì)時(shí)間同步客戶端和服務(wù)器進(jìn)行對(duì)比實(shí)驗(yàn),具體設(shè)計(jì)如下:
1)采用高精度邏輯時(shí)鐘作為時(shí)間戳;
2)固定周期20 min進(jìn)行時(shí)鐘校準(zhǔn);
3)網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng),采用不等式法優(yōu)化回路往返時(shí)延的不對(duì)稱性;
4)實(shí)驗(yàn)過程中每秒進(jìn)行同步精度測(cè)試并記錄數(shù)據(jù),如圖11和圖12所示。
圖11 不等式法下同步實(shí)驗(yàn)結(jié)果
圖12 不等式法下局部瞬時(shí)誤差
根據(jù)實(shí)驗(yàn)數(shù)據(jù),可以得出如下結(jié)論:
1)回路時(shí)延比優(yōu)化前明顯減小,基本在0.8 ms以內(nèi);
2)同步精度毛刺消失,瞬時(shí)誤差下降到0.1 ms;
因此,經(jīng)過不等式法優(yōu)化,回路往返時(shí)延不對(duì)稱性對(duì)同步精度的影響明顯減小,同步精度線性變化的趨勢(shì)得到進(jìn)一步加強(qiáng)。
3.3.1 補(bǔ)償系數(shù)模型
將客戶端在t時(shí)刻的邏輯時(shí)鐘表示為c(t),服務(wù)器邏輯時(shí)鐘表示為s(t),定義客戶端和服務(wù)器時(shí)間差為θ(t),根據(jù)式有:
(13)
(14)
θ(t)=s(t)-c(t)
(15)
其中t0為高精度時(shí)鐘建立時(shí)的系統(tǒng)時(shí)間,是一個(gè)常量。
理論上有:
Δt=Δs(t)=Δc(t)
(16)
(17)
但隨著時(shí)間的進(jìn)行,客戶端和服務(wù)器的時(shí)間變化量并不相等,原因在于受環(huán)境條件的影響(如溫度、電壓、老化),時(shí)鐘頻率不斷的產(chǎn)生漂移。分布式仿真系統(tǒng)中,并不需要系統(tǒng)中時(shí)間與真實(shí)時(shí)間完全一致,只需要保持相同的時(shí)間基準(zhǔn)即可。因此,本文以服務(wù)器時(shí)鐘為基準(zhǔn),對(duì)客戶端進(jìn)行晶振頻率補(bǔ)償。
(18)
因此有:
(19)
當(dāng)α=1時(shí),表示客戶端真實(shí)時(shí)鐘晶振頻率與標(biāo)稱頻率相同,與服務(wù)器時(shí)鐘快慢相同;當(dāng)α<1時(shí),表示客戶端真實(shí)時(shí)鐘晶振頻率小于標(biāo)稱頻率,即本身時(shí)鐘相對(duì)服務(wù)器時(shí)鐘較慢;當(dāng)α>1時(shí),表示客戶端真實(shí)時(shí)鐘晶振頻率大于標(biāo)稱頻率,即本身時(shí)鐘較快。
圖13 補(bǔ)償系數(shù)與時(shí)鐘相對(duì)快慢的關(guān)系
3.3.2 補(bǔ)償系數(shù)在線求解與迭代
記C(t)為客戶端補(bǔ)償后的理想時(shí)鐘,則有:
C(t)=s(t)
(20)
根據(jù)式(13)、式(19)和式(20),可得:
(21)
其中:θ0為建立時(shí)刻客戶端與服務(wù)器的時(shí)間差,是一個(gè)常量。
因此,根據(jù)式(15)和式(21):
(22)
結(jié)合式(13),可得:
(23)
將θ(t)對(duì)c(t)求導(dǎo),可得:
(24)
即:
(25)
因此,理論分析可得出,若從時(shí)鐘相對(duì)主時(shí)鐘是嚴(yán)格穩(wěn)定的,即時(shí)鐘晶振頻率補(bǔ)償系數(shù)為常數(shù),那么時(shí)鐘偏差θ(t)是按線性變化的。
(26)
而由于隨著時(shí)間的推移,晶振頻率會(huì)發(fā)生漂移,當(dāng)前補(bǔ)償?shù)玫降念l率過一段時(shí)間后已經(jīng)不夠準(zhǔn)確了,需要再次進(jìn)行頻率補(bǔ)償。因此,需要繼續(xù)研究時(shí)鐘頻率補(bǔ)償系數(shù)在線迭代問題。
記αi為第i次晶振補(bǔ)償系數(shù),Ci(t)為客戶端第i次迭代時(shí)的理想時(shí)鐘(與服務(wù)器時(shí)間保持一致)。則進(jìn)行第i次迭代時(shí),參照式(20)和(21)有:
(27)
此時(shí)客戶端邏輯時(shí)鐘c(t)為上次迭代時(shí)的理想時(shí)鐘,即:
(28)
同理可解得:
(29)
將θ(t)對(duì)c(t)求導(dǎo),可得:
(30)
即:
(31)
應(yīng)用新的αi即可實(shí)現(xiàn)補(bǔ)償系統(tǒng)的動(dòng)態(tài)迭代,從而使系統(tǒng)能夠維持高精度時(shí)鐘同步。
應(yīng)用高精度邏輯時(shí)鐘、不等式法優(yōu)化回路時(shí)延不對(duì)稱性和時(shí)鐘晶振頻率在線補(bǔ)償與迭代3種方法,設(shè)計(jì)時(shí)間同步客戶端和服務(wù)器進(jìn)行同步實(shí)驗(yàn),客戶端工作過程如圖14所示:
圖14 客戶端工作流程
1)創(chuàng)建邏輯時(shí)鐘,使用不等式法與服務(wù)器同步一次;
4)使用記錄的數(shù)據(jù),采用最小二乘擬合得到補(bǔ)償系數(shù)α,更新客戶端時(shí)鐘并清空記錄的數(shù)據(jù),再轉(zhuǎn)步驟2)。
經(jīng)過約60 h的長(zhǎng)試實(shí)驗(yàn),結(jié)果如圖15所示,從圖和數(shù)據(jù)中可以得出:1)實(shí)驗(yàn)在137s后進(jìn)入在線迭代環(huán)節(jié),初次擬合得到補(bǔ)償系數(shù)為α=0.999 993 35;2)時(shí)鐘補(bǔ)償系數(shù)α迭代次數(shù)達(dá)到12次,平均可以維持時(shí)間達(dá)到5 h;3)α在0.999 993 05~0.999 993 79之間波動(dòng),由于標(biāo)稱頻率為3.58 MHz,所以實(shí)驗(yàn)過程中實(shí)際晶振頻率與標(biāo)稱頻率之間偏差量在22.2~24.9 Hz之間波動(dòng),波動(dòng)量約2.7 Hz。
圖15 頻率補(bǔ)償在線迭代下同步效果
本文在介紹NTP基本原理的基礎(chǔ)上進(jìn)行了時(shí)鐘同步精度影響因子分析,并針對(duì)性采用了構(gòu)建高精度邏輯時(shí)鐘、不等式法優(yōu)化回路時(shí)延不對(duì)稱性、時(shí)鐘晶振頻率在線補(bǔ)償3種解決策略,進(jìn)行了時(shí)鐘同步優(yōu)化。通過長(zhǎng)試實(shí)驗(yàn),驗(yàn)證了優(yōu)化后的時(shí)鐘同步系統(tǒng),能有效的實(shí)現(xiàn)時(shí)鐘同步精度優(yōu)于1 ms且平均校準(zhǔn)周期達(dá)到5 h。項(xiàng)目應(yīng)用時(shí),可以將時(shí)鐘同步客戶端封裝為DLL,集成到各分布式仿真系統(tǒng)軟件中實(shí)現(xiàn)時(shí)鐘同步,具有較好的工程應(yīng)用價(jià)值。