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

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

Цели обучения

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

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

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

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

  • Возможность открытия и изменения 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 подсистема.

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

  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.

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

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

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

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

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

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

    • Выберите входные сигналы для маршрутизации к тестируемому модулю.

    • Выберите выходные сигналы для маршрутизации на объект.

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

    • Переходы скорости указателя между объектом и тестируемым модулем.

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

Запуск симуляционных тестов

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

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

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

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

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

Ключевые точки

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

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

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

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

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

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

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

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

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

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

    • Выберите входные сигналы для маршрутизации к тестируемому модулю.

    • Выберите выходные сигналы для маршрутизации на объект.

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

    • Переходы скорости указателя между объектом и тестируемым модулем.

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

Подробнее