GPS从入门到放弃(五) — GPS导航电文
GPS的导航电文以帧的形式编排为比特流,每一帧为1500比特,这1500比特又分为5个子帧,每个子帧为300比特。每一子帧又分为10个字,每个字30为比特。发送时MSB在前。每一比特发送需要20ms,所以发送一帧需要30s。
每周开始的时候(周六半夜12点/周日凌晨0点),不管之前数据发到哪个子帧,从第一子帧重新开始发;第四、五子帧从第一页开始发。
对每一个子帧来说,其第一个字是遥测字(TLW: Telemetry Word),第二个字是交接字(HOW: HandOver Word),后8个字为数据。
遥测字
其结构如下图所示。其首8个比特为前导码(preamble),前导码固定为10001011。这个固定的前导码可以用来搜索、确定子帧的起始沿。第9位到第22位提供特许用户使用的数据,我们不用管。第23位为完好性状态指示标志(ISF:Integrity Status Flag),为1表示有发射的信号有增强的完好性保证,即更加靠谱。当然这个靠谱是有标准的,在GPS的接口说明文档里有详细数值指标,需要详细了解的可以去查阅。第24位保留。最后6位为奇偶校验码。
交接字
其结构如下图所示。第1到17比特为被截断的周内时(TOW: Time of Week),表示的是下一子帧起始沿的GPS时间,单位为6s,即变动1表示时间6s。第18位为警告标志,为1时非特许用户自行承担使用该卫星信息的风险。第19位为反电子欺骗措施(AS)标志,为1表示实施了该措施。第20位到22位为子帧ID,每一帧有5个子帧,ID为1~5。第23、24比特是通过求解得到的,目的是保证奇偶校验码的最后29、30比特为0。
数据字
对于数据字,各个子帧就不一样了,下面分子帧来讲。
第一子帧
第一子帧包含的数据有
- 周数(WN: Week Number):10位,最大值为1023,表示从GPS时间0时开始的第几周。因位数限制,最大表示范围只有约19.6年,于是每19.6年会翻转一次。最近一次翻转发生在今年4月6日。
- L2载波上是否有P码和C/A码:2位,这个我们不管。
- 用户测距精度(URA: User Range Accuracy):4位,16个级别,数值越小,精度越高。
- 卫星健康状况:6位,其中1位为汇总是否有问题,5位具体表示是什么问题。
- 时钟数据的期号(IODC: Issue of Data, Clock):10位,同一期(同样)的时钟校正参数有着相同的期号,因此可用于确定时钟校正参数是否发生变化。
- L2载波的P码上是否有导航电文:1位,这个我们不管。
- 预估群波延时(Estimated Group Delay Differential):8位,单频接收机用这个数据来校正电离层延时。
- 时钟校正参数:包含。用于校正卫星时钟。卫星时钟在GPS时间为t时的卫星钟差可以表示为:
第二、三子帧
第二子帧和第三子帧的数据合在一起可以提供一套卫星星历(Ephemeris)参数。
参数名 | 位数 | 含义 |
---|---|---|
16 | 星历参考时间 | |
32 | 卫星轨道半长轴A的平方根 | |
32 | 卫星轨道偏心率 | |
32 | 时的轨道倾角 | |
32 | 周内时为0时的轨道升交点赤经 | |
32 | 近地点角距 | |
32 | 时的平近点角 | |
16 | 卫星平均角速度校正值 | |
14 | 轨道倾角的变化率 | |
24 | 轨道升交点赤经的变化率 | |
16 | 升交点角距余弦调和校正振幅 | |
16 | 升交点角距正弦调和校正振幅 | |
16 | 轨道半径余弦调和校正振幅 | |
16 | 轨道半径正弦调和校正振幅 | |
16 | 轨道倾角余弦调和校正振幅 | |
16 | 轨道倾角正弦调和校正振幅 |
除了星历参数以外,还有
- 星历数据的期号(IODE: Issue of Data, Ephemeris):8位,可用于确定星历数据是否发生变化。它在第二和第三子帧中都有,方便尽快发现星历参数的变化。一般情况下,IODE的值与第一子帧中的IODC值的低8位应该相同,若不同,则发送的参数有变化,需要更新数据。
- 星历数据的有效期(Curve Fit Interval)指示标志:1位,为0表示4小时,为1表示4小时以上。
- AODO(Age of Data Offset):5位无符号整数,其值需要乘于900,单位为秒。用于判断在第四子帧中的NMCT的有效时间,计算,可以在众多卫星发送的NMCT中选取最新的值来使用。
第四、五子帧
第四子帧和第五子帧的数据量比较大,无法包含在一帧内,所以进行了分页,完整电文有25页,即需要25帧才能把完整的数据发送完。发送一帧是30s,所以完整电文发送完一遍需要750s,即12.5分钟。不过第四、五子帧的内容并不是定位所急需的,所以定位并不需要等这么久。
第四子帧和第五子帧包含的数据主要有:
-
Data ID 和 SV ID:主要用于指示该页表示的内容,若为星历数据,则SV ID是卫星PRN号。
-
所有卫星的历书(Almanac)参数
历书参数的内容包括:M
参数名 | 位数 | 含义 |
---|---|---|
8 | 历书参考时间 | |
24 | 卫星轨道半长轴A的平方根 | |
16 | 卫星轨道偏心率 | |
16 | 时的轨道倾角 | |
24 | 周内时为0时的轨道升交点赤经 | |
24 | 近地点角距 | |
24 | 时的平近点角 | |
16 | 轨道升交点赤经的变化率 | |
11 | 卫星时钟校正参数 | |
11 | 卫星时钟校正参数 |
-
卫星健康状况指示:对32颗卫星中的每颗卫星健康状态都有两处地方指示:
- 一是在每一个含历书的页中;8位,其中3位为问题分类,5位具体表示是什么问题。
- 一是在第四、五子帧的第25页;6位,其中1位为汇总是否有问题,5位具体表示是什么问题。
-
反电子欺骗措施(AS: Anti-Spoof)标志:在第4子帧的第25页,对32颗卫星中的每颗卫星都有一个4位的标志,其中1位表示是否实施了该措施,3位表示具体配置。
-
历书参考周数(Almanac Reference Week):8位,历书参考时间就是相对于的,这样就可以确定历书参考时间。
-
UTC数据:GPS时间与协调时(UTC)的差异参数,位于第4子帧第18页。这些参数由地面站负责更新,至少每6天更新一次,否则准确性会随时间流逝而下降。
参数名 | 位数 | 含义 |
---|---|---|
32 | 计算秒内时间偏差的系数 | |
24 | 计算秒内时间偏差的系数 | |
8 | 因润秒导致的时间差异 | |
8 | UTC的参考时间 | |
8 | 基于UTC时间的周数 | |
8 | GPS周数 mod 256,指示润秒的日期所在的周 | |
8 | 相对的天数,与一起指示润秒的日期 | |
8 | 发生润秒后取代用于计算 |
从GPS时间计算UTC时间的方法为:
其中 为GPS时间,而 为
-
电离层延时校正参数:位于第4子帧第18页,有8个参数,每个8位,用于电离层延时的校正。
-
特殊信息:第4子帧的第17页。可以包含22个的8位ASCII码,用于传递一些特殊信息。
-
伪距校正值(NMCT: Navigation Message Correction Table):位于第4子帧第13页,包含一个2位的可用性指示(AI: Availability Indicator)和30个6位的ERD(Estimated Range Deviation)值。
AI指示校正值是否加密,普通用户和特许用户是否可用。
30个ERD存放卫星ID 1~31中除了自己的其余30个卫星的ERD值,按ID号升序排列。每个ERD为6位,一位符号位,5位数据,LSB相当于0.3m。
使用方法为:
其中为ERD校正后的伪距,是ERD校正前的。
星历和历书的比较
- 两者都是用开普勒轨道参数来表示,都用于描述卫星在各个时刻的空间位置和运动速度。
- 星历有效期短,只有4小时;历书有效期长达半年。
- 星历参数多,历书参数少。
- 星历参数中有摄动校正量,而历书没有,因为历书有效期长,不适用。
- 星历参数精度高,历书参数精度低。
- 星历参数与历书参数是由地面站独立推算的,因此它们的参数值有可能不同。
- 一颗卫星只播发自己的星历,但是会播发所有卫星的历书。
- 根据星历计算得到的卫星位置和速度值相当准确,可以直接用于定位与定速;根据历书计算的结果准确度不高,一般只能用于卫星信号的搜索和捕获。