我是靠谱客的博主 坚强冬天,最近开发中收集的这篇文章主要介绍从零开始研发GPS接收机连载——11、电文解析前言导航电文的格式遥测字交接字第一块数据块第二数据块第三数据块后记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

从零开始研发GPS接收机连载——11、电文解析

  • 前言
  • 导航电文的格式
  • 遥测字
  • 交接字
  • 第一块数据块
  • 第二数据块
  • 第三数据块
  • 后记


前言

GPS用户接收机通过对接收到的卫星信号进行载波解调和伪码解扩,得到50bps的数据码,然后按照导航电文的格式可最终将数据码编译成导航电文。导航电文中含有时间、卫星运行轨道、电离层延时等用于定位的重要信息。

导航电文的格式

卫星将导航电文以帧与子帧的结构形式编排成数据流D(t)。如下图所示,每颗卫星一帧接着一帧发送导航电文,而在发送每帧电文时,卫星又以一子帧接着一子帧的形式进行。

在这里插入图片描述
每帧导航电文长1500比特,计30s,依次由5个子帧组成。每个子帧长300比特,计6s,依次由10个字组成。每个字长30比特,其最高位比特先被发送,而每一子帧中的每一字又均以6比特的奇偶校验码结束。我们已经知道,每一比特长20ms,其间C/A码重复20个周期。

每一子帧的前两个字分别为遥测字(TLW)与交接字(HOW),后八个字(即第3至第10字)则组成数据块。不同子帧内的数据块侧重不同方面的导航信息,其中第1子帧中的数据块通常称为第一数据块,第2子帧和第3子帧中的数据块合称为第二数据块,而剩下的第4子帧和第5子帧中的数据块则合称为第三数据块。当某颗卫星出现内存错误等故障时,它会在各大数据块的八个字里交替地发射1与0。

GPS对第三数据块采用了分页的结构,即一帧中的第4子帧和第5子帧为一页,然后在下一帧中的第4子帧和第5子帧继续发送下一页,而第三数据块的内容共占25页。因为一帧电文长30s,所以发送一套完整的导航电文总共需要花750s(12.5min)的时间,然后整个导航电文的内容每12.5min重复一次。

在新的一个GPS星期刚开始的那一刻,无论卫星在上一星期末尾正在播发哪一段导航电文,它将总是重新从第1子帧开始播发,而在第一次的第4子帧和第5子帧中将总是重新从第三数据块的第1页开始播发。当第1子帧、第2子帧和第3子帧的内容需要更新时,新的导航电文总是从帧的边沿处(即对应的GPS时间是30s的整数倍)开始播发。当第4子帧和第5子帧的内容需要更新时,新的导航电文可以在第4子帧和第5子帧中的任一页处开始播发。

遥测字

每一子帧的第一个字均为遥测字(TLW),因而它在导航电文中每6s出现一次。下图显示了遥测字内部码位的分布情况,其中第1比特至第8比特是一个二进制值固定在10001011的同步码,第9比特至第22比特提供特许用户所需要的信息,第23比特和第24比特保留,而最后6比特为奇偶校验码。
在这里插入图片描述
因为值既固定又已知的同步码是每一子帧的最先8个比特,所以GPS接收机可以用它来匹配接收到的数据码,进而搜索,锁定子帧的起始沿,为接下来按照相应格式正确解译二进制数据码提供了必要条件。如果接收机找到了一个卫星信号的子帧边沿,那么我们称该接收机对此卫星信号进入了子帧同步状态(或者说是帧同步状态)。
每一字中的奇偶校验码(汉明编码)可以帮助用户接收机检查经解调得到的字中是否包含错误比特,并且它还有一定的比特纠错功能。一个字中的奇偶校验码是通过对该字的前24比特和上一字的最后两个比特按照以下公式计算产生的:
在这里插入图片描述

交接字

