Pull to refresh

Формирование сообщений АИС для тестирования навигационных систем

Привет. Всё началось с того, что у меня возникла необходимость проверки АИС модулей программ Open CPN и NaviSalor, а именно как на них отображается информация о морских судах полученная по каналам Автоматической Идентификационной Системы АИС.

Для достижения данной цели мне пришлось написать библиотеку для работы с сообщениями !AVDM 5-го и 1-го типов, так как на просторах интернета после долгих поисков ничего подобного не нашлось. Нашлись только библиотеки для декодирования, но они не подошли для моих целей.

Кратко теория:

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

Во внутри корабельных сетях пересылка осуществляется по протоколу NMEA 0183 посредством сообщений с заголовком AIVDM / AIVDO. AIVDO - данные своего судна, AIVDM - данные других судов.

AIVDM / AIVDO - это двухслойный протокол. Внешний слой является вариантом NMEA 0183, внутренний представляет собой строку бит (битовый вектор) закодированную символами в соответствии с 6-битовой ASCII (6 бит 1 символ). Именно эта строка передается в эфир и с помощью неё осуществляется обмен данными между судами и береговыми объектами.

Вот типичный пакет данных AIVDM:

! AIVDM,1,1,,B,177KQJ5000G?TO`K>RA1wUbN0TKH,0*5C

!AIVDM,2,1,3,B,55P5TL01VIaAL@7WKO@mBplU@<PDhh000000001S;?AJ::4A804i@E53,0*3E

!AIVDM,2,2,3,B,1@0000000000000,2*55

Представленная библиотека состоит из библиотеки функций «aislib» и классов «ais1», «ais5». «aislib» содержит функции общие для «ais1» и «ais5». В свою очередь классы «ais1» и «ais5» выполнены как тип данных «рабочий блок(полезная нагрузка)» и содержат методы для заполнения рабочего блока навигационными данными и прочей информацией в соответствии с рекомендациями МСЭ-R M.1371-5. Результатом работы «ais1» является AIVDM первого типа, «ais5» соответственно AIVDM пятого типа. Реализована поддержка много фрагментных сообщений. Код открытый, лежат в репозиториях на Githab и Gitlab

Скрин тестовой программы TargetPley выложена в репозитории на Gitlab ссылка на репозиторий в конце статьи.

Планирую в последствии реализовать другие типы сообщений.

Если вас заинтересовала статья и вы хотите погрузиться в эту тему глубже, посмотрите ссылки ниже:

рекомендации МСЭ-R M.1371-5

Файлы.

https://githab.com/KatProstak/AIS_library-

https://gitlab.com/Prostak/ais_library

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.