Анализ данных стандартных предложений NMEA, отправленных приемниками GNSS
The nmeaParser
Система object™ анализирует данные из некоторых стандартных предложений NMEA (Национальной ассоциации морской электроники), которые отправляются с приемника GNSS (Глобальной навигационной спутниковой системы). Предложения NMEA, которые нуждаются в разборе, должны соответствовать NMEA 0183® Стандартная версия 4.1.
Для анализа данных из предложений NMEA:
Создайте nmeaParser
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
The nmeaParser
Системный объект выводит массив структур, соответствующих значениям, извлеченным из заданных предложений NMEA.
возвращает pnmea
= nmeaParsernmeaParser
Системный объект, pnmea
со свойствами по умолчанию, которые извлекают данные из этих сообщений NMEA: RMC, GGA и GSA. Порядок массивов структур в извлеченных выходных данных также: RMC, GGA и GSA.
возвращает pnmea
= nmeaParser('MessageIDs', msgID)nmeaParser
Системный объект, pnmea
, который извлекает данные из сообщений NMEA, заданных с помощью идентификаторов сообщений. Задайте msgID
как "RMC"
, "GGA"
, "GSA"
, "GSV"
, "VTG"
, "GLL"
, "GST"
, "ZDA"
, и "HDT"
, или комбинация этих идентификаторов (для примера: ["VTG","GLL","HDT"]
). Порядок определения идентификаторов сообщений определяет порядок расположения массивов структур в извлеченных выходных данных. Значение по умолчанию ["RMC","GGA","GSA"]
.
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
MessageIDs
- Идентификаторы сообщений предложений NMEA для извлечения данных["RMC","GGA","GSA"]
(по умолчанию) | RMC
| GGA
| GSA
| GSV
| VTG
| GLL
| GST
| ZDA
| HDT
Идентификаторы сообщений предложений NMEA, которые соответствуют стандарту NMEA 0183, из которого необходимо извлечь данные. Можно задать несколько идентификаторов сообщений как массив строк для извлечения данных из предложений NMEA.
Типы данных: char
| string
[
анализирует данные и возвращает массив структур, где каждая структура соответствует одному идентификатору сообщения. Последовательность, заданная для выходных аргументов, должна быть той же последовательностью, что и для идентификаторов сообщений при создании rmcData
,ggaData
,gsaData
,vtgData
,gllData
,gstData
,gsvData
,zdaData
,hdtData
] = pnmea(rawData
)nmeaParser
Системный объект.
rawData
- данные NMEA, полученные из приемника GNSSДанные NMEA, соответствующий стандарту NMEA 0183, полученные от приемника GNSS.
Типы данных: string
| char
rmcData
- Данные, извлеченные из предложения RMCДанные, извлеченные из предложения RMC. Структура output содержит информацию, проанализированную из предложения RMC вместе со статусом анализа. Если во входных данных найдено несколько предложений RMC, возвращается массив структур. Для получения дополнительной информации см. RMC Sentences.
ggaData
- Данные, извлеченные из предложения GGAДанные, извлеченные из предложения GGA. Структура output содержит информацию, проанализированную из предложения GGA вместе со статусом анализа. Если во входных данных найдено несколько предложений GGA, возвращается массив структур. Для получения дополнительной информации смотрите GGA Sentences.
gsaData
- Данные, извлеченные из предложения GSAДанные, извлеченные из предложения GSA. Структура output содержит информацию, проанализированную из предложения GSA вместе со статусом анализа. Если во входных данных найдено несколько предложений GSA, возвращается массив структур. Для получения дополнительной информации смотрите GSA Sentences.
vtgData
- Данные, извлеченные из предложения VTGДанные, извлеченные из предложения VTG. Структура output содержит информацию, проанализированную из предложения VTG вместе со статусом анализа. Если во входных данных найдено несколько предложений VTG, возвращается массив структур. Для получения дополнительной информации смотрите VTG Sentences.
gllData
- Данные, извлеченные из предложения GLLДанные, извлеченные из предложения GLL. Структура output содержит информацию, проанализированную из предложения GLL вместе со статусом анализа. Если во входных данных найдено несколько предложений GLL, возвращается массив структур. Для получения дополнительной информации смотрите GLL Sentences.
gstData
- Данные, извлеченные из предложения GSTДанные, извлеченные из предложения GST. Структура output содержит информацию, проанализированную из предложения GST вместе со статусом анализа. Если во входных данных найдено несколько предложений GST, возвращается массив структур. Для получения дополнительной информации смотрите GST Sentences.
gsvData
- Данные, извлеченные из предложения GSVДанные, извлеченные из предложения GSV. Структура output содержит информацию, проанализированную из предложения GSV вместе со статусом анализа. Полная спутниковая информация доступна в нескольких структурах gsvData. Каждая структура gsvData может иметь не более четырех спутниковых данных. Для получения дополнительной информации смотрите GSV Sentences.
zdaData
- Данные, извлеченные из предложения ZDAДанные, извлеченные из предложения ZDA. Структура output содержит информацию, проанализированную из предложения ZDA вместе со статусом анализа. Если во входных данных найдено несколько предложений ZDA, возвращается массив структур. Для получения дополнительной информации смотрите ZDA Sentences.
hdtData
- Данные, извлеченные из предложения HDTДанные, извлеченные из предложения HDT. Структура output содержит информацию, проанализированную из предложения HDT вместе со статусом анализа. Если во входных данных найдено несколько предложений HDT, возвращается массив структур. Для получения дополнительной информации смотрите HDT Sentences.
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
Извлеките данные из предложений NMEA, которые получаются от приемника GNSS.
Извлечение данных из предложения RMC
Создайте системный объект nmeaParser путем определения идентификатора сообщения «RMC».
pnmea = nmeaParser("MessageID","RMC");
Предоставьте предложение RMC, полученное от приемника GNSS, в качестве входных и извлеченных данных.
unparsedRMCLine='$GNRMC,143909.00,A,5107.0020216,N,11402.3294835,W,0.036,348.3,210307,0.0,E,A*31';
rmcData = pnmea(unparsedRMCLine)
rmcData = struct with fields:
TalkerID: "GN"
MessageID: "RMC"
FixStatus: 'A'
Latitude: 51.1167
Longitude: -114.0388
GroundSpeed: 0.0185
TrueCourseAngle: 348.3000
UTCDateTime: 21-Mar-2007 14:39:09.000
MagneticVariation: 0
ModeIndicator: 'A'
NavigationStatus: "NA"
Status: 0
Извлечение данных из нескольких типов сообщений NMEA
Предоставьте GGA, GSA и предложения RMC в качестве входов.
unparsedGGALine = ['$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69']; unparsedGSALine = ['$GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30']; unparsedRMCLine = ['$GPRMC,111357.771,A,5231.364,N,01324.240,E,10903,221.5,020620,000.0,W*44'];
Создайте строковые массивы, чтобы включить три предложения
rawNMEAData = [unparsedGGALine ,newline, unparsedGSALine ,newline, unparsedRMCLine]
rawNMEAData = '$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69 $GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30 $GPRMC,111357.771,A,5231.364,N,01324.240,E,10903,221.5,020620,000.0,W*44'
Однако примите во внимание, что вы должны извлечь данные только из предложений GGA и GSA. Поэтому создайте системный объект nmeaParser 'pnmea' и задайте идентификаторы сообщений 'GGA' и 'GSA' в качестве строковых массивов.
pnmea=nmeaParser("MessageIDs",["GGA","GSA"]);
Задайте выходные аргументы для всех трех предложений, чтобы извлечь данные как структуры.
[ggaData,gsaData] = pnmea(rawNMEAData)
ggaData = struct with fields:
TalkerID: "GP"
MessageID: "GGA"
UTCTime: 11:13:57.771
Latitude: 52.5227
Longitude: 13.4040
QualityIndicator: 1
NumSatellitesInUse: 12
HDOP: 1
Altitude: 0
GeoidSeparation: 0
AgeOfDifferentialData: NaN
DifferentialReferenceStationID: NaN
Status: 0
gsaData = struct with fields:
TalkerID: "GP"
MessageID: "GSA"
Mode: "A"
FixType: 3
SatellitesIDNumber: [1 2 3 4 5 6 7 8 9 10 11 12]
PDOP: 1
VDOP: 1
HDOP: 1
SystemID: NaN
Status: 0
Вышеописанный выход показывает, что только предложения GGA и GSA извлекаются на основе идентификаторов сообщений, заданных в качестве входов.
Представьте другое предложение GGA в качестве дополнительного входов и извлеките данные. В этом случае не требуется изменять системный объект, так как идентификатор сообщения не изменился.
unparsedGGALine1='$GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'
unparsedGGALine1 = '$GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'
rawNMEAData = [unparsedGGALine ,newline, unparsedGSALine ,newline, unparsedGGALine1]
rawNMEAData = '$GPGGA,111357.771,5231.364,N,01324.240,E,1,12,1.0,0.0,M,0.0,M,,*69 $GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30 $GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47'
[ggaData,gsaData] = pnmea(rawNMEAData)
ggaData=1×2 struct array with fields:
TalkerID
MessageID
UTCTime
Latitude
Longitude
QualityIndicator
NumSatellitesInUse
HDOP
Altitude
GeoidSeparation
AgeOfDifferentialData
DifferentialReferenceStationID
Status
gsaData = struct with fields:
TalkerID: "GP"
MessageID: "GSA"
Mode: "A"
FixType: 3
SatellitesIDNumber: [1 2 3 4 5 6 7 8 9 10 11 12]
PDOP: 1
VDOP: 1
HDOP: 1
SystemID: NaN
Status: 0
Состояние 0 указывает, что данные были успешно проанализированы.
Извлечение данных из предложения GSV
Создайте системный объект nmeaParser путем определения идентификатора сообщения «GSV».
pnmea = nmeaParser("MessageID","GSV");
Предоставьте предложение GSV, полученное от приемника GNSS, в качестве входных и извлеченных данных.
unparsedGSVLine='$GPGSV,3,3,10,32,69,205,41,46,47,215,39*79';
gsvData = pnmea(unparsedGSVLine)
gsvData = struct with fields:
TalkerID: "GP"
MessageID: "GSV"
NumSentences: 3
SentenceNumber: 3
SatellitesInView: 10
SatelliteID: [32 46]
Elevation: [69 47]
Azimuth: [205 215]
SNR: [41 39]
SignalID: NaN
Status: 0
Извлечение данных из нескольких предложений GSV
Предоставьте несколько предложений GSV в качестве входов.
unparsedGSVLine1 = '$GPGSV,3,1,10,01,,,31,03,28,325,40,10,,,33,12,20,047,30*70'; unparsedGSVLine2 = '$GPGSV,3,2,10,14,88,028,42,22,39,299,48,25,,,25,31,79,289,46*49'; unparsedGSVLine3 = '$GPGSV,3,3,10,32,69,205,41,46,47,215,39*79';
Создайте строковые массивы для включения трех предложений.
CRLF = [char(13),newline]; unparsedGSVLines = [unparsedGSVLine1,CRLF, unparsedGSVLine2, CRLF, unparsedGSVLine3];
Создайте системный объект nmeaParser 'pnmea', задайте идентификатор сообщения 'GSV' и извлеките данные.
pnmea = nmeaParser("MessageIDs","GSV"); gsvData = pnmea(unparsedGSVLines)
gsvData=1×3 struct array with fields:
TalkerID
MessageID
NumSentences
SentenceNumber
SatellitesInView
SatelliteID
Elevation
Azimuth
SNR
SignalID
Status
Чтение данных из журнала NMEA
Считайте данные из выборки журнала NMEA, чтобы данные могли быть проанализированы с помощью системного объекта nmeaParser.
Пример файла журнала nmeaLog.nmea
, который включен в этот пример.
f = fopen('nmeaLog.nmea'); unParsedNMEAdata = fread(f); pnmea = nmeaParser("MessageIDs",["RMC","GGA"]); [rmcStruct, ggaStruct] = pnmea(unParsedNMEAdata)
rmcStruct=1×9 struct array with fields:
TalkerID
MessageID
FixStatus
Latitude
Longitude
GroundSpeed
TrueCourseAngle
UTCDateTime
MagneticVariation
ModeIndicator
NavigationStatus
Status
ggaStruct=1×9 struct array with fields:
TalkerID
MessageID
UTCTime
Latitude
Longitude
QualityIndicator
NumSatellitesInUse
HDOP
Altitude
GeoidSeparation
AgeOfDifferentialData
DifferentialReferenceStationID
Status
Поле статуса, отображаемое вместе с извлеченными значениями в каждой структуре output, может использоваться для определения статуса анализа:
Status: 0
- Предложение действительно (проверка контрольной суммы успешна, и извлеченные данные соответствуют запрошенному идентификатору сообщения)
Status: 1
- Недопустимая контрольная сумма предложения, подлежащего анализу
Status: 2
- Запрошенное предложение не найдено во входных данных
Примечание
Если значение недоступно в вход предложении, соответствующий выход значение отображается как «NA» для строки значений и «NaN» для числовых значений.
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
FixStatus | Возможные значения:
Тип данных: |
Широта | Широта в степенях. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в степенях. Восток считается положительным. Тип данных: |
GroundSpeed | Скорость над землей в метрах в секунду (м/с) Тип данных: |
TrueCourseAngle | Курс по земле в степенях. Тип данных: |
UTCDateTime | Дата и время UTC Тип данных: |
MagneticVariation | Значение магнитного изменения. Направление W рассматривается как отрицательное Тип данных: |
ModeIndicator | Возможные значения:
Тип данных: |
NavigationStatus | Возможные значения:
Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
UTCTime | Время UTC ( Тип данных: |
Широта | Широта в степенях. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в степенях. Восток считается положительным. Тип данных: |
QualityIndicator | Возможные значения:
Тип данных: |
NumSatellitesInUse | Количество используемых спутников. Это может отличаться от числа рассматриваемых спутников. Тип данных: |
HDOP | Горизонтальное разведение точности Тип данных: |
Высота | Высота над средним уровнем моря в метрах Тип данных: |
GeoidSeparation | Различие между эллипсоидом и средним уровнем моря в метрах Тип данных: |
AgeOfDifferentialData | Возраст дифференциальных коррекций Тип данных: |
DifferentialReferenceStationID | Идентификатор станции, обеспечивающей дифференциальные коррекции Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
Способ | Возможные значения:
Тип данных: |
FixType | Возможные значения:
Тип данных: |
SatellitesIDNumber | Номера спутников (массив 12 байт). Пустые поля будут отображаться следующим Тип данных: |
PDOP | Разведение положения точности Тип данных: |
VDOP | Вертикальное разведение точности Тип данных: |
HDOP | Горизонтальное разбавление точности Тип данных: |
SystemID | Идентификатор системы GNSS, определенный NMEA Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
NumSentences | Общее количество предложений. Полная спутниковая информация доступна в нескольких предложениях GSV. В этом поле указывается общее количество Тип данных: |
SentenceNumber | Номер предложения для сейчас проанализированной линии GSV Тип данных: |
SatellitesInView | Общее количество спутников в поле зрения Тип данных: |
SatelliteID | Идентификационные номера спутников, заданные как вектор-строка размера 1-by-N, где N - количество спутниковой информации, доступной в одном предложении. Максимально допустимое значение N равно 4. Тип данных: |
Повышение | Повышение высоты в степени, заданное как вектор-строка размера 1-by-N, где N - количество спутниковой информации, доступной в одном предложении. Максимально допустимое значение N равно 4. Максимальное значение повышения» составляет 90 степени. Тип данных: |
Азимут | Азимут в степени, заданный как вектор-строка размера 1-by-N, где N - количество спутниковой информации, доступной в одном предложении. Максимально допустимое значение N равно 4. Значение области значений Азимута составляет [0-359] степени. Тип данных: |
ОСШ | Отношение сигнал/шум в дБ-Гц, заданное как вектор-строка размера 1-by-N, где N - количество спутниковой информации, доступной в одном предложении. Максимально допустимое значение N равно 4. Значение области значений ОСШ составляет [0,99] дБ. Тип данных: |
SignalID | Идентификатор сигнала, соответствующий SatelliteID. Это значение отображается только в том случае, если предложения соответствуют стандарту NMEA 0183, версия 4.1. В противном случае отображается значение Тип данных: |
Возможные значения SignalID и соответствующего канала сигнала перечислены в этой таблице.
Система | TalkerID, отображаемый в проанализированных данных | SatelliteID | SignalID | Канал сигнала |
---|---|---|---|---|
GPS | GP |
| 0 | Все сигналы |
1 | L1 C/A | |||
2 | L1 P (Y) | |||
3 | L1 М | |||
4 | L2 P (Y) | |||
5 | L2C-M | |||
6 | L2C-L | |||
7 | L5-I | |||
8 | L5-Q | |||
ГЛОНАСС | ГК |
| 0 | Все сигналы |
1 | G1 C/A | |||
2 | G1 P | |||
3 | G2 C/A | |||
4 | ГЛОНАСС (М) G2 П | |||
ГАЛИЛЕО | GA |
| 0 | Все сигналы |
1 | E5a | |||
2 | 5 миллиардов евро | |||
3 | E5a и E5b | |||
4 | E6-A | |||
5 | E6-BC | |||
6 | L1-A | |||
7 | L1-BC |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
UTCTime | Время UTC Тип данных: |
UTCDay | День UTC Тип данных: |
UTCMonth | Месяц UTC Тип данных: |
UTCYear | Год UTC Тип данных: |
LocalZoneHours | Часы локальной зоны в диапазоне от Тип данных: |
LocalZoneMinutes | Локальная зона в минутах от Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
Широта | Широта в степенях. Север рассматривается положительным. Тип данных: |
Долгота | Долгота в степенях. Восток считается положительным. Тип данных: |
UTCTime | Время UTC Тип данных: |
DataValidity | Статус валидности данных:
Тип данных: |
PositioningMode | Возможные значения:
Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
TrueCourseAngle | Курс по земле (true) в степенях Тип данных: |
MagneticCourseAngle | Курс по земле (магнитный) в степенях Тип данных: |
GroundSpeed | Скорость над землей в метрах в секунду (м/с) Тип данных: |
ModeIndicator | Возможные значения:
Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
UTCTime | Время UTC Тип данных: |
RMSStdDeviationOfRanges | Значение СРК стандартного отклонения областей значений в метрах. Тип данных: |
StdDeviationSemiMajorAxis | Стандартное отклонение большой полуоси оси в метрах Тип данных: |
StdDeviationSemiMinorAxis | Стандартное отклонение малой полуразмерной оси в метрах Тип данных: |
OrientationSemiMajorAxis | Ориентация больших полуосей оси, в степени Тип данных: |
StdDeviationLatitudeError | Стандартное отклонение ошибки широты, в метрах Тип данных: |
StdDeviationLongitudeError | Стандартное отклонение ошибки долготы в метрах Тип данных: |
StdDeviationAltitudeError | Стандартное отклонение ошибки высот в метрах Тип данных: |
Имя поля, отображаемое в структуру output после завершения анализа | Описание |
---|---|
TalkerID | Идентифицируйте тип устройства, которое передает данные. Для примера, для приемника GPS, TalkerID Тип данных: |
MessageID | Тип сообщения NMEA - Тип данных: |
TrueHeadingAngle | Курс в степенях относительно истинного севера Тип данных: |
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.