Привязка функции 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 дважды кликните порт триггера, чтобы открыть диалоговое окно Параметров блоков.

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

Похожие темы