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 в диаграмме Stateflow. Эта процедура уменьшает количество объектов в модели, сохраняя те же результаты симуляции.
Шаг | Задача | Ссылка |
---|---|---|
1 | Откройте модель. | Откройте модель |
2 | Переместите содержимое подсистем вызова функций в функции Simulink на графике. | Добавьте функции Simulink к графику |
3 | Измените возможности данных уровня графика на Local . | Изменение возможностей данных графика |
4 | Замените широковещательные передачи событий вызовами функций. | Обновите состояния активности на графике |
5 | Проверьте, эти функции заданы входы и выходы. | Добавление данных к графику |
6 | Удалите неиспользованные элементы в модели. | Удаление неиспользованных элементов в модели |
Примечание
Чтобы пропустить шаги преобразования, вы можете получить прямой доступ к новой модели.
Откройте sf_temporal_logic_scheduler
модель. Если вы моделируете модель, вы видите этот результат в возможности.
Для получения дополнительной информации смотрите Запланировать выполнение подсистем в определенные моменты времени.
Выполните следующие действия, чтобы добавить функции Simulink к графику Temporal Logic Scheduler.
В модели Simulink щелкните правой кнопкой мыши блок A1 в правом нижнем углу и выберите Cut из контекстного меню.
Откройте график Temporal Logic Scheduler.
На графике щелкните правой кнопкой мыши вне любых состояний и выберите Paste из контекстного меню.
Разверните новую функцию Simulink так, чтобы подпись помещалась внутри функционального поля.
Совет
Чтобы изменить размер шрифта функции, щелкните правой кнопкой по полю функции и выберите новый размер из Font Size меню.
Переименуйте функцию Simulink из A1
на f1
путем ввода y = f1(u)
в поле функции.
Повторите шаги с 1 по 5 для следующих случаев:
Копирование содержимого A2 в функцию Simulink с именем f2
.
Копирование содержимого A3 в функцию Simulink с именем f3
.
Примечание
Новые функции находятся на уровне графика, потому что оба состояния FastScheduler
и SlowScheduler
требуется доступ к выходам функции.
В Model Explorer измените область видимости данных уровня графика y
на Local
потому что вычисление для этих данных теперь происходит внутри графика.
В редакторе Stateflow можно заменить трансляции событий в состояниях активности на вызовы функций.
Отредактируйте состояния активности в FastScheduler
и SlowScheduler
вызов функций Simulink f1
, f2
, и f3
.
В обоих состояниях обновляйте каждую during
действие следующим образом.
du: y = u1-y2;
Для on every
Состояния активности из FastScheduler
и SlowScheduler
, задайте три данные. (Для получения дополнительной информации см. раздел «Добавление данных Stateflow».)
Добавьте локальные y1
данных и
y2
на график.
Добавьте выходные данные y3
на график.
В модели соедините выходной порт для y3
к входному порту возможностей.
Совет
Чтобы развернуть блок Scope, щелкните правой кнопкой мыши и выберите Rotate & Flip > Flip Block из контекстного меню.
В Model Explorer удалите выходные события A1
, A2
, и A3
и входных данных u2
поскольку подсистемы вызова функций больше не существуют.
Удалите все штриховые сигнальные линии из вашей модели.
Ваша новая модель выглядит примерно так:
Если вы моделируете новую модель, результаты совпадают с результатами исходного проекта.