陳金春 劉 嶸 周 輝 李 豪
(中國(guó)人民解放軍32021部隊(duì), 北京 100094)
網(wǎng)絡(luò)時(shí)間同步技術(shù)具有實(shí)現(xiàn)簡(jiǎn)單、應(yīng)用范圍廣和成本低的優(yōu)勢(shì),近年來(lái)廣泛應(yīng)用于物聯(lián)網(wǎng)、分布式視頻、智能電網(wǎng)等領(lǐng)域[1-3]。目前,網(wǎng)絡(luò)時(shí)間同步技術(shù)主要分為以下兩種:一是手動(dòng)同步技術(shù),即人工根據(jù)終端設(shè)備與時(shí)間統(tǒng)一設(shè)備進(jìn)行比對(duì),手動(dòng)調(diào)整設(shè)備的時(shí)間,實(shí)現(xiàn)全網(wǎng)時(shí)間同步。此方法不需要另外開(kāi)發(fā)軟件和硬件,但是需要人工參與,同步精度較低,各設(shè)備間時(shí)間誤差大。二是基于網(wǎng)絡(luò)協(xié)議的時(shí)間同步技術(shù),主要包括網(wǎng)絡(luò)時(shí)間協(xié)議(Network Time Protocol,NTP)、簡(jiǎn)單網(wǎng)絡(luò)時(shí)間協(xié)議(Simple Network Time Protocol,SNTP)、IEEE1588 精密時(shí)間協(xié)議[4-7]。其中,基于NTP網(wǎng)絡(luò)時(shí)間協(xié)議的同步技術(shù)采用廣播方式在網(wǎng)絡(luò)內(nèi)傳輸標(biāo)準(zhǔn)時(shí)間數(shù)據(jù)包,該技術(shù)需要時(shí)間同步的終端設(shè)備利用操作系統(tǒng)進(jìn)行相應(yīng)的設(shè)置,使自身的時(shí)間自動(dòng)同步于NTP時(shí)間服務(wù)器,從而實(shí)現(xiàn)全網(wǎng)時(shí)間同步。該技術(shù)操作簡(jiǎn)便,但是依賴于操作系統(tǒng)和特定的用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)端口,且Windows操作系統(tǒng)標(biāo)準(zhǔn)服務(wù)未考慮終端長(zhǎng)時(shí)間自主保持時(shí)間帶來(lái)的時(shí)間偏差,網(wǎng)絡(luò)內(nèi)各終端設(shè)備之間的時(shí)間差可達(dá)秒級(jí)[8-10]。
指揮控制機(jī)構(gòu)中的時(shí)間同步、用時(shí)保障、事件時(shí)標(biāo)調(diào)查等任務(wù)對(duì)于時(shí)間統(tǒng)一的精度有較高的要求,目前基于廣域網(wǎng)絡(luò)的時(shí)間同步技術(shù)的授時(shí)精度只能達(dá)到秒級(jí),且由于指揮網(wǎng)絡(luò)中各終端設(shè)備的網(wǎng)絡(luò)傳輸路徑不同,導(dǎo)致WEB瀏覽器與服務(wù)器之間的傳播延遲達(dá)到秒級(jí),造成不同的終端之間存在較大的本地時(shí)間誤差,甚至相鄰終端之間的時(shí)差達(dá)數(shù)秒,影響軍事行動(dòng)指揮的精確度和多部門(mén)聯(lián)動(dòng)的協(xié)調(diào)性。此外,特定軍事行動(dòng)中指揮中心需要將各部門(mén)的時(shí)間統(tǒng)一到指揮中心自定義秒步長(zhǎng)和固定偏差的時(shí)間上,目前尚無(wú)類似應(yīng)用。
針對(duì)現(xiàn)有基于廣域網(wǎng)絡(luò)的WEB瀏覽器授時(shí)精度不高、各終端設(shè)備的時(shí)間偏差大、時(shí)間保持能力低、無(wú)法對(duì)各終端設(shè)備的時(shí)間偏差進(jìn)行監(jiān)測(cè)的技術(shù)問(wèn)題,本文提出了一種基于 WEB 瀏覽器的時(shí)間管理方法。
圖1為本方法的流程圖。WEB瀏覽器啟動(dòng)后的0 s、5 s、10 s和30 s分別執(zhí)行時(shí)間同步流程,時(shí)間同步具體流程如圖1所示。
圖1 基于WEB瀏覽器的時(shí)間管理方法流程圖
(1)WEB瀏覽器讀取本地Cookie中記錄的時(shí)差變量的值Td,如果本地Cookie中沒(méi)有存儲(chǔ)該時(shí)差變量,則新建Td并將其賦值為0。
(2)WEB瀏覽器讀取客戶端本地系統(tǒng)時(shí)間T0,并將其與存儲(chǔ)在Cookie中的時(shí)差變量Td作為Ajax(Asynchronous javascript and xml)請(qǐng)求參數(shù)一并發(fā)送到服務(wù)器。
(3)Web服務(wù)器接收到步驟(2)中客戶端的請(qǐng)求,解析請(qǐng)求中的兩個(gè)參數(shù):客戶端本地時(shí)間T0和時(shí)差變量Td,將其保存在數(shù)據(jù)庫(kù)中。并向客戶端返回響應(yīng)數(shù)據(jù),數(shù)據(jù)為Web服務(wù)器進(jìn)行響應(yīng)時(shí)刻的時(shí)間值Ts。
(5)Web瀏覽器根據(jù)Cookie中存儲(chǔ)的時(shí)差變量T0和本地系統(tǒng)時(shí)間T1計(jì)算時(shí)差修正后的本地時(shí)間T2=T1+Td,將其作為同步后的時(shí)間結(jié)果以控件的形式輸出。
為保持Web時(shí)間的精度,瀏覽器每10 ms進(jìn)行一次時(shí)間更新,將本地時(shí)間與存儲(chǔ)的時(shí)差變量相加后同步顯示。由于持續(xù)運(yùn)行的Web時(shí)鐘會(huì)隨著時(shí)間和網(wǎng)絡(luò)環(huán)境的變化產(chǎn)生較大誤差,使得本地存儲(chǔ)的時(shí)差變量無(wú)法有效反應(yīng)Web服務(wù)端和客戶端之間的真實(shí)時(shí)間偏差,因此,采用動(dòng)態(tài)更新時(shí)差變量的方法,每隔10 s進(jìn)行一次時(shí)間同步流程,修正網(wǎng)絡(luò)環(huán)境和時(shí)間累計(jì)造成的偏差。Web服務(wù)器側(cè)以10 min為周期按照NTP協(xié)議向北斗NTP服務(wù)器獲取標(biāo)準(zhǔn)時(shí)間。
由上述時(shí)間同步流程可知,方法主要利用的是瀏覽器發(fā)出時(shí)間同步請(qǐng)求和接收到請(qǐng)求響應(yīng)時(shí)的客戶端時(shí)間,計(jì)算Web服務(wù)器響應(yīng)請(qǐng)求時(shí)客戶端的時(shí)間,進(jìn)而與此刻服務(wù)端本地時(shí)間作差,可計(jì)算出客戶端本地時(shí)間和Web服務(wù)器本地時(shí)間的差值。
為了進(jìn)一步提升網(wǎng)絡(luò)時(shí)間同步的精度,這里提出了基于最小均方誤差(Least Mean Square,LMS)算法的時(shí)差誤差估計(jì)方法。
建立時(shí)差誤差的線性估計(jì)模型:
(1)
式中,y(n)為第n個(gè)時(shí)刻的時(shí)差誤差估計(jì)值;wi(n)為第n個(gè)時(shí)刻的誤差估計(jì)模型的第i個(gè)權(quán)值,i=0,…,N-1。
第n個(gè)時(shí)刻測(cè)得的實(shí)際時(shí)差誤差為d(n),則第n個(gè)時(shí)刻的誤差值可表示為:
(2)
LMS算法是調(diào)整誤差的線性估計(jì)模型的權(quán)值,使得其誤差值平方和最小,即:
(3)
采用最陡下降法來(lái)其求解該問(wèn)題,權(quán)值的迭代公式為:
(4)
式中,μ為算法步長(zhǎng)參數(shù);▽為梯度算子。將式(4)展開(kāi)計(jì)算,得到權(quán)值的線性迭代公式為:
(5)
在實(shí)際應(yīng)用中,Web服務(wù)器以10 min為周期為北斗NTP服務(wù)器獲取標(biāo)準(zhǔn)時(shí)間,并計(jì)算該標(biāo)準(zhǔn)時(shí)間與Web服務(wù)器本地系統(tǒng)時(shí)間值x(n)的差值,作為實(shí)際時(shí)差誤差d(n),在一定時(shí)間內(nèi)Web服務(wù)器根據(jù)其本地系統(tǒng)時(shí)間值x(n),利用式(4)和式(5)計(jì)算時(shí)差誤差的線性估計(jì)模型的權(quán)值w(n),從而建立基于LMS算法的時(shí)差誤差估計(jì)模型。在此基礎(chǔ)上,利用該時(shí)差誤差估計(jì)模型對(duì)一定時(shí)間內(nèi)的Web服務(wù)器本地系統(tǒng)時(shí)間進(jìn)行修正,以提高其授時(shí)精度。
本文提出的基于Web瀏覽器的時(shí)間管理方法,通過(guò)在客戶端Web瀏覽器啟動(dòng)后的0 s、5 s、10 s和30 s執(zhí)行時(shí)間同步流程,以及10 ms為周期循環(huán)判斷時(shí)間同步觸發(fā)條件,時(shí)間同步觸發(fā)條件達(dá)到時(shí)即執(zhí)行時(shí)間同步流程,以及按照10 min為周期循環(huán)執(zhí)行時(shí)間同步流程,時(shí)間精度為毫秒級(jí),同時(shí)將客戶端本地的時(shí)差變量的值和本地的時(shí)間發(fā)送給Web服務(wù)器,便于Web服務(wù)器記錄保持客戶端的時(shí)間信息,且在時(shí)間同步流程中考慮網(wǎng)絡(luò)時(shí)延的影響,使得客戶端與Web服務(wù)器之間的時(shí)間同步可達(dá)到毫秒級(jí)的精度要求。
本文中,基于Web瀏覽器的時(shí)間管理方法還包括了在服務(wù)端定時(shí)向北斗NTP服務(wù)器獲取標(biāo)準(zhǔn)時(shí)間,更新本地時(shí)間基準(zhǔn)。Web服務(wù)器與北斗NTP服務(wù)器連接如圖2所示。
圖2 Web服務(wù)器與北斗NTP服務(wù)器同步
Web服務(wù)器向各終端提供自定義時(shí)間或者標(biāo)準(zhǔn)時(shí)間,自定義時(shí)間可以根據(jù)實(shí)際需要自定義設(shè)置,而標(biāo)準(zhǔn)時(shí)間的獲取可通過(guò)NTP協(xié)議向北斗NTP服務(wù)器以一定的時(shí)間為周期獲取標(biāo)準(zhǔn)時(shí)間,從而使Web服務(wù)器的本地系統(tǒng)時(shí)間與北斗標(biāo)準(zhǔn)時(shí)間同步,Web服務(wù)器以10 min為周期按照NTP協(xié)議向北斗NTP服務(wù)器獲取標(biāo)準(zhǔn)時(shí)間。
對(duì)基于最小均方誤差算法的時(shí)差誤差估計(jì)方法進(jìn)行了仿真分析,其結(jié)果如圖3所示。
圖3 基于最小均方誤差算法的時(shí)差誤差估計(jì)結(jié)果圖
由圖3可見(jiàn),經(jīng)過(guò)50次迭代后,時(shí)差估計(jì)的誤差基本在0.01 ms以下,因此,本方法可實(shí)現(xiàn)高精度的時(shí)差誤差估計(jì),有效提高了基于Web瀏覽器的時(shí)間管理方法的授時(shí)精度。表1為實(shí)測(cè)記錄,由表1可見(jiàn),本方法可以根據(jù)計(jì)算的時(shí)間偏差修正本地時(shí)間。
表1 授時(shí)服務(wù)實(shí)測(cè)記錄
通過(guò)對(duì)比本方法與傳統(tǒng)方法可以發(fā)現(xiàn)(表2),傳統(tǒng)Web瀏覽器用時(shí)方法主要有獲取本地計(jì)算機(jī)時(shí)間方法和獲取本地NTP同步后的時(shí)間方法兩種。瀏覽器獲取本地時(shí)間方法存在本地時(shí)間與軍用標(biāo)準(zhǔn)時(shí)間不同步引起的偏差;瀏覽器獲取本地NTP同步后的時(shí)間存在本地時(shí)間易被其他軟件或人為修改引起偏差問(wèn)題。本文所采用的方法能夠保證Web瀏覽器顯示時(shí)間與服務(wù)器時(shí)間高精度同步,不受本地時(shí)間系統(tǒng)精度及偏差的影響,且服務(wù)器可記錄終端計(jì)算機(jī)時(shí)間變化情況,具備終端計(jì)算機(jī)時(shí)間的監(jiān)測(cè)功能和時(shí)間溯源功能。
表2 方法比較
本文提出的一種基于Web瀏覽器的時(shí)間管理方法,基于IE、Chrome、Firefox等通用Web瀏覽器對(duì)廣域網(wǎng)分布式部署的終端實(shí)現(xiàn)毫秒級(jí)精度的時(shí)間同步、時(shí)間偏差監(jiān)測(cè)、事件時(shí)標(biāo)記錄與查詢等時(shí)間管理功能,將傳統(tǒng)客戶端之間可能存在的秒級(jí)甚至分鐘級(jí)別的誤差縮小到50 ms。提出了基于LMS算法的時(shí)差誤差估計(jì)方法,保證了各終端在Web瀏覽器上顯示的時(shí)間具有高精度高可用性和免維護(hù)性,且能夠在各終端操作系統(tǒng)的系統(tǒng)時(shí)間發(fā)生改變時(shí)自動(dòng)識(shí)別并自動(dòng)修正本地時(shí)間同步到Web服務(wù)器的時(shí)間,保證了各項(xiàng)活動(dòng)中指揮的精確度和多部門(mén)聯(lián)動(dòng)的協(xié)調(diào)度。