Функция 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
сброс также.