1 引言
自2007年中国开始建立二代北斗卫星导航系统以来,已经实现亚太区域导航定位并逐步实现全球导航定位服务的目标。2012年底北斗控制性接口文件(ICD文件)的公开,标志着卫星民用的开始[1-2]。为实现差分定位技术,极大满足GNSS 系统高精度定位服务需求,通常利用北斗地基增强技术实现差分。其中,差分协议是数据传输的核心。RTCM SC-104 委员会2013 年推出了RTCM3.2 版本,该版本提供了对北斗BDS 系统的支持,增加和扩展了多种网络RTK信息,包括GPS、GLONASS、GALILEO 和BDS 系统的多种信号信息。
目前,针对 RTCM3.2 版本公布的开源资料很少,对该版本协议的编码、解码公开文献也不多。因此,论文重点对该格式电文组进行研究,按照标准要求数据进行解析,采用面向对象的编码原则在VS环境下的C++语言,实现了RTCM3.2 格式数据的解码和算法实现,并利用煤矿井架的实测差分监测数据进行验证。
2 RTCM 3.2结构
差分北斗系统由基准站、数据链和用户终端3部分组成,数据链所传输的差分数据格式是必须考虑的重要环节,目前在差分数据进行传输时,通常使用国际通用的RTCM SC-104协议,该协议由国际海运事业无线电委员会提出。通用的RTCM SC-104协议最新的版本是RTCM 3.2,该版本增强了对多系统的支持力度,并首次支持了BDS。
RTCM 3.2通过使用MSM来支持多系统,MSM是使用一种通用的格式来表示北斗接收机观测值,以此来满足多系统多信号的应用。按照不同应用场合MSM分为7类:MSM1-MSM7。由MSM1-MSM7,所发送的观测值内容越来越多或者精度越来越高。这7条电文传输伪距观测值和相位观测值时,都是通过将距离换算成毫秒进行传输的。虽然MSM分为7种类型,但它们有同样的结构,见下表。
表1 MSM的结构
组成部分 | 内容 |
信息头 | 包含了所传输卫星和信号的信息,例如:所传输的卫星有哪些,所传输的信号有哪些 |
卫星数据 | 包含了卫星数据,例如:卫星-测站的粗略距离 |
信号数据 | 包含了具体信号的数据,例如:L1上的C/A |
RTCM 3.2在数据格式上最大的特点是采用内部循环:对每颗卫星的数据及对应的信号数据采用循环方式进行编码。每个卫星系统各自均有对应于MSM1~MSM7的电文,1071~1077电文分别对应GPS的MSM1~MSM7;1121~1127分别对应BDS的MSM1~MSM7,1081~1087分别对应GLONASS的MSM1~MSM7。本项目由系统发布的观测值电文类型包括1074、1084和1124电文,均对应MSM4的电文。最终发送的一条RTCM 3.2电文由5部分组成,其电文结构如下表所示,MSM对应于这个结构中的“可变长度消息”。
表2 RTCM 3.2电文结构
名称 | 长度 | 描述 |
引导字 | 8bit | 11010011 |
保留字段 | 6bit | 0 |
消息长度 | 10bit | 以字节为信息长度单位 |
可变长度消息 | 长度不定,均为整型数据 | 0-1023个字节 |
CRC校验码 | 24bit | 24位CRC校验码 |
正确的解码才能保证定位数据的正确性与可靠性按照编码的思想,解码的流程如下图所示,在接收RTCM 3.2二进制数据后,首先判断首8位是否为引导字,若是引导字,则继续判断下6位是否为0,如果是,则根据下10位获取信息长度,获取信息长度后,要判断余下的字节是否充足,是否足够一条电文的长度,如果不足,则应继续接收二进制数据,如果充足,则读取相应长度的字节,计算电文的CRC校验码,并与电文给出的校验码进行比较,如果不同,则说明电文有误,应丢弃,如果相同,则校验通过,进入解析MSM数据的阶段,按照MSM的结构,将相应的数据解析出来,并恢复成正确的值。
3 RTCM 3.2解析算法描述
根据上述的解码算法与流程,本项目设计了一款RTCM 3.2解码软件用于RINEX格式与RTCM 3.2之间的互相转换,用户可自由选择卫星系统和MSM类型,方便灵活,该软件使用的编程语言为MFC,开发环境为VS 2010。
由于RTCM 3.2中并没有完整的时间信息,因此,如果不是当天的数据,为了获取完整的时间信息,用户应选择“模拟”模式,设置正确的日期,若是当天的数据,则用户应选择“真实”模式,软件根据系统时间进行恢复,另外,由于跳秒会随时间改变,软件没有内置跳秒信息,为了保证解码正确,用户应输入正确的跳秒值。
图2 RTCM 3.2解码算法流程
4 算例分析与验证
为了验证解码流程的正确性,以华测接收机2018年某天产生的RTCM3.2数据为例对以上解码算法进行了验证。试验华测接收机同时保存的Rinex格式观测数据文件进行比对。通过比较两者的关系来验证算法的正确性。下图示出了包含GPS、GLONASS和BDS观测值信息MSM4的1074、1084和1124电文。
图3 原始格式(16进制)的1074、1084和1124电文
图4 解码1074、1084和1124电文得到的观测值
通过将上述解码得到的观测值与接收原始数据同时保存的Rinex格式观测数据文件进行对比,发现观测值数据完全一致,证明了解码算法的正确性。
5 结论
论文介绍了目前最新的支持北斗差分通信的RTCM3.2标准。该标准规定了兼容北斗的多频多系统实时GNSS数据传输的格式和解码方法。按照电文格式和分割方法,利用C++语言,基于VS编程平台实现了RTCM3.2的解码。通过验证,与其他软件解码对比,已经后期的差分解算,证明了方法的正确性和有效性。
6 参考文献
[1] 谢钢.全球导航卫星系统原理一GPS、格洛纳斯和伽利略系统[M].北京:电子工业出版社,2013.
[2] 余学祥,王坚,刘绍堂等.GPS测量与数据处理[M].徐州:中国矿业大学出版社2013.
[3] 吴海玲,李作虎,刘晖.关于北斗加入RTCM国际标准的总体研究[J].全球定位系统,2014,39(1):27-33.
[4] 史小雨,程鹏飞,蔡艳辉,李为乔. 差分GPS数据通信格式RTCM3.1 及其解码算法的实现[J].测绘通报,2012(6):4-6
[5] RTCM. RTCM special committee no.104.RTCM standard 104 3.2 for differential GNSS[S].Arlington: Radio Technical Commission for Maritime Services,2013