Можно использовать симуляции режима external mode для быстрого прототипирования. Симуляция режима external mode устанавливает канал связи между Simulink® на вашем компьютере разработчика (хост) и целевым компьютером, который запускает исполняемый файл, созданный генерацией кода и процессом сборки.
Через канал связи вы можете:
Измените или настройте параметры блоков в режиме реального времени. Когда вы изменяете параметры в своей модели, Simulink загружает новые значения на выполняющееся целевое приложение.
Контролируйте и избавьте данные сигнала от выполняющегося целевого приложения.
Низкоуровневый транспортный уровень канала обрабатывает передачу сообщений. Simulink и сгенерированный типовой кодекс независимы от этого слоя. Транспортный уровень и его интерфейсный код изолируются в отдельных модулях, что формат, передача, и получают пакеты данных и сообщения.
Настройте и запустите симуляцию режима external mode, которая использует TCP/IP или последовательный (RS-232) канал связи.
Создайте и сконфигурируйте простую модель.
Создайте целевой исполняемый файл.
Запустите целевое приложение.
Настройки параметров.
Вы не должны быть знакомы с алгоритмом в примере, чтобы завершить пример.
Множество Мандельброта является областью в комплексной плоскости, состоящей из значений z 0, для которого траектории, заданные этим уравнением, остаются ограниченными в k→∞.
Полная геометрия Множества Мандельброта показана на рисунке. Это представление не имеет разрешения, чтобы показать богато подробную структуру края недалеко от контура набора. При увеличивающихся увеличениях Множество Мандельброта показывает тщательно продуманный контур, который показывает прогрессивно более прекрасную рекурсивную деталь.
Для этого примера выберите набор пределов, которые задают высоко масштабируемую часть Множества Мандельброта в овраге между основной кардиоидой и лампой p/q с ее левой стороны от него. 1000x1000 сетка действительных частей (x) и мнимые части (y) создается между этими двумя пределами. Алгоритм Мандельброта затем выполнен с помощью итераций в каждом местоположении сетки. Количества итерации 500 достаточно, чтобы представить изображение в полном разрешении.
maxIterations = 500; gridSize = 1000; xlim = [-0.748766713922161,-0.748766707771757]; ylim = [0.123640844894862,0.123640851045266];
Этот пример использует реализацию Множества Мандельброта при помощи стандартных команд MATLAB®, работающих на центральном процессоре. Эта реализация основана на коде, предоставленном в Экспериментах с электронной книгой MATLAB Кливом Moler. Это вычисление векторизовано таким образом, что каждое местоположение обновляется одновременно.
Создайте новую модель Simulink и вставьте блок MATLAB Function из библиотеки User-Defined Functions.
Дважды кликните на одном из блока MATLAB Function. Функциональная подпись по умолчанию появляется в Редакторе Блока MATLAB Function.
Задайте функцию под названием 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);
Щелкните правой кнопкой по блоку MATLAB Function и выберите Block Parameters (Subsystem)
.
На вкладке Code Generation выберите Reusable function
для Function packaging.
Добавьте Inport (Simulink) блоки и блок Outport (Simulink) из библиотеки Sources и Sinks.
Соедините эти блоки как показано в схеме. Сохраните модель как mandelbrot_top.slx
.
Настройте модель и параметры генерации кода, требуемые для целевого приложения режима external mode. Затем сгенерируйте код и создайте целевое приложение.
От вкладки Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажимают Run on Hardware Board.
В разделе Hardware Board, из списка Hardware Board, выбирают NVIDIA Jetson
.
В разделе Prepare нажмите Hardware Settings. Диалоговое окно Configuration Parameters открывается, отображая настройки Hardware Implementation, которые определяются выбранной платой.
На панели Solver:
В поле Type выберите Fixed-step
.
В поле Solver выберите discrete (no continuous states)
.
Нажмите Solver details. В поле Fixed-step size задайте 0.1
. (В противном случае, когда вы генерируете код, процесс сборки GPU Coder™ производит предупреждение и предоставляет значение.)
Нажмите Apply.
На панели Data Import/Export снимите флажки Time и Output. В этом примере данные не регистрируются к рабочей области или к MAT-файлу. Нажмите Apply.
На Code Generation> панель Optimization, проверяйте, что Default parameter behavior установлен в Tunable
. Если вы вносите изменение, нажмите Apply.
На Code Generation> панель Interface, в разделе Data exchange interface, выбирают External mode.
В разделе 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 в цели. Для этого примера не устанавливайте флажок.
Нажмите Apply, чтобы сохранить настройки режима external mode.
Сохраните модель.
Выберите панель Code Generation. Убедитесь, что Generate code only очищен.
Чтобы сгенерировать код и создать целевое приложение, в окне модели, нажимают Ctrl+B. Или, на вкладке Hardware, в разделе Run on Hardware, нажимают Monitor & Tune. Затем под Step By Step Commands нажмите Build for Monitoring.
Программное обеспечение создает mandelbrot_top
исполняемый файл в вашей рабочей папке.
Вы теперь запускаете mandelbrot_top
предназначайтесь для исполняемого файла и используйте Simulink в качестве интерактивного фронтэнда к целевому приложению запуска. Исполняемый файл находится в вашей рабочей папке. Запустите целевое приложение и установите связь между Simulink и целью.
Запустить целевое приложение:
На вкладке Hardware, в разделе Run on Hardware:
В поле Stop Time задайте inf
, который делает запуск модели, пока целевое приложение не получает сообщение остановки от Simulink
Нажмите Monitor & Tune. Затем под Step By Step Commands нажмите Deploy.
Целевое приложение начинает выполнение и вводит состояние ожидания.
На вкладке Hardware, в разделе Run on Hardware, нажимают Monitor & Tune. Затем под Step By Step Commands нажмите Connect. Это действие инициирует квитирование между Simulink и целевым приложением. Когда Simulink и цель соединяются, изменения Кнопки соединения в Disconnect.
В разделе Run on Hardware щелкните, который запускает выполнение сгенерированного типового кодекса.
Вы установили связь между Simulink и целевым приложением запуска.
Чтобы одновременно отключить Simulink от коммуникации хоста/цели и выполнения конца целевого приложения, на вкладке Hardware, в разделе Run on Hardware, нажимают Stop.
rtwbuild
(Simulink Coder) | bdclose
(Simulink) | close_system
(Simulink) | get_param
(Simulink) | load_system
(Simulink) | open_system
(Simulink) | save_system
(Simulink) | set_param
(Simulink) | sim
(Simulink)