Распространите различные условия от различных исходных блоков до условно выполняемых подсистем

conditionally executed subsystem является невиртуальной подсистемой, которая позволяет вам управлять ее выполнением с внешним сигналом. Enabled, Инициированный, и Подсистемы вызова функций примеры условных подсистем. Внешний сигнал, который управляет условной подсистемой, называется control signal и портом, через который входит сигнал, блок называется control port. Для получения дополнительной информации об условных подсистемах см. Условно Выполняемый Обзор Подсистем.

Можно использовать single-input/single-output или блок мультивхода Variant Source, чтобы управлять выполнением условных подсистем на основе активных различных условий в импорте блока Variant Source.

Используйте различный исходный блок, чтобы управлять выполнением условных блоков Subsystem

В этом примере показано, как использовать single-input/single-output Различный Исходный блок, чтобы управлять выполнением условного блока подсистемы.

Исследуйте модель

Откройте модель slexVariantControlPorts.

Модель содержит single-input/single-output Различный Исходный блок, Variant Source1, с различным набором условия как V==1. Выход от Variant Source1 блок соединяется с портом управления Enabled Подсистемы Subsystem.

Позволить нулевой активный вариант управляет параметром на Variant Source1 блок установлен в on. Когда эта опция выбрана и нет никакого активного варианта, Simulink® отключает все блоки, соединенные с потоком ввода и вывода Различного Исходного блока.

Когда вы симулируете модель после установки V=1, условие V==1 распространяет к выходному порту Variant Source1 и затем к порту управления Subsystem. Условие, присвоенное блоку подсистемы затем, распространяет с блоками под названием Sine2 и Out1 соединенный с его портами ввода и вывода. Если вы устанавливаете V к значению кроме 1, Simulink отключает все блоки, соединенные с импортом и выходным портом Variant Source1.

Распространите различные условия к подсистемам вызова функций

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

Можно использовать Различный Исходный блок, чтобы сделать условное выражение блока Function-Call Subsystem.

Различный Исходный блок имеет условие V==1, где V Simulink.Parameter.

Параметр вызова Выходной функции на Различном Исходном блоке устанавливается на on. Это позволяет блоку вывести сигналы вызова функции.

Позволить нулевой активный различный параметр средств управления на Различном Исходном блоке устанавливается на on.

Когда вы симулируете эту модель, различное условие от Различного Исходного блока распространяет к порту управления SubA блок подсистемы и далее распространяет с блоками, соединенными с его импортом и выходными портами.

  • Когда V=1, SubA блок активен, и различное условие распространяет назад и вперед с блоками, соединенными с входом (In1) и выход (Out1) порты.

  • Когда V~=1 (например, V=0), SubA становится неактивным, который делает Out1 неактивный. In2 остается активным, потому что это соединяется с SubB, который активен.

  • Если In2 не соединяется с SubB, In2 становится неактивным когда V~=1.

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

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

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

Исследуйте модель

Откройте модель slexVariantSourceFunctionCall.slx.

open_system('slexVariantSourceFunctionCall.slx');

Модель содержит Различный Исходный блок с условиями A==1 и A==2 в его входных портах. A различная контрольная переменная, заданная в PostLoadFcn в Файле> ModelProperties> Коллбэки. Различные условия в импорте и выходных портах Различного Исходного блока определяют активацию и деактивацию блоков, соединенных с ним.

Блок Sine Wave соединяется с двумя Функциональными блоками MATLAB®, Filter Positive inputs и Filter Negative inputs. Filter Positive inputs блок генерирует вызов функции, когда значение блока Sine Wave положительно. Filter Negative inputs блок генерирует вызов функции, когда значением блока Sine Wave является 0 или отрицательный. Различный Исходный блок получает эти сигналы вызова функции в своем импорте. Выходной порт Различного Исходного блока соединяется с блоком Function-Call Subsystem под названием Counter. Подсистема инициирована когда A==1 и блок Sine Wave выходные параметры положительные значения, и когда A==2 и блок Sine Wave выходные отрицательные величины.

Параметр вызова Выходной функции на Variant Source1 блок установлен в on. Это позволяет блоку получить и вывести сигналы вызова функции. Чтобы включить эту опцию программно, используйте эту команду:

set_param('slexVariantSourceFunctionCall/Variant Source','OutputFunctionCall','on')

Позволить нулевой активный вариант управляет параметром на Variant Source1 блок установлен в on. Когда эта опция выбрана и нет никакого активного варианта, Simulink отключает все блоки, соединенные с потоком ввода и вывода Различного Исходного блока.

Симулируйте модель

Чтобы симулировать модель, на вкладке Simulation, нажимают Run. Различное распространение условия определяет активные и неактивные варианты.

  • Когда A==1, Filter Positive inputs активно.

  • Когда A==2, Filter Negative inputs активно.

В обоих случаях, значение количества в Подсистеме вызова функций, Counter, постепенно увеличивается. Если A~=1 и A~=2, затем Counter не выполняется, потому что блок Sine Wave неактивен.

Похожие темы