Настройка параметра и контроль сигналов при помощи режима 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 и цель соединяются, изменения Кнопки соединения в 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.

Смотрите также

Функции

Похожие темы