conditionally executed subsystem является невиртуальной подсистемой, которая позволяет вам управлять ее выполнением с внешним сигналом. Enabled, Инициированный, и Подсистемы вызова функций примеры условных подсистем. Внешний сигнал, который управляет условной подсистемой, называется control signal и портом, через который входит сигнал, блок называется control port. Для получения дополнительной информации об условных подсистемах см. Условно Выполняемый Обзор Подсистем.
Можно использовать single-input/single-output или блок мультивхода Variant Source, чтобы управлять выполнением условных подсистем на основе активных различных условий в импорте блока Variant Source.
В этом примере показано, как использовать 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 неактивен.