Настройка параметра и контроль сигналов Используя режим 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,

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

Алгоритм

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

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

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

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

  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 и выберите Block Parameters (Subsystem).

  5. На вкладке Code Generation выберите Reusable function для Function packaging.

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

  7. Соедините эти блоки как показано в схеме. Сохраните модель как 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 и целевым приложением. Когда Simulink и цель соединяются, изменения Кнопки соединения в Disconnect.

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

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

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

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

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

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте