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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

user_root = userpath;
checkForFolder = exist(fullfile(user_root,'user_proj'));
if (checkForFolder ~= 2)
    mkdir(user_root,'user_proj');
    cd(fullfile(user_root,'user_proj'));
else
    cd(fullfile(user_root,'user_proj'));
end
Warning: Directory already exists.
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, export, findCategory, findFile, findLabel, , isLoaded, listModifiedFiles, listRequiredFiles, refreshSourceControl, reload, removeCategory, removeFile, removeLabel, removePath, removeReference, removeShortcut

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

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