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位,单频接收机用这个数据来校正电离层延时。
- 时钟校正参数:包含 t o c , a f 0 , a f 1 , a f 2 t_{oc}, a_{f0}, a_{f1}, a_{f2} toc,af0,af1,af2。用于校正卫星时钟。卫星时钟在GPS时间为t时的卫星钟差 Δ t s \Delta t_s Δts可以表示为:
Δ t s = a f 0 + a f 1 ( t − t o c ) + a f 2 ( t − t o c ) 2 \Delta t_s = a_{f0} + a_{f1}(t-t_{oc}) + a_{f2}(t-t_{oc})^2 Δts=af0+af1(t−toc)+af2(t−toc)2
第二、三子帧
第二子帧和第三子帧的数据合在一起可以提供一套卫星星历(Ephemeris)参数。
参数名 | 位数 | 含义 |
---|---|---|
t o e t_{oe} toe | 16 | 星历参考时间 |
A \sqrt{A} A | 32 | 卫星轨道半长轴A的平方根 |
e e e | 32 | 卫星轨道偏心率 |
i 0 i_0 i0 | 32 |