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

В этом примере показано, как использовать 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, findLabelisloaded , listModifiedFiles, listRequiredFiles, refreshSourceControl, reload, removeCategory, removeFile, removeLabel, removePath, removeReference, removeShortcut

Больше информации

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