exponenta event banner

Настройка параметров и мониторинг сигналов с использованием внешнего режима

Для быстрого прототипирования можно использовать моделирование внешнего режима. При моделировании внешнего режима устанавливается канал связи между Simulink ® на компьютере разработки (хосте) и целевым оборудованием, на котором выполняется исполняемый файл, созданный в процессе создания и сборки кода.

По каналу связи можно:

  • Изменение или настройка параметров блока в реальном времени. При изменении параметров в модели Simulink загружает новые значения в исполняемое целевое приложение.

  • Мониторинг и сохранение сигнальных данных из исполняемого целевого приложения.

Низкоуровневый транспортный уровень канала обрабатывает передачу сообщений. Simulink и созданный код модели не зависят от этого слоя. Транспортный уровень и его интерфейсный код изолированы в отдельных модулях, которые форматируют, передают и принимают сообщения и пакеты данных.

Настройка и запуск моделирования внешнего режима с использованием TCP/IP или последовательного (RS-232) канала связи.

  1. Создайте и настройте простую модель.

  2. Создайте целевой исполняемый файл.

  3. Запустите целевое приложение.

  4. Настройка параметров.

Пример: Набор Мандельброта

Описание

Множество Мандельброта - это область в комплексной плоскости, состоящая из значений z0, для которых траектории, определенные этим уравнением, остаются ограниченными в k→∞.

zk + 1 = zk2 + z0, k = 0, 1,...

Общая геометрия набора Мандельброта показана на рисунке. Этот вид не имеет разрешения, чтобы показать богато детализированную структуру цветовых полей непосредственно за границей набора. При увеличении увеличений набор Мандельброта показывает сложную границу, которая показывает постепенно более тонкую рекурсивную деталь.

Geometry of the Mandelbrot set

Алгоритм

В этом учебном пособии выберите набор пределов, определяющих сильно увеличенную часть набора Мандельброта в долине между основным кардиоидом и лампочкой p/q слева от него. Между этими двумя пределами создается сетка из вещественных частей (x) и мнимых частей (y) размером 1000 на 1000. Алгоритм Мандельброта затем итерируется в каждом местоположении сетки. Число итераций 500 позволяет визуализировать изображение в полном разрешении.

maxIterations = 500;
gridSize = 1000;
xlim = [-0.748766713922161,-0.748766707771757];
ylim = [0.123640844894862,0.123640851045266];

В данном учебном пособии используется реализация набора Mandelbrot с использованием стандартных команд MATLAB ®, выполняемых на процессоре. Этот расчет векторизируется таким образом, что каждое местоположение обновляется одновременно.

Создание модели Mandelbrot

  1. Создайте модель Simulink и вставьте блок MATLAB Function из библиотеки пользовательских функций.

  2. Дважды щелкните по блоку MATLAB Function. Сигнатура функции по умолчанию появляется в редакторе функциональных блоков MATLAB.

  3. Определение функции с именем mandelbrot_count, который реализует алгоритм Мандельброта. Заголовок функции объявляет maxIterations, xGrid, и yGrid в качестве аргумента для mandelbrot_count функция, с count в качестве возвращаемого значения.

    function count = mandelbrot_count(maxIterations, xGrid, yGrid)
    % mandelbrot computation
    
    z0 = xGrid + 1i*yGrid;
    count = ones(size(z0));
    
    % Map computation to GPU
    coder.gpu.kernelfun;
    
    z = z0;
    for n = 0:maxIterations
        z = z.*z + z0;
        inside = abs(z)<=2;
        count = count + inside;
    end
    count = log(count);
    

  4. Откройте параметры блока для функционального блока MATLAB. На вкладке Создание кода выберите Reusable function для параметра упаковки функций.

    Если параметр Function packaging имеет любое другое значение, ядра CUDA ® могут не генерироваться.

  5. Добавьте блоки Inport (Simulink) и Outport (Simulink) из библиотеки Sources and Sinks.

  6. Подключите эти блоки, как показано на схеме. Сохранить модель как mandelbrot_top.slx.

    Simulink model showing connection between the blocks.

Целевой исполняемый файл построения

Настройте модель и параметры генерации кода, необходимые для целевого приложения внешнего режима. Затем создайте код и создайте целевое приложение.

  1. На вкладке «Приложения» на панели инструментов Simulink в разделе «Установка для запуска на оборудовании» нажмите кнопку «Выполнить на плате оборудования».

  2. В разделе «Плата аппаратных средств» в списке «Плата аппаратных средств» выберите NVIDIA Jetson.

  3. В разделе Подготовка выберите Параметры оборудования. Откроется диалоговое окно Configuration Parameters, в котором отображаются настройки реализации оборудования, определенные выбранной платой.

  4. На панели решателя:

    1. В поле Тип выберите Fixed-step.

    2. В поле Решатель выберите discrete (no continuous states).

    3. Щелкните Сведения о решателе (Solver details). В поле Фиксированный размер шага укажите 0.1. (В противном случае при создании кода процесс построения Coder™ графического процессора выдает предупреждение и предоставляет значение.)

    4. Нажмите кнопку «Применить».

  5. На панели Импорт/экспорт данных снимите флажки Время и Вывод. В этом примере данные не регистрируются в рабочей области или в MAT-файле. Нажмите кнопку «Применить».

  6. На панели «Создание кода» > «Оптимизация» убедитесь, что для параметра «Поведение по умолчанию» задано значение Tunable. При внесении изменений нажмите кнопку Применить.

  7. На панели Создание кода > Интерфейс в разделе Интерфейс обмена данными выберите Внешний режим.

  8. В разделе Конфигурация внешнего режима убедитесь, что выбрано значение по умолчанию. tcpip для параметра транспортного уровня.

    Имя MEX-файла определяет имя MEX-файла, реализующего связь между хостом и целью. Значение по умолчанию для TCP/IP: ext_comm, MEX-файл, поставляемый с программным обеспечением Simulink Coder™.

    Поле аргументов MEX-файла позволяет указать аргументы, такие как номер порта сервера TCP/IP, для передачи программе внешнего интерфейса. Эти аргументы относятся к используемому внешнему интерфейсу.

    В этом учебном пособии используются аргументы по умолчанию. Оставьте поле аргументов MEX-файла пустым.

    Флажок Статическое выделение памяти управляет распределением памяти для буферов связи внешнего режима в целевом объекте. Для данного учебного пособия не устанавливайте флажок.

  9. Нажмите кнопку Применить (Apply), чтобы сохранить настройки внешнего режима.

  10. Сохраните модель.

  11. Выберите панель «Создание кода». Убедитесь, что флажок «Генерировать только код» снят.

  12. Чтобы создать код и целевое приложение, в окне модели нажмите клавиши Ctrl + B. Или на вкладке «Оборудование» в разделе «Запуск на оборудовании» выберите «Мониторинг и настройка». Затем в разделе Пошаговые команды (Step By Step Commands) щелкните Сборка для мониторинга (Build for Monitoring).

    Программное обеспечение создает mandelbrot_top исполняемый файл в рабочей папке.

Запустить целевое приложение

Запустить mandelbrot_top целевой исполняемый файл и использовать Simulink в качестве интерактивного интерфейса для выполняющегося целевого приложения. Исполняемый файл находится в рабочей папке. Запустите целевое приложение и установите связь между Simulink и целевым приложением.

Для запуска целевого приложения:

  1. На вкладке «Оборудование» в разделе «Запуск на оборудовании»:

    1. В поле Время остановки укажите inf, что заставляет модель работать до тех пор, пока целевое приложение не получит сообщение об остановке от Simulink

    2. Щелкните Монитор и настройка. Затем в разделе Пошаговые команды щелкните Развернуть.

    Целевое приложение начинает выполнение и переходит в состояние ожидания.

  2. На вкладке Hardware (Оборудование) в разделе Run on Hardware (Запуск на оборудовании) выберите Monitor & Tune (Мониторинг и настройка). Затем в разделе Пошаговые команды (Step By Step Commands) щелкните Подключить (Connect). При подключении Simulink и цели кнопка Connect изменяется на Disconnect.

  3. В разделе Run on Hardware нажмите, чтобы начать выполнение созданного кода модели.

Установлена связь между Simulink и запущенным целевым приложением.

Примечание

При выполнении моделирования внешнего режима на моделях Simulink, содержащих сети глубокого обучения, может возникнуть ошибка тайм-аута во время инициализации модели на целевом объекте. Это время ожидания может быть вызвано тем, что время инициализации исполняемого файла превышает максимальное время загрузки по умолчанию, равное 300 секундам. Вы можете увеличить время ожидания с помощью NVIDIA_XCP_EXTMODE_INIT_TIME переменная среды. Например, в окне команд MATLAB введите:

setenv('NVIDIA_XCP_EXTMODE_INIT_TIME','500');

Остановить конечное приложение

Чтобы одновременно отключить Simulink от связи между хостом и целью и завершить выполнение целевого приложения, на вкладке «Оборудование» в разделе «Запуск на оборудовании» нажмите кнопку «Остановить».

См. также

Функции

Связанные темы