В этом примере показано, как Различный Исходный блок получает сигналы вызова функции в своем импорте и условно объединяет сигналы в его выходном порту. Можно использовать такие различные сигналы управлять выполнением условно выполняемых подсистем.
Откройте модель 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 неактивен.