差分数据通信格式RTCM3.2解码算法研究*
李珊珊杨泳徐开俊吴佳益
(中国民航飞行学院四川广汉  618307)
摘要:RTCM SC-104委员会制定的差分数据通讯标准是进行多系统数据融合、提供差分数据服务、实现RTK厘米级定位的关键和基础。针对最新的差分电文格式RTCM3.2版
本的多信号信息组(Multiple Signal Message,MSM) 实时解码问题,按照卫星信号标志量设计
思想及数据分割原理,以基于面向对象的程序设计思路为基础,提出RTCM3.2版本MSM
类型电文的解码思路、流程及实现方法,实现电文各字段的实时、完整提取。通过实测实验数
据进行解码分析,证明该方法的正确性和可靠性。
关键词:RTCM 差分数据电文格式多信号信息组解码数据分割
Research on Differential Positioning Data Communication Format 3.2 Decoding Algorithm and Realization
Li Shanshan  Yang Yong  Xu Kaijun  Wu Jiayi
(Civil Aviation Flight University of China, Guanghan 618307 Sichuan China)
Abstract:The differential positioning data communication standards proposed by RTCM Spe-cial Committee SC-104 is the critical key and primary foundation of multi-constellation GNSS infor-
mation fusion, differential data service and RTK cm level positioning implementation. To make latest RTCM3.2 message format compatible with previous versions and solve the analysis and decoding problem related with multi-GNSS multiple signal message, characteristics and algorithm were put forward based on net object-oriented programming technique. Decoding methods、Flowchart and im-
plementation were presented against the RTCM3.2 version in corresponding to the design philosophy of satellite signal and the data division principle, finally messages were completely extracted in real time. The method is proved to be correct and consistent according to real-time observation data decod-
ing and analysis.
Keywords:RTCM  Differential data  Message format  Multiple signal message  Decod-ing  Data divisi
on
1 引言
随着各卫星导航系统的更新发展及应用范围的拓展延伸,用户对GNSS定位的精度和可靠性的要求不断提高。采用差分定位技术可以极大满足GNSS系统高精度定位服务需求,使用单频接收机即可以实时实现米级(测距伪码差分)或厘米级(载波相位差分)的定位精度,是常用的增强技术,得到越来越普遍的应用[1]。完整的差分GNSS系统由基准站、数据传输链和用户使用终端三部分构成,在动态差分定位应用中,用户使用终端与基准站之间需要大量的差分电文传输,因此数据传输链在差分系统起着关键性纽带作用。数据传输链的基本作用是将已知位置的差分基准站视界内的可见卫星形成的原始观测数据或改正数以某种标准数据传输协议传输给用户终端,其中差分协议是数据链的重要组成部分,是差分数据进行信息产生、存储和交换、流通的统一格式。目前,局域差分系统(Local Area Differential GNSS,LA-DGNSS)协议包括Trimble公司提出的CMR协议和RTCM SC-04协议。CRM协议传输数据量
*中国民航飞行学院研究生创新科研项目(X2017-3),2018年中央高校教育教学改革专项(E20180301)
小,是Trimble 公司针对RTCM 格式的码发送率必须高于4 800 b/s 这一不足而设计的用于RTK 的定制差分格式标准,但目前只有天宝公司的设备才能播发和使用。RTCM SC-104协议由海事无委会(RTCM)第104专门委员会制定的DGPS 电文,已在国际上得到广泛认可和应用推广。
RTCM SC-104委员会自1983年以来陆续推出各种版本的差分导航全球卫星系统(DGNSS)差分数据格式来确定数据传输过程中差分信息的产生、存储和交换协议[2]。SC-104于1985年发布了RTCM V1.0版本的建议文件,随后在丰富的研究资料基础上大量试验,对协议版本不断修改升级;1990年1月颁布V2.0版本,该版本提高了差分改正数的抗差性能,增大了可用信息量,差分定位精度由V1.0版本的8-10 m 提高到2-3 m ,但该版本中只有伪距差分信息,没有载波相位差分信息;1994年公布V2.1版本,该版本保持基本数据格式不变,增加几类支持实时动态定位(Real Time Kinematic , RTK)的新电文满足载波相位差分定位技术的需求,即18-21类电文;1998年发布V2.2版本,该版本增加了GLONASS 差分导航电文的支持;2001年发布了同时支持码基和基于载波相位的V2.3版本,定义23和24类电文,使该类型电文的实时动态定位精度优于5 cm 。自推出RTCM2.x 版本以来,该格式被广泛应用于测绘、运输、规划、施工、监测等多个领域应用程序中并取得很大的成功。但在使用过程中,RTCM2.X 版本暴露出一些明显的缺陷[3],主要体现在奇偶检校模式、校验码之间不独立、带宽造成较大浪费、解码困难等,难以适应最新定位技术网络RTK 及多模融合定位的发展要求。为克服这些潜在的缺陷,RTCM 委员会于2004年发布V3.0版本,该版本增加了用于网络差分改正数传输的电文格式,并采用智能化的数据传输减少启
动时间,逐渐取代RTCM2.x 版本成为接收机制造商所采用的通用标准;随后,于2006年公布的RTCM3.1版本通过增加GPS 网络差分改正数、发布GPS 、GLONASS 信息卫星轨道参数、提供Unicode 文本格式数据信息、预留部分用户自定义
信息格式等增强系统的精度、可靠性和扩展性,但该格式只能支持GPS 、GLONASS 的L1、L2频率信号并且只能容纳每个频率的一个信号,不能有效地扩展以兼容其它GNSS 系统信号;因此,随着更多GNSS 及其增强系统的投入运营,针对日益增多的卫星导航系统及多频的应用需求,2013年又推出RTCM3.2版本,该版本不仅弥补了之前版本的缺陷,还提供了对北斗BDS 系统的支持,并进一步增加和扩展了多种网络RTK 信息,定义了包括GPS 、GLONASS 、GALILEO 和BDS 系统的多信号信息组(Multiple Signal Message , MSM)[4],利用各个GNSS 系统观测量的相似特性实现以统一的数据存放和发送,从而达到多系统信息高度融合。
目前,针对RTCM3.2版本公布的文献资料甚少,完全支持该标准的接收机相对较少,对该版本协议的编码、解码公开文献也不多。因此,本文重点对该格式下新增的MSM 电文组进行研究,提出按位对其格式进行解析,采用面向对象的编码原则借助Windows 下Visual Studio 2010环境下的C#语言,实现RTCM3.2格式数据的解码和算法实现,并通过实测数据进行验证。
2 RTCM3.2数据格式
2.1 RTCM
3.2版本标准参考模型
按照RTCM SC-104公布的版本标准[4],RTCM3.2版本协议采用OSI(Open System Inter-connection)标准参考模型进行定义,即包含应用层、表示层、传输层、数据链路层和物理层5个层面。
应用层讨论确定协议信息在不同用户终端的应用,在广播式差分数据服务的主要特征下,明确差分数据信息是由差分服务商提供,实现陆、海、空高精度、高动态、可靠的导航定位服务;表示层规定了消息、数据要素和数据定义,其信息是以数据集中发布、基于数据库形式设计,且电文以位为存储单位,有效减少了传输数据长度,但无法强制要求每个数据区占用整个字节,要求数据供应商对于最后没有用完的字节位补0;传输层定义了发送或接受RTCM3.2信息的框
架结构,同时定义了传输的协议和校验方式,为了方便解码和编码,通常以二进制位形式来传输数据;数据链路层定义了信息在物理层面上编码和传输方式,如采用NTrip 、TCP/IP 协议;物理层没有给出具体定义和要求,一般视用户具体情况而定。对于编码和解码而言最重要的是表示层和运输层,因此本文重点介绍RTCM3.2格式的电
文框架、关键思想及算法实现。
2.2 RTCM
3.2版本电文框架结构
RTCM3.X 为了达到较高的数据传输完整率,一条标准的电文由一个固定的引导字11010011、保留字、消息长度定义、一条可变长度消息和24 bits 的周期冗余校验组成,具体信息结构框架如表1所示。
表1  RTCM3.2版本电文框架结构 引导字 预留字 消息长度 可变长度数据 CRC 8 bits    6 bits 10 bits
0~1023 bytes 24 bits
11010011
未定义 000000
以bytes 为单位的消息长度
具体数据内容
前面数据生成唯一校验数据
表2  RTCM3.2版本MSM 消息用途及长度计算 消息类型 数据字段 长度 (单位:bit)
用途
MSM1 伪距 169+Nsat*(10 + 16*Nsig) 常规和高精度DGNSS MSM2 载波 169+Nsat*(10 + 28*Nsig)
常规RTK 模式
MSM3 伪距+载波
169+Nsat*(10 +43*Nsig) MSM4 伪距+载波+信噪比
169+Nsat*(18 + 49*Nsig) MSM5 伪距+载波+多普勒+信噪比 169+Nsat*(36 + 64*Nsig) 以完整RINEX 格式保存观测值MSM6 伪距+载波+信噪比 (高精度)
169+Nsat*(18 + 66*Nsig) 扩展的高精度RTK 模式,实时网络数据流
MSM7
伪距+载波+多普勒+信噪比(高精度)
169+Nsat*(36 + 81*Nsig)
扩展高精度模式,传输完整RINEX 格式观测值
2.3 RTCM
3.2多信号信息组MSM
与RTCM 之前版本中可变长度信息用分组及子类的表述方式不同,RTCM3.2版本不仅保留之前版本各主要消息号及数据字段定义,同时为满足多卫星导航系统及多频的需求,版本又引入多信号电文组MSM 对GNSS 观测数据进行了统一组织。MSM 是RTCM3.2版本标准中的关键核心思想,能兼容原有格式中包含的各类差分DGNSS/RTK 的信息,还能高效、实时地将GNSS 系统的观测数据以标准统一格式呈现并传输,具有极强的通用型和扩展性,这种方式不仅适用于未来GNSS 系统每颗卫星传输同样信号的充分发展运营阶段,也能够适用于现阶段各GNSS 快速发展过程中不同卫星采用不同信号的过渡阶段,其诸多优点主要源于简洁的电文组数据块组织方法和科学的观测数据分割原理。
2.3.1 MSM 电文组
MSM 电文组由消息头(Message header)、卫星数据(Satellite Data)、信号数据(Signal Data)3部分组成。其中,消息头包含了该条MSM 信息的所有卫星和信号的基本信息,如消息编号、参考站信息、多系统标志位、卫星个数、历元时刻、钟差信息、卫星标志表(Satellite mask )、信号标志表(Signal ma
sk)、信号位图表(Cell mask)等内容,对于各类MSM 消息其格式是固定的,详细可参见文献[4];卫星数据和信号数据组成观测数据,卫星数据包含所有可见观测卫星的粗略观测值,字段存放顺序与消息头中卫星标志表中标志的卫星顺序相同;信号数据则包含所有卫星所有信号的精确修正值,字段存放顺序与消息头中信号标志表中标志位1位的信号顺序相同。这种以数据字段分块的方式与之前版本中以卫星信号分块的
方式大不相同,可以根据这些观测字段进行自由组合得到不同内容量和精度的MSM 消息。目前,RTCM3.2版本中已经定义的MSM 消息有7种类型MSM1-MSM7,各种类型具体的卫星数据格式和信号数据格式可以详细参见文献[4],归纳起来其用途及长度计算方法如表2所示,表中Nsat 表示可见卫星个数,Nsig 表示卫星所有信号个数,其中MSM6和MSM7分别是MSM4和MSM5的升级版,包含相同的内容,但其精度更高。
2.3.2 MSM 观测数据分割原理
在RTCM3.2版本MSM 消息传输中,通过引入粗略观测值和精确改正值的概念将观测数据进行有效分割并依此进行高效传输。在RTCM3.2之前的版本中,差分数据格式进行数据压缩时通常是以L1观测量为基
础,而其它观测值则是在此基础上构建,这种以某一观测量为中心的观测量数据构建思想在更多的导航系统和更多的新信号投入使用时已经不再适用,已经造成带宽大量的浪费[4]。针对这种情况,MSM 引入粗略观测值和精确改正值构建卫星信号的观测值,按照精度不同,观测值构建的公式略有差异。
对于MSM1-MSM5,以米为单位的完整的标准精度观测值构建方法如公式(1)所示:
24
()/1000*(_/10242
*_())
广汉飞行学院招生Pseudorange i c Nms Rough range Fine Pseudorange i -=++
29
/1000*(_/10242*_())()c Nms Rough range Fine Pseudorange i PhaseRange i -++=
(1)
()_0.0001*_()PhaseRangeRate i Rough PhaseRangeRate Fine FineRangeRate i =+
对于MSM6-MSM7,以米为单位的完整的高精度观测值构建方法如公式(2)所示:
29
()/1000*(_/10242
*_())
Pseudorange i c Nms Rough range Fine Pseudorange i -=++
31
/1000*(_/10242*_())()c Nms Rough range Fine Pseudorange i PhaseRange i -++=
(2)
()_0.0001*_()PhaseRangeRate i Rough PhaseRangeRate Fine FineRangeRate i =+
在公式(1)、(2)中,某颗卫星j 的粗略观测值对该颗卫星是唯一固定的,表示信号从卫星到接收机传播时间除以1ms 后得到的整数部分,在解码过程中重新作为该颗卫星统一的基准构建观测数据,没有实际的物理意义[5];而不同信号之间的精确修正值是不同的,由这两者之和构建完整的该颗卫星某种信
号下的观测值。使用这种观测数据分割方法既能大大减少数据传输,又摒弃了以往版本中对观测数据采用“观测量分先后”的捆绑式策略,大大提高了数据结构和应用方式的灵活性,具有极强的实用性和扩展性,为后续增强版本中对BDS 系统和Galileo 系统数据信号的支持奠定理论基础。
2.3.3 MSM 解码流程
按照前文介绍的RTCM3.2版本电文的数据结构及编码方式,设计详细的算法解码流程,如图
1所示。算法实现时采用面向对象的设计原则,以Windows 操作系统平台下基于 技术和Visual Studio10开发环境设计、开发RTCM3.2解码平台。
3 数据解析结果验证
为了验证本文给出的RTCM3.2差分数据格式理论和解码流程及算法实现的正确性,本文采用与四川九州集团导航事业部合作建立的单连续运行参考站CORS 系统作为数据采集系统。该CORS 系统建设如图2所示,兼容了GPS/GLONASS/BDS 系统各频点信号,项目于2017年9月安装调试成功,有效覆盖半径40km 。本次实验以自建单CORS 系统为基础,在有效作用范围内选取针对单CORS 提供的差分数据问题展开研究。
图1  RTCM3.2 MSM 解码流程图
图2  CORS 站建设示意图
图3 原始电文
表3  电文解码数据卫星号
伪距(单位:m) 载波相位(单位:周)
SNR1 SNR21C 2P 1C 2P
4 21973539.18
5 21973550.424115478362.88489980310.91 42 31 8 23303713.453 23303724.943122460391.51395425017.909 51 41 9 21305465.341 21305476.134111959685.40587250185.641 54 44 12 22684148.79 22684159.332119214826.183********.758 51 40 13 22087855.258 22087865.533116075578.37890451120.059 51 41 17 23184209.43 23184220.08 121842010.39794938495.061 5
6 46 19 21992769.809 21992780.227115579863.45990055445.765 50 39 21 22622052.005 2262206
3.673118891800.0859*******.862 51 51 23 23164675.979 23164686.0751********.88594856794.609 4
7 37 26 24341266.049 24341287.671127920599.766
99673536.063 56
45
数据服务通过CORS 基准站的测量型天线采集,在数据中心处理后以RTCM3.2格式差分数据通过TCP/IP 网络方式向外播发,流动站通过差分型接收机接收,内容包括差分改正数和多系统信息MSM 。实验中,流动站采用高精度差分型JZ-BD-R600接收机进行数据采集,采样率为0.5秒,解码时同时保存RINEX 格式观测数据与解码结果进行对比,通过两者的一致性验证算法的准确性。
差分数据在客户端采用TCP 方式接收并以16 进制存储于数据文件中,采用文中介绍的解码算法结算平台对多段原始电文进行解码,并将解码结果与接收机保存后得RINEX 文件该历元的数据进行了对比,得出完全一致的结果,验证了算法的准确性。图3列出了某一时刻的原始电文观测值,消息为GPS 的MSM4标准精度1074电文,解码结果如表3所示。
(下转第73页)