【通信协议-RTCM】MSM语句(2) - RINEX&MSM7语句总结(重要!自动化开发计算卫星状态常用)

注释:
在工作中主要负责的是RTCM-MSM7语句相关开发工作,所以主要介绍的就是MSM7语句相关内容

1. 相位校准参考信号

2. MSM1、MSM2、MSM3、MSM4、MSM5、MSM6和MSM7的消息头内容

DATA FIELD DF NUMBER DATA TYPE NO. OF BITS NOTES
Message Number - 消息编号 DF002 uint12 12 MSM7语句对应:1077、1087、1097、1117、1127(去除IRNSS卫星之外)
Reference station ID - GPS参考站ID DF003 uint12 12
GNSS Epoch Time - GNSS历元时间 Specific for each GNSS uint30 30 针对每一个GNSS
Multiple Message Bit - 多消息位 DF393 bit(1) 1
IODS -- Issue of Data Station - 数据站问题 DF409 unit3 3
Reserved - 保留位 DF001 bit(7) 7 保留(可能是GNSS特定的)
Clock Steering Indicator - 时钟转向指示灯 DF411 uint2 2
External Clock Indicator - 外部时钟指示器 DF412 uint2 2
GNSS Divergence-free Smoothing Indicator - GNSS无发散平滑指示器 DF417 bit(1) 1
GNSS Smoothing Interval - GNSS平滑间隔 DF418 bit(3) 3
GNSS Satellite Mask - GNSS卫星掩码(后续缩写为Nsat) DF394 bit(64) 64
GNSS Signal Mask - GNSS信号屏蔽(后续缩写为Nsig) DF395 bit(32) 32
GNSS Cell Mask - GNSS单元掩码(后续缩写为Ncell) DF396 bit(X) X<=64
Total 169+X

注释(重要):
 单元掩码的大小不是固定的,而是在解码卫星和信号掩码后确定的。单元掩码的大小为X=Nsat*Nsig,其中Nsat是卫星数量(比特数量,在卫星掩码中设置为1),Nsig是信号数量(比特数,在信号掩码中设为1)。
 选择限制X≤64是为了保证MSM7(最大的MSM)的完整大小适合单个RTCM-3传输帧。在X≤64的条件下,MSM7完整大小的初步估计不超过5865位,这大约是任何RTCM-3消息最大允许大小的一半。
 在大多数实时应用中,要传输的数据将符合X≤64的限制(例如Nsat≤16,Nsig≤4),因此大多数时候,给定GNSS的所有数据都应该能够在单个RTCM-3传输中生成。
 如果给定GNSS有许多卫星和信号,编码软件有责任通过将完整的观测集划分为几个消息来确保"X≤64"规则。例如,如果Nsat=14和Nsig=6(即多达14*6=84个可观测值),则编码软件必须使用2个单独的传输,例如:第一个传输用于7颗卫星和6个信号,第二个传输用于其余7颗卫星,6个信号。

3. MSM7卫星数据内容(此处仅介绍MSM7)

DATA FIELD DF NUMBER DATA TYPE NO. OF BITS NOTES
The number of integer milliseconds in GNSS Satellite rough ranges - GNSS卫星粗略范围内的整数毫秒数 DF397 uint8(Nsat times) 8*Nsat
Extended Satellite Information - 扩展卫星信息 Specific for each GNSS uint4(Nsat times) 4*Nsat 针对每个GNSS
GNSS Satellite rough ranges modulo 1 millisecond - GNSS卫星粗略范围模1毫秒 DF398 uint10(Nsat times) 10*Nsat
GNSS Satellite rough PhaseRangeRates - GNSS卫星粗略相位范围速率 DF399 int14(Nsat times) 14*Nsat
Total 36*Nsat

4. MSM7信号数据内容

