Управляйте подсистемами вызова функций при помощи bind Действия

Можно связать заданные данные и события к состоянию при помощи bind действия. События, связанные с состоянием, могут быть широковещательно переданы только действиями в том состоянии или его дочерних элементах. Можно также обязать событие вызова функции с состоянием включать или отключать подсистему вызова функций, которую инициировало событие. Подсистема вызова функций включает, когда состояние со связанным событием вводится и отключает, когда из того состояния выходят. Выполнение подсистемы вызова функций полностью связано с действием состояния, которое вызывает его.

Свяжите подсистему вызова функций с состоянием

По умолчанию подсистемой вызова функций управляет график, в котором вызов присоединенной функции задано выходное событие. Эта ассоциация подразумевает, что подсистема вызова функций включена, когда график просыпается и остается активным, пока график не засыпает. Чтобы достигнуть более прекрасного уровня управления, можно связать подсистему вызова функций с состоянием в иерархии графика при помощи bind действие (см., связывает Действия).

Можно связать вызов функции выходные события с состоянием. Когда вы создаете этот тип привязки, подсистема вызова функций, которая вызвана событием, также связана с состоянием. В этой ситуации включена подсистема вызова функций, когда состояние введено и отключено, когда из состояния выходят.

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

Обработайте Выходные параметры, Когда Подсистема будет Отключена

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

  1. Дважды кликните блок выходного порта подсистемы, чтобы открыть диалоговое окно Block Parameters.

  2. Выберите опцию для Output when disabled:

    Выбор:К:
    heldОбеспечьте новое выходное значение
    resetСбросьте выход к его начальному значению
  3. Нажмите OK, чтобы записать настройки.

    Примечание

    Установка Output when disabled значима только, когда подсистема вызова функций связана с состоянием, как описано в Связывают Подсистему вызова функций с состоянием.

Управление поведением состояний, Когда Подсистема Enabled

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

  1. Дважды кликните триггерный порт подсистемы, чтобы открыть диалоговое окно Block Parameters.

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

    Выбор:К:
    heldОбеспечьте новые значения состояний подсистемы, которая содержит триггерный порт
    resetВернитесь к начальным условиям состояний подсистемы, которая содержит этот триггерный порт
    inherit

    Наследуйте это сходящее с родительской подсистемы инициатора вызова функции. Если родительский элемент инициатора является корнем модели, наследованная установка сохранена. Если триггер имеет несколько инициаторов, родительские элементы всех инициаторов должны иметь ту же установку: любой весь held или весь reset.

  3. Нажмите OK, чтобы записать настройки.

    Примечание

    Установка States when enabling значима только, когда подсистема вызова функций связана с состоянием, как описано в Связывают Подсистему вызова функций с состоянием.

Свяжите подсистему вызова функций с состоянием

Эта модель инициировала подсистему вызова функций с триггерным событием E это связывает с состоянием графика. В панели Решателя диалогового окна Model Configuration Parameters модель задает решатель фиксированного шага с размером фиксированного шага 1.

График содержит два состояния. Событие E связывает, чтобы утвердить A с действием

  bind:E

Событие E задан для графика с осциллографом Output to Simulink и триггерный тип function-call.

Подсистема вызова функций содержит триггерную блокировку порта, входной порт, выходной порт и простую блок-схему. Блок-схема постепенно увеличивает счетчик 1 на каждом временном шаге, с помощью блока Unit Delay.

Диалоговое окно Block Parameters для триггерного порта содержит эти настройки:

  • Триггерный тип: function-call.

  • Состояния при включении: reset. Эта установка сбрасывает значения состояния для подсистемы вызова функций, чтобы обнулить, когда это включено.

  • Тип шага расчета: triggered. Эта установка устанавливает подсистему вызова функций выполняться только, когда это инициировано событием вызова, в то время как это включено.

Установка Шага расчета вводит к periodic включает поле Шага расчета ниже его, который значения по умолчанию к 1. Эти настройки обеспечивают подсистему вызова функций, чтобы выполниться для каждого временного шага, заданного в поле Шага расчета, в то время как это включено. Чтобы выполнить это, состояние, которое связывает событие вызова для подсистемы вызова функций, должно отправить событие за временным шагом, совпадающим с заданным уровнем выборки в поле Шага расчета. Состояния могут отправить события с записью или во время действий на уровне частоты дискретизации симуляции.

  • Для выборки фиксированного шага значение Шага расчета должно быть целочисленным кратным размер фиксированного шага.

  • Для выборки переменного шага значение Шага расчета не имеет никаких ограничений.

Чтобы видеть, как государственный контроль связанная подсистема вызова функций, начните симулировать модель.

  • Во время t = 0, переход по умолчанию, чтобы утвердить A происходит. A состояния выполняет связывать и действия записи. Обязательное действие связывает событие E утверждать A, включение подсистемы вызова функций и сброс ее переменных состояния к 0. Действие записи инициировало подсистему вызова функций и выполняет ее блок-схему. Блок-схема постепенно увеличивает счетчик 1 использованием блока Unit Delay. Блок Unit Delay выводит значение 0 и содержит новое значение 1 до следующего вызова подсистемы.

  • Во время t = 1, следующее событие обновления от тестов модели утверждает A для исходящего перехода. Переход, чтобы утвердить B не происходит потому что темпоральный оператор after(10,tick) позволяет переходу быть взятым только после того, как десять событий обновления будут получены. A состояния остается активным, и во время действия инициировал подсистему вызова функций. Блок Unit Delay выводит свое сохраненное значение 1. Подсистема также постепенно увеличивает в противоречии с продуктом значение 2, который блок Unit Delay содержит до следующего инициированного выполнения.

  • Следующие восемь событий обновления постепенно увеличивают подсистему, выведенную одной на каждом временном шаге.

  • Во время t = 10, переход от A состояния утверждать B происходит. Поскольку привязка, чтобы утвердить A более не активно, подсистема вызова функций отключена, и ее выход роняет к 0.

  • Во время t = 11, переход от B состояния утверждать A происходит. Снова, обязательное действие включает подсистему вызова функций. Последующие события обновления постепенно увеличивают подсистему, выведенную одной на каждом временном шаге до следующего перехода, чтобы утвердить B происходит во время t = 21.

Избегайте мультиплексированного Инициирования событий с привязкой

События привязки дают контроль подсистемы вызова функций к одному состоянию в графике. Это управление не работает, когда вы позволяете другим событиям инициировать подсистему вызова функций через мультиплексор. Например, эта модель задает два события вызова функции, чтобы инициировать подсистему вызова функций с помощью блока Mux.

В графике, E1 связывает, чтобы утвердить A, но E2 не делает. B состояния отправляет инициирующему событию E2 в его действии записи.

Когда вы симулируете эту модель, выход не сбрасывает когда переход от A состояния утверждать B происходит.

Привязка не рекомендуется, когда вы предоставляете несколько триггерных событий подсистеме вызова функций через мультиплексор. Мультиплексированные триггерные события могут вмешаться в привязку события и вызвать неопределенное поведение.