Управляйте подсистемами вызова функций при помощи действий 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.

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

  • Тип шага расчета: 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 происходит.

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