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

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

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

Откройте модель 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 неактивен.