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

Похожие темы