饒愛水,李永剛,房新兵,汪 毅,郭力兵,李清梅
(中國衛星海上測控部,江陰 214431)
基于超幀、主幀和子幀的固定幀結構的電文格式設計,在衛星導航系統廣泛使用,如GPS LNAV電文、北斗D1(BDS D1)電文和北斗D2(BDS D2)電文,GPS CNAV電文也采用了類似設計。
GPS LNAV,每個超幀由25個主幀組成(25個頁面),每個主幀由5個子幀組成,每個子幀由10個字組成,每個字30比特,每個子幀傳輸時間為6 s;BDS D1與GPS LNAV類似,每個超幀由24個主幀組成;BDS D2每個超幀由120個主幀組成,每個子幀傳輸時間為0.6s。GPS CNAV采用主幀、子幀結構,每個主幀由64個子幀組成,每個子幀300比特,取消了頁面設置。
為了兼容性及可擴展性需要,GPS LNAV、GPS CNAV、BDS D1和BDS D2均預留了部分頁面和信息位,以適應未來電文擴充的需要[1-3]。
傳統電文參數解算通常采用硬編碼方式實現,參數編排方式、處理系數等信息均內嵌在程序代碼中,電文參數的“拼接性”[4]導致電文參數解算復雜化,代碼可維護性和可擴充性很差,不同格式電文均需重新開發[5]。本文提供了一種基于超幀、主幀和子幀的固定幀結構格式的電文參數通用解算方法,該方法采用數據庫通用化設計及參數解算通用化算法,用戶通過配置數據庫即可實現GPS LNAV、GPS CNAV、BDS D1以及BDS D2參數解算。隨著BDS星座建設步伐的加快,GPS/BDS聯合定位得到了越來越廣泛的使用[6-7],新導航信號不斷被開發使用[8-11],電文參數通用解算方法需求日益迫切,本文的方法為統一處理GPS/BDS電文提供了一種有益嘗試。
設導航電文由超幀、主幀和子幀組成,每個超幀由M個主幀組成(即M個頁面),每個主幀由N個子幀組成,每個子幀由R個字組成,每個字由T個比特組成,采用高字節、高位優先發送的順序傳輸,子幀周期為T,衛星導航系統公布的電文格式編排信息共P項。以下分節描述各數據庫表設計。
電文幀格式描述表用于存儲導航電文總體信息,各字段如表1所示。其中:“子幀計數位置”用于在電文中獲取子幀計數;“電文時間位置”用于在電文中獲取當前電文的時間數據,指向電文信息格式編排表中的對應時間參數的編號,值為0時,表示電文時間不從電文信息中提取,而由本地系統時間提供。

表1 電文幀格式描述表Tab.1 Describable table of message frame format
頁面編號描述表用于存儲頁面編號在子幀中的位置信息,各字段如表2所示。“子幀計數值”與“頁面編號位置”具有對應關系,多個子幀可對應一個“頁面編號位置”,當子幀不存在“頁面編號位置”參數時,填充“0;”。

表2 頁面編號描述表Tab.2 Describable table of page number
電文格式索引表用于存儲子幀計數、頁面編號與電文格式編排表的對應關系,各字段定義如表3所示。其中“頁面編號”為“0;”時,表示不區分頁面編號;當某格式的參數被拆分為多個部分,一部分在本格式中,一部分在下一格式時,需設置“關聯索引號”。通常“頁面編號”與“真實頁面號”一致,當系統不下傳頁面編號而采用替代參數時(如GPS LNAV電文),“頁面編號”為替代參數的值。

表3 電文格式索引表Tab.3 Index table of message format
電文信息格式編排表用于存儲接口控制文件中發布的電文格式編排信息,每組信息均對應一張單獨表格,表格名稱為“電文信息格式編排表1”~“電文信息格式編排表P”,各字段定義如表4所示。當一個參數被拆分為多個部分時,需要設置“關聯號”,指示后部分所在位置,“關聯號”為0表示參數未拆分。假設當前參數所在的編排表共X個參數,且該參數后續部分被編排入下一個編排表,且編號為y,那么該參數的“關聯號”為(X+y)。

表4 電文信息格式編排表Tab.4 Arrange table of message format
導航電文中,單獨某個參數可能不具有物理意義,需多個參數組合才完整。如星歷參數包括星歷參考時間、長半軸的平方根等共16個參數,參數結果定制表把解算的各個參數組合為一組具有完整物理意義的數據,各字段定義如表5所示。“加工方式”為可選的進一步加工的方法。需要定制的參數結果通常包括星歷參數定制表、歷書參數定制表等,這些表格名稱統一存放在參數結果定制匯總表中,其字段定義如表6所示。其中的“時間閾值判斷”字段用于設置是否啟用時間閾值判斷算法,當設置為真時,在初始化操作中,將計算參數結果定制表所允許的接收時間閾值。

表5 參數結果定制表Tab.5 Custom table of parameters’ results

表6 參數結果定制匯總表Tab.6 Collected table of custom parameters’ results
首先介紹一個基本的轉換:位編號轉換,即把子幀中的位編號i(1 ≤i≤RT,接口文件中位編號均從1開始)轉換成字編號ri和字內的位編號ti,方法為:

int為取整操作,%為取模操作。
初始化操作主要任務是讀取數據庫表,并完成部分參數的內部轉換工作,具體包括:
1)讀取《電文幀格式描述表》,獲取“子幀計數”的位編號信息i和j,采用式(1)得到最終位置信息,即字編號ri和字內的位編號[ti,tj]。
2)讀取《頁面編號描述表》,把“子幀計數值”和“頁面編號位置”轉換為整數值,得到“頁面編號”的字編號rn和字內的位編號[ti,tj]。當子幀n不存在“頁面編號”時,rn、ti、tj均為0。
3)讀取《電文格式索引表》,執行以下步驟:
① 按照“子幀計數”升序、“頁面編號”升序排列,形成數據對:[q,n,mn1,…,mni,pn]。其中,q為格式索引號,mn1~mni為對應的“頁面編號”,pn為對應的格式號。當mn1為0時表示不區分“頁面編號”。
② 獲取每行記錄的“關聯索引號”,生成關聯索引號集合,即形如{{1,2,3},{4,5},…},該集合定義為ψ,而{1,2,3}等被定義為小集合ψq,關聯索引號集合生成算法如圖1所示。
③ 最后計算每個小集合ψq所允許的接收時間閾值tps,該值定義為集合ψq中所有格式接收完畢后所花費最大時間,其計算方法如圖2所示。
4)讀取電文信息格式編排表。按照每張表的“編號”從小到大排序讀取所有參數,對編號為x(從1開始)的參數。假設參數x占用位為bx,按照以下算法重新生成該參數字編號rx和字內位編號[tx,ty]:
第1個參數:rx=0,tx=0,ty=b1-1;第x個參數:

圖1 關聯索引號集合生成算法Fig.1 Generation algorithm of associate index set
5)讀取參數結果定制表。讀取《參數結果定制匯總表》,根據“表格名稱”讀入對應參數結果定制表,每張參數結果定制表均形成一個格式索引號集合Ωr,當“時間閾值判斷”為真時,根據圖2的方法,生成每張表所允許的接收時間閾值tqs,當Ωr僅含一個元素或者“時間閾值判斷”為假時,tqs設置為0。
接收的子幀存放在數組Word[R]中,字編號為0~(R-1),且Word[0]為高字;每個字共T比特,0為高比特。設置電文數據緩沖區saveWord[Q+1][R],存儲每一個格式對應電文數據;設置數據接收時間緩沖區sheetTime[Q+1]記錄接收每一種電文格式的時間。電文參數處理總體流程如圖3所示。

圖3 電文參數處理總流程Fig3.General flow chart for processing message parameters
1)接收ψq中所有電文數據所花費的時間tpr的計算方法為:

tmax、tmin分別為小集合ψq中數據接收時間(變量sheetTime)最大值和最小值。
tpr是否滿足要求的判斷方法為:tpr與接收時間閾值tps比較,如果tpr 2)單個參數處理流程如圖4所示,每個格式索引號q中參數結果保存在數組sheetResult[Q+1][X]中。其中計算參數x物理量的方法為: 式中,power(2,sx)為計算2的sx次方,ux為參數x的量綱或單位,sx為參數x的冪因子。 圖4 單個參數處理算法Fig.4 Algorithm for processing single message parameter 3)輸出參數結果的方法為:根據當前計算得到的格式索引號q,找出《參數結果定制匯總表》中與格式索引號q關的記錄(可能有多個),對其中的每一個記錄r,執行以下操作: 獲取參數結果定制表r的格式索引號集合Ωr及對應的接收時間閾值tqs:如果tqs值為0,輸出參數結果;如果tqs值大于0,則計算接收Ωr中所有電文數據所花費的時間tqr,其計算方法為 式中,tqmax、tqmin分別為Ωr中數據接收時間最大值和最小值。把電文數據所花費的時間tqr與接收時間閾值tqs進行比較:如果tqr BDS接口控制文件中,D1電文提供了9種編排格式,D2電文提供了21種電文編排格式,每個子幀均下傳了“子幀計數”和“電文時間”,如表7所示。 表7 BDS電文幀格式描述表Tab.7 Describable table of message format for BDS BDS D1電文“頁面編號”僅在子幀4和子幀5傳輸,子幀1、子幀2和子幀3無頁面編號,如表8所示;BDS D2電文有3種“頁面編號”,分別為子幀1的頁面編號“基本導航信息頁面編號Pnum1”、子幀2的頁面編號“完好性及差分信息頁面編號Pnum2”、子幀5的頁面編號“Pnum”、子幀3和子幀4不傳輸頁面編號、需共用子幀2的頁面編號Pnum2,如表8所示。 BDS D1電文格式編排為9種,其中子幀4的頁面1~24和子幀5的頁面1~6兩者對應格式號均存儲歷書數據,得到10種格式索引號,如表9所示。 表8 BDS 頁面編號描述表Tab.8 Describable table of page number for BDS 表9 BDS D1 電文格式索引表Tab.9 Index table of message format for BDS D1 BDS D2電文各子幀格式編排數共45個,其中子幀5頁面1~12、61~72格式相同,子幀5頁面13和73格式相同,得到21個格式,如表10所示。格式12和13未下傳頁面編號,其值為“0;”。 表10 BDS D2 電文格式索引表Tab.10 Index table of message format for BDS D2 電文信息格式編排表按照接口控制文件順序編排,由于篇幅限制,這里不做介紹。 參數結果定制匯總表中列舉了星歷、歷書等,如表11所示。在生成星歷參數時,需啟動“時間閾值判斷”;生成歷書參數時,無需啟動該算法;BDS D2電文生成完好性信息時,格式12和13需借用格式11的“頁面號”,因此需啟動“時間閾值判斷”。 表11 BDS 參數結果定制匯總表Tab.11 Collected table of custom parameters’results for BDS GPS LNAV電文與BDS D1電文顯著不同之處在于,其頁面編號需采用參數“SV ID號”代替,“頁面編號”與“真實頁面編號”不一致,如表12所示。 GPS CNAV電文特征在于采用主幀和子幀兩層結構,頁面編號均填0。設計的64個子幀中,僅14個子幀配置了有效參數,“電文類型標志”(Message Type ID)作為子幀計數使用,電文格式索引表如表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 解算某接收機獲取的BDS和GPS原始電文數據,測試本方法在星歷更新和電文丟失時的應用效果,解算得到的星歷數據個數如表14所示。由表14可知,跟蹤過程中,BDS系統6號、14號衛星以及GPS系統3號、16號、23號、26號衛星僅獲取1組星歷,表明星歷未發生更新,其余衛星均獲取到2組星歷。表15和表16列出了其中一組星歷數據。表15中1~5號衛星為BDS D2格式,其余為BDS D1格式,星歷的北斗周計數為656,BDS時間為7200 s;表16中所有衛星均為GPS LNAV格式,星歷的GPS周計數為2012,GPS時間為14 400 s。本方法在星歷更新時能夠獲取正確結果。 表14 解算得到的BDS和GPS星歷數量及個數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顯示本方法在電文幀丟失時,能夠獲取到正確的結果。BDS衛星獲取星歷數據時,需積累子幀1的10個頁面,編號依次為1~10。當某個頁面丟失時,該組星歷數據將獲取失敗,圖中顯示電文丟失了4次,實際只能解算出14組星歷。GSP衛星需積累1~3子幀,圖中顯示電文丟失了1次,實際只能解算出18組星歷。 圖5 電文丟失時星歷正確解算Fig.5 Ephemeris calculated correctly when message lost 基于數據庫描述的衛星導航電文參數解算方法具有如下幾個特點: 1)針對超幀、主幀和子幀的固定幀結構的電文格式,提供了一種通用的電文參數解算方法,實現了BDS D1電文、BDS D2電文、GPS LNAV電文參數的通用化解算,以及對GPS CNAV電文參數的解算,給出了數據庫配置方法,電文參數解算實現100%覆蓋。 2)設計的6種數據庫表格,為導航電文處理提供了良好的擴展性和伸縮性,能夠適應導航電文內容增加、刪除、修改等多種情況,能夠把源于不同子幀、不同頁面的參數組合為一種信息展現給用戶,為電文參數使用提供了便利,參數結果組合輸出100%可配置。 3)通過從原始電文中提取電文時間,進而判斷電文幀是否積累完畢、電文參數是否處理完畢,易于避免電文幀丟失、電文參數更新時造成的同一組參數互相不一致的情況,保證其物理一致性,參數不一致概率為0。在輸出最終參數結果時,提供了是否啟用時間閾值判斷的選項,以用于某些無需判斷時間閾值的場合。 該方法采用實際的GPS LNAV電文、BDS D1電文、BDS D2電文進行了測試和驗證,結果表明,該方法具有良好的通用性,在電文更新、數據丟幀等特殊場合也能獲得正確結果。


3 方法的應用
3.1 實現BDS D1/D2電文參數解算





3.2 實現GPS LNAV/CNAV電文參數解算


3.3 應用效果




4 結 論