В этом примере показано, как добавить файлы в новый проект, настройте ярлыки проекта, сгенерируйте код и симулируйте модель тестовой обвязки. Модели в этом примере демонстрируют некоторые принципы Модельно-ориентированного проектирования (MBD).
Этот пример также показывает, как использовать API Проекта, чтобы выполнить много операций проекта.
Модели в качестве примера предоставляют контроллеру, который позиционирует камеру, зафиксированную к двигателю постоянного тока, который отслеживает зеленый шар.
Подход MBD приводит к моделированию работы контроллера:
Объект модели: объект является двигателем постоянного тока, который вращается, чтобы изменить местоположение камеры.
Контроллер модели: проект использует ПИД-регулятор с обратной связью на угловом положении для расположения двигателя постоянного тока.
Высокоуровневый планировщик отслеживания шара модели: планировщик проверяет на валидность положения зеленого шара и насыщения опорного угла. Планировщик обрабатывает экземпляры никакого шара на экране, чтобы отследить.
Проект и Проект имеют следующие разделы (папки).
Объект - объект обеспечивает:
Модели с динамическими системами непрерывного времени, которые используют основные блоки Simulink.
Модели с системами линейного независимого от времени (LTI), которые используют системный блок LTI.
Импорт и экспорт данных моделирования к и из рабочей области
Загрузка параметров в базовое рабочее пространство, которые используют словарь данных и коллбэки модели.
Контроллер - контроллер обеспечивает:
Модели с динамическими системами дискретного времени, которые используют основные блоки Simulink.
Модели с динамическими системами дискретного времени, которые используют Блок ПИД-регулятора.
Осуществление насыщения сигнала, которые используют подсистему Преобразования PWM.
Отслеживание шара - отслеживание шара обеспечивает:
Основной алгоритм отслеживания шара.
Терминатор строки и земля блокируются как заполнители.
Гибридный контроллер, который генерирует моторные опорные углы с помощью Stateflow.
Обвязки - обвязки обеспечивают симуляцию верхнего уровня полной системы.
1. Создайте Проект из шаблона Blank Project, затем закройте проект.
Создать этот проект из начальной страницы Simulink:
В Командном окне введите simulink
.
Выберите шаблон Blank Project из начальной страницы.
Создайте modelBasedDesignCodeGenProject
проект.
Чтобы создать этот проект с помощью API Проекта, в Командном окне, введите:
user_root = userpath; checkForFolder = exist(fullfile(user_root,'user_proj')); if (checkForFolder ~= 2) mkdir(user_root,'user_proj'); cd(fullfile(user_root,'user_proj')); else cd(fullfile(user_root,'user_proj')); end
Warning: Directory already exists.
checkForProject = exist('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj'); if (checkForProject ~= 2) proj_modelBasedDesignCodeGen = Simulink.createFromTemplate('blank_project.sltx','Name','modelBasedDesignCodeGenProject','Folder','./ModelBasedDesignCodeGen'); else proj_templateCodeGen = simulinkproject('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj'); end
2. Скопируйте файлы в качестве примера в папки в рамках Проекта. В Командном окне введите:
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','slproject_codegen_demo'), ... fullfile(pwd),'f');
3. Закройте Проект из окна Project.
Чтобы закрыть этот проект с помощью API Проекта, в Командном окне, введите:
close(simulinkproject);
4. Откройте проект от выбора в Недавнем списке Проектов.
Чтобы открыть этот проект с помощью API Проекта, в Командном окне, введите:
simulinkproject(fullfile('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj'));
5. Чтобы добавить существующие файлы в проект, нажмите кнопку Project Files View и выберите All files View.
6. Выберите папки ball_tracking
, controller
, harnesses
, plant
, и utilities
, щелкните правой кнопкой по значку для одной из папок и выберите Add Folder to Project (Including Child Files).
Чтобы добавить эти файлы в проект с помощью API Проекта, в Командном окне, введите:
proj_modelBasedDesignCodeGen = simulinkproject; if (checkForProject ~= 2) addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'ball_tracking'); addPath(proj_modelBasedDesignCodeGen,'ball_tracking'); addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'controller'); addPath(proj_modelBasedDesignCodeGen,'controller'); addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'harnesses'); addPath(proj_modelBasedDesignCodeGen,'harnesses'); addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'plant'); addPath(proj_modelBasedDesignCodeGen,'plant'); addFolderIncludingChildFiles(proj_modelBasedDesignCodeGen,'utilities'); addPath(proj_modelBasedDesignCodeGen,'utilities'); end
7. Выберите work
папка, щелкните правой кнопкой по значку для одной из папок и выберите Project Path> Add к Пути к Проекту (Включая Подпапки). Если вы принимаете решение добавить, что эта папка к пути, сгенерированные файлы (артефакты) от симуляции и генерации кода доступна на пути к проекту. Если вы принимаете решение не включать сгенерированные файлы в проект, представление Dependency Analysis не отображает эти файлы.
Чтобы добавить эту папку в путь к проекту с помощью API Проекта, в Командном окне, введите:
if (checkForProject ~= 2) addPath(proj_modelBasedDesignCodeGen,'work'); end
8. Чтобы сделать Проект более доступным, задайте и установите свойства для ярлыков проекта. Нажмите All files View и выберите Project Files View. Откройте utilities
узел папки.
9. Выберите файлы clean_up_project.m
, generate_controller_code.m
, и set_up_project.m
, щелкните правой кнопкой по значку для одного из файлов и выберите Add Shortcut к> Общий. Выберите представление Shortcut Management.
10. Чтобы установить текущую рабочую папку, установите папку кэша симуляции и запустите другие скрипты настройки, когда вы откроете проект:
Выберите set_up_project.m
скрипт.
Щелкните правой кнопкой по файлу.
Выберите Set Shortcut Action> Startup.
Чтобы добавить этот скрипт настройки, чтобы спроектировать запуск с помощью API Проекта, в Командном окне, введите:
if (checkForProject ~= 2) addStartupFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/set_up_project.m')); end
11. Чтобы установить восстановление предыдущие настройки и запустить другие скрипты очистки, когда вы закрываете проект:
Выберите clean_up_project.m
скрипт.
Щелкните правой кнопкой по файлу.
Выберите Set Shortcut Action> Shutdown.
Чтобы добавить этот скрипт очистки, чтобы спроектировать завершение работы с помощью API Проекта, в Командном окне, введите:
if (checkForProject ~= 2) addShutdownFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/clean_up_project.m')); end
12. Закройте проект. Когда вы вновь открыли проект, запуски ярлыка Запуска.
Чтобы завершить эти операции с помощью API Проекта, в Командном окне, введите:
close(simulinkproject); simulinkproject(fullfile('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj')); run('set_up_project');
1. Откройте представление Dependency Analysis.
2. Нажмите Analyze. Проект анализирует зависимости от файла в проекте и обновляет представление зависимостей.
3. Используйте кнопку Zoom, чтобы масштабировать в карту зависимостей. Используйте клавиши со стрелками или перетащите нажатие кнопки с колесом ролика мыши, чтобы переместиться в карте.
4. Выберите MBDController.slx
модель на карте зависимости. Щелкните правой кнопкой по модели и выберите Open.
5. Когда модель откроется в Simulink, нажмите кнопку Build, чтобы сгенерировать код для модели. Или, используйте generate_controller_code
ярлык в проекте сгенерировать код.
evalc('rtwbuild(''MBDController'')');
6. Заметьте что содержимое work
папка не появляется в представлении Dependency Analysis. Эта настройка упрощает представление, чтобы указать на зависимости в файлах модели и.m файле скрипта.
bdclose all; run('clean_up_project'); close(simulinkproject); clear all;
addFile
, addFolderIncludingChildFiles
, addPath
, addReference
, addShortcut
, addLabel
, close
, createCategory
, createLabel
, export
, findCategory
, findFile
, findLabel
, ,
isLoaded
, listModifiedFiles
, listRequiredFiles
, refreshSourceControl
, reload
, removeCategory
, removeFile
, removeLabel
, removePath
, removeReference
, removeShortcut
Работа с файлами проекта (Simulink)
Автоматизируйте задачи запуска (Simulink)
Автоматизируйте задачи завершения работы (Simulink)
Создайте новый проект из папки (Simulink)
Создайте проект из модели (Simulink)