王錚 齊昕 陳旭東 王敬
摘要:介紹了一種使用北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)作為時間源的NTP網(wǎng)絡(luò)時間服務(wù)器,給出了軟、硬件設(shè)計方案和測試結(jié)果。設(shè)備采用AM3352處理器作為CPU,運行嵌入式Linux操作系統(tǒng),使用ntpd軟件實現(xiàn)了NTP授時服務(wù)。為驗證NTP服務(wù)器的性能,進行了測試驗證。測試結(jié)果表明,基于嵌入式系統(tǒng)設(shè)計的北斗網(wǎng)絡(luò)時間服務(wù)器授時精度優(yōu)于50μs,可滿足工程應(yīng)用需求。
關(guān)鍵詞:衛(wèi)星導(dǎo)航系統(tǒng);網(wǎng)絡(luò)時間服務(wù);授時精度
中圖分類號:TP391文獻標志碼:A文章編號:1008-1739(2020)09-60-4
0引言
北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國自主建設(shè)、獨立運行的全球衛(wèi)星導(dǎo)航系統(tǒng),是我國國家重大戰(zhàn)略基礎(chǔ)設(shè)施,在北斗衛(wèi)星導(dǎo)航系統(tǒng)日漸完善和市場逐步建立的情況下,推廣北斗授時以提高網(wǎng)絡(luò)安全性迫在眉睫[1]。網(wǎng)絡(luò)時間協(xié)議(NTP)是用于網(wǎng)絡(luò)時間同步的標準協(xié)議,廣泛應(yīng)用于通信、遙控、遙測等大型地面系統(tǒng)中,由于各系統(tǒng)配備時間和服務(wù)器時間源不統(tǒng)一,導(dǎo)致系統(tǒng)協(xié)同操作時產(chǎn)生較大時間誤差,難以滿足應(yīng)用需求。為實現(xiàn)各應(yīng)用系統(tǒng)時間統(tǒng)一及推廣北斗時應(yīng)用,研發(fā)基于北斗衛(wèi)星導(dǎo)航系統(tǒng)的北斗網(wǎng)絡(luò)時間服務(wù)器的需求愈發(fā)強烈。
1 NTP授時原理
NTP是一種廣泛應(yīng)用的網(wǎng)絡(luò)時間同步協(xié)議,目前最新版本為NTPv4,替代并向下兼容NTPv3協(xié)議和SNTPv4協(xié)議。NTPv4協(xié)議引入了全新的時鐘馴服算法,可在新型工作站和快速以太網(wǎng)環(huán)境中實現(xiàn)幾十微秒的同步精度[2]。NTP協(xié)議具有3種工作模式,分別是對等模式、客戶端/服務(wù)器模式和廣播模式。本文以客戶端/服務(wù)器模式為例,說明NTP授時服務(wù)的工作原理。
NTP客戶端向NTP服務(wù)器發(fā)送NTP對時請求,并依據(jù)客戶端時鐘記錄發(fā)出時間戳t1c,服務(wù)器依據(jù)服務(wù)器時鐘記錄接收到對時報文的時間戳t2s,并回復(fù)一條應(yīng)答報文,記錄報文發(fā)出時間戳t3s,并將t2s,t3s填入應(yīng)答報文;客戶端依據(jù)自身時間記錄收到回復(fù)的時間戳t4c。對時通信過程如圖1所示。
通過一次對時報文交互,NTP客戶端獲得了4個時間戳信息,t1c,t4c依據(jù)客戶端時鐘記錄,t2s,t3s依據(jù)服務(wù)器時鐘記錄。offset是客戶端與服務(wù)器間的時間偏差(offset為正代表客戶端時間落后于服務(wù)器,c=s-offset),cs是客戶端請求報文發(fā)送至服務(wù)器的路徑時延,sc是服務(wù)器發(fā)送的響應(yīng)報文的路徑延遲。因此可組成如下方程組:
客戶端可依據(jù)計算得出的offset,依據(jù)時鐘調(diào)整算法調(diào)整自身時間。
2硬件架構(gòu)設(shè)計
2.1硬件架構(gòu)設(shè)計
嵌入式北斗網(wǎng)絡(luò)授時服務(wù)器組主要由北斗接收天線、北斗OEM板卡、主板、電源、液晶屏、按鍵板及電源模塊組成。選擇德州儀器公司的Cortex-A8系列AM3352處理器,配備256 MB DDR3 SDRAM芯片和512 MB NAND-Flash,以太網(wǎng)物理層芯片使用AR8035,支持10/100/1 000 Mbit/s自適應(yīng)以太網(wǎng)接口,組成框圖如圖2所示。
時間接口方面,北斗OEM板卡輸出1 pps信號至AM3352芯片通用GPIO,北斗OEM板卡串口輸出至AM3352芯片UART1,通過獲取1 pps和串口報文作為主板時間源。液晶屏通過SPI接口連接至AM3352芯片,按鍵板通過USB接口連接至AM3352以實現(xiàn)時間顯示和設(shè)備設(shè)置。
2.2操作系統(tǒng)選擇
操作系統(tǒng)是Linux-3.2,為了提高Linux系統(tǒng)時間精度,在Linux內(nèi)核中增加PPS驅(qū)動,具體操作是在內(nèi)核板級文件中增加GPIO-PPS的初始化,指定連接1 pps信號的GPIO為PPS來源,并使能PPS上升沿觸發(fā),在內(nèi)核編譯配置過程中使能PPS驅(qū)動。
正確加載PPS驅(qū)動后,可在Linux系統(tǒng)/dev文件夾下發(fā)現(xiàn)pps0設(shè)備,正確連接北斗OEM板后,使用watch-n1/ sys/class/pps/pps0/assert指令后,可每秒刷新打印PPS時間戳信息,即代表PPS驅(qū)動正常工作,運行結(jié)果如圖3所示。
2.3 ntpd修改與編譯
NTP服務(wù)軟件使用開源ntpd軟件包,支持NMEA格式的GPS接收機作為時間參考源,并可使用Linux系統(tǒng)PPS驅(qū)動,高精度同步時間至外部參考源。需要注意的是,由于北斗接收機輸出接口協(xié)議與NMEA協(xié)議有所不同,直接使用ntpd無法正確解析北斗接收機時間信息。對比NMEA和BD2.1協(xié)議中的ZDA語句如下:
BDZDA:$BDZDA,2,071657.00,13,02,2020,-08,00, 000000.00,,0,Y*09
GPZDA:$GDZDA, 104011.00,10,01,2019,00,00*68
BDZDA相對于GPZDA語句增加了定位模式、時區(qū)及時間有效位等信息,秒信息、年、月和日信息位置格式與NMEA相同,但向右移動了一個字段,導(dǎo)致無法正確解析$BDZDA語句,因此,需要針對ntpd源碼包內(nèi)refclock_nmea.c中的ZDA解析部分代碼進行更改,將秒信息和日期信息的解析字段加1,即秒信息為第2字段,更改情況如下:
case NMEA_GPZDA:
pp->leap = LEAP_NOWARNING;
rc_time = parse_time(&date, &tofs.tv_nsec, &rdata, 2);
rc_date = parse_date(&date, &rdata, 3, DATE_3_DDMMYYYY);
更改完成后,為了編譯ntpd可在嵌入式Linux環(huán)境下運行,需對ntpd源碼包進行交叉編譯,產(chǎn)生ntpd的執(zhí)行文件,將其拷貝至主板根目錄下,完成ntpd的編譯。
2.4 ntpd配置
ntpd運行配置文件為/etc/ntp.conf,修改文件內(nèi)容如下:
server 127.127.20.1 mode 88 minpoll 4 iburst prefer true maxpoll 4
fudge 127.127.20.1 stratum 1 flag1 1 flag2 0 flag3 0 flag4 0 time1 0.001 refid GPS
server 127.127.22.0 minpoll 5 maxpoll 4 iburst true
fudge 127.127.22.0 flag2 0 flag3 0 flag4 1 time1 0.001 refid PPS
其含義為使用NMEA設(shè)備/dev/gps1作為時間參考源,并使用$XXZDA信息解析時間,同時使用/dev/pps0,作為PPS源,使用上升沿作為秒沿,并通過time1指令設(shè)置1 ms的零值。接收機連接至主板CPU的串口1上對應(yīng)設(shè)備/dev/ttyS1,然后在/dev文件夾下建立軟連接,將/dev/ttyS1連接至/dev/gps1,供ntpd讀取時間信息。并將ntpd增加至主板Linux系統(tǒng)init.d文件夾內(nèi)自動運行腳本增加即可實現(xiàn)ntpd的自動啟動,其中-g選型是使能超過1 000 s的初次調(diào)整。啟動腳本增加內(nèi)容如下:
ln -s /dev/ttyS1 /dev/gps1//建立軟連接
/root/ARMNTP/bin/ntpd -g//啟動ntpd服務(wù)
ntpd啟動后,可使用ntpq -p指令查詢ntpd參考源工作狀態(tài),正常顯示結(jié)果如下:
其中GPS_NMEA(1)代表時間參考,PPS(0)代表pps0為當(dāng)前時間參考,offset為參考偏差,單位為ms。若PPS(0) offset值可正常調(diào)整到1 ms以下,則ntpd已正常跟蹤接收機,并具備NTP服務(wù)能力。
3實驗測試
3.1測試設(shè)備
設(shè)備是嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器,測試使用儀器是網(wǎng)絡(luò)時間綜合分析儀。該測試儀內(nèi)置銣原子鐘及北斗接收機,可跟蹤北斗衛(wèi)星導(dǎo)航系統(tǒng)作為參考源,進行NTP授時精度測量。
3.2試驗方法
嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器采用直接測量法進行測試,試驗原理基于NTP網(wǎng)絡(luò)時間服務(wù)原理。嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器正常開機,連接北斗衛(wèi)星導(dǎo)航天線、綜合時間分析儀開機,并正常跟蹤北斗,待測試儀鎖定參考源后開始測試、測試時長≥24 h,并分析測試數(shù)據(jù)波動范圍、平均值及標準方差,測試設(shè)備連接如圖4所示。
3.3測試結(jié)果
測試試驗時間為2020年3月3日—4日,使用網(wǎng)絡(luò)時間分析儀連續(xù)測試嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器24 h以上,測試頻率為1 Hz,測試結(jié)果如圖5所示。
試驗統(tǒng)計結(jié)果如表1所示。
4結(jié)束語
本文介紹了一種嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器的設(shè)計方法,說明了其硬件架構(gòu),描述了ntpd軟件適應(yīng)北斗接收機的修改、交叉編譯和配置,并通過實驗測試驗證了嵌入式北斗網(wǎng)絡(luò)時間服務(wù)器的NTP時間服務(wù)精度,由試驗數(shù)據(jù)可得,網(wǎng)絡(luò)時間服務(wù)器時間服務(wù)精度較高,可滿足工程應(yīng)用的需求。
參考文獻
[1]胡昌軍,李信,劉佳,等.北斗授時在通信領(lǐng)域應(yīng)用現(xiàn)狀及推廣建議[J].電信網(wǎng)技術(shù),2015(3):36-39.
[2]王明,候雷,王昕.便攜式NTP測試儀的設(shè)計與實現(xiàn)[J].時間頻率學(xué)報,2017,40(1):27-35.
[3]李貞妮,張軍,羅喜伶,等.基于VxWorks的NTP服務(wù)器的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2006(23):4404-4407.
[4]陳希,滕玲,高強,等.NTP和PTP協(xié)議的時間同步誤差分析[J].宇航計測技術(shù),2016,36(3):35-40.
[5] NAKASHIMA T, OSHIMA S,NAKASHIMA A.Implementation of the Performance Evaluation System for the NTP Server[C]// Communications, Computers and Signal Processing, 2003, PACRIM, 2003 IEEE Pacific Rim Conference on 2003,28-30 Aug,2003:828.
[6] RIECK,C.An Approach to Primary NTP by Using the LINUX Kernel[C]//Frequency Control Symposium, 2007 Joint with the 21st European Frequency and Time Forum,IEEE International, May 29 2007,2007:873-876.