Функция 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 должно быть целочисленным кратным размер фиксированного шага. Это ограничение не применяется к решателям переменного шага. (Для получения дополнительной информации смотрите, Сравнивают Решатели (Simulink).)
Когда вы симулируете график, следующие действия происходят.
Переход по умолчанию, чтобы утвердить 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
сброс также.