基于Trimble BD970 OEM解码算法研究与实现
2018-06-13刘哲延
刘哲延
(贵州省第一测绘院 贵州贵阳 550001)
20世纪90年代中期推出了GNSS OEM技术(当时主要是针对GPS系统),该技术将GPS接收机的主要部件做成大规模集成电路芯片,并与其他配套功能部件集成在一块电路板上。BD970为一款多系统多频点GNSS OEM板卡,支持GPS、GLONASS、Galileo、北斗二代全频点信号接收,具有最高可达50Hz测量频率及RTK等功能[1]。BD970 OEM板以其性能优良、价格低廉、轻巧灵便、易于开发等优点,被广泛用于运动载体的导航、授时和高精度定位等领域。
1 原始数据介绍
RAWDATA[3]是Trimble BD970 OEM板卡输出的一种天宝公司自定义的二进制数据格式,该二进制数据格式分为三个部分:数据头、数据内容和数据校验三部分。其中数据头部分包括:数据头标志和信息数据长度等信息,而数据内容部分是可变的,它的长度由待传送的信息来具体确定,其基本结构如表1。
表1 RAWDATA二进制数据结构
这种原始卫星测量数据输出速率通常超出了RS-232串口的字节限定。为了克服数据包尺寸限制的缺点,这些数据被分成了若干分包。这些分包的第4字节定义了该分包在整个数据包内的索引和该数据包所包含的测量历元的最大分包索引数。每个分包最大由248个字节组成,其中有4个字节是分包索引,另外244个字节存储卫星原始观测数据。
2 数据解码
通常GPS原始数据解码总的来说要经过以下步骤:
(1)将原始二进制读入之后开始查找数据标识头;
(2)逐字段对数据进行解析;
(3)根据变量的单位进行转换。由于各个生产商的板卡有着自己特有的二进制数据格式,在步骤(3)上要注意阅读产品说明书。
图1为RAWDATA格式文件具体内容:
图1 RAWDATA数据实例
在解析的时候,我们先查找字头02h,然后在读取第1字节关于接收机状的数据,并对第2字节是否是57h进行验证,以确定字头02h是分包开始的标志。第3位数据块决定了需要读取的字节最大数量。第5字节的信息是将各分散的数据进行重组的唯一标志。而第7字节,则决定了该数据块的数据类型。在对RAWDATA数据进行解码的时候,需要对每段数据用取模的方式进行校检[3],如果出现错误,则丢弃这段数据。校检无误之后,则可作为有效数据部分,之后再用于重组完整数据。
RAWDATA解码程序流程图如图2。
图2 解码程序流程图
另外,在BD970OEM数据解码单位换算时,有几点需要注意:①载波相位尺度因子为1/1024,单位是半周,读取相位数据时需将其先换算为整周,然后根据C/A码的说明进行提取;②多普勒值可在RAWDATA数据中直接读取,但需乘以常数1000[5]。此次在编码过程中,使用了.NETFramework中的一个串口通信控件,名为SerialPort[2],其功能类似于MSComm[3]。在该控件整合了串口操作中数据整理、奇偶校验以及从缓冲区读取数据等功能[4],极大提高了开发效率。
本人选取了2013年1月22日下午14点一段观测原始数据进行解码,结果如下:
转码后的结果:
图3 正确解码的RINEX格式
经过与正确数据比对,该解码算法可靠。通过本文介绍的OEM板卡二进制文件数据解析的基本方法和思路,可以实现绝大部分二进制GNSS观测数据的解析。而对于GPS接收机的其他一些二进制数据,比如RTCM、CMR等,向文本文件的转化方法与此相似。随着GNSS接收模块小型化,基于GNSS OEM板的二次开发将成为GNSS产品民用化的一个重要方向。
[1]Trimble Company.Trimble BD970 OEM UserGuide[S].2010.
[2]徐蕾璐,俞子荣.NET环境下基于SerialPort实现SR23与PC机的通信[J].计算机与现代化,2011,5:029.
[3]李立早.基于MSComm控件的GPS接收机数据终端接口设计[J].现代电子技术,2006,29(20):97~98.
[4]康筱锋,吴琼,张建生.基于PDA和GPSOEM板的GPS信息解码[J].安徽工业大学学报,2007,24(1).
[5]孟祥广,郭际明.GPS接收机(OEM)二进制文件向RINEX文件的转换[J].测绘工程,2009,18(5):18~21.