【通信协议-RTCM】MSM语句(2) - RINEXMSM7语句总结(重要!自动化开发计算卫星状态常用)
注释:
在工作中主要负责的是RTCM-MSM7语句相关开发工作,所以主要介绍的就是MSM7语句相关内容
1. 相位校准参考信号

2. MSM1、MSM2、MSM3、MSM4、MSM5、MSM6和MSM7的消息头内容
| DATA FIELD | DF NUMBER | DATA TYPE | NO. OF BITS | NOTES | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
单元掩码的大小不是固定的,而是在解码卫星和信号掩码后确定的。单元掩码的大小为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 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
4. MSM7信号数据内容
| DATA FIELD | DF NUMBER | DATA TYPE | NO. OF BITS | NOTES | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
| | | | | | ||||||||||||
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 | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | | | | 0表示它是给定物理时间和参考站ID的最后一个MSM | |||||||||||||||||||||||||
| | | | | | 实际GNSS卫星(GPS的PRN、GLONASS的“时隙号”等)到卫星掩码ID的精确映射是每个GNSS特有的(见MSM描述中每个GNSS的相应表格)。 一些ID值可能指特定的卫星,而一些ID值在本标准中可能表示为“保留”。这些ID将来可能会用于其他卫星,因此解码软件应确保它不会跳过这些比特,而是解码完整的GNSS卫星掩码,解码相应的可观测值,就像它们是指已知的卫星一样,但应避免使用它们,除非有新的卫星映射表可以将相应的ID映射到特定的卫星。 如果后面有ID=n的卫星数据,则相应的比特(比特数n)设置为1。如果ID=m的卫星的数据不在后面,则相应的比特(比特数m)设置为0。 | |||||||||||||||||||||||||
| | | | | | 实际信号标识符(与RINEX 3.01信号命名约定相对应)到信号掩码ID的精确映射对于每个GNSS都是特定的(见每个GNSS的MSM描述中的相应表格)。 一些ID值可能指特定的信号,而一些ID值在本标准中可能表示为“保留”。这些ID将来可能会用于其他信号,因此解码软件应确保它不会跳过这些比特,而是对完整的GNSS信号掩码进行解码,对相应的可观测值进行解码,就像它们指的是已知信号一样,但应避免使用它们,除非有新的信号映射表可以将相应的ID映射到特定的信号。 如果ID=n的信号(可观测)可用于至少一个发射的卫星,则相应的比特(数字n)设置为1,否则相应的比特设置为0。 | |||||||||||||||||||||||||
| | | | | | 该字段大小可变: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。 | |||||||||||||||||||||||||
| | | | | | 粗略距离可用于恢复给定卫星的完整可观测性。粗略范围需要18位,分为两个字段(DF397和DF398)。此字段包含卫星粗略范围内的整数毫秒数。如果该字段未被传输(MSM1、MSM2、MSM3),则解码设备有责任使用粗略的参考站位置和星历数据来恢复它。 等效于FFh(255毫秒)的位模式表示无效值。 | |||||||||||||||||||||||||
| | | | | | | |||||||||||||||||||||||||
| | | | | | 与距离类似,特定信号可观测到的完整相位范围速率可以通过粗略相位范围速率(对给定卫星唯一)和精细相位范围速率的总和来构建(对与给定卫星对应的每个特定信号唯一)。 相当于2000h(-8192 m/s)的位模式表示无效值 | |||||||||||||||||||||||||
| | | | | | 相当于4000h(-1.6384m/s)的位模式表示无效值。 | |||||||||||||||||||||||||
| | | | | | | |||||||||||||||||||||||||
| | | | | | 在接下来的时间段内,这个整数保持不变,直到检测到周期滑动,之后必须确定新的整数周期。在这种情况下,相关的GNSS相位范围锁定时间指示器(DF402)必须重置为零。 请注意,此处定义的相位范围与伪范围具有相同的符号。 某些电离层条件(或不正确的初始化)可能会导致相位范围和伪范围(相位范围-伪范围)之间的差异随着时间的推移而发散,这可能会导致该值超过定义的范围限制。在这种情况下,应重新初始化上述“整数周期数”。在这种情况下,相关的GNSS相位范围锁定时间指示器(DF402)应重置为零。 等于200000小时(-2-8m)的位模式表示无效值。) | |||||||||||||||||||||||||
| | | | | | | |||||||||||||||||||||||||
| | | | | | 值“0”表示CNR测量值尚未计算或不可用。 CNR的可用性或不可用性不会影响其他可观测值的有效性。(DF403:GNSS CNR测量提供了卫星信号的载噪比估计值,单位为dB Hz。 值“0”表示CNR测量值未计算或不可用。 CNR的可用性或不可用性不会影响相应可观测值的有效性。) | |||||||||||||||||||||||||
| | | | | | 值“0”表示未使用此字段。 | |||||||||||||||||||||||||
| | | | | | 1–已应用时钟转向 ---- 在这种情况下,接收器时钟必须保持在±1微秒(约±300米)的范围内。 2–未知的时钟转向状态 3–保留 | |||||||||||||||||||||||||
| | | | | | 1–使用外部时钟,时钟状态为“锁定” 2–使用外部时钟,时钟状态为“未锁定”,这可能表明外部时钟故障,传输的数据可能不可靠。 3–使用未知时钟 | |||||||||||||||||||||||||
| | | | | | 0–使用其他类型的平滑 | |||||||||||||||||||||||||
| | | | | | 在卫星可见的整个期间内,无发散平滑可能是连续的。 注意:零值表示未使用平滑处理。 | |||||||||||||||||||||||||
| | | | | | 1–半周期模糊 当传输带有未解析极性编码的相位范围时,软件应将该位设置为1。无法处理半周期模糊的接收软件应跳过此类相位范围可观测值。 如果极性分辨率迫使相位范围校正半个周期,则相关的GNSS相位范围锁定时间指示器(DF402、DF407)必须重置为零,这表明尽管持续跟踪,最终的相位范围仍经历了不连续性。 | |||||||||||||||||||||||||
注释:
GNSS卫星信息相当复杂,除了上述公有语句之外,还有各个芯片厂商自己定义的私有语句,也是做测开必须掌握了解的,由于保密协议,无法介绍。还有一些RTCM公有语句,因为不常用(估计是我不常用,就不做介绍了),还有其他的星历信息,做伪距相位残差、载波等卫星算法可能会用到,我只是个刚入门的测试,还没有系统学习。至此结束吧,终于填完了一个坑
相关文章:
【通信协议-RTCM】MSM语句(2) - RINEXMSM7语句总结(重要!自动化开发计算卫星状态常用)
注释: 在工作中主要负责的是RTCM-MSM7语句相关开发工作,所以主要介绍的就是MSM7语句相关内容 1. 相位校准参考信号 2. MSM1、MSM2、MSM3、MSM4、MSM5、MSM6和MSM7的消息头内容 DATA FIELDDF NUMBERDATA TYPENO. OF BITSNOTES Message Number - 消息编…...
ios CCUIFont.m
// // CCUIFont.h // CCFC // //#import <Foundation/Foundation.h>// 创建字体对象 #define CREATE_FONT(fontSize) [UIFont systemFontOfSize:(fontSize)]interface UIFont(cc) (void)logAllFonts;end // // CCUIFont.m // CCFC // //#import "CCUIFont.h&…...
调度子系统在特定时间执行
时序逻辑调度器设计模式允许您安排Simulink子系统在指定时间执行。以下模型说明了这种设计模式。 时序逻辑调度器图表包含以下逻辑: 时序逻辑调度器的关键行为 时序逻辑调度器图表包含两个状态,它们以不同的速率调度函数调用子系统A1、A2和A3的执行&…...
【QAC】Dashboard服务端如何配置
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决Dashboard服务端如何配置的问题。 2、 问题场景 客户想使用Dashboard,Dashboard服务端如何配置。 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境:Windows 64bit 3…...
深入理解Linux网络(四):TCP接收阻塞
TCP socket 接收函数 recv 发出 recvfrom 系统调用。 进⼊系统调⽤后,⽤户进程就进⼊到了内核态,通过执⾏⼀系列的内核协议层函数,然后到 socket 对象的接收队列中查看是否有数据,没有的话就把⾃⼰添加到 socket 对应的等待队列⾥…...
【iOS】内存五大分区
目录 堆(Heap)是什么五大分区栈区堆区全局/静态区常量区(即.rodata)代码区(.text) 函数栈堆和栈的区别和联系图解 OC语言是C语言的超集,所以先了解C语言的内存模型的内存管理会有很大帮助。C语言…...
Jupyter Notebook: 是一个强大的交互式计算
文章目录 引言Jupyter Notebook的原理基础使用安装与启动单元格(Cell)操作快捷键 高级使用魔术命令Markdown支持可视化版本控制 优缺点优点缺点 官网链接结论 引言 Jupyter Notebook是一个强大的交互式计算环境,特别适用于数据科学、机器学习…...
【C#学习笔记】变量、变量类型
在C#中,变量是存储数据的容器,每个变量都有其特定的数据类型,这决定了变量可以存储的数据类型和大小。以下是关于C#中变量的由浅入深的详细解释,并附带代码示例和解释: 基础概念 定义: 变量是存储数据的容…...
题解:T480718 eating
eating 题目背景 从前有个荣光的王国,小 A 是里面的国王,今天他要赐予他的子民以仓廪。 题目描述 在一条街上有 n n n 个饭店。小 A 站在这条街的最左端。 第 i i i 个饭店离这条街最左端的距离是 a i a_i ai,它所售卖的菜品的美味…...
MATLAB中matfile用法
目录 语法 说明 示例 创建 MAT 文件对象 启用对 MAT 文件的写访问权限 加载整个变量 将整个变量保存至现有 MAT 文件 加载和保存部分变量 确定变量大小 参数说明 局限性 提示 matfile的功能是访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。 …...
Spring之Spring Bean的生命周期
Spring Bean的生命周期 通过BeanDefinition获取bean的定义信息调用构造函数实例化beanBean的依赖注入处理Aware接口(BeanNameAware、BeanFactoryAware、ApplicationContextAware)Bean的后置处理器BeanPostProcessor-前置初始化方法(Initiali…...
OSINT 开源情报中的地理定位方法
了解 OSINT 中的地理定位技术、如何获取地理位置数据以及如何将地理定位用于各种调查场景。 OSINT 中的地理定位基础知识 OSINT 代表开源情报,指的是从免费公共来源合法收集的有关个人或组织的信息。这包括在互联网上以及书籍、公共图书馆报告、报纸文章、新闻稿、…...
Java面试题系列 - 第17天
Java中的代理模式与动态代理 背景说明:代理模式是一种结构型设计模式,用于在客户端和目标对象之间提供一个代理或占位符。在Java中,动态代理技术允许在运行时创建代理对象,这在AOP(面向切面编程)和RPC&…...
开发环境搭建
1、Ubuntu 系统设置 root 用户密码 新安装的ubuntu没有设置 root 用户密码,打开终端,输入 sudo passwd root 执行命令后依次输入密码 2、虚拟机设置网络适配器 3、Ubuntu 系统下搭建 FTP 服务器 sudo apt-get update sudo apt-get install vsftpd sudo apt-get install vim…...
【NLP】关于参数do_sample的解释
在自然语言处理(NLP)领域,特别是在使用神经网络模型进行文本生成时,do_sample是一个常见的参数,用于控制模型生成文本的方式。具体来说,do_sample参数决定模型是否采用随机采样(sampling&#x…...
Vbox虚拟机+Ubuntu motest测试drm
1. 效果演示 大家做学习drm的时候,没有硬件测试平台不方便测试,这里给大家演示下如何基于Vbox虚拟机Ubuntu测试drm的一些功能,先看下演示视频。 没有光标测试: demo_vwmfgx_test_drm 带有光标测试: demo_vwmfgx_drm_with_cursor 可以看到,有…...
ArcGIS Pro SDK (九)几何 15 转换
ArcGIS Pro SDK (九)几何 15 转换 文章目录 ArcGIS Pro SDK (九)几何 15 转换1 创建地理转换2 创建复合地理变换3 创建投影转换4 创建高压基准变换5 创建复合高压基准变换6 决定转换7 地图点 - 地理坐标字符串转换 环境࿱…...
Spring IOC DI --- 认识IOC DI
T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 认识Ioc & DIIoc是什么?DI是什么? 认识Ioc & DI 我们知道,Spring 是一个开源框架,让我们的开发更加简单.但是更加具体来说,实际上Spring 是包含了众多工具方法的Ioc容器 …...
常用的python程序汇总——入门级
只用于记录最近的一些日常程序。 目录 前言 一、文件和目录管理 1.读取文件结构 读取所有文件夹和文件 读取到N级子文件夹和文件 只读取到N级子文件夹 2.遍历文件并处理(复制、删除) 说明: 二、数据分析和处理 三、数据可视化 四、…...
被问到MQ消息已丢失,该如何处理?
在分布式系统中,消息中间件(如 RabbitMQ、RocketMQ、Kafka、Pulsar 等)扮演着关键角色,用于解耦生产者和消费者,并确保数据传输的可靠性和顺序性。尽管我们通常会采取多种措施来防止消息丢失,如消息持久化、…...
Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案
Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能强大的浏览器扩展…...
机器人抓取技能自动化:从仿真学习到现实迁移的实践指南
1. 项目概述与核心价值最近在机器人抓取领域,一个名为simpliolabs/manus-open-claw-skill-hunter-and-developer的项目引起了我的注意。乍一看这个标题,它像是一个开源工具或框架,核心围绕着“机械手开放爪具”的“技能猎人”与“开发者”。这…...
基于开源LLM构建私有化智能体:从意图解析到安全执行的工程实践
1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫giocaizzi/ralph-copilot。乍一看这个名字,可能会让人联想到微软的 GitHub Copilot,但它的定位和实现方式其实非常不同。简单来说,这是一个基于开源大语言模型ÿ…...
2025终极免费IDM激活方案:一键永久解锁下载管理神器
2025终极免费IDM激活方案:一键永久解锁下载管理神器 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(ID…...
Grasscutter命令生成器终极指南:如何5分钟上手原神私服管理
Grasscutter命令生成器终极指南:如何5分钟上手原神私服管理 【免费下载链接】GrasscutterCommandGenerator Command Generator and Gacha Banner Editor 项目地址: https://gitcode.com/gh_mirrors/gr/GrasscutterCommandGenerator Grasscutter命令生成器是一…...
Real-is-Sim框架:动态数字孪生在机器人控制中的创新应用
1. Real-is-Sim框架概述:动态数字孪生的创新实践在机器人控制领域,仿真到现实的迁移(sim-to-real)一直是个棘手难题。传统方法往往面临"仿真太完美,现实太复杂"的困境——在虚拟环境中训练的策略,…...
Ubuntu 20.04远程桌面翻车记:手把手教你从LightDM救回默认GNOME桌面
Ubuntu 20.04桌面环境救援指南:从LightDM回归GNOME的完整方案 那天下午,实验室的Ubuntu服务器突然变得陌生——熟悉的GNOME桌面消失了,取而代之的是一个简陋的登录界面。前一天还能流畅运行的深度学习模型,现在连Jupyter Noteboo…...
Godot引擎命令行插件GDShell:提升开发效率与自动化实践
1. 项目概述:当游戏引擎遇见命令行如果你是一位游戏开发者,尤其是使用Godot引擎的同行,那么你一定对编辑器里那个功能强大但有时略显“笨重”的场景树、资源面板和属性检查器又爱又恨。爱的是它们提供了可视化的创作环境,恨的是当…...
JUCE框架移植MDA经典音频插件:从VST2到现代跨平台开发实践
1. 项目概述:JUCE框架下的MDA插件遗产如果你在音频插件开发领域摸爬滚打过一段时间,尤其是对开源社区有所关注,那么“mda-plugins-juce”这个名字大概率会唤起你的一些记忆。这个由hollance维护的GitHub仓库,本质上是一个“移植”…...
从GMM到MDN:想给神经网络加上‘概率思维’?这份融合指南请收好
从GMM到MDN:赋予神经网络概率思维的工程实践指南 当我们需要预测一个复杂系统的行为时,单一的点估计往往显得力不从心。想象一下,在自动驾驶系统中,车辆需要预测前方行人的运动轨迹;或者在量化交易中,我们…...