交接字(HOW)紧接遥测字之后,是每一子帧的第二个字,在导航电文中也是每6s出现一次。下图是它的码位分布情况。
在这里插入图片描述
交接字的第1比特至第17比特(即子帧的第31比特至第47比特)是从Z计数器上得到的截短的周内时计数值。二进制Z计数长29位,它的值由高10位的星期数(WN)和低19位的周内时(TOW)计数两部分组成,其中最高位先被播发,最低位最后被播发。如下图所示,Z计数器是将P(Y)码发生器产生的X1序列作为输入信号,而周内时计数是从世界协调时间(UTC)大约每星期六午夜(即星期日零时)算起的X1序列的周期累计数。序列X1的周期为1.5s。因为一星期共计604800s,所以一星期时间相当于403200个X1序列周期。如下图所示,周内时计数在以GPS卫星时钟计时的星期六午夜零时等于0,然后其值每1.5s加1而逐渐变大。到下一个星期六午夜零时,周内时计数从最大值403199又重返为0,如此循环不已。最大周内时计数值403199的二进制数表示长19位,而交接字只截取了周内时计数的最高17位,去掉了其最低2位,这相当于每6s截短的周内时计数增加1,其最大值为100799.交接字中截短的周内时计数等价于从上个星期六午夜零时至当前时刻的卫星播发的子帧数,因而它乘以4可得在这一子帧结束、下一子帧开始时所对应的实际周内时计数,或者说它乘以6可得在这一子帧结束、下一子帧开始时所对应的GPS时间。对于每周重复一次的P码,因为其零相位发生在GPS零时刻,所以接收机可从C/A码信号的交接字那里获取截短的周内时计数,再由此确定当前观测时刻的P码相位,从而较快地捕获到P码。
在这里插入图片描述
交接字的第18比特是警告标志。当警告标志为1时,它提醒非特许用户自己承担使用该卫星信号的风险,因为该卫星第一数据块所提供的URA值有可能比其真实值还要大。第19比特是A-S标志,其值为1时表示对该卫星实施了反电子欺骗措施。第20比特至第22比特是子帧识别标识,它共有如下5个有效二进制值:001表示该子帧是第1子帧,010表示第2子帧,依次类推,直到101表示第5子帧。若知道了当前子帧的识别标志,则接收机就可以按照这一子帧的相应格式解译数据码。第23比特和第24比特是通过求解得到的,其目的是使交接字的6位奇偶校验码以00结尾。

第一块数据块

第一数据块包括第1子帧中的第3字至第10字,它又常称为时钟数据块。由一颗卫星播发的时钟数据块提供该卫星的时钟校正参数和健康状态等如下内容。
(1) 星期数(WN):星期数来自Z计数器的高10位,指代当前的GPS星期。每当周内时计数在星期六午夜零时从最大值跳回零的同时,星期数的值加1。因为星期数用10位二进制数表示,所以它的最大值为1023.若星期数在最大值1023时再加1,则星期数返回置0.上一次的星期数返零事件发生在以GPS时间计时的1999年8月21日午夜(即22日零时)。因为GPS时间每周循环一次,所以为了确切地表达一个时间值,我们在必要时必须同时指出GPS时间和GPS星期数
(2) 用户测距精度(URA):用户测距精度是对所有由GPS地面监控部分和空间星座部分引起的测距误差大小的一个统计值,它是通过导航电文中的一个由4比特表示的用户测距精度因子N而提供给非特许用户的。用户测距精度因子N的值在0至15之间,每一个值对应于一个用户测距精度URA,而用户可以根据N值用以下公式估算URA值:
在这里插入图片描述
URA值越大,则表示从该卫星信号中得到的GPS距离测量值得精度越低。当N等于15时,URA的估算值缺省,此时用户要自己承当使用该卫星的风险。
(3) 卫星健康状态,:若共计6比特的卫星健康状态的最高位是0,则表示导航电文全部正确。若它的最高位是1,则表示导航电文出错,而低5位又具体指出信号各部分的出错情况。
(4) 时钟校正参数:af0,af1和af2是卫星时钟校正模型方程中的三个系数。另外toc称为第一数据块的参考时间,它在时钟校正模型中被用作时间参考点。
(5) 群波延时校正值:群波延时校正值TGD只适合于单频(L1或者L2)接收机,而双频接收机则无需此项校正。单频接收机之所以有此校正,是因为时钟校正参数af0是针对双频测量值而言的。
(6) 时钟数据期号(IODC):用10比特表示的IODC是时钟数据块的“期刊号”,一个IODC值对应一套时钟校正参数。因为IODC的值在七天之内不会出现重复,所以它可以用来帮助用户接收机快速监测时钟校正参数是否发生了变化:如果某卫星播发了一个新的IODC值,那么该卫星更新了时钟校正参数;否则,如果IODC值没有改变,那么时钟校正参数尚未被更新。如果时钟校正参数尚未被更新而接收机又已经完整的解译了当前这一套时钟校正参数,那么接收机就不必每30s去重复读解这一数据块中的时钟校正参数。

