Распространение исполнительных условий с вариантными источниками и раковинами

Когда вы задаете условия варианта в моделях, содержащих Variant Source и Variant Sink блоки, Simulink® распространяет эти условия, чтобы определить, какие компоненты модели активны во время симуляции.

Просмотр аннотаций условий исполнения

Когда вы создаете модель, которая содержит Variant Source или Variant Sink блоков, можно визуализировать условия, которые активируют каждый выбор варианта. Simulink аннотирует эти блоки в модели с их соответствующими условиями варианта.

Рассмотрим эту модель, содержащую несколько вариантов выбора, подаваемых в блоки Variant Source. Для каждого варианта активируется конкретное условие варианта.

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

Откроется диалоговое окно Variant Condition Legend. Варианты условий на блоках аннотируются следующим v:C, где v является вариантом семантического индикатора и C представляет индекс условия варианта. В диалоговом окне также показано выражение, связанное с каждым условием.

В диалоговом окне Variant Condition Legend можно щелкнуть гиперссылку аннотации варианта, чтобы увидеть, какие части модели каждое условие активирует. Для примера, если вы кликните v:3Simulink подсвечивает части модели, которые активируются, когда условие V==3 вычисляет, чтобы true.

Аннотации исполнительных условий имеют следующие свойства:

  • Аннотации на безусловных блоках отсутствуют. Поэтому Out блок не аннотирован.

  • Чтобы уменьшить загромождение, в легенде отображаются только окончательные вычисленные условия. Например, если вы вводите условие варианта в Variant Source блок, это условие появляется в аннотациях только при применении изменений.

  • Условия в легенде сортируются во время отображения.

  • В легенде для условия задано значение false если Simulink оценивает, что блоки, связанные с этим условием, никогда не активны.

    Для примера, Inport4 блок соединяется с Variant Source1 блок, условие которого V==1. Variant Source1 соединяется с Variant Source2 блок, который активирует Variant Source1 только когда V==4. Поэтому Inport4 может быть активен только тогда, когда V==1 && V==4, условие, которое всегда false.

  • В легенде (default) ключевое слово отображается как отрицательное условие.

Как работает распространение исполнительных условий

Когда вы компилируете модель, содержащую Variant Source или Variant Sink блоков, Simulink определяет, какой вариант управления оценивает true. Активное определение варианта происходит на ранней стадии компиляции. Simulink затем деактивирует блоки, которые не привязаны к true варианту управления и визуализирует активные соединения.

Перекрестная связь входов и выходов

В этой модели два входа питают блок Variant Source. Первый вход активен, когда Var == 1и он ветвится во второй вход перед соединением с блоком Variant Source. Второй вход является вариантом по умолчанию.

Во время симуляции эта модель показывает три режима работы:

  • Когда Var == 1первый вход активен, а его ветвь во второй вход неактивна.

  • Когда Var == 1 || Var == 2второй вход активен, и ветвь первого входа активна.

  • Когда Var == 2второй вход активен, а выход активен.

Каскадные блоки и условия компаундирования

В этой модели два блока Variant Source, каждый из которых питается двумя входными портами, соединяются каскадным образом. Входы для Variant Source активны, когда Var1 == 1 или Var1 == 2. Область выхода Variant Source ветвится на один из входов Variant Source1. Входы для Variant Source1 активны, когда Var2 == 1 или Var2 == 2.

Во время симуляции эта модель показывает восемь режимов работы:

  • Когда Var1 == 1 && Var2 == 1, первые входы Variant Source и Variant Source активны.

  • Когда Var1 == 1 && Var2 == 2, первый вход Variant Source и второй вход Variant Source1 активны.

  • Когда Var1 == 2 && Var2 == 1, второй вход Variant Source и первый вход Variant Source1 активны.

  • Когда Var1 == 2 && Var2 == 2, вторые входы Variant Source и Variant Source1 активны.

  • Когда Var1 == 1 && Var2 != (1,2), только первый вход Variant Source активно.

  • Когда Var1 == 2 && Var2 != (1,2), только второй вход Variant Source активно.

  • Когда Var1 != (1,2) && Var2 == 1, ни один из входов или выходов не является активным.

  • Когда Var1 != (1,2) && Var2 == 2, только второй вход Variant Source1 активно.

  • Когда Var1 != (1,2) && Var2 != (1,2), ни один из входов или выходов не является активным.

Иерархическое вложение источников или поглотителей

В этой модели несколько блоков Variant Source используются, чтобы создать иерархическое вложение вариантов выбора. Варианты сначала сгруппированы по сериям: A Series, B Series, и C Series. В качестве входных данных для модели устройства предусмотрена комбинация одной или нескольких серий. Получившаяся модель устройства предоставляется в качестве входных данных поставщику путем включения или исключения выбора датчика.

Simulink распространяет комплексные условия управления вариантом, чтобы определить, какие компоненты модели активны во время компиляции.

Для получения дополнительной информации см. «Датчики вариантов».

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

