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