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