Главная - Обслуживание
Nmea протокол. Особенности протокола NMEA2000 и его использование

Ты наверное сейчас занят решением проблемы взлома очередного мега-супер-гипер сервака, но знаешь ли ты, что такое GPS и как с ним обращаться?! Если нет, то тебе сюда! В этой статье я расскажу тебе о том, как работают GPS приемники, как получить с них информацию, а так же как самому написать простенькую программу для работы с GPS-модулем.

GPS (Global Positioning System, Система Глобального Позиционирования) была введена в действие США в 1994 году. Состоит она из 24 спутников и наземных приемных комплексов, коим может являться и твой GPS-навигатор или GPS-модуль (в дальнейшем навигатор). Для точного определения координат твой навигатор должен видеть минимум 4 спутника. В недалеком прошлом точность определения координат вне территории США (а точнее для потребителей не из США) была искусственно снижена, но не так давно это ограничение было убрано и теперь ты можешь определять свое местоположение даже в тайге с точностью до нескольких метров.

На пальцах все это работает так: твой навигатор получает информацию с каждого из видимых спутников, которые являются для него как бы маяками. Внутри навигатора находится микропроцессор с зашитой в него программой, которая на основе полученных данных и высчитывает твое местоположение.

В настоящее время в продаже имеется огромное количество GPS-навигаторов и GPS-модулей для КПК и ноутбуков. GPS-навигатор это GPS-приемник с экраном, на котором отображается информация о твоем местоположении, а GPS-модуль – это GPS-приемник, который подключается к компьютеру и передает всю навигационную информацию программе, которая с ним работает. Все они в принципе отличаются только форм-фактором и принципиальных различий в работе не имеют. Но нас с тобой больше интересует каким же все таки образом он общается с компьютером и как вытащить из него информацию. Сейчас все расскажу и покажу.

Какого бы форм-фактора (COM, USB, BlueTooth и т.п.) не был GPS-модуль, он будет логически связан с компьютером через COM-порт, т.е. при подключении создается соединение по последовательному порту. Навигационная информация в большинстве случаев передается по протоколу NMEA. Это самый распространенный протокол передачи для GPS-модулей. Хотя есть и другие протоколы, но мы их рассматривать не будем.

Ну а теперь самое время узнать как же сделать софтину для работы со всем этим хозяйством. Скажу сразу, что мне не очень хочется сейчас объяснять как тыкать в кнопки в том же
VB, статья носит больше ознакомительный характер. Для тех кто в танке я объясню подобно процесс создания программы в следующих статьях.
Я освещу лишь наиболее важные моменты и я думаю у тебя все получится. Скажу сразу, что ваять прогу можно в любых языках программирования, лишь бы была возможность работы с последовательным портом и со строками.
Первое с чего нужно начать это с открытия COM-порта. Почти все приемники по умолчанию имеют установки: скорость 9600 бит/с, 8/N/1. Как только ты откроешь порт тебе сразу с интервалом в секунду будет приходить навигационная информация примерно такого вида:

$GPGGA,143345.264, 0936.23,N,06354.15,E, 0,06,0.0,230.6,M,0.0,M,0.0,0345*76
$GPRMC,143345.26, A,0936.23,N,06354.15, E,0.0,0.0,230306,0.0,E,A*45
$GPGSA,A,3,03, 04,05,07,11,12,0.0,0.0,0.0*Е2
$GPGSV,1,1,06,05,67,120,20*34

Теперь приступим к разбору:

Данные передаются в виде предложений. Формат предложений следующий:

$AAAAA[, <данные> ]*hh, где

$ — символ начала предложения (код 24h);
AAAAA — пятисимвольный адрес (имя) предложения;
[, <данные> ] — список полей данных разделенных запятыми (код 2Сh);
* — признак контрольной суммы (код 2Ah);
hh — контрольная сумма;
, — конечный ограничитель (коды 0Dh и 0Ah).

Типы полей данных.

Тип поля Обозначение Определение

Специальный формат полей

Статус A Поле одного символа. А= да, данные
достоверны, предупредительного сигнала
нет. V= нет, данные не достоверны, есть
сигнал предупреждения.
Широта llll.ll
градусы-минуты доли минуты. 2 знака

число знаков долей минуты. Если первый
знак градусов или минут отсутствует, то
его заменяют нулем с тем, чтобы




большое разрешение.
Долгота yyyyy.yy Поле постоянной/переменной длины:
градусы-минуты и доли минуты. 3 знака
градусов, 2 знака минут и переменное
число знаков долей минуты. Если первые
знаки или первый знак минут отсутствует,
то их заменяют нулем для того, чтобы
сохранить постоянное число знаков.
Децимальная точка и последующие знаки
долей минут являются дополнительными и
могут не использоваться, если не нужно
большое разрешение.
Время hhmmss.ss Поле постоянной/переменной длины: часы/минуты/секунды
и доли секунды. 2 знака часов, 2 знака
минут, 2 знака секунд и переменное число
знаков долей секунд. В качестве первого
знака часов, минут, секунд может быть
поставлен ноль, для сохранения
постоянного числа знаков. Если не
требуется высокая точность, то
децимальная точка и доли секунд могут
быть опущены.
Определенные поля Некоторые поля специально
предназначаются для размещения заранее
определенных постоянных величин, чаще
всего буквенных обозначений. Признаком
таких полей является наличие одного или
нескольких знаков.

Поля цифровых величин

Информационные поля

Примечания:

1. Пробелы могут быть использованы только в полях текстов изменяемой длины.

2. Отрицательный знак “-” (код 2Dh) является первым знаком поля, если в нем приводятся отрицательные величины. При использовании отрицательного знака в полях фиксированной длины их длина увеличивается на единицу. При положительных величинах знак опускается.

GGA – Данные определения места по GPS

Время место и данные относящиеся к обсервации.

