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

Поскольку функциональный queue находится в A1 состояния, функция связывает с тем состоянием.
A1 состояния и его подсостояния A2 и A3 может вызвать queue, но B1 состояния не может.
Когда A1 состояния вводится, queue включен.
Когда A1 состояния выходится, queue отключен.
Если функция Simulink связывает с состоянием, можно содержать переменные подсистемы в их значениях от предыдущего выполнения или сбросить переменные к их начальным значениям. Выполните эти шаги:
В функции Simulink дважды кликните триггерный порт, чтобы открыть диалоговое окно Block Parameters.
Выберите опцию для States when enabling.
| Опция | Описание | Ссылочный раздел |
|---|---|---|
held | Содержит значения переменных подсистемы из предыдущего выполнения | Как функция ведет себя, когда переменные сохранены |
reset | Сбрасывает переменные подсистемы к их начальным значениям | Как функция ведет себя, когда переменные сбрасываются |
В этом примере показано, как функция Simulink ведет себя, когда связано с состоянием.

Функциональный queue содержит блок-схему, которая постепенно увеличивает счетчик к 1 каждому разу, когда функция выполняется.

Диалоговое окно Block Parameters для триггерного порта появляется следующим.

В диалоговом окне, установке Sample time type к periodic включает поле Sample time, который значения по умолчанию к 1. Эти настройки говорят функции выполняться для каждого временного шага, заданного в поле Sample time, в то время как функция включена.
Примечание
Если вы используете решатель фиксированного шага, значение в поле Sample time должно быть целочисленным кратным размер фиксированного шага. Это ограничение не применяется к решателям переменного шага. (Для получения дополнительной информации смотрите, Сравнивают Решатели.)

Когда вы симулируете график, следующие действия происходят.
Переход по умолчанию, чтобы утвердить A1 происходит, который включает устанавливающие локальные данные u1 к 1.
Когда A1 вводится, функциональный queue включен.
Вызовы функции к queue происходите до условия after(5, sec) верно.
Переход от A1 состояния к B1 происходит.
Когда A1 выходится, функциональный queue отключен.
После еще двух передач секунд, перехода от B1 к A1 происходит.
Повторение шагов 2 - 6 до симуляции заканчивается.
Если вы устанавливаете States when enabling на held, выход y1 следующие.

Когда A1 состояния становится неактивным в t = 5, функция Simulink содержит встречное значение. Когда A1 активен снова в t = 7, счетчик имеет то же значение, как это сделало в t = 5. Поэтому выход y1 продолжает постепенно увеличиваться в зависимости от времени.
Если вы устанавливаете States when enabling на reset, выход y1 следующие.

Когда A1 состояния становится неактивным в t = 5, функция Simulink не содержит встречное значение. Когда A1 активен снова в t = 7, сбросы счетчика, чтобы обнулить. Поэтому выход y1 сброс также.