bind
Можно связать заданные данные и события к состоянию при помощи действий bind
. События, связанные с состоянием, могут быть широковещательно переданы только действиями в том состоянии или его дочерних элементах. Можно также обязать событие вызова функции с состоянием включать или отключать подсистему вызова функций, которую инициировало событие. Подсистема вызова функций включает, когда состояние со связанным событием вводится и отключает, когда из того состояния выходят. Выполнение подсистемы вызова функций полностью связано с действием состояния, которое вызывает его.
По умолчанию подсистемой вызова функций управляет график, в котором вызов присоединенной функции задано выходное событие. Эта ассоциация подразумевает, что подсистема вызова функций включена, когда график просыпается и остается активным, пока график не засыпает. Чтобы достигнуть более прекрасного уровня управления, можно связать подсистему вызова функций с состоянием в иерархии графика при помощи действия bind
(см., связывают Действия).
Можно связать вызов функции выходные события с состоянием. Когда вы создаете этот тип привязки, подсистема вызова функций, которая вызвана событием, также связана с состоянием. В этой ситуации включена подсистема вызова функций, когда состояние введено и отключено, когда из состояния выходят.
Когда вы связываете подсистему вызова функций с состоянием, можно подстроить поведение подсистемы, когда это включено и отключено, как описано в следующих разделах:
Несмотря на то, что подсистемы вызова функций не выполняются, в то время как отключено, их выходные сигналы доступны другим блокам в модели. Если подсистема вызова функций связана с состоянием, можно содержать его выходные параметры в их значениях от предыдущего временного шага или сбросить выходные параметры к их начальным значениям, когда подсистема отключена. Выполните эти шаги:
Дважды кликните блок выходного порта подсистемы, чтобы открыть диалоговое окно Block Parameters.
Выберите опцию для Output when disabled:
Выбор: | К: |
---|---|
held | Поддержите новое выходное значение |
reset | Сбросьте вывод к его начальному значению |
Нажмите OK, чтобы записать настройки.
Установка Output when disabled значима только, когда подсистема вызова функций связана с состоянием, как описано в Связывают Подсистему вызова функций с состоянием.
Если подсистема вызова функций связана с состоянием, можно содержать переменные состояния подсистемы в их значениях от предыдущего временного шага или сбросить переменные состояния к их начальным условиям, когда подсистема выполняется. Таким образом обязательное состояние получает полный контроль над переменными состояния для подсистемы вызова функций. Выполните эти шаги:
Дважды кликните триггерный порт подсистемы, чтобы открыть диалоговое окно Block Parameters.
Выберите опцию для States when enabling:
Выбор: | К: |
---|---|
held | Поддержите новые значения состояний подсистемы, которая содержит триггерный порт |
reset | Вернитесь к начальным условиям состояний подсистемы, которая содержит этот триггерный порт |
inherit | Наследуйте это сходящее с родительской подсистемы инициатора вызова функции. Если родительский элемент инициатора является образцовым корнем, наследованная установка сохранена. Если триггер имеет несколько инициаторов, родительские элементы всех инициаторов должны иметь ту же установку: или весь |
Нажмите 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
.
Состояния при включении: сброс.
Эта установка сбрасывает значения состояния для подсистемы вызова функций, чтобы обнулить, когда это включено.
Тип шага расчета: 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
происходит.
Привязка не рекомендуется, когда вы предоставляете несколько триггерных событий подсистеме вызова функций через мультиплексор. Мультиплексированные триггерные события могут вмешаться в привязку события и вызвать неопределенное поведение.