Simulink® функции не поддерживаются в автономном Stateflow® графики в MATLAB®.
Когда функция Simulink находится в состоянии, функция связывает с тем состоянием. Привязка результатов в следующем поведении:
Вызовы функции могут произойти только в состояниях активности и на переходах в состоянии и его подсостояниях.
Когда состояние вводится, функция включена.
Когда из состояния выходят, функция отключена.
Например, следующая диаграмма Stateflow показывает функцию Simulink, которая связывает с состоянием.
Начиная с функционального queue
находится в A1
состояния, функция связывает, чтобы утвердить
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
сброс также.