$GPGGA,hhmmss.sss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

1. hhmmss.sss – время навигационных определений;
2. llll.ll,a – широта, N/S;
3. yyyyy.yy,a – долгота, E/W;
4. x – показатель качества обсервации: 0 = нет данных, 1 = обсервация получена, 2 = обсервация в дифференциальном режиме;
5. xx – число используемых спутников;
6. x.x – величина горизонтального геометрического фактора (HDOP);
7. x.x,M – высота антенны над уровнем моря (геоидом), м;
8. x.x,M – превышение геоида над эллипсоидом WGS84, м;
9. x.x – устаревание дифференциальных поправок, то есть время в секундах с момента получения последней дифференциальной поправки, нулевое поле используется в случае выключения дифференциального режима;
10. xxxx – идентификатор дифференциальной станции 0ё1023.

Время, дата, координаты и курс счисляемые аппаратурой.

$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxxxx,x.x,a,a*hh

Полями данного предложения являются:

1. hhmmss.ss – время;
2. A – статус (A/V);
3. llll.ll,a – широта, N/S;
4. yyyyy.yy,a – долгота, E/W;
5. x.x – скорость в узлах;
6. x.x – курс в градусах;
7. xxxxxx – дата: dd/mm/yy (день/месяц/год);
8. x.x,a – магнитное склонение в градусах, E/W;
9. a – индикатор режима: A = автономная обсервация, D = дифференциальный режим, N = данные недостоверны.

GSA – Фактор ухудшения точности, используемые для навигации спутники

$GPGSA,a,x,xx, … ,xx,x.x,x.x,x.x*hh

Полями данного предложения являются:
1. a – режим управления количеством определяемых координат: М = ручное, указан режим, А = автоматическое переключение;
2. x – режим работы: 1 = обсервация невозможна, 2 = определяются две координаты, 3 = определяются три координаты;
3. xx…xx – номера спутников используемых для решения навигационной задачи, количество полей равно количеству каналов приемника, для GPS используются номера 1ё32, для WAAS 33ё64, для ГЛОНАСС 65ё96;
4. x.x – общий геометрический фактор ухудшения точности (PDOP);
5. x.x – горизонтальный геометрический фактор ухудшения точности (HDOP);
x.x – вертикальный геометрический фактор ухудшения точности (VDOP).

GSV – Видимые спутники

Число спутников в зоне радиовидимости, номер спутника, угол возвышения, азимут и отношение сигнал/шум. Одно предложение может содержать информацию об 1 до 4 спутников, дополнительные данные о спутниках передаются в следующих предложениях. Номер предложения указывается в первых двух полях данных. Для спутниковых систем зарезервированы следующие номера: для GPS 1-32, для WAAS 33-64, для ГЛОНАСС 65-96.

$GPGSV,x,x,xx,xx,xx,xxx,xx, … ,xx,xx,xxx,xx*hh

Полями данного предложения являются:
1. x – общее число сообщений;
2. x – номер сообщения;
3. xx – общее число спутников в зоне радиовидимости;
4. xx – номер спутника;
5. xx – угол возвышения спутника, градусы 00-90;
6. xxx – азимут истинный, градусы 000-360;
7. xx – отношение сигнал/шум 00-99 дБ, если спутник не сопровождается не передается.

Примечание: поля 4, 5, 7 повторяются для 2, 3 и 4 спутников.

Ну вот теперь, имея описание протокола NMEA и драйвер прямые_руки.sys можешь приступать к построчному разбору пакетов и созданию мега программулины)))).

NMEA 0183 (от «National Marine Electronics Association ») - стандарт определяющий текстовый протокол связи морского (как правило, навигационного) оборудования (или оборудования, используемого в поездах) между собой. Стал особенно популярен в связи с распространением GPS-приёмников , использующих этот стандарт.

Общий вид строк в NMEA 0183

  • символ «$» или «!» (hex 24 или hex 21)
  • 5-буквенный идентификатор сообщения. Первые две буквы - идентификатор источника сообщения, следующие три буквы - идентификатор формата сообщения, согласно протоколу NMEA 0183 определённой версии.
  • список данных (буквы, цифры и точки), разделённых запятыми. Если какие-либо данные отсутствуют внутри строки, запятые всё равно ставятся (например «,»). Некоторые поля в конце строки могут отсутствовать вовсе.
  • символ «*».
  • восьмибитная XOR -сумма всех символов (включая «,» и «^») в строке между «$» и «*» приведенная к двум ASCII-символам в верхнем регистре для 16-ричного представления байта (0–9, A–F).
  • (hex 0D, hex 0A).

Максимальная длина сообщения ограничена 82 символами (NMEA 0183 rev 3.0)

Стандарт описывает более 250 идентификаторов NMEA-последовательностей. Стандарт определяет скорости обмена данными в 4800 бод. (Для скоростей в 38400 бод и выше есть расширенный стандарт NMEA-0183-HS).

Стандарт позволяет добавлять собственные идентификаторы последовательностей, что часто используется производителями для передачи дополнительной информации о работе устройства.

RMC-строка (частный пример)

$GPRMC,hhmmss.sss,A,GGMM.MM,P,gggmm.mm,J,v.v, b.b, ddmmyy, x.x, n,m*hh