Подсистема может быть виртуальной (сгруппированной или разгруппированной) или атомарной подсистемой в зависимости от выбора, сделанного в диалоговом окне Block Parameters. Для,

  • Сгруппированный виртуальный: Установите флажок Treat as grouped when propagating variant conditions. Сгруппированная виртуальная подсистема имеет непрерывную линию.

  • Ungrouped Virtual: Снимите флажок Treat as grouped when propagating variant conditions. Негруппированная виртуальная подсистема имеет пунктирную линию.

  • Atomic: Установите флажок Treat as atomic unit. Атомарная виртуальная подсистема имеет сплошную линию.

Simulink распространяет условия варианта по-разному на эти типы Подсистемы.

В этой модели три типа подсистем предусмотрены как вход в блок Variant Source2.

  • Сгруппированная виртуальная подсистема активируется при V == 1. Simulink распространяет условие активации варианта на все блоки подсистемы.

  • Негруппированная виртуальная подсистема активируется при V == 2. Simulink распространяет условие активации варианта на блоки, которые были доступны в подсистеме при маркировке виртуальной подсистемы.

  • Атомарная подсистема активируется, когда V == 3. Simulink не распространяет условие активации варианта на эту подсистему.

Для получения дополнительной информации смотрите Распространение исполнительных условий на подсистемы.

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

Распространение исполнительных условий с Model блоком

Simulink компилирует ссылку на модели перед распространением вариантов условий. Условие варианта может активировать или деактивировать блок Model, но условия варианта не могут распространяться в модель-ссылку. Блок Model может распространять условия варианта из своего интерфейса (вход, вывод или порт управления), если это условие варианта начинается с порта внутри модели.

В этом примере вариант условия V==1 активирует блок Model iv_20_model_reference_sub. Однако условие не распространяется на модель, на которую ссылается блок. Model блок iv_20_model_reference_sub2 распространяет то же условие варианта из своего выходного порта.

Распространение варианта условия с Simulink Function блоком

Argument Inport и Argument Outport блоки, взаимодействующие с блоками Simulink Function, не могут быть соединены с блоками Variant Source или Variant Sink. Одно условие варианта должно управлять всем Simulink Function.

Рассмотрим модель slexVariantSimulinkFunctionInherit.

В этом примере блок function-call port внутри блока Simulink Function имеет выбранную опцию Enable variant condition. The (inherit) ключевое слово используется для задания значения параметра Variant control. В результате блок Simulink Function наследует условие варианта от соответствующих блоков Function Caller в модели. Generate preprocessor conditionals значения параметров также наследуется.

Примечание

Используйте диалоговое окно Configure C Step Function Interface, чтобы настроить сгенерированный интерфейс шага точки входа C для модели. Если входные и выходные порты имеют общее имя аргумента и распространяют условия варианта, этот уровень управления интерфейсом не поддерживается.

Распространение исполнительных условий с инициализацией, сбросом и завершением блоков

Функциональные блоки Initialize, Reset и Terminate являются предварительно сконфигурированными блоками подсистемы, которые выполняются во время инициализации модели, сброса и завершения событий. Подобно блоку Simulink Function эти блоки поддерживают распространение варианта условия. Можно распространить Условия исполнения в Model блоках, которые имеют порты События сброса. Это приводит к оптимизации существования блоков, соединенных с портами События сброса. Модели с неактивными функциями Variant Reset Event (в ссылочных моделях) также поддерживают распространение условия исполнения.

Примечание

  • Initialize и Terminate порты событий всегда безусловны, потому что они управляют как моделью по умолчанию, так и моделью по умолчанию, специфичными для блоков, инициализируют и завершают события ссылочной модели. Если вы задаете функциональный блок Initialize/ Terminate в модели-ссылке, он соответствует явному событию инициализации/завершения.

  • Если вы включите варианты и задаете условие варианта на функциональном блоке Initialize/ Terminate в модели-ссылке, условие варианта не будет способствовать условию варианта образца ссылочного блока модели.

В этом примере Event Listener блок в Init, Reset, и Term блоки имеют выбранную опцию Enable variant condition. Параметр Variant control Event Listener блок задается как V==0. Если вы меняете значение V к любому значению кроме 0, а Init, Reset, и Term блоки становятся неактивными.

Распространение исполнительных условий с Subsystem блоком

Условие варианта может активировать или деактивировать блок Subsystem, но условия варианта не могут распространяться в подсистему. Блок Subsystem может распространять условия варианта из своего выходного порта, если это условие варианта начинается с порта внутри подсистемы.

Для получения дополнительной информации смотрите Распространение исполнительных условий на подсистемы.

Распространение исполнительных условий с Bus

Блок Variant Source может принимать как виртуальные, так и невиртуальные входы шины. При генерации кода с условиями препроцессора типы шины и иерархии всех входов шины должны быть одинаковыми.

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

Для получения дополнительной информации см. раздел «Распространение исполнительных условий с шиной».

Известные ограничения

  • Распространение исполнения условия из Simulink Function внутри Stateflow блока не поддерживается.

  • Когда вы симулируете модель Inline вариантов с Simscape™ блоками, блоки Simscape становятся безусловными.

  • Генерация кода С++ не поддерживается для моделей, которые содержат распространенные условия варианта.

  • Распространение условий варианта не поддерживается портами корневого элемента шины.

Похожие примеры

Подробнее о