bind
ДействияМожно связать заданные данные и события к состоянию при помощи bind
действия. События, связанные с состоянием, могут быть широковещательно переданы только действиями в том состоянии или его дочерних элементах. Можно также обязать событие вызова функции с состоянием включать или отключать подсистему вызова функций, которую инициировало событие. Подсистема вызова функций включает, когда состояние со связанным событием вводится и отключает, когда из того состояния выходят. Выполнение подсистемы вызова функций полностью связано с действием состояния, которое вызывает его.
По умолчанию подсистемой вызова функций управляет график, в котором вызов присоединенной функции задано выходное событие. Эта ассоциация подразумевает, что подсистема вызова функций включена, когда график просыпается и остается активным, пока график не засыпает. Чтобы достигнуть более прекрасного уровня управления, можно связать подсистему вызова функций с состоянием в иерархии графика при помощи bind
действие (см., связывает Действия).
Можно связать вызов функции выходные события с состоянием. Когда вы создаете этот тип привязки, подсистема вызова функций, которая вызвана событием, также связана с состоянием. В этой ситуации включена подсистема вызова функций, когда состояние введено и отключено, когда из состояния выходят.
Когда вы связываете подсистему вызова функций с состоянием, можно подстроить поведение подсистемы, когда это включено и отключено, как описано в следующих разделах:
Несмотря на то, что подсистемы вызова функций не выполняются, в то время как отключено, их выходные сигналы доступны для других блоков в модели. Если подсистема вызова функций связана с состоянием, можно содержать его выходные параметры в их значениях от предыдущего временного шага или сбросить выходные параметры к их начальным значениям, когда подсистема отключена. Выполните эти шаги:
Дважды кликните блок Outport подсистемы, чтобы открыть диалоговое окно 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
.
Состояния при включении: 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
происходит.
Привязка не рекомендуется, когда вы предоставляете несколько триггерных событий подсистеме вызова функций через мультиплексор. Мультиплексированные триггерные события могут вмешаться в привязку события и вызвать неопределенное поведение.