Распространите различные условия вне различного блока Subsystem

Когда вы задаете различные условия на блоке Variant Subsystem, Simulink® распространяет эти условия определить, какие компоненты модели активны в процессе моделирования. По умолчанию эти условия не распространяют вне различной подсистемы. Можно использовать параметры блоков Propagate conditions outside of variant subsystem, чтобы позволить условиям распространить вне блока Variant Subsystem с соединяющимися блоками.

Примечание

Различные аннотации условия, отображенные на компонентах модели, помогают вам визуализировать распространенные условия.

Чтобы просмотреть различные аннотации условия, на вкладке Debug, выбирают Information Overlays> Variant Legend.

Если Variant Legend не доступен на вкладке Debug, выберите Information Overlays> Variant Conditions.

Рассмотрите эту модель, содержащую блок Variant Subsystem под названием Controller с двумя вариантами, Linear Controller и Nonlinear Controller. Определенное различное условие активирует каждый блок.

Варианты в theController блок не имеет того же интерфейса. Импорт sensor1 и sensor3 используются в Linear Controller и Nonlinear Controller, но sensor2 используется только в Linear Controller. Следовательно, sensor2 блок активен только когда Linear Controller активно и не выполняется для другого выбора. Сделать компоненты модели вне Variant Subsystem (Controller) зная об активном или неактивном состоянии блоков в блоке Variant Subsystem, условия блока должны распространить вне контуров блока.

Примечание

Различные условия не распространяют вне блока Variant Subsystem, если все варианты в блоке имеют тот же интерфейс.

Распространите условия вне различной подсистемы

Чтобы распространить условия за пределами различной подсистемы, выберите Propagate conditions outside of variant subsystem в диалоговом окне Block Parameters блока Variant Subsystem. По умолчанию этот параметр устанавливается на off.

Различное распространение условия вне Variant Subsystem для update diagram Время активации

Когда параметр Variant activation time для блока Variant Subsystem устанавливается на update diagram, только активный выбор анализируется, чтобы определить условия, распространенные из различной подсистемы.

В примере, когда вы устанавливаете активный вариант на Nonlinear Controller, sensor2 неактивно. Различная аннотация v2 с набором условия к false отображен на sensor2 порт и неактивный блок In2 импорта это соединяется с ним. В Различной Легенде Условий условие установлено к false если блоки, сопоставленные с тем условием, никогда не активны.

Когда вы устанавливаете активный вариант на Linear Controller, sensor2 порт и блок In2 импорта являются безусловными потому что Linear Controller использует все входные сигналы.

Код, который вы генерируете, содержит только активный выбор. В этом примере, входной порт In2 неактивно и таким образом, это не часть сгенерированного кода.

Различное распространение условия вне Variant Subsystem для code compile Время активации

В течение любого различного времени активации кроме update diagram, все варианты анализируются, чтобы определить условия, распространенные из различной подсистемы.

В модели в качестве примера, установленной параметр Variant activation time на code compile.

Условия распространены вне блока Variant Subsystem для обоих варианты.

Код, который вы генерируете, содержит и активный и неактивный выбор, заключенный в условные выражения препроцессора #if и #elseif. В этом примере, входной порт In2 охраняется с необходимыми условиями.

Примечание

Чтобы распространить различные условия вне блока Variant Subsystem с нулевым активным различным заданным управлением, выберите Allow zero active variant controls в диалоговом окне Block Parameters блока Variant Subsystem.

Распространение условия на различной подсистеме без блоков Inport и выходного порта

Рассмотрите эту модель с блоком Variant Subsystem с двумя вариантами. Нет никакого импорта или выходных портов на блоке. Эти два варианта имеют условия Var==1 и Var==2, соответственно. Когда параметр Propagate conditions outside of variant subsystem блока Variant Subsystem устанавливается на off, логический OR различных условий, Var==1 || Var==2, установлен на блоке Variant Subsystem. Когда параметр устанавливается на on, никакие условия не применяются на блок Variant Subsystem.

Variant Subsystem with no inports and outports

Распространите условия программно

Чтобы распространить условия за пределами блока Variant Subsystem программно, используйте один из этих синтаксисов:

  • Распространите условия:

    set_param(VariantSubsystemName, 'PropagateVariantConditions','on')

    Например,

    set_param('sldemo_variant_subsystems/Controller','PropagateVariantConditions','on')
  • Распространите условия и сгенерируйте условные выражения препроцессора в коде:

    set_param(VariantSubsystemName,'PropagateVariantConditions',...
    'on','VariantActivationTime','code compile')

    Например,

    set_param('slexVariantSubsystems/Controller','PropagateVariantConditions',...
    'on','VariantActivationTime','code compile')

Адаптивный интерфейс для различных подсистем

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

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

Откройте модель slexVariantSubsystemsAdaptiveInterface.

Блок Controller является Различной Подсистемой, которая обеспечивает Linear и Nonlinear выбор. Linear выбор активен когда V = 1, Nonlinear выбор активен когда V = 2V различная контрольная переменная типа Simulink.Parameter и задан в PostLoadFcn коллбэк модели.

Изменить значение различной контрольной переменной, в командном окне MATLAB, V.Value = 1 типа или V.Value = 2.

Дважды кликните Controller блокируйтесь, чтобы просмотреть его содержимое. Linear и Nonlinear выбор не имеет подобного интерфейса. Linear выбор использует sensor1 и sensor3 входные параметры Controller блок. Linear выбор не использует sensor2 введите и не производите saturate вывод .

В диалоговом окне Block Parameters для Controller блокируйтесь, Распространить условие за пределами различного флажка подсистемы выбрано. Эта установка распространяет условия вне блока и позволяет Различному блоку Subsystem адаптировать свой интерфейс согласно состоянию базовых блоков.

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

Симулируйте модель после установки активного выбора к Linear. Условие V = 2 распространяет к In2фильтр, и saturation logger блоки. Эти блоки становятся неактивными потому что Linear выбор не использует sensor2 введите и не пишет в saturate выход Controller блок.

Ограничения

Распространенные различные условия от различных подсистем могут быть установлены на Simscape™ или Stateflow® блоки только для update diagram различное время активации.

Примечание

Все элементы Mux, Demux или блока-сигнала Vector Concatenate должны иметь то же различное условие.

Похожие темы