卫星定位协议简述-NMEA-0183协议

  • Embed
  • 3,635 clicked
  • NMEA协议由GPS模块发送输出数据给单片机系统/电脑串口/uCenter配置查看等,主要为输出数据;
  • 若需设置GPS配置参数,可以考虑采用UBX协议,主要为输入数据;

1. NMEA-0183 协议简介

NMEA - 0183 是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了 GPS/北斗导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。

NMEA-0183 协议采用 ASCII 码来传递 GPS 定位信息,我们称之为帧。

帧格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)

  1. "$":帧命令起始位
  2. aaccc:地址域,前两位为识别符(aa),后三位为语句名(ccc)
  3. ddd…ddd:数据
  4. "*":校验和前缀(也可以作为语句数据结束的标志)
  5. hh:校验和(check sum),$与*之间所有字符 ASCII 码的校验和(各字节做异或运算,得到校验和后,再转换 16 进制格式的 ASCII 字符)
  6. (CR)(LF):帧结束,回车和换行符
  • NMEA-0183 常用命令 如表所示:
序号 命令 说明 最大帧长
1 $GNGGA GPS/北斗定位信息 72
2 $GNGSA 当前卫星信息 65
3 $GPGSV 可见 GPS 卫星信息 210
4 $BDGSV 可见北斗卫星信息 210
5 $GNRMC 推荐定位信息 70
6 $GNVTG 地面速度信息 34
7 $GNGLL 大地坐标信息
8 $GNGLL 当前时间(UTC1)信息

上表为 NMEA-0183 常用命令表

注 1: 即协调世界时,相当于本初子午线(0 度经线)上的时间,北京时间比 UTC 早 8 个小时。

2. NMEA 0183协议解析(NMEA4.1)

NMEA-0183协议是目前GNSS接收机上使用最广泛的协议,大多数常见的GNSS接收机、GNSS数据处理软件、导航软件都遵守或者至少兼容这个协议。

原文地址:https://www.cnblogs.com/wind-under-the-wing/p/13997178.html

下面对其常用字段进行概述

序号 命令 说明 最大帧长
1 $XXGGA GPS定位信息 72
2 $XXGSA 当前卫星信息 65
3 $XXGSV 可见卫星信息 210
4 $XXRMC 推荐定位信息 70
5 $XXVTG 地面速度信息 34
6 $XXGLL 大地坐标信息  
7 $XXZDA 当前时间(UTC1)信息  

2.1. XXGGA (GPS 定位信息,Global Positioning System Fix Data)

此字段主要表示时间、经纬度位置、解算状态、卫星颗数、高程、差分延迟、基站号等相关信息,XX因模式的不同而不同

  1. 单GPS
    $GPGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*50
  2. 单BD
    $BDGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4
  3. 单GLONASS
    $GLGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4
  4. 多星联合定位
    $GNGGA,062938.00,3110.4700719,N,12123.2657056,E,1,25,0.6,58.9666,M,0.000,M,99,AAAA*4

$GNGGA 语句的基本格式如下(其中 M 指单位 M,hh 指校验和,CR 和 LF 代表回车换行,下同)

$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
  1. UTC 时间,格式为 hhmmss.ss;
  2. 纬度,格式为 ddmm.mmmmm(度分格式);
  3. 纬度半球,N 或 S(北纬或南纬);
  4. 经度,格式为 dddmm.mmmmm(度分格式);
  5. 经度半球,E 或 W(东经或西经);
  6. GPS 状态,0=未定位,1=非差分定位,2=差分定位;
  7. 正在使用的用于定位的卫星数量(00~12)
  8. HDOP 水平精确度因子(0.5~99.9)
  9. 海拔高度(-9999.9 到 9999.9 米)
  10. 大地水准面高度(-9999.9 到 9999.9 米)
  11. 差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为空)
  12. 差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为空)

举例如下:

$GNGGA,095528.000,2318.1133,N,11319.7210,E,1,06,3.7,55.1,M,-5.4,M,,0000*69

2.2. XXGSA(当前卫星信息)

