柯秋立,蘇凱雄
?。ǜV荽髮W(xué) 物理與信息工程學(xué)院,福建 福州 350002)
摘要:為了對北斗衛(wèi)星無線電測定業(yè)務(wù)(Radio Determination Satellite Service,RDSS)報文與衛(wèi)星無線電導(dǎo)航業(yè)務(wù)(Radio Navigation Satellite Service,RNSS)報文的控制實現(xiàn)功能集成,設(shè)計一種針對北斗用戶終端模塊的軟件系統(tǒng)。基于前后臺分離的設(shè)計思想來構(gòu)架該軟件,即后臺線程負(fù)責(zé)使用串口與用戶終端模塊通信,包括對RDSS/RNSS數(shù)據(jù)的接收解析和對RDSS數(shù)據(jù)的封裝發(fā)送;前臺用戶界面完成數(shù)據(jù)的可視化,并實現(xiàn)靈活的人機交互。前后臺線程之間采用并發(fā)技術(shù)實現(xiàn)通信數(shù)據(jù)的快速處理。
關(guān)鍵詞:RDSS;RNSS;集成; 控制
中圖分類號:TN927+.2文獻標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.10.005
引用格式:柯秋立,蘇凱雄.北斗通信終端軟件的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2017,36(10):15-17,22.
0引言
北斗衛(wèi)星導(dǎo)航系統(tǒng)作為后起之秀,相關(guān)應(yīng)用等待挖掘,具有很大的市場潛力。鑒于GPS的應(yīng)用經(jīng)驗,在北斗一代系統(tǒng)導(dǎo)航終端的市場化過程中,有北斗系統(tǒng)RDSS業(yè)務(wù)與GPS RNSS業(yè)務(wù)相結(jié)合的導(dǎo)航終端案例,并且北斗二代系統(tǒng)也實現(xiàn)了與GPS類似的RNSS業(yè)務(wù)[1],因而結(jié)合了RDSS業(yè)務(wù)與RNSS業(yè)務(wù)的終端軟件將會在北斗導(dǎo)航系統(tǒng)的應(yīng)用過程中發(fā)揮出巨大作用。
本文針對此需求,設(shè)計一種控制軟件系統(tǒng),對北斗RDSS、RNSS綜合業(yè)務(wù)進行報文控制,包括數(shù)據(jù)通信、授時、終端移動數(shù)據(jù)獲取等功能,并且具有較好的人機交互效果。
1北斗衛(wèi)星導(dǎo)航終端系統(tǒng)概述
如圖1所示,一個完整的北斗衛(wèi)星導(dǎo)航終端系統(tǒng),主要由北斗用戶終端模塊(該模塊同時具有北斗一代的RDSS業(yè)務(wù)功能與GPS、北斗二代的RNSS業(yè)務(wù)功能)、Windows平臺、后臺數(shù)據(jù)處理線程、人機界面四個部分組成。整個北斗導(dǎo)航終端系統(tǒng)的功能主要是RDSS/RNSS數(shù)據(jù)幀的接收解析與封裝發(fā)送。數(shù)據(jù)幀接收過程:北斗用戶終端首先將天線接收到的北斗信號經(jīng)過模塊內(nèi)部的信號處理,轉(zhuǎn)換成串口數(shù)據(jù)并輸出到PC。串口數(shù)據(jù)進入PC后由后臺線程根據(jù)幀協(xié)議解析,得到用戶應(yīng)用數(shù)據(jù)。該應(yīng)用數(shù)據(jù)將被人機界面進行可視化處理。數(shù)據(jù)幀發(fā)送過程:用戶在人機界面發(fā)送命令時,該命令對應(yīng)的應(yīng)用數(shù)據(jù)被后臺線程封裝成協(xié)議幀并輸出到串口。北斗用戶終端將得到的串口數(shù)據(jù)經(jīng)過內(nèi)部信號處理后,通過天線發(fā)送出去。
2軟件系統(tǒng)實現(xiàn)
軟件系統(tǒng)的設(shè)計主要由兩部分組成:后臺線程設(shè)計和用戶界面設(shè)計。下面針對這兩部分的具體實現(xiàn)做詳細(xì)闡述。
2.1后臺線程實現(xiàn)
后臺線程的設(shè)計主要涉及RDSS/RNSS協(xié)議幀的接收、解析算法,解析與顯示快速響應(yīng)算法。算法涉及RDSS/RNSS兩種報文,基于兩種不同的協(xié)議規(guī)范,一種是北斗用戶機接口協(xié)議(4.0),另一種是NMEA0183協(xié)議。
2.1.1用戶接口協(xié)議
用戶接口協(xié)議規(guī)范了通信應(yīng)用數(shù)據(jù)幀的格式。北斗一代接口數(shù)據(jù)傳輸協(xié)議(4.0)在該控制軟件中主要用于規(guī)范北斗通信數(shù)據(jù)和定位數(shù)據(jù),而NMEA0183協(xié)議主要用于規(guī)范衛(wèi)星的位置數(shù)據(jù)和終端設(shè)備的移動數(shù)據(jù)。
北斗用戶機接口協(xié)議(4.0)如圖2所示。“用戶地址”是指作為發(fā)送方的北斗卡號碼,而接收方的北斗卡號碼被包含在“信息內(nèi)容”字段中。
由北斗用戶機接口協(xié)議(4.0)可知,該協(xié)議數(shù)據(jù)幀是以字節(jié)為單位來表示信息,所以要將該數(shù)據(jù)幀原有的字節(jié)類型轉(zhuǎn)換為方便計算機處理的基本數(shù)據(jù)類型[2]。
北斗用戶機接口協(xié)議(4.0)中,在北斗終端設(shè)備之間進行數(shù)據(jù)通信的方式有“代碼”、“漢字”兩種。在北斗終端設(shè)備實際通信過程中,當(dāng)通信數(shù)據(jù)出現(xiàn)中英文數(shù)字混合的情況時,應(yīng)選擇“代碼”方式發(fā)送;如果單純發(fā)送數(shù)字,由于數(shù)字的范圍是0~9,為了更有效地利用有限帶寬,可以在“代碼”通信方式中進行拓展,用4 bit來表示一個數(shù)字,而不是原來ASCII規(guī)范的1 B來表示一個數(shù)字。
NMEA0183協(xié)議(National Marine Electronics Association )是為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式,定義了接收機輸出信息的標(biāo)準(zhǔn)。該協(xié)議用逗點隔開數(shù)據(jù)流,數(shù)據(jù)流長度為30~100字符不等,通常以每秒間隔選擇輸出[3]。常用的NMEA0183協(xié)議語句功能如表1所示。
2.1.2數(shù)據(jù)接收算法
數(shù)據(jù)幀接收模塊的輸入為字節(jié)數(shù)據(jù)流,模塊通過不斷地讀取串口緩沖區(qū),經(jīng)內(nèi)部處理,輸出完整的協(xié)議幀語句。數(shù)據(jù)接收模塊的內(nèi)部流程圖如圖3所示。
由于RNSS(北斗二代、GPS)數(shù)據(jù)幀采用NMEA0183協(xié)議規(guī)范,RDSS(北斗一代)數(shù)據(jù)幀采用北斗用戶機接口協(xié)議(4.0)規(guī)范,因而數(shù)據(jù)幀的接收需要適配兩種協(xié)議規(guī)范。
根據(jù)圖2北斗用戶機接口協(xié)議(4.0)規(guī)范,該類數(shù)據(jù)幀的完整接收策略為:接收方先接收該幀的長度數(shù)據(jù),作為該幀數(shù)據(jù)量大小的標(biāo)準(zhǔn);然后,接收幀體并計數(shù),當(dāng)計數(shù)值與長度數(shù)據(jù)相等時就表示該幀接收完整。
根據(jù)NMEA0183協(xié)議規(guī)范,該類數(shù)據(jù)幀的完整接收策略為:接收到幀頭“$”時表示有效數(shù)據(jù)開始,一直接收,直到收到幀尾“\\r\\n”時表示一個數(shù)據(jù)幀結(jié)束。
2.1.3數(shù)據(jù)解析算法
數(shù)據(jù)解析涉及北斗用戶機接口協(xié)議(4.0)和NMEA0183協(xié)議,而且由于兩類數(shù)據(jù)流都是由同一個串口來進行數(shù)據(jù)通信,因而數(shù)據(jù)解析時,算法必須適配兩種協(xié)議。
部分?jǐn)?shù)據(jù)解析的算法流程圖如圖4所示。
解析即在數(shù)據(jù)幀里提取相應(yīng)字段的信息并顯示。首先需要將數(shù)據(jù)幀從字節(jié)流形式通過ASCII規(guī)范轉(zhuǎn)換為字符串形式以便編程處理[4]。將數(shù)據(jù)幀轉(zhuǎn)換為字符串形式后,利用編程語言的字符串分割方法便可以很容易地得到各個字段的應(yīng)用數(shù)據(jù)信息。
對于通信信息“$TXXX”、時間信息“$SJXX”、定位信息“$DWXX”、移動數(shù)據(jù)“$RMC”直接將應(yīng)用數(shù)據(jù)交付用戶界面;對于有關(guān)可見衛(wèi)星編號、衛(wèi)星俯仰角、信號載噪比的“$GSV”語句,需要將衛(wèi)星編號與其俯仰角或載噪比等數(shù)據(jù)組合成鍵值對再交付用戶界面,以便于該數(shù)據(jù)在柱狀圖、星座圖上顯示。
2.1.4快速響應(yīng)方法
數(shù)據(jù)接收與數(shù)據(jù)解析,這兩個流程之間的同步形式直接決定了軟件響應(yīng)的速度。該軟件將這兩個流程分別設(shè)計成兩個獨立的線程,并且采用緩沖技術(shù),極大地提高了響應(yīng)速度。
首先,在內(nèi)存空間開辟n個緩存區(qū)。
之后,數(shù)據(jù)接收線程將完整的數(shù)據(jù)幀填入緩存區(qū)1。緩存區(qū)1填完之后,數(shù)據(jù)接收線程將新的完整數(shù)據(jù)幀填入緩存區(qū)2。重復(fù)這個過程直到最后一個緩存區(qū)n被填完,又重新開始填充緩存區(qū)1。數(shù)據(jù)接收線程將一直循環(huán)這樣的流程。
與此同時,數(shù)據(jù)解析線程首先判斷緩存區(qū)1是否填滿,如果已經(jīng)填充完成,那么就將該數(shù)據(jù)幀進行解析;如果還沒完成,那么等待。緩存區(qū)1的數(shù)據(jù)幀解析完成之后,立刻又對緩存區(qū)2的數(shù)據(jù)幀進行解析。直到最后一個緩存區(qū)n的數(shù)據(jù)幀被解析完,又重新從緩存區(qū)1開始解析數(shù)據(jù)幀。數(shù)據(jù)解析線程將一直重復(fù)這樣的流程。
2.2前臺界面設(shè)計
用戶界面的輸入主要有“定位申請”和“通信申請”命令,而接收的信息主要有用戶通信信息、用戶移動數(shù)據(jù)(速度、經(jīng)緯度等)和衛(wèi)星數(shù)據(jù)(衛(wèi)星數(shù)、衛(wèi)星俯仰角等)。本次用戶界面設(shè)計采用Visual Studio 2010為開發(fā)工具。利用Windows Form框架[5]將解析得到的應(yīng)用數(shù)據(jù)如衛(wèi)星信號載噪比數(shù)據(jù)、衛(wèi)星俯仰角數(shù)據(jù)在柱狀圖、星座圖上進行顯示,而對于其他簡單的應(yīng)用數(shù)據(jù),則使用文字顯示。最終得到如圖5所示界面。
3軟件系統(tǒng)測試
本次軟件設(shè)計的測試平臺是PC Windows操作系統(tǒng)環(huán)境,北斗終端用戶機采用FB3511。該軟件將對用戶機的報文進行控制處理。運行軟件,待鎖定北斗衛(wèi)星信號后開始進行測試。
(1)定位功能功能測試
按下“單次定位”按鈕,“北斗報文顯示”框給出經(jīng)緯度信息,如圖6。輸出的經(jīng)緯度信息與測試地經(jīng)緯度一致,表明RDSS定位報文控制功能正確實現(xiàn)。圖中,“單次定位”命令未能及時響應(yīng),這是由于該北斗卡限制報文發(fā)送頻度為60秒所致。
(2)通信功能測試
在“收方地址”填入本機卡號307577,即發(fā)給本臺設(shè)備。在信息發(fā)送框填入“你好,北斗 hello BD”,在“北斗報文顯示”框里面就會收到該信息,如圖7。收發(fā)信息一致,表明RDSS收發(fā)報文功能正確實現(xiàn)。
(3)設(shè)備移動信息功能測試
設(shè)備的移動數(shù)據(jù)由北斗衛(wèi)星不斷地發(fā)送到用戶終端設(shè)備,如圖8。授時時間符合北京時間,定位衛(wèi)星數(shù)、視野衛(wèi)星數(shù)等與接收的報文數(shù)據(jù)一致,設(shè)備移動信息包括対地速度與航向與設(shè)備實際情況一致,表明RNSS報文解析功能正確實現(xiàn)?!?/p>
4結(jié)論
該軟件系統(tǒng)采用了Windows Form框架和多線程并發(fā)技術(shù)進行軟件設(shè)計,合理規(guī)劃各個數(shù)據(jù)處理流程的分工,將數(shù)據(jù)處理的負(fù)荷合理分配到各個部分。實際測試表明,該軟件能夠?qū)DSS/RNSS兩種協(xié)議報文進行可靠、準(zhǔn)確的控制,做到快速響應(yīng),為后續(xù)的軟件應(yīng)用研究奠定基礎(chǔ)。
參考文獻
?。?] 黃建華.北斗RDSS機制下的導(dǎo)航地圖更新設(shè)想及實踐[J].測繪通報,2012(5):44-46,49.
?。?] 文斌,寧志強,陳愛萍.基于“北斗一代”的ZigBee無線網(wǎng)關(guān)設(shè)計[J].電訊技術(shù),2011,51(9):92-95.
?。?] 朱炳瑜,肖純賢,陳永虎,等.智能車載系統(tǒng)的設(shè)計[J].南開大學(xué)學(xué)報(自然科學(xué)版),2011,44(6):14-17.
?。?] 薛雅娟,陳維鋒,郭勇,等.C# .NET環(huán)境下GPS OEM板接收機數(shù)據(jù)的提?。跩].成都信息工程學(xué)院學(xué)報,2006,21(5):645648.
?。?] 林淑真,楊秀芝,蘇凱雄,等.基于Web的鋰電池組管理系統(tǒng)[J].微型機與應(yīng)用,2015,34(21): 21-23,33.