Simulink® функция является графическим объектом, который вы заполняете блоками Simulink и вызываете в действиях состояний и переходов. Функции Simulink поддерживаются только в Stateflow® графики в моделях Simulink. Для получения дополнительной информации смотрите Повторно использовать компоненты Simulink в диаграммах Stateflow.
Когда функция Simulink находится внутри состояния, функция связывается с этим состоянием. Связывание приводит к следующему поведению:
Вызовы функций могут происходить только в состояниях активности и на переходах внутри состояния и его подсостояний.
Когда состояние введено, функция включена.
Когда состояние выходит, функция отключается.
Например, следующая диаграмма Stateflow показывает функцию Simulink, которая привязывается к состоянию.
Потому что функция queue
находится в состоянии A1
функция привязывается к этому состоянию.
Конечные A1
и его подсостояния A2
и A3
может вызвать queue
, но состояние B1
невозможно.
Когда состояние A1
введено, queue
включен.
Когда состояние A1
выходит, queue
отключен.
Если функция Simulink привязывается к состоянию, можно удерживать переменные подсистемы по значениям от предыдущего выполнения или сбрасывать переменные к их начальным значениям. Выполните следующие действия:
В функции Simulink дважды кликните порт триггера, чтобы открыть диалоговое окно Параметров блоков.
Выберите опцию для States when enabling.
Опция | Описание | Справочный раздел |
---|---|---|
held | Содержит значения переменных подсистемы от предыдущего выполнения | Как функция ведет себя, когда переменные удерживаются |
reset | Устанавливает для переменных подсистемы их начальные значения | Как функция ведет себя, когда переменные сбрасываются |
Этот пример показывает, как функция Simulink ведет себя, когда связана с состоянием.
Функция queue
содержит блок схему, которая увеличивает счетчик на 1 каждый раз, когда функция выполняется.
Диалоговое окно Параметров блоков для порта триггера появляется следующим образом.
В диалоговом окне установка значения Sample time type periodic
включает поле Sample time, значение по умолчанию равное 1. Эти настройки говорят функции выполнять для каждого временного шага, заданного в поле Sample time, пока функция включена.
Примечание
Если вы используете решатель с фиксированным шагом, значение в поле Sample time должно быть целым числом, кратным размеру с фиксированным шагом. Это ограничение не применяется к решателям с переменным шагом. (Для получения дополнительной информации смотрите Сравнение решателей (Simulink).)
При моделировании графика происходят следующие действия.
Переход по умолчанию в состояние A1
происходит, что включает в себя настройку локальных данных u1
по 1.
Когда A1
вводится функция queue
включен.
Вызовы функций к queue
происходит до тех пор, пока условие не after(5, sec)
является true.
Переход от состояния 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
сбрасывается также.