В этом примере показано, как использовать API Project для создания нового проекта и автоматизации задач проекта для управления файлами. В нем описывается программное создание пустого проекта, добавление файлов и папок, настройка пути проекта, определение быстрых ссылок на проект, создание кода и моделирование модели кабельных трасс.
Project помогает организовать крупные проекты, управляя файлами и параметрами и предоставляя общий доступ к ним, находя необходимые файлы и взаимодействуя с системой управления версиями.
Примеры моделей обеспечивают контроллер, который устанавливает камеру, прикрепленную к двигателю постоянного тока, который отслеживает зеленый шар.
Подход MBD приводит к моделированию операций контроллера:
Модельный завод: Завод представляет собой двигатель постоянного тока, который вращается для изменения положения камеры.
Контроллер модели: В конструкции используется PID-контроллер с обратной связью по угловому положению для позиционирования двигателя постоянного тока.
Планировщик моделирует высокоуровневый планировщик слежения за мячом: планировщик проверяет достоверность положения зеленого мяча и насыщенность опорного угла. Планировщик обрабатывает экземпляры отсутствия мяча на экране для отслеживания.
Дизайн и проект имеют следующие папки.
Завод - Завод обеспечивает:
Модели с динамическими системами непрерывного времени, использующими базовые блоки Simulink.
Модели с системами линейного инварианта времени (LTI), использующие блок системы LTI.
Импорт и экспорт данных моделирования в рабочую область и из нее
Загрузка параметров в базовую рабочую область с использованием словаря данных и обратных вызовов модели.
Контроллер - Контроллер обеспечивает:
Модели с дискретно-временными динамическими системами, использующими базовые блоки Simulink.
Модели с дискретно-временными динамическими системами, использующими блок контроллера PID.
Обеспечение насыщения сигнала с использованием подсистемы преобразования PWM.
Отслеживание мяча - отслеживание мяча обеспечивает:
Основной алгоритм слежения за мячом.
Ограничитель и заземляющий блоки в качестве местозаполнителей.
Гибридный контроллер, который генерирует опорные углы двигателя с помощью Stateflow.
Жгуты - жгуты обеспечивают моделирование всей системы на верхнем уровне.
1. Создайте пустой проект. На вкладке Главная щелкните Создать > Проект > Пустой проект.
Кроме того, создайте этот проект и используйте currentProject, чтобы получить объект проекта для управления проектом из окна команд:
matlab.project.createProject('modelBasedDesignCodeGenProject');
proj_modelBasedDesignCodeGen = currentProjectproj_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]
DefinitionFilesType: FixedPathMultiFile
Description: ""
RootFolder: "C:\Users\ktripp\MATLAB\Projects\modelBasedDesignCodeGenProject"
SimulinkCacheFolder: ""
ProjectStartupFolder: "C:\Users\ktripp\MATLAB\Projects\modelBasedDesignCodeGenProject"
SimulinkCodeGenFolder: ""
2. Скопируйте файлы примеров в папки проекта.
Либо в окне команд введите:
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','slproject_codegen_demo'), ... fullfile(pwd),'f');
3. Добавление существующих файлов в проект:
Нажмите кнопку «Просмотр файлов проекта» и выберите «Просмотр всех файлов».
Выберите папки ball_tracking, controller, harnesses, plant, и utilitiesщелкните правой кнопкой мыши значок одной из папок и выберите «Добавить папку в проект» (включая дочерние файлы).
Либо добавьте эти файлы в проект программным способом из окна команд:
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 щелкните правой кнопкой мыши значок одной из папок и выберите «Путь к проекту» > «Добавить к пути к проекту» (включая вложенные папки). Если выбрать добавление этой папки в путь, на пути проекта будут доступны созданные файлы (артефакты) моделирования и создания кода. Если не включать созданные файлы в проект, график зависимостей не отображает эти файлы.
Либо добавьте эту папку в путь к проекту из окна команд:
addPath(proj_modelBasedDesignCodeGen,'work');5. Чтобы сделать проект более доступным, определите и задайте свойства быстрых ссылок на проект. В представлении «Файлы» перейдите на вкладку «Проект». Откройте окно utilities узел папки.
6. Выберите файлы clean_up_project.m, generate_controller_code.m, и set_up_project.mщелкните правой кнопкой мыши значок одного из файлов и выберите «Создать ярлык».
7. Чтобы задать текущую рабочую папку, задайте папку кэша моделирования и запустите другие сценарии установки при открытии проекта:
Выберите set_up_project.m сценарий.
Щелкните файл правой кнопкой мыши.
Выберите Выполнить при запуске.
Либо добавьте этот сценарий установки для запуска проекта из окна команд:
addStartupFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/set_up_project.m'));8. Чтобы восстановить предыдущие параметры и запустить другие сценарии очистки при закрытии проекта:
Выберите clean_up_project.m сценарий.
Щелкните файл правой кнопкой мыши.
Выберите Выполнить при завершении работы.
Также можно добавить сценарий очистки для программного завершения работы проекта из окна команд:
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. Используйте кнопку «Увеличить» для увеличения карты зависимостей. Используйте клавиши со стрелками или перетаскивайте с помощью колесика мыши для перемещения по карте.
c. Наведите курсор на стрелки зависимостей для проверки типа зависимостей. Например, сценарии и функции MATLAB выполняются посредством обратных вызовов модели.

2. Выберите MBDController.slx модель на карте зависимостей. Щелкните модель правой кнопкой мыши и выберите Открыть (Open).
3. При открытии модели в Simulink нажмите кнопку Построить (Build), чтобы создать код для модели. Или используйте generate_controller_code ярлык в проекте для создания кода.
Также можно создать код для модели из окна команд. Для этого примера установите разрешения на запись в значение MBDController.slxc затем создайте код для модели:
fileattrib('MBDController.slxc', '+w'); evalc('slbuild(''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