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

Этот пример показывает, как блок Variant Source позволяет объединять сигналы вызова функции.

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

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

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

open_system('slexVariantSourceFunctionCall.slx')

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

1 Включите Output function call опция в диалоговом окне «Параметры исходного блока варианта». Чтобы включить эту опцию программно, используйте эту команду:

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

2 Симулируйте модель путем выполнения симуляция > Update Diagram.The variant condition propagation определяет активные и неактивные варианты выбора.

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

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

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

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