Сконфигурируйте модель, сгенерируйте код и симулируйте

Об этом примере

Изучение целей

  • Узнайте о функциональном поведении модели в качестве примера.

  • Узнайте о роли тестовой обвязки в качестве примера и ее компонентов.

  • Запустите тесты симуляции на модели.

Необходимые условия

  • Способность открыться и изменить модели Simulink® и подсистемы.

  • Изучите подсистемы и как посмотреть детали подсистемы.

  • Изучите модели, на которые ссылаются, и как посмотреть детали модели, на которые ссылаются.

  • Способность установить параметры конфигурации модели.

Необходимые файлы

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

  • rtwdemo_throttlecntrl файл модели

  • rtwdemo_throttlecntrl_testharness файл модели

Функциональный проект модели

Этот пример использует простое, но функционально завершитесь, модель в качестве примера контроллера дросселя. Особенности модели избыточные алгоритмы управления. Модель подсвечивает стандартную структуру модели и набор базисных блоков в проекте алгоритма.

Просмотрите топ-модель

Открытый rtwdemo_throttlecntrl и сохраните копию как throttlecntrl в перезаписываемом месте на вашем пути MATLAB.

Примечание

Эта модель использует программное обеспечение Stateflow®.

Верхний уровень модели состоит из следующих элементов:

ПодсистемыPI_ctrl_1
PI_ctrl_2
Define_Throt_Param
Pos_Command_Arbitration
Вход верхнего уровняpos_rqst
fbk_1
fbk_2
Выход верхнего уровняpos_cmd_one
pos_cmd_two
ThrotComm1
Маршрутизация сигнала 
Не используйте блоки, которые изменяют значение сигнала, такого как Sum и Integrator 

Размещение использует основной архитектурный стиль для моделей:

  • Разделение вычислений от маршрутизации сигнала (линии и шины)

  • Разделение в подсистемы

Можно применить этот стиль к широкому спектру моделей.

Просмотрите подсистемы

Исследуйте две из подсистем в топ-модели.

  1. Если не уже открытый, открытый throttlecntrl.

    Две подсистемы в топ-модели представляют контроллеры пропорционального интеграла (PI), PI_ctrl_1 и PI_ctrl_2. На данном этапе, эти идентичные подсистемы, используйте идентичные данные.

  2. Откройте PI_ctrl_1 подсистема.

    ПИ-контроллеры в модели от библиотеки, группы связанных блоков или моделей для повторного использования. Библиотеки предоставляют один из двух методов для включения и многократного использования моделей. Второй метод, ссылка модели, описан в Тестовой среде Симуляции. Вы не можете отредактировать блок, который вы добавляете в модель от библиотеки. Отредактируйте блок в библиотеке так, чтобы экземпляры блока в различных моделях остались сопоставимыми.

  3. Откройте Pos_Command_Arbitration подсистема. Эта диаграмма Stateflow выполняет основную проверку ошибок на двух сигналах команды. Если сигналы команды слишком далеко друг от друга, схема Stateflow устанавливает выход на fail_safe положение.

  4. Закройте throttlecntrl.

Тестовая среда симуляции

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

  • Разделяет тестовые данные от алгоритма управления.

  • Разделяет объект или модель обратной связи от алгоритма управления.

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

Модель тестовой обвязки для этого примера реализует общую тестовую среду симуляции, состоящую из следующих частей:

  • Модуль под тестом

  • Источник тестового вектора

  • Оценка и логгирование

  • Объект или система с обратной связью

  • Масштабирование ввода и вывода