Значение полей:

  • «GP» - идентификатор источника; в приведенном примере это GPS, «GL» - ГЛОНАСС , «GA» - Галилео , «GN» - ГЛОНАСС+GPS и т. п.
  • «RMC» - «Recommended Minimum sentence C»
  • «hhmmss.sss» - время фиксации местоположения по Всемирному координированному времени UTC : «hh» - часы, «mm» - минуты, «ss.sss» - секунды. Длина дробной части секунд варьируется. Лидирующие нули не опускаются.
  • «A» - статус: «A» - данные достоверны, «V» - недостоверны.
  • «GGMM.MM» - широта. 2 цифры градусов(«GG»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
  • «P» - «N» для северной или «S» для южной широты.
  • «gggmm.mm» - долгота. 3 цифры градусов(«ggg»), 2 цифры целых минут, точка и дробная часть минут переменной длины. Лидирующие нули не опускаются.
  • «J» - «E» для восточной или «W» для западной долготы.
  • «v.v» - горизонтальная составляющая скорости относительно земли в узлах . Число с плавающей точкой. Целая и дробная части переменной длины.
  • «b.b» - путевой угол (направление скорости) в градусах . Число с плавающей точкой. Целая и дробная части переменной длины. Значение равное 0 соответствует движению на север , 90 - восток , 180 - юг , 270 - запад .
  • «ddmmyy» - дата : день месяца, месяц, последние 2 цифры года (ведущие нули обязательны).
  • «x.x» - магнитное склонение в градусах (часто отсутствует), рассчитанное по некоторой модели. Число с плавающей точкой. Целая и дробная части переменной длины.
  • «n» - направление магнитного склонения: для получения магнитного курса магнитное склонение необходимо «E» - вычесть, «W» - прибавить к истинному курсу.
  • «m» - индикатор режима: «A» - автономный, «D» - дифференциальный, «E» - аппроксимация , «N» - недостоверные данные (часто отсутствует, данное поле включая запятую отсутствует в старых версиях NMEA).
  • «hh» - контрольная сумма.
  • - байт равен 0x0D.
  • - байт равен 0x0A.

Примеры RMC-строки

Пример 1

$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,*17

Значение полей:

  • 12 часов 55 минут 4,049 секунд UTC
  • «A» - достоверно
  • широта 55° 42,2389", северная
  • долгота 37° 41,6063", восточная
  • скорость 0,06 узлов

Описание NMEA протокола. Реализация в приемниках Garmin и GlobalSat

Введение

Национальная Ассоциация Морской Электроники (National Marine Electronics Association - NMEA) разработала специальный протокол для поддержания совместимости морского навигационного оборудования различных производителей. Этот NMEA протокол описывает не только данные, полученные с GPS приемников, но и измерения сонаров, радаров, электронных компасов, барометров и других навигационных устройств, использующихся на морских судах.

Интерфейс обмена данными большинства портативных GPS приемников реализован в соответствии с этой спецификацией. Большинство навигационных программ, которые обеспечивают отображение данных в реальном времени, поддерживают и «понимают» NMEA протокол. Эти данные содержат полные навигационные измерения GPS приемника - позицию, скорость и время. Все NMEA сообщения состоят из последовательного набора данных, разделенных запятыми. Каждое отдельное сообщение не зависит от других и является полностью «завершенным». NMEA cообщение включает заголовок, набор данных, представленных ASCII символами, и поле «чексуммы» для проверки достоверности переданной информации.

Заголовок стандартных NMEA сообщений состоит из 5 символов, из которых два первых определяют тип сообщения, а оставшиеся три - его название. Например, все GPS NMEA сообщения имеют префикс «GP». Сообщения, которые не описаны в спецификации NMEA, но реализованы в GPS приемниках в соответствии с общими правилами, имеют префикс «Р», дополненный тремя символами, уникальными для каждой компании. Например, «собственные» NMEA сообщения Garmin имеют префикс «PGRM», Magellan - «PMGN»
Каждое NMEA сообщение начинается с «$», заканчивается «n» («перевод строки») и не может быть длиннее 80-и символов. Все данные содержаться в одной строке и отделены друг от друга запятыми. Информация представлена в виде ASCII текста и не требует специального декодирования. Если данные не умещаются в выделенные 80 символов, то они «разбиваются» на несколько NMEA сообщений.

Такой формат позволяет не ограничивать точность и количество символов в отдельных полях данных. Например, дробная часть значения координат может быть представлена 3 или 4 знаками после запятой, но это никак не должно повлиять на работу программного обеспечения, которые выделяет нужные данные из сообщения по номеру поля. В конце каждого NMEA сообщения содержится поле «чексуммы», отделенное от данных символом «*». При необходимости оно может использоваться для проверки целостности и достоверности каждого принятого сообщения.

NMEA протокол поддерживает не только исходящие, но и входящие сообщения, с помощью которых, например, можно обновить или добавить путевые точки маршрута. Эти сообщения должны быть сформированы в строгом соответствии с форматом NMEA, в противном случае, они будут просто проигнорированы GPS приемником. Стоит отметить, что не все навигационные программы и модели приемников поддерживают этот режим, так как используют для загрузки точек и маршрутов фирменные протоколы производителей - Garmin, Magellan и т.д.

С момента создания, NMEA протокол претерпел несколько модификаций, связанных с добавлением новых полей и сообщений. Текущей версией, которую поддерживают большинство приемников, является версия 2.3, хотя уже опубликовано описание новой версии 3.0. Полная спецификация NMEA сообщений отсутствует в свободном доступе и ее нельзя официально скачать в электронном виде, Отдельные ее разделы, общее описание NMEA протокола и наиболее популярных сообщений можно найти в Интернете. Официально приобрести NMEA документацию можно на сайте www.nmea.org .

Список сообщений

NMEA протокол описывает большой список различных сообщений, из которых можно выделить два десятка сообщений, активно использующихся в навигационной аппаратуре. В связи с большой популярностью и простой представления данных, NMEA протокол нашел применение не только морской аппаратурой, но и в геодезических, бытовых и авиационных GPS приемниках.

  • AAM - Прибытие в путевую точку
  • ALM - Данные альманаха
  • АPA - Данные автопилота «А»
  • APB - Данные автопилота «В»
  • BOD - Азимут на пункт назначения
  • DTM - Используемый датум
  • GGA - Информация о фиксированном решении
  • GLL - Данные широты и долготы
  • GSA - Общая информация о спутниках
  • GSV - Детальная информация о спутниках
  • MSK - Передача управлению базовому приемнику
  • MSS - Статус базового приемника
  • RMA - Рекомендованный набор данных системы «Loran»
  • RMB - Рекомендованный набор навигационных GPS данных
  • RMC - Рекомендованный минимальный набор GPS данных
  • RTE - Маршрутная информация
  • VTG - Вектор движения и скорости
  • WCV - Данные скорости вблизи путевой точки
  • WPL - Данные путевой точки
  • XTC - Ошибка отклонения от трека
  • XTE - Измеренная ошибка отклонения от трека
  • ZTG - UTC время и оставшееся время до прибытия в точку назначения
  • ZDA - Дата и время.

Некоторые из NMEA сообщений могут содержать одинаковые поля данных, либо полностью содержать данные других, меньших по размеру, NMEA сообщений.

Содержание NMEA сообщений

GGA - информация о фиксированном решении.
Самое популярное и наиболее используемое NMEA сообщение с информацией о текущем фиксированном решении - горизонтальные координаты, значение высоты, количество используемых спутников и тип решения.

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,*47
где:

  • GGA - Заговолок
  • 123519 -UTC время 12:35:19
  • 4807.038, N - Широта, 48 градусов 7.038 минуты северной широты
  • 01131.000, Е - Долгота, 11 градусов 31.000 минуты восточной долготы
  • 1 - тип решение, StandAlone решение
    • 0 - нет решения,
    • 1 - StandAlone,
    • 2 - DGPS,
    • 3 - PPS,
    • 4 - фиксированный RTK,
    • 5 - не фиксированный RTK,
    • 6 - использование данных инерциальных систем,
    • 7 - ручной режим,
    • 8 - режим симуляции
  • 08 - количество используемых спутников
  • 0.9 - геометрический фактор, HDOP
  • 545.4, М - высота над уровнем моря в метрах
  • 46.9, М - высота геоида над эллипсоидом WGS 84
  • [пустое поле] - время прошедшее с момента получения последней DGPS поправки. Заполняется при активизации DGPS режима
  • [пустое поле] - идентификационный номер базовой станции. Заполняется при активизации DGPS режима.

GSA - общая информация о спутниках.
Это NMEA сообщение содержит список спутников, используемых в подсчете позиции и значения геометрических факторов DOPs, определяющих точность подсчете позиции. Параметры DOP определяются геометрическим расположением спутников на небе. Чем лучше «распределены» на небе спутники, тем меньше DOP и тем лучше точность позиции. Минимальное значение PDOP (= 1) соответствует ситуации, когда один спутник находится строго над пользователем, а другие 3 равномерно распределены вокруг на уровне горизонта. Значение PDOP вычисляется, как квадратный корень из суммы квадратов HDOP и VDOP.

$GPGSA,A,3,04,05,09,12,24,2.5,1.3,2.1*39
где:

  • GSA - заголовок
  • А - тип выбора между 2D и 3D решениями, Автоматический (A-auto, M-manual)
  • 3 - тип решения, 3D решение (1 - нет решения, 2 - 2D решение, 3 - 3D решение)
  • 04,05… - PRN коды используемых в подсчете позиции спутников (12 полей)
  • 2.5 - пространственный геометрический фактор, PDOP
  • 1.3 - горизонтальный геометрический фактор, HDOP
  • 2.1 - вертикальный геометрический фактор, VDOP

GSV - Детальная информация о спутниках
Это NMEA сообщение содержит детальную информацию для всех отслеживаемых навигатором GPS спутников. Исходя из ограничения в 80 символов в составе одного NMEA сообщения могут передаваться данные только для 4-х спутников. Соответственно для 12 спутников требуется 3 сообщения GSV.
Поле SNR (Signal to Noise Ration) содержит значения уровней, принимаемых со спутников, навигационных сигналов. Теоретически его значение может варьироваться от 0 до 99 и измеряется в dB. Фактически уровень сигнала лежит в диапазоне 25 …35 dB. Здесь стоит отметить, что данный параметр не является абсолютным и не подходит для сравнения чувствительности приемников разных моделей и производителей. В GPS навигаторах могут использоваться различные алгоритмы вычисления уровня принимаемого сигнала, что приводит к разным результатам при равной степени чувствительности приемников.
Для каждого видимого GPS спутника передается набор информации, включающий уровень сигнала, угол возвышения и азимут спутника. Количество этих «наборов» определяется общем количеством видимых спутников, значение которого передается в отдельном поле.

$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75
где:

  • GSV - заголовок
  • 2 - количество сообщений GSV в пакете
  • 1 - номер сообщения в пакете (от 1 до 3)
  • 08 - количество видимых спутников
  • 01 - номер спутника
  • 40 - угол возвышения, в градусах
  • 083 - азимут в градусах
  • 46 - SNR, уровень сигнала

RMC - рекомендованный минимальный набор GPS данных
Это NMEA сообщение содержит весь наборы, так называемых «PVT» данных. «PVT» - общепринятое сокращение от «position, velocity, time» (позиция, скорость, время).

$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

  • RMC - заголовок
  • 123419 - UTC время, 12:34:59
  • А - статус (А- активный, V- игнорировать)
  • 4807.038,N - Широта, 48 градусов 07.038 минут северной широты
  • 01131.000,Е - Долгота, 11 градусов 31.000 минута восточной долготы
  • 022.4 - Скорость, в узлах
  • 084.4 - Направление движения, в градусах
  • 230394 - Дата, 23 марта 1994 года
  • 003.1,W - Магнитные вариации

GLL - данные широты и долготы

NMEA сообщение со значением координат широты и долготы, и времени когда было вычислено это решение.

$GPGLL,4916.45,N,12311.12,W,225444,A,*31

  • GLL - заголовок
  • 4916.46,N - широта, 49 градусов 16.45 минут северной широты
  • 12311.12,W-долгота, 123 градуса 11.12 минут западной долготы
  • 225444 - Время фиксации в шкале времени UTC, 22:54:44

В OD - Азимут на пункт назначения
Это NMEA сообщение указывает азимут на точку назначения в режиме навигации.

$GPBOD,045.,T,023.,M,DEST,START*01

  • BOD - заголовок
  • 045.,T - истинное направление на точку
  • 023.,M - магнитное направление на точку
  • DEST - идентификационный номер конечной точки
  • START - идентификационный номер начальной точки

$GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20

  • RMB - заголовок
  • А - Тип данных, (А - активные, V - игнорировать)
  • 0.66,L - отклонение от трека. Параметра определен в морских милях. (L -влево, R-вправо)
  • 003 - идентификационный номер начальной точки
  • 004 - идентификационный номер конечной точки
  • 4917.24,N - значение широты конечной точки, 49 градусов 17.24 минуты северной широты
  • 12309.57,W - значение долготы конечной точки, 123 градуса 09.57 минут западной долготы
  • 001.3 - расстояние до точки, в морских милях
  • 052.5 - направление на точку
  • 000.5 - скорость, в узлах
  • V - информация о прибытии (А - прибытие, V - точка еще не достигнута)

RTE - Маршрутная информация

NMEA сообщение RTE выводит список путевых точек активного маршрута. Есть два типа сообщений RTE. В первом случае, отображаются все точки маршрута. Во втором, только список оставшихся точек, которые еще предстоит посетить при движении по маршруту. Учитывая, что в NMEA протоколе есть ограничение, по которому длина сообщение не должна превышать 80 символов, сообщение RTE может состоять из нескольких строк.

$GPRTE,2,1,c,0,W3IWI,DRIVWY,32CEDR,32-29,32BKLD,32-I95,32-US1,BW-32,BW-198*69

  • RTE - заголовок
  • 2 - общее количество сообщений для отображения полного списка данных
  • 1 - номер сообщения из общего списка
  • с - тип RTE сообщения (с - полный список точек маршрута, w - список точек, которые еще предстоит посетить)
  • 0 - идентификатор маршрута
  • W3IWI,DRIVWY,.. - список путевых точек

Особенности Garmin

Приемники Garmin поддерживают большинство сообщений NMEA, содержащие GPS измерения, координаты и время - GGA, GLL, GSA, GSV, RMC. А также навигационные сообщения - RMB, BOD

Для вывода этих сообщений необходимо в настройках приемника изменить интерфейс с «Garmin» на «NMEA» и возможно установить нужную скорость. Эту же скорость необходимо установить в навигационной программе в настройках последовательного порта к которому подключается навигатор.

К сожалению, приемники с USB -портом не поддерживают NMEA протокол, ограничивая его настройки только протоколом «Garmin»

Для вывода информации поступающей в последовательный порт компьютера можно воспользоваться терминальной программой Windows, либо одной из навигационных программ поддерживающих такую возможность.

Ниже представлен список NMEA сообщений приемника Garmin eMap, которые содержаться в составе одной эпохи.

$GPRMC,135412,A,5522.8973,N,03710.1401,E,0.0,0.0,190507,9.3,E,A*1F

$GPRMB,A,,A,A*0B

$GPGGA,135412,5522.8973,N,03710.1401,E,1,04,5.4,205.2,M,15.8,M,*4A

$GPGSA,A,3,08,13,23,25,5.7,5.4,1.0*3C

$GPGSV,3,1,11,02,15,267,00,03,11,085,45,04,05,236,00,08,39,233,00*77

$GPGSV,3,2,11,10,32,308,00,13,63,109,43,16,17,037,00,23,31,111,38*77

$GPGSV,3,3,11,24,09,343,00,25,66,077,44,27,69,229,00*46

$GPGLL,5522.8973,N,03710.1401,E,135412,A,A*43

$GPBOD,T,M,*47

$PGRME,19.1,M,15.2,M,25.3,M*15

$ PGRMZ,673, f,3*19

$ PGRMM, WGS 84*06

В дополнение к стандартным NMEA сообщениям, в приемниках Garmin реализован собственный набор сообщений, каждое из которых в заголовке содержит префикс «GRM», идентификатор «М» или «Z», определяющий тип данных, и один символ для названия.

PGRME - оценка ошибки позиционирования

$PGRME,15.0,M,45.0,M,25.0,M*1C

  • 15.0,М - оценка горизонтальной ошибки позиционирования, в метрах
  • 45.0,М - оценка вертикальной ошибки, в метрах
  • 25.0,М - эквивалентная сферическая ошибка позиционирования

PGRMZ - измерения высоты

$PGRMZ,93,f,3*21

  • 93,f - значение высоты, в фунтах
  • 3 - условия измерения позиции (2 - высота, определенная пользователем, 3 - высота, вычисленная GPS)

PGRMM - текущий датум

$PGRMM,NAD27 Canada*2F

  • NAD27 Canada - название текущего горизонтального датума

Особенности Sirf

GPS чипы компании «Sirf» используются в различном навигационном GPS оборудовании, начиная от обычных плат, заканчивая портативными и автомобильными GPS навигаторами. Но в отличие от навигаторов, они поддерживают только NMEA сообщения связанные с GPS измерениями, вычислением позиции и времени - GGA, GLL, GSA, GSV, RMC, VTG, ZDA.

«Sirf» поддерживает также несколько «входящих» NMEA сообщений, предназначенных для конфигурации и настройки различных параметров. В дополнение, в «Sirf» реализован собственный бинарный протокол, который позволяет изменить значительно больше настроек. Эти 5 «входящих» NMEA сообщений в соответствии с правилами начинают с префикса $PSFR. Все сообщения содержат фиксированный набор данных и заканчиваются символом «n» (перевод строки)

Для конфигурации параметров «Sirf» используется специальная программа «SirfTech». Настройка параметров NMEA сообщение осуществляется в отдельном пункте меню.

$GPGGA,100643.000,5522.9036,N,03710.1282,E,1,07,1.6,209.9,M,14.9,M,0000*52

$GPGSA,A,3,31,01,23,20,11,30,14,2.1,1.6,1.4*35

$GPGSV,3,1,12,20,84,187,41,01,49,067,46,23,46,238,45,31,45,073,50*7B

$GPGSV,3,2,12,11,25,194,34,13,16,240,04,15,319,30,17,14,273,21*7A

$GPGSV,3,3,12,30,10,026,33,14,05,063,22,05,04,009,25,25,03,195,*7F

$GPRMC,100643.000,A,5522.9036,N,03710.1282,E,0.16,119.11,200507,*0D

Как видно из приведенного примера, «заводские» установки содержат меньшее количество NMEA сообщений по сравнению с настройками Garmin. При необходимости этот набор можно расширить, установив период в недостающих NMEA сообщений.

$GPGGA,100833.000,5522.9076,N,03710.1270,E,1,07,1.3,222.4,M,14.9,M,0000*53

$GPGLL,5522.9076,N,03710.1270,E,100833.000,A*34

$GPGSA,A,3,31,01,23,20,11,30,17,2.1,1.3,1.6*31

$GPGSV,3,1,12,20,84,180,43,01,49,067,47,23,47,238,45,31,45,072,49*77

$GPGSV,3,2,12,11,24,193,26,13,16,240,26,04,15,319,24,17,13,273,31*78

$GPGSV,3,3,12,30,10,025,26,14,04,064,22,25,04,195,05,04,008,21*7C

$GPRMC,100833.000,A,5522.9076,N,03710.1270,E,0.18,4.86,200507,*00

$GPVTG,4.86,T,M,0.18,N,0.3,K*60

$GPZDA,100834.000,20,05,2007,*5A

PSFR100, PSFR102 - конфигурация последовательных портов

NMEA сообщение под номером 100 служит для установки порта А, сообщение 102 - порта В. Сообщение 100 имеет дополнительное поле, которое позволяет переключить интерфейс в бинарный Sirf протокол.

Соответственно, в бинарном протоколе существует команда, которая переключает порт обратно в NMEA формат. Прежде чем переключится в бинарный протокол, необходимо понять, если ли программа которая в дальнейшем позволит восстановить NMEA протокол.

$PSRF100,0,9600,8,1,0*0C

$PSRF102,9600,8,1,0*3C

  • PSRF100 - заголовок
  • 0 - параметр, указывающий в каком режиме был изменен протокол (0-Sirf, 1-NMEA)
  • 9600 - скорость порта (4800, 9600, 19200, 38400)
  • 8 - биты данных (7, 8)
  • 1 - стоп-биты (0,1)
  • 0 - парность (0 - нет, 1-нечетная, 2-четная)

PSFR101, PSFR104 - инициализация параметров приемника

NMEA сообщения под номерами 101 и 104 предназначены для инициализации параметров, предназначенных для GPS приема. Определение этих параметров может ускорить время захвата GPS спутников. Сообщение 101 устанавливает текущие координаты в формате XYZ, сообщение 104 - в формате BLH (долгота, широта).

$PSRF101,-2686700,-4304200,3851624,95000,497260,921,12,3*22

$PSRF104,37.3875111,-121.97232,0,95000,237759,922,12,3*3A

  • PSRF101 - заголовок
  • 37.3875111 - широта в градусах
  • -121.97232 - долгота в градусах
  • 0 - высота, в метрах
  • 95000 - сдвиг часов
  • 237759 - GPS время, в секундах
  • 922 - номер GPS недели
  • 12 - количество каналов
  • 3 - тип инициализации данных (1 - горячий старт, 2 - теплый старт, 3 - инициализация данных, 4 - холодный старт с полной очисткой данных, 8 - холодный старт с восстановлением заводских настроек)

PSFR103 - конфигурация генерации NMEA сообщений

Это NMEA сообщение позволяет установить или запросить период генерации каждого «исходящего» NMEA сообщения.

$PSRF103,05,00,01,01*20

  • PSRF103 - заголовок
  • 05 - название сообщения
    • 00 - GGA
    • 01 - GLL
    • 02 - GSA
    • 04 - RMS
    • 05 - VTG
  • 00 - режим (0 - установка периода, 1 - запрос)
  • 01 - период, в секундах (0-255)
  • 01 - наличие чексуммы (0- да, 1 - нет)

Результаты эксперимента

В условия нормальной видимости спутников, приемник Garmin eMap выдает следующий набор NMEA сообщений:

$GPRMC,104644,A,5522.8965,N,03710.1389,E,0.0,0.0,200507,9.3,E,A*16

$GPRMB,A,,A,A*0B

$GPGGA,104644,5522.8965,N,03710.1389,E,1 ,07 ,1.2,186.6,M,15.8,M,*44

$GPGSA,A,3,01,04,13,16,20,23,31,2.1,1.2,1.7*35

$GPGSV,3,1,10 ,01,34,070,48,04,28,311,40,11,10,190,00,13,32,249,41*7E

$GPGSV,3,2,10 ,16,11,111,40,20,68,142,50,23,64,247,49,25,21,196,00*70

$GPGSV,3,3,10 ,30,05,012,00,31,36,055,52*7D

$GPGLL,5522.8965,N,03710.1389,E,104644,A,A*40

$GPBOD,T,M,*47

$PGRME,6.0 ,M,7.7,M,9.8,M*29

$PGRMZ,612,f,3*1E

$PGRMM,WGS 84*06

$GPRTE,1,1,c,*37

Из анализа сообщений видно, что в на текущий момент приемником отслеживается 10 (GSV) спутников, из которых 7 (GGA) используются в подсчете позиции. Горизонтальная ошибка позиционирования при этом равняется 6 метрам (RME), а индикатор типа решения - 1 (GGA)

Если создать условиях, при которых GPS сигнал не будет приниматься, то сообщения GGA будут содержать «пустые» поля, а индикатор типа решения примет значение 0 (GGA)

$GPGGA,0 ,00,M,M,*66

$GPGSA,A,1,,*1E

В «нормальном» режиме сообщения RMB и BOD содержат пустые поля. После того, как в качестве конечной точки назначения была выбрана путевая точка «Дорога», эти поля «наполнились» данными. Как следует из анализа сообщение, расстояние до точки - 1.620 миль, азимут движения - 6.3 градуса (BOD). При этом, азимут сообщений BOD и RMB отличается на 0.1 градус.

$GPRMB,A,0.00,R,Дорога ,5524.501,N,03710.445,E,1.620 ,6.4 ,V,A*59

$GPBOD,6.3 ,T,357.0,M,Дорога,*74

После того, как для навигации был выбран маршрут «Home» в списке сообщения RTE отобразился список всех путевых точек маршрута. А в сообщении RMВ - идентификационные номера начальной и конечной (очередной) точек маршрута.

$GPRTE,1,1,c,HOME,SLOBODA,IERUSALIM,INSTITUT*01

$GPRMB,A,9.99,R,SLOBOD,IERUSAL,5555.237,N,03649.976,E,34.346,340.6,V,A*1F

Заключение

В большинстве случаев, пользователю не нужно, да и не интересно знать, какие данные и в каких полях передаются. Большинство навигационных программ «разбирают» данные NMEA сообщений и представляют их в удобном для пользователя виде - графики, схемы, таблицы и т.п.

Особый интерес представляют NMEA сообщения для пользователей, которые хотели бы провести исследования GPS данных, вычислить оценку полученных измерений, либо проанализировать поведения навигационных приемников в различных условиях. Есть целый ряд программ, с помощью которых можно решать эти задачи.

Н о все же, для глубокого анализа GPS данных, формат NMEA не предназначен, так как не содержит так называемые «сырые» измерения - псевдодальности, фазы, допплер. Каждый производитель навигационной аппаратуры имеет свой «открытый» или «закрытый» протокол, который выводит эту информацию

NMEA - это простой и понятный формат, который позволяет не только обеспечить обмен данными между GPS приемниками и навигационными программами, но и дает пользователям некоторое представление о принципах работы спутниковой навигационной аппаратуры

NMEA 0183 – текстовый протокол связи, используемый в приемных модулях GPS. Этот стандарт был создан для связи морского навигационного оборудования. Протоколом предусмотрена передача текстовых команд и сообщений посредством ASCII символов. Таким образом, для приема сообщений достаточно использовать последовательный интерфейс UART, при этом все сообщения можно передавать непосредственно на компьютер, используя для этого COM-порт, но не забывая о необходимости преобразования уровней сигналов.

Модуль GPS передает сообщения разного формата, содержащие различный набор данных: широта и долгота, скорость, курс, время, количество спутников и т.д. Сообщения передаются последовательно и делятся на несколько видов, формат каждого вида сообщений содержит в своих полях строго определенную информацию. Рассмотрим подробней общую структуру сообщений, которые выдает модуль GPS.

$ - с этого символа начинается каждое сообщение

Далее следует идентификатор из 5 текстовых символов. Первые две буквы обозначают тип навигационной системы, например «GP» - GPS или «GL» - Глонасс и т.д. Следующие 3 символа – это идентификатор формата сообщения, который полностью определяет содержимое последующих переданных данных. Например «RMC» - это рекомендованный минимум данных, в котором содержится информация о времени и дате, широте и долготе, скорости, курсе и магнитном отклонении в градусах (может отсутствовать). Или «GSA» , здесь будут переданы данные о спутниках. Структура основных типов сообщений будет рассмотрена ниже.

Затем следует «,» - запятая, после которой уже непосредственно идет тело сообщения с различными данными, которые отделяются друг от друга такой же запятой. Если передаваемое число не целое, то разделителем между целой и дробной частями служит точка «.» .

Конец тела сообщения обозначается символом «*» . Далее следует контрольная сумма всех символов, содержащихся между «$» и «*», то есть всего тела сообщения, включая и сами данные и идентификаторы в начале сообщения. Контрольная сумма вычисляется как XOR (исключающее ИЛИ) всех шестнадцатеричных кодов ASCII символов сообщения.

И в самом конце каждого сообщения обязательно следуют символы перевода строки

Рассмотрим назначение и структуру различных типов сообщений.

RMC – рекомендованный минимум навигационных данных. Сообщение содержит минимально необходимое количество информации. Это данные о широте и долготе, дате и времени, скорости. Для многих задач большего и не надо, например, в модуле Quectel L50 я отключил передачу всех других типов сообщений, поскольку информация о спутниках и уровне их сигналов мне абсолютно не нужна. А прием излишней информации требует усложнения программы обработки этих данных. Структура сообщения такая:

$GPRMC, hhmmss.sss ,A, ddmm.mmmm ,N, ddmm . mmmm , E ,v.v, c . c , ddmmyyyy ,x.x,n, m *hh

Это сообщение содержит следующие данные:

  • GPRMC – спутниковая система GPS, идентификатор сообщения RMC
  • hhmmss.sss – время (по Гринвичу), где hh – часы, mm – минуты, ss.sss – секунды
  • A – данные достоверны или V – данные недостоверны. Символ A в сообщении будет при уверенном приеме сигналов со спутников, необходимом для вычисления данных о местоположении. Символ V будет, когда приемник не увидит спутников или когда количество найденных спутников недостаточно для уверенного расчета координат. Например, если вы включите модуль GPS где-то панельном доме и на удалении от окон, скорее всего вы увидите символ V в принятом сообщении.
  • ddmm.mmmm – широта, градусы и минуты
  • N или S – север или юг. Полушарие, в котором вы находитесь. Если вы находитесь в Австралии, то покажет S . У меня в Екатеринбурге модуль GPS выдает N .
  • ddmm.mmmm – долгота, градусы и минуты
  • E или W – западное или восточное полушарие
  • v.v – скорость в узлах
  • c . c – курс над землей в градусах. При движении строго на север будет 0 градусов.
  • ddmmyyyy – дата
  • x.x – магнитное склонение
  • n – направление магнитного склонения. По этим двум последним параметрам ничего разъяснить не смогу. Например, мой модуль GPS Quectel L50 при приеме в квартире на окне эти данные не показывал вовсе, просто пропускал.
  • m – режим навигации: N – недостоверные данные, A – автономный, D – дифференциальный

Вот пример сообщения RMC:

$GPRMC,105954.000,A,3150.6731,N,11711.9399,E,0.00,96.10,250313,A*53

  • Время по Гринвичу 10ч 59м 54сек
  • A – данные достоверны
  • Широта 31 градус и 50.6371 минут
  • N – северная
  • Долгота 117 градусов 11.9399 минут
  • E – восточная
  • Скорость 0.00 узлов
  • Курс 96.1 градусов
  • Дата 25 марта 2013 года
  • Данные о магнитном склонении отсутствуют
  • Режим – автономный
  • Контрольная сумма символов сообщения 0×053

Здесь необходимо отметить один нюанс. Данные о широте и долготе содержат дробную часть минут, которая вовсе не соответствует количеству «секунд», поскольку является десятичной дробью. Те программы для работы с GPS, которые я пробовал, показывают координаты на карте точно. Но если ввести эти числа в строку поиска Google maps, то местоположение на карте получится в нескольких километрах от действительного. При вводе полученных координат в этом случае необходимо поделить дробную часть широты и долготы на 60, чтобы перевести эти числа в «секунды». При первом подключении модуля Quectel L50 и вводе полученных координат широты и долготы в строку поиска Google maps, я получил положение на карте со значительной погрешностью, на карте обозначилось место где-то в районе Уралмаша.

Вот еще некоторые типы сообщений, используемые в данном протоколе:

  • VTG - истинное направление курса и скорость относительно земли
  • GGA - данные о последнем определении местоположения
  • GSA - данные об активных спутниках
  • GSV - данные о видимых спутниках, их положении и номерах, а также уровне сигнала
  • GLL - данные о широте, долготе и времени
  • ZDA - данные о времени и дате

Я не стал подробно разбирать из чего состоит каждое сообщение, ссылка на документ с описанием протокола приведена в конце статьи. Конкретный тип GPS модуля может передавать не все данные из приведенных. Можно отключить или включить передачу различных типов данных, а также настроить период их выдачи. Для настройки модуля существуют специальные команды, которые начинаются с идентификатора $PSRFxxx , где xxx определяет тип и формат команды, точно так же как в исходящих сообщениях.

Например, команда $PSRF100,0,9600,8,1,0*0C задает протокол обмена и настраивает параметры последовательного порта.

  • $PSRF100 – идентификатор команды собственного протокола SIRF
  • 0 – бинарный протокол SIRF, 1 – протокол NMEA
  • 9600 – скорость бит/сек
  • 8 бит данных
  • 1 стоп-бит
  • 0 – проверка на четность отключена

Команда $PSRF103,00,00,02,01*26 настраивает параметры вывода различных типов сообщений модуля:

  • $PSRF103 – идентификатор команды собственного протокола SIRF
  • далее после запятой идут две цифры, которые определяют тип настраиваемого сообщения:00 - GGA
    01 - GLL
    02 - GSA
    03 - GSV
    04 - RMC
    05 - VTG
  • следующие две цифры настраивают порядок выдачи сообщений, например:00 - периодически
    01 - по запросу
  • следующие цифры задают период выдачи сообщений в секундах:00 = Off (сообщения отключены)
    1-255 – интервал между сообщениями данного типа в секундах
  • далее включается/отключается передача контрольной суммы в сообщении NMEA, передаваемом модулем:00 – передача контрольной суммы отключена
    01 – контрольная сумма передается
  • после символа “*”, как и в исходящем сообщении NMEA, передаются контрольная сумма и символы перевода строки.

Вот и все, что хотелось вкратце изложить о протоколе NMEA 0183 и командах управления модулем на чипсете SIRF. Более подробно расшифровка всех этих сообщений и команд приведена, например, в описании протокола модуля Quectel L50, который можно загрузить по ссылке ниже.



 


Читайте:



Плавная прокрутка в браузерах Плавная прокрутка в яндекс браузере плагин

Плавная прокрутка в браузерах Плавная прокрутка в яндекс браузере плагин

Для просмотра страниц в интернете существует опция плавной прокрутки. Она позволяет передвигаться по странице вверх и вниз более гладко и ровно. В...

Английским телефонным будкам подарили вторую жизнь Красные телефонные будки в лондоне на английском

Английским телефонным будкам подарили вторую жизнь Красные телефонные будки в лондоне на английском

Известный дизайн будки, в которой располагался уличный телефон, принадлежит Джайлсу Гилберту Скотт. Красная чугунная будка была впервые...

Бесплатные файлообменники — как залить фото и получить ссылку на картинку Сервис для хранения изображений

Бесплатные файлообменники — как залить фото и получить ссылку на картинку Сервис для хранения изображений

Здравствуйте, уважаемые читатели блога сайт. Каждый из вас общаясь на форумах, в социальных сетях, создавая там свои официальные странички...

Как вырезать человека в фотошопе

Как вырезать человека в фотошопе

Создание коллажей стало очень популярным способом творчества. Для этого применяются графические редакторы, с помощью которых можно вырезать фон,...

feed-image RSS