GSA信息:模式、定位状态、用于解算卫星信息。

  1. 单GPS
    $GPGSA,M,3,25,14,15,18,31,27,09,21,22,12,1.5,0.9,1.3*30
  2. 单BD
    $BDGSA,M,3,141,143,144,146,147,148,149,150,2.7,1.7,2.2*2B
  3. 单GLONASS
    $GLGSA,M,3,47,58,55,46,53,57,56,1.7,1.1,1.3*2D
  4. 多星联合定位
    $GNGSA,M,3,27,03,16,21,06,19,31,13,23,1.0,0.6,0.822
    $GNGSA,M,3,141,142,143,144,147,148,150,1.0,0.6,0.810
    $GNGSA,M,3,47,56,55,46,53,44,57,1.0,0.6,0.829

$GNGSA 语句的基本格式如下:

$GNGSA,(1),(2),(3),(4),(5),(6)*hh(CR)(LF)
  1. 模式,M = 手动,A = 自动。
  2. 定位类型,1=未定位,2=2D 定位,3=3D 定位。
  3. 正在用于定位的卫星号(01~32)
  4. PDOP 综合位置精度因子(0.5-99.9)
  5. HDOP 水平精度因子 1(0.5-99.9)
  6. VDOP 垂直精度因子(0.5-99.9)

举例如下:

$GNGSA,A,3,14,22,24,12,,,,,,,,,4.2,3.7,2.1*2D
$GNGSA,A,3,209,214,,,,,,,,,,,4.2,3.7,2.1*21

注 1: 精度因子值越小,则准确度越高。

2.3. XXGSV(可见卫星数,GPS Satellites in View)

GSA信息:卫星数量、编号、信噪比(信号强度)、可见卫星信息

每条GSV语句最多可以显示4个可见卫星的信息,其他的卫星都会在下一条语句中输出显示。每种卫星系统都会单独显示,如下:GPS有3条GSV报文,北斗有2条GSV报文,GLONASS有3条GSV报文。

$GPGSV,3,1,09,19,46,206,41,16,55,015,43,31,24,120,37,06,82,060,4373

$GPGSV,3,2,09,27,82,183,45,21,15,061,33,23,47,268,43,03,72,228,44*72

$GPGSV,3,3,09,13,34,304,38,*49

$BDGSV,2,1,07,143,53,202,37,145,15,257,40,148,72,234,38,141,49,145,37*67

$BDGSV,2,2,07,151,24,048,41,150,70,327,38,147,77,113,39,*65

$GLGSV,3,1,09,47,07,193,46,43,46,101,50,59,28,309,45,49,28,305,43*68

$GLGSV,3,2,09,48,35,239,45,42,21,040,44,57,24,063,39,44,24,161,47*67

$GLGSV,3,3,09,58, 46,012,45,51

$GPGSV 语句的基本格式如下:

$GPGSV,  (1),(2),(3),...,(4),(5),(6),(7)*hh(CR)(LF)
  1. GSV 语句总数。
  2. 本句 GSV 的编号。
  3. 可见卫星的总数(00~12,前面的 0 也将被传输)。
  4. 卫星编号(01~32,前面的 0 也将被传输)。
  5. 卫星仰角(00~90 度,前面的 0 也将被传输)。
  6. 卫星方位角(000~359 度,前面的 0 也将被传输)
  7. 信噪比(00~99dB,没有跟踪到卫星时为空)。

注:每条 GSV 语句最多包括四颗卫星的信息,其他卫星的信息将在下一条$GPGSV 语句中输出。

举例如下:

$GPGSV,3,1,11,18,73,129,19,10,71,335,40,22,63,323,41,25,49,127,06*78
$GPGSV,3,2,11,14,41,325,46,12,36,072,34,31,32,238,22,21,23,194,08*76
$GPGSV,3,3,11,24,21,039,40,20,08,139,07,15,08,086,03*45

2.4. XXRMC(推荐定位信息,Recommended Minimum Specific GPS/Transit Data)

RMC信息:解状态、经纬度、地面速度、地面航向角、UTC时间、位置、速度、时间等信息。

  1. 单GPS
    $GPRMC,064457.90,A,3110.4691141,N,12123.2667676,E,0.157,63.0,300713,0.0,W,A05
  2. 单BDS
    $BDRMC,064457.90,A,3110.4691241,N,12123.2667666,E,0.157,63.0,300713,0.0,W,A*05
  3. 单GLONASS
    $GLRMC,064457.90,A,3110.4691141,N,12123.2667646,E,0.157,63.0,300713,0.0,W,A*05
  4. 双星或多星联合定位
    $GNRMC,064401.65,A,3110.4706987,N,12123.2653375,E,0.604,243.2,300713,0.0,W,A*3E

