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