exponenta event banner

Программная генерация кода и моделирование моделей с помощью проекта

В этом примере показано, как использовать API Project для создания нового проекта и автоматизации задач проекта для управления файлами. В нем описывается программное создание пустого проекта, добавление файлов и папок, настройка пути проекта, определение быстрых ссылок на проект, создание кода и моделирование модели кабельных трасс.

Project помогает организовать крупные проекты, управляя файлами и параметрами и предоставляя общий доступ к ним, находя необходимые файлы и взаимодействуя с системой управления версиями.

Управление проектом конструирования на основе модели

Примеры моделей обеспечивают контроллер, который устанавливает камеру, прикрепленную к двигателю постоянного тока, который отслеживает зеленый шар.

Подход MBD приводит к моделированию операций контроллера:

  • Модельный завод: Завод представляет собой двигатель постоянного тока, который вращается для изменения положения камеры.

  • Контроллер модели: В конструкции используется PID-контроллер с обратной связью по угловому положению для позиционирования двигателя постоянного тока.

  • Планировщик моделирует высокоуровневый планировщик слежения за мячом: планировщик проверяет достоверность положения зеленого мяча и насыщенность опорного угла. Планировщик обрабатывает экземпляры отсутствия мяча на экране для отслеживания.

Дизайн и проект имеют следующие папки.

Завод - Завод обеспечивает:

  • Модели с динамическими системами непрерывного времени, использующими базовые блоки Simulink.

  • Модели с системами линейного инварианта времени (LTI), использующие блок системы LTI.

  • Импорт и экспорт данных моделирования в рабочую область и из нее

  • Загрузка параметров в базовую рабочую область с использованием словаря данных и обратных вызовов модели.

Контроллер - Контроллер обеспечивает:

  • Модели с дискретно-временными динамическими системами, использующими базовые блоки Simulink.

  • Модели с дискретно-временными динамическими системами, использующими блок контроллера PID.

  • Обеспечение насыщения сигнала с использованием подсистемы преобразования PWM.

Отслеживание мяча - отслеживание мяча обеспечивает:

  • Основной алгоритм слежения за мячом.

  • Ограничитель и заземляющий блоки в качестве местозаполнителей.

  • Гибридный контроллер, который генерирует опорные углы двигателя с помощью Stateflow.

Жгуты - жгуты обеспечивают моделирование всей системы на верхнем уровне.

Создание пустого проекта и добавление файлов

1. Создайте пустой проект. На вкладке Главная щелкните Создать > Проект > Пустой проект.

Кроме того, создайте этот проект и используйте 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]
         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

Дополнительные сведения

Связанные примеры