В этом примере показано, как отслеживать корабли путем обработки сигналов автоматической системы идентификации (AIS) с помощью MATLAB ® и Communications Toolbox™. Можно использовать или захваченные сигналы или принять сигналы в режиме реального времени с помощью Радио RTL-SDR. Пример может показать отслеживаемые корабли на карте, если у вас есть Mapping Toolbox™.
Чтобы запустить этот пример с помощью записанных сигналов, вам нужен Communications Toolbox™.
Для приема сигналов в режиме реального времени также требуется радио RTL-SDR и соответствующий пакет поддержки Communications Toolbox для пакета поддержки RTL-SDR Radio Дополнение.
Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе «Поддерживаемые аппаратные средства» страницы Программно определяемого радио (SDR).
При морских перевозках службы движения судов используют АИС как компонент общей системы мониторинга морского движения. АИС выполняет следующие функции:
Передайте идентификатор судна, положение, курс и скорость.
Прием и обработка заданных опрашивающих вызовов.
Работайте постоянно в процессе движения или на якоре.
Спецификации АИС:
Область значений передачи: 156,025 MHz-162.025 МГц
Схема модуляции: Гауссова манипуляция сдвигом
Скорость передачи битов: 9600 бит/сек
Передайте время полосы пропускания Продукт: 0.4
Получите время полосы пропускания Продукт: 0.5
Индекс модуляции: 0,5
Пакеты передачи AIS содержат следующие поля:
Обучающая последовательность: 24-битная последовательность чередующихся нулей и таковых (0101...).
Флаг запуска: 8-битная последовательность, 01111110.
Данные: Фрагмент данных имеет длину 168 бит в пакете передачи по умолчанию.
Последовательность проверки системы координат (FCS): Использует 16-битный полином циклической проверки избыточности (CRC), чтобы вычислить контрольную сумму.
End Flag: идентично начальному флагу.
Буфер: Обычно длина буфера составляет 24 бита, чтобы учесть набивку битов (максимум 4 бита), задержку расстояния (14 бит) и дрожание синхронизации (6 бит).
Этот рисунок показывает формат пакета AIS
Можно открыть пример, нажав кнопку Открыть скрипт. Строение по умолчанию выполняетсяечение 10 секунд, использует данные сигнала из захваченного файла данных и выводит в текстовый файл. Чтобы предоставить входные значения из командной строки, вы должны изменить cmdlineInput
1, тогда при запуске примера будет предложено ввести следующую информацию:
Длительность приема в секундах,
Источник сигнала (захваченный файл данных или радио RTL-SDR),
Необязательные методы выхода (map, текстовый файл или и то, и другое).
Пример показывает информацию об обнаруженных кораблях в табличной форме, как показано на следующем рисунке.
Если у вас лицензирована Mapping Toolbox, можно также наблюдать отслеживание AIS кораблей на карте.
Следующий блок суммирует структуру кода приемника. Обработка имеет три основные части: Signal Source, Physical Layer и Data Viewer.
Источник сигнала
Укажите источник сигнала «File» или «RTL-SDR».
«Файл»: Использует comm.BasebandFileReader
для чтения файла, который содержит ранее захваченный по воздуху сигнал.
«RTL-SDR»: Использует радио RTL-SDR для приема живого сигнала.
Код использует скорость символа сигнала 9600 Гц и 24 выборки на символ.
Если вы назначаете «RTL-SDR» в качестве источника сигнала, то в примере ваш компьютер ищет радио RTL-SDR по радио-адресу '0' и использует его в качестве источника сигнала.
Физический слой
Выборки основной полосы частот, принятые от источника сигнала, обрабатываются физическим слоем (PHY), чтобы получить пакеты, которые содержат информацию о положении судна и байты необработанных сообщений. Этот рисунок показывает компоненты обработки PHY.
Поиск пакета: Ищет самый сильный всплеск в полученном сигнале путем деления на несколько окон.
Удаление смещения постоянного тока: удаляет смещение постоянного тока из обнаруженного сигнала.
Частотная компенсация: Оцените и компенсирует смещение частоты несущей.
Согласованная фильтрация: Выполняет фильтрацию с Гауссовым импульсом, сгенерированным согласно спецификациям AIS.
Синхронизация и демодуляция: Выполняет временную синхронизацию путем корреляции принимаемого сигнала с известной преамбулой и демодулирует, чтобы получить биты.
AIS Bit Parser: обнаруживает начальный и конечный флаги, затем выполняет обнаружение 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 Технические характеристики для автоматической системы идентификации, использующей множественный доступ с делением по времени в морской полосе частот УКВ.