摘 要:基于華測X60 RTK接收機(jī),針對Windows開發(fā)環(huán)境廣泛使用,采用VC++的MSCOMM控件開發(fā)了RTCM數(shù)據(jù)采集及解碼器。本軟件能夠動態(tài)顯示RTCM導(dǎo)航電文1、2、3、9等各相關(guān)參數(shù),動態(tài)存儲RTCM二進(jìn)制原始語句及其解碼結(jié)果文件,為下一步研制差分基準(zhǔn)站、DGPS接收機(jī)提供了數(shù)據(jù)源和基礎(chǔ)。
關(guān)鍵詞:GPS;RTCM;數(shù)據(jù)采集;解碼
GPS是美國國防部的第2代衛(wèi)星導(dǎo)航系統(tǒng)。該系統(tǒng)由GPS衛(wèi)星星座、地面監(jiān)控系統(tǒng)和GPS信號接收機(jī)3部分組成,能提供全球覆蓋、全天候、全天時連續(xù)定位、導(dǎo)航和授時服務(wù)。我國雖有多個科研院所從事GPS相關(guān)產(chǎn)品的開發(fā),但其研究對象主要集中在動態(tài)較低的民用領(lǐng)域,而且精度一般不高,在17 m左右[1]。
美國政府于2000年5月1日取消了SA干擾,此后電離層誤差成為GPS最主要的定位誤差源[2],對GPS數(shù)據(jù)進(jìn)行差分處理是提高GPS處理精度的有效途徑,差分GPS接收機(jī)是消除電離層誤差的有效手段,這是本文的研究背景。
本文基于X60 RTK接收機(jī),采用VC開發(fā)環(huán)境,開發(fā)了RTCM解碼軟件,為下一步進(jìn)行高精度差分定位解算算法研究和DGPS接收機(jī)研制工作提供基礎(chǔ)。
1 RTCM SC-104導(dǎo)航電文簡介
RTCM SC-104是商用DGPS接收機(jī)的通用數(shù)據(jù)格式,該格式與ICD-GPS-200規(guī)定的GPS導(dǎo)航電文的字格式、奇偶校驗規(guī)則相同,不同在于GPS電文中各子幀長度是固定的,而RTCM SC-104電文長度是可變的。RTCM電文結(jié)構(gòu)包括2個字頭,后接n個數(shù)據(jù)字,每字長為30 bit,具體格式參見文獻(xiàn)[3]。RTCM SC-104共包括21類63種電文。偽距差分電文主要有1、2、3,有時也用到電文9。
1.1電文1
電文1是RTCM電文中最基本的電文,向用戶提供偽距改正數(shù)及其變化率,其內(nèi)容格式如表1所示。
其中,S為比例因子,是標(biāo)識偽距改正數(shù)PRC和偽距改正數(shù)變化率RRC的比例尺度;U表示用戶測距誤差,有4種編碼,每種編碼代表不同的用戶測距誤差;衛(wèi)星ID 號指衛(wèi)星的編號;PRC指偽距改正數(shù);RRC指偽距改正數(shù)變化率,都是用來修正誤差的,具體含義參見文獻(xiàn)[4-5]。
IOD是改正數(shù)的數(shù)據(jù)齡期,與GPS中IOD意義相同。如RTCM電文IOD與GPS星歷中IOD不相匹配,則不能直接使用該組改正數(shù),因此IOD是保證差分定位的關(guān)鍵,以確保用戶使用的導(dǎo)航電文與基準(zhǔn)站使用的導(dǎo)航電文相同。
1.2 電文2
電文2的格式和電文1完全相同, 包含了衛(wèi)星導(dǎo)航參數(shù)的變化所導(dǎo)致的偽距變率及偽距變率的改變量。如果用戶站未能解譯出新的星歷,而此時基準(zhǔn)站已采用了新的星歷,則兩站所用的星歷不一樣,此時基準(zhǔn)站必須同時播發(fā)電文1和電文 2,防止定位結(jié)果產(chǎn)生較大誤差。
1.3 電文3
電文3是GPS參考站參數(shù),用于發(fā)送基準(zhǔn)站在 WGS-84 坐標(biāo)系中的坐標(biāo)信息 ( ECEFX, ECEFY, ECEFZ),各占32 bit,給定的坐標(biāo)精度至少到cm級。該項電文由 32×3/ 24 = 4 個字組成, 按順序發(fā)送基準(zhǔn)站坐標(biāo)的3個參數(shù),每個字最后6位是奇偶校驗位。
電文9用于GPS部分衛(wèi)星組差分改正,其格式與電文1完全相同。
2 RTCM電文解碼方案設(shè)計
2.1 VC++平臺簡介
本軟件主要基于VC++平臺實現(xiàn),電文的接收用到了VC++中的MSCOMM控件。MSCOMM控件提供了2種處理通信的方式:事件驅(qū)動方式和查詢方式。事件驅(qū)動方式相當(dāng)于一般程序設(shè)計中的中斷方式。當(dāng)串口發(fā)生事件或錯誤時,MSCOMM控件會產(chǎn)生OnComm事件,用戶程序可以捕獲該事件進(jìn)行相應(yīng)處理。本文的例子均采用該方式。
2.2 RTCM電文解碼方案[6]
根據(jù)RTCM的編碼規(guī)則設(shè)計解碼方案,解碼過程可利用電文字頭中的先導(dǎo)字01100110進(jìn)行同步,主要有如下5個步驟。
(1)字節(jié)掃描。傳輸數(shù)據(jù)時,通常采用“6/8”格式的方式。每8 bit數(shù)據(jù)中僅低6 bit是有效位,第7位為標(biāo)志位“1”,第8位為空格“0”。接收到的數(shù)據(jù)必須先取低6位,然后判斷這低6位是不是在64和127之間,如果不是則丟棄這個數(shù)據(jù)。
(2)字節(jié)滾動。由于GPS設(shè)備多數(shù)采用美國國家標(biāo)準(zhǔn)化研究所制定的ANSI X3.16和X3.15型標(biāo)準(zhǔn)接口,故連接到計算機(jī)標(biāo)準(zhǔn)串口RS-232上的時候需要進(jìn)行“字節(jié)滾動”。
(3)取補(bǔ)碼。當(dāng)前一個碼字最后一個比特D30*為1時,必須對當(dāng)前這個字碼的前4個字節(jié)取補(bǔ)碼;如果D30*為0,則保持不變。奇偶校驗位則不必取補(bǔ)碼。
(4)找引導(dǎo)字。尋找RTCM通用電文引導(dǎo)字(01100110或10011001),進(jìn)行奇偶校驗,通過同步完成,否則繼續(xù)找引導(dǎo)字。
(5)電文解碼。根據(jù)幀長度,按相應(yīng)電文格式解碼,主要包括比例因子、用戶測距誤差、衛(wèi)星號、PRC等參數(shù)。
具體解碼流程圖如圖1所示。
3 RTCM數(shù)據(jù)采集及解碼器實現(xiàn)
3.1 RTCM數(shù)據(jù)采集及解碼器介紹
本系統(tǒng)基于Windows操作系統(tǒng),利用VC++編程實現(xiàn)RTCM導(dǎo)航電文解碼,它既能從差分基準(zhǔn)站接收數(shù)據(jù),又能從數(shù)據(jù)文件讀取數(shù)據(jù),原始數(shù)據(jù)和解碼結(jié)果將被顯示及存儲,解碼結(jié)果包括各顆衛(wèi)星所包含的參數(shù)。
3.2 RTCM數(shù)據(jù)采集及解碼器實現(xiàn)
圖2為數(shù)據(jù)解調(diào)子界面,主要有接收回顯窗和解碼顯示窗2部分,其中接收回顯窗顯示各模塊原始數(shù)據(jù),解碼顯示窗顯示解碼結(jié)果。
3.3 關(guān)鍵代碼介紹
程序的關(guān)鍵在于對接收到的差分?jǐn)?shù)據(jù)解碼,根據(jù)2.2節(jié)的解碼方案設(shè)計,以電文1為例,程序關(guān)鍵代碼如下:
for( i=0;i<N-10;i++) //找引導(dǎo)字
{
int dxj=b[i]*4+(b[i+1]-bitshift2(b[i+1],4))/16;
if(dxj==102||pow(2,8)-1-dxj==102) //找到引導(dǎo)字
{ type=getbit(b[i+1],1,4)*4+getbit(b[i+2],5,6); //電文類型
if(bitshift2(b[i+4],1)==1)
//如D30*等于1,則對后面4個字節(jié)取補(bǔ)碼
{…….}
else {i=i+5;}
//如果D30*不等于1,則不做任何處理
zt=(b[i]*pow(2,7)+b[i+1]*2+(b[i+2]-bitshift2(b[i+2],5))/32)*0.6; // z計數(shù)
xuhao=getbit(b[i+2],3,5); //序號
changdu=getbit(b[i+2],1,2)*8+getbit(b[i+3],4,6); //幀長
health=getbit(b[i+3],1,3); //健康度
int d1=i+5;
if(type==1||type==62) //如果是電文1
{ int cc=0;
while(1)
//計算電文1除頭碼之外的長度cc
{ … }
while(i+5<10+cc-1) //5個字碼(3顆衛(wèi)星所有參數(shù))循環(huán)一次
{
…… //判斷是否取補(bǔ)碼,解比例因子、用戶測距誤差、衛(wèi)星號、PRC
k=k+3; //每解完3顆衛(wèi)星的信息便循環(huán)一次
}
} //if type=1
} //if 找到引導(dǎo)字
if (d2==1) break; // 如果到了電文結(jié)尾,則結(jié)束
} //for
4 結(jié)果分析
整個軟件測試工作是在華東交通大學(xué)信息工程學(xué)院的2樓信息技術(shù)研究所進(jìn)行,時間為2008年4月14號10:22:32。實驗平臺基于X60差分GPS接收機(jī)進(jìn)行,接收天線安裝在信息學(xué)院樓頂。解碼結(jié)果如表2~表4所示。
將以上誤差數(shù)據(jù)對自行研制接收機(jī)輸出結(jié)果進(jìn)行修正,結(jié)果如圖3所示。
由圖3中結(jié)果可看出,其海拔高度的定位誤差在1 m內(nèi),經(jīng)度、緯度定位誤差分別在10-6度和10-7度,比單頻偽距GPS接收機(jī)的定位精度好。通過利用基準(zhǔn)站進(jìn)行差分?jǐn)?shù)據(jù)傳送進(jìn)行的定位結(jié)果可以達(dá)到1 m左右定位精度,結(jié)果進(jìn)一步證明了解碼方法及結(jié)果的正確性。
本文基于X60試驗平臺,開發(fā)了RTCM SC-104導(dǎo)航電文數(shù)據(jù)采集及解碼器。本軟件再加上其他相關(guān)軟件可進(jìn)行差分基站設(shè)計,可充分利用PC編程資源進(jìn)行開發(fā)工作。該算法在自行研制的GPS接收機(jī)上運(yùn)行,已獲得了較好的定位精度,為下一步進(jìn)行實時DGPS接收機(jī)研制提供了基礎(chǔ)。
參考文獻(xiàn)
[1] 胡輝.高動態(tài)數(shù)字化GPS接收機(jī)的研制[R]. 哈爾濱:哈爾濱工業(yè)大學(xué),2002.
[2] 高山,陳武,胡叢偉,等.高精度GPS定位的精密電離層模型[J].Transactions of Nanjing University of Aeronautics & Astronautics,2005,22(2):107-113.
[3] KAPLAN E D, HEGARTY C J. GPS原理與應(yīng)用(第2版)[M]. 寇艷紅,譯.北京:電子工業(yè)出版社,2007.
[4] 何怡,李揚(yáng)繼.淺析差分GPS的算法及數(shù)據(jù)格式[J].電訊技術(shù), 2004,(3):111-115.
[5] 李良,張小超,趙化平.GPS差分RTCM數(shù)據(jù)實時編碼解碼算法及實現(xiàn)[J].計算機(jī)工程與應(yīng)用,2006,(11):209-211.
[6] 史峰.基于虛擬參考站技術(shù)和PDA平臺的GPS移動定位系統(tǒng)[D].上海:同濟(jì)大學(xué), 2007.