DATA FIELD DF NUMBER DATA TYPE NO. OF BITS NOTES
GNSS signal fine Pseudoranges with extended resolution - 具有扩展分辨率的GNSS信号精细伪距 DF405 int20(Ncell times) 20*Ncell
GNSS signal fine Phaserangedata with extended resolution - 具有扩展分辨率的GNSS信号精细相位数据 DF406 int24(Ncell times) 24*Ncell
GNSS Phaserange Lock Time Indicator with extended range and resolution - 具有扩展范围和分辨率的GNSS相位锁定时间指示器 DF407 uint10(Ncell times) 10*Ncell
Half-cycle ambiguity indicator - 半周期模糊度指示器 DF420 bit1(Ncell times) 1*Ncell
GNSS signal CNRs with extended resolution - 具有扩展分辨率的GNSS信号CNR DF408 uint10(Ncell times) 10*Ncell
GNSS signal fine PhaseRangeRates - GNSS信号精细相位范围速率 DF404 int15(Ncell times) 15*Ncell
Total 80*Ncell

4.1 RTCM实际输出数据示例解析

注释:
左侧为接收机实时获取到的数据(十六进制GPS-1077语句,实时搜星情况为:GPSL1/L2 双频5星),右侧为十六进制数据解析成二进制数据后结果,并标注了MSM7语句中每个Data Field所对应位置

5. 信号ID映射




附1:Data File参考文档

DF001 DF002 DF003见之前文章中Data File参考文档

