Планируйте выполнение нескольких контроллеров

Simulink® функция является графическим объектом, который вы заполняете блоками Simulink и вызываете в действиях состояний и переходов. Функции Simulink поддерживаются только в Stateflow® графики в моделях Simulink. Для получения дополнительной информации см. «Повторное использование компонентов Simulink в диаграммах Stateflow».

Цель руководства

Цель этого руководства состоит в том, чтобы использовать функции Simulink в диаграмме Stateflow, чтобы улучшить проект модели с именем sf_temporal_logic_scheduler.

Обоснование улучшения проекта модели

The sf_temporal_logic_scheduler модель содержит диаграмму Stateflow и три подсистемы вызова функций. Эти блоки взаимодействуют следующим образом:

  • График транслирует выходные события A1, A2, и A3 для запуска подсистем вызова функций.

  • Подсистемы A1, A2 и A3 выполняться с различными скоростями, определенными графиком.

  • Подсистема выводит канал непосредственно на график.

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

Можно заменить подсистемы вызова функций функциями Simulink внутри графика, когда:

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

  • Другим блокам в модели не нужен доступ к выходам подсистемы.

Редактируйте модель, чтобы использовать функции Simulink

В последующих разделах описывается, как заменить блоки подсистемы вызова функций в модели Simulink на функции Simulink в диаграмме Stateflow. Эта процедура уменьшает количество объектов в модели, сохраняя те же результаты симуляции.

ШагЗадачаСсылка
1Откройте модель.Откройте модель
2Переместите содержимое подсистем вызова функций в функции Simulink на графике.Добавьте функции Simulink к графику
3Измените возможности данных уровня графика на Local.Изменение возможностей данных графика
4Замените широковещательные передачи событий вызовами функций.Обновите состояния активности на графике
5Проверьте, эти функции заданы входы и выходы.Добавление данных к графику
6Удалите неиспользованные элементы в модели.Удаление неиспользованных элементов в модели

Примечание

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

Откройте модель

Откройте sf_temporal_logic_scheduler модель. Если вы моделируете модель, вы видите этот результат в возможности.

Для получения дополнительной информации смотрите Запланировать выполнение подсистем в определенные моменты времени.

Добавьте функции Simulink к графику

Выполните следующие действия, чтобы добавить функции Simulink к графику Temporal Logic Scheduler.

  1. В модели Simulink щелкните правой кнопкой мыши блок A1 в правом нижнем углу и выберите Cut из контекстного меню.

  2. Откройте график Temporal Logic Scheduler.

  3. На графике щелкните правой кнопкой мыши вне любых состояний и выберите Paste из контекстного меню.

  4. Разверните новую функцию Simulink так, чтобы подпись помещалась внутри функционального поля.

    Совет

    Чтобы изменить размер шрифта функции, щелкните правой кнопкой по полю функции и выберите новый размер из Font Size меню.

  5. Переименуйте функцию Simulink из A1 на f1 путем ввода y = f1(u) в поле функции.

  6. Повторите шаги с 1 по 5 для следующих случаев:

    • Копирование содержимого A2 в функцию Simulink с именем f2.

    • Копирование содержимого A3 в функцию Simulink с именем f3.

    Примечание

    Новые функции находятся на уровне графика, потому что оба состояния FastScheduler и SlowScheduler требуется доступ к выходам функции.

Изменение возможностей данных графика

В Model Explorer измените область видимости данных уровня графика y на Local потому что вычисление для этих данных теперь происходит внутри графика.

Обновите состояния активности на графике

В редакторе Stateflow можно заменить трансляции событий в состояниях активности на вызовы функций.

  1. Отредактируйте состояния активности в FastScheduler и SlowScheduler вызов функций Simulink f1, f2, и f3.

  2. В обоих состояниях обновляйте каждую during действие следующим образом.

    du: y = u1-y2;

Добавление данных к графику

Для on every Состояния активности из FastScheduler и SlowScheduler, задайте три данные. (Для получения дополнительной информации см. раздел «Добавление данных Stateflow».)

  1. Добавьте локальные y1 данных и y2 на график.

  2. Добавьте выходные данные y3 на график.

  3. В модели соедините выходной порт для y3 к входному порту возможностей.

    Совет

    Чтобы развернуть блок Scope, щелкните правой кнопкой мыши и выберите Rotate & Flip > Flip Block из контекстного меню.

Удаление неиспользованных элементов в модели

  1. В Model Explorer удалите выходные события A1, A2, и A3 и входных данных u2 поскольку подсистемы вызова функций больше не существуют.

  2. Удалите все штриховые сигнальные линии из вашей модели.

Запуск новой модели

Ваша новая модель выглядит примерно так:

Если вы моделируете новую модель, результаты совпадают с результатами исходного проекта.

Похожие темы