В этом примере показано, как использовать API Проекта, чтобы создать новый проект и автоматизировать задачи проекта для управления файлами. Это покрывает, как программно создать пустой проект, добавьте файлы и папки, создайте путь к проекту, задайте ярлыки проекта, сгенерируйте код и симулируйте модель тестовой обвязки.
Проект помогает вам организовать большие проекты управлением и совместным использованием файлов и настроек, находя требуемые файлы, и взаимодействуя с системой контроля версий.
Модели в качестве примера предоставляют контроллеру, который позиционирует камеру, зафиксированную к двигателю постоянного тока, который отслеживает зеленый мяч.
Подход MBD приводит к моделированию работы контроллера:
Объект модели: объект является двигателем постоянного тока, который вращается, чтобы изменить местоположение камеры.
Контроллер модели: проект использует ПИД-регулятор с обратной связью на угловом положении для расположения двигателя постоянного тока.
Высокоуровневый планировщик отслеживания мяча модели: планировщик проверяет на валидность положения зеленого мяча и насыщения опорного угла. Планировщик обрабатывает экземпляры никакого мяча на экране, чтобы отследить.
Проект и Проект имеют следующие папки.
Объект - объект обеспечивает:
Модели с динамическими системами непрерывного времени, которые используют основные блоки Simulink.
Модели с системами линейного независимого от времени (LTI), которые используют системный блок LTI.
Импорт и экспорт данных моделирования к и из рабочей области
Загрузка параметров в базовое рабочее пространство, которые используют словарь данных и коллбэки модели.
Контроллер - контроллер обеспечивает:
Модели с динамическими системами дискретного времени, которые используют основные блоки Simulink.
Модели с динамическими системами дискретного времени, которые используют Блок ПИД-регулятора.
Осуществление насыщения сигнала, которые используют подсистему Преобразования PWM.
Отслеживание мяча - отслеживание мяча обеспечивает:
Основной алгоритм отслеживания мяча.
Терминатор строки и земля блокируются как заполнители.
Гибридный контроллер, который генерирует моторные опорные углы с помощью Stateflow.
Обвязки - обвязки обеспечивают симуляцию верхнего уровня полной системы.
1. Создайте пустой проект. На вкладке Home нажмите New> Project> Blank Project.
В качестве альтернативы создайте этот проект и используйте currentProject, чтобы получить объект проекта управлять проектом из Командного окна:
matlab.project.createProject('modelBasedDesignCodeGenProject');
proj_modelBasedDesignCodeGen = currentProject
proj_modelBasedDesignCodeGen = Project with properties: Name: "modelBasedDesignCodeGenProject" SourceControlIntegration: "" RepositoryLocation: "" SourceControlMessages: [1×0 string] ReadOnly: 0 TopLevel: 1 Dependencies: [1×1 digraph] Categories: [1×1 matlab.project.Category] Files: [1×0 matlab.project.ProjectFile] Shortcuts: [1×0 matlab.project.Shortcut] ProjectPath: [1×0 matlab.project.PathFolder] ProjectReferences: [1×0 matlab.project.ProjectReference] StartupFiles: [1×0 string] ShutdownFiles: [1×0 string] Description: "" RootFolder: "C:\workSpace\modelBasedDesignCodeGenProject" SimulinkCodeGenFolder: "" SimulinkCacheFolder: "" ProjectStartupFolder: "C:\workSpace\modelBasedDesignCodeGenProject"
2. Скопируйте файлы в качестве примера в папки в рамках Проекта.
В качестве альтернативы в Командном окне, введите:
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','slproject_codegen_demo'), ... fullfile(pwd),'f');
3. Добавьте существующие файлы в проект:
Нажмите кнопку Project Files View и выберите All files View.
Выберите папки ball_tracking
, controller
, harnesses
, plant
, и utilities
, щелкните правой кнопкой по значку для одной из папок и выберите Add Folder to Project (Including Child Files).
В качестве альтернативы добавьте эти файлы в проект программно из Командного окна:
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');
4. Выберите work
папка, щелкните правой кнопкой по значку для одной из папок и выберите Project Path> Add к Пути к Проекту (Включая Подпапки). Если вы принимаете решение добавить, что эта папка к пути, сгенерированные файлы (артефакты) от симуляции и генерации кода доступна на пути к проекту. Если вы принимаете решение не включать сгенерированные файлы в проект, диаграмма зависимостей не отображает эти файлы.
В качестве альтернативы добавьте эту папку в путь к проекту из Командного окна:
addPath(proj_modelBasedDesignCodeGen,'work');
5. Чтобы сделать проект более доступным, задайте и установите свойства для ярлыков проекта. В Представлении Файлов выберите вкладку Project. Откройте utilities
узел папки.
6. Выберите файлы clean_up_project.m
, generate_controller_code.m
, и set_up_project.m
, щелкните правой кнопкой по значку для одного из файлов и выберите Create Shortcut.
7. Чтобы установить текущую рабочую папку, установите папку кэша симуляции и запустите другие скрипты настройки, когда вы откроете проект:
Выберите set_up_project.m
скрипт.
Щелкните правой кнопкой по файлу.
Выберите Run at Startup.
В качестве альтернативы добавьте этот скрипт настройки, чтобы спроектировать запуск из Командного окна:
addStartupFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/set_up_project.m'));
8. Чтобы восстановить предыдущие настройки и запустить другие скрипты очистки, когда вы закрываете проект:
Выберите clean_up_project.m
скрипт.
Щелкните правой кнопкой по файлу.
Выберите Run at Shutdown.
В качестве альтернативы добавьте скрипт очистки, чтобы спроектировать завершение работы программно из Командного окна:
addShutdownFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/clean_up_project.m'));
9. Вновь откройте проект запустить ярлык Запуска.
В качестве альтернативы перезагрузите проект и запустите set_up_project
из командного окна:
reload(proj_modelBasedDesignCodeGen);
run('set_up_project');
1. На вкладке Project нажмите Dependency Analyzer, чтобы запустить анализ зависимостей на всех файлах в вашем проекте.
Диаграмма зависимостей отображает вашу структуру проекта и зависимости от файлов. Это показывает, как файлы относятся друг к другу. Каждый элемент в графике представляет файл, и каждая стрела является зависимостью.
Содержимое work
папка не появляется в диаграмме зависимостей. Эта настройка упрощает представление, чтобы указать на зависимости в файлах модели и .m
файл скрипта.
a. Исследуйте панель Свойств справа на полезную информацию о вашем проекте, такой как требуется проблемные файлы и продукты.
b. Используйте кнопку Zoom In, чтобы масштабировать в карту зависимостей. Используйте клавиши со стрелками или перетащите нажатие кнопки с колесом ролика мыши, чтобы переместиться в карте.
c. Наведите на стрелы зависимости, чтобы исследовать тип зависимости. Например, скрипты MATLAB и функции запускаются коллбэками модели.
2. Выберите MBDController.slx
модель на карте зависимости. Щелкните правой кнопкой по модели и выберите Open.
3. Когда модель откроется в Simulink, нажмите кнопку Build, чтобы сгенерировать код для модели. Или, используйте generate_controller_code
ярлык в проекте сгенерировать код.
В качестве альтернативы сгенерируйте код для модели из Командного окна. Ради этого примера, полномочий записи набора к MBDController.slxc
затем сгенерируйте код для модели:
fileattrib('MBDController.slxc', '+w'); evalc('rtwbuild(''MBDController'')');
4. Закройте проект из окна Project.
В качестве альтернативы закройте этот проект и запустите clean_up_project
из командного окна:
run('clean_up_project');
close(proj_modelBasedDesignCodeGen);
addFile
, addFolderIncludingChildFiles
, addPath
, addReference
, addShortcut
, addLabel
, close
, createCategory
, createLabel
, export
, findCategory
, findFile
, findLabel
isloaded
, listModifiedFiles
, listRequiredFiles
, refreshSourceControl
, reload
, removeCategory
, removeFile
, removeLabel
, removePath
, removeReference
, removeShortcut