Этот пример показывает, как добавить файлы в новый проект, настроить ярлыки проекта, сгенерируйте код и моделируйте модель тестовой обвязки. Модели в этом примере демонстрируют некоторые принципы Модельно-ориентированного проектирования (MBD).
Этот пример также показывает, как использовать API Проекта, чтобы выполнить много операций проекта.
Модели в качестве примера предоставляют контроллеру, который располагает камеру, зафиксированную в двигатель постоянного тока, который отслеживает зеленый шар.
Подход MBD приводит к моделированию работы контроллера:
Образцовый объект: объект является двигателем постоянного тока, который вращается, чтобы изменить местоположение камеры.
Образцовый контроллер: проект использует ПИД-регулятор с обратной связью на угловом положении для расположения двигателя постоянного тока.
Образцовый высокоуровневый планировщик отслеживания шара: планировщик проверяет на валидность положения зеленого шара и насыщения опорного угла. Планировщик обрабатывает экземпляры никакого шара на экране, чтобы отследить.
Проект и Проект имеют следующие разделы (папки).
Объект - объект обеспечивает:
Модели с непрерывно-разовыми динамическими системами, которые используют основные блоки Simulink.
Модели с системами линейного независимого от времени (LTI), которые используют системный блок LTI.
Импорт и экспорт данных моделирования к и из рабочей области
Загрузка параметров в базовое рабочее пространство, которые используют словарь данных и образцовые коллбэки.
Контроллер - контроллер обеспечивает:
Модели с динамическими системами дискретного времени, которые используют основные блоки Simulink.
Модели с динамическими системами дискретного времени, которые используют Блок ПИД-регулятора.
Осуществление насыщения сигнала, которые используют подсистему Преобразования PWM.
Отслеживание шара - отслеживание шара обеспечивает:
Основной алгоритм отслеживания шара.
Терминатор строки и земля блокируются как заполнители.
Гибридный контроллер, который генерирует моторные опорные углы с помощью Stateflow.
Обвязки - обвязки обеспечивают симуляцию верхнего уровня полной системы.
1. Создайте Проект из шаблона Blank Project, затем закройте проект.
Создать этот проект из начальной страницы Simulink:
В Командном окне введите simulink
.
Выберите шаблон Blank Project из начальной страницы.
Создайте проект modelBasedDesignCodeGenProject
.
Чтобы создать этот проект с помощью API Проекта, в Командном окне, введите:
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
, removeLabel(was detachLabelFromFile )
, export
, findCategory
, findFile
, findLabel
, findLabelDefinition(renamed to findLabel)
, isLoaded
, listModifiedFiles
, listRequiredFiles
, refreshSourceControl
, reload
, removeCategory
, removeFile
, removeLabel
, removePath
, removeReference
, removeShortcut
Работа с файлами проекта (Simulink)
Автоматизируйте задачи запуска (Simulink)
Автоматизируйте задачи завершения работы (Simulink)
Создайте новый проект из папки (Simulink)
Создайте проект из модели (Simulink)