王民 王解先
【摘 要】論主要研究了RTCM32通訊協(xié)議的傳輸層、表示層,以及MSM電文的結(jié)構(gòu)、組成以及編碼方式,設(shè)計了RTCM32語句的解碼流程,實現(xiàn)了相關(guān)的軟件算法,并用實際的數(shù)據(jù)驗證了其正確性。
【Abstract】This paper mainly studies the transmission layer, presentation layer of RTCM32 communication protocol, and the structure, composition and coding mode of MSM message. And the decoding flow of RTCM32 statement is designed, the relevant software algorithm is realized, and its correctness is verified by actual data.
【關(guān)鍵詞】RTCM3.2標準;GNSS;差分數(shù)據(jù)解碼
【Keywords】 RTCM3.2 standard; GNSS; differential data decoding
【中圖分類號】TP393.08 【文獻標志碼】A 【文章編號】1673-1069(2019)04-0185-02
1 RTCM3.2 標準
RTCM 104專業(yè)委員會的主要研究方向為差分全球?qū)Ш叫l(wèi)星系統(tǒng)(DGNSS),負責制修訂差分GNSS的系列標準。目前最新的版本是2016年12月7日發(fā)布的“差分GNSS服務(wù)第三版”(RTCM 10403.3,Differential GNSS Service Version3)。
RTCM 104標準協(xié)議是基于開放式系統(tǒng)互聯(lián)標準模型(Open System Interconnection standard reference model, OSI)建立,包括應(yīng)用層、表示層、傳輸層、數(shù)據(jù)鏈路層及物理層。本文主要涉及RTCM 10403.2解碼內(nèi)容,主要針對的是傳輸層和表示層。
1.1 傳輸層(Transport Layer)
傳輸層定義了發(fā)送或接收RTCM-3數(shù)據(jù)的幀結(jié)構(gòu),一條完整的RTCM-3語句由以下幾部分組成:一個固定長度的前導(dǎo)字、保留字、一個信息長度、一條可變長度的信息、一個24比特的周期冗余校驗碼,具體的幀結(jié)構(gòu)如下表1所示:
1.2 表示層(Presentation Layer)
RTCM3.2增加了MSM(Multiple Signal Messages,多信號電文組)電文組,用來取代RTCM-3現(xiàn)有的一些電文類型(如,MT1001-1004,MT1009-1012),并提供了對BDS、Gelileo等越來越多的導(dǎo)航衛(wèi)星系統(tǒng)以及未來可用信號的支持。MSM用更加通用的方式來表示GNSS接收機觀測信息,可以更加便捷地進行編碼和解碼,具有更好的靈活性和可擴展性。
1.2.1 MSM電文結(jié)構(gòu)
MSM的電文結(jié)構(gòu)由頭信息、衛(wèi)星數(shù)據(jù)以及信號數(shù)據(jù)三部分(如下表2所示)組成。
①衛(wèi)星掩碼(DF395,GNSS Satellite mask)表示本條電文中可用數(shù)據(jù)的衛(wèi)星,它是一個64位的二進制bit序列,其中,最高位對應(yīng)ID為1的衛(wèi)星,最低位為對應(yīng)ID為64的衛(wèi)星。若衛(wèi)星的數(shù)據(jù)可用,則對應(yīng)的比特位置為1;否則,對應(yīng)的比特位置為0。
②信號掩碼(DF395,GNSS Signal mask)。信號掩碼(DF395,GNSS Signal mask)表示本條電文中可用的衛(wèi)星信號,它是一個32位的二進制bit序列,其中最高位對應(yīng)ID為1的衛(wèi)星信號,最低位為對應(yīng)ID為32的衛(wèi)星信息。若信號數(shù)據(jù)可用,則對應(yīng)的比特位置為1;否則,對應(yīng)的比特位置為0。
③單元掩碼(DF396,GNSS Cell mask)。單元掩碼(DF396,GNSS Cell mask)是一個二維表,長度為Nsat*Nsig(可用衛(wèi)星數(shù)乘以可用信號數(shù)),其中行表示本條電文中可用的信號ID(信號掩碼中設(shè)置為1的信號),列表示本條電文中可用的衛(wèi)星ID(衛(wèi)星掩碼中設(shè)置為1的衛(wèi)星),若對應(yīng)衛(wèi)星/信號可用,則對應(yīng)的比特位置為1;否則,對應(yīng)的比特位置為0。此二維表采用列信息(以衛(wèi)星為單元)進行打包編碼。
RTCM3.2 MSM電文的這種編碼方式,被稱為“內(nèi)循環(huán)”的數(shù)據(jù)組織方式,這種方式不同于RTCM之前版本的以衛(wèi)星或信號類別組織數(shù)據(jù)的方式,而是以數(shù)據(jù)類型進行組織的。以MSM4電文為例,在衛(wèi)星數(shù)據(jù)塊中,先依次存儲所有衛(wèi)星的第一個數(shù)據(jù)類型的數(shù)據(jù)(DF397,概略偽距的整數(shù)秒數(shù)),再依次存儲所有衛(wèi)星的第二個數(shù)據(jù)類型的數(shù)據(jù)(DF398,概略偽距的不足整數(shù)秒數(shù)),依次類推。同樣的,在信號數(shù)據(jù)塊中,先依次存儲所有衛(wèi)星/信號的第一個數(shù)據(jù)類型數(shù)據(jù)(DF400,精確偽距值),再依次存儲所有衛(wèi)星/信號的第二個數(shù)據(jù)類型數(shù)據(jù)(DF401,精確相位值)依次類推[1]。
在大多數(shù)的實時數(shù)據(jù)傳輸應(yīng)用中,為了確保在一條RTCM-3電文中傳輸一條完整的MSM信息,GNSS Cell mask的比特位數(shù)一般要求小于64(X≤64,如Nsat≤16,Nsig≤4)。若X≥64,如Nsat=14,Nsig=6),則編碼時必須使用兩條單獨的RTCM-3電文來進行編碼,如第一條電文包括7顆衛(wèi)星和6個信號,第二條電文包括7顆衛(wèi)星和6個信號。同時,必須在確保 “多電文比特位(Multiple Message Bit)” 字段設(shè)置正確。
1.2.2 MSM觀測值表示及計算
在MSM電文中,所有觀測值(偽距、相位)都是以時間單位“毫秒”表示的,并且設(shè)定光速 ,各觀測值的計算公式如下:
①標準精度電文
偽距(米) = c/1000 *(Nms + Rough_range/1024 + 2-24 *Fine_Pseudorange)
相位(米) = c/1000 *(Nms + Rough_range/1024 + 2-29 *Fine_PhaseRange)
相位變化率(米/秒)= Rough_PhaseRangeRate + 0.0001 * Fine_PhaseRangeRate
②高精度電文
偽距(米) = c/1000 *(Nms + Rough_range/1024 + 2-29 *Fine_Pseudorange),
相位(米) = c/1000 *(Nms + Rough_range/1024 + 2-31 *Fine_PhaseRange),
相位變化率(米/秒)= Rough_PhaseRangeRate + 0.0001 * Fine_PhaseRangeRate,
2 RTCM32解碼設(shè)計
根據(jù)RTCM3標準對GNSS數(shù)據(jù)格式的定義,進行數(shù)據(jù)的解碼。解碼流程如“圖1 RTCM3解碼數(shù)據(jù)流程圖”所示,在接收RTCM3數(shù)據(jù)后,第一步先判斷第一個8位的比特是否為引導(dǎo)字,若是引導(dǎo)字,則繼續(xù)判斷下一個6位的比特是否為0,如果是,則根據(jù)下一個10位的比特來獲取信息長度n,獲取信息長度后,需要判斷余下的字節(jié)是否大于n+3個字節(jié),若字節(jié)數(shù)充足,則獲取n+3個字節(jié),并計算電文的CRC校驗碼,并與電文給出的CRC校驗碼進行比較,如果不同,則說明電文有誤,,應(yīng)丟棄,如果相同,則檢驗通過,進入RTCM3數(shù)據(jù)解碼階段,按照RTCM3的電文結(jié)構(gòu),將相應(yīng)的數(shù)據(jù)解析出來,并恢復(fù)成正確的值。
在解碼MSM電文時,由于MSM1~MSM3電文中沒有距離的整毫秒部分,因此,需要根據(jù)基準站的坐標及衛(wèi)星星歷進行計算恢復(fù)。
3 數(shù)據(jù)測試與分析
本測試使用Trimble R10接收機作為基準站,設(shè)置RTCM32數(shù)據(jù)作為輸出流。同時保存Rinex原始數(shù)據(jù)格式,作為參照依據(jù),與解碼后的RTCM32數(shù)據(jù)進行對比,分析RTCM32 1074/1084/1124語句解析的正確性。觀測歷元的頭信息對比,本測試選取了2018年12月17日02:20~02:30之間共10組數(shù)據(jù)進行了對比分析,每個歷元的頭信息,主要包括歷元時間、衛(wèi)星數(shù)等。
從分析結(jié)果可知,每個歷元頭信息的解析,跟Rinex原始觀測數(shù)據(jù)完全一致,說明RTCM32 MSM的頭信息解析無誤。
在規(guī)定的時間段中,選取GPS13號衛(wèi)星的偽距信息,對其10個歷元的L1/L2偽距數(shù)據(jù)進行對比分析。分析結(jié)果顯示,L1/L2偽距的最大差值為0.0009m,最小差值為0.0m,平均差值為0.0006m。由于Rinex文件中偽距的取值精確到小數(shù)位后3位,所以以上偽距的差值可認為在誤差范圍之內(nèi),滿足要求,說明RTCM32 MSM4數(shù)據(jù)解碼無誤。
【參考文獻】
【1】高晟俊,譚羽安.GNSS差分數(shù)據(jù)格式編解碼算法研究與實現(xiàn)[J].測繪科學(xué),2018,43(03):19-23+34.