exponenta event banner

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

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

Изучение модели

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

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

open_system('slexVariantSourceFunctionCall.slx')

Моделирование модели

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

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

2 Смоделировать модель, выполнив команду Моделирование (Simulation) > Обновить схему (Update Diamram) .Расширенное условие исполнения определяет активные и неактивные варианты исполнения.

  • Когда A==1 и выходной сигнал блока синусоидальной волны является положительным, блок вызова функции, названный положительным входом фильтра, является активным.

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

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

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