饒愛(ài)水,李永剛,房新兵,汪 毅,郭力兵,李清梅
(中國(guó)衛(wèi)星海上測(cè)控部,江陰 214431)
基于超幀、主幀和子幀的固定幀結(jié)構(gòu)的電文格式設(shè)計(jì),在衛(wèi)星導(dǎo)航系統(tǒng)廣泛使用,如GPS LNAV電文、北斗D1(BDS D1)電文和北斗D2(BDS D2)電文,GPS CNAV電文也采用了類(lèi)似設(shè)計(jì)。
GPS LNAV,每個(gè)超幀由25個(gè)主幀組成(25個(gè)頁(yè)面),每個(gè)主幀由5個(gè)子幀組成,每個(gè)子幀由10個(gè)字組成,每個(gè)字30比特,每個(gè)子幀傳輸時(shí)間為6 s;BDS D1與GPS LNAV類(lèi)似,每個(gè)超幀由24個(gè)主幀組成;BDS D2每個(gè)超幀由120個(gè)主幀組成,每個(gè)子幀傳輸時(shí)間為0.6s。GPS CNAV采用主幀、子幀結(jié)構(gòu),每個(gè)主幀由64個(gè)子幀組成,每個(gè)子幀300比特,取消了頁(yè)面設(shè)置。
為了兼容性及可擴(kuò)展性需要,GPS LNAV、GPS CNAV、BDS D1和BDS D2均預(yù)留了部分頁(yè)面和信息位,以適應(yīng)未來(lái)電文擴(kuò)充的需要[1-3]。
傳統(tǒng)電文參數(shù)解算通常采用硬編碼方式實(shí)現(xiàn),參數(shù)編排方式、處理系數(shù)等信息均內(nèi)嵌在程序代碼中,電文參數(shù)的“拼接性”[4]導(dǎo)致電文參數(shù)解算復(fù)雜化,代碼可維護(hù)性和可擴(kuò)充性很差,不同格式電文均需重新開(kāi)發(fā)[5]。本文提供了一種基于超幀、主幀和子幀的固定幀結(jié)構(gòu)格式的電文參數(shù)通用解算方法,該方法采用數(shù)據(jù)庫(kù)通用化設(shè)計(jì)及參數(shù)解算通用化算法,用戶(hù)通過(guò)配置數(shù)據(jù)庫(kù)即可實(shí)現(xiàn)GPS LNAV、GPS CNAV、BDS D1以及BDS D2參數(shù)解算。隨著B(niǎo)DS星座建設(shè)步伐的加快,GPS/BDS聯(lián)合定位得到了越來(lái)越廣泛的使用[6-7],新導(dǎo)航信號(hào)不斷被開(kāi)發(fā)使用[8-11],電文參數(shù)通用解算方法需求日益迫切,本文的方法為統(tǒng)一處理GPS/BDS電文提供了一種有益嘗試。
設(shè)導(dǎo)航電文由超幀、主幀和子幀組成,每個(gè)超幀由M個(gè)主幀組成(即M個(gè)頁(yè)面),每個(gè)主幀由N個(gè)子幀組成,每個(gè)子幀由R個(gè)字組成,每個(gè)字由T個(gè)比特組成,采用高字節(jié)、高位優(yōu)先發(fā)送的順序傳輸,子幀周期為T(mén),衛(wèi)星導(dǎo)航系統(tǒng)公布的電文格式編排信息共P項(xiàng)。以下分節(jié)描述各數(shù)據(jù)庫(kù)表設(shè)計(jì)。
電文幀格式描述表用于存儲(chǔ)導(dǎo)航電文總體信息,各字段如表1所示。其中:“子幀計(jì)數(shù)位置”用于在電文中獲取子幀計(jì)數(shù);“電文時(shí)間位置”用于在電文中獲取當(dāng)前電文的時(shí)間數(shù)據(jù),指向電文信息格式編排表中的對(duì)應(yīng)時(shí)間參數(shù)的編號(hào),值為0時(shí),表示電文時(shí)間不從電文信息中提取,而由本地系統(tǒng)時(shí)間提供。
表1 電文幀格式描述表Tab.1 Describable table of message frame format
頁(yè)面編號(hào)描述表用于存儲(chǔ)頁(yè)面編號(hào)在子幀中的位置信息,各字段如表2所示?!白訋?jì)數(shù)值”與“頁(yè)面編號(hào)位置”具有對(duì)應(yīng)關(guān)系,多個(gè)子幀可對(duì)應(yīng)一個(gè)“頁(yè)面編號(hào)位置”,當(dāng)子幀不存在“頁(yè)面編號(hào)位置”參數(shù)時(shí),填充“0;”。
表2 頁(yè)面編號(hào)描述表Tab.2 Describable table of page number
電文格式索引表用于存儲(chǔ)子幀計(jì)數(shù)、頁(yè)面編號(hào)與電文格式編排表的對(duì)應(yīng)關(guān)系,各字段定義如表3所示。其中“頁(yè)面編號(hào)”為“0;”時(shí),表示不區(qū)分頁(yè)面編號(hào);當(dāng)某格式的參數(shù)被拆分為多個(gè)部分,一部分在本格式中,一部分在下一格式時(shí),需設(shè)置“關(guān)聯(lián)索引號(hào)”。通?!绊?yè)面編號(hào)”與“真實(shí)頁(yè)面號(hào)”一致,當(dāng)系統(tǒng)不下傳頁(yè)面編號(hào)而采用替代參數(shù)時(shí)(如GPS LNAV電文),“頁(yè)面編號(hào)”為替代參數(shù)的值。
表3 電文格式索引表Tab.3 Index table of message format
電文信息格式編排表用于存儲(chǔ)接口控制文件中發(fā)布的電文格式編排信息,每組信息均對(duì)應(yīng)一張單獨(dú)表格,表格名稱(chēng)為“電文信息格式編排表1”~“電文信息格式編排表P”,各字段定義如表4所示。當(dāng)一個(gè)參數(shù)被拆分為多個(gè)部分時(shí),需要設(shè)置“關(guān)聯(lián)號(hào)”,指示后部分所在位置,“關(guān)聯(lián)號(hào)”為0表示參數(shù)未拆分。假設(shè)當(dāng)前參數(shù)所在的編排表共X個(gè)參數(shù),且該參數(shù)后續(xù)部分被編排入下一個(gè)編排表,且編號(hào)為y,那么該參數(shù)的“關(guān)聯(lián)號(hào)”為(X+y)。
表4 電文信息格式編排表Tab.4 Arrange table of message format
導(dǎo)航電文中,單獨(dú)某個(gè)參數(shù)可能不具有物理意義,需多個(gè)參數(shù)組合才完整。如星歷參數(shù)包括星歷參考時(shí)間、長(zhǎng)半軸的平方根等共16個(gè)參數(shù),參數(shù)結(jié)果定制表把解算的各個(gè)參數(shù)組合為一組具有完整物理意義的數(shù)據(jù),各字段定義如表5所示?!凹庸し绞健睘榭蛇x的進(jìn)一步加工的方法。需要定制的參數(shù)結(jié)果通常包括星歷參數(shù)定制表、歷書(shū)參數(shù)定制表等,這些表格名稱(chēng)統(tǒng)一存放在參數(shù)結(jié)果定制匯總表中,其字段定義如表6所示。其中的“時(shí)間閾值判斷”字段用于設(shè)置是否啟用時(shí)間閾值判斷算法,當(dāng)設(shè)置為真時(shí),在初始化操作中,將計(jì)算參數(shù)結(jié)果定制表所允許的接收時(shí)間閾值。
表5 參數(shù)結(jié)果定制表Tab.5 Custom table of parameters’ results
表6 參數(shù)結(jié)果定制匯總表Tab.6 Collected table of custom parameters’ results
首先介紹一個(gè)基本的轉(zhuǎn)換:位編號(hào)轉(zhuǎn)換,即把子幀中的位編號(hào)i(1 ≤i≤RT,接口文件中位編號(hào)均從1開(kāi)始)轉(zhuǎn)換成字編號(hào)ri和字內(nèi)的位編號(hào)ti,方法為:
int為取整操作,%為取模操作。
初始化操作主要任務(wù)是讀取數(shù)據(jù)庫(kù)表,并完成部分參數(shù)的內(nèi)部轉(zhuǎn)換工作,具體包括:
1)讀取《電文幀格式描述表》,獲取“子幀計(jì)數(shù)”的位編號(hào)信息i和j,采用式(1)得到最終位置信息,即字編號(hào)ri和字內(nèi)的位編號(hào)[ti,tj]。
2)讀取《頁(yè)面編號(hào)描述表》,把“子幀計(jì)數(shù)值”和“頁(yè)面編號(hào)位置”轉(zhuǎn)換為整數(shù)值,得到“頁(yè)面編號(hào)”的字編號(hào)rn和字內(nèi)的位編號(hào)[ti,tj]。當(dāng)子幀n不存在“頁(yè)面編號(hào)”時(shí),rn、ti、tj均為0。
3)讀取《電文格式索引表》,執(zhí)行以下步驟:
① 按照“子幀計(jì)數(shù)”升序、“頁(yè)面編號(hào)”升序排列,形成數(shù)據(jù)對(duì):[q,n,mn1,…,mni,pn]。其中,q為格式索引號(hào),mn1~mni為對(duì)應(yīng)的“頁(yè)面編號(hào)”,pn為對(duì)應(yīng)的格式號(hào)。當(dāng)mn1為0時(shí)表示不區(qū)分“頁(yè)面編號(hào)”。
② 獲取每行記錄的“關(guān)聯(lián)索引號(hào)”,生成關(guān)聯(lián)索引號(hào)集合,即形如{{1,2,3},{4,5},…},該集合定義為ψ,而{1,2,3}等被定義為小集合ψq,關(guān)聯(lián)索引號(hào)集合生成算法如圖1所示。
③ 最后計(jì)算每個(gè)小集合ψq所允許的接收時(shí)間閾值tps,該值定義為集合ψq中所有格式接收完畢后所花費(fèi)最大時(shí)間,其計(jì)算方法如圖2所示。
4)讀取電文信息格式編排表。按照每張表的“編號(hào)”從小到大排序讀取所有參數(shù),對(duì)編號(hào)為x(從1開(kāi)始)的參數(shù)。假設(shè)參數(shù)x占用位為bx,按照以下算法重新生成該參數(shù)字編號(hào)rx和字內(nèi)位編號(hào)[tx,ty]:
第1個(gè)參數(shù):rx=0,tx=0,ty=b1-1;第x個(gè)參數(shù):
圖1 關(guān)聯(lián)索引號(hào)集合生成算法Fig.1 Generation algorithm of associate index set
5)讀取參數(shù)結(jié)果定制表。讀取《參數(shù)結(jié)果定制匯總表》,根據(jù)“表格名稱(chēng)”讀入對(duì)應(yīng)參數(shù)結(jié)果定制表,每張參數(shù)結(jié)果定制表均形成一個(gè)格式索引號(hào)集合Ωr,當(dāng)“時(shí)間閾值判斷”為真時(shí),根據(jù)圖2的方法,生成每張表所允許的接收時(shí)間閾值tqs,當(dāng)Ωr僅含一個(gè)元素或者“時(shí)間閾值判斷”為假時(shí),tqs設(shè)置為0。
接收的子幀存放在數(shù)組Word[R]中,字編號(hào)為0~(R-1),且Word[0]為高字;每個(gè)字共T比特,0為高比特。設(shè)置電文數(shù)據(jù)緩沖區(qū)saveWord[Q+1][R],存儲(chǔ)每一個(gè)格式對(duì)應(yīng)電文數(shù)據(jù);設(shè)置數(shù)據(jù)接收時(shí)間緩沖區(qū)sheetTime[Q+1]記錄接收每一種電文格式的時(shí)間。電文參數(shù)處理總體流程如圖3所示。
圖3 電文參數(shù)處理總流程Fig3.General flow chart for processing message parameters
1)接收ψq中所有電文數(shù)據(jù)所花費(fèi)的時(shí)間tpr的計(jì)算方法為:
tmax、tmin分別為小集合ψq中數(shù)據(jù)接收時(shí)間(變量sheetTime)最大值和最小值。
tpr是否滿(mǎn)足要求的判斷方法為:tpr與接收時(shí)間閾值tps比較,如果tpr 2)單個(gè)參數(shù)處理流程如圖4所示,每個(gè)格式索引號(hào)q中參數(shù)結(jié)果保存在數(shù)組sheetResult[Q+1][X]中。其中計(jì)算參數(shù)x物理量的方法為: 式中,power(2,sx)為計(jì)算2的sx次方,ux為參數(shù)x的量綱或單位,sx為參數(shù)x的冪因子。 圖4 單個(gè)參數(shù)處理算法Fig.4 Algorithm for processing single message parameter 3)輸出參數(shù)結(jié)果的方法為:根據(jù)當(dāng)前計(jì)算得到的格式索引號(hào)q,找出《參數(shù)結(jié)果定制匯總表》中與格式索引號(hào)q關(guān)的記錄(可能有多個(gè)),對(duì)其中的每一個(gè)記錄r,執(zhí)行以下操作: 獲取參數(shù)結(jié)果定制表r的格式索引號(hào)集合Ωr及對(duì)應(yīng)的接收時(shí)間閾值tqs:如果tqs值為0,輸出參數(shù)結(jié)果;如果tqs值大于0,則計(jì)算接收Ωr中所有電文數(shù)據(jù)所花費(fèi)的時(shí)間tqr,其計(jì)算方法為 式中,tqmax、tqmin分別為Ωr中數(shù)據(jù)接收時(shí)間最大值和最小值。把電文數(shù)據(jù)所花費(fèi)的時(shí)間tqr與接收時(shí)間閾值tqs進(jìn)行比較:如果tqr BDS接口控制文件中,D1電文提供了9種編排格式,D2電文提供了21種電文編排格式,每個(gè)子幀均下傳了“子幀計(jì)數(shù)”和“電文時(shí)間”,如表7所示。 表7 BDS電文幀格式描述表Tab.7 Describable table of message format for BDS BDS D1電文“頁(yè)面編號(hào)”僅在子幀4和子幀5傳輸,子幀1、子幀2和子幀3無(wú)頁(yè)面編號(hào),如表8所示;BDS D2電文有3種“頁(yè)面編號(hào)”,分別為子幀1的頁(yè)面編號(hào)“基本導(dǎo)航信息頁(yè)面編號(hào)Pnum1”、子幀2的頁(yè)面編號(hào)“完好性及差分信息頁(yè)面編號(hào)Pnum2”、子幀5的頁(yè)面編號(hào)“Pnum”、子幀3和子幀4不傳輸頁(yè)面編號(hào)、需共用子幀2的頁(yè)面編號(hào)Pnum2,如表8所示。 BDS D1電文格式編排為9種,其中子幀4的頁(yè)面1~24和子幀5的頁(yè)面1~6兩者對(duì)應(yīng)格式號(hào)均存儲(chǔ)歷書(shū)數(shù)據(jù),得到10種格式索引號(hào),如表9所示。 表8 BDS 頁(yè)面編號(hào)描述表Tab.8 Describable table of page number for BDS 表9 BDS D1 電文格式索引表Tab.9 Index table of message format for BDS D1 BDS D2電文各子幀格式編排數(shù)共45個(gè),其中子幀5頁(yè)面1~12、61~72格式相同,子幀5頁(yè)面13和73格式相同,得到21個(gè)格式,如表10所示。格式12和13未下傳頁(yè)面編號(hào),其值為“0;”。 表10 BDS D2 電文格式索引表Tab.10 Index table of message format for BDS D2 電文信息格式編排表按照接口控制文件順序編排,由于篇幅限制,這里不做介紹。 參數(shù)結(jié)果定制匯總表中列舉了星歷、歷書(shū)等,如表11所示。在生成星歷參數(shù)時(shí),需啟動(dòng)“時(shí)間閾值判斷”;生成歷書(shū)參數(shù)時(shí),無(wú)需啟動(dòng)該算法;BDS D2電文生成完好性信息時(shí),格式12和13需借用格式11的“頁(yè)面號(hào)”,因此需啟動(dòng)“時(shí)間閾值判斷”。 表11 BDS 參數(shù)結(jié)果定制匯總表Tab.11 Collected table of custom parameters’results for BDS GPS LNAV電文與BDS D1電文顯著不同之處在于,其頁(yè)面編號(hào)需采用參數(shù)“SV ID號(hào)”代替,“頁(yè)面編號(hào)”與“真實(shí)頁(yè)面編號(hào)”不一致,如表12所示。 GPS CNAV電文特征在于采用主幀和子幀兩層結(jié)構(gòu),頁(yè)面編號(hào)均填0。設(shè)計(jì)的64個(gè)子幀中,僅14個(gè)子幀配置了有效參數(shù),“電文類(lèi)型標(biāo)志”(Message Type ID)作為子幀計(jì)數(shù)使用,電文格式索引表如表13所示。 表12 GPS LNAV 電文格式索引表Tab.12 Index table of message format for GPS LNAV 表13 GPS CNAV 電文格式索引表Tab.13 Index table of message format for GPS CNAV 解算某接收機(jī)獲取的BDS和GPS原始電文數(shù)據(jù),測(cè)試本方法在星歷更新和電文丟失時(shí)的應(yīng)用效果,解算得到的星歷數(shù)據(jù)個(gè)數(shù)如表14所示。由表14可知,跟蹤過(guò)程中,BDS系統(tǒng)6號(hào)、14號(hào)衛(wèi)星以及GPS系統(tǒng)3號(hào)、16號(hào)、23號(hào)、26號(hào)衛(wèi)星僅獲取1組星歷,表明星歷未發(fā)生更新,其余衛(wèi)星均獲取到2組星歷。表15和表16列出了其中一組星歷數(shù)據(jù)。表15中1~5號(hào)衛(wèi)星為BDS D2格式,其余為BDS D1格式,星歷的北斗周計(jì)數(shù)為656,BDS時(shí)間為7200 s;表16中所有衛(wèi)星均為GPS LNAV格式,星歷的GPS周計(jì)數(shù)為2012,GPS時(shí)間為14 400 s。本方法在星歷更新時(shí)能夠獲取正確結(jié)果。 表14 解算得到的BDS和GPS星歷數(shù)量及個(gè)數(shù)Tab.14 Quantity and number of BDS- and GPS-satellite’s ephemeris 表15 BDS D1和D2格式電文解算的星歷Tab.15 BDS satellite’s ephemeris calculated from BDS D1 and D2 message 表16 GPS LNAV電文解算的星歷Tab.16 GPS satellite’s ephemeris calculated from GPS LNAV message 圖5顯示本方法在電文幀丟失時(shí),能夠獲取到正確的結(jié)果。BDS衛(wèi)星獲取星歷數(shù)據(jù)時(shí),需積累子幀1的10個(gè)頁(yè)面,編號(hào)依次為1~10。當(dāng)某個(gè)頁(yè)面丟失時(shí),該組星歷數(shù)據(jù)將獲取失敗,圖中顯示電文丟失了4次,實(shí)際只能解算出14組星歷。GSP衛(wèi)星需積累1~3子幀,圖中顯示電文丟失了1次,實(shí)際只能解算出18組星歷。 圖5 電文丟失時(shí)星歷正確解算Fig.5 Ephemeris calculated correctly when message lost 基于數(shù)據(jù)庫(kù)描述的衛(wèi)星導(dǎo)航電文參數(shù)解算方法具有如下幾個(gè)特點(diǎn): 1)針對(duì)超幀、主幀和子幀的固定幀結(jié)構(gòu)的電文格式,提供了一種通用的電文參數(shù)解算方法,實(shí)現(xiàn)了BDS D1電文、BDS D2電文、GPS LNAV電文參數(shù)的通用化解算,以及對(duì)GPS CNAV電文參數(shù)的解算,給出了數(shù)據(jù)庫(kù)配置方法,電文參數(shù)解算實(shí)現(xiàn)100%覆蓋。 2)設(shè)計(jì)的6種數(shù)據(jù)庫(kù)表格,為導(dǎo)航電文處理提供了良好的擴(kuò)展性和伸縮性,能夠適應(yīng)導(dǎo)航電文內(nèi)容增加、刪除、修改等多種情況,能夠把源于不同子幀、不同頁(yè)面的參數(shù)組合為一種信息展現(xiàn)給用戶(hù),為電文參數(shù)使用提供了便利,參數(shù)結(jié)果組合輸出100%可配置。 3)通過(guò)從原始電文中提取電文時(shí)間,進(jìn)而判斷電文幀是否積累完畢、電文參數(shù)是否處理完畢,易于避免電文幀丟失、電文參數(shù)更新時(shí)造成的同一組參數(shù)互相不一致的情況,保證其物理一致性,參數(shù)不一致概率為0。在輸出最終參數(shù)結(jié)果時(shí),提供了是否啟用時(shí)間閾值判斷的選項(xiàng),以用于某些無(wú)需判斷時(shí)間閾值的場(chǎng)合。 該方法采用實(shí)際的GPS LNAV電文、BDS D1電文、BDS D2電文進(jìn)行了測(cè)試和驗(yàn)證,結(jié)果表明,該方法具有良好的通用性,在電文更新、數(shù)據(jù)丟幀等特殊場(chǎng)合也能獲得正確結(jié)果。3 方法的應(yīng)用
3.1 實(shí)現(xiàn)BDS D1/D2電文參數(shù)解算
3.2 實(shí)現(xiàn)GPS LNAV/CNAV電文參數(shù)解算
3.3 應(yīng)用效果
4 結(jié) 論