$GNRMC 语句的基本格式如下:

$GNRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)
  1. UTC 时间,hhmmss(时分秒)
  2. 定位状态,A=有效定位,V=无效定位
  3. 纬度 ddmm.mmmmm(度分)
  4. 纬度半球 N(北半球)或 S(南半球)
  5. 经度 dddmm.mmmmm(度分)
  6. 经度半球 E(东经)或 W(西经)
  7. 地面速率(000.0~999.9 节)
  8. 地面航向(000.0~359.9 度,以真北方为参考基准)
  9. UTC 日期,ddmmyy(日月年)
  10. 磁偏角(000.0~180.0 度,前导位数不足则补 0)
  11. 磁偏角方向,E(东)或 W(西)
  12. 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下:

$GNRMC,095554.000,A,2318.1327,N,11319.7252,E,000.0,005.7,081215,,,A*73

3. NMEA 示例数据包

3.1. XXGGA 示例数据

设备命令:microcom -s 115200 /dev/ttymxc1 | grep GGA

$GNGGA,025030.400,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*47
$GNGGA,025030.500,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*46
$GNGGA,025030.600,3016.6134500,N,12000.6081451,E,1,12,0.791,51.8582,M,6.9910,M,*45

主要数据:UTC时分秒、经纬度、GPS状态

3.2. XXRMC 示例数据

设备命令:microcom -s 115200 /dev/ttymxc1 | grep RMC

$GNRMC,034432.500,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*27
$GNRMC,034432.600,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*24
$GNRMC,034432.700,A,3016.6181806,N,12000.6207537,E,0.000,,110122,,,A,V*25

主要数据:UTC时分秒日月年、经纬度、定位状态、速度、航向角

3.3. XXGSA 示例数据

设备命令:microcom -s 115200 /dev/ttymxc1 | grep GSA

$GNGSA,A,1,,,,,,,,,,,,,1.190,0.822,0.860,3*3E
$GNGSA,A,3,101,114,116,126,,,,,,,,,1.190,0.822,0.860,4*3C
$GNGSA,A,3,4,16,26,27,29,31,,,,,,,1.190,0.822,0.860,1*05

3.4. XXGSV 示例数据

$GPGSV,2,1,8,3,20,272,,4,24,318,,16,55,256,,26,69,354,,*6F
$GPGSV,2,2,8,27,23,186,,29,17,43,,31,50,60,,32,,,,*5C
$GBGSV,3,1,9,101,45,138,33,110,48,230,,112,25,149,26,114,42,228,26,1*48
$GBGSV,3,2,9,116,81,53,20,124,58,345,25,126,36,57,,133,42,267,25,1*4B
$GBGSV,3,3,9,135,23,62,30,1*7E

GBGSV是哪种?https://www.pianshen.com/article/9570653904/

4. NMEA 查看卫星数量、信号强度、时间、坐标、GPS状态

4.1. NMEA 查看卫星数量

  • XXGSV:卫星数量、信号强度(信噪比、越大越好)
  • XXGGA:

4.2. NMEA 查看信号强度

  • XXGSV:卫星数量、信号强度(信噪比、越大越好)

4.3. NMEA 查看时间

  • XXGGA:UTC时分秒
  • XXRMC:UTC时分秒、UTC日月年

4.4. NMEA GPS状态

  • XXGGA:GPS状态(0=未定位,1=单点定位,2=伪距/SBAS,3=无效PPS,4=RTK固定,5=RTK浮动,6=正在估算,7=手动启动基准站,8=RTK宽巷解,9=伪距)
  • XXGSA:定位模式,A=自动手动2D/3D,M=手动2D/3D
  • XXGSA:定位类型,1=未定位,2=2D定位,3=3D定位
  • XXRMC:定位状态,A=有效定位,V=无效定位

发表评论

邮箱地址不会被公开。 必填项已用*标注