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

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 в диаграмму планировщика временной логики.
В модели Simulink щелкните правой кнопкой мыши блок A1 в правом нижнем углу и выберите «Вырезать» в контекстном меню.

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

Совет
Чтобы изменить размер шрифта функции, щелкните правой кнопкой мыши поле функции и выберите новый размер в меню «Размер шрифта».
Переименование функции Simulink из A1 кому f1 путем ввода y = f1(u) в поле функции.
Повторите шаги 1-5 для следующих случаев:
Копирование содержимого A2 в функцию Simulink с именем f2.
Копирование содержимого A3 в функцию Simulink с именем f3.

Примечание
Новые функции находятся на уровне диаграммы, поскольку оба состояния FastScheduler и SlowScheduler требуется доступ к выводам функций.
В обозревателе моделей измените область данных на уровне диаграммы. y кому Local потому что расчет для этих данных теперь происходит внутри диаграммы.
В редакторе Stateflow можно заменить широковещательные передачи событий в действиях состояния вызовами функций.
Изменение действий состояния в FastScheduler и SlowScheduler вызов функций Simulink f1, f2, и f3.

В обоих состояниях обновите каждое during действия следующим образом.
du: y = u1-y2;
Для on every действия государства FastScheduler и SlowScheduler, определите три данные. (Дополнительные сведения см. в разделе Добавление данных потока состояний.)
Добавить локальные данные y1 и y2 к диаграмме.
Добавление выходных данных y3 к диаграмме.
В модели подключите внешний порт для y3 к вводу области.
Совет
Чтобы развернуть блок области, щелкните правой кнопкой мыши и выберите в контекстном меню команду «Повернуть и развернуть» > «Развернуть блок».
В обозревателе моделей удалите выходные события A1, A2, и A3 и входные данные u2 потому что подсистемы function-call больше не существуют.
Удалите все пунктирные сигнальные линии из модели.
Ваша новая модель выглядит примерно так:

При моделировании новой модели результаты соответствуют результатам исходной конструкции.