Исследуйте тестовую среду симуляции.

  1. Откройте модель rtwdemo_throttlecntrl_testharness тестовой обвязки и сохраните копию как throttlecntrl_testharness в перезаписываемом месте на вашем пути MATLAB.

  2. Настройте свой throttlecntrl модель как алгоритм управления тестовой обвязки.

    1. Откройте Unit_Under_Test блокируйте и просмотрите алгоритм управления.

    2. Просмотрите параметры модели - ссылки путем щелчка правой кнопкой по Unit_Under_Test блокируйтесь и Block Parameters (ModelReference) выбора.

      rtwdemo_throttlecntrl появляется как имя модели, на которую ссылаются.

    3. Измените значение Model name к throttlecntrl.

    4. Обновите диаграмму модели тестовой обвязки путем нажатия на Simulation> Update Diagram.

    Алгоритмом управления является unit under test, как обозначено под названием блок Model, Unit_Under_Test.

    Блок Model предоставляет метод для многократного использования компонентов. От топ-модели это позволяет вам ссылаться на другие модели (прямо или косвенно) как на compiled functions. По умолчанию программное обеспечение Simulink перекомпилировало модель, когда модели, на которые ссылаются, изменяются. Скомпилированные функции имеют следующие преимущества перед библиотеками:

    • Время симуляции быстрее для больших моделей.

    • Можно непосредственно симулировать скомпилированные функции.

    • Симуляция требует меньшей памяти. Только одна копия скомпилированной модели находится в памяти, даже когда на модель ссылаются многократно.

  3. Откройте test vector source, реализованный в этой тестовой обвязке как Test_Vectors подсистема.

    Подсистема использует блок Signal Builder для источника тестового вектора. Блок имеет данные, которые управляют симуляцией (PosRequest) и обеспечивает ожидаемые результаты, используемые Verification подсистема. Эта тестовая обвязка в качестве примера использует только один набор тестовых данных. Как правило, создайте тестовый набор, который полностью осуществляет систему.

  4. Откройте подсистему evaluation and logging, реализованную в этой тестовой обвязке как подсистема Verification.

    Тестовая обвязка сравнивает результаты симуляции алгоритма управления с golden data — результаты испытаний, которые предоставляют желаемое поведение для алгоритма управления, как сертифицируется экспертом. В Verification подсистема, блок Assertion сравнивает симулированное положение значения дросселя от объекта против золотого значения от тестовой обвязки. Если различие между двумя сигналами больше 5%, тестовые сбои и блок Assertion останавливает симуляцию.

    В качестве альтернативы можно оценить данные моделирования после того, как симуляция завершит выполнение. Выполните оценку или со скриптами MATLAB® или со сторонними программами. Оценка поствыполнения обеспечивает большую гибкость в анализе данных. Однако это требует ожидания, пока выполнение не завершено. Объединение этих двух методов может обеспечить очень гибкую и эффективную тестовую среду.

  5. Откройте plant or feedback system, реализованный в этой тестовой обвязке как Plant подсистема.

    Plant подсистема моделирует динамику дросселя с передаточной функцией в канонической форме. Можно создать модели объекта управления к различным уровням точности. Распространено использовать различные модели объекта управления на различных этапах тестирования.

  6. Откройте подсистемы input and output scaling, реализованные в этой тестовой обвязке как Input_Signal_Scaling и Output_Signal_Scaling.

    Подсистемы, которые масштабируют ввод и вывод, выполняют следующие первичные функции:

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

    • Выберите выходные сигналы, чтобы направить к объекту.

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

    • Обработайте переходы уровня между объектом и модулем под тестом.

  7. Сохраните и закройте throttlecntrl_testharness.

Запустите тесты симуляции

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

  2. Откройте свою копию модели тестовой обвязки, throttlecntrl_testharness.

  3. Запустите симуляцию модели тестовой обвязки. Когда симуляция завершена, следующие результаты появляются.

    График нижнего правого угла показывает различие между ожидаемым (золотым) положением дросселя и положением дросселя, что объект вычисляет. Если различие между этими двумя значениями больше ±0.05, остановки симуляции.

  4. Сохраните и закройте контроллер дросселя и модели тестовой обвязки.

Ключевые пункты

  • Архитектура базовой модели разделяет вычисления от маршрутизации сигнала и делит модель в подсистемы

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

  • Если вы представляете свой алгоритм управления в тестовой обвязке как блок Model, задаете имя модели алгоритма управления в диалоговом окне Model Reference Parameters.

  • Тестовая обвязка является моделью, которая оценивает алгоритм управления. Как правило, обвязка состоит из модуля под тестом, источником тестового вектора, оценкой и логгированием, объектом или системой с обратной связью и компонентами масштабирования ввода и вывода.

  • Модуль под тестом является протестированным алгоритмом управления.

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

  • Во время верификации тестовая обвязка сравнивает результаты симуляции алгоритма управления с золотыми данными и регистрирует результаты.

  • Компонент объекта или обратной связи тестовой обвязки моделирует среду, которой управляют.

  • При разработке тестовой обвязки,

    • Масштабируйте компоненты ввода и вывода.

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

    • Выберите выходные сигналы, чтобы направить к объекту.

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

    • Обработайте переходы уровня между объектом и модулем под тестом.

  • Перед рабочей симуляцией или завершающейся верификацией, рассмотрите проверку модели с Model Advisor.

Узнать больше