bind ДействияМожно привязать указанные данные и события к состоянию с помощью bind действия. События, связанные с состоянием, могут транслироваться только действиями в этом состоянии или его потомками. Можно также привязать событие function-call к состоянию, чтобы включить или отключить подсистему function-call, запускаемую событием. Подсистема function-call активизирует при вводе состояния с связанным событием и отключает при выходе из этого состояния. Выполнение подсистемы вызова функции полностью связано с активностью состояния, вызывающего ее.
По умолчанию подсистема вызова функции управляется диаграммой, в которой определено событие вывода вызова связанной функции. Эта связь означает, что подсистема вызова функций активизируется при пробуждении диаграммы и остается активной до тех пор, пока диаграмма не перейдет в спящий режим. Для достижения более высокого уровня управления можно привязать подсистему вызова функций к состоянию в иерархии диаграмм с помощью bind (см. Привязать действия).
События вывода вызова функции можно привязать к состоянию. При создании такого типа привязки подсистема вызова функций, вызываемая событием, также привязывается к состоянию. В этой ситуации подсистема вызова функций активизируется при вводе состояния и деактивизируется при выходе из состояния.
При привязке подсистемы вызова функций к состоянию можно точно настроить поведение подсистемы при ее включении и отключении, как описано в следующих разделах:
Хотя подсистемы вызова функций не выполняются при отключении, их выходные сигналы доступны для других блоков модели. Если подсистема вызова функций привязана к какому-либо состоянию, можно удерживать ее выходы в их значениях с предыдущего временного шага или сбросить их до начальных значений, когда подсистема отключена. Выполните следующие действия.
Дважды щелкните блок вывода подсистемы, чтобы открыть диалоговое окно «Параметры блока».

Выберите параметр «Вывод при отключении»:
| Выберите: | Кому: |
|---|---|
held | Ведение последнего выходного значения |
reset | Сброс выходного сигнала до его начального значения |
Нажмите кнопку ОК, чтобы записать настройки.
Примечание
Установка параметра Output when disabled имеет значение только в том случае, если подсистема вызова функции привязана к состоянию, как описано в разделе Bind a Function-Call Subsystem to a State.
Если подсистема вызова функции привязана к состоянию, то при выполнении подсистемы можно удерживать переменные состояния подсистемы в их значениях с предыдущего шага времени или сбрасывать переменные состояния в исходное состояние. Таким образом, состояние связывания получает полное управление переменными состояния для подсистемы вызова функции. Выполните следующие действия.
Дважды щелкните по порту триггера подсистемы, чтобы открыть диалоговое окно «Параметры блока».

Выберите параметр Состояния при включении:
| Выберите: | Кому: |
|---|---|
held | Сохранение последних значений состояний подсистемы, содержащей порт триггера |
reset | Вернитесь к начальным условиям состояний подсистемы, содержащей этот порт триггера |
inherit | Наследуйте этот параметр из родительской подсистемы инициатора вызова функции. Если родителем инициатора является корень модели, унаследованная настройка сохраняется. Если триггер имеет несколько инициаторов, родители всех инициаторов должны иметь одинаковую настройку: либо все |
Нажмите кнопку ОК, чтобы записать настройки.
Примечание
Установка состояний при активизации имеет значение только в том случае, если подсистема вызова функции привязана к состоянию, как описано в разделе Привязка подсистемы вызова функции к состоянию.
Эта модель запускает подсистему вызова функции с событием триггера E которая привязывается к состоянию диаграммы. На панели Решатель (Solver) диалогового окна Параметры конфигурации модели (Model Configuration Parameters) модель задает решатель с фиксированным шагом, размер которого равен 1.

Диаграмма содержит два состояния. Событие E привязывается к состоянию A с действием
bind:E
Событие E определяется для диаграммы с областью Output to Simulink и тип триггера function-call.

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

Диалоговое окно «Параметры блока» для порта триггера содержит следующие настройки:
Тип триггера: function-call.
Состояния при включении: reset. Этот параметр сбрасывает значения состояния подсистемы вызова функций на ноль, когда она включена.
Тип времени выборки: triggered. Этот параметр задает выполнение подсистемы вызова функций только в том случае, если она инициируется вызывающим событием, когда она активизирована.
Установка для типа времени образца значения periodic включает поле Sample time под ним, которое по умолчанию равно 1. Эти настройки вынуждают подсистему вызова функций выполнять каждый временной шаг, указанный в поле Sample time, пока она включена. Для этого состояние, которое связывает вызывающее событие для подсистемы функционального вызова, должно посылать событие для временного шага, совпадающего с заданной частотой дискретизации в поле Sample time. Состояния могут отправлять события с вводом или во время действий с частотой выборки моделирования.
Для выборки с фиксированным шагом значение времени выборки должно быть целым числом, кратным размеру фиксированного шага.
Для выборки с переменным шагом значение времени выборки не имеет ограничений.
Чтобы увидеть, как состояние управляет связанной подсистемой вызова функции, начните моделирование модели.
В момент времени t = 0 переход по умолчанию в состояние A происходит. Государство A выполняет действия привязки и ввода. Действие привязки связывает событие E указывать A, активизируя подсистему вызова функций и сбрасывая ее переменные состояния в 0. Действие записи запускает подсистему вызова функции и выполняет ее блок-схему. Блок-схема увеличивает значение счетчика на 1, используя блок единичной задержки. Блок Unit Delay выводит значение 0 и сохраняет новое значение 1 до следующего вызова подсистемы.
В момент времени t = 1 следующее событие обновления из тестового состояния модели A для исходящего перехода. Переход к состоянию B не происходит, потому что временной оператор after(10,tick) позволяет выполнить переход только после получения десяти событий обновления. Государство A остается активным и во время действия запускает подсистему вызова функции. Блок единичной задержки выводит свое удерживаемое значение 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 происходит.

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