王民 ,王解先
(1.同濟大學(xué),上海 200030;2.湖北億伽通科技有限公司,上海 200030)
RTCM 104專業(yè)委員會的主要研究方向為差分全球?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)容,主要針對的是傳輸層和表示層。
傳輸層定義了發(fā)送或接收RTCM-3數(shù)據(jù)的幀結(jié)構(gòu),一條完整的RTCM-3語句由以下幾部分組成:一個固定長度的前導(dǎo)字、保留字、一個信息長度、一條可變長度的信息、一個24比特的周期冗余校驗碼,具體的幀結(jié)構(gòu)如下表1所示:
表1 RTCM-3幀結(jié)構(gòu)
RTCM3.2增加了MSM(Multiple Signal Messages,多信號電文組)電文組,用來取代RTCM-3現(xiàn)有的一些電文類型 (如,MT1001-1004,MT1009-1012),并提供了對 BDS、Gelileo等越來越多的導(dǎo)航衛(wèi)星系統(tǒng)以及未來可用信號的支持。MSM用更加通用的方式來表示GNSS接收機觀測信息,可以更加便捷地進(jìn)行編碼和解碼,具有更好的靈活性和可擴展性。
1.2.1 MSM電文結(jié)構(gòu)
MSM的電文結(jié)構(gòu)由頭信息、衛(wèi)星數(shù)據(jù)以及信號數(shù)據(jù)三部分(如下表2所示)組成。
表2 MSM電文結(jié)構(gòu)
①衛(wèi)星掩碼(DF395,GNSS Satellite mask)表示本條電文中可用數(shù)據(jù)的衛(wèi)星,它是一個64 位的二進(jìn)制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 位的二進(jìn)制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)星為單元)進(jìn)行打包編碼。
RTCM3.2 MSM電文的這種編碼方式,被稱為“內(nèi)循環(huán)”的數(shù)據(jù)組織方式,這種方式不同于RTCM之前版本的以衛(wèi)星或信號類別組織數(shù)據(jù)的方式,而是以數(shù)據(jù)類型進(jìn)行組織的。以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電文來進(jìn)行編碼,如第一條電文包括7顆衛(wèi)星和6個信號,第二條電文包括7顆衛(wèi)星和6個信號。同時,必須在確保“多電文比特位(Multiple Message Bit)”字段設(shè)置正確。
1.2.2 MSM觀測值表示及計算
在MSM電文中,所有觀測值(偽距、相位)都是以時間單位“毫秒”表示的,并且設(shè)定光速,各觀測值的計算公式如下:
①標(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)對GNSS數(shù)據(jù)格式的定義,進(jìn)行數(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校驗碼進(jìn)行比較,如果不同,則說明電文有誤,應(yīng)丟棄,如果相同,則檢驗通過,進(jìn)入RTCM3數(shù)據(jù)解碼階段,按照RTCM3的電文結(jié)構(gòu),將相應(yīng)的數(shù)據(jù)解析出來,并恢復(fù)成正確的值。
圖1 RTCM3解碼數(shù)據(jù)流程圖
在解碼MSM電文時,由于MSM1~MSM3電文中沒有距離的整毫秒部分,因此,需要根據(jù)基準(zhǔn)站的坐標(biāo)及衛(wèi)星星歷進(jìn)行計算恢復(fù)。
本測試使用Trimble R10接收機作為基準(zhǔn)站,設(shè)置RTCM32數(shù)據(jù)作為輸出流。同時保存Rinex原始數(shù)據(jù)格式,作為參照依據(jù),與解碼后的RTCM32數(shù)據(jù)進(jìn)行對比,分析RTCM32 1074/1084/1124語句解析的正確性。觀測歷元的頭信息對比,本測試選取了2018年12月17日02:20~02:30之間共10組數(shù)據(jù)進(jìn)行了對比分析,每個歷元的頭信息,主要包括歷元時間、衛(wèi)星數(shù)等。
從分析結(jié)果可知,每個歷元頭信息的解析,跟Rinex原始觀測數(shù)據(jù)完全一致,說明RTCM32 MSM的頭信息解析無誤。
在規(guī)定的時間段中,選取GPS13號衛(wèi)星的偽距信息,對其10個歷元的L1/L2偽距數(shù)據(jù)進(jìn)行對比分析。分析結(jié)果顯示,L1/L2 偽距的最大差值為0.0009m,最小差值為0.0m,平均差值為0.0006m。由于Rinex文件中偽距的取值精確到小數(shù)位后3位,所以以上偽距的差值可認(rèn)為在誤差范圍之內(nèi),滿足要求,說明RTCM32 MSM4數(shù)據(jù)解碼無誤。