В этом примере показано, как отслеживать суда путем обработки сигналов автоматической идентификационной системы (AIS) с помощью MATLAB ® и Communications Toolbox™. С помощью RTL-SDR Radio можно либо использовать захваченные сигналы, либо принимать сигналы в реальном времени. В примере можно показать отслеживаемые корабли на карте, если имеется Toolbox™ «Сопоставление».
Для выполнения этого примера с использованием захваченных сигналов требуется Toolbox™ связи.
Для приема сигналов в режиме реального времени также требуется радиомодуль RTL-SDR и соответствующий пакет поддержки Communications Toolbox для пакета поддержки RTL-SDR Radio Add-On.
Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе Поддерживаемые аппаратные средства на странице обнаружения Software Defined Radio (SDR).
В морских перевозках службы судового движения используют АИС в качестве компонента общей системы мониторинга морского движения. АИС выполняет следующие функции:
Передайте идентификатор судна, положение, курс и скорость.
Прием и обработка указанных запросов.
Непрерывно работать в процессе работы или на якоре.
Технические характеристики АИС:
Диапазон частот передачи: 156,025 MHz-162.025 МГц
Схема модуляции: гауссова частотная манипуляция
Скорость передачи: 9600 бит/с
Время передачи: 0,4
Время получения пропускной способности продукта: 0.5
Индекс модуляции: 0,5
Пакеты передачи AIS содержат следующие поля:
Тренировочная последовательность: 24-битная последовательность чередующихся нулей и единиц (0101...).
Флаг запуска: 8-битная последовательность, 01111110.
Данные: Длина части данных в пакете передачи по умолчанию составляет 168 бит.
Последовательность проверки кадров (FCS): использует 16-битный многочлен циклического избыточного кода (CRC) для вычисления контрольной суммы.
Флаг окончания: идентичен флагу начала.
Буфер: Обычно буфер имеет длину 24 бита для учета заполнения битов (максимум 4 бита), задержки расстояния (14 бит) и дрожания синхронизации (6 бит).
На этом рисунке показан формат пакета AIS

Можно открыть пример, нажав кнопку Открыть сценарий. Конфигурация по умолчанию выполняется в течение 10 секунд, использует данные сигнала из файла захваченных данных и выводит в текстовый файл. Чтобы ввести входные значения из командной строки, необходимо изменить cmdlineInput до 1, после чего при выполнении примера будет предложено ввести следующую информацию:
Продолжительность приема в секундах,
источник сигнала (файл захваченных данных или радио RTL-SDR),
Дополнительные методы вывода (карта, текстовый файл или оба).
В примере показана информация об обнаруженных кораблях в табличной форме, как показано на следующем рисунке.

Если у вас есть лицензия на набор средств сопоставления, вы также можете наблюдать, как AIS отслеживает суда на карте.

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

Источник сигнала
Укажите источник сигнала как «Файл» или «RTL-SDR».
«Файл»: Использует comm.BasebandFileReader для чтения файла, содержащего ранее захваченный сигнал.
«RTL-SDR»: использует радио RTL-SDR для приема живого сигнала.
Код использует частоту символов сигнала 9600 Гц и 24 выборки на символ.
Если назначить «RTL-SDR» в качестве источника сигнала, в примере выполняется поиск на компьютере радиоприемника RTL-SDR по адресу радиосвязи «0» и используется в качестве источника сигнала.
Физический уровень
Выборки основной полосы частот, принятые от источника сигнала, обрабатываются физическим уровнем (PHY) для получения пакетов, которые содержат информацию о местоположении судна и байты необработанных сообщений. На этом рисунке показаны компоненты обработки PHY.

Поиск пакетов: Поиск наиболее сильного пакета в принятом сигнале путем разделения на несколько окон.
Удаление смещения постоянного тока: удаление смещения постоянного тока из обнаруженного сигнала.
Компенсация частоты: Оценка и компенсация смещения несущей частоты.
Согласованная фильтрация: выполняет фильтрацию гауссовым импульсом, генерируемым в соответствии со спецификациями АИС.
Синхронизация и демодуляция: выполняет синхронизацию синхронизации путем корреляции принятого сигнала с известной преамбулой и демодулирует для получения битов.
Анализатор битов AIS: обнаруживает флаг начала и флаги окончания, затем выполняет обнаружение CRC. Если CRC успешен, то информация о корабле декодируется.
В AIS существует 64 конкретных типа сообщений. Информация о позиции отгрузки включена в 11 типов сообщений. В этом примере декодируются все 11 типов сообщений, которые содержат информацию о позиции.
Как показано на предыдущем рисунке, в этом примере отображаются идентификатор судна, широта, долгота, дата и время. Сообщения содержат дополнительную информацию, которая может быть декодирована, как описано в [1].
Средство просмотра данных
Средство просмотра данных показывает полученные сообщения в графическом интерфейсе пользователя (GUI). При захвате данных приложение перечисляет информацию, декодированную из этих сообщений в табличной форме.
Примеры шагов описаны ниже. Для просмотра подробных операций просмотрите выполнение кода в вспомогательных функциях, вызываемых в примере. Чтобы изменить настройки по умолчанию, установите cmdlineInput на 1.
cmdlineInput = 0; if cmdlineInput % Request user input from the command-line for application parameters userInput = helperAISUserInput; else load('defaultInputs.mat'); end % Calculate AIS parameters based on the user input [aisParam,sigSrc] = helperAISConfig(userInput); % Create the data viewer object and configure based on user input viewer = helperAISViewer('LogFileName',userInput.LogFilename, ... 'SignalSourceType',userInput.SignalSourceType); % Launch map based on user input if userInput.LaunchMap startMapUpdate(viewer); end % Log data based on user input if userInput.LogData startDataLog(viewer); end % Start the viewer and initialize radio time start(viewer) radioTime = 0; % Main loop for capturing and decoding the AIS samples while radioTime < userInput.Duration if aisParam.isSourceRadio % For RTL-SDR [rcv,~,lost,~] = sigSrc(); lostFlag = logical(lost); else % For baseband file rcv = sigSrc(); lostFlag = uint32(0); end % Recover the information by decoding AIS samples [info, pkt] = helperAISRxPhy(rcv,aisParam); % View decoded information on viewer update(viewer, info, pkt, lostFlag); % Update radio time radioTime = radioTime + aisParam.FrameDuration; end % Stop the viewer and release the signal source stop(viewer) release(sigSrc)
![]()
Вы можете также напечатать AISExampleApp в Окне Команды MATLAB или нажать на ссылку, чтобы использовать пользовательский интерфейс AISExampleApp, чтобы исследовать сигналы AIS. Интерфейс приложения позволяет выбрать источник сигнала и изменить длительность.
Для получения подробной информации о реализации физического уровня можно изучить следующие функции и системные объекты:
Рекомендация ITU-R M.1371-5, Технические характеристики системы автоматической идентификации с использованием множественного доступа с временным разделением каналов в полосе частот морской мобильной связи ОВЧ.