DOI https://doi.org/10.46845/2541-8254-2022-4(36)-7-7
УДК 629.05:004.057.4
РАЗРАБОТКА АНАЛИЗАТОРА ДАННЫХ, ПЕРЕДАВАЕМЫХ ПО ПРОТОКОЛУ NMEA ОТ НАВИГАЦИОННОГО ПЛОТТЕРА
SIMRAD CP50
П. С. Клочков, курсант 4-го курса e-mail: blind-pilot08@yandex.ru ФГБОУ ВО «Калининградский государственный технический университет» «Балтийская государственная академия рыбопромыслового флота»
Д. В. Холоденин, старший преподаватель, e-mail: holodenin@bgarf.ru ФГБОУ ВО «Калининградский государственный технический университет»
В статье приведены краткие выдержки из произведенного обзора и анализа информации по используемым в навигационном судовом оборудовании интерфейсам и стандартам, посредством которых на протокольном уровне передаются навигационные данные. Исследовались сигналы на последовательном интерфейсе NMEA навигационного плоттера Simrad CP50. В результате этих исследований были даны обоснования и произведен выбор элементной базы для разрабатываемого анализатора навигационных данных. Разработаны аппаратная и программная части устройства, проведена проверка работоспособности устройства.
Ключевые слова: анализатор данных, протокол NMEA, плата Arduino Nano, стандарты передачи данных, навигационный плоттер, физический интерфейс, Bluetooth-модуль, программный код
ВВЕДЕНИЕ
NMEA (от «National Marine Electronics Association», «Национальная Ассоциация Морской Электроники») или IEC 61162-1/2 - стандарт, определяющий текстовый протокол связи морского (как правило, навигационного) оборудования между собой. NMEA стал особенно популярен в связи с распространением GPS/GLONASS-приёмников, использующих этот стандарт. Протокол позволяет передавать такие типы данных, как курс, скорость, координаты, глубина, скорость ветра, дата и время, данные о маршруте и многие другие.
В настоящее время этот протокол применяется почти во всём навигационном оборудовании на судах, практически вытеснив аналоговые каналы передачи (например, сельсины). Линии передачи на его основе обладают преимуществом: по одной и той же линии возможна передача данных разных типов, что уменьшает число проводных линий и в итоге упрощает схему подключения.
Но тем не менее это одновременно является и недостатком данного протокола. Во время установки или замены оборудования или при поиске неисправности может
появиться необходимость узнать, что за данные передаются в конкретной линии. Для этого окажется недостаточно обычного мультиметра или даже переносного осциллографа, ведь они смогут определить только амплитуду или форму сигнала, но не передаваемую в нем информацию (рисунок 1).
Для этого потребуется специальное устройство, способное дешифровать, обработать и представить данные в понятном человеку виде.
Рисунок 1 - Пример осциллограммы сигнала NMEA 0183, снятого с последовательного порта Simrad CP50: заметно, что сигнал носит импульсный характер, но передаваемая информация
неизвестна
ОБЪЕКТ ИССЛЕДОВАНИЯ
Объектом исследования является анализатор данных, который может интерпретировать сигналы физического уровня и переводить их на протокольный уровень формата NMEA. Анализатор данных NMEA возможно реализовать как в программном виде, т. е. отдельной программой, запускаемой на персональном компьютере, так и в виде независимого устройства со своим экраном и необходимой периферией.
В данной работе предметом исследования является проверка возможности реализации анализатора данных протокола NMEA на общедоступной элементной базе в виде компактного устройства, которое удобно использовать в ограниченном пространстве в помещениях с навигационным оборудованием, при минимальных затратах в процессе изготовления устройства подобного анализатора.
ЦЕЛЬ И ЗАДАЧИ ИССЛЕДОВАНИЯ
Целью работы является создание устройства анализа данных, передаваемых по протоколу NMEA от навигационного плоттера Simrad CP50.
Для достижения поставленной цели решались следующие задачи:
- обзор информации по теме НИР;
- анализ собранной информации;
- обоснование и выбор элементной базы;
- разработка анализатора данных NMEA;
- проведение экспериментов при проверке работоспособности.
МЕТОДЫ ИССЛЕДОВАНИЯ
В ходе выполнения работы преимущественно применялись эмпирические методы исследования. На этапах сбора и анализа информации изучались примеры существующих анализаторов данных, передаваемых посредством протокола NMEA. Учитывались их стоимость, габариты, доступность на рынке, а также доступная техническая информация. Примеров оказалось не много. Можно выделить два наиболее интересных устройства:
- «USG-2 NMEA 0183 USB Converter» компании «Actisence» [1];
- «X300 Compact NMEA Tester» компании «AMI Marine» [2].
Первое устройство предназначено для работы в паре с компьютером, что представляет неудобство. Монтаж/демонтаж оборудования или поиск неисправности в навигационных приборах может происходить в ограниченных пространствах, где даже ноутбук, устройство довольно габаритное, будет просто неудобным в использовании. Второе устройство лишено такого недостатка. Для его работы не требуется компьютер, а данные отображаются на встроенном экране, кроме того, оно может работать в режиме осциллографа.
В большей части информация в открытых источниках несет рекламный характер, но есть и полезные для исследования сведения [3-5].
Далее по тексту кратко о протоколе NMEA 0183 и стандартах физического уровня, совместно с которыми он применяется. В рамках протокола NMEA разрешается передавать символы в кодировке ASCII:
• печатные - с кодами от 20 до 7E (в шестнадцатеричном формате);
• непечатаемые - «Возврат каретки» (англ. Carriage Return, ASCII-код: 0D) и «Перевод строки» (англ. Line Feed, ASCII-код: 0A).
Согласно протоколу, информация передается не непрерывно, а блоками так называемыми «предложениями» или «строками» (англ. Sentences) через равные промежутки времени (обычно раз в секунду или раз в полсекунды).
Каждая строка начинается символом «$», за которым следует идентификатор источника данных (англ. Talker ID), обычно состоящий из двух латинских букв. Также допустимо вместо этого идентификатора передавать последовательность «--», что означает его отсутствие. Далее передается мнемоника, определяющая формат данных (англ. Mnemonic code of identifying the data type).
После этого следуют поля данных, разделенные запятыми. Данные могут быть целочисленными, дробными или текстовыми.
Следом за данными передается знак «*» (ASCII-код: 2A) и контрольная сумма (англ. Checksum field). Контрольная сумма определяется как «исключающее ИЛИ» всех 8-битных символов, расположенных между «$» и и «*», не включая эти символы. Шестнадцатеричное значение старших 4 бит и младших 4 бит преобразуются в два ASCII символа (0-9, A-F (верхний регистр)). Старший символ передается первым. Контрольная сумма передается во всех сообщениях.
Завершается строка символами «Возврат каретки» и «Перевод строки».
На физическом уровне допускается применение протокола UART и стандартов RS-232 и RS-422 [6].
UART (Universal Asynchronous Receiver/Transmitter) - универсальный последовательный асинхронный протокол передачи данных. Для передачи сообщения линия выходит из дежурного состояния (логическая единица) путем передачи стартового бита (стартовый бит всегда логический ноль), после чего передается последовательность битов сообщения и бит контроля ошибок передачи (бит четности), если заранее определено, что при передаче осуществляется контроль возникновения ошибок, затем передается стоповый бит (всегда логическая единица), и линия возвращается в дежурное состояние. Пример передачи одного сообщения по UART показан на рисунке 2.
Рисунок 2 - Пример передачи сообщения по протоколу UART
При этом возможно изменение некоторых деталей этого протокола: допускается изменять длину сообщения, использовать или не использовать контроль ошибок, изменять
длительность стартового и стопового битов, а также задавать различную скорость работы. Впрочем, для передачи сигналов NMEA 0183 применяется следующая конфигурация: длина сообщения 8 бит, длительность стартового и стопового битов равна длительности информационных битов, без контроля ошибок, скорость передачи 4800 бит/с для протокола NMEA 0183 и 38400 бит/с для протокола NMEA 0183-HS.
Стандарты RS-232 и RS-422 устанавливают требования к параметрам сигналов и среде их распространения. В качестве среды распространения используется двухпроводная линия. Параметры сигналов: логическому нулю соответствует положительное напряжение (+3..+15 В для RS-232 и +2..+10 В для RS-422), логической единице - отрицательное (-3..-15 В для RS-232 и -2..-10 В для RS-422) [6, 7].
Однако не все производители следуют этим стандартам, например, используемый в исследованиях навигационный плоттер Simrad CP50 на выходе формирует сигналы с напряжениями 0 В для логической единицы и 5 В для логического нуля, что тем не менее может быть совместимо с приемниками навигационной информации, реализующими RS-232 или RS-422.
Таким образом, проектируемое устройство должно принимать данные по UART в соответствии со стандартами RS-232 и RS-422 на скоростях до 38400 бит/с и отображать их в наглядной форме.
РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЯ
На начальном этапе разработки проводился обзор информации на предмет существования схожих устройств. Упоминаний в научных публикациях не обнаружено, рассматривается только применение самого протокола NMEA [8]. Зарубежные компании предлагают несколько устройств со схожим функционалом без подробностей об их схемотехнике, некоторые модели можно найти в продаже на российском рынке. Так как подобные устройства относятся к вспомогательному, специализированному оборудованию для сервисных служб, работающих с морским навигационным оборудованием, поэтому информация в основном распределена по специализированным форумам. Цену на устройства в основном необходимо уточнять у продавцов. Из найденной доступной информации ниже представлен список для примерного сравнения подобных устройств:
1. AMI Marine X300 Compact NMEA Tester - представляет собой малогабаритное устройство с экраном. Реализует функции монитора NMEA-сигнала и осциллографа общего назначения. Позволяет сохранять осциллограммы и записи NMEA-сигнала на SD-карту. Питание от встроенного аккумулятора, возможна зарядка от USB. Цена на сентябрь 2022: 27500 р.
2. NMEA Diagnostics Tool NMR183 - устройство оборудовано экраном, реализует функции монитора NMEA-сигнала, есть возможность записи сигнала на SD-карту. Питание - от батарей. Цена: неизвестна, под заказ, необходимо уточнять у менеджеров.
3. Zinnos NMEA0183 Tester ZNT-300 - реализует те же функции, что и первое устройство (осциллограф общего назначения, монитор NMEA, возможность записи на SD-карту, питание от аккумулятора и зарядка по USB), наблюдается даже визуальное сходство. Цена на сентябрь 2022: 37571 р.
В результате проведенного исследования сформулированы требования и даны обоснования для выбора элементной базы, на основе которой было разработано устройство анализа данных NMEA.
Устройство было решено реализовать на основе:
1) Bluetooth-модуля AT-09 - для передачи данных и их отображения на экране телефона через специальное приложение-терминал;
2) Микросхемы MAX485 - для преобразования уровней напряжения;
3) Платы Arduino Nano (главным компонентом которой является микроконтроллер ATmega328P) - для задания более сложной логики работы устройства и обеспечения
возможности изменения скорости передачи данных непосредственно в процессе работы.
Bluetooth-модуль AT-09, конечно, имеет возможность изменения скорости работы своего UART-интерфейса, но это производится с помощью AT-команд. Их нужно передавать по UART, на передачу таких команд с телефона через беспроводное соединение модуль реагировать не будет.
Применение микроконтроллера позволяет задать произвольную логику работы устройства. Для платы Arduino Nano есть возможность открыть два UART-интерфейса: один аппаратный и один программный, что как раз подходит для того, чтобы подключить MAX485 и Bluetooth-модуль, причем для них можно задать различные скорости передачи, которые можно менять во время работы. Одновременно с этим к другим его цифровым выводам общего назначения можно подключить кнопки с целью управления режимами работы устройства и светодиоды для индикации.
Микросхема MAX485 [9] представляет собой приемник и передатчик интерфейса RS-485 в одном корпусе. Этот стандарт, хотя и имеет отличия от RS-232 и RS-422, но применение данной микросхемы будет уместно ввиду того, что уровни напряжений, формируемые передатчиком, равны +5 В для логического нуля и -5 В для логической единицы, что находится в допустимых пределах указанных выше стандартов, а приемник распознает уровни напряжений выше +0,2 В как логический ноль и ниже -0,2 В как логическую единицу. Кроме того, для работы микросхемы не требуются дополнительные компоненты обвязки, в ней присутствует встроенная защита от перегрева и короткого замыкания, а также возможность электронного включения/отключения приемника и передатчика.
В ходе экспериментов разных модификаций разрабатываемого устройства осуществлялись контрольные замеры сигналов на физическом уровне. Проводились наблюдения за температурой элементов и компонентов, стабильностью работы устройства в целом. В итоге была разработана схема, представленная на рисунке 3, согласно которой модуль AT-09 подключается к аппаратному UART-интерфейсу Arduino nano через выводы D0 и D1, MAX485 подключается к UART, программно-реализованному на выводах D3 и D5, а через вывод D4 производится переключение режима работы (передача/прием).
Рисунок 3 - Схема принципиальная электрическая
Выводы A0 и A1 управляют светодиодами для индикации текущего режима работы, к выводу D6 подключена кнопка для переключения режимов. Конденсатор О служит для устранения дребезга при нажатии кнопки. Питание всей схемы производится
через установленный на плате Arduino nano пятивольтовый стабилизатор напряжения, на вход которого допустимо подавать напряжение от 7 до 12 В, что позволяет использовать в качестве источника питания элемент 6LR61 с напряжением 9 В либо любой другой, напряжение которого входит в указанные выше пределы. В схеме предусмотрена защита от переполюсовки. При подключении питания неверной полярности диод VD3 окажется включенным встречно и не пропускает ток, в то время как загорится светодиод VD4, сигнализируя о переполюсовке. Также в схему добавлены светодиоды VD1 и VD2, сигнализирующие о наличии или отсутствии на входе устройства напряжения положительной или отрицательной полярности: при передаче или приеме данных один из них или даже оба будут гореть непрерывно либо мигать.
Согласно представленной схеме, была изготовлена печатная плата (рисунок 4). Готовое устройство изображено на рисунке 5.
Рисунок 4 - Печатная плата
Для микроконтроллера был написан программный код на языке С++, реализующий аппаратный и программный интерфейсы иАКТ, пересылку данных, принятых от МАХ485 на В1иеШоШ-модуль, обработку нажатия кнопки переключения режимов, управление режимом работы драйвера МАХ485 и индикацию текущего режима с помощью светодиодов, а также обработку команд по переключению скорости передачи, приходящих с В1иеШоШ-модуля.
Рисунок 5 - Внешний вид устройства без корпуса
При включении режима передачи устройство раз в секунду формирует набор из четырех наиболее часто востребованных при ремонте навигационного оборудования строк КМЕА с информацией о географических координатах, истинном курсе и некоторыми другими навигационными и метеорологическими данными. Программный код представлен в листинге 1.
Пример данных, записанных с выхода навигационного плоттера Simrad CP50 в ходе проверки работоспособности устройства, приведен в листинге 2.
#include <SoftwareSerial.h>
#define RX_PIN 3 #define TX_PIN 5 #define MODE_SELECTION_PIN 4 #define BTN_PIN 6 #define MODE_TX_PIN A0 #define MODE_RX_PIN A1 #define AT_09_speed 38400 #define MAX485_speed 4800
SoftwareSerial MAX485(RX_PIN, TX_PIN); boolean buttonPressed = false;
boolean mode = false; //false = RX, true = TX
String received = ""; char c = '0';
uint16_t rate = MAX485_speed; uint32_t timer = 0;
void setup() {
pinMode(MODE_SELECTION_PIN, OUTPUT); pinMode(MODE_TX_PIN, OUTPUT); pinMode(MODE_RX_PIN, OUTPUT); Serial.begin(AT_09_speed); MAX485.begin(rate); switchMode(false);
}
void loop(){
//обработка нажатия кнопки
if(!buttonPressed && !digitalRead(BTN_PIN)) { buttonPressed = true;
}
if(buttonPressed && digitalRead(BTN_PIN)) { buttonPressed = false; switchMode(!mode);
}
//исполняется в режиме приема: if(!mode){
if (MAX4 85.available())
Serial.write(MAX485.read());
}
//исполняется в режиме передачи: if(mode && (millis() - timer >= 1000)){ timer = millis();
printSentence("$GPRMC,15 0354.038,A,5231.18 9,N,01323.952,E,,,130422,000.0,W*79");
printSentence("$GPGGA,15 0354.038,5231.18 9,N,01323.952,E,1,12,1.0,0.0,M,0.0,M,,*6B"); printSentence("$GPHDT,274.07,T*03"); printSentence("$IIMWV,33 6.0,R,001.10,N,A*0B");
}
//прием команд: if (Serial.available()) { c = Serial.read(); if (c != '\n') { received += c; } else {
if(received.substring(0,5).equalsIgnoreCase("rate ")){ String rateStr = received.substring(5); boolean isNumber = true;
for(int i = 0; i < rateStr.length()-1; i++){ if(!isDigit(rateStr[i])){ isNumber = false; Serial.print("Error: '"); Serial.print(rateStr);
Serial.println("' is not an adequate number."); break;
}
}
if(isNumber){
rate = rateStr.toInt();
Serial.print("Rate is changed to ");
Serial.println(rate);
MAX4 85.end();
MAX485.begin(rate);
}
}
received = "";
}
}
}
void switchMode(boolean b){ mode = b;
digitalWrite(MODE_SELECTION_PIN, b); digitalWrite(MODE_TX_PIN, b); digitalWrite(MODE_RX_PIN, !b); Serial.println(b ? "mode: TX" : "mode: RX");
}
void printSentence(String sentence){ MAX485.print(sentence); MAX485.write(0x0D);
MAX485.write(0x0A); }_
Листинг 1 - Программный код микроконтроллера
$PSRSB 0,0,*6C
$GPGLL 5444.305, N,02030.897 E,131035.88,V*16
$GPVTG ,T,,M,,N, ,K*4E
$GPRMC 131035.88 ,V,5444.305 N,02030.897,E,,,090802,3.i 3,E*42
$GPRMB ,,,,,,,,, ,,,*66
$GPAPB V,A,,,N,, *1D i i i i i i i
$PSRSB 0,0,*6C
Листинг 2 - Пример полученных данных от навигационного плоттера Simrad CP50
ЗАКЛЮЧЕНИЕ
Протокол связи NMEA 0183 применяется для передачи данных между блоками современного радио-, метео-, навигационного, промыслового и прочего электронного оборудования на борту судна. Разработанное в результате исследования устройство имеет небольшие габариты 55х55 мм и может оказаться полезным при монтаже, настройке, поиске неисправностей и ремонте такого оборудования даже при ограниченном пространстве доступа к интерфейсным портам.
Устройство получилось простым, не содержащим дефицитных компонентов, есть возможность дальнейшего его усовершенствования путем обновления прошивки микроконтроллера. Причем это усовершенствование можно проводить в широчайших пределах. Уже на данный момент многие из выполняемых функций реализованы программным способом, в том числе: переключение режимов «приема-передачи», их индикация, а также переключение скорости работы устройства.
В статье были показаны ключевые моменты разработки устройства под конкретную задачу - конвертации отдельных сообщений NMEA, для использования в учебном процессе. Попутно решалась задача миниатюризации устройства за счет отказа от встроенного экрана в пользу внешнего, который подключается за счет добавления Bluetooth модуля. Разработка выполнятся под частную задачу, для массового внедрения данное устройство не подходит так как является специализированным вспомогательным инструментом.
Основные отличия от подобных устройств: уменьшение размеров, отказ от экрана, добавление Bluetooth модуля.
По ценовым характеристикам оценить преимущество разработанного устройства
сложнее, так как доступные на рынке устройства имеют сертификацию соответствующих служб и лицензирование от NMEA для применения специалистами таких устройств на судах, сервисные центры должны использовать только сертифицированное оборудование, что приводит к увеличению стоимости устройства в целом. Цена конечного продукта может изменяться в широких пределах в зависимости от размера партии выпускаемых фирмой устройств, реализованных в них функций, наличие подключаемых модулей (аккумулятор, экран и т.п.), используемых лицензий, затрат на программирование, прохождение сертификации и т.д. Если подсчитать затраты только на используемые компоненты и материалы, используемые в представленной схеме данной статьи, то стоимость подобного устройства будет в районе 800-1200 р.
Результаты разработки можно использовать для обслуживания морского оборудования в качестве вспомогательного инструмента, при прохождении соответствующих процедур сертифицирования, но планируется внедрить в учебный процесс, с проработкой различных вариантов практических заданий, по освоению работы как с самим протоколом NMEA, так и с радионавигационными приборами, применяющими данный протокол. Ведется работа над созданием имитатора навигационного прибора на базе разработанного анализатора данных, передаваемых по протоколу NMEA.
СПИСОК ЛИТЕРАТУРЫ
1. USB Gateway USG-2 NMEA 0183 USB Converter: Actisense [Электронный ресурс]. -URL: https://actisense.com/products/usg-2-nmea-0183-converter/ (дата обращения: 07.04.2022).
2. X300 Smart NMEA Tester is a sub-compact and ultra-light portable NMEA [Электронный ресурс]. - URL: https://amimarine.com/product/x300-compact-nmea-reader/ (дата обращения: 07.04.2022).
3. The NMEA 0183: Information Sheet. - UK: Actisense, 2015. - 16 p. [Электронный ресурс]. - URL: https://actisense.com/wp-content/uploads/2020/01/NMEA-0183-Information-sheet-issue-4-1-1.pdf (дата обращения: 07.04.2022).
4. Описание структуры наиболее часто используемых NMEA посылок, поддерживающих стандарт IEC 61162-1 или NMEA 0183. Часть 1 [Электронный ресурс]. -URL: https://cirspb.ru/blog/other-articles/nmea-part1/ (дата обращения: 07.04.2022).
5. Модули ГеоС®: NMEA протокол обмена. Версия 3.0. - Москва: ООО ДЦ «ГеоСтар навигация», 2015. - 30 c. [Электронный ресурс]. - URL: http://geostar-navi.com/files/docs/geos3/
geos_nmea_protocol_v3_0_rus.pdf (дата обращения: 08.04.2022).
6. RS-422 and RS-485 Standards Overview and System Configurations: Application Report. - Texas Instruments, 2010. - 25 p. [Электронный ресурс]. - URL: https://www.ti.com/lit/an/
slla070d/slla070d.pdf (дата обращения: 07.04.2022).
7. Интерфейс RS-232 в каналах последовательной передачи данных: метод. указания / сост. В. Г. Иоффе, К. Е. Климентьев; Самар. гос. аэрокосм. ун-т. - Самара, 2003. - 26 с.
8. Алешин, О. Г. Анализ эффективности фильтрации навигационной информации в формате NMEA 0183 / О. Г. Алешин // European Science. - 2017. - № 6(28). - С. 31-34. -EDN YSQNDP.
9. Low-Power, Slew-Rate-Limited RS-485/RS-422 Transceivers: MAX481/MAX483/ MAX485/MAX487-MAX491/MAX1487 datasheet. - Sunnyvale (CA): Maxim Integrated Products, 2003. - 19 p. [Электронный ресурс]. - URL: http://www.gaw.ru/pdf/Maxim/interface/rs-485/MAX1487-MAX491.pdf (дата обращения: 07.04.2022).
DEVELOPMENT OF THE DATA ANALYZER TRANSMITTED BY THE NMEA PROTOCOL FROM THE SIMRAD CP50 NAVIGATION PLOTTER
P. S. Klochkov, 4th year cadet, e-mail: blind-pilot08@yandex.ru Kaliningrad State Technical University Baltic Fishing Fleet State Academy
D. V. Kholodenin, senior lecturer, e-mail: holodenin@bgarf.ru Kaliningrad State Technical University Baltic Fishing Fleet State Academy
The article provides brief excerpts from the review and analysis of information on the interfaces and standards used in ship navigation equipment, through which navigation data is transmitted at the protocol level. The signals on the NMEA serial interface of the Simrad CP50 navigation plotter were studied. As a result of these studies, justifications were given and the choice of the element base for the developed navigation data analyzer was made. The hardware and software parts of the device have been developed, the device working capacity has been tested.
Key words: data analyzer, NMEA protocol, Arduino Nano board, data transmission standards, navigation plotter, physical interface, Bluetooth-module, program code