Сгенерируйте код и симулируйте модели программно с проектом

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

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

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

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

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

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

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

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

Проект и Проект имеют следующие папки.

Объект -- объект предусматривает:

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

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

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

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

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

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

  • Модели с динамическими системами в дискретном времени, которые используют блок ПИД-регулятор.

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

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

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

  • Терминатор строки и заземляющие блоки как заполнители.

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

Обвязки - обвязки обеспечивают симуляцию всей системы верхнего уровня.

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

1. Создайте пустой проект. На вкладке «Вкладке Home» нажмите «Создать» > «Проект» > «Пустой проект».

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

Кроме того, в Командном окне введите:

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щелкните правой кнопкой мыши значок для одной из папок и выберите Добавить папку в проект (Включая дочерние файлы).

Кроме того, добавьте эти файлы к проекту программно из Командного окна:

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 to the Project Path (Включая подпапки). Если вы решите добавить эту папку к пути, сгенерированные файлы (программные продукты) из симуляции и генерации кода будут доступны в пути проекта. Если вы принимаете решение не включать сгенерированные файлы в проект, график зависимостей не отображает эти файлы.

Кроме того, добавьте эту папку в путь проекта из Командного окна:

addPath(proj_modelBasedDesignCodeGen,'work');

5. Чтобы сделать проект более доступным, задайте и установите свойства для ярлыков проекта. В представлении Files View выберите вкладку Project. Откройте 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 скрипт.

  • Щелкните файл правой кнопкой мыши.

  • Выберите 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 файл скрипта.

а. Исследуйте панель свойств справа, чтобы получить полезную информацию о проекте, например, о необходимых продуктах и файлах проблем.

б. Используйте кнопку «Масштабирование», чтобы увеличить изображение карты зависимостей. Используйте клавиши со стрелами или перетащите мышью колесо ролика мыши, чтобы перемещаться по карте.

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

Дополнительная информация

Похожие примеры