При задании условий исполнения в моделях, содержащих блоки Источник исполнения (Variant Source) и Приемник исполнения (Variant Sink), Simulink ® распространяет эти условия, чтобы определить, какие компоненты модели являются активными во время моделирования.
При создании модели, содержащей блоки Источник исполнения (Variant Source) или Приемник исполнения (Variant Sink), можно визуализировать условия, которые активируют каждый вариант. Simulink аннотирует эти блоки в модели с соответствующими условиями исполнения.
Рассмотрим эту модель, содержащую несколько вариантов выбора, подаваемых в блоки источника исполнения. Конкретное условие варианта активирует каждый вариант выбора.

Чтобы визуализировать условия исполнения, на вкладке «Отладка» панели инструментов выберите «Информационные наложения» > «Условия исполнения».

Появится диалоговое окно Легенда условия исполнения (Variant Condition Legend). Условия исполнения для блоков аннотируются как v:C, где v - вариант семантического индикатора и C представляет индекс условия варианта. В диалоговом окне также отображается выражение, связанное с каждым условием.
В диалоговом окне Легенда условия исполнения (Variant Condition Legend) можно щелкнуть гиперссылку аннотаций исполнения, чтобы увидеть, какие части модели активизируются каждым условием. Например, при нажатии v:3, Simulink подсвечивает детали модели, которые активируются при условии V==3 вычисляется как true.

Аннотации условий исполнения имеют следующие свойства:
На безусловных блоках отсутствуют аннотации. Следовательно, Out блок не аннотирован.
Для уменьшения загроможденности легенда отображает только окончательные вычисленные условия. Например, при вводе условия исполнения в блок «Источник исполнения» это условие появляется в аннотациях только при применении изменений.
Условия в легенде сортируются во время отображения.
В легенде условие имеет значение 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), ни один из входов или выходов не активен.
В этой модели для создания иерархического вложения вариантов используются несколько блоков источника исполнения. Варианты сначала группируются по последовательностям: A Series, B Series, и C Series. Комбинация одной или более серий предоставляется в качестве входных данных для модели устройства. Полученная модель устройства предоставляется в качестве входных данных поставщику путем включения или исключения выбора датчика.
Simulink распространяет сложные условия управления вариантами, чтобы определить, какие компоненты модели активны во время компиляции.

Дополнительные сведения см. в разделе Датчики исполнения.
Подсистема может быть виртуальной (сгруппированной или негруппированной) или атомной подсистемой в зависимости от параметров, выбранных в диалоговом окне «Параметры блока». Для,
Сгруппировано виртуально: установите флажок Обработать как сгруппированное при распространении исполнительных условий. Сгруппированная виртуальная подсистема имеет непрерывную линию.
Разгруппированный виртуальный (Ungrouped Virtual): снимите флажок Обрабатывать как сгруппированные при распространении исполнительных условий (Treat as grouped when propagating variant conditions). Негруппированная виртуальная подсистема имеет пунктирную линию.
Атомная: установите флажок Рассматривать как атомную единицу. Атомная виртуальная подсистема имеет сплошную линию.
Simulink распространяет условия вариантов по-разному для этих типов подсистем.
В этой модели в качестве входных данных блока предусмотрены три типа подсистем Variant Source2.
Сгруппированная виртуальная подсистема активируется при V == 1. Simulink распространяет условие активации варианта на все блоки в подсистеме.
Разгруппированная виртуальная подсистема активируется при V == 2. Simulink распространяет условие активации варианта на блоки, которые были доступны в подсистеме, отмечая подсистему виртуальной.
Атомная подсистема активируется при V == 3. Simulink не распространяет условие активации варианта в эту подсистему.

Дополнительные сведения см. в разделе Распространение исполнительных условий на подсистемы.
Simulink компилирует ссылочные модели перед распространением условий исполнения. Условие исполнения может активировать или деактивировать блок модели, но условия исполнения не могут распространяться на ссылочную модель. Блок модели может распространять условия исполнения из своего интерфейса (входной, выходной или управляющий порт), если это условие исполнения возникает в порту внутри модели.
В этом примере условие варианта V==1 активирует блок «Модель» iv_20_model_reference_sub. Однако условие не распространяется на модель, на которую ссылается блок. Блок модели iv_20_model_reference_sub2 распространяет одно и то же условие варианта из своего выходного порта.

Блоки Inport и Outport аргументов, взаимодействующие с функциональными блоками Simulink, не могут быть подключены к блокам Variant Source или Variant Sink. Одно условие варианта должно управлять всей функцией Simulink.
Рассмотрим модель slexVariantSimulinkFuncityInherit.
В этом примере для блока порта вызова функции в блоке Simulink Function выбрана опция Enable variant condition. (inherit) ключевое слово используется для указания значения параметра управления Variant. В результате блок Simulink Function наследует условие исполнения из соответствующих блоков Function Caller в модели. Значение параметра Генерировать условия препроцессора также наследуется.

Примечание
Диалоговое окно Настройка интерфейса ступенчатой функции C (Configure C Step Function Interface) используется для настройки сгенерированного интерфейса ступенчатой функции начального уровня C для модели. Если входные и выходные порты совместно используют имя аргумента и имеют распространенные вариативные условия, этот уровень управления интерфейсом не поддерживается.
Функциональные блоки Initialize, Reset и Terminate являются предварительно сконфигурированными блоками подсистемы, которые выполняются во время событий инициализации, сброса и завершения модели. Аналогично блоку Simulink Function эти блоки поддерживают распространение условий исполнения. Условия исполнения можно распространять в блоках модели, имеющих порты событий сброса. Это приводит к оптимизированному существованию блоков, подключенных к портам событий сброса. Модели с неактивными функциями события сброса исполнения (в ссылочных моделях) также поддерживают распространение условий исполнения.
Примечание
Порты событий Initialize и Terminate всегда являются безусловными, поскольку они управляют событиями инициализации и завершения ссылочной модели как для модели по умолчанию, так и для конкретного блока. Если в ссылочной модели определен функциональный блок Initialize/Terminate, он соответствует явному событию initialize/terminate.
Если включить исполнения и определить условие исполнения в функциональном блоке Инициализировать/Завершить в ссылочной модели, условие исполнения не будет участвовать в условии исполнения экземпляра ссылочного блока модели.
В этом примере Event Listener блок в пределах Init, Reset, и Term для блоков выбрана опция Включить условие исполнения. Управляющий параметр Variant для Event Listener блок указан как V==0. При изменении значения V на любое значение, отличное от 0, Init, Reset, и Term блоки становятся неактивными.

Условие варианта может активировать или деактивировать блок подсистемы, но условия варианта не могут распространяться в подсистему. Блок подсистемы может распространять условия варианта из своего выходного порта, если это условие варианта возникает в порту внутри подсистемы.
Дополнительные сведения см. в разделе Распространение исполнительных условий на подсистемы.
Блок Variant Source может принимать либо виртуальные, либо невиртуальные входы шины. При формировании кода с предпроцессорными условиями типы шин и иерархии всех входов шины должны быть одинаковыми.
Однако все элементы сигнала блока Mux, Demux или Vector Concatenate должны иметь одно и то же условие варианта.
Дополнительные сведения см. в разделе Распространение условия исполнения с шиной.
Распространение условия исполнения из функции Simulink внутри блока Stateflow не поддерживается.
При моделировании модели встроенных исполнений с Simscape™ блоками блоки Simscape становятся безусловными.
Генерация кода C++ не поддерживается для моделей, содержащих распространяемые условия исполнения.
Распространение условий исполнения не поддерживается портами корневого элемента шины.