Головна - Обслуговування
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 - ідентифікатор диференціальної станції 01023.

Час, дата, координати і курс апаратури.

$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 використовуються номери 132, для WAAS 3364, для ГЛОНАСС 6596;
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 включає заголовок, набір даних, представлених 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

  • 93f - значення висоти, в фунтах
  • 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» - Глонассі т.д. Наступні три символи – це ідентифікатор формату повідомлення, який повністю визначає вміст наступних переданих даних. Наприклад "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, який можна завантажити за посиланням нижче.



 


Читайте:



Як правильно виставити таймінги оперативної пам'яті?

Як правильно виставити таймінги оперативної пам'яті?

Оперативна пам'ять працює за керуючими сигналами від контролера пам'яті, який розташований у північному мосту чипсета (Intel) або безпосередньо...

Установка накрутила на навігатор і комп'ютер

Установка накрутила на навігатор і комп'ютер

Якщо вам необхідно встановити карти на Garmin навігатор, ви звернулися за адресою. Нижче розглянемо кілька способів, як це зробити. Так...

Поміняти пароль на сервері майнкрафт через особистий кабінет та в клієнті

Поміняти пароль на сервері майнкрафт через особистий кабінет та в клієнті

Гра майнкрафт може зацікавити будь-якого гравця, тому що в ній можна створити свій власний індивідуальний казковий і...

Що таке акустичний кабель

Що таке акустичний кабель

У професійній роботі зі звуком дуже важливо розуміти основні принципи комутації різних видів обладнання, це дозволяє легше і швидше.

feed-image RSS