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

Этот пример показывает, как добавить файлы в новый проект, настроить ярлыки проекта, сгенерируйте код и моделируйте модель тестовой обвязки. Модели в этом примере демонстрируют некоторые принципы Модельно-ориентированного проектирования (MBD).

Этот пример также показывает, как использовать API Проекта, чтобы выполнить много операций проекта.

Управляйте проектом модельно-ориентированного проектирования

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

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

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

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

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

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

Объект - объект обеспечивает:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Создайте Проект из шаблона Blank Project, затем закройте проект.

Создать этот проект из начальной страницы Simulink:

  • В Командном окне введите simulink.

  • Выберите шаблон Blank Project из начальной страницы.

  • Создайте проект modelBasedDesignCodeGenProject.

Чтобы создать этот проект с помощью API Проекта, в Командном окне, введите:

checkForProject = exist('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj');
if (checkForProject ~= 2) 
   proj_modelBasedDesignCodeGen = Simulink.createFromTemplate('blank_project.sltx','Name','modelBasedDesignCodeGenProject','Folder','./ModelBasedDesignCodeGen');
else
   proj_templateCodeGen = simulinkproject('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj');
end

2. Скопируйте файлы в качестве примера в папки в рамках Проекта. В Командном окне введите:

copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','slproject_codegen_demo'), ...
fullfile(pwd),'f');

3. Закройте Проект из окна Project.

Чтобы закрыть этот проект с помощью API Проекта, в Командном окне, введите:

close(simulinkproject);

4. Откройте проект от выбора в Недавнем списке Проектов.

Чтобы открыть этот проект с помощью API Проекта, в Командном окне, введите:

simulinkproject(fullfile('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj'));

5. Чтобы добавить существующие файлы в проект, нажмите кнопку Project Files View и выберите All files View.

6. Выберите папки ball_tracking, controller, harnesses, plant, и utilities, щелкните правой кнопкой по значку для одной из папок и выберите Add Folder to Project (Including Child Files).

Чтобы добавить эти файлы в проект с помощью API Проекта, в Командном окне, введите:

proj_modelBasedDesignCodeGen = simulinkproject; 
if (checkForProject ~= 2)
   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');
end

7. Выберите папку work, щелкните правой кнопкой по значку для одной из папок и выберите Project Path> Add к Пути к Проекту (Включая Подпапки). Если вы принимаете решение добавить, что эта папка к пути, сгенерированные файлы (артефакты) от симуляции и генерации кода доступна на пути к проекту. Если вы принимаете решение не включать сгенерированные файлы в проект, представление Dependency Analysis не отображает эти файлы.

Чтобы добавить эту папку в путь к проекту с помощью API Проекта, в Командном окне, введите:

if (checkForProject ~= 2)
    addPath(proj_modelBasedDesignCodeGen,'work');
end

8. Чтобы сделать Проект более доступным, задайте и установите свойства для ярлыков проекта. Нажмите All files View и выберите Project Files View. Откройте узел папки utilities.

9. Выберите файлы clean_up_project.m, generate_controller_code.m, и set_up_project.m, щелкните правой кнопкой по значку для одного из файлов и выберите Add Shortcut к> Общий. Выберите представление Shortcut Management.

10. Чтобы установить текущую рабочую папку, установите папку кэша симуляции и запустите другие скрипты настройки, когда вы откроете проект:

  • Выберите скрипт set_up_project.m.

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

  • Выберите Set Shortcut Action> Startup.

Чтобы добавить этот скрипт настройки, чтобы спроектировать запуск с помощью API Проекта, в Командном окне, введите:

if (checkForProject ~= 2)
    addStartupFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/set_up_project.m'));
end

11. Чтобы установить восстановление предыдущие настройки и запустить другие скрипты очистки, когда вы закрываете проект:

  • Выберите скрипт clean_up_project.m.

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

  • Выберите Set Shortcut Action> Shutdown.

Чтобы добавить этот скрипт очистки, чтобы спроектировать завершение работы с помощью API Проекта, в Командном окне, введите:

if (checkForProject ~= 2)
    addShutdownFile(proj_modelBasedDesignCodeGen,fullfile(pwd,'/utilities/clean_up_project.m'));
end

12. Закройте проект. Когда вы вновь открыли проект, выполнения ярлыка Запуска.

Чтобы завершить эти операции с помощью API Проекта, в Командном окне, введите:

close(simulinkproject);
simulinkproject(fullfile('./ModelBasedDesignCodeGen/ModelBasedDesignCodeGenProject.prj'));
run('set_up_project');

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

1. Откройте представление Dependency Analysis.

2. Нажмите Analyze. Проект анализирует зависимости от файла в проекте и обновляет представление зависимостей.

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

4. Выберите модель MBDController.slx на карте зависимости. Щелкните правой кнопкой по модели и выберите Open.

5. Когда модель откроется в Simulink, нажмите кнопку Build, чтобы сгенерировать код для модели. Или, используйте ярлык generate_controller_code в проекте сгенерировать код.

evalc('rtwbuild(''MBDController'')');

6. Заметьте, что содержимое папки work не появляется в представлении Dependency Analysis. Эта настройка упрощает представление, чтобы указать на зависимости в образцовых файлах и.m файле скрипта.

bdclose all;
run('clean_up_project');
close(simulinkproject);
clear all;

Смотрите также

addFile, addFolderIncludingChildFiles, addPath, addReference, addShortcut, addLabel, close, createCategory, createLabel, removeLabel(was detachLabelFromFile ), export, findCategory, findFile, findLabel, findLabelDefinition(renamed to findLabel), isLoaded, listModifiedFiles, listRequiredFiles, refreshSourceControl, reload, removeCategory, removeFile, removeLabel, removePath, removeReference, removeShortcut

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

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