Получите или Выходные сигналы вызова функции для симуляции и генерации кода

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

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

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

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

open_system('slexVariantSourceFunctionCall.slx')

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

1 включают Output function call опция на диалоговом окне Variant Source Block Parameters. Чтобы включить эту опцию программно, используйте эту команду:

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

2 Симулируют модель путем выполнения распространения условия варианта Simulation> Update Diagram.The, определяет активные и неактивные варианты.

  • Когда A==1 и блок Sine Wave, выход положителен, блок вызова функции, названный входом Filter Positive, активен.

  • Когда A==2 и блок Sine Wave utput равен 0 или отрицателен, блок вызова функции, названный входом Filter Negative, активен.

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

sim('slexVariantSourceFunctionCall.slx')
load_system('slexVariantSourceFunctionCall/Counter')