DF # DF Name DF Range DF Resolution Data Type Data Field Notes
DF393 MSM Multiple message bit bit(1) 1表示在给定的物理时间和参考站ID下,有更多的MSM跟随 0表示它是给定物理时间和参考站ID的最后一个MSM
DF394 GNSS Satellite mask bit(64) 比特序列,指定此消息中有可用数据的GNSS卫星。最高有效位(MSb)或第一个编码位对应于ID=1的GNSS卫星,第二个位对应于ID=2的GNSS卫星等。最低有效位(LSb)或最后一个编码位相应于ID=64的GNSS卫星。 实际GNSS卫星(GPS的PRN、GLONASS的"时隙号"等)到卫星掩码ID的精确映射是每个GNSS特有的(见MSM描述中每个GNSS的相应表格)。 一些ID值可能指特定的卫星,而一些ID值在本标准中可能表示为"保留"。这些ID将来可能会用于其他卫星,因此解码软件应确保它不会跳过这些比特,而是解码完整的GNSS卫星掩码,解码相应的可观测值,就像它们是指已知的卫星一样,但应避免使用它们,除非有新的卫星映射表可以将相应的ID映射到特定的卫星。 如果后面有ID=n的卫星数据,则相应的比特(比特数n)设置为1。如果ID=m的卫星的数据不在后面,则相应的比特(比特数m)设置为0。
DF395 GNSS Signal mask bit(32) 比特序列,指定了此消息中有可用数据的GNSS信号。每个比特对应于给定GNSS的特定信号(可观测)类型。最高有效位(MSb)或第一编码位对应于ID=1的信号,第二位对应于ID=2的信号,以此类推。最低有效位(LSb)或最后一个编码位对应于ID=32的信号。 实际信号标识符(与RINEX 3.01信号命名约定相对应)到信号掩码ID的精确映射对于每个GNSS都是特定的(见每个GNSS的MSM描述中的相应表格)。 一些ID值可能指特定的信号,而一些ID值在本标准中可能表示为"保留"。这些ID将来可能会用于其他信号,因此解码软件应确保它不会跳过这些比特,而是对完整的GNSS信号掩码进行解码,对相应的可观测值进行解码,就像它们指的是已知信号一样,但应避免使用它们,除非有新的信号映射表可以将相应的ID映射到特定的信号。 如果ID=n的信号(可观测)可用于至少一个发射的卫星,则相应的比特(数字n)设置为1,否则相应的比特设置为0。
DF396 GNSS Cell mask bit(X) 一个二维表,用于确定每个发射卫星的信号可用性。 该字段大小可变:X=Nsig*Nsat,其中Nsat是卫星数量(在卫星掩码DF394中设置为1的那些比特的数量),Nsig是可用信号的数量(在信号掩码DF395中将这些比特的数量设置为1)。 该矩形表的第一行对应于具有最小ID的信号,信号掩码中的对应位被设置为1。第二行对应于具有第二小ID的信号,信号掩码中的对应位设置为1。最后一行对应于具有最高ID的信号,信号掩码中的相应位设置为1。 该矩形表的第一列对应于ID最小的卫星,卫星掩码中的对应位设置为1。第二列对应于具有第二小ID的卫星,其卫星掩码中的对应位设置为1。最后一列对应于ID最高的卫星,卫星掩码中的相应位设置为1。 如果给定卫星和给定信号的可观测数据随之而来,则此表中的相应单元格设置为1,否则设置为0。 该比特表按列打包,从与最小卫星ID对应的列开始。 每列的大小为Nsig比特,并且从与最小信号ID对应的单元开始打包。 表的每个单元格由一个位表示,根据单元格中的值,该位设置为1或0。
DF397 The number of integer milliseconds in GNSS Satellite rough range 0-254ms 1ms uint8 粗略距离可用于恢复给定卫星的完整可观测性。粗略范围需要18位,分为两个字段(DF397和DF398)。此字段包含卫星粗略范围内的整数毫秒数。如果该字段未被传输(MSM1、MSM2、MSM3),则解码设备有责任使用粗略的参考站位置和星历数据来恢复它。 等效于FFh(255毫秒)的位模式表示无效值。
DF398 GNSS Satellite rough range modulo 1 millisecond 0 to (1-2 ^-10^) ms 2 ^-10^ms uint10 允许以1/1024毫秒(约300米)的精度恢复整个粗略范围。
DF399 GNSS Satellite rough Phaserange Rate ±8191 m/s 1 m/s int14 相位范围速率与相位范围的数学导数具有相同的符号。 与距离类似,特定信号可观测到的完整相位范围速率可以通过粗略相位范围速率(对给定卫星唯一)和精细相位范围速率的总和来构建(对与给定卫星对应的每个特定信号唯一)。 相当于2000h(-8192 m/s)的位模式表示无效值
DF404 GNSS signal fine Phaserange Rate ±1.6383 m/s 0.0001 m/s int15 给定信号的精细相位范围速率。全相位范围速率是该字段与卫星粗略相位范围速率(DF399)之和。 相当于4000h(-1.6384m/s)的位模式表示无效值。
DF405 GNSS signal fine Pseudorange with extended resolution ±(2 ^--10^--2 ^--29^) ms (Approx: ±292 m) 2 ^-29^ ms(Approx: 0.0006 m) int20 与DF400相同,但具有扩展的分辨率,除了等效于80000h(-2-10ms)的位模式表示无效值,而不是为DF400定义的无效模式。(DF400: 特定于给定卫星的每个信号。添加到字段DF397和DF398允许获得与给定信号对应的完整伪距可观测值。相当于4000h(-2 ^-10^ms)的位模式表示无效值)
DF406 GNSS signal fine Phaserange data with extended resolution ±(2 ^-8^--2 ^-31^) ms (Approx: ±1171 m) 2 ^-31^ ms(Approx: 0.00014 m) int24 与DF401相同,但具有扩展的分辨率,除了相当于8000000h(-2 ^-8^ms)的位模式表示无效值,而不是为DF401定义的无效模式。(DF401:类似于DF400,但指的是相位范围。在相位范围生成开始时,从原始全载波中删除了适当的整数周期数,以将其与相应的伪范围相匹配。 在接下来的时间段内,这个整数保持不变,直到检测到周期滑动,之后必须确定新的整数周期。在这种情况下,相关的GNSS相位范围锁定时间指示器(DF402)必须重置为零。 请注意,此处定义的相位范围与伪范围具有相同的符号。 某些电离层条件(或不正确的初始化)可能会导致相位范围和伪范围(相位范围-伪范围)之间的差异随着时间的推移而发散,这可能会导致该值超过定义的范围限制。在这种情况下,应重新初始化上述"整数周期数"。在这种情况下,相关的GNSS相位范围锁定时间指示器(DF402)应重置为零。 等于200000小时(-2-8m)的位模式表示无效值。)
DF407 GNSS Phaserange Lock Time Indicator with extended range and resolution. uint10 与DF402相同,但范围更广,分辨率更高(DF402:锁定时间指示器提供接收器对该卫星信号保持连续锁定的时间量的度量。如果在前一个测量周期内发生循环滑动,锁止指示器将重置为零。)
DF408 GNSS signal CNR with extended resolution 0.0625--63.9375 dB-Hz 2 ^-4^dB-Hz uint10 与DF403相同,但分辨率更高。 值"0"表示CNR测量值尚未计算或不可用。 CNR的可用性或不可用性不会影响其他可观测值的有效性。(DF403:GNSS CNR测量提供了卫星信号的载噪比估计值,单位为dB Hz。 值"0"表示CNR测量值未计算或不可用。 CNR的可用性或不可用性不会影响相应可观测值的有效性。)
DF409 IODS -- Issue Of Data Station 0-7 1 uint3 此字段保留用于将MSM与未来的站点描述(接收器、天线描述等)消息链接起来。 值"0"表示未使用此字段。
DF411 Clock Steering Indicator uint2 0--未应用时钟转向 ---- 在这种情况下,接收器时钟必须保持在±1 ms(约±300 km)的范围内 1--已应用时钟转向 ---- 在这种情况下,接收器时钟必须保持在±1微秒(约±300米)的范围内。 2--未知的时钟转向状态 3--保留
DF412 External Clock Indicator uint2 0--使用内部时钟 1--使用外部时钟,时钟状态为"锁定" 2--使用外部时钟,时钟状态为"未锁定",这可能表明外部时钟故障,传输的数据可能不可靠。 3--使用未知时钟
DF417 GNSS Smoothing Type Indicator bit1 1--使用无发散平滑 0--使用其他类型的平滑
DF418 GNSS Smoothing Interval bit3 GNSS平滑间隔是使用载波相位对伪距码相位测量值进行平均的积分周期 信息。 在卫星可见的整个期间内,无发散平滑可能是连续的。 注意:零值表示未使用平滑处理。
DF420 Half-cycle ambiguity indicator bit(1) 0--无半周期歧义。 1--半周期模糊 当传输带有未解析极性编码的相位范围时,软件应将该位设置为1。无法处理半周期模糊的接收软件应跳过此类相位范围可观测值。 如果极性分辨率迫使相位范围校正半个周期,则相关的GNSS相位范围锁定时间指示器(DF402、DF407)必须重置为零,这表明尽管持续跟踪,最终的相位范围仍经历了不连续性。

注释:
GNSS卫星信息相当复杂,除了上述公有语句之外,还有各个芯片厂商自己定义的私有语句,也是做测开必须掌握了解的,由于保密协议,无法介绍。还有一些RTCM公有语句,因为不常用(估计是我不常用,就不做介绍了),还有其他的星历信息,做伪距相位残差、载波等卫星算法可能会用到,我只是个刚入门的测试,还没有系统学习。至此结束吧,终于填完了一个坑

相关推荐
算法小白(真小白)2 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
Chinese Red Guest2 小时前
python
开发语言·python·pygame
骑个小蜗牛3 小时前
Python 标准库:string——字符串操作
python
xiaoshiguang33 小时前
LeetCode:222.完全二叉树节点的数量
算法·leetcode
爱吃西瓜的小菜鸡3 小时前
【C语言】判断回文
c语言·学习·算法
别NULL3 小时前
机试题——疯长的草
数据结构·c++·算法
TT哇3 小时前
*【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
java·算法·蓝桥杯