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

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

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

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

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

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

Предпосылки

  • Способность открыться и изменить модели 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
Маршрутизация сигнала 
Не используйте блоки, которые изменяют значение сигнала, такого как Сумма и Интегратор 

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

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

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

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

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

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

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

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

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

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

  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.

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