饶爱水,李永刚,房新兵,汪 毅,郭力兵,李清梅
(中国卫星海上测控部,江阴 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 结 论