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