王民 ,王解先
(1.同濟(jì)大學(xué),上海 200030;2.湖北億伽通科技有限公司,上海 200030)
RTCM 104專業(yè)委員會(huì)的主要研究方向?yàn)椴罘秩驅(qū)Ш叫l(wèi)星系統(tǒng)(DGNSS),負(fù)責(zé)制修訂差分GNSS的系列標(biāo)準(zhǔn)。目前最新的版本是2016年12月7日發(fā)布的“差分GNSS服務(wù)第三版”(RTCM 10403.3,Differential GNSS Service Version3)。
RTCM 104標(biāo)準(zhǔn)協(xié)議是基于開放式系統(tǒng)互聯(lián)標(biāo)準(zhǔn)模型(Open System Interconnection standard reference model,OSI)建立,包括應(yīng)用層、表示層、傳輸層、數(shù)據(jù)鏈路層及物理層。本文主要涉及RTCM 10403.2解碼內(nèi)容,主要針對(duì)的是傳輸層和表示層。
傳輸層定義了發(fā)送或接收RTCM-3數(shù)據(jù)的幀結(jié)構(gòu),一條完整的RTCM-3語句由以下幾部分組成:一個(gè)固定長(zhǎng)度的前導(dǎo)字、保留字、一個(gè)信息長(zhǎng)度、一條可變長(zhǎng)度的信息、一個(gè)24比特的周期冗余校驗(yàn)碼,具體的幀結(jié)構(gòu)如下表1所示:
表1 RTCM-3幀結(jié)構(gòu)
RTCM3.2增加了MSM(Multiple Signal Messages,多信號(hào)電文組)電文組,用來取代RTCM-3現(xiàn)有的一些電文類型 (如,MT1001-1004,MT1009-1012),并提供了對(duì) BDS、Gelileo等越來越多的導(dǎo)航衛(wèi)星系統(tǒng)以及未來可用信號(hào)的支持。MSM用更加通用的方式來表示GNSS接收機(jī)觀測(cè)信息,可以更加便捷地進(jìn)行編碼和解碼,具有更好的靈活性和可擴(kuò)展性。
1.2.1 MSM電文結(jié)構(gòu)
MSM的電文結(jié)構(gòu)由頭信息、衛(wèi)星數(shù)據(jù)以及信號(hào)數(shù)據(jù)三部分(如下表2所示)組成。
表2 MSM電文結(jié)構(gòu)
①衛(wèi)星掩碼(DF395,GNSS Satellite mask)表示本條電文中可用數(shù)據(jù)的衛(wèi)星,它是一個(gè)64 位的二進(jìn)制bit序列,其中,最高位對(duì)應(yīng)ID為1的衛(wèi)星,最低位為對(duì)應(yīng)ID為64的衛(wèi)星。若衛(wèi)星的數(shù)據(jù)可用,則對(duì)應(yīng)的比特位置為1;否則,對(duì)應(yīng)的比特位置為0。
②信號(hào)掩碼(DF395,GNSS Signal mask)。信號(hào)掩碼(DF395,GNSS Signal mask)表示本條電文中可用的衛(wèi)星信號(hào),它是一個(gè)32 位的二進(jìn)制bit序列,其中最高位對(duì)應(yīng)ID為1的衛(wèi)星信號(hào),最低位為對(duì)應(yīng)ID為32的衛(wèi)星信息。若信號(hào)數(shù)據(jù)可用,則對(duì)應(yīng)的比特位置為1;否則,對(duì)應(yīng)的比特位置為0。
③單元掩碼 (DF396,GNSS Cell mask)。單元掩碼(DF396,GNSS Cell mask)是一個(gè)二維表,長(zhǎng)度為Nsat*Nsig(可用衛(wèi)星數(shù)乘以可用信號(hào)數(shù)),其中行表示本條電文中可用的信號(hào)ID(信號(hào)掩碼中設(shè)置為1的信號(hào)),列表示本條電文中可用的衛(wèi)星ID(衛(wèi)星掩碼中設(shè)置為1的衛(wèi)星),若對(duì)應(yīng)衛(wèi)星/信號(hào)可用,則對(duì)應(yīng)的比特位置為1;否則,對(duì)應(yīng)的比特位置為0。此二維表采用列信息(以衛(wèi)星為單元)進(jìn)行打包編碼。
RTCM3.2 MSM電文的這種編碼方式,被稱為“內(nèi)循環(huán)”的數(shù)據(jù)組織方式,這種方式不同于RTCM之前版本的以衛(wèi)星或信號(hào)類別組織數(shù)據(jù)的方式,而是以數(shù)據(jù)類型進(jìn)行組織的。以MSM4電文為例,在衛(wèi)星數(shù)據(jù)塊中,先依次存儲(chǔ)所有衛(wèi)星的第一個(gè)數(shù)據(jù)類型的數(shù)據(jù)(DF397,概略偽距的整數(shù)秒數(shù)),再依次存儲(chǔ)所有衛(wèi)星的第二個(gè)數(shù)據(jù)類型的數(shù)據(jù)(DF398,概略偽距的不足整數(shù)秒數(shù)),依次類推。同樣的,在信號(hào)數(shù)據(jù)塊中,先依次存儲(chǔ)所有衛(wèi)星/信號(hào)的第一個(gè)數(shù)據(jù)類型數(shù)據(jù)(DF400,精確偽距值),再依次存儲(chǔ)所有衛(wèi)星/信號(hào)的第二個(gè)數(shù)據(jù)類型數(shù)據(jù)(DF401,精確相位值)依次類推[1]。
在大多數(shù)的實(shí)時(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),則編碼時(shí)必須使用兩條單獨(dú)的RTCM-3電文來進(jìn)行編碼,如第一條電文包括7顆衛(wèi)星和6個(gè)信號(hào),第二條電文包括7顆衛(wèi)星和6個(gè)信號(hào)。同時(shí),必須在確?!岸嚯娢谋忍匚?Multiple Message Bit)”字段設(shè)置正確。
1.2.2 MSM觀測(cè)值表示及計(jì)算
在MSM電文中,所有觀測(cè)值(偽距、相位)都是以時(shí)間單位“毫秒”表示的,并且設(shè)定光速,各觀測(cè)值的計(jì)算公式如下:
①標(biāo)準(zhǔn)精度電文
偽距 (米)=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,
根據(jù)RTCM3標(biāo)準(zhǔn)對(duì)GNSS數(shù)據(jù)格式的定義,進(jìn)行數(shù)據(jù)的解碼。解碼流程如“圖1 RTCM3解碼數(shù)據(jù)流程圖”所示,在接收RTCM3數(shù)據(jù)后,第一步先判斷第一個(gè)8位的比特是否為引導(dǎo)字,若是引導(dǎo)字,則繼續(xù)判斷下一個(gè)6位的比特是否為0,如果是,則根據(jù)下一個(gè)10位的比特來獲取信息長(zhǎng)度n,獲取信息長(zhǎng)度后,需要判斷余下的字節(jié)是否大于n+3個(gè)字節(jié),若字節(jié)數(shù)充足,則獲取n+3個(gè)字節(jié),并計(jì)算電文的CRC 校驗(yàn)碼,并與電文給出的CRC校驗(yàn)碼進(jìn)行比較,如果不同,則說明電文有誤,應(yīng)丟棄,如果相同,則檢驗(yàn)通過,進(jìn)入RTCM3數(shù)據(jù)解碼階段,按照RTCM3的電文結(jié)構(gòu),將相應(yīng)的數(shù)據(jù)解析出來,并恢復(fù)成正確的值。
圖1 RTCM3解碼數(shù)據(jù)流程圖
在解碼MSM電文時(shí),由于MSM1~MSM3電文中沒有距離的整毫秒部分,因此,需要根據(jù)基準(zhǔn)站的坐標(biāo)及衛(wèi)星星歷進(jìn)行計(jì)算恢復(fù)。
本測(cè)試使用Trimble R10接收機(jī)作為基準(zhǔn)站,設(shè)置RTCM32數(shù)據(jù)作為輸出流。同時(shí)保存Rinex原始數(shù)據(jù)格式,作為參照依據(jù),與解碼后的RTCM32數(shù)據(jù)進(jìn)行對(duì)比,分析RTCM32 1074/1084/1124語句解析的正確性。觀測(cè)歷元的頭信息對(duì)比,本測(cè)試選取了2018年12月17日02:20~02:30之間共10組數(shù)據(jù)進(jìn)行了對(duì)比分析,每個(gè)歷元的頭信息,主要包括歷元時(shí)間、衛(wèi)星數(shù)等。
從分析結(jié)果可知,每個(gè)歷元頭信息的解析,跟Rinex原始觀測(cè)數(shù)據(jù)完全一致,說明RTCM32 MSM的頭信息解析無誤。
在規(guī)定的時(shí)間段中,選取GPS13號(hào)衛(wèi)星的偽距信息,對(duì)其10個(gè)歷元的L1/L2偽距數(shù)據(jù)進(jìn)行對(duì)比分析。分析結(jié)果顯示,L1/L2 偽距的最大差值為0.0009m,最小差值為0.0m,平均差值為0.0006m。由于Rinex文件中偽距的取值精確到小數(shù)位后3位,所以以上偽距的差值可認(rèn)為在誤差范圍之內(nèi),滿足要求,說明RTCM32 MSM4數(shù)據(jù)解碼無誤。