В этом примере показано, как использовать API Проекта, чтобы создать новый проект и автоматизировать задачи проекта для управления файлами. Это покрывает, как программно создать пустой проект, добавьте файлы и папки, создайте путь к проекту, задайте ярлыки проекта, сгенерируйте код и симулируйте модель тестовой обвязки.
Проект помогает вам организовать большие проекты управлением и совместным использованием файлов и настроек, находя требуемые файлы, и взаимодействуя с системой контроля версий.
Модели в качестве примера предоставляют контроллеру, который позиционирует камеру, зафиксированную к двигателю постоянного тока, который отслеживает зеленый мяч.
Подход MBD приводит к моделированию работы контроллера:
Объект модели: объект является двигателем постоянного тока, который вращается, чтобы изменить местоположение камеры.
Контроллер модели: проект использует ПИД-регулятор с обратной связью на угловом положении для расположения двигателя постоянного тока.
Высокоуровневый планировщик отслеживания мяча модели: планировщик проверяет на валидность положения зеленого мяча и насыщения опорного угла. Планировщик обрабатывает экземпляры никакого мяча на экране, чтобы отследить.
Проект и Проект имеют следующие папки.
Объект - объект обеспечивает:
Модели с динамическими системами непрерывного времени, которые используют основные блоки Simulink.
Модели с системами линейного независимого от времени (LTI), которые используют системный блок LTI.
Импорт и экспорт данных моделирования к и из рабочей области
Загрузка параметров в базовое рабочее пространство, которые используют словарь данных и коллбэки модели.
Контроллер - контроллер обеспечивает:
Модели с динамическими системами дискретного времени, которые используют основные блоки Simulink.
Модели с динамическими системами дискретного времени, которые используют Блок ПИД-регулятора.
Осуществление насыщения сигнала, которые используют подсистему Преобразования PWM.
Отслеживание мяча - отслеживание мяча обеспечивает:
Основной алгоритм отслеживания мяча.
Терминатор строки и земля блокируются как заполнители.
Гибридный контроллер, который генерирует моторные опорные углы с помощью Stateflow.
Обвязки - обвязки обеспечивают симуляцию верхнего уровня полной системы.
1. Создайте пустой проект. На вкладке Home нажмите New> Project> Blank Project.
В качестве альтернативы создайте этот проект и используйте 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]
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, findLabelisloaded , listModifiedFiles, listRequiredFiles, refreshSourceControl, reload, removeCategory, removeFile, removeLabel, removePath, removeReference, removeShortcut