第二数据块

卫星信号的第2子帧和第3子帧数据块一起组成第二数据块,它提供该卫星自身的星历参数。

星历的原意是一张用来精确描述卫星在各个时刻的空间位置和运行速度的大表格。为了减少需要播发的数据量,GPS用开普勒方程来描述卫星的运行轨道,并通过最小二乘法逼近来求解方程中的各个系数。下表列出了由GPS卫星播发的共计16个开普勒系数的一套星历参数。

一套星历参数的有效期一般是以参考时间toe为中心的4小时之内,而超过此有效时段的星历经常被认为是过期且无效的。因为过期星历参数计算得到的卫星轨道值一般会存在一个较大的误差,所以它们通常不能用于GPS的正常定位计算中。为了判断一套星历参数是否有效,正如上一小节所指出的那样,我们通常需要同时查看它的参考时间和星期数。

与IODC类似,卫星在第2子帧和第3子帧均播发一个8比特的星历数据期号(IODE),以此标记一套星历参数。IODC的值在6小时之内不会出现重复,并且它的值应当与第1子帧中IODC的低8位保持一致。一旦IODC的低8位与第2子帧和第3子帧的IODE这三者之间有任何的不一致,则意味着卫星导航电文正处于新旧更替之际,而此时接收机应当接收、解译当前最新的一套卫星星历和时钟校正参数。卫星播发的第1子帧、第2子帧和第3子帧的内容通常每两小时更新一次,并且通过发生在整小时交界处。当更新完毕后,这三个子帧的数据块内容应当跟下一帧的这三个子帧的数据块内容保持一致。正是由于卫星在 这三个子帧中重复播发相同的时钟校正和卫星星历参数,因而接收机在平均30s的时间内必然有机会从实时的卫星信号中完整地获取这三个子帧的数据块内容。
在这里插入图片描述

第三数据块

第三数据块由第4子帧和第5子帧的数据块组成。每颗卫星播发的第三数据块主要提供所有(自身和其他)卫星的历书参数、电离层延时校正参数、GPS时间与UTC之间的关系以及卫星健康状态等数据信息。与前两个数据块不同,第三数据块的内容并不是接收机在实现定位前所急需获得的。

后记

以上都是谢刚书上的内容,重新抄写一篇我主要是为了复习了一遍而已。电文解析没有什么高深的理论,就是照着协议把字段一个个提取出来而已。
我主要特别关注几个跟时间有关的参数,用于接下来的伪距计算。而其他星历参数是用于对卫星位置进行计算的,这些已经有成熟的开源的代码直接可以去解算。
关注几个点:
1、1个子帧6s,5个子帧30s
2、接收机最晚30s能够收齐星历,从而进行定位
3、星历的解译根据协议表进行解译,星历参数更细致点的内容如下表:
在这里插入图片描述
在这里插入图片描述

最后

以上就是坚强冬天为你收集整理的从零开始研发GPS接收机连载——11、电文解析前言导航电文的格式遥测字交接字第一块数据块第二数据块第三数据块后记的全部内容,希望文章能够帮你解决从零开始研发GPS接收机连载——11、电文解析前言导航电文的格式遥测字交接字第一块数据块第二数据块第三数据块后记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部