exponenta event banner

Отслеживание судов с использованием сигналов АИС

В этом примере показано, как отслеживать суда путем обработки сигналов автоматической идентификационной системы (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, после чего при выполнении примера будет предложено ввести следующую информацию:

  1. Продолжительность приема в секундах,

  2. источник сигнала (файл захваченных данных или радио RTL-SDR),

  3. Дополнительные методы вывода (карта, текстовый файл или оба).

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

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

Структура приемника

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

Источник сигнала

Укажите источник сигнала как «Файл» или «RTL-SDR».

  1. «Файл»: Использует comm.BasebandFileReader для чтения файла, содержащего ранее захваченный сигнал.

  2. «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. Интерфейс приложения позволяет выбрать источник сигнала и изменить длительность.

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

Избранная библиография

  1. Рекомендация ITU-R M.1371-5, Технические характеристики системы автоматической идентификации с использованием множественного доступа с временным разделением каналов в полосе частот морской мобильной связи ОВЧ.