Свяжите функцию Simulink с состоянием

Функция Simulink® является графическим объектом, который вы заполняете с блоками Simulink и вызываете в действиях состояний и переходах. Функции Simulink поддерживаются только в графиках Stateflow® в моделях Simulink. Для получения дополнительной информации смотрите Повторное использование Компоненты Simulink в диаграммах Stateflow.

Свяжите поведение функции Simulink

Когда функция Simulink находится в состоянии, функция связывает с тем состоянием. Привязка результатов в следующем поведении:

  • Вызовы функции могут произойти только в актах государственной власти и на переходах в состоянии и его подсостояниях.

  • Когда состояние вводится, функция включена.

  • Когда из состояния выходят, функция отключена.

Например, следующая диаграмма Stateflow показывает функцию Simulink, которая связывает с состоянием.

Поскольку функциональный queue находится в A1 состояния, функция связывает с тем состоянием.

  • A1 состояния и его подсостояния A2 и A3 могут вызвать queue, но утвердить, что B1 не может.

  • Когда A1 состояния вводится, queue включен.

  • Когда из A1 состояния выходят, queue отключен.

Управляйте переменными подсистемы, когда функция Simulink будет отключена

Если функция Simulink связывает с состоянием, можно содержать переменные подсистемы в их значениях от предыдущего выполнения или сбросить переменные к их начальным значениям. Выполните эти шаги:

  1. В функции Simulink дважды кликните триггерный порт, чтобы открыть диалоговое окно Block Parameters.

  2. Выберите опцию для States when enabling.

    ОпцияОписаниеСсылочный раздел
    heldСодержит значения переменных подсистемы из предыдущего выполненияКак функция ведет себя, когда переменные сохранены
    resetСбрасывает переменные подсистемы к их начальным значениямКак функция ведет себя, когда переменные сбрасываются

Пример привязки функции Simulink к состоянию

Этот пример показывает, как функция Simulink ведет себя, когда связано с состоянием.

Функциональный queue содержит блок-схему, которая постепенно увеличивает счетчик к 1 каждому разу, когда функция выполняется.

Диалоговое окно Block Parameters для триггерного порта появляется можно следующим образом.

В диалоговом окне установка Sample time type к periodic включает поле Sample time, который значения по умолчанию к 1. Эти настройки говорят функции выполняться для каждого временного шага, заданного в поле Sample time, в то время как функция включена.

Примечание

Если вы используете решатель фиксированного шага, значение в поле Sample time должно быть целочисленным кратным размер фиксированного шага. Это ограничение не применяется к решателям переменного шага. (Для получения дополнительной информации смотрите Решатели (Simulink).)

Поведение симуляции графика

Когда вы моделируете график, следующие действия происходят.

  1. Переход по умолчанию, чтобы утвердить A1 происходит, который включает устанавливающие локальные данные u1 в 1.

  2. Когда A1 вводится, функциональный queue включен.

  3. Вызовы функции к queue происходят до условия after(5, sec) верен.

  4. Переход от A1 состояния до B1 происходит.

  5. Когда из A1 выходят, функциональный queue отключен.

  6. После еще двух передач секунд происходит переход от B1 до A1.

  7. Повторение шагов 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 сбрасывает также.

Похожие темы