[程明 盧建福 羅晉]
北斗衛(wèi)星導(dǎo)航系統(tǒng)是我國著眼于國家安全和經(jīng)濟(jì)社會(huì)發(fā)展需要,自主建設(shè)運(yùn)行的全球衛(wèi)星導(dǎo)航系統(tǒng),是為全球用戶提供全天候、全天時(shí)、高精度的定位導(dǎo)航授時(shí)服務(wù)的國家重要時(shí)空基礎(chǔ)設(shè)施[1]。2020 年7 月31 日,習(xí)近平總書記向世界宣布北斗三號(hào)全球衛(wèi)星導(dǎo)航系統(tǒng)正式建成開通,中國北斗邁入服務(wù)全球、造福人類的新時(shí)代。
在以美國為首的核心芯片禁運(yùn)背景下,自主研發(fā)并應(yīng)用國產(chǎn)核心芯片成為解決軍用網(wǎng)絡(luò)中的唯一出路。但由于受限于核心交換芯片的發(fā)展,目前國產(chǎn)的核心二三層業(yè)務(wù)芯片采用的移動(dòng)標(biāo)準(zhǔn)的TOD 接口實(shí)現(xiàn)對(duì)高精度時(shí)間的輸入和輸出。
移動(dòng)標(biāo)準(zhǔn)的TOD 接口無法與目前我國部署的北斗衛(wèi)星導(dǎo)航系統(tǒng)北斗TOD 標(biāo)準(zhǔn)接口兼容,故需要設(shè)計(jì)一套協(xié)議轉(zhuǎn)方法,才能將CMCC-TOD 轉(zhuǎn)換成BDTOD 信息,以便在以國產(chǎn)芯片為核心處理單元的通信網(wǎng)絡(luò)中傳輸北斗時(shí)間信息。
本文詳細(xì)對(duì)比CMCC-TOD 標(biāo)準(zhǔn)和BDTOD 標(biāo)準(zhǔn)的異同之處,以UTC 秒時(shí)間作為中間媒介實(shí)現(xiàn)兩者不同時(shí)間表達(dá)的轉(zhuǎn)換,經(jīng)過測試可滿足高精度時(shí)間傳輸?shù)囊蟆?/p>
標(biāo)準(zhǔn)編號(hào)QB-B-016-2010 的《中國移動(dòng)高精度時(shí)間同步1PPS+TOD 接口規(guī)范》中規(guī)定了移動(dòng)規(guī)范的TOD接口數(shù)據(jù)幀格式,其定義的TOD 信息標(biāo)準(zhǔn)如下。
物理層信號(hào)采用RS422 電平方式,物理接口采用RJ45 或者DB9 連接頭。物理信號(hào)參數(shù)特性如下所示。
(1)波特率:默認(rèn)值為9 600 bit/s
(2)數(shù)據(jù)位:8 bit,空閑幀為高電平;
(3)停止位:1 bit
(4)校驗(yàn)位:無
TOD 信號(hào)需要在秒脈沖信號(hào)(PPS)上升沿有效后,延時(shí)1 ms 后開始傳輸,并且在500 ms 內(nèi)完成數(shù)據(jù)傳輸。由于PPS 信號(hào)每秒產(chǎn)生1 次,故TOD 信號(hào)也每秒發(fā)送1 次,數(shù)據(jù)域的內(nèi)容每秒累加1。
CMCC-TOD 的數(shù)據(jù)幀如圖1 所示。
圖1 CMCC-TOD 數(shù)據(jù)幀結(jié)構(gòu)圖
數(shù)據(jù)幀中各字段的詳細(xì)內(nèi)容如表1 所示。
表1 CMCC-TOD 數(shù)據(jù)幀詳細(xì)解析表
在傳輸TOD的時(shí)間信息時(shí),其中Message Class 為固定值0x01,MessageID 為固定值0x20,MessageLength 為固定值0x10。數(shù)據(jù)域Data 的長度在傳輸消息信息時(shí)為固定長度,其詳細(xì)定義如表2 所示。
表2 CMCC-TOD 數(shù)據(jù)域詳解表
以CMCC-TOD 數(shù)據(jù)幀43 4D 01 20 00 10 00 01 C2 14 00 00 00 00 08 43 0F 00 FF 00 00 00 1F 為例,其數(shù)據(jù)幀的詳細(xì)內(nèi)容如表3 所示。
表3 CMCC-TOD 數(shù)據(jù)幀解析詳細(xì)表
通過分析CMCC-TOD 中字段的內(nèi)容,其真實(shí)有效的時(shí)間信息包含在周內(nèi)秒數(shù)和周數(shù)兩個(gè)段內(nèi)。當(dāng)前數(shù)據(jù)幀中的時(shí)間為2 115周115 220秒,該時(shí)間無法直觀被讀取識(shí)別,還需要轉(zhuǎn)換成特定的字符串樣式。
根據(jù)技術(shù)協(xié)議《北斗衛(wèi)星導(dǎo)航系統(tǒng)用戶終端通用數(shù)據(jù)接口》規(guī)范中的說明[2],北斗TOD 信息數(shù)據(jù)定義如下。
物理層采用差分信號(hào)進(jìn)行串行數(shù)據(jù)傳輸,在終端接收設(shè)備僅要求使用通用連接器即可。物理層信號(hào)參數(shù)如下所示。
(1)波特率:4 800~115 200 bit/s,可根據(jù)需要設(shè)定,默認(rèn)值為115 200 bit/s;
(2)數(shù)據(jù)位:8 bit(d7=0)
(3)停止位:1 bit
(4)校驗(yàn)位:無
(5)數(shù)據(jù)串行傳輸,第一位為起始位,其后是數(shù)據(jù)位。數(shù)據(jù)遵循最低有效位優(yōu)先的規(guī)則。
在串行數(shù)據(jù)中的通用語句標(biāo)識(shí)符用ZDA 標(biāo)識(shí)UTC時(shí)間、日期和本地時(shí)區(qū)等信息。數(shù)據(jù)幀中所有的字段都為ASCII 字符范圍內(nèi)可顯示的字符,其通用定義的數(shù)據(jù)幀格式如下所示。
其中,數(shù)據(jù)幀以字符’$’作為整個(gè)數(shù)據(jù)幀的啟始符,以字符’,’作為分隔符,以字符‘*’作為數(shù)據(jù)幀中有效數(shù)據(jù)域的結(jié)束符,數(shù)據(jù)域結(jié)束字符‘*’后兩個(gè)字符為校驗(yàn)和字符,校驗(yàn)算法采用數(shù)據(jù)域亦或運(yùn)算得到。其數(shù)據(jù)域中各字段的內(nèi)容如表4 所示。
表4 BDTOD 數(shù)據(jù)幀詳解表
以$BDZDA,2,091252.00,12,10,2021,-08,00,000000.00,0.0,0,Y*2B為例,其表示為北斗信號(hào)接收機(jī)輸出TOD 信息,RNSS 定時(shí)結(jié)果,當(dāng)前UTC時(shí)間為09時(shí)12分52秒,日期為2021年10 月12 號(hào),當(dāng)前時(shí)區(qū)為東八區(qū),轉(zhuǎn)換成北京時(shí)間為2021年10月12號(hào)17時(shí)12 分52 秒,時(shí)間精度未檢測,衛(wèi)星狀態(tài)鎖定,TOD 串行數(shù)據(jù)的校驗(yàn)和為0x2B。
通過分析BDTOD 數(shù)據(jù)幀中的信息,其時(shí)間信息以可顯示識(shí)別的字符串標(biāo)示,只需要按數(shù)據(jù)位讀取時(shí)間信息即可。
對(duì)比CMCC-TOD 信息數(shù)據(jù)幀和BDTOD 信息數(shù)據(jù)幀,其主要差異如表5 所示。
表5 CMCC-TOD 和BDTOD 的差異對(duì)比表
通過比對(duì)CMCC-TOD 和BDTOD 信息,雖然在時(shí)間信息的表達(dá)上存在差異性,但可通過軟件對(duì)時(shí)間數(shù)據(jù)進(jìn)行修改,按照通信協(xié)議對(duì)物理層信號(hào)的要求即可實(shí)現(xiàn)CMCC-TOD 到BDTOD 的轉(zhuǎn)換。
將CMCC-TOD 時(shí)間信息轉(zhuǎn)換成BDTOD 時(shí)間信息,其關(guān)鍵在于對(duì)時(shí)間信息的統(tǒng)一表達(dá)。在PC 系統(tǒng)中,Unix時(shí)間戳(Unix epoch)是從1970 年1 月1 日(UTC/GMT的午夜)開始所經(jīng)過的不考慮閏秒的秒數(shù)。CMCC-TOD采用了GPS 時(shí)間作為計(jì)數(shù)時(shí)間,GPS 時(shí)由GPS 衛(wèi)星搭載的原子鐘作為基準(zhǔn),與國際原子時(shí)保持19 秒的固定常數(shù)差,GPS 時(shí)在1980 年1 月6 日零時(shí)與UTC 保持一致。由于國際原子時(shí)與UTC 時(shí)間的計(jì)時(shí)基準(zhǔn)不同,國際原子時(shí)組織公布的閏秒偏差,截止到2021 年10 月,TAI 時(shí)間快于UTC 時(shí)間為37 秒,由于TAI 比GPS 固定偏差快19 秒故目前GPS 時(shí)比UTC 時(shí)間快18 秒。
在進(jìn)行CMCC-TOD 時(shí)間信息轉(zhuǎn)換成BDTOD 時(shí)間信息時(shí),可采用Unix 時(shí)間戳作為中間媒介,先計(jì)算當(dāng)前CMCC 中周和周秒所表示的秒時(shí)間的總數(shù),然后利用再使用GPS 與UTC 時(shí)間偏差,計(jì)算得到UTC 的秒時(shí)間總數(shù),最后根據(jù)紀(jì)元時(shí)間的同步時(shí)間作為起點(diǎn),計(jì)算得到當(dāng)前的UTC 時(shí)間,最后以字符串的形式將時(shí)間信息顯示出來。
在CMCC-TOD 數(shù)據(jù)幀中,時(shí)間以周和周內(nèi)秒表示,故換算秒數(shù)時(shí),僅需要將周轉(zhuǎn)換成對(duì)應(yīng)秒數(shù)后,增加周內(nèi)秒數(shù)即可,計(jì)算方法如公式(1)。
GPS 時(shí)的紀(jì)元年為1980 年1 月6 日0 時(shí)0分0 秒與UTC 保持一致。UTC 時(shí)間以1970 年1月1 日零時(shí)作為紀(jì)元時(shí)間,當(dāng)UTC 時(shí)間到達(dá)1980年1 月6 日時(shí),其中經(jīng)歷了1972 和1976 兩個(gè)閏年,轉(zhuǎn)換成秒時(shí)間為:(365*10+2+6-1)*24*60*60=315 964 800。
故將GPS 秒時(shí)間轉(zhuǎn)換成UTC 秒時(shí)間時(shí),需要增加315 964 800 的偏差時(shí)間,即:
由于國際原子時(shí)與UCT 時(shí)間的時(shí)鐘基準(zhǔn)不同,進(jìn)過長時(shí)間的運(yùn)行后,TAI 時(shí)間與UTC 時(shí)間將產(chǎn)生偏差積累,該偏差值大到一定程度后,一般每半年由國際標(biāo)準(zhǔn)組織公布進(jìn)行閏秒調(diào)整。由于該偏差值存在可變性,在將Unix 時(shí)間戳轉(zhuǎn)換成GPS 時(shí),需要設(shè)計(jì)可配置的輸入?yún)?shù)LeapSeconds。最終UTC 的秒時(shí)間計(jì)算方法如公式(3)。
在Unix 時(shí)間戳轉(zhuǎn)字符串時(shí)間時(shí),需要注意閏年對(duì)秒時(shí)間的影響。需要注意閏年對(duì)秒時(shí)間的影響。當(dāng)出現(xiàn)閏年時(shí),2 月會(huì)多出1 天時(shí)間。轉(zhuǎn)換算法采用逐次逼近+累加計(jì)時(shí)的方法實(shí)現(xiàn)對(duì)Unix 時(shí)間戳的轉(zhuǎn)換。
3.3.1 逐次逼近法
逐次逼近法采用累積時(shí)間與當(dāng)前年份時(shí)間進(jìn)行比較,當(dāng)累積秒時(shí)間大于年份秒時(shí)間時(shí),累積秒時(shí)間減少當(dāng)前年份秒時(shí)間,年份增加,直到累積時(shí)間小于當(dāng)前年份秒時(shí)間為止?;镜乃惴鞒虉D如圖2 所示。
圖2 逐次逼近算法基本流程圖
3.3.2 累加計(jì)時(shí)法
為了減少計(jì)算復(fù)雜度,當(dāng)逐次逼近法獲取當(dāng)前年月日時(shí)分秒信息后,后續(xù)的時(shí)間根據(jù)預(yù)期的秒時(shí)間值是否一致,如果與預(yù)期秒時(shí)間一致,則年月日時(shí)分秒信息直接累加1即可。通過累加計(jì)時(shí),可極大減少時(shí)間轉(zhuǎn)換的計(jì)算復(fù)雜度。算法流程圖如圖3 所示。
圖3 預(yù)期算法基本流程圖
通過以上算法的配合即可實(shí)現(xiàn)對(duì)Unix 秒時(shí)間到字符串時(shí)間的轉(zhuǎn)換。當(dāng)完成1 次秒時(shí)間轉(zhuǎn)后,后續(xù)的秒時(shí)間采用預(yù)期算法后,可最高效的進(jìn)行秒時(shí)間到字符串的轉(zhuǎn)換。例如,將1 634 025 620 秒轉(zhuǎn)換為時(shí)間信息,則為UTC 時(shí)間2021 年10 月12 日08 時(shí)00 分20 秒。轉(zhuǎn)換為北京時(shí)間需要增加一個(gè)時(shí)區(qū)時(shí)間8 小時(shí)。
實(shí)驗(yàn)以國產(chǎn)芯片GD32F407 作為核心處理器,該芯片擁有最多6 個(gè)獨(dú)立的異步串行接口,設(shè)計(jì)串口1 為調(diào)試配置串口,可輸出程序執(zhí)行過程中的調(diào)試信息,也可進(jìn)行系統(tǒng)參數(shù)設(shè)置(如閏秒值配置);串口2 為CMCC-TOD 信號(hào)輸入接口,波特率配置為9 600 bit/s;串口3 為BDTOD信號(hào)輸出接口,波特率配置為115 200。硬件設(shè)計(jì)框圖如圖4 所示。
圖4 驗(yàn)證試驗(yàn)硬件平臺(tái)設(shè)計(jì)示意圖
通過邏輯分析儀抓取核心業(yè)務(wù)芯片輸出的CMCCTOD 信號(hào)和經(jīng)過硬件單板轉(zhuǎn)換后的BDTOD 信號(hào),結(jié)果如圖5 所示。
圖5 CMCC-TOD 轉(zhuǎn)BDTOD 信號(hào)波形抓包圖
CMCC-TOD 信號(hào),由于波特率較慢(9 600 bit/s)信號(hào)波形較松散,輸出數(shù)據(jù)信息耗費(fèi)時(shí)間為23.7 毫秒,經(jīng)過轉(zhuǎn)后輸出的BDTOD,波特率較快(115 200 bit/s),信號(hào)波形密集,整體轉(zhuǎn)化后的輸出時(shí)間為31.8 毫秒。經(jīng)過與后級(jí)別的國產(chǎn)時(shí)鐘芯片對(duì)接后,國產(chǎn)時(shí)鐘芯片可正常接收和識(shí)別轉(zhuǎn)碼后的BDTOD 信息。
將硬件轉(zhuǎn)換單板拷機(jī)2 小時(shí)(7 200 個(gè)轉(zhuǎn)換點(diǎn)),記錄CMCC-TOD 到BDTOD 信號(hào)之間的傳輸延時(shí),結(jié)果如圖6 所示。
圖6 TOD 轉(zhuǎn)換時(shí)間統(tǒng)計(jì)圖
實(shí)驗(yàn)結(jié)果表明當(dāng)前的硬件單板工作穩(wěn)定可靠,軟件協(xié)議運(yùn)行正常,數(shù)據(jù)轉(zhuǎn)換時(shí)間在29.5~31.0 ms 之間抖動(dòng),在技術(shù)協(xié)議要求的指標(biāo)范圍內(nèi)。
本文針對(duì)移動(dòng)標(biāo)準(zhǔn)TOD 信息與北斗衛(wèi)星導(dǎo)航系統(tǒng)輸出的BDTOD 信息不兼容問題,設(shè)計(jì)CMCC-TOD 到BDTOD 的轉(zhuǎn)換方案和具體實(shí)現(xiàn)方法。通過實(shí)裝設(shè)備測試,本協(xié)議可正確識(shí)別CMCC-TOD 的輸入時(shí)間,并在31.0 ms內(nèi)完成CMCC-TOD 到BDTOD 的協(xié)議轉(zhuǎn)換。在長時(shí)間穩(wěn)定性測試下,本方案可實(shí)現(xiàn)穩(wěn)定的時(shí)間轉(zhuǎn)換。通過本方案可實(shí)現(xiàn)CMCC-TOD 信息到BDTOD 的穩(wěn)定轉(zhuǎn)換。轉(zhuǎn)換后的高精度時(shí)間可在以某國產(chǎn)芯片為核心處理單元的核心網(wǎng)中實(shí)現(xiàn)穩(wěn)定傳輸。