Настройка параметров и контроль сигналов при помощи режима external mode

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

Через канал связи можно:

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

  • Отслеживайте и сохраняйте данные о сигнале от выполняющего целевого приложения.

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

Настройте и запустите симуляцию режима external mode, которая использует TCP/IP или последовательный (RS-232) канал связи.

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

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

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

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

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

Описание

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

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

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

Geometry of the Mandelbrot set

Алгоритм

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

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

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

Создайте модель Мандельброта

  1. Создайте модель Simulink и вставьте блок MATLAB Function из библиотеки User-Defined Functions.

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

  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 Function. На вкладке Code Generation выберите Reusable function для Function packaging параметра.

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

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

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

    Simulink model showing connection between the blocks.

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

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

  1. На вкладке Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажмите Run on Hardware Board.

  2. В Hardware Board разделе из списка Hardware Board выберите NVIDIA Jetson.

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

  4. На панели Solver:

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

    2. В Solver поле выберите discrete (no continuous states).

    3. Нажмите Solver details. В поле Fixed-step size задайте 0.1. (В противном случае при генерации кода процесс сборки GPU Coder™ выдает предупреждение и задает значение.)

    4. Нажмите Apply.

  5. На панели Data Import/Export снимите флажки Time и Output. В этом примере данные не регистрируются в рабочей области или в MAT-файле. Нажмите Apply.

  6. На панели Code Generation > Optimization убедитесь, что для Default parameter behavior задано значение Tunable. Если вы вносите изменения, нажмите Apply.

  7. На панели Code Generation > Interface в разделе Data exchange interface выберите External mode.

  8. В External mode configuration разделе убедитесь, что вы выбрали значение по умолчанию tcpip для параметра Transport layer.

    Этот MEX-file name задает имя файла MEX, который реализует коммуникацию хоста с объектом. Значение по умолчанию для TCP/IP ext_comm, файл MEX, поставляемый с программным обеспечением Simulink Coder™.

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

    В этом руководстве используются аргументы по умолчанию. Оставьте поле MEX-file arguments пустым.

    Флажок Static memory allocation управляет выделением памяти для буферов связи режима external mode в целевой системе. В данном руководстве не устанавливайте флажок.

  9. Нажмите кнопку Apply, чтобы сохранить настройки режима external mode.

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

  11. Выберите панель Code Generation. Убедитесь, что Generate code only сброшена.

  12. Чтобы сгенерировать код и создать целевое приложение, в окне модели нажмите Ctrl+B. Или на вкладке Hardware, в разделе Run on Hardware, нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Build for Monitoring.

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

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

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

Чтобы запустить целевое приложение:

  1. На вкладке Hardware, в разделе Run on Hardware:

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

    2. Нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Deploy.

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

  2. На вкладке Hardware, в разделе Run on Hardware, нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Connect. Когда Simulink и цель подключены, кнопка Connect изменяется на Disconnect.

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

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

Примечание

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

setenv('NVIDIA_XCP_EXTMODE_INIT_TIME','500');

Остановите целевое приложение

Чтобы одновременно отсоединить Simulink от хоста/целевой коммуникации и завершить выполнение целевого приложения, на вкладке Hardware, в разделе Run on Hardware, нажмите Stop.

См. также

Функции